:root {
  --fontstack-prefix: -apple-system, BlinkMacSystemFont,;
  --fontstack-sans-serif: "Helvetica Neue", "Segoe UI", sans-serif;
  --fontstack-serif: Georgia, serif;
  --fontstack-monospace: Menlo, Consolas, monospace;
  --fontstack-default: var(--fontstack-prefix) var(--fontstack-sans-serif);
  --font-size-base: 1rem;
  --font-size-factor: 1vw;
  --font-size: 1.6vw;
  --font-features: "halt", "ss01", "ss02";
  --line-height: calc(20 / 14);
  --heading-letter-spacing: -.04em;
  --breakpoint-lg: 1600px;
  --breakpoint-md: 1080px;
  --breakpoint-sm: 640px;
  --breakpoint-xs: 400px;
  --space-lg: 24vw;
  --space-md: 8vw;
  --space-sm: 4vw;
  --space-xs: 1.2vw;
  --border-lg: 4px;
  --border-md: 2px;
  --border-sm: 1px;
  --nav-padding: .75vmax;
  --nav-item-space: 1.4vmax;
  --text-color-h: 318;
  --text-color-s: 30%;
  --text-color-l: 10%;
  --text-color-hsl: var(--text-color-h), var(--text-color-s), var(--text-color-l);
  --text-color: hsl(var(--text-color-hsl));
  --text-color-0: hsla(var(--text-color-hsl), 0);
  --text-color-3: hsla(var(--text-color-hsl), .03);
  --text-color-5: hsla(var(--text-color-hsl), .05);
  --text-color-7: hsla(var(--text-color-hsl), .07);
  --text-color-10: hsla(var(--text-color-hsl), .1);
  --text-color-20: hsla(var(--text-color-hsl), .2);
  --text-color-30: hsla(var(--text-color-hsl), .3);
  --text-color-40: hsla(var(--text-color-hsl), .4);
  --text-color-50: hsla(var(--text-color-hsl), .5);
  --text-color-60: hsla(var(--text-color-hsl), .6);
  --text-color-70: hsla(var(--text-color-hsl), .7);
  --text-color-80: hsla(var(--text-color-hsl), .8);
  --text-color-90: hsla(var(--text-color-hsl), .9);
  --text-color-light: hsl(var(--text-color-h), var(--text-color-s), calc(var(--text-color-l) / .9));
  --text-color-dark: hsl(var(--text-color-h), var(--text-color-s), calc(var(--text-color-l) * .9));
  --link-color-h: 318;
  --link-color-s: 100%;
  --link-color-l: 50%;
  --link-color-hsl: var(--link-color-h), var(--link-color-s), var(--link-color-l);
  --link-color: hsl(var(--link-color-hsl));
  --link-color-0: hsla(var(--link-color-hsl), 0);
  --link-color-3: hsla(var(--link-color-hsl), .03);
  --link-color-5: hsla(var(--link-color-hsl), .05);
  --link-color-7: hsla(var(--link-color-hsl), .07);
  --link-color-10: hsla(var(--link-color-hsl), .1);
  --link-color-20: hsla(var(--link-color-hsl), .2);
  --link-color-30: hsla(var(--link-color-hsl), .3);
  --link-color-40: hsla(var(--link-color-hsl), .4);
  --link-color-50: hsla(var(--link-color-hsl), .5);
  --link-color-60: hsla(var(--link-color-hsl), .6);
  --link-color-70: hsla(var(--link-color-hsl), .7);
  --link-color-80: hsla(var(--link-color-hsl), .8);
  --link-color-90: hsla(var(--link-color-hsl), .9);
  --link-color-light: hsl(var(--link-color-h), var(--link-color-s), calc(var(--link-color-l) / .9));
  --link-color-dark: hsl(var(--link-color-h), var(--link-color-s), calc(var(--link-color-l) * .9));
  --bg-color-h: 318;
  --bg-color-s: 30%;
  --bg-color-l: 100%;
  --bg-color-hsl: var(--bg-color-h), var(--bg-color-s), var(--bg-color-l);
  --bg-color: hsl(var(--bg-color-hsl));
  --bg-color-0: hsla(var(--bg-color-hsl), 0);
  --bg-color-3: hsla(var(--bg-color-hsl), .03);
  --bg-color-5: hsla(var(--bg-color-hsl), .05);
  --bg-color-7: hsla(var(--bg-color-hsl), .07);
  --bg-color-10: hsla(var(--bg-color-hsl), .1);
  --bg-color-20: hsla(var(--bg-color-hsl), .2);
  --bg-color-30: hsla(var(--bg-color-hsl), .3);
  --bg-color-40: hsla(var(--bg-color-hsl), .4);
  --bg-color-50: hsla(var(--bg-color-hsl), .5);
  --bg-color-60: hsla(var(--bg-color-hsl), .6);
  --bg-color-70: hsla(var(--bg-color-hsl), .7);
  --bg-color-80: hsla(var(--bg-color-hsl), .8);
  --bg-color-90: hsla(var(--bg-color-hsl), .9);
  --bg-color-light: hsl(var(--bg-color-h), var(--bg-color-s), calc(var(--bg-color-l) / .9));
  --bg-color-dark: hsl(var(--bg-color-h), var(--bg-color-s), calc(var(--bg-color-l) * .9));
  --code-color-h: calc(var(--link-color-h) + 30);
  --code-color-s: calc(var(--link-color-s) * .2 + 30%);
  --code-color-l: var(--link-color-l);
  --code-color-hsl: var(--code-color-h), var(--code-color-s), var(--code-color-l);
  --code-color: hsl(var(--code-color-hsl));
  --code-color-0: hsla(var(--code-color-hsl), 0);
  --code-color-3: hsla(var(--code-color-hsl), .03);
  --code-color-5: hsla(var(--code-color-hsl), .05);
  --code-color-7: hsla(var(--code-color-hsl), .07);
  --code-color-10: hsla(var(--code-color-hsl), .1);
  --code-color-20: hsla(var(--code-color-hsl), .2);
  --code-color-30: hsla(var(--code-color-hsl), .3);
  --code-color-40: hsla(var(--code-color-hsl), .4);
  --code-color-50: hsla(var(--code-color-hsl), .5);
  --code-color-60: hsla(var(--code-color-hsl), .6);
  --code-color-70: hsla(var(--code-color-hsl), .7);
  --code-color-80: hsla(var(--code-color-hsl), .8);
  --code-color-90: hsla(var(--code-color-hsl), .9);
  --code-color-light: hsl(var(--code-color-h), var(--code-color-s), calc(var(--code-color-l) / .9));
  --code-color-dark: hsl(var(--code-color-h), var(--code-color-s), calc(var(--code-color-l) * .9)); }

*,
*::before,
*::after {
  padding: 0;
  margin: 0;
  box-sizing: border-box; }

html {
  font-size: 100%;
  -webkit-text-size-adjust: none;
      -ms-text-size-adjust: none;
          text-size-adjust: none;
  text-rendering: optimizelegibility;
  image-rendering: optimizequality;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  background: var(--bg-color); }

body {
  --space-body: var(--space-lg);
  padding-top: 0;
  padding-bottom: 0;
  padding-left: var(--space-body);
  padding-right: var(--space-body);
  margin: 0 auto 0;
  font-family: var(--fontstack-default);
  font-size: var(--font-size);
  font-feature-settings: var(--font-features);
  line-height: var(--line-height);
  hanging-punctuation: first allow-end;
  color: var(--text-color);
  background: var(--bg-color);
  -webkit-transition: all .2s ease;
  transition: all .2s ease; }
  @media (max-width: 1080px) {
    body {
      --space-body: var(--space-md);
      font-size: calc(var(--font-size) * 1.4); } }
  @media (max-width: 640px) {
    body {
      --space-body: var(--space-sm);
      font-size: calc(var(--font-size) * 2.4); } }
  @media (max-width: 400px) {
    body {
      font-size: calc(var(--font-size) * 3.2); } }

input,
button,
select,
textarea {
  color: inherit;
  font-family: inherit;
  font-size: inherit;
  line-height: inherit; }

button,
input,
select[multiple],
textarea {
  background-image: none; }

a,
button {
  color: var(--text-color);
  text-decoration: none;
  -webkit-transition: color .5s ease, border-color .5s ease, background .5s ease, opacity 1.5s ease;
  transition: color .5s ease, border-color .5s ease, background .5s ease, opacity 1.5s ease; }
  a:hover, a:focus,
  button:hover,
  button:focus {
    -webkit-transition: color .1s ease, border-color .1s ease, background .1s ease, opacity .1s ease;
    transition: color .1s ease, border-color .1s ease, background .1s ease, opacity .1s ease;
    text-decoration: underline; }
  a[disabled],
  button[disabled] {
    opacity: .4;
    cursor: not-allowed; }

button {
  -webkit-appearance: none;
     -moz-appearance: none;
          appearance: none;
  cursor: pointer;
  background: none;
  border: none;
  outline: none; }

img,
hr {
  border: 0; }

del {
  text-decoration: line-through; }

::-webkit-input-placeholder {
  color: var(--text-color);
  opacity: .2; }

::-moz-placeholder {
  color: var(--text-color);
  opacity: .2; }

:-ms-input-placeholder {
  color: var(--text-color);
  opacity: .2; }

::-ms-input-placeholder {
  color: var(--text-color);
  opacity: .2; }

::placeholder {
  color: var(--text-color);
  opacity: .2; }

:focus::-webkit-input-placeholder {
  color: var(--link-color); }

:focus::-moz-placeholder {
  color: var(--link-color); }

:focus:-ms-input-placeholder {
  color: var(--link-color); }

:focus::-ms-input-placeholder {
  color: var(--link-color); }

:focus::placeholder {
  color: var(--link-color); }

.navigation {
  padding-top: var(--nav-padding);
  padding-bottom: var(--nav-padding);
  margin-right: calc(var(--nav-item-space) * -1);
  margin-left: calc(var(--nav-item-space) * -1);
  font-size: 90%;
  font-weight: bold; }
  .navigation li {
    display: inline-block;
    line-height: 2; }
    .navigation li a {
      padding: 0.5em var(--nav-item-space); }
      .navigation li a:hover, .navigation li a:focus {
        color: var(--link-color);
        text-decoration: none; }

.current a {
  color: var(--link-color); }

body:hover .latest {
  color: var(--link-color) !important; }

.content {
  margin-bottom: 16vmin; }
  .content::before, .content::after {
    display: table;
    content: ""; }
  .content::after {
    clear: both; }
  .content article > *:last-child {
    margin-bottom: 0 !important; }
    .content article > *:last-child > *:last-child {
      margin-bottom: 0 !important; }
      .content article > *:last-child > *:last-child > *:last-child {
        margin-bottom: 0 !important; }
        .content article > *:last-child > *:last-child > *:last-child > *:last-child {
          margin-bottom: 0 !important; }
  .content .post-content > *:first-child,
  .content .page-content > *:first-child {
    margin-top: 0; }
    .content .post-content > *:first-child > *:first-child,
    .content .page-content > *:first-child > *:first-child {
      margin-top: 0; }
  .content a {
    font-weight: bold; }
    .content a:has(> code) {
      -webkit-text-decoration-color: var(--code-color);
              text-decoration-color: var(--code-color); }
  .content p {
    margin-bottom: 1.6rem;
    line-height: calc(var(--line-height) * 1.2); }
  .content header {
    --header-height: 100vh;
    --space-header: var(--space-lg);
    display: -webkit-box;
    display: flex;
    min-height: calc(var(--header-height) - (var(--nav-padding) * 4) - (var(--nav-item-space) * 4) - (1ex * .9 * 2));
    padding-top: 10vmin;
    padding-bottom: 10vmin;
    margin-bottom: 16vmin;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
            flex-direction: column;
    -webkit-box-pack: center;
            justify-content: center;
    background: var(--text-color-3);
    padding-left: var(--space-header);
    padding-right: var(--space-header);
    margin-left: calc(var(--space-header) * -1);
    margin-right: calc(var(--space-header) * -1); }
    @media (max-width: 1080px) {
      .content header {
        --header-height: 70vh;
        --space-header: var(--space-md);
        padding-top: 16vmin;
        padding-bottom: 16vmin; } }
    @media (max-width: 640px) {
      .content header {
        --space-header: var(--space-sm); } }
    .content header h1 {
      font-size: 360%;
      font-weight: bold;
      letter-spacing: var(--heading-letter-spacing);
      margin-left: -2px;
      -webkit-hyphens: none;
          -ms-hyphens: none;
              hyphens: none;
      line-height: 1.1; }
      @media (max-width: 640px) {
        .content header h1 {
          font-size: 280%; } }
      .content header h1 svg,
      .content header h1 img {
        display: block;
        max-width: 100%;
        margin-left: 0;
        margin-right: 0;
        margin-bottom: .3em; }
        @media (max-width: 640px) {
          .content header h1 svg,
          .content header h1 img {
            width: 100% !important;
            height: 100% !important; } }
    .content header h2 {
      margin: 1.2vmin 0 0; }
    .content header .image-title {
      text-indent: -999999px;
      line-height: 0; }
    .content header small {
      display: block;
      margin-top: 2vmin; }
  .content h2,
  .content h3,
  .content h4,
  .content h5,
  .content h6 {
    margin: 10vmin 0 1rem;
    font-size: 72%;
    font-weight: normal;
    opacity: .5; }
  .content ul,
  .content ol {
    margin-bottom: 1.8rem;
    list-style: none;
    counter-reset: list; }
    @media (max-width: 640px) {
      .content ul,
      .content ol {
        margin-left: 1em; } }
    .content ul li,
    .content ol li {
      line-height: calc(var(--line-height) * 1.2); }
      .content ul li::before,
      .content ol li::before {
        position: absolute;
        display: -webkit-box;
        display: flex;
        -webkit-box-pack: end;
                justify-content: flex-end;
        width: 4em;
        margin-top: 0;
        margin-left: -4em;
        text-align: right;
        opacity: .4;
        pointer-events: none; }
      .content ul li > ul,
      .content ul li > ol,
      .content ol li > ul,
      .content ol li > ol {
        margin-left: 1em;
        margin-bottom: 0; }
  .content ul li::before {
    content: "-";
    padding-right: .5em; }
  .content ol li::before {
    counter-increment: list;
    content: counter(list) ".";
    padding-right: .25em; }
  .content dl {
    line-height: calc(var(--line-height) * 1.2); }
    @media (max-width: 640px) {
      .content dl {
        margin-left: 1em; } }
    .content dl dt::before {
      position: absolute;
      width: 1em;
      margin-left: -1em;
      content: "-";
      opacity: .6;
      pointer-events: none; }
    .content dl dd {
      margin-bottom: 1.8rem; }
  .content img,
  .content video,
  .content iframe,
  .content .browser {
    --space-deco: var(--space-md);
    display: block;
    width: calc(100% + var(--space-deco) * 2);
    margin-left: calc(var(--space-deco) * -1);
    margin-right: calc(var(--space-deco) * -1);
    margin-bottom: 1.8rem; }
    @media (max-width: 1080px) {
      .content img,
      .content video,
      .content iframe,
      .content .browser {
        --space-deco: var(--space-md); } }
    @media (max-width: 640px) {
      .content img,
      .content video,
      .content iframe,
      .content .browser {
        --space-deco: var(--space-sm); } }
    .content img.size-fit, .content img.no-enlarge,
    .content video.size-fit,
    .content video.no-enlarge,
    .content iframe.size-fit,
    .content iframe.no-enlarge,
    .content .browser.size-fit,
    .content .browser.no-enlarge {
      margin-left: 0;
      margin-right: 0;
      max-width: 100%;
      width: auto; }
    .content img.size-large,
    .content video.size-large,
    .content iframe.size-large,
    .content .browser.size-large {
      --space-deco: var(--space-lg); }
      @media (max-width: 1080px) {
        .content img.size-large,
        .content video.size-large,
        .content iframe.size-large,
        .content .browser.size-large {
          --space-deco: var(--space-md); } }
      @media (max-width: 640px) {
        .content img.size-large,
        .content video.size-large,
        .content iframe.size-large,
        .content .browser.size-large {
          --space-deco: var(--space-sm); } }
    .content img.size-small,
    .content video.size-small,
    .content iframe.size-small,
    .content .browser.size-small {
      --space-deco: var(--space-xs); }
      @media (max-width: 1080px) {
        .content img.size-small,
        .content video.size-small,
        .content iframe.size-small,
        .content .browser.size-small {
          --space-deco: var(--space-md); } }
      @media (max-width: 640px) {
        .content img.size-small,
        .content video.size-small,
        .content iframe.size-small,
        .content .browser.size-small {
          --space-deco: var(--space-sm); } }
    .content img.size-left,
    .content video.size-left,
    .content iframe.size-left,
    .content .browser.size-left {
      float: left;
      max-width: 36vw;
      margin-top: calc(var(--space-xs) / 2);
      margin-right: var(--space-xs);
      margin-bottom: calc(var(--space-xs) / 2); }
      @media (max-width: 1080px) {
        .content img.size-left,
        .content video.size-left,
        .content iframe.size-left,
        .content .browser.size-left {
          float: none;
          max-width: none;
          margin-top: auto;
          margin-right: auto;
          margin-bottom: auto; } }
    .content img.size-right,
    .content video.size-right,
    .content iframe.size-right,
    .content .browser.size-right {
      float: right;
      max-width: 36vw;
      margin-top: calc(var(--space-xs) / 2);
      margin-left: var(--space-xs);
      margin-bottom: calc(var(--space-xs) / 2); }
      @media (max-width: 1080px) {
        .content img.size-right,
        .content video.size-right,
        .content iframe.size-right,
        .content .browser.size-right {
          float: none;
          max-width: none;
          margin-top: auto;
          margin-left: auto;
          margin-bottom: auto; } }
    .content img.no-resize, .content img.noresize, .content img.size-original,
    .content video.no-resize,
    .content video.noresize,
    .content video.size-original,
    .content iframe.no-resize,
    .content iframe.noresize,
    .content iframe.size-original,
    .content .browser.no-resize,
    .content .browser.noresize,
    .content .browser.size-original {
      width: unset;
      max-width: 100%;
      margin-left: unset;
      margin-right: unset; }
      .content img.no-resize.center, .content img.noresize.center, .content img.size-original.center,
      .content video.no-resize.center,
      .content video.noresize.center,
      .content video.size-original.center,
      .content iframe.no-resize.center,
      .content iframe.noresize.center,
      .content iframe.size-original.center,
      .content .browser.no-resize.center,
      .content .browser.noresize.center,
      .content .browser.size-original.center {
        margin-left: auto;
        margin-right: auto; }
  .content blockquote {
    position: relative;
    margin-bottom: 2.8rem;
    margin-left: calc(var(--space-xs) * -1);
    font-size: 90%; }
    @media (max-width: 640px) {
      .content blockquote {
        margin-left: 0; } }
    .content blockquote > p {
      padding-left: var(--space-xs);
      border-left: var(--border-md) solid;
      padding-bottom: 1.6em;
      margin-bottom: 0;
      opacity: .6; }
      .content blockquote > p:last-of-type {
        padding-bottom: 0;
        margin-bottom: .4em; }
      @media (max-width: 640px) {
        .content blockquote > p {
          padding-left: calc(var(--space-sm) - var(--border-md));
          padding-right: var(--space-sm);
          margin-left: calc(var(--space-sm) * -1);
          margin-right: calc(var(--space-sm) * -1); } }
    .content blockquote footer::before, .content blockquote footer::after {
      display: table;
      content: ""; }
    .content blockquote footer::after {
      clear: both; }
    .content blockquote cite {
      float: right;
      font-style: normal; }
      .content blockquote cite::before {
        content: "\2500\2500\00a0"; }
  .content details {
    margin-bottom: 1.8rem; }
    .content details summary {
      position: relative;
      list-style: none;
      line-height: calc(var(--line-height) * 1.2);
      outline: none;
      cursor: pointer; }
      @media (max-width: 640px) {
        .content details summary {
          margin-left: 1em; } }
      .content details summary::-webkit-details-marker {
        display: none; }
      .content details summary::before {
        content: "+";
        position: absolute;
        display: -webkit-box;
        display: flex;
        -webkit-box-pack: center;
                justify-content: center;
        width: 1ex;
        left: -.5em;
        margin-top: 0;
        margin-left: -1ex;
        text-align: right;
        opacity: .4;
        -webkit-transition: opacity .2s ease, -webkit-transform .2s ease;
        transition: opacity .2s ease, -webkit-transform .2s ease;
        transition: opacity .2s ease, transform .2s ease;
        transition: opacity .2s ease, transform .2s ease, -webkit-transform .2s ease;
        -webkit-transform-origin: center center;
                transform-origin: center center;
        font-feature-settings: "case"; }
    .content details[open] summary::before {
      opacity: 1;
      -webkit-transform: rotate(45deg);
              transform: rotate(45deg); }
  .content hr::before {
    display: block;
    content: '';
    width: 3px;
    height: 3px;
    margin: 2em auto;
    border-radius: 50%;
    background: var(--text-color);
    box-shadow: 24px 0 0 0 var(--text-color), -24px 0 0 0 var(--text-color); }
  .content sup {
    font-size: 75%; }
  .content pre,
  .content code {
    font-family: var(--fontstack-monospace);
    color: var(--code-color); }
  .content pre {
    background: var(--code-color-5); }
  .content code {
    font-size: 92%;
    overflow-wrap: break-word; }
  .content pre,
  .content .highlight > pre,
  .content .highlighter-rouge pre.highlight {
    --space-code: var(--space-xs);
    padding-top: var(--space-xs);
    padding-bottom: var(--space-xs);
    padding-left: var(--space-code);
    padding-right: var(--space-code);
    margin-left: calc(var(--space-code) * -1);
    margin-right: calc(var(--space-code) * -1);
    margin-bottom: 1.8rem;
    overflow-x: auto;
    font-size: 80%;
    line-height: calc(var(--line-height) * 1.2);
    -webkit-overflow-scrolling: touch; }
    @media (max-width: 1080px) {
      .content pre,
      .content .highlight > pre,
      .content .highlighter-rouge pre.highlight {
        --space-code: var(--space-md); } }
    @media (max-width: 640px) {
      .content pre,
      .content .highlight > pre,
      .content .highlighter-rouge pre.highlight {
        --space-code: var(--space-sm); } }
    .content pre code,
    .content .highlight > pre code,
    .content .highlighter-rouge pre.highlight code {
      overflow-wrap: normal; }
  .content form input {
    display: block;
    width: 100%;
    padding: 1vmin 0;
    margin: 0 0 1.8rem;
    border: none;
    border-bottom: 1px solid var(--text-color);
    background: inherit;
    border-radius: 0;
    outline: none;
    -webkit-transition: padding .2s ease;
    transition: padding .2s ease; }
    .content form input:focus {
      border-color: var(--text-color); }
  .content input:focus:required:invalid:focus,
  .content textarea:focus:required:invalid:focus,
  .content select:focus:required:invalid:focus {
    color: var(--link-color);
    border-color: var(--link-color);
    box-shadow: none; }
  .content table {
    --space-table: var(--space-xs);
    border-collapse: collapse;
    border-spacing: 0;
    font-size: 90%;
    width: 100%;
    margin-left: calc(var(--space-table) * -1);
    margin-right: calc(var(--space-table) * -1);
    margin-bottom: 1.8rem; }
    @media (max-width: 1080px) {
      .content table {
        --space-table: var(--space-md);
        width: calc(100% + var(--space-table) * 2); } }
    @media (max-width: 640px) {
      .content table {
        --space-table: var(--space-sm);
        width: calc(100% + var(--space-table) * 2); } }
    .content table th,
    .content table td {
      --space-table-cell: var(--space-xs);
      padding: 0.6em var(--space-xs); }
      .content table th:first-child,
      .content table td:first-child {
        padding-left: var(--space-table-cell); }
      .content table th:last-child,
      .content table td:last-child {
        padding-right: var(--space-table-cell); }
      @media (max-width: 1080px) {
        .content table th,
        .content table td {
          --space-table-cell: var(--space-md); } }
      @media (max-width: 640px) {
        .content table th,
        .content table td {
          --space-table-cell: var(--space-sm); } }
    .content table th {
      border-bottom: var(--border-md) solid var(--text-color-5);
      text-align: left; }
    .content table td {
      border-top: var(--border-sm) solid var(--text-color-5); }

