/* http://meyerweb.com/eric/tools/css/reset/ 
   v2.0 | 20110126
   License: none (public domain)
*/
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
  margin: 0;
  padding: 0;
  border: 0;
  font-size: 100%;
  font: inherit;
  vertical-align: baseline; }

/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section {
  display: block; }

body {
  line-height: 1; }

ol, ul {
  list-style: none; }

blockquote, q {
  quotes: none; }

blockquote:before, blockquote:after {
  content: '';
  content: none; }

q:before, q:after {
  content: '';
  content: none; }

table {
  border-collapse: collapse;
  border-spacing: 0; }

/* apply a natural box layout model to all elements, but allowing components to change */
html {
  box-sizing: border-box; }

*, *:before, *:after {
  box-sizing: inherit; }

img {
  max-width: 100%; }

/* ==============
   TYPOGRAPHY
   ============== */
/* regular 400, semi bold 600, bold 800*/
body {
  font-family: "Open Sans", sans-serif;
  line-height: 1.3;
  font-size: 14px;
  font-size: 0.875rem; }
  @media screen and (min-width: 769px) {
    body {
      padding-bottom: 115px; } }

p {
  margin: 10px 0; }

.large_txt {
  font-size: 16px;
  font-size: 1rem; }

strong {
  font-weight: 800; }

h1 {
  font-size: 30px;
  font-size: 1.875rem;
  font-weight: 400;
  margin: 10px 0; }
  h1:first-of-type {
    margin: 0 0 20px 0; }

h2 {
  font-size: 20px;
  font-size: 1.25rem;
  font-weight: 600;
  margin: 10px 0; }

h3 {
  font-size: 20px;
  font-size: 1.25rem;
  font-weight: 600;
  margin: 10px 0; }

