@import url(https://fonts.googleapis.com/css?family=DM+Sans:400,500,700&display=swap);
@import url(https://fonts.googleapis.com/css?family=Lato:400,700);
/* width */
::-webkit-scrollbar {
  width: 1px;
}

/* Track */
::-webkit-scrollbar-track {
  background: #f1f1f1;
}

/* Handle */
::-webkit-scrollbar-thumb {
  background: #888;
}

/* Handle on hover */
::-webkit-scrollbar-thumb:hover {
  background: #555;
}
.v-application--wrap {
  flex: 1 1 auto;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  max-width: 100%;
  position: relative;
  background: #e5e5e5;
}
.btn_block {
  height: 30px;
  padding: 0 15px;
  align-items: center;
  border-radius: 29px;
  background: #4c4c4c;
  box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1);
  color: #fff;
  font-size: smaller;
  transition: all 0.5s ease-out;
  text-transform: uppercase;
}
.btn_block:hover {
  color: #4c4c4c;
  background: #fff;
}
.btn_outline_rounded {
  height: 30px;
  padding: 0 15px;
  align-items: center;
  border-radius: 10px;
  border: 1px solid #f9f9f9;
  color: #000;
  font-size: smaller;
}
.btn_outline {
  min-height: 30px;
  padding: 0 15px;
  align-items: center;
  border-radius: 4px;
  background: #fff;
  color: #4c4c4c;
  font-size: smaller;
  border-radius: 29px;
  text-transform: uppercase;
  box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1);
  transition: all 0.5s ease-out;
}
.btn_white_outline {
  min-height: 30px;
  padding: 0 15px;
  align-items: center;
  border-radius: 100px;
  border: 1px solid transparent;
  color: #1d1d1d;
  font-size: smaller;
  transition: all 0.5s ease-out;
}
.title-page {
  color: #88b9ff;
}
.btn_white {
  min-height: 30px;
  padding: 0 15px;
  align-items: center;
  border-radius: 100px;
  border: 1px solid #dadada;
  color: #1d1d1d;
  font-size: smaller;
  transition: all 0.5s ease-out;
}
.btn_outline:hover {
  color: #fff;
  background: #4c4c4c;
}
.vs-table__th__content {
  font-size: larger;
}
.vs-table__td {
  font-size: smaller;
}
.nav-link .router-link-exact-active .router-link-active {
  color: #1d1d1d;
  font-size: small;
  font-weight: bold;
}
.nav-item > .router-link-exact-active {
  color: red;
  background: #1d1d1d1d;
  border-radius: 4px;
}
.nav_sticky {
  position: -webkit-sticky;
  position: sticky;
  top: 0;
}
.custom-sideBar > .list-unstyled > li > a {
  text-decoration: none;
  background: #fff;
  border-radius: 4px;
  border-top-right-radius: 0rem;
  padding: 4px 16px;
  margin-bottom: 4px;
  align-items: center;
  color: #000000a3;
  display: flex;
  width: 200px;
  text-decoration: none;
  font-size: 12px;
}
.button-sign {
  background: #8ab7f8;
  border-color: #8ab7f8;
}
.main {
  margin-left: 241px;
  margin-top: 0%;
  background: #e5e5e5e5;
  min-height: 100vh;
}
.bg-gray + .main {
  padding-top: 60px;
}
.nav {
  width: 100%;
}
.card {
  padding: 30px;
  border-radius: 30px;
}
.v-application ul {
  padding-left: 0px;
}
@media screen and (min-width: 768px) {
  .snip1135 {
    display: flex;
    flex-direction: column;
    text-align: left;
  }
  .name {
    justify-content: start;
  }
  .drop {
    position: relative;
    top: 1rem;
    text-align: left;
  }
  .nav {
    display: flex;
    flex-direction: column;
    justify-content: start;
  }
  .menu {
    display: block;
  }
  .back,
  .form-signin {
    height: 50vh;
  }
}

/* On screens that are 600px or less, set the background color to olive */
@media screen and (min-width: 1024px) {
  .nav {
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
  }
  .bg-gray {
    display: flex;
  }
  .snip1135 {
    display: inline-block;
  }
  .logo {
    position: relative;
    top: 0;
    left: 0;
  }
  .drop {
    position: absolute;
    top: 3rem;
    text-align: left;
  }
  .menu {
    display: none;
  }
  .back,
  .form-signin {
    height: 100vh;
  }
}
.card_user {
  width: 450px;
  height: 250px;
  contain: layout;
  background-repeat: no-repeat;
  background-size: contain;
  margin-left: 5%;
}
/* On screens that are 992px or less, set the background color to blue */


.vuetify-logo[data-v-18cab1ac] {
  height: 180px;
  width: 180px;
  transform: rotateY(560deg);
  animation: turn-data-v-18cab1ac 5.5s ease-out forwards 1s;
}
@keyframes turn-data-v-18cab1ac {
100% {
    transform: rotateY(0deg);
}
}

.vaziva[data-v-1e735518] {
  transform: rotateY(560deg);
  animation: turn-data-v-1e735518 5.5s ease-out forwards infinite;
}
@keyframes turn-data-v-1e735518 {
100% {
    transform: rotateY(0deg);
}
}

.body[data-v-4183fb44] {
	background-color: #f9f9f7;
	height: 100vh;
	perspective: 1000px;
	display: flex;
	align-items: center;
	justify-content: center;
}
.cube[data-v-4183fb44] {
	position: relative;
	width: 100px; height: 100px;
	transform-style: preserve-3d;
	transform: rotatex(-20deg) rotatey(-140deg) translatez(0);
	animation: rotate-data-v-4183fb44 8000ms linear infinite;
}
.cube div[data-v-4183fb44] {
	display:flex;
	align-items: center;
	justify-content: center;
	position: absolute;
	top: 0; left: 0;
	width: 100px; height: 100px;
	opacity: 0.75;
	color: #fff;
	font-size:medium
}
.cube div[data-v-4183fb44]:nth-child(1){
	background: #ffcc80;
	transform: rotatex(90deg) translatey(-100px);
	transform-origin: center top;
	animation: top-data-v-4183fb44 4000ms ease-in-out 8000ms infinite;
}
.cube div[data-v-4183fb44]:nth-child(2){
	background: #ffb74d;	
	transform-origin: center bottom;
	transform: rotatex(-90deg) translatey(100px);
	animation: bottom-data-v-4183fb44 4000ms ease-in-out 8000ms infinite;
}
.cube div[data-v-4183fb44]:nth-child(3){
	background: #ffa726;
	transform-origin: left center;
	transform: rotateY(-90deg) translateX(-100px);
	animation: left-data-v-4183fb44 4000ms ease-in-out 8000ms infinite;
}
.cube div[data-v-4183fb44]:nth-child(4){
	background: #ff9800;
	transform-origin: right center;
	transform: rotateY(90deg) translateX(100px);
	animation: right-data-v-4183fb44 4000ms ease-in-out 8000ms infinite;
}
.cube div[data-v-4183fb44]:nth-child(5){
	background: #fb8c00;
	transform-origin: center center;
	transform: rotateX(0deg);
	animation: front-data-v-4183fb44 4000ms ease-in-out 8000ms infinite;
}
.cube div[data-v-4183fb44]:nth-child(6){
	background: #f57c00;
	transform-origin: center center;
	transform: rotateY(180deg) translatez(100px);
	animation: back-data-v-4183fb44 4000ms ease-in-out 8000ms infinite;
}
@keyframes rotate-data-v-4183fb44 {
0% {transform: rotatex(0) rotatey(0) rotatez(0) translatez(0)
}
100% {transform: rotatex(360deg) rotatey(360deg) rotatez(360deg) translatez(0)}
}
@keyframes top-data-v-4183fb44 {
0%   {transform: rotatex(90deg) translatey(-100px) translatez(0);}
50%  {transform: rotatex(90deg) translatey(-100px) translatez(100px);}
100% {transform: rotatex(90deg) translatey(-100px) translatez(0);}
}
@keyframes bottom-data-v-4183fb44 {
0%   {transform: rotatex(-90deg) translatey(100px) translatez(0);}
50%  {transform: rotatex(-90deg) translatey(100px) translatez(100px);}
100% {transform: rotatex(-90deg) translatey(100px) translatez(0);}
}
@keyframes left-data-v-4183fb44 {
0%   {transform: rotateY(-90deg) translateX(-100px) scaleY(1);}
50%  {transform: rotateY(-90deg) translateX(-100px) scaleY(3);}
100% {transform: rotateY(-90deg) translateX(-100px) scaleY(1);}
}
@keyframes right-data-v-4183fb44 {
0%   {transform: rotateY(90deg) translateX(100px) scaleY(1);}
50%  {transform: rotateY(90deg) translateX(100px) scaleY(3);}
100% {transform: rotateY(90deg) translateX(100px) scaleY(1);}
}
@keyframes front-data-v-4183fb44 {
0%   {transform: rotateX(0deg) scaleY(1);}
50%  {transform: rotateX(0deg) scaleY(3);}
100% {transform: rotateX(0deg) scaleY(1);}
}
@keyframes back-data-v-4183fb44 {
0%   {transform: rotateY(180deg) translatez(100px) scaleY(1);}
50%  {transform: rotateY(180deg) translatez(100px) scaleY(3);}
100% {transform: rotateY(180deg) translatez(100px) scaleY(1);}
}


.card[data-v-1935b886] {
  padding: 0px;
  border-radius: 4px;
}
.input-group-text[data-v-1935b886] {
  border-top-left-radius: 0;
  border-top-right-radius: 0.25rem;
  border-bottom-right-radius: 0.25rem;
  border-bottom-left-radius: 0;
  display: flex;
  align-items: center;
  border-left: 0px;
  padding: 5.5px;
  font-size: 1rem;
  font-weight: 400;
  /* line-height: 1.5; */
  color: #212529;
  text-align: center;
  white-space: nowrap;
  background-color: transparent;
  border: 1px solid #ced4da;
  cursor: pointer;
  /* border-radius: 0.25rem; */
}
.back[data-v-1935b886] {
  display: flex;
  justify-content: center;
  align-items: center;
  text-align: left;
  background: #c8ddfb;
  height: 100;
}
.cont[data-v-1935b886] {
  background-image: url("https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.perfectserve.com%2Fanswer-service%2Flanding-hero-background%2F&psig=AOvVaw3w5ElT-d6X2RLuQsaU-KrQ&ust=1645917397571000&source=images&cd=vfe&ved=0CAgQjRxqFwoTCOiHxLL-m_YCFQAAAAAdAAAAABAK");
}
.form-signin[data-v-1935b886] {
  /*max-width: 400px;*/
  flex: 100%;
  border-right: 0px;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  background: #fff;
}
.form-signin .checkbox[data-v-1935b886] {
  font-weight: 400;
}
.form-signin .form-floating[data-v-1935b886]:focus-within {
  z-index: 2;
}
.form-signin input[type="email"][data-v-1935b886] {
  margin-bottom: -1px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.form-signin input[type="password"][data-v-1935b886],
.form-signin input[type="text"][data-v-1935b886],
.form-signin input[type="tel"][data-v-1935b886] {
  border-top-left-radius: 0;
  border-top-right-radius: 0;
  border-right: 0;
  font-size: 80%;
}
.button-sign[data-v-1935b886] {
  background: #8ab7f8;
  border-color: #8ab7f8;
  color: #fff;
  text-transform: capitalize;
}
a[data-v-1935b886] {
  text-decoration: none;
}
p[data-v-1935b886] {
  margin-bottom: 0px;
  line-height: 15px;
}
input[data-v-1935b886],
input[data-v-1935b886]:focus {
  background: #fff;
  font-size: 80%;
}
input[data-v-1935b886]:focus {
  border: 1px solid #e8f0fe;
}
#basic-addon1[data-v-1935b886] {
  color: transparent;
}
.row[data-v-1935b886] {
  margin: 0px;
}
@media screen and (min-width: 425px) {
.back[data-v-1935b886],
  .form-signin[data-v-1935b886] {
    height: 50vh;
}
}
@media (min-width: 768px) {
.back[data-v-1935b886],
  .form-signin[data-v-1935b886] {
    height: 50vh;
}
.form-group[data-v-1935b886] {
    width: 500px;
}
.v-application--wrap[data-v-1935b886] {
    background: #fff;
}
}
@media screen and (min-width: 1024px) {
.back[data-v-1935b886],
  .form-signin[data-v-1935b886] {
    height: 100vh;
}
.form-group[data-v-1935b886] {
    width: 300px;
}
}


.opt {
  max-width: 400px;
  margin-top:10%;
  margin-bottom:5%;
}


.mx-input-wrapper,
.mx-input {
  width: 237px;
}
@media screen and (min-width: 425px) {
.back,
  .form-signin {
    height: 50vh;
}
}
@media (min-width: 768px) {
.back,
  .form-signin {
    height: 50vh;
}
.v-application--wrap {
    background: #fff;
}
}
@media screen and (min-width: 1024px) {
.back,
  .form-signin {
    height: 100vh;
}
}


@media screen and (min-width: 425px) {
.back,.form-signin {
    height: 50vh;
}
}
@media (min-width: 768px) {
.back,.form-signin {
    height: 50vh;
}
.v-application--wrap {
    background: #fff;
}
}
@media screen and (min-width: 1024px) {
.back,.form-signin {
    height: 100vh;
}
}


.position-relative > li {
  font-size: smaller;
}
.v-application .red,
.v-application .blue,
.v-application .green {
  background-color: pink;
}
.bg-gradient {
  background: #c9d6ff;
  background: -webkit-linear-gradient(to right, #e2e2e2, #c9d6ff);
  background: linear-gradient(to right, #e2e2e2, #c9d6ff);
}
ul li {
  margin-bottom: 1.4rem;
}
.title-option {
  font-size: large;
}
.pricing-divider {
  border-radius: 20px;
  background: #c64545;
  padding: 1em 0 4em;
  position: relative;
}
.blues .pricing-divider {
  background: #86b8fe;
}
.greens .pricing-divider {
  background: #ecb043;
}
.reds b {
  color: #c64545;
}
.blues b {
  color: #88b9ff;
}
.greens b {
  color: #ecb043;
}
.pricing-divider-img {
  position: absolute;
  bottom: -2px;
  left: 0;
  width: 100%;
  height: 80px;
}
.deco-layer {
  -webkit-transition: -webkit-transform 0.5s;
  transition: transform 0.5s;
}
.btn-custom {
  background: #c64545;
  color: #fff;
  border-radius: 20px;
}
.img-float {
  width: 50px;
  position: absolute;
  top: -3.5rem;
  right: 1rem;
}
.princing-item {
  transition: all 150ms ease-out;
}
.princing-item .red,
.princing-item .blue,
.princing-item .green {
  background-color: transparent;
}
.princing-item:hover {
  transform: scale(1.05);
}
.princing-item:hover .deco-layer--1 {
  -webkit-transform: translate3d(15px, 0, 0);
  transform: translate3d(15px, 0, 0);
}
.princing-item:hover .deco-layer--2 {
  -webkit-transform: translate3d(-15px, 0, 0);
  transform: translate3d(-15px, 0, 0);
}


.more,
.more1 {
  display: inline-block;
  margin: 16px;
  border: 3px dashed lightgray;
  width: 200px;
  height: 200px;
  box-sizing: border-box;
  color: lightgray;
  border-radius: 8px;
  font-size: 60px;
  line-height: 200px;
  text-align: center;
  z-index: -1;
}
.any,
.any1 {
  display: none;
}
#dropzone1,
#dropzone {
  background: transparent;
  opacity: 0.5;
}



.confirmation-compte {
  display: flex;
}
.bodys {
  background: transparent;
  /*margin-top: 25%;*/
}
.confirmation-compte li {
  list-style: none;
  height: 40px;
  width: 40px;
  background: #43b69a;
  margin: 0 8px;
  border-radius: 50%;
  box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px;
  animation: start-animation 1.5s linear infinite;
}
.confirmation-compte li:nth-child(1) {
  animation-delay: 0;
}
.confirmation-compte li:nth-child(2) {
  animation-delay: 0.25s;
}
.confirmation-compte li:nth-child(3) {
  animation-delay: 0.5s;
}
.confirmation-compte li:nth-child(4) {
  animation-delay: 0.75s;
}
@keyframes start-animation {
0% {
    transform: translateY(0);
}
50% {
    transform: translateY(0);
}
75% {
    transform: translateY(-30px);
}
100% {
    transform: translate(0px);
}
}


.actifOption {
  color: #bfa805;
}


.v-application .red,
.v-application .blue,
.v-application .green {
  background-color: pink;
}
.bg-gradient {
  background: #c9d6ff;
  background: -webkit-linear-gradient(to right, #e2e2e2, #c9d6ff);
  background: linear-gradient(to right, #e2e2e2, #c9d6ff);
}
ul li {
  margin-bottom: 1.4rem;
}
.deco-layer {
  -webkit-transition: -webkit-transform 0.5s;
  transition: transform 0.5s;
}
.btn-custom {
  background: #c64545;
  color: #fff;
  border-radius: 20px;
}
.img-float {
  width: 50px;
  position: absolute;
  top: -3.5rem;
  right: 1rem;
}
.princing-item {
  transition: all 150ms ease-out;
}
.princing-item .red,
.princing-item .blue,
.princing-item .green {
  background-color: transparent;
}
.princing-item:hover {
  transform: scale(1.05);
}
.princing-item:hover .deco-layer--1 {
  -webkit-transform: translate3d(15px, 0, 0);
  transform: translate3d(15px, 0, 0);
}
.princing-item:hover .deco-layer--2 {
  -webkit-transform: translate3d(-15px, 0, 0);
  transform: translate3d(-15px, 0, 0);
}

.form-group[data-v-13633b68] {
  padding-top: 0px;
}
.w-100[data-v-13633b68] {
  text-transform: uppercase;
}
.back[data-v-13633b68] {
  display: flex;
  justify-content: center;
  align-items: center;
  text-align: left;
  background: #c8ddfb;
}
.v-application ul[data-v-13633b68],
.v-application ol[data-v-13633b68] {
  padding-left: 0px;
}
.form-sign[data-v-13633b68] {
  flex: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  background: #fff;
  height: 100%;
}
.register[data-v-13633b68] {
  background: -webkit-linear-gradient(left, #73709957, #d2e7f06c);
  margin-top: 3%;
  padding: 3%;
}
.register-left[data-v-13633b68] {
  text-align: center;
  color: #fff;
  margin-top: 4%;
}
.button-sign[data-v-13633b68] {
  background: #8ab7f8;
  border-color: #8ab7f8;
  color: #fff;
}
.img-animate[data-v-13633b68] {
  -webkit-animation: mover-data-v-13633b68 2s infinite alternate;
  animation: mover-data-v-13633b68 1s infinite alternate;
}
@-webkit-keyframes mover-data-v-13633b68 {
0% {
    transform: translateY(0);
}
100% {
    transform: translateY(-20px);
}
}
@keyframes mover-data-v-13633b68 {
0% {
    transform: translateY(0);
}
100% {
    transform: translateY(-20px);
}
}
.register-left p[data-v-13633b68] {
  font-weight: lighter;
  padding: 12%;
  margin-top: -9%;
}
.register .register-form[data-v-13633b68] {
  padding: 10%;
  margin-top: 10%;
}
.btnRegister[data-v-13633b68] {
  float: right;
  margin-top: 10%;
  border: none;
  border-radius: 1.5rem;
  padding: 2%;
  background: #0062cc;
  color: #fff;
  font-weight: 600;
  width: 50%;
  cursor: pointer;
}
.register .nav-tabs[data-v-13633b68] {
  margin-top: 3%;
  border: none;
  background: #0062cc;
  border-radius: 1.5rem;
  width: 28%;
  float: right;
}
.register .nav-tabs .nav-link[data-v-13633b68] {
  padding: 2%;
  height: 34px;
  font-weight: 600;
  color: #fff;
  border-top-right-radius: 1.5rem;
  border-bottom-right-radius: 1.5rem;
}
.register .nav-tabs .nav-link[data-v-13633b68]:hover {
  border: none;
}
.register .nav-tabs .nav-link.active[data-v-13633b68] {
  width: 100px;
  color: #0062cc;
  border: 2px solid #0062cc;
  border-top-left-radius: 1.5rem;
  border-bottom-left-radius: 1.5rem;
}
.register-heading[data-v-13633b68] {
  text-align: center;
  margin-top: 8%;
  margin-bottom: -15%;
  color: #495057;
}
.FormStepList[data-v-13633b68] {
  display: flex;
  overflow: hidden;
  margin: auto;
  margin-bottom: 25px;
  width: 550px;
}
.FormStepList-item[data-v-13633b68] {
  flex: 1 1 50px;
  text-align: center;
  list-style: none;
}
.FormStepList-item[data-v-13633b68]:before {
  content: none !important;
  display: none !important;
}
.FormStepIcon[data-v-13633b68] {
  display: inline-block;
  width: 60px;
  text-align: center;
  position: relative;
}
.FormStepIcon.is-active .FormStepIcon-circle[data-v-13633b68] {
  background: #88b9ff;
  border: 4px solid #7eb2fd;
  color: #fff;
}
.FormStepIcon.is-passed[data-v-13633b68]:after {
  background: #88b9ff;
}
.FormStepIcon.is-passed .FormStepIcon-circle[data-v-13633b68] {
  background: #7eb2fd;
  color: #fff;
}
.FormStepIcon[data-v-13633b68]:after {
  content: "";
  background: #d4d4d4;
  position: absolute;
  right: -1000%;
  top: 20px;
  left: 10px;
  height: 4px;
  z-index: 1;
}
.FormStepIcon.FormStepIcon--last[data-v-13633b68]:after {
  background: #fff;
}
.FormStepIcon-circle[data-v-13633b68] {
  background: #d4d4d4;
  color: #a9a9a9;
  font-size: 16px;
  font-weight: bold;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  display: inline-flex;
  justify-content: center;
  align-items: center;
  position: relative;
  z-index: 2;
}
.FormStepIcon-title[data-v-13633b68] {
  display: block;
  font-size: 0.7em;
  margin-top: 0.5em;
}
a[data-v-13633b68] {
  text-decoration: none;
}
p[data-v-13633b68] {
  margin-bottom: 0px;
  line-height: 15px;
}
.row[data-v-13633b68] {
  margin: 0px;
}
@media screen and (min-width: 425px) {
.back[data-v-13633b68], .form-signin[data-v-13633b68] {
    height: 58vh;
}
}
@media (min-width: 768px) {
.back[data-v-13633b68], .form-signin[data-v-13633b68] {
    height: 58vh;
}
.form-group[data-v-13633b68] {
    width: 500px;
}
.v-application--wrap[data-v-13633b68] {
    background: #fff;
}
}
@media screen and (min-width: 1024px) {
.back[data-v-13633b68], .form-signin[data-v-13633b68] {
    height: 100vh;
}
.form-group[data-v-13633b68] {
    width: 300px;
}
}

.sc-chat-window[data-v-08d4c038] {
z-index:9999}
.sc-launcher[data-v-37d9143a], .sc-launcher[data-v-37d9143a]:before {
    z-index: 9999;
    width: 60px;
    height: 60px;
    border-radius: 50%;
    transition: box-shadow .2s ease-in-out;
}


.v-application--wrap[data-v-6b8143ce] {
  background: #e5e5e5;
}
.navi[data-v-6b8143ce] {
  margin-top: 80px;
}
.image[data-v-6b8143ce] {
  top: 50px;
  left: 105px;
}
.list-unstyled li[data-v-6b8143ce] {
  margin-left: 0px;
  margin-bottom: 4px;
}
.section[data-v-6b8143ce] {
  padding-left: 41px;
  margin-top: 20px;
  margin-bottom: 20px;
}
.user_name[data-v-6b8143ce] {
  padding-left: 33px;
  margin-top: 5px;
}
.user_round[data-v-6b8143ce] {
  display: flex;
  align-items: center;
  width: 20px;
  height: 20px;
  font-size: x-small;
  border: 4px;
  border-radius: 50%;
  justify-content: center;
  background-color: #1d1d1d1d;
}
.name[data-v-6b8143ce] {
  margin: 0 8px;
  text-overflow: ellipsis;
  white-space: nowrap;
  overflow: hidden;
}
.custom-sideBar[data-v-6b8143ce] {
  width: 241px;
  height: 100vh;
  background-color: #fff;
  display: flex;
  flex-direction: column;
  padding: 0px;
  padding-top: 20px;
  position: fixed;
  top: 0px;
  left: 0px;
}
.custom-sideBar > .unstyled > li[data-v-6b8143ce] {
  margin-bottom: 4px;
  background: transparent;
  transition: box-shadow 0.15s ease-in-out;
}
.custom-sideBar > .list-unstyled > li > a[data-v-6b8143ce],
.active-router[data-v-6b8143ce] {
  text-decoration: none;
  /*background: #fff;*/
  border-radius: 0px;
  padding: 8px 16px;
  margin-bottom: 4px;
  align-items: center;
  color: #000000a3;
  display: flex;
  padding-left: 15px;
  border-left: 5px solid #fff;
  text-decoration: none;
  font-size: 12px;

  text-transform: uppercase;
}
.custom-sideBar > .list-unstyled > li > a[data-v-6b8143ce]:hover,
.custom-sideBar > .list-unstyled > li > a.router-link-active[data-v-6b8143ce],
.active-router[data-v-6b8143ce]:hover {
  color: black;
  background: linear-gradient(
    90deg,
    rgba(136, 185, 255, 0.41) 0%,
    rgba(136, 185, 255, 0) 44.11%
  );
  font-weight: bold;
  border-left: 5px solid #88b9ff;
}
.custom-sideBar > .list-unstyled > li > a > i[data-v-6b8143ce],
.active-router > i[data-v-6b8143ce] {
  padding-right: 5px;
}
.custom-sideBar
  > .list-unstyled
  > li
  > .router-link-exact-active
  .router-link-active[data-v-6b8143ce],
.router-link-active[data-v-6b8143ce],
a.router-link[data-v-6b8143ce] {
  /* color: rgba(255, 255, 255, 0.55); */
  text-decoration: none;
  color: black;
  background: linear-gradient(
    90deg,
    rgba(136, 185, 255, 0.41) 0%,
    rgba(136, 185, 255, 0) 44.11%
  );
  border-left: 5px solid #88b9ff;
  font-weight: bold;
}
.custom-sideBar > .list-unstyled[data-v-6b8143ce] {
  padding-left: 0px;
}
.bottom_block[data-v-6b8143ce] {
  padding: 15px;
  color: #1d1d1d;
  background: #f9f9f7;
}
li a[data-v-6b8143ce] {
  display: flex;
  padding-left: 30px;
  align-items: center;
}
li a img[data-v-6b8143ce] {
  width: 30%;
  padding-right: 20px;
}


ul li[data-v-6c62ba0d] {
  margin-bottom: 1px;
}
.dropdown[data-v-6c62ba0d] {
  z-index: 9999;
  min-width: 160px;
  position: absolute;
  top: 60px;
  right: 30px;
  background: #fff;
  border-radius: 4px;
  box-shadow: 0px 4px 8px rgb(0 0 0 / 10%);
  font-size: small;
}
.v-application--wrap[data-v-6c62ba0d] {
  background: #e5e5e5;
}
.user_name[data-v-6c62ba0d] {
  border-radius: 84px;
  box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1);
  background: #ffffff;
  padding: 5px 15px;
  padding-left: 5px;
  cursor: pointer;
}
.user_round[data-v-6c62ba0d] {
  background: #88b9ff;
  border-radius: 50%;
  width: 23px;
  text-align: center;
  color: #ffffff;
  font-style: normal;
  font-weight: 800;
  margin-right: 9px;
}
.dropdown li[data-v-6c62ba0d] {
  background: #f5f5f5;
  transition: all 1s ease-out;
  color: black;
  background: #fff;
  padding: 5px 15px;
  margin-bottom: 0px;
}
.dropdown li[data-v-6c62ba0d]:hover {
  background: #f4f7f8;
  color: black;
}
.dropdown li a[data-v-6c62ba0d] {
  text-decoration: none;
  letter-spacing: 0.7px;
  font-size: 13px;
  color: #212529;
}

@charset "UTF-8";
.v-application--wrap[data-v-257ad9dd] {
  background: #e5e5e5;
}
.main-table[data-v-257ad9dd] {
  min-height: 310px;
  background: #fff;
  border-radius: 30px;
  box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1);
}
.vs-table__td[data-v-257ad9dd] {
  font-size: 11px;
}
.vs-table__th[data-v-257ad9dd] {
  width: 200px;
}
#chart[data-v-257ad9dd] {
  max-width: 650px;
  margin: 35px auto;
}
[data-v-257ad9dd]:root {
  --app-container: #f3f6fd;
  --main-color: #1f1c2e;
  --secondary-color: #4a4a4a;
  --link-color: #1f1c2e;
  --link-color-hover: #c3cff4;
  --link-color-active: #fff;
  --link-color-active-bg: #1f1c2e;
  --projects-section: #fff;
  --message-box-hover: #fafcff;
  --message-box-border: #e9ebf0;
  --more-list-bg: #fff;
  --more-list-bg-hover: #f6fbff;
  --more-list-shadow: rgba(209, 209, 209, 0.4);
  --button-bg: #1f1c24;
  --search-area-bg: #fff;
  --star: #1ff1c2e;
  --message-btn: #fff;
}
.dark[data-v-257ad9dd]:root {
  --app-container: #1f1d2b;
  --app-container: #111827;
  --main-color: #fff;
  --secondary-color: rgba(255, 255, 255, 0.8);
  --projects-section: #1f2937;
  --link-color: rgba(255, 255, 255, 0.8);
  --link-color-hover: rgba(195, 207, 244, 0.1);
  --link-color-active-bg: rgba(195, 207, 244, 0.2);
  --button-bg: #1f2937;
  --search-area-bg: #1f2937;
  --message-box-hover: #243244;
  --message-box-border: rgba(255, 255, 255, 0.1);
  --star: #ffd92c;
  --light-font: rgba(255, 255, 255, 0.8);
  --more-list-bg: #2f3142;
  --more-list-bg-hover: rgba(195, 207, 244, 0.1);
  --more-list-shadow: rgba(195, 207, 244, 0.1);
  --message-btn: rgba(195, 207, 244, 0.1);
}
button[data-v-257ad9dd],
a[data-v-257ad9dd] {
  cursor: pointer;
}
.app-container[data-v-257ad9dd] {
  width: 100%;
  display: flex;
  flex-direction: column;
  height: 100%;
  background-color: var(--app-container);
  transition: 0.2s;
  max-width: 1800px;
}
.app-container button[data-v-257ad9dd],
.app-container input[data-v-257ad9dd],
.app-container optgroup[data-v-257ad9dd],
.app-container select[data-v-257ad9dd],
.app-container textarea[data-v-257ad9dd] {
  font-family: "DM Sans", sans-serif;
}
.app-content[data-v-257ad9dd] {
  display: flex;
  height: 100%;
  overflow: hidden;
  padding: 16px 24px 24px 0;
}
.app-header[data-v-257ad9dd] {
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  padding: 16px 24px;
  position: relative;
}
.app-header-left[data-v-257ad9dd], .app-header-right[data-v-257ad9dd] {
  display: flex;
  align-items: center;
}
.app-header-left[data-v-257ad9dd] {
  flex-grow: 1;
}
.app-header-right button[data-v-257ad9dd] {
  margin-left: 10px;
}
.app-icon[data-v-257ad9dd] {
  width: 26px;
  height: 2px;
  border-radius: 4px;
  background-color: var(--main-color);
  position: relative;
}
.app-icon[data-v-257ad9dd]:before, .app-icon[data-v-257ad9dd]:after {
  content: "";
  position: absolute;
  width: 12px;
  height: 2px;
  border-radius: 4px;
  background-color: var(--main-color);
  left: 50%;
  transform: translatex(-50%);
}
.app-icon[data-v-257ad9dd]:before {
  top: -6px;
}
.app-icon[data-v-257ad9dd]:after {
  bottom: -6px;
}
.app-name[data-v-257ad9dd] {
  color: var(--main-color);
  margin: 0;
  font-size: 20px;
  line-height: 24px;
  font-weight: 700;
  margin: 0 32px;
}
.mode-switch[data-v-257ad9dd] {
  background-color: transparent;
  border: none;
  padding: 0;
  color: var(--main-color);
  display: flex;
  justify-content: center;
  align-items: center;
}
.search-wrapper[data-v-257ad9dd] {
  border-radius: 20px;
  background-color: var(--search-area-bg);
  padding-right: 12px;
  height: 40px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  width: 100%;
  max-width: 480px;
  color: var(--light-font);
  box-shadow: 0 2px 6px 0 rgba(136, 148, 171, 0.2), 0 24px 20px -24px rgba(71, 82, 107, 0.1);
  overflow: hidden;
}
.dark .search-wrapper[data-v-257ad9dd] {
  box-shadow: none;
}
.search-input[data-v-257ad9dd] {
  border: none;
  flex: 1;
  outline: none;
  height: 100%;
  padding: 0 20px;
  font-size: 16px;
  background-color: var(--search-area-bg);
  color: var(--main-color);
}
.search-input[data-v-257ad9dd]:placeholder {
  color: var(--main-color);
  opacity: 0.6;
}
.add-btn[data-v-257ad9dd] {
  color: #fff;
  background-color: var(--button-bg);
  padding: 0;
  border: 0;
  border-radius: 50%;
  width: 32px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
}
.notification-btn[data-v-257ad9dd] {
  color: var(--main-color);
  padding: 0;
  border: 0;
  background-color: transparent;
  height: 32px;
  display: flex;
  justify-content: center;
  align-items: center;
}
.profile-btn[data-v-257ad9dd] {
  padding: 0;
  border: 0;
  background-color: transparent;
  display: flex;
  align-items: center;
  padding-left: 12px;
  border-left: 2px solid #ddd;
}
.profile-btn img[data-v-257ad9dd] {
  width: 32px;
  height: 32px;
  object-fit: cover;
  border-radius: 50%;
  margin-right: 4px;
}
.profile-btn span[data-v-257ad9dd] {
  color: var(--main-color);
  font-size: 16px;
  line-height: 24px;
  font-weight: 700;
}
.page-content [data-v-257ad9dd] {
  flex: 1;
  width: 100%;
}
.app-sidebar[data-v-257ad9dd] {
  padding: 40px 16px;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.app-sidebar-link[data-v-257ad9dd] {
  color: var(--main-color);
  color: var(--link-color);
  margin: 16px 0;
  transition: 0.2s;
  border-radius: 50%;
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  display: flex;
  justify-content: center;
  align-items: center;
}
.app-sidebar-link[data-v-257ad9dd]:hover {
  background-color: var(--link-color-hover);
  color: var(--link-color-active);
}
.app-sidebar-link.active[data-v-257ad9dd] {
  background-color: var(--link-color-active-bg);
  color: var(--link-color-active);
}
.projects-section[data-v-257ad9dd] {
  flex: 2;
  background-color: var(--projects-section);
  border-radius: 32px;
  padding: 32px 32px 0 32px;
  overflow: hidden;
  height: 100%;
  display: flex;
  flex-direction: column;
}
.projects-section-line[data-v-257ad9dd] {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-bottom: 32px;
}
.projects-section-header[data-v-257ad9dd] {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 24px;
  color: var(--main-color);
}
.projects-section-header p[data-v-257ad9dd] {
  font-size: 24px;
  line-height: 32px;
  font-weight: 700;
  opacity: 0.9;
  margin: 0;
  color: var(--main-color);
}
.projects-section-header .time[data-v-257ad9dd] {
  font-size: 20px;
}
.projects-status[data-v-257ad9dd] {
  display: flex;
}
.item-status[data-v-257ad9dd] {
  display: flex;
  flex-direction: column;
  margin-right: 16px;
}
.item-status:not(:last-child) .status-type[data-v-257ad9dd]:after {
  content: "";
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translatey(-50%);
  width: 6px;
  height: 6px;
  border-radius: 50%;
  border: 1px solid var(--secondary-color);
}
.status-number[data-v-257ad9dd] {
  font-size: 24px;
  line-height: 32px;
  font-weight: 700;
  color: var(--main-color);
}
.status-type[data-v-257ad9dd] {
  position: relative;
  padding-right: 24px;
  color: var(--secondary-color);
}
.view-actions[data-v-257ad9dd] {
  display: flex;
  align-items: center;
}
.view-btn[data-v-257ad9dd] {
  width: 36px;
  height: 36px;
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 6px;
  border-radius: 4px;
  background-color: transparent;
  border: none;
  color: var(--main-color);
  margin-left: 8px;
  transition: 0.2s;
}
.view-btn.active[data-v-257ad9dd] {
  background-color: var(--link-color-active-bg);
  color: var(--link-color-active);
}
.view-btn[data-v-257ad9dd]:not(.active):hover {
  background-color: var(--link-color-hover);
  color: var(--link-color-active);
}
.messages-section[data-v-257ad9dd] {
  flex-shrink: 0;
  padding-bottom: 32px;
  background-color: var(--projects-section);
  margin-left: 24px;
  flex: 1;
  width: 100%;
  border-radius: 30px;
  position: relative;
  overflow: auto;
  transition: all 300ms cubic-bezier(0.19, 1, 0.56, 1);
}
.messages-section .messages-close[data-v-257ad9dd] {
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 3;
  border: none;
  background-color: transparent;
  color: var(--main-color);
  display: none;
}
.messages-section.show[data-v-257ad9dd] {
  transform: translateX(0);
  opacity: 1;
  margin-left: 0;
}
.messages-section .projects-section-header[data-v-257ad9dd] {
  position: sticky;
  top: 0;
  z-index: 1;
  padding: 32px 24px 0 24px;
  background-color: var(--projects-section);
}
.message-box[data-v-257ad9dd] {
  border-top: 1px solid var(--message-box-border);
  padding: 16px;
  display: flex;
  align-items: flex-start;
  width: 100%;
}
.message-box[data-v-257ad9dd]:hover {
  background-color: var(--message-box-hover);
  border-top-color: var(--link-color-hover);
}
.message-box:hover + .message-box[data-v-257ad9dd] {
  border-top-color: var(--link-color-hover);
}
.message-box img[data-v-257ad9dd] {
  border-radius: 50%;
  object-fit: cover;
  width: 40px;
  height: 40px;
}
.message-header[data-v-257ad9dd] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  width: 100%;
}
.message-header .name[data-v-257ad9dd] {
  font-size: 16px;
  line-height: 24px;
  font-weight: 700;
  color: var(--main-color);
  margin: 0;
}
.message-content[data-v-257ad9dd] {
  padding-left: 16px;
  width: 100%;
}
.star-checkbox input[data-v-257ad9dd] {
  opacity: 0;
  position: absolute;
  width: 0;
  height: 0;
}
.star-checkbox label[data-v-257ad9dd] {
  width: 24px;
  height: 24px;
  display: flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
}
.dark .star-checkbox[data-v-257ad9dd] {
  color: var(--secondary-color);
}
.dark .star-checkbox input:checked + label[data-v-257ad9dd] {
  color: var(--star);
}
.star-checkbox input:checked + label svg[data-v-257ad9dd] {
  fill: var(--star);
  transition: 0.2s;
}
.message-line[data-v-257ad9dd] {
  font-size: 14px;
  line-height: 20px;
  margin: 8px 0;
  color: var(--secondary-color);
  opacity: 0.7;
}
.message-line.time[data-v-257ad9dd] {
  text-align: right;
  margin-bottom: 0;
}
.project-boxes[data-v-257ad9dd] {
  margin: 0 -8px;
  overflow-y: auto;
}
.project-boxes.jsGridView[data-v-257ad9dd] {
  display: flex;
  flex-wrap: wrap;
}
.project-boxes.jsGridView .project-box-wrapper[data-v-257ad9dd] {
  width: 33.3%;
}
.project-boxes.jsListView .project-box[data-v-257ad9dd] {
  display: flex;
  border-radius: 10px;
  position: relative;
}
.project-boxes.jsListView .project-box > *[data-v-257ad9dd] {
  margin-right: 24px;
}
.project-boxes.jsListView .more-wrapper[data-v-257ad9dd] {
  position: absolute;
  right: 16px;
  top: 16px;
}
.project-boxes.jsListView .project-box-content-header[data-v-257ad9dd] {
  order: 1;
  max-width: 120px;
}
.project-boxes.jsListView .project-box-header[data-v-257ad9dd] {
  order: 2;
}
.project-boxes.jsListView .project-box-footer[data-v-257ad9dd] {
  order: 3;
  padding-top: 0;
  flex-direction: column;
  justify-content: flex-start;
}
.project-boxes.jsListView .project-box-footer[data-v-257ad9dd]:after {
  display: none;
}
.project-boxes.jsListView .participants[data-v-257ad9dd] {
  margin-bottom: 8px;
}
.project-boxes.jsListView .project-box-content-header p[data-v-257ad9dd] {
  text-align: left;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}
.project-boxes.jsListView .project-box-header > span[data-v-257ad9dd] {
  position: absolute;
  bottom: 16px;
  left: 16px;
  font-size: 12px;
}
.project-boxes.jsListView .box-progress-wrapper[data-v-257ad9dd] {
  order: 3;
  flex: 1;
}
.project-box[data-v-257ad9dd] {
  --main-color-card: #dbf6fd;
  border-radius: 30px;
  padding: 16px;
  background-color: var(--main-color-card);
}
.project-box-header[data-v-257ad9dd] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 16px;
  color: var(--main-color);
}
.project-box-header span[data-v-257ad9dd] {
  color: #4a4a4a;
  opacity: 0.7;
  font-size: 14px;
  line-height: 16px;
}
.project-box-content-header[data-v-257ad9dd] {
  text-align: center;
  margin-bottom: 16px;
}
.project-box-content-header p[data-v-257ad9dd] {
  margin: 0;
}
.project-box-wrapper[data-v-257ad9dd] {
  padding: 8px;
  transition: 0.2s;
}
.project-btn-more[data-v-257ad9dd] {
  padding: 0;
  height: 14px;
  width: 24px;
  height: 24px;
  position: relative;
  background-color: transparent;
  border: none;
  flex-shrink: 0;
  /*&:after, &:before {
    content: '';
    position: absolute;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background-color: var(--main-color);
    opacity: .8;
    left: 50%;
    transform: translatex(-50%);
  }

  &:before { top: 0;}
  &:after { bottom: 0; }*/
}
.more-wrapper[data-v-257ad9dd] {
  position: relative;
}
.box-content-header[data-v-257ad9dd] {
  font-size: 16px;
  line-height: 24px;
  font-weight: 700;
  opacity: 0.7;
}
.box-content-subheader[data-v-257ad9dd] {
  font-size: 14px;
  line-height: 24px;
  opacity: 0.7;
}
.box-progress[data-v-257ad9dd] {
  display: block;
  height: 4px;
  border-radius: 6px;
}
.box-progress-bar[data-v-257ad9dd] {
  width: 100%;
  height: 4px;
  border-radius: 6px;
  overflow: hidden;
  background-color: #fff;
  margin: 8px 0;
}
.box-progress-header[data-v-257ad9dd] {
  font-size: 14px;
  font-weight: 700;
  line-height: 16px;
  margin: 0;
}
.box-progress-percentage[data-v-257ad9dd] {
  text-align: right;
  margin: 0;
  font-size: 14px;
  font-weight: 700;
  line-height: 16px;
}
.project-box-footer[data-v-257ad9dd] {
  display: flex;
  justify-content: space-between;
  padding-top: 16px;
  position: relative;
}
.project-box-footer[data-v-257ad9dd]:after {
  content: "";
  position: absolute;
  background-color: rgba(255, 255, 255, 0.6);
  width: calc(100% + 32px);
  top: 0;
  left: -16px;
  height: 1px;
}
.participants[data-v-257ad9dd] {
  display: flex;
  align-items: center;
}
.participants img[data-v-257ad9dd] {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  overflow: hidden;
  object-fit: cover;
}
.participants img[data-v-257ad9dd]:not(:first-child) {
  margin-left: -8px;
}
.add-participant[data-v-257ad9dd] {
  width: 20px;
  height: 20px;
  border-radius: 50%;
  border: none;
  background-color: rgba(255, 255, 255, 0.6);
  margin-left: 6px;
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 0;
}
.days-left[data-v-257ad9dd] {
  background-color: rgba(255, 255, 255, 0.6);
  font-size: 12px;
  border-radius: 20px;
  flex-shrink: 0;
  padding: 6px 16px;
  font-weight: 700;
}
.mode-switch.active .moon[data-v-257ad9dd] {
  fill: var(--main-color);
}
.messages-btn[data-v-257ad9dd] {
  border-radius: 4px 0 0 4px;
  position: absolute;
  right: 0;
  top: 58px;
  background-color: var(--message-btn);
  border: none;
  color: var(--main-color);
  display: flex;
  justify-content: center;
  align-items: center;
  padding: 4px;
  display: none;
}
@media screen and (max-width: 980px) {
.project-boxes.jsGridView .project-box-wrapper[data-v-257ad9dd] {
    width: 50%;
}
.status-number[data-v-257ad9dd],
.status-type[data-v-257ad9dd] {
    font-size: 14px;
}
.status-type[data-v-257ad9dd]:after {
    width: 4px;
    height: 4px;
}
.item-status[data-v-257ad9dd] {
    margin-right: 0;
}
}
@media screen and (max-width: 880px) {
.messages-section[data-v-257ad9dd] {
    transform: translateX(100%);
    position: absolute;
    opacity: 0;
    top: 0;
    z-index: 2;
    height: 100%;
    width: 100%;
}
.messages-section .messages-close[data-v-257ad9dd] {
    display: block;
}
.messages-btn[data-v-257ad9dd] {
    display: flex;
}
}
@media screen and (max-width: 720px) {
.app-name[data-v-257ad9dd],
.profile-btn span[data-v-257ad9dd] {
    display: none;
}
.add-btn[data-v-257ad9dd],
.notification-btn[data-v-257ad9dd],
.mode-switch[data-v-257ad9dd] {
    width: 20px;
    height: 20px;
}
.add-btn svg[data-v-257ad9dd],
.notification-btn svg[data-v-257ad9dd],
.mode-switch svg[data-v-257ad9dd] {
    width: 16px;
    height: 16px;
}
.app-header-right button[data-v-257ad9dd] {
    margin-left: 4px;
}
}
@media screen and (max-width: 520px) {
.projects-section[data-v-257ad9dd] {
    overflow: auto;
}
.project-boxes[data-v-257ad9dd] {
    overflow-y: visible;
}
.app-sidebar[data-v-257ad9dd],
.app-icon[data-v-257ad9dd] {
    display: none;
}
.app-content[data-v-257ad9dd] {
    padding: 16px 12px 24px 12px;
}
.status-number[data-v-257ad9dd],
.status-type[data-v-257ad9dd] {
    font-size: 10px;
}
.view-btn[data-v-257ad9dd] {
    width: 24px;
    height: 24px;
}
.app-header[data-v-257ad9dd] {
    padding: 16px 10px;
}
.search-input[data-v-257ad9dd] {
    max-width: 120px;
}
.project-boxes.jsGridView .project-box-wrapper[data-v-257ad9dd] {
    width: 100%;
}
.projects-section[data-v-257ad9dd] {
    padding: 24px 16px 0 16px;
}
.profile-btn img[data-v-257ad9dd] {
    width: 24px;
    height: 24px;
}
.app-header[data-v-257ad9dd] {
    padding: 10px;
}
.projects-section-header p[data-v-257ad9dd],
.projects-section-header .time[data-v-257ad9dd] {
    font-size: 18px;
}
.status-type[data-v-257ad9dd] {
    padding-right: 4px;
}
.status-type[data-v-257ad9dd]:after {
    display: none;
}
.search-input[data-v-257ad9dd] {
    font-size: 14px;
}
.messages-btn[data-v-257ad9dd] {
    top: 48px;
}
.box-content-header[data-v-257ad9dd] {
    font-size: 12px;
    line-height: 16px;
}
.box-content-subheader[data-v-257ad9dd] {
    font-size: 12px;
    line-height: 16px;
}
.project-boxes.jsListView .project-box-header > span[data-v-257ad9dd] {
    font-size: 10px;
}
.box-progress-header[data-v-257ad9dd] {
    font-size: 12px;
}
.box-progress-percentage[data-v-257ad9dd] {
    font-size: 10px;
}
.days-left[data-v-257ad9dd] {
    font-size: 8px;
    padding: 6px 6px;
    text-align: center;
}
.project-boxes.jsListView .project-box > *[data-v-257ad9dd] {
    margin-right: 10px;
}
.project-boxes.jsListView .more-wrapper[data-v-257ad9dd] {
    right: 2px;
    top: 10px;
}
}

.animate__animated.animate__backInDown[data-v-b741c996] {
  --animate-duration: 0.5s;
}
.bg-gray[data-v-b741c996] {
  position: fixed;
  top: 0;
  width: 100%;
  z-index: 999;
}
.bg_white[data-v-b741c996] {
  background: #fff;
}
.bg_color[data-v-b741c996] {
  background: #f5f5f5;
}
.user_name[data-v-b741c996] {
  cursor: pointer;
}
.name[data-v-b741c996]:hover {
  color: black;
}
.drop[data-v-b741c996] {
  z-index: 9999;
  width: 200px;
  right: 0;
  background: #fff;
  border-radius: 8px;
  box-shadow: 1px 4px 2px 1px #f5f5f5;
}
.drop li[data-v-b741c996] {
  background: #f5f5f5;
  transition: all 1s ease-out;
  color: black;
  background: #fff;
  padding: 5px 15px;
  margin-bottom: 0px;
}
.drop li[data-v-b741c996]:hover {
  background: #f4f7f8;
  color: black;
}
.drop li a[data-v-b741c996] {
  text-decoration: none;
  letter-spacing: 0.7px;
  font-size: 13px;
  color: #212529;
}
.snip1135[data-v-b741c996] {
  font-family: "Raleway", Arial, sans-serif;
  /*text-align: center;*/
  text-transform: capitalize;
  font-weight: 500;
}
.snip1135 *[data-v-b741c996] {
  box-sizing: border-box;
}
.snip1135 li[data-v-b741c996] {
  display: inline-block;
  list-style: outside none none;
  margin: 0 0.75em;
  padding: 0;
}
.snip1135 a[data-v-b741c996] {
  padding: 0.5em 0;
  color: #212529;
  position: relative;
  letter-spacing: 0.5px;
  text-decoration: none;
}
.snip1135 .router-link-exact-active[data-v-b741c996]{
  font-style:bold
}
/**.snip1135 a:before,
.snip1135 a:after {
  position: absolute;
  -webkit-transition: all 0.35s ease;
  transition: all 0.35s ease;
}
.snip1135 a:before {
  bottom: 0;
  height: 3px;
  width: 0%;
  content: "";
  background-color: #2980b9;
}
.snip1135 a:after {
  left: 0;
  top: 0;
  padding: 0.5em 0;
  position: absolute;
  content: attr(data-hover);
  color: #ffffff;
  white-space: nowrap;
  max-width: 0%;
  overflow: hidden;
}
.snip1135 a:hover:before,
.snip1135 a:active:before,
.snip1135 .router-link-exact-active:before,
.snip1135 .current a:before {
  opacity: 1;
  width: 100%;
}
.snip1135 a:hover:after,
.snip1135 .current a:after {
  max-width: 10%;
}
*/
/* Demo purposes only */
.navbar-brand[data-v-b741c996] {
  padding-top: 0;
  padding-bottom: 0;
  margin-right: 1rem;
  font-size: 1.25rem;
  text-decoration: none;
  white-space: nowrap;
}
.vs-sidebar__item[data-v-b741c996]:after {
  content: "";
  position: absolute;
  left: -4px;
  top: 0px;
  width: 0;
  height: 100%;
  background: rgba(var(--vs-color), 1);
  border-radius: 0px 20px 20px 0px;
  -webkit-transform: translate(-6px);
  transform: translate(-6px);
  -webkit-transition: all 0.25s ease;
  transition: all 0.25s ease;
  /* z-index: 60; */
}
.nav-link .router-link-exact-active .router-link-active[data-v-b741c996] {
  color: red;
}
.nav-link .router-link-exact-active .router-link-active[data-v-b741c996],
.navbar-dark .navbar-nav .nav-link[data-v-b741c996] {
  /* color: rgba(255, 255, 255, 0.55); */
  color: #1976d2;
}
.navigate-main[data-v-b741c996] {
  width: 100%;
  border-top: 1px solid gray;
  border-bottom: 1px solid gray;
  height: 30px;
  margin-left: 30px;
  font-size: 75%;
}
.navigate[data-v-b741c996]{
  width:100%
}
/* Responsive */
@media screen and (max-width: 600px) {
.topnav a[data-v-b741c996]:not(:first-child),
  .dropdown .dropbtn[data-v-b741c996] {
    display: none;
}
.topnav a.icon[data-v-b741c996] {
    float: right;
    display: block;
}
}
@media screen and (max-width: 600px) {
.drop[data-v-b741c996] {
    display: none;
}
.bg-gray[data-v-b741c996] {
    display: none;
}
.topnav.responsive a[data-v-b741c996] {
    float: none;
    display: block;
    text-align: left;
}
.topnav.responsive .dropdown[data-v-b741c996] {
    float: none;
}
.topnav.responsive .dropdown-content[data-v-b741c996] {
    position: relative;
}
.topnav.responsive .dropdown .dropbtn[data-v-b741c996] {
    display: block;
    width: 100%;
    text-align: left;
}
}


.container[data-v-8c96150a]{
  background:transparent;
}
.no-results[data-v-8c96150a] {
  text-align: center;
  padding: 24px 0;
}
.datagrid .empty-row td[data-v-8c96150a]:first-child {
  width: 20%;
}
.datagrid .empty-row td[data-v-8c96150a]:nth-child(3) {
  width: 10%;
}
.datagrid .empty-row td[data-v-8c96150a]:nth-child(4) {
  width: 25%;
}
.datagrid .empty-row td[data-v-8c96150a]:nth-child(5) {
  width: 10%;
}
.datagrid .empty-row td[data-v-8c96150a]:nth-child(6) {
  width: 30%;
}
.datagrid .empty-row td span[data-v-8c96150a] {
  background: #dee2e6;
  border-radius: 8px;
  display: block;
  height: 10px;
  margin: 13px 0;
  width: 100%;
}
.datagrid .empty-row td[data-v-8c96150a] {
  padding: 0 8px;
}
.datagrid td[data-v-8c96150a],
.datagrid th[data-v-8c96150a] {
  border: none;
  vertical-align: middle;
}
.datagrid td[data-v-8c96150a] {
  box-shadow: inset 0 1px 0 #dee2e6;
  line-height: 20px;
  padding: 8px;
}
table.datagrid[data-v-8c96150a] {
  border-collapse: collapse;
  border-spacing: 0;
  color: #dee2e6;
  margin-bottom: 0;
  width: 100%;
}
.datagrid tbody[data-v-8c96150a] {
  box-shadow: 0 1px 0 #dee2e6;
}
tbody[data-v-8c96150a],
td[data-v-8c96150a],
tfoot[data-v-8c96150a],
th[data-v-8c96150a],
thead[data-v-8c96150a],
tr[data-v-8c96150a] {
  border: 0 solid;
  border-color: inherit;
}
.table > tbody[data-v-8c96150a] {
  vertical-align: inherit;
}
.table[data-v-8c96150a] {
  --bs-table-bg: transparent;
  --bs-table-accent-bg: transparent;
  --bs-table-striped-color: #4c5367;
  --bs-table-striped-bg: rgba(0, 0, 0, 0.05);
  --bs-table-active-color: #4c5367;
  --bs-table-active-bg: rgba(0, 0, 0, 0.1);
  --bs-table-hover-color: #4c5367;
  --bs-table-hover-bg: rgba(0, 0, 0, 0.075);
  border-color: #dee2e6;
  color: #4c5367;
  margin-bottom: 1rem;
  vertical-align: top;
  width: 100%;
}


.vs-table__thead .vs-table__th {
  background:#000;
  color:#fff
    /* background: rgba(var(--vs-gray-2), 1); */
}



.vs-input {
  border: 2px solid transparent;
  padding: 7px 13px;
  border-radius: inherit;
  -webkit-transition: all 0.25s ease;
  transition: all 0.25s ease;
  padding-left: 10px;
  width: 100%;
}


.v-application--wrap[data-v-b2111b42] {
  background: #e5e5e5;
}
.list-transaction[data-v-b2111b42] {
  min-height: 391px;
  border-radius: 30px;
  background: #fff;
}
.offres[data-v-b2111b42] {
  border-radius: 29px;
  background: transparent;
  text-transform: uppercase;
}
.offres2[data-v-b2111b42] {
  border-radius: 29px;
  min-height: 200px;
  background: #fff;
}
.btn_white_outline[data-v-b2111b42] {
  text-transform: uppercase;
}
.input-group-text[data-v-b2111b42] {
  background: #fff;
  border-top-left-radius: 29px;
  border: 1px solid #fff;
  border-top-right-radius: 0rem;
  border-bottom-left-radius: 29px;
  border-bottom-right-radius: 0rem;
  border-right: none;
  box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1);
}
input[type="search"][data-v-b2111b42] {
  border-left: none;
  border-radius: 0rem 29px 29px 0rem;
  border: 1px solid #fff;
  background: #fff;
  box-shadow: 6px 4px 8px rgba(0, 0, 0, 0.1);
}
.cord[data-v-b2111b42] {
  height: 40px;
  padding: 0 16px;
  align-items: center;
  border-radius: 4px;
  background: #1d1d1d;
  color: #fff;
}
.exporte[data-v-b2111b42] {
  height: 40px;
  padding: 0 16px;
  align-items: center;
  border-radius: 4px;
  background: #dadada;
  color: #1d1d1d;
}
.btn_white[data-v-b2111b42] {
  background: #fff;
  color: #000;
  border-radius: 29px;
  box-shadow: 0px 4px 8px rgba(0, 0, 0, 0.1);
}


.date-card[data-v-109010bf] {
  justify-content: center;
  margin-left: -15%;
  margin-top: 0%;
}
.number[data-v-109010bf] {
  padding-top: 130px;
  padding-left: 12%;
  letter-spacing: 6px;
  font-size: 23px;
  position:relative
}
.date-card div[data-v-109010bf] {
  line-height: 9px;
  margin: 0px;
  font-size: 8px;
  color: #fff;
  margin-left: 25%;
}
p[data-v-109010bf] {
  margin-bottom: 0px;
}
.idCrad[data-v-109010bf] {
  margin-left: 37%;
  margin-top: 3%;
  letter-spacing: 4px;
}
@media screen and (min-width: 768px) {
}
@media screen and (min-width: 1024px) {
}


.v-application--wrap[data-v-6e04aea2] {
background:#e5e5e5
}
.main-table[data-v-6e04aea2]{
  min-height:310px;
  background:#fff;
  border-radius:30px;
  box-shadow:0px 4px 8px rgba(0,0,0,0.1)
}


.card[data-v-d8b9f57a] {
  padding: 0px;
  border-radius: 4px;
}
.input-group-text[data-v-d8b9f57a] {
  border-top-left-radius: 0;
  border-top-right-radius: 0.25rem;
  border-bottom-right-radius: 0.25rem;
  border-bottom-left-radius: 0;
  display: flex;
  align-items: center;
  border-left: 0px;
  padding: 5.5px;
  font-size: 1rem;
  font-weight: 400;
  /* line-height: 1.5; */
  color: #212529;
  text-align: center;
  white-space: nowrap;
  background-color: transparent;
  border: 1px solid #ced4da;
  cursor: pointer;
  /* border-radius: 0.25rem; */
}
.back[data-v-d8b9f57a] {
  display: flex;
  justify-content: center;
  align-items: center;
  text-align: left;
  background: #c8ddfb;
  height: 100;
}
.cont[data-v-d8b9f57a] {
  background-image: url("https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.perfectserve.com%2Fanswer-service%2Flanding-hero-background%2F&psig=AOvVaw3w5ElT-d6X2RLuQsaU-KrQ&ust=1645917397571000&source=images&cd=vfe&ved=0CAgQjRxqFwoTCOiHxLL-m_YCFQAAAAAdAAAAABAK");
}
.form-signin[data-v-d8b9f57a] {
  /*max-width: 400px;*/
  flex: 100%;
  border-right: 0px;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  background: #fff;
}
.form-signin .checkbox[data-v-d8b9f57a] {
  font-weight: 400;
}
.form-signin .form-floating[data-v-d8b9f57a]:focus-within {
  z-index: 2;
}
.form-signin input[type="email"][data-v-d8b9f57a] {
  margin-bottom: -1px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.form-signin input[type="password"][data-v-d8b9f57a],
.form-signin input[type="text"][data-v-d8b9f57a],
.form-signin input[type="tel"][data-v-d8b9f57a] {
  font-size: 80%;
}
.button-sign[data-v-d8b9f57a] {
  background: #8ab7f8;
  border-color: #8ab7f8;
  color: #fff;
  text-transform: capitalize;
}
a[data-v-d8b9f57a] {
  text-decoration: none;
}
p[data-v-d8b9f57a] {
  margin-bottom: 0px;
  line-height: 15px;
}
input[data-v-d8b9f57a],
input[data-v-d8b9f57a]:focus {
  background: #fff;
  font-size: 80%;
}
input[data-v-d8b9f57a]:focus {
  border: 1px solid #e8f0fe;
}
#basic-addon1[data-v-d8b9f57a] {
  color: transparent;
}


.last_block[data-v-02309552] {
  padding: 15px;
  padding-left: 56px;
  padding-right: 56px;
}
.card[data-v-02309552] {
  padding: 0px;
  border-radius: 4px;
}
.input-group-text[data-v-02309552] {
  border-top-left-radius: 0;
  border-top-right-radius: 0.25rem;
  border-bottom-right-radius: 0.25rem;
  border-bottom-left-radius: 0;
  display: flex;
  align-items: center;
  border-left: 0px;
  padding: 5.5px;
  font-size: 1rem;
  font-weight: 400;
  /* line-height: 1.5; */
  color: #212529;
  text-align: center;
  white-space: nowrap;
  background-color: transparent;
  border: 1px solid #ced4da;
  cursor: pointer;
  /* border-radius: 0.25rem; */
}
.back[data-v-02309552] {
  display: flex;
  justify-content: center;
  align-items: center;
  text-align: left;
  background: #c8ddfb;
  height: 100;
}
.cont[data-v-02309552] {
  background-image: url("https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.perfectserve.com%2Fanswer-service%2Flanding-hero-background%2F&psig=AOvVaw3w5ElT-d6X2RLuQsaU-KrQ&ust=1645917397571000&source=images&cd=vfe&ved=0CAgQjRxqFwoTCOiHxLL-m_YCFQAAAAAdAAAAABAK");
}
.form-signin[data-v-02309552] {
  /*max-width: 400px;*/
  flex: 100%;
  border-right: 0px;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  background: #fff;
}
.form-signin .checkbox[data-v-02309552] {
  font-weight: 400;
}
.form-signin .form-floating[data-v-02309552]:focus-within {
  z-index: 2;
}
.form-signin input[type="email"][data-v-02309552] {
  margin-bottom: -1px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.form-signin input[type="password"][data-v-02309552],
.form-signin input[type="text"][data-v-02309552],
.form-signin input[type="tel"][data-v-02309552] {
  border-top-left-radius: 0;
  border-top-right-radius: 0;
  border-right: 0;
  font-size: 80%;
}
.button-sign[data-v-02309552] {
  background: #8ab7f8;
  border-color: #8ab7f8;
  color: #fff;
  text-transform: capitalize;
}
a[data-v-02309552] {
  text-decoration: none;
}
p[data-v-02309552] {
  margin-bottom: 0px;
  line-height: 15px;
}
input[data-v-02309552],
input[data-v-02309552]:focus {
  background: #fff;
  font-size: 80%;
}
input[data-v-02309552]:focus {
  border: 1px solid #e8f0fe;
}
#basic-addon1[data-v-02309552] {
  color: transparent;
}
.row[data-v-02309552] {
  margin: 0px;
}
@media screen and (min-width: 425px) {
.back[data-v-02309552],
  .form-signin[data-v-02309552] {
    height: 50vh;
}
}
@media (min-width: 768px) {
.back[data-v-02309552],
  .form-signin[data-v-02309552] {
    height: 50vh;
}
.v-application--wrap[data-v-02309552] {
    background: #fff;
}
}
@media screen and (min-width: 1024px) {
.back[data-v-02309552],
  .form-signin[data-v-02309552] {
    height: 100vh;
}
}


.v-application--wrap[data-v-5763376c] {
background:#e5E5E5
}

.v-application--wrap[data-v-0f4cc5a3] {
  background: #e5e5e5;
}


.last_block[data-v-b30b71a2] {
  padding: 15px;
  padding-left: 56px;
  padding-right: 56px;
}
.card[data-v-b30b71a2] {
  padding: 0px;
  border-radius: 4px;
}
.input-group-text[data-v-b30b71a2] {
  border-top-left-radius: 0;
  border-top-right-radius: 0.25rem;
  border-bottom-right-radius: 0.25rem;
  border-bottom-left-radius: 0;
  display: flex;
  align-items: center;
  border-left: 0px;
  padding: 5.5px;
  font-size: 1rem;
  font-weight: 400;
  /* line-height: 1.5; */
  color: #212529;
  text-align: center;
  white-space: nowrap;
  background-color: transparent;
  border: 1px solid #ced4da;
  cursor: pointer;
  /* border-radius: 0.25rem; */
}
.back[data-v-b30b71a2] {
  display: flex;
  justify-content: center;
  align-items: center;
  text-align: left;
  background: #c8ddfb;
}
.cont[data-v-b30b71a2] {
  background-image: url("https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.perfectserve.com%2Fanswer-service%2Flanding-hero-background%2F&psig=AOvVaw3w5ElT-d6X2RLuQsaU-KrQ&ust=1645917397571000&source=images&cd=vfe&ved=0CAgQjRxqFwoTCOiHxLL-m_YCFQAAAAAdAAAAABAK");
}
.form-signin[data-v-b30b71a2] {
  /*max-width: 400px;*/
  flex: 100%;
  border-right: 0px;
  display: flex;
  justify-content: center;
  align-items: center;
  background: #fff;
}
.form-signin .checkbox[data-v-b30b71a2] {
  font-weight: 400;
}
.form-signin .form-floating[data-v-b30b71a2]:focus-within {
  z-index: 2;
}
.form-signin input[type="email"][data-v-b30b71a2] {
  margin-bottom: -1px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.form-signin input[type="password"][data-v-b30b71a2],
.form-signin input[type="text"][data-v-b30b71a2],
.form-signin input[type="tel"][data-v-b30b71a2] {
  border-top-left-radius: 0;
  border-top-right-radius: 0;
  border-right: 0;
  font-size: 80%;
}
.button-sign[data-v-b30b71a2] {
  background: #8ab7f8;
  border-color: #8ab7f8;
  color: #fff;
  text-transform: capitalize;
}
a[data-v-b30b71a2] {
  text-decoration: none;
}
p[data-v-b30b71a2] {
  margin-bottom: 0px;
  line-height: 30px;
  text-align: center;
}
input[data-v-b30b71a2],
input[data-v-b30b71a2]:focus {
  background: #fff;
  font-size: 80%;
}
input[data-v-b30b71a2]:focus {
  border: 1px solid #e8f0fe;
}
#basic-addon1[data-v-b30b71a2] {
  color: transparent;
}
.row[data-v-b30b71a2] {
  margin: 0px;
}
@media screen and (min-width: 425px) {
.back[data-v-b30b71a2],
  .form-signin[data-v-b30b71a2] {
    height: 50vh;
}
}
@media (min-width: 768px) {
.back[data-v-b30b71a2],
  .form-signin[data-v-b30b71a2] {
    height: 50vh;
}
.v-application--wrap[data-v-b30b71a2] {
    background: #fff;
}
}
@media screen and (min-width: 1024px) {
.back[data-v-b30b71a2],
  .form-signin[data-v-b30b71a2] {
    height: 100vh;
}
}


.btn_block,
.btn_outline {
  min-width: 145px;
}

*[data-v-d2e269f6],
*[data-v-d2e269f6]:before,
*[data-v-d2e269f6]:after {
  box-sizing: border-box;
}
body[data-v-d2e269f6] {
  background: #c5ddeb;
  font: 14px/20px "Lato", Arial, sans-serif;
  padding: 40px 0;
  color: white;
}
.container[data-v-d2e269f6] {
  margin: 0 auto;
  width: 750px;
  background: #f5f5f5;
  border-radius: 5px;
}
.people-list[data-v-d2e269f6] {
  width: 260px;
  float: left;
  height: 575px;
  overflow: auto;
}
.people-list .search[data-v-d2e269f6] {
  padding: 20px;
  display: "none";
}
.people-list input[data-v-d2e269f6] {
  border-radius: 3px;
  border: none;
  padding: 14px;
  color: white;
  background: #6a6c75;
  width: 90%;
  font-size: 14px;
}
.people-list .fa-search[data-v-d2e269f6] {
  position: relative;
  left: -25px;
}
.people-list ul[data-v-d2e269f6] {
  padding: 20px;
  height: 770px;
}
.people-list ul li[data-v-d2e269f6] {
  padding-bottom: 20px;
  margin-bottom: 1px;
}
.people-list img[data-v-d2e269f6] {
  float: left;
}
.people-list .about[data-v-d2e269f6] {
  float: left;
  margin-top: 8px;
}
.people-list .about[data-v-d2e269f6] {
  padding-left: 8px;
}
.people-list .status[data-v-d2e269f6] {
  color: #92959e;
}
.chat[data-v-d2e269f6] {
  width: 490px;
  float: left;
  background: #f2f5f8;
  border-top-right-radius: 5px;
  border-bottom-right-radius: 5px;
  color: #434651;
}
.chat .chat-header[data-v-d2e269f6] {
  padding: 20px;
  border-bottom: 2px solid white;
}
.chat .chat-header img[data-v-d2e269f6] {
  float: left;
}
.chat .chat-header .chat-about[data-v-d2e269f6] {
  float: left;
  padding-left: 10px;
  margin-top: 6px;
}
.chat .chat-header .chat-with[data-v-d2e269f6] {
  font-weight: bold;
  font-size: 16px;
}
.chat .chat-header .chat-num-messages[data-v-d2e269f6] {
  color: #92959e;
}
.chat .chat-header .fa-star[data-v-d2e269f6] {
  float: right;
  color: #d8dadf;
  font-size: 20px;
  margin-top: 12px;
}
.chat .chat-history[data-v-d2e269f6] {
  padding: 30px 30px 20px;
  border-bottom: 2px solid white;
  overflow-y: scroll;
  height: 575px;
}
.chat .chat-history .message-data[data-v-d2e269f6] {
  margin-bottom: 15px;
}
.chat .chat-history .message-data-time[data-v-d2e269f6] {
  color: #a8aab1;
  padding-left: 6px;
}
.chat .chat-history .message[data-v-d2e269f6] {
  color: white;
  padding: 18px 20px;
  line-height: 26px;
  font-size: 16px;
  border-radius: 7px;
  margin-bottom: 30px;
  width: 90%;
  position: relative;
}
.chat .chat-history .message[data-v-d2e269f6]:after {
  bottom: 100%;
  left: 7%;
  border: solid transparent;
  content: " ";
  height: 0;
  width: 0;
  position: absolute;
  pointer-events: none;
  border-bottom-color: #86bb71;
  border-width: 10px;
  margin-left: -10px;
}
.chat .chat-history .my-message[data-v-d2e269f6] {
  background: #86bb71;
}
.chat .chat-history .other-message[data-v-d2e269f6] {
  background: #94c2ed;
}
.chat .chat-history .other-message[data-v-d2e269f6]:after {
  border-bottom-color: #94c2ed;
  left: 93%;
}
.chat .chat-message[data-v-d2e269f6] {
  padding: 30px;
}
.chat .chat-message textarea[data-v-d2e269f6] {
  width: 100%;
  border: 1px solid gray;
  padding: 10px 20px;
  font: 14px/22px "Lato", Arial, sans-serif;
  margin-bottom: 10px;
  border-radius: 5px;
  resize: none;
}
.chat .chat-message .fa-file-o[data-v-d2e269f6],
.chat .chat-message .fa-file-image-o[data-v-d2e269f6] {
  font-size: 16px;
  color: gray;
  cursor: pointer;
}
.chat .chat-message button[data-v-d2e269f6] {
  float: right;
  color: #94c2ed;
  font-size: 16px;
  text-transform: uppercase;
  border: none;
  cursor: pointer;
  font-weight: bold;
  background: #f2f5f8;
}
.chat .chat-message button[data-v-d2e269f6]:hover {
  color: #75b1e8;
}
.online[data-v-d2e269f6],
.offline[data-v-d2e269f6],
.me[data-v-d2e269f6] {
  margin-right: 3px;
  font-size: 10px;
}
.online[data-v-d2e269f6] {
  color: #86bb71;
}
.offline[data-v-d2e269f6] {
  color: #e38968;
}
.me[data-v-d2e269f6] {
  color: #94c2ed;
}
.align-left[data-v-d2e269f6] {
  text-align: left;
}
.align-right[data-v-d2e269f6] {
  text-align: right;
}
.float-right[data-v-d2e269f6] {
  float: right;
}
.clearfix[data-v-d2e269f6]:after {
  visibility: hidden;
  display: block;
  font-size: 0;
  content: " ";
  clear: both;
  height: 0;
}

.input-group-text[data-v-2a8dee25] {
  border-top-left-radius: 0;
  border-top-right-radius: 0.25rem;
  border-bottom-right-radius: 0.25rem;
  border-bottom-left-radius: 0;
  display: flex;
  align-items: center;
  border-left: 0px;
  padding: 5.5px;
  font-size: 1rem;
  font-weight: 400;
  /* line-height: 1.5; */
  color: #212529;
  text-align: center;
  white-space: nowrap;
  background-color: transparent;
  border: 1px solid #ced4da;
  cursor: pointer;
  /* border-radius: 0.25rem; */
}
.back[data-v-2a8dee25] {
  display: flex;
  justify-content: center;
  align-items: center;
  text-align: left;
  background: #c8ddfb;
  height: 100vh;
}
.cont[data-v-2a8dee25] {
  background-image: url("https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.perfectserve.com%2Fanswer-service%2Flanding-hero-background%2F&psig=AOvVaw3w5ElT-d6X2RLuQsaU-KrQ&ust=1645917397571000&source=images&cd=vfe&ved=0CAgQjRxqFwoTCOiHxLL-m_YCFQAAAAAdAAAAABAK");
}
.form-signin[data-v-2a8dee25] {
  /*max-width: 400px;*/
  flex: 100%;
  border-right: 0px;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  background: #fff;
  flex-direction: column;
}
.form-signin .checkbox[data-v-2a8dee25] {
  font-weight: 400;
}
.form-signin .form-floating[data-v-2a8dee25]:focus-within {
  z-index: 2;
}
.form-signin input[type="email"][data-v-2a8dee25] {
  margin-bottom: -1px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.form-signin input[type="password"][data-v-2a8dee25],
.form-signin input[type="text"][data-v-2a8dee25],
.form-signin input[type="tel"][data-v-2a8dee25] {
  border-top-left-radius: 0;
  border-top-right-radius: 0;
  border-right: 0;
  font-size: 80%;
}
.button-sign[data-v-2a8dee25] {
  background: #8ab7f8;
  border-color: #8ab7f8;
  color: #fff;
  text-transform: capitalize;
}
a[data-v-2a8dee25] {
  text-decoration: none;
}
p[data-v-2a8dee25] {
  margin-bottom: 0px;
  line-height: 15px;
}
input[data-v-2a8dee25],
input[data-v-2a8dee25]:focus {
  background: #fff;
  font-size: 80%;
}
input[data-v-2a8dee25]:focus {
  border: 1px solid #e8f0fe;
}
#basic-addon1[data-v-2a8dee25] {
  color: transparent;
}


.last_block[data-v-15191fdc] {
  padding: 15px;
  padding-left: 56px;
  padding-right: 56px;
}
.card[data-v-15191fdc] {
  padding: 0px;
  border-radius: 4px;
}
.input-group-text[data-v-15191fdc] {
  border-top-left-radius: 0;
  border-top-right-radius: 0.25rem;
  border-bottom-right-radius: 0.25rem;
  border-bottom-left-radius: 0;
  display: flex;
  align-items: center;
  border-left: 0px;
  padding: 5.5px;
  font-size: 1rem;
  font-weight: 400;
  /* line-height: 1.5; */
  color: #212529;
  text-align: center;
  white-space: nowrap;
  background-color: transparent;
  border: 1px solid #ced4da;
  cursor: pointer;
  /* border-radius: 0.25rem; */
}
.back[data-v-15191fdc] {
  display: flex;
  justify-content: center;
  align-items: center;
  text-align: left;
  background: #c8ddfb;
}
.cont[data-v-15191fdc] {
  background-image: url("https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.perfectserve.com%2Fanswer-service%2Flanding-hero-background%2F&psig=AOvVaw3w5ElT-d6X2RLuQsaU-KrQ&ust=1645917397571000&source=images&cd=vfe&ved=0CAgQjRxqFwoTCOiHxLL-m_YCFQAAAAAdAAAAABAK");
}
.form-signin[data-v-15191fdc] {
  /*max-width: 400px;*/
  flex: 100%;
  border-right: 0px;
  display: flex;
  justify-content: center;
  align-items: center;
  background: #fff;
}
.form-signin .checkbox[data-v-15191fdc] {
  font-weight: 400;
}
.form-signin .form-floating[data-v-15191fdc]:focus-within {
  z-index: 2;
}
.form-signin input[type="email"][data-v-15191fdc] {
  margin-bottom: -1px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.form-signin input[type="password"][data-v-15191fdc],
.form-signin input[type="text"][data-v-15191fdc],
.form-signin input[type="tel"][data-v-15191fdc] {
  border-top-left-radius: 0;
  border-top-right-radius: 0;
  border-right: 0;
  font-size: 80%;
}
.button-sign[data-v-15191fdc] {
  background: #8ab7f8;
  border-color: #8ab7f8;
  color: #fff;
  text-transform: capitalize;
}
a[data-v-15191fdc] {
  text-decoration: none;
}
p[data-v-15191fdc] {
  margin-bottom: 0px;
  line-height: 30px;
  text-align: center;
}
input[data-v-15191fdc],
input[data-v-15191fdc]:focus {
  background: #fff;
  font-size: 80%;
}
input[data-v-15191fdc]:focus {
  border: 1px solid #e8f0fe;
}
#basic-addon1[data-v-15191fdc] {
  color: transparent;
}
.row[data-v-15191fdc] {
  margin: 0px;
}
@media screen and (min-width: 425px) {
.back[data-v-15191fdc],
  .form-signin[data-v-15191fdc] {
    height: 50vh;
}
}
@media (min-width: 768px) {
.back[data-v-15191fdc],
  .form-signin[data-v-15191fdc] {
    height: 50vh;
}
.v-application--wrap[data-v-15191fdc] {
    background: #fff;
}
}
@media screen and (min-width: 1024px) {
.back[data-v-15191fdc],
  .form-signin[data-v-15191fdc] {
    height: 100vh;
}
}


.image_vaziva[data-v-04615a7c] {
  width: 288px;
  /* height: 200px; */
  /* margin-top: -300px; */
  margin-left: -172px;
}
.forAll[data-v-04615a7c] {
}
.last_block[data-v-04615a7c] {
  padding: 15px;
  padding-left: 56px;
  padding-right: 56px;
}
.card[data-v-04615a7c] {
  padding: 0px;
  border-radius: 4px;
}
.input-group-text[data-v-04615a7c] {
  border-top-left-radius: 0;
  border-top-right-radius: 0.25rem;
  border-bottom-right-radius: 0.25rem;
  border-bottom-left-radius: 0;
  display: flex;
  align-items: center;
  border-left: 0px;
  padding: 5.5px;
  font-size: 1rem;
  font-weight: 400;
  /* line-height: 1.5; */
  color: #212529;
  text-align: center;
  white-space: nowrap;
  background-color: transparent;
  border: 1px solid #ced4da;
  cursor: pointer;
  /* border-radius: 0.25rem; */
}
.back[data-v-04615a7c] {
  display: flex;
  justify-content: center;
  align-items: center;
  text-align: left;
  background: #c8ddfb;
  height: 100;
}
.cont[data-v-04615a7c] {
  background-image: url("https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.perfectserve.com%2Fanswer-service%2Flanding-hero-background%2F&psig=AOvVaw3w5ElT-d6X2RLuQsaU-KrQ&ust=1645917397571000&source=images&cd=vfe&ved=0CAgQjRxqFwoTCOiHxLL-m_YCFQAAAAAdAAAAABAK");
}
.form-signin[data-v-04615a7c] {
  /*max-width: 400px;*/
  flex: 100%;
  border-right: 0px;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  background: #fff;
}
.form-signin .checkbox[data-v-04615a7c] {
  font-weight: 400;
}
.form-signin .form-floating[data-v-04615a7c]:focus-within {
  z-index: 2;
}
.form-signin input[type="email"][data-v-04615a7c] {
  margin-bottom: -1px;
  border-bottom-right-radius: 0;
  border-bottom-left-radius: 0;
}
.form-signin input[type="password"][data-v-04615a7c],
.form-signin input[type="text"][data-v-04615a7c],
.form-signin input[type="tel"][data-v-04615a7c] {
  border-top-left-radius: 0;
  border-top-right-radius: 0;
  border-right: 0;
  font-size: 80%;
}
.button-sign[data-v-04615a7c] {
  background: #8ab7f8;
  border-color: #8ab7f8;
  color: #fff;
  text-transform: capitalize;
}
a[data-v-04615a7c] {
  text-decoration: none;
}
p[data-v-04615a7c] {
  margin-bottom: 0px;
  line-height: 15px;
}
input[data-v-04615a7c],
input[data-v-04615a7c]:focus {
  background: #fff;
  font-size: 80%;
}
input[data-v-04615a7c]:focus {
  border: 1px solid #e8f0fe;
}
#basic-addon1[data-v-04615a7c] {
  color: transparent;
}
.row[data-v-04615a7c] {
  margin: 0px;
}
@media screen and (min-width: 425px) {
.back[data-v-04615a7c],
  .form-signin[data-v-04615a7c] {
    height: 50vh;
}
}
@media (min-width: 768px) {
.back[data-v-04615a7c],
  .form-signin[data-v-04615a7c] {
    height: 50vh;
}
.v-application--wrap[data-v-04615a7c] {
    background: #fff;
}
}
@media screen and (min-width: 1024px) {
.back[data-v-04615a7c],
  .form-signin[data-v-04615a7c] {
    height: 100vh;
}
}


/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLmNzcyIsIm1hcHBpbmdzIjoiOztBQUFBLFVBQVU7QUFDVjtFQUNFLFVBQVU7QUFDWjs7QUFFQSxVQUFVO0FBQ1Y7RUFDRSxtQkFBbUI7QUFDckI7O0FBRUEsV0FBVztBQUNYO0VBQ0UsZ0JBQWdCO0FBQ2xCOztBQUVBLG9CQUFvQjtBQUNwQjtFQUNFLGdCQUFnQjtBQUNsQjtBQUNBO0VBQ0UsY0FBYztFQUNkLG1DQUFtQztFQUNuQywyQkFBMkI7RUFDM0IsYUFBYTtFQUNiLHNCQUFzQjtFQUN0QixpQkFBaUI7RUFDakIsZUFBZTtFQUNmLGtCQUFrQjtFQUNsQixtQkFBbUI7QUFDckI7QUFDQTtFQUNFLFlBQVk7RUFDWixlQUFlO0VBQ2YsbUJBQW1CO0VBQ25CLG1CQUFtQjtFQUNuQixtQkFBbUI7RUFDbkIsMENBQTBDO0VBQzFDLFdBQVc7RUFDWCxrQkFBa0I7RUFDbEIsNkJBQTZCO0VBQzdCLHlCQUF5QjtBQUMzQjtBQUNBO0VBQ0UsY0FBYztFQUNkLGdCQUFnQjtBQUNsQjtBQUNBO0VBQ0UsWUFBWTtFQUNaLGVBQWU7RUFDZixtQkFBbUI7RUFDbkIsbUJBQW1CO0VBQ25CLHlCQUF5QjtFQUN6QixXQUFXO0VBQ1gsa0JBQWtCO0FBQ3BCO0FBQ0E7RUFDRSxnQkFBZ0I7RUFDaEIsZUFBZTtFQUNmLG1CQUFtQjtFQUNuQixrQkFBa0I7RUFDbEIsZ0JBQWdCO0VBQ2hCLGNBQWM7RUFDZCxrQkFBa0I7RUFDbEIsbUJBQW1CO0VBQ25CLHlCQUF5QjtFQUN6QiwwQ0FBMEM7RUFDMUMsNkJBQTZCO0FBQy9CO0FBQ0E7RUFDRSxnQkFBZ0I7RUFDaEIsZUFBZTtFQUNmLG1CQUFtQjtFQUNuQixvQkFBb0I7RUFDcEIsNkJBQTZCO0VBQzdCLGNBQWM7RUFDZCxrQkFBa0I7RUFDbEIsNkJBQTZCO0FBQy9CO0FBQ0E7RUFDRSxjQUFjO0FBQ2hCO0FBQ0E7RUFDRSxnQkFBZ0I7RUFDaEIsZUFBZTtFQUNmLG1CQUFtQjtFQUNuQixvQkFBb0I7RUFDcEIseUJBQXlCO0VBQ3pCLGNBQWM7RUFDZCxrQkFBa0I7RUFDbEIsNkJBQTZCO0FBQy9CO0FBQ0E7RUFDRSxXQUFXO0VBQ1gsbUJBQW1CO0FBQ3JCO0FBQ0E7RUFDRSxpQkFBaUI7QUFDbkI7QUFDQTtFQUNFLGtCQUFrQjtBQUNwQjtBQUNBO0VBQ0UsY0FBYztFQUNkLGdCQUFnQjtFQUNoQixpQkFBaUI7QUFDbkI7QUFDQTtFQUNFLFVBQVU7RUFDVixxQkFBcUI7RUFDckIsa0JBQWtCO0FBQ3BCO0FBQ0E7RUFDRSx3QkFBd0I7RUFDeEIsZ0JBQWdCO0VBQ2hCLE1BQU07QUFDUjtBQUNBO0VBQ0UscUJBQXFCO0VBQ3JCLGdCQUFnQjtFQUNoQixrQkFBa0I7RUFDbEIsNkJBQTZCO0VBQzdCLGlCQUFpQjtFQUNqQixrQkFBa0I7RUFDbEIsbUJBQW1CO0VBQ25CLGdCQUFnQjtFQUNoQixhQUFhO0VBQ2IsWUFBWTtFQUNaLHFCQUFxQjtFQUNyQixlQUFlO0FBQ2pCO0FBQ0E7RUFDRSxtQkFBbUI7RUFDbkIscUJBQXFCO0FBQ3ZCO0FBQ0E7RUFDRSxrQkFBa0I7RUFDbEIsY0FBYztFQUNkLHFCQUFxQjtFQUNyQixpQkFBaUI7QUFDbkI7QUFDQTtFQUNFLGlCQUFpQjtBQUNuQjtBQUNBO0VBQ0UsV0FBVztBQUNiO0FBQ0E7RUFDRSxhQUFhO0VBQ2IsbUJBQW1CO0FBQ3JCO0FBQ0E7RUFDRSxpQkFBaUI7QUFDbkI7QUFDQTtFQUNFO0lBQ0UsYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixnQkFBZ0I7RUFDbEI7RUFDQTtJQUNFLHNCQUFzQjtFQUN4QjtFQUNBO0lBQ0Usa0JBQWtCO0lBQ2xCLFNBQVM7SUFDVCxnQkFBZ0I7RUFDbEI7RUFDQTtJQUNFLGFBQWE7SUFDYixzQkFBc0I7SUFDdEIsc0JBQXNCO0VBQ3hCO0VBQ0E7SUFDRSxjQUFjO0VBQ2hCO0VBQ0E7O0lBRUUsWUFBWTtFQUNkO0FBQ0Y7O0FBRUEseUVBQXlFO0FBQ3pFO0VBQ0U7SUFDRSxhQUFhO0lBQ2IsbUJBQW1CO0lBQ25CLG1CQUFtQjtJQUNuQiw4QkFBOEI7RUFDaEM7RUFDQTtJQUNFLGFBQWE7RUFDZjtFQUNBO0lBQ0UscUJBQXFCO0VBQ3ZCO0VBQ0E7SUFDRSxrQkFBa0I7SUFDbEIsTUFBTTtJQUNOLE9BQU87RUFDVDtFQUNBO0lBQ0Usa0JBQWtCO0lBQ2xCLFNBQVM7SUFDVCxnQkFBZ0I7RUFDbEI7RUFDQTtJQUNFLGFBQWE7RUFDZjtFQUNBOztJQUVFLGFBQWE7RUFDZjtBQUNGO0FBQ0E7RUFDRSxZQUFZO0VBQ1osYUFBYTtFQUNiLGVBQWU7RUFDZiw0QkFBNEI7RUFDNUIsd0JBQXdCO0VBQ3hCLGVBQWU7QUFDakI7QUFDQSx3RUFBd0U7OztBQ3BKeEU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7QUFDQTtJQUNBO0FBQ0E7QUFDQTs7QUM5RUE7RUFDQztFQUNBO0FBTEQ7QUFPQTtBQUNDO0lBQ0M7QUFKQTtBQUNGLEM7O0FDT0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7QUFDQTtBQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtBQUNBO0FBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7QUFDQTtBQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7QUFDQTtBQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7QUFDQTtBQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7QUFDQTtBQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7QUFDQTtBQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7QUFDQTtBQUNBO0NBQ0E7Q0FDQTtDQUNBO0NBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQ29VQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7OztFQUdBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBOztFQUVBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUVBO0FBQ0E7O0lBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7SUFFQTtBQUNBO0FBQ0E7SUFDQTtBQUNBO0FBQ0E7SUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztJQUVBO0FBQ0E7QUFDQTtJQUNBO0FBQ0E7QUFDQTs7O0FDOWJBO0VBQ0E7RUFDQTtFQUNBO0FBRUE7OztBQ3dWQTs7RUFFQTtBQUNBO0FBQ0E7QUFDQTs7SUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztJQUVBO0FBQ0E7QUFDQTtJQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0lBRUE7QUFDQTtBQUNBOzs7QUMxTUE7QUFDQTtJQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQTtBQUNBO0FBQ0E7SUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0E7QUFDQTtBQUVBOzs7QUN3Q0E7RUFDQTtBQUNBO0FBQ0E7OztFQUdBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFDQTs7O0VBR0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0FBQ0E7OztBQzhJQTs7RUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBOztFQUVBO0FBQ0E7QUFDQTs7RUFFQTtFQUNBO0FBQ0E7Ozs7QUM3aEJBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0FBQ0E7QUFDQTtBQUNBO0lBQ0E7QUFDQTtBQUNBO0lBQ0E7QUFDQTtBQUNBO0lBQ0E7QUFDQTtBQUNBO0lBQ0E7QUFDQTtBQUNBOzs7QUM0RUE7RUFDQTtBQUNBOzs7QUNBQTs7O0VBR0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFDQTs7O0VBR0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0FBQ0E7O0FDMEhBO0VBQ0U7QUF0VkY7QUF3VkE7RUFDRTtBQXJWRjtBQXVWQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFwVkY7QUFzVkE7O0VBRUU7QUFuVkY7QUFzVkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFuVkY7QUFxVkE7RUFDRTtFQUNBO0VBQ0E7QUFsVkY7QUFvVkE7RUFDRTtFQUNBO0VBQ0E7QUFqVkY7QUFtVkE7RUFDRTtFQUNBO0VBQ0E7QUFoVkY7QUFrVkE7RUFDRTtFQUNBO0FBL1VGO0FBaVZBO0FBQ0U7SUFDRTtBQTlVRjtBQWdWQTtJQUNFO0FBOVVGO0FBQ0Y7QUFnVkE7QUFDRTtJQUNFO0FBOVVGO0FBZ1ZBO0lBQ0U7QUE5VUY7QUFDRjtBQWdWQTtFQUNFO0VBQ0E7RUFDQTtBQTlVRjtBQWdWQTtFQUNFO0VBQ0E7QUE3VUY7QUErVUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQTVVRjtBQThVQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQTNVRjtBQTZVQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQTFVRjtBQTRVQTtFQUNFO0FBelVGO0FBMlVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQXhVRjtBQTBVQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FBdlVGO0FBMFVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQXZVRjtBQTBVQTtFQUNFO0VBQ0E7RUFDQTtBQXZVRjtBQXlVRTtFQUNFO0VBQ0E7QUF2VUo7QUEyVUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBQXhVRjtBQTJVSTtFQUNFO0VBQ0E7RUFDQTtBQXpVTjtBQThVSTtFQUNFO0FBNVVOO0FBK1VJO0VBQ0U7RUFDQTtBQTdVTjtBQWlWRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUEvVUo7QUFtVkk7RUFDRTtBQWpWTjtBQXNWQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQW5WRjtBQXNWQTtFQUNFO0VBQ0E7RUFDQTtBQW5WRjtBQXFWQTtFQUNFO0FBbFZGO0FBb1ZBO0VBQ0U7RUFDQTtBQWpWRjtBQW1WQTtFQUNFO0FBaFZGO0FBbVZBO0FBQ0U7SUFDRTtBQWhWRjtBQUNGO0FBa1ZBO0FBQ0U7SUFDRTtBQWhWRjtBQWtWQTtJQUNFO0FBL1VGO0FBaVZBO0lBQ0U7QUE5VUY7QUFDRjtBQWdWQTtBQUNFO0lBQ0U7QUE5VUY7QUFnVkE7SUFDRTtBQTdVRjtBQUNGLEM7O0FDbElBO0FBQ0E7QUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTs7O0FDMEVBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBOztFQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7RUFFQTtBQUNBO0FBRUE7OztFQUdBO0VBQ0E7Ozs7R0FJQTtFQUNBO0VBQ0E7QUFDQTtBQUNBOztFQUVBO0FBQ0E7QUFDQTs7Ozs7OztFQU9BO0VBQ0E7RUFDQTtFQUNBOzs7O0dBSUE7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtBQUNBOzs7QUN6TEE7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTs7QUN6TEEsZ0JBQWdCO0FBOFJoQjtFQUNFO0FBM1JGO0FBNlJBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QUExUkY7QUE0UkE7RUFDRTtBQXpSRjtBQTJSQTtFQUNFO0FBeFJGO0FBMFJBO0VBQ0U7RUFDQTtBQXZSRjtBQTZSQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUExUkY7QUE2UkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUExUkY7QUE2UkE7O0VBRUU7QUExUkY7QUE4UkU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQTNSSjtBQTZSSTs7Ozs7RUFLRTtBQTNSTjtBQStSRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FBN1JKO0FBZ1NFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBOVJKO0FBZ1NJO0VBRUU7RUFDQTtBQS9STjtBQWtTSTtFQUNFO0FBaFNOO0FBbVNJO0VBQ0U7QUFqU047QUFxU0U7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBblNKO0FBcVNJO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQXBTTjtBQXVTSTtFQUNFO0FBclNOO0FBdVNJO0VBQ0U7QUFyU047QUF5U0U7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUF2U0o7QUEyU0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQXhTRjtBQTJTQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFFQTtBQXpTRjtBQTJTRTtFQUNFO0FBelNKO0FBNlNBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQTFTRjtBQTRTRTtFQUNFO0VBQ0E7QUExU0o7QUE4U0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQTNTRjtBQThTQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUEzU0Y7QUE4U0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQTNTRjtBQTZTRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUEzU0o7QUE4U0U7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBQTVTSjtBQWdUQTtFQUNFO0VBQ0E7QUE3U0Y7QUFnVEE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBQTdTRjtBQStTRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUE3U0o7QUErU0k7RUFDRTtFQUNBO0FBN1NOO0FBZ1RJO0VBQ0U7RUFDQTtBQTlTTjtBQW1UQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFoVEY7QUFrVEU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBQWhUSjtBQW1URTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFqVEo7QUFtVEk7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFqVE47QUFvVEk7RUFDRTtBQWxUTjtBQXVUQTtFQUNFO0FBcFRGO0FBdVRBO0VBQ0U7RUFDQTtFQUNBO0FBcFRGO0FBc1RFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBcFRKO0FBd1RBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QUFyVEY7QUF3VEE7RUFDRTtFQUNBO0VBQ0E7QUFyVEY7QUF3VEE7RUFDRTtFQUNBO0FBclRGO0FBd1RBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBclRGO0FBdVRFO0VBQ0U7RUFDQTtBQXJUSjtBQXdURTtFQUNFO0VBQ0E7QUF0VEo7QUEwVEE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQXZURjtBQXlURTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUF2VEo7QUEwVEU7RUFDRTtFQUNBO0VBQ0E7QUF4VEo7QUEyVEU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBelRKO0FBNlRBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQTFURjtBQTRURTtFQUNFO0VBQ0E7QUExVEo7QUE0VEk7RUFDRTtBQTFUTjtBQThURTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FBNVRKO0FBZ1VBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QUE3VEY7QUErVEU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBN1RKO0FBaVVBO0VBQ0U7RUFDQTtBQTlURjtBQWtVRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FBL1RKO0FBa1VFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBaFVKO0FBbVVFO0VBQ0U7QUFqVUo7QUFtVUk7RUFDRTtBQWpVTjtBQXFVRTtFQUNFO0VBQ0E7QUFuVUo7QUF1VUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBcFVGO0FBc1VFO0VBQ0U7RUFDQTtBQXBVSjtBQXdVQTtFQUNFO0VBQ0E7QUFyVUY7QUF1VUU7RUFDRTtFQUNBO0FBclVKO0FBdVVJO0VBQ0U7QUFyVU47QUEwVUk7RUFDRTtFQUNBO0VBQ0E7QUF4VU47QUF5VU07RUFDRTtBQXZVUjtBQTJVSTtFQUNFO0VBQ0E7RUFDQTtBQXpVTjtBQTRVSTtFQUNFO0VBQ0E7QUExVU47QUE2VUk7RUFDRTtBQTNVTjtBQThVSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FBNVVOO0FBK1VJO0VBQ0U7QUE3VU47QUFnVkk7RUFDRTtBQTlVTjtBQWlWSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FBL1VOO0FBa1ZJO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QUFoVk47QUFtVkk7RUFDRTtFQUNBO0FBalZOO0FBc1ZBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QUFuVkY7QUFxVkU7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBblZKO0FBcVZJO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QUFuVk47QUF1VkU7RUFDRTtFQUNBO0FBclZKO0FBdVZJO0VBQ0U7QUFyVk47QUF5VkU7RUFDRTtFQUNBO0FBdlZKO0FBMlZBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBOzs7Ozs7Ozs7Ozs7O3lCQUFBO0FBNVVGO0FBNFZBO0VBQ0U7QUF6VkY7QUE0VkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBQXpWRjtBQTRWQTtFQUNFO0VBQ0E7RUFDQTtBQXpWRjtBQTRWQTtFQUNFO0VBQ0E7RUFDQTtBQXpWRjtBQTJWRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQXpWSjtBQTRWRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FBMVZKO0FBZ1dFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQTlWSjtBQWtXQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FBL1ZGO0FBaVdFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUEvVko7QUFtV0E7RUFDRTtFQUNBO0FBaFdGO0FBa1dFO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQWhXSjtBQWtXSTtFQUNFO0FBaFdOO0FBcVdBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFsV0Y7QUFxV0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFsV0Y7QUFxV0E7RUFDRTtBQWxXRjtBQXFXQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQWxXRjtBQXFXQTtBQUNFO0lBQ0U7QUFsV0Y7QUFxV0E7O0lBRUU7QUFsV0Y7QUFxV0E7SUFDRTtJQUNBO0FBbFdGO0FBcVdBO0lBQ0U7QUFsV0Y7QUFDRjtBQXFXQTtBQUNFO0lBQ0U7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFuV0Y7QUFxV0U7SUFDRTtBQW5XSjtBQXVXQTtJQUNFO0FBcFdGO0FBQ0Y7QUF1V0E7QUFDRTs7SUFFRTtBQXJXRjtBQXdXQTs7O0lBR0U7SUFDQTtBQXJXRjtBQXVXRTs7O0lBQ0U7SUFDQTtBQW5XSjtBQXVXQTtJQUNFO0FBcFdGO0FBQ0Y7QUF1V0E7QUFDRTtJQUNFO0FBcldGO0FBdVdBO0lBQ0U7QUFwV0Y7QUF1V0E7O0lBRUU7QUFwV0Y7QUF1V0E7SUFDRTtBQXBXRjtBQXVXQTs7SUFFRTtBQXBXRjtBQXVXQTtJQUNFO0lBQ0E7QUFwV0Y7QUF1V0E7SUFDRTtBQXBXRjtBQXVXQTtJQUNFO0FBcFdGO0FBdVdBO0lBQ0U7QUFwV0Y7QUF1V0E7SUFDRTtBQXBXRjtBQXVXQTtJQUNFO0lBQ0E7QUFwV0Y7QUF1V0E7SUFDRTtBQXBXRjtBQXVXQTs7SUFFRTtBQXBXRjtBQXVXQTtJQUNFO0FBcFdGO0FBc1dFO0lBQ0U7QUFwV0o7QUF3V0E7SUFDRTtBQXJXRjtBQXdXQTtJQUNFO0FBcldGO0FBd1dBO0lBQ0U7SUFDQTtBQXJXRjtBQXdXQTtJQUNFO0lBQ0E7QUFyV0Y7QUF3V0E7SUFDRTtBQXJXRjtBQXdXQTtJQUNFO0FBcldGO0FBd1dBO0lBQ0U7QUFyV0Y7QUF3V0E7SUFDRTtJQUNBO0lBQ0E7QUFyV0Y7QUF3V0E7SUFDRTtBQXJXRjtBQXdXQTtJQUNFO0lBQ0E7QUFyV0Y7QUFDRixDOztBQ3BqQkE7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBbUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7O0VBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7SUFFQTtBQUNBO0FBQ0E7SUFDQTtJQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7SUFDQTtBQUNBO0FBQ0E7SUFDQTtBQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtBQUNBO0lBQ0E7QUFDQTtBQUNBO0lBQ0E7QUFDQTtBQUNBO0lBQ0E7SUFDQTtJQUNBO0FBQ0E7QUFDQTs7O0FDNVdBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUNBOztFQUVBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUVBOzs7Ozs7RUFNQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7OztBQzVGQTtFQUNBO0VBQ0E7SUFDQTtBQUNBOzs7O0FDckNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTs7O0FDeUtBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTs7O0FDelFBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUVBOzs7QUMwTUE7QUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBOzs7QUM0QkE7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBOzs7RUFHQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTs7RUFFQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0FBQ0E7OztBQ3ZGQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBOzs7RUFHQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTs7RUFFQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0FBQ0E7QUFFQTtBQUNBOztJQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0lBRUE7QUFDQTtBQUNBO0lBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7SUFFQTtBQUNBO0FBQ0E7OztBQ3NIQTtBQUNBO0FBQ0EsQzs7QUM3VkE7RUFDQTtBQUNBOzs7QUN6SUE7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBOzs7RUFHQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBOztFQUVBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUVBO0FBQ0E7O0lBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7SUFFQTtBQUNBO0FBQ0E7SUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztJQUVBO0FBQ0E7QUFDQTs7O0FDTEE7O0VBRUE7QUFDQTs7QUNRQTs7O0VBR0U7QUF4TkY7QUEyTkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBQXhORjtBQTJOQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0FBeE5GO0FBMk5BO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QUF4TkY7QUEwTkU7RUFDRTtFQUNBO0FBeE5KO0FBMk5FO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUF6Tko7QUE0TkU7RUFDRTtFQUNBO0FBMU5KO0FBNk5FO0VBQ0U7RUFDQTtBQTNOSjtBQTZOSTtFQUNFO0VBQ0E7QUEzTk47QUErTkU7RUFDRTtBQTdOSjtBQWdPRTtFQUNFO0VBQ0E7QUE5Tko7QUFpT0U7RUFDRTtBQS9OSjtBQWtPRTtFQUNFLGNBeEVHO0FBeEpQO0FBb09BO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0FBbE9GO0FBb09FO0VBQ0U7RUFDQTtBQWxPSjtBQW9PSTtFQUNFO0FBbE9OO0FBcU9JO0VBQ0U7RUFDQTtFQUNBO0FBbk9OO0FBc09JO0VBQ0U7RUFDQTtBQXBPTjtBQXVPSTtFQUNFLGNBekdDO0FBNUhQO0FBd09JO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7QUF0T047QUEwT0U7RUFDRTtFQUNBO0VBQ0E7RUFDQTtBQXhPSjtBQTBPSTtFQUNFO0FBeE9OO0FBMk9JO0VBQ0U7RUFDQTtBQXpPTjtBQTRPSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUExT047QUE0T007RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsNEJBekpBO0VBMEpBO0VBQ0E7QUExT1I7QUE4T0k7RUFDRSxtQkFoS0U7QUE1RVI7QUErT0k7RUFDRSxtQkFuS0M7QUExRVA7QUErT007RUFDRSw0QkF0S0Q7RUF1S0M7QUE3T1I7QUFrUEU7RUFDRTtBQWhQSjtBQWtQSTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBaFBOO0FBbVBJOztFQUVFO0VBQ0E7RUFDQTtBQWpQTjtBQW9QSTtFQUNFO0VBQ0EsY0FsTUM7RUFtTUQ7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBbFBOO0FBb1BNO0VBQ0U7QUFsUFI7QUF3UEE7OztFQUdFO0VBQ0E7QUFyUEY7QUF3UEE7RUFDRSxjQTFOTTtBQTNCUjtBQXdQQTtFQUNFLGNBNU5PO0FBekJUO0FBd1BBO0VBQ0UsY0FqT0s7QUFwQlA7QUF3UEE7RUFDRTtBQXJQRjtBQXdQQTtFQUNFO0FBclBGO0FBd1BBO0VBQ0U7QUFyUEY7QUF3UEE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFyUEYsQzs7QUMzS0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtBQUNBO0FBRUE7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBOzs7RUFHQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTs7RUFFQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0FBQ0E7OztBQ3lHQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7OztFQUdBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7O0VBRUE7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBRUE7QUFDQTs7SUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztJQUVBO0FBQ0E7QUFDQTtJQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0lBRUE7QUFDQTtBQUNBOzs7QUMvT0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtBQUNBO0FBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0FBQ0E7QUFFQTtFQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7OztFQUdBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUNBOztFQUVBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUNBO0VBQ0E7QUFDQTtBQUVBO0FBQ0E7O0lBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7SUFFQTtBQUNBO0FBQ0E7SUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztJQUVBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9zdHlsZXMvYXBwLmNzcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYXBwL0FuaW1hdGUxLnZ1ZSIsIndlYnBhY2s6Ly8vLi9Mb2dpbkFuaW1hdGUudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9hcHAvQW5pbWF0ZUxvZ2luLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYXBwL0Nvbm5leGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2FwcC9zdGVwL2NvbmZpcm1QaG9uZS52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2FwcC9zdGVwL2lkZW50aWZ5LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYXBwL3N0ZXAvbG9naW5JbmZvLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYXBwL3N0ZXAvZm9yZmFpdC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2FwcC9zdGVwL2t5Yy52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2FwcC9zdGVwL2NvbmZpcm1hdGlvbi52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2FwcC9zdGVwL2RlcG90SW5pdGlhbC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2FwcC9zdGVwL3BheXBhbC52dWUiLCJ3ZWJwYWNrOi8vLy4vSW5zY3JpcHRpb24udnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9hcHAvcGFnZXMvY29tcG9uZW50cy9DaGF0Qm94LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYXBwL3BhZ2VzL2NvbXBvbmVudHMvTmF2YmFyL0Jhc2VTaWRlQmFyLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYXBwL3BhZ2VzL2NvbXBvbmVudHMvVXNlci52dWUiLCJ3ZWJwYWNrOi8vLy4vRGFzaEJvYXJkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYXBwL3BhZ2VzL2NvbXBvbmVudHMvTmF2YmFyL0Jhc2VOYXYudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9hcHAvcGFnZXMvY29tcG9uZW50cy9FbXB0eS52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2FwcC9wYWdlcy90cmFuc2FjdGlvbnMvbGlzdC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2FwcC9wYWdlcy90cmFuc2FjdGlvbnMvYWRkVHJhbnNhY3Rpb24udnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9hcHAvcGFnZXMvdHJhbnNhY3Rpb25zL2luZGV4LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYXBwL3BhZ2VzL2NhcnRlcy9jYXJkVmlldy52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2FwcC9wYWdlcy9jYXJ0ZXMvY29tbWFuZGVMaXN0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYXBwL1Jlc2V0LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYXBwL1Bhc3N3b3JkLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYXBwL3BhZ2VzL2NvbXB0ZS9pbmRleC52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2FwcC9wYWdlcy9Qcm9maWwudnVlIiwid2VicGFjazovLy8uL2Fzc2V0cy9hcHAvcGFnZXMvY2FydGVzL2NvbW1hbmRlU3VjY2Vzcy52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2FwcC9wYWdlcy9pbmZvcm1hdGlvbi9zZXJ2aWNlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9yZXF1ZXRlLnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYXBwL2NvbmZpcm1Mb2dpbi52dWUiLCJ3ZWJwYWNrOi8vLy4vYXNzZXRzL2FwcC9zdGVwL3BheWVtZW50LnZ1ZSIsIndlYnBhY2s6Ly8vLi9hc3NldHMvYXBwL3N0ZXAvaW5zY3JpcHRpb25TdWNjZXNzLnZ1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiB3aWR0aCAqL1xuOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiAxcHg7XG59XG5cbi8qIFRyYWNrICovXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHtcbiAgYmFja2dyb3VuZDogI2YxZjFmMTtcbn1cblxuLyogSGFuZGxlICovXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYmFja2dyb3VuZDogIzg4ODtcbn1cblxuLyogSGFuZGxlIG9uIGhvdmVyICovXG46Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogIzU1NTtcbn1cbi52LWFwcGxpY2F0aW9uLS13cmFwIHtcbiAgZmxleDogMSAxIGF1dG87XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYmFja2dyb3VuZDogI2U1ZTVlNTtcbn1cbi5idG5fYmxvY2sge1xuICBoZWlnaHQ6IDMwcHg7XG4gIHBhZGRpbmc6IDAgMTVweDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogMjlweDtcbiAgYmFja2dyb3VuZDogIzRjNGM0YztcbiAgYm94LXNoYWRvdzogMHB4IDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1zaXplOiBzbWFsbGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlLW91dDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cbi5idG5fYmxvY2s6aG92ZXIge1xuICBjb2xvcjogIzRjNGM0YztcbiAgYmFja2dyb3VuZDogI2ZmZjtcbn1cbi5idG5fb3V0bGluZV9yb3VuZGVkIHtcbiAgaGVpZ2h0OiAzMHB4O1xuICBwYWRkaW5nOiAwIDE1cHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNmOWY5Zjk7XG4gIGNvbG9yOiAjMDAwO1xuICBmb250LXNpemU6IHNtYWxsZXI7XG59XG4uYnRuX291dGxpbmUge1xuICBtaW4taGVpZ2h0OiAzMHB4O1xuICBwYWRkaW5nOiAwIDE1cHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYmFja2dyb3VuZDogI2ZmZjtcbiAgY29sb3I6ICM0YzRjNGM7XG4gIGZvbnQtc2l6ZTogc21hbGxlcjtcbiAgYm9yZGVyLXJhZGl1czogMjlweDtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgYm94LXNoYWRvdzogMHB4IDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlLW91dDtcbn1cbi5idG5fd2hpdGVfb3V0bGluZSB7XG4gIG1pbi1oZWlnaHQ6IDMwcHg7XG4gIHBhZGRpbmc6IDAgMTVweDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYm9yZGVyLXJhZGl1czogMTAwcHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xuICBjb2xvcjogIzFkMWQxZDtcbiAgZm9udC1zaXplOiBzbWFsbGVyO1xuICB0cmFuc2l0aW9uOiBhbGwgMC41cyBlYXNlLW91dDtcbn1cbi50aXRsZS1wYWdlIHtcbiAgY29sb3I6ICM4OGI5ZmY7XG59XG4uYnRuX3doaXRlIHtcbiAgbWluLWhlaWdodDogMzBweDtcbiAgcGFkZGluZzogMCAxNXB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXItcmFkaXVzOiAxMDBweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2RhZGFkYTtcbiAgY29sb3I6ICMxZDFkMWQ7XG4gIGZvbnQtc2l6ZTogc21hbGxlcjtcbiAgdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZS1vdXQ7XG59XG4uYnRuX291dGxpbmU6aG92ZXIge1xuICBjb2xvcjogI2ZmZjtcbiAgYmFja2dyb3VuZDogIzRjNGM0Yztcbn1cbi52cy10YWJsZV9fdGhfX2NvbnRlbnQge1xuICBmb250LXNpemU6IGxhcmdlcjtcbn1cbi52cy10YWJsZV9fdGQge1xuICBmb250LXNpemU6IHNtYWxsZXI7XG59XG4ubmF2LWxpbmsgLnJvdXRlci1saW5rLWV4YWN0LWFjdGl2ZSAucm91dGVyLWxpbmstYWN0aXZlIHtcbiAgY29sb3I6ICMxZDFkMWQ7XG4gIGZvbnQtc2l6ZTogc21hbGw7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xufVxuLm5hdi1pdGVtID4gLnJvdXRlci1saW5rLWV4YWN0LWFjdGl2ZSB7XG4gIGNvbG9yOiByZWQ7XG4gIGJhY2tncm91bmQ6ICMxZDFkMWQxZDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuLm5hdl9zdGlja3kge1xuICBwb3NpdGlvbjogLXdlYmtpdC1zdGlja3k7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMDtcbn1cbi5jdXN0b20tc2lkZUJhciA+IC5saXN0LXVuc3R5bGVkID4gbGkgPiBhIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwcmVtO1xuICBwYWRkaW5nOiA0cHggMTZweDtcbiAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBjb2xvcjogIzAwMDAwMGEzO1xuICBkaXNwbGF5OiBmbGV4O1xuICB3aWR0aDogMjAwcHg7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgZm9udC1zaXplOiAxMnB4O1xufVxuLmJ1dHRvbi1zaWduIHtcbiAgYmFja2dyb3VuZDogIzhhYjdmODtcbiAgYm9yZGVyLWNvbG9yOiAjOGFiN2Y4O1xufVxuLm1haW4ge1xuICBtYXJnaW4tbGVmdDogMjQxcHg7XG4gIG1hcmdpbi10b3A6IDAlO1xuICBiYWNrZ3JvdW5kOiAjZTVlNWU1ZTU7XG4gIG1pbi1oZWlnaHQ6IDEwMHZoO1xufVxuLmJnLWdyYXkgKyAubWFpbiB7XG4gIHBhZGRpbmctdG9wOiA2MHB4O1xufVxuLm5hdiB7XG4gIHdpZHRoOiAxMDAlO1xufVxuLmNhcmQge1xuICBwYWRkaW5nOiAzMHB4O1xuICBib3JkZXItcmFkaXVzOiAzMHB4O1xufVxuLnYtYXBwbGljYXRpb24gdWwge1xuICBwYWRkaW5nLWxlZnQ6IDBweDtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5zbmlwMTEzNSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gIH1cbiAgLm5hbWUge1xuICAgIGp1c3RpZnktY29udGVudDogc3RhcnQ7XG4gIH1cbiAgLmRyb3Age1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB0b3A6IDFyZW07XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgfVxuICAubmF2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAganVzdGlmeS1jb250ZW50OiBzdGFydDtcbiAgfVxuICAubWVudSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbiAgLmJhY2ssXG4gIC5mb3JtLXNpZ25pbiB7XG4gICAgaGVpZ2h0OiA1MHZoO1xuICB9XG59XG5cbi8qIE9uIHNjcmVlbnMgdGhhdCBhcmUgNjAwcHggb3IgbGVzcywgc2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIHRvIG9saXZlICovXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLm5hdiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICB9XG4gIC5iZy1ncmF5IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG4gIC5zbmlwMTEzNSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB9XG4gIC5sb2dvIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gIH1cbiAgLmRyb3Age1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDNyZW07XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgfVxuICAubWVudSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAuYmFjayxcbiAgLmZvcm0tc2lnbmluIHtcbiAgICBoZWlnaHQ6IDEwMHZoO1xuICB9XG59XG4uY2FyZF91c2VyIHtcbiAgd2lkdGg6IDQ1MHB4O1xuICBoZWlnaHQ6IDI1MHB4O1xuICBjb250YWluOiBsYXlvdXQ7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcbiAgbWFyZ2luLWxlZnQ6IDUlO1xufVxuLyogT24gc2NyZWVucyB0aGF0IGFyZSA5OTJweCBvciBsZXNzLCBzZXQgdGhlIGJhY2tncm91bmQgY29sb3IgdG8gYmx1ZSAqL1xuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJhbmltYXRpb24wMVwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJob21idXNfc21hbGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJob21idXNcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiYm9yZGVyX2JveFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsaW5lIGxpbmUwMVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibGluZSBsaW5lMDJcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpbmUgbGluZTAzXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsaW5lIGxpbmUwNFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2lyY2xlIGNpcmNsZTAxXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaXJjbGUgY2lyY2xlMDJcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNpcmNsZSBjaXJjbGUwM1wiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2lyY2xlIGNpcmNsZTA0XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbmltYXRpb25fbGluZSBhbmltYXRpb25fbGluZTAxXCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbmltYXRpb25fbGluZV93cmFwcGVyIGFuaW1hdGlvbl9saW5lMDJfd3JhcHBlclwiXG4gICAgICAgICAgICAgID48c3BhbiBjbGFzcz1cImFuaW1hdGlvbl9saW5lIGFuaW1hdGlvbl9saW5lMDJcIj48L3NwYW5cbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFuaW1hdGlvbl9saW5lIGFuaW1hdGlvbl9saW5lMDNcIj48L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFuaW1hdGlvbl9saW5lX3dyYXBwZXIgYW5pbWF0aW9uX2xpbmUwNF93cmFwcGVyXCJcbiAgICAgICAgICAgICAgPjxzcGFuIGNsYXNzPVwiYW5pbWF0aW9uX2xpbmUgYW5pbWF0aW9uX2xpbmUwNFwiPjwvc3BhblxuICAgICAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYW5pbWF0aW9uX2xpbmUgYW5pbWF0aW9uX2xpbmUwNVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYW5pbWF0aW9uX2xpbmVfd3JhcHBlciBhbmltYXRpb25fbGluZTA2X3dyYXBwZXJcIlxuICAgICAgICAgICAgICA+PHNwYW4gY2xhc3M9XCJhbmltYXRpb25fbGluZSBhbmltYXRpb25fbGluZTA2XCI+PC9zcGFuXG4gICAgICAgICAgICA+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbmltYXRpb25fbGluZSBhbmltYXRpb25fbGluZTA3XCI+PC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhbmltYXRpb25fbGluZV93cmFwcGVyIGFuaW1hdGlvbl9saW5lMDhfd3JhcHBlclwiXG4gICAgICAgICAgICAgID48c3BhbiBjbGFzcz1cImFuaW1hdGlvbl9saW5lIGFuaW1hdGlvbl9saW5lMDhcIj48L3NwYW5cbiAgICAgICAgICAgID48L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndhdmVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YXZlX3dyYXBwZXJcIj48ZGl2IGNsYXNzPVwid2F2ZV9ib3hcIj48L2Rpdj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiYW5pbWF0aW9uMDJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyaG9tYnVzX2JveFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInJob21idXNfaXRlbV93cmFwcGVyIHJob21idXNfaXRlbTAxX3dyYXBwZXJcIlxuICAgICAgICAgID48c3BhbiBjbGFzcz1cInJob21idXNfaXRlbVwiPjwvc3BhblxuICAgICAgICA+PC9zcGFuPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInJob21idXNfaXRlbV93cmFwcGVyIHJob21idXNfaXRlbTAyX3dyYXBwZXJcIlxuICAgICAgICAgID48c3BhbiBjbGFzcz1cInJob21idXNfaXRlbVwiPjwvc3BhblxuICAgICAgICA+PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZG91YmxlX2NvbnRlbnRcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRvdWJsZV93cmFwcGVyMDIgZG90dGVkMDJcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZG90dGVkX2hpZGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb3VibGVfd3JhcHBlcjAxIGRvdHRlZDAxXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZG90dGVkX3JpZ2h0XCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZG91YmxlX3dyYXBwZXIwMiB3aGl0ZTAyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRvdWJsZV93cmFwcGVyMDEgd2hpdGUwMVwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRvdWJsZV93cmFwcGVyMDIgZ3JheTAyXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImRvdWJsZV93cmFwcGVyMDEgZ3JheTAxXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZG91YmxlX3dyYXBwZXIwMiBvcmFuZ2UwMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJkb3VibGVfd3JhcHBlcjAxIG9yYW5nZTAxXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibmFtZVwiPlxuICAgICAgICA8cD5WQVpJVkE0QUxMPC9wPlxuICAgICAgICA8c3BhbiBjbGFzcz1cIm5hbWVfY2lyY2xlMDFcIj48L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwibmFtZV9jaXJjbGUwMlwiPjwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c3R5bGUgc2NvcGVkPlxuLnZ1ZXRpZnktbG9nbyB7XG4gIGhlaWdodDogMTgwcHg7XG4gIHdpZHRoOiAxODBweDtcbiAgdHJhbnNmb3JtOiByb3RhdGVZKDU2MGRlZyk7XG4gIGFuaW1hdGlvbjogdHVybiA1LjVzIGVhc2Utb3V0IGZvcndhcmRzIDFzO1xufVxuXG5Aa2V5ZnJhbWVzIHR1cm4ge1xuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZVkoMGRlZyk7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCJcblxuXG5cblxuXG4udmF6aXZhe1xuXHR0cmFuc2Zvcm06cm90YXRlWSg1NjBkZWcpO1xuXHRhbmltYXRpb246dHVybiA1LjVzIGVhc2Utb3V0IGZvcndhcmRzIGluZmluaXRlO1xufVxuQGtleWZyYW1lcyB0dXJuIHtcblx0MTAwJXtcblx0XHR0cmFuc2Zvcm06cm90YXRlWSgwZGVnKVxuXHR9XG59XG4iLCI8dGVtcGxhdGU+XG48ZGl2IGNsYXNzPVwiYm9keVwiPlxuXHQ8ZGl2IGNsYXNzPVwiY3ViZVwiPlxuXHRcdDxkaXY+PC9kaXY+IFxuXHRcdDxkaXY+VkFaSVZBNEFMTDwvZGl2PlxuXHRcdDxkaXY+PC9kaXY+XG5cdFx0PGRpdj48L2Rpdj4gXG5cdFx0PGRpdj5WQVpJVkE0QUxMPC9kaXY+XG5cdFx0PGRpdj48L2Rpdj5cblx0PC9kaXY+XG48L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0PlxuXHRcbjwvc2NyaXB0PlxuPHN0eWxlIHNjb3BlZD5cbi5ib2R5IHtcblx0YmFja2dyb3VuZC1jb2xvcjogI2Y5ZjlmNztcblx0aGVpZ2h0OiAxMDB2aDtcblx0cGVyc3BlY3RpdmU6IDEwMDBweDtcblx0ZGlzcGxheTogZmxleDtcblx0YWxpZ24taXRlbXM6IGNlbnRlcjtcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG4uY3ViZSB7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0d2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4O1xuXHR0cmFuc2Zvcm0tc3R5bGU6IHByZXNlcnZlLTNkO1xuXHR0cmFuc2Zvcm06IHJvdGF0ZXgoLTIwZGVnKSByb3RhdGV5KC0xNDBkZWcpIHRyYW5zbGF0ZXooMCk7XG5cdGFuaW1hdGlvbjogcm90YXRlIDgwMDBtcyBsaW5lYXIgaW5maW5pdGU7XG59XG4uY3ViZSBkaXYge1xuXHRkaXNwbGF5OmZsZXg7XG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xuXHRwb3NpdGlvbjogYWJzb2x1dGU7XG5cdHRvcDogMDsgbGVmdDogMDtcblx0d2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4O1xuXHRvcGFjaXR5OiAwLjc1O1xuXHRjb2xvcjogI2ZmZjtcblx0Zm9udC1zaXplOm1lZGl1bVxufVxuLmN1YmUgZGl2Om50aC1jaGlsZCgxKXtcblx0YmFja2dyb3VuZDogI2ZmY2M4MDtcblx0dHJhbnNmb3JtOiByb3RhdGV4KDkwZGVnKSB0cmFuc2xhdGV5KC0xMDBweCk7XG5cdHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciB0b3A7XG5cdGFuaW1hdGlvbjogdG9wIDQwMDBtcyBlYXNlLWluLW91dCA4MDAwbXMgaW5maW5pdGU7XG59XG4uY3ViZSBkaXY6bnRoLWNoaWxkKDIpe1xuXHRiYWNrZ3JvdW5kOiAjZmZiNzRkO1x0XG5cdHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBib3R0b207XG5cdHRyYW5zZm9ybTogcm90YXRleCgtOTBkZWcpIHRyYW5zbGF0ZXkoMTAwcHgpO1xuXHRhbmltYXRpb246IGJvdHRvbSA0MDAwbXMgZWFzZS1pbi1vdXQgODAwMG1zIGluZmluaXRlO1xufVxuLmN1YmUgZGl2Om50aC1jaGlsZCgzKXtcblx0YmFja2dyb3VuZDogI2ZmYTcyNjtcblx0dHJhbnNmb3JtLW9yaWdpbjogbGVmdCBjZW50ZXI7XG5cdHRyYW5zZm9ybTogcm90YXRlWSgtOTBkZWcpIHRyYW5zbGF0ZVgoLTEwMHB4KTtcblx0YW5pbWF0aW9uOiBsZWZ0IDQwMDBtcyBlYXNlLWluLW91dCA4MDAwbXMgaW5maW5pdGU7XG59XG4uY3ViZSBkaXY6bnRoLWNoaWxkKDQpe1xuXHRiYWNrZ3JvdW5kOiAjZmY5ODAwO1xuXHR0cmFuc2Zvcm0tb3JpZ2luOiByaWdodCBjZW50ZXI7XG5cdHRyYW5zZm9ybTogcm90YXRlWSg5MGRlZykgdHJhbnNsYXRlWCgxMDBweCk7XG5cdGFuaW1hdGlvbjogcmlnaHQgNDAwMG1zIGVhc2UtaW4tb3V0IDgwMDBtcyBpbmZpbml0ZTtcbn1cbi5jdWJlIGRpdjpudGgtY2hpbGQoNSl7XG5cdGJhY2tncm91bmQ6ICNmYjhjMDA7XG5cdHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7XG5cdHRyYW5zZm9ybTogcm90YXRlWCgwZGVnKTtcblx0YW5pbWF0aW9uOiBmcm9udCA0MDAwbXMgZWFzZS1pbi1vdXQgODAwMG1zIGluZmluaXRlO1xufVxuLmN1YmUgZGl2Om50aC1jaGlsZCg2KXtcblx0YmFja2dyb3VuZDogI2Y1N2MwMDtcblx0dHJhbnNmb3JtLW9yaWdpbjogY2VudGVyIGNlbnRlcjtcblx0dHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZykgdHJhbnNsYXRleigxMDBweCk7XG5cdGFuaW1hdGlvbjogYmFjayA0MDAwbXMgZWFzZS1pbi1vdXQgODAwMG1zIGluZmluaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIHJvdGF0ZSB7XG5cdDAlIHt0cmFuc2Zvcm06IHJvdGF0ZXgoMCkgcm90YXRleSgwKSByb3RhdGV6KDApIHRyYW5zbGF0ZXooMCkgfVxuXHQxMDAlIHt0cmFuc2Zvcm06IHJvdGF0ZXgoMzYwZGVnKSByb3RhdGV5KDM2MGRlZykgcm90YXRleigzNjBkZWcpIHRyYW5zbGF0ZXooMCl9XG59XG5cbkBrZXlmcmFtZXMgdG9wIHtcblx0MCUgICB7dHJhbnNmb3JtOiByb3RhdGV4KDkwZGVnKSB0cmFuc2xhdGV5KC0xMDBweCkgdHJhbnNsYXRleigwKTt9XG5cdDUwJSAge3RyYW5zZm9ybTogcm90YXRleCg5MGRlZykgdHJhbnNsYXRleSgtMTAwcHgpIHRyYW5zbGF0ZXooMTAwcHgpO31cblx0MTAwJSB7dHJhbnNmb3JtOiByb3RhdGV4KDkwZGVnKSB0cmFuc2xhdGV5KC0xMDBweCkgdHJhbnNsYXRleigwKTt9XG59XG5cbkBrZXlmcmFtZXMgYm90dG9tIHtcblx0MCUgICB7dHJhbnNmb3JtOiByb3RhdGV4KC05MGRlZykgdHJhbnNsYXRleSgxMDBweCkgdHJhbnNsYXRleigwKTt9XG5cdDUwJSAge3RyYW5zZm9ybTogcm90YXRleCgtOTBkZWcpIHRyYW5zbGF0ZXkoMTAwcHgpIHRyYW5zbGF0ZXooMTAwcHgpO31cblx0MTAwJSB7dHJhbnNmb3JtOiByb3RhdGV4KC05MGRlZykgdHJhbnNsYXRleSgxMDBweCkgdHJhbnNsYXRleigwKTt9XG59XG5cbkBrZXlmcmFtZXMgbGVmdCB7XG5cdDAlICAge3RyYW5zZm9ybTogcm90YXRlWSgtOTBkZWcpIHRyYW5zbGF0ZVgoLTEwMHB4KSBzY2FsZVkoMSk7fVxuXHQ1MCUgIHt0cmFuc2Zvcm06IHJvdGF0ZVkoLTkwZGVnKSB0cmFuc2xhdGVYKC0xMDBweCkgc2NhbGVZKDMpO31cblx0MTAwJSB7dHJhbnNmb3JtOiByb3RhdGVZKC05MGRlZykgdHJhbnNsYXRlWCgtMTAwcHgpIHNjYWxlWSgxKTt9XG59XG5cbkBrZXlmcmFtZXMgcmlnaHQge1xuXHQwJSAgIHt0cmFuc2Zvcm06IHJvdGF0ZVkoOTBkZWcpIHRyYW5zbGF0ZVgoMTAwcHgpIHNjYWxlWSgxKTt9XG5cdDUwJSAge3RyYW5zZm9ybTogcm90YXRlWSg5MGRlZykgdHJhbnNsYXRlWCgxMDBweCkgc2NhbGVZKDMpO31cblx0MTAwJSB7dHJhbnNmb3JtOiByb3RhdGVZKDkwZGVnKSB0cmFuc2xhdGVYKDEwMHB4KSBzY2FsZVkoMSk7fVxufVxuXG5Aa2V5ZnJhbWVzIGZyb250IHtcblx0MCUgICB7dHJhbnNmb3JtOiByb3RhdGVYKDBkZWcpIHNjYWxlWSgxKTt9XG5cdDUwJSAge3RyYW5zZm9ybTogcm90YXRlWCgwZGVnKSBzY2FsZVkoMyk7fVxuXHQxMDAlIHt0cmFuc2Zvcm06IHJvdGF0ZVgoMGRlZykgc2NhbGVZKDEpO31cbn1cblxuQGtleWZyYW1lcyBiYWNrIHtcblx0MCUgICB7dHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZykgdHJhbnNsYXRleigxMDBweCkgc2NhbGVZKDEpO31cblx0NTAlICB7dHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZykgdHJhbnNsYXRleigxMDBweCkgc2NhbGVZKDMpO31cblx0MTAwJSB7dHJhbnNmb3JtOiByb3RhdGVZKDE4MGRlZykgdHJhbnNsYXRleigxMDBweCkgc2NhbGVZKDEpO31cbn1cbjwvc3R5bGU+XG5cbiIsIjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtc20tMTIgcC0wXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTcgY29scy0xMiBjb2wtc20tMTIgY29sLXhzLTEyIHByLTAgcGwtMCBwdC0wIHBiLTBcIj5cclxuICAgICAgICAgIDxtYWluIGNsYXNzPVwiZm9ybS1zaWduaW5cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGVmdFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiPlxyXG4gICAgICAgICAgICAgICAgPGltZ1xyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1iLTQgdGV4dC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICBzcmM9XCIvaW1hZ2VzL2xvZ292NC5wbmdcIlxyXG4gICAgICAgICAgICAgICAgICBhbHQ9XCJcIlxyXG4gICAgICAgICAgICAgICAgICB3aWR0aD1cIjUwXCJcclxuICAgICAgICAgICAgICAgICAgaGVpZ2h0PVwiNTBcIlxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgbWItMTBcIj5cclxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiL2ltYWdlcy92NGFsbC1sb2dvLnBuZ1wiIHdpZHRoPVwiMTAwcHhcIiAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICA8aDEgY2xhc3M9XCJoMyBtYi0zIGZ3LW5vcm1hbCB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8Yj5CaWVudmVudWUgITwvYj5cclxuICAgICAgICAgICAgICAgIDwvaDE+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24tY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwhLS1Db25uZXhpb24gYXZlYyBsZSBudW3DqXJvIGRlIHTDqWzDqXBob25lLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbS0yIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgZm9yPVwiZmxvYXRpbmdJbnB1dFwiIGNsYXNzPVwidGV4dC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+VMOpbMOpcGhvbmU8L3NtYWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8VnVlUGhvbmVOdW1iZXJJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwibW9iaWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgQHVwZGF0ZT1cInVwZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDp0cmFuc2xhdGlvbnM9XCJ0cmFuc2xhdGlvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGVhcmFibGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwicGhvbmVDbGFzc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgdGV4dFZhbGlkYXRpb25QaG9uZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQgcC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cIm1iLTBcIj5PVTwvaDY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLUNvbm5leGlvbiBhdmVjIGwnZW1haWwgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbS0yIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgZm9yPVwiZmxvYXRpbmdJbnB1dFwiPkVtYWlsPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZW1haWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJgZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1tZCAke2VtYWlsQ2xhc3N9YFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZmxvYXRpbmdJbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwibmFtZUBleGFtcGxlLmNvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJlbWFpbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEBrZXlkb3duPVwiZW1haWxDbGFzcyA9ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0VmFsaWRhdGlvbkVtYWlsIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLUxlIG1vdCBkZSBwYXNzZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtLTIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBmb3I9XCJmbG9hdGluZ1Bhc3N3b3JkXCI+TW90IGRlIHBhc3NlPC9zbWFsbD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgbWItM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6dHlwZT1cInR5cGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cImAke3Bhc3N9IGZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtbWRgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImZsb2F0aW5nUGFzc3dvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiUGFzc3dvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJwYXNzd29yZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cC1hcHBlbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHRcIiBpZD1cImJhc2ljLWFkZG9uMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtZGkgbWRpLWV5ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYtaWY9XCJzaG93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwic2hvd1Bhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvaVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibWRpIG1kaS1leWUtb2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdi1lbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjbGljaz1cInNob3dQYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2lcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0ZXh0VmFsaWRhdGlvblBhc3N3b3JkIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLWVuZC0tPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwhLS1lbmQgZW1haWwtLT5cclxuICAgICAgICAgICAgICAgICAgPCEtLUNvbm5leGlvbi0tPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInctMTAwIGJ0biBidG4tc20gYnV0dG9uLXNpZ24gbXQtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgQGNsaWNrPVwiY29ubmV4aW9uXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIENvbm5leGlvblxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS1Nb3QgZGUgcGFzc2Ugb3VibGnDqSAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzbWFsbFxyXG4gICAgICAgICAgICAgICAgICAgID48YSBjbGFzcz1cInRleHQtcHJpbWFyeSB0ZXh0LXNtYWxsXCIgQGNsaWNrPVwicmVzZXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgPk1vdCBkZSBwYXNzZSBvdWJsacOpXHJcbiAgICAgICAgICAgICAgICAgICAgPC9hPjwvc21hbGxcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGhyIC8+XHJcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc21hbGwgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPHNtYWxsPiBWb3VzIG4nYXZleiBwYXMgZW5jb3JlIGRlIGNvbXB0ZT8gPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICAgIDwhLS0gQ3LDqWF0aW9uIGRlIGNvbXB0ZSAtLT5cclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1zbWFsbCB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8c21hbGw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgQGNsaWNrPVwiY3JlYXRlZFwiIGNsYXNzPVwidGV4dC1wcmltYXJ5XCI+Q3LDqWVyIHVuIGNvbXB0ZTwvYT5cclxuICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cclxuICAgICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L21haW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy01IGNvbHMtMTIgYmFjayBwdC0wIHBiLTBcIj5cclxuICAgICAgICAgIDxsb2dpbi1hbmltYXRlIC8+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5pbXBvcnQgc3RvcmUgZnJvbSBcIi4uL2FwcC9zdG9yZVwiO1xyXG5pbXBvcnQgQW5pbWF0ZTEgZnJvbSBcIi4vQW5pbWF0ZTEudnVlXCI7XHJcbmltcG9ydCB7IFZhbGlkYXRlRW1haWwgfSBmcm9tIFwiLi4vY29tbW9uLmpzL3ZlcmlmeVwiO1xyXG5pbXBvcnQgTUFJTl9VUkwgZnJvbSBcIi4uL2NvbW1vbi5qcy9tYWluVXJsXCI7XHJcbmltcG9ydCB7IGhlYWRlcnMgfSBmcm9tIFwiLi4vY29tbW9uLmpzL2hlYWRlclwiO1xyXG5pbXBvcnQgQ29uc3RhbnQgZnJvbSBcIi4vc3RvcmUvY29uc3RhbnRcIjtcclxuaW1wb3J0IFZ1ZVBob25lTnVtYmVySW5wdXQgZnJvbSBcInZ1ZS1waG9uZS1udW1iZXItaW5wdXRcIjtcclxuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xyXG5pbXBvcnQgTG9naW5BbmltYXRlIGZyb20gXCIuL0xvZ2luQW5pbWF0ZS52dWVcIjtcclxuaW1wb3J0IEFuaW1hdGVMb2dpbiBmcm9tIFwiLi9BbmltYXRlTG9naW4udnVlXCI7XHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBzdG9yZSxcclxuICBjb21wb25lbnRzOiB7IEFuaW1hdGUxLCBWdWVQaG9uZU51bWJlcklucHV0LCBMb2dpbkFuaW1hdGUsIEFuaW1hdGVMb2dpbiB9LFxyXG4gIGRhdGEoKSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBjb2RlOiBcIlwiLFxyXG4gICAgICBwYXNzOiBcIlwiLFxyXG4gICAgICBzaG93OiB0cnVlLFxyXG4gICAgICB0eXBlOiBcInBhc3N3b3JkXCIsXHJcbiAgICAgIHRleHRWYWxpZGF0aW9uUGhvbmU6IFwiXCIsXHJcbiAgICAgIHRleHRWYWxpZGF0aW9uUGFzc3dvcmQ6IFwiXCIsXHJcbiAgICAgIGVtYWlsQ2xhc3M6IFwiXCIsXHJcbiAgICAgIHRleHRWYWxpZGF0aW9uRW1haWw6IFwiXCIsXHJcbiAgICAgIGVtYWlsQ2xhc3M6IFwiXCIsXHJcbiAgICAgIHBob25lQ2xhc3M6IFwiXCIsXHJcbiAgICAgIG1vYmlsZTogXCJcIixcclxuICAgICAgdmVyaWZQaG9uZTogZmFsc2UsXHJcbiAgICAgIHRyYW5zbGF0aW9uczoge1xyXG4gICAgICAgIGNvdW50cnlTZWxlY3RvckxhYmVsOiBcIkNvZGUgcGF5c1wiLFxyXG4gICAgICAgIGNvdW50cnlTZWxlY3RvckVycm9yOiBcIkNob2lzaXIgdW4gcGF5c1wiLFxyXG4gICAgICAgIHBob25lTnVtYmVyTGFiZWw6IFwiTnVtw6lybyBkZSB0w6lsw6lwaG9uZVwiLFxyXG4gICAgICAgIGV4YW1wbGU6IFwiRXhlbXBsZSA6XCIsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gIH0sXHJcblxyXG4gIGNvbXB1dGVkOiB7XHJcbiAgICBwaG9uZToge1xyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0UGhvbmU7XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRQaG9uZVwiLCB2YWwpO1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGVtYWlsOiB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRFbWFpbDtcclxuICAgICAgfSxcclxuICAgICAgc2V0KHZhbCkge1xyXG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldEVtYWlsXCIsIHZhbCk7XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgcGFzc3dvcmQ6IHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFBhc3N3b3JkO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsKSB7XHJcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0UGFzc3dvcmRcIiwgdmFsKTtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICB1aWQ6IHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFVpZDtcclxuICAgICAgfSxcclxuICAgICAgc2V0KHZhbCkge1xyXG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldFVpZFwiLCB2YWwpO1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIHRva2VuOiB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRUb2tlbjtcclxuICAgICAgfSxcclxuICAgICAgc2V0KHZhbCkge1xyXG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldFRva2VuXCIsIHZhbCk7XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgcmVmcmVzaDoge1xyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0UmVmcmVzaFRva2VuO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsKSB7XHJcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0UmVmcmVzaFRva2VuXCIsIHZhbCk7XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgY29kZVN0YXR1czoge1xyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Q29kZVN0YXR1cztcclxuICAgICAgfSxcclxuICAgICAgc2V0KHZhbCkge1xyXG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldENvZGVTdGF0dXNcIiwgdmFsKTtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICBtZXNzYWdlU3RhdHVzOiB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRNZXNzYWdlU3RhdHVzO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsKSB7XHJcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0TWVzc2FnZVN0YXR1c1wiLCB2YWwpO1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIHRleHRTdGF0dXM6IHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFRleHRTdGF0dXM7XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRUZXh0U3RhdHVzXCIsIHZhbCk7XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgbGF0aXR1ZGU6IHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldExhdGl0dWRlO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsKSB7XHJcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0TGF0aXR1ZGVcIiwgdmFsKTtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICBsb2dpdHVkZToge1xyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0TG9naXR1ZGU7XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRMb2dpdHVkZVwiLCB2YWwpO1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGxvYWRpbmc6IHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldExvYWRpbmc7XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRMb2FkaW5nXCIsIHZhbCk7XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gIH0sXHJcbiAgd2F0Y2g6IHtcclxuICAgIGNvZGVTdGF0dXModmFsKSB7XHJcbiAgICAgIHN3aXRjaCAodmFsKSB7XHJcbiAgICAgICAgY2FzZSAyMDE6XHJcbiAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFwidG9rZW5cIiwgdGhpcy50b2tlbik7XHJcbiAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFwidWlkXCIsIHRoaXMudWlkKTtcclxuICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXCJyZWZyZXNoXCIsIHRoaXMucmVmcmVzaCk7XHJcbiAgICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaChcIi9kYXNoXCIpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfSxcclxuICB9LFxyXG4gIG1ldGhvZHM6IHtcclxuICAgIGxvYWQoKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRoaXMuJHZzLmxvYWRpbmcoe1xyXG4gICAgICAgIGJhY2tncm91bmQ6IFwiIzdhNzZjYlwiLFxyXG4gICAgICAgIGNvbG9yOiBcIiNmZmZcIixcclxuICAgICAgICB0ZXh0OiBcIlZldWlsbGV6IHBhdGllbnRlclwiLFxyXG4gICAgICAgIHR5cGU6IFwic2NhbGVcIixcclxuICAgICAgfSk7XHJcbiAgICB9LFxyXG4gICAgc2hvd1Bhc3MoKSB7XHJcbiAgICAgIGlmICh0aGlzLnNob3cgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMudHlwZSA9IFwidGV4dFwiO1xyXG4gICAgICAgIHRoaXMuc2hvdyA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudHlwZSA9IFwicGFzc3dvcmRcIjtcclxuICAgICAgICB0aGlzLnNob3cgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgb25GaW5pc2goKSB7fSxcclxuXHJcbiAgICAvL0NyZWF0aW9uIGRlIGNvbXB0ZVxyXG4gICAgY3JlYXRlZCgpIHtcclxuICAgICAgdGhpcy4kcm91dGVyLnB1c2goXCIvaW5zY3JpcHRpb25cIik7XHJcbiAgICB9LFxyXG5cclxuICAgIC8vUmVzZXQgbW90IGRlIHBhc3NlXHJcbiAgICByZXNldCgpIHtcclxuICAgICAgdGhpcy4kcm91dGVyLnB1c2goXCIvcmVzZXRfcGFzc3dvcmRcIik7XHJcbiAgICB9LFxyXG5cclxuICAgIC8vZm9ybWF0dGVyIGxlICBudW3DqXJvIGRlIHTDqWzDqXBob25lXHJcbiAgICB1cGRhdGUoZXZlbnQpIHtcclxuICAgICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy52ZXJpZlBob25lID0gZXZlbnQuaXNWYWxpZCA/IGV2ZW50LmlzVmFsaWQgOiBmYWxzZTtcclxuICAgICAgICB0aGlzLnBob25lID0gZXZlbnQuZm9ybWF0dGVkTnVtYmVyID8gZXZlbnQuZm9ybWF0dGVkTnVtYmVyIDogXCJcIjtcclxuICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICAvL2xlcyBub3RpZmljYXRpb25zXHJcbiAgICBvcGVuTm90aWZpY2F0aW9uKHRpdGxlLCB0ZXh0LCBjb2xvciwgcG9zaXRpb24gPSBcInRvcC1yaWdodFwiLCBpY29uID0gbnVsbCkge1xyXG4gICAgICBjb25zdCBub3RpID0gdGhpcy4kdnMubm90aWZpY2F0aW9uKHtcclxuICAgICAgICBpY29uLFxyXG4gICAgICAgIGNvbG9yLFxyXG4gICAgICAgIHBvc2l0aW9uLFxyXG4gICAgICAgIHRpdGxlLFxyXG4gICAgICAgIHRleHQsXHJcbiAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIC8vQ29ubmV4aW9uXHJcbiAgICBjb25uZXhpb24oKSB7XHJcbiAgICAgIC8vVmVyaWZpY2F0aW9uIGRlIG51bcOpcm8gZGUgdMOpbMOpcGhvbmVcclxuICAgICAgaWYgKCF0aGlzLnBob25lICYmICF0aGlzLmVtYWlsKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub3Blbk5vdGlmaWNhdGlvbihcclxuICAgICAgICAgIFwiT29wc1wiLFxyXG4gICAgICAgICAgXCJ2ZXVpbGxleiByZW5zZWlnbmVyIHVuIGlkZW50aWZpYW50XCJcclxuICAgICAgICApO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMucGhvbmUpIHtcclxuICAgICAgICBpZiAoIXRoaXMudmVyaWZQaG9uZSkge1xyXG4gICAgICAgICAgdGhpcy50ZXh0VmFsaWRhdGlvblBob25lID0gXCJOdW3DqXJvIGRlIHTDqWzDqXBob25lIGluY29ycmVjdGVcIjtcclxuICAgICAgICAgIHRoaXMucGhvbmVDbGFzcyA9IFwiaXMtaW52YWxpZFwiO1xyXG4gICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudGV4dFZhbGlkYXRpb25QaG9uZSA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5waG9uZUNsYXNzID0gXCJpcy12YWxpZFwiO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuZW1haWwpIHtcclxuICAgICAgICAvL1bDqXJpZmljYXRpb24gZGUgbGEgdmFsaWRhdGlvbiBkdSBudW3DqXJvIGRlIHTDqWzDqXBob25lXHJcblxyXG4gICAgICAgIGlmICghVmFsaWRhdGVFbWFpbCh0aGlzLmVtYWlsKSkge1xyXG4gICAgICAgICAgdGhpcy50ZXh0VmFsaWRhdGlvbkVtYWlsID0gXCJMJ2FkcmVzc2UgZW1haWwgZXN0IGludmFsaWRcIjtcclxuICAgICAgICAgIHRoaXMuZW1haWxDbGFzcyA9IFwiaXMtaW52YWxpZFwiO1xyXG4gICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW1haWxDbGFzcyA9IFwiaXMtdmFsaWRcIjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy9WZXJpZmljYXRpb24gZGUgbW90IGRlIHBhc3NlXHJcbiAgICAgIGlmICghdGhpcy5wYXNzd29yZCkge1xyXG4gICAgICAgIHRoaXMudGV4dFZhbGlkYXRpb25QYXNzd29yZCA9IFwiTGUgbW90IGRlIHBhc3NlIGVzdCBvYmxpZ2F0b2lyZVwiO1xyXG4gICAgICAgIHRoaXMucGFzcyA9IFwiaXMtaW52YWxpZFwiO1xyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvL2xvYWRpbmdcclxuICAgICAgdGhpcy5sb2FkKCk7XHJcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gYXhpb3MuY3JlYXRlKHtcclxuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiLFxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vbGVzIGRhdGEgcG91ciBsYSBjb25uZXhpb24gYXZlYyBsZSBudW3DqXJvIGRlIHTDqWzDqXBob25lXHJcbiAgICAgIGNvbnN0ICRkYXRhMSA9IHtcclxuICAgICAgICBtb2JpbGVQaG9uZTogdGhpcy5waG9uZSxcclxuICAgICAgICBwYXNzd29yZDogdGhpcy5wYXNzd29yZCxcclxuICAgICAgICByZXR1cm5Vcmw6IHdpbmRvdy5sb2NhdGlvbi5ocmVmICsgXCJjb25maXJtTG9naW5cIixcclxuICAgICAgfTtcclxuXHJcbiAgICAgIC8vbGVzIGRhdGEgcG91ciBsYSBjb25uZXhpb24gYXZlYyBsJ2VtYWlsXHJcbiAgICAgIGNvbnN0ICRkYXRhMiA9IHtcclxuICAgICAgICBwYXNzd29yZDogdGhpcy5wYXNzd29yZCxcclxuICAgICAgICBlbWFpbDogdGhpcy5lbWFpbCxcclxuICAgICAgICByZXR1cm5Vcmw6IHdpbmRvdy5sb2NhdGlvbi5ocmVmICsgXCJjb25maXJtTG9naW5cIixcclxuICAgICAgfTtcclxuICAgICAgbGV0ICRkYXRhO1xyXG4gICAgICBpZiAodGhpcy5lbWFpbCkge1xyXG4gICAgICAgICRkYXRhID0gJGRhdGEyO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgICRkYXRhID0gJGRhdGExO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvL0xlIGhlYWRlclxyXG4gICAgICBjb25zdCBoZWFkZXIgPSBoZWFkZXJzKCk7XHJcblxyXG4gICAgICAvL0xhIHJlcXVldGVcclxuICAgICAgaW5zdGFuY2VcclxuICAgICAgICAucG9zdChNQUlOX1VSTC5DT05ORVhJT04sICRkYXRhLCBoZWFkZXIpXHJcbiAgICAgICAgLnRoZW4oKGUpID0+IHtcclxuICAgICAgICAgIGNvbnN0ICRkYXRhID0gZS5kYXRhO1xyXG4gICAgICAgICAgaWYgKCRkYXRhKSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9rZW4gPSAkZGF0YS5zZXNzaW9uVG9rZW47XHJcblxyXG4gICAgICAgICAgICAvL2xlIHRva2VuXHJcbiAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXCJ0b2tlblwiLCAkZGF0YS5zZXNzaW9uVG9rZW4pO1xyXG5cclxuICAgICAgICAgICAgLy9sYSByZWRpcmVjdGlvblxyXG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICRkYXRhLnJlZGlyZWN0VXJsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKChlKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCAkZGF0YSA9IGUucmVzcG9uc2UucmVxdWVzdC5yZXNwb25zZTtcclxuICAgICAgICAgIGNvbnN0IHggPSBKU09OLnBhcnNlKCRkYXRhKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZy5jbG9zZSgpO1xyXG4gICAgICAgICAgaWYgKHguY29kZSkge1xyXG4gICAgICAgICAgICBpZiAoeC5jb2RlID09IFwiR0xPQkFMX1ZBTElEQVRJT05fRVJST1JcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMub3Blbk5vdGlmaWNhdGlvbihcIk9vcHNcIiwgeC5kZXRhaWxzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoeC5jb2RlID09IFwiQVVUSF9BQ0NPVU5UX05PVF9FWElTVEVOVFwiKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuICh0aGlzLnRleHRWYWxpZGF0aW9uUGhvbmUgPSBcIkxlIGNvbXB0ZSBuJ2V4aXRlIHBhc1wiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoeC5jb2RlID09IFwiQVVUSF9JTlZBTElEX1BBU1NXT1JEXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLnRleHRWYWxpZGF0aW9uUGFzc3dvcmQgPSBcIkxlIG1vdCBkZSBwYXNzZSBlc3QgaW5jb3JyZWN0ZVwiO1xyXG4gICAgICAgICAgICAgIHRoaXMucGFzcyA9IFwiaXMtaW52YWxpZFwiO1xyXG4gICAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9LFxyXG4gIH0sXHJcbn07XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIHNjb3BlZD5cclxuLmNhcmQge1xyXG4gIHBhZGRpbmc6IDBweDtcclxuICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbn1cclxuLmlucHV0LWdyb3VwLXRleHQge1xyXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDAuMjVyZW07XHJcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07XHJcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgYm9yZGVyLWxlZnQ6IDBweDtcclxuICBwYWRkaW5nOiA1LjVweDtcclxuICBmb250LXNpemU6IDFyZW07XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAvKiBsaW5lLWhlaWdodDogMS41OyAqL1xyXG4gIGNvbG9yOiAjMjEyNTI5O1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIC8qIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07ICovXHJcbn1cclxuLmJhY2sge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIGJhY2tncm91bmQ6ICNjOGRkZmI7XHJcbiAgaGVpZ2h0OiAxMDA7XHJcbn1cclxuLmNvbnQge1xyXG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vdXJsP3NhPWkmdXJsPWh0dHBzJTNBJTJGJTJGd3d3LnBlcmZlY3RzZXJ2ZS5jb20lMkZhbnN3ZXItc2VydmljZSUyRmxhbmRpbmctaGVyby1iYWNrZ3JvdW5kJTJGJnBzaWc9QU92VmF3M3c1RWxULWQ2WDJSTHVRc2FVLUtyUSZ1c3Q9MTY0NTkxNzM5NzU3MTAwMCZzb3VyY2U9aW1hZ2VzJmNkPXZmZSZ2ZWQ9MENBZ1FqUnhxRndvVENPaUh4TEwtbV9ZQ0ZRQUFBQUFkQUFBQUFCQUtcIik7XHJcbn1cclxuLmZvcm0tc2lnbmluIHtcclxuICAvKm1heC13aWR0aDogNDAwcHg7Ki9cclxuICBmbGV4OiAxMDAlO1xyXG4gIGJvcmRlci1yaWdodDogMHB4O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBoZWlnaHQ6IDEwMHZoO1xyXG4gIGJhY2tncm91bmQ6ICNmZmY7XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiAuY2hlY2tib3gge1xyXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiAuZm9ybS1mbG9hdGluZzpmb2N1cy13aXRoaW4ge1xyXG4gIHotaW5kZXg6IDI7XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiBpbnB1dFt0eXBlPVwiZW1haWxcIl0ge1xyXG4gIG1hcmdpbi1ib3R0b206IC0xcHg7XHJcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcclxufVxyXG5cclxuLmZvcm0tc2lnbmluIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXSxcclxuLmZvcm0tc2lnbmluIGlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxyXG4uZm9ybS1zaWduaW4gaW5wdXRbdHlwZT1cInRlbFwiXSB7XHJcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcclxuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMDtcclxuICBib3JkZXItcmlnaHQ6IDA7XHJcbiAgZm9udC1zaXplOiA4MCU7XHJcbn1cclxuLmJ1dHRvbi1zaWduIHtcclxuICBiYWNrZ3JvdW5kOiAjOGFiN2Y4O1xyXG4gIGJvcmRlci1jb2xvcjogIzhhYjdmODtcclxuICBjb2xvcjogI2ZmZjtcclxuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcclxufVxyXG5hIHtcclxuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbn1cclxucCB7XHJcbiAgbWFyZ2luLWJvdHRvbTogMHB4O1xyXG4gIGxpbmUtaGVpZ2h0OiAxNXB4O1xyXG59XHJcbmlucHV0LFxyXG5pbnB1dDpmb2N1cyB7XHJcbiAgYmFja2dyb3VuZDogI2ZmZjtcclxuICBmb250LXNpemU6IDgwJTtcclxufVxyXG5pbnB1dDpmb2N1cyB7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2U4ZjBmZTtcclxufVxyXG4jYmFzaWMtYWRkb24xIHtcclxuICBjb2xvcjogdHJhbnNwYXJlbnQ7XHJcbn1cclxuLnJvdyB7XHJcbiAgbWFyZ2luOiAwcHg7XHJcbn1cclxuXHJcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQyNXB4KSB7XHJcbiAgLmJhY2ssXHJcbiAgLmZvcm0tc2lnbmluIHtcclxuICAgIGhlaWdodDogNTB2aDtcclxuICB9XHJcbn1cclxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XHJcbiAgLmJhY2ssXHJcbiAgLmZvcm0tc2lnbmluIHtcclxuICAgIGhlaWdodDogNTB2aDtcclxuICB9XHJcbiAgLmZvcm0tZ3JvdXAge1xyXG4gICAgd2lkdGg6IDUwMHB4O1xyXG4gIH1cclxuICAudi1hcHBsaWNhdGlvbi0td3JhcCB7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gIH1cclxufVxyXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcclxuICAuYmFjayxcclxuICAuZm9ybS1zaWduaW4ge1xyXG4gICAgaGVpZ2h0OiAxMDB2aDtcclxuICB9XHJcbiAgLmZvcm0tZ3JvdXAge1xyXG4gICAgd2lkdGg6IDMwMHB4O1xyXG4gIH1cclxufVxyXG48L3N0eWxlPlxyXG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlclwiIHN0eWxlPVwid2lkdGg6NTUwcHhcIj5cbiAgPGRpdiBjbGFzcz1cIm9wdFwiPlxuICAgIDx2LW90cC1pbnB1dFxuICAgICAgbGVuZ3RoPVwiNlwiXG4gICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgIEBmaW5pc2g9XCJvbkZpbmlzaFwiXG4gICAgICB2LW1vZGVsPVwiY29kZVwiXG4gICAgPjwvdi1vdHAtaW5wdXQ+XG4gICAgPHAgY2xhc3M9XCJ0ZXh0LXNtYWxsIHRleHQtY2VudGVyIHB0LTUgcGItNVwiPlxuICAgICAgSidhaSBwYXMgcmXDp3UgbGUgY29kZTxiciAvPlxuICAgICAgPGEgQGNsaWNrPVwicmVzZW5kQ29kZVwiIGNsYXNzPVwidGV4dC1wcmltYXJ5XCI+UmVudm95ZXIgbGUgY29kZTwvYT5cbiAgICA8L3A+XG4gICAgPHAgY2xhc3M9XCJ0ZXh0LXNtYWxsIHRleHQtY2VudGVyXCIgdi1zaG93PVwic2hvd05leHRcIj5cbiAgICAgIFZvdXMgYXZleiBkw6lqYSBjb25maXJtZXIgdm90cmUgbnVtZXJvIGRlIHTDqWzDqXBob25lPGJyIC8+XG4gICAgICA8YnV0dG9uIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1zbSBidXR0b24tc2lnblwiIHR5cGU9XCJzdWJtaXRcIiBAY2xpY2s9XCJuZXh0XCI+XG4gICAgICAgIFN1aXZhbnRcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvcD5cbiAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcbmltcG9ydCBzdG9yZSBmcm9tIFwiLi4vc3RvcmVcIjtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc3RvcmUsXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvZGU6IFwiXCIsXG4gICAgICBzaG93TmV4dDogZmFsc2UsXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBsb2FkaW5nOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldExvYWRpbmc7XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRMb2FkaW5nXCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgc3RlcDoge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRTdGVwO1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0U3RlcFwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgb3Blbk5vdGlmaWNhdGlvbih0aXRsZSwgdGV4dCwgY29sb3IsIHBvc2l0aW9uID0gXCJ0b3AtcmlnaHRcIiwgaWNvbiA9IG51bGwpIHtcbiAgICAgIGNvbnN0IG5vdGkgPSB0aGlzLiR2cy5ub3RpZmljYXRpb24oe1xuICAgICAgICBpY29uLFxuICAgICAgICBjb2xvcixcbiAgICAgICAgcG9zaXRpb24sXG4gICAgICAgIHRpdGxlLFxuICAgICAgICB0ZXh0LFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBsb2FkKCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdGhpcy4kdnMubG9hZGluZyh7XG4gICAgICAgIGJhY2tncm91bmQ6IFwiIzdhNzZjYlwiLFxuICAgICAgICBjb2xvcjogXCIjZmZmXCIsXG4gICAgICAgIHRleHQ6IFwiVmV1aWxsZXogcGF0aWVudGVyXCIsXG4gICAgICAgIHR5cGU6XCJzY2FsZVwiXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG5leHQoKSB7XG4gICAgICB0aGlzLnN0ZXAgPSAzO1xuICAgIH0sXG4gICAgLy9SZW52b3llciBsZSBjb2RlIHBhciBzbXMsIHNpIGwndXRpbGlzYXRldXIgbidhIHBhcyByZcOndSBsZSBzbXNcbiAgICByZXNlbmRDb2RlKCkge1xuICAgICAgdGhpcy5sb2FkKCk7XG4gICAgICBheGlvc1xuICAgICAgICAucG9zdChcIi9yZXNlbmRDb2RlXCIsIHsgdG9rZW46IHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0VG9rZW4gfSlcbiAgICAgICAgLnRoZW4oKGUpID0+IHtcbiAgICAgICAgICB0aGlzLmxvYWRpbmcuY2xvc2UoKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvL0xvcnNxdWUgbCd1dGlsaXNhdGV1ciBlbnRyZSBsZSA2IGNoaWZmcmVzXG4gICAgb25GaW5pc2goKSB7XG4gICAgICBpZiAodGhpcy5jb2RlLmxlbmd0aCA9PSA2KSB7XG4gICAgICAgIHRoaXMubG9hZCgpO1xuICAgICAgICBheGlvc1xuICAgICAgICAgIC5wb3N0KFwiL2NvbmZpcm1Db2RlXCIsIHtcbiAgICAgICAgICAgIG9wdENvZGU6IHRoaXMuY29kZSxcbiAgICAgICAgICAgIHNlc3Npb25Ub2tlbjogdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRUb2tlbixcbiAgICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKChlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPyB0aGlzLmxvYWRpbmcuY2xvc2UoKSA6IFwiXCI7XG4gICAgICAgICAgICBjb25zdCAkZGF0YSA9IGUuZGF0YTtcbiAgICAgICAgICAgIGlmICgkZGF0YSkge1xuICAgICAgICAgICAgICBpZiAoJGRhdGEuc3VjY2VzcyA9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zdGVwID0gMztcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoJGRhdGEuY29kZSA9PSBcIlJFR0lTVEVSX1BIT05FX0FMUkVBRFlfVkFMSURBVEVEXCIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNob3dOZXh0ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Ob3RpZmljYXRpb24oJ09vcHMnLCdMZSBjb2RlIHNhaXNpIGVzdCBpbmNvcnJlY3RlJylcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlKSk7XG4gICAgICB9XG4gICAgfSxcbiAgfSxcbn07XG48L3NjcmlwdD5cblxuPHN0eWxlPlxuLm9wdCB7XG4gIG1heC13aWR0aDogNDAwcHg7XG4gIG1hcmdpbi10b3A6MTAlO1xuICBtYXJnaW4tYm90dG9tOjUlO1xuXG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtM1wiIHN0eWxlPVwid2lkdGg6IDU1MHB4XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiByb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGNvbC1tZC02IGNvbC1zbS02IGNvbC14cy02XCI+XG4gICAgICAgIDwhLS1wcmVub20gLS0+XG4gICAgICAgIDxzbWFsbCBmb3I9XCJmbG9hdGluZ0lucHV0XCI+UHLDqW5vbTwvc21hbGw+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIDpjbGFzcz1cImBmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtICR7cHJlbm9tQ2xhc3N9YFwiXG4gICAgICAgICAgaWQ9XCJmbG9hdGluZ0lucHV0XCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkplYW5cIlxuICAgICAgICAgIHYtbW9kZWw9XCJsYXN0TmFtZVwiXG4gICAgICAgICAgQGtleWRvd249XCJwcmVub21DbGFzcyA9ICcnXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj57eyB0ZXh0VmFsaWRhdGlvblByZW5vbSB9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtbWQtNiBjb2wtc20tNiBjb2wteHMtNlwiPlxuICAgICAgICA8IS0tTm9tIC0tPlxuICAgICAgICA8c21hbGwgZm9yPVwiZmxvYXRpbmdJbnB1dFwiPk5vbSBkZSBmYW1pbGxlPC9zbWFsbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgOmNsYXNzPVwiYGZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gJHtub21DbGFzc31gXCJcbiAgICAgICAgICBpZD1cImZsb2F0aW5nSW5wdXRcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRGUgTGEgQ3JvaXhcIlxuICAgICAgICAgIHYtbW9kZWw9XCJmaXJzdE5hbWVcIlxuICAgICAgICAgIEBrZXlkb3duPVwibm9tQ2xhc3MgPSAnJ1wiXG4gICAgICAgIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+e3sgdGV4dFZhbGlkYXRpb25Ob20gfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtbWQtNiBjb2wtc20tNiBjb2wteHMtNlwiPlxuICAgICAgICA8IS0tRGF0ZSBkZSBuYWlzc2FuY2UgLS0+XG4gICAgICAgIDxzbWFsbCBmb3I9XCJmbG9hdGluZ1Bhc3N3b3JkICB0ZXh0LWxlZnRcIj5EYXRlIGRlIG5haXNzYW5jZTwvc21hbGw+XG4gICAgICAgIDxkYXRlLXBpY2tlclxuICAgICAgICAgIHYtbW9kZWw9XCJiaXJ0RGF5XCJcbiAgICAgICAgICA6Y2xhc3M9XCJkYXRlXCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkRhdGUgZGUgbmFpc3NhbmNlXCJcbiAgICAgICAgICBmb3JtYXQ9XCJERC9NTS9ZWVlZXCJcbiAgICAgICAgPjwvZGF0ZS1waWNrZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiIHYtaWY9XCJkYXRlID09ICdpcy1pbnZhbGlkJ1wiPlxuICAgICAgICAgIDxzbWFsbD57eyB0ZXh0VmFsaWRhdGlvbkRhdGUgfX08L3NtYWxsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLW1kLTYgY29sLXNtLTYgY29sLXhzLTZcIj5cbiAgICAgICAgPCEtLU5hdGlvbmFsaXTDqSAtLT5cbiAgICAgICAgPHNtYWxsIGZvcj1cImZsb2F0aW5nUGFzc3dvcmQgIHRleHQtbGVmdFwiPk5hdGlvbmFsaXTDqTwvc21hbGw+XG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICA6Y2xhc3M9XCJgJHtuYXR9IGZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21gXCJcbiAgICAgICAgICB2LW1vZGVsPVwibmF0aW9uYWxpdHlcIlxuICAgICAgICA+XG4gICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgdi1mb3I9XCIoaXRlbSwga2V5KSBpbiBhbGxDb3VudHJpZXNcIlxuICAgICAgICAgICAgOmtleT1cImtleVwiXG4gICAgICAgICAgICA6dmFsdWU9XCJpdGVtLnNob3J0TmFtZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgaXRlbS5uYW1lIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPnt7IHRleHRWYWxpZGF0aW9uTmF0aW9uYWxpdGUgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLW1kLTYgY29sLXNtLTYgY29sLXhzLTEyXCI+XG4gICAgICAgIDwhLS1QYXlzIC0tPlxuICAgICAgICA8c21hbGwgZm9yPVwiZmxvYXRpbmdQYXNzd29yZCAgdGV4dC1sZWZ0XCI+UGF5czwvc21hbGw+XG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICA6Y2xhc3M9XCJgJHtuYXQxfSBmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtYFwiXG4gICAgICAgICAgdi1tb2RlbD1cImNvdW50cnlcIlxuICAgICAgICA+XG4gICAgICAgICAgPG9wdGlvblxuICAgICAgICAgICAgdi1mb3I9XCIoaXRlbSwga2V5KSBpbiBhbGxDb3VudHJpZXNcIlxuICAgICAgICAgICAgOmtleT1cImtleVwiXG4gICAgICAgICAgICA6dmFsdWU9XCJpdGVtLnNob3J0TmFtZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgaXRlbS5uYW1lIH19XG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPnt7IHRleHRWYWxpZGF0aW9uTmF0aW9uYWxpdGUgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLW1kLTYgY29sLXNtLTYgY29sLXhzLTEyXCI+XG4gICAgICAgIDwhLS0gVmlsbGUgLS0+XG4gICAgICAgIDxzbWFsbCBmb3I9XCJmbG9hdGluZ0lucHV0XCI+VmlsbGU8L3NtYWxsPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICA6Y2xhc3M9XCJgZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbSAke3ByZW5vbUNsYXNzMX1gXCJcbiAgICAgICAgICBpZD1cImZsb2F0aW5nSW5wdXRcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRXg6UGFyaXNcIlxuICAgICAgICAgIHYtbW9kZWw9XCJjaXR5XCJcbiAgICAgICAgICBAa2V5ZG93bj1cInByZW5vbUNsYXNzMSA9ICcnXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj57eyB0ZXh0VmFsaWRhdGlvblByZW5vbTEgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLW1kLTEyIGNvbC1zbS0xMiBjb2wteHMtMTJcIj5cbiAgICAgICAgPCEtLUNvZGUgcG9zdGFsIC0tPlxuICAgICAgICA8c21hbGwgZm9yPVwiZmxvYXRpbmdJbnB1dFwiPkNvZGUgUG9zdGFsPC9zbWFsbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgOmNsYXNzPVwiYGZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20gJHtub21DbGFzczF9YFwiXG4gICAgICAgICAgaWQ9XCJmbG9hdGluZ0lucHV0XCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkV4Ojk0MDAwXCJcbiAgICAgICAgICB2LW1vZGVsPVwiemlwXCJcbiAgICAgICAgICBAa2V5ZG93bj1cIm5vbUNsYXNzMSA9ICcnXCJcbiAgICAgICAgLz5cbiAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj57eyB0ZXh0VmFsaWRhdGlvbk5vbTEgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLW1kLTEyIGNvbC1zbS0xMiBjb2wteHMtMTJcIj5cbiAgICAgICAgPCEtLUFkcmVzc2UgLS0+XG4gICAgICAgIDxzbWFsbCBmb3I9XCJmbG9hdGluZ1Bhc3N3b3JkICB0ZXh0LWxlZnRcIj5BZHJlc3NlPC9zbWFsbD5cbiAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgOmNsYXNzPVwiYCR7ZGF0ZTF9IGZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21gXCJcbiAgICAgICAgICBpZD1cImZsb2F0aW5nUGFzc3dvcmRcIlxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRXg6NCBydWUgZGUgcsOpcHVibGlxdWVcIlxuICAgICAgICAgIHYtbW9kZWw9XCJhZHJlc3NlMVwiXG4gICAgICAgID48L3RleHRhcmVhPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPnt7IHRleHRWYWxpZGF0aW9uRGF0ZTEgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPCEtLUwnw6l0YXBlIHN1aXZhbnRlIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInAtMlwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJ3LTEwMCBidG4gYnRuLXNtIGJ1dHRvbi1zaWduIG10LTNcIlxuICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgIEBjbGljaz1cIm5leHRcIlxuICAgICAgICA+XG4gICAgICAgICAgw6l0YXBlIHN1aXZhbnRlXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBzdG9yZSBmcm9tIFwiLi4vc3RvcmVcIjtcbmNvbnN0IGFsbENvdW50cmllcyA9IHJlcXVpcmUoXCJjb3VudHJ5Y2l0eXN0YXRlanNvblwiKTtcbmltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcbmltcG9ydCBDb21wdGVFeGlzdGUgZnJvbSBcIi4vY29tcHRlRXhpc3RlLnZ1ZVwiO1xuaW1wb3J0IERhdGVQaWNrZXIgZnJvbSBcInZ1ZTItZGF0ZXBpY2tlclwiO1xuaW1wb3J0IFwidnVlMi1kYXRlcGlja2VyL2luZGV4LmNzc1wiO1xuZXhwb3J0IGRlZmF1bHQge1xuICBzdG9yZSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzdWx0OiBcIlwiLFxuICAgICAgcHJlbm9tQ2xhc3M6IFwiXCIsXG4gICAgICB0ZXh0VmFsaWRhdGlvblByZW5vbTogXCJcIixcbiAgICAgIG5vbUNsYXNzOiBcIlwiLFxuICAgICAgdGV4dFZhbGlkYXRpb25Ob206IFwiXCIsXG4gICAgICBkYXRlOiBcIlwiLFxuICAgICAgdGV4dFZhbGlkYXRpb25EYXRlOiBcIlwiLFxuICAgICAgdGV4dFZhbGlkYXRpb25OYXRpb25hbGl0ZTogXCJcIixcbiAgICAgIGFsbENvdW50cmllczogYWxsQ291bnRyaWVzLmdldENvdW50cmllcygpLFxuICAgICAgbmF0OiBcIlwiLFxuICAgICAgcHJlbm9tQ2xhc3MxOiBcIlwiLFxuICAgICAgdGV4dFZhbGlkYXRpb25QcmVub20xOiBcIlwiLFxuICAgICAgbm9tQ2xhc3MxOiBcIlwiLFxuICAgICAgdGV4dFZhbGlkYXRpb25Ob20xOiBcIlwiLFxuICAgICAgZGF0ZTE6IFwiXCIsXG4gICAgICB0ZXh0VmFsaWRhdGlvbkRhdGUxOiBcIlwiLFxuICAgICAgdGV4dFZhbGlkYXRpb25OYXRpb25hbGl0ZTE6IFwiXCIsXG4gICAgICBuYXQxOiBcIlwiLFxuICAgIH07XG4gIH0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICBDb21wdGVFeGlzdGUsXG4gICAgRGF0ZVBpY2tlcixcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBmaXJzdE5hbWU6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLnN0YXRlLmZpcnN0TmFtZTtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldEZpcnN0TmFtZVwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIGxhc3ROYW1lOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5sYXN0TmFtZTtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldExhc3ROYW1lXCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgYmlydERheToge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuYmlydERheTtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldEJpcnREYXlcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBuYXRpb25hbGl0eToge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUubmF0aW9uYWxpdHk7XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXROYXRpb25hbGl0eVwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIGxvYWRpbmc6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0TG9hZGluZztcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldExvYWRpbmdcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBzdGVwOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFN0ZXA7XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRTdGVwXCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgemlwOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS56aXA7XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRaaXBcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBjaXR5OiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5jaXR5O1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0Q2l0eVwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIGFkcmVzc2UxOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5hZHJlc3NlMTtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldEFkcmVzc2UxXCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgYWRyZXNzZTI6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLnN0YXRlLmFkcmVzc2UyO1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0QWRyZXNzZTJcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBjb3VudHJ5OiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5jb3VudHJ5O1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0Q291bnRyeVwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgLy9Gb3JtYXR0ZXIgbGEgZGF0ZVxuICAgIGZvcm1hdERhdGUoJGRhdGUpIHtcbiAgICAgIGNvbnN0ICRkYXRhID0gbmV3IERhdGUoJGRhdGUpO1xuICAgICAgdmFyIG0gPSAkZGF0YS5nZXRNb250aCgpO1xuICAgICAgY29uc3QgZCA9ICRkYXRhLmdldERhdGUoKTtcbiAgICAgIGNvbnN0IHkgPSAkZGF0YS5nZXRGdWxsWWVhcigpO1xuICAgICAgaWYgKG0gPT0gMCkgbSA9IFwiMDFcIjtcbiAgICAgIGVsc2UgaWYgKG0gPT0gMSkgbSA9IFwiMDJcIjtcbiAgICAgIGVsc2UgaWYgKG0gPT0gMikgbSA9IFwiMDNcIjtcbiAgICAgIGVsc2UgaWYgKG0gPT0gMykgbSA9IFwiMDRcIjtcbiAgICAgIGVsc2UgaWYgKG0gPT0gNCkgbSA9IFwiMDVcIjtcbiAgICAgIGVsc2UgaWYgKG0gPT0gNSkgbSA9IFwiMDZcIjtcbiAgICAgIGVsc2UgaWYgKG0gPT0gNikgbSA9IFwiMDdcIjtcbiAgICAgIGVsc2UgaWYgKG0gPT0gNykgbSA9IFwiMDhcIjtcbiAgICAgIGVsc2UgaWYgKG0gPT0gOCkgbSA9IFwiMDlcIjtcbiAgICAgIGVsc2UgaWYgKG0gPT0gOSkgbSA9IFwiMTBcIjtcbiAgICAgIGVsc2UgaWYgKG0gPT0gMTApIG0gPSBcIjExXCI7XG4gICAgICBlbHNlIGlmIChtID09IDExKSBtID0gXCIxMlwiO1xuICAgICAgcmV0dXJuIHkgKyBcIi1cIiArIG0gKyBcIi1cIiArIGQ7XG4gICAgfSxcblxuICAgIC8vTG9hZGluZ1xuICAgIGxvYWQoKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0aGlzLiR2cy5sb2FkaW5nKHtcbiAgICAgICAgYmFja2dyb3VuZDogXCIjN2E3NmNiXCIsXG4gICAgICAgIGNvbG9yOiBcIiNmZmZcIixcbiAgICAgICAgdGV4dDogXCJWZXVpbGxleiBwYXRpZW50ZXJcIixcbiAgICAgICAgdHlwZTogXCJzY2FsZVwiLFxuICAgICAgfSk7XG4gICAgfSxcblxuICAgIC8vTm90aWZpY2F0aW9uXG5cbiAgICBvcGVuTm90aWZpY2F0aW9uKHRpdGxlLCB0ZXh0LCBjb2xvciwgcG9zaXRpb24gPSBcInRvcC1yaWdodFwiLCBpY29uID0gbnVsbCkge1xuICAgICAgY29uc3Qgbm90aSA9IHRoaXMuJHZzLm5vdGlmaWNhdGlvbih7XG4gICAgICAgIGljb24sXG4gICAgICAgIGNvbG9yLFxuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHRleHQsXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy9Qb3VyIHBhc3NlciDDoCBsJ8OpdGFwZSBzdWl2YW50ZVxuXG4gICAgbmV4dCgpIHtcbiAgICAgIC8vVmVyaWZpY2F0aW9uIGRlcyBpbmZvcm1hdGlvbnNcblxuICAgICAgLy9zaSBsZSBwcmVub20gbidlc3QgcGFzIHJlbXBsaVxuICAgICAgaWYgKCF0aGlzLmxhc3ROYW1lKSB7XG4gICAgICAgIHRoaXMudGV4dFZhbGlkYXRpb25QcmVub20gPSBcIkNlIGNoYW1wcyBlc3Qgb2JsaWdhdG9pcmVcIjtcbiAgICAgICAgdGhpcy5wcmVub21DbGFzcyA9IFwiaXMtaW52YWxpZFwiO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIC8vc2kgbGUgcHJlbm9tIGNvbnRpZW50IG1vaW5zIGRlIDMgbGV0dHJlc1xuICAgICAgaWYgKHRoaXMubGFzdE5hbWUubGVuZ3RoIDwgMykge1xuICAgICAgICB0aGlzLnRleHRWYWxpZGF0aW9uUHJlbm9tID0gXCJQcsOpbm9tIG5vbiB2YWxpZGVcIjtcbiAgICAgICAgdGhpcy5wcmVub21DbGFzcyA9IFwiaXMtaW52YWxpZFwiO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIC8vU2kgbGUgcHJlbm9tIGVzdCB2YWxpZMOpXG5cbiAgICAgIHRoaXMucHJlbm9tQ2xhc3MgPSBcImlzLXZhbGlkXCI7XG5cbiAgICAgIC8vc2kgbGUgbm9tIG4nZXN0IHBhcyByZW1wbGlcbiAgICAgIGlmICghdGhpcy5maXJzdE5hbWUpIHtcbiAgICAgICAgdGhpcy50ZXh0VmFsaWRhdGlvbk5vbSA9IFwiQ2UgY2hhbXBzIGVzdCBvYmxpZ2F0b2lyZVwiO1xuICAgICAgICB0aGlzLm5vbUNsYXNzID0gXCJpcy1pbnZhbGlkXCI7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuXG4gICAgICAvL3NpIGxlIG5vbSBjb250aWVudCBtb2lucyBkZSAzIGxldHRyZXNcbiAgICAgIGlmICh0aGlzLmZpcnN0TmFtZS5sZW5ndGggPCAzKSB7XG4gICAgICAgIHRoaXMudGV4dFZhbGlkYXRpb25Ob20gPSBcIk5vbSBkb2l0IGNvbnRlbmlyIGF1IG1vaW5zIDMgbGV0dHJlc1wiO1xuICAgICAgICB0aGlzLm5vbUNsYXNzID0gXCJpcy1pbnZhbGlkXCI7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuICAgICAgdGhpcy5ub21DbGFzcyA9IFwiaXMtdmFsaWRcIjtcblxuLy9zaSBsYSBkYXRlIGRlIG5haXNzYW5jZSBuJ2VzdCBwYXMgcmVtcGxpXG4gICAgICBpZiAoIXRoaXMuYmlydERheSkge1xuICAgICAgICB0aGlzLnRleHRWYWxpZGF0aW9uRGF0ZSA9IFwiQ2UgY2hhbXBzIGVzdCBpbnZhbGlkXCI7XG4gICAgICAgIHRoaXMuZGF0ZSA9IFwiaXMtaW52YWxpZFwiO1xuICAgICAgICB0aGlzLm9wZW5Ob3RpZmljYXRpb24oXCJPb3BzXCIsIFwiQ2UgY2hhbXBzIGVzdCBpbnZhbGlkXCIpO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRvRGF5ID0gbmV3IERhdGUoKTtcbiAgICAgIGNvbnN0IGJpcnRoID0gbmV3IERhdGUodGhpcy5iaXJ0RGF5KTtcbiAgICAgIHZhciAkY2FsY3VsID0gdG9EYXkuZ2V0RnVsbFllYXIoKSAtIGJpcnRoLmdldEZ1bGxZZWFyKCk7XG5cbiAgICAvL1ZlcmlmaWNhdGlvbiBkZSBsJ2FnZSBkZSBsJ3V0aWxpc2F0ZXVyXG5cbiAgICAgIGlmICgkY2FsY3VsIDwgMTggfHwgJGNhbGN1bCA+IDEwMCkge1xuICAgICAgICB0aGlzLm9wZW5Ob3RpZmljYXRpb24oXCJPb3BzXCIsIFwiTCdpbnNjcmlwdGlvbiBlc3QgcmVzZXJ2w6kgYXUgbWFqZXVyXCIpO1xuICAgICAgICB0aGlzLnRleHRWYWxpZGF0aW9uRGF0ZSA9IFwiTCdpbnNjcmlwdGlvbiBlc3QgcmVzZXJ2w6kgYXUgbWFqZXVyXCI7XG4gICAgICAgIHRoaXMuZGF0ZSA9IFwiaXMtaW52YWxpZFwiO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0ZSA9IFwiaXMtdmFsaWRcIjtcblxuICAgICAgIC8vc2kgbGUgcGF5cyBuJ2VzdCBwYXMgcmVtcGxpXG4gICAgICBpZiAoIXRoaXMubmF0aW9uYWxpdHkpIHtcbiAgICAgICAgdGhpcy50ZXh0VmFsaWRhdGlvbk5hdGlvbmFsaXRlID0gXCJDZSBjaGFtcHMgZXN0IGludmFsaWRcIjtcbiAgICAgICAgdGhpcy5uYXQgPSBcImlzLWludmFsaWRcIjtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgICB0aGlzLm5hdCA9IFwiaXMtdmFsaWRcIjtcblxuICAgICAgLy9sZXMgZG9ubsOpZXMgc3VyIGwnaWRlbnRpdMOpIGRlIGwndXRpbGlzYXRldXJcbiAgICAgIGNvbnN0ICRkYXRhID0ge1xuICAgICAgICBiaXJ0aERheTogdGhpcy5mb3JtYXREYXRlKHRoaXMuYmlydERheSksXG4gICAgICAgIG5hdGlvbmFsaXR5OiB0aGlzLm5hdGlvbmFsaXR5LFxuICAgICAgICBmaXJzdE5hbWU6IHRoaXMuZmlyc3ROYW1lLFxuICAgICAgICBsYXN0TmFtZTogdGhpcy5sYXN0TmFtZSxcbiAgICAgICAgc2Vzc2lvblRva2VuOiB0aGlzLiRzdG9yZS5zdGF0ZS50b2tlblxuICAgICAgICAgID8gdGhpcy4kc3RvcmUuc3RhdGUudG9rZW5cbiAgICAgICAgICA6IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJjcmVhdGVkVG9rZW5cIiksXG4gICAgICB9O1xuXG4gICAgICAvKkFkcmVzcyAqL1xuXG4gICAgICAvL3NpIGxhIHZpbGxlIG4nZXN0IHBhcyByZW1wbGlcbiAgICAgIGlmICghdGhpcy5jaXR5KSB7XG4gICAgICAgIHRoaXMudGV4dFZhbGlkYXRpb25QcmVub20xID0gXCJDZSBjaGFtcHMgZXN0IG9ibGlnYXRvaXJlXCI7XG4gICAgICAgIHRoaXMucHJlbm9tQ2xhc3MxID0gXCJpcy1pbnZhbGlkXCI7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuICAgICAgICAvL3NpIGxhIHZpbGxlIGNvbnRpZW50IG1vaW5zIGRlIDMgbGV0dHJlc1xuICAgICAgaWYgKHRoaXMuY2l0eS5sZW5ndGggPCAzKSB7XG4gICAgICAgIHRoaXMudGV4dFZhbGlkYXRpb25QcmVub20xID0gXCJDaGFtcHMgaW52YWxpZFwiO1xuICAgICAgICB0aGlzLnByZW5vbUNsYXNzMSA9IFwiaXMtaW52YWxpZFwiO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIC8vU2kgbGEgdmlsbGUgZXN0IHJlbXBsaSBlc3QgdmFsaWRlXG4gICAgICB0aGlzLnByZW5vbUNsYXNzMSA9IFwiaXMtdmFsaWRcIjtcblxuICAgICAgLy9WZXJpZmljYXRpb24gZHUgY29kZSBwb3N0YWxcblxuICAgICAgLy9zaSBsZSBjb2RlIHBvc3RhbCBuJ2VzdCBwYXMgcmVtcGxpXG4gICAgICBpZiAoIXRoaXMuemlwKSB7XG4gICAgICAgIHRoaXMudGV4dFZhbGlkYXRpb25Ob20xID0gXCJDZSBjaGFtcHMgZXN0IG9ibGlnYXRvaXJlXCI7XG4gICAgICAgIHRoaXMubm9tQ2xhc3MxID0gXCJpcy1pbnZhbGlkXCI7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuXG4gICAgICAgIC8vc2kgbGUgY29kZSBwb3N0YWwgY29udGllbnQgbW9pbnMgZGUgNCBsZXR0cmVzXG4gICAgICBpZiAodGhpcy56aXAubGVuZ3RoIDwgNCkge1xuICAgICAgICB0aGlzLnRleHRWYWxpZGF0aW9uTm9tMSA9XG4gICAgICAgICAgXCJMZSBjb2RlIHBvc3RhbCBkb2l0IGNvbnRhaW5pciBhdSBtb2lucyA0IGNoaWZmcmVzXCI7XG4gICAgICAgIHRoaXMubm9tQ2xhc3MxID0gXCJpcy1pbnZhbGlkXCI7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuICAgICAgdGhpcy5ub21DbGFzczEgPSBcImlzLXZhbGlkXCI7XG5cbiAgICAgIC8vVmVyaWZpY2F0aW9uIGRlIGwnYWRyZXNzZVxuICAgICAgaWYgKCF0aGlzLmFkcmVzc2UxKSB7XG4gICAgICAgIHRoaXMudGV4dFZhbGlkYXRpb25EYXRlMSA9IFwiQ2UgY2hhbXBzIGVzdCByZXF1aXNcIjtcbiAgICAgICAgdGhpcy5kYXRlMSA9IFwiaXMtaW52YWxpZFwiO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuYWRyZXNzZTEubGVuZ3RoIDwgNCB8fCB0aGlzLmFkcmVzc2UxLmxlbmd0aCA+IDEyNCkge1xuICAgICAgICB0aGlzLnRleHRWYWxpZGF0aW9uRGF0ZTEgPSBcIkNlIGNoYW1wcyBlc3QgaW52YWxpZFwiO1xuICAgICAgICB0aGlzLmRhdGUxID0gXCJpcy1pbnZhbGlkXCI7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRhdGUxID0gXCJpcy12YWxpZFwiO1xuXG4gICAgICAvL1ZlcmlmaWNhdGlvbiBkdSBwYXlzXG5cbiAgICAgIGlmICghdGhpcy5jb3VudHJ5KSB7XG4gICAgICAgIHRoaXMudGV4dFZhbGlkYXRpb25OYXRpb25hbGl0ZTEgPSBcIkNlIGNoYW1wcyBlc3QgaW52YWxpZFwiO1xuICAgICAgICB0aGlzLm5hdDEgPSBcImlzLWludmFsaWRcIjtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG4gICAgICB0aGlzLm5hdDEgPSBcImlzLXZhbGlkXCI7XG5cbiAgICAgIC8vTGVzIGRvbm7DqWVzIHN1ciBsJ2FkcmVzc2UgZGUgbCd1dGlsaXNhdGV1clxuXG4gICAgICBjb25zdCAkZGF0YTIgPSB7XG4gICAgICAgIGFkcmVzc2UxOiB0aGlzLmFkcmVzc2UxLFxuICAgICAgICBhZHJlc3NlMjogdGhpcy5hZHJlc3NlMixcbiAgICAgICAgY291bnRyeTogdGhpcy5uYXRpb25hbGl0eSxcbiAgICAgICAgemlwOiB0aGlzLmZpcnN0TmFtZSxcbiAgICAgICAgY2l0eTogdGhpcy5sYXN0TmFtZSxcbiAgICAgICAgc2Vzc2lvblRva2VuOiB0aGlzLiRzdG9yZS5zdGF0ZS50b2tlbixcbiAgICAgIH07XG4gICAgICAvKiogQWRyZWVzcyBGaW4gKi9cbiAgICAgIHRoaXMubG9hZCgpO1xuICAgICAgYXhpb3NcbiAgICAgICAgLnBvc3QoXCIvYWRkSWRlbnRpdHlcIiwgJGRhdGEpXG4gICAgICAgIC50aGVuKChlKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nLmNsb3NlKCk7XG4gICAgICAgICAgYXhpb3NcbiAgICAgICAgICAgIC5wb3N0KFwiL2FkZEFkcmVzc2VcIiwgJGRhdGEyKVxuICAgICAgICAgICAgLnRoZW4oKGUpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgJGRhdGFzID0gZS5kYXRhO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4gY29uc29sZS5sb2coZSkpO1xuICAgICAgICAgIGNvbnN0ICRkYXRhcyA9IGUuZGF0YTtcbiAgICAgICAgICBpZiAoJGRhdGFzKSB7XG4gICAgICAgICAgICBpZiAoJGRhdGFzLmNvZGUpIHtcbiAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgLy9QYXNzZXIgw6AgbCfDqXRhcGUgc3VpdmFudGVcbiAgICAgICAgICAgICAgdGhpcy5zdGVwID0gNTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZSkgPT4gY29uc29sZS5sb2coZSkpO1xuICAgIH0sXG4gIH0sXG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZT5cbi5teC1pbnB1dC13cmFwcGVyLFxuLm14LWlucHV0IHtcbiAgd2lkdGg6IDIzN3B4O1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDI1cHgpIHtcbiAgLmJhY2ssXG4gIC5mb3JtLXNpZ25pbiB7XG4gICAgaGVpZ2h0OiA1MHZoO1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmJhY2ssXG4gIC5mb3JtLXNpZ25pbiB7XG4gICAgaGVpZ2h0OiA1MHZoO1xuICB9XG4gIC52LWFwcGxpY2F0aW9uLS13cmFwIHtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmJhY2ssXG4gIC5mb3JtLXNpZ25pbiB7XG4gICAgaGVpZ2h0OiAxMDB2aDtcbiAgfVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cclxuICA8ZGl2IHN0eWxlPVwid2lkdGg6IDU1MHB4XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtbWQtNiBjb2wtc20tNiBjb2wteHMtMTJcIj5cclxuICAgICAgICAgIDxzbWFsbCBmb3I9XCJmbG9hdGluZ0lucHV0XCI+RW1haWw8L3NtYWxsPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJlbWFpbFwiXHJcbiAgICAgICAgICAgIDpjbGFzcz1cImBmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLW1kICR7ZW1haWxDbGFzc31gXCJcclxuICAgICAgICAgICAgaWQ9XCJmbG9hdGluZ0lucHV0XCJcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJuYW1lQGV4YW1wbGUuY29tXCJcclxuICAgICAgICAgICAgdi1tb2RlbD1cImVtYWlsXCJcclxuICAgICAgICAgICAgQGtleWRvd249XCJlbWFpbENsYXNzID0gJydcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+e3sgdGV4dFZhbGlkYXRpb25FbWFpbCB9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGNvbC1tZC02IGNvbC1zbS02IGNvbC14cy0xMlwiPlxyXG4gICAgICAgICAgPHNtYWxsIGZvcj1cImZsb2F0aW5nSW5wdXRcIj5Uw6lsw6lwaG9uZTwvc21hbGw+XHJcbiAgICAgICAgICA8VnVlUGhvbmVOdW1iZXJJbnB1dFxyXG4gICAgICAgICAgICB2LW1vZGVsPVwibW9iaWxlXCJcclxuICAgICAgICAgICAgQHVwZGF0ZT1cInVwZGF0ZVwiXHJcbiAgICAgICAgICAgIDp0cmFuc2xhdGlvbnM9XCJ0cmFuc2xhdGlvbnNcIlxyXG4gICAgICAgICAgICBjbGVhcmFibGVcclxuICAgICAgICAgICAgc2l6ZT1cInNtXCJcclxuICAgICAgICAgICAgOmNsYXNzPVwicGhvbmVDbGFzc1wiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj57eyB0ZXh0VmFsaWRhdGlvblBob25lIH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGNvbC1tZC02IGNvbC1zbS02IGNvbC14cy0xMlwiPlxyXG4gICAgICAgICAgPHNtYWxsIGZvcj1cImZsb2F0aW5nUGFzc3dvcmQgIHRleHQtbGVmdFwiPlBhc3N3b3JkPC9zbWFsbD5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwicGFzc3dvcmRcIlxyXG4gICAgICAgICAgICA6Y2xhc3M9XCJgJHtwYXNzfSBmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLW1kYFwiXHJcbiAgICAgICAgICAgIGlkPVwiZmxvYXRpbmdQYXNzd29yZFwiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiUGFzc3dvcmRcIlxyXG4gICAgICAgICAgICB2LW1vZGVsPVwicGFzc3dvcmRcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+e3sgdGV4dFZhbGlkYXRpb25QYXNzd29yZCB9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGNvbC1tZC02IGNvbC1zbS02IGNvbC14cy0xMlwiPlxyXG4gICAgICAgICAgPHNtYWxsIGZvcj1cImZsb2F0aW5nUGFzc3dvcmQgIHRleHQtbGVmdFwiXHJcbiAgICAgICAgICAgID5Db25maXJtYXRpb24gZGUgbW90IGRlIHBhc3NlPC9zbWFsbFxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXHJcbiAgICAgICAgICAgIDpjbGFzcz1cImAke3Rlc3R9IGZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtbWRgXCJcclxuICAgICAgICAgICAgaWQ9XCJmbG9hdGluZ1Bhc3N3b3Jkc1wiXHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiUGFzc3dvcmRcIlxyXG4gICAgICAgICAgICB2LW1vZGVsPVwiY29uZmlybVBhc3NcIlxyXG4gICAgICAgICAgICBAa2V5ZG93bj1cInRlc3QgPSAnJ1wiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5cclxuICAgICAgICAgICAgTGUgbW90IGRlIHBhc3NlIG5lIGNvcnJlc3BvbmRlbnQgcGFzXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICBcclxuICAgICAgICA8ZGl2IGNsYXNzPVwicC0yXCI+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgbWItNSBtdC0yIGJ0biBidG4tc20gYnV0dG9uLXNpZ25cIlxyXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcclxuICAgICAgICAgICAgQGNsaWNrPVwibmV4dFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIEFjY2VwdGVyIGV0IGNvbnRpbnVlclxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtY2VudGVyIHB0LTUgcGItNVwiPlxyXG4gICAgICAgICAgRW4gY2xpcXVhbnQgc3VyIGxlIGJvdXRvbiwgdm91cyBjb25maXJtZXogYXZvaXIgbHUgZXQgYWNjZXB0w6kgbGVzXHJcbiAgICAgICAgICBDb25kaXRpb25zIGfDqW7DqXJhbGVzIC4gVm9zIGRvbm7DqWVzIHBlcnNvbm5lbGxlcyBzZXJvbnQgdHJhaXTDqWVzXHJcbiAgICAgICAgICBjb25mb3Jtw6ltZW50IGF1eFxyXG4gICAgICAgICAgPGEgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgdGV4dC1zbWFsbFwiIGhyZWY9XCIvY29uZGl0aW9uX2dlbmVyYWxlXCIgdGFyZ2V0PVwiX2JsYW5rXCI+Y29uZGl0aW9ucyBnw6luw6lyYWxlczwvYVxyXG4gICAgICAgICAgPi5cclxuICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXY+PC9kaXY+XHJcbiAgICAgICAgPGhyIC8+XHJcbiAgICAgICAgPGNvbXB0ZS1leGlzdGUgY2xhc3M9XCJtdC0yXCIgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcbmltcG9ydCBzdG9yZSBmcm9tIFwiLi4vc3RvcmVcIjtcclxuaW1wb3J0IFZ1ZVBob25lTnVtYmVySW5wdXQgZnJvbSBcInZ1ZS1waG9uZS1udW1iZXItaW5wdXRcIjtcclxuaW1wb3J0IFwidnVlLXBob25lLW51bWJlci1pbnB1dC9kaXN0L3Z1ZS1waG9uZS1udW1iZXItaW5wdXQuY3NzXCI7XHJcbmltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcclxuaW1wb3J0IFJvdXRlcyBmcm9tIFwiLi4vc3RvcmUvcm91dGVzXCI7XHJcbmltcG9ydCB7XHJcbiAgVmFsaWRhdGVFbWFpbCxcclxuICBDaGVja1Bhc3N3b3JkcyxcclxuICBDaGVja1Bhc3N3b3JkLFxyXG4gIHBob25lbnVtYmVyLFxyXG59IGZyb20gXCIuLi8uLi9jb21tb24uanMvdmVyaWZ5XCI7XHJcbmltcG9ydCBDb21wdGVFeGlzdGUgZnJvbSBcIi4vY29tcHRlRXhpc3RlLnZ1ZVwiO1xyXG5pbXBvcnQgQ29uc3RhbnQgZnJvbSBcIi4uL3N0b3JlL2NvbnN0YW50XCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgc3RvcmUsXHJcbiAgY29tcG9uZW50czogeyBWdWVQaG9uZU51bWJlcklucHV0LCBDb21wdGVFeGlzdGUgfSxcclxuICBkYXRhKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgdGVzdDogXCJcIixcclxuICAgICAgcGFzczogXCJcIixcclxuICAgICAgdGV4dFZhbGlkYXRpb25QYXNzd29yZDogXCJcIixcclxuICAgICAgdGV4dFZhbGlkYXRpb25FbWFpbDogXCJcIixcclxuICAgICAgdGV4dFZhbGlkYXRpb25QaG9uZTogXCJcIixcclxuICAgICAgZW1haWxDbGFzczogXCJcIixcclxuICAgICAgcGhvbmVDbGFzczogXCJcIixcclxuICAgICAgY29uZmlybVBhc3M6IFwiXCIsXHJcbiAgICAgIHRyYW5zbGF0aW9uczoge1xyXG4gICAgICAgIGNvdW50cnlTZWxlY3RvckxhYmVsOiBcIkNvZGUgcGF5c1wiLFxyXG4gICAgICAgIGNvdW50cnlTZWxlY3RvckVycm9yOiBcIkNob2lzaXIgdW4gcGF5c1wiLFxyXG4gICAgICAgIHBob25lTnVtYmVyTGFiZWw6IFwiTnVtw6lybyBkZSB0w6lsw6lwaG9uZVwiLFxyXG4gICAgICAgIGV4YW1wbGU6IFwiRXhlbXBsZSA6XCIsXHJcbiAgICAgIH0sXHJcbiAgICAgIHZlcmlmUGhvbmU6IGZhbHNlLFxyXG4gICAgICBtb2JpbGU6IFwiXCIsXHJcbiAgICB9O1xyXG4gIH0sXHJcbiAgbW91bnRlZCgpIHtcclxuICAgIHZhciBkYXRhID0gSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICBtb2JpbGVQaG9uZTogXCIrMjEyNzY2NzQyMjUyXCIsXHJcbiAgICAgIGVtYWlsOiBcImFkbGlwbGFubmluZ0BnbWFpbC5jb21cIixcclxuICAgICAgcGFzc3dvcmQ6IFwicGFzc3dvcmRcIixcclxuICAgIH0pO1xyXG4gIH0sXHJcbiAgY29tcHV0ZWQ6IHtcclxuICAgIGVtYWlsOiB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRFbWFpbDtcclxuICAgICAgfSxcclxuICAgICAgc2V0KHZhbCkge1xyXG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldEVtYWlsXCIsIHZhbCk7XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgcGFzc3dvcmQ6IHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFBhc3N3b3JkO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsKSB7XHJcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0UGFzc3dvcmRcIiwgdmFsKTtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICBwaG9uZToge1xyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0UGhvbmU7XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRQaG9uZVwiLCB2YWwpO1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGxvYWRpbmc6IHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldExvYWRpbmc7XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRMb2FkaW5nXCIsIHZhbCk7XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgc3RlcDoge1xyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0U3RlcDtcclxuICAgICAgfSxcclxuICAgICAgc2V0KHZhbCkge1xyXG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldFN0ZXBcIiwgdmFsKTtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgfSxcclxuICBtZXRob2RzOiB7XHJcbiAgICBsb2FkKCkge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0aGlzLiR2cy5sb2FkaW5nKHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiBcIiM3YTc2Y2JcIixcclxuICAgICAgICBjb2xvcjogXCIjZmZmXCIsXHJcbiAgICAgICAgdGV4dDogXCJWZXVpbGxleiBwYXRpZW50ZXJcIixcclxuICAgICAgICB0eXBlOiBcInNjYWxlXCIsXHJcbiAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIHVwZGF0ZShldmVudCkge1xyXG4gICAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgICB0aGlzLnZlcmlmUGhvbmUgPSBldmVudC5pc1ZhbGlkID8gZXZlbnQuaXNWYWxpZCA6IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucGhvbmUgPSBldmVudC5mb3JtYXR0ZWROdW1iZXIgPyBldmVudC5mb3JtYXR0ZWROdW1iZXIgOiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgbmV4dCgpIHtcclxuICAgICAgaWYgKCF0aGlzLmVtYWlsKSB7XHJcbiAgICAgICAgdGhpcy50ZXh0VmFsaWRhdGlvbkVtYWlsID0gXCJMZSBjaGFtcHMgZW1haWwgZXN0IHJlcXVpc1wiO1xyXG4gICAgICAgIHRoaXMuZW1haWxDbGFzcyA9IFwiaXMtaW52YWxpZFwiO1xyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghVmFsaWRhdGVFbWFpbCh0aGlzLmVtYWlsKSkge1xyXG4gICAgICAgIHRoaXMudGV4dFZhbGlkYXRpb25FbWFpbCA9IFwiTCdhZHJlc3NlIGVtYWlsIGVzdCBpbnZhbGlkXCI7XHJcbiAgICAgICAgdGhpcy5lbWFpbENsYXNzID0gXCJpcy1pbnZhbGlkXCI7XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5lbWFpbENsYXNzID0gXCJpcy12YWxpZFwiO1xyXG4gICAgICBpZiAoIXRoaXMucGhvbmUpIHtcclxuICAgICAgICB0aGlzLnRleHRWYWxpZGF0aW9uUGhvbmUgPSBcIkxlIGNoYW1wcyB0w6lsw6lwaG9uZSBlc3QgcmVxdWlzXCI7XHJcbiAgICAgICAgdGhpcy5waG9uZUNsYXNzID0gXCJpcy1pbnZhbGlkXCI7XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKCF0aGlzLnZlcmlmUGhvbmUpIHtcclxuICAgICAgICB0aGlzLnRleHRWYWxpZGF0aW9uUGhvbmUgPSBcIk51bcOpcm8gZGUgdMOpbMOpcGhvbmUgaW5jb3JyZWN0ZVwiO1xyXG4gICAgICAgIHRoaXMucGhvbmVDbGFzcyA9IFwiaXMtaW52YWxpZFwiO1xyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMudGV4dFZhbGlkYXRpb25QaG9uZSA9IFwiXCI7XHJcbiAgICAgIHRoaXMucGhvbmVDbGFzcyA9IFwiaXMtdmFsaWRcIjtcclxuXHJcbiAgICAgIGlmICghdGhpcy5wYXNzd29yZCkge1xyXG4gICAgICAgIHRoaXMudGV4dFZhbGlkYXRpb25QYXNzd29yZCA9IFwiTGUgbW90IGRlIHBhc3NlIGVzdCBvYmxpZ2F0b2lyZVwiO1xyXG4gICAgICAgIHRoaXMucGFzcyA9IFwiaXMtaW52YWxpZFwiO1xyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICAgIC8qaWYgKCFDaGVja1Bhc3N3b3JkKHRoaXMucGFzc3dvcmQpKSB7XHJcbiAgICAgICAgdGhpcy50ZXh0VmFsaWRhdGlvblBhc3N3b3JkID1cclxuICAgICAgICAgIFwiTGUgbW90IGRlIHBhc3NlIGRvaXQgY29udGVuaXIgcGx1cyBkZSA2IGNoYXJhY3Rlc1wiO1xyXG4gICAgICAgIHRoaXMucGFzcyA9IFwiaXMtaW52YWxpZFwiO1xyXG4gICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICB9Ki9cclxuICAgICAgdGhpcy5wYXNzID0gXCJpcy12YWxpZFwiO1xyXG4gICAgICBpZiAodGhpcy5wYXNzd29yZCAhPSB0aGlzLmNvbmZpcm1QYXNzKSB7XHJcbiAgICAgICAgdGhpcy50ZXN0ID0gXCJpcy1pbnZhbGlkXCI7XHJcbiAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy50ZXN0ID0gXCJpcy12YWxpZFwiO1xyXG4gICAgICBjb25zdCAkZGF0YSA9IHtcclxuICAgICAgICBwaG9uZTogdGhpcy5waG9uZSxcclxuICAgICAgICBwYXNzd29yZDogdGhpcy5wYXNzd29yZCxcclxuICAgICAgICBlbWFpbDogdGhpcy5lbWFpbCxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5sb2FkKCk7XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgYXhpb3NcclxuICAgICAgICAgIC5wb3N0KFJvdXRlcy5SRUdJU1RFUiwgJGRhdGEpXHJcbiAgICAgICAgICAudGhlbigoZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCAkZGF0YSA9IGUuZGF0YTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJGRhdGEpO1xyXG4gICAgICAgICAgICBpZiAoJGRhdGEpIHtcclxuICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcuY2xvc2UoKTtcclxuICAgICAgICAgICAgICBpZiAoJGRhdGEuc2Vzc2lvblRva2VuKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5zdGVwID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0U3RlcFwiLCAyKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldFRva2VuXCIsICRkYXRhLnNlc3Npb25Ub2tlbik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRDb2RlU3RhdHVzXCIsIDIwMCk7XHJcbiAgICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFwiY3JlYXRlZFRva2VuXCIsJGRhdGEuc2Vzc2lvblRva2VuKVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoJGRhdGEuY29kZSA9PSBcIlJFR0lTVEVSX0VNQUlMX0FMUkVBRFlfRVhJU1RTXCIpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0VmFsaWRhdGlvbkVtYWlsID1cclxuICAgICAgICAgICAgICAgICAgICBcIkwnYWRyZXNzZSBlbWFpbCBlc3QgZMOpasOgIGFzc29jacOpIMOgIHVuIGNvbXB0ZVwiO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLmVtYWlsQ2xhc3MgPSBcImlzLWludmFsaWRcIjtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCRkYXRhLmNvZGUgPT0gXCJSRUdJU1RFUl9QSE9ORV9BTFJFQURZX0VYSVNUU1wiKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudGV4dFZhbGlkYXRpb25QaG9uZSA9XHJcbiAgICAgICAgICAgICAgICAgICAgXCJOdW3DqXJvIGRlIHTDqWzDqXBob25lIGVzdCBkw6lqw6AgYXNzb2Npw6kgw6AgdW4gY29tcHRlXCI7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucGhvbmVDbGFzcyA9IFwiaXMtaW52YWxpZFwiO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJGRhdGEuY29kZSA9PSBcIkdMT0JBTF9WQUxJREFUSU9OX0VSUk9SXCIpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy50ZXh0VmFsaWRhdGlvblBhc3N3b3JkID1cclxuICAgICAgICAgICAgICAgICAgICBcIkxlIG1vdCBkZSBwYXNzZSBkb2l0IGNvbnRlbmlyIHBsdXMgZGUgNiBjaGFyYWN0ZXNcIjtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wYXNzID0gXCJpcy1pbnZhbGlkXCI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRUb2tlblwiLCBcIlwiKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldENvZGVTdGF0dXNcIiwgNDAzKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goKGUpID0+IHtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmNsZWFyKCk7XHJcbiAgICAgICAgICAgIC8vY29tbWl0KFwic2V0Q29kZVN0YXR1c1wiLCA0MDEpO1xyXG4gICAgICAgICAgICBjb21taXQoXCJzZXRUZXh0U3RhdHVzXCIsIFwiRXJyZXVyXCIpO1xyXG4gICAgICAgICAgICBjb21taXQoXHJcbiAgICAgICAgICAgICAgXCJzZXRNZXNzYWdlU3RhdHVzXCIsXHJcbiAgICAgICAgICAgICAgXCJNb3QgZGUgcGFzc2Ugb3UgYWRyZXNzZSBlbWFpbCBpbmNvcnJlY3RlXCJcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICB9LFxyXG59O1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZT5cclxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDI1cHgpIHtcclxuICAuYmFjaywuZm9ybS1zaWduaW4ge1xyXG4gICAgaGVpZ2h0OiA1MHZoO1xyXG4gIH1cclxufVxyXG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcclxuICAuYmFjaywuZm9ybS1zaWduaW4ge1xyXG4gICAgaGVpZ2h0OiA1MHZoO1xyXG4gIH1cclxuICAudi1hcHBsaWNhdGlvbi0td3JhcCB7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gIH1cclxufVxyXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcclxuICAuYmFjaywuZm9ybS1zaWduaW4ge1xyXG4gICAgaGVpZ2h0OiAxMDB2aDtcclxuICB9XHJcblxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWFpblBhcnRcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWQgYmctZ3JhZGllbnQgcC01XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgbS1hdXRvIHRleHQtY2VudGVyIHctMTAwXCI+XG4gICAgICAgICAgPCEtLSBMZSBmb3JmYWl0IGQnRUxJVEUgLS0+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02IHByaW5jaW5nLWl0ZW0gYmx1ZXNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljaW5nLWRpdmlkZXJcIj5cbiAgICAgICAgICAgICAgPGg1IGNsYXNzPVwidGV4dC1saWdodFwiPkVMSVRFPC9oNT5cbiAgICAgICAgICAgICAgPGg2IGNsYXNzPVwibXktMCBkaXNwbGF5LTIgdGV4dC1saWdodCBmb250LXdlaWdodC1ub3JtYWwgbWItM1wiPlxuICAgICAgICAgICAgICAgIDxzdXAgY2xhc3M9XCJoNlwiPuKCrDwvc3VwPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGUtb3B0aW9uXCI+MTEuOTA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoNlwiPi9tbzwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9oNj5cbiAgICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICAgIGNsYXNzPVwicHJpY2luZy1kaXZpZGVyLWltZ1wiXG4gICAgICAgICAgICAgICAgZW5hYmxlLWJhY2tncm91bmQ9XCJuZXcgMCAwIDMwMCAxMDBcIlxuICAgICAgICAgICAgICAgIGhlaWdodD1cIjEwMHB4XCJcbiAgICAgICAgICAgICAgICBpZD1cIkxheWVyXzFcIlxuICAgICAgICAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW89XCJub25lXCJcbiAgICAgICAgICAgICAgICB2ZXJzaW9uPVwiMS4xXCJcbiAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDMwMCAxMDBcIlxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMzAwcHhcIlxuICAgICAgICAgICAgICAgIHg9XCIwcHhcIlxuICAgICAgICAgICAgICAgIHhtbDpzcGFjZT1cInByZXNlcnZlXCJcbiAgICAgICAgICAgICAgICB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIlxuICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICAgIHk9XCIwcHhcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGVjby1sYXllciBkZWNvLWxheWVyLS0xXCJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNMzAuOTEzLDQzLjk0NGMwLDAsNDIuOTExLTM0LjQ2NCw4Ny41MS0xNC4xOTFjNzcuMzEsMzUuMTQsMTEzLjMwNC0xLjk1MiwxNDYuNjM4LTQuNzI5XG5cdGM0OC42NTQtNC4wNTYsNjkuOTQsMTYuMjE4LDY5Ljk0LDE2LjIxOHY1NC4zOTZIMzAuOTEzVjQzLjk0NHpcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGRkZGRkZcIlxuICAgICAgICAgICAgICAgICAgb3BhY2l0eT1cIjAuNlwiXG4gICAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkZWNvLWxheWVyIGRlY28tbGF5ZXItLTJcIlxuICAgICAgICAgICAgICAgICAgZD1cIk0tMzUuNjY3LDQ0LjYyOGMwLDAsNDIuOTEtMzQuNDYzLDg3LjUxLTE0LjE5MWM3Ny4zMSwzNS4xNDEsMTEzLjMwNC0xLjk1MiwxNDYuNjM5LTQuNzI5XG5cdGM0OC42NTMtNC4wNTUsNjkuOTM5LDE2LjIxOCw2OS45MzksMTYuMjE4djU0LjM5NkgtMzUuNjY3VjQ0LjYyOHpcIlxuICAgICAgICAgICAgICAgICAgZmlsbD1cIiNGRkZGRkZcIlxuICAgICAgICAgICAgICAgICAgb3BhY2l0eT1cIjAuNlwiXG4gICAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkZWNvLWxheWVyIGRlY28tbGF5ZXItLTNcIlxuICAgICAgICAgICAgICAgICAgZD1cIk00My40MTUsOTguMzQyYzAsMCw0OC4yODMtNjguOTI3LDEwOS4xMzMtNjguOTI3YzY1Ljg4NiwwLDk3Ljk4Myw2Ny45MTQsOTcuOTgzLDY3LjkxNHYzLjcxNlxuXHRINDIuNDAxTDQzLjQxNSw5OC4zNDJ6XCJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkZGRkZGXCJcbiAgICAgICAgICAgICAgICAgIG9wYWNpdHk9XCIwLjdcIlxuICAgICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGVjby1sYXllciBkZWNvLWxheWVyLS00XCJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNLTM0LjY2Nyw2Mi45OThjMCwwLDU2LTQ1LjY2NywxMjAuMzE2LTI3LjgzOUMxNjcuNDg0LDU3Ljg0MiwxOTcsNDEuMzMyLDIzMi4yODYsMzAuNDI4XG5cdGM1My4wNy0xNi4zOTksMTA0LjA0NywzNi45MDMsMTA0LjA0NywzNi45MDNsMS4zMzMsMzYuNjY3bC0zNzItMi45NTRMLTM0LjY2Nyw2Mi45OTh6XCJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkZGRkZGXCJcbiAgICAgICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IGJnLXdoaXRlIG10LTAgc2hhZG93XCI+XG4gICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxpc3QtdW5zdHlsZWQgbWItNSBwb3NpdGlvbi1yZWxhdGl2ZVwiPlxuICAgICAgICAgICAgICAgIDwhLS1sZXMgYXZhbnRhZ2VzIGR1IGZvcmZhaXQgZCdFbGl0ZSAtLT5cbiAgICAgICAgICAgICAgICA8bGk+PGI+PGkgY2xhc3M9XCJtZGkgbWRpLWNoZWNrLWNpcmNsZVwiPjwvaT4gQXZhbnRhZ2UgMTwvYj48L2xpPlxuICAgICAgICAgICAgICAgIDxsaT48Yj48aSBjbGFzcz1cIm1kaSBtZGktY2hlY2stY2lyY2xlXCI+PC9pPiBBdmFudGFnZSAyPC9iPjwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPjxiPjxpIGNsYXNzPVwibWRpIG1kaS1jaGVjay1jaXJjbGVcIj48L2k+IEF2YW50YWdlIDM8L2I+PC9saT5cbiAgICAgICAgICAgICAgICA8bGk+PGI+PGkgY2xhc3M9XCJtZGkgbWRpLWNoZWNrLWNpcmNsZVwiPjwvaT5BdmFudGFnZSA0PC9iPjwvbGk+XG4gICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kOiM4OGI5ZmZcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tYmxvY2sgYnRuLWN1c3RvbVwiXG4gICAgICAgICAgICAgICAgQGNsaWNrPVwiY2hvaWNlKDExLjksICdFbGl0ZScpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIFNlbGVjdGlvbm5lclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuXG48IS0tRm9yZmFpdCBleGNsdXNpdmUtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTYgcHJpbmNpbmctaXRlbSBncmVlbnNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcmljaW5nLWRpdmlkZXJcIj5cbiAgICAgICAgICAgICAgPGg1IGNsYXNzPVwidGV4dC1saWdodFwiPkVYQ0xVU0lWRTwvaDU+XG4gICAgICAgICAgICAgIDxoNiBjbGFzcz1cIm15LTAgZGlzcGxheS0yIHRleHQtbGlnaHQgZm9udC13ZWlnaHQtbm9ybWFsIG1iLTNcIj5cbiAgICAgICAgICAgICAgICA8c3VwIGNsYXNzPVwiaDZcIj7igqw8L3N1cD5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlLW9wdGlvblwiPjE2LjkwPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaDZcIj4vbW88L3NwYW4+XG4gICAgICAgICAgICAgIDwvaDY+XG4gICAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgICBjbGFzcz1cInByaWNpbmctZGl2aWRlci1pbWdcIlxuICAgICAgICAgICAgICAgIGVuYWJsZS1iYWNrZ3JvdW5kPVwibmV3IDAgMCAzMDAgMTAwXCJcbiAgICAgICAgICAgICAgICBoZWlnaHQ9XCIxMDBweFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJMYXllcl8xXCJcbiAgICAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwibm9uZVwiXG4gICAgICAgICAgICAgICAgdmVyc2lvbj1cIjEuMVwiXG4gICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAzMDAgMTAwXCJcbiAgICAgICAgICAgICAgICB3aWR0aD1cIjMwMHB4XCJcbiAgICAgICAgICAgICAgICB4PVwiMHB4XCJcbiAgICAgICAgICAgICAgICB4bWw6c3BhY2U9XCJwcmVzZXJ2ZVwiXG4gICAgICAgICAgICAgICAgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCJcbiAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgICB5PVwiMHB4XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRlY28tbGF5ZXIgZGVjby1sYXllci0tMVwiXG4gICAgICAgICAgICAgICAgICBkPVwiTTMwLjkxMyw0My45NDRjMCwwLDQyLjkxMS0zNC40NjQsODcuNTEtMTQuMTkxYzc3LjMxLDM1LjE0LDExMy4zMDQtMS45NTIsMTQ2LjYzOC00LjcyOVxuXHRjNDguNjU0LTQuMDU2LDY5Ljk0LDE2LjIxOCw2OS45NCwxNi4yMTh2NTQuMzk2SDMwLjkxM1Y0My45NDR6XCJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkZGRkZGXCJcbiAgICAgICAgICAgICAgICAgIG9wYWNpdHk9XCIwLjZcIlxuICAgICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGVjby1sYXllciBkZWNvLWxheWVyLS0yXCJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNLTM1LjY2Nyw0NC42MjhjMCwwLDQyLjkxLTM0LjQ2Myw4Ny41MS0xNC4xOTFjNzcuMzEsMzUuMTQxLDExMy4zMDQtMS45NTIsMTQ2LjYzOS00LjcyOVxuXHRjNDguNjUzLTQuMDU1LDY5LjkzOSwxNi4yMTgsNjkuOTM5LDE2LjIxOHY1NC4zOTZILTM1LjY2N1Y0NC42Mjh6XCJcbiAgICAgICAgICAgICAgICAgIGZpbGw9XCIjRkZGRkZGXCJcbiAgICAgICAgICAgICAgICAgIG9wYWNpdHk9XCIwLjZcIlxuICAgICAgICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZGVjby1sYXllciBkZWNvLWxheWVyLS0zXCJcbiAgICAgICAgICAgICAgICAgIGQ9XCJNNDMuNDE1LDk4LjM0MmMwLDAsNDguMjgzLTY4LjkyNywxMDkuMTMzLTY4LjkyN2M2NS44ODYsMCw5Ny45ODMsNjcuOTE0LDk3Ljk4Myw2Ny45MTR2My43MTZcblx0SDQyLjQwMUw0My40MTUsOTguMzQyelwiXG4gICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZGRkZGRlwiXG4gICAgICAgICAgICAgICAgICBvcGFjaXR5PVwiMC43XCJcbiAgICAgICAgICAgICAgICA+PC9wYXRoPlxuICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImRlY28tbGF5ZXIgZGVjby1sYXllci0tNFwiXG4gICAgICAgICAgICAgICAgICBkPVwiTS0zNC42NjcsNjIuOTk4YzAsMCw1Ni00NS42NjcsMTIwLjMxNi0yNy44MzlDMTY3LjQ4NCw1Ny44NDIsMTk3LDQxLjMzMiwyMzIuMjg2LDMwLjQyOFxuXHRjNTMuMDctMTYuMzk5LDEwNC4wNDcsMzYuOTAzLDEwNC4wNDcsMzYuOTAzbDEuMzMzLDM2LjY2N2wtMzcyLTIuOTU0TC0zNC42NjcsNjIuOTk4elwiXG4gICAgICAgICAgICAgICAgICBmaWxsPVwiI0ZGRkZGRlwiXG4gICAgICAgICAgICAgICAgPjwvcGF0aD5cbiAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYm9keSBiZy13aGl0ZSBtdC0wIHNoYWRvd1wiPlxuICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIG1iLTUgcG9zaXRpb24tcmVsYXRpdmVcIj5cbiAgICAgICAgICAgICAgICA8IS0tTGVzIGF2YW50YWdlcyBkdSBmb3JmYWl0IGQnZWxpdGUgLS0+XG4gICAgICAgICAgICAgICAgPGxpPjxiPjxpIGNsYXNzPVwibWRpIG1kaS1jaGVjay1jaXJjbGVcIj48L2k+IEF2YW50YWdlIDE8L2I+PC9saT5cbiAgICAgICAgICAgICAgICA8bGk+PGI+PGkgY2xhc3M9XCJtZGkgbWRpLWNoZWNrLWNpcmNsZVwiPjwvaT4gQXZhbnRhZ2UgMjwvYj48L2xpPlxuICAgICAgICAgICAgICAgIDxsaT48Yj48aSBjbGFzcz1cIm1kaSBtZGktY2hlY2stY2lyY2xlXCI+PC9pPiBBdmFudGFnZSAzPC9iPjwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPjxiPjxpIGNsYXNzPVwibWRpIG1kaS1jaGVjay1jaXJjbGVcIj48L2k+QXZhbnRhZ2UgNDwvYj48L2xpPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kOiNlY2IwNDNcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tYmxvY2sgYnRuLWN1c3RvbVwiXG4gICAgICAgICAgICAgICAgQGNsaWNrPVwiY2hvaWNlKDE2LjksICdFeGNsdXNpdmUnKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBTZWxlY3Rpb25uZXJcbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS1CdXR0b24gc2VuZCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTIgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDwhLS1hY3Rpb24gbG9ycyBsJ3V0aWxpc2F0ZXVyIGVzdCBjb25uZWN0w6kgLS0+XG4gICAgICAgIDxidXR0b24gdi1pZj1cImFjdGlvbnNcIiBjbGFzcz1cImJ0bl9ibG9ja1wiIEBjbGljaz1cInNhdmVcIj5cbiAgICAgICAgICBDaGFuZ2VyIGxlIGZvcmZhaXRcbiAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgPCEtLWFjdGlvbiBsb3JzIGRlIGwnaW5zY3JpcHRpb24gLS0+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInctMTAwIGJ0biBidG4tc20gYnV0dG9uLXNpZ24gbXQtM1wiXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgQGNsaWNrPVwibmV4dFwiXG4gICAgICAgICAgdi1lbHNlXG4gICAgICAgID5cbiAgICAgICAgICDDqXRhcGUgc3VpdmFudGVcbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IHN0b3JlIGZyb20gXCIuLi9zdG9yZVwiO1xuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiXG5pbXBvcnQgTUFJTl9VUkwgZnJvbSBcIi4uLy4uL2NvbW1vbi5qcy9tYWluVXJsXCI7XG5pbXBvcnQgeyBoZWFkZXJzIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi5qcy9oZWFkZXJcIjtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc3RvcmUsXG4gIHByb3BzOntcbiAgICBhY3Rpb25zOlN0cmluZ1xuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpdGVtOiBcIlwiLFxuICAgICAgcGF5cGFsOiB7XG4gICAgICAgIHNhbmRib3g6XG4gICAgICAgICAgXCJBWTFXc1lRdUY5V0VGZ1RyVGZvUVBFNzBQbFhtUUl2Yk52OWJOWDRhT0tFT2MxYWNTRl8xYkFWTGxJUkRrUXFIR0lHVlQ1amRsMHkzN0E2YlwiLFxuICAgICAgICBwcm9kdWN0aW9uOiBcInRlc3RcIixcbiAgICAgIH0sXG4gICAgICBzdHJpcGU6IHtcbiAgICAgICAgcGs6IFwicGtfdGVzdF81MUtiamFBRmFwc2RBZzEzMkpsNGUwVEE3ZzNkZWtEZzRUSmxQdDhzNXNlU2d0bDU5cEh0ZjYxT3IyUXNxWW8xNm80UlZvemxqSkZQRXhUWHZ1VG92c0tmWTAwM05YRjNQOUNcIixcbiAgICAgIH0sXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBzdGVwOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFN0ZXA7XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRTdGVwXCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgZm9yZmFpdDoge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuZm9yZmFpdDtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldEZvcmZhaXRcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIG9wZW5Ob3RpZmljYXRpb24odGl0bGUsIHRleHQsIGNvbG9yLCBwb3NpdGlvbiA9IFwidG9wLXJpZ2h0XCIsIGljb24gPSBudWxsKSB7XG4gICAgICBjb25zdCBub3RpID0gdGhpcy4kdnMubm90aWZpY2F0aW9uKHtcbiAgICAgICAgaWNvbixcbiAgICAgICAgY29sb3IsXG4gICAgICAgIHBvc2l0aW9uLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgdGV4dCxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgdG9rZW5DcmVhdGUodG9rZW4pIHtcbiAgICAgXG4gICAgfSxcbiAgICBzdWJtaXQoKSB7XG4gICAgICB0aGlzLiRyZWZzLnN0cmlwZS5zdWJtaXQoKTtcbiAgICB9LFxuICAgIGNob2ljZShwcmljZSwgaXRlbSkge1xuICAgICAgdGhpcy5mb3JmYWl0ID0geyBwcmljZSwgaXRlbSB9O1xuICAgICBcbiAgICB9LFxuICAgIG5leHQoKSB7XG4gICAgICBpZiAoIXRoaXMuZm9yZmFpdCkge1xuICAgICAgICB0aGlzLm9wZW5Ob3RpZmljYXRpb24oXG4gICAgICAgICAgXCJWb3RyZSBmb3JmYWl0XCIsXG4gICAgICAgICAgXCJWb3VzIGRldnJleiBjaG9pc2lyIHVuIGZvcmZhaXQgXCIsXG4gICAgICAgICAgXCJkYW5nZXJcIlxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIHRoaXMub3Blbk5vdGlmaWNhdGlvbihcbiAgICAgICAgXCJWb3RyZSBmb3JmYWl0XCIsXG4gICAgICAgIFwiVm91cyBhdmV6IGNob2lzaSBsZSBmb3JmYWl0IFwiICsgdGhpcy5mb3JmYWl0Lml0ZW0sXG4gICAgICAgIFwic3VjY2Vzc1wiXG4gICAgICApO1xuICBcbiAgICAgIHRoaXMuc3RlcD01XG4gICAgfSxcbiAgICBzYXZlKCl7XG4gICAgICBpZiAoIXRoaXMuZm9yZmFpdCkge1xuICAgICAgICB0aGlzLm9wZW5Ob3RpZmljYXRpb24oXG4gICAgICAgICAgXCJWb3RyZSBmb3JmYWl0XCIsXG4gICAgICAgICAgXCJWb3VzIGRldnJleiBjaG9pc2lyIHVuIGZvcmZhaXQgXCIsXG4gICAgICAgICAgXCJkYW5nZXJcIlxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIHRoaXMub3Blbk5vdGlmaWNhdGlvbihcbiAgICAgICAgXCJWb3RyZSBmb3JmYWl0XCIsXG4gICAgICAgIFwiVm91cyBhdmV6IGNob2lzaSBsZSBmb3JmYWl0IFwiICsgdGhpcy5mb3JmYWl0Lml0ZW0sXG4gICAgICAgIFwic3VjY2Vzc1wiXG4gICAgICApO1xuICAgICAgLyoqY29uc29sZS5sb2codGhpcy5mb3JmYWl0KSoqL1xuICAgICAgdGhpcy5sb2FkKClcbiAgICAgIGNvbnN0ICRkYXRhPXtcbiAgICAgICAgcmV0dXJuVXJsOiB3aW5kb3cubG9jYXRpb24uaHJlZiArIFwiL2NhcnRlcy9vcmRlclN1Y2Nlc3NcIixcbiAgICAgICAgcHJvZHVjdHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICByZWZlcmVuY2U6IHRoaXMuZm9yZmFpdC5pdGVtPT0nRWxpdGUnP1widjRhX3N1YnNjcmlwdGlvbl9iYXNpY1wiOlwidjRhX3N1YnNjcmlwdGlvbl9wcmVtaXVtXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH1cblxuICAgICAgLy9MZSBUb2tlblxuICAgICAgY29uc3QgbXlUb2tlbj1zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwidG9rZW5cIilcblxuICAgICAgLy9IZWFkZXIgZGUgbGEgcmVxdWV0ZVxuICAgICAgY29uc3QgaGVhZGVyID0gaGVhZGVycyhteVRva2VuKTtcblxuICAgICAgLy9SZXF1ZXRlXG5cbiAgICAgIGNvbnN0IGluc3RhbmNlID0gYXhpb3MuY3JlYXRlKHtcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiBcImluY2x1ZGVcIixcbiAgICAgIH0pO1xuXG4gICAgICBpbnN0YW5jZVxuICAgICAgICAucG9zdChNQUlOX1VSTC5PUkRFUl9DQVJELCAkZGF0YSwgeyBoZWFkZXJzIH0pXG4gICAgICAgIC50aGVuKChlKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nLmNsb3NlKCk7XG4gICAgICAgICAgY29uc3QgJHZhbCA9IGUuZGF0YTtcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKCR2YWwpXG4gICAgICAgICAgaWYgKCR2YWwpIHtcbiAgICAgICAgICAgIGluc3RhbmNlXG4gICAgICAgICAgICAgIC5wb3N0KE1BSU5fVVJMLk9SREVSX0xJU1QsIHt9LCB7IGhlYWRlcnMgfSlcbiAgICAgICAgICAgICAgLnRoZW4oKGUpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCAkZGF0YSA9IGUuZGF0YTtcbiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCRkYXRhKVxuICAgICAgICAgICAgICAgIGlmICgkZGF0YS5hY2NvdW50KSB7XG4gICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCRkYXRhKTtcbiAgICAgICAgICAgICAgICAgIGNvbnN0ICRkYXRhID0gZS5kYXRhO1xuICAgICAgICAgICAgICAgICAgaWYgKCRkYXRhLmxlbmd0aCA+IDApIHRoaXMub3JkZXJzID0gJGRhdGEub3JkZXJzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZj0kdmFsLnJlZGlyZWN0VXJsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMub3Blbk5vdGlmaWNhdGlvbihcbiAgICAgICAgICAgICAgICAgIFwiRGVjb25uZXhpb25cIixcbiAgICAgICAgICAgICAgICAgIFwiT29vcHMhIGxhIHNlc3Npb24gYSBleHBpcsOpZSwgdmV1aWxsZXogdm91cyByZWNvbm5lY2V0ZXJcIixcbiAgICAgICAgICAgICAgICAgIFwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuY2xlYXIoKTtcbiAgICAgICAgICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaChcIi9cIik7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgJHVybCA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoJGRhdGEucmVkaXJlY3RVcmwpO1xuICAgICAgICAgICAgaWYgKCR1cmwuaGFzKFwic3RhdHVzXCIpKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCR1cmwuZ2V0KFwic3RhdHVzXCIpKTtcbiAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAkZGF0YS5yZWRpcmVjdFVybDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgIGNvbnN0ICRkYXRhID0gZS5yZXNwb25zZS5yZXF1ZXN0LnJlc3BvbnNlO1xuICAgICAgICAgIGNvbnN0IHggPSBKU09OLnBhcnNlKCRkYXRhKTtcbiAgICAgICAgICBpZiAoeC5jb2RlKSB7XG4gICAgICAgICAgICBpZiAoeC5jb2RlID09IFwiR0xPQkFMX1ZBTElEQVRJT05fRVJST1JcIikge1xuICAgICAgICAgICAgICB0aGlzLm9wZW5Ob3RpZmljYXRpb24oXCJPb3BzXCIsIHguZGV0YWlscyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMubG9hZGluZy5jbG9zZSgpO1xuICAgICAgICB9KTtcbiAgICB9LFxuICAgIGxvYWQoKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0aGlzLiR2cy5sb2FkaW5nKHtcbiAgICAgICAgYmFja2dyb3VuZDogXCIjN2E3NmNiXCIsXG4gICAgICAgIGNvbG9yOiBcIiNmZmZcIixcbiAgICAgICAgdGV4dDogXCJWZXVpbGxleiBwYXRpZW50ZXJcIixcbiAgICAgICAgdHlwZTpcInNjYWxlXCIsXG4gICAgICB9KTtcbiAgICB9LFxuICB9LFxufTtcbjwvc2NyaXB0PlxuPHN0eWxlPlxuLnBvc2l0aW9uLXJlbGF0aXZlID4gbGkge1xuICBmb250LXNpemU6IHNtYWxsZXI7XG59XG4udi1hcHBsaWNhdGlvbiAucmVkLFxuLnYtYXBwbGljYXRpb24gLmJsdWUsXG4udi1hcHBsaWNhdGlvbiAuZ3JlZW4ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBwaW5rO1xufVxuLmJnLWdyYWRpZW50IHtcbiAgYmFja2dyb3VuZDogI2M5ZDZmZjtcbiAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNlMmUyZTIsICNjOWQ2ZmYpO1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNlMmUyZTIsICNjOWQ2ZmYpO1xufVxudWwgbGkge1xuICBtYXJnaW4tYm90dG9tOiAxLjRyZW07XG59XG4udGl0bGUtb3B0aW9uIHtcbiAgZm9udC1zaXplOiBsYXJnZTtcbn1cbi5wcmljaW5nLWRpdmlkZXIge1xuICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICBiYWNrZ3JvdW5kOiAjYzY0NTQ1O1xuICBwYWRkaW5nOiAxZW0gMCA0ZW07XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5ibHVlcyAucHJpY2luZy1kaXZpZGVyIHtcbiAgYmFja2dyb3VuZDogIzg2YjhmZTtcbn1cbi5ncmVlbnMgLnByaWNpbmctZGl2aWRlciB7XG4gIGJhY2tncm91bmQ6ICNlY2IwNDM7XG59XG4ucmVkcyBiIHtcbiAgY29sb3I6ICNjNjQ1NDU7XG59XG4uYmx1ZXMgYiB7XG4gIGNvbG9yOiAjODhiOWZmO1xufVxuLmdyZWVucyBiIHtcbiAgY29sb3I6ICNlY2IwNDM7XG59XG4ucHJpY2luZy1kaXZpZGVyLWltZyB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgYm90dG9tOiAtMnB4O1xuICBsZWZ0OiAwO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiA4MHB4O1xufVxuLmRlY28tbGF5ZXIge1xuICAtd2Via2l0LXRyYW5zaXRpb246IC13ZWJraXQtdHJhbnNmb3JtIDAuNXM7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjVzO1xufVxuLmJ0bi1jdXN0b20ge1xuICBiYWNrZ3JvdW5kOiAjYzY0NTQ1O1xuICBjb2xvcjogI2ZmZjtcbiAgYm9yZGVyLXJhZGl1czogMjBweDtcbn1cblxuLmltZy1mbG9hdCB7XG4gIHdpZHRoOiA1MHB4O1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogLTMuNXJlbTtcbiAgcmlnaHQ6IDFyZW07XG59XG5cbi5wcmluY2luZy1pdGVtIHtcbiAgdHJhbnNpdGlvbjogYWxsIDE1MG1zIGVhc2Utb3V0O1xufVxuLnByaW5jaW5nLWl0ZW0gLnJlZCxcbi5wcmluY2luZy1pdGVtIC5ibHVlLFxuLnByaW5jaW5nLWl0ZW0gLmdyZWVuIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4ucHJpbmNpbmctaXRlbTpob3ZlciB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG59XG4ucHJpbmNpbmctaXRlbTpob3ZlciAuZGVjby1sYXllci0tMSB7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxNXB4LCAwLCAwKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgxNXB4LCAwLCAwKTtcbn1cbi5wcmluY2luZy1pdGVtOmhvdmVyIC5kZWNvLWxheWVyLS0yIHtcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKC0xNXB4LCAwLCAwKTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTVweCwgMCwgMCk7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IHN0eWxlPVwid2lkdGg6IDU1MHB4XCI+XG4gICAgPGRpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGNvbC1tZC0xMlwiPlxuICAgICAgICA8IS0tZGVidXQgcHJldXZlIGQnaWRlbnRpdMOpIC0tPlxuICAgICAgICA8bGFiZWw+UHJldXZlIGQnaWRlbnRpdMOpIDwvbGFiZWw+XG4gICAgICAgIDxzZWxlY3RcbiAgICAgICAgICA6Y2xhc3M9XCJgJHt0eXBlQ2xhc3N9IGZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21gXCJcbiAgICAgICAgICB2LW1vZGVsPVwidHlwZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+LS0gU8OpbGVjdGlvbm5lciBsZSB0eXBlIGRlIGRvY3VtZW50IC0tPC9vcHRpb24+XG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIm5hdGlvbmFsSWRDYXJkXCI+Q2FydGUgZCdpZGVudGl0w6k8L29wdGlvbj5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwicGFzc3BvcnRcIj5QYXNzcG9ydDwvb3B0aW9uPlxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJkcml2ZXJMaWNlbmNlXCI+UGVybWlzIGRlIGNvbmR1aXJlPC9vcHRpb24+XG4gICAgICAgIDwvc2VsZWN0PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPkNlIGNoYW1wcyBlc3QgcmVxdWlzPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGVmdCBteS0wXCI+XG4gICAgICAgICAgPGkgaWQ9XCJwb3BvdmVyLXRhcmdldC0xXCIgY2xhc3M9XCJtZGkgbWRpLWluZm9ybWF0aW9uXCI+PC9pPlxuICAgICAgICAgIDxiLXBvcG92ZXJcbiAgICAgICAgICAgIHRhcmdldD1cInBvcG92ZXItdGFyZ2V0LTFcIlxuICAgICAgICAgICAgdHJpZ2dlcnM9XCJob3ZlclwiXG4gICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHRlbXBsYXRlICN0aXRsZT5Ob3RpY2UgVMOpbMOpY2hhcmdlbWVudCBkZSBkb2N1bWVudHM8L3RlbXBsYXRlPlxuICAgICAgICAgICAgVm91cyBhdmV6IGxhIHBvc3NpYmlsaXTDqSBkZSB0w6lsw6ljaGFyZ2VyIHBsdXNpZXVycyBkb2N1bWVudCwgaWxcbiAgICAgICAgICAgIHN1ZmZpdCBkZSBmYWlyZSBnbGlzc2VyIGTDqXBvc2VyIG91IGJpZW4gY2xpcXVlciBzdXIgbCdlc3BhY2VcbiAgICAgICAgICAgIHJlc2VydsOpZSBwb3VyIGFqb3V0ZXIgdW4gZG9jdW1lbnRcbiAgICAgICAgICA8L2ItcG9wb3Zlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPCEtLWRyYWcgYW5kIGRyb3AgZmlsZSAtLT5cbiAgICAgICAgICA8dnVlLWRyb3B6b25lXG4gICAgICAgICAgICByZWY9XCJteVZ1ZURyb3B6b25lXCJcbiAgICAgICAgICAgIGlkPVwiZHJvcHpvbmVcIlxuICAgICAgICAgICAgOm9wdGlvbnM9XCJkcm9wem9uZU9wdGlvbnNcIlxuICAgICAgICAgICAgOm1heC1udW1iZXItb2YtZmlsZXM9XCIxXCJcbiAgICAgICAgICAgIEB2ZHJvcHpvbmUtc2VuZGluZy1tdWx0aXBsZT1cInNlbmRcIlxuICAgICAgICAgICAgQHZkcm9wem9uZS1maWxlLWFkZGVkPVwiaGFuZGxlTW9yZUZpbGVcIlxuICAgICAgICAgICAgQHZkcm9wem9uZS1yZW1vdmVkLWZpbGU9XCJoYW5kbGVSZW1vdmVGaWxlXCJcbiAgICAgICAgICAgIEB2ZHJvcHpvbmUtc3VjY2Vzcy1tdWx0aXBsZT1cInNlbmRNdWx0aTFcIlxuICAgICAgICAgID48L3Z1ZS1kcm9wem9uZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDwhLS1GaW4gUHJldXZlIGQnaWRlbnRpdMOpLS0+XG4gICAgICA8IS0taGViZXJnZW1lbnQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtbWQtMTIgbXQtNFwiPlxuICAgICAgICA8bGFiZWxcbiAgICAgICAgICA+Vm91cyBwb3V2ZXogdMOpbMOpY2hhcmdlclxuICAgICAgICAgIDxiPnVuIGp1c3RpZmljYXRpZiBkZSBkb21pY2lsZSA8L2I+XG4gICAgICAgICAgRGF0YW50IGRlIG1vaW5zIGRlIDMgbW9pcyBwYXJtaXMgbGEgbGlzdGUgZGVzIGRvY3VtZW50cyBjaS1kZXNzb3VzXG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICA+U2kgdm91cyDDqnRlcyBoZWJlcmfDqSwgdm91cyBkZXZleiBhdXNzaSB0w6lsw6ljaGFyZ2VyIHVuZSBhdHRlc3RhdGlvblxuICAgICAgICAgICAgZCdoZWJlcmdlbWVudCBhaW5zaSBxdWUgbGEgcGnDqGNlIGQnaWRlbnRpdMOpIGR1IHByb3Bpw6l0YWlyZTwvc21hbGxcbiAgICAgICAgICA+XG5cbiAgICAgICAgICA6KjwvbGFiZWxcbiAgICAgICAgPlxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgOmNsYXNzPVwiYCR7dHlwZUNsYXNzMX0gZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbWBcIlxuICAgICAgICAgIHYtbW9kZWw9XCJ0eXBlMVwiXG4gICAgICAgID5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+LS0gU8OpbGVjdGlvbm5lciBsZSB0eXBlIGRlIGRvY3VtZW50IC0tPC9vcHRpb24+XG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInV0aWxpdHlCaWxsXCI+XG4gICAgICAgICAgICBVbmUgZmFjdHVyZSBkJ8OpbGVjdHJpY2l0w6ksIGQnZWF1LCBkZSBnYXogb3UgYmllbiBkZSB0w6lsw6lwaG9uZSAoY2VsYVxuICAgICAgICAgICAgdmF1dCBhdXNzaSBwb3VyIGxlcyBmYWN0dXJlcyBkZSB0w6lsw6lwaG9uZSBtb2JpbGUpXG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImluY29tZVRheERvY3VtZW50XCI+XG4gICAgICAgICAgICBVbiBhdmlzIGQnaW1wb3NpdGlvbiDDoCBsJ2ltcG9zaXRpb24gc3VyIGxlIHJldmVudSBvdSB1biBhdmlzIGRlXG4gICAgICAgICAgICBzaXR1YXRpb24gZMOpY2xhcmF0aXZlIMOgIGwnaW1ww7R0IHN1ciBsZSByZXZlbnVcbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiaG91c2luZ1RheFwiPlxuICAgICAgICAgICAgQXZpcyBkJ2ltcG9zdGlvbiDDoCBsYSB0YXhlIGQnaGFiaXRhdGlvblxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJob21lSW5zdXJhbmNlXCI+XG4gICAgICAgICAgICBVbmUgYXR0ZXN0YXRpb24gb3UgdW5lIGZhY3R1cmUgZCdhc3N1cmFuY2UgZHUgbG9nZW1lbnQgYXVxdWVsIHZvdXNcbiAgICAgICAgICAgIMOqdGVzIGRvbWljaWxpw6lzXG4gICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInJlbnRhbFJlY2VpcHRcIj5cbiAgICAgICAgICAgIHVuZSBxdWl0dGFuY2UgZGUgbG95ZXIgb3UgYmllbiB1biB0aXRyZSBkZSBwcm9wcmnDqXTDqVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJzb2NpYWxBaWRTdGF0ZW1lbnRcIj5cbiAgICAgICAgICAgIFVuIHJlbGV2w6kgZGUgbGEgY2Fpc3NlIGQnYWxsb2NhdGlvbnMgZmFtaWxpYWxlcywgbWVudGlvbm5hbnQgbGVzXG4gICAgICAgICAgICBhaWRlcyBsacOpZXMgYXUgbG9nZW1lbnRcbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+Q2UgY2hhbXBzIGVzdCByZXF1aXM8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZWZ0IG15LTBcIj5cbiAgICAgICAgICA8aSBpZD1cInBvcG92ZXItdGFyZ2V0LTJcIiBjbGFzcz1cIm1kaSBtZGktaW5mb3JtYXRpb25cIj48L2k+XG4gICAgICAgICAgPGItcG9wb3ZlclxuICAgICAgICAgICAgdGFyZ2V0PVwicG9wb3Zlci10YXJnZXQtMlwiXG4gICAgICAgICAgICB0cmlnZ2Vycz1cImhvdmVyXCJcbiAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGVtcGxhdGUgI3RpdGxlPk5vdGljZSBUw6lsw6ljaGFyZ2VtZW50IGRvY3VtZW50PC90ZW1wbGF0ZT5cbiAgICAgICAgICAgIFZvdXMgYXZleiBsYSBwb3NzaWJpbGl0w6kgZGUgdMOpbMOpY2hhcmdlciBwbHVzaWV1cnMgZG9jdW1lbnQsIGlsXG4gICAgICAgICAgICBzdWZmaXQgZGUgZmFpcmUgZ2xpc3NlciBkw6lwb3NlciBvdSBiaWVuIGNsaXF1ZXIgc3VyIGwnZXNwYWNlXG4gICAgICAgICAgICByZXNlcnbDqWUgcG91ciBham91dGVyIHVuIGRvY3VtZW50XG4gICAgICAgICAgPC9iLXBvcG92ZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8dnVlLWRyb3B6b25lXG4gICAgICAgICAgcmVmPVwibXlWdWVEcm9wem9uZTFcIlxuICAgICAgICAgIGlkPVwiZHJvcHpvbmUxXCJcbiAgICAgICAgICA6b3B0aW9ucz1cImRyb3B6b25lT3B0aW9uczFcIlxuICAgICAgICAgIDptYXgtbnVtYmVyLW9mLWZpbGVzPVwiNFwiXG4gICAgICAgICAgQHZkcm9wem9uZS1maWxlLWFkZGVkPVwiaGFuZGxlTW9yZUZpbGUxXCJcbiAgICAgICAgICBAdmRyb3B6b25lLXJlbW92ZWQtZmlsZT1cImhhbmRsZVJlbW92ZUZpbGUxXCJcbiAgICAgICAgICBAdmRyb3B6b25lLXNlbmRpbmctbXVsdGlwbGU9XCJzZW5kRmlsZVwiXG4gICAgICAgICAgQHZkcm9wem9uZS1zdWNjZXNzLW11bHRpcGxlPVwic2VuZE11bHRpXCJcbiAgICAgICAgPjwvdnVlLWRyb3B6b25lPlxuICAgICAgPC9kaXY+XG4gICAgICA8IS0tQnV0dG9uIHNlbmQgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwicC0yIG1iLTQgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XG5cbiAgICAgICAgPCEtLSBCdXR0b24gcG91ciBzYXV2ZWdhcmRlciBsZXMgZmljaGllcnMgbG9yc3F1ZSBsJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIHVuIGNvbXB0ZSAtLT5cbiAgICAgICAgPGJ1dHRvbiB2LWlmPVwiYWN0aW9uc1wiIGNsYXNzPVwiYnRuX2Jsb2NrXCIgQGNsaWNrPVwic2F2ZVwiPlxuICAgICAgICAgIFNhdXZlZ2FyZGVyXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwhLS0gQnV0dG9uIHBvdXIgcGFzc2VyIMOgIGwnw6l0YXBlIHN1aXZhbnRlIGxvcnMgZGUgbCdpbnNjcmlwdGlvbiAtLT5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgIHYtZWxzZVxuICAgICAgICAgIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1zbSBidXR0b24tc2lnbiBtdC0zXCJcbiAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICBAY2xpY2s9XCJuZXh0XCJcbiAgICAgICAgPlxuICAgICAgICAgIMOpdGFwZSBzdWl2YW50ZVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0PlxuaW1wb3J0IHZ1ZTJEcm9wem9uZSBmcm9tIFwidnVlMi1kcm9wem9uZVwiO1xuaW1wb3J0IFwidnVlMi1kcm9wem9uZS9kaXN0L3Z1ZTJEcm9wem9uZS5taW4uY3NzXCI7XG5pbXBvcnQgc3RvcmUgZnJvbSBcIi4uL3N0b3JlXCI7XG5pbXBvcnQgTUFJTl9VUkwgZnJvbSBcIi4uLy4uL2NvbW1vbi5qcy9tYWluVXJsXCI7XG5pbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XG5pbXBvcnQgeyBoZWFkZXJzIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi5qcy9oZWFkZXJcIjtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc3RvcmUsXG4gIGNvbXBvbmVudHM6IHtcbiAgICB2dWVEcm9wem9uZTogdnVlMkRyb3B6b25lLFxuICB9LFxuICBwcm9wczoge1xuICAgIGFjdGlvbnM6IFN0cmluZyxcbiAgfSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGx1czogZmFsc2UsXG4gICAgICBmaWNoaWVyOiBcIlwiLFxuICAgICAgZmljaGllcnM6IFtdLFxuICAgICAgZmljaGllcjFzOiBbXSxcbiAgICAgIGZpY2hpZXIxOiBcIlwiLFxuICAgICAgdGl0bGU6IFwiXCIsXG4gICAgICB0eXBlOiBcIlwiLFxuICAgICAgdHlwZTE6IFwiXCIsXG4gICAgICB0eXBlQ2xhc3MxOiBcIlwiLFxuICAgICAgdHlwZUNsYXNzOiBcIlwiLFxuICAgICAgbmFtZTogW10sXG4gICAgICBuYW1lMTogW10sXG4gICAgICBtb2RhbDogXCJreWNcIixcbiAgICAgIGVycm9yOiB0cnVlLFxuICAgICAgdXBsb2FkMTogZmFsc2UsXG4gICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgZHJvcHpvbmVPcHRpb25zOiB7XG4gICAgICAgIHVybDogXCJodHRwczovL2h0dHBiaW4ub3JnL3Bvc3RcIixcbiAgICAgICAgdGh1bWJuYWlsV2lkdGg6IDE1MCxcbiAgICAgICAgbWF4RmlsZXNpemU6IDE1LFxuICAgICAgICBtYXhGaWxlczogNCxcbiAgICAgICAgdXBsb2FkTXVsdGlwbGU6IHRydWUsXG4gICAgICAgIGhlYWRlcnM6IHsgXCJNeS1Bd2Vzb21lLUhlYWRlclwiOiBcImhlYWRlciB2YWx1ZVwiIH0sXG4gICAgICAgIGFkZFJlbW92ZUxpbmtzOiB0cnVlLFxuICAgICAgICBkaWN0RGVmYXVsdE1lc3NhZ2U6XG4gICAgICAgICAgXCI8aSBjbGFzcz0nbWRpIG1kaS1jbG91ZC11cGxvYWQnPjwvaT5HTElTU0VaIEVUIERFUE9TRVIgTEEgUElFQ0UgRCdJREVOVElURVwiLFxuICAgICAgfSxcbiAgICAgIGRyb3B6b25lT3B0aW9uczE6IHtcbiAgICAgICAgdXJsOiBcImh0dHBzOi8vaHR0cGJpbi5vcmcvcG9zdFwiLFxuICAgICAgICB0aHVtYm5haWxXaWR0aDogMTUwLFxuICAgICAgICBtYXhGaWxlc2l6ZTogMTUsXG4gICAgICAgIG1heEZpbGVzOiA0LFxuICAgICAgICBoZWFkZXJzOiB7IFwiTXktQXdlc29tZS1IZWFkZXJcIjogXCJoZWFkZXIgdmFsdWVcIiB9LFxuICAgICAgICBhZGRSZW1vdmVMaW5rczogdHJ1ZSxcbiAgICAgICAgdXBsb2FkTXVsdGlwbGU6IHRydWUsXG4gICAgICAgIGRpY3REZWZhdWx0TWVzc2FnZTpcbiAgICAgICAgICBcIjxpIGNsYXNzPSdtZGkgbWRpLWNsb3VkLXVwbG9hZCc+PC9pPkdMSVNTRVogRVQgREVQT1NFUiBMRSBKVVNUSUZJQ0FUSUYgREUgRE9NSUNJTEVcIixcbiAgICAgIH0sXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBzdGVwOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFN0ZXA7XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRTdGVwXCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgbG9hZGluZzoge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRMb2FkaW5nO1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0TG9hZGluZ1wiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBtb3VudGVkKCkge1xuICAgIC8vdGhpcy4kZWwucmVtb3ZlQ2hpbGQodGhpcy4kcmVmcy5tb3JlKVxuXG4gICAgLy9Qb3VyIHN1cHByaW1lciBsZXMgZG9ubsOpZXMgc3RvY2vDqXNcbiAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcInN0ZXBcIik7XG4gICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oXCJzdGF0dXNcIik7XG4gICAgc2Vzc2lvblN0b3JhZ2UucmVtb3ZlSXRlbShcImFtb3VudFwiKTtcbiAgfSxcbiAgd2F0Y2g6IHtcbiAgICBlcnJvcih2YWwpIHt9LFxuICAgIHVwbG9hZDEodmFsKSB7XG4gICAgICBpZiAodGhpcy51cGxvYWQxKSB7XG4gICAgICAgIGNvbnN0IGZpY2hpZXJzID0gdGhpcy5maWNoaWVyMXM7XG4gICAgICAgIGNvbnN0IG5hbWVzID0gdGhpcy5uYW1lMTtcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGZpY2hpZXJzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSBmaWNoaWVyc1tpbmRleF07XG4gICAgICAgICAgY29uc3QgbmFtZSA9IG5hbWVzW2luZGV4XTtcbiAgICAgICAgICBjb25zdCAkZGF0YSA9IHtcbiAgICAgICAgICAgIGRvY3VtZW50OiB7XG4gICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBkb2N1bWVudERhdGE6IGVsZW1lbnQsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGlmIChpbmRleCA9PSBmaWNoaWVycy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICB0aGlzLnhocigkZGF0YSwgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcIm1pblRva2VuXCIpLCB0cnVlKTtcbiAgICAgICAgICAgIGlmICghdGhpcy5lcnJvcikge1xuICAgICAgICAgICAgICAvL3RoaXMuc3RlcCA9IDg7XG4gICAgICAgICAgICAgIHRoaXMudXBsb2FkMSA9IGZhbHNlO1xuICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLm9yaWdpbiArIFwiL2luc2NyaXB0aW9uX3N1Y2Nlc3NcIjtcbiAgICAgICAgICAgICAgLy90aGlzLiRyb3V0ZXIucHVzaCgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMueGhyKCRkYXRhLCBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwibWluVG9rZW5cIiksIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBsb2FkKCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdGhpcy4kdnMubG9hZGluZyh7XG4gICAgICAgIGJhY2tncm91bmQ6IFwiIzdhNzZjYlwiLFxuICAgICAgICBjb2xvcjogXCIjZmZmXCIsXG4gICAgICAgIHRleHQ6IFwiVmV1aWxsZXogcGF0aWVudGVyXCIsXG4gICAgICAgIHR5cGU6IFwic2NhbGVcIixcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgc2VuZE11bHRpKGZpbGVzLCByZXNwb25zZSkge1xuICAgICAgdGhpcy5maWNoaWVyID0gZmlsZXNbMF07XG4gICAgICB0aGlzLm5hbWUucHVzaChmaWxlc1swXS51cGxvYWQuZmlsZW5hbWUpO1xuICAgICAgdGhpcy5maWNoaWVycy5wdXNoKGZpbGVzWzBdLmRhdGFVUkwpO1xuICAgIH0sXG4gICAgc2VuZE11bHRpMShmaWxlcywgcmVzcG9uc2UpIHtcbiAgICAgIHRoaXMuZmljaGllcjEgPSBmaWxlc1swXTtcbiAgICAgIHRoaXMubmFtZTEucHVzaChmaWxlc1swXS51cGxvYWQuZmlsZW5hbWUpO1xuICAgICAgdGhpcy5maWNoaWVyMXMucHVzaChmaWxlc1swXS5kYXRhVVJMKTtcbiAgICB9LFxuICAgIGhhbmRsZU1vcmVGaWxlKCkge1xuICAgICAgY29uc3QgZWxlbWVudCA9IHRoaXMuJHJlZnMubXlWdWVEcm9wem9uZS4kZWwucXVlcnlTZWxlY3RvcihcIi5kei1wcmV2aWV3XCIpO1xuICAgICAgY29uc3QgZGl2ID0gYDxkaXYgY2xhc3M9XCJtb3JlXCIgcmVmPVwibW9yZVwiIHYtc2hvdz1cInBsdXNcIj48aSBjbGFzcz1cIm1kaSBtZGktcGx1c1wiPjwvaT48L2Rpdj5gO1xuICAgICAgLy9lbGVtZW50LmFwcGVuZENoaWxkKGRpdilcbiAgICAgIGxldCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJkei1wcmV2aWV3XCIpO1xuICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJkei1wcm9jZXNzaW5nXCIpO1xuICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJkei1pbWFnZS1wcmV2aWV3XCIpO1xuICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJkei1zdWNjZXNzXCIpO1xuICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJkei1jb21wbGV0ZVwiKTtcbiAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwibW9yZVwiKTtcbiAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBgPGkgY2xhc3M9XCJtZGkgbWRpLXBsdXNcIj48L2k+YDtcblxuICAgICAgLy9jb25zb2xlLmxvZyh0aGlzLnBsdXMpO1xuICAgICAgbGV0IGRyb3B6b25lID0gdGhpcy4kcmVmcy5teVZ1ZURyb3B6b25lLmRyb3B6b25lO1xuICAgICAgY29uc29sZS5sb2coZHJvcHpvbmUuZmlsZXMubGVuZ3RoKTtcbiAgICAgIGlmIChkcm9wem9uZS5maWxlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgZWxlbWVudC5iZWZvcmUoY29udGFpbmVyKTtcbiAgICAgIH0gZWxzZSBpZiAoZHJvcHpvbmUuZmlsZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnRzID0gdGhpcy4kcmVmcy5teVZ1ZURyb3B6b25lLiRlbC5xdWVyeVNlbGVjdG9yKFwiLm1vcmVcIik7XG4gICAgICAgIGVsZW1lbnRzLnJlbW92ZSgpO1xuICAgICAgfSBlbHNlIGlmIChkcm9wem9uZS5maWxlcy5sZW5ndGggPT09IDQpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLiRyZWZzLm15VnVlRHJvcHpvbmUuJGVsLnF1ZXJ5U2VsZWN0b3IoXCIubW9yZVwiKTtcbiAgICAgICAgZWxlbWVudHMucmVtb3ZlKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBoYW5kbGVSZW1vdmVGaWxlKCkge1xuICAgICAgbGV0IGRyb3B6b25lID0gdGhpcy4kcmVmcy5teVZ1ZURyb3B6b25lLmRyb3B6b25lO1xuICAgICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLiRyZWZzLm15VnVlRHJvcHpvbmUuJGVsLnF1ZXJ5U2VsZWN0b3IoXCIubW9yZVwiKTtcblxuICAgICAgZWxlbWVudHMucmVtb3ZlKCk7XG4gICAgICBpZiAoZHJvcHpvbmUuZmlsZXMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID1cbiAgICAgICAgICB0aGlzLiRyZWZzLm15VnVlRHJvcHpvbmUuJGVsLnF1ZXJ5U2VsZWN0b3IoXCIuZHotcHJldmlld1wiKTtcbiAgICAgICAgLy9lbGVtZW50LmFwcGVuZENoaWxkKGRpdilcbiAgICAgICAgbGV0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwiZHotcHJldmlld1wiKTtcbiAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJkei1wcm9jZXNzaW5nXCIpO1xuICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChcImR6LWltYWdlLXByZXZpZXdcIik7XG4gICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwiZHotc3VjY2Vzc1wiKTtcbiAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJkei1jb21wbGV0ZVwiKTtcbiAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJtb3JlXCIpO1xuICAgICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gYDxpIGNsYXNzPVwibWRpIG1kaS1wbHVzXCI+PC9pPmA7XG4gICAgICAgIGVsZW1lbnQuYmVmb3JlKGNvbnRhaW5lcik7XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8vQWpvdXRzIGRlcyBmaWNoaWVyc1xuICAgIGhhbmRsZU1vcmVGaWxlMSgpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPVxuICAgICAgICB0aGlzLiRyZWZzLm15VnVlRHJvcHpvbmUxLiRlbC5xdWVyeVNlbGVjdG9yKFwiLmR6LXByZXZpZXdcIik7XG4gICAgICBjb25zdCBkaXYgPSBgPGRpdiBjbGFzcz1cIm1vcmVcIiByZWY9XCJtb3JlXCIgdi1zaG93PVwicGx1c1wiPjxpIGNsYXNzPVwibWRpIG1kaS1wbHVzXCI+PC9pPjwvZGl2PmA7XG4gICAgICAvL2VsZW1lbnQuYXBwZW5kQ2hpbGQoZGl2KVxuICAgICAgbGV0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChcImR6LXByZXZpZXdcIik7XG4gICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChcImR6LXByb2Nlc3NpbmdcIik7XG4gICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChcImR6LWltYWdlLXByZXZpZXdcIik7XG4gICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChcImR6LXN1Y2Nlc3NcIik7XG4gICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChcImR6LWNvbXBsZXRlXCIpO1xuICAgICAgY29udGFpbmVyLmlubmVySFRNTCA9IGA8aSBjbGFzcz1cIm1kaSBtZGktcGx1c1wiPjwvaT5gO1xuXG4gICAgICBsZXQgZHJvcHpvbmUgPSB0aGlzLiRyZWZzLm15VnVlRHJvcHpvbmUxLmRyb3B6b25lO1xuXG5cbiAgICAgIGlmIChkcm9wem9uZS5maWxlcy5sZW5ndGggPT0gMSkge1xuICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChcIm1vcmUxXCIpO1xuICAgICAgICBlbGVtZW50LmJlZm9yZShjb250YWluZXIpO1xuICAgICAgfSBlbHNlIGlmIChkcm9wem9uZS5maWxlcy5sZW5ndGggPT0gMCkge1xuICAgICAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuJHJlZnMubXlWdWVEcm9wem9uZTEuJGVsLnF1ZXJ5U2VsZWN0b3IoXCIubW9yZTFcIik7XG4gICAgICAgIGVsZW1lbnRzLnJlbW92ZSgpO1xuICAgICAgfSBlbHNlIGlmIChkcm9wem9uZS5maWxlcy5sZW5ndGggPT09IDQpIHtcbiAgICAgICAgY29uc3QgZWxlbWVudHMgPSB0aGlzLiRyZWZzLm15VnVlRHJvcHpvbmUxLiRlbC5xdWVyeVNlbGVjdG9yKFwiLm1vcmUxXCIpO1xuICAgICAgICBlbGVtZW50cy5yZW1vdmUoKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLy9zdXBwcmVzc2lvbiBkJ3VuIGZpY2hpZXJcbiAgICBoYW5kbGVSZW1vdmVGaWxlMSgpIHtcbiAgICAgIGxldCBkcm9wem9uZSA9IHRoaXMuJHJlZnMubXlWdWVEcm9wem9uZTEuZHJvcHpvbmU7XG4gICAgICBjb25zdCBlbGVtZW50cyA9IHRoaXMuJHJlZnMubXlWdWVEcm9wem9uZTEuJGVsLnF1ZXJ5U2VsZWN0b3IoXCIubW9yZTFcIik7XG4gICAgICBlbGVtZW50cy5yZW1vdmUoKTtcbiAgICAgIGlmIChkcm9wem9uZS5maWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPVxuICAgICAgICAgIHRoaXMuJHJlZnMubXlWdWVEcm9wem9uZTEuJGVsLnF1ZXJ5U2VsZWN0b3IoXCIuZHotcHJldmlld1wiKTtcbiAgICAgICAgXG4gICAgICAgIGxldCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO1xuICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChcImR6LXByZXZpZXdcIik7XG4gICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwiZHotcHJvY2Vzc2luZ1wiKTtcbiAgICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoXCJkei1pbWFnZS1wcmV2aWV3XCIpO1xuICAgICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZChcImR6LXN1Y2Nlc3NcIik7XG4gICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwiZHotY29tcGxldGVcIik7XG4gICAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKFwibW9yZTFcIik7XG4gICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgPSBgPGkgY2xhc3M9XCJtZGkgbWRpLXBsdXNcIj48L2k+YDtcbiAgICAgICAgZWxlbWVudC5iZWZvcmUoY29udGFpbmVyKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHNlbmQoZmlsZSwgeGhyLCBmb3JtRGF0YSkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaWxlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHRoaXMudG9CYXNlNjQoZmlsZVtpXSkudGhlbigoZSkgPT4ge1xuICAgICAgICAgIC8vdGhpcy5maWNoaWVyPWVcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBzZW5kRmlsZShmaWxlLCB4aHIsIGZvcm1EYXRhKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdGhpcy50b0Jhc2U2NChmaWxlW2ldKS50aGVuKChlKSA9PiBlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIHRvQmFzZTY0KGZpbGUpIHtcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKGZpbGUpO1xuICAgICAgICByZWFkZXIub25sb2FkID0gKCkgPT4gcmVzb2x2ZShyZWFkZXIucmVzdWx0KTtcbiAgICAgICAgcmVhZGVyLm9uZXJyb3IgPSAoZXJyb3IpID0+IHJlamVjdChlcnJvcik7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9wZW5Ob3RpZmljYXRpb24odGl0bGUsIHRleHQsIGNvbG9yLCBwb3NpdGlvbiA9IFwidG9wLXJpZ2h0XCIsIGljb24gPSBudWxsKSB7XG4gICAgICBjb25zdCBub3RpID0gdGhpcy4kdnMubm90aWZpY2F0aW9uKHtcbiAgICAgICAgaWNvbixcbiAgICAgICAgY29sb3IsXG4gICAgICAgIHBvc2l0aW9uLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgdGV4dCxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgYXN5bmMgeGhyKCRkYXRhLCB0b2tlbiwgY3JlYXRlZCA9IGZhbHNlKSB7XG4gICAgICB0aGlzLmxvYWQoKTtcblxuICAgIFxuICAgICAgLy9oZWFkZXJcbiAgICAgIGNvbnN0IGhlYWRlciA9IGhlYWRlcnModG9rZW4pO1xuICAgICAgY29uc3QgaW5zdGFuY2UgPSBheGlvcy5jcmVhdGUoe1xuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiLFxuICAgICAgfSk7XG5cbiAgICAgIC8vQXBwZWwgYXhpb3NcblxuICAgICAgYXdhaXQgaW5zdGFuY2VcbiAgICAgICAgLnBvc3QoTUFJTl9VUkwuQUREX0RPQ1VNRU5ULCAkZGF0YSwgaGVhZGVyKVxuICAgICAgICAudGhlbigoZSkgPT4ge1xuICAgICAgICAgIGlmIChlLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgdGhpcy5sb2FkaW5nLmNsb3NlKCk7XG4gICAgICAgICAgICB0aGlzLmVycm9yID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLm9wZW5Ob3RpZmljYXRpb24oXG4gICAgICAgICAgICAgIFwiU2F1dmVnYXJkZXJcIixcbiAgICAgICAgICAgICAgXCJMZXMgZG9jdW1lbnRzIG9udCDDqXTDqSBTYXV2ZWdhcmRlclwiLFxuICAgICAgICAgICAgICBcInN1Y2Nlc3NcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLmxvYWRpbmcpIHRoaXMubG9hZGluZy5jbG9zZSgpO1xuICAgICAgICAgIGNvbnN0ICRkYXRhID0gZS5yZXNwb25zZS5yZXF1ZXN0LnJlc3BvbnNlO1xuICAgICAgICAgIGNvbnN0IHggPSBKU09OLnBhcnNlKCRkYXRhKTtcbiAgICAgICAgICB0aGlzLmVycm9yID0gdHJ1ZTtcbiAgICAgICAgICBpZiAoeC5jb2RlKSB7XG4gICAgICAgICAgICBpZiAoeC5jb2RlID09IFwiR0xPQkFMX1ZBTElEQVRJT05fRVJST1JcIikge1xuICAgICAgICAgICAgICB0aGlzLm9wZW5Ob3RpZmljYXRpb24oXCJPb3BzXCIsIHguZGV0YWlscyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoeC5jb2RlID09IFwiUE9SVEFMX0lOVkFMSURfU0VTU0lPTlwiKSB7XG4gICAgICAgICAgICAgIHRoaXMub3Blbk5vdGlmaWNhdGlvbihcbiAgICAgICAgICAgICAgICBcIk9vcHNcIixcbiAgICAgICAgICAgICAgICBcIkxhIHNlc3Npb24gYSBleHBpcsOpZSwgdmV1aWxsZXogdm91cyByZWNvbm5lY3RlclwiXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmICghY3JlYXRlZCkge1xuICAgICAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKCk7XG4gICAgICAgICAgICAgICAgdGhpcy4kcm91dGVyLnB1c2goXCIvXCIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoeC5jb2RlID09IFwiUE9SVEFMX0lOVkFMSURfRE9DVU1FTlRcIikge1xuICAgICAgICAgICAgICB0aGlzLm9wZW5Ob3RpZmljYXRpb24oXG4gICAgICAgICAgICAgICAgXCJPb3BzXCIsXG4gICAgICAgICAgICAgICAgXCJWZXVpbGxleiBpbnNlcmVyIHVuIGF1dHJlIGRvY3VtZW50XCJcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvL0VucmVnaXN0csOpIGxlcyBmaWNoaWVycyBsb3JzcXVlIGwndXRpbGlzYXRldXIgYSBkw6lqw6AgdW4gY29tcHRlXG4gICAgc2F2ZSgpIHtcbiAgICAgIC8vTG9yc3F1ZSBsYSBwcmV1dmUgIGQnaWRlbnRpdMOpIG4nZXN0IHBhcyBzZWxlY3Rpb25uw6llXG4gICAgICBpZiAoIXRoaXMudHlwZSkge1xuICAgICAgICB0aGlzLnR5cGVDbGFzcyA9IFwiaXMtaW52YWxpZFwiO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIHRoaXMudHlwZUNsYXNzID0gXCJpcy12YWxpZFwiO1xuXG4gICAgICAvL1NpIGxlIGZpbGNoaWVyIChGaWxlIHByZXV2ZSBkJ2lkZW50aXTDqSkgZXN0IHZpZGVcbiAgICAgIGlmICghdGhpcy5maWNoaWVyKSB7XG4gICAgICAgIHRoaXMub3Blbk5vdGlmaWNhdGlvbihcbiAgICAgICAgICBcIk9vb3BzXCIsXG4gICAgICAgICAgXCJWZXVpbGxleiBham91dGVyIHZvdHJlIHBpw6hjZSBkJ2lkZW50aXTDqVwiLFxuICAgICAgICAgIFwiZGFuZ2VyXCJcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG5cbiAgLy9Mb3JzcXVlIHNpdHVhdGlvbiBkJ2hlYmVyZ2VtZW50IG4nZXN0IHBhcyBzZWxlY3Rpb25uw6llXG4gICAgICBpZiAoIXRoaXMudHlwZTEpIHtcbiAgICAgICAgdGhpcy50eXBlQ2xhc3MxID0gXCJpcy1pbnZhbGlkXCI7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuICAgICAgdGhpcy50eXBlQ2xhc3MxID0gXCJpcy12YWxpZFwiO1xuXG4gICAgICAgLy9TaSBsZSBmaWxjaGllciAoRmlsZSBzaXR1YXRpb24gZCdoZXJnZW1lbnQpIGVzdCB2aWRlXG4gICAgICBpZiAoIXRoaXMuZmljaGllcjEpIHtcbiAgICAgICAgdGhpcy5vcGVuTm90aWZpY2F0aW9uKFxuICAgICAgICAgIFwiT29vcHNcIixcbiAgICAgICAgICBcIlZldWlsbGV6IGFqb3V0ZXIgdm90cmUganVzdGlmaWNhdGlmIGRlIGRvbWljaWxlXCIsXG4gICAgICAgICAgXCJkYW5nZXJcIlxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGZpY2hpZXJzID0gdGhpcy5maWNoaWVycztcbiAgICAgIGNvbnN0IG5hbWVzID0gdGhpcy5uYW1lO1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFycmF5Lmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZmljaGllcnNbaW5kZXhdO1xuICAgICAgICBjb25zdCBuYW1lID0gbmFtZXNbaW5kZXhdO1xuICAgICBcbiAgICAgIH1cbiAgICAgIHZhciAkZGF0YSA9IHtcbiAgICAgICAgZG9jdW1lbnQ6IHtcbiAgICAgICAgICBuYW1lOiB0aGlzLm5hbWVzLFxuICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgfSxcbiAgICAgICAgZG9jdW1lbnREYXRhOiB0aGlzLmZpY2hpZXJzLFxuICAgICAgfTtcblxuICAgICAgLy9FbnZvaSBkZXMgZGF0YXMgXG4gICAgICB0aGlzLnhocigkZGF0YSwgc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcInRva2VuXCIpKS50aGVuKChlKSA9PiB7fSk7XG4gICAgfSxcblxuICAgIC8vUGFzc2VyIMOgIGwnw6l0YXBlIHN1aXZhbnRlXG4gICAgbmV4dCgpIHtcbiAgICAgICAgLy9Mb3JzcXVlIGxhIHByZXV2ZSAgZCdpZGVudGl0w6kgbidlc3QgcGFzIHNlbGVjdGlvbm7DqWVcbiAgICAgIGlmICghdGhpcy50eXBlKSB7XG4gICAgICAgIHRoaXMudHlwZUNsYXNzID0gXCJpcy1pbnZhbGlkXCI7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuICAgICAgdGhpcy50eXBlQ2xhc3MgPSBcImlzLXZhbGlkXCI7XG5cbiAgICAgIC8vU2kgbGUgZmlsY2hpZXIgKEZpbGUgcHJldXZlIGQnaWRlbnRpdMOpKSBlc3QgdmlkZVxuICAgICAgaWYgKCF0aGlzLmZpY2hpZXIpIHtcbiAgICAgICAgdGhpcy5vcGVuTm90aWZpY2F0aW9uKFxuICAgICAgICAgIFwiT29vcHNcIixcbiAgICAgICAgICBcIlZldWlsbGV6IGFqb3V0ZXIgdm90cmUgcGnDqGNlIGQnaWRlbnRpdMOpXCIsXG4gICAgICAgICAgXCJkYW5nZXJcIlxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cblxuIC8vTG9yc3F1ZSBzaXR1YXRpb24gZCdoZWJlcmdlbWVudCBuJ2VzdCBwYXMgc2VsZWN0aW9ubsOpZVxuICAgICAgaWYgKCF0aGlzLnR5cGUxKSB7XG4gICAgICAgIHRoaXMudHlwZUNsYXNzMSA9IFwiaXMtaW52YWxpZFwiO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIHRoaXMudHlwZUNsYXNzMSA9IFwiaXMtdmFsaWRcIjtcblxuXG4gICAgICAgIC8vU2kgbGUgZmlsY2hpZXIgKEZpbGUgc2l0dWF0aW9uIGQnaGVyZ2VtZW50KSBlc3QgdmlkZVxuICAgICAgaWYgKCF0aGlzLmZpY2hpZXIxKSB7XG4gICAgICAgIHRoaXMub3Blbk5vdGlmaWNhdGlvbihcbiAgICAgICAgICBcIk9vb3BzXCIsXG4gICAgICAgICAgXCJWZXVpbGxleiBham91dGVyIHZvdHJlIGp1c3RpZmljYXRpZiBkZSBkb21pY2lsZVwiLFxuICAgICAgICAgIFwiZGFuZ2VyXCJcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpY2hpZXJzID0gdGhpcy5maWNoaWVycztcbiAgICAgIGNvbnN0IG5hbWVzID0gdGhpcy5uYW1lO1xuICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGZpY2hpZXJzLmxlbmd0aDsgaW5kZXgrKykge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZmljaGllcnNbaW5kZXhdO1xuICAgICAgICBjb25zdCBuYW1lID0gbmFtZXNbaW5kZXhdO1xuICAgICAgICBjb25zdCAkZGF0YSA9IHtcbiAgICAgICAgICBkb2N1bWVudDoge1xuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRvY3VtZW50RGF0YTogZWxlbWVudCxcbiAgICAgICAgfTtcblxuICAgICAgICBpZiAoaW5kZXggPT0gZmljaGllcnMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgIHRoaXMueGhyKCRkYXRhLCBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwibWluVG9rZW5cIiksIHRydWUpLnRoZW4oXG4gICAgICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgICAgICBpZiAodGhpcy5lcnJvciA9PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHRoaXMudXBsb2FkMSA9IHRydWU7XG4gICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMueGhyKCRkYXRhLCBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwibWluVG9rZW5cIiksIHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgfSxcbn07XG48L3NjcmlwdD5cbjxzdHlsZT5cbi5tb3JlLFxuLm1vcmUxIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW46IDE2cHg7XG4gIGJvcmRlcjogM3B4IGRhc2hlZCBsaWdodGdyYXk7XG4gIHdpZHRoOiAyMDBweDtcbiAgaGVpZ2h0OiAyMDBweDtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgY29sb3I6IGxpZ2h0Z3JheTtcbiAgYm9yZGVyLXJhZGl1czogOHB4O1xuICBmb250LXNpemU6IDYwcHg7XG4gIGxpbmUtaGVpZ2h0OiAyMDBweDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB6LWluZGV4OiAtMTtcbn1cbi5hbnksXG4uYW55MSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4jZHJvcHpvbmUxLFxuI2Ryb3B6b25lIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIG9wYWNpdHk6IDAuNTtcbn1cblxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdj5cbiAgICA8aDY+PC9oNj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImJvZHlzIGp1c3RpZnktY29udGVudC1jZW50ZXIgYW5pbWF0ZV9fYW5pbWF0ZWQgYW5pbWF0ZV9fYm91bmNlIHRleHQtY2VudGVyXCJcbiAgICAgIGVudGVyLWFjdGl2ZS1jbGFzcz1cImFuaW1hdGVfX2FuaW1hdGVkIGFuaW1hdGVfX2JvdW5jZVwiXG4gICAgPlxuICAgICAgPGgxPkbDqWxpY2l0YXRpb25zPC9oMT5cbiAgICAgIDxwPiBNZXJjaSwgdm90cmUgZGVtYW5kZSBlc3QgZW4gY291cnMgZGUgdHJhaXRlbWVudOKApiA8L3A+XG4gICAgICA8cD5Ob3RyZSDDqXF1aXBlIHJldmllbmRyYSB2ZXJzIHZvdXMgdHLDqHMgdml0ZSAhIMOAIGJpZW50w7R0LCBsYSB0ZWFtIFY0QUxMICE8L3A+XG4gICAgICA8cm91dGVyLWxpbmsgdG89XCIvXCJcbiAgICAgICAgPkNvbm5lY3Rlei12b3VzIHZpdGUgw6Agdm90cmUgZXNwYWNlIHBlcnNvbm5lbDwvcm91dGVyLWxpbmtcbiAgICAgID5cblxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0PlxuaW1wb3J0IHN0b3JlIGZyb20gXCIuLi9zdG9yZVwiO1xuZXhwb3J0IGRlZmF1bHQge1xuICBzdG9yZSxcbiAgY29tcHV0ZWQ6e1xuICAgIGxvYWRpbmc6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0TG9hZGluZztcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldExvYWRpbmdcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAgbW91bnRlZCgpIHtcbiAgICB0aGlzLmxvYWQoKVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcuY2xvc2UoKVxuICAgIH0sIDEwMDApO1xuICB9LFxuICBiZWZvcmVNb3VudCgpIHtcblxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgIGxvYWQoKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0aGlzLiR2cy5sb2FkaW5nKHtcbiAgICAgICAgYmFja2dyb3VuZDogXCIjN2E3NmNiXCIsXG4gICAgICAgIGNvbG9yOiBcIiNmZmZcIixcbiAgICAgICAgdGV4dDogXCJWZXVpbGxleiBwYXRpZW50ZXJcIixcbiAgICAgICAgdHlwZTogXCJzY2FsZVwiLFxuICAgICAgfSk7XG4gICAgfSxcbiAgfSxcbn07XG48L3NjcmlwdD5cbjxzdHlsZT5cbi5jb25maXJtYXRpb24tY29tcHRlIHtcbiAgZGlzcGxheTogZmxleDtcbn1cbi5ib2R5cyB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICAvKm1hcmdpbi10b3A6IDI1JTsqL1xufVxuLmNvbmZpcm1hdGlvbi1jb21wdGUgbGkge1xuICBsaXN0LXN0eWxlOiBub25lO1xuICBoZWlnaHQ6IDQwcHg7XG4gIHdpZHRoOiA0MHB4O1xuICBiYWNrZ3JvdW5kOiAjNDNiNjlhO1xuICBtYXJnaW46IDAgOHB4O1xuICBib3JkZXItcmFkaXVzOiA1MCU7XG4gIGJveC1zaGFkb3c6IHJnYmEoMTQ5LCAxNTcsIDE2NSwgMC4yKSAwcHggOHB4IDI0cHg7XG4gIGFuaW1hdGlvbjogc3RhcnQtYW5pbWF0aW9uIDEuNXMgbGluZWFyIGluZmluaXRlO1xufVxuLmNvbmZpcm1hdGlvbi1jb21wdGUgbGk6bnRoLWNoaWxkKDEpIHtcbiAgYW5pbWF0aW9uLWRlbGF5OiAwO1xufVxuLmNvbmZpcm1hdGlvbi1jb21wdGUgbGk6bnRoLWNoaWxkKDIpIHtcbiAgYW5pbWF0aW9uLWRlbGF5OiAwLjI1cztcbn1cbi5jb25maXJtYXRpb24tY29tcHRlIGxpOm50aC1jaGlsZCgzKSB7XG4gIGFuaW1hdGlvbi1kZWxheTogMC41cztcbn1cbi5jb25maXJtYXRpb24tY29tcHRlIGxpOm50aC1jaGlsZCg0KSB7XG4gIGFuaW1hdGlvbi1kZWxheTogMC43NXM7XG59XG5Aa2V5ZnJhbWVzIHN0YXJ0LWFuaW1hdGlvbiB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cbiAgNTAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gIH1cbiAgNzUlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTMwcHgpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDBweCk7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgc3R5bGU9XCJ3aWR0aDogNTUwcHhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtbWQtMTJcIj5cbiAgICAgIDxsYWJlbCBjbGFzcz1cInB0LTUgcGItM1wiIHN0eWxlPVwiY29sb3I6ICM4OGI5ZmZcIlxuICAgICAgICA+TW9udGFudCBjb25zZWlsbMOpICogNTAgRVVSPC9sYWJlbFxuICAgICAgPlxuICAgICAgPHNlbGVjdFxuICAgICAgICA6Y2xhc3M9XCJgJHtpbml0Q2xhc3N9IGZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21gXCJcbiAgICAgICAgdi1tb2RlbD1cImluaXRcIlxuICAgICAgICB2LW9uOmNoYW5nZT1cImluaXRDbGFzcyA9ICcnXCJcbiAgICAgID5cbiAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPkNob2lzc2lzc2V6IHZvdHJlIGZvcmZhaXQgaW5pdGlhbDwvb3B0aW9uPlxuICAgICAgICA8b3B0aW9uXG4gICAgICAgICAgdi1mb3I9XCIoaXRlbSwga2V5KSBpbiB0YWJcIlxuICAgICAgICAgIDp2YWx1ZT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgIDprZXk9XCJrZXlcIlxuICAgICAgICAgIDpjbGFzcz1cIml0ZW0uY2xhc3NcIlxuICAgICAgICA+XG4gICAgICAgICAgPGIgdi1odG1sPVwiaXRlbS50aXRsZVwiPjwvYj5cbiAgICAgICAgPC9vcHRpb24+XG4gICAgICA8L3NlbGVjdD5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+Q2hvaXNzaXNzZXogdW4gZm9yZmFpdDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDwhLS1CdXR0b24gc2VuZCAtLT5cbiAgICA8ZGl2IGNsYXNzPVwicC0yXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1zbSBidXR0b24tc2lnbiBtdC0zXCJcbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgIEBjbGljaz1cIm5leHRcIlxuICAgICAgPlxuICAgICAgICDDqXRhcGUgc3VpdmFudGVcbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0PlxuaW1wb3J0IHN0b3JlIGZyb20gXCIuLi9zdG9yZVwiO1xuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IE1BSU5fVVJMIGZyb20gXCIuLi8uLi9jb21tb24uanMvbWFpblVybFwiO1xuaW1wb3J0IHsgaGVhZGVycyB9IGZyb20gXCIuLi8uLi9jb21tb24uanMvaGVhZGVyXCI7XG5leHBvcnQgZGVmYXVsdCB7XG4gIHN0b3JlLFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpbml0Q2xhc3M6IFwiXCIsXG4gICAgICB0YWI6IFtcbiAgICAgICAgeyB2YWx1ZTogMTAuMCwgdGl0bGU6IFwiMTAuMDAgRVVSXCIgfSxcbiAgICAgICAgeyB2YWx1ZTogMTUuMCwgdGl0bGU6IFwiMTUuMDAgRVVSXCIgfSxcbiAgICAgICAgeyB2YWx1ZTogMzAuMCwgdGl0bGU6IFwiMzAuMDAgRVVSXCIgfSxcbiAgICAgICAge1xuICAgICAgICAgIHZhbHVlOiA1MC4wLFxuICAgICAgICAgIHRpdGxlOiBgPHNwYW4gc3R5bGU9XCJjb2xvcjogI2JmYTgwNTtcIj5Ew6lww7R0IGNvbnNlaWxsw6kqIDUwLjAwIEVVUjwvc3Bhbj5gLFxuICAgICAgICAgIGNsYXNzOiBcImFjdGlmT3B0aW9uXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHsgdmFsdWU6IDc1LjAsIHRpdGxlOiBcIjc1LjAwIEVVUlwiIH0sXG4gICAgICAgIHsgdmFsdWU6IDEwMC4wLCB0aXRsZTogXCIxMDAuMDAgRVVSXCIgfSxcbiAgICAgICAgeyB2YWx1ZTogMTUwLjAsIHRpdGxlOiBcIjE1MC4wMCBFVVJcIiB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIHN0ZXA6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0U3RlcDtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldFN0ZXBcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBpbml0OiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5pbml0O1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0SW5pdFwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBtZXRob2RzOiB7XG5cbiAgICAvL2xhIGZvbmN0aW9uIHBvdXIgYWZmaWNoZXIgbGVzIG5vdGlmaWNhdGlvbnNcbiAgICBvcGVuTm90aWZpY2F0aW9uKHRpdGxlLCB0ZXh0LCBjb2xvciwgcG9zaXRpb24gPSBcInRvcC1yaWdodFwiLCBpY29uID0gbnVsbCkge1xuICAgICAgY29uc3Qgbm90aSA9IHRoaXMuJHZzLm5vdGlmaWNhdGlvbih7XG4gICAgICAgIGljb24sXG4gICAgICAgIGNvbG9yLFxuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHRleHQsXG4gICAgICB9KTtcbiAgICB9LFxuXG4gICAgLy9sYSBmb25jdGlvbiBwb3VyIGxlIGxvYWRpbmdcbiAgICBcbiAgICBsb2FkKCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdGhpcy4kdnMubG9hZGluZyh7XG4gICAgICAgIGJhY2tncm91bmQ6IFwiIzdhNzZjYlwiLFxuICAgICAgICBjb2xvcjogXCIjZmZmXCIsXG4gICAgICAgIHRleHQ6IFwiVmV1aWxsZXogcGF0aWVudGVyXCIsXG4gICAgICAgIHR5cGU6IFwic2NhbGVcIixcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvL1Bhc3NlciDDoCBsJ2V0YXBlIHN1aXZhbnRlXG4gICAgbmV4dCgpIHtcbiAgICAgIGlmICghdGhpcy5pbml0KSB7XG4gICAgICAgIHRoaXMuaW5pdENsYXNzID0gXCJpcy1pbnZhbGlkXCI7XG4gICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgfVxuXG4gICAgICAvL2xlIGxvYWRpbmdcbiAgICAgIHRoaXMubG9hZCgpO1xuICAgICBcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gYXhpb3MuY3JlYXRlKHtcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiBcImluY2x1ZGVcIixcbiAgICAgIH0pO1xuXG5cbiAgICAvL1N0b2NrYWdlIHRlbXBvcmFpcmUgZHUgdG9rZW4gcmXDp3UgZGVwdWlzIGwnQVBJXG4gICAgICBjb25zdCBteVRva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcInRva2VuXCIpXG4gICAgICAgID8gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcInRva2VuXCIpXG4gICAgICAgIDogdGhpcy50b2tlbjtcblxuICAgICAvL2xlIEhlYWRlclxuXG4gICAgICBjb25zdCBoZWFkZXIgPSBoZWFkZXJzKCk7XG5cbiAgICAvL2xlcyBkb25uZXIgZW52b3llclxuICAgICAgY29uc3QgJGRhdGEgPSB7XG4gICAgICAgIHNlc3Npb25Ub2tlbjogdGhpcy4kc3RvcmUuc3RhdGUudG9rZW4/dGhpcy4kc3RvcmUuc3RhdGUudG9rZW46c2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbSgnY3JlYXRlZFRva2VuJyksXG4gICAgICB9O1xuICAgICAgdGhpcy5pbml0Q2xhc3MgPSBcImlzLXZhbGlkXCI7XG5cbiAgICAgIGluc3RhbmNlXG4gICAgICAgIC5wb3N0KE1BSU5fVVJMLkNPTkZJUk1BVElPTl9MT0dJTiwgJGRhdGEsIGhlYWRlcilcbiAgICAgICAgLnRoZW4oKGUpID0+IHtcbiAgICAgICAgICBpZiAoZS5kYXRhKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5sb2FkaW5nKSB0aGlzLmxvYWRpbmcuY2xvc2UoKTtcbiAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXCJtaW5Ub2tlblwiLCBlLmRhdGEuYXV0aFRva2VuKTtcbiAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oXCJhbW91bnRcIiwgdGhpcy5pbml0KTtcbiAgICAgICAgICAgIHRoaXMuc3RlcCA9IDY7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5sb2FkaW5nKSB0aGlzLmxvYWRpbmcuY2xvc2UoKTtcbiAgICAgICAgICBjb25zdCAkZGF0YSA9IGUucmVzcG9uc2UucmVxdWVzdC5yZXNwb25zZTtcbiAgICAgICAgICBjb25zdCB4ID0gSlNPTi5wYXJzZSgkZGF0YSk7XG4gICAgICAgICAgaWYgKHguY29kZSkge1xuICAgICAgICAgICAgaWYgKHguY29kZSA9PSBcIkdMT0JBTF9WQUxJREFUSU9OX0VSUk9SXCIpIHtcbiAgICAgICAgICAgICAgdGhpcy5vcGVuTm90aWZpY2F0aW9uKFwiT29wc1wiLCB4LmRldGFpbHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHguY29kZSA9PSBcIlBPUlRBTF9JTlZBTElEX1NFU1NJT05cIikge1xuICAgICAgICAgICAgICB0aGlzLm9wZW5Ob3RpZmljYXRpb24oXG4gICAgICAgICAgICAgICAgXCJPb3BzXCIsXG4gICAgICAgICAgICAgICAgXCJMYSBzZXNzaW9uIGEgZXhwaXLDqWUsIHZldWlsbGV6IHZvdXMgcmVjb25uZWN0ZXJcIlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5jbGVhcigpO1xuICAgICAgICAgICAgICBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh4LmNvZGUgPT0gXCJSRUdJU1RFUl9JTlZBTElEX1NFU1NJT05fVE9LRU5cIikge1xuICAgICAgICAgICAgICB0aGlzLm9wZW5Ob3RpZmljYXRpb24oXG4gICAgICAgICAgICAgICAgXCJPb3BzXCIsXG4gICAgICAgICAgICAgICAgXCJWZXVpbGxleiByZWNvbW1lbmNlciwgdW5lIGVycmV1ciBzJ2VzdCBwcm9kdWl0ZVwiXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9LFxuICB9LFxufTtcbjwvc2NyaXB0PlxuPHN0eWxlPlxuLmFjdGlmT3B0aW9uIHtcbiAgY29sb3I6ICNiZmE4MDU7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2PlxuICAgIDxkaXYgc3R5bGU9XCJ3aWR0aDogNTUwcHhcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMiBjb2wtbWQtMlwiPjwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOCB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZCB0ZXh0LWNlbnRlciBwdC0zXCJcbiAgICAgICAgICAgICAgPlZvdHJlIGNvbXB0ZSBzZXJhIGRlYml0w6kgZGUgPGI+e3sgaW5pdCB9fSBFVVI8L2I+IHBvdXIgcG91ciBsZVxuICAgICAgICAgICAgICBkw6lww7R0IGluaXRpYWw8L3NtYWxsXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtNyBtYi03XCI+XG4gICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgIFBvdXIgdGVybWluZXIgbGEgdHJhbnNhY3Rpb24sIG5vdXMgYWxsb25zIHZvdXMgcsOpZGlyaWdlciB2ZXJzXG4gICAgICAgICAgICAgICAgbGVzIHNlcnZldXJzIHNlY3VyaXPDqXNcbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBzdG9yZSBmcm9tIFwiLi4vc3RvcmVcIjtcbmltcG9ydCBNQUlOX1VSTCBmcm9tIFwiLi4vLi4vY29tbW9uLmpzL21haW5VcmxcIjtcbmltcG9ydCB7IGhlYWRlcnMgfSBmcm9tIFwiLi4vLi4vY29tbW9uLmpzL21haW5VcmxcIjtcbmltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc3RvcmUsXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9LFxuICBtZXRob2RzOiB7XG4gICAgbG9hZCgpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRoaXMuJHZzLmxvYWRpbmcoe1xuICAgICAgICBiYWNrZ3JvdW5kOiBcIiM3YTc2Y2JcIixcbiAgICAgICAgY29sb3I6IFwiI2ZmZlwiLFxuICAgICAgICB0ZXh0OiBcIlZldWlsbGV6IHBhdGllbnRlclwiLFxuICAgICAgICB0eXBlOiBcInNjYWxlXCIsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9wZW5Ob3RpZmljYXRpb24odGl0bGUsIHRleHQsIGNvbG9yLCBwb3NpdGlvbiA9IFwidG9wLXJpZ2h0XCIsIGljb24gPSBudWxsKSB7XG4gICAgICBjb25zdCBub3RpID0gdGhpcy4kdnMubm90aWZpY2F0aW9uKHtcbiAgICAgICAgaWNvbixcbiAgICAgICAgY29sb3IsXG4gICAgICAgIHBvc2l0aW9uLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgdGV4dCxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgYXN5bmMgeGhyKHRva2VuKSB7XG4gICAgICBjb25zdCBoZWFkZXJzID0ge1xuICAgICAgICBhY2NlcHQ6IFwiKi8qXCIsXG4gICAgICAgIFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICBcIngtcG9zLWNsaWVudC1rZXlcIjogcHJvY2Vzcy5lbnYuUE9TX0NMSUVOVF9LRVksXG4gICAgICAgIFwieC1wb3Mtc2Vzc2lvbi10b2tlblwiOiB0b2tlbixcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IGhlYWRlciA9IGhlYWRlcnModG9rZW4pO1xuICAgICAgY29uc3QgaW5zdGFuY2UgPSBheGlvcy5jcmVhdGUoe1xuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiLFxuICAgICAgfSk7XG4gICAgICBjb25zdCAkZGF0YSA9IHtcbiAgICAgICAgcmV0dXJuVXJsOiB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgXCIvcGF5ZW1lbnRcIixcbiAgICAgICAgZGVsaXZlcnlBZGRyZXNzOiB7XG4gICAgICAgICAgYWRkcmVzczE6IHRoaXMuYWRyZXNzZTEsXG4gICAgICAgICAgemlwOiB0aGlzLnppcCxcbiAgICAgICAgICBjaXR5OiB0aGlzLmNpdHksXG4gICAgICAgICAgY291bnRyeTogdGhpcy5jb3VudHJ5LFxuICAgICAgICB9LFxuICAgICAgICBwcm9kdWN0czogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJlZmVyZW5jZTogXCJ2NGFfbG9hZFwiLFxuICAgICAgICAgICAgYW1vdW50OiBwYXJzZUZsb2F0KHRoaXMuaW5pdCksXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgIH07XG4gICAgICBhd2FpdCBpbnN0YW5jZVxuICAgICAgICAucG9zdChNQUlOX1VSTC5PUkRFUl9DQVJELCAkZGF0YSwgaGVhZGVyKVxuICAgICAgICAudGhlbigoZSkgPT4ge1xuICAgICAgICAgIHRoaXMub3Blbk5vdGlmaWNhdGlvbihcIlNhdXZlZ2FyZGVyXCIsIFwiUGFpZW1lbnQgYWNjZXB0w6lcIiwgXCJzdWNjZXNzXCIpO1xuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gZS5kYXRhLnJlZGlyZWN0VXJsO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5sb2FkaW5nKSB0aGlzLmxvYWRpbmcuY2xvc2UoKTtcbiAgICAgICAgICBjb25zdCAkZGF0YSA9IGUucmVzcG9uc2UucmVxdWVzdC5yZXNwb25zZTtcbiAgICAgICAgICBjb25zdCB4ID0gSlNPTi5wYXJzZSgkZGF0YSk7XG4gICAgICAgICAgaWYgKHguY29kZSkge1xuICAgICAgICAgICAgaWYgKHguY29kZSA9PSBcIkdMT0JBTF9WQUxJREFUSU9OX0VSUk9SXCIpIHtcbiAgICAgICAgICAgICAgdGhpcy5vcGVuTm90aWZpY2F0aW9uKFwiT29wc1wiLCB4LmRldGFpbHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHguY29kZSA9PSBcIlBPUlRBTF9JTlZBTElEX1NFU1NJT05cIikge1xuICAgICAgICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaChcIi9wYXllbWVudD9zdGF0dXM9ZXhwaXJlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0sXG4gIH0sXG4gIGJlZm9yZU1vdW50KCkge1xuICAgIHRoaXMubG9hZCgpO1xuICAgIHRoaXMueGhyKHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJtaW5Ub2tlblwiKSk7XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgaW5pdDoge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuaW5pdDtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldEluaXRcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBzdGVwOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFN0ZXA7XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRTdGVwXCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgZm9yZmFpdDoge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuZm9yZmFpdDtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldEZvcmZhaXRcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBsb2FkaW5nOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldExvYWRpbmc7XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRMb2FkaW5nXCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgemlwOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS56aXA7XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRaaXBcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBjaXR5OiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5jaXR5O1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0Q2l0eVwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIGFkcmVzc2UxOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5hZHJlc3NlMTtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldEFkcmVzc2UxXCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgY291bnRyeToge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuY291bnRyeTtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldENvdW50cnlcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbn07XG48L3NjcmlwdD5cbjxzdHlsZT5cbi52LWFwcGxpY2F0aW9uIC5yZWQsXG4udi1hcHBsaWNhdGlvbiAuYmx1ZSxcbi52LWFwcGxpY2F0aW9uIC5ncmVlbiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHBpbms7XG59XG4uYmctZ3JhZGllbnQge1xuICBiYWNrZ3JvdW5kOiAjYzlkNmZmO1xuICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0byByaWdodCwgI2UyZTJlMiwgI2M5ZDZmZik7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgI2UyZTJlMiwgI2M5ZDZmZik7XG59XG51bCBsaSB7XG4gIG1hcmdpbi1ib3R0b206IDEuNHJlbTtcbn1cbi5kZWNvLWxheWVyIHtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiAtd2Via2l0LXRyYW5zZm9ybSAwLjVzO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cztcbn1cbi5idG4tY3VzdG9tIHtcbiAgYmFja2dyb3VuZDogI2M2NDU0NTtcbiAgY29sb3I6ICNmZmY7XG4gIGJvcmRlci1yYWRpdXM6IDIwcHg7XG59XG5cbi5pbWctZmxvYXQge1xuICB3aWR0aDogNTBweDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IC0zLjVyZW07XG4gIHJpZ2h0OiAxcmVtO1xufVxuXG4ucHJpbmNpbmctaXRlbSB7XG4gIHRyYW5zaXRpb246IGFsbCAxNTBtcyBlYXNlLW91dDtcbn1cbi5wcmluY2luZy1pdGVtIC5yZWQsXG4ucHJpbmNpbmctaXRlbSAuYmx1ZSxcbi5wcmluY2luZy1pdGVtIC5ncmVlbiB7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLnByaW5jaW5nLWl0ZW06aG92ZXIge1xuICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xufVxuLnByaW5jaW5nLWl0ZW06aG92ZXIgLmRlY28tbGF5ZXItLTEge1xuICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTVweCwgMCwgMCk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMTVweCwgMCwgMCk7XG59XG4ucHJpbmNpbmctaXRlbTpob3ZlciAuZGVjby1sYXllci0tMiB7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMTVweCwgMCwgMCk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTE1cHgsIDAsIDApO1xufVxuPC9zdHlsZT5cbiIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxyXG4uZm9ybS1ncm91cCB7XHJcbiAgcGFkZGluZy10b3A6IDBweDtcclxufVxyXG4udy0xMDAge1xyXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbn1cclxuLmJhY2sge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIGJhY2tncm91bmQ6ICNjOGRkZmI7XHJcbn1cclxuLnYtYXBwbGljYXRpb24gdWwsXHJcbi52LWFwcGxpY2F0aW9uIG9sIHtcclxuICBwYWRkaW5nLWxlZnQ6IDBweDtcclxufVxyXG5cclxuLmZvcm0tc2lnbiB7XHJcbiAgZmxleDogMTAwJTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgYmFja2dyb3VuZDogI2ZmZjtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbn1cclxuLnJlZ2lzdGVyIHtcclxuICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudChsZWZ0LCAjNzM3MDk5NTcsICNkMmU3ZjA2Yyk7XHJcbiAgbWFyZ2luLXRvcDogMyU7XHJcbiAgcGFkZGluZzogMyU7XHJcbn1cclxuLnJlZ2lzdGVyLWxlZnQge1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBjb2xvcjogI2ZmZjtcclxuICBtYXJnaW4tdG9wOiA0JTtcclxufVxyXG4uYnV0dG9uLXNpZ24ge1xyXG4gIGJhY2tncm91bmQ6ICM4YWI3Zjg7XHJcbiAgYm9yZGVyLWNvbG9yOiAjOGFiN2Y4O1xyXG4gIGNvbG9yOiAjZmZmO1xyXG59XHJcbi5pbWctYW5pbWF0ZSB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb246IG1vdmVyIDJzIGluZmluaXRlIGFsdGVybmF0ZTtcclxuICBhbmltYXRpb246IG1vdmVyIDFzIGluZmluaXRlIGFsdGVybmF0ZTtcclxufVxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgbW92ZXIge1xyXG4gIDAlIHtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcclxuICB9XHJcbiAgMTAwJSB7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTIwcHgpO1xyXG4gIH1cclxufVxyXG5Aa2V5ZnJhbWVzIG1vdmVyIHtcclxuICAwJSB7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XHJcbiAgfVxyXG4gIDEwMCUge1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0yMHB4KTtcclxuICB9XHJcbn1cclxuLnJlZ2lzdGVyLWxlZnQgcCB7XHJcbiAgZm9udC13ZWlnaHQ6IGxpZ2h0ZXI7XHJcbiAgcGFkZGluZzogMTIlO1xyXG4gIG1hcmdpbi10b3A6IC05JTtcclxufVxyXG4ucmVnaXN0ZXIgLnJlZ2lzdGVyLWZvcm0ge1xyXG4gIHBhZGRpbmc6IDEwJTtcclxuICBtYXJnaW4tdG9wOiAxMCU7XHJcbn1cclxuLmJ0blJlZ2lzdGVyIHtcclxuICBmbG9hdDogcmlnaHQ7XHJcbiAgbWFyZ2luLXRvcDogMTAlO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBib3JkZXItcmFkaXVzOiAxLjVyZW07XHJcbiAgcGFkZGluZzogMiU7XHJcbiAgYmFja2dyb3VuZDogIzAwNjJjYztcclxuICBjb2xvcjogI2ZmZjtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIHdpZHRoOiA1MCU7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcbi5yZWdpc3RlciAubmF2LXRhYnMge1xyXG4gIG1hcmdpbi10b3A6IDMlO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBiYWNrZ3JvdW5kOiAjMDA2MmNjO1xyXG4gIGJvcmRlci1yYWRpdXM6IDEuNXJlbTtcclxuICB3aWR0aDogMjglO1xyXG4gIGZsb2F0OiByaWdodDtcclxufVxyXG4ucmVnaXN0ZXIgLm5hdi10YWJzIC5uYXYtbGluayB7XHJcbiAgcGFkZGluZzogMiU7XHJcbiAgaGVpZ2h0OiAzNHB4O1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgY29sb3I6ICNmZmY7XHJcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDEuNXJlbTtcclxuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMS41cmVtO1xyXG59XHJcbi5yZWdpc3RlciAubmF2LXRhYnMgLm5hdi1saW5rOmhvdmVyIHtcclxuICBib3JkZXI6IG5vbmU7XHJcbn1cclxuLnJlZ2lzdGVyIC5uYXYtdGFicyAubmF2LWxpbmsuYWN0aXZlIHtcclxuICB3aWR0aDogMTAwcHg7XHJcbiAgY29sb3I6ICMwMDYyY2M7XHJcbiAgYm9yZGVyOiAycHggc29saWQgIzAwNjJjYztcclxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAxLjVyZW07XHJcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMS41cmVtO1xyXG59XHJcbi5yZWdpc3Rlci1oZWFkaW5nIHtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgbWFyZ2luLXRvcDogOCU7XHJcbiAgbWFyZ2luLWJvdHRvbTogLTE1JTtcclxuICBjb2xvcjogIzQ5NTA1NztcclxufVxyXG5cclxuLkZvcm1TdGVwTGlzdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIG1hcmdpbjogYXV0bztcclxuICBtYXJnaW4tYm90dG9tOiAyNXB4O1xyXG4gIHdpZHRoOiA1NTBweDtcclxufVxyXG5cclxuLkZvcm1TdGVwTGlzdC1pdGVtIHtcclxuICBmbGV4OiAxIDEgNTBweDtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgbGlzdC1zdHlsZTogbm9uZTtcclxuXHJcbiAgJjpiZWZvcmUge1xyXG4gICAgY29udGVudDogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gIH1cclxufVxyXG5cclxuLkZvcm1TdGVwSWNvbiB7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIHdpZHRoOiA2MHB4O1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcblxyXG4gICYuaXMtYWN0aXZlIHtcclxuICAgIC5Gb3JtU3RlcEljb24tY2lyY2xlIHtcclxuICAgICAgYmFja2dyb3VuZDogIzg4YjlmZjtcclxuICAgICAgYm9yZGVyOiA0cHggc29saWQgIzdlYjJmZDtcclxuICAgICAgY29sb3I6ICNmZmY7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmlzLXBhc3NlZCB7XHJcbiAgICAmOmFmdGVyIHtcclxuICAgICAgYmFja2dyb3VuZDogIzg4YjlmZjtcclxuICAgIH1cclxuXHJcbiAgICAuRm9ybVN0ZXBJY29uLWNpcmNsZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICM3ZWIyZmQ7XHJcbiAgICAgIGNvbG9yOiAjZmZmO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJjphZnRlciB7XHJcbiAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgYmFja2dyb3VuZDogI2Q0ZDRkNDtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHJpZ2h0OiAtMTAwMCU7XHJcbiAgICB0b3A6IDIwcHg7XHJcbiAgICBsZWZ0OiAxMHB4O1xyXG4gICAgaGVpZ2h0OiA0cHg7XHJcbiAgICB6LWluZGV4OiAxO1xyXG4gIH1cclxuXHJcbiAgJi5Gb3JtU3RlcEljb24tLWxhc3Qge1xyXG4gICAgJjphZnRlciB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uRm9ybVN0ZXBJY29uLWNpcmNsZSB7XHJcbiAgYmFja2dyb3VuZDogI2Q0ZDRkNDtcclxuICBjb2xvcjogI2E5YTlhOTtcclxuICBmb250LXNpemU6IDE2cHg7XHJcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgd2lkdGg6IDQwcHg7XHJcbiAgaGVpZ2h0OiA0MHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICB6LWluZGV4OiAyO1xyXG59XHJcblxyXG4uRm9ybVN0ZXBJY29uLXRpdGxlIHtcclxuICBkaXNwbGF5OiBibG9jaztcclxuICBmb250LXNpemU6IDAuN2VtO1xyXG4gIG1hcmdpbi10b3A6IDAuNWVtO1xyXG59XHJcbmEge1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxufVxyXG5wIHtcclxuICBtYXJnaW4tYm90dG9tOiAwcHg7XHJcbiAgbGluZS1oZWlnaHQ6IDE1cHg7XHJcbn1cclxuLnJvdyB7XHJcbiAgbWFyZ2luOiAwcHg7XHJcbn1cclxuXHJcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQyNXB4KSB7XHJcbiAgLmJhY2ssLmZvcm0tc2lnbmluIHtcclxuICAgIGhlaWdodDogNTh2aDtcclxuICB9XHJcbn1cclxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XHJcbiAgLmJhY2ssLmZvcm0tc2lnbmluIHtcclxuICAgIGhlaWdodDogNTh2aDtcclxuICB9XHJcbiAgLmZvcm0tZ3JvdXAge1xyXG4gICAgd2lkdGg6IDUwMHB4O1xyXG4gIH1cclxuICAudi1hcHBsaWNhdGlvbi0td3JhcCB7XHJcbiAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gIH1cclxufVxyXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDI0cHgpIHtcclxuICAuYmFjaywuZm9ybS1zaWduaW4ge1xyXG4gICAgaGVpZ2h0OiAxMDB2aDtcclxuICB9XHJcbiAgLmZvcm0tZ3JvdXAge1xyXG4gICAgd2lkdGg6IDMwMHB4O1xyXG4gIH1cclxufVxyXG4iLCI8dGVtcGxhdGU+XG4gIDxkaXY+XG4gICAgPGJlYXV0aWZ1bC1jaGF0XG4gICAgICA6cGFydGljaXBhbnRzPVwicGFydGljaXBhbnRzXCJcbiAgICAgIDp0aXRsZUltYWdlVXJsPVwidGl0bGVJbWFnZVVybFwiXG4gICAgICA6b25NZXNzYWdlV2FzU2VudD1cIm9uTWVzc2FnZVdhc1NlbnRcIlxuICAgICAgOm1lc3NhZ2VMaXN0PVwibWVzc2FnZUxpc3RcIlxuICAgICAgOm5ld01lc3NhZ2VzQ291bnQ9XCJuZXdNZXNzYWdlc0NvdW50XCJcbiAgICAgIDppc09wZW49XCJpc0NoYXRPcGVuXCJcbiAgICAgIDpjbG9zZT1cImNsb3NlQ2hhdFwiXG4gICAgICA6b3Blbj1cIm9wZW5DaGF0XCJcbiAgICAgIDpzaG93RGVsZXRpb249XCJ0cnVlXCJcbiAgICAgIDpzaG93VHlwaW5nSW5kaWNhdG9yPVwic2hvd1R5cGluZ0luZGljYXRvclwiXG4gICAgICA6c2hvd0xhdW5jaGVyPVwidHJ1ZVwiXG4gICAgICA6c2hvd0Nsb3NlQnV0dG9uPVwidHJ1ZVwiXG4gICAgICA6Y29sb3JzPVwiY29sb3JzXCJcbiAgICAgIDphbHdheXNTY3JvbGxUb0JvdHRvbT1cImFsd2F5c1Njcm9sbFRvQm90dG9tXCJcbiAgICAgIDptZXNzYWdlU3R5bGluZz1cIm1lc3NhZ2VTdHlsaW5nXCJcbiAgICAgIEBvblR5cGU9XCJoYW5kbGVPblR5cGVcIlxuICAgICAgQGVkaXQ9XCJlZGl0TWVzc2FnZVwiIC8+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5leHBvcnQgZGVmYXVsdCB7XG4gIGRhdGEoKSB7XG4gIHJldHVybiB7XG4gIGlzT3BlbjonJyxcbiAgaXNDaGF0T3BlbjpmYWxzZSxcbiAgbWVzc2FnZVN0eWxpbmc6JycsXG4gIGFsd2F5c1Njcm9sbFRvQm90dG9tOicnLFxuICBjb2xvcnM6IHtcbiAgICAgIGhlYWRlcjoge1xuICAgICAgICBiZzogJyM0ZThjZmYnLFxuICAgICAgICB0ZXh0OiAnI2ZmZmZmZidcbiAgICAgIH0sXG4gICAgICBsYXVuY2hlcjoge1xuICAgICAgICBiZzogJyM0ZThjZmYnXG4gICAgICB9LFxuICAgICAgbWVzc2FnZUxpc3Q6IHtcbiAgICAgICAgYmc6ICcjZmZmZmZmJ1xuICAgICAgfSxcbiAgICAgIHNlbnRNZXNzYWdlOiB7XG4gICAgICAgIGJnOiAnIzRlOGNmZicsXG4gICAgICAgIHRleHQ6ICcjZmZmZmZmJ1xuICAgICAgfSxcbiAgICAgIHJlY2VpdmVkTWVzc2FnZToge1xuICAgICAgICBiZzogJyNlYWVhZWEnLFxuICAgICAgICB0ZXh0OiAnIzIyMjIyMidcbiAgICAgIH0sXG4gICAgICB1c2VySW5wdXQ6IHtcbiAgICAgICAgYmc6ICcjZjRmN2Y5JyxcbiAgICAgICAgdGV4dDogJyM1NjU4NjcnXG4gICAgICB9XG4gICAgfSwgXG4gIHNob3dUeXBpbmdJbmRpY2F0b3I6JycsXG4gIHBhcnRpY2lwYW50czpbXG4gICAgIHtcbiAgICAgICAgaWQ6ICd1c2VyMScsXG4gICAgICAgIG5hbWU6ICdTdXBwb3J0JyxcbiAgICAgICAgaW1hZ2VVcmw6ICdodHRwczovL3d3dy5raW5kcG5nLmNvbS9waWNjL20vMjY5LTI2OTc4ODFfY29tcHV0ZXItaWNvbnMtdXNlci1jbGlwLWFydC10cmFuc3BhcmVudC1wbmctaWNvbi5wbmcnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogJ3VzZXIyJyxcbiAgICAgICAgbmFtZTogJ1N1cHBvcnQnLFxuICAgICAgICBpbWFnZVVybDogJ2h0dHBzOi8vd3d3LmtpbmRwbmcuY29tL3BpY2MvbS8yNjktMjY5Nzg4MV9jb21wdXRlci1pY29ucy11c2VyLWNsaXAtYXJ0LXRyYW5zcGFyZW50LXBuZy1pY29uLnBuZydcbiAgICAgIH1dLFxuICAgICAgdGl0bGVJbWFnZVVybDogJycsXG4gICAgbWVzc2FnZUxpc3Q6IFtcbiAgICAgICAgeyB0eXBlOiAndGV4dCcsIGF1dGhvcjogYG1lYCwgZGF0YTogeyB0ZXh0OiBgQm9uam91ciwgTm91cyBzb21tZXMgbMOgIHBvdXIgcsOpcG9uZHJlIHZvcyBxdWVzdGlvbnMuIEF2ZXotdm91cyBiZXNvaW5zIGQnYWlkZT9gIH0gfSxcbiAgICBdLCBcbiAgICBuZXdNZXNzYWdlc0NvdW50OiAwLFxuICAgIFxuICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBzZW5kTWVzc2FnZSAodGV4dCkge1xuICAgICAgaWYgKHRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLm5ld01lc3NhZ2VzQ291bnQgPSB0aGlzLmlzQ2hhdE9wZW4gPyB0aGlzLm5ld01lc3NhZ2VzQ291bnQgOiB0aGlzLm5ld01lc3NhZ2VzQ291bnQgKyAxXG4gICAgICAgIHRoaXMub25NZXNzYWdlV2FzU2VudCh7IGF1dGhvcjogJ1N1cHBvcnQnLCB0eXBlOiAndGV4dCcsIGRhdGE6IHsgdGV4dCB9IH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBvbk1lc3NhZ2VXYXNTZW50IChtZXNzYWdlKSB7XG4gICAgICAvLyBjYWxsZWQgd2hlbiB0aGUgdXNlciBzZW5kcyBhIG1lc3NhZ2VcbiAgICAgIHRoaXMubWVzc2FnZUxpc3QgPSBbIC4uLnRoaXMubWVzc2FnZUxpc3QsIG1lc3NhZ2UgXVxuICAgIH0sXG4gICAgb3BlbkNoYXQgKCkge1xuICAgICAgLy8gY2FsbGVkIHdoZW4gdGhlIHVzZXIgY2xpY2tzIG9uIHRoZSBmYWIgYnV0dG9uIHRvIG9wZW4gdGhlIGNoYXRcbiAgICAgIHRoaXMuaXNDaGF0T3BlbiA9IHRydWVcbiAgICAgIHRoaXMubmV3TWVzc2FnZXNDb3VudCA9IDBcbiAgICB9LFxuICAgIGNsb3NlQ2hhdCAoKSB7XG4gICAgICAvLyBjYWxsZWQgd2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIGJvdHRvbiB0byBjbG9zZSB0aGUgY2hhdFxuICAgICAgdGhpcy5pc0NoYXRPcGVuID0gZmFsc2VcbiAgICB9LFxuICAgIGhhbmRsZVNjcm9sbFRvVG9wICgpIHtcbiAgICAgIC8vIGNhbGxlZCB3aGVuIHRoZSB1c2VyIHNjcm9sbHMgbWVzc2FnZSBsaXN0IHRvIHRvcFxuICAgICAgLy8gbGV2ZXJhZ2UgcGFnaW5hdGlvbiBmb3IgbG9hZGluZyBhbm90aGVyIHBhZ2Ugb2YgbWVzc2FnZXNcbiAgICB9LFxuICAgIGhhbmRsZU9uVHlwZSAoKSB7XG4gICAgICBjb25zb2xlLmxvZygnRW1pdCB0eXBpbmcgZXZlbnQnKVxuICAgIH0sXG4gICAgZWRpdE1lc3NhZ2UobWVzc2FnZSl7XG4gICAgICBjb25zdCBtID0gdGhpcy5tZXNzYWdlTGlzdC5maW5kKG09Pm0uaWQgPT09IG1lc3NhZ2UuaWQpO1xuICAgICAgbS5pc0VkaXRlZCA9IHRydWU7XG4gICAgICBtLmRhdGEudGV4dCA9IG1lc3NhZ2UuZGF0YS50ZXh0O1xuICAgIH0sXG4gIH1cbn0gICAgXG48L3NjcmlwdD5cbjxzdHlsZT5cbi5zYy1jaGF0LXdpbmRvd1tkYXRhLXYtMDhkNGMwMzhdIHtcbnotaW5kZXg6OTk5OX1cbi5zYy1sYXVuY2hlcltkYXRhLXYtMzdkOTE0M2FdLCAuc2MtbGF1bmNoZXJbZGF0YS12LTM3ZDkxNDNhXTpiZWZvcmUge1xuICAgIHotaW5kZXg6IDk5OTk7XG4gICAgd2lkdGg6IDYwcHg7XG4gICAgaGVpZ2h0OiA2MHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IC4ycyBlYXNlLWluLW91dDtcbn1cbjwvc3R5bGU+IiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiY3VzdG9tLXNpZGVCYXIgZC1mbGV4IGZsZXgtbWQtY29sdW1uIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgPGRpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbWFnZSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNVwiPlxuICAgICAgICA8aW1nIHNyYz1cIi9pbWFnZXMvdjRhbGwtbG9nby5wbmdcIiB3aWR0aD1cIjY1cHhcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgICA8dWwgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIG5hdmlcIj5cbiAgICAgICAgPGxpIHYtZm9yPVwiKGl0ZW0sIGtleSkgaW4gaXRlbXNcIiA6a2V5PVwia2V5XCI+XG4gICAgICAgICAgPHJvdXRlci1saW5rXG4gICAgICAgICAgICA6dG89XCJpdGVtLnRvXCJcbiAgICAgICAgICAgIGNsYXNzLWFjdGl2ZT1cImFjdGl2ZVwiXG4gICAgICAgICAgICBleGFjdFxuICAgICAgICAgICAgY2xhc3M9XCJhY3RpdmUtcm91dGVyXCJcbiAgICAgICAgICAgID48aW1nIDpzcmM9XCJpdGVtLmltZ1wiIGNsYXNzPVwiaW1nLWZsdWlkIHBsLTVcIiAvPlxuICAgICAgICAgICAgPHNwYW4+e3sgaXRlbS50aXRsZSB9fTwvc3Bhbj48L3JvdXRlci1saW5rXG4gICAgICAgICAgPlxuICAgICAgICA8L2xpPlxuICAgICAgIFxuICAgICAgPC91bD5cbiAgICAgXG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5pbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XG5pbXBvcnQgTUFJTl9VUkwgZnJvbSBcIi4uLy4uLy4uLy4uL2NvbW1vbi5qcy9tYWluVXJsXCI7XG5pbXBvcnQgeyBoZWFkZXJzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2NvbW1vbi5qcy9oZWFkZXJcIjtcbmltcG9ydCBzdG9yZSBmcm9tIFwiLi4vLi4vLi4vc3RvcmVcIjtcbmltcG9ydCBDaGF0Qm94IGZyb20gXCIuLi9DaGF0Qm94LnZ1ZVwiO1xuZXhwb3J0IGRlZmF1bHQge1xuICBjb21wb25lbnRzOiB7IENoYXRCb3ggfSxcbiAgc3RvcmUsXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjdGl2ZTogXCJob21lXCIsXG4gICAgICBpdGVtczogW1xuICAgICAgICB7XG4gICAgICAgICAgdG86IFwiL3RyYW5zYWN0aW9uc1wiLFxuICAgICAgICAgIHRpdGxlOiBcIlRyYW5zYWN0aW9uc1wiLFxuICAgICAgICAgIGljb246IFwibWRpIG1kaS1jYXJkXCIsXG4gICAgICAgICAgaW1nOiBcIi9pbWFnZXMvcGljdG9zL3RyYW5zYWN0aW9uLnBuZ1wiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdG86IFwiL21vbmNvbXB0ZVwiLFxuICAgICAgICAgIHRpdGxlOiBcIk1hIGNhcnRlXCIsXG4gICAgICAgICAgaWNvbjogXCJtZGkgbWRpLWNhcmQtYWNjb3VudC1tYWlsXCIsXG4gICAgICAgICAgaW1nOiBcIi9pbWFnZXMvcGljdG9zL2NyZWRpdC1jYXJkLTIucG5nXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICB0bzogXCIvaGlzdG9yaXF1ZVwiLFxuICAgICAgICAgIHRpdGxlOiBcIkNvbW1hbmRlXCIsXG4gICAgICAgICAgaWNvbjogXCJtZGkgbWRpLXN3YXAtaG9yaXpvbnRhbFwiLFxuICAgICAgICAgIGltZzogXCIvaW1hZ2VzL3BpY3Rvcy9zZW50LnBuZ1wiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdG86IFwiL2Rhc2hcIixcbiAgICAgICAgICB0aXRsZTogXCJTdGF0aXN0aXF1ZXNcIixcbiAgICAgICAgICBpY29uOiBcIm1kaSBtZGktY2hhcnQtYmFyLXN0YWNrZWRcIixcbiAgICAgICAgICBpbWc6IFwiL2ltYWdlcy9waWN0b3Mvc3RhdGlzdGlxdWUucG5nXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH0sXG4gIGNvbXB1dGVkOiB7XG4gICAgYWNjb3VudDoge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuYWNjb3VudDtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldEFjY291bnRcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBvcmRlcnM6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLnN0YXRlLm9yZGVyO1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0T3JkZXJcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBjYXJkczoge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuY2FyZDtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldENhcmRcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB0b2tlbjoge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUudG9rZW47XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRUb2tlblwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHRyYW5zYWN0aW9uczoge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUudHJhbnNhY3Rpb25zO1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0VHJhbnNhY3Rpb25zXCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIG1vdW50ZWQoKSB7XG4gICAgXG4gICAgLy9MZSBUb2tlblxuICAgIGNvbnN0IG15VG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwidG9rZW5cIilcbiAgICAgID8gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcInRva2VuXCIpXG4gICAgICA6IHRoaXMudG9rZW47XG5cbi8vSGVhZGVyIGRlIGxhIHJlcXVldGVcbiAgICBjb25zdCBoZWFkZXIgPSBoZWFkZXJzKG15VG9rZW4pO1xuXG4gICAgLy9MYSByZXF1ZXRlXG4gICAgY29uc3QgaW5zdGFuY2UgPSBheGlvcy5jcmVhdGUoe1xuICAgICAgd2l0aENyZWRlbnRpYWxzOiBcImluY2x1ZGVcIixcbiAgICB9KTtcbiAgICB0cnkge1xuICAgICAgaW5zdGFuY2VcbiAgICAgICAgLnBvc3QoTUFJTl9VUkwuUFJPRklMLCB7fSwgaGVhZGVyKVxuICAgICAgICAudGhlbigoZSkgPT4ge1xuICAgICAgICAgIGNvbnN0ICRkYXRhID0gZS5kYXRhO1xuICAgICAgICAgIGlmICgkZGF0YS5hY2NvdW50KSB7XG4gICAgICAgICAgICB0aGlzLmFjY291bnQgPSAkZGF0YS5hY2NvdW50O1xuICAgICAgICAgICAgaWYgKCRkYXRhLmNhcmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgdGhpcy5jYXJkcyA9ICRkYXRhLmNhcmRzO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5jYXJkcyA9IFwiVmlkZVwiO1xuICAgICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9ucyA9IFwiVmlkZVwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5zdGFuY2VcbiAgICAgICAgICAgICAgLnBvc3QoTUFJTl9VUkwuT1JERVJfTElTVCwge30sIGhlYWRlcilcbiAgICAgICAgICAgICAgLnRoZW4oKGUpID0+IHt9KVxuICAgICAgICAgICAgICAuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUucmVzcG9uc2UucmVxdWVzdCkpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5Ob3RpZmljYXRpb24oXG4gICAgICAgICAgICAgIFwiRGVjb25uZXhpb25cIixcbiAgICAgICAgICAgICAgXCJPb29wcyEgbGEgc2Vzc2lvbiBhIGV4cGlyw6llLCB2ZXVpbGxleiB2b3VzIHJlY29ubmVjZXRlclwiLFxuICAgICAgICAgICAgICBcImRhbmdlclwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5jbGVhcigpO1xuICAgICAgICAgIGNvbnN0ICRkYXRhID0gZS5yZXNwb25zZS5yZXF1ZXN0LnJlc3BvbnNlO1xuICAgICAgICAgIGNvbnN0IHggPSBKU09OLnBhcnNlKCRkYXRhKTtcbiAgICAgICAgICB0aGlzLm9wZW5Ob3RpZmljYXRpb24oXG4gICAgICAgICAgICBcIkRlY29ubmV4aW9uXCIsXG4gICAgICAgICAgICBcIk9vb3BzISBsYSBzZXNzaW9uIGEgZXhwaXLDqWUsIHZldWlsbGV6IHZvdXMgcmVjb25uZWNldGVyXCIsXG4gICAgICAgICAgICBcImRhbmdlclwiXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaChcIi9cIik7XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBvcGVuTm90aWZpY2F0aW9uKHRpdGxlLCB0ZXh0LCBjb2xvciwgcG9zaXRpb24gPSBcInRvcC1yaWdodFwiLCBpY29uID0gbnVsbCkge1xuICAgICAgY29uc3Qgbm90aSA9IHRoaXMuJHZzLm5vdGlmaWNhdGlvbih7XG4gICAgICAgIGljb24sXG4gICAgICAgIGNvbG9yLFxuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHRleHQsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHJlY29tbWFuZGF0aW9uKCkge1xuICAgICAgdGhpcy5jb25zb2xlQ2xlYXIoKTtcbiAgICB9LFxuICAgIHJpYigpIHtcbiAgICAgIHRoaXMuY29uc29sZUNsZWFyKCk7XG4gICAgfSxcbiAgICByZWxldmUoKSB7XG4gICAgICB0aGlzLmNvbnNvbGVDbGVhcigpO1xuICAgIH0sXG4gICAgYXNzdXJhbmNlKCkge1xuICAgICAgdGhpcy5jb25zb2xlQ2xlYXIoKTtcbiAgICB9LFxuICAgIHJlZ2xhZ2UoKSB7XG4gICAgICB0aGlzLmNvbnNvbGVDbGVhcigpO1xuICAgIH0sXG4gICAgYWlkZSgpIHtcbiAgICAgIHRoaXMuY29uc29sZUNsZWFyKCk7XG4gICAgfSxcbiAgfSxcbn07XG48L3NjcmlwdD5cbjxzdHlsZSBzY29wZWQ+XG4udi1hcHBsaWNhdGlvbi0td3JhcCB7XG4gIGJhY2tncm91bmQ6ICNlNWU1ZTU7XG59XG4ubmF2aSB7XG4gIG1hcmdpbi10b3A6IDgwcHg7XG59XG4uaW1hZ2Uge1xuICB0b3A6IDUwcHg7XG4gIGxlZnQ6IDEwNXB4O1xufVxuLmxpc3QtdW5zdHlsZWQgbGkge1xuICBtYXJnaW4tbGVmdDogMHB4O1xuICBtYXJnaW4tYm90dG9tOiA0cHg7XG59XG4uc2VjdGlvbiB7XG4gIHBhZGRpbmctbGVmdDogNDFweDtcbiAgbWFyZ2luLXRvcDogMjBweDtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cbi51c2VyX25hbWUge1xuICBwYWRkaW5nLWxlZnQ6IDMzcHg7XG4gIG1hcmdpbi10b3A6IDVweDtcbn1cbi51c2VyX3JvdW5kIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgZm9udC1zaXplOiB4LXNtYWxsO1xuICBib3JkZXI6IDRweDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzFkMWQxZDFkO1xufVxuLm5hbWUge1xuICBtYXJnaW46IDAgOHB4O1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5jdXN0b20tc2lkZUJhciB7XG4gIHdpZHRoOiAyNDFweDtcbiAgaGVpZ2h0OiAxMDB2aDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgcGFkZGluZzogMHB4O1xuICBwYWRkaW5nLXRvcDogMjBweDtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDBweDtcbiAgbGVmdDogMHB4O1xufVxuLmN1c3RvbS1zaWRlQmFyID4gLnVuc3R5bGVkID4gbGkge1xuICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xuICB0cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O1xufVxuLmN1c3RvbS1zaWRlQmFyID4gLmxpc3QtdW5zdHlsZWQgPiBsaSA+IGEsXG4uYWN0aXZlLXJvdXRlciB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgLypiYWNrZ3JvdW5kOiAjZmZmOyovXG4gIGJvcmRlci1yYWRpdXM6IDBweDtcbiAgcGFkZGluZzogOHB4IDE2cHg7XG4gIG1hcmdpbi1ib3R0b206IDRweDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgY29sb3I6ICMwMDAwMDBhMztcbiAgZGlzcGxheTogZmxleDtcbiAgcGFkZGluZy1sZWZ0OiAxNXB4O1xuICBib3JkZXItbGVmdDogNXB4IHNvbGlkICNmZmY7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgZm9udC1zaXplOiAxMnB4O1xuXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG5cbi5jdXN0b20tc2lkZUJhciA+IC5saXN0LXVuc3R5bGVkID4gbGkgPiBhOmhvdmVyLFxuLmN1c3RvbS1zaWRlQmFyID4gLmxpc3QtdW5zdHlsZWQgPiBsaSA+IGEucm91dGVyLWxpbmstYWN0aXZlLFxuLmFjdGl2ZS1yb3V0ZXI6aG92ZXIge1xuICBjb2xvcjogYmxhY2s7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICA5MGRlZyxcbiAgICByZ2JhKDEzNiwgMTg1LCAyNTUsIDAuNDEpIDAlLFxuICAgIHJnYmEoMTM2LCAxODUsIDI1NSwgMCkgNDQuMTElXG4gICk7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBib3JkZXItbGVmdDogNXB4IHNvbGlkICM4OGI5ZmY7XG59XG4uY3VzdG9tLXNpZGVCYXIgPiAubGlzdC11bnN0eWxlZCA+IGxpID4gYSA+IGksXG4uYWN0aXZlLXJvdXRlciA+IGkge1xuICBwYWRkaW5nLXJpZ2h0OiA1cHg7XG59XG4uY3VzdG9tLXNpZGVCYXJcbiAgPiAubGlzdC11bnN0eWxlZFxuICA+IGxpXG4gID4gLnJvdXRlci1saW5rLWV4YWN0LWFjdGl2ZVxuICAucm91dGVyLWxpbmstYWN0aXZlLFxuLnJvdXRlci1saW5rLWFjdGl2ZSxcbmEucm91dGVyLWxpbmsge1xuICAvKiBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjU1KTsgKi9cbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjb2xvcjogYmxhY2s7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudChcbiAgICA5MGRlZyxcbiAgICByZ2JhKDEzNiwgMTg1LCAyNTUsIDAuNDEpIDAlLFxuICAgIHJnYmEoMTM2LCAxODUsIDI1NSwgMCkgNDQuMTElXG4gICk7XG4gIGJvcmRlci1sZWZ0OiA1cHggc29saWQgIzg4YjlmZjtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG59XG4uY3VzdG9tLXNpZGVCYXIgPiAubGlzdC11bnN0eWxlZCB7XG4gIHBhZGRpbmctbGVmdDogMHB4O1xufVxuLmJvdHRvbV9ibG9jayB7XG4gIHBhZGRpbmc6IDE1cHg7XG4gIGNvbG9yOiAjMWQxZDFkO1xuICBiYWNrZ3JvdW5kOiAjZjlmOWY3O1xufVxubGkgYSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmctbGVmdDogMzBweDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbn1cbmxpIGEgaW1nIHtcbiAgd2lkdGg6IDMwJTtcbiAgcGFkZGluZy1yaWdodDogMjBweDtcbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XHJcbiAgPGRpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJtdC0zIG1iLTMgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciB1c2VyX25hbWVcIlxyXG4gICAgICBAY2xpY2s9XCJhY3RpZiA9ICFhY3RpZlwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ1c2VyX3JvdW5kXCI+XHJcbiAgICAgICAge3sgYWNjb3VudC5sYXN0TmFtZSB8IHNwbGl0IH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBuYW1lXCIgc3R5bGU9XCJmb250LXNpemU6IHNtYWxsZXJcIj5cclxuICAgICAgICB7eyBhY2NvdW50LmZpcnN0TmFtZSB9fSB7eyBhY2NvdW50Lmxhc3ROYW1lIH19XHJcbiAgICAgICAgPGkgOmNsYXNzPVwiYWN0aWYgPyBkb3duIDogdXBcIj48L2k+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8dWxcclxuICAgICAgY2xhc3M9XCJsaXN0LXVuc3R5bGVkIGRyb3AgYW5pbWF0ZV9fYW5pbWF0ZWQgYW5pbWF0ZV9fYmFja0luRG93biBkcm9wZG93blwiXHJcbiAgICAgIHYtaWY9XCJhY3RpZlwiXHJcbiAgICA+XHJcbiAgICAgIDxsaSB2LWZvcj1cIihpdGVtLCBrZXkpIGluIHN1Yk1lbnVcIiA6a2V5PVwia2V5XCI+XHJcbiAgICAgICAgPHJvdXRlci1saW5rIDp0bz1cIml0ZW0udG9cIj57eyBpdGVtLnRpdGxlIH19PC9yb3V0ZXItbGluaz5cclxuICAgICAgPC9saT5cclxuICAgICAgPGxpPjxhIGhyZWY9XCIjXCIgQGNsaWNrPVwibG9nb3V0KClcIj5EZWNvbm5leGlvbjwvYT48L2xpPlxyXG4gICAgPC91bD5cclxuICA8L2Rpdj5cclxuPC90ZW1wbGF0ZT5cclxuPHNjcmlwdD5cclxuaW1wb3J0IHN0b3JlIGZyb20gXCIuLi8uLi9zdG9yZVwiO1xyXG5pbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XHJcbmltcG9ydCBNQUlOX1VSTCBmcm9tIFwiLi4vLi4vLi4vY29tbW9uLmpzL21haW5VcmxcIjtcclxuaW1wb3J0IHsgaGVhZGVycyB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24uanMvaGVhZGVyXCI7XHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBzdG9yZSxcclxuICBkYXRhKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYWN0aWY6IGZhbHNlLFxyXG4gICAgICBkb3duOiBcIm1kaSBtZGktY2hldnJvbi1kb3duXCIsXHJcbiAgICAgIHVwOiBcIm1kaSBtZGktY2hldnJvbi11cFwiLFxyXG4gICAgICBzdWJNZW51OiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwiTWVzIGluZm9ybWF0aW9uc1wiLFxyXG4gICAgICAgICAgdG86IFwiL3Byb2ZpbFwiLFxyXG4gICAgICAgICAgaWNvbjogXCJtZGkgbWRpLWFjY291bnRcIixcclxuICAgICAgICB9LFxyXG5cclxuICAgICAgICB7IHRpdGxlOiBcIk1hIGZvcm11bGVcIiwgdG86IFwiL2Zvcm11bGVcIiwgaWNvbjogXCJtZGkgbWRpLWFjY291bnRcIiB9LFxyXG4gICAgICAgIHsgdGl0bGU6IFwiTWVzIGRvY3VtZW50c1wiLCB0bzogXCIvZG9jdW1lbnRcIiwgaWNvbjogXCJtZGkgbWRpLWFjY291bnRcIiB9LFxyXG4gICAgICAgIHsgdGl0bGU6IFwiQWlkZXMgJiBTdXBwb3J0XCIsIHRvOiBcIi9zdXBwb3J0XCIsIGljb246IFwibWRpIG1kaS1hY2NvdW50XCIgfSxcclxuICAgICAgICB7IHRpdGxlOiBcIkZhcVwiLCB0bzogXCIvZmFxXCIsIGljb246IFwibWRpIG1kaS1hY2NvdW50XCIgfSxcclxuICAgICAgICB7IHRpdGxlOiBcIkJvbiBwbGFuXCIsIHRvOiBcIi9ib25QbGFuXCIsIGljb246IFwibWRpIG1kaS1hY2NvdW50XCIgfSxcclxuICAgICAgXSxcclxuICAgIH07XHJcbiAgfSxcclxuICBjb21wdXRlZDoge1xyXG4gICAgYWNjb3VudDoge1xyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLnN0YXRlLmFjY291bnQ7XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRBY2NvdW50XCIsIHZhbCk7XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgbG9hZGluZzoge1xyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0TG9hZGluZztcclxuICAgICAgfSxcclxuICAgICAgc2V0KHZhbCkge1xyXG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldExvYWRpbmdcIiwgdmFsKTtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgfSxcclxuICBtZXRob2RzOiB7XHJcbiAgICBvcGVuTm90aWZpY2F0aW9uKHRpdGxlLCB0ZXh0LCBjb2xvciwgcG9zaXRpb24gPSBcInRvcC1yaWdodFwiLCBpY29uID0gbnVsbCkge1xyXG4gICAgICBjb25zdCBub3RpID0gdGhpcy4kdnMubm90aWZpY2F0aW9uKHtcclxuICAgICAgICBpY29uLFxyXG4gICAgICAgIGNvbG9yLFxyXG4gICAgICAgIHBvc2l0aW9uLFxyXG4gICAgICAgIHRpdGxlLFxyXG4gICAgICAgIHRleHQsXHJcbiAgICAgIH0pO1xyXG4gICAgfSxcclxuXHJcbiAgICAvL0xvYWRpbmdcclxuICAgIGxvYWQoKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRoaXMuJHZzLmxvYWRpbmcoe1xyXG4gICAgICAgIGJhY2tncm91bmQ6IFwiIzdhNzZjYlwiLFxyXG4gICAgICAgIGNvbG9yOiBcIiNmZmZcIixcclxuICAgICAgICB0ZXh0OiBcIlZldWlsbGV6IHBhdGllbnRlclwiLFxyXG4gICAgICAgIHR5cGU6IFwic2NhbGVcIixcclxuICAgICAgfSk7XHJcbiAgICB9LFxyXG5cclxuICAgIC8vZGVjb25uZXhpb25cclxuICAgIGxvZ291dCgpIHtcclxuICAgICAgLy9Ub2tlblxyXG4gICAgICBjb25zdCBteVRva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcInRva2VuXCIpXHJcbiAgICAgICAgPyBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwidG9rZW5cIilcclxuICAgICAgICA6IHRoaXMudG9rZW47XHJcblxyXG4gICAgICAvL0hlYWRlclxyXG4gICAgICBjb25zdCBoZWFkZXIgPSBoZWFkZXJzKG15VG9rZW4pO1xyXG5cclxuICAgICAgLy9MYSByZXF1ZXRlXHJcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gYXhpb3MuY3JlYXRlKHtcclxuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiLFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5sb2FkKCk7XHJcbiAgICAgIGluc3RhbmNlXHJcbiAgICAgICAgLnBvc3QoTUFJTl9VUkwuTE9HT1VULCB7fSwgaGVhZGVyKVxyXG4gICAgICAgIC50aGVuKChlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmcuY2xvc2UoKTtcclxuICAgICAgICAgIHRoaXMub3Blbk5vdGlmaWNhdGlvbihcclxuICAgICAgICAgICAgXCJEZWNvbm5leGlvblwiLFxyXG4gICAgICAgICAgICBcIlZvdXMgw6p0ZXMgZGVjb25uZWN0ZXIgYXZlYyBzdWNjZXNzXCIsXHJcbiAgICAgICAgICAgIFwic3VjY2Vzc1wiXHJcbiAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgIC8vU3VwcHJlc3Npb24gZGUgbGEgc2Vzc2lvblxyXG4gICAgICAgICAgc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcclxuICAgICAgICAgIHRoaXMuJHJvdXRlci5wdXNoKFwiL1wiKTtcclxuICAgICAgICB9KVxyXG4gICAgICAgIC5jYXRjaCgoZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vcGVuTm90aWZpY2F0aW9uKFxyXG4gICAgICAgICAgICBcIkRlY29ubmV4aW9uXCIsXHJcbiAgICAgICAgICAgIFwiVm91cyDDqnRlcyBkZWNvbm5lY3RlciBhdmVjIHN1Y2Nlc3NcIixcclxuICAgICAgICAgICAgXCJzdWNjZXNzXCJcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9LFxyXG4gIH0sXHJcbn07XHJcbjwvc2NyaXB0PlxyXG48c3R5bGUgc2NvcGVkPlxyXG51bCBsaSB7XHJcbiAgbWFyZ2luLWJvdHRvbTogMXB4O1xyXG59XHJcbi5kcm9wZG93biB7XHJcbiAgei1pbmRleDogOTk5OTtcclxuICBtaW4td2lkdGg6IDE2MHB4O1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB0b3A6IDYwcHg7XHJcbiAgcmlnaHQ6IDMwcHg7XHJcbiAgYmFja2dyb3VuZDogI2ZmZjtcclxuICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgYm94LXNoYWRvdzogMHB4IDRweCA4cHggcmdiKDAgMCAwIC8gMTAlKTtcclxuICBmb250LXNpemU6IHNtYWxsO1xyXG59XHJcbi52LWFwcGxpY2F0aW9uLS13cmFwIHtcclxuICBiYWNrZ3JvdW5kOiAjZTVlNWU1O1xyXG59XHJcbi51c2VyX25hbWUge1xyXG4gIGJvcmRlci1yYWRpdXM6IDg0cHg7XHJcbiAgYm94LXNoYWRvdzogMHB4IDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gIGJhY2tncm91bmQ6ICNmZmZmZmY7XHJcbiAgcGFkZGluZzogNXB4IDE1cHg7XHJcbiAgcGFkZGluZy1sZWZ0OiA1cHg7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG59XHJcbi51c2VyX3JvdW5kIHtcclxuICBiYWNrZ3JvdW5kOiAjODhiOWZmO1xyXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICB3aWR0aDogMjNweDtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgY29sb3I6ICNmZmZmZmY7XHJcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xyXG4gIGZvbnQtd2VpZ2h0OiA4MDA7XHJcbiAgbWFyZ2luLXJpZ2h0OiA5cHg7XHJcbn1cclxuXHJcbi5kcm9wZG93biBsaSB7XHJcbiAgYmFja2dyb3VuZDogI2Y1ZjVmNTtcclxuICB0cmFuc2l0aW9uOiBhbGwgMXMgZWFzZS1vdXQ7XHJcbiAgY29sb3I6IGJsYWNrO1xyXG4gIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgcGFkZGluZzogNXB4IDE1cHg7XHJcbiAgbWFyZ2luLWJvdHRvbTogMHB4O1xyXG59XHJcbi5kcm9wZG93biBsaTpob3ZlciB7XHJcbiAgYmFja2dyb3VuZDogI2Y0ZjdmODtcclxuICBjb2xvcjogYmxhY2s7XHJcbn1cclxuLmRyb3Bkb3duIGxpIGEge1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICBsZXR0ZXItc3BhY2luZzogMC43cHg7XHJcbiAgZm9udC1zaXplOiAxM3B4O1xyXG4gIGNvbG9yOiAjMjEyNTI5O1xyXG59XHJcbjwvc3R5bGU+XHJcbiIsIlxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxyXG4udi1hcHBsaWNhdGlvbi0td3JhcCB7XHJcbiAgYmFja2dyb3VuZDogI2U1ZTVlNTtcclxufVxyXG4ubWFpbi10YWJsZSB7XHJcbiAgbWluLWhlaWdodDogMzEwcHg7XHJcbiAgYmFja2dyb3VuZDogI2ZmZjtcclxuICBib3JkZXItcmFkaXVzOiAzMHB4O1xyXG4gIGJveC1zaGFkb3c6IDBweCA0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcclxufVxyXG4udnMtdGFibGVfX3RkIHtcclxuICBmb250LXNpemU6IDExcHg7XHJcbn1cclxuLnZzLXRhYmxlX190aCB7XHJcbiAgd2lkdGg6IDIwMHB4O1xyXG59XHJcbiNjaGFydCB7XHJcbiAgbWF4LXdpZHRoOiA2NTBweDtcclxuICBtYXJnaW46IDM1cHggYXV0bztcclxufVxyXG4uZGF0YS1zbWFsbCB7XHJcbn1cclxuQGltcG9ydCB1cmwoXCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9RE0rU2Fuczo0MDAsNTAwLDcwMCZkaXNwbGF5PXN3YXBcIik7XHJcblxyXG46cm9vdCB7XHJcbiAgLS1hcHAtY29udGFpbmVyOiAjZjNmNmZkO1xyXG4gIC0tbWFpbi1jb2xvcjogIzFmMWMyZTtcclxuICAtLXNlY29uZGFyeS1jb2xvcjogIzRhNGE0YTtcclxuICAtLWxpbmstY29sb3I6ICMxZjFjMmU7XHJcbiAgLS1saW5rLWNvbG9yLWhvdmVyOiAjYzNjZmY0O1xyXG4gIC0tbGluay1jb2xvci1hY3RpdmU6ICNmZmY7XHJcbiAgLS1saW5rLWNvbG9yLWFjdGl2ZS1iZzogIzFmMWMyZTtcclxuICAtLXByb2plY3RzLXNlY3Rpb246ICNmZmY7XHJcbiAgLS1tZXNzYWdlLWJveC1ob3ZlcjogI2ZhZmNmZjtcclxuICAtLW1lc3NhZ2UtYm94LWJvcmRlcjogI2U5ZWJmMDtcclxuICAtLW1vcmUtbGlzdC1iZzogI2ZmZjtcclxuICAtLW1vcmUtbGlzdC1iZy1ob3ZlcjogI2Y2ZmJmZjtcclxuICAtLW1vcmUtbGlzdC1zaGFkb3c6IHJnYmEoMjA5LCAyMDksIDIwOSwgMC40KTtcclxuICAtLWJ1dHRvbi1iZzogIzFmMWMyNDtcclxuICAtLXNlYXJjaC1hcmVhLWJnOiAjZmZmO1xyXG4gIC0tc3RhcjogIzFmZjFjMmU7XHJcbiAgLS1tZXNzYWdlLWJ0bjogI2ZmZjtcclxufVxyXG5cclxuLmRhcms6cm9vdCB7XHJcbiAgLS1hcHAtY29udGFpbmVyOiAjMWYxZDJiO1xyXG4gIC0tYXBwLWNvbnRhaW5lcjogIzExMTgyNztcclxuICAtLW1haW4tY29sb3I6ICNmZmY7XHJcbiAgLS1zZWNvbmRhcnktY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcclxuICAtLXByb2plY3RzLXNlY3Rpb246ICMxZjI5Mzc7XHJcbiAgLS1saW5rLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOCk7XHJcbiAgLS1saW5rLWNvbG9yLWhvdmVyOiByZ2JhKDE5NSwgMjA3LCAyNDQsIDAuMSk7XHJcbiAgLS1saW5rLWNvbG9yLWFjdGl2ZS1iZzogcmdiYSgxOTUsIDIwNywgMjQ0LCAwLjIpO1xyXG4gIC0tYnV0dG9uLWJnOiAjMWYyOTM3O1xyXG4gIC0tc2VhcmNoLWFyZWEtYmc6ICMxZjI5Mzc7XHJcbiAgLS1tZXNzYWdlLWJveC1ob3ZlcjogIzI0MzI0NDtcclxuICAtLW1lc3NhZ2UtYm94LWJvcmRlcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xyXG4gIC0tc3RhcjogI2ZmZDkyYztcclxuICAtLWxpZ2h0LWZvbnQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44KTtcclxuICAtLW1vcmUtbGlzdC1iZzogIzJmMzE0MjtcclxuICAtLW1vcmUtbGlzdC1iZy1ob3ZlcjogcmdiYSgxOTUsIDIwNywgMjQ0LCAwLjEpO1xyXG4gIC0tbW9yZS1saXN0LXNoYWRvdzogcmdiYSgxOTUsIDIwNywgMjQ0LCAwLjEpO1xyXG4gIC0tbWVzc2FnZS1idG46IHJnYmEoMTk1LCAyMDcsIDI0NCwgMC4xKTtcclxufVxyXG5cclxuYnV0dG9uLFxyXG5hIHtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5hcHAge1xyXG4gICYtY29udGFpbmVyIHtcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1hcHAtY29udGFpbmVyKTtcclxuICAgIHRyYW5zaXRpb246IDAuMnM7XHJcbiAgICBtYXgtd2lkdGg6IDE4MDBweDtcclxuXHJcbiAgICBidXR0b24sXHJcbiAgICBpbnB1dCxcclxuICAgIG9wdGdyb3VwLFxyXG4gICAgc2VsZWN0LFxyXG4gICAgdGV4dGFyZWEge1xyXG4gICAgICBmb250LWZhbWlseTogXCJETSBTYW5zXCIsIHNhbnMtc2VyaWY7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLWNvbnRlbnQge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGhlaWdodDogMTAwJTtcclxuICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICBwYWRkaW5nOiAxNnB4IDI0cHggMjRweCAwO1xyXG4gIH1cclxuXHJcbiAgJi1oZWFkZXIge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIHBhZGRpbmc6IDE2cHggMjRweDtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHJcbiAgICAmLWxlZnQsXHJcbiAgICAmLXJpZ2h0IHtcclxuICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICAmLWxlZnQge1xyXG4gICAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICB9XHJcblxyXG4gICAgJi1yaWdodCBidXR0b24ge1xyXG4gICAgICBtYXJnaW4tbGVmdDogMTBweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICYtaWNvbiB7XHJcbiAgICB3aWR0aDogMjZweDtcclxuICAgIGhlaWdodDogMnB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWFpbi1jb2xvcik7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcblxyXG4gICAgJjpiZWZvcmUsXHJcbiAgICAmOmFmdGVyIHtcclxuICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICB3aWR0aDogMTJweDtcclxuICAgICAgaGVpZ2h0OiAycHg7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWFpbi1jb2xvcik7XHJcbiAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGV4KC01MCUpO1xyXG4gICAgfVxyXG5cclxuICAgICY6YmVmb3JlIHtcclxuICAgICAgdG9wOiAtNnB4O1xyXG4gICAgfVxyXG4gICAgJjphZnRlciB7XHJcbiAgICAgIGJvdHRvbTogLTZweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICYtbmFtZSB7XHJcbiAgICBjb2xvcjogdmFyKC0tbWFpbi1jb2xvcik7XHJcbiAgICBtYXJnaW46IDA7XHJcbiAgICBmb250LXNpemU6IDIwcHg7XHJcbiAgICBsaW5lLWhlaWdodDogMjRweDtcclxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICBtYXJnaW46IDAgMzJweDtcclxuICB9XHJcbn1cclxuXHJcbi5tb2RlLXN3aXRjaCB7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIHBhZGRpbmc6IDA7XHJcbiAgY29sb3I6IHZhcigtLW1haW4tY29sb3IpO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxufVxyXG5cclxuLnNlYXJjaC13cmFwcGVyIHtcclxuICBib3JkZXItcmFkaXVzOiAyMHB4O1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlYXJjaC1hcmVhLWJnKTtcclxuICBwYWRkaW5nLXJpZ2h0OiAxMnB4O1xyXG4gIGhlaWdodDogNDBweDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIHdpZHRoOiAxMDAlO1xyXG4gIG1heC13aWR0aDogNDgwcHg7XHJcbiAgY29sb3I6IHZhcigtLWxpZ2h0LWZvbnQpO1xyXG4gIGJveC1zaGFkb3c6IDAgMnB4IDZweCAwIHJnYmEoMTM2LCAxNDgsIDE3MSwgMC4yKSxcclxuICAgIDAgMjRweCAyMHB4IC0yNHB4IHJnYmEoNzEsIDgyLCAxMDcsIDAuMSk7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuXHJcbiAgLmRhcmsgJiB7XHJcbiAgICBib3gtc2hhZG93OiBub25lO1xyXG4gIH1cclxufVxyXG5cclxuLnNlYXJjaC1pbnB1dCB7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGZsZXg6IDE7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgcGFkZGluZzogMCAyMHB4O1xyXG4gIGZvbnQtc2l6ZTogMTZweDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zZWFyY2gtYXJlYS1iZyk7XHJcbiAgY29sb3I6IHZhcigtLW1haW4tY29sb3IpO1xyXG5cclxuICAmOnBsYWNlaG9sZGVyIHtcclxuICAgIGNvbG9yOiB2YXIoLS1tYWluLWNvbG9yKTtcclxuICAgIG9wYWNpdHk6IDAuNjtcclxuICB9XHJcbn1cclxuXHJcbi5hZGQtYnRuIHtcclxuICBjb2xvcjogI2ZmZjtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tYmcpO1xyXG4gIHBhZGRpbmc6IDA7XHJcbiAgYm9yZGVyOiAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICB3aWR0aDogMzJweDtcclxuICBoZWlnaHQ6IDMycHg7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG59XHJcblxyXG4ubm90aWZpY2F0aW9uLWJ0biB7XHJcbiAgY29sb3I6IHZhcigtLW1haW4tY29sb3IpO1xyXG4gIHBhZGRpbmc6IDA7XHJcbiAgYm9yZGVyOiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gIGhlaWdodDogMzJweDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuXHJcbi5wcm9maWxlLWJ0biB7XHJcbiAgcGFkZGluZzogMDtcclxuICBib3JkZXI6IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIHBhZGRpbmctbGVmdDogMTJweDtcclxuICBib3JkZXItbGVmdDogMnB4IHNvbGlkICNkZGQ7XHJcblxyXG4gIGltZyB7XHJcbiAgICB3aWR0aDogMzJweDtcclxuICAgIGhlaWdodDogMzJweDtcclxuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xyXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgbWFyZ2luLXJpZ2h0OiA0cHg7XHJcbiAgfVxyXG5cclxuICBzcGFuIHtcclxuICAgIGNvbG9yOiB2YXIoLS1tYWluLWNvbG9yKTtcclxuICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAyNHB4O1xyXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICB9XHJcbn1cclxuXHJcbi5wYWdlLWNvbnRlbnTCoCB7XHJcbiAgZmxleDogMTtcclxuICB3aWR0aDogMTAwJTtcclxufVxyXG5cclxuLmFwcC1zaWRlYmFyIHtcclxuICBwYWRkaW5nOiA0MHB4IDE2cHg7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblxyXG4gICYtbGluayB7XHJcbiAgICBjb2xvcjogdmFyKC0tbWFpbi1jb2xvcik7XHJcbiAgICBjb2xvcjogdmFyKC0tbGluay1jb2xvcik7XHJcbiAgICBtYXJnaW46IDE2cHggMDtcclxuICAgIHRyYW5zaXRpb246IDAuMnM7XHJcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICBmbGV4LXNocmluazogMDtcclxuICAgIHdpZHRoOiA0MHB4O1xyXG4gICAgaGVpZ2h0OiA0MHB4O1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbGluay1jb2xvci1ob3Zlcik7XHJcbiAgICAgIGNvbG9yOiB2YXIoLS1saW5rLWNvbG9yLWFjdGl2ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgJi5hY3RpdmUge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1saW5rLWNvbG9yLWFjdGl2ZS1iZyk7XHJcbiAgICAgIGNvbG9yOiB2YXIoLS1saW5rLWNvbG9yLWFjdGl2ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4ucHJvamVjdHMtc2VjdGlvbiB7XHJcbiAgZmxleDogMjtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcm9qZWN0cy1zZWN0aW9uKTtcclxuICBib3JkZXItcmFkaXVzOiAzMnB4O1xyXG4gIHBhZGRpbmc6IDMycHggMzJweCAwIDMycHg7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cclxuICAmLWxpbmUge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICBwYWRkaW5nLWJvdHRvbTogMzJweDtcclxuICB9XHJcblxyXG4gICYtaGVhZGVyIHtcclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMjRweDtcclxuICAgIGNvbG9yOiB2YXIoLS1tYWluLWNvbG9yKTtcclxuXHJcbiAgICBwIHtcclxuICAgICAgZm9udC1zaXplOiAyNHB4O1xyXG4gICAgICBsaW5lLWhlaWdodDogMzJweDtcclxuICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgICAgb3BhY2l0eTogMC45O1xyXG4gICAgICBtYXJnaW46IDA7XHJcbiAgICAgIGNvbG9yOiB2YXIoLS1tYWluLWNvbG9yKTtcclxuICAgIH1cclxuXHJcbiAgICAudGltZSB7XHJcbiAgICAgIGZvbnQtc2l6ZTogMjBweDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5wcm9qZWN0cy1zdGF0dXMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbn1cclxuXHJcbi5pdGVtLXN0YXR1cyB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIG1hcmdpbi1yaWdodDogMTZweDtcclxuXHJcbiAgJjpub3QoOmxhc3QtY2hpbGQpIC5zdGF0dXMtdHlwZTphZnRlciB7XHJcbiAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgcmlnaHQ6IDhweDtcclxuICAgIHRvcDogNTAlO1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGV5KC01MCUpO1xyXG4gICAgd2lkdGg6IDZweDtcclxuICAgIGhlaWdodDogNnB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tc2Vjb25kYXJ5LWNvbG9yKTtcclxuICB9XHJcbn1cclxuXHJcbi5zdGF0dXMtbnVtYmVyIHtcclxuICBmb250LXNpemU6IDI0cHg7XHJcbiAgbGluZS1oZWlnaHQ6IDMycHg7XHJcbiAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICBjb2xvcjogdmFyKC0tbWFpbi1jb2xvcik7XHJcbn1cclxuXHJcbi5zdGF0dXMtdHlwZSB7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHBhZGRpbmctcmlnaHQ6IDI0cHg7XHJcbiAgY29sb3I6IHZhcigtLXNlY29uZGFyeS1jb2xvcik7XHJcbn1cclxuXHJcbi52aWV3LWFjdGlvbnMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxufVxyXG5cclxuLnZpZXctYnRuIHtcclxuICB3aWR0aDogMzZweDtcclxuICBoZWlnaHQ6IDM2cHg7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIHBhZGRpbmc6IDZweDtcclxuICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGNvbG9yOiB2YXIoLS1tYWluLWNvbG9yKTtcclxuICBtYXJnaW4tbGVmdDogOHB4O1xyXG4gIHRyYW5zaXRpb246IDAuMnM7XHJcblxyXG4gICYuYWN0aXZlIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWxpbmstY29sb3ItYWN0aXZlLWJnKTtcclxuICAgIGNvbG9yOiB2YXIoLS1saW5rLWNvbG9yLWFjdGl2ZSk7XHJcbiAgfVxyXG5cclxuICAmOm5vdCguYWN0aXZlKTpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1saW5rLWNvbG9yLWhvdmVyKTtcclxuICAgIGNvbG9yOiB2YXIoLS1saW5rLWNvbG9yLWFjdGl2ZSk7XHJcbiAgfVxyXG59XHJcblxyXG4ubWVzc2FnZXMtc2VjdGlvbiB7XHJcbiAgZmxleC1zaHJpbms6IDA7XHJcbiAgcGFkZGluZy1ib3R0b206IDMycHg7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcHJvamVjdHMtc2VjdGlvbik7XHJcbiAgbWFyZ2luLWxlZnQ6IDI0cHg7XHJcbiAgZmxleDogMTtcclxuICB3aWR0aDogMTAwJTtcclxuICBib3JkZXItcmFkaXVzOiAzMHB4O1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICBvdmVyZmxvdzogYXV0bztcclxuICB0cmFuc2l0aW9uOiBhbGwgMzAwbXMgY3ViaWMtYmV6aWVyKDAuMTksIDEsIDAuNTYsIDEpO1xyXG5cclxuICAubWVzc2FnZXMtY2xvc2Uge1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgdG9wOiAxMnB4O1xyXG4gICAgcmlnaHQ6IDEycHg7XHJcbiAgICB6LWluZGV4OiAzO1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICBjb2xvcjogdmFyKC0tbWFpbi1jb2xvcik7XHJcbiAgICBkaXNwbGF5OiBub25lO1xyXG4gIH1cclxuXHJcbiAgJi5zaG93IHtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgICBtYXJnaW4tbGVmdDogMDtcclxuICB9XHJcblxyXG4gIC5wcm9qZWN0cy1zZWN0aW9uLWhlYWRlciB7XHJcbiAgICBwb3NpdGlvbjogc3RpY2t5O1xyXG4gICAgdG9wOiAwO1xyXG4gICAgei1pbmRleDogMTtcclxuICAgIHBhZGRpbmc6IDMycHggMjRweCAwIDI0cHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1wcm9qZWN0cy1zZWN0aW9uKTtcclxuICB9XHJcbn1cclxuXHJcbi5tZXNzYWdlLWJveCB7XHJcbiAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLW1lc3NhZ2UtYm94LWJvcmRlcik7XHJcbiAgcGFkZGluZzogMTZweDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gIHdpZHRoOiAxMDAlO1xyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1lc3NhZ2UtYm94LWhvdmVyKTtcclxuICAgIGJvcmRlci10b3AtY29sb3I6IHZhcigtLWxpbmstY29sb3ItaG92ZXIpO1xyXG5cclxuICAgICsgLm1lc3NhZ2UtYm94IHtcclxuICAgICAgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tbGluay1jb2xvci1ob3Zlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbWcge1xyXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgb2JqZWN0LWZpdDogY292ZXI7XHJcbiAgICB3aWR0aDogNDBweDtcclxuICAgIGhlaWdodDogNDBweDtcclxuICB9XHJcbn1cclxuXHJcbi5tZXNzYWdlLWhlYWRlciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgLm5hbWUge1xyXG4gICAgZm9udC1zaXplOiAxNnB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDI0cHg7XHJcbiAgICBmb250LXdlaWdodDogNzAwO1xyXG4gICAgY29sb3I6IHZhcigtLW1haW4tY29sb3IpO1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gIH1cclxufVxyXG5cclxuLm1lc3NhZ2UtY29udGVudCB7XHJcbiAgcGFkZGluZy1sZWZ0OiAxNnB4O1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcblxyXG4uc3Rhci1jaGVja2JveCB7XHJcbiAgaW5wdXQge1xyXG4gICAgb3BhY2l0eTogMDtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgIHdpZHRoOiAwO1xyXG4gICAgaGVpZ2h0OiAwO1xyXG4gIH1cclxuXHJcbiAgbGFiZWwge1xyXG4gICAgd2lkdGg6IDI0cHg7XHJcbiAgICBoZWlnaHQ6IDI0cHg7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIH1cclxuXHJcbiAgLmRhcmsgJiB7XHJcbiAgICBjb2xvcjogdmFyKC0tc2Vjb25kYXJ5LWNvbG9yKTtcclxuXHJcbiAgICBpbnB1dDpjaGVja2VkICsgbGFiZWwge1xyXG4gICAgICBjb2xvcjogdmFyKC0tc3Rhcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBpbnB1dDpjaGVja2VkICsgbGFiZWwgc3ZnIHtcclxuICAgIGZpbGw6IHZhcigtLXN0YXIpO1xyXG4gICAgdHJhbnNpdGlvbjogMC4ycztcclxuICB9XHJcbn1cclxuXHJcbi5tZXNzYWdlLWxpbmUge1xyXG4gIGZvbnQtc2l6ZTogMTRweDtcclxuICBsaW5lLWhlaWdodDogMjBweDtcclxuICBtYXJnaW46IDhweCAwO1xyXG4gIGNvbG9yOiB2YXIoLS1zZWNvbmRhcnktY29sb3IpO1xyXG4gIG9wYWNpdHk6IDAuNztcclxuXHJcbiAgJi50aW1lIHtcclxuICAgIHRleHQtYWxpZ246IHJpZ2h0O1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMDtcclxuICB9XHJcbn1cclxuXHJcbi5wcm9qZWN0LWJveGVzIHtcclxuICBtYXJnaW46IDAgLThweDtcclxuICBvdmVyZmxvdy15OiBhdXRvO1xyXG5cclxuICAmLmpzR3JpZFZpZXcge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIGZsZXgtd3JhcDogd3JhcDtcclxuXHJcbiAgICAucHJvamVjdC1ib3gtd3JhcHBlciB7XHJcbiAgICAgIHdpZHRoOiAzMy4zJTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICYuanNMaXN0VmlldyB7XHJcbiAgICAucHJvamVjdC1ib3gge1xyXG4gICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgID4gKiB7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyNHB4O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLm1vcmUtd3JhcHBlciB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgcmlnaHQ6IDE2cHg7XHJcbiAgICAgIHRvcDogMTZweDtcclxuICAgIH1cclxuXHJcbiAgICAucHJvamVjdC1ib3gtY29udGVudC1oZWFkZXIge1xyXG4gICAgICBvcmRlcjogMTtcclxuICAgICAgbWF4LXdpZHRoOiAxMjBweDtcclxuICAgIH1cclxuXHJcbiAgICAucHJvamVjdC1ib3gtaGVhZGVyIHtcclxuICAgICAgb3JkZXI6IDI7XHJcbiAgICB9XHJcblxyXG4gICAgLnByb2plY3QtYm94LWZvb3RlciB7XHJcbiAgICAgIG9yZGVyOiAzO1xyXG4gICAgICBwYWRkaW5nLXRvcDogMDtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0O1xyXG4gICAgfVxyXG5cclxuICAgIC5wcm9qZWN0LWJveC1mb290ZXI6YWZ0ZXIge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIC5wYXJ0aWNpcGFudHMge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XHJcbiAgICB9XHJcblxyXG4gICAgLnByb2plY3QtYm94LWNvbnRlbnQtaGVhZGVyIHAge1xyXG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICAgIH1cclxuXHJcbiAgICAucHJvamVjdC1ib3gtaGVhZGVyID4gc3BhbiB7XHJcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgYm90dG9tOiAxNnB4O1xyXG4gICAgICBsZWZ0OiAxNnB4O1xyXG4gICAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmJveC1wcm9ncmVzcy13cmFwcGVyIHtcclxuICAgICAgb3JkZXI6IDM7XHJcbiAgICAgIGZsZXg6IDE7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4ucHJvamVjdC1ib3gge1xyXG4gIC0tbWFpbi1jb2xvci1jYXJkOiAjZGJmNmZkO1xyXG4gIGJvcmRlci1yYWRpdXM6IDMwcHg7XHJcbiAgcGFkZGluZzogMTZweDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tYWluLWNvbG9yLWNhcmQpO1xyXG5cclxuICAmLWhlYWRlciB7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XHJcbiAgICBjb2xvcjogdmFyKC0tbWFpbi1jb2xvcik7XHJcblxyXG4gICAgc3BhbiB7XHJcbiAgICAgIGNvbG9yOiAjNGE0YTRhO1xyXG4gICAgICBvcGFjaXR5OiAwLjc7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDE2cHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLWNvbnRlbnQtaGVhZGVyIHtcclxuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XHJcblxyXG4gICAgcCB7XHJcbiAgICAgIG1hcmdpbjogMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICYtd3JhcHBlciB7XHJcbiAgICBwYWRkaW5nOiA4cHg7XHJcbiAgICB0cmFuc2l0aW9uOiAwLjJzO1xyXG4gIH1cclxufVxyXG5cclxuLnByb2plY3QtYnRuLW1vcmUge1xyXG4gIHBhZGRpbmc6IDA7XHJcbiAgaGVpZ2h0OiAxNHB4O1xyXG4gIHdpZHRoOiAyNHB4O1xyXG4gIGhlaWdodDogMjRweDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG5cclxuICAvKiY6YWZ0ZXIsICY6YmVmb3JlIHtcclxuICAgIGNvbnRlbnQ6ICcnO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgd2lkdGg6IDZweDtcclxuICAgIGhlaWdodDogNnB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWFpbi1jb2xvcik7XHJcbiAgICBvcGFjaXR5OiAuODtcclxuICAgIGxlZnQ6IDUwJTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRleCgtNTAlKTtcclxuICB9XHJcbiAgXHJcbiAgJjpiZWZvcmUgeyB0b3A6IDA7fVxyXG4gICY6YWZ0ZXIgeyBib3R0b206IDA7IH0qL1xyXG59XHJcblxyXG4ubW9yZS13cmFwcGVyIHtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi5ib3gtY29udGVudC1oZWFkZXIge1xyXG4gIGZvbnQtc2l6ZTogMTZweDtcclxuICBsaW5lLWhlaWdodDogMjRweDtcclxuICBmb250LXdlaWdodDogNzAwO1xyXG4gIG9wYWNpdHk6IDAuNztcclxufVxyXG5cclxuLmJveC1jb250ZW50LXN1YmhlYWRlciB7XHJcbiAgZm9udC1zaXplOiAxNHB4O1xyXG4gIGxpbmUtaGVpZ2h0OiAyNHB4O1xyXG4gIG9wYWNpdHk6IDAuNztcclxufVxyXG5cclxuLmJveC1wcm9ncmVzcyB7XHJcbiAgZGlzcGxheTogYmxvY2s7XHJcbiAgaGVpZ2h0OiA0cHg7XHJcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xyXG5cclxuICAmLWJhciB7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIGhlaWdodDogNHB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcbiAgICBtYXJnaW46IDhweCAwO1xyXG4gIH1cclxuXHJcbiAgJi1oZWFkZXIge1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gIH1cclxuXHJcbiAgJi13cmFwcGVyIHtcclxuICB9XHJcblxyXG4gICYtcGVyY2VudGFnZSB7XHJcbiAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMTZweDtcclxuICB9XHJcbn1cclxuXHJcbi5wcm9qZWN0LWJveC1mb290ZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gIHBhZGRpbmctdG9wOiAxNnB4O1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHJcbiAgJjphZnRlciB7XHJcbiAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjYpO1xyXG4gICAgd2lkdGg6IGNhbGMoMTAwJSArIDMycHgpO1xyXG4gICAgdG9wOiAwO1xyXG4gICAgbGVmdDogLTE2cHg7XHJcbiAgICBoZWlnaHQ6IDFweDtcclxuICB9XHJcbn1cclxuXHJcbi5wYXJ0aWNpcGFudHMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHJcbiAgaW1nIHtcclxuICAgIHdpZHRoOiAyMHB4O1xyXG4gICAgaGVpZ2h0OiAyMHB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xyXG5cclxuICAgICY6bm90KDpmaXJzdC1jaGlsZCkge1xyXG4gICAgICBtYXJnaW4tbGVmdDogLThweDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5hZGQtcGFydGljaXBhbnQge1xyXG4gIHdpZHRoOiAyMHB4O1xyXG4gIGhlaWdodDogMjBweDtcclxuICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC42KTtcclxuICBtYXJnaW4tbGVmdDogNnB4O1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBwYWRkaW5nOiAwO1xyXG59XHJcblxyXG4uZGF5cy1sZWZ0IHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNik7XHJcbiAgZm9udC1zaXplOiAxMnB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDIwcHg7XHJcbiAgZmxleC1zaHJpbms6IDA7XHJcbiAgcGFkZGluZzogNnB4IDE2cHg7XHJcbiAgZm9udC13ZWlnaHQ6IDcwMDtcclxufVxyXG5cclxuLm1vZGUtc3dpdGNoLmFjdGl2ZSAubW9vbiB7XHJcbiAgZmlsbDogdmFyKC0tbWFpbi1jb2xvcik7XHJcbn1cclxuXHJcbi5tZXNzYWdlcy1idG4ge1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweCAwIDAgNHB4O1xyXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICByaWdodDogMDtcclxuICB0b3A6IDU4cHg7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWVzc2FnZS1idG4pO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBjb2xvcjogdmFyKC0tbWFpbi1jb2xvcik7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIHBhZGRpbmc6IDRweDtcclxuICBkaXNwbGF5OiBub25lO1xyXG59XHJcblxyXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA5ODBweCkge1xyXG4gIC5wcm9qZWN0LWJveGVzLmpzR3JpZFZpZXcgLnByb2plY3QtYm94LXdyYXBwZXIge1xyXG4gICAgd2lkdGg6IDUwJTtcclxuICB9XHJcblxyXG4gIC5zdGF0dXMtbnVtYmVyLFxyXG4gIC5zdGF0dXMtdHlwZSB7XHJcbiAgICBmb250LXNpemU6IDE0cHg7XHJcbiAgfVxyXG5cclxuICAuc3RhdHVzLXR5cGU6YWZ0ZXIge1xyXG4gICAgd2lkdGg6IDRweDtcclxuICAgIGhlaWdodDogNHB4O1xyXG4gIH1cclxuXHJcbiAgLml0ZW0tc3RhdHVzIHtcclxuICAgIG1hcmdpbi1yaWdodDogMDtcclxuICB9XHJcbn1cclxuXHJcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDg4MHB4KSB7XHJcbiAgLm1lc3NhZ2VzLXNlY3Rpb24ge1xyXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xyXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgb3BhY2l0eTogMDtcclxuICAgIHRvcDogMDtcclxuICAgIHotaW5kZXg6IDI7XHJcbiAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICB3aWR0aDogMTAwJTtcclxuXHJcbiAgICAubWVzc2FnZXMtY2xvc2Uge1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5tZXNzYWdlcy1idG4ge1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICB9XHJcbn1cclxuXHJcbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDcyMHB4KSB7XHJcbiAgLmFwcC1uYW1lLFxyXG4gIC5wcm9maWxlLWJ0biBzcGFuIHtcclxuICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgfVxyXG5cclxuICAuYWRkLWJ0bixcclxuICAubm90aWZpY2F0aW9uLWJ0bixcclxuICAubW9kZS1zd2l0Y2gge1xyXG4gICAgd2lkdGg6IDIwcHg7XHJcbiAgICBoZWlnaHQ6IDIwcHg7XHJcblxyXG4gICAgc3ZnIHtcclxuICAgICAgd2lkdGg6IDE2cHg7XHJcbiAgICAgIGhlaWdodDogMTZweDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5hcHAtaGVhZGVyLXJpZ2h0IGJ1dHRvbiB7XHJcbiAgICBtYXJnaW4tbGVmdDogNHB4O1xyXG4gIH1cclxufVxyXG5cclxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTIwcHgpIHtcclxuICAucHJvamVjdHMtc2VjdGlvbiB7XHJcbiAgICBvdmVyZmxvdzogYXV0bztcclxuICB9XHJcbiAgLnByb2plY3QtYm94ZXMge1xyXG4gICAgb3ZlcmZsb3cteTogdmlzaWJsZTtcclxuICB9XHJcblxyXG4gIC5hcHAtc2lkZWJhcixcclxuICAuYXBwLWljb24ge1xyXG4gICAgZGlzcGxheTogbm9uZTtcclxuICB9XHJcblxyXG4gIC5hcHAtY29udGVudCB7XHJcbiAgICBwYWRkaW5nOiAxNnB4IDEycHggMjRweCAxMnB4O1xyXG4gIH1cclxuXHJcbiAgLnN0YXR1cy1udW1iZXIsXHJcbiAgLnN0YXR1cy10eXBlIHtcclxuICAgIGZvbnQtc2l6ZTogMTBweDtcclxuICB9XHJcblxyXG4gIC52aWV3LWJ0biB7XHJcbiAgICB3aWR0aDogMjRweDtcclxuICAgIGhlaWdodDogMjRweDtcclxuICB9XHJcblxyXG4gIC5hcHAtaGVhZGVyIHtcclxuICAgIHBhZGRpbmc6IDE2cHggMTBweDtcclxuICB9XHJcblxyXG4gIC5zZWFyY2gtaW5wdXQge1xyXG4gICAgbWF4LXdpZHRoOiAxMjBweDtcclxuICB9XHJcblxyXG4gIC5wcm9qZWN0LWJveGVzLmpzR3JpZFZpZXcgLnByb2plY3QtYm94LXdyYXBwZXIge1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgfVxyXG5cclxuICAucHJvamVjdHMtc2VjdGlvbiB7XHJcbiAgICBwYWRkaW5nOiAyNHB4IDE2cHggMCAxNnB4O1xyXG4gIH1cclxuXHJcbiAgLnByb2ZpbGUtYnRuIGltZyB7XHJcbiAgICB3aWR0aDogMjRweDtcclxuICAgIGhlaWdodDogMjRweDtcclxuICB9XHJcblxyXG4gIC5hcHAtaGVhZGVyIHtcclxuICAgIHBhZGRpbmc6IDEwcHg7XHJcbiAgfVxyXG5cclxuICAucHJvamVjdHMtc2VjdGlvbi1oZWFkZXIgcCxcclxuICAucHJvamVjdHMtc2VjdGlvbi1oZWFkZXIgLnRpbWUge1xyXG4gICAgZm9udC1zaXplOiAxOHB4O1xyXG4gIH1cclxuXHJcbiAgLnN0YXR1cy10eXBlIHtcclxuICAgIHBhZGRpbmctcmlnaHQ6IDRweDtcclxuXHJcbiAgICAmOmFmdGVyIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5zZWFyY2gtaW5wdXQge1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gIH1cclxuXHJcbiAgLm1lc3NhZ2VzLWJ0biB7XHJcbiAgICB0b3A6IDQ4cHg7XHJcbiAgfVxyXG5cclxuICAuYm94LWNvbnRlbnQtaGVhZGVyIHtcclxuICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxNnB4O1xyXG4gIH1cclxuXHJcbiAgLmJveC1jb250ZW50LXN1YmhlYWRlciB7XHJcbiAgICBmb250LXNpemU6IDEycHg7XHJcbiAgICBsaW5lLWhlaWdodDogMTZweDtcclxuICB9XHJcblxyXG4gIC5wcm9qZWN0LWJveGVzLmpzTGlzdFZpZXcgLnByb2plY3QtYm94LWhlYWRlciA+IHNwYW4ge1xyXG4gICAgZm9udC1zaXplOiAxMHB4O1xyXG4gIH1cclxuXHJcbiAgLmJveC1wcm9ncmVzcy1oZWFkZXIge1xyXG4gICAgZm9udC1zaXplOiAxMnB4O1xyXG4gIH1cclxuXHJcbiAgLmJveC1wcm9ncmVzcy1wZXJjZW50YWdlIHtcclxuICAgIGZvbnQtc2l6ZTogMTBweDtcclxuICB9XHJcblxyXG4gIC5kYXlzLWxlZnQge1xyXG4gICAgZm9udC1zaXplOiA4cHg7XHJcbiAgICBwYWRkaW5nOiA2cHggNnB4O1xyXG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIH1cclxuXHJcbiAgLnByb2plY3QtYm94ZXMuanNMaXN0VmlldyAucHJvamVjdC1ib3ggPiAqIHtcclxuICAgIG1hcmdpbi1yaWdodDogMTBweDtcclxuICB9XHJcblxyXG4gIC5wcm9qZWN0LWJveGVzLmpzTGlzdFZpZXcgLm1vcmUtd3JhcHBlciB7XHJcbiAgICByaWdodDogMnB4O1xyXG4gICAgdG9wOiAxMHB4O1xyXG4gIH1cclxufVxyXG4iLCI8dGVtcGxhdGU+XG4gIDxkaXY+XG4gICAgPGRpdiA6Y2xhc3M9XCJgJHtiZ0NvbG9yfSBwLTIgYmctZ3JheWBcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJuYXZpZ2F0ZSBkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgICAgICA8aW1nXG4gICAgICAgICAgICBzcmM9XCIvaW1hZ2VzL3ZhbC5wbmdcIlxuICAgICAgICAgICAgd2lkdGg9XCIxMDAlXCJcbiAgICAgICAgICAgIGNsYXNzPVwibG9nbyBpbWctZmx1aWRcIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZW51XCI+XG4gICAgICAgICAgICA8di1pY29uIEBjbGljaz1cImFjdGl2ZSA9ICFhY3RpdmVcIiB4LWxhcmdlPnt7XG4gICAgICAgICAgICAgIGFjdGl2ZSA/IFwibWRpIG1kaS1jbG9zZVwiIDogXCJtZGkgbWRpLW1lbnVcIlxuICAgICAgICAgICAgfX08L3YtaWNvbj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG5hdmlnYXRlLW1haW5cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiA6c3R5bGU9XCJhY3RpdmUgPyB7IGRpc3BsYXk6ICdub25lJyB9IDogeyBkaXNwbGF5OiAnYmxvY2snIH1cIj5cbiAgICAgICAgICAgIDx1bCBjbGFzcz1cInNuaXAxMTM1IG1iLTBcIj5cbiAgICAgICAgICAgICAgPGxpIHYtZm9yPVwiKGl0ZW0sIGtleSkgaW4gaXRlbXNcIj5cbiAgICAgICAgICAgICAgICA8cm91dGVyLWxpbmtcbiAgICAgICAgICAgICAgICAgIDprZXk9XCJrZXlcIlxuICAgICAgICAgICAgICAgICAgOnRvPVwiaXRlbS50b1wiXG4gICAgICAgICAgICAgICAgICA6ZGF0YS1ob3Zlcj1cIml0ZW0udGl0bGVcIlxuICAgICAgICAgICAgICAgICAgY2xhc3MtYWN0aXZlPVwiYWN0aXZlXCJcbiAgICAgICAgICAgICAgICAgIGV4YWN0XG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImFjdGl2ZS1yb3V0ZXJcIlxuICAgICAgICAgICAgICAgICAgPjxpIDpjbGFzcz1cIml0ZW0uaWNvblwiPjwvaT4ge3sgaXRlbS50aXRsZSB9fTwvcm91dGVyLWxpbmtcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwibXQtMyBtYi0zIHVzZXJfbmFtZVwiXG4gICAgICAgICAgICBAY2xpY2s9XCJhY3RpZiA9ICFhY3RpZlwiXG4gICAgICAgICAgICA6c3R5bGU9XCJhY3RpdmUgPyB7IGRpc3BsYXk6ICdub25lJyB9IDogeyBkaXNwbGF5OiAnYmxvY2snIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LW11dGVkIG5hbWUgZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiXG4gICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiBtZGVpdW1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgID57eyBhY2NvdW50LmZpcnN0TmFtZSB9fVxuICAgICAgICAgICAgICAgIHt7IGFjY291bnQubGFzdE5hbWUgfX0gJm5ic3A7Jm5ic3A7PC9zcGFuXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPHYtaWNvbj5tZGkgbWRpLWFjY291bnQtY2lyY2xlPC92LWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPHVsXG4gICAgICAgICAgICAgIGNsYXNzPVwibGlzdC11bnN0eWxlZCBkcm9wIGFuaW1hdGVfX2FuaW1hdGVkIGFuaW1hdGVfX2JhY2tJbkRvd25cIlxuICAgICAgICAgICAgICB2LWlmPVwiYWN0aWZcIlxuICAgICAgICAgICAgICB2LW9uOm1vdXNlbGVhdmU9XCJhY3RpZiA9ICFhY3RpZlwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxsaSB2LWZvcj1cIihpdGVtLCBrZXkpIGluIHN1Yk1lbnVcIiA6a2V5PVwia2V5XCI+XG4gICAgICAgICAgICAgICAgPHJvdXRlci1saW5rIDp0bz1cIml0ZW0udG9cIj57eyBpdGVtLnRpdGxlIH19PC9yb3V0ZXItbGluaz5cbiAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgPGxpPjxhIGhyZWY9XCIjXCIgQGNsaWNrPVwibG9nb3V0KClcIj5EZWNvbm5leGlvbjwvYT48L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8Y2hhdC1ib3ggLz5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IE1BSU5fVVJMIGZyb20gXCIuLi8uLi8uLi8uLi9jb21tb24uanMvbWFpblVybFwiO1xuaW1wb3J0IHN0b3JlIGZyb20gXCIuLi8uLi8uLi9zdG9yZVwiO1xuaW1wb3J0IENoYXRCb3ggZnJvbSBcIi4uL0NoYXRCb3gudnVlXCI7XG5leHBvcnQgZGVmYXVsdCB7XG4gIGNvbXBvbmVudHM6IHsgQ2hhdEJveCB9LFxuICBzdG9yZSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgYWN0aWY6IGZhbHNlLFxuICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgIGJnQ29sb3I6IFwiYmdfd2hpdGVcIixcbiAgICAgIGl0ZW1zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICB0bzogXCIvdHJhbnNhY3Rpb25zXCIsXG4gICAgICAgICAgdGl0bGU6IFwiVHJhbnNhY3Rpb25zXCIsXG4gICAgICAgICAgaWNvbjogXCJtZGkgbWRpLWNhcmRcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRvOiBcIi9tb25jb21wdGVcIixcbiAgICAgICAgICB0aXRsZTogXCJNYSBjYXJ0ZVwiLFxuICAgICAgICAgIGljb246IFwibWRpIG1kaS1jYXJkLWFjY291bnQtbWFpbFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdG86IFwiL2hpc3RvcmlxdWVcIixcbiAgICAgICAgICB0aXRsZTogXCJDb21tYW5kZVwiLFxuICAgICAgICAgIGljb246IFwibWRpIG1kaS1zd2FwLWhvcml6b250YWxcIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRvOiBcIi9kYXNoXCIsXG4gICAgICAgICAgdGl0bGU6IFwiU3RhdGlzdGlxdWVzXCIsXG4gICAgICAgICAgaWNvbjogXCJtZGkgbWRpLWNoYXJ0LWJhci1zdGFja2VkXCIsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgc3ViTWVudTogW1xuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6IFwiTWVzIGluZm9ybWF0aW9uc1wiLFxuICAgICAgICAgIHRvOiBcIi9wcm9maWxcIixcbiAgICAgICAgICBpY29uOiBcIm1kaSBtZGktYWNjb3VudFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6IFwiU2VydmljZXMgJiBPcHRpb25zXCIsXG4gICAgICAgICAgdG86IFwiL3NlcnZpY2VcIixcbiAgICAgICAgICBpY29uOiBcIm1kaSBtZGktYWNjb3VudFwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGl0bGU6IFwiU2VjdXJpdMOpXCIsXG4gICAgICAgICAgdG86IFwiL3NlY3VyaXR5XCIsXG4gICAgICAgICAgaWNvbjogXCJtZGkgbWRpLWFjY291bnRcIixcbiAgICAgICAgfSxcbiAgICAgICAgeyB0aXRsZTogXCJNYSBmb3JtdWxlXCIsIHRvOiBcIi9mb3JtdWxlXCIsIGljb246IFwibWRpIG1kaS1hY2NvdW50XCIgfSxcbiAgICAgICAgeyB0aXRsZTogXCJNZXMgZG9jdW1lbnRzXCIsIHRvOiBcIi9kb2N1bWVudFwiLCBpY29uOiBcIm1kaSBtZGktYWNjb3VudFwiIH0sXG4gICAgICAgIHsgdGl0bGU6IFwiQWlkZXMgJiBTdXBwb3J0XCIsIHRvOiBcIi9zdXBwb3J0XCIsIGljb246IFwibWRpIG1kaS1hY2NvdW50XCIgfSxcbiAgICAgICAgeyB0aXRsZTogXCJGYXFcIiwgdG86IFwiL2ZhcVwiLCBpY29uOiBcIm1kaSBtZGktYWNjb3VudFwiIH0sXG4gICAgICAgIHsgdGl0bGU6IFwiQm9uIHBsYW5cIiwgdG86IFwiL2JvblBsYW5cIiwgaWNvbjogXCJtZGkgbWRpLWFjY291bnRcIiB9LFxuICAgICAgXSxcbiAgICB9O1xuICB9LFxuICBjcmVhdGVkKCkge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHRoaXMuaGFuZGxlU2Nyb2xsKTtcbiAgfSxcbiAgZGVzdHJveWVkKCkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwic2Nyb2xsXCIsIHRoaXMuaGFuZGxlU2Nyb2xsKTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBhY2NvdW50OiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5hY2NvdW50O1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0QWNjb3VudFwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIG9yZGVyczoge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUub3JkZXI7XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRPcmRlclwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIGNhcmRzOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5jYXJkO1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0Q2FyZFwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHRva2VuOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS50b2tlbjtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldFRva2VuXCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgdWlkY2FyZDoge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUudWlkQ2FyZDtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldFVpZENhcmRcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgfSxcbiAgbW91bnRlZCgpIHtcbiAgICBjb25zdCBoZWFkZXJzID0ge1xuICAgICAgICBhY2NlcHQ6IFwiKi8qXCIsXG4gICAgICAgIFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICBcIngtcG9zLWNsaWVudC1rZXlcIjogcHJvY2Vzcy5lbnYuUE9TX0NMSUVOVF9LRVksXG4gICAgICAgIFwieC1wb3Mtc2Vzc2lvbi10b2tlblwiOiBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwidG9rZW5cIilcbiAgICAgICAgICA/IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJ0b2tlblwiKVxuICAgICAgICAgIDogdGhpcy50b2tlbixcbiAgICAgIH07XG4gICAgLy9hbGVydChcImJiNjA2NDU5LTczODUtNDkxZC04MDY3LWQyNGNlMDRkZThhNlwiKVxuICAgIC8vc2Vzc2lvblN0b3JhZ2UuY2xlYXIoKTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IGF4aW9zLmNyZWF0ZSh7XG4gICAgICB3aXRoQ3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiLFxuICAgIH0pO1xuICAgIHRyeSB7XG4gICAgICBpbnN0YW5jZVxuICAgICAgICAucG9zdChNQUlOX1VSTC5QUk9GSUwsIHt9LCB7IGhlYWRlcnMgfSlcbiAgICAgICAgLnRoZW4oKGUpID0+IHtcbiAgICAgICAgICBjb25zdCAkZGF0YSA9IGUuZGF0YTtcbiAgICAgICAgICBjb25zb2xlXG4gICAgICAgICAgaWYgKCRkYXRhLmFjY291bnQpIHtcbiAgICAgICAgICAgIC8vY29uc29sZS5sb2coJGRhdGEpO1xuICAgICAgICAgICAgLy9jb25zb2xlLmNsZWFyKClcbiAgICAgICAgICAgIHRoaXMuYWNjb3VudCA9ICRkYXRhLmFjY291bnQ7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygkZGF0YS5hY2NvdW50KTtcbiAgICAgICAgICAgIGlmICgkZGF0YS5jYXJkcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIHRoaXMuY2FyZHMgPSAkZGF0YS5jYXJkcztcbiAgICAgICAgICAgICAgdGhpcy51aWRjYXJkID0gJGRhdGEuY2FyZHNbMF07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNle1xuICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCd2aWRlJylcbiAgICAgICAgICAgICAgdGhpcy5jYXJkcz1cIlZpZGVcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaW5zdGFuY2VcbiAgICAgICAgICAgICAgLnBvc3QoTUFJTl9VUkwuT1JERVJfTElTVCwge30sIHsgaGVhZGVycyB9KVxuICAgICAgICAgICAgICAudGhlbigoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0ICRkYXRhID0gZS5kYXRhO1xuICAgICAgICAgICAgICAgIGlmICgkZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAvL3RoaXMub3JkZXJzPSRkYXRhLm9yZGVyc1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlLnJlc3BvbnNlLnJlcXVlc3QpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vcGVuTm90aWZpY2F0aW9uKFxuICAgICAgICAgICAgICBcIkRlY29ubmV4aW9uXCIsXG4gICAgICAgICAgICAgIFwiT29vcHMhIGxhIHNlc3Npb24gYSBleHBpcsOpZSwgdmV1aWxsZXogdm91cyByZWNvbm5lY2V0ZXJcIixcbiAgICAgICAgICAgICAgXCJkYW5nZXJcIlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8vY29uc29sZS5jbGVhcigpXG4gICAgICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaChcIi9cIik7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhlLnJlc3BvbnNlLnJlcXVlc3QpO1xuICAgICAgICAgIC8vYWxlcnQoZSlcbiAgICAgICAgICB0aGlzLm9wZW5Ob3RpZmljYXRpb24oXG4gICAgICAgICAgICBcIkRlY29ubmV4aW9uXCIsXG4gICAgICAgICAgICBcIk9vb3BzISBsYSBzZXNzaW9uIGEgZXhwaXLDqWUsIHZldWlsbGV6IHZvdXMgcmVjb25uZWNldGVyXCIsXG4gICAgICAgICAgICBcImRhbmdlclwiXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zb2xlLmNsZWFyKCk7XG4gICAgICAgICAgdGhpcy4kcm91dGVyLnB1c2goXCIvXCIpO1xuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgLy9hbGVydChlcnJvcilcbiAgICAgIHRoaXMuJHJvdXRlci5wdXNoKFwiL1wiKTtcbiAgICB9XG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBvcGVuTm90aWZpY2F0aW9uKHRpdGxlLCB0ZXh0LCBjb2xvciwgcG9zaXRpb24gPSBcInRvcC1yaWdodFwiLCBpY29uID0gbnVsbCkge1xuICAgICAgY29uc3Qgbm90aSA9IHRoaXMuJHZzLm5vdGlmaWNhdGlvbih7XG4gICAgICAgIGljb24sXG4gICAgICAgIGNvbG9yLFxuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHRleHQsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIGhhbmRsZVNjcm9sbChldmVudCkge1xuICAgICAgY29uc3QgeSA9IHdpbmRvdy5zY3JvbGxZO1xuICAgICAgaWYgKHkgPiA2MCkge1xuICAgICAgICB0aGlzLmJnQ29sb3IgPSBcImJnX2NvbG9yXCI7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmJnQ29sb3IgPSBcImJnX3doaXRlXCI7XG4gICAgICB9XG4gICAgfSxcbiAgICBsb2dvdXQoKSB7XG4gICAgICBjb25zdCBoZWFkZXJzID0ge1xuICAgICAgICBhY2NlcHQ6IFwiKi8qXCIsXG4gICAgICAgIFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICBcIngtcG9zLWNsaWVudC1rZXlcIjogcHJvY2Vzcy5lbnYuUE9TX0NMSUVOVF9LRVksXG4gICAgICAgIFwieC1wb3Mtc2Vzc2lvbi10b2tlblwiOiBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwidG9rZW5cIilcbiAgICAgICAgICA/IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJ0b2tlblwiKVxuICAgICAgICAgIDogdGhpcy50b2tlbixcbiAgICAgIH07XG4gICAgICBzZXNzaW9uU3RvcmFnZS5jbGVhcigpO1xuICAgICAgY29uc3QgaW5zdGFuY2UgPSBheGlvcy5jcmVhdGUoe1xuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiLFxuICAgICAgfSk7XG4gICAgICBpbnN0YW5jZVxuICAgICAgICAucG9zdChNQUlOX1VSTC5MT0dPVVQsIHt9LCB7IGhlYWRlcnMgfSlcbiAgICAgICAgLnRoZW4oKGUpID0+IHtcbiAgICAgICAgICB0aGlzLm9wZW5Ob3RpZmljYXRpb24oXG4gICAgICAgICAgICBcIkRlY29ubmV4aW9uXCIsXG4gICAgICAgICAgICBcIlZvdXMgw6p0ZXMgZGVjb25uZWN0ZXIgYXZlYyBzdWNjZXNzXCIsXG4gICAgICAgICAgICBcInN1Y2Nlc3NcIlxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy4kcm91dGVyLnB1c2goXCIvXCIpO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IGNvbnNvbGUubG9nKGUpKTtcbiAgICB9LFxuICAgIHZpZXdOb3RpZigpIHt9LFxuICAgIHJlY29tbWFuZGF0aW9uKCkge1xuICAgICAgdGhpcy5jb25zb2xlQ2xlYXIoKTtcbiAgICB9LFxuICAgIHJpYigpIHtcbiAgICAgIHRoaXMuY29uc29sZUNsZWFyKCk7XG4gICAgfSxcbiAgICByZWxldmUoKSB7XG4gICAgICB0aGlzLmNvbnNvbGVDbGVhcigpO1xuICAgIH0sXG4gICAgYXNzdXJhbmNlKCkge1xuICAgICAgdGhpcy5jb25zb2xlQ2xlYXIoKTtcbiAgICB9LFxuICAgIHJlZ2xhZ2UoKSB7XG4gICAgICB0aGlzLmNvbnNvbGVDbGVhcigpO1xuICAgIH0sXG4gICAgYWlkZSgpIHtcbiAgICAgIHRoaXMuY29uc29sZUNsZWFyKCk7XG4gICAgfSxcbiAgICBjb25zb2xlQ2xlYXIoKSB7XG4gICAgICBjb25zb2xlLmNsZWFyKCk7XG4gICAgfSxcbiAgfSxcbn07XG48L3NjcmlwdD5cblxuPHN0eWxlIHNjb3BlZD5cbi5hbmltYXRlX19hbmltYXRlZC5hbmltYXRlX19iYWNrSW5Eb3duIHtcbiAgLS1hbmltYXRlLWR1cmF0aW9uOiAwLjVzO1xufVxuLmJnLWdyYXkge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIHotaW5kZXg6IDk5OTtcbn1cbi5iZ193aGl0ZSB7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG59XG4uYmdfY29sb3Ige1xuICBiYWNrZ3JvdW5kOiAjZjVmNWY1O1xufVxuLnVzZXJfbmFtZSB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5uYW1lOmhvdmVyIHtcbiAgY29sb3I6IGJsYWNrO1xufVxuLmRyb3Age1xuICB6LWluZGV4OiA5OTk5O1xuICB3aWR0aDogMjAwcHg7XG4gIHJpZ2h0OiAwO1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGJveC1zaGFkb3c6IDFweCA0cHggMnB4IDFweCAjZjVmNWY1O1xufVxuXG4uZHJvcCBsaSB7XG4gIGJhY2tncm91bmQ6ICNmNWY1ZjU7XG4gIHRyYW5zaXRpb246IGFsbCAxcyBlYXNlLW91dDtcbiAgY29sb3I6IGJsYWNrO1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBwYWRkaW5nOiA1cHggMTVweDtcbiAgbWFyZ2luLWJvdHRvbTogMHB4O1xufVxuLmRyb3AgbGk6aG92ZXIge1xuICBiYWNrZ3JvdW5kOiAjZjRmN2Y4O1xuICBjb2xvcjogYmxhY2s7XG59XG4uZHJvcCBsaSBhIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBsZXR0ZXItc3BhY2luZzogMC43cHg7XG4gIGZvbnQtc2l6ZTogMTNweDtcbiAgY29sb3I6ICMyMTI1Mjk7XG59XG5cbi5zbmlwMTEzNSB7XG4gIGZvbnQtZmFtaWx5OiBcIlJhbGV3YXlcIiwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gIC8qdGV4dC1hbGlnbjogY2VudGVyOyovXG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xuICBmb250LXdlaWdodDogNTAwO1xufVxuLnNuaXAxMTM1ICoge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuLnNuaXAxMTM1IGxpIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBsaXN0LXN0eWxlOiBvdXRzaWRlIG5vbmUgbm9uZTtcbiAgbWFyZ2luOiAwIDAuNzVlbTtcbiAgcGFkZGluZzogMDtcbn1cbi5zbmlwMTEzNSBhIHtcbiAgcGFkZGluZzogMC41ZW0gMDtcbiAgY29sb3I6ICMyMTI1Mjk7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbGV0dGVyLXNwYWNpbmc6IDAuNXB4O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG4uc25pcDExMzUgLnJvdXRlci1saW5rLWV4YWN0LWFjdGl2ZXtcbiAgZm9udC1zdHlsZTpib2xkXG59XG4vKiouc25pcDExMzUgYTpiZWZvcmUsXG4uc25pcDExMzUgYTphZnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC4zNXMgZWFzZTtcbiAgdHJhbnNpdGlvbjogYWxsIDAuMzVzIGVhc2U7XG59XG4uc25pcDExMzUgYTpiZWZvcmUge1xuICBib3R0b206IDA7XG4gIGhlaWdodDogM3B4O1xuICB3aWR0aDogMCU7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIGJhY2tncm91bmQtY29sb3I6ICMyOTgwYjk7XG59XG4uc25pcDExMzUgYTphZnRlciB7XG4gIGxlZnQ6IDA7XG4gIHRvcDogMDtcbiAgcGFkZGluZzogMC41ZW0gMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBjb250ZW50OiBhdHRyKGRhdGEtaG92ZXIpO1xuICBjb2xvcjogI2ZmZmZmZjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgbWF4LXdpZHRoOiAwJTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5zbmlwMTEzNSBhOmhvdmVyOmJlZm9yZSxcbi5zbmlwMTEzNSBhOmFjdGl2ZTpiZWZvcmUsXG4uc25pcDExMzUgLnJvdXRlci1saW5rLWV4YWN0LWFjdGl2ZTpiZWZvcmUsXG4uc25pcDExMzUgLmN1cnJlbnQgYTpiZWZvcmUge1xuICBvcGFjaXR5OiAxO1xuICB3aWR0aDogMTAwJTtcbn1cbi5zbmlwMTEzNSBhOmhvdmVyOmFmdGVyLFxuLnNuaXAxMTM1IC5jdXJyZW50IGE6YWZ0ZXIge1xuICBtYXgtd2lkdGg6IDEwJTtcbn1cbiovXG4vKiBEZW1vIHB1cnBvc2VzIG9ubHkgKi9cbi5uYXZiYXItYnJhbmQge1xuICBwYWRkaW5nLXRvcDogMDtcbiAgcGFkZGluZy1ib3R0b206IDA7XG4gIG1hcmdpbi1yaWdodDogMXJlbTtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG4udnMtc2lkZWJhcl9faXRlbTphZnRlciB7XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgbGVmdDogLTRweDtcbiAgdG9wOiAwcHg7XG4gIHdpZHRoOiAwO1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQ6IHJnYmEodmFyKC0tdnMtY29sb3IpLCAxKTtcbiAgYm9yZGVyLXJhZGl1czogMHB4IDIwcHggMjBweCAwcHg7XG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTZweCk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC02cHgpO1xuICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjI1cyBlYXNlO1xuICB0cmFuc2l0aW9uOiBhbGwgMC4yNXMgZWFzZTtcbiAgLyogei1pbmRleDogNjA7ICovXG59XG4ubmF2LWxpbmsgLnJvdXRlci1saW5rLWV4YWN0LWFjdGl2ZSAucm91dGVyLWxpbmstYWN0aXZlIHtcbiAgY29sb3I6IHJlZDtcbn1cbi5uYXYtbGluayAucm91dGVyLWxpbmstZXhhY3QtYWN0aXZlIC5yb3V0ZXItbGluay1hY3RpdmUsXG4ubmF2YmFyLWRhcmsgLm5hdmJhci1uYXYgLm5hdi1saW5rIHtcbiAgLyogY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC41NSk7ICovXG4gIGNvbG9yOiAjMTk3NmQyO1xufVxuXG4ubmF2aWdhdGUtbWFpbiB7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItdG9wOiAxcHggc29saWQgZ3JheTtcbiAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGdyYXk7XG4gIGhlaWdodDogMzBweDtcbiAgbWFyZ2luLWxlZnQ6IDMwcHg7XG4gIGZvbnQtc2l6ZTogNzUlO1xufVxuLm5hdmlnYXRle1xuICB3aWR0aDoxMDAlXG59XG4vKiBSZXNwb25zaXZlICovXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2MDBweCkge1xuICAudG9wbmF2IGE6bm90KDpmaXJzdC1jaGlsZCksXG4gIC5kcm9wZG93biAuZHJvcGJ0biB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAudG9wbmF2IGEuaWNvbiB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gIC5kcm9wIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5iZy1ncmF5IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC50b3BuYXYucmVzcG9uc2l2ZSBhIHtcbiAgICBmbG9hdDogbm9uZTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICB9XG4gIC50b3BuYXYucmVzcG9uc2l2ZSAuZHJvcGRvd24ge1xuICAgIGZsb2F0OiBub25lO1xuICB9XG4gIC50b3BuYXYucmVzcG9uc2l2ZSAuZHJvcGRvd24tY29udGVudCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB9XG4gIC50b3BuYXYucmVzcG9uc2l2ZSAuZHJvcGRvd24gLmRyb3BidG4ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJjb250YWluZXJcIiBzdHlsZT1cImJhY2tocm91bmQ6dHJhbnNwYXJlbnRcIj5cbiAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBkYXRhZ3JpZCBkYXRhZ3JpZC1lbXB0eVwiPlxuICAgICAgPHRib2R5PlxuICAgICAgICA8dHIgY2xhc3M9XCJlbXB0eS1yb3dcIj5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgY2xhc3M9XCJlbXB0eS1yb3dcIj5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgY2xhc3M9XCJlbXB0eS1yb3dcIj5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgY2xhc3M9XCJuby1yZXN1bHRzXCI+XG4gICAgICAgICAgPHRkIGNvbHNwYW49XCIxMDBcIj5BdWN1biByZXN1bHRhdC48L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgICA8dHIgY2xhc3M9XCJlbXB0eS1yb3dcIj5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgY2xhc3M9XCJlbXB0eS1yb3dcIj5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgY2xhc3M9XCJlbXB0eS1yb3dcIj5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgY2xhc3M9XCJlbXB0eS1yb3dcIj5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgY2xhc3M9XCJlbXB0eS1yb3dcIj5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgY2xhc3M9XCJlbXB0eS1yb3dcIj5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgY2xhc3M9XCJlbXB0eS1yb3dcIj5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgY2xhc3M9XCJlbXB0eS1yb3dcIj5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgY2xhc3M9XCJlbXB0eS1yb3dcIj5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgY2xhc3M9XCJlbXB0eS1yb3dcIj5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgPC90cj5cblxuICAgICAgICA8dHIgY2xhc3M9XCJlbXB0eS1yb3dcIj5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgICA8dGQ+PHNwYW4+PC9zcGFuPjwvdGQ+XG4gICAgICAgICAgPHRkPjxzcGFuPjwvc3Bhbj48L3RkPlxuICAgICAgICAgIDx0ZD48c3Bhbj48L3NwYW4+PC90ZD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgICA8dGZvb3Q+PC90Zm9vdD5cbiAgICA8L3RhYmxlPlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c3R5bGUgc2NvcGVkPlxuLmNvbnRhaW5lcntcbiAgYmFja2dyb3VuZDp0cmFuc3BhcmVudDtcbn1cbi5uby1yZXN1bHRzIHtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBwYWRkaW5nOiAyNHB4IDA7XG59XG4uZGF0YWdyaWQgLmVtcHR5LXJvdyB0ZDpmaXJzdC1jaGlsZCB7XG4gIHdpZHRoOiAyMCU7XG59XG4uZGF0YWdyaWQgLmVtcHR5LXJvdyB0ZDpudGgtY2hpbGQoMykge1xuICB3aWR0aDogMTAlO1xufVxuLmRhdGFncmlkIC5lbXB0eS1yb3cgdGQ6bnRoLWNoaWxkKDQpIHtcbiAgd2lkdGg6IDI1JTtcbn1cbi5kYXRhZ3JpZCAuZW1wdHktcm93IHRkOm50aC1jaGlsZCg1KSB7XG4gIHdpZHRoOiAxMCU7XG59XG4uZGF0YWdyaWQgLmVtcHR5LXJvdyB0ZDpudGgtY2hpbGQoNikge1xuICB3aWR0aDogMzAlO1xufVxuLmRhdGFncmlkIC5lbXB0eS1yb3cgdGQgc3BhbiB7XG4gIGJhY2tncm91bmQ6ICNkZWUyZTY7XG4gIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMTBweDtcbiAgbWFyZ2luOiAxM3B4IDA7XG4gIHdpZHRoOiAxMDAlO1xufVxuLmRhdGFncmlkIC5lbXB0eS1yb3cgdGQge1xuICBwYWRkaW5nOiAwIDhweDtcbn1cbi5kYXRhZ3JpZCB0ZCxcbi5kYXRhZ3JpZCB0aCB7XG4gIGJvcmRlcjogbm9uZTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbi5kYXRhZ3JpZCB0ZCB7XG4gIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgI2RlZTJlNjtcbiAgbGluZS1oZWlnaHQ6IDIwcHg7XG4gIHBhZGRpbmc6IDhweDtcbn1cbnRhYmxlLmRhdGFncmlkIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7XG4gIGNvbG9yOiAjZGVlMmU2O1xuICBtYXJnaW4tYm90dG9tOiAwO1xuICB3aWR0aDogMTAwJTtcbn1cbi5kYXRhZ3JpZCB0Ym9keSB7XG4gIGJveC1zaGFkb3c6IDAgMXB4IDAgI2RlZTJlNjtcbn1cblxudGJvZHksXG50ZCxcbnRmb290LFxudGgsXG50aGVhZCxcbnRyIHtcbiAgYm9yZGVyOiAwIHNvbGlkO1xuICBib3JkZXItY29sb3I6IGluaGVyaXQ7XG59XG4udGFibGUgPiB0Ym9keSB7XG4gIHZlcnRpY2FsLWFsaWduOiBpbmhlcml0O1xufVxuLnRhYmxlIHtcbiAgLS1icy10YWJsZS1iZzogdHJhbnNwYXJlbnQ7XG4gIC0tYnMtdGFibGUtYWNjZW50LWJnOiB0cmFuc3BhcmVudDtcbiAgLS1icy10YWJsZS1zdHJpcGVkLWNvbG9yOiAjNGM1MzY3O1xuICAtLWJzLXRhYmxlLXN0cmlwZWQtYmc6IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gIC0tYnMtdGFibGUtYWN0aXZlLWNvbG9yOiAjNGM1MzY3O1xuICAtLWJzLXRhYmxlLWFjdGl2ZS1iZzogcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAtLWJzLXRhYmxlLWhvdmVyLWNvbG9yOiAjNGM1MzY3O1xuICAtLWJzLXRhYmxlLWhvdmVyLWJnOiByZ2JhKDAsIDAsIDAsIDAuMDc1KTtcbiAgYm9yZGVyLWNvbG9yOiAjZGVlMmU2O1xuICBjb2xvcjogIzRjNTM2NztcbiAgbWFyZ2luLWJvdHRvbTogMXJlbTtcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbiAgd2lkdGg6IDEwMCU7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJjZW50ZXJcIj5cclxuICAgIDxkaXY+XHJcbiAgICAgIDx2cy10YWJsZT5cclxuICAgICAgICA8dGVtcGxhdGUgI3RoZWFkPlxyXG4gICAgICAgICAgPHZzLXRyIGRhcms+XHJcbiAgICAgICAgICAgIDx2cy10aD5cclxuICAgICAgICAgICAgICA8dnMtY2hlY2tib3hcclxuICAgICAgICAgICAgICAgIDppbmRldGVybWluYXRlPVwic2VsZWN0ZWQubGVuZ3RoID09IHVzZXJzLmxlbmd0aFwiXHJcbiAgICAgICAgICAgICAgICB2LW1vZGVsPVwiYWxsQ2hlY2tcIiBjb2xvcj1cIiM4QThBOEFcIlxyXG4gICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgIDwvdnMtdGg+XHJcbiAgICAgICAgICAgIDx2cy10aD4gTGFiZWwgPC92cy10aD5cclxuICAgICAgICAgICAgPHZzLXRoPiBNb250YW50IDwvdnMtdGg+XHJcbiAgICAgICAgICAgIDx2cy10aD4gRGF0ZSA8L3ZzLXRoPlxyXG4gICAgICAgICAgPC92cy10cj5cclxuICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgIDx0ZW1wbGF0ZSAjdGJvZHk+XHJcbiAgICAgICAgICA8dnMtdHJcclxuICAgICAgICAgICAgOmtleT1cImlcIlxyXG4gICAgICAgICAgICB2LWZvcj1cIih0ciwgaSkgaW4gdXNlcnNcIlxyXG4gICAgICAgICAgICBAY2xpY2s9XCJkZXRhaWwodHIpXCJcclxuICAgICAgICAgICAgdi1iLXRvZ2dsZS5zaWRlYmFyLWZvb3RlclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8dnMtdGQgY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgPHZzLXJhZGlvIDp2YWw9XCJ0clwiIHYtbW9kZWw9XCJzZWxlY3RlZFwiIC8+XHJcbiAgICAgICAgICAgIDwvdnMtdGQ+XHJcbiAgICAgICAgICAgIDx2cy10ZD5cclxuICAgICAgICAgICAgICA8c3BhbiB2LWlmPVwidHIudHJhbnMuZGF0YS5sYWJlbCAhPSAnJ1wiPnt7XHJcbiAgICAgICAgICAgICAgICB0ci50cmFucy5kYXRhLmxhYmVsXHJcbiAgICAgICAgICAgICAgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gdi1lbHNlPioqKioqKjwvc3Bhbj5cclxuICAgICAgICAgICAgPC92cy10ZD5cclxuICAgICAgICAgICAgPHZzLXRkPiB7eyB0ci50cmFucy5kYXRhLmFtb3VudCB9fSB7eyB0ci5jYXJkLmN1cnJlbmN5IH19IDwvdnMtdGQ+XHJcbiAgICAgICAgICAgIDx2cy10ZD5cclxuICAgICAgICAgICAgICB7eyB0ci50cmFucy5kYXRhLmRhdGUgfCBmb3JtYXREYXRlIH19XHJcbiAgICAgICAgICAgIDwvdnMtdGQ+XHJcbiAgICAgICAgICA8L3ZzLXRyPlxyXG4gICAgICAgIDwvdGVtcGxhdGU+XHJcbiAgICAgIDwvdnMtdGFibGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxiLXNpZGViYXJcclxuICAgICAgICBpZD1cInNpZGViYXItZm9vdGVyXCJcclxuICAgICAgICBhcmlhLWxhYmVsPVwiVHJhbnNhY3Rpb25cIlxyXG4gICAgICAgIHRpdGxlPVwiVHJhbnNhY3Rpb25cIlxyXG4gICAgICAgIGJhY2tkcm9wLXZhcmlhbnQ9XCJkYXJrXCJcclxuICAgICAgICBiYWNrZHJvcFxyXG4gICAgICAgIHNoYWRvd1xyXG4gICAgICAgIHJpZ2h0XHJcbiAgICAgICAgd2lkdGg9XCIzNTBweFwiXHJcbiAgICAgID5cclxuICAgICAgICA8dGVtcGxhdGUgI2Zvb3Rlcj1cInsgaGlkZSB9XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGJnLWRhcmsgdGV4dC1saWdodCBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMyBweS0yXCI+XHJcbiAgICAgICAgICAgIDxzdHJvbmcgY2xhc3M9XCJtci1hdXRvXCI+VmF6aXZhNEFMTDwvc3Ryb25nPlxyXG4gICAgICAgICAgICA8Yi1idXR0b24gc2l6ZT1cInNtXCIgQGNsaWNrPVwiaGlkZVwiPkZlcm1lcjwvYi1idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RlbXBsYXRlPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJweC0zIHB5LTJcIj5cclxuICAgICAgICAgIDxwPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGV4dC1zbWFsbFwiPk51bWVybyBkZSBsYSBjYXJ0ZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIDp2YWx1ZT1cInVpZFRyYW5zYWN0aW9uLmNhcmQ/dWlkVHJhbnNhY3Rpb24uY2FyZC5wYW5OdW1iZXI6JyoqKioqKioqJ1wiIHYtaWY9XCJ1aWRUcmFuc2FjdGlvblwiIHJlYWRvbmx5Lz4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtc21hbGxcIj5DYXRlZ29yaWU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIiA6dmFsdWU9XCJ1aWRUcmFuc2FjdGlvbi50cmFucy5jYXRlZ29yeT91aWRUcmFuc2FjdGlvbi50cmFucy5jYXRlZ29yeS5kZXNjcmlwdGlvbjonQXVjdW5lJ1wiIHYtaWY9XCJ1aWRUcmFuc2FjdGlvblwiIHJlYWRvbmx5Lz4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtc21hbGxcIj5MYWJlbDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIDp2YWx1ZT1cInVpZFRyYW5zYWN0aW9uLnRyYW5zLmRhdGE/dWlkVHJhbnNhY3Rpb24udHJhbnMuZGF0YS5sYWJlbDonKioqKioqKidcIiB2LWlmPVwidWlkVHJhbnNhY3Rpb25cIiByZWFkb25seS8+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbWItM1wiPlxyXG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInRleHQtc21hbGxcIj5Nb250YW50IDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiIDp2YWx1ZT1cInVpZFRyYW5zYWN0aW9uLnRyYW5zLmRhdGE/dWlkVHJhbnNhY3Rpb24udHJhbnMuZGF0YS5hbW91bnQgKyAnICcrIHVpZFRyYW5zYWN0aW9uLmNhcmQuY3VycmVuY3k6J0F1Y3VuZSdcIiB2LWlmPVwidWlkVHJhbnNhY3Rpb25cIiByZWFkb25seSAvPiAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgPGItaW1nXHJcbiAgICAgICAgICAgIHNyYz1cIi9pbWFnZXMvdmF6aXZhLmpwZWdcIlxyXG4gICAgICAgICAgICBmbHVpZFxyXG4gICAgICAgICAgICB0aHVtYm5haWxcclxuICAgICAgICAgID48L2ItaW1nPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Itc2lkZWJhcj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG48c2NyaXB0PlxyXG5pbXBvcnQgc3RvcmUgZnJvbSBcIi4uLy4uL3N0b3JlXCI7XHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBzdG9yZSxcclxuICBwcm9wczoge1xyXG4gICAgdXNlcnM6IEFycmF5IHwgT2JqZWN0LFxyXG4gIH0sXHJcbiAgZGF0YTogKCkgPT4gKHtcclxuICAgIGVkaXRBY3RpdmU6IGZhbHNlLFxyXG4gICAgZWRpdDogbnVsbCxcclxuICAgIGVkaXRQcm9wOiB7fSxcclxuICAgIHNlYXJjaDogXCJcIixcclxuICAgIGFsbENoZWNrOiBmYWxzZSxcclxuICAgIHBhZ2U6IDEsXHJcbiAgICBtYXg6IDE1MCxcclxuICAgIGFjdGl2ZTogMCxcclxuICAgIHNlbGVjdGVkOiBbXSxcclxuICB9KSxcclxuICBjb21wdXRlZDoge1xyXG4gICAgdWlkVHJhbnNhY3Rpb246IHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS51aWRUcmFuc2FjdGlvbjtcclxuICAgICAgfSxcclxuICAgICAgc2V0KHZhbCkge1xyXG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldFVpZFRyYW5zYWN0aW9uXCIsIHZhbCk7XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gIH0sXHJcbiAgbWV0aG9kczoge1xyXG4gICAgZGV0YWlsKGl0ZW1zKSB7XHJcbiAgICAgIHRoaXMudWlkVHJhbnNhY3Rpb24gPSBpdGVtcztcclxuICAgIH0sXHJcbiAgICBoaWRlKCl7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWQ9W11cclxuICAgIH1cclxuICB9LFxyXG59O1xyXG48L3NjcmlwdD5cclxuPHN0eWxlPlxyXG4udnMtdGFibGVfX3RoZWFkIC52cy10YWJsZV9fdGgge1xyXG4gIGJhY2tncm91bmQ6IzAwMDtcclxuICBjb2xvcjojZmZmXHJcbiAgICAvKiBiYWNrZ3JvdW5kOiByZ2JhKHZhcigtLXZzLWdyYXktMiksIDEpOyAqL1xyXG59XHJcblxyXG48L3N0eWxlPlxyXG4iLCI8dGVtcGxhdGU+XHJcbiAgPGRpdj5cclxuICAgIDx2cy1idXR0b24gZmxhdCBAY2xpY2s9XCJzaG93TW9kYWxcIj4gTm91dmVsbGUgdHJhbnNhY3Rpb24gPC92cy1idXR0b24+XHJcbiAgICA8bW9kYWwtYmFzZSB2LWlmPVwiYWN0aW9uID09ICd0cmFuc2FjdGlvbidcIj5cclxuICAgICAgPHRlbXBsYXRlICNoZWFkZXI+Tm91dmVsbGUgdHJhbnNhY3Rpb248L3RlbXBsYXRlPlxyXG4gICAgICA8dGVtcGxhdGUgI2NvbnRlbnQ+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNlbnRlciBjb250ZW50LWlucHV0c1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTZcIj5cclxuICAgICAgICAgICAgPHZzLWlucHV0IGxhYmVsLXBsYWNlaG9sZGVyPVwiTW90aWZcIiB2LW1vZGVsPVwibW90aWZcIiAvPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItNlwiPlxyXG4gICAgICAgICAgICA8dnMtaW5wdXRcclxuICAgICAgICAgICAgICBsYWJlbC1wbGFjZWhvbGRlcj1cIk1vbnRhbnRcIlxyXG4gICAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxyXG4gICAgICAgICAgICAgIHYtbW9kZWw9XCJtb250YW50XCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTZcIj5cclxuICAgICAgICAgICAgPHZzLWlucHV0IGxhYmVsLXBsYWNlaG9sZGVyPVwiQsOpbsOpZmljaWFpcmVcIiB2LW1vZGVsPVwiYmVuZWZpY2lhaXJlXCIgLz5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTZcIj5cclxuICAgICAgICAgICAgPHZzLWlucHV0IGxhYmVsLXBsYWNlaG9sZGVyPVwiSnVzdGlmXCIgdi1tb2RlbD1cImp1c3RpZlwiIC8+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC90ZW1wbGF0ZT5cclxuICAgICAgPHRlbXBsYXRlICNmb290ZXI+XHJcbiAgICAgICAgPHZzLWJ1dHRvbiBibG9jaz5TYXV2ZWdhcmRlcjwvdnMtYnV0dG9uPlxyXG4gICAgICA8L3RlbXBsYXRlPlxyXG4gICAgPC9tb2RhbC1iYXNlPlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xyXG5pbXBvcnQgTW9kYWxCYXNlIGZyb20gXCIuL01vZGFsQmFzZS52dWVcIjtcclxuaW1wb3J0IHN0b3JlIGZyb20gXCIuL3N0b3JlXCI7XHJcbmltcG9ydCBNQUlOX1VSTCBmcm9tIFwiLi4vLi4vLi4vY29tbW9uLmpzL21haW5VcmxcIjtcclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIGNvbXBvbmVudHM6IHsgTW9kYWxCYXNlIH0sXHJcbiAgc3RvcmUsXHJcbiAgZGF0YSgpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGFjdGl2ZTogZmFsc2UsXHJcbiAgICAgIG1vdGlmOiBcIlwiLFxyXG4gICAgICBiZW5lZmljaWFpcmU6IFwiXCIsXHJcbiAgICAgIGp1c3RpZjogXCJcIixcclxuICAgICAgbW9udGFudDogXCJcIixcclxuICAgIH07XHJcbiAgfSxcclxuICBjb21wdXRlZDoge1xyXG4gICAgbW9kYWw6IHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldE1vZGFsO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldE1vZGFsXCIsIHZhbCk7XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgYWN0aW9uOiB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRBY3Rpb247XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0QWN0aW9uXCIsIHZhbCk7XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gIH0sXHJcbiAgbWV0aG9kczoge1xyXG4gICAgc2hvd01vZGFsKCkge1xyXG4gICAgICB0aGlzLmFjdGlvbiA9IFwidHJhbnNhY3Rpb25cIjtcclxuICAgICAgdGhpcy5tb2RhbCA9IHRydWU7XHJcbiAgICB9LFxyXG4gIH0sXHJcbiAgbW91bnRlZCgpIHtcclxuICAgIHZhciBkYXRhID0gSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICBtb2JpbGVQaG9uZTogXCIrMjEyNzY2NzQyMjUyXCIsXHJcbiAgICAgIGVtYWlsOiBcImFkbGlwbGFubmluZ0BnbWFpbC5jb21cIixcclxuICAgICAgcGFzc3dvcmQ6IFwicGFzc3dvcmRcIixcclxuICAgIH0pO1xyXG4gICAgdmFyIGNvbmZpZyA9IHtcclxuICAgICAgbWV0aG9kOiBcInBvc3RcIixcclxuICAgICAgdXJsOiBwcm9jZXNzLmVudi5QT1NfQ0xJRU5UX1VSTCArIFwiL3JlZ2lzdGVyL2NyZWF0ZVNlc3Npb25cIixcclxuICAgICAgaGVhZGVyczoge1xyXG4gICAgICAgIFwiWC1QT1MtQ0xJRU5ULUtFWVwiOiBwcm9jZXNzLmVudi5QT1NfQ0xJRU5UX0tFWSxcclxuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiLFxyXG4gICAgICB9LFxyXG4gICAgICBkYXRhOiBkYXRhLFxyXG4gICAgfTtcclxuICB9LFxyXG59O1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZT5cclxuLnZzLWlucHV0IHtcclxuICBib3JkZXI6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcclxuICBwYWRkaW5nOiA3cHggMTNweDtcclxuICBib3JkZXItcmFkaXVzOiBpbmhlcml0O1xyXG4gIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuMjVzIGVhc2U7XHJcbiAgdHJhbnNpdGlvbjogYWxsIDAuMjVzIGVhc2U7XHJcbiAgcGFkZGluZy1sZWZ0OiAxMHB4O1xyXG4gIHdpZHRoOiAxMDAlO1xyXG59XHJcbjwvc3R5bGU+IiwiPHRlbXBsYXRlPlxyXG4gIDxkaXY+XHJcbiAgICA8ZGl2PlxyXG4gICAgICA8YmFzZS1zaWRlLWJhciAvPlxyXG4gICAgICA8IS0tPG5hdi1iYXI+PC9uYXYtYmFyPi0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWFpblwiPlxyXG4gICAgICAgIDxGYWRlVHJhbnNpdGlvbiA6ZHVyYXRpb249XCIyMDBcIiBtb2RlPVwib3V0LWluXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicHQtMCBwbC0zIHByLTNcIj5cclxuICAgICAgICAgICAgPHYtY29sIGNvbHM9XCIxXCIgY2xhc3M9XCJtdC0wIHB0LTBcIj48L3YtY29sPlxyXG4gICAgICAgICAgICA8bG9hZGVyIHYtaWY9XCJ0cmFuc2FjdGlvbnMubGVuZ3RoIDwgMVwiIC8+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIiB2LWVsc2UtaWY9XCJ0cmFuc2FjdGlvbnMgPT0gJ1ZpZGUnXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIHByLTBcIj5cclxuICAgICAgICAgICAgICAgIDx1c2VyIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtc3RhcnRcIj5cclxuICAgICAgICAgICAgICAgIDxoND5NZXMgPHNwYW4gY2xhc3M9XCJ0aXRsZS1wYWdlXCI+dHJhbnNhY3Rpb25zPC9zcGFuPjwvaDQ+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuX2Jsb2NrXCJcclxuICAgICAgICAgICAgICAgICAgQGNsaWNrPVwibmV3VHJhbnNcIlxyXG4gICAgICAgICAgICAgICAgICB2LWlmPVwiY2FyZHMgIT0gJ1ZpZGUnXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgTm91dmVsbGUgdHJhbnNhY3Rpb25cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bl9ibG9ja1wiIEBjbGljaz1cIm5ld0NhcmRcIiB2LWVsc2U+XHJcbiAgICAgICAgICAgICAgICAgIE5vdXZlbGxlIGNhcnRlXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZW1wdHkgLz5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDx2LWNvbCBjb2xzPVwiMTJcIiBtZD1cIjEyXCIgdi1lbHNlIGNsYXNzPVwibXQtMCBwdC0wXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICA8dXNlciAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHBiLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxoNT5cclxuICAgICAgICAgICAgICAgICAgICB7eyBjYXJkc1swXS5iYWxhbmNlIHwgYW1vdW50IH19XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgIHYtaHRtbD1cIiRvcHRpb25zLmZpbHRlcnMuY3VycmVuY3koY2FyZHNbMF0uY3VycmVuY3kpXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L2g1PlxyXG4gICAgICAgICAgICAgICAgICA8aDY+Vm90cmUgc29sZGUgYWN0dWVsPC9oNj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bl9ibG9ja1wiIEBjbGljaz1cImNvb3Jkb25uZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIENvb3Jkb25uw6llcyBiYW5jYWlyZXNcclxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5fb3V0bGluZVwiIEBjbGljaz1cImNhcnRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgTWVzIGNvbW1hbmRlc1xyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBtYi0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtcHJlcGVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLXRleHRcIiBpZD1cImJhc2ljLWFkZG9uMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1tYWduaWZ5XCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICAgICAgICB0eXBlPVwic2VhcmNoXCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxyXG4gICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlJlY2hlcmNoZXIgdW5lIHRyYW5zYWN0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlVzZXJuYW1lXCJcclxuICAgICAgICAgICAgICAgICAgYXJpYS1kZXNjcmliZWRieT1cImJhc2ljLWFkZG9uMVwiXHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwhLS1maWx0ZXItLT5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtMiBtYi00IGQtZmxleFwiPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuX3doaXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWZpbHRlci12YXJpYW50XCI+PC9pPiBGaWx0cmVzPC9idXR0b25cclxuICAgICAgICAgICAgICAgICAgPiZuYnNwOyZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5fd2hpdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICBWdWVzIHBlcnNvbm5hbGlzw6llcyA8aSBjbGFzcz1cIm1kaSBtZGktY2hldnJvbi1kb3duXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTIgbWItNCBkLWZsZXhcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bl93aGl0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDEwIDxpIGNsYXNzPVwibWRpIG1kaS1jaGV2cm9uLWRvd25cIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPCEtLWVuZCBmaWx0ZXIgLS0+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxpc3QtdHJhbnNhY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgIDxsaXN0IDp1c2Vycz1cInRyYW5zYWN0aW9uc1wiPjwvbGlzdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgb2ZmcmVzIG10LTQgcC0wXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuX3doaXRlX291dGxpbmUgcGwtMFwiPlxyXG4gICAgICAgICAgICAgICAgICBPZmZyZXMgc3DDqWNpYWxlcyAvIEEgbGEgdW5lXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5fd2hpdGVfb3V0bGluZSBwci0wXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1wbHVzXCI+PC9pPiBWb2lyIHRvdXRlcyBsZXMgb2ZmcmVzXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgb2ZmcmVzIG9mZnJlczIgbXQtMiBwLTJcIlxyXG4gICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgPC92LWNvbD5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvRmFkZVRyYW5zaXRpb24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2PjwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuaW1wb3J0IEJhc2VTaWRlQmFyIGZyb20gXCIuLi9jb21wb25lbnRzL05hdmJhci9CYXNlU2lkZUJhci52dWVcIjtcclxuaW1wb3J0IE5hdkJhciBmcm9tIFwiLi4vY29tcG9uZW50cy9OYXZiYXIvQmFzZU5hdi52dWVcIjtcclxuaW1wb3J0IFVzZXIgZnJvbSBcIi4uL2NvbXBvbmVudHMvVXNlci52dWVcIjtcclxuaW1wb3J0IEVtcHR5IGZyb20gXCIuLi9jb21wb25lbnRzL0VtcHR5LnZ1ZVwiO1xyXG5pbXBvcnQgeyBGYWRlVHJhbnNpdGlvbiB9IGZyb20gXCJ2dWUyLXRyYW5zaXRpb25zXCI7XHJcbmltcG9ydCBMaXN0IGZyb20gXCIuL2xpc3QudnVlXCI7XHJcbmltcG9ydCBBZGRUcmFuc2FjdGlvbiBmcm9tIFwiLi9hZGRUcmFuc2FjdGlvbi52dWVcIjtcclxuaW1wb3J0IEFkZEJlbmVmaWNpYWlyZSBmcm9tIFwiLi9hZGRCZW5lZmljaWFpcmUudnVlXCI7XHJcbmltcG9ydCBMb2FkZXIgZnJvbSBcIi4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiO1xyXG5pbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XHJcbmltcG9ydCBNQUlOX1VSTCBmcm9tIFwiLi4vLi4vLi4vY29tbW9uLmpzL21haW5VcmxcIjtcclxuaW1wb3J0IHsgaGVhZGVycyB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24uanMvaGVhZGVyXCI7XHJcbmltcG9ydCBzdG9yZSBmcm9tIFwiLi4vLi4vc3RvcmVcIjtcclxuaW1wb3J0IHsgY2F0ZWdvcnlUcmFuc2FjdGlvbiBhcyBjYXRlZ29yeSB9IGZyb20gXCIuLi8uLi8uLi9jb21tb24uanMvdHJhbnNhY3Rpb25zXCI7XHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBzdG9yZSxcclxuICBjb21wb25lbnRzOiB7XHJcbiAgICBOYXZCYXIsXHJcbiAgICBFbXB0eSxcclxuICAgIEJhc2VTaWRlQmFyLFxyXG4gICAgRmFkZVRyYW5zaXRpb24sXHJcbiAgICBMaXN0LFxyXG4gICAgQWRkVHJhbnNhY3Rpb24sXHJcbiAgICBBZGRCZW5lZmljaWFpcmUsXHJcbiAgICBMb2FkZXIsXHJcbiAgICBVc2VyLFxyXG4gIH0sXHJcbiAgY29tcHV0ZWQ6IHtcclxuICAgIGFjY291bnQ6IHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5hY2NvdW50O1xyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsKSB7XHJcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0QWNjb3VudFwiLCB2YWwpO1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIHRva2VuOiB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUudG9rZW47XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRUb2tlblwiLCB2YWwpO1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGNhcmRzOiB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuY2FyZDtcclxuICAgICAgfSxcclxuICAgICAgc2V0KHZhbCkge1xyXG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldENhcmRcIiwgdmFsKTtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICB0cmFuc2FjdGlvbnM6IHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS50cmFuc2FjdGlvbnM7XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRUcmFuc2FjdGlvbnNcIiwgdmFsKTtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgfSxcclxuICB3YXRjaDoge1xyXG4gICAgY2FyZHModmFsKSB7XHJcbiAgICAgIHRoaXMuaGlzdG9yaXF1ZSgpO1xyXG4gICAgfSxcclxuICAgIHRyYW5zYWN0aW9ucyh2YWwpIHtcclxuICAgICAgLy9jb25zb2xlLmxvZyh2YWwpO1xyXG4gICAgfSxcclxuICB9LFxyXG4gIG1ldGhvZHM6IHtcclxuICAgIGZpbHRyZVRleHRlKGFyciwgcmVxdWV0ZSkge1xyXG4gICAgICByZXR1cm4gYXJyLmZpbHRlcihmdW5jdGlvbiAoZWwpIHtcclxuICAgICAgICByZXR1cm4gZWwudG9Mb3dlckNhc2UoKS5pbmRleE9mKHJlcXVldGUudG9Mb3dlckNhc2UoKSkgIT09IC0xO1xyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgICBuZXdDYXJkKCkge1xyXG4gICAgICB0aGlzLiRyb3V0ZXIucHVzaChcIi9tb25jb21wdGVcIik7XHJcbiAgICB9LFxyXG4gICAgbmV3VHJhbnMoKSB7XHJcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gYXhpb3MuY3JlYXRlKHtcclxuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiLFxyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgICBjb29yZG9ubmUoKSB7XHJcbiAgICAgIHRoaXMuJHJvdXRlci5wdXNoKFwiL21vbmNvbXB0ZVwiKTtcclxuICAgIH0sXHJcbiAgICBjYXJ0ZSgpIHtcclxuICAgICAgdGhpcy4kcm91dGVyLnB1c2goXCIvaGlzdG9yaXF1ZVwiKTtcclxuICAgIH0sXHJcbiAgICBvcGVuTm90aWZpY2F0aW9uKHRpdGxlLCB0ZXh0LCBjb2xvciwgcG9zaXRpb24gPSBcInRvcC1yaWdodFwiLCBpY29uID0gbnVsbCkge1xyXG4gICAgICBjb25zdCBub3RpID0gdGhpcy4kdnMubm90aWZpY2F0aW9uKHtcclxuICAgICAgICBpY29uLFxyXG4gICAgICAgIGNvbG9yLFxyXG4gICAgICAgIHBvc2l0aW9uLFxyXG4gICAgICAgIHRpdGxlLFxyXG4gICAgICAgIHRleHQsXHJcbiAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIGhpc3RvcmlxdWUoY291bnQgPSBudWxsLCBza2lwID0gbnVsbCkge1xyXG4gICAgICBjb25zdCBpbnN0YW5jZSA9IGF4aW9zLmNyZWF0ZSh7XHJcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiBcImluY2x1ZGVcIixcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IG15VG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwidG9rZW5cIilcclxuICAgICAgICA/IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJ0b2tlblwiKVxyXG4gICAgICAgIDogdGhpcy50b2tlbjtcclxuXHJcbiAgICAgIGNvbnN0IGhlYWRlciA9IGhlYWRlcnMobXlUb2tlbik7XHJcbiAgICAgIGNvbnN0ICRkYXRhID0gdGhpcy5jYXJkcztcclxuICAgICAgaWYgKCRkYXRhID09IFwiVmlkZVwiKSB7XHJcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvbnMgPSBcIlZpZGVcIjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgJGRhdGEubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICBjb25zdCBlbGVtZW50ID0gJGRhdGFbaW5kZXhdO1xyXG4gICAgICAgICAgY29uc3QgJGJvZHkgPSB7XHJcbiAgICAgICAgICAgIGNhcmRUb2tlbjogZWxlbWVudC50b2tlbixcclxuICAgICAgICAgICAgY291bnQ6IGNvdW50ID8gY291bnQgOiA1LFxyXG4gICAgICAgICAgICBza2lwOiBza2lwID8gc2tpcCA6IDAsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgaW5zdGFuY2VcclxuICAgICAgICAgICAgLnBvc3QoTUFJTl9VUkwuQ0FSRF9UUkFOU0FDVElPTiwgJGJvZHksIGhlYWRlcilcclxuICAgICAgICAgICAgLnRoZW4oKGUpID0+IHtcclxuICAgICAgICAgICAgICB2YXIgJGRhdGFzID0gZS5kYXRhO1xyXG4gICAgICAgICAgICAgIGxldCB2YWwgPSBbXTtcclxuICAgICAgICAgICAgICBpZiAoJGRhdGFzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCAkZGF0YXMubGVuZ3RoOyBpbmRleCsrKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRzID0gJGRhdGFzW2luZGV4XTtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgZm91bmQgPSBjYXRlZ29yeS5maW5kKChlbCkgPT4gZWwuaWQgPT0gZWxlbWVudHMubWNjKTtcclxuICAgICAgICAgICAgICAgICAgdmFsLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIGNhcmQ6IGVsZW1lbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgdHJhbnM6IHsgZGF0YTogZWxlbWVudHMsIGNhdGVnb3J5OiBmb3VuZCB9LFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMudHJhbnNhY3Rpb25zID0gdmFsO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRyYW5zYWN0aW9ucyA9IFwiVmlkZVwiO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmNhdGNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgJGRhdGEgPSBlLnJlc3BvbnNlLnJlcXVlc3QucmVzcG9uc2U7XHJcbiAgICAgICAgICAgICAgY29uc3QgeCA9IEpTT04ucGFyc2UoJGRhdGEpO1xyXG4gICAgICAgICAgICAgIGlmICh4LmNvZGUpIHtcclxuICAgICAgICAgICAgICAgIGlmICh4LmNvZGUgPT0gXCJHTE9CQUxfVkFMSURBVElPTl9FUlJPUlwiKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub3Blbk5vdGlmaWNhdGlvbihcIk9vcHNcIiwgeC5kZXRhaWxzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICB9LFxyXG4gIG1vdW50ZWQoKSB7XHJcbiAgICAvL3RoaXMuaGlzdG9yaXF1ZSgpO1xyXG4gIH0sXHJcbn07XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIHNjb3BlZD5cclxuLnYtYXBwbGljYXRpb24tLXdyYXAge1xyXG4gIGJhY2tncm91bmQ6ICNlNWU1ZTU7XHJcbn1cclxuLmxpc3QtdHJhbnNhY3Rpb24ge1xyXG4gIG1pbi1oZWlnaHQ6IDM5MXB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDMwcHg7XHJcbiAgYmFja2dyb3VuZDogI2ZmZjtcclxufVxyXG4ub2ZmcmVzIHtcclxuICBib3JkZXItcmFkaXVzOiAyOXB4O1xyXG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbn1cclxuLm9mZnJlczIge1xyXG4gIGJvcmRlci1yYWRpdXM6IDI5cHg7XHJcbiAgbWluLWhlaWdodDogMjAwcHg7XHJcbiAgYmFja2dyb3VuZDogI2ZmZjtcclxufVxyXG4uYnRuX3doaXRlX291dGxpbmUge1xyXG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XHJcbn1cclxuLmlucHV0LWdyb3VwLXRleHQge1xyXG4gIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMjlweDtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjZmZmO1xyXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwcmVtO1xyXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDI5cHg7XHJcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDByZW07XHJcbiAgYm9yZGVyLXJpZ2h0OiBub25lO1xyXG4gIGJveC1zaGFkb3c6IDBweCA0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcclxufVxyXG5pbnB1dFt0eXBlPVwic2VhcmNoXCJdIHtcclxuICBib3JkZXItbGVmdDogbm9uZTtcclxuICBib3JkZXItcmFkaXVzOiAwcmVtIDI5cHggMjlweCAwcmVtO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNmZmY7XHJcbiAgYmFja2dyb3VuZDogI2ZmZjtcclxuICBib3gtc2hhZG93OiA2cHggNHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbn1cclxuLmNvcmQge1xyXG4gIGhlaWdodDogNDBweDtcclxuICBwYWRkaW5nOiAwIDE2cHg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgYmFja2dyb3VuZDogIzFkMWQxZDtcclxuICBjb2xvcjogI2ZmZjtcclxufVxyXG4uZXhwb3J0ZSB7XHJcbiAgaGVpZ2h0OiA0MHB4O1xyXG4gIHBhZGRpbmc6IDAgMTZweDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICBiYWNrZ3JvdW5kOiAjZGFkYWRhO1xyXG4gIGNvbG9yOiAjMWQxZDFkO1xyXG59XHJcbi5idG5fd2hpdGUge1xyXG4gIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgY29sb3I6ICMwMDA7XHJcbiAgYm9yZGVyLXJhZGl1czogMjlweDtcclxuICBib3gtc2hhZG93OiAwcHggNHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbn1cclxuPC9zdHlsZT5cclxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiY2VudGVyXCI+XG4gICAgPCEtLUxhIGNhcnRlIHZheml2YTRBTEwgLS0+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjYXJkX3VzZXJcIlxuICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWltYWdlOiB1cmwoL2ltYWdlcy9jYXJ0ZXMtY2xpZW50LnBuZylcIlxuICAgID5cbiAgICAgIDxkaXYgY2xhc3M9XCJudW1iZXJcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXdoaXRlXCI+e3sgdXNlcnMucGFuTnVtYmVyIH19PC9wPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBkYXRlLWNhcmRcIj5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8cD5FWFBJUkU8L3A+XG4gICAgICAgICAgPHA+RklOPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGg1IGNsYXNzPVwibWItMCBtbC0zIHRleHQtd2hpdGVcIj5cbiAgICAgICAgICB7eyB1c2Vycy5leHBpcnlEYXRlIHwgZXhwaXJlRGF0ZSB9fVxuICAgICAgICA8L2g1PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiaWRDcmFkIHRleHQtd2hpdGVcIj5cbiAgICAgICAgPGI+e3sgdXNlcnMudG9rZW4gfX08L2I+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3RlbXBsYXRlPlxuXG48c2NyaXB0PlxuaW1wb3J0IERldGFpbHNDYXJkIGZyb20gXCIuL2RldGFpbHNcIjtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgY29tcG9uZW50czoge1xuICAgIERldGFpbHNDYXJkLFxuICB9LFxuICBwcm9wczoge1xuICAgIHVzZXJzOiBBcnJheSB8IE9iamVjdCxcbiAgfSxcbiAgZGF0YTogKCkgPT4gKHtcbiAgICB1cmw6IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4sXG4gICAgZWRpdEFjdGl2ZTogZmFsc2UsXG4gICAgZWRpdDogbnVsbCxcbiAgICBlZGl0UHJvcDoge30sXG4gICAgc2VhcmNoOiBcIlwiLFxuICAgIGFsbENoZWNrOiBmYWxzZSxcbiAgICBwYWdlOiAxLFxuICAgIG1heDogMjAsXG4gICAgYWN0aXZlOiAwLFxuICAgIHNlbGVjdGVkOiBbXSxcbiAgfSksXG4gIG1ldGhvZHM6IHtcbiAgICBkZXRhaWxzKGl0ZW1zKSB7XG4gICAgICB0aGlzLiRlbWl0KFwiZGV0YWlsc1wiLCBpdGVtcyk7XG4gICAgfSxcbiAgICBzdGF0dXMoaXRlbXMpIHtcbiAgICAgIHRoaXMuJGVtaXQoXCJzdGF0dXNcIiwgaXRlbXMpO1xuICAgIH0sXG4gICAgcGluKGl0ZW1zKSB7XG4gICAgICB0aGlzLiRlbWl0KFwicGluXCIsIGl0ZW1zKTtcbiAgICB9LFxuICAgIHRyYW5zYWN0aW9uKGl0ZW1zKSB7XG4gICAgICB0aGlzLiRlbWl0KFwidHJhbnNhY3Rpb25cIiwgaXRlbXMpO1xuICAgIH0sXG4gIH0sXG59O1xuPC9zY3JpcHQ+XG48c3R5bGUgc2NvcGVkPlxuLmRhdGUtY2FyZCB7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBtYXJnaW4tbGVmdDogLTE1JTtcbiAgbWFyZ2luLXRvcDogMCU7XG59XG4ubnVtYmVyIHtcbiAgcGFkZGluZy10b3A6IDEzMHB4O1xuICBwYWRkaW5nLWxlZnQ6IDEyJTtcbiAgbGV0dGVyLXNwYWNpbmc6IDZweDtcbiAgZm9udC1zaXplOiAyM3B4O1xuICBwb3NpdGlvbjpyZWxhdGl2ZVxufVxuLmRhdGUtY2FyZCBkaXYge1xuICBsaW5lLWhlaWdodDogOXB4O1xuICBtYXJnaW46IDBweDtcbiAgZm9udC1zaXplOiA4cHg7XG4gIGNvbG9yOiAjZmZmO1xuICBtYXJnaW4tbGVmdDogMjUlO1xufVxucCB7XG4gIG1hcmdpbi1ib3R0b206IDBweDtcbn1cbi5pZENyYWQge1xuICBtYXJnaW4tbGVmdDogMzclO1xuICBtYXJnaW4tdG9wOiAzJTtcbiAgbGV0dGVyLXNwYWNpbmc6IDRweDtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OHB4KSB7XG5cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xuXG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2PlxuICAgIDxkaXY+XG4gICAgICA8IS0tU2lkZSBiYXIgLS0+XG4gICAgICA8YmFzZS1zaWRlLWJhciAvPlxuICAgICAgPGRpdiBjbGFzcz1cIm1haW5cIj5cbiAgICAgICAgPEZhZGVUcmFuc2l0aW9uIDpkdXJhdGlvbj1cIjIwMFwiIG1vZGU9XCJvdXQtaW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC01IHB0LTVcIj5cbiAgICAgICAgICAgIDxsb2FkZXIgdi1pZj1cIm9yZGVycyA9PSAnJ1wiIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgdi1lbHNlPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBwci0wXCI+XG5cbiAgICAgICAgICAgICAgICAgIDwhLS1Vc2VyIENvbXBvbmVudCAtLT5cbiAgICAgICAgICAgICAgICA8dXNlciAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICA8aDQ+TWVzIDxzcGFuIGNsYXNzPVwidGl0bGUtcGFnZVwiPmNvbW1hbmRlczwvc3Bhbj48L2g0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjZW50ZXIgY29sLW1kLTEyIHBsLTAgcHItMFwiID5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTUgZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bl9ibG9ja1wiIEBjbGljaz1cImNhcmRcIj5cbiAgICAgICAgICAgICAgICAgIE1hIGNhcnRlXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZW1wdHkgdi1pZj1cIm9yZGVycz09J1ZpZGUnXCIvPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWFpbi10YWJsZVwiIHYtZWxzZT5cbiAgICAgICAgICAgICAgPHZzLXRhYmxlPlxuICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSAjdGhlYWQ+XG4gICAgICAgICAgICAgICAgICA8dnMtdHI+XG4gICAgICAgICAgICAgICAgICAgIDx2cy10aD4gRGF0ZSA8L3ZzLXRoPlxuICAgICAgICAgICAgICAgICAgICA8dnMtdGg+IE1vbnRhbnQgPC92cy10aD5cbiAgICAgICAgICAgICAgICAgICAgPHZzLXRoPiBTdGF0dXMgPC92cy10aD5cbiAgICAgICAgICAgICAgICAgIDwvdnMtdHI+XG4gICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8dGVtcGxhdGUgI3Rib2R5PlxuICAgICAgICAgICAgICAgICAgPHZzLXRyXG4gICAgICAgICAgICAgICAgICAgIDprZXk9XCJpXCJcbiAgICAgICAgICAgICAgICAgICAgdi1mb3I9XCIodHIsIGkpIGluIG9yZGVyc1wiXG4gICAgICAgICAgICAgICAgICAgIDpkYXRhPVwidHJcIlxuICAgICAgICAgICAgICAgICAgICBub3QtY2xpY2stc2VsZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgb3Blbi1leHBhbmQtb25seS10ZFxuICAgICAgICAgICAgICAgICAgICB2LWItdG9nZ2xlLnNpZGViYXItY2FyZFxuICAgICAgICAgICAgICAgICAgICBAY2xpY2s9XCJ1aWRMaXN0ID0gdHJcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8dnMtdGQ+XG4gICAgICAgICAgICAgICAgICAgIHt7IHRyLmRhdGUgfCBmb3JtYXREYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvdnMtdGQ+XG4gICAgICAgICAgICAgICAgICAgIDx2cy10ZD4ge3sgdHIuYW1vdW50IH19IHt7IGNhcmRzP2NhcmRzWzBdLmN1cnJlbmN5OidFVVInIH19IDwvdnMtdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgPHZzLXRkPlxuICAgICAgICAgICAgICAgICAgICAgIHt7IHRyLnN0YXR1c3xzdGF0dXMgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8di1iYWRnZVxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlubGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgZG90XG4gICAgICAgICAgICAgICAgICAgICAgICA6Y29sb3I9XCJ0ci5zdGF0dXMgPT0gJ3BhaWQnID8gJ2dyZWVuJyA6ICdyZWQnXCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC92LWJhZGdlPlxuICAgICAgICAgICAgICAgICAgICA8L3ZzLXRkPlxuICAgICAgICAgICAgICAgICAgPC92cy10cj5cbiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICA8L3ZzLXRhYmxlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvRmFkZVRyYW5zaXRpb24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgPCEtLVNpZGViYXIgcG91ciBhZmZpY2hlciBsZSBkZXRhaWxzIGRlIGNvbW1hbmRlIC0tPlxuICAgICAgPGItc2lkZWJhclxuICAgICAgICBpZD1cInNpZGViYXItY2FyZFwiXG4gICAgICAgIGFyaWEtbGFiZWw9XCJEZXRhaWxzIGNvbW1hbmRlXCJcbiAgICAgICAgdGl0bGU9XCJEZXRhaWxzIGNvbW1hbmRlXCJcbiAgICAgICAgYmFja2Ryb3AtdmFyaWFudD1cImRhcmtcIlxuICAgICAgICBiYWNrZHJvcFxuICAgICAgICBzaGFkb3dcbiAgICAgICAgcmlnaHRcbiAgICAgICAgd2lkdGg9XCI0MjBweFwiXG4gICAgICA+XG4gICAgICAgPHRlbXBsYXRlICNmb290ZXI9XCJ7IGhpZGUgfVwiPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGJnLWxpZ2h0IHRleHQtbGlnaHQgYWxpZ24taXRlbXMtY2VudGVyIHB4LTMgcHktMiBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bl9ibG9ja1wiIEBjbGljaz1cImludm9pY2VcIj5cbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJtZGkgbWRpLWZpbGUtZG93bmxvYWRcIj48L2k+IFTDqWzDqWNoYXJnZXIgbGEgZmFjdHVyZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIEBjbGljaz1cImNhcmRcIiBjbGFzcz1cImJ0bl9vdXRsaW5lXCI+PGkgY2xhc3M9XCJtZGkgbWRpLWNhcmRcIj48L2k+IE1hIGNhcnRlPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJweC0zIHB5LTJcIj5cbiAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgPGg2PlByb2R1aXRzPC9oNj5cbiAgICAgICAgICAgICAgPGRpdiAgdi1mb3I9XCIoaXRlbSxrZXkpIGluIHVpZExpc3QucHJvZHVjdHNcIiA6a2V5PVwia2V5XCI+XG4gICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICAgICAgICAgIDxzbWFsbD5MYWJlbDwvc21hbGw+XG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtbXV0ZWRcIj57e2l0ZW0ubmFtZX19PC9zbWFsbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiIHYtaWY9XCJpdGVtLmRldGFpbHNcIj5cbiAgICAgICAgICAgICAgPHNtYWxsPkRldGFpbHM8L3NtYWxsPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+e3tpdGVtLmRldGFpbHN9fTwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIiB2LWlmPVwiaXRlbS5kZXRhaWxzXCI+XG4gICAgICAgICAgICAgIDxzbWFsbD5Nb250YW50PC9zbWFsbD5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZFwiPnt7aXRlbS5hbW91bnR9fSB7e3VpZGNhcmQuY3VycmVuY3l9fTwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICBcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cbiAgICAgICAgICAgICAgPHNtYWxsPk1vbnRhbnQ8L3NtYWxsPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+e3t1aWRMaXN0LmFtb3VudH19IHt7dWlkY2FyZC5jdXJyZW5jeX19PC9zbWFsbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICAgICAgICAgIDxzbWFsbD5EYXRlPC9zbWFsbD5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZFwiPnt7dWlkTGlzdC5kYXRlfGZvcm1hdERhdGV9fTwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxuICAgICAgICAgICAgICA8c21hbGw+U3RhdHVzPC9zbWFsbD5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZFwiPnt7dWlkTGlzdC5zdGF0dXN8c3RhdHVzfX08L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9wPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvYi1zaWRlYmFyPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0PlxuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IE1BSU5fVVJMIGZyb20gXCIuLi8uLi8uLi9jb21tb24uanMvbWFpblVybFwiO1xuaW1wb3J0IHtoZWFkZXJzfSBmcm9tIFwiLi4vLi4vLi4vY29tbW9uLmpzL2hlYWRlclwiO1xuaW1wb3J0IEJhc2VTaWRlQmFyIGZyb20gXCIuLi9jb21wb25lbnRzL05hdmJhci9CYXNlU2lkZUJhci52dWVcIjtcbmltcG9ydCB7IEZhZGVUcmFuc2l0aW9uIH0gZnJvbSBcInZ1ZTItdHJhbnNpdGlvbnNcIjtcbmltcG9ydCBzdG9yZSBmcm9tIFwiLi4vLi4vc3RvcmVcIjtcbmltcG9ydCBMb2FkZXIgZnJvbSBcIi4uL2NvbXBvbmVudHMvTG9hZGVyLnZ1ZVwiO1xuaW1wb3J0IFVzZXIgZnJvbSBcIi4uL2NvbXBvbmVudHMvVXNlci52dWVcIjtcbmltcG9ydCBFbXB0eSBmcm9tIFwiLi4vY29tcG9uZW50cy9FbXB0eS52dWVcIjtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc3RvcmUsXG4gIGNvbXBvbmVudHM6IHsgQmFzZVNpZGVCYXIsIEZhZGVUcmFuc2l0aW9uLCBMb2FkZXIsVXNlcixFbXB0eSB9LFxuICBkYXRhOiAoKSA9PiAoe1xuICAgIGVkaXRBY3RpdmU6IGZhbHNlLFxuICAgIGVkaXQ6IG51bGwsXG4gICAgZWRpdFByb3A6IHt9LFxuICAgIHNlYXJjaDogXCJcIixcbiAgICBhbGxDaGVjazogZmFsc2UsXG4gICAgcGFnZTogMSxcbiAgICBtYXg6IDIwLFxuICAgIHNlbGVjdGVkOiBcIlwiLFxuICAgIHVpZExpc3Q6IFwiXCIsXG4gIH0pLFxuICBjb21wdXRlZDoge1xuICAgIGNhcmRzOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5jYXJkO1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0Q2FyZFwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIG9yZGVyczoge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUub3JkZXI7XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRPcmRlclwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIGxvYWRpbmc6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0TG9hZGluZztcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldExvYWRpbmdcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBhY3RpdmU6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLnN0YXRlLmFjdGl2ZTtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldEFjdGl2ZVwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHVpZGNhcmQ6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLnN0YXRlLnVpZENhcmQ7XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRVaWRDYXJkXCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIG1ldGhvZHM6IHtcblxuICAgIC8vUmVkaXJlY3Rpb24gc3VyIGxhIHBhZ2UgY2FydGVcbiAgICAgIGNhcmQoKXtcbiAgICAgICAgICB0aGlzLiRyb3V0ZXIucHVzaChcIi9tb25jb21wdGVcIilcbiAgICAgIH0sXG4gICAgICAvL1TDqWzDqWNoYXJnZXIgbGEgZmFjdHVyZVxuICAgIGludm9pY2UoKXtcbiAgICAgICAgICBjb25zdCBteVRva2VuID0gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcInRva2VuXCIpXG4gICAgICAgID8gc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShcInRva2VuXCIpXG4gICAgICAgIDogdGhpcy50b2tlbjtcblxuICAgICAgY29uc3QgaGVhZGVyID0gaGVhZGVycyhteVRva2VuKTtcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gYXhpb3MuY3JlYXRlKHtcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiBcImluY2x1ZGVcIixcbiAgICAgIH0pO1xuICAgICAgY29uc3QgJGRhdGE9e1xuICAgICAgICBvcmRlclJlZmVyZW5jZTp0aGlzLnVpZExpc3QucmVmZXJlbmNlXG4gICAgICB9XG4gICAgICBpbnN0YW5jZS5wb3N0KE1BSU5fVVJMLklOVk9JQ0UsJGRhdGEsaGVhZGVyKS50aGVuKGU9PntcbiAgICAgICAgY29uc3QgJGRhdGE9ZS5kYXRhXG4gICAgICAgIGlmKCRkYXRhKVxuICAgICAgICB3aW5kb3cub3BlbigkZGF0YS5kb3dubG9hZFVybCwnX2JsYW5rJylcbiAgICAgIH0pLmNhdGNoKGU9PntcbiAgICAgICAgIGNvbnN0ICRkYXRhID0gZS5yZXNwb25zZS5yZXF1ZXN0LnJlc3BvbnNlO1xuICAgICAgICAgIGNvbnN0IHggPSBKU09OLnBhcnNlKCRkYXRhKTtcbiAgICAgIH0pXG4gICAgfSxcbiAgICBiYWNrKCkge1xuICAgICAgdGhpcy4kcm91dGVyLmJhY2soKTtcbiAgICB9LFxuICAgICBjYXBpdGFsaXplKHMpIHtcbiAgICAgIGlmICghcykgcmV0dXJuIFwiXCI7XG4gICAgICByZXR1cm4gcy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHMuc2xpY2UoMSk7XG4gICAgfSxcbiAgICBsb2FkKCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdGhpcy4kdnMubG9hZGluZyh7XG4gICAgICAgIGJhY2tncm91bmQ6IFwiIzdhNzZjYlwiLFxuICAgICAgICBjb2xvcjogXCIjZmZmXCIsXG4gICAgICAgIHRleHQ6IFwiVmV1aWxsZXogcGF0aWVudGVyXCIsXG4gICAgICAgIHR5cGU6IFwic2NhbGVcIixcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZGV0YWlscyhpdGVtcykge1xuICAgICAgdGhpcy4kZW1pdChcImRldGFpbHNcIiwgaXRlbXMpO1xuICAgIH0sXG4gICAgc3RhdHVzKGl0ZW1zKSB7XG4gICAgICB0aGlzLiRlbWl0KFwic3RhdHVzXCIsIGl0ZW1zKTtcbiAgICB9LFxuICAgIHBpbihpdGVtcykge1xuICAgICAgdGhpcy4kZW1pdChcInBpblwiLCBpdGVtcyk7XG4gICAgfSxcbiAgICB0cmFuc2FjdGlvbihpdGVtcykge1xuICAgICAgY29uc29sZS5sb2coaXRlbXMpO1xuICAgICAgdGhpcy4kZW1pdChcInRyYW5zYWN0aW9uXCIsIGl0ZW1zKTtcbiAgICB9LFxuICAgIG9wZW5Ob3RpZmljYXRpb24odGl0bGUsIHRleHQsIGNvbG9yLCBwb3NpdGlvbiA9IFwidG9wLXJpZ2h0XCIsIGljb24gPSBudWxsKSB7XG4gICAgICBjb25zdCBub3RpID0gdGhpcy4kdnMubm90aWZpY2F0aW9uKHtcbiAgICAgICAgaWNvbixcbiAgICAgICAgY29sb3IsXG4gICAgICAgIHBvc2l0aW9uLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgdGV4dCxcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgeGhyKCkge1xuICAgICAgY29uc3QgbXlUb2tlbiA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJ0b2tlblwiKVxuICAgICAgICA/IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJ0b2tlblwiKVxuICAgICAgICA6IHRoaXMudG9rZW47XG5cbiAgICAgIGNvbnN0IGhlYWRlciA9IGhlYWRlcnMobXlUb2tlbik7XG4gICAgICBjb25zdCBpbnN0YW5jZSA9IGF4aW9zLmNyZWF0ZSh7XG4gICAgICAgIHdpdGhDcmVkZW50aWFsczogXCJpbmNsdWRlXCIsXG4gICAgICB9KTtcblxuICAgICAgaW5zdGFuY2VcbiAgICAgICAgLnBvc3QoTUFJTl9VUkwuT1JERVJfTElTVCwge30sIGhlYWRlcilcbiAgICAgICAgLnRoZW4oKGUpID0+IHtcbiAgICAgICAgICBjb25zdCAkZGF0YSA9IGUuZGF0YTtcbiAgICAgICAgXG5cbiAgICAgICAgICBpZiAoJGRhdGEubGVuZ3RoPjApIHtcbiAgICAgICAgICAgICAgdGhpcy5vcmRlcnMgPSAkZGF0YTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZXtcbiAgICAgICAgICAgIHRoaXMub3JkZXJzPVwiVmlkZVwiXG4gICAgICAgICAgfVxuICAgICAgICAgIC8vdGhpcy50cmFucyA9ICRkYXRhO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICBjb25zdCAkZGF0YSA9IGUucmVzcG9uc2UucmVxdWVzdC5yZXNwb25zZTtcbiAgICAgICAgICBjb25zdCB4ID0gSlNPTi5wYXJzZSgkZGF0YSk7XG4gICAgICAgICAgaWYgKHguY29kZSkge1xuICAgICAgICAgICAgaWYgKHguY29kZSA9PSBcIkdMT0JBTF9WQUxJREFUSU9OX0VSUk9SXCIpIHtcbiAgICAgICAgICAgICAgdGhpcy5vcGVuTm90aWZpY2F0aW9uKFwiT29wc1wiLCB4LmRldGFpbHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSxcbiAgfSxcbiAgbW91bnRlZCgpIHtcbiAgICB0aGlzLnhocigpO1xuICB9LFxufTtcbjwvc2NyaXB0PlxuPHN0eWxlIHNjb3BlZD5cbi52LWFwcGxpY2F0aW9uLS13cmFwIHtcbmJhY2tncm91bmQ6I2U1ZTVlNVxufVxuLm1haW4tdGFibGV7XG4gIG1pbi1oZWlnaHQ6MzEwcHg7XG4gIGJhY2tncm91bmQ6I2ZmZjtcbiAgYm9yZGVyLXJhZGl1czozMHB4O1xuICBib3gtc2hhZG93OjBweCA0cHggOHB4IHJnYmEoMCwwLDAsMC4xKVxufVxuPC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBjb250XCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtc20tMTIgcC0wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNyBjb2wtc20tMTIgY29sLXhzLTEyIHBsLTAgcHItMFwiPlxuICAgICAgICAgIDxtYWluIGNsYXNzPVwiZm9ybS1zaWduaW5cIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxlZnRcIj5cblxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgbWItMTBcIj5cbiAgICAgICAgICAgICAgICAgPGltZyBzcmM9XCIvaW1hZ2VzL3Y0YWxsLWxvZ28ucG5nXCIgd2lkdGg9XCIxMDBweFwiIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cImgzIG1iLTMgZnctbm9ybWFsIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICBDaGFuZ2VtZW50IE1vdCBkZSBwYXNzZVxuICAgICAgICAgICAgICAgIDwvaDE+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbS0yXCI+XG4gICAgICAgICAgICAgICAgICA8c21hbGwgZm9yPVwiZmxvYXRpbmdQYXNzd29yZCAgdGV4dC1sZWZ0XCI+UGFzc3dvcmQ8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cImAke3Bhc3N9IGZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtbWRgXCJcbiAgICAgICAgICAgICAgICAgICAgaWQ9XCJmbG9hdGluZ1Bhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJwYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgdGV4dFZhbGlkYXRpb25QYXNzd29yZCB9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgbS0yXCI+XG4gICAgICAgICAgICAgICAgICA8c21hbGwgZm9yPVwiZmxvYXRpbmdQYXNzd29yZCAgdGV4dC1sZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgPkNvbmZpcm1hdGlvbiBkZSBtb3QgZGUgcGFzc2U8L3NtYWxsXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiYCR7dGVzdH0gZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1tZGBcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cImZsb2F0aW5nUGFzc3dvcmRzXCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQYXNzd29yZFwiXG4gICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJjb25maXJtUGFzc1wiXG4gICAgICAgICAgICAgICAgICAgIEBrZXlkb3duPVwidGVzdCA9ICcnXCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiPlxuICAgICAgICAgICAgICAgICAgICBMZSBtb3QgZGUgcGFzc2UgbmUgY29ycmVzcG9uZGVudCBwYXNcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIFxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidy0xMDAgYnRuIGJ0bi1zbSBidXR0b24tc2lnblwiXG4gICAgICAgICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgICAgICAgIEBjbGljaz1cImNvbm5leGlvblwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgU2F1dmVnYXJkZXJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTMgbXQtMiB0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsXG4gICAgICAgICAgICAgICAgICAgID48YSBjbGFzcz1cInRleHQtcHJpbWFyeSB0ZXh0LXNtYWxsXCIgQGNsaWNrPVwicmVzZXRcIlxuICAgICAgICAgICAgICAgICAgICAgID5KZSBtZSBjb25uZWN0ZVxuICAgICAgICAgICAgICAgICAgICA8L2E+PC9zbWFsbFxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXY+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGhyIC8+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtYWxsIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c21hbGw+IFZvdXMgbidhdmV6IHBhcyBlbmNvcmUgZGUgY29tcHRlPyA8L3NtYWxsPlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtc21hbGwgdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxzbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPGEgQGNsaWNrPVwiY3JlYXRlZFwiIGNsYXNzPVwidGV4dC1wcmltYXJ5XCI+Q3LDqWVyIHVuIGNvbXB0ZTwvYT5cbiAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbWFpbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNSBjb2xzLTEyIGNvbC1zbS0xMiBjb2wteHMtMTIgYmFja1wiPlxuICAgICAgICAgIDxsb2dpbi1hbmltYXRlIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cbmltcG9ydCBzdG9yZSBmcm9tIFwiLi4vYXBwL3N0b3JlXCI7XG5pbXBvcnQgeyBWYWxpZGF0ZUVtYWlsIH0gZnJvbSBcIi4uL2NvbW1vbi5qcy92ZXJpZnlcIjtcbmltcG9ydCBDb25zdGFudCBmcm9tIFwiLi9zdG9yZS9jb25zdGFudFwiO1xuaW1wb3J0IFZ1ZVBob25lTnVtYmVySW5wdXQgZnJvbSBcInZ1ZS1waG9uZS1udW1iZXItaW5wdXRcIjtcbmltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcbmltcG9ydCBNQUlOX1VSTCBmcm9tIFwiLi4vY29tbW9uLmpzL21haW5VcmxcIjtcbmltcG9ydCBMb2dpbkFuaW1hdGUgZnJvbSBcIi4vTG9naW5BbmltYXRlLnZ1ZVwiO1xuZXhwb3J0IGRlZmF1bHQge1xuICBzdG9yZSxcbiAgY29tcG9uZW50czogeyBWdWVQaG9uZU51bWJlcklucHV0LCBMb2dpbkFuaW1hdGUgfSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgY29kZTogXCJcIixcbiAgICAgIHBhc3M6IFwiXCIsXG4gICAgICB0ZXN0OiBcIlwiLFxuICAgICAgZW1haWxUb2tlbjogXCJcIixcbiAgICAgIHRleHRWYWxpZGF0aW9uUGhvbmU6IFwiXCIsXG4gICAgICB0ZXh0VmFsaWRhdGlvblBhc3N3b3JkOiBcIlwiLFxuICAgICAgY29uZmlybVBhc3M6IFwiXCIsXG4gICAgICBlbWFpbENsYXNzOiBcIlwiLFxuICAgICAgcGhvbmVDbGFzczogXCJcIixcbiAgICAgIG1vYmlsZTogXCJcIixcbiAgICAgIGVtYWlsVG9rZW46IFwiXCIsXG4gICAgICB2ZXJpZlBob25lOiBmYWxzZSxcbiAgICAgIHRyYW5zbGF0aW9uczoge1xuICAgICAgICBjb3VudHJ5U2VsZWN0b3JMYWJlbDogXCJDb2RlIHBheXNcIixcbiAgICAgICAgY291bnRyeVNlbGVjdG9yRXJyb3I6IFwiQ2hvaXNpciB1biBwYXlzXCIsXG4gICAgICAgIHBob25lTnVtYmVyTGFiZWw6IFwiTnVtw6lybyBkZSB0w6lsw6lwaG9uZVwiLFxuICAgICAgICBleGFtcGxlOiBcIkV4ZW1wbGUgOlwiLFxuICAgICAgfSxcbiAgICB9O1xuICB9LFxuICBiZWZvcmVNb3VudCgpIHtcbiAgICB0aGlzLmVtYWlsVG9rZW4gPSB0aGlzLmdldFF1ZXJ5KFwiZW1haWxUb2tlblwiKTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBwaG9uZToge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRQaG9uZTtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldFBob25lXCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgZW1haWw6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0RW1haWw7XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRFbWFpbFwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHBhc3N3b3JkOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFBhc3N3b3JkO1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0UGFzc3dvcmRcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB1aWQ6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0VWlkO1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0VWlkXCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgdG9rZW46IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0VG9rZW47XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRUb2tlblwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHJlZnJlc2g6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0UmVmcmVzaFRva2VuO1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0UmVmcmVzaFRva2VuXCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgY29kZVN0YXR1czoge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRDb2RlU3RhdHVzO1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0Q29kZVN0YXR1c1wiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIG1lc3NhZ2VTdGF0dXM6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0TWVzc2FnZVN0YXR1cztcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldE1lc3NhZ2VTdGF0dXNcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB0ZXh0U3RhdHVzOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFRleHRTdGF0dXM7XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRUZXh0U3RhdHVzXCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgbGF0aXR1ZGU6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0TGF0aXR1ZGU7XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRMYXRpdHVkZVwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIGxvZ2l0dWRlOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldExvZ2l0dWRlO1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0TG9naXR1ZGVcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBsb2FkaW5nOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldExvYWRpbmc7XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRMb2FkaW5nXCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG5cbiAgbWV0aG9kczoge1xuICAgIG9uRmluaXNoKCkge30sXG4gICAgbG9hZCgpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRoaXMuJHZzLmxvYWRpbmcoe1xuICAgICAgICBiYWNrZ3JvdW5kOiBcIiM3YTc2Y2JcIixcbiAgICAgICAgY29sb3I6IFwiI2ZmZlwiLFxuICAgICAgICB0ZXh0OiBcIlZldWlsbGV6IHBhdGllbnRlclwiLFxuICAgICAgICB0eXBlOiBcInNjYWxlXCIsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIG9wZW5Ob3RpZmljYXRpb24odGl0bGUsIHRleHQsIGNvbG9yLCBwb3NpdGlvbiA9IFwidG9wLXJpZ2h0XCIsIGljb24gPSBudWxsKSB7XG4gICAgICBjb25zdCBub3RpID0gdGhpcy4kdnMubm90aWZpY2F0aW9uKHtcbiAgICAgICAgaWNvbixcbiAgICAgICAgY29sb3IsXG4gICAgICAgIHBvc2l0aW9uLFxuICAgICAgICB0aXRsZSxcbiAgICAgICAgdGV4dCxcbiAgICAgIH0pO1xuICAgIH0sXG5cbiAgICAvL2NyZWF0aW9uIGRlIGNvbXB0ZVxuICAgIGNyZWF0ZWQoKSB7XG4gICAgICB0aGlzLiRyb3V0ZXIucHVzaChcIi9pbnNjcmlwdGlvblwiKTtcbiAgICB9LFxuXG4gICAgLy9QYWdlIGRlIGNvbm5leGlvblxuICAgIHJlc2V0KCkge1xuICAgICAgdGhpcy4kcm91dGVyLnB1c2goXCIvXCIpO1xuICAgIH0sXG5cbiAgICAvL2Zvcm1hdHRlciBsZSBudW3DqXJvIGRlIHTDqWzDqXBob25lXG4gICAgdXBkYXRlKGV2ZW50KSB7XG4gICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgdGhpcy52ZXJpZlBob25lID0gZXZlbnQuaXNWYWxpZCA/IGV2ZW50LmlzVmFsaWQgOiBmYWxzZTtcbiAgICAgICAgdGhpcy5waG9uZSA9IGV2ZW50LmZvcm1hdHRlZE51bWJlciA/IGV2ZW50LmZvcm1hdHRlZE51bWJlciA6IFwiXCI7XG4gICAgICB9XG4gICAgfSxcbiAgICAvL1JlY3Vww6lyYXRpb24gZGUgcGFyYW1ldHJlcyBkZSBwdWlzIGwnVVJMXG4gICAgZ2V0UXVlcnkocSkge1xuICAgICAgcmV0dXJuICh3aW5kb3cubG9jYXRpb24uc2VhcmNoLm1hdGNoKFxuICAgICAgICBuZXcgUmVnRXhwKFwiWz8mXVwiICsgcSArIFwiPShbXiZdKylcIilcbiAgICAgICkgfHwgWywgbnVsbF0pWzFdO1xuICAgIH0sXG5cbiAgICAvL0Vudm95IGRlIGRvbm5lclxuICAgIGNvbm5leGlvbigpIHtcblxuICAgICAgLy9WZXJpZmljYXRpb24gZGUgbW90IGRlIHBhc3NlXG4gICAgICBpZiAoIXRoaXMucGFzc3dvcmQpIHtcbiAgICAgICAgdGhpcy50ZXh0VmFsaWRhdGlvblBhc3N3b3JkID0gXCJMZSBtb3QgZGUgcGFzc2UgZXN0IG9ibGlnYXRvaXJlXCI7XG4gICAgICAgIHRoaXMucGFzcyA9IFwiaXMtaW52YWxpZFwiO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cblxuICAgICAgLy92ZXJpZmljYXRpb24gZGUgbW90IGRlIHBhc3NlIGRlIGNvbmZpcm1hdGlvblxuICAgICAgaWYgKCF0aGlzLmNvbmZpcm1QYXNzKSByZXR1cm4gKHRoaXMudGVzdCA9IFwiaXMtaW52YWxpZFwiKTtcblxuICAgICAgLy9Db3JyZXNwb25kYW5jZSBkZSBtb3QgZGUgcGFzc2VcbiAgICAgIGlmICh0aGlzLnBhc3N3b3JkICE9IHRoaXMuY29uZmlybVBhc3MpIHtcbiAgICAgICAgdGhpcy50ZXh0VmFsaWRhdGlvblBhc3N3b3JkID0gXCJMZXMgbW90IGRlIHBhc3NlIG5lIGNvcnJlc3BvbmRlbnQgcGFzXCI7XG4gICAgICAgIHRoaXMucGFzcyA9IFwiaXMtaW52YWxpZFwiO1xuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGluc3RhbmNlID0gYXhpb3MuY3JlYXRlKHtcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiBcImluY2x1ZGVcIixcbiAgICAgIH0pO1xuXG4gICAgICAvL0xlIGhlYWRlclxuICAgICAgY29uc3QgaGVhZGVycyA9IHtcbiAgICAgICAgYWNjZXB0OiBcIiovKlwiLFxuICAgICAgICBcImNvbnRlbnQtdHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgXCJ4LXBvcy1jbGllbnQta2V5XCI6IHByb2Nlc3MuZW52LlBPU19DTElFTlRfS0VZXG4gICAgICB9O1xuXG4gICAgICAvL0xvYWRpbmdcbiAgICAgIHRoaXMubG9hZCgpO1xuXG4gICAgICAvL0xlIGRhdGFcbiAgICAgIGNvbnN0ICRkYXRhID0ge1xuICAgICAgICBlbWFpbFRva2VuOiB0aGlzLmVtYWlsVG9rZW4sXG4gICAgICAgIHBhc3N3b3JkOiB0aGlzLnBhc3N3b3JkLFxuICAgICAgfTtcblxuICAgICAgLy9BeGlvc1xuICAgICAgYXhpb3NcbiAgICAgICAgLnBvc3QoTUFJTl9VUkwuUkVJTlQsICRkYXRhLCB7IGhlYWRlcnMgfSlcbiAgICAgICAgLnRoZW4oKGUpID0+IHtcbiAgICAgICAgICBjb25zdCAkZGF0YSA9IGUuZGF0YTtcbiAgICAgICAgIHRoaXMubG9hZGluZy5jbG9zZSgpXG4gICAgICAgICB0aGlzLm9wZW5Ob3RpZmljYXRpb24oXCJTYXV2ZWdhcmRlclwiLFwiVm91cyB2ZW5leiBkZSBtb2RpZmllciB2b3RyZSBtb3QgZGUgcGFzc2VcIilcbiAgICAgICAgIHRoaXMuJHJvdXRlci5wdXNoKFwiL1wiKVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICBjb25zdCAkZGF0YSA9IGUucmVzcG9uc2UucmVxdWVzdC5yZXNwb25zZTtcbiAgICAgICAgICBjb25zdCB4ID0gSlNPTi5wYXJzZSgkZGF0YSk7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nLmNsb3NlKCk7XG4gICAgICAgICAgaWYgKHguY29kZSkge1xuICAgICAgICAgICAgaWYgKHguY29kZSA9PSBcIkdMT0JBTF9WQUxJREFUSU9OX0VSUk9SXCIpIHtcbiAgICAgICAgICAgICAgdGhpcy5vcGVuTm90aWZpY2F0aW9uKFwiT29wc1wiLCB4LmRldGFpbHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHguY29kZSA9PSBcIkFVVEhfQUNDT1VOVF9OT1RfRVhJU1RFTlRcIikge1xuICAgICAgICAgICAgICByZXR1cm4gKHRoaXMudGV4dFZhbGlkYXRpb25QaG9uZSA9IFwiTGUgY29tcHRlIG4nZXhpdGUgcGFzXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHguY29kZSA9PSBcIkFVVEhfSU5WQUxJRF9FTUFJTF9UT0tFTlwiKSB7XG4gICAgICAgICAgICAgIHRoaXMub3Blbk5vdGlmaWNhdGlvbihcIk9vcHMhIVwiLCdMZSB0b2tlbiBlc3QgaW52YWxpZGUnKVxuICAgICAgICAgICAgICB0aGlzLnRleHRWYWxpZGF0aW9uUGFzc3dvcmQgPSBcIkxlIG1vdCBkZSBwYXNzZSBlc3QgaW5jb3JyZWN0ZVwiO1xuICAgICAgICAgICAgICB0aGlzLnBhc3MgPSBcImlzLWludmFsaWRcIjtcbiAgICAgICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIFxuICAgIH0sXG4gIH0sXG59O1xuPC9zY3JpcHQ+XG5cbjxzdHlsZSBzY29wZWQ+XG4uY2FyZCB7XG4gIHBhZGRpbmc6IDBweDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuLmlucHV0LWdyb3VwLXRleHQge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlci1sZWZ0OiAwcHg7XG4gIHBhZGRpbmc6IDUuNXB4O1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIC8qIGxpbmUtaGVpZ2h0OiAxLjU7ICovXG4gIGNvbG9yOiAjMjEyNTI5O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDFweCBzb2xpZCAjY2VkNGRhO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIC8qIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07ICovXG59XG4uYmFjayB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBiYWNrZ3JvdW5kOiAjYzhkZGZiO1xuICBoZWlnaHQ6IDEwMDtcbn1cbi5jb250IHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS91cmw/c2E9aSZ1cmw9aHR0cHMlM0ElMkYlMkZ3d3cucGVyZmVjdHNlcnZlLmNvbSUyRmFuc3dlci1zZXJ2aWNlJTJGbGFuZGluZy1oZXJvLWJhY2tncm91bmQlMkYmcHNpZz1BT3ZWYXczdzVFbFQtZDZYMlJMdVFzYVUtS3JRJnVzdD0xNjQ1OTE3Mzk3NTcxMDAwJnNvdXJjZT1pbWFnZXMmY2Q9dmZlJnZlZD0wQ0FnUWpSeHFGd29UQ09pSHhMTC1tX1lDRlFBQUFBQWRBQUFBQUJBS1wiKTtcbn1cbi5mb3JtLXNpZ25pbiB7XG4gIC8qbWF4LXdpZHRoOiA0MDBweDsqL1xuICBmbGV4OiAxMDAlO1xuICBib3JkZXItcmlnaHQ6IDBweDtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGhlaWdodDogMTAwdmg7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG59XG5cbi5mb3JtLXNpZ25pbiAuY2hlY2tib3gge1xuICBmb250LXdlaWdodDogNDAwO1xufVxuXG4uZm9ybS1zaWduaW4gLmZvcm0tZmxvYXRpbmc6Zm9jdXMtd2l0aGluIHtcbiAgei1pbmRleDogMjtcbn1cblxuLmZvcm0tc2lnbmluIGlucHV0W3R5cGU9XCJlbWFpbFwiXSB7XG4gIG1hcmdpbi1ib3R0b206IC0xcHg7XG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xufVxuXG4uZm9ybS1zaWduaW4gaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdLFxuLmZvcm0tc2lnbmluIGlucHV0W3R5cGU9XCJ0ZXh0XCJdLFxuLmZvcm0tc2lnbmluIGlucHV0W3R5cGU9XCJ0ZWxcIl0ge1xuICBmb250LXNpemU6IDgwJTtcbn1cbi5idXR0b24tc2lnbiB7XG4gIGJhY2tncm91bmQ6ICM4YWI3Zjg7XG4gIGJvcmRlci1jb2xvcjogIzhhYjdmODtcbiAgY29sb3I6ICNmZmY7XG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xufVxuYSB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbnAge1xuICBtYXJnaW4tYm90dG9tOiAwcHg7XG4gIGxpbmUtaGVpZ2h0OiAxNXB4O1xufVxuaW5wdXQsXG5pbnB1dDpmb2N1cyB7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuaW5wdXQ6Zm9jdXMge1xuICBib3JkZXI6IDFweCBzb2xpZCAjZThmMGZlO1xufVxuI2Jhc2ljLWFkZG9uMSB7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XHJcbiAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLXNtLTEyIHAtMFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy03IGNvbHMtMTIgY29sLXNtLTEyIGNvbC14cy0xMiBwci0wIHBsLTAgcHQtMCBwYi0wXCI+XHJcbiAgICAgICAgICA8bWFpbiBjbGFzcz1cImZvcm0tc2lnbmluXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWxlZnRcIj5cclxuICAgICAgICBcclxuICAgICAgICAgICAgICAgICAgPCEtLVdpdGggcGhvbmUtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBtLTIgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBmb3I9XCJmbG9hdGluZ0lucHV0XCIgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5Uw6lsw6lwaG9uZTwvc21hbGxcclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tTGUgbnVtw6lybyBkZSB0w6lsw6lwaG9uZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxWdWVQaG9uZU51bWJlcklucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHYtbW9kZWw9XCJtb2JpbGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBAdXBkYXRlPVwidXBkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgOnRyYW5zbGF0aW9ucz1cInRyYW5zbGF0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFyYWJsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzaXplPVwic21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJwaG9uZUNsYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICA8IS0tTGUgbnVtw6lybyBkZSB0w6lsw6lwaG9uZSAtLT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS1Db25uZXhpb24gLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8c21hbGxcclxuICAgICAgICAgICAgICAgICAgICA+PGEgY2xhc3M9XCJ0ZXh0LXByaW1hcnkgdGV4dC1zbWFsbFwiIEBjbGljaz1cInJlc2V0XCJcclxuICAgICAgICAgICAgICAgICAgICAgID5KZSBtZSBjb25uZWN0ZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYT48L3NtYWxsXHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdj48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxociAvPlxyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtYWxsIHRleHQtY2VudGVyXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLUluc2NyaXB0aW9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICA8c21hbGw+IFZvdXMgbidhdmV6IHBhcyBlbmNvcmUgZGUgY29tcHRlPyA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LXNtYWxsIHRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzbWFsbD5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tRW52b2kgZCdlbWFpbCBkZSBjaGFuZ2VtZW50IGRlIG1vdCBwYXNzZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8YSBAY2xpY2s9XCJjcmVhdGVkXCIgY2xhc3M9XCJ0ZXh0LXByaW1hcnlcIj5DcsOpZXIgdW4gY29tcHRlPC9hPlxyXG4gICAgICAgICAgICAgICAgICA8L3NtYWxsPlxyXG4gICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbWFpbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTUgY29scy0xMiBiYWNrIHB0LTAgcGItMFwiPlxyXG4gICAgICAgICAgPGxvZ2luLWFuaW1hdGUgLz5cclxuICAgICAgICAgICAgICAgIDwhLS1Db25uZXhpb24gLS0+XHJcbiAgICAgICAgICA8IS0tPGFuaW1hdGUtMSAvPi0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDwhLS08YW5pbWF0ZS1sb2dpbi8+LS0+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5pbXBvcnQgc3RvcmUgZnJvbSBcIi4uL2FwcC9zdG9yZVwiO1xyXG5pbXBvcnQgQW5pbWF0ZTEgZnJvbSBcIi4vQW5pbWF0ZTEudnVlXCI7XHJcbmltcG9ydCB7IFZhbGlkYXRlRW1haWwgfSBmcm9tIFwiLi4vY29tbW9uLmpzL3ZlcmlmeVwiO1xyXG5pbXBvcnQgTUFJTl9VUkwgZnJvbSBcIi4uL2NvbW1vbi5qcy9tYWluVXJsXCI7XHJcbmltcG9ydCBDb25zdGFudCBmcm9tIFwiLi9zdG9yZS9jb25zdGFudFwiO1xyXG5pbXBvcnQgVnVlUGhvbmVOdW1iZXJJbnB1dCBmcm9tIFwidnVlLXBob25lLW51bWJlci1pbnB1dFwiO1xyXG5pbXBvcnQgYXhpb3MgZnJvbSBcImF4aW9zXCI7XHJcbmltcG9ydCBMb2dpbkFuaW1hdGUgZnJvbSBcIi4vTG9naW5BbmltYXRlLnZ1ZVwiO1xyXG5pbXBvcnQgQW5pbWF0ZUxvZ2luIGZyb20gXCIuL0FuaW1hdGVMb2dpbi52dWVcIjtcclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIHN0b3JlLFxyXG4gIGNvbXBvbmVudHM6IHsgQW5pbWF0ZTEsIFZ1ZVBob25lTnVtYmVySW5wdXQsIExvZ2luQW5pbWF0ZSwgQW5pbWF0ZUxvZ2luIH0sXHJcbiAgZGF0YSgpIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGNvZGU6IFwiXCIsXHJcbiAgICAgIHBhc3M6IFwiXCIsXHJcbiAgICAgIHNob3c6IHRydWUsXHJcbiAgICAgIHR5cGU6IFwicGFzc3dvcmRcIixcclxuICAgICAgdGV4dFZhbGlkYXRpb25QaG9uZTogXCJcIixcclxuICAgICAgdGV4dFZhbGlkYXRpb25QYXNzd29yZDogXCJcIixcclxuICAgICAgZW1haWxDbGFzczogXCJcIixcclxuICAgICAgdGV4dFZhbGlkYXRpb25FbWFpbDogXCJcIixcclxuICAgICAgZW1haWxDbGFzczogXCJcIixcclxuICAgICAgcGhvbmVDbGFzczogXCJcIixcclxuICAgICAgbW9iaWxlOiBcIlwiLFxyXG4gICAgICB2ZXJpZlBob25lOiBmYWxzZSxcclxuICAgICAgdHJhbnNsYXRpb25zOiB7XHJcbiAgICAgICAgY291bnRyeVNlbGVjdG9yTGFiZWw6IFwiQ29kZSBwYXlzXCIsXHJcbiAgICAgICAgY291bnRyeVNlbGVjdG9yRXJyb3I6IFwiQ2hvaXNpciB1biBwYXlzXCIsXHJcbiAgICAgICAgcGhvbmVOdW1iZXJMYWJlbDogXCJOdW3DqXJvIGRlIHTDqWzDqXBob25lXCIsXHJcbiAgICAgICAgZXhhbXBsZTogXCJFeGVtcGxlIDpcIixcclxuICAgICAgfSxcclxuICAgIH07XHJcbiAgfSxcclxuICBtb3VudGVkKCkge1xyXG4gICAgLy9jb25zb2xlLmNsZWFyKCk7XHJcbiAgfSxcclxuICBjb21wdXRlZDoge1xyXG4gICAgcGhvbmU6IHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFBob25lO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsKSB7XHJcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0UGhvbmVcIiwgdmFsKTtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0RW1haWw7XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRFbWFpbFwiLCB2YWwpO1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIHBhc3N3b3JkOiB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRQYXNzd29yZDtcclxuICAgICAgfSxcclxuICAgICAgc2V0KHZhbCkge1xyXG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldFBhc3N3b3JkXCIsIHZhbCk7XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgdWlkOiB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRVaWQ7XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRVaWRcIiwgdmFsKTtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICB0b2tlbjoge1xyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0VG9rZW47XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRUb2tlblwiLCB2YWwpO1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIHJlZnJlc2g6IHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFJlZnJlc2hUb2tlbjtcclxuICAgICAgfSxcclxuICAgICAgc2V0KHZhbCkge1xyXG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldFJlZnJlc2hUb2tlblwiLCB2YWwpO1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGNvZGVTdGF0dXM6IHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldENvZGVTdGF0dXM7XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRDb2RlU3RhdHVzXCIsIHZhbCk7XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgbWVzc2FnZVN0YXR1czoge1xyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0TWVzc2FnZVN0YXR1cztcclxuICAgICAgfSxcclxuICAgICAgc2V0KHZhbCkge1xyXG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldE1lc3NhZ2VTdGF0dXNcIiwgdmFsKTtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICB0ZXh0U3RhdHVzOiB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRUZXh0U3RhdHVzO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsKSB7XHJcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0VGV4dFN0YXR1c1wiLCB2YWwpO1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGxhdGl0dWRlOiB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRMYXRpdHVkZTtcclxuICAgICAgfSxcclxuICAgICAgc2V0KHZhbCkge1xyXG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldExhdGl0dWRlXCIsIHZhbCk7XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgbG9naXR1ZGU6IHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldExvZ2l0dWRlO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsKSB7XHJcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0TG9naXR1ZGVcIiwgdmFsKTtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICBsb2FkaW5nOiB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRMb2FkaW5nO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsKSB7XHJcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0TG9hZGluZ1wiLCB2YWwpO1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICB9LFxyXG4gIHdhdGNoOiB7XHJcbiAgICBjb2RlU3RhdHVzKHZhbCkge1xyXG4gICAgICBjb25zb2xlLmxvZyh2YWwpO1xyXG4gICAgICBzd2l0Y2ggKHZhbCkge1xyXG4gICAgICAgIGNhc2UgMjAxOlxyXG4gICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcInRva2VuXCIsIHRoaXMudG9rZW4pO1xyXG4gICAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShcInVpZFwiLCB0aGlzLnVpZCk7XHJcbiAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKFwicmVmcmVzaFwiLCB0aGlzLnJlZnJlc2gpO1xyXG4gICAgICAgICAgdGhpcy4kcm91dGVyLnB1c2goXCIvZGFzaFwiKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgfSxcclxuICBtZXRob2RzOiB7XHJcbiAgICBsb2FkKCkge1xyXG4gICAgICB0aGlzLmxvYWRpbmcgPSB0aGlzLiR2cy5sb2FkaW5nKHtcclxuICAgICAgICBiYWNrZ3JvdW5kOiBcIiM3YTc2Y2JcIixcclxuICAgICAgICBjb2xvcjogXCIjZmZmXCIsXHJcbiAgICAgICAgdGV4dDogXCJWZXVpbGxleiBwYXRpZW50ZXJcIixcclxuICAgICAgICB0eXBlOiBcInNjYWxlXCIsXHJcbiAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIHNob3dQYXNzKCkge1xyXG4gICAgICBpZiAodGhpcy5zaG93ID09IHRydWUpIHtcclxuICAgICAgICB0aGlzLnR5cGUgPSBcInRleHRcIjtcclxuICAgICAgICB0aGlzLnNob3cgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnR5cGUgPSBcInBhc3N3b3JkXCI7XHJcbiAgICAgICAgdGhpcy5zaG93ID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIG9uRmluaXNoKCkge1xyXG4gICAgICBpZiAodGhpcy5jb2RlLmxlbmd0aCA9PSA0KSB7XHJcbiAgICAgICAgLy9jb25zb2xlLmxvZyh0aGlzLnVpZCk7XHJcbiAgICAgICAgdmFyICRkYXRhO1xyXG4gICAgICAgIGNvbnN0ICRuYXZpZ2F0b3IgPSB3aW5kb3cubmF2aWdhdG9yO1xyXG4gICAgICAgIC8vY29uc29sZS5sb2codGhpcy5sYXRpdHVkZSk7XHJcbiAgICAgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbiAocG9zaXRpb24pIHtcclxuICAgICAgICAgIC8vY29uc29sZS5sb2codGhpcyk7XHJcbiAgICAgICAgICAvL3RoaXMubGF0aXR1ZGUgPSBwb3NpdGlvbi5jb29yZHMubGF0aXR1ZGU7XHJcbiAgICAgICAgICAvL3RoaXMubG9naXR1ZGUgPSBwb3NpdGlvbi5jb29yZHMubG9uZ2l0dWRlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgICRkYXRhID0ge1xyXG4gICAgICAgICAgY29kZTogdGhpcy5jb2RlLFxyXG4gICAgICAgICAgdWlkOiB0aGlzLnVpZCxcclxuICAgICAgICAgIGFwcFZlcnNpb246ICRuYXZpZ2F0b3IuYXBwVmVyc2lvbixcclxuICAgICAgICAgIHVzZXJBZ2VudDogJG5hdmlnYXRvci51c2VyQWdlbnQsXHJcbiAgICAgICAgICBwbGF0ZWZvcm06ICRuYXZpZ2F0b3IudXNlckFnZW50RGF0YS5wbGF0ZWZvcm0sXHJcbiAgICAgICAgICBtb2JpbGU6ICRuYXZpZ2F0b3IudXNlckFnZW50RGF0YS5tb2JpbGUsXHJcbiAgICAgICAgICBicmFuZHM6ICRuYXZpZ2F0b3IudXNlckFnZW50RGF0YS5icmFuZHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLiRzdG9yZS5kaXNwYXRjaChDb25zdGFudC5BVVRILCAkZGF0YSk7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjcmVhdGVkKCkge1xyXG4gICAgICB0aGlzLiRyb3V0ZXIucHVzaChcIi9pbnNjcmlwdGlvblwiKTtcclxuICAgIH0sXHJcbiAgICByZXNldCgpIHtcclxuICAgICAgdGhpcy4kcm91dGVyLnB1c2goXCIvXCIpO1xyXG4gICAgfSxcclxuICAgIHVwZGF0ZShldmVudCkge1xyXG4gICAgICB0aGlzLnBob25lQ2xhc3MgPSBcIlwiO1xyXG4gICAgICBpZiAoZXZlbnQpIHtcclxuICAgICAgICB0aGlzLnZlcmlmUGhvbmUgPSBldmVudC5pc1ZhbGlkID8gZXZlbnQuaXNWYWxpZCA6IGZhbHNlO1xyXG4gICAgICAgIHRoaXMucGhvbmUgPSBldmVudC5mb3JtYXR0ZWROdW1iZXIgPyBldmVudC5mb3JtYXR0ZWROdW1iZXIgOiBcIlwiO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgb3Blbk5vdGlmaWNhdGlvbih0aXRsZSwgdGV4dCwgY29sb3IsIHBvc2l0aW9uID0gXCJ0b3AtcmlnaHRcIiwgaWNvbiA9IG51bGwpIHtcclxuICAgICAgY29uc3Qgbm90aSA9IHRoaXMuJHZzLm5vdGlmaWNhdGlvbih7XHJcbiAgICAgICAgaWNvbixcclxuICAgICAgICBjb2xvcixcclxuICAgICAgICBwb3NpdGlvbixcclxuICAgICAgICB0aXRsZSxcclxuICAgICAgICB0ZXh0LFxyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgICBjb25uZXhpb24oKSB7XHJcbiAgICAgIGlmICghdGhpcy52ZXJpZlBob25lKSB7XHJcbiAgICAgICAgdGhpcy50ZXh0VmFsaWRhdGlvblBob25lID0gXCJOdW3DqXJvIGRlIHTDqWzDqXBob25lIGluY29ycmVjdGVcIjtcclxuICAgICAgICB0aGlzLnBob25lQ2xhc3MgPSBcImlzLWludmFsaWRcIjtcclxuICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnRleHRWYWxpZGF0aW9uUGhvbmUgPSBcIlwiO1xyXG4gICAgICB0aGlzLnBob25lQ2xhc3MgPSBcImlzLXZhbGlkXCI7XHJcbiAgICAgIHRoaXMubG9hZCgpO1xyXG4gICAgICBjb25zdCBpbnN0YW5jZSA9IGF4aW9zLmNyZWF0ZSh7XHJcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiBcImluY2x1ZGVcIixcclxuICAgICAgfSk7XHJcbiAgICAgIGNvbnN0IGhlYWRlcnMgPSB7XHJcbiAgICAgICAgYWNjZXB0OiBcIiovKlwiLFxyXG4gICAgICAgIFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgICAgIFwieC1wb3MtY2xpZW50LWtleVwiOiBwcm9jZXNzLmVudi5QT1NfQ0xJRU5UX0tFWVxyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCAkZGF0YSA9IHtcclxuICAgICAgICBtb2JpbGVQaG9uZTogdGhpcy5waG9uZSxcclxuICAgICAgICByZXR1cm5Vcmw6IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyBcIi9yZXNldFwiLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgaW5zdGFuY2VcclxuICAgICAgICAucG9zdChNQUlOX1VSTC5FTUFJTF9NUCwgJGRhdGEsIHsgaGVhZGVycyB9KVxyXG4gICAgICAgIC50aGVuKChlKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCAkZGF0YSA9IGUuZGF0YTtcclxuICAgICAgICAgIGlmICgkZGF0YSkge1xyXG4gICAgICAgICAgICAgIHRoaXMubG9hZGluZy5jbG9zZSgpXHJcbiAgICAgICAgICAgICAgdGhpcy5vcGVuTm90aWZpY2F0aW9uKFwiRW1haWwgZW52b3nDqVwiLCBcIk5vdXMgdm91cyBhdm9ucyBlbnZveWVyIHVuIGVtYWlsIGRlIGNoYW5nZW1lbnQgZGUgbW90IGRlIHBhc3NlXCIpO1xyXG4gICAgICAgICAgICAvL3djb25zb2xlLmxvZygkZGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcclxuICAgICAgICAgIGNvbnN0ICRkYXRhID0gZS5yZXNwb25zZS5yZXF1ZXN0LnJlc3BvbnNlO1xyXG4gICAgICAgICAgY29uc3QgeCA9IEpTT04ucGFyc2UoJGRhdGEpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nLmNsb3NlKCk7XHJcbiAgICAgICAgICBpZiAoeC5jb2RlKSB7XHJcbiAgICAgICAgICAgIGlmICh4LmNvZGUgPT0gXCJHTE9CQUxfVkFMSURBVElPTl9FUlJPUlwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vcGVuTm90aWZpY2F0aW9uKFwiT29wc1wiLCB4LmRldGFpbHMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh4LmNvZGUgPT0gXCJBVVRIX0FDQ09VTlRfTk9UX0VYSVNURU5UXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLnBob25lQ2xhc3MgPSBcImlzLWludmFsaWRcIjtcclxuICAgICAgICAgICAgICByZXR1cm4gKHRoaXMudGV4dFZhbGlkYXRpb25QaG9uZSA9IFwiTGUgY29tcHRlIG4nZXhpdGUgcGFzXCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICh4LmNvZGUgPT0gXCJFUlJPUl9BVVRIX0FDQ09VTlRfUkVTVFJJQ1RFRFwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy50ZXh0VmFsaWRhdGlvblBhc3N3b3JkID0gXCJMZSBtb3QgZGUgcGFzc2UgZXN0IGluY29ycmVjdGVcIjtcclxuICAgICAgICAgICAgICB0aGlzLnBhc3MgPSBcImlzLWludmFsaWRcIjtcclxuICAgICAgICAgICAgICByZXR1cm4gXCJcIjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAvL3RoaXMuJHN0b3JlLmRpc3BhdGNoKENvbnN0YW50LkNPTk5FWElPTiwgJGRhdGEpO1xyXG4gICAgfSxcclxuICB9LFxyXG59O1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ+XHJcbi5sYXN0X2Jsb2NrIHtcclxuICBwYWRkaW5nOiAxNXB4O1xyXG4gIHBhZGRpbmctbGVmdDogNTZweDtcclxuICBwYWRkaW5nLXJpZ2h0OiA1NnB4O1xyXG59XHJcbi5jYXJkIHtcclxuICBwYWRkaW5nOiAwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG59XHJcbi5pbnB1dC1ncm91cC10ZXh0IHtcclxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xyXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtO1xyXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjI1cmVtO1xyXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGJvcmRlci1sZWZ0OiAwcHg7XHJcbiAgcGFkZGluZzogNS41cHg7XHJcbiAgZm9udC1zaXplOiAxcmVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgLyogbGluZS1oZWlnaHQ6IDEuNTsgKi9cclxuICBjb2xvcjogIzIxMjUyOTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2VkNGRhO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICAvKiBib3JkZXItcmFkaXVzOiAwLjI1cmVtOyAqL1xyXG59XHJcbi5iYWNrIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgdGV4dC1hbGlnbjogbGVmdDtcclxuICBiYWNrZ3JvdW5kOiAjYzhkZGZiO1xyXG4gIGhlaWdodDogMTAwO1xyXG59XHJcbi5jb250IHtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJodHRwczovL3d3dy5nb29nbGUuY29tL3VybD9zYT1pJnVybD1odHRwcyUzQSUyRiUyRnd3dy5wZXJmZWN0c2VydmUuY29tJTJGYW5zd2VyLXNlcnZpY2UlMkZsYW5kaW5nLWhlcm8tYmFja2dyb3VuZCUyRiZwc2lnPUFPdlZhdzN3NUVsVC1kNlgyUkx1UXNhVS1LclEmdXN0PTE2NDU5MTczOTc1NzEwMDAmc291cmNlPWltYWdlcyZjZD12ZmUmdmVkPTBDQWdRalJ4cUZ3b1RDT2lIeExMLW1fWUNGUUFBQUFBZEFBQUFBQkFLXCIpO1xyXG59XHJcbi5mb3JtLXNpZ25pbiB7XHJcbiAgLyptYXgtd2lkdGg6IDQwMHB4OyovXHJcbiAgZmxleDogMTAwJTtcclxuICBib3JkZXItcmlnaHQ6IDBweDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgaGVpZ2h0OiAxMDB2aDtcclxuICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG59XHJcblxyXG4uZm9ybS1zaWduaW4gLmNoZWNrYm94IHtcclxuICBmb250LXdlaWdodDogNDAwO1xyXG59XHJcblxyXG4uZm9ybS1zaWduaW4gLmZvcm0tZmxvYXRpbmc6Zm9jdXMtd2l0aGluIHtcclxuICB6LWluZGV4OiAyO1xyXG59XHJcblxyXG4uZm9ybS1zaWduaW4gaW5wdXRbdHlwZT1cImVtYWlsXCJdIHtcclxuICBtYXJnaW4tYm90dG9tOiAtMXB4O1xyXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xyXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0sXHJcbi5mb3JtLXNpZ25pbiBpbnB1dFt0eXBlPVwidGV4dFwiXSxcclxuLmZvcm0tc2lnbmluIGlucHV0W3R5cGU9XCJ0ZWxcIl0ge1xyXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLXJpZ2h0OiAwO1xyXG4gIGZvbnQtc2l6ZTogODAlO1xyXG59XHJcbi5idXR0b24tc2lnbiB7XHJcbiAgYmFja2dyb3VuZDogIzhhYjdmODtcclxuICBib3JkZXItY29sb3I6ICM4YWI3Zjg7XHJcbiAgY29sb3I6ICNmZmY7XHJcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XHJcbn1cclxuYSB7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG59XHJcbnAge1xyXG4gIG1hcmdpbi1ib3R0b206IDBweDtcclxuICBsaW5lLWhlaWdodDogMTVweDtcclxufVxyXG5pbnB1dCxcclxuaW5wdXQ6Zm9jdXMge1xyXG4gIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgZm9udC1zaXplOiA4MCU7XHJcbn1cclxuaW5wdXQ6Zm9jdXMge1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNlOGYwZmU7XHJcbn1cclxuI2Jhc2ljLWFkZG9uMSB7XHJcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xyXG59XHJcbi5yb3cge1xyXG4gIG1hcmdpbjogMHB4O1xyXG59XHJcblxyXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MjVweCkge1xyXG4gIC5iYWNrLFxyXG4gIC5mb3JtLXNpZ25pbiB7XHJcbiAgICBoZWlnaHQ6IDUwdmg7XHJcbiAgfVxyXG59XHJcbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xyXG4gIC5iYWNrLFxyXG4gIC5mb3JtLXNpZ25pbiB7XHJcbiAgICBoZWlnaHQ6IDUwdmg7XHJcbiAgfVxyXG4gIC52LWFwcGxpY2F0aW9uLS13cmFwIHtcclxuICAgIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgfVxyXG59XHJcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xyXG4gIC5iYWNrLFxyXG4gIC5mb3JtLXNpZ25pbiB7XHJcbiAgICBoZWlnaHQ6IDEwMHZoO1xyXG4gIH1cclxufVxyXG48L3N0eWxlPlxyXG4iLCI8dGVtcGxhdGU+XG4gIDxkaXY+XG4gICAgPEJhc2VTaWRlQmFyPjwvQmFzZVNpZGVCYXI+XG4gICAgPGRpdiBjbGFzcz1cIm1haW5cIj5cbiAgICAgIDxsb2FkZXIgdi1pZj1cImNhcmQubGVuZ3RoPCAxXCIgLz5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgcHItNCBwbC00XCIgdi1lbHNlLWlmPVwiY2FyZD09J1ZpZGUnXCI+XG4gICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgcHItMFwiPlxuICAgICAgICAgICAgICAgIDx1c2VyIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1zdGFydFwiPlxuICAgICAgICAgICAgICAgIDxoND5NYSA8c3BhbiBjbGFzcz1cInRpdGxlLXBhZ2VcIj5jYXJ0ZTwvc3Bhbj48L2g0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuX2Jsb2NrXCIgQGNsaWNrPVwiYWN0aXZlQ2FyZFwiPlxuICAgICAgICAgICAgICAgICAgICBBY3RpdmVyIGNhcnRlXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGVtcHR5IC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgdi1lbHNlIGNsYXNzPVwicC01IHB0LTVcIj5cbiAgICAgICBcbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgcHItMFwiPlxuICAgICAgICAgICAgICAgIDx1c2VyIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoND5NYSA8c3BhbiBjbGFzcz1cInRpdGxlLXBhZ2VcIj5jYXJ0ZTwvc3Bhbj48L2g0PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBjb2wtbWQtMTIgcGwtMCBwci0wXCI+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5fYmxvY2tcIiBAY2xpY2s9XCJhY3RpdmVDYXJkXCI+UmVtcGxhY2VyIG1hIGNhcnRlPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuX291dGxpbmVcIiBAY2xpY2s9XCJjb21tYW5kZUNhcmRcIj5QZXJzb25uYWxpc2VyIG1hIGNhcnRlPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5fYmxvY2tcIiBAY2xpY2s9XCJsb2FkQ2FyZFwiPlJlY2hhcmdlciB2b3RyZSBjYXJ0ZTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPCEtLTxidXR0b24gY2xhc3M9XCJidG5fb3V0bGluZVwiICB2LWItdG9nZ2xlLnNpZGViYXItY2FyZCBAY2xpY2s9XCJ1aWRjYXJkPWNhcmRbMF1cIj5MZXMgT3B0aW9uczwvYnV0dG9uPi0tPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjYXJkIG10LTMgcC0zXCI+XG4gICAgICAgICAgICAgICAgPGg1PkNvbXB0ZSBwcmluY2lwYWw8L2g1PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHBsLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJ0ZXh0LWRhcmtcIj5OdW1lcm8gZGUgbGEgY2FydGU8L2g2PlxuICAgICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cInRleHQtbXV0ZWRcIj57eyBjYXJkP2NhcmRbMF0ucGFuTnVtYmVyOicnIH19PC9oNj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBwbC0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwidGV4dC1kYXJrXCI+VmF6aXZhIElkQ2FyZDwvaDY+XG4gICAgICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwidGV4dC1tdXRlZFwiPnt7IGNhcmQ/Y2FyZFswXS50b2tlbjonJyB9fTwvaDY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgcGwtMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cInRleHQtZGFya1wiPkJhbGFuY2U8L2g2PlxuICAgICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cInRleHQtbXV0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNhcmQ/Y2FyZFswXS5iYWxhbmNlOicnIH19IHt7IGNhcmQ/Y2FyZFswXS5jdXJyZW5jeTonJyB9fVxuICAgICAgICAgICAgICAgICAgICAgIDwvaDY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgcGwtMFwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxoNiBjbGFzcz1cInRleHQtZGFya1wiPk1vbnRhbnQgZGVzIHRyYW5zYWN0aW9ucyBlbiBjb3VyczwvaDY+XG4gICAgICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwidGV4dC1tdXRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgY2FyZD9jYXJkWzBdLmJsb2NrZWRBbW91bnQ6JycgfX0ge3sgY2FyZD9jYXJkWzBdLmN1cnJlbmN5OicnIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9oNj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBwbC0wXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGg2IGNsYXNzPVwidGV4dC1kYXJrXCI+RXhwaXJlIGxlPC9oNj5cbiAgICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjYXJkP2NhcmRbMF0uZXhwaXJ5RGF0ZTonJyB8IGZvcm1hdERhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICA8L2g2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IHBsLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJ0ZXh0LWRhcmtcIj5BY3RpdsOpIGxlPC9oNj5cbiAgICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBjYXJkP2NhcmRbMF0uYWN0aXZhdGlvbkRhdGU6JycgfCBmb3JtYXREYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9oNj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJ0ZXh0LWRhcmtcIj5BZHJlc3NlPC9oNj5cbiAgICAgICAgICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBhY2NvdW50LmFkZHJlc3Nlc1swXS5hZGRyZXNzMSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAge3sgYWNjb3VudC5hZGRyZXNzZXNbMF0uemlwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBhY2NvdW50LmFkZHJlc3Nlc1swXS5jaXR5IH19XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBhY2NvdW50LmFkZHJlc3Nlc1swXS5jb3VudHJ5IH19XG4gICAgICAgICAgICAgICAgICAgICAgPC9oNj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiPjwvZGl2PlxuICAgICAgICAgICAgPCEtLWNhcmQgLS0+XG4gICAgICAgICAgICAgICAgPGRpdiB2LWlmPVwiY2FyZC5sZW5ndGg+MCAmJiBjYXJkIT0nVmlkZSdcIiBjbGFzcz1cImNhcmQgbXQtM1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicHgtMyBweS0yXCI+XG4gICAgICAgICAgPHA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgbWItNFwiPlxuICAgICAgICAgICAgICAgIDxjYXJkLXZpZXcgOnVzZXJzPVwiY2FyZFswXVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bl9vdXRsaW5lXCIgQGNsaWNrPVwidmlld1BpbihjYXJkWzBdKVwiPjxpIGNsYXNzPVwibWRpIG1kaS1leWVcIj48L2k+IFZvaXIgUElOPC9idXR0b24+XG4gICAgICAgICAgICAgIDxkaXYgdi1pZj1cImNhcmRcIj5cbiAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlbnRlciBjb24tc3dpdGNoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHZzLXN3aXRjaCBzdWNjZXNzIEBjbGljaz1cImJsb2NrZWQoY2FyZFswXSlcIiB2LW1vZGVsPVwiYmxvY2tcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSAjb2ZmPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBCbG9xdWVyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHRlbXBsYXRlICNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgRMOpYmxvcXVlclxuICAgICAgICAgICAgICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICA8L3ZzLXN3aXRjaD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICBcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG10LTRcIj5cbiAgICAgICAgICAgICAgPGg2PkRldGFpbHM8L2g2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICAgICAgICAgIDxzbWFsbD5WYXppdmEgSWRDYXJkPC9zbWFsbD5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwidGV4dC1tdXRlZFwiPnt7Y2FyZFswXS50b2tlbn19PC9zbWFsbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cbiAgICAgICAgICAgICAgPHNtYWxsPkRldmlzZTwvc21hbGw+XG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cInRleHQtbXV0ZWRcIj57e2NhcmRbMF0uY3VycmVuY3l9fTwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICAgICAgICAgIDxzbWFsbD5TdGF0dXM8L3NtYWxsPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+e3sgY2FwaXRhbGl6ZShjYXJkWzBdLnN0YXR1cykgfX1cbiAgICAgICAgICAgIDx2LWJhZGdlXG4gICAgICAgICAgICAgIGJvcmRlcmVkXG4gICAgICAgICAgICAgIGlubGluZVxuICAgICAgICAgICAgICBkb3RcbiAgICAgICAgICAgICAgOmNvbG9yPVwiY2FyZFswXS5zdGF0dXMgPT0gJ2FjdGl2ZScgPyAnZ3JlZW4nIDogJ3JlZCdcIlxuICAgICAgICAgICAgPjwvdi1iYWRnZT48L3NtYWxsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItMlwiPlxuICAgICAgICAgICAgICA8c21hbGw+U29sZGU8L3NtYWxsPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+e3tjYXJkWzBdLmJhbGFuY2V9fSB7e2NhcmRbMF0uY3VycmVuY3l9fTwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICAgICAgICAgIDxzbWFsbD5Nb250YW50IGRlcyB0cmFuc2FjdGlvbnMgZW4gY291cnM8L3NtYWxsPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+e3tjYXJkWzBdLmJsb2NrZWRBbW91bnR9fSB7e2NhcmRbMF0uY3VycmVuY3l9fTwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICAgICAgICAgIDxzbWFsbD5EYXRlIGFjdGl2YXRpb248L3NtYWxsPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJ0ZXh0LW11dGVkXCI+e3tjYXJkWzBdLmFjdGl2YXRpb25EYXRlfGZvcm1hdERhdGV9fTwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwhLS1QYXJhbXRyZS0tPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbXQtNFwiPlxuICAgICAgICAgICAgICA8aDY+UGFyYW3DqHRyZXM8L2g2PlxuICAgICAgICAgICAgICA8di1pY29uIGNvbG9yPVwicHJpbWFyeVwiIHNtYWxsIEBjbGljaz1cInBhcmFtc1wiPm1kaSBtZGktcGVuPC92LWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cbiAgICAgICAgICAgICAgPHNtYWxsPlBhaWVtZW50IHNhbnMgY29udGFjdDwvc21hbGw+XG4gICAgICAgICAgICAgIDx2LWljb24gOmNvbG9yPVwiY2FyZFswXS5mZWF0dXJlcy5wYXltZW50Q29udGFjdGxlc3M9PXRydWU/J3N1Y2Nlc3MnOicjZjk1NjU2J1wiIHNtYWxsIHYtaWY9XCJjYXJkWzBdXCIgdi10ZXh0PVwiY2FyZFswXS5mZWF0dXJlcy5wYXltZW50Q29udGFjdGxlc3M9PXRydWU/J21kaSBtZGktY2hlY2stY2lyY2xlJzonbWRpIG1kaS1jbG9zZS1jaXJjbGUnXCI+PC92LWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi0yXCI+XG4gICAgICAgICAgICAgIDxzbWFsbD5QYWllbWVudCBwYXIgaW50ZXJuZXQ8L3NtYWxsPlxuICAgICAgICAgICAgIDx2LWljb24gOmNvbG9yPVwiY2FyZFswXS5mZWF0dXJlcy5wYXltZW50V2ViPT10cnVlPydzdWNjZXNzJzonI2Y5NTY1NidcIiBzbWFsbCB2LWlmPVwiY2FyZFswXVwiIHYtdGV4dD1cImNhcmRbMF0uZmVhdHVyZXMucGF5bWVudFdlYj09dHJ1ZT8nbWRpIG1kaS1jaGVjay1jaXJjbGUnOidtZGkgbWRpLWNsb3NlLWNpcmNsZSdcIj48L3YtaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIG1iLTJcIj5cbiAgICAgICAgICAgICAgPHNtYWxsPlJldHJhaXQgYXUgZGlzdHJpYnV0ZXVyPC9zbWFsbD5cbiAgICAgICAgICAgICA8di1pY29uIDpjb2xvcj1cImNhcmRbMF0uZmVhdHVyZXMucGF5bWVudEFUTT09dHJ1ZT8nc3VjY2Vzcyc6JyNmOTU2NTYnXCIgc21hbGwgdi1pZj1cImNhcmRbMF1cIiB2LXRleHQ9XCJjYXJkWzBdLmZlYXR1cmVzLnBheW1lbnRBVE09PXRydWU/J21kaSBtZGktY2hlY2stY2lyY2xlJzonbWRpIG1kaS1jbG9zZS1jaXJjbGUnXCI+PC92LWljb24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0xMCBtYi0yIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxidXR0b24gQGNsaWNrPVwiY29tbWFuZGVcIiBjbGFzcz1cImJ0bl9ibG9ja1wiPlZvaXIgbWVzIGNvbW1hbmRlczwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9wPlxuXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIHB4LTMgcHktMiBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlblwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bl9vdXRsaW5lXCIgQGNsaWNrPVwicGluKGNhcmRbMF0pXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1yZWxvYWRcIj48L2k+IE1vZGlmaWVyIGxlIGNvZGUgUElOXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5fYmxvY2tcIiBAY2xpY2s9XCJsb3N0KGNhcmRbMF0pXCI+XG4gICAgICAgICAgICAgIDxpIGNsYXNzPVwibWRpIG1kaS1sb2NrXCI+PC9pPiBEw6ljbGFyZXIgcGVyZHVlL3ZvbMOpZVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgICAgICAgICAgPCEtLWZpbiBjYXJkLS0+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIj48L2Rpdj5cbiAgICBcbiAgICAgICAgPCEtLSBEaWFsb2cgLS0+XG4gICAgICAgIDx2cy1kaWFsb2dcbiAgICAgICAgICBibHVyXG4gICAgICAgICAgdi1tb2RlbD1cImFjdGl2ZXNzXCJcbiAgICAgICAgICBwcmV2ZW50LWNsb3NlXG4gICAgICAgICAgc2Nyb2xsXG4gICAgICAgICAgb3ZlcmZsb3ctaGlkZGVuXG4gICAgICAgICAgYXV0by13aWR0aFxuICAgICAgICAgIHYtaWY9XCJjYXJkLmxlbmd0aD4wXCJcbiAgICAgICAgPlxuICAgICAgICAgIDx0ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgICAgICAgPGg0IGNsYXNzPVwibm90LW1hcmdpblwiPlxuICAgICAgICAgICAgICA8Yj57eyB0aXRsZSB9fTwvYj5cbiAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICA8IS0tY2hhbmdlbWVudCBwYXNzd29yZC0tPlxuICAgICAgICAgIDxkaXYgdi1pZj1cIm1vZGFsID09ICdwYXNzd29yZCdcIj48L2Rpdj5cbiAgICAgICAgICA8IS0ta3ljIGRvYyAtLT5cbiAgICAgICAgICA8ZGl2IHYtZWxzZT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGNvbC1tZC02XCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWw+VGl0cmUgZGUgZG9jdW1lbnQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIDpjbGFzcz1cImAke25hbWVDbGFzc30gZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbWBcIlxuICAgICAgICAgICAgICAgICAgICB2LW1vZGVsPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiVGl0cmUgZGUgZG9jdW1lbnRcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+Q2UgY2hhbXBzIGVzdCByZXF1aXM8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtbWQtNlwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPlR5cGUgZGUgZG9jdW1lbnQ8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgICAgICAgICA6Y2xhc3M9XCJgJHt0eXBlQ2xhc3N9IGZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21gXCJcbiAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cInR5cGVcIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwibmF0aW9uYWxJZENhcmRcIj5DYXJ0ZSBuYXRpb25hbGU8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInBhc3Nwb3J0XCI+UGFzc3BvcnQ8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImRyaXZlckxpY2VuY2VcIj5QZXJtaXMgZGUgY29uZHVpcmU8L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImhvc3RpbmdQcm9vZlwiPlByZXV2ZSBkJ2jDqWJlcmdlbWVudDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwidXRpbGl0eUJpbGxcIj5GYWN0dXJlPC9vcHRpb24+XG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCI+Q2UgY2hhbXBzIGVzdCByZXF1aXM8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cbiAgICAgICAgICAgICAgPHZ1ZS1kcm9wem9uZVxuICAgICAgICAgICAgICAgIHJlZj1cIm15VnVlRHJvcHpvbmVcIlxuICAgICAgICAgICAgICAgIGlkPVwiZHJvcHpvbmVcIlxuICAgICAgICAgICAgICAgIDpvcHRpb25zPVwiZHJvcHpvbmVPcHRpb25zXCJcbiAgICAgICAgICAgICAgICBAdmRyb3B6b25lLXNlbmRpbmc9XCJzZW5kXCJcbiAgICAgICAgICAgICAgPjwvdnVlLWRyb3B6b25lPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHRlbXBsYXRlICNmb290ZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29udC1mb290ZXJcIj5cbiAgICAgICAgICAgICAgPHZzLWJ1dHRvbiBibG9jayBAY2xpY2s9XCJzYXZlXCI+U2F1dmVnYXJkZXI8L3ZzLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGVtcGxhdGU+XG4gICAgICAgIDwvdnMtZGlhbG9nPlxuICAgICAgICAgPCEtLSBEaWFsb2cgLS0+XG4gICAgICAgICAgICAgIDx2cy1kaWFsb2dcbiAgICAgICAgICAgICAgICBibHVyXG4gICAgICAgICAgICAgICAgdi1tb2RlbD1cImFjdGl2ZVwiXG4gICAgICAgICAgICAgICAgcHJldmVudC1jbG9zZVxuICAgICAgICAgICAgICAgIHNjcm9sbFxuICAgICAgICAgICAgICAgIG92ZXJmbG93LWhpZGRlblxuICAgICAgICAgICAgICAgIHdpZHRoPVwiMjUwcHhcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDwhLS0gTCdlbnRldGUgZHUgRGlhbG9nIC0tPlxuICAgICAgICAgICAgICAgIDx0ZW1wbGF0ZSAjaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz1cIm5vdC1tYXJnaW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8Yj57eyB0aXRsZSB9fTwvYj5cbiAgICAgICAgICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG10LTMgbWItMlwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiL2ltYWdlcy92YXppdmEuanBlZ1wiIHdpZHRoPVwiMTUlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L3RlbXBsYXRlPlxuICAgICAgICAgICAgICAgIDxkZXRhaWwtY2FyZCA6ZGF0YT1cImRhdGFcIiB2LWlmPVwic3RhdGUgPT0gJ2RldGFpbHMnXCIgLz5cbiAgICAgICAgICAgICAgICA8IS0tQ29tcG9uZW50IFN0YXR1cyBkZSBsYSBjYXJ0ZSAtLT5cbiAgICAgICAgICAgICAgICA8c3RhdHVzIHYtZWxzZS1pZj1cInN0YXRlID09ICdzdGF0dXMnXCIgOmNhcmRUb2tlbj1cInVpZGNhcmQudG9rZW5cIiAvPlxuICAgICAgICAgICAgICAgIDwhLS1Db21wb25lbnQgY29uc3VsdGVyIGNvZGUgcGluIGRlIGxhIGNhcnRlIC0tPlxuICAgICAgICAgICAgICAgIDxwaW4gdi1lbHNlLWlmPVwic3RhdGUgPT0gJ3ZpZXctcGluJ1wiIDpjYXJkVG9rZW49XCJ1aWRjYXJkLnRva2VuXCIgLz5cbiAgICAgICAgICAgICAgICA8IS0tQ29tcG9uZW50IGNoYW5nZSBjb2RlIHBpbiAtLT5cbiAgICAgICAgICAgICAgICA8dmlldy1waW4gdi1lbHNlLWlmPVwic3RhdGUgPT0gJ3BpbidcIiA6Y2FyZFRva2VuPVwidWlkY2FyZC50b2tlblwiIC8+XG5cbiAgICAgICAgICAgICAgICA8IS0tQ29tcG9uZW50IGJsb2NhZ2UgZGUgbGEgY2FydGUtLT5cbiAgICAgICAgICAgICAgICA8YmxvY2tlZC1jYXJkXG4gICAgICAgICAgICAgICAgICB2LWVsc2UtaWY9XCJzdGF0ZSA9PSAnYmxvY2tlZCdcIlxuICAgICAgICAgICAgICAgICAgOmNhcmRUb2tlbj1cInVpZGNhcmQudG9rZW5cIlxuICAgICAgICAgICAgICAgICAgOmFjdGlvbj1cImFjdGlvblwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8IS0tQ29tcG9uZW50IGTDqWNsYXJhdGlvbiBwZXJkdWUgb3Ugdm9sw6llIC0tPlxuICAgICAgICAgICAgICAgIDxsb3N0LWNhcmRcbiAgICAgICAgICAgICAgICAgIHYtZWxzZS1pZj1cInN0YXRlID09ICdsb3N0J1wiXG4gICAgICAgICAgICAgICAgICA6Y2FyZFRva2VuPVwidWlkY2FyZC50b2tlblwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8IS0tQ29tcG9uZW50IGNoYXJnZW1lbnQgZSBsYSBjYXJ0ZSAtLT5cbiAgICAgICAgICAgICAgICA8bG9hZC1jYXJkIHYtZWxzZS1pZj1cInN0YXRlPT0nbG9hZCdcIi8+XG5cbiAgICAgICAgICAgICAgICA8IS0tQ29tcG9uZW50IENvbW1hbmRlIGRlIGxhIGNhcnRlIC0tPlxuICAgICAgICAgICAgICAgIDxjb21tYW5kZS1jYXJkIHYtZWxzZS1pZj1cInN0YXRlID09ICduZXdDYXJkJ1wiIC8+XG4gICAgICAgICAgICAgICAgPCEtLUNvbXBvbmVudCB0cmFuc2FjdGlvbiAtLT5cbiAgICAgICAgICAgICAgICA8dHJhbnNhY3Rpb25zXG4gICAgICAgICAgICAgICAgICB2LWVsc2UtaWY9XCJzdGF0ZSA9PSAndHJhbnNhY3Rpb24nXCJcbiAgICAgICAgICAgICAgICAgIDp1c2Vycz1cInRyYW5zXCJcbiAgICAgICAgICAgICAgICAgIDpjdXJyZW5jeT1cImN1cnJlbmN5XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwhLS1Ob3V2ZWxsZSBjYXJ0ZSAtLT5cbiAgICAgICAgICAgICAgICA8bmV3LWNhcmQgdi1lbHNlIC8+XG4gICAgICAgICAgICAgIDwvdnMtZGlhbG9nPlxuICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5pbXBvcnQgQmFzZU5hdiBmcm9tIFwiLi4vY29tcG9uZW50cy9OYXZiYXIvQmFzZU5hdi52dWVcIjtcbmltcG9ydCBCYXNlU2lkZUJhciBmcm9tIFwiLi4vY29tcG9uZW50cy9OYXZiYXIvQmFzZVNpZGVCYXIudnVlXCI7XG5pbXBvcnQgVXNlciBmcm9tIFwiLi4vY29tcG9uZW50cy9Vc2VyLnZ1ZVwiO1xuaW1wb3J0IEVtcHR5IGZyb20gXCIuLi9jb21wb25lbnRzL0VtcHR5LnZ1ZVwiO1xuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IHN0b3JlIGZyb20gXCIuLi8uLi9zdG9yZVwiO1xuaW1wb3J0IHZ1ZTJEcm9wem9uZSBmcm9tIFwidnVlMi1kcm9wem9uZVwiO1xuaW1wb3J0IFwidnVlMi1kcm9wem9uZS9kaXN0L3Z1ZTJEcm9wem9uZS5taW4uY3NzXCI7XG5pbXBvcnQgTG9hZGVyIGZyb20gXCIuLi9jb21wb25lbnRzL0xvYWRlci52dWVcIjtcbmltcG9ydCBNQUlOX1VSTCBmcm9tIFwiLi4vLi4vLi4vY29tbW9uLmpzL21haW5VcmxcIjtcbmltcG9ydCBDYXJkVmlldyBmcm9tIFwiLi4vY2FydGVzL2NhcmRWaWV3XCI7XG5pbXBvcnQgUGluIGZyb20gXCIuLi9jYXJ0ZXMvcGluLnZ1ZVwiO1xuaW1wb3J0IFZpZXdQaW4gZnJvbSBcIi4uL2NhcnRlcy92aWV3UGluLnZ1ZVwiO1xuaW1wb3J0IE5ld0NhcmQgZnJvbSBcIi4uL2NhcnRlcy9uZXdDYXJkLnZ1ZVwiO1xuaW1wb3J0IENvbW1hbmRlQ2FyZCBmcm9tIFwiLi4vY2FydGVzL2NvbW1hbmRlQ2FyZC52dWVcIjtcbmltcG9ydCBCbG9ja2VkQ2FyZCBmcm9tIFwiLi4vY2FydGVzL2Jsb2NrZWRDYXJkLnZ1ZVwiO1xuaW1wb3J0IExvc3RDYXJkIGZyb20gXCIuLi9jYXJ0ZXMvbG9zdENhcmQudnVlXCI7XG5pbXBvcnQgTG9hZENhcmQgZnJvbSBcIi4uL2NhcnRlcy9sb2FkQ2FyZC52dWVcIjtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc3RvcmUsXG4gIGNvbXBvbmVudHM6IHsgQmFzZU5hdiwgRW1wdHksQmFzZVNpZGVCYXIsVXNlcixcbiAgdnVlRHJvcHpvbmU6IHZ1ZTJEcm9wem9uZSxcbiAgTG9hZENhcmQsXG4gICBMb2FkZXIsIENhcmRWaWV3LFxuICAgUGluLENvbW1hbmRlQ2FyZCxWaWV3UGluLE5ld0NhcmQsQmxvY2tlZENhcmQsTG9zdENhcmRcbiAgICB9LFxuICBkYXRhOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZpY2hpZXI6IFwiXCIsXG4gICAgICB0aXRsZTogXCJcIixcbiAgICAgIGFjdGlvbjpcIlwiLFxuICAgICAgdHlwZTogXCJcIixcbiAgICAgIG5hbWVDbGFzczogXCJcIixcbiAgICAgIHN0YXRlOlwiXCIsXG4gICAgICBibG9jazpmYWxzZSxcbiAgICAgIHR5cGVDbGFzczogXCJcIixcbiAgICAgIG5hbWU6IFwiXCIsXG4gICAgICBtb2RhbDogXCJreWNcIixcbiAgICAgIGFjdGl2ZXNzOiBmYWxzZSxcbiAgICAgIGRyb3B6b25lT3B0aW9uczoge1xuICAgICAgICB1cmw6IFwiaHR0cHM6Ly9odHRwYmluLm9yZy9wb3N0XCIsXG4gICAgICAgIHRodW1ibmFpbFdpZHRoOiAxNTAsXG4gICAgICAgIG1heEZpbGVzaXplOiAwLjUsXG4gICAgICAgIGhlYWRlcnM6IHsgXCJNeS1Bd2Vzb21lLUhlYWRlclwiOiBcImhlYWRlciB2YWx1ZVwiIH0sXG4gICAgICAgIGFkZFJlbW92ZUxpbmtzOiB0cnVlLFxuICAgICAgICBkaWN0RGVmYXVsdE1lc3NhZ2U6XG4gICAgICAgICAgXCI8aSBjbGFzcz0nbWRpIG1kaS1jbG91ZC11cGxvYWQnPjwvaT5HTElTU0VaIEVUIERFUE9TRVJcIixcbiAgICAgIH0sXG4gICAgfTtcbiAgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgICBhY3RpdmU6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLnN0YXRlLmFjdGl2ZTtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldEFjdGl2ZVwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIGFjY291bnQ6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLnN0YXRlLmFjY291bnQ7XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRBY2NvdW50XCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgY2FyZDoge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuY2FyZDtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldENhcmRcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICB1aWRjYXJkOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS51aWRDYXJkO1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0VWlkQ2FyZFwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICB3YXRjaDp7XG4gICAgY2FyZCh2YWwpe1xuICAgICAgY29uc29sZS5sb2codmFsKVxuICAgIH1cbiAgfSxcbiAgbW91bnRlZCgpIHtcbiAgICAgLy90aGlzLmNhcmQgPSBEYXRhRml4dHVyZXMuQ2FyZDtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIHRlc3RDYXJkKCl7XG4gICAgICAgIGNvbnN0IGluc3RhbmNlID0gYXhpb3MuY3JlYXRlKHtcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzOiBcImluY2x1ZGVcIixcbiAgICAgIH0pO1xuICAgICAgY29uc3QgaGVhZGVycyA9IHtcbiAgICAgICAgYWNjZXB0OiBcIiovKlwiLFxuICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9VVRGLThcIixcbiAgICAgICAgXCJ4LXBvcy1jbGllbnQta2V5XCI6IFwiZjNlMDY3Y2UtYmY5My00MThlLTlmZGEtNTZiZjE2NTdkYzkzXCIsXG4gICAgICAgIFwieC1wb3Mtc2Vzc2lvbi10b2tlblwiOiBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwidG9rZW5cIilcbiAgICAgICAgICA/IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJ0b2tlblwiKVxuICAgICAgICAgIDogdGhpcy50b2tlbixcbiAgICAgIH07XG4gICAgICBpbnN0YW5jZS5wb3N0KE1BSU5fVVJMLlRFU1RfQ0FSRCx7fSx7aGVhZGVyc30pLnRoZW4oZT0+e1xuICAgICAgICBjb25zdCAkZGF0YT1lLmRhdGFcbiAgICAgICBjb25zdCB2YWwgPSAkZGF0YS5wYW5OdW1iZXIuc3BsaXQoJyoqKioqKicpO1xuICAgICAgICBjb25zb2xlLmxvZyh2YWxbMV0pXG4gICAgICAgIGluc3RhbmNlLnBvc3QoTUFJTl9VUkwuQUNUSVZBVElPTl9DQVJELHtsYXN0RGlnaXRzOnZhbFsxXSxjYXJkVG9rZW46JGRhdGEuY2FyZFRva2VufSx7aGVhZGVyc30pLnRoZW4oZT0+e1xuICAgICAgICAgIGluc3RhbmNlLnBvc3QoTUFJTl9VUkwuVEVTVF9UUkFOU0FDVElPTix7Y291bnQ6MjAsY2FyZFRva2VuOiRkYXRhLmNhcmRUb2tlbn0se2hlYWRlcnN9KVxuICAgICAgICAudGhlbihlPT5jb25zb2xlLmxvZyhlKSlcbiAgICAgICAgfSlcbiAgICAgICAgXG4gICAgICB9KS5jYXRjaCgpXG4gICAgfSxcbiAgICBsb2FkKCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdGhpcy4kdnMubG9hZGluZyh7XG4gICAgICAgIGJhY2tncm91bmQ6IFwiIzdhNzZjYlwiLFxuICAgICAgICBjb2xvcjogXCIjZmZmXCIsXG4gICAgICAgIHRleHQ6IFwiVmV1aWxsZXogcGF0aWVudGVyXCIsXG4gICAgICAgIHR5cGU6XCJzY2FsZVwiLFxuICAgICAgfSk7XG4gICAgfSxcbiAgICAgdmlld1BpbihpdGVtcykge1xuXG4gICAgICB0aGlzLmRhdGEgPSBpdGVtcztcbiAgICAgIHRoaXMuc3RhdGUgPSBcInZpZXctcGluXCI7XG4gICAgICB0aGlzLnRpdGxlID0gXCJWb3RyZSBjb2RlIHBpblwiO1xuICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgIH0sXG4gICAgcGluKGl0ZW1zKSB7XG4gICAgICAvL2NvbnNvbGUubG9nKGl0ZW1zKTtcbiAgICAgIHRoaXMuZGF0YSA9IGl0ZW1zO1xuICAgICAgdGhpcy5zdGF0ZSA9IFwicGluXCI7XG4gICAgICB0aGlzLnRpdGxlID0gXCJWb3RyZSBub3V2ZWF1IGNvZGUgcGluXCI7XG4gICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgfSxcbiAgICBjb21tYW5kZUNhcmQoKSB7XG4gICAgICB0aGlzLnRpdGxlID0gXCJOb3V2ZWxsZSBjYXJ0ZVwiO1xuICAgICAgdGhpcy5zdGF0ZSA9IFwibmV3Q2FyZFwiO1xuICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgIH0sXG4gICAgY29tbWFuZGUoKXtcbiAgICAgIHRoaXMuJHJvdXRlci5wdXNoKHtuYW1lOidjb21tYW5kZS1jYXJ0ZSd9KVxuICAgIH0sXG4gICAgcGFyYW1zKCl7XG4gICAgICB0aGlzLiRyb3V0ZXIucHVzaCh7bmFtZToncGFyYW1ldHJlJ30pXG4gICAgfSxcbiAgICAgIGxvc3QoKSB7XG4gICAgICB0aGlzLnN0YXRlID0gXCJsb3N0XCI7XG4gICAgICB0aGlzLnRpdGxlID0gXCJEw6ljbGFyZXIgY2V0dGUgY2FydGUgcGVyZHVlIG91IHZvbMOpZVwiO1xuICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgIH0sXG4gICAgbG9hZENhcmQoKSB7XG4gICAgICB0aGlzLnN0YXRlID0gXCJsb2FkXCI7XG4gICAgICB0aGlzLnRpdGxlID0gXCJSZWNoYXJnZXIgbWEgY2FydGVcIjtcbiAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgICB9LFxuICAgIGFjdGl2ZUNhcmQoKSB7XG4gICAgICB0aGlzLnN0YXRlID0gXCJhY3RpdmF0aW9uXCI7XG4gICAgICB0aGlzLnRpdGxlID0gXCJBY3RpdmVyIG1hIGNhcnRlXCI7XG4gICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgfSxcbiAgICBibG9ja2VkKGl0ZW0pIHtcbiAgICB0aGlzLnN0YXRlID0gXCJibG9ja2VkXCI7XG4gICAgaWYoIXRoaXMuYmxvY2spIHtcbiAgICAgIHRoaXMuYWN0aW9uPVwiYmxvY2tlZFwiXG4gICAgICB0aGlzLnRpdGxlID0gXCJCbG9xdWVyIGNldHRlIGNhcnRlXCJ9XG4gICAgZWxzZSB7XG50aGlzLnRpdGxlID0gXCJEw6libG9xdWVyIGRlIGxhIGNhcnRlXCI7XG50aGlzLmFjdGlvbj1cInVubG9ja2VkXCJcbiAgICB9IFxuICAgIFxuICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHRyYW5zYWN0aW9uKGl0ZW1zKSB7XG4gICAgICAvL2NvbnNvbGUubG9nKGl0ZW1zKTtcbiAgICAgIHRoaXMuJGVtaXQoXCJ0cmFuc2FjdGlvblwiLCBpdGVtcyk7XG4gICAgfSxcbiAgICBvcGVuTm90aWZpY2F0aW9uKHRpdGxlLCB0ZXh0LCBjb2xvciwgcG9zaXRpb24gPSBcInRvcC1yaWdodFwiLCBpY29uID0gbnVsbCkge1xuICAgICAgY29uc3Qgbm90aSA9IHRoaXMuJHZzLm5vdGlmaWNhdGlvbih7XG4gICAgICAgIGljb24sXG4gICAgICAgIGNvbG9yLFxuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHRleHQsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHNlbmQoZmlsZSwgeGhyLCBmb3JtRGF0YSkge1xuICAgICAgdGhpcy50b0Jhc2U2NChmaWxlKS50aGVuKChlKSA9PiAodGhpcy5maWNoaWVyID0gZSkpO1xuXG4gICAgICB0aGlzLmZpY2hpZXIgPSBmaWxlLmRhdGFVUkw7XG4gICAgfSxcbiAgICBhZGRLeWMoKSB7XG4gICAgICB0aGlzLm1vZGFsID0gXCJreWNcIjtcbiAgICAgIHRoaXMudGl0bGUgPSBcIkFqb3V0ZXIgdW4gZG9jdW1lbnRcIjtcbiAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgICB9LFxuICAgICAgIGNhcGl0YWxpemUocykge1xuICAgICAgaWYgKCFzKSByZXR1cm4gXCJcIjtcbiAgICAgIHJldHVybiBzLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcy5zbGljZSgxKTtcbiAgICB9LFxuICAgIGVkaXRQYXNzd29yZCgpIHtcbiAgICAgIHRoaXMudGl0bGUgPSBcIkNoYW5nZW1lbnQgZGUgbW90IGRlIHBhc3NlXCI7XG4gICAgICB0aGlzLm1vZGFsID0gXCJwYXNzd29yZFwiO1xuICAgICAgdGhpcy5hY3RpdmUgPSB0cnVlO1xuICAgIH0sXG4gICAgdG9CYXNlNjQoZmlsZSkge1xuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSk7XG4gICAgICAgIHJlYWRlci5vbmxvYWQgPSAoKSA9PiByZXNvbHZlKHJlYWRlci5yZXN1bHQpO1xuICAgICAgICByZWFkZXIub25lcnJvciA9IChlcnJvcikgPT4gcmVqZWN0KGVycm9yKTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgc2F2ZSgpIHtcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMubW9kYWwpO1xuICAgICAgaWYgKHRoaXMubW9kYWwgPT0gXCJreWNcIikge1xuICAgICAgICBpZiAoIXRoaXMubmFtZSkge1xuICAgICAgICAgIHRoaXMubmFtZUNsYXNzID0gXCJpcy1pbnZhbGlkXCI7XG4gICAgICAgICAgcmV0dXJuIFwiXCI7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLnR5cGUpIHtcbiAgICAgICAgICB0aGlzLnR5cGVDbGFzcyA9IFwiaXMtaW52YWxpZFwiO1xuICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIGlmICghdGhpcy5maWNoaWVyKSB7XG4gICAgICAgICAgdGhpcy5vcGVuTm90aWZpY2F0aW9uKFxuICAgICAgICAgICAgXCJPb29wc1wiLFxuICAgICAgICAgICAgXCJWZXVpbGxleiBjaG9pc2lyIHVuIGZpY2hpZXJcIixcbiAgICAgICAgICAgIFwiZGFuZ2VyXCJcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybiBcIlwiO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgJGRhdGEgPSB7XG4gICAgICAgICAgZG9jdW1lbnQ6IHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGRvY3VtZW50RGF0YTogdGhpcy5maWNoaWVyLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSB7XG4gICAgICAgICAgYWNjZXB0OiBcIiovKlwiLFxuICAgICAgICAgIFwiY29udGVudC10eXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgIFwieC1wb3MtY2xpZW50LWtleVwiOiBcImYzZTA2N2NlLWJmOTMtNDE4ZS05ZmRhLTU2YmYxNjU3ZGM5M1wiLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBpbnN0YW5jZSA9IGF4aW9zLmNyZWF0ZSh7XG4gICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiBcImluY2x1ZGVcIixcbiAgICAgICAgfSk7XG4gICAgICAgIGluc3RhbmNlXG4gICAgICAgICAgLnBvc3QoTUFJTl9VUkwuQUREX0RPQ1VNRU5ULCAkZGF0YSwgeyBoZWFkZXJzIH0pXG4gICAgICAgICAgLnRoZW4oKGUpID0+IHtcbiAgICAgICAgICAgIGlmIChlLmRhdGEuc3VjY2Vzcykge1xuICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcuY2xvc2UoKTtcbiAgICAgICAgICAgICAgdGhpcy5vcGVuTm90aWZpY2F0aW9uKFxuICAgICAgICAgICAgICAgIFwiU2F1dmVnYXJkZXJcIixcbiAgICAgICAgICAgICAgICBcIkxlIGRvY3VtZW50IGEgw6l0w6kgU2F1dmVnYXJkZXJcIixcbiAgICAgICAgICAgICAgICBcInN1Y2Nlc3NcIlxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKChlKSA9PiBjb25zb2xlLmxvZyhlKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgfVxuICAgIH0sXG4gIH0sXG59O1xuPC9zY3JpcHQ+XG48c3R5bGUgc2NvcGVkPlxuLnYtYXBwbGljYXRpb24tLXdyYXAge1xuYmFja2dyb3VuZDojZTVFNUU1XG59PC9zdHlsZT5cbiIsIjx0ZW1wbGF0ZT5cbiAgPGRpdj5cbiAgICA8ZGl2PlxuICAgICAgPCEtLVNpZGUgYmFyIC0tPlxuICAgICAgPEJhc2UtTmF2IC8+XG4gICAgICA8ZGl2IGNsYXNzPVwibWFpblwiPlxuICAgICAgICA8bG9hZGVyIHYtaWY9XCIhYWNjb3VudFwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwdC0wIHAtNSBwbC0zIHByLTNcIiB2LWVsc2U+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XG4gICAgICAgICAgICA8IS0tQ29tcG9uZW50IHVzZXIgLS0+XG4gICAgICAgICAgICA8dXNlciAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8aDQ+TW9uIDxzcGFuIGNsYXNzPVwidGl0bGUtcGFnZVwiPlByb2ZpbDwvc3Bhbj48L2g0PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBwbC0wIG1iLTNcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDwhLS1DaGFuZ2VtZW50IGRlIG1vdCBkZSBwYXNzZSAtLT5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5fYmxvY2tcIiBAY2xpY2s9XCJzZW5kTWFpbFwiPlxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIm1kaSBtZGktbG9ja1wiPjwvaT4gQ2hhbmdlciBsZSBtb3QgZGUgcGFzc2VcbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTQgcGwtMFwiPlxuICAgICAgICAgICAgICAgICAgPHNtYWxsPlxuICAgICAgICAgICAgICAgICAgICBUb3V0ZXMgbGVzIGNvbW11bmljYXRpb25zIGV0IGxlcyBub3RpZmljYXRpb25zIGQnYWN0aXZpdMOpIGRlXG4gICAgICAgICAgICAgICAgICAgIHZvdHJlIGNvbXB0ZSB2b3VzIHNlcm9udCBlbnZvecOpZXMgc3VyIHZvdHJlIGFkcmVzc2UgZS1tYWlsLlxuICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCBjb2wtbWQtNiBwbC0wXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWw+QWRyZXNzZSBlbWFpbDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgOnZhbHVlPVwiYWNjb3VudC5lbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBmb3JtLWdyb3VwIHBsLTBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbD5QcsOpbm9tPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21cIlxuICAgICAgICAgICAgICAgICAgICA6dmFsdWU9XCJhY2NvdW50LmZpcnN0TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBmb3JtLWdyb3VwIHBsLTBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbD5Ob208L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgICAgICAgICAgIDp2YWx1ZT1cImFjY291bnQubGFzdE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgZm9ybS1ncm91cCBwbC0wXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWw+RGF0ZSBkZSBuYWlzc2FuY2U8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgICAgICAgICAgIDp2YWx1ZT1cImFjY291bnQuYmlydGhEYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgcmVhZG9ubHlcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgY29sLW1kLTYgcGwtMFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPiBUw6lsw6lwaG9uZSBtb2JpbGU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgICAgICAgICAgIDp2YWx1ZT1cImFjY291bnQubW9iaWxlUGhvbmVcIlxuICAgICAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgZm9ybS1ncm91cCBwbC0wXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWw+VmlsbGU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgICAgICAgICAgIDp2YWx1ZT1cImFjY291bnQuYWRkcmVzc2VzWzBdLmNpdHlcIlxuICAgICAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgZm9ybS1ncm91cCBwbC0wXCI+XG4gICAgICAgICAgICAgICAgICA8bGFiZWw+Q29kZSBQb3N0YWw8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC1zbVwiXG4gICAgICAgICAgICAgICAgICAgIDp2YWx1ZT1cImFjY291bnQuYWRkcmVzc2VzWzBdLnppcFwiXG4gICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIGNvbC1tZC02IHBsLTBcIj5cbiAgICAgICAgICAgICAgICAgIDxsYWJlbD5QYXlzPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgIDxzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgOmNsYXNzPVwiYGZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc21gXCJcbiAgICAgICAgICAgICAgICAgICAgdi1tb2RlbD1cIm5hdGlvbmFsaXR5MlwiXG4gICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICB2LWZvcj1cIihpdGVtLCBrZXkpIGluIGFsbENvdW50cmllc1wiXG4gICAgICAgICAgICAgICAgICAgICAgOmtleT1cImtleVwiXG4gICAgICAgICAgICAgICAgICAgICAgOnZhbHVlPVwiaXRlbS5zaG9ydE5hbWVcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGZvcm0tZ3JvdXAgcGwtMFwiPlxuICAgICAgICAgICAgICAgICAgPGxhYmVsPkFkcmVzc2U8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgPHRleHRhcmVhXG4gICAgICAgICAgICAgICAgICAgIHJvd3M9XCJcIlxuICAgICAgICAgICAgICAgICAgICBjb2xzPVwiXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLXNtXCJcbiAgICAgICAgICAgICAgICAgICAgOnZhbHVlPVwiYWNjb3VudC5hZGRyZXNzZXNbMF0uYWRkcmVzczFcIlxuICAgICAgICAgICAgICAgICAgICByZWFkb25seVxuICAgICAgICAgICAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5pbXBvcnQgQmFzZU5hdiBmcm9tIFwiLi9jb21wb25lbnRzL05hdmJhci9CYXNlU2lkZUJhci52dWVcIjtcbmltcG9ydCBVc2VyIGZyb20gXCIuL2NvbXBvbmVudHMvVXNlci52dWVcIjtcbmltcG9ydCBzdG9yZSBmcm9tIFwiLi4vc3RvcmVcIjtcbmltcG9ydCBMb2FkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9Mb2FkZXIudnVlXCI7XG5pbXBvcnQgTUFJTl9VUkwgZnJvbSBcIi4uLy4uL2NvbW1vbi5qcy9tYWluVXJsXCI7XG5pbXBvcnQgeyBoZWFkZXJzIH0gZnJvbSBcIi4uLy4uL2NvbW1vbi5qcy9oZWFkZXJcIjtcbmltcG9ydCBheGlvcyBmcm9tIFwiYXhpb3NcIjtcbmNvbnN0IGFsbENvdW50cmllcyA9IHJlcXVpcmUoXCJjb3VudHJ5Y2l0eXN0YXRlanNvblwiKTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc3RvcmUsXG4gIGNvbXBvbmVudHM6IHtcbiAgICBCYXNlTmF2LFxuICAgIExvYWRlcixcbiAgICBVc2VyLFxuICB9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBhbGxDb3VudHJpZXM6IGFsbENvdW50cmllcy5nZXRDb3VudHJpZXMoKSxcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGFjY291bnQ6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLnN0YXRlLmFjY291bnQ7XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRBY2NvdW50XCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgbmF0aW9uYWxpdHkyOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5hY2NvdW50XG4gICAgICAgICAgPyB0aGlzLiRzdG9yZS5zdGF0ZS5hY2NvdW50LmFkZHJlc3Nlc1swXS5jb3VudHJ5XG4gICAgICAgICAgOiBcIlwiO1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHt9LFxuICAgIH0sXG4gICAgbG9hZGluZzoge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRMb2FkaW5nO1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0TG9hZGluZ1wiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBtZXRob2RzOiB7XG4gICAgbG9hZCgpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRoaXMuJHZzLmxvYWRpbmcoe1xuICAgICAgICBiYWNrZ3JvdW5kOiBcIiM3YTc2Y2JcIixcbiAgICAgICAgY29sb3I6IFwiI2ZmZlwiLFxuICAgICAgICB0ZXh0OiBcIlZldWlsbGV6IHBhdGllbnRlclwiLFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBvcGVuTm90aWZpY2F0aW9uKHRpdGxlLCB0ZXh0LCBjb2xvciwgcG9zaXRpb24gPSBcInRvcC1yaWdodFwiLCBpY29uID0gbnVsbCkge1xuICAgICAgY29uc3Qgbm90aSA9IHRoaXMuJHZzLm5vdGlmaWNhdGlvbih7XG4gICAgICAgIGljb24sXG4gICAgICAgIGNvbG9yLFxuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHRleHQsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIHNlbmRNYWlsKCkge1xuICAgICAgLy9Mb2FkaW5nXG4gICAgICB0aGlzLmxvYWQoKTtcblxuICAgICAgY29uc3QgaW5zdGFuY2UgPSBheGlvcy5jcmVhdGUoe1xuICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IFwiaW5jbHVkZVwiLFxuICAgICAgfSk7XG5cbiAgICAgIC8vTGUgdG9rZW5cbiAgICAgIGNvbnN0IG15VG9rZW4gPSBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwidG9rZW5cIilcbiAgICAgICAgPyBzZXNzaW9uU3RvcmFnZS5nZXRJdGVtKFwidG9rZW5cIilcbiAgICAgICAgOiB0aGlzLnRva2VuO1xuXG4gICAgICAvL0hlYWRlciBkZSBsYSByZXF1ZXRlXG4gICAgICBjb25zdCBoZWFkZXIgPSBoZWFkZXJzKG15VG9rZW4pO1xuXG4gICAgICAvL2xlcyBEYXRhc1xuICAgICAgY29uc3QgJGRhdGEgPSB7XG4gICAgICAgIG1vYmlsZVBob25lOiB0aGlzLmFjY291bnQubW9iaWxlUGhvbmUsXG4gICAgICAgIHJldHVyblVybDogd2luZG93LmxvY2F0aW9uLm9yaWdpbiArIFwiL3Jlc2V0XCIsXG4gICAgICB9O1xuXG4gICAgICAvL0xhIHJlcXVldGVcbiAgICAgIGluc3RhbmNlXG4gICAgICAgIC5wb3N0KE1BSU5fVVJMLkVNQUlMX01QLCAkZGF0YSwgaGVhZGVyKVxuICAgICAgICAudGhlbigoZSkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZy5jbG9zZSgpO1xuICAgICAgICAgIHRoaXMub3Blbk5vdGlmaWNhdGlvbihcbiAgICAgICAgICAgIFwiQ2hhbmdlbWVudCBkZSBtb3QgZGUgcGFzc2VcIixcbiAgICAgICAgICAgIFwiTm91cyB2b3VzIGF2b25zIGVudm95w6kgdW4gZW1haWwgZGUgY2hhbmdlbWVudCBkZSBtb3QgZGUgcGFzc2VcIlxuICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICAgIGNvbnN0ICRkYXRhID0gZS5yZXNwb25zZS5yZXF1ZXN0LnJlc3BvbnNlO1xuICAgICAgICAgIGNvbnN0IHggPSBKU09OLnBhcnNlKCRkYXRhKTtcbiAgICAgICAgICB0aGlzLm9wZW5Ob3RpZmljYXRpb24oXCJDaGFuZ2VtZW50IGRlIG1vdCBkZSBwYXNzZVwiLCB4LCBcImRhbmdlclwiKTtcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgfSxcbn07XG48L3NjcmlwdD5cbjxzdHlsZSBzY29wZWQ+XG4udi1hcHBsaWNhdGlvbi0td3JhcCB7XG4gIGJhY2tncm91bmQ6ICNlNWU1ZTU7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLXNtLTEyIHAtMFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTcgY29scy0xMiBjb2wtc20tMTIgY29sLXhzLTEyIHByLTAgcGwtMCBwdC0wIHBiLTBcIj5cbiAgICAgICAgICA8bWFpbiBjbGFzcz1cImZvcm0tc2lnbmluXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZWZ0XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtYi0xMFwiPlxuICAgICAgICAgICAgICAgIDxpbWcgc3JjPVwiL2ltYWdlcy92NGFsbC1sb2dvLnBuZ1wiIHdpZHRoPVwiMTAwcHhcIiAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiB2LWlmPVwic3RhdHVzPT0nc3VjY2VzcydcIj5cbiAgICAgICAgICAgICAgICA8aDEgY2xhc3M9XCJoMyBtYi0zIGZ3LW5vcm1hbCB0ZXh0LWNlbnRlciB0ZXh0LXN1Y2Nlc3NcIj5QYWllbWVudCBhY2NlcHTDqTwvaDE+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgVm90cmUgcGFpZW1lbnQgZXN0IGVmZmVjdHXDqSBhdmVjIHN1Y2PDqHMuPGJyIC8+XG4gICAgICAgICAgICAgICAgIENsaXF1ZXIgc3VyIHJldG91ciBwb3VyIHJldG91cm5lciDDoCB2b3RyZSBlc3BhY2UgcGVyc29uZWxsZSAhXG4gICAgICAgICAgICAgICAgICA8YnIgLz48YnIgLz5cbiAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuX2Jsb2NrXCIgQGNsaWNrPVwiYmFja1wiPlJldG91cjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgdi1lbHNlLWlmPVwic3RhdHVzPT0nZmFpbGVkJ1wiPlxuICAgICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cImgzIG1iLTMgZnctbm9ybWFsIHRleHQtY2VudGVyIHRleHQtZGFuZ2VyXCI+RXJyZXVyIGRlIHBhaWVtZW50PC9oMT5cbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgIFZvdHJlIHBhaWVtZW50IG4nYSBwYXMgYWJvdXRp4oCmPGJyIC8+XG4gICAgICAgICAgICAgICAgICBOb3VzIHZvdXMgaW52aXRvbnMgw6AgcmVjb21tZW5jZXIgbCdvcMOpcmF0aW9uIG91IGNvbnRhY3RlciBsZSBzdXBwb3J0IGNsaWVudFxuICAgICAgICAgICAgICAgICAgPGJyIC8+PGJyIC8+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuX2Jsb2NrXCIgQGNsaWNrPVwiYmFja1wiPlJldG91cjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9tYWluPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy01IGNvbHMtMTIgYmFjayBwdC0wIHBiLTBcIj5cbiAgICAgICAgICA8bG9naW4tYW5pbWF0ZSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XG5pbXBvcnQgTG9naW5BbmltYXRlIGZyb20gXCIuLi8uLi9Mb2dpbkFuaW1hdGUudnVlXCI7XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY29tcG9uZW50czogeyBMb2dpbkFuaW1hdGV9LFxuICBkYXRhKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjb2RlOiBcIlwiLFxuICAgICAgc3RhdHVzOiBcIlwiLFxuICAgICAgbW9iaWxlOiBcIlwiLFxuICAgICAgYW1vdW50OiBcIlwiLFxuICAgIH07XG4gIH0sXG4gIG1vdW50ZWQoKSB7XG4gICAgdGhpcy5zdGF0dXMgPSB0aGlzLmdldFF1ZXJ5KFwic3RhdHVzXCIpO1xuICAgIHRoaXMuYW1vdW50ID0gdGhpcy5nZXRRdWVyeShcImFtb3VudFwiKTtcbiAgfSxcbiAgYmVmb3JlTW91bnQoKSB7XG4gICAgICBjb25zb2xlLmNsZWFyKClcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGxvYWQoKSB7XG4gICAgICB0aGlzLmxvYWRpbmcgPSB0aGlzLiR2cy5sb2FkaW5nKHtcbiAgICAgICAgYmFja2dyb3VuZDogXCIjN2E3NmNiXCIsXG4gICAgICAgIGNvbG9yOiBcIiNmZmZcIixcbiAgICAgICAgdGV4dDogXCJWZXVpbGxleiBwYXRpZW50ZXJcIixcbiAgICAgICAgdHlwZTogXCJzY2FsZVwiLFxuICAgICAgfSk7XG4gICAgfSxcblxuICAgIGJhY2soKSB7XG4gICAgICB0aGlzLiRyb3V0ZXIuYmFjaygpXG4gICAgfSxcbiAgICBvcGVuTm90aWZpY2F0aW9uKHRpdGxlLCB0ZXh0LCBjb2xvciwgcG9zaXRpb24gPSBcInRvcC1yaWdodFwiLCBpY29uID0gbnVsbCkge1xuICAgICAgY29uc3Qgbm90aSA9IHRoaXMuJHZzLm5vdGlmaWNhdGlvbih7XG4gICAgICAgIGljb24sXG4gICAgICAgIGNvbG9yLFxuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgdGl0bGUsXG4gICAgICAgIHRleHQsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIGdldFF1ZXJ5KHEpIHtcbiAgICAgIHJldHVybiAod2luZG93LmxvY2F0aW9uLnNlYXJjaC5tYXRjaChcbiAgICAgICAgbmV3IFJlZ0V4cChcIls/Jl1cIiArIHEgKyBcIj0oW14mXSspXCIpXG4gICAgICApIHx8IFssIG51bGxdKVsxXTtcbiAgICB9LFxuICB9LFxufTtcbjwvc2NyaXB0PlxuXG48c3R5bGUgc2NvcGVkPlxuLmxhc3RfYmxvY2sge1xuICBwYWRkaW5nOiAxNXB4O1xuICBwYWRkaW5nLWxlZnQ6IDU2cHg7XG4gIHBhZGRpbmctcmlnaHQ6IDU2cHg7XG59XG4uY2FyZCB7XG4gIHBhZGRpbmc6IDBweDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xufVxuLmlucHV0LWdyb3VwLXRleHQge1xuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogMC4yNXJlbTtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDAuMjVyZW07XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlci1sZWZ0OiAwcHg7XG4gIHBhZGRpbmc6IDUuNXB4O1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIC8qIGxpbmUtaGVpZ2h0OiAxLjU7ICovXG4gIGNvbG9yOiAjMjEyNTI5O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3JkZXI6IDFweCBzb2xpZCAjY2VkNGRhO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIC8qIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07ICovXG59XG4uYmFjayB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBiYWNrZ3JvdW5kOiAjYzhkZGZiO1xufVxuLmNvbnQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJodHRwczovL3d3dy5nb29nbGUuY29tL3VybD9zYT1pJnVybD1odHRwcyUzQSUyRiUyRnd3dy5wZXJmZWN0c2VydmUuY29tJTJGYW5zd2VyLXNlcnZpY2UlMkZsYW5kaW5nLWhlcm8tYmFja2dyb3VuZCUyRiZwc2lnPUFPdlZhdzN3NUVsVC1kNlgyUkx1UXNhVS1LclEmdXN0PTE2NDU5MTczOTc1NzEwMDAmc291cmNlPWltYWdlcyZjZD12ZmUmdmVkPTBDQWdRalJ4cUZ3b1RDT2lIeExMLW1fWUNGUUFBQUFBZEFBQUFBQkFLXCIpO1xufVxuLmZvcm0tc2lnbmluIHtcbiAgLyptYXgtd2lkdGg6IDQwMHB4OyovXG4gIGZsZXg6IDEwMCU7XG4gIGJvcmRlci1yaWdodDogMHB4O1xuICBkaXNwbGF5OiBmbGV4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYmFja2dyb3VuZDogI2ZmZjtcbn1cblxuLmZvcm0tc2lnbmluIC5jaGVja2JveCB7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG59XG5cbi5mb3JtLXNpZ25pbiAuZm9ybS1mbG9hdGluZzpmb2N1cy13aXRoaW4ge1xuICB6LWluZGV4OiAyO1xufVxuXG4uZm9ybS1zaWduaW4gaW5wdXRbdHlwZT1cImVtYWlsXCJdIHtcbiAgbWFyZ2luLWJvdHRvbTogLTFweDtcbiAgYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDA7XG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XG59XG5cbi5mb3JtLXNpZ25pbiBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0sXG4uZm9ybS1zaWduaW4gaW5wdXRbdHlwZT1cInRleHRcIl0sXG4uZm9ybS1zaWduaW4gaW5wdXRbdHlwZT1cInRlbFwiXSB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xuICBib3JkZXItcmlnaHQ6IDA7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuLmJ1dHRvbi1zaWduIHtcbiAgYmFja2dyb3VuZDogIzhhYjdmODtcbiAgYm9yZGVyLWNvbG9yOiAjOGFiN2Y4O1xuICBjb2xvcjogI2ZmZjtcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XG59XG5hIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxucCB7XG4gIG1hcmdpbi1ib3R0b206IDBweDtcbiAgbGluZS1oZWlnaHQ6IDMwcHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbmlucHV0LFxuaW5wdXQ6Zm9jdXMge1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBmb250LXNpemU6IDgwJTtcbn1cbmlucHV0OmZvY3VzIHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2U4ZjBmZTtcbn1cbiNiYXNpYy1hZGRvbjEge1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4ucm93IHtcbiAgbWFyZ2luOiAwcHg7XG59XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQyNXB4KSB7XG4gIC5iYWNrLFxuICAuZm9ybS1zaWduaW4ge1xuICAgIGhlaWdodDogNTB2aDtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5iYWNrLFxuICAuZm9ybS1zaWduaW4ge1xuICAgIGhlaWdodDogNTB2aDtcbiAgfVxuICAudi1hcHBsaWNhdGlvbi0td3JhcCB7XG4gICAgYmFja2dyb3VuZDogI2ZmZjtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5iYWNrLFxuICAuZm9ybS1zaWduaW4ge1xuICAgIGhlaWdodDogMTAwdmg7XG4gIH1cbn1cbjwvc3R5bGU+XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXY+XG4gICAgPEJhc2VOYXYgLz5cbiAgICA8ZGl2IGNsYXNzPVwibWFpblwiPlxuICAgICAgPGxvYWRlciB2LWlmPVwiIWFjY291bnRcIiAvPlxuICAgICAgPGRpdiBjbGFzcz1cInBsLTQgcHItNFwiIHYtZWxzZT5cbiAgICAgICAgPGVtcHR5IHYtaWY9XCJjYXJkLmxlbmd0aDwxXCI+PC9lbXB0eT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiICB2LWlmPVwiY2FyZC5sZW5ndGg+MFwiPlxuICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cbiAgICAgICAgICAgIDx1c2VyIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgIDxoND5NZXMgPHNwYW4gY2xhc3M9XCJ0aXRsZS1wYWdlXCI+U2VydmljZXMgJiBPcHRpb25zPC9zcGFuPjwvaDQ+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi01XCI+XG4gICAgICAgICAgICAgIDxoNiBjbGFzcz1cInRleHQtbXV0ZWQgbWItMFwiPlxuICAgICAgICAgICAgICAgIETDqWNsYXJhdGlvbiBkw6lmaW5pdGl2ZSBkZSB2b2wgb3UgcGVydGUgZGUgbGEgY2FydGVcbiAgICAgICAgICAgICAgPC9oNj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bl9vdXRsaW5lXCIgQGNsaWNrPVwibG9zdChjYXJkWzBdKVwiPlxuICAgICAgICAgICAgICAgIETDqWNsYXJlclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNVwiPlxuICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJ0ZXh0LW11dGVkIG1iLTBcIj5cbiAgICAgICAgICAgICAgICBDb25zdWx0YXRpb24gZHUgQ29kZSBQaW5cbiAgICAgICAgICAgICAgPC9oNj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bl9vdXRsaW5lXCIgQGNsaWNrPVwidmlld1BpbihjYXJkWzBdKVwiPkNvbnN1bHRlcjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlciBtYi01XCI+XG4gICAgICAgICAgICAgIDxoNiBjbGFzcz1cInRleHQtbXV0ZWQgbWItMFwiPk1vZGlmaWNhdGlvbiBkdSBQaW48L2g2PlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuX291dGxpbmVcIiBAY2xpY2s9XCJwaW4oY2FyZFswXSlcIj5cbiAgICAgICAgICAgICAgICBNb2RpZmllclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNVwiPlxuICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJ0ZXh0LW11dGVkIG1iLTBcIiA+QmxvY2FnYWdlIC8gRMOpYmxvY2FnZSBkZSBsYSBjYXJ0ZTwvaDY+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5fb3V0bGluZVwiIEBjbGljaz1cImJsb2NrZWQoY2FyZFswXSlcIiB2LWlmPVwiY2FyZFswXS5zdGF0dXM9PSdhY3RpdmUnXCI+QmxvcXVlcjwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuX291dGxpbmVcIiBAY2xpY2s9XCJibG9ja2VkKGNhcmRbMF0pXCIgdi1pZj1cImNhcmRbMF0uc3RhdHVzPT0nYmxvY2tlZCdcIj5BY3RpdmVyPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXIgbWItNVwiPlxuICAgICAgICAgICAgICA8aDYgY2xhc3M9XCJ0ZXh0LW11dGVkIG1iLTBcIj5SZW1wbGFjZXIgbWEgY2FydGU8L2g2PlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuX291dGxpbmVcIiBAY2xpY2s9XCJhY3RpdmVDYXJkXCI+UmVtcGxhY2VyPC9idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8IS0tIERpYWxvZyAtLT5cbiAgICAgICAgICA8dnMtZGlhbG9nXG4gICAgICAgICAgICBibHVyXG4gICAgICAgICAgICB2LW1vZGVsPVwiYWN0aXZlXCJcbiAgICAgICAgICAgIHByZXZlbnQtY2xvc2VcbiAgICAgICAgICAgIHNjcm9sbFxuICAgICAgICAgICAgb3ZlcmZsb3ctaGlkZGVuXG4gICAgICAgICAgICB3aWR0aD1cIjI1MHB4XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8dGVtcGxhdGUgI2hlYWRlcj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgPGg0IGNsYXNzPVwibm90LW1hcmdpblwiPlxuICAgICAgICAgICAgICAgICAgPGI+e3sgdGl0bGUgfX08L2I+XG4gICAgICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgbXQtMyBtYi0yXCI+XG4gICAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi9pbWFnZXMvdmF6aXZhLmpwZWdcIiB3aWR0aD1cIjE1JVwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC90ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxkZXRhaWwtY2FyZCA6ZGF0YT1cImRhdGFcIiB2LWlmPVwic3RhdGUgPT0gJ2RldGFpbHMnXCIgLz5cbiAgICAgICAgICAgIDxzdGF0dXMgdi1lbHNlLWlmPVwic3RhdGUgPT0gJ3N0YXR1cydcIiA6Y2FyZFRva2VuPVwidWlkY2FyZC50b2tlblwiIC8+XG4gICAgICAgICAgICA8cGluIHYtZWxzZS1pZj1cInN0YXRlID09ICd2aWV3LXBpbidcIiA6Y2FyZFRva2VuPVwidWlkY2FyZC50b2tlblwiIC8+XG4gICAgICAgICAgICA8dmlldy1waW4gdi1lbHNlLWlmPVwic3RhdGUgPT0gJ3BpbidcIiA6Y2FyZFRva2VuPVwidWlkY2FyZC50b2tlblwiIC8+XG4gICAgICAgICAgICA8YmxvY2tlZC1jYXJkXG4gICAgICAgICAgICAgIHYtZWxzZS1pZj1cInN0YXRlID09ICdibG9ja2VkJ1wiXG4gICAgICAgICAgICAgIDpjYXJkVG9rZW49XCJ1aWRjYXJkLnRva2VuXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bG9zdC1jYXJkIHYtZWxzZS1pZj1cInN0YXRlID09ICdsb3N0J1wiIDpjYXJkVG9rZW49XCJ1aWRjYXJkLnRva2VuXCIgLz5cbiAgICAgICAgICAgIDxjb21tYW5kZS1jYXJkIHYtZWxzZS1pZj1cInN0YXRlID09ICduZXdDYXJkJ1wiIC8+XG4gICAgICAgICAgICA8dHJhbnNhY3Rpb25zXG4gICAgICAgICAgICAgIHYtZWxzZS1pZj1cInN0YXRlID09ICd0cmFuc2FjdGlvbidcIlxuICAgICAgICAgICAgICA6dXNlcnM9XCJ0cmFuc1wiXG4gICAgICAgICAgICAgIDpjdXJyZW5jeT1cImN1cnJlbmN5XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8bmV3LWNhcmQgdi1lbHNlIC8+XG4gICAgICAgICAgPC92cy1kaWFsb2c+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC90ZW1wbGF0ZT5cbjxzY3JpcHQ+XG5pbXBvcnQgeyBGYWRlVHJhbnNpdGlvbiB9IGZyb20gXCJ2dWUyLXRyYW5zaXRpb25zXCI7XG5pbXBvcnQgQmFzZU5hdiBmcm9tIFwiLi4vY29tcG9uZW50cy9OYXZiYXIvQmFzZVNpZGVCYXIudnVlXCI7XG5pbXBvcnQgTG9hZGVyIGZyb20gXCIuLi9jb21wb25lbnRzL0xvYWRlci52dWVcIjtcbmltcG9ydCBzdG9yZSBmcm9tIFwiLi4vLi4vc3RvcmVcIjtcbmltcG9ydCBQaW4gZnJvbSBcIi4uL2NhcnRlcy9waW4udnVlXCI7XG5pbXBvcnQgVmlld1BpbiBmcm9tIFwiLi4vY2FydGVzL3ZpZXdQaW4udnVlXCI7XG5pbXBvcnQgTmV3Q2FyZCBmcm9tIFwiLi4vY2FydGVzL25ld0NhcmQudnVlXCI7XG5pbXBvcnQgQ29tbWFuZGVDYXJkIGZyb20gXCIuLi9jYXJ0ZXMvY29tbWFuZGVDYXJkLnZ1ZVwiO1xuaW1wb3J0IEJsb2NrZWRDYXJkIGZyb20gXCIuLi9jYXJ0ZXMvYmxvY2tlZENhcmQudnVlXCI7XG5pbXBvcnQgTG9zdENhcmQgZnJvbSBcIi4uL2NhcnRlcy9sb3N0Q2FyZC52dWVcIjtcbmltcG9ydCBFbXB0eSBmcm9tIFwiLi4vY29tcG9uZW50cy9FbXB0eS52dWVcIlxuaW1wb3J0IFVzZXIgZnJvbSBcIi4uL2NvbXBvbmVudHMvVXNlci52dWVcIjtcblxuZXhwb3J0IGRlZmF1bHQge1xuICBzdG9yZSxcbiAgY29tcG9uZW50czoge1xuICAgIEZhZGVUcmFuc2l0aW9uLFxuICAgIEJhc2VOYXYsXG4gICAgTG9hZGVyLFxuICAgIFBpbixcbiAgICBDb21tYW5kZUNhcmQsXG4gICAgVmlld1BpbixcbiAgICBOZXdDYXJkLFxuICAgIEJsb2NrZWRDYXJkLFxuICAgIExvc3RDYXJkLFxuICAgIEVtcHR5LFxuICAgIFVzZXJcbiAgfSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6IFwiXCIsXG4gICAgICBzdGF0ZTogXCJcIixcbiAgICB9O1xuICB9LFxuICBjb21wdXRlZDoge1xuICAgIGFjdGl2ZToge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuYWN0aXZlO1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0QWN0aXZlXCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gICAgYWNjb3VudDoge1xuICAgICAgZ2V0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuc3RhdGUuYWNjb3VudDtcbiAgICAgIH0sXG4gICAgICBzZXQodmFsKSB7XG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldEFjY291bnRcIiwgdmFsKTtcbiAgICAgIH0sXG4gICAgfSxcbiAgICBjYXJkOiB7XG4gICAgICBnZXQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5zdGF0ZS5jYXJkO1xuICAgICAgfSxcbiAgICAgIHNldCh2YWwpIHtcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0Q2FyZFwiLCB2YWwpO1xuICAgICAgfSxcbiAgICB9LFxuICAgIHVpZGNhcmQ6IHtcbiAgICAgIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLnN0YXRlLnVpZENhcmQ7XG4gICAgICB9LFxuICAgICAgc2V0KHZhbCkge1xuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRVaWRDYXJkXCIsIHZhbCk7XG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICBsb2FkKCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdGhpcy4kdnMubG9hZGluZyh7XG4gICAgICAgIGJhY2tncm91bmQ6IFwiIzdhNzZjYlwiLFxuICAgICAgICBjb2xvcjogXCIjZmZmXCIsXG4gICAgICAgIHRleHQ6IFwiVmV1aWxsZXogcGF0aWVudGVyXCIsXG4gICAgICAgIHR5cGU6IFwic2NhbGVcIixcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgdmlld1BpbihpdGVtcykge1xuICAgICAgY29uc29sZS5sb2coaXRlbXMpO1xuICAgICAgdGhpcy5kYXRhID0gaXRlbXM7XG4gICAgICB0aGlzLnN0YXRlID0gXCJ2aWV3LXBpblwiO1xuICAgICAgdGhpcy50aXRsZSA9IFwiVm90cmUgY29kZSBwaW5cIjtcbiAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgICB9LFxuICAgIHBpbihpdGVtcykge1xuICAgICAgdGhpcy5kYXRhID0gaXRlbXM7XG4gICAgICB0aGlzLnN0YXRlID0gXCJwaW5cIjtcbiAgICAgIHRoaXMudGl0bGUgPSBcIlZvdHJlIG5vdXZlYXUgY29kZSBwaW5cIjtcbiAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgICB9LFxuICAgIGNvbW1hbmRlQ2FyZCgpIHtcbiAgICAgIHRoaXMudGl0bGUgPSBcIk5vdXZlbGxlIGNhcnRlXCI7XG4gICAgICB0aGlzLnN0YXRlID0gXCJuZXdDYXJkXCI7XG4gICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgfSxcbiAgICBjb21tYW5kZSgpIHtcbiAgICAgIHRoaXMuJHJvdXRlci5wdXNoKHsgbmFtZTogXCJjb21tYW5kZS1jYXJ0ZVwiIH0pO1xuICAgIH0sXG4gICAgcGFyYW1zKCkge1xuICAgICAgdGhpcy4kcm91dGVyLnB1c2goeyBuYW1lOiBcInBhcmFtZXRyZVwiIH0pO1xuICAgIH0sXG4gICAgbG9zdCgpIHtcbiAgICAgIHRoaXMuc3RhdGUgPSBcImxvc3RcIjtcbiAgICAgIHRoaXMudGl0bGUgPSBcIkTDqWNsYXJlciBjZXR0ZSBjYXJ0ZSBwZXJkdWUgb3Ugdm9sw6llXCI7XG4gICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgfSxcbiAgICBhY3RpdmVDYXJkKCkge1xuICAgICAgdGhpcy5zdGF0ZSA9IFwiYWN0aXZhdGlvblwiO1xuICAgICAgdGhpcy50aXRsZSA9IFwiUmVtcGxhY2VyIG1hIGNhcnRlXCI7XG4gICAgICB0aGlzLmFjdGl2ZSA9IHRydWU7XG4gICAgfSxcbiAgICBibG9ja2VkKGl0ZW0pIHtcbiAgICAgIHRoaXMuc3RhdGUgPSBcImJsb2NrZWRcIjtcbiAgICAgIHRoaXMudGl0bGUgPSBcIkJsb3F1ZXIgY2V0dGUgY2FydGVcIjtcbiAgICAgIHRoaXMuYWN0aXZlID0gdHJ1ZTtcbiAgICB9LFxuICB9LFxufTtcbjwvc2NyaXB0PlxuPHN0eWxlPlxuLmJ0bl9ibG9jayxcbi5idG5fb3V0bGluZSB7XG4gIG1pbi13aWR0aDogMTQ1cHg7XG59XG48L3N0eWxlPlxuIiwiXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5AaW1wb3J0IHVybChodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9TGF0bzo0MDAsNzAwKTtcblxuJGdyZWVuOiAjODZiYjcxO1xuJGJsdWU6ICM5NGMyZWQ7XG4kb3JhbmdlOiAjZTM4OTY4O1xuJGdyYXk6ICM5Mjk1OWU7XG5cbiosXG4qOmJlZm9yZSxcbio6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG5ib2R5IHtcbiAgYmFja2dyb3VuZDogI2M1ZGRlYjtcbiAgZm9udDogMTRweC8yMHB4IFwiTGF0b1wiLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgcGFkZGluZzogNDBweCAwO1xuICBjb2xvcjogd2hpdGU7XG59XG5cbi5jb250YWluZXIge1xuICBtYXJnaW46IDAgYXV0bztcbiAgd2lkdGg6IDc1MHB4O1xuICBiYWNrZ3JvdW5kOiAjZjVmNWY1O1xuICBib3JkZXItcmFkaXVzOiA1cHg7XG59XG5cbi5wZW9wbGUtbGlzdCB7XG4gIHdpZHRoOiAyNjBweDtcbiAgZmxvYXQ6IGxlZnQ7XG4gIGhlaWdodDogNTc1cHg7XG4gIG92ZXJmbG93OiBhdXRvO1xuXG4gIC5zZWFyY2gge1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgZGlzcGxheTogXCJub25lXCI7XG4gIH1cblxuICBpbnB1dCB7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBwYWRkaW5nOiAxNHB4O1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBiYWNrZ3JvdW5kOiAjNmE2Yzc1O1xuICAgIHdpZHRoOiA5MCU7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICB9XG5cbiAgLmZhLXNlYXJjaCB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxlZnQ6IC0yNXB4O1xuICB9XG5cbiAgdWwge1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgaGVpZ2h0OiA3NzBweDtcblxuICAgIGxpIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAyMHB4O1xuICAgICAgbWFyZ2luLWJvdHRvbTogMXB4O1xuICAgIH1cbiAgfVxuXG4gIGltZyB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gIH1cblxuICAuYWJvdXQge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi10b3A6IDhweDtcbiAgfVxuXG4gIC5hYm91dCB7XG4gICAgcGFkZGluZy1sZWZ0OiA4cHg7XG4gIH1cblxuICAuc3RhdHVzIHtcbiAgICBjb2xvcjogJGdyYXk7XG4gIH1cbn1cblxuLmNoYXQge1xuICB3aWR0aDogNDkwcHg7XG4gIGZsb2F0OiBsZWZ0O1xuICBiYWNrZ3JvdW5kOiAjZjJmNWY4O1xuICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNXB4O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNXB4O1xuXG4gIGNvbG9yOiAjNDM0NjUxO1xuXG4gIC5jaGF0LWhlYWRlciB7XG4gICAgcGFkZGluZzogMjBweDtcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgd2hpdGU7XG5cbiAgICBpbWcge1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgfVxuXG4gICAgLmNoYXQtYWJvdXQge1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDEwcHg7XG4gICAgICBtYXJnaW4tdG9wOiA2cHg7XG4gICAgfVxuXG4gICAgLmNoYXQtd2l0aCB7XG4gICAgICBmb250LXdlaWdodDogYm9sZDtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB9XG5cbiAgICAuY2hhdC1udW0tbWVzc2FnZXMge1xuICAgICAgY29sb3I6ICRncmF5O1xuICAgIH1cblxuICAgIC5mYS1zdGFyIHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIGNvbG9yOiAjZDhkYWRmO1xuICAgICAgZm9udC1zaXplOiAyMHB4O1xuICAgICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICB9XG4gIH1cblxuICAuY2hhdC1oaXN0b3J5IHtcbiAgICBwYWRkaW5nOiAzMHB4IDMwcHggMjBweDtcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgd2hpdGU7XG4gICAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICAgIGhlaWdodDogNTc1cHg7XG5cbiAgICAubWVzc2FnZS1kYXRhIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDE1cHg7XG4gICAgfVxuXG4gICAgLm1lc3NhZ2UtZGF0YS10aW1lIHtcbiAgICAgIGNvbG9yOiBsaWdodGVuKCRncmF5LCA4JSk7XG4gICAgICBwYWRkaW5nLWxlZnQ6IDZweDtcbiAgICB9XG5cbiAgICAubWVzc2FnZSB7XG4gICAgICBjb2xvcjogd2hpdGU7XG4gICAgICBwYWRkaW5nOiAxOHB4IDIwcHg7XG4gICAgICBsaW5lLWhlaWdodDogMjZweDtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDdweDtcbiAgICAgIG1hcmdpbi1ib3R0b206IDMwcHg7XG4gICAgICB3aWR0aDogOTAlO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgYm90dG9tOiAxMDAlO1xuICAgICAgICBsZWZ0OiA3JTtcbiAgICAgICAgYm9yZGVyOiBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgICAgY29udGVudDogXCIgXCI7XG4gICAgICAgIGhlaWdodDogMDtcbiAgICAgICAgd2lkdGg6IDA7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgICAgIGJvcmRlci1ib3R0b20tY29sb3I6ICRncmVlbjtcbiAgICAgICAgYm9yZGVyLXdpZHRoOiAxMHB4O1xuICAgICAgICBtYXJnaW4tbGVmdDogLTEwcHg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLm15LW1lc3NhZ2Uge1xuICAgICAgYmFja2dyb3VuZDogJGdyZWVuO1xuICAgIH1cblxuICAgIC5vdGhlci1tZXNzYWdlIHtcbiAgICAgIGJhY2tncm91bmQ6ICRibHVlO1xuXG4gICAgICAmOmFmdGVyIHtcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGJsdWU7XG4gICAgICAgIGxlZnQ6IDkzJTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAuY2hhdC1tZXNzYWdlIHtcbiAgICBwYWRkaW5nOiAzMHB4O1xuXG4gICAgdGV4dGFyZWEge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBib3JkZXI6IDFweCBzb2xpZCBncmF5O1xuICAgICAgcGFkZGluZzogMTBweCAyMHB4O1xuICAgICAgZm9udDogMTRweC8yMnB4IFwiTGF0b1wiLCBBcmlhbCwgc2Fucy1zZXJpZjtcbiAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICByZXNpemU6IG5vbmU7XG4gICAgfVxuXG4gICAgLmZhLWZpbGUtbyxcbiAgICAuZmEtZmlsZS1pbWFnZS1vIHtcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICAgIGNvbG9yOiBncmF5O1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIH1cblxuICAgIGJ1dHRvbiB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgICBjb2xvcjogJGJsdWU7XG4gICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBiYWNrZ3JvdW5kOiAjZjJmNWY4O1xuXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgY29sb3I6IGRhcmtlbigkYmx1ZSwgNyUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4ub25saW5lLFxuLm9mZmxpbmUsXG4ubWUge1xuICBtYXJnaW4tcmlnaHQ6IDNweDtcbiAgZm9udC1zaXplOiAxMHB4O1xufVxuXG4ub25saW5lIHtcbiAgY29sb3I6ICRncmVlbjtcbn1cblxuLm9mZmxpbmUge1xuICBjb2xvcjogJG9yYW5nZTtcbn1cblxuLm1lIHtcbiAgY29sb3I6ICRibHVlO1xufVxuXG4uYWxpZ24tbGVmdCB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5cbi5hbGlnbi1yaWdodCB7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuXG4uZmxvYXQtcmlnaHQge1xuICBmbG9hdDogcmlnaHQ7XG59XG5cbi5jbGVhcmZpeDphZnRlciB7XG4gIHZpc2liaWxpdHk6IGhpZGRlbjtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGZvbnQtc2l6ZTogMDtcbiAgY29udGVudDogXCIgXCI7XG4gIGNsZWFyOiBib3RoO1xuICBoZWlnaHQ6IDA7XG59XG4iLCI8dGVtcGxhdGU+XG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtc20tMTIgcC0wXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNyBjb2wtc20tNyBjb2wteHMtNyBwci0wIHBsLTBcIj5cbiAgICAgICAgICA8bWFpbiBjbGFzcz1cImZvcm0tc2lnbmluXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwianVzdGlmeS1jb250ZW50LWNlbnRlclwiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz1cIi9pbWFnZXMvdjRhbGwtbG9nby5wbmdcIiB3aWR0aD1cIjEwMHB4XCIgY2xhc3M9XCJtYi0xMFwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCI+XG4gICAgICAgICAgICAgIDxoNj5WZXVpbGxleiBwYXRpZW50ZXI8L2g2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9tYWluPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01IGJhY2tcIj5cbiAgICAgICAgICA8bG9naW4tYW5pbWF0ZSAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvdGVtcGxhdGU+XG48c2NyaXB0PlxuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xuaW1wb3J0IExvZ2luQW5pbWF0ZSBmcm9tIFwiLi9Mb2dpbkFuaW1hdGUudnVlXCI7XG5pbXBvcnQgc3RvcmUgZnJvbSBcIi4uL2FwcC9zdG9yZVwiO1xuZXhwb3J0IGRlZmF1bHQge1xuICBzdG9yZSxcbiAgY29tcG9uZW50czogeyBMb2dpbkFuaW1hdGUgfSxcbiAgY29tcHV0ZWQ6IHtcbiAgfSxcbiAgbWV0aG9kczoge1xuICAgIGdldFF1ZXJ5KHEpIHtcbiAgICAgIHJldHVybiAod2luZG93LmxvY2F0aW9uLnNlYXJjaC5tYXRjaChcbiAgICAgICAgbmV3IFJlZ0V4cChcIls/Jl1cIiArIHEgKyBcIj0oW14mXSspXCIpXG4gICAgICApIHx8IFssIG51bGxdKVsxXTtcbiAgICB9LFxuICB9LFxuICBtb3VudGVkKCkge1xuICAgIGNvbnN0IHRva2VuPXNlc3Npb25TdG9yYWdlLmdldEl0ZW0oXCJ0b2tlblwiKTtcbiAgICB0aGlzLiRyb3V0ZXIucHVzaCgndHJhbnNhY3Rpb25zJylcbiAgfSxcbn07XG48L3NjcmlwdD5cbjxzdHlsZSBzY29wZWQ+XG4uaW5wdXQtZ3JvdXAtdGV4dCB7XG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtO1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMC4yNXJlbTtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYm9yZGVyLWxlZnQ6IDBweDtcbiAgcGFkZGluZzogNS41cHg7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgLyogbGluZS1oZWlnaHQ6IDEuNTsgKi9cbiAgY29sb3I6ICMyMTI1Mjk7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNjZWQ0ZGE7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgLyogYm9yZGVyLXJhZGl1czogMC4yNXJlbTsgKi9cbn1cbi5iYWNrIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGJhY2tncm91bmQ6ICNjOGRkZmI7XG4gIGhlaWdodDogMTAwdmg7XG59XG4uY29udCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vdXJsP3NhPWkmdXJsPWh0dHBzJTNBJTJGJTJGd3d3LnBlcmZlY3RzZXJ2ZS5jb20lMkZhbnN3ZXItc2VydmljZSUyRmxhbmRpbmctaGVyby1iYWNrZ3JvdW5kJTJGJnBzaWc9QU92VmF3M3c1RWxULWQ2WDJSTHVRc2FVLUtyUSZ1c3Q9MTY0NTkxNzM5NzU3MTAwMCZzb3VyY2U9aW1hZ2VzJmNkPXZmZSZ2ZWQ9MENBZ1FqUnhxRndvVENPaUh4TEwtbV9ZQ0ZRQUFBQUFkQUFBQUFCQUtcIik7XG59XG4uZm9ybS1zaWduaW4ge1xuICAvKm1heC13aWR0aDogNDAwcHg7Ki9cbiAgZmxleDogMTAwJTtcbiAgYm9yZGVyLXJpZ2h0OiAwcHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBoZWlnaHQ6IDEwMHZoO1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4uZm9ybS1zaWduaW4gLmNoZWNrYm94IHtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbn1cblxuLmZvcm0tc2lnbmluIC5mb3JtLWZsb2F0aW5nOmZvY3VzLXdpdGhpbiB7XG4gIHotaW5kZXg6IDI7XG59XG5cbi5mb3JtLXNpZ25pbiBpbnB1dFt0eXBlPVwiZW1haWxcIl0ge1xuICBtYXJnaW4tYm90dG9tOiAtMXB4O1xuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMDtcbn1cblxuLmZvcm0tc2lnbmluIGlucHV0W3R5cGU9XCJwYXNzd29yZFwiXSxcbi5mb3JtLXNpZ25pbiBpbnB1dFt0eXBlPVwidGV4dFwiXSxcbi5mb3JtLXNpZ25pbiBpbnB1dFt0eXBlPVwidGVsXCJdIHtcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMDtcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XG4gIGJvcmRlci1yaWdodDogMDtcbiAgZm9udC1zaXplOiA4MCU7XG59XG4uYnV0dG9uLXNpZ24ge1xuICBiYWNrZ3JvdW5kOiAjOGFiN2Y4O1xuICBib3JkZXItY29sb3I6ICM4YWI3Zjg7XG4gIGNvbG9yOiAjZmZmO1xuICB0ZXh0LXRyYW5zZm9ybTogY2FwaXRhbGl6ZTtcbn1cbmEge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5wIHtcbiAgbWFyZ2luLWJvdHRvbTogMHB4O1xuICBsaW5lLWhlaWdodDogMTVweDtcbn1cbmlucHV0LFxuaW5wdXQ6Zm9jdXMge1xuICBiYWNrZ3JvdW5kOiAjZmZmO1xuICBmb250LXNpemU6IDgwJTtcbn1cbmlucHV0OmZvY3VzIHtcbiAgYm9yZGVyOiAxcHggc29saWQgI2U4ZjBmZTtcbn1cbiNiYXNpYy1hZGRvbjEge1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG59XG48L3N0eWxlPlxuIiwiPHRlbXBsYXRlPlxyXG4gIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1zbS0xMiBwLTBcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNyBjb2xzLTEyIGNvbC1zbS0xMiBjb2wteHMtMTIgcHItMCBwbC0wIHB0LTAgcGItMFwiPlxyXG4gICAgICAgICAgPG1haW4gY2xhc3M9XCJmb3JtLXNpZ25pblwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIG1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICA8aW1nIHNyYz1cIi9pbWFnZXMvdjRhbGwtbG9nby5wbmdcIiB3aWR0aD1cIjEwMHB4XCIgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IHYtaWY9XCJzdGF0dXM9PSdzdWNjZXNzJ1wiPlxyXG4gICAgICAgICAgICAgICAgPGgxIGNsYXNzPVwiaDMgbWItMyBmdy1ub3JtYWwgdGV4dC1jZW50ZXIgdGV4dC1zdWNjZXNzXCI+UGFpZW1lbnQgYWNjZXB0w6k8L2gxPlxyXG4gICAgICAgICAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICBWb3RyZSBwYWllbWVudCBlc3QgZWZmZWN0dcOpIGF2ZWMgc3VjY8Oocy48YnIgLz5cclxuICAgICAgICAgICAgICAgICBDbGlxdWVyIHN1ciBjb250aW51ZXIgcG91ciBwb3Vyc3VpdnJlIHZvdHJlIGluc2NyaXB0aW9uICFcclxuICAgICAgICAgICAgICAgICAgPGJyIC8+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5fYmxvY2tcIiBAY2xpY2s9XCJuZXh0XCI+Q29udGludWVyPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiB2LWVsc2UtaWY9XCJzdGF0dXM9PSdmYWlsZWQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICA8aDEgY2xhc3M9XCJoMyBtYi0zIGZ3LW5vcm1hbCB0ZXh0LWNlbnRlciB0ZXh0LWRhbmdlclwiPkVycmV1ciBkZSBwYWllbWVudDwvaDE+XHJcbiAgICAgICAgICAgICAgICA8cCBjbGFzcz1cInRleHQtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgVm90cmUgcGFpZW1lbnQgbidhIHBhcyBhYm91dGnigKY8YnIgLz5cclxuICAgICAgICAgICAgICAgICAgTm91cyB2b3VzIGludml0b25zIMOgIHJlY29tbWVuY2VyIGwnb3DDqXJhdGlvbiBvdSBiaWVuIGNvbnRhY3RlciBsZSBzdXBwb3J0IGNsaWVudFxyXG4gICAgICAgICAgICAgICAgICA8YnIgLz48YnIgLz5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bl9ibG9ja1wiIEBjbGljaz1cInByZXZcIj5SZWNvbW1lbmNlcjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgdi1lbHNlLWlmPVwic3RhdHVzPT0nZXhwaXJlZCdcIj5cclxuICAgICAgICAgICAgICAgICAgIDxoMSBjbGFzcz1cImgzIG1iLTMgZnctbm9ybWFsIHRleHQtY2VudGVyXCI+RXJyZXVyIGRlIHBhaWVtZW50PC9oMT5cclxuICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICBVbmUgZXJyZXVyIHMnZXN0IHByb2R1aXRl4oCmPGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgIE5vdXMgdm91cyBpbnZpdG9ucyDDoCBjb250YWN0ZXIgbGUgc3VwcG9ydCBjbGllbnRcclxuICAgICAgICAgICAgICAgICAgPGJyIC8+PGJyIC8+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0bl9ibG9ja1wiIEBjbGljaz1cImNyZWF0ZWRcIj5JbnNjcmlwdGlvbjwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG5fYmxvY2tcIiBAY2xpY2s9XCJyZXNldFwiPkplIG1lIGNvbm5lY3RlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9tYWluPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctNSBjb2xzLTEyIGJhY2sgcHQtMCBwYi0wXCI+XHJcbiAgICAgICAgICA8bG9naW4tYW5pbWF0ZSAvPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuaW1wb3J0IHN0b3JlIGZyb20gXCIuLi9zdG9yZVwiO1xyXG5pbXBvcnQgTUFJTl9VUkwgZnJvbSBcIi4uLy4uL2NvbW1vbi5qcy9tYWluVXJsXCI7XHJcbmltcG9ydCBDb25zdGFudCBmcm9tIFwiLi4vc3RvcmUvY29uc3RhbnRcIjtcclxuaW1wb3J0IGF4aW9zIGZyb20gXCJheGlvc1wiO1xyXG5pbXBvcnQgTG9naW5BbmltYXRlIGZyb20gXCIuLi9Mb2dpbkFuaW1hdGUudnVlXCI7XHJcbmltcG9ydCBBbmltYXRlTG9naW4gZnJvbSBcIi4uL0FuaW1hdGVMb2dpbi52dWVcIjtcclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIHN0b3JlLFxyXG4gIGNvbXBvbmVudHM6IHsgTG9naW5BbmltYXRlLCBBbmltYXRlTG9naW4gfSxcclxuICBkYXRhKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY29kZTogXCJcIixcclxuICAgICAgc3RhdHVzOiBcIlwiLFxyXG4gICAgICBtb2JpbGU6IFwiXCIsXHJcbiAgICAgIGFtb3VudDogXCJcIixcclxuICAgICAgdmVyaWZQaG9uZTogZmFsc2UsXHJcbiAgICAgIHRyYW5zbGF0aW9uczoge1xyXG4gICAgICAgIGNvdW50cnlTZWxlY3RvckxhYmVsOiBcIkNvZGUgcGF5c1wiLFxyXG4gICAgICAgIGNvdW50cnlTZWxlY3RvckVycm9yOiBcIkNob2lzaXIgdW4gcGF5c1wiLFxyXG4gICAgICAgIHBob25lTnVtYmVyTGFiZWw6IFwiTnVtw6lybyBkZSB0w6lsw6lwaG9uZVwiLFxyXG4gICAgICAgIGV4YW1wbGU6IFwiRXhlbXBsZSA6XCIsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gIH0sXHJcbiAgbW91bnRlZCgpIHtcclxuICAgIHRoaXMuc3RhdHVzID0gdGhpcy5nZXRRdWVyeShcInN0YXR1c1wiKTtcclxuICAgIHRoaXMuYW1vdW50ID0gdGhpcy5nZXRRdWVyeShcImFtb3VudFwiKTtcclxuICB9LFxyXG4gIHdhdGNoOiB7XHJcbiAgICBzdGF0dXModmFsKSB7XHJcbiAgICAgICAgaWYodmFsPT0nc3VjY2Vzcycpe1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N0YXR1cycsXCJzdWNjZXNzXCIpXHJcbiAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKFwiYW1vdW50XCIpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ3N0YXR1cycsXCJmYWlsZWRcIilcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG4gIH0sXHJcbiAgYmVmb3JlTW91bnQoKSB7XHJcbiAgICAgIGNvbnNvbGUuY2xlYXIoKVxyXG4gICAgLy9zZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKFwiYW1vdW50XCIpXHJcbiAgfSxcclxuICBjb21wdXRlZDoge1xyXG4gICAgcGhvbmU6IHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFBob25lO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsKSB7XHJcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0UGhvbmVcIiwgdmFsKTtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICBlbWFpbDoge1xyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0RW1haWw7XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRFbWFpbFwiLCB2YWwpO1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIHBhc3N3b3JkOiB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRQYXNzd29yZDtcclxuICAgICAgfSxcclxuICAgICAgc2V0KHZhbCkge1xyXG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldFBhc3N3b3JkXCIsIHZhbCk7XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgdWlkOiB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRVaWQ7XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRVaWRcIiwgdmFsKTtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICB0b2tlbjoge1xyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0VG9rZW47XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRUb2tlblwiLCB2YWwpO1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIHJlZnJlc2g6IHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFJlZnJlc2hUb2tlbjtcclxuICAgICAgfSxcclxuICAgICAgc2V0KHZhbCkge1xyXG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldFJlZnJlc2hUb2tlblwiLCB2YWwpO1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGNvZGVTdGF0dXM6IHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldENvZGVTdGF0dXM7XHJcbiAgICAgIH0sXHJcbiAgICAgIHNldCh2YWwpIHtcclxuICAgICAgICB0aGlzLiRzdG9yZS5jb21taXQoXCJzZXRDb2RlU3RhdHVzXCIsIHZhbCk7XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgbWVzc2FnZVN0YXR1czoge1xyXG4gICAgICBnZXQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0TWVzc2FnZVN0YXR1cztcclxuICAgICAgfSxcclxuICAgICAgc2V0KHZhbCkge1xyXG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldE1lc3NhZ2VTdGF0dXNcIiwgdmFsKTtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICB0ZXh0U3RhdHVzOiB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRUZXh0U3RhdHVzO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsKSB7XHJcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0VGV4dFN0YXR1c1wiLCB2YWwpO1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICAgIGxhdGl0dWRlOiB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRMYXRpdHVkZTtcclxuICAgICAgfSxcclxuICAgICAgc2V0KHZhbCkge1xyXG4gICAgICAgIHRoaXMuJHN0b3JlLmNvbW1pdChcInNldExhdGl0dWRlXCIsIHZhbCk7XHJcbiAgICAgIH0sXHJcbiAgICB9LFxyXG4gICAgbG9naXR1ZGU6IHtcclxuICAgICAgZ2V0KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldExvZ2l0dWRlO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsKSB7XHJcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0TG9naXR1ZGVcIiwgdmFsKTtcclxuICAgICAgfSxcclxuICAgIH0sXHJcbiAgICBsb2FkaW5nOiB7XHJcbiAgICAgIGdldCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRMb2FkaW5nO1xyXG4gICAgICB9LFxyXG4gICAgICBzZXQodmFsKSB7XHJcbiAgICAgICAgdGhpcy4kc3RvcmUuY29tbWl0KFwic2V0TG9hZGluZ1wiLCB2YWwpO1xyXG4gICAgICB9LFxyXG4gICAgfSxcclxuICB9LFxyXG4gIG1ldGhvZHM6IHtcclxuICAgIGxvYWQoKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZyA9IHRoaXMuJHZzLmxvYWRpbmcoe1xyXG4gICAgICAgIGJhY2tncm91bmQ6IFwiIzdhNzZjYlwiLFxyXG4gICAgICAgIGNvbG9yOiBcIiNmZmZcIixcclxuICAgICAgICB0ZXh0OiBcIlZldWlsbGV6IHBhdGllbnRlclwiLFxyXG4gICAgICAgIHR5cGU6IFwic2NhbGVcIixcclxuICAgICAgfSk7XHJcbiAgICB9LFxyXG4gICAgcHJldigpe1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShcInN0YXR1c1wiLFwiZmFpbGVkXCIpXHJcbiAgICAgIHRoaXMuJHJvdXRlci5wdXNoKFwiL2luc2NyaXB0aW9uXCIpO1xyXG4gICAgICBsb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbSgnc3RlcCcpXHJcbiAgICB9LFxyXG4gICAgbmV4dCgpe1xyXG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3RlcCcsNylcclxuICAgICAgdGhpcy4kcm91dGVyLnB1c2goXCIvaW5zY3JpcHRpb25cIik7XHJcbiAgICB9LFxyXG4gICAgY3JlYXRlZCgpIHtcclxuICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKClcclxuICAgIHRoaXMuJHJvdXRlci5wdXNoKFwiL2luc2NyaXB0aW9uXCIpO1xyXG4gICAgfSxcclxuICAgIHJlc2V0KCkge1xyXG4gICAgICAgIC8vY29uc29sZS5jbGVhcigpXHJcbiAgICAgICAgIHNlc3Npb25TdG9yYWdlLmNsZWFyKClcclxuICAgICAgdGhpcy4kcm91dGVyLnB1c2goXCIvXCIpO1xyXG4gICAgfSxcclxuICAgIG9wZW5Ob3RpZmljYXRpb24odGl0bGUsIHRleHQsIGNvbG9yLCBwb3NpdGlvbiA9IFwidG9wLXJpZ2h0XCIsIGljb24gPSBudWxsKSB7XHJcbiAgICAgIGNvbnN0IG5vdGkgPSB0aGlzLiR2cy5ub3RpZmljYXRpb24oe1xyXG4gICAgICAgIGljb24sXHJcbiAgICAgICAgY29sb3IsXHJcbiAgICAgICAgcG9zaXRpb24sXHJcbiAgICAgICAgdGl0bGUsXHJcbiAgICAgICAgdGV4dCxcclxuICAgICAgfSk7XHJcbiAgICB9LFxyXG4gICAgZ2V0UXVlcnkocSkge1xyXG4gICAgICByZXR1cm4gKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gubWF0Y2goXHJcbiAgICAgICAgbmV3IFJlZ0V4cChcIls/Jl1cIiArIHEgKyBcIj0oW14mXSspXCIpXHJcbiAgICAgICkgfHwgWywgbnVsbF0pWzFdO1xyXG4gICAgfSxcclxuICB9LFxyXG59O1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ+XHJcbi5sYXN0X2Jsb2NrIHtcclxuICBwYWRkaW5nOiAxNXB4O1xyXG4gIHBhZGRpbmctbGVmdDogNTZweDtcclxuICBwYWRkaW5nLXJpZ2h0OiA1NnB4O1xyXG59XHJcbi5jYXJkIHtcclxuICBwYWRkaW5nOiAwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG59XHJcbi5pbnB1dC1ncm91cC10ZXh0IHtcclxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xyXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtO1xyXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjI1cmVtO1xyXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGJvcmRlci1sZWZ0OiAwcHg7XHJcbiAgcGFkZGluZzogNS41cHg7XHJcbiAgZm9udC1zaXplOiAxcmVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgLyogbGluZS1oZWlnaHQ6IDEuNTsgKi9cclxuICBjb2xvcjogIzIxMjUyOTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2VkNGRhO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICAvKiBib3JkZXItcmFkaXVzOiAwLjI1cmVtOyAqL1xyXG59XHJcbi5iYWNrIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgdGV4dC1hbGlnbjogbGVmdDtcclxuICBiYWNrZ3JvdW5kOiAjYzhkZGZiO1xyXG59XHJcbi5jb250IHtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJodHRwczovL3d3dy5nb29nbGUuY29tL3VybD9zYT1pJnVybD1odHRwcyUzQSUyRiUyRnd3dy5wZXJmZWN0c2VydmUuY29tJTJGYW5zd2VyLXNlcnZpY2UlMkZsYW5kaW5nLWhlcm8tYmFja2dyb3VuZCUyRiZwc2lnPUFPdlZhdzN3NUVsVC1kNlgyUkx1UXNhVS1LclEmdXN0PTE2NDU5MTczOTc1NzEwMDAmc291cmNlPWltYWdlcyZjZD12ZmUmdmVkPTBDQWdRalJ4cUZ3b1RDT2lIeExMLW1fWUNGUUFBQUFBZEFBQUFBQkFLXCIpO1xyXG59XHJcbi5mb3JtLXNpZ25pbiB7XHJcbiAgLyptYXgtd2lkdGg6IDQwMHB4OyovXHJcbiAgZmxleDogMTAwJTtcclxuICBib3JkZXItcmlnaHQ6IDBweDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgYmFja2dyb3VuZDogI2ZmZjtcclxufVxyXG5cclxuLmZvcm0tc2lnbmluIC5jaGVja2JveCB7XHJcbiAgZm9udC13ZWlnaHQ6IDQwMDtcclxufVxyXG5cclxuLmZvcm0tc2lnbmluIC5mb3JtLWZsb2F0aW5nOmZvY3VzLXdpdGhpbiB7XHJcbiAgei1pbmRleDogMjtcclxufVxyXG5cclxuLmZvcm0tc2lnbmluIGlucHV0W3R5cGU9XCJlbWFpbFwiXSB7XHJcbiAgbWFyZ2luLWJvdHRvbTogLTFweDtcclxuICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogMDtcclxuICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAwO1xyXG59XHJcblxyXG4uZm9ybS1zaWduaW4gaW5wdXRbdHlwZT1cInBhc3N3b3JkXCJdLFxyXG4uZm9ybS1zaWduaW4gaW5wdXRbdHlwZT1cInRleHRcIl0sXHJcbi5mb3JtLXNpZ25pbiBpbnB1dFt0eXBlPVwidGVsXCJdIHtcclxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xyXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwO1xyXG4gIGJvcmRlci1yaWdodDogMDtcclxuICBmb250LXNpemU6IDgwJTtcclxufVxyXG4uYnV0dG9uLXNpZ24ge1xyXG4gIGJhY2tncm91bmQ6ICM4YWI3Zjg7XHJcbiAgYm9yZGVyLWNvbG9yOiAjOGFiN2Y4O1xyXG4gIGNvbG9yOiAjZmZmO1xyXG4gIHRleHQtdHJhbnNmb3JtOiBjYXBpdGFsaXplO1xyXG59XHJcbmEge1xyXG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxufVxyXG5wIHtcclxuICBtYXJnaW4tYm90dG9tOiAwcHg7XHJcbiAgbGluZS1oZWlnaHQ6IDMwcHg7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG59XHJcbmlucHV0LFxyXG5pbnB1dDpmb2N1cyB7XHJcbiAgYmFja2dyb3VuZDogI2ZmZjtcclxuICBmb250LXNpemU6IDgwJTtcclxufVxyXG5pbnB1dDpmb2N1cyB7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2U4ZjBmZTtcclxufVxyXG4jYmFzaWMtYWRkb24xIHtcclxuICBjb2xvcjogdHJhbnNwYXJlbnQ7XHJcbn1cclxuLnJvdyB7XHJcbiAgbWFyZ2luOiAwcHg7XHJcbn1cclxuXHJcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQyNXB4KSB7XHJcbiAgLmJhY2ssXHJcbiAgLmZvcm0tc2lnbmluIHtcclxuICAgIGhlaWdodDogNTB2aDtcclxuICB9XHJcbn1cclxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XHJcbiAgLmJhY2ssXHJcbiAgLmZvcm0tc2lnbmluIHtcclxuICAgIGhlaWdodDogNTB2aDtcclxuICB9XHJcbiAgLnYtYXBwbGljYXRpb24tLXdyYXAge1xyXG4gICAgYmFja2dyb3VuZDogI2ZmZjtcclxuICB9XHJcbn1cclxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XHJcbiAgLmJhY2ssXHJcbiAgLmZvcm0tc2lnbmluIHtcclxuICAgIGhlaWdodDogMTAwdmg7XHJcbiAgfVxyXG59XHJcbjwvc3R5bGU+XHJcbiIsIjx0ZW1wbGF0ZT5cclxuICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtc20tMTIgcC0wXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTcgY29scy0xMiBjb2wtc20tMTIgY29sLXhzLTEyIHByLTAgcGwtMCBwdC0wIHBiLTBcIj5cclxuICAgICAgICAgIDxtYWluIGNsYXNzPVwiZm9ybS1zaWduaW5cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbGVmdFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgPGltZyBzcmM9XCIvaW1hZ2VzL3Y0YWxsLWxvZ28ucG5nXCIgd2lkdGg9XCIxMDBweFwiIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgIDxjb25maXJtYXRpb24gLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L21haW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy01IGNvbHMtMTIgYmFjayBwdC0wIHBiLTBcIj5cclxuICAgICAgICAgIDxzZWN0aW9uXHJcbiAgICAgICAgICAgIGNsYXNzPVwiZm9yQWxsXCJcclxuICAgICAgICAgICAgc3R5bGU9XCJcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB1cmwoJy9pbWFnZXMvaGVhZGVyXzEucG5nJyk7XHJcbiAgICAgICAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICAgICAgICBwYWRkaW5nOiAxNXB4O1xyXG4gICAgICAgICAgICAgIGJhY2tncm91bmQtc2l6ZTogY29udGFpbjtcclxuICAgICAgICAgICAgICB3aWR0aDogODAwcHg7XHJcbiAgICAgICAgICAgICAgaGVpZ2h0OiAzMDBweDtcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG4gICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIDxpbWdcclxuICAgICAgICAgICAgICBzcmM9XCIvaW1hZ2VzL2hlYWRlcl9jYXJkLnBuZ1wiXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpbWFnZV92YXppdmFcIlxyXG4gICAgICAgICAgICAgIEBtb3VzZWVudGVyPVwiY2FyZE1vdXNlRW50ZXJcIlxyXG4gICAgICAgICAgICAgIEBtb3VzZW1vdmU9XCJjYXJkTW91c2VNb3ZlXCJcclxuICAgICAgICAgICAgICBAbW91c2VsZWF2ZT1cImNhcmRNb3VzZUxlYXZlXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgIDwvc2VjdGlvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS08YW5pbWF0ZS1sb2dpbi8+LS0+XHJcbiAgPC9kaXY+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5pbXBvcnQgY29uZmlybWF0aW9uIGZyb20gXCIuL2NvbmZpcm1hdGlvbi52dWVcIjtcclxuY29uc3QgdGlsdEVmZmVjdFNldHRpbmdzID0ge1xyXG4gIG1heDogMjUsIC8vIG1heCB0aWx0IHJvdGF0aW9uIChkZWdyZWVzIChkZWcpKVxyXG4gIHBlcnNwZWN0aXZlOiAxMDAwLCAvLyB0cmFuc2Zvcm0gcGVyc3BlY3RpdmUsIHRoZSBsb3dlciB0aGUgbW9yZSBleHRyZW1lIHRoZSB0aWx0IGdldHMgKHBpeGVscyAocHgpKVxyXG4gIHNjYWxlOiAxLjEsIC8vIHRyYW5zZm9ybSBzY2FsZSAtIDIgPSAyMDAlLCAxLjUgPSAxNTAlLCBldGMuLlxyXG4gIHNwZWVkOiA1MDAsIC8vIHNwZWVkICh0cmFuc2l0aW9uLWR1cmF0aW9uKSBvZiB0aGUgZW50ZXIvZXhpdCB0cmFuc2l0aW9uIChtaWxsaXNlY29uZHMgKG1zKSlcclxuICBlYXNpbmc6IFwiY3ViaWMtYmV6aWVyKC4wMywuOTgsLjUyLC45OSlcIiwgLy8gZWFzaW5nICh0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbikgb2YgdGhlIGVudGVyL2V4aXQgdHJhbnNpdGlvblxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIGNvbXBvbmVudHM6IHsgY29uZmlybWF0aW9uIH0sXHJcbiAgZGF0YSgpIHtcclxuICAgIHJldHVybiB7fTtcclxuICB9LFxyXG4gIG1vdW50ZWQoKSB7XHJcblx0c2Vzc2lvblN0b3JhZ2UuY2xlYXIoKSAgXHJcblx0bG9jYWxTdG9yYWdlLmNsZWFyKClcclxuICB9LFxyXG4gIG1ldGhvZHM6IHtcclxuICAgIGNhcmRNb3VzZU1vdmUoZXZlbnQpIHtcclxuICAgICAgY29uc3QgY2FyZCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XHJcbiAgICAgIGNvbnN0IGNhcmRXaWR0aCA9IGNhcmQub2Zmc2V0V2lkdGg7XHJcbiAgICAgIGNvbnN0IGNhcmRIZWlnaHQgPSBjYXJkLm9mZnNldEhlaWdodDtcclxuICAgICAgY29uc3QgY2VudGVyWCA9IGNhcmQub2Zmc2V0TGVmdCArIGNhcmRXaWR0aCAvIDI7XHJcbiAgICAgIGNvbnN0IGNlbnRlclkgPSBjYXJkLm9mZnNldFRvcCArIGNhcmRIZWlnaHQgLyAyO1xyXG4gICAgICBjb25zdCBtb3VzZVggPSBldmVudC5jbGllbnRYIC0gY2VudGVyWDtcclxuICAgICAgY29uc3QgbW91c2VZID0gZXZlbnQuY2xpZW50WSAtIGNlbnRlclk7XHJcbiAgICAgIGNvbnN0IHJvdGF0ZVhVbmNhcHBlZCA9XHJcbiAgICAgICAgKCsxICogdGlsdEVmZmVjdFNldHRpbmdzLm1heCAqIG1vdXNlWSkgLyAoY2FyZEhlaWdodCAvIDIpO1xyXG4gICAgICBjb25zdCByb3RhdGVZVW5jYXBwZWQgPVxyXG4gICAgICAgICgtMSAqIHRpbHRFZmZlY3RTZXR0aW5ncy5tYXggKiBtb3VzZVgpIC8gKGNhcmRXaWR0aCAvIDIpO1xyXG4gICAgICBjb25zdCByb3RhdGVYID1cclxuICAgICAgICByb3RhdGVYVW5jYXBwZWQgPCAtdGlsdEVmZmVjdFNldHRpbmdzLm1heFxyXG4gICAgICAgICAgPyAtdGlsdEVmZmVjdFNldHRpbmdzLm1heFxyXG4gICAgICAgICAgOiByb3RhdGVYVW5jYXBwZWQgPiB0aWx0RWZmZWN0U2V0dGluZ3MubWF4XHJcbiAgICAgICAgICA/IHRpbHRFZmZlY3RTZXR0aW5ncy5tYXhcclxuICAgICAgICAgIDogcm90YXRlWFVuY2FwcGVkO1xyXG4gICAgICBjb25zdCByb3RhdGVZID1cclxuICAgICAgICByb3RhdGVZVW5jYXBwZWQgPCAtdGlsdEVmZmVjdFNldHRpbmdzLm1heFxyXG4gICAgICAgICAgPyAtdGlsdEVmZmVjdFNldHRpbmdzLm1heFxyXG4gICAgICAgICAgOiByb3RhdGVZVW5jYXBwZWQgPiB0aWx0RWZmZWN0U2V0dGluZ3MubWF4XHJcbiAgICAgICAgICA/IHRpbHRFZmZlY3RTZXR0aW5ncy5tYXhcclxuICAgICAgICAgIDogcm90YXRlWVVuY2FwcGVkO1xyXG5cclxuICAgICAgY2FyZC5zdHlsZS50cmFuc2Zvcm0gPSBgcGVyc3BlY3RpdmUoJHt0aWx0RWZmZWN0U2V0dGluZ3MucGVyc3BlY3RpdmV9cHgpIHJvdGF0ZVgoJHtyb3RhdGVYfWRlZykgcm90YXRlWSgke3JvdGF0ZVl9ZGVnKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlM2QoJHt0aWx0RWZmZWN0U2V0dGluZ3Muc2NhbGV9LCAke3RpbHRFZmZlY3RTZXR0aW5ncy5zY2FsZX0sICR7dGlsdEVmZmVjdFNldHRpbmdzLnNjYWxlfSlgO1xyXG4gICAgfSxcclxuICAgIGNhcmRNb3VzZUxlYXZlKGV2ZW50KSB7XHJcbiAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuc3R5bGUudHJhbnNmb3JtID0gYHBlcnNwZWN0aXZlKCR7dGlsdEVmZmVjdFNldHRpbmdzLnBlcnNwZWN0aXZlfXB4KSByb3RhdGVYKDBkZWcpIHJvdGF0ZVkoMGRlZykgc2NhbGUzZCgxLCAxLCAxKWA7XHJcbiAgICAgIHRoaXMuc2V0VHJhbnNpdGlvbihldmVudCk7XHJcbiAgICB9LFxyXG4gICAgY2FyZE1vdXNlRW50ZXIoZXZlbnQpIHtcclxuICAgICAgdGhpcy5zZXRUcmFuc2l0aW9uKGV2ZW50KTtcclxuICAgIH0sXHJcbiAgICBzZXRUcmFuc2l0aW9uKGV2ZW50KSB7XHJcbiAgICAgIGNvbnN0IGNhcmQgPSBldmVudC5jdXJyZW50VGFyZ2V0O1xyXG4gICAgICBjbGVhclRpbWVvdXQoY2FyZC50cmFuc2l0aW9uVGltZW91dElkKTtcclxuICAgICAgY2FyZC5zdHlsZS50cmFuc2l0aW9uID0gYHRyYW5zZm9ybSAke3RpbHRFZmZlY3RTZXR0aW5ncy5zcGVlZH1tcyAke3RpbHRFZmZlY3RTZXR0aW5ncy5lYXNpbmd9YDtcclxuICAgICAgY2FyZC50cmFuc2l0aW9uVGltZW91dElkID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgY2FyZC5zdHlsZS50cmFuc2l0aW9uID0gXCJcIjtcclxuICAgICAgfSwgdGlsdEVmZmVjdFNldHRpbmdzLnNwZWVkKTtcclxuICAgIH0sXHJcbiAgfSxcclxuICBiZWZvcmVNb3VudCgpIHt9LFxyXG59O1xyXG5cclxuLyoqQW5pbWF0ZSAqL1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ+XHJcbi5pbWFnZV92YXppdmEge1xyXG4gIHdpZHRoOiAyODhweDtcclxuICAvKiBoZWlnaHQ6IDIwMHB4OyAqL1xyXG4gIC8qIG1hcmdpbi10b3A6IC0zMDBweDsgKi9cclxuICBtYXJnaW4tbGVmdDogLTE3MnB4O1xyXG59XHJcbi5mb3JBbGwge1xyXG59XHJcbi5sYXN0X2Jsb2NrIHtcclxuICBwYWRkaW5nOiAxNXB4O1xyXG4gIHBhZGRpbmctbGVmdDogNTZweDtcclxuICBwYWRkaW5nLXJpZ2h0OiA1NnB4O1xyXG59XHJcbi5jYXJkIHtcclxuICBwYWRkaW5nOiAwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG59XHJcbi5pbnB1dC1ncm91cC10ZXh0IHtcclxuICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAwO1xyXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAwLjI1cmVtO1xyXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwLjI1cmVtO1xyXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGJvcmRlci1sZWZ0OiAwcHg7XHJcbiAgcGFkZGluZzogNS41cHg7XHJcbiAgZm9udC1zaXplOiAxcmVtO1xyXG4gIGZvbnQtd2VpZ2h0OiA0MDA7XHJcbiAgLyogbGluZS1oZWlnaHQ6IDEuNTsgKi9cclxuICBjb2xvcjogIzIxMjUyOTtcclxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjY2VkNGRhO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICAvKiBib3JkZXItcmFkaXVzOiAwLjI1cmVtOyAqL1xyXG59XHJcbi5iYWNrIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgdGV4dC1hbGlnbjogbGVmdDtcclxuICBiYWNrZ3JvdW5kOiAjYzhkZGZiO1xyXG4gIGhlaWdodDogMTAwO1xyXG59XHJcbi5jb250IHtcclxuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJodHRwczovL3d3dy5nb29nbGUuY29tL3VybD9zYT1pJnVybD1odHRwcyUzQSUyRiUyRnd3dy5wZXJmZWN0c2VydmUuY29tJTJGYW5zd2VyLXNlcnZpY2UlMkZsYW5kaW5nLWhlcm8tYmFja2dyb3VuZCUyRiZwc2lnPUFPdlZhdzN3NUVsVC1kNlgyUkx1UXNhVS1LclEmdXN0PTE2NDU5MTczOTc1NzEwMDAmc291cmNlPWltYWdlcyZjZD12ZmUmdmVkPTBDQWdRalJ4cUZ3b1RDT2lIeExMLW1fWUNGUUFBQUFBZEFBQUFBQkFLXCIpO1xyXG59XHJcbi5mb3JtLXNpZ25pbiB7XHJcbiAgLyptYXgtd2lkdGg6IDQwMHB4OyovXHJcbiAgZmxleDogMTAwJTtcclxuICBib3JkZXItcmlnaHQ6IDBweDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgaGVpZ2h0OiAxMDB2aDtcclxuICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG59XHJcblxyXG4uZm9ybS1zaWduaW4gLmNoZWNrYm94IHtcclxuICBmb250LXdlaWdodDogNDAwO1xyXG59XHJcblxyXG4uZm9ybS1zaWduaW4gLmZvcm0tZmxvYXRpbmc6Zm9jdXMtd2l0aGluIHtcclxuICB6LWluZGV4OiAyO1xyXG59XHJcblxyXG4uZm9ybS1zaWduaW4gaW5wdXRbdHlwZT1cImVtYWlsXCJdIHtcclxuICBtYXJnaW4tYm90dG9tOiAtMXB4O1xyXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAwO1xyXG4gIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDA7XHJcbn1cclxuXHJcbi5mb3JtLXNpZ25pbiBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl0sXHJcbi5mb3JtLXNpZ25pbiBpbnB1dFt0eXBlPVwidGV4dFwiXSxcclxuLmZvcm0tc2lnbmluIGlucHV0W3R5cGU9XCJ0ZWxcIl0ge1xyXG4gIGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDA7XHJcbiAgYm9yZGVyLXJpZ2h0OiAwO1xyXG4gIGZvbnQtc2l6ZTogODAlO1xyXG59XHJcbi5idXR0b24tc2lnbiB7XHJcbiAgYmFja2dyb3VuZDogIzhhYjdmODtcclxuICBib3JkZXItY29sb3I6ICM4YWI3Zjg7XHJcbiAgY29sb3I6ICNmZmY7XHJcbiAgdGV4dC10cmFuc2Zvcm06IGNhcGl0YWxpemU7XHJcbn1cclxuYSB7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG59XHJcbnAge1xyXG4gIG1hcmdpbi1ib3R0b206IDBweDtcclxuICBsaW5lLWhlaWdodDogMTVweDtcclxufVxyXG5pbnB1dCxcclxuaW5wdXQ6Zm9jdXMge1xyXG4gIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgZm9udC1zaXplOiA4MCU7XHJcbn1cclxuaW5wdXQ6Zm9jdXMge1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNlOGYwZmU7XHJcbn1cclxuI2Jhc2ljLWFkZG9uMSB7XHJcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xyXG59XHJcbi5yb3cge1xyXG4gIG1hcmdpbjogMHB4O1xyXG59XHJcblxyXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0MjVweCkge1xyXG4gIC5iYWNrLFxyXG4gIC5mb3JtLXNpZ25pbiB7XHJcbiAgICBoZWlnaHQ6IDUwdmg7XHJcbiAgfVxyXG59XHJcbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xyXG4gIC5iYWNrLFxyXG4gIC5mb3JtLXNpZ25pbiB7XHJcbiAgICBoZWlnaHQ6IDUwdmg7XHJcbiAgfVxyXG4gIC52LWFwcGxpY2F0aW9uLS13cmFwIHtcclxuICAgIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgfVxyXG59XHJcbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjRweCkge1xyXG4gIC5iYWNrLFxyXG4gIC5mb3JtLXNpZ25pbiB7XHJcbiAgICBoZWlnaHQ6IDEwMHZoO1xyXG4gIH1cclxufVxyXG48L3N0eWxlPlxyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/