#market-sectors {
  z-index: 0;
}
#market-sectors > .text {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
}
#market-sectors > .text .heading-h3 {
  margin-top: 0;
  color: var(--secondary, #DF3035);
  width: 100%;
  max-width: 800px;
}
#market-sectors article-list {
  --background-colour: #F4F4F4;
  position: relative;
  margin-top: var(--spacer1);
  grid-gap: 1px;
  grid-template-columns: repeat(var(--columns), 1fr);
  grid-auto-rows: minmax(300px, 1fr);
}
#market-sectors article-list::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  outline: 2px solid white;
  pointer-events: none;
}
#market-sectors article-list .article .container {
  position: relative;
  border-radius: initial;
  border: initial;
  outline: 1px dashed #dcdcdc;
  overflow: visible;
  background-color: white;
  transition: background-color var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, ), opacity var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
}
#market-sectors article-list .article .container > * {
  position: relative;
  z-index: 2;
}
#market-sectors article-list .article .container .subheading {
  font-weight: normal;
  margin-bottom: auto;
}
#market-sectors article-list .article .container .button {
  margin-top: var(--gap);
}
#market-sectors article-list .article .container .image {
  position: absolute;
  z-index: 1;
  left: 80%;
  top: 0;
  width: 120%;
  height: 100%;
  margin: 0;
  pointer-events: none;
  opacity: 0;
  transform: translateX(var(--image-transition-x));
  transition: opacity var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, ), transform var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
}
#market-sectors article-list .article .container .image::after {
  content: "";
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-image: linear-gradient(var(--image-gradient-angle), var(--background-colour) 10%, transparent);
}
@media (hover: hover) {
  #market-sectors article-list .article:hover {
    z-index: 2;
  }
  #market-sectors article-list .article:hover .container {
    background-color: var(--background-colour);
  }
  #market-sectors article-list .article:hover .container .image {
    transform: translateX(0%);
    opacity: 1;
  }
}
@media (min-width: 1301px) {
  #market-sectors article-list {
    --columns: 4;
    --image-gradient-angle: 100deg;
    --image-transition-x: -5%;
  }
}
@media (min-width: 1301px) and (hover: hover) {
  #market-sectors article-list .article:hover + .article:not(:nth-child(4n+1)) .container {
    opacity: 0;
  }
}
@media (min-width: 1301px) {
  #market-sectors article-list .article:nth-child(4n) .container {
    --image-gradient-angle: 270deg;
    --image-transition-x: 5%;
  }
  #market-sectors article-list .article:nth-child(4n) .container .image {
    left: initial;
    right: 80%;
  }
}
@media (min-width: 900px) and (max-width: 1300px) {
  #market-sectors article-list {
    --columns: 3;
    --image-gradient-angle: 100deg;
    --image-transition-x: -5%;
  }
}
@media (min-width: 900px) and (max-width: 1300px) and (hover: hover) {
  #market-sectors article-list .article:hover + .article:not(:nth-child(3n+1)) .container {
    opacity: 0;
  }
}
@media (min-width: 900px) and (max-width: 1300px) {
  #market-sectors article-list .article:nth-child(3n) .container {
    --image-gradient-angle: 270deg;
    --image-transition-x: 5%;
  }
  #market-sectors article-list .article:nth-child(3n) .container .image {
    left: initial;
    right: 80%;
  }
}
@media (min-width: 740px) and (max-width: 900px) {
  #market-sectors article-list {
    --columns: 2;
    --image-gradient-angle: 100deg;
    --image-transition-x: -5%;
  }
}
@media (min-width: 740px) and (max-width: 900px) and (hover: hover) {
  #market-sectors article-list .article:hover + .article:not(:nth-child(2n+1)) .container {
    opacity: 0;
  }
}
@media (min-width: 740px) and (max-width: 900px) {
  #market-sectors article-list .article:nth-child(2n) .container {
    --image-gradient-angle: 270deg;
    --image-transition-x: 5%;
  }
  #market-sectors article-list .article:nth-child(2n) .container .image {
    left: initial;
    right: 80%;
  }
}
@media (max-width: 740px) {
  #market-sectors article-list {
    margin-top: var(--spacer0);
    display: flex;
    flex-direction: column;
    grid-gap: initial;
  }
  #market-sectors article-list .article + .article {
    border-top: 1px solid #dcdcdc;
  }
  #market-sectors article-list .article .container {
    padding: var(--spacer0) 0;
    outline: initial;
  }
  #market-sectors article-list .article .container .introduction {
    max-width: 500px;
  }
  #market-sectors article-list .article .container .image {
    display: none !important;
  }
  #market-sectors article-list .article .container:before {
    content: "";
    background-color: inherit;
    z-index: -1;
    position: absolute;
    top: 0;
    left: 50%;
    width: 100vw;
    height: 100%;
    transform: translateX(var(--translateX, -50%));
  }
}
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvbWFya2V0LXNlY3RvcnMuc2NzcyIsImNvbXBvbmVudHMvbWFya2V0LXNlY3RvcnMuY3NzIiwiX3ZhcmlhYmxlcy9jb2xvdXJzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGRvZ2dpc3R5bGUvc2Fzcy9saWJyYXJ5L3NyYy9jcmVhdGUvX3VuaXRzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGRvZ2dpc3R5bGUvc2Fzcy9saWJyYXJ5L3NyYy9jb2xsZWN0aW9ucy9zdHlsaW5nL19wb3NpdGlvbi5zY3NzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0Bkb2dnaXN0eWxlL3Nhc3MvbGlicmFyeS9zcmMvY29sbGVjdGlvbnMvc3R5bGluZy9faG92ZXIuc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZG9nZ2lzdHlsZS9zYXNzL2xpYnJhcnkvc3JjL2hlbHBlcnMvX2JyZWFrLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGRvZ2dpc3R5bGUvc2Fzcy9saWJyYXJ5L3NyYy9jb2xsZWN0aW9ucy9zdHlsaW5nL19iYWNrZ3JvdW5kLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBbUJBO0VBRUUsVUFBQTtBQ25CRjtBRHFCRTtFQUNFLGFBQUE7RUFDQSxzQkFBQTtFQUNBLHVCQUFBO0VBQ0EsbUJBQUE7RUFDQSxrQkFBQTtBQ25CSjtBRG9CSTtFQUNFLGFBQUE7RUFDQSxnQ0VTTztFRlJQLFdBQUE7RUFDQSxnQkFBQTtBQ2xCTjtBRHNCRTtFQUVFLDRCQUFBO0VBRUEsa0JBQUE7RUFDQSwwQkcrRE87RUg5RFAsYUFBQTtFQUNBLGtEQUFBO0VBQ0Esa0NBQUE7QUN0Qko7QUR3Qkk7RUFDRSxXQUFBO0VJekNMLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLE9BQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFSnVDSyx3QkFBQTtFQUNBLG9CQUFBO0FDbEJOO0FEc0JNO0VBQ0Usa0JBQUE7RUFDQSxzQkFBQTtFQUNBLGVBQUE7RUFDQSwyQkFBQTtFQUNBLGlCQUFBO0VBQ0EsdUJBQUE7RUFDQSx5UUFBQTtBQ3BCUjtBRHFCUTtFQUFNLGtCQUFBO0VBQW9CLFVBQUE7QUNqQmxDO0FEa0JRO0VBQWMsbUJBQUE7RUFBcUIsbUJBQUE7QUNkM0M7QURlUTtFQUFVLHNCR2RWO0FGRVI7QURhUTtFQUNFLGtCQUFBO0VBQ0EsVUFBQTtFQUNBLFNBQUE7RUFDQSxNQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7RUFDQSxTQUFBO0VBQ0Esb0JBQUE7RUFDQSxVQUFBO0VBQ0EsZ0RBQUE7RUFDQSxrUUFBQTtBQ1hWO0FEWVU7RUFDRSxXQUFBO0VJeEVYLGtCQUFBO0VBQ0EsTUFBQTtFQUNBLE9BQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFSnNFVyx5R0FBQTtBQ05aO0FJdEVFO0VBQ0U7SUxpRkksVUFBQTtFQ1JOO0VEU007SUFDRSwwQ0FBQTtFQ1BSO0VEUVE7SUFDRSx5QkFBQTtJQUNBLFVBQUE7RUNOVjtBQUNGO0FLbEZFO0VOZ0NBO0lBbENBLFlBQUE7SUFDQSw4QkFBQTtJQUNBLHlCQUFBO0VDd0ZBO0FBQ0Y7QUl6RkU7RUxJSTtJQUF3RCxVQUFBO0VDeUY1RDtBQUNGO0FLOUZFO0VOTUU7SUFDRSw4QkFBQTtJQUNBLHdCQUFBO0VDMkZKO0VEMUZJO0lBQVMsYUFBQTtJQUFjLFVBQUE7RUM4RjNCO0FBQ0Y7QUs1RkU7RU5vQkE7SUFsQ0EsWUFBQTtJQUNBLDhCQUFBO0lBQ0EseUJBQUE7RUM4R0E7QUFDRjtBSS9HRTtFTElJO0lBQXdELFVBQUE7RUMrRzVEO0FBQ0Y7QUt4R0U7RU5ORTtJQUNFLDhCQUFBO0lBQ0Esd0JBQUE7RUNpSEo7RURoSEk7SUFBUyxhQUFBO0lBQWMsVUFBQTtFQ29IM0I7QUFDRjtBS2xIRTtFTm9CQTtJQWxDQSxZQUFBO0lBQ0EsOEJBQUE7SUFDQSx5QkFBQTtFQ29JQTtBQUNGO0FJcklFO0VMSUk7SUFBd0QsVUFBQTtFQ3FJNUQ7QUFDRjtBSzlIRTtFTk5FO0lBQ0UsOEJBQUE7SUFDQSx3QkFBQTtFQ3VJSjtFRHRJSTtJQUFTLGFBQUE7SUFBYyxVQUFBO0VDMEkzQjtBQUNGO0FLOUlFO0VOMEJBO0lBdUVJLDBCR0pLO0lIS0wsYUFBQTtJQUNBLHNCQUFBO0lBQ0EsaUJBQUE7RUNpREo7RUQ5Q007SUFBYSw2QkFBQTtFQ2lEbkI7RURoRE07SUFDRSx5QkFBQTtJQUNBLGdCQUFBO0VDa0RSO0VEakRRO0lBQWdCLGdCQUFBO0VDb0R4QjtFRG5EUTtJQUNFLHdCQUFBO0VDcURWO0VNdEtBO0lBQ0UsV0FBQTtJQUNGLHlCQUFBO0lBQ0EsV0FBQTtJSGFBLGtCQUFBO0lBU0UsTUFBQTtJQUNBLFNBQUE7SUFDQSxZQUFBO0lBQ0EsWUFBQTtJQUNBLDhDQUFBO0VIb0pGO0FBQ0YiLCJmaWxlIjoiY29tcG9uZW50cy9tYXJrZXQtc2VjdG9ycy5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAdXNlICdfbW9kdWxlcycgYXMgKjtcblxuQG1peGluIF9jb2x1bW4tc3R5bGluZygkY29sdW1uczo0KSB7XG4gIC0tY29sdW1ucyA6ICN7JGNvbHVtbnN9O1xuICAtLWltYWdlLWdyYWRpZW50LWFuZ2xlIDogMTAwZGVnO1xuICAtLWltYWdlLXRyYW5zaXRpb24teCAgIDogLTUlO1xuXG4gIC5hcnRpY2xlIHtcbiAgICBAaW5jbHVkZSBob3ZlciB7XG4gICAgICArIC5hcnRpY2xlOm5vdCg6bnRoLWNoaWxkKCN7JGNvbHVtbnN9bisxKSkgLmNvbnRhaW5lciB7IG9wYWNpdHk6MDsgfVxuICAgIH1cbiAgICAmOm50aC1jaGlsZCgjeyRjb2x1bW5zfW4pIC5jb250YWluZXIge1xuICAgICAgLS1pbWFnZS1ncmFkaWVudC1hbmdsZSA6IDI3MGRlZztcbiAgICAgIC0taW1hZ2UtdHJhbnNpdGlvbi14ICAgOiA1JTtcbiAgICAgIC5pbWFnZSB7IGxlZnQ6aW5pdGlhbDsgcmlnaHQ6ODAlOyB9XG4gICAgfVxuICB9XG59XG5cbiNtYXJrZXQtc2VjdG9ycyB7XG5cbiAgei1pbmRleDowO1xuXG4gID4gLnRleHQge1xuICAgIGRpc3BsYXk6ZmxleDsgXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAuaGVhZGluZy1oMyB7IFxuICAgICAgbWFyZ2luLXRvcDowOyBcbiAgICAgIGNvbG9yOiRzZWNvbmRhcnk7IFxuICAgICAgd2lkdGg6MTAwJTsgXG4gICAgICBtYXgtd2lkdGg6ODAwcHg7IFxuICAgIH1cbiAgfVxuXG4gIGFydGljbGUtbGlzdCB7XG5cbiAgICAtLWJhY2tncm91bmQtY29sb3VyIDogI3skZ3JleTN9O1xuXG4gICAgcG9zaXRpb246cmVsYXRpdmU7IFxuICAgIG1hcmdpbi10b3A6JHNwYWNlcjsgXG4gICAgZ3JpZC1nYXA6MXB4O1xuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KHZhcigtLWNvbHVtbnMpLCAxZnIpO1xuICAgIGdyaWQtYXV0by1yb3dzOiBtaW5tYXgoMzAwcHgsIDFmcik7XG4gICAgXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgY29udGVudDpcIlwiO1xuICAgICAgQGluY2x1ZGUgcG9zaXRpb24tZXhwYW5kZWQ7XG4gICAgICBvdXRsaW5lOjJweCBzb2xpZCB3aGl0ZTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgICBcbiAgICAuYXJ0aWNsZSB7XG4gICAgICAuY29udGFpbmVyIHtcbiAgICAgICAgcG9zaXRpb246cmVsYXRpdmU7IFxuICAgICAgICBib3JkZXItcmFkaXVzOmluaXRpYWw7XG4gICAgICAgIGJvcmRlcjppbml0aWFsO1xuICAgICAgICBvdXRsaW5lOjFweCBkYXNoZWQgJGdyZXk0O1xuICAgICAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XG4gICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgJHRyYW5zaXRpb24sIG9wYWNpdHkgJHRyYW5zaXRpb247XG4gICAgICAgID4gKiB7IHBvc2l0aW9uOiByZWxhdGl2ZTsgei1pbmRleDoyOyB9XG4gICAgICAgIC5zdWJoZWFkaW5nIHsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgbWFyZ2luLWJvdHRvbTphdXRvOyB9XG4gICAgICAgIC5idXR0b24geyBtYXJnaW4tdG9wOiRnYXA7fVxuICAgICAgICAuaW1hZ2Uge1xuICAgICAgICAgIHBvc2l0aW9uOmFic29sdXRlOyBcbiAgICAgICAgICB6LWluZGV4OjE7XG4gICAgICAgICAgbGVmdDo4MCU7XG4gICAgICAgICAgdG9wOjA7XG4gICAgICAgICAgd2lkdGg6MTIwJTsgXG4gICAgICAgICAgaGVpZ2h0OjEwMCU7IFxuICAgICAgICAgIG1hcmdpbjowOyBcbiAgICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgICBvcGFjaXR5OjA7IFxuICAgICAgICAgIHRyYW5zZm9ybSA6IHRyYW5zbGF0ZVgodmFyKC0taW1hZ2UtdHJhbnNpdGlvbi14KSk7XG4gICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAkdHJhbnNpdGlvbiwgdHJhbnNmb3JtICR0cmFuc2l0aW9uO1xuICAgICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICAgIGNvbnRlbnQ6XCJcIjtcbiAgICAgICAgICAgIEBpbmNsdWRlIHBvc2l0aW9uLWV4cGFuZGVkO1xuICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLWltYWdlLWdyYWRpZW50LWFuZ2xlKSwgdmFyKC0tYmFja2dyb3VuZC1jb2xvdXIpIDEwJSwgdHJhbnNwYXJlbnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICB9XG4gICAgICBAaW5jbHVkZSBob3ZlciB7XG4gICAgICAgIHotaW5kZXg6MjtcbiAgICAgICAgLmNvbnRhaW5lciB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjp2YXIoLS1iYWNrZ3JvdW5kLWNvbG91cik7IFxuICAgICAgICAgIC5pbWFnZSB7XG4gICAgICAgICAgICB0cmFuc2Zvcm0gOiB0cmFuc2xhdGVYKDAlKTtcbiAgICAgICAgICAgIG9wYWNpdHk6MTsgXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnJlYWstb3V0KDEzMDApIHtcbiAgICAgIEBpbmNsdWRlIF9jb2x1bW4tc3R5bGluZyg0KTtcbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWstYmV0d2Vlbig5MDAsIDEzMDApIHtcbiAgICAgIEBpbmNsdWRlIF9jb2x1bW4tc3R5bGluZygzKTtcbiAgICB9XG4gICAgQGluY2x1ZGUgYnJlYWstYmV0d2Vlbig3NDAsIDkwMCkge1xuICAgICAgQGluY2x1ZGUgX2NvbHVtbi1zdHlsaW5nKDIpO1xuICAgIH1cbiAgICBAaW5jbHVkZSBicmVhay1pbig3NDApIHtcbiAgICAgIG1hcmdpbi10b3A6JHNwYWNlcjA7IFxuICAgICAgZGlzcGxheTpmbGV4OyBcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBncmlkLWdhcDppbml0aWFsOyBcbiAgICAgIC5hcnRpY2xlIHtcbiAgXG4gICAgICAgICsgLmFydGljbGUgeyBib3JkZXItdG9wOjFweCBzb2xpZCAkZ3JleTQ7IH1cbiAgICAgICAgLmNvbnRhaW5lciB7XG4gICAgICAgICAgcGFkZGluZzokc3BhY2VyMCAwOyBcbiAgICAgICAgICBvdXRsaW5lOmluaXRpYWw7XG4gICAgICAgICAgLmludHJvZHVjdGlvbiB7IG1heC13aWR0aDo1MDBweDsgfVxuICAgICAgICAgIC5pbWFnZSB7XG4gICAgICAgICAgICBkaXNwbGF5Om5vbmUgIWltcG9ydGFudDtcbiAgICAgICAgICB9XG4gICAgICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1ibG93b3V0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiI21hcmtldC1zZWN0b3JzIHtcbiAgei1pbmRleDogMDtcbn1cbiNtYXJrZXQtc2VjdG9ycyA+IC50ZXh0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbiNtYXJrZXQtc2VjdG9ycyA+IC50ZXh0IC5oZWFkaW5nLWgzIHtcbiAgbWFyZ2luLXRvcDogMDtcbiAgY29sb3I6IHZhcigtLXNlY29uZGFyeSwgI0RGMzAzNSk7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXgtd2lkdGg6IDgwMHB4O1xufVxuI21hcmtldC1zZWN0b3JzIGFydGljbGUtbGlzdCB7XG4gIC0tYmFja2dyb3VuZC1jb2xvdXI6ICNGNEY0RjQ7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luLXRvcDogdmFyKC0tc3BhY2VyMSk7XG4gIGdyaWQtZ2FwOiAxcHg7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KHZhcigtLWNvbHVtbnMpLCAxZnIpO1xuICBncmlkLWF1dG8tcm93czogbWlubWF4KDMwMHB4LCAxZnIpO1xufVxuI21hcmtldC1zZWN0b3JzIGFydGljbGUtbGlzdDo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgb3V0bGluZTogMnB4IHNvbGlkIHdoaXRlO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbiNtYXJrZXQtc2VjdG9ycyBhcnRpY2xlLWxpc3QgLmFydGljbGUgLmNvbnRhaW5lciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgYm9yZGVyLXJhZGl1czogaW5pdGlhbDtcbiAgYm9yZGVyOiBpbml0aWFsO1xuICBvdXRsaW5lOiAxcHggZGFzaGVkICNkY2RjZGM7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciB2YXIoLS10cmFuc2l0aW9uLWR1cmF0aW9uLCAwLjJzKSB2YXIoLS10cmFuc2l0aW9uLWVhc2UsIGN1YmljLWJlemllcigwLjQyLCAwLCAwLjU4LCAxKSkgdmFyKC0tdHJhbnNpdGlvbi1kZWxheSwgKSwgb3BhY2l0eSB2YXIoLS10cmFuc2l0aW9uLWR1cmF0aW9uLCAwLjJzKSB2YXIoLS10cmFuc2l0aW9uLWVhc2UsIGN1YmljLWJlemllcigwLjQyLCAwLCAwLjU4LCAxKSkgdmFyKC0tdHJhbnNpdGlvbi1kZWxheSwgKTtcbn1cbiNtYXJrZXQtc2VjdG9ycyBhcnRpY2xlLWxpc3QgLmFydGljbGUgLmNvbnRhaW5lciA+ICoge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHotaW5kZXg6IDI7XG59XG4jbWFya2V0LXNlY3RvcnMgYXJ0aWNsZS1saXN0IC5hcnRpY2xlIC5jb250YWluZXIgLnN1YmhlYWRpbmcge1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBtYXJnaW4tYm90dG9tOiBhdXRvO1xufVxuI21hcmtldC1zZWN0b3JzIGFydGljbGUtbGlzdCAuYXJ0aWNsZSAuY29udGFpbmVyIC5idXR0b24ge1xuICBtYXJnaW4tdG9wOiB2YXIoLS1nYXApO1xufVxuI21hcmtldC1zZWN0b3JzIGFydGljbGUtbGlzdCAuYXJ0aWNsZSAuY29udGFpbmVyIC5pbWFnZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgei1pbmRleDogMTtcbiAgbGVmdDogODAlO1xuICB0b3A6IDA7XG4gIHdpZHRoOiAxMjAlO1xuICBoZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbjogMDtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCh2YXIoLS1pbWFnZS10cmFuc2l0aW9uLXgpKTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSB2YXIoLS10cmFuc2l0aW9uLWR1cmF0aW9uLCAwLjJzKSB2YXIoLS10cmFuc2l0aW9uLWVhc2UsIGN1YmljLWJlemllcigwLjQyLCAwLCAwLjU4LCAxKSkgdmFyKC0tdHJhbnNpdGlvbi1kZWxheSwgKSwgdHJhbnNmb3JtIHZhcigtLXRyYW5zaXRpb24tZHVyYXRpb24sIDAuMnMpIHZhcigtLXRyYW5zaXRpb24tZWFzZSwgY3ViaWMtYmV6aWVyKDAuNDIsIDAsIDAuNTgsIDEpKSB2YXIoLS10cmFuc2l0aW9uLWRlbGF5LCApO1xufVxuI21hcmtldC1zZWN0b3JzIGFydGljbGUtbGlzdCAuYXJ0aWNsZSAuY29udGFpbmVyIC5pbWFnZTo6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbiAgYmFja2dyb3VuZC1pbWFnZTogbGluZWFyLWdyYWRpZW50KHZhcigtLWltYWdlLWdyYWRpZW50LWFuZ2xlKSwgdmFyKC0tYmFja2dyb3VuZC1jb2xvdXIpIDEwJSwgdHJhbnNwYXJlbnQpO1xufVxuQG1lZGlhIChob3ZlcjogaG92ZXIpIHtcbiAgI21hcmtldC1zZWN0b3JzIGFydGljbGUtbGlzdCAuYXJ0aWNsZTpob3ZlciB7XG4gICAgei1pbmRleDogMjtcbiAgfVxuICAjbWFya2V0LXNlY3RvcnMgYXJ0aWNsZS1saXN0IC5hcnRpY2xlOmhvdmVyIC5jb250YWluZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJhY2tncm91bmQtY29sb3VyKTtcbiAgfVxuICAjbWFya2V0LXNlY3RvcnMgYXJ0aWNsZS1saXN0IC5hcnRpY2xlOmhvdmVyIC5jb250YWluZXIgLmltYWdlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxMzAxcHgpIHtcbiAgI21hcmtldC1zZWN0b3JzIGFydGljbGUtbGlzdCB7XG4gICAgLS1jb2x1bW5zOiA0O1xuICAgIC0taW1hZ2UtZ3JhZGllbnQtYW5nbGU6IDEwMGRlZztcbiAgICAtLWltYWdlLXRyYW5zaXRpb24teDogLTUlO1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMTMwMXB4KSBhbmQgKGhvdmVyOiBob3Zlcikge1xuICAjbWFya2V0LXNlY3RvcnMgYXJ0aWNsZS1saXN0IC5hcnRpY2xlOmhvdmVyICsgLmFydGljbGU6bm90KDpudGgtY2hpbGQoNG4rMSkpIC5jb250YWluZXIge1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxMzAxcHgpIHtcbiAgI21hcmtldC1zZWN0b3JzIGFydGljbGUtbGlzdCAuYXJ0aWNsZTpudGgtY2hpbGQoNG4pIC5jb250YWluZXIge1xuICAgIC0taW1hZ2UtZ3JhZGllbnQtYW5nbGU6IDI3MGRlZztcbiAgICAtLWltYWdlLXRyYW5zaXRpb24teDogNSU7XG4gIH1cbiAgI21hcmtldC1zZWN0b3JzIGFydGljbGUtbGlzdCAuYXJ0aWNsZTpudGgtY2hpbGQoNG4pIC5jb250YWluZXIgLmltYWdlIHtcbiAgICBsZWZ0OiBpbml0aWFsO1xuICAgIHJpZ2h0OiA4MCU7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5MDBweCkgYW5kIChtYXgtd2lkdGg6IDEzMDBweCkge1xuICAjbWFya2V0LXNlY3RvcnMgYXJ0aWNsZS1saXN0IHtcbiAgICAtLWNvbHVtbnM6IDM7XG4gICAgLS1pbWFnZS1ncmFkaWVudC1hbmdsZTogMTAwZGVnO1xuICAgIC0taW1hZ2UtdHJhbnNpdGlvbi14OiAtNSU7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA5MDBweCkgYW5kIChtYXgtd2lkdGg6IDEzMDBweCkgYW5kIChob3ZlcjogaG92ZXIpIHtcbiAgI21hcmtldC1zZWN0b3JzIGFydGljbGUtbGlzdCAuYXJ0aWNsZTpob3ZlciArIC5hcnRpY2xlOm5vdCg6bnRoLWNoaWxkKDNuKzEpKSAuY29udGFpbmVyIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogOTAwcHgpIGFuZCAobWF4LXdpZHRoOiAxMzAwcHgpIHtcbiAgI21hcmtldC1zZWN0b3JzIGFydGljbGUtbGlzdCAuYXJ0aWNsZTpudGgtY2hpbGQoM24pIC5jb250YWluZXIge1xuICAgIC0taW1hZ2UtZ3JhZGllbnQtYW5nbGU6IDI3MGRlZztcbiAgICAtLWltYWdlLXRyYW5zaXRpb24teDogNSU7XG4gIH1cbiAgI21hcmtldC1zZWN0b3JzIGFydGljbGUtbGlzdCAuYXJ0aWNsZTpudGgtY2hpbGQoM24pIC5jb250YWluZXIgLmltYWdlIHtcbiAgICBsZWZ0OiBpbml0aWFsO1xuICAgIHJpZ2h0OiA4MCU7XG4gIH1cbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NDBweCkgYW5kIChtYXgtd2lkdGg6IDkwMHB4KSB7XG4gICNtYXJrZXQtc2VjdG9ycyBhcnRpY2xlLWxpc3Qge1xuICAgIC0tY29sdW1uczogMjtcbiAgICAtLWltYWdlLWdyYWRpZW50LWFuZ2xlOiAxMDBkZWc7XG4gICAgLS1pbWFnZS10cmFuc2l0aW9uLXg6IC01JTtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDc0MHB4KSBhbmQgKG1heC13aWR0aDogOTAwcHgpIGFuZCAoaG92ZXI6IGhvdmVyKSB7XG4gICNtYXJrZXQtc2VjdG9ycyBhcnRpY2xlLWxpc3QgLmFydGljbGU6aG92ZXIgKyAuYXJ0aWNsZTpub3QoOm50aC1jaGlsZCgybisxKSkgLmNvbnRhaW5lciB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDc0MHB4KSBhbmQgKG1heC13aWR0aDogOTAwcHgpIHtcbiAgI21hcmtldC1zZWN0b3JzIGFydGljbGUtbGlzdCAuYXJ0aWNsZTpudGgtY2hpbGQoMm4pIC5jb250YWluZXIge1xuICAgIC0taW1hZ2UtZ3JhZGllbnQtYW5nbGU6IDI3MGRlZztcbiAgICAtLWltYWdlLXRyYW5zaXRpb24teDogNSU7XG4gIH1cbiAgI21hcmtldC1zZWN0b3JzIGFydGljbGUtbGlzdCAuYXJ0aWNsZTpudGgtY2hpbGQoMm4pIC5jb250YWluZXIgLmltYWdlIHtcbiAgICBsZWZ0OiBpbml0aWFsO1xuICAgIHJpZ2h0OiA4MCU7XG4gIH1cbn1cbkBtZWRpYSAobWF4LXdpZHRoOiA3NDBweCkge1xuICAjbWFya2V0LXNlY3RvcnMgYXJ0aWNsZS1saXN0IHtcbiAgICBtYXJnaW4tdG9wOiB2YXIoLS1zcGFjZXIwKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ3JpZC1nYXA6IGluaXRpYWw7XG4gIH1cbiAgI21hcmtldC1zZWN0b3JzIGFydGljbGUtbGlzdCAuYXJ0aWNsZSArIC5hcnRpY2xlIHtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RjZGNkYztcbiAgfVxuICAjbWFya2V0LXNlY3RvcnMgYXJ0aWNsZS1saXN0IC5hcnRpY2xlIC5jb250YWluZXIge1xuICAgIHBhZGRpbmc6IHZhcigtLXNwYWNlcjApIDA7XG4gICAgb3V0bGluZTogaW5pdGlhbDtcbiAgfVxuICAjbWFya2V0LXNlY3RvcnMgYXJ0aWNsZS1saXN0IC5hcnRpY2xlIC5jb250YWluZXIgLmludHJvZHVjdGlvbiB7XG4gICAgbWF4LXdpZHRoOiA1MDBweDtcbiAgfVxuICAjbWFya2V0LXNlY3RvcnMgYXJ0aWNsZS1saXN0IC5hcnRpY2xlIC5jb250YWluZXIgLmltYWdlIHtcbiAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gIH1cbiAgI21hcmtldC1zZWN0b3JzIGFydGljbGUtbGlzdCAuYXJ0aWNsZSAuY29udGFpbmVyOmJlZm9yZSB7XG4gICAgY29udGVudDogXCJcIjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xuICAgIHotaW5kZXg6IC0xO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogNTAlO1xuICAgIHdpZHRoOiAxMDB2dztcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHZhcigtLXRyYW5zbGF0ZVgsIC01MCUpKTtcbiAgfVxufSIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBDb2xvdXJzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLy8gRXhwbGljaXQgQ29sb3VycyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8vIEV4cGxpY2l0IGNvbG91cnMgYXJlIGEgd2hhdCB0aGV5IGFyZS4gR3JlZW4gaXMgZ3JlZW4sIGJsdWUgaXMgYmx1ZS4uLiBubyBvYnNjdXJpdHkuXG4vLy8gV2Ugc3VmZml4IG51bWJlcnMgdG8gZGVmaW5lIHZhcmlhdGlvbnMgb2YgY29sb3VycyBpbiBubyBwYXJ0aWN1bGFyIG9yZGVyIG9mIHNoYWRlLiBcbi8vLyBFeGFtcGxlOiBncmVlbjEsIGdyZWVuMiwgZ3JlZW4zLCBncmVlbjQuIFRoaXMgaXMgc28gd2UgY2FuIGltbWlkaWF0ZWx5IHNlZSBob3cgXG4vLy8gbWFueSBvcHRpb25zIHdlIGhhdmUgZm9yIGEgc2luZ2xlIGNvbG91ciBhdCBhIGdsYW5jZS4gSWYgeW91IHNlZSAkZ3JlZW40LCB5b3Uga25vdyB0aGlzXG4vLy8gcHJvamVjdCBpcyB1c2luZyBmb3VyIHZhcmlhdGlvbnMgb2YgZ3JlZW4uIFRoaXMgaXMgYWxzbyBvZnRlbiB1c2VmdWwgYmVjYXVzZSBtYW55IGRldmVsb3BtZW50IFxuLy8vIHRvb2xzIHdpbGwgYXV0by1zdWdnZXN0IGNvbG91cnMgd2l0aCBhY3R1YWwgZXhhbXBsZXMgb2YgdGhlIGNvbG91ci4gXG4vLy8gVGhlIFBhbGxldGVzIG1vZHVsZSAoYXQgdGhlIGJvdHRvbSBvZiB0aGlzIGZpbGUpIHdpbGwgb3V0cHV0IHNoYWRlZCBuYW1lZCB2YXJpYXRpb25zLCBcbi8vLy8gPGNvbG91cj4tZGFyayBhbmQgPGNvbG91cj4tbGlnaHQuIElmIHlvdSBuZWVkIGFkZGl0aW9uYWwgc2hhZGVzIHBsZWFzZSByZWZyYWltIGZyb20gZ29pbmcgZG93biBcbi8vLyB0aGUgJ2xpZ2h0ZXInLCAnbGlnaHRlc3QnLCAnZGFya2VyJywgJ2Rhcmtlc3QnIGNvbnZlbnRpb24uIFRoZXNlIGFyZSBub3QgcGFydGljdWFybHkgbGVnaWFibGUgXG4vLy8gYW5kIHRoZXkgYXJlIGxpbWl0ZWQgYnkgaG93IGNyZWF0aXZlIChjb25mdXNpbmcpIHlvdXIgd29yZGluZyBjYW4gYmUuIFxuLy8vIEl0IGlzIGJldHRlciB0byBkZWZpbmUgYSBuZXcgZXhwbGNpdCBjb2xvdXIgZW50aXJlbHkuIFxuLy8vIEBzZWUgaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS93aGF0LWRvLXlvdS1uYW1lLWNvbG9yLXZhcmlhYmxlcy9cblxuJGJsdWUgICA6ICMxMzFmNmI7IC8vIFByaW1hcnlcbiRibHVlMiAgOiAjMjkyQjY4OyAvLyBOYWtlZCBMaW5rXG4kYmx1ZTMgIDogIzNkM2Y3ZjsgLy8gTGlnbnQgR3JhZGllbnRcbiRibHVlNCAgOiAjMTAxMjRkOyAvLyBEYXJrIEdyYWRpZW50XG4kYmx1ZTUgIDogIzAwOTVGRjsgLy8gTmF2aWdhdGlvbiBsaW5rIGhvdmVyICBcbi8vICRyZWQgICAgOiAjRTAzQTQwOyAvLyBTZWNvbmRhcnlcbiRyZWQgICAgOiAjREYzMDM1OyAvLyBTZWNvbmRhcnkgLSBUaGlzIHBhc3NlcyB0aGUgY29udHJhc3QgcmF0aW8gYWNjZXNzaWJpbGl0eSB0ZXN0IGluIEdvb2dsZXMgTGlnaHRob3VzZSBcbiRncmV5ICAgOiAjOTY5Njk1O1xuJGdyZXkyICA6ICM2QTZBNkE7IC8vIEZvbnRcbiRncmV5MyAgOiAjRjRGNEY0OyAvLyBMaWdodGVyIEdyZXkgQmFja2dyb3VuZFxuJGdyZXk0ICA6ICNkY2RjZGM7IFxuJGdyZXk1ICA6ICNCMUIxQjE7IC8vIFNwYWNlcnMgPGhyPlxuJGdyZXk2ICA6ICMzMzMyMzY7IC8vIE5hdmlnYXRpb24gbGluayBob3ZlciAgXG4kZ3JlZW4gIDogIzUwQkMwODtcbiRncmVlbjIgOiAjNzZiYjI4OyAvLyBFU0cgZ3JlZW5cbiR5ZWxsb3cgOiAjRjZGNERCOyAvLyBEaXNjbGFpbWVyIEJhY2tncm91bmRcbiR5ZWxsb3cyIDogI0ZDQjAwMjsgXG4kYmxhY2sgIDogIzFFMUExQTtcblxuJG1hcmsgOiAkYmx1ZTU7IC8vIGJhY2tncm91bmQgY29sb3VyIGZvciA8bWFyaz4gdGFnc1xuXG4kcHJpbWFyeSAgIDogdmFyKC0tcHJpbWFyeSwgICN7JGJsdWV9KTtcbiRzZWNvbmRhcnkgOiB2YXIoLS1zZWNvbmRhcnksICN7JHJlZH0pO1xuXG4vLy8gUGFsZXR0ZSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8vIEJ5IGxvYWRpbmcgY29uZmlndXJhdGlvbnMgaW50byB0aGlzICdwYWxsZXRlJyBtb2R1bGUsIHdlIHdpbGwgYmUgYWJsZVxuLy8vIHRvIGRlY2xhcmUgdmFyaWFudHMgb2YgYSBmZXcgY29tbW9uIGNvbG91cnMuIFlvdSBjYW4gYWxzbyBhZGp1c3QgdGhlIGxpZ2h0bmVzc1xuLy8vIG9yIGRhcmtuZXNzIG9mIGVhY2ggdmFyaWFudCBieSBwYXNzaW5nIGluIHRoZSByZWxldmFudCBwcml2YXRlIHJ1bGVzLiBcbi8vLyBQYWxldHRlIHdpbGwgYWxzbyBleHBvc2UgcG9wdWxhciBzb2NpYWwgbWVkaWEgY29sb3VycyBhbmQgdGhlIFllbGxvIGJyYW5kIGNvbG91ci5cbi8vLyBAc2VlIGh0dHBzOi8vc2Fzcy1sYW5nLmNvbS9kb2N1bWVudGF0aW9uL2F0LXJ1bGVzL2ZvcndhcmQjY29uZmlndXJpbmctbW9kdWxlc1xuLy8vIEBvdXRwdXQgJGdyZWVuIDogIzAyOTI5QTsgJGdyZWVuLWRhcmsgOiAjMjU2NTY5OyAkZ3JlZW4tbGlnaHQ6ICMwNGI5YzQ7XG5cbkBmb3J3YXJkICdjcmVhdGUvcGFsZXR0ZScgd2l0aCAoXG4gICRibHVlICAgOiAkYmx1ZSxcbiAgJHJlZCAgICA6ICRyZWQsXG4gICRncmV5ICAgOiAkZ3JleSxcbiAgJHllbGxvdyA6ICR5ZWxsb3csXG4gICRncmVlbiAgOiAkZ3JlZW4sXG4gICRibGFjayAgOiAkYmxhY2tcbik7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8gVW5pdHNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkB1c2UgXCJzYXNzOm1hdGhcIjtcbkB1c2UgJ3Nhc3M6c3RyaW5nJztcbkB1c2UgJ3Nhc3M6bWV0YSc7XG5cbi8vIFRoaXMgdW5pdHMgY3JlYXRvciB3aWxsIHJlbmRlciBzaXggcG9zaXRpdmUgYW5kIHNpeCBuZWdhdGl2ZSBzYXNzIHZhcmlhYmxlcyBmb3IgXG4vLyBnYXBzLCBzcGFjZXJzLCBhbmQgZ3V0dGVycyByZWxhdGl2ZSB0byB0aGUgYmFzZXYgdmFsdWVzIGRlZmluZWQgYmVsb3cuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQmFzZSBWYWx1ZXMgXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vLy8gQHNlZSBodHRwczovL2NvZGVwZW4uaW8vbWFya25vdHRvbi9wZW4vRXhQYk5HZVxuXG4vLyBUaGVzZSB0aHJlZSB2YWx1ZXMgd2lsbCBhY3QgYSBjb25zdGFudCBiYXNlbGluZSBmb3IgYWxsIGZvbGxvd2luZyB1bml0IGRlbGNhcmF0aW9ucy5cblxuLy8gR2FwcyBtdXN0IHVzZSBhbiBhYnNvbHV0ZSBhbmQgc3RhdGljICdweCcgdW5pdC4gSXQgc2hvdWxkIG5vdCBiZSByZWxhdGl2ZSB0byBhbnlcbi8vIHBhcmVudCBjb250YWluZXIgYW5kIGlzIG5vdCBpbnRlbmRlZCBmb3IgZm9udCBzaXplcywgc28geW91IHNob3VsZCBub3QgdXNlICdyZW0nIG9yICdlbScuIFxuJGdhcCA6IDE2cHggIWRlZmF1bHQ7XG4kYmFzZS1nYXAgOiAkZ2FwO1xuXG4vLyBTcGFjZXJzIG11c3QgdXNlIGEgJ3ZoJyB1bml0IHNvIHRoZXkgYXJlIHJlbGF0aXZlIHRvIHRoZSB1c2VycyB2aWV3cG9ydCBoZWlnaHQtd2lzZS5cbi8vIFRoZXkgc2hvdWxkIHByaW1hcmlseSBiZSB1c2VkIGZvciB0aGUgdG9wIGFuZCBib3R0b20gbWFyZ2lucyBvbiBhIGNvbXBvbmVudCBsZXZlbC5cbiRzcGFjZXIgOiA0dmggIWRlZmF1bHQ7IFxuJGJhc2Utc3BhY2VyIDogJHNwYWNlcjsgXG5cbi8vIEd1dHRlcnMgbXVzdCB1c2UgYSAndncnIHVuaXQgc28gdGhleSBhcmUgcmVsYXRpdmUgdG8gdGhlIHVzZXJzIHZpZXdwb3J0IHdpZHRoLXdpc2UuIFxuLy8gVGhleSBzaG91bGQgcHJpbWFyaWx5IGJlIHVzZWQgZm9yIHRoZSBsZWZ0IGFuZCByaWdodCBwYWRkaW5nIG9yIG1hcmdpbiBvbiBhIHBhcmVudCBsZXZlbC5cbi8vIEFzIGEgc3VnZ2VzdGlvbiwgdGhpcyBndXR0ZXIgY29uc3RhbnQgc2hvdWxkIGJlIGhhbGYgdGhlIHNpemUgb2YgdGhlIHNwYWNlciB2YWx1ZS5cbiRndXR0ZXIgOiAzdncgIWRlZmF1bHQ7XG4kYmFzZS1ndXR0ZXIgOiAkZ3V0dGVyOyBcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFzYm9sdXRlIFVuaXRzIFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gR2FwcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEdhcHMgYXJlIGFuIGFic29sdXRlIHVuaXQgKHB4KSBpbnRlbmRlZCB0byBiZSB1c2VkIG9uIGluZGl2aWR1YWwgZWxlbWVudHMgd2l0aGluIGEgY29tcG9uZW50ZWQuIFxuLy8gVGhlIGFpbSBpcyB0byByZXRhaW4gY29uc2lzdGFudCBzcGFjaW5nIGFtb25nc3QgYmxvY2ssIGlubGluZSwgdGFibGUgYW5kIGdyb3VwIGh0bWwgZWxlbWVudHMuXG5cbkBmdW5jdGlvbiBnYXAoJGFtb3VudCA6IDEpIHtcbiAgQGlmICggJGFtb3VudCA9PSAxICkgeyBcbiAgICBAcmV0dXJuIHZhcigtLWdhcCk7IFxuICB9IEBlbHNlIHsgXG4gICAgQHJldHVybiBjYWxjKHZhcigtLWdhcCkgKiAjeyRhbW91bnR9KTsgXG4gIH1cbn1cblxuJGdhcDAgOiBnYXAoMC41KTsgJGdhcDAtIDogZ2FwKC0wLjUpO1xuJGdhcCAgOiBnYXAoMSk7ICAgJGdhcC0gIDogZ2FwKC0xKTtcbiRnYXAyIDogZ2FwKDIpOyAgICRnYXAyLSA6IGdhcCgtMik7XG4kZ2FwMyA6IGdhcCgzKTsgICAkZ2FwMy0gOiBnYXAoLTMpO1xuJGdhcDQgOiBnYXAoNCk7ICAgJGdhcDQtIDogZ2FwKC00KTtcbiRnYXA1IDogZ2FwKDUpOyAgICRnYXA1LSA6IGdhcCgtNSk7XG4kZ2FwNiA6IGdhcCg2KTsgICAkZ2FwNi0gOiBnYXAoLTYpO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUmVsYXRpdmUgVW5pdHMgXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5AZnVuY3Rpb24gX2R5bmFtaWMtdW5pdCgkY3VzdG9tLXByb3BlcnR5LCAkYW1vdW50LCAkbWluLCAkbWF4LCAkdXNlLW5lZ2F0aXZlIDogZmFsc2UsICR1c2UtY2xhbXAgOiB0cnVlKSB7XG5cbiAgLy8gQ2FsYyBNZXRob2RcbiAgJHJlc3VsdCA6IGNhbGMoKCN7JGN1c3RvbS1wcm9wZXJ0eX0gKiAjeyRhbW91bnR9KSArICN7aWYoJG1pbiA9PSAwLCAwcHgsICRtaW4pfSk7XG4gIFxuICAvLyBDbGFtcCBNZXRob2RcbiAgQGlmICggJHVzZS1jbGFtcCApIHtcbiAgICBAaWYgKCAkYW1vdW50ID09IDAgKSB7XG4gICAgICAkcmVzdWx0IDogY2xhbXAoI3ttYXRoLmRpdigkbWluLCAyKX0sICN7JGN1c3RvbS1wcm9wZXJ0eX0gKiAwLjUsICN7JG1heH0pO1xuICAgIH0gQGVsc2UgaWYgKCAkYW1vdW50ID09IDEgKSB7XG4gICAgICAkcmVzdWx0IDogY2xhbXAoI3skbWlufSwgI3skY3VzdG9tLXByb3BlcnR5fSwgI3skbWF4fSk7XG4gICAgfSBAZWxzZSB7XG4gICAgICAkcmVzdWx0IDogY2xhbXAoI3skbWlufSwgI3skY3VzdG9tLXByb3BlcnR5fSAqICN7JGFtb3VudH0sICN7JG1heH0pO1xuICAgIH1cbiAgfSBcblxuICBAaWYgKCAkdXNlLW5lZ2F0aXZlICkge1xuICAgICRyZXN1bHQgOiBjYWxjKC0xICogI3skcmVzdWx0fSk7XG4gIH1cblxuICBAcmV0dXJuICRyZXN1bHQ7XG5cbn0gXG5cbi8vIFNwYWNlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBTcGFjZXJzIGFyZSBhIHJlbGF0aXZlIHZpZXdwb3J0IGhlaWdodCAodmgpIHVuaXQgaW50ZW5kZWQgdG8gYmUgdXNlZCBvbiBhIGNvbXBvbmVudGVkIGxldmVsLlxuLy8gVGhlIGFpbSBpcyB0byByZXRhaW4gY29uc2lzdGFudCB0b3AgYW5kIGJvdHRvbSBzcGFjaW5nIGFtb25nc3QgJ3NlY3Rpb24nIGFuZCAnY3VzdG9tJyBlbGVtZW50cy5cbi8vIFNwYWNlcnMgd2lsbCBlcXVhdGUgdG8gc29tZXRoaW5nIGxpa2U6IGAoJHNwYWNlciAqIHgpICsgJGdhcGAuIFxuLy8gVGhlICckZ2FwJyBpcyBhZGRlZCBzbyB0aGF0IHZoIHNwYWNpbmcgd2lsbCBuZXZlciBzY2FsZSB0b28gY2xvc2UgdG8gMHB4LiBcblxuQGZ1bmN0aW9uIHNwYWNlcigkYW1vdW50IDogMSwgJG1pbiA6ICRiYXNlLWdhcCwgJG1heCA6IG51bGwsICR1c2UtbmVnYXRpdmUgOiBmYWxzZSwgJHVzZS1jbGFtcCA6IHRydWUpIHtcbiAgQGlmICggJGFtb3VudCA9PSAwKSB7ICRhbW91bnQgOiAwLjU7ICRtaW4gOiBtYXRoLmRpdigkbWluLCAyKTsgfVxuICBAaWYgKCBtZXRhLnR5cGUtb2YoJG1heCkgPT0gJ251bGwnICkgeyBcbiAgICBAaWYgKCBtZXRhLnR5cGUtb2YoJG1pbikgPT0gJ3N0cmluZycgYW5kIHN0cmluZy5pbmRleCgkbWluLCAndmFyJykgKSB7XG4gICAgICAkbWF4IDogY2FsYygjeyRtaW59ICogI3skYW1vdW50ICsgMX0pOyBcbiAgICB9IEBlbHNlIHtcbiAgICAgICRtYXggOiAjeyRtaW4gKiAoJGFtb3VudCArIDEpfTsgXG4gICAgfVxuICB9XG4gIEByZXR1cm4gX2R5bmFtaWMtdW5pdCh2YXIoLS1zcGFjZXIpLCAkYW1vdW50LCAkbWluLCAkbWF4LCAkdXNlLW5lZ2F0aXZlLCAkdXNlLWNsYW1wKTtcbn1cblxuJHNwYWNlcjAgOiB2YXIoLS1zcGFjZXIwKTsgJHNwYWNlcjAtIDogdmFyKC0tc3BhY2VyMC0pO1xuJHNwYWNlciAgOiB2YXIoLS1zcGFjZXIxKTsgJHNwYWNlci0gIDogdmFyKC0tc3BhY2VyMS0pO1xuJHNwYWNlcjIgOiB2YXIoLS1zcGFjZXIyKTsgJHNwYWNlcjItIDogdmFyKC0tc3BhY2VyMi0pO1xuJHNwYWNlcjMgOiB2YXIoLS1zcGFjZXIzKTsgJHNwYWNlcjMtIDogdmFyKC0tc3BhY2VyMy0pO1xuJHNwYWNlcjQgOiB2YXIoLS1zcGFjZXI0KTsgJHNwYWNlcjQtIDogdmFyKC0tc3BhY2VyNC0pO1xuJHNwYWNlcjUgOiB2YXIoLS1zcGFjZXI1KTsgJHNwYWNlcjUtIDogdmFyKC0tc3BhY2VyNS0pO1xuJHNwYWNlcjYgOiB2YXIoLS1zcGFjZXI2KTsgJHNwYWNlcjYtIDogdmFyKC0tc3BhY2VyNi0pO1xuXG4vLyBHdXR0ZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gR3V0dGVycyBhcmUgYSByZWxhdGl2ZSB2aWV3cG9ydCB3aWR0aCAodncpIHVuaXQgaW50ZW5kZWQgdG8gYmUgdXNlZCBvbiBhIHBhcmVudCBsZXZlbDtcbi8vIGZvciBleGFtcGxlLCBhIHdyYXBwZXIgY29udGFpbmVyIG9yIGJvZHkgd2l0aCBuZXN0ZWQgY29tcG9uZW50cy4gXG4vLyBUaGUgYWltIGlzIHRvIHJldGFpbiBjb25zaXN0YW50IGxlZnQgYW5kIHJpZ2h0IHNwYWNpbmcgYW1vbmdzdCAnc2VjdGlvbicgYW5kICdjdXN0b20nIGVsZW1lbnRzLlxuLy8gR3V0dGVycyB3aWxsIGVxdWF0ZSB0byBzb21ldGhpbmcgbGlrZTogYCgkZ3V0dGVyICogeCkgKyAkZ2FwYC4gXG4vLyBUaGUgJyRnYXAnIGlzIGFkZGVkIHNvIHRoYXQgdncgc3BhY2luZyB3aWxsIG5ldmVyIHNjYWxlIHRvbyBjbG9zZSB0byAwcHguIFxuXG5AZnVuY3Rpb24gZ3V0dGVyKCRhbW91bnQgOiAxLCAkbWluIDogJGJhc2UtZ2FwLCAkbWF4IDogbnVsbCwgJHVzZS1uZWdhdGl2ZSA6IGZhbHNlLCAkdXNlLWNsYW1wIDogdHJ1ZSkge1xuICBAaWYgKCAkYW1vdW50ID09IDApIHsgJGFtb3VudCA6IDAuNTsgJG1pbiA6IG1hdGguZGl2KCRtaW4sIDIpOyB9XG4gIEBpZiAoIG1ldGEudHlwZS1vZigkbWF4KSA9PSAnbnVsbCcgKSB7IFxuICAgIEBpZiAoIG1ldGEudHlwZS1vZigkbWluKSA9PSAnc3RyaW5nJyBhbmQgc3RyaW5nLmluZGV4KCRtaW4sICd2YXInKSApIHtcbiAgICAgICRtYXggOiBjYWxjKCN7JG1pbn0gKiAjeyRhbW91bnQgKyAxfSk7IFxuICAgIH0gQGVsc2Uge1xuICAgICAgJG1heCA6ICN7JG1pbiAqICgkYW1vdW50ICsgMSl9OyBcbiAgICB9XG4gIH1cbiAgQHJldHVybiBfZHluYW1pYy11bml0KHZhcigtLWd1dHRlciksICRhbW91bnQsICRtaW4sICRtYXgsICR1c2UtbmVnYXRpdmUsICR1c2UtY2xhbXApO1xufVxuXG4kZ3V0dGVyMCA6IHZhcigtLWd1dHRlcjApOyAkZ3V0dGVyMC0gOiB2YXIoLS1ndXR0ZXIwLSk7XG4kZ3V0dGVyICA6IHZhcigtLWd1dHRlcjEpOyAkZ3V0dGVyLSAgOiB2YXIoLS1ndXR0ZXIxLSk7XG4kZ3V0dGVyMiA6IHZhcigtLWd1dHRlcjIpOyAkZ3V0dGVyMi0gOiB2YXIoLS1ndXR0ZXIyLSk7XG4kZ3V0dGVyMyA6IHZhcigtLWd1dHRlcjMpOyAkZ3V0dGVyMy0gOiB2YXIoLS1ndXR0ZXIzLSk7XG4kZ3V0dGVyNCA6IHZhcigtLWd1dHRlcjQpOyAkZ3V0dGVyNC0gOiB2YXIoLS1ndXR0ZXI0LSk7XG4kZ3V0dGVyNSA6IHZhcigtLWd1dHRlcjUpOyAkZ3V0dGVyNS0gOiB2YXIoLS1ndXR0ZXI1LSk7XG4kZ3V0dGVyNiA6IHZhcigtLWd1dHRlcjYpOyAkZ3V0dGVyNi0gOiB2YXIoLS1ndXR0ZXI2LSk7XG4iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vIFBvc2l0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjcG9zaXRpb25cbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkB1c2UgJy4uL2hlbHBlcnMvYnJlYWsnO1xuXG5AbWl4aW4gZXhwYW5kZWQge1xuXHRwb3NpdGlvbjphYnNvbHV0ZTsgXG5cdHRvcDowOyBcblx0bGVmdDowOyBcblx0d2lkdGg6MTAwJTtcblx0aGVpZ2h0OjEwMCU7IFxufVxuXG5AbWl4aW4gY2VudHJlIHtcbiAgcG9zaXRpb246YWJzb2x1dGU7IFxuXHR0b3A6NTAlOyBcblx0bGVmdDo1MCU7XG4gIHRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwgLTUwJSk7IFxufVxuXG5AbWl4aW4gYmxvd291dCgkaG9yaXpvbnRhbCA6IHRydWUsICR2ZXJ0aWNhbCA6IGZhbHNlKSB7XG4gIFxuICBwb3NpdGlvbjphYnNvbHV0ZTtcblxuICBAaWYgJGhvcml6b250YWwgYW5kICR2ZXJ0aWNhbCB7XG4gICAgdG9wICAgICAgIDogNTAlOyBcbiAgICBsZWZ0ICAgICAgOiA1MCU7IFxuICAgIHdpZHRoICAgICA6IDEwMHZ3O1xuICAgIGhlaWdodCAgICA6IDEwMHZoOyBcbiAgICB0cmFuc2Zvcm0gOiB0cmFuc2xhdGUodmFyKC0tdHJhbnNsYXRlWCwgLTUwJSksIHZhcigtLXRyYW5zbGF0ZVksIC01MCUpKTtcbiAgfSBAZWxzZSBpZiAkaG9yaXpvbnRhbCAge1xuICAgIHRvcCAgICAgICA6IDA7IFxuICAgIGxlZnQgICAgICA6IDUwJTsgXG4gICAgd2lkdGggICAgIDogMTAwdnc7XG4gICAgaGVpZ2h0ICAgIDogMTAwJTsgXG4gICAgdHJhbnNmb3JtIDogdHJhbnNsYXRlWCh2YXIoLS10cmFuc2xhdGVYLCAtNTAlKSk7XG4gIH0gQGVsc2UgaWYgJHZlcnRpY2FsICB7XG4gICAgdG9wICAgICAgIDogNTAlOyBcbiAgICBsZWZ0ICAgICAgOiAwOyBcbiAgICB3aWR0aCAgICAgOiAxMDAlO1xuICAgIGhlaWdodCAgICA6IDEwMHZoOyBcbiAgICB0cmFuc2Zvcm0gOiB0cmFuc2xhdGVZKHZhcigtLXRyYW5zbGF0ZVksIC01MCUpKTtcbiAgfVxuXG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLyBIb3ZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2hvdmVyXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gaG92ZXIoJHNlbGVjdG9yIDogbnVsbCkge1xuICBAbWVkaWEgKCBob3ZlciA6IGhvdmVyICkge1xuICAgICY6aG92ZXIge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgQGlmICRzZWxlY3RvciB7XG4gICAgJiN7JHNlbGVjdG9yfSB7IFxuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG5cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vIEJyZWFrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjYnJlYWtcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkBtaXhpbiBvdXQoJGJyZWFrcG9pbnQpIHtcbiAgQG1lZGlhIChtaW4td2lkdGg6I3skYnJlYWtwb2ludCArIDF9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGluKCRicmVha3BvaW50KSB7XG4gIEBtZWRpYSAobWF4LXdpZHRoOiN7JGJyZWFrcG9pbnR9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuQG1peGluIGJldHdlZW4oJG1pbiwgJG1heCkge1xuICBAbWVkaWEgKG1pbi13aWR0aDojeyRtaW59KSBhbmQgKG1heC13aWR0aDojeyRtYXh9KSB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn0iLCIvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuLy8vIEJhY2tncm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2JhY2tncm91bmRcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbkB1c2UgJ3Bvc2l0aW9uJztcblxuQG1peGluIGJsb3dvdXQoJHBzdWRvIDogYmVmb3JlKSB7XG4gICY6I3skcHN1ZG99IHtcbiAgICBjb250ZW50OlwiXCI7XG5cdFx0YmFja2dyb3VuZC1jb2xvcjppbmhlcml0OyBcblx0XHR6LWluZGV4Oi0xOyBcbiAgICBAaW5jbHVkZSBwb3NpdGlvbi5ibG93b3V0OyBcbiAgICBAY29udGVudDtcbiAgfVxufSJdfQ== */