a:link, a:visited {
  text-decoration: none;
  font-weight: 600;
  color: #e30613; }

main ul, main ol {
  margin: 10px 0;
  padding-left: 30px; }

main ul {
  list-style-type: disc; }

main ol {
  list-style-type: decimal; }

/* ==============
   Layout
   ============== */
.pad_wrap {
  padding: 0 20px; }

.container {
  max-width: 1000px;
  margin-left: auto;
  margin-right: auto; }
  .container:after {
    content: " ";
    display: block;
    clear: both; }

.hide {
  display: none !important; }

/* ==============
   colours
   ============== */
/*backgrounds*/
.bg_grey {
  background-color: #8f8e8b; }

.bg_dgrey {
  background-color: #36302e; }

.bg_lgrey {
  background-color: #e9e8e8; }

.bg_red {
  background-color: #e30613; }

.bg_yellow {
  background-color: #eec11a; }

/*backgrounds*/
.txt_grey {
  color: #8f8e8b; }

.txt_dgrey {
  color: #36302e; }

.txt_lgrey {
  color: #e9e8e8; }

.txt_red {
  color: #e30613; }

.txt_yellow {
  color: #eec11a; }

/*Widgets*/
.widget {
  margin-bottom: 20px;
  display: block; }
  .widget img {
    display: block; }
    .widget img:hover {
      opacity: .9; }

.archive {
  background: #e9e8e8;
  padding: 10px 10px 5px 10px;
  display: none; }
  .archive h2 {
    font-weight: 400;
    padding-right: 36.17021%;
    background: url(../img/zip-icon.svg) no-repeat right;
    background-size: 27.65957%; }
  .archive li {
    padding: 5px 0;
    border-top: 1px solid #ffffff; }
  @media screen and (min-width: 769px) {
    .archive {
      display: block; } }

.downloads {
  display: block;
  text-decoration: none;
  color: #000000; }

/*tables*/
table {
  margin-bottom: 20px;
  width: 100%;
  text-align: left;
  table-layout: fixed; }
  table th {
    background: #000000;
    color: #ffffff; }
  table td, table th {
    padding: 5px 10px;
    border-right: 1px solid #e9e8e8; }
    table td:first-child, table th:first-child {
      border-left: 1px solid #e9e8e8; }
  table td {
    word-wrap: break-word; }
  table tr {
    border-top: 1px solid #e9e8e8; }
    table tr:last-child {
      border-bottom: 1px solid #e9e8e8; }
  table.flex {
    font-size: 12px;
    font-size: 0.75rem; }
  @media screen and (min-width: 769px) {
    table.flex {
      table-layout: auto;
      font-size: 14px;
      font-size: 0.875rem; }
      table.flex td:first-child {
        width: 170px; } }

@media screen and (min-width: 769px) {
  table.stacktable.small-only {
    display: none; } }

table.stacktable.large-only {
  display: none; }
  @media screen and (min-width: 769px) {
    table.stacktable.large-only {
      display: block; } }

/* ============
   ICONS
   ============ */
[class^="icon-"], [class*=" icon-"] {
  height: 24px;
  width: 24px;
  display: inline-block;
  fill: currentColor; }

/* ==============
   NAVIGATION
   ============== */
nav {
  background-color: #36302e; }
  nav li {
    display: block;
    color: #ffffff;
    text-align: center; }
    nav li.active, nav li.open {
      color: #eec11a; }
    nav li a {
      display: block;
      padding: 5px 0px; }
  nav a:link, nav a:visited {
    color: inherit;
    text-decoration: none; }
  nav .main_nav {
    padding: 0 20px;
    max-height: 0;
    transition: max-height .8s;
    overflow: hidden;
    position: relative; }
    nav .main_nav ul {
      display: none;
      margin-top: 5px; }
      nav .main_nav ul li:last-child {
        padding-bottom: 5px; }
    nav .main_nav .active ul {
      display: block; }
    nav .main_nav .active li, nav .main_nav .open li {
      border-top: 1px solid #eec11a;
      color: #ffffff; }
      nav .main_nav .active li:last-child, nav .main_nav .open li:last-child {
        border-bottom: 1px solid #eec11a; }
  .nav-open nav .main_nav {
    max-height: 700px; }
  @media screen and (min-width: 769px) {
    nav li {
      text-align: left;
      display: inline-block; }
      nav li a {
        padding: 5px 10px; }
      nav li:first-child a {
        padding-left: 0; }
      nav li:last-child a {
        padding-bottom: 0px; }
    nav .main_nav {
      max-height: none; }
      nav .main_nav .active ul, nav .main_nav .open ul {
        display: none !important; } }
  @media screen and (min-width: 1040px) {
    nav .main_nav {
      padding: 0; } }

#toggle_menu {
  width: 100%;
  color: #ffffff;
  text-align: center;
  text-transform: uppercase;
  display: block;
  padding: 5px; }
  .nav-open #toggle_menu span:before {
    content: 'Close '; }
  @media screen and (min-width: 769px) {
    #toggle_menu {
      display: none; } }

/* ==============
   HEADER
   ============== */
header {
  background-color: #8f8e8b; }
  header .pad_wrap:first-child {
    padding: 20px 0; }

.logo {
  display: block;
  width: 100%;
  padding: 0 20px; }
  @media screen and (min-width: 900px) {
    .logo {
      width: 49%; } }
  @media screen and (min-width: 1040px) {
    .logo {
      padding: 0; } }

#banner {
  width: 100%;
  display: block; }

.intro_txt {
  padding: 20px;
  color: #ffffff;
  font-size: 20px;
  font-size: 1.25rem; }
  .intro_txt p {
    margin: 0; }
  @media screen and (min-width: 769px) {
    .intro_txt {
      font-size: 22px;
      font-size: 1.375rem;
      padding: 32px 20px 32px 20px; }
      .intro_txt .inner {
        width: 83%;
        float: left;
        margin-right: 2%; } }

/* ==============
   Layout
   ============== */
main {
  clear: both; }
  .container main:first-child {
    padding-top: 35.5px; }
  .panels:not(.large) + main {
    margin-top: 20px; }
  @media screen and (min-width: 769px) {
    main {
      width: 83%;
      float: left;
      margin-right: 2%; }
      .panels:not(.large) + main {
        margin-top: 0px; }
      main.wide {
        width: 100%;
        float: left;
        margin-left: 0;
        margin-right: 0; } }

aside article h2:first-child {
  margin-top: 0; }

@media screen and (min-width: 769px) {
  aside.sidebar {
    width: 23.5%;
    float: right;
    margin-right: 0; } }

/*Panels*/
.panels {
  width: 100%;
  padding-top: 40px; }
  .panels:not(.large) {
    display: none; }
  .panels .item {
    display: block;
    width: 15%;
    float: left;
    margin-right: 2%;
    font-size: 13px;
    font-size: 0.8125rem;
    color: #000000;
    opacity: .3;
    border-top: 1px solid #eec11a;
    border-bottom: 1px solid #eec11a;
    margin-bottom: 20px;
    padding: 5px 0;
    height: 60px;
    overflow: hidden; }
    .panels .item span {
      display: block;
      color: #8f8e8b; }
    .panels .item:nth-child(6n) {
      float: right;
      margin-right: 0; }
    .panels .item.active {
      opacity: 1; }
    .panels .item a:link, .panels .item a:visited {
      color: #000000; }
  .panels.large .item {
    width: 100%;
    height: auto;
    margin-bottom: 10px;
    font-size: 20px;
    font-size: 1.25rem; }
  @media screen and (min-width: 769px) {
    .panels:not(.large) {
      display: block; }
    .panels.large .item {
      width: 23.5%;
      float: left;
      margin-right: 2%;
      margin-bottom: 40px;
      margin-top: 0;
      height: 90px;
      opacity: 1; }
      .panels.large .item:nth-child(4n) {
        float: right;
        margin-right: 0; } }

/*logos*/
.logos article {
  background: #e9e8e8;
  margin-bottom: 20px; }

.logos .txt {
  padding: 10px;
  word-break: break-word; }

.logos .img {
  display: none; }

@media screen and (min-width: 769px) {
  .logos article {
    width: 100%;
    float: left;
    margin-left: 0;
    margin-right: 0; }
  .logos .txt {
    width: 69.27711%;
    float: left;
    margin-right: 2.40964%; }
  .logos .img {
    display: block;
    padding: 10px;
    width: 28.31325%;
    float: right;
    margin-right: 0; }
    .logos .img img {
      display: block;
      width: 100%; } }

/*ACCORDION*/
.accordion article {
  border-bottom: 1px solid #eec11a; }
  .accordion article:first-child {
    border-top: 1px solid #eec11a; }
  .accordion article > h2 {
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
    justify-content: space-between;
    -ms-flex-align: center;
    align-items: center;
    line-height: 1; }
  .accordion article > h2:after {
    content: '\02795';
    /* Unicode character for "plus" sign (+) */
    font-size: 12px;
    font-size: 0.75rem;
    float: right;
    margin-left: 5px;
    font-weight: 200; }
  .accordion article.active > h2:after {
    content: "\2796";
    /* Unicode character for "minus" sign (-) */ }
  .accordion article .panel {
    overflow: hidden;
    transition: max-height 0.2s ease-out; }

/*MAP*/
.map_area {
  padding: 40px 20px; }
  .map_area .left {
    margin-bottom: 40px; }
  .map_area h3:first-child {
    margin-top: 0;
    line-height: 1; }
  .map_area p + h3 {
    margin-top: 30px; }
  @media screen and (min-width: 769px) {
    .map_area .left {
      margin-bottom: 0;
      width: 66%;
      float: left;
      margin-right: 2%; }
    .map_area .right {
      width: 32%;
      float: right;
      margin-right: 0; } }

/*COLUMNS*/
.columns {
  padding: 30px 0; }
  .columns:after {
    content: " ";
    display: block;
    clear: both; }
  .columns.span_4 article {
    margin: 0 20px; }
    .columns.span_4 article h2 {
      line-height: 1;
      min-height: 70px;
      padding: 8px 0;
      border-top: 1px solid #eec11a;
      border-bottom: 1px solid #eec11a; }
    .columns.span_4 article h3 {
      margin-bottom: 0;
      font-size: 13px;
      font-size: 0.8125rem; }
      .columns.span_4 article h3 + p {
        margin-top: 0; }
  @media screen and (min-width: 769px) {
    .columns.span_4 article {
      margin: 0;
      width: 32%;
      float: left;
      margin-right: 2%; }
      .columns.span_4 article:nth-of-type(3) {
        width: 32%;
        float: right;
        margin-right: 0; } }

/* ==============
   COMPONENTS
   ============== */
/* ==============
   FOOTER
   ============== */
footer {
  background: #36302e;
  color: #ffffff;
  display: inline-block;
  width: 100%;
  padding: 10px 20px;
  margin-top: 20px;
  font-size: 17px;
  font-size: 1.0625rem; }
  footer nav li {
    display: inline-block;
    text-align: left; }
    footer nav li a {
      padding: 0; }
  footer p {
    margin: 0; }
  footer a:link, footer a:visited {
    color: #eec11a; }
  footer .quick_links {
    margin-top: 20px; }
    footer .quick_links li {
      background: url(../img/disc.svg) no-repeat center left;
      padding: 0 0 0 15px;
      background-size: 5px;
      margin-right: 10px; }
    footer .quick_links h3 {
      margin: 0; }
  footer .siteby {
    float: right;
    clear: both;
    font-size: 10px;
    font-size: 0.625rem;
    padding: 10px;
    margin-right: 20px; }
  @media screen and (min-width: 769px) {
    footer {
      position: fixed;
      bottom: 0px;
      height: 110px; }
      footer .txt {
        width: 57.5%;
        float: left;
        margin-right: 2%; }
      footer .quick_links {
        margin-top: 0;
        width: 32%;
        float: right;
        margin-right: 0; } }

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhcnRpYWxzL19yZXNldC5zY3NzIiwicGFydGlhbHMvX2dlbmVyYWwuc2NzcyIsInBhcnRpYWxzL19iYXNlLnNjc3MiLCJtb2R1bGVzL19taXhpbnMuc2NzcyIsIm1vZHVsZXMvX2NvbG91cnMuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9vdXRwdXQvc3VwcG9ydC9fcmVtLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fY29udGFpbmVyLnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvb3V0cHV0L3N1cHBvcnQvX2NsZWFyZml4LnNjc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc3VzeS9zYXNzL3N1c3kvbGFuZ3VhZ2Uvc3VzeS9fc3Bhbi5zY3NzIiwibWFpbi5jc3MiLCJwYXJ0aWFscy9fbmF2aWdhdGlvbi5zY3NzIiwicGFydGlhbHMvX2hlYWRlci5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L291dHB1dC9zaGFyZWQvX2RpcmVjdGlvbi5zY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N1c3kvc2Fzcy9zdXN5L2xhbmd1YWdlL3N1c3kvX2d1dHRlcnMuc2NzcyIsInBhcnRpYWxzL19sYXlvdXQuc2NzcyIsIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdXN5L3Nhc3Mvc3VzeS9sYW5ndWFnZS9zdXN5L19yb3dzLnNjc3MiLCJwYXJ0aWFscy9fY29tcG9uZW50cy5zY3NzIiwicGFydGlhbHMvX2Zvb3Rlci5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7RUFHRTtBQUVGO0VBQ0UsVUFBUztFQUNULFdBQVU7RUFDVixVQUFTO0VBQ1QsZ0JBQWU7RUFDZixjQUFhO0VBQ2IseUJBQXdCLEVBQUk7O0FBRTlCLGlEQUFpRDtBQUVqRDtFQUNFLGVBQWMsRUFBSTs7QUFFcEI7RUFD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OztvQkFFb0I7QUNGcEI7O29CQUVvQjtBQUNwQjtFQUNDLG9CYkZrQjtFYUdsQixlQUFhO0VBQ2Isc0JBQW9CO0VBQ3BCLFlBQVU7RUFDVixtQmZxQmlCO0VlcEJqQixpQkFBZTtFZFBkLGdCQUEwQjtFQUMxQixxQkFBaUQsRWN3RWxEO0VBeEVEO0lBVUcsc0JBQXFCO0lBQ3RCLGlCQUFnQixFQUtmO0lBaEJIO01BY0ksV0FBUyxFQUNUO0VBZko7SUF1QkUsVUFBUSxFQUNSO0VBeEJGO0lBNEJHLGViM0JhLEVhNEJiO0VBN0JIO0lBZ0NFLGlCQUFlLEVBZWY7SUEvQ0Y7TUFtQ0csdURBQXFEO01BQ3JELG9CQUFrQjtNQUNsQixxQkFBbUI7TUFDbkIsbUJBQWtCLEVBQ2xCO0lBdkNIO01BMkNHLFVBQVEsRUFDUjtFQTVDSDtJQWlERSxhQUFXO0lBQ1gsWUFBVTtJZG5EVixnQkFBMEI7SUFDMUIsb0JBQWlEO0ljb0Q5QyxjQUFhO0lBQ2IsbUJBQWtCLEVBQ3JCO0VBQ0Q7SUF2REQ7TUF3REUsZ0JBQWM7TUFDZCxZQUFVO01BQ1YsY0FBWSxFQWNiO01BeEVEO1FaZ0JJLGFHd0kwQztRSHhJMUMsWU9BNEQ7UVBBNUQsaUJRNEQ4RSxFSWQvRTtNQTlESDtRQWlFRyxjQUFhO1FaakRaLFdHd0kwQztRSHhJMUMsYU9BdUU7UVBBdkUsZ0JHa0ZvQixFUy9CckIsRUFBQSIsImZpbGUiOiJtYWluLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGh0dHA6Ly9tZXllcndlYi5jb20vZXJpYy90b29scy9jc3MvcmVzZXQvIFxuICAgdjIuMCB8IDIwMTEwMTI2XG4gICBMaWNlbnNlOiBub25lIChwdWJsaWMgZG9tYWluKVxuKi9cblxuaHRtbCwgYm9keSwgZGl2LCBzcGFuLCBhcHBsZXQsIG9iamVjdCwgaWZyYW1lLCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBwLCBibG9ja3F1b3RlLCBwcmUsIGEsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSwgZGVsLCBkZm4sIGVtLCBpbWcsIGlucywga2JkLCBxLCBzLCBzYW1wLCBzbWFsbCwgc3RyaWtlLCBzdHJvbmcsIHN1Yiwgc3VwLCB0dCwgdmFyLCBiLCB1LCBpLCBjZW50ZXIsIGRsLCBkdCwgZGQsIG9sLCB1bCwgbGksIGZpZWxkc2V0LCBmb3JtLCBsYWJlbCwgbGVnZW5kLCB0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCwgYXJ0aWNsZSwgYXNpZGUsIGNhbnZhcywgZGV0YWlscywgZW1iZWQsIGZpZ3VyZSwgZmlnY2FwdGlvbiwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksIHRpbWUsIG1hcmssIGF1ZGlvLCB2aWRlbyB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwO1xuICBmb250LXNpemU6IDEwMCU7XG4gIGZvbnQ6IGluaGVyaXQ7XG4gIHZlcnRpY2FsLWFsaWduOiBiYXNlbGluZTsgfVxuXG4vKiBIVE1MNSBkaXNwbGF5LXJvbGUgcmVzZXQgZm9yIG9sZGVyIGJyb3dzZXJzICovXG5cbmFydGljbGUsIGFzaWRlLCBkZXRhaWxzLCBmaWdjYXB0aW9uLCBmaWd1cmUsIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1lbnUsIG5hdiwgc2VjdGlvbiB7XG4gIGRpc3BsYXk6IGJsb2NrOyB9XG5cbmJvZHkge1xuICBsaW5lLWhlaWdodDogMTsgfVxuXG5vbCwgdWwge1xuICBsaXN0LXN0eWxlOiBub25lOyB9XG5cbmJsb2NrcXVvdGUsIHEge1xuICBxdW90ZXM6IG5vbmU7IH1cblxuYmxvY2txdW90ZSB7XG4gICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBjb250ZW50OiBub25lOyB9IH1cblxucSB7XG4gICY6YmVmb3JlLCAmOmFmdGVyIHtcbiAgICBjb250ZW50OiAnJztcbiAgICBjb250ZW50OiBub25lOyB9IH1cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfSIsIlxuLyogYXBwbHkgYSBuYXR1cmFsIGJveCBsYXlvdXQgbW9kZWwgdG8gYWxsIGVsZW1lbnRzLCBidXQgYWxsb3dpbmcgY29tcG9uZW50cyB0byBjaGFuZ2UgKi9cbmh0bWwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xufVxuaW1nIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xufVxuLyogPT09PT09PT09PT09PT1cbiAgIFRZUE9HUkFQSFlcbiAgID09PT09PT09PT09PT09ICovXG4vKiByZWd1bGFyIDQwMCwgc2VtaSBib2xkIDYwMCwgYm9sZCA4MDAqL1xuXG5ib2R5IHsgXG5mb250LWZhbWlseTogJGJhc2UtZm9udC1mYW1pbHk7XG5saW5lLWhlaWdodDokYmFzZS1saW5lLWhlaWdodDtcbkBpbmNsdWRlIGZvbnQtc2l6ZSgxNCk7XG5cblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkd2lkdGgtbWVkaXVtKSB7XG4gICAgcGFkZGluZy1ib3R0b206MTE1cHg7XG4gIH1cbn1cblxucCB7XG4gICAgbWFyZ2luOjEwcHggMDtcbn1cblxuLmxhcmdlX3R4dCB7XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKDE2KTtcbn1cblxuc3Ryb25nIHtcbiAgZm9udC13ZWlnaHQ6ODAwO1xufVxuaDEge1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgzMCk7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBtYXJnaW46MTBweCAwO1xuXG4gICAgJjpmaXJzdC1vZi10eXBle1xuICAgICAgbWFyZ2luOjAgMCAyMHB4IDA7XG4gICAgfVxufVxuaDIge1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgyMCk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBtYXJnaW46MTBweCAwO1xufVxuaDMge1xuICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgyMCk7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBtYXJnaW46MTBweCAwO1xufVxuXG5hOmxpbmssIGE6dmlzaXRlZCB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgY29sb3I6JHJlZDtcbn1cblxubWFpbiB7XG5cbiAgdWwsIG9sIHtcbiAgICBtYXJnaW46MTBweCAwO1xuICAgIHBhZGRpbmctbGVmdDogMzBweDtcbiAgfVxuXG4gIHVsIHtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IGRpc2M7XG4gIH1cbiAgb2wge1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogZGVjaW1hbDtcbiAgfVxuXG59XG4vKiA9PT09PT09PT09PT09PVxuICAgTGF5b3V0XG4gICA9PT09PT09PT09PT09PSAqL1xuXG4ucGFkX3dyYXAge1xuICAgIHBhZGRpbmc6MCAkc2lkZS1wYWRkaW5nO1xufVxuLmNvbnRhaW5lciB7XG4gICAgQGluY2x1ZGUgY29udGFpbmVyKCk7XG5cbn1cblxuLmhpZGUge1xuICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi8qID09PT09PT09PT09PT09XG4gICBjb2xvdXJzXG4gICA9PT09PT09PT09PT09PSAqL1xuICAgLypiYWNrZ3JvdW5kcyovXG4uYmdfZ3JleSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjokZ3JleTtcbn1cbi5iZ19kZ3JleSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjokZGFyay1ncmV5O1xufVxuLmJnX2xncmV5IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiRsaWdodC1ncmV5O1xufVxuLmJnX3JlZCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjokcmVkO1xufVxuLmJnX3llbGxvdyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjokeWVsbG93O1xufVxuLypiYWNrZ3JvdW5kcyovXG4udHh0X2dyZXkge1xuICAgIGNvbG9yOiRncmV5O1xufVxuLnR4dF9kZ3JleSB7XG4gICAgY29sb3I6JGRhcmstZ3JleTtcbn1cbi50eHRfbGdyZXkge1xuICAgIGNvbG9yOiRsaWdodC1ncmV5O1xufVxuLnR4dF9yZWQge1xuICAgIGNvbG9yOiRyZWQ7XG59XG4udHh0X3llbGxvdyB7XG4gICAgY29sb3I6JHllbGxvdztcbn1cblxuLypXaWRnZXRzKi9cbi53aWRnZXQge1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICBkaXNwbGF5OiBibG9jaztcbiAgaW1ne1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuXG4gICAgJjpob3ZlciB7XG4gICAgICBvcGFjaXR5OiAuOTtcbiAgICB9XG4gIH1cblxufVxuLmFyY2hpdmUge1xuICBiYWNrZ3JvdW5kOiRsaWdodC1ncmV5O1xuICBwYWRkaW5nOjEwcHggMTBweCA1cHggMTBweDsgXG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgaDIge1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgcGFkZGluZy1yaWdodDogc3BhbigxIG9mIDMgd2lkZSk7XG5cbiAgICBiYWNrZ3JvdW5kOnVybCguLi9pbWcvemlwLWljb24uc3ZnKSBuby1yZXBlYXQgcmlnaHQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiBzcGFuKDEgb2YgMyk7XG4gIH1cblxuXG4gIGxpIHtcbiAgICBwYWRkaW5nOjVweCAwO1xuICAgIGJvcmRlci10b3A6MXB4IHNvbGlkICNmZmZmZmY7XG4gIH1cblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkd2lkdGgtbWVkaXVtKSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cblxufVxuXG4uZG93bmxvYWRzIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6IzAwMDAwMDtcblxufVxuXG5cbi8qdGFibGVzKi9cblxudGFibGUge1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgdGFibGUtbGF5b3V0OiBmaXhlZDtcblxuICBcbiAgdGgge1xuICAgIGJhY2tncm91bmQ6IzAwMDAwMDtcbiAgICBjb2xvcjojZmZmZmZmO1xuICB9XG4gIHRkLCB0aCB7XG4gICAgcGFkZGluZzo1cHggMTBweDtcbiAgICAgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAkbGlnaHQtZ3JleTtcbiAgICAmOmZpcnN0LWNoaWxke1xuICAgICAgYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICRsaWdodC1ncmV5O1xuICAgIH1cbiAgfVxuICB0ZCB7XG4gICAgd29yZC13cmFwOiBicmVhay13b3JkXG4gIH1cbiAgdHIge1xuICAgIGJvcmRlci10b3A6MXB4IHNvbGlkICRsaWdodC1ncmV5O1xuXG4gICAgJjpsYXN0LWNoaWxke1xuICAgICAgYm9yZGVyLWJvdHRvbToxcHggc29saWQgJGxpZ2h0LWdyZXk7XG4gICAgfVxuICB9XG4gICYuZmxleCB7XG4gICAgQGluY2x1ZGUgZm9udC1zaXplKDEyKTtcbiAgICAvL3RhYmxlLWxheW91dDogYXV0bztcblxuICAgIFxuICB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICR3aWR0aC1tZWRpdW0pIHtcbiAgICAmLmZsZXgge1xuICAgICAgdGFibGUtbGF5b3V0OiBhdXRvO1xuICAgICAgQGluY2x1ZGUgZm9udC1zaXplKDE0KTtcbiAgICAgIHRkOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgd2lkdGg6IDE3MHB4O1xuICAgICAgfVxuICAgIH1cblxuICB9XG59XG5cbnRhYmxlLnN0YWNrdGFibGUuc21hbGwtb25seSB7XG5cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJHdpZHRoLW1lZGl1bSkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxudGFibGUuc3RhY2t0YWJsZS5sYXJnZS1vbmx5IHtcbiAgZGlzcGxheTogbm9uZTtcblxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkd2lkdGgtbWVkaXVtKSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbn1cbiVjbGVhcmZpeCB7XG4gICY6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY2xlYXI6IGJvdGg7XG4gIH1cblxufVxuXG5cbi8qID09PT09PT09PT09PVxuICAgSUNPTlNcbiAgID09PT09PT09PT09PSAqL1xuW2NsYXNzXj1cImljb24tXCJdLCBbY2xhc3MqPVwiIGljb24tXCJdIHtcbiAgICBoZWlnaHQ6IDI0cHg7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGZpbGw6IGN1cnJlbnRDb2xvcjtcbn0iLCIvL0dsb2JhbHNcbiRnLWNvbnRhaW5lcjoxMDAwO1xuJG1heC13aWR0aDoxMDAwO1xuJHdyYXAtY29udGFpbmVyOjEwMDA7XG5cbi8vU3VzeSBzZXR1cFxuJHN1c3k6IChcbiAgY29sdW1uczogMTIsXG4gIGNvbnRhaW5lcjogJG1heC13aWR0aCtweCxcbiAgZ3V0dGVyczogMjBweC82NXB4LFxuICAvLyBkZWJ1ZzogKGltYWdlOiBzaG93LFxuICAvLyBcdGRlYnVnOm92ZXJsYXksXG4gIC8vIFx0dG9nZ2xlOiB0b3BcbiAgLy8gXHQpXG4pO1xuXG4vLyBGb250IHdlaWdodHNcbiRsaWdodDogMTAwO1xuJHJlZ3VsYXI6IDQwMDtcbiRib2xkOiA4MDA7XG4gXG4vLyBCYXNlIEZvbnRcbiRiYXNlLWZvbnQtZmFtaWx5OiAnT3BlbiBTYW5zJywgc2Fucy1zZXJpZjtcbiRiYXNlLWZvbnQtd2VpZ2h0OiAkcmVndWxhcjtcbiRiYXNlLWZvbnQtc2l6ZTogMTZweDtcbiRiYXNlLWZvbnQtc2l6ZS1udW06MTY7XG4kYmFzZS1saW5lLWhlaWdodDogMS4zO1xuXG4vL1BhZGRpbmdzXG4kc2lkZS1wYWRkaW5nOjIwcHg7XG4kZ2VuZXJhbC1wYWRkaW5nOjIwcHg7XG5cbi8vU2NyZWVuIFNpemVzXG4kd2lkdGgtc21hbGw6IDY0MHB4O1xuJHdpZHRoLW1lZGl1bTogNzY5cHg7XG4kd2lkdGgtbGFyZ2U6IDkwMHB4O1xuQGltcG9ydCBcIm1vZHVsZXMvX2FsbFwiOyIsIlxuQG1peGluIGZvbnQtc2l6ZSgkc2l6ZVZhbHVlOiAxLjMpIHtcbiAgZm9udC1zaXplOiAkc2l6ZVZhbHVlICsgcHg7XG4gIGZvbnQtc2l6ZTogKCRzaXplVmFsdWUvJGJhc2UtZm9udC1zaXplLW51bSkgKyByZW07XG59XG5cblxuQGZ1bmN0aW9uIGNhbGMtcGVyY2VudCgkdGFyZ2V0LCAkY29udGFpbmVyKSB7XG4gIEByZXR1cm4gKCR0YXJnZXQgLyAkY29udGFpbmVyKSAqIDEwMCU7XG59XG5cbkBmdW5jdGlvbiBjcCgkdGFyZ2V0LCAkY29udGFpbmVyKSB7XG4gIEByZXR1cm4gY2FsYy1wZXJjZW50KCR0YXJnZXQsICRjb250YWluZXIpO1xufVxuXG4vLyBTY3NzLiBDbGVhcmZpeCBNaXhpblxuQG1peGluIGNmIHtcbiY6YWZ0ZXIge1xuY29udGVudDogXCIgXCI7XG5kaXNwbGF5OiBibG9jaztcbmNsZWFyOiBib3RoO1xufVxufVxuIiwiLy9tYWluIGNvbG91cnNcbiRncmV5OiAjOGY4ZThiOyAvL3VzZWQgZm9yIGhlYWRlciBwYW5lbC8gQm94IG1lbnUgdGV4dFxuJGRhcmstZ3JleTogIzM2MzAyZTsgLy91c2VkIGZvciBtZW51IGJhci8gZm9vdGVyIGJhci9IZWFkaW5nIDFcbiRsaWdodC1ncmV5OiAjZTllOGU4OyAvL2hvbWVwYWdlIG1pZGRsZSBiYXIvIHppcC9sb2dvIHdpZGdldCBiYWNrZ3JvdW5kXG4keWVsbG93OiAjZWVjMTFhOyAvL3VzZWQgZm9yIGFjdGl2ZSBtZW51LyBoeXBlcmxpbmtzIGluIGZvb3Rlci9rZXlsaW5lc1xuJHJlZDogI2UzMDYxMzsgLy91c2VkIGZvciBoeXBlcmxpbmtzIChhcGFydCBmcm9tIGluIGZvb3RlciBiYXIpIiwiLy8gcmVtIFN1cHBvcnRcbi8vID09PT09PT09PT09XG5cbi8vIHJlbVxuLy8gLS0tXG4vLyBDaGVjayBmb3IgYW4gZXhpc3Rpbmcgc3VwcG9ydCBtaXhpbiwgb3Igb3V0cHV0IGRpcmVjdGx5LlxuLy8gLSAkcHJvcCAgOiA8Y3NzIHByb3BlcnR5PlxuLy8gLSAkdmFsICAgOiA8Y3NzIHZhbHVlPlxuQG1peGluIHN1c3ktcmVtKFxuICAkcHJvcCxcbiAgJHZhbFxuKSB7XG4gICRfcmVxczogKFxuICAgIHZhcmlhYmxlOiByaHl0aG0tdW5pdCByZW0td2l0aC1weC1mYWxsYmFjayxcbiAgICBtaXhpbjogcmVtLFxuICApO1xuICBAaWYgc3VzeS1zdXBwb3J0KHJlbSwgJF9yZXFzLCAkd2FybjogZmFsc2UpIGFuZCAkcmh5dGhtLXVuaXQgPT0gcmVtIHtcbiAgICBAaW5jbHVkZSByZW0oJHByb3AsICR2YWwpO1xuICB9IEBlbHNlIHtcbiAgICAjeyRwcm9wfTogJHZhbDtcbiAgfVxufVxuIiwiLy8gQ29udGFpbmVyIFN5bnRheFxuLy8gPT09PT09PT09PT09PT09PVxuXG4vLyBDb250YWluZXIgW21peGluXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFNldCBhIGNvbnRhaW5lciBlbGVtZW50XG4vLyAtIFskbGF5b3V0XSAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gY29udGFpbmVyKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRpbnNwZWN0ICAgIDogJGxheW91dDtcbiAgJGxheW91dCAgICAgOiBwYXJzZS1ncmlkKCRsYXlvdXQpO1xuXG4gICRfd2lkdGggICAgIDogZ2V0LWNvbnRhaW5lci13aWR0aCgkbGF5b3V0KTtcbiAgJF9qdXN0aWZ5ICAgOiBwYXJzZS1jb250YWluZXItcG9zaXRpb24oc3VzeS1nZXQoY29udGFpbmVyLXBvc2l0aW9uLCAkbGF5b3V0KSk7XG4gICRfcHJvcGVydHkgIDogaWYoc3VzeS1nZXQobWF0aCwgJGxheW91dCkgPT0gc3RhdGljLCB3aWR0aCwgbWF4LXdpZHRoKTtcblxuICAkX2JveCAgICAgICA6IHN1c3ktZ2V0KGJveC1zaXppbmcsICRsYXlvdXQpO1xuXG4gIEBpZiAkX2JveCB7XG4gICAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkX2JveCkpO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGNvbnRhaW5lciwgJGluc3BlY3QpO1xuICBAaW5jbHVkZSBmbG9hdC1jb250YWluZXIoJF93aWR0aCwgJF9qdXN0aWZ5LCAkX3Byb3BlcnR5KTtcbiAgQGluY2x1ZGUgc2hvdy1ncmlkKCRsYXlvdXQpO1xufVxuXG4vLyBDb250YWluZXIgW2Z1bmN0aW9uXVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiBjb250YWluZXIgd2lkdGhcbi8vIC0gWyRsYXlvdXRdICA6IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBjb250YWluZXIoXG4gICRsYXlvdXQ6ICRzdXN5XG4pIHtcbiAgJGxheW91dDogcGFyc2UtZ3JpZCgkbGF5b3V0KTtcbiAgQHJldHVybiBnZXQtY29udGFpbmVyLXdpZHRoKCRsYXlvdXQpO1xufVxuXG4vLyBHZXQgQ29udGFpbmVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBDYWxjdWxhdGUgdGhlIGNvbnRhaW5lciB3aWR0aFxuLy8gLSBbJGxheW91dF06IDxzZXR0aW5ncz5cbkBmdW5jdGlvbiBnZXQtY29udGFpbmVyLXdpZHRoKFxuICAkbGF5b3V0OiAkc3VzeVxuKSB7XG4gICRsYXlvdXQgICAgICAgICA6IHBhcnNlLWdyaWQoJGxheW91dCk7XG4gICRfd2lkdGggICAgICAgICA6IHN1c3ktZ2V0KGNvbnRhaW5lciwgJGxheW91dCk7XG4gICRfY29sdW1uLXdpZHRoICA6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGxheW91dCk7XG4gICRfbWF0aCAgICAgICAgICA6IHN1c3ktZ2V0KG1hdGgsICRsYXlvdXQpO1xuXG4gIEBpZiBub3QoJF93aWR0aCkgb3IgJF93aWR0aCA9PSBhdXRvIHtcbiAgICBAaWYgdmFsaWQtY29sdW1uLW1hdGgoJF9tYXRoLCAkX2NvbHVtbi13aWR0aCkge1xuICAgICAgJF9jb2x1bW5zICAgOiBzdXN5LWdldChjb2x1bW5zLCAkbGF5b3V0KTtcbiAgICAgICRfZ3V0dGVycyAgIDogc3VzeS1nZXQoZ3V0dGVycywgJGxheW91dCk7XG4gICAgICAkX3NwcmVhZCAgICA6IGlmKGlzLXNwbGl0KCRsYXlvdXQpLCB3aWRlLCBuYXJyb3cpO1xuICAgICAgJF93aWR0aCAgICAgOiBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpICogJF9jb2x1bW4td2lkdGg7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkX3dpZHRoOiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJF93aWR0aDtcbn1cblxuLy8gUGFyc2UgQ29udGFpbmVyIFBvc2l0aW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFBhcnNlIHRoZSAkY29udGFpbmVyLXBvc2l0aW9uIGludG8gbWFyZ2luIHZhbHVlcy5cbi8vIC0gWyRqdXN0aWZ5XSAgIDogbGVmdCB8IGNlbnRlciB8IHJpZ2h0IHwgPGxlbmd0aD4gWzxsZW5ndGg+XVxuQGZ1bmN0aW9uIHBhcnNlLWNvbnRhaW5lci1wb3NpdGlvbihcbiAgJGp1c3RpZnk6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGNvbnRhaW5lci1wb3NpdGlvbilcbikge1xuICAkX3JldHVybjogaWYoJGp1c3RpZnkgPT0gbGVmdCwgMCwgYXV0bykgaWYoJGp1c3RpZnkgPT0gcmlnaHQsIDAsIGF1dG8pO1xuXG4gIEBpZiBub3QoaW5kZXgobGVmdCByaWdodCBjZW50ZXIsICRqdXN0aWZ5KSkge1xuICAgICRfcmV0dXJuOiBudGgoJGp1c3RpZnksIDEpO1xuICAgICRfcmV0dXJuOiAkX3JldHVybiBpZihsZW5ndGgoJGp1c3RpZnkpID4gMSwgbnRoKCRqdXN0aWZ5LCAyKSwgJF9yZXR1cm4pO1xuICB9XG5cbiAgQHJldHVybiAkX3JldHVybjtcbn1cbiIsIi8vIFN1c3kgRmFsbGJhY2sgQ2xlYXJmaXhcbi8vID09PT09PT09PT09PT09PT09PT09PT1cblxuXG4vLyBDbGVhcmZpeFxuLy8gLS0tLS0tLS1cbi8vIENoZWNrIGZvciBhbiBleGlzdGluZyBzdXBwb3J0IG1peGluLCBvciBwcm92aWRlIGEgc2ltcGxlIGZhbGxiYWNrLlxuQG1peGluIHN1c3ktY2xlYXJmaXgge1xuICBAaWYgc3VzeS1zdXBwb3J0KGNsZWFyZml4LCAobWl4aW46IGNsZWFyZml4KSkge1xuICAgIEBpbmNsdWRlIGNsZWFyZml4O1xuICB9IEBlbHNlIHtcbiAgICAmOmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIFwiO1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBjbGVhcjogYm90aDtcbiAgICB9XG4gIH1cbn1cbiIsIi8vIFNwYW4gU3ludGF4XG4vLyA9PT09PT09PT09PVxuXG4vLyBTcGFuIFttaXhpbl1cbi8vIC0tLS0tLS0tLS0tLVxuLy8gU2V0IGEgc3Bhbm5pbmcgZWxlbWVudCB1c2luZyBzaG9ydGhhbmQgc3ludGF4LlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBtaXhpbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gICRpbnNwZWN0OiAkc3BhbjtcbiAgJHNwYW46IHBhcnNlLXNwYW4oJHNwYW4pO1xuICAkb3V0cHV0OiBzcGFuLW1hdGgoJHNwYW4pO1xuICAkbmVzdGluZzogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkY2xlYXI6IHN1c3ktZ2V0KGNsZWFyLCAkc3Bhbik7XG5cbiAgJGJveDogc3VzeS1nZXQoYm94LXNpemluZywgJHNwYW4pO1xuICAkY29udGVudC1ib3g6IGlmKHN1c3ktZ2V0KGdsb2JhbC1ib3gtc2l6aW5nKSAhPSAnYm9yZGVyLWJveCcsIHRydWUsIGZhbHNlKTtcbiAgJGJveDogJGJveCBvciBpZihpcy1pbnNpZGUoJHNwYW4pIGFuZCAkY29udGVudC1ib3gsIGJvcmRlci1ib3gsIG51bGwpO1xuXG4gIEBpZiAkY2xlYXIgPT0gYnJlYWsge1xuICAgIEBpbmNsdWRlIGJyZWFrO1xuICB9IEBlbHNlIGlmICRjbGVhciA9PSBub2JyZWFrIHtcbiAgICBAaW5jbHVkZSBub2JyZWFrO1xuICB9XG5cbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KHNwYW4sICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgb3V0cHV0KChib3gtc2l6aW5nOiAkYm94KSk7XG4gIEBpbmNsdWRlIGZsb2F0LXNwYW4tb3V0cHV0KCRvdXRwdXQuLi4pO1xuXG4gIEBpZiB2YWxpZC1jb2x1bW5zKCRuZXN0aW5nLCBzaWxlbnQpIHtcbiAgICBAaW5jbHVkZSBuZXN0ZWQoJHNwYW4pIHsgQGNvbnRlbnQ7IH1cbiAgfSBAZWxzZSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU3BhbiBbZnVuY3Rpb25dXG4vLyAtLS0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgd2lkdGggb2YgYSBzcGFuLlxuLy8gLSAkc3BhbiAgOiA8c3Bhbj5cbkBmdW5jdGlvbiBzcGFuKFxuICAkc3BhblxuKSB7XG4gIEByZXR1cm4gZ2V0LXNwYW4td2lkdGgoJHNwYW4pO1xufVxuXG4vLyBTcGFuIE1hdGhcbi8vIC0tLS0tLS0tLVxuLy8gR2V0IGFsbCB0aGUgc3BhbiByZXN1bHRzLlxuLy8gLSAkc3BhbjogPG1hcD5cbkBmdW5jdGlvbiBzcGFuLW1hdGgoXG4gICRzcGFuXG4pIHtcbiAgJG5lc3QgICAgICAgICAgICAgOiBpZihzdXN5LWdldChyb2xlLCAkc3BhbikgPT0gbmVzdCwgdHJ1ZSwgZmFsc2UpO1xuICAkc3BsaXQtbmVzdCAgICAgICA6IGlmKGlzLXNwbGl0KCRzcGFuKSBhbmQgJG5lc3QsIHRydWUsIGZhbHNlKTtcbiAgJGVkZ2UgICAgICAgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRsb2NhdGlvbiAgICAgICAgIDogZ2V0LWxvY2F0aW9uKCRzcGFuKTtcblxuICAkZmxvYXQgICAgICAgICAgICA6IGZyb207XG4gICRwYWRkaW5nLWJlZm9yZSAgIDogbnVsbDtcbiAgJHBhZGRpbmctYWZ0ZXIgICAgOiBudWxsO1xuICAkbWFyZ2luLWJlZm9yZSAgICA6IG51bGw7XG4gICRtYXJnaW4tYWZ0ZXIgICAgIDogbnVsbDtcblxuICAvLyBjYWxjdWxhdGUgd2lkdGhzXG4gICRzcHJlYWQ6IGluZGV4KG1hcC12YWx1ZXMoJHNwYW4pLCBzcHJlYWQpO1xuICAkc3BhbjogaWYoJHNwbGl0LW5lc3QgYW5kIG5vdCgkc3ByZWFkKSwgbWFwLW1lcmdlKCRzcGFuLCAoc3ByZWFkOiB3aWRlKSksICRzcGFuKTtcbiAgJHdpZHRoOiBnZXQtc3Bhbi13aWR0aCgkc3Bhbik7XG4gICRndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgLy8gYXBwbHkgZ3V0dGVyc1xuICBAaWYgaXMtaW5zaWRlKCRzcGFuKSB7XG4gICAgQGlmIG5vdChzdXN5LWdldChyb2xlLCAkc3BhbikpIHtcbiAgICAgICRwYWRkaW5nLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRwYWRkaW5nLWFmdGVyOiBtYXAtZ2V0KCRndXR0ZXJzLCBhZnRlcik7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAaWYgbm90KCRzcGxpdC1uZXN0KSB7XG4gICAgICAkbWFyZ2luLWJlZm9yZTogbWFwLWdldCgkZ3V0dGVycywgYmVmb3JlKTtcbiAgICAgICRtYXJnaW4tYWZ0ZXI6IG1hcC1nZXQoJGd1dHRlcnMsIGFmdGVyKTtcbiAgICB9XG4gIH1cblxuICAvLyBzcGVjaWFsIG1hcmdpbiBoYW5kbGluZ1xuICBAaWYgc3VzeS1nZXQob3V0cHV0LCAkc3BhbikgPT0gaXNvbGF0ZSBhbmQgJGxvY2F0aW9uIHtcbiAgICAkbWFyZ2luLWJlZm9yZTogZ2V0LWlzb2xhdGlvbigkc3Bhbik7XG4gICAgJG1hcmdpbi1hZnRlcjogLTEwMCU7XG4gIH0gQGVsc2UgaWYgJGVkZ2Uge1xuICAgICRpcy1zcGxpdDogaXMtc3BsaXQoJHNwYW4pO1xuICAgICRwb3M6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJHNwYW4pO1xuXG4gICAgQGlmICRlZGdlID09IGxhc3Qge1xuICAgICAgJGZsb2F0OiBzdXN5LWdldChsYXN0LWZsb3csICRzcGFuKTtcbiAgICB9XG5cbiAgICBAaWYgbm90KCRpcy1zcGxpdCkge1xuICAgICAgQGlmICRlZGdlID09IGZ1bGwgb3IgKCRlZGdlID09IGZpcnN0IGFuZCAkcG9zID09IGJlZm9yZSkge1xuICAgICAgICAkbWFyZ2luLWJlZm9yZTogMDtcbiAgICAgIH1cbiAgICAgIEBpZiAkZWRnZSA9PSBmdWxsIG9yICgkZWRnZSA9PSBsYXN0IGFuZCAkcG9zID09IGFmdGVyKSB7XG4gICAgICAgICRtYXJnaW4tYWZ0ZXI6IDA7XG4gICAgICB9XG4gICAgfVxuXG4gIH1cblxuICBAcmV0dXJuIChcbiAgICB3aWR0aCAgICAgICAgICAgOiAkd2lkdGgsXG4gICAgZmxvYXQgICAgICAgICAgIDogJGZsb2F0LFxuICAgIG1hcmdpbi1iZWZvcmUgICA6ICRtYXJnaW4tYmVmb3JlLFxuICAgIG1hcmdpbi1hZnRlciAgICA6ICRtYXJnaW4tYWZ0ZXIsXG4gICAgcGFkZGluZy1iZWZvcmUgIDogJHBhZGRpbmctYmVmb3JlLFxuICAgIHBhZGRpbmctYWZ0ZXIgICA6ICRwYWRkaW5nLWFmdGVyLFxuICAgIGZsb3cgICAgICAgICAgICA6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcbn1cblxuLy8gR2V0IFNwYW4gV2lkdGhcbi8vIC0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gc3BhbiB3aWR0aC5cbi8vIC0gJHNwYW46IDxtYXA+XG5AZnVuY3Rpb24gZ2V0LXNwYW4td2lkdGgoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG5cbiAgJG4gICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuICAkbG9jYXRpb24gOiBnZXQtbG9jYXRpb24oJHNwYW4pO1xuICAkY29sdW1ucyAgOiBzdXN5LWdldChjb2x1bW5zLCAkc3Bhbik7XG4gICRndXR0ZXJzICA6IHN1c3ktZ2V0KGd1dHRlcnMsICRzcGFuKTtcbiAgJHNwcmVhZCAgIDogc3VzeS1nZXQoc3ByZWFkLCAkc3Bhbik7XG5cbiAgJGNvbnRleHQgIDogbnVsbDtcbiAgJHNwYW4tc3VtIDogbnVsbDtcbiAgJHdpZHRoICAgIDogbnVsbDtcblxuICBAaWYgJG4gPT0gJ2Z1bGwnIHtcbiAgICAkcG9zOiBzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRzcGFuKTtcbiAgICAkcm9sZTogc3VzeS1nZXQocm9sZSwgJHNwYW4pO1xuICAgICRuOiBpZigkcG9zID09IHNwbGl0IGFuZCAkcm9sZSAhPSBuZXN0LCBzdXN5LWNvdW50KCRjb2x1bW5zKSwgMTAwJSk7XG4gIH1cblxuICBAaWYgdHlwZS1vZigkbikgIT0gbnVtYmVyIHtcbiAgICBAd2FybiBcIigje3R5cGUtb2YoJG4pfSkgI3skbn0gaXMgbm90IGEgdmFsaWQgc3Bhbi5cIjtcbiAgfSBAZWxzZSBpZiB1bml0bGVzcygkbikge1xuICAgICRjb250ZXh0OiBzdXN5LXN1bSgkY29sdW1ucywgJGd1dHRlcnMsIGlmKGlzLXNwbGl0KCRzcGFuKSwgd2lkZSwgbmFycm93KSk7XG4gICAgJHNwcmVhZDogaWYoaXMtaW5zaWRlKCRzcGFuKSwgJHNwcmVhZCBvciB3aWRlLCAkc3ByZWFkKTtcbiAgICAkc3Bhbi1zdW06IHN1c3koJG4sICRsb2NhdGlvbiwgJGNvbHVtbnMsICRndXR0ZXJzLCAkc3ByZWFkKTtcblxuICAgICRfbWF0aDogc3VzeS1nZXQobWF0aCwgJHNwYW4pO1xuICAgICRfY29sdW1uLXdpZHRoOiBzdXN5LWdldChjb2x1bW4td2lkdGgsICRzcGFuKTtcbiAgICBAaWYgJF9tYXRoID09IHN0YXRpYyB7XG4gICAgICAkd2lkdGg6ICRzcGFuLXN1bSAqIHZhbGlkLWNvbHVtbi1tYXRoKCRfbWF0aCwgJF9jb2x1bW4td2lkdGgpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHdpZHRoOiBwZXJjZW50YWdlKCRzcGFuLXN1bSAvICRjb250ZXh0KTtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgICR3aWR0aDogJG47XG4gIH1cblxuICBAcmV0dXJuICR3aWR0aDtcbn1cbiIsIi8qIGh0dHA6Ly9tZXllcndlYi5jb20vZXJpYy90b29scy9jc3MvcmVzZXQvIFxuICAgdjIuMCB8IDIwMTEwMTI2XG4gICBMaWNlbnNlOiBub25lIChwdWJsaWMgZG9tYWluKVxuKi9cbmh0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgcCwgYmxvY2txdW90ZSwgcHJlLCBhLCBhYmJyLCBhY3JvbnltLCBhZGRyZXNzLCBiaWcsIGNpdGUsIGNvZGUsIGRlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCwgc21hbGwsIHN0cmlrZSwgc3Ryb25nLCBzdWIsIHN1cCwgdHQsIHZhciwgYiwgdSwgaSwgY2VudGVyLCBkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLCBmaWVsZHNldCwgZm9ybSwgbGFiZWwsIGxlZ2VuZCwgdGFibGUsIGNhcHRpb24sIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRyLCB0aCwgdGQsIGFydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLCBmaWd1cmUsIGZpZ2NhcHRpb24sIGZvb3RlciwgaGVhZGVyLCBoZ3JvdXAsIG1lbnUsIG5hdiwgb3V0cHV0LCBydWJ5LCBzZWN0aW9uLCBzdW1tYXJ5LCB0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8ge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDtcbiAgZm9udC1zaXplOiAxMDAlO1xuICBmb250OiBpbmhlcml0O1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7IH1cblxuLyogSFRNTDUgZGlzcGxheS1yb2xlIHJlc2V0IGZvciBvbGRlciBicm93c2VycyAqL1xuYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWVudSwgbmF2LCBzZWN0aW9uIHtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuYm9keSB7XG4gIGxpbmUtaGVpZ2h0OiAxOyB9XG5cbm9sLCB1bCB7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7IH1cblxuYmxvY2txdW90ZSwgcSB7XG4gIHF1b3Rlczogbm9uZTsgfVxuXG5ibG9ja3F1b3RlOmJlZm9yZSwgYmxvY2txdW90ZTphZnRlciB7XG4gIGNvbnRlbnQ6ICcnO1xuICBjb250ZW50OiBub25lOyB9XG5cbnE6YmVmb3JlLCBxOmFmdGVyIHtcbiAgY29udGVudDogJyc7XG4gIGNvbnRlbnQ6IG5vbmU7IH1cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICBib3JkZXItc3BhY2luZzogMDsgfVxuXG4vKiBhcHBseSBhIG5hdHVyYWwgYm94IGxheW91dCBtb2RlbCB0byBhbGwgZWxlbWVudHMsIGJ1dCBhbGxvd2luZyBjb21wb25lbnRzIHRvIGNoYW5nZSAqL1xuaHRtbCB7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IH1cblxuKiwgKjpiZWZvcmUsICo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0OyB9XG5cbmltZyB7XG4gIG1heC13aWR0aDogMTAwJTsgfVxuXG4vKiA9PT09PT09PT09PT09PVxuICAgVFlQT0dSQVBIWVxuICAgPT09PT09PT09PT09PT0gKi9cbi8qIHJlZ3VsYXIgNDAwLCBzZW1pIGJvbGQgNjAwLCBib2xkIDgwMCovXG5ib2R5IHtcbiAgZm9udC1mYW1pbHk6IFwiT3BlbiBTYW5zXCIsIHNhbnMtc2VyaWY7XG4gIGxpbmUtaGVpZ2h0OiAxLjM7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgZm9udC1zaXplOiAwLjg3NXJlbTsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjlweCkge1xuICAgIGJvZHkge1xuICAgICAgcGFkZGluZy1ib3R0b206IDExNXB4OyB9IH1cblxucCB7XG4gIG1hcmdpbjogMTBweCAwOyB9XG5cbi5sYXJnZV90eHQge1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtc2l6ZTogMXJlbTsgfVxuXG5zdHJvbmcge1xuICBmb250LXdlaWdodDogODAwOyB9XG5cbmgxIHtcbiAgZm9udC1zaXplOiAzMHB4O1xuICBmb250LXNpemU6IDEuODc1cmVtO1xuICBmb250LXdlaWdodDogNDAwO1xuICBtYXJnaW46IDEwcHggMDsgfVxuICBoMTpmaXJzdC1vZi10eXBlIHtcbiAgICBtYXJnaW46IDAgMCAyMHB4IDA7IH1cblxuaDIge1xuICBmb250LXNpemU6IDIwcHg7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbWFyZ2luOiAxMHB4IDA7IH1cblxuaDMge1xuICBmb250LXNpemU6IDIwcHg7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgbWFyZ2luOiAxMHB4IDA7IH1cblxuYTpsaW5rLCBhOnZpc2l0ZWQge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIGNvbG9yOiAjZTMwNjEzOyB9XG5cbm1haW4gdWwsIG1haW4gb2wge1xuICBtYXJnaW46IDEwcHggMDtcbiAgcGFkZGluZy1sZWZ0OiAzMHB4OyB9XG5cbm1haW4gdWwge1xuICBsaXN0LXN0eWxlLXR5cGU6IGRpc2M7IH1cblxubWFpbiBvbCB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogZGVjaW1hbDsgfVxuXG4vKiA9PT09PT09PT09PT09PVxuICAgTGF5b3V0XG4gICA9PT09PT09PT09PT09PSAqL1xuLnBhZF93cmFwIHtcbiAgcGFkZGluZzogMCAyMHB4OyB9XG5cbi5jb250YWluZXIge1xuICBtYXgtd2lkdGg6IDEwMDBweDtcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gIG1hcmdpbi1yaWdodDogYXV0bzsgfVxuICAuY29udGFpbmVyOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIiBcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjbGVhcjogYm90aDsgfVxuXG4uaGlkZSB7XG4gIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfVxuXG4vKiA9PT09PT09PT09PT09PVxuICAgY29sb3Vyc1xuICAgPT09PT09PT09PT09PT0gKi9cbi8qYmFja2dyb3VuZHMqL1xuLmJnX2dyZXkge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGY4ZThiOyB9XG5cbi5iZ19kZ3JleSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzNjMwMmU7IH1cblxuLmJnX2xncmV5IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2U5ZThlODsgfVxuXG4uYmdfcmVkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2UzMDYxMzsgfVxuXG4uYmdfeWVsbG93IHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2VlYzExYTsgfVxuXG4vKmJhY2tncm91bmRzKi9cbi50eHRfZ3JleSB7XG4gIGNvbG9yOiAjOGY4ZThiOyB9XG5cbi50eHRfZGdyZXkge1xuICBjb2xvcjogIzM2MzAyZTsgfVxuXG4udHh0X2xncmV5IHtcbiAgY29sb3I6ICNlOWU4ZTg7IH1cblxuLnR4dF9yZWQge1xuICBjb2xvcjogI2UzMDYxMzsgfVxuXG4udHh0X3llbGxvdyB7XG4gIGNvbG9yOiAjZWVjMTFhOyB9XG5cbi8qV2lkZ2V0cyovXG4ud2lkZ2V0IHtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgZGlzcGxheTogYmxvY2s7IH1cbiAgLndpZGdldCBpbWcge1xuICAgIGRpc3BsYXk6IGJsb2NrOyB9XG4gICAgLndpZGdldCBpbWc6aG92ZXIge1xuICAgICAgb3BhY2l0eTogLjk7IH1cblxuLmFyY2hpdmUge1xuICBiYWNrZ3JvdW5kOiAjZTllOGU4O1xuICBwYWRkaW5nOiAxMHB4IDEwcHggNXB4IDEwcHg7XG4gIGRpc3BsYXk6IG5vbmU7IH1cbiAgLmFyY2hpdmUgaDIge1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgcGFkZGluZy1yaWdodDogMzYuMTcwMjElO1xuICAgIGJhY2tncm91bmQ6IHVybCguLi9pbWcvemlwLWljb24uc3ZnKSBuby1yZXBlYXQgcmlnaHQ7XG4gICAgYmFja2dyb3VuZC1zaXplOiAyNy42NTk1NyU7IH1cbiAgLmFyY2hpdmUgbGkge1xuICAgIHBhZGRpbmc6IDVweCAwO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZmZmZmZmOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OXB4KSB7XG4gICAgLmFyY2hpdmUge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH0gfVxuXG4uZG93bmxvYWRzIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY29sb3I6ICMwMDAwMDA7IH1cblxuLyp0YWJsZXMqL1xudGFibGUge1xuICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICB3aWR0aDogMTAwJTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgdGFibGUtbGF5b3V0OiBmaXhlZDsgfVxuICB0YWJsZSB0aCB7XG4gICAgYmFja2dyb3VuZDogIzAwMDAwMDtcbiAgICBjb2xvcjogI2ZmZmZmZjsgfVxuICB0YWJsZSB0ZCwgdGFibGUgdGgge1xuICAgIHBhZGRpbmc6IDVweCAxMHB4O1xuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNlOWU4ZTg7IH1cbiAgICB0YWJsZSB0ZDpmaXJzdC1jaGlsZCwgdGFibGUgdGg6Zmlyc3QtY2hpbGQge1xuICAgICAgYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjZTllOGU4OyB9XG4gIHRhYmxlIHRkIHtcbiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7IH1cbiAgdGFibGUgdHIge1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTllOGU4OyB9XG4gICAgdGFibGUgdHI6bGFzdC1jaGlsZCB7XG4gICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U5ZThlODsgfVxuICB0YWJsZS5mbGV4IHtcbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtOyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OXB4KSB7XG4gICAgdGFibGUuZmxleCB7XG4gICAgICB0YWJsZS1sYXlvdXQ6IGF1dG87XG4gICAgICBmb250LXNpemU6IDE0cHg7XG4gICAgICBmb250LXNpemU6IDAuODc1cmVtOyB9XG4gICAgICB0YWJsZS5mbGV4IHRkOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgd2lkdGg6IDE3MHB4OyB9IH1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY5cHgpIHtcbiAgdGFibGUuc3RhY2t0YWJsZS5zbWFsbC1vbmx5IHtcbiAgICBkaXNwbGF5OiBub25lOyB9IH1cblxudGFibGUuc3RhY2t0YWJsZS5sYXJnZS1vbmx5IHtcbiAgZGlzcGxheTogbm9uZTsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjlweCkge1xuICAgIHRhYmxlLnN0YWNrdGFibGUubGFyZ2Utb25seSB7XG4gICAgICBkaXNwbGF5OiBibG9jazsgfSB9XG5cbi8qID09PT09PT09PT09PVxuICAgSUNPTlNcbiAgID09PT09PT09PT09PSAqL1xuW2NsYXNzXj1cImljb24tXCJdLCBbY2xhc3MqPVwiIGljb24tXCJdIHtcbiAgaGVpZ2h0OiAyNHB4O1xuICB3aWR0aDogMjRweDtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBmaWxsOiBjdXJyZW50Q29sb3I7IH1cblxuLyogPT09PT09PT09PT09PT1cbiAgIE5BVklHQVRJT05cbiAgID09PT09PT09PT09PT09ICovXG5uYXYge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzYzMDJlOyB9XG4gIG5hdiBsaSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgY29sb3I6ICNmZmZmZmY7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyOyB9XG4gICAgbmF2IGxpLmFjdGl2ZSwgbmF2IGxpLm9wZW4ge1xuICAgICAgY29sb3I6ICNlZWMxMWE7IH1cbiAgICBuYXYgbGkgYSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBhZGRpbmc6IDVweCAwcHg7IH1cbiAgbmF2IGE6bGluaywgbmF2IGE6dmlzaXRlZCB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9XG4gIG5hdiAubWFpbl9uYXYge1xuICAgIHBhZGRpbmc6IDAgMjBweDtcbiAgICBtYXgtaGVpZ2h0OiAwO1xuICAgIHRyYW5zaXRpb246IG1heC1oZWlnaHQgLjhzO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9zaXRpb246IHJlbGF0aXZlOyB9XG4gICAgbmF2IC5tYWluX25hdiB1bCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgbWFyZ2luLXRvcDogNXB4OyB9XG4gICAgICBuYXYgLm1haW5fbmF2IHVsIGxpOmxhc3QtY2hpbGQge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogNXB4OyB9XG4gICAgbmF2IC5tYWluX25hdiAuYWN0aXZlIHVsIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrOyB9XG4gICAgbmF2IC5tYWluX25hdiAuYWN0aXZlIGxpLCBuYXYgLm1haW5fbmF2IC5vcGVuIGxpIHtcbiAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVjMTFhO1xuICAgICAgY29sb3I6ICNmZmZmZmY7IH1cbiAgICAgIG5hdiAubWFpbl9uYXYgLmFjdGl2ZSBsaTpsYXN0LWNoaWxkLCBuYXYgLm1haW5fbmF2IC5vcGVuIGxpOmxhc3QtY2hpbGQge1xuICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2VlYzExYTsgfVxuICAubmF2LW9wZW4gbmF2IC5tYWluX25hdiB7XG4gICAgbWF4LWhlaWdodDogNzAwcHg7IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY5cHgpIHtcbiAgICBuYXYgbGkge1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsgfVxuICAgICAgbmF2IGxpIGEge1xuICAgICAgICBwYWRkaW5nOiA1cHggMTBweDsgfVxuICAgICAgbmF2IGxpOmZpcnN0LWNoaWxkIGEge1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IDA7IH1cbiAgICAgIG5hdiBsaTpsYXN0LWNoaWxkIGEge1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMHB4OyB9XG4gICAgbmF2IC5tYWluX25hdiB7XG4gICAgICBtYXgtaGVpZ2h0OiBub25lOyB9XG4gICAgICBuYXYgLm1haW5fbmF2IC5hY3RpdmUgdWwsIG5hdiAubWFpbl9uYXYgLm9wZW4gdWwge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0gfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDQwcHgpIHtcbiAgICBuYXYgLm1haW5fbmF2IHtcbiAgICAgIHBhZGRpbmc6IDA7IH0gfVxuXG4jdG9nZ2xlX21lbnUge1xuICB3aWR0aDogMTAwJTtcbiAgY29sb3I6ICNmZmZmZmY7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmc6IDVweDsgfVxuICAubmF2LW9wZW4gI3RvZ2dsZV9tZW51IHNwYW46YmVmb3JlIHtcbiAgICBjb250ZW50OiAnQ2xvc2UgJzsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjlweCkge1xuICAgICN0b2dnbGVfbWVudSB7XG4gICAgICBkaXNwbGF5OiBub25lOyB9IH1cblxuLyogPT09PT09PT09PT09PT1cbiAgIEhFQURFUlxuICAgPT09PT09PT09PT09PT0gKi9cbmhlYWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4ZjhlOGI7IH1cbiAgaGVhZGVyIC5wYWRfd3JhcDpmaXJzdC1jaGlsZCB7XG4gICAgcGFkZGluZzogMjBweCAwOyB9XG5cbi5sb2dvIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAwIDIwcHg7IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogOTAwcHgpIHtcbiAgICAubG9nbyB7XG4gICAgICB3aWR0aDogNDklOyB9IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTA0MHB4KSB7XG4gICAgLmxvZ28ge1xuICAgICAgcGFkZGluZzogMDsgfSB9XG5cbiNiYW5uZXIge1xuICB3aWR0aDogMTAwJTtcbiAgZGlzcGxheTogYmxvY2s7IH1cblxuLmludHJvX3R4dCB7XG4gIHBhZGRpbmc6IDIwcHg7XG4gIGNvbG9yOiAjZmZmZmZmO1xuICBmb250LXNpemU6IDIwcHg7XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTsgfVxuICAuaW50cm9fdHh0IHAge1xuICAgIG1hcmdpbjogMDsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjlweCkge1xuICAgIC5pbnRyb190eHQge1xuICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgZm9udC1zaXplOiAxLjM3NXJlbTtcbiAgICAgIHBhZGRpbmc6IDMycHggMjBweCAzMnB4IDIwcHg7IH1cbiAgICAgIC5pbnRyb190eHQgLmlubmVyIHtcbiAgICAgICAgd2lkdGg6IDgzJTtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMiU7IH0gfVxuXG4vKiA9PT09PT09PT09PT09PVxuICAgTGF5b3V0XG4gICA9PT09PT09PT09PT09PSAqL1xubWFpbiB7XG4gIGNsZWFyOiBib3RoOyB9XG4gIC5jb250YWluZXIgbWFpbjpmaXJzdC1jaGlsZCB7XG4gICAgcGFkZGluZy10b3A6IDM1LjVweDsgfVxuICAucGFuZWxzOm5vdCgubGFyZ2UpICsgbWFpbiB7XG4gICAgbWFyZ2luLXRvcDogMjBweDsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjlweCkge1xuICAgIG1haW4ge1xuICAgICAgd2lkdGg6IDgzJTtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAyJTsgfVxuICAgICAgLnBhbmVsczpub3QoLmxhcmdlKSArIG1haW4ge1xuICAgICAgICBtYXJnaW4tdG9wOiAwcHg7IH1cbiAgICAgIG1haW4ud2lkZSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgICAgIG1hcmdpbi1yaWdodDogMDsgfSB9XG5cbmFzaWRlIGFydGljbGUgaDI6Zmlyc3QtY2hpbGQge1xuICBtYXJnaW4tdG9wOiAwOyB9XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OXB4KSB7XG4gIGFzaWRlLnNpZGViYXIge1xuICAgIHdpZHRoOiAyMy41JTtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAwOyB9IH1cblxuLypQYW5lbHMqL1xuLnBhbmVscyB7XG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nLXRvcDogNDBweDsgfVxuICAucGFuZWxzOm5vdCgubGFyZ2UpIHtcbiAgICBkaXNwbGF5OiBub25lOyB9XG4gIC5wYW5lbHMgLml0ZW0ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxNSU7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgZm9udC1zaXplOiAwLjgxMjVyZW07XG4gICAgY29sb3I6ICMwMDAwMDA7XG4gICAgb3BhY2l0eTogLjM7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlZWMxMWE7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWMxMWE7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICBwYWRkaW5nOiA1cHggMDtcbiAgICBoZWlnaHQ6IDYwcHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjsgfVxuICAgIC5wYW5lbHMgLml0ZW0gc3BhbiB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGNvbG9yOiAjOGY4ZThiOyB9XG4gICAgLnBhbmVscyAuaXRlbTpudGgtY2hpbGQoNm4pIHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIG1hcmdpbi1yaWdodDogMDsgfVxuICAgIC5wYW5lbHMgLml0ZW0uYWN0aXZlIHtcbiAgICAgIG9wYWNpdHk6IDE7IH1cbiAgICAucGFuZWxzIC5pdGVtIGE6bGluaywgLnBhbmVscyAuaXRlbSBhOnZpc2l0ZWQge1xuICAgICAgY29sb3I6ICMwMDAwMDA7IH1cbiAgLnBhbmVscy5sYXJnZSAuaXRlbSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiBhdXRvO1xuICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgZm9udC1zaXplOiAyMHB4O1xuICAgIGZvbnQtc2l6ZTogMS4yNXJlbTsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjlweCkge1xuICAgIC5wYW5lbHM6bm90KC5sYXJnZSkge1xuICAgICAgZGlzcGxheTogYmxvY2s7IH1cbiAgICAucGFuZWxzLmxhcmdlIC5pdGVtIHtcbiAgICAgIHdpZHRoOiAyMy41JTtcbiAgICAgIGZsb2F0OiBsZWZ0O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICAgIG1hcmdpbi1ib3R0b206IDQwcHg7XG4gICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgaGVpZ2h0OiA5MHB4O1xuICAgICAgb3BhY2l0eTogMTsgfVxuICAgICAgLnBhbmVscy5sYXJnZSAuaXRlbTpudGgtY2hpbGQoNG4pIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IDA7IH0gfVxuXG4vKmxvZ29zKi9cbi5sb2dvcyBhcnRpY2xlIHtcbiAgYmFja2dyb3VuZDogI2U5ZThlODtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDsgfVxuXG4ubG9nb3MgLnR4dCB7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7IH1cblxuLmxvZ29zIC5pbWcge1xuICBkaXNwbGF5OiBub25lOyB9XG5cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OXB4KSB7XG4gIC5sb2dvcyBhcnRpY2xlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tbGVmdDogMDtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7IH1cbiAgLmxvZ29zIC50eHQge1xuICAgIHdpZHRoOiA2OS4yNzcxMSU7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyLjQwOTY0JTsgfVxuICAubG9nb3MgLmltZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogMTBweDtcbiAgICB3aWR0aDogMjguMzEzMjUlO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7IH1cbiAgICAubG9nb3MgLmltZyBpbWcge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogMTAwJTsgfSB9XG5cbi8qQUNDT1JESU9OKi9cbi5hY2NvcmRpb24gYXJ0aWNsZSB7XG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVjMTFhOyB9XG4gIC5hY2NvcmRpb24gYXJ0aWNsZTpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNlZWMxMWE7IH1cbiAgLmFjY29yZGlvbiBhcnRpY2xlID4gaDIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbGluZS1oZWlnaHQ6IDE7IH1cbiAgLmFjY29yZGlvbiBhcnRpY2xlID4gaDI6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICdcXDAyNzk1JztcbiAgICAvKiBVbmljb2RlIGNoYXJhY3RlciBmb3IgXCJwbHVzXCIgc2lnbiAoKykgKi9cbiAgICBmb250LXNpemU6IDEycHg7XG4gICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgIGZvbnQtd2VpZ2h0OiAyMDA7IH1cbiAgLmFjY29yZGlvbiBhcnRpY2xlLmFjdGl2ZSA+IGgyOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIlxcMjc5NlwiO1xuICAgIC8qIFVuaWNvZGUgY2hhcmFjdGVyIGZvciBcIm1pbnVzXCIgc2lnbiAoLSkgKi8gfVxuICAuYWNjb3JkaW9uIGFydGljbGUgLnBhbmVsIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMC4ycyBlYXNlLW91dDsgfVxuXG4vKk1BUCovXG4ubWFwX2FyZWEge1xuICBwYWRkaW5nOiA0MHB4IDIwcHg7IH1cbiAgLm1hcF9hcmVhIC5sZWZ0IHtcbiAgICBtYXJnaW4tYm90dG9tOiA0MHB4OyB9XG4gIC5tYXBfYXJlYSBoMzpmaXJzdC1jaGlsZCB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgICBsaW5lLWhlaWdodDogMTsgfVxuICAubWFwX2FyZWEgcCArIGgzIHtcbiAgICBtYXJnaW4tdG9wOiAzMHB4OyB9XG4gIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2OXB4KSB7XG4gICAgLm1hcF9hcmVhIC5sZWZ0IHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICB3aWR0aDogNjYlO1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDIlOyB9XG4gICAgLm1hcF9hcmVhIC5yaWdodCB7XG4gICAgICB3aWR0aDogMzIlO1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwOyB9IH1cblxuLypDT0xVTU5TKi9cbi5jb2x1bW5zIHtcbiAgcGFkZGluZzogMzBweCAwOyB9XG4gIC5jb2x1bW5zOmFmdGVyIHtcbiAgICBjb250ZW50OiBcIiBcIjtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjbGVhcjogYm90aDsgfVxuICAuY29sdW1ucy5zcGFuXzQgYXJ0aWNsZSB7XG4gICAgbWFyZ2luOiAwIDIwcHg7IH1cbiAgICAuY29sdW1ucy5zcGFuXzQgYXJ0aWNsZSBoMiB7XG4gICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgIG1pbi1oZWlnaHQ6IDcwcHg7XG4gICAgICBwYWRkaW5nOiA4cHggMDtcbiAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVjMTFhO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWMxMWE7IH1cbiAgICAuY29sdW1ucy5zcGFuXzQgYXJ0aWNsZSBoMyB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgZm9udC1zaXplOiAxM3B4O1xuICAgICAgZm9udC1zaXplOiAwLjgxMjVyZW07IH1cbiAgICAgIC5jb2x1bW5zLnNwYW5fNCBhcnRpY2xlIGgzICsgcCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7IH1cbiAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzY5cHgpIHtcbiAgICAuY29sdW1ucy5zcGFuXzQgYXJ0aWNsZSB7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICB3aWR0aDogMzIlO1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDIlOyB9XG4gICAgICAuY29sdW1ucy5zcGFuXzQgYXJ0aWNsZTpudGgtb2YtdHlwZSgzKSB7XG4gICAgICAgIHdpZHRoOiAzMiU7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOyB9IH1cblxuLyogPT09PT09PT09PT09PT1cbiAgIENPTVBPTkVOVFNcbiAgID09PT09PT09PT09PT09ICovXG4vKiA9PT09PT09PT09PT09PVxuICAgRk9PVEVSXG4gICA9PT09PT09PT09PT09PSAqL1xuZm9vdGVyIHtcbiAgYmFja2dyb3VuZDogIzM2MzAyZTtcbiAgY29sb3I6ICNmZmZmZmY7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6IDEwcHggMjBweDtcbiAgbWFyZ2luLXRvcDogMjBweDtcbiAgZm9udC1zaXplOiAxN3B4O1xuICBmb250LXNpemU6IDEuMDYyNXJlbTsgfVxuICBmb290ZXIgbmF2IGxpIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgdGV4dC1hbGlnbjogbGVmdDsgfVxuICAgIGZvb3RlciBuYXYgbGkgYSB7XG4gICAgICBwYWRkaW5nOiAwOyB9XG4gIGZvb3RlciBwIHtcbiAgICBtYXJnaW46IDA7IH1cbiAgZm9vdGVyIGE6bGluaywgZm9vdGVyIGE6dmlzaXRlZCB7XG4gICAgY29sb3I6ICNlZWMxMWE7IH1cbiAgZm9vdGVyIC5xdWlja19saW5rcyB7XG4gICAgbWFyZ2luLXRvcDogMjBweDsgfVxuICAgIGZvb3RlciAucXVpY2tfbGlua3MgbGkge1xuICAgICAgYmFja2dyb3VuZDogdXJsKC4uL2ltZy9kaXNjLnN2Zykgbm8tcmVwZWF0IGNlbnRlciBsZWZ0O1xuICAgICAgcGFkZGluZzogMCAwIDAgMTVweDtcbiAgICAgIGJhY2tncm91bmQtc2l6ZTogNXB4O1xuICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4OyB9XG4gICAgZm9vdGVyIC5xdWlja19saW5rcyBoMyB7XG4gICAgICBtYXJnaW46IDA7IH1cbiAgZm9vdGVyIC5zaXRlYnkge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICBjbGVhcjogYm90aDtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gICAgZm9udC1zaXplOiAwLjYyNXJlbTtcbiAgICBwYWRkaW5nOiAxMHB4O1xuICAgIG1hcmdpbi1yaWdodDogMjBweDsgfVxuICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjlweCkge1xuICAgIGZvb3RlciB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICBib3R0b206IDBweDtcbiAgICAgIGhlaWdodDogMTEwcHg7IH1cbiAgICAgIGZvb3RlciAudHh0IHtcbiAgICAgICAgd2lkdGg6IDU3LjUlO1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyJTsgfVxuICAgICAgZm9vdGVyIC5xdWlja19saW5rcyB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgIHdpZHRoOiAzMiU7XG4gICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwOyB9IH1cbiIsIi8qID09PT09PT09PT09PT09XG4gICBOQVZJR0FUSU9OXG4gICA9PT09PT09PT09PT09PSAqL1xubmF2IHtcblx0YmFja2dyb3VuZC1jb2xvcjokZGFyay1ncmV5O1xuXHRsaSB7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0Y29sb3I6ICNmZmZmZmY7XG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFxuXG5cblx0XHRcblx0XHQmLmFjdGl2ZSwgJi5vcGVuIHtcblx0XHRcdGNvbG9yOiAkeWVsbG93O1xuXHRcdH1cblxuXHRcdGEge1xuXHRcdFx0ZGlzcGxheTogYmxvY2s7XG5cdFx0XHRwYWRkaW5nOjVweCAwcHg7XG5cdFx0fVxuXG5cdH1cblxuXG5cdGE6bGluaywgYTp2aXNpdGVkIHtcblx0XHRjb2xvcjogaW5oZXJpdDtcblx0XHR0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cdH1cblxuXHQubWFpbl9uYXYge1xuXHRcdHBhZGRpbmc6MCAyMHB4O1xuXHRcdG1heC1oZWlnaHQ6IDA7XG5cdCAgICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IC44cztcblx0ICAgIG92ZXJmbG93OiBoaWRkZW47XG5cdCAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cblx0ICAgIHVsIHtcblx0ICAgIFx0ZGlzcGxheTogbm9uZTtcblx0ICAgIFx0bWFyZ2luLXRvcDogNXB4O1xuXG5cdCAgICBcdGxpOmxhc3QtY2hpbGQge1xuXHQgICAgXHRcdHBhZGRpbmctYm90dG9tOjVweDtcblx0ICAgIFx0fVxuXG5cdCAgICB9XG5cblx0ICAgIC5hY3RpdmUge1xuXHQgICAgXHR1bCB7XG5cdCAgICBcdFx0ZGlzcGxheTogYmxvY2s7XG5cdCAgICBcdH1cblx0ICAgIH1cblxuXHQgICAgLmFjdGl2ZSwgLm9wZW4ge1xuXHQgICAgXHRsaSB7XG5cdCAgICBcdFx0Ym9yZGVyLXRvcDoxcHggc29saWQgJHllbGxvdztcblx0ICAgIFx0XHRjb2xvcjogI2ZmZmZmZjtcblxuXHQgICAgXHRcdCY6bGFzdC1jaGlsZHtcblx0ICAgIFx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkeWVsbG93O1xuXHQgICAgXHRcdH1cblx0ICAgIFx0fVxuXHQgICAgfVxuXG5cdH1cblxuXHQubmF2LW9wZW4gJiB7XG5cdFx0Lm1haW5fbmF2IHtcblx0XHQgICAgbWF4LWhlaWdodDogNzAwcHg7XG5cdFx0ICAgIFxuXHRcdH1cblx0fVxuXG5cdEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICR3aWR0aC1tZWRpdW0pIHtcblx0XHRsaSB7XG5cdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdFx0YSB7XG5cdFx0XHRcdHBhZGRpbmc6NXB4IDEwcHg7XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdCY6Zmlyc3QtY2hpbGQge1xuXHRcdFx0XHRhIHtcblx0XHRcdFx0XHRwYWRkaW5nLWxlZnQ6MDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0JjpsYXN0LWNoaWxkIHtcblx0XHRcdFx0YSB7XG5cdFx0XHRcdFx0cGFkZGluZy1ib3R0b206MHB4O1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHR9XG5cdFx0Lm1haW5fbmF2IHtcblx0XHRcdG1heC1oZWlnaHQ6IG5vbmU7XG5cdFx0XHQuYWN0aXZlLCAub3BlbiB7XG5cdFx0ICAgIFx0dWwge1xuXHRcdCAgICBcdFx0ZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuXHRcdCAgICBcdH1cblx0XHQgICAgfVxuXHRcdH1cblx0fVxuXHRAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWF4LXdpZHRoICsgNDBweCkge1xuXHRcdC5tYWluX25hdiB7XG5cdFx0XHRwYWRkaW5nOjA7XG5cblxuXHRcdH1cblx0fVxufVxuXG4jdG9nZ2xlX21lbnUge1xuXHR3aWR0aDoxMDAlO1xuXHRjb2xvcjojZmZmZmZmO1xuXHR0ZXh0LWFsaWduOmNlbnRlcjtcblx0dGV4dC10cmFuc2Zvcm06dXBwZXJjYXNlO1xuXHRkaXNwbGF5OmJsb2NrO1xuXHRwYWRkaW5nOjVweDtcblxuXHQubmF2LW9wZW4gJiB7XG5cdFx0c3BhbjpiZWZvcmUge1xuXHRcdFx0Y29udGVudDogJ0Nsb3NlICc7XG5cdFx0fVxuXHR9XG5cblx0QG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJHdpZHRoLW1lZGl1bSkge1xuXHRcdGRpc3BsYXk6IG5vbmU7XG5cdH1cbn0iLCIvKiA9PT09PT09PT09PT09PVxuICAgSEVBREVSXG4gICA9PT09PT09PT09PT09PSAqL1xuaGVhZGVyIHtcblx0YmFja2dyb3VuZC1jb2xvcjokZ3JleTtcblx0XG5cdC5wYWRfd3JhcDpmaXJzdC1jaGlsZCB7XG5cdFx0cGFkZGluZzokZ2VuZXJhbC1wYWRkaW5nIDA7XG5cdH1cbn1cbi5sb2dvIHtcblx0ZGlzcGxheTogYmxvY2s7XG5cdFxuXHR3aWR0aDoxMDAlO1xuXHRwYWRkaW5nOjAgMjBweDtcblxuXHRAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkd2lkdGgtbGFyZ2UpIHtcblx0XHR3aWR0aDogc3Bhbig2KTtcblx0fVxuXHRAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWF4LXdpZHRoICsgNDBweCkge1xuXHRcdHBhZGRpbmc6MDtcblx0fVxufVxuXG4jYmFubmVyIHtcblx0Ly8gaGVpZ2h0OjMwcHg7XG5cdC8vbm93IGEgaW1nIHRhZ1xuXHR3aWR0aDoxMDAlO1xuXHRkaXNwbGF5OmJsb2NrO1xuXHQvLyBiYWNrZ3JvdW5kOnVybCguLi9pbWFnZXMvYmFubmVyLmpwZykgbm8tcmVwZWF0O1xuXHQvLyBiYWNrZ3JvdW5kLXNpemU6Y292ZXI7XG59XG5cbi5pbnRyb190eHQge1xuXHRwYWRkaW5nOiRzaWRlLXBhZGRpbmc7XG5cdGNvbG9yOiNmZmZmZmY7XG5cdEBpbmNsdWRlIGZvbnQtc2l6ZSgyMCk7XG5cdHB7XG5cdFx0bWFyZ2luOjA7XG5cdH1cblx0XG5cblx0QG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJHdpZHRoLW1lZGl1bSkge1xuXHRcdEBpbmNsdWRlIGZvbnQtc2l6ZSgyMik7XG5cdFx0cGFkZGluZzozMnB4ICRzaWRlLXBhZGRpbmcgMzJweCAkc2lkZS1wYWRkaW5nO1xuXG5cdFx0LmlubmVyIHtcblx0XHRcdEBpbmNsdWRlIHNwYW4oMTApO1xuXHRcdH1cblx0fVxufSIsIi8vIERpcmVjdGlvbiBIZWxwZXJzXG4vLyA9PT09PT09PT09PT09PT09PVxuXG4vLyBTdXN5IEZsb3cgRGVmYXVsdHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gLSBQUklWQVRFXG5AaW5jbHVkZSBzdXN5LWRlZmF1bHRzKChcbiAgZmxvdzogbHRyLFxuKSk7XG5cbi8vIEdldCBEaXJlY3Rpb25cbi8vIC0tLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgJ2Zyb20nIG9yICd0bycgZGlyZWN0aW9uIG9mIGEgbHRyIG9yIHJ0bCBmbG93LlxuLy8gLSBbJGZsb3ddICA6IGx0ciB8IHJ0bFxuLy8gLSBbJGtleV0gICA6IGZyb20gfCB0b1xuQGZ1bmN0aW9uIGdldC1kaXJlY3Rpb24oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KSxcbiAgJGtleTogZnJvbVxuKSB7XG4gICRyZXR1cm46IGlmKCRmbG93ID09IHJ0bCwgKGZyb206IHJpZ2h0LCB0bzogbGVmdCksIChmcm9tOiBsZWZ0LCB0bzogcmlnaHQpKTtcbiAgQHJldHVybiBtYXAtZ2V0KCRyZXR1cm4sICRrZXkpO1xufVxuXG4vLyBUb1xuLy8gLS1cbi8vIFJldHVybiB0aGUgJ3RvJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gdG8oXG4gICRmbG93OiBtYXAtZ2V0KCRzdXN5LWRlZmF1bHRzLCBmbG93KVxuKSB7XG4gIEByZXR1cm4gZ2V0LWRpcmVjdGlvbigkZmxvdywgdG8pO1xufVxuXG4vLyBGcm9tXG4vLyAtLS0tXG4vLyBSZXR1cm4gdGhlICdmcm9tJyBkaXJlY3Rpb24gb2YgYSBmbG93XG4vLyAtIFskZmxvd10gIDogbHRyIHwgcnRsXG5AZnVuY3Rpb24gZnJvbShcbiAgJGZsb3c6IG1hcC1nZXQoJHN1c3ktZGVmYXVsdHMsIGZsb3cpXG4pIHtcbiAgQHJldHVybiBnZXQtZGlyZWN0aW9uKCRmbG93LCBmcm9tKTtcbn1cbiIsIi8vIEd1dHRlciBTeW50YXhcbi8vID09PT09PT09PT09PT1cblxuXG4vLyBHdXR0ZXJzXG4vLyAtLS0tLS0tXG4vLyBTZXQgZ3V0dGVycyBvbiBhbiBlbGVtZW50LlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AbWl4aW4gZ3V0dGVycyhcbiAgJHNwYW46ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJHNwYW47XG4gICRzcGFuICAgICA6IHBhcnNlLWd1dHRlcnMoJHNwYW4pO1xuICAkX2d1dHRlcnMgOiBnZXQtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9vdXRwdXQ6IChcbiAgICBiZWZvcmU6IG1hcC1nZXQoJF9ndXR0ZXJzLCBiZWZvcmUpLFxuICAgIGFmdGVyOiBtYXAtZ2V0KCRfZ3V0dGVycywgYWZ0ZXIpLFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRzcGFuKSxcbiAgKTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZ3V0dGVycywgJGluc3BlY3QpO1xuXG4gIEBpZiBpcy1pbnNpZGUoJHNwYW4pIHtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW91dHB1dCgkX291dHB1dC4uLik7XG4gIH0gQGVsc2Uge1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vdXRwdXQoJF9vdXRwdXQuLi4pO1xuICB9XG59XG5cbkBtaXhpbiBndXR0ZXIoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGd1dHRlcnMoJHNwYW4pO1xufVxuXG5cbi8vIEd1dHRlclxuLy8gLS0tLS0tXG4vLyBSZXR1cm4gdGhlIHdpZHRoIG9mIGEgZ3V0dGVyLlxuLy8gLSBbJHNwYW5dICAgOiA8c2V0dGluZ3M+XG5AZnVuY3Rpb24gZ3V0dGVyKFxuICAkc3BhbjogJHN1c3lcbikge1xuICAkc3BhbjogcGFyc2UtZ3V0dGVycygkc3Bhbik7XG5cbiAgJF9ndXR0ZXJzOiBnZXQtZ3V0dGVycygkc3Bhbik7XG4gICRfZ3V0dGVyczogbWFwLWdldCgkX2d1dHRlcnMsIGJlZm9yZSkgb3IgbWFwLWdldCgkX2d1dHRlcnMsIGFmdGVyKTtcblxuICBAcmV0dXJuICRfZ3V0dGVycztcbn1cblxuQGZ1bmN0aW9uIGd1dHRlcnMoXG4gICRzcGFuOiAkc3VzeVxuKSB7XG4gIEByZXR1cm4gZ3V0dGVyKCRzcGFuKTtcbn1cblxuXG4vLyBHZXQgR3V0dGVyIFdpZHRoXG4vLyAtLS0tLS0tLS0tLS0tLS0tXG4vLyBSZXR1cm4gZ3V0dGVyIHdpZHRoLlxuLy8gLSBbJGNvbnRleHRdOiA8Y29udGV4dD5cbkBmdW5jdGlvbiBnZXQtZ3V0dGVyLXdpZHRoKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgOiBwYXJzZS1ndXR0ZXJzKCRjb250ZXh0KTtcblxuICAkX2d1dHRlcnMgOiBzdXN5LWdldChndXR0ZXJzLCAkY29udGV4dCk7XG4gICRfZ3V0dGVyICA6IHN1c3ktZ2V0KGd1dHRlci1vdmVycmlkZSwgJGNvbnRleHQpO1xuXG4gIEBpZiAkX2d1dHRlcnMgYW5kICgkX2d1dHRlcnMgPiAwKSBhbmQgbm90KCRfZ3V0dGVyKSB7XG4gICAgJF9jb2x1bW4td2lkdGg6IHN1c3ktZ2V0KGNvbHVtbi13aWR0aCwgJGNvbnRleHQpO1xuICAgICRfbWF0aDogZ3V0dGVyLW1hdGgoJGNvbnRleHQpO1xuICAgIEBpZiAkX21hdGggPT0gc3RhdGljIHtcbiAgICAgICRfZ3V0dGVyOiAkX2d1dHRlcnMgKiB2YWxpZC1jb2x1bW4tbWF0aCgkX21hdGgsICRfY29sdW1uLXdpZHRoKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICRfY29sdW1ucyA6IHN1c3ktZ2V0KGNvbHVtbnMsICRjb250ZXh0KTtcbiAgICAgICRfc3ByZWFkICA6IGlmKGlzLXNwbGl0KCRjb250ZXh0KSwgd2lkZSwgc3VzeS1nZXQoc3ByZWFkLCAkY29udGV4dCkpO1xuICAgICAgJF9ndXR0ZXIgIDogcGVyY2VudGFnZSgkX2d1dHRlcnMgLyBzdXN5LXN1bSgkX2NvbHVtbnMsICRfZ3V0dGVycywgJF9zcHJlYWQpKTtcbiAgICB9XG4gIH1cblxuICAkX2d1dHRlcjogaWYoJF9ndXR0ZXIgPT0gJ25vLWd1dHRlcnMnIG9yICRfZ3V0dGVyID09ICduby1ndXR0ZXInLCBudWxsLCAkX2d1dHRlcik7XG5cbiAgQHJldHVybiAkX2d1dHRlcjtcbn1cblxuXG4vLyBHZXQgR3V0dGVyc1xuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiBiZWZvcmUgYW5kIGFmdGVyIGd1dHRlciB2YWx1ZXMuXG4vLyAtIFskY29udGV4dF06IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGdldC1ndXR0ZXJzKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkY29udGV4dCAgICAgICAgICAgIDogcGFyc2UtZ3V0dGVycygkY29udGV4dCk7XG5cbiAgJF9ndXR0ZXItcG9zaXRpb24gICA6IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuICAkX2d1dHRlciAgICAgICAgICAgIDogZ2V0LWd1dHRlci13aWR0aCgkY29udGV4dCk7XG5cbiAgJF9yZXR1cm4gICAgICAgICAgICA6IChiZWZvcmU6IG51bGwsIGFmdGVyOiBudWxsKTtcblxuICBAaWYgaXMtc3BsaXQoJGNvbnRleHQpIGFuZCAkX2d1dHRlciB7XG4gICAgJF9ndXR0ZXI6ICRfZ3V0dGVyIC8gMjtcbiAgICAkX3JldHVybjogbWFwLW1lcmdlKCRfcmV0dXJuLCAoYmVmb3JlOiAkX2d1dHRlciwgYWZ0ZXI6ICRfZ3V0dGVyKSk7XG4gIH0gQGVsc2Uge1xuICAgICRfcmV0dXJuOiBtYXAtbWVyZ2UoJF9yZXR1cm4sICgkX2d1dHRlci1wb3NpdGlvbjogJF9ndXR0ZXIpKTtcbiAgfVxuXG4gIEByZXR1cm4gJF9yZXR1cm47XG59XG5cblxuLy8gSXMgSW5zaWRlXG4vLyAtLS0tLS0tLS1cbi8vIFJldHVybnMgdHJ1ZSBpZiBndXR0ZXJzIGFyZSBpbnNpZGUuXG4vLyAkY29udGV4dDogPGNvbnRleHQ+XG5AZnVuY3Rpb24gaXMtaW5zaWRlKFxuICAkY29udGV4dFxuKSB7XG4gICRfaW5zaWRlOiBpbnNpZGUgaW5zaWRlLXN0YXRpYztcbiAgJF9ndXR0ZXItcG9zaXRpb246IHN1c3ktZ2V0KGd1dHRlci1wb3NpdGlvbiwgJGNvbnRleHQpO1xuXG4gIEByZXR1cm4gaWYoaW5kZXgoJF9pbnNpZGUsICRfZ3V0dGVyLXBvc2l0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xufVxuXG5cbi8vIElzIFNwbGl0XG4vLyAtLS0tLS0tLVxuLy8gUmV0dXJucyB0cnVlIGlmIGd1dHRlcnMgYXJlIHNwbGl0LlxuLy8gJGNvbnRleHQ6IDxjb250ZXh0PlxuQGZ1bmN0aW9uIGlzLXNwbGl0KFxuICAkY29udGV4dFxuKSB7XG4gICRfc3BsaXQ6IHNwbGl0IGluc2lkZSBpbnNpZGUtc3RhdGljO1xuICAkX2d1dHRlci1wb3NpdGlvbjogc3VzeS1nZXQoZ3V0dGVyLXBvc2l0aW9uLCAkY29udGV4dCk7XG5cbiAgQHJldHVybiBpZihpbmRleCgkX3NwbGl0LCAkX2d1dHRlci1wb3NpdGlvbiksIHRydWUsIGZhbHNlKTtcbn1cblxuXG4vLyBHdXR0ZXIgTWF0aFxuLy8gLS0tLS0tLS0tLS1cbi8vIFJldHVybiB0aGUgbWF0aCB0byB1c2UgZm9yIGd1dHRlciBjYWxjdWxhdGlvbnNcbi8vICRjb250ZXh0OiA8Y29udGV4dD5cbkBmdW5jdGlvbiBndXR0ZXItbWF0aChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJF9yZXR1cm4gIDogc3VzeS1nZXQobWF0aCwgJGNvbnRleHQpO1xuICAkX3JldHVybiAgOiBpZihzdXN5LWdldChndXR0ZXItcG9zaXRpb24sICRjb250ZXh0KSA9PSBpbnNpZGUtc3RhdGljLCBzdGF0aWMsICRfcmV0dXJuKTtcblxuICBAcmV0dXJuICRfcmV0dXJuO1xufVxuIiwiLyogPT09PT09PT09PT09PT1cbiAgIExheW91dFxuICAgPT09PT09PT09PT09PT0gKi9cblxuXG5cbm1haW4ge1xuICAgY2xlYXI6Ym90aDtcbiAgIFxuICAgLmNvbnRhaW5lciAmOmZpcnN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctdG9wOjM1LjVweDsgLy80MCAtIDQuNSB0byBhY2NvbW9kYXRlIHNwYWNpbmcgZnJvbSBmb3IgbGluZSBoZWlnaHRcbiAgIH1cblxuICAgLnBhbmVsczpub3QoLmxhcmdlKSArICZ7XG4gICAgICBtYXJnaW4tdG9wOiAyMHB4O1xuICAgfVxuXG5cblxuICBcblxuICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJHdpZHRoLW1lZGl1bSkge1xuICAgICAgLnBhbmVsczpub3QoLmxhcmdlKSArICZ7XG4gICAgICAgICBtYXJnaW4tdG9wOiAwcHg7XG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBzcGFuKDEwKTtcblxuICAgICAgICYud2lkZSB7XG4gICAgICAgICBAaW5jbHVkZSBzcGFuKDEyKTtcbiAgICAgIH1cblxuICAgfVxufVxuXG5hc2lkZSB7XG5cbiAgIGFydGljbGUge1xuICAgICAgaDI6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgbWFyZ2luLXRvcDowO1xuICAgICAgfVxuICAgfVxuXG4gICBcblxuICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJHdpZHRoLW1lZGl1bSkge1xuICAgICAgJi5zaWRlYmFyIHtcbiAgICAgICAgICAgIEBpbmNsdWRlIHNwYW4oMyBsYXN0KTtcbiAgICAgICAgIH1cbiAgIH1cbn1cblxuLypQYW5lbHMqL1xuLnBhbmVscyB7XG4gICB3aWR0aDogMTAwJTtcbiAgIHBhZGRpbmctdG9wOjQwcHg7XG4gICAmOm5vdCgubGFyZ2UpIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICAgfVxuICAgLml0ZW0ge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICBAaW5jbHVkZSBzcGFuICgyIG9mIDEyKTtcbiAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgxMyk7XG4gICAgICBjb2xvcjojMDAwMDAwO1xuICAgICAgb3BhY2l0eTogLjM7XG4gICAgICBib3JkZXItdG9wOjFweCBzb2xpZCAkeWVsbG93O1xuICAgICAgYm9yZGVyLWJvdHRvbToxcHggc29saWQgJHllbGxvdztcbiAgICAgIG1hcmdpbi1ib3R0b206MjBweDtcbiAgICAgIFxuICAgICAgcGFkZGluZzo1cHggMDtcbiAgICAgIGhlaWdodDogNjBweDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAgIHNwYW4ge1xuICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICBjb2xvcjogJGdyZXk7XG4gICAgICB9XG4gICAgICAmOm50aC1jaGlsZCg2bikge1xuICAgICAgICAgQGluY2x1ZGUgbGFzdDtcbiAgICAgIH1cbiAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgICBhOmxpbmssIGE6dmlzaXRlZCB7XG4gICAgICAgICBjb2xvcjogIzAwMDAwMDtcbiAgICAgIH1cbiAgIH1cblxuICAgJi5sYXJnZSB7XG4gICAgICAuaXRlbSB7XG4gICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgICAgIG1hcmdpbi1ib3R0b206IDEwcHg7XG4gICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMjApO1xuICAgICAgfVxuICAgfVxuXG5cbiAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICR3aWR0aC1tZWRpdW0pIHtcbiAgICAgICY6bm90KC5sYXJnZSkge1xuICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgICAmLmxhcmdlIHtcbiAgICAgICAgIC5pdGVtIHtcbiAgICAgICAgICAgIFxuICAgICAgICAgICAgQGluY2x1ZGUgc3BhbiAoMyBvZiAxMik7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOjQwcHg7XG4gICAgICAgICAgICBtYXJnaW4tdG9wOjA7XG4gICAgICAgICAgICBoZWlnaHQ6IDkwcHg7XG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICAgICAgJjpudGgtY2hpbGQoNG4pIHtcbiAgICAgICAgICAgICAgIEBpbmNsdWRlIGxhc3Q7XG4gICAgICAgICAgICB9XG4gICAgICAgICB9XG4gICAgICB9XG4gICB9XG5cbn1cblxuLypsb2dvcyovXG5cbi5sb2dvcyB7XG4gICBcbiAgIGFydGljbGUge1xuICAgICAgYmFja2dyb3VuZDogJGxpZ2h0LWdyZXk7XG4gICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgfVxuICAgLnR4dCB7XG4gICAgICBwYWRkaW5nOjEwcHg7XG4gICAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICAgfVxuXG4gICAuaW1nIHtcbiAgICAgZGlzcGxheTogbm9uZTtcbiAgIH1cblxuICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJHdpZHRoLW1lZGl1bSkge1xuICAgICAgYXJ0aWNsZSB7XG4gICAgICAgICBAaW5jbHVkZSBzcGFuKDEwIG9mIDEwKTtcbiAgICAgIH1cbiAgICAgIC50eHQge1xuICAgICAgICAgQGluY2x1ZGUgc3Bhbig3IG9mIDEwKTtcbiAgICAgIH1cbiAgICAgIC5pbWcge1xuICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICBwYWRkaW5nOjEwcHg7XG4gICAgICAgICBAaW5jbHVkZSBzcGFuKDMgb2YgMTAgbGFzdCk7XG4gICAgICAgICBpbWcge1xuICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgIH1cbiAgICAgIH1cbiAgIH1cbn1cbi8qQUNDT1JESU9OKi9cblxuLmFjY29yZGlvbiB7XG5cbiAgIGFydGljbGUge1xuICAgICAgYm9yZGVyLWJvdHRvbToxcHggc29saWQgJHllbGxvdztcblxuXG4gICAgICAmOmZpcnN0LWNoaWxke1xuICAgICAgICAgYm9yZGVyLXRvcDoxcHggc29saWQgJHllbGxvdztcbiAgICAgIH1cblxuICAgICAgJiA+IGgyIHtcbiAgICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICAgICB9XG5cbiAgICAgICYgPiBoMjphZnRlciB7XG4gICAgICAgICAgY29udGVudDogJ1xcMDI3OTUnOyAvKiBVbmljb2RlIGNoYXJhY3RlciBmb3IgXCJwbHVzXCIgc2lnbiAoKykgKi9cbiAgICAgICAgICBAaW5jbHVkZSBmb250LXNpemUoMTIpO1xuICAgICAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogNXB4O1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiAyMDA7XG4gICAgICB9XG5cbiAgICAgICYuYWN0aXZlID4gaDI6YWZ0ZXIge1xuICAgICAgICAgIGNvbnRlbnQ6IFwiXFwyNzk2XCI7IC8qIFVuaWNvZGUgY2hhcmFjdGVyIGZvciBcIm1pbnVzXCIgc2lnbiAoLSkgKi9cbiAgICAgIH1cblxuICAgICAgLnBhbmVsIHtcbiAgICAgICAgIC8vIG1heC1oZWlnaHQ6IDA7XG4gICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDAuMnMgZWFzZS1vdXQ7XG4gICAgICB9XG4gICB9XG59XG5cblxuXG4vKk1BUCovXG4ubWFwX2FyZWEge1xuICAgcGFkZGluZzo0MHB4ICRzaWRlLXBhZGRpbmc7XG5cbiAgIFxuICAgLmxlZnQge1xuICAgICAgbWFyZ2luLWJvdHRvbTo0MHB4O1xuICAgfVxuICAgaDM6Zmlyc3QtY2hpbGQge1xuICAgICAgbWFyZ2luLXRvcDowO1xuICAgICAgbGluZS1oZWlnaHQ6IDE7XG4gICB9XG5cblxuICAgcCArIGgzIHtcbiAgICAgIG1hcmdpbi10b3A6IDMwcHg7XG4gICB9XG4gICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkd2lkdGgtbWVkaXVtKSB7XG5cbiAgICAgIC5sZWZ0IHtcbiAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICBAaW5jbHVkZSBzcGFuKDgpXG4gICAgICB9XG4gICAgICAucmlnaHQge1xuICAgICAgICAgQGluY2x1ZGUgc3Bhbig0IGxhc3QpXG4gICAgICB9XG5cbiAgIH1cbn1cblxuLypDT0xVTU5TKi9cblxuLmNvbHVtbnMge1xuICAgcGFkZGluZzozMHB4IDA7XG4gICBAaW5jbHVkZSBjZjtcbiAgICYuc3Bhbl80IHtcbiAgICAgIGFydGljbGUge1xuICAgICAgICAgbWFyZ2luOjAgMjBweDtcbiAgICAgICAgIGgyIHtcbiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICAgICAgbWluLWhlaWdodDogNzBweDtcbiAgICAgICAgICAgIHBhZGRpbmc6OHB4IDA7XG4gICAgICAgICAgICBib3JkZXItdG9wOjFweCBzb2xpZCAkeWVsbG93O1xuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbToxcHggc29saWQgJHllbGxvdztcbiAgICAgICAgIH1cblxuICAgICAgICAgaDMge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgICAgICAgIEBpbmNsdWRlIGZvbnQtc2l6ZSgxMyk7XG5cbiAgICAgICAgICAgICYgKyBwIHtcbiAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgICB9XG4gICAgICB9XG4gICB9XG5cbiAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICR3aWR0aC1tZWRpdW0pIHtcbiAgICAgICYuc3Bhbl80IHtcbiAgICAgICAgIGFydGljbGUge1xuICAgICAgICAgICAgbWFyZ2luOjA7XG4gICAgICAgICAgICBAaW5jbHVkZSBzcGFuKDQpO1xuXG4gICAgICAgICAgICAmOm50aC1vZi10eXBlKDMpIHtcbiAgICAgICAgICAgICAgICBAaW5jbHVkZSBzcGFuKDQgbGFzdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICB9XG4gICAgICB9XG4gICB9XG59XG4iLCIvLyBSb3cgU3RhcnQgJiBFbmRcbi8vID09PT09PT09PT09PT09PVxuXG4vLyBCcmVha1xuLy8gLS0tLS1cbi8vIEFwcGx5IHRvIGFueSBlbGVtZW50IHRoYXQgc2hvdWxkIGZvcmNlIGEgbGluZSBicmVhay5cbkBtaXhpbiBicmVhayB7XG4gIEBpbmNsdWRlIG91dHB1dCgoY2xlYXI6IGJvdGgpKTtcbn1cblxuXG4vLyBOb0JyZWFrXG4vLyAtLS0tLS0tXG4vLyBDYW5jZWwgdGhlIGJyZWFrKCkgZWZmZWN0LCBlLmcuIHdoZW4gdXNpbmcgbWVkaWEgcXVlcmllcy5cbkBtaXhpbiBub2JyZWFrIHtcbiAgQGluY2x1ZGUgb3V0cHV0KChjbGVhcjogbm9uZSkpO1xufVxuXG5cbi8vIEZ1bGxcbi8vIC0tLS1cbi8vIC0gWyRjb250ZXh0XTogPGxheW91dCBzaG9ydGhhbmQ+XG5AbWl4aW4gZnVsbChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgOiAkY29udGV4dDtcbiAgQGluY2x1ZGUgc3VzeS1pbnNwZWN0KGZ1bGwsICRpbnNwZWN0KTtcbiAgQGluY2x1ZGUgc3BhbihmdWxsIG9mIHBhcnNlLWdyaWQoJGNvbnRleHQpIGJyZWFrKTtcbn1cblxuXG4vLyBGaXJzdFxuLy8gLS0tLS1cbi8vIC0gWyRjb250ZXh0XTogPHNldHRpbmdzPlxuQG1peGluIGZpcnN0KFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICAkaW5zcGVjdCAgOiAkY29udGV4dDtcbiAgJGNvbnRleHQgIDogcGFyc2UtZ3JpZCgkY29udGV4dCk7XG4gICRmbG93ICAgICA6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KTtcblxuICBAaW5jbHVkZSBzdXN5LWluc3BlY3QoZmlyc3QsICRpbnNwZWN0KTtcbiAgQGlmIG5vdChpcy1zcGxpdCgkY29udGV4dCkpIHtcbiAgICBAaW5jbHVkZSBmbG9hdC1maXJzdCgkZmxvdyk7XG4gIH1cbn1cblxuQG1peGluIGFscGhhKFxuICAkY29udGV4dDogJHN1c3lcbikge1xuICBAaW5jbHVkZSBmaXJzdCgkY29udGV4dCk7XG59XG5cblxuLy8gTGFzdFxuLy8gLS0tLVxuLy8gLSBbJGNvbnRleHRdOiA8c2V0dGluZ3M+XG5AbWl4aW4gbGFzdChcbiAgJGNvbnRleHQ6ICRzdXN5XG4pIHtcbiAgJGluc3BlY3QgIDogJGNvbnRleHQ7XG4gICRjb250ZXh0ICA6IHBhcnNlLWdyaWQoJGNvbnRleHQpO1xuXG4gIEBpbmNsdWRlIHN1c3ktaW5zcGVjdChsYXN0LCAkaW5zcGVjdCk7XG5cbiAgJG91dHB1dDogKFxuICAgIGZsb3c6IHN1c3ktZ2V0KGZsb3csICRjb250ZXh0KSxcbiAgICBsYXN0LWZsb3c6IHN1c3ktZ2V0KGxhc3QtZmxvdywgJGNvbnRleHQpLFxuICAgIG1hcmdpbjogaWYoaXMtc3BsaXQoJGNvbnRleHQpLCBudWxsLCAwKSxcbiAgKTtcblxuICBAaW5jbHVkZSBmbG9hdC1sYXN0KCRvdXRwdXQuLi4pO1xufVxuXG5AbWl4aW4gb21lZ2EoXG4gICRjb250ZXh0OiAkc3VzeVxuKSB7XG4gIEBpbmNsdWRlIGxhc3QoJGNvbnRleHQpO1xufVxuXG5cbi8vIEdldCBFZGdlXG4vLyAtLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGVkZ2UgdmFsdWUgYmFzZWQgb24gbG9jYXRpb24sIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWVkZ2UoXG4gICRzcGFuXG4pIHtcbiAgJHNwYW4gICAgICAgOiBwYXJzZS1zcGFuKCRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBzdXN5LWdldChlZGdlLCAkc3Bhbik7XG5cbiAgQGlmIG5vdCgkZWRnZSkge1xuICAgICRjb3VudDogc3VzeS1jb3VudChzdXN5LWdldChjb2x1bW5zLCAkc3BhbikpO1xuICAgICRsb2NhdGlvbjogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgICAkbjogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gICAgJG51bWJlcjogaWYodHlwZS1vZigkbG9jYXRpb24pID09IG51bWJlciwgdHJ1ZSwgZmFsc2UpO1xuICAgICRpbmRleDogaWYoJG51bWJlciBhbmQgdW5pdGxlc3MoJGxvY2F0aW9uKSwgdHJ1ZSwgZmFsc2UpO1xuXG4gICAgQGlmICRuID09ICRjb3VudCB7XG4gICAgICAkZWRnZTogZnVsbDtcbiAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiBhbmQgJG4gYW5kICRpbmRleCB7XG4gICAgICBAaWYgJGxvY2F0aW9uID09IDEge1xuICAgICAgICAkZWRnZTogaWYoJG4gPT0gJGNvdW50LCBmdWxsLCBmaXJzdCk7XG4gICAgICB9IEBlbHNlIGlmICRsb2NhdGlvbiArICRuIC0gMSA9PSAkY291bnQge1xuICAgICAgICAkZWRnZTogbGFzdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBAaWYgJGVkZ2UgPT0gYWxwaGEgb3IgJGVkZ2UgPT0gb21lZ2Ege1xuICAgICRlZGdlOiBpZigkZWRnZSA9PSBhbHBoYSwgZmlyc3QsIGxhc3QpO1xuICB9XG5cbiAgQHJldHVybiAkZWRnZTtcbn1cblxuXG4vLyBHZXQgTG9jYXRpb25cbi8vIC0tLS0tLS0tLS0tLVxuLy8gQ2FsY3VsYXRlIGxvY2F0aW9uIHZhbHVlIGJhc2VkIG9uIGVkZ2UsIGlmIHBvc3NpYmxlXG5AZnVuY3Rpb24gZ2V0LWxvY2F0aW9uKFxuICAkc3BhblxuKSB7XG4gICRzcGFuICAgICAgIDogcGFyc2Utc3Bhbigkc3Bhbik7XG4gICRsb2NhdGlvbiAgIDogc3VzeS1nZXQobG9jYXRpb24sICRzcGFuKTtcbiAgJGVkZ2UgICAgICAgOiBnZXQtZWRnZSgkc3Bhbik7XG4gICRuICAgICAgICAgIDogc3VzeS1nZXQoc3BhbiwgJHNwYW4pO1xuXG4gIEBpZiAkZWRnZSBhbmQgbm90KCRsb2NhdGlvbikgYW5kIHR5cGUtb2YoJG4pID09IG51bWJlciBhbmQgdW5pdGxlc3MoJG4pIHtcbiAgICBAaWYgJGVkZ2UgPT0gZmlyc3Qge1xuICAgICAgJGxvY2F0aW9uOiAxO1xuICAgIH0gQGVsc2UgaWYgJGVkZ2UgPT0gbGFzdCB7XG4gICAgICAkbG9jYXRpb246IHN1c3ktY291bnQoc3VzeS1nZXQoY29sdW1ucywgJHNwYW4pKSAtICRuICsgMTtcbiAgICB9XG4gIH1cblxuICBAcmV0dXJuICRsb2NhdGlvblxufVxuIiwiLyogPT09PT09PT09PT09PT1cbiAgIENPTVBPTkVOVFNcbiAgID09PT09PT09PT09PT09ICovXG4iLCIvKiA9PT09PT09PT09PT09PVxuICAgRk9PVEVSXG4gICA9PT09PT09PT09PT09PSAqL1xuZm9vdGVyIHtcblx0YmFja2dyb3VuZDokZGFyay1ncmV5O1xuXHRjb2xvcjojZmZmZmZmO1xuXHRkaXNwbGF5OmlubGluZS1ibG9jaztcblx0d2lkdGg6MTAwJTtcblx0cGFkZGluZzoxMHB4ICRzaWRlLXBhZGRpbmc7XG5cdG1hcmdpbi10b3A6MjBweDtcblxuXHRuYXYge1xuXHRcdGxpe1xuXHRcdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXHRcdHRleHQtYWxpZ246IGxlZnQ7XG5cblx0XHRcdGEge1xuXHRcdFx0XHRwYWRkaW5nOjA7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdFxuXHRcblx0QGluY2x1ZGUgZm9udC1zaXplKDE3KTtcblxuXHRwe1xuXHRcdG1hcmdpbjowO1xuXHR9XG5cblxuXHRhOmxpbmssIGE6dmlzaXRlZCB7XG5cdFx0XHRjb2xvcjogJHllbGxvdztcblx0XHR9XG5cblx0LnF1aWNrX2xpbmtzIHtcblx0XHRtYXJnaW4tdG9wOjIwcHg7XG5cblx0XHRsaSB7XG5cdFx0XHRiYWNrZ3JvdW5kOnVybCguLi9pbWcvZGlzYy5zdmcpIG5vLXJlcGVhdCBjZW50ZXIgbGVmdDtcblx0XHRcdHBhZGRpbmc6MCAwIDAgMTVweDtcblx0XHRcdGJhY2tncm91bmQtc2l6ZTo1cHg7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IDEwcHg7XHRcdFx0XG5cdFx0fVxuXG5cdFx0aDMge1xuXHRcdFx0Ly8gQGluY2x1ZGUgZm9udC1zaXplKDE3KTtcblx0XHRcdG1hcmdpbjowO1xuXHRcdH1cblxuXHRcdFxuXHR9XG5cdC5zaXRlYnkge1xuXHRcdGZsb2F0OnJpZ2h0O1xuXHRcdGNsZWFyOmJvdGg7XG5cdFx0QGluY2x1ZGUgZm9udC1zaXplKDEwKTtcblx0ICAgIHBhZGRpbmc6IDEwcHg7XG5cdCAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XG5cdH1cblx0QG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJHdpZHRoLW1lZGl1bSkge1xuXHRcdHBvc2l0aW9uOmZpeGVkO1xuXHRcdGJvdHRvbTowcHg7XG5cdFx0aGVpZ2h0OjExMHB4O1xuXG5cdFx0LnR4dCB7XG5cdFx0XHRAaW5jbHVkZSBzcGFuKDcpXG5cdFx0fVxuXG5cdFx0LnF1aWNrX2xpbmtzIHtcblx0XHRcdG1hcmdpbi10b3A6IDA7XG5cdFx0XHRAaW5jbHVkZSBzcGFuKDQgbGFzdCk7XG5cdFx0fVxuXG5cblxuXHR9XG59Il19 */
