.tag.malibu {
  background-color: #4fc3f7;
}
.tag.sky_blue {
  background-color: #03a9f4;
}
.tag.blue {
  background-color: #304ffe;
}
.tag.orange {
  background-color: #ff9800;
}
.tag.yellow {
  background-color: #ffca28;
}
.tag.tomato {
  background-color: #e53935;
}
.tag.royal {
  background-color: #880e4f;
}
.tag.bilbao {
  background-color: #558b2f;
}
.tag.cornflower {
  background-color: #8c9eff;
}
.tag.light_sky {
  background-color: #90caf9;
}
.tag.indigo {
  background-color: #6a1b9a;
}
.tag.dark_indigo {
  background-color: #4a148c;
}
.tag.scooter {
  background-color: #00838f;
}
.tag.atoll {
  background-color: #006064;
}
.tag.gorse {
  background-color: #ffea00;
}
.tag.bean {
  background-color: #3e2723;
}
.tag.hemp {
  background-color: #a1887f;
}
.tag.black {
  background-color: #000000;
}

.courses .course:hover {
  padding-bottom: 10px;
}
.courses .course:hover .course-i {
  box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.2);
}
.courses .course:hover .course-i .button-w {
  display: block;
}
.courses .course {
  padding-bottom: 43px;
}
.courses .course .course-i {
  border: 1px solid #eaeaea;
  background: #fff;
  padding: 10px;
  margin: 0 5px 5px;
}
.courses .course .course-i .tags .tag.black-text {
  color: #292929;
}
.courses .course .course-i .tags .tag {
  text-transform: uppercase;
  display: inline-block;
  color: #fff;
  font-size: 11px;
  font-weight: bold;
  padding: 5px 12px;
}
.courses .course .course-i .img-w .img-tags {
  position: relative;
}
.courses .course .course-i .img-w .img-tags .tag.promo {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  -ms-flex-pack: center;
      justify-content: center;
  width: 54px;
  height: 50px;
  padding: 0;
  left: auto;
  right: 0;
  font-size: 16px;
}
.courses .course .course-i .img-w .img-tags .tag {
  position: absolute;
  top: 0;
  left: 0;
}
.courses .course .course-i .img-w .img-tags .tag:nth-child(2) {
  top: 30px;
}
.courses .course .course-i .img-w .img-tags img {
  width: 100%;
  height: auto;
}
.courses .course .course-i .tags-title {
  height: 115px;
}
.courses .course .course-i .tags-title .bottom-tags {
  text-align: center;
}
.courses .course .course-i .tags-title .bottom-tags .tag {
  margin-top: 5px;
}
.courses .course .course-i .tags-title .title {
  display: block;
  margin-top: 5px;
  text-align: center;
  font-size: 11.9px;
  color: #292929;
}
.courses .course .course-i .price-w {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: column;
      flex-direction: column;
  -ms-flex-pack: end;
      justify-content: flex-end;
  height: 70px;
}
.courses .course .course-i .price-w .price {
  color: #3799db;
  text-align: center;
  font-size: 20px;
  font-weight: bold;
  margin-bottom: 0;
}
.courses .course .course-i .price-w .price del {
  color: #b3b3b3;
  font-weight: normal;
  font-size: 12px;
}
.courses .course .course-i .footer-card {
  text-align: center;
  font-size: 11.9px;
  margin-bottom: 15px;
}
.courses .course .course-i .button-w .btn {
  padding-left: 0;
  padding-right: 0;
}
@media only screen and (min-width: 1020px) {
  .courses .course .course-i .button-w {
    display: none;
  }
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvdXJzZV9jYXJkLnN0eWwiLCJjb3Vyc2VfY2FyZC5jc3MiLCIuLi8uLi8uLi9ub2RlX21vZHVsZXMvcnVwdHVyZS9ydXB0dXJlL2luZGV4LnN0eWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUJJO0VBQ0ksMEJBQUE7Q0NwQlA7QURtQkc7RUFDSSwwQkFBQTtDQ2pCUDtBRGdCRztFQUNJLDBCQUFBO0NDZFA7QURhRztFQUNJLDBCQUFBO0NDWFA7QURVRztFQUNJLDBCQUFBO0NDUlA7QURPRztFQUNJLDBCQUFBO0NDTFA7QURJRztFQUNJLDBCQUFBO0NDRlA7QURDRztFQUNJLDBCQUFBO0NDQ1A7QURGRztFQUNJLDBCQUFBO0NDSVA7QURMRztFQUNJLDBCQUFBO0NDT1A7QURSRztFQUNJLDBCQUFBO0NDVVA7QURYRztFQUNJLDBCQUFBO0NDYVA7QURkRztFQUNJLDBCQUFBO0NDZ0JQO0FEakJHO0VBQ0ksMEJBQUE7Q0NtQlA7QURwQkc7RUFDSSwwQkFBQTtDQ3NCUDtBRHZCRztFQUNJLDBCQUFBO0NDeUJQO0FEMUJHO0VBQ0ksMEJBQUE7Q0M0QlA7QUR6Qkc7RUFDSSxxQkFBQTtDQzJCUDtBRDFCTztFQUNJLDRDQUFBO0NDNEJYO0FEM0JXO0VBQ0ksZUFBQTtDQzZCZjtBRDVCRztFQUNJLHFCQUFBO0NDOEJQO0FEN0JPO0VBQ0ksMEJBQUE7RUFDQSxpQkFBQTtFQUNBLGNBQUE7RUFDQSxrQkFBQTtDQytCWDtBRDdCZTtFQUNJLGVBQUE7Q0MrQm5CO0FEOUJlO0VBQ0ksMEJBQUE7RUFDQSxzQkFBQTtFQUNBLFlBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0Esa0JBQUE7Q0NnQ25CO0FEOUJlO0VBQ0ksbUJBQUE7Q0NnQ25CO0FEL0JtQjtFQUNJLHFCQUFBO0VBQUEsY0FBQTtFQUNBLHVCQUFBO01BQUEsb0JBQUE7RUFDQSxzQkFBQTtNQUFBLHdCQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxXQUFBO0VBQ0EsV0FBQTtFQUNBLFNBQUE7RUFDQSxnQkFBQTtDQ2lDdkI7QURoQ21CO0VBQ0ksbUJBQUE7RUFDQSxPQUFBO0VBQ0EsUUFBQTtDQ2tDdkI7QURqQ3VCO0VBQ0ksVUFBQTtDQ21DM0I7QURsQ21CO0VBQ0ksWUFBQTtFQUNBLGFBQUE7Q0NvQ3ZCO0FEbkNXO0VBQ0ksY0FBQTtDQ3FDZjtBRHBDZTtFQUNJLG1CQUFBO0NDc0NuQjtBRHJDbUI7RUFDSSxnQkFBQTtDQ3VDdkI7QUR0Q2U7RUFDSSxlQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQkFBQTtFQUNBLGtCQUFBO0VBQ0EsZUFBQTtDQ3dDbkI7QUR2Q1c7RUFDSSxxQkFBQTtFQUFBLGNBQUE7RUFDQSwyQkFBQTtNQUFBLHVCQUFBO0VBQ0EsbUJBQUE7TUFBQSwwQkFBQTtFQUNBLGFBQUE7Q0N5Q2Y7QUR4Q2U7RUFDSSxlQUFBO0VBQ0EsbUJBQUE7RUFDQSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsaUJBQUE7Q0MwQ25CO0FEekNlO0VBQ0ksZUFBQTtFQUNBLG9CQUFBO0VBQ0EsZ0JBQUE7Q0MyQ25CO0FEMUNXO0VBQ0ksbUJBQUE7RUFDQSxrQkFBQTtFQUNBLG9CQUFBO0NDNENmO0FEMUNlO0VBQ0ksZ0JBQUE7RUFDQSxpQkFBQTtDQzRDbkI7QUNMVTtFQUFBO0lGckNTLGNBQUE7R0M4Q2pCO0NBQ0YiLCJmaWxlIjoiY291cnNlX2NhcmQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGltcG9ydCBcIi4uL2dsb2JhbC9fX192YXJpYWJsZXNcIlxuXG50YWdfY29sb3JzID0gJ21hbGlidScgIzRGQzNGNyxcbiAgICAgICAgICAgICAnc2t5X2JsdWUnICMwM0E5RjQsXG4gICAgICAgICAgICAgJ2JsdWUnICMzMDRGRkUsXG4gICAgICAgICAgICAgJ29yYW5nZScgI0ZGOTgwMCxcbiAgICAgICAgICAgICAneWVsbG93JyAjRkZDQTI4LFxuICAgICAgICAgICAgICd0b21hdG8nICNFNTM5MzUsXG4gICAgICAgICAgICAgJ3JveWFsJyAjODgwRTRGLFxuICAgICAgICAgICAgICdiaWxiYW8nICM1NThCMkYsXG4gICAgICAgICAgICAgJ2Nvcm5mbG93ZXInICM4QzlFRkYsXG4gICAgICAgICAgICAgJ2xpZ2h0X3NreScgIzkwQ0FGOSxcbiAgICAgICAgICAgICAnaW5kaWdvJyAjNkExQjlBLFxuICAgICAgICAgICAgICdkYXJrX2luZGlnbycgIzRBMTQ4QyxcbiAgICAgICAgICAgICAnc2Nvb3RlcicgIzAwODM4RixcbiAgICAgICAgICAgICAnYXRvbGwnICMwMDYwNjQsXG4gICAgICAgICAgICAgJ2dvcnNlJyAjRkZFQTAwLFxuICAgICAgICAgICAgICdiZWFuJyAjM0UyNzIzLFxuICAgICAgICAgICAgICdoZW1wJyAjQTE4ODdGXG5cbmZvciB0YWdfY29sb3IgaW4gdGFnX2NvbG9yc1xuICAgIC50YWcue3RhZ19jb2xvclswXX1cbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdGFnX2NvbG9yWzFdXG5cbi5jb3Vyc2VzXG4gICAgLmNvdXJzZTpob3ZlclxuICAgICAgICBwYWRkaW5nLWJvdHRvbSAxMHB4XG4gICAgICAgIC5jb3Vyc2UtaVxuICAgICAgICAgICAgYm94LXNoYWRvdzogMHB4IDNweCA2cHggMHB4IHJnYmEoMCwwLDAsMC4yKVxuICAgICAgICAgICAgLmJ1dHRvbi13XG4gICAgICAgICAgICAgICAgZGlzcGxheSBibG9ja1xuICAgIC5jb3Vyc2VcbiAgICAgICAgcGFkZGluZy1ib3R0b20gNDNweFxuICAgICAgICAuY291cnNlLWlcbiAgICAgICAgICAgIGJvcmRlciAxcHggc29saWQgI2UxZTFlMSArIDMwJVxuICAgICAgICAgICAgYmFja2dyb3VuZDogd2hpdGVcbiAgICAgICAgICAgIHBhZGRpbmcgMTBweFxuICAgICAgICAgICAgbWFyZ2luIDAgNXB4IDVweFxuICAgICAgICAgICAgLnRhZ3NcbiAgICAgICAgICAgICAgICAudGFnLmJsYWNrLXRleHRcbiAgICAgICAgICAgICAgICAgICAgY29sb3IgdGV4dHNcbiAgICAgICAgICAgICAgICAudGFnXG4gICAgICAgICAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtIHVwcGVyY2FzZVxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5IGlubGluZS1ibG9ja1xuICAgICAgICAgICAgICAgICAgICBjb2xvciB3aGl0ZVxuICAgICAgICAgICAgICAgICAgICBmb250LXNpemUgMTFweFxuICAgICAgICAgICAgICAgICAgICBmb250LXdlaWdodCBib2xkXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmcgNXB4IDEycHhcbiAgICAgICAgICAgIC5pbWctd1xuICAgICAgICAgICAgICAgIC5pbWctdGFnc1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiByZWxhdGl2ZVxuICAgICAgICAgICAgICAgICAgICAudGFnLnByb21vXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5IGZsZXhcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGp1c3RpZnktY29udGVudCBjZW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoIDU0cHhcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA1MHB4XG4gICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nIDBcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgYXV0b1xuICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgMFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udC1zaXplIDE2cHhcbiAgICAgICAgICAgICAgICAgICAgLnRhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gYWJzb2x1dGVcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvcCAwXG4gICAgICAgICAgICAgICAgICAgICAgICBsZWZ0IDBcbiAgICAgICAgICAgICAgICAgICAgICAgICY6bnRoLWNoaWxkKDIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wIDMwcHhcbiAgICAgICAgICAgICAgICAgICAgaW1nXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCAxMDAlXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQgYXV0b1xuICAgICAgICAgICAgLnRhZ3MtdGl0bGVcbiAgICAgICAgICAgICAgICBoZWlnaHQgMTE1cHhcbiAgICAgICAgICAgICAgICAuYm90dG9tLXRhZ3NcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1hbGlnbiBjZW50ZXJcbiAgICAgICAgICAgICAgICAgICAgLnRhZ1xuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luLXRvcCA1cHhcbiAgICAgICAgICAgICAgICAudGl0bGVcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheSBibG9ja1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tdG9wIDVweFxuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduIGNlbnRlclxuICAgICAgICAgICAgICAgICAgICBmb250LXNpemUgMTEuOXB4XG4gICAgICAgICAgICAgICAgICAgIGNvbG9yIHRleHRzXG4gICAgICAgICAgICAucHJpY2Utd1xuICAgICAgICAgICAgICAgIGRpc3BsYXkgZmxleFxuICAgICAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW5cbiAgICAgICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQgZmxleC1lbmRcbiAgICAgICAgICAgICAgICBoZWlnaHQgNzBweFxuICAgICAgICAgICAgICAgIC5wcmljZVxuICAgICAgICAgICAgICAgICAgICBjb2xvciAjMzc5OURCXG4gICAgICAgICAgICAgICAgICAgIHRleHQtYWxpZ24gY2VudGVyXG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZSAyMHB4XG4gICAgICAgICAgICAgICAgICAgIGZvbnQtd2VpZ2h0IGJvbGRcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbSAwXG4gICAgICAgICAgICAgICAgLnByaWNlIGRlbFxuICAgICAgICAgICAgICAgICAgICBjb2xvciB0ZXh0czIgKyA1MCVcbiAgICAgICAgICAgICAgICAgICAgZm9udC13ZWlnaHQgbm9ybWFsXG4gICAgICAgICAgICAgICAgICAgIGZvbnQtc2l6ZSAxMnB4XG4gICAgICAgICAgICAuZm9vdGVyLWNhcmRcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduIGNlbnRlclxuICAgICAgICAgICAgICAgIGZvbnQtc2l6ZSAxMS45cHhcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tIDE1cHhcbiAgICAgICAgICAgIC5idXR0b24td1xuICAgICAgICAgICAgICAgIC5idG5cbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0IDBcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMFxuICAgICAgICAgICAgICAgICthYm92ZSgxMDIwcHgpXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgbm9uZVxuIiwiLnRhZy5tYWxpYnUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNGZjM2Y3O1xufVxuLnRhZy5za3lfYmx1ZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwM2E5ZjQ7XG59XG4udGFnLmJsdWUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMzA0ZmZlO1xufVxuLnRhZy5vcmFuZ2Uge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY5ODAwO1xufVxuLnRhZy55ZWxsb3cge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZjYTI4O1xufVxuLnRhZy50b21hdG8ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTUzOTM1O1xufVxuLnRhZy5yb3lhbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM4ODBlNGY7XG59XG4udGFnLmJpbGJhbyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1NThiMmY7XG59XG4udGFnLmNvcm5mbG93ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOGM5ZWZmO1xufVxuLnRhZy5saWdodF9za3kge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTBjYWY5O1xufVxuLnRhZy5pbmRpZ28ge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmExYjlhO1xufVxuLnRhZy5kYXJrX2luZGlnbyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0YTE0OGM7XG59XG4udGFnLnNjb290ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA4MzhmO1xufVxuLnRhZy5hdG9sbCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMDYwNjQ7XG59XG4udGFnLmdvcnNlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZWEwMDtcbn1cbi50YWcuYmVhbiB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMzZTI3MjM7XG59XG4udGFnLmhlbXAge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjYTE4ODdmO1xufVxuLmNvdXJzZXMgLmNvdXJzZTpob3ZlciB7XG4gIHBhZGRpbmctYm90dG9tOiAxMHB4O1xufVxuLmNvdXJzZXMgLmNvdXJzZTpob3ZlciAuY291cnNlLWkge1xuICBib3gtc2hhZG93OiAwcHggM3B4IDZweCAwcHggcmdiYSgwLDAsMCwwLjIpO1xufVxuLmNvdXJzZXMgLmNvdXJzZTpob3ZlciAuY291cnNlLWkgLmJ1dHRvbi13IHtcbiAgZGlzcGxheTogYmxvY2s7XG59XG4uY291cnNlcyAuY291cnNlIHtcbiAgcGFkZGluZy1ib3R0b206IDQzcHg7XG59XG4uY291cnNlcyAuY291cnNlIC5jb3Vyc2UtaSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNlYWVhZWE7XG4gIGJhY2tncm91bmQ6ICNmZmY7XG4gIHBhZGRpbmc6IDEwcHg7XG4gIG1hcmdpbjogMCA1cHggNXB4O1xufVxuLmNvdXJzZXMgLmNvdXJzZSAuY291cnNlLWkgLnRhZ3MgLnRhZy5ibGFjay10ZXh0IHtcbiAgY29sb3I6ICMyOTI5Mjk7XG59XG4uY291cnNlcyAuY291cnNlIC5jb3Vyc2UtaSAudGFncyAudGFnIHtcbiAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1zaXplOiAxMXB4O1xuICBmb250LXdlaWdodDogYm9sZDtcbiAgcGFkZGluZzogNXB4IDEycHg7XG59XG4uY291cnNlcyAuY291cnNlIC5jb3Vyc2UtaSAuaW1nLXcgLmltZy10YWdzIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLmNvdXJzZXMgLmNvdXJzZSAuY291cnNlLWkgLmltZy13IC5pbWctdGFncyAudGFnLnByb21vIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiA1NHB4O1xuICBoZWlnaHQ6IDUwcHg7XG4gIHBhZGRpbmc6IDA7XG4gIGxlZnQ6IGF1dG87XG4gIHJpZ2h0OiAwO1xuICBmb250LXNpemU6IDE2cHg7XG59XG4uY291cnNlcyAuY291cnNlIC5jb3Vyc2UtaSAuaW1nLXcgLmltZy10YWdzIC50YWcge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMDtcbiAgbGVmdDogMDtcbn1cbi5jb3Vyc2VzIC5jb3Vyc2UgLmNvdXJzZS1pIC5pbWctdyAuaW1nLXRhZ3MgLnRhZzpudGgtY2hpbGQoMikge1xuICB0b3A6IDMwcHg7XG59XG4uY291cnNlcyAuY291cnNlIC5jb3Vyc2UtaSAuaW1nLXcgLmltZy10YWdzIGltZyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG59XG4uY291cnNlcyAuY291cnNlIC5jb3Vyc2UtaSAudGFncy10aXRsZSB7XG4gIGhlaWdodDogMTE1cHg7XG59XG4uY291cnNlcyAuY291cnNlIC5jb3Vyc2UtaSAudGFncy10aXRsZSAuYm90dG9tLXRhZ3Mge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4uY291cnNlcyAuY291cnNlIC5jb3Vyc2UtaSAudGFncy10aXRsZSAuYm90dG9tLXRhZ3MgLnRhZyB7XG4gIG1hcmdpbi10b3A6IDVweDtcbn1cbi5jb3Vyc2VzIC5jb3Vyc2UgLmNvdXJzZS1pIC50YWdzLXRpdGxlIC50aXRsZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tdG9wOiA1cHg7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgZm9udC1zaXplOiAxMS45cHg7XG4gIGNvbG9yOiAjMjkyOTI5O1xufVxuLmNvdXJzZXMgLmNvdXJzZSAuY291cnNlLWkgLnByaWNlLXcge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBoZWlnaHQ6IDcwcHg7XG59XG4uY291cnNlcyAuY291cnNlIC5jb3Vyc2UtaSAucHJpY2UtdyAucHJpY2Uge1xuICBjb2xvcjogIzM3OTlkYjtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICBmb250LXNpemU6IDIwcHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuLmNvdXJzZXMgLmNvdXJzZSAuY291cnNlLWkgLnByaWNlLXcgLnByaWNlIGRlbCB7XG4gIGNvbG9yOiAjYjNiM2IzO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBmb250LXNpemU6IDEycHg7XG59XG4uY291cnNlcyAuY291cnNlIC5jb3Vyc2UtaSAuZm9vdGVyLWNhcmQge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIGZvbnQtc2l6ZTogMTEuOXB4O1xuICBtYXJnaW4tYm90dG9tOiAxNXB4O1xufVxuLmNvdXJzZXMgLmNvdXJzZSAuY291cnNlLWkgLmJ1dHRvbi13IC5idG4ge1xuICBwYWRkaW5nLWxlZnQ6IDA7XG4gIHBhZGRpbmctcmlnaHQ6IDA7XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMjBweCkge1xuICAuY291cnNlcyAuY291cnNlIC5jb3Vyc2UtaSAuYnV0dG9uLXcge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsImJhc2UtZm9udC1zaXplID89IDE2cHhcbnJhc3RlcmlzZS1tZWRpYS1xdWVyaWVzID89IGZhbHNlXG5cbnJ1cHR1cmUgPSB7XG4gIHJhc3RlcmlzZS1tZWRpYS1xdWVyaWVzOiByYXN0ZXJpc2UtbWVkaWEtcXVlcmllc1xuICBtb2JpbGUtY3V0b2ZmOiA0MDBweFxuICBkZXNrdG9wLWN1dG9mZjogMTA1MHB4XG4gIGhkLWN1dG9mZjogMTgwMHB4XG4gIGVuYWJsZS1lbS1icmVha3BvaW50czogZmFsc2VcbiAgYmFzZS1mb250LXNpemU6IGJhc2UtZm9udC1zaXplXG4gIGFudGktb3ZlcmxhcDogZmFsc2VcbiAgZGVuc2l0eS1xdWVyaWVzOiAnZHBweCcgJ3dlYmtpdCcgJ21veicgJ2RwaSdcbiAgcmV0aW5hLWRlbnNpdHk6IDEuNVxuICB1c2UtZGV2aWNlLXdpZHRoOiBmYWxzZVxufVxucnVwdHVyZS5zY2FsZSA9IDAgKHJ1cHR1cmUubW9iaWxlLWN1dG9mZikgNjAwcHggODAwcHggKHJ1cHR1cmUuZGVza3RvcC1jdXRvZmYpIChydXB0dXJlLmhkLWN1dG9mZilcbnJ1cHR1cmUuc2NhbGUtbmFtZXMgPSAneHMnICdzJyAnbScgJ2wnICd4bCcgJ2hkJ1xuXG4taXMtc3RyaW5nKHZhbClcbiAgaWYgdHlwZW9mKHZhbCkgaXMgbm90ICd1bml0J1xuICAgIGlmIHZhbCBpcyBhICdzdHJpbmcnIG9yIHZhbCBpcyBhICdpZGVudCdcbiAgICAgIHRydWVcbiAgICBlbHNlXG4gICAgICBmYWxzZVxuICBlbHNlXG4gICAgZmFsc2VcblxuLWdldC1zY2FsZS1udW1iZXIoc2NhbGUtbmFtZSlcbiAgZm9yIGxpc3QtaXRlbSwgaSBpbiBydXB0dXJlLnNjYWxlLW5hbWVzXG4gICAgaWYgbGlzdC1pdGVtIGlzIHNjYWxlLW5hbWVcbiAgICAgIHJldHVybiBpICsgMVxuICByZXR1cm4gZmFsc2VcblxuLWNvbnZlcnQtdG8odG8tdW5pdCwgdmFsdWUsIGNvbnRleHQgPSBydXB0dXJlLmJhc2UtZm9udC1zaXplKVxuICBmcm9tLXVuaXQgPSB1bml0KHZhbHVlKVxuICByZXR1cm4gdmFsdWUgaWYgdG8tdW5pdCBpcyBmcm9tLXVuaXRcbiAgaWYgdG8tdW5pdCBpbiAoJ2VtJyAncmVtJylcbiAgICByZXR1cm4gdmFsdWUgaWYgZnJvbS11bml0IGluICgnZW0nICdyZW0nKVxuICAgIHJldHVybiB1bml0KCh2YWx1ZSAvIGNvbnRleHQpLCB0by11bml0KVxuICBpZiB0by11bml0IGlzICdweCdcbiAgICByZXR1cm4gdW5pdCgodmFsdWUgKiBjb250ZXh0KSwgJ3B4JylcblxuLW9uLXNjYWxlKG4pXG4gIHJldHVybiB1bml0KG4pIGlzICcnXG5cbi1sYXJnZXItdGhhbi1zY2FsZShuKVxuICByZXR1cm4gKG4gPiAobGVuZ3RoKHJ1cHR1cmUuc2NhbGUpIC0gMSkpIGFuZCAtb24tc2NhbGUobilcblxuLWlzLXplcm8obilcbiAgcmV0dXJuIG4gaXMgMFxuXG4tb3ZlcmxhcC1zaGlmdChhbnRpLW92ZXJsYXAsIG4pXG4gIHNoaWZ0LXVuaXQgPSB1bml0KG4pXG4gIGFudGktb3ZlcmxhcCA9IDBweCB1bmxlc3MgYW50aS1vdmVybGFwXG4gIGFudGktb3ZlcmxhcCA9IDFweCBpZiBhbnRpLW92ZXJsYXAgaXMgdHJ1ZVxuICBpZiBsZW5ndGgoYW50aS1vdmVybGFwKSBpcyAxXG4gICAgcmV0dXJuIC1jb252ZXJ0LXRvKHNoaWZ0LXVuaXQsIGFudGktb3ZlcmxhcClcbiAgZm9yIHZhbCBpbiBhbnRpLW92ZXJsYXBcbiAgICByZXR1cm4gdmFsIGlmIHVuaXQodmFsKSBpcyBzaGlmdC11bml0XG5cbi1hZGp1c3Qtb3ZlcmxhcChhbnRpLW92ZXJsYXAsIG4sIHNpZGUgPSAnbWluJylcbiAgLXNoaWZ0ID0gLW92ZXJsYXAtc2hpZnQoYW50aS1vdmVybGFwLCBuKVxuICBpZiAoc2lkZSBpcyAnbWluJyBhbmQgLXNoaWZ0ID4gMCkgb3IgKHNpZGUgaXMgJ21heCcgYW5kIC1zaGlmdCA8IDApXG4gICAgbiA9IG4gKyAtc2hpZnRcbiAgcmV0dXJuIG5cblxuLWlzLXBvc2l0aXZlKG4pXG4gIHJldHVybiBuID49IDBcblxuLWRlbnNpdHktcXVlcmllcyhkZW5zaXR5KVxuICBpZiB0eXBlb2YoZGVuc2l0eSkgaXMgbm90ICd1bml0J1xuICAgIGlmIG5vdCAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgICBkZW5zaXR5ID0gJyVzJyAlIGRlbnNpdHlcbiAgZGVuc2l0eSA9IHJ1cHR1cmUucmV0aW5hLWRlbnNpdHkgaWYgZGVuc2l0eSBpcyAncmV0aW5hJ1xuICBxdWVyaWVzID0gKClcbiAgZm9yIHF1ZXJ5IGluIHJ1cHR1cmUuZGVuc2l0eS1xdWVyaWVzXG4gICAgaWYgcXVlcnkgaXMgJ3dlYmtpdCdcbiAgICAgIHB1c2gocXVlcmllcywgJygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICVzKScgJSAoZGVuc2l0eSkpXG4gICAgZWxzZSBpZiBxdWVyeSBpcyAnbW96J1xuICAgICAgcHVzaChxdWVyaWVzLCAnKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogJXMpJyAlIChkZW5zaXR5KSlcbiAgICBlbHNlIGlmIHF1ZXJ5IGlzICdvJ1xuICAgICAgcHVzaChxdWVyaWVzLCAnKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICVzLzEpJyAlIChkZW5zaXR5KSlcbiAgICBlbHNlIGlmIHF1ZXJ5IGlzICdyYXRpbydcbiAgICAgIHB1c2gocXVlcmllcywgJyhtaW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAlcyknICUgKGRlbnNpdHkpKVxuICAgIGVsc2UgaWYgcXVlcnkgaXMgJ2RwaSdcbiAgICAgIGlmIC1pcy1zdHJpbmcoZGVuc2l0eSlcbiAgICAgICAgZGVuc2l0eT1jb252ZXJ0KGRlbnNpdHkpXG4gICAgICBwdXNoKHF1ZXJpZXMsICcobWluLXJlc29sdXRpb246ICVzZHBpKScgJSAocm91bmQoZGVuc2l0eSAqIDk2LCAxKSkpXG4gICAgZWxzZSBpZiBxdWVyeSBpcyAnZHBweCdcbiAgICAgIHB1c2gocXVlcmllcywgJyhtaW4tcmVzb2x1dGlvbjogJXNkcHB4KScgJSAoZGVuc2l0eSkpXG4gIHJldHVybiBxdWVyaWVzXG5cbmNyZWF0ZS1mYWxsYmFjay1jbGFzcyhzZWxlY3RlZCwgY2xhc3MpXG4gIC97JycgKyBjbGFzcyArICcgJyArIHNlbGVjdGVkfVxuICAgIHtibG9ja31cblxuLy8gK2JldHdlZW4obWluLCBtYXgpXG4vLyB1c2FnZSAoc2NhbGUgY2FuIGJlIG1peGVkIHdpdGggY3VzdG9tIHZhbHVlcyk6XG4vLyAgIC0gK2JldHdlZW4oMSwgMykgc2NhbGU6c2NhbGVcbi8vICAgLSArYmV0d2VlbigwLCAzKSAwIHdpZHRoOnNjYWxlXG4vLyAgIC0gK2JldHdlZW4oMjAwcHgsIDUwMHB4KSBjdXN0b206Y3VzdG9tXG4vLyAgIC0gK2JldHdlZW4oMCwgMzAwcHgpIDAgd2lkdGg6Y3VzdG9tXG4vLyAgIC0gK2JldHdlZW4oMSwgMzAwcHgpIHNjYWxlOmN1c3RvbVxuLy8gICAtICtiZXR3ZWVuKDIwMHB4LCA0KSBjdXN0b206c2NhbGVcblxuYmV0d2VlbihtaW4sIG1heCwgYW50aS1vdmVybGFwID0gcnVwdHVyZS5hbnRpLW92ZXJsYXAsIGRlbnNpdHkgPSBudWxsLCBvcmllbnRhdGlvbiA9IG51bGwsIHVzZS1kZXZpY2Utd2lkdGggPSBydXB0dXJlLnVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzID0gbnVsbClcbiAgc2VsZWN0ZWQgPSBzZWxlY3RvcigpXG5cbiAgaWYgLWlzLXN0cmluZyhvcmllbnRhdGlvbilcbiAgICBvcmllbnRhdGlvbiA9IGNvbnZlcnQob3JpZW50YXRpb24pXG4gIGlmIC1pcy1zdHJpbmcoZGVuc2l0eSlcbiAgICBkZW5zaXR5ID0gY29udmVydChkZW5zaXR5KVxuICBpZiAtaXMtc3RyaW5nKG1pbilcbiAgICBtaW4gPSAtZ2V0LXNjYWxlLW51bWJlcihtaW4pXG4gIGlmIC1pcy1zdHJpbmcobWF4KVxuICAgIG1heCA9IC1nZXQtc2NhbGUtbnVtYmVyKG1heClcblxuICAtbWluID0gcnVwdHVyZS5zY2FsZVttaW4gLSAxXSB1bmxlc3MgLWlzLXplcm8obWluKSBvciAobm90IC1vbi1zY2FsZShtaW4pKVxuICAtbWF4ID0gcnVwdHVyZS5zY2FsZVttYXhdIHVubGVzcyBub3QgLW9uLXNjYWxlKG1heClcbiAgLW1pbiA/PSBtaW5cbiAgLW1heCA/PSBtYXhcblxuICBpZiAocnVwdHVyZS5yYXN0ZXJpc2UtbWVkaWEtcXVlcmllcylcbiAgICBpZiBub3QgKGRlbnNpdHkgb3IgLW1heCBvciBvcmllbnRhdGlvbilcbiAgICAgIHtibG9ja31cbiAgZWxzZVxuICAgIGNvbmRpdGlvbiA9ICdvbmx5IHNjcmVlbidcbiAgICB1c2UtZGV2aWNlLXdpZHRoID0gdXNlLWRldmljZS13aWR0aCA/ICdkZXZpY2UtJyA6ICcnXG4gICAgdW5sZXNzIC1taW4gaXMgMFxuICAgICAgLW1pbiA9IC1jb252ZXJ0LXRvKCdlbScsIC1taW4pIGlmIHJ1cHR1cmUuZW5hYmxlLWVtLWJyZWFrcG9pbnRzXG4gICAgICAtbWluID0gLWFkanVzdC1vdmVybGFwKGFudGktb3ZlcmxhcCwgLW1pbiwgc2lkZTogJ21pbicpXG4gICAgICBjb25kaXRpb24gPSBjb25kaXRpb24gKyAnIGFuZCAobWluLScgKyB1c2UtZGV2aWNlLXdpZHRoICsgJ3dpZHRoOiAlcyknICUgKC1taW4pXG4gICAgdW5sZXNzIC1sYXJnZXItdGhhbi1zY2FsZShtYXgpXG4gICAgICAtbWF4ID0gLWNvbnZlcnQtdG8oJ2VtJywgLW1heCkgaWYgcnVwdHVyZS5lbmFibGUtZW0tYnJlYWtwb2ludHNcbiAgICAgIC1tYXggPSAtYWRqdXN0LW92ZXJsYXAoYW50aS1vdmVybGFwLCAtbWF4LCBzaWRlOiAnbWF4JylcbiAgICAgIGNvbmRpdGlvbiA9IGNvbmRpdGlvbiArICcgYW5kIChtYXgtJyArIHVzZS1kZXZpY2Utd2lkdGggKyAnd2lkdGg6ICVzKScgJSAoLW1heClcbiAgICBpZiBvcmllbnRhdGlvblxuICAgICAgY29uZGl0aW9uID0gY29uZGl0aW9uICsgJyBhbmQgKG9yaWVudGF0aW9uOiAlcyknICUgKG9yaWVudGF0aW9uKVxuICAgIGlmIGRlbnNpdHlcbiAgICAgIGNvbmRpdGlvbnMgPSAoKVxuICAgICAgZm9yIHF1ZXJ5IGluIC1kZW5zaXR5LXF1ZXJpZXMoZGVuc2l0eSlcbiAgICAgICAgcHVzaChjb25kaXRpb25zLCBjb25kaXRpb24gKyAnIGFuZCAlcycgJSAocXVlcnkpKVxuICAgICAgY29uZGl0aW9uID0gam9pbignLCAnLCBjb25kaXRpb25zKVxuICAgIEBtZWRpYSBjb25kaXRpb25cbiAgICAgIHtibG9ja31cbiAgaWYgZmFsbGJhY2stY2xhc3NcbiAgICArY3JlYXRlLWZhbGxiYWNrLWNsYXNzKHNlbGVjdGVkLCBmYWxsYmFjay1jbGFzcylcbiAgICAgIHtibG9ja31cblxuYXQoc2NhbGUtcG9pbnQsIGFudGktb3ZlcmxhcCA9IHJ1cHR1cmUuYW50aS1vdmVybGFwLCBkZW5zaXR5ID0gbnVsbCwgb3JpZW50YXRpb24gPSBudWxsLCB1c2UtZGV2aWNlLXdpZHRoID0gcnVwdHVyZS51c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIGlmIC1pcy1zdHJpbmcob3JpZW50YXRpb24pXG4gICAgb3JpZW50YXRpb24gPSBjb252ZXJ0KG9yaWVudGF0aW9uKVxuICBpZiAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgZGVuc2l0eSA9IGNvbnZlcnQoZGVuc2l0eSlcbiAgK2JldHdlZW4oc2NhbGUtcG9pbnQsIHNjYWxlLXBvaW50LCBhbnRpLW92ZXJsYXAsIGRlbnNpdHksIG9yaWVudGF0aW9uLCB1c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcylcbiAgICB7YmxvY2t9XG5cbmZyb20td2lkdGgoc2NhbGUtcG9pbnQsIGFudGktb3ZlcmxhcCA9IHJ1cHR1cmUuYW50aS1vdmVybGFwLCBkZW5zaXR5ID0gbnVsbCwgb3JpZW50YXRpb24gPSBudWxsLCB1c2UtZGV2aWNlLXdpZHRoID0gcnVwdHVyZS51c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIGlmIC1pcy1zdHJpbmcob3JpZW50YXRpb24pXG4gICAgb3JpZW50YXRpb24gPSBjb252ZXJ0KG9yaWVudGF0aW9uKVxuICBpZiAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgZGVuc2l0eSA9IGNvbnZlcnQoZGVuc2l0eSlcbiAgK2JldHdlZW4oc2NhbGUtcG9pbnQsIGxlbmd0aChydXB0dXJlLnNjYWxlKSwgYW50aS1vdmVybGFwLCBkZW5zaXR5LCBvcmllbnRhdGlvbiwgdXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MpXG4gICAge2Jsb2NrfVxuXG5hYm92ZSA9IGZyb20td2lkdGhcblxudG8td2lkdGgoc2NhbGUtcG9pbnQsIGFudGktb3ZlcmxhcCA9IHJ1cHR1cmUuYW50aS1vdmVybGFwLCBkZW5zaXR5ID0gbnVsbCwgb3JpZW50YXRpb24gPSBudWxsLCB1c2UtZGV2aWNlLXdpZHRoID0gcnVwdHVyZS51c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIGlmIC1pcy1zdHJpbmcob3JpZW50YXRpb24pXG4gICAgb3JpZW50YXRpb24gPSBjb252ZXJ0KG9yaWVudGF0aW9uKVxuICBpZiAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgZGVuc2l0eSA9IGNvbnZlcnQoZGVuc2l0eSlcbiAgK2JldHdlZW4oMSwgc2NhbGUtcG9pbnQsIGFudGktb3ZlcmxhcCwgZGVuc2l0eSwgb3JpZW50YXRpb24sIHVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzKVxuICAgIHtibG9ja31cblxuYmVsb3cgPSB0by13aWR0aFxuXG5tb2JpbGUoYW50aS1vdmVybGFwID0gcnVwdHVyZS5hbnRpLW92ZXJsYXAsIGRlbnNpdHkgPSBudWxsLCBvcmllbnRhdGlvbiA9IG51bGwsIHVzZS1kZXZpY2Utd2lkdGggPSBydXB0dXJlLnVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzID0gbnVsbClcbiAgaWYgLWlzLXN0cmluZyhvcmllbnRhdGlvbilcbiAgICBvcmllbnRhdGlvbiA9IGNvbnZlcnQob3JpZW50YXRpb24pXG4gIGlmIC1pcy1zdHJpbmcoZGVuc2l0eSlcbiAgICBkZW5zaXR5ID0gY29udmVydChkZW5zaXR5KVxuICArYmVsb3cocnVwdHVyZS5tb2JpbGUtY3V0b2ZmLCBhbnRpLW92ZXJsYXAsIGRlbnNpdHksIG9yaWVudGF0aW9uLCB1c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcylcbiAgICB7YmxvY2t9XG5cbnRhYmxldChhbnRpLW92ZXJsYXAgPSBydXB0dXJlLmFudGktb3ZlcmxhcCwgZGVuc2l0eSA9IG51bGwsIG9yaWVudGF0aW9uID0gbnVsbCwgdXNlLWRldmljZS13aWR0aCA9IHJ1cHR1cmUudXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MgPSBudWxsKVxuICBpZiAtaXMtc3RyaW5nKG9yaWVudGF0aW9uKVxuICAgIG9yaWVudGF0aW9uID0gY29udmVydChvcmllbnRhdGlvbilcbiAgaWYgLWlzLXN0cmluZyhkZW5zaXR5KVxuICAgIGRlbnNpdHkgPSBjb252ZXJ0KGRlbnNpdHkpXG4gICtiZXR3ZWVuKHJ1cHR1cmUubW9iaWxlLWN1dG9mZiwgcnVwdHVyZS5kZXNrdG9wLWN1dG9mZiwgYW50aS1vdmVybGFwLCBkZW5zaXR5LCBvcmllbnRhdGlvbiwgdXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MpXG4gICAge2Jsb2NrfVxuXG5kZXNrdG9wKGFudGktb3ZlcmxhcCA9IHJ1cHR1cmUuYW50aS1vdmVybGFwLCBkZW5zaXR5ID0gbnVsbCwgb3JpZW50YXRpb24gPSBudWxsLCB1c2UtZGV2aWNlLXdpZHRoID0gcnVwdHVyZS51c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIGlmIC1pcy1zdHJpbmcob3JpZW50YXRpb24pXG4gICAgb3JpZW50YXRpb24gPSBjb252ZXJ0KG9yaWVudGF0aW9uKVxuICBpZiAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgZGVuc2l0eSA9IGNvbnZlcnQoZGVuc2l0eSlcbiAgK2Fib3ZlKHJ1cHR1cmUuZGVza3RvcC1jdXRvZmYsIGFudGktb3ZlcmxhcCwgZGVuc2l0eSwgb3JpZW50YXRpb24sIHVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzKVxuICAgIHtibG9ja31cblxuaGQoYW50aS1vdmVybGFwID0gcnVwdHVyZS5hbnRpLW92ZXJsYXAsIGRlbnNpdHkgPSBudWxsLCBvcmllbnRhdGlvbiA9IG51bGwsIHVzZS1kZXZpY2Utd2lkdGggPSBydXB0dXJlLnVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzID0gbnVsbClcbiAgaWYgLWlzLXN0cmluZyhvcmllbnRhdGlvbilcbiAgICBvcmllbnRhdGlvbiA9IGNvbnZlcnQob3JpZW50YXRpb24pXG4gIGlmIC1pcy1zdHJpbmcoZGVuc2l0eSlcbiAgICBkZW5zaXR5ID0gY29udmVydChkZW5zaXR5KVxuICArYWJvdmUocnVwdHVyZS5oZC1jdXRvZmYsIGFudGktb3ZlcmxhcCwgZGVuc2l0eSwgb3JpZW50YXRpb24sIHVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzKVxuICAgIHtibG9ja31cblxuZGVuc2l0eShkZW5zaXR5LCBvcmllbnRhdGlvbiA9IG51bGwsIGZhbGxiYWNrLWNsYXNzID0gbnVsbClcbiAgc2VsZWN0ZWQgPSBzZWxlY3RvcigpXG4gIGlmIG5vdCAocnVwdHVyZS5yYXN0ZXJpc2UtbWVkaWEtcXVlcmllcylcbiAgICBjb25kaXRpb25zID0gKClcbiAgICBmb3IgcXVlcnkgaW4gLWRlbnNpdHktcXVlcmllcyhkZW5zaXR5KVxuICAgICAgY29uZGl0aW9uID0gJ29ubHkgc2NyZWVuIGFuZCAlcycgJSAocXVlcnkpXG4gICAgICBpZiBvcmllbnRhdGlvblxuICAgICAgICBjb25kaXRpb24gPSBjb25kaXRpb24gKyAnIGFuZCAob3JpZW50YXRpb246ICVzKScgJSAob3JpZW50YXRpb24pXG4gICAgICBwdXNoKGNvbmRpdGlvbnMsIGNvbmRpdGlvbilcbiAgICBjb25kaXRpb24gPSBqb2luKCcsICcsIGNvbmRpdGlvbnMpXG4gICAgQG1lZGlhIGNvbmRpdGlvblxuICAgICAge2Jsb2NrfVxuICAgIGlmIGZhbGxiYWNrLWNsYXNzXG4gICAgICArY3JlYXRlLWZhbGxiYWNrLWNsYXNzKHNlbGVjdGVkLCBmYWxsYmFjay1jbGFzcylcbiAgICAgICAge2Jsb2NrfVxuXG5waXhlbC1yYXRpbyA9IGRlbnNpdHlcblxucmV0aW5hKG9yaWVudGF0aW9uID0gbnVsbCwgZmFsbGJhY2stY2xhc3MgPSBudWxsKVxuICArZGVuc2l0eSgncmV0aW5hJywgb3JpZW50YXRpb24sIGZhbGxiYWNrLWNsYXNzKVxuICAgIHtibG9ja31cblxubGFuZHNjYXBlKGRlbnNpdHkgPSBudWxsLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIHNlbGVjdGVkID0gc2VsZWN0b3IoKVxuICBpZiBub3QgKHJ1cHR1cmUucmFzdGVyaXNlLW1lZGlhLXF1ZXJpZXMpXG4gICAgaWYgLWlzLXN0cmluZyhkZW5zaXR5KVxuICAgICAgZGVuc2l0eSA9IGNvbnZlcnQoZGVuc2l0eSlcbiAgICBpZiBkZW5zaXR5XG4gICAgICArcGl4ZWwtcmF0aW8oZGVuc2l0eSwgb3JpZW50YXRpb246IGxhbmRzY2FwZSwgZmFsbGJhY2stY2xhc3MpXG4gICAgICAgIHtibG9ja31cbiAgICBlbHNlXG4gICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKVxuICAgICAgICB7YmxvY2t9XG4gICAgICBpZiBmYWxsYmFjay1jbGFzc1xuICAgICAgICArY3JlYXRlLWZhbGxiYWNrLWNsYXNzKHNlbGVjdGVkLCBmYWxsYmFjay1jbGFzcylcbiAgICAgICAgICB7YmxvY2t9XG5cbnBvcnRyYWl0KGRlbnNpdHkgPSBudWxsLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIHNlbGVjdGVkID0gc2VsZWN0b3IoKVxuICBpZiBub3QgKHJ1cHR1cmUucmFzdGVyaXNlLW1lZGlhLXF1ZXJpZXMpXG4gICAgaWYgLWlzLXN0cmluZyhkZW5zaXR5KVxuICAgICAgZGVuc2l0eSA9IGNvbnZlcnQoZGVuc2l0eSlcbiAgICBpZiBkZW5zaXR5XG4gICAgICArcGl4ZWwtcmF0aW8oZGVuc2l0eSwgb3JpZW50YXRpb246IHBvcnRyYWl0LCBmYWxsYmFjay1jbGFzcylcbiAgICAgICAge2Jsb2NrfVxuICAgIGVsc2VcbiAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdClcbiAgICAgICAge2Jsb2NrfVxuICAgICAgaWYgZmFsbGJhY2stY2xhc3NcbiAgICAgICAgK2NyZWF0ZS1mYWxsYmFjay1jbGFzcyhzZWxlY3RlZCwgZmFsbGJhY2stY2xhc3MpXG4gICAgICAgICAge2Jsb2NrfVxuIl19 */