:lang(zh),
:lang(ja) {
  text-align: justify; }
  :lang(zh) header,
  :lang(zh) header *,
  :lang(ja) header,
  :lang(ja) header * {
    text-align: start; }
  :lang(zh) ruby rt,
  :lang(ja) ruby rt {
    text-align: start; }

.post-modified-date {
  font-size: 75%;
  opacity: .5; }

.largetype {
  font-size: 360%;
  font-weight: bold;
  letter-spacing: var(--heading-letter-spacing);
  font-size: 200%;
  margin-bottom: 1.8rem !important; }

.browser {
  position: relative;
  padding-top: 24px;
  background: rgba(255, 255, 255, 0.1);
  border-radius: 5px 5px 0 0;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.05); }
  @media (max-width: 1080px), (max-width: 640px) {
    .browser {
      border-radius: 0; } }
  .browser::before {
    position: absolute;
    top: 8px;
    left: 10px;
    display: block;
    width: 8px;
    height: 8px;
    background: #fcdddf;
    border-radius: 50%;
    content: "";
    box-shadow: 16px 0 0 0 rgba(254, 240, 203, 0.96), 32px 0 0 0 rgba(177, 247, 185, 0.96), 0 0 0 1px rgba(156, 11, 21, 0.3), 16px 0 0 1px rgba(147, 108, 4, 0.3), 32px 0 0 1px rgba(11, 107, 22, 0.3); }
  .browser img {
    margin-left: 0;
    margin-right: 0;
    width: auto;
    max-width: 100%;
    box-shadow: 0 -1px 0 0 rgba(0, 0, 0, 0.05); }

.screenshot-mac {
  --osx-shadow-size: 56px;
  margin-left: calc(var(--osx-shadow-size) * -1);
  margin-right: calc(var(--osx-shadow-size) * -1); }
  @media (max-width: 1080px), (max-width: 640px) {
    .screenshot-mac {
      margin-left: 0;
      margin-right: 0; } }

.note,
.store,
.download {
  padding-left: var(--space-xs);
  margin-left: calc(var(--space-xs) * -1);
  border-left: var(--border-md) solid var(--link-color); }
  @media (max-width: 640px) {
    .note,
    .store,
    .download {
      padding-left: calc(var(--space-sm) - var(--border-md));
      padding-right: var(--space-sm);
      margin-left: calc(var(--space-sm) * -1);
      margin-right: calc(var(--space-sm) * -1); } }

.footnotes {
  font-size: 80%; }
  .footnotes::before {
    display: block;
    content: '';
    width: 3px;
    height: 3px;
    margin: 2em auto;
    border-radius: 50%;
    background: var(--text-color);
    box-shadow: 24px 0 0 0 var(--text-color), -24px 0 0 0 var(--text-color); }

:target [rev=footnote],
:target [rel=footnote],
:target .reversefootnote,
:target .footnote {
  color: var(--link-color); }

.list {
  display: block;
  margin: 0 0 .4rem; }
  .list h1 {
    font-size: 360%;
    font-weight: bold;
    letter-spacing: var(--heading-letter-spacing);
    font-size: 200%;
    line-height: 1.1;
    opacity: 1;
    margin: 0; }
    @media (max-width: 640px) {
      .list h1 {
        font-size: 180%; } }
  @media (max-width: 640px) {
    .list .external {
      display: none; } }

.external .dot {
  display: inline-block;
  width: .7rem;
  height: .7rem;
  margin: 0 .1em;
  vertical-align: middle;
  background: var(--text-color);
  border-radius: 50%;
  -webkit-transition: -webkit-transform .4s ease;
  transition: -webkit-transform .4s ease;
  transition: transform .4s ease;
  transition: transform .4s ease, -webkit-transform .4s ease; }
  .external .dot--post {
    margin-left: 1rem; }

.external:hover .dot, .external:focus .dot {
  -webkit-transform: scale(1.4);
          transform: scale(1.4); }

.of-case {
  font-feature-settings: "case"; }

.footer {
  padding: 0 0 16vmin;
  margin-right: calc(var(--nav-item-space) * -1);
  margin-left: calc(var(--nav-item-space) * -1);
  font-size: 80%;
  text-transform: lowercase; }
  .footer ul li {
    display: inline-block;
    line-height: 1.8; }
    .footer ul li a {
      padding: 0.5em var(--nav-item-space); }

.gist {
  font-size: 80% !important; }
  .gist code, .gist pre {
    padding: 0;
    color: inherit;
    background-color: transparent; }
  .gist .gist-data {
    font-family: var(--fontstack-monospace) !important; }
    .gist .gist-data .file-data {
      font-size: 100% !important; }
      .gist .gist-data .file-data > table {
        margin-bottom: 0 !important; }
  .gist .highlight {
    font-size: 90% !important; }
  .gist .markdown-body {
    font-size: 100% !important;
    padding: 1em !important; }

@media print {
  *,
  *::before,
  *::after {
    background: transparent !important;
    color: #000 !important;
    box-shadow: none !important;
    text-shadow: none !important; }
  body {
    padding: 10mm !important;
    margin: 0 !important;
    font-size: calc(var(--font-size) * 1.35); }
  a,
  a:visited {
    text-decoration: none; }
  .content header {
    min-height: 0;
    padding-bottom: 0; }
  .content .post-content,
  .content .page-content {
    max-width: 100% !important; }
    .content .post-content a[href]::after,
    .content .page-content a[href]::after {
      content: " (" attr(href) ")";
      font-weight: normal;
      opacity: .5; }
    .content .post-content a[href^="#"]::after,
    .content .post-content a[href^="javascript:"]::after,
    .content .page-content a[href^="#"]::after,
    .content .page-content a[href^="javascript:"]::after {
      content: ""; }
    .content .post-content abbr[title]::after,
    .content .page-content abbr[title]::after {
      content: " (" attr(title) ")";
      font-weight: normal; }
  pre,
  blockquote {
    page-break-inside: avoid; }
  thead {
    display: table-header-group; }
  tr,
  img {
    page-break-inside: avoid; }
  img {
    max-width: 100% !important; }
  p,
  h2,
  h3,
  h4,
  h5,
  h6 {
    orphans: 3;
    widows: 3; }
  h2,
  h3 {
    page-break-after: avoid; }
  .navigation,
  .footer {
    display: none; } }

:root {
  --rdmz-h: var(--code-color-h, 254);
  --rdmz-s: var(--code-color-s, 80%);
  --rdmz-l: var(--code-color-l, 39%); }

.highlight > pre,
.highlighter-rouge pre.highlight {
  background: hsla(var(--rdmz-h), var(--rdmz-s), var(--rdmz-l), 0.03); }

.highlight .err,
.highlighter-rouge .err {
  background-color: hsla(var(--rdmz-h), calc(var(--rdmz-s) * 2), var(--rdmz-l), 0.1); }

.highlight .c,
.highlighter-rouge .c {
  font-style: italic; }

.highlight .cm,
.highlighter-rouge .cm {
  font-style: italic; }

.highlight .cp,
.highlighter-rouge .cp {
  font-weight: bold; }

.highlight .c1,
.highlighter-rouge .c1 {
  font-style: italic; }

.highlight .cs,
.highlighter-rouge .cs {
  font-weight: bold;
  font-style: italic; }

.highlight .nc,
.highlighter-rouge .nc {
  font-weight: bold; }

.highlight .ne,
.highlighter-rouge .ne {
  font-weight: bold; }

.highlight .nf,
.highlighter-rouge .nf {
  font-weight: bold; }

.highlight .o,
.highlighter-rouge .o {
  font-weight: bold; }

.highlight .ow,
.highlighter-rouge .ow {
  font-weight: bold; }

.highlight .gs,
.highlighter-rouge .gs {
  font-weight: bold; }

.highlight .ge,
.highlighter-rouge .ge {
  font-style: italic; }

.highlight .k,
.highlighter-rouge .k {
  font-weight: bold; }

.highlight .kt,
.highlighter-rouge .kt {
  font-weight: bold; }

.highlight .kc,
.highlighter-rouge .kc {
  font-weight: bold; }

.highlight .kd,
.highlighter-rouge .kd {
  font-weight: bold; }

.highlight .kp,
.highlighter-rouge .kp {
  font-weight: bold; }

.highlight .kr,
.highlighter-rouge .kr {
  font-weight: bold; }

.highlight pre,
.highlight code,
.highlighter-rouge pre,
.highlighter-rouge code {
  --rdmz-h-local: var(--rdmz-h);
  color: hsl(var(--rdmz-h), var(--rdmz-s), var(--rdmz-l)); }

