/* BREAKPOINTS */

/* MEDIA QUERIES */

/* BACKGROUND SIZING FOR IE */

/* PLACEHOLDER TEXT FOR INPUTS */

.toast-title {
  font-weight: bold;
}

.toast-message {
  -ms-word-wrap: break-word;
  word-wrap: break-word;
}

.toast-message a,
.toast-message label {
  color: #ffffff;
}

.toast-message a:hover {
  color: #cccccc;
  text-decoration: none;
}

.toast-close-button {
  position: relative;
  right: -0.3em;
  top: -0.3em;
  float: right;
  font-size: 20px;
  font-weight: bold;
  color: #ffffff;
  -webkit-text-shadow: 0 1px 0 #ffffff;
  text-shadow: 0 1px 0 #ffffff;
  opacity: 0.8;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
  filter: alpha(opacity=80);
}

.toast-close-button:hover,
.toast-close-button:focus {
  color: #000000;
  text-decoration: none;
  cursor: pointer;
  opacity: 0.4;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
  filter: alpha(opacity=40);
}

/*Additional properties for button version
 iOS requires the button element instead of an anchor tag.
 If you want the anchor version, it requires `href="#"`.*/

button.toast-close-button {
  padding: 0;
  cursor: pointer;
  background: transparent;
  border: 0;
  -webkit-appearance: none;
}

.toast-top-center {
  top: 0;
  right: 0;
  width: 100%;
}

.toast-bottom-center {
  bottom: 0;
  right: 0;
  width: 100%;
}

.toast-top-full-width {
  top: 0;
  right: 0;
  width: 100%;
}

.toast-bottom-full-width {
  bottom: 0;
  right: 0;
  width: 100%;
}

.toast-top-left {
  top: 12px;
  left: 12px;
}

.toast-top-right {
  top: 12px;
  right: 12px;
}

.toast-bottom-right {
  right: 12px;
  bottom: 12px;
}

.toast-bottom-left {
  bottom: 12px;
  left: 12px;
}

#toast-container {
  position: fixed;
  z-index: 999999;
  /*overrides*/
}

#toast-container * {
  -moz-box-sizing: border-box;
  -webkit-box-sizing: border-box;
  box-sizing: border-box;
}

#toast-container > div {
  position: relative;
  overflow: hidden;
  margin: 0 0 6px;
  padding: 15px 15px 15px 50px;
  width: 300px;
  -moz-border-radius: 3px 3px 3px 3px;
  -webkit-border-radius: 3px 3px 3px 3px;
  border-radius: 3px 3px 3px 3px;
  background-position: 15px center;
  background-repeat: no-repeat;
  -moz-box-shadow: 0 0 12px #999999;
  -webkit-box-shadow: 0 0 12px #999999;
  box-shadow: 0 0 12px #999999;
  color: #ffffff;
  opacity: 0.8;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80);
  filter: alpha(opacity=80);
}

#toast-container > :hover {
  -moz-box-shadow: 0 0 12px #000000;
  -webkit-box-shadow: 0 0 12px #000000;
  box-shadow: 0 0 12px #000000;
  opacity: 1;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=100);
  filter: alpha(opacity=100);
  cursor: pointer;
}

#toast-container > .toast-info {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important;
}

#toast-container > .toast-error {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important;
}

#toast-container > .toast-success {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important;
}

#toast-container > .toast-warning {
  background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important;
}

#toast-container.toast-top-center > div,
#toast-container.toast-bottom-center > div {
  width: 300px;
  margin: auto;
}

#toast-container.toast-top-full-width > div,
#toast-container.toast-bottom-full-width > div {
  width: 96%;
  margin: auto;
}

.toast {
  background-color: #030303;
}

.toast-success {
  background-color: #51a351;
}

.toast-error {
  background-color: #bd362f;
}

.toast-info {
  background-color: #2f96b4;
}

.toast-warning {
  background-color: #f89406;
}

.toast-progress {
  position: absolute;
  left: 0;
  bottom: 0;
  height: 4px;
  background-color: #000000;
  opacity: 0.4;
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=40);
  filter: alpha(opacity=40);
}

/*Responsive Design*/

@media all and (max-width: 240px) {
  #toast-container > div {
    padding: 8px 8px 8px 50px;
    width: 11em;
  }

  #toast-container .toast-close-button {
    right: -0.2em;
    top: -0.2em;
  }
}

@media all and (min-width: 241px) and (max-width: 480px) {
  #toast-container > div {
    padding: 8px 8px 8px 50px;
    width: 18em;
  }

  #toast-container .toast-close-button {
    right: -0.2em;
    top: -0.2em;
  }
}

@media all and (min-width: 481px) and (max-width: 768px) {
  #toast-container > div {
    padding: 15px 15px 15px 50px;
    width: 25em;
  }
}

/* Make clicks pass-through */

#nprogress {
  pointer-events: none;
}

#nprogress .bar {
  background: #29d;
  position: fixed;
  z-index: 1031;
  top: 0;
  left: 0;
  width: 100%;
  height: 2px;
}

/* Fancy blur effect */

#nprogress .peg {
  display: block;
  position: absolute;
  right: 0px;
  width: 100px;
  height: 100%;
  box-shadow: 0 0 10px #29d, 0 0 5px #29d;
  opacity: 1.0;
  -webkit-transform: rotate(3deg) translate(0px, -4px);
  -ms-transform: rotate(3deg) translate(0px, -4px);
  transform: rotate(3deg) translate(0px, -4px);
}

/* Remove these to get rid of the spinner */

#nprogress .spinner {
  display: block;
  position: fixed;
  z-index: 1031;
  top: 15px;
  right: 15px;
}

#nprogress .spinner-icon {
  width: 18px;
  height: 18px;
  box-sizing: border-box;
  border: solid 2px transparent;
  border-top-color: #29d;
  border-left-color: #29d;
  border-radius: 50%;
  -webkit-animation: nprogress-spinner 400ms linear infinite;
  animation: nprogress-spinner 400ms linear infinite;
}

.nprogress-custom-parent {
  overflow: hidden;
  position: relative;
}

.nprogress-custom-parent #nprogress .spinner,
.nprogress-custom-parent #nprogress .bar {
  position: absolute;
}

@-webkit-keyframes nprogress-spinner {
  0% {
    -webkit-transform: rotate(0deg);
  }

  100% {
    -webkit-transform: rotate(360deg);
  }
}

@keyframes nprogress-spinner {
  0% {
    transform: rotate(0deg);
  }

  100% {
    transform: rotate(360deg);
  }
}

::-webkit-scrollbar {
  width: 6px;
  height: 6px;
  background: rgba(235, 235, 235, 0.6);
}

/* Track */

/* Handle */

::-webkit-scrollbar-thumb {
  background: rgba(176, 176, 176, 0.6);
}

::-webkit-scrollbar-thumb:window-inactive {
  background: rgba(176, 176, 176, 0.3);
}

/**::-webkit-scrollbar 
::-webkit-scrollbar-thumb  
::-webkit-scrollbar-track  
::-webkit-scrollbar-button
::-webkit-scrollbar-track-piece 
::-webkit-scrollbar-corner 
::-webkit-resizer**/

html {
  font-size: 14px !important;
}

body {
  overflow: hidden;
}

body.no-select {
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

a {
  outline: none;
}

#app-root {
  height: 100%;
  width: 100%;
}

.login-container {
  width: 20rem;
  height: 20rem;
  position: absolute;
  top: 50%;
  left: 50%;
  margin-left: -10rem;
  margin-top: -10rem;
}

.login-container input {
  margin-bottom: 0.5rem;
  height: 2.5rem;
}

.login-container .welcome {
  text-align: center;
  margin: 1.5rem;
  font-size: 1.5rem;
  color: #7a7a7a;
}

.login-container .error-message {
  text-align: left;
  white-space: normal;
  padding-left: 0;
  line-height: 1.5rem;
}

.login-container .button {
  font-size: 1rem;
}

.login-container > div > .dialog-content {
  max-height: 30rem;
}

@media only screen and (max-width: 320px) {
  .login-container {
    width: 16rem;
    height: 20rem;
    margin-left: -8rem;
    margin-top: -10rem;
  }
}

@media (max-width: 650px) {
  .wrapper {
    -webkit-flex-flow: column;
    flex-flow: column;
  }

  .wrapper > div {
    width: 100%;
  }
}

.fa [class*=fa-]:before,
.fa [class*=fa-]:after {
  font-size: 1.25rem;
  cursor: pointer;
}

.fa [class*=toggle-] {
  position: relative;
  cursor: pointer;
  height: 2rem;
  width: 2.75rem;
}

.fa [class*=toggle-]:before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.3125rem;
  left: 0;
  width: 2.75rem;
  height: 1.375rem;
  border-radius: 0.7875rem;
  border: 1px solid;
  box-sizing: border-box;
}

.fa [class*=toggle-]:after {
  content: '';
  position: absolute;
  left: 0;
  top: 0.3125rem;
  width: 1.375rem;
  height: 1.375rem;
  border-radius: 0.7875rem;
  background-color: white;
  box-sizing: border-box;
}

.fa [class*=toggle-].inactive {
  cursor: not-allowed;
}

.fa [class*=toggle-].inactive:before {
  background-color: white;
}

.fa .toggle-on:before {
  background-color: #02a7ec;
  border-color: #02a7ec;
}

.fa .toggle-on:after {
  left: 1.375rem;
  border: 1px solid #02a7ec;
}

.fa .toggle-off:before {
  background-color: #C3C5C8;
  border-color: #C3C5C8;
}

.fa .toggle-off:after {
  left: 0;
  border: 1px solid #C3C5C8;
}

@-webkit-keyframes toggleOn {
  0% {
    left: 1.375rem;
  }

  100% {
    left: 0;
  }
}

@keyframes toggleOff {
  0% {
    left: 0;
  }

  100% {
    left: 1.375rem;
  }
}

.toggle-on.animated:after {
  -webkit-animation: toggleOff 0.25s;
  animation: toggleOff 0.25s;
}

.toggle-off.animated:after {
  -webkit-animation: toggleOn 0.25s;
  animation: toggleOn 0.25s;
}

.app {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  height: 100%;
  overflow: hidden;
  /* label {
        @include breakpoint(mama-bear) {
            font-size: 1rem;
        }
    } */
}

.app .header {
  padding: 0.625rem 1rem;
  border-bottom: 1px solid #DFE1E5;
  height: 3rem;
  background-color: #F8F8F8;
  display: -webkit-flex;
  display: flex;
  align-items: center;
}

.app .header .logo {
  height: 3rem;
  width: 6rem;
}

.app .header .bannermenu {
  color: #02a7ec;
  flex: 1;
  display: -webkit-flex;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  position: inherit;
}

.app .header .bannermenu [class*='icon_']:before {
  position: relative;
}

.app .header .bannermenu .menu {
  cursor: pointer;
  text-align: center;
  color: #02a7ec;
}

.app .header .bannermenu .menu .userMenu {
  color: #000000 !important;
}

.app .header .bannermenu .current {
  color: #02a7ec;
}

.app .header .bannermenu a {
  color: inherit;
  line-height: 2rem;
  display: block;
  color: #02a7ec;
}

.app .header .bannermenu a span {
  margin: 0 0 0 0.5rem;
}

.app .header .bannermenu > div {
  padding-left: 1.5rem;
}

.app .header .bannermenu .user {
  display: -webkit-flex;
  display: flex;
  flex: 0 1 auto;
  /* .userMenu:before {
                    top: -16px;
                    right: 9px;
                    left: auto;
                    border: 8px solid transparent;
                    border-bottom-color: rgba(0,0,0,0.15);
                    position: absolute;
                    display: inline-block;
                    background-color: $colorMenuBackground;
                    content: "";
                } */
}

.app .header .bannermenu .user:hover {
  color: #02a7ec;
}

.app .header .bannermenu .user .user-menu-down {
  margin: 0 0.3125rem;
}

.app .header .bannermenu .user .userMenu {
  position: absolute;
  top: 3.5rem;
  right: 1.5rem;
  background-color: #FFF;
  z-index: 1003;
  box-shadow: 0px 3px 12px rgba(0, 0, 0, 0.15);
  border-radius: 5px;
  border: 1px solid rgba(0, 0, 0, 0.15);
  display: none;
}

.app .header .bannermenu .user .userMenu .divider {
  height: 1px;
  margin: 8px 1px;
  background-color: #e5e5e5;
}

.app .header .bannermenu .user .userMenu .user_role {
  color: #000000 !important;
  font-weight: bold;
  cursor: default;
}

.app .header .bannermenu .user .userMenu ul {
  padding: 0.5rem 0;
}

.app .header .bannermenu .user .userMenu li {
  list-style: none;
  line-height: 2rem;
  height: 2rem;
  text-align: left;
  overflow: hidden;
}

.app .header .bannermenu .user .userMenu li > span,
.app .header .bannermenu .user .userMenu li a {
  padding: 0 1rem;
}

.app .header .bannermenu .user .userMenu li a:hover {
  color: #0899d4;
}

.app .header .bannermenu .user .userMenu li i {
  width: 1.5rem;
  text-align: center;
}

.app .header .bannermenu .user .userMenu .dialog-content .panel-content div.form-field:first-child {
  width: 6rem;
}

.app .header .bannermenu .bannel_divider {
  height: 3rem;
  width: 1px;
  background-color: #DFE1E5;
  margin-top: 0.5rem;
}

@media (max-width: 1000px) {
  .app .header .bannermenu .bannel_divider {
    display: none;
  }
}

.app .header .bannermenu .menu_block {
  flex: 1;
}

.app .header .bannermenu .menus {
  flex: 1 1 10%;
  display: -webkit-flex;
  display: flex;
  -webkit-justify-content: flex-end;
  justify-content: flex-end;
}

@media (max-width: 1000px) {
  .app .header .bannermenu .menus {
    display: none;
  }
}

.app .wrapper {
  display: -webkit-flex;
  display: flex;
  -webkit-flex: 1;
  flex: 1;
  overflow-x: hidden;
  overflow-y: auto;
}

.app .wrapper .sidenav-wrapper {
  padding: 0 0 0.25rem 0.125rem;
  position: relative;
  width: 12.5rem;
  overflow-y: auto;
  font-size: 1rem;
}

@media (max-width: 650px) {
  .app .wrapper .sidenav-wrapper {
    padding: 0;
    border-right: none;
    width: 100%;
    border-bottom: 1px solid #DFE1E5;
    overflow-y: visible;
  }
}

.app .wrapper .spliter {
  width: 5px;
  display: -webkit-flex;
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: col-resize;
  z-index: 100;
  margin-left: -2px;
  margin-right: -2px;
}

.app .wrapper .spliter:hover > div {
  background-color: #02a7ec;
}

@media (max-width: 650px) {
  .app .wrapper .spliter {
    display: none;
  }
}

.app .wrapper .spliter > div {
  width: 1px;
  height: 100%;
  background-color: #DFE1E5;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  -webkit-justify-content: space-around;
  justify-content: space-around;
}

.app .wrapper .spliter > div a {
  margin-left: 2px;
  cursor: pointer;
  color: #C3C5C8;
}

.app .wrapper .spliter > div a:hover {
  color: #02a7ec;
}

.app .wrapper .container {
  -webkit-flex: 1;
  flex: 1;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  overflow-y: auto;
  position: relative;
  /*> div {
                > .panel {
                    border: none;
                }
            }*/
}

.app .wrapper .container .tabs {
  -webkit-flex: 1;
  flex: 1;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  margin-top: 0;
  padding: 0;
}

.app .wrapper .container .tabs.responsive {
  -webkit-flex: 1;
  flex: 1;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  -webkit-justify-content: space-between;
  justify-content: space-between;
}

.app .wrapper .container .tabs.responsive .tabcontrols {
  -webkit-flex: 1;
  flex: 1;
}

.app .wrapper .container .tabs .tabs-footer {
  height: 2.5rem;
  padding: 0.25rem 0.625rem;
}

.app .wrapper .container .tabs .tabs-footer.active {
  border-top: 1px solid #DFE1E5;
}

.app .wrapper .container .tabs .tabs-footer .button {
  float: right;
  margin-left: 0.625rem;
  padding: 0.625rem;
  width: 5rem;
}

.app .wrapper .container .tabs .tabs-footer button.advance {
  float: left;
  margin-left: 0;
  width: auto;
}

.app .wrapper .container .tabs .tabs-footer button.advance:hover {
  color: #0899d4;
}

.app .wrapper .container .tabs.horizontal {
  padding: 1rem 0 0 1rem;
  -webkit-flex: 1 1 auto;
  flex: 1 1 auto;
}

.app .wrapper .container .tabs.horizontal.responsive {
  -webkit-justify-content: unset;
  justify-content: unset;
}

.app .wrapper .container .tabs.horizontal .container-horizontal {
  -webkit-flex: 1 1 auto;
  flex: 1 1 auto;
  overflow: auto;
  padding: 0 1rem 0 0;
}

.app .wrapper .container .tabs.horizontal .panel-content {
  padding: 1rem 1rem 0 1rem;
  overflow: auto;
}

.app .wrapper .container .tabs.horizontal .seggyc {
  margin: 0.625rem;
}

.app .wrapper .container .tabs.horizontal .seggyc.center {
  display: -webkit-flex;
  display: flex;
  -webkit-justify-content: center;
  justify-content: center;
}

.app .wrapper .container .panel h2 {
  font-size: 1rem;
}

@media only screen and (max-width: 651px) {
  .app .wrapper .container .panel h2.title_heading {
    display: none;
  }
}

.app .wrapper .container .panel .panel .title_heading {
  background: #F5F5F5;
}

@media only screen and (max-width: 651px) {
  .app .wrapper .container .panel .row.table-row {
    display: table-row;
  }

  .app .wrapper .container .panel .form-field {
    display: inline-block;
    width: 100%;
    padding-bottom: 0;
    padding-right: 0;
  }
}

.app .wrapper .container .panel .footer {
  height: 2.5rem;
  padding: 0.25rem 0.15rem;
  border-top: 1px solid #DFE1E5;
  display: block;
  background: #FFF;
}

.app .wrapper .container .panel .footer .button {
  float: right;
  margin-left: 0.625rem;
  padding: 0.625rem;
  width: 5rem;
}

.app .wrapper .container .row.table-row.advance-row {
  display: none;
}

.app .wrapper .container .section.advance {
  display: none;
}

.app .wrapper .container .advance-panel-content .section-content .row.table-row.advance-row {
  display: flex;
}

@media only screen and (max-width: 651px) {
  .app .wrapper .container .advance-panel-content .section-content .row.table-row.advance-row {
    display: block;
  }
}

.app .wrapper .container .advance-panel-content .row.table-row.advance-row {
  display: table-row;
}

@media only screen and (max-width: 651px) {
  .app .wrapper .container .advance-panel-content .row.table-row.advance-row {
    display: block;
  }
}

.app .wrapper .container .advance-panel-content .section {
  display: block;
}

.app .footer {
  height: 3rem;
  width: 100%;
  overflow: hidden;
  text-align: center;
  line-height: 3rem;
  color: #C3C5C8;
  border-top: 1px solid #DFE1E5;
  display: none;
  background-color: #f5f5f5;
}

.app .footer [class*='icon_']:before {
  font-size: 3rem;
}

@media (max-width: 1000px) {
  .app .footer [class*='icon_']:before {
    font-size: 2rem;
  }
}

.app .footer a {
  height: 3rem;
  width: 25%;
  float: left;
  display: block;
}

.app .footer [class*='icon_']:before {
  position: relative;
}

.app .footer .menu {
  cursor: pointer;
  text-align: center;
  color: #02a7ec;
}

.app .footer .menu .userMenu {
  color: #000000 !important;
}

.app .footer .current {
  color: #02a7ec;
}

.app .footer a {
  color: inherit;
  line-height: 2rem;
  display: block;
  color: #02a7ec;
}

.app .footer a span {
  margin: 0 0 0 0.5rem;
}

.app .footer .menu {
  margin: 0;
  height: 3rem;
  line-height: 3rem;
}

@media (max-width: 1000px) {
  .app .footer .menu span {
    display: none;
  }
}

@media (max-width: 650px) {
  .app .footer {
    display: block;
  }
}

.row.table-row {
  display: table-row;
}

.row.table-row div.form-field:first-child {
  line-height: 2rem;
}

.form-field {
  display: table-cell;
  vertical-align: top;
  padding-right: 1rem;
  padding-bottom: 0.625rem;
  text-align: left;
}

.form-field > :first-child {
  float: left;
}

.form-field label:first-child {
  margin-right: 1rem;
}

.form-field .form-field-label:first-child {
  margin-left: 0rem;
}

.error-message {
  color: red;
  float: left;
  line-height: 2rem;
  padding-left: 0.625rem;
  white-space: nowrap;
}

.logo-container {
  text-align: center;
}

.logo-container > .logo {
  height: 6rem;
  width: 12rem;
  margin: 0 auto;
}

.logo {
  background-image: url(../images/login-logo.png);
  background-repeat: no-repeat;
  background-size: contain;
}

.banner-logo {
  background-image: url(../images/banner-logo.png);
  background-repeat: no-repeat;
  background-size: contain;
  height: 2rem;
  width: 6rem;
}

.panel {
  background-color: #FFF;
  position: relative;
}

.panel .columns {
  height: 2.5rem;
  padding-left: 0;
}

.panel .row {
  width: 100%;
  margin-bottom: 0.25rem;
}

.panel .form_heading {
  background: transparent;
  padding: 0 0 0.625rem 0;
}

.panel .title_heading {
  white-space: nowrap;
}

.panel label {
  padding-left: 0;
}

.panel > div {
  overflow: hidden;
}

.panel pre.config {
  overflow: scroll;
  max-height: 16rem;
  margin: 0.5rem 0.25rem;
}

.panel .info_panel .columns {
  margin-bottom: 0;
}

.chartLabel {
  display: inline-block;
}

.chartLabel .chartLabelHeader {
  padding: 0 0 0 0.25rem;
  font-size: 1rem;
  color: gray;
  display: inline-table;
  vertical-align: middle;
}

.chartLabel .chartUnits {
  min-width: 0.625rem;
  font-size: 0.625rem;
}

.chartLabel label {
  display: table-row;
}

.panel_wrapper > div {
  margin-bottom: 0.625rem;
  overflow: hidden;
}

.panel_wrapper h3 {
  margin: 0.625rem 0;
}

.about div {
  margin-bottom: 0.875rem;
  overflow: hidden;
}

.about div > span.columns {
  line-height: 1.25rem;
  padding-bottom: 0.25rem;
  height: auto;
}

.about div > span.columns:nth-child(1) {
  font-weight: bold;
}

.about div span {
  padding-left: 0;
}

.dropdown-menu {
  position: absolute;
  z-index: 1000;
  display: none;
  float: left;
  min-width: 160px;
  padding: 5px 0;
  margin: 2px 0 0;
  list-style: none;
  font-size: 14px;
  background-color: #fff;
  border: 1px solid rgba(0, 0, 0, 0.15);
  border-radius: 4px;
  -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
  background-clip: padding-box;
}

.dropdown-menu .dropdown-header {
  padding: 5px;
}

.dropdown-menu .dropdown-header > input {
  height: 2rem;
}

.dropdown-menu > li > a {
  display: block;
  padding: 3px 10px;
  clear: both;
  font-weight: 400;
  line-height: 1.42857143;
  color: #333;
  white-space: nowrap;
  overflow: hidden;
}

.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
  text-decoration: none;
  color: #262626;
  background-color: #F5F5F5;
}

.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
  color: #fff;
  text-decoration: none;
  outline: 0;
  background-color: #428bca;
}

.dropdown-menu > .disabled > a,
.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  color: #999;
}

.dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
  text-decoration: none;
  background-color: transparent;
  background-image: none;
  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
  cursor: not-allowed;
}

.button2 {
  background: url(../images/select_arrow_2x.png) #fff no-repeat right center;
  background-size: 38px 38px;
  display: inline-block;
  text-align: left;
  position: relative;
  color: #02a7ec;
  font-size: 0.875rem;
  font-weight: bold;
  line-height: 1rem;
  padding: 0.75rem 1.25rem;
  white-space: nowrap;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  -ms-border-radius: 4px;
  -o-border-radius: 4px;
  border-radius: 4px;
  border: 1px solid rgba(0, 0, 0, 0.1);
}

.multiselect-parent {
  overflow: hidden;
  width: 100%;
}

.valid_alert {
  display: block;
  width: 100%;
  max-height: 0;
  overflow: hidden;
  -webkit-transition: all 500ms ease;
  -moz-transition: all 500ms ease;
  -o-transition: all 500ms ease;
  transition: all 500ms ease;
}

.valid_alert p {
  margin-left: 1.25rem;
  margin-right: 1.25rem;
}

@media (max-width: 1100px) {
  .valid_alert p {
    font-size: 1rem;
  }
}

@media (max-width: 1100px) {
  .valid_alert p[class*='icon_']:before {
    font-size: 2rem;
  }
}

.valid_alert.visible {
  max-height: 5rem;
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
}

.valid_alert.warning {
  color: #FF4C00;
  background: #fdf9f7;
  -webkit-box-shadow: 4px 0 0 #FF4C00 inset;
  -moz-box-shadow: 4px 0 0 #FF4C00 inset;
  box-shadow: 4px 0 0 #FF4C00 inset;
}

.valid_alert.warning a {
  color: #FF4C00;
}

.help-mode {
  color: #018e1b !important;
  font-style: italic;
  cursor: pointer;
}

.help-advice-dialog {
  position: absolute;
  background-color: #FFF;
  border: 1px solid #CCC;
  border-radius: 1rem;
  z-index: 1005;
  padding: 0.5rem;
  top: 3rem;
  right: 0.8rem;
}

.help-advice-dialog .help-advice-info-green {
  margin-left: 0.5rem;
}

.help-content {
  background-color: #9ce5d5;
  position: absolute;
  border-radius: 0.3rem;
  padding: 0.5rem;
  z-index: 1005;
}

#container {
  margin: 0 auto;
}

.wizard {
  padding: 0;
  -webkit-flex: 1;
  flex: 1;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  font-size: 0.875rem;
}

.wizard .wizard-controls {
  overflow: hidden;
  padding: 0.5rem 0.625rem 0 0.625rem;
  border-bottom: 1px solid #DFE1E5;
}

.wizard .wizard-controls .wizard-title {
  padding-left: 1rem;
  padding-right: 1rem;
  background-color: #02a7ec;
  color: #fff;
  border-top-left-radius: 0.25rem;
  border-bottom-left-radius: 0.25rem;
}

.wizard .wizard-controls .wizard-title:before {
  border-left-color: transparent;
}

.wizard .wizard-controls .wizard-title:after {
  border-left-color: #02a7ec;
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .wizard .wizard-controls .wizard-title {
    display: inline;
  }
}

.wizard .wizard-controls li {
  float: left;
  cursor: pointer;
  position: relative;
  line-height: 2rem;
  margin: 0 2rem 0.5rem 0;
  color: #DFE1E5;
}

.wizard .wizard-controls li span.wizard-control-title {
  margin: 0 0.625rem;
}

.wizard .wizard-controls li:before,
.wizard .wizard-controls li:after {
  content: '';
  display: block;
  width: 0;
  height: 0;
  position: absolute;
  top: 0;
  right: -2rem;
  border: 1rem solid transparent;
  border-left-color: #fff;
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .wizard .wizard-controls li {
    display: none;
  }
}

.wizard .wizard-controls li.active {
  color: #02a7ec;
}

.wizard .wizard-controls li.active .badge {
  background-color: #02a7ec;
  color: #fff;
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .wizard .wizard-controls li.current {
    display: inline;
  }
}

.wizard .wizard-controls li .badge {
  background-color: #DFE1E5;
  color: #fff;
  line-height: 1rem;
  border: none;
  top: -0.125rem;
}

.wizard .wizard-content {
  padding: 0.625rem 1rem;
  -webkit-flex: 1;
  flex: 1;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  -webkit-justify-content: space-between;
  justify-content: space-between;
  overflow-y: auto;
}

.wizard .wizard-content p {
  padding-left: 0.25rem;
}

.wizard .wizard-footer {
  height: 2.5rem;
  padding: 0.25rem 0.625rem;
  border-top: 1px solid #DFE1E5;
}

.wizard .wizard-footer .button {
  float: right;
  margin-left: 0.625rem;
  padding: 0.625rem;
  box-sizing: border-box;
  height: 2.5rem;
  width: 6rem;
}

.wizard .wizard-footer button.advance {
  width: auto;
  float: left;
  cursor: pointer;
  margin-left: 0;
}

.white-button {
  background: none;
  color: #02a7ec;
  border: 1px solid #02a7ec;
}

.tabs .panel-content {
  border: 0;
}

.info_panel {
  position: relative;
  width: 100%;
}

.info_panel .columns {
  padding-left: 0;
  padding-right: 0;
}

.info_panel .columns:last-child {
  float: left;
}

.info_panel div .label {
  position: relative;
  border-left: 1px solid #DFE1E5;
  border-right: 1px solid #DFE1E5;
  font-size: 0.8125rem;
  font-weight: bold;
  line-height: 1.3;
  color: #646569;
  text-transform: uppercase;
  padding: 1rem 0.625rem 0.8rem;
  background: #EBEEF2;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
}

.info_panel div .value {
  position: relative;
  border-left: 1px solid #DFE1E5;
  border-right: 1px solid #DFE1E5;
  border-bottom: 1px solid #DFE1E5;
  padding: 0.5rem 1rem 0.625rem;
  height: 1.25rem;
  line-height: 1.25rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  vertical-align: middle;
}

@media (max-width: 650px) {
  .info_panel div .value {
    padding: 0.5rem;
  }
}

.summary .columns {
  padding-left: 0;
  padding-right: 0;
}

table.data .title_heading {
  white-space: nowrap;
}

table.data th {
  font-size: 0.875rem;
}

.panel.no_border {
  border: 0;
}

.tabcontrols {
  padding: 0.625rem 0.625rem 0.25rem 0.625rem;
  -webkit-box-shadow: 0 0 0 rgba(0, 0, 0, 0.05) inset;
  -moz-box-shadow: 0 0 0 rgba(0, 0, 0, 0.05) inset;
  box-shadow: 0 0 0 rgba(0, 0, 0, 0.05) inset;
}

.tabcontrols li {
  border: 0;
  overflow: hidden;
}

.tabcontrols li i {
  float: left;
  margin: 0.5rem 0.25rem 0 0.325rem;
  color: #02a7ec;
  width: 1rem;
}

.tabcontrols li.current i {
  color: #02a7ec;
}

.tabcontrols li.current a {
  border: none;
  color: #333;
}

.tabcontrols li a {
  cursor: pointer;
  color: #333;
  padding: 0.7rem 0 0.8125rem 0.25rem;
  font-size: 0.925rem;
  border: none;
  font-weight: bold;
  border-radius: 0;
}

.tabcontrols li + div:first-of-type {
  padding: 0 0 0 1.875rem;
}

@media (max-width: 650px) {
  .tabs.responsive .tabcontrols {
    display: block;
  }
}

.item-panel {
  -webkit-flex: 1;
  flex: 1;
  display: block;
  box-sizing: border-box;
  padding: 1rem 1rem 0 1rem;
  color: #888;
  overflow: auto;
}

@media (max-width: 1100px) {
  .item-panel {
    width: 100%;
    -webkit-flex: none;
    flex: none;
  }
}

.item-panel .header-container {
  margin-bottom: 0.625rem;
  color: #646569;
  font-weight: bold;
}

.item-panel .header-container .item-title {
  float: left;
}

.item-panel .header-container .link-container {
  float: right;
}

.item-panel .header-container .link-container .link-item {
  margin: 0 0.3125rem;
}

.item-panel .header-container .link-container .link-active {
  color: #02a7ec;
  cursor: pointer;
}

.item-panel .header-container .link-separator {
  margin: 0 0.5rem;
}

.item-panel .item-title {
  text-align: left;
  color: #646569;
  font-weight: bold;
  font-size: 1rem;
  padding-bottom: 0.5rem;
}

.item-panel table td {
  padding: 0.5rem;
}

.item-panel td.label {
  font-weight: bold;
  color: #646569;
}

.item-panel .item-content {
  display: -webkit-flex;
  display: flex;
}

.item-panel .item-content .item-title {
  font-size: 0.875rem;
  padding-left: 0.625rem;
}

.item-panel .item-content > div {
  -webkit-flex: 1;
  flex: 1;
  width: 100%;
  min-width: 0;
}

@media (max-width: 1100px) {
  .item-panel .item-content > div {
    -webkit-flex: none;
    flex: none;
  }
}

@media (max-width: 1100px) {
  .item-panel .item-content {
    -webkit-flex-flow: column;
    flex-flow: column;
  }
}

.item-panel .item-content-table {
  -webkit-flex: 1;
  flex: 1;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  font-size: 0.875rem;
}

.item-panel .apprf-panel {
  height: 19rem;
}

.item-panel .item-content-chart {
  -webkit-flex: 1;
  flex: 1;
  width: 100%;
}

.item-panel .item-content-chart .apprf-header {
  overflow: hidden;
  margin: 0 0.7143rem;
  line-height: 1.75rem;
}

.item-panel .item-content-chart .apprf-header .item-title {
  float: left;
  font-size: 0.875rem;
}

.item-panel .item-content-chart .apprf-header .seggyc {
  float: right;
  margin: 0 1px 0 0;
}

.item-panel .item-content-chart .apprf-footer {
  margin: 0.5rem 0.875rem 1.5rem;
}

.item-panel .item-content-chart .apprf-footer > span {
  color: #02a7ec;
  text-decoration: underline;
  cursor: pointer;
}

.item-panel .item-content-chart .table {
  padding: 0 0.625rem;
}

.item-panel .link-more {
  padding: 0.5rem;
  text-align: right;
}

.item-panel .panel {
  overflow: inherit;
}

.overview-container {
  box-sizing: border-box;
  -webkit-flex: 0 0 auto;
  flex: 0 0 auto;
}

.overview-container a:hover {
  text-decoration: underline;
  cursor: pointer;
}

.overview-container .panel {
  border: none;
  margin-top: 0;
}

.overview-container .row {
  display: -webkit-flex;
  display: flex;
}

@media (max-width: 1100px) {
  .overview-container .row {
    -webkit-flex-flow: column;
    flex-flow: column;
  }
}

.overview-container table {
  color: #000000;
}

.overview-container .client-charts > div:first-child {
  flex: 2;
}

@media (max-width: 1100px) {
  .overview-container .client-charts > div:first-child {
    -webkit-flex: none;
    flex: none;
  }
}

.overview-container .client-charts > div:last-child {
  flex: 1;
}

@media (max-width: 1100px) {
  .overview-container .client-charts > div:last-child {
    -webkit-flex: none;
    flex: none;
  }
}

.monitoring-dashboard-icon {
  height: 14px;
  background-repeat: no-repeat;
  width: 19px;
  cursor: pointer;
}

.overview-networks-container {
  box-sizing: border-box;
}

.overview-networks-container .panel {
  border: none;
  margin-top: 0;
}

.overview-networks-container .tab-control-container {
  padding-top: 0.625rem;
}

.overview-networks-container .row {
  display: -webkit-flex;
  display: flex;
}

@media (max-width: 1100px) {
  .overview-networks-container .row {
    -webkit-flex-flow: column;
    flex-flow: column;
    height: auto;
  }
}

.overview-networks-container table {
  color: #000000;
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .overview-networks-container table {
    max-height: 10rem;
  }
}

.overview-networks-container table td div.good {
  color: #0D7F2E;
}

.overview-networks-container table td div.ok {
  color: #ff9a1a;
}

.overview-networks-container table td div.poor {
  color: #ba0d00;
}

.overview-networks-container .table_wrapper {
  overflow: hidden;
}

.overview-networks-container .white {
  border: none;
}

.overview-networks-container .inactive-ap {
  color: #F43530;
}

.overview-networks-container .inactive-network {
  color: #C3C5C8;
}

.overview-networks-container.expanded {
  flex: 1;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
}

.overview-networks-container.expanded > div:first-child {
  flex: 1;
}

.overview-networks-container.expanded > div:last-child {
  display: none;
}

.radio-container .radio-row {
  display: inline-block;
}

.network-init-wizard {
  height: 100%;
}

.network-init-finished-dialog .overlay.light {
  background-color: #fff;
}

.network-init-finished-dialog .network-init-success-content {
  box-sizing: border-box;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  justify-content: center;
  align-items: center;
}

.network-init-finished-dialog .network-init-success-content p {
  font-size: 1.5rem;
}

.network-init-finished-dialog .network-init-success-content .network-init-loading,
.network-init-finished-dialog .network-init-success-content .network-init-message {
  padding-top: 30%;
}

.network-init-finished-dialog .network-init-success-content .fa-fw {
  width: 16rem;
  color: #02a7ec;
}

@media (max-width: 650px) {
  .network-init-finished-dialog .network-init-success-content .fa-fw {
    width: 10rem;
  }
}

.network-init-finished-dialog .network-init-success-content .fa-fw:before {
  font-size: 16rem;
}

@media (max-width: 650px) {
  .network-init-finished-dialog .network-init-success-content .fa-fw:before {
    font-size: 10rem;
  }
}

.network-init-finished-dialog .network-init-success-content .fa-check {
  color: #00CC00;
}

.network-init-finished-dialog .network-init-success-content .fa-check:before {
  font-size: 5rem;
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .hide-mobile {
    display: none !important;
  }
}

.loadingDialog {
  box-sizing: border-box;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  justify-content: center;
  align-items: center;
}

.loadingDialog p {
  font-size: 1.5rem;
}

.loadingDialog .loading,
.loadingDialog .message {
  display: -webkit-flex;
  display: flex;
  align-items: center;
}

.loadingDialog .fa-fw {
  width: 8rem;
  color: #02a7ec;
}

@media (max-width: 650px) {
  .loadingDialog .fa-fw {
    width: 10rem;
  }
}

.loadingDialog .fa-fw:before {
  font-size: 6rem;
}

.loadingDialog .fa-check {
  color: #00CC00;
}

.loadingDialog .fa-check:before {
  font-size: 5rem;
}

.configuration-container {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  overflow: hidden;
  flex: 1;
}

.configuration-container .config-title {
  height: 2rem;
}

.configuration-container .config-current {
  height: 1.5rem;
}

.configuration-container .config-content {
  flex: 1;
  padding-left: 0.5rem;
  padding-top: 0.5rem;
  border: 1px solid #efefef;
  margin-bottom: 1rem;
  font-family: Verdana, SimSun;
  overflow-y: auto;
  -webkit-user-select: text;
  -moz-user-select: text;
  -ms-user-select: text;
  user-select: text;
}

.configuration-container .config-checkbox label {
  float: none;
}

.configuration-container .config-footer {
  width: 100%;
}

.configuration-container .config-footer button {
  min-width: 12rem;
  display: block;
  margin-bottom: 0.625rem;
}

/* FLASHING */

@-webkit-keyframes fadeIn {
  0% {
    opacity: 0;
  }

  100% {
    opacity: 1;
  }
}

@keyframes fadeIn {
  0% {
    opacity: 0;
  }

  100% {
    opacity: 1;
  }
}

.faa-fadeIn.animated {
  -webkit-animation: fadeIn 2s ease;
  animation: fadeIn 2s ease;
}

.page-loading .overlay.light {
  background-color: rgba(255, 255, 255, 0.5);
}

.page-loading .fa-fw {
  width: 10rem;
  color: #02a7ec;
}

@media (max-width: 650px) {
  .page-loading .fa-fw {
    width: 6rem;
  }
}

.page-loading .fa-fw:before {
  font-size: 10rem;
}

@media (max-width: 650px) {
  .page-loading .fa-fw:before {
    font-size: 6rem;
  }
}

.arrow-up:before {
  content: "";
  border: 0.5rem solid transparent;
  border-bottom-color: rgba(0, 0, 0, 0.15);
}

.arrow-up:after {
  content: "";
  border: 0.5rem solid transparent;
  border-bottom-color: #fff;
}

.arrow-down:before {
  content: "";
  border: 0.5rem solid transparent;
  border-top-color: rgba(0, 0, 0, 0.15);
}

.arrow-down:after {
  content: "";
  border: 0.5rem solid transparent;
  border-top-color: #fff;
}

/****** help ******/

.help-menu-icon {
  color: #02a7ec;
}

.help-menu-icon:hover,
.help-menu-icon.current {
  cursor: pointer;
}

.help-advice-container {
  background-color: #FFF;
  padding: 0.25rem 0.625rem;
  border-radius: 0.3125rem;
  position: absolute;
  z-index: 1001;
  right: 1.625rem;
  top: 3.5625rem;
  box-shadow: 0 0.1875rem 0.75rem rgba(0, 0, 0, 0.15);
  border: 1px solid rgba(0, 0, 0, 0.15);
  font-size: 0.875rem;
}

.help-advice-container .help-mode {
  margin: 0 0.625rem;
}

.help-advice-container .help-advice-content {
  line-height: 2rem;
  color: #333;
}

.help-advice-container .help-advice-content .help-advice-done {
  cursor: pointer;
  color: #02a7ec;
}

.help-advice-arrow:before {
  position: absolute;
  right: 3.6rem;
  margin-top: -1.3rem;
}

.help-advice-arrow:after {
  position: absolute;
  right: 3.6rem;
  margin-top: -1.22rem;
}

.help-tooltip-container {
  position: absolute;
  border-radius: 0.3125rem;
  background-color: #fdfdda;
  font-size: 0.875rem;
  max-width: 25rem;
  box-shadow: 0 -0.1875rem 0.75rem rgba(0, 0, 0, 0.15);
  border: 1px solid rgba(0, 0, 0, 0.15);
  z-index: 10005;
}

@media (max-width: 1100px) {
  .help-tooltip-container {
    max-width: 18.75rem;
  }
}

.help-tooltip-container .help-tooltip-content {
  margin: 0.5rem;
  line-height: 1.5;
  overflow-y: auto;
}

.help-tooltip-arrow:before {
  position: absolute;
  bottom: -1rem;
  left: 0.625rem;
}

.help-tooltip-arrow:after {
  border-top-color: #fdfdda;
  position: absolute;
  bottom: -0.9rem;
  left: 0.625rem;
}

/****** help ******/

.multiple-selector {
  position: relative;
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .multiple-selector {
    margin: 0rem;
    margin-right: 1rem;
  }
}

.multiple-selector .lableRow {
  border: 1px solid rgba(0, 0, 0, 0.1);
  padding: 0.625rem 2.5rem 0.625rem 0.625rem;
  font-family: 'opensans', helvetica, arial, sans-serif;
  font-size: 0.875rem;
  color: #02a7ec;
  outline: none;
  background: url(../images/select_arrow_2x.png) #fff no-repeat right center;
  background-size: 38px 38px;
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  -webkit-border-radius: 4px;
  -moz-border-radius: 4px;
  -ms-border-radius: 4px;
  -o-border-radius: 4px;
  border-radius: 4px;
  -webkit-box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 rgba(0, 0, 0, 0.1);
  -moz-box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 rgba(0, 0, 0, 0.1);
  box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.1) inset, 0 1px 0 rgba(0, 0, 0, 0.1);
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  cursor: pointer;
  display: inline-block;
}

.multiple-selector .select-lable {
  display: inline;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
  width: 10rem;
  margin-top: 0.25rem;
}

.multiple-selector .component {
  position: absolute;
  z-index: 1000;
  background-color: #fff;
  border: 1px solid #DFE1E5;
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .multiple-selector .component {
    margin-top: -0.25rem;
  }
}

.multiple-selector .search-input {
  padding: 0.5rem;
  width: 21rem;
}

.multiple-selector .check-all {
  line-height: 2rem;
  padding-left: 0.5rem;
  cursor: pointer;
}

.multiple-selector .switch-multiple {
  padding: 0.5rem;
  overflow: hidden;
}

.multiple-selector .switch-multiple label {
  cursor: pointer;
}

.multiple-selector .drop-down-list {
  padding: 0.5rem;
  height: 23rem;
  width: 21rem;
  overflow-y: scroll;
  border-top: solid 1px #DFE1E5;
  border-bottom: solid 1px #DFE1E5;
}

.multiple-selector .drop-down-list label {
  cursor: pointer;
}

.multiple-selector .drop-down-list div {
  height: 2rem;
}

.multiple-selector .drop-down-list div:hover {
  background-color: #DFE1E5;
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .multiple-selector .drop-down-list div {
    height: 3.5rem;
  }
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .multiple-selector .drop-down-list div label {
    width: 16rem;
  }
}

.multiple-selector .drop-down-list div label.singalLabel {
  float: left;
  line-height: 2rem;
  padding-left: 0.5rem;
}

.search {
  position: relative;
  margin-top: 3px;
}

.search .search-icon {
  color: #02a7ec;
  cursor: pointer;
  transition: 0.5s;
}

.search .search-icon-remove {
  position: absolute;
  right: 0.375rem;
  top: 0.375rem;
}

.search .search-input {
  border: 1px solid rgba(0, 0, 0, 0.15);
  border-radius: 0.3125rem;
  height: 1.5rem;
  padding: 0.25rem 0.25rem 0.25rem 1.875rem;
  width: 17rem;
  font-size: 0.875rem;
  color: #666;
  transition: 0.5s;
}

@media (max-width: 650px) {
  .search .search-input {
    width: 7rem;
  }
}

.search .search-input.search-input-hide {
  padding: 0;
  border: none;
  width: 0;
  background-color: transparent;
}

.search .search-result {
  position: absolute;
  border-radius: 0.3125rem;
  background-color: #FFF;
  font-size: 0.875rem;
  box-shadow: 0 0.1875rem 0.75rem rgba(0, 0, 0, 0.15);
  border: 1px solid rgba(0, 0, 0, 0.15);
  top: 2.5rem;
  z-index: 1006;
}

@media (max-width: 650px) {
  .search .search-result {
    left: -4rem;
  }
}

.search .search-result .search-result-arrow:before {
  position: absolute;
  top: -1rem;
  left: 1.5rem;
}

@media (max-width: 650px) {
  .search .search-result .search-result-arrow:before {
    left: 5.5rem;
  }
}

.search .search-result .search-result-arrow:after {
  position: absolute;
  top: -0.9rem;
  left: 1.5rem;
}

@media (max-width: 650px) {
  .search .search-result .search-result-arrow:after {
    left: 5.5rem;
  }
}

.search .search-result .search-result-items {
  min-width: 19.25rem;
  max-width: 19.25rem;
  max-height: 25rem;
  overflow-y: auto;
}

.search .search-result .search-result-items .search-no-results {
  line-height: 1;
  padding: 0.5rem 1rem;
}

.search .search-result .search-result-items .search-result-item {
  padding: 0;
}

.search .search-result .search-result-items .search-result-item .item-title {
  padding: 0 0.5rem;
  color: #ccc;
  font-weight: normal;
  border-bottom: 1px solid #ccc;
}

.search .search-result .search-result-items .search-result-item .search-result-item-body {
  max-height: 7.5rem;
  overflow-y: auto;
}

.search .search-result .search-result-items .search-result-item .search-result-item-body .data-item {
  color: #ccc;
}

.search .search-result .search-result-items .search-result-item .search-result-item-body .data-item a {
  line-height: 1;
  padding: 0.5rem 1rem;
}

.search .search-result .search-result-items .search-result-item .search-result-item-body .data-item a:hover {
  color: #ccc;
  cursor: pointer;
}

.search .search-result .search-result-items .search-result-item .search-result-item-body .data-item .highlight {
  font-weight: bold;
}

.search .search-result .search-result-items .search-result-item .search-result-item-body .data-item.selected {
  background-color: #def2fa;
  color: #fff;
}

.search .search-result .search-result-items .search-result-item .search-result-item-body .data-item.selected a:hover {
  color: #fff;
}

.overlay .message {
  border-radius: 0.3125rem;
  box-shadow: 0 0.1875rem 0.75rem rgba(0, 0, 0, 0.15);
  background-color: #FFF;
}

.overlay .message.reloading {
  box-shadow: none;
  background-color: transparent;
  top: 30%;
}

.overlay .message.reloading .dialog-content p {
  display: block;
  text-align: center;
}

.overlay .message.reloading.tab-loading .fa-spinner {
  color: #e3e3e3;
}

.overlay .message.reloading.tab-loading .fa-spinner:before {
  font-size: 6rem;
}

.overlay .message .dialog-title {
  text-align: left;
  padding: 0.5rem;
  font-size: 1rem;
  font-weight: bold;
  color: #646569;
  height: 2rem;
  line-height: 2rem;
  background-color: #F8F8F8;
}

.overlay .message .dialog-content {
  padding: 0.5rem;
}

.overlay .message .dialog-content p {
  display: table-cell;
  margin-bottom: 0;
  font-size: 1rem;
  line-height: 1.5rem;
  font-weight: normal;
  text-align: left;
  padding: 0.625rem;
}

.overlay .message .dialog-action {
  text-align: right;
  padding: 0.5rem;
}

.overlay .message .dialog-action > button:nth-child(1) {
  margin-right: 0.5rem;
}

.firmware.message {
  box-shadow: none;
}

.firmware.message .dialog-content p {
  display: block;
  text-align: center;
}

.section {
  margin-top: 0.5rem;
  margin-bottom: 1rem;
  /* .section-spliter {
        margin: 0.5rem;
        width: 50%;
        //border-style: solid;
        //border-width: 1px 0 0 0;
        //border-color: rgba(0, 0, 0, 0.1);
        background-color: rgba(0, 0, 0, 0.1);
        line-height: 1px;
        display: inline-block;
    } */
}

.section .section-header {
  cursor: pointer;
  padding-bottom: 0.5rem;
}

.section .section-header > label {
  cursor: pointer;
  font-weight: bold;
}

.section .uncollapsiable {
  cursor: default;
}

.section .uncollapsiable > label {
  cursor: default;
}

.section .uncollapsiable .section-icon {
  visibility: hidden;
  margin-right: 0.2rem;
}

.section .section-content {
  padding-left: 1.125rem;
  clear: both;
}

.section .section-content > .row.table-row {
  display: flex;
  margin-bottom: 0;
}

.section .section-content > .row.table-row div.form-field:first-child {
  flex: 1 1 10rem;
  display: inline-block;
}

.section .section-content > .row.table-row div.form-field:last-child {
  flex: 10 10 50rem;
  display: inline-block;
}

.section .section-content-hide {
  display: none;
}

.section .section-icon {
  margin-right: 0.375rem;
  color: #02a7ec;
}

.section .section-icon:before {
  font-size: 1rem;
}

.uplink-priority-table {
  width: 25rem;
}

@media (max-width: 650px) {
  .uplink-priority-table {
    width: 14rem;
  }
}

.table-actions-bar-container {
  border: 1px solid rgba(0, 0, 0, 0.1);
  border-top: none;
  padding: 0.5rem;
}

.table-actions-bar-container .table-actions-bar-action {
  display: inline-block;
  margin-right: 0.5rem;
  color: #02a7ec;
  cursor: pointer;
}

.table-actions-bar-container .disable {
  color: #c4c4c4;
  cursor: default;
}

.user-menu-arrow {
  position: absolute;
  right: 1.6rem;
}

.user-menu-arrow:before,
.user-menu-arrow:after {
  position: absolute;
}

.user-menu-arrow:before {
  top: -1rem;
}

.user-menu-arrow:after {
  top: -0.9375rem;
}

.upload-file-div {
  position: relative;
}

.upload-file {
  z-index: 200;
  position: absolute;
  opacity: 0;
  width: 30rem;
  height: 2.5rem;
  cursor: pointer;
  left: 0;
}

.form-field .upload-input {
  width: 30rem;
  height: 2.5rem;
}

.upload-iframe {
  display: none;
}

input[type=text].input.filerow-input {
  border-top-right-radius: 0px;
  border-bottom-right-radius: 0px;
  border-right: none;
  height: 2.5rem;
  width: 20rem;
  float: left;
}

.filerow-button {
  height: 2.5rem;
  padding: 0rem 1rem;
  margin-left: -3px;
  border-top-left-radius: 0px;
  border-bottom-left-radius: 0px;
  float: left;
}

.table-action-icon {
  margin: 0 1rem 0 0;
  color: #C3C5C8;
}

.table-action-icon.enable {
  cursor: pointer;
  color: #02a7ec;
}

.form-field-label {
  line-height: 2rem;
  float: left;
  margin: 0 0.625rem;
  max-width: 20rem;
  word-wrap: break-word;
}

.form-field-button {
  line-height: 2rem;
  float: left;
  cursor: pointer;
}

.form-field-button.section-icon {
  margin-right: 0rem;
}

.overlay .dialog {
  top: 10%;
  margin-bottom: 10%;
}

.overlay .dialog-content {
  overflow: auto;
  max-height: 30rem;
}

@media only screen and (max-height: 600px) {
  .overlay .dialog-content {
    max-height: 24rem;
  }
}

@media only screen and (max-height: 400px) {
  .overlay .dialog-content {
    max-height: 12rem;
  }
}

.multiple-checkbox {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
  -webkit-justify-content: flex-start;
  justify-content: flex-start;
  -webkit-align-content: space-between;
  align-content: space-between;
  max-width: 40rem;
}

.multiple-checkbox .checkbox-field {
  margin-right: 1rem;
  display: -webkit-flex;
  display: flex;
  width: 5rem;
}

@media (max-width: 1100px) {
  .multiple-checkbox .checkbox-field {
    width: 7rem;
  }
}

@media (max-width: 650px) {
  .multiple-checkbox .checkbox-field {
    width: 6rem;
  }
}

.checkbox-field {
  float: left;
  margin-right: 0.625rem;
}

.checkbox-field.disable {
  color: #C3C5C8;
}

.traffic-bar .total {
  float: left;
  margin-right: 0.8rem;
  width: 60%;
}

.traffic-bar .total > span {
  padding-left: 0.5rem;
}

.traffic-bar .per {
  float: left;
  background-color: #89A54E;
}

.traffic-bar .text {
  float: right;
}

.apprf-table-category {
  width: 30%;
}

.warning-message {
  color: #FF4C00;
  margin: 0.5rem 0;
}

.warning-message > span {
  padding-left: 0.5rem;
}

.warning-message .fas:before,
.warning-message .far:before {
  font-size: 1rem;
}

.info-panel {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
}

@media (max-width: 650px) {
  .info-panel {
    display: block;
  }
}

.info-panel .info-item {
  -webkit-flex: 1 1 50%;
  flex: 1 1 50%;
  display: -webkit-flex;
  display: flex;
  -webkit-justify-content: flex-start;
  justify-content: flex-start;
  border-bottom: 1px solid #DFE1E5;
}

.info-panel .info-item .info-label {
  font-weight: bold;
  color: #646569;
  padding: 0.5rem;
}

.info-panel .info-item .info-value {
  -webkit-flex: 1;
  flex: 1;
  padding: 0.5rem;
}

@media (max-width: 650px) {
  .info-panel .info-item.hide {
    display: none;
  }
}

.info-panel .info-control {
  display: none;
  text-align: center;
  padding: 0.5rem;
  line-height: 1rem;
  color: #02a7ec;
}

@media (max-width: 650px) {
  .info-panel .info-control {
    display: block;
  }
}

.info-panel .info-control .control-text {
  padding-right: 0.5rem;
}

.info-panel .info-control .control-icon:before {
  font-size: 0.825rem;
}

.networks-info .info-item {
  -webkit-flex: 1 1 33.3%;
  flex: 1 1 33.3%;
}

.row-picker {
  position: absolute;
  border: 1px solid rgba(0, 0, 0, 0.1);
  border-radius: 4px;
  margin-top: 1px;
  background: white;
  z-index: 9999;
  max-width: 32rem;
}

@media (max-width: 650px) {
  .row-picker {
    max-width: 21rem;
  }
}

.row-picker .dialog-title {
  text-align: left;
  padding: 0.5rem;
  font-size: 1rem;
  font-weight: bold;
  color: #646569;
  background-color: #F8F8F8;
}

.row-picker .panel-content {
  padding: 0.5rem;
}

.row-picker .picker-action {
  float: right;
  text-align: right;
  padding: 0.5rem;
}

.row-picker .picker-action > button:nth-child(1) {
  margin-right: 0.5rem;
}

.row-picker .picker-action > button {
  padding: 0.3rem 0.5rem;
}

.row-picker .form-field:first-child {
  float: none;
}

.row-picker .row {
  margin-left: 0rem;
}

.row-picker a.dialog-close {
  display: block;
  position: absolute;
  top: 3%;
  right: 2%;
  cursor: pointer;
}

.client-match-ap {
  display: -webkit-flex;
  display: flex;
  width: 100%;
  overflow: hidden;
}

@media (max-width: 650px) {
  .client-match-ap {
    display: block;
  }
}

.client-match-ap .chart-panel {
  flex: 3;
  width: 100%;
  height: 25rem;
}

.client-match-ap .detail-panel {
  display: none;
  flex: 2;
}

.client-match-ap .detail-panel table {
  margin-bottom: 0.8rem;
}

.client-match-ap .detail-panel .item-title {
  padding-bottom: 0;
}

.client-match-ap .info-panel {
  margin-bottom: 0.8rem;
  display: block;
}

.client-match-ap .seggyc {
  position: absolute;
  right: 0.5rem;
  top: 0;
  margin: 1.2rem 0.625rem 1.2rem 0;
}

.client-match-client {
  display: -webkit-flex;
  display: flex;
}

@media (max-width: 650px) {
  .client-match-client {
    display: block;
  }
}

.client-match-client .chart-panel {
  flex: 3;
}

.client-match-client .detail-panel {
  flex: 2;
}

.client-match-client .detail-panel table {
  margin-bottom: 0.8rem;
}

.client-match-client .detail-panel .item-title {
  padding-bottom: 0;
}

.client-match-client .info-panel {
  margin-bottom: 0.8rem;
  display: block;
}

.support.panel {
  flex: 1;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
}

.support.panel .support-select {
  display: -webkit-flex;
  display: flex;
  -webkit-justify-content: space-around;
  justify-content: space-around;
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
  overflow: visible;
}

.support.panel .support-select .select {
  margin-right: 0.5rem;
}

.support.panel .support-select .enable-color {
  color: #00ff7f;
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .support.panel .support-select .small-hide {
    display: none;
  }
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  .support.panel .support-select {
    -webkit-flex-direction: column;
    flex-direction: column;
    -webkit-align-items: flex-start;
    align-items: flex-start;
  }
}

.support.panel .support-select button {
  margin-left: 0.25rem;
}

.support.panel .support-select > div {
  white-space: nowrap;
  padding-right: 0.25rem;
}

.support.panel .support-select .multiple-selector {
  flex: 1;
}

.support.panel .support-result-head {
  display: -webkit-flex;
  display: flex;
  -webkit-justify-content: flex-start;
  justify-content: flex-start;
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
  overflow-y: auto;
  max-height: 4rem;
  margin-top: 0.625rem;
}

.support.panel .support-result-head div {
  border: 1px solid #DFE1E5;
  border-top-left-radius: 0.5rem;
  border-top-right-radius: 0.5rem;
  padding: 0.5rem;
  border-bottom-color: transparent;
  cursor: pointer;
  background-color: #F8F8F8;
}

.support.panel .support-result-head div.selected {
  color: #02a7ec;
  background-color: white;
}

.support.panel .support-result-content {
  flex: 1;
  min-height: 10rem;
  overflow: auto;
  border: 1px solid #DFE1E5;
  font-family: monospace;
  -webkit-user-select: text;
  -moz-user-select: text;
  -ms-user-select: text;
  user-select: text;
}

.support.panel .support-result-content pre {
  max-width: 0;
}

.config-access-points .item-title {
  margin-top: 1.5rem;
}

.config-access-points .inactive-ap {
  color: #F43530;
}

.config-access-points .aps-name-master {
  max-width: 95%;
}

.notification .ui-badge {
  margin-top: -0.2rem;
  left: 0.7rem;
  position: absolute;
}

.notification-icon {
  position: relative;
  color: #02a7ec;
}

.notification-icon.active,
.notification-icon:hover {
  cursor: pointer;
  color: #02a7ec;
}

.notification-content {
  position: absolute;
  display: none;
  border-radius: 0.3125rem;
  background-color: #FFF;
  font-size: 0.875rem;
  box-shadow: 0 0.1875rem 0.75rem rgba(0, 0, 0, 0.15);
  border: 1px solid rgba(0, 0, 0, 0.15);
  top: 3.5rem;
  right: 2.875rem;
  min-width: 10rem;
  z-index: 1006;
}

.notification-content.active {
  display: block;
}

.notification-content .notification-content-arrow:before {
  position: absolute;
  top: -1rem;
  right: 5rem;
}

.notification-content .notification-content-arrow:after {
  position: absolute;
  top: -0.9rem;
  right: 5rem;
}

.notification-content ul {
  padding: 0.5rem 0 !important;
}

.notification-content li {
  list-style: none;
  line-height: 2rem;
  height: 2rem;
  text-align: left;
  color: #02a7ec;
}

.notification-content li > span,
.notification-content li a {
  padding: 0 0.5rem !important;
  cursor: pointer !important;
}

.notification-content li a:hover {
  background-color: #02a7ec !important;
  color: #FFF !important;
}

.notification-content span.ui-badge {
  position: relative;
  top: 0;
  left: 0;
  margin: -0.2rem 0 0 0.5rem !important;
}

.notification-content .no-data {
  line-height: 1;
  padding: 0.5rem 1rem;
  color: #c4c4c4;
}

.ui-badge {
  display: inline-block;
  padding: 0.15rem 0.4rem;
  border-radius: 1.2857rem;
  background-color: #F43530;
  color: #FFFFFF;
  line-height: 1.2;
  text-align: center;
  font-size: 0.7148rem;
  vertical-align: middle;
}

.ui-badge-dot {
  padding: 0.4em;
  min-width: 0;
}

.alert-container {
  margin: 1rem;
}

.alert-container .table {
  margin-bottom: 1rem;
}

.alert-container .title_heading {
  background: #F5F5F5;
}

.aps-config {
  padding: 0;
  flex: 1;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
}

.aps-config .form_heading {
  padding: 0.625rem 1rem 0;
}

.uplink-cert-upload.message {
  box-shadow: none;
}

.uplink-cert-upload.message .dialog-content p {
  display: block;
  text-align: center;
}

.aps-overview-charts .seggyc {
  float: none;
  margin: 0;
}

.aps-overview-charts .ap-rftrends {
  min-height: 31rem;
}

.tab-loading-bg.overlay {
  position: absolute;
  background-color: rgba(255, 255, 255, 0.8);
}

.spectrum-ap {
  display: -webkit-flex;
  display: flex;
  width: 100%;
  overflow: hidden;
}

@media (max-width: 650px) {
  .spectrum-ap {
    display: block;
  }
}

.spectrum-ap .chart-panel {
  flex: 2;
  width: 100%;
}

.spectrum-ap .detail-panel {
  flex: 1;
}

.spectrum-ap .detail-panel .item-title {
  padding-bottom: 0;
}

.spectrum-ap .seggyc {
  float: none;
  margin: 0;
}

.inactive {
  color: #c0c0c0;
  border-color: #c0c0c0;
  cursor: not-allowed;
}

.inactive label {
  cursor: not-allowed;
}

.splash-page-container {
  color: #000000;
}

.splash-page-container .splash-page-banner {
  cursor: pointer;
  margin-top: 0.5rem;
  height: 2rem;
  border: 1px solid transparent;
}

.splash-page-container .splash-page-banner:hover,
.splash-page-container .splash-page-banner.editing {
  border: 1px solid yellow;
}

.splash-page-container .splash-page-banner .splash-page-banner-ins {
  height: 2rem;
  border: 1px solid transparent;
}

.splash-page-container .splash-page-banner .splash-page-banner-ins:hover,
.splash-page-container .splash-page-banner .splash-page-banner-ins.editing {
  border: 1px solid red;
}

.splash-page-container .splash-page-body {
  cursor: pointer;
  height: 11rem;
  border: 1px solid #F5f5f5;
}

.splash-page-container .splash-page-body:hover {
  border: 1px solid yellow;
}

.splash-page-container .splash-page-body.editing {
  border: 1px solid yellow;
}

.splash-page-container .splash-page-body .splash-page-body-ins {
  height: 11rem;
  overflow-y: auto;
  border: 1px solid transparent;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-wrap: wrap;
  flex-wrap: wrap;
  -webkit-justify-content: center;
  justify-content: center;
}

.splash-page-container .splash-page-body .splash-page-body-ins:hover,
.splash-page-container .splash-page-body .splash-page-body-ins.editing {
  border: 1px solid red;
}

.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-left,
.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-right {
  margin: 1.5rem 1rem;
  flex: 1;
}

@media (max-width: 650px) {
  .splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-left,
  .splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-right {
    min-width: 90%;
  }
}

.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-right {
  position: relative;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
}

.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-right input[type=checkbox] {
  margin-left: 0;
}

.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-right input[type=password] {
  margin-top: 0.25rem;
}

.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-right label {
  color: #F5831E;
}

.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-right .splash-page-body-right-mask {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
}

.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-text {
  border: 1px solid transparent;
}

.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-text:hover,
.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-text.editing {
  border: 1px solid yellow;
}

.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-text .splash-page-body-text-ins {
  padding: 0.2rem;
  border: 1px solid transparent;
}

.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-text .splash-page-body-text-ins:hover,
.splash-page-container .splash-page-body .splash-page-body-ins .splash-page-body-text .splash-page-body-text-ins.editing {
  border: 1px solid red;
}

.splash-page-container .splash-page-body .splash-page-body-ins #splash-page-w-text {
  font-weight: bold;
}

.splash-page-container .splash-page-body .splash-page-body-ins #splash-page-t-text {
  color: #aaa;
}

.splash-page-container .splash-page-logo,
.splash-page-container .splash-page-preview,
.splash-page-container .splash-page-redirect {
  padding: 0.5rem 0;
  display: -webkit-flex;
  display: flex;
  -webkit-justify-content: space-between;
  justify-content: space-between;
  -webkit-align-items: center;
  align-items: center;
}

.splash-page-container .splash-page-logo a,
.splash-page-container .splash-page-preview a,
.splash-page-container .splash-page-redirect a {
  cursor: pointer;
}

.splash-page-container .splash-page-redirect {
  -webkit-justify-content: flex-start;
  justify-content: flex-start;
}

.splash-page-container .splash-page-redirect > div {
  margin-right: 0.5rem;
}

.splash-page-container .splash-page-redirect span {
  color: #c3c5c8;
}

.access-rules-table table.data td {
  padding: 0.5rem 0.625rem;
}

.access-rules-table .title_heading span.role-name {
  color: #02a7ec;
  position: static;
}

table.data td.access-rules-role {
  padding: 0.5rem 0.625rem;
}

.chrome-picker {
  box-shadow: none !important;
}

.network-security-guest {
  display: -webkit-flex;
  display: flex;
}

@media (max-width: 650px) {
  .network-security-guest {
    display: block;
  }
}

.network-security-guest > div {
  -webkit-flex: 1;
  flex: 1;
}

#splash-edit-picker .row-picker {
  max-width: none;
}

#splash-edit-picker .form-field {
  padding-right: 0;
  margin-bottom: 0;
}

.access-rule-container {
  display: -webkit-flex;
  display: flex;
}

.access-rule-container .role-container {
  width: 22rem;
}

.access-rule-container .rule-container {
  margin-left: 0.625rem;
  flex: 4;
}

.access-rule-container .title_heading {
  background: #F5F5F5;
}

.ids-td-slider {
  height: 15rem;
  width: 15rem;
  padding: 0.625rem;
}

@media (max-width: 650px) {
  .ids-td-slider {
    width: 6rem;
  }
}

.ids-protection .ids-td-slider {
  height: 8rem;
}

.ids-td-policy {
  width: 30rem;
}

@media (max-width: 650px) {
  .ids-td-policy {
    width: 15rem;
  }
}

.ids-policy-container {
  border: 1px solid #DFE1E5;
  height: 15rem;
  overflow-y: auto;
}

.ids-policy-container .ids-policy {
  overflow: hidden;
}

.ids-policy-container .ids-policy .ids-policy-cb {
  float: left;
  margin: 0.25rem;
}

.ids-policy-container .ids-policy .ids-policy-img {
  height: 1rem;
  width: 1rem;
  float: left;
  margin: 0.5rem 0.25rem 0.25rem 0.5rem;
}

.ids-policy-container .ids-policy .ids-policy-label {
  line-height: 1.5rem;
  float: left;
  margin: 0.25rem 0 0 0.25rem;
}

.ids-protection .ids-policy-container {
  height: 8rem;
}

.link-button {
  text-decoration: underline;
  cursor: pointer;
}

.message-info {
  color: #5c89a6;
  margin: 0.25rem 0 0.625rem 0;
}

.message-info .fa-info-circle:before {
  font-size: 1rem;
}

.message-info .info-text {
  line-height: 1.5rem;
  margin: 0 0.625rem;
}

.message-warning {
  color: #ff4c00;
}

.rc-slider-disabled {
  background-color: transparent;
}

.rc-slider-mark-text {
  white-space: nowrap;
}

table.data .unsortable > span:after {
  display: none;
}

table.data tbody tr {
  /* &.selected:hover {
                background-color: $colorHighlight;
            } */
}

table.data tbody tr .table-action-icon {
  visibility: hidden;
}

table.data tbody tr.selected .table-action-icon.enable {
  visibility: visible;
  color: #02a7ec;
}

table.data tbody tr:hover {
  background-color: #def2fa;
}

table.data tbody tr:hover .table-action-icon {
  visibility: visible;
}

table.data tbody tr.no-data {
  cursor: default;
  background-color: inherit;
  color: rgba(196, 196, 196, 0.3);
  font-size: 2rem;
}

table.data tbody tr.no-data td {
  margin: 1rem 0;
  text-align: center;
}

table.data tbody tr.no-data td .far:before {
  font-size: 2rem;
}

table.data tbody tr.no-data td span {
  padding-left: 0.625rem;
}

table.data tbody tr.no-data:hover td {
  color: inherit;
}

.access-rules-dialog {
  z-index: 100;
}

.access-rules-dialog .message {
  max-width: 65rem;
}

.access-rules-edit-panel {
  display: -webkit-flex;
  display: flex;
}

.access-rules-edit-panel select {
  padding: 0.375rem 2.5rem 0.375rem 0.625rem;
}

.access-rules-edit-panel .multiple-selector .lableRow {
  padding: 0.5rem 2.5rem 0.5rem 0.625rem;
}

.access-rules-edit-panel div {
  text-align: left;
}

.access-rules-edit-panel input[type="radio"] + label {
  line-height: 2rem;
}

.access-rules-edit-panel table {
  width: 100%;
}

.access-rules-edit-panel table th,
.access-rules-edit-panel table td {
  padding-bottom: 0.375rem;
}

.access-rules-edit-panel table input[type=radio] {
  margin-left: 0;
}

.access-rules-edit-panel .acl-webreputation-slider .rc-slider-mark {
  padding-left: 0.625rem;
}

.access-rules-warning {
  color: #ff4c00;
  margin-top: 0.625rem;
  text-align: left;
}

.fast-roaming {
  margin-bottom: 0.5rem;
  font-weight: bold;
}

.airgroup-services-container {
  display: -webkit-flex;
  display: flex;
}

.airgroup-services-container .airgroup-services-left {
  flex: 1;
}

.airgroup-services-container .airgroup-services-left table .checkbox-input {
  width: 1.25rem;
  height: 1.25rem;
  line-height: 1.25rem;
  margin-top: 0.25rem;
}

.airgroup-services-container .airgroup-services-left table .checkbox-input:before {
  font-size: 0.875rem;
  left: 0.2rem;
  top: 0.05rem;
}

.airgroup-services-container .airgroup-services-right {
  flex: 3;
  margin-left: 0.625rem;
}

.airgroup-services-container .airgroup-services-right .airgroup-services-disallowed-container {
  margin-bottom: 0.625rem;
}

.airgroup-services-container .airgroup-services-right .airgroup-services-disallowed-container .checkbox-field {
  width: auto;
}

.airgroup-services-container .airgroup-services-right .diallowed-edit {
  cursor: pointer;
  margin-left: 0.625rem;
}

.airgroup-services-container .airgroup-services-right .diallowed-edit a:before {
  font-size: 1rem;
}

.airgroup-warning {
  margin-bottom: 0.625rem;
}

.combo-middle-label {
  margin-left: 0.625rem;
  margin-right: 0.625rem;
}

.combo-button-left {
  margin-left: 0.625rem;
}

.profileselect-container {
  display: -webkit-flex;
  display: flex;
}

.profileselect-container .profileselect-action {
  margin: 0.5rem 0.375rem;
}

.profileselect-container .profileselect-action a {
  font-size: 1rem;
  margin-right: 0.625rem;
  cursor: pointer;
}

.profileselect-container .profileselect-action a:before {
  font-size: 1rem;
}

.dhcp-container {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
}

.dhcp-container .footer {
  width: auto;
  overflow: unset;
  height: 2.5rem;
  padding: 0.25rem 0.625rem;
  border-top: 1px solid #DFE1E5;
  display: block;
  background: #FFF;
}

.dhcp-container .footer .button {
  float: right;
  margin-left: 0.625rem;
  padding: 0.625rem;
  width: 5rem;
}

.time-range-dialog-container .row.table-row .form-field {
  padding-bottom: 0;
}

.vlan-rules-table-container {
  padding: 0;
  overflow: visible;
  color: #000;
}

.vlan-rules-table-container .row-picker {
  margin-top: -2rem;
}

.highcharts-legend-item > span {
  z-index: -1;
}

.tab-control {
  display: block;
  overflow: auto;
  -webkit-box-shadow: 0 -1px 0 #DFE1E5 inset;
  -moz-box-shadow: 0 -1px 0 #DFE1E5 inset;
  box-shadow: 0 -1px 0 #DFE1E5 inset;
}

.tab-control li {
  float: left;
}

.tab-control li a {
  float: left;
  margin-right: 0.3125rem;
  padding: 0.625rem;
  font-size: 0.875rem;
  line-height: 0.625rem;
  border-bottom: 3px solid transparent;
  -webkit-transition: border 0.3s;
  -moz-transition: border 0.3s;
  -o-transition: border 0.3s;
  transition: border 0.3s;
  cursor: pointer;
}

@media (max-width: 1100px) {
  .tab-control li a {
    font-size: 1rem;
  }
}

.tab-control a.current {
  color: #646569;
  border-bottom: 3px solid #02a7ec;
  font-weight: bold;
  cursor: default;
}

.tab-control li:last-child a {
  margin-right: 0;
}

.tab-control-container {
  padding-bottom: 0;
}

.tab-control-container .icon-pill {
  float: right;
  color: #02a7ec;
  margin-top: 0.5rem;
}

.tab-control-container .icon-pill [class*=fa-]:before,
.tab-control-container .icon-pill [class*=fa-]:after {
  font-size: 1rem;
}

.apprf-container,
.overview-container,
.aps-overview-charts,
.client-match-client {
  padding: 0 1rem;
}

.apprf-container {
  -webkit-flex-flow: column;
  flex-flow: column;
}

.apprf-container .apprf-header .item-title {
  padding-left: 0;
}

.apprf-container > .item-panel:last-child {
  border-top: 1px solid #DFE1E5;
}

.network-wizard .section .section-content .row.table-row div.form-field:first-child {
  flex: 1 1 12rem;
}

.network-wizard .section .section-content .row.table-row div.form-field:last-child {
  flex: 10 10 50rem;
}

#nprogress .bar {
  height: 3px;
}

.dialog-content .panel-content div.form-field:first-child {
  width: 12rem;
}

.overview-content {
  color: #646569;
  margin: 0.5rem 0.625rem 0.625rem;
  padding-bottom: 0.5rem;
}

@media (max-width: 1100px) {
  .overview-content {
    -webkit-box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1) inset;
    -moz-box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1) inset;
    box-shadow: 0 -1px 0 rgba(0, 0, 0, 0.1) inset;
  }
}

.overview-content .counts div {
  font-size: 1rem;
  height: 2rem;
}

@media (max-width: 1100px) {
  .overview-content .counts div {
    display: inline;
  }
}

.overview-content .counts div i {
  padding-right: 1rem;
}

.overview-content .counts div a {
  font-size: 1rem;
  padding-left: 1rem;
}

.overview-content .counts a {
  font-size: 2rem;
}

@media (max-width: 1100px) {
  .overview-content .counts a {
    font-size: 1.25rem;
    padding-left: 1rem;
  }
}

.overview-content .sub-panel {
  display: -webkit-flex;
  display: flex;
  margin-top: 1rem;
}

.overview-content .sub-panel .sub-item {
  flex: 1;
}

@media (max-width: 1100px) {
  .overview-content .sub-panel .sub-item {
    display: -webkit-flex;
    display: flex;
  }
}

.overview-content .sub-panel div.sub-item-label {
  height: 1.2rem;
}

.overview-content .sub-panel div.sub-item-counts {
  color: #888;
}

@media (max-width: 1100px) {
  .overview-content .sub-panel div.sub-item-counts {
    padding-left: 1rem;
  }
}

.overview-content .sub-panel div.sub-item-counts .fas:before {
  font-size: 0.875rem;
  padding-right: 0.375rem;
  cursor: default;
}

.overview-content .sub-panel div.sub-item-counts .active-ap {
  color: #018e1b;
}

.overview-content .sub-panel div.sub-item-counts .inactive-ap {
  color: #F43530;
}

.checkbox-text {
  cursor: pointer;
}

.radio-row label {
  cursor: pointer;
}

.overview-router {
  -webkit-flex: 1;
  flex: 1;
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  overflow-y: auto;
}

@media (max-width: 650px) {
  .overview-router {
    display: block;
  }
}

.overview-router .tab-control-container {
  -webkit-flex: 0 0 auto;
  flex: 0 0 auto;
  padding-top: 0.625rem;
}

.overview-router .tabs .seggyc {
  -webkit-flex: 0 0 auto;
  flex: 0 0 auto;
}

.overview-router .white {
  border: none;
}

.ids-detecting-container {
  width: 300px;
  padding: 1rem;
  color: #646569;
}

.ids-detecting-container > div {
  line-height: 1.2;
}

.ids-detecting-container .white {
  border: none;
}

.airgroup-servers-container {
  margin: 1rem 2rem;
}

.airgroup-servers-container .title_heading {
  background: #F5F5F5;
}

.cellular-container {
  margin: 1rem;
}

.fas.ap-master:before {
  font-size: 0.625rem;
}

.country-content {
  text-align: left;
  margin: 0.5rem;
  line-height: 1.3;
}

.country-content .row.table-row div.form-field:first-child {
  line-height: 1rem;
}

.central-content {
  text-align: left;
}

.central-content div {
  margin: 0.5rem;
}

.central-content .free-wifi {
  font-weight: bold;
}

.central-content .features {
  margin-left: 2rem;
}

.central-content .features ul {
  list-style: disc inside none;
}

.central-content .features li {
  list-style: disc inside none;
  line-height: 1.3;
}

.tabs .section .section-content > .row.table-row .overlay div.form-field:last-child,
.airgroup-container .section .section-content > .row.table-row .overlay div.form-field:last-child {
  display: table-cell;
}

@media only screen and (max-width: 651px) {
  .tabs .section .section-content > .row.table-row .overlay div.form-field:last-child,
  .airgroup-container .section .section-content > .row.table-row .overlay div.form-field:last-child {
    display: inline-block;
  }
}

.disconnect-user-confirm {
  font-size: 1rem;
  color: #646569;
  line-height: 3rem;
}

.disconnect-user-confirm span {
  color: #02a7ec;
}

.multiple-item > .form-field:first-child + * {
  /* & > *:first-child {
                & + * {
                    float: left;
                    margin-left: 0.25rem;
                }
            } */
}

.multiple-item > .form-field:first-child + * > *:nth-child(n + 2) {
  float: left;
  margin-left: 0.375rem;
}

.multiple-item .form-field-label {
  margin: 0;
}

.network-security-section .section-content {
  display: -webkit-flex;
  display: flex;
}

@media (max-width: 1100px) {
  .network-security-section .section-content {
    display: block;
  }
}

.network-security-section .section-content > div {
  -webkit-flex: 1;
  flex: 1;
}

@media (max-width: 1100px) {
  .network-security-section .section-content > div {
    flex: none;
  }
}

.toast-message {
  line-height: 1.5;
}

.error-message-tooltip {
  background-color: white;
  z-index: 100;
}

.error-message-tooltip > div {
  border: 1px solid rgba(255, 76, 0, 0.2);
  padding: 0.425rem 0.625rem;
  background-color: rgba(255, 76, 0, 0.05);
  border-radius: 0.25rem;
  color: #FF4C00;
  font-size: 0.875rem;
  white-space: nowrap;
  line-height: normal;
  -webkit-box-shadow: 1px 1px 1px rgba(255, 76, 0, 0.2);
  -moz-box-shadow: 1px 1px 1px rgba(255, 76, 0, 0.2);
  box-shadow: 1px 1px 1px rgba(255, 76, 0, 0.2);
}

.error-message-tooltip > div > .fa-info-circle {
  margin-right: 0.5rem;
  color: rgba(255, 76, 0, 0.75);
}

.error-message-tooltip > div > .fa-info-circle:before {
  font-size: 0.875rem;
  cursor: default;
}

.access-rules-dialog.overlay .message .dialog-content {
  padding-right: 3rem;
}

.access-rules-dialog.overlay .message .dialog-content .multiple-selector .drop-down-list {
  height: 15rem;
}

.certificates-container .certs-info {
  border: 1px solid #DFE1E5;
  margin-bottom: 1rem;
  max-height: 25rem;
  min-height: 5rem;
  overflow: auto;
  padding: 0.5rem;
}

.certificates-container .certs-info td {
  padding: 0.25rem;
  white-space: nowrap;
}

.certificates-container .certs-upload-info {
  margin-top: 1.5rem;
}

.certificates-container .certs-upload-info > span {
  margin-bottom: 0.5rem;
}

.certificates-container .certs-upload-info span {
  display: block;
  padding: 0.2rem 0;
}

.cert-upload-state {
  margin: 0.5rem;
  font-size: 1rem;
}

.cert-upload-state i {
  padding-right: 0.5rem;
}

.cert-upload-state .fas:before {
  font-size: 1rem;
}

.cert-upload-state .fa-check {
  color: #00CC00;
}

.cert-upload-state .fa-times {
  color: #ff0000;
}

@media (max-width: 650px) {
  .cert-file input[type=text].input {
    width: 8rem;
  }

  .cert-file input[type=file] {
    width: 13rem;
  }
}

.alerts {
  color: #F43530;
}

.disallow-row {
  margin: 0.5rem;
  word-wrap: break-word;
  white-space: normal;
  line-height: 1.5rem;
}

.disallow-row span:first-child {
  font-weight: bold;
  padding-right: 0.5rem;
}

.message.dhcp-server-dialog {
  text-align: left;
  max-width: 70rem;
}

.message.dhcp-server-dialog .panel.no_border {
  padding: 0;
}

.message.user-dialog {
  text-align: left;
}

.message.user-dialog .panel .title_heading {
  display: none;
}

.inbound-firewall.access-rules-dialog.overlay .message .dialog-content {
  padding: 0.625rem 3rem 0.625rem 0.625rem;
}

.inbound-firewall.access-rules-dialog.overlay .message .dialog-content td {
  padding-top: 0.25rem;
}

.dialog-content .panel-content .radio-dialog-label div.form-field:first-child {
  width: 15rem;
}

.language {
  border: none;
  text-decoration: underline;
  color: #02a7ec;
  padding-right: 0;
  margin-right: 0;
  text-align-last: end;
  text-align: right;
  background: none;
  box-shadow: none;
}

.language:focus,
active {
  outline: none;
  border: none;
  box-shadow: none;
}

.detail-chart-dialog.message {
  max-width: 350px;
}

.detail-chart-dialog-panel {
  padding: 0;
}

.detail-chart-dialog-panel .detail-chart-body {
  display: -webkit-flex;
  display: flex;
}

@media (max-width: 1100px) {
  .detail-chart-dialog-panel .detail-chart-body {
    display: block;
  }
}

.detail-chart-dialog-panel .detail-chart-body .item-content-chart {
  -webkit-flex: 2;
  flex: 2;
}

.detail-chart-dialog-panel .detail-chart-body table {
  color: #646569;
  -webkit-flex: 1;
  flex: 1;
}

.detail-chart-dialog-panel .detail-chart-body table th,
.detail-chart-dialog-panel .detail-chart-body table td {
  padding: 0.5rem;
  text-align: center;
}

table.ap-overview-table th,
table.ap-overview-table td {
  padding: 0.5rem 0.25rem;
}

.dialog-content .panel-content .clear-config-label div.form-field:first-child {
  width: 100%;
}

.clear-config-message {
  text-align: left;
  line-height: 2rem;
  padding-left: 0.325rem;
  font-weight: bold;
}

thead.collapsable tr:last-child th:hover span.icon-menu {
  opacity: 1;
}

@media (max-height: 780px) and (orientation: portrait), (max-width: 780px) and (orientation: landscape) {
  thead.collapsable tr:last-child th:hover span.icon-menu {
    display: none !important;
  }
}

thead.collapsable tr:last-child th .icon-menu {
  position: absolute;
  right: 0rem;
  margin-right: 0;
  background-color: #fff;
  opacity: 0;
  color: #02a7ec;
  margin-top: 1px;
  padding-left: 0.5rem;
}

thead.collapsable tr:last-child th .icon-menu:before {
  font-size: 0.875rem;
}

.tree-container {
  position: absolute;
  top: 0;
  background-color: #FFF;
  font-size: 0.875rem;
  border-radius: 0.3125rem;
  z-index: 1001;
  box-shadow: 0 0.1875rem 0.75rem rgba(0, 0, 0, 0.15);
  border: 1px solid rgba(0, 0, 0, 0.15);
}

.tree-container .tree-body {
  color: #000;
  max-height: 15rem;
  max-width: 20rem;
  overflow: auto;
  padding: 0.5rem;
}

.tree-container .tree-body li {
  cursor: pointer;
  list-style: none;
  line-height: 2rem;
}

.tree-container .tree-body li ul {
  color: #000;
  margin-left: 2rem;
}

.tree-container .tree-body li label {
  cursor: pointer;
  float: none;
  white-space: nowrap;
}

.overview-networks-container .table .tree-body {
  width: 12rem;
}

.overview-networks-container .data-table {
  overflow: unset;
}

.banner-title {
  width: 7rem;
  text-align: center;
  color: #bcbdc4;
  line-height: 1rem;
  font-size: 0.875rem;
}

@media (max-width: 650px) {
  .banner-title {
    display: none;
  }
}

.aps-name-master {
  position: relative;
  display: inline-block;
  max-width: 90%;
}

.aps-name-master .ap-master {
  position: absolute;
  right: -1rem;
  top: 0;
}

.dialog-icon {
  float: right;
  padding-top: 0.625rem;
}

.dialog-icon a.dialog-close {
  display: inline;
  cursor: pointer;
  margin-right: 1rem;
  top: 0;
  right: 0;
  position: unset;
}

.dialog-icon .help-container {
  display: inline;
  margin-right: 1rem;
}

.dialog-icon .help-container .help-advice-container {
  right: -2.625rem;
}

.banner-title-name {
  color: #848481;
  font-size: 0.875rem;
  max-width: 12rem;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

@media (max-width: 650px) {
  .banner-title-name {
    display: none;
  }
}

.banner-splice {
  border-left: solid 1px #C3C5C8;
  line-height: 1rem;
  height: 1rem;
  margin-left: 1rem;
  margin-right: 1rem;
}

@media (max-width: 650px) {
  .banner-splice {
    display: none;
  }
}

.autorun {
  margin-top: 0.625rem;
}

.autorun span {
  margin-right: 0.625rem;
}

.option82xml-container {
  display: -webkit-flex;
  display: flex;
  -webkit-flex-flow: column;
  flex-flow: column;
  overflow: hidden;
  flex: 1;
}

.option82xml-container .option82xml-content {
  flex: 1;
  padding-left: 0.5rem;
  padding-top: 0.5rem;
  border: 1px solid #efefef;
  margin-bottom: 1rem;
  font-family: Verdana, SimSun;
  overflow-y: auto;
  -webkit-user-select: text;
  -moz-user-select: text;
  -ms-user-select: text;
  user-select: text;
}

.option82xml-container .option82xml-content > pre {
  line-height: 1.5rem;
}

.option82xml-container .option82xml-footer {
  width: 100%;
}

.option82xml-container .option82xml-footer button {
  width: 12rem;
  display: block;
  margin-bottom: 0.625rem;
}

.option82xml-container .dialog-content .panel-content div.form-field:first-child {
  width: 2rem;
}

.tooltip-airgroup-servers .row-picker {
  max-width: none;
}

.tooltip-airgroup-servers .row-picker .ids-detecting-container {
  width: 60rem;
}

.tooltip-airgroup-servers .row-picker .ids-detecting-container .panel.table {
  overflow: inherit;
}

.iot-section .message {
  top: 10%;
  width: 90%;
  text-align: left;
  max-width: none;
}

.iot-section .message .radio-container > div {
  float: left;
}

.iot-section .message .radio-container > div:last-child {
  padding-left: 0.5rem;
}

.iot-section .message .multiple-checkbox {
  max-width: 50rem;
}

.iot-section .message .multiple-checkbox .checkbox-field {
  width: 15rem;
}

.iot-section .message .multiple-item .form-field-label {
  max-width: none;
}

.iot-section .message .iot-filters-container {
  display: -webkit-flex;
  display: flex;
}

.iot-section .message .iot-filters-container > div {
  position: relative;
  margin-left: 0.5rem;
  min-width: 20.15rem;
  max-width: 32rem;
}

.iot-section .message .iot-filters-container > div:first-child {
  margin-left: 0;
}

.iot-section .message .checkbox-input.disabled {
  background-color: #EBEBE4;
}

.iot-section .row-picker {
  margin-top: -2.25rem;
}

.info-value div.good {
  color: #0D7F2E;
}

.info-value div.ok {
  color: #ff9a1a;
}

.info-value div.poor {
  color: #ba0d00;
}

.intra-vlan-traffic-container {
  display: -webkit-flex;
  display: flex;
}

.intra-vlan-traffic-container > div {
  -webkit-flex: 1;
  flex: 1;
}

.intra-vlan-traffic-container > div:first-child {
  margin-right: 0.5rem;
}

.intra-vlan-traffic-container .row-picker {
  margin-top: -2.5rem;
}

.message.intra-vlan-traffic-dialog {
  text-align: left;
}

.message.intra-vlan-traffic-dialog .panel .title_heading {
  background: #F5F5F5;
}

.message.intra-vlan-traffic-dialog .row-picker {
  margin-top: -2.5rem;
}

.message.intra-vlan-traffic-dialog .dialog-content .panel-content div.form-field:first-child {
  width: auto;
}

/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL3NyYy9zdHlsZXMvYXJ1YmFVSS9zdHlsZS5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvc3JjL3NraW5zL2FydWJhL19jb2xvcnMuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL3NyYy9zdHlsZXMvYXJ1YmFVSS9fbWl4aW5zLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvdG9hc3RyL3RvYXN0ci5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL25wcm9ncmVzcy9ucHJvZ3Jlc3MuY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9fY29tcGFzcy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19mdW5jdGlvbnMuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2xpc3RzLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19jcm9zc19icm93c2VyX3N1cHBvcnQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2dyYWRpZW50X3N1cHBvcnQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2NvbnN0YW50cy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fZGlzcGxheS5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fY29sb3JzLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3V0aWxpdGllcy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9fY29sb3Iuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvY29sb3IvX2NvbnRyYXN0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL19nZW5lcmFsLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvcmVzZXQvX3V0aWxpdGllcy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX2Zsb2F0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3RhZy1jbG91ZC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX21pbi5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL19zcHJpdGVzLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL3Nwcml0ZXMvX2Jhc2Uuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvc3ByaXRlcy9fc3ByaXRlLWltZy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9fdGFibGVzLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL3RhYmxlcy9fYWx0ZXJuYXRpbmctcm93cy1hbmQtY29sdW1ucy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy90YWJsZXMvX2JvcmRlcnMuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy91dGlsaXRpZXMvdGFibGVzL19zY2FmZm9sZGluZy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX2xpbmtzLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9faG92ZXItbGluay5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlua3MvX2xpbmstY29sb3JzLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9fdW5zdHlsZWQtbGluay5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX2xpc3RzLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faG9yaXpvbnRhbC1saXN0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvcmVzZXQvX3V0aWxpdGllcy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2lubGluZS1saXN0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faW5saW5lLWJsb2NrLWxpc3Quc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19idWxsZXRzLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faG9yaXpvbnRhbC1saXN0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvcmVzZXQvX3V0aWxpdGllcy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2lubGluZS1ibG9jay5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX3RleHQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX2VsbGlwc2lzLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX25vd3JhcC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC9fcmVwbGFjZW1lbnQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX2ZvcmNlLXdyYXAuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fdHlwb2dyYXBoeS5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX2xpbmtzLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9faG92ZXItbGluay5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlua3MvX2xpbmstY29sb3JzLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saW5rcy9fdW5zdHlsZWQtbGluay5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX2xpc3RzLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faG9yaXpvbnRhbC1saXN0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvcmVzZXQvX3V0aWxpdGllcy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvbGlzdHMvX2lubGluZS1saXN0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faW5saW5lLWJsb2NrLWxpc3Quc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L2xpc3RzL19idWxsZXRzLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9faG9yaXpvbnRhbC1saXN0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19jbGVhcmZpeC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19oYWNrcy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX3Jlc2V0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvcmVzZXQvX3V0aWxpdGllcy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3V0aWxpdGllcy9nZW5lcmFsL19mbG9hdC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2lubGluZS1ibG9jay5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdHlwb2dyYXBoeS9saXN0cy9fYnVsbGV0cy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvX3RleHQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX2VsbGlwc2lzLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX25vd3JhcC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL3R5cG9ncmFwaHkvdGV4dC9fcmVwbGFjZW1lbnQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L3RleHQvX2ZvcmNlLXdyYXAuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy90eXBvZ3JhcGh5L192ZXJ0aWNhbF9yaHl0aG0uc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9sYXlvdXQvX2dyaWQtYmFja2dyb3VuZC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2ltYWdlcy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX2hhY2tzLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fZnVuY3Rpb25zLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19saXN0cy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19ncmFkaWVudF9zdXBwb3J0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19jb25zdGFudHMuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2Rpc3BsYXkuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2NvbG9ycy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JhY2tncm91bmQtc2l6ZS5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX2NzczMuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19ib3JkZXItcmFkaXVzLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19pbmxpbmUtYmxvY2suc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX29wYWNpdHkuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JveC1zaGFkb3cuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3RleHQtc2hhZG93LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19jb2x1bW5zLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19ib3gtc2l6aW5nLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19ib3guc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2ltYWdlcy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvdXRpbGl0aWVzL2dlbmVyYWwvX2hhY2tzLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fZnVuY3Rpb25zLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19saXN0cy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2Z1bmN0aW9ucy9fY3Jvc3NfYnJvd3Nlcl9zdXBwb3J0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19ncmFkaWVudF9zdXBwb3J0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvZnVuY3Rpb25zL19jb25zdGFudHMuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2Rpc3BsYXkuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9mdW5jdGlvbnMvX2NvbG9ycy5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JhY2tncm91bmQtY2xpcC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fYmFja2dyb3VuZC1vcmlnaW4uc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2JhY2tncm91bmQtc2l6ZS5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3NoYXJlZC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL19zdXBwb3J0LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fZm9udC1mYWNlLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL190cmFuc2Zvcm0uc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3RyYW5zaXRpb24uc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2FwcGVhcmFuY2Uuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3JlZ2lvbnMuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX2h5cGhlbmF0aW9uLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19maWx0ZXIuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3BpZS5zY3NzIiwiL2hvbWUvcDRidWlsZC9kZXBvdC9tYXJnb3QvRkNTOC43LjEuMC5wYXRjaC4wNl84MTc4Ni9zb2Z0LWFwL2NsaS9jZ2kvdWkvbm9kZV9tb2R1bGVzL2NvbXBhc3MtbWl4aW5zL2xpYi9jb21wYXNzL2NzczMvX3VzZXItaW50ZXJmYWNlLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvY3NzMy9fc2hhcmVkLnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19mbGV4Ym94LnNjc3MiLCIvaG9tZS9wNGJ1aWxkL2RlcG90L21hcmdvdC9GQ1M4LjcuMS4wLnBhdGNoLjA2XzgxNzg2L3NvZnQtYXAvY2xpL2NnaS91aS9ub2RlX21vZHVsZXMvY29tcGFzcy1taXhpbnMvbGliL2NvbXBhc3MvX3N1cHBvcnQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9jc3MzL19zaGFyZWQuc2NzcyIsIi9ob21lL3A0YnVpbGQvZGVwb3QvbWFyZ290L0ZDUzguNy4xLjAucGF0Y2guMDZfODE3ODYvc29mdC1hcC9jbGkvY2dpL3VpL25vZGVfbW9kdWxlcy9jb21wYXNzLW1peGlucy9saWIvY29tcGFzcy9fc3VwcG9ydC5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIkBpbXBvcnRcbiAgICBcIi4vY29sb3JzXCIsXG4gICAgXCJtaXhpbnNcIixcbiAgICBcIn50b2FzdHIvdG9hc3RyXCIsXG4gICAgXCJ+bnByb2dyZXNzL25wcm9ncmVzc1wiLFxuICAgIFwiY29tcGFzc1wiO1xuXG46Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogNnB4O1xuICAgIGhlaWdodDogNnB4O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjM1LDIzNSwyMzUsMC42KTtcbn1cbiBcbi8qIFRyYWNrICovXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgICAvLy13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMCAwIDZweCByZ2JhKDAsMCwwLDAuMyk7IFxuICAgIC8vLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgIC8vYm9yZGVyLXJhZGl1czogMTBweDtcbn1cbiBcbi8qIEhhbmRsZSAqL1xuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgLy8td2Via2l0LWJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgLy9ib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTc2LDE3NiwxNzYsMC42KTsgXG4gICAgLy8td2Via2l0LWJveC1zaGFkb3c6IGluc2V0IDAgMCA2cHggcmdiYSgwLDAsMCwwLjUpOyBcbn1cbjo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6d2luZG93LWluYWN0aXZlIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDE3NiwxNzYsMTc2LDAuMyk7IFxufVxuXG4vKio6Oi13ZWJraXQtc2Nyb2xsYmFyIFxuOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiAgXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrICBcbjo6LXdlYmtpdC1zY3JvbGxiYXItYnV0dG9uXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrLXBpZWNlIFxuOjotd2Via2l0LXNjcm9sbGJhci1jb3JuZXIgXG46Oi13ZWJraXQtcmVzaXplcioqL1xuXG5odG1sIHtcbiAgICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDtcbiAgICAvLyBAbWVkaWEgb25seSBzY3JlZW4gXG4gICAgLy8gYW5kIChtaW4tZGV2aWNlLXdpZHRoIDogMTAyNHB4KSBcbiAgICAvLyBhbmQgKG1heC1kZXZpY2Utd2lkdGggOiAxMzY2cHgpIHtcbiAgICAvLyAgICAgZm9udC1zaXplOiAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgLy8gfVxufVxuXG5ib2R5IHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG5ib2R5Lm5vLXNlbGVjdCB7XG4gICAgQGluY2x1ZGUgdXNlci1zZWxlY3Qobm9uZSk7XG59XG5cbmEge1xuICAgIG91dGxpbmU6IG5vbmU7XG59XG5cbiRjb2xvclRhYmxlVGl0bGVCYWNrZ3JvdW5kOiAjRjVGNUY1O1xuXG4jYXBwLXJvb3Qge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLmxvZ2luLWNvbnRhaW5lciB7XG4gICAgd2lkdGg6IDIwcmVtO1xuICAgIGhlaWdodDogMjByZW07XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICBtYXJnaW4tbGVmdDogLTEwcmVtO1xuICAgIG1hcmdpbi10b3A6IC0xMHJlbTtcbiAgICBpbnB1dCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAyLjVyZW07XG4gICAgfVxuXG4gICAgLndlbGNvbWUge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIG1hcmdpbjogMS41cmVtO1xuICAgICAgICBmb250LXNpemU6IDEuNXJlbTtcbiAgICAgICAgY29sb3I6ICRjb2xvckxvZ2luV2VsY29tZVRleHQ7XG4gICAgfVxuXG4gICAgLmVycm9yLW1lc3NhZ2Uge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjVyZW07XG4gICAgfVxuXG4gICAgLmJ1dHRvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICB9XG5cbiAgICA+IGRpdiA+IC5kaWFsb2ctY29udGVudCB7XG4gICAgICAgIG1heC1oZWlnaHQ6IDMwcmVtO1xuICAgIH1cbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzMjBweCkge1xuICAgIC5sb2dpbi1jb250YWluZXIge1xuICAgICAgICB3aWR0aDogMTZyZW07XG4gICAgICAgIGhlaWdodDogMjByZW07XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtOHJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogLTEwcmVtO1xuICAgIH1cblxuICAgIC8vIC5oZWFkZXIgLnNlYXJjaGluZyB7XG4gICAgLy8gICAgIC5sb2dvdXQge1xuICAgIC8vICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAvLyAgICAgfVxuXG4gICAgLy8gICAgIC5pY29uX2hlbHAge1xuICAgIC8vICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAvLyAgICAgfVxuICAgIC8vIH1cblxuICAgIC8vICNzZWFyY2hJbnB1dDpmb2N1cyB7XG4gICAgLy8gICAgIHdpZHRoOiA0cmVtO1xuICAgIC8vICAgICBwYWRkaW5nLWxlZnQ6IDEuNXJlbTtcbiAgICAvLyB9XG59XG5cbkBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgLndyYXBwZXIge1xuICAgICAgICAvLyBVc2UgdmVydGljYWwgbGF5b3V0IHdoZW4gdGhlIHNjcmVlbiBpcyBzbWFsbFxuICAgICAgICBAaW5jbHVkZSBmbGV4LWZsb3coY29sdW1uKTtcbiAgICAgICAgPiBkaXYge1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBtaXhpbiBoZWFkZXJNZW51IHtcbiAgICBbY2xhc3MqPSdpY29uXyddOmJlZm9yZSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB9XG4gICAgLm1lbnUge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIC8vZmxleDogMTtcbiAgICAgICAgLy9oZWlnaHQ6IDNyZW07XG4gICAgICAgIC8vbWFyZ2luOiAwIDFyZW07XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgY29sb3I6ICRjb2xvckxpbms7XG5cbiAgICAgICAgLnVzZXJNZW51IHtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3JUZXh0ICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmN1cnJlbnQge1xuICAgICAgICBjb2xvcjogJGNvbG9yTGluaztcbiAgICB9XG4gICAgYSB7XG4gICAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgICBsaW5lLWhlaWdodDogMnJlbTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGNvbG9yOiAkY29sb3JMaW5rO1xuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIG1hcmdpbjogMCAwIDAgMC41cmVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4kZm9ybUZpZWxkSGVpZ2h0OiAycmVtO1xuJHRvZ2dsZURpYW1ldGVyOiAxLjM3NXJlbTtcbiR0b2dnbGVCYWNrZ3JvdW5kV2lkdGg6IDIuNzVyZW07XG5cblxuLmZhIHtcbiAgICBbY2xhc3MqPWZhLV0ge1xuICAgICAgICAmOmJlZm9yZSwgICY6YWZ0ZXIge1xuICAgICAgICAgICAgLy9mb250LWZhbWlseTogRm9udEF3ZXNvbWU7XG4gICAgICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBbY2xhc3MqPXRvZ2dsZS1dIHtcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGhlaWdodDogJGZvcm1GaWVsZEhlaWdodDtcbiAgICAgICAgd2lkdGg6ICR0b2dnbGVCYWNrZ3JvdW5kV2lkdGg7XG5cbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgY29udGVudDogJyc7XG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICBsZWZ0OiAwO1xuICAgICAgICAgICAgdG9wOiAoJGZvcm1GaWVsZEhlaWdodCAtICR0b2dnbGVEaWFtZXRlcikvMjtcbiAgICAgICAgICAgIGxlZnQ6IDA7XG4gICAgICAgICAgICB3aWR0aDogJHRvZ2dsZUJhY2tncm91bmRXaWR0aDtcbiAgICAgICAgICAgIGhlaWdodDogJHRvZ2dsZURpYW1ldGVyO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogJHRvZ2dsZURpYW1ldGVyLzIgKyAwLjFyZW07XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZDtcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgIH1cblxuICAgICAgICAmOmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIHRvcDogKCRmb3JtRmllbGRIZWlnaHQgLSAkdG9nZ2xlRGlhbWV0ZXIpLzI7XG4gICAgICAgICAgICB3aWR0aDogJHRvZ2dsZURpYW1ldGVyO1xuICAgICAgICAgICAgaGVpZ2h0OiAkdG9nZ2xlRGlhbWV0ZXI7XG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAkdG9nZ2xlRGlhbWV0ZXIvMiArIDAuMXJlbTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIFtjbGFzcyo9dG9nZ2xlLV0uaW5hY3RpdmUge1xuICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuXG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIC50b2dnbGUtb24ge1xuICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JTZWxlY3RlZDtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yU2VsZWN0ZWQ7XG4gICAgICAgIH1cbiAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICBsZWZ0OiAkdG9nZ2xlQmFja2dyb3VuZFdpZHRoIC0gJHRvZ2dsZURpYW1ldGVyO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yU2VsZWN0ZWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudG9nZ2xlLW9mZiB7XG4gICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvck5ldXRyYWxEaztcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yTmV1dHJhbERrO1xuICAgICAgICB9XG4gICAgICAgICY6YWZ0ZXIge1xuICAgICAgICAgICAgbGVmdDogMDtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvck5ldXRyYWxEaztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIHRvZ2dsZU9uIHtcbiAgICAwJSB7XG4gICAgICAgIGxlZnQ6ICR0b2dnbGVCYWNrZ3JvdW5kV2lkdGggLSAkdG9nZ2xlRGlhbWV0ZXI7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIGxlZnQ6IDA7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHRvZ2dsZU9mZiB7XG4gICAgMCUge1xuICAgICAgICBsZWZ0OiAwO1xuICAgIH1cblxuICAgIDEwMCUge1xuICAgICAgICBsZWZ0OiAkdG9nZ2xlQmFja2dyb3VuZFdpZHRoIC0gJHRvZ2dsZURpYW1ldGVyO1xuICAgIH1cbn1cblxuLnRvZ2dsZS1vbi5hbmltYXRlZDphZnRlcntcbiAgICAtd2Via2l0LWFuaW1hdGlvbjogdG9nZ2xlT2ZmIDAuMjVzO1xuICAgIGFuaW1hdGlvbjogdG9nZ2xlT2ZmIDAuMjVzO1xufVxuXG4udG9nZ2xlLW9mZi5hbmltYXRlZDphZnRlciB7XG4gICAgLXdlYmtpdC1hbmltYXRpb246IHRvZ2dsZU9uIDAuMjVzO1xuICAgIGFuaW1hdGlvbjogdG9nZ2xlT24gMC4yNXM7XG59XG5cbiRoZWFkZXJIZWlnaHQ6M3JlbTtcblxuLmFwcCB7XG4gICAgLy9kaXNwbGF5OiBmbGV4O1xuICAgIC8vZmxleC1mbG93OiBjb2x1bW47XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgIEBpbmNsdWRlIGZsZXgtZmxvdyhjb2x1bW4pO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgJGxheW91dERpdmlkZXI6IDFweCBzb2xpZCAkY29sb3JOZXV0cmFsTWQ7XG5cbiAgICAuaGVhZGVyIHtcbiAgICAgICAgcGFkZGluZzogMC42MjVyZW0gMXJlbTtcbiAgICAgICAgLy9vdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICBib3JkZXItYm90dG9tOiAkbGF5b3V0RGl2aWRlcjtcbiAgICAgICAgaGVpZ2h0OiAkaGVhZGVySGVpZ2h0O1xuICAgICAgICAvLyBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JNZW51QmFja2dyb3VuZDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9ySGVhZGVyQmFja2dyb3VuZDtcbiAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuXG4gICAgICAgIC5sb2dvIHtcbiAgICAgICAgICAgIGhlaWdodDogM3JlbTtcbiAgICAgICAgICAgIHdpZHRoOiA2cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmJhbm5lcm1lbnUge1xuICAgICAgICAgICAgY29sb3I6ICRjb2xvckxpbms7XG4gICAgICAgICAgICAvL2hlaWdodDogJGhlYWRlckhlaWdodDtcbiAgICAgICAgICAgIC8vbGluZS1oZWlnaHQ6ICRoZWFkZXJIZWlnaHQ7XG4gICAgICAgICAgICBmbGV4OiAxO1xuICAgICAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgICAgICAgICBwb3NpdGlvbjogaW5oZXJpdDtcblxuICAgICAgICAgICAgQGluY2x1ZGUgaGVhZGVyTWVudTtcbiAgICAgICAgICAgID5kaXYge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMS41cmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLnVzZXIge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICAgICAgICAgICAgICAvL21hcmdpbi1sZWZ0OiAxcmVtO1xuICAgICAgICAgICAgICAgIC8vbWFyZ2luLXJpZ2h0OiAtMC45Mzc1cmVtO1xuICAgICAgICAgICAgICAgIC8vaGVpZ2h0OiAkaGVhZGVySGVpZ2h0O1xuICAgICAgICAgICAgICAgIGZsZXg6IDAgMSBhdXRvO1xuICAgICAgICAgICAgICAgIC8vbWFyZ2luLXRvcDogMHJlbTtcblxuICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yTGluaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAudXNlci1tZW51LWRvd24ge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDAgMC4zMTI1cmVtO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC51c2VyTWVudSB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgLy9tYXJnaW4tcmlnaHQ6IDByZW07XG4gICAgICAgICAgICAgICAgICAgIHRvcDogMy41cmVtO1xuICAgICAgICAgICAgICAgICAgICByaWdodDogMS41cmVtO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuICAgICAgICAgICAgICAgICAgICAvL3BhZGRpbmc6IDFyZW07XG4gICAgICAgICAgICAgICAgICAgIHotaW5kZXg6IDEwMDM7XG4gICAgICAgICAgICAgICAgICAgIGJveC1zaGFkb3c6IDBweCAzcHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgICAgICAgICAgICAgICAgLmRpdmlkZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW46IDhweCAxcHg7XG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlNWU1O1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgLnVzZXJfcm9sZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yVGV4dCAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB1bCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGxpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5lLWhlaWdodDogMnJlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogMnJlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICA+IHNwYW4sIGEge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAgMXJlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgYTpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvck5hdkhvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMS41cmVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIC5kaWFsb2ctY29udGVudCAucGFuZWwtY29udGVudCBkaXYuZm9ybS1maWVsZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogNnJlbTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAvKiAudXNlck1lbnU6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAtMTZweDtcbiAgICAgICAgICAgICAgICAgICAgcmlnaHQ6IDlweDtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogYXV0bztcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiA4cHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6IHJnYmEoMCwwLDAsMC4xNSk7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JNZW51QmFja2dyb3VuZDtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgICAgICAgICB9ICovXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5iYW5uZWxfZGl2aWRlciB7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAzcmVtO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxcHg7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yTmV1dHJhbE1kO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDAuNXJlbTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsZXJUaGFuSXBhZCkge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLm1lbnVfYmxvY2sge1xuICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5tZW51cyB7XG4gICAgICAgICAgICAgICAgZmxleDogMSAxIDEwJTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbGVyVGhhbklwYWQpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUganVzdGlmeS1jb250ZW50KGZsZXgtZW5kKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC53cmFwcGVyIHtcbiAgICAgICAgLy8gZGlzcGxheTogZmxleDtcbiAgICAgICAgLy8gZmxleDogMTtcbiAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICBAaW5jbHVkZSBmbGV4KDEpO1xuICAgICAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgICAgICAgLnNpZGVuYXYtd3JhcHBlciB7XG4gICAgICAgICAgICBwYWRkaW5nOiAwIDAgMC4yNXJlbSAwLjEyNXJlbTtcbiAgICAgICAgICAgIC8vIGJvcmRlci1yaWdodDogJGxheW91dERpdmlkZXI7XG4gICAgICAgICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAgICAgICAgIHdpZHRoOiAxMi41cmVtO1xuICAgICAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOjA7XG4gICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206ICRsYXlvdXREaXZpZGVyO1xuICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IHZpc2libGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuc3BsaXRlciB7XG4gICAgICAgICAgICB3aWR0aDogNXB4O1xuICAgICAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICAgICAgY3Vyc29yOiBjb2wtcmVzaXplO1xuICAgICAgICAgICAgLy8gYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yTmV1dHJhbE1kO1xuICAgICAgICAgICAgLy8gY29sb3I6ICRjb2xvck5ldXRyYWxNZDtcbiAgICAgICAgICAgIHotaW5kZXg6IDEwMDtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAtMnB4O1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAtMnB4O1xuXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICA+IGRpdiB7XG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvckxpbms7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICA+IGRpdiB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDFweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yTmV1dHJhbE1kO1xuXG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgtZmxvdyhjb2x1bW4pO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGp1c3RpZnktY29udGVudChzcGFjZS1hcm91bmQpO1xuXG4gICAgICAgICAgICAgICAgYSB7IFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMnB4O1xuICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3JOZXV0cmFsRGs7XG4gICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvckxpbms7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgICAgIC8vZmxleDoxO1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleCgxKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgtZmxvdyhjb2x1bW4pO1xuICAgICAgICAgICAgLy9ib3JkZXItbGVmdDogJGxheW91dERpdmlkZXI7XG4gICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAgICAgICAudGFicyB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZmxleCgxKTtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1mbG93KGNvbHVtbik7XG5cbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICAgICAgICAgIC8vIHBhZGRpbmc6IDAuNjI1cmVtIDAuNjI1cmVtIDAuMjVyZW0gMC42MjVyZW07XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgICAgICAgICAvLyBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY1MXB4KSB7XG4gICAgICAgICAgICAgICAgLy8gICAgIHBhZGRpbmc6IDAuMjVyZW07XG4gICAgICAgICAgICAgICAgLy8gfVxuXG4gICAgICAgICAgICAgICAgJi5yZXNwb25zaXZlIHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgZmxleCgxKTtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBmbGV4LWZsb3coY29sdW1uKTtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUganVzdGlmeS1jb250ZW50KHNwYWNlLWJldHdlZW4pO1xuXG4gICAgICAgICAgICAgICAgICAgIC50YWJjb250cm9scyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaW5jbHVkZSBmbGV4KDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLnRhYnMtZm9vdGVyIHtcbiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAyLjVyZW07XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuMjVyZW0gMC42MjVyZW07XG4gICAgICAgICAgICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkY29sb3JOZXV0cmFsTWQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLmJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMC42MjVyZW07XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjYyNXJlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiA1cmVtO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5hZHZhbmNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2xpbmUtaGVpZ2h0OiAyLjVyZW07XG4gICAgICAgICAgICAgICAgICAgICAgICAvL2NvbG9yOiAkY29sb3JMaW5rO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5hZHZhbmNlOmhvdmVyIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3JOYXZIb3ZlcjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC50YWJzLmhvcml6b250YWwge1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDFyZW0gMCAwIDFyZW07XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZmxleCgxIDEgYXV0byk7XG4gICAgICAgICAgICAgICAgJi5yZXNwb25zaXZlIHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUganVzdGlmeS1jb250ZW50KHVuc2V0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLmNvbnRhaW5lci1ob3Jpem9udGFsIHtcbiAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgZmxleCgxIDEgYXV0byk7XG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDFyZW0gMCAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAucGFuZWwtY29udGVudCB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDFyZW0gMXJlbSAwIDFyZW07XG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuc2VnZ3ljIHtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luOiAwLjYyNXJlbTtcbiAgICAgICAgICAgICAgICAgICAgJi5jZW50ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICAgICAgICAgICAgICAgICAgQGluY2x1ZGUganVzdGlmeS1jb250ZW50KGNlbnRlcik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5wYW5lbCB7XG4gICAgICAgICAgICAgICAgaDIge1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGgyLnRpdGxlX2hlYWRpbmcge1xuICAgICAgICAgICAgICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY1MXB4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC5wYW5lbCB7XG4gICAgICAgICAgICAgICAgICAgIC50aXRsZV9oZWFkaW5nIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICRjb2xvclRhYmxlVGl0bGVCYWNrZ3JvdW5kO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2NTFweCkge1xuICAgICAgICAgICAgICAgICAgICAucm93LnRhYmxlLXJvdyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAuZm9ybS1maWVsZCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5mb290ZXIge1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwLjE1cmVtO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgJGNvbG9yTmV1dHJhbE1kO1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZDogI0ZGRjtcbiAgICAgICAgICAgICAgICAgICAgLmJ1dHRvbiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMC42MjVyZW07XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjYyNXJlbTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiA1cmVtO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAucm93LnRhYmxlLXJvdy5hZHZhbmNlLXJvdyB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5zZWN0aW9uLmFkdmFuY2Uge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5hZHZhbmNlLXBhbmVsLWNvbnRlbnQge1xuICAgICAgICAgICAgICAgIC5zZWN0aW9uLWNvbnRlbnQge1xuICAgICAgICAgICAgICAgICAgICAucm93LnRhYmxlLXJvdy5hZHZhbmNlLXJvdyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY1MXB4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLnJvdy50YWJsZS1yb3cuYWR2YW5jZS1yb3cge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiB0YWJsZS1yb3c7XG5cbiAgICAgICAgICAgICAgICAgICAgQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2NTFweCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLnNlY3Rpb24ge1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKj4gZGl2IHtcbiAgICAgICAgICAgICAgICA+IC5wYW5lbCB7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9Ki9cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5mb290ZXIge1xuICAgICAgICBoZWlnaHQ6ICRoZWFkZXJIZWlnaHQ7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAkaGVhZGVySGVpZ2h0O1xuICAgICAgICBjb2xvcjogJGNvbG9yTmV1dHJhbERrO1xuICAgICAgICBib3JkZXItdG9wOiAkbGF5b3V0RGl2aWRlcjtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yTWVudUJhY2tncm91bmQ7XG5cbiAgICAgICAgW2NsYXNzKj0naWNvbl8nXTpiZWZvcmUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAzcmVtO1xuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbGVyVGhhbklwYWQpIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhIHtcbiAgICAgICAgICAgIGhlaWdodDogJGhlYWRlckhlaWdodDtcbiAgICAgICAgICAgIHdpZHRoOiAyNSU7XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG5cbiAgICAgICAgQGluY2x1ZGUgaGVhZGVyTWVudTtcbiAgICAgICAgLm1lbnUge1xuICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgaGVpZ2h0OiAkaGVhZGVySGVpZ2h0O1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICRoZWFkZXJIZWlnaHQ7XG5cbiAgICAgICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGxlclRoYW5JcGFkKSB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qIGxhYmVsIHtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYW1hLWJlYXIpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgfVxuICAgIH0gKi9cbn1cblxuLnJvdy50YWJsZS1yb3cge1xuICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcblxuICAgIGRpdi5mb3JtLWZpZWxkOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6ICRmb3JtRmllbGRIZWlnaHQ7XG4gICAgfVxuICAgIGRpdi5mb3JtLWZpZWxkOmxhc3QtY2hpbGQge1xuICAgICAgICAvL21hcmdpbi1ib3R0b206IDAuMTI1cmVtO1xuICAgIH1cbn1cblxuLmZvcm0tZmllbGQge1xuICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgLy9oZWlnaHQ6ICRmb3JtRmllbGRIZWlnaHQ7XG4gICAgLy8gbGluZS1oZWlnaHQ6ICRmb3JtRmllbGRIZWlnaHQ7XG4gICAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgICBwYWRkaW5nLXJpZ2h0OiAxcmVtO1xuICAgIHBhZGRpbmctYm90dG9tOiAwLjYyNXJlbTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgJiA+IDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgIH1cbiAgICBsYWJlbDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMXJlbTtcbiAgICB9XG4gICAgLmZvcm0tZmllbGQtbGFiZWw6Zmlyc3QtY2hpbGQge1xuICAgICAgICBtYXJnaW4tbGVmdDogMHJlbTtcbiAgICB9XG59XG5cbi5lcnJvci1tZXNzYWdlIHtcbiAgICBjb2xvcjogcmVkO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIGxpbmUtaGVpZ2h0OiAycmVtO1xuICAgIHBhZGRpbmctbGVmdDogMC42MjVyZW07XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cblxuLmxvZ28tY29udGFpbmVyIHtcbiAgICAvL21hcmdpbi10b3A6IDJyZW07XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgJiA+IC5sb2dvIHtcbiAgICAgICAgaGVpZ2h0OiA2cmVtO1xuICAgICAgICB3aWR0aDogMTJyZW07XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgIH1cbn1cblxuLmxvZ28ge1xuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnLi4vLi4vaW1hZ2VzL2xvZ2luLWxvZ28ucG5nJyk7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG59XG5cbi5iYW5uZXItbG9nbyB7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCcuLi8uLi9pbWFnZXMvYmFubmVyLWxvZ28ucG5nJyk7XG4gICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgICBiYWNrZ3JvdW5kLXNpemU6IGNvbnRhaW47XG4gICAgaGVpZ2h0OiAycmVtO1xuICAgIHdpZHRoOiA2cmVtO1xufVxuXG4ucGFuZWwge1xuXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yQ29udGFpbmVyQmFja2dyb3VuZDtcbiAgICAvLyBtYXJnaW4tdG9wOiAwLjI1cmVtO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAgIC5jb2x1bW5zIHtcbiAgICAgICAgLy9tYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xuICAgICAgICBoZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgLy9saW5lLWhlaWdodDogMi41cmVtO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7XG4gICAgfVxuXG4gICAgLnJvdyB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjI1cmVtO1xuICAgIH1cblxuICAgIC5mb3JtX2hlYWRpbmcge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgcGFkZGluZzogMCAwIDAuNjI1cmVtIDA7XG4gICAgfVxuICAgIC50aXRsZV9oZWFkaW5nIHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG5cbiAgICBsYWJlbCB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgXG4gICAgICAgIC8vIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjUxcHgpIHtcbiAgICAgICAgLy8gICAgIGxpbmUtaGVpZ2h0OiAyLjVyZW07XG4gICAgICAgIC8vIH1cbiAgICB9XG5cbiAgICA+IGRpdiB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuXG4gICAgcHJlLmNvbmZpZyB7XG4gICAgICAgIG92ZXJmbG93OiBzY3JvbGw7XG4gICAgICAgIG1heC1oZWlnaHQ6IDE2cmVtO1xuICAgICAgICBtYXJnaW46IDAuNXJlbSAwLjI1cmVtO1xuICAgIH1cblxuICAgIC5pbmZvX3BhbmVsIHtcbiAgICAgICAgLmNvbHVtbnMge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmNoYXJ0TGFiZWwge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAuY2hhcnRMYWJlbEhlYWRlciB7XG4gICAgICAgIHBhZGRpbmc6IDAgMCAwIDAuMjVyZW07XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgY29sb3I6IGdyYXk7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS10YWJsZTtcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICB9XG4gICAgLmNoYXJ0VW5pdHMge1xuICAgICAgICBtaW4td2lkdGg6IDAuNjI1cmVtO1xuICAgICAgICBmb250LXNpemU6IDAuNjI1cmVtO1xuICAgIH1cbiAgICBsYWJlbCB7XG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcbiAgICB9XG59XG5cbi5wYW5lbF93cmFwcGVyIHtcbiAgICA+IGRpdiB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNjI1cmVtO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIH1cblxuICAgIGgzIHtcbiAgICAgICAgbWFyZ2luOiAwLjYyNXJlbSAwO1xuICAgIH1cbn1cblxuLmFib3V0IHtcbiAgICBkaXYge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjg3NXJlbTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgPiBzcGFuLmNvbHVtbnMge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMC4yNXJlbTtcbiAgICAgICAgICAgIGhlaWdodDogYXV0bztcblxuICAgICAgICAgICAgJjpudGgtY2hpbGQoMSkge1xuICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6MDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmRyb3Bkb3duLW1lbnUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWluLXdpZHRoOiAxNjBweDtcbiAgICBwYWRkaW5nOiA1cHggMDtcbiAgICBtYXJnaW46IDJweCAwIDA7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICAvL2JvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLDAsMCwuMTUpO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICAtd2Via2l0LWJveC1zaGFkb3c6IDAgNnB4IDEycHggcmdiYSgwLDAsMCwuMTc1KTtcbiAgICBib3gtc2hhZG93OiAwIDZweCAxMnB4IHJnYmEoMCwwLDAsLjE3NSk7XG4gICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcblxuICAgIC5kcm9wZG93bi1oZWFkZXIge1xuICAgICAgICBwYWRkaW5nOiA1cHg7XG5cbiAgICAgICAgPiBpbnB1dCB7XG4gICAgICAgICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5kcm9wZG93bi1tZW51PmxpPmEge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDNweCAxMHB4O1xuICAgIGNsZWFyOiBib3RoO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDI4NTcxNDM7XG4gICAgY29sb3I6ICMzMzM7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4uZHJvcGRvd24tbWVudT5saT5hOmhvdmVyLC5kcm9wZG93bi1tZW51PmxpPmE6Zm9jdXMge1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjb2xvcjogIzI2MjYyNjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JUYWJsZVRpdGxlQmFja2dyb3VuZDtcbn1cblxuLmRyb3Bkb3duLW1lbnU+LmFjdGl2ZT5hLC5kcm9wZG93bi1tZW51Pi5hY3RpdmU+YTpob3ZlciwuZHJvcGRvd24tbWVudT4uYWN0aXZlPmE6Zm9jdXMge1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBvdXRsaW5lOiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICM0MjhiY2Fcbn1cblxuLmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmEsLmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmE6aG92ZXIsLmRyb3Bkb3duLW1lbnU+LmRpc2FibGVkPmE6Zm9jdXMge1xuICAgIGNvbG9yOiAjOTk5XG59XG5cbi5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hOmhvdmVyLC5kcm9wZG93bi1tZW51Pi5kaXNhYmxlZD5hOmZvY3VzIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbiAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChlbmFibGVkPWZhbHNlKTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkXG59XG5cbi5idXR0b24yIHtcbiAgICBiYWNrZ3JvdW5kOiB1cmwoXCIuLi8uLi9pbWFnZXMvc2VsZWN0X2Fycm93XzJ4LnBuZ1wiKSAjZmZmIG5vLXJlcGVhdCByaWdodCBjZW50ZXI7XG4gICAgYmFja2dyb3VuZC1zaXplOiAzOHB4IDM4cHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGNvbG9yOiAkY29sb3JIaWdobGlnaHQ7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICBsaW5lLWhlaWdodDogMXJlbTtcbiAgICBwYWRkaW5nOiAwLjc1cmVtIDEuMjVyZW07XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDRweCk7XG4gICAgLy8gQGluY2x1ZGUgYm94LXNoYWRvdygwIC0ycHggMCByZ2JhKDAsMCwwLDAuMjApIGluc2V0KTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3JEaXZpZGVyO1xufVxuXG4ubXVsdGlzZWxlY3QtcGFyZW50IHtcbiAgICBvdmVyZmxvdzpoaWRkZW47XG4gICAgd2lkdGg6MTAwJTtcbn1cblxuLnZhbGlkX2FsZXJ0IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXgtaGVpZ2h0OiAwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwgNTAwbXMgZWFzZSk7XG5cbiAgICBwIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEuMjVyZW07XG4gICAgICAgIG1hcmdpbi1yaWdodDogMS4yNXJlbTtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYW1hLWJlYXIpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBbY2xhc3MqPSdpY29uXyddOmJlZm9yZSB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWFtYS1iZWFyKSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbn1cblxuLnZhbGlkX2FsZXJ0LnZpc2libGUge1xuICAgIG1heC1oZWlnaHQ6IDVyZW07XG4gICAgcGFkZGluZy10b3A6IDAuMjVyZW07XG4gICAgcGFkZGluZy1ib3R0b206IDAuMjVyZW07XG59XG5cbi52YWxpZF9hbGVydC53YXJuaW5nIHtcbiAgICBjb2xvcjogJGNvbG9yQWxlcnQ7XG4gICAgYmFja2dyb3VuZDogbGlnaHRlbihkZXNhdHVyYXRlKCRjb2xvckFsZXJ0LCA0MCUpLCA0OCUpO1xuICAgIEBpbmNsdWRlIGJveC1zaGFkb3coNHB4IDAgMCAkY29sb3JBbGVydCBpbnNldCk7XG5cbiAgICBhIHtcbiAgICAgICAgY29sb3I6ICRjb2xvckFsZXJ0O1xuICAgIH1cblxufVxuXG4uaGVscC1tb2RlIHtcbiAgICBjb2xvcjogJGNvbG9ySGVscEVsZW1lbnRUZXh0ICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmhlbHAtYWR2aWNlLWRpYWxvZyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvckhlbHBBZHZpY2VCYWNrZ3JvdW5kO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvckhlbHBBZHZpY2VCb3JkZXI7XG4gICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICB6LWluZGV4OiAxMDA1O1xuICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICB0b3A6IDNyZW07XG4gICAgcmlnaHQ6MC44cmVtO1xuXG4gICAgLmhlbHAtYWR2aWNlLWluZm8tZ3JlZW4ge1xuICAgICAgICBtYXJnaW4tbGVmdDogMC41cmVtO1xuICAgIH1cbn1cblxuLmhlbHAtY29udGVudCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9ySGVscENvbnRlbnRCYWNrZ3JvdW5kO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3JkZXItcmFkaXVzOiAwLjNyZW07XG4gICAgcGFkZGluZzogMC41cmVtO1xuICAgIHotaW5kZXg6IDEwMDU7XG59XG5cblxuLy8gTmV3IHN0eWxlc1xuXG4jY29udGFpbmVyIHtcbiAgICBtYXJnaW46IDAgYXV0bztcbn1cblxuXG4ud2l6YXJkIHtcbiAgICAvL3Bvc2l0aW9uOiBhYnNvbHV0ZTsgLy8gRml4IG9mIHRoZSBpc3N1ZSB0aGF0IGhlaWdodCAxMDAlIGRvZXMgbm90IHRha2UgZWZmZWN0IGZvciBjaGlsZCBub2RlIG9mIGZsZXggbGF5b3V0IGluIFNhZmFyaVxuICAgIHBhZGRpbmc6IDA7XG4gICAgQGluY2x1ZGUgZmxleCgxKTtcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgQGluY2x1ZGUgZmxleC1mbG93KGNvbHVtbik7XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcblxuICAgICR3aXphcmRDb250cm9sV2lkdGg6IDJyZW07XG4gICAgLndpemFyZC1jb250cm9scyB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbSAwLjYyNXJlbSAwIDAuNjI1cmVtO1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGNvbG9yTmV1dHJhbE1kO1xuXG4gICAgICAgIC53aXphcmQtdGl0bGUge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xuICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMXJlbTtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvckxpbms7XG4gICAgICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuMjVyZW07XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwLjI1cmVtO1xuXG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgLy8gYm9yZGVyLWNvbG9yOiAkY29sb3JMaW5rO1xuICAgICAgICAgICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjphZnRlciB7XG4gICAgICAgICAgICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvckxpbms7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGRldmljZShtb2JpbGUpIHtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsaSB7XG4gICAgICAgICAgICBmbG9hdDpsZWZ0O1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6ICR3aXphcmRDb250cm9sV2lkdGg7XG4gICAgICAgICAgICBtYXJnaW46IDAgMnJlbSAwLjVyZW0gMDtcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3JOZXV0cmFsTWQ7XG5cbiAgICAgICAgICAgIHNwYW4ud2l6YXJkLWNvbnRyb2wtdGl0bGUge1xuICAgICAgICAgICAgICAgIG1hcmdpbjogMCAwLjYyNXJlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIHdpZHRoOiAwO1xuICAgICAgICAgICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIHJpZ2h0OiAtJHdpemFyZENvbnRyb2xXaWR0aDtcbiAgICAgICAgICAgICAgICBib3JkZXI6ICR3aXphcmRDb250cm9sV2lkdGgvMiBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogI2ZmZjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgZGV2aWNlKG1vYmlsZSkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICAgICAgICAvLyBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JMaW5rO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3JMaW5rO1xuXG4gICAgICAgICAgICAgICAgLmJhZGdlIHtcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yTGluaztcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIC8vICAgICBib3JkZXItY29sb3I6ICRjb2xvckxpbms7XG4gICAgICAgICAgICAgICAgLy8gICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgICAgICAvLyB9XG5cbiAgICAgICAgICAgICAgICAvLyAmOmFmdGVyIHtcbiAgICAgICAgICAgICAgICAvLyAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICRjb2xvckxpbms7XG4gICAgICAgICAgICAgICAgLy8gfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAmLmN1cnJlbnQge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGRldmljZShtb2JpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgLy8gICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgLy8gICAgIGJvcmRlci1sZWZ0LWNvbG9yOiAkY29sb3JMaW5rO1xuICAgICAgICAgICAgICAgIC8vIH1cblxuICAgICAgICAgICAgICAgIC8vICY6YWZ0ZXIge1xuICAgICAgICAgICAgICAgIC8vICAgICBib3JkZXItbGVmdC1jb2xvcjogJGNvbG9yTGluaztcbiAgICAgICAgICAgICAgICAvLyB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5iYWRnZSB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yTmV1dHJhbE1kO1xuICAgICAgICAgICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxcmVtO1xuICAgICAgICAgICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgICAgICAgICB0b3A6IC0wLjEyNXJlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9XG4gICAgLndpemFyZC1jb250ZW50IHtcbiAgICAgICAgcGFkZGluZzowLjYyNXJlbSAxcmVtO1xuICAgICAgICBAaW5jbHVkZSBmbGV4KDEpO1xuICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgtZmxvdyhjb2x1bW4pO1xuICAgICAgICBAaW5jbHVkZSBqdXN0aWZ5LWNvbnRlbnQoc3BhY2UtYmV0d2Vlbik7XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgIHAge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjI1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmlucHV0IHtcbiAgICAgICAgICAgIC8vIG1hcmdpbi1ib3R0b206IDAuNjI1cmVtO1xuICAgICAgICB9XG4gICAgfVxuICAgIC53aXphcmQtZm9vdGVyIHtcbiAgICAgICAgaGVpZ2h0OiAyLjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDAuMjVyZW0gMC42MjVyZW07XG4gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAkY29sb3JOZXV0cmFsTWQ7XG5cbiAgICAgICAgLmJ1dHRvbiB7XG4gICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICBtYXJnaW4tbGVmdDogMC42MjVyZW07XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjYyNXJlbTtcbiAgICAgICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgICAgICAgICBoZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgICAgIHdpZHRoOiA2cmVtO1xuICAgICAgICB9XG4gICAgICAgIGJ1dHRvbi5hZHZhbmNlIHtcbiAgICAgICAgICAgIC8vdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgICAgICAvL2xpbmUtaGVpZ2h0OiAyLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi53aGl0ZS1idXR0b24ge1xuICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgY29sb3I6ICRjb2xvckxpbms7XG4gICAgYm9yZGVyOiAxcHggc29saWQgJGNvbG9yTGluaztcbn1cblxuLnRhYnMge1xuICAgIC5wYW5lbC1jb250ZW50IHtcbiAgICAgICAgLy9wYWRkaW5nOiAxLjVyZW07XG4gICAgICAgIC8vYm9yZGVyOiAxcHggc29saWQgJGNvbG9yRGl2aWRlcjtcbiAgICAgICAgLy9ib3JkZXItdG9wOiBub25lO1xuICAgICAgICBib3JkZXI6IDA7XG4gICAgfVxufVxuXG4uaW5mb19wYW5lbCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIC5jb2x1bW5zIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIH1cbiAgICAuY29sdW1uczpsYXN0LWNoaWxkIHtcbiAgICAgICAgZmxvYXQ6bGVmdDtcbiAgICB9XG5cbiAgICBkaXYge1xuICAgICAgICAubGFiZWwge1xuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAkY29sb3JOZXV0cmFsTWQ7XG4gICAgICAgICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkY29sb3JOZXV0cmFsTWQ7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgICAgICAgICAgIGNvbG9yOiAkY29sb3JUaXRsZTtcbiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgICAgICBwYWRkaW5nOiAxcmVtIDAuNjI1cmVtIDAuOHJlbTtcbiAgICAgICAgICAgIGJhY2tncm91bmQ6ICRjb2xvck5ldXRyYWxMdDtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgICAgICAvL0BpbmNsdWRlIGJveC1zaGFkb3coMCAtMnB4IDAgJGNvbG9yRGl2aWRlckx0IGluc2V0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIC52YWx1ZSB7XG4gICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICRjb2xvck5ldXRyYWxNZDtcbiAgICAgICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICRjb2xvck5ldXRyYWxNZDtcbiAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkY29sb3JOZXV0cmFsTWQ7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbSAwLjYyNXJlbTtcbiAgICAgICAgICAgIGhlaWdodDogMS4yNXJlbTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI1cmVtO1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6bm93cmFwO1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgICAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH1cbn1cbi5zdW1tYXJ5IHtcbiAgICAuY29sdW1ucyB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICB9XG59XG5cbnRhYmxlLmRhdGEge1xuICAgIC50aXRsZV9oZWFkaW5nIHtcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICB9XG4gICAgdGgge1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIH1cbn1cblxuLnBhbmVsLm5vX2JvcmRlciB7XG4gICAgYm9yZGVyOiAwO1xufVxuXG4udGFiY29udHJvbHMge1xuICAgIHBhZGRpbmc6IDAuNjI1cmVtIDAuNjI1cmVtIDAuMjVyZW0gMC42MjVyZW07XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygwIDAgMCAkY29sb3JEaXZpZGVyTHQgaW5zZXQpO1xuICAgIGxpIHtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgICAvLyBjb2xvcjogJGNvbG9yTGluaztcbiAgICAgICAgLy9iYWNrZ3JvdW5kLWNvbG9yOiAjRjVmNWY1O1xuICAgICAgICAvL21hcmdpbjogMC4xMjVyZW07XG4gICAgfVxuICAgIGxpIGkge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWFyZ2luOiAwLjVyZW0gMC4yNXJlbSAwIDAuMzI1cmVtO1xuICAgICAgICBjb2xvcjogJGNvbG9yTGluaztcbiAgICAgICAgd2lkdGg6IDFyZW1cbiAgICB9XG4gICAgbGkuY3VycmVudCBpIHtcbiAgICAgICAgY29sb3I6ICRjb2xvclNlbGVjdGVkO1xuICAgIH1cblxuICAgIGxpLmN1cnJlbnQgYSB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgY29sb3I6ICRjb2xvclRhYmNvbnRyb2xzVGl0bGVDdXJyZW50O1xuICAgICAgICAvL2NvbG9yOiAkY29sb3JTZWxlY3RlZDtcbiAgICAgICAgLy9iYWNrZ3JvdW5kLWNvbG9yOiAjRjVmNWY1O1xuICAgIH1cblxuICAgIGxpIGEge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGNvbG9yOiAkY29sb3JUYWJjb250cm9sc1RpdGxlO1xuICAgICAgICBwYWRkaW5nOiAwLjdyZW0gMCAwLjgxMjVyZW0gMC4yNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjkyNXJlbTtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgLy9iYWNrZ3JvdW5kLWNvbG9yOiAjRjVmNWY1O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgIH1cbiAgICBsaSArIGRpdjpmaXJzdC1vZi10eXBlIHtcbiAgICAgICAgcGFkZGluZzogMCAwIDAgMS44NzVyZW07XG4gICAgICAgIC8vQGluY2x1ZGUgdHJhbnNpdGlvbihkaXNwbGF5IDgwMG1zIGVhc2UtaW4tb3V0IDBtcyk7XG4gICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjUxcHgpIHtcbiAgICAgICAgICAgIC8vIHBhZGRpbmc6IDAgMCAwIDAuNjI1cmVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4udGFicy5yZXNwb25zaXZlIHtcblxuICAgIC50YWJjb250cm9scyB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLml0ZW0tcGFuZWwge1xuICAgIEBpbmNsdWRlIGZsZXgoMSk7XG4gICAgZGlzcGxheTogYmxvY2s7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1hbWEtYmVhcikge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgQGluY2x1ZGUgZmxleChub25lKTtcbiAgICB9XG4gICAgXG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBwYWRkaW5nOiAxcmVtIDFyZW0gMCAxcmVtO1xuICAgIGNvbG9yOiAjODg4O1xuICAgIG92ZXJmbG93OiBhdXRvO1xuXG4gICAgLmhlYWRlci1jb250YWluZXIge1xuICAgICAgICAvL2JvcmRlci1ib3R0b206IDFweCBzb2xpZCAkY29sb3JOZXV0cmFsTWQ7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAuNjI1cmVtO1xuICAgICAgICBjb2xvcjogJGNvbG9ySXRlbVBhbmVsVGl0bGU7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuXG4gICAgICAgIC5pdGVtLXRpdGxlIHtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICB9XG4gICAgICAgIC5saW5rLWNvbnRhaW5lciB7XG4gICAgICAgICAgICBmbG9hdDpyaWdodDtcblxuICAgICAgICAgICAgLmxpbmstaXRlbSB7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIDAuMzEyNXJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5saW5rLWFjdGl2ZSB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvckhpZ2hsaWdodDtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmxpbmstc2VwYXJhdG9yIHtcbiAgICAgICAgICAgIG1hcmdpbjogMCAwLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuaXRlbS10aXRsZSB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIGNvbG9yOiAkY29sb3JJdGVtUGFuZWxUaXRsZTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcbiAgICB9XG5cbiAgICB0YWJsZSB0ZCB7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICB9XG5cbiAgICB0ZC5sYWJlbCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OmJvbGQ7XG4gICAgICAgIGNvbG9yOiAkY29sb3JUaXRsZTtcbiAgICB9XG5cbiAgICAuaXRlbS1jb250ZW50IHtcbiAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICAuaXRlbS10aXRsZSB7XG4gICAgICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjYyNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgID4gZGl2IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgoMSk7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWFtYS1iZWFyKSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZmxleChub25lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWFtYS1iZWFyKSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmbGV4LWZsb3coY29sdW1uKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuaXRlbS1jb250ZW50LXRhYmxlIHtcbiAgICAgICAgQGluY2x1ZGUgZmxleCgxKTtcbiAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICBAaW5jbHVkZSBmbGV4LWZsb3coY29sdW1uKTtcblxuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICAvL3BhZGRpbmctbGVmdDogMC41cmVtO1xuICAgIH1cblxuICAgIC5hcHByZi1wYW5lbCB7XG4gICAgICAgIGhlaWdodDogMTlyZW07XG4gICAgfVxuXG4gICAgLml0ZW0tY29udGVudC1jaGFydCB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgoMSk7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgICAgIC5hcHByZi1oZWFkZXIge1xuICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgIG1hcmdpbjogMCAwLjcxNDNyZW07XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMS43NXJlbTtcblxuICAgICAgICAgICAgLml0ZW0tdGl0bGUge1xuICAgICAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuc2VnZ3ljIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwIDFweCAwIDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgLmFwcHJmLWZvb3RlciB7XG4gICAgICAgICAgICBtYXJnaW46IDAuNXJlbSAwLjg3NXJlbSAxLjVyZW07XG4gICAgICAgICAgICA+IHNwYW4ge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3JIaWdobGlnaHQ7XG4gICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgIH1cbiAgICAgICAgLnRhYmxlIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAgMC42MjVyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAubGluay1tb3JlIHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICB9XG5cbiAgICAucGFuZWwge1xuICAgICAgICBvdmVyZmxvdzogaW5oZXJpdDtcbiAgICB9XG59XG5cbi5vdmVydmlldy1jb250YWluZXIge1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gICAgXG4gICAgQGluY2x1ZGUgZmxleCgwIDAgYXV0byk7XG4gICAgYTpob3ZlciB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgLnBhbmVsIHtcbiAgICAgICAgYm9yZGVyOm5vbmU7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgfVxuXG4gICAgLnJvdyB7XG4gICAgICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1hbWEtYmVhcikge1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1mbG93KGNvbHVtbik7XG4gICAgICAgIH1cbiAgICB9XG4gICAgdGFibGUge1xuICAgICAgICBjb2xvcjogJGNvbG9yVGV4dDtcbiAgICB9XG4gICAgLmNsaWVudC1jaGFydHMge1xuICAgICAgICA+IGRpdjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICBmbGV4OiAyO1xuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYW1hLWJlYXIpIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBmbGV4KG5vbmUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgID4gZGl2Omxhc3QtY2hpbGQge1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobWFtYS1iZWFyKSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZmxleChub25lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm1vbml0b3JpbmctZGFzaGJvYXJkLWljb24ge1xuICAgIGhlaWdodDogMTRweDtcbiAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICAgIHdpZHRoOiAxOXB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuJGNvbG9ySW5hY3RpdmVBUDogI0Y0MzUzMDtcblxuLm92ZXJ2aWV3LW5ldHdvcmtzLWNvbnRhaW5lciB7XG4gICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgICBcbiAgICAucGFuZWwge1xuICAgICAgICBib3JkZXI6bm9uZTtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICB9XG5cbiAgICAudGFiLWNvbnRyb2wtY29udGFpbmVyIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDAuNjI1cmVtO1xuICAgIH1cblxuICAgIC5yb3cge1xuICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG5cbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChtYW1hLWJlYXIpIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgtZmxvdyhjb2x1bW4pO1xuICAgICAgICAgICAgaGVpZ2h0OiBhdXRvO1xuICAgICAgICB9XG4gICAgfVxuICAgIFxuICAgIHRhYmxlIHtcbiAgICAgICAgY29sb3I6ICRjb2xvclRleHQ7XG4gICAgICAgIC8vbWF4LWhlaWdodDogMjByZW07XG4gICAgICAgIEBpbmNsdWRlIGRldmljZShtb2JpbGUpIHtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDEwcmVtO1xuICAgICAgICB9XG4gICAgICAgIHRkIHtcbiAgICAgICAgICAgIGRpdi5nb29kIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzBEN0YyRTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRpdi5vayB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNmZjlhMWE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkaXYucG9vciB7XG4gICAgICAgICAgICAgICAgY29sb3I6ICNiYTBkMDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAudGFibGVfd3JhcHBlciB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICAgIC53aGl0ZSB7XG4gICAgICAgIGJvcmRlcjpub25lO1xuICAgIH1cbiAgICAuaW5hY3RpdmUtYXAge1xuICAgICAgICBjb2xvcjogJGNvbG9ySW5hY3RpdmVBUDtcbiAgICB9XG4gICAgLmluYWN0aXZlLW5ldHdvcmsge1xuICAgICAgICBjb2xvcjogJGNvbG9yTmV1dHJhbERrO1xuICAgIH1cblxuICAgICYuZXhwYW5kZWQge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgtZmxvdyhjb2x1bW4pO1xuXG4gICAgICAgID4gZGl2OmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgIH1cblxuICAgICAgICA+IGRpdjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5yYWRpby1jb250YWluZXIge1xuICAgIC5yYWRpby1yb3cge1xuICAgICAgICBkaXNwbGF5IDogaW5saW5lLWJsb2NrO1xuICAgIH1cbn1cblxuLm5ldHdvcmstaW5pdC13aXphcmQge1xuICAgIGhlaWdodDogMTAwJTtcbn1cblxuLm5ldHdvcmstaW5pdC1maW5pc2hlZC1kaWFsb2cge1xuICAgIC5vdmVybGF5LmxpZ2h0IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICB9XG4gICAgLm5ldHdvcmstaW5pdC1zdWNjZXNzLWNvbnRlbnQge1xuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgICAgICBcbiAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICBAaW5jbHVkZSBmbGV4LWZsb3coY29sdW1uKTtcblxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcblxuICAgICAgICBwIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgICB9XG4gICAgICAgXG4gICAgICAgIFxuICAgICAgICAubmV0d29yay1pbml0LWxvYWRpbmcsIC5uZXR3b3JrLWluaXQtbWVzc2FnZXtcbiAgICAgICAgICAgIHBhZGRpbmctdG9wOiAzMCU7XG4gICAgICAgIH0gICBcbiAgICAgICAgXG4gICAgICAgIC5mYS1mdyB7XG4gICAgICAgICAgICB3aWR0aDogMTZyZW07XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yTGluaztcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgICAgICAgICAgd2lkdGg6IDEwcmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5mYS1mdzpiZWZvcmUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNnJlbTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxMHJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5mYS1jaGVjayB7XG4gICAgICAgICAgICBjb2xvcjogIzAwQ0MwMDtcbiAgICAgICAgfVxuICAgICAgICAuZmEtY2hlY2s6YmVmb3JlIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogNXJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmhpZGUtbW9iaWxlIHtcbiAgICBAaW5jbHVkZSBkZXZpY2UobW9iaWxlKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi5sb2FkaW5nRGlhbG9nIHtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIFxuICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICBAaW5jbHVkZSBmbGV4LWZsb3coY29sdW1uKTtcblxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cbiAgICBwIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjVyZW07XG4gICAgfVxuICAgXG4gICAgXG4gICAgLmxvYWRpbmcsIC5tZXNzYWdle1xuICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgfSAgIFxuICAgIFxuICAgIC5mYS1mdyB7XG4gICAgICAgIHdpZHRoOiA4cmVtO1xuICAgICAgICBjb2xvcjogJGNvbG9yTGluaztcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMHJlbTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuZmEtZnc6YmVmb3JlIHtcbiAgICAgICAgZm9udC1zaXplOiA2cmVtO1xuICAgICAgICAvLyBAaW5jbHVkZSBicmVha3BvaW50KGJhYnktYmVhcikge1xuICAgICAgICAvLyAgICAgZm9udC1zaXplOiAxMHJlbTtcbiAgICAgICAgLy8gfVxuICAgIH1cblxuICAgIC5mYS1jaGVjayB7XG4gICAgICAgIGNvbG9yOiAjMDBDQzAwO1xuICAgIH1cbiAgICAuZmEtY2hlY2s6YmVmb3JlIHtcbiAgICAgICAgZm9udC1zaXplOiA1cmVtO1xuICAgIH1cbn1cblxuLmNvbmZpZ3VyYXRpb24tY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgQGluY2x1ZGUgZmxleC1mbG93KGNvbHVtbik7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBmbGV4OiAxO1xuICAgIFxuICAgIC5jb25maWctdGl0bGUge1xuICAgICAgICBoZWlnaHQ6IDJyZW07XG4gICAgfVxuICAgIC5jb25maWctY3VycmVudCB7XG4gICAgICAgIGhlaWdodDogMS41cmVtO1xuICAgIH1cbiAgICAuY29uZmlnLWNvbnRlbnQge1xuICAgICAgICAvL2hlaWdodDogMTByZW07XG4gICAgICAgIGZsZXg6MTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gICAgICAgIHBhZGRpbmctdG9wOiAwLjVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlZmVmZWY7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgICAgIGZvbnQtZmFtaWx5OiBWZXJkYW5hLCBTaW1TdW47XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgIEBpbmNsdWRlIHVzZXItc2VsZWN0KHRleHQpO1xuICAgIH1cbiAgICAuY29uZmlnLWNoZWNrYm94IHtcbiAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgZmxvYXQ6bm9uZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuY29uZmlnLWZvb3RlciB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgbWluLXdpZHRoOiAxMnJlbTtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC42MjVyZW07XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuLyogRkxBU0hJTkcgKi9cbkAtd2Via2l0LWtleWZyYW1lcyBmYWRlSW4ge1xuICAgIDAlIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG5cbiAgICAxMDAlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG59XG5cbkBrZXlmcmFtZXMgZmFkZUluIHtcbiAgICAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuXG4gICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG4uZmFhLWZhZGVJbi5hbmltYXRlZCB7XG4gICAgLXdlYmtpdC1hbmltYXRpb246IGZhZGVJbiAycyBlYXNlO1xuICAgIGFuaW1hdGlvbjogZmFkZUluIDJzIGVhc2U7XG59XG5cbi5wYWdlLWxvYWRpbmcge1xuICAgIC5vdmVybGF5LmxpZ2h0IHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjUpO1xuICAgIH1cblxuICAgIC5mYS1mdyB7XG4gICAgICAgIHdpZHRoOiAxMHJlbTtcbiAgICAgICAgY29sb3I6ICRjb2xvckxpbms7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgICAgICB3aWR0aDogNnJlbTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuZmEtZnc6YmVmb3JlIHtcbiAgICAgICAgZm9udC1zaXplOiAxMHJlbTtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogNnJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuXG4kdG9vbHRpcEJvcmRlclJhZGl1czowLjMxMjVyZW07XG4kdG9vbHRpcEJveFNoYWRvd0NvbG9yOiByZ2JhKDAsMCwwLDAuMTUpO1xuJHRvb2x0aXBCb3hTaGFkb3c6MCAwLjE4NzVyZW0gMC43NXJlbSAkdG9vbHRpcEJveFNoYWRvd0NvbG9yO1xuJHRvb2x0aXBCb3JkZXI6MXB4IHNvbGlkIHJnYmEoMCwwLDAsMC4xNSk7XG5cbi5hcnJvdy11cCB7XG4gICAgJjpiZWZvcmUge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBib3JkZXI6IDAuNXJlbSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHRvb2x0aXBCb3hTaGFkb3dDb2xvcjtcbiAgICB9XG4gICAgJjphZnRlciB7XG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgICAgIGJvcmRlcjogMC41cmVtIHNvbGlkIHRyYW5zcGFyZW50O1xuICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjZmZmO1xuICAgIH1cbn1cblxuLmFycm93LWRvd24ge1xuICAgICY6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCJcIjtcbiAgICAgICAgYm9yZGVyOiAwLjVyZW0gc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci10b3AtY29sb3I6ICR0b29sdGlwQm94U2hhZG93Q29sb3I7XG4gICAgfVxuICAgICY6YWZ0ZXIge1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgICBib3JkZXI6IDAuNXJlbSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogI2ZmZjtcbiAgICB9XG59XG5cbi8qKioqKiogaGVscCAqKioqKiovXG4vLyAuaGVscC1tZW51LWljb24ge1xuLy8gICAgIC8vaGVpZ2h0OiAzcmVtO1xuLy8gICAgIG1hcmdpbjogMCAwIDAgMC41cmVtO1xuLy8gICAgIGNvbG9yOiAjQzNDNUM4O1xuLy8gfVxuXG4uaGVscC1tZW51LWljb24ge1xuICAgIGNvbG9yOiAkY29sb3JMaW5rO1xufVxuXG4uaGVscC1tZW51LWljb246aG92ZXIsIC5oZWxwLW1lbnUtaWNvbi5jdXJyZW50IHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5oZWxwLWFkdmljZS1jb250YWluZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNGRkY7XG4gICAgcGFkZGluZzogMC4yNXJlbSAwLjYyNXJlbTtcbiAgICBib3JkZXItcmFkaXVzOiAkdG9vbHRpcEJvcmRlclJhZGl1cztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgei1pbmRleDogMTAwMTtcbiAgICByaWdodDogMS42MjVyZW07XG4gICAgdG9wOiAzLjU2MjVyZW07XG4gICAgYm94LXNoYWRvdzogJHRvb2x0aXBCb3hTaGFkb3c7XG4gICAgYm9yZGVyOiAkdG9vbHRpcEJvcmRlcjtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuXG4gICAgLmhlbHAtbW9kZSB7XG4gICAgICAgIG1hcmdpbjogMCAwLjYyNXJlbTtcbiAgICB9XG5cbiAgICAuaGVscC1hZHZpY2UtY29udGVudCB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAycmVtO1xuICAgICAgICBjb2xvcjogIzMzMztcblxuICAgICAgICAuaGVscC1hZHZpY2UtZG9uZSB7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yTGluaztcbiAgICAgICAgfVxuICAgIH0gICAgXG59XG5cbi5oZWxwLWFkdmljZS1hcnJvdyB7XG5cbn1cblxuLmhlbHAtYWR2aWNlLWFycm93OmJlZm9yZSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHJpZ2h0OiAzLjZyZW07XG4gICAgbWFyZ2luLXRvcDogLTEuM3JlbTtcbn1cblxuLmhlbHAtYWR2aWNlLWFycm93OmFmdGVyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDMuNnJlbTtcbiAgICBtYXJnaW4tdG9wOiAtMS4yMnJlbTtcbn1cblxuLmhlbHAtdG9vbHRpcC1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3JkZXItcmFkaXVzOiAkdG9vbHRpcEJvcmRlclJhZGl1cztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmRmZGRhO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgbWF4LXdpZHRoOiAyNXJlbTtcbiAgICBib3gtc2hhZG93OiAwIC0wLjE4NzVyZW0gMC43NXJlbSByZ2JhKDAsMCwwLDAuMTUpO1xuICAgIGJvcmRlcjogJHRvb2x0aXBCb3JkZXI7XG4gICAgei1pbmRleDogMTAwMDU7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KG1hbWEtYmVhcikge1xuICAgICAgICBtYXgtd2lkdGg6IDE4Ljc1cmVtO1xuICAgIH1cblxuICAgIC5oZWxwLXRvb2x0aXAtY29udGVudHtcbiAgICAgICAgbWFyZ2luOiAwLjVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgfVxufVxuXG4uaGVscC10b29sdGlwLWFycm93OmJlZm9yZXtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAtMXJlbTtcbiAgICBsZWZ0OiAwLjYyNXJlbTtcbn1cblxuLmhlbHAtdG9vbHRpcC1hcnJvdzphZnRlcntcbiAgICBib3JkZXItdG9wLWNvbG9yOiAjZmRmZGRhO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IC0wLjlyZW07XG4gICAgbGVmdDogMC42MjVyZW07XG59XG4vKioqKioqIGhlbHAgKioqKioqL1xuXG4ubXVsdGlwbGUtc2VsZWN0b3Ige1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBcbiAgICBAaW5jbHVkZSBkZXZpY2UobW9iaWxlKSB7XG4gICAgICAgIG1hcmdpbjogMHJlbTtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xuICAgIH1cblxuICAgIC5sYWJsZVJvdyB7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAgICAgcGFkZGluZzogMC42MjVyZW0gMi41cmVtIDAuNjI1cmVtIDAuNjI1cmVtO1xuICAgICAgICBmb250LWZhbWlseTogJ29wZW5zYW5zJywgaGVsdmV0aWNhLCBhcmlhbCwgc2Fucy1zZXJpZjtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgY29sb3I6ICRjb2xvckhpZ2hsaWdodDtcbiAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogdXJsKCcuLi8uLi9pbWFnZXMvc2VsZWN0X2Fycm93XzJ4LnBuZycpICNmZmYgbm8tcmVwZWF0IHJpZ2h0IGNlbnRlcjtcbiAgICAgICAgYmFja2dyb3VuZC1zaXplOiAzOHB4IDM4cHg7XG4gICAgICAgIEBpbmNsdWRlIGFwcGVhcmFuY2Uobm9uZSk7XG4gICAgICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoNHB4KTtcbiAgICAgICAgQGluY2x1ZGUgYm94LXNoYWRvdygwIDAgMCAwICRjb2xvckRpdmlkZXIgaW5zZXQsIDAgMXB4IDAgJGNvbG9yRGl2aWRlcik7XG4gICAgICAgIEBpbmNsdWRlIGJveC1zaXppbmcoYm9yZGVyLWJveCk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIH1cbiAgICAuc2VsZWN0LWxhYmxlIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgd2lkdGg6IDEwcmVtO1xuICAgICAgICBtYXJnaW4tdG9wOjAuMjVyZW07XG4gICAgfVxuICAgIC5jb21wb25lbnQge1xuICAgICAgICBAaW5jbHVkZSBkZXZpY2UobW9iaWxlKSB7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOiAtMC4yNXJlbTtcbiAgICAgICAgfVxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHotaW5kZXg6IDEwMDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvck5ldXRyYWxNZDtcbiAgICB9XG4gICAgLnNlYXJjaC1pbnB1dCB7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgd2lkdGg6IDIxcmVtO1xuICAgIH1cbiAgICAuY2hlY2stYWxsIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDJyZW07XG4gICAgICAgIHBhZGRpbmctbGVmdDogMC41cmVtO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuICAgIC5zd2l0Y2gtbXVsdGlwbGUge1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuZHJvcC1kb3duLWxpc3Qge1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgIGhlaWdodDogMjNyZW07XG4gICAgICAgIHdpZHRoOiAyMXJlbTtcbiAgICAgICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICAgICAgICBib3JkZXItdG9wOiBzb2xpZCAxcHggJGNvbG9yTmV1dHJhbE1kO1xuICAgICAgICBib3JkZXItYm90dG9tOiBzb2xpZCAxcHggJGNvbG9yTmV1dHJhbE1kO1xuXG4gICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgfVxuICAgICAgICBkaXYge1xuICAgICAgICAgICAgaGVpZ2h0OiAycmVtO1xuICAgICAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yTmV1dHJhbE1kXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGRldmljZShtb2JpbGUpIHtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDMuNXJlbTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGFiZWwge1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGRldmljZShtb2JpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDE2cmVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBkaXYgbGFiZWwuc2luZ2FsTGFiZWwge1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMnJlbTtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMC41cmVtO1xuICAgICAgICB9XG4gICAgfVxuXG59XG5cbi5zZWFyY2gge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAvL3dpZHRoOiAzMTBweDtcbiAgICAvL2NvbG9yOiAjYzRjNGM0O1xuICAgIG1hcmdpbi10b3A6IDNweDtcblxuICAgIC5zZWFyY2gtaWNvbiB7XG4gICAgICAgIGNvbG9yOiAkY29sb3JMaW5rO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRyYW5zaXRpb246IDAuNXM7XG4gICAgfVxuICAgIC5zZWFyY2gtaWNvbi1yZW1vdmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHJpZ2h0OiAwLjM3NXJlbTtcbiAgICAgICAgdG9wOiAwLjM3NXJlbTtcbiAgICB9XG4gICAgLnNlYXJjaC1pbnB1dCB7XG4gICAgICAgIGJvcmRlcjogJHRvb2x0aXBCb3JkZXI7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICR0b29sdGlwQm9yZGVyUmFkaXVzO1xuICAgICAgICBoZWlnaHQ6IDEuNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwLjI1cmVtIDAuMjVyZW0gMS44NzVyZW07XG4gICAgICAgIHdpZHRoOiAxN3JlbTtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgICAgIHdpZHRoOiA3cmVtO1xuICAgICAgICB9O1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBjb2xvcjogJGNvbG9yU2VhcmNoVGV4dDtcbiAgICAgICAgdHJhbnNpdGlvbjogMC41cztcbiAgICB9XG4gICAgLnNlYXJjaC1pbnB1dC5zZWFyY2gtaW5wdXQtaGlkZSB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIH1cbiAgICAuc2VhcmNoLXJlc3VsdCB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcblxuICAgICAgICBib3JkZXItcmFkaXVzOiAkdG9vbHRpcEJvcmRlclJhZGl1cztcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRjtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgYm94LXNoYWRvdzogJHRvb2x0aXBCb3hTaGFkb3c7XG4gICAgICAgIGJvcmRlcjogJHRvb2x0aXBCb3JkZXI7XG5cbiAgICAgICAgdG9wOiAyLjVyZW07XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgICAgICBsZWZ0OiAtNHJlbTtcbiAgICAgICAgfTtcblxuICAgICAgICB6LWluZGV4OiAxMDA2O1xuXG4gICAgICAgIC5zZWFyY2gtcmVzdWx0LWFycm93OmJlZm9yZXtcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogLTFyZW07XG4gICAgICAgICAgICBsZWZ0OiAxLjVyZW07XG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJhYnktYmVhcikge1xuICAgICAgICAgICAgICAgIGxlZnQ6IDUuNXJlbTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICAuc2VhcmNoLXJlc3VsdC1hcnJvdzphZnRlcntcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgIHRvcDogLTAuOXJlbTtcbiAgICAgICAgICAgIGxlZnQ6IDEuNXJlbTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgICAgICAgICAgbGVmdDogNS41cmVtO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICAuc2VhcmNoLXJlc3VsdC1pdGVtcyB7XG4gICAgICAgICAgICBtaW4td2lkdGg6IDE5LjI1cmVtO1xuICAgICAgICAgICAgbWF4LXdpZHRoOiAxOS4yNXJlbTtcbiAgICAgICAgICAgIG1heC1oZWlnaHQ6IDI1cmVtO1xuXG4gICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuXG4gICAgICAgICAgICAuc2VhcmNoLW5vLXJlc3VsdHMge1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAuc2VhcmNoLXJlc3VsdC1pdGVtIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwO1xuXG4gICAgICAgICAgICAgICAgLml0ZW0tdGl0bGUge1xuICAgICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwIDAuNXJlbTtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvclNlYXJjaFJlc3VsdFRleHQ7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkY29sb3JTZWFyY2hSZXN1bHRUZXh0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAuc2VhcmNoLXJlc3VsdC1pdGVtLWJvZHkge1xuICAgICAgICAgICAgICAgICAgICBtYXgtaGVpZ2h0OiA3LjVyZW07XG4gICAgICAgICAgICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgICAgICAgICAgICAgIC5kYXRhLWl0ZW0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICRjb2xvclNlYXJjaFJlc3VsdFRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbSAxcmVtO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JIaWdobGlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3JTZWFyY2hSZXN1bHRUZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgLmhpZ2hsaWdodCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9jb2xvcjogI2MwMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgJi5zZWxlY3RlZCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9ySG92ZXI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6ICNmZmY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYTpob3ZlciB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAjZmZmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm92ZXJsYXkgLm1lc3NhZ2Uge1xuICAgIGJvcmRlci1yYWRpdXM6ICR0b29sdGlwQm9yZGVyUmFkaXVzO1xuICAgIGJveC1zaGFkb3c6ICR0b29sdGlwQm94U2hhZG93O1xuICAgIC8vYm9yZGVyOiAkdG9vbHRpcEJvcmRlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JDb250YWluZXJCYWNrZ3JvdW5kO1xuXG4gICAgJi5yZWxvYWRpbmcge1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgdG9wOiAzMCU7XG5cbiAgICAgICAgLmRpYWxvZy1jb250ZW50IHAge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAmLnRhYi1sb2FkaW5nIHtcbiAgICAgICAgICAgIC5mYS1zcGlubmVyIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogI2UzZTNlMztcbiAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogNnJlbTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZGlhbG9nLXRpdGxlIHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBjb2xvcjogIzY0NjU2OTtcbiAgICAgICAgaGVpZ2h0OiAycmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMnJlbTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yRGlhbG9nVGl0bGVCYWNrZ3JvdW5kO1xuICAgIH1cbiAgICAuZGlhbG9nLWNvbnRlbnQge1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG5cbiAgICAgICAgcCB7XG4gICAgICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjVyZW07XG4gICAgICAgICAgICBmb250LXdlaWdodDogbm9ybWFsO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuNjI1cmVtO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5kaWFsb2ctYWN0aW9uIHtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgLy9iYWNrZ3JvdW5kLWNvbG9yOiRjb2xvckRpYWxvZ1RpdGxlQmFja2dyb3VuZDtcblxuICAgICAgICA+YnV0dG9uOm50aC1jaGlsZCgxKSB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmZpcm13YXJlIHtcbiAgICAmLm1lc3NhZ2Uge1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgICAuZGlhbG9nLWNvbnRlbnQge1xuICAgICAgICAgICAgcCB7XG4gICAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufSBcblxuLnNlY3Rpb24ge1xuICAgIG1hcmdpbi10b3A6IDAuNXJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxcmVtO1xuICAgIC8vIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgLy8gICAgIHBhZGRpbmctbGVmdDogMS4zMTI1cmVtO1xuICAgIC8vIH07XG4gICAgLnNlY3Rpb24taGVhZGVyIHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMC41cmVtO1xuXG4gICAgICAgID4gbGFiZWwge1xuICAgICAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICAgICAgLy9mb250LXNpemU6IDAuOTI1cmVtO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnVuY29sbGFwc2lhYmxlIHtcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xuICAgICAgICA+IGxhYmVsIHtcbiAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgfVxuICAgICAgICAuc2VjdGlvbi1pY29uIHtcbiAgICAgICAgICAgIHZpc2liaWxpdHk6aGlkZGVuO1xuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjJyZW07XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnNlY3Rpb24tY29udGVudCB7XG4gICAgICAgIC8vIHBhZGRpbmctdG9wOiAwLjVyZW07XG4gICAgICAgIHBhZGRpbmctbGVmdDogMS4xMjVyZW07XG4gICAgICAgIGNsZWFyOiBib3RoO1xuXG4gICAgICAgID4ucm93LnRhYmxlLXJvdyB7XG4gICAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcblxuICAgICAgICAgICAgZGl2LmZvcm0tZmllbGQ6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIGZsZXg6IDEgMSAxMHJlbTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGRpdi5mb3JtLWZpZWxkOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIGZsZXg6IDEwIDEwIDUwcmVtO1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAuc2VjdGlvbi1jb250ZW50LWhpZGUge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbiAgICAuc2VjdGlvbi1sYWJlbC1leHBhbmQge1xuICAgICAgICAvL2ZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgICAuc2VjdGlvbi1pY29uIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjM3NXJlbTtcbiAgICAgICAgY29sb3I6ICRjb2xvckxpbms7XG4gICAgICAgICY6YmVmb3Jle1xuICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8qIC5zZWN0aW9uLXNwbGl0ZXIge1xuICAgICAgICBtYXJnaW46IDAuNXJlbTtcbiAgICAgICAgd2lkdGg6IDUwJTtcbiAgICAgICAgLy9ib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgICAvL2JvcmRlci13aWR0aDogMXB4IDAgMCAwO1xuICAgICAgICAvL2JvcmRlci1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxcHg7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB9ICovXG59XG5cbi51cGxpbmstcHJpb3JpdHktdGFibGUge1xuICAgIHdpZHRoOiAyNXJlbTtcblxuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgIHdpZHRoOiAxNHJlbTtcbiAgICB9O1xuXG59XG5cbi50YWJsZS1hY3Rpb25zLWJhci1jb250YWluZXIge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvckRpdmlkZXI7XG4gICAgYm9yZGVyLXRvcDogbm9uZTtcbiAgICBwYWRkaW5nOiAwLjVyZW07XG5cbiAgICAudGFibGUtYWN0aW9ucy1iYXItYWN0aW9uIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbiAgICAgICAgY29sb3I6ICMwMmE3ZWM7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG5cbiAgICAuZGlzYWJsZSB7XG4gICAgICAgIGNvbG9yOiAjYzRjNGM0O1xuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgfVxufVxuXG4udXNlci1tZW51LWFycm93IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDEuNnJlbTtcblxuICAgICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICAgICAgcG9zaXRpb246YWJzb2x1dGU7XG4gICAgfVxuICAgICY6YmVmb3JlIHtcbiAgICAgICAgdG9wOiAtMXJlbTtcbiAgICB9XG4gICAgJjphZnRlciB7XG4gICAgICAgIHRvcDogLTAuOTM3NXJlbTtcbiAgICB9XG5cbn1cbi51cGxvYWQtZmlsZS1kaXYge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgICAgXG59XG5cbi51cGxvYWQtZmlsZSB7XG4gICAgei1pbmRleDogMjAwO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHdpZHRoOiAzMHJlbTtcbiAgICBoZWlnaHQ6IDIuNXJlbTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgbGVmdDogMDtcbn1cblxuLmZvcm0tZmllbGQgLnVwbG9hZC1pbnB1dCB7XG4gICAgd2lkdGg6IDMwcmVtO1xuICAgIGhlaWdodDogMi41cmVtO1xufVxuXG4udXBsb2FkLWlmcmFtZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuaW5wdXRbdHlwZT10ZXh0XS5pbnB1dC5maWxlcm93LWlucHV0IHtcbiAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMHB4O1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwcHg7XG4gICAgYm9yZGVyLXJpZ2h0OiBub25lO1xuICAgIGhlaWdodDogMi41cmVtO1xuICAgIHdpZHRoOiAyMHJlbTtcbiAgICBmbG9hdDogbGVmdDtcbn1cbi5maWxlcm93LWJ1dHRvbiB7XG4gICAgaGVpZ2h0OiAyLjVyZW07XG4gICAgcGFkZGluZzogMHJlbSAxcmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtM3B4O1xuICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDBweDtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwcHg7XG4gICAgZmxvYXQ6IGxlZnQ7XG59XG5cbi50YWJsZS1hY3Rpb24taWNvbiB7XG4gICAgLy9jdXJzb3I6IHBvaW50ZXI7XG4gICAgbWFyZ2luOiAwIDFyZW0gMCAwO1xuICAgIGNvbG9yOiAkY29sb3JOZXV0cmFsRGs7XG59XG5cbi50YWJsZS1hY3Rpb24taWNvbi5lbmFibGUge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBjb2xvcjogJGNvbG9yTGluaztcbn1cblxuLmZvcm0tZmllbGQtbGFiZWwge1xuICAgIGxpbmUtaGVpZ2h0OiAycmVtO1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbjogMCAwLjYyNXJlbTtcbiAgICBtYXgtd2lkdGg6IDIwcmVtO1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbn1cblxuLmZvcm0tZmllbGQtYnV0dG9uIHtcbiAgICBsaW5lLWhlaWdodDogMnJlbTtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5mb3JtLWZpZWxkLWJ1dHRvbi5zZWN0aW9uLWljb24ge1xuICAgIG1hcmdpbi1yaWdodDogMHJlbTtcbn1cblxuLm92ZXJsYXkge1xuICAgIC5kaWFsb2cge1xuICAgICAgICB0b3A6IDEwJTtcbiAgICAgICAgLy9tYXgtd2lkdGg6IDYwJTtcbiAgICAgICAgLy9tYXgtaGVpZ2h0OiA4MCU7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEwJTtcbiAgICB9XG5cbiAgICAuZGlhbG9nLWNvbnRlbnQge1xuICAgICAgICBvdmVyZmxvdzogYXV0bztcbiAgICAgICAgbWF4LWhlaWdodDogMzByZW07XG4gICAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC1oZWlnaHQ6IDYwMHB4KSB7XG4gICAgICAgICAgICBtYXgtaGVpZ2h0OiAyNHJlbTtcbiAgICAgICAgfVxuICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtaGVpZ2h0OiA0MDBweCkge1xuICAgICAgICAgICAgbWF4LWhlaWdodDogMTJyZW07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5tdWx0aXBsZS1jaGVja2JveCB7XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgIEBpbmNsdWRlIGZsZXgtd3JhcCh3cmFwKTtcbiAgICBAaW5jbHVkZSBqdXN0aWZ5LWNvbnRlbnQoZmxleC1zdGFydCk7XG4gICAgQGluY2x1ZGUgYWxpZ24tY29udGVudChzcGFjZS1iZXR3ZWVuKTtcbiAgICBtYXgtd2lkdGg6IDQwcmVtO1xuXG4gICAgLmNoZWNrYm94LWZpZWxkIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xuICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgICAgIHdpZHRoOiA1cmVtO1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KG1hbWEtYmVhcikge1xuICAgICAgICAgICAgd2lkdGg6IDdyZW07XG4gICAgICAgIH07XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgICAgICB3aWR0aDogNnJlbTtcbiAgICAgICAgfTtcbiAgICB9XG59XG5cbi5jaGVja2JveC1maWVsZCB7XG4gICAgJi5kaXNhYmxlIHtcbiAgICAgICAgY29sb3I6ICRjb2xvck5ldXRyYWxEa1xuICAgIH1cbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDAuNjI1cmVtO1xufVxuXG4udHJhZmZpYy1iYXIge1xuICAgIC50b3RhbCB7XG4gICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuOHJlbTtcbiAgICAgICAgd2lkdGg6IDYwJTtcbiAgICAgICAgPiBzcGFuIHtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMC41cmVtO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5wZXIge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzg5QTU0RTtcbiAgICB9XG4gICAgLnRleHQge1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgfVxufVxuLmFwcHJmLXRhYmxlLWNhdGVnb3J5IHtcbiAgICB3aWR0aDogMzAlO1xufVxuXG4ud2FybmluZy1tZXNzYWdlIHtcbiAgICBjb2xvcjogJGNvbG9yQWxlcnQ7XG4gICAgbWFyZ2luOiAwLjVyZW0gMDtcbiAgICA+IHNwYW4ge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDAuNXJlbTtcbiAgICB9XG4gICAgLmZhczpiZWZvcmUsLmZhcjpiZWZvcmUge1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgfVxufVxuXG4uaW5mby1wYW5lbCB7XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgIEBpbmNsdWRlIGZsZXgtd3JhcCh3cmFwKTtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGJhYnktYmVhcikge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9O1xuICAgIFxuXG4gICAgLmluZm8taXRlbSB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgoMSAxIDUwJSk7XG4gICAgICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICAgICAgQGluY2x1ZGUganVzdGlmeS1jb250ZW50KGZsZXgtc3RhcnQpO1xuXG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkY29sb3JOZXV0cmFsTWQ7XG5cbiAgICAgICAgLmluZm8tbGFiZWwge1xuICAgICAgICAgICAgLy9AaW5jbHVkZSBmbGV4KDEpO1xuICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICBjb2xvcjogIzY0NjU2OTtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgfVxuICAgICAgICAuaW5mby12YWx1ZSB7XG4gICAgICAgICAgICBAaW5jbHVkZSBmbGV4KDEpO1xuICAgICAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5pbmZvLWl0ZW0uaGlkZSB7XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICB9O1xuICAgIH1cbiAgICAuaW5mby1jb250cm9sIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxcmVtO1xuICAgICAgICBjb2xvcjogJGNvbG9ySGlnaGxpZ2h0O1xuICAgICAgICBcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9O1xuICAgICAgICAuY29udHJvbC10ZXh0IHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDAuNXJlbTtcbiAgICAgICAgfVxuICAgICAgICAuY29udHJvbC1pY29uIHtcbiAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDAuODI1cmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4ubmV0d29ya3MtaW5mbyB7XG4gICAgLmluZm8taXRlbSB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgoMSAxIDMzLjMlKTtcbiAgICB9XG59XG5cbi5yb3ctcGlja2VyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgICBtYXJnaW4tdG9wOiAxcHg7XG4gICAgYmFja2dyb3VuZDogd2hpdGU7XG4gICAgei1pbmRleDogOTk5OTtcbiAgICAvL3BhZGRpbmc6IDAuMjVyZW07XG4gICAgbWF4LXdpZHRoOiAzMnJlbTtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGJhYnktYmVhcikge1xuICAgICAgICBtYXgtd2lkdGg6IDIxcmVtO1xuICAgIH07XG5cbiAgICAuZGlhbG9nLXRpdGxlIHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgICAgcGFkZGluZzogMC41cmVtO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBjb2xvcjogIzY0NjU2OTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yRGlhbG9nVGl0bGVCYWNrZ3JvdW5kO1xuICAgIH1cbiAgICAucGFuZWwtY29udGVudCB7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICB9XG5cbiAgICAucGlja2VyLWFjdGlvbiB7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbTtcbiAgICAgICAgLy9iYWNrZ3JvdW5kLWNvbG9yOiRjb2xvckRpYWxvZ1RpdGxlQmFja2dyb3VuZDtcblxuICAgICAgICA+YnV0dG9uOm50aC1jaGlsZCgxKSB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgID4gYnV0dG9uIHtcbiAgICAgICAgICAgIHBhZGRpbmc6IDAuM3JlbSAwLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuZm9ybS1maWVsZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgIH1cbiAgICAucm93IHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDByZW07XG4gICAgfVxuICAgIFxuICAgIGEuZGlhbG9nLWNsb3NlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgdG9wOiAzJTtcbiAgICAgICAgcmlnaHQ6IDIlO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxufVxuXG4uY2xpZW50LW1hdGNoLWFwIHtcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIC5jaGFydC1wYW5lbCB7XG4gICAgICAgIGZsZXg6IDM7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBoZWlnaHQ6IDI1cmVtO1xuICAgIH1cbiAgICAuZGV0YWlsLXBhbmVsIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgZmxleDogMjtcbiAgICAgICAgdGFibGUge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC44cmVtO1xuICAgICAgICB9XG4gICAgICAgIC5pdGVtLXRpdGxlIHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICB9XG4gICAgfVxuICAgIC5pbmZvLXBhbmVsIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMC44cmVtO1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG4gICAgLnNlZ2d5YyB7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcmlnaHQ6IDAuNXJlbTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBtYXJnaW46IDEuMnJlbSAwLjYyNXJlbSAxLjJyZW0gMDtcbiAgICB9XG59XG5cbi5jbGllbnQtbWF0Y2gtY2xpZW50ICB7XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH07XG4gICAgLy93aWR0aDogMTAwJTtcblxuICAgIC5jaGFydC1wYW5lbCB7XG4gICAgICAgIGZsZXg6IDM7XG4gICAgfVxuICAgIC5kZXRhaWwtcGFuZWwge1xuICAgICAgICBmbGV4OiAyO1xuICAgICAgICB0YWJsZSB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjhyZW07XG4gICAgICAgIH1cbiAgICAgICAgLml0ZW0tdGl0bGUge1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IDA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmluZm8tcGFuZWwge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjhyZW07XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbn1cblxuLnN1cHBvcnQucGFuZWwge1xuICAgIGZsZXg6IDE7XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgIEBpbmNsdWRlIGZsZXgtZmxvdyhjb2x1bW4pO1xuXG4gICAgLnN1cHBvcnQtc2VsZWN0IHtcbiAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICBAaW5jbHVkZSBqdXN0aWZ5LWNvbnRlbnQoc3BhY2UtYXJvdW5kKTtcbiAgICAgICAgQGluY2x1ZGUgZmxleC13cmFwKHdyYXApO1xuICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcblxuICAgICAgICAuc2VsZWN0IHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMC41cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgLmVuYWJsZS1jb2xvciB7XG4gICAgICAgICAgICBjb2xvcjogIzAwZmY3ZlxuICAgICAgICB9XG5cbiAgICAgICAgLnNtYWxsLWhpZGUge1xuICAgICAgICAgICAgQGluY2x1ZGUgZGV2aWNlKG1vYmlsZSkge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgQGluY2x1ZGUgZGV2aWNlKG1vYmlsZSkge1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleC1kaXJlY3Rpb24oY29sdW1uKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIGFsaWduLWl0ZW1zKGZsZXgtc3RhcnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgYnV0dG9uIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwLjI1cmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgPiBkaXYge1xuICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDAuMjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAubXVsdGlwbGUtc2VsZWN0b3Ige1xuICAgICAgICAgICAgZmxleDogMTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5zdXBwb3J0LXJlc3VsdC1oZWFkIHtcbiAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICBAaW5jbHVkZSBqdXN0aWZ5LWNvbnRlbnQoZmxleC1zdGFydCk7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgtd3JhcCh3cmFwKTtcbiAgICAgICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICAgICAgbWF4LWhlaWdodDogNHJlbTtcbiAgICAgICAgbWFyZ2luLXRvcDogMC42MjVyZW07XG5cbiAgICAgICAgZGl2IHtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvck5ldXRyYWxNZDtcbiAgICAgICAgICAgIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDAuNXJlbTtcbiAgICAgICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjVyZW07XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvckRpYWxvZ1RpdGxlQmFja2dyb3VuZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGRpdi5zZWxlY3RlZCB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9yTGluaztcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnN1cHBvcnQtcmVzdWx0LWNvbnRlbnQge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4taGVpZ2h0OiAxMHJlbTtcbiAgICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvck5ldXRyYWxNZDtcbiAgICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTtcbiAgICAgICAgQGluY2x1ZGUgdXNlci1zZWxlY3QodGV4dCk7XG4gICAgICAgIHByZSB7XG4gICAgICAgICAgICAvLyBmb3IgZmxleGJveCBpc3N1ZSBvZiBFZGdlIFxuICAgICAgICAgICAgbWF4LXdpZHRoOiAwO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uY29uZmlnLWFjY2Vzcy1wb2ludHMge1xuICAgIHRhYmxlIHRkIHtcbiAgICAgICAgLy9wYWRkaW5nOiAwLjJyZW0gMC41cmVtO1xuICAgIH1cbiAgICAudW5hdXRoZWQtYXAtbGlzdCB0YWJsZXtcbiAgICAgICAgLy9jb2xvcjogI0Y0MzUzMDtcbiAgICB9XG4gICAgLml0ZW0tdGl0bGUge1xuICAgICAgICBtYXJnaW4tdG9wOiAxLjVyZW07XG4gICAgfVxuICAgIC5pbmFjdGl2ZS1hcCB7XG4gICAgICAgIGNvbG9yOiAkY29sb3JJbmFjdGl2ZUFQO1xuICAgIH1cbiAgICAuYXBzLW5hbWUtbWFzdGVyIHtcbiAgICAgICAgbWF4LXdpZHRoOiA5NSU7XG4gICAgfVxufVxuXG4ubm90aWZpY2F0aW9uIHtcbiAgICAudWktYmFkZ2Uge1xuICAgICAgICBtYXJnaW4tdG9wOiAtMC4ycmVtO1xuICAgICAgICBsZWZ0OiAwLjdyZW07XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB9XG59XG5cbi5ub3RpZmljYXRpb24taWNvbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIC8vY29sb3I6ICNDM0M1Qzg7XG4gICAgLy9tYXJnaW4tbGVmdDogMC42MjVyZW07XG4gICAgLy9tYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbiAgICBjb2xvcjogJGNvbG9yTGluaztcbn1cblxuLm5vdGlmaWNhdGlvbi1pY29uLmFjdGl2ZSwgLm5vdGlmaWNhdGlvbi1pY29uOmhvdmVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgY29sb3I6ICRjb2xvckhpZ2hsaWdodDtcbn1cbi5ub3RpZmljYXRpb24tY29udGVudCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICBib3JkZXItcmFkaXVzOiAkdG9vbHRpcEJvcmRlclJhZGl1cztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgYm94LXNoYWRvdzogJHRvb2x0aXBCb3hTaGFkb3c7XG4gICAgYm9yZGVyOiAkdG9vbHRpcEJvcmRlcjtcblxuICAgIHRvcDogMy41cmVtO1xuICAgIHJpZ2h0OiAyLjg3NXJlbTtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGJhYnktYmVhcikge1xuICAgICAgICAvL2xlZnQ6IC00cmVtO1xuICAgIH07XG4gICAgbWluLXdpZHRoOiAxMHJlbTtcblxuICAgIHotaW5kZXg6IDEwMDY7XG5cbiAgICAmLmFjdGl2ZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH0gXG5cbiAgICAubm90aWZpY2F0aW9uLWNvbnRlbnQtYXJyb3c6YmVmb3Jle1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTFyZW07XG4gICAgICAgIHJpZ2h0OiA1cmVtO1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGJhYnktYmVhcikge1xuICAgICAgICAgICAgLy9sZWZ0OiA1LjVyZW07XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLm5vdGlmaWNhdGlvbi1jb250ZW50LWFycm93OmFmdGVye1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogLTAuOXJlbTtcbiAgICAgICAgcmlnaHQ6IDVyZW07XG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgICAgICAvL2xlZnQ6IDUuNXJlbTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICB1bCB7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbSAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgbGkge1xuICAgICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgICBsaW5lLWhlaWdodDogMnJlbTtcbiAgICAgICAgaGVpZ2h0OiAycmVtO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICBjb2xvcjogJGNvbG9yTGluaztcblxuICAgICAgICA+IHNwYW4sIGEge1xuICAgICAgICAgICAgcGFkZGluZzogMCAwLjVyZW0gIWltcG9ydGFudDtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cbiAgICAgICAgYTpob3ZlciB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JMaW5rICFpbXBvcnRhbnQ7XG4gICAgICAgICAgICBjb2xvcjogI0ZGRiAhaW1wb3J0YW50O1xuICAgICAgICB9XG4gICAgfVxuICAgIHNwYW4udWktYmFkZ2Uge1xuICAgICAgICBwb3NpdGlvbjpyZWxhdGl2ZTtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICBtYXJnaW46IC0wLjJyZW0gMCAwIDAuNXJlbSAhaW1wb3J0YW50O1xuICAgIH1cbiAgICAubm8tZGF0YSB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW0gMXJlbTtcbiAgICAgICAgY29sb3I6ICNjNGM0YzQ7XG4gICAgfVxufVxuLnVpLWJhZGdlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcGFkZGluZzogMC4xNXJlbSAwLjRyZW07XG4gICAgYm9yZGVyLXJhZGl1czogMS4yODU3cmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNGNDM1MzA7XG4gICAgY29sb3I6ICNGRkZGRkY7XG4gICAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC1zaXplOiAwLjcxNDhyZW07XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbi51aS1iYWRnZS1kb3Qge1xuICAgIHBhZGRpbmc6IDAuNGVtO1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLmFsZXJ0LWNvbnRhaW5lciB7XG4gICAgbWFyZ2luOiAxcmVtO1xuXG4gICAgLnRhYmxlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgICB9XG5cbiAgICAudGl0bGVfaGVhZGluZyB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjb2xvclRhYmxlVGl0bGVCYWNrZ3JvdW5kO1xuICAgIH1cbn1cblxuLmFwcy1jb25maWcge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgZmxleDogMTtcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgQGluY2x1ZGUgZmxleC1mbG93KGNvbHVtbik7XG4gICAgLmZvcm1faGVhZGluZyB7XG4gICAgICAgIHBhZGRpbmc6IDAuNjI1cmVtIDFyZW0gMDtcbiAgICB9XG59XG5cbi51cGxpbmstY2VydC11cGxvYWQubWVzc2FnZSB7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAuZGlhbG9nLWNvbnRlbnQge1xuICAgICAgICBwIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG4gICAgfVxufSBcblxuLmFwcy1vdmVydmlldy1jaGFydHMge1xuICAgIC5zZWdneWMge1xuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgIH1cbiAgICAuYXAtcmZ0cmVuZHMge1xuICAgICAgICBtaW4taGVpZ2h0OiAzMXJlbTtcbiAgICB9XG59XG5cbi50YWItbG9hZGluZy1iZy5vdmVybGF5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjgpO1xufVxuXG4uc3BlY3RydW0tYXAge1xuICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGJhYnktYmVhcikge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgLmNoYXJ0LXBhbmVsIHtcbiAgICAgICAgZmxleDogMjtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgfVxuICAgIC5kZXRhaWwtcGFuZWwge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICAuaXRlbS10aXRsZSB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAuc2VnZ3ljIHtcbiAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICB9XG4gICAgXG59XG5cblxuLmluYWN0aXZlIHtcbiAgICBjb2xvcjogJGNvbG9ySW5hY3RpdmU7IFxuICAgIGJvcmRlci1jb2xvcjogJGNvbG9ySW5hY3RpdmU7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICBsYWJlbCB7XG4gICAgICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgfVxuXG59XG4uc3BsYXNoLXBhZ2UtY29udGFpbmVyIHtcbiAgICBjb2xvcjogJGNvbG9yVGV4dDtcbiAgICAuc3BsYXNoLXBhZ2UtaGVhZGVyIHtcbiAgICAgICAgXG4gICAgfVxuICAgIC5zcGxhc2gtcGFnZS1iYW5uZXIge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIG1hcmdpbi10b3A6IDAuNXJlbTtcbiAgICAgICAgaGVpZ2h0OiAycmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgJjpob3ZlciwgJi5lZGl0aW5nIHtcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHllbGxvdztcbiAgICAgICAgfVxuICAgICAgICAuc3BsYXNoLXBhZ2UtYmFubmVyLWlucyB7XG4gICAgICAgICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgICY6aG92ZXIsICYuZWRpdGluZyB7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnNwbGFzaC1wYWdlLWJvZHkge1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIGhlaWdodDogMTFyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNGNWY1ZjU7XG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgeWVsbG93O1xuICAgICAgICB9XG4gICAgICAgICYuZWRpdGluZyB7XG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB5ZWxsb3c7XG4gICAgICAgIH1cbiAgICAgICAgLnNwbGFzaC1wYWdlLWJvZHktaW5zIHtcbiAgICAgICAgICAgIGhlaWdodDogMTFyZW07XG4gICAgICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAmOmhvdmVyLCAmLmVkaXRpbmcge1xuICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJlZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleC13cmFwKHdyYXApO1xuICAgICAgICAgICAgQGluY2x1ZGUganVzdGlmeS1jb250ZW50KGNlbnRlcik7XG4gICAgICAgICAgICAuc3BsYXNoLXBhZ2UtYm9keS1sZWZ0LCAuc3BsYXNoLXBhZ2UtYm9keS1yaWdodHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDEuNXJlbSAxcmVtO1xuICAgICAgICAgICAgICAgIGZsZXg6IDE7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgICAgICAgICAgICAgbWluLXdpZHRoOiA5MCU7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC5zcGxhc2gtcGFnZS1ib2R5LXJpZ2h0IHtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgtZmxvdyhjb2x1bW4pO1xuXG4gICAgICAgICAgICAgICAgaW5wdXRbdHlwZT1jaGVja2JveF0ge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaW5wdXRbdHlwZT1wYXNzd29yZF0ge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAwLjI1cmVtO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3JPcmFuZ2U7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLnNwbGFzaC1wYWdlLWJvZHktcmlnaHQtbWFzayB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLnNwbGFzaC1wYWdlLWJvZHktdGV4dCB7XG4gICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgICAgICAgICAgJjpob3ZlciwgJi5lZGl0aW5nIHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgeWVsbG93O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC5zcGxhc2gtcGFnZS1ib2R5LXRleHQtaW5zIHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogMC4ycmVtO1xuICAgICAgICAgICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgICAgICAgICAgJjpob3ZlciwgJi5lZGl0aW5nIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJlZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgI3NwbGFzaC1wYWdlLXctdGV4dCB7XG4gICAgICAgICAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAjc3BsYXNoLXBhZ2UtdC10ZXh0IHtcbiAgICAgICAgICAgICAgICBjb2xvcjogI2FhYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAuc3BsYXNoLXBhZ2UtbG9nbywgLnNwbGFzaC1wYWdlLXByZXZpZXcsIC5zcGxhc2gtcGFnZS1yZWRpcmVjdCB7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbSAwO1xuICAgICAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgICAgIEBpbmNsdWRlIGp1c3RpZnktY29udGVudChzcGFjZS1iZXR3ZWVuKTtcbiAgICAgICAgQGluY2x1ZGUgYWxpZ24taXRlbXMoY2VudGVyKTtcbiAgICAgICAgYSB7XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLnNwbGFzaC1wYWdlLXJlZGlyZWN0IHtcbiAgICAgICAgQGluY2x1ZGUganVzdGlmeS1jb250ZW50KGZsZXgtc3RhcnQpO1xuICAgICAgICA+IGRpdiB7XG4gICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbiAgICAgICAgfVxuICAgICAgICBzcGFuIHtcbiAgICAgICAgICAgIGNvbG9yOiAjYzNjNWM4O1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uYWNjZXNzLXJ1bGVzLXRhYmxlIHtcbiAgICB0YWJsZS5kYXRhIHtcbiAgICAgICAgdGQge1xuICAgICAgICAgICAgcGFkZGluZzogMC41cmVtIDAuNjI1cmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLnRpdGxlX2hlYWRpbmcgc3Bhbi5yb2xlLW5hbWUge1xuICAgICAgICBjb2xvcjogIzAyYTdlYztcbiAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICB9XG59XG5cbnRhYmxlLmRhdGEge1xuICAgIHRkLmFjY2Vzcy1ydWxlcy1yb2xlIHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDAuNjI1cmVtO1xuICAgIH1cbn1cblxuLmNocm9tZS1waWNrZXIge1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLm5ldHdvcmstc2VjdXJpdHktZ3Vlc3Qge1xuICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGJhYnktYmVhcikge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9O1xuXG4gICAgPiBkaXYge1xuICAgICAgICBAaW5jbHVkZSBmbGV4KDEpO1xuICAgIH1cbn1cblxuI3NwbGFzaC1lZGl0LXBpY2tlciB7XG4gICAgLnJvdy1waWNrZXIge1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgfVxuICAgIC5mb3JtLWZpZWxkIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICB9XG59XG5cbi5hY2Nlc3MtcnVsZS1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICBcbiAgICAucm9sZS1jb250YWluZXIge1xuICAgICAgICB3aWR0aDogMjJyZW07XG4gICAgfVxuXG4gICAgLnJ1bGUtY29udGFpbmVyIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNjI1cmVtO1xuICAgICAgICBmbGV4OiA0O1xuICAgIH1cblxuICAgIC50aXRsZV9oZWFkaW5nIHtcbiAgICAgICAgYmFja2dyb3VuZDogJGNvbG9yVGFibGVUaXRsZUJhY2tncm91bmQ7XG4gICAgfVxufVxuXG5cblxuLmlkcy10ZC1zbGlkZXIge1xuICAgIGhlaWdodDogMTVyZW07XG4gICAgd2lkdGg6IDE1cmVtO1xuICAgIHBhZGRpbmc6IDAuNjI1cmVtO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgIHdpZHRoOiA2cmVtO1xuICAgIH07XG59XG5cbi5pZHMtcHJvdGVjdGlvbiAuaWRzLXRkLXNsaWRlciB7XG4gICAgaGVpZ2h0OiA4cmVtO1xufVxuXG4uaWRzLXRkLXBvbGljeSB7XG4gICAgd2lkdGg6IDMwcmVtO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgIHdpZHRoOiAxNXJlbTtcbiAgICB9O1xufVxuXG4uaWRzLXBvbGljeS1jb250YWluZXIge1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICRjb2xvck5ldXRyYWxNZDtcbiAgICBoZWlnaHQ6IDE1cmVtO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG5cbiAgICAuaWRzLXBvbGljeSB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgICAgLmlkcy1wb2xpY3ktY2Ige1xuICAgICAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgICAgICBtYXJnaW46IDAuMjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuaWRzLXBvbGljeS1pbWcge1xuICAgICAgICAgICAgaGVpZ2h0OiAxcmVtO1xuICAgICAgICAgICAgd2lkdGg6IDFyZW07XG4gICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgIG1hcmdpbjogMC41cmVtIDAuMjVyZW0gMC4yNXJlbSAwLjVyZW07XG4gICAgICAgICAgICAvLyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoJy9pbWFnZXMvY2hlY2ttYXJrLmdpZicpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmlkcy1wb2xpY3ktbGFiZWwge1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNXJlbTtcbiAgICAgICAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgICAgICAgbWFyZ2luOiAwLjI1cmVtIDAgMCAwLjI1cmVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4uaWRzLXByb3RlY3Rpb24gLmlkcy1wb2xpY3ktY29udGFpbmVyIHtcbiAgICBoZWlnaHQ6IDhyZW07XG59XG5cbi5saW5rLWJ1dHRvbiB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ubWVzc2FnZS1pbmZvIHtcbiAgICBjb2xvcjogIzVjODlhNjtcbiAgICBtYXJnaW46IDAuMjVyZW0gMCAwLjYyNXJlbSAwO1xuXG4gICAgLmZhLWluZm8tY2lyY2xlIHtcbiAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmluZm8tdGV4dCB7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjVyZW07XG4gICAgICAgIG1hcmdpbjogMCAwLjYyNXJlbTtcbiAgICB9XG59XG5cbi5tZXNzYWdlLXdhcm5pbmcge1xuICAgIGNvbG9yOiAkY29sb3JXYXJuaW5nO1xufVxuXG4ucmMtc2xpZGVyLWRpc2FibGVkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLnJjLXNsaWRlci1tYXJrLXRleHQge1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5cbnRhYmxlLmRhdGEge1xuICAgIC51bnNvcnRhYmxlIHtcbiAgICAgICAgPiBzcGFuOmFmdGVyIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgXG4gICAgdGJvZHl7XG4gICAgICAgIHRyIHtcbiAgICAgICAgICAgIC50YWJsZS1hY3Rpb24taWNvbiB7XG4gICAgICAgICAgICAgICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgJi5zZWxlY3RlZCB7XG4gICAgICAgICAgICAgICAgLnRhYmxlLWFjdGlvbi1pY29uLmVuYWJsZSB7XG4gICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3JTZWxlY3RlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvKiAmLnNlbGVjdGVkOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JIaWdobGlnaHQ7XG4gICAgICAgICAgICB9ICovXG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3JIb3ZlcjtcbiAgICAgICAgICAgICAgICAudGFibGUtYWN0aW9uLWljb24ge1xuICAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0ci5uby1kYXRhIHtcbiAgICAgICAgICAgIGN1cnNvcjogZGVmYXVsdDtcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6aW5oZXJpdDtcbiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDE5NiwgMTk2LDE5NiwgLjMpO1xuICAgICAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICAgICAgdGQge1xuICAgICAgICAgICAgICAgIC5mYXIge1xuICAgICAgICAgICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IDJyZW07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc3BhbiB7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMC42MjVyZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG1hcmdpbjogMXJlbSAwO1xuICAgICAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIHRkIHtcbiAgICAgICAgICAgICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4uYWNjZXNzLXJ1bGVzLWRpYWxvZyB7XG4gICAgei1pbmRleDogMTAwO1xuICAgIC5tZXNzYWdlIHtcbiAgICAgICAgbWF4LXdpZHRoOiA2NXJlbTtcbiAgICB9XG59XG5cbi5hY2Nlc3MtcnVsZXMtZWRpdC1wYW5lbCB7XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgIHNlbGVjdCB7XG4gICAgICAgIHBhZGRpbmc6IDAuMzc1cmVtIDIuNXJlbSAwLjM3NXJlbSAwLjYyNXJlbTtcbiAgICB9XG5cbiAgICAubXVsdGlwbGUtc2VsZWN0b3IgLmxhYmxlUm93IHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDIuNXJlbSAwLjVyZW0gMC42MjVyZW07XG4gICAgfVxuICAgIGRpdiB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxuICAgIGlucHV0W3R5cGU9XCJyYWRpb1wiXSArIGxhYmVsIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDJyZW07XG4gICAgfVxuICAgIHRhYmxlIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG5cbiAgICAgICAgdGgsIHRkIHtcbiAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiAwLjM3NXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlucHV0W3R5cGU9cmFkaW9dIHtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLmFjbC13ZWJyZXB1dGF0aW9uLXNsaWRlciAucmMtc2xpZGVyLW1hcmt7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMC42MjVyZW07XG4gICAgfVxufVxuXG4uYWNjZXNzLXJ1bGVzLXdhcm5pbmcge1xuICAgIGNvbG9yOiAkY29sb3JXYXJuaW5nO1xuICAgIG1hcmdpbi10b3A6IDAuNjI1cmVtO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi5mYXN0LXJvYW1pbmcge1xuICAgIG1hcmdpbi1ib3R0b206IDAuNXJlbTtcbiAgICBmb250LXdlaWdodDogYm9sZDtcbn1cblxuLmFpcmdyb3VwLXNlcnZpY2VzLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgIC5haXJncm91cC1zZXJ2aWNlcy1sZWZ0IHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgdGFibGUge1xuICAgICAgICAgICAgLmNoZWNrYm94LWlucHV0IHtcbiAgICAgICAgICAgICAgICB3aWR0aDogMS4yNXJlbTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDEuMjVyZW07XG4gICAgICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjVyZW07XG4gICAgICAgICAgICAgICAgbWFyZ2luLXRvcDogMC4yNXJlbTtcblxuICAgICAgICAgICAgICAgICY6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgICAgICAgICAgICAgbGVmdDogMC4ycmVtO1xuICAgICAgICAgICAgICAgICAgICB0b3A6IDAuMDVyZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIC5haXJncm91cC1zZXJ2aWNlcy1yaWdodCB7XG4gICAgICAgIGZsZXg6IDM7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAwLjYyNXJlbTtcblxuICAgICAgICAuYWlyZ3JvdXAtc2VydmljZXMtZGlzYWxsb3dlZC1jb250YWluZXIge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC42MjVyZW07XG4gICAgICAgICAgICAuY2hlY2tib3gtZmllbGQge1xuICAgICAgICAgICAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLmRpYWxsb3dlZC1lZGl0IHtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIG1hcmdpbi1sZWZ0OiAwLjYyNXJlbTtcbiAgICAgICAgICAgIGE6YmVmb3JlIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5haXJncm91cC13YXJuaW5nIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjYyNXJlbTtcbn1cblxuLmNvbWJvLW1pZGRsZS1sYWJlbCB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuNjI1cmVtO1xuICAgIG1hcmdpbi1yaWdodDogMC42MjVyZW07XG59XG5cbi5jb21iby1idXR0b24tbGVmdCB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuNjI1cmVtO1xufVxuXG4ucHJvZmlsZXNlbGVjdC1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICAucHJvZmlsZXNlbGVjdC1hY3Rpb24ge1xuICAgICAgICBtYXJnaW46IDAuNXJlbSAwLjM3NXJlbTtcbiAgICAgICAgYSB7IFxuICAgICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICAgICAgJjpiZWZvcmUge1xuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMC42MjVyZW07XG4gICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5kaGNwLWNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgIEBpbmNsdWRlIGZsZXgtZmxvdyhjb2x1bW4pO1xuICAgIC5mb290ZXIge1xuICAgICAgICB3aWR0aDogYXV0bztcbiAgICAgICAgb3ZlcmZsb3c6IHVuc2V0O1xuICAgICAgICBoZWlnaHQ6IDIuNXJlbTtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwLjYyNXJlbTtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRjb2xvck5ldXRyYWxNZDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIGJhY2tncm91bmQ6ICNGRkY7XG4gICAgICAgIC5idXR0b24ge1xuICAgICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAuNjI1cmVtO1xuICAgICAgICAgICAgcGFkZGluZzogMC42MjVyZW07XG4gICAgICAgICAgICB3aWR0aDogNXJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnRpbWUtcmFuZ2UtZGlhbG9nLWNvbnRhaW5lciB7XG4gICAgLnJvdy50YWJsZS1yb3cge1xuICAgICAgICAuZm9ybS1maWVsZCB7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnZsYW4tcnVsZXMtdGFibGUtY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIG92ZXJmbG93OiB2aXNpYmxlO1xuICAgIGNvbG9yOiAjMDAwO1xuICAgIFxuICAgIC5yb3ctcGlja2VyIHtcbiAgICAgICAgbWFyZ2luLXRvcDogLTJyZW07XG4gICAgfVxufVxuXG4uaGlnaGNoYXJ0cy1sZWdlbmQtaXRlbSB7XG4gICAgJiA+IHNwYW4ge1xuICAgICAgICB6LWluZGV4OiAtMTtcbiAgICB9XG59XG5cbi50YWItY29udHJvbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgLy9wb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdygwIC0xcHggMCAkY29sb3JOZXV0cmFsTWQgaW5zZXQpO1xuXG4gICAgbGkge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICB9XG5cbiAgICBsaSBhIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMC4zMTI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjYyNXJlbTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDAuNjI1cmVtO1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50IChtYW1hLWJlYXIpIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgfVxuICAgICAgICBib3JkZXItYm90dG9tOiAzcHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24oYm9yZGVyIDAuM3MpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgfVxuXG4gICAgYS5jdXJyZW50IHtcbiAgICAgICAgY29sb3I6ICRjb2xvclRpdGxlO1xuICAgICAgICBib3JkZXItYm90dG9tOiAzcHggc29saWQgJGNvbG9yU2VsZWN0ZWQ7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgfVxuXG4gICAgbGk6bGFzdC1jaGlsZCBhIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIH1cblxufVxuXG4udGFiLWNvbnRyb2wtY29udGFpbmVyIHtcbiAgICBwYWRkaW5nLWJvdHRvbTogMDtcblxuICAgIC5pY29uLXBpbGwge1xuICAgICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICAgIGNvbG9yOiAkY29sb3JMaW5rO1xuICAgICAgICBtYXJnaW4tdG9wOiAwLjVyZW07XG5cbiAgICAgICAgW2NsYXNzKj1mYS1dOmJlZm9yZSwgW2NsYXNzKj1mYS1dOmFmdGVyIHtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogMXJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cbi5hcHByZi1jb250YWluZXIsIC5vdmVydmlldy1jb250YWluZXIsIC5hcHMtb3ZlcnZpZXctY2hhcnRzLCAuY2xpZW50LW1hdGNoLWNsaWVudCB7XG4gICAgcGFkZGluZzogMCAxcmVtO1xufVxuXG4uYXBwcmYtY29udGFpbmVyIHtcbiAgICBAaW5jbHVkZSBmbGV4LWZsb3coY29sdW1uKTtcbiAgICAuYXBwcmYtaGVhZGVyIC5pdGVtLXRpdGxlIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIH1cbiAgICA+Lml0ZW0tcGFuZWwge1xuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRjb2xvck5ldXRyYWxNZDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm5ldHdvcmstd2l6YXJkIHtcbiAgICAuc2VjdGlvbiAuc2VjdGlvbi1jb250ZW50IC5yb3cudGFibGUtcm93IHtcbiAgICAgICAgZGl2LmZvcm0tZmllbGQ6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgZmxleDogMSAxIDEycmVtO1xuICAgICAgICB9XG5cbiAgICAgICAgZGl2LmZvcm0tZmllbGQ6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICBmbGV4OiAxMCAxMCA1MHJlbTtcbiAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgfVxufVxuXG4jbnByb2dyZXNzIC5iYXIge1xuICAgIGhlaWdodDogM3B4O1xufVxuXG4uZGlhbG9nLWNvbnRlbnQge1xuICAgIC5wYW5lbC1jb250ZW50IHtcbiAgICAgICAgZGl2LmZvcm0tZmllbGQ6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgd2lkdGg6IDEycmVtO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4ub3ZlcnZpZXctY29udGVudCB7XG4gICAgY29sb3I6ICM2NDY1Njk7XG4gICAgbWFyZ2luOiAwLjVyZW0gMC42MjVyZW0gMC42MjVyZW07XG4gICAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50IChtYW1hLWJlYXIpIHtcbiAgICAgICAgQGluY2x1ZGUgYm94LXNoYWRvdygwIC0xcHggMCByZ2JhKDAsMCwwLDAuMTApIGluc2V0KTtcbiAgICB9XG4gICAgLmNvdW50cyB7XG4gICAgICAgIGRpdiB7XG4gICAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgICAgICBoZWlnaHQ6IDJyZW07XG5cbiAgICAgICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQgKG1hbWEtYmVhcikge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGkge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDFyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhIHtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxcmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGEge1xuICAgICAgICAgICAgZm9udC1zaXplOiAycmVtO1xuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCAobWFtYS1iZWFyKSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMXJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAuc3ViLXBhbmVsIHtcbiAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICBtYXJnaW4tdG9wOiAxcmVtO1xuICAgICAgICAuc3ViLWl0ZW0ge1xuICAgICAgICAgICAgZmxleDogMTtcblxuICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCAobWFtYS1iZWFyKSB7XG4gICAgICAgICAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGRpdi5zdWItaXRlbS1sYWJlbCB7XG4gICAgICAgICAgICBoZWlnaHQ6IDEuMnJlbTtcbiAgICAgICAgfVxuICAgICAgICBkaXYuc3ViLWl0ZW0tY291bnRzIHtcbiAgICAgICAgICAgIGNvbG9yOiAjODg4O1xuICAgICAgICAgICAgXG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50IChtYW1hLWJlYXIpIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDFyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuZmFzOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwLjM3NXJlbTtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuYWN0aXZlLWFwIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogJGNvbG9yQWN0aXZlQVA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuaW5hY3RpdmUtYXAge1xuICAgICAgICAgICAgICAgIGNvbG9yOiAkY29sb3JJbmFjdGl2ZUFQO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4uY2hlY2tib3gtdGV4dCB7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4ucmFkaW8tcm93IHtcbiAgICBsYWJlbHtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cbn1cblxuLm92ZXJ2aWV3LXJvdXRlciB7XG4gICAgQGluY2x1ZGUgZmxleCgxKTtcbiAgICBAaW5jbHVkZSBkaXNwbGF5LWZsZXg7XG4gICAgQGluY2x1ZGUgZmxleC1mbG93KGNvbHVtbik7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludCAoYmFieS1iZWFyKSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIH1cbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIC50YWItY29udHJvbC1jb250YWluZXIge1xuICAgICAgICBAaW5jbHVkZSBmbGV4KDAgMCBhdXRvKTtcbiAgICAgICAgcGFkZGluZy10b3A6IDAuNjI1cmVtO1xuICAgIH1cbiAgICAudGFicyAuc2VnZ3ljIHtcbiAgICAgICAgQGluY2x1ZGUgZmxleCgwIDAgYXV0byk7XG4gICAgfVxuXG4gICAgLndoaXRlIHtcbiAgICAgICAgYm9yZGVyOm5vbmU7XG4gICAgfVxufVxuXG4uaWRzLWRldGVjdGluZy1jb250YWluZXIge1xuICAgIHdpZHRoOiAzMDBweDtcbiAgICBwYWRkaW5nOiAxcmVtO1xuICAgIGNvbG9yOiAkY29sb3JJdGVtUGFuZWxUaXRsZTtcblxuICAgID5kaXYge1xuICAgICAgICBsaW5lLWhlaWdodDogMS4yO1xuICAgIH1cblxuICAgIC53aGl0ZSB7XG4gICAgICAgIGJvcmRlcjpub25lO1xuICAgIH1cbn1cblxuLmFpcmdyb3VwLXNlcnZlcnMtY29udGFpbmVyIHtcbiAgICBtYXJnaW46IDFyZW0gMnJlbTtcbiAgICAudGl0bGVfaGVhZGluZyB7XG4gICAgICAgIGJhY2tncm91bmQ6ICRjb2xvclRhYmxlVGl0bGVCYWNrZ3JvdW5kO1xuICAgIH1cbn1cblxuLmNlbGx1bGFyLWNvbnRhaW5lciB7XG4gICAgbWFyZ2luOiAxcmVtO1xufVxuXG4uZmFzLmFwLW1hc3RlcjpiZWZvcmUge1xuICAgIGZvbnQtc2l6ZTogMC42MjVyZW07XG59XG5cbi5jb3VudHJ5LWNvbnRlbnQge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgbWFyZ2luOiAwLjVyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuMztcblxuICAgIC5yb3cudGFibGUtcm93IGRpdi5mb3JtLWZpZWxkOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDFyZW07XG4gICAgfVxufVxuLmNlbnRyYWwtY29udGVudCB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBkaXYge1xuICAgICAgICBtYXJnaW46IDAuNXJlbTtcbiAgICB9XG4gICAgLmZyZWUtd2lmaSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIH1cbiAgICAuZmVhdHVyZXMge1xuICAgICAgICBtYXJnaW4tbGVmdDogMnJlbTtcbiAgICAgICAgdWwge1xuICAgICAgICAgICAgbGlzdC1zdHlsZTogZGlzYyBpbnNpZGUgbm9uZTtcbiAgICAgICAgfVxuICAgICAgICBsaSB7XG4gICAgICAgICAgICBsaXN0LXN0eWxlOiBkaXNjIGluc2lkZSBub25lO1xuICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuMztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLnRhYnMsIC5haXJncm91cC1jb250YWluZXIge1xuICAgIC5zZWN0aW9uIC5zZWN0aW9uLWNvbnRlbnQgPiAucm93LnRhYmxlLXJvdyB7XG4gICAgICAgIC5vdmVybGF5IHtcbiAgICAgICAgICAgIGRpdi5mb3JtLWZpZWxkOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDY1MXB4KSB7XG4gICAgICAgICAgICAgICAgZGl2LmZvcm0tZmllbGQ6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5kaXNjb25uZWN0LXVzZXItY29uZmlybSB7XG4gICAgZm9udC1zaXplOiAxcmVtO1xuICAgIGNvbG9yOiAkY29sb3JUaXRsZTtcbiAgICBsaW5lLWhlaWdodDogM3JlbTtcbiAgICBzcGFuIHtcbiAgICAgICAgY29sb3I6ICRjb2xvckhpZ2hsaWdodDtcbiAgICB9XG59XG5cbi5tdWx0aXBsZS1pdGVtIHtcbiAgICAmID4gLmZvcm0tZmllbGQ6Zmlyc3QtY2hpbGQge1xuICAgICAgICAmICsgKiB7XG4gICAgICAgICAgICAvKiAmID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgICAgICAgJiArICoge1xuICAgICAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IDAuMjVyZW07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSAqL1xuXG4gICAgICAgICAgICAmID4gKjpudGgtY2hpbGQobiArIDIpIHtcbiAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMC4zNzVyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmZvcm0tZmllbGQtbGFiZWwge1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgfVxufVxuLm5ldHdvcmstc2VjdXJpdHktc2VjdGlvbiB7XG4gICAgLnNlY3Rpb24tY29udGVudCB7XG4gICAgICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludCAobWFtYS1iZWFyKSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgfVxuXG4gICAgICAgID4gZGl2IHtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZsZXgoMSk7XG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50IChtYW1hLWJlYXIpIHtcbiAgICAgICAgICAgICAgICBmbGV4OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIFxufVxuXG4udG9hc3QtbWVzc2FnZSB7XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cblxuLmVycm9yLW1lc3NhZ2UtdG9vbHRpcCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgei1pbmRleDogMTAwO1xuICAgID4gZGl2IHtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgkY29sb3JBbGVydCwgMC4yKTtcbiAgICAgICAgLy9ib3JkZXItbGVmdDogMC4zNzVyZW0gc29saWQgJGNvbG9yQWxlcnQ7XG4gICAgICAgIHBhZGRpbmc6IDAuNDI1cmVtIDAuNjI1cmVtO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKCRjb2xvckFsZXJ0LCAwLjA1KTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC4yNXJlbTtcbiAgICAgICAgY29sb3I6ICRjb2xvckFsZXJ0O1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBsaW5lLWhlaWdodDogbm9ybWFsO1xuICAgICAgICBAaW5jbHVkZSBib3gtc2hhZG93KDFweCAxcHggMXB4IHJnYmEoJGNvbG9yQWxlcnQsIDAuMikpO1xuXG4gICAgICAgID4gLmZhLWluZm8tY2lyY2xlIHtcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMC41cmVtO1xuICAgICAgICAgICAgY29sb3I6IHJnYmEoJGNvbG9yQWxlcnQsIDAuNzUpO1xuXG4gICAgICAgICAgICAmOmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IGRlZmF1bHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi5hY2Nlc3MtcnVsZXMtZGlhbG9nLm92ZXJsYXkgLm1lc3NhZ2UgLmRpYWxvZy1jb250ZW50IHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAzcmVtO1xuICAgIC5tdWx0aXBsZS1zZWxlY3RvciAuZHJvcC1kb3duLWxpc3Qge1xuICAgICAgICBoZWlnaHQ6IDE1cmVtO1xuICAgIH1cbn1cblxuLmNlcnRpZmljYXRlcy1jb250YWluZXIge1xuICAgIC8vQGluY2x1ZGUgZmxleCgxKTtcbiAgICAvL0BpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICAvL0BpbmNsdWRlIGZsZXgtZmxvdyhjb2x1bW4pO1xuICAgIC5jZXJ0cy1pbmZvIHtcbiAgICAgICAgLy9AaW5jbHVkZSBmbGV4KDEpO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3JOZXV0cmFsTWQ7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG5cbiAgICAgICAgbWF4LWhlaWdodDogMjVyZW07XG4gICAgICAgIG1pbi1oZWlnaHQ6IDVyZW07XG4gICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG5cbiAgICAgICAgdGQge1xuICAgICAgICAgICAgcGFkZGluZzogMC4yNXJlbTtcbiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmNlcnRzLXVwbG9hZC1pbmZvIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMS41cmVtO1xuICAgICAgICA+IHNwYW4ge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMC41cmVtO1xuICAgICAgICB9XG4gICAgICAgIHNwYW4ge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBwYWRkaW5nOiAwLjJyZW0gMDtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmNlcnQtdXBsb2FkLXN0YXRlIHtcbiAgICBtYXJnaW46IDAuNXJlbTtcbiAgICBmb250LXNpemU6IDFyZW07XG4gICAgXG4gICAgaSB7IFxuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW07XG4gICAgfVxuICAgIC5mYXM6YmVmb3JlIHtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgIH1cbiAgICAuZmEtY2hlY2sge1xuICAgICAgICBjb2xvcjogIzAwQ0MwMDtcbiAgICB9XG4gICAgLmZhLXRpbWVzIHtcbiAgICAgICAgY29sb3I6ICNmZjAwMDA7XG4gICAgfVxufVxuXG4uY2VydC1maWxlIHtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50IChiYWJ5LWJlYXIpIHtcbiAgICAgICAgaW5wdXRbdHlwZT10ZXh0XS5pbnB1dCB7XG4gICAgICAgICAgICB3aWR0aDogOHJlbTtcbiAgICAgICAgfVxuICAgICAgICBpbnB1dFt0eXBlPWZpbGVdIHtcbiAgICAgICAgICAgIHdpZHRoOiAxM3JlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmFsZXJ0cyB7XG4gICAgY29sb3I6ICRjb2xvckFsZXJ0c1RleHQ7XG59XG5cbi5kaXNhbGxvdy1yb3cge1xuICAgIG1hcmdpbjogMC41cmVtO1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjVyZW07XG4gICAgc3BhbjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiAwLjVyZW1cbiAgICB9XG59XG5cbi5tZXNzYWdlLmRoY3Atc2VydmVyLWRpYWxvZyB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBtYXgtd2lkdGg6IDcwcmVtO1xuICAgIC5wYW5lbC5ub19ib3JkZXIge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgIH1cbn1cblxuLm1lc3NhZ2UudXNlci1kaWFsb2cge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgLnBhbmVsIHtcbiAgICAgICAgLnRpdGxlX2hlYWRpbmcge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmluYm91bmQtZmlyZXdhbGwuYWNjZXNzLXJ1bGVzLWRpYWxvZy5vdmVybGF5IC5tZXNzYWdlIC5kaWFsb2ctY29udGVudCB7XG4gICAgcGFkZGluZzogMC42MjVyZW0gM3JlbSAwLjYyNXJlbSAwLjYyNXJlbTtcblxuICAgIHRkIHtcbiAgICAgICAgcGFkZGluZy10b3A6IDAuMjVyZW07XG4gICAgfVxufVxuLmRpYWxvZy1jb250ZW50IC5wYW5lbC1jb250ZW50IC5yYWRpby1kaWFsb2ctbGFiZWx7XG4gICAgZGl2LmZvcm0tZmllbGQ6Zmlyc3QtY2hpbGQge1xuICAgICAgICB3aWR0aDogMTVyZW07XG4gICAgfVxufVxuXG4ubGFuZ3VhZ2Uge1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICBjb2xvcjogJGNvbG9yTGluaztcbiAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICB0ZXh0LWFsaWduLWxhc3Q6IGVuZDtcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICBiYWNrZ3JvdW5kOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG59XG5cbi5sYW5ndWFnZTpmb2N1cyxhY3RpdmUge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG59XG5cbiAuZGV0YWlsLWNoYXJ0LWRpYWxvZy5tZXNzYWdlIHtcbiAgICBtYXgtd2lkdGg6IDM1MHB4O1xuIH1cblxuLmRldGFpbC1jaGFydC1kaWFsb2ctcGFuZWwge1xuICAgIHBhZGRpbmc6IDA7XG4gICAgLmRldGFpbC1jaGFydC1ib2R5IHtcbiAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50IChtYW1hLWJlYXIpIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICB9XG4gICAgICAgIC5pdGVtLWNvbnRlbnQtY2hhcnQge1xuICAgICAgICAgICAgQGluY2x1ZGUgZmxleCgyKTtcbiAgICAgICAgfVxuICAgICAgICB0YWJsZSB7XG4gICAgICAgICAgICBjb2xvcjogJGNvbG9ySXRlbVBhbmVsVGl0bGU7XG4gICAgICAgICAgICBAaW5jbHVkZSBmbGV4KDEpO1xuICAgICAgICAgICAgdGgsIHRkIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG50YWJsZS5hcC1vdmVydmlldy10YWJsZSB7XG4gICAgdGgsIHRkIHtcbiAgICAgICAgcGFkZGluZzogMC41cmVtIDAuMjVyZW07XG4gICAgfVxufVxuXG4uZGlhbG9nLWNvbnRlbnQgLnBhbmVsLWNvbnRlbnQgLmNsZWFyLWNvbmZpZy1sYWJlbCB7XG4gICAgZGl2LmZvcm0tZmllbGQ6Zmlyc3QtY2hpbGQge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICB9XG59XG5cbi5jbGVhci1jb25maWctbWVzc2FnZSB7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBsaW5lLWhlaWdodDogMnJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuMzI1cmVtO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuXG50aGVhZC5jb2xsYXBzYWJsZSB7XG4gICAgdHI6bGFzdC1jaGlsZCB7XG4gICAgICAgIHRoOmhvdmVyIHtcbiAgICAgICAgICAgIHNwYW4uaWNvbi1tZW51IHtcbiAgICAgICAgICAgICAgICAvL2Rpc3BsYXk6IGlubGluZTtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgICAgIEBpbmNsdWRlIGRldmljZShtb2JpbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAgICAgXG4gICAgICAgIHRoIHtcbiAgICAgICAgICAgIC5pY29uLW1lbnUge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICAgICAgICByaWdodDogMHJlbTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgICAgICAgICAgICAgICAvL2Rpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzAyYTdlYztcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAxcHg7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAuaWNvbi1tZW51OmJlZm9yZSB7XG4gICAgICAgICAgICAgICAgZm9udC1zaXplOjAuODc1cmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4udHJlZS1jb250YWluZXIge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yQ29udGFpbmVyQmFja2dyb3VuZDtcbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6ICR0b29sdGlwQm9yZGVyUmFkaXVzO1xuICAgIHotaW5kZXg6IDEwMDE7XG4gICAgYm94LXNoYWRvdzogJHRvb2x0aXBCb3hTaGFkb3c7XG4gICAgYm9yZGVyOiAkdG9vbHRpcEJvcmRlcjtcblxuICAgIC50cmVlLWJvZHkge1xuICAgICAgICBjb2xvcjogIzAwMDtcbiAgICAgICAgbWF4LWhlaWdodDogMTVyZW07XG4gICAgICAgIG1heC13aWR0aDogMjByZW07XG4gICAgICAgIG92ZXJmbG93OiBhdXRvO1xuICAgICAgICBwYWRkaW5nOiAwLjVyZW07XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gICAgICAgICAgICBsaW5lLWhlaWdodDogMnJlbTtcbiAgICAgICAgICAgIHVsIHtcbiAgICAgICAgICAgICAgICBjb2xvcjogIzAwMDtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMnJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhYmVsIHtcbiAgICAgICAgICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgICAgICAgICAgZmxvYXQ6IG5vbmU7XG4gICAgICAgICAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cblxuLm92ZXJ2aWV3LW5ldHdvcmtzLWNvbnRhaW5lciB7XG4gICAgLnRhYmxlIHtcbiAgICAgICAgLnRyZWUtYm9keSB7XG4gICAgICAgICAgICB3aWR0aDogMTJyZW07XG4gICAgICAgIH1cbiAgICB9XG4gICAgLmRhdGEtdGFibGUge1xuICAgICAgICBvdmVyZmxvdzogdW5zZXQ7XG4gICAgfVxufVxuXG4uYmFubmVyLXRpdGxle1xuICAgIHdpZHRoOiA3cmVtO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjb2xvcjogJGNvbG9yQmFubmVyVGl0bGU7XG4gICAgbGluZS1oZWlnaHQ6IDFyZW07XG4gICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGJhYnktYmVhcikge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cbn1cblxuLmFwcy1uYW1lLW1hc3RlciB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXgtd2lkdGg6IDkwJTtcbiAgICAuYXAtbWFzdGVyIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICByaWdodDogLTFyZW07XG4gICAgICAgIHRvcDogMDtcbiAgICB9XG59XG5cbi5kaWFsb2ctaWNvbiB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIHBhZGRpbmctdG9wOiAwLjYyNXJlbTtcbiAgICBhLmRpYWxvZy1jbG9zZSB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIHBvc2l0aW9uOiB1bnNldDtcbiAgICB9XG4gICAgLmhlbHAtY29udGFpbmVyIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDFyZW07XG4gICAgICAgIC5oZWxwLWFkdmljZS1jb250YWluZXIge1xuICAgICAgICAgICAgcmlnaHQ6IC0yLjYyNXJlbTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLmJhbm5lci10aXRsZS1uYW1lIHtcbiAgICBjb2xvcjogJGNvbG9yQmFubmVyVGl0bGVOYW1lO1xuICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgbWF4LXdpZHRoOiAxMnJlbTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgQGluY2x1ZGUgYnJlYWtwb2ludChiYWJ5LWJlYXIpIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG59XG5cbi5iYW5uZXItc3BsaWNlIHtcbiAgICBib3JkZXItbGVmdDogc29saWQgMXB4ICRjb2xvck5ldXRyYWxEaztcbiAgICBsaW5lLWhlaWdodDogMXJlbTtcbiAgICBoZWlnaHQ6IDFyZW07XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07XG4gICAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xuICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQoYmFieS1iZWFyKSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxufVxuXG4uYXV0b3J1biB7XG4gICAgbWFyZ2luLXRvcDogMC42MjVyZW07XG5cbiAgICBzcGFuIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjYyNXJlbTtcbiAgICB9XG59XG5cbi5vcHRpb244MnhtbC1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICBAaW5jbHVkZSBmbGV4LWZsb3coY29sdW1uKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGZsZXg6IDE7XG4gICAgXG4gICAgLm9wdGlvbjgyeG1sLWNvbnRlbnQge1xuICAgICAgICAvL2hlaWdodDogMTByZW07XG4gICAgICAgIGZsZXg6MTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAwLjVyZW07XG4gICAgICAgIHBhZGRpbmctdG9wOiAwLjVyZW07XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNlZmVmZWY7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDFyZW07XG4gICAgICAgIGZvbnQtZmFtaWx5OiBWZXJkYW5hLCBTaW1TdW47XG4gICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgIEBpbmNsdWRlIHVzZXItc2VsZWN0KHRleHQpO1xuXG4gICAgICAgID4gcHJlIHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjVyZW07XG4gICAgICAgIH1cbiAgICB9XG4gICAgLm9wdGlvbjgyeG1sLWZvb3RlciB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBidXR0b24ge1xuICAgICAgICAgICAgd2lkdGg6IDEycmVtO1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwLjYyNXJlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC5kaWFsb2ctY29udGVudCAucGFuZWwtY29udGVudCBkaXYuZm9ybS1maWVsZDpmaXJzdC1jaGlsZCB7XG4gICAgICAgIHdpZHRoOiAycmVtO1xuICAgIH1cbn1cblxuLnRvb2x0aXAtYWlyZ3JvdXAtc2VydmVycyB7XG4gICAgLnJvdy1waWNrZXIge1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgIC5pZHMtZGV0ZWN0aW5nLWNvbnRhaW5lciB7XG4gICAgICAgICAgICB3aWR0aDogNjByZW07XG4gICAgICAgICAgICAucGFuZWwudGFibGUge1xuICAgICAgICAgICAgICAgIG92ZXJmbG93OiBpbmhlcml0O1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuXG4uaW90LXNlY3Rpb24ge1xuICAgIC5tZXNzYWdlIHtcbiAgICAgICAgdG9wOiAxMCU7XG4gICAgICAgIHdpZHRoOiA5MCU7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIG1heC13aWR0aDogbm9uZTtcblxuICAgICAgICAucmFkaW8tY29udGFpbmVyIHtcbiAgICAgICAgICAgID4gZGl2IHtcbiAgICAgICAgICAgICAgICBmbG9hdDogbGVmdDsgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgID4gZGl2Omxhc3QtY2hpbGQge1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMC41cmVtO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC5tdWx0aXBsZS1jaGVja2JveCB7XG4gICAgICAgICAgICBtYXgtd2lkdGg6IDUwcmVtO1xuICAgICAgICB9XG4gICAgICAgIC5tdWx0aXBsZS1jaGVja2JveCAuY2hlY2tib3gtZmllbGQge1xuICAgICAgICAgICAgd2lkdGg6IDE1cmVtO1xuICAgICAgICB9XG4gICAgICAgIC5tdWx0aXBsZS1pdGVtIC5mb3JtLWZpZWxkLWxhYmVsIHtcbiAgICAgICAgICAgIG1heC13aWR0aDogbm9uZVxuICAgICAgICB9XG4gICAgICAgIC5pb3QtZmlsdGVycy1jb250YWluZXIge1xuICAgICAgICAgICAgQGluY2x1ZGUgZGlzcGxheS1mbGV4O1xuICAgICAgICAgICAgPiBkaXYge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMC41cmVtO1xuICAgICAgICAgICAgICAgIG1pbi13aWR0aDogMjAuMTVyZW07XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiAzMnJlbTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgID4gZGl2OmZpcnN0LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAuY2hlY2tib3gtaW5wdXQuZGlzYWJsZWQge1xuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0VCRUJFNDtcbiAgICAgICAgfVxuICAgIH1cbiAgICAucm93LXBpY2tlciB7XG4gICAgICAgIG1hcmdpbi10b3A6IC0yLjI1cmVtO1xuICAgIH1cbn1cblxuLmluZm8tdmFsdWUge1xuICAgIGRpdi5nb29kIHtcbiAgICAgICAgY29sb3I6ICMwRDdGMkU7XG4gICAgfVxuICAgIGRpdi5vayB7XG4gICAgICAgIGNvbG9yOiAjZmY5YTFhO1xuICAgIH1cbiAgICBkaXYucG9vciB7XG4gICAgICAgIGNvbG9yOiAjYmEwZDAwO1xuICAgIH1cbn1cblxuLmludHJhLXZsYW4tdHJhZmZpYy1jb250YWluZXIge1xuICAgIEBpbmNsdWRlIGRpc3BsYXktZmxleDtcbiAgICA+IGRpdiB7XG4gICAgICAgIEBpbmNsdWRlIGZsZXgoMSk7XG4gICAgfVxuICAgID4gZGl2OmZpcnN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjVyZW07XG4gICAgfVxuICAgIC5yb3ctcGlja2VyIHtcbiAgICAgICAgbWFyZ2luLXRvcDogLTIuNXJlbTtcbiAgICB9XG59XG5cbi5tZXNzYWdlLmludHJhLXZsYW4tdHJhZmZpYy1kaWFsb2cge1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgLnBhbmVsIHtcbiAgICAgICAgLnRpdGxlX2hlYWRpbmcge1xuICAgICAgICAgICAgYmFja2dyb3VuZDogI0Y1RjVGNTtcbiAgICAgICAgfVxuICAgIH1cbiAgICAucm93LXBpY2tlciB7XG4gICAgICAgIG1hcmdpbi10b3A6IC0yLjVyZW07XG4gICAgfVxuXG4gICAgLmRpYWxvZy1jb250ZW50IC5wYW5lbC1jb250ZW50IGRpdi5mb3JtLWZpZWxkOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxufSIsIiRjb2xvckxpbms6ICMwMmE3ZWM7IC8vTmF2eVxuJGNvbG9ySGlnaGxpZ2h0OiAjMDJhN2VjOyAvL05hdnkvLyNGRjgzMDA7IC8vT3JhbmdlXG4kY29sb3JUZXh0OiAjMDAwMDAwOyAvL0JsYWNrXG4kY29sb3JUaXRsZTogIzY0NjU2OTsgLy9EYXJrIEdyYXlcbiRjb2xvckRpdmlkZXI6IHJnYmEoMCwwLDAsMC4xMCk7XG4kY29sb3JEaXZpZGVyTHQ6IHJnYmEoMCwwLDAsMC4wNSk7XG4kY29sb3JOZXV0cmFsTHQ6ICNFQkVFRjI7IC8vTGlnaHQgR3JheVxuJGNvbG9yTmV1dHJhbE1kOiAjREZFMUU1OyAvL01lZCBHcmF5XG4vLyRjb2xvck5ldXRyYWxNZDojMDJhN2VjOyAvL1dhdGNoZXQgQmx1ZVxuJGNvbG9yTmV1dHJhbERrOiAjQzNDNUM4OyAvL01lZC1EYXJrIEdyYXlcbiRjb2xvckFsZXJ0OiAjRkY0QzAwOyAvL0J1cm50IE9yYW5nZVxuJGNvbG9yQWNjZW50MTogIzlGRDRDOTsgLy9UdXJxdW9pc2UgR3JlZW5cbiRjb2xvckFjY2VudDI6ICNENUQ2NTQ7IC8vTGltZSBHcmVlblxuJGNvbG9yQWNjZW50MzogIzAwODM3NTsgLy9Gb3Jlc3QgR3JlZW5cblxuJGNvbG9ySW5jb21wZWx0ZVN0ZXBUZXh0OiAjOTc5ODlDO1xuJGNvbG9yT3JhbmdlOiAjRjU4MzFFO1xuXG4kY29sb3JNZW51QmFja2dyb3VuZDogI2Y1ZjVmNTtcblxuJGNvbG9yRGlhbG9nVGl0bGVCYWNrZ3JvdW5kOiAjRjhGOEY4O1xuJGNvbG9ySW5hY3RpdmU6ICNjMGMwYzA7XG4kY29sb3JXYXJuaW5nOiAjZmY0YzAwO1xuXG4kY29sb3JTZWxlY3RlZDogI0ZGODMwMDtcbiRjb2xvckhvdmVyOiAjZGVmMmZhO1xuJGNvbG9yTmF2SG92ZXI6ICNlYzViMDI7XG4kY29sb3JUUkJhY2tncm91bmQ6ICNmZmZjZjY7XG5cbiRjb2xvclNlbGVjdGVkOiAjMDJhN2VjOyAvLyNGRjgzMDA7XG4kY29sb3JIb3ZlcjogI2RlZjJmYTtcbiRjb2xvck5hdkhvdmVyOiAjMDg5OWQ0OyAvL0hvdmVyIGNvbG9yIG9mIHNpZGUgbmF2XG4kY29sb3JUUkJhY2tncm91bmQ6ICNFQ0Y4RkQ7XG5cbiRjb2xvckxvZ2luV2VsY29tZVRleHQ6ICM3YTdhN2E7XG4kY29sb3JDb250YWluZXJCYWNrZ3JvdW5kOiAjRkZGO1xuJGNvbG9yRHJvcGRvd25NZW51QmFja2dyb3VuZDogI0ZGRjtcbiRjb2xvckhlbHBFbGVtZW50VGV4dDogIzAxOGUxYjtcbiRjb2xvckhlbHBBZHZpY2VCYWNrZ3JvdW5kOiAjRkZGO1xuJGNvbG9ySGVscEFkdmljZUJvcmRlcjogI0NDQztcbiRjb2xvckhlbHBDb250ZW50QmFja2dyb3VuZDogIzljZTVkNTtcbiRjb2xvclRhYmNvbnRyb2xzVGl0bGU6ICMzMzM7XG4kY29sb3JUYWJjb250cm9sc1RpdGxlQ3VycmVudDogIzMzMztcbiRjb2xvckl0ZW1QYW5lbFRleHQ6ICM4ODg7XG4kY29sb3JJdGVtUGFuZWxUaXRsZTogIzY0NjU2OTtcbiRjb2xvclNlYXJjaFRleHQ6ICM2NjY7XG4kY29sb3JTZWFyY2hSZXN1bHRUZXh0OiAjY2NjO1xuJGNvbG9yQmFubmVyVGl0bGU6ICNiY2JkYzQ7XG4kY29sb3JCYW5uZXJUaXRsZU5hbWU6ICM4NDg0ODE7XG4kY29sb3JBbGVydHNUZXh0OiAjRjQzNTMwO1xuJGNvbG9yQWN0aXZlQVA6ICMwMThlMWI7XG4kY29sb3JIZWFkZXJCYWNrZ3JvdW5kOiAjRjhGOEY4OyIsIi8qIEJSRUFLUE9JTlRTICovXG5cbiRwYXBhLWJlYXI6IDE2MDBweDtcbiRtYW1hLWJlYXI6IDExMDBweDtcbiRiYWJ5LWJlYXI6IDY1MHB4O1xuJHNtYWxsZXJUaGFuSXBhZDogMTAwMHB4O1xuXG4vKiBNRURJQSBRVUVSSUVTICovXG5cbkBtaXhpbiBicmVha3BvaW50KCRwb2ludCkge1xuICBAaWYgJHBvaW50ID09IHBhcGEtYmVhciB7XG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRwYXBhLWJlYXIpIHsgQGNvbnRlbnQ7IH1cbiAgfVxuICBAZWxzZSBpZiAkcG9pbnQgPT0gbWFtYS1iZWFyIHtcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJG1hbWEtYmVhcikgeyBAY29udGVudDsgfVxuICB9XG4gIEBlbHNlIGlmICRwb2ludCA9PSBzbWFsbGVyVGhhbklwYWQge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkc21hbGxlclRoYW5JcGFkKSAgeyBAY29udGVudDsgfVxuICB9XG4gIEBlbHNlIGlmICRwb2ludCA9PSBiYWJ5LWJlYXIge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkYmFieS1iZWFyKSAgeyBAY29udGVudDsgfVxuICB9XG59XG5cbiR0YWJsZXRXaWR0aDoxMjgwcHg7XG4kbW9iaWxlV2lkdGg6NzgwcHg7XG5cbkBtaXhpbiBkZXZpY2UoJHBvaW50KSB7XG4gIEBpZiAkcG9pbnQgPT0gbW9iaWxlIHtcbiAgICBAbWVkaWEgKG1heC1oZWlnaHQ6ICRtb2JpbGVXaWR0aCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpLCAobWF4LXdpZHRoOiAkbW9iaWxlV2lkdGgpIGFuZCAob3JpZW50YXRpb246bGFuZHNjYXBlKSB7IEBjb250ZW50OyB9XG4gIH0gXG4gIEBlbHNlIGlmICRwb2ludCA9PSB0YWJsZXQge1xuICAgIEBtZWRpYSAobWF4LWhlaWdodDogJHRhYmxldFdpZHRoKSBhbmQgKG1pbi1oZWlnaHQ6ICRtb2JpbGVXaWR0aCArIDFweCkgYW5kIChvcmllbnRhdGlvbjogcG9ydHJhaXQpLCAobWF4LXdpZHRoOiAkdGFibGV0V2lkdGgpIGFuZCAobWluLXdpZHRoOiAkbW9iaWxlV2lkdGggKyAxcHgpIGFuZCAob3JpZW50YXRpb246bGFuZHNjYXBlKSB7IEBjb250ZW50OyB9XG4gIH1cbn1cblxuLyogQkFDS0dST1VORCBTSVpJTkcgRk9SIElFICovXG5cbkBtaXhpbiBpZS1iYWNrZ3JvdW5kLXNjYWxlKCR1cmwsICRzaXppbmdtZXRob2Q6J3NjYWxlJywkcmVzZXRiYWNrZ3JvdW5kOiB0cnVlKSB7XG4gIEBpZiAkcmVzZXRiYWNrZ3JvdW5kIHtcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiBub25lO1xuICB9XG4gXG4gIGZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhSW1hZ2VMb2FkZXIoXG4gICAgc3JjPScje2ltYWdlLXVybCgkdXJsLHRydWUpfScsXG4gICAgc2l6aW5nTWV0aG9kPScjeyRzaXppbmdtZXRob2R9Jyk7XG5cbi8qIFRIRSBGT0xMT1dJTkcgV0FTIENBVVNJTkcgQ1NTIFRPIEJSRUFLIElOIEZJUkVGT1ggKi9cbiBcbi8qICAtbXMtZmlsdGVyOiBcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYUltYWdlTG9hZGVyKFxuICBzcmM9JyN7aW1hZ2UtdXJsKCR1cmwsdHJ1ZSl9JyxcbiAgc2l6aW5nTWV0aG9kPScjeyRzaXppbmdtZXRob2R9JylcIjsqL1xufVxuXG4vKiBQTEFDRUhPTERFUiBURVhUIEZPUiBJTlBVVFMgKi9cblxuQG1peGluIGlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICAmLnBsYWNlaG9sZGVyIHsgQGNvbnRlbnQ7IH1cbiAgICAmOi1tb3otcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxuICAgICY6Oi1tb3otcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxuICAgICY6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgQGNvbnRlbnQ7IH1cbiAgICAmOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsgQGNvbnRlbnQ7IH0gXG59XG5cbkBtaXhpbiBmb3JtLW91dGxpbmUge1xuICAgICY6Zm9jdXMge1xuICAgICAgICBvdXRsaW5lIDogbm9uZTtcbiAgICB9XG59XG5cbkBtaXhpbiB1c2VyLXNlbGVjdCgkdmFsdWUpIHtcbiAgICAtbW96LXVzZXItc2VsZWN0OiAkdmFsdWU7IFxuICAgIC1vLXVzZXItc2VsZWN0OiAkdmFsdWU7IFxuICAgIC1raHRtbC11c2VyLXNlbGVjdDogJHZhbHVlOyBcbiAgICAtd2Via2l0LXVzZXItc2VsZWN0OiAkdmFsdWU7XG4gICAgLW1zLXVzZXItc2VsZWN0OiAkdmFsdWU7IFxuICAgIHVzZXItc2VsZWN0OiAkdmFsdWU7XG59IiwiLnRvYXN0LXRpdGxlIHtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4udG9hc3QtbWVzc2FnZSB7XG4gIC1tcy13b3JkLXdyYXA6IGJyZWFrLXdvcmQ7XG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbn1cbi50b2FzdC1tZXNzYWdlIGEsXG4udG9hc3QtbWVzc2FnZSBsYWJlbCB7XG4gIGNvbG9yOiAjZmZmZmZmO1xufVxuLnRvYXN0LW1lc3NhZ2UgYTpob3ZlciB7XG4gIGNvbG9yOiAjY2NjY2NjO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4udG9hc3QtY2xvc2UtYnV0dG9uIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICByaWdodDogLTAuM2VtO1xuICB0b3A6IC0wLjNlbTtcbiAgZmxvYXQ6IHJpZ2h0O1xuICBmb250LXNpemU6IDIwcHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBjb2xvcjogI2ZmZmZmZjtcbiAgLXdlYmtpdC10ZXh0LXNoYWRvdzogMCAxcHggMCAjZmZmZmZmO1xuICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjZmZmZmZmO1xuICBvcGFjaXR5OiAwLjg7XG4gIC1tcy1maWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTgwKTtcbiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTgwKTtcbn1cbi50b2FzdC1jbG9zZS1idXR0b246aG92ZXIsXG4udG9hc3QtY2xvc2UtYnV0dG9uOmZvY3VzIHtcbiAgY29sb3I6ICMwMDAwMDA7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvcGFjaXR5OiAwLjQ7XG4gIC1tcy1maWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTQwKTtcbiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTQwKTtcbn1cbi8qQWRkaXRpb25hbCBwcm9wZXJ0aWVzIGZvciBidXR0b24gdmVyc2lvblxuIGlPUyByZXF1aXJlcyB0aGUgYnV0dG9uIGVsZW1lbnQgaW5zdGVhZCBvZiBhbiBhbmNob3IgdGFnLlxuIElmIHlvdSB3YW50IHRoZSBhbmNob3IgdmVyc2lvbiwgaXQgcmVxdWlyZXMgYGhyZWY9XCIjXCJgLiovXG5idXR0b24udG9hc3QtY2xvc2UtYnV0dG9uIHtcbiAgcGFkZGluZzogMDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgYm9yZGVyOiAwO1xuICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XG59XG4udG9hc3QtdG9wLWNlbnRlciB7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xufVxuLnRvYXN0LWJvdHRvbS1jZW50ZXIge1xuICBib3R0b206IDA7XG4gIHJpZ2h0OiAwO1xuICB3aWR0aDogMTAwJTtcbn1cbi50b2FzdC10b3AtZnVsbC13aWR0aCB7XG4gIHRvcDogMDtcbiAgcmlnaHQ6IDA7XG4gIHdpZHRoOiAxMDAlO1xufVxuLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoIHtcbiAgYm90dG9tOiAwO1xuICByaWdodDogMDtcbiAgd2lkdGg6IDEwMCU7XG59XG4udG9hc3QtdG9wLWxlZnQge1xuICB0b3A6IDEycHg7XG4gIGxlZnQ6IDEycHg7XG59XG4udG9hc3QtdG9wLXJpZ2h0IHtcbiAgdG9wOiAxMnB4O1xuICByaWdodDogMTJweDtcbn1cbi50b2FzdC1ib3R0b20tcmlnaHQge1xuICByaWdodDogMTJweDtcbiAgYm90dG9tOiAxMnB4O1xufVxuLnRvYXN0LWJvdHRvbS1sZWZ0IHtcbiAgYm90dG9tOiAxMnB4O1xuICBsZWZ0OiAxMnB4O1xufVxuI3RvYXN0LWNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogOTk5OTk5O1xuICAvKm92ZXJyaWRlcyovXG5cbn1cbiN0b2FzdC1jb250YWluZXIgKiB7XG4gIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuI3RvYXN0LWNvbnRhaW5lciA+IGRpdiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgbWFyZ2luOiAwIDAgNnB4O1xuICBwYWRkaW5nOiAxNXB4IDE1cHggMTVweCA1MHB4O1xuICB3aWR0aDogMzAwcHg7XG4gIC1tb3otYm9yZGVyLXJhZGl1czogM3B4IDNweCAzcHggM3B4O1xuICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDNweCAzcHggM3B4IDNweDtcbiAgYm9yZGVyLXJhZGl1czogM3B4IDNweCAzcHggM3B4O1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAxNXB4IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgLW1vei1ib3gtc2hhZG93OiAwIDAgMTJweCAjOTk5OTk5O1xuICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAxMnB4ICM5OTk5OTk7XG4gIGJveC1zaGFkb3c6IDAgMCAxMnB4ICM5OTk5OTk7XG4gIGNvbG9yOiAjZmZmZmZmO1xuICBvcGFjaXR5OiAwLjg7XG4gIC1tcy1maWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PTgwKTtcbiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTgwKTtcbn1cbiN0b2FzdC1jb250YWluZXIgPiA6aG92ZXIge1xuICAtbW96LWJveC1zaGFkb3c6IDAgMCAxMnB4ICMwMDAwMDA7XG4gIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDEycHggIzAwMDAwMDtcbiAgYm94LXNoYWRvdzogMCAwIDEycHggIzAwMDAwMDtcbiAgb3BhY2l0eTogMTtcbiAgLW1zLWZpbHRlcjogcHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9MTAwKTtcbiAgZmlsdGVyOiBhbHBoYShvcGFjaXR5PTEwMCk7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbiN0b2FzdC1jb250YWluZXIgPiAudG9hc3QtaW5mbyB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFHd1NVUkJWRWhMdFphOVNnTkJFTWM5c1V4eFJjb1VLU3pTV0loWHBGTWhoWVdGaGFCZzR5UFlpV0NYWnhCTEVSc0xSUzNFUWtFZndDS2RqV0pBd1NLQ2dvS0NjdWR2NE81WUxydDdFemdYaGlVMy80K2IyY2ttd1ZqSlNwS2tRNndBaTRnd2hUK3ozd1JCY0V6MHlqU3NlVVRyY1J5ZnNIc1htRDBBbWJIT0M5SWk4VkltbnVYQlBnbEhwUTV3d1NWTTdzTm5URzdaYTRKd0RkQ2p4eUFpSDNueUEybXRhVEp1ZmlEWjVkQ2FxbEl0SUxoMU5IYXRmTjVza3ZqeDlaMzhtNjlDZ3p1WG1aZ1ZyUElHRTc2M0p4OXFLc1JveldZdzZ4T0hkRVIrbm4yS2tPK0JiK1VWNUNCTjZXQzZRdEJnYlJWb3pyYWhBYm1tNkh0VXNndFBDMTl0RmR4WFpZQk9ma2JtRkoxVmFIQTFWQUhqZDBwcDcwb1RaenZSK0VWcngyWWdmZHNxNmV1NTVCSFlSOGhsY2tpK24ra0VSVUZHOEJyQTBCd2plQXYyTThXTFFCdGN5K1NENmZOc21uQjNBbEJMcmdUdFZXMWMyUU40YlZXTEFUYUlTNjBKMkR1NXkxVGlKZ2pTQnZGVlpnVG13Q1UrZEFaRm9QeEdFRXM4bnlIQzlCd2UyR3ZFSnYyV1haYjB2amR5RlQ0Q3hrM2Uva0lxbE9Hb1ZMd3dQZXZwWUhUKzAwVCtoV3dYRGY0QUpBT1VxV2NEaGJ3QUFBQUFTVVZPUks1Q1lJST1cIikgIWltcG9ydGFudDtcbn1cbiN0b2FzdC1jb250YWluZXIgPiAudG9hc3QtZXJyb3Ige1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJnQUFBQVlDQVlBQUFEZ2R6MzRBQUFBQVhOU1IwSUFyczRjNlFBQUFBUm5RVTFCQUFDeGp3djhZUVVBQUFBSmNFaFpjd0FBRHNNQUFBN0RBY2R2cUdRQUFBSE9TVVJCVkVoTHJaYS9TZ05CRU1aemgwV0tDQ2xTQ0thSVlPRUQrQUFLZVFRTEc4SFd6dExDSW1CcllhZGdJZFkrZ0lLTllrQkZTd3U3Q0FvcUNna2tvR0JJL0UyOFBkYkxabWVETGd6WnpjeDgzL3paMlNTWEMxajlmcitJMUhxOTNnMnl4SDRpd00xdmtvQldBZHhDbXB6VHhma04yUmN5Wk5hSEZJa1NvMTArOGtneGtYSVVSVjVIR3hUbUZ1Yzc1QjJSZlFrcHhIRzhhQWdhQUZhMHRBSHFZRmZRN0l3ZTJ5aE9EazgrSjRDN3lBb1JUV0kzdy80a2xHUmdSNGxPN1JwbjkrZ3ZNeVdwK3V4Rmg4K0grQVJsZ04xbkp1SnVRQVl2TmtFbndHRmNrMThFcjRxM2VnRWMvb08rbWhMZEtnUnloZE5GaWFjQzBybE9DYmhOVno0SDlGbkFZZ0RCdlUzUUlpb1psSkZMSnRzb0hZUkRmaVpvVXlJeHFDdFJwVmxBTnEwRVU0ZEFwanJ0Z2V6UEZhZDVTMTlXZ2prYzBoTlZudUY0SGpWQTZDN1FyU0lieWxCK29aZTNhSGdCc3FsTnFLWUg0OGpYeUpLTXVBYml5Vko4S3phQjNlUmMwcGc5VndRNG5pRnJ5STY4cWlPaTNBYmp3ZHNmbkF0azBiQ2pUTEpLcjZtckQ5ZzhpcS9TL0I4MWhndU9NbFFUblZ5RzQwd0Fjam5tZ3NDTkVTRHJqbWU3d2ZmdFA0UDdTUDROM0NKWmR2em9OeUdxMmMvSFdPWEpHc3ZWZytSQS9rMk1DL3dONkkyWUEyUHQ4R2tBQUFBQVNVVk9SSzVDWUlJPVwiKSAhaW1wb3J0YW50O1xufVxuI3RvYXN0LWNvbnRhaW5lciA+IC50b2FzdC1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCZ0FBQUFZQ0FZQUFBRGdkejM0QUFBQUFYTlNSMElBcnM0YzZRQUFBQVJuUVUxQkFBQ3hqd3Y4WVFVQUFBQUpjRWhaY3dBQURzTUFBQTdEQWNkdnFHUUFBQURzU1VSQlZFaExZMkFZQmZRTWdmLy8vM1A4Ky9ldkFJZ3ZBL0ZzSUYrQmF2WUREV01CR3JvYVNNTUJpRThWQzdBWkRySUZhTUZuaWkzQVpUalVnc1VVV1VEQThPZEFINmlRYlFFaHc0SHlHc1BFY0tCWEJJQzRBUmhleDRHNEJzam13ZVUxc29JRmFHZy9XdG9GWlJJWmRFdklNaHhrQ0NqWElWc0FUVjZnRkdBQ3M0UnN3MEVHZ0lJSDNRSllKZ0hTQVJRWkRyV0FCK2phd3pncytRMlVPNDlEN2puUlNSR29FRlJJTGNkbUVNV0dJMGNtMEpKMlFwWUExUkR2Y216SkVXaEFCaEQvcHFyTDBTMENXdUFCS2duUmtpOWxMc2VTN2cyQWxxd0hXUVNLSDRvS0xySUxwUkdoRVFDdzJMaVJVSWE0bHdBQUFBQkpSVTVFcmtKZ2dnPT1cIikgIWltcG9ydGFudDtcbn1cbiN0b2FzdC1jb250YWluZXIgPiAudG9hc3Qtd2FybmluZyB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQmdBQUFBWUNBWUFBQURnZHozNEFBQUFBWE5TUjBJQXJzNGM2UUFBQUFSblFVMUJBQUN4and2OFlRVUFBQUFKY0VoWmN3QUFEc01BQUE3REFjZHZxR1FBQUFHWVNVUkJWRWhMNVpTdlRzTlFGTWJYWkdJQ01ZR1ltSmhBUUlKQUlDWVFQQUFDaVNEQjhBaUlDUVFKVDRDcVFFd2dKdllBU0FRQ2laaVltSmhBSUJBVENBUkp5KzlyVHNsZGQ4c0t1MU0wK2RMYjA1N3Y2L2xicS8yckswbVMvVFJOajljV05BS1BZSUpJSTdnSXhDY1E1MWN2cUlEK0dJRVg4QVNHNEIxYks1Z0laRmVRZm9KZEVYT2ZnWDRRQVFnN2tIMkE2NXlRODdseXhiMjdzZ2drQXpBdUZoYmJnMUsya2dDa0IxYlZ3eUlSOW0yTDdQUlBJaERVSVhnR3R5S3c1NzV5ejNsVE5zNlg0SlhualYrTEtNL20zTXlkblRidE9LSWp0ejZWaENCcTR2U20zbmNkckQybGswVmdVWFNWS2pWREpYSnppalcxUlFkc1U3Rjc3SGU4dTY4a29OWlR6OE96NXlHYTZKM0gzbFoweFlnWEJLMlF5bWxXV0ErUlduWWhza0xCdjJ2bUUraEJNQ3RiQTdLWDVkcld5UlQvMkpzcVoySXZmQjlZNGJXRE5NRmJKUkZtQzlFNzRTb1MwQ3F1bHdqa0MwKzVicGNWMUNaOE5NZWo0cGp5MFUrZG9EUXNHeW8xaHpWSnR0SWpoUTdHbkJ0UkZOMVVhclVsSDhGM3hpY3QrSFkwN3JFem9VR1BsV2NqUkZScjQvZ0NoWmdjM1pMMmQ4b0FBQUFBU1VWT1JLNUNZSUk9XCIpICFpbXBvcnRhbnQ7XG59XG4jdG9hc3QtY29udGFpbmVyLnRvYXN0LXRvcC1jZW50ZXIgPiBkaXYsXG4jdG9hc3QtY29udGFpbmVyLnRvYXN0LWJvdHRvbS1jZW50ZXIgPiBkaXYge1xuICB3aWR0aDogMzAwcHg7XG4gIG1hcmdpbjogYXV0bztcbn1cbiN0b2FzdC1jb250YWluZXIudG9hc3QtdG9wLWZ1bGwtd2lkdGggPiBkaXYsXG4jdG9hc3QtY29udGFpbmVyLnRvYXN0LWJvdHRvbS1mdWxsLXdpZHRoID4gZGl2IHtcbiAgd2lkdGg6IDk2JTtcbiAgbWFyZ2luOiBhdXRvO1xufVxuLnRvYXN0IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAzMDMwMztcbn1cbi50b2FzdC1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzUxYTM1MTtcbn1cbi50b2FzdC1lcnJvciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNiZDM2MmY7XG59XG4udG9hc3QtaW5mbyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyZjk2YjQ7XG59XG4udG9hc3Qtd2FybmluZyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmODk0MDY7XG59XG5cbi50b2FzdC1wcm9ncmVzcyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogMDtcbiAgYm90dG9tOiAwO1xuICBoZWlnaHQ6IDRweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDtcbiAgb3BhY2l0eTogMC40O1xuICAtbXMtZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEoT3BhY2l0eT00MCk7XG4gIGZpbHRlcjogYWxwaGEob3BhY2l0eT00MCk7XG59XG5cbi8qUmVzcG9uc2l2ZSBEZXNpZ24qL1xuQG1lZGlhIGFsbCBhbmQgKG1heC13aWR0aDogMjQwcHgpIHtcbiAgI3RvYXN0LWNvbnRhaW5lciA+IGRpdiB7XG4gICAgcGFkZGluZzogOHB4IDhweCA4cHggNTBweDtcbiAgICB3aWR0aDogMTFlbTtcbiAgfVxuICAjdG9hc3QtY29udGFpbmVyIC50b2FzdC1jbG9zZS1idXR0b24ge1xuICAgIHJpZ2h0OiAtMC4yZW07XG4gICAgdG9wOiAtMC4yZW07XG4gIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDI0MXB4KSBhbmQgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgI3RvYXN0LWNvbnRhaW5lciA+IGRpdiB7XG4gICAgcGFkZGluZzogOHB4IDhweCA4cHggNTBweDtcbiAgICB3aWR0aDogMThlbTtcbiAgfVxuICAjdG9hc3QtY29udGFpbmVyIC50b2FzdC1jbG9zZS1idXR0b24ge1xuICAgIHJpZ2h0OiAtMC4yZW07XG4gICAgdG9wOiAtMC4yZW07XG4gIH1cbn1cbkBtZWRpYSBhbGwgYW5kIChtaW4td2lkdGg6IDQ4MXB4KSBhbmQgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgI3RvYXN0LWNvbnRhaW5lciA+IGRpdiB7XG4gICAgcGFkZGluZzogMTVweCAxNXB4IDE1cHggNTBweDtcbiAgICB3aWR0aDogMjVlbTtcbiAgfVxufVxuIiwiLyogTWFrZSBjbGlja3MgcGFzcy10aHJvdWdoICovXG4jbnByb2dyZXNzIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbiNucHJvZ3Jlc3MgLmJhciB7XG4gIGJhY2tncm91bmQ6ICMyOWQ7XG5cbiAgcG9zaXRpb246IGZpeGVkO1xuICB6LWluZGV4OiAxMDMxO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG5cbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMnB4O1xufVxuXG4vKiBGYW5jeSBibHVyIGVmZmVjdCAqL1xuI25wcm9ncmVzcyAucGVnIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDBweDtcbiAgd2lkdGg6IDEwMHB4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJveC1zaGFkb3c6IDAgMCAxMHB4ICMyOWQsIDAgMCA1cHggIzI5ZDtcbiAgb3BhY2l0eTogMS4wO1xuXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoM2RlZykgdHJhbnNsYXRlKDBweCwgLTRweCk7XG4gICAgICAtbXMtdHJhbnNmb3JtOiByb3RhdGUoM2RlZykgdHJhbnNsYXRlKDBweCwgLTRweCk7XG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoM2RlZykgdHJhbnNsYXRlKDBweCwgLTRweCk7XG59XG5cbi8qIFJlbW92ZSB0aGVzZSB0byBnZXQgcmlkIG9mIHRoZSBzcGlubmVyICovXG4jbnByb2dyZXNzIC5zcGlubmVyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgei1pbmRleDogMTAzMTtcbiAgdG9wOiAxNXB4O1xuICByaWdodDogMTVweDtcbn1cblxuI25wcm9ncmVzcyAuc3Bpbm5lci1pY29uIHtcbiAgd2lkdGg6IDE4cHg7XG4gIGhlaWdodDogMThweDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcblxuICBib3JkZXI6IHNvbGlkIDJweCB0cmFuc3BhcmVudDtcbiAgYm9yZGVyLXRvcC1jb2xvcjogIzI5ZDtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICMyOWQ7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcblxuICAtd2Via2l0LWFuaW1hdGlvbjogbnByb2dyZXNzLXNwaW5uZXIgNDAwbXMgbGluZWFyIGluZmluaXRlO1xuICAgICAgICAgIGFuaW1hdGlvbjogbnByb2dyZXNzLXNwaW5uZXIgNDAwbXMgbGluZWFyIGluZmluaXRlO1xufVxuXG4ubnByb2dyZXNzLWN1c3RvbS1wYXJlbnQge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5ucHJvZ3Jlc3MtY3VzdG9tLXBhcmVudCAjbnByb2dyZXNzIC5zcGlubmVyLFxuLm5wcm9ncmVzcy1jdXN0b20tcGFyZW50ICNucHJvZ3Jlc3MgLmJhciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbn1cblxuQC13ZWJraXQta2V5ZnJhbWVzIG5wcm9ncmVzcy1zcGlubmVyIHtcbiAgMCUgICB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH1cbiAgMTAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfVxufVxuQGtleWZyYW1lcyBucHJvZ3Jlc3Mtc3Bpbm5lciB7XG4gIDAlICAgeyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfVxuICAxMDAlIHsgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgfVxufVxuXG4iLCJAaW1wb3J0IFwiY29tcGFzcy9mdW5jdGlvbnNcIjtcbkBpbXBvcnQgXCJjb21wYXNzL3V0aWxpdGllc1wiO1xuQGltcG9ydCBcImNvbXBhc3MvdHlwb2dyYXBoeVwiO1xuQGltcG9ydCBcImNvbXBhc3MvY3NzM1wiO1xuIiwiQGltcG9ydCBcImZ1bmN0aW9ucy9saXN0c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jcm9zc19icm93c2VyX3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvZ3JhZGllbnRfc3VwcG9ydFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jb25zdGFudHNcIjtcbkBpbXBvcnQgXCJmdW5jdGlvbnMvZGlzcGxheVwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9jb2xvcnNcIjtcbiIsIi8vXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgbGlzdCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2xpc3RzLnJiXG4vL1xuXG5cbi8vIGNvbXBhY3QgaXMgcGFydCBvZiBsaWJzYXNzXG5cbkBmdW5jdGlvbiAtY29tcGFzcy1udGgoJGxpc3QsICRwbGFjZSkge1xuICAvLyBZZXAsIFNhc3MtbGlzdHMgYXJlIDEtaW5kZXhlZC5cbiAgQGlmICRwbGFjZSA9PSBcImZpcnN0XCIge1xuICAgICRwbGFjZTogMTtcbiAgfVxuICBAaWYgJHBsYWNlID09IFwibGFzdFwiIHtcbiAgICAkcGxhY2U6IGxlbmd0aCgkbGlzdCk7XG4gIH1cbiAgQHJldHVybiBudGgoJGxpc3QsICRwbGFjZSk7XG59XG5cbi8vIGNvbXBhc3NfbGlzdCBjYW4ndCBiZSBpbXBsZW1lbnRlZCBpbiBzYXNzIHNjcmlwdFxuXG5AZnVuY3Rpb24gLWNvbXBhc3Mtc3BhY2UtbGlzdCgkaXRlbTEsICRpdGVtMjpudWxsLCAkaXRlbTM6bnVsbCwgJGl0ZW00Om51bGwsICRpdGVtNTpudWxsLCAkaXRlbTY6bnVsbCwgJGl0ZW03Om51bGwsICRpdGVtODpudWxsLCAkaXRlbTk6bnVsbCkge1xuICAkaXRlbXM6ICgpO1xuICAvLyBTdXBwb3J0IGZvciBwb2x5bW9ycGhpc20uXG4gIEBpZiB0eXBlLW9mKCRpdGVtMSkgPT0gJ2xpc3QnIHtcbiAgICAvLyBQYXNzaW5nIGEgc2luZ2xlIGFycmF5IG9mIHByb3BlcnRpZXMuXG4gICAgJGl0ZW1zOiAkaXRlbTE7XG4gIH0gQGVsc2Uge1xuICAgICRpdGVtczogJGl0ZW0xICRpdGVtMiAkaXRlbTMgJGl0ZW00ICRpdGVtNSAkaXRlbTYgJGl0ZW03ICRpdGVtOCAkaXRlbTk7XG4gIH1cblxuICAkZnVsbDogZmlyc3QtdmFsdWUtb2YoJGl0ZW1zKTtcblxuICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIGxlbmd0aCgkaXRlbXMpIHtcbiAgICAkaXRlbTogbnRoKCRpdGVtcywgJGkpO1xuICAgIEBpZiAkaXRlbSAhPSBudWxsIHtcbiAgICAgICRmdWxsOiAkZnVsbCAkaXRlbTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRmdWxsO1xufVxuXG5AZnVuY3Rpb24gLWNvbXBhc3MtbGlzdC1zaXplKCRsaXN0KSB7XG4gIEByZXR1cm4gbGVuZ3RoKCRsaXN0KTtcbn1cblxuQGZ1bmN0aW9uIC1jb21wYXNzLXNsaWNlKCRsaXN0LCAkc3RhcnQsICRlbmQ6IGZhbHNlKSB7XG4gIEBpZiAkZW5kID09IGZhbHNlIHtcbiAgICAkZW5kOiBsZW5ndGgoJGxpc3QpO1xuICB9XG4gICRmdWxsOiBudGgoJGxpc3QsICRzdGFydCk7XG4gIEBmb3IgJGkgZnJvbSAkc3RhcnQgKyAxIHRocm91Z2ggJGVuZCB7XG4gICAgJGZ1bGw6ICRmdWxsLCBudGgoJGxpc3QsICRpKTtcbiAgfVxuICBAcmV0dXJuICRmdWxsO1xufVxuXG5AZnVuY3Rpb24gcmVqZWN0KCRsaXN0LCAkcmVqZWN0MSwgJHJlamVjdDI6bnVsbCwgJHJlamVjdDM6bnVsbCwgJHJlamVjdDQ6bnVsbCwgJHJlamVjdDU6bnVsbCwgJHJlamVjdDY6bnVsbCwgJHJlamVjdDc6bnVsbCwgJHJlamVjdDg6bnVsbCwgJHJlamVjdDk6bnVsbCkge1xuICAkcmVqZWN0czogJHJlamVjdDEsICRyZWplY3QyLCAkcmVqZWN0MywgJHJlamVjdDQsICRyZWplY3Q1LCAkcmVqZWN0NiwgJHJlamVjdDcsICRyZWplY3Q4LCAkcmVqZWN0OTtcblxuICAkZnVsbDogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRsaXN0IHtcbiAgICBAaWYgaW5kZXgoJHJlamVjdHMsICRpdGVtKSB7fVxuICAgIEBlbHNlIHtcbiAgICAgIEBpZiAkZnVsbCB7XG4gICAgICAgICRmdWxsOiAkZnVsbCwgJGl0ZW07XG4gICAgICB9XG4gICAgICBAZWxzZSB7XG4gICAgICAgICRmdWxsOiAkaXRlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQHJldHVybiAkZnVsbDtcbn1cblxuQGZ1bmN0aW9uIGZpcnN0LXZhbHVlLW9mKCRsaXN0KSB7XG4gIEByZXR1cm4gbnRoKCRsaXN0LCAxKTtcbn1cblxuQGZ1bmN0aW9uIGNvbXBhY3QoJHZhcnMuLi4pIHtcbiAgJHNlcGFyYXRvcjogbGlzdC1zZXBhcmF0b3IoJHZhcnMpO1xuICAkbGlzdDogKCk7XG4gIEBlYWNoICR2YXIgaW4gJHZhcnMge1xuICAgICAgQGlmICR2YXIge1xuICAgICAgICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICR2YXIsICRzZXBhcmF0b3IpO1xuICAgICAgfVxuICB9XG4gIEByZXR1cm4gJGxpc3Q7XG59XG4iLCIvLyBcbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBjcm9zcyBicm93c2VyIHN1cHBvcnQgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jcm9zc19icm93c2VyX3N1cHBvcnQucmJcbi8vIFxuXG5AZnVuY3Rpb24gcHJlZml4ZWQoJHByZWZpeCwgJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTk7XG4gICRwcmVmaXhlZDogZmFsc2U7XG4gIEBlYWNoICRpdGVtIGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgdHlwZS1vZigkaXRlbSkgPT0gJ3N0cmluZycge1xuICAgICAgJHByZWZpeGVkOiAkcHJlZml4ZWQgb3Igc3RyLWluZGV4KCRpdGVtLCAndXJsJykgIT0gMSBhbmQgc3RyLWluZGV4KCRpdGVtLCAncmdiJykgIT0gMSBhbmQgc3RyLWluZGV4KCRpdGVtLCAnIycpICE9IDE7XG4gICAgfSBAZWxzZWlmIHR5cGUtb2YoJGl0ZW0pID09ICdjb2xvcicge1xuICAgIH0gQGVsc2VpZiAkaXRlbSAhPSBudWxsIHtcbiAgICAgICRwcmVmaXhlZDogdHJ1ZTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkcHJlZml4ZWQ7XG59XG5cbkBmdW5jdGlvbiBwcmVmaXgoJHByZWZpeCwgJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgJHByb3BlcnRpZXM6IFwiXCI7XG5cbiAgLy8gU3VwcG9ydCBmb3IgcG9seW1vcnBoaXNtLlxuICBAaWYgdHlwZS1vZigkcHJvcGVydHkxKSA9PSAnbGlzdCcge1xuICAgIC8vIFBhc3NpbmcgYSBzaW5nbGUgYXJyYXkgb2YgcHJvcGVydGllcy5cbiAgICAkcHJvcGVydGllczogJHByb3BlcnR5MTtcbiAgfSBAZWxzZSB7XG4gICAgLy8gUGFzc2luZyBtdWx0aXBsZSBwcm9wZXJ0aWVzLlxuICAgICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5O1xuICB9XG5cbiAgJHByb3BzOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiAkaXRlbSA9PSBudWxsIHt9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmIHByZWZpeGVkKCRwcmVmaXgsICRpdGVtKSB7XG4gICAgICAgICRpdGVtOiAjeyRwcmVmaXh9LSN7JGl0ZW19O1xuICAgICAgfVxuICAgICAgQGlmICRwcm9wcyB7XG4gICAgICAgICRwcm9wczogJHByb3BzLCAkaXRlbTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJHByb3BzOiAkaXRlbTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgQHJldHVybiAkcHJvcHM7XG59XG5cbkBmdW5jdGlvbiAtc3ZnKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KCctc3ZnJywgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7XG59XG5cbkBmdW5jdGlvbiAtb3dnKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KCctb3dnJywgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7XG59XG5cbkBmdW5jdGlvbiAtd2Via2l0KCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KCctd2Via2l0JywgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7XG59XG5cbkBmdW5jdGlvbiAtbW96KCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KCctbW96JywgJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OSk7XG59XG5cbkBmdW5jdGlvbiAtbygkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLW8nLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC1waWUoJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1waWUnLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cbiIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGdyYWRpZW50IHN1cHBvcnQgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi92MC4xMi4yL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvZ3JhZGllbnRfc3VwcG9ydC5yYlxuLy8gXG5cbkBmdW5jdGlvbiBjb2xvci1zdG9wcygkaXRlbTEsICRpdGVtMjpudWxsLCAkaXRlbTM6bnVsbCwgJGl0ZW00Om51bGwsICRpdGVtNTpudWxsLCAkaXRlbTY6bnVsbCwgJGl0ZW03Om51bGwsICRpdGVtODpudWxsLCAkaXRlbTk6bnVsbCkge1xuICAkaXRlbXM6ICRpdGVtMiwgJGl0ZW0zLCAkaXRlbTQsICRpdGVtNSwgJGl0ZW02LCAkaXRlbTcsICRpdGVtOCwgJGl0ZW05O1xuICAkZnVsbDogJGl0ZW0xO1xuICBAZWFjaCAkaXRlbSBpbiAkaXRlbXMge1xuICAgIEBpZiAkaXRlbSAhPSBudWxsIHtcbiAgICAgICRmdWxsOiAkZnVsbCwgJGl0ZW07XG4gICAgfSAgICBcbiAgfVxuICBAcmV0dXJuICRmdWxsO1xufSIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNvbnN0YW50cyBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2NvbnN0YW50cy5yYlxuLy8gXG5cbkBmdW5jdGlvbiBvcHBvc2l0ZS1wb3NpdGlvbigkZnJvbSkge1xuICAgIEBpZiAoJGZyb20gPT0gdG9wKSB7XG4gICAgICAgIEByZXR1cm4gYm90dG9tO1xuICAgIH0gQGVsc2UgaWYgKCRmcm9tID09IGJvdHRvbSkge1xuICAgICAgICBAcmV0dXJuIHRvcDtcbiAgICB9IEBlbHNlIGlmICgkZnJvbSA9PSBsZWZ0KSB7XG4gICAgICAgIEByZXR1cm4gcmlnaHQ7XG4gICAgfSBAZWxzZSBpZiAoJGZyb20gPT0gcmlnaHQpIHtcbiAgICAgICAgQHJldHVybiBsZWZ0O1xuICAgIH0gQGVsc2UgaWYgKCRmcm9tID09IGNlbnRlcikge1xuICAgICAgICBAcmV0dXJuIGNlbnRlcjtcbiAgICB9XG59XG4iLCIvLyBcbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBkaXNwbGF5IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2NvcmUvbGliL2NvbXBhc3MvY29yZS9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2Rpc3BsYXkucmJcbi8vIFxuXG5AZnVuY3Rpb24gZWxlbWVudHMtb2YtdHlwZSgkdHlwZSl7XG4gICAgQGlmICgkdHlwZSA9PSBibG9jayl7XG4gICAgICAgIEByZXR1cm4gYWRkcmVzcywgYXJ0aWNsZSwgYXNpZGUsIGJsb2NrcXVvdGUsIGNlbnRlciwgZGlyLCBkaXYsIGRkLCBkZXRhaWxzLCBkbCwgZHQsIGZpZWxkc2V0LCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvcm0sIGZvb3RlciwgZnJhbWVzZXQsIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIGhyLCBoZWFkZXIsIGhncm91cCwgaXNpbmRleCwgbWFpbiwgbWVudSwgbmF2LCBub2ZyYW1lcywgbm9zY3JpcHQsIG9sLCBwLCBwcmUsIHNlY3Rpb24sIHN1bW1hcnksIHVsO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGlubGluZSl7XG4gICAgICAgIEByZXR1cm4gYSwgYWJiciwgYWNyb255bSwgYXVkaW8sIGIsIGJhc2Vmb250LCBiZG8sIGJpZywgYnIsIGNhbnZhcywgY2l0ZSwgY29kZSwgY29tbWFuZCwgZGF0YWxpc3QsIGRmbiwgZW0sIGVtYmVkLCBmb250LCBpLCBpbWcsIGlucHV0LCBrZXlnZW4sIGtiZCwgbGFiZWwsIG1hcmssIG1ldGVyLCBvdXRwdXQsIHByb2dyZXNzLCBxLCBycCwgcnQsIHJ1YnksIHMsIHNhbXAsIHNlbGVjdCwgc21hbGwsIHNwYW4sIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdGV4dGFyZWEsIHRpbWUsIHR0LCB1LCB2YXIsIHZpZGVvLCB3YnI7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaW5saW5lLWJsb2NrKXtcbiAgICAgICAgQHJldHVybiBpbWc7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUpe1xuICAgICAgICBAcmV0dXJuIHRhYmxlO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGxpc3QtaXRlbSl7XG4gICAgICAgIEByZXR1cm4gbGk7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUtcm93LWdyb3VwKXtcbiAgICAgICAgQHJldHVybiB0Ym9keTtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1oZWFkZXItZ3JvdXApe1xuICAgICAgICBAcmV0dXJuIHRoZWFkO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLWZvb3Rlci1ncm91cCl7XG4gICAgICAgIEByZXR1cm4gdGZvb3Q7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUtcm93KXtcbiAgICAgICAgQHJldHVybiB0cjtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1jZWxsKXtcbiAgICAgICAgQHJldHVybiB0aCwgdGQ7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaHRtbDUtYmxvY2spe1xuICAgICAgICBAcmV0dXJuIGFydGljbGUsIGFzaWRlLCBkZXRhaWxzLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1haW4sIG1lbnUsIG5hdiwgc2VjdGlvbiwgc3VtbWFyeTtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBodG1sNS1pbmxpbmUpe1xuICAgICAgICBAcmV0dXJuIGF1ZGlvLCBjYW52YXMsIGNvbW1hbmQsIGRhdGFsaXN0LCBlbWJlZCwga2V5Z2VuLCBtYXJrLCBtZXRlciwgb3V0cHV0LCBwcm9ncmVzcywgcnAsIHJ0LCBydWJ5LCB0aW1lLCB2aWRlbywgd2JyO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGh0bWw1KXtcbiAgICAgICAgQHJldHVybiBhcnRpY2xlLCBhc2lkZSwgYXVkaW8sIGNhbnZhcywgY29tbWFuZCwgZGF0YWxpc3QsIGRldGFpbHMsIGVtYmVkLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIGtleWdlbiwgbWFpbiwgbWFyaywgbWVudSwgbWV0ZXIsIG5hdiwgb3V0cHV0LCBwcm9ncmVzcywgcnAsIHJ0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LCB0aW1lLCB2aWRlbywgd2JyO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRleHQtaW5wdXQpe1xuICAgICAgICBAcmV0dXJuIGlucHV0LCB0ZXh0YXJlYTtcbiAgICB9XG59XG4iLCIvLyBcbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBjb2xvcnMgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvY29yZS9saWIvY29tcGFzcy9jb3JlL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY29sb3JzLnJiXG4vL1xuXG4vLyBhIGdlbmVyaWNpemVkIHZlcnNpb24gb2YgbGlnaHRlbi9kYXJrZW4gc28gdGhhdCBuZWdhdGl2ZSB2YWx1ZXMgY2FuIGJlIHVzZWQuXG5AZnVuY3Rpb24gYWRqdXN0LWxpZ2h0bmVzcygkY29sb3IsICRhbW91bnQpIHtcbiAgICBAcmV0dXJuIGFkanVzdC1jb2xvcigkY29sb3IsICRsaWdodG5lc3M6ICRhbW91bnQpO1xufVxuXG4vLyBTY2FsZXMgYSBjb2xvcidzIGxpZ2h0bmVzcyBieSBzb21lIHBlcmNlbnRhZ2UuXG4vLyBJZiB0aGUgYW1vdW50IGlzIG5lZ2F0aXZlLCB0aGUgY29sb3IgaXMgc2NhbGVkIGRhcmtlciwgaWYgcG9zaXRpdmUsIGl0IGlzIHNjYWxlZCBsaWdodGVyLlxuLy8gVGhpcyB3aWxsIG5ldmVyIHJldHVybiBhIHB1cmUgbGlnaHQgb3IgZGFyayBjb2xvciB1bmxlc3MgdGhlIGFtb3VudCBpcyAxMDAlLlxuQGZ1bmN0aW9uIHNjYWxlLWxpZ2h0bmVzcygkY29sb3IsICRhbW91bnQpIHtcbiAgICBAcmV0dXJuIHNjYWxlLWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGFtb3VudCk7XG59XG5cbi8vIGEgZ2VuZXJpY2l6ZWQgdmVyc2lvbiBvZiBzYXR1cmF0ZS9kZXNhdHVyYXRlIHNvIHRoYXQgbmVnYXRpdmUgdmFsdWVzIGNhbiBiZSB1c2VkLlxuQGZ1bmN0aW9uIGFkanVzdC1zYXR1cmF0aW9uKCRjb2xvciwgJGFtb3VudCkge1xuICAgIEByZXR1cm4gYWRqdXN0LWNvbG9yKCRjb2xvciwgJHNhdHVyYXRpb246ICRhbW91bnQpO1xufVxuXG4vLyBTY2FsZXMgYSBjb2xvcidzIHNhdHVyYXRpb24gYnkgc29tZSBwZXJjZW50YWdlLlxuLy8gSWYgdGhlIGFtb3VudCBpcyBuZWdhdGl2ZSwgdGhlIGNvbG9yIGlzIGRlc2F0dXJhdGVkLCBpZiBwb3NpdGl2ZSwgaXQgaXMgc2F0dXJhdGVkLlxuLy8gVGhpcyB3aWxsIG5ldmVyIHJldHVybiBhIHB1cmUgc2F0dXJhdGVkIG9yIGRlc2F0dXJhdGVkIGNvbG9yIHVubGVzcyB0aGUgYW1vdW50IGlzIDEwMCUuXG5AZnVuY3Rpb24gc2NhbGUtc2F0dXJhdGlvbigkY29sb3IsICRhbW91bnQpIHtcbiAgICBAcmV0dXJuIHNjYWxlLWNvbG9yKCRjb2xvciwgJHNhdHVyYXRpb246ICRhbW91bnQpO1xufVxuXG5AZnVuY3Rpb24gc2hhZGUoJGNvbG9yLCAkcGVyY2VudGFnZSkge1xuICAgIEByZXR1cm4gbWl4KCMwMDAwMDAsICRjb2xvciwgJHBlcmNlbnRhZ2UpO1xufVxuXG5AZnVuY3Rpb24gdGludCgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gICAgQHJldHVybiBtaXgoI2ZmZmZmZiwgJGNvbG9yLCAkcGVyY2VudGFnZSk7XG59XG5cbiIsIkBpbXBvcnQgXCJ1dGlsaXRpZXMvY29sb3JcIjtcbkBpbXBvcnQgXCJ1dGlsaXRpZXMvZ2VuZXJhbFwiO1xuQGltcG9ydCBcInV0aWxpdGllcy9zcHJpdGVzXCI7XG5AaW1wb3J0IFwidXRpbGl0aWVzL3RhYmxlc1wiO1xuXG4vLyBkZXByZWNhdGVkXG5AaW1wb3J0IFwidHlwb2dyYXBoeS9saW5rc1wiO1xuQGltcG9ydCBcInR5cG9ncmFwaHkvbGlzdHNcIjtcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L3RleHRcIjtcbiIsIkBpbXBvcnQgXCJjb2xvci9jb250cmFzdFwiOyIsIiRjb250cmFzdGVkLWRhcmstZGVmYXVsdDogICAjMDAwICFkZWZhdWx0O1xuJGNvbnRyYXN0ZWQtbGlnaHQtZGVmYXVsdDogICNmZmYgIWRlZmF1bHQ7XG4kY29udHJhc3RlZC1saWdodG5lc3MtdGhyZXNob2xkOiAzMCUgIWRlZmF1bHQ7XG5cbi8vIFJldHVybnMgdGhlIGAkbGlnaHRgIGNvbG9yIHdoZW4gdGhlIGAkY29sb3JgIGlzIGRhcmtcbi8vIGFuZCB0aGUgYCRkYXJrYCBjb2xvciB3aGVuIHRoZSBgJGNvbG9yYCBpcyBsaWdodC5cbi8vIFRoZSBgJHRocmVzaG9sZGAgaXMgYSBwZXJjZW50IGJldHdlZW4gYDAlYCBhbmQgYDEwMCVgIGFuZCBpdCBkZXRlcm1pbmVzXG4vLyB3aGVuIHRoZSBsaWdodG5lc3Mgb2YgYCRjb2xvcmAgY2hhbmdlcyBmcm9tIFwiZGFya1wiIHRvIFwibGlnaHRcIi5cbkBmdW5jdGlvbiBjb250cmFzdC1jb2xvcihcbiAgJGNvbG9yLFxuICAkZGFyazogJGNvbnRyYXN0ZWQtZGFyay1kZWZhdWx0LFxuICAkbGlnaHQ6ICRjb250cmFzdGVkLWxpZ2h0LWRlZmF1bHQsXG4gICR0aHJlc2hvbGQ6ICRjb250cmFzdGVkLWxpZ2h0bmVzcy10aHJlc2hvbGRcbikge1xuICBAcmV0dXJuIGlmKGxpZ2h0bmVzcygkY29sb3IpIDwgJHRocmVzaG9sZCwgJGxpZ2h0LCAkZGFyaylcbn1cblxuLy8gU2V0cyB0aGUgc3BlY2lmaWVkIGJhY2tncm91bmQgY29sb3IgYW5kIGNhbGN1bGF0ZXMgYSBkYXJrIG9yIGxpZ2h0IGNvbnRyYXN0ZWQgdGV4dCBjb2xvci5cbi8vIFRoZSBhcmd1bWVudHMgYXJlIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSBbY29udHJhc3QtY29sb3IgZnVuY3Rpb25dKCNmdW5jdGlvbi1jb250cmFzdC1jb2xvcikuXG5AbWl4aW4gY29udHJhc3RlZChcbiAgJGJhY2tncm91bmQtY29sb3IsXG4gICRkYXJrOiAkY29udHJhc3RlZC1kYXJrLWRlZmF1bHQsXG4gICRsaWdodDogJGNvbnRyYXN0ZWQtbGlnaHQtZGVmYXVsdCxcbiAgJHRocmVzaG9sZDogJGNvbnRyYXN0ZWQtbGlnaHRuZXNzLXRocmVzaG9sZFxuKSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICRiYWNrZ3JvdW5kLWNvbG9yO1xuICBjb2xvcjogY29udHJhc3QtY29sb3IoJGJhY2tncm91bmQtY29sb3IsICRkYXJrLCAkbGlnaHQsICR0aHJlc2hvbGQpO1xufSIsIkBpbXBvcnQgXCJnZW5lcmFsL3Jlc2V0XCI7XG5AaW1wb3J0IFwiZ2VuZXJhbC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcImdlbmVyYWwvZmxvYXRcIjtcbkBpbXBvcnQgXCJnZW5lcmFsL3RhZy1jbG91ZFwiO1xuQGltcG9ydCBcImdlbmVyYWwvaGFja3NcIjtcbkBpbXBvcnQgXCJnZW5lcmFsL21pblwiO1xuIiwiLy8gVGhpcyBtb2R1bGUgaGFzIG1vdmVkLlxuQGltcG9ydCBcIi4uLy4uL3Jlc2V0L3V0aWxpdGllc1wiO1xuIiwiLy8gQmFzZWQgb24gW0VyaWMgTWV5ZXIncyByZXNldCAyLjBdKGh0dHA6Ly9tZXllcndlYi5jb20vZXJpYy90b29scy9jc3MvcmVzZXQvaW5kZXguaHRtbClcbi8vIEdsb2JhbCByZXNldCBydWxlcy5cbi8vIEZvciBtb3JlIHNwZWNpZmljIHJlc2V0cywgdXNlIHRoZSByZXNldCBtaXhpbnMgcHJvdmlkZWQgYmVsb3dcbkBtaXhpbiBnbG9iYWwtcmVzZXQge1xuICBodG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCwgXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIC8vIFVubGlrZSBFcmljJ3Mgb3JpZ2luYWwgcmVzZXQsIHdlIHJlc2V0IHRoZSBodG1sIGVsZW1lbnQgdG8gYmUgY29tcGF0aWJsZVxuICAvLyB3aXRoIHRoZSB2ZXJ0aWNhbCByaHl0aG0gbWl4aW5zLlxuICBodG1sIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib2R5OyB9XG4gIG9sLCB1bCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtbGlzdC1zdHlsZTsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfVxuICBAaW5jbHVkZSByZXNldC1odG1sNTsgfVxuXG4vLyBSZXNldCBhbGwgZWxlbWVudHMgd2l0aGluIHNvbWUgc2VsZWN0b3Igc2NvcGUuIFRvIHJlc2V0IHRoZSBzZWxlY3RvciBpdHNlbGYsXG4vLyBtaXhpbiB0aGUgYXBwcm9wcmlhdGUgcmVzZXQgbWl4aW4gZm9yIHRoYXQgZWxlbWVudCB0eXBlIGFzIHdlbGwuIFRoaXMgY291bGQgYmVcbi8vIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBzdHlsZSBhIHBhcnQgb2YgeW91ciBwYWdlIGluIGEgZHJhbWF0aWNhbGx5IGRpZmZlcmVudCB3YXkuXG5AbWl4aW4gbmVzdGVkLXJlc2V0IHtcbiAgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsIFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfSB9XG5cbi8vIFJlc2V0IHRoZSBib3ggbW9kZWwgbWVhc3VyZW1lbnRzLlxuQG1peGluIHJlc2V0LWJveC1tb2RlbCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwOyB9XG5cbi8vIFJlc2V0IHRoZSBmb250IGFuZCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXG5AbWl4aW4gcmVzZXQtZm9udCB7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5cbi8vIFJlc2V0cyB0aGUgb3V0bGluZSB3aGVuIGZvY3VzLlxuLy8gRm9yIGFjY2Vzc2liaWxpdHkgeW91IG5lZWQgdG8gYXBwbHkgc29tZSBzdHlsaW5nIGluIGl0cyBwbGFjZS5cbkBtaXhpbiByZXNldC1mb2N1cyB7XG4gIG91dGxpbmU6IDA7IH1cblxuLy8gUmVzZXQgYSBib2R5IGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtYm9keSB7XG4gIGxpbmUtaGVpZ2h0OiAxOyB9XG5cbi8vIFJlc2V0IHRoZSBsaXN0IHN0eWxlIG9mIGFuIGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtbGlzdC1zdHlsZSB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cblxuLy8gUmVzZXQgYSB0YWJsZVxuQG1peGluIHJlc2V0LXRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7IH1cblxuLy8gUmVzZXQgYSB0YWJsZSBjZWxsIChgdGhgLCBgdGRgKVxuQG1peGluIHJlc2V0LXRhYmxlLWNlbGwge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG5cbi8vIFJlc2V0IGEgcXVvdGF0aW9uIChgcWAsIGBibG9ja3F1b3RlYClcbkBtaXhpbiByZXNldC1xdW90YXRpb24ge1xuICBxdW90ZXM6IG5vbmU7XG4gICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiOyBcbiAgICBjb250ZW50OiBub25lOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBib3JkZXIuXG5AbWl4aW4gcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlciB7XG4gIGJvcmRlcjogbm9uZTsgfVxuXG4vLyBVbnJlY29nbml6ZWQgZWxlbWVudHMgYXJlIGRpc3BsYXllZCBpbmxpbmUuXG4vLyBUaGlzIHJlc2V0IHByb3ZpZGVzIGEgYmFzaWMgcmVzZXQgZm9yIGJsb2NrIGh0bWw1IGVsZW1lbnRzXG4vLyBzbyB0aGV5IGFyZSByZW5kZXJlZCBjb3JyZWN0bHkgaW4gYnJvd3NlcnMgdGhhdCBkb24ndCByZWNvZ25pemUgdGhlbVxuLy8gYW5kIHJlc2V0IGluIGJyb3dzZXJzIHRoYXQgaGF2ZSBkZWZhdWx0IHN0eWxlcyBmb3IgdGhlbS5cbkBtaXhpbiByZXNldC1odG1sNSB7XG4gICN7ZWxlbWVudHMtb2YtdHlwZShodG1sNS1ibG9jayl9IHtcbiAgICBkaXNwbGF5OiBibG9jazsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgZGlzcGxheSBvZiBpbmxpbmUgYW5kIGJsb2NrIGVsZW1lbnRzIHRvIHRoZWlyIGRlZmF1bHQgZGlzcGxheVxuLy8gYWNjb3JkaW5nIHRvIHRoZWlyIHRhZyB0eXBlLiBFbGVtZW50cyB0aGF0IGhhdmUgYSBkZWZhdWx0IGRpc3BsYXkgdGhhdCB2YXJpZXMgYWNyb3NzXG4vLyB2ZXJzaW9ucyBvZiBodG1sIG9yIGJyb3dzZXIgYXJlIG5vdCBoYW5kbGVkIGhlcmUsIGJ1dCB0aGlzIGNvdmVycyB0aGUgOTAlIHVzZSBjYXNlLlxuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgLy8gVHVybiBvZmYgdGhlIGRpc3BsYXkgZm9yIGJvdGggb2YgdGhlc2UgY2xhc3Nlc1xuLy8gICAgIC51bnJlZ2lzdGVyZWQtb25seSwgLnJlZ2lzdGVyZWQtb25seVxuLy8gICAgICAgZGlzcGxheTogbm9uZVxuLy8gICAgIC8vIE5vdyB0dXJuIG9ubHkgb25lIG9mIHRoZW0gYmFjayBvbiBkZXBlbmRpbmcgb24gc29tZSBvdGhlciBjb250ZXh0LlxuLy8gICAgIGJvZHkucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIucmVnaXN0ZXJlZC1vbmx5XCIpXG4vLyAgICAgYm9keS51bnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnVucmVnaXN0ZXJlZC1vbmx5XCIpXG5AbWl4aW4gcmVzZXQtZGlzcGxheSgkc2VsZWN0b3I6IFwiXCIsICRpbXBvcnRhbnQ6IGZhbHNlKSB7XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJpbmxpbmVcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZTsgfSB9XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJibG9ja1wiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cbiIsIi8vIEBkb2Mgb2ZmXG4vLyBFeHRlbmRzIHRoZSBib3R0b20gb2YgdGhlIGVsZW1lbnQgdG8gZW5jbG9zZSBhbnkgZmxvYXRzIGl0IGNvbnRhaW5zLlxuLy8gQGRvYyBvblxuXG5AaW1wb3J0IFwiaGFja3NcIjtcblxuLy8gVGhpcyBiYXNpYyBtZXRob2QgaXMgcHJlZmVycmVkIGZvciB0aGUgdXN1YWwgY2FzZSwgd2hlbiBwb3NpdGlvbmVkXG4vLyBjb250ZW50IHdpbGwgbm90IHNob3cgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIuXG4vL1xuLy8gUmVjb21tZW5kYXRpb25zIGluY2x1ZGUgdXNpbmcgdGhpcyBpbiBjb25qdW5jdGlvbiB3aXRoIGEgd2lkdGguXG4vLyBDcmVkaXQ6IFtxdWlya3Ntb2RlLm9yZ10oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMDUvMDMvY2xlYXJpbmdfZmxvYXRzLmh0bWwpXG5AbWl4aW4gY2xlYXJmaXgge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBoYXMtbGF5b3V0O1xufVxuXG4vLyBUaGlzIG9sZGVyIG1ldGhvZCBmcm9tIFBvc2l0aW9uIElzIEV2ZXJ5dGhpbmcgY2FsbGVkXG4vLyBbRWFzeSBDbGVhcmluZ10oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZWFzeWNsZWFyaW5nLmh0bWwpXG4vLyBoYXMgdGhlIGFkdmFudGFnZSBvZiBhbGxvd2luZyBwb3NpdGlvbmVkIGVsZW1lbnRzIHRvIGhhbmdcbi8vIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyIGF0IHRoZSBleHBlbnNlIG9mIG1vcmUgdHJpY2t5IENTUy5cbkBtaXhpbiBsZWdhY3ktcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudCAgICA6IFwiXFwwMDIwXCI7XG4gICAgZGlzcGxheSAgICA6IGJsb2NrO1xuICAgIGhlaWdodCAgICAgOiAwO1xuICAgIGNsZWFyICAgICAgOiBib3RoO1xuICAgIG92ZXJmbG93ICAgOiBoaWRkZW47XG4gICAgdmlzaWJpbGl0eSA6IGhpZGRlbjtcbiAgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0O1xufVxuXG4vLyBUaGlzIGlzIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgUElFIGNsZWFyZml4IG1ldGhvZCB0aGF0IHJlZHVjZXMgdGhlIGFtb3VudCBvZiBDU1Mgb3V0cHV0LlxuLy8gSWYgeW91IG5lZWQgdG8gc3VwcG9ydCBGaXJlZm94IGJlZm9yZSAzLjUgeW91IG5lZWQgdG8gdXNlIGBsZWdhY3ktcGllLWNsZWFyZml4YCBpbnN0ZWFkLlxuLy9cbi8vIEFkYXB0ZWQgZnJvbTogW0EgbmV3IG1pY3JvIGNsZWFyZml4IGhhY2tdKGh0dHA6Ly9uaWNvbGFzZ2FsbGFnaGVyLmNvbS9taWNyby1jbGVhcmZpeC1oYWNrLylcbkBtaXhpbiBwaWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG4iLCJAaW1wb3J0IFwiLi4vLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGUgYHpvb21gIGFwcHJvYWNoIGdlbmVyYXRlcyBsZXNzIENTUyBidXQgZG9lcyBub3QgdmFsaWRhdGUuXG4vLyBTZXQgdGhpcyB0byBgYmxvY2tgIHRvIHVzZSB0aGUgZGlzcGxheS1wcm9wZXJ0eSB0byBoYWNrIHRoZVxuLy8gZWxlbWVudCB0byBnYWluIGxheW91dC5cbiRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2g6IHpvb20gIWRlZmF1bHQ7XG5cbi8vIFRoaXMgbWl4aW4gY2F1c2VzIGFuIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIHNlbGVjdG9yXG4vLyB0byBnYWluIHRoZSBcImhhc0xheW91dFwiIHByb3BlcnR5IGluIGludGVybmV0IGV4cGxvcmVyLlxuLy8gTW9yZSBpbmZvcm1hdGlvbiBvbiBbaGFzTGF5b3V0XShodHRwOi8vcmVmZXJlbmNlLnNpdGVwb2ludC5jb20vY3NzL2hhc2xheW91dCkuXG5AbWl4aW4gaGFzLWxheW91dCgkYXBwcm9hY2g6ICRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2gpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIEBpZiAkYXBwcm9hY2ggPT0gem9vbSB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207XG4gICAgfSBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gYmxvY2sge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC1ibG9jaztcbiAgICB9IEBlbHNlIHtcbiAgICAgIEB3YXJuIFwiVW5rbm93biBoYXMtbGF5b3V0IGFwcHJvYWNoOiAjeyRhcHByb2FjaH1cIjtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGhhcy1sYXlvdXQtem9vbSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyB7XG4gICAgKnpvb206IDE7XG4gIH1cbn1cblxuQG1peGluIGhhcy1sYXlvdXQtYmxvY2sge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgLy8gVGhpcyBtYWtlcyBpZTYgZ2V0IGxheW91dFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBhbmQgdGhpcyBwdXRzIGl0IGJhY2sgdG8gYmxvY2tcbiAgICAmIHsgZGlzcGxheTogYmxvY2s7IH1cbiAgfVxufVxuXG4vLyBBIGhhY2sgdG8gc3VwcGx5IElFNiAoYW5kIGJlbG93KSB3aXRoIGEgZGlmZmVyZW50IHByb3BlcnR5IHZhbHVlLlxuLy8gW1JlYWQgbW9yZV0oaHR0cDovL3d3dy5jc3Nwb3J0YWwuY29tL2Nzcy1oYWNrcy8jaW5fY3NzLWltcG9ydGFudCkuXG5AbWl4aW4gYmFuZy1oYWNrKCRwcm9wZXJ0eSwgJHZhbHVlLCAkaWU2LXZhbHVlKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0gIWltcG9ydGFudDtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JGllNi12YWx1ZX07XG4gIH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6bGVmdCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtbGVmdCB7XG4gIEBpbmNsdWRlIGZsb2F0KGxlZnQpOyB9XG5cbi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OnJpZ2h0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1yaWdodCB7XG4gIEBpbmNsdWRlIGZsb2F0KHJpZ2h0KTsgfVxuXG4vLyBEaXJlY3Rpb24gaW5kZXBlbmRlbnQgZmxvYXQgbWl4aW4gdGhhdCBmaXhlcyB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdCgkc2lkZTogbGVmdCkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiB1bnF1b3RlKCRzaWRlKTsgfVxuXG4vLyBSZXNldHMgZmxvYXRlZCBlbGVtZW50cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHQgb2YgYGZsb2F0OiBub25lYCBhbmQgZGVmYXVsdHNcbi8vIHRvIGBkaXNwbGF5OiBibG9ja2AgdW5sZXNzIHlvdSBwYXNzIGBpbmxpbmVgIGFzIGFuIGFyZ3VtZW50XG4vL1xuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgYm9keS5ob21lcGFnZVxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArZmxvYXQtbGVmdFxuLy8gICAgIGJvZHkuc2lnbnVwXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtyZXNldC1mbG9hdFxuQG1peGluIHJlc2V0LWZsb2F0KCRkaXNwbGF5OiBibG9jaykge1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogJGRpc3BsYXk7IH0iLCIvLyBFbWl0cyBzdHlsZXMgZm9yIGEgdGFnIGNsb3VkXG5AbWl4aW4gdGFnLWNsb3VkKCRiYXNlLXNpemU6IDFlbSkge1xuICBmb250LXNpemU6ICRiYXNlLXNpemU7XG4gIGxpbmUtaGVpZ2h0OiAxLjIgKiAkYmFzZS1zaXplO1xuICAueHhzLCAueHMsIC5zLCAubCwgLnhsLCAueHhsIHtcbiAgICBsaW5lLWhlaWdodDogMS4yICogJGJhc2Utc2l6ZTsgfVxuICAueHhzIHtcbiAgICBmb250LXNpemU6ICRiYXNlLXNpemUgLyAyOyB9XG4gIC54cyB7XG4gICAgZm9udC1zaXplOiAyICogJGJhc2Utc2l6ZSAvIDM7IH1cbiAgLnMge1xuICAgIGZvbnQtc2l6ZTogMyAqICRiYXNlLXNpemUgLyA0OyB9XG4gIC5sIHtcbiAgICBmb250LXNpemU6IDQgKiAkYmFzZS1zaXplIC8gMzsgfVxuICAueGwge1xuICAgIGZvbnQtc2l6ZTogMyAqICRiYXNlLXNpemUgLyAyOyB9XG4gIC54eGwge1xuICAgIGZvbnQtc2l6ZTogMiAqICRiYXNlLXNpemU7IH0gfVxuIiwiQGltcG9ydCBcIi4uLy4uL3N1cHBvcnRcIjtcblxuLy8gVGhlIGB6b29tYCBhcHByb2FjaCBnZW5lcmF0ZXMgbGVzcyBDU1MgYnV0IGRvZXMgbm90IHZhbGlkYXRlLlxuLy8gU2V0IHRoaXMgdG8gYGJsb2NrYCB0byB1c2UgdGhlIGRpc3BsYXktcHJvcGVydHkgdG8gaGFjayB0aGVcbi8vIGVsZW1lbnQgdG8gZ2FpbiBsYXlvdXQuXG4kZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoOiB6b29tICFkZWZhdWx0O1xuXG4vLyBUaGlzIG1peGluIGNhdXNlcyBhbiBlbGVtZW50IG1hdGNoaW5nIHRoZSBzZWxlY3RvclxuLy8gdG8gZ2FpbiB0aGUgXCJoYXNMYXlvdXRcIiBwcm9wZXJ0eSBpbiBpbnRlcm5ldCBleHBsb3Jlci5cbi8vIE1vcmUgaW5mb3JtYXRpb24gb24gW2hhc0xheW91dF0oaHR0cDovL3JlZmVyZW5jZS5zaXRlcG9pbnQuY29tL2Nzcy9oYXNsYXlvdXQpLlxuQG1peGluIGhhcy1sYXlvdXQoJGFwcHJvYWNoOiAkZGVmYXVsdC1oYXMtbGF5b3V0LWFwcHJvYWNoKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICBAaWYgJGFwcHJvYWNoID09IHpvb20ge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH0gQGVsc2UgaWYgJGFwcHJvYWNoID09IGJsb2NrIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtYmxvY2s7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAd2FybiBcIlVua25vd24gaGFzLWxheW91dCBhcHByb2FjaDogI3skYXBwcm9hY2h9XCI7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207XG4gICAgfVxuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LXpvb20ge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcge1xuICAgICp6b29tOiAxO1xuICB9XG59XG5cbkBtaXhpbiBoYXMtbGF5b3V0LWJsb2NrIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIC8vIFRoaXMgbWFrZXMgaWU2IGdldCBsYXlvdXRcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgLy8gYW5kIHRoaXMgcHV0cyBpdCBiYWNrIHRvIGJsb2NrXG4gICAgJiB7IGRpc3BsYXk6IGJsb2NrOyB9XG4gIH1cbn1cblxuLy8gQSBoYWNrIHRvIHN1cHBseSBJRTYgKGFuZCBiZWxvdykgd2l0aCBhIGRpZmZlcmVudCBwcm9wZXJ0eSB2YWx1ZS5cbi8vIFtSZWFkIG1vcmVdKGh0dHA6Ly93d3cuY3NzcG9ydGFsLmNvbS9jc3MtaGFja3MvI2luX2Nzcy1pbXBvcnRhbnQpLlxuQG1peGluIGJhbmctaGFjaygkcHJvcGVydHksICR2YWx1ZSwgJGllNi12YWx1ZSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYge1xuICAgICN7JHByb3BlcnR5fTogI3skdmFsdWV9ICFpbXBvcnRhbnQ7XG4gICAgI3skcHJvcGVydHl9OiAjeyRpZTYtdmFsdWV9O1xuICB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCJoYWNrc1wiO1xuXG4vLyoqXG4vLyBDcm9zcyBicm93c2VyIG1pbi1oZWlnaHQgbWl4aW4uXG5AbWl4aW4gbWluLWhlaWdodCgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgaGFja2VkLW1pbmltdW0oaGVpZ2h0LCAkdmFsdWUpOyB9XG5cbi8vKipcbi8vIENyb3NzIGJyb3dzZXIgbWluLXdpZHRoIG1peGluLlxuQG1peGluIG1pbi13aWR0aCgkdmFsdWUpIHtcbiAgQGluY2x1ZGUgaGFja2VkLW1pbmltdW0od2lkdGgsICR2YWx1ZSk7IH1cblxuLy8gQHByaXZhdGUgVGhpcyBtaXhpbiBpcyBub3QgbWVhbnQgdG8gYmUgdXNlZCBkaXJlY3RseS5cbkBtaXhpbiBoYWNrZWQtbWluaW11bSgkcHJvcGVydHksICR2YWx1ZSkge1xuICBtaW4tI3skcHJvcGVydHl9OiAkdmFsdWU7XG4gIEBpbmNsdWRlIGJhbmctaGFjaygkcHJvcGVydHksIGF1dG8sICR2YWx1ZSk7IH1cbiIsIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9IEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTtcbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYgeyBkaXNwbGF5OiBibG9jazsgfVxuICB9XG59XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTtcbiAgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwic3ByaXRlcy9iYXNlXCI7XG5AaW1wb3J0IFwic3ByaXRlcy9zcHJpdGUtaW1nXCI7XG4iLCIvLyBEZXRlcm1pbmVzIHRob3NlIHN0YXRlcyBmb3Igd2hpY2ggeW91IHdhbnQgdG8gZW5hYmxlIG1hZ2ljIHNwcml0ZSBzZWxlY3RvcnNcbiRzcHJpdGUtc2VsZWN0b3JzOiBob3ZlciwgdGFyZ2V0LCBhY3RpdmUgIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiBhbiBlbGVtZW50IHRvIHRoZSBvcmlnaW5hbFxuLy8gZGltZW5zaW9ucyBvZiBhbiBpbWFnZSBiZWZvcmUgaXQgd2FzIGluY2x1ZGVkIGluIHRoZSBzcHJpdGUuXG5AbWl4aW4gc3ByaXRlLWRpbWVuc2lvbnMoJG1hcCwgJHNwcml0ZSkge1xuICBoZWlnaHQ6IGltYWdlLWhlaWdodChzcHJpdGUtZmlsZSgkbWFwLCAkc3ByaXRlKSk7XG4gIHdpZHRoOiBpbWFnZS13aWR0aChzcHJpdGUtZmlsZSgkbWFwLCAkc3ByaXRlKSk7XG59XG5cbi8vIFNldCB0aGUgYmFja2dyb3VuZCBwb3NpdGlvbiBvZiB0aGUgZ2l2ZW4gc3ByaXRlIGAkbWFwYCB0byBkaXNwbGF5IHRoZVxuLy8gc3ByaXRlIG9mIHRoZSBnaXZlbiBgJHNwcml0ZWAgbmFtZS4gWW91IGNhbiBtb3ZlIHRoZSBpbWFnZSByZWxhdGl2ZSB0byBpdHNcbi8vIG5hdHVyYWwgcG9zaXRpb24gYnkgcGFzc2luZyBgJG9mZnNldC14YCBhbmQgYCRvZmZzZXQteWAuXG5AbWl4aW4gc3ByaXRlLWJhY2tncm91bmQtcG9zaXRpb24oJG1hcCwgJHNwcml0ZSwgJG9mZnNldC14OiAwLCAkb2Zmc2V0LXk6IDApIHtcbiAgYmFja2dyb3VuZC1wb3NpdGlvbjogc3ByaXRlLXBvc2l0aW9uKCRtYXAsICRzcHJpdGUsICRvZmZzZXQteCwgJG9mZnNldC15KTsgIFxufVxuXG5cbi8vIERldGVybWluZXMgaWYgeW91IHdhbnQgdG8gaW5jbHVkZSBtYWdpYyBzZWxlY3RvcnMgaW4geW91ciBzcHJpdGVzXG4kZGlzYWJsZS1tYWdpYy1zcHJpdGUtc2VsZWN0b3JzOmZhbHNlICFkZWZhdWx0O1xuXG4vLyBJbmNsdWRlIHRoZSBwb3NpdGlvbiBhbmQgKG9wdGlvbmFsbHkpIGRpbWVuc2lvbnMgb2YgdGhpcyBgJHNwcml0ZWBcbi8vIGluIHRoZSBnaXZlbiBzcHJpdGUgYCRtYXBgLiBUaGUgc3ByaXRlIHVybCBzaG91bGQgY29tZSBmcm9tIGVpdGhlciBhIGJhc2Vcbi8vIGNsYXNzIG9yIHlvdSBjYW4gc3BlY2lmeSB0aGUgYHNwcml0ZS11cmxgIGV4cGxpY2l0bHkgbGlrZSB0aGlzOlxuLy9cbi8vICAgICBiYWNrZ3JvdW5kOiAkbWFwIG5vLXJlcGVhdDtcbkBtaXhpbiBzcHJpdGUoJG1hcCwgJHNwcml0ZSwgJGRpbWVuc2lvbnM6IGZhbHNlLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkge1xuICBAaW5jbHVkZSBzcHJpdGUtYmFja2dyb3VuZC1wb3NpdGlvbigkbWFwLCAkc3ByaXRlLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7XG4gIEBpZiAkZGltZW5zaW9ucyB7XG4gICAgQGluY2x1ZGUgc3ByaXRlLWRpbWVuc2lvbnMoJG1hcCwgJHNwcml0ZSk7XG4gIH1cbiAgQGlmIG5vdCgkZGlzYWJsZS1tYWdpYy1zcHJpdGUtc2VsZWN0b3JzKSB7XG4gICAgQGluY2x1ZGUgc3ByaXRlLXNlbGVjdG9ycygkbWFwLCAkc3ByaXRlLCAkc3ByaXRlLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7XG4gIH1cbn1cblxuLy8gSW5jbHVkZSB0aGUgc2VsZWN0b3JzIGZvciB0aGUgYCRzcHJpdGVgIGdpdmVuIHRoZSBgJG1hcGAgYW5kIHRoZSBcbi8vIGAkZnVsbC1zcHJpdGUtbmFtZWBcbi8vIEBwcml2YXRlXG5AbWl4aW4gc3ByaXRlLXNlbGVjdG9ycygkbWFwLCAkc3ByaXRlLW5hbWUsICRmdWxsLXNwcml0ZS1uYW1lLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkge1xuICBAZWFjaCAkc2VsZWN0b3IgaW4gJHNwcml0ZS1zZWxlY3RvcnMge1xuICAgIEBpZiBzcHJpdGVfaGFzX3NlbGVjdG9yKCRtYXAsICRzcHJpdGUtbmFtZSwgJHNlbGVjdG9yKSB7XG4gICAgICAmOiN7JHNlbGVjdG9yfSwgJi4jeyRmdWxsLXNwcml0ZS1uYW1lfV8jeyRzZWxlY3Rvcn0sICYuI3skZnVsbC1zcHJpdGUtbmFtZX0tI3skc2VsZWN0b3J9IHtcbiAgICAgICAgICBAaW5jbHVkZSBzcHJpdGUtYmFja2dyb3VuZC1wb3NpdGlvbigkbWFwLCBcIiN7JHNwcml0ZS1uYW1lfV8jeyRzZWxlY3Rvcn1cIiwgJG9mZnNldC14LCAkb2Zmc2V0LXkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBHZW5lcmF0ZXMgYSBjbGFzcyBmb3IgZWFjaCBzcGFjZSBzZXBhcmF0ZWQgbmFtZSBpbiBgJHNwcml0ZS1uYW1lc2AuXG4vLyBUaGUgY2xhc3Mgd2lsbCBiZSBvZiB0aGUgZm9ybSAuPG1hcC1uYW1lPi08c3ByaXRlLW5hbWU+LlxuLy9cbi8vIElmIGEgYmFzZSBjbGFzcyBpcyBwcm92aWRlZCwgdGhlbiBlYWNoIGNsYXNzIHdpbGwgZXh0ZW5kIGl0LlxuLy9cbi8vIElmIGAkZGltZW5zaW9uc2AgaXMgYHRydWVgLCB0aGUgc3ByaXRlIGRpbWVuc2lvbnMgd2lsbCBzcGVjaWZpZWQuXG5AbWl4aW4gc3ByaXRlcygkbWFwLCAkc3ByaXRlLW5hbWVzLCAkYmFzZS1jbGFzczogZmFsc2UsICRkaW1lbnNpb25zOiBmYWxzZSwgJHByZWZpeDogc3ByaXRlLW1hcC1uYW1lKCRtYXApLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkge1xuICBAZWFjaCAkc3ByaXRlLW5hbWUgaW4gJHNwcml0ZS1uYW1lcyB7XG4gICAgQGlmIHNwcml0ZV9kb2VzX25vdF9oYXZlX3BhcmVudCgkbWFwLCAkc3ByaXRlLW5hbWUpIHtcbiAgICAgICRmdWxsLXNwcml0ZS1uYW1lOiBcIiN7JHByZWZpeH0tI3skc3ByaXRlLW5hbWV9XCI7XG4gICAgICAuI3skZnVsbC1zcHJpdGUtbmFtZX0ge1xuICAgICAgICBAaWYgJGJhc2UtY2xhc3MgeyBAZXh0ZW5kICN7JGJhc2UtY2xhc3N9OyB9XG4gICAgICAgIEBpbmNsdWRlIHNwcml0ZSgkbWFwLCAkc3ByaXRlLW5hbWUsICRkaW1lbnNpb25zLCAkb2Zmc2V0LXgsICRvZmZzZXQteSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiLy8gQGRvYyBvZmZcbi8vIEV4YW1wbGUgMTpcbi8vXG4vLyAgICAgYS50d2l0dGVyXG4vLyAgICAgICArc3ByaXRlLWltZyhcImljb25zLTMyLnBuZ1wiLCAxKVxuLy8gICAgIGEuZmFjZWJvb2tcbi8vICAgICAgICtzcHJpdGUtaW1nKFwiaWNvbnMtMzJwbmdcIiwgMilcbi8vXG4vLyBFeGFtcGxlIDI6XG4vL1xuLy8gICAgIGFcbi8vICAgICAgICtzcHJpdGUtYmFja2dyb3VuZChcImljb25zLTMyLnBuZ1wiKVxuLy8gICAgICAgYS50d2l0dGVyXG4vLyAgICAgICAgICtzcHJpdGUtY29sdW1uKDEpXG4vLyAgICAgICBhLmZhY2Vib29rXG4vLyAgICAgICAgICtzcHJpdGUtcm93KDIpXG4vLyBAZG9jIG9uXG5cbiRzcHJpdGUtZGVmYXVsdC1zaXplOiAzMnB4ICFkZWZhdWx0O1xuXG4kc3ByaXRlLWRlZmF1bHQtbWFyZ2luOiAwcHggIWRlZmF1bHQ7XG5cbiRzcHJpdGUtaW1hZ2UtZGVmYXVsdC13aWR0aDogJHNwcml0ZS1kZWZhdWx0LXNpemUgIWRlZmF1bHQ7XG5cbiRzcHJpdGUtaW1hZ2UtZGVmYXVsdC1oZWlnaHQ6ICRzcHJpdGUtZGVmYXVsdC1zaXplICFkZWZhdWx0O1xuXG4vLyBTZXRzIGFsbCB0aGUgcnVsZXMgZm9yIGEgc3ByaXRlIGZyb20gYSBnaXZlbiBzcHJpdGUgaW1hZ2UgdG8gc2hvdyBqdXN0IG9uZSBvZiB0aGUgc3ByaXRlcy5cbi8vIFRvIHJlZHVjZSBkdXBsaWNhdGlvbiB1c2UgYSBzcHJpdGUtYmcgbWl4aW4gZm9yIGNvbW1vbiBwcm9wZXJ0aWVzIGFuZCBhIHNwcml0ZS1zZWxlY3QgbWl4aW4gZm9yIHBvc2l0aW9uaW5nLlxuQG1peGluIHNwcml0ZS1pbWcoJGltZywgJGNvbCwgJHJvdzogMSwgJHdpZHRoOiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtd2lkdGgsICRoZWlnaHQ6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC1oZWlnaHQsICRtYXJnaW46ICRzcHJpdGUtZGVmYXVsdC1tYXJnaW4pIHtcbiAgQGluY2x1ZGUgc3ByaXRlLWJhY2tncm91bmQoJGltZywgJHdpZHRoLCAkaGVpZ2h0KTtcbiAgQGluY2x1ZGUgc3ByaXRlLXBvc2l0aW9uKCRjb2wsICRyb3csICR3aWR0aCwgJGhlaWdodCwgJG1hcmdpbik7IFxufVxuXG4vLyBTZXRzIHJ1bGVzIGNvbW1vbiBmb3IgYWxsIHNwcml0ZXMsIGFzc3VtZXMgeW91IHdhbnQgYSBzcXVhcmUsIGJ1dCBhbGxvd3MgYSByZWN0YW5ndWxhciByZWdpb24uXG5AbWl4aW4gc3ByaXRlLWJhY2tncm91bmQoJGltZywgJHdpZHRoOiAkc3ByaXRlLWRlZmF1bHQtc2l6ZSwgJGhlaWdodDogJHdpZHRoKSB7XG4gIEBpbmNsdWRlIHNwcml0ZS1iYWNrZ3JvdW5kLXJlY3RhbmdsZSgkaW1nLCAkd2lkdGgsICRoZWlnaHQpOyBcbn1cblxuLy8gU2V0cyBydWxlcyBjb21tb24gZm9yIGFsbCBzcHJpdGVzLCBhc3N1bWVzIGEgcmVjdGFuZ3VsYXIgcmVnaW9uLlxuQG1peGluIHNwcml0ZS1iYWNrZ3JvdW5kLXJlY3RhbmdsZSgkaW1nLCAkd2lkdGg6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC13aWR0aCwgJGhlaWdodDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LWhlaWdodCkge1xuICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGltZykgbm8tcmVwZWF0O1xuICB3aWR0aDogJHdpZHRoO1xuICBoZWlnaHQ6ICRoZWlnaHQ7XG4gIG92ZXJmbG93OiBoaWRkZW47IFxufVxuXG4vLyBBbGxvd3MgaG9yaXpvbnRhbCBzcHJpdGUgcG9zaXRpb25pbmcgb3B0aW1pemVkIGZvciBhIHNpbmdsZSByb3cgb2Ygc3ByaXRlcy5cbkBtaXhpbiBzcHJpdGUtY29sdW1uKCRjb2wsICR3aWR0aDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LXdpZHRoLCAkbWFyZ2luOiAkc3ByaXRlLWRlZmF1bHQtbWFyZ2luKSB7XG4gIEBpbmNsdWRlIHNwcml0ZS1wb3NpdGlvbigkY29sLCAxLCAkd2lkdGgsIDBweCwgJG1hcmdpbik7IFxufVxuXG4vLyBBbGxvd3MgdmVydGljYWwgc3ByaXRlIHBvc2l0aW9uaW5nIG9wdGltaXplZCBmb3IgYSBzaW5nbGUgY29sdW1uIG9mIHNwcml0ZXMuXG5AbWl4aW4gc3ByaXRlLXJvdygkcm93LCAkaGVpZ2h0OiAkc3ByaXRlLWltYWdlLWRlZmF1bHQtaGVpZ2h0LCAkbWFyZ2luOiAkc3ByaXRlLWRlZmF1bHQtbWFyZ2luKSB7XG4gIEBpbmNsdWRlIHNwcml0ZS1wb3NpdGlvbigxLCAkcm93LCAwcHgsICRoZWlnaHQsICRtYXJnaW4pOyBcbn1cblxuLy8gQWxsb3dzIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIHNwcml0ZSBwb3NpdGlvbmluZyBmcm9tIGEgZ3JpZCBvZiBlcXVhbCBkaW1lbnNpb25lZCBzcHJpdGVzLlxuQG1peGluIHNwcml0ZS1wb3NpdGlvbigkY29sLCAkcm93OiAxLCAkd2lkdGg6ICRzcHJpdGUtaW1hZ2UtZGVmYXVsdC13aWR0aCwgJGhlaWdodDogJHNwcml0ZS1pbWFnZS1kZWZhdWx0LWhlaWdodCwgJG1hcmdpbjogJHNwcml0ZS1kZWZhdWx0LW1hcmdpbikge1xuICAkeDogKCRjb2wgLSAxKSAqIC0kd2lkdGggLSAoJGNvbCAtIDEpICogJG1hcmdpbjtcbiAgJHk6ICgkcm93IC0gMSkgKiAtJGhlaWdodCAtICgkcm93IC0gMSkgKiAkbWFyZ2luO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAkeCAkeTsgXG59XG5cblxuXG4vLyBTaW1pbGFyIHRvICdzcHJpdGUtcmVwbGFjZS10ZXh0LXdpdGgtZGltZW5zaW9ucycgYnV0IGRvZXMgbm90IGF1dG1hdGljbHkgc2V0IHRoZSBkZW1lbnNpb25zXG5AbWl4aW4gc3ByaXRlLXJlcGxhY2UtdGV4dCAoJG1hcCwgJHNwcml0ZSwgJGRpbWVuc2lvbnM6IGZhbHNlLCAkb2Zmc2V0LXg6IDAsICRvZmZzZXQteTogMCkgeyAgICBcbiAgQGluY2x1ZGUgaGlkZS10ZXh0O1xuICBAaW5jbHVkZSBzcHJpdGUoJG1hcCwgJHNwcml0ZSwgJGRpbWVuc2lvbnMsICRvZmZzZXQteCwgJG9mZnNldC15KTtcbiAgYmFja2dyb3VuZC1pbWFnZTogJG1hcDtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbn1cblxuLy8gU2ltaWxhciB0byAncmVwbGFjZS10ZXh0LXdpdGgtZGltZW5zaW9ucycgYnV0IHdpdGggc3ByaXRlc1xuLy8gVG8gdXNlLCBjcmVhdGUgeW91ciBzcHJpdGUgYW5kIHRoZW4gcGFzcyBpdCBpbiB0aGUgYCRtYXBgIHBhcmFtXG4vLyBUaGUgbmFtZSBvZiB0aGUgaW1hZ2UgaW4gdGhlIHNwcml0ZSBmb2xkZXIgc2hvdWxkIGJlIGAkaW1nLW5hbWVgXG5AbWl4aW4gc3ByaXRlLXJlcGxhY2UtdGV4dC13aXRoLWRpbWVuc2lvbnMgKCRtYXAsICRzcHJpdGUsICRvZmZzZXQteDogMCwgJG9mZnNldC15OiAwKXsgICAgXG4gIEBpbmNsdWRlIHNwcml0ZS1yZXBsYWNlLXRleHQgKCRtYXAsICRzcHJpdGUsIHRydWUsICRvZmZzZXQteCwgJG9mZnNldC15KTtcbn0iLCJAaW1wb3J0IFwidGFibGVzL2FsdGVybmF0aW5nLXJvd3MtYW5kLWNvbHVtbnNcIjtcbkBpbXBvcnQgXCJ0YWJsZXMvYm9yZGVyc1wiO1xuQGltcG9ydCBcInRhYmxlcy9zY2FmZm9sZGluZ1wiO1xuIiwiQG1peGluIGFsdGVybmF0aW5nLXJvd3MtYW5kLWNvbHVtbnMoJGV2ZW4tcm93LWNvbG9yLCAkb2RkLXJvdy1jb2xvciwgJGRhcmstaW50ZXJzZWN0aW9uLCAkaGVhZGVyLWNvbG9yOiB3aGl0ZSwgJGZvb3Rlci1jb2xvcjogd2hpdGUpIHtcbiAgdGgge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRoZWFkZXItY29sb3I7XG4gICAgJi5ldmVuLCAmOm50aC1jaGlsZCgybikge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1jb2xvciAtICRkYXJrLWludGVyc2VjdGlvbjsgfSB9XG4gIHRyIHtcbiAgICAmLm9kZCwgJjpudGgtY2hpbGQoMm4rMSkge1xuICAgICAgdGQge1xuICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvZGQtcm93LWNvbG9yO1xuICAgICAgICYuZXZlbiwgJjpudGgtY2hpbGQoMm4pIHtcbiAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICRvZGQtcm93LWNvbG9yIC0gJGRhcmstaW50ZXJzZWN0aW9uOyB9IH0gfVxuICAgIH1cbiAgdHIuZXZlbiB7XG4gICAgdGQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGV2ZW4tcm93LWNvbG9yO1xuICAgICAgJi5ldmVuLCAmOm50aC1jaGlsZCgybikge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXZlbi1yb3ctY29sb3IgLSAkZGFyay1pbnRlcnNlY3Rpb247IH0gfSB9XG4gIHRmb290IHtcbiAgICB0aCwgdGQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGZvb3Rlci1jb2xvcjtcbiAgICAgICYuZXZlbiwgJjpudGgtY2hpbGQoMm4pIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGZvb3Rlci1jb2xvciAtICRkYXJrLWludGVyc2VjdGlvbjsgfSB9IH0gfVxuIiwiQG1peGluIG91dGVyLXRhYmxlLWJvcmRlcnMoJHdpZHRoOiAycHgsICRjb2xvcjogYmxhY2spIHtcbiAgYm9yZGVyOiAkd2lkdGggc29saWQgJGNvbG9yO1xuICB0aGVhZCB7XG4gICAgdGgge1xuICAgICAgYm9yZGVyLWJvdHRvbTogJHdpZHRoIHNvbGlkICRjb2xvcjsgfSB9XG4gIHRmb290IHtcbiAgICB0aCwgdGQge1xuICAgICAgYm9yZGVyLXRvcDogJHdpZHRoIHNvbGlkICRjb2xvcjsgfSB9XG4gIHRoIHtcbiAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIGJvcmRlci1yaWdodDogJHdpZHRoIHNvbGlkICRjb2xvcjsgfSB9IH1cblxuQG1peGluIGlubmVyLXRhYmxlLWJvcmRlcnMoJHdpZHRoOiAycHgsICRjb2xvcjogYmxhY2spIHtcbiAgdGgsIHRkIHtcbiAgICBib3JkZXI6IHtcbiAgICAgIHJpZ2h0OiAkd2lkdGggc29saWQgJGNvbG9yO1xuICAgICAgYm90dG9tOiAkd2lkdGggc29saWQgJGNvbG9yO1xuICAgICAgbGVmdC13aWR0aDogMHB4O1xuICAgICAgdG9wLXdpZHRoOiAwcHg7IH07XG4gICAgJjpsYXN0LWNoaWxkLFxuICAgICYubGFzdCB7XG4gICAgICBib3JkZXItcmlnaHQtd2lkdGg6IDBweDsgfSB9XG5cbi8vIElFOCBpZ25vcmVzIHJ1bGVzIHRoYXQgYXJlIGluY2x1ZGVkIG9uIHRoZSBzYW1lIGxpbmUgYXMgOmxhc3QtY2hpbGRcbi8vIHNlZSBodHRwOi8vd3d3LnJpY2hhcmRzY2Fycm90dC5jby51ay9wb3N0cy92aWV3L2llOC1sYXN0LWNoaWxkLWJ1ZyBmb3IgZGV0YWlsc1xuXG4gIHRib2R5LCB0Zm9vdCB7XG4gICAgdHI6bGFzdC1jaGlsZCB7XG4gICAgICB0aCwgdGQge1xuICAgICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwcHg7IH0gfVxuICAgIHRyLmxhc3Qge1xuICAgICAgdGgsIHRkIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMHB4OyB9IH0gfSB9XG4iLCJAbWl4aW4gdGFibGUtc2NhZmZvbGRpbmcge1xuICB0aCB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkOyB9XG4gIHRkLFxuICB0aCB7XG4gICAgcGFkZGluZzogMnB4O1xuICAgICYubnVtZXJpYyB7XG4gICAgICB0ZXh0LWFsaWduOiByaWdodDsgfSB9IH1cbiIsIkBpbXBvcnQgXCJsaW5rcy9ob3Zlci1saW5rXCI7XG5AaW1wb3J0IFwibGlua3MvbGluay1jb2xvcnNcIjtcbkBpbXBvcnQgXCJsaW5rcy91bnN0eWxlZC1saW5rXCI7XG4iLCIvLyBhIGxpbmsgdGhhdCBvbmx5IGhhcyBhbiB1bmRlcmxpbmUgd2hlbiB5b3UgaG92ZXIgb3ZlciBpdFxuQG1peGluIGhvdmVyLWxpbmsge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICY6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9IH1cbiIsIi8vIFNldCBhbGwgdGhlIGNvbG9ycyBmb3IgYSBsaW5rIHdpdGggb25lIG1peGluIGNhbGwuXG4vLyBPcmRlciBvZiBhcmd1bWVudHMgaXM6XG4vL1xuLy8gMS4gbm9ybWFsXG4vLyAyLiBob3ZlclxuLy8gMy4gYWN0aXZlXG4vLyA0LiB2aXNpdGVkXG4vLyA1LiBmb2N1c1xuLy9cbi8vIFRob3NlIHN0YXRlcyBub3Qgc3BlY2lmaWVkIHdpbGwgaW5oZXJpdC5cbi8vIE1peGluIHRvIGFuIGFuY2hvciBsaW5rIGxpa2Ugc286XG4vLyAgICAgYVxuLy8gICAgICAgK2xpbmstY29sb3JzKCMwMGMsICMwY2MsICNjMGMsICNjY2MsICNjYzApXG5cbkBtaXhpbiBsaW5rLWNvbG9ycygkbm9ybWFsLCAkaG92ZXI6IGZhbHNlLCAkYWN0aXZlOiBmYWxzZSwgJHZpc2l0ZWQ6IGZhbHNlLCAkZm9jdXM6IGZhbHNlKSB7XG4gIGNvbG9yOiAkbm9ybWFsO1xuICBAaWYgJHZpc2l0ZWQge1xuICAgICY6dmlzaXRlZCB7XG4gICAgICBjb2xvcjogJHZpc2l0ZWQ7IH0gfVxuICBAaWYgJGZvY3VzIHtcbiAgICAmOmZvY3VzIHtcbiAgICAgIGNvbG9yOiAkZm9jdXM7IH0gfVxuICBAaWYgJGhvdmVyIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkaG92ZXI7IH0gfVxuICBAaWYgJGFjdGl2ZSB7XG4gICAgJjphY3RpdmUge1xuICAgICAgY29sb3I6ICRhY3RpdmU7IH0gfSB9XG4iLCIvLyBBIGxpbmsgdGhhdCBsb29rcyBhbmQgYWN0cyBsaWtlIHRoZSB0ZXh0IGl0IGlzIGNvbnRhaW5lZCB3aXRoaW5cbkBtaXhpbiB1bnN0eWxlZC1saW5rIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdDtcbiAgY3Vyc29yOiBpbmhlcml0O1xuICAmOmFjdGl2ZSwgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTsgfSB9XG4iLCJAaW1wb3J0IFwibGlzdHMvaG9yaXpvbnRhbC1saXN0XCI7XG5AaW1wb3J0IFwibGlzdHMvaW5saW5lLWxpc3RcIjtcbkBpbXBvcnQgXCJsaXN0cy9pbmxpbmUtYmxvY2stbGlzdFwiO1xuQGltcG9ydCBcImxpc3RzL2J1bGxldHNcIjtcbiIsIi8vIEhvcml6b250YWwgbGlzdCBsYXlvdXQgbW9kdWxlLlxuLy9cbi8vIEVhc3kgbW9kZSB1c2luZyBzaW1wbGUgZGVzY2VuZGFudCBsaSBzZWxlY3RvcnM6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gK2hvcml6b250YWwtbGlzdC1jb250YWluZXIgb24geW91ciB1bC9vbCBhbmQgK2hvcml6b250YWwtbGlzdC1pdGVtIG9uIHlvdXIgbGkuXG4vLyBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZyBvbiBsYXlvdXRzIGludm9sdmluZyBuZXN0ZWQgbGlzdHMuIEZvciBleGFtcGxlOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdC1jb250YWluZXJcbi8vICAgICA+IGxpXG4vLyAgICAgICAraG9yaXpvbnRhbC1saXN0LWl0ZW1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL3Jlc2V0XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvZmxvYXRcIjtcblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IHNlbGVjdG9yIHRoYXQgdGFyZ2V0IGEgdWwgb3Igb2wgdGhhdCBpcyBtZWFudFxuLy8gdG8gaGF2ZSBhIGhvcml6b250YWwgbGF5b3V0LiBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuQG1peGluIGhvcml6b250YWwtbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gIEBpbmNsdWRlIGNsZWFyZml4OyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuLy9cbi8vIDpsYXN0LWNoaWxkIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWRcbi8vIHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QyOSBmb3IgdGhlIHN1cHBvcnQgbWF0cml4XG4vL1xuLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBuby1idWxsZXQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIEBpbmNsdWRlIGZsb2F0KCRkaXJlY3Rpb24pO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nO1xuICAgIH1cbiAgICAmOmZpcnN0LWNoaWxkLCAmLmZpcnN0IHsgcGFkZGluZy0jeyRkaXJlY3Rpb259OiAwOyB9XG4gICAgJjpsYXN0LWNoaWxkIHsgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfVxuICAgICYubGFzdCB7IHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH1cbiAgfVxufVxuXG4vLyBBIGxpc3Qob2wsdWwpIHRoYXQgaXMgbGF5ZWQgb3V0IHN1Y2ggdGhhdCB0aGUgZWxlbWVudHMgYXJlIGZsb2F0ZWQgbGVmdCBhbmQgd29uJ3Qgd3JhcC5cbi8vIFRoaXMgaXMgbm90IGFuIGlubGluZSBsaXN0LlxuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdCgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1jb250YWluZXI7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZywgJGRpcmVjdGlvbik7IH0gfVxuIiwiLy8gVHVybiBvZmYgdGhlIGJ1bGxldCBmb3IgYW4gZWxlbWVudCBvZiBhIGxpc3RcbkBtaXhpbiBuby1idWxsZXQge1xuICBsaXN0LXN0eWxlLWltYWdlIDogbm9uZTtcbiAgbGlzdC1zdHlsZS10eXBlICA6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0ICAgICAgOiAwO1xufVxuXG4vLyB0dXJucyBvZmYgdGhlIGJ1bGxldHMgZm9yIGFuIGVudGlyZSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0cyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGxpIHsgQGluY2x1ZGUgbm8tYnVsbGV0OyB9XG59XG5cbi8vIE1ha2UgYSBsaXN0KHVsL29sKSBoYXZlIGFuIGltYWdlIGJ1bGxldC5cbi8vXG4vLyBUaGUgbWl4aW4gc2hvdWxkIGJlIHVzZWQgbGlrZSB0aGlzIGZvciBhbiBpY29uIHRoYXQgaXMgNXg3OlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIsIDVweCwgN3B4KVxuLy9cbi8vIEFkZGl0aW9uYWxseSwgaWYgdGhlIGltYWdlIGRpbWVuc2lvbnMgYXJlIG5vdCBwcm92aWRlZCxcbi8vIFRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGltYWdlIGl0c2VsZi5cbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiKVxuLy9cbkBtaXhpbiBwcmV0dHktYnVsbGV0cygkYnVsbGV0LWljb24sICR3aWR0aDogaW1hZ2Utd2lkdGgoJGJ1bGxldC1pY29uKSwgJGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRidWxsZXQtaWNvbiksICRsaW5lLWhlaWdodDogMThweCwgJHBhZGRpbmc6IDE0cHgpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkYnVsbGV0LWljb24pIG5vLXJlcGVhdCAoJHBhZGRpbmcgLSAkd2lkdGgpIC8gMiAoJGxpbmUtaGVpZ2h0IC0gJGhlaWdodCkgLyAyO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgfVxufVxuIiwiLy8gQGRvYyBvZmZcbi8vIEV4dGVuZHMgdGhlIGJvdHRvbSBvZiB0aGUgZWxlbWVudCB0byBlbmNsb3NlIGFueSBmbG9hdHMgaXQgY29udGFpbnMuXG4vLyBAZG9jIG9uXG5cbkBpbXBvcnQgXCJoYWNrc1wiO1xuXG4vLyBUaGlzIGJhc2ljIG1ldGhvZCBpcyBwcmVmZXJyZWQgZm9yIHRoZSB1c3VhbCBjYXNlLCB3aGVuIHBvc2l0aW9uZWRcbi8vIGNvbnRlbnQgd2lsbCBub3Qgc2hvdyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lci5cbi8vXG4vLyBSZWNvbW1lbmRhdGlvbnMgaW5jbHVkZSB1c2luZyB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYSB3aWR0aC5cbi8vIENyZWRpdDogW3F1aXJrc21vZGUub3JnXShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAwNS8wMy9jbGVhcmluZ19mbG9hdHMuaHRtbClcbkBtaXhpbiBjbGVhcmZpeCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG5cbi8vIFRoaXMgb2xkZXIgbWV0aG9kIGZyb20gUG9zaXRpb24gSXMgRXZlcnl0aGluZyBjYWxsZWRcbi8vIFtFYXN5IENsZWFyaW5nXShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9lYXN5Y2xlYXJpbmcuaHRtbClcbi8vIGhhcyB0aGUgYWR2YW50YWdlIG9mIGFsbG93aW5nIHBvc2l0aW9uZWQgZWxlbWVudHMgdG8gaGFuZ1xuLy8gb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIgYXQgdGhlIGV4cGVuc2Ugb2YgbW9yZSB0cmlja3kgQ1NTLlxuQG1peGluIGxlZ2FjeS1waWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50ICAgIDogXCJcXDAwMjBcIjtcbiAgICBkaXNwbGF5ICAgIDogYmxvY2s7XG4gICAgaGVpZ2h0ICAgICA6IDA7XG4gICAgY2xlYXIgICAgICA6IGJvdGg7XG4gICAgb3ZlcmZsb3cgICA6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5IDogaGlkZGVuO1xuICB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG5cbi8vIFRoaXMgaXMgYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBQSUUgY2xlYXJmaXggbWV0aG9kIHRoYXQgcmVkdWNlcyB0aGUgYW1vdW50IG9mIENTUyBvdXRwdXQuXG4vLyBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IEZpcmVmb3ggYmVmb3JlIDMuNSB5b3UgbmVlZCB0byB1c2UgYGxlZ2FjeS1waWUtY2xlYXJmaXhgIGluc3RlYWQuXG4vL1xuLy8gQWRhcHRlZCBmcm9tOiBbQSBuZXcgbWljcm8gY2xlYXJmaXggaGFja10oaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svKVxuQG1peGluIHBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbn1cbiIsIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9IEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTtcbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYgeyBkaXNwbGF5OiBibG9jazsgfVxuICB9XG59XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTtcbiAgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCIvLyBUaGlzIG1vZHVsZSBoYXMgbW92ZWQuXG5AaW1wb3J0IFwiLi4vLi4vcmVzZXQvdXRpbGl0aWVzXCI7XG4iLCIvLyBCYXNlZCBvbiBbRXJpYyBNZXllcidzIHJlc2V0IDIuMF0oaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9pbmRleC5odG1sKVxuLy8gR2xvYmFsIHJlc2V0IHJ1bGVzLlxuLy8gRm9yIG1vcmUgc3BlY2lmaWMgcmVzZXRzLCB1c2UgdGhlIHJlc2V0IG1peGlucyBwcm92aWRlZCBiZWxvd1xuQG1peGluIGdsb2JhbC1yZXNldCB7XG4gIGh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLCBcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgLy8gVW5saWtlIEVyaWMncyBvcmlnaW5hbCByZXNldCwgd2UgcmVzZXQgdGhlIGh0bWwgZWxlbWVudCB0byBiZSBjb21wYXRpYmxlXG4gIC8vIHdpdGggdGhlIHZlcnRpY2FsIHJoeXRobSBtaXhpbnMuXG4gIGh0bWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJvZHk7IH1cbiAgb2wsIHVsIHtcbiAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlOyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9XG4gIEBpbmNsdWRlIHJlc2V0LWh0bWw1OyB9XG5cbi8vIFJlc2V0IGFsbCBlbGVtZW50cyB3aXRoaW4gc29tZSBzZWxlY3RvciBzY29wZS4gVG8gcmVzZXQgdGhlIHNlbGVjdG9yIGl0c2VsZixcbi8vIG1peGluIHRoZSBhcHByb3ByaWF0ZSByZXNldCBtaXhpbiBmb3IgdGhhdCBlbGVtZW50IHR5cGUgYXMgd2VsbC4gVGhpcyBjb3VsZCBiZVxuLy8gdXNlZnVsIGlmIHlvdSB3YW50IHRvIHN0eWxlIGEgcGFydCBvZiB5b3VyIHBhZ2UgaW4gYSBkcmFtYXRpY2FsbHkgZGlmZmVyZW50IHdheS5cbkBtaXhpbiBuZXN0ZWQtcmVzZXQge1xuICBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCwgXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9IH1cblxuLy8gUmVzZXQgdGhlIGJveCBtb2RlbCBtZWFzdXJlbWVudHMuXG5AbWl4aW4gcmVzZXQtYm94LW1vZGVsIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7IH1cblxuLy8gUmVzZXQgdGhlIGZvbnQgYW5kIHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiByZXNldC1mb250IHtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuLy8gUmVzZXRzIHRoZSBvdXRsaW5lIHdoZW4gZm9jdXMuXG4vLyBGb3IgYWNjZXNzaWJpbGl0eSB5b3UgbmVlZCB0byBhcHBseSBzb21lIHN0eWxpbmcgaW4gaXRzIHBsYWNlLlxuQG1peGluIHJlc2V0LWZvY3VzIHtcbiAgb3V0bGluZTogMDsgfVxuXG4vLyBSZXNldCBhIGJvZHkgZWxlbWVudC5cbkBtaXhpbiByZXNldC1ib2R5IHtcbiAgbGluZS1oZWlnaHQ6IDE7IH1cblxuLy8gUmVzZXQgdGhlIGxpc3Qgc3R5bGUgb2YgYW4gZWxlbWVudC5cbkBtaXhpbiByZXNldC1saXN0LXN0eWxlIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG4vLyBSZXNldCBhIHRhYmxlXG5AbWl4aW4gcmVzZXQtdGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG4vLyBSZXNldCBhIHRhYmxlIGNlbGwgKGB0aGAsIGB0ZGApXG5AbWl4aW4gcmVzZXQtdGFibGUtY2VsbCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLy8gUmVzZXQgYSBxdW90YXRpb24gKGBxYCwgYGJsb2NrcXVvdGVgKVxuQG1peGluIHJlc2V0LXF1b3RhdGlvbiB7XG4gIHF1b3Rlczogbm9uZTtcbiAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7IFxuICAgIGNvbnRlbnQ6IG5vbmU7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGJvcmRlci5cbkBtaXhpbiByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyIHtcbiAgYm9yZGVyOiBub25lOyB9XG5cbi8vIFVucmVjb2duaXplZCBlbGVtZW50cyBhcmUgZGlzcGxheWVkIGlubGluZS5cbi8vIFRoaXMgcmVzZXQgcHJvdmlkZXMgYSBiYXNpYyByZXNldCBmb3IgYmxvY2sgaHRtbDUgZWxlbWVudHNcbi8vIHNvIHRoZXkgYXJlIHJlbmRlcmVkIGNvcnJlY3RseSBpbiBicm93c2VycyB0aGF0IGRvbid0IHJlY29nbml6ZSB0aGVtXG4vLyBhbmQgcmVzZXQgaW4gYnJvd3NlcnMgdGhhdCBoYXZlIGRlZmF1bHQgc3R5bGVzIGZvciB0aGVtLlxuQG1peGluIHJlc2V0LWh0bWw1IHtcbiAgI3tlbGVtZW50cy1vZi10eXBlKGh0bWw1LWJsb2NrKX0ge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBkaXNwbGF5IG9mIGlubGluZSBhbmQgYmxvY2sgZWxlbWVudHMgdG8gdGhlaXIgZGVmYXVsdCBkaXNwbGF5XG4vLyBhY2NvcmRpbmcgdG8gdGhlaXIgdGFnIHR5cGUuIEVsZW1lbnRzIHRoYXQgaGF2ZSBhIGRlZmF1bHQgZGlzcGxheSB0aGF0IHZhcmllcyBhY3Jvc3Ncbi8vIHZlcnNpb25zIG9mIGh0bWwgb3IgYnJvd3NlciBhcmUgbm90IGhhbmRsZWQgaGVyZSwgYnV0IHRoaXMgY292ZXJzIHRoZSA5MCUgdXNlIGNhc2UuXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICAvLyBUdXJuIG9mZiB0aGUgZGlzcGxheSBmb3IgYm90aCBvZiB0aGVzZSBjbGFzc2VzXG4vLyAgICAgLnVucmVnaXN0ZXJlZC1vbmx5LCAucmVnaXN0ZXJlZC1vbmx5XG4vLyAgICAgICBkaXNwbGF5OiBub25lXG4vLyAgICAgLy8gTm93IHR1cm4gb25seSBvbmUgb2YgdGhlbSBiYWNrIG9uIGRlcGVuZGluZyBvbiBzb21lIG90aGVyIGNvbnRleHQuXG4vLyAgICAgYm9keS5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi5yZWdpc3RlcmVkLW9ubHlcIilcbi8vICAgICBib2R5LnVucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIudW5yZWdpc3RlcmVkLW9ubHlcIilcbkBtaXhpbiByZXNldC1kaXNwbGF5KCRzZWxlY3RvcjogXCJcIiwgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImlubGluZVwiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogaW5saW5lOyB9IH1cbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImJsb2NrXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6bGVmdCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtbGVmdCB7XG4gIEBpbmNsdWRlIGZsb2F0KGxlZnQpOyB9XG5cbi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OnJpZ2h0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1yaWdodCB7XG4gIEBpbmNsdWRlIGZsb2F0KHJpZ2h0KTsgfVxuXG4vLyBEaXJlY3Rpb24gaW5kZXBlbmRlbnQgZmxvYXQgbWl4aW4gdGhhdCBmaXhlcyB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdCgkc2lkZTogbGVmdCkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiB1bnF1b3RlKCRzaWRlKTsgfVxuXG4vLyBSZXNldHMgZmxvYXRlZCBlbGVtZW50cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHQgb2YgYGZsb2F0OiBub25lYCBhbmQgZGVmYXVsdHNcbi8vIHRvIGBkaXNwbGF5OiBibG9ja2AgdW5sZXNzIHlvdSBwYXNzIGBpbmxpbmVgIGFzIGFuIGFyZ3VtZW50XG4vL1xuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgYm9keS5ob21lcGFnZVxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArZmxvYXQtbGVmdFxuLy8gICAgIGJvZHkuc2lnbnVwXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtyZXNldC1mbG9hdFxuQG1peGluIHJlc2V0LWZsb2F0KCRkaXNwbGF5OiBibG9jaykge1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogJGRpc3BsYXk7IH0iLCIvLyBtYWtlcyBhIGxpc3QgaW5saW5lLlxuXG5AbWl4aW4gaW5saW5lLWxpc3Qge1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICYsICYgbGkge1xuICAgIG1hcmdpbjogMHB4O1xuICAgIHBhZGRpbmc6IDBweDtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gIH1cbn1cblxuLy8gbWFrZXMgYW4gaW5saW5lIGxpc3QgZGVsaW1pdGVkIHdpdGggdGhlIHBhc3NlZCBzdHJpbmcuXG4vLyBEZWZhdWx0cyB0byBtYWtpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdC5cbi8vXG4vLyBQbGVhc2UgbWFrZSBub3RlIG9mIHRoZSBicm93c2VyIHN1cHBvcnQgaXNzdWVzIGJlZm9yZSB1c2luZyB0aGlzIG1peGluOlxuLy9cbi8vIHVzZSBvZiBgY29udGVudGAgYW5kIGA6YWZ0ZXJgIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWQgaW4gYWxsIGJyb3dzZXJzLlxuLy8gU2VlIHF1aXJrc21vZGUgZm9yIHRoZSBbc3VwcG9ydCBtYXRyaXhdKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDE1KVxuLy9cbi8vIGA6bGFzdC1jaGlsZGAgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZC5cbi8vIHNlZSBxdWlya3Ntb2RlIGZvciB0aGUgW3N1cHBvcnQgbWF0cml4XShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QyOSkuXG4vL1xuLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG5cbkBtaXhpbiBkZWxpbWl0ZWQtbGlzdCgkc2VwYXJhdG9yOiBcIiwgXCIpIHtcbiAgQGluY2x1ZGUgaW5saW5lLWxpc3Q7XG4gIGxpIHtcbiAgICAmOmFmdGVyIHsgY29udGVudDogJHNlcGFyYXRvcjsgfVxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAmOmFmdGVyIHsgY29udGVudDogXCJcIjsgfVxuICAgIH1cbiAgICAmLmxhc3Qge1xuICAgICAgJjphZnRlciB7IGNvbnRlbnQ6IFwiXCI7IH1cbiAgICB9XG4gIH1cbn1cblxuLy8gU2VlIFtkZWxpbWl0ZWQtbGlzdF0oI21peGluLWRlbGltaXRlZC1saXN0KVxuLy8gQGRlcHJlY2F0ZWRcbkBtaXhpbiBjb21tYS1kZWxpbWl0ZWQtbGlzdCB7XG4gIEB3YXJuIFwiY29tbWEtZGVsaW1pdGVkLWxpc3QgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBkZWxpbWl0ZWQtbGlzdCBpbnN0ZWFkLlwiO1xuICBAaW5jbHVkZSBkZWxpbWl0ZWQtbGlzdDtcbn1cbiIsIi8vIElubGluZS1CbG9jayBsaXN0IGxheW91dCBtb2R1bGUuXG4vL1xuLy8gRWFzeSBtb2RlIHVzaW5nIHNpbXBsZSBkZXNjZW5kYW50IGxpIHNlbGVjdG9yczpcbi8vXG4vLyAgICAgdWwubmF2IHtcbi8vICAgICAgIEBpbXBvcnQgaW5saW5lLWJsb2NrLWxpc3Q7XG4vLyAgICAgfVxuLy9cbi8vIEFkdmFuY2VkIG1vZGU6XG4vLyBJZiB5b3UgbmVlZCB0byB0YXJnZXQgdGhlIGxpc3QgaXRlbXMgdXNpbmcgYSBkaWZmZXJlbnQgc2VsZWN0b3IgdGhlbiB1c2Vcbi8vIGBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXJgIG9uIHlvdXIgdWwvb2wgYW5kXG4vLyBgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtaXRlbWAgb24geW91ciBsaS4gVGhpcyBtYXkgaGVscCB3aGVuIHdvcmtpbmdcbi8vIG9uIGxheW91dHMgaW52b2x2aW5nIG5lc3RlZCBsaXN0cy4gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICAgIHVsLm5hdiB7XG4vLyAgICAgICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXI7XG4vLyAgICAgICA+IGxpIHtcbi8vICAgICAgICAgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtaXRlbTtcbi8vICAgICAgIH1cbi8vICAgICB9XG5cbkBpbXBvcnQgXCJidWxsZXRzXCI7XG5AaW1wb3J0IFwiaG9yaXpvbnRhbC1saXN0XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvZmxvYXRcIjtcbkBpbXBvcnQgXCIuLi8uLi9jc3MzL2lubGluZS1ibG9ja1wiO1xuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgc2VsZWN0b3IgdGhhdCB0YXJnZXQgYSB1bCBvciBvbCB0aGF0IGlzIG1lYW50XG4vLyB0byBoYXZlIGFuIGlubGluZS1ibG9jayBsYXlvdXQuIFVzZWQgdG8gaW1wbGVtZW50IGBpbmxpbmUtYmxvY2stbGlzdGAuXG5AbWl4aW4gaW5saW5lLWJsb2NrLWxpc3QtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lcjsgfVxuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgbGkgc2VsZWN0b3IgdGhhdCBpcyBtZWFudCB0byBwYXJ0aWNpcGF0ZSBpbiBhIGhvcml6b250YWwgbGF5b3V0LlxuLy8gVXNlZCB0byBpbXBsZW1lbnQgYGlubGluZS1ibG9jay1saXN0YC5cbkBtaXhpbiBpbmxpbmUtYmxvY2stbGlzdC1pdGVtKCRwYWRkaW5nOiBmYWxzZSkge1xuICBAaW5jbHVkZSBuby1idWxsZXQ7XG4gIEBpbmNsdWRlIGlubGluZS1ibG9jaztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgQGlmICRwYWRkaW5nIHtcbiAgICBwYWRkaW5nOiB7XG4gICAgICBsZWZ0OiAkcGFkZGluZztcbiAgICAgIHJpZ2h0OiAkcGFkZGluZztcbiAgICB9O1xuICB9XG59XG5cbi8vIEEgbGlzdChvbCx1bCkgdGhhdCBpcyBsYXllZCBvdXQgc3VjaCB0aGF0IHRoZSBlbGVtZW50cyBhcmUgaW5saW5lLWJsb2NrIGFuZCB3b24ndCB3cmFwLlxuQG1peGluIGlubGluZS1ibG9jay1saXN0KCRwYWRkaW5nOiBmYWxzZSkge1xuICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXI7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1pdGVtKCRwYWRkaW5nKTsgfSB9XG4iLCIvLyBUdXJuIG9mZiB0aGUgYnVsbGV0IGZvciBhbiBlbGVtZW50IG9mIGEgbGlzdFxuQG1peGluIG5vLWJ1bGxldCB7XG4gIGxpc3Qtc3R5bGUtaW1hZ2UgOiBub25lO1xuICBsaXN0LXN0eWxlLXR5cGUgIDogbm9uZTtcbiAgbWFyZ2luLWxlZnQgICAgICA6IDA7XG59XG5cbi8vIHR1cm5zIG9mZiB0aGUgYnVsbGV0cyBmb3IgYW4gZW50aXJlIGxpc3RcbkBtaXhpbiBuby1idWxsZXRzIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbGkgeyBAaW5jbHVkZSBuby1idWxsZXQ7IH1cbn1cblxuLy8gTWFrZSBhIGxpc3QodWwvb2wpIGhhdmUgYW4gaW1hZ2UgYnVsbGV0LlxuLy9cbi8vIFRoZSBtaXhpbiBzaG91bGQgYmUgdXNlZCBsaWtlIHRoaXMgZm9yIGFuIGljb24gdGhhdCBpcyA1eDc6XG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIiwgNXB4LCA3cHgpXG4vL1xuLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgaW1hZ2UgZGltZW5zaW9ucyBhcmUgbm90IHByb3ZpZGVkLFxuLy8gVGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgaXRzZWxmLlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIpXG4vL1xuQG1peGluIHByZXR0eS1idWxsZXRzKCRidWxsZXQtaWNvbiwgJHdpZHRoOiBpbWFnZS13aWR0aCgkYnVsbGV0LWljb24pLCAkaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGJ1bGxldC1pY29uKSwgJGxpbmUtaGVpZ2h0OiAxOHB4LCAkcGFkZGluZzogMTRweCkge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbGkge1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRidWxsZXQtaWNvbikgbm8tcmVwZWF0ICgkcGFkZGluZyAtICR3aWR0aCkgLyAyICgkbGluZS1oZWlnaHQgLSAkaGVpZ2h0KSAvIDI7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICB9XG59XG4iLCIvLyBIb3Jpem9udGFsIGxpc3QgbGF5b3V0IG1vZHVsZS5cbi8vXG4vLyBFYXN5IG1vZGUgdXNpbmcgc2ltcGxlIGRlc2NlbmRhbnQgbGkgc2VsZWN0b3JzOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdFxuLy9cbi8vIEFkdmFuY2VkIG1vZGU6XG4vLyBJZiB5b3UgbmVlZCB0byB0YXJnZXQgdGhlIGxpc3QgaXRlbXMgdXNpbmcgYSBkaWZmZXJlbnQgc2VsZWN0b3IgdGhlbiB1c2Vcbi8vICtob3Jpem9udGFsLWxpc3QtY29udGFpbmVyIG9uIHlvdXIgdWwvb2wgYW5kICtob3Jpem9udGFsLWxpc3QtaXRlbSBvbiB5b3VyIGxpLlxuLy8gVGhpcyBtYXkgaGVscCB3aGVuIHdvcmtpbmcgb24gbGF5b3V0cyBpbnZvbHZpbmcgbmVzdGVkIGxpc3RzLiBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgIHVsLm5hdlxuLy8gICAgICtob3Jpem9udGFsLWxpc3QtY29udGFpbmVyXG4vLyAgICAgPiBsaVxuLy8gICAgICAgK2hvcml6b250YWwtbGlzdC1pdGVtXG5cbkBpbXBvcnQgXCJidWxsZXRzXCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9yZXNldFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2Zsb2F0XCI7XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBzZWxlY3RvciB0aGF0IHRhcmdldCBhIHVsIG9yIG9sIHRoYXQgaXMgbWVhbnRcbi8vIHRvIGhhdmUgYSBob3Jpem9udGFsIGxheW91dC4gVXNlZCB0byBpbXBsZW1lbnQgK2hvcml6b250YWwtbGlzdC5cbkBtaXhpbiBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICBAaW5jbHVkZSBjbGVhcmZpeDsgfVxuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgbGkgc2VsZWN0b3IgdGhhdCBpcyBtZWFudCB0byBwYXJ0aWNpcGF0ZSBpbiBhIGhvcml6b250YWwgbGF5b3V0LlxuLy8gVXNlZCB0byBpbXBsZW1lbnQgK2hvcml6b250YWwtbGlzdC5cbi8vXG4vLyA6bGFzdC1jaGlsZCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkXG4vLyBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MjkgZm9yIHRoZSBzdXBwb3J0IG1hdHJpeFxuLy9cbi8vIElFOCBpZ25vcmVzIHJ1bGVzIHRoYXQgYXJlIGluY2x1ZGVkIG9uIHRoZSBzYW1lIGxpbmUgYXMgOmxhc3QtY2hpbGRcbi8vIHNlZSBodHRwOi8vd3d3LnJpY2hhcmRzY2Fycm90dC5jby51ay9wb3N0cy92aWV3L2llOC1sYXN0LWNoaWxkLWJ1ZyBmb3IgZGV0YWlsc1xuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdC1pdGVtKCRwYWRkaW5nOiA0cHgsICRkaXJlY3Rpb246IGxlZnQpIHtcbiAgQGluY2x1ZGUgbm8tYnVsbGV0O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBAaW5jbHVkZSBmbG9hdCgkZGlyZWN0aW9uKTtcbiAgQGlmICRwYWRkaW5nIHtcbiAgICBwYWRkaW5nOiB7XG4gICAgICBsZWZ0OiAkcGFkZGluZztcbiAgICAgIHJpZ2h0OiAkcGFkZGluZztcbiAgICB9XG4gICAgJjpmaXJzdC1jaGlsZCwgJi5maXJzdCB7IHBhZGRpbmctI3skZGlyZWN0aW9ufTogMDsgfVxuICAgICY6bGFzdC1jaGlsZCB7IHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH1cbiAgICAmLmxhc3QgeyBwYWRkaW5nLSN7b3Bwb3NpdGUtcG9zaXRpb24oJGRpcmVjdGlvbil9OiAwOyB9XG4gIH1cbn1cblxuLy8gQSBsaXN0KG9sLHVsKSB0aGF0IGlzIGxheWVkIG91dCBzdWNoIHRoYXQgdGhlIGVsZW1lbnRzIGFyZSBmbG9hdGVkIGxlZnQgYW5kIHdvbid0IHdyYXAuXG4vLyBUaGlzIGlzIG5vdCBhbiBpbmxpbmUgbGlzdC5cbi8vXG4vLyBTZXR0aW5nIGAkcGFkZGluZ2AgdG8gYGZhbHNlYCBkaXNhYmxlcyB0aGUgcGFkZGluZyBiZXR3ZWVuIGxpc3QgZWxlbWVudHNcbkBtaXhpbiBob3Jpem9udGFsLWxpc3QoJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmcsICRkaXJlY3Rpb24pOyB9IH1cbiIsIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZSA6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZSAgOiBub25lO1xuICBtYXJnaW4tbGVmdCAgICAgIDogMDtcbn1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7IEBpbmNsdWRlIG5vLWJ1bGxldDsgfVxufVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIgKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMjtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIH1cbn1cbiIsIi8vIEBkb2Mgb2ZmXG4vLyBFeHRlbmRzIHRoZSBib3R0b20gb2YgdGhlIGVsZW1lbnQgdG8gZW5jbG9zZSBhbnkgZmxvYXRzIGl0IGNvbnRhaW5zLlxuLy8gQGRvYyBvblxuXG5AaW1wb3J0IFwiaGFja3NcIjtcblxuLy8gVGhpcyBiYXNpYyBtZXRob2QgaXMgcHJlZmVycmVkIGZvciB0aGUgdXN1YWwgY2FzZSwgd2hlbiBwb3NpdGlvbmVkXG4vLyBjb250ZW50IHdpbGwgbm90IHNob3cgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIuXG4vL1xuLy8gUmVjb21tZW5kYXRpb25zIGluY2x1ZGUgdXNpbmcgdGhpcyBpbiBjb25qdW5jdGlvbiB3aXRoIGEgd2lkdGguXG4vLyBDcmVkaXQ6IFtxdWlya3Ntb2RlLm9yZ10oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMDUvMDMvY2xlYXJpbmdfZmxvYXRzLmh0bWwpXG5AbWl4aW4gY2xlYXJmaXgge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBoYXMtbGF5b3V0O1xufVxuXG4vLyBUaGlzIG9sZGVyIG1ldGhvZCBmcm9tIFBvc2l0aW9uIElzIEV2ZXJ5dGhpbmcgY2FsbGVkXG4vLyBbRWFzeSBDbGVhcmluZ10oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZWFzeWNsZWFyaW5nLmh0bWwpXG4vLyBoYXMgdGhlIGFkdmFudGFnZSBvZiBhbGxvd2luZyBwb3NpdGlvbmVkIGVsZW1lbnRzIHRvIGhhbmdcbi8vIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyIGF0IHRoZSBleHBlbnNlIG9mIG1vcmUgdHJpY2t5IENTUy5cbkBtaXhpbiBsZWdhY3ktcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudCAgICA6IFwiXFwwMDIwXCI7XG4gICAgZGlzcGxheSAgICA6IGJsb2NrO1xuICAgIGhlaWdodCAgICAgOiAwO1xuICAgIGNsZWFyICAgICAgOiBib3RoO1xuICAgIG92ZXJmbG93ICAgOiBoaWRkZW47XG4gICAgdmlzaWJpbGl0eSA6IGhpZGRlbjtcbiAgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0O1xufVxuXG4vLyBUaGlzIGlzIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgUElFIGNsZWFyZml4IG1ldGhvZCB0aGF0IHJlZHVjZXMgdGhlIGFtb3VudCBvZiBDU1Mgb3V0cHV0LlxuLy8gSWYgeW91IG5lZWQgdG8gc3VwcG9ydCBGaXJlZm94IGJlZm9yZSAzLjUgeW91IG5lZWQgdG8gdXNlIGBsZWdhY3ktcGllLWNsZWFyZml4YCBpbnN0ZWFkLlxuLy9cbi8vIEFkYXB0ZWQgZnJvbTogW0EgbmV3IG1pY3JvIGNsZWFyZml4IGhhY2tdKGh0dHA6Ly9uaWNvbGFzZ2FsbGFnaGVyLmNvbS9taWNyby1jbGVhcmZpeC1oYWNrLylcbkBtaXhpbiBwaWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG4iLCJAaW1wb3J0IFwiLi4vLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGUgYHpvb21gIGFwcHJvYWNoIGdlbmVyYXRlcyBsZXNzIENTUyBidXQgZG9lcyBub3QgdmFsaWRhdGUuXG4vLyBTZXQgdGhpcyB0byBgYmxvY2tgIHRvIHVzZSB0aGUgZGlzcGxheS1wcm9wZXJ0eSB0byBoYWNrIHRoZVxuLy8gZWxlbWVudCB0byBnYWluIGxheW91dC5cbiRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2g6IHpvb20gIWRlZmF1bHQ7XG5cbi8vIFRoaXMgbWl4aW4gY2F1c2VzIGFuIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIHNlbGVjdG9yXG4vLyB0byBnYWluIHRoZSBcImhhc0xheW91dFwiIHByb3BlcnR5IGluIGludGVybmV0IGV4cGxvcmVyLlxuLy8gTW9yZSBpbmZvcm1hdGlvbiBvbiBbaGFzTGF5b3V0XShodHRwOi8vcmVmZXJlbmNlLnNpdGVwb2ludC5jb20vY3NzL2hhc2xheW91dCkuXG5AbWl4aW4gaGFzLWxheW91dCgkYXBwcm9hY2g6ICRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2gpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIEBpZiAkYXBwcm9hY2ggPT0gem9vbSB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207XG4gICAgfSBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gYmxvY2sge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC1ibG9jaztcbiAgICB9IEBlbHNlIHtcbiAgICAgIEB3YXJuIFwiVW5rbm93biBoYXMtbGF5b3V0IGFwcHJvYWNoOiAjeyRhcHByb2FjaH1cIjtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGhhcy1sYXlvdXQtem9vbSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyB7XG4gICAgKnpvb206IDE7XG4gIH1cbn1cblxuQG1peGluIGhhcy1sYXlvdXQtYmxvY2sge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgLy8gVGhpcyBtYWtlcyBpZTYgZ2V0IGxheW91dFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBhbmQgdGhpcyBwdXRzIGl0IGJhY2sgdG8gYmxvY2tcbiAgICAmIHsgZGlzcGxheTogYmxvY2s7IH1cbiAgfVxufVxuXG4vLyBBIGhhY2sgdG8gc3VwcGx5IElFNiAoYW5kIGJlbG93KSB3aXRoIGEgZGlmZmVyZW50IHByb3BlcnR5IHZhbHVlLlxuLy8gW1JlYWQgbW9yZV0oaHR0cDovL3d3dy5jc3Nwb3J0YWwuY29tL2Nzcy1oYWNrcy8jaW5fY3NzLWltcG9ydGFudCkuXG5AbWl4aW4gYmFuZy1oYWNrKCRwcm9wZXJ0eSwgJHZhbHVlLCAkaWU2LXZhbHVlKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0gIWltcG9ydGFudDtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JGllNi12YWx1ZX07XG4gIH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiLy8gVGhpcyBtb2R1bGUgaGFzIG1vdmVkLlxuQGltcG9ydCBcIi4uLy4uL3Jlc2V0L3V0aWxpdGllc1wiO1xuIiwiLy8gQmFzZWQgb24gW0VyaWMgTWV5ZXIncyByZXNldCAyLjBdKGh0dHA6Ly9tZXllcndlYi5jb20vZXJpYy90b29scy9jc3MvcmVzZXQvaW5kZXguaHRtbClcbi8vIEdsb2JhbCByZXNldCBydWxlcy5cbi8vIEZvciBtb3JlIHNwZWNpZmljIHJlc2V0cywgdXNlIHRoZSByZXNldCBtaXhpbnMgcHJvdmlkZWQgYmVsb3dcbkBtaXhpbiBnbG9iYWwtcmVzZXQge1xuICBodG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCwgXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIC8vIFVubGlrZSBFcmljJ3Mgb3JpZ2luYWwgcmVzZXQsIHdlIHJlc2V0IHRoZSBodG1sIGVsZW1lbnQgdG8gYmUgY29tcGF0aWJsZVxuICAvLyB3aXRoIHRoZSB2ZXJ0aWNhbCByaHl0aG0gbWl4aW5zLlxuICBodG1sIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib2R5OyB9XG4gIG9sLCB1bCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtbGlzdC1zdHlsZTsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfVxuICBAaW5jbHVkZSByZXNldC1odG1sNTsgfVxuXG4vLyBSZXNldCBhbGwgZWxlbWVudHMgd2l0aGluIHNvbWUgc2VsZWN0b3Igc2NvcGUuIFRvIHJlc2V0IHRoZSBzZWxlY3RvciBpdHNlbGYsXG4vLyBtaXhpbiB0aGUgYXBwcm9wcmlhdGUgcmVzZXQgbWl4aW4gZm9yIHRoYXQgZWxlbWVudCB0eXBlIGFzIHdlbGwuIFRoaXMgY291bGQgYmVcbi8vIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBzdHlsZSBhIHBhcnQgb2YgeW91ciBwYWdlIGluIGEgZHJhbWF0aWNhbGx5IGRpZmZlcmVudCB3YXkuXG5AbWl4aW4gbmVzdGVkLXJlc2V0IHtcbiAgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsIFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfSB9XG5cbi8vIFJlc2V0IHRoZSBib3ggbW9kZWwgbWVhc3VyZW1lbnRzLlxuQG1peGluIHJlc2V0LWJveC1tb2RlbCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwOyB9XG5cbi8vIFJlc2V0IHRoZSBmb250IGFuZCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXG5AbWl4aW4gcmVzZXQtZm9udCB7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5cbi8vIFJlc2V0cyB0aGUgb3V0bGluZSB3aGVuIGZvY3VzLlxuLy8gRm9yIGFjY2Vzc2liaWxpdHkgeW91IG5lZWQgdG8gYXBwbHkgc29tZSBzdHlsaW5nIGluIGl0cyBwbGFjZS5cbkBtaXhpbiByZXNldC1mb2N1cyB7XG4gIG91dGxpbmU6IDA7IH1cblxuLy8gUmVzZXQgYSBib2R5IGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtYm9keSB7XG4gIGxpbmUtaGVpZ2h0OiAxOyB9XG5cbi8vIFJlc2V0IHRoZSBsaXN0IHN0eWxlIG9mIGFuIGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtbGlzdC1zdHlsZSB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cblxuLy8gUmVzZXQgYSB0YWJsZVxuQG1peGluIHJlc2V0LXRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7IH1cblxuLy8gUmVzZXQgYSB0YWJsZSBjZWxsIChgdGhgLCBgdGRgKVxuQG1peGluIHJlc2V0LXRhYmxlLWNlbGwge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG5cbi8vIFJlc2V0IGEgcXVvdGF0aW9uIChgcWAsIGBibG9ja3F1b3RlYClcbkBtaXhpbiByZXNldC1xdW90YXRpb24ge1xuICBxdW90ZXM6IG5vbmU7XG4gICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiOyBcbiAgICBjb250ZW50OiBub25lOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBib3JkZXIuXG5AbWl4aW4gcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlciB7XG4gIGJvcmRlcjogbm9uZTsgfVxuXG4vLyBVbnJlY29nbml6ZWQgZWxlbWVudHMgYXJlIGRpc3BsYXllZCBpbmxpbmUuXG4vLyBUaGlzIHJlc2V0IHByb3ZpZGVzIGEgYmFzaWMgcmVzZXQgZm9yIGJsb2NrIGh0bWw1IGVsZW1lbnRzXG4vLyBzbyB0aGV5IGFyZSByZW5kZXJlZCBjb3JyZWN0bHkgaW4gYnJvd3NlcnMgdGhhdCBkb24ndCByZWNvZ25pemUgdGhlbVxuLy8gYW5kIHJlc2V0IGluIGJyb3dzZXJzIHRoYXQgaGF2ZSBkZWZhdWx0IHN0eWxlcyBmb3IgdGhlbS5cbkBtaXhpbiByZXNldC1odG1sNSB7XG4gICN7ZWxlbWVudHMtb2YtdHlwZShodG1sNS1ibG9jayl9IHtcbiAgICBkaXNwbGF5OiBibG9jazsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgZGlzcGxheSBvZiBpbmxpbmUgYW5kIGJsb2NrIGVsZW1lbnRzIHRvIHRoZWlyIGRlZmF1bHQgZGlzcGxheVxuLy8gYWNjb3JkaW5nIHRvIHRoZWlyIHRhZyB0eXBlLiBFbGVtZW50cyB0aGF0IGhhdmUgYSBkZWZhdWx0IGRpc3BsYXkgdGhhdCB2YXJpZXMgYWNyb3NzXG4vLyB2ZXJzaW9ucyBvZiBodG1sIG9yIGJyb3dzZXIgYXJlIG5vdCBoYW5kbGVkIGhlcmUsIGJ1dCB0aGlzIGNvdmVycyB0aGUgOTAlIHVzZSBjYXNlLlxuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgLy8gVHVybiBvZmYgdGhlIGRpc3BsYXkgZm9yIGJvdGggb2YgdGhlc2UgY2xhc3Nlc1xuLy8gICAgIC51bnJlZ2lzdGVyZWQtb25seSwgLnJlZ2lzdGVyZWQtb25seVxuLy8gICAgICAgZGlzcGxheTogbm9uZVxuLy8gICAgIC8vIE5vdyB0dXJuIG9ubHkgb25lIG9mIHRoZW0gYmFjayBvbiBkZXBlbmRpbmcgb24gc29tZSBvdGhlciBjb250ZXh0LlxuLy8gICAgIGJvZHkucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIucmVnaXN0ZXJlZC1vbmx5XCIpXG4vLyAgICAgYm9keS51bnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnVucmVnaXN0ZXJlZC1vbmx5XCIpXG5AbWl4aW4gcmVzZXQtZGlzcGxheSgkc2VsZWN0b3I6IFwiXCIsICRpbXBvcnRhbnQ6IGZhbHNlKSB7XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJpbmxpbmVcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZTsgfSB9XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJibG9ja1wiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cbiIsIi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OmxlZnQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LWxlZnQge1xuICBAaW5jbHVkZSBmbG9hdChsZWZ0KTsgfVxuXG4vLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpyaWdodCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtcmlnaHQge1xuICBAaW5jbHVkZSBmbG9hdChyaWdodCk7IH1cblxuLy8gRGlyZWN0aW9uIGluZGVwZW5kZW50IGZsb2F0IG1peGluIHRoYXQgZml4ZXMgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQoJHNpZGU6IGxlZnQpIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICBmbG9hdDogdW5xdW90ZSgkc2lkZSk7IH1cblxuLy8gUmVzZXRzIGZsb2F0ZWQgZWxlbWVudHMgYmFjayB0byB0aGVpciBkZWZhdWx0IG9mIGBmbG9hdDogbm9uZWAgYW5kIGRlZmF1bHRzXG4vLyB0byBgZGlzcGxheTogYmxvY2tgIHVubGVzcyB5b3UgcGFzcyBgaW5saW5lYCBhcyBhbiBhcmd1bWVudFxuLy9cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIGJvZHkuaG9tZXBhZ2Vcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK2Zsb2F0LWxlZnRcbi8vICAgICBib2R5LnNpZ251cFxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArcmVzZXQtZmxvYXRcbkBtaXhpbiByZXNldC1mbG9hdCgkZGlzcGxheTogYmxvY2spIHtcbiAgZmxvYXQ6IG5vbmU7XG4gIGRpc3BsYXk6ICRkaXNwbGF5OyB9IiwiLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6bGVmdCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtbGVmdCB7XG4gIEBpbmNsdWRlIGZsb2F0KGxlZnQpOyB9XG5cbi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OnJpZ2h0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1yaWdodCB7XG4gIEBpbmNsdWRlIGZsb2F0KHJpZ2h0KTsgfVxuXG4vLyBEaXJlY3Rpb24gaW5kZXBlbmRlbnQgZmxvYXQgbWl4aW4gdGhhdCBmaXhlcyB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdCgkc2lkZTogbGVmdCkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiB1bnF1b3RlKCRzaWRlKTsgfVxuXG4vLyBSZXNldHMgZmxvYXRlZCBlbGVtZW50cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHQgb2YgYGZsb2F0OiBub25lYCBhbmQgZGVmYXVsdHNcbi8vIHRvIGBkaXNwbGF5OiBibG9ja2AgdW5sZXNzIHlvdSBwYXNzIGBpbmxpbmVgIGFzIGFuIGFyZ3VtZW50XG4vL1xuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgYm9keS5ob21lcGFnZVxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArZmxvYXQtbGVmdFxuLy8gICAgIGJvZHkuc2lnbnVwXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtyZXNldC1mbG9hdFxuQG1peGluIHJlc2V0LWZsb2F0KCRkaXNwbGF5OiBibG9jaykge1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogJGRpc3BsYXk7IH0iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFNldCBgJGlubGluZS1ibG9jay1hbGlnbm1lbnRgIHRvIGBub25lYCBvciBgZmFsc2VgIHRvIGRpc2FibGUgdGhlIG91dHB1dFxuLy8gb2YgYSB2ZXJ0aWNhbC1hbGlnbiBwcm9wZXJ0eSBpbiB0aGUgaW5saW5lLWJsb2NrIG1peGluLlxuLy8gT3Igc2V0IGl0IHRvIGEgbGVnYWwgdmFsdWUgZm9yIGB2ZXJ0aWNhbC1hbGlnbmAgdG8gY2hhbmdlIHRoZSBkZWZhdWx0LlxuJGlubGluZS1ibG9jay1hbGlnbm1lbnQ6IG1pZGRsZSAhZGVmYXVsdDtcblxuLy8gUHJvdmlkZXMgYSBjcm9zcy1icm93c2VyIG1ldGhvZCB0byBpbXBsZW1lbnQgYGRpc3BsYXk6IGlubGluZS1ibG9jaztgXG5AbWl4aW4gaW5saW5lLWJsb2NrKCRhbGlnbm1lbnQ6ICRpbmxpbmUtYmxvY2stYWxpZ25tZW50KSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIGRpc3BsYXk6IC1tb3otaW5saW5lLXN0YWNrO1xuICB9XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgQGlmICRhbGlnbm1lbnQgYW5kICRhbGlnbm1lbnQgIT0gbm9uZSB7XG4gICAgdmVydGljYWwtYWxpZ246ICRhbGlnbm1lbnQ7XG4gIH1cbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgICp2ZXJ0aWNhbC1hbGlnbjogYXV0bztcbiAgICB6b29tOiAxO1xuICAgICpkaXNwbGF5OiBpbmxpbmU7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCIvLyBUdXJuIG9mZiB0aGUgYnVsbGV0IGZvciBhbiBlbGVtZW50IG9mIGEgbGlzdFxuQG1peGluIG5vLWJ1bGxldCB7XG4gIGxpc3Qtc3R5bGUtaW1hZ2UgOiBub25lO1xuICBsaXN0LXN0eWxlLXR5cGUgIDogbm9uZTtcbiAgbWFyZ2luLWxlZnQgICAgICA6IDA7XG59XG5cbi8vIHR1cm5zIG9mZiB0aGUgYnVsbGV0cyBmb3IgYW4gZW50aXJlIGxpc3RcbkBtaXhpbiBuby1idWxsZXRzIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbGkgeyBAaW5jbHVkZSBuby1idWxsZXQ7IH1cbn1cblxuLy8gTWFrZSBhIGxpc3QodWwvb2wpIGhhdmUgYW4gaW1hZ2UgYnVsbGV0LlxuLy9cbi8vIFRoZSBtaXhpbiBzaG91bGQgYmUgdXNlZCBsaWtlIHRoaXMgZm9yIGFuIGljb24gdGhhdCBpcyA1eDc6XG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIiwgNXB4LCA3cHgpXG4vL1xuLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgaW1hZ2UgZGltZW5zaW9ucyBhcmUgbm90IHByb3ZpZGVkLFxuLy8gVGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgaXRzZWxmLlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIpXG4vL1xuQG1peGluIHByZXR0eS1idWxsZXRzKCRidWxsZXQtaWNvbiwgJHdpZHRoOiBpbWFnZS13aWR0aCgkYnVsbGV0LWljb24pLCAkaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGJ1bGxldC1pY29uKSwgJGxpbmUtaGVpZ2h0OiAxOHB4LCAkcGFkZGluZzogMTRweCkge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbGkge1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRidWxsZXQtaWNvbikgbm8tcmVwZWF0ICgkcGFkZGluZyAtICR3aWR0aCkgLyAyICgkbGluZS1oZWlnaHQgLSAkaGVpZ2h0KSAvIDI7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICB9XG59XG4iLCJAaW1wb3J0IFwidGV4dC9lbGxpcHNpc1wiO1xuQGltcG9ydCBcInRleHQvbm93cmFwXCI7XG5AaW1wb3J0IFwidGV4dC9yZXBsYWNlbWVudFwiO1xuQGltcG9ydCBcInRleHQvZm9yY2Utd3JhcFwiO1xuIiwiQGltcG9ydCBcIi4uLy4uL2NzczMvc2hhcmVkXCI7XG5cbi8vIFRvIGdldCBmdWxsIGZpcmVmb3ggc3VwcG9ydCwgeW91IG11c3QgaW5zdGFsbCB0aGUgZWxsaXBzaXMgcGF0dGVybjpcbi8vXG4vLyAgICAgY29tcGFzcyBpbnN0YWxsIGNvbXBhc3MvZWxsaXBzaXNcbiR1c2UtbW96aWxsYS1lbGxpcHNpcy1iaW5kaW5nOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gVGhpcyB0ZWNobmlxdWUsIGJ5IFtKdXN0aW4gTWF4d2VsbF0oaHR0cDovL2NvZGU0MDQuY29tLyksIHdhcyBvcmlnaW5hbGx5XG4vLyBwdWJsaXNoZWQgW2hlcmVdKGh0dHA6Ly9tYXR0c25pZGVyLmNvbS9jc3MvY3NzLXN0cmluZy10cnVuY2F0aW9uLXdpdGgtZWxsaXBzaXMvKS5cbi8vIEZpcmVmb3ggaW1wbGVtZW50YXRpb24gYnkgW1Jpa2tlcnQgS29wcGVzXShodHRwOi8vd3d3LnJpa2tlcnRrb3BwZXMuY29tL3Rob3VnaHRzLzIwMDgvNi8pLlxuQG1peGluIGVsbGlwc2lzKCRuby13cmFwOiB0cnVlKSB7XG4gIEBpZiAkbm8td3JhcCB7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRleHQtb3ZlcmZsb3csIGVsbGlwc2lzLFxuICAgIG5vdCgtbW96KSxcbiAgICBub3QoLXdlYmtpdCksXG4gICAgLW8sXG4gICAgLW1zLFxuICAgIG5vdCgta2h0bWwpLFxuICAgIG9mZmljaWFsXG4gICk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgYW5kICR1c2UtbW96aWxsYS1lbGxpcHNpcy1iaW5kaW5nIHtcbiAgICAtbW96LWJpbmRpbmc6IHN0eWxlc2hlZXQtdXJsKHVucXVvdGUoXCJ4bWwvZWxsaXBzaXMueG1sI2VsbGlwc2lzXCIpKTtcbiAgfVxufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIi8vIFdoZW4gcmVtZW1iZXJpbmcgd2hldGhlciBvciBub3QgdGhlcmUncyBhIGh5cGhlbiBpbiB3aGl0ZS1zcGFjZSBpcyB0b28gaGFyZFxuQG1peGluIG5vd3JhcCB7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cbiIsIi8vIEluZGljYXRlcyB0aGUgZGlyZWN0aW9uIHlvdSBwcmVmZXIgdG8gbW92ZSB5b3VyIHRleHRcbi8vIHdoZW4gaGlkaW5nIGl0LlxuLy9cbi8vIGBsZWZ0YCBpcyBtb3JlIHJvYnVzdCwgZXNwZWNpYWxseSBpbiBvbGRlciBicm93c2Vycy5cbi8vIGByaWdodGAgc2VlbXMgaGF2ZSBiZXR0ZXIgcnVudGltZSBwZXJmb3JtYW5jZS5cbiRoaWRlLXRleHQtZGlyZWN0aW9uOiBsZWZ0ICFkZWZhdWx0O1xuXG4vLyBIaWRlcyBodG1sIHRleHQgYW5kIHJlcGxhY2VzIGl0IHdpdGggYW4gaW1hZ2UuXG4vLyBJZiB5b3UgdXNlIHRoaXMgb24gYW4gaW5saW5lIGVsZW1lbnQsIHlvdSB3aWxsIG5lZWQgdG8gY2hhbmdlIHRoZSBkaXNwbGF5IHRvIGJsb2NrIG9yIGlubGluZS1ibG9jay5cbi8vIEFsc28sIGlmIHRoZSBzaXplIG9mIHRoZSBpbWFnZSBkaWZmZXJzIHNpZ25pZmljYW50bHkgZnJvbSB0aGUgZm9udCBzaXplLCB5b3UnbGwgbmVlZCB0byBzZXQgdGhlIHdpZHRoIGFuZC9vciBoZWlnaHQuXG4vL1xuLy8gUGFyYW1ldGVyczpcbi8vXG4vLyAqIGBpbWdgIC0tIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gdGhlIHByb2plY3QgaW1hZ2UgZGlyZWN0b3J5IHRvIHRoZSBpbWFnZSwgb3IgYSB1cmwgbGl0ZXJhbC5cbi8vICogYHhgIC0tIHRoZSB4IHBvc2l0aW9uIG9mIHRoZSBiYWNrZ3JvdW5kIGltYWdlLlxuLy8gKiBgeWAgLS0gdGhlIHkgcG9zaXRpb24gb2YgdGhlIGJhY2tncm91bmQgaW1hZ2UuXG5AbWl4aW4gcmVwbGFjZS10ZXh0KCRpbWcsICR4OiA1MCUsICR5OiA1MCUpIHtcbiAgQGluY2x1ZGUgaGlkZS10ZXh0O1xuICBiYWNrZ3JvdW5kOiB7XG4gICAgQGlmIGlzLXVybCgkaW1nKSB7XG4gICAgICBpbWFnZTogdXJsKCRpbWcpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgaW1hZ2U6IGltYWdlLXVybCgkaW1nKTtcbiAgICB9XG4gICAgcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgcG9zaXRpb246ICR4ICR5O1xuICB9O1xufVxuXG4vLyBMaWtlIHRoZSBgcmVwbGFjZS10ZXh0YCBtaXhpbiwgYnV0IGFsc28gc2V0cyB0aGUgd2lkdGhcbi8vIGFuZCBoZWlnaHQgb2YgdGhlIGVsZW1lbnQgYWNjb3JkaW5nIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBpbWFnZS5cbi8vXG4vLyBJZiB5b3Ugc2V0IGAkaW5saW5lYCB0byB0cnVlLCB0aGVuIGFuIGlubGluZSBpbWFnZSAoZGF0YSB1cmkpIHdpbGwgYmUgdXNlZC5cbkBtaXhpbiByZXBsYWNlLXRleHQtd2l0aC1kaW1lbnNpb25zKCRpbWcsICR4OiA1MCUsICR5OiA1MCUsICRpbmxpbmU6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIHJlcGxhY2UtdGV4dChpZigkaW5saW5lLCBpbmxpbmUtaW1hZ2UoJGltZyksICRpbWcpLCAkeCwgJHkpO1xuICB3aWR0aDogaW1hZ2Utd2lkdGgoJGltZyk7XG4gIGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRpbWcpO1xufVxuXG4vLyBIaWRlcyB0ZXh0IGluIGFuIGVsZW1lbnQgc28geW91IGNhbiBzZWUgdGhlIGJhY2tncm91bmQuXG4vL1xuLy8gVGhlIGRpcmVjdGlvbiBpbmRpY2F0ZXMgaG93IHRoZSB0ZXh0IHNob3VsZCBiZSBtb3ZlZCBvdXQgb2Ygdmlldy5cbi8vXG4vLyBTZWUgYCRoaWRlLXRleHQtZGlyZWN0aW9uYCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgdG8gc2V0IHRoaXMgZ2xvYmFsbHlcbi8vIGZvciB5b3VyIGFwcGxpY2F0aW9uLlxuQG1peGluIGhpZGUtdGV4dCgkZGlyZWN0aW9uOiAkaGlkZS10ZXh0LWRpcmVjdGlvbikge1xuICBAaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAkYXBwcm94aW1hdGUtZW0tdmFsdWU6IDEycHg7XG4gICAgJHdpZGVyLXRoYW4tYW55LXNjcmVlbjogLTk5OTk7XG4gICAgdGV4dC1pbmRlbnQ6ICR3aWRlci10aGFuLWFueS1zY3JlZW4gKiAkYXBwcm94aW1hdGUtZW0tdmFsdWU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB9IEBlbHNlIHtcbiAgICAvLyBzbGlnaHRseSB3aWRlciB0aGFuIHRoZSBib3ggcHJldmVudHMgaXNzdWVzIHdpdGggaW5saW5lLWJsb2NrIGVsZW1lbnRzXG4gICAgdGV4dC1pbmRlbnQ6IDExMCU7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG59XG5cbi8vIEhpZGVzIHRleHQgaW4gYW4gZWxlbWVudCBieSBzcXVpc2hpbmcgdGhlIHRleHQgaW50byBvYmxpdmlvbi5cbi8vIFVzZSB0aGlzIGlmIHlvdSBuZWVkIHRvIGhpZGUgdGV4dCBjb250YWluZWQgaW4gYW4gaW5saW5lIGVsZW1lbnRcbi8vIGJ1dCBzdGlsbCBoYXZlIGl0IHJlYWQgYnkgYSBzY3JlZW4gcmVhZGVyLlxuQG1peGluIHNxdWlzaC10ZXh0IHtcbiAgZm9udDogMC8wIHNlcmlmO1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xufVxuIiwiLy8gUHJldmVudCBsb25nIHVybHMgYW5kIHRleHQgZnJvbSBicmVha2luZyBsYXlvdXRzXG4vLyBbb3JpZ2luYWxseSBmcm9tIHBlcmlzaGFibGVwcmVzcy5jb21dKGh0dHA6Ly9wZXJpc2hhYmxlcHJlc3MuY29tL3ByZXNzLzIwMTAvMDYvMDEvd3JhcHBpbmctY29udGVudC8pXG5AbWl4aW4gZm9yY2Utd3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBwcmU7ICAgICAgICAgICAvLyBDU1MgMi4wXG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgICAgICAvLyBDU1MgMi4xXG4gIHdoaXRlLXNwYWNlOiBwcmUtbGluZTsgICAgICAvLyBDU1MgMy4wXG4gIHdoaXRlLXNwYWNlOiAtcHJlLXdyYXA7ICAgICAvLyBPcGVyYSA0LTZcbiAgd2hpdGUtc3BhY2U6IC1vLXByZS13cmFwOyAgIC8vIE9wZXJhIDdcbiAgd2hpdGUtc3BhY2U6IC1tb3otcHJlLXdyYXA7IC8vIE1vemlsbGFcbiAgd2hpdGUtc3BhY2U6IC1ocC1wcmUtd3JhcDsgIC8vIEhQIFByaW50ZXJzXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDsgICAgICAvLyBJRSA1K1xufVxuIiwiQGltcG9ydCBcInR5cG9ncmFwaHkvbGlua3NcIjtcbkBpbXBvcnQgXCJ0eXBvZ3JhcGh5L2xpc3RzXCI7XG5AaW1wb3J0IFwidHlwb2dyYXBoeS90ZXh0XCI7XG5AaW1wb3J0IFwidHlwb2dyYXBoeS92ZXJ0aWNhbF9yaHl0aG1cIjtcbiIsIkBpbXBvcnQgXCJsaW5rcy9ob3Zlci1saW5rXCI7XG5AaW1wb3J0IFwibGlua3MvbGluay1jb2xvcnNcIjtcbkBpbXBvcnQgXCJsaW5rcy91bnN0eWxlZC1saW5rXCI7XG4iLCIvLyBhIGxpbmsgdGhhdCBvbmx5IGhhcyBhbiB1bmRlcmxpbmUgd2hlbiB5b3UgaG92ZXIgb3ZlciBpdFxuQG1peGluIGhvdmVyLWxpbmsge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICY6aG92ZXIge1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyB9IH1cbiIsIi8vIFNldCBhbGwgdGhlIGNvbG9ycyBmb3IgYSBsaW5rIHdpdGggb25lIG1peGluIGNhbGwuXG4vLyBPcmRlciBvZiBhcmd1bWVudHMgaXM6XG4vL1xuLy8gMS4gbm9ybWFsXG4vLyAyLiBob3ZlclxuLy8gMy4gYWN0aXZlXG4vLyA0LiB2aXNpdGVkXG4vLyA1LiBmb2N1c1xuLy9cbi8vIFRob3NlIHN0YXRlcyBub3Qgc3BlY2lmaWVkIHdpbGwgaW5oZXJpdC5cbi8vIE1peGluIHRvIGFuIGFuY2hvciBsaW5rIGxpa2Ugc286XG4vLyAgICAgYVxuLy8gICAgICAgK2xpbmstY29sb3JzKCMwMGMsICMwY2MsICNjMGMsICNjY2MsICNjYzApXG5cbkBtaXhpbiBsaW5rLWNvbG9ycygkbm9ybWFsLCAkaG92ZXI6IGZhbHNlLCAkYWN0aXZlOiBmYWxzZSwgJHZpc2l0ZWQ6IGZhbHNlLCAkZm9jdXM6IGZhbHNlKSB7XG4gIGNvbG9yOiAkbm9ybWFsO1xuICBAaWYgJHZpc2l0ZWQge1xuICAgICY6dmlzaXRlZCB7XG4gICAgICBjb2xvcjogJHZpc2l0ZWQ7IH0gfVxuICBAaWYgJGZvY3VzIHtcbiAgICAmOmZvY3VzIHtcbiAgICAgIGNvbG9yOiAkZm9jdXM7IH0gfVxuICBAaWYgJGhvdmVyIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiAkaG92ZXI7IH0gfVxuICBAaWYgJGFjdGl2ZSB7XG4gICAgJjphY3RpdmUge1xuICAgICAgY29sb3I6ICRhY3RpdmU7IH0gfSB9XG4iLCIvLyBBIGxpbmsgdGhhdCBsb29rcyBhbmQgYWN0cyBsaWtlIHRoZSB0ZXh0IGl0IGlzIGNvbnRhaW5lZCB3aXRoaW5cbkBtaXhpbiB1bnN0eWxlZC1saW5rIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtZGVjb3JhdGlvbjogaW5oZXJpdDtcbiAgY3Vyc29yOiBpbmhlcml0O1xuICAmOmFjdGl2ZSwgJjpmb2N1cyB7XG4gICAgb3V0bGluZTogbm9uZTsgfSB9XG4iLCJAaW1wb3J0IFwibGlzdHMvaG9yaXpvbnRhbC1saXN0XCI7XG5AaW1wb3J0IFwibGlzdHMvaW5saW5lLWxpc3RcIjtcbkBpbXBvcnQgXCJsaXN0cy9pbmxpbmUtYmxvY2stbGlzdFwiO1xuQGltcG9ydCBcImxpc3RzL2J1bGxldHNcIjtcbiIsIi8vIEhvcml6b250YWwgbGlzdCBsYXlvdXQgbW9kdWxlLlxuLy9cbi8vIEVhc3kgbW9kZSB1c2luZyBzaW1wbGUgZGVzY2VuZGFudCBsaSBzZWxlY3RvcnM6XG4vL1xuLy8gICB1bC5uYXZcbi8vICAgICAraG9yaXpvbnRhbC1saXN0XG4vL1xuLy8gQWR2YW5jZWQgbW9kZTpcbi8vIElmIHlvdSBuZWVkIHRvIHRhcmdldCB0aGUgbGlzdCBpdGVtcyB1c2luZyBhIGRpZmZlcmVudCBzZWxlY3RvciB0aGVuIHVzZVxuLy8gK2hvcml6b250YWwtbGlzdC1jb250YWluZXIgb24geW91ciB1bC9vbCBhbmQgK2hvcml6b250YWwtbGlzdC1pdGVtIG9uIHlvdXIgbGkuXG4vLyBUaGlzIG1heSBoZWxwIHdoZW4gd29ya2luZyBvbiBsYXlvdXRzIGludm9sdmluZyBuZXN0ZWQgbGlzdHMuIEZvciBleGFtcGxlOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdC1jb250YWluZXJcbi8vICAgICA+IGxpXG4vLyAgICAgICAraG9yaXpvbnRhbC1saXN0LWl0ZW1cblxuQGltcG9ydCBcImJ1bGxldHNcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9jbGVhcmZpeFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL3Jlc2V0XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvZmxvYXRcIjtcblxuLy8gQ2FuIGJlIG1peGVkIGludG8gYW55IHNlbGVjdG9yIHRoYXQgdGFyZ2V0IGEgdWwgb3Igb2wgdGhhdCBpcyBtZWFudFxuLy8gdG8gaGF2ZSBhIGhvcml6b250YWwgbGF5b3V0LiBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuQG1peGluIGhvcml6b250YWwtbGlzdC1jb250YWluZXIge1xuICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gIEBpbmNsdWRlIGNsZWFyZml4OyB9XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBsaSBzZWxlY3RvciB0aGF0IGlzIG1lYW50IHRvIHBhcnRpY2lwYXRlIGluIGEgaG9yaXpvbnRhbCBsYXlvdXQuXG4vLyBVc2VkIHRvIGltcGxlbWVudCAraG9yaXpvbnRhbC1saXN0LlxuLy9cbi8vIDpsYXN0LWNoaWxkIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWRcbi8vIHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QyOSBmb3IgdGhlIHN1cHBvcnQgbWF0cml4XG4vL1xuLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG4vL1xuLy8gU2V0dGluZyBgJHBhZGRpbmdgIHRvIGBmYWxzZWAgZGlzYWJsZXMgdGhlIHBhZGRpbmcgYmV0d2VlbiBsaXN0IGVsZW1lbnRzXG5AbWl4aW4gaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBuby1idWxsZXQ7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIEBpbmNsdWRlIGZsb2F0KCRkaXJlY3Rpb24pO1xuICBAaWYgJHBhZGRpbmcge1xuICAgIHBhZGRpbmc6IHtcbiAgICAgIGxlZnQ6ICRwYWRkaW5nO1xuICAgICAgcmlnaHQ6ICRwYWRkaW5nO1xuICAgIH1cbiAgICAmOmZpcnN0LWNoaWxkLCAmLmZpcnN0IHsgcGFkZGluZy0jeyRkaXJlY3Rpb259OiAwOyB9XG4gICAgJjpsYXN0LWNoaWxkIHsgcGFkZGluZy0je29wcG9zaXRlLXBvc2l0aW9uKCRkaXJlY3Rpb24pfTogMDsgfVxuICAgICYubGFzdCB7IHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH1cbiAgfVxufVxuXG4vLyBBIGxpc3Qob2wsdWwpIHRoYXQgaXMgbGF5ZWQgb3V0IHN1Y2ggdGhhdCB0aGUgZWxlbWVudHMgYXJlIGZsb2F0ZWQgbGVmdCBhbmQgd29uJ3Qgd3JhcC5cbi8vIFRoaXMgaXMgbm90IGFuIGlubGluZSBsaXN0LlxuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdCgkcGFkZGluZzogNHB4LCAkZGlyZWN0aW9uOiBsZWZ0KSB7XG4gIEBpbmNsdWRlIGhvcml6b250YWwtbGlzdC1jb250YWluZXI7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtaXRlbSgkcGFkZGluZywgJGRpcmVjdGlvbik7IH0gfVxuIiwiLy8gVHVybiBvZmYgdGhlIGJ1bGxldCBmb3IgYW4gZWxlbWVudCBvZiBhIGxpc3RcbkBtaXhpbiBuby1idWxsZXQge1xuICBsaXN0LXN0eWxlLWltYWdlIDogbm9uZTtcbiAgbGlzdC1zdHlsZS10eXBlICA6IG5vbmU7XG4gIG1hcmdpbi1sZWZ0ICAgICAgOiAwO1xufVxuXG4vLyB0dXJucyBvZmYgdGhlIGJ1bGxldHMgZm9yIGFuIGVudGlyZSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0cyB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIGxpIHsgQGluY2x1ZGUgbm8tYnVsbGV0OyB9XG59XG5cbi8vIE1ha2UgYSBsaXN0KHVsL29sKSBoYXZlIGFuIGltYWdlIGJ1bGxldC5cbi8vXG4vLyBUaGUgbWl4aW4gc2hvdWxkIGJlIHVzZWQgbGlrZSB0aGlzIGZvciBhbiBpY29uIHRoYXQgaXMgNXg3OlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIsIDVweCwgN3B4KVxuLy9cbi8vIEFkZGl0aW9uYWxseSwgaWYgdGhlIGltYWdlIGRpbWVuc2lvbnMgYXJlIG5vdCBwcm92aWRlZCxcbi8vIFRoZSBpbWFnZSBkaW1lbnNpb25zIHdpbGwgYmUgZXh0cmFjdGVkIGZyb20gdGhlIGltYWdlIGl0c2VsZi5cbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiKVxuLy9cbkBtaXhpbiBwcmV0dHktYnVsbGV0cygkYnVsbGV0LWljb24sICR3aWR0aDogaW1hZ2Utd2lkdGgoJGJ1bGxldC1pY29uKSwgJGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRidWxsZXQtaWNvbiksICRsaW5lLWhlaWdodDogMThweCwgJHBhZGRpbmc6IDE0cHgpIHtcbiAgbWFyZ2luLWxlZnQ6IDA7XG4gIGxpIHtcbiAgICBwYWRkaW5nLWxlZnQ6ICRwYWRkaW5nO1xuICAgIGJhY2tncm91bmQ6IGltYWdlLXVybCgkYnVsbGV0LWljb24pIG5vLXJlcGVhdCAoJHBhZGRpbmcgLSAkd2lkdGgpIC8gMiAoJGxpbmUtaGVpZ2h0IC0gJGhlaWdodCkgLyAyO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgfVxufVxuIiwiLy8gQGRvYyBvZmZcbi8vIEV4dGVuZHMgdGhlIGJvdHRvbSBvZiB0aGUgZWxlbWVudCB0byBlbmNsb3NlIGFueSBmbG9hdHMgaXQgY29udGFpbnMuXG4vLyBAZG9jIG9uXG5cbkBpbXBvcnQgXCJoYWNrc1wiO1xuXG4vLyBUaGlzIGJhc2ljIG1ldGhvZCBpcyBwcmVmZXJyZWQgZm9yIHRoZSB1c3VhbCBjYXNlLCB3aGVuIHBvc2l0aW9uZWRcbi8vIGNvbnRlbnQgd2lsbCBub3Qgc2hvdyBvdXRzaWRlIHRoZSBib3VuZHMgb2YgdGhlIGNvbnRhaW5lci5cbi8vXG4vLyBSZWNvbW1lbmRhdGlvbnMgaW5jbHVkZSB1c2luZyB0aGlzIGluIGNvbmp1bmN0aW9uIHdpdGggYSB3aWR0aC5cbi8vIENyZWRpdDogW3F1aXJrc21vZGUub3JnXShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2ZXMvMjAwNS8wMy9jbGVhcmluZ19mbG9hdHMuaHRtbClcbkBtaXhpbiBjbGVhcmZpeCB7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG5cbi8vIFRoaXMgb2xkZXIgbWV0aG9kIGZyb20gUG9zaXRpb24gSXMgRXZlcnl0aGluZyBjYWxsZWRcbi8vIFtFYXN5IENsZWFyaW5nXShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9lYXN5Y2xlYXJpbmcuaHRtbClcbi8vIGhhcyB0aGUgYWR2YW50YWdlIG9mIGFsbG93aW5nIHBvc2l0aW9uZWQgZWxlbWVudHMgdG8gaGFuZ1xuLy8gb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIgYXQgdGhlIGV4cGVuc2Ugb2YgbW9yZSB0cmlja3kgQ1NTLlxuQG1peGluIGxlZ2FjeS1waWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50ICAgIDogXCJcXDAwMjBcIjtcbiAgICBkaXNwbGF5ICAgIDogYmxvY2s7XG4gICAgaGVpZ2h0ICAgICA6IDA7XG4gICAgY2xlYXIgICAgICA6IGJvdGg7XG4gICAgb3ZlcmZsb3cgICA6IGhpZGRlbjtcbiAgICB2aXNpYmlsaXR5IDogaGlkZGVuO1xuICB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG5cbi8vIFRoaXMgaXMgYW4gdXBkYXRlZCB2ZXJzaW9uIG9mIHRoZSBQSUUgY2xlYXJmaXggbWV0aG9kIHRoYXQgcmVkdWNlcyB0aGUgYW1vdW50IG9mIENTUyBvdXRwdXQuXG4vLyBJZiB5b3UgbmVlZCB0byBzdXBwb3J0IEZpcmVmb3ggYmVmb3JlIDMuNSB5b3UgbmVlZCB0byB1c2UgYGxlZ2FjeS1waWUtY2xlYXJmaXhgIGluc3RlYWQuXG4vL1xuLy8gQWRhcHRlZCBmcm9tOiBbQSBuZXcgbWljcm8gY2xlYXJmaXggaGFja10oaHR0cDovL25pY29sYXNnYWxsYWdoZXIuY29tL21pY3JvLWNsZWFyZml4LWhhY2svKVxuQG1peGluIHBpZS1jbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cbiAgQGluY2x1ZGUgaGFzLWxheW91dDtcbn1cbiIsIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9IEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTtcbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYgeyBkaXNwbGF5OiBibG9jazsgfVxuICB9XG59XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTtcbiAgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCIvLyBUaGlzIG1vZHVsZSBoYXMgbW92ZWQuXG5AaW1wb3J0IFwiLi4vLi4vcmVzZXQvdXRpbGl0aWVzXCI7XG4iLCIvLyBCYXNlZCBvbiBbRXJpYyBNZXllcidzIHJlc2V0IDIuMF0oaHR0cDovL21leWVyd2ViLmNvbS9lcmljL3Rvb2xzL2Nzcy9yZXNldC9pbmRleC5odG1sKVxuLy8gR2xvYmFsIHJlc2V0IHJ1bGVzLlxuLy8gRm9yIG1vcmUgc3BlY2lmaWMgcmVzZXRzLCB1c2UgdGhlIHJlc2V0IG1peGlucyBwcm92aWRlZCBiZWxvd1xuQG1peGluIGdsb2JhbC1yZXNldCB7XG4gIGh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSxcbiAgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLFxuICBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsXG4gIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCxcbiAgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhcixcbiAgYiwgdSwgaSwgY2VudGVyLFxuICBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLFxuICBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCxcbiAgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsXG4gIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLCBcbiAgZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLCBcbiAgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksXG4gIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICAgIEBpbmNsdWRlIHJlc2V0LWZvbnQ7IH1cbiAgLy8gVW5saWtlIEVyaWMncyBvcmlnaW5hbCByZXNldCwgd2UgcmVzZXQgdGhlIGh0bWwgZWxlbWVudCB0byBiZSBjb21wYXRpYmxlXG4gIC8vIHdpdGggdGhlIHZlcnRpY2FsIHJoeXRobSBtaXhpbnMuXG4gIGh0bWwge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJvZHk7IH1cbiAgb2wsIHVsIHtcbiAgICBAaW5jbHVkZSByZXNldC1saXN0LXN0eWxlOyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9XG4gIEBpbmNsdWRlIHJlc2V0LWh0bWw1OyB9XG5cbi8vIFJlc2V0IGFsbCBlbGVtZW50cyB3aXRoaW4gc29tZSBzZWxlY3RvciBzY29wZS4gVG8gcmVzZXQgdGhlIHNlbGVjdG9yIGl0c2VsZixcbi8vIG1peGluIHRoZSBhcHByb3ByaWF0ZSByZXNldCBtaXhpbiBmb3IgdGhhdCBlbGVtZW50IHR5cGUgYXMgd2VsbC4gVGhpcyBjb3VsZCBiZVxuLy8gdXNlZnVsIGlmIHlvdSB3YW50IHRvIHN0eWxlIGEgcGFydCBvZiB5b3VyIHBhZ2UgaW4gYSBkcmFtYXRpY2FsbHkgZGlmZmVyZW50IHdheS5cbkBtaXhpbiBuZXN0ZWQtcmVzZXQge1xuICBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCwgXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIHRhYmxlIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZTsgfVxuICBjYXB0aW9uLCB0aCwgdGQge1xuICAgIEBpbmNsdWRlIHJlc2V0LXRhYmxlLWNlbGw7IH1cbiAgcSwgYmxvY2txdW90ZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtcXVvdGF0aW9uOyB9XG4gIGEgaW1nIHtcbiAgICBAaW5jbHVkZSByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyOyB9IH1cblxuLy8gUmVzZXQgdGhlIGJveCBtb2RlbCBtZWFzdXJlbWVudHMuXG5AbWl4aW4gcmVzZXQtYm94LW1vZGVsIHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7IH1cblxuLy8gUmVzZXQgdGhlIGZvbnQgYW5kIHZlcnRpY2FsIGFsaWdubWVudC5cbkBtaXhpbiByZXNldC1mb250IHtcbiAgZm9udDogaW5oZXJpdDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuLy8gUmVzZXRzIHRoZSBvdXRsaW5lIHdoZW4gZm9jdXMuXG4vLyBGb3IgYWNjZXNzaWJpbGl0eSB5b3UgbmVlZCB0byBhcHBseSBzb21lIHN0eWxpbmcgaW4gaXRzIHBsYWNlLlxuQG1peGluIHJlc2V0LWZvY3VzIHtcbiAgb3V0bGluZTogMDsgfVxuXG4vLyBSZXNldCBhIGJvZHkgZWxlbWVudC5cbkBtaXhpbiByZXNldC1ib2R5IHtcbiAgbGluZS1oZWlnaHQ6IDE7IH1cblxuLy8gUmVzZXQgdGhlIGxpc3Qgc3R5bGUgb2YgYW4gZWxlbWVudC5cbkBtaXhpbiByZXNldC1saXN0LXN0eWxlIHtcbiAgbGlzdC1zdHlsZTogbm9uZTsgfVxuXG4vLyBSZXNldCBhIHRhYmxlXG5AbWl4aW4gcmVzZXQtdGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG4vLyBSZXNldCBhIHRhYmxlIGNlbGwgKGB0aGAsIGB0ZGApXG5AbWl4aW4gcmVzZXQtdGFibGUtY2VsbCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IH1cblxuLy8gUmVzZXQgYSBxdW90YXRpb24gKGBxYCwgYGJsb2NrcXVvdGVgKVxuQG1peGluIHJlc2V0LXF1b3RhdGlvbiB7XG4gIHF1b3Rlczogbm9uZTtcbiAgJjpiZWZvcmUsICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7IFxuICAgIGNvbnRlbnQ6IG5vbmU7IH0gfVxuXG4vLyBSZXNldHMgdGhlIGJvcmRlci5cbkBtaXhpbiByZXNldC1pbWFnZS1hbmNob3ItYm9yZGVyIHtcbiAgYm9yZGVyOiBub25lOyB9XG5cbi8vIFVucmVjb2duaXplZCBlbGVtZW50cyBhcmUgZGlzcGxheWVkIGlubGluZS5cbi8vIFRoaXMgcmVzZXQgcHJvdmlkZXMgYSBiYXNpYyByZXNldCBmb3IgYmxvY2sgaHRtbDUgZWxlbWVudHNcbi8vIHNvIHRoZXkgYXJlIHJlbmRlcmVkIGNvcnJlY3RseSBpbiBicm93c2VycyB0aGF0IGRvbid0IHJlY29nbml6ZSB0aGVtXG4vLyBhbmQgcmVzZXQgaW4gYnJvd3NlcnMgdGhhdCBoYXZlIGRlZmF1bHQgc3R5bGVzIGZvciB0aGVtLlxuQG1peGluIHJlc2V0LWh0bWw1IHtcbiAgI3tlbGVtZW50cy1vZi10eXBlKGh0bWw1LWJsb2NrKX0ge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBkaXNwbGF5IG9mIGlubGluZSBhbmQgYmxvY2sgZWxlbWVudHMgdG8gdGhlaXIgZGVmYXVsdCBkaXNwbGF5XG4vLyBhY2NvcmRpbmcgdG8gdGhlaXIgdGFnIHR5cGUuIEVsZW1lbnRzIHRoYXQgaGF2ZSBhIGRlZmF1bHQgZGlzcGxheSB0aGF0IHZhcmllcyBhY3Jvc3Ncbi8vIHZlcnNpb25zIG9mIGh0bWwgb3IgYnJvd3NlciBhcmUgbm90IGhhbmRsZWQgaGVyZSwgYnV0IHRoaXMgY292ZXJzIHRoZSA5MCUgdXNlIGNhc2UuXG4vLyBVc2FnZSBFeGFtcGxlOlxuLy9cbi8vICAgICAvLyBUdXJuIG9mZiB0aGUgZGlzcGxheSBmb3IgYm90aCBvZiB0aGVzZSBjbGFzc2VzXG4vLyAgICAgLnVucmVnaXN0ZXJlZC1vbmx5LCAucmVnaXN0ZXJlZC1vbmx5XG4vLyAgICAgICBkaXNwbGF5OiBub25lXG4vLyAgICAgLy8gTm93IHR1cm4gb25seSBvbmUgb2YgdGhlbSBiYWNrIG9uIGRlcGVuZGluZyBvbiBzb21lIG90aGVyIGNvbnRleHQuXG4vLyAgICAgYm9keS5yZWdpc3RlcmVkXG4vLyAgICAgICArcmVzZXQtZGlzcGxheShcIi5yZWdpc3RlcmVkLW9ubHlcIilcbi8vICAgICBib2R5LnVucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIudW5yZWdpc3RlcmVkLW9ubHlcIilcbkBtaXhpbiByZXNldC1kaXNwbGF5KCRzZWxlY3RvcjogXCJcIiwgJGltcG9ydGFudDogZmFsc2UpIHtcbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImlubGluZVwiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyB9XG4gICAgQGVsc2Uge1xuICAgICAgZGlzcGxheTogaW5saW5lOyB9IH1cbiAgI3thcHBlbmQtc2VsZWN0b3IoZWxlbWVudHMtb2YtdHlwZShcImJsb2NrXCIpLCAkc2VsZWN0b3IpfSB7XG4gICAgQGlmICRpbXBvcnRhbnQge1xuICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9IH0gfVxuIiwiLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6bGVmdCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtbGVmdCB7XG4gIEBpbmNsdWRlIGZsb2F0KGxlZnQpOyB9XG5cbi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OnJpZ2h0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1yaWdodCB7XG4gIEBpbmNsdWRlIGZsb2F0KHJpZ2h0KTsgfVxuXG4vLyBEaXJlY3Rpb24gaW5kZXBlbmRlbnQgZmxvYXQgbWl4aW4gdGhhdCBmaXhlcyB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdCgkc2lkZTogbGVmdCkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiB1bnF1b3RlKCRzaWRlKTsgfVxuXG4vLyBSZXNldHMgZmxvYXRlZCBlbGVtZW50cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHQgb2YgYGZsb2F0OiBub25lYCBhbmQgZGVmYXVsdHNcbi8vIHRvIGBkaXNwbGF5OiBibG9ja2AgdW5sZXNzIHlvdSBwYXNzIGBpbmxpbmVgIGFzIGFuIGFyZ3VtZW50XG4vL1xuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgYm9keS5ob21lcGFnZVxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArZmxvYXQtbGVmdFxuLy8gICAgIGJvZHkuc2lnbnVwXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtyZXNldC1mbG9hdFxuQG1peGluIHJlc2V0LWZsb2F0KCRkaXNwbGF5OiBibG9jaykge1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogJGRpc3BsYXk7IH0iLCIvLyBtYWtlcyBhIGxpc3QgaW5saW5lLlxuXG5AbWl4aW4gaW5saW5lLWxpc3Qge1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gICYsICYgbGkge1xuICAgIG1hcmdpbjogMHB4O1xuICAgIHBhZGRpbmc6IDBweDtcbiAgICBkaXNwbGF5OiBpbmxpbmU7XG4gIH1cbn1cblxuLy8gbWFrZXMgYW4gaW5saW5lIGxpc3QgZGVsaW1pdGVkIHdpdGggdGhlIHBhc3NlZCBzdHJpbmcuXG4vLyBEZWZhdWx0cyB0byBtYWtpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdC5cbi8vXG4vLyBQbGVhc2UgbWFrZSBub3RlIG9mIHRoZSBicm93c2VyIHN1cHBvcnQgaXNzdWVzIGJlZm9yZSB1c2luZyB0aGlzIG1peGluOlxuLy9cbi8vIHVzZSBvZiBgY29udGVudGAgYW5kIGA6YWZ0ZXJgIGlzIG5vdCBmdWxseSBzdXBwb3J0ZWQgaW4gYWxsIGJyb3dzZXJzLlxuLy8gU2VlIHF1aXJrc21vZGUgZm9yIHRoZSBbc3VwcG9ydCBtYXRyaXhdKGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzL2NvbnRlbnRzLmh0bWwjdDE1KVxuLy9cbi8vIGA6bGFzdC1jaGlsZGAgaXMgbm90IGZ1bGx5IHN1cHBvcnRlZC5cbi8vIHNlZSBxdWlya3Ntb2RlIGZvciB0aGUgW3N1cHBvcnQgbWF0cml4XShodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Nzcy9jb250ZW50cy5odG1sI3QyOSkuXG4vL1xuLy8gSUU4IGlnbm9yZXMgcnVsZXMgdGhhdCBhcmUgaW5jbHVkZWQgb24gdGhlIHNhbWUgbGluZSBhcyA6bGFzdC1jaGlsZFxuLy8gc2VlIGh0dHA6Ly93d3cucmljaGFyZHNjYXJyb3R0LmNvLnVrL3Bvc3RzL3ZpZXcvaWU4LWxhc3QtY2hpbGQtYnVnIGZvciBkZXRhaWxzXG5cbkBtaXhpbiBkZWxpbWl0ZWQtbGlzdCgkc2VwYXJhdG9yOiBcIiwgXCIpIHtcbiAgQGluY2x1ZGUgaW5saW5lLWxpc3Q7XG4gIGxpIHtcbiAgICAmOmFmdGVyIHsgY29udGVudDogJHNlcGFyYXRvcjsgfVxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAmOmFmdGVyIHsgY29udGVudDogXCJcIjsgfVxuICAgIH1cbiAgICAmLmxhc3Qge1xuICAgICAgJjphZnRlciB7IGNvbnRlbnQ6IFwiXCI7IH1cbiAgICB9XG4gIH1cbn1cblxuLy8gU2VlIFtkZWxpbWl0ZWQtbGlzdF0oI21peGluLWRlbGltaXRlZC1saXN0KVxuLy8gQGRlcHJlY2F0ZWRcbkBtaXhpbiBjb21tYS1kZWxpbWl0ZWQtbGlzdCB7XG4gIEB3YXJuIFwiY29tbWEtZGVsaW1pdGVkLWxpc3QgaXMgZGVwcmVjYXRlZC4gUGxlYXNlIHVzZSBkZWxpbWl0ZWQtbGlzdCBpbnN0ZWFkLlwiO1xuICBAaW5jbHVkZSBkZWxpbWl0ZWQtbGlzdDtcbn1cbiIsIi8vIElubGluZS1CbG9jayBsaXN0IGxheW91dCBtb2R1bGUuXG4vL1xuLy8gRWFzeSBtb2RlIHVzaW5nIHNpbXBsZSBkZXNjZW5kYW50IGxpIHNlbGVjdG9yczpcbi8vXG4vLyAgICAgdWwubmF2IHtcbi8vICAgICAgIEBpbXBvcnQgaW5saW5lLWJsb2NrLWxpc3Q7XG4vLyAgICAgfVxuLy9cbi8vIEFkdmFuY2VkIG1vZGU6XG4vLyBJZiB5b3UgbmVlZCB0byB0YXJnZXQgdGhlIGxpc3QgaXRlbXMgdXNpbmcgYSBkaWZmZXJlbnQgc2VsZWN0b3IgdGhlbiB1c2Vcbi8vIGBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXJgIG9uIHlvdXIgdWwvb2wgYW5kXG4vLyBgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtaXRlbWAgb24geW91ciBsaS4gVGhpcyBtYXkgaGVscCB3aGVuIHdvcmtpbmdcbi8vIG9uIGxheW91dHMgaW52b2x2aW5nIG5lc3RlZCBsaXN0cy4gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICAgIHVsLm5hdiB7XG4vLyAgICAgICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXI7XG4vLyAgICAgICA+IGxpIHtcbi8vICAgICAgICAgQGluY2x1ZGUgaW5saW5lLWJsb2NrLWxpc3QtaXRlbTtcbi8vICAgICAgIH1cbi8vICAgICB9XG5cbkBpbXBvcnQgXCJidWxsZXRzXCI7XG5AaW1wb3J0IFwiaG9yaXpvbnRhbC1saXN0XCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvZmxvYXRcIjtcbkBpbXBvcnQgXCIuLi8uLi9jc3MzL2lubGluZS1ibG9ja1wiO1xuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgc2VsZWN0b3IgdGhhdCB0YXJnZXQgYSB1bCBvciBvbCB0aGF0IGlzIG1lYW50XG4vLyB0byBoYXZlIGFuIGlubGluZS1ibG9jayBsYXlvdXQuIFVzZWQgdG8gaW1wbGVtZW50IGBpbmxpbmUtYmxvY2stbGlzdGAuXG5AbWl4aW4gaW5saW5lLWJsb2NrLWxpc3QtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWNvbnRhaW5lcjsgfVxuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgbGkgc2VsZWN0b3IgdGhhdCBpcyBtZWFudCB0byBwYXJ0aWNpcGF0ZSBpbiBhIGhvcml6b250YWwgbGF5b3V0LlxuLy8gVXNlZCB0byBpbXBsZW1lbnQgYGlubGluZS1ibG9jay1saXN0YC5cbkBtaXhpbiBpbmxpbmUtYmxvY2stbGlzdC1pdGVtKCRwYWRkaW5nOiBmYWxzZSkge1xuICBAaW5jbHVkZSBuby1idWxsZXQ7XG4gIEBpbmNsdWRlIGlubGluZS1ibG9jaztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgQGlmICRwYWRkaW5nIHtcbiAgICBwYWRkaW5nOiB7XG4gICAgICBsZWZ0OiAkcGFkZGluZztcbiAgICAgIHJpZ2h0OiAkcGFkZGluZztcbiAgICB9O1xuICB9XG59XG5cbi8vIEEgbGlzdChvbCx1bCkgdGhhdCBpcyBsYXllZCBvdXQgc3VjaCB0aGF0IHRoZSBlbGVtZW50cyBhcmUgaW5saW5lLWJsb2NrIGFuZCB3b24ndCB3cmFwLlxuQG1peGluIGlubGluZS1ibG9jay1saXN0KCRwYWRkaW5nOiBmYWxzZSkge1xuICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1jb250YWluZXI7XG4gIGxpIHtcbiAgICBAaW5jbHVkZSBpbmxpbmUtYmxvY2stbGlzdC1pdGVtKCRwYWRkaW5nKTsgfSB9XG4iLCIvLyBUdXJuIG9mZiB0aGUgYnVsbGV0IGZvciBhbiBlbGVtZW50IG9mIGEgbGlzdFxuQG1peGluIG5vLWJ1bGxldCB7XG4gIGxpc3Qtc3R5bGUtaW1hZ2UgOiBub25lO1xuICBsaXN0LXN0eWxlLXR5cGUgIDogbm9uZTtcbiAgbWFyZ2luLWxlZnQgICAgICA6IDA7XG59XG5cbi8vIHR1cm5zIG9mZiB0aGUgYnVsbGV0cyBmb3IgYW4gZW50aXJlIGxpc3RcbkBtaXhpbiBuby1idWxsZXRzIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbGkgeyBAaW5jbHVkZSBuby1idWxsZXQ7IH1cbn1cblxuLy8gTWFrZSBhIGxpc3QodWwvb2wpIGhhdmUgYW4gaW1hZ2UgYnVsbGV0LlxuLy9cbi8vIFRoZSBtaXhpbiBzaG91bGQgYmUgdXNlZCBsaWtlIHRoaXMgZm9yIGFuIGljb24gdGhhdCBpcyA1eDc6XG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIiwgNXB4LCA3cHgpXG4vL1xuLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgaW1hZ2UgZGltZW5zaW9ucyBhcmUgbm90IHByb3ZpZGVkLFxuLy8gVGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgaXRzZWxmLlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIpXG4vL1xuQG1peGluIHByZXR0eS1idWxsZXRzKCRidWxsZXQtaWNvbiwgJHdpZHRoOiBpbWFnZS13aWR0aCgkYnVsbGV0LWljb24pLCAkaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGJ1bGxldC1pY29uKSwgJGxpbmUtaGVpZ2h0OiAxOHB4LCAkcGFkZGluZzogMTRweCkge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbGkge1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRidWxsZXQtaWNvbikgbm8tcmVwZWF0ICgkcGFkZGluZyAtICR3aWR0aCkgLyAyICgkbGluZS1oZWlnaHQgLSAkaGVpZ2h0KSAvIDI7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICB9XG59XG4iLCIvLyBIb3Jpem9udGFsIGxpc3QgbGF5b3V0IG1vZHVsZS5cbi8vXG4vLyBFYXN5IG1vZGUgdXNpbmcgc2ltcGxlIGRlc2NlbmRhbnQgbGkgc2VsZWN0b3JzOlxuLy9cbi8vICAgdWwubmF2XG4vLyAgICAgK2hvcml6b250YWwtbGlzdFxuLy9cbi8vIEFkdmFuY2VkIG1vZGU6XG4vLyBJZiB5b3UgbmVlZCB0byB0YXJnZXQgdGhlIGxpc3QgaXRlbXMgdXNpbmcgYSBkaWZmZXJlbnQgc2VsZWN0b3IgdGhlbiB1c2Vcbi8vICtob3Jpem9udGFsLWxpc3QtY29udGFpbmVyIG9uIHlvdXIgdWwvb2wgYW5kICtob3Jpem9udGFsLWxpc3QtaXRlbSBvbiB5b3VyIGxpLlxuLy8gVGhpcyBtYXkgaGVscCB3aGVuIHdvcmtpbmcgb24gbGF5b3V0cyBpbnZvbHZpbmcgbmVzdGVkIGxpc3RzLiBGb3IgZXhhbXBsZTpcbi8vXG4vLyAgIHVsLm5hdlxuLy8gICAgICtob3Jpem9udGFsLWxpc3QtY29udGFpbmVyXG4vLyAgICAgPiBsaVxuLy8gICAgICAgK2hvcml6b250YWwtbGlzdC1pdGVtXG5cbkBpbXBvcnQgXCJidWxsZXRzXCI7XG5AaW1wb3J0IFwiLi4vLi4vdXRpbGl0aWVzL2dlbmVyYWwvY2xlYXJmaXhcIjtcbkBpbXBvcnQgXCIuLi8uLi91dGlsaXRpZXMvZ2VuZXJhbC9yZXNldFwiO1xuQGltcG9ydCBcIi4uLy4uL3V0aWxpdGllcy9nZW5lcmFsL2Zsb2F0XCI7XG5cbi8vIENhbiBiZSBtaXhlZCBpbnRvIGFueSBzZWxlY3RvciB0aGF0IHRhcmdldCBhIHVsIG9yIG9sIHRoYXQgaXMgbWVhbnRcbi8vIHRvIGhhdmUgYSBob3Jpem9udGFsIGxheW91dC4gVXNlZCB0byBpbXBsZW1lbnQgK2hvcml6b250YWwtbGlzdC5cbkBtaXhpbiBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyIHtcbiAgQGluY2x1ZGUgcmVzZXQtYm94LW1vZGVsO1xuICBAaW5jbHVkZSBjbGVhcmZpeDsgfVxuXG4vLyBDYW4gYmUgbWl4ZWQgaW50byBhbnkgbGkgc2VsZWN0b3IgdGhhdCBpcyBtZWFudCB0byBwYXJ0aWNpcGF0ZSBpbiBhIGhvcml6b250YWwgbGF5b3V0LlxuLy8gVXNlZCB0byBpbXBsZW1lbnQgK2hvcml6b250YWwtbGlzdC5cbi8vXG4vLyA6bGFzdC1jaGlsZCBpcyBub3QgZnVsbHkgc3VwcG9ydGVkXG4vLyBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvY29udGVudHMuaHRtbCN0MjkgZm9yIHRoZSBzdXBwb3J0IG1hdHJpeFxuLy9cbi8vIElFOCBpZ25vcmVzIHJ1bGVzIHRoYXQgYXJlIGluY2x1ZGVkIG9uIHRoZSBzYW1lIGxpbmUgYXMgOmxhc3QtY2hpbGRcbi8vIHNlZSBodHRwOi8vd3d3LnJpY2hhcmRzY2Fycm90dC5jby51ay9wb3N0cy92aWV3L2llOC1sYXN0LWNoaWxkLWJ1ZyBmb3IgZGV0YWlsc1xuLy9cbi8vIFNldHRpbmcgYCRwYWRkaW5nYCB0byBgZmFsc2VgIGRpc2FibGVzIHRoZSBwYWRkaW5nIGJldHdlZW4gbGlzdCBlbGVtZW50c1xuQG1peGluIGhvcml6b250YWwtbGlzdC1pdGVtKCRwYWRkaW5nOiA0cHgsICRkaXJlY3Rpb246IGxlZnQpIHtcbiAgQGluY2x1ZGUgbm8tYnVsbGV0O1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBAaW5jbHVkZSBmbG9hdCgkZGlyZWN0aW9uKTtcbiAgQGlmICRwYWRkaW5nIHtcbiAgICBwYWRkaW5nOiB7XG4gICAgICBsZWZ0OiAkcGFkZGluZztcbiAgICAgIHJpZ2h0OiAkcGFkZGluZztcbiAgICB9XG4gICAgJjpmaXJzdC1jaGlsZCwgJi5maXJzdCB7IHBhZGRpbmctI3skZGlyZWN0aW9ufTogMDsgfVxuICAgICY6bGFzdC1jaGlsZCB7IHBhZGRpbmctI3tvcHBvc2l0ZS1wb3NpdGlvbigkZGlyZWN0aW9uKX06IDA7IH1cbiAgICAmLmxhc3QgeyBwYWRkaW5nLSN7b3Bwb3NpdGUtcG9zaXRpb24oJGRpcmVjdGlvbil9OiAwOyB9XG4gIH1cbn1cblxuLy8gQSBsaXN0KG9sLHVsKSB0aGF0IGlzIGxheWVkIG91dCBzdWNoIHRoYXQgdGhlIGVsZW1lbnRzIGFyZSBmbG9hdGVkIGxlZnQgYW5kIHdvbid0IHdyYXAuXG4vLyBUaGlzIGlzIG5vdCBhbiBpbmxpbmUgbGlzdC5cbi8vXG4vLyBTZXR0aW5nIGAkcGFkZGluZ2AgdG8gYGZhbHNlYCBkaXNhYmxlcyB0aGUgcGFkZGluZyBiZXR3ZWVuIGxpc3QgZWxlbWVudHNcbkBtaXhpbiBob3Jpem9udGFsLWxpc3QoJHBhZGRpbmc6IDRweCwgJGRpcmVjdGlvbjogbGVmdCkge1xuICBAaW5jbHVkZSBob3Jpem9udGFsLWxpc3QtY29udGFpbmVyO1xuICBsaSB7XG4gICAgQGluY2x1ZGUgaG9yaXpvbnRhbC1saXN0LWl0ZW0oJHBhZGRpbmcsICRkaXJlY3Rpb24pOyB9IH1cbiIsIi8vIFR1cm4gb2ZmIHRoZSBidWxsZXQgZm9yIGFuIGVsZW1lbnQgb2YgYSBsaXN0XG5AbWl4aW4gbm8tYnVsbGV0IHtcbiAgbGlzdC1zdHlsZS1pbWFnZSA6IG5vbmU7XG4gIGxpc3Qtc3R5bGUtdHlwZSAgOiBub25lO1xuICBtYXJnaW4tbGVmdCAgICAgIDogMDtcbn1cblxuLy8gdHVybnMgb2ZmIHRoZSBidWxsZXRzIGZvciBhbiBlbnRpcmUgbGlzdFxuQG1peGluIG5vLWJ1bGxldHMge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBsaSB7IEBpbmNsdWRlIG5vLWJ1bGxldDsgfVxufVxuXG4vLyBNYWtlIGEgbGlzdCh1bC9vbCkgaGF2ZSBhbiBpbWFnZSBidWxsZXQuXG4vL1xuLy8gVGhlIG1peGluIHNob3VsZCBiZSB1c2VkIGxpa2UgdGhpcyBmb3IgYW4gaWNvbiB0aGF0IGlzIDV4Nzpcbi8vXG4vLyAgICAgdWwucHJldHR5XG4vLyAgICAgICArcHJldHR5LWJ1bGxldHMoXCJteS1pY29uLnBuZ1wiLCA1cHgsIDdweClcbi8vXG4vLyBBZGRpdGlvbmFsbHksIGlmIHRoZSBpbWFnZSBkaW1lbnNpb25zIGFyZSBub3QgcHJvdmlkZWQsXG4vLyBUaGUgaW1hZ2UgZGltZW5zaW9ucyB3aWxsIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBpbWFnZSBpdHNlbGYuXG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIilcbi8vXG5AbWl4aW4gcHJldHR5LWJ1bGxldHMoJGJ1bGxldC1pY29uLCAkd2lkdGg6IGltYWdlLXdpZHRoKCRidWxsZXQtaWNvbiksICRoZWlnaHQ6IGltYWdlLWhlaWdodCgkYnVsbGV0LWljb24pLCAkbGluZS1oZWlnaHQ6IDE4cHgsICRwYWRkaW5nOiAxNHB4KSB7XG4gIG1hcmdpbi1sZWZ0OiAwO1xuICBsaSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZztcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGJ1bGxldC1pY29uKSBuby1yZXBlYXQgKCRwYWRkaW5nIC0gJHdpZHRoKSAvIDIgKCRsaW5lLWhlaWdodCAtICRoZWlnaHQpIC8gMjtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG4gIH1cbn1cbiIsIi8vIEBkb2Mgb2ZmXG4vLyBFeHRlbmRzIHRoZSBib3R0b20gb2YgdGhlIGVsZW1lbnQgdG8gZW5jbG9zZSBhbnkgZmxvYXRzIGl0IGNvbnRhaW5zLlxuLy8gQGRvYyBvblxuXG5AaW1wb3J0IFwiaGFja3NcIjtcblxuLy8gVGhpcyBiYXNpYyBtZXRob2QgaXMgcHJlZmVycmVkIGZvciB0aGUgdXN1YWwgY2FzZSwgd2hlbiBwb3NpdGlvbmVkXG4vLyBjb250ZW50IHdpbGwgbm90IHNob3cgb3V0c2lkZSB0aGUgYm91bmRzIG9mIHRoZSBjb250YWluZXIuXG4vL1xuLy8gUmVjb21tZW5kYXRpb25zIGluY2x1ZGUgdXNpbmcgdGhpcyBpbiBjb25qdW5jdGlvbiB3aXRoIGEgd2lkdGguXG4vLyBDcmVkaXQ6IFtxdWlya3Ntb2RlLm9yZ10oaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMDUvMDMvY2xlYXJpbmdfZmxvYXRzLmh0bWwpXG5AbWl4aW4gY2xlYXJmaXgge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBAaW5jbHVkZSBoYXMtbGF5b3V0O1xufVxuXG4vLyBUaGlzIG9sZGVyIG1ldGhvZCBmcm9tIFBvc2l0aW9uIElzIEV2ZXJ5dGhpbmcgY2FsbGVkXG4vLyBbRWFzeSBDbGVhcmluZ10oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZWFzeWNsZWFyaW5nLmh0bWwpXG4vLyBoYXMgdGhlIGFkdmFudGFnZSBvZiBhbGxvd2luZyBwb3NpdGlvbmVkIGVsZW1lbnRzIHRvIGhhbmdcbi8vIG91dHNpZGUgdGhlIGJvdW5kcyBvZiB0aGUgY29udGFpbmVyIGF0IHRoZSBleHBlbnNlIG9mIG1vcmUgdHJpY2t5IENTUy5cbkBtaXhpbiBsZWdhY3ktcGllLWNsZWFyZml4IHtcbiAgJjphZnRlciB7XG4gICAgY29udGVudCAgICA6IFwiXFwwMDIwXCI7XG4gICAgZGlzcGxheSAgICA6IGJsb2NrO1xuICAgIGhlaWdodCAgICAgOiAwO1xuICAgIGNsZWFyICAgICAgOiBib3RoO1xuICAgIG92ZXJmbG93ICAgOiBoaWRkZW47XG4gICAgdmlzaWJpbGl0eSA6IGhpZGRlbjtcbiAgfVxuICBAaW5jbHVkZSBoYXMtbGF5b3V0O1xufVxuXG4vLyBUaGlzIGlzIGFuIHVwZGF0ZWQgdmVyc2lvbiBvZiB0aGUgUElFIGNsZWFyZml4IG1ldGhvZCB0aGF0IHJlZHVjZXMgdGhlIGFtb3VudCBvZiBDU1Mgb3V0cHV0LlxuLy8gSWYgeW91IG5lZWQgdG8gc3VwcG9ydCBGaXJlZm94IGJlZm9yZSAzLjUgeW91IG5lZWQgdG8gdXNlIGBsZWdhY3ktcGllLWNsZWFyZml4YCBpbnN0ZWFkLlxuLy9cbi8vIEFkYXB0ZWQgZnJvbTogW0EgbmV3IG1pY3JvIGNsZWFyZml4IGhhY2tdKGh0dHA6Ly9uaWNvbGFzZ2FsbGFnaGVyLmNvbS9taWNyby1jbGVhcmZpeC1oYWNrLylcbkBtaXhpbiBwaWUtY2xlYXJmaXgge1xuICAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGRpc3BsYXk6IHRhYmxlO1xuICAgIGNsZWFyOiBib3RoO1xuICB9XG4gIEBpbmNsdWRlIGhhcy1sYXlvdXQ7XG59XG4iLCJAaW1wb3J0IFwiLi4vLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGUgYHpvb21gIGFwcHJvYWNoIGdlbmVyYXRlcyBsZXNzIENTUyBidXQgZG9lcyBub3QgdmFsaWRhdGUuXG4vLyBTZXQgdGhpcyB0byBgYmxvY2tgIHRvIHVzZSB0aGUgZGlzcGxheS1wcm9wZXJ0eSB0byBoYWNrIHRoZVxuLy8gZWxlbWVudCB0byBnYWluIGxheW91dC5cbiRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2g6IHpvb20gIWRlZmF1bHQ7XG5cbi8vIFRoaXMgbWl4aW4gY2F1c2VzIGFuIGVsZW1lbnQgbWF0Y2hpbmcgdGhlIHNlbGVjdG9yXG4vLyB0byBnYWluIHRoZSBcImhhc0xheW91dFwiIHByb3BlcnR5IGluIGludGVybmV0IGV4cGxvcmVyLlxuLy8gTW9yZSBpbmZvcm1hdGlvbiBvbiBbaGFzTGF5b3V0XShodHRwOi8vcmVmZXJlbmNlLnNpdGVwb2ludC5jb20vY3NzL2hhc2xheW91dCkuXG5AbWl4aW4gaGFzLWxheW91dCgkYXBwcm9hY2g6ICRkZWZhdWx0LWhhcy1sYXlvdXQtYXBwcm9hY2gpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgIEBpZiAkYXBwcm9hY2ggPT0gem9vbSB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LXpvb207XG4gICAgfSBAZWxzZSBpZiAkYXBwcm9hY2ggPT0gYmxvY2sge1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC1ibG9jaztcbiAgICB9IEBlbHNlIHtcbiAgICAgIEB3YXJuIFwiVW5rbm93biBoYXMtbGF5b3V0IGFwcHJvYWNoOiAjeyRhcHByb2FjaH1cIjtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGhhcy1sYXlvdXQtem9vbSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyB7XG4gICAgKnpvb206IDE7XG4gIH1cbn1cblxuQG1peGluIGhhcy1sYXlvdXQtYmxvY2sge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgLy8gVGhpcyBtYWtlcyBpZTYgZ2V0IGxheW91dFxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBhbmQgdGhpcyBwdXRzIGl0IGJhY2sgdG8gYmxvY2tcbiAgICAmIHsgZGlzcGxheTogYmxvY2s7IH1cbiAgfVxufVxuXG4vLyBBIGhhY2sgdG8gc3VwcGx5IElFNiAoYW5kIGJlbG93KSB3aXRoIGEgZGlmZmVyZW50IHByb3BlcnR5IHZhbHVlLlxuLy8gW1JlYWQgbW9yZV0oaHR0cDovL3d3dy5jc3Nwb3J0YWwuY29tL2Nzcy1oYWNrcy8jaW5fY3NzLWltcG9ydGFudCkuXG5AbWl4aW4gYmFuZy1oYWNrKCRwcm9wZXJ0eSwgJHZhbHVlLCAkaWU2LXZhbHVlKSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiB7XG4gICAgI3skcHJvcGVydHl9OiAjeyR2YWx1ZX0gIWltcG9ydGFudDtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JGllNi12YWx1ZX07XG4gIH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiLy8gVGhpcyBtb2R1bGUgaGFzIG1vdmVkLlxuQGltcG9ydCBcIi4uLy4uL3Jlc2V0L3V0aWxpdGllc1wiO1xuIiwiLy8gQmFzZWQgb24gW0VyaWMgTWV5ZXIncyByZXNldCAyLjBdKGh0dHA6Ly9tZXllcndlYi5jb20vZXJpYy90b29scy9jc3MvcmVzZXQvaW5kZXguaHRtbClcbi8vIEdsb2JhbCByZXNldCBydWxlcy5cbi8vIEZvciBtb3JlIHNwZWNpZmljIHJlc2V0cywgdXNlIHRoZSByZXNldCBtaXhpbnMgcHJvdmlkZWQgYmVsb3dcbkBtaXhpbiBnbG9iYWwtcmVzZXQge1xuICBodG1sLCBib2R5LCBkaXYsIHNwYW4sIGFwcGxldCwgb2JqZWN0LCBpZnJhbWUsXG4gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSxcbiAgYSwgYWJiciwgYWNyb255bSwgYWRkcmVzcywgYmlnLCBjaXRlLCBjb2RlLFxuICBkZWwsIGRmbiwgZW0sIGltZywgaW5zLCBrYmQsIHEsIHMsIHNhbXAsXG4gIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsXG4gIGIsIHUsIGksIGNlbnRlcixcbiAgZGwsIGR0LCBkZCwgb2wsIHVsLCBsaSxcbiAgZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsXG4gIHRhYmxlLCBjYXB0aW9uLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0ciwgdGgsIHRkLFxuICBhcnRpY2xlLCBhc2lkZSwgY2FudmFzLCBkZXRhaWxzLCBlbWJlZCwgXG4gIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgXG4gIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LFxuICB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICAgIEBpbmNsdWRlIHJlc2V0LWJveC1tb2RlbDtcbiAgICBAaW5jbHVkZSByZXNldC1mb250OyB9XG4gIC8vIFVubGlrZSBFcmljJ3Mgb3JpZ2luYWwgcmVzZXQsIHdlIHJlc2V0IHRoZSBodG1sIGVsZW1lbnQgdG8gYmUgY29tcGF0aWJsZVxuICAvLyB3aXRoIHRoZSB2ZXJ0aWNhbCByaHl0aG0gbWl4aW5zLlxuICBodG1sIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib2R5OyB9XG4gIG9sLCB1bCB7XG4gICAgQGluY2x1ZGUgcmVzZXQtbGlzdC1zdHlsZTsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfVxuICBAaW5jbHVkZSByZXNldC1odG1sNTsgfVxuXG4vLyBSZXNldCBhbGwgZWxlbWVudHMgd2l0aGluIHNvbWUgc2VsZWN0b3Igc2NvcGUuIFRvIHJlc2V0IHRoZSBzZWxlY3RvciBpdHNlbGYsXG4vLyBtaXhpbiB0aGUgYXBwcm9wcmlhdGUgcmVzZXQgbWl4aW4gZm9yIHRoYXQgZWxlbWVudCB0eXBlIGFzIHdlbGwuIFRoaXMgY291bGQgYmVcbi8vIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBzdHlsZSBhIHBhcnQgb2YgeW91ciBwYWdlIGluIGEgZHJhbWF0aWNhbGx5IGRpZmZlcmVudCB3YXkuXG5AbWl4aW4gbmVzdGVkLXJlc2V0IHtcbiAgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLFxuICBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsXG4gIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSxcbiAgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLFxuICBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLFxuICBiLCB1LCBpLCBjZW50ZXIsXG4gIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksXG4gIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLFxuICB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCxcbiAgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsIFxuICBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIFxuICBtZW51LCBuYXYsIG91dHB1dCwgcnVieSwgc2VjdGlvbiwgc3VtbWFyeSxcbiAgdGltZSwgbWFyaywgYXVkaW8sIHZpZGVvIHtcbiAgICBAaW5jbHVkZSByZXNldC1ib3gtbW9kZWw7XG4gICAgQGluY2x1ZGUgcmVzZXQtZm9udDsgfVxuICB0YWJsZSB7XG4gICAgQGluY2x1ZGUgcmVzZXQtdGFibGU7IH1cbiAgY2FwdGlvbiwgdGgsIHRkIHtcbiAgICBAaW5jbHVkZSByZXNldC10YWJsZS1jZWxsOyB9XG4gIHEsIGJsb2NrcXVvdGUge1xuICAgIEBpbmNsdWRlIHJlc2V0LXF1b3RhdGlvbjsgfVxuICBhIGltZyB7XG4gICAgQGluY2x1ZGUgcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlcjsgfSB9XG5cbi8vIFJlc2V0IHRoZSBib3ggbW9kZWwgbWVhc3VyZW1lbnRzLlxuQG1peGluIHJlc2V0LWJveC1tb2RlbCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwOyB9XG5cbi8vIFJlc2V0IHRoZSBmb250IGFuZCB2ZXJ0aWNhbCBhbGlnbm1lbnQuXG5AbWl4aW4gcmVzZXQtZm9udCB7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIGZvbnQtc2l6ZTogMTAwJTtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lOyB9XG5cbi8vIFJlc2V0cyB0aGUgb3V0bGluZSB3aGVuIGZvY3VzLlxuLy8gRm9yIGFjY2Vzc2liaWxpdHkgeW91IG5lZWQgdG8gYXBwbHkgc29tZSBzdHlsaW5nIGluIGl0cyBwbGFjZS5cbkBtaXhpbiByZXNldC1mb2N1cyB7XG4gIG91dGxpbmU6IDA7IH1cblxuLy8gUmVzZXQgYSBib2R5IGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtYm9keSB7XG4gIGxpbmUtaGVpZ2h0OiAxOyB9XG5cbi8vIFJlc2V0IHRoZSBsaXN0IHN0eWxlIG9mIGFuIGVsZW1lbnQuXG5AbWl4aW4gcmVzZXQtbGlzdC1zdHlsZSB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cblxuLy8gUmVzZXQgYSB0YWJsZVxuQG1peGluIHJlc2V0LXRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7IH1cblxuLy8gUmVzZXQgYSB0YWJsZSBjZWxsIChgdGhgLCBgdGRgKVxuQG1peGluIHJlc2V0LXRhYmxlLWNlbGwge1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB9XG5cbi8vIFJlc2V0IGEgcXVvdGF0aW9uIChgcWAsIGBibG9ja3F1b3RlYClcbkBtaXhpbiByZXNldC1xdW90YXRpb24ge1xuICBxdW90ZXM6IG5vbmU7XG4gICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlwiOyBcbiAgICBjb250ZW50OiBub25lOyB9IH1cblxuLy8gUmVzZXRzIHRoZSBib3JkZXIuXG5AbWl4aW4gcmVzZXQtaW1hZ2UtYW5jaG9yLWJvcmRlciB7XG4gIGJvcmRlcjogbm9uZTsgfVxuXG4vLyBVbnJlY29nbml6ZWQgZWxlbWVudHMgYXJlIGRpc3BsYXllZCBpbmxpbmUuXG4vLyBUaGlzIHJlc2V0IHByb3ZpZGVzIGEgYmFzaWMgcmVzZXQgZm9yIGJsb2NrIGh0bWw1IGVsZW1lbnRzXG4vLyBzbyB0aGV5IGFyZSByZW5kZXJlZCBjb3JyZWN0bHkgaW4gYnJvd3NlcnMgdGhhdCBkb24ndCByZWNvZ25pemUgdGhlbVxuLy8gYW5kIHJlc2V0IGluIGJyb3dzZXJzIHRoYXQgaGF2ZSBkZWZhdWx0IHN0eWxlcyBmb3IgdGhlbS5cbkBtaXhpbiByZXNldC1odG1sNSB7XG4gICN7ZWxlbWVudHMtb2YtdHlwZShodG1sNS1ibG9jayl9IHtcbiAgICBkaXNwbGF5OiBibG9jazsgfSB9XG5cbi8vIFJlc2V0cyB0aGUgZGlzcGxheSBvZiBpbmxpbmUgYW5kIGJsb2NrIGVsZW1lbnRzIHRvIHRoZWlyIGRlZmF1bHQgZGlzcGxheVxuLy8gYWNjb3JkaW5nIHRvIHRoZWlyIHRhZyB0eXBlLiBFbGVtZW50cyB0aGF0IGhhdmUgYSBkZWZhdWx0IGRpc3BsYXkgdGhhdCB2YXJpZXMgYWNyb3NzXG4vLyB2ZXJzaW9ucyBvZiBodG1sIG9yIGJyb3dzZXIgYXJlIG5vdCBoYW5kbGVkIGhlcmUsIGJ1dCB0aGlzIGNvdmVycyB0aGUgOTAlIHVzZSBjYXNlLlxuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgLy8gVHVybiBvZmYgdGhlIGRpc3BsYXkgZm9yIGJvdGggb2YgdGhlc2UgY2xhc3Nlc1xuLy8gICAgIC51bnJlZ2lzdGVyZWQtb25seSwgLnJlZ2lzdGVyZWQtb25seVxuLy8gICAgICAgZGlzcGxheTogbm9uZVxuLy8gICAgIC8vIE5vdyB0dXJuIG9ubHkgb25lIG9mIHRoZW0gYmFjayBvbiBkZXBlbmRpbmcgb24gc29tZSBvdGhlciBjb250ZXh0LlxuLy8gICAgIGJvZHkucmVnaXN0ZXJlZFxuLy8gICAgICAgK3Jlc2V0LWRpc3BsYXkoXCIucmVnaXN0ZXJlZC1vbmx5XCIpXG4vLyAgICAgYm9keS51bnJlZ2lzdGVyZWRcbi8vICAgICAgICtyZXNldC1kaXNwbGF5KFwiLnVucmVnaXN0ZXJlZC1vbmx5XCIpXG5AbWl4aW4gcmVzZXQtZGlzcGxheSgkc2VsZWN0b3I6IFwiXCIsICRpbXBvcnRhbnQ6IGZhbHNlKSB7XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJpbmxpbmVcIiksICRzZWxlY3Rvcil9IHtcbiAgICBAaWYgJGltcG9ydGFudCB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgfVxuICAgIEBlbHNlIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZTsgfSB9XG4gICN7YXBwZW5kLXNlbGVjdG9yKGVsZW1lbnRzLW9mLXR5cGUoXCJibG9ja1wiKSwgJHNlbGVjdG9yKX0ge1xuICAgIEBpZiAkaW1wb3J0YW50IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7IH1cbiAgICBAZWxzZSB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9IH1cbiIsIi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OmxlZnQgd2l0aCBmaXggZm9yIHRoZVxuLy8gW2RvdWJsZS1tYXJnaW4gYnVnIGluIElFNS82XShodHRwOi8vd3d3LnBvc2l0aW9uaXNldmVyeXRoaW5nLm5ldC9leHBsb3Jlci9kb3VibGVkLW1hcmdpbi5odG1sKVxuQG1peGluIGZsb2F0LWxlZnQge1xuICBAaW5jbHVkZSBmbG9hdChsZWZ0KTsgfVxuXG4vLyBJbXBsZW1lbnRhdGlvbiBvZiBmbG9hdDpyaWdodCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtcmlnaHQge1xuICBAaW5jbHVkZSBmbG9hdChyaWdodCk7IH1cblxuLy8gRGlyZWN0aW9uIGluZGVwZW5kZW50IGZsb2F0IG1peGluIHRoYXQgZml4ZXMgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQoJHNpZGU6IGxlZnQpIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICBmbG9hdDogdW5xdW90ZSgkc2lkZSk7IH1cblxuLy8gUmVzZXRzIGZsb2F0ZWQgZWxlbWVudHMgYmFjayB0byB0aGVpciBkZWZhdWx0IG9mIGBmbG9hdDogbm9uZWAgYW5kIGRlZmF1bHRzXG4vLyB0byBgZGlzcGxheTogYmxvY2tgIHVubGVzcyB5b3UgcGFzcyBgaW5saW5lYCBhcyBhbiBhcmd1bWVudFxuLy9cbi8vIFVzYWdlIEV4YW1wbGU6XG4vL1xuLy8gICAgIGJvZHkuaG9tZXBhZ2Vcbi8vICAgICAgICNmb290ZXIgbGlcbi8vICAgICAgICAgK2Zsb2F0LWxlZnRcbi8vICAgICBib2R5LnNpZ251cFxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArcmVzZXQtZmxvYXRcbkBtaXhpbiByZXNldC1mbG9hdCgkZGlzcGxheTogYmxvY2spIHtcbiAgZmxvYXQ6IG5vbmU7XG4gIGRpc3BsYXk6ICRkaXNwbGF5OyB9IiwiLy8gSW1wbGVtZW50YXRpb24gb2YgZmxvYXQ6bGVmdCB3aXRoIGZpeCBmb3IgdGhlXG4vLyBbZG91YmxlLW1hcmdpbiBidWcgaW4gSUU1LzZdKGh0dHA6Ly93d3cucG9zaXRpb25pc2V2ZXJ5dGhpbmcubmV0L2V4cGxvcmVyL2RvdWJsZWQtbWFyZ2luLmh0bWwpXG5AbWl4aW4gZmxvYXQtbGVmdCB7XG4gIEBpbmNsdWRlIGZsb2F0KGxlZnQpOyB9XG5cbi8vIEltcGxlbWVudGF0aW9uIG9mIGZsb2F0OnJpZ2h0IHdpdGggZml4IGZvciB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdC1yaWdodCB7XG4gIEBpbmNsdWRlIGZsb2F0KHJpZ2h0KTsgfVxuXG4vLyBEaXJlY3Rpb24gaW5kZXBlbmRlbnQgZmxvYXQgbWl4aW4gdGhhdCBmaXhlcyB0aGVcbi8vIFtkb3VibGUtbWFyZ2luIGJ1ZyBpbiBJRTUvNl0oaHR0cDovL3d3dy5wb3NpdGlvbmlzZXZlcnl0aGluZy5uZXQvZXhwbG9yZXIvZG91YmxlZC1tYXJnaW4uaHRtbClcbkBtaXhpbiBmbG9hdCgkc2lkZTogbGVmdCkge1xuICBkaXNwbGF5OiBpbmxpbmU7XG4gIGZsb2F0OiB1bnF1b3RlKCRzaWRlKTsgfVxuXG4vLyBSZXNldHMgZmxvYXRlZCBlbGVtZW50cyBiYWNrIHRvIHRoZWlyIGRlZmF1bHQgb2YgYGZsb2F0OiBub25lYCBhbmQgZGVmYXVsdHNcbi8vIHRvIGBkaXNwbGF5OiBibG9ja2AgdW5sZXNzIHlvdSBwYXNzIGBpbmxpbmVgIGFzIGFuIGFyZ3VtZW50XG4vL1xuLy8gVXNhZ2UgRXhhbXBsZTpcbi8vXG4vLyAgICAgYm9keS5ob21lcGFnZVxuLy8gICAgICAgI2Zvb3RlciBsaVxuLy8gICAgICAgICArZmxvYXQtbGVmdFxuLy8gICAgIGJvZHkuc2lnbnVwXG4vLyAgICAgICAjZm9vdGVyIGxpXG4vLyAgICAgICAgICtyZXNldC1mbG9hdFxuQG1peGluIHJlc2V0LWZsb2F0KCRkaXNwbGF5OiBibG9jaykge1xuICBmbG9hdDogbm9uZTtcbiAgZGlzcGxheTogJGRpc3BsYXk7IH0iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFNldCBgJGlubGluZS1ibG9jay1hbGlnbm1lbnRgIHRvIGBub25lYCBvciBgZmFsc2VgIHRvIGRpc2FibGUgdGhlIG91dHB1dFxuLy8gb2YgYSB2ZXJ0aWNhbC1hbGlnbiBwcm9wZXJ0eSBpbiB0aGUgaW5saW5lLWJsb2NrIG1peGluLlxuLy8gT3Igc2V0IGl0IHRvIGEgbGVnYWwgdmFsdWUgZm9yIGB2ZXJ0aWNhbC1hbGlnbmAgdG8gY2hhbmdlIHRoZSBkZWZhdWx0LlxuJGlubGluZS1ibG9jay1hbGlnbm1lbnQ6IG1pZGRsZSAhZGVmYXVsdDtcblxuLy8gUHJvdmlkZXMgYSBjcm9zcy1icm93c2VyIG1ldGhvZCB0byBpbXBsZW1lbnQgYGRpc3BsYXk6IGlubGluZS1ibG9jaztgXG5AbWl4aW4gaW5saW5lLWJsb2NrKCRhbGlnbm1lbnQ6ICRpbmxpbmUtYmxvY2stYWxpZ25tZW50KSB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGEge1xuICAgIGRpc3BsYXk6IC1tb3otaW5saW5lLXN0YWNrO1xuICB9XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgQGlmICRhbGlnbm1lbnQgYW5kICRhbGlnbm1lbnQgIT0gbm9uZSB7XG4gICAgdmVydGljYWwtYWxpZ246ICRhbGlnbm1lbnQ7XG4gIH1cbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUge1xuICAgICp2ZXJ0aWNhbC1hbGlnbjogYXV0bztcbiAgICB6b29tOiAxO1xuICAgICpkaXNwbGF5OiBpbmxpbmU7XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCIvLyBUdXJuIG9mZiB0aGUgYnVsbGV0IGZvciBhbiBlbGVtZW50IG9mIGEgbGlzdFxuQG1peGluIG5vLWJ1bGxldCB7XG4gIGxpc3Qtc3R5bGUtaW1hZ2UgOiBub25lO1xuICBsaXN0LXN0eWxlLXR5cGUgIDogbm9uZTtcbiAgbWFyZ2luLWxlZnQgICAgICA6IDA7XG59XG5cbi8vIHR1cm5zIG9mZiB0aGUgYnVsbGV0cyBmb3IgYW4gZW50aXJlIGxpc3RcbkBtaXhpbiBuby1idWxsZXRzIHtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbiAgbGkgeyBAaW5jbHVkZSBuby1idWxsZXQ7IH1cbn1cblxuLy8gTWFrZSBhIGxpc3QodWwvb2wpIGhhdmUgYW4gaW1hZ2UgYnVsbGV0LlxuLy9cbi8vIFRoZSBtaXhpbiBzaG91bGQgYmUgdXNlZCBsaWtlIHRoaXMgZm9yIGFuIGljb24gdGhhdCBpcyA1eDc6XG4vL1xuLy8gICAgIHVsLnByZXR0eVxuLy8gICAgICAgK3ByZXR0eS1idWxsZXRzKFwibXktaWNvbi5wbmdcIiwgNXB4LCA3cHgpXG4vL1xuLy8gQWRkaXRpb25hbGx5LCBpZiB0aGUgaW1hZ2UgZGltZW5zaW9ucyBhcmUgbm90IHByb3ZpZGVkLFxuLy8gVGhlIGltYWdlIGRpbWVuc2lvbnMgd2lsbCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgaW1hZ2UgaXRzZWxmLlxuLy9cbi8vICAgICB1bC5wcmV0dHlcbi8vICAgICAgICtwcmV0dHktYnVsbGV0cyhcIm15LWljb24ucG5nXCIpXG4vL1xuQG1peGluIHByZXR0eS1idWxsZXRzKCRidWxsZXQtaWNvbiwgJHdpZHRoOiBpbWFnZS13aWR0aCgkYnVsbGV0LWljb24pLCAkaGVpZ2h0OiBpbWFnZS1oZWlnaHQoJGJ1bGxldC1pY29uKSwgJGxpbmUtaGVpZ2h0OiAxOHB4LCAkcGFkZGluZzogMTRweCkge1xuICBtYXJnaW4tbGVmdDogMDtcbiAgbGkge1xuICAgIHBhZGRpbmctbGVmdDogJHBhZGRpbmc7XG4gICAgYmFja2dyb3VuZDogaW1hZ2UtdXJsKCRidWxsZXQtaWNvbikgbm8tcmVwZWF0ICgkcGFkZGluZyAtICR3aWR0aCkgLyAyICgkbGluZS1oZWlnaHQgLSAkaGVpZ2h0KSAvIDI7XG4gICAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICB9XG59XG4iLCJAaW1wb3J0IFwidGV4dC9lbGxpcHNpc1wiO1xuQGltcG9ydCBcInRleHQvbm93cmFwXCI7XG5AaW1wb3J0IFwidGV4dC9yZXBsYWNlbWVudFwiO1xuQGltcG9ydCBcInRleHQvZm9yY2Utd3JhcFwiO1xuIiwiQGltcG9ydCBcIi4uLy4uL2NzczMvc2hhcmVkXCI7XG5cbi8vIFRvIGdldCBmdWxsIGZpcmVmb3ggc3VwcG9ydCwgeW91IG11c3QgaW5zdGFsbCB0aGUgZWxsaXBzaXMgcGF0dGVybjpcbi8vXG4vLyAgICAgY29tcGFzcyBpbnN0YWxsIGNvbXBhc3MvZWxsaXBzaXNcbiR1c2UtbW96aWxsYS1lbGxpcHNpcy1iaW5kaW5nOiBmYWxzZSAhZGVmYXVsdDtcblxuLy8gVGhpcyB0ZWNobmlxdWUsIGJ5IFtKdXN0aW4gTWF4d2VsbF0oaHR0cDovL2NvZGU0MDQuY29tLyksIHdhcyBvcmlnaW5hbGx5XG4vLyBwdWJsaXNoZWQgW2hlcmVdKGh0dHA6Ly9tYXR0c25pZGVyLmNvbS9jc3MvY3NzLXN0cmluZy10cnVuY2F0aW9uLXdpdGgtZWxsaXBzaXMvKS5cbi8vIEZpcmVmb3ggaW1wbGVtZW50YXRpb24gYnkgW1Jpa2tlcnQgS29wcGVzXShodHRwOi8vd3d3LnJpa2tlcnRrb3BwZXMuY29tL3Rob3VnaHRzLzIwMDgvNi8pLlxuQG1peGluIGVsbGlwc2lzKCRuby13cmFwOiB0cnVlKSB7XG4gIEBpZiAkbm8td3JhcCB7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRleHQtb3ZlcmZsb3csIGVsbGlwc2lzLFxuICAgIG5vdCgtbW96KSxcbiAgICBub3QoLXdlYmtpdCksXG4gICAgLW8sXG4gICAgLW1zLFxuICAgIG5vdCgta2h0bWwpLFxuICAgIG9mZmljaWFsXG4gICk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgYW5kICR1c2UtbW96aWxsYS1lbGxpcHNpcy1iaW5kaW5nIHtcbiAgICAtbW96LWJpbmRpbmc6IHN0eWxlc2hlZXQtdXJsKHVucXVvdGUoXCJ4bWwvZWxsaXBzaXMueG1sI2VsbGlwc2lzXCIpKTtcbiAgfVxufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIi8vIFdoZW4gcmVtZW1iZXJpbmcgd2hldGhlciBvciBub3QgdGhlcmUncyBhIGh5cGhlbiBpbiB3aGl0ZS1zcGFjZSBpcyB0b28gaGFyZFxuQG1peGluIG5vd3JhcCB7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH1cbiIsIi8vIEluZGljYXRlcyB0aGUgZGlyZWN0aW9uIHlvdSBwcmVmZXIgdG8gbW92ZSB5b3VyIHRleHRcbi8vIHdoZW4gaGlkaW5nIGl0LlxuLy9cbi8vIGBsZWZ0YCBpcyBtb3JlIHJvYnVzdCwgZXNwZWNpYWxseSBpbiBvbGRlciBicm93c2Vycy5cbi8vIGByaWdodGAgc2VlbXMgaGF2ZSBiZXR0ZXIgcnVudGltZSBwZXJmb3JtYW5jZS5cbiRoaWRlLXRleHQtZGlyZWN0aW9uOiBsZWZ0ICFkZWZhdWx0O1xuXG4vLyBIaWRlcyBodG1sIHRleHQgYW5kIHJlcGxhY2VzIGl0IHdpdGggYW4gaW1hZ2UuXG4vLyBJZiB5b3UgdXNlIHRoaXMgb24gYW4gaW5saW5lIGVsZW1lbnQsIHlvdSB3aWxsIG5lZWQgdG8gY2hhbmdlIHRoZSBkaXNwbGF5IHRvIGJsb2NrIG9yIGlubGluZS1ibG9jay5cbi8vIEFsc28sIGlmIHRoZSBzaXplIG9mIHRoZSBpbWFnZSBkaWZmZXJzIHNpZ25pZmljYW50bHkgZnJvbSB0aGUgZm9udCBzaXplLCB5b3UnbGwgbmVlZCB0byBzZXQgdGhlIHdpZHRoIGFuZC9vciBoZWlnaHQuXG4vL1xuLy8gUGFyYW1ldGVyczpcbi8vXG4vLyAqIGBpbWdgIC0tIHRoZSByZWxhdGl2ZSBwYXRoIGZyb20gdGhlIHByb2plY3QgaW1hZ2UgZGlyZWN0b3J5IHRvIHRoZSBpbWFnZSwgb3IgYSB1cmwgbGl0ZXJhbC5cbi8vICogYHhgIC0tIHRoZSB4IHBvc2l0aW9uIG9mIHRoZSBiYWNrZ3JvdW5kIGltYWdlLlxuLy8gKiBgeWAgLS0gdGhlIHkgcG9zaXRpb24gb2YgdGhlIGJhY2tncm91bmQgaW1hZ2UuXG5AbWl4aW4gcmVwbGFjZS10ZXh0KCRpbWcsICR4OiA1MCUsICR5OiA1MCUpIHtcbiAgQGluY2x1ZGUgaGlkZS10ZXh0O1xuICBiYWNrZ3JvdW5kOiB7XG4gICAgQGlmIGlzLXVybCgkaW1nKSB7XG4gICAgICBpbWFnZTogdXJsKCRpbWcpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgaW1hZ2U6IGltYWdlLXVybCgkaW1nKTtcbiAgICB9XG4gICAgcmVwZWF0OiBuby1yZXBlYXQ7XG4gICAgcG9zaXRpb246ICR4ICR5O1xuICB9O1xufVxuXG4vLyBMaWtlIHRoZSBgcmVwbGFjZS10ZXh0YCBtaXhpbiwgYnV0IGFsc28gc2V0cyB0aGUgd2lkdGhcbi8vIGFuZCBoZWlnaHQgb2YgdGhlIGVsZW1lbnQgYWNjb3JkaW5nIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBpbWFnZS5cbi8vXG4vLyBJZiB5b3Ugc2V0IGAkaW5saW5lYCB0byB0cnVlLCB0aGVuIGFuIGlubGluZSBpbWFnZSAoZGF0YSB1cmkpIHdpbGwgYmUgdXNlZC5cbkBtaXhpbiByZXBsYWNlLXRleHQtd2l0aC1kaW1lbnNpb25zKCRpbWcsICR4OiA1MCUsICR5OiA1MCUsICRpbmxpbmU6IGZhbHNlKSB7XG4gIEBpbmNsdWRlIHJlcGxhY2UtdGV4dChpZigkaW5saW5lLCBpbmxpbmUtaW1hZ2UoJGltZyksICRpbWcpLCAkeCwgJHkpO1xuICB3aWR0aDogaW1hZ2Utd2lkdGgoJGltZyk7XG4gIGhlaWdodDogaW1hZ2UtaGVpZ2h0KCRpbWcpO1xufVxuXG4vLyBIaWRlcyB0ZXh0IGluIGFuIGVsZW1lbnQgc28geW91IGNhbiBzZWUgdGhlIGJhY2tncm91bmQuXG4vL1xuLy8gVGhlIGRpcmVjdGlvbiBpbmRpY2F0ZXMgaG93IHRoZSB0ZXh0IHNob3VsZCBiZSBtb3ZlZCBvdXQgb2Ygdmlldy5cbi8vXG4vLyBTZWUgYCRoaWRlLXRleHQtZGlyZWN0aW9uYCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhbmQgdG8gc2V0IHRoaXMgZ2xvYmFsbHlcbi8vIGZvciB5b3VyIGFwcGxpY2F0aW9uLlxuQG1peGluIGhpZGUtdGV4dCgkZGlyZWN0aW9uOiAkaGlkZS10ZXh0LWRpcmVjdGlvbikge1xuICBAaWYgJGRpcmVjdGlvbiA9PSBsZWZ0IHtcbiAgICAkYXBwcm94aW1hdGUtZW0tdmFsdWU6IDEycHg7XG4gICAgJHdpZGVyLXRoYW4tYW55LXNjcmVlbjogLTk5OTk7XG4gICAgdGV4dC1pbmRlbnQ6ICR3aWRlci10aGFuLWFueS1zY3JlZW4gKiAkYXBwcm94aW1hdGUtZW0tdmFsdWU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB9IEBlbHNlIHtcbiAgICAvLyBzbGlnaHRseSB3aWRlciB0aGFuIHRoZSBib3ggcHJldmVudHMgaXNzdWVzIHdpdGggaW5saW5lLWJsb2NrIGVsZW1lbnRzXG4gICAgdGV4dC1pbmRlbnQ6IDExMCU7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG59XG5cbi8vIEhpZGVzIHRleHQgaW4gYW4gZWxlbWVudCBieSBzcXVpc2hpbmcgdGhlIHRleHQgaW50byBvYmxpdmlvbi5cbi8vIFVzZSB0aGlzIGlmIHlvdSBuZWVkIHRvIGhpZGUgdGV4dCBjb250YWluZWQgaW4gYW4gaW5saW5lIGVsZW1lbnRcbi8vIGJ1dCBzdGlsbCBoYXZlIGl0IHJlYWQgYnkgYSBzY3JlZW4gcmVhZGVyLlxuQG1peGluIHNxdWlzaC10ZXh0IHtcbiAgZm9udDogMC8wIHNlcmlmO1xuICB0ZXh0LXNoYWRvdzogbm9uZTtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xufVxuIiwiLy8gUHJldmVudCBsb25nIHVybHMgYW5kIHRleHQgZnJvbSBicmVha2luZyBsYXlvdXRzXG4vLyBbb3JpZ2luYWxseSBmcm9tIHBlcmlzaGFibGVwcmVzcy5jb21dKGh0dHA6Ly9wZXJpc2hhYmxlcHJlc3MuY29tL3ByZXNzLzIwMTAvMDYvMDEvd3JhcHBpbmctY29udGVudC8pXG5AbWl4aW4gZm9yY2Utd3JhcCB7XG4gIHdoaXRlLXNwYWNlOiBwcmU7ICAgICAgICAgICAvLyBDU1MgMi4wXG4gIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgICAgICAvLyBDU1MgMi4xXG4gIHdoaXRlLXNwYWNlOiBwcmUtbGluZTsgICAgICAvLyBDU1MgMy4wXG4gIHdoaXRlLXNwYWNlOiAtcHJlLXdyYXA7ICAgICAvLyBPcGVyYSA0LTZcbiAgd2hpdGUtc3BhY2U6IC1vLXByZS13cmFwOyAgIC8vIE9wZXJhIDdcbiAgd2hpdGUtc3BhY2U6IC1tb3otcHJlLXdyYXA7IC8vIE1vemlsbGFcbiAgd2hpdGUtc3BhY2U6IC1ocC1wcmUtd3JhcDsgIC8vIEhQIFByaW50ZXJzXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDsgICAgICAvLyBJRSA1K1xufVxuIiwiQGltcG9ydCBcIi4uL2xheW91dC9ncmlkLWJhY2tncm91bmRcIjtcblxuLy8gVGhlIGJhc2UgZm9udCBzaXplLlxuJGJhc2UtZm9udC1zaXplOiAxNnB4ICFkZWZhdWx0O1xuXG4vLyBUaGUgYmFzZSBsaW5lIGhlaWdodCBkZXRlcm1pbmVzIHRoZSBiYXNpYyB1bml0IG9mIHZlcnRpY2FsIHJoeXRobS5cbiRiYXNlLWxpbmUtaGVpZ2h0OiAyNHB4ICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIGRlZmF1bHQgYm9yZGVyIHN0eWxlIGZvciByaHl0aG0gYm9yZGVycy5cbiRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGU6IHNvbGlkICFkZWZhdWx0O1xuXG4vLyBUaGUgZGVmYXVsdCBmb250IHNpemUgaW4gYWxsIGJyb3dzZXJzLlxuJGJyb3dzZXItZGVmYXVsdC1mb250LXNpemU6IDE2cHg7XG5cbi8vIFNldCB0byBmYWxzZSBpZiB5b3Ugd2FudCB0byB1c2UgYWJzb2x1dGUgcGl4ZWxzIGluIHNpemluZyB5b3VyIHR5cG9ncmFwaHkuXG4kcmVsYXRpdmUtZm9udC1zaXppbmc6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIEFsbG93cyB0aGUgYGFkanVzdC1mb250LXNpemUtdG9gIG1peGluIGFuZCB0aGUgYGxpbmVzLWZvci1mb250LXNpemVgIGZ1bmN0aW9uXG4vLyB0byByb3VuZCB0aGUgbGluZSBoZWlnaHQgdG8gdGhlIG5lYXJlc3QgaGFsZiBsaW5lIGhlaWdodCBpbnN0ZWFkIG9mIHRoZVxuLy8gbmVhcmVzdCBpbnRlZ3JhbCBsaW5lIGhlaWdodCB0byBhdm9pZCBsYXJnZSBzcGFjaW5nIGJldHdlZW4gbGluZXMuXG4kcm91bmQtdG8tbmVhcmVzdC1oYWxmLWxpbmU6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBFbnN1cmUgdGhlcmUgaXMgYXQgbGVhc3QgdGhpcyBtYW55IHBpeGVsc1xuLy8gb2YgdmVydGljYWwgcGFkZGluZyBhYm92ZSBhbmQgYmVsb3cgdGhlIHRleHQuXG4kbWluLWxpbmUtcGFkZGluZzogMnB4ICFkZWZhdWx0O1xuXG4vLyAkYmFzZS1mb250LXNpemUgYnV0IGluIHlvdXIgb3V0cHV0IHVuaXQgb2YgY2hvaWNlLlxuLy8gRGVmYXVsdHMgdG8gMWVtIHdoZW4gYCRyZWxhdGl2ZS1mb250LXNpemluZ2AgaXMgdHJ1ZS5cbiRmb250LXVuaXQ6IGlmKCRyZWxhdGl2ZS1mb250LXNpemluZywgMWVtLCAkYmFzZS1mb250LXNpemUpICFkZWZhdWx0O1xuXG4vLyBUaGUgYmFzaWMgdW5pdCBvZiBmb250IHJoeXRobS5cbiRiYXNlLXJoeXRobS11bml0OiAkYmFzZS1saW5lLWhlaWdodCAvICRiYXNlLWZvbnQtc2l6ZSAqICRmb250LXVuaXQ7XG5cbi8vIFRoZSBsZWFkZXIgaXMgdGhlIGFtb3VudCBvZiB3aGl0ZXNwYWNlIGluIGEgbGluZS5cbi8vIEl0IG1pZ2h0IGJlIHVzZWZ1bCBpbiB5b3VyIGNhbGN1bGF0aW9ucy5cbiRiYXNlLWxlYWRlcjogKCRiYXNlLWxpbmUtaGVpZ2h0IC0gJGJhc2UtZm9udC1zaXplKSAqICRmb250LXVuaXQgLyAkYmFzZS1mb250LXNpemU7XG5cbi8vIFRoZSBoYWxmLWxlYWRlciBpcyB0aGUgYW1vdW50IG9mIHdoaXRlc3BhY2UgYWJvdmUgYW5kIGJlbG93IGEgbGluZS5cbi8vIEl0IG1pZ2h0IGJlIHVzZWZ1bCBpbiB5b3VyIGNhbGN1bGF0aW9ucy5cbiRiYXNlLWhhbGYtbGVhZGVyOiAkYmFzZS1sZWFkZXIgLyAyO1xuXG4vLyBUcnVlIGlmIGEgbnVtYmVyIGhhcyBhIHJlbGF0aXZlIHVuaXQuXG5AZnVuY3Rpb24gcmVsYXRpdmUtdW5pdCgkbnVtYmVyKSB7XG4gIEByZXR1cm4gdW5pdCgkbnVtYmVyKSA9PSBcIiVcIiBvciB1bml0KCRudW1iZXIpID09IFwiZW1cIiBvciB1bml0KCRudW1iZXIpID09IFwicmVtXCJcbn1cblxuLy8gVHJ1ZSBpZiBhIG51bWJlciBoYXMgYW4gYWJzb2x1dGUgdW5pdC5cbkBmdW5jdGlvbiBhYnNvbHV0ZS11bml0KCRudW1iZXIpIHtcbiAgQHJldHVybiBub3QocmVsYXRpdmUtdW5pdCgkbnVtYmVyKSBvciB1bml0bGVzcygkbnVtYmVyKSk7XG59XG5cbkBpZiAkcmVsYXRpdmUtZm9udC1zaXppbmcgYW5kIG5vdChyZWxhdGl2ZS11bml0KCRmb250LXVuaXQpKSB7XG4gIEB3YXJuIFwiJHJlbGF0aXZlLWZvbnQtc2l6aW5nIGlzIHRydWUgYnV0ICRmb250LXVuaXQgaXMgc2V0IHRvICN7JGZvbnQtdW5pdH0gd2hpY2ggaXMgbm90IGEgcmVsYXRpdmUgdW5pdC5cIjtcbn1cblxuLy8gRXN0YWJsaXNoZXMgYSBmb250IGJhc2VsaW5lIGZvciB0aGUgZ2l2ZW4gZm9udC1zaXplLlxuQG1peGluIGVzdGFibGlzaC1iYXNlbGluZSgkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgLy8gSUUgNiByZWZ1c2VzIHRvIHJlc2l6ZSBmb250cyBzZXQgaW4gcGl4ZWxzIGFuZCBpdCB3ZWlyZGx5IHJlc2l6ZXMgZm9udHNcbiAgLy8gd2hvc2Ugcm9vdCBpcyBzZXQgaW4gZW1zLiBTbyB3ZSBzZXQgdGhlIHJvb3QgZm9udCBzaXplIGluIHBlcmNlbnRhZ2VzIG9mXG4gIC8vIHRoZSBkZWZhdWx0IGZvbnQgc2l6ZS5cbiAgKiBodG1sIHtcbiAgICBmb250LXNpemU6IDEwMCUgKiAoJGZvbnQtc2l6ZSAvICRicm93c2VyLWRlZmF1bHQtZm9udC1zaXplKTtcbiAgfVxuICBodG1sIHtcbiAgICBmb250LXNpemU6ICRmb250LXNpemU7XG4gICAgQGluY2x1ZGUgYWRqdXN0LWxlYWRpbmctdG8oMSwgaWYoJHJlbGF0aXZlLWZvbnQtc2l6aW5nLCAkZm9udC1zaXplLCAkYmFzZS1mb250LXNpemUpKTtcbiAgfVxufVxuXG4vLyBSZXNldHMgdGhlIGxpbmUtaGVpZ2h0IHRvIDEgdmVydGljYWwgcmh5dGhtIHVuaXQuXG4vLyBEb2VzIG5vdCB3b3JrIG9uIGVsZW1lbnRzIHdob3NlIGZvbnQtc2l6ZSBpcyBkaWZmZXJlbnQgZnJvbSAkYmFzZS1mb250LXNpemUuXG4vL1xuLy8gQGRlcHJlY2F0ZWQgVGhpcyBtaXhpbiB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgcmVsZWFzZS5cbi8vIFBsZWFzZSB1c2UgdGhlIGBhZGp1c3QtbGVhZGluZy10b2AgbWl4aW4gaW5zdGVhZC5cbkBtaXhpbiByZXNldC1iYXNlbGluZSB7XG4gIEBpbmNsdWRlIGFkanVzdC1sZWFkaW5nLXRvKDEsIGlmKCRyZWxhdGl2ZS1mb250LXNpemluZywgJGJhc2UtZm9udC1zaXplLCAkYmFzZS1mb250LXNpemUpKTtcbn1cblxuLy8gU2hvdyBhIGJhY2tncm91bmQgaW1hZ2UgdGhhdCBjYW4gYmUgdXNlZCB0byBkZWJ1ZyB5b3VyIGFsaWdubWVudHMuXG4vLyBJbmNsdWRlIHRoZSAkaW1nIGFyZ3VtZW50IGlmIHlvdSB3b3VsZCByYXRoZXIgdXNlIHlvdXIgb3duIGltYWdlIHRoYW4gdGhlXG4vLyBDb21wYXNzIGRlZmF1bHQgZ3JhZGllbnQgaW1hZ2UuXG5AbWl4aW4gZGVidWctdmVydGljYWwtYWxpZ25tZW50KCRpbWc6IGZhbHNlKSB7XG4gIEBpZiAkaW1nIHtcbiAgICBiYWNrZ3JvdW5kOiBpbWFnZS11cmwoJGltZyk7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIGJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZCgkYmFzZS1yaHl0aG0tdW5pdCk7XG4gIH1cbn1cblxuLy8gQWRqdXN0IGEgYmxvY2sgdG8gaGF2ZSBhIGRpZmZlcmVudCBmb250IHNpemUgYW5kIGxpbmUgaGVpZ2h0IHRvIG1haW50YWluIHRoZVxuLy8gcmh5dGhtLiAkbGluZXMgc3BlY2lmaWVzIGhvdyBtYW55IG11bHRpcGxlcyBvZiB0aGUgYmFzZWxpbmUgcmh5dGhtIGVhY2ggbGluZVxuLy8gb2YgdGhpcyBmb250IHNob3VsZCB1c2UgdXAuIEl0IGRvZXMgbm90IGhhdmUgdG8gYmUgYW4gaW50ZWdlciwgYnV0IGl0XG4vLyBkZWZhdWx0cyB0byB0aGUgc21hbGxlc3QgaW50ZWdlciB0aGF0IGlzIGxhcmdlIGVub3VnaCB0byBmaXQgdGhlIGZvbnQuXG4vLyBVc2UgJGZyb20tc2l6ZSB0byBhZGp1c3QgZnJvbSBhIGZvbnQtc2l6ZSBvdGhlciB0aGFuIHRoZSBiYXNlIGZvbnQtc2l6ZS5cbkBtaXhpbiBhZGp1c3QtZm9udC1zaXplLXRvKCR0by1zaXplLCAkbGluZXM6IGxpbmVzLWZvci1mb250LXNpemUoJHRvLXNpemUpLCAkZnJvbS1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgQGlmIG5vdCgkcmVsYXRpdmUtZm9udC1zaXppbmcpIGFuZCAkZnJvbS1zaXplICE9ICRiYXNlLWZvbnQtc2l6ZSB7XG4gICAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgZmFsc2UgYnV0IGEgcmVsYXRpdmUgZm9udCBzaXplIHdhcyBwYXNzZWQgdG8gYWRqdXN0LWZvbnQtc2l6ZS10b1wiO1xuICB9XG4gIGZvbnQtc2l6ZTogJGZvbnQtdW5pdCAqICR0by1zaXplIC8gJGZyb20tc2l6ZTtcbiAgQGluY2x1ZGUgYWRqdXN0LWxlYWRpbmctdG8oJGxpbmVzLCBpZigkcmVsYXRpdmUtZm9udC1zaXppbmcsICR0by1zaXplLCAkYmFzZS1mb250LXNpemUpKTtcbn1cblxuLy8gQWRqdXN0IGEgYmxvY2sgdG8gaGF2ZSBkaWZmZXJlbnQgbGluZSBoZWlnaHQgdG8gbWFpbnRhaW4gdGhlIHJoeXRobS5cbi8vICRsaW5lcyBzcGVjaWZpZXMgaG93IG1hbnkgbXVsdGlwbGVzIG9mIHRoZSBiYXNlbGluZSByaHl0aG0gZWFjaCBsaW5lIG9mIHRoaXNcbi8vIGZvbnQgc2hvdWxkIHVzZSB1cC4gSXQgZG9lcyBub3QgaGF2ZSB0byBiZSBhbiBpbnRlZ2VyLCBidXQgaXQgZGVmYXVsdHMgdG8gdGhlXG4vLyBzbWFsbGVzdCBpbnRlZ2VyIHRoYXQgaXMgbGFyZ2UgZW5vdWdoIHRvIGZpdCB0aGUgZm9udC5cbkBtaXhpbiBhZGp1c3QtbGVhZGluZy10bygkbGluZXMsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSkge1xuICBsaW5lLWhlaWdodDogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIENhbGN1bGF0ZSByaHl0aG0gdW5pdHMuXG5AZnVuY3Rpb24gcmh5dGhtKFxuICAkbGluZXM6IDEsXG4gICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSxcbiAgJG9mZnNldDogMFxuKSB7XG4gIEBpZiBub3QoJHJlbGF0aXZlLWZvbnQtc2l6aW5nKSBhbmQgJGZvbnQtc2l6ZSAhPSAkYmFzZS1mb250LXNpemUge1xuICAgIEB3YXJuIFwiJHJlbGF0aXZlLWZvbnQtc2l6aW5nIGlzIGZhbHNlIGJ1dCBhIHJlbGF0aXZlIGZvbnQgc2l6ZSB3YXMgcGFzc2VkIHRvIHRoZSByaHl0aG0gZnVuY3Rpb25cIjtcbiAgfVxuICAkcmh5dGhtOiAkZm9udC11bml0ICogKCRsaW5lcyAqICRiYXNlLWxpbmUtaGVpZ2h0IC0gJG9mZnNldCkgLyAkZm9udC1zaXplO1xuICAvLyBSb3VuZCB0aGUgcGl4ZWxzIGRvd24gdG8gbmVhcmVzdCBpbnRlZ2VyLlxuICBAaWYgdW5pdCgkcmh5dGhtKSA9PSBweCB7XG4gICAgJHJoeXRobTogZmxvb3IoJHJoeXRobSk7XG4gIH1cbiAgQHJldHVybiAkcmh5dGhtO1xufVxuXG4vLyBDYWxjdWxhdGUgdGhlIG1pbmltdW0gbXVsdGlwbGUgb2Ygcmh5dGhtIHVuaXRzIG5lZWRlZCB0byBjb250YWluIHRoZSBmb250LXNpemUuXG5AZnVuY3Rpb24gbGluZXMtZm9yLWZvbnQtc2l6ZSgkZm9udC1zaXplKSB7XG4gICRsaW5lczogaWYoJHJvdW5kLXRvLW5lYXJlc3QtaGFsZi1saW5lLFxuICAgICAgICAgICAgICBjZWlsKDIgKiAkZm9udC1zaXplIC8gJGJhc2UtbGluZS1oZWlnaHQpIC8gMixcbiAgICAgICAgICAgICAgY2VpbCgkZm9udC1zaXplIC8gJGJhc2UtbGluZS1oZWlnaHQpKTtcbiAgQGlmICRsaW5lcyAqICRiYXNlLWxpbmUtaGVpZ2h0IC0gJGZvbnQtc2l6ZSA8ICRtaW4tbGluZS1wYWRkaW5nICogMiB7XG4gICAgJGxpbmVzOiAkbGluZXMgKyBpZigkcm91bmQtdG8tbmVhcmVzdC1oYWxmLWxpbmUsIDAuNSwgMSk7XG4gIH1cbiAgQHJldHVybiAkbGluZXM7XG59XG5cbi8vIEFwcGx5IGxlYWRpbmcgd2hpdGVzcGFjZS4gVGhlICRwcm9wZXJ0eSBjYW4gYmUgbWFyZ2luIG9yIHBhZGRpbmcuXG5AbWl4aW4gbGVhZGVyKCRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkcHJvcGVydHk6IG1hcmdpbikge1xuICAjeyRwcm9wZXJ0eX0tdG9wOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gQXBwbHkgbGVhZGluZyB3aGl0ZXNwYWNlIGFzIHBhZGRpbmcuXG5AbWl4aW4gcGFkZGluZy1sZWFkZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgcGFkZGluZy10b3A6IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpO1xufVxuXG4vLyBBcHBseSBsZWFkaW5nIHdoaXRlc3BhY2UgYXMgbWFyZ2luLlxuQG1peGluIG1hcmdpbi1sZWFkZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgbWFyZ2luLXRvcDogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIEFwcGx5IHRyYWlsaW5nIHdoaXRlc3BhY2UuIFRoZSAkcHJvcGVydHkgY2FuIGJlIG1hcmdpbiBvciBwYWRkaW5nLlxuQG1peGluIHRyYWlsZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRwcm9wZXJ0eTogbWFyZ2luKSB7XG4gICN7JHByb3BlcnR5fS1ib3R0b206IHJoeXRobSgkbGluZXMsICRmb250LXNpemUpO1xufVxuXG4vLyBBcHBseSB0cmFpbGluZyB3aGl0ZXNwYWNlIGFzIHBhZGRpbmcuXG5AbWl4aW4gcGFkZGluZy10cmFpbGVyKCRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplKSB7XG4gIHBhZGRpbmctYm90dG9tOiByaHl0aG0oJGxpbmVzLCAkZm9udC1zaXplKTtcbn1cblxuLy8gQXBwbHkgdHJhaWxpbmcgd2hpdGVzcGFjZSBhcyBtYXJnaW4uXG5AbWl4aW4gbWFyZ2luLXRyYWlsZXIoJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgbWFyZ2luLWJvdHRvbTogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSk7XG59XG5cbi8vIFNob3J0aGFuZCBtaXhpbiB0byBhcHBseSB3aGl0ZXNwYWNlIGZvciB0b3AgYW5kIGJvdHRvbSBtYXJnaW5zIGFuZCBwYWRkaW5nLlxuQG1peGluIHJoeXRobSgkbGVhZGVyOiAwLCAkcGFkZGluZy1sZWFkZXI6IDAsICRwYWRkaW5nLXRyYWlsZXI6IDAsICR0cmFpbGVyOiAwLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUpIHtcbiAgQGluY2x1ZGUgbGVhZGVyKCRsZWFkZXIsICRmb250LXNpemUpO1xuICBAaW5jbHVkZSBwYWRkaW5nLWxlYWRlcigkcGFkZGluZy1sZWFkZXIsICRmb250LXNpemUpO1xuICBAaW5jbHVkZSBwYWRkaW5nLXRyYWlsZXIoJHBhZGRpbmctdHJhaWxlciwgJGZvbnQtc2l6ZSk7XG4gIEBpbmNsdWRlIHRyYWlsZXIoJHRyYWlsZXIsICRmb250LXNpemUpO1xufVxuXG4vLyBBcHBseSBhIGJvcmRlciBhbmQgd2hpdGVzcGFjZSB0byBhbnkgc2lkZSB3aXRob3V0IGRlc3Ryb3lpbmcgdGhlIHZlcnRpY2FsXG4vLyByaHl0aG0uIFRoZSB3aGl0ZXNwYWNlIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSB3aWR0aCBvZiB0aGUgYm9yZGVyLlxuQG1peGluIGFwcGx5LXNpZGUtcmh5dGhtLWJvcmRlcigkc2lkZSwgJHdpZHRoOiAxcHgsICRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXN0eWxlKSB7XG4gIEBpZiBub3QoJHJlbGF0aXZlLWZvbnQtc2l6aW5nKSBhbmQgJGZvbnQtc2l6ZSAhPSAkYmFzZS1mb250LXNpemUge1xuICAgIEB3YXJuIFwiJHJlbGF0aXZlLWZvbnQtc2l6aW5nIGlzIGZhbHNlIGJ1dCBhIHJlbGF0aXZlIGZvbnQgc2l6ZSB3YXMgcGFzc2VkIHRvIGFwcGx5LXNpZGUtcmh5dGhtLWJvcmRlclwiO1xuICB9XG4gIGJvcmRlci0jeyRzaWRlfS1zdHlsZTogJGJvcmRlci1zdHlsZTtcbiAgYm9yZGVyLSN7JHNpZGV9LXdpZHRoOiAkZm9udC11bml0ICogJHdpZHRoIC8gJGZvbnQtc2l6ZTtcbiAgcGFkZGluZy0jeyRzaWRlfTogcmh5dGhtKCRsaW5lcywgJGZvbnQtc2l6ZSwgJG9mZnNldDogJHdpZHRoKTtcbn1cblxuLy8gQXBwbHkgYm9yZGVycyBhbmQgd2hpdGVzcGFjZSBlcXVhbGx5IHRvIGFsbCBzaWRlcy5cbkBtaXhpbiByaHl0aG0tYm9yZGVycygkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGlmIG5vdCgkcmVsYXRpdmUtZm9udC1zaXppbmcpIGFuZCAkZm9udC1zaXplICE9ICRiYXNlLWZvbnQtc2l6ZSB7XG4gICAgQHdhcm4gXCIkcmVsYXRpdmUtZm9udC1zaXppbmcgaXMgZmFsc2UgYnV0IGEgcmVsYXRpdmUgZm9udCBzaXplIHdhcyBwYXNzZWQgdG8gcmh5dGhtLWJvcmRlcnNcIjtcbiAgfVxuICBib3JkZXI6IHtcbiAgICBzdHlsZTogJGJvcmRlci1zdHlsZTtcbiAgICB3aWR0aDogJGZvbnQtdW5pdCAqICR3aWR0aCAvICRmb250LXNpemU7XG4gIH07XG4gIHBhZGRpbmc6IHJoeXRobSgkbGluZXMsICRmb250LXNpemUsICRvZmZzZXQ6ICR3aWR0aCk7XG59XG5cbi8vIEFwcGx5IGEgbGVhZGluZyBib3JkZXIuXG5AbWl4aW4gbGVhZGluZy1ib3JkZXIoJHdpZHRoOiAxcHgsICRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXN0eWxlKSB7XG4gIEBpbmNsdWRlIGFwcGx5LXNpZGUtcmh5dGhtLWJvcmRlcih0b3AsICR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTtcbn1cblxuLy8gQXBwbHkgYSB0cmFpbGluZyBib3JkZXIuXG5AbWl4aW4gdHJhaWxpbmctYm9yZGVyKCR3aWR0aDogMXB4LCAkbGluZXM6IDEsICRmb250LXNpemU6ICRiYXNlLWZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZTogJGRlZmF1bHQtcmh5dGhtLWJvcmRlci1zdHlsZSkge1xuICBAaW5jbHVkZSBhcHBseS1zaWRlLXJoeXRobS1ib3JkZXIoYm90dG9tLCAkd2lkdGgsICRsaW5lcywgJGZvbnQtc2l6ZSwgJGJvcmRlci1zdHlsZSk7XG59XG5cbi8vIEFwcGx5IGJvdGggbGVhZGluZyBhbmQgdHJhaWxpbmcgYm9yZGVycy5cbkBtaXhpbiBob3Jpem9udGFsLWJvcmRlcnMoJHdpZHRoOiAxcHgsICRsaW5lczogMSwgJGZvbnQtc2l6ZTogJGJhc2UtZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlOiAkZGVmYXVsdC1yaHl0aG0tYm9yZGVyLXN0eWxlKSB7XG4gIEBpbmNsdWRlIGxlYWRpbmctYm9yZGVyKCR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTtcbiAgQGluY2x1ZGUgdHJhaWxpbmctYm9yZGVyKCR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTtcbn1cblxuLy8gQWxpYXMgZm9yIGBob3Jpem9udGFsLWJvcmRlcnNgIG1peGluLlxuQG1peGluIGgtYm9yZGVycygkd2lkdGg6IDFweCwgJGxpbmVzOiAxLCAkZm9udC1zaXplOiAkYmFzZS1mb250LXNpemUsICRib3JkZXItc3R5bGU6ICRkZWZhdWx0LXJoeXRobS1ib3JkZXItc3R5bGUpIHtcbiAgQGluY2x1ZGUgaG9yaXpvbnRhbC1ib3JkZXJzKCR3aWR0aCwgJGxpbmVzLCAkZm9udC1zaXplLCAkYm9yZGVyLXN0eWxlKTtcbn1cbiIsIkBpbXBvcnQgXCIuLi9jc3MzL2ltYWdlc1wiO1xuQGltcG9ydCBcIi4uL2NzczMvYmFja2dyb3VuZC1zaXplXCI7XG5cbi8vIFNldCB0aGUgY29sb3Igb2YgeW91ciBjb2x1bW5zXG4kZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvciAgICAgOiByZ2JhKDEwMCwgMTAwLCAyMjUsIDAuMjUpICAgIWRlZmF1bHQ7XG4vLyBTZXQgdGhlIGNvbG9yIG9mIHlvdXIgZ3V0dGVyc1xuJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3IgICAgIDogcmdiYSgwLCAwLCAwLCAwKSAgICAgICAgICAgICFkZWZhdWx0O1xuXG4vLyBTZXQgdGhlIHRvdGFsIG51bWJlciBvZiBjb2x1bW5zIGluIHlvdXIgZ3JpZFxuJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zICAgIDogMjQgICAgICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gU2V0IHRoZSB3aWR0aCBvZiB5b3VyIGNvbHVtbnNcbiRncmlkLWJhY2tncm91bmQtY29sdW1uLXdpZHRoICAgICA6IDMwcHggICAgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFNldCB0aGUgd2lkdGggb2YgeW91ciBndXR0ZXJzXG4kZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci13aWR0aCAgICAgOiAxMHB4ICAgICAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyBTZXQgdGhlIG9mZnNldCwgaWYgeW91ciBjb2x1bW5zIGFyZSBwYWRkZWQgaW4gZnJvbSB0aGUgY29udGFpbmVyIGVkZ2VcbiRncmlkLWJhY2tncm91bmQtb2Zmc2V0ICAgICAgICAgICA6IDBweCAgICAgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSBjb2xvciBvZiB5b3VyIGJhc2VsaW5lXG4kZ3JpZC1iYWNrZ3JvdW5kLWJhc2VsaW5lLWNvbG9yICAgOiByZ2JhKDAsIDAsIDAsIDAuNSkgICAgICAgICAgIWRlZmF1bHQ7XG4vLyBTZXQgdGhlIGhlaWdodCBvZiB5b3VyIGJhc2VsaW5lIGdyaWRcbiRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtaGVpZ2h0ICA6IDEuNWVtICAgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcblxuLy8gdG9nZ2xlIHlvdXIgY29sdW1ucyBncmlkcyBvbiBhbmQgb2ZmXG4kc2hvdy1jb2x1bW4tZ3JpZC1iYWNrZ3JvdW5kcyAgICAgOiB0cnVlICAgICAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyB0b2dnbGUgeW91ciB2ZXJ0aWNhbCBncmlkcyBvbiBhbmQgb2ZmXG4kc2hvdy1iYXNlbGluZS1ncmlkLWJhY2tncm91bmRzICAgOiB0cnVlICAgICAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyB0b2dnbGUgYWxsIHlvdXIgZ3JpZHMgb24gYW5kIG9mZlxuJHNob3ctZ3JpZC1iYWNrZ3JvdW5kcyAgICAgICAgICAgIDogdHJ1ZSAgICAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG4vLyBvcHRpb25hbGx5IGZvcmNlIHlvdXIgZ3JpZC1pbWFnZSB0byByZW1haW4gZmx1aWRcbi8vIG5vIG1hdHRlciB3aGF0IHVuaXRzIHlvdSB1c2VkIHRvIGRlY2xhcmVkIHlvdXIgZ3JpZC5cbiRncmlkLWJhY2tncm91bmQtZm9yY2UtZmx1aWQgICAgICA6IGZhbHNlICAgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcblxuXG4vLyBDcmVhdGUgdGhlIGdyYWRpZW50IG5lZWRlZCBmb3IgYmFzZWxpbmUgZ3JpZHNcbkBmdW5jdGlvbiBnZXQtYmFzZWxpbmUtZ3JhZGllbnQoXG4gICRjb2xvciA6ICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3Jcbikge1xuICAkZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudChib3R0b20sICRjb2xvciA1JSwgcmdiYSgkY29sb3IsMCkgNSUpO1xuICBAcmV0dXJuICRncmFkaWVudDtcbn1cblxuLy8gQ3JlYXRlIHRoZSBjb2xvci1zdG9wcyBuZWVkZWQgZm9yIGhvcml6b250YWwgZ3JpZHNcbkBmdW5jdGlvbiBidWlsZC1ncmlkLWJhY2tncm91bmQoXG4gICR0b3RhbCAgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtdG90YWwtY29sdW1ucyxcbiAgJGNvbHVtbiAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4td2lkdGgsXG4gICRndXR0ZXIgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoLFxuICAkb2Zmc2V0ICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLW9mZnNldCxcbiAgJGNvbHVtbi1jb2xvciAgIDogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4tY29sb3IsXG4gICRndXR0ZXItY29sb3IgICA6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLWNvbG9yXG4pIHtcbiAgJGdyaWQ6IGNvbXBhY3QoKTtcbiAgJGdyaWQ6IGFwcGVuZCgkZ3JpZCwgJGd1dHRlci1jb2xvciAkb2Zmc2V0LCBjb21tYSk7XG4gIEBmb3IgJGkgZnJvbSAwIHRvICR0b3RhbCB7XG5cbiAgICAvLyAkYSByZXByZXNlbnRzIHRoZSBzdGFydCBvZiB0aGlzIGNvbHVtbiwgaW5pdGlhbGx5IGVxdWFsIHRvIHRoZSBvZmZzZXRcbiAgICAkYTogJG9mZnNldDtcbiAgICBAaWYgJGkgPiAwIHsgJGE6ICRhICsgKCgkY29sdW1uICsgJGd1dHRlcikgKiAkaSk7IH1cblxuICAgIC8vICRnIHJlcHJlc2VudHMgdGhlIHN0YXJ0IG9mIHRoaXMgZ3V0dGVyLCBlcXVhbCB0byAkYSBwbHVzIG9uZSBjb2x1bW4td2lkdGhcbiAgICAkZzogJGEgKyAkY29sdW1uO1xuXG4gICAgLy8gJHogcmVwcmVzZW50cyB0aGUgZW5kIG9mIGEgZ3V0dGVyLCBlcXVhbCB0byAkZyBwbHVzIG9uZSBndXR0ZXItd2lkdGhcbiAgICAkejogJGcgKyAkZ3V0dGVyO1xuXG4gICAgQGlmICh1bml0KCRhKSA9PSBcIiVcIikgYW5kICgkaSA9PSAoJHRvdGFsIC0gMSkpIHtcbiAgICAgICR6OiAxMDAlO1xuICAgIH1cblxuICAgIC8vIGFuZCB3ZSBhZGQgdGhpcyBjb2x1bW4vZ3V0dGVyIHBhaXIgdG8gb3VyIGdyaWRcbiAgICAkZ3JpZDogam9pbigkZ3JpZCwgKCRjb2x1bW4tY29sb3IgJGEsICRjb2x1bW4tY29sb3IgJGcsICRndXR0ZXItY29sb3IgJGcsICRndXR0ZXItY29sb3IgJHopKTtcbiAgfVxuXG4gIEByZXR1cm4gJGdyaWQ7XG59XG5cbi8vIFJldHVybiB0aGUgZ3JhZGllbnQgbmVlZGVkIGZvciBob3Jpem9udGFsIGdyaWRzXG5AZnVuY3Rpb24gZ2V0LWNvbHVtbi1ncmFkaWVudChcbiAgJHRvdGFsICAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zLFxuICAkY29sdW1uICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aCxcbiAgJGd1dHRlciAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItd2lkdGgsXG4gICRvZmZzZXQgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LFxuICAkY29sdW1uLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvcixcbiAgJGd1dHRlci1jb2xvciAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3IsXG4gICRmb3JjZS1mbHVpZCAgICA6ICRncmlkLWJhY2tncm91bmQtZm9yY2UtZmx1aWRcbikge1xuICAkZ3JpZDogdW5xdW90ZShcIlwiKTtcblxuICAvLyBkb24ndCBmb3JjZSBmbHVpZCBncmlkcyB3aGVuIHRoZXkgYXJlIGFscmVhZHkgZmx1aWQuXG4gIEBpZiB1bml0KCRjb2x1bW4pID09IFwiJVwiIHsgJGZvcmNlLWZsdWlkOiBmYWxzZTsgfVxuXG4gIEBpZiAkZm9yY2UtZmx1aWQge1xuICAgICRncmlkOiBnZXQtY29sdW1uLWZsdWlkLWdyaWQoJHRvdGFsLCRjb2x1bW4sJGd1dHRlciwkb2Zmc2V0LCRjb2x1bW4tY29sb3IsJGd1dHRlci1jb2xvcik7XG4gIH0gQGVsc2Uge1xuICAgICRncmlkOiBidWlsZC1ncmlkLWJhY2tncm91bmQoJHRvdGFsLCRjb2x1bW4sJGd1dHRlciwkb2Zmc2V0LCRjb2x1bW4tY29sb3IsJGd1dHRlci1jb2xvcik7XG4gIH1cblxuICAvLyByZXR1cm4gdGhlIGhvcml6b250YWwgZ3JpZCBhcyBhIGdyYWRpZW50XG4gICRncmFkaWVudDogbGluZWFyLWdyYWRpZW50KGxlZnQsICRncmlkKTtcbiAgQHJldHVybiAkZ3JhZGllbnQ7XG59XG5cbi8vIENvbnZlcnQgYSBncmlkIGZyb20gZml4ZWQgdW5pdHMgaW50byBwZXJjZW50YWdlcy5cbkBmdW5jdGlvbiBnZXQtY29sdW1uLWZsdWlkLWdyaWQoXG4gICR0b3RhbCAgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtdG90YWwtY29sdW1ucyxcbiAgJGNvbHVtbiAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4td2lkdGgsXG4gICRndXR0ZXIgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLXdpZHRoLFxuICAkb2Zmc2V0ICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLW9mZnNldCxcbiAgJGNvbHVtbi1jb2xvciAgIDogJGdyaWQtYmFja2dyb3VuZC1jb2x1bW4tY29sb3IsXG4gICRndXR0ZXItY29sb3IgICA6ICRncmlkLWJhY2tncm91bmQtZ3V0dGVyLWNvbG9yXG4pIHtcbiAgJGNvbnRleHQ6ICgkY29sdW1uICogJHRvdGFsKSArICgkZ3V0dGVyICogKCR0b3RhbCAtIDEpICsgKCRvZmZzZXQgKiAyKSk7XG4gICRvZmZzZXQ6ICRvZmZzZXQgLyAkY29udGV4dCAqIDEwMCU7XG4gICRjb2x1bW46ICRjb2x1bW4gLyAkY29udGV4dCAqIDEwMCU7XG4gICRndXR0ZXI6ICRndXR0ZXIgLyAkY29udGV4dCAqIDEwMCU7XG5cbiAgLy8gcmV0dXJuIHRoZSBob3Jpem9udGFsIGdyaWQgYXMgYSBzZXQgb2YgY29sb3Itc3RvcHNcbiAgJGdyaWQ6IGJ1aWxkLWdyaWQtYmFja2dyb3VuZCgkdG90YWwsJGNvbHVtbiwkZ3V0dGVyLCRvZmZzZXQsJGNvbHVtbi1jb2xvciwkZ3V0dGVyLWNvbG9yKTtcbiAgQHJldHVybiAkZ3JpZDtcbn1cblxuXG4vLyBBZGQganVzdCB0aGUgYmFzZWxpbmUgZ3JpZCB0byBhbiBlbGVtZW50J3MgYmFja2dyb3VuZFxuQG1peGluIGJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZChcbiAgJGJhc2VsaW5lIDogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1oZWlnaHQsXG4gICRjb2xvciAgICA6ICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3Jcbikge1xuICBAaWYgJHNob3ctZ3JpZC1iYWNrZ3JvdW5kcyBhbmQgJHNob3ctYmFzZWxpbmUtZ3JpZC1iYWNrZ3JvdW5kcyB7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1pbWFnZShnZXQtYmFzZWxpbmUtZ3JhZGllbnQoJGNvbG9yKSk7XG4gICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKDEwMCUgJGJhc2VsaW5lKTtcbiAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBsZWZ0IHRvcDtcbiAgfVxufVxuXG4vLyBBZGQganVzdCB0aGUgaG9yaXpvbnRhbCBncmlkIHRvIGFuIGVsZW1lbnQncyBiYWNrZ3JvdW5kXG5AbWl4aW4gY29sdW1uLWdyaWQtYmFja2dyb3VuZChcbiAgJHRvdGFsICAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC10b3RhbC1jb2x1bW5zLFxuICAkY29sdW1uICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi13aWR0aCxcbiAgJGd1dHRlciAgICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItd2lkdGgsXG4gICRvZmZzZXQgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LFxuICAkY29sdW1uLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvcixcbiAgJGd1dHRlci1jb2xvciAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3IsXG4gICRmb3JjZS1mbHVpZCAgICA6ICRncmlkLWJhY2tncm91bmQtZm9yY2UtZmx1aWRcbikge1xuICBAaWYgJHNob3ctZ3JpZC1iYWNrZ3JvdW5kcyBhbmQgJHNob3ctY29sdW1uLWdyaWQtYmFja2dyb3VuZHMge1xuICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoXG4gICAgICBnZXQtY29sdW1uLWdyYWRpZW50KCR0b3RhbCwkY29sdW1uLCRndXR0ZXIsJG9mZnNldCwkY29sdW1uLWNvbG9yLCRndXR0ZXItY29sb3IsICRmb3JjZS1mbHVpZClcbiAgICApO1xuICAgIGJhY2tncm91bmQtcG9zaXRpb246IGxlZnQgdG9wO1xuICB9XG59XG5cbi8vIEFkZCBib3RoIGhvcml6b250YWwgYW5kIGJhc2VsaW5lIGdyaWRzIHRvIGFuIGVsZW1lbnQncyBiYWNrZ3JvdW5kXG5AbWl4aW4gZ3JpZC1iYWNrZ3JvdW5kKFxuICAkdG90YWwgICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLXRvdGFsLWNvbHVtbnMsXG4gICRjb2x1bW4gICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtY29sdW1uLXdpZHRoLFxuICAkZ3V0dGVyICAgICAgICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWd1dHRlci13aWR0aCxcbiAgJGJhc2VsaW5lICAgICAgIDogJGdyaWQtYmFja2dyb3VuZC1iYXNlbGluZS1oZWlnaHQsXG4gICRvZmZzZXQgICAgICAgICA6ICRncmlkLWJhY2tncm91bmQtb2Zmc2V0LFxuICAkY29sdW1uLWNvbG9yICAgOiAkZ3JpZC1iYWNrZ3JvdW5kLWNvbHVtbi1jb2xvcixcbiAgJGd1dHRlci1jb2xvciAgIDogJGdyaWQtYmFja2dyb3VuZC1ndXR0ZXItY29sb3IsXG4gICRiYXNlbGluZS1jb2xvciA6ICRncmlkLWJhY2tncm91bmQtYmFzZWxpbmUtY29sb3IsXG4gICRmb3JjZS1mbHVpZCAgICA6ICRncmlkLWJhY2tncm91bmQtZm9yY2UtZmx1aWRcbikge1xuICBAaWYgJHNob3ctZ3JpZC1iYWNrZ3JvdW5kcyB7XG4gICAgQGlmICRzaG93LWJhc2VsaW5lLWdyaWQtYmFja2dyb3VuZHMgYW5kICRzaG93LWNvbHVtbi1ncmlkLWJhY2tncm91bmRzIHtcbiAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtaW1hZ2UoXG4gICAgICAgIGdldC1iYXNlbGluZS1ncmFkaWVudCgkYmFzZWxpbmUtY29sb3IpLFxuICAgICAgICBnZXQtY29sdW1uLWdyYWRpZW50KCR0b3RhbCwkY29sdW1uLCRndXR0ZXIsJG9mZnNldCwkY29sdW1uLWNvbG9yLCRndXR0ZXItY29sb3IsICRmb3JjZS1mbHVpZClcbiAgICAgICk7XG4gICAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoMTAwJSAkYmFzZWxpbmUsIGF1dG8pO1xuICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjogbGVmdCB0b3A7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBiYXNlbGluZS1ncmlkLWJhY2tncm91bmQoJGJhc2VsaW5lLCAkYmFzZWxpbmUtY29sb3IpO1xuICAgICAgQGluY2x1ZGUgY29sdW1uLWdyaWQtYmFja2dyb3VuZCgkdG90YWwsJGNvbHVtbiwkZ3V0dGVyLCRvZmZzZXQsJGNvbHVtbi1jb2xvciwkZ3V0dGVyLWNvbG9yLCAkZm9yY2UtZmx1aWQpO1xuICAgIH1cbiAgfVxufVxuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuQGltcG9ydCBcIi4uL3V0aWxpdGllcy9nZW5lcmFsL2hhY2tzXCI7XG5AaW1wb3J0IFwiLi4vZnVuY3Rpb25zXCI7XG5cbi8vIEJhY2tncm91bmQgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGJhY2tncm91bmQoXG4gICRiYWNrZ3JvdW5kLTEsXG4gICRiYWNrZ3JvdW5kLTI6IGZhbHNlLFxuICAkYmFja2dyb3VuZC0zOiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNDogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTU6IGZhbHNlLFxuICAkYmFja2dyb3VuZC02OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNzogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTg6IGZhbHNlLFxuICAkYmFja2dyb3VuZC05OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtMTA6IGZhbHNlXG4pIHtcbiAgJGJhY2tncm91bmRzOiBjb21wYWN0KCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTIsICRiYWNrZ3JvdW5kLTMsICRiYWNrZ3JvdW5kLTQsICRiYWNrZ3JvdW5kLTUsXG4gICAgICAgICAgICAgICAgICAgICAgICAkYmFja2dyb3VuZC02LCAkYmFja2dyb3VuZC03LCAkYmFja2dyb3VuZC04LCAkYmFja2dyb3VuZC05LCAkYmFja2dyb3VuZC0xMCk7XG4gICRtdWx0LWJnczogLWNvbXBhc3MtbGlzdC1zaXplKCRiYWNrZ3JvdW5kcykgPiAxO1xuICAkYWRkLXBpZS1iZzogcHJlZml4ZWQoLXBpZSwgICAkYmFja2dyb3VuZHMpIG9yICRtdWx0LWJncztcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIGFuZCBwcmVmaXhlZCgtc3ZnLCAgICAkYmFja2dyb3VuZHMpIHsgICAgICBiYWNrZ3JvdW5kOiAgICAtc3ZnKCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAgICAkYmFja2dyb3VuZHMpIHsgICAgICBiYWNrZ3JvdW5kOiAgICAtb3dnKCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkYmFja2dyb3VuZHMpIHsgICAgICBiYWNrZ3JvdW5kOiAtd2Via2l0KCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIGFuZCBwcmVmaXhlZCgtbW96LCAgICAkYmFja2dyb3VuZHMpIHsgICAgICBiYWNrZ3JvdW5kOiAgICAtbW96KCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIGFuZCBwcmVmaXhlZCgtbywgICAgICAkYmFja2dyb3VuZHMpIHsgICAgICBiYWNrZ3JvdW5kOiAgICAgIC1vKCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIGFuZCAkYWRkLXBpZS1iZyAgICAgICAgICAgICAgICAgICAgIHsgLXBpZS1iYWNrZ3JvdW5kOiAgICAtcGllKCRiYWNrZ3JvdW5kcyk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAgICAgICAgICRiYWNrZ3JvdW5kcyA7XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLXdpdGgtY3NzMi1mYWxsYmFjayhcbiAgJGJhY2tncm91bmQtMSxcbiAgJGJhY2tncm91bmQtMjogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTM6IGZhbHNlLFxuICAkYmFja2dyb3VuZC00OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNTogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTY6IGZhbHNlLFxuICAkYmFja2dyb3VuZC03OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtODogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTk6IGZhbHNlLFxuICAkYmFja2dyb3VuZC0xMDogZmFsc2Vcbikge1xuICAkYmFja2dyb3VuZHM6IGNvbXBhY3QoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICRiYWNrZ3JvdW5kLTYsICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsICRiYWNrZ3JvdW5kLTksICRiYWNrZ3JvdW5kLTEwKTtcbiAgJG11bHQtYmdzOiAtY29tcGFzcy1saXN0LXNpemUoJGJhY2tncm91bmRzKSA+IDE7XG4gICRzaW1wbGUtYmFja2dyb3VuZDogaWYoJG11bHQtYmdzIG9yIHByZWZpeGVkKC1jc3MyLCAkYmFja2dyb3VuZHMpLCAtY3NzMigtY29tcGFzcy1udGgoJGJhY2tncm91bmRzLCBsYXN0KSksIGZhbHNlKTtcbiAgQGlmIG5vdChibGFuaygkc2ltcGxlLWJhY2tncm91bmQpKSB7IGJhY2tncm91bmQ6ICRzaW1wbGUtYmFja2dyb3VuZDsgfVxuICBAaW5jbHVkZSBiYWNrZ3JvdW5kKCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTIsICRiYWNrZ3JvdW5kLTMsICRiYWNrZ3JvdW5kLTQsICRiYWNrZ3JvdW5kLTUsXG4gICAgICAgICAgICAgICAgICAgICAgJGJhY2tncm91bmQtNiwgJGJhY2tncm91bmQtNywgJGJhY2tncm91bmQtOCwgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTApO1xufVxuXG5cbi8vIEJhY2tncm91bmQgaW1hZ2UgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZS0xLFxuICAkaW1hZ2UtMjogZmFsc2UsXG4gICRpbWFnZS0zOiBmYWxzZSxcbiAgJGltYWdlLTQ6IGZhbHNlLFxuICAkaW1hZ2UtNTogZmFsc2UsXG4gICRpbWFnZS02OiBmYWxzZSxcbiAgJGltYWdlLTc6IGZhbHNlLFxuICAkaW1hZ2UtODogZmFsc2UsXG4gICRpbWFnZS05OiBmYWxzZSxcbiAgJGltYWdlLTEwOiBmYWxzZVxuKSB7XG4gICRpbWFnZXM6IGNvbXBhY3QoJGltYWdlLTEsICRpbWFnZS0yLCAkaW1hZ2UtMywgJGltYWdlLTQsICRpbWFnZS01LCAkaW1hZ2UtNiwgJGltYWdlLTcsICRpbWFnZS04LCAkaW1hZ2UtOSwgJGltYWdlLTEwKTtcbiAgJGFkZC1waWUtYmc6IHByZWZpeGVkKC1waWUsICAgJGltYWdlcykgb3IgLWNvbXBhc3MtbGlzdC1zaXplKCRpbWFnZXMpID4gMTtcblxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgYW5kIHByZWZpeGVkKC1zdmcsICAgICRpbWFnZXMpIHsgYmFja2dyb3VuZC1pbWFnZTogICAgLXN2ZygkaW1hZ2VzKTsgYmFja2dyb3VuZC1zaXplOiAxMDAlOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgICAgJGltYWdlcykgeyBiYWNrZ3JvdW5kLWltYWdlOiAgICAtb3dnKCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJGltYWdlcykgeyBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0KCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICBhbmQgcHJlZml4ZWQoLW1veiwgICAgJGltYWdlcykgeyBiYWNrZ3JvdW5kLWltYWdlOiAgICAtbW96KCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICBhbmQgcHJlZml4ZWQoLW8sICAgICAgJGltYWdlcykgeyBiYWNrZ3JvdW5kLWltYWdlOiAgICAgIC1vKCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICBhbmQgJGFkZC1waWUtYmcgICAgICAgICAgICAgICAgeyBAd2FybiBcIlBJRSBkb2VzIG5vdCBzdXBwb3J0IGJhY2tncm91bmQtaW1hZ2UuIFVzZSBAaW5jbHVkZSBiYWNrZ3JvdW5kKCN7JGltYWdlc30pIGluc3RlYWQuXCIgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogICAgICAgICAkaW1hZ2VzIDtcbn1cblxuLy8gRW1pdCBhIElFLVNwZWNpZmljIGZpbHRlcnMgdGhhdCByZW5kZXJzIGEgc2ltcGxlIGxpbmVhciBncmFkaWVudC5cbi8vIEZvciB1c2UgaW4gSUUgNiAtIDguIEJlc3QgcHJhY3RpY2Ugd291bGQgaGF2ZSB5b3UgYXBwbHkgdGhpcyB2aWEgYVxuLy8gY29uZGl0aW9uYWwgSUUgc3R5bGVzaGVldCwgYnV0IGlmIHlvdSBtdXN0LCB5b3Ugc2hvdWxkIHBsYWNlIHRoaXMgYmVmb3JlXG4vLyBhbnkgYmFja2dyb3VuZC1pbWFnZSBwcm9wZXJ0aWVzIHRoYXQgeW91IGhhdmUgc3BlY2lmaWVkLlxuLy9cbi8vIEZvciB0aGUgYCRvcmllbnRhdGlvbmAgcGFyYW1ldGVyLCB5b3UgY2FuIHBhc3MgYHZlcnRpY2FsYCBvciBgaG9yaXpvbnRhbGAuXG5AbWl4aW4gZmlsdGVyLWdyYWRpZW50KCRzdGFydC1jb2xvciwgJGVuZC1jb2xvciwgJG9yaWVudGF0aW9uOiB2ZXJ0aWNhbCkge1xuICBAaW5jbHVkZSBoYXMtbGF5b3V0O1xuICAkZ3JhZGllbnQtdHlwZTogaWYoJG9yaWVudGF0aW9uID09IHZlcnRpY2FsLCAwLCAxKTtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4IHtcbiAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChncmFkaWVudFR5cGU9I3skZ3JhZGllbnQtdHlwZX0sIHN0YXJ0Q29sb3JzdHI9JyN7aWUtaGV4LXN0cigkc3RhcnQtY29sb3IpfScsIGVuZENvbG9yc3RyPScje2llLWhleC1zdHIoJGVuZC1jb2xvcil9Jyk7XG4gIH1cbn1cblxuXG4vLyBCb3JkZXIgaW1hZ2UgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMuXG5AbWl4aW4gYm9yZGVyLWltYWdlKCR2YWx1ZSkge1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgeyAgICAtbW96LWJvcmRlci1pbWFnZTogICAgLW1veihyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIHsgLXdlYmtpdC1ib3JkZXItaW1hZ2U6ICAgIC1vd2cocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICB7IC13ZWJraXQtYm9yZGVyLWltYWdlOiAtd2Via2l0KHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgeyAgICAgIC1vLWJvcmRlci1pbWFnZTogICAgICAtbyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIHsgICAgICAgICBib3JkZXItaW1hZ2U6ICAgIC1zdmcocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWltYWdlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZTtcbn1cblxuLy8gTGlzdCBzdHlsZSBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gbGlzdC1zdHlsZS1pbWFnZSgkaW1hZ2UpIHtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIGFuZCBwcmVmaXhlZCgtbW96LCAgICAkaW1hZ2UpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLW1veigkaW1hZ2UpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgICAgJGltYWdlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgIC1vd2coJGltYWdlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgYW5kIHByZWZpeGVkKC13ZWJraXQsICRpbWFnZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAtd2Via2l0KCRpbWFnZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIGFuZCBwcmVmaXhlZCgtbywgICAgICAkaW1hZ2UpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgICAtbygkaW1hZ2UpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICBhbmQgcHJlZml4ZWQoLXN2ZywgICAgJGltYWdlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgIC1zdmcoJGltYWdlKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LXN0eWxlLWltYWdlOiAgICAgICAgICRpbWFnZSA7XG59XG5cbi8vIExpc3Qgc3R5bGUgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGxpc3Qtc3R5bGUoJHZhbHVlKSB7XG4gICR2YWx1ZTogLWNvbXBhc3MtbGlzdCgkdmFsdWUpO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgYW5kIHByZWZpeGVkKC1tb3osICAgICR2YWx1ZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtbW96KCR2YWx1ZSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAgICAkdmFsdWUpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLW93ZygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJHZhbHVlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6IC13ZWJraXQoJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgYW5kIHByZWZpeGVkKC1vLCAgICAgICR2YWx1ZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAgIC1vKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIGFuZCBwcmVmaXhlZCgtc3ZnLCAgICAkdmFsdWUpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLXN2ZygkdmFsdWUpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGUtaW1hZ2U6ICAgICAgICAgJHZhbHVlIDtcbn1cblxuLy8gY29udGVudCBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gY29udGVudCgkdmFsdWUpIHtcbiAgJHZhbHVlOiAtY29tcGFzcy1saXN0KCR2YWx1ZSk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICBhbmQgcHJlZml4ZWQoLW1veiwgICAgJHZhbHVlKSB7IGNvbnRlbnQ6ICAgIC1tb3ooJHZhbHVlKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICAgICR2YWx1ZSkgeyBjb250ZW50OiAgICAtb3dnKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkdmFsdWUpIHsgY29udGVudDogLXdlYmtpdCgkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICBhbmQgcHJlZml4ZWQoLW8sICAgICAgJHZhbHVlKSB7IGNvbnRlbnQ6ICAgICAgLW8oJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgYW5kIHByZWZpeGVkKC1zdmcsICAgICR2YWx1ZSkgeyBjb250ZW50OiAgICAtc3ZnKCR2YWx1ZSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogICAgICAgICAkdmFsdWUgO1xufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9IEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTtcbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYgeyBkaXNwbGF5OiBibG9jazsgfVxuICB9XG59XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTtcbiAgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwiZnVuY3Rpb25zL2xpc3RzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9ncmFkaWVudF9zdXBwb3J0XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbnN0YW50c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9kaXNwbGF5XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbG9yc1wiO1xuIiwiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBsaXN0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvbGlzdHMucmJcbi8vXG5cblxuLy8gY29tcGFjdCBpcyBwYXJ0IG9mIGxpYnNhc3NcblxuQGZ1bmN0aW9uIC1jb21wYXNzLW50aCgkbGlzdCwgJHBsYWNlKSB7XG4gIC8vIFllcCwgU2Fzcy1saXN0cyBhcmUgMS1pbmRleGVkLlxuICBAaWYgJHBsYWNlID09IFwiZmlyc3RcIiB7XG4gICAgJHBsYWNlOiAxO1xuICB9XG4gIEBpZiAkcGxhY2UgPT0gXCJsYXN0XCIge1xuICAgICRwbGFjZTogbGVuZ3RoKCRsaXN0KTtcbiAgfVxuICBAcmV0dXJuIG50aCgkbGlzdCwgJHBsYWNlKTtcbn1cblxuLy8gY29tcGFzc19saXN0IGNhbid0IGJlIGltcGxlbWVudGVkIGluIHNhc3Mgc2NyaXB0XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1zcGFjZS1saXN0KCRpdGVtMSwgJGl0ZW0yOm51bGwsICRpdGVtMzpudWxsLCAkaXRlbTQ6bnVsbCwgJGl0ZW01Om51bGwsICRpdGVtNjpudWxsLCAkaXRlbTc6bnVsbCwgJGl0ZW04Om51bGwsICRpdGVtOTpudWxsKSB7XG4gICRpdGVtczogKCk7XG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJGl0ZW0xKSA9PSAnbGlzdCcge1xuICAgIC8vIFBhc3NpbmcgYSBzaW5nbGUgYXJyYXkgb2YgcHJvcGVydGllcy5cbiAgICAkaXRlbXM6ICRpdGVtMTtcbiAgfSBAZWxzZSB7XG4gICAgJGl0ZW1zOiAkaXRlbTEgJGl0ZW0yICRpdGVtMyAkaXRlbTQgJGl0ZW01ICRpdGVtNiAkaXRlbTcgJGl0ZW04ICRpdGVtOTtcbiAgfVxuXG4gICRmdWxsOiBmaXJzdC12YWx1ZS1vZigkaXRlbXMpO1xuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggbGVuZ3RoKCRpdGVtcykge1xuICAgICRpdGVtOiBudGgoJGl0ZW1zLCAkaSk7XG4gICAgQGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJGZ1bGw6ICRmdWxsICRpdGVtO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGZ1bGw7XG59XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1saXN0LXNpemUoJGxpc3QpIHtcbiAgQHJldHVybiBsZW5ndGgoJGxpc3QpO1xufVxuXG5AZnVuY3Rpb24gLWNvbXBhc3Mtc2xpY2UoJGxpc3QsICRzdGFydCwgJGVuZDogZmFsc2UpIHtcbiAgQGlmICRlbmQgPT0gZmFsc2Uge1xuICAgICRlbmQ6IGxlbmd0aCgkbGlzdCk7XG4gIH1cbiAgJGZ1bGw6IG50aCgkbGlzdCwgJHN0YXJ0KTtcbiAgQGZvciAkaSBmcm9tICRzdGFydCArIDEgdGhyb3VnaCAkZW5kIHtcbiAgICAkZnVsbDogJGZ1bGwsIG50aCgkbGlzdCwgJGkpO1xuICB9XG4gIEByZXR1cm4gJGZ1bGw7XG59XG5cbkBmdW5jdGlvbiByZWplY3QoJGxpc3QsICRyZWplY3QxLCAkcmVqZWN0MjpudWxsLCAkcmVqZWN0MzpudWxsLCAkcmVqZWN0NDpudWxsLCAkcmVqZWN0NTpudWxsLCAkcmVqZWN0NjpudWxsLCAkcmVqZWN0NzpudWxsLCAkcmVqZWN0ODpudWxsLCAkcmVqZWN0OTpudWxsKSB7XG4gICRyZWplY3RzOiAkcmVqZWN0MSwgJHJlamVjdDIsICRyZWplY3QzLCAkcmVqZWN0NCwgJHJlamVjdDUsICRyZWplY3Q2LCAkcmVqZWN0NywgJHJlamVjdDgsICRyZWplY3Q5O1xuXG4gICRmdWxsOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgIEBpZiBpbmRleCgkcmVqZWN0cywgJGl0ZW0pIHt9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmICRmdWxsIHtcbiAgICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZ1bGw6ICRpdGVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuICRmdWxsO1xufVxuXG5AZnVuY3Rpb24gZmlyc3QtdmFsdWUtb2YoJGxpc3QpIHtcbiAgQHJldHVybiBudGgoJGxpc3QsIDEpO1xufVxuXG5AZnVuY3Rpb24gY29tcGFjdCgkdmFycy4uLikge1xuICAkc2VwYXJhdG9yOiBsaXN0LXNlcGFyYXRvcigkdmFycyk7XG4gICRsaXN0OiAoKTtcbiAgQGVhY2ggJHZhciBpbiAkdmFycyB7XG4gICAgICBAaWYgJHZhciB7XG4gICAgICAgICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJHZhciwgJHNlcGFyYXRvcik7XG4gICAgICB9XG4gIH1cbiAgQHJldHVybiAkbGlzdDtcbn1cbiIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNyb3NzIGJyb3dzZXIgc3VwcG9ydCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydC5yYlxuLy8gXG5cbkBmdW5jdGlvbiBwcmVmaXhlZCgkcHJlZml4LCAkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICAkcHJvcGVydGllczogJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OTtcbiAgJHByZWZpeGVkOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSAnc3RyaW5nJyB7XG4gICAgICAkcHJlZml4ZWQ6ICRwcmVmaXhlZCBvciBzdHItaW5kZXgoJGl0ZW0sICd1cmwnKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sICdyZ2InKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sICcjJykgIT0gMTtcbiAgICB9IEBlbHNlaWYgdHlwZS1vZigkaXRlbSkgPT0gJ2NvbG9yJyB7XG4gICAgfSBAZWxzZWlmICRpdGVtICE9IG51bGwge1xuICAgICAgJHByZWZpeGVkOiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuICRwcmVmaXhlZDtcbn1cblxuQGZ1bmN0aW9uIHByZWZpeCgkcHJlZml4LCAkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICAkcHJvcGVydGllczogXCJcIjtcblxuICAvLyBTdXBwb3J0IGZvciBwb2x5bW9ycGhpc20uXG4gIEBpZiB0eXBlLW9mKCRwcm9wZXJ0eTEpID09ICdsaXN0JyB7XG4gICAgLy8gUGFzc2luZyBhIHNpbmdsZSBhcnJheSBvZiBwcm9wZXJ0aWVzLlxuICAgICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxO1xuICB9IEBlbHNlIHtcbiAgICAvLyBQYXNzaW5nIG11bHRpcGxlIHByb3BlcnRpZXMuXG4gICAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTk7XG4gIH1cblxuICAkcHJvcHM6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmICRpdGVtID09IG51bGwge31cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgcHJlZml4ZWQoJHByZWZpeCwgJGl0ZW0pIHtcbiAgICAgICAgJGl0ZW06ICN7JHByZWZpeH0tI3skaXRlbX07XG4gICAgICB9XG4gICAgICBAaWYgJHByb3BzIHtcbiAgICAgICAgJHByb3BzOiAkcHJvcHMsICRpdGVtO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcHJvcHM6ICRpdGVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuICRwcm9wcztcbn1cblxuQGZ1bmN0aW9uIC1zdmcoJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1zdmcnLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC1vd2coJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1vd2cnLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC13ZWJraXQoJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy13ZWJraXQnLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC1tb3ooJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1tb3onLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC1vKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KCctbycsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLXBpZSgkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLXBpZScsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuIiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgZ3JhZGllbnQgc3VwcG9ydCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3YwLjEyLjIvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9ncmFkaWVudF9zdXBwb3J0LnJiXG4vLyBcblxuQGZ1bmN0aW9uIGNvbG9yLXN0b3BzKCRpdGVtMSwgJGl0ZW0yOm51bGwsICRpdGVtMzpudWxsLCAkaXRlbTQ6bnVsbCwgJGl0ZW01Om51bGwsICRpdGVtNjpudWxsLCAkaXRlbTc6bnVsbCwgJGl0ZW04Om51bGwsICRpdGVtOTpudWxsKSB7XG4gICRpdGVtczogJGl0ZW0yLCAkaXRlbTMsICRpdGVtNCwgJGl0ZW01LCAkaXRlbTYsICRpdGVtNywgJGl0ZW04LCAkaXRlbTk7XG4gICRmdWxsOiAkaXRlbTE7XG4gIEBlYWNoICRpdGVtIGluICRpdGVtcyB7XG4gICAgQGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTtcbiAgICB9ICAgIFxuICB9XG4gIEByZXR1cm4gJGZ1bGw7XG59IiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY29uc3RhbnRzIGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY29uc3RhbnRzLnJiXG4vLyBcblxuQGZ1bmN0aW9uIG9wcG9zaXRlLXBvc2l0aW9uKCRmcm9tKSB7XG4gICAgQGlmICgkZnJvbSA9PSB0b3ApIHtcbiAgICAgICAgQHJldHVybiBib3R0b207XG4gICAgfSBAZWxzZSBpZiAoJGZyb20gPT0gYm90dG9tKSB7XG4gICAgICAgIEByZXR1cm4gdG9wO1xuICAgIH0gQGVsc2UgaWYgKCRmcm9tID09IGxlZnQpIHtcbiAgICAgICAgQHJldHVybiByaWdodDtcbiAgICB9IEBlbHNlIGlmICgkZnJvbSA9PSByaWdodCkge1xuICAgICAgICBAcmV0dXJuIGxlZnQ7XG4gICAgfSBAZWxzZSBpZiAoJGZyb20gPT0gY2VudGVyKSB7XG4gICAgICAgIEByZXR1cm4gY2VudGVyO1xuICAgIH1cbn1cbiIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGRpc3BsYXkgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvY29yZS9saWIvY29tcGFzcy9jb3JlL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvZGlzcGxheS5yYlxuLy8gXG5cbkBmdW5jdGlvbiBlbGVtZW50cy1vZi10eXBlKCR0eXBlKXtcbiAgICBAaWYgKCR0eXBlID09IGJsb2NrKXtcbiAgICAgICAgQHJldHVybiBhZGRyZXNzLCBhcnRpY2xlLCBhc2lkZSwgYmxvY2txdW90ZSwgY2VudGVyLCBkaXIsIGRpdiwgZGQsIGRldGFpbHMsIGRsLCBkdCwgZmllbGRzZXQsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9ybSwgZm9vdGVyLCBmcmFtZXNldCwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgaHIsIGhlYWRlciwgaGdyb3VwLCBpc2luZGV4LCBtYWluLCBtZW51LCBuYXYsIG5vZnJhbWVzLCBub3NjcmlwdCwgb2wsIHAsIHByZSwgc2VjdGlvbiwgc3VtbWFyeSwgdWw7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaW5saW5lKXtcbiAgICAgICAgQHJldHVybiBhLCBhYmJyLCBhY3JvbnltLCBhdWRpbywgYiwgYmFzZWZvbnQsIGJkbywgYmlnLCBiciwgY2FudmFzLCBjaXRlLCBjb2RlLCBjb21tYW5kLCBkYXRhbGlzdCwgZGZuLCBlbSwgZW1iZWQsIGZvbnQsIGksIGltZywgaW5wdXQsIGtleWdlbiwga2JkLCBsYWJlbCwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHEsIHJwLCBydCwgcnVieSwgcywgc2FtcCwgc2VsZWN0LCBzbWFsbCwgc3Bhbiwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0ZXh0YXJlYSwgdGltZSwgdHQsIHUsIHZhciwgdmlkZW8sIHdicjtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBpbmxpbmUtYmxvY2spe1xuICAgICAgICBAcmV0dXJuIGltZztcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZSl7XG4gICAgICAgIEByZXR1cm4gdGFibGU7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gbGlzdC1pdGVtKXtcbiAgICAgICAgQHJldHVybiBsaTtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1yb3ctZ3JvdXApe1xuICAgICAgICBAcmV0dXJuIHRib2R5O1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLWhlYWRlci1ncm91cCl7XG4gICAgICAgIEByZXR1cm4gdGhlYWQ7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUtZm9vdGVyLWdyb3VwKXtcbiAgICAgICAgQHJldHVybiB0Zm9vdDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1yb3cpe1xuICAgICAgICBAcmV0dXJuIHRyO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLWNlbGwpe1xuICAgICAgICBAcmV0dXJuIHRoLCB0ZDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBodG1sNS1ibG9jayl7XG4gICAgICAgIEByZXR1cm4gYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbWVudSwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5O1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGh0bWw1LWlubGluZSl7XG4gICAgICAgIEByZXR1cm4gYXVkaW8sIGNhbnZhcywgY29tbWFuZCwgZGF0YWxpc3QsIGVtYmVkLCBrZXlnZW4sIG1hcmssIG1ldGVyLCBvdXRwdXQsIHByb2dyZXNzLCBycCwgcnQsIHJ1YnksIHRpbWUsIHZpZGVvLCB3YnI7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaHRtbDUpe1xuICAgICAgICBAcmV0dXJuIGFydGljbGUsIGFzaWRlLCBhdWRpbywgY2FudmFzLCBjb21tYW5kLCBkYXRhbGlzdCwgZGV0YWlscywgZW1iZWQsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwga2V5Z2VuLCBtYWluLCBtYXJrLCBtZW51LCBtZXRlciwgbmF2LCBvdXRwdXQsIHByb2dyZXNzLCBycCwgcnQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksIHRpbWUsIHZpZGVvLCB3YnI7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGV4dC1pbnB1dCl7XG4gICAgICAgIEByZXR1cm4gaW5wdXQsIHRleHRhcmVhO1xuICAgIH1cbn1cbiIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNvbG9ycyBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9jb3JlL2xpYi9jb21wYXNzL2NvcmUvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jb2xvcnMucmJcbi8vXG5cbi8vIGEgZ2VuZXJpY2l6ZWQgdmVyc2lvbiBvZiBsaWdodGVuL2RhcmtlbiBzbyB0aGF0IG5lZ2F0aXZlIHZhbHVlcyBjYW4gYmUgdXNlZC5cbkBmdW5jdGlvbiBhZGp1c3QtbGlnaHRuZXNzKCRjb2xvciwgJGFtb3VudCkge1xuICAgIEByZXR1cm4gYWRqdXN0LWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGFtb3VudCk7XG59XG5cbi8vIFNjYWxlcyBhIGNvbG9yJ3MgbGlnaHRuZXNzIGJ5IHNvbWUgcGVyY2VudGFnZS5cbi8vIElmIHRoZSBhbW91bnQgaXMgbmVnYXRpdmUsIHRoZSBjb2xvciBpcyBzY2FsZWQgZGFya2VyLCBpZiBwb3NpdGl2ZSwgaXQgaXMgc2NhbGVkIGxpZ2h0ZXIuXG4vLyBUaGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGEgcHVyZSBsaWdodCBvciBkYXJrIGNvbG9yIHVubGVzcyB0aGUgYW1vdW50IGlzIDEwMCUuXG5AZnVuY3Rpb24gc2NhbGUtbGlnaHRuZXNzKCRjb2xvciwgJGFtb3VudCkge1xuICAgIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkYW1vdW50KTtcbn1cblxuLy8gYSBnZW5lcmljaXplZCB2ZXJzaW9uIG9mIHNhdHVyYXRlL2Rlc2F0dXJhdGUgc28gdGhhdCBuZWdhdGl2ZSB2YWx1ZXMgY2FuIGJlIHVzZWQuXG5AZnVuY3Rpb24gYWRqdXN0LXNhdHVyYXRpb24oJGNvbG9yLCAkYW1vdW50KSB7XG4gICAgQHJldHVybiBhZGp1c3QtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7XG59XG5cbi8vIFNjYWxlcyBhIGNvbG9yJ3Mgc2F0dXJhdGlvbiBieSBzb21lIHBlcmNlbnRhZ2UuXG4vLyBJZiB0aGUgYW1vdW50IGlzIG5lZ2F0aXZlLCB0aGUgY29sb3IgaXMgZGVzYXR1cmF0ZWQsIGlmIHBvc2l0aXZlLCBpdCBpcyBzYXR1cmF0ZWQuXG4vLyBUaGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGEgcHVyZSBzYXR1cmF0ZWQgb3IgZGVzYXR1cmF0ZWQgY29sb3IgdW5sZXNzIHRoZSBhbW91bnQgaXMgMTAwJS5cbkBmdW5jdGlvbiBzY2FsZS1zYXR1cmF0aW9uKCRjb2xvciwgJGFtb3VudCkge1xuICAgIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7XG59XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gICAgQHJldHVybiBtaXgoIzAwMDAwMCwgJGNvbG9yLCAkcGVyY2VudGFnZSk7XG59XG5cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgICBAcmV0dXJuIG1peCgjZmZmZmZmLCAkY29sb3IsICRwZXJjZW50YWdlKTtcbn1cblxuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyAgb3ZlcnJpZGUgdG8gY2hhbmdlIHRoZSBkZWZhdWx0XG4kZGVmYXVsdC1iYWNrZ3JvdW5kLXNpemU6IDEwMCUgYXV0byAhZGVmYXVsdDtcblxuLy8gU2V0IHRoZSBzaXplIG9mIGJhY2tncm91bmQgaW1hZ2VzIHVzaW5nIHB4LCB3aWR0aCBhbmQgaGVpZ2h0LCBvciBwZXJjZW50YWdlcy5cbi8vIEN1cnJlbnRseSBzdXBwb3J0ZWQgaW46IE9wZXJhLCBHZWNrbywgV2Via2l0LlxuLy9cbi8vICogcGVyY2VudGFnZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBiYWNrZ3JvdW5kLW9yaWdpbiAoZGVmYXVsdCA9IHBhZGRpbmctYm94KVxuLy8gKiBtaXhpbiBkZWZhdWx0cyB0bzogYCRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZWBcbkBtaXhpbiBiYWNrZ3JvdW5kLXNpemUoXG4gICRzaXplLTE6ICRkZWZhdWx0LWJhY2tncm91bmQtc2l6ZSxcbiAgJHNpemUtMjogZmFsc2UsXG4gICRzaXplLTM6IGZhbHNlLFxuICAkc2l6ZS00OiBmYWxzZSxcbiAgJHNpemUtNTogZmFsc2UsXG4gICRzaXplLTY6IGZhbHNlLFxuICAkc2l6ZS03OiBmYWxzZSxcbiAgJHNpemUtODogZmFsc2UsXG4gICRzaXplLTk6IGZhbHNlLFxuICAkc2l6ZS0xMDogZmFsc2Vcbikge1xuICAkc2l6ZS0xOiBpZih0eXBlLW9mKCRzaXplLTEpID09IHN0cmluZywgdW5xdW90ZSgkc2l6ZS0xKSwgJHNpemUtMSk7XG4gICRzaXplczogY29tcGFjdCgkc2l6ZS0xLCAkc2l6ZS0yLCAkc2l6ZS0zLCAkc2l6ZS00LCAkc2l6ZS01LCAkc2l6ZS02LCAkc2l6ZS03LCAkc2l6ZS04LCAkc2l6ZS05LCAkc2l6ZS0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZ3JvdW5kLXNpemUsICRzaXplcywgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCgtbXMpLCBub3QoLWtodG1sKSk7XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcImNzczMvYm9yZGVyLXJhZGl1c1wiO1xuQGltcG9ydCBcImNzczMvaW5saW5lLWJsb2NrXCI7XG5AaW1wb3J0IFwiY3NzMy9vcGFjaXR5XCI7XG5AaW1wb3J0IFwiY3NzMy9ib3gtc2hhZG93XCI7XG5AaW1wb3J0IFwiY3NzMy90ZXh0LXNoYWRvd1wiO1xuQGltcG9ydCBcImNzczMvY29sdW1uc1wiO1xuQGltcG9ydCBcImNzczMvYm94LXNpemluZ1wiO1xuQGltcG9ydCBcImNzczMvYm94XCI7XG5AaW1wb3J0IFwiY3NzMy9pbWFnZXNcIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmQtY2xpcFwiO1xuQGltcG9ydCBcImNzczMvYmFja2dyb3VuZC1vcmlnaW5cIjtcbkBpbXBvcnQgXCJjc3MzL2JhY2tncm91bmQtc2l6ZVwiO1xuQGltcG9ydCBcImNzczMvZm9udC1mYWNlXCI7XG5AaW1wb3J0IFwiY3NzMy90cmFuc2Zvcm1cIjtcbkBpbXBvcnQgXCJjc3MzL3RyYW5zaXRpb25cIjtcbkBpbXBvcnQgXCJjc3MzL2FwcGVhcmFuY2VcIjtcbkBpbXBvcnQgXCJjc3MzL3JlZ2lvbnNcIjtcbkBpbXBvcnQgXCJjc3MzL2h5cGhlbmF0aW9uXCI7XG5AaW1wb3J0IFwiY3NzMy9maWx0ZXJcIjtcbkBpbXBvcnQgXCJjc3MzL3BpZVwiO1xuQGltcG9ydCBcImNzczMvdXNlci1pbnRlcmZhY2VcIjtcbkBpbXBvcnQgXCJjc3MzL2ZsZXhib3hcIjsiLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbiRkZWZhdWx0LWJvcmRlci1yYWRpdXM6IDVweCAhZGVmYXVsdDtcblxuLy8gUm91bmQgYWxsIGNvcm5lcnMgYnkgYSBzcGVjaWZpYyBhbW91bnQsIGRlZmF1bHRzIHRvIHZhbHVlIG9mIGAkZGVmYXVsdC1ib3JkZXItcmFkaXVzYC5cbi8vXG4vLyBXaGVuIHR3byB2YWx1ZXMgYXJlIHBhc3NlZCwgdGhlIGZpcnN0IGlzIHRoZSBob3Jpem9udGFsIHJhZGl1c1xuLy8gYW5kIHRoZSBzZWNvbmQgaXMgdGhlIHZlcnRpY2FsIHJhZGl1cy5cbi8vXG4vLyBOb3RlOiB3ZWJraXQgZG9lcyBub3Qgc3VwcG9ydCBzaG9ydGhhbmQgc3ludGF4IGZvciBzZXZlcmFsIGNvcm5lcnMgYXQgb25jZS5cbi8vIFNvIGluIHRoZSBjYXNlIHdoZXJlIHlvdSBwYXNzIHNldmVyYWwgdmFsdWVzIG9ubHkgdGhlIGZpcnN0IHdpbGwgYmUgcGFzc2VkIHRvIHdlYmtpdC5cbi8vXG4vLyBFeGFtcGxlczpcbi8vXG4vLyAgICAgLnNpbXBsZSAgIHsgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cyg0cHgsIDRweCk7IH1cbi8vICAgICAuY29tcG91bmQgeyBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDJweCA1cHgsIDNweCA2cHgpOyB9XG4vLyAgICAgLmNyYXp5ICAgIHsgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygxcHggM3B4IDVweCA3cHgsIDJweCA0cHggNnB4IDhweCl9XG4vL1xuLy8gV2hpY2ggZ2VuZXJhdGVzOlxuLy9cbi8vICAgIC5zaW1wbGUge1xuLy8gICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDRweCA0cHg7XG4vLyAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogNHB4IC8gNHB4O1xuLy8gICAgICAta2h0bWwtYm9yZGVyLXJhZGl1czogNHB4IC8gNHB4O1xuLy8gICAgICBib3JkZXItcmFkaXVzOiA0cHggLyA0cHg7IH1cbi8vICAgIFxuLy8gICAgLmNvbXBvdW5kIHtcbi8vICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAycHggM3B4O1xuLy8gICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDJweCA1cHggLyAzcHggNnB4O1xuLy8gICAgICAta2h0bWwtYm9yZGVyLXJhZGl1czogMnB4IDVweCAvIDNweCA2cHg7XG4vLyAgICAgIGJvcmRlci1yYWRpdXM6IDJweCA1cHggLyAzcHggNnB4OyB9XG4vLyAgICBcbi8vICAgIC5jcmF6eSB7XG4vLyAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogMXB4IDJweDtcbi8vICAgICAgLW1vei1ib3JkZXItcmFkaXVzOiAxcHggM3B4IDVweCA3cHggLyAycHggNHB4IDZweCA4cHg7XG4vLyAgICAgIC1raHRtbC1ib3JkZXItcmFkaXVzOiAxcHggM3B4IDVweCA3cHggLyAycHggNHB4IDZweCA4cHg7XG4vLyAgICAgIGJvcmRlci1yYWRpdXM6IDFweCAzcHggNXB4IDdweCAvIDJweCA0cHggNnB4IDhweDsgfVxuXG5AbWl4aW4gYm9yZGVyLXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzLCAkdmVydGljYWwtcmFkaXVzOiBmYWxzZSkge1xuXG4gIEBpZiAkdmVydGljYWwtcmFkaXVzIHtcbiAgICAvLyBXZWJraXQgZG9lc24ndCB1bmRlcnN0YW5kIHRoZSBvZmZpY2lhbCBzaG9ydGhhbmQgc3ludGF4IGZvciBzcGVjaWZ5aW5nXG4gICAgLy8gYSB2ZXJ0aWNhbCByYWRpdXMgdW5sZXNzIHNvIGluIGNhc2UgdGhlcmUncyBzZXZlcmFsIHdlIG9ubHkgdGFrZSB0aGUgZmlyc3QuXG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJvcmRlci1yYWRpdXMsIGZpcnN0LXZhbHVlLW9mKCRyYWRpdXMpIGZpcnN0LXZhbHVlLW9mKCR2ZXJ0aWNhbC1yYWRpdXMpLFxuICAgICAgbm90KC1tb3opLFxuICAgICAgLXdlYmtpdCxcbiAgICAgIG5vdCgtbyksXG4gICAgICBub3QoLW1zKSxcbiAgICAgIG5vdCgta2h0bWwpLFxuICAgICAgbm90KG9mZmljaWFsKVxuICAgICk7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKFwiYm9yZGVyLXJhZGl1c1wiLCAkcmFkaXVzIHVucXVvdGUoXCIvXCIpICR2ZXJ0aWNhbC1yYWRpdXMsXG4gICAgICAtbW96LFxuICAgICAgbm90KC13ZWJraXQpLFxuICAgICAgbm90KC1vKSxcbiAgICAgIG5vdCgtbXMpLFxuICAgICAgLWtodG1sLFxuICAgICAgb2ZmaWNpYWxcbiAgICApO1xuICB9XG4gIEBlbHNlIHtcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm9yZGVyLXJhZGl1cywgJHJhZGl1cyk7XG4gIH1cbn1cblxuLy8gUm91bmQgcmFkaXVzIGF0IHBvc2l0aW9uIGJ5IGFtb3VudC5cbi8vXG4vLyAqIGxlZ2FsIHZhbHVlcyBmb3IgYCR2ZXJ0YDogYHRvcGAsIGBib3R0b21gXG4vLyAqIGxlZ2FsIHZhbHVlcyBmb3IgYCRob3J6YDogYGxlZnRgLCBgcmlnaHRgXG5cbkBtaXhpbiBib3JkZXItY29ybmVyLXJhZGl1cygkdmVydCwgJGhvcnosICRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgLy8gU3VwcG9ydCBmb3IgbW96aWxsYSdzIHN5bnRheCBmb3Igc3BlY2lmeWluZyBhIGNvcm5lclxuICBAaW5jbHVkZSBleHBlcmltZW50YWwoXCJib3JkZXItcmFkaXVzLSN7JHZlcnR9I3skaG9yen1cIiwgJHJhZGl1cyxcbiAgICAtbW96LFxuICAgIG5vdCgtd2Via2l0KSxcbiAgICBub3QoLW8pLFxuICAgIG5vdCgtbXMpLFxuICAgIG5vdCgta2h0bWwpLFxuICAgIG5vdChvZmZpY2lhbClcbiAgKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKFwiYm9yZGVyLSN7JHZlcnR9LSN7JGhvcnp9LXJhZGl1c1wiLCAkcmFkaXVzLFxuICAgIG5vdCgtbW96KSxcbiAgICAtd2Via2l0LFxuICAgIG5vdCgtbyksXG4gICAgbm90KC1tcyksXG4gICAgLWtodG1sLFxuICAgIG9mZmljaWFsXG4gICk7XG4gIFxufVxuXG4vLyBSb3VuZCB0b3AtbGVmdCBjb3JuZXIgb25seVxuXG5AbWl4aW4gYm9yZGVyLXRvcC1sZWZ0LXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci1jb3JuZXItcmFkaXVzKHRvcCwgbGVmdCwgJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgdG9wLXJpZ2h0IGNvcm5lciBvbmx5XG5cbkBtaXhpbiBib3JkZXItdG9wLXJpZ2h0LXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci1jb3JuZXItcmFkaXVzKHRvcCwgcmlnaHQsICRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIGJvdHRvbS1sZWZ0IGNvcm5lciBvbmx5XG5cbkBtaXhpbiBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLWNvcm5lci1yYWRpdXMoYm90dG9tLCBsZWZ0LCAkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCBib3R0b20tcmlnaHQgY29ybmVyIG9ubHlcblxuQG1peGluIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLWNvcm5lci1yYWRpdXMoYm90dG9tLCByaWdodCwgJHJhZGl1cyk7IH1cblxuLy8gUm91bmQgYm90aCB0b3AgY29ybmVycyBieSBhbW91bnRcbkBtaXhpbiBib3JkZXItdG9wLXJhZGl1cygkcmFkaXVzOiAkZGVmYXVsdC1ib3JkZXItcmFkaXVzKSB7XG4gIEBpbmNsdWRlIGJvcmRlci10b3AtbGVmdC1yYWRpdXMoJHJhZGl1cyk7XG4gIEBpbmNsdWRlIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzKCRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIGJvdGggcmlnaHQgY29ybmVycyBieSBhbW91bnRcbkBtaXhpbiBib3JkZXItcmlnaHQtcmFkaXVzKCRyYWRpdXM6ICRkZWZhdWx0LWJvcmRlci1yYWRpdXMpIHtcbiAgQGluY2x1ZGUgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXMoJHJhZGl1cyk7XG4gIEBpbmNsdWRlIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzKCRyYWRpdXMpOyB9XG5cbi8vIFJvdW5kIGJvdGggYm90dG9tIGNvcm5lcnMgYnkgYW1vdW50XG5AbWl4aW4gYm9yZGVyLWJvdHRvbS1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzKCRyYWRpdXMpO1xuICBAaW5jbHVkZSBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1cygkcmFkaXVzKTsgfVxuXG4vLyBSb3VuZCBib3RoIGxlZnQgY29ybmVycyBieSBhbW91bnRcbkBtaXhpbiBib3JkZXItbGVmdC1yYWRpdXMoJHJhZGl1czogJGRlZmF1bHQtYm9yZGVyLXJhZGl1cykge1xuICBAaW5jbHVkZSBib3JkZXItdG9wLWxlZnQtcmFkaXVzKCRyYWRpdXMpO1xuICBAaW5jbHVkZSBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzKCRyYWRpdXMpOyB9XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBTZXQgYCRpbmxpbmUtYmxvY2stYWxpZ25tZW50YCB0byBgbm9uZWAgb3IgYGZhbHNlYCB0byBkaXNhYmxlIHRoZSBvdXRwdXRcbi8vIG9mIGEgdmVydGljYWwtYWxpZ24gcHJvcGVydHkgaW4gdGhlIGlubGluZS1ibG9jayBtaXhpbi5cbi8vIE9yIHNldCBpdCB0byBhIGxlZ2FsIHZhbHVlIGZvciBgdmVydGljYWwtYWxpZ25gIHRvIGNoYW5nZSB0aGUgZGVmYXVsdC5cbiRpbmxpbmUtYmxvY2stYWxpZ25tZW50OiBtaWRkbGUgIWRlZmF1bHQ7XG5cbi8vIFByb3ZpZGVzIGEgY3Jvc3MtYnJvd3NlciBtZXRob2QgdG8gaW1wbGVtZW50IGBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7YFxuQG1peGluIGlubGluZS1ibG9jaygkYWxpZ25tZW50OiAkaW5saW5lLWJsb2NrLWFsaWdubWVudCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhIHtcbiAgICBkaXNwbGF5OiAtbW96LWlubGluZS1zdGFjaztcbiAgfVxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIEBpZiAkYWxpZ25tZW50IGFuZCAkYWxpZ25tZW50ICE9IG5vbmUge1xuICAgIHZlcnRpY2FsLWFsaWduOiAkYWxpZ25tZW50O1xuICB9XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAqdmVydGljYWwtYWxpZ246IGF1dG87XG4gICAgem9vbTogMTtcbiAgICAqZGlzcGxheTogaW5saW5lO1xuICB9XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBQcm92aWRlcyBjcm9zcy1icm93c2VyIENTUyBvcGFjaXR5LiBUYWtlcyBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEgYXMgdGhlIGFyZ3VtZW50LCBlLmcuIDAuNSBmb3IgNTAlIG9wYWNpdHkuXG4vL1xuLy8gICAgIEBwYXJhbSAkb3BhY2l0eVxuLy8gICAgICAgICBBIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEsIHdoZXJlIDAgaXMgdHJhbnNwYXJlbnQgYW5kIDEgaXMgb3BhcXVlLlxuXG5AbWl4aW4gb3BhY2l0eSgkb3BhY2l0eSkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTgge1xuICAgIGZpbHRlcjogdW5xdW90ZShcInByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5BbHBoYShPcGFjaXR5PSN7cm91bmQoJG9wYWNpdHkgKiAxMDApfSlcIik7XG4gIH1cbiAgb3BhY2l0eTogJG9wYWNpdHk7XG59XG5cbi8vIE1ha2UgYW4gZWxlbWVudCBjb21wbGV0ZWx5IHRyYW5zcGFyZW50LlxuQG1peGluIHRyYW5zcGFyZW50IHsgQGluY2x1ZGUgb3BhY2l0eSgwKTsgfVxuXG4vLyBNYWtlIGFuIGVsZW1lbnQgY29tcGxldGVseSBvcGFxdWUuXG5AbWl4aW4gb3BhcXVlIHsgQGluY2x1ZGUgb3BhY2l0eSgxKTsgfVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIi8vIEBkb2Mgb2ZmXG4vLyBUaGVzZSBkZWZhdWx0cyBtYWtlIHRoZSBhcmd1bWVudHMgb3B0aW9uYWwgZm9yIHRoaXMgbWl4aW5cbi8vIElmIHlvdSBsaWtlLCBzZXQgZGlmZmVyZW50IGRlZmF1bHRzIGJlZm9yZSBpbXBvcnRpbmcuXG4vLyBAZG9jIG9uXG5cbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuXG4vLyBUaGUgZGVmYXVsdCBjb2xvciBmb3IgYm94IHNoYWRvd3NcbiRkZWZhdWx0LWJveC1zaGFkb3ctY29sb3I6ICMzMzMzMzMgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IGhvcml6b250YWwgb2Zmc2V0LiBQb3NpdGl2ZSBpcyB0byB0aGUgcmlnaHQuXG4kZGVmYXVsdC1ib3gtc2hhZG93LWgtb2Zmc2V0OiAwcHggIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHZlcnRpY2FsIG9mZnNldC4gUG9zaXRpdmUgaXMgZG93bi5cbiRkZWZhdWx0LWJveC1zaGFkb3ctdi1vZmZzZXQ6IDBweCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgYmx1ciBsZW5ndGguXG4kZGVmYXVsdC1ib3gtc2hhZG93LWJsdXI6IDVweCAhZGVmYXVsdDtcblxuLy8gVGhlIGRlZmF1bHQgc3ByZWFkIGxlbmd0aC5cbiRkZWZhdWx0LWJveC1zaGFkb3ctc3ByZWFkIDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IHNoYWRvdyBpbnNldDogaW5zZXQgb3IgZmFsc2UgKGZvciBzdGFuZGFyZCBzaGFkb3cpLlxuJGRlZmF1bHQtYm94LXNoYWRvdy1pbnNldCA6IGZhbHNlICFkZWZhdWx0O1xuXG4vLyBQcm92aWRlcyBjcm9zcy1icm93c2VyIGZvciBXZWJraXQsIEdlY2tvLCBhbmQgQ1NTMyBib3ggc2hhZG93cyB3aGVuIG9uZSBvciBtb3JlIGJveFxuLy8gc2hhZG93cyBhcmUgbmVlZGVkLlxuLy8gRWFjaCBzaGFkb3cgYXJndW1lbnQgc2hvdWxkIGFkaGVyZSB0byB0aGUgc3RhbmRhcmQgY3NzMyBzeW50YXggZm9yIHRoZVxuLy8gYm94LXNoYWRvdyBwcm9wZXJ0eS5cbkBtaXhpbiBib3gtc2hhZG93KFxuICAkc2hhZG93LTEgOiBkZWZhdWx0LFxuICAkc2hhZG93LTIgOiBmYWxzZSxcbiAgJHNoYWRvdy0zIDogZmFsc2UsXG4gICRzaGFkb3ctNCA6IGZhbHNlLFxuICAkc2hhZG93LTUgOiBmYWxzZSxcbiAgJHNoYWRvdy02IDogZmFsc2UsXG4gICRzaGFkb3ctNyA6IGZhbHNlLFxuICAkc2hhZG93LTggOiBmYWxzZSxcbiAgJHNoYWRvdy05IDogZmFsc2UsXG4gICRzaGFkb3ctMTA6IGZhbHNlXG4pIHtcbiAgQGlmICRzaGFkb3ctMSA9PSBkZWZhdWx0IHtcbiAgICAkc2hhZG93LTEgOiAtY29tcGFzcy1zcGFjZS1saXN0KGNvbXBhY3QoaWYoJGRlZmF1bHQtYm94LXNoYWRvdy1pbnNldCwgaW5zZXQsIGZhbHNlKSwgJGRlZmF1bHQtYm94LXNoYWRvdy1oLW9mZnNldCwgJGRlZmF1bHQtYm94LXNoYWRvdy12LW9mZnNldCwgJGRlZmF1bHQtYm94LXNoYWRvdy1ibHVyLCAkZGVmYXVsdC1ib3gtc2hhZG93LXNwcmVhZCwgJGRlZmF1bHQtYm94LXNoYWRvdy1jb2xvcikpO1xuICB9XG4gICRzaGFkb3cgOiBjb21wYWN0KCRzaGFkb3ctMSwgJHNoYWRvdy0yLCAkc2hhZG93LTMsICRzaGFkb3ctNCwgJHNoYWRvdy01LCAkc2hhZG93LTYsICRzaGFkb3ctNywgJHNoYWRvdy04LCAkc2hhZG93LTksICRzaGFkb3ctMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LXNoYWRvdywgJHNoYWRvdyxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIFByb3ZpZGVzIGEgc2luZ2xlIGNyb3NzLWJyb3dzZXIgQ1NTIGJveCBzaGFkb3cgZm9yIFdlYmtpdCwgR2Vja28sIGFuZCBDU1MzLlxuLy8gSW5jbHVkZXMgZGVmYXVsdCBhcmd1bWVudHMgZm9yIGhvcml6b250YWwgb2Zmc2V0LCB2ZXJ0aWNhbCBvZmZzZXQsIGJsdXIgbGVuZ3RoLCBzcHJlYWQgbGVuZ3RoLCBjb2xvciBhbmQgaW5zZXQuXG5AbWl4aW4gc2luZ2xlLWJveC1zaGFkb3coXG4gICRob2ZmICAgOiAkZGVmYXVsdC1ib3gtc2hhZG93LWgtb2Zmc2V0LFxuICAkdm9mZiAgIDogJGRlZmF1bHQtYm94LXNoYWRvdy12LW9mZnNldCxcbiAgJGJsdXIgICA6ICRkZWZhdWx0LWJveC1zaGFkb3ctYmx1cixcbiAgJHNwcmVhZCA6ICRkZWZhdWx0LWJveC1zaGFkb3ctc3ByZWFkLFxuICAkY29sb3IgIDogJGRlZmF1bHQtYm94LXNoYWRvdy1jb2xvcixcbiAgJGluc2V0ICA6ICRkZWZhdWx0LWJveC1zaGFkb3ctaW5zZXRcbikge1xuICBAaWYgbm90ICgkaW5zZXQgPT0gdHJ1ZSBvciAkaW5zZXQgPT0gZmFsc2Ugb3IgJGluc2V0ID09IGluc2V0KSB7XG4gICAgQHdhcm4gXCIkaW5zZXQgZXhwZWN0ZWQgdG8gYmUgdHJ1ZSBvciB0aGUgaW5zZXQga2V5d29yZC4gR290ICN7JGluc2V0fSBpbnN0ZWFkLiBVc2luZzogaW5zZXRcIjtcbiAgfVxuXG4gIEBpZiAkY29sb3IgPT0gbm9uZSB7XG4gICAgQGluY2x1ZGUgYm94LXNoYWRvdyhub25lKTtcbiAgfSBAZWxzZSB7XG4gICAgJGZ1bGwgICA6ICRob2ZmICR2b2ZmO1xuICAgIEBpZiAkYmx1ciAgIHsgJGZ1bGw6ICRmdWxsICRibHVyOyAgIH1cbiAgICBAaWYgJHNwcmVhZCB7ICRmdWxsOiAkZnVsbCAkc3ByZWFkOyB9XG4gICAgQGlmICRjb2xvciAgeyAkZnVsbDogJGZ1bGwgJGNvbG9yOyAgfVxuICAgIEBpZiAkaW5zZXQgIHsgJGZ1bGw6IGluc2V0ICRmdWxsOyAgIH1cbiAgICBAaW5jbHVkZSBib3gtc2hhZG93KCRmdWxsKTtcbiAgfVxufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gVGhlc2UgZGVmYXVsdHMgbWFrZSB0aGUgYXJndW1lbnRzIG9wdGlvbmFsIGZvciB0aGlzIG1peGluXG4vLyBJZiB5b3UgbGlrZSwgc2V0IGRpZmZlcmVudCBkZWZhdWx0cyBpbiB5b3VyIHByb2plY3RcblxuJGRlZmF1bHQtdGV4dC1zaGFkb3ctY29sb3I6ICAgICNhYWEgIWRlZmF1bHQ7XG4kZGVmYXVsdC10ZXh0LXNoYWRvdy1oLW9mZnNldDogMHB4ICAhZGVmYXVsdDtcbiRkZWZhdWx0LXRleHQtc2hhZG93LXYtb2Zmc2V0OiAwcHggICFkZWZhdWx0O1xuJGRlZmF1bHQtdGV4dC1zaGFkb3ctYmx1cjogICAgIDFweCAgIWRlZmF1bHQ7XG4kZGVmYXVsdC10ZXh0LXNoYWRvdy1zcHJlYWQ6ICAgZmFsc2UgICFkZWZhdWx0O1xuXG4vLyBQcm92aWRlcyBjcm9zcy1icm93c2VyIHRleHQgc2hhZG93cyB3aGVuIG9uZSBvciBtb3JlIHNoYWRvd3MgYXJlIG5lZWRlZC5cbi8vIEVhY2ggc2hhZG93IGFyZ3VtZW50IHNob3VsZCBhZGhlcmUgdG8gdGhlIHN0YW5kYXJkIGNzczMgc3ludGF4IGZvciB0aGVcbi8vIHRleHQtc2hhZG93IHByb3BlcnR5LlxuLy9cbi8vIE5vdGU6IGlmIGFueSBzaGFkb3cgaGFzIGEgc3ByZWFkIHBhcmFtZXRlciwgdGhpcyB3aWxsIGNhdXNlIHRoZSBtaXhpblxuLy8gdG8gZW1pdCB0aGUgc2hhZG93IGRlY2xhcmF0aW9uIHR3aWNlLCBmaXJzdCB3aXRob3V0IHRoZSBzcHJlYWQsXG4vLyB0aGVuIHdpdGggdGhlIHNwcmVhZCBpbmNsdWRlZC4gVGhpcyBhbGxvd3MgeW91IHRvIHByb2dyZXNzaXZlbHlcbi8vIGVuaGFuY2UgdGhlIGJyb3dzZXJzIHRoYXQgZG8gc3VwcG9ydCB0aGUgc3ByZWFkIHBhcmFtZXRlci5cbkBtaXhpbiB0ZXh0LXNoYWRvdyhcbiAgJHNoYWRvdy0xIDogZGVmYXVsdCxcbiAgJHNoYWRvdy0yIDogZmFsc2UsXG4gICRzaGFkb3ctMyA6IGZhbHNlLFxuICAkc2hhZG93LTQgOiBmYWxzZSxcbiAgJHNoYWRvdy01IDogZmFsc2UsXG4gICRzaGFkb3ctNiA6IGZhbHNlLFxuICAkc2hhZG93LTcgOiBmYWxzZSxcbiAgJHNoYWRvdy04IDogZmFsc2UsXG4gICRzaGFkb3ctOSA6IGZhbHNlLFxuICAkc2hhZG93LTEwOiBmYWxzZVxuKSB7XG4gIEBpZiAkc2hhZG93LTEgPT0gZGVmYXVsdCB7XG4gICAgJHNoYWRvdy0xOiBjb21wYWN0KCRkZWZhdWx0LXRleHQtc2hhZG93LWgtb2Zmc2V0ICRkZWZhdWx0LXRleHQtc2hhZG93LXYtb2Zmc2V0ICRkZWZhdWx0LXRleHQtc2hhZG93LWJsdXIgJGRlZmF1bHQtdGV4dC1zaGFkb3ctc3ByZWFkICRkZWZhdWx0LXRleHQtc2hhZG93LWNvbG9yKTtcbiAgfVxuICAkc2hhZG93cy13aXRob3V0LXNwcmVhZDogam9pbigoKSwoKSxjb21tYSk7XG4gICRzaGFkb3dzOiBqb2luKCgpLCgpLGNvbW1hKTtcbiAgJGhhcy1zcHJlYWQ6IGZhbHNlO1xuICBAZWFjaCAkc2hhZG93IGluIGNvbXBhY3QoJHNoYWRvdy0xLCAkc2hhZG93LTIsICRzaGFkb3ctMywgJHNoYWRvdy00LCAkc2hhZG93LTUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAkc2hhZG93LTYsICRzaGFkb3ctNywgJHNoYWRvdy04LCAkc2hhZG93LTksICRzaGFkb3ctMTApIHtcbiAgICBAaWYgbGVuZ3RoKCRzaGFkb3cpID4gNCB7XG4gICAgICAkaGFzLXNwcmVhZDogdHJ1ZTtcbiAgICAgICRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkOiBhcHBlbmQoJHNoYWRvd3Mtd2l0aG91dC1zcHJlYWQsIG50aCgkc2hhZG93LDEpIG50aCgkc2hhZG93LDIpIG50aCgkc2hhZG93LDMpIG50aCgkc2hhZG93LDUpKTtcbiAgICAgICRzaGFkb3dzOiBhcHBlbmQoJHNoYWRvd3MsICRzaGFkb3cpO1xuICAgIH0gZWxzZSB7XG4gICAgICAkc2hhZG93cy13aXRob3V0LXNwcmVhZDogYXBwZW5kKCRzaGFkb3dzLXdpdGhvdXQtc3ByZWFkLCAkc2hhZG93KTtcbiAgICAgICRzaGFkb3dzOiBhcHBlbmQoJHNoYWRvd3MsICRzaGFkb3cpO1xuICAgIH1cbiAgfVxuICBAaWYgJGhhcy1zcHJlYWQge1xuICAgIHRleHQtc2hhZG93OiAkc2hhZG93cy13aXRob3V0LXNwcmVhZDtcbiAgfVxuICB0ZXh0LXNoYWRvdzogJHNoYWRvd3M7XG59XG5cbi8vIFByb3ZpZGVzIGEgc2luZ2xlIGNyb3NzLWJyb3dzZXIgQ1NTIHRleHQgc2hhZG93LlxuLy9cbi8vIFByb3ZpZGVzIHNlbnNpYmxlIGRlZmF1bHRzIGZvciB0aGUgY29sb3IsIGhvcml6b250YWwgb2Zmc2V0LCB2ZXJ0aWNhbCBvZmZzZXQsIGJsdXIsIGFuZCBzcHJlYWRcbi8vIGFjY29yZGluZyB0byB0aGUgY29uZmlndXJhdGlvbiBkZWZhdWx0cyBhYm92ZS5cbkBtaXhpbiBzaW5nbGUtdGV4dC1zaGFkb3coXG4gICRob2ZmOiBmYWxzZSxcbiAgJHZvZmY6IGZhbHNlLFxuICAkYmx1cjogZmFsc2UsXG4gICRzcHJlYWQ6IGZhbHNlLFxuICAkY29sb3I6IGZhbHNlXG4pIHtcbiAgLy8gQSBsb3Qgb2YgcGVvcGxlIHRoaW5rIHRoZSBjb2xvciBjb21lcyBmaXJzdC4gSXQgZG9lc24ndC5cbiAgQGlmIHR5cGUtb2YoJGhvZmYpID09IGNvbG9yIHtcbiAgICAkdGVtcC1jb2xvcjogJGhvZmY7XG4gICAgJGhvZmY6ICR2b2ZmO1xuICAgICR2b2ZmOiAkYmx1cjtcbiAgICAkYmx1cjogJHNwcmVhZDtcbiAgICAkc3ByZWFkOiAkY29sb3I7XG4gICAgJGNvbG9yOiAkdGVtcC1jb2xvcjtcbiAgfVxuICAvLyBDYW4ndCByZWx5IG9uIGRlZmF1bHQgYXNzaWdubWVudCB3aXRoIG11bHRpcGxlIHN1cHBvcnRlZCBhcmd1bWVudCBvcmRlcnMuXG4gICRob2ZmOiAgIGlmKCRob2ZmLCAgICRob2ZmLCAgICRkZWZhdWx0LXRleHQtc2hhZG93LWgtb2Zmc2V0KTtcbiAgJHZvZmY6ICAgaWYoJHZvZmYsICAgJHZvZmYsICAgJGRlZmF1bHQtdGV4dC1zaGFkb3ctdi1vZmZzZXQpO1xuICAkYmx1cjogICBpZigkYmx1ciwgICAkYmx1ciwgICAkZGVmYXVsdC10ZXh0LXNoYWRvdy1ibHVyICAgICk7XG4gICRzcHJlYWQ6IGlmKCRzcHJlYWQsICRzcHJlYWQsICRkZWZhdWx0LXRleHQtc2hhZG93LXNwcmVhZCAgKTtcbiAgJGNvbG9yOiAgaWYoJGNvbG9yLCAgJGNvbG9yLCAgJGRlZmF1bHQtdGV4dC1zaGFkb3ctY29sb3IgICApO1xuICAvLyBXZSBkb24ndCBuZWVkIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciB0aGlzIHByb3BlcnR5LlxuICBAaWYgJGNvbG9yID09IG5vbmUgb3IgJGhvZmYgPT0gbm9uZSB7XG4gICAgQGluY2x1ZGUgdGV4dC1zaGFkb3cobm9uZSk7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIHRleHQtc2hhZG93KGNvbXBhY3QoJGhvZmYgJHZvZmYgJGJsdXIgJHNwcmVhZCAkY29sb3IpKTtcbiAgfVxufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gU3BlY2lmeSB0aGUgc2hvcnRoYW5kIGBjb2x1bW5zYCBwcm9wZXJ0eS5cbi8vXG4vLyBFeGFtcGxlOlxuLy9cbi8vICAgICBAaW5jbHVkZSBjb2x1bW5zKDIwZW0gMilcbkBtaXhpbiBjb2x1bW5zKCR3aWR0aC1hbmQtY291bnQpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbnMsICR3aWR0aC1hbmQtY291bnQsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIFNwZWNpZnkgdGhlIG51bWJlciBvZiBjb2x1bW5zXG5AbWl4aW4gY29sdW1uLWNvdW50KCRjb3VudCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLWNvdW50LCAkY291bnQsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIFNwZWNpZnkgdGhlIGdhcCBiZXR3ZWVuIGNvbHVtbnMgZS5nLiBgMjBweGBcbkBtaXhpbiBjb2x1bW4tZ2FwKCR3aWR0aCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLWdhcCwgJHdpZHRoLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBTcGVjaWZ5IHRoZSB3aWR0aCBvZiBjb2x1bW5zIGUuZy4gYDEwMHB4YFxuQG1peGluIGNvbHVtbi13aWR0aCgkd2lkdGgpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi13aWR0aCwgJHdpZHRoLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBTcGVjaWZ5IHRoZSB3aWR0aCBvZiB0aGUgcnVsZSBiZXR3ZWVuIGNvbHVtbnMgZS5nLiBgMXB4YFxuQG1peGluIGNvbHVtbi1ydWxlLXdpZHRoKCR3aWR0aCkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXJ1bGUtd2lkdGgsICR3aWR0aCxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gU3BlY2lmeSB0aGUgc3R5bGUgb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zIGUuZy4gYGRvdHRlZGAuXG4vLyBUaGlzIHdvcmtzIGxpa2UgYm9yZGVyLXN0eWxlLlxuQG1peGluIGNvbHVtbi1ydWxlLXN0eWxlKCRzdHlsZSkge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXJ1bGUtc3R5bGUsIHVucXVvdGUoJHN0eWxlKSxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gU3BlY2lmeSB0aGUgY29sb3Igb2YgdGhlIHJ1bGUgYmV0d2VlbiBjb2x1bW5zIGUuZy4gYGJsdWVgLlxuLy8gVGhpcyB3b3JrcyBsaWtlIGJvcmRlci1jb2xvci5cbkBtaXhpbiBjb2x1bW4tcnVsZS1jb2xvcigkY29sb3IpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1ydWxlLWNvbG9yLCAkY29sb3IsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIE1peGluIGVuY29tcGFzc2luZyBhbGwgY29sdW1uIHJ1bGUgcHJvcGVydGllc1xuLy8gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICAgIEBpbmNsdWRlIGNvbHVtbi1ydWxlKDFweCwgc29saWQsICNjMDApXG4vL1xuLy8gT3IgdGhlIHZhbHVlcyBjYW4gYmUgc3BhY2Ugc2VwYXJhdGVkOlxuLy9cbi8vICAgICBAaW5jbHVkZSBjb2x1bW4tcnVsZSgxcHggc29saWQgI2MwMClcbkBtaXhpbiBjb2x1bW4tcnVsZSgkd2lkdGgsICRzdHlsZTogZmFsc2UsICRjb2xvcjogZmFsc2UpIHtcbiAgJGZ1bGwgOiAtY29tcGFzcy1zcGFjZS1saXN0KGNvbXBhY3QoJHdpZHRoLCAkc3R5bGUsICRjb2xvcikpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLXJ1bGUsICRmdWxsLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBNaXhpbiBmb3Igc2V0dGluZyBjb2x1bW4tYnJlYWstYmVmb3JlXG4vL1xuLy8gKiBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGFsd2F5cywgYXZvaWQsIGxlZnQsIHJpZ2h0LCBwYWdlLCBjb2x1bW4sIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy9cbi8vICBFeGFtcGxlOiBcbi8vICAgIGgyLmJlZm9yZSB7QGluY2x1ZGUgY29sdW1uLWJyZWFrLWJlZm9yZShhbHdheXMpO31cbi8vXG4vLyAgV2hpY2ggZ2VuZXJhdGVzOiBcbi8vXG4vLyAgaDIuYmVmb3JlIHsgICAgXG4vLyAgICAtd2Via2l0LWNvbHVtbi1icmVhay1iZWZvcmU6IGFsd2F5cztcbi8vICAgIGNvbHVtbi1icmVhay1iZWZvcmU6IGFsd2F5czt9XG5AbWl4aW4gY29sdW1uLWJyZWFrLWJlZm9yZSgkdmFsdWU6IGF1dG8pe1xuICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1icmVhay1iZWZvcmUsICR2YWx1ZSwgbm90KC1tb3opLCAtd2Via2l0LCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsICk7XG59XG5cbi8vIE1peGluIGZvciBzZXR0aW5nIGNvbHVtbi1icmVhay1hZnRlclxuLy9cbi8vICogbGVnYWwgdmFsdWVzIGFyZSBhdXRvLCBhbHdheXMsIGF2b2lkLCBsZWZ0LCByaWdodCwgcGFnZSwgY29sdW1uLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vXG4vLyAgRXhhbXBsZTogXG4vLyAgICBoMi5hZnRlciB7QGluY2x1ZGUgY29sdW1uLWJyZWFrLWFmdGVyKGFsd2F5cyk7IH1cbi8vXG4vLyAgV2hpY2ggZ2VuZXJhdGVzOiBcbi8vXG4vLyAgaDIuYWZ0ZXIge1xuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstYWZ0ZXI6IGFsd2F5cztcbi8vICAgIGNvbHVtbi1icmVhay1hZnRlcjogYWx3YXlzOyB9XG5AbWl4aW4gY29sdW1uLWJyZWFrLWFmdGVyKCR2YWx1ZTogYXV0byl7XG4gICBAaW5jbHVkZSBleHBlcmltZW50YWwoY29sdW1uLWJyZWFrLWFmdGVyLCAkdmFsdWUsIG5vdCgtbW96KSwgLXdlYmtpdCwgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbCApO1xufVxuXG4vLyBNaXhpbiBmb3Igc2V0dGluZyBjb2x1bW4tYnJlYWstaW5zaWRlXG4vL1xuLy8gKiBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGF2b2lkLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vXG4vLyAgRXhhbXBsZTogXG4vLyAgICBoMi5pbnNpZGUge0BpbmNsdWRlIGNvbHVtbi1icmVhay1pbnNpZGUoKTt9XG4vLyAgV2hpY2ggZ2VuZXJhdGVzOiBcbi8vICBcbi8vICBoMi5pbnNpZGUge1xuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdXRvO1xuLy8gICAgY29sdW1uLWJyZWFrLWluc2lkZTogYXV0bzt9XG5AbWl4aW4gY29sdW1uLWJyZWFrLWluc2lkZSgkdmFsdWU6IGF1dG8pe1xuICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGNvbHVtbi1icmVhay1pbnNpZGUsICR2YWx1ZSwgbm90KC1tb3opLCAtd2Via2l0LCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsICk7XG59XG5cbi8vIEFsbC1wdXJwb3NlIG1peGluIGZvciBzZXR0aW5nIGNvbHVtbiBicmVha3MuXG4vL1xuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yICR0eXBlIDogYmVmb3JlLCBhZnRlciwgaW5zaWRlIFxuLy8gKiBsZWdhbCB2YWx1ZXMgZm9yICckdmFsdWUnIGFyZSBkZXBlbmRlbnQgb24gJHR5cGVcbi8vICAgICogd2hlbiAkdHlwZSA9IGJlZm9yZSwgbGVnYWwgdmFsdWVzIGFyZSBhdXRvLCBhbHdheXMsIGF2b2lkLCBsZWZ0LCByaWdodCwgcGFnZSwgY29sdW1uLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vICAgICogd2hlbiAkdHlwZSA9IGFmdGVyLCBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGFsd2F5cywgYXZvaWQsIGxlZnQsIHJpZ2h0LCBwYWdlLCBjb2x1bW4sIGF2b2lkLXBhZ2UsIGF2b2lkLWNvbHVtblxuLy8gICAgKiB3aGVuICR0eXBlID0gaW5zaWRlLCBsZWdhbCB2YWx1ZXMgYXJlIGF1dG8sIGF2b2lkLCBhdm9pZC1wYWdlLCBhdm9pZC1jb2x1bW5cbi8vICBcbi8vICBFeGFtcGxlczogXG4vLyAgICBoMi5iZWZvcmUge0BpbmNsdWRlIGNvbHVtbi1icmVhayhiZWZvcmUsIGFsd2F5cyk7fVxuLy8gICAgaDIuYWZ0ZXIge0BpbmNsdWRlIGNvbHVtbi1icmVhayhhZnRlciwgYWx3YXlzKTsgfVxuLy8gICAgaDIuaW5zaWRlIHtAaW5jbHVkZSBjb2x1bW4tYnJlYWsoaW5zaWRlKTsgfVxuLy9cbi8vICBXaGljaCBnZW5lcmF0ZXM6IFxuLy8gIGgyLmJlZm9yZSB7ICAgIFxuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstYmVmb3JlOiBhbHdheXM7XG4vLyAgICBjb2x1bW4tYnJlYWstYmVmb3JlOiBhbHdheXM7fVxuLy8gIFxuLy8gIGgyLmFmdGVyIHtcbi8vICAgIC13ZWJraXQtY29sdW1uLWJyZWFrLWFmdGVyOiBhbHdheXM7XG4vLyAgICBjb2x1bW4tYnJlYWstYWZ0ZXI6IGFsd2F5czsgfVxuLy9cbi8vICBoMi5pbnNpZGUge1xuLy8gICAgLXdlYmtpdC1jb2x1bW4tYnJlYWstaW5zaWRlOiBhdXRvO1xuLy8gICAgY29sdW1uLWJyZWFrLWluc2lkZTogYXV0bzt9XG4gXG5AbWl4aW4gY29sdW1uLWJyZWFrKCR0eXBlOiBiZWZvcmUsICR2YWx1ZTogYXV0byl7XG4gICBAaW5jbHVkZSBleHBlcmltZW50YWwoXCJjb2x1bW4tYnJlYWstI3skdHlwZX1cIiwgJHZhbHVlLCBub3QoLW1veiksIC13ZWJraXQsIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWwgKTtcbn0iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBDaGFuZ2UgdGhlIGJveCBtb2RlbCBmb3IgTW96aWxsYSwgV2Via2l0LCBJRTggYW5kIHRoZSBmdXR1cmVcbi8vXG4vLyBAcGFyYW0gJGJzXG4vLyAgIFsgY29udGVudC1ib3ggfCBib3JkZXItYm94IF1cblxuQG1peGluIGJveC1zaXppbmcoJGJzKSB7XG4gICRiczogdW5xdW90ZSgkYnMpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LXNpemluZywgJGJzLFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIGRpc3BsYXk6Ym94OyBtdXN0IGJlIHVzZWQgZm9yIGFueSBvZiB0aGUgb3RoZXIgZmxleGJveCBtaXhpbnMgdG8gd29yayBwcm9wZXJseVxuQG1peGluIGRpc3BsYXktYm94IHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsLXZhbHVlKGRpc3BsYXksIGJveCxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBEZWZhdWx0IGJveCBvcmllbnRhdGlvbiwgYXNzdW1pbmcgdGhhdCB0aGUgdXNlciB3YW50cyBzb21ldGhpbmcgbGVzcyBibG9jay1saWtlXG4kZGVmYXVsdC1ib3gtb3JpZW50OiBob3Jpem9udGFsICFkZWZhdWx0O1xuXG4vLyBCb3ggb3JpZW50YXRpb24gWyBob3Jpem9udGFsIHwgdmVydGljYWwgfCBpbmxpbmUtYXhpcyB8IGJsb2NrLWF4aXMgfCBpbmhlcml0IF1cbkBtaXhpbiBib3gtb3JpZW50KFxuICAkb3JpZW50YXRpb246ICRkZWZhdWx0LWJveC1vcmllbnRcbikge1xuICAkb3JpZW50YXRpb24gOiB1bnF1b3RlKCRvcmllbnRhdGlvbik7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtb3JpZW50LCAkb3JpZW50YXRpb24sXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gRGVmYXVsdCBib3gtYWxpZ25cbiRkZWZhdWx0LWJveC1hbGlnbjogc3RyZXRjaCAhZGVmYXVsdDtcblxuLy8gQm94IGFsaWduIFsgc3RhcnQgfCBlbmQgfCBjZW50ZXIgfCBiYXNlbGluZSB8IHN0cmV0Y2ggXVxuQG1peGluIGJveC1hbGlnbihcbiAgJGFsaWdubWVudDogJGRlZmF1bHQtYm94LWFsaWduXG4pIHtcbiAgJGFsaWdubWVudCA6IHVucXVvdGUoJGFsaWdubWVudCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtYWxpZ24sICRhbGlnbm1lbnQsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gRGVmYXVsdCBib3ggZmxleFxuJGRlZmF1bHQtYm94LWZsZXg6IDAgIWRlZmF1bHQ7XG5cbi8vIG1peGluIHdoaWNoIHRha2VzIGFuIGludCBhcmd1bWVudCBmb3IgYm94IGZsZXguIEFwcGx5IHRoaXMgdG8gdGhlIGNoaWxkcmVuIGluc2lkZSB0aGUgYm94LlxuLy9cbi8vIEZvciBleGFtcGxlOiBcImRpdi5kaXNwbGF5LWJveCA+IGRpdi5jaGlsZC1ib3hcIiB3b3VsZCBnZXQgdGhlIGJveCBmbGV4IG1peGluLlxuQG1peGluIGJveC1mbGV4KFxuICAkZmxleDogJGRlZmF1bHQtYm94LWZsZXhcbikge1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYm94LWZsZXgsICRmbGV4LFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIERlZmF1bHQgZmxleCBncm91cFxuJGRlZmF1bHQtYm94LWZsZXgtZ3JvdXA6IDEgIWRlZmF1bHQ7XG5cbi8vIG1peGluIHdoaWNoIHRha2VzIGFuIGludCBhcmd1bWVudCBmb3IgZmxleGlibGUgZ3JvdXBpbmdcbkBtaXhpbiBib3gtZmxleC1ncm91cChcbiAgJGdyb3VwOiAkZGVmYXVsdC1ib3gtZmxleC1ncm91cFxuKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtZmxleC1ncm91cCwgJGdyb3VwLFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIGRlZmF1bHQgZm9yIG9yZGluYWwgZ3JvdXBcbiRkZWZhdWx0LWJveC1vcmRpbmFsLWdyb3VwOiAxICFkZWZhdWx0O1xuXG4vLyBtaXhpbiB3aGljaCB0YWtlcyBhbiBpbnQgYXJndW1lbnQgZm9yIG9yZGluYWwgZ3JvdXBpbmcgYW5kIHJlYXJyYW5naW5nIHRoZSBvcmRlclxuQG1peGluIGJveC1vcmRpbmFsLWdyb3VwKFxuICAkZ3JvdXA6ICRkZWZhdWx0LW9yZGluYWwtZmxleC1ncm91cFxuKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtb3JkaW5hbC1ncm91cCwgJGdyb3VwLFxuICAgIC1tb3osIC13ZWJraXQsIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIEJveCBkaXJlY3Rpb24gZGVmYXVsdCB2YWx1ZVxuJGRlZmF1bHQtYm94LWRpcmVjdGlvbjogbm9ybWFsICFkZWZhdWx0O1xuXG4vLyBtaXhpbiBmb3IgYm94LWRpcmVjdGlvbiBbIG5vcm1hbCB8IHJldmVyc2UgfCBpbmhlcml0IF1cbkBtaXhpbiBib3gtZGlyZWN0aW9uKFxuICAkZGlyZWN0aW9uOiAkZGVmYXVsdC1ib3gtZGlyZWN0aW9uXG4pIHtcbiAgJGRpcmVjdGlvbjogdW5xdW90ZSgkZGlyZWN0aW9uKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJveC1kaXJlY3Rpb24sICRkaXJlY3Rpb24sXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gZGVmYXVsdCBmb3IgYm94IGxpbmVzXG4kZGVmYXVsdC1ib3gtbGluZXM6IHNpbmdsZSAhZGVmYXVsdDtcblxuLy8gbWl4aW4gZm9yIGJveCBsaW5lcyBbIHNpbmdsZSB8IG11bHRpcGxlIF1cbkBtaXhpbiBib3gtbGluZXMoXG4gICRsaW5lczogJGRlZmF1bHQtYm94LWxpbmVzXG4pIHtcbiAgJGxpbmVzOiB1bnF1b3RlKCRsaW5lcyk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtbGluZXMsICRsaW5lcyxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBkZWZhdWx0IGZvciBib3ggcGFja1xuJGRlZmF1bHQtYm94LXBhY2s6IHN0YXJ0ICFkZWZhdWx0O1xuXG4vLyBtaXhpbiBmb3IgYm94IHBhY2sgWyBzdGFydCB8IGVuZCB8IGNlbnRlciB8IGp1c3RpZnkgXVxuQG1peGluIGJveC1wYWNrKFxuICAkcGFjazogJGRlZmF1bHQtYm94LXBhY2tcbikge1xuICAkcGFjazogdW5xdW90ZSgkcGFjayk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChib3gtcGFjaywgJHBhY2ssXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn0iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuQGltcG9ydCBcIi4uL3V0aWxpdGllcy9nZW5lcmFsL2hhY2tzXCI7XG5AaW1wb3J0IFwiLi4vZnVuY3Rpb25zXCI7XG5cbi8vIEJhY2tncm91bmQgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGJhY2tncm91bmQoXG4gICRiYWNrZ3JvdW5kLTEsXG4gICRiYWNrZ3JvdW5kLTI6IGZhbHNlLFxuICAkYmFja2dyb3VuZC0zOiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNDogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTU6IGZhbHNlLFxuICAkYmFja2dyb3VuZC02OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNzogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTg6IGZhbHNlLFxuICAkYmFja2dyb3VuZC05OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtMTA6IGZhbHNlXG4pIHtcbiAgJGJhY2tncm91bmRzOiBjb21wYWN0KCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTIsICRiYWNrZ3JvdW5kLTMsICRiYWNrZ3JvdW5kLTQsICRiYWNrZ3JvdW5kLTUsXG4gICAgICAgICAgICAgICAgICAgICAgICAkYmFja2dyb3VuZC02LCAkYmFja2dyb3VuZC03LCAkYmFja2dyb3VuZC04LCAkYmFja2dyb3VuZC05LCAkYmFja2dyb3VuZC0xMCk7XG4gICRtdWx0LWJnczogLWNvbXBhc3MtbGlzdC1zaXplKCRiYWNrZ3JvdW5kcykgPiAxO1xuICAkYWRkLXBpZS1iZzogcHJlZml4ZWQoLXBpZSwgICAkYmFja2dyb3VuZHMpIG9yICRtdWx0LWJncztcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIGFuZCBwcmVmaXhlZCgtc3ZnLCAgICAkYmFja2dyb3VuZHMpIHsgICAgICBiYWNrZ3JvdW5kOiAgICAtc3ZnKCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAgICAkYmFja2dyb3VuZHMpIHsgICAgICBiYWNrZ3JvdW5kOiAgICAtb3dnKCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkYmFja2dyb3VuZHMpIHsgICAgICBiYWNrZ3JvdW5kOiAtd2Via2l0KCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIGFuZCBwcmVmaXhlZCgtbW96LCAgICAkYmFja2dyb3VuZHMpIHsgICAgICBiYWNrZ3JvdW5kOiAgICAtbW96KCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIGFuZCBwcmVmaXhlZCgtbywgICAgICAkYmFja2dyb3VuZHMpIHsgICAgICBiYWNrZ3JvdW5kOiAgICAgIC1vKCRiYWNrZ3JvdW5kcyk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIGFuZCAkYWRkLXBpZS1iZyAgICAgICAgICAgICAgICAgICAgIHsgLXBpZS1iYWNrZ3JvdW5kOiAgICAtcGllKCRiYWNrZ3JvdW5kcyk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiAgICAgICAgICRiYWNrZ3JvdW5kcyA7XG59XG5cbkBtaXhpbiBiYWNrZ3JvdW5kLXdpdGgtY3NzMi1mYWxsYmFjayhcbiAgJGJhY2tncm91bmQtMSxcbiAgJGJhY2tncm91bmQtMjogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTM6IGZhbHNlLFxuICAkYmFja2dyb3VuZC00OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtNTogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTY6IGZhbHNlLFxuICAkYmFja2dyb3VuZC03OiBmYWxzZSxcbiAgJGJhY2tncm91bmQtODogZmFsc2UsXG4gICRiYWNrZ3JvdW5kLTk6IGZhbHNlLFxuICAkYmFja2dyb3VuZC0xMDogZmFsc2Vcbikge1xuICAkYmFja2dyb3VuZHM6IGNvbXBhY3QoJGJhY2tncm91bmQtMSwgJGJhY2tncm91bmQtMiwgJGJhY2tncm91bmQtMywgJGJhY2tncm91bmQtNCwgJGJhY2tncm91bmQtNSxcbiAgICAgICAgICAgICAgICAgICAgICAgICRiYWNrZ3JvdW5kLTYsICRiYWNrZ3JvdW5kLTcsICRiYWNrZ3JvdW5kLTgsICRiYWNrZ3JvdW5kLTksICRiYWNrZ3JvdW5kLTEwKTtcbiAgJG11bHQtYmdzOiAtY29tcGFzcy1saXN0LXNpemUoJGJhY2tncm91bmRzKSA+IDE7XG4gICRzaW1wbGUtYmFja2dyb3VuZDogaWYoJG11bHQtYmdzIG9yIHByZWZpeGVkKC1jc3MyLCAkYmFja2dyb3VuZHMpLCAtY3NzMigtY29tcGFzcy1udGgoJGJhY2tncm91bmRzLCBsYXN0KSksIGZhbHNlKTtcbiAgQGlmIG5vdChibGFuaygkc2ltcGxlLWJhY2tncm91bmQpKSB7IGJhY2tncm91bmQ6ICRzaW1wbGUtYmFja2dyb3VuZDsgfVxuICBAaW5jbHVkZSBiYWNrZ3JvdW5kKCRiYWNrZ3JvdW5kLTEsICRiYWNrZ3JvdW5kLTIsICRiYWNrZ3JvdW5kLTMsICRiYWNrZ3JvdW5kLTQsICRiYWNrZ3JvdW5kLTUsXG4gICAgICAgICAgICAgICAgICAgICAgJGJhY2tncm91bmQtNiwgJGJhY2tncm91bmQtNywgJGJhY2tncm91bmQtOCwgJGJhY2tncm91bmQtOSwgJGJhY2tncm91bmQtMTApO1xufVxuXG5cbi8vIEJhY2tncm91bmQgaW1hZ2UgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGJhY2tncm91bmQtaW1hZ2UoXG4gICRpbWFnZS0xLFxuICAkaW1hZ2UtMjogZmFsc2UsXG4gICRpbWFnZS0zOiBmYWxzZSxcbiAgJGltYWdlLTQ6IGZhbHNlLFxuICAkaW1hZ2UtNTogZmFsc2UsXG4gICRpbWFnZS02OiBmYWxzZSxcbiAgJGltYWdlLTc6IGZhbHNlLFxuICAkaW1hZ2UtODogZmFsc2UsXG4gICRpbWFnZS05OiBmYWxzZSxcbiAgJGltYWdlLTEwOiBmYWxzZVxuKSB7XG4gICRpbWFnZXM6IGNvbXBhY3QoJGltYWdlLTEsICRpbWFnZS0yLCAkaW1hZ2UtMywgJGltYWdlLTQsICRpbWFnZS01LCAkaW1hZ2UtNiwgJGltYWdlLTcsICRpbWFnZS04LCAkaW1hZ2UtOSwgJGltYWdlLTEwKTtcbiAgJGFkZC1waWUtYmc6IHByZWZpeGVkKC1waWUsICAgJGltYWdlcykgb3IgLWNvbXBhc3MtbGlzdC1zaXplKCRpbWFnZXMpID4gMTtcblxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgYW5kIHByZWZpeGVkKC1zdmcsICAgICRpbWFnZXMpIHsgYmFja2dyb3VuZC1pbWFnZTogICAgLXN2ZygkaW1hZ2VzKTsgYmFja2dyb3VuZC1zaXplOiAxMDAlOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgICAgJGltYWdlcykgeyBiYWNrZ3JvdW5kLWltYWdlOiAgICAtb3dnKCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJGltYWdlcykgeyBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0KCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICBhbmQgcHJlZml4ZWQoLW1veiwgICAgJGltYWdlcykgeyBiYWNrZ3JvdW5kLWltYWdlOiAgICAtbW96KCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICBhbmQgcHJlZml4ZWQoLW8sICAgICAgJGltYWdlcykgeyBiYWNrZ3JvdW5kLWltYWdlOiAgICAgIC1vKCRpbWFnZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICBhbmQgJGFkZC1waWUtYmcgICAgICAgICAgICAgICAgeyBAd2FybiBcIlBJRSBkb2VzIG5vdCBzdXBwb3J0IGJhY2tncm91bmQtaW1hZ2UuIFVzZSBAaW5jbHVkZSBiYWNrZ3JvdW5kKCN7JGltYWdlc30pIGluc3RlYWQuXCIgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogICAgICAgICAkaW1hZ2VzIDtcbn1cblxuLy8gRW1pdCBhIElFLVNwZWNpZmljIGZpbHRlcnMgdGhhdCByZW5kZXJzIGEgc2ltcGxlIGxpbmVhciBncmFkaWVudC5cbi8vIEZvciB1c2UgaW4gSUUgNiAtIDguIEJlc3QgcHJhY3RpY2Ugd291bGQgaGF2ZSB5b3UgYXBwbHkgdGhpcyB2aWEgYVxuLy8gY29uZGl0aW9uYWwgSUUgc3R5bGVzaGVldCwgYnV0IGlmIHlvdSBtdXN0LCB5b3Ugc2hvdWxkIHBsYWNlIHRoaXMgYmVmb3JlXG4vLyBhbnkgYmFja2dyb3VuZC1pbWFnZSBwcm9wZXJ0aWVzIHRoYXQgeW91IGhhdmUgc3BlY2lmaWVkLlxuLy9cbi8vIEZvciB0aGUgYCRvcmllbnRhdGlvbmAgcGFyYW1ldGVyLCB5b3UgY2FuIHBhc3MgYHZlcnRpY2FsYCBvciBgaG9yaXpvbnRhbGAuXG5AbWl4aW4gZmlsdGVyLWdyYWRpZW50KCRzdGFydC1jb2xvciwgJGVuZC1jb2xvciwgJG9yaWVudGF0aW9uOiB2ZXJ0aWNhbCkge1xuICBAaW5jbHVkZSBoYXMtbGF5b3V0O1xuICAkZ3JhZGllbnQtdHlwZTogaWYoJG9yaWVudGF0aW9uID09IHZlcnRpY2FsLCAwLCAxKTtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4IHtcbiAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChncmFkaWVudFR5cGU9I3skZ3JhZGllbnQtdHlwZX0sIHN0YXJ0Q29sb3JzdHI9JyN7aWUtaGV4LXN0cigkc3RhcnQtY29sb3IpfScsIGVuZENvbG9yc3RyPScje2llLWhleC1zdHIoJGVuZC1jb2xvcil9Jyk7XG4gIH1cbn1cblxuXG4vLyBCb3JkZXIgaW1hZ2UgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyBwcm9wZXJ0aWVzIGFuZCB2YWx1ZXMuXG5AbWl4aW4gYm9yZGVyLWltYWdlKCR2YWx1ZSkge1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgeyAgICAtbW96LWJvcmRlci1pbWFnZTogICAgLW1veihyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIHsgLXdlYmtpdC1ib3JkZXItaW1hZ2U6ICAgIC1vd2cocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICB7IC13ZWJraXQtYm9yZGVyLWltYWdlOiAtd2Via2l0KHJlamVjdCgtY29tcGFzcy1saXN0KCR2YWx1ZSksIGZpbGwpKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgeyAgICAgIC1vLWJvcmRlci1pbWFnZTogICAgICAtbyhyZWplY3QoLWNvbXBhc3MtbGlzdCgkdmFsdWUpLCBmaWxsKSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIHsgICAgICAgICBib3JkZXItaW1hZ2U6ICAgIC1zdmcocmVqZWN0KC1jb21wYXNzLWxpc3QoJHZhbHVlKSwgZmlsbCkpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyLWltYWdlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZTtcbn1cblxuLy8gTGlzdCBzdHlsZSBpbWFnZSBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gbGlzdC1zdHlsZS1pbWFnZSgkaW1hZ2UpIHtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIGFuZCBwcmVmaXhlZCgtbW96LCAgICAkaW1hZ2UpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLW1veigkaW1hZ2UpOyB9XG4gIEBpZiAkc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyBhbmQgcHJlZml4ZWQoLW93ZywgICAgJGltYWdlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgIC1vd2coJGltYWdlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgYW5kIHByZWZpeGVkKC13ZWJraXQsICRpbWFnZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAtd2Via2l0KCRpbWFnZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIGFuZCBwcmVmaXhlZCgtbywgICAgICAkaW1hZ2UpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgICAtbygkaW1hZ2UpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICBhbmQgcHJlZml4ZWQoLXN2ZywgICAgJGltYWdlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6ICAgIC1zdmcoJGltYWdlKTsgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LXN0eWxlLWltYWdlOiAgICAgICAgICRpbWFnZSA7XG59XG5cbi8vIExpc3Qgc3R5bGUgcHJvcGVydHkgc3VwcG9ydCBmb3IgdmVuZG9yIHByZWZpeGluZyB3aXRoaW4gdmFsdWVzLlxuQG1peGluIGxpc3Qtc3R5bGUoJHZhbHVlKSB7XG4gICR2YWx1ZTogLWNvbXBhc3MtbGlzdCgkdmFsdWUpO1xuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgYW5kIHByZWZpeGVkKC1tb3osICAgICR2YWx1ZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAtbW96KCR2YWx1ZSk7IH1cbiAgQGlmICRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIGFuZCBwcmVmaXhlZCgtb3dnLCAgICAkdmFsdWUpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLW93ZygkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICBhbmQgcHJlZml4ZWQoLXdlYmtpdCwgJHZhbHVlKSB7IGxpc3Qtc3R5bGUtaW1hZ2U6IC13ZWJraXQoJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgYW5kIHByZWZpeGVkKC1vLCAgICAgICR2YWx1ZSkgeyBsaXN0LXN0eWxlLWltYWdlOiAgICAgIC1vKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIGFuZCBwcmVmaXhlZCgtc3ZnLCAgICAkdmFsdWUpIHsgbGlzdC1zdHlsZS1pbWFnZTogICAgLXN2ZygkdmFsdWUpOyB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Qtc3R5bGUtaW1hZ2U6ICAgICAgICAgJHZhbHVlIDtcbn1cblxuLy8gY29udGVudCBwcm9wZXJ0eSBzdXBwb3J0IGZvciB2ZW5kb3IgcHJlZml4aW5nIHdpdGhpbiB2YWx1ZXMuXG5AbWl4aW4gY29udGVudCgkdmFsdWUpIHtcbiAgJHZhbHVlOiAtY29tcGFzcy1saXN0KCR2YWx1ZSk7XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICBhbmQgcHJlZml4ZWQoLW1veiwgICAgJHZhbHVlKSB7IGNvbnRlbnQ6ICAgIC1tb3ooJHZhbHVlKTsgfVxuICBAaWYgJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgYW5kIHByZWZpeGVkKC1vd2csICAgICR2YWx1ZSkgeyBjb250ZW50OiAgICAtb3dnKCR2YWx1ZSk7IH1cbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIGFuZCBwcmVmaXhlZCgtd2Via2l0LCAkdmFsdWUpIHsgY29udGVudDogLXdlYmtpdCgkdmFsdWUpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICBhbmQgcHJlZml4ZWQoLW8sICAgICAgJHZhbHVlKSB7IGNvbnRlbnQ6ICAgICAgLW8oJHZhbHVlKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgYW5kIHByZWZpeGVkKC1zdmcsICAgICR2YWx1ZSkgeyBjb250ZW50OiAgICAtc3ZnKCR2YWx1ZSk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudDogICAgICAgICAkdmFsdWUgO1xufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCIuLi8uLi9zdXBwb3J0XCI7XG5cbi8vIFRoZSBgem9vbWAgYXBwcm9hY2ggZ2VuZXJhdGVzIGxlc3MgQ1NTIGJ1dCBkb2VzIG5vdCB2YWxpZGF0ZS5cbi8vIFNldCB0aGlzIHRvIGBibG9ja2AgdG8gdXNlIHRoZSBkaXNwbGF5LXByb3BlcnR5IHRvIGhhY2sgdGhlXG4vLyBlbGVtZW50IHRvIGdhaW4gbGF5b3V0LlxuJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaDogem9vbSAhZGVmYXVsdDtcblxuLy8gVGhpcyBtaXhpbiBjYXVzZXMgYW4gZWxlbWVudCBtYXRjaGluZyB0aGUgc2VsZWN0b3Jcbi8vIHRvIGdhaW4gdGhlIFwiaGFzTGF5b3V0XCIgcHJvcGVydHkgaW4gaW50ZXJuZXQgZXhwbG9yZXIuXG4vLyBNb3JlIGluZm9ybWF0aW9uIG9uIFtoYXNMYXlvdXRdKGh0dHA6Ly9yZWZlcmVuY2Uuc2l0ZXBvaW50LmNvbS9jc3MvaGFzbGF5b3V0KS5cbkBtaXhpbiBoYXMtbGF5b3V0KCRhcHByb2FjaDogJGRlZmF1bHQtaGFzLWxheW91dC1hcHByb2FjaCkge1xuICBAaWYgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSB7XG4gICAgQGlmICRhcHByb2FjaCA9PSB6b29tIHtcbiAgICAgIEBpbmNsdWRlIGhhcy1sYXlvdXQtem9vbTtcbiAgICB9IEBlbHNlIGlmICRhcHByb2FjaCA9PSBibG9jayB7XG4gICAgICBAaW5jbHVkZSBoYXMtbGF5b3V0LWJsb2NrO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQHdhcm4gXCJVbmtub3duIGhhcy1sYXlvdXQgYXBwcm9hY2g6ICN7JGFwcHJvYWNofVwiO1xuICAgICAgQGluY2x1ZGUgaGFzLWxheW91dC16b29tO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC16b29tIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IHtcbiAgICAqem9vbTogMTtcbiAgfVxufVxuXG5AbWl4aW4gaGFzLWxheW91dC1ibG9jayB7XG4gIEBpZiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIHtcbiAgICAvLyBUaGlzIG1ha2VzIGllNiBnZXQgbGF5b3V0XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIC8vIGFuZCB0aGlzIHB1dHMgaXQgYmFjayB0byBibG9ja1xuICAgICYgeyBkaXNwbGF5OiBibG9jazsgfVxuICB9XG59XG5cbi8vIEEgaGFjayB0byBzdXBwbHkgSUU2IChhbmQgYmVsb3cpIHdpdGggYSBkaWZmZXJlbnQgcHJvcGVydHkgdmFsdWUuXG4vLyBbUmVhZCBtb3JlXShodHRwOi8vd3d3LmNzc3BvcnRhbC5jb20vY3NzLWhhY2tzLyNpbl9jc3MtaW1wb3J0YW50KS5cbkBtaXhpbiBiYW5nLWhhY2soJHByb3BlcnR5LCAkdmFsdWUsICRpZTYtdmFsdWUpIHtcbiAgQGlmICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IHtcbiAgICAjeyRwcm9wZXJ0eX06ICN7JHZhbHVlfSAhaW1wb3J0YW50O1xuICAgICN7JHByb3BlcnR5fTogI3skaWU2LXZhbHVlfTtcbiAgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwiZnVuY3Rpb25zL2xpc3RzXCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydFwiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9ncmFkaWVudF9zdXBwb3J0XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbnN0YW50c1wiO1xuQGltcG9ydCBcImZ1bmN0aW9ucy9kaXNwbGF5XCI7XG5AaW1wb3J0IFwiZnVuY3Rpb25zL2NvbG9yc1wiO1xuIiwiLy9cbi8vIEEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUnVieSBsaXN0IGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvbGlzdHMucmJcbi8vXG5cblxuLy8gY29tcGFjdCBpcyBwYXJ0IG9mIGxpYnNhc3NcblxuQGZ1bmN0aW9uIC1jb21wYXNzLW50aCgkbGlzdCwgJHBsYWNlKSB7XG4gIC8vIFllcCwgU2Fzcy1saXN0cyBhcmUgMS1pbmRleGVkLlxuICBAaWYgJHBsYWNlID09IFwiZmlyc3RcIiB7XG4gICAgJHBsYWNlOiAxO1xuICB9XG4gIEBpZiAkcGxhY2UgPT0gXCJsYXN0XCIge1xuICAgICRwbGFjZTogbGVuZ3RoKCRsaXN0KTtcbiAgfVxuICBAcmV0dXJuIG50aCgkbGlzdCwgJHBsYWNlKTtcbn1cblxuLy8gY29tcGFzc19saXN0IGNhbid0IGJlIGltcGxlbWVudGVkIGluIHNhc3Mgc2NyaXB0XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1zcGFjZS1saXN0KCRpdGVtMSwgJGl0ZW0yOm51bGwsICRpdGVtMzpudWxsLCAkaXRlbTQ6bnVsbCwgJGl0ZW01Om51bGwsICRpdGVtNjpudWxsLCAkaXRlbTc6bnVsbCwgJGl0ZW04Om51bGwsICRpdGVtOTpudWxsKSB7XG4gICRpdGVtczogKCk7XG4gIC8vIFN1cHBvcnQgZm9yIHBvbHltb3JwaGlzbS5cbiAgQGlmIHR5cGUtb2YoJGl0ZW0xKSA9PSAnbGlzdCcge1xuICAgIC8vIFBhc3NpbmcgYSBzaW5nbGUgYXJyYXkgb2YgcHJvcGVydGllcy5cbiAgICAkaXRlbXM6ICRpdGVtMTtcbiAgfSBAZWxzZSB7XG4gICAgJGl0ZW1zOiAkaXRlbTEgJGl0ZW0yICRpdGVtMyAkaXRlbTQgJGl0ZW01ICRpdGVtNiAkaXRlbTcgJGl0ZW04ICRpdGVtOTtcbiAgfVxuXG4gICRmdWxsOiBmaXJzdC12YWx1ZS1vZigkaXRlbXMpO1xuXG4gIEBmb3IgJGkgZnJvbSAyIHRocm91Z2ggbGVuZ3RoKCRpdGVtcykge1xuICAgICRpdGVtOiBudGgoJGl0ZW1zLCAkaSk7XG4gICAgQGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJGZ1bGw6ICRmdWxsICRpdGVtO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGZ1bGw7XG59XG5cbkBmdW5jdGlvbiAtY29tcGFzcy1saXN0LXNpemUoJGxpc3QpIHtcbiAgQHJldHVybiBsZW5ndGgoJGxpc3QpO1xufVxuXG5AZnVuY3Rpb24gLWNvbXBhc3Mtc2xpY2UoJGxpc3QsICRzdGFydCwgJGVuZDogZmFsc2UpIHtcbiAgQGlmICRlbmQgPT0gZmFsc2Uge1xuICAgICRlbmQ6IGxlbmd0aCgkbGlzdCk7XG4gIH1cbiAgJGZ1bGw6IG50aCgkbGlzdCwgJHN0YXJ0KTtcbiAgQGZvciAkaSBmcm9tICRzdGFydCArIDEgdGhyb3VnaCAkZW5kIHtcbiAgICAkZnVsbDogJGZ1bGwsIG50aCgkbGlzdCwgJGkpO1xuICB9XG4gIEByZXR1cm4gJGZ1bGw7XG59XG5cbkBmdW5jdGlvbiByZWplY3QoJGxpc3QsICRyZWplY3QxLCAkcmVqZWN0MjpudWxsLCAkcmVqZWN0MzpudWxsLCAkcmVqZWN0NDpudWxsLCAkcmVqZWN0NTpudWxsLCAkcmVqZWN0NjpudWxsLCAkcmVqZWN0NzpudWxsLCAkcmVqZWN0ODpudWxsLCAkcmVqZWN0OTpudWxsKSB7XG4gICRyZWplY3RzOiAkcmVqZWN0MSwgJHJlamVjdDIsICRyZWplY3QzLCAkcmVqZWN0NCwgJHJlamVjdDUsICRyZWplY3Q2LCAkcmVqZWN0NywgJHJlamVjdDgsICRyZWplY3Q5O1xuXG4gICRmdWxsOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJGxpc3Qge1xuICAgIEBpZiBpbmRleCgkcmVqZWN0cywgJGl0ZW0pIHt9XG4gICAgQGVsc2Uge1xuICAgICAgQGlmICRmdWxsIHtcbiAgICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTtcbiAgICAgIH1cbiAgICAgIEBlbHNlIHtcbiAgICAgICAgJGZ1bGw6ICRpdGVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuICRmdWxsO1xufVxuXG5AZnVuY3Rpb24gZmlyc3QtdmFsdWUtb2YoJGxpc3QpIHtcbiAgQHJldHVybiBudGgoJGxpc3QsIDEpO1xufVxuXG5AZnVuY3Rpb24gY29tcGFjdCgkdmFycy4uLikge1xuICAkc2VwYXJhdG9yOiBsaXN0LXNlcGFyYXRvcigkdmFycyk7XG4gICRsaXN0OiAoKTtcbiAgQGVhY2ggJHZhciBpbiAkdmFycyB7XG4gICAgICBAaWYgJHZhciB7XG4gICAgICAgICAgJGxpc3Q6IGFwcGVuZCgkbGlzdCwgJHZhciwgJHNlcGFyYXRvcik7XG4gICAgICB9XG4gIH1cbiAgQHJldHVybiAkbGlzdDtcbn1cbiIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNyb3NzIGJyb3dzZXIgc3VwcG9ydCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9saWIvY29tcGFzcy9zYXNzX2V4dGVuc2lvbnMvZnVuY3Rpb25zL2Nyb3NzX2Jyb3dzZXJfc3VwcG9ydC5yYlxuLy8gXG5cbkBmdW5jdGlvbiBwcmVmaXhlZCgkcHJlZml4LCAkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICAkcHJvcGVydGllczogJHByb3BlcnR5MSwgJHByb3BlcnR5MiwgJHByb3BlcnR5MywgJHByb3BlcnR5NCwgJHByb3BlcnR5NSwgJHByb3BlcnR5NiwgJHByb3BlcnR5NywgJHByb3BlcnR5OCwgJHByb3BlcnR5OTtcbiAgJHByZWZpeGVkOiBmYWxzZTtcbiAgQGVhY2ggJGl0ZW0gaW4gJHByb3BlcnRpZXMge1xuICAgIEBpZiB0eXBlLW9mKCRpdGVtKSA9PSAnc3RyaW5nJyB7XG4gICAgICAkcHJlZml4ZWQ6ICRwcmVmaXhlZCBvciBzdHItaW5kZXgoJGl0ZW0sICd1cmwnKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sICdyZ2InKSAhPSAxIGFuZCBzdHItaW5kZXgoJGl0ZW0sICcjJykgIT0gMTtcbiAgICB9IEBlbHNlaWYgdHlwZS1vZigkaXRlbSkgPT0gJ2NvbG9yJyB7XG4gICAgfSBAZWxzZWlmICRpdGVtICE9IG51bGwge1xuICAgICAgJHByZWZpeGVkOiB0cnVlO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuICRwcmVmaXhlZDtcbn1cblxuQGZ1bmN0aW9uIHByZWZpeCgkcHJlZml4LCAkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICAkcHJvcGVydGllczogXCJcIjtcblxuICAvLyBTdXBwb3J0IGZvciBwb2x5bW9ycGhpc20uXG4gIEBpZiB0eXBlLW9mKCRwcm9wZXJ0eTEpID09ICdsaXN0JyB7XG4gICAgLy8gUGFzc2luZyBhIHNpbmdsZSBhcnJheSBvZiBwcm9wZXJ0aWVzLlxuICAgICRwcm9wZXJ0aWVzOiAkcHJvcGVydHkxO1xuICB9IEBlbHNlIHtcbiAgICAvLyBQYXNzaW5nIG11bHRpcGxlIHByb3BlcnRpZXMuXG4gICAgJHByb3BlcnRpZXM6ICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTk7XG4gIH1cblxuICAkcHJvcHM6IGZhbHNlO1xuICBAZWFjaCAkaXRlbSBpbiAkcHJvcGVydGllcyB7XG4gICAgQGlmICRpdGVtID09IG51bGwge31cbiAgICBAZWxzZSB7XG4gICAgICBAaWYgcHJlZml4ZWQoJHByZWZpeCwgJGl0ZW0pIHtcbiAgICAgICAgJGl0ZW06ICN7JHByZWZpeH0tI3skaXRlbX07XG4gICAgICB9XG4gICAgICBAaWYgJHByb3BzIHtcbiAgICAgICAgJHByb3BzOiAkcHJvcHMsICRpdGVtO1xuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICAkcHJvcHM6ICRpdGVtO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBAcmV0dXJuICRwcm9wcztcbn1cblxuQGZ1bmN0aW9uIC1zdmcoJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1zdmcnLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC1vd2coJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1vd2cnLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC13ZWJraXQoJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy13ZWJraXQnLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC1tb3ooJHByb3BlcnR5MSwgJHByb3BlcnR5MjpudWxsLCAkcHJvcGVydHkzOm51bGwsICRwcm9wZXJ0eTQ6bnVsbCwgJHByb3BlcnR5NTpudWxsLCAkcHJvcGVydHk2Om51bGwsICRwcm9wZXJ0eTc6bnVsbCwgJHByb3BlcnR5ODpudWxsLCAkcHJvcGVydHk5Om51bGwpIHtcbiAgQHJldHVybiBwcmVmaXgoJy1tb3onLCAkcHJvcGVydHkxLCAkcHJvcGVydHkyLCAkcHJvcGVydHkzLCAkcHJvcGVydHk0LCAkcHJvcGVydHk1LCAkcHJvcGVydHk2LCAkcHJvcGVydHk3LCAkcHJvcGVydHk4LCAkcHJvcGVydHk5KTtcbn1cblxuQGZ1bmN0aW9uIC1vKCRwcm9wZXJ0eTEsICRwcm9wZXJ0eTI6bnVsbCwgJHByb3BlcnR5MzpudWxsLCAkcHJvcGVydHk0Om51bGwsICRwcm9wZXJ0eTU6bnVsbCwgJHByb3BlcnR5NjpudWxsLCAkcHJvcGVydHk3Om51bGwsICRwcm9wZXJ0eTg6bnVsbCwgJHByb3BlcnR5OTpudWxsKSB7XG4gIEByZXR1cm4gcHJlZml4KCctbycsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuXG5AZnVuY3Rpb24gLXBpZSgkcHJvcGVydHkxLCAkcHJvcGVydHkyOm51bGwsICRwcm9wZXJ0eTM6bnVsbCwgJHByb3BlcnR5NDpudWxsLCAkcHJvcGVydHk1Om51bGwsICRwcm9wZXJ0eTY6bnVsbCwgJHByb3BlcnR5NzpudWxsLCAkcHJvcGVydHk4Om51bGwsICRwcm9wZXJ0eTk6bnVsbCkge1xuICBAcmV0dXJuIHByZWZpeCgnLXBpZScsICRwcm9wZXJ0eTEsICRwcm9wZXJ0eTIsICRwcm9wZXJ0eTMsICRwcm9wZXJ0eTQsICRwcm9wZXJ0eTUsICRwcm9wZXJ0eTYsICRwcm9wZXJ0eTcsICRwcm9wZXJ0eTgsICRwcm9wZXJ0eTkpO1xufVxuIiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgZ3JhZGllbnQgc3VwcG9ydCBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3YwLjEyLjIvbGliL2NvbXBhc3Mvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9ncmFkaWVudF9zdXBwb3J0LnJiXG4vLyBcblxuQGZ1bmN0aW9uIGNvbG9yLXN0b3BzKCRpdGVtMSwgJGl0ZW0yOm51bGwsICRpdGVtMzpudWxsLCAkaXRlbTQ6bnVsbCwgJGl0ZW01Om51bGwsICRpdGVtNjpudWxsLCAkaXRlbTc6bnVsbCwgJGl0ZW04Om51bGwsICRpdGVtOTpudWxsKSB7XG4gICRpdGVtczogJGl0ZW0yLCAkaXRlbTMsICRpdGVtNCwgJGl0ZW01LCAkaXRlbTYsICRpdGVtNywgJGl0ZW04LCAkaXRlbTk7XG4gICRmdWxsOiAkaXRlbTE7XG4gIEBlYWNoICRpdGVtIGluICRpdGVtcyB7XG4gICAgQGlmICRpdGVtICE9IG51bGwge1xuICAgICAgJGZ1bGw6ICRmdWxsLCAkaXRlbTtcbiAgICB9ICAgIFxuICB9XG4gIEByZXR1cm4gJGZ1bGw7XG59IiwiLy8gXG4vLyBBIHBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIFJ1YnkgY29uc3RhbnRzIGZ1bmN0aW9ucyBmcm9tIENvbXBhc3M6XG4vLyBodHRwczovL2dpdGh1Yi5jb20vQ29tcGFzcy9jb21wYXNzL2Jsb2Ivc3RhYmxlL2xpYi9jb21wYXNzL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvY29uc3RhbnRzLnJiXG4vLyBcblxuQGZ1bmN0aW9uIG9wcG9zaXRlLXBvc2l0aW9uKCRmcm9tKSB7XG4gICAgQGlmICgkZnJvbSA9PSB0b3ApIHtcbiAgICAgICAgQHJldHVybiBib3R0b207XG4gICAgfSBAZWxzZSBpZiAoJGZyb20gPT0gYm90dG9tKSB7XG4gICAgICAgIEByZXR1cm4gdG9wO1xuICAgIH0gQGVsc2UgaWYgKCRmcm9tID09IGxlZnQpIHtcbiAgICAgICAgQHJldHVybiByaWdodDtcbiAgICB9IEBlbHNlIGlmICgkZnJvbSA9PSByaWdodCkge1xuICAgICAgICBAcmV0dXJuIGxlZnQ7XG4gICAgfSBAZWxzZSBpZiAoJGZyb20gPT0gY2VudGVyKSB7XG4gICAgICAgIEByZXR1cm4gY2VudGVyO1xuICAgIH1cbn1cbiIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGRpc3BsYXkgZnVuY3Rpb25zIGZyb20gQ29tcGFzczpcbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9Db21wYXNzL2NvbXBhc3MvYmxvYi9zdGFibGUvY29yZS9saWIvY29tcGFzcy9jb3JlL3Nhc3NfZXh0ZW5zaW9ucy9mdW5jdGlvbnMvZGlzcGxheS5yYlxuLy8gXG5cbkBmdW5jdGlvbiBlbGVtZW50cy1vZi10eXBlKCR0eXBlKXtcbiAgICBAaWYgKCR0eXBlID09IGJsb2NrKXtcbiAgICAgICAgQHJldHVybiBhZGRyZXNzLCBhcnRpY2xlLCBhc2lkZSwgYmxvY2txdW90ZSwgY2VudGVyLCBkaXIsIGRpdiwgZGQsIGRldGFpbHMsIGRsLCBkdCwgZmllbGRzZXQsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9ybSwgZm9vdGVyLCBmcmFtZXNldCwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgaHIsIGhlYWRlciwgaGdyb3VwLCBpc2luZGV4LCBtYWluLCBtZW51LCBuYXYsIG5vZnJhbWVzLCBub3NjcmlwdCwgb2wsIHAsIHByZSwgc2VjdGlvbiwgc3VtbWFyeSwgdWw7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaW5saW5lKXtcbiAgICAgICAgQHJldHVybiBhLCBhYmJyLCBhY3JvbnltLCBhdWRpbywgYiwgYmFzZWZvbnQsIGJkbywgYmlnLCBiciwgY2FudmFzLCBjaXRlLCBjb2RlLCBjb21tYW5kLCBkYXRhbGlzdCwgZGZuLCBlbSwgZW1iZWQsIGZvbnQsIGksIGltZywgaW5wdXQsIGtleWdlbiwga2JkLCBsYWJlbCwgbWFyaywgbWV0ZXIsIG91dHB1dCwgcHJvZ3Jlc3MsIHEsIHJwLCBydCwgcnVieSwgcywgc2FtcCwgc2VsZWN0LCBzbWFsbCwgc3Bhbiwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0ZXh0YXJlYSwgdGltZSwgdHQsIHUsIHZhciwgdmlkZW8sIHdicjtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBpbmxpbmUtYmxvY2spe1xuICAgICAgICBAcmV0dXJuIGltZztcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZSl7XG4gICAgICAgIEByZXR1cm4gdGFibGU7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gbGlzdC1pdGVtKXtcbiAgICAgICAgQHJldHVybiBsaTtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1yb3ctZ3JvdXApe1xuICAgICAgICBAcmV0dXJuIHRib2R5O1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLWhlYWRlci1ncm91cCl7XG4gICAgICAgIEByZXR1cm4gdGhlYWQ7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGFibGUtZm9vdGVyLWdyb3VwKXtcbiAgICAgICAgQHJldHVybiB0Zm9vdDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSB0YWJsZS1yb3cpe1xuICAgICAgICBAcmV0dXJuIHRyO1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IHRhYmxlLWNlbGwpe1xuICAgICAgICBAcmV0dXJuIHRoLCB0ZDtcbiAgICB9IEBlbHNlIGlmICgkdHlwZSA9PSBodG1sNS1ibG9jayl7XG4gICAgICAgIEByZXR1cm4gYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWFpbiwgbWVudSwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5O1xuICAgIH0gQGVsc2UgaWYgKCR0eXBlID09IGh0bWw1LWlubGluZSl7XG4gICAgICAgIEByZXR1cm4gYXVkaW8sIGNhbnZhcywgY29tbWFuZCwgZGF0YWxpc3QsIGVtYmVkLCBrZXlnZW4sIG1hcmssIG1ldGVyLCBvdXRwdXQsIHByb2dyZXNzLCBycCwgcnQsIHJ1YnksIHRpbWUsIHZpZGVvLCB3YnI7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gaHRtbDUpe1xuICAgICAgICBAcmV0dXJuIGFydGljbGUsIGFzaWRlLCBhdWRpbywgY2FudmFzLCBjb21tYW5kLCBkYXRhbGlzdCwgZGV0YWlscywgZW1iZWQsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwga2V5Z2VuLCBtYWluLCBtYXJrLCBtZW51LCBtZXRlciwgbmF2LCBvdXRwdXQsIHByb2dyZXNzLCBycCwgcnQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksIHRpbWUsIHZpZGVvLCB3YnI7XG4gICAgfSBAZWxzZSBpZiAoJHR5cGUgPT0gdGV4dC1pbnB1dCl7XG4gICAgICAgIEByZXR1cm4gaW5wdXQsIHRleHRhcmVhO1xuICAgIH1cbn1cbiIsIi8vIFxuLy8gQSBwYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBSdWJ5IGNvbG9ycyBmdW5jdGlvbnMgZnJvbSBDb21wYXNzOlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0NvbXBhc3MvY29tcGFzcy9ibG9iL3N0YWJsZS9jb3JlL2xpYi9jb21wYXNzL2NvcmUvc2Fzc19leHRlbnNpb25zL2Z1bmN0aW9ucy9jb2xvcnMucmJcbi8vXG5cbi8vIGEgZ2VuZXJpY2l6ZWQgdmVyc2lvbiBvZiBsaWdodGVuL2RhcmtlbiBzbyB0aGF0IG5lZ2F0aXZlIHZhbHVlcyBjYW4gYmUgdXNlZC5cbkBmdW5jdGlvbiBhZGp1c3QtbGlnaHRuZXNzKCRjb2xvciwgJGFtb3VudCkge1xuICAgIEByZXR1cm4gYWRqdXN0LWNvbG9yKCRjb2xvciwgJGxpZ2h0bmVzczogJGFtb3VudCk7XG59XG5cbi8vIFNjYWxlcyBhIGNvbG9yJ3MgbGlnaHRuZXNzIGJ5IHNvbWUgcGVyY2VudGFnZS5cbi8vIElmIHRoZSBhbW91bnQgaXMgbmVnYXRpdmUsIHRoZSBjb2xvciBpcyBzY2FsZWQgZGFya2VyLCBpZiBwb3NpdGl2ZSwgaXQgaXMgc2NhbGVkIGxpZ2h0ZXIuXG4vLyBUaGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGEgcHVyZSBsaWdodCBvciBkYXJrIGNvbG9yIHVubGVzcyB0aGUgYW1vdW50IGlzIDEwMCUuXG5AZnVuY3Rpb24gc2NhbGUtbGlnaHRuZXNzKCRjb2xvciwgJGFtb3VudCkge1xuICAgIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkbGlnaHRuZXNzOiAkYW1vdW50KTtcbn1cblxuLy8gYSBnZW5lcmljaXplZCB2ZXJzaW9uIG9mIHNhdHVyYXRlL2Rlc2F0dXJhdGUgc28gdGhhdCBuZWdhdGl2ZSB2YWx1ZXMgY2FuIGJlIHVzZWQuXG5AZnVuY3Rpb24gYWRqdXN0LXNhdHVyYXRpb24oJGNvbG9yLCAkYW1vdW50KSB7XG4gICAgQHJldHVybiBhZGp1c3QtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7XG59XG5cbi8vIFNjYWxlcyBhIGNvbG9yJ3Mgc2F0dXJhdGlvbiBieSBzb21lIHBlcmNlbnRhZ2UuXG4vLyBJZiB0aGUgYW1vdW50IGlzIG5lZ2F0aXZlLCB0aGUgY29sb3IgaXMgZGVzYXR1cmF0ZWQsIGlmIHBvc2l0aXZlLCBpdCBpcyBzYXR1cmF0ZWQuXG4vLyBUaGlzIHdpbGwgbmV2ZXIgcmV0dXJuIGEgcHVyZSBzYXR1cmF0ZWQgb3IgZGVzYXR1cmF0ZWQgY29sb3IgdW5sZXNzIHRoZSBhbW91bnQgaXMgMTAwJS5cbkBmdW5jdGlvbiBzY2FsZS1zYXR1cmF0aW9uKCRjb2xvciwgJGFtb3VudCkge1xuICAgIEByZXR1cm4gc2NhbGUtY29sb3IoJGNvbG9yLCAkc2F0dXJhdGlvbjogJGFtb3VudCk7XG59XG5cbkBmdW5jdGlvbiBzaGFkZSgkY29sb3IsICRwZXJjZW50YWdlKSB7XG4gICAgQHJldHVybiBtaXgoIzAwMDAwMCwgJGNvbG9yLCAkcGVyY2VudGFnZSk7XG59XG5cbkBmdW5jdGlvbiB0aW50KCRjb2xvciwgJHBlcmNlbnRhZ2UpIHtcbiAgICBAcmV0dXJuIG1peCgjZmZmZmZmLCAkY29sb3IsICRwZXJjZW50YWdlKTtcbn1cblxuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBUaGUgZGVmYXVsdCB2YWx1ZSBpcyBgcGFkZGluZy1ib3hgIC0tIHRoZSBib3ggbW9kZWwgdXNlZCBieSBtb2Rlcm4gYnJvd3NlcnMuXG4vL1xuLy8gSWYgeW91IHdpc2ggdG8gZG8gc28sIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgY29uc3RhbnQgd2l0aCBgYm9yZGVyLWJveGBcbi8vXG4vLyBUbyBvdmVycmlkZSB0byB0aGUgZGVmYXVsdCBib3JkZXItYm94IG1vZGVsLCB1c2UgdGhpcyBjb2RlOlxuLy8gICAgICRkZWZhdWx0LWJhY2tncm91bmQtY2xpcDogYm9yZGVyLWJveFxuXG4kZGVmYXVsdC1iYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94ICFkZWZhdWx0O1xuXG4vLyBDbGlwIHRoZSBiYWNrZ3JvdW5kIChpbWFnZSBhbmQgY29sb3IpIGF0IHRoZSBlZGdlIG9mIHRoZSBwYWRkaW5nIG9yIGJvcmRlci5cbi8vXG4vLyBMZWdhbCBWYWx1ZXM6XG4vL1xuLy8gICAqIHBhZGRpbmctYm94XG4vLyAgICogYm9yZGVyLWJveFxuLy8gICAqIHRleHRcblxuQG1peGluIGJhY2tncm91bmQtY2xpcCgkY2xpcDogJGRlZmF1bHQtYmFja2dyb3VuZC1jbGlwKSB7XG4gIC8vIHdlYmtpdCBhbmQgbW96aWxsYSB1c2UgdGhlIGRlcHJlY2F0ZWQgc2hvcnQgW2JvcmRlciB8IHBhZGRpbmddXG4gICRjbGlwOiB1bnF1b3RlKCRjbGlwKTtcbiAgJGRlcHJlY2F0ZWQ6ICRjbGlwO1xuICBAaWYgJGNsaXAgPT0gcGFkZGluZy1ib3ggeyAkZGVwcmVjYXRlZDogcGFkZGluZzsgfVxuICBAaWYgJGNsaXAgPT0gYm9yZGVyLWJveCB7ICRkZXByZWNhdGVkOiBib3JkZXI7IH1cbiAgLy8gU3VwcG9ydCBmb3Igd2Via2l0IGFuZCBtb3ppbGxhJ3MgdXNlIG9mIHRoZSBkZXByZWNhdGVkIHNob3J0IGZvcm1cbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tncm91bmQtY2xpcCwgJGRlcHJlY2F0ZWQsXG4gICAgLW1veixcbiAgICAtd2Via2l0LFxuICAgIG5vdCgtbyksXG4gICAgbm90KC1tcyksXG4gICAgbm90KC1raHRtbCksXG4gICAgbm90IG9mZmljaWFsXG4gICk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZ3JvdW5kLWNsaXAsICRjbGlwLFxuICAgIG5vdCgtbW96KSxcbiAgICBub3QoLXdlYmtpdCksXG4gICAgbm90KC1vKSxcbiAgICBub3QoLW1zKSxcbiAgICAta2h0bWwsXG4gICAgb2ZmaWNpYWxcbiAgKTtcbn1cbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCIvLyBPdmVycmlkZSBgJGRlZmF1bHQtYmFja2dyb3VuZC1vcmlnaW5gIHRvIGNoYW5nZSB0aGUgZGVmYXVsdC5cblxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG4kZGVmYXVsdC1iYWNrZ3JvdW5kLW9yaWdpbjogY29udGVudC1ib3ggIWRlZmF1bHQ7XG5cbi8vIFBvc2l0aW9uIHRoZSBiYWNrZ3JvdW5kIG9mZiB0aGUgZWRnZSBvZiB0aGUgcGFkZGluZywgYm9yZGVyIG9yIGNvbnRlbnRcbi8vXG4vLyAqIFBvc3NpYmxlIHZhbHVlczpcbi8vICAgKiBgcGFkZGluZy1ib3hgXG4vLyAgICogYGJvcmRlci1ib3hgXG4vLyAgICogYGNvbnRlbnQtYm94YFxuLy8gKiBicm93c2VyIGRlZmF1bHRzIHRvIGBwYWRkaW5nLWJveGBcbi8vICogbWl4aW4gZGVmYXVsdHMgdG8gYGNvbnRlbnQtYm94YFxuXG5cbkBtaXhpbiBiYWNrZ3JvdW5kLW9yaWdpbigkb3JpZ2luOiAkZGVmYXVsdC1iYWNrZ3JvdW5kLW9yaWdpbikge1xuICAkb3JpZ2luOiB1bnF1b3RlKCRvcmlnaW4pO1xuICAvLyB3ZWJraXQgYW5kIG1vemlsbGEgdXNlIHRoZSBkZXByZWNhdGVkIHNob3J0IFtib3JkZXIgfCBwYWRkaW5nIHwgY29udGVudF1cbiAgJGRlcHJlY2F0ZWQ6ICRvcmlnaW47XG4gIEBpZiAkb3JpZ2luID09IHBhZGRpbmctYm94IHsgJGRlcHJlY2F0ZWQ6IHBhZGRpbmc7IH1cbiAgQGlmICRvcmlnaW4gPT0gYm9yZGVyLWJveCAgeyAkZGVwcmVjYXRlZDogYm9yZGVyOyAgfVxuICBAaWYgJG9yaWdpbiA9PSBjb250ZW50LWJveCB7ICRkZXByZWNhdGVkOiBjb250ZW50OyB9XG5cbiAgLy8gU3VwcG9ydCBmb3Igd2Via2l0IGFuZCBtb3ppbGxhJ3MgdXNlIG9mIHRoZSBkZXByZWNhdGVkIHNob3J0IGZvcm1cbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tncm91bmQtb3JpZ2luLCAkZGVwcmVjYXRlZCxcbiAgICAtbW96LFxuICAgIC13ZWJraXQsXG4gICAgbm90KC1vKSxcbiAgICBub3QoLW1zKSxcbiAgICBub3QoLWtodG1sKSxcbiAgICBub3Qgb2ZmaWNpYWxcbiAgKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGJhY2tncm91bmQtb3JpZ2luLCAkb3JpZ2luLFxuICAgIG5vdCgtbW96KSxcbiAgICBub3QoLXdlYmtpdCksXG4gICAgLW8sXG4gICAgLW1zLFxuICAgIC1raHRtbCxcbiAgICBvZmZpY2lhbFxuICApO1xufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gIG92ZXJyaWRlIHRvIGNoYW5nZSB0aGUgZGVmYXVsdFxuJGRlZmF1bHQtYmFja2dyb3VuZC1zaXplOiAxMDAlIGF1dG8gIWRlZmF1bHQ7XG5cbi8vIFNldCB0aGUgc2l6ZSBvZiBiYWNrZ3JvdW5kIGltYWdlcyB1c2luZyBweCwgd2lkdGggYW5kIGhlaWdodCwgb3IgcGVyY2VudGFnZXMuXG4vLyBDdXJyZW50bHkgc3VwcG9ydGVkIGluOiBPcGVyYSwgR2Vja28sIFdlYmtpdC5cbi8vXG4vLyAqIHBlcmNlbnRhZ2VzIGFyZSByZWxhdGl2ZSB0byB0aGUgYmFja2dyb3VuZC1vcmlnaW4gKGRlZmF1bHQgPSBwYWRkaW5nLWJveClcbi8vICogbWl4aW4gZGVmYXVsdHMgdG86IGAkZGVmYXVsdC1iYWNrZ3JvdW5kLXNpemVgXG5AbWl4aW4gYmFja2dyb3VuZC1zaXplKFxuICAkc2l6ZS0xOiAkZGVmYXVsdC1iYWNrZ3JvdW5kLXNpemUsXG4gICRzaXplLTI6IGZhbHNlLFxuICAkc2l6ZS0zOiBmYWxzZSxcbiAgJHNpemUtNDogZmFsc2UsXG4gICRzaXplLTU6IGZhbHNlLFxuICAkc2l6ZS02OiBmYWxzZSxcbiAgJHNpemUtNzogZmFsc2UsXG4gICRzaXplLTg6IGZhbHNlLFxuICAkc2l6ZS05OiBmYWxzZSxcbiAgJHNpemUtMTA6IGZhbHNlXG4pIHtcbiAgJHNpemUtMTogaWYodHlwZS1vZigkc2l6ZS0xKSA9PSBzdHJpbmcsIHVucXVvdGUoJHNpemUtMSksICRzaXplLTEpO1xuICAkc2l6ZXM6IGNvbXBhY3QoJHNpemUtMSwgJHNpemUtMiwgJHNpemUtMywgJHNpemUtNCwgJHNpemUtNSwgJHNpemUtNiwgJHNpemUtNywgJHNpemUtOCwgJHNpemUtOSwgJHNpemUtMTApO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwoYmFja2dyb3VuZC1zaXplLCAkc2l6ZXMsIC1tb3osIC13ZWJraXQsIC1vLCBub3QoLW1zKSwgbm90KC1raHRtbCkpO1xufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gQ3Jvc3MtYnJvd3NlciBzdXBwb3J0IGZvciBAZm9udC1mYWNlLiBTdXBwb3J0cyBJRSwgR2Vja28sIFdlYmtpdCwgT3BlcmEuXG4vL1xuLy8gKiAkbmFtZSBpcyByZXF1aXJlZCwgYXJiaXRyYXJ5LCBhbmQgd2hhdCB5b3Ugd2lsbCB1c2UgaW4gZm9udCBzdGFja3MuXG4vLyAqICRmb250LWZpbGVzIGlzIHJlcXVpcmVkIHVzaW5nIGZvbnQtZmlsZXMoJ3JlbGF0aXZlL2xvY2F0aW9uJywgJ2Zvcm1hdCcpLlxuLy8gICBmb3IgYmVzdCByZXN1bHRzIHVzZSB0aGlzIG9yZGVyOiB3b2ZmLCBvcGVudHlwZS90cnVldHlwZSwgc3ZnXG4vLyAqICRlb3QgaXMgcmVxdWlyZWQgYnkgSUUsIGFuZCBpcyBhIHJlbGF0aXZlIGxvY2F0aW9uIG9mIHRoZSBlb3QgZmlsZS5cbi8vICogJHdlaWdodCBzaG93cyBpZiB0aGUgZm9udCBpcyBib2xkLCBkZWZhdWx0cyB0byBub3JtYWxcbi8vICogJHN0eWxlIGRlZmF1bHRzIHRvIG5vcm1hbCwgbWlnaHQgYmUgYWxzbyBpdGFsaWNcbi8vICogRm9yIGFuZHJvaWQgMi4yIENvbXBhdGlibGl0eSwgcGxlYXNlIGVuc3VyZSB0aGF0IHlvdXIgd2ViIHBhZ2UgaGFzXG4vLyAgIGEgbWV0YSB2aWV3cG9ydCB0YWcuXG4vLyAqIFRvIHN1cHBvcnQgaU9TIDwgNC4yLCBhbiBTVkcgZmlsZSBtdXN0IGJlIHByb3ZpZGVkXG4vL1xuLy8gSWYgeW91IG5lZWQgdG8gZ2VuZXJhdGUgb3RoZXIgZm9ybWF0cyBjaGVjayBvdXQgdGhlIEZvbnQgU3F1aXJyZWxcbi8vIFtmb250IGdlbmVyYXRvcl0oaHR0cDovL3d3dy5mb250c3F1aXJyZWwuY29tL2ZvbnRmYWNlL2dlbmVyYXRvcilcbi8vXG5cbi8vIEluIG9yZGVyIHRvIHJlZmVyIHRvIGEgc3BlY2lmaWMgc3R5bGUgb2YgdGhlIGZvbnQgaW4geW91ciBzdHlsZXNoZWV0cyBhcyBcbi8vIGUuZy4gXCJmb250LXN0eWxlOiBpdGFsaWM7XCIsICB5b3UgbWF5IGFkZCBhIGNvdXBsZSBvZiBAZm9udC1mYWNlIGluY2x1ZGVzXG4vLyBjb250YWluaW5nIHRoZSByZXNwZWN0aXZlIGZvbnQgZmlsZXMgZm9yIGVhY2ggc3R5bGUgYW5kIHNwZWN5aW5nXG4vLyByZXNwZWN0aXZlIHRoZSAkc3R5bGUgcGFyYW1ldGVyLlxuXG4vLyBPcmRlciBvZiB0aGUgaW5jbHVkZXMgbWF0dGVycywgYW5kIGl0IGlzOiBub3JtYWwsIGJvbGQsIGl0YWxpYywgYm9sZCtpdGFsaWMuXG5cbkBtaXhpbiBmb250LWZhY2UoXG4gICRuYW1lLCBcbiAgJGZvbnQtZmlsZXMsIFxuICAkZW90OiBmYWxzZSxcbiAgJHdlaWdodDogZmFsc2UsXG4gICRzdHlsZTogZmFsc2Vcbikge1xuICAkaWVmb250OiB1bnF1b3RlKFwiI3skZW90fT8jaWVmaXhcIik7XG4gIEBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiBxdW90ZSgkbmFtZSk7XG4gICAgQGlmICRlb3Qge1xuICAgICAgc3JjOiBmb250LXVybCgkZW90KTtcbiAgICAgICRmb250LWZpbGVzOiBmb250LXVybCgkaWVmb250KSB1bnF1b3RlKFwiZm9ybWF0KCdlb3QnKVwiKSwgJGZvbnQtZmlsZXM7IFxuICAgIH1cbiAgICBzcmM6ICRmb250LWZpbGVzO1xuICAgIEBpZiAkd2VpZ2h0IHtcbiAgICAgIGZvbnQtd2VpZ2h0OiAkd2VpZ2h0O1xuICAgIH1cbiAgICBAaWYgJHN0eWxlIHtcbiAgICAgIGZvbnQtc3R5bGU6ICRzdHlsZTtcbiAgICB9XG4gIH1cbn1cbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIEBkb2Mgb2ZmXG4vLyBOb3RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNhZmFyaSwgQ2hyb21lLCBhbmQgRmlyZWZveCBhbGwgc3VwcG9ydCAzRCB0cmFuc2Zvcm1zLiBIb3dldmVyLFxuLy8gb25seSBpbiB0aGUgbW9zdCByZWNlbnQgYnVpbGRzLiBZb3Ugc2hvdWxkIGFsc28gcHJvdmlkZSBmYWxsYmFjayAyZCBzdXBwb3J0IGZvclxuLy8gT3BlcmEgYW5kIElFLiBJRTEwIGlzIHNsYXRlZCB0byBoYXZlIDNkIGVuYWJsZWQsIGJ1dCBpcyBjdXJyZW50bHkgdW5yZWxlYXNlZC5cbi8vIFRvIG1ha2UgdGhhdCBlYXN5LCBhbGwgMkQgdHJhbnNmb3JtcyBpbmNsdWRlIGFuIGJyb3dzZXItdGFyZ2V0aW5nIHRvZ2dsZSAoJG9ubHkzZClcbi8vIHRvIHN3aXRjaCBiZXR3ZWVuIHRoZSB0d28gc3VwcG9ydCBsaXN0cy4gVGhlIHRvZ2dsZSBkZWZhdWx0cyB0byAnZmFsc2UnICgyRCksXG4vLyBhbmQgYWxzbyBhY2NlcHRzICd0cnVlJyAoM0QpLiBDdXJyZW50bHkgdGhlIGxpc3RzIGFyZSBhcyBmb2xsb3dzOlxuLy8gMkQ6IE1vemlsbGEsIFdlYmtpdCwgT3BlcmEsIE9mZmljaWFsXG4vLyAzRDogV2Via2l0LCBGaXJlZm94LlxuXG4vLyBBdmFpbGFibGUgVHJhbnNmb3JtcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gU2NhbGUgKDJkIGFuZCAzZClcbi8vIC0gUm90YXRlICgyZCBhbmQgM2QpXG4vLyAtIFRyYW5zbGF0ZSAoMmQgYW5kIDNkKVxuLy8gLSBTa2V3ICgyZCBvbmx5KVxuXG4vLyBUcmFuc2Zvcm0gUGFyYW1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIC0gVHJhbnNmb3JtIE9yaWdpbiAoMmQgYW5kIDNkKVxuLy8gLSBQZXJzcGVjdGl2ZSAoM2QpXG4vLyAtIFBlcnNwZWN0aXZlIE9yaWdpbiAoM2QpXG4vLyAtIFRyYW5zZm9ybSBTdHlsZSAoM2QpXG4vLyAtIEJhY2tmYWNlIFZpc2liaWxpdHkgKDNkKVxuXG4vLyBNaXhpbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIHRyYW5zZm9ybS1vcmlnaW5cbi8vICAtIHNob3J0Y3V0czogIHRyYW5zZm9ybS1vcmlnaW4yZCwgdHJhbnNmb3JtLW9yaWdpbjNkXG4vLyAgLSBoZWxwZXJzOiAgICBhcHBseS1vcmlnaW5cbi8vIHRyYW5zZm9ybVxuLy8gIC0gc2hvcnRjdXRzOiAgdHJhbnNmb3JtMmQsIHRyYW5zZm9ybTNkXG4vLyAgLSBoZWxwZXJzOiAgICBzaW1wbGUtdHJhbnNmb3JtLCBjcmVhdGUtdHJhbnNmb3JtXG4vLyBwZXJzcGVjdGl2ZVxuLy8gIC0gaGVscGVyczogICAgcGVyc3BlY3RpdmUtb3JpZ2luXG4vLyB0cmFuc2Zvcm0tc3R5bGVcbi8vIGJhY2tmYWNlLXZpc2liaWxpdHlcbi8vIHNjYWxlXG4vLyAgLSBzaG9ydGN1dHM6ICBzY2FsZVgsIHNjYWxlWSwgc2NhbGVaLCBzY2FsZTNkXG4vLyByb3RhdGVcbi8vICAtIHNob3J0Y3V0czogIHJvdGF0ZVgsIHJvdGF0ZVksIHJvdGF0ZTNkXG4vLyB0cmFuc2xhdGVcbi8vICAtIHNob3J0Y3V0czogIHRyYW5zbGF0ZVgsIHRyYW5zbGF0ZVksIHRyYW5zbGF0ZVosIHRyYW5zbGF0ZTNkXG4vLyBza2V3XG4vLyAgLSBzaG9ydGN1dHM6ICBza2V3WCwgc2tld1lcblxuLy8gRGVmYXVsdHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIFRoZSBkZWZhdWx0IHgtb3JpZ2luIGZvciB0cmFuc2Zvcm1zXG4kZGVmYXVsdC1vcmlnaW4teCAgICA6IDUwJSAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHktb3JpZ2luIGZvciB0cmFuc2Zvcm1zXG4kZGVmYXVsdC1vcmlnaW4teSAgICA6IDUwJSAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHotb3JpZ2luIGZvciB0cmFuc2Zvcm1zXG4kZGVmYXVsdC1vcmlnaW4teiAgICA6IDUwJSAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcblxuXG4vLyBUaGUgZGVmYXVsdCB4LW11bHRpcGxpZXIgZm9yIHNjYWxpbmdcbiRkZWZhdWx0LXNjYWxlLXggICAgIDogMS4yNSAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gVGhlIGRlZmF1bHQgeS1tdWx0aXBsaWVyIGZvciBzY2FsaW5nXG4kZGVmYXVsdC1zY2FsZS15ICAgICA6ICRkZWZhdWx0LXNjYWxlLXggICAgICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHotbXVsdGlwbGllciBmb3Igc2NhbGluZ1xuJGRlZmF1bHQtc2NhbGUteiAgICAgOiAkZGVmYXVsdC1zY2FsZS14ICAgICAgIWRlZmF1bHQ7XG5cblxuLy8gVGhlIGRlZmF1bHQgYW5nbGUgZm9yIHJvdGF0aW9uc1xuJGRlZmF1bHQtcm90YXRlICAgICAgOiA0NWRlZyAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG5cblxuLy8gVGhlIGRlZmF1bHQgeC12ZWN0b3IgZm9yIHRoZSBheGlzIG9mIDNkIHJvdGF0aW9uc1xuJGRlZmF1bHQtdmVjdG9yLXggICAgOiAxICAgICAgICAgICAgICAgICAgICAgIWRlZmF1bHQ7XG4vLyBUaGUgZGVmYXVsdCB5LXZlY3RvciBmb3IgdGhlIGF4aXMgb2YgM2Qgcm90YXRpb25zXG4kZGVmYXVsdC12ZWN0b3IteSAgICA6IDEgICAgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHotdmVjdG9yIGZvciB0aGUgYXhpcyBvZiAzZCByb3RhdGlvbnNcbiRkZWZhdWx0LXZlY3Rvci16ICAgIDogMSAgICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG5cbi8vIFRoZSBkZWZhdWx0IHgtbGVuZ3RoIGZvciB0cmFuc2xhdGlvbnNcbiRkZWZhdWx0LXRyYW5zbGF0ZS14IDogMWVtICAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuLy8gVGhlIGRlZmF1bHQgeS1sZW5ndGggZm9yIHRyYW5zbGF0aW9uc1xuJGRlZmF1bHQtdHJhbnNsYXRlLXkgOiAkZGVmYXVsdC10cmFuc2xhdGUteCAgIWRlZmF1bHQ7XG4vLyBUaGUgZGVmYXVsdCB6LWxlbmd0aCBmb3IgdHJhbnNsYXRpb25zXG4kZGVmYXVsdC10cmFuc2xhdGUteiA6ICRkZWZhdWx0LXRyYW5zbGF0ZS14ICAhZGVmYXVsdDtcblxuXG4vLyBUaGUgZGVmYXVsdCB4LWFuZ2xlIGZvciBza2V3aW5nXG4kZGVmYXVsdC1za2V3LXggICAgICA6IDVkZWcgICAgICAgICAgICAgICAgICAhZGVmYXVsdDtcbi8vIFRoZSBkZWZhdWx0IHktYW5nbGUgZm9yIHNrZXdpbmdcbiRkZWZhdWx0LXNrZXcteSAgICAgIDogNWRlZyAgICAgICAgICAgICAgICAgICFkZWZhdWx0O1xuXG5cbi8vICoqVHJhbnNmb3JtLW9yaWdpbioqXG4vLyBUcmFuc2Zvcm0tb3JpZ2luIHNlbnQgYXMgYSBjb21wbGV0ZSBzdHJpbmdcbi8vXG4vLyAgICAgQGluY2x1ZGUgYXBwbHktb3JpZ2luKCBvcmlnaW4gWywgM0Qtb25seSBdIClcbi8vXG4vLyB3aGVyZSAnb3JpZ2luJyBpcyBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IGNvbnRhaW5pbmcgMS0zICh4L3kveikgY29vcmRpbmF0ZXNcbi8vIGluIHBlcmNlbnRhZ2VzLCBhYnNvbHV0ZSAocHgsIGNtLCBpbiwgZW0gZXRjLi4pIG9yIHJlbGF0aXZlXG4vLyAobGVmdCwgdG9wLCByaWdodCwgYm90dG9tLCBjZW50ZXIpIHVuaXRzXG4vL1xuLy8gQHBhcmFtIG9ubHkzZCBTZXQgdGhpcyB0byB0cnVlIHRvIG9ubHkgYXBwbHkgdGhpc1xuLy8gbWl4aW4gd2hlcmUgYnJvd3NlcnMgaGF2ZSAzRCBzdXBwb3J0LlxuQG1peGluIGFwcGx5LW9yaWdpbigkb3JpZ2luLCAkb25seTNkKSB7XG4gICRvbmx5M2Q6ICRvbmx5M2Qgb3IgLWNvbXBhc3MtbGlzdC1zaXplKC1jb21wYXNzLWxpc3QoJG9yaWdpbikpID4gMjtcbiAgQGlmICRvbmx5M2Qge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2Zvcm0tb3JpZ2luLCAkb3JpZ2luLFxuICAgICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICAgKTtcbiAgfSBAZWxzZSB7XG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zZm9ybS1vcmlnaW4sICRvcmlnaW4sXG4gICAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgICApO1xuICB9XG59XG5cbi8vIFRyYW5zZm9ybS1vcmlnaW4gc2VudCBhcyBpbmRpdmlkdWFsIGFyZ3VtZW50czpcbi8vXG4vLyAgICAgQGluY2x1ZGUgdHJhbnNmb3JtLW9yaWdpbiggWyBvcmlnaW4teCwgb3JpZ2luLXksIG9yaWdpbi16LCAzRC1vbmx5IF0gKVxuLy9cbi8vIHdoZXJlIHRoZSAzICdvcmlnaW4tJyBhcmd1bWVudHMgcmVwcmVzZW50IHgveS96IGNvb3JkaW5hdGVzLlxuLy9cbi8vICoqTk9URToqKiBzZXR0aW5nIHogY29vcmRpbmF0ZXMgdHJpZ2dlcnMgM0Qgc3VwcG9ydCBsaXN0LCBsZWF2ZSBmYWxzZSBmb3IgMkQgc3VwcG9ydFxuQG1peGluIHRyYW5zZm9ybS1vcmlnaW4oXG4gICRvcmlnaW4teDogJGRlZmF1bHQtb3JpZ2luLXgsXG4gICRvcmlnaW4teTogJGRlZmF1bHQtb3JpZ2luLXksXG4gICRvcmlnaW4tejogZmFsc2UsXG4gICRvbmx5M2Q6ICAgaWYoJG9yaWdpbi16LCB0cnVlLCBmYWxzZSlcbikge1xuICAkb3JpZ2luOiB1bnF1b3RlKCcnKTtcbiAgQGlmICRvcmlnaW4teCBvciAkb3JpZ2luLXkgb3IgJG9yaWdpbi16IHtcbiAgICBAaWYgJG9yaWdpbi14IHsgJG9yaWdpbjogJG9yaWdpbi14OyB9IEBlbHNlIHsgJG9yaWdpbjogNTAlOyB9XG4gICAgQGlmICRvcmlnaW4teSB7ICRvcmlnaW46ICRvcmlnaW4gJG9yaWdpbi15OyB9IEBlbHNlIHsgQGlmICRvcmlnaW4teiB7ICRvcmlnaW46ICRvcmlnaW4gNTAlOyB9fVxuICAgIEBpZiAkb3JpZ2luLXogeyAkb3JpZ2luOiAkb3JpZ2luICRvcmlnaW4tejsgfVxuICAgIEBpbmNsdWRlIGFwcGx5LW9yaWdpbigkb3JpZ2luLCAkb25seTNkKTtcbiAgfVxufVxuXG5cbi8vIFRyYW5zZm9ybSBzZW50IGFzIGEgY29tcGxldGUgc3RyaW5nOlxuLy9cbi8vICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0oIHRyYW5zZm9ybXMgWywgM0Qtb25seSBdIClcbi8vXG4vLyB3aGVyZSAndHJhbnNmb3JtcycgaXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZiBhbGwgdGhlIHRyYW5zZm9ybXMgdG8gYmUgYXBwbGllZC5cbkBtaXhpbiB0cmFuc2Zvcm0oXG4gICR0cmFuc2Zvcm0sXG4gICRvbmx5M2Q6IGZhbHNlXG4pIHtcbiAgQGlmICRvbmx5M2Qge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2Zvcm0sICR0cmFuc2Zvcm0sXG4gICAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgICApO1xuICB9IEBlbHNlIHtcbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwodHJhbnNmb3JtLCAkdHJhbnNmb3JtLFxuICAgICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICAgKTtcbiAgfVxufVxuXG4vLyBTaG9ydGN1dCB0byB0YXJnZXQgYWxsIGJyb3dzZXJzIHdpdGggMkQgdHJhbnNmb3JtIHN1cHBvcnRcbkBtaXhpbiB0cmFuc2Zvcm0yZCgkdHJhbnMpIHtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgZmFsc2UpO1xufVxuXG4vLyBTaG9ydGN1dCB0byB0YXJnZXQgb25seSBicm93c2VycyB3aXRoIDNEIHRyYW5zZm9ybSBzdXBwb3J0XG5AbWl4aW4gdHJhbnNmb3JtM2QoJHRyYW5zKSB7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsIHRydWUpO1xufVxuXG4vLyBAZG9jIG9mZlxuLy8gM0QgUGFyYW1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIFNldCB0aGUgcGVyc3BlY3RpdmUgb2YgM0QgdHJhbnNmb3JtcyBvbiB0aGUgY2hpbGRyZW4gb2YgYW4gZWxlbWVudDpcbi8vXG4vLyAgICAgIEBpbmNsdWRlIHBlcnNwZWN0aXZlKCBwZXJzcGVjdGl2ZSApXG4vL1xuLy8gd2hlcmUgJ3BlcnNwZWN0aXZlJyBpcyBhIHVuaXRsZXNzIG51bWJlciByZXByZXNlbnRpbmcgdGhlIGRlcHRoIG9mIHRoZVxuLy8gei1heGlzLiBUaGUgaGlnaGVyIHRoZSBwZXJzcGVjdGl2ZSwgdGhlIG1vcmUgZXhhZ2dlcmF0ZWQgdGhlIGZvcmVzaG9ydGVuaW5nLlxuLy8gdmFsdWVzIGZyb20gNTAwIHRvIDEwMDAgYXJlIG1vcmUtb3ItbGVzcyBcIm5vcm1hbFwiIC0gYSBnb29kIHN0YXJ0aW5nLXBvaW50LlxuQG1peGluIHBlcnNwZWN0aXZlKCRwKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChwZXJzcGVjdGl2ZSwgJHAsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIFNldCB0aGUgb3JpZ2luIHBvc2l0aW9uIGZvciB0aGUgcGVyc3BlY3RpdmVcbi8vXG4vLyAgICAgIEBpbmNsdWRlIHBlcnNwZWN0aXZlLW9yaWdpbihvcmlnaW4teCBbb3JpZ2luLXldKVxuLy9cbi8vIHdoZXJlIHRoZSB0d28gYXJndW1lbnRzIHJlcHJlc2VudCB4L3kgY29vcmRpbmF0ZXNcbkBtaXhpbiBwZXJzcGVjdGl2ZS1vcmlnaW4oJG9yaWdpbjogNTAlKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChwZXJzcGVjdGl2ZS1vcmlnaW4sICRvcmlnaW4sXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIERldGVybWluZSB3aGV0aGVyIGEgM0Qgb2JqZWN0cyBjaGlsZHJlbiBhbHNvIGxpdmUgaW4gdGhlIGdpdmVuIDNEIHNwYWNlXG4vL1xuLy8gICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0tc3R5bGUoIFsgc3R5bGUgXSApXG4vL1xuLy8gd2hlcmUgYHN0eWxlYCBjYW4gYmUgZWl0aGVyIGBmbGF0YCBvciBgcHJlc2VydmUtM2RgLlxuLy8gQnJvd3NlcnMgZGVmYXVsdCB0byBgZmxhdGAsIG1peGluIGRlZmF1bHRzIHRvIGBwcmVzZXJ2ZS0zZGAuXG5AbWl4aW4gdHJhbnNmb3JtLXN0eWxlKCRzdHlsZTogcHJlc2VydmUtM2QpIHtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zZm9ybS1zdHlsZSwgJHN0eWxlLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCAtbXMsIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBEZXRlcm1pbmUgdGhlIHZpc2liaWxpdHkgb2YgYW4gZWxlbWVudCB3aGVuIGl0J3MgYmFjayBpcyB0dXJuZWRcbi8vXG4vLyAgICAgQGluY2x1ZGUgYmFja2ZhY2UtdmlzaWJpbGl0eSggWyB2aXNpYmlsaXR5IF0gKVxuLy9cbi8vIHdoZXJlIGB2aXNpYmlsaXR5YCBjYW4gYmUgZWl0aGVyIGB2aXNpYmxlYCBvciBgaGlkZGVuYC5cbi8vIEJyb3dzZXJzIGRlZmF1bHQgdG8gdmlzaWJsZSwgbWl4aW4gZGVmYXVsdHMgdG8gaGlkZGVuXG5AbWl4aW4gYmFja2ZhY2UtdmlzaWJpbGl0eSgkdmlzaWJpbGl0eTogaGlkZGVuKSB7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChiYWNrZmFjZS12aXNpYmlsaXR5LCAkdmlzaWJpbGl0eSxcbiAgICAtbW96LCAtd2Via2l0LCAtbywgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gQGRvYyBvZmZcbi8vIFRyYW5zZm9ybSBQYXJ0aWFscyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGhlc2Ugd29yayB3ZWxsIG9uIHRoZWlyIG93biwgYnV0IHRoZXkgZG9uJ3QgYWRkIHRvIGVhY2ggb3RoZXIsIHRoZXkgb3ZlcnJpZGUuXG4vLyBVc2UgYWxvbmcgd2l0aCB0cmFuc2Zvcm0gcGFyYW1ldGVyIG1peGlucyB0byBhZGp1c3Qgb3JpZ2luLCBwZXJzcGVjdGl2ZSBhbmQgc3R5bGVcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cbi8vIFNjYWxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBTY2FsZSBhbiBvYmplY3QgYWxvbmcgdGhlIHggYW5kIHkgYXhpczpcbi8vXG4vLyAgICAgIEBpbmNsdWRlIHNjYWxlKCBbIHNjYWxlLXgsIHNjYWxlLXksIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy9cbi8vIHdoZXJlIHRoZSAnc2NhbGUtJyBhcmd1bWVudHMgYXJlIHVuaXRsZXNzIG11bHRpcGxpZXJzIG9mIHRoZSB4IGFuZCB5IGRpbWVuc2lvbnNcbi8vIGFuZCBwZXJzcGVjdGl2ZSwgd2hpY2ggd29ya3MgdGhlIHNhbWUgYXMgdGhlIHN0YW5kLWFsb25lIHBlcnNwZWN0aXZlIHByb3BlcnR5L21peGluXG4vLyBidXQgYXBwbGllcyB0byB0aGUgaW5kaXZpZHVhbCBlbGVtZW50IChtdWx0aXBsaWVkIHdpdGggYW55IHBhcmVudCBwZXJzcGVjdGl2ZSlcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2NhbGUoXG4gICRzY2FsZS14OiAgICAgJGRlZmF1bHQtc2NhbGUteCxcbiAgJHNjYWxlLXk6ICAgICAkc2NhbGUteCxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZSxcbiAgJG9ubHkzZDogICAgICBmYWxzZVxuKSB7XG4gICR0cmFuczogc2NhbGUoJHNjYWxlLXgsICRzY2FsZS15KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIFNjYWxlIGFuIG9iamVjdCBhbG9uZyB0aGUgeCBheGlzXG4vLyBAaW5jbHVkZSBzY2FsZVgoIFsgc2NhbGUteCwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNjYWxlWChcbiAgJHNjYWxlOiAgICAgICAkZGVmYXVsdC1zY2FsZS14LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgJHRyYW5zOiBzY2FsZVgoJHNjYWxlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIFNjYWxlIGFuIG9iamVjdCBhbG9uZyB0aGUgeSBheGlzXG4vLyBAaW5jbHVkZSBzY2FsZVkoIFsgc2NhbGUteSwgcGVyc3BlY3RpdmUsIDNELW9ubHkgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNjYWxlWShcbiAgJHNjYWxlOiAgICAgICAkZGVmYXVsdC1zY2FsZS15LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgJHRyYW5zOiBzY2FsZVkoJHNjYWxlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIFNjYWxlIGFuIG9iamVjdCBhbG9uZyB0aGUgeiBheGlzXG4vLyBAaW5jbHVkZSBzY2FsZVooIFsgc2NhbGUteiwgcGVyc3BlY3RpdmUgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNjYWxlWihcbiAgJHNjYWxlOiAkZGVmYXVsdC1zY2FsZS16LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlXG4pIHtcbiAgJHRyYW5zOiBzY2FsZVooJHNjYWxlKTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTtcbn1cblxuLy8gU2NhbGUgYW5kIG9iamVjdCBhbG9uZyBhbGwgdGhyZWUgYXhpc1xuLy8gQGluY2x1ZGUgc2NhbGUzZCggWyBzY2FsZS14LCBzY2FsZS15LCBzY2FsZS16LCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2NhbGUzZChcbiAgJHNjYWxlLXg6ICAgICAkZGVmYXVsdC1zY2FsZS14LFxuICAkc2NhbGUteTogICAgICRkZWZhdWx0LXNjYWxlLXksXG4gICRzY2FsZS16OiAgICAgJGRlZmF1bHQtc2NhbGUteixcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZVxuKSB7XG4gICR0cmFuczogc2NhbGUzZCgkc2NhbGUteCwgJHNjYWxlLXksICRzY2FsZS16KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtM2QoJHRyYW5zKTtcbn1cblxuLy8gQGRvYyBvZmZcbi8vIFJvdGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gQGRvYyBvblxuXG4vLyBSb3RhdGUgYW4gb2JqZWN0IGFyb3VuZCB0aGUgeiBheGlzICAoMkQpXG4vLyBAaW5jbHVkZSByb3RhdGUoIFsgcm90YXRpb24sIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy8gd2hlcmUgJ3JvdGF0aW9uJyBpcyBhbiBhbmdsZSBzZXQgaW4gZGVncmVlcyAoZGVnKSBvciByYWRpYW4gKHJhZCkgdW5pdHNcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gcm90YXRlKFxuICAkcm90YXRlOiAgICAgICRkZWZhdWx0LXJvdGF0ZSxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZSxcbiAgJG9ubHkzZDogICAgICBmYWxzZVxuKSB7XG4gICR0cmFuczogcm90YXRlKCRyb3RhdGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuLy8gQSBsb25nY3V0IGZvciAncm90YXRlJyBpbiBjYXNlIHlvdSBmb3JnZXQgdGhhdCAneicgaXMgaW1wbGllZFxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiByb3RhdGVaKFxuICAkcm90YXRlOiAgICAgICRkZWZhdWx0LXJvdGF0ZSxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZSxcbiAgJG9ubHkzZDogICAgICBmYWxzZVxuKSB7XG4gIEBpbmNsdWRlIHJvdGF0ZSgkcm90YXRlLCAkcGVyc3BlY3RpdmUsICRvbmx5M2QpO1xufVxuXG4vLyBSb3RhdGUgYW4gb2JqZWN0IGFyb3VuZCB0aGUgeCBheGlzICgzRClcbi8vIEBpbmNsdWRlIHJvdGF0ZVgoIFsgcm90YXRpb24sIHBlcnNwZWN0aXZlIF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiByb3RhdGVYKFxuICAkcm90YXRlOiAkZGVmYXVsdC1yb3RhdGUsXG4gICRwZXJzcGVjdGl2ZTogZmFsc2Vcbikge1xuICAkdHJhbnM6IHJvdGF0ZVgoJHJvdGF0ZSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybTNkKCR0cmFucyk7XG59XG5cbi8vIFJvdGF0ZSBhbiBvYmplY3QgYXJvdW5kIHRoZSB5IGF4aXMgKDNEKVxuLy8gQGluY2x1ZGUgcm90YXRlKCBbIHJvdGF0aW9uLCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gcm90YXRlWShcbiAgJHJvdGF0ZTogJGRlZmF1bHQtcm90YXRlLFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlXG4pIHtcbiAgJHRyYW5zOiByb3RhdGVZKCRyb3RhdGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpO1xufVxuXG4vLyBSb3RhdGUgYW4gb2JqZWN0IGFyb3VuZCBhbiBhcmJpdHJhcnkgYXhpcyAoM0QpXG4vLyBAaW5jbHVkZSByb3RhdGUoIFsgdmVjdG9yLXgsIHZlY3Rvci15LCB2ZWN0b3Iteiwgcm90YXRpb24sIHBlcnNwZWN0aXZlIF0gKVxuLy8gd2hlcmUgdGhlICd2ZWN0b3ItJyBhcmd1bWVudHMgYWNjZXB0IHVuaXRsZXNzIG51bWJlcnMuXG4vLyBUaGVzZSBudW1iZXJzIGFyZSBub3QgaW1wb3J0YW50IG9uIHRoZWlyIG93biwgYnV0IGluIHJlbGF0aW9uIHRvIG9uZSBhbm90aGVyXG4vLyBjcmVhdGluZyBhbiBheGlzIGZyb20geW91ciB0cmFuc2Zvcm0tb3JpZ2luLCBhbG9uZyB0aGUgYXhpcyBvZiBYeCA9IFl5ID0gWnouXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHJvdGF0ZTNkKFxuICAkdmVjdG9yLXg6ICRkZWZhdWx0LXZlY3Rvci14LFxuICAkdmVjdG9yLXk6ICRkZWZhdWx0LXZlY3Rvci15LFxuICAkdmVjdG9yLXo6ICRkZWZhdWx0LXZlY3Rvci16LFxuICAkcm90YXRlOiAkZGVmYXVsdC1yb3RhdGUsXG4gICRwZXJzcGVjdGl2ZTogZmFsc2Vcbikge1xuICAkdHJhbnM6IHJvdGF0ZTNkKCR2ZWN0b3IteCwgJHZlY3Rvci15LCAkdmVjdG9yLXosICRyb3RhdGUpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpO1xufVxuXG4vLyBAZG9jIG9mZlxuLy8gVHJhbnNsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIE1vdmUgYW4gb2JqZWN0IGFsb25nIHRoZSB4IG9yIHkgYXhpcyAoMkQpXG4vLyBAaW5jbHVkZSB0cmFuc2xhdGUoIFsgdHJhbnNsYXRlLXgsIHRyYW5zbGF0ZS15LCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vIHdoZXJlIHRoZSAndHJhbnNsYXRlLScgYXJndW1lbnRzIGFjY2VwdCBhbnkgZGlzdGFuY2UgaW4gcGVyY2VudGFnZXMgb3IgYWJzb2x1dGUgKHB4LCBjbSwgaW4sIGVtIGV0Yy4uKSB1bml0cy5cbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gdHJhbnNsYXRlKFxuICAkdHJhbnNsYXRlLXg6ICRkZWZhdWx0LXRyYW5zbGF0ZS14LFxuICAkdHJhbnNsYXRlLXk6ICRkZWZhdWx0LXRyYW5zbGF0ZS15LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgJHRyYW5zOiB0cmFuc2xhdGUoJHRyYW5zbGF0ZS14LCAkdHJhbnNsYXRlLXkpO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuLy8gTW92ZSBhbiBvYmplY3QgYWxvbmcgdGhlIHggYXhpcyAoMkQpXG4vLyBAaW5jbHVkZSB0cmFuc2xhdGUoIFsgdHJhbnNsYXRlLXgsIHBlcnNwZWN0aXZlLCAzRC1vbmx5IF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiB0cmFuc2xhdGVYKFxuICAkdHJhbnMteDogICAgICRkZWZhdWx0LXRyYW5zbGF0ZS14LFxuICAkcGVyc3BlY3RpdmU6IGZhbHNlLFxuICAkb25seTNkOiAgICAgIGZhbHNlXG4pIHtcbiAgJHRyYW5zOiB0cmFuc2xhdGVYKCR0cmFucy14KTtcbiAgQGlmICRwZXJzcGVjdGl2ZSB7ICR0cmFuczogcGVyc3BlY3RpdmUoJHBlcnNwZWN0aXZlKSAkdHJhbnM7IH1cbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIE1vdmUgYW4gb2JqZWN0IGFsb25nIHRoZSB5IGF4aXMgKDJEKVxuLy8gQGluY2x1ZGUgdHJhbnNsYXRlKCBbIHRyYW5zbGF0ZS15LCBwZXJzcGVjdGl2ZSwgM0Qtb25seSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gdHJhbnNsYXRlWShcbiAgJHRyYW5zLXk6ICAgICAkZGVmYXVsdC10cmFuc2xhdGUteSxcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZSxcbiAgJG9ubHkzZDogICAgICBmYWxzZVxuKSB7XG4gICR0cmFuczogdHJhbnNsYXRlWSgkdHJhbnMteSk7XG4gIEBpZiAkcGVyc3BlY3RpdmUgeyAkdHJhbnM6IHBlcnNwZWN0aXZlKCRwZXJzcGVjdGl2ZSkgJHRyYW5zOyB9XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpO1xufVxuXG4vLyBNb3ZlIGFuIG9iamVjdCBhbG9uZyB0aGUgeiBheGlzICgzRClcbi8vIEBpbmNsdWRlIHRyYW5zbGF0ZSggWyB0cmFuc2xhdGUteiwgcGVyc3BlY3RpdmUgXSApXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHRyYW5zbGF0ZVooXG4gICR0cmFucy16OiAgICAgJGRlZmF1bHQtdHJhbnNsYXRlLXosXG4gICRwZXJzcGVjdGl2ZTogZmFsc2Vcbikge1xuICAkdHJhbnM6IHRyYW5zbGF0ZVooJHRyYW5zLXopO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpO1xufVxuXG4vLyBNb3ZlIGFuIG9iamVjdCBhbG9uZyB0aGUgeCwgeSBhbmQgeiBheGlzICgzRClcbi8vIEBpbmNsdWRlIHRyYW5zbGF0ZSggWyB0cmFuc2xhdGUteCwgdHJhbnNsYXRlLXksIHRyYW5zbGF0ZS16LCBwZXJzcGVjdGl2ZSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gdHJhbnNsYXRlM2QoXG4gICR0cmFuc2xhdGUteDogJGRlZmF1bHQtdHJhbnNsYXRlLXgsXG4gICR0cmFuc2xhdGUteTogJGRlZmF1bHQtdHJhbnNsYXRlLXksXG4gICR0cmFuc2xhdGUtejogJGRlZmF1bHQtdHJhbnNsYXRlLXosXG4gICRwZXJzcGVjdGl2ZTogZmFsc2Vcbikge1xuICAkdHJhbnM6IHRyYW5zbGF0ZTNkKCR0cmFuc2xhdGUteCwgJHRyYW5zbGF0ZS15LCAkdHJhbnNsYXRlLXopO1xuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpICR0cmFuczsgfVxuICBAaW5jbHVkZSB0cmFuc2Zvcm0zZCgkdHJhbnMpO1xufVxuXG4vLyBAZG9jIG9mZlxuLy8gU2tldyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBAZG9jIG9uXG5cbi8vIFNrZXcgYW4gZWxlbWVudDpcbi8vXG4vLyAgICAgQGluY2x1ZGUgc2tldyggWyBza2V3LXgsIHNrZXcteSwgM0Qtb25seSBdIClcbi8vXG4vLyB3aGVyZSB0aGUgJ3NrZXctJyBhcmd1bWVudHMgYWNjZXB0IGNzcyBhbmdsZXMgaW4gZGVncmVlcyAoZGVnKSBvciByYWRpYW4gKHJhZCkgdW5pdHMuXG4vL1xuLy8gKipOb3RlKiogVGhpcyBtaXhpbiBjYW5ub3QgYmUgY29tYmluZWQgd2l0aCBvdGhlciB0cmFuc2Zvcm0gbWl4aW5zLlxuQG1peGluIHNrZXcoXG4gICRza2V3LXg6ICRkZWZhdWx0LXNrZXcteCxcbiAgJHNrZXcteTogJGRlZmF1bHQtc2tldy15LFxuICAkb25seTNkOiBmYWxzZVxuKSB7XG4gICR0cmFuczogc2tldygkc2tldy14LCAkc2tldy15KTtcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG59XG5cbi8vIFNrZXcgYW4gZWxlbWVudCBhbG9uZyB0aGUgeCBheGl6XG4vL1xuLy8gICAgIEBpbmNsdWRlIHNrZXcoIFsgc2tldy14LCAzRC1vbmx5IF0gKVxuLy9cbi8vICoqTm90ZSoqIFRoaXMgbWl4aW4gY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggb3RoZXIgdHJhbnNmb3JtIG1peGlucy5cbkBtaXhpbiBza2V3WChcbiAgJHNrZXcteDogJGRlZmF1bHQtc2tldy14LFxuICAkb25seTNkOiBmYWxzZVxuKSB7XG4gICR0cmFuczogc2tld1goJHNrZXcteCk7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybSgkdHJhbnMsICRvbmx5M2QpO1xufVxuXG4vLyBTa2V3IGFuIGVsZW1lbnQgYWxvbmcgdGhlIHkgYXhpc1xuLy9cbi8vICAgICBAaW5jbHVkZSBza2V3KCBbIHNrZXcteSwgM0Qtb25seSBdIClcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gc2tld1koXG4gICRza2V3LXk6ICRkZWZhdWx0LXNrZXcteSxcbiAgJG9ubHkzZDogZmFsc2Vcbikge1xuICAkdHJhbnM6IHNrZXdZKCRza2V3LXkpO1xuICBAaW5jbHVkZSB0cmFuc2Zvcm0oJHRyYW5zLCAkb25seTNkKTtcbn1cblxuXG4vLyBGdWxsIHRyYW5zZm9ybSBtaXhpbnNcbi8vIEZvciBzZXR0aW5ncyBhbnkgY29tYmluYXRpb24gb2YgdHJhbnNmb3JtcyBhcyBhcmd1bWVudHNcbi8vIFRoZXNlIGFyZSBjb21wbGV4IGFuZCBub3QgaGlnaGx5IHJlY29tbWVuZGVkIGZvciBkYWlseSB1c2UuIFRoZXkgYXJlIG1haW5seVxuLy8gaGVyZSBmb3IgYmFja3dhcmQtY29tcGF0aWJpbGl0eSBwdXJwb3Nlcy5cbi8vXG4vLyAqIHRoZXkgaW5jbHVkZSBvcmlnaW4gYWRqdXN0bWVudHNcbi8vICogc2NhbGUgdGFrZXMgYSBtdWx0aXBsaWVyICh1bml0bGVzcyksIHJvdGF0ZSBhbmQgc2tldyB0YWtlIGRlZ3JlZXMgKGRlZylcbi8vXG4vLyAqKk5vdGUqKiBUaGlzIG1peGluIGNhbm5vdCBiZSBjb21iaW5lZCB3aXRoIG90aGVyIHRyYW5zZm9ybSBtaXhpbnMuXG5AbWl4aW4gY3JlYXRlLXRyYW5zZm9ybShcbiAgJHBlcnNwZWN0aXZlOiBmYWxzZSxcbiAgJHNjYWxlLXg6ICAgICBmYWxzZSxcbiAgJHNjYWxlLXk6ICAgICBmYWxzZSxcbiAgJHNjYWxlLXo6ICAgICBmYWxzZSxcbiAgJHJvdGF0ZS14OiAgICBmYWxzZSxcbiAgJHJvdGF0ZS15OiAgICBmYWxzZSxcbiAgJHJvdGF0ZS16OiAgICBmYWxzZSxcbiAgJHJvdGF0ZTNkOiAgICBmYWxzZSxcbiAgJHRyYW5zLXg6ICAgICBmYWxzZSxcbiAgJHRyYW5zLXk6ICAgICBmYWxzZSxcbiAgJHRyYW5zLXo6ICAgICBmYWxzZSxcbiAgJHNrZXcteDogICAgICBmYWxzZSxcbiAgJHNrZXcteTogICAgICBmYWxzZSxcbiAgJG9yaWdpbi14OiAgICBmYWxzZSxcbiAgJG9yaWdpbi15OiAgICBmYWxzZSxcbiAgJG9yaWdpbi16OiAgICBmYWxzZSxcbiAgJG9ubHkzZDogICAgICBmYWxzZVxuKSB7XG4gICR0cmFuczogdW5xdW90ZShcIlwiKTtcblxuICAvLyBwZXJzcGVjdGl2ZVxuICBAaWYgJHBlcnNwZWN0aXZlIHsgJHRyYW5zOiBwZXJzcGVjdGl2ZSgkcGVyc3BlY3RpdmUpIDsgfVxuXG4gIC8vIHNjYWxlXG4gIEBpZiAkc2NhbGUteCBhbmQgJHNjYWxlLXkge1xuICAgIEBpZiAkc2NhbGUteiB7ICR0cmFuczogJHRyYW5zIHNjYWxlM2QoJHNjYWxlLXgsICRzY2FsZS15LCAkc2NhbGUteik7IH1cbiAgICBAZWxzZSB7ICR0cmFuczogJHRyYW5zIHNjYWxlKCRzY2FsZS14LCAkc2NhbGUteSk7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGlmICRzY2FsZS14IHsgJHRyYW5zOiAkdHJhbnMgc2NhbGVYKCRzY2FsZS14KTsgfVxuICAgIEBpZiAkc2NhbGUteSB7ICR0cmFuczogJHRyYW5zIHNjYWxlWSgkc2NhbGUteSk7IH1cbiAgICBAaWYgJHNjYWxlLXogeyAkdHJhbnM6ICR0cmFucyBzY2FsZVooJHNjYWxlLXopOyB9XG4gIH1cblxuICAvLyByb3RhdGVcbiAgQGlmICRyb3RhdGUteCB7ICR0cmFuczogJHRyYW5zIHJvdGF0ZVgoJHJvdGF0ZS14KTsgfVxuICBAaWYgJHJvdGF0ZS15IHsgJHRyYW5zOiAkdHJhbnMgcm90YXRlWSgkcm90YXRlLXkpOyB9XG4gIEBpZiAkcm90YXRlLXogeyAkdHJhbnM6ICR0cmFucyByb3RhdGVaKCRyb3RhdGUteik7IH1cbiAgQGlmICRyb3RhdGUzZCB7ICR0cmFuczogJHRyYW5zIHJvdGF0ZTNkKCRyb3RhdGUzZCk7IH1cblxuICAvLyB0cmFuc2xhdGVcbiAgQGlmICR0cmFucy14IGFuZCAkdHJhbnMteSB7XG4gICAgQGlmICR0cmFucy16IHsgJHRyYW5zOiAkdHJhbnMgdHJhbnNsYXRlM2QoJHRyYW5zLXgsICR0cmFucy15LCAkdHJhbnMteik7IH1cbiAgICBAZWxzZSB7ICR0cmFuczogJHRyYW5zIHRyYW5zbGF0ZSgkdHJhbnMteCwgJHRyYW5zLXkpOyB9XG4gIH0gQGVsc2Uge1xuICAgIEBpZiAkdHJhbnMteCB7ICR0cmFuczogJHRyYW5zIHRyYW5zbGF0ZVgoJHRyYW5zLXgpOyB9XG4gICAgQGlmICR0cmFucy15IHsgJHRyYW5zOiAkdHJhbnMgdHJhbnNsYXRlWSgkdHJhbnMteSk7IH1cbiAgICBAaWYgJHRyYW5zLXogeyAkdHJhbnM6ICR0cmFucyB0cmFuc2xhdGVaKCR0cmFucy16KTsgfVxuICB9XG5cbiAgLy8gc2tld1xuICBAaWYgJHNrZXcteCBhbmQgJHNrZXcteSB7ICR0cmFuczogJHRyYW5zIHNrZXcoJHNrZXcteCwgJHNrZXcteSk7IH1cbiAgQGVsc2Uge1xuICAgIEBpZiAkc2tldy14IHsgJHRyYW5zOiAkdHJhbnMgc2tld1goJHNrZXcteCk7IH1cbiAgICBAaWYgJHNrZXcteSB7ICR0cmFuczogJHRyYW5zIHNrZXdZKCRza2V3LXkpOyB9XG4gIH1cblxuICAvLyBhcHBseSBpdCFcbiAgQGluY2x1ZGUgdHJhbnNmb3JtKCR0cmFucywgJG9ubHkzZCk7XG4gIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4oJG9yaWdpbi14LCAkb3JpZ2luLXksICRvcmlnaW4teiwgJG9ubHkzZCk7XG59XG5cblxuLy8gQSBzaW1wbGlmaWVkIHNldCBvZiBvcHRpb25zXG4vLyBiYWNrd2FyZHMtY29tcGF0aWJsZSB3aXRoIHRoZSBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoZSAndHJhbnNmb3JtJyBtaXhpblxuQG1peGluIHNpbXBsZS10cmFuc2Zvcm0oXG4gICRzY2FsZTogICAgZmFsc2UsXG4gICRyb3RhdGU6ICAgZmFsc2UsXG4gICR0cmFucy14OiAgZmFsc2UsXG4gICR0cmFucy15OiAgZmFsc2UsXG4gICRza2V3LXg6ICAgZmFsc2UsXG4gICRza2V3LXk6ICAgZmFsc2UsXG4gICRvcmlnaW4teDogZmFsc2UsXG4gICRvcmlnaW4teTogZmFsc2Vcbikge1xuICBAaW5jbHVkZSBjcmVhdGUtdHJhbnNmb3JtKFxuICAgIGZhbHNlLFxuICAgICRzY2FsZSwgJHNjYWxlLCBmYWxzZSxcbiAgICBmYWxzZSwgZmFsc2UsICRyb3RhdGUsIGZhbHNlLFxuICAgICR0cmFucy14LCAkdHJhbnMteSwgZmFsc2UsXG4gICAgJHNrZXcteCwgJHNrZXcteSxcbiAgICAkb3JpZ2luLXgsICRvcmlnaW4teSwgZmFsc2UsXG4gICAgZmFsc2VcbiAgKTtcbn1cbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIENTUyBUcmFuc2l0aW9uc1xuLy8gQ3VycmVudGx5IG9ubHkgd29ya3MgaW4gV2Via2l0LlxuLy9cbi8vICogZXhwZWN0ZWQgaW4gQ1NTMywgRmlyZUZveCAzLjYvNyBhbmQgT3BlcmEgUHJlc3RvIDIuM1xuLy8gKiBXZSdsbCBiZSBwcmVwYXJlZC5cbi8vXG4vLyBJbmNsdWRpbmcgdGhpcyBzdWJtb2R1bGUgc2V0cyBmb2xsb3dpbmcgZGVmYXVsdHMgZm9yIHRoZSBtaXhpbnM6XG4vL1xuLy8gICAgICRkZWZhdWx0LXRyYW5zaXRpb24tcHJvcGVydHkgOiBhbGxcbi8vICAgICAkZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uIDogMXNcbi8vICAgICAkZGVmYXVsdC10cmFuc2l0aW9uLWZ1bmN0aW9uIDogZmFsc2Vcbi8vICAgICAkZGVmYXVsdC10cmFuc2l0aW9uLWRlbGF5ICAgIDogZmFsc2Vcbi8vXG4vLyBPdmVycmlkZSB0aGVtIGlmIHlvdSBsaWtlLiBUaW1pbmctZnVuY3Rpb24gYW5kIGRlbGF5IGFyZSBzZXQgdG8gZmFsc2UgZm9yIGJyb3dzZXIgZGVmYXVsdHMgKGVhc2UsIDBzKS5cblxuJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eTogYWxsICFkZWZhdWx0O1xuXG4kZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAxcyAhZGVmYXVsdDtcblxuJGRlZmF1bHQtdHJhbnNpdGlvbi1mdW5jdGlvbjogZmFsc2UgIWRlZmF1bHQ7XG5cbiRkZWZhdWx0LXRyYW5zaXRpb24tZGVsYXk6IGZhbHNlICFkZWZhdWx0O1xuXG4kdHJhbnNpdGlvbmFibGUtcHJlZml4ZWQtdmFsdWVzOiB0cmFuc2Zvcm0sIHRyYW5zZm9ybS1vcmlnaW4gIWRlZmF1bHQ7XG5cbi8vIE9uZSBvciBtb3JlIHByb3BlcnRpZXMgdG8gdHJhbnNpdGlvblxuLy9cbi8vICogZm9yIG11bHRpcGxlLCB1c2UgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdFxuLy8gKiBhbHNvIGFjY2VwdHMgXCJhbGxcIiBvciBcIm5vbmVcIlxuXG5AbWl4aW4gdHJhbnNpdGlvbi1wcm9wZXJ0eSgkcHJvcGVydHktMTogJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eSxcbiAgJHByb3BlcnR5LTIgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTMgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTQgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTUgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTYgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTcgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTggOiBmYWxzZSxcbiAgJHByb3BlcnR5LTkgOiBmYWxzZSxcbiAgJHByb3BlcnR5LTEwOiBmYWxzZVxuKSB7XG4gIEBpZiB0eXBlLW9mKCRwcm9wZXJ0eS0xKSA9PSBzdHJpbmcgeyAkcHJvcGVydHktMTogdW5xdW90ZSgkcHJvcGVydHktMSk7IH1cbiAgJHByb3BlcnRpZXM6IGNvbXBhY3QoJHByb3BlcnR5LTEsICRwcm9wZXJ0eS0yLCAkcHJvcGVydHktMywgJHByb3BlcnR5LTQsICRwcm9wZXJ0eS01LCAkcHJvcGVydHktNiwgJHByb3BlcnR5LTcsICRwcm9wZXJ0eS04LCAkcHJvcGVydHktOSwgJHByb3BlcnR5LTEwKTtcbiAgQGlmICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgICAgICAgLXdlYmtpdC10cmFuc2l0aW9uLXByb3BlcnR5IDogcHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oLXdlYmtpdCwgJHByb3BlcnRpZXMpOyB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgICAgICAgIC1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eSA6IHByZWZpeGVkLWZvci10cmFuc2l0aW9uKC1tb3osICAgICRwcm9wZXJ0aWVzKTsgfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgICAgICAgIC1vLXRyYW5zaXRpb24tcHJvcGVydHkgOiBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigtbywgICAgICAkcHJvcGVydGllcyk7IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uLXByb3BlcnR5IDogJHByb3BlcnRpZXM7XG59XG5cbi8vIE9uZSBvciBtb3JlIGR1cmF0aW9ucyBpbiBzZWNvbmRzXG4vL1xuLy8gKiBmb3IgbXVsdGlwbGUsIHVzZSBhIGNvbW1hLWRlbGltaXRlZCBsaXN0XG4vLyAqIHRoZXNlIGR1cmF0aW9ucyB3aWxsIGFmZmVjdCB0aGUgcHJvcGVydGllcyBpbiB0aGUgc2FtZSBsaXN0IHBvc2l0aW9uXG5cbkBtaXhpbiB0cmFuc2l0aW9uLWR1cmF0aW9uKCRkdXJhdGlvbi0xOiAkZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uLFxuICAkZHVyYXRpb24tMiA6IGZhbHNlLFxuICAkZHVyYXRpb24tMyA6IGZhbHNlLFxuICAkZHVyYXRpb24tNCA6IGZhbHNlLFxuICAkZHVyYXRpb24tNSA6IGZhbHNlLFxuICAkZHVyYXRpb24tNiA6IGZhbHNlLFxuICAkZHVyYXRpb24tNyA6IGZhbHNlLFxuICAkZHVyYXRpb24tOCA6IGZhbHNlLFxuICAkZHVyYXRpb24tOSA6IGZhbHNlLFxuICAkZHVyYXRpb24tMTA6IGZhbHNlXG4pIHtcbiAgQGlmIHR5cGUtb2YoJGR1cmF0aW9uLTEpID09IHN0cmluZyB7ICRkdXJhdGlvbi0xOiB1bnF1b3RlKCRkdXJhdGlvbi0xKTsgfVxuICAkZHVyYXRpb25zOiBjb21wYWN0KCRkdXJhdGlvbi0xLCAkZHVyYXRpb24tMiwgJGR1cmF0aW9uLTMsICRkdXJhdGlvbi00LCAkZHVyYXRpb24tNSwgJGR1cmF0aW9uLTYsICRkdXJhdGlvbi03LCAkZHVyYXRpb24tOCwgJGR1cmF0aW9uLTksICRkdXJhdGlvbi0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh0cmFuc2l0aW9uLWR1cmF0aW9uLCAkZHVyYXRpb25zLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIE9uZSBvciBtb3JlIHRpbWluZyBmdW5jdGlvbnNcbi8vXG4vLyAqIFsgZWFzZSB8IGxpbmVhciB8IGVhc2UtaW4gfCBlYXNlLW91dCB8IGVhc2UtaW4tb3V0IHwgY3ViaWMtYmV6aWVyKHgxLCB5MSwgeDIsIHkyKV1cbi8vICogRm9yIG11bHRpcGxlLCB1c2UgYSBjb21tYS1kZWxpbWl0ZWQgbGlzdFxuLy8gKiBUaGVzZSBmdW5jdGlvbnMgd2lsbCBlZmZlY3QgdGhlIHByb3BlcnRpZXMgaW4gdGhlIHNhbWUgbGlzdCBwb3NpdGlvblxuXG5AbWl4aW4gdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24oJGZ1bmN0aW9uLTE6ICRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb24sXG4gICRmdW5jdGlvbi0yIDogZmFsc2UsXG4gICRmdW5jdGlvbi0zIDogZmFsc2UsXG4gICRmdW5jdGlvbi00IDogZmFsc2UsXG4gICRmdW5jdGlvbi01IDogZmFsc2UsXG4gICRmdW5jdGlvbi02IDogZmFsc2UsXG4gICRmdW5jdGlvbi03IDogZmFsc2UsXG4gICRmdW5jdGlvbi04IDogZmFsc2UsXG4gICRmdW5jdGlvbi05IDogZmFsc2UsXG4gICRmdW5jdGlvbi0xMDogZmFsc2Vcbikge1xuICAkZnVuY3Rpb24tMTogdW5xdW90ZSgkZnVuY3Rpb24tMSk7XG4gICRmdW5jdGlvbnM6IGNvbXBhY3QoJGZ1bmN0aW9uLTEsICRmdW5jdGlvbi0yLCAkZnVuY3Rpb24tMywgJGZ1bmN0aW9uLTQsICRmdW5jdGlvbi01LCAkZnVuY3Rpb24tNiwgJGZ1bmN0aW9uLTcsICRmdW5jdGlvbi04LCAkZnVuY3Rpb24tOSwgJGZ1bmN0aW9uLTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uLCAkZnVuY3Rpb25zLFxuICAgIC1tb3osIC13ZWJraXQsIC1vLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIE9uZSBvciBtb3JlIHRyYW5zaXRpb24tZGVsYXlzIGluIHNlY29uZHNcbi8vXG4vLyAqIGZvciBtdWx0aXBsZSwgdXNlIGEgY29tbWEtZGVsaW1pdGVkIGxpc3Rcbi8vICogdGhlc2UgZGVsYXlzIHdpbGwgZWZmZWN0IHRoZSBwcm9wZXJ0aWVzIGluIHRoZSBzYW1lIGxpc3QgcG9zaXRpb25cblxuQG1peGluIHRyYW5zaXRpb24tZGVsYXkoJGRlbGF5LTE6ICRkZWZhdWx0LXRyYW5zaXRpb24tZGVsYXksXG4gICRkZWxheS0yIDogZmFsc2UsXG4gICRkZWxheS0zIDogZmFsc2UsXG4gICRkZWxheS00IDogZmFsc2UsXG4gICRkZWxheS01IDogZmFsc2UsXG4gICRkZWxheS02IDogZmFsc2UsXG4gICRkZWxheS03IDogZmFsc2UsXG4gICRkZWxheS04IDogZmFsc2UsXG4gICRkZWxheS05IDogZmFsc2UsXG4gICRkZWxheS0xMDogZmFsc2Vcbikge1xuICBAaWYgdHlwZS1vZigkZGVsYXktMSkgPT0gc3RyaW5nIHsgJGRlbGF5LTE6IHVucXVvdGUoJGRlbGF5LTEpOyB9XG4gICRkZWxheXM6IGNvbXBhY3QoJGRlbGF5LTEsICRkZWxheS0yLCAkZGVsYXktMywgJGRlbGF5LTQsICRkZWxheS01LCAkZGVsYXktNiwgJGRlbGF5LTcsICRkZWxheS04LCAkZGVsYXktOSwgJGRlbGF5LTEwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHRyYW5zaXRpb24tZGVsYXksICRkZWxheXMsXG4gICAgLW1veiwgLXdlYmtpdCwgLW8sIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgKTtcbn1cblxuLy8gVHJhbnNpdGlvbiBhbGwtaW4tb25lIHNob3J0aGFuZFxuXG5AbWl4aW4gc2luZ2xlLXRyYW5zaXRpb24oXG4gICRwcm9wZXJ0eTogJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eSxcbiAgJGR1cmF0aW9uOiAkZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uLFxuICAkZnVuY3Rpb246ICRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb24sXG4gICRkZWxheTogJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheVxuKSB7XG4gIEBpbmNsdWRlIHRyYW5zaXRpb24oY29tcGFjdCgkcHJvcGVydHkgJGR1cmF0aW9uICRmdW5jdGlvbiAkZGVsYXkpKTtcbn1cblxuQG1peGluIHRyYW5zaXRpb24oXG4gICR0cmFuc2l0aW9uLTEgOiBkZWZhdWx0LFxuICAkdHJhbnNpdGlvbi0yIDogZmFsc2UsXG4gICR0cmFuc2l0aW9uLTMgOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tNCA6IGZhbHNlLFxuICAkdHJhbnNpdGlvbi01IDogZmFsc2UsXG4gICR0cmFuc2l0aW9uLTYgOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tNyA6IGZhbHNlLFxuICAkdHJhbnNpdGlvbi04IDogZmFsc2UsXG4gICR0cmFuc2l0aW9uLTkgOiBmYWxzZSxcbiAgJHRyYW5zaXRpb24tMTA6IGZhbHNlXG4pIHtcbiAgQGlmICR0cmFuc2l0aW9uLTEgPT0gZGVmYXVsdCB7XG4gICAgJHRyYW5zaXRpb24tMSA6IGNvbXBhY3QoJGRlZmF1bHQtdHJhbnNpdGlvbi1wcm9wZXJ0eSAkZGVmYXVsdC10cmFuc2l0aW9uLWR1cmF0aW9uICRkZWZhdWx0LXRyYW5zaXRpb24tZnVuY3Rpb24gJGRlZmF1bHQtdHJhbnNpdGlvbi1kZWxheSk7XG4gIH1cbiAgJHRyYW5zaXRpb25zOiBmYWxzZTtcbiAgQGlmIHR5cGUtb2YoJHRyYW5zaXRpb24tMSkgPT0gbGlzdCBhbmQgdHlwZS1vZihudGgoJHRyYW5zaXRpb24tMSwxKSkgPT0gbGlzdCB7XG4gICAgJHRyYW5zaXRpb25zOiBqb2luKCR0cmFuc2l0aW9uLTEsIGNvbXBhY3QoJHRyYW5zaXRpb24tMiwgJHRyYW5zaXRpb24tMywgJHRyYW5zaXRpb24tNCwgJHRyYW5zaXRpb24tNSwgJHRyYW5zaXRpb24tNiwgJHRyYW5zaXRpb24tNywgJHRyYW5zaXRpb24tOCwgJHRyYW5zaXRpb24tOSwgJHRyYW5zaXRpb24tMTApLCBjb21tYSk7XG4gIH0gQGVsc2Uge1xuICAgICR0cmFuc2l0aW9ucyA6IGNvbXBhY3QoJHRyYW5zaXRpb24tMSwgJHRyYW5zaXRpb24tMiwgJHRyYW5zaXRpb24tMywgJHRyYW5zaXRpb24tNCwgJHRyYW5zaXRpb24tNSwgJHRyYW5zaXRpb24tNiwgJHRyYW5zaXRpb24tNywgJHRyYW5zaXRpb24tOCwgJHRyYW5zaXRpb24tOSwgJHRyYW5zaXRpb24tMTApO1xuICB9XG4gICRkZWxheXM6IGNvbW1hLWxpc3QoKTtcbiAgJGhhcy1kZWxheXM6IGZhbHNlO1xuICAkd2Via2l0LXZhbHVlOiBjb21tYS1saXN0KCk7XG4gICRtb3otdmFsdWU6IGNvbW1hLWxpc3QoKTtcbiAgJG8tdmFsdWU6IGNvbW1hLWxpc3QoKTtcblxuICAvLyBUaGlzIGJsb2NrIGNhbiBiZSBtYWRlIGNvbnNpZGVyYWJseSBzaW1wbGVyIGF0IHRoZSBwb2ludCBpbiB0aW1lIHRoYXRcbiAgLy8gd2Ugbm8gbG9uZ2VyIG5lZWQgdG8gZGVhbCB3aXRoIHRoZSBkaWZmZXJlbmNlcyBpbiBob3cgZGVsYXlzIGFyZSB0cmVhdGVkLlxuICBAZWFjaCAkdHJhbnNpdGlvbiBpbiAkdHJhbnNpdGlvbnMge1xuICAgIC8vIEV4dHJhY3QgdGhlIHZhbHVlcyBmcm9tIHRoZSBsaXN0XG4gICAgLy8gKHRoaXMgd291bGQgYmUgY2xlYW5lciBpZiBudGggdG9vayBhIDNyZCBhcmd1bWVudCB0byBwcm92aWRlIGEgZGVmYXVsdCB2YWx1ZSkuXG4gICAgJHByb3BlcnR5OiBudGgoJHRyYW5zaXRpb24sIDEpO1xuICAgICRkdXJhdGlvbjogZmFsc2U7XG4gICAgJHRpbWluZy1mdW5jdGlvbjogZmFsc2U7XG4gICAgJGRlbGF5OiBmYWxzZTtcbiAgICBAaWYgbGVuZ3RoKCR0cmFuc2l0aW9uKSA+IDEgeyAkZHVyYXRpb246ICAgICAgICBudGgoJHRyYW5zaXRpb24sIDIpOyB9XG4gICAgQGlmIGxlbmd0aCgkdHJhbnNpdGlvbikgPiAyIHsgJHRpbWluZy1mdW5jdGlvbjogbnRoKCR0cmFuc2l0aW9uLCAzKTsgfVxuICAgIEBpZiBsZW5ndGgoJHRyYW5zaXRpb24pID4gMyB7ICRkZWxheTogICAgICAgICAgIG50aCgkdHJhbnNpdGlvbiwgNCk7ICRoYXMtZGVsYXlzOiB0cnVlOyB9XG5cbiAgICAvLyBJZiBhIGRlbGF5IGlzIHByb3ZpZGVkIHdpdGhvdXQgYSB0aW1pbmcgZnVuY3Rpb25cbiAgICBAaWYgaXMtdGltZSgkdGltaW5nLWZ1bmN0aW9uKSBhbmQgbm90KCRkZWxheSkgeyAkZGVsYXk6ICR0aW1pbmctZnVuY3Rpb247ICR0aW1pbmctZnVuY3Rpb246IGZhbHNlOyAkaGFzLWRlbGF5czogdHJ1ZTsgfVxuXG4gICAgLy8gS2VlcCBhIGxpc3Qgb2YgZGVsYXlzIGluIGNhc2Ugb25lIGlzIHNwZWNpZmllZFxuICAgICRkZWxheXM6IGFwcGVuZCgkZGVsYXlzLCBpZigkZGVsYXksICRkZWxheSwgMHMpKTtcblxuICAgICR3ZWJraXQtdmFsdWU6IGFwcGVuZCgkd2Via2l0LXZhbHVlLCBjb21wYWN0KChwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigtd2Via2l0LCAkcHJvcGVydHkpICRkdXJhdGlvbiAkdGltaW5nLWZ1bmN0aW9uKS4uLikpO1xuICAgICAgICRtb3otdmFsdWU6IGFwcGVuZCggICAkbW96LXZhbHVlLCBjb21wYWN0KChwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbiggICAtbW96LCAkcHJvcGVydHkpICRkdXJhdGlvbiAkdGltaW5nLWZ1bmN0aW9uICRkZWxheSkuLi4pKTtcbiAgICAgICAgICRvLXZhbHVlOiBhcHBlbmQoICAgICAkby12YWx1ZSwgY29tcGFjdCgocHJlZml4ZWQtZm9yLXRyYW5zaXRpb24oICAgICAtbywgJHByb3BlcnR5KSAkZHVyYXRpb24gJHRpbWluZy1mdW5jdGlvbiAkZGVsYXkpLi4uKSk7XG4gIH1cblxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAgICAgICAtd2Via2l0LXRyYW5zaXRpb24gOiAkd2Via2l0LXZhbHVlO1xuICAgIC8vIG9sZCB3ZWJraXQgZG9lc24ndCBzdXBwb3J0IHRoZSBkZWxheSBwYXJhbWV0ZXIgaW4gdGhlIHNob3J0aGFuZCBzbyB3ZSBwcm9ncmVzc2l2ZWx5IGVuaGFuY2UgaXQuXG4gICAgQGlmICRoYXMtZGVsYXlzICAgICAgICAgICAgICAgICAgICAgICB7IC13ZWJraXQtdHJhbnNpdGlvbi1kZWxheSA6ICRkZWxheXM7ICAgICAgIH0gfVxuICBAaWYgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAgICAgICAtbW96LXRyYW5zaXRpb24gOiAkbW96LXZhbHVlOyAgICB9XG4gIEBpZiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgICAgICAgLW8tdHJhbnNpdGlvbiA6ICRvLXZhbHVlOyAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uIDogJHRyYW5zaXRpb25zO1xufVxuXG4vLyBjb2VyY2UgYSBsaXN0IHRvIGJlIGNvbW1hIGRlbGltaXRlZCBvciBtYWtlIGEgbmV3LCBlbXB0eSBjb21tYSBkZWxpbWl0ZWQgbGlzdC5cbkBmdW5jdGlvbiBjb21tYS1saXN0KCRsaXN0OiAoKSkge1xuICBAcmV0dXJuIGpvaW4oKCksICRsaXN0LCBjb21tYSk7XG59XG5cbi8vIFJldHVybnMgYCRwcm9wZXJ0eWAgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4IGlmIGl0IGlzIGZvdW5kIGluIGAkdHJhbnNpdGlvbmFibGUtcHJlZml4ZWQtdmFsdWVzYC5cbkBmdW5jdGlvbiBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigkcHJlZml4LCAkcHJvcGVydHkpIHtcbiAgQGlmIHR5cGUtb2YoJHByb3BlcnR5KSA9PSBsaXN0IHtcbiAgICAkbmV3LWxpc3Q6IGNvbW1hLWxpc3QoKTtcbiAgICBAZWFjaCAkdiBpbiAkcHJvcGVydHkge1xuICAgICAgJG5ldy1saXN0OiBhcHBlbmQoJG5ldy1saXN0LCBwcmVmaXhlZC1mb3ItdHJhbnNpdGlvbigkcHJlZml4LCAkdikpO1xuICAgIH1cbiAgICBAcmV0dXJuICRuZXctbGlzdDtcbiAgfSBAZWxzZSB7XG4gICAgQGlmIGluZGV4KCR0cmFuc2l0aW9uYWJsZS1wcmVmaXhlZC12YWx1ZXMsICRwcm9wZXJ0eSkge1xuICAgICAgQHJldHVybiAjeyRwcmVmaXh9LSN7JHByb3BlcnR5fTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEByZXR1cm4gJHByb3BlcnR5O1xuICAgIH1cbiAgfVxufVxuXG4vLyBDaGVja3MgaWYgdGhlIHZhbHVlIGdpdmVuIGlzIGEgdW5pdCBvZiB0aW1lLlxuQGZ1bmN0aW9uIGlzLXRpbWUoJHZhbHVlKSB7XG4gIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gbnVtYmVyIHtcbiAgICBAcmV0dXJuIG5vdChub3QoaW5kZXgocyBtcywgdW5pdCgkdmFsdWUpKSkpO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuIGZhbHNlO1xuICB9XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBDaGFuZ2UgdGhlIGFwcGVhcmFuY2UgZm9yIE1vemlsbGEsIFdlYmtpdCBhbmQgcG9zc2libHkgdGhlIGZ1dHVyZS5cbi8vIFRoZSBhcHBlYXJhbmNlIHByb3BlcnR5IGlzIGN1cnJlbnRseSBub3QgcHJlc2VudCBpbiBhbnkgbmV3ZXIgQ1NTIHNwZWNpZmljYXRpb24uXG4vL1xuLy8gVGhlcmUgaXMgbm8gb2ZmaWNpYWwgbGlzdCBvZiBhY2NlcHRlZCB2YWx1ZXMsIGJ1dCB5b3UgbWlnaHQgY2hlY2sgdGhlc2Ugc291cmNlOlxuLy8gICBNb3ppbGxhIDogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4vQ1NTLy1tb3otYXBwZWFyYW5jZVxuLy8gICBXZWJraXQgIDogaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3dlYmtpdC1taXJyb3Ivc291cmNlL2Jyb3dzZS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVLZXl3b3Jkcy5pbj9zcGVjPXN2bmYxYWVhNTU5ZGNkMDI1YTg5NDZhYTdkYTZlNGU4MzA2ZjVjMWI2MDQmcj02M2M3ZDFhZjQ0NDMwYjMxNDIzM2ZlYTM0MmMzZGRiMmEwNTJlMzY1XG4vLyAgIChzZWFyY2ggZm9yICdhcHBlYXJhbmNlJyB3aXRoaW4gdGhlIHBhZ2UpXG5cbkBtaXhpbiBhcHBlYXJhbmNlKCRhcCkge1xuICAkYXA6IHVucXVvdGUoJGFwKTtcbiAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKGFwcGVhcmFuY2UsICRhcCxcbiAgICAtbW96LCAtd2Via2l0LCBub3QoLW8pLCBub3QoLW1zKSwgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICk7XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBXZWJraXQsIElFMTAgYW5kIGZ1dHVyZSBzdXBwb3J0IGZvciBbQ1NTIFJlZ2lvbnNdKGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtcmVnaW9ucy8pXG4vL1xuLy8gJHRhcmdldCBpcyBhIHZhbHVlIHlvdSB1c2UgdG8gbGluayB0d28gcmVnaW9ucyBvZiB5b3VyIGNzcy4gR2l2ZSB0aGUgc291cmNlIG9mIHlvdXIgY29udGVudCB0aGUgZmxvdy1pbnRvIHByb3BlcnR5LCBhbmQgZ2l2ZSB5b3VyIHRhcmdldCBjb250YWluZXIgdGhlIGZsb3ctZnJvbSBwcm9wZXJ0eS5cbi8vXG4vLyBGb3IgYSB2aXN1YWwgZXhwbGFuYXRpb24sIHNlZSB0aGUgZGlhZ3JhbXMgYXQgQ2hyaXMgQ295aWVyJ3Ncbi8vIFtDU1MtVHJpY2tzXShodHRwOi8vY3NzLXRyaWNrcy5jb20vY29udGVudC1mb2xkaW5nLylcblxuQG1peGluIGZsb3ctaW50bygkdGFyZ2V0KSB7XG4gICR0YXJnZXQ6IHVucXVvdGUoJHRhcmdldCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChmbG93LWludG8sICR0YXJnZXQsXG4gICAgbm90KC1tb3opLCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBub3Qgb2ZmaWNpYWxcbiAgKTtcbn1cblxuQG1peGluIGZsb3ctZnJvbSgkdGFyZ2V0KSB7XG4gICR0YXJnZXQ6IHVucXVvdGUoJHRhcmdldCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChmbG93LWZyb20sICR0YXJnZXQsXG4gICAgbm90KC1tb3opLCAtd2Via2l0LCBub3QoLW8pLCAtbXMsIG5vdCgta2h0bWwpLCBub3Qgb2ZmaWNpYWxcbiAgKTtcbn0iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcInNoYXJlZFwiO1xuXG4vLyBNaXhpbnMgdG8gc3VwcG9ydCBzcGVjaWZpYyBDU1MgVGV4dCBMZXZlbCAzIGVsZW1lbnRzXG4vL1xuLy9cbi8vXG4vLyBNaXhpbiBmb3Igd29yZC1icmVhayBwcm9wZXJ0aWVzXG4vLyBodHRwOi8vd3d3LnczLm9yZy9jc3MzLXRleHQvI3dvcmQtYnJlYWtcbi8vICogbGVnYWwgdmFsdWVzIGZvciAkdHlwZSA6IG5vcm1hbCwga2VlcC1hbGwsIGJyZWFrLWFsbFxuLy9cbi8vIEV4YW1wbGU6XG4vLyAgICBwLndvcmRCcmVhayB7QGluY2x1ZGUgd29yZC1icmVhayhicmVhay1hbGwpO31cbi8vXG4vLyBXaGljaCBnZW5lcmF0ZXM6XG4vLyAgICBwLndvcmRCcmVhayB7XG4vLyAgICAgIC1tcy13b3JkLWJyZWFrOiBicmVhay1hbGw7XG4vLyAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbi8vICAgICAgd29yZC1icmVhazogYnJlYWstd29yZDt9XG4vL1xuQG1peGluIHdvcmQtYnJlYWsoJHZhbHVlOiBub3JtYWwpe1xuICBAaWYgJHZhbHVlID09IGJyZWFrLWFsbCB7XG4gICAgLy9Nb3N0IGJyb3dzZXJzIGhhbmRsZSB0aGUgYnJlYWstYWxsIGNhc2UgdGhlIHNhbWUuLi5cbiAgICBAaW5jbHVkZSBleHBlcmltZW50YWwod29yZC1icmVhaywgJHZhbHVlLFxuICAgICAgbm90KC1tb3opLCBub3QoLXdlYmtpdCksIG5vdCgtbyksIC1tcywgbm90KC1raHRtbCksIG9mZmljaWFsXG4gICAgKTtcbiAgICAvL1dlYmtpdCBoYW5kbGVzIGJyZWFrLWFsbCBkaWZmZXJlbnRseS4uLiBhcyBicmVhay13b3JkXG4gICAgQGluY2x1ZGUgZXhwZXJpbWVudGFsKHdvcmQtYnJlYWssIGJyZWFrLXdvcmQsXG4gICAgICBub3QoLW1veiksIG5vdCgtd2Via2l0KSwgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICAgICk7XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIGV4cGVyaW1lbnRhbCh3b3JkLWJyZWFrLCAkdmFsdWUsXG4gICAgICBub3QoLW1veiksIG5vdCgtd2Via2l0KSwgbm90KC1vKSwgLW1zLCBub3QoLWtodG1sKSwgb2ZmaWNpYWxcbiAgICApO1xuICB9XG59XG5cbi8vIE1peGluIGZvciB0aGUgaHlwaGVucyBwcm9wZXJ0eVxuLy9cbi8vIFczQyBzcGVjaWZpY2F0aW9uOiBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLXRleHQvI2h5cGhlbnNcbi8vICogbGVnYWwgdmFsdWVzIGZvciAkdHlwZSA6IGF1dG8sIG1hbnVhbCwgbm9uZVxuLy9cbi8vIEV4YW1wbGU6XG4vLyAgcCB7XG4vLyAgICBAaW5jbHVkZSBoeXBoZW5zKGF1dG8pO31cbi8vIFdoaWNoIGdlbmVyYXRlczpcbi8vICBwIHtcbi8vICAgIC1tb3otaHlwaGVuczogYXV0bztcbi8vICAgIC13ZWJraXQtaHlwaGVuczogYXV0bztcbi8vICAgIGh5cGhlbnM6IGF1dG87fVxuLy9cbkBtaXhpbiBoeXBoZW5zKCR2YWx1ZTogYXV0byl7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChoeXBoZW5zLCAkdmFsdWUsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuXG4vLyBNaXhpbiBmb3IgeC1icm93c2VyIGh5cGhlbmF0aW9uIGJhc2VkIG9uIEBhdWNoZW5iZXJnJ3MgcG9zdDpcbi8vIFJlbW92ZXMgdGhlIG5lZWQgZm9yIHRoZSA8d2JyLz4gSFRNTCB0YWdcbi8vIGh0dHA6Ly9ibG9nLmtlbm5ldGguaW8vYmxvZy8yMDEyLzAzLzA0L3dvcmQtd3JhcHBpbmctaHlwZXJuYXRpb24tdXNpbmctY3NzL1xuLy9cbi8vICBFeGFtcGxlOlxuLy8gIGRpdiB7QGluY2x1ZGUgaHlwaGVuYXRpb247fVxuLy9cbi8vICBXaGljaCBnZW5lcmF0ZXM6XG4vLyAgICBkaXYge1xuLy8gICAgICAtbXMtd29yZC1icmVhazogYnJlYWstYWxsO1xuLy8gICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4vLyAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4vLyAgICAgIC1tb3otaHlwaGVuczogYXV0bztcbi8vICAgICAgLXdlYmtpdC1oeXBoZW5zOiBhdXRvO1xuLy8gICAgICBoeXBoZW5zOiBhdXRvO31cbi8vXG5AbWl4aW4gaHlwaGVuYXRpb257XG4gIEBpbmNsdWRlIHdvcmQtYnJlYWsoYnJlYWstYWxsKTtcbiAgQGluY2x1ZGUgaHlwaGVucztcbn1cbiIsIkBpbXBvcnQgXCIuLi9zdXBwb3J0XCI7XG5cbi8vIFRoaXMgbWl4aW4gcHJvdmlkZXMgYmFzaWMgc3VwcG9ydCBmb3IgQ1NTMyBwcm9wZXJ0aWVzIGFuZFxuLy8gdGhlaXIgY29ycmVzcG9uZGluZyBleHBlcmltZW50YWwgQ1NTMiBwcm9wZXJ0aWVzIHdoZW5cbi8vIHRoZSBpbXBsZW1lbnRhdGlvbnMgYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIHRoZSBwcm9wZXJ0eVxuLy8gcHJlZml4LlxuQG1peGluIGV4cGVyaW1lbnRhbCgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgLXdlYmtpdC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICAta2h0bWwtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAgICAtbW96LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgICAgIC1tcy0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICAgICAgLW8tI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxufVxuXG4vLyBTYW1lIGFzIGV4cGVyaW1lbnRhbCgpLCBidXQgZm9yIGNhc2VzIHdoZW4gdGhlIHByb3BlcnR5IGlzIHRoZSBzYW1lIGFuZCB0aGUgdmFsdWUgaXMgdmVuZG9yaXplZFxuQG1peGluIGV4cGVyaW1lbnRhbC12YWx1ZSgkcHJvcGVydHksICR2YWx1ZSxcbiAgJG1veiAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhLFxuICAkd2Via2l0ICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCxcbiAgJG8gICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSxcbiAgJG1zICAgICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQsXG4gICRraHRtbCAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwsXG4gICRvZmZpY2lhbCA6IHRydWVcbikge1xuICBAaWYgJHdlYmtpdCAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgIHsgI3skcHJvcGVydHl9IDogLXdlYmtpdC0jeyR2YWx1ZX07IH1cbiAgQGlmICRraHRtbCAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICB7ICN7JHByb3BlcnR5fSA6ICAta2h0bWwtI3skdmFsdWV9OyB9XG4gIEBpZiAkbW96ICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAtbW96LSN7JHZhbHVlfTsgfVxuICBAaWYgJG1zICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0IHsgI3skcHJvcGVydHl9IDogICAgIC1tcy0jeyR2YWx1ZX07IH1cbiAgQGlmICRvICAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgLW8tI3skdmFsdWV9OyB9XG4gIEBpZiAkb2ZmaWNpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgICAgICN7JHZhbHVlfTsgfVxufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwic2hhcmVkXCI7XG5cbi8vIFByb3ZpZGVzIGNyb3NzLWJyb3dzZXIgc3VwcG9ydCBmb3IgdGhlIHVwY29taW5nICg/KSBjc3MzIGZpbHRlciBwcm9wZXJ0eS5cbi8vXG4vLyBFYWNoIGZpbHRlciBhcmd1bWVudCBzaG91bGQgYWRoZXJlIHRvIHRoZSBzdGFuZGFyZCBjc3MzIHN5bnRheCBmb3IgdGhlXG4vLyBmaWx0ZXIgcHJvcGVydHkuXG5AbWl4aW4gZmlsdGVyIChcbiAgJGZpbHRlci0xLFxuICAkZmlsdGVyLTIgOiBmYWxzZSxcbiAgJGZpbHRlci0zIDogZmFsc2UsXG4gICRmaWx0ZXItNCA6IGZhbHNlLFxuICAkZmlsdGVyLTUgOiBmYWxzZSxcbiAgJGZpbHRlci02IDogZmFsc2UsXG4gICRmaWx0ZXItNyA6IGZhbHNlLFxuICAkZmlsdGVyLTggOiBmYWxzZSxcbiAgJGZpbHRlci05IDogZmFsc2UsXG4gICRmaWx0ZXItMTA6IGZhbHNlXG4pIHtcbiAgJGZpbHRlciA6IGNvbXBhY3QoJGZpbHRlci0xLCAkZmlsdGVyLTIsICRmaWx0ZXItMywgJGZpbHRlci00LCAkZmlsdGVyLTUsICRmaWx0ZXItNiwgJGZpbHRlci03LCAkZmlsdGVyLTgsICRmaWx0ZXItOSwgJGZpbHRlci0xMCk7XG4gIEBpbmNsdWRlIGV4cGVyaW1lbnRhbChmaWx0ZXIsICRmaWx0ZXIsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbFxuICApO1xufVxuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcblxuLy8gVGhpcyBtaXhpbiBwcm92aWRlcyBiYXNpYyBzdXBwb3J0IGZvciBDU1MzIHByb3BlcnRpZXMgYW5kXG4vLyB0aGVpciBjb3JyZXNwb25kaW5nIGV4cGVyaW1lbnRhbCBDU1MyIHByb3BlcnRpZXMgd2hlblxuLy8gdGhlIGltcGxlbWVudGF0aW9ucyBhcmUgaWRlbnRpY2FsIGV4Y2VwdCBmb3IgdGhlIHByb3BlcnR5XG4vLyBwcmVmaXguXG5AbWl4aW4gZXhwZXJpbWVudGFsKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAtd2Via2l0LSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgIC1raHRtbC0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICAgIC1tb3otI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAgICAgLW1zLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgICAgICAtby0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICAgICAgICAgI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG59XG5cbi8vIFNhbWUgYXMgZXhwZXJpbWVudGFsKCksIGJ1dCBmb3IgY2FzZXMgd2hlbiB0aGUgcHJvcGVydHkgaXMgdGhlIHNhbWUgYW5kIHRoZSB2YWx1ZSBpcyB2ZW5kb3JpemVkXG5AbWl4aW4gZXhwZXJpbWVudGFsLXZhbHVlKCRwcm9wZXJ0eSwgJHZhbHVlLFxuICAkbW96ICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEsXG4gICR3ZWJraXQgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0LFxuICAkbyAgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhLFxuICAkbXMgICAgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCxcbiAgJGtodG1sICAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCxcbiAgJG9mZmljaWFsIDogdHJ1ZVxuKSB7XG4gIEBpZiAkd2Via2l0ICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgeyAjeyRwcm9wZXJ0eX0gOiAtd2Via2l0LSN7JHZhbHVlfTsgfVxuICBAaWYgJGtodG1sICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgIHsgI3skcHJvcGVydHl9IDogIC1raHRtbC0jeyR2YWx1ZX07IH1cbiAgQGlmICRtb3ogICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICB7ICN7JHByb3BlcnR5fSA6ICAgIC1tb3otI3skdmFsdWV9OyB9XG4gIEBpZiAkbXMgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgeyAjeyRwcm9wZXJ0eX0gOiAgICAgLW1zLSN7JHZhbHVlfTsgfVxuICBAaWYgJG8gICAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAtby0jeyR2YWx1ZX07IH1cbiAgQGlmICRvZmZpY2lhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICN7JHByb3BlcnR5fSA6ICAgICAgICAgI3skdmFsdWV9OyB9XG59XG4iLCIvLyBVc3VhbGx5IGNvbXBhc3MgaGFja3MgYXBwbHkgdG8gYm90aCBpZTYgJiA3IC0tIHNldCB0aGlzIHRvIGZhbHNlIHRvIGRpc2FibGUgc3VwcG9ydCBmb3IgYm90aC5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNiBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTY6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGllNyBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTc6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIFNldHRpbmcgdGhpcyB0byBmYWxzZSB3aWxsIHJlc3VsdCBpbiBzbWFsbGVyIG91dHB1dCwgYnV0IG5vIHN1cHBvcnQgZm9yIGxlZ2FjeSBpZTggaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBAcHJpdmF0ZVxuLy8gVGhlIHVzZXIgY2FuIHNpbXBseSBzZXQgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSBhbmQgNiwgNywgYW5kIDggd2lsbCBiZSBzZXQgYWNjb3JkaW5nbHksXG4vLyBCdXQgaW4gY2FzZSB0aGUgdXNlciBzZXQgZWFjaCBvZiB0aG9zZSBleHBsaWNpdGx5LCB3ZSBuZWVkIHRvIHN5bmMgdGhlIHZhbHVlIG9mXG4vLyB0aGlzIGNvbWJpbmVkIHZhcmlhYmxlLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTYgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTcgb3IgJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg7XG5cbi8vIFdoZXRoZXIgdG8gb3V0cHV0IGxlZ2FjeSBzdXBwb3J0IGZvciBtb3ppbGxhLlxuLy8gVXN1YWxseSB0aGlzIG1lYW5zIGhhY2tzIHRvIHN1cHBvcnQgRmlyZWZveCAzLjYgb3IgZWFybGllci5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItbW96aWxsYTogdHJ1ZTtcblxuLy8gU3VwcG9ydCBmb3IgbW96aWxsYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbW96KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtd2Via2l0KS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itd2Via2l0ICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHdlYmtpdCdzIG9yaWdpbmFsIChub24tc3RhbmRhcmQpIGdyYWRpZW50IHN5bnRheC5cbiRzdXBwb3J0LWZvci1vcmlnaW5hbC13ZWJraXQtZ3JhZGllbnRzIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG9wZXJhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1vKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEgICAgICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIG1pY3Jvc29mdCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbXMpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1taWNyb3NvZnQgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Iga2h0bWwgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLWtodG1sKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Ita2h0bWwgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBzdmcgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcy5cbi8vIFNldHRpbmcgdGhpcyB0byB0cnVlIG1pZ2h0IGFkZCBzaWduaWZpY2FudCBzaXplIHRvIHlvdXJcbi8vIGdlbmVyYXRlZCBzdHlsZXNoZWV0cy5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itc3ZnICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBDU1MgUElFIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1waWUpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1waWUgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbiIsIiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBJdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgU2FzcydzIEBleHRlbmQgZGlyZWN0aXZlIHRvIGFwcGx5IHRoZSBiZWhhdmlvclxuLy8gdG8geW91ciBQSUUgZWxlbWVudHMuIFRvIGFzc2lzdCB5b3UsIENvbXBhc3MgcHJvdmlkZXMgdGhpcyB2YXJpYWJsZS5cbi8vIFdoZW4gc2V0LCBpdCB3aWxsIGNhdXNlIHRoZSBgQGluY2x1ZGUgcGllYCBtaXhpbiB0byBleHRlbmQgdGhpcyBjbGFzcy5cbi8vIFRoZSBjbGFzcyBuYW1lIHlvdSBwcm92aWRlIHNob3VsZCAqKm5vdCoqIGluY2x1ZGUgdGhlIGAuYC5cbiRwaWUtYmFzZS1jbGFzczogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIFRoZSBkZWZhdWx0IGFwcHJvYWNoIHRvIHVzaW5nIFBJRS5cbi8vIENhbiBiZSBvbmUgb2Y6XG4vL1xuLy8gKiByZWxhdGl2ZSAoZGVmYXVsdClcbi8vICogei1pbmRleFxuLy8gKiBub25lXG4kcGllLWRlZmF1bHQtYXBwcm9hY2g6IHJlbGF0aXZlICFkZWZhdWx0O1xuXG4vLyBUaGUgbG9jYXRpb24gb2YgeW91ciBQSUUgYmVoYXZpb3IgZmlsZVxuLy8gVGhpcyBzaG91bGQgYmUgcm9vdC1yZWxhdGl2ZSB0byB5b3VyIHdlYiBzZXJ2ZXJcbi8vIHJlbGF0aXZlIGFzc2V0cyBkb24ndCB3b3JrLiBJdCBpcyByZWNvbW1lbmRlZCB0aGF0XG4vLyB5b3Ugc2V0IHRoaXMgeW91cnNlbGYuXG4kcGllLWJlaGF2aW9yOiBzdHlsZXNoZWV0LXVybChcIlBJRS5odGNcIikgIWRlZmF1bHQ7XG5cbi8vIFdoZW4gdXNpbmcgdGhlIHotaW5kZXggYXBwcm9hY2gsIHRoZVxuLy8gZmlyc3QgYW5jZXN0b3Igb2YgdGhlIFBJRSBlbGVtZW50IGF0XG4vLyBvciBiZWZvcmUgdGhlIGNvbnRhaW5lcidzIG9wYXF1ZSBiYWNrZ3JvdW5kXG4vLyBzaG91bGQgaGF2ZSBhIHotaW5kZXggc2V0IGFzIHdlbGwgdG8gZW5zdXJlXG4vLyBwcm9wZXJ0IHotaW5kZXggc3RhY2tpbmcuXG4vL1xuLy8gVGhlIGAkcG9zaXRpb25gIGFyZ3VtZW50IG11c3QgYmUgc29tZSBub24tc3RhdGljXG4vLyB2YWx1ZSAoYWJzb2x1dGUsIHJlbGF0aXZlLCBldGMuKVxuQG1peGluIHBpZS1jb250YWluZXIoJHotaW5kZXg6IDAsICRwb3NpdGlvbjogcmVsYXRpdmUpIHtcbiAgei1pbmRleDogJHotaW5kZXg7XG4gIHBvc2l0aW9uOiAkcG9zaXRpb247XG59XG5cbi8vIFBJRSBlbGVtZW50cyBtdXN0IGhhdmUgdGhpcyBiZWhhdmlvciBhdHRhY2hlZCB0byB0aGVtLlxuLy8gSUUgaXMgYnJva2VuIC0tIGl0IGRvZXNuJ3QgdGhpbmsgb2YgYmVoYXZpb3IgdXJscyBhc1xuLy8gcmVsYXRpdmUgdG8gdGhlIHN0eWxlc2hlZXQuIEl0IGNvbnNpZGVycyB0aGVtIHJlbGF0aXZlXG4vLyB0byB0aGUgd2VicGFnZS4gQXMgYSByZXN1bHQsIHlvdSBjYW5ub3QgcmVsaWFibHkgdXNlXG4vLyBjb21wYXNzJ3MgcmVsYXRpdmVfYXNzZXRzIHdpdGggUElFLlxuLy9cbi8vICogYCRhcHByb2FjaGAgLSBvbmUgb2Y6IHJlbGF0aXZlLCB6LWluZGV4LCBvciBub25lXG4vLyAqIGAkei1pbmRleGAgLSB3aGVuIHVzaW5nIHRoZSB6LWluZGV4IGFwcHJvYWNoLCB0aGlzXG4vLyAgICAgICAgICAgICAgICBpcyB0aGUgei1pbmRleCB0aGF0IGlzIGFwcGxpZWQuXG5AbWl4aW4gcGllLWVsZW1lbnQoXG4gICRhcHByb2FjaDogJHBpZS1kZWZhdWx0LWFwcHJvYWNoLFxuICAkei1pbmRleDogMFxuKSB7XG4gIGJlaGF2aW9yOiAkcGllLWJlaGF2aW9yO1xuICBAaWYgJGFwcHJvYWNoID09IHJlbGF0aXZlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIH1cbiAgQGVsc2UgaWYgJGFwcHJvYWNoID09IHotaW5kZXgge1xuICAgIHotaW5kZXg6ICR6LWluZGV4O1xuICB9XG59XG5cbi8vIGEgc21hcnQgbWl4aW4gdGhhdCBrbm93cyB0byBleHRlbmQgb3IgaW5jbHVkZSBwaWUtZWxlbWVudCBhY2NvcmRpbmdcbi8vIHRvIHlvdXIgc3R5bGVzaGVldCdzIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLlxuQG1peGluIHBpZSgkYmFzZS1jbGFzczogJHBpZS1iYXNlLWNsYXNzKSB7XG4gIEBpZiAkYmFzZS1jbGFzcyB7XG4gICAgQGV4dGVuZCAuI3skYmFzZS1jbGFzc307XG4gIH1cbiAgQGVsc2Uge1xuICAgIEBpbmNsdWRlIHBpZS1lbGVtZW50O1xuICB9XG59XG5cbi8vIFdhdGNoIGAkbmAgbGV2ZWxzIG9mIGFuY2VzdG9ycyBmb3IgY2hhbmdlcyB0byB0aGVpciBjbGFzcyBhdHRyaWJ1dGVcbi8vIFNvIHRoYXQgY2FzY2FkaW5nIHN0eWxlcyB3aWxsIHdvcmsgY29ycmVjdGx5IG9uIHRoZSBQSUUgZWxlbWVudC5cbkBtaXhpbiBwaWUtd2F0Y2gtYW5jZXN0b3JzKCRuKSB7XG4gIC1waWUtd2F0Y2gtYW5jZXN0b3JzOiAkbjtcbn1cbiIsIi8vIFVzZXIgSW50ZXJmYWNlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVGhpcyBmaWxlIGNhbiBiZSBleHBhbmRlZCB0byBoYW5kbGUgYWxsIHRoZSB1c2VyIGludGVyZmFjZSBwcm9wZXJ0aWVzIGFzXG4vLyB0aGV5IGJlY29tZSBhdmFpbGFibGUgaW4gYnJvd3NlcnM6XG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAwL1dELWNzczMtdXNlcmludC0yMDAwMDIxNlxuQGltcG9ydCBcInNoYXJlZFwiO1xuXG5cbi8vIFRoaXMgcHJvcGVydHkgY29udHJvbHMgdGhlIHNlbGVjdGlvbiBtb2RlbCBhbmQgZ3JhbnVsYXJpdHkgb2YgYW4gZWxlbWVudC5cbi8vXG4vLyBAcGFyYW0gJHNlbGVjdFxuLy8gICBbIG5vbmUgfCB0ZXh0IHwgdG9nZ2xlIHwgZWxlbWVudCB8IGVsZW1lbnRzIHwgYWxsIHwgaW5oZXJpdCBdXG5AbWl4aW4gdXNlci1zZWxlY3QoJHNlbGVjdCkge1xuICAkc2VsZWN0OiB1bnF1b3RlKCRzZWxlY3QpO1xuICBAaW5jbHVkZSBleHBlcmltZW50YWwodXNlci1zZWxlY3QsICRzZWxlY3QsXG4gICAgLW1veiwgLXdlYmtpdCwgbm90KC1vKSwgLW1zLCAta2h0bWwsIG9mZmljaWFsXG4gICk7XG59XG5cbi8vIFN0eWxlIHRoZSBodG1sNSBpbnB1dCBwbGFjZWhvbGRlciBpbiBicm93c2VycyB0aGF0IHN1cHBvcnQgaXQuXG4vL1xuLy8gVGhlIHN0eWxlcyBmb3IgdGhlIGlucHV0IHBsYWNlaG9sZGVyIGFyZSBwYXNzZWQgYXMgbWl4aW4gY29udGVudFxuLy8gYW5kIHRoZSBzZWxlY3RvciBjb21lcyBmcm9tIHRoZSBtaXhpbidzIGNvbnRleHQuXG4vL1xuLy8gRm9yIGV4YW1wbGU6XG4vL1xuLy8gICAgICN7ZWxlbWVudHMtb2YtdHlwZSh0ZXh0LWlucHV0KX0ge1xuLy8gICAgICAgQGluY2x1ZGUgaW5wdXQtcGxhY2Vob2xkZXIge1xuLy8gICAgICAgICBjb2xvcjogI2JmYmZiZjtcbi8vICAgICAgICAgZm9udC1zdHlsZTogaXRhbGljO1xuLy8gICAgICAgfVxuLy8gICAgIH1cbi8vXG4vLyBpZiB5b3Ugd2FudCB0byBhcHBseSB0aGUgcGxhY2Vob2xkZXIgc3R5bGVzIHRvIGFsbCBlbGVtZW50cyBzdXBwb3J0aW5nXG4vLyB0aGUgYGlucHV0LXBsYWNlaG9sZGVyYCBwc2V1ZG8gY2xhc3MgKGJld2FyZSBvZiBwZXJmb3JtYW5jZSBpbXBhY3RzKTpcbi8vXG4vLyAgICAgKiB7XG4vLyAgICAgICBAaW5jbHVkZSBpbnB1dC1wbGFjZWhvbGRlciB7XG4vLyAgICAgICAgIGNvbG9yOiAjYmZiZmJmO1xuLy8gICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4vLyAgICAgICB9XG4vLyAgICAgfVxuQG1peGluIGlucHV0LXBsYWNlaG9sZGVyIHtcbiAgJjotbXMtaW5wdXQtcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxuICAmOi1tb3otcGxhY2Vob2xkZXIgeyBAY29udGVudDsgfVxuICAmOjotbW96LXBsYWNlaG9sZGVyIHsgQGNvbnRlbnQ7IH1cbiAgJjo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7IEBjb250ZW50OyB9XG59XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIiwiQGltcG9ydCBcIi4uL3N1cHBvcnRcIjtcbkBpbXBvcnQgXCJzaGFyZWRcIjtcblxuLy8gVGhpcyBpcyB0aGUgdW5kZXJseWluZyBpbXBsZW1lbnRhdGlvbiBmb3IgYWxsIHRoZSBvdGhlciBtaXhpbnMgaW4gdGhpcyBtb2R1bGUuXG4vLyBJdCBpcyB0aGUgb25seSB3YXkgdG8gYWNjZXNzIHByZWZpeCBzdXBwb3J0IGZvciBvbGRlciB2ZXJzaW9ucyBvZiB0aGUgc3BlYy5cbi8vIERldmlhdGVzIGZyb20gY2Fub25pY2FsIENvbXBhc3MgaW1wbGVtZW50YXRpb24gYnkgZHJvcHBpbmcgc3VwcG9ydCBmb3Jcbi8vIG9sZGVyIHZlcnNpb25zIG9mIHRoZSBGbGV4Ym94IHNwZWMuXG4vL1xuLy8gYCRwcm9wZXJ0aWVzYDogbWFwIG9mIHByb3BlcnR5LXZhbHVlIHBhaXJzIHRoYXQgc2hvdWxkIGJlIHByZWZpeGVkXG5AbWl4aW4gZmxleGJveCgkcHJvcGVydGllcykge1xuICBAZWFjaCAkcHJvcCwgJHZhbHVlIGluICRwcm9wZXJ0aWVzIHtcbiAgICBAaWYgJHByb3AgPT0gZGlzcGxheSB7XG4gICAgICBAaW5jbHVkZSBleHBlcmltZW50YWwtdmFsdWUoZGlzcGxheSwgJHZhbHVlLCBub3QoLW1veiksIC13ZWJraXQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90KC1vKSwgbm90KC1tcyksIG5vdCgta2h0bWwpLCBvZmZpY2lhbCk7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAaW5jbHVkZSBleHBlcmltZW50YWwoJHByb3AsICR2YWx1ZSwgbm90KC1tb3opLCAtd2Via2l0LCBub3QoLW8pLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCgtbXMpLCBub3QoLWtodG1sKSwgb2ZmaWNpYWwpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBWYWx1ZXMgZm9yICRkaXNwbGF5IGFyZTogZmxleCAoZGVmYXVsdCksIGlubGluZS1mbGV4XG5AbWl4aW4gZGlzcGxheS1mbGV4KCRkaXNwbGF5OiBmbGV4KSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGRpc3BsYXk6ICRkaXNwbGF5KSk7XG59XG5cbi8vIFZhbHVlczogcm93IHwgcm93LXJldmVyc2UgfCBjb2x1bW4gfCBjb2x1bW4tcmV2ZXJzZVxuQG1peGluIGZsZXgtZGlyZWN0aW9uKCRkaXJlY3Rpb24pIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleC1kaXJlY3Rpb246ICRkaXJlY3Rpb24pKTtcbn1cblxuLy8gVmFsdWVzOiBub3dyYXAgfCB3cmFwIHwgd3JhcC1yZXZlcnNlXG5AbWl4aW4gZmxleC13cmFwKCR3cmFwKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGZsZXgtd3JhcDogJHdyYXApKTtcbn1cblxuLy8gU2hvcnRoYW5kIGZvciBmbGV4LWRpcmVjdGlvbiBhbmQgZmxleC13cmFwLlxuQG1peGluIGZsZXgtZmxvdygkZmxvdykge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LWZsb3c6ICRmbG93KSk7XG59XG5cbi8vIEFjY2VwdHMgYW4gaW50ZWdlclxuQG1peGluIG9yZGVyKCRvcmRlcikge1xuICBAaW5jbHVkZSBmbGV4Ym94KChvcmRlcjogJG9yZGVyKSk7XG59XG5cbi8vIFNob3J0aGFuZCBmb3IgZmxleC1ncm93LCBmbGV4LXNocmluayBhbmQgb3B0aW9uYWxseSBmbGV4LWJhc2lzLlxuLy8gU3BhY2Ugc2VwYXJhdGVkLCBpbiB0aGF0IG9yZGVyLlxuQG1peGluIGZsZXgoJGZsZXgpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleDogJGZsZXgpKTtcbn1cblxuLy8gQWNjZXB0cyBhIG51bWJlci5cbkBtaXhpbiBmbGV4LWdyb3coJGZsZXgtZ3Jvdykge1xuICBAaW5jbHVkZSBmbGV4Ym94KChmbGV4LWdyb3c6ICRmbGV4LWdyb3cpKTtcbn1cblxuLy8gQWNjZXB0cyBhIG51bWJlci5cbkBtaXhpbiBmbGV4LXNocmluaygkZmxleC1zaHJpbmspIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleC1zaHJpbms6ICRmbGV4LXNocmluaykpO1xufVxuXG4vLyBBY2NlcHRzIGFueSBsZWdhbCB2YWx1ZSBmb3IgdGhlIHdpZHRoIHByb3BlcnR5LlxuQG1peGluIGZsZXgtYmFzaXMoJGZsZXgtYmFzaXMpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoZmxleC1iYXNpczogJGZsZXgtYmFzaXMpKTtcbn1cblxuLy8gTGVnYWwgdmFsdWVzOiBmbGV4LXN0YXJ0IHwgZmxleC1lbmQgfCBjZW50ZXIgfCBzcGFjZS1iZXR3ZWVuIHwgc3BhY2UtYXJvdW5kXG5AbWl4aW4ganVzdGlmeS1jb250ZW50KCRqdXN0aWZ5LWNvbnRlbnQpIHtcbiAgQGluY2x1ZGUgZmxleGJveCgoanVzdGlmeS1jb250ZW50OiAkanVzdGlmeS1jb250ZW50KSk7XG59XG5cbi8vIExlZ2FsIHZhbHVlczogZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoXG5AbWl4aW4gYWxpZ24taXRlbXMoJGFsaWduLWl0ZW1zKSB7XG4gIEBpbmNsdWRlIGZsZXhib3goKGFsaWduLWl0ZW1zOiAkYWxpZ24taXRlbXMpKTtcbn1cblxuLy8gTGVnYWwgdmFsdWVzOiBhdXRvIHwgZmxleC1zdGFydCB8IGZsZXgtZW5kIHwgY2VudGVyIHwgYmFzZWxpbmUgfCBzdHJldGNoXG5AbWl4aW4gYWxpZ24tc2VsZigkYWxpZ24tc2VsZikge1xuICBAaW5jbHVkZSBmbGV4Ym94KChhbGlnbi1zZWxmOiAkYWxpZ24tc2VsZikpO1xufVxuXG4vLyBMZWdhbCB2YWx1ZXM6IGZsZXgtc3RhcnQgfCBmbGV4LWVuZCB8IGNlbnRlciB8IHNwYWNlLWJldHdlZW4gfCBzcGFjZS1hcm91bmQgfCBzdHJldGNoXG5AbWl4aW4gYWxpZ24tY29udGVudCgkYWxpZ24tY29udGVudCkge1xuICBAaW5jbHVkZSBmbGV4Ym94KChhbGlnbi1jb250ZW50OiAkYWxpZ24tY29udGVudCkpO1xufVxuIiwiLy8gVXN1YWxseSBjb21wYXNzIGhhY2tzIGFwcGx5IHRvIGJvdGggaWU2ICYgNyAtLSBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHN1cHBvcnQgZm9yIGJvdGguXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiB0cnVlICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTYgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBpZTcgaGFja3NcbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3OiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllICFkZWZhdWx0O1xuXG4vLyBTZXR0aW5nIHRoaXMgdG8gZmFsc2Ugd2lsbCByZXN1bHQgaW4gc21hbGxlciBvdXRwdXQsIGJ1dCBubyBzdXBwb3J0IGZvciBsZWdhY3kgaWU4IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllODogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gQHByaXZhdGVcbi8vIFRoZSB1c2VyIGNhbiBzaW1wbHkgc2V0ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgYW5kIDYsIDcsIGFuZCA4IHdpbGwgYmUgc2V0IGFjY29yZGluZ2x5LFxuLy8gQnV0IGluIGNhc2UgdGhlIHVzZXIgc2V0IGVhY2ggb2YgdGhvc2UgZXhwbGljaXRseSwgd2UgbmVlZCB0byBzeW5jIHRoZSB2YWx1ZSBvZlxuLy8gdGhpcyBjb21iaW5lZCB2YXJpYWJsZS5cbiRsZWdhY3ktc3VwcG9ydC1mb3ItaWU6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU2IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU3IG9yICRsZWdhY3ktc3VwcG9ydC1mb3ItaWU4O1xuXG4vLyBXaGV0aGVyIHRvIG91dHB1dCBsZWdhY3kgc3VwcG9ydCBmb3IgbW96aWxsYS5cbi8vIFVzdWFsbHkgdGhpcyBtZWFucyBoYWNrcyB0byBzdXBwb3J0IEZpcmVmb3ggMy42IG9yIGVhcmxpZXIuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLW1vemlsbGE6IHRydWU7XG5cbi8vIFN1cHBvcnQgZm9yIG1vemlsbGEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1veikuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1vemlsbGEgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXdlYmtpdCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciB3ZWJraXQncyBvcmlnaW5hbCAobm9uLXN0YW5kYXJkKSBncmFkaWVudCBzeW50YXguXG4kc3VwcG9ydC1mb3Itb3JpZ2luYWwtd2Via2l0LWdyYWRpZW50cyA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBvcGVyYSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtbykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW9wZXJhICAgICAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBtaWNyb3NvZnQgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW1zKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0ICAgIDogdHJ1ZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIGtodG1sIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1raHRtbCkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igc3ZnIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMuXG4vLyBTZXR0aW5nIHRoaXMgdG8gdHJ1ZSBtaWdodCBhZGQgc2lnbmlmaWNhbnQgc2l6ZSB0byB5b3VyXG4vLyBnZW5lcmF0ZWQgc3R5bGVzaGVldHMuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXN2ZyAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgQ1NTIFBJRSBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgtcGllKS5cbiRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItcGllICAgICAgICAgIDogZmFsc2UgIWRlZmF1bHQ7XG4iLCJAaW1wb3J0IFwiLi4vc3VwcG9ydFwiO1xuXG4vLyBUaGlzIG1peGluIHByb3ZpZGVzIGJhc2ljIHN1cHBvcnQgZm9yIENTUzMgcHJvcGVydGllcyBhbmRcbi8vIHRoZWlyIGNvcnJlc3BvbmRpbmcgZXhwZXJpbWVudGFsIENTUzIgcHJvcGVydGllcyB3aGVuXG4vLyB0aGUgaW1wbGVtZW50YXRpb25zIGFyZSBpZGVudGljYWwgZXhjZXB0IGZvciB0aGUgcHJvcGVydHlcbi8vIHByZWZpeC5cbkBtaXhpbiBleHBlcmltZW50YWwoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7IC13ZWJraXQtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAgLWtodG1sLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgICAgLW1vei0jeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICAgICAtbXMtI3skcHJvcGVydHl9IDogJHZhbHVlOyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAgICAgIC1vLSN7JHByb3BlcnR5fSA6ICR2YWx1ZTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgICAgICAgICAjeyRwcm9wZXJ0eX0gOiAkdmFsdWU7IH1cbn1cblxuLy8gU2FtZSBhcyBleHBlcmltZW50YWwoKSwgYnV0IGZvciBjYXNlcyB3aGVuIHRoZSBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhbmQgdGhlIHZhbHVlIGlzIHZlbmRvcml6ZWRcbkBtaXhpbiBleHBlcmltZW50YWwtdmFsdWUoJHByb3BlcnR5LCAkdmFsdWUsXG4gICRtb3ogICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSxcbiAgJHdlYmtpdCAgIDogJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQsXG4gICRvICAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3Itb3BlcmEsXG4gICRtcyAgICAgICA6ICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbWljcm9zb2Z0LFxuICAka2h0bWwgICAgOiAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLWtodG1sLFxuICAkb2ZmaWNpYWwgOiB0cnVlXG4pIHtcbiAgQGlmICR3ZWJraXQgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXdlYmtpdCAgICB7ICN7JHByb3BlcnR5fSA6IC13ZWJraXQtI3skdmFsdWV9OyB9XG4gIEBpZiAka2h0bWwgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgLWtodG1sLSN7JHZhbHVlfTsgfVxuICBAaWYgJG1veiAgICAgYW5kICRleHBlcmltZW50YWwtc3VwcG9ydC1mb3ItbW96aWxsYSAgIHsgI3skcHJvcGVydHl9IDogICAgLW1vei0jeyR2YWx1ZX07IH1cbiAgQGlmICRtcyAgICAgIGFuZCAkZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCB7ICN7JHByb3BlcnR5fSA6ICAgICAtbXMtI3skdmFsdWV9OyB9XG4gIEBpZiAkbyAgICAgICBhbmQgJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgeyAjeyRwcm9wZXJ0eX0gOiAgICAgIC1vLSN7JHZhbHVlfTsgfVxuICBAaWYgJG9mZmljaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgI3skcHJvcGVydHl9IDogICAgICAgICAjeyR2YWx1ZX07IH1cbn1cbiIsIi8vIFVzdWFsbHkgY29tcGFzcyBoYWNrcyBhcHBseSB0byBib3RoIGllNiAmIDcgLS0gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSBzdXBwb3J0IGZvciBib3RoLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTogdHJ1ZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU2IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNjogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgaWU3IGhhY2tzXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllNzogJGxlZ2FjeS1zdXBwb3J0LWZvci1pZSAhZGVmYXVsdDtcblxuLy8gU2V0dGluZyB0aGlzIHRvIGZhbHNlIHdpbGwgcmVzdWx0IGluIHNtYWxsZXIgb3V0cHV0LCBidXQgbm8gc3VwcG9ydCBmb3IgbGVnYWN5IGllOCBoYWNrc1xuJGxlZ2FjeS1zdXBwb3J0LWZvci1pZTg6ICRsZWdhY3ktc3VwcG9ydC1mb3ItaWUgIWRlZmF1bHQ7XG5cbi8vIEBwcml2YXRlXG4vLyBUaGUgdXNlciBjYW4gc2ltcGx5IHNldCAkbGVnYWN5LXN1cHBvcnQtZm9yLWllIGFuZCA2LCA3LCBhbmQgOCB3aWxsIGJlIHNldCBhY2NvcmRpbmdseSxcbi8vIEJ1dCBpbiBjYXNlIHRoZSB1c2VyIHNldCBlYWNoIG9mIHRob3NlIGV4cGxpY2l0bHksIHdlIG5lZWQgdG8gc3luYyB0aGUgdmFsdWUgb2Zcbi8vIHRoaXMgY29tYmluZWQgdmFyaWFibGUuXG4kbGVnYWN5LXN1cHBvcnQtZm9yLWllOiAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNiBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllNyBvciAkbGVnYWN5LXN1cHBvcnQtZm9yLWllODtcblxuLy8gV2hldGhlciB0byBvdXRwdXQgbGVnYWN5IHN1cHBvcnQgZm9yIG1vemlsbGEuXG4vLyBVc3VhbGx5IHRoaXMgbWVhbnMgaGFja3MgdG8gc3VwcG9ydCBGaXJlZm94IDMuNiBvciBlYXJsaWVyLlxuJGxlZ2FjeS1zdXBwb3J0LWZvci1tb3ppbGxhOiB0cnVlO1xuXG4vLyBTdXBwb3J0IGZvciBtb3ppbGxhIGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tb3opLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1tb3ppbGxhICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC13ZWJraXQpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci13ZWJraXQgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igd2Via2l0J3Mgb3JpZ2luYWwgKG5vbi1zdGFuZGFyZCkgZ3JhZGllbnQgc3ludGF4LlxuJHN1cHBvcnQtZm9yLW9yaWdpbmFsLXdlYmtpdC1ncmFkaWVudHMgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3Igb3BlcmEgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLW8pLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1vcGVyYSAgICAgICAgOiB0cnVlICFkZWZhdWx0O1xuLy8gU3VwcG9ydCBmb3IgbWljcm9zb2Z0IGluIGV4cGVyaW1lbnRhbCBjc3MzIHByb3BlcnRpZXMgKC1tcykuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLW1pY3Jvc29mdCAgICA6IHRydWUgIWRlZmF1bHQ7XG4vLyBTdXBwb3J0IGZvciBraHRtbCBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzICgta2h0bWwpLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1raHRtbCAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIHN2ZyBpbiBleHBlcmltZW50YWwgY3NzMyBwcm9wZXJ0aWVzLlxuLy8gU2V0dGluZyB0aGlzIHRvIHRydWUgbWlnaHQgYWRkIHNpZ25pZmljYW50IHNpemUgdG8geW91clxuLy8gZ2VuZXJhdGVkIHN0eWxlc2hlZXRzLlxuJGV4cGVyaW1lbnRhbC1zdXBwb3J0LWZvci1zdmcgICAgICAgICAgOiBmYWxzZSAhZGVmYXVsdDtcbi8vIFN1cHBvcnQgZm9yIENTUyBQSUUgaW4gZXhwZXJpbWVudGFsIGNzczMgcHJvcGVydGllcyAoLXBpZSkuXG4kZXhwZXJpbWVudGFsLXN1cHBvcnQtZm9yLXBpZSAgICAgICAgICA6IGZhbHNlICFkZWZhdWx0O1xuIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBRUFBLGlCQUFpQjtBQU9qQixtQkFBbUI7QUE2Qm5CLDhCQUE4QjtBQWtCOUIsaUNBQWlDO0FDdERqQyxBQUFBLFlBQVksQ0FBQztFQUNYLFdBQVcsRUFBRSxJQUFJLEdBQ2xCOztBQUNELEFBQUEsY0FBYyxDQUFDO0VBQ2IsYUFBYSxFQUFFLFVBQVU7RUFDekIsU0FBUyxFQUFFLFVBQVUsR0FDdEI7O0FBQ0QsQUFBZSxjQUFELENBQUMsQ0FBQztBQUNoQixBQUFlLGNBQUQsQ0FBQyxLQUFLLENBQUM7RUFDbkIsS0FBSyxFQUFFLE9BQU8sR0FDZjs7QUFDRCxBQUFlLGNBQUQsQ0FBQyxDQUFDLEFBQUEsTUFBTSxDQUFDO0VBQ3JCLEtBQUssRUFBRSxPQUFPO0VBQ2QsZUFBZSxFQUFFLElBQUksR0FDdEI7O0FBQ0QsQUFBQSxtQkFBbUIsQ0FBQztFQUNsQixRQUFRLEVBQUUsUUFBUTtFQUNsQixLQUFLLEVBQUUsTUFB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 */