footer.footer{border-top:6px solid #fff;margin-top:0;font-size:.9375rem}footer.footer .inner-footer{max-width:75rem;margin:0 auto;padding-top:2.5rem;padding-bottom:2.5rem}footer.footer .inner-footer h3{font-size:1.5rem}footer.footer .inner-footer .footer-logo{display:block;padding-bottom:1.25rem}footer.footer .inner-footer .footer-logo img{max-width:17.5rem;max-height:5rem}footer.footer .inner-footer .footer-social{margin-top:.625rem;margin-bottom:4.375rem}footer.footer .inner-footer .footer-menu ul{display:block;margin-top:.625rem}footer.footer .inner-footer .footer-menu ul li a{padding-top:.625rem;padding-bottom:.625rem;padding-left:0}footer.footer .inner-footer .footer-menu .menu .active>a,footer.footer .inner-footer .footer-menu .menu .is-active>a{background:unset}footer.footer .inner-footer .additional-logo{margin-bottom:1.25rem}footer.footer .inner-footer .additional-logo img{height:4.375rem}footer.footer .inner-footer .footer-copyright{margin-bottom:1.25rem}footer.footer .inner-footer .footer-copyright p{margin-bottom:0}.page-navigation ul.pagination li span.current{line-height:1;text-decoration:none;display:block;padding:.3125rem .625rem;font-size:1.125rem;width:28px;height:28px}.pagination{margin-bottom:2.5rem;text-align:center;display:block}.pagination li{margin-right:.625rem;overflow:hidden;display:inline-block}.pagination li a{padding:.3125rem .625rem;font-size:1.125rem;width:28px;height:28px}.pagination li a:hover{border-bottom:0;text-decoration:none}.article-footer .navigation{margin-top:2.5rem;margin-bottom:2.5rem}.sidebar{color:#2a3060}.sidebar h4{padding-bottom:.625rem;font-size:1.4375rem}.sidebar h5{font-size:1.3125rem;font-weight:700}.sidebar a{color:#2a3060}.menu-sidebar-menu-container .menu li{width:100%;padding:.625rem .625rem .625rem 0}.menu-sidebar-menu-container .menu li a{padding-left:.3125rem;text-transform:uppercase}.menu-sidebar-menu-container .menu li a img{margin-right:1.25rem}.contact-container{background:#ededed;margin-top:2.5rem}.contact-details{padding-top:1.875rem;padding-bottom:1.875rem;position:relative;top:50%;transform:translateY(-50%)}.contact-details h4{margin-bottom:0}.contact-details i{font-size:2.5rem;margin-top:.625rem}.contact-details .email,.contact-details .telephone{margin-bottom:1.25rem}.contact-details .telephone p{margin-bottom:.3125rem}.contact-details .address,.contact-details .fax{margin-bottom:1.25rem}.contact-details .button{margin-top:1.25rem}.contact-details .contact-info p{margin-bottom:0}.contact-form-container{padding:2.5rem}@media screen and (max-width:39.99875em){.contact-form-container{padding:2.5rem 1.25rem}}.contact-form-container .contact-form{margin-top:2.5rem;margin-left:auto;margin-right:auto;max-width:52.5rem}.contact-form-container .contact-form h2{padding-bottom:.9375rem;margin-top:0;margin-bottom:1.875rem}@media screen and (max-width:39.99875em){.contact-form-container .contact-form h2{text-align:center}}.contact-form-container .contact-form ::-webkit-input-placeholder{opacity:1}.contact-form-container .contact-form :-moz-placeholder,.contact-form-container .contact-form ::-moz-placeholder{opacity:1}.contact-form-container .contact-form :-ms-input-placeholder{opacity:1}.contact-form-container .contact-form [type=checkbox]{margin-bottom:.3125rem}.contact-form-container .contact-form select{border-radius:.8125rem;margin-top:.625rem;border-color:#979797}.contact-form-container .contact-form textarea{height:6.875rem}.contact-form-container .contact-form [type=email],.contact-form-container .contact-form [type=tel],.contact-form-container .contact-form [type=text],.contact-form-container .contact-form [type=week],.contact-form-container .contact-form textarea{margin-top:.25rem;margin-bottom:1.25rem;border-color:#979797;box-shadow:none}.wpcf7 a,.wpcf7 label{color:#000}.wpcf7 p{margin-bottom:.3125rem}.wpcf7 .wpcf7-list-item.first{margin-top:.625rem}.wpcf7 .wpcf7-response-output{clear:both}.wpcf7 .button{border:0;margin-top:1.875rem;font-size:1.125rem;max-width:11.25rem;width:100%;padding:1.25rem .625rem;display:block;border-radius:.25rem;box-shadow:0 2px 4px 0 #858585}.grecaptcha-badge{display:none}.benefits-container{padding-left:0;padding-right:0}.benefits-container .benefits-hero{padding-left:0;padding-right:0;overflow:hidden}.benefits-container .benefits-hero img{transition:transform .5s ease;object-fit:cover;height:100%;width:100%}.benefits-container .benefits-hero img:hover{transform:scale(1.1)}.benefits-container .benefits-content{padding:1.875rem 1.25rem;position:relative;top:50%;transform:translateY(-50%)}@media print,screen and (min-width:64em){.benefits-container .benefits-content.full-width-container{padding-left:1.5rem;padding-right:8.5rem}}.benefits-container .benefits-content .benefits{margin-bottom:2.5rem}.benefits-container .benefits-content .benefits .benefit{margin-top:.625rem}.benefits-container .benefits-content .benefits .benefit i{font-size:1.25rem}.benefits-container .benefits-content .benefits .benefit p{margin-bottom:0}@media screen and (max-width:39.99875em){.benefits-container .benefits-content .button{margin-top:1.25rem}}.parallax-window{min-height:28.125rem;background:transparent;position:relative;overflow:hidden;margin-top:5rem;margin-bottom:5rem}.parallax-window .parallax-content{max-width:53.125rem;position:absolute;top:50%;left:0;right:0;margin-left:auto;margin-right:auto;transform:translateY(-50%);padding-right:1.25rem;padding-left:1.25rem}.parallax-window .parallax-content h2{text-shadow:0 1px 3px #454545}@media print,screen and (min-width:64em){.parallax-window .parallax-content h2{font-size:2.375rem}}.parallax-window .parallax-content .content{text-shadow:0 1px 3px #454545}.parallax-window .parallax-content .button{margin-top:1.25rem;padding:1.125rem .625rem;width:11.25rem}#latest-news{margin-top:3.75rem;margin-bottom:3.75rem}#latest-news .latest-news .article{margin-bottom:1.25rem;padding-left:1.25rem;padding-right:1.25rem;text-align:center;position:relative}#latest-news .latest-news .article .image{overflow:hidden;margin-bottom:1.875rem}#latest-news .latest-news .article .content,#latest-news .latest-news .article h4{min-height:6.25rem}#latest-news .latest-news .article .button{left:0;right:0;bottom:.625rem;margin-left:auto;margin-right:auto;width:11.25rem;padding:.75rem .625rem;box-shadow:0 2px 4px 0 #858585}#latest-news .button-solid{max-width:18.75rem;width:100%;padding:.9375rem .625rem;box-shadow:0 2px 4px 0 #858585}#testimonials{margin-top:2.5rem;margin-bottom:2.5rem;text-align:center}#testimonials h2{margin-bottom:1.25rem}#testimonials .testimonials .testimonial{position:relative;margin-bottom:2.5rem;margin-left:1.25rem;margin-right:1.25rem;padding-bottom:2.5rem}#testimonials .testimonials .testimonial a:hover{text-decoration:none}#testimonials .testimonials .testimonial .image{padding:1.25rem}#testimonials .testimonials .testimonial .image img{max-height:9.375rem;width:auto;margin-left:auto;margin-right:auto}#testimonials .testimonials .testimonial .content{box-shadow:0 2px 10px 0 #858585;padding:1.875rem 1.5625rem 5.625rem;height:21.875rem;overflow:hidden;position:relative}@media print,screen and (min-width:40em){#testimonials .testimonials .testimonial .content{height:24.375rem}}#testimonials .testimonials .testimonial .content .excerpt-wrapper{position:relative;top:50%;transform:translateY(-50%)}#testimonials .testimonials .testimonial .content .name-organisation-wrapper{position:absolute;left:0;right:0;bottom:1.25rem;margin-left:auto;margin-right:auto}#testimonials .testimonials .testimonial .content .name-organisation-wrapper .name{margin-top:1.25rem;margin-bottom:0}#testimonials .testimonials .testimonial .content .name-organisation-wrapper .organisation{margin-bottom:0}#testimonials .button-solid{max-width:18.75rem;width:100%;padding:.9375rem .625rem;box-shadow:0 2px 4px 0 #858585}.features-container{padding-left:0;padding-right:0}.features-container .features{margin-top:2.5rem}.features-container .features .feature .content{padding:3.125rem 1.25rem 1.875rem}.features-container .features .feature .content .featured-content{position:relative;top:50%;transform:translateY(-50%)}@media print,screen and (min-width:40em){.features-container .features .feature .content{padding-left:2.5rem;padding-right:2.5rem}}@media print,screen and (min-width:64em){.features-container .features .feature .content{padding-left:3.75rem;padding-right:3.75rem}.features-container .features .feature .content .full-width-container{padding-left:8.5rem;padding-right:1.5rem}}.features-container .features .feature .content h2{margin-left:auto;margin-right:auto;margin-bottom:1.875rem}.features-container .features .feature .image{overflow:hidden}.features-container .features .feature .image img{transition:transform .5s ease;object-fit:cover;height:100%;width:100%}.features-container .features .feature .image img:hover{transform:scale(1.1)}.features-container .features .feature:nth-of-type(2n) .image{-ms-flex-order:1;order:1}.features-container .features .feature:nth-of-type(2n) .content{-ms-flex-order:2;order:2}@media print,screen and (min-width:64em){.features-container .features .feature:nth-of-type(2n) .content .full-width-container{padding-left:1.5rem;padding-right:8.5rem}}@media screen and (max-width:39.99875em){.features-container .features .feature:nth-of-type(odd) .image{-ms-flex-order:1;order:1}.features-container .features .feature:nth-of-type(odd) .content{-ms-flex-order:2;order:2}}.faq-container{margin-top:2.5rem;margin-bottom:2.5rem}.faq-container h2{margin-left:auto;margin-right:auto;margin-bottom:1.875rem}.faq-container li{margin-bottom:.625rem;border:1px solid #979797}.faq-container li .accordion-title:focus,.faq-container li .accordion-title:hover{background-color:unset}.faq-container li .accordion-title:before{color:#000;font-size:1rem;font-weight:700;margin-top:-.5625rem}.faq-container li a{padding-right:2.5rem}.faq-container li i{margin-right:.625rem}.video-container{margin-top:2.5rem;margin-bottom:2.5rem}.video-container h2{margin-left:auto;margin-right:auto;margin-bottom:1.875rem}.video-container .button{padding:1.25rem 1.875rem;margin-top:2.5rem;margin-left:auto;margin-right:auto;max-width:15rem;display:block;position:relative;border-radius:.5rem;box-shadow:0 2px 4px 0 #a1a1a1}#logo-carousel{margin-top:1.25rem;margin-bottom:1.25rem}#logo-carousel h2{text-align:center;width:100%;margin-bottom:2.5rem}#logo-carousel .logo-carousel .logo img{max-width:225px;max-height:125px;margin-left:auto;margin-right:auto;width:100%;height:auto;object-fit:contain;filter:gray;filter:grayscale(1);transition:all .5s ease;opacity:.6}#logo-carousel .logo-carousel .logo img:hover{filter:none;opacity:1}#logo-carousel .slick-track{display:-ms-flexbox;display:flex}#logo-carousel .slick-track .slick-slide{display:-ms-flexbox;display:flex;height:auto;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.social-container .social{margin-right:.9375rem;float:left}.social-container .social a i{font-size:1.875rem}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vbi1jcml0aWNhbC9sYXlvdXQvX2Zvb3Rlci5zY3NzIiwiY3JpdGljYWwvY29tbW9uL19jb2xvdXJzLnNjc3MiLCIuLi8uLi9ub2RlX21vZHVsZXMvZm91bmRhdGlvbi1zaXRlcy9zY3NzL3V0aWwvX3VuaXQuc2NzcyIsIm5vbi1jcml0aWNhbC9wYWdlLXRlbXBsYXRlcy9fYmxvZy5zY3NzIiwibm9uLWNyaXRpY2FsL3BhcnRzL19zaWRlYmFyLnNjc3MiLCJub24tY3JpdGljYWwvcGFydHMvX2NvbnRhY3QtY29udGFpbmVyLnNjc3MiLCJub24tY3JpdGljYWwvcGFydHMvX2NvbnRhY3QtZGV0YWlscy5zY3NzIiwibm9uLWNyaXRpY2FsL3BhcnRzL19jb250YWN0LWZvcm0uc2NzcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9mb3VuZGF0aW9uLXNpdGVzL3Njc3MvdXRpbC9fYnJlYWtwb2ludC5zY3NzIiwibm9uLWNyaXRpY2FsL3BhcnRzL19jb250ZW50LWJlbmVmaXRzLnNjc3MiLCJub24tY3JpdGljYWwvcGFydHMvX3BhcmFsbGF4LnNjc3MiLCJub24tY3JpdGljYWwvcGFydHMvX2xhdGVzdC1uZXdzLnNjc3MiLCJub24tY3JpdGljYWwvcGFydHMvX3Rlc3RpbW9uaWFscy5zY3NzIiwibm9uLWNyaXRpY2FsL3BhcnRzL19mZWF0dXJlcy5zY3NzIiwibm9uLWNyaXRpY2FsL3BhcnRzL19mYXFzLnNjc3MiLCJub24tY3JpdGljYWwvcGFydHMvX3ZpZGVvLnNjc3MiLCJub24tY3JpdGljYWwvcGFydHMvX2xvZ29fY2Fyb3VzZWwuc2NzcyIsIm5vbi1jcml0aWNhbC9wYXJ0cy9fY29udGVudC1zb2NpYWwuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxjQUVJLDBCQ0lXLEFESFgsYUFBYSxBQUNiLGtCRWtGcUQsQ0ZBeEQsQUFqRkcsNEJBQ0ksZ0JFZ0ZpRCxBRi9FakQsY0FBYyxBQUNkLG1CRThFaUQsQUY3RWpELHFCRTZFaUQsQ0ZEcEQsQUFy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QmZnRjZDLENlL0U3QyIsImZpbGUiOiJzdHlsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBGb290ZXJcblxuZm9vdGVyLmZvb3RlciB7XG4gICAgLy9iYWNrZ3JvdW5kOiAkY29sb3ItYmFja2ctcHJpbWFyeTtcbiAgICBib3JkZXItdG9wOiA2cHggc29saWQgJHdoaXRlO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgZm9udC1zaXplOiByZW0tY2FsYygxNSk7XG4gICAgLmlubmVyLWZvb3RlciB7XG4gICAgICAgIG1heC13aWR0aDogcmVtLWNhbGMoMTIwMCk7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgICBwYWRkaW5nLXRvcDogcmVtLWNhbGMoNDApO1xuICAgICAgICBwYWRkaW5nLWJvdHRvbTogcmVtLWNhbGMoNDApO1xuXG4gICAgICAgIGgzIHtcbiAgICAgICAgICAgIC8vY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgIGZvbnQtc2l6ZTogcmVtLWNhbGMoMjQpO1xuICAgICAgICB9XG5cbiAgICAgICAgLmZvb3Rlci1sb2dvIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgLy9wYWRkaW5nLXRvcDogcmVtLWNhbGMoNDApO1xuICAgICAgICAgICAgcGFkZGluZy1ib3R0b206IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgbWF4LXdpZHRoOiByZW0tY2FsYygyODApO1xuICAgICAgICAgICAgICAgIG1heC1oZWlnaHQ6IHJlbS1jYWxjKDgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC5mb290ZXItc29jaWFsIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDEwKTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDcwKTtcbiAgICAgICAgICAgIC5zb2NpYWwtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICAuc29jaWFsIHtcbiAgICAgICAgICAgICAgICAgICAgLy9mbG9hdDogcmlnaHQ7XG4gICAgICAgICAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgICAgICAgICAvL2ZvbnQtc2l6ZTogcmVtLWNhbGMoMjYpOyBcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG5cblxuICAgICAgICAuZm9vdGVyLW1lbnUge1xuICAgICAgICAgIFxuICAgICAgICAgICAgdWwge1xuICAgICAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDEwKTtcbiAgICAgICAgICAgICAgICBsaSB7XG4gICAgICAgICAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy10b3A6IHJlbS1jYWxjKDEwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctYm90dG9tOiByZW0tY2FsYygxMCk7ICBcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMDsgXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC5tZW51IC5hY3RpdmU+YSwgLm1lbnUgLmlzLWFjdGl2ZT5hIHtcbiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB1bnNldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG5cbiAgICAgICAgLmFkZGl0aW9uYWwtbG9nbyB7XG4gICAgICAgICAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYygyMCk7XG4gICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIGhlaWdodDogcmVtLWNhbGMoNzApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICAuZm9vdGVyLWNvcHlyaWdodCB7XG4gICAgICAgICAgICAvL2NvbG9yOiAkd2hpdGU7XG4gICAgICAgICAgICAvL21hcmdpbi10b3A6IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgICAgIGEge1xuICAgICAgICAgICAgICAgIC8vY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgXG4gICBcblxuICAgIFxuICAgXG4gICAgfVxufVxuXG5cbiIsIi8vIENvbG91cnNcblxuLy8kY29sb3ItbWFpbi1wcmltYXJ5OiByZ2IoMCwgNjEsIDgxKTtcbi8vJGNvbG9yLW1haW4tc2Vjb25kYXJ5OiByZ2IoMjU1LCAyMTcsIDApO1xuLy8kY29sb3ItbWFpbi10ZXJ0aWFyeTogcmdiKDE4NywgMTg3LCAxODcpO1xuXG5cblxuJHdoaXRlOiAjRkZGRkZGO1xuJGJsYWNrOiAjMDAwMDAwO1xuXG5cbiRjb2xvci1iYXNlLXByaW1hcnk6ICNFREVERUQ7IC8vIGxpZ2h0IGdyZXlcbiRjb2xvci1iYXNlLXNlY29uZGFyeTogIzk3OTc5NzsgLy8gIGRhcmsgZ3JleVxuJGNvbG9yLWJhc2UtdGVydGlhcnk6ICMyODI4Mjg7IC8vICBkYXJrZXN0IGdyZXlcblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuJGNvbG9yLW1haW4tcHJpbWFyeTogIzJhMzA2MDsgLy8gcHVycGxlXG4kY29sb3ItbWFpbi1zZWNvbmRhcnk6ICNmNWE2MjM7IC8vIG9yYW5nZVxuJGNvbG9yLW1haW4tdGVydGlhcnk6ICMyYTMwNjA7IC8vIHB1cnBsZVxuJGNvbG9yLW1haW4tcXVhdGVybmFyeTogI2NjY2NjYzsgLy8gbGlnaHQgZ3JleVxuXG5cblxuXG5cblxuJGNvbG9yLWZvbnQtdGVydGlhcnk6ICM5Nzk3OTc7XG5cbiRjb2xvci1ib3JkZXItdGVydGlhcnk6ICM5Nzk3OTc7XG5cbiRjb2xvci1ib3JkZXItcXVhdGVybmFyeTogIzk3OTc5NztcblxuXG5cblxuXG4vKlxuJGNvbG9yLWJhc2UtcHJpbWFyeTogI0YxRjFGMTtcbiRjb2xvci1iYXNlLXNlY29uZGFyeTogI0YxRjFGMTtcbiRjb2xvci1iYXNlLXRlcnRpYXJ5OiAjRjFGMUYxO1xuXG4qLyIsIi8vIEZvdW5kYXRpb24gZm9yIFNpdGVzIGJ5IFpVUkJcbi8vIGZvdW5kYXRpb24uenVyYi5jb21cbi8vIExpY2Vuc2VkIHVuZGVyIE1JVCBPcGVuIFNvdXJjZVxuXG4vLy8vXG4vLy8gQGdyb3VwIGZ1bmN0aW9uc1xuLy8vL1xuXG4kZ2xvYmFsLWZvbnQtc2l6ZTogMTAwJSAhZGVmYXVsdDtcblxuLy8vIFJlbW92ZXMgdGhlIHVuaXQgKGUuZy4gcHgsIGVtLCByZW0pIGZyb20gYSB2YWx1ZSwgcmV0dXJuaW5nIHRoZSBudW1iZXIgb25seS5cbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkbnVtIC0gTnVtYmVyIHRvIHN0cmlwIHVuaXQgZnJvbS5cbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFRoZSBzYW1lIG51bWJlciwgc2FucyB1bml0LlxuQGZ1bmN0aW9uIHN0cmlwLXVuaXQoJG51bSkge1xuICBAcmV0dXJuICRudW0gLyAoJG51bSAqIDAgKyAxKTtcbn1cblxuLy8vIENvbnZlcnRzIG9uZSBvciBtb3JlIHBpeGVsIHZhbHVlcyBpbnRvIG1hdGNoaW5nIHJlbSB2YWx1ZXMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcnxMaXN0fSAkdmFsdWVzIC0gT25lIG9yIG1vcmUgdmFsdWVzIHRvIGNvbnZlcnQuIEJlIHN1cmUgdG8gc2VwYXJhdGUgdGhlbSB3aXRoIHNwYWNlcyBhbmQgbm90IGNvbW1hcy4gSWYgeW91IG5lZWQgdG8gY29udmVydCBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB3cmFwIHRoZSBsaXN0IGluIHBhcmVudGhlc2VzLlxuLy8vIEBwYXJhbSB7TnVtYmVyfSAkYmFzZSBbbnVsbF0gLSBUaGUgYmFzZSB2YWx1ZSB0byB1c2Ugd2hlbiBjYWxjdWxhdGluZyB0aGUgYHJlbWAuIElmIHlvdSdyZSB1c2luZyBGb3VuZGF0aW9uIG91dCBvZiB0aGUgYm94LCB0aGlzIGlzIDE2cHguIElmIHRoaXMgcGFyYW1ldGVyIGlzIGBudWxsYCwgdGhlIGZ1bmN0aW9uIHdpbGwgcmVmZXJlbmNlIHRoZSBgJGdsb2JhbC1mb250LXNpemVgIHZhcmlhYmxlIGFzIHRoZSBiYXNlLlxuLy8vXG4vLy8gQHJldHVybnMge0xpc3R9IEEgbGlzdCBvZiBjb252ZXJ0ZWQgdmFsdWVzLlxuQGZ1bmN0aW9uIHJlbS1jYWxjKCR2YWx1ZXMsICRiYXNlOiBudWxsKSB7XG4gICRyZW0tdmFsdWVzOiAoKTtcbiAgJGNvdW50OiBsZW5ndGgoJHZhbHVlcyk7XG5cbiAgLy8gSWYgbm8gYmFzZSBpcyBkZWZpbmVkLCBkZWZlciB0byB0aGUgZ2xvYmFsIGZvbnQgc2l6ZVxuICBAaWYgJGJhc2UgPT0gbnVsbCB7XG4gICAgJGJhc2U6ICRnbG9iYWwtZm9udC1zaXplO1xuICB9XG5cbiAgLy8gSWYgdGhlIGJhc2UgZm9udCBzaXplIGlzIGEgJSwgdGhlbiBtdWx0aXBseSBpdCBieSAxNnB4XG4gIC8vIFRoaXMgaXMgYmVjYXVzZSAxMDAlIGZvbnQgc2l6ZSA9IDE2cHggaW4gbW9zdCBhbGwgYnJvd3NlcnNcbiAgQGlmIHVuaXQoJGJhc2UpID09ICclJyB7XG4gICAgJGJhc2U6ICgkYmFzZSAvIDEwMCUpICogMTZweDtcbiAgfVxuXG4gIC8vIFVzaW5nIHJlbSBhcyBiYXNlIGFsbG93cyBjb3JyZWN0IHNjYWxpbmdcbiAgQGlmIHVuaXQoJGJhc2UpID09ICdyZW0nIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdCgkYmFzZSkgKiAxNnB4O1xuICB9XG5cbiAgQGlmICRjb3VudCA9PSAxIHtcbiAgICBAcmV0dXJuIC16Zi10by1yZW0oJHZhbHVlcywgJGJhc2UpO1xuICB9XG5cbiAgQGZvciAkaSBmcm9tIDEgdGhyb3VnaCAkY291bnQge1xuICAgICRyZW0tdmFsdWVzOiBhcHBlbmQoJHJlbS12YWx1ZXMsIC16Zi10by1yZW0obnRoKCR2YWx1ZXMsICRpKSwgJGJhc2UpKTtcbiAgfVxuXG4gIEByZXR1cm4gJHJlbS12YWx1ZXM7XG59XG5cbi8vIENvbnZlcnRzIGEgdW5pdGxlc3MsIHBpeGVsLCBvciByZW0gdmFsdWUgdG8gZW0sIGZvciB1c2UgaW4gYnJlYWtwb2ludHMuXG5AZnVuY3Rpb24gLXpmLWJwLXRvLWVtKCR2YWx1ZSkge1xuICAvLyBQaXhlbCBhbmQgdW5pdGxlc3MgdmFsdWVzIGFyZSBjb252ZXJ0ZWQgdG8gcmVtc1xuICBAaWYgdW5pdCgkdmFsdWUpID09ICdweCcgb3IgdW5pdGxlc3MoJHZhbHVlKSB7XG4gICAgJHZhbHVlOiByZW0tY2FsYygkdmFsdWUsICRiYXNlOiAxNnB4KTtcbiAgfVxuXG4gIC8vIFRoZW4gdGhlIHZhbHVlIGlzIGNvbnZlcnRlZCB0byBlbXNcbiAgQHJldHVybiBzdHJpcC11bml0KCR2YWx1ZSkgKiAxZW07XG59XG5cbi8vLyBDb252ZXJ0cyBhIHBpeGVsIHZhbHVlIHRvIG1hdGNoaW5nIHJlbSB2YWx1ZS4gKkFueSogdmFsdWUgcGFzc2VkLCByZWdhcmRsZXNzIG9mIHVuaXQsIGlzIGFzc3VtZWQgdG8gYmUgYSBwaXhlbCB2YWx1ZS4gQnkgZGVmYXVsdCwgdGhlIGJhc2UgcGl4ZWwgdmFsdWUgdXNlZCB0byBjYWxjdWxhdGUgdGhlIHJlbSB2YWx1ZSBpcyB0YWtlbiBmcm9tIHRoZSBgJGdsb2JhbC1mb250LXNpemVgIHZhcmlhYmxlLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR2YWx1ZSAtIFBpeGVsIHZhbHVlIHRvIGNvbnZlcnQuXG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIFtudWxsXSAtIEJhc2UgZm9yIHBpeGVsIGNvbnZlcnNpb24uXG4vLy9cbi8vLyBAcmV0dXJucyB7TnVtYmVyfSBBIG51bWJlciBpbiByZW1zLCBjYWxjdWxhdGVkIGJhc2VkIG9uIHRoZSBnaXZlbiB2YWx1ZSBhbmQgdGhlIGJhc2UgcGl4ZWwgdmFsdWUuIHJlbSB2YWx1ZXMgYXJlIHBhc3NlZCB0aHJvdWdoIGFzIGlzLlxuQGZ1bmN0aW9uIC16Zi10by1yZW0oJHZhbHVlLCAkYmFzZTogbnVsbCkge1xuICAvLyBDaGVjayBpZiB0aGUgdmFsdWUgaXMgYSBudW1iZXJcbiAgQGlmIHR5cGUtb2YoJHZhbHVlKSAhPSAnbnVtYmVyJyB7XG4gICAgQHdhcm4gaW5zcGVjdCgkdmFsdWUpICsgJyB3YXMgcGFzc2VkIHRvIHJlbS1jYWxjKCksIHdoaWNoIGlzIG5vdCBhIG51bWJlci4nO1xuICAgIEByZXR1cm4gJHZhbHVlO1xuICB9XG5cbiAgLy8gVHJhbnNmb3JtIGVtIGludG8gcmVtIGlmIHNvbWVvbmUgaGFuZHMgb3ZlciAnZW0nc1xuICBAaWYgdW5pdCgkdmFsdWUpID09ICdlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpICogMXJlbTtcbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSByZW0gaWYgdW5pdHMgZm9yICR2YWx1ZSBpcyBub3QgcmVtIG9yIGVtXG4gIEBpZiB1bml0KCR2YWx1ZSkgIT0gJ3JlbScge1xuICAgICR2YWx1ZTogc3RyaXAtdW5pdCgkdmFsdWUpIC8gc3RyaXAtdW5pdCgkYmFzZSkgKiAxcmVtO1xuICB9XG5cbiAgLy8gVHVybiAwcmVtIGludG8gMFxuICBAaWYgJHZhbHVlID09IDByZW0ge1xuICAgICR2YWx1ZTogMDtcbiAgfVxuXG4gIEByZXR1cm4gJHZhbHVlO1xufVxuXG4vLy8gQ29udmVydHMgYSBwaXhlbCwgcGVyY2VudGFnZSwgcmVtIG9yIGVtIHZhbHVlIHRvIGEgdW5pdGxlc3MgdmFsdWUgYmFzZWQgb24gYSBnaXZlbiBmb250IHNpemUuIElkZWFsIGZvciB3b3JraW5nIG91dCB1bml0bGVzcyBsaW5lIGhlaWdodHMuXG4vLy9cbi8vLyBAcGFyYW0ge051bWJlcn0gJHZhbHVlIC0gVmFsdWUgdG8gY29udmVydCB0byBhIHVuaXRsZXNzIGxpbmUgaGVpZ2h0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlIC0gVGhlIGZvbnQgc2l6ZSB0byB1c2UgdG8gd29yayBvdXQgdGhlIGxpbmUgaGVpZ2h0IC0gZGVmYXVsdHMgdG8gJGdsb2JhbC1mb250LXNpemVcbi8vL1xuLy8vIEByZXR1cm4ge051bWJlcn0gLSBVbml0bGVzcyBudW1iZXJcbkBmdW5jdGlvbiB1bml0bGVzcy1jYWxjKCR2YWx1ZSwgJGJhc2U6IG51bGwpIHtcblxuICAvLyBJZiBubyBiYXNlIGlzIGRlZmluZWQsIGRlZmVyIHRvIHRoZSBnbG9iYWwgZm9udCBzaXplXG4gIEBpZiAkYmFzZSA9PSBudWxsIHtcbiAgICAkYmFzZTogJGdsb2JhbC1mb250LXNpemU7XG4gIH1cblxuICAvLyBGaXJzdCwgbGV0cyBjb252ZXJ0IG91ciAkYmFzZSB0byBwaXhlbHNcblxuICAvLyBJZiB0aGUgYmFzZSBmb250IHNpemUgaXMgYSAlLCB0aGVuIG11bHRpcGx5IGl0IGJ5IDE2cHhcbiAgQGlmIHVuaXQoJGJhc2UpID09ICclJyB7XG4gICAgJGJhc2U6ICgkYmFzZSAvIDEwMCUpICogMTZweDtcbiAgfVxuXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAncmVtJyB7XG4gICAgJGJhc2U6IHN0cmlwLXVuaXQoJGJhc2UpICogMTZweDtcbiAgfVxuXG4gIEBpZiB1bml0KCRiYXNlKSA9PSAnZW0nIHtcbiAgICAkYmFzZTogc3RyaXAtdW5pdCgkYmFzZSkgKiAxNnB4O1xuICB9XG5cbiAgLy8gTm93IGxldCdzIGNvbnZlcnQgb3VyIHZhbHVlIHRvIHBpeGVscyB0b29cbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnJScge1xuICAgICR2YWx1ZTogKCR2YWx1ZSAvIDEwMCUpICogJGJhc2U7XG4gIH1cblxuICBAaWYgdW5pdCgkdmFsdWUpID09ICdyZW0nIHtcbiAgICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAqICRiYXNlO1xuICB9XG5cbiAgQGlmIHVuaXQoJHZhbHVlKSA9PSAnZW0nIHtcbiAgICAkdmFsdWU6IHN0cmlwLXVuaXQoJHZhbHVlKSAqICRiYXNlO1xuICB9XG5cbiAgLy8gJ3B4J1xuICBAaWYgdW5pdCgkdmFsdWUpID09ICdweCcge1xuICAgIEByZXR1cm4gc3RyaXAtdW5pdCgkdmFsdWUpIC8gc3RyaXAtdW5pdCgkYmFzZSk7XG4gIH1cblxuICAvLyBhc3N1bWUgdGhhdCBsaW5lLWhlaWdodHMgZ3JlYXRlciB0aGFuIDEwIGFyZSBtZWFudCB0byBiZSBhYnNvbHV0ZSBpbiAncHgnXG4gIEBpZiB1bml0bGVzcygkdmFsdWUpIGFuZCAoJHZhbHVlID4gMTApIHtcbiAgICBAcmV0dXJuICR2YWx1ZSAvIHN0cmlwLXVuaXQoJGJhc2UpO1xuICB9XG5cbiAgQHJldHVybiAkdmFsdWU7XG59XG4iLCIvLyBCbG9nIFN0eWxlcyBub25lIGNyaXRpY2FsXG5cbi5wYWdlLW5hdmlnYXRpb24ge1xuICAgIHVsLnBhZ2luYXRpb24ge1xuICAgICAgICBsaSB7XG4gICAgICAgICAgICBzcGFuLmN1cnJlbnQge1xuICAgICAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgICAgICBwYWRkaW5nOiByZW0tY2FsYyg1IDEwKTtcbiAgICAgICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDE4KTtcbiAgICAgICAgICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IDI4cHg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cblxuXG5cbi5wYWdpbmF0aW9uIHtcbiAgICBtYXJnaW4tYm90dG9tOiByZW0tY2FsYyg0MCk7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGxpIHtcbiAgICAgICAgLy9ib3JkZXI6IDJweCBzb2xpZCAkY29sb3ItbWFpbi1zZWNvbmRhcnk7XG4gICAgICAgIC8vLXdlYmtpdC1ib3JkZXItcmFkaXVzOiByZW0tY2FsYygyNSk7XG4gICAgICAgIC8vYm9yZGVyLXJhZGl1czogcmVtLWNhbGMoMjUpO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IHJlbS1jYWxjKDEwKTtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgICAuY3VycmVudCB7XG4gICAgICAgICAgICAvL2JhY2tncm91bmQtY29sb3I6ICRjb2xvci1tYWluLXNlY29uZGFyeTtcbiAgICAgICAgICAgIC8vY29sb3I6ICRjb2xvci1tYWluLXNlY29uZGFyeTtcbiAgICAgICAgfVxuICAgICAgICBhIHtcbiAgICAgICAgICAgIC8vY29sb3I6ICRjb2xvci1tYWluLXNlY29uZGFyeTtcbiAgICAgICAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDUgMTApO1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxOCk7XG4gICAgICAgICAgICB3aWR0aDogMjhweDtcbiAgICAgICAgICAgIGhlaWdodDogMjhweDtcbiAgICAgICAgICAgICY6aG92ZXIge1xuICAgICAgICAgICAgICAgIGJvcmRlci1ib3R0b206IDA7XG4gICAgICAgICAgICAgICAgLy9jb2xvcjogJGNvbG9yLW1haW4tc2Vjb25kYXJ5O1xuICAgICAgICAgICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAmOmxhc3QtY2hpbGQge1xuICAgICAgICAgICAgLy9ib3JkZXI6IDAgIWltcG9ydGFudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuLmFydGljbGUtZm9vdGVyIHtcbiAgICAubmF2aWdhdGlvbiB7XG4gICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDQwKTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNDApO1xuICAgIH1cbn1cbiIsIi8vIHNpZGViYXJcblxuLnNpZGViYXIge1xuICAgIC8vYmFja2dyb3VuZDogJGNvbG9yLW1haW4tcHJpbWFyeTtcbiAgICBjb2xvcjogJGNvbG9yLW1haW4tcHJpbWFyeTtcbiAgICBoNCB7XG4gICAgXHRwYWRkaW5nLWJvdHRvbTogcmVtLWNhbGMoMTApO1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDIzKTtcbiAgICB9XG4gICAgaDUge1xuICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDIxKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICB9XG5cbiAgICBhIHtcbiAgICBcdGNvbG9yOiAkY29sb3ItbWFpbi1wcmltYXJ5O1xuICAgIH1cbn1cblxuXG4ubWVudS1zaWRlYmFyLW1lbnUtY29udGFpbmVyIHtcbiAgICAubWVudSB7XG4gICAgICAgIGxpIHtcbiAgICAgICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICAgICAgcGFkZGluZzogcmVtLWNhbGMoMTAgMTAgMTAgMCk7XG4gICAgICAgICAgICAgYSB7XG4gICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiByZW0tY2FsYyg1KTtcbiAgICAgICAgICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICAgICAgICAgIGltZyB7XG4gICAgICAgICAgICAgICAgICAgIG1hcmdpbi1yaWdodDogcmVtLWNhbGMoMjApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgIFxuICAgIH1cbn0iLCIvLyBjb250YWN0XG5cbi5jb250YWN0LWNvbnRhaW5lciB7XG4gICAgYmFja2dyb3VuZDogJGNvbG9yLWJhc2UtcHJpbWFyeTsgXG4gICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoNDApO1xuICAgIFxufVxuXG4iLCIvLyBjb250YWN0IGRldGFpbHNcblxuLmNvbnRhY3QtZGV0YWlscyB7XG5cdHBhZGRpbmctdG9wOiByZW0tY2FsYygzMCk7XG5cdHBhZGRpbmctYm90dG9tOiByZW0tY2FsYygzMCk7XG5cdHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgXHR0b3A6IDUwJTtcbiAgXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cbiAgXHRoNCB7XG4gIFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuICBcdH1cblxuICAgIHAge1xuICAgICAgICAvL2NvbG9yOiAkd2hpdGU7XG4gICAgfVxuXG4gICAgaSB7XG4gICAgXHRmb250LXNpemU6IHJlbS1jYWxjKDQwKTtcbiAgICBcdG1hcmdpbi10b3A6IHJlbS1jYWxjKDEwKTtcbiAgICB9XG5cbiAgICAuZW1haWwge1xuICAgIFx0bWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMjApO1xuICAgIH1cblxuICAgICAudGVsZXBob25lIHtcbiAgICBcdG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDIwKTtcbiAgICBcdHAge1xuICAgIFx0XHRtYXJnaW4tYm90dG9tOiByZW0tY2FsYyg1KTtcbiAgICBcdH1cbiAgICB9XG5cbiAgICAgLmZheCB7XG4gICAgXHRtYXJnaW4tYm90dG9tOiByZW0tY2FsYygyMCk7XG4gICAgfVxuXG4gICAgIC5hZGRyZXNzIHtcbiAgICBcdG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDIwKTtcbiAgICB9XG4gICAgLmJ1dHRvbiB7XG4gICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYygyMCk7XG4gICAgfVxuXG5cdC5jb250YWN0LWluZm8ge1xuXHRcdHAge1xuICAgIFx0XHRtYXJnaW4tYm90dG9tOiByZW0tY2FsYygwKTtcbiAgICBcdH1cblx0fVxuXG59IiwiLy8gY29udGFjdCBmb3JtXG5cbi5jb250YWN0LWZvcm0tY29udGFpbmVyIHtcbiAgICAvL2JhY2tncm91bmQ6ICRjb2xvci1iYWNrZ3JvdW5kLXRlcnRpYXJ5OyBcbiAgICBwYWRkaW5nOiByZW0tY2FsYyg0MCA0MCk7XG4gICBcbiAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDQwIDIwKTtcbiAgICB9XG5cblxuICAgIC5jb250YWN0LWZvcm0ge1xuICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYyg0MCk7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgICAgIG1heC13aWR0aDogcmVtLWNhbGMoODQwKTtcbiAgICAgICAgXG5cbiAgICAgICAgaDIge1xuICAgICAgICAgICAgLy90ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICAgICAgICBwYWRkaW5nLWJvdHRvbTogcmVtLWNhbGMoMTUpOyBcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDApOyBcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDMwKTsgXG4gICAgICAgICAgICAgQGluY2x1ZGUgYnJlYWtwb2ludChzbWFsbCBvbmx5KSB7XG4gICAgICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICBcblxuXG5cbiAgICAgICAgOjotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHsgLyogV2ViS2l0IGJyb3dzZXJzICovXG4gICAgICAgICAgICAvL2NvbG9yOiAkY29sb3ItZm9udC10ZXJ0aWFyeSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgICAgICA6LW1vei1wbGFjZWhvbGRlciB7IC8qIE1vemlsbGEgRmlyZWZveCA0IHRvIDE4ICovXG4gICAgICAgICAgICAvL2NvbG9yOiAkY29sb3ItZm9udC10ZXJ0aWFyeSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgICAgICA6Oi1tb3otcGxhY2Vob2xkZXIgeyAvKiBNb3ppbGxhIEZpcmVmb3ggMTkrICovXG4gICAgICAgICAgICAvL2NvbG9yOiAkY29sb3ItZm9udC10ZXJ0aWFyeSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgICAgICA6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHsgLyogSW50ZXJuZXQgRXhwbG9yZXIgMTArICovXG4gICAgICAgICAgICAvL2NvbG9yOiAkY29sb3ItZm9udC10ZXJ0aWFyeSAhaW1wb3J0YW50O1xuICAgICAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgfVxuICAgICAgICBcbiAgICAgICAgW3R5cGU9Y2hlY2tib3hdIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDUpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZWN0IHtcbiAgICAgICAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogcmVtLWNhbGMoMTMpO1xuICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogcmVtLWNhbGMoMTMpO1xuICAgICAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoMTApO1xuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiAkY29sb3ItYmFzZS1zZWNvbmRhcnk7XG4gICAgICAgIH1cbiAgICAgICAgdGV4dGFyZWEge1xuICAgICAgICAgICAgaGVpZ2h0OiByZW0tY2FsYygxMTApO1xuICAgICAgICB9XG5cbiAgICAgICAgW3R5cGU9ZW1haWxdLCBbdHlwZT10ZWxdLCBbdHlwZT10ZXh0XSwgW3R5cGU9d2Vla10sIHRleHRhcmVhIHtcbiAgICAgICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDQpO1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMjApO1xuICAgICAgICAgICAgLy9iYWNrZ3JvdW5kOiAkY29sb3ItYmFja2dyb3VuZC10ZXJ0aWFyeTtcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLWJhc2Utc2Vjb25kYXJ5O1xuICAgICAgICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiBub25lO1xuICAgICAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgICAgfVxuXG5cbiAgICB9XG59XG5cblxuLndwY2Y3IHtcbiAgIFxuICAgICAgICBsYWJlbCB7XG4gICAgICAgICAgICBjb2xvcjogJGJsYWNrOyAgXG4gICAgICAgICAgICAvL2ZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgICAgICAvL2ZvbnQtc2l6ZTogcmVtLWNhbGMoMTQpO1xuICAgICAgICB9XG4gICAgICAgIGEge1xuICAgICAgICAgICAgY29sb3I6ICRibGFjazsgIFxuICAgICAgICB9XG4gICAgICAgIHAge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNSk7XG4gICAgICAgIH1cbiAgXG5cbiAgICAud3BjZjctbGlzdC1pdGVtLmZpcnN0IHtcbiAgICAgICAgbWFyZ2luLXRvcDogcmVtLWNhbGMoMTApO1xuICAgIH1cbiAgICAud3BjZjctcmVzcG9uc2Utb3V0cHV0IHtcbiAgICAgICAgY2xlYXI6IGJvdGg7XG4gICAgfVxuICAgIC5idXR0b24ge1xuICAgICAgICAvL2Zsb2F0OiByaWdodDtcbiAgICAgICAgYm9yZGVyOiAwO1xuICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYygzMCk7XG4gICAgICAgIC8vYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLW1haW4tcHJpbWFyeTtcbiAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygxOCk7XG4gICAgICAgIG1heC13aWR0aDogcmVtLWNhbGMoMTgwKTtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIHBhZGRpbmc6IHJlbS1jYWxjKDIwIDEwIDIwIDEwKTtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IHJlbS1jYWxjKDQpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiByZW0tY2FsYyg0KTtcbiAgICAgICAgLXdlYmtpdC1ib3gtc2hhZG93OiAwIDJweCA0cHggMCAjODU4NTg1O1xuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggMCAjODU4NTg1O1xuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgIC8vYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLW1haW4tcHJpbWFyeTtcbiAgICAgICAgICAgIC8vY29sb3I6ICR3aGl0ZTtcbiAgICAgICAgfVxuICAgIH1cblxufVxuXG5cblxuLmdyZWNhcHRjaGEtYmFkZ2Uge1xuICAgIGRpc3BsYXk6IG5vbmU7XG59IiwiLy8gRm91bmRhdGlvbiBmb3IgU2l0ZXMgYnkgWlVSQlxuLy8gZm91bmRhdGlvbi56dXJiLmNvbVxuLy8gTGljZW5zZWQgdW5kZXIgTUlUIE9wZW4gU291cmNlXG5cbi8vLy9cbi8vLyBAZ3JvdXAgYnJlYWtwb2ludHNcbi8vLy9cblxuLy8vIEEgbGlzdCBvZiBuYW1lZCBicmVha3BvaW50cy4gWW91IGNhbiB1c2UgdGhlc2Ugd2l0aCB0aGUgYGJyZWFrcG9pbnQoKWAgbWl4aW4gdG8gcXVpY2tseSBjcmVhdGUgbWVkaWEgcXVlcmllcy5cbi8vLyBAdHlwZSBNYXBcbiRicmVha3BvaW50czogKFxuICBzbWFsbDogMCxcbiAgbWVkaXVtOiA2NDBweCxcbiAgbGFyZ2U6IDEwMjRweCxcbiAgeGxhcmdlOiAxMjAwcHgsXG4gIHh4bGFyZ2U6IDE0NDBweCxcbikgIWRlZmF1bHQ7XG5cbi8vLyBUaGUgbGFyZ2VzdCBuYW1lZCBicmVha3BvaW50IGluIHdoaWNoIHRvIGluY2x1ZGUgcHJpbnQgYXMgYSBtZWRpYSB0eXBlXG4vLy8gQHR5cGUgS2V5d29yZFxuJHByaW50LWJyZWFrcG9pbnQ6IGxhcmdlICFkZWZhdWx0O1xuXG4kLXpmLXplcm8tYnJlYWtwb2ludDogc21hbGwgIWRlZmF1bHQ7XG5cbiQtemYtYnJlYWtwb2ludHMta2V5czogbWFwLXRvLWxpc3QoJGJyZWFrcG9pbnRzLCAna2V5cycpO1xuXG5AaWYgbnRoKG1hcC12YWx1ZXMoJGJyZWFrcG9pbnRzKSwgMSkgIT0gMCB7XG4gIEBlcnJvciAnVGhlIGZpcnN0IGtleSBpbiB0aGUgJGJyZWFrcG9pbnRzIG1hcCBtdXN0IGhhdmUgYSB2YWx1ZSBvZiBcIjBcIi4nO1xufVxuQGVsc2Uge1xuICAkLXpmLXplcm8tYnJlYWtwb2ludDogbnRoKG1hcC1rZXlzKCRicmVha3BvaW50cyksIDEpO1xufVxuXG4vLy8gQWxsIG9mIHRoZSBuYW1lcyBpbiB0aGlzIGxpc3Qgd2lsbCBiZSBvdXRwdXQgYXMgY2xhc3NlcyBpbiB5b3VyIENTUywgbGlrZSBgLnNtYWxsLTEyYCwgYC5tZWRpdW0tNmAsIGFuZCBzbyBvbi4gRWFjaCB2YWx1ZSBpbiB0aGlzIGxpc3QgbXVzdCBhbHNvIGJlIGluIHRoZSBgJGJyZWFrcG9pbnRzYCBtYXAuXG4vLy8gQHR5cGUgTGlzdFxuJGJyZWFrcG9pbnQtY2xhc3NlczogKHNtYWxsIG1lZGl1bSBsYXJnZSkgIWRlZmF1bHQ7XG5cbi8vLyBHZW5lcmF0ZXMgYSBtZWRpYSBxdWVyeSBzdHJpbmcgbWF0Y2hpbmcgdGhlIGlucHV0IHZhbHVlLiBSZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGBicmVha3BvaW50KClgIG1peGluIHRvIHNlZSB3aGF0IHRoZSBwb3NzaWJsZSBpbnB1dHMgYXJlLlxuLy8vXG4vLy8gQHBhcmFtIHtLZXl3b3JkfE51bWJlcn0gJHZhbCBbc21hbGxdIC0gQnJlYWtwb2ludCBuYW1lLCBvciBweCwgcmVtLCBvciBlbSB2YWx1ZSB0byBwcm9jZXNzLlxuQGZ1bmN0aW9uIGJyZWFrcG9pbnQoJHZhbDogJC16Zi16ZXJvLWJyZWFrcG9pbnQpIHtcbiAgLy8gU2l6ZSBvciBrZXl3b3JkXG4gICRicDogbnRoKCR2YWwsIDEpO1xuICAvLyBWYWx1ZSBmb3IgbWF4LXdpZHRoIG1lZGlhIHF1ZXJpZXNcbiAgJGJwLW1heDogMDtcbiAgLy8gRGlyZWN0aW9uIG9mIG1lZGlhIHF1ZXJ5ICh1cCwgZG93biwgb3Igb25seSlcbiAgJGRpcjogaWYobGVuZ3RoKCR2YWwpID4gMSwgbnRoKCR2YWwsIDIpLCB1cCk7XG4gIC8vIEV2ZW50dWFsIG91dHB1dFxuICAkc3RyOiAnJztcbiAgLy8gSXMgaXQgYSBuYW1lZCBtZWRpYSBxdWVyeT9cbiAgJG5hbWVkOiBmYWxzZTtcblxuICAvLyBPcmllbnRhdGlvbiBtZWRpYSBxdWVyaWVzIGhhdmUgYSB1bmlxdWUgc3ludGF4XG4gIEBpZiAkYnAgPT0gJ2xhbmRzY2FwZScgb3IgJGJwID09ICdwb3J0cmFpdCcge1xuICAgIEByZXR1cm4gJyhvcmllbnRhdGlvbjogI3skYnB9KSc7XG4gIH1cbiAgQGVsc2UgaWYgJGJwID09ICdyZXRpbmEnIHtcbiAgICBAcmV0dXJuICcoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAyKSwgKG1pbi1yZXNvbHV0aW9uOiAxOTJkcGkpJztcbiAgfVxuXG4gIC8vIFRyeSB0byBwdWxsIGEgbmFtZWQgYnJlYWtwb2ludCBvdXQgb2YgdGhlICRicmVha3BvaW50cyBtYXBcbiAgQGlmIHR5cGUtb2YoJGJwKSA9PSAnc3RyaW5nJyB7XG4gICAgQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJGJwKSB7XG4gICAgICBAaWYgJGRpciA9PSAnb25seScgb3IgJGRpciA9PSAnZG93bicge1xuICAgICAgICAkYnAtbWF4OiAtemYtbWFwLW5leHQoJGJyZWFrcG9pbnRzLCAkYnApO1xuICAgICAgfVxuXG4gICAgICAkYnA6IG1hcC1nZXQoJGJyZWFrcG9pbnRzLCAkYnApO1xuICAgICAgJG5hbWVkOiB0cnVlO1xuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICAkYnA6IDA7XG4gICAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBcIiN7JHZhbH1cIiBpcyBub3QgZGVmaW5lZCBpbiB5b3VyICRicmVha3BvaW50cyBzZXR0aW5nLic7XG4gICAgfVxuICB9XG5cbiAgLy8gQ29udmVydCBhbnkgcGl4ZWwsIHJlbSwgb3IgdW5pdGxlc3MgdmFsdWUgdG8gZW1cbiAgJGJwOiAtemYtYnAtdG8tZW0oJGJwKTtcbiAgLy8gTWF4IHZhbHVlIGlzIDAuMnB4IHVuZGVyIHRoZSBuZXh0IGJyZWFrcG9pbnQgKDAuMDIgLyAxNiA9IDAuMDAxMjUpLlxuICAvLyBVc2UgYSBwcmVjaXNpb24gdW5kZXIgMXB4IHRvIHN1cHBvcnQgYnJvd3NlciB6b29tLCBidXQgbm90IHRvIGxvdyB0byBhdm9pZCByb3VuZGluZy5cbiAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS96dXJiL2ZvdW5kYXRpb24tc2l0ZXMvaXNzdWVzLzExMzEzXG4gIEBpZiAkYnAtbWF4IHtcbiAgICAkYnAtbWF4OiAtemYtYnAtdG8tZW0oJGJwLW1heCkgLSAuMDAxMjU7XG4gIH1cblxuICAvLyBDb25kaXRpb25zIHRvIHNraXAgbWVkaWEgcXVlcnkgY3JlYXRpb25cbiAgLy8gLSBJdCdzIGEgbmFtZWQgYnJlYWtwb2ludCB0aGF0IHJlc29sdmVkIHRvIFwiMCBkb3duXCIgb3IgXCIwIHVwXCJcbiAgLy8gLSBJdCdzIGEgbnVtZXJpYyBicmVha3BvaW50IHRoYXQgcmVzb2x2ZWQgdG8gXCIwIFwiICsgYW55dGhpbmdcbiAgQGlmICRicCA+IDBlbSBvciAkZGlyID09ICdvbmx5JyBvciAkZGlyID09ICdkb3duJyB7XG4gICAgLy8gYG9ubHlgIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1pbi13aWR0aDogbikgYW5kIChtYXgtd2lkdGg6IG4pYFxuICAgIEBpZiAkZGlyID09ICdvbmx5JyB7XG4gICAgICAvLyBPbmx5IG5hbWVkIG1lZGlhIHF1ZXJpZXMgY2FuIGhhdmUgYW4gXCJvbmx5XCIgcmFuZ2VcbiAgICAgIEBpZiAkbmFtZWQgPT0gdHJ1ZSB7XG4gICAgICAgIC8vIE9ubHkgdXNlIFwibWluLXdpZHRoXCIgaWYgdGhlIGZsb29yIGlzIGdyZWF0ZXIgdGhhbiAwXG4gICAgICAgIEBpZiAkYnAgPiAwZW0ge1xuICAgICAgICAgICRzdHI6ICRzdHIgKyAnKG1pbi13aWR0aDogI3skYnB9KSc7XG5cbiAgICAgICAgICAvLyBPbmx5IGFkZCBcImFuZFwiIHRvIHRoZSBtZWRpYSBxdWVyeSBpZiB0aGVyZSdzIGEgY2VpbGluZ1xuICAgICAgICAgIEBpZiAkYnAtbWF4ICE9IG51bGwge1xuICAgICAgICAgICAgJHN0cjogJHN0ciArICcgYW5kICc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gT25seSB1c2UgXCJtYXgtd2lkdGhcIiBpZiB0aGVyZSdzIGEgY2VpbGluZ1xuICAgICAgICBAaWYgJGJwLW1heCAhPSBudWxsIHtcbiAgICAgICAgICAkc3RyOiAkc3RyICsgJyhtYXgtd2lkdGg6ICN7JGJwLW1heH0pJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgQGVsc2Uge1xuICAgICAgICBAd2FybiAnYnJlYWtwb2ludCgpOiBPbmx5IG5hbWVkIG1lZGlhIHF1ZXJpZXMgY2FuIGhhdmUgYW4gYG9ubHlgIHJhbmdlLic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYGRvd25gIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1heC13aWR0aDogbilgXG4gICAgQGVsc2UgaWYgJGRpciA9PSAnZG93bicge1xuICAgICAgJG1heDogaWYoJG5hbWVkLCAkYnAtbWF4LCAkYnApO1xuXG4gICAgICAvLyBTa2lwIG1lZGlhIHF1ZXJ5IGNyZWF0aW9uIGlmIGlucHV0IHZhbHVlIGlzIGV4YWN0bHkgXCIwIGRvd25cIixcbiAgICAgIC8vIHVubGVzcyB0aGUgZnVuY3Rpb24gd2FzIGNhbGxlZCBhcyBcInNtYWxsIGRvd25cIiwgaW4gd2hpY2ggY2FzZSBpdCdzIGp1c3QgXCJzbWFsbCBvbmx5XCJcbiAgICAgIEBpZiAkbmFtZWQgb3IgJGJwID4gMGVtIHtcbiAgICAgICAgQGlmICRtYXggIT0gbnVsbCB7XG4gICAgICAgICAgJHN0cjogJHN0ciArICcobWF4LXdpZHRoOiAjeyRtYXh9KSc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBgdXBgIHJhbmdlcyB1c2UgdGhlIGZvcm1hdCBgKG1pbi13aWR0aDogbilgXG4gICAgQGVsc2UgaWYgJGJwID4gMGVtIHtcbiAgICAgICRzdHI6ICRzdHIgKyAnKG1pbi13aWR0aDogI3skYnB9KSc7XG4gICAgfVxuICB9XG5cbiAgQHJldHVybiAkc3RyO1xufVxuXG4vLy8gV3JhcHMgYSBtZWRpYSBxdWVyeSBhcm91bmQgdGhlIGNvbnRlbnQgeW91IHB1dCBpbnNpZGUgdGhlIG1peGluLiBUaGlzIG1peGluIGFjY2VwdHMgYSBudW1iZXIgb2YgdmFsdWVzOlxuLy8vICAtIElmIGEgc3RyaW5nIGlzIHBhc3NlZCwgdGhlIG1peGluIHdpbGwgbG9vayBmb3IgaXQgaW4gdGhlIGAkYnJlYWtwb2ludHNgIG1hcCwgYW5kIHVzZSBhIG1lZGlhIHF1ZXJ5IHRoZXJlLlxuLy8vICAtIElmIGEgcGl4ZWwgdmFsdWUgaXMgcGFzc2VkLCBpdCB3aWxsIGJlIGNvbnZlcnRlZCB0byBhbiBlbSB2YWx1ZSB1c2luZyBgJGdsb2JhbC1mb250LXNpemVgIGFzIHRoZSBiYXNlLlxuLy8vICAtIElmIGEgcmVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHVuaXQgd2lsbCBiZSBjaGFuZ2VkIHRvIGVtLlxuLy8vICAtIElmIGFuIGVtIHZhbHVlIGlzIHBhc3NlZCwgdGhlIHZhbHVlIHdpbGwgYmUgdXNlZCBhcy1pcy5cbi8vL1xuLy8vIEBwYXJhbSB7S2V5d29yZHxOdW1iZXJ9ICR2YWx1ZSAtIEJyZWFrcG9pbnQgbmFtZSwgb3IgcHgsIHJlbSwgb3IgZW0gdmFsdWUgdG8gcHJvY2Vzcy5cbi8vL1xuLy8vIEBvdXRwdXQgSWYgdGhlIGJyZWFrcG9pbnQgaXMgXCIwcHggYW5kIGxhcmdlclwiLCBvdXRwdXRzIHRoZSBjb250ZW50IGFzLWlzLiBPdGhlcndpc2UsIG91dHB1dHMgdGhlIGNvbnRlbnQgd3JhcHBlZCBpbiBhIG1lZGlhIHF1ZXJ5LlxuQG1peGluIGJyZWFrcG9pbnQoJHZhbHVlKSB7XG4gICRzdHI6IGJyZWFrcG9pbnQoJHZhbHVlKTtcbiAgJGJwOiBpbmRleCgkLXpmLWJyZWFrcG9pbnRzLWtleXMsICR2YWx1ZSk7XG4gICRwYnA6IGluZGV4KCQtemYtYnJlYWtwb2ludHMta2V5cywgJHByaW50LWJyZWFrcG9pbnQpO1xuXG4gICRvbGQtemYtc2l6ZTogbnVsbDtcblxuICAvLyBNYWtlIGJyZWFrcG9pbnQgc2l6ZSBhdmFpbGFibGUgYXMgYSB2YXJpYWJsZVxuICBAaWYgZ2xvYmFsLXZhcmlhYmxlLWV4aXN0cygtemYtc2l6ZSkge1xuICAgICRvbGQtemYtc2l6ZTogJC16Zi1zaXplO1xuICB9XG4gICQtemYtc2l6ZTogbnRoKCR2YWx1ZSwgMSkgIWdsb2JhbDsgLy8gZ2V0IHRoZSBmaXJzdCB2YWx1ZSB0byBhY2NvdW50IGZvciBgb25seWAgYW5kIGBkb3duYCBrZXl3b3Jkc1xuXG4gIC8vIElmICRzdHIgaXMgc3RpbGwgYW4gZW1wdHkgc3RyaW5nLCBubyBtZWRpYSBxdWVyeSBpcyBuZWVkZWRcbiAgQGlmICRzdHIgPT0gJycge1xuICAgIEBjb250ZW50O1xuICB9XG5cbiAgLy8gT3RoZXJ3aXNlLCB3cmFwIHRoZSBjb250ZW50IGluIGEgbWVkaWEgcXVlcnlcbiAgQGVsc2Uge1xuICAgIC8vIEZvciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJHByaW50LWJyZWFrcG9pbnQsIGFkZCBwcmludCB0byB0aGUgbWVkaWEgdHlwZXNcbiAgICBAaWYgJGJwICE9IG51bGwgYW5kICRicCA8PSAkcGJwIHtcbiAgICAgIEBtZWRpYSBwcmludCwgc2NyZWVuIGFuZCAjeyRzdHJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgfVxuICAgIH1cbiAgICBAZWxzZSB7XG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAjeyRzdHJ9IHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgJC16Zi1zaXplOiAkb2xkLXpmLXNpemUgIWdsb2JhbDtcbn1cblxuLy8vIENvbnZlcnRzIHRoZSBicmVha3BvaW50cyBtYXAgdG8gYSBVUkwtZW5jb2RlZCBzdHJpbmcsIGxpa2UgdGhpczogYGtleTE9dmFsdWUxJmtleTI9dmFsdWUyYC4gVGhlIHZhbHVlIGlzIHRoZW4gZHJvcHBlZCBpbnRvIHRoZSBDU1MgZm9yIGEgc3BlY2lhbCBgPG1ldGE+YCB0YWcsIHdoaWNoIGlzIHJlYWQgYnkgdGhlIEZvdW5kYXRpb24gSmF2YVNjcmlwdC4gVGhpcyBpcyBob3cgd2UgdHJhbnNmZXIgdmFsdWVzIGZyb20gU2FzcyB0byBKYXZhU2NyaXB0LCBzbyB0aGV5IGNhbiBiZSBkZWZpbmVkIGluIG9uZSBwbGFjZS5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TWFwfSAkbWFwIC0gTWFwIHRvIGNvbnZlcnQuXG4vLy9cbi8vLyBAcmV0dXJucyB7U3RyaW5nfSBBIHN0cmluZyBjb250YWluaW5nIHRoZSBtYXAncyBjb250ZW50cy5cbkBmdW5jdGlvbiAtemYtYnAtc2VyaWFsaXplKCRtYXApIHtcbiAgJHN0cjogJyc7XG4gIEBlYWNoICRrZXksICR2YWx1ZSBpbiAkbWFwIHtcbiAgICAkc3RyOiAkc3RyICsgJGtleSArICc9JyArIC16Zi1icC10by1lbSgkdmFsdWUpICsgJyYnO1xuICB9XG4gICRzdHI6IHN0ci1zbGljZSgkc3RyLCAxLCAtMik7XG5cbiAgQHJldHVybiAkc3RyO1xufVxuXG4vLy8gRmluZCB0aGUgbmV4dCBrZXkgaW4gYSBtYXAuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge01hcH0gJG1hcCAtIE1hcCB0byB0cmF2ZXJzZS5cbi8vLyBAcGFyYW0ge01peGVkfSAka2V5IC0gS2V5IHRvIHVzZSBhcyBhIHN0YXJ0aW5nIHBvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge01peGVkfSBUaGUgdmFsdWUgZm9yIHRoZSBrZXkgYWZ0ZXIgYCRrZXlgLCBpZiBgJGtleWAgd2FzIGZvdW5kLiBJZiBgJGtleWAgd2FzIG5vdCBmb3VuZCwgb3IgYCRrZXlgIHdhcyB0aGUgbGFzdCB2YWx1ZSBpbiB0aGUgbWFwLCByZXR1cm5zIGBudWxsYC5cbkBmdW5jdGlvbiAtemYtbWFwLW5leHQoJG1hcCwgJGtleSkge1xuXG4gIC8vIFN0b3JlIHRoZSBrZXlzIG9mIHRoZSBtYXAgYXMgYSBsaXN0XG4gICR2YWx1ZXM6IG1hcC1rZXlzKCRtYXApO1xuXG4gICRpOiAwO1xuXG4gIC8vIElmIHRoZSBLZXkgRXhpc3RzLCBHZXQgdGhlIGluZGV4IG9mIHRoZSBrZXkgd2l0aGluIHRoZSBtYXAgYW5kIGFkZCAxIHRvIGl0IGZvciB0aGUgbmV4dCBicmVha3BvaW50IGluIHRoZSBtYXBcbiAgQGlmIChtYXAtaGFzLWtleSgkbWFwLCAka2V5KSkge1xuICAgICRpOiBpbmRleCgkdmFsdWVzLCAka2V5KSArIDE7XG4gIH1cblxuICAvLyBJZiB0aGUga2V5IGRvZXNuJ3QgZXhpc3QsIG9yIGl0J3MgdGhlIGxhc3Qga2V5IGluIHRoZSBtYXAsIHJldHVybiBudWxsXG4gIEBpZiAoJGkgPiBsZW5ndGgoJG1hcCkgb3IgJGkgPT0gMCkge1xuICAgIEByZXR1cm4gbnVsbDtcbiAgfVxuICAvLyBPdGhlcndpc2UsIHJldHVybiB0aGUgdmFsdWVcbiAgQGVsc2Uge1xuICAgIEByZXR1cm4gbWFwLWdldCgkbWFwLCBudGgoJHZhbHVlcywgJGkpKTtcbiAgfVxuXG59XG5cbi8vLyBSZXR1cm4gYSBsaXN0IG9mIG91ciBuYW1lZCBicmVha3BvaW50cyBsZXNzIHRoYW4gJGtleS4gVXNlZnVsIGZvciBkZWFsaW5nIHdpdGhcbi8vLyByZXNwb25zaXZlIGd1dHRlcnMgZm9yIHRoZSBncmlkLlxuLy8vIEBhY2Nlc3MgcHJpdmF0ZVxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRrZXkgLSBLZXkgdG8gdXNlIGFzIGxhc3QgYnJlYWtwb2ludC5cbi8vL1xuLy8vIEByZXR1cm5zIHtBcnJheX0gVGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgdXAgdG8gYW5kLiBJZiAka2V5IGlzIGF1dG8sIHJldHVybnMgYnJlYWtwb2ludHMgYWJvdmUgdGhlIHplcm9cbkBmdW5jdGlvbiAtemYtYnJlYWtwb2ludHMtbGVzcy10aGFuKCRrZXkpIHtcbiAgJGxpc3Q6ICgpO1xuICAkZm91bmRfa2V5OiBmYWxzZTtcblxuICBAZWFjaCAkbmFtZSBpbiAkLXpmLWJyZWFrcG9pbnRzLWtleXMge1xuICAgIEBpZiAoJG5hbWUgPT0gJGtleSkge1xuICAgICAgJGZvdW5kX2tleTogdHJ1ZTtcbiAgICB9XG4gICAgQGlmIG5vdCAkZm91bmRfa2V5IHtcbiAgICAgICRsaXN0OiBhcHBlbmQoJGxpc3QsICRuYW1lKTtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkbGlzdDtcbn1cblxuLy8vIFJldHVybiBhIGxpc3Qgb2Ygb3VyIG5hbWVkIGJyZWFrcG9pbnRzIGxlc3MgdGhhbiAka2V5LiBVc2VmdWwgZm9yIGRlYWxpbmcgd2l0aFxuLy8vIHJlc3BvbnNpdmUgZ3V0dGVycyBmb3IgdGhlIGdyaWQuXG4vLy8gQGFjY2VzcyBwcml2YXRlXG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJGJyZWFrcG9pbnQgLSBhIG5hbWVkIG9yIG5vbi1uYW1lZCBicmVha3BvaW50LlxuLy8vXG4vLy8gQHJldHVybnMge0FycmF5fSBUaGUgbGlzdCBvZiBicmVha3BvaW50cyB1cCB0byBhbmQuIElmICRrZXkgaXMgYXV0bywgcmV0dXJucyBicmVha3BvaW50cyBhYm92ZSB0aGUgemVyb1xuQGZ1bmN0aW9uIC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJGJyZWFrcG9pbnQpIHtcbiAgJGxhc3Q6ICQtemYtemVyby1icmVha3BvaW50O1xuICAkZm91bmQ6IGZhbHNlO1xuXG4gICR2YWx1ZTogdW5pdGxlc3MtY2FsYygkYnJlYWtwb2ludCwgMXB4KTtcbiAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgIEBpZiBub3QgJGZvdW5kIHtcbiAgICAgIEBpZiB1bml0bGVzcy1jYWxjKCR2YWwpID4gJHZhbHVlIHtcbiAgICAgICAgJGZvdW5kOiB0cnVlO1xuICAgICAgfSBAZWxzZSB7XG4gICAgICAgICRsYXN0OiAka2V5O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIEByZXR1cm4gJGxhc3Q7XG59XG5cbi8vLyBHZXQgYSB2YWx1ZSBmb3IgYSBicmVha3BvaW50IGZyb20gYSByZXNwb25zaXZlIGNvbmZpZyBtYXAgb3Igc2luZ2xlIHZhbHVlLlxuLy8vIC0gSWYgdGhlIGNvbmZpZyBpcyBhIHNpbmdsZSB2YWx1ZSwgcmV0dXJuIGl0IHJlZ2FyZGxlc3Mgb2YgYCR2YWx1ZWAuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBoYXMgdGhlIGtleSBgJHZhbHVlYCwgdGhlIGV4YWN0IGJyZWFrcG9pbnQgdmFsdWUgaXMgcmV0dXJuZWQuXG4vLy8gLSBJZiB0aGUgY29uZmlnIGlzIGEgbWFwIGFuZCBkb2VzICpub3QqIGhhdmUgdGhlIGJyZWFrcG9pbnQsIHRoZSB2YWx1ZSBtYXRjaGluZyB0aGUgbmV4dCBsb3dlc3QgYnJlYWtwb2ludCBpbiB0aGUgY29uZmlnIG1hcCBpcyByZXR1cm5lZC5cbi8vLyBAYWNjZXNzIHByaXZhdGVcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfE1hcH0gJG1hcCAtIFJlc3BvbnNpdmUgY29uZmlnIG1hcCBvciBzaW5nbGUgdmFsdWUuXG4vLy8gQHBhcmFtIHtLZXl3b3JkfSAkdmFsdWUgLSBCcmVha3BvaW50IG5hbWUgdG8gdXNlLlxuLy8vXG4vLy8gQHJldHVybiB7TWl4ZWR9IFRoZSBjb3JyZXNwb25kaW5nIGJyZWFrcG9pbnQgdmFsdWUuXG5AZnVuY3Rpb24gLXpmLWdldC1icC12YWwoJG1hcCwgJHZhbHVlKSB7XG4gIC8vIElmIHRoZSBnaXZlbiBtYXAgaXMgYSBzaW5nbGUgdmFsdWUsIHJldHVybiBpdFxuICBAaWYgdHlwZS1vZigkbWFwKSA9PSAnbnVtYmVyJyB7XG4gICAgQHJldHVybiAkbWFwO1xuICB9XG5cblxuICAvLyBDaGVjayBpZiB0aGUgYnJlYWtwb2ludCBuYW1lIGV4aXN0cyBnbG9iYWxseVxuICBAaWYgbm90IG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgJHZhbHVlKSB7XG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSAnbnVtYmVyJyB7XG4gICAgICAkdmFsdWU6IC16Zi1jbG9zZXN0LW5hbWVkLWJyZWFrcG9pbnQoJHZhbHVlKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbiAgLy8gQ2hlY2sgaWYgdGhlIGJyZWFrcG9pbnQgbmFtZSBleGlzdHMgaW4gdGhlIGxvY2FsIGNvbmZpZyBtYXBcbiAgQGVsc2UgaWYgbWFwLWhhcy1rZXkoJG1hcCwgJHZhbHVlKSB7XG4gICAgLy8gSWYgaXQgZG9lcywganVzdCByZXR1cm4gdGhlIHZhbHVlXG4gICAgQHJldHVybiBtYXAtZ2V0KCRtYXAsICR2YWx1ZSk7XG4gIH1cbiAgLy8gT3RoZXJ3aXNlLCBmaW5kIHRoZSBuZXh0IGxvd2VzdCBicmVha3BvaW50IGFuZCByZXR1cm4gdGhhdCB2YWx1ZVxuICBAZWxzZSB7XG4gICAgJGFuY2hvcjogbnVsbDtcbiAgICAkZm91bmQ6IGZhbHNlO1xuXG4gICAgQGVhY2ggJGtleSwgJHZhbCBpbiAkYnJlYWtwb2ludHMge1xuICAgICAgQGlmIG5vdCAkZm91bmQge1xuICAgICAgICBAaWYgbWFwLWhhcy1rZXkoJG1hcCwgJGtleSkge1xuICAgICAgICAgICRhbmNob3I6ICRrZXk7XG4gICAgICAgIH1cbiAgICAgICAgQGlmICRrZXkgPT0gJHZhbHVlIHtcbiAgICAgICAgICAkZm91bmQ6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBAcmV0dXJuIG1hcC1nZXQoJG1hcCwgJGFuY2hvcik7XG4gIH1cbn1cblxuJHNtYWxsLXVwOiAnJztcbiRzbWFsbC1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgc21hbGwpIHtcbiAgJHNtYWxsLXVwOiBzY3JlZW47XG4gICRzbWFsbC1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChzbWFsbCBvbmx5KX0nKTtcbn1cblxuJG1lZGl1bS11cDogJyc7XG4kbWVkaXVtLW9ubHk6ICcnO1xuXG5AaWYgbWFwLWhhcy1rZXkoJGJyZWFrcG9pbnRzLCBtZWRpdW0pIHtcbiAgJG1lZGl1bS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobWVkaXVtKX0nKTtcbiAgJG1lZGl1bS1vbmx5OiB1bnF1b3RlKCdzY3JlZW4gYW5kICN7YnJlYWtwb2ludChtZWRpdW0gb25seSl9Jyk7XG59XG5cbiRsYXJnZS11cDogJyc7XG4kbGFyZ2Utb25seTogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIGxhcmdlKSB7XG4gICRsYXJnZS11cDogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobGFyZ2UpfScpO1xuICAkbGFyZ2Utb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQobGFyZ2Ugb25seSl9Jyk7XG59XG5cbiR4bGFyZ2UtdXA6ICcnO1xuJHhsYXJnZS1vbmx5OiAnJztcblxuQGlmIG1hcC1oYXMta2V5KCRicmVha3BvaW50cywgeGxhcmdlKSB7XG4gICR4bGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHhsYXJnZSl9Jyk7XG4gICR4bGFyZ2Utb25seTogdW5xdW90ZSgnc2NyZWVuIGFuZCAje2JyZWFrcG9pbnQoeGxhcmdlIG9ubHkpfScpO1xufVxuXG4keHhsYXJnZS11cDogJyc7XG5cbkBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsIHh4bGFyZ2UpIHtcbiAgJHh4bGFyZ2UtdXA6IHVucXVvdGUoJ3NjcmVlbiBhbmQgI3ticmVha3BvaW50KHh4bGFyZ2UpfScpO1xufVxuIiwiLy8gYmVuZWZpdHNcblxuXG4uYmVuZWZpdHMtY29udGFpbmVyIHtcblxuICAgIC8vbWF4LXdpZHRoOiA4Ny41cmVtO1xuICAgIC8vbWFyZ2luOiAwIGF1dG87XG4gICAgcGFkZGluZy1sZWZ0OiAwO1xuICAgIHBhZGRpbmctcmlnaHQ6IDA7XG5cbiAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgIC8qcGFkZGluZy1yaWdodDogLjkzNzVyZW07XG4gICAgICAgIHBhZGRpbmctbGVmdDogLjkzNzVyZW07Ki9cbiAgICB9XG4gICAgLmJlbmVmaXRzLWhlcm8ge1xuICAgICAgICAvL3BhZGRpbmctYm90dG9tOiByZW0tY2FsYygyMCk7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7XG4gICAgICAgICAgICAvL3BhZGRpbmctYm90dG9tOiByZW0tY2FsYygwKTtcbiAgICAgICAgICAgIC8vcGFkZGluZy1yaWdodDogMDtcbiAgICAgICAgICAgIC8vcGFkZGluZy1sZWZ0OiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgaW1nIHtcbiAgICAgICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAuNXMgZWFzZTtcbiAgICAgICAgICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAuYmVuZWZpdHMtY29udGVudCB7XG4gICAgXHRwYWRkaW5nOiByZW0tY2FsYygzMCAyMCAzMCAyMCk7XG4gICAgICAgIC8vcGFkZGluZy1sZWZ0OiByZW0tY2FsYygyMCk7XG4gICAgICAgIC8vcGFkZGluZy1yaWdodDogcmVtLWNhbGMoMjApO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIHRvcDogNTAlO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cblxuXG4gICAgICAgIEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHsgXG4gICAgICAgICAgICAmLmZ1bGwtd2lkdGgtY29udGFpbmVyIHtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKDI0KTtcbiAgICAgICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiByZW0tY2FsYygxMzYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cblxuXG4gICAgICAgIC5iZW5lZml0cy1pbnRybyB7XG4gICAgICAgICAgICAvL21hcmdpbi10b3A6IHJlbS1jYWxjKDUwKTtcbiAgICAgICAgICAgIGgyIHtcbiAgICAgICAgICAgICAgXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBcblxuICAgICAgICAuYmVuZWZpdHMge1xuICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNDApO1xuICAgICAgICAgICAgLmJlbmVmaXQge1xuICAgICAgICAgICAgICAgIG1hcmdpbi10b3A6IHJlbS1jYWxjKDEwKTtcbiAgICAgICAgICAgICAgICAvL21hcmdpbi1ib3R0b206IHJlbS1jYWxjKDEwKTtcbiAgICAgICAgICAgICAgICBpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9jb2xvcjogJGNvbG9yLWZvbnQtc2Vjb25kYXJ5O1xuICAgICAgICAgICAgICAgICAgICBmb250LXNpemU6IHJlbS1jYWxjKDIwKTtcbiAgICAgICAgICAgICAgICB9IFxuICAgICAgICAgICAgICAgIHAge1xuICAgICAgICAgICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG5cbiAgICAgICAgLmJ1dHRvbiB7XG4gICAgICAgICAgICBAaW5jbHVkZSBicmVha3BvaW50KHNtYWxsIG9ubHkpIHtcbiAgICAgICAgICAgICAgICBtYXJnaW4tdG9wOiByZW0tY2FsYygyMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH1cbn1cblxuXG5cblxuIiwiLy8gcGFyYWxsYXhcblxuLnBhcmFsbGF4LXdpbmRvdyB7XG4gICAgbWluLWhlaWdodDogcmVtLWNhbGMoNDUwKTtcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBtYXJnaW4tdG9wOiByZW0tY2FsYyg4MCk7XG4gICAgbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoODApO1xuXG5cdC5wYXJhbGxheC1jb250ZW50IHtcblx0XHRtYXgtd2lkdGg6IHJlbS1jYWxjKDg1MCk7XG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgbGVmdDogMDtcblx0XHRyaWdodDogMDtcblx0XHRtYXJnaW4tbGVmdDogYXV0bztcblx0XHRtYXJnaW4tcmlnaHQ6IGF1dG87XG4gICAgXHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgXHRwYWRkaW5nLXJpZ2h0OiByZW0tY2FsYygyMCk7XG4gICAgXHRwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKDIwKTtcblxuICAgIFx0aDIge1xuICAgIFx0XHR0ZXh0LXNoYWRvdzogMCAxcHggM3B4ICM0NTQ1NDU7XG4gICAgXHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHsgXG4gICAgXHRcdFx0Zm9udC1zaXplOiByZW0tY2FsYygzOCk7XG4gICAgXHRcdH1cbiAgICBcdH1cblxuXHRcdC5jb250ZW50IHtcblx0XHRcdHRleHQtc2hhZG93OiAwIDFweCAzcHggIzQ1NDU0NTtcdFx0XG5cdFx0fVxuXG5cdFx0LmJ1dHRvbiB7XG5cdFx0XHRtYXJnaW4tdG9wOiByZW0tY2FsYygyMCk7XG5cdFx0XHRwYWRkaW5nOiByZW0tY2FsYygxOCAxMCk7XG5cdFx0XHR3aWR0aDogcmVtLWNhbGMoMTgwKTsgXG5cdFx0XHRcblx0XHR9XG5cblx0fVxuXG59IiwiLy8gcmVjZW50IGFydGljbGVzXG5cbiNsYXRlc3QtbmV3cyB7XG5cblx0bWFyZ2luLXRvcDogcmVtLWNhbGMoNjApO1xuXHRtYXJnaW4tYm90dG9tOiByZW0tY2FsYyg2MCk7XG5cblx0aDIge1xuXHRcdC8vZm9udC1zaXplOiByZW0tY2FsYygzNik7XG5cdFx0QGluY2x1ZGUgYnJlYWtwb2ludChsYXJnZSkge1xuXHRcdFx0Ly9mb250LXNpemU6IHJlbS1jYWxjKDQ0KTtcblx0XHR9XG5cdH1cblx0XG5cblx0LmxhdGVzdC1uZXdzIHtcblx0XHQvL2JvcmRlcjogMXB4IHNvbGlkICMwMDAwMDA7XG5cblx0ICAgIC5hcnRpY2xlIHtcblx0XHRcdC8vYm9yZGVyOiAxcHggc29saWQgIzAwMDAwMDtcblx0XHRcdG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDIwKTtcblx0XHRcdHBhZGRpbmctbGVmdDogcmVtLWNhbGMoMjApO1xuXHRcdFx0cGFkZGluZy1yaWdodDogcmVtLWNhbGMoMjApO1xuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xuXHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXHRcdFx0Ly9oZWlnaHQ6IHJlbS1jYWxjKDM1MCk7XG5cblx0XHRcdC5pbWFnZSB7XG5cdFx0XHRcdG92ZXJmbG93OiBoaWRkZW47XG5cdFx0XHRcdG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDMwKTtcblxuXHRcdFx0fVxuXG5cdFx0XHRoNCB7XG5cdFx0XHRcdG1pbi1oZWlnaHQ6IHJlbS1jYWxjKDEwMCk7XG5cdFx0XHR9XG5cdFx0XHQuY29udGVudCB7XG5cdFx0XHRcdG1pbi1oZWlnaHQ6IHJlbS1jYWxjKDEwMCk7XG5cdFx0XHR9XG5cdFx0XHQuYnV0dG9uIHtcblx0XHRcdFx0XHQvL3Bvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0XHRsZWZ0OiAwOyBcblx0XHRcdFx0XHRyaWdodDogMDsgXG5cdFx0XHRcdFx0Ym90dG9tOiByZW0tY2FsYygxMCk7XG5cdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IGF1dG87IFxuXHRcdFx0XHRcdG1hcmdpbi1yaWdodDogYXV0bztcblx0XHRcdFx0XHR3aWR0aDogcmVtLWNhbGMoMTgwKTsgXG5cdFx0XHRcdFx0cGFkZGluZzogcmVtLWNhbGMoMTIgMTApO1xuXHRcdFx0XHRcdC13ZWJraXQtYm94LXNoYWRvdzogMCAycHggNHB4IDAgIzg1ODU4NTtcbiAgICAgICAgXHRcdFx0Ym94LXNoYWRvdzogMCAycHggNHB4IDAgIzg1ODU4NTtcblx0XHRcdH1cblxuXG5cdCAgICB9XG5cblx0fVxuXG5cblx0LmJ1dHRvbi1zb2xpZCB7XG5cdFx0bWF4LXdpZHRoOiByZW0tY2FsYygzMDApO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdHBhZGRpbmc6IHJlbS1jYWxjKDE1IDEwKTtcblx0XHQtd2Via2l0LWJveC1zaGFkb3c6IDAgMnB4IDRweCAwICM4NTg1ODU7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwICM4NTg1ODU7XG5cdH1cblxufVxuXG4iLCIvLyBUZXN0aW1vbmlhbHMgUGFydGlhbFxuXG5cbiN0ZXN0aW1vbmlhbHMge1xuXHQvL3BhZGRpbmctdG9wOiByZW0tY2FsYygzMCk7XG5cdC8vcGFkZGluZy1ib3R0b206IHJlbS1jYWxjKDMwKTtcblx0bWFyZ2luLXRvcDogcmVtLWNhbGMoNDApO1xuXHRtYXJnaW4tYm90dG9tOiByZW0tY2FsYyg0MCk7XG5cdHRleHQtYWxpZ246IGNlbnRlcjtcblx0XG5cdGgyIHtcblx0XHRtYXJnaW4tYm90dG9tOiByZW0tY2FsYygyMCk7XG5cdFx0Ly9jb2xvcjogJGNvbG9yLWJhc2Utc2Vjb25kYXJ5O1xuXHRcdFxuXHR9XG5cblx0LnRlc3RpbW9uaWFscyB7XG5cdFx0Ly9tYXgtd2lkdGg6IHJlbS1jYWxjKDEwMDApO1xuXHRcdC8vbWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0Ly9tYXJnaW4tcmlnaHQ6IGF1dG87XG5cdFx0LnRlc3RpbW9uaWFsIHtcblx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcblx0XHRcdG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDQwKTtcblx0XHRcdG1hcmdpbi1sZWZ0OiByZW0tY2FsYygyMCk7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IHJlbS1jYWxjKDIwKTtcblx0XHRcdHBhZGRpbmctYm90dG9tOiByZW0tY2FsYyg0MCk7XG5cdFx0XHRhIHtcblx0XHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdFx0dGV4dC1kZWNvcmF0aW9uOiBub25lOyBcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0LmltYWdlIHtcblx0XHRcdFx0Ly9ib3JkZXI6IDFweCBzb2xpZCAjMDAwO1xuXHRcdFx0XHQvKm1heC1oZWlnaHQ6IDY0MHB4O1xuXHRcdFx0XHRtYXgtd2lkdGg6IDY0MHB4OyovXG5cdFx0XHRcdHBhZGRpbmc6IHJlbS1jYWxjKDIwIDIwKTtcblx0XHRcblx0XHRcdFx0aW1nIHtcblx0XHRcdFx0XHRtYXgtaGVpZ2h0OiByZW0tY2FsYygxNTApO1xuXHRcdFx0XHRcdHdpZHRoOiBhdXRvO1xuXHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdFx0XHRcdG1hcmdpbi1yaWdodDogYXV0bztcblx0XHRcdFx0XHQvKmhlaWdodDogNjQwcHg7XG5cdFx0XHRcdFx0d2lkdGg6IDY0MHB4OyovXHRcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0LmNvbnRlbnQge1xuXHRcdFx0XHQtd2Via2l0LWJveC1zaGFkb3c6IDAgMnB4IDEwcHggMCAjODU4NTg1O1xuXHRcdFx0XHRib3gtc2hhZG93OiAwIDJweCAxMHB4IDAgIzg1ODU4NTtcblx0XHRcdFx0cGFkZGluZzogcmVtLWNhbGMoMzAgMjUgOTAgMjUpO1xuXHRcdFx0XHQgXG5cdFx0XHRcdGhlaWdodDogcmVtLWNhbGMoMzUwKTtcblx0XHRcdFx0b3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdFx0cG9zaXRpb246IHJlbGF0aXZlO1xuXG5cblx0XHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHsgXG5cdFx0XHRcdFx0aGVpZ2h0OiByZW0tY2FsYygzOTApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0XG5cblx0XHRcdFx0LmV4Y2VycHQtd3JhcHBlciB7XG5cdFx0XHRcdFx0Ly9tYXgtaGVpZ2h0OiByZW0tY2FsYygyNTApO1xuXHRcdFx0XHRcdC8vb3ZlcmZsb3c6IGhpZGRlbjtcblx0XHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIFx0XHRcdHRvcDogNTAlO1xuICAgICAgICBcdFx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG5cblx0XHRcdFx0fVxuXG5cblx0XHRcdFx0Lm5hbWUtb3JnYW5pc2F0aW9uLXdyYXBwZXIge1xuXHRcdFx0XHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcblx0XHRcdFx0XHRsZWZ0OiAwOyBcblx0XHRcdFx0XHRyaWdodDogMDsgXG5cdFx0XHRcdFx0Ym90dG9tOiByZW0tY2FsYygyMCk7XG5cdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IGF1dG87IFxuXHRcdFx0XHRcdG1hcmdpbi1yaWdodDogYXV0bzsgXG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0Lm5hbWUge1xuXHRcdFx0XHRcdFx0bWFyZ2luLXRvcDogcmVtLWNhbGMoMjApO1xuXHRcdFx0XHRcdFx0bWFyZ2luLWJvdHRvbTogMDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Lm9yZ2FuaXNhdGlvbiB7XG5cdFx0XHRcdFx0XHRtYXJnaW4tYm90dG9tOiAwO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XG5cdFx0XHR9XG5cblx0XHRcblx0XHRcblxuXHRcdFxuXG5cdFx0fVxuXG5cdH1cblx0XHRcblx0LmJ1dHRvbi1zb2xpZCB7XG5cdFx0bWF4LXdpZHRoOiByZW0tY2FsYygzMDApO1xuXHRcdHdpZHRoOiAxMDAlO1xuXHRcdHBhZGRpbmc6IHJlbS1jYWxjKDE1IDEwKTtcblx0XHQtd2Via2l0LWJveC1zaGFkb3c6IDAgMnB4IDRweCAwICM4NTg1ODU7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCAwICM4NTg1ODU7XG5cdH1cblxufVxuXG5cblxuXG4iLCIvLyBmZWF0dXJlc1xuXG4uZmVhdHVyZXMtY29udGFpbmVyIHtcblx0cGFkZGluZy1sZWZ0OiAwO1xuXHRwYWRkaW5nLXJpZ2h0OiAwO1xuLmZlYXR1cmVzIHtcblx0bWFyZ2luLXRvcDogcmVtLWNhbGMoNDApO1xuXHQvL21hcmdpbi1ib3R0b206IHJlbS1jYWxjKDQwKTtcblxuXHRcdC5mZWF0dXJlIHtcblxuXHRcdFx0QGluY2x1ZGUgYnJlYWtwb2ludChtZWRpdW0pIHsgXG5cdFx0XHRcdC8vbWF4LWhlaWdodDogcmVtLWNhbGMoOTAwKTtcblx0XHRcdH1cblxuXHRcdFxuXHRcdFx0LmNvbnRlbnQge1xuXHRcdFx0XHRwYWRkaW5nLXRvcDogcmVtLWNhbGMoNTApO1xuXHRcdFx0XHRwYWRkaW5nLWJvdHRvbTogcmVtLWNhbGMoMzApO1xuXHRcdFx0XHRwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKDIwKTtcblx0XHRcdFx0cGFkZGluZy1yaWdodDogcmVtLWNhbGMoMjApO1xuXG5cdFx0XHRcdC5mZWF0dXJlZC1jb250ZW50IHtcblx0XHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0XHRcdFx0dG9wOiA1MCU7XG5cdFx0XHRcdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpO1xuXHRcdFx0XHR9XG5cblxuXHRcdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KG1lZGl1bSkgeyBcblx0XHRcdFx0XHRwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKDQwKTtcblx0XHRcdFx0XHRwYWRkaW5nLXJpZ2h0OiByZW0tY2FsYyg0MCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRAaW5jbHVkZSBicmVha3BvaW50KGxhcmdlKSB7IFxuXHRcdFx0XHRcdHBhZGRpbmctbGVmdDogcmVtLWNhbGMoNjApO1xuXHRcdFx0XHRcdHBhZGRpbmctcmlnaHQ6IHJlbS1jYWxjKDYwKTtcblxuXHRcdFx0XHRcdC5mdWxsLXdpZHRoLWNvbnRhaW5lciB7XG5cdFx0XHRcdFx0XHRwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKDEzNik7XG5cdFx0XHRcdFx0XHRwYWRkaW5nLXJpZ2h0OiByZW0tY2FsYygyNCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0aDIge1xuXHRcdFx0XHRcdG1hcmdpbi1sZWZ0OiBhdXRvO1xuXHRcdFx0XHRcdG1hcmdpbi1yaWdodDogYXV0bztcblx0XHRcdFx0XHRtYXJnaW4tYm90dG9tOiByZW0tY2FsYygzMCk7XG5cdFx0XHRcdH1cblxuXHRcdFx0fVxuXG5cdFx0XHQuaW1hZ2Uge1xuXHRcdFx0XHRvdmVyZmxvdzogaGlkZGVuO1xuXHRcdFx0XHRpbWcge1xuXHRcdFx0XHRcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAuNXMgZWFzZTtcblx0XHRcdFx0XHRvYmplY3QtZml0OiBjb3Zlcjtcblx0XHQgICAgICAgICAgICBoZWlnaHQ6IDEwMCU7XG5cdFx0ICAgICAgICAgICAgd2lkdGg6IDEwMCU7XG5cdFx0XHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdFx0XHR0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdCY6bnRoLW9mLXR5cGUoZXZlbikge1xuXHRcdFx0XHQuaW1hZ2Uge1xuXHRcdFx0XHRcdG9yZGVyOiAxO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC5jb250ZW50IHsgXG5cdFx0XHRcdFx0b3JkZXI6IDI7XG5cblxuXHRcdFx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQobGFyZ2UpIHsgXG5cdFx0XHRcdFx0XHQuZnVsbC13aWR0aC1jb250YWluZXIge1xuXHRcdFx0XHRcdFx0XHRwYWRkaW5nLWxlZnQ6IHJlbS1jYWxjKDI0KTtcblx0XHRcdFx0XHRcdFx0cGFkZGluZy1yaWdodDogcmVtLWNhbGMoMTM2KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdEBpbmNsdWRlIGJyZWFrcG9pbnQoc21hbGwgb25seSkge1xuXHRcdFx0XHQmOm50aC1vZi10eXBlKG9kZCkge1xuXHRcdFx0XHRcdC5pbWFnZSB7XG5cdFx0XHRcdFx0XHRvcmRlcjogMTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0LmNvbnRlbnQgeyBcblx0XHRcdFx0XHRcdG9yZGVyOiAyO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cblx0XHR9XG5cdH1cblx0XHRcbn1cblxuXG4iLCIvLyBmYXFzXG5cblxuLmZhcS1jb250YWluZXIge1xuXHRtYXJnaW4tdG9wOiByZW0tY2FsYyg0MCk7XG5cdG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDQwKTtcblxuXHRoMiB7XG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0bWFyZ2luLXJpZ2h0OiBhdXRvO1xuXHRcdG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDMwKTtcblx0fVxuXG5cdGxpIHtcblx0XHRtYXJnaW4tYm90dG9tOiByZW0tY2FsYygxMCk7XG5cdFx0Ym9yZGVyOiAxcHggc29saWQgJGNvbG9yLWJhc2Utc2Vjb25kYXJ5O1xuXG5cdFx0LmFjY29yZGlvbi10aXRsZSB7XG5cdFx0XHQmOmhvdmVyIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdW5zZXQ7XG5cdFx0XHR9XG5cdFx0XHQmOmZvY3VzIHtcblx0XHRcdFx0YmFja2dyb3VuZC1jb2xvcjogdW5zZXQ7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0LmFjY29yZGlvbi10aXRsZTpiZWZvcmUge1xuXHRcdFx0Y29sb3I6ICRibGFjaztcblx0XHRcdGZvbnQtc2l6ZTogcmVtLWNhbGMoMTYpO1xuXHRcdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XG5cdFx0XHRtYXJnaW4tdG9wOiByZW0tY2FsYygtOSk7XG5cdFx0fVxuXHRcdGEge1xuXHRcdFx0Ly9mb250LXNpemU6IHJlbS1jYWxjKDE2KTtcblx0XHRcdHBhZGRpbmctcmlnaHQ6IHJlbS1jYWxjKDQwKTtcblx0XHR9XG5cdFx0aSB7XG5cdFx0XHRtYXJnaW4tcmlnaHQ6IHJlbS1jYWxjKDEwKTtcblx0XHRcdC8vbWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMzUpO1xuXHRcdFx0Ly9mbG9hdDogbGVmdDtcblx0XHR9XG5cdH1cblxuXHRcdFxufVxuXG5cblxuXG4iLCIvLyB2aWRlb1xuXG5cbi52aWRlby1jb250YWluZXIge1xuXHRtYXJnaW4tdG9wOiByZW0tY2FsYyg0MCk7XG5cdG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDQwKTtcblxuXHRoMiB7XG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0bWFyZ2luLXJpZ2h0OiBhdXRvO1xuXHRcdG1hcmdpbi1ib3R0b206IHJlbS1jYWxjKDMwKTtcblx0fVxuXG5cdC5idXR0b24ge1xuXHRcdHBhZGRpbmc6IHJlbS1jYWxjKDIwIDMwKTtcblx0XHRtYXJnaW4tdG9wOiByZW0tY2FsYyg0MCk7XG5cdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0bWFyZ2luLXJpZ2h0OiBhdXRvO1xuXHRcdG1heC13aWR0aDogcmVtLWNhbGMoMjQwKTtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XG5cdFx0LXdlYmtpdC1ib3JkZXItcmFkaXVzOiByZW0tY2FsYyg4KTtcblx0XHRib3JkZXItcmFkaXVzOiByZW0tY2FsYyg4KTtcblx0XHQtd2Via2l0LWJveC1zaGFkb3c6IDAgMnB4IDRweCAwICNBMUExQTE7XG5cdFx0Ym94LXNoYWRvdzogMCAycHggNHB4IDAgI0ExQTFBMTtcblx0XHQmOmhvdmVyIHtcblxuXHRcdH1cblx0fVxuXG5cblxuXHRcdFxufVxuXG5cblxuXG4iLCIvLyBmZWF0dXJlc1xuXG4jbG9nby1jYXJvdXNlbCB7XG5cdG1hcmdpbi10b3A6IHJlbS1jYWxjKDIwKTtcblx0bWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoMjApO1xuXHQvL3BhZGRpbmctbGVmdDogMDtcblx0Ly9wYWRkaW5nLXJpZ2h0OiAwO1xuXG5cdGgyIHtcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XG5cdFx0d2lkdGg6IDEwMCU7XG5cdFx0bWFyZ2luLWJvdHRvbTogcmVtLWNhbGMoNDApO1xuXHR9XG5cblx0LmxvZ28tY2Fyb3VzZWwge1xuXHRcdFx0Ly9ib3JkZXI6IDFweCBzb2xpZCBibHVlO1xuXHRcdC5sb2dvIHtcblx0XHRcdC8vYm9yZGVyOiAxcHggc29saWQgcmVkO1xuXG5cdFx0XHRpbWcge1xuXHRcdFx0XHQvL21heC1oZWlnaHQ6IDEyNXB4O1xuXHRcdFx0XHRtYXgtd2lkdGg6IDIyNXB4O1xuXHRcdFx0XHRtYXgtaGVpZ2h0OiAxMjVweDtcblx0XHRcdFx0bWFyZ2luLWxlZnQ6IGF1dG87XG5cdFx0XHRcdG1hcmdpbi1yaWdodDogYXV0bztcblx0XHRcdFx0d2lkdGg6IDEwMCU7XG5cdFx0XHRcdGhlaWdodDogYXV0bztcblx0XHRcdFx0b2JqZWN0LWZpdDogY29udGFpbjtcblx0XHRcdFx0Ly93aWR0aDogMTAwJTtcblx0XHRcdFx0ZmlsdGVyOiBncmF5OyAvKiBJRTYtOSAqL1xuXHRcdFx0XHQtd2Via2l0LWZpbHRlcjogZ3JheXNjYWxlKDEpOyAvKiBHb29nbGUgQ2hyb21lLCBTYWZhcmkgNisgJiBPcGVyYSAxNSsgKi9cblx0XHRcdFx0ZmlsdGVyOiBncmF5c2NhbGUoMSk7IC8qIE1pY3Jvc29mdCBFZGdlIGFuZCBGaXJlZm94IDM1KyAqL1xuXHRcdFx0XHR0cmFuc2l0aW9uOiBhbGwgLjVzIGVhc2U7XG5cdFx0XHRcdG9wYWNpdHk6IDAuNjtcblx0XHRcdFx0Jjpob3ZlciB7XG5cdFx0XHRcdFx0LXdlYmtpdC1maWx0ZXI6IGdyYXlzY2FsZSgwKTtcblx0XHRcdFx0XHRmaWx0ZXI6IG5vbmU7XG5cdFx0XHRcdFx0b3BhY2l0eTogMTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblxuXHR9XG5cblx0LnNsaWNrLXRyYWNrIHtcbiAgZGlzcGxheTogZmxleDtcbn1cbi5zbGljay10cmFjayAuc2xpY2stc2xpZGUge1xuICBkaXNwbGF5OiBmbGV4O1xuICBoZWlnaHQ6IGF1dG87XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXHRcdFxufVxuXG4iLCIvLyBTb2NpYWxcblxuLnNvY2lhbC1jb250YWluZXIge1xuICAgIC5zb2NpYWwge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IHJlbS1jYWxjKDE1KTsgIFxuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgYSB7XG4gICAgICAgICAgIGkge1xuICAgICAgICAgICAgZm9udC1zaXplOiByZW0tY2FsYygzMCk7IFxuICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59Il19 */