.highlight .err,
.highlighter-rouge .err {
  --rdmz-h-local: calc(var(--rdmz-h) + 5.3731343284);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .x,
.highlighter-rouge .x {
  --rdmz-h-local: calc(var(--rdmz-h) + 10.7462686567);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .n,
.highlighter-rouge .n {
  --rdmz-h-local: calc(var(--rdmz-h) + 16.1194029851);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .na,
.highlighter-rouge .na {
  --rdmz-h-local: calc(var(--rdmz-h) + 21.4925373134);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .nb,
.highlighter-rouge .nb {
  --rdmz-h-local: calc(var(--rdmz-h) + 26.8656716418);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .bp,
.highlighter-rouge .bp {
  --rdmz-h-local: calc(var(--rdmz-h) + 32.2388059701);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .nc,
.highlighter-rouge .nc {
  --rdmz-h-local: calc(var(--rdmz-h) + 37.6119402985);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .no,
.highlighter-rouge .no {
  --rdmz-h-local: calc(var(--rdmz-h) + 42.9850746269);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .nd,
.highlighter-rouge .nd {
  --rdmz-h-local: calc(var(--rdmz-h) + 48.3582089552);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .ni,
.highlighter-rouge .ni {
  --rdmz-h-local: calc(var(--rdmz-h) + 53.7313432836);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .ne,
.highlighter-rouge .ne {
  --rdmz-h-local: calc(var(--rdmz-h) + 59.1044776119);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .nf,
.highlighter-rouge .nf {
  --rdmz-h-local: calc(var(--rdmz-h) + 64.4776119403);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .nl,
.highlighter-rouge .nl {
  --rdmz-h-local: calc(var(--rdmz-h) + 69.8507462687);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .nn,
.highlighter-rouge .nn {
  --rdmz-h-local: calc(var(--rdmz-h) + 75.223880597);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .nx,
.highlighter-rouge .nx {
  --rdmz-h-local: calc(var(--rdmz-h) + 80.5970149254);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .nt,
.highlighter-rouge .nt {
  --rdmz-h-local: calc(var(--rdmz-h) + 85.9701492537);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .nv,
.highlighter-rouge .nv {
  --rdmz-h-local: calc(var(--rdmz-h) + 91.3432835821);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .vc,
.highlighter-rouge .vc {
  --rdmz-h-local: calc(var(--rdmz-h) + 96.7164179104);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .vg,
.highlighter-rouge .vg {
  --rdmz-h-local: calc(var(--rdmz-h) + 102.089552239);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .vi,
.highlighter-rouge .vi {
  --rdmz-h-local: calc(var(--rdmz-h) + 107.462686567);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .g,
.highlighter-rouge .g {
  --rdmz-h-local: calc(var(--rdmz-h) + 112.835820896);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .gd,
.highlighter-rouge .gd {
  --rdmz-h-local: calc(var(--rdmz-h) + 118.208955224);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .ge,
.highlighter-rouge .ge {
  --rdmz-h-local: calc(var(--rdmz-h) + 123.582089552);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .gr,
.highlighter-rouge .gr {
  --rdmz-h-local: calc(var(--rdmz-h) + 128.955223881);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .gh,
.highlighter-rouge .gh {
  --rdmz-h-local: calc(var(--rdmz-h) + 134.328358209);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .gi,
.highlighter-rouge .gi {
  --rdmz-h-local: calc(var(--rdmz-h) + 139.701492537);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .go,
.highlighter-rouge .go {
  --rdmz-h-local: calc(var(--rdmz-h) + 145.074626866);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .gp,
.highlighter-rouge .gp {
  --rdmz-h-local: calc(var(--rdmz-h) + 150.447761194);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .gs,
.highlighter-rouge .gs {
  --rdmz-h-local: calc(var(--rdmz-h) + 155.820895522);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .gu,
.highlighter-rouge .gu {
  --rdmz-h-local: calc(var(--rdmz-h) + 161.194029851);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .gt,
.highlighter-rouge .gt {
  --rdmz-h-local: calc(var(--rdmz-h) + 166.567164179);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .gl,
.highlighter-rouge .gl {
  --rdmz-h-local: calc(var(--rdmz-h) + 171.940298507);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .k,
.highlighter-rouge .k {
  --rdmz-h-local: calc(var(--rdmz-h) + 177.313432836);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .kc,
.highlighter-rouge .kc {
  --rdmz-h-local: calc(var(--rdmz-h) + 182.686567164);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .kd,
.highlighter-rouge .kd {
  --rdmz-h-local: calc(var(--rdmz-h) + 188.059701493);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .kn,
.highlighter-rouge .kn {
  --rdmz-h-local: calc(var(--rdmz-h) + 193.432835821);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .kp,
.highlighter-rouge .kp {
  --rdmz-h-local: calc(var(--rdmz-h) + 198.805970149);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .kr,
.highlighter-rouge .kr {
  --rdmz-h-local: calc(var(--rdmz-h) + 204.179104478);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .kt,
.highlighter-rouge .kt {
  --rdmz-h-local: calc(var(--rdmz-h) + 209.552238806);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .kv,
.highlighter-rouge .kv {
  --rdmz-h-local: calc(var(--rdmz-h) + 214.925373134);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .w,
.highlighter-rouge .w {
  --rdmz-h-local: calc(var(--rdmz-h) + 220.298507463);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .l,
.highlighter-rouge .l {
  --rdmz-h-local: calc(var(--rdmz-h) + 225.671641791);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .ld,
.highlighter-rouge .ld {
  --rdmz-h-local: calc(var(--rdmz-h) + 231.044776119);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .s,
.highlighter-rouge .s {
  --rdmz-h-local: calc(var(--rdmz-h) + 236.417910448);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .sb,
.highlighter-rouge .sb {
  --rdmz-h-local: calc(var(--rdmz-h) + 241.791044776);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .sc,
.highlighter-rouge .sc {
  --rdmz-h-local: calc(var(--rdmz-h) + 247.164179104);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .sd,
.highlighter-rouge .sd {
  --rdmz-h-local: calc(var(--rdmz-h) + 252.537313433);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .s2,
.highlighter-rouge .s2 {
  --rdmz-h-local: calc(var(--rdmz-h) + 257.910447761);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .se,
.highlighter-rouge .se {
  --rdmz-h-local: calc(var(--rdmz-h) + 263.28358209);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .sh,
.highlighter-rouge .sh {
  --rdmz-h-local: calc(var(--rdmz-h) + 268.656716418);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .si,
.highlighter-rouge .si {
  --rdmz-h-local: calc(var(--rdmz-h) + 274.029850746);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .sx,
.highlighter-rouge .sx {
  --rdmz-h-local: calc(var(--rdmz-h) + 279.402985075);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .sr,
.highlighter-rouge .sr {
  --rdmz-h-local: calc(var(--rdmz-h) + 284.776119403);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .s1,
.highlighter-rouge .s1 {
  --rdmz-h-local: calc(var(--rdmz-h) + 290.149253731);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .ss,
.highlighter-rouge .ss {
  --rdmz-h-local: calc(var(--rdmz-h) + 295.52238806);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .m,
.highlighter-rouge .m {
  --rdmz-h-local: calc(var(--rdmz-h) + 300.895522388);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .mf,
.highlighter-rouge .mf {
  --rdmz-h-local: calc(var(--rdmz-h) + 306.268656716);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .mh,
.highlighter-rouge .mh {
  --rdmz-h-local: calc(var(--rdmz-h) + 311.641791045);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .mi,
.highlighter-rouge .mi {
  --rdmz-h-local: calc(var(--rdmz-h) + 317.014925373);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .il,
.highlighter-rouge .il {
  --rdmz-h-local: calc(var(--rdmz-h) + 322.388059701);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .mo,
.highlighter-rouge .mo {
  --rdmz-h-local: calc(var(--rdmz-h) + 327.76119403);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .mb,
.highlighter-rouge .mb {
  --rdmz-h-local: calc(var(--rdmz-h) + 333.134328358);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .mx,
.highlighter-rouge .mx {
  --rdmz-h-local: calc(var(--rdmz-h) + 338.507462687);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .o,
.highlighter-rouge .o {
  --rdmz-h-local: calc(var(--rdmz-h) + 343.880597015);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .ow,
.highlighter-rouge .ow {
  --rdmz-h-local: calc(var(--rdmz-h) + 349.253731343);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .p,
.highlighter-rouge .p {
  --rdmz-h-local: calc(var(--rdmz-h) + 354.626865672);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .pi,
.highlighter-rouge .pi {
  --rdmz-h-local: calc(var(--rdmz-h) + 360);
  color: hsl(var(--rdmz-h-local), var(--rdmz-s), var(--rdmz-l)); }

.highlight .gd,
.highlighter-rouge .gd {
  --rdmz-h-local: 10; }

.highlight .gi,
.highlighter-rouge .gi {
  --rdmz-h-local: 150; }

.highlight .c,
.highlighter-rouge .c {
  color: hsla(calc(var(--rdmz-h) + 5.3731343284), calc(var(--rdmz-s) * .7), var(--rdmz-l), 0.6); }

.highlight .cd,
.highlighter-rouge .cd {
  color: hsla(calc(var(--rdmz-h) + 10.7462686567), calc(var(--rdmz-s) * .7), var(--rdmz-l), 0.6); }

.highlight .cm,
.highlighter-rouge .cm {
  color: hsla(calc(var(--rdmz-h) + 16.1194029851), calc(var(--rdmz-s) * .7), var(--rdmz-l), 0.6); }

.highlight .cp,
.highlighter-rouge .cp {
  color: hsla(calc(var(--rdmz-h) + 21.4925373134), calc(var(--rdmz-s) * .7), var(--rdmz-l), 0.6); }

.highlight .c1,
.highlighter-rouge .c1 {
  color: hsla(calc(var(--rdmz-h) + 26.8656716418), calc(var(--rdmz-s) * .7), var(--rdmz-l), 0.6); }

.highlight .cs,
.highlighter-rouge .cs {
  color: hsla(calc(var(--rdmz-h) + 32.2388059701), calc(var(--rdmz-s) * .7), var(--rdmz-l), 0.6); }

.highlight table,
.highlight table th,
.highlight table td,
.highlight table td pre,
.highlighter-rouge table,
.highlighter-rouge table th,
.highlighter-rouge table td,
.highlighter-rouge table td pre {
  padding: 0;
  margin: 0;
  border: none;
  background: transparent;
  font-size: 100%; }

.highlight table pre,
.highlighter-rouge table pre {
  overflow-x: visible; }

.highlight table .gutter:first-child, .highlight table .gutter:last-child,
.highlighter-rouge table .gutter:first-child,
.highlighter-rouge table .gutter:last-child {
  padding: 0 !important; }

.highlight table .gutter .lineno,
.highlighter-rouge table .gutter .lineno {
  color: hsla(var(--rdmz-h), calc(var(--rdmz-s) * .4), var(--rdmz-l), 0.4);
  -webkit-user-select: none;
     -moz-user-select: none;
      -ms-user-select: none;
          user-select: none; }

.highlight table .code,
.highlighter-rouge table .code {
  padding-left: 1em; }

:root {
  --code-color-h: calc(var(--link-color-h) + 10);
  --code-color-s: calc(var(--link-color-s) * .2 + 40%); }

.content .sub-title {
  font-size: 108%;
  opacity: .8; }
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9hcHAvYXNzZXRzL3RoZW1lcy9jdXJ0YW5hL19zY3NzL192YXJpYWJsZXMuc2NzcyIsIl9hcHAvYXNzZXRzL3RoZW1lcy9jdXJ0YW5hL19zY3NzL19yZXNldC5zY3NzIiwiX2FwcC9hc3NldHMvdGhlbWVzL2N1cnRhbmEvX3Njc3MvX21peGlucy5zY3NzIiwiX2FwcC9hc3NldHMvdGhlbWVzL2N1cnRhbmEvX3Njc3MvX2NvbW1vbi5zY3NzIiwiX2FwcC9hc3NldHMvdGhlbWVzL2N1cnRhbmEvX3Njc3MvX3BsdWdpbnMuc2NzcyIsIl9hcHAvYXNzZXRzL3RoZW1lcy9jdXJ0YW5hL19zY3NzL19wcmludC5zY3NzIiwiX2FwcC9hc3NldHMvdGhlbWVzL2N1cnRhbmEvX3Njc3MvY29tcG9uZW50cy9fcmFuZG9taXplZC5zY3NzIiwiX2FwcC9hc3NldHMvX3Njc3MvX3VzZXIuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFZQTtFQUVFLHVEQUFtQjtFQUNuQixpRUFBdUI7RUFDdkIsa0NBQWtCO0VBQ2xCLGtEQUFzQjtFQUN0Qix5RUFBb0I7RUFDcEIsdUJBQWlCO0VBQ2pCLHdCQUFtQjtFQUNuQixtQkFBWTtFQUdaLHdDQUFnQjtFQUNoQiw2QkFBYztFQUNkLGlDQUF5QjtFQUd6Qix3QkFBZ0I7RUFDaEIsd0JBQWdCO0VBQ2hCLHVCQUFnQjtFQUNoQix1QkFBZ0I7RUFFaEIsaUJBQVc7RUFDWCxnQkFBVztFQUNYLGdCQUFXO0VBQ1gsa0JBQVc7RUFFWCxpQkFBWTtFQUNaLGlCQUFZO0VBQ1osaUJBQVk7RUFHWix1QkFBYztFQUNkLDBCQUFpQjtFQUdqQixvQkFBZTtFQUNmLG9CQUFlO0VBQ2Ysb0JBQWU7RUFDZixnRkFBaUI7RUFFakIseUNBQWE7RUFDYiwrQ0FBZTtFQUNmLGlEQUFlO0VBQ2YsaURBQWU7RUFDZixpREFBZTtFQUNmLGlEQUFnQjtFQUNoQixpREFBZ0I7RUFDaEIsaURBQWdCO0VBQ2hCLGlEQUFnQjtFQUNoQixpREFBZ0I7RUFDaEIs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QXdITSxvREFBZTtFQUNmLDhEQUE2RCxFQUM5RDs7QUExSEw7O0VBd0hNLG9EQUFlO0VBQ2YsOERBQTZELEVBQzlEOztBQTFITDs7RUF3SE0sb0RBQWU7RUFDZiw4REFBNkQsRUFDOUQ7O0FBMUhMOztFQXdITSxtREFBZTtFQUNmLDhEQUE2RCxFQUM5RDs7QUExSEw7O0VBd0hNLG9EQUFlO0VBQ2YsOERBQTZELEVBQzlEOztBQTFITDs7RUF3SE0sb0RBQWU7RUFDZiw4REFBNkQsRUFDOUQ7O0FBMUhMOztFQXdITSxvREFBZTtFQUNmLDhEQUE2RCxFQUM5RDs7QUExSEw7O0VBd0hNLG9EQUFlO0VBQ2YsOERBQTZELEVBQzlEOztBQTFITDs7RUF3SE0sb0RBQWU7RUFDZiw4REFBNkQsRUFDOUQ7O0FBMUhMOztFQXdITSxvREFBZTtFQUNmLDhEQUE2RCxFQUM5RDs7QUExSEw7O0VBd0hNLG9EQUFlO0VBQ2YsOERBQTZELEVBQzlEOztBQTFITDs7RUF3SE0sb0RBQWU7RUFDZiw4REFBNkQsRUFDOUQ7O0FBMUhMOztFQXdITSxvREFBZTtFQUNmLDhEQUE2RCxFQUM5RDs7QUExSEw7O0VBd0hNLG9EQUFlO0VBQ2YsOERBQTZELEVBQzlEOztBQTFITDs7RUF3SE0sb0RBQWU7RUFDZiw4REFBNkQsRUFDOUQ7O0FBMUhMOztFQXdITSxvREFBZTtFQUNmLDhEQUE2RCxFQUM5RDs7QUExSEw7O0VBd0hNLG9EQUFlO0VBQ2YsOERBQTZELEVBQzlEOztBQTFITDs7RUF3SE0sb0RBQWU7RUFDZiw4REFBNkQsRUFDOUQ7O0FBMUhMOztFQXdITSxvREFBZTtFQUNmLDhEQUE2RCxFQUM5RDs7QUExSEw7O0VBd0hNLG9EQUFlO0VBQ2YsOERBQTZELEVBQzlEOztBQTFITDs7RUF3SE0sb0RBQWU7RUFDZiw4REFBNkQsRUFDOUQ7O0FBMUhMOztFQXdITSxvREFBZTtFQUNmLDhEQUE2RCxFQUM5RDs7QUExSEw7O0VBd0hNLG9EQUFlO0VBQ2YsOERBQTZELEVBQzlEOztBQTFITDs7RUF3SE0sb0RBQWU7RUFDZiw4REFBNkQsRUFDOUQ7O0FBMUhMOztFQXdITSxvREFBZTtFQUNmLDhEQUE2RCxFQUM5RDs7QUExSEw7O0VBd0hNLG9EQUFlO0VBQ2YsOERBQTZELEVBQzlEOztBQTFITDs7RUF3SE0sb0RBQWU7RUFDZiw4REFBNkQsRUFDOUQ7O0FBMUhMOztFQXdITSxvREFBZTtFQUNmLDhEQUE2RCxFQUM5RDs7QUExSEw7O0VBd0hNLG9EQUFlO0VBQ2YsOERBQTZELEVBQzlEOztBQTFITDs7RUF3SE0sb0RBQWU7RUFDZiw4REFBNkQsRUFDOUQ7O0FBMUhMOztFQXdITSxvREFBZTtFQUNmLDhEQUE2RCxFQUM5RDs7QUExSEw7O0VBd0hNLG9EQUFlO0VBQ2YsOERBQTZELEVBQzlEOztBQTFITDs7RUF3SE0sb0RBQWU7RUFDZiw4REFBNkQsRUFDOUQ7O0FBMUhMOztFQXdITSxvREFBZTtFQUNmLDhEQUE2RCxFQUM5RDs7QUExSEw7O0VBd0hNLG9EQUFlO0VBQ2YsOERBQTZELEVBQzlEOztBQTFITDs7RUF3SE0sb0RBQWU7RUFDZiw4REFBNkQsRUFDOUQ7O0FBMUhMOztFQXdITSxvREFBZTtFQUNmLDhEQUE2RCxFQUM5RDs7QUExSEw7O0VBd0hNLG9EQUFlO0VBQ2YsOERBQTZELEVBQzlEOztBQTFITDs7RUF3SE0sbURBQWU7RUFDZiw4REFBNkQsRUFDOUQ7O0FBMUhMOztFQXdITSxvREFBZTtFQUNmLDhEQUE2RCxFQUM5RDs7QUExSEw7O0VBd0hNLG9EQUFlO0VBQ2YsOERBQTZELEVBQzlEOztBQTFITDs7RUF3SE0sb0RBQWU7RUFDZiw4REFBNkQsRUFDOUQ7O0FBMUhMOztFQXdITSxvREFBZTtFQUNmLDhEQUE2RCxFQUM5RDs7QUExSEw7O0VBd0hNLG9EQUFlO0VBQ2YsOERBQTZELEVBQzlEOztBQTFITDs7RUF3SE0sbURBQWU7RUFDZiw4REFBNkQsRUFDOUQ7O0FBMUhMOztFQXdITSxvREFBZTtFQUNmLDhEQUE2RCxFQUM5RDs7QUExSEw7O0VBd0hNLG9EQUFlO0VBQ2YsOERBQTZELEVBQzlEOztBQTFITDs7RUF3SE0sb0RBQWU7RUFDZiw4REFBNkQsRUFDOUQ7O0FBMUhMOztFQXdITSxvREFBZTtFQUNmLDhEQUE2RCxFQUM5RDs7QUExSEw7O0VBd0hNLG9EQUFlO0VBQ2YsOERBQTZELEVBQzlEOztBQTFITDs7RUF3SE0sbURBQWU7RUFDZiw4REFBNkQsRUFDOUQ7O0FBMUhMOztFQXdITSxvREFBZTtFQUNmLDhEQUE2RCxFQUM5RDs7QUExSEw7O0VBd0hNLG9EQUFlO0VBQ2YsOERBQTZELEVBQzlEOztBQTFITDs7RUF3SE0sb0RBQWU7RUFDZiw4REFBNkQsRUFDOUQ7O0FBMUhMOztFQXdITSxvREFBZTtFQUNmLDhEQUE2RCxFQUM5RDs7QUExSEw7O0VBd0hNLG9EQUFlO0VBQ2YsOERBQTZELEVBQzlEOztBQTFITDs7RUF3SE0sMENBQWU7RUFDZiw4REFBNkQsRUFDOUQ7O0FBMUhMOztFQThIUSxtQkFBZSxFQUFPOztBQTlIOUI7O0VBK0hRLG9CQUFlLEVBQVE7O0FBL0gvQjs7RUE4SU0sOEZBQWtILEVBQ25IOztBQS9JTDs7RUE4SU0sK0ZBQWtILEVBQ25IOztBQS9JTDs7RUE4SU0sK0ZBQWtILEVBQ25IOztBQS9JTDs7RUE4SU0sK0ZBQWtILEVBQ25IOztBQS9JTDs7RUE4SU0sK0ZBQWtILEVBQ25IOztBQS9JTDs7RUE4SU0sK0ZBQWtILEVBQ25IOztBQS9JTDs7Ozs7Ozs7RUF5Sk0sV0FBVTtFQUNWLFVBQVM7RUFDVCxhQUFZO0VBQ1osd0JBQXVCO0VBQ3ZCLGdCQUFlLEVBQ2hCOztBQTlKTDs7RUFvS00sb0JBQW1CLEVBQ3BCOztBQXJLTDs7O0VBNEtRLHNCQUFxQixFQUN0Qjs7QUE3S1A7O0VBZ0xRLHlFQUF1RTtFQUN2RSwwQkFBaUI7S0FBakIsdUJBQWlCO01BQWpCLHNCQUFpQjtVQUFqQixrQkFBaUIsRUFDbEI7O0FBbExQOztFQXNMTSxrQkFBaUIsRUFDbEI7O0FDalBMO0VBQ0UsK0NBQWU7RUFDZixxREFBZSxFQUNoQjs7QUFFRDtFQUNFLGdCQUFlO0VBQ2YsWUFBVyxFQUNaIiwiZmlsZSI6ImFwcC5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy8gVmFyaWFibGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBUT0RPOiBXZSdyZSBpbiB0aGUgcHJvY2VzcyBvZiB0cmFuc2ZlcmluZyBTYXNzIHZhcmlhYmxlcyB0byBDU1MgbmF0aXZlXG4vLyB2YXJpYWJsZXMsIHNpbmNlIENTUyB2YXJpYWJsZXMgc3RpbGwgZG9uJ3Qgc3VwcG9ydCBtZWRpYSBxdWVyeSwgSSBzdGlsbCBuZWVkXG4vLyBzb21lIFNhc3MgdmFyaWFibGVzIGhlcmU6XG4kYnJlYWtwb2ludC1sZzogMTYwMHB4ICFkZWZhdWx0O1xuJGJyZWFrcG9pbnQtbWQ6IDEwODBweCAhZGVmYXVsdDtcbiRicmVha3BvaW50LXNtOiA2NDBweCAhZGVmYXVsdDtcbiRicmVha3BvaW50LXhzOiA0MDBweCAhZGVmYXVsdDtcblxuOnJvb3Qge1xuICAvLyBUeXBvZ3JhcGh5XG4gIC0tZm9udHN0YWNrLXByZWZpeDogLWFwcGxlLXN5c3RlbSwgQmxpbmtNYWNTeXN0ZW1Gb250LDtcbiAgLS1mb250c3RhY2stc2Fucy1zZXJpZjogXCJIZWx2ZXRpY2EgTmV1ZVwiLCBcIlNlZ29lIFVJXCIsIHNhbnMtc2VyaWY7XG4gIC0tZm9udHN0YWNrLXNlcmlmOiBHZW9yZ2lhLCBzZXJpZjtcbiAgLS1mb250c3RhY2stbW9ub3NwYWNlOiBNZW5sbywgQ29uc29sYXMsIG1vbm9zcGFjZTtcbiAgLS1mb250c3RhY2stZGVmYXVsdDogdmFyKC0tZm9udHN0YWNrLXByZWZpeCkgdmFyKC0tZm9udHN0YWNrLXNhbnMtc2VyaWYpO1xuICAtLWZvbnQtc2l6ZS1iYXNlOiAxcmVtO1xuICAtLWZvbnQtc2l6ZS1mYWN0b3I6IDF2dztcbiAgLS1mb250LXNpemU6IDEuNnZ3O1xuICAvLyBUT0RPOiBTd3RpY2ggdG8gdmlld3BvcnQgd2lkdGggZmFjdG9yLWJhc2VkIGZvbnQgc2l6ZVxuICAvLyAtLWZvbnQtc2l6ZTogY2FsYyh2YXIoLS1mb250LXNpemUtYmFzZSkgKyB2YXIoLS1mb250LXNpemUtZmFjdG9yKSk7XG4gIC0tZm9udC1mZWF0dXJlczogXCJoYWx0XCIsIFwic3MwMVwiLCBcInNzMDJcIjtcbiAgLS1saW5lLWhlaWdodDogY2FsYygyMCAvIDE0KTsgLy8gfiAxLjQyODU3MTQyOVxuICAtLWhlYWRpbmctbGV0dGVyLXNwYWNpbmc6IC0uMDRlbTtcblxuICAvLyBMYXlvdXRcbiAgLS1icmVha3BvaW50LWxnOiAjeyRicmVha3BvaW50LWxnfTtcbiAgLS1icmVha3BvaW50LW1kOiAjeyRicmVha3BvaW50LW1kfTtcbiAgLS1icmVha3BvaW50LXNtOiAjeyRicmVha3BvaW50LXNtfTtcbiAgLS1icmVha3BvaW50LXhzOiAjeyRicmVha3BvaW50LXhzfTtcblxuICAtLXNwYWNlLWxnOiAyNHZ3O1xuICAtLXNwYWNlLW1kOiA4dnc7XG4gIC0tc3BhY2Utc206IDR2dztcbiAgLS1zcGFjZS14czogMS4ydnc7XG5cbiAgLS1ib3JkZXItbGc6IDRweDtcbiAgLS1ib3JkZXItbWQ6IDJweDtcbiAgLS1ib3JkZXItc206IDFweDtcblxuICAvLyBOYXZcbiAgLS1uYXYtcGFkZGluZzogLjc1dm1heDtcbiAgLS1uYXYtaXRlbS1zcGFjZTogMS40dm1heDtcblxuICAvLyBDb2xvciAtIHRleHQgY29sb3JcbiAgLS10ZXh0LWNvbG9yLWg6IDMxODtcbiAgLS10ZXh0LWNvbG9yLXM6IDMwJTtcbiAgLS10ZXh0LWNvbG9yLWw6IDEwJTtcbiAgLS10ZXh0LWNvbG9yLWhzbDogdmFyKC0tdGV4dC1jb2xvci1oKSwgdmFyKC0tdGV4dC1jb2xvci1zKSwgdmFyKC0tdGV4dC1jb2xvci1sKTtcblxuICAtLXRleHQtY29sb3I6IGhzbCh2YXIoLS10ZXh0LWNvbG9yLWhzbCkpO1xuICAtLXRleHQtY29sb3ItMDogaHNsYSh2YXIoLS10ZXh0LWNvbG9yLWhzbCksIDApO1xuICAtLXRleHQtY29sb3ItMzogaHNsYSh2YXIoLS10ZXh0LWNvbG9yLWhzbCksIC4wMyk7XG4gIC0tdGV4dC1jb2xvci01OiBoc2xhKHZhcigtLXRleHQtY29sb3ItaHNsKSwgLjA1KTtcbiAgLS10ZXh0LWNvbG9yLTc6IGhzbGEodmFyKC0tdGV4dC1jb2xvci1oc2wpLCAuMDcpO1xuICAtLXRleHQtY29sb3ItMTA6IGhzbGEodmFyKC0tdGV4dC1jb2xvci1oc2wpLCAuMSk7XG4gIC0tdGV4dC1jb2xvci0yMDogaHNsYSh2YXIoLS10ZXh0LWNvbG9yLWhzbCksIC4yKTtcbiAgLS10ZXh0LWNvbG9yLTMwOiBoc2xhKHZhcigtLXRleHQtY29sb3ItaHNsKSwgLjMpO1xuICAtLXRleHQtY29sb3ItNDA6IGhzbGEodmFyKC0tdGV4dC1jb2xvci1oc2wpLCAuNCk7XG4gIC0tdGV4dC1jb2xvci01MDogaHNsYSh2YXIoLS10ZXh0LWNvbG9yLWhzbCksIC41KTtcbiAgLS10ZXh0LWNvbG9yLTYwOiBoc2xhKHZhcigtLXRleHQtY29sb3ItaHNsKSwgLjYpO1xuICAtLXRleHQtY29sb3ItNzA6IGhzbGEodmFyKC0tdGV4dC1jb2xvci1oc2wpLCAuNyk7XG4gIC0tdGV4dC1jb2xvci04MDogaHNsYSh2YXIoLS10ZXh0LWNvbG9yLWhzbCksIC44KTtcbiAgLS10ZXh0LWNvbG9yLTkwOiBoc2xhKHZhcigtLXRleHQtY29sb3ItaHNsKSwgLjkpO1xuICAtLXRleHQtY29sb3ItbGlnaHQ6IGhzbCh2YXIoLS10ZXh0LWNvbG9yLWgpLCB2YXIoLS10ZXh0LWNvbG9yLXMpLCBjYWxjKHZhcigtLXRleHQtY29sb3ItbCkgLyAuOSkpO1xuICAtLXRleHQtY29sb3ItZGFyazogaHNsKHZhcigtLXRleHQtY29sb3ItaCksIHZhcigtLXRleHQtY29sb3ItcyksIGNhbGModmFyKC0tdGV4dC1jb2xvci1sKSAqIC45KSk7XG5cbiAgLy8gQ29sb3IgLSBsaW5rIGNvbG9yXG4gIC0tbGluay1jb2xvci1oOiAzMTg7XG4gIC0tbGluay1jb2xvci1zOiAxMDAlO1xuICAtLWxpbmstY29sb3ItbDogNTAlO1xuICAtLWxpbmstY29sb3ItaHNsOiB2YXIoLS1saW5rLWNvbG9yLWgpLCB2YXIoLS1saW5rLWNvbG9yLXMpLCB2YXIoLS1saW5rLWNvbG9yLWwpO1xuXG4gIC0tbGluay1jb2xvcjogaHNsKHZhcigtLWxpbmstY29sb3ItaHNsKSk7XG4gIC0tbGluay1jb2xvci0wOiBoc2xhKHZhcigtLWxpbmstY29sb3ItaHNsKSwgMCk7XG4gIC0tbGluay1jb2xvci0zOiBoc2xhKHZhcigtLWxpbmstY29sb3ItaHNsKSwgLjAzKTtcbiAgLS1saW5rLWNvbG9yLTU6IGhzbGEodmFyKC0tbGluay1jb2xvci1oc2wpLCAuMDUpO1xuICAtLWxpbmstY29sb3ItNzogaHNsYSh2YXIoLS1saW5rLWNvbG9yLWhzbCksIC4wNyk7XG4gIC0tbGluay1jb2xvci0xMDogaHNsYSh2YXIoLS1saW5rLWNvbG9yLWhzbCksIC4xKTtcbiAgLS1saW5rLWNvbG9yLTIwOiBoc2xhKHZhcigtLWxpbmstY29sb3ItaHNsKSwgLjIpO1xuICAtLWxpbmstY29sb3ItMzA6IGhzbGEodmFyKC0tbGluay1jb2xvci1oc2wpLCAuMyk7XG4gIC0tbGluay1jb2xvci00MDogaHNsYSh2YXIoLS1saW5rLWNvbG9yLWhzbCksIC40KTtcbiAgLS1saW5rLWNvbG9yLTUwOiBoc2xhKHZhcigtLWxpbmstY29sb3ItaHNsKSwgLjUpO1xuICAtLWxpbmstY29sb3ItNjA6IGhzbGEodmFyKC0tbGluay1jb2xvci1oc2wpLCAuNik7XG4gIC0tbGluay1jb2xvci03MDogaHNsYSh2YXIoLS1saW5rLWNvbG9yLWhzbCksIC43KTtcbiAgLS1saW5rLWNvbG9yLTgwOiBoc2xhKHZhcigtLWxpbmstY29sb3ItaHNsKSwgLjgpO1xuICAtLWxpbmstY29sb3ItOTA6IGhzbGEodmFyKC0tbGluay1jb2xvci1oc2wpLCAuOSk7XG4gIC0tbGluay1jb2xvci1saWdodDogaHNsKHZhcigtLWxpbmstY29sb3ItaCksIHZhcigtLWxpbmstY29sb3ItcyksIGNhbGModmFyKC0tbGluay1jb2xvci1sKSAvIC45KSk7XG4gIC0tbGluay1jb2xvci1kYXJrOiBoc2wodmFyKC0tbGluay1jb2xvci1oKSwgdmFyKC0tbGluay1jb2xvci1zKSwgY2FsYyh2YXIoLS1saW5rLWNvbG9yLWwpICogLjkpKTtcblxuICAvLyBDb2xvciAtIGJhY2tncm91bmQgY29sb3JcbiAgLS1iZy1jb2xvci1oOiAzMTg7XG4gIC0tYmctY29sb3ItczogMzAlO1xuICAtLWJnLWNvbG9yLWw6IDEwMCU7XG4gIC0tYmctY29sb3ItaHNsOiB2YXIoLS1iZy1jb2xvci1oKSwgdmFyKC0tYmctY29sb3ItcyksIHZhcigtLWJnLWNvbG9yLWwpO1xuXG4gIC0tYmctY29sb3I6IGhzbCh2YXIoLS1iZy1jb2xvci1oc2wpKTtcbiAgLS1iZy1jb2xvci0wOiBoc2xhKHZhcigtLWJnLWNvbG9yLWhzbCksIDApO1xuICAtLWJnLWNvbG9yLTM6IGhzbGEodmFyKC0tYmctY29sb3ItaHNsKSwgLjAzKTtcbiAgLS1iZy1jb2xvci01OiBoc2xhKHZhcigtLWJnLWNvbG9yLWhzbCksIC4wNSk7XG4gIC0tYmctY29sb3ItNzogaHNsYSh2YXIoLS1iZy1jb2xvci1oc2wpLCAuMDcpO1xuICAtLWJnLWNvbG9yLTEwOiBoc2xhKHZhcigtLWJnLWNvbG9yLWhzbCksIC4xKTtcbiAgLS1iZy1jb2xvci0yMDogaHNsYSh2YXIoLS1iZy1jb2xvci1oc2wpLCAuMik7XG4gIC0tYmctY29sb3ItMzA6IGhzbGEodmFyKC0tYmctY29sb3ItaHNsKSwgLjMpO1xuICAtLWJnLWNvbG9yLTQwOiBoc2xhKHZhcigtLWJnLWNvbG9yLWhzbCksIC40KTtcbiAgLS1iZy1jb2xvci01MDogaHNsYSh2YXIoLS1iZy1jb2xvci1oc2wpLCAuNSk7XG4gIC0tYmctY29sb3ItNjA6IGhzbGEodmFyKC0tYmctY29sb3ItaHNsKSwgLjYpO1xuICAtLWJnLWNvbG9yLTcwOiBoc2xhKHZhcigtLWJnLWNvbG9yLWhzbCksIC43KTtcbiAgLS1iZy1jb2xvci04MDogaHNsYSh2YXIoLS1iZy1jb2xvci1oc2wpLCAuOCk7XG4gIC0tYmctY29sb3ItOTA6IGhzbGEodmFyKC0tYmctY29sb3ItaHNsKSwgLjkpO1xuICAtLWJnLWNvbG9yLWxpZ2h0OiBoc2wodmFyKC0tYmctY29sb3ItaCksIHZhcigtLWJnLWNvbG9yLXMpLCBjYWxjKHZhcigtLWJnLWNvbG9yLWwpIC8gLjkpKTtcbiAgLS1iZy1jb2xvci1kYXJrOiBoc2wodmFyKC0tYmctY29sb3ItaCksIHZhcigtLWJnLWNvbG9yLXMpLCBjYWxjKHZhcigtLWJnLWNvbG9yLWwpICogLjkpKTtcblxuICAvLyBDb2xvciAtIGNvZGUgY29sb3JcbiAgLS1jb2RlLWNvbG9yLWg6IGNhbGModmFyKC0tbGluay1jb2xvci1oKSArIDMwKTtcbiAgLS1jb2RlLWNvbG9yLXM6IGNhbGModmFyKC0tbGluay1jb2xvci1zKSAqIC4yICsgMzAlKTtcbiAgLS1jb2RlLWNvbG9yLWw6IHZhcigtLWxpbmstY29sb3ItbCk7XG4gIC0tY29kZS1jb2xvci1oc2w6IHZhcigtLWNvZGUtY29sb3ItaCksIHZhcigtLWNvZGUtY29sb3ItcyksIHZhcigtLWNvZGUtY29sb3ItbCk7XG5cbiAgLS1jb2RlLWNvbG9yOiBoc2wodmFyKC0tY29kZS1jb2xvci1oc2wpKTtcbiAgLS1jb2RlLWNvbG9yLTA6IGhzbGEodmFyKC0tY29kZS1jb2xvci1oc2wpLCAwKTtcbiAgLS1jb2RlLWNvbG9yLTM6IGhzbGEodmFyKC0tY29kZS1jb2xvci1oc2wpLCAuMDMpO1xuICAtLWNvZGUtY29sb3ItNTogaHNsYSh2YXIoLS1jb2RlLWNvbG9yLWhzbCksIC4wNSk7XG4gIC0tY29kZS1jb2xvci03OiBoc2xhKHZhcigtLWNvZGUtY29sb3ItaHNsKSwgLjA3KTtcbiAgLS1jb2RlLWNvbG9yLTEwOiBoc2xhKHZhcigtLWNvZGUtY29sb3ItaHNsKSwgLjEpO1xuICAtLWNvZGUtY29sb3ItMjA6IGhzbGEodmFyKC0tY29kZS1jb2xvci1oc2wpLCAuMik7XG4gIC0tY29kZS1jb2xvci0zMDogaHNsYSh2YXIoLS1jb2RlLWNvbG9yLWhzbCksIC4zKTtcbiAgLS1jb2RlLWNvbG9yLTQwOiBoc2xhKHZhcigtLWNvZGUtY29sb3ItaHNsKSwgLjQpO1xuICAtLWNvZGUtY29sb3ItNTA6IGhzbGEodmFyKC0tY29kZS1jb2xvci1oc2wpLCAuNSk7XG4gIC0tY29kZS1jb2xvci02MDogaHNsYSh2YXIoLS1jb2RlLWNvbG9yLWhzbCksIC42KTtcbiAgLS1jb2RlLWNvbG9yLTcwOiBoc2xhKHZhcigtLWNvZGUtY29sb3ItaHNsKSwgLjcpO1xuICAtLWNvZGUtY29sb3ItODA6IGhzbGEodmFyKC0tY29kZS1jb2xvci1oc2wpLCAuOCk7XG4gIC0tY29kZS1jb2xvci05MDogaHNsYSh2YXIoLS1jb2RlLWNvbG9yLWhzbCksIC45KTtcbiAgLS1jb2RlLWNvbG9yLWxpZ2h0OiBoc2wodmFyKC0tY29kZS1jb2xvci1oKSwgdmFyKC0tY29kZS1jb2xvci1zKSwgY2FsYyh2YXIoLS1jb2RlLWNvbG9yLWwpIC8gLjkpKTtcbiAgLS1jb2RlLWNvbG9yLWRhcms6IGhzbCh2YXIoLS1jb2RlLWNvbG9yLWgpLCB2YXIoLS1jb2RlLWNvbG9yLXMpLCBjYWxjKHZhcigtLWNvZGUtY29sb3ItbCkgKiAuOSkpO1xufVxuIiwiLy9cbi8vIFJlc2V0XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBwYWRkaW5nOiAwO1xuICBtYXJnaW46IDA7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XG5cbmh0bWwge1xuICBmb250LXNpemU6IDEwMCU7XG4gIHRleHQtc2l6ZS1hZGp1c3Q6IG5vbmU7XG4gIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZWxlZ2liaWxpdHk7XG4gIGltYWdlLXJlbmRlcmluZzogb3B0aW1pemVxdWFsaXR5O1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcblxuICAvLyBUT0RPOiBZb3UgaGF2ZSB0byBzcGVpY2lmeSBiYWNrZ3JvdW5kIGNvbG9yIGZvciBgaHRtbGAgaW4gb3JkZXIgdG9cbiAgLy8gICAgICAgbWFrZSBgLXdlYmtpdC1maWx0ZXJgIHdvcmtcbiAgLy8gTGluazogaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NTkxMDE1XG4gIC8vIERhdGU6IE1hciAxLCAyMDE2LCA1OjQxIFBNXG4gIGJhY2tncm91bmQ6IHZhcigtLWJnLWNvbG9yKTtcbn1cblxuYm9keSB7XG4gIC0tc3BhY2UtYm9keTogdmFyKC0tc3BhY2UtbGcpO1xuICBwYWRkaW5nLXRvcDogMDtcbiAgcGFkZGluZy1ib3R0b206IDA7XG4gIEBpbmNsdWRlIHBhZGRpbmctb2Zmc2V0KHZhcigtLXNwYWNlLWJvZHkpKTtcbiAgbWFyZ2luOiAwIGF1dG8gMDtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWZvbnRzdGFjay1kZWZhdWx0KTtcbiAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUpO1xuICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IHZhcigtLWZvbnQtZmVhdHVyZXMpO1xuICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQpO1xuICBoYW5naW5nLXB1bmN0dWF0aW9uOiBmaXJzdCBhbGxvdy1lbmQ7XG4gIGNvbG9yOiB2YXIoLS10ZXh0LWNvbG9yKTtcbiAgYmFja2dyb3VuZDogdmFyKC0tYmctY29sb3IpO1xuICB0cmFuc2l0aW9uOiBhbGwgLjJzIGVhc2U7XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6ICRicmVha3BvaW50LW1kKSB7XG4gICAgLS1zcGFjZS1ib2R5OiB2YXIoLS1zcGFjZS1tZCk7XG4gICAgZm9udC1zaXplOiBjYWxjKHZhcigtLWZvbnQtc2l6ZSkgKiAxLjQpO1xuICB9XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6ICRicmVha3BvaW50LXNtKSB7XG4gICAgLS1zcGFjZS1ib2R5OiB2YXIoLS1zcGFjZS1zbSk7XG4gICAgZm9udC1zaXplOiBjYWxjKHZhcigtLWZvbnQtc2l6ZSkgKiAyLjQpO1xuICB9XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6ICRicmVha3BvaW50LXhzKSB7XG4gICAgZm9udC1zaXplOiBjYWxjKHZhcigtLWZvbnQtc2l6ZSkgKiAzLjIpO1xuICB9XG59XG5cbi8vIFJlc2V0IGZvbnRzIGZvciByZWxldmFudCBlbGVtZW50c1xuaW5wdXQsXG5idXR0b24sXG5zZWxlY3QsXG50ZXh0YXJlYSB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBmb250LWZhbWlseTogaW5oZXJpdDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbn1cblxuLy8gUmVzZXQgdW51c3VhbCBGaXJlZm94LW9uLUFuZHJvaWQgZGVmYXVsdCBzdHlsZS5cbi8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbmVjb2xhcy9ub3JtYWxpemUuY3NzL2lzc3Vlcy8yMTRcbmJ1dHRvbixcbmlucHV0LFxuc2VsZWN0W211bHRpcGxlXSxcbnRleHRhcmVhIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogbm9uZTtcbn1cblxuLy8gUmVzZXQgY29tbW9uIGVsZW1lbnRzXG5hLFxuYnV0dG9uIHtcbiAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpO1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIHRyYW5zaXRpb246IGNvbG9yIC41cyBlYXNlLCBib3JkZXItY29sb3IgLjVzIGVhc2UsIGJhY2tncm91bmQgLjVzIGVhc2UsIG9wYWNpdHkgMS41cyBlYXNlO1xuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuICAgIHRyYW5zaXRpb246IGNvbG9yIC4xcyBlYXNlLCBib3JkZXItY29sb3IgLjFzIGVhc2UsIGJhY2tncm91bmQgLjFzIGVhc2UsIG9wYWNpdHkgLjFzIGVhc2U7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIH1cblxuICAmW2Rpc2FibGVkXSB7XG4gICAgb3BhY2l0eTogLjQ7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgfVxufVxuXG5idXR0b24ge1xuICBhcHBlYXJhbmNlOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJhY2tncm91bmQ6IG5vbmU7XG4gIGJvcmRlcjogbm9uZTtcbiAgb3V0bGluZTogbm9uZTtcbn1cblxuaW1nLFxuaHIge1xuICBib3JkZXI6IDA7XG59XG5cbmRlbCB7XG4gIHRleHQtZGVjb3JhdGlvbjogbGluZS10aHJvdWdoO1xufVxuXG46OnBsYWNlaG9sZGVyIHtcbiAgY29sb3I6IHZhcigtLXRleHQtY29sb3IpO1xuICBvcGFjaXR5OiAuMjtcbn1cblxuOmZvY3VzOjpwbGFjZWhvbGRlciB7XG4gIGNvbG9yOiB2YXIoLS1saW5rLWNvbG9yKTtcbn1cbiIsIi8vXG4vLyBNaXhpbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIGh0dHBzOi8vbmljb2xhc2dhbGxhZ2hlci5jb20vbWljcm8tY2xlYXJmaXgtaGFjay9cbkBtaXhpbiBjZiB7XG5cbiAgJjo6YmVmb3JlLFxuICAmOjphZnRlciB7XG4gICAgZGlzcGxheTogdGFibGU7XG4gICAgY29udGVudDogXCJcIjtcbiAgfVxuXG4gICY6OmFmdGVyIHtcbiAgICBjbGVhcjogYm90aDtcbiAgfVxufVxuXG5AbWl4aW4gaGVhZGluZyB7XG4gIGZvbnQtc2l6ZTogMzYwJTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIGxldHRlci1zcGFjaW5nOiB2YXIoLS1oZWFkaW5nLWxldHRlci1zcGFjaW5nKTtcbn1cblxuQG1peGluIHN1Yi1oZWFkaW5nIHtcbiAgZm9udC1zaXplOiA3MiU7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIG9wYWNpdHk6IC41O1xufVxuXG5AbWl4aW4gcGFkZGluZy1vZmZzZXQoJHBhZGRpbmctbGVmdCwgJHBhZGRpbmctcmlnaHQ6ICRwYWRkaW5nLWxlZnQpIHtcbiAgcGFkZGluZy1sZWZ0OiAkcGFkZGluZy1sZWZ0O1xuICBwYWRkaW5nLXJpZ2h0OiAkcGFkZGluZy1yaWdodDtcbn1cblxuQG1peGluIG1hcmdpbi1vZmZzZXQoJG1hcmdpbi1sZWZ0LCAkbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLWxlZnQpIHtcbiAgbWFyZ2luLWxlZnQ6ICRtYXJnaW4tbGVmdDtcbiAgbWFyZ2luLXJpZ2h0OiAkbWFyZ2luLXJpZ2h0O1xufVxuXG5AbWl4aW4gc3BsaXRlciB7XG4gICRzaXplOiAzcHg7XG4gICRjb2xvcjogdmFyKC0tdGV4dC1jb2xvcik7XG5cbiAgJjo6YmVmb3JlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBjb250ZW50OiAnJztcbiAgICB3aWR0aDogJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICBtYXJnaW46IDJlbSBhdXRvO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kOiAkY29sb3I7XG4gICAgYm94LXNoYWRvdzogKCRzaXplICogOCkgMCAwIDAgJGNvbG9yLCAoJHNpemUgKiAtOCkgMCAwIDAgJGNvbG9yO1xuICB9XG59XG4iLCIvL1xuLy8gQ29tbW9uXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBNYWluIG5hdmlnYXRpb25cbi5uYXZpZ2F0aW9uIHtcbiAgcGFkZGluZy10b3A6IHZhcigtLW5hdi1wYWRkaW5nKTtcbiAgcGFkZGluZy1ib3R0b206IHZhcigtLW5hdi1wYWRkaW5nKTtcbiAgbWFyZ2luLXJpZ2h0OiBjYWxjKHZhcigtLW5hdi1pdGVtLXNwYWNlKSAqIC0xKTtcbiAgbWFyZ2luLWxlZnQ6IGNhbGModmFyKC0tbmF2LWl0ZW0tc3BhY2UpICogLTEpO1xuICBmb250LXNpemU6IDkwJTtcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gIC8vIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG5cbiAgbGkge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBsaW5lLWhlaWdodDogMjtcblxuICAgIGEge1xuICAgICAgcGFkZGluZzogLjVlbSB2YXIoLS1uYXYtaXRlbS1zcGFjZSk7XG5cbiAgICAgICY6aG92ZXIsXG4gICAgICAmOmZvY3VzIHtcbiAgICAgICAgY29sb3I6IHZhcigtLWxpbmstY29sb3IpO1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIEN1cnJlbnRseSBhY3RpdmF0ZWQgcGFnZSBvciBjYXRlZ29yeSBjbGFzc1xuLmN1cnJlbnQge1xuXG4gIGEge1xuICAgIGNvbG9yOiB2YXIoLS1saW5rLWNvbG9yKTtcbiAgfVxufVxuXG4vLyBMYXRlc3Qgd29yayBsaW5rXG5ib2R5OmhvdmVyIC5sYXRlc3Qge1xuICBjb2xvcjogdmFyKC0tbGluay1jb2xvcikgIWltcG9ydGFudDtcbn1cblxuLy8gTWFpbiBjb250ZW50XG4uY29udGVudCB7XG4gIG1hcmdpbi1ib3R0b206IDE2dm1pbjtcblxuICAvLyBGb3Igc29tZSBzcGVjaWZpZWQgcG9zdHMgaW4gd29yayBjYXRlZ29yeVxuICBAaW5jbHVkZSBjZjtcblxuICAvLyBSZW1vdmUgZXh0cmEgc3BhY2UgZm9yIHRoZSBsYXN0IHBhcmFncmFwaCBpbiB0aGUgY29udGFpbmVyXG4gIGFydGljbGUge1xuXG4gICAgLy8gYXJ0aWNsZSA+IHBcbiAgICA+ICo6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwICFpbXBvcnRhbnQ7XG5cbiAgICAgIC8vIGFydGljbGUgPiB1bCA+IGxpLCBhcnRpY2xlID4gLmZvb3Rub3RlcyA+IG9sXG4gICAgICA+ICo6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcblxuICAgICAgICAvLyBhcnRpY2xlID4gdWwgPiBsaSA+IHAsIGFydGljbGUgPiAuZm9vdG5vdGVzID4gb2wgPiBsaVxuICAgICAgICA+ICo6bGFzdC1jaGlsZCB7XG4gICAgICAgICAgbWFyZ2luLWJvdHRvbTogMCAhaW1wb3J0YW50O1xuXG4gICAgICAgICAgLy8gYXJ0aWNsZSA+IC5mb290bm90ZXMgPiBvbCA+IGxpID4gcFxuICAgICAgICAgID4gKjpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQb3N0IC8gcGFnZSBjb250ZW50IGZpcnN0IGVsZW1lbnQgZml4XG4gIC5wb3N0LWNvbnRlbnQsXG4gIC5wYWdlLWNvbnRlbnQge1xuXG4gICAgPiAqOmZpcnN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi10b3A6IDA7XG5cbiAgICAgID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYSB7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG5cbiAgICAvLyBUT0RPOiBGaXhlcyB3cm9uZyB1bmRlcmxpbmUgY29sb3IgZm9yIGlubGluZSBgY29kZWAgd2l0aGluIGBhYCBsaW5rcy5cbiAgICAvLyBIb3dldmVyIG5vIGJyb3dzZXIgc3VwcG9ydHMgdGhpcyBmZWF0dXJlIGF0IHRoZSB0aW1lIG9mIHdyaXRpbmcuXG4gICAgLy8gTW9yZSBpbmZvOiBodHRwczovL2Nhbml1c2UuY29tLyNmZWF0PWNzcy1oYXNcbiAgICAvLyBEYXRlOiBEZWMgMTAsIDIwMTYsIDU6NTkgUE1cbiAgICAmOmhhcyg+IGNvZGUpIHtcbiAgICAgIHRleHQtZGVjb3JhdGlvbi1jb2xvcjogdmFyKC0tY29kZS1jb2xvcik7XG4gICAgfVxuICB9XG5cbiAgcCB7XG4gICAgbWFyZ2luLWJvdHRvbTogMS42cmVtO1xuICAgIGxpbmUtaGVpZ2h0OiBjYWxjKHZhcigtLWxpbmUtaGVpZ2h0KSAqIDEuMik7XG4gIH1cblxuICBoZWFkZXIge1xuICAgIC0taGVhZGVyLWhlaWdodDogMTAwdmg7XG4gICAgLS1zcGFjZS1oZWFkZXI6IHZhcigtLXNwYWNlLWxnKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1pbi1oZWlnaHQ6IGNhbGModmFyKC0taGVhZGVyLWhlaWdodCkgLSAodmFyKC0tbmF2LXBhZGRpbmcpICogNCkgLSAodmFyKC0tbmF2LWl0ZW0tc3BhY2UpICogNCkgLSAoMWV4ICogLjkgKiAyKSk7XG5cbiAgICAvLyBBZGRpdGlvbmFsIHBhZGRpbmcgZm9yIGNvbnRlbnQgaW5zaWRlIGBoZWFkZXJgIGFyZSBoaWdoZXIgdGhhbiBgaGVhZGVyYFxuICAgIC8vIGNvbnRhaW5lclxuICAgIHBhZGRpbmctdG9wOiAxMHZtaW47XG4gICAgcGFkZGluZy1ib3R0b206IDEwdm1pbjtcbiAgICBtYXJnaW4tYm90dG9tOiAxNnZtaW47XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10ZXh0LWNvbG9yLTMpO1xuICAgIEBpbmNsdWRlIHBhZGRpbmctb2Zmc2V0KHZhcigtLXNwYWNlLWhlYWRlcikpO1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vZmZzZXQoY2FsYyh2YXIoLS1zcGFjZS1oZWFkZXIpICogLTEpKTtcblxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkYnJlYWtwb2ludC1tZCkge1xuICAgICAgLS1oZWFkZXItaGVpZ2h0OiA3MHZoO1xuICAgICAgLS1zcGFjZS1oZWFkZXI6IHZhcigtLXNwYWNlLW1kKTtcbiAgICAgIHBhZGRpbmctdG9wOiAxNnZtaW47XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMTZ2bWluO1xuICAgIH1cblxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkYnJlYWtwb2ludC1zbSkge1xuICAgICAgLS1zcGFjZS1oZWFkZXI6IHZhcigtLXNwYWNlLXNtKTtcbiAgICB9XG5cbiAgICBoMSB7XG4gICAgICBAaW5jbHVkZSBoZWFkaW5nKCk7XG5cbiAgICAgIC8vIHZpc3VhbCBhbGlnbiBsZWZ0XG4gICAgICBtYXJnaW4tbGVmdDogLTJweDtcbiAgICAgIGh5cGhlbnM6IG5vbmU7XG4gICAgICBsaW5lLWhlaWdodDogMS4xO1xuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogJGJyZWFrcG9pbnQtc20pIHtcbiAgICAgICAgLy8gT3ZlcnJpZGUgdmlld3BvcnQgdW5pdHMgZGVmaW5lZCBpbiBwb3N0Lmh0bWxcbiAgICAgICAgZm9udC1zaXplOiAyODAlO1xuICAgICAgfVxuXG4gICAgICBzdmcge31cblxuICAgICAgc3ZnLFxuICAgICAgaW1nIHtcbiAgICAgICAgLy8gTm9ybWFsaXplIGltYWdlIHNpemVcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1heC13aWR0aDogMTAwJTtcblxuICAgICAgICAvLyBPdmVycmlkZSBtYXJnaW4gZnJvbSBhcnRpY2xlIGltZywgYXZvaWQgaGVhZGVyIHN0cmV0Y2hlZCBieSBnbG9iYWxcbiAgICAgICAgLy8gaW1nIHN0eWxlc1xuICAgICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAuM2VtO1xuXG4gICAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkYnJlYWtwb2ludC1zbSkge1xuICAgICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgICAgaGVpZ2h0OiAxMDAlICFpbXBvcnRhbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNldCBzdWJoZWFkaW5nIGluIHBhZ2UgdGl0bGUgKHVzZWQgYnkgQU1TRiBhdG0pXG4gICAgaDIge1xuICAgICAgbWFyZ2luOiAxLjJ2bWluIDAgMDtcbiAgICB9XG5cbiAgICAvLyBIaWRlIGFjdHVhbCB0ZXh0IGlmIHBvc3QgdGl0bGUgaXMgaW1hZ2Ugb3IgU1ZHLCB0aGUgYWN0dWFsIHRleHQgaGVscHNcbiAgICAvLyBTYWZhcmkgZ2V0IHRoZSByZWFsIHBvc3QgdGl0bGUgaW4gUmVhZGVyIG1vZGUuXG4gICAgLmltYWdlLXRpdGxlIHtcbiAgICAgIHRleHQtaW5kZW50OiAtOTk5OTk5cHg7XG4gICAgICBsaW5lLWhlaWdodDogMDtcbiAgICB9XG5cbiAgICBzbWFsbCB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIG1hcmdpbi10b3A6IDJ2bWluO1xuICAgIH1cbiAgfVxuXG4gIGgyLFxuICBoMyxcbiAgaDQsXG4gIGg1LFxuICBoNiB7XG4gICAgbWFyZ2luOiAxMHZtaW4gMCAxcmVtO1xuICAgIEBpbmNsdWRlIHN1Yi1oZWFkaW5nKCk7XG4gIH1cblxuICB1bCxcbiAgb2wge1xuICAgIG1hcmdpbi1ib3R0b206IDEuOHJlbTtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIGNvdW50ZXItcmVzZXQ6IGxpc3Q7XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogJGJyZWFrcG9pbnQtc20pIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAxZW07XG4gICAgfVxuXG4gICAgbGkge1xuICAgICAgbGluZS1oZWlnaHQ6IGNhbGModmFyKC0tbGluZS1oZWlnaHQpICogMS4yKTtcblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICB3aWR0aDogNGVtO1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICBtYXJnaW4tbGVmdDogLTRlbTtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIG9wYWNpdHk6IC40O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIH1cblxuICAgICAgPiB1bCxcbiAgICAgID4gb2wge1xuICAgICAgICBtYXJnaW4tbGVmdDogMWVtO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVsIGxpOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6IFwiLVwiO1xuICAgIHBhZGRpbmctcmlnaHQ6IC41ZW07XG4gIH1cblxuICBvbCBsaTo6YmVmb3JlIHtcbiAgICBjb3VudGVyLWluY3JlbWVudDogbGlzdDtcbiAgICBjb250ZW50OiBjb3VudGVyKGxpc3QpIFwiLlwiO1xuICAgIHBhZGRpbmctcmlnaHQ6IC4yNWVtO1xuICB9XG5cbiAgZGwge1xuICAgIGxpbmUtaGVpZ2h0OiBjYWxjKHZhcigtLWxpbmUtaGVpZ2h0KSAqIDEuMik7XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogJGJyZWFrcG9pbnQtc20pIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAxZW07XG4gICAgfVxuXG4gICAgZHQge1xuXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHdpZHRoOiAxZW07XG4gICAgICAgIG1hcmdpbi1sZWZ0OiAtMWVtO1xuICAgICAgICBjb250ZW50OiBcIi1cIjtcbiAgICAgICAgb3BhY2l0eTogLjY7XG4gICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIGRkIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDEuOHJlbTtcbiAgICB9XG4gIH1cblxuICBpbWcsXG4gIHZpZGVvLFxuICBpZnJhbWUsXG4gIC5icm93c2VyIHtcbiAgICAtLXNwYWNlLWRlY286IHZhcigtLXNwYWNlLW1kKTtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogY2FsYygxMDAlICsgdmFyKC0tc3BhY2UtZGVjbykgKiAyKTtcbiAgICBAaW5jbHVkZSBtYXJnaW4tb2Zmc2V0KGNhbGModmFyKC0tc3BhY2UtZGVjbykgKiAtMSkpO1xuICAgIG1hcmdpbi1ib3R0b206IDEuOHJlbTtcblxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkYnJlYWtwb2ludC1tZCkge1xuICAgICAgLS1zcGFjZS1kZWNvOiB2YXIoLS1zcGFjZS1tZCk7XG4gICAgfVxuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRicmVha3BvaW50LXNtKSB7XG4gICAgICAtLXNwYWNlLWRlY286IHZhcigtLXNwYWNlLXNtKTtcbiAgICB9XG5cbiAgICAvLyBBdm9pZCBpbWFnZXMgd2l0aCBgLm5vLWVubGFyZ2VgIHN0cmV0Y2hlZCBieSBnbG9iYWwgaW1nIHN0eWxlc1xuICAgICYuc2l6ZS1maXQsXG4gICAgJi5uby1lbmxhcmdlIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAwO1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgICAgd2lkdGg6IGF1dG87XG4gICAgfVxuXG4gICAgLy8gRnVsbCB3aWR0aCBpbWFnZVxuICAgICYuc2l6ZS1sYXJnZSB7XG4gICAgICAtLXNwYWNlLWRlY286IHZhcigtLXNwYWNlLWxnKTtcblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6ICRicmVha3BvaW50LW1kKSB7XG4gICAgICAgIC0tc3BhY2UtZGVjbzogdmFyKC0tc3BhY2UtbWQpO1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogJGJyZWFrcG9pbnQtc20pIHtcbiAgICAgICAgLS1zcGFjZS1kZWNvOiB2YXIoLS1zcGFjZS1zbSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5zaXplLXNtYWxsIHtcbiAgICAgIC0tc3BhY2UtZGVjbzogdmFyKC0tc3BhY2UteHMpO1xuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogJGJyZWFrcG9pbnQtbWQpIHtcbiAgICAgICAgLS1zcGFjZS1kZWNvOiB2YXIoLS1zcGFjZS1tZCk7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkYnJlYWtwb2ludC1zbSkge1xuICAgICAgICAtLXNwYWNlLWRlY286IHZhcigtLXNwYWNlLXNtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLnNpemUtbGVmdCB7XG4gICAgICBmbG9hdDogbGVmdDtcbiAgICAgIG1heC13aWR0aDogMzZ2dztcbiAgICAgIG1hcmdpbi10b3A6IGNhbGModmFyKC0tc3BhY2UteHMpIC8gMik7XG4gICAgICBtYXJnaW4tcmlnaHQ6IHZhcigtLXNwYWNlLXhzKTtcbiAgICAgIG1hcmdpbi1ib3R0b206IGNhbGModmFyKC0tc3BhY2UteHMpIC8gMik7XG5cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkYnJlYWtwb2ludC1tZCkge1xuICAgICAgICBmbG9hdDogbm9uZTtcbiAgICAgICAgbWF4LXdpZHRoOiBub25lO1xuICAgICAgICBtYXJnaW4tdG9wOiBhdXRvO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgICAgIG1hcmdpbi1ib3R0b206IGF1dG87XG4gICAgICB9XG4gICAgfVxuXG4gICAgJi5zaXplLXJpZ2h0IHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIG1heC13aWR0aDogMzZ2dztcbiAgICAgIG1hcmdpbi10b3A6IGNhbGModmFyKC0tc3BhY2UteHMpIC8gMik7XG4gICAgICBtYXJnaW4tbGVmdDogdmFyKC0tc3BhY2UteHMpO1xuICAgICAgbWFyZ2luLWJvdHRvbTogY2FsYyh2YXIoLS1zcGFjZS14cykgLyAyKTtcblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6ICRicmVha3BvaW50LW1kKSB7XG4gICAgICAgIGZsb2F0OiBub25lO1xuICAgICAgICBtYXgtd2lkdGg6IG5vbmU7XG4gICAgICAgIG1hcmdpbi10b3A6IGF1dG87XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiBhdXRvO1xuICAgICAgfVxuICAgIH1cblxuICAgICYubm8tcmVzaXplLFxuICAgICYubm9yZXNpemUsXG4gICAgJi5zaXplLW9yaWdpbmFsIHtcbiAgICAgIHdpZHRoOiB1bnNldDtcbiAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgIG1hcmdpbi1sZWZ0OiB1bnNldDtcbiAgICAgIG1hcmdpbi1yaWdodDogdW5zZXQ7XG5cbiAgICAgICYuY2VudGVyIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICAgIG1hcmdpbi1yaWdodDogYXV0bztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBibG9ja3F1b3RlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luLWJvdHRvbTogMi44cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiBjYWxjKHZhcigtLXNwYWNlLXhzKSAqIC0xKTtcbiAgICBmb250LXNpemU6IDkwJTtcblxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkYnJlYWtwb2ludC1zbSkge1xuICAgICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgfVxuXG4gICAgPiBwIHtcbiAgICAgIHBhZGRpbmctbGVmdDogdmFyKC0tc3BhY2UteHMpO1xuICAgICAgYm9yZGVyLWxlZnQ6IHZhcigtLWJvcmRlci1tZCkgc29saWQ7XG5cbiAgICAgIC8vIFRPRE86IE5lZWQgYmV0dGVyIHNvbHV0aW9uXG4gICAgICAvLyBXZSB3aWxsIHJlc2V0IHRoZSBjb21tb24gbWFyZ2luLWJvdHRvbSB0byBnZXQgZ2FwbGVzcyBib3JkZXJzIGZvclxuICAgICAgLy8gYmxvY2txdW90ZXMuIFRoaXMgY291bGQgaGVscCBmaXhcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbXNmL2Ftc2YtY3VydGFuYS9pc3N1ZXMvNFxuICAgICAgcGFkZGluZy1ib3R0b206IDEuNmVtO1xuXG4gICAgICAvLyBOb3cgcmVzZXQgZGVmYXVsdCBtYXJnaW4gYnV0dG9uIGZyb20gZ2xvYmFsIGRlZmluZVxuICAgICAgbWFyZ2luLWJvdHRvbTogMDtcbiAgICAgIG9wYWNpdHk6IC42O1xuXG4gICAgICAvLyBSZW1vdmUgZXh0cmEgcGFkZGluZyBmb3IgdGhlIGxhc3QgZWxlbWVudCwgcmUtYXBwbHkgbWFyZ2luXG4gICAgICAmOmxhc3Qtb2YtdHlwZSB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAuNGVtO1xuICAgICAgfVxuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogJGJyZWFrcG9pbnQtc20pIHtcbiAgICAgICAgQGluY2x1ZGUgcGFkZGluZy1vZmZzZXQoY2FsYyh2YXIoLS1zcGFjZS1zbSkgLSB2YXIoLS1ib3JkZXItbWQpKSwgdmFyKC0tc3BhY2Utc20pKTtcbiAgICAgICAgQGluY2x1ZGUgbWFyZ2luLW9mZnNldChjYWxjKHZhcigtLXNwYWNlLXNtKSAqIC0xKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9vdGVyIHtcbiAgICAgIEBpbmNsdWRlIGNmO1xuICAgIH1cblxuICAgIGNpdGUge1xuICAgICAgZmxvYXQ6IHJpZ2h0O1xuICAgICAgZm9udC1zdHlsZTogbm9ybWFsO1xuXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICAvLyBodHRwczovL3d3dy5maWxlZm9ybWF0LmluZm8vaW5mby91bmljb2RlL2NoYXIvMjUwMC9pbmRleC5odG1cbiAgICAgICAgY29udGVudDogXCJcXDI1MDBcXDI1MDBcXDAwYTBcIlxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGRldGFpbHMge1xuICAgIG1hcmdpbi1ib3R0b206IDEuOHJlbTtcblxuICAgIHN1bW1hcnkge1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgICAgIGxpbmUtaGVpZ2h0OiBjYWxjKHZhcigtLWxpbmUtaGVpZ2h0KSAqIDEuMik7XG4gICAgICBvdXRsaW5lOiBub25lO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICBAbWVkaWEgKG1heC13aWR0aDogJGJyZWFrcG9pbnQtc20pIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDFlbTtcbiAgICAgIH1cblxuICAgICAgJjo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmVcbiAgICAgIH1cblxuICAgICAgJjo6YmVmb3JlIHtcbiAgICAgICAgY29udGVudDogXCIrXCI7XG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIHdpZHRoOiAxZXg7XG4gICAgICAgIGxlZnQ6IC0uNWVtO1xuICAgICAgICBtYXJnaW4tdG9wOiAwO1xuICAgICAgICBtYXJnaW4tbGVmdDogLTFleDtcbiAgICAgICAgdGV4dC1hbGlnbjogcmlnaHQ7XG4gICAgICAgIG9wYWNpdHk6IC40O1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IC4ycyBlYXNlLCB0cmFuc2Zvcm0gLjJzIGVhc2U7XG4gICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlciBjZW50ZXI7XG4gICAgICAgIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJjYXNlXCI7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gVE9ETzogU0NTUyBnZW5lcmF0ZXMgd3JvbmcgIWltcG9ydGFudCBjb21tZW50IHBvc2l0aW9uIHdoZW4gcmVsYXRlZFxuICAgIC8vIGJsb2NrIGFyZSBuZXN0ZWQgaW5zaWRlLCB5b3UgaGF2ZSB0byBtYWtlIHN1cmUgdGhlIGJsb2NrIHlvdSB3YW5uYSBrZWVwXG4gICAgLy8gYnkgdW5jc3MgdGhlIHRvcG1vc3QgbGV2ZWwgKHJvb3QpIG9mIHlvdXIgY3NzLiBJIGFscmVhZHkgaW1wbGVtZW50ZWQgYVxuICAgIC8vIHdvcmthcm91bmQgZm9yIGBvcGVudHlwZS1mZWF0dXJlc2AgcmVwby5cbiAgICAmW29wZW5dIHN1bW1hcnk6OmJlZm9yZSB7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoNDVkZWcpO1xuICAgIH1cbiAgfVxuXG4gIGhyIHtcbiAgICBAaW5jbHVkZSBzcGxpdGVyKCk7XG4gIH1cblxuICBzdXAge1xuICAgIGZvbnQtc2l6ZTogNzUlO1xuICB9XG5cbiAgcHJlLFxuICBjb2RlIHtcbiAgICBmb250LWZhbWlseTogdmFyKC0tZm9udHN0YWNrLW1vbm9zcGFjZSk7XG4gICAgY29sb3I6IHZhcigtLWNvZGUtY29sb3IpO1xuICB9XG5cbiAgcHJlIHtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2RlLWNvbG9yLTUpO1xuICB9XG5cbiAgY29kZSB7XG4gICAgZm9udC1zaXplOiA5MiU7XG4gICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgfVxuXG4gIC8vIFRPRE86IE5lZWQgcmVmaW5lXG4gIC8vIERhdGU6IEphbiAyNCwgMjAxOCwgNTozNyBQTVxuICAvL1xuICAvLyBKZWt5bGwgKGxpcXVpZCkgeyUgaGlnaGxpZ2h0ICV9IG1ldGhvZCBhbmQgR0ZNIG1ldGhvZCBnZW5lcmF0ZXMgZGlmZmVyZW50XG4gIC8vIG1hcmt1cCBmb3IgY29kZSBibG9ja3MsIHRoaXMgcmVzdWx0IGluIGRpZmZlcmVudCBDU1Mgc3R5bGluZyBmb3IgZGlmZmVyZW50XG4gIC8vIGhpZ2hsaWdodCBtZXRob2RzIHlvdSB1c2UuXG4gIC8vXG4gIC8vICMjIEdGTSBtZXRob2RcbiAgLy9cbiAgLy8gYGBgXG4gIC8vIGRpdi5sYW5ndWFnZS1qcy5oaWdobGlnaHRlci1yb3VnZVxuICAvLyAgIGRpdi5oaWdobGlnaHRcbiAgLy8gICAgIHByZS5oaWdobGlnaHRcbiAgLy8gICAgICAgY29kZVxuICAvLyBgYGBcbiAgLy9cbiAgLy8gIyMgR0ZNIG1ldGhvZCB3aXRoIGBsaW5lX251bWJlcnNgIGVuYWJsZWQgdW5kZXIgYHN5bnRheF9oaWdobGlnaHRlcl9vcHRzYFxuICAvL1xuICAvLyBgYGBcbiAgLy8gZGl2Lmxhbmd1YWdlLWpzLmhpZ2hsaWdodGVyLXJvdWdlXG4gIC8vICAgZGl2LmhpZ2hsaWdodFxuICAvLyAgICAgdGFibGVcbiAgLy8gICAgICAgdGJvZHlcbiAgLy8gICAgICAgICB0clxuICAvLyAgICAgICAgICAgdGQuZ3V0dGVyLmdsXG4gIC8vICAgICAgICAgICAgIHByZVxuICAvLyAgICAgICAgICAgICAgIGNvZGVcbiAgLy8gICAgICAgICAgIHRkLmNvZGVcbiAgLy8gICAgICAgICAgICAgcHJlXG4gIC8vICAgICAgICAgICAgICAgY29kZVxuICAvLyBgYGBcbiAgLy9cbiAgLy8gIyMgSmVreWxsIHslIGhpZ2hsaWdodCAlfSBtZXRob2Q6XG4gIC8vXG4gIC8vIGBgYFxuICAvLyBmaWd1cmUuaGlnaGxpZ2h0XG4gIC8vICAgcHJlXG4gIC8vICAgICBjb2RlLmxhbmd1YWdlLWh0bWxcbiAgLy8gICAgICAgdGFibGVcbiAgLy8gICAgICAgICB0Ym9keVxuICAvLyAgICAgICAgICAgdHJcbiAgLy8gICAgICAgICAgICAgdGQuZ3V0dGVyLmdsXG4gIC8vICAgICAgICAgICAgICAgcHJlXG4gIC8vICAgICAgICAgICAgICAgICBjb2RlXG4gIC8vICAgICAgICAgICAgIHRkLmNvZGVcbiAgLy8gICAgICAgICAgICAgICBwcmVcbiAgLy8gICAgICAgICAgICAgICAgIGNvZGVcbiAgLy8gYGBgXG4gIHByZSxcbiAgLmhpZ2hsaWdodCA+IHByZSxcbiAgLmhpZ2hsaWdodGVyLXJvdWdlIHByZS5oaWdobGlnaHQge1xuICAgIC0tc3BhY2UtY29kZTogdmFyKC0tc3BhY2UteHMpO1xuICAgIHBhZGRpbmctdG9wOiB2YXIoLS1zcGFjZS14cyk7XG4gICAgcGFkZGluZy1ib3R0b206IHZhcigtLXNwYWNlLXhzKTtcbiAgICBAaW5jbHVkZSBwYWRkaW5nLW9mZnNldCh2YXIoLS1zcGFjZS1jb2RlKSk7XG4gICAgQGluY2x1ZGUgbWFyZ2luLW9mZnNldChjYWxjKHZhcigtLXNwYWNlLWNvZGUpICogLTEpKTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjhyZW07XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBmb250LXNpemU6IDgwJTtcbiAgICBsaW5lLWhlaWdodDogY2FsYyh2YXIoLS1saW5lLWhlaWdodCkgKiAxLjIpO1xuXG4gICAgLy8gQm91bmNpbmcgc2Nyb2xsIGZpeCBmb3IgaU9TXG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRicmVha3BvaW50LW1kKSB7XG4gICAgICAtLXNwYWNlLWNvZGU6IHZhcigtLXNwYWNlLW1kKTtcbiAgICB9XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogJGJyZWFrcG9pbnQtc20pIHtcbiAgICAgIC0tc3BhY2UtY29kZTogdmFyKC0tc3BhY2Utc20pO1xuICAgIH1cblxuICAgIC8vIFJlc2V0IG92ZXJmbG93IGZvciBjb2RlIGluIGNvZGUgYmxvY2tzXG4gICAgY29kZSB7XG4gICAgICBvdmVyZmxvdy13cmFwOiBub3JtYWw7XG4gICAgfVxuICB9XG5cbiAgLy8gTmV3c2xldHRlciBzdWJzY3JpcHRpb24gZm9ybSBpbiBwYWdlIFwic3RvcmVcIlxuICBmb3JtIHtcblxuICAgIGlucHV0IHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBwYWRkaW5nOiAxdm1pbiAwO1xuICAgICAgbWFyZ2luOiAwIDAgMS44cmVtO1xuICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLXRleHQtY29sb3IpO1xuICAgICAgYmFja2dyb3VuZDogaW5oZXJpdDtcblxuICAgICAgLy8gUmVtb3ZlIGJvcmRlci1yYWRpdXMgZm9yIGlPUyBkZXZpY2VzXG4gICAgICBib3JkZXItcmFkaXVzOiAwO1xuICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgIHRyYW5zaXRpb246IHBhZGRpbmcgLjJzIGVhc2U7XG5cbiAgICAgICY6Zm9jdXMge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLXRleHQtY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFJlc3QgZm9ybSB2YWxpZGF0aW9uIHN0eWxlcywgYm9ycm93ZWQgZnJvbSBCb290c3RyYXBcbiAgaW5wdXQsXG4gIHRleHRhcmVhLFxuICBzZWxlY3Qge1xuXG4gICAgJjpmb2N1czpyZXF1aXJlZDppbnZhbGlkIHtcblxuICAgICAgJjpmb2N1cyB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1saW5rLWNvbG9yKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1saW5rLWNvbG9yKTtcblxuICAgICAgICAvLyBPdmVycmlkZSBGaXJlZm94IGRlZmF1bHQgc3R5bGVzXG4gICAgICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGFibGUge1xuICAgIC0tc3BhY2UtdGFibGU6IHZhcigtLXNwYWNlLXhzKTtcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICAgIGJvcmRlci1zcGFjaW5nOiAwO1xuICAgIGZvbnQtc2l6ZTogOTAlO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIEBpbmNsdWRlIG1hcmdpbi1vZmZzZXQoY2FsYyh2YXIoLS1zcGFjZS10YWJsZSkgKiAtMSkpO1xuICAgIG1hcmdpbi1ib3R0b206IDEuOHJlbTtcblxuICAgIC8vIFRPRE86IHJlc3BvbnNpdmUgdGFibGUgc3VwcG9ydFxuICAgIC8vIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAvLyBvdmVyZmxvdy14OiBhdXRvO1xuICAgIC8vIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAvLyBUT0RPOiByZXNwb25zaXZlIHRhYmxlIHN1cHBvcnRcbiAgICBAbWVkaWEgKG1heC13aWR0aDogJGJyZWFrcG9pbnQtbWQpIHtcbiAgICAgIC0tc3BhY2UtdGFibGU6IHZhcigtLXNwYWNlLW1kKTtcbiAgICAgIHdpZHRoOiBjYWxjKDEwMCUgKyB2YXIoLS1zcGFjZS10YWJsZSkgKiAyKTtcbiAgICB9XG5cbiAgICBAbWVkaWEgKG1heC13aWR0aDogJGJyZWFrcG9pbnQtc20pIHtcbiAgICAgIC0tc3BhY2UtdGFibGU6IHZhcigtLXNwYWNlLXNtKTtcbiAgICAgIHdpZHRoOiBjYWxjKDEwMCUgKyB2YXIoLS1zcGFjZS10YWJsZSkgKiAyKTtcbiAgICB9XG5cbiAgICB0aCxcbiAgICB0ZCB7XG4gICAgICAtLXNwYWNlLXRhYmxlLWNlbGw6IHZhcigtLXNwYWNlLXhzKTtcbiAgICAgIHBhZGRpbmc6IC42ZW0gdmFyKC0tc3BhY2UteHMpO1xuXG4gICAgICAmOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjZS10YWJsZS1jZWxsKTtcbiAgICAgIH1cblxuICAgICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogdmFyKC0tc3BhY2UtdGFibGUtY2VsbCk7XG4gICAgICB9XG5cbiAgICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkYnJlYWtwb2ludC1tZCkge1xuICAgICAgICAtLXNwYWNlLXRhYmxlLWNlbGw6IHZhcigtLXNwYWNlLW1kKTtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6ICRicmVha3BvaW50LXNtKSB7XG4gICAgICAgIC0tc3BhY2UtdGFibGUtY2VsbDogdmFyKC0tc3BhY2Utc20pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoIHtcbiAgICAgIGJvcmRlci1ib3R0b206IHZhcigtLWJvcmRlci1tZCkgc29saWQgdmFyKC0tdGV4dC1jb2xvci01KTsgLy8gT3ZlcnJpZGUgZGVmYXVsdCB1c2VyIGFnZW50IHN0eWxlc2hlZXRcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxuXG4gICAgdGQge1xuICAgICAgYm9yZGVyLXRvcDogdmFyKC0tYm9yZGVyLXNtKSBzb2xpZCB2YXIoLS10ZXh0LWNvbG9yLTUpO1xuICAgIH1cbiAgfVxufVxuXG4vLyBQb3N0cyB3aXRoIEFzaWFuIGNoYXJhY3RlcnNcbjpsYW5nKHpoKSxcbjpsYW5nKGphKSB7XG4gIHRleHQtYWxpZ246IGp1c3RpZnk7XG5cbiAgaGVhZGVyIHtcblxuICAgICYsXG4gICAgJiAqIHtcbiAgICAgIHRleHQtYWxpZ246IHN0YXJ0O1xuICAgIH1cbiAgfVxuXG4gIHJ1Ynkge1xuXG4gICAgcnQge1xuICAgICAgdGV4dC1hbGlnbjogc3RhcnQ7XG4gICAgfVxuICB9XG59XG5cbi8vIFBvc3QgZGF0ZSBtYXJnaW4gZml4XG4ucG9zdC1tb2RpZmllZC1kYXRlIHtcbiAgZm9udC1zaXplOiA3NSU7XG4gIG9wYWNpdHk6IC41O1xufVxuXG4vLyBMYXJnZXR5cGUgc3R5bGVzIChyZXBsYWNlcyBidXR0b24gc3R5bGVzKVxuLmxhcmdldHlwZSB7XG4gIEBpbmNsdWRlIGhlYWRpbmcoKTtcbiAgZm9udC1zaXplOiAyMDAlO1xuICBtYXJnaW4tYm90dG9tOiAxLjhyZW0gIWltcG9ydGFudDtcbn1cblxuLy8gQnJvc2VyIGZyYW1lIGZvciBpbWFnZXMgaW4gY2F0ZWdvcnkgXCJ3b3JrXCJcbi5icm93c2VyIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLXRvcDogMjRweDtcbiAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAuMSk7XG4gIGJvcmRlci1yYWRpdXM6IDVweCA1cHggMCAwO1xuICBib3gtc2hhZG93OiAwIDAgMCAxcHggcmdiYSgwLCAwLCAwLCAuMDUpO1xuXG4gIC8vIFJlc2V0IGJyb3dzZXIgYm9yZGVyLXJhZGl1cyBmb3Igc21hbGwgc2NyZWVuc1xuICBAbWVkaWEgKG1heC13aWR0aDogJGJyZWFrcG9pbnQtbWQpLCAobWF4LXdpZHRoOiAkYnJlYWtwb2ludC1zbSkge1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gIH1cblxuICAmOjpiZWZvcmUge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDhweDtcbiAgICBsZWZ0OiAxMHB4O1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiA4cHg7XG4gICAgaGVpZ2h0OiA4cHg7XG4gICAgYmFja2dyb3VuZDogbGlnaHRlbigjZjI0ZTU5LCAzMCUpO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBjb250ZW50OiBcIlwiO1xuICAgIGJveC1zaGFkb3c6XG4gICAgICAxNnB4IDAgMCAwICAgcmdiYShsaWdodGVuKCNmYWM1MzYsIDMwJSksIC45NiksXG4gICAgICAzMnB4IDAgMCAwICAgcmdiYShsaWdodGVuKCMyNmU5M2QsIDMwJSksIC45NiksXG4gICAgICAgICAwIDAgMCAxcHggcmdiYShkYXJrZW4oI2YyNGU1OSwgMzAlKSwgLjMpLFxuICAgICAgMTZweCAwIDAgMXB4IHJnYmEoZGFya2VuKCNmYWM1MzYsIDMwJSksIC4zKSxcbiAgICAgIDMycHggMCAwIDFweCByZ2JhKGRhcmtlbigjMjZlOTNkLCAzMCUpLCAuMyk7XG4gIH1cblxuICBpbWcge1xuICAgIC8vIGF2b2lkIGltYWdlcyBpbnNpZGUgLmJyb3dzZXIgc3RyZXRjaGVkIGJ5IGdsb2JhbCBpbWcgc3R5bGVzXG4gICAgbWFyZ2luLWxlZnQ6IDA7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBib3gtc2hhZG93OiAwIC0xcHggMCAwIHJnYmEoMCwgMCwgMCwgLjA1KTtcbiAgfVxufVxuXG4vLyBFeHRyYSBvZmZzZXQgZm9yIE9TIFggc2NyZWVuc2hvdHNcbi5zY3JlZW5zaG90LW1hYyB7XG4gIC0tb3N4LXNoYWRvdy1zaXplOiA1NnB4O1xuICBAaW5jbHVkZSBtYXJnaW4tb2Zmc2V0KGNhbGModmFyKC0tb3N4LXNoYWRvdy1zaXplKSAqIC0xKSk7XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6ICRicmVha3BvaW50LW1kKSwgKG1heC13aWR0aDogJGJyZWFrcG9pbnQtc20pIHtcbiAgICBAaW5jbHVkZSBtYXJnaW4tb2Zmc2V0KDApO1xuICB9XG59XG5cbi8vIFNwZWNpYWwgcGFyYWdyYXBoIHdpdGggYm9yZGVyIGxpbmVcbi5ub3RlLFxuLnN0b3JlLFxuLmRvd25sb2FkIHtcbiAgcGFkZGluZy1sZWZ0OiB2YXIoLS1zcGFjZS14cyk7XG4gIG1hcmdpbi1sZWZ0OiBjYWxjKHZhcigtLXNwYWNlLXhzKSAqIC0xKTtcbiAgYm9yZGVyLWxlZnQ6IHZhcigtLWJvcmRlci1tZCkgc29saWQgdmFyKC0tbGluay1jb2xvcik7XG5cbiAgQG1lZGlhIChtYXgtd2lkdGg6ICRicmVha3BvaW50LXNtKSB7XG4gICAgQGluY2x1ZGUgcGFkZGluZy1vZmZzZXQoY2FsYyh2YXIoLS1zcGFjZS1zbSkgLSB2YXIoLS1ib3JkZXItbWQpKSwgdmFyKC0tc3BhY2Utc20pKTtcbiAgICBAaW5jbHVkZSBtYXJnaW4tb2Zmc2V0KGNhbGModmFyKC0tc3BhY2Utc20pICogLTEpKTtcbiAgfVxufVxuXG4vLyBSZWZlcmVuY2Ugbm90ZXMgYW5kIGxpbmtzIGluIHBvc3Rcbi5mb290bm90ZXMge1xuICBAaW5jbHVkZSBzcGxpdGVyKCk7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuXG46dGFyZ2V0IHtcblxuICAvLyBSZWRjYXJwZXQtc3R5bGVcbiAgW3Jldj1mb290bm90ZV0sXG4gIFtyZWw9Zm9vdG5vdGVdLFxuXG4gIC8vIGtyYW1kb3duLXN0eWxlXG4gIC5yZXZlcnNlZm9vdG5vdGUsXG4gIC5mb290bm90ZSB7XG4gICAgY29sb3I6IHZhcigtLWxpbmstY29sb3IpO1xuICB9XG59XG5cbi8vIFBvc3QgbGlzdCBpbiBcIndvcmtcIiBhbmQgXCJub3RlXCJcbi5saXN0IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMCAwIC40cmVtO1xuXG4gIGgxIHtcbiAgICBAaW5jbHVkZSBoZWFkaW5nKCk7XG4gICAgZm9udC1zaXplOiAyMDAlO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjE7XG5cbiAgICAvLyBPdmVycmlkZSBoZWFkaW5nIGRlZmluZXMgaW4gLmNvbnRlbnRcbiAgICBvcGFjaXR5OiAxO1xuICAgIG1hcmdpbjogMDtcblxuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkYnJlYWtwb2ludC1zbSkge1xuICAgICAgLy8gSGlkZSBleHRlcm5hbCBsaW5rIGZvciBwb3N0IGxpc3RcbiAgICAgIGZvbnQtc2l6ZTogMTgwJTtcbiAgICB9XG4gIH1cblxuICAuZXh0ZXJuYWwge1xuXG4gICAgQG1lZGlhIChtYXgtd2lkdGg6ICRicmVha3BvaW50LXNtKSB7XG4gICAgICAvLyBIaWRlIGV4dGVybmFsIGxpbmsgZm9yIHBvc3QgbGlzdFxuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQSBkb3Qgc3ltYm9sIGZvciBleHRlcm5hbCBsaW5rc1xuLmV4dGVybmFsIHtcblxuICAuZG90IHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IC43cmVtO1xuICAgIGhlaWdodDogLjdyZW07XG4gICAgbWFyZ2luOiAwIC4xZW07XG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbiAgICBiYWNrZ3JvdW5kOiB2YXIoLS10ZXh0LWNvbG9yKTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIC40cyBlYXNlO1xuXG4gICAgLy8gRXh0cmEgbWFyZ2luIGZvciBleHRlcm5hbCBzeW1ib2wgaW4gc2luZ3VsYXJcbiAgICAmLS1wb3N0IHtcbiAgICAgIG1hcmdpbi1sZWZ0OiAxcmVtO1xuICAgIH1cbiAgfVxuXG4gICY6aG92ZXIsXG4gICY6Zm9jdXMge1xuXG4gICAgLmRvdCB7XG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuNCk7XG4gICAgfVxuICB9XG59XG5cbi8vIE9wZW5UeXBlIGZlYXR1cmVzXG4ub2YtY2FzZSB7XG4gIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJjYXNlXCI7XG59XG5cbi5mb290ZXIge1xuICBwYWRkaW5nOiAwIDAgMTZ2bWluO1xuICBtYXJnaW4tcmlnaHQ6IGNhbGModmFyKC0tbmF2LWl0ZW0tc3BhY2UpICogLTEpO1xuICBtYXJnaW4tbGVmdDogY2FsYyh2YXIoLS1uYXYtaXRlbS1zcGFjZSkgKiAtMSk7XG4gIGZvbnQtc2l6ZTogODAlO1xuICB0ZXh0LXRyYW5zZm9ybTogbG93ZXJjYXNlO1xuXG4gIHVsIHtcblxuICAgIGxpIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgIGxpbmUtaGVpZ2h0OiAxLjg7XG5cbiAgICAgIGEge1xuICAgICAgICBwYWRkaW5nOiAuNWVtIHZhcigtLW5hdi1pdGVtLXNwYWNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vXG4vLyBQbHVnaW5zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBHaXRIdWIgR2lzdFxuLmdpc3Qge1xuICBmb250LXNpemU6IDgwJSAhaW1wb3J0YW50O1xuXG4gIGNvZGUsIHByZSB7XG4gICAgcGFkZGluZzogMDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuXG4gIC5naXN0LWRhdGEge1xuICAgIGZvbnQtZmFtaWx5OiB2YXIoLS1mb250c3RhY2stbW9ub3NwYWNlKSAhaW1wb3J0YW50O1xuXG4gICAgLmZpbGUtZGF0YSB7XG4gICAgICBmb250LXNpemU6IDEwMCUgIWltcG9ydGFudDtcblxuICAgICAgPiB0YWJsZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDAgIWltcG9ydGFudDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBNb25vc3BhY2UgZm9udHMgbG9vayBiaWdnZXIgdGhhbiBub3JtYWwgZm9udHMsIHNvIG1ha2UgaXQgc21hbGxlci5cbiAgLmhpZ2hsaWdodCB7XG4gICAgZm9udC1zaXplOiA5MCUgIWltcG9ydGFudDtcbiAgfVxuXG4gIC5tYXJrZG93bi1ib2R5IHtcbiAgICBmb250LXNpemU6IDEwMCUgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAxZW0gIWltcG9ydGFudDtcbiAgfVxufVxuIiwiLy9cbi8vIFByaW50XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBTdHlsZSBmaXhlcyBmb3IgcHJpdGluZ1xuXG5AbWVkaWEgcHJpbnQge1xuXG4gICosXG4gICo6OmJlZm9yZSxcbiAgKjo6YWZ0ZXIge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICMwMDAgIWltcG9ydGFudDtcblxuICAgIC8vIEJsYWNrIHByaW50cyBmYXN0ZXI6IGg1YnAuY29tL3NcbiAgICBib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XG4gICAgdGV4dC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgfVxuXG4gIGJvZHkge1xuICAgIHBhZGRpbmc6IDEwbW0gIWltcG9ydGFudDtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICBmb250LXNpemU6IGNhbGModmFyKC0tZm9udC1zaXplKSAqIDEuMzUpO1xuICB9XG5cbiAgYSxcbiAgYTp2aXNpdGVkIHtcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gIH1cblxuICAuY29udGVudCBoZWFkZXIge1xuICAgIG1pbi1oZWlnaHQ6IDA7XG4gICAgcGFkZGluZy1ib3R0b206IDA7XG4gIH1cblxuICAuY29udGVudCAucG9zdC1jb250ZW50LFxuICAuY29udGVudCAucGFnZS1jb250ZW50IHtcbiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcblxuICAgIGFbaHJlZl06OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIChcIiBhdHRyKGhyZWYpIFwiKVwiO1xuICAgICAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcbiAgICAgIG9wYWNpdHk6IC41O1xuICAgIH1cblxuICAgIC8vIERvbid0IHNob3cgbGlua3MgdGhhdCBhcmUgZnJhZ21lbnQgaWRlbnRpZmllcnMsXG4gICAgLy8gb3IgdXNlIHRoZSBgamF2YXNjcmlwdDpgIHBzZXVkbyBwcm90b2NvbFxuICAgIGFbaHJlZl49XCIjXCJdOjphZnRlcixcbiAgICBhW2hyZWZePVwiamF2YXNjcmlwdDpcIl06OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG4gICAgfVxuXG4gICAgYWJiclt0aXRsZV06OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiIChcIiBhdHRyKHRpdGxlKSBcIilcIjtcbiAgICAgIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gICAgfVxuICB9XG5cbiAgcHJlLFxuICBibG9ja3F1b3RlIHtcbiAgICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7XG4gIH1cblxuICB0aGVhZCB7XG4gICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwO1xuICB9XG5cbiAgdHIsXG4gIGltZyB7XG4gICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICB9XG5cbiAgaW1nIHtcbiAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcbiAgfVxuXG4gIHAsXG4gIGgyLFxuICBoMyxcbiAgaDQsXG4gIGg1LFxuICBoNiB7XG4gICAgb3JwaGFuczogMztcbiAgICB3aWRvd3M6IDM7XG4gIH1cblxuICBoMixcbiAgaDMge1xuICAgIHBhZ2UtYnJlYWstYWZ0ZXI6IGF2b2lkO1xuICB9XG5cbiAgLm5hdmlnYXRpb24sXG4gIC5mb290ZXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIi8vXG4vLyBSYW5kb21pemVkIHwgwqkgVHVuZ2hzaWFvIExpdSB8IE1JVFxuLy9cblxuLy8gVmFyaWFibGVzIGZvciBzdGFuZGFsb25lIHZlcnNpb25cbiRjb2RlLWNvbG9yOiBoc2woMjU0LCA4MCUsIDM5JSkgIWRlZmF1bHQ7XG5cbi8vIFJlbW92ZSBvdXRwdXQgdW5pdFxuQGZ1bmN0aW9uIHVuaXRsZXNzbmVzcygkaW5wdXQpIHtcbiAgQGlmIHR5cGUtb2YoJGlucHV0KSA9PSAnbnVtYmVyJyBhbmQgbm90IHVuaXRsZXNzKCRpbnB1dCkge1xuICAgIEByZXR1cm4gJGlucHV0IC8gKCRpbnB1dCAqIDAgKyAxKTtcbiAgfVxuXG4gIEByZXR1cm4gJGlucHV0O1xufVxuXG4vLyBQb3dlclxuQGZ1bmN0aW9uIHBvdygkbnVtLCAkZXhwb25lbnQpIHtcbiAgJHZhbHVlOiAxO1xuXG4gIEBpZiAkZXhwb25lbnQgPiAwIHtcbiAgICBAZm9yICRpIGZyb20gMSB0aHJvdWdoICRleHBvbmVudCB7XG4gICAgICAkdmFsdWU6ICR2YWx1ZSAqICRudW07XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkdmFsdWU7XG59XG5cbi8vIFJldHVybnMgdGhlIGx1bWluYW5jZSBvZiBgJGNvbG9yYCBhcyBhIGZsb2F0IChiZXR3ZWVuIDAgYW5kIDEpXG4vLyBodHRwczovL2Nzcy10cmlja3MuY29tL3NuaXBwZXRzL3Nhc3MvbHVtaW5hbmNlLWNvbG9yLWZ1bmN0aW9uL1xuQGZ1bmN0aW9uIGx1bWluYW5jZSgkY29sb3IpIHtcbiAgJGNvbG9yczogKFxuICAgICdyZWQnOiByZWQoJGNvbG9yKSxcbiAgICAnZ3JlZW4nOiBncmVlbigkY29sb3IpLFxuICAgICdibHVlJzogYmx1ZSgkY29sb3IpXG4gICk7XG5cbiAgQGVhY2ggJG5hbWUsICR2YWx1ZSBpbiAkY29sb3JzIHtcbiAgICAkYWRqdXN0ZWQ6IDA7XG4gICAgJHZhbHVlOiAkdmFsdWUgLyAyNTU7XG5cbiAgICBAaWYgJHZhbHVlIDwgMC4wMzkyOCB7XG4gICAgICAkdmFsdWU6ICR2YWx1ZSAvIDEyLjkyO1xuICAgIH0gQGVsc2Uge1xuICAgICAgJHZhbHVlOiAoJHZhbHVlICsgLjA1NSkgLyAxLjA1NTtcbiAgICAgICR2YWx1ZTogcG93KCR2YWx1ZSwgMi40KTtcbiAgICB9XG5cbiAgICAkY29sb3JzOiBtYXAtbWVyZ2UoJGNvbG9ycywgKCRuYW1lOiAkdmFsdWUpKTtcbiAgfVxuXG4gIEByZXR1cm4gKG1hcC1nZXQoJGNvbG9ycywgJ3JlZCcpICogLjIxMjYpICsgKG1hcC1nZXQoJGNvbG9ycywgJ2dyZWVuJykgKiAuNzE1MikgKyAobWFwLWdldCgkY29sb3JzLCAnYmx1ZScpICogLjA3MjIpO1xufVxuXG4vLyBDYWxjdWxhdGUgY29kZSBiYWNrZ3JvdW5kIGNvbG9yIGJhc2VkIG9uIHRoZSBsdW1pbmFuY2Ugb2YgbGluayBjb2xvclxuQGZ1bmN0aW9uIGNhbGMtYmcoJGNvbG9yKSB7XG4gIEBpZiBsdW1pbmFuY2UoJGNvbG9yKSA+PSAuNSB7XG4gICAgQHJldHVybiBtaXgoI2ZmZiwgJGNvbG9yLCA5MCUpO1xuICB9IEBlbHNlIHtcbiAgICBAcmV0dXJuIG1peCgjMDAwLCAkY29sb3IsIDcwJSk7XG4gIH1cbn1cblxuLy8gU2V0IGNvZGUgY29sb3IgdmFyaWFibGVzIGZyb20gJGNvZGUtY29sb3Jcbjpyb290IHtcbiAgLS1yZG16LWg6IHZhcigtLWNvZGUtY29sb3ItaCwgI3t1bml0bGVzc25lc3MoaHVlKCRjb2RlLWNvbG9yKSl9KTtcbiAgLS1yZG16LXM6IHZhcigtLWNvZGUtY29sb3ItcywgI3tzYXR1cmF0aW9uKCRjb2RlLWNvbG9yKX0pO1xuICAtLXJkbXotbDogdmFyKC0tY29kZS1jb2xvci1sLCAje2xpZ2h0bmVzcygkY29kZS1jb2xvcil9KTtcbn1cblxuLy8gUmVzZXQgYmFja2dyb3VuZFxuLy9cbi8vIGAuaGlnaGxpZ2h0ID4gcHJlYCAgICAgICAgICAgICAgICAgLSBKZWt5bGwgbGlxdWlkIGNvZGUgYmxvY2tzXG4vLyBgLmhpZ2hsaWdodGVyLXJvdWdlIHByZS5oaWdobGlnaHRgIC0gUm91Z2UgR0ZNIGNvZGUgYmxvY2tzXG4vL1xuLy8gUmVmOiBodHRwczovL2dpdGh1Yi5jb20vamVreWxsL2pla3lsbC9wdWxsLzQwNTNcbi5oaWdobGlnaHQgPiBwcmUsXG4uaGlnaGxpZ2h0ZXItcm91Z2UgcHJlLmhpZ2hsaWdodCB7XG4gIGJhY2tncm91bmQ6IGhzbGEodmFyKC0tcmRtei1oKSwgdmFyKC0tcmRtei1zKSwgdmFyKC0tcmRtei1sKSwgLjAzKTtcbn1cblxuLy8gR2VuZXJhbCBoaWdobGlnaHRzXG4vL1xuLy8gYC5oaWdobGlnaHQgY29kZWAgICAgICAgICAtIFJvdWdlIEdGTSBhbmQgSmVreWxsIGxpcXVpZCBjb2RlIGJsb2Nrc1xuLy8gYC5oaWdobGlnaHRlci1yb3VnZSBjb2RlYCAtIFJvdWdlIGlubGluZSBjb2RlXG4uaGlnaGxpZ2h0LFxuLmhpZ2hsaWdodGVyLXJvdWdlIHtcblxuICAvLyBTcGVjaWFsIGJhY2tncm91bmQgZm9yIHN5bnRheCBlcnJvcnNcbiAgLmVyciB7IGJhY2tncm91bmQtY29sb3I6IGhzbGEodmFyKC0tcmRtei1oKSwgY2FsYyh2YXIoLS1yZG16LXMpICogMiksIHZhcigtLXJkbXotbCksIC4xKTsgfSAvLyBFcnJvclxuXG4gIC5jICAgeyBmb250LXN0eWxlOiBpdGFsaWMgfSAvLyBDb21tZW50XG4gIC5jbSAgeyBmb250LXN0eWxlOiBpdGFsaWMgfSAvLyBDb21tZW50Lk11bHRpbGluZVxuICAuY3AgIHsgZm9udC13ZWlnaHQ6IGJvbGQgfSAgLy8gQ29tbWVudC5QcmVwcm9jXG4gIC5jMSAgeyBmb250LXN0eWxlOiBpdGFsaWMgfSAvLyBDb21tZW50LlNpbmdsZVxuICAuY3MgIHsgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc3R5bGU6IGl0YWxpYyB9IC8vIENvbW1lbnQuU3BlY2lhbFxuXG4gIC5uYyAgeyBmb250LXdlaWdodDogYm9sZCB9IC8vIE5hbWUuQ2xhc3NcbiAgLm5lICB7IGZvbnQtd2VpZ2h0OiBib2xkIH0gLy8gTmFtZS5FeGNlcHRpb25cbiAgLm5mICB7IGZvbnQtd2VpZ2h0OiBib2xkIH0gLy8gTmFtZS5GdW5jdGlvblxuXG4gIC5vICAgeyBmb250LXdlaWdodDogYm9sZCB9IC8vIE9wZXJhdG9yXG4gIC5vdyAgeyBmb250LXdlaWdodDogYm9sZCB9IC8vIE9wZXJhdG9yLldvcmRcblxuICAuZ3MgIHsgZm9udC13ZWlnaHQ6IGJvbGQgfSAgLy8gR2VuZXJpYy5TdHJvbmdcbiAgLmdlICB7IGZvbnQtc3R5bGU6IGl0YWxpYyB9IC8vIEdlbmVyaWMuRW1waFxuXG4gIC5rICAgeyBmb250LXdlaWdodDogYm9sZCB9IC8vIEtleXdvcmRcbiAgLmt0ICB7IGZvbnQtd2VpZ2h0OiBib2xkIH0gLy8gS2V5d29yZC5UeXBlXG4gIC5rYyAgeyBmb250LXdlaWdodDogYm9sZCB9IC8vIEtleXdvcmQuQ29uc3RhbnRcbiAgLmtkICB7IGZvbnQtd2VpZ2h0OiBib2xkIH0gLy8gS2V5d29yZC5EZWNsYXJhdGlvblxuICAua3AgIHsgZm9udC13ZWlnaHQ6IGJvbGQgfSAvLyBLZXl3b3JkLlBzZXVkb1xuICAua3IgIHsgZm9udC13ZWlnaHQ6IGJvbGQgfSAvLyBLZXl3b3JkLlJlc2VydmVkXG5cbiAgJG1haW4tdG9rZW5zOlxuICAgIGVyciAvLyBFcnJvclxuICAgIHggICAvLyBPdGhlclxuXG4gICAgbiAgLy8gTmFtZVxuICAgIG5hIC8vIE5hbWUuQXR0cmlidXRlXG4gICAgbmIgLy8gTmFtZS5CdWlsdGluXG4gICAgYnAgLy8gTmFtZS5CdWlsdGluLlBzZXVkb1xuICAgIG5jIC8vIE5hbWUuQ2xhc3NcbiAgICBubyAvLyBOYW1lLkNvbnN0YW50XG4gICAgbmQgLy8gTmFtZS5EZWNvcmF0b3JcbiAgICBuaSAvLyBOYW1lLkVudGl0eVxuICAgIG5lIC8vIE5hbWUuRXhjZXB0aW9uXG4gICAgbmYgLy8gTmFtZS5GdW5jdGlvblxuICAgIG5sIC8vIE5hbWUuTGFiZWxcbiAgICBubiAvLyBOYW1lLk5hbWVzcGFjZVxuICAgIG54IC8vIE5hbWUuT3RoZXJcbiAgICBudCAvLyBOYW1lLlRhZ1xuICAgIG52IC8vIE5hbWUuVmFyaWFibGVcbiAgICB2YyAvLyBOYW1lLlZhcmlhYmxlLkNsYXNzXG4gICAgdmcgLy8gTmFtZS5WYXJpYWJsZS5HbG9iYWxcbiAgICB2aSAvLyBOYW1lLlZhcmlhYmxlLkluc3RhbmNlXG5cbiAgICBnICAvLyBHZW5lcmljXG4gICAgZ2QgLy8gR2VuZXJpYy5EZWxldGVkXG4gICAgZ2UgLy8gR2VuZXJpYy5FbXBoXG4gICAgZ3IgLy8gR2VuZXJpYy5FcnJvclxuICAgIGdoIC8vIEdlbmVyaWMuSGVhZGluZ1xuICAgIGdpIC8vIEdlbmVyaWMuSW5zZXJ0ZWRcbiAgICBnbyAvLyBHZW5lcmljLk91dHB1dFxuICAgIGdwIC8vIEdlbmVyaWMuUHJvbXB0XG4gICAgZ3MgLy8gR2VuZXJpYy5TdHJvbmdcbiAgICBndSAvLyBHZW5lcmljLlN1YmhlYWRpbmdcbiAgICBndCAvLyBHZW5lcmljLlRyYWNlYmFja1xuICAgIGdsIC8vIEdlbmVyaWMuTGluZW5vXG5cbiAgICBrICAvLyBLZXl3b3JkXG4gICAga2MgLy8gS2V5d29yZC5Db25zdGFudFxuICAgIGtkIC8vIEtleXdvcmQuRGVjbGFyYXRpb25cbiAgICBrbiAvLyBLZXl3b3JkLk5hbWVzcGFjZVxuICAgIGtwIC8vIEtleXdvcmQuUHNldWRvXG4gICAga3IgLy8gS2V5d29yZC5SZXNlcnZlZFxuICAgIGt0IC8vIEtleXdvcmQuVHlwZVxuICAgIGt2IC8vIEtleXdvcmQuVmFyaWFibGVcblxuICAgIHcgIC8vIFRleHQuV2hpdGVzcGFjZVxuXG4gICAgbCAgLy8gTGl0ZXJhbFxuXG4gICAgbGQgLy8gTGl0ZXJhbC5EYXRlXG5cbiAgICBzICAvLyBMaXRlcmFsLlN0cmluZ1xuICAgIHNiIC8vIExpdGVyYWwuU3RyaW5nLkJhY2t0aWNrXG4gICAgc2MgLy8gTGl0ZXJhbC5TdHJpbmcuQ2hhclxuICAgIHNkIC8vIExpdGVyYWwuU3RyaW5nLkRvY1xuICAgIHMyIC8vIExpdGVyYWwuU3RyaW5nLkRvdWJsZVxuICAgIHNlIC8vIExpdGVyYWwuU3RyaW5nLkVzY2FwZVxuICAgIHNoIC8vIExpdGVyYWwuU3RyaW5nLkhlcmVkb2NcbiAgICBzaSAvLyBMaXRlcmFsLlN0cmluZy5JbnRlcnBvbFxuICAgIHN4IC8vIExpdGVyYWwuU3RyaW5nLk90aGVyXG4gICAgc3IgLy8gTGl0ZXJhbC5TdHJpbmcuUmVnZXhcbiAgICBzMSAvLyBMaXRlcmFsLlN0cmluZy5TaW5nbGVcbiAgICBzcyAvLyBMaXRlcmFsLlN0cmluZy5TeW1ib2xcblxuICAgIG0gIC8vIExpdGVyYWwuTnVtYmVyXG4gICAgbWYgLy8gTGl0ZXJhbC5OdW1iZXIuRmxvYXRcbiAgICBtaCAvLyBMaXRlcmFsLk51bWJlci5IZXhcbiAgICBtaSAvLyBMaXRlcmFsLk51bWJlci5JbnRlZ2VyXG4gICAgaWwgLy8gTGl0ZXJhbC5OdW1iZXIuSW50ZWdlci5Mb25nXG4gICAgbW8gLy8gTGl0ZXJhbC5OdW1iZXIuT2N0XG4gICAgbWIgLy8gTGl0ZXJhbC5OdW1iZXIuQmluXG4gICAgbXggLy8gTGl0ZXJhbC5OdW1iZXIuT3RoZXJcblxuICAgIG8gIC8vIE9wZXJhdG9yXG4gICAgb3cgLy8gT3BlcmF0b3IuV29yZFxuXG4gICAgcCAgLy8gUHVuY3R1YXRpb25cbiAgICBwaSAvLyBQdW5jdHVhdGlvbi5JbmRpY2F0b3JcbiAgO1xuXG4gIC8vIFJlZGVmaW5lIGNvZGUgY29sb3IgdG8gSFNMIGZvcm1hdFxuICBwcmUsXG4gIGNvZGUge1xuICAgIC0tcmRtei1oLWxvY2FsOiB2YXIoLS1yZG16LWgpO1xuICAgIGNvbG9yOiBoc2wodmFyKC0tcmRtei1oKSwgdmFyKC0tcmRtei1zKSwgdmFyKC0tcmRtei1sKSk7XG4gIH1cblxuICAvLyBHZW5lcmF0ZSBtYWluIGhpZ2hsaWdodHNcbiAgQGVhY2ggJHRva2VuIGluICRtYWluLXRva2VucyB7XG4gICAgJGk6IGluZGV4KCRtYWluLXRva2VucywgJHRva2VuKTtcbiAgICAuI3skdG9rZW59IHtcbiAgICAgIC0tcmRtei1oLWxvY2FsOiBjYWxjKHZhcigtLXJkbXotaCkgKyAjeyRpICogMzYwIC8gbGVuZ3RoKCRtYWluLXRva2Vucyl9KTtcbiAgICAgIGNvbG9yOiBoc2wodmFyKC0tcmRtei1oLWxvY2FsKSwgdmFyKC0tcmRtei1zKSwgdmFyKC0tcmRtei1sKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gVHdlYWsgZ2VuZXJhbCBpbnNlcnRzL2RlbGV0aW9uIGZvciBtb3JlIHNlbWFudGljIGNvbG9yc1xuICAuZ2QgeyAtLXJkbXotaC1sb2NhbDogMTA7IH1cbiAgLmdpIHsgLS1yZG16LWgtbG9jYWw6IDE1MDsgfVxuXG4gICRjb21tZW50LXRva2VuczpcbiAgICBjIC8vIENvbW1lbnRcbiAgICBjZCAvLyBDb21tZW50Lk11bHRpbGluZVxuICAgIGNtIC8vIENvbW1lbnQuTXVsdGlsaW5lXG4gICAgY3AgLy8gQ29tbWVudC5QcmVwcm9jXG4gICAgYzEgLy8gQ29tbWVudC5TaW5nbGVcbiAgICBjcyAvLyBDb21tZW50LlNwZWNpYWxcbiAgO1xuXG4gIC8vIEdlbmVyYXRlIGhpZ2hsaWdodCBmb3IgY29tbWVudHNcbiAgQGVhY2ggJHRva2VuIGluICRjb21tZW50LXRva2VucyB7XG4gICAgJGk6IGluZGV4KCRjb21tZW50LXRva2VucywgJHRva2VuKTtcbiAgICAuI3skdG9rZW59IHtcbiAgICAgIGNvbG9yOiBoc2xhKGNhbGModmFyKC0tcmRtei1oKSArICN7JGkgKiAzNjAgLyBsZW5ndGgoJG1haW4tdG9rZW5zKX0pLCBjYWxjKHZhcigtLXJkbXotcykgKiAuNyksIHZhcigtLXJkbXotbCksIC42KTtcbiAgICB9XG4gIH1cblxuICAvLyBSZXNldCBjb2RlIGJsb2NrcyBhcHBlYXJhbmNlIHdpdGggbGluZSBudW1iZXJzXG4gIHRhYmxlIHtcblxuICAgICYsXG4gICAgdGgsXG4gICAgdGQsXG4gICAgdGQgcHJlIHtcbiAgICAgIHBhZGRpbmc6IDA7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBib3JkZXI6IG5vbmU7XG4gICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgIGZvbnQtc2l6ZTogMTAwJTtcbiAgICB9XG5cbiAgICAvLyBSb3VnZSBnZW5lcmF0ZWQgY29kZWJsb2NrcyB3aXRoIGBsaW5lbm9gIHdpbGwgbmVzdCBgcHJlYCBpbnNpZGUgYW5cbiAgICAvLyBvdXR0ZXIgYHByZWAsIHRoaXMgY291bGQgaGVscCBwcmV2ZW50IFwiZG91YmxlXCIgc2Nyb2xsZXIgaXNzdWUgb24gc29tZVxuICAgIC8vIHBsYXRmb3Jtc1xuICAgIHByZSB7XG4gICAgICBvdmVyZmxvdy14OiB2aXNpYmxlO1xuICAgIH1cblxuICAgIC5ndXR0ZXIge1xuXG4gICAgICAvLyBSZXNldCB0aGVtZS1zcGVjaWZpYyB0YWJsZSBzdHlsZXNcbiAgICAgICY6Zmlyc3QtY2hpbGQsXG4gICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgICB9XG5cbiAgICAgIC5saW5lbm8ge1xuICAgICAgICBjb2xvcjogaHNsYSh2YXIoLS1yZG16LWgpLCBjYWxjKHZhcigtLXJkbXotcykgKiAuNCksIHZhcigtLXJkbXotbCksIC40KTtcbiAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmNvZGUge1xuICAgICAgcGFkZGluZy1sZWZ0OiAxZW07XG4gICAgfVxuICB9XG59XG4iLCIvL1xuLy8gVXNlciBzdHlsZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBOT1RFOiB0aGUgZm9sbG93aW5nIHVzZXIgc3R5bGVzIGFyZSBkZXNpZ25lZCBmb3IgZGVmYXVsdCB0aGVtZSBDdXJ0YW5hXG5cbi8vIEVYQU1QTEU6IGFsdGVybmF0aXZlIHRpdGxlIHNpemVcbi8vIEJ5IGRlZmF1bHQgYWxsIGhlYWRpbmcgbGV2ZWxzIGhhdmUgdGhlIHNhbWUgZm9udCBzaXplLCBidXQgbWFueSBwZW9wbGUgbWF5XG4vLyBub3QgbGlrZSB0aGlzLCBzbyBoZXJlJ3MgYW4gYWx0ZXJuYXRpdmUgZm9udCBzaXplIHN0YWNrOlxuLy8gLmNvbnRlbnQge1xuLy8gICBoMiB7IGZvbnQtc2l6ZTogMTA4JTsgb3BhY2l0eTogLjg7IH1cbi8vICAgaDMgeyBmb250LXNpemU6IDk2JTsgIG9wYWNpdHk6IC43OyB9XG4vLyAgIGg0IHsgZm9udC1zaXplOiA4NCU7ICBvcGFjaXR5OiAuNjsgfVxuLy8gICBoNSB7IGZvbnQtc2l6ZTogNzIlOyAgb3BhY2l0eTogLjU7IH1cbi8vICAgaDYgeyBmb250LXNpemU6IDYwJTsgIG9wYWNpdHk6IC40OyB9XG4vLyB9XG5cbi8vIEVYQU1QTEU6IGFsdGVybmF0aXZlIHBvc3QgdGl0bGUgY29sb3Jcbi8vIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91J3JlIHVzaW5nIHRoZSBjdXN0b20gY29sb3Igc2NoZW1lLlxuLy8gLmNvbnRlbnQgeyAubGlzdCBoMiBhLCBoZWFkZXIgaDEsIGhlYWRlciBoMSBhIHsgY29sb3I6IHZhcigtLWxpbmstY29sb3IpOyB9IH1cbi8vIC5leHRlcm5hbCBzcGFuIHsgYmFja2dyb3VuZDogdmFyKC0tbGluay1jb2xvcik7IH1cblxuLy8gRVhBTVBMRTogQ3VzdG9tIHR5cG9ncmFwaHkgZm9yIENoaW5lc2UgVHJhZGl0aW9uYWxcbi8vIDpyb290IHtcbi8vICAgLS1mb250c3RhY2stc2Fucy1zZXJpZjogXCJIZWx2ZXRpY2EgTmV1ZVwiLCBcIkhpcmFnaW5vIFNhbnMgR0JcIiwgQXJpYWwsIHNhbnMtc2VyaWY7XG4vLyAgIC0tZm9udHN0YWNrLXNlcmlmOiBHZW9yZ2lhLCBcIkhpcmFnaW5vIE1pbmNobyBQcm9OXCIsIHNlcmlmO1xuLy8gfVxuXG4vLyBFWEFNUExFOiBhbXNmLmdpdGh1Yi5pbyBjdXN0b20gYXBwZWFyYW5jZVxuOnJvb3Qge1xuICAtLWNvZGUtY29sb3ItaDogY2FsYyh2YXIoLS1saW5rLWNvbG9yLWgpICsgMTApO1xuICAtLWNvZGUtY29sb3ItczogY2FsYyh2YXIoLS1saW5rLWNvbG9yLXMpICogLjIgKyA0MCUpO1xufVxuXG4uY29udGVudCAuc3ViLXRpdGxlIHtcbiAgZm9udC1zaXplOiAxMDglO1xuICBvcGFjaXR5OiAuODtcbn1cbiJdfQ== */