.list .content {
  display: -ms-flexbox;
  display: flex;
}
@media only screen and (max-width: 1024px) {
  .list .content {
    -ms-flex-direction: column;
        flex-direction: column;
  }
}
.list .content .sidebar {
  width: 190px;
}
@media only screen and (max-width: 1024px) {
  .list .content .sidebar {
    width: 100%;
    margin-bottom: 30px;
  }
}
.list .content .sidebar .sidebar-item.card-header {
  background: #f3f3f3;
}
@media only screen and (min-width: 1024px) {
  .list .content .sidebar .sidebar-item.card-header {
    pointer-events: none;
  }
}
@media only screen and (max-width: 1024px) {
  .list .content .sidebar .sidebar-item.card-header {
    cursor: pointer;
  }
}
@media only screen and (max-width: 1024px) {
  .list .content .sidebar .sidebar-item:not(.card-header) {
    display: none;
  }
}
@media only screen and (max-width: 1024px) {
  .list .content .sidebar .sidebar-item.active {
    display: block;
  }
}
.list .content .sidebar .sidebar-item {
  border: 1px solid #f3f3f3;
}
.list .content .sidebar .sidebar-item .btn-link {
  width: 100%;
  color: #292929;
  text-align: left;
  text-decoration: none;
  overflow: hidden;
}
.list .content .sidebar .sidebar-item .nav-arrow.card-header-arrow {
  display: none;
}
@media only screen and (max-width: 1024px) {
  .list .content .sidebar .sidebar-item .nav-arrow.card-header-arrow {
    display: -ms-inline-flexbox;
    display: inline-flex;
  }
}
.list .content .sidebar .sidebar-item .nav-arrow {
  cursor: pointer;
  width: 24px;
  display: -ms-inline-flexbox;
  display: inline-flex;
  -ms-flex-align: center;
      align-items: center;
  -ms-flex-pack: center;
      justify-content: center;
}
.list .content .sidebar .sidebar-item .nav-arrow i {
  color: #003f8f;
}
.list .content .sidebar .sidebar-item.has-dropdown > .btn-link {
  width: 158px;
}
.list .content .sidebar .sidebar-item.nested > .btn-link {
  padding-left: 25px;
}
.list .content .sidebar .sidebar-item.nested .nested-link {
  padding-left: 45px;
}
.list .content .courses-list {
  -ms-flex: 1;
      flex: 1;
  padding-left: 30px;
}
@media only screen and (max-width: 1024px) {
  .list .content .courses-list {
    padding-left: 0;
  }
}
.list .content .courses-list .sorting {
  text-align: right;
  width: 100%;
  margin-bottom: 20px;
}
.list .content .courses-list .sorting select {
  display: inline-block;
  width: auto;
  margin-left: 7px;
  background-color: #f3f3f3;
}
.list .content .courses-list .courses {
  padding: 0;
  max-width: 100%;
}
.list .content .courses-list .courses .course {
  width: calc(99.9% * 1/4 - (3px - 3px * 1/4));
  margin-bottom: 30px;
}
.list .content .courses-list .courses .course:nth-child(1n) {
  float: left;
  margin-right: 3px;
  clear: none;
}
.list .content .courses-list .courses .course:last-child {
  margin-right: 0;
}
.list .content .courses-list .courses .course:nth-child(4n) {
  margin-right: 0;
  float: right;
}
.list .content .courses-list .courses .course:nth-child(4n + 1) {
  clear: both;
}
.list .content .courses-list .courses .course a:hover {
  text-decoration: none;
}
@media only screen and (max-width: 1098px) {
  .list .content .courses-list .courses .course {
    width: calc(99.9% * 1/3 - (3px - 3px * 1/3));
  }
  .list .content .courses-list .courses .course:nth-child(1n) {
    float: left;
    margin-right: 3px;
    clear: none;
  }
  .list .content .courses-list .courses .course:last-child {
    margin-right: 0;
  }
  .list .content .courses-list .courses .course:nth-child(3n) {
    margin-right: 0;
    float: right;
  }
  .list .content .courses-list .courses .course:nth-child(3n + 1) {
    clear: both;
  }
}
@media only screen and (max-width: 1098px) and (max-width: 768px) {
  .list .content .courses-list .courses .course {
    width: calc(99.9% * 1/2 - (3px - 3px * 1/2));
  }
  .list .content .courses-list .courses .course:nth-child(1n) {
    float: left;
    margin-right: 3px;
    clear: none;
  }
  .list .content .courses-list .courses .course:last-child {
    margin-right: 0;
  }
  .list .content .courses-list .courses .course:nth-child(2n) {
    margin-right: 0;
    float: right;
  }
  .list .content .courses-list .courses .course:nth-child(2n + 1) {
    clear: both;
  }
}
@media only screen and (max-width: 1098px) and (max-width: 768px) and (max-width: 470px) {
  .list .content .courses-list .courses .course {
    width: calc(99.9% * 1/1 - (30px - 30px * 1/1));
  }
  .list .content .courses-list .courses .course:nth-child(1n) {
    float: left;
    margin-right: 30px;
    clear: none;
  }
  .list .content .courses-list .courses .course:last-child {
    margin-right: 0;
  }
  .list .content .courses-list .courses .course:nth-child(1n) {
    margin-right: 0;
    float: right;
  }
  .list .content .courses-list .courses .course:nth-child(1n + 1) {
    clear: both;
  }
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpc3Quc3R5bCIsImxpc3QuY3NzIiwiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3J1cHR1cmUvcnVwdHVyZS9pbmRleC5zdHlsIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdJO0VBQ0kscUJBQUE7RUFBQSxjQUFBO0NDRlA7QUM2SVU7RUFBQTtJRnpJQywyQkFBQTtRQUFBLHVCQUFBO0dDQVQ7Q0FDRjtBREFPO0VBQ0ksYUFBQTtDQ0VYO0FDcUlVO0VBQUE7SUZySUssWUFBQTtJQUNBLG9CQUFBO0dDSWI7Q0FDRjtBREpXO0VBQ0ksb0JBQUE7Q0NNZjtBQzRIVTtFQUFBO0lGaElTLHFCQUFBO0dDUWpCO0NBQ0Y7QUN1SFU7RUFBQTtJRjlIUyxnQkFBQTtHQ1dqQjtDQUNGO0FDa0hVO0VBQUE7SUYzSFMsY0FBQTtHQ2FqQjtDQUNGO0FDNkdVO0VBQUE7SUZ4SFMsZUFBQTtHQ2VqQjtDQUNGO0FEZlc7RUFDSSwwQkFBQTtDQ2lCZjtBRGhCZTtFQUNJLFlBQUE7RUFDQSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxzQkFBQTtFQUNBLGlCQUFBO0NDa0JuQjtBRGpCZTtFQUNJLGNBQUE7Q0NtQm5CO0FDMkZVO0VBQUE7SUY1R2EsNEJBQUE7SUFBQSxxQkFBQTtHQ3FCckI7Q0FDRjtBRHJCZTtFQUNJLGdCQUFBO0VBQ0EsWUFBQTtFQUNBLDRCQUFBO0VBQUEscUJBQUE7RUFDQSx1QkFBQTtNQUFBLG9CQUFBO0VBQ0Esc0JBQUE7TUFBQSx3QkFBQTtDQ3VCbkI7QUR0Qm1CO0VBQ0ksZUFBQTtDQ3dCdkI7QUR2Qlc7RUFDUSxhQUFBO0NDeUJuQjtBRHhCVztFQUNJLG1CQUFBO0NDMEJmO0FEekJXO0VBQ0ksbUJBQUE7Q0MyQmY7QUQxQk87RUFDSSxZQUFBO01BQUEsUUFBQTtFQUNBLG1CQUFBO0NDNEJYO0FDK0RVO0VBQUE7SUZ6RkssZ0JBQUE7R0M4QmI7Q0FDRjtBRDlCVztFQUNJLGtCQUFBO0VBQ0EsWUFBQTtFQUNBLG9CQUFBO0NDZ0NmO0FEL0JlO0VBQ0ksc0JBQUE7RUFDQSxZQUFBO0VBQ0EsaUJBQUE7RUFDQSwwQkFBQTtDQ2lDbkI7QURoQ1c7RUFDSSxXQUFBO0VBQ0EsZ0JBQUE7Q0NrQ2Y7QURqQ2U7RUFHSSw2Q0FBQTtFQUNBLG9CQUFBO0NDaUNuQjtBRHJDZTtFQUdJLFlBQUE7RUFBQSxrQkFBQTtFQUFBLFlBQUE7Q0NrQ25CO0FEckNlO0VBR0ksZ0JBQUE7Q0NrQ25CO0FEckNlO0VBR0ksZ0JBQUE7RUFBQSxhQUFBO0NDa0NuQjtBRHJDZTtFQUdJLFlBQUE7Q0NrQ25CO0FEcENtQjtFQUNJLHNCQUFBO0NDc0N2QjtBQ29DVTtFQUFBO0lGdEVhLDZDQUFBO0dDc0NyQjtFQ2dDUTtJRnRFYSxZQUFBO0lBQUEsa0JBQUE7SUFBQSxZQUFBO0dDc0NyQjtFQ2dDUTtJRnRFYSxnQkFBQTtHQ3NDckI7RUNnQ1E7SUZ0RWEsZ0JBQUE7SUFBQSxhQUFBO0dDc0NyQjtFQ2dDUTtJRnRFYSxZQUFBO0dDc0NyQjtDQUNGO0FDK0JVO0VBQUE7SUZwRWlCLDZDQUFBO0dDeUN6QjtFQzJCUTtJRnBFaUIsWUFBQTtJQUFBLGtCQUFBO0lBQUEsWUFBQTtHQ3lDekI7RUMyQlE7SUZwRWlCLGdCQUFBO0dDeUN6QjtFQzJCUTtJRnBFaUIsZ0JBQUE7SUFBQSxhQUFBO0dDeUN6QjtFQzJCUTtJRnBFaUIsWUFBQTtHQ3lDekI7Q0FDRjtBQzBCVTtFQUFBO0lGbEVxQiwrQ0FBQTtHQzRDN0I7RUNzQlE7SUZsRXFCLFlBQUE7SUFBQSxtQkFBQTtJQUFBLFlBQUE7R0M0QzdCO0VDc0JRO0lGbEVxQixnQkFBQTtHQzRDN0I7RUNzQlE7SUZsRXFCLGdCQUFBO0lBQUEsYUFBQTtHQzRDN0I7RUNzQlE7SUZsRXFCLFlBQUE7R0M0QzdCO0NBQ0YiLCJmaWxlIjoibGlzdC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAaW1wb3J0IFwiLi4vZ2xvYmFsL19fX3ZhcmlhYmxlc1wiXG5cbi5saXN0XG4gICAgLmNvbnRlbnRcbiAgICAgICAgZGlzcGxheSBmbGV4XG4gICAgICAgICtiZWxvdygxMDI0cHgpXG4gICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uXG4gICAgICAgIC5zaWRlYmFyXG4gICAgICAgICAgICB3aWR0aCAxOTBweFxuICAgICAgICAgICAgK2JlbG93KDEwMjRweClcbiAgICAgICAgICAgICAgICB3aWR0aCAxMDAlXG4gICAgICAgICAgICAgICAgbWFyZ2luLWJvdHRvbSAzMHB4XG4gICAgICAgICAgICAuc2lkZWJhci1pdGVtLmNhcmQtaGVhZGVyXG4gICAgICAgICAgICAgICAgYmFja2dyb3VuZCBjaW56YVxuICAgICAgICAgICAgICAgICthYm92ZSgxMDI0cHgpXG4gICAgICAgICAgICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lXG4gICAgICAgICAgICAgICAgK2JlbG93KDEwMjRweClcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yIHBvaW50ZXJcbiAgICAgICAgICAgIC5zaWRlYmFyLWl0ZW06bm90KC5jYXJkLWhlYWRlcilcbiAgICAgICAgICAgICAgICArYmVsb3coMTAyNHB4KVxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5IG5vbmVcbiAgICAgICAgICAgIC5zaWRlYmFyLWl0ZW0uYWN0aXZlXG4gICAgICAgICAgICAgICAgK2JlbG93KDEwMjRweClcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheSBibG9ja1xuICAgICAgICAgICAgLnNpZGViYXItaXRlbVxuICAgICAgICAgICAgICAgIGJvcmRlciAxcHggc29saWQgY2luemFcbiAgICAgICAgICAgICAgICAuYnRuLWxpbmtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggMTAwJVxuICAgICAgICAgICAgICAgICAgICBjb2xvciB0ZXh0c1xuICAgICAgICAgICAgICAgICAgICB0ZXh0LWFsaWduIGxlZnRcbiAgICAgICAgICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uIG5vbmVcbiAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3cgaGlkZGVuXG4gICAgICAgICAgICAgICAgLm5hdi1hcnJvdy5jYXJkLWhlYWRlci1hcnJvd1xuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5IG5vbmVcbiAgICAgICAgICAgICAgICAgICAgK2JlbG93KDEwMjRweClcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXkgaW5saW5lLWZsZXhcbiAgICAgICAgICAgICAgICAubmF2LWFycm93XG4gICAgICAgICAgICAgICAgICAgIGN1cnNvciBwb2ludGVyXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoIDI0cHhcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheSBpbmxpbmUtZmxleFxuICAgICAgICAgICAgICAgICAgICBhbGlnbi1pdGVtcyBjZW50ZXJcbiAgICAgICAgICAgICAgICAgICAganVzdGlmeS1jb250ZW50IGNlbnRlclxuICAgICAgICAgICAgICAgICAgICBpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvciBjb2xvcnBcbiAgICAgICAgICAgIC5zaWRlYmFyLWl0ZW0uaGFzLWRyb3Bkb3duID4gLmJ0bi1saW5rXG4gICAgICAgICAgICAgICAgICAgIHdpZHRoIDE1OHB4XG4gICAgICAgICAgICAuc2lkZWJhci1pdGVtLm5lc3RlZCA+IC5idG4tbGlua1xuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdCAyNXB4XG4gICAgICAgICAgICAuc2lkZWJhci1pdGVtLm5lc3RlZCAubmVzdGVkLWxpbmtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQgNDVweFxuICAgICAgICAuY291cnNlcy1saXN0XG4gICAgICAgICAgICBmbGV4IDFcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdCAzMHB4XG4gICAgICAgICAgICArYmVsb3coMTAyNHB4KVxuICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMFxuICAgICAgICAgICAgLnNvcnRpbmdcbiAgICAgICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodFxuICAgICAgICAgICAgICAgIHdpZHRoIDEwMCVcbiAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tIDIwcHhcbiAgICAgICAgICAgICAgICBzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgZGlzcGxheSBpbmxpbmUtYmxvY2tcbiAgICAgICAgICAgICAgICAgICAgd2lkdGggYXV0b1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tbGVmdCA3cHhcbiAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogY2luemFcbiAgICAgICAgICAgIC5jb3Vyc2VzXG4gICAgICAgICAgICAgICAgcGFkZGluZyAwXG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoIDEwMCVcbiAgICAgICAgICAgICAgICAuY291cnNlXG4gICAgICAgICAgICAgICAgICAgIGE6aG92ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbiBub25lXG4gICAgICAgICAgICAgICAgICAgIGxvc3QtY29sdW1uIDEvNCA0IDNweFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tIDMwcHhcbiAgICAgICAgICAgICAgICAgICAgK2JlbG93KDEwOThweClcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvc3QtY29sdW1uIDEvMyAzIDNweFxuICAgICAgICAgICAgICAgICAgICAgICAgK2JlbG93KDc2OHB4KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvc3QtY29sdW1uIDEvMiAyIDNweFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICtiZWxvdyg0NzBweClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9zdC1jb2x1bW4gMS8xIDFcbiIsIi5saXN0IC5jb250ZW50IHtcbiAgZGlzcGxheTogZmxleDtcbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gIC5saXN0IC5jb250ZW50IHtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB9XG59XG4ubGlzdCAuY29udGVudCAuc2lkZWJhciB7XG4gIHdpZHRoOiAxOTBweDtcbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gIC5saXN0IC5jb250ZW50IC5zaWRlYmFyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tYm90dG9tOiAzMHB4O1xuICB9XG59XG4ubGlzdCAuY29udGVudCAuc2lkZWJhciAuc2lkZWJhci1pdGVtLmNhcmQtaGVhZGVyIHtcbiAgYmFja2dyb3VuZDogI2YzZjNmMztcbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5saXN0IC5jb250ZW50IC5zaWRlYmFyIC5zaWRlYmFyLWl0ZW0uY2FyZC1oZWFkZXIge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwMjRweCkge1xuICAubGlzdCAuY29udGVudCAuc2lkZWJhciAuc2lkZWJhci1pdGVtLmNhcmQtaGVhZGVyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gIH1cbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gIC5saXN0IC5jb250ZW50IC5zaWRlYmFyIC5zaWRlYmFyLWl0ZW06bm90KC5jYXJkLWhlYWRlcikge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gIC5saXN0IC5jb250ZW50IC5zaWRlYmFyIC5zaWRlYmFyLWl0ZW0uYWN0aXZlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgfVxufVxuLmxpc3QgLmNvbnRlbnQgLnNpZGViYXIgLnNpZGViYXItaXRlbSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNmM2YzZjM7XG59XG4ubGlzdCAuY29udGVudCAuc2lkZWJhciAuc2lkZWJhci1pdGVtIC5idG4tbGluayB7XG4gIHdpZHRoOiAxMDAlO1xuICBjb2xvcjogIzI5MjkyOTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmxpc3QgLmNvbnRlbnQgLnNpZGViYXIgLnNpZGViYXItaXRlbSAubmF2LWFycm93LmNhcmQtaGVhZGVyLWFycm93IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gIC5saXN0IC5jb250ZW50IC5zaWRlYmFyIC5zaWRlYmFyLWl0ZW0gLm5hdi1hcnJvdy5jYXJkLWhlYWRlci1hcnJvdyB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gIH1cbn1cbi5saXN0IC5jb250ZW50IC5zaWRlYmFyIC5zaWRlYmFyLWl0ZW0gLm5hdi1hcnJvdyB7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgd2lkdGg6IDI0cHg7XG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn1cbi5saXN0IC5jb250ZW50IC5zaWRlYmFyIC5zaWRlYmFyLWl0ZW0gLm5hdi1hcnJvdyBpIHtcbiAgY29sb3I6ICMwMDNmOGY7XG59XG4ubGlzdCAuY29udGVudCAuc2lkZWJhciAuc2lkZWJhci1pdGVtLmhhcy1kcm9wZG93biA+IC5idG4tbGluayB7XG4gIHdpZHRoOiAxNThweDtcbn1cbi5saXN0IC5jb250ZW50IC5zaWRlYmFyIC5zaWRlYmFyLWl0ZW0ubmVzdGVkID4gLmJ0bi1saW5rIHtcbiAgcGFkZGluZy1sZWZ0OiAyNXB4O1xufVxuLmxpc3QgLmNvbnRlbnQgLnNpZGViYXIgLnNpZGViYXItaXRlbS5uZXN0ZWQgLm5lc3RlZC1saW5rIHtcbiAgcGFkZGluZy1sZWZ0OiA0NXB4O1xufVxuLmxpc3QgLmNvbnRlbnQgLmNvdXJzZXMtbGlzdCB7XG4gIGZsZXg6IDE7XG4gIHBhZGRpbmctbGVmdDogMzBweDtcbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTAyNHB4KSB7XG4gIC5saXN0IC5jb250ZW50IC5jb3Vyc2VzLWxpc3Qge1xuICAgIHBhZGRpbmctbGVmdDogMDtcbiAgfVxufVxuLmxpc3QgLmNvbnRlbnQgLmNvdXJzZXMtbGlzdCAuc29ydGluZyB7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luLWJvdHRvbTogMjBweDtcbn1cbi5saXN0IC5jb250ZW50IC5jb3Vyc2VzLWxpc3QgLnNvcnRpbmcgc2VsZWN0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogYXV0bztcbiAgbWFyZ2luLWxlZnQ6IDdweDtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMztcbn1cbi5saXN0IC5jb250ZW50IC5jb3Vyc2VzLWxpc3QgLmNvdXJzZXMge1xuICBwYWRkaW5nOiAwO1xuICBtYXgtd2lkdGg6IDEwMCU7XG59XG4ubGlzdCAuY29udGVudCAuY291cnNlcy1saXN0IC5jb3Vyc2VzIC5jb3Vyc2Uge1xuICBsb3N0LWNvbHVtbjogMS80IDQgM3B4O1xuICBtYXJnaW4tYm90dG9tOiAzMHB4O1xufVxuLmxpc3QgLmNvbnRlbnQgLmNvdXJzZXMtbGlzdCAuY291cnNlcyAuY291cnNlIGE6aG92ZXIge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwOThweCkge1xuICAubGlzdCAuY29udGVudCAuY291cnNlcy1saXN0IC5jb3Vyc2VzIC5jb3Vyc2Uge1xuICAgIGxvc3QtY29sdW1uOiAxLzMgMyAzcHg7XG4gIH1cbn1cbkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogMTA5OHB4KSBhbmQgKG1heC13aWR0aDogNzY4cHgpIHtcbiAgLmxpc3QgLmNvbnRlbnQgLmNvdXJzZXMtbGlzdCAuY291cnNlcyAuY291cnNlIHtcbiAgICBsb3N0LWNvbHVtbjogMS8yIDIgM3B4O1xuICB9XG59XG5AbWVkaWEgb25seSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDEwOThweCkgYW5kIChtYXgtd2lkdGg6IDc2OHB4KSBhbmQgKG1heC13aWR0aDogNDcwcHgpIHtcbiAgLmxpc3QgLmNvbnRlbnQgLmNvdXJzZXMtbGlzdCAuY291cnNlcyAuY291cnNlIHtcbiAgICBsb3N0LWNvbHVtbjogMS8xIDE7XG4gIH1cbn1cbiIsImJhc2UtZm9udC1zaXplID89IDE2cHhcbnJhc3RlcmlzZS1tZWRpYS1xdWVyaWVzID89IGZhbHNlXG5cbnJ1cHR1cmUgPSB7XG4gIHJhc3RlcmlzZS1tZWRpYS1xdWVyaWVzOiByYXN0ZXJpc2UtbWVkaWEtcXVlcmllc1xuICBtb2JpbGUtY3V0b2ZmOiA0MDBweFxuICBkZXNrdG9wLWN1dG9mZjogMTA1MHB4XG4gIGhkLWN1dG9mZjogMTgwMHB4XG4gIGVuYWJsZS1lbS1icmVha3BvaW50czogZmFsc2VcbiAgYmFzZS1mb250LXNpemU6IGJhc2UtZm9udC1zaXplXG4gIGFudGktb3ZlcmxhcDogZmFsc2VcbiAgZGVuc2l0eS1xdWVyaWVzOiAnZHBweCcgJ3dlYmtpdCcgJ21veicgJ2RwaSdcbiAgcmV0aW5hLWRlbnNpdHk6IDEuNVxuICB1c2UtZGV2aWNlLXdpZHRoOiBmYWxzZVxufVxucnVwdHVyZS5zY2FsZSA9IDAgKHJ1cHR1cmUubW9iaWxlLWN1dG9mZikgNjAwcHggODAwcHggKHJ1cHR1cmUuZGVza3RvcC1jdXRvZmYpIChydXB0dXJlLmhkLWN1dG9mZilcbnJ1cHR1cmUuc2NhbGUtbmFtZXMgPSAneHMnICdzJyAnbScgJ2wnICd4bCcgJ2hkJ1xuXG4taXMtc3RyaW5nKHZhbClcbiAgaWYgdHlwZW9mKHZhbCkgaXMgbm90ICd1bml0J1xuICAgIGlmIHZhbCBpcyBhICdzdHJpbmcnIG9yIHZhbCBpcyBhICdpZGVudCdcbiAgICAgIHRydWVcbiAgICBlbHNlXG4gICAgICBmYWxzZVxuICBlbHNlXG4gICAgZmFsc2VcblxuLWdldC1zY2FsZS1udW1iZXIoc2NhbGUtbmFtZSlcbiAgZm9yIGxpc3QtaXRlbSwgaSBpbiBydXB0dXJlLnNjYWxlLW5hbWVzXG4gICAgaWYgbGlzdC1pdGVtIGlzIHNjYWxlLW5hbWVcbiAgICAgIHJldHVybiBpICsgMVxuICByZXR1cm4gZmFsc2VcblxuLWNvbnZlcnQtdG8odG8tdW5pdCwgdmFsdWUsIGNvbnRleHQgPSBydXB0dXJlLmJhc2UtZm9udC1zaXplKVxuICBmcm9tLXVuaXQgPSB1bml0KHZhbHVlKVxuICByZXR1cm4gdmFsdWUgaWYgdG8tdW5pdCBpcyBmcm9tLXVuaXRcbiAgaWYgdG8tdW5pdCBpbiAoJ2VtJyAncmVtJylcbiAgICByZXR1cm4gdmFsdWUgaWYgZnJvbS11bml0IGluICgnZW0nICdyZW0nKVxuICAgIHJldHVybiB1bml0KCh2YWx1ZSAvIGNvbnRleHQpLCB0by11bml0KVxuICBpZiB0by11bml0IGlzICdweCdcbiAgICByZXR1cm4gdW5pdCgodmFsdWUgKiBjb250ZXh0KSwgJ3B4JylcblxuLW9uLXNjYWxlKG4pXG4gIHJldHVybiB1bml0KG4pIGlzICcnXG5cbi1sYXJnZXItdGhhbi1zY2FsZShuKVxuICByZXR1cm4gKG4gPiAobGVuZ3RoKHJ1cHR1cmUuc2NhbGUpIC0gMSkpIGFuZCAtb24tc2NhbGUobilcblxuLWlzLXplcm8obilcbiAgcmV0dXJuIG4gaXMgMFxuXG4tb3ZlcmxhcC1zaGlmdChhbnRpLW92ZXJsYXAsIG4pXG4gIHNoaWZ0LXVuaXQgPSB1bml0KG4pXG4gIGFudGktb3ZlcmxhcCA9IDBweCB1bmxlc3MgYW50aS1vdmVybGFwXG4gIGFudGktb3ZlcmxhcCA9IDFweCBpZiBhbnRpLW92ZXJsYXAgaXMgdHJ1ZVxuICBpZiBsZW5ndGgoYW50aS1vdmVybGFwKSBpcyAxXG4gICAgcmV0dXJuIC1jb252ZXJ0LXRvKHNoaWZ0LXVuaXQsIGFudGktb3ZlcmxhcClcbiAgZm9yIHZhbCBpbiBhbnRpLW92ZXJsYXBcbiAgICByZXR1cm4gdmFsIGlmIHVuaXQodmFsKSBpcyBzaGlmdC11bml0XG5cbi1hZGp1c3Qtb3ZlcmxhcChhbnRpLW92ZXJsYXAsIG4sIHNpZGUgPSAnbWluJylcbiAgLXNoaWZ0ID0gLW92ZXJsYXAtc2hpZnQoYW50aS1vdmVybGFwLCBuKVxuICBpZiAoc2lkZSBpcyAnbWluJyBhbmQgLXNoaWZ0ID4gMCkgb3IgKHNpZGUgaXMgJ21heCcgYW5kIC1zaGlmdCA8IDApXG4gICAgbiA9IG4gKyAtc2hpZnRcbiAgcmV0dXJuIG5cblxuLWlzLXBvc2l0aXZlKG4pXG4gIHJldHVybiBuID49IDBcblxuLWRlbnNpdHktcXVlcmllcyhkZW5zaXR5KVxuICBpZiB0eXBlb2YoZGVuc2l0eSkgaXMgbm90ICd1bml0J1xuICAgIGlmIG5vdCAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgICBkZW5zaXR5ID0gJyVzJyAlIGRlbnNpdHlcbiAgZGVuc2l0eSA9IHJ1cHR1cmUucmV0aW5hLWRlbnNpdHkgaWYgZGVuc2l0eSBpcyAncmV0aW5hJ1xuICBxdWVyaWVzID0gKClcbiAgZm9yIHF1ZXJ5IGluIHJ1cHR1cmUuZGVuc2l0eS1xdWVyaWVzXG4gICAgaWYgcXVlcnkgaXMgJ3dlYmtpdCdcbiAgICAgIHB1c2gocXVlcmllcywgJygtd2Via2l0LW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICVzKScgJSAoZGVuc2l0eSkpXG4gICAgZWxzZSBpZiBxdWVyeSBpcyAnbW96J1xuICAgICAgcHVzaChxdWVyaWVzLCAnKG1pbi0tbW96LWRldmljZS1waXhlbC1yYXRpbzogJXMpJyAlIChkZW5zaXR5KSlcbiAgICBlbHNlIGlmIHF1ZXJ5IGlzICdvJ1xuICAgICAgcHVzaChxdWVyaWVzLCAnKC1vLW1pbi1kZXZpY2UtcGl4ZWwtcmF0aW86ICVzLzEpJyAlIChkZW5zaXR5KSlcbiAgICBlbHNlIGlmIHF1ZXJ5IGlzICdyYXRpbydcbiAgICAgIHB1c2gocXVlcmllcywgJyhtaW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAlcyknICUgKGRlbnNpdHkpKVxuICAgIGVsc2UgaWYgcXVlcnkgaXMgJ2RwaSdcbiAgICAgIGlmIC1pcy1zdHJpbmcoZGVuc2l0eSlcbiAgICAgICAgZGVuc2l0eT1jb252ZXJ0KGRlbnNpdHkpXG4gICAgICBwdXNoKHF1ZXJpZXMsICcobWluLXJlc29sdXRpb246ICVzZHBpKScgJSAocm91bmQoZGVuc2l0eSAqIDk2LCAxKSkpXG4gICAgZWxzZSBpZiBxdWVyeSBpcyAnZHBweCdcbiAgICAgIHB1c2gocXVlcmllcywgJyhtaW4tcmVzb2x1dGlvbjogJXNkcHB4KScgJSAoZGVuc2l0eSkpXG4gIHJldHVybiBxdWVyaWVzXG5cbmNyZWF0ZS1mYWxsYmFjay1jbGFzcyhzZWxlY3RlZCwgY2xhc3MpXG4gIC97JycgKyBjbGFzcyArICcgJyArIHNlbGVjdGVkfVxuICAgIHtibG9ja31cblxuLy8gK2JldHdlZW4obWluLCBtYXgpXG4vLyB1c2FnZSAoc2NhbGUgY2FuIGJlIG1peGVkIHdpdGggY3VzdG9tIHZhbHVlcyk6XG4vLyAgIC0gK2JldHdlZW4oMSwgMykgc2NhbGU6c2NhbGVcbi8vICAgLSArYmV0d2VlbigwLCAzKSAwIHdpZHRoOnNjYWxlXG4vLyAgIC0gK2JldHdlZW4oMjAwcHgsIDUwMHB4KSBjdXN0b206Y3VzdG9tXG4vLyAgIC0gK2JldHdlZW4oMCwgMzAwcHgpIDAgd2lkdGg6Y3VzdG9tXG4vLyAgIC0gK2JldHdlZW4oMSwgMzAwcHgpIHNjYWxlOmN1c3RvbVxuLy8gICAtICtiZXR3ZWVuKDIwMHB4LCA0KSBjdXN0b206c2NhbGVcblxuYmV0d2VlbihtaW4sIG1heCwgYW50aS1vdmVybGFwID0gcnVwdHVyZS5hbnRpLW92ZXJsYXAsIGRlbnNpdHkgPSBudWxsLCBvcmllbnRhdGlvbiA9IG51bGwsIHVzZS1kZXZpY2Utd2lkdGggPSBydXB0dXJlLnVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzID0gbnVsbClcbiAgc2VsZWN0ZWQgPSBzZWxlY3RvcigpXG5cbiAgaWYgLWlzLXN0cmluZyhvcmllbnRhdGlvbilcbiAgICBvcmllbnRhdGlvbiA9IGNvbnZlcnQob3JpZW50YXRpb24pXG4gIGlmIC1pcy1zdHJpbmcoZGVuc2l0eSlcbiAgICBkZW5zaXR5ID0gY29udmVydChkZW5zaXR5KVxuICBpZiAtaXMtc3RyaW5nKG1pbilcbiAgICBtaW4gPSAtZ2V0LXNjYWxlLW51bWJlcihtaW4pXG4gIGlmIC1pcy1zdHJpbmcobWF4KVxuICAgIG1heCA9IC1nZXQtc2NhbGUtbnVtYmVyKG1heClcblxuICAtbWluID0gcnVwdHVyZS5zY2FsZVttaW4gLSAxXSB1bmxlc3MgLWlzLXplcm8obWluKSBvciAobm90IC1vbi1zY2FsZShtaW4pKVxuICAtbWF4ID0gcnVwdHVyZS5zY2FsZVttYXhdIHVubGVzcyBub3QgLW9uLXNjYWxlKG1heClcbiAgLW1pbiA/PSBtaW5cbiAgLW1heCA/PSBtYXhcblxuICBpZiAocnVwdHVyZS5yYXN0ZXJpc2UtbWVkaWEtcXVlcmllcylcbiAgICBpZiBub3QgKGRlbnNpdHkgb3IgLW1heCBvciBvcmllbnRhdGlvbilcbiAgICAgIHtibG9ja31cbiAgZWxzZVxuICAgIGNvbmRpdGlvbiA9ICdvbmx5IHNjcmVlbidcbiAgICB1c2UtZGV2aWNlLXdpZHRoID0gdXNlLWRldmljZS13aWR0aCA/ICdkZXZpY2UtJyA6ICcnXG4gICAgdW5sZXNzIC1taW4gaXMgMFxuICAgICAgLW1pbiA9IC1jb252ZXJ0LXRvKCdlbScsIC1taW4pIGlmIHJ1cHR1cmUuZW5hYmxlLWVtLWJyZWFrcG9pbnRzXG4gICAgICAtbWluID0gLWFkanVzdC1vdmVybGFwKGFudGktb3ZlcmxhcCwgLW1pbiwgc2lkZTogJ21pbicpXG4gICAgICBjb25kaXRpb24gPSBjb25kaXRpb24gKyAnIGFuZCAobWluLScgKyB1c2UtZGV2aWNlLXdpZHRoICsgJ3dpZHRoOiAlcyknICUgKC1taW4pXG4gICAgdW5sZXNzIC1sYXJnZXItdGhhbi1zY2FsZShtYXgpXG4gICAgICAtbWF4ID0gLWNvbnZlcnQtdG8oJ2VtJywgLW1heCkgaWYgcnVwdHVyZS5lbmFibGUtZW0tYnJlYWtwb2ludHNcbiAgICAgIC1tYXggPSAtYWRqdXN0LW92ZXJsYXAoYW50aS1vdmVybGFwLCAtbWF4LCBzaWRlOiAnbWF4JylcbiAgICAgIGNvbmRpdGlvbiA9IGNvbmRpdGlvbiArICcgYW5kIChtYXgtJyArIHVzZS1kZXZpY2Utd2lkdGggKyAnd2lkdGg6ICVzKScgJSAoLW1heClcbiAgICBpZiBvcmllbnRhdGlvblxuICAgICAgY29uZGl0aW9uID0gY29uZGl0aW9uICsgJyBhbmQgKG9yaWVudGF0aW9uOiAlcyknICUgKG9yaWVudGF0aW9uKVxuICAgIGlmIGRlbnNpdHlcbiAgICAgIGNvbmRpdGlvbnMgPSAoKVxuICAgICAgZm9yIHF1ZXJ5IGluIC1kZW5zaXR5LXF1ZXJpZXMoZGVuc2l0eSlcbiAgICAgICAgcHVzaChjb25kaXRpb25zLCBjb25kaXRpb24gKyAnIGFuZCAlcycgJSAocXVlcnkpKVxuICAgICAgY29uZGl0aW9uID0gam9pbignLCAnLCBjb25kaXRpb25zKVxuICAgIEBtZWRpYSBjb25kaXRpb25cbiAgICAgIHtibG9ja31cbiAgaWYgZmFsbGJhY2stY2xhc3NcbiAgICArY3JlYXRlLWZhbGxiYWNrLWNsYXNzKHNlbGVjdGVkLCBmYWxsYmFjay1jbGFzcylcbiAgICAgIHtibG9ja31cblxuYXQoc2NhbGUtcG9pbnQsIGFudGktb3ZlcmxhcCA9IHJ1cHR1cmUuYW50aS1vdmVybGFwLCBkZW5zaXR5ID0gbnVsbCwgb3JpZW50YXRpb24gPSBudWxsLCB1c2UtZGV2aWNlLXdpZHRoID0gcnVwdHVyZS51c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIGlmIC1pcy1zdHJpbmcob3JpZW50YXRpb24pXG4gICAgb3JpZW50YXRpb24gPSBjb252ZXJ0KG9yaWVudGF0aW9uKVxuICBpZiAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgZGVuc2l0eSA9IGNvbnZlcnQoZGVuc2l0eSlcbiAgK2JldHdlZW4oc2NhbGUtcG9pbnQsIHNjYWxlLXBvaW50LCBhbnRpLW92ZXJsYXAsIGRlbnNpdHksIG9yaWVudGF0aW9uLCB1c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcylcbiAgICB7YmxvY2t9XG5cbmZyb20td2lkdGgoc2NhbGUtcG9pbnQsIGFudGktb3ZlcmxhcCA9IHJ1cHR1cmUuYW50aS1vdmVybGFwLCBkZW5zaXR5ID0gbnVsbCwgb3JpZW50YXRpb24gPSBudWxsLCB1c2UtZGV2aWNlLXdpZHRoID0gcnVwdHVyZS51c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIGlmIC1pcy1zdHJpbmcob3JpZW50YXRpb24pXG4gICAgb3JpZW50YXRpb24gPSBjb252ZXJ0KG9yaWVudGF0aW9uKVxuICBpZiAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgZGVuc2l0eSA9IGNvbnZlcnQoZGVuc2l0eSlcbiAgK2JldHdlZW4oc2NhbGUtcG9pbnQsIGxlbmd0aChydXB0dXJlLnNjYWxlKSwgYW50aS1vdmVybGFwLCBkZW5zaXR5LCBvcmllbnRhdGlvbiwgdXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MpXG4gICAge2Jsb2NrfVxuXG5hYm92ZSA9IGZyb20td2lkdGhcblxudG8td2lkdGgoc2NhbGUtcG9pbnQsIGFudGktb3ZlcmxhcCA9IHJ1cHR1cmUuYW50aS1vdmVybGFwLCBkZW5zaXR5ID0gbnVsbCwgb3JpZW50YXRpb24gPSBudWxsLCB1c2UtZGV2aWNlLXdpZHRoID0gcnVwdHVyZS51c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIGlmIC1pcy1zdHJpbmcob3JpZW50YXRpb24pXG4gICAgb3JpZW50YXRpb24gPSBjb252ZXJ0KG9yaWVudGF0aW9uKVxuICBpZiAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgZGVuc2l0eSA9IGNvbnZlcnQoZGVuc2l0eSlcbiAgK2JldHdlZW4oMSwgc2NhbGUtcG9pbnQsIGFudGktb3ZlcmxhcCwgZGVuc2l0eSwgb3JpZW50YXRpb24sIHVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzKVxuICAgIHtibG9ja31cblxuYmVsb3cgPSB0by13aWR0aFxuXG5tb2JpbGUoYW50aS1vdmVybGFwID0gcnVwdHVyZS5hbnRpLW92ZXJsYXAsIGRlbnNpdHkgPSBudWxsLCBvcmllbnRhdGlvbiA9IG51bGwsIHVzZS1kZXZpY2Utd2lkdGggPSBydXB0dXJlLnVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzID0gbnVsbClcbiAgaWYgLWlzLXN0cmluZyhvcmllbnRhdGlvbilcbiAgICBvcmllbnRhdGlvbiA9IGNvbnZlcnQob3JpZW50YXRpb24pXG4gIGlmIC1pcy1zdHJpbmcoZGVuc2l0eSlcbiAgICBkZW5zaXR5ID0gY29udmVydChkZW5zaXR5KVxuICArYmVsb3cocnVwdHVyZS5tb2JpbGUtY3V0b2ZmLCBhbnRpLW92ZXJsYXAsIGRlbnNpdHksIG9yaWVudGF0aW9uLCB1c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcylcbiAgICB7YmxvY2t9XG5cbnRhYmxldChhbnRpLW92ZXJsYXAgPSBydXB0dXJlLmFudGktb3ZlcmxhcCwgZGVuc2l0eSA9IG51bGwsIG9yaWVudGF0aW9uID0gbnVsbCwgdXNlLWRldmljZS13aWR0aCA9IHJ1cHR1cmUudXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MgPSBudWxsKVxuICBpZiAtaXMtc3RyaW5nKG9yaWVudGF0aW9uKVxuICAgIG9yaWVudGF0aW9uID0gY29udmVydChvcmllbnRhdGlvbilcbiAgaWYgLWlzLXN0cmluZyhkZW5zaXR5KVxuICAgIGRlbnNpdHkgPSBjb252ZXJ0KGRlbnNpdHkpXG4gICtiZXR3ZWVuKHJ1cHR1cmUubW9iaWxlLWN1dG9mZiwgcnVwdHVyZS5kZXNrdG9wLWN1dG9mZiwgYW50aS1vdmVybGFwLCBkZW5zaXR5LCBvcmllbnRhdGlvbiwgdXNlLWRldmljZS13aWR0aCwgZmFsbGJhY2stY2xhc3MpXG4gICAge2Jsb2NrfVxuXG5kZXNrdG9wKGFudGktb3ZlcmxhcCA9IHJ1cHR1cmUuYW50aS1vdmVybGFwLCBkZW5zaXR5ID0gbnVsbCwgb3JpZW50YXRpb24gPSBudWxsLCB1c2UtZGV2aWNlLXdpZHRoID0gcnVwdHVyZS51c2UtZGV2aWNlLXdpZHRoLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIGlmIC1pcy1zdHJpbmcob3JpZW50YXRpb24pXG4gICAgb3JpZW50YXRpb24gPSBjb252ZXJ0KG9yaWVudGF0aW9uKVxuICBpZiAtaXMtc3RyaW5nKGRlbnNpdHkpXG4gICAgZGVuc2l0eSA9IGNvbnZlcnQoZGVuc2l0eSlcbiAgK2Fib3ZlKHJ1cHR1cmUuZGVza3RvcC1jdXRvZmYsIGFudGktb3ZlcmxhcCwgZGVuc2l0eSwgb3JpZW50YXRpb24sIHVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzKVxuICAgIHtibG9ja31cblxuaGQoYW50aS1vdmVybGFwID0gcnVwdHVyZS5hbnRpLW92ZXJsYXAsIGRlbnNpdHkgPSBudWxsLCBvcmllbnRhdGlvbiA9IG51bGwsIHVzZS1kZXZpY2Utd2lkdGggPSBydXB0dXJlLnVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzID0gbnVsbClcbiAgaWYgLWlzLXN0cmluZyhvcmllbnRhdGlvbilcbiAgICBvcmllbnRhdGlvbiA9IGNvbnZlcnQob3JpZW50YXRpb24pXG4gIGlmIC1pcy1zdHJpbmcoZGVuc2l0eSlcbiAgICBkZW5zaXR5ID0gY29udmVydChkZW5zaXR5KVxuICArYWJvdmUocnVwdHVyZS5oZC1jdXRvZmYsIGFudGktb3ZlcmxhcCwgZGVuc2l0eSwgb3JpZW50YXRpb24sIHVzZS1kZXZpY2Utd2lkdGgsIGZhbGxiYWNrLWNsYXNzKVxuICAgIHtibG9ja31cblxuZGVuc2l0eShkZW5zaXR5LCBvcmllbnRhdGlvbiA9IG51bGwsIGZhbGxiYWNrLWNsYXNzID0gbnVsbClcbiAgc2VsZWN0ZWQgPSBzZWxlY3RvcigpXG4gIGlmIG5vdCAocnVwdHVyZS5yYXN0ZXJpc2UtbWVkaWEtcXVlcmllcylcbiAgICBjb25kaXRpb25zID0gKClcbiAgICBmb3IgcXVlcnkgaW4gLWRlbnNpdHktcXVlcmllcyhkZW5zaXR5KVxuICAgICAgY29uZGl0aW9uID0gJ29ubHkgc2NyZWVuIGFuZCAlcycgJSAocXVlcnkpXG4gICAgICBpZiBvcmllbnRhdGlvblxuICAgICAgICBjb25kaXRpb24gPSBjb25kaXRpb24gKyAnIGFuZCAob3JpZW50YXRpb246ICVzKScgJSAob3JpZW50YXRpb24pXG4gICAgICBwdXNoKGNvbmRpdGlvbnMsIGNvbmRpdGlvbilcbiAgICBjb25kaXRpb24gPSBqb2luKCcsICcsIGNvbmRpdGlvbnMpXG4gICAgQG1lZGlhIGNvbmRpdGlvblxuICAgICAge2Jsb2NrfVxuICAgIGlmIGZhbGxiYWNrLWNsYXNzXG4gICAgICArY3JlYXRlLWZhbGxiYWNrLWNsYXNzKHNlbGVjdGVkLCBmYWxsYmFjay1jbGFzcylcbiAgICAgICAge2Jsb2NrfVxuXG5waXhlbC1yYXRpbyA9IGRlbnNpdHlcblxucmV0aW5hKG9yaWVudGF0aW9uID0gbnVsbCwgZmFsbGJhY2stY2xhc3MgPSBudWxsKVxuICArZGVuc2l0eSgncmV0aW5hJywgb3JpZW50YXRpb24sIGZhbGxiYWNrLWNsYXNzKVxuICAgIHtibG9ja31cblxubGFuZHNjYXBlKGRlbnNpdHkgPSBudWxsLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIHNlbGVjdGVkID0gc2VsZWN0b3IoKVxuICBpZiBub3QgKHJ1cHR1cmUucmFzdGVyaXNlLW1lZGlhLXF1ZXJpZXMpXG4gICAgaWYgLWlzLXN0cmluZyhkZW5zaXR5KVxuICAgICAgZGVuc2l0eSA9IGNvbnZlcnQoZGVuc2l0eSlcbiAgICBpZiBkZW5zaXR5XG4gICAgICArcGl4ZWwtcmF0aW8oZGVuc2l0eSwgb3JpZW50YXRpb246IGxhbmRzY2FwZSwgZmFsbGJhY2stY2xhc3MpXG4gICAgICAgIHtibG9ja31cbiAgICBlbHNlXG4gICAgICBAbWVkaWEgb25seSBzY3JlZW4gYW5kIChvcmllbnRhdGlvbjogbGFuZHNjYXBlKVxuICAgICAgICB7YmxvY2t9XG4gICAgICBpZiBmYWxsYmFjay1jbGFzc1xuICAgICAgICArY3JlYXRlLWZhbGxiYWNrLWNsYXNzKHNlbGVjdGVkLCBmYWxsYmFjay1jbGFzcylcbiAgICAgICAgICB7YmxvY2t9XG5cbnBvcnRyYWl0KGRlbnNpdHkgPSBudWxsLCBmYWxsYmFjay1jbGFzcyA9IG51bGwpXG4gIHNlbGVjdGVkID0gc2VsZWN0b3IoKVxuICBpZiBub3QgKHJ1cHR1cmUucmFzdGVyaXNlLW1lZGlhLXF1ZXJpZXMpXG4gICAgaWYgLWlzLXN0cmluZyhkZW5zaXR5KVxuICAgICAgZGVuc2l0eSA9IGNvbnZlcnQoZGVuc2l0eSlcbiAgICBpZiBkZW5zaXR5XG4gICAgICArcGl4ZWwtcmF0aW8oZGVuc2l0eSwgb3JpZW50YXRpb246IHBvcnRyYWl0LCBmYWxsYmFjay1jbGFzcylcbiAgICAgICAge2Jsb2NrfVxuICAgIGVsc2VcbiAgICAgIEBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG9yaWVudGF0aW9uOiBwb3J0cmFpdClcbiAgICAgICAge2Jsb2NrfVxuICAgICAgaWYgZmFsbGJhY2stY2xhc3NcbiAgICAgICAgK2NyZWF0ZS1mYWxsYmFjay1jbGFzcyhzZWxlY3RlZCwgZmFsbGJhY2stY2xhc3MpXG4gICAgICAgICAge2Jsb2NrfVxuIl19 */
