.link-grid-block{text-align:center}.link-grid-block>img{margin-bottom:.75rem;width:2.75rem}@media (min-width:768px){.link-grid-block>img{width:3.75rem}}.link-grid-block h2.h2-stylized{color:var(--itd-bright-blue);font-size:var(--itd-fs-heading-h2);font-weight:var(--itd-fw-bold);line-height:var(--itd-lh-heading-h2)}.link-grid-block p.subtitle{font-size:var(--itd-fs-heading-h3);line-height:var(--itd-lh-heading-h3)}.link-grid-block ul.link-grid-wrapper{display:flex;flex-wrap:wrap;gap:.25rem;justify-content:center;list-style-type:none;margin:0;padding:2rem 0}@media (min-width:768px){.link-grid-block ul.link-grid-wrapper{gap:1.875rem;padding:3rem 0 3.25rem}}@media (min-width:1024px){.link-grid-block ul.link-grid-wrapper{padding:5rem 0 3.25rem}}.link-grid-block ul.link-grid-wrapper li{align-items:flex-start;background-color:var(--itd-gray);border-radius:var(--default-border-radius);display:flex;padding:1.25rem;width:100%}@media (min-width:768px){.link-grid-block ul.link-grid-wrapper li{display:block;padding:1.75rem 1.25rem;width:calc(47% - 2.5rem)}}@media (min-width:1024px){.link-grid-block ul.link-grid-wrapper li{padding:2rem 1.25rem 2.5rem;width:calc(31% - 2.5rem)}}@media (min-width:1200px){.link-grid-block ul.link-grid-wrapper li{width:calc(22% - 2.5rem)}}.link-grid-block ul.link-grid-wrapper li .link-icon{font-family:var(--itd-ff-icons);text-decoration:none;text-transform:none;word-wrap:normal;direction:ltr;white-space:nowrap;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;color:var(--itd-bright-blue);font-feature-settings:"liga";font-size:1.125rem;font-weight:var(--itd-fw-regular);margin-right:.75rem;padding-top:.25rem}@media (min-width:768px){.link-grid-block ul.link-grid-wrapper li .link-icon{font-size:1.5rem;margin-bottom:.5rem;margin-right:0}}.link-grid-block ul.link-grid-wrapper li a.external-link:after{content:"open_in_new";font-family:var(--itd-ff-icons);font-weight:var(--itd-fw-regular);text-decoration:none;text-transform:none;word-wrap:normal;direction:ltr;white-space:nowrap;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;-moz-osx-font-smoothing:grayscale;color:var(--itd-mint-green);font-feature-settings:"liga";font-size:1.25rem;margin-right:0;padding-top:.25rem;vertical-align:top}@media (min-width:1024px){.link-grid-block ul.link-grid-wrapper li a.external-link:after{font-size:1.375rem}}.link-grid-block ul.link-grid-wrapper li .text-wrapper{text-align:left;text-indent:0}@media (min-width:768px){.link-grid-block ul.link-grid-wrapper li .text-wrapper{text-align:center}}.link-grid-block ul.link-grid-wrapper li .text-wrapper h3{color:var(--itd-bright-blue);font-weight:var(--itd-fw-bold)}@media (min-width:1024px){.link-grid-block ul.link-grid-wrapper li .text-wrapper h3{font-size:var(--itd-fs-heading-h4);line-height:var(--itd-lh-heading-h4)}}.link-grid-block ul.link-grid-wrapper li .text-wrapper h3 a{text-decoration:none}.link-grid-block ul.link-grid-wrapper li .text-wrapper h3 a:active,.link-grid-block ul.link-grid-wrapper li .text-wrapper h3 a:focus,.link-grid-block ul.link-grid-wrapper li .text-wrapper h3 a:hover{text-decoration:underline}.link-grid-block ul.link-grid-wrapper li .text-wrapper p{font-size:var(--itd-fs-body-16);line-height:var(--itd-lh-body-16);margin:0}/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpbmstZ3JpZC9zcmMvbGluay1ncmlkLnNjc3MiLCJsaW5rLWdyaWQvc3JjL2xpbmstZ3JpZC5jc3MiLCIuLi9saWJyYXJpZXMvcGFydGlhbHMvX2JyZWFrcG9pbnRzLnNjc3MiLCIuLi9saWJyYXJpZXMvcGFydGlhbHMvX3R5cG9ncmFwaHkuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxpQkFDRSxpQkNGRixDRElFLHFCQUVFLG9CQUFBLENBREEsYUNESixDQ3FISSx5QkZySEYscUJBS0ksYUNESixDQUNGLENESUUsZ0NBR0UsNEJBQUEsQ0dTRixrQ0FBQSxDSFZFLDhCQUFBLENHV0Ysb0NGWEYsQ0RJRSw0QkdNQSxrQ0FBQSxDQUNBLG9DRlBGLENESUUsc0NBSUUsWUFBQSxDQUNBLGNBQUEsQ0FFQSxVQUFBLENBREEsc0JBQUEsQ0FIQSxvQkFBQSxDQURBLFFBQUEsQ0FEQSxjQ0lKLENDNkZJLHlCRmxHRixzQ0FXSSxZQUFBLENBREEsc0JDQUosQ0FDRixDQ3VGSSwwQkZsR0Ysc0NBZ0JJLHNCQ0FKLENBQ0YsQ0RFSSx5Q0FNRSxzQkFBQSxDQUxBLGdDQUFBLENBR0EsMENBQUEsQ0FDQSxZQUFBLENBSEEsZUFBQSxDQUNBLFVDR04sQ0N5RUkseUJGL0VBLHlDQVlJLGFBQUEsQ0FIQSx1QkFBQSxDQUVBLHdCQ0NOLENBQ0YsQ0NrRUksMEJGL0VBLHlDQWdCSSwyQkFBQSxDQUVBLHdCQ0FOLENBQ0YsQ0M0REksMEJGL0VBLHlDQXVCSSx3QkNBTixDQUNGLENERU0sb0RHMEpKLCtCQUFBLENBRUEsb0JBQUEsQ0FDQSxtQkFBQSxDQUNBLGdCQUFBLENBRUEsYUFBQSxDQURBLGtCQUFBLENBRUEsa0NBQUEsQ0FDQSxpQ0FBQSxDQUNBLGlDQUFBLENIN0pNLDRCQUFBLENHK0pOLDRCQUFBLENIbEtNLGtCQUFBLENBREEsaUNBQUEsQ0FFQSxtQkFBQSxDQUNBLGtCQ1lSLENDb0NJLHlCRnJERSxvREFTSSxnQkFBQSxDQUVBLG1CQUFBLENBREEsY0NhUixDQUNGLENEUlEsK0RBQ0UscUJBQUEsQ0d5SVIsK0JBQUEsQ0FDQSxpQ0FBQSxDQUNBLG9CQUFBLENBQ0EsbUJBQUEsQ0FDQSxnQkFBQSxDQUVBLGFBQUEsQ0FEQSxrQkFBQSxDQUVBLGtDQUFBLENBQ0EsaUNBQUEsQ0FDQSxpQ0FBQSxDSDdJUSwyQkFBQSxDRytJUiw0QkFBQSxDSGxKUSxpQkFBQSxDQUNBLGNBQUEsQ0FDQSxrQkFBQSxDQUVBLGtCQ3FCVixDQ1NJLDBCRnJDSSwrREFVSSxrQkNzQlYsQ0FDRixDRGxCTSx1REFDRSxlQUFBLENBQ0EsYUNvQlIsQ0NBSSx5QkZ0QkUsdURBS0ksaUJDcUJSLENBQ0YsQ0RuQlEsMERBQ0UsNEJBQUEsQ0FDQSw4QkNxQlYsQ0NUSSwwQkZkSSwwREdsRk4sa0NBQUEsQ0FDQSxvQ0Y2R0EsQ0FDRixDRHJCVSw0REFDRSxvQkN1QlosQ0RyQlksdU1BR0UseUJDcUJkLENEaEJRLHlER3JHTiwrQkFBQSxDQUNBLGlDQUFBLENIc0dRLFFDbUJWIiwiZmlsZSI6ImxpbmstZ3JpZC9saW5rLWdyaWQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQHVzZSAnLi4vLi4vLi4vbGlicmFyaWVzL3BhcnRpYWxzL3BhcnRpYWxzJyBhcyAqO1xuXG4vLyBGZWF0dXJlZCBMaW5rIENhcmRzIHN0eWxlc1xuLmxpbmstZ3JpZC1ibG9jayB7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcblxuICA+IGltZyB7XG4gICAgd2lkdGg6IHJlbSg0NHB4KTtcbiAgICBtYXJnaW4tYm90dG9tOiByZW0oMTJweCk7XG5cbiAgICBAaW5jbHVkZSBicC1taW4odGFibGV0KSB7XG4gICAgICB3aWR0aDogcmVtKDYwcHgpO1xuICAgIH1cbiAgfVxuXG4gIGgyLmgyLXN0eWxpemVkIHtcbiAgICBAaW5jbHVkZSB0eXBlLXNjYWxlKGhlYWRpbmcsIGgyKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0taXRkLWZ3LWJvbGQpO1xuICAgIGNvbG9yOiB2YXIoLS1pdGQtYnJpZ2h0LWJsdWUpO1xuICB9XG5cbiAgcC5zdWJ0aXRsZSB7XG4gICAgQGluY2x1ZGUgdHlwZS1zY2FsZShoZWFkaW5nLCBoMyk7XG4gIH1cblxuICB1bC5saW5rLWdyaWQtd3JhcHBlciB7XG4gICAgcGFkZGluZzogcmVtKDMycHgpIDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IHJlbSg0cHgpO1xuXG4gICAgQGluY2x1ZGUgYnAtbWluKHRhYmxldCkge1xuICAgICAgcGFkZGluZzogcmVtKDQ4cHgpIDAgcmVtKDUycHgpO1xuICAgICAgZ2FwOiByZW0oMzBweCk7XG4gICAgfVxuXG4gICAgQGluY2x1ZGUgYnAtbWluKHNtLWRlc2t0b3ApIHtcbiAgICAgIHBhZGRpbmctdG9wOiByZW0oODBweCk7XG4gICAgICBwYWRkaW5nOiByZW0oODBweCkgMCByZW0oNTJweCk7XG4gICAgfVxuXG4gICAgbGkge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taXRkLWdyYXkpO1xuICAgICAgcGFkZGluZzogcmVtKDIwcHgpO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBib3JkZXItcmFkaXVzOiB2YXIoLS1kZWZhdWx0LWJvcmRlci1yYWRpdXMpO1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXG4gICAgICBAaW5jbHVkZSBicC1taW4odGFibGV0KSB7XG4gICAgICAgIHBhZGRpbmc6IHJlbSgyOHB4KSByZW0oMjBweCk7XG4gICAgICAgIC8vIFNldHRpbmcgd2lkdGggdG8gaW5jbHVkZSBwYWRkaW5nXG4gICAgICAgIHdpZHRoOiBjYWxjKDQ3JSAtIHJlbSg0MHB4KSk7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICBAaW5jbHVkZSBicC1taW4oc20tZGVza3RvcCkge1xuICAgICAgICBwYWRkaW5nOiByZW0oMzJweCkgcmVtKDIwcHgpIHJlbSg0MHB4KTtcbiAgICAgICAgLy8gU2V0dGluZyB3aWR0aCB0byBpbmNsdWRlIHBhZGRpbmdcbiAgICAgICAgd2lkdGg6IGNhbGMoMzElIC0gcmVtKDQwcHgpKTtcbiAgICAgIH1cblxuICAgICAgQGluY2x1ZGUgYnAtbWluKGRlc2t0b3ApIHtcbiAgICAgICAgLy8gU2V0dGluZyB3aWR0aCB0byBpbmNsdWRlIHBhZGRpbmdcbiAgICAgICAgd2lkdGg6IGNhbGMoMjIlIC0gcmVtKDQwcHgpKTtcbiAgICAgIH1cblxuICAgICAgLmxpbmstaWNvbiB7XG4gICAgICAgIEBpbmNsdWRlIGZvbnQtbWF0ZXJpYWwtaWNvbnM7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1pdGQtZnctcmVndWxhcik7XG4gICAgICAgIGZvbnQtc2l6ZTogcmVtKDE4cHgpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IHJlbSgxMnB4KTtcbiAgICAgICAgcGFkZGluZy10b3A6IHJlbSg0cHgpO1xuICAgICAgICBjb2xvcjogdmFyKC0taXRkLWJyaWdodC1ibHVlKTtcblxuICAgICAgICBAaW5jbHVkZSBicC1taW4odGFibGV0KSB7XG4gICAgICAgICAgZm9udC1zaXplOiByZW0oMjRweCk7XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbSg4cHgpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGEuZXh0ZXJuYWwtbGluayB7XG4gICAgICAgICY6OmFmdGVyIHtcbiAgICAgICAgICBjb250ZW50OiAnb3Blbl9pbl9uZXcnO1xuICAgICAgICAgIEBpbmNsdWRlIGZvbnQtbWF0ZXJpYWwtaWNvbnM7XG4gICAgICAgICAgZm9udC1zaXplOiByZW0oMjBweCk7XG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiAwO1xuICAgICAgICAgIHBhZGRpbmctdG9wOiByZW0oNHB4KTtcbiAgICAgICAgICBjb2xvcjogdmFyKC0taXRkLW1pbnQtZ3JlZW4pO1xuICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG5cbiAgICAgICAgICBAaW5jbHVkZSBicC1taW4oc20tZGVza3RvcCkge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0oMjJweCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC50ZXh0LXdyYXBwZXIge1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB0ZXh0LWluZGVudDogMDtcblxuICAgICAgICBAaW5jbHVkZSBicC1taW4odGFibGV0KSB7XG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICB9XG5cbiAgICAgICAgaDMge1xuICAgICAgICAgIGNvbG9yOiB2YXIoLS1pdGQtYnJpZ2h0LWJsdWUpO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1pdGQtZnctYm9sZCk7XG5cbiAgICAgICAgICBAaW5jbHVkZSBicC1taW4oc20tZGVza3RvcCkge1xuICAgICAgICAgICAgQGluY2x1ZGUgdHlwZS1zY2FsZShoZWFkaW5nLCBoNCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYSB7XG4gICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgICAgICAgICAgICY6aG92ZXIsXG4gICAgICAgICAgICAmOmZvY3VzLFxuICAgICAgICAgICAgJjphY3RpdmUge1xuICAgICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBwIHtcbiAgICAgICAgICBAaW5jbHVkZSB0eXBlLXNjYWxlKGJvZHksIDE2KTtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi5saW5rLWdyaWQtYmxvY2sge1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG4ubGluay1ncmlkLWJsb2NrID4gaW1nIHtcbiAgd2lkdGg6IDIuNzVyZW07XG4gIG1hcmdpbi1ib3R0b206IDAuNzVyZW07XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmxpbmstZ3JpZC1ibG9jayA+IGltZyB7XG4gICAgd2lkdGg6IDMuNzVyZW07XG4gIH1cbn1cbi5saW5rLWdyaWQtYmxvY2sgaDIuaDItc3R5bGl6ZWQge1xuICBmb250LXNpemU6IHZhcigtLWl0ZC1mcy1oZWFkaW5nLWgyKTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWl0ZC1saC1oZWFkaW5nLWgyKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWl0ZC1mdy1ib2xkKTtcbiAgY29sb3I6IHZhcigtLWl0ZC1icmlnaHQtYmx1ZSk7XG59XG4ubGluay1ncmlkLWJsb2NrIHAuc3VidGl0bGUge1xuICBmb250LXNpemU6IHZhcigtLWl0ZC1mcy1oZWFkaW5nLWgzKTtcbiAgbGluZS1oZWlnaHQ6IHZhcigtLWl0ZC1saC1oZWFkaW5nLWgzKTtcbn1cbi5saW5rLWdyaWQtYmxvY2sgdWwubGluay1ncmlkLXdyYXBwZXIge1xuICBwYWRkaW5nOiAycmVtIDA7XG4gIG1hcmdpbjogMDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IDAuMjVyZW07XG59XG5AbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIHtcbiAgLmxpbmstZ3JpZC1ibG9jayB1bC5saW5rLWdyaWQtd3JhcHBlciB7XG4gICAgcGFkZGluZzogM3JlbSAwIDMuMjVyZW07XG4gICAgZ2FwOiAxLjg3NXJlbTtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAubGluay1ncmlkLWJsb2NrIHVsLmxpbmstZ3JpZC13cmFwcGVyIHtcbiAgICBwYWRkaW5nLXRvcDogNXJlbTtcbiAgICBwYWRkaW5nOiA1cmVtIDAgMy4yNXJlbTtcbiAgfVxufVxuLmxpbmstZ3JpZC1ibG9jayB1bC5saW5rLWdyaWQtd3JhcHBlciBsaSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWl0ZC1ncmF5KTtcbiAgcGFkZGluZzogMS4yNXJlbTtcbiAgd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IHZhcigtLWRlZmF1bHQtYm9yZGVyLXJhZGl1cyk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5saW5rLWdyaWQtYmxvY2sgdWwubGluay1ncmlkLXdyYXBwZXIgbGkge1xuICAgIHBhZGRpbmc6IDEuNzVyZW0gMS4yNXJlbTtcbiAgICB3aWR0aDogY2FsYyg0NyUgLSAyLjVyZW0pO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICB9XG59XG5AbWVkaWEgKG1pbi13aWR0aDogMTAyNHB4KSB7XG4gIC5saW5rLWdyaWQtYmxvY2sgdWwubGluay1ncmlkLXdyYXBwZXIgbGkge1xuICAgIHBhZGRpbmc6IDJyZW0gMS4yNXJlbSAyLjVyZW07XG4gICAgd2lkdGg6IGNhbGMoMzElIC0gMi41cmVtKTtcbiAgfVxufVxuQG1lZGlhIChtaW4td2lkdGg6IDEyMDBweCkge1xuICAubGluay1ncmlkLWJsb2NrIHVsLmxpbmstZ3JpZC13cmFwcGVyIGxpIHtcbiAgICB3aWR0aDogY2FsYygyMiUgLSAyLjVyZW0pO1xuICB9XG59XG4ubGluay1ncmlkLWJsb2NrIHVsLmxpbmstZ3JpZC13cmFwcGVyIGxpIC5saW5rLWljb24ge1xuICBmb250LWZhbWlseTogdmFyKC0taXRkLWZmLWljb25zKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWl0ZC1mdy1yZWd1bGFyKTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbiAgd29yZC13cmFwOiBub3JtYWw7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIGRpcmVjdGlvbjogbHRyO1xuICAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDtcbiAgdGV4dC1yZW5kZXJpbmc6IG9wdGltaXplTGVnaWJpbGl0eTtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgLXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3M6IFwibGlnYVwiO1xuICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwibGlnYVwiO1xuICBmb250LXdlaWdodDogdmFyKC0taXRkLWZ3LXJlZ3VsYXIpO1xuICBmb250LXNpemU6IDEuMTI1cmVtO1xuICBtYXJnaW4tcmlnaHQ6IDAuNzVyZW07XG4gIHBhZGRpbmctdG9wOiAwLjI1cmVtO1xuICBjb2xvcjogdmFyKC0taXRkLWJyaWdodC1ibHVlKTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiA3NjhweCkge1xuICAubGluay1ncmlkLWJsb2NrIHVsLmxpbmstZ3JpZC13cmFwcGVyIGxpIC5saW5rLWljb24ge1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVyZW07XG4gIH1cbn1cbi5saW5rLWdyaWQtYmxvY2sgdWwubGluay1ncmlkLXdyYXBwZXIgbGkgYS5leHRlcm5hbC1saW5rOjphZnRlciB7XG4gIGNvbnRlbnQ6IFwib3Blbl9pbl9uZXdcIjtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWl0ZC1mZi1pY29ucyk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1pdGQtZnctcmVndWxhcik7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIHdvcmQtd3JhcDogbm9ybWFsO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBkaXJlY3Rpb246IGx0cjtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIC13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImxpZ2FcIjtcbiAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiBcImxpZ2FcIjtcbiAgZm9udC1zaXplOiAxLjI1cmVtO1xuICBtYXJnaW4tcmlnaHQ6IDA7XG4gIHBhZGRpbmctdG9wOiAwLjI1cmVtO1xuICBjb2xvcjogdmFyKC0taXRkLW1pbnQtZ3JlZW4pO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDEwMjRweCkge1xuICAubGluay1ncmlkLWJsb2NrIHVsLmxpbmstZ3JpZC13cmFwcGVyIGxpIGEuZXh0ZXJuYWwtbGluazo6YWZ0ZXIge1xuICAgIGZvbnQtc2l6ZTogMS4zNzVyZW07XG4gIH1cbn1cbi5saW5rLWdyaWQtYmxvY2sgdWwubGluay1ncmlkLXdyYXBwZXIgbGkgLnRleHQtd3JhcHBlciB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIHRleHQtaW5kZW50OiAwO1xufVxuQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gIC5saW5rLWdyaWQtYmxvY2sgdWwubGluay1ncmlkLXdyYXBwZXIgbGkgLnRleHQtd3JhcHBlciB7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB9XG59XG4ubGluay1ncmlkLWJsb2NrIHVsLmxpbmstZ3JpZC13cmFwcGVyIGxpIC50ZXh0LXdyYXBwZXIgaDMge1xuICBjb2xvcjogdmFyKC0taXRkLWJyaWdodC1ibHVlKTtcbiAgZm9udC13ZWlnaHQ6IHZhcigtLWl0ZC1mdy1ib2xkKTtcbn1cbkBtZWRpYSAobWluLXdpZHRoOiAxMDI0cHgpIHtcbiAgLmxpbmstZ3JpZC1ibG9jayB1bC5saW5rLWdyaWQtd3JhcHBlciBsaSAudGV4dC13cmFwcGVyIGgzIHtcbiAgICBmb250LXNpemU6IHZhcigtLWl0ZC1mcy1oZWFkaW5nLWg0KTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0taXRkLWxoLWhlYWRpbmctaDQpO1xuICB9XG59XG4ubGluay1ncmlkLWJsb2NrIHVsLmxpbmstZ3JpZC13cmFwcGVyIGxpIC50ZXh0LXdyYXBwZXIgaDMgYSB7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cbi5saW5rLWdyaWQtYmxvY2sgdWwubGluay1ncmlkLXdyYXBwZXIgbGkgLnRleHQtd3JhcHBlciBoMyBhOmhvdmVyLCAubGluay1ncmlkLWJsb2NrIHVsLmxpbmstZ3JpZC13cmFwcGVyIGxpIC50ZXh0LXdyYXBwZXIgaDMgYTpmb2N1cywgLmxpbmstZ3JpZC1ibG9jayB1bC5saW5rLWdyaWQtd3JhcHBlciBsaSAudGV4dC13cmFwcGVyIGgzIGE6YWN0aXZlIHtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG4ubGluay1ncmlkLWJsb2NrIHVsLmxpbmstZ3JpZC13cmFwcGVyIGxpIC50ZXh0LXdyYXBwZXIgcCB7XG4gIGZvbnQtc2l6ZTogdmFyKC0taXRkLWZzLWJvZHktMTYpO1xuICBsaW5lLWhlaWdodDogdmFyKC0taXRkLWxoLWJvZHktMTYpO1xuICBtYXJnaW46IDA7XG59IiwiQHVzZSBcInNhc3M6bGlzdFwiO1xuLy9cbi8vIE1peGlucyAtIEJyZWFrcG9pbnRzXG4vLyBCcmVha3BvaW50IHZpZXdwb3J0IHNpemVzIGFuZCBtZWRpYSBxdWVyaWVzLiBCcmVha3BvaW50cyBhcmUgZGVmaW5lZCBhcyBhIG1hcCBvZiAobmFtZTogbWluaW11bSB3aWR0aCksIG9yZGVyIGZyb21cbi8vIHhzbWFsbCB0byB4bGFyZ2U6ICh4czogMCwgc206IDU3NnB4LCBtZDogNzY4cHgsIGxnOiA5OTJweCwgeGw6IDEyMDBweCkuIFRoZSBtYXAgZGVmaW5lZCBpbiB0aGUgYCRncmlkLWJyZWFrcG9pbnRzYFxuLy8gZ2xvYmFsIHZhcmlhYmxlIGlzIHVzZWQgYXMgdGhlIGAkYnJlYWtwb2ludHNgIGFyZ3VtZW50IGJ5IGRlZmF1bHQuXG4vL1xuLy8gLSAwMSAtIEltcG9ydHNcbi8vIC0gMDIgLSBNYXBwaW5nXG4vLyAtIDAzIC0gRnVuY3Rpb25zIGZvciBCcmVha3BvaW50c1xuLy8gICAtIDAxIC0gQnJlYWtwb2ludCBNaW5pbXVtXG4vLyAgIC0gMDIgLSBCcmVha3BvaW50IE1heGltdW1cbi8vICAgLSAwMyAtIEJyZWFrcG9pbnQgSW5maXhcbi8vIC0gMDQgLSBNaW54aW5zIGZvciBCcmVha3BvaW50c1xuLy8gICAtIDAxIC0gTWluaW11bSBCcmVha3BvaW50XG4vLyAgIC0gMDIgLSBNYXhpbXVtIEJyZWFrcG9pbnRcbi8vICAgLSAwMyAtIEJldHdlZW4gQnJlYWtwb2ludFxuLy8gICAtIDA0IC0gT25seSBCcmVha3BvaW50XG4vL1xuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gIDAxIC0gSW1wb3J0c1xuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkB1c2UgJ3Nhc3M6bWFwJztcblxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vICAwMiAtIE1hcHBpbmdcbi8vICBEZWZhdWx0IG1hcHBpbmcgb2YgZ3JpZCBicmVha3BvaW50cywgd2hpY2ggaXMgdXNlZCBpbiB0aGUgZnVuY3Rpb24gYW5kIG1peGluIGJyZWFrcG9pbnQgZmlsZXMuIEFuIGV4YW1wbGUgb2YgdXNpbmdcbi8vICBicmVha3BvaW50cyBpbiBhIGZpbGUgaXMgYnkgdXNpbmcgdGhlIG1peGluIHdpdGggdGhlIG5hbWUgb2YgYSBicmVha3BvaW50OiBgQGluY2x1ZGUgYnAtbWluKHRhYmxldCkge31gLlxuLy9cbi8vICBUaGVzZSBicmVha3BvaW50cyBtYXkgYmUgYWx0ZXJlZCBkZXBlbmRpbmcgb24gdGhlIHRoZW1lIG5lZWRzLlxuLy9cbi8vICBOb3RlOiBUaGUgYnJlYWtwb2ludHMgbGlzdGVkIGhlcmUgY29ycmVzcG9uZCB3aXRoIGJyZWFrcG9pbnRzIGRlZmluZWQgaW4gdGhlICR0eXBvZ3JhcGhpYy1zY2FsZVxuLy8gIFdoZW4gcmVtb3Zpbmcgb3IgcmVuYW1pbmcgYnJlYWtwb2ludHMgaGVyZSwgYmUgc3VyZSB0byB1cGRhdGUgdGhlIGNvcnJlc3BvbmRpbmcgYnJlYWtwb2ludHMgaW5cbi8vICBgdHlwb2dyYXBoeS5zY3NzYCBhcyBuZWVkZWQuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4kZ3JpZC1icmVha3BvaW50czogKFxuICBtb2JpbGU6IDBweCxcbiAgbGctbW9iaWxlOiA0NzVweCxcbiAgc20tdGFibGV0OiA1NzZweCxcbiAgdGFibGV0OiA3NjhweCxcbiAgbGctdGFibGV0OiA5OTJweCxcbiAgc20tZGVza3RvcDogMTAyNHB4LFxuICBkZXNrdG9wOiAxMjAwcHgsXG4gIGxnLWRlc2t0b3A6IDE0NDBweCxcbiAgbWF4LXdpZHRoOiAxNTAwcHgsXG4gIHdyYXBwZXI6IDE2MjBweCxcbik7XG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAgMDMgLSBGdW5jdGlvbnM6IEJyZWFrcG9pbnQgTmV4dFxuLy8gIE5hbWUgb2YgdGhlIG5leHQgYnJlYWtwb2ludCwgb3IgbnVsbCBmb3IgdGhlIGxhc3QgYnJlYWtwb2ludC5cbi8vICAtIEBwYXJhbSAkbmFtZTogU2VsZWN0ZWQgYnJlYWtwb2ludCBuYW1lIGFzIGRlZmluZWQgaW4gbWFwcGluZ3MgYWJvdmUuXG4vLyAgLSBAcGFyYW0gJGJyZWFrcG9pbnRzOiBCcmVha3BvaW50cyBtYXBwaW5nIHZhbHVlcyBhcyBkZWZpbmVkIGluIG1hcHBpbmdzIGFib3ZlLlxuLy8gIC0gQHBhcmFtICRicmVha3BvaW50LW5hbWVzOiBCcmVha3BvaW50cyBtYXBwaW5nIG5hbWVzIGFzIGRlZmluZWQgaW4gbWFwcGluZ3MgYWJvdmUuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1uZXh0KFxuICAkbmFtZSxcbiAgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cyxcbiAgJGJyZWFrcG9pbnQtbmFtZXM6IG1hcC5rZXlzKCRicmVha3BvaW50cylcbikge1xuICAkbjogbGlzdC5pbmRleCgkYnJlYWtwb2ludC1uYW1lcywgJG5hbWUpO1xuICBAaWYgbm90ICRuIHtcbiAgICBAZXJyb3IgXCJicmVha3BvaW50IGAjeyRuYW1lfWAgbm90IGZvdW5kIGluIGAjeyRicmVha3BvaW50c31gXCI7XG4gIH1cbiAgQHJldHVybiBpZihcbiAgICAkbiA8IGxpc3QubGVuZ3RoKCRicmVha3BvaW50LW5hbWVzKSxcbiAgICBsaXN0Lm50aCgkYnJlYWtwb2ludC1uYW1lcywgJG4gKyAxKSxcbiAgICBudWxsXG4gICk7XG59XG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAgMDMgLSBGdW5jdGlvbnM6IDAxIC0gQnJlYWtwb2ludCBNaW5pbXVtXG4vLyAgTWluaW11bSBicmVha3BvaW50IHdpZHRoLiBOdWxsIGZvciB0aGUgc21hbGxlc3QgKGZpcnN0KSBicmVha3BvaW50LlxuLy8gIC0gQHBhcmFtICRuYW1lOiBTZWxlY3RlZCBicmVha3BvaW50IG5hbWUgYXMgZGVmaW5lZCBpbiBtYXBwaW5ncyBhYm92ZS5cbi8vICAtIEBwYXJhbSAkYnJlYWtwb2ludHM6IEJyZWFrcG9pbnRzIG1hcHBpbmcgdmFsdWVzIGFzIGRlZmluZWQgaW4gbWFwcGluZ3MgYWJvdmUuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AZnVuY3Rpb24gYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogbWFwLmdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgQHJldHVybiBpZigkbWluICE9IDAsICRtaW4sIG51bGwpO1xufVxuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gIDAzIC0gRnVuY3Rpb25zOiAwMiAtIEJyZWFrcG9pbnQgTWF4aW11bVxuLy8gIFRoZSBtYXhpbXVtIHZhbHVlIGlzIHJlZHVjZWQgYnkgMC4wMnB4IHRvIHdvcmsgYXJvdW5kIHRoZSBsaW1pdGF0aW9ucyBvZiBgbWluLWAgYW5kIGBtYXgtYCBwcmVmaXhlcyBhbmQgdmlld3BvcnRzXG4vLyAgd2l0aCBmcmFjdGlvbmFsIHdpZHRocy4gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9tZWRpYXF1ZXJpZXMtNC8jbXEtbWluLW1heC4gVXNlcyAwLjAycHggcmF0aGVyIHRoYW4gMC4wMXB4IHRvIHdvcmtcbi8vICBhcm91bmQgYSBjdXJyZW50IHJvdW5kaW5nIGJ1ZyBpbiBTYWZhcmkuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc4MjYxXG4vLyAgLSBAcGFyYW0gJG5hbWU6IFNlbGVjdGVkIGJyZWFrcG9pbnQgbmFtZSBhcyBkZWZpbmVkIGluIG1hcHBpbmdzIGFib3ZlLlxuLy8gIC0gQHBhcmFtICRicmVha3BvaW50czogQnJlYWtwb2ludHMgbWFwcGluZyB2YWx1ZXMgYXMgZGVmaW5lZCBpbiBtYXBwaW5ncyBhYm92ZS5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBmdW5jdGlvbiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBtYXAuZ2V0KCRicmVha3BvaW50cywgJG5hbWUpO1xuICBAcmV0dXJuIGlmKCRtYXggYW5kICRtYXggPiAwLCAkbWF4IC0gMC4wMiwgbnVsbCk7XG59XG5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAgMDMgLSBGdW5jdGlvbnM6IDAzIC0gQnJlYWtwb2ludCBJbmZpeFxuLy8gIFJldHVybnMgYSBibGFuayBzdHJpbmcgaWYgc21hbGxlc3QgYnJlYWtwb2ludCwgb3RoZXJ3aXNlIHJldHVybnMgdGhlIG5hbWUgd2l0aCBhIGRhc2ggaW4gZnJvbnQuIFVzZWZ1bCBmb3IgbWFraW5nXG4vLyAgcmVzcG9uc2l2ZSB1dGlsaXRpZXMuXG4vLyAgLSBAcGFyYW0gJG5hbWU6IFNlbGVjdGVkIGJyZWFrcG9pbnQgbmFtZSBhcyBkZWZpbmVkIGluIG1hcHBpbmdzIGFib3ZlLlxuLy8gIC0gQHBhcmFtICRicmVha3BvaW50czogQnJlYWtwb2ludHMgbWFwcGluZyB2YWx1ZXMgYXMgZGVmaW5lZCBpbiBtYXBwaW5ncyBhYm92ZS5cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBmdW5jdGlvbiBicmVha3BvaW50LWluZml4KCRuYW1lLCAkYnJlYWtwb2ludHM6ICRncmlkLWJyZWFrcG9pbnRzKSB7XG4gIEByZXR1cm4gaWYoYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cykgPT0gbnVsbCwgJycsICctI3skbmFtZX0nKTtcbn1cblxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vICAwNCAtIE1peGluOiAwMSAtIE1pbmltdW0gQnJlYWtwb2ludFxuLy8gIE1lZGlhL3NjcmVlbi1zaXplIG9mIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJyZWFrcG9pbnQgd2lkdGggLS0gYXBwbHkgdG8gc2NyZWVuLXNpemVzIGFib3ZlIHRoZSBicmVha3BvaW50IHNwZWNpZmllZC5cbi8vICAtIEBwYXJhbSAkbmFtZTogU2VsZWN0ZWQgYnJlYWtwb2ludCBuYW1lIGFzIGRlZmluZWQgaW4gcGFydGlhbHMvc2V0dGluZ3MvX2JyZWFrcG9pbnRzLnNjc3Ncbi8vICAtIEBwYXJhbSAkYnJlYWtwb2ludHM6IEJyZWFrcG9pbnRzIG1hcHBpbmcgdmFsdWVzIGFzIGRlZmluZWQgaW4gcGFydGlhbHMvc2V0dGluZ3MvX2JyZWFrcG9pbnRzLnNjc3Ncbi8vICAtIEBleGFtcGxlID0gQGluY2x1ZGUgYnAtbWluKGxnLXRhYmxldCkge31cbi8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBtaXhpbiBicC1taW4oJG5hbWUsICRicmVha3BvaW50czogJGdyaWQtYnJlYWtwb2ludHMpIHtcbiAgJG1pbjogYnJlYWtwb2ludC1taW4oJG5hbWUsICRicmVha3BvaW50cyk7XG4gIEBpZiAkbWluIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZXJyb3IgJ1sgI3skbmFtZX0gXSBpcyBub3QgZGVmaW5lZCBpbiAkYnJlYWtwb2ludHMuIEZvdW5kOiBbICN7bWFwLmtleXMoJGJyZWFrcG9pbnRzKX0gXS4gTWFrZSBzdXJlIHRoZSBicmVha3BvaW50IHlvdSBhcmUgdHJ5aW5nIHRvIHVzZSBpcyBkZWZpbmVkLic7XG4gIH1cbn1cblxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vICAwNCAtIE1peGluOiAwMiAtIE1heGltdW0gQnJlYWtwb2ludFxuLy8gIE1lZGlhL3NjcmVlbi1zaXplIG9mIGF0IG1vc3QgdGhlIG1heGltdW0gYnJlYWtwb2ludCB3aWR0aCAtLSBhcHBseSB0byBzY3JlZW4tc2l6ZXMgYmVsb3cgdGhlIGJyZWFrcG9pbnQgc3BlY2lmaWVkLlxuLy8gIC0gQHBhcmFtICRuYW1lOiBTZWxlY3RlZCBicmVha3BvaW50IG5hbWUgYXMgZGVmaW5lZCBpbiBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc1xuLy8gIC0gQHBhcmFtICRicmVha3BvaW50czogQnJlYWtwb2ludHMgbWFwcGluZyB2YWx1ZXMgYXMgZGVmaW5lZCBpbiBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc1xuLy8gIC0gQGV4YW1wbGUgPSBAaW5jbHVkZSBicC1tYXgobGctdGFibGV0KSB7fVxuLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQG1peGluIGJwLW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWF4OiBicmVha3BvaW50LW1heCgkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgQGlmICRtYXgge1xuICAgIEBtZWRpYSAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBlcnJvciAnWyAjeyRuYW1lfSBdIGlzIG5vdCBkZWZpbmVkIGluICRicmVha3BvaW50cy4gRm91bmQ6IFsgI3ttYXAua2V5cygkYnJlYWtwb2ludHMpfSBdLiBNYWtlIHN1cmUgdGhlIGJyZWFrcG9pbnQgeW91IGFyZSB0cnlpbmcgdG8gdXNlIGlzIGRlZmluZWQuJztcbiAgfVxufVxuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gIDA0IC0gTWl4aW46IDAzIC0gQmV0d2VlbiBCcmVha3BvaW50XG4vLyAgTWVkaWEvc2NyZWVuLXNpemUgdGhhdCBzcGFucyBtdWx0aXBsZSBicmVha3BvaW50IHdpZHRocyAtLSBhcHBseSB0byBzY3JlZW4tc2l6ZXMgYmV0d2VlbiB0aGUgYnJlYWtwb2ludHMgc3BlY2lmaWVkLlxuLy8gIC0gQHBhcmFtICRsb3dlcjogU2VsZWN0ZWQgbWluaW11bSBicmVha3BvaW50IG5hbWUgYXMgZGVmaW5lZCBpbiBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc1xuLy8gIC0gQHBhcmFtICR1cHBlcjogU2VsZWN0ZWQgbWF4aW11bSBicmVha3BvaW50IG5hbWUgYXMgZGVmaW5lZCBpbiBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc1xuLy8gIC0gQHBhcmFtICRicmVha3BvaW50czogQnJlYWtwb2ludHMgbWFwcGluZyB2YWx1ZXMgYXMgZGVmaW5lZCBpbiBwYXJ0aWFscy9zZXR0aW5ncy9fYnJlYWtwb2ludHMuc2Nzc1xuLy8gIC0gQGV4YW1wbGUgPSBAaW5jbHVkZSBicC1iZXR3ZWVuKHhzbWFsbCwgbGFyZ2UpIHt9XG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AbWl4aW4gYnAtYmV0d2VlbigkbG93ZXIsICR1cHBlciwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbG93ZXIsICRicmVha3BvaW50cyk7XG4gICRtYXg6IGJyZWFrcG9pbnQtbWF4KCR1cHBlciwgJGJyZWFrcG9pbnRzKTtcblxuICBAaWYgJG1pbiAhPSBudWxsIGFuZCAkbWF4ICE9IG51bGwge1xuICAgIEBtZWRpYSAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIGlmICRtYXggPT0gbnVsbCB7XG4gICAgQGluY2x1ZGUgYnAtbWluKCRsb3dlciwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBicC1tYXgoJHVwcGVyLCAkYnJlYWtwb2ludHMpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfVxufVxuXG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gIDA0IC0gTWl4aW46IDA0IC0gT25seSBCcmVha3BvaW50XG4vLyAgTWVkaWEvc2NyZWVuLXNpemUgYmV0d2VlbiB0aGUgYnJlYWtwb2ludCdzIG1pbmltdW0gYW5kIG1heGltdW0gd2lkdGhzIC0tIE5vIG1pbmltdW0gZm9yIHRoZSBzbWFsbGVzdCBicmVha3BvaW50LCBhbmRcbi8vICBubyBtYXhpbXVtIGZvciB0aGUgbGFyZ2VzdCBvbmUuXG4vLyAgLSBAcGFyYW0gJG5hbWU6IFNlbGVjdGVkIGJyZWFrcG9pbnQgbmFtZSBhcyBkZWZpbmVkIGluIHBhcnRpYWxzL3NldHRpbmdzL19icmVha3BvaW50cy5zY3NzXG4vLyAgLSBAcGFyYW0gJGJyZWFrcG9pbnRzOiBCcmVha3BvaW50cyBtYXBwaW5nIHZhbHVlcyBhcyBkZWZpbmVkIGluIHBhcnRpYWxzL3NldHRpbmdzL19icmVha3BvaW50cy5zY3NzXG4vLyAgLSBAZXhhbXBsZSA9IEBpbmNsdWRlIGJwLW9ubHkobGFyZ2UpIHt9XG4vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AbWl4aW4gYnAtb25seSgkbmFtZSwgJGJyZWFrcG9pbnRzOiAkZ3JpZC1icmVha3BvaW50cykge1xuICAkbWluOiBicmVha3BvaW50LW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKTtcbiAgJG1heDogYnJlYWtwb2ludC1tYXgoJG5hbWUsICRicmVha3BvaW50cyk7XG5cbiAgQGlmICRtaW4gIT0gbnVsbCBhbmQgJG1heCAhPSBudWxsIHtcbiAgICBAbWVkaWEgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiAkbWF4ID09IG51bGwge1xuICAgIEBpbmNsdWRlIGJwLW1pbigkbmFtZSwgJGJyZWFrcG9pbnRzKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgJG1pbiA9PSBudWxsIHtcbiAgICBAaW5jbHVkZSBicC1tYXgoJG5hbWUsICRicmVha3BvaW50cykge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9XG59XG4iLCIvL1xuLy8gTWl4aW5zIC0gVHlwb2dyYXBoeVxuLy8gVXNlIHRoZXNlIG1peGlucyB3aGVuIG5lZWRpbmcgdG8gZWFzaWx5IGRlZmluZSB0eXBvZ3JhcGh5IHN0eWxlcywgc3VjaCBhcyBzaXplcyBhbmQgdHlwb2dyYXBoaWNhbCBsYXlvdXQuXG4vL1xuLy8gLSAwMSAtIFR5cG9ncmFwaHlcbi8vIC0gMDIgLSBIZWFkaW5nc1xuLy8gLSAwMyAtIEJvZHlcbi8vIC0gMDQgLSBHb29nbGUgTWF0ZXJpYWwgU3ltYm9scyBJY29uIEZvbnRcbi8vXG5AdXNlICdzYXNzOmxpc3QnO1xuQHVzZSAnc2FzczptYXAnO1xuQHVzZSAnc2FzczptYXRoJztcbkB1c2UgJy4vYmFzZScgYXMgc2V0dGluZ3MtYmFzZTtcbkB1c2UgJy4vYnJlYWtwb2ludHMnIGFzIGJwO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIDAxIC0gVHlwb2dyYXBoeVxuLy8gTWl4aW4gZm9yIGRldGVybWluaW5nIGZvbnQgc2l6aW5nIGFuZCBsaW5lIGhlaWdodHMgZnJvbSBDU1MgdmFyaWFibGVzLlxuLy8gQHBhcmFtICRmb250LXNpemU6IFtpbnRlZ2VyXSBzaXplIG9mIGZvbnQgZGVwaWN0ZWQgYnkgYSBudW1iZXIgLyBhc3NvY2lhdGVzIHdpdGggQ1NTIHZhcmlhYmxlcy5cbi8vIEBwYXJhbSAkbGluZS1oZWlnaHQ6IFtzdHJpbmddIHNldHRpbmcgb2YgbGluZSBoZWlnaHQgYXMgZGVwaWN0ZWQgYnkgYSBzdHJpbmcgLyBhc3NvY2lhdGVzIHdpdGggQ1NTIHZhcmlhYmxlcy5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AbWl4aW4gdHlwZS1zY2FsZSgkY2F0ZWdvcnksICRzaXplLCAkcHJlZml4OiBzZXR0aW5ncy1iYXNlLiRwcm9wZXJ0eS1wcmVmaXgpIHtcbiAgQGlmICRwcmVmaXggIT0gJycge1xuICAgICRwcmVmaXg6ICRwcmVmaXggKyAnLSc7XG4gIH1cblxuICBmb250LXNpemU6IHZhcigtLSN7JHByZWZpeH1mcy0jeyRjYXRlZ29yeX0tI3skc2l6ZX0pO1xuICBsaW5lLWhlaWdodDogdmFyKC0tI3skcHJlZml4fWxoLSN7JGNhdGVnb3J5fS0jeyRzaXplfSk7XG59XG5cbkBmdW5jdGlvbiBjb252ZXJ0LW1hcCgkaW5wdXQtbWFwKSB7XG4gICRvdXRwdXQtbWFwOiAoKTtcblxuICBAZWFjaCAkY2F0ZWdvcnksICRzaXplcyBpbiAkaW5wdXQtbWFwIHtcbiAgICBAZWFjaCAkc2l6ZSwgJGJyZWFrcG9pbnRzIGluICRzaXplcyB7XG4gICAgICBAZWFjaCAkYnJlYWtwb2ludCwgJHZhbHVlcyBpbiAkYnJlYWtwb2ludHMge1xuICAgICAgICAkZm9udC1zaXplOiBtYXRoLmRpdihsaXN0Lm50aCgkdmFsdWVzLCAxKSwgMTYpO1xuICAgICAgICAkbGluZS1oZWlnaHQ6IG1hdGguZGl2KGxpc3QubnRoKCR2YWx1ZXMsIDIpLCBsaXN0Lm50aCgkdmFsdWVzLCAxKSk7XG4gICAgICAgICRvdXRwdXQtbWFwOiBtYXAuZGVlcC1tZXJnZShcbiAgICAgICAgICAkb3V0cHV0LW1hcCxcbiAgICAgICAgICAoXG4gICAgICAgICAgICAkYnJlYWtwb2ludDogKFxuICAgICAgICAgICAgICBmczogKFxuICAgICAgICAgICAgICAgICRjYXRlZ29yeTogKFxuICAgICAgICAgICAgICAgICAgJHNpemU6IChcbiAgICAgICAgICAgICAgICAgICAgJGZvbnQtc2l6ZSxcbiAgICAgICAgICAgICAgICAgICAgbGlzdC5udGgoJHZhbHVlcywgMSksXG4gICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIGxoOiAoXG4gICAgICAgICAgICAgICAgJGNhdGVnb3J5OiAoXG4gICAgICAgICAgICAgICAgICAkc2l6ZTogKFxuICAgICAgICAgICAgICAgICAgICAkbGluZS1oZWlnaHQsXG4gICAgICAgICAgICAgICAgICAgIGxpc3QubnRoKCR2YWx1ZXMsIDIpLFxuICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkb3V0cHV0LW1hcDtcbn1cblxuLy8vIFRoaXMgbWl4aW4gZ2VuZXJhdGVzIGEgZnVsbCByYW5nZSBvZiA6cm9vdCBkZWZpbml0aW9ucyBmb3IgZWFjaCBjYXRlZ29yeSwgc2l6ZSwgYW5kIGJyZWFrcG9pbnRcbi8vLyBmcm9tIGEgdHlwb2dyYXBoaWMgc2NhbGUuXG4vLy9cbi8vLyBUaGUgdHlwb2dyYXBoaWMgc2NhbGUgc2hvdWxkIGJlIGluIHRoZSBmb3JtYXQ6XG4vLy8gJHR5cG9ncmFwaGljLXNjYWxlOiAoXG4vLy8gICBjYXRlZ29yeTE6IChcbi8vLyAgICAgc2l6ZTE6IChcbi8vLyAgICAgICBicmVha3BvaW50MTogKGZvbnRTaXplUGl4ZWxWYWx1ZSwgbGluZUhlaWdodFBpeGVsVmFsdWUpLFxuLy8vICAgICAgIGJyZWFrcG9pbnQyOiAoZm9udFNpemVQaXhlbFZhbHVlLCBsaW5lSGVpZ2h0UGl4ZWxWYWx1ZSksXG4vLy8gICAgICAgLi4uXG4vLy8gICAgICksXG4vLy8gICAgIHNpemUyOiAoIC4uLiApLFxuLy8vICAgICAuLi5cbi8vLyAgICksXG4vLy8gICBjYXRlZ29yeTI6ICggLi4uICksXG4vLy8gICAuLi5cbi8vLyApO1xuLy8vIEBhY2Nlc3MgcHVibGljXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIFRoZSB0eXBvZ3JhcGh5IG1hcFxuLy8vIEBwYXJhbSB7U3RyaW5nfSAkcHJlZml4IC0gVGhlIHByZWZpeCB0byB1c2UgZm9yIHRoZSBDU1MgY3VzdG9tIHByb3BlcnRpZXNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3MgLSBVc2FnZVxuLy8vICAgQGluY2x1ZGUgdHlwZS1zY2FsZS1jdXN0b20tcHJvcHMoJHR5cG9ncmFwaHktbWFwKTtcbi8vLyAgIEBpbmNsdWRlIHR5cGUtc2NhbGUtY3VzdG9tLXByb3BzKCR0eXBvZ3JhcGh5LW1hcCwgJ3RoZW1lLW5hbWUnKTtcbkBtaXhpbiB0eXBlLXNjYWxlLWN1c3RvbS1wcm9wcyhcbiAgJHNjYWxlLFxuICAkcHJlZml4OiBzZXR0aW5ncy1iYXNlLiRwcm9wZXJ0eS1wcmVmaXhcbikge1xuICAkbWFwOiBjb252ZXJ0LW1hcCgkc2NhbGUpO1xuICBAaWYgJHByZWZpeCAhPSAnJyB7XG4gICAgJHByZWZpeDogJHByZWZpeCArICctJztcbiAgfVxuICAkbmV3LXByZWZpeDogJHByZWZpeCAkcHJlZml4ICsgJy0nO1xuXG4gIDpyb290IHtcbiAgICBAZWFjaCAkYnJlYWtwb2ludCwgJHByb3BzIGluICRtYXAge1xuICAgICAgQGlmICgkYnJlYWtwb2ludCA9PSAnbW9iaWxlJykge1xuICAgICAgICBAZWFjaCAkY2F0ZWdvcnksICRzaXplcyBpbiBtYXAuZ2V0KCRwcm9wcywgJ2ZzJykge1xuICAgICAgICAgIC8qIGZvbnQtc2l6ZXM6ICN7JGNhdGVnb3J5fSAqL1xuICAgICAgICAgIEBlYWNoICRzaXplLCAkdmFsdWUgaW4gJHNpemVzIHtcbiAgICAgICAgICAgIC0tI3skcHJlZml4fWZzLSN7JGNhdGVnb3J5fS0jeyRzaXplfTogI3tsaXN0Lm50aChcbiAgICAgICAgICAgICAgICAkdmFsdWUsXG4gICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICApfXJlbTsgLyogI3tsaXN0Lm50aCgkdmFsdWUsIDIpfXB4ICovXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgQGVhY2ggJGNhdGVnb3J5LCAkc2l6ZXMgaW4gbWFwLmdldCgkcHJvcHMsICdsaCcpIHtcbiAgICAgICAgICAvKiBsaW5lLWhlaWdodHM6ICN7JGNhdGVnb3J5fSAqL1xuICAgICAgICAgIEBlYWNoICRzaXplLCAkdmFsdWUgaW4gJHNpemVzIHtcbiAgICAgICAgICAgIC0tI3skcHJlZml4fWxoLSN7JGNhdGVnb3J5fS0jeyRzaXplfTogI3tsaXN0Lm50aChcbiAgICAgICAgICAgICAgICAkdmFsdWUsXG4gICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICApfTsgLyogI3tsaXN0Lm50aCgkdmFsdWUsIDIpfXB4ICovXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgQGluY2x1ZGUgYnAuYnAtbWluKCRicmVha3BvaW50KSB7XG4gICAgICAgICAgQGVhY2ggJGNhdGVnb3J5LCAkc2l6ZXMgaW4gbWFwLmdldCgkcHJvcHMsICdmcycpIHtcbiAgICAgICAgICAgIC8qIGZvbnQtc2l6ZXM6ICN7JGNhdGVnb3J5fSAqL1xuICAgICAgICAgICAgQGVhY2ggJHNpemUsICR2YWx1ZSBpbiAkc2l6ZXMge1xuICAgICAgICAgICAgICAtLSN7JHByZWZpeH1mcy0jeyRjYXRlZ29yeX0tI3skc2l6ZX06ICN7bGlzdC5udGgoXG4gICAgICAgICAgICAgICAgICAkdmFsdWUsXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKX1yZW07IC8qICN7bGlzdC5udGgoJHZhbHVlLCAyKX1weCAqL1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBlYWNoICRjYXRlZ29yeSwgJHNpemVzIGluIG1hcC5nZXQoJHByb3BzLCAnbGgnKSB7XG4gICAgICAgICAgICAvKiBsaW5lLWhlaWdodHM6ICN7JGNhdGVnb3J5fSAqL1xuICAgICAgICAgICAgQGVhY2ggJHNpemUsICR2YWx1ZSBpbiAkc2l6ZXMge1xuICAgICAgICAgICAgICAtLSN7JHByZWZpeH1saC0jeyRjYXRlZ29yeX0tI3skc2l6ZX06ICN7bGlzdC5udGgoXG4gICAgICAgICAgICAgICAgICAkdmFsdWUsXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKX07IC8qICN7bGlzdC5udGgoJHZhbHVlLCAyKX1weCAqL1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIDAyIC0gSGVhZGluZ3Ncbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5AbWl4aW4gaGVhZGluZy1iYXNlKCkge1xuICBmb250LXdlaWdodDogdmFyKC0taXRkLWZ3LWJvbGQpO1xufVxuXG5AbWl4aW4gaGVhZGluZy0wMSgpIHtcbiAgQGluY2x1ZGUgaGVhZGluZy1iYXNlKCk7XG4gIEBpbmNsdWRlIHR5cGUtc2NhbGUoaGVhZGluZywgaDEpO1xufVxuXG5AbWl4aW4gaGVhZGluZy0wMigpIHtcbiAgQGluY2x1ZGUgaGVhZGluZy1iYXNlKCk7XG4gIEBpbmNsdWRlIHR5cGUtc2NhbGUoaGVhZGluZywgaDIpO1xufVxuXG5AbWl4aW4gaGVhZGluZy0wMygpIHtcbiAgQGluY2x1ZGUgaGVhZGluZy1iYXNlKCk7XG4gIEBpbmNsdWRlIHR5cGUtc2NhbGUoaGVhZGluZywgaDMpO1xufVxuXG5AbWl4aW4gaGVhZGluZy0wNCgpIHtcbiAgQGluY2x1ZGUgaGVhZGluZy1iYXNlKCk7XG4gIEBpbmNsdWRlIHR5cGUtc2NhbGUoaGVhZGluZywgaDQpO1xufVxuXG5AbWl4aW4gaGVhZGluZy0wNSgpIHtcbiAgQGluY2x1ZGUgaGVhZGluZy1iYXNlKCk7XG4gIEBpbmNsdWRlIHR5cGUtc2NhbGUoaGVhZGluZywgaDUpO1xufVxuXG5AbWl4aW4gaGVhZGluZy0wNigpIHtcbiAgQGluY2x1ZGUgaGVhZGluZy1iYXNlKCk7XG4gIEBpbmNsdWRlIHR5cGUtc2NhbGUoaGVhZGluZywgaDYpO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIDAzIC0gQm9keVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBtaXhpbiBib2R5LWJhc2UoKSB7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1pdGQtZnctcmVndWxhcik7XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gMDQgLSBMaW5rc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBtaXhpbiBsaW5rcy1pbnZlcnNlKCkge1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG5cbiAgJjpob3ZlcixcbiAgJjpmb2N1cyB7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG4gIH1cbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyAwNSAtIExhYmVsc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBtaXhpbiBsYWJlbC1iYXNlKCkge1xuICBsZXR0ZXItc3BhY2luZzogMnB4O1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIDA2IC0gR29vZ2xlIE1hdGVyaWFsIFN5bWJvbHMgSWNvbiBGb250XG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbkBtaXhpbiBmb250LW1hdGVyaWFsLWljb25zIHtcbiAgZm9udC1mYW1pbHk6IHZhcigtLWl0ZC1mZi1pY29ucyk7XG4gIGZvbnQtd2VpZ2h0OiB2YXIoLS1pdGQtZnctcmVndWxhcik7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgdGV4dC10cmFuc2Zvcm06IG5vbmU7XG4gIHdvcmQtd3JhcDogbm9ybWFsO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBkaXJlY3Rpb246IGx0cjtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIHRleHQtcmVuZGVyaW5nOiBvcHRpbWl6ZUxlZ2liaWxpdHk7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIC13ZWJraXQtZm9udC1mZWF0dXJlLXNldHRpbmdzOiAnbGlnYSc7XG4gIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogJ2xpZ2EnO1xufVxuIl19 */
