.header nav.glossary-navigation {
  margin-top: var(--spacer1);
}
.header nav.glossary-navigation h2 {
  display: none;
}
@media (min-width: 981px) {
  .header nav.glossary-navigation {
    display: none;
  }
}
@media (max-width: 980px) {
  .header nav.glossary-navigation {
    background-color: #dcdcdc;
    margin-bottom: var(--spacer1-);
    padding: var(--gutter2) var(--gutter1) var(--spacer1) var(--gutter1);
    margin-left: var(--gutter1-);
    margin-right: var(--gutter1-);
  }
  .header nav.glossary-navigation .heading {
    margin-bottom: var(--gap);
    color: #1E1A1A;
  }
}

#glossary-list {
  padding-top: 0;
}
#glossary-list > section {
  padding: var(--spacer1) 0;
}
#glossary-list > section + section {
  border-top: 1px solid #dcdcdc;
}
#glossary-list > section h3 a {
  font-size: 1.5625em;
  line-height: 1.6;
  color: #DF3035;
}
#glossary-list > section h3 a::after {
  content: ".";
  font-family: Helvetica, sans-serif;
}
#glossary-list > section.hidden {
  display: none;
}
#glossary-list dl dt {
  padding-top: var(--gap);
  font-size: 1.0625em;
  line-height: 1.6;
  color: #131f6b;
}
#glossary-list dl dt.hidden {
  display: none;
}
#glossary-list dl dd ol, #glossary-list dl dd ul {
  margin-top: calc(var(--gap) * 0.5);
}
#glossary-list dl dd .related-terms {
  display: block;
  width: 100%;
  margin-top: calc(var(--gap) * 0.5);
  border-radius: var(--border-radius, 6px);
  font-size: 0.875em;
  font-style: italic;
  color: #6A6A6A;
}
#glossary-list dl dd .related-terms a {
  color: #6A6A6A;
  text-decoration: underline;
  text-underline-offset: 2px;
}
@media (hover: hover) {
  #glossary-list dl dd .related-terms a:hover {
    color: #131f6b;
  }
}
#glossary-list dl dd.hidden {
  display: none;
}

.glossary-navigation .heading {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}
.glossary-navigation .heading span {
  color: #6A6A6A;
  font-size: 0.625em;
}
.glossary-navigation ol {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(40px, 1fr));
  grid-gap: var(--gap);
  grid-auto-rows: 1fr;
}
.glossary-navigation ol::before {
  content: "";
  width: 0;
  padding-bottom: 100%;
  grid-row: 1/1;
  grid-column: 1/1;
}
.glossary-navigation ol > *:first-child {
  grid-row: 1/1;
  grid-column: 1/1;
}
.glossary-navigation ol li {
  display: flex;
  height: 100%;
  width: 100%;
  position: relative;
}
.glossary-navigation ol li a {
  text-decoration: none;
  display: flex;
  place-items: center;
  place-content: center;
  width: 100%;
  color: #131f6b;
  border-radius: var(--border-radius, 6px);
  background-color: #F4F4F4;
  transition: color var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, ), background-color var(--transition-duration, 0.2s) var(--transition-ease, cubic-bezier(0.42, 0, 0.58, 1)) var(--transition-delay, );
}
@media (hover: hover) {
  .glossary-navigation ol li a:hover {
    color: white;
    background-color: #DF3035;
  }
}
.glossary-navigation ol li a.active {
  color: white;
  background-color: #DF3035;
}
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInBhZ2VzL2dsb3NzYXJ5LnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGRvZ2dpc3R5bGUvc2Fzcy9saWJyYXJ5L3NyYy9jcmVhdGUvX3VuaXRzLnNjc3MiLCJwYWdlcy9nbG9zc2FyeS5jc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGRvZ2dpc3R5bGUvc2Fzcy9saWJyYXJ5L3NyYy9oZWxwZXJzL19icmVhay5zY3NzIiwiX3ZhcmlhYmxlcy9jb2xvdXJzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGRvZ2dpc3R5bGUvc2Fzcy9saWJyYXJ5L3NyYy9jcmVhdGUvX2hlYWRpbmdzLnNjc3MiLCJfdmFyaWFibGVzL3VuaXRzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvQGRvZ2dpc3R5bGUvc2Fzcy9saWJyYXJ5L3NyYy9jb2xsZWN0aW9ucy9zdHlsaW5nL19ob3Zlci5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdFO0VBQ0UsMEJDcUdPO0FDdkdYO0FGR0k7RUFBSyxhQUFBO0FFQVQ7QUNBRTtFSEZBO0lBR3FDLGFBQUE7RUVHckM7QUFDRjtBQ0NFO0VIUkE7SUFNSSx5QkltQkk7SUpsQkosOEJDK0ZpQztJRDlGakMsb0VBQUE7SUFDQSw0QkN3SGlDO0lEdkhqQyw2QkN1SGlDO0VDbEhyQztFRlZJO0lBQVcseUJDMkNUO0lEM0M2QixjSTJCM0I7RUZiUjtBQUNGOztBRkhBO0VBQ0UsY0FBQTtBRU1GO0FGTEU7RUFFRSx5QkFBQTtBRU1KO0FGUEk7RUFBWSw2QkFBQTtBRVVoQjtBRlJJO0VLMklGLG1CQUFBO0VBV0ksZ0JBMUdjO0VMMUNkLGNJSEk7QUZjVjtBRlZNO0VBQVcsWUFBQTtFQUFhLGtDQUFBO0FFYzlCO0FGWkk7RUFDRSxhQUFBO0FFY047QUZWSTtFQUNFLHVCQ2VFO0VJcUlOLG1CQUFBO0VBV0ksZ0JBekhjO0VMckNPLGNJbkJqQjtBRmlDVjtBRmJNO0VBQ0UsYUFBQTtBRWVSO0FGWE07RUFBUyxrQ0NPUDtBQ09SO0FGYk07RUFDRSxjQUFBO0VBQ0EsV0FBQTtFQUNBLGtDQ0dBO0VERkEsd0NNRFM7RU5FVCxrQkFBQTtFQUNBLGtCQUFBO0VBQ0EsY0l6QkU7QUZ3Q1Y7QUZkUTtFQUNFLGNJM0JBO0VKNEJBLDBCQUFBO0VBQ0EsMEJBQUE7QUVnQlY7QUtsRUU7RUFDRTtJUG1EUSxjSXZDRjtFRnlEUjtBQUNGO0FGZk07RUFDRSxhQUFBO0FFaUJSOztBRlBFO0VBQ0UsYUFBQTtFQUNBLDhCQUFBO0VBQ0EscUJBQUE7QUVVSjtBRlRJO0VBQ0UsY0luREk7RUpvREosa0JBQUE7QUVXTjtBRlBFO0VBQ0UsYUFBQTtFQUNBLDJEQUFBO0VBQ0Esb0JDbENJO0VEbUNKLG1CQUFBO0FFU0o7QUZSSTtFQUNFLFdBQUE7RUFDQSxRQUFBO0VBQ0Esb0JBQUE7RUFDQSxhQUFBO0VBQ0EsZ0JBQUE7QUVVTjtBRlJJO0VBQ0UsYUFBQTtFQUNBLGdCQUFBO0FFVU47QUZSSTtFQUNFLGFBQUE7RUFDQSxZQUFBO0VBQ0EsV0FBQTtFQUNBLGtCQUFBO0FFVU47QUZUTTtFQUNFLHFCQUFBO0VBQ0EsYUFBQTtFQUNBLG1CQUFBO0VBQ0EscUJBQUE7RUFDQSxXQUFBO0VBQ0EsY0kzRkU7RUo0RkYsd0NNL0RTO0VOZ0VULHlCSXBGRTtFSnFGRix1UUFBQTtBRVdSO0FLdEhFO0VBQ0U7SVA0R00sWUFBQTtJQUNBLHlCSTNGQTtFRndHUjtBQUNGO0FGWlE7RUFDRSxZQUFBO0VBQ0EseUJJL0ZBO0FGNkdWIiwiZmlsZSI6InBhZ2VzL2dsb3NzYXJ5LmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJ19tb2R1bGVzJyBhcyAqO1xuXG4uaGVhZGVyIHtcbiAgbmF2Lmdsb3NzYXJ5LW5hdmlnYXRpb24geyBcbiAgICBtYXJnaW4tdG9wOiRzcGFjZXI7XG4gICAgaDIgeyBkaXNwbGF5Om5vbmU7IH1cbiAgICBAaW5jbHVkZSBicmVhay1vdXQoc21hbGwtbWVkaXVtKSB7IGRpc3BsYXk6bm9uZTsgfVxuICAgIEBpbmNsdWRlIGJyZWFrLWluKHNtYWxsLW1lZGl1bSkgeyBcbiAgICAgIC5oZWFkaW5nIHsgbWFyZ2luLWJvdHRvbTokZ2FwOyBjb2xvcjokYmxhY2sgfVxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGdyZXk0O1xuICAgICAgbWFyZ2luLWJvdHRvbTokc3BhY2VyLTtcbiAgICAgIHBhZGRpbmc6JGd1dHRlcjIgJGd1dHRlciAkc3BhY2VyICRndXR0ZXI7XG4gICAgICBtYXJnaW4tbGVmdDokZ3V0dGVyLTsgXG4gICAgICBtYXJnaW4tcmlnaHQ6JGd1dHRlci07IFxuICAgIH1cbiAgfVxufVxuXG4vLyBHbG9zc2FyeSBMaXN0ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4jZ2xvc3NhcnktbGlzdCB7XG4gIHBhZGRpbmctdG9wOjA7IFxuICA+IHNlY3Rpb24ge1xuICAgICsgc2VjdGlvbiB7IGJvcmRlci10b3A6MXB4IHNvbGlkICRncmV5NDsgfVxuICAgIHBhZGRpbmc6JHNwYWNlciAwOyBcbiAgICBoMyBhIHsgXG4gICAgICBAaW5jbHVkZSBoZWFkaW5nLWgzOyBcbiAgICAgIGNvbG9yOiRyZWQ7XG4gICAgICAmOjphZnRlciB7IGNvbnRlbnQ6XCIuXCI7IGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IH1cbiAgICB9XG4gICAgJi5oaWRkZW4ge1xuICAgICAgZGlzcGxheTpub25lO1xuICAgIH1cbiAgfVxuICBkbCB7XG4gICAgZHQgeyBcbiAgICAgIHBhZGRpbmctdG9wOiRnYXA7IFxuICAgICAgQGluY2x1ZGUgaGVhZGluZy1oNDsgY29sb3I6JGJsdWU7IFxuICAgICAgJi5oaWRkZW4ge1xuICAgICAgICBkaXNwbGF5Om5vbmU7XG4gICAgICB9XG4gICAgfVxuICAgIGRkIHtcbiAgICAgIG9sLCB1bCB7IG1hcmdpbi10b3A6JGdhcDA7IH1cbiAgICAgIC5yZWxhdGVkLXRlcm1zIHtcbiAgICAgICAgZGlzcGxheTpibG9jazsgXG4gICAgICAgIHdpZHRoOjEwMCU7IFxuICAgICAgICBtYXJnaW4tdG9wOiRnYXAwOyBcbiAgICAgICAgYm9yZGVyLXJhZGl1czogJGJvcmRlci1yYWRpdXM7XG4gICAgICAgIGZvbnQtc2l6ZTpmb250LXNpemUoMTQpO1xuICAgICAgICBmb250LXN0eWxlOiBpdGFsaWM7XG4gICAgICAgIGNvbG9yOiRncmV5MjsgXG4gICAgICAgIGEgeyBcbiAgICAgICAgICBjb2xvcjokZ3JleTI7XG4gICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gICAgICAgICAgdGV4dC11bmRlcmxpbmUtb2Zmc2V0OiAycHg7XG4gICAgICAgICAgQGluY2x1ZGUgaG92ZXIge1xuICAgICAgICAgICAgY29sb3I6JGJsdWU7IFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgJi5oaWRkZW4ge1xuICAgICAgICBkaXNwbGF5Om5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIEdsb3NzYXJ5IFNpZGViYXIgTmF2aWdhdGlvbiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi5nbG9zc2FyeS1uYXZpZ2F0aW9uIHtcblxuICAuaGVhZGluZyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xuICAgIHNwYW4ge1xuICAgICAgY29sb3I6JGdyZXkyOyBcbiAgICAgIGZvbnQtc2l6ZTpmb250LXNpemUoMTApO1xuICAgIH1cbiAgfVxuICBcbiAgb2wge1xuICAgIGRpc3BsYXk6Z3JpZDsgXG4gICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoYXV0by1maWxsLCBtaW5tYXgoNDBweCwgMWZyKSk7XG4gICAgZ3JpZC1nYXA6JGdhcDsgXG4gICAgZ3JpZC1hdXRvLXJvd3M6IDFmcjsgXG4gICAgJjo6YmVmb3JlIHtcbiAgICAgIGNvbnRlbnQ6ICcnO1xuICAgICAgd2lkdGg6IDA7XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMTAwJTtcbiAgICAgIGdyaWQtcm93OiAxIC8gMTtcbiAgICAgIGdyaWQtY29sdW1uOiAxIC8gMTtcbiAgICB9XG4gICAgPiAqOmZpcnN0LWNoaWxkIHtcbiAgICAgIGdyaWQtcm93OiAxIC8gMTtcbiAgICAgIGdyaWQtY29sdW1uOiAxIC8gMTtcbiAgICB9XG4gICAgbGkge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGhlaWdodDoxMDAlOyBcbiAgICAgIHdpZHRoOjEwMCU7IFxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgYSB7XG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgZGlzcGxheTpmbGV4O1xuICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyO1xuICAgICAgICBwbGFjZS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOjEwMCU7IFxuICAgICAgICBjb2xvcjokYmx1ZTsgXG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICRib3JkZXItcmFkaXVzO1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JleTM7XG4gICAgICAgIHRyYW5zaXRpb246Y29sb3IgJHRyYW5zaXRpb24sIGJhY2tncm91bmQtY29sb3IgJHRyYW5zaXRpb247XG4gICAgICAgIEBpbmNsdWRlIGhvdmVyIHtcbiAgICAgICAgICBjb2xvcjp3aGl0ZTsgXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjokcmVkO1xuICAgICAgICB9XG4gICAgICAgICYuYWN0aXZlIHtcbiAgICAgICAgICBjb2xvcjp3aGl0ZTsgXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjokcmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFVuaXRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AdXNlIFwic2FzczptYXRoXCI7XG5AdXNlICdzYXNzOnN0cmluZyc7XG5AdXNlICdzYXNzOm1ldGEnO1xuXG4vLyBUaGlzIHVuaXRzIGNyZWF0b3Igd2lsbCByZW5kZXIgc2l4IHBvc2l0aXZlIGFuZCBzaXggbmVnYXRpdmUgc2FzcyB2YXJpYWJsZXMgZm9yIFxuLy8gZ2Fwcywgc3BhY2VycywgYW5kIGd1dHRlcnMgcmVsYXRpdmUgdG8gdGhlIGJhc2V2IHZhbHVlcyBkZWZpbmVkIGJlbG93LlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEJhc2UgVmFsdWVzIFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8vIEBzZWUgaHR0cHM6Ly9jb2RlcGVuLmlvL21hcmtub3R0b24vcGVuL0V4UGJOR2VcblxuLy8gVGhlc2UgdGhyZWUgdmFsdWVzIHdpbGwgYWN0IGEgY29uc3RhbnQgYmFzZWxpbmUgZm9yIGFsbCBmb2xsb3dpbmcgdW5pdCBkZWxjYXJhdGlvbnMuXG5cbi8vIEdhcHMgbXVzdCB1c2UgYW4gYWJzb2x1dGUgYW5kIHN0YXRpYyAncHgnIHVuaXQuIEl0IHNob3VsZCBub3QgYmUgcmVsYXRpdmUgdG8gYW55XG4vLyBwYXJlbnQgY29udGFpbmVyIGFuZCBpcyBub3QgaW50ZW5kZWQgZm9yIGZvbnQgc2l6ZXMsIHNvIHlvdSBzaG91bGQgbm90IHVzZSAncmVtJyBvciAnZW0nLiBcbiRnYXAgOiAxNnB4ICFkZWZhdWx0O1xuJGJhc2UtZ2FwIDogJGdhcDtcblxuLy8gU3BhY2VycyBtdXN0IHVzZSBhICd2aCcgdW5pdCBzbyB0aGV5IGFyZSByZWxhdGl2ZSB0byB0aGUgdXNlcnMgdmlld3BvcnQgaGVpZ2h0LXdpc2UuXG4vLyBUaGV5IHNob3VsZCBwcmltYXJpbHkgYmUgdXNlZCBmb3IgdGhlIHRvcCBhbmQgYm90dG9tIG1hcmdpbnMgb24gYSBjb21wb25lbnQgbGV2ZWwuXG4kc3BhY2VyIDogNHZoICFkZWZhdWx0OyBcbiRiYXNlLXNwYWNlciA6ICRzcGFjZXI7IFxuXG4vLyBHdXR0ZXJzIG11c3QgdXNlIGEgJ3Z3JyB1bml0IHNvIHRoZXkgYXJlIHJlbGF0aXZlIHRvIHRoZSB1c2VycyB2aWV3cG9ydCB3aWR0aC13aXNlLiBcbi8vIFRoZXkgc2hvdWxkIHByaW1hcmlseSBiZSB1c2VkIGZvciB0aGUgbGVmdCBhbmQgcmlnaHQgcGFkZGluZyBvciBtYXJnaW4gb24gYSBwYXJlbnQgbGV2ZWwuXG4vLyBBcyBhIHN1Z2dlc3Rpb24sIHRoaXMgZ3V0dGVyIGNvbnN0YW50IHNob3VsZCBiZSBoYWxmIHRoZSBzaXplIG9mIHRoZSBzcGFjZXIgdmFsdWUuXG4kZ3V0dGVyIDogM3Z3ICFkZWZhdWx0O1xuJGJhc2UtZ3V0dGVyIDogJGd1dHRlcjsgXG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBBc2JvbHV0ZSBVbml0cyBcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vIEdhcHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBHYXBzIGFyZSBhbiBhYnNvbHV0ZSB1bml0IChweCkgaW50ZW5kZWQgdG8gYmUgdXNlZCBvbiBpbmRpdmlkdWFsIGVsZW1lbnRzIHdpdGhpbiBhIGNvbXBvbmVudGVkLiBcbi8vIFRoZSBhaW0gaXMgdG8gcmV0YWluIGNvbnNpc3RhbnQgc3BhY2luZyBhbW9uZ3N0IGJsb2NrLCBpbmxpbmUsIHRhYmxlIGFuZCBncm91cCBodG1sIGVsZW1lbnRzLlxuXG5AZnVuY3Rpb24gZ2FwKCRhbW91bnQgOiAxKSB7XG4gIEBpZiAoICRhbW91bnQgPT0gMSApIHsgXG4gICAgQHJldHVybiB2YXIoLS1nYXApOyBcbiAgfSBAZWxzZSB7IFxuICAgIEByZXR1cm4gY2FsYyh2YXIoLS1nYXApICogI3skYW1vdW50fSk7IFxuICB9XG59XG5cbiRnYXAwIDogZ2FwKDAuNSk7ICRnYXAwLSA6IGdhcCgtMC41KTtcbiRnYXAgIDogZ2FwKDEpOyAgICRnYXAtICA6IGdhcCgtMSk7XG4kZ2FwMiA6IGdhcCgyKTsgICAkZ2FwMi0gOiBnYXAoLTIpO1xuJGdhcDMgOiBnYXAoMyk7ICAgJGdhcDMtIDogZ2FwKC0zKTtcbiRnYXA0IDogZ2FwKDQpOyAgICRnYXA0LSA6IGdhcCgtNCk7XG4kZ2FwNSA6IGdhcCg1KTsgICAkZ2FwNS0gOiBnYXAoLTUpO1xuJGdhcDYgOiBnYXAoNik7ICAgJGdhcDYtIDogZ2FwKC02KTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJlbGF0aXZlIFVuaXRzIFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQGZ1bmN0aW9uIF9keW5hbWljLXVuaXQoJGN1c3RvbS1wcm9wZXJ0eSwgJGFtb3VudCwgJG1pbiwgJG1heCwgJHVzZS1uZWdhdGl2ZSA6IGZhbHNlLCAkdXNlLWNsYW1wIDogdHJ1ZSkge1xuXG4gIC8vIENhbGMgTWV0aG9kXG4gICRyZXN1bHQgOiBjYWxjKCgjeyRjdXN0b20tcHJvcGVydHl9ICogI3skYW1vdW50fSkgKyAje2lmKCRtaW4gPT0gMCwgMHB4LCAkbWluKX0pO1xuICBcbiAgLy8gQ2xhbXAgTWV0aG9kXG4gIEBpZiAoICR1c2UtY2xhbXAgKSB7XG4gICAgQGlmICggJGFtb3VudCA9PSAwICkge1xuICAgICAgJHJlc3VsdCA6IGNsYW1wKCN7bWF0aC5kaXYoJG1pbiwgMil9LCAjeyRjdXN0b20tcHJvcGVydHl9ICogMC41LCAjeyRtYXh9KTtcbiAgICB9IEBlbHNlIGlmICggJGFtb3VudCA9PSAxICkge1xuICAgICAgJHJlc3VsdCA6IGNsYW1wKCN7JG1pbn0sICN7JGN1c3RvbS1wcm9wZXJ0eX0sICN7JG1heH0pO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHJlc3VsdCA6IGNsYW1wKCN7JG1pbn0sICN7JGN1c3RvbS1wcm9wZXJ0eX0gKiAjeyRhbW91bnR9LCAjeyRtYXh9KTtcbiAgICB9XG4gIH0gXG5cbiAgQGlmICggJHVzZS1uZWdhdGl2ZSApIHtcbiAgICAkcmVzdWx0IDogY2FsYygtMSAqICN7JHJlc3VsdH0pO1xuICB9XG5cbiAgQHJldHVybiAkcmVzdWx0O1xuXG59IFxuXG4vLyBTcGFjZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gU3BhY2VycyBhcmUgYSByZWxhdGl2ZSB2aWV3cG9ydCBoZWlnaHQgKHZoKSB1bml0IGludGVuZGVkIHRvIGJlIHVzZWQgb24gYSBjb21wb25lbnRlZCBsZXZlbC5cbi8vIFRoZSBhaW0gaXMgdG8gcmV0YWluIGNvbnNpc3RhbnQgdG9wIGFuZCBib3R0b20gc3BhY2luZyBhbW9uZ3N0ICdzZWN0aW9uJyBhbmQgJ2N1c3RvbScgZWxlbWVudHMuXG4vLyBTcGFjZXJzIHdpbGwgZXF1YXRlIHRvIHNvbWV0aGluZyBsaWtlOiBgKCRzcGFjZXIgKiB4KSArICRnYXBgLiBcbi8vIFRoZSAnJGdhcCcgaXMgYWRkZWQgc28gdGhhdCB2aCBzcGFjaW5nIHdpbGwgbmV2ZXIgc2NhbGUgdG9vIGNsb3NlIHRvIDBweC4gXG5cbkBmdW5jdGlvbiBzcGFjZXIoJGFtb3VudCA6IDEsICRtaW4gOiAkYmFzZS1nYXAsICRtYXggOiBudWxsLCAkdXNlLW5lZ2F0aXZlIDogZmFsc2UsICR1c2UtY2xhbXAgOiB0cnVlKSB7XG4gIEBpZiAoICRhbW91bnQgPT0gMCkgeyAkYW1vdW50IDogMC41OyAkbWluIDogbWF0aC5kaXYoJG1pbiwgMik7IH1cbiAgQGlmICggbWV0YS50eXBlLW9mKCRtYXgpID09ICdudWxsJyApIHsgXG4gICAgQGlmICggbWV0YS50eXBlLW9mKCRtaW4pID09ICdzdHJpbmcnIGFuZCBzdHJpbmcuaW5kZXgoJG1pbiwgJ3ZhcicpICkge1xuICAgICAgJG1heCA6IGNhbGMoI3skbWlufSAqICN7JGFtb3VudCArIDF9KTsgXG4gICAgfSBAZWxzZSB7XG4gICAgICAkbWF4IDogI3skbWluICogKCRhbW91bnQgKyAxKX07IFxuICAgIH1cbiAgfVxuICBAcmV0dXJuIF9keW5hbWljLXVuaXQodmFyKC0tc3BhY2VyKSwgJGFtb3VudCwgJG1pbiwgJG1heCwgJHVzZS1uZWdhdGl2ZSwgJHVzZS1jbGFtcCk7XG59XG5cbiRzcGFjZXIwIDogdmFyKC0tc3BhY2VyMCk7ICRzcGFjZXIwLSA6IHZhcigtLXNwYWNlcjAtKTtcbiRzcGFjZXIgIDogdmFyKC0tc3BhY2VyMSk7ICRzcGFjZXItICA6IHZhcigtLXNwYWNlcjEtKTtcbiRzcGFjZXIyIDogdmFyKC0tc3BhY2VyMik7ICRzcGFjZXIyLSA6IHZhcigtLXNwYWNlcjItKTtcbiRzcGFjZXIzIDogdmFyKC0tc3BhY2VyMyk7ICRzcGFjZXIzLSA6IHZhcigtLXNwYWNlcjMtKTtcbiRzcGFjZXI0IDogdmFyKC0tc3BhY2VyNCk7ICRzcGFjZXI0LSA6IHZhcigtLXNwYWNlcjQtKTtcbiRzcGFjZXI1IDogdmFyKC0tc3BhY2VyNSk7ICRzcGFjZXI1LSA6IHZhcigtLXNwYWNlcjUtKTtcbiRzcGFjZXI2IDogdmFyKC0tc3BhY2VyNik7ICRzcGFjZXI2LSA6IHZhcigtLXNwYWNlcjYtKTtcblxuLy8gR3V0dGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEd1dHRlcnMgYXJlIGEgcmVsYXRpdmUgdmlld3BvcnQgd2lkdGggKHZ3KSB1bml0IGludGVuZGVkIHRvIGJlIHVzZWQgb24gYSBwYXJlbnQgbGV2ZWw7XG4vLyBmb3IgZXhhbXBsZSwgYSB3cmFwcGVyIGNvbnRhaW5lciBvciBib2R5IHdpdGggbmVzdGVkIGNvbXBvbmVudHMuIFxuLy8gVGhlIGFpbSBpcyB0byByZXRhaW4gY29uc2lzdGFudCBsZWZ0IGFuZCByaWdodCBzcGFjaW5nIGFtb25nc3QgJ3NlY3Rpb24nIGFuZCAnY3VzdG9tJyBlbGVtZW50cy5cbi8vIEd1dHRlcnMgd2lsbCBlcXVhdGUgdG8gc29tZXRoaW5nIGxpa2U6IGAoJGd1dHRlciAqIHgpICsgJGdhcGAuIFxuLy8gVGhlICckZ2FwJyBpcyBhZGRlZCBzbyB0aGF0IHZ3IHNwYWNpbmcgd2lsbCBuZXZlciBzY2FsZSB0b28gY2xvc2UgdG8gMHB4LiBcblxuQGZ1bmN0aW9uIGd1dHRlcigkYW1vdW50IDogMSwgJG1pbiA6ICRiYXNlLWdhcCwgJG1heCA6IG51bGwsICR1c2UtbmVnYXRpdmUgOiBmYWxzZSwgJHVzZS1jbGFtcCA6IHRydWUpIHtcbiAgQGlmICggJGFtb3VudCA9PSAwKSB7ICRhbW91bnQgOiAwLjU7ICRtaW4gOiBtYXRoLmRpdigkbWluLCAyKTsgfVxuICBAaWYgKCBtZXRhLnR5cGUtb2YoJG1heCkgPT0gJ251bGwnICkgeyBcbiAgICBAaWYgKCBtZXRhLnR5cGUtb2YoJG1pbikgPT0gJ3N0cmluZycgYW5kIHN0cmluZy5pbmRleCgkbWluLCAndmFyJykgKSB7XG4gICAgICAkbWF4IDogY2FsYygjeyRtaW59ICogI3skYW1vdW50ICsgMX0pOyBcbiAgICB9IEBlbHNlIHtcbiAgICAgICRtYXggOiAjeyRtaW4gKiAoJGFtb3VudCArIDEpfTsgXG4gICAgfVxuICB9XG4gIEByZXR1cm4gX2R5bmFtaWMtdW5pdCh2YXIoLS1ndXR0ZXIpLCAkYW1vdW50LCAkbWluLCAkbWF4LCAkdXNlLW5lZ2F0aXZlLCAkdXNlLWNsYW1wKTtcbn1cblxuJGd1dHRlcjAgOiB2YXIoLS1ndXR0ZXIwKTsgJGd1dHRlcjAtIDogdmFyKC0tZ3V0dGVyMC0pO1xuJGd1dHRlciAgOiB2YXIoLS1ndXR0ZXIxKTsgJGd1dHRlci0gIDogdmFyKC0tZ3V0dGVyMS0pO1xuJGd1dHRlcjIgOiB2YXIoLS1ndXR0ZXIyKTsgJGd1dHRlcjItIDogdmFyKC0tZ3V0dGVyMi0pO1xuJGd1dHRlcjMgOiB2YXIoLS1ndXR0ZXIzKTsgJGd1dHRlcjMtIDogdmFyKC0tZ3V0dGVyMy0pO1xuJGd1dHRlcjQgOiB2YXIoLS1ndXR0ZXI0KTsgJGd1dHRlcjQtIDogdmFyKC0tZ3V0dGVyNC0pO1xuJGd1dHRlcjUgOiB2YXIoLS1ndXR0ZXI1KTsgJGd1dHRlcjUtIDogdmFyKC0tZ3V0dGVyNS0pO1xuJGd1dHRlcjYgOiB2YXIoLS1ndXR0ZXI2KTsgJGd1dHRlcjYtIDogdmFyKC0tZ3V0dGVyNi0pO1xuIiwiLmhlYWRlciBuYXYuZ2xvc3NhcnktbmF2aWdhdGlvbiB7XG4gIG1hcmdpbi10b3A6IHZhcigtLXNwYWNlcjEpO1xufVxuLmhlYWRlciBuYXYuZ2xvc3NhcnktbmF2aWdhdGlvbiBoMiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5AbWVkaWEgKG1pbi13aWR0aDogOTgxcHgpIHtcbiAgLmhlYWRlciBuYXYuZ2xvc3NhcnktbmF2aWdhdGlvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuQG1lZGlhIChtYXgtd2lkdGg6IDk4MHB4KSB7XG4gIC5oZWFkZXIgbmF2Lmdsb3NzYXJ5LW5hdmlnYXRpb24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNkY2RjZGM7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tc3BhY2VyMS0pO1xuICAgIHBhZGRpbmc6IHZhcigtLWd1dHRlcjIpIHZhcigtLWd1dHRlcjEpIHZhcigtLXNwYWNlcjEpIHZhcigtLWd1dHRlcjEpO1xuICAgIG1hcmdpbi1sZWZ0OiB2YXIoLS1ndXR0ZXIxLSk7XG4gICAgbWFyZ2luLXJpZ2h0OiB2YXIoLS1ndXR0ZXIxLSk7XG4gIH1cbiAgLmhlYWRlciBuYXYuZ2xvc3NhcnktbmF2aWdhdGlvbiAuaGVhZGluZyB7XG4gICAgbWFyZ2luLWJvdHRvbTogdmFyKC0tZ2FwKTtcbiAgICBjb2xvcjogIzFFMUExQTtcbiAgfVxufVxuXG4jZ2xvc3NhcnktbGlzdCB7XG4gIHBhZGRpbmctdG9wOiAwO1xufVxuI2dsb3NzYXJ5LWxpc3QgPiBzZWN0aW9uIHtcbiAgcGFkZGluZzogdmFyKC0tc3BhY2VyMSkgMDtcbn1cbiNnbG9zc2FyeS1saXN0ID4gc2VjdGlvbiArIHNlY3Rpb24ge1xuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RjZGNkYztcbn1cbiNnbG9zc2FyeS1saXN0ID4gc2VjdGlvbiBoMyBhIHtcbiAgZm9udC1zaXplOiAxLjU2MjVlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgY29sb3I6ICNERjMwMzU7XG59XG4jZ2xvc3NhcnktbGlzdCA+IHNlY3Rpb24gaDMgYTo6YWZ0ZXIge1xuICBjb250ZW50OiBcIi5cIjtcbiAgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbn1cbiNnbG9zc2FyeS1saXN0ID4gc2VjdGlvbi5oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuI2dsb3NzYXJ5LWxpc3QgZGwgZHQge1xuICBwYWRkaW5nLXRvcDogdmFyKC0tZ2FwKTtcbiAgZm9udC1zaXplOiAxLjA2MjVlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgY29sb3I6ICMxMzFmNmI7XG59XG4jZ2xvc3NhcnktbGlzdCBkbCBkdC5oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuI2dsb3NzYXJ5LWxpc3QgZGwgZGQgb2wsICNnbG9zc2FyeS1saXN0IGRsIGRkIHVsIHtcbiAgbWFyZ2luLXRvcDogY2FsYyh2YXIoLS1nYXApICogMC41KTtcbn1cbiNnbG9zc2FyeS1saXN0IGRsIGRkIC5yZWxhdGVkLXRlcm1zIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW4tdG9wOiBjYWxjKHZhcigtLWdhcCkgKiAwLjUpO1xuICBib3JkZXItcmFkaXVzOiB2YXIoLS1ib3JkZXItcmFkaXVzLCA2cHgpO1xuICBmb250LXNpemU6IDAuODc1ZW07XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgY29sb3I6ICM2QTZBNkE7XG59XG4jZ2xvc3NhcnktbGlzdCBkbCBkZCAucmVsYXRlZC10ZXJtcyBhIHtcbiAgY29sb3I6ICM2QTZBNkE7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB0ZXh0LXVuZGVybGluZS1vZmZzZXQ6IDJweDtcbn1cbkBtZWRpYSAoaG92ZXI6IGhvdmVyKSB7XG4gICNnbG9zc2FyeS1saXN0IGRsIGRkIC5yZWxhdGVkLXRlcm1zIGE6aG92ZXIge1xuICAgIGNvbG9yOiAjMTMxZjZiO1xuICB9XG59XG4jZ2xvc3NhcnktbGlzdCBkbCBkZC5oaWRkZW4ge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4uZ2xvc3NhcnktbmF2aWdhdGlvbiAuaGVhZGluZyB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgYWxpZ24taXRlbXM6IGJhc2VsaW5lO1xufVxuLmdsb3NzYXJ5LW5hdmlnYXRpb24gLmhlYWRpbmcgc3BhbiB7XG4gIGNvbG9yOiAjNkE2QTZBO1xuICBmb250LXNpemU6IDAuNjI1ZW07XG59XG4uZ2xvc3NhcnktbmF2aWdhdGlvbiBvbCB7XG4gIGRpc3BsYXk6IGdyaWQ7XG4gIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KGF1dG8tZmlsbCwgbWlubWF4KDQwcHgsIDFmcikpO1xuICBncmlkLWdhcDogdmFyKC0tZ2FwKTtcbiAgZ3JpZC1hdXRvLXJvd3M6IDFmcjtcbn1cbi5nbG9zc2FyeS1uYXZpZ2F0aW9uIG9sOjpiZWZvcmUge1xuICBjb250ZW50OiBcIlwiO1xuICB3aWR0aDogMDtcbiAgcGFkZGluZy1ib3R0b206IDEwMCU7XG4gIGdyaWQtcm93OiAxLzE7XG4gIGdyaWQtY29sdW1uOiAxLzE7XG59XG4uZ2xvc3NhcnktbmF2aWdhdGlvbiBvbCA+ICo6Zmlyc3QtY2hpbGQge1xuICBncmlkLXJvdzogMS8xO1xuICBncmlkLWNvbHVtbjogMS8xO1xufVxuLmdsb3NzYXJ5LW5hdmlnYXRpb24gb2wgbGkge1xuICBkaXNwbGF5OiBmbGV4O1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG4uZ2xvc3NhcnktbmF2aWdhdGlvbiBvbCBsaSBhIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBkaXNwbGF5OiBmbGV4O1xuICBwbGFjZS1pdGVtczogY2VudGVyO1xuICBwbGFjZS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAxMDAlO1xuICBjb2xvcjogIzEzMWY2YjtcbiAgYm9yZGVyLXJhZGl1czogdmFyKC0tYm9yZGVyLXJhZGl1cywgNnB4KTtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0Y0RjRGNDtcbiAgdHJhbnNpdGlvbjogY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4ycykgdmFyKC0tdHJhbnNpdGlvbi1lYXNlLCBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSkpIHZhcigtLXRyYW5zaXRpb24tZGVsYXksICksIGJhY2tncm91bmQtY29sb3IgdmFyKC0tdHJhbnNpdGlvbi1kdXJhdGlvbiwgMC4ycykgdmFyKC0tdHJhbnNpdGlvbi1lYXNlLCBjdWJpYy1iZXppZXIoMC40MiwgMCwgMC41OCwgMSkpIHZhcigtLXRyYW5zaXRpb24tZGVsYXksICk7XG59XG5AbWVkaWEgKGhvdmVyOiBob3Zlcikge1xuICAuZ2xvc3NhcnktbmF2aWdhdGlvbiBvbCBsaSBhOmhvdmVyIHtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI0RGMzAzNTtcbiAgfVxufVxuLmdsb3NzYXJ5LW5hdmlnYXRpb24gb2wgbGkgYS5hY3RpdmUge1xuICBjb2xvcjogd2hpdGU7XG4gIGJhY2tncm91bmQtY29sb3I6ICNERjMwMzU7XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vLyBCcmVhayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2JyZWFrXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG5AbWl4aW4gb3V0KCRicmVha3BvaW50KSB7XG4gIEBtZWRpYSAobWluLXdpZHRoOiN7JGJyZWFrcG9pbnQgKyAxfSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBpbigkYnJlYWtwb2ludCkge1xuICBAbWVkaWEgKG1heC13aWR0aDojeyRicmVha3BvaW50fSkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbkBtaXhpbiBiZXR3ZWVuKCRtaW4sICRtYXgpIHtcbiAgQG1lZGlhIChtaW4td2lkdGg6I3skbWlufSkgYW5kIChtYXgtd2lkdGg6I3skbWF4fSkge1xuICAgIEBjb250ZW50O1xuICB9XG59IiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIENvbG91cnNcbi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG5cbi8vLyBFeHBsaWNpdCBDb2xvdXJzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLy8gRXhwbGljaXQgY29sb3VycyBhcmUgYSB3aGF0IHRoZXkgYXJlLiBHcmVlbiBpcyBncmVlbiwgYmx1ZSBpcyBibHVlLi4uIG5vIG9ic2N1cml0eS5cbi8vLyBXZSBzdWZmaXggbnVtYmVycyB0byBkZWZpbmUgdmFyaWF0aW9ucyBvZiBjb2xvdXJzIGluIG5vIHBhcnRpY3VsYXIgb3JkZXIgb2Ygc2hhZGUuIFxuLy8vIEV4YW1wbGU6IGdyZWVuMSwgZ3JlZW4yLCBncmVlbjMsIGdyZWVuNC4gVGhpcyBpcyBzbyB3ZSBjYW4gaW1taWRpYXRlbHkgc2VlIGhvdyBcbi8vLyBtYW55IG9wdGlvbnMgd2UgaGF2ZSBmb3IgYSBzaW5nbGUgY29sb3VyIGF0IGEgZ2xhbmNlLiBJZiB5b3Ugc2VlICRncmVlbjQsIHlvdSBrbm93IHRoaXNcbi8vLyBwcm9qZWN0IGlzIHVzaW5nIGZvdXIgdmFyaWF0aW9ucyBvZiBncmVlbi4gVGhpcyBpcyBhbHNvIG9mdGVuIHVzZWZ1bCBiZWNhdXNlIG1hbnkgZGV2ZWxvcG1lbnQgXG4vLy8gdG9vbHMgd2lsbCBhdXRvLXN1Z2dlc3QgY29sb3VycyB3aXRoIGFjdHVhbCBleGFtcGxlcyBvZiB0aGUgY29sb3VyLiBcbi8vLyBUaGUgUGFsbGV0ZXMgbW9kdWxlIChhdCB0aGUgYm90dG9tIG9mIHRoaXMgZmlsZSkgd2lsbCBvdXRwdXQgc2hhZGVkIG5hbWVkIHZhcmlhdGlvbnMsIFxuLy8vLyA8Y29sb3VyPi1kYXJrIGFuZCA8Y29sb3VyPi1saWdodC4gSWYgeW91IG5lZWQgYWRkaXRpb25hbCBzaGFkZXMgcGxlYXNlIHJlZnJhaW0gZnJvbSBnb2luZyBkb3duIFxuLy8vIHRoZSAnbGlnaHRlcicsICdsaWdodGVzdCcsICdkYXJrZXInLCAnZGFya2VzdCcgY29udmVudGlvbi4gVGhlc2UgYXJlIG5vdCBwYXJ0aWN1YXJseSBsZWdpYWJsZSBcbi8vLyBhbmQgdGhleSBhcmUgbGltaXRlZCBieSBob3cgY3JlYXRpdmUgKGNvbmZ1c2luZykgeW91ciB3b3JkaW5nIGNhbiBiZS4gXG4vLy8gSXQgaXMgYmV0dGVyIHRvIGRlZmluZSBhIG5ldyBleHBsY2l0IGNvbG91ciBlbnRpcmVseS4gXG4vLy8gQHNlZSBodHRwczovL2Nzcy10cmlja3MuY29tL3doYXQtZG8teW91LW5hbWUtY29sb3ItdmFyaWFibGVzL1xuXG4kYmx1ZSAgIDogIzEzMWY2YjsgLy8gUHJpbWFyeVxuJGJsdWUyICA6ICMyOTJCNjg7IC8vIE5ha2VkIExpbmtcbiRibHVlMyAgOiAjM2QzZjdmOyAvLyBMaWdudCBHcmFkaWVudFxuJGJsdWU0ICA6ICMxMDEyNGQ7IC8vIERhcmsgR3JhZGllbnRcbiRibHVlNSAgOiAjMDA5NUZGOyAvLyBOYXZpZ2F0aW9uIGxpbmsgaG92ZXIgIFxuLy8gJHJlZCAgICA6ICNFMDNBNDA7IC8vIFNlY29uZGFyeVxuJHJlZCAgICA6ICNERjMwMzU7IC8vIFNlY29uZGFyeSAtIFRoaXMgcGFzc2VzIHRoZSBjb250cmFzdCByYXRpbyBhY2Nlc3NpYmlsaXR5IHRlc3QgaW4gR29vZ2xlcyBMaWdodGhvdXNlIFxuJGdyZXkgICA6ICM5Njk2OTU7XG4kZ3JleTIgIDogIzZBNkE2QTsgLy8gRm9udFxuJGdyZXkzICA6ICNGNEY0RjQ7IC8vIExpZ2h0ZXIgR3JleSBCYWNrZ3JvdW5kXG4kZ3JleTQgIDogI2RjZGNkYzsgXG4kZ3JleTUgIDogI0IxQjFCMTsgLy8gU3BhY2VycyA8aHI+XG4kZ3JleTYgIDogIzMzMzIzNjsgLy8gTmF2aWdhdGlvbiBsaW5rIGhvdmVyICBcbiRncmVlbiAgOiAjNTBCQzA4O1xuJGdyZWVuMiA6ICM3NmJiMjg7IC8vIEVTRyBncmVlblxuJHllbGxvdyA6ICNGNkY0REI7IC8vIERpc2NsYWltZXIgQmFja2dyb3VuZFxuJHllbGxvdzIgOiAjRkNCMDAyOyBcbiRibGFjayAgOiAjMUUxQTFBO1xuXG4kbWFyayA6ICRibHVlNTsgLy8gYmFja2dyb3VuZCBjb2xvdXIgZm9yIDxtYXJrPiB0YWdzXG5cbiRwcmltYXJ5ICAgOiB2YXIoLS1wcmltYXJ5LCAgI3skYmx1ZX0pO1xuJHNlY29uZGFyeSA6IHZhcigtLXNlY29uZGFyeSwgI3skcmVkfSk7XG5cbi8vLyBQYWxldHRlID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLy8gQnkgbG9hZGluZyBjb25maWd1cmF0aW9ucyBpbnRvIHRoaXMgJ3BhbGxldGUnIG1vZHVsZSwgd2Ugd2lsbCBiZSBhYmxlXG4vLy8gdG8gZGVjbGFyZSB2YXJpYW50cyBvZiBhIGZldyBjb21tb24gY29sb3Vycy4gWW91IGNhbiBhbHNvIGFkanVzdCB0aGUgbGlnaHRuZXNzXG4vLy8gb3IgZGFya25lc3Mgb2YgZWFjaCB2YXJpYW50IGJ5IHBhc3NpbmcgaW4gdGhlIHJlbGV2YW50IHByaXZhdGUgcnVsZXMuIFxuLy8vIFBhbGV0dGUgd2lsbCBhbHNvIGV4cG9zZSBwb3B1bGFyIHNvY2lhbCBtZWRpYSBjb2xvdXJzIGFuZCB0aGUgWWVsbG8gYnJhbmQgY29sb3VyLlxuLy8vIEBzZWUgaHR0cHM6Ly9zYXNzLWxhbmcuY29tL2RvY3VtZW50YXRpb24vYXQtcnVsZXMvZm9yd2FyZCNjb25maWd1cmluZy1tb2R1bGVzXG4vLy8gQG91dHB1dCAkZ3JlZW4gOiAjMDI5MjlBOyAkZ3JlZW4tZGFyayA6ICMyNTY1Njk7ICRncmVlbi1saWdodDogIzA0YjljNDtcblxuQGZvcndhcmQgJ2NyZWF0ZS9wYWxldHRlJyB3aXRoIChcbiAgJGJsdWUgICA6ICRibHVlLFxuICAkcmVkICAgIDogJHJlZCxcbiAgJGdyZXkgICA6ICRncmV5LFxuICAkeWVsbG93IDogJHllbGxvdyxcbiAgJGdyZWVuICA6ICRncmVlbixcbiAgJGJsYWNrICA6ICRibGFja1xuKTtcbiIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLyBIZWFkaW5nc1xuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQHVzZSAnc2FzczpzdHJpbmcnO1xuQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptZXRhJztcbkB1c2UgJ3Nhc3M6bWF0aCc7XG5AdXNlICcuL2NvbGxlY3Rpb25zL2ZvbnQnO1xuQHVzZSAnLi9tb2R1bGVzL3VuaXQnO1xuXG4vLyBEZWZhdWx0IEhlYWRpbmcgVmFsdWVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kaDEgOiAoXG4gICdmb250LXNpemUnICAgOiAzLjByZW0sXG4gICdsaW5lLWhlaWdodCcgOiAxLjFcbikgIWRlZmF1bHQ7XG5cbiRoMiA6IChcbiAgJ2ZvbnQtc2l6ZScgICA6IDIuNXJlbSxcbiAgJ2xpbmUtaGVpZ2h0JyA6IDEuM1xuKSAhZGVmYXVsdDtcblxuJGgzIDogKFxuICAnZm9udC1zaXplJyAgIDogMi4ycmVtLFxuICAnbGluZS1oZWlnaHQnIDogMS40XG4pICFkZWZhdWx0O1xuXG4kaDQgOiAoXG4gICdmb250LXNpemUnICAgOiAyLjByZW0sXG4gICdsaW5lLWhlaWdodCcgOiAxLjRcbikgIWRlZmF1bHQ7XG5cbiRoNSA6IChcbiAgJ2ZvbnQtc2l6ZScgICA6IDEuOHJlbSxcbiAgJ2xpbmUtaGVpZ2h0JyA6IDEuNFxuKSAhZGVmYXVsdDtcblxuJGg2IDogKFxuICAnZm9udC1zaXplJyAgIDogMS42cmVtLFxuICAnbGluZS1oZWlnaHQnIDogMS40XG4pICFkZWZhdWx0O1xuXG4kYmFzZSA6IDYyLjUgIWRlZmF1bHQ7XG4kc2NhbGVyIDogMS41dncgIWRlZmF1bHQ7XG4kZW5hYmxlLWNyb3BwaW5nIDogZmFsc2UgIWRlZmF1bHQ7XG5cbi8vIEZhbGxiYWNrIExpbmUtaGVpZ2h0cyBzaG91bGQgdGhleSBub3QgaGF2ZSBiZWVuIHBhc3NlZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBpZiBub3QgbWFwLmhhcy1rZXkoJGgxLCBcImxpbmUtaGVpZ2h0XCIpIHsgJGgxIDogbWFwLnNldCgkaDEsICdsaW5lLWhlaWdodCcsIDEuMSk7IH1cbkBpZiBub3QgbWFwLmhhcy1rZXkoJGgyLCBcImxpbmUtaGVpZ2h0XCIpIHsgJGgyIDogbWFwLnNldCgkaDIsICdsaW5lLWhlaWdodCcsIDEuMyk7IH1cbkBpZiBub3QgbWFwLmhhcy1rZXkoJGgzLCBcImxpbmUtaGVpZ2h0XCIpIHsgJGgzIDogbWFwLnNldCgkaDMsICdsaW5lLWhlaWdodCcsIDEuNCk7IH1cbkBpZiBub3QgbWFwLmhhcy1rZXkoJGg0LCBcImxpbmUtaGVpZ2h0XCIpIHsgJGg0IDogbWFwLnNldCgkaDQsICdsaW5lLWhlaWdodCcsIDEuNCk7IH1cbkBpZiBub3QgbWFwLmhhcy1rZXkoJGg1LCBcImxpbmUtaGVpZ2h0XCIpIHsgJGg1IDogbWFwLnNldCgkaDUsICdsaW5lLWhlaWdodCcsIDEuNCk7IH1cbkBpZiBub3QgbWFwLmhhcy1rZXkoJGg2LCBcImxpbmUtaGVpZ2h0XCIpIHsgJGg2IDogbWFwLnNldCgkaDYsICdsaW5lLWhlaWdodCcsIDEuNCk7IH1cblxuLy8gRGVmaW5lIHRoZSB2YXJpYWJsZXMgc28gdGhleSBhcmUgc3RpbGwgYWNjZXNpYmxlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJGgxLWZvbnQtc2l6ZSAgICAgOiBtYXAtZ2V0KCRoMSwgJ2ZvbnQtc2l6ZScpO1xuJGgxLWxpbmUtaGVpZ2h0ICAgOiBtYXAtZ2V0KCRoMSwgJ2xpbmUtaGVpZ2h0Jyk7XG4kaDEtZm9udC1zaXplLW1pbiA6IGlmKG1hcC5oYXMta2V5KCRoMSwgXCJmb250LXNpemUtbWluXCIpLCBtYXAtZ2V0KCRoMSwgXCJmb250LXNpemUtbWluXCIpLCBmYWxzZSk7XG4kaDEtc2NhbGVyICAgICAgICA6IGlmKG1hcC5oYXMta2V5KCRoMSwgXCJzY2FsZXJcIiksIG1hcC1nZXQoJGgxLCBcInNjYWxlclwiKSwgJHNjYWxlcik7XG5cbiRoMi1mb250LXNpemUgICAgIDogbWFwLWdldCgkaDIsICdmb250LXNpemUnKTtcbiRoMi1saW5lLWhlaWdodCAgIDogbWFwLWdldCgkaDIsICdsaW5lLWhlaWdodCcpO1xuJGgyLWZvbnQtc2l6ZS1taW4gOiBpZihtYXAuaGFzLWtleSgkaDIsIFwiZm9udC1zaXplLW1pblwiKSwgbWFwLWdldCgkaDIsIFwiZm9udC1zaXplLW1pblwiKSwgZmFsc2UpO1xuJGgyLXNjYWxlciAgICAgICAgOiBpZihtYXAuaGFzLWtleSgkaDIsIFwic2NhbGVyXCIpLCBtYXAtZ2V0KCRoMiwgXCJzY2FsZXJcIiksICRzY2FsZXIpO1xuXG4kaDMtZm9udC1zaXplICAgICA6IG1hcC1nZXQoJGgzLCAnZm9udC1zaXplJyk7XG4kaDMtbGluZS1oZWlnaHQgICA6IG1hcC1nZXQoJGgzLCAnbGluZS1oZWlnaHQnKTtcbiRoMy1mb250LXNpemUtbWluIDogaWYobWFwLmhhcy1rZXkoJGgzLCBcImZvbnQtc2l6ZS1taW5cIiksIG1hcC1nZXQoJGgzLCBcImZvbnQtc2l6ZS1taW5cIiksIGZhbHNlKTtcbiRoMy1zY2FsZXIgICAgICAgIDogaWYobWFwLmhhcy1rZXkoJGgzLCBcInNjYWxlclwiKSwgbWFwLWdldCgkaDMsIFwic2NhbGVyXCIpLCAkc2NhbGVyKTtcblxuJGg0LWZvbnQtc2l6ZSAgICAgOiBtYXAtZ2V0KCRoNCwgJ2ZvbnQtc2l6ZScpO1xuJGg0LWxpbmUtaGVpZ2h0ICAgOiBtYXAtZ2V0KCRoNCwgJ2xpbmUtaGVpZ2h0Jyk7XG4kaDQtZm9udC1zaXplLW1pbiA6IGlmKG1hcC5oYXMta2V5KCRoNCwgXCJmb250LXNpemUtbWluXCIpLCBtYXAtZ2V0KCRoNCwgXCJmb250LXNpemUtbWluXCIpLCBmYWxzZSk7XG4kaDQtc2NhbGVyICAgICAgICA6IGlmKG1hcC5oYXMta2V5KCRoNCwgXCJzY2FsZXJcIiksIG1hcC1nZXQoJGg0LCBcInNjYWxlclwiKSwgJHNjYWxlcik7XG5cbiRoNS1mb250LXNpemUgICAgIDogbWFwLWdldCgkaDUsICdmb250LXNpemUnKTtcbiRoNS1saW5lLWhlaWdodCAgIDogbWFwLWdldCgkaDUsICdsaW5lLWhlaWdodCcpO1xuJGg1LWZvbnQtc2l6ZS1taW4gOiBpZihtYXAuaGFzLWtleSgkaDUsIFwiZm9udC1zaXplLW1pblwiKSwgbWFwLWdldCgkaDUsIFwiZm9udC1zaXplLW1pblwiKSwgZmFsc2UpO1xuJGg1LXNjYWxlciAgICAgICAgOiBpZihtYXAuaGFzLWtleSgkaDUsIFwic2NhbGVyXCIpLCBtYXAtZ2V0KCRoNSwgXCJzY2FsZXJcIiksICRzY2FsZXIpO1xuXG4kaDYtZm9udC1zaXplICAgICA6IG1hcC1nZXQoJGg2LCAnZm9udC1zaXplJyk7XG4kaDYtbGluZS1oZWlnaHQgICA6IG1hcC1nZXQoJGg2LCAnbGluZS1oZWlnaHQnKTtcbiRoNi1mb250LXNpemUtbWluIDogaWYobWFwLmhhcy1rZXkoJGg2LCBcImZvbnQtc2l6ZS1taW5cIiksIG1hcC1nZXQoJGg2LCBcImZvbnQtc2l6ZS1taW5cIiksIGZhbHNlKTtcbiRoNi1zY2FsZXIgICAgICAgIDogaWYobWFwLmhhcy1rZXkoJGg2LCBcInNjYWxlclwiKSwgbWFwLWdldCgkaDYsIFwic2NhbGVyXCIpLCAkc2NhbGVyKTtcblxuLy8gSGFuZGxlcyBDcm9wcyBzaG91bGQgdGhleSBub3QgaGF2ZSBiZWVuIHBhc3NlZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuJF9oMS1jcm9wLXRvcCAgICA6IGlmKG1hcC5oYXMta2V5KCRoMSwgXCJjcm9wLXRvcFwiKSwgbWFwLWdldCgkaDEsIFwiY3JvcC10b3BcIiksIGZhbHNlKTtcbiRfaDItY3JvcC10b3AgICAgOiBpZihtYXAuaGFzLWtleSgkaDIsIFwiY3JvcC10b3BcIiksIG1hcC1nZXQoJGgyLCBcImNyb3AtdG9wXCIpLCBmYWxzZSk7XG4kX2gzLWNyb3AtdG9wICAgIDogaWYobWFwLmhhcy1rZXkoJGgzLCBcImNyb3AtdG9wXCIpLCBtYXAtZ2V0KCRoMywgXCJjcm9wLXRvcFwiKSwgZmFsc2UpO1xuJF9oNC1jcm9wLXRvcCAgICA6IGlmKG1hcC5oYXMta2V5KCRoNCwgXCJjcm9wLXRvcFwiKSwgbWFwLWdldCgkaDQsIFwiY3JvcC10b3BcIiksIGZhbHNlKTtcbiRfaDUtY3JvcC10b3AgICAgOiBpZihtYXAuaGFzLWtleSgkaDUsIFwiY3JvcC10b3BcIiksIG1hcC1nZXQoJGg1LCBcImNyb3AtdG9wXCIpLCBmYWxzZSk7XG4kX2g2LWNyb3AtdG9wICAgIDogaWYobWFwLmhhcy1rZXkoJGg2LCBcImNyb3AtdG9wXCIpLCBtYXAtZ2V0KCRoNiwgXCJjcm9wLXRvcFwiKSwgZmFsc2UpO1xuXG4kX2gxLWNyb3AtYm90dG9tIDogaWYobWFwLmhhcy1rZXkoJGgxLCBcImNyb3AtYm90dG9tXCIpLCBtYXAtZ2V0KCRoMSwgXCJjcm9wLWJvdHRvbVwiKSwgZmFsc2UpO1xuJF9oMi1jcm9wLWJvdHRvbSA6IGlmKG1hcC5oYXMta2V5KCRoMiwgXCJjcm9wLWJvdHRvbVwiKSwgbWFwLWdldCgkaDIsIFwiY3JvcC1ib3R0b21cIiksIGZhbHNlKTtcbiRfaDMtY3JvcC1ib3R0b20gOiBpZihtYXAuaGFzLWtleSgkaDMsIFwiY3JvcC1ib3R0b21cIiksIG1hcC1nZXQoJGgzLCBcImNyb3AtYm90dG9tXCIpLCBmYWxzZSk7XG4kX2g0LWNyb3AtYm90dG9tIDogaWYobWFwLmhhcy1rZXkoJGg0LCBcImNyb3AtYm90dG9tXCIpLCBtYXAtZ2V0KCRoNCwgXCJjcm9wLWJvdHRvbVwiKSwgZmFsc2UpO1xuJF9oNS1jcm9wLWJvdHRvbSA6IGlmKG1hcC5oYXMta2V5KCRoNSwgXCJjcm9wLWJvdHRvbVwiKSwgbWFwLWdldCgkaDUsIFwiY3JvcC1ib3R0b21cIiksIGZhbHNlKTtcbiRfaDYtY3JvcC1ib3R0b20gOiBpZihtYXAuaGFzLWtleSgkaDYsIFwiY3JvcC1ib3R0b21cIiksIG1hcC1nZXQoJGg2LCBcImNyb3AtYm90dG9tXCIpLCBmYWxzZSk7XG5cblxuLy8gTWl4aW5zIGZvciBlYWNoIGhlYWRpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQG1peGluIF9zZXQtY3JvcCgkZm9udC1zaXplLCAkbGluZS1oZWlnaHQsICRjcm9wKSB7XG5cbiAgQGlmIChtZXRhLnR5cGUtb2YoJGNyb3ApID09ICdtYXAnKSB7XG5cbiAgICAkZm9udC1zaXplICAgOiB1bml0LnN0cmlwKCRmb250LXNpemUpICogMTA7XG4gICAgJGxpbmUtaGVpZ2h0IDogdW5pdC5zdHJpcCgkbGluZS1oZWlnaHQpO1xuICAgICR0b3AgICAgICAgICA6IGlmKG1hcC5oYXMta2V5KCRjcm9wLCBcInRvcFwiKSwgdW5pdC5zdHJpcChtYXAuZ2V0KCRjcm9wLCBcInRvcFwiKSksIDApO1xuICAgICRib3R0b20gICAgICA6IGlmKG1hcC5oYXMta2V5KCRjcm9wLCBcImJvdHRvbVwiKSwgdW5pdC5zdHJpcChtYXAuZ2V0KCRjcm9wLCBcImJvdHRvbVwiKSksIDApO1xuXG4gICAgQGluY2x1ZGUgZm9udC5jcm9wKCRmb250LXNpemUsICRsaW5lLWhlaWdodCwgJHRvcCwgJGJvdHRvbSk7XG5cbiAgfVxuXG59XG5cbkBtaXhpbiBoMSgkZm9udC1zaXplLW9ubHkgOiBmYWxzZSwgJGNyb3AgOiAkZW5hYmxlLWNyb3BwaW5nKSB7XG5cbiAgZm9udC1zaXplIDogZm9udC5zaXplKCRoMS1mb250LXNpemUpO1xuXG4gIEBpZiAoICRoMS1mb250LXNpemUtbWluIGFuZCAkaDEtZm9udC1zaXplLW1pbiA8ICRoMS1mb250LXNpemUgKSB7XG4gICAgZm9udC1zaXplIDogY2xhbXAoI3tmb250LnNpemUoJGgxLWZvbnQtc2l6ZS1taW4pfSwgI3skaDEtc2NhbGVyfSwgI3tmb250LnNpemUoJGgxLWZvbnQtc2l6ZSl9KTtcbiAgfVxuXG4gIEBpZiBub3QgJGZvbnQtc2l6ZS1vbmx5IHsgXG5cbiAgICBAaWYgKCAkY3JvcCApIHsgXG4gICAgICBAaW5jbHVkZSBmb250LmNyb3AoJGgxLWZvbnQtc2l6ZSwgJGgxLWxpbmUtaGVpZ2h0LCAkX2gxLWNyb3AtdG9wLCAkX2gxLWNyb3AtYm90dG9tICk7IFxuICAgIH0gQGVsc2Uge1xuICAgICAgbGluZS1oZWlnaHQgOiAkaDEtbGluZS1oZWlnaHQ7IFxuICAgIH1cblxuICB9XG5cbn1cblxuQG1peGluIGgyKCRmb250LXNpemUtb25seSA6IGZhbHNlLCAkY3JvcCA6ICRlbmFibGUtY3JvcHBpbmcpIHtcblxuICBmb250LXNpemUgOiBmb250LnNpemUoJGgyLWZvbnQtc2l6ZSk7XG5cbiAgQGlmICggJGgyLWZvbnQtc2l6ZS1taW4gYW5kICRoMi1mb250LXNpemUtbWluIDwgJGgyLWZvbnQtc2l6ZSApIHtcbiAgICBmb250LXNpemUgOiBjbGFtcCgje2ZvbnQuc2l6ZSgkaDItZm9udC1zaXplLW1pbil9LCAjeyRoMi1zY2FsZXJ9LCAje2ZvbnQuc2l6ZSgkaDItZm9udC1zaXplKX0pO1xuICB9XG5cbiAgQGlmIG5vdCAkZm9udC1zaXplLW9ubHkgeyBcblxuICAgIEBpZiAoICRjcm9wICkgeyBcbiAgICAgIEBpbmNsdWRlIGZvbnQuY3JvcCgkaDItZm9udC1zaXplLCAkaDItbGluZS1oZWlnaHQsICRfaDItY3JvcC10b3AsICRfaDItY3JvcC1ib3R0b20gKTsgXG4gICAgfSBAZWxzZSB7XG4gICAgICBsaW5lLWhlaWdodCA6ICRoMi1saW5lLWhlaWdodDsgXG4gICAgfVxuICAgIFxuICB9XG5cbn1cblxuQG1peGluIGgzKCRmb250LXNpemUtb25seSA6IGZhbHNlLCAkY3JvcCA6ICRlbmFibGUtY3JvcHBpbmcpIHtcblxuICBmb250LXNpemUgOiBmb250LnNpemUoJGgzLWZvbnQtc2l6ZSk7XG5cbiAgQGlmICggJGgzLWZvbnQtc2l6ZS1taW4gYW5kICRoMy1mb250LXNpemUtbWluIDwgJGgzLWZvbnQtc2l6ZSApIHtcbiAgICBmb250LXNpemUgOiBjbGFtcCgje2ZvbnQuc2l6ZSgkaDMtZm9udC1zaXplLW1pbil9LCAjeyRoMy1zY2FsZXJ9LCAje2ZvbnQuc2l6ZSgkaDMtZm9udC1zaXplKX0pO1xuICB9XG5cbiAgQGlmIG5vdCAkZm9udC1zaXplLW9ubHkgeyBcblxuICAgIEBpZiAoICRjcm9wICkgeyBcbiAgICAgIEBpbmNsdWRlIGZvbnQuY3JvcCgkaDMtZm9udC1zaXplLCAkaDMtbGluZS1oZWlnaHQsICRfaDMtY3JvcC10b3AsICRfaDMtY3JvcC1ib3R0b20gKTsgXG4gICAgfSBAZWxzZSB7XG4gICAgICBsaW5lLWhlaWdodCA6ICRoMy1saW5lLWhlaWdodDsgXG4gICAgfVxuICAgIFxuICB9XG5cbn1cblxuQG1peGluIGg0KCRmb250LXNpemUtb25seSA6IGZhbHNlLCAkY3JvcCA6ICRlbmFibGUtY3JvcHBpbmcpIHtcblxuICBmb250LXNpemUgOiBmb250LnNpemUoJGg0LWZvbnQtc2l6ZSk7XG5cbiAgQGlmICggJGg0LWZvbnQtc2l6ZS1taW4gYW5kICRoNC1mb250LXNpemUtbWluIDwgJGg0LWZvbnQtc2l6ZSApIHtcbiAgICBmb250LXNpemUgOiBjbGFtcCgje2ZvbnQuc2l6ZSgkaDQtZm9udC1zaXplLW1pbil9LCAjeyRoNC1zY2FsZXJ9LCAje2ZvbnQuc2l6ZSgkaDQtZm9udC1zaXplKX0pO1xuICB9XG5cbiAgQGlmIG5vdCAkZm9udC1zaXplLW9ubHkgeyBcblxuICAgIEBpZiAoICRjcm9wICkgeyBcbiAgICAgIEBpbmNsdWRlIGZvbnQuY3JvcCgkaDQtZm9udC1zaXplLCAkaDQtbGluZS1oZWlnaHQsICRfaDQtY3JvcC10b3AsICRfaDQtY3JvcC1ib3R0b20gKTsgXG4gICAgfSBAZWxzZSB7XG4gICAgICBsaW5lLWhlaWdodCA6ICRoNC1saW5lLWhlaWdodDsgXG4gICAgfVxuICAgIFxuICB9XG5cbn1cblxuQG1peGluIGg1KCRmb250LXNpemUtb25seSA6IGZhbHNlLCAkY3JvcCA6ICRlbmFibGUtY3JvcHBpbmcpIHtcblxuICBmb250LXNpemUgOiBmb250LnNpemUoJGg1LWZvbnQtc2l6ZSk7XG5cbiAgQGlmICggJGg1LWZvbnQtc2l6ZS1taW4gYW5kICRoNS1mb250LXNpemUtbWluIDwgJGg1LWZvbnQtc2l6ZSApIHtcbiAgICBmb250LXNpemUgOiBjbGFtcCgje2ZvbnQuc2l6ZSgkaDUtZm9udC1zaXplLW1pbil9LCAjeyRoNS1zY2FsZXJ9LCAje2ZvbnQuc2l6ZSgkaDUtZm9udC1zaXplKX0pO1xuICB9XG5cbiAgQGlmIG5vdCAkZm9udC1zaXplLW9ubHkgeyBcblxuICAgIEBpZiAoICRjcm9wICkgeyBcbiAgICAgIEBpbmNsdWRlIGZvbnQuY3JvcCgkaDUtZm9udC1zaXplLCAkaDUtbGluZS1oZWlnaHQsICRfaDUtY3JvcC10b3AsICRfaDUtY3JvcC1ib3R0b20gKTsgXG4gICAgfSBAZWxzZSB7XG4gICAgICBsaW5lLWhlaWdodCA6ICRoNS1saW5lLWhlaWdodDsgXG4gICAgfVxuICAgIFxuICB9XG5cbn1cblxuQG1peGluIGg2KCRmb250LXNpemUtb25seSA6IGZhbHNlLCAkY3JvcCA6ICRlbmFibGUtY3JvcHBpbmcpIHtcblxuICBmb250LXNpemUgOiBmb250LnNpemUoJGg2LWZvbnQtc2l6ZSk7XG5cbiAgQGlmICggJGg2LWZvbnQtc2l6ZS1taW4gYW5kICRoNi1mb250LXNpemUtbWluIDwgJGg2LWZvbnQtc2l6ZSApIHtcbiAgICBmb250LXNpemUgOiBjbGFtcCgje2ZvbnQuc2l6ZSgkaDYtZm9udC1zaXplLW1pbil9LCAjeyRoNi1zY2FsZXJ9LCAje2ZvbnQuc2l6ZSgkaDYtZm9udC1zaXplKX0pO1xuICB9XG5cbiAgQGlmIG5vdCAkZm9udC1zaXplLW9ubHkgeyBcblxuICAgIEBpZiAoICRjcm9wICkgeyBcbiAgICAgIEBpbmNsdWRlIGZvbnQuY3JvcDIoJGg2LWZvbnQtc2l6ZSwgJGg2LWxpbmUtaGVpZ2h0LCAkX2g2LWNyb3AtdG9wLCAkX2g2LWNyb3AtYm90dG9tICk7IFxuICAgIH0gQGVsc2Uge1xuICAgICAgbGluZS1oZWlnaHQgOiAkaDYtbGluZS1oZWlnaHQ7IFxuICAgIH1cbiAgICBcbiAgfVxuXG59XG5cblxuIiwiLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cbi8vIFVuaXRzXG4vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vL1xuXG4vLy8gQHNlZSBodHRwczovL2NvZGVwZW4uaW8vbWFya25vdHRvbi9wZW4vRXhQYk5HZVxuLy8vIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL21hcmtub3R0b24vZG9nZ2lzdHlsZS9ibG9iL21hc3Rlci9saWJyYXJ5L3NyYy9jcmVhdGUvX3VuaXRzLnNjc3NcblxuLy8vIFRoaXMgdW5pdHMgY3JlYXRvciB3aWxsIHJlbmRlciBzaXggcG9zaXRpdmUgYW5kIHNpeCBuZWdhdGl2ZSBzYXNzIHZhcmlhYmxlcyBmb3IgXG4vLy8gZ2Fwcywgc3BhY2VycywgYW5kIGd1dHRlcnMgcmVsYXRpdmUgdG8gdGhlIGJhc2UgdmFsdWVzIGRlZmluZWQgYmVsb3cuIFxuXG5AZm9yd2FyZCAnY3JlYXRlL3VuaXRzJyB3aXRoIChcblxuICAvLy8gR2FwcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8vIEdhcHMgYXJlIGFuIGFic29sdXRlIHVuaXQgKHB4KSBpbnRlbmRlZCB0byBiZSB1c2VkIG9uIGluZGl2aWR1YWwgZWxlbWVudHMgd2l0aGluIGEgY29tcG9uZW50ZWQuIFxuICAvLy8gVGhlIGFpbSBpcyB0byByZXRhaW4gY29uc2lzdGFudCBzcGFjaW5nIGFtb25nc3QgYmxvY2ssIGlubGluZSwgdGFibGUgYW5kIGdyb3VwIGh0bWwgZWxlbWVudHMuXG4gIC8vLyBHYXBzIG11c3QgdXNlIGFuIGFic29sdXRlIGFuZCBzdGF0aWMgJ3B4JyB1bml0LiBJdCBzaG91bGQgbm90IGJlIHJlbGF0aXZlIHRvIGFueVxuICAvLy8gcGFyZW50IGNvbnRhaW5lciBhbmQgaXMgbm90IGludGVuZGVkIGZvciBmb250IHNpemVzLCBzbyB5b3Ugc2hvdWxkIG5vdCB1c2UgJ3JlbScgb3IgJ2VtJy4gXG4gIC8vLyBAcmVzdWx0IDogJGdhcDAsICRnYXAsICRnYXAyLCAkZ2FwMywgJGdhcDQsICRnYXA1ICwgJGdhcDYsICRnYXAwLSwgJGdhcC0sICRnYXAyLSwgJGdhcDMtLCAkZ2FwNC0sICRnYXA1LSBhbmQgJGdhcDYtXG4gIFxuICAkZ2FwIDogMTZweCxcblxuICAvLyBTcGFjZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyBTcGFjZXJzIGFyZSBhIHJlbGF0aXZlIHZpZXdwb3J0IGhlaWdodCAodmgpIHVuaXQgaW50ZW5kZWQgdG8gYmUgdXNlZCBvbiBhIGNvbXBvbmVudGVkIGxldmVsLlxuICAvLy8gVGhlIGFpbSBpcyB0byByZXRhaW4gY29uc2lzdGFudCB0b3AgYW5kIGJvdHRvbSBzcGFjaW5nIGFtb25nc3QgJ3NlY3Rpb24nIGFuZCAnY3VzdG9tJyBlbGVtZW50cy5cbiAgLy8vIFNwYWNlcnMgd2lsbCBlcXVhdGUgdG8gc29tZXRoaW5nIGxpa2U6IGAoJHNwYWNlciAqIHgpICsgJGdhcGAuIFxuICAvLy8gVGhlICckZ2FwJyBpcyBhZGRlZCBzbyB0aGF0IHZoIHNwYWNpbmcgd2lsbCBuZXZlciBzY2FsZSB0b28gY2xvc2UgdG8gMHB4LiBcbiAgLy8vIFNwYWNlcnMgbXVzdCB1c2UgYSAndmgnIHVuaXQgc28gdGhleSBhcmUgcmVsYXRpdmUgdG8gdGhlIHVzZXJzIHZpZXdwb3J0IGhlaWdodC13aXNlLlxuICAvLy8gVGhleSBzaG91bGQgcHJpbWFyaWx5IGJlIHVzZWQgZm9yIHRoZSB0b3AgYW5kIGJvdHRvbSBtYXJnaW5zIG9uIGEgY29tcG9uZW50IGxldmVsLlxuICAvLy8gQHJlc3VsdCA6ICRzcGFjZXIwLCAkc3BhY2VyLCAkc3BhY2VyLCAkc3BhY2VyLCAkc3BhY2VyNCwgJHNwYWNlcjUsICRzcGFjZXI2LCAkc3BhY2VyMC0sICRzcGFjZXItLCAkc3BhY2VyLSwgJHNwYWNlci0sICRzcGFjZXI0LSwgJHNwYWNlcjUtIGFuZCAkc3BhY2VyNi1cbiAgXG4gICRzcGFjZXIgOiA0dmgsIFxuXG4gIC8vIEd1dHRlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIEd1dHRlcnMgYXJlIGEgcmVsYXRpdmUgdmlld3BvcnQgd2lkdGggKHZ3KSB1bml0IGludGVuZGVkIHRvIGJlIHVzZWQgb24gYSBwYXJlbnQgbGV2ZWw7XG4gIC8vIGZvciBleGFtcGxlLCBhIHdyYXBwZXIgY29udGFpbmVyIG9yIGJvZHkgd2l0aCBuZXN0ZWQgY29tcG9uZW50cy4gXG4gIC8vIFRoZSBhaW0gaXMgdG8gcmV0YWluIGNvbnNpc3RhbnQgbGVmdCBhbmQgcmlnaHQgc3BhY2luZyBhbW9uZ3N0ICdzZWN0aW9uJyBhbmQgJ2N1c3RvbScgZWxlbWVudHMuXG4gIC8vLyBHdXR0ZXJzIHdpbGwgZXF1YXRlIHRvIHNvbWV0aGluZyBsaWtlOiBgKCRndXR0ZXIgKiB4KSArICRnYXBgLiBcbiAgLy8vIFRoZSAnJGdhcCcgaXMgYWRkZWQgc28gdGhhdCB2dyBzcGFjaW5nIHdpbGwgbmV2ZXIgc2NhbGUgdG9vIGNsb3NlIHRvIDBweC4gXG4gIC8vLyBHdXR0ZXJzIG11c3QgdXNlIGEgJ3Z3JyB1bml0IHNvIHRoZXkgYXJlIHJlbGF0aXZlIHRvIHRoZSB1c2VycyB2aWV3cG9ydCB3aWR0aC13aXNlLiBcbiAgLy8vIFRoZXkgc2hvdWxkIHByaW1hcmlseSBiZSB1c2VkIGZvciB0aGUgbGVmdCBhbmQgcmlnaHQgcGFkZGluZyBvciBtYXJnaW4gb24gYSBwYXJlbnQgbGV2ZWwuXG4gIC8vLyBBcyBhIHN1Z2dlc3Rpb24sIHRoaXMgZ3V0dGVyIGNvbnN0YW50IHNob3VsZCBiZSBoYWxmIHRoZSBzaXplIG9mIHRoZSBzcGFjZXIgdmFsdWUuXG4gIC8vLyBAcmVzdWx0IDogJGd1dHRlcjAsICRndXR0ZXIsICRndXR0ZXIyLCAkZ3V0dGVyMywgJGd1dHRlcjQsICRndXR0ZXI1LCAkZ3V0dGVyNiwgJGd1dHRlcjAtLCAkZ3V0dGVyLSwgJGd1dHRlcjItLCAkZ3V0dGVyMy0sICRndXR0ZXI0LSwgJGd1dHRlcjUtIGFuZCAkZ3V0dGVyNi1cbiAgXG4gICRndXR0ZXIgOiAzdncsIFxuXG4pO1xuXG4kYm9yZGVyLXJhZGl1cyA6IHZhcigtLWJvcmRlci1yYWRpdXMsIDZweCk7XG4kc2lkZWJhci13aWR0aCA6IDUwMHB4OyIsIi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vXG4vLy8gSG92ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNob3ZlclxuLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy9cblxuQG1peGluIGhvdmVyKCRzZWxlY3RvciA6IG51bGwpIHtcbiAgQG1lZGlhICggaG92ZXIgOiBob3ZlciApIHtcbiAgICAmOmhvdmVyIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG4gIEBpZiAkc2VsZWN0b3Ige1xuICAgICYjeyRzZWxlY3Rvcn0geyBcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxuXG59Il19 */