PageSourceSearch

https://www.whistlerslidingcentre.com/themes/custom/origin/dist/all.min.js?v=1.x

js whistlerslidingcentre.com collected 2026-09-24 22:27:21 UTC 46,487 bytes, 2 lines download raw bytes

1"use strict";!function(n,l){l.behaviors.accessibility={html:n("html"),tabElems:'a:not([tabindex="-1"]):visible, button:visible',mainFocus:"",attach:function(e){var a=this,i=l.behaviors.navigation;once("accessibility","body",e).forEach(function(){n(".site-header .logo summary").each(function(){var t=n(this);t.keydown(function(e){"Enter"===e.key&&(a.mainFocus=t,setTimeout(function(){a.applyTabbing(t.next(),"site_switcher"),t.next().find(a.tabElems).first().focus()},400))})}),i.mainMenuLinks.each(function(){var t=n(this);t.keydown(function(e){"Enter"===e.key&&(a.mainFocus=t,setTimeout(function(){a.applyTabbing(t.next(),"main_menu"),t.next().find(a.tabElems).first().focus()},400))})}),n("#weather-toggle").each(function(){var t=n(this);t.keydown(function(e){"Enter"===e.key&&(e.preventDefault(),a.mainFocus=t,a.applyTabbing(i.weatherWidget,"weather"),i.openWeatherWidget(),setTimeout(function(){i.weatherWidget.find(a.tabElems).first().focus()},400))})})})},applyTabbing:function(e,t){var a=this,i=l.behaviors.navigation,n=e.find(a.tabElems).first(),e=e.find(a.tabElems).last(),o="",s="";n.keydown(function(e){if("Tab"===e.key&&e.shiftKey){switch(e.preventDefault(),t){case"main_menu":i.closeSubMenu(),o=a.mainFocus.parent("li").prev("li").find("button, a >");break;case"weather":i.closeWeatherWidget();break;case"dialog":document.querySelector("dialog").close();break;case"site_switcher":document.getElementById("site_switcher").open=!1}(0<o.length?o:a.mainFocus).focus()}}),e.keydown(function(e){if("Tab"===e.key&&!e.shiftKey){switch(e.preventDefault(),t){case"main_menu":i.closeSubMenu(),s=a.mainFocus.parent("li").next("li").find("button, > a");break;case"weather":i.closeWeatherWidget();break;case"dialog":document.querySelector("dialog").close();break;case"site_switcher":document.getElementById("site_switcher").open=!1}(0<s.length?s:a.mainFocus).focus()}})}}}(jQuery,Drupal),function(r,e){e.behaviors.alert={},e.behaviors.alert.attach=function(e){once("alertBar",".paragraph--type--alert-bar",e).forEach(function(e){var a=r(e),i=r(".site-footer"),e=a.data("urls").split(", "),n=window.location.pathname,o=a.find(".field--name-field-link").text().replace(/\s+/g,""),s="",l=r("html").data("domain")+"-"+a.attr("id")+"-"+o.slice(0,3)+o.slice(-3);r.each(e,function(e,t){t=t.replace(/ /g,""),-1!==n.indexOf(t)&&(localStorage.getItem(l)!==(s=r("html").data("domain")+"-"+a.attr("id")+"-"+o.slice(0,5)+o.slice(-5))?(a.fadeIn(),i.addClass("border-radius-none")):i.removeClass("border-radius-none"))}),a.find(".close").on("click",function(e){e.preventDefault(),e.stopPropagation(),localStorage.setItem(l,s),a.fadeOut()})})}}(jQuery,Drupal),function(n,e){e.behaviors.navigation={html:n("html"),hamburger:n("#main-menu-toggle"),mainMenu:n(".main-menu"),mainMenuLinks:n(".main-menu-level-1"),back:n(".submenu .back"),weatherToggles:n(".open-weather-widget"),weatherWidget:n("#weather-widget"),weatherWidgetClose:n("#weather-widget .close"),lastscroll:0,attach:function(e){var i=this;once("navigation",".site-header",e).forEach(function(){100<=window.scrollY&&i.html.addClass("scroll-up"),i.hamburger.on("click",function(e){var t=n(this);t.blur(),"true"===t.attr("aria-expanded")?(i.closeMainMenu(),i.closeSubMenu()):(i.openMainMenu(),i.closeWeatherWidget()),e.preventDefault(),e.stopPropagation()}),i.mainMenuLinks.each(function(){var t=n(this);t.on("click",function(e){t.blur(),"false"===t.attr("aria-expanded")?i.openSubMenu(t):i.closeSubMenu(),e.preventDefault(),e.stopPropagation()})}),i.back.on("click",function(e){i.closeSubMenu(),e.preventDefault(),e.stopPropagation()}),i.html.mouseup(function(e){var t=n(".site-header"),a=n("details.logo");t.is(e.target)||0!==t.has(e.target).length||i.closeSubMenu(),a.is(e.target)||0!==a.has(e.target).length||a.removeAttr("open"),0<!n(".weather-toggle-phone:visible").length&&((t=n("#weather-widget")).is(e.target)||0!==t.has(e.target).length||i.closeWeatherWidget())}),i.weatherToggles.each(function(){n(this).on("click",function(e){var t=n(this);t.blur(),"true"===t.attr("aria-expanded")?i.closeWeatherWidget():(i.openWeatherWidget(),i.closeMainMenu(),i.closeSubMenu()),e.preventDefault(),e.stopPropagation()})}),i.weatherWidgetClose.on("click",function(e){i.closeWeatherWidget(),e.preventDefault(),e.stopPropagation()}),n(window).on("scrolldelta",function(e){i.scroll(e)})})},openMainMenu:function(){this.hamburger.attr("aria-expanded","true"),this.html.addClass("main-menu-open"),this.mainMenu.addClass("transition-visibility-show")},closeMainMenu:function(){this.hamburger.attr("aria-expanded","fal
1se"),this.html.removeClass("main-menu-open"),this.mainMenu.removeClass("transition-visibility-show")},openSubMenu:function(e){var t=e.next(".submenu"),a=n(".submenu.transition-visibility-show");this.html.addClass("sub-menu-open"),a.removeClass("transition-visibility-show"),t.addClass("transition-visibility-show"),n('.main-menu [aria-expanded="true"]').attr("aria-expanded","false"),e.attr("aria-expanded","true")},closeSubMenu:function(){var e=n(".submenu.transition-visibility-show");this.html.removeClass("sub-menu-open"),e.removeClass("transition-visibility-show"),n('.main-menu [aria-expanded="true"]').attr("aria-expanded","false")},openWeatherWidget:function(){this.weatherToggles.each(function(){n(this).attr("aria-expanded","true")}),this.html.addClass("weather-widget-open"),this.weatherWidget.addClass("transition-visibility-show")},closeWeatherWidget:function(){this.weatherToggles.each(function(){n(this).attr("aria-expanded","false")}),this.html.removeClass("weather-widget-open"),this.weatherWidget.removeClass("transition-visibility-show")},scroll:function(e){var t=this,e=parseInt(e.scrollTopDelta,10),a=window.scrollY;a<=100?t.html.removeClass("scroll-down").removeClass("scroll-up"):(a>t.lastScroll&&!t.html.hasClass("scroll-down")?(t.html.removeClass("scroll-up"),t.html.addClass("scroll-down"),t.closeSubMenu(),t.closeWeatherWidget(),0<n("#main-menu-toggle:visible").length&&t.closeMainMenu()):a<t.lastScroll&&t.html.hasClass("scroll-down")&&e<-10&&(t.html.removeClass("scroll-down"),t.html.addClass("scroll-up"),t.closeMainMenu(),t.closeSubMenu(),t.closeWeatherWidget()),t.lastScroll=a)}}}(jQuery,Drupal),jQuery.event.special.scrolldelta={delegateType:"scroll",bindType:"scroll",handle:function(e){var t=e.handleObj,a=jQuery.data(e.target),i=e.target,n=i===document,o=a.top||0,s=a.left||0,l=i.documentElement;return a.top=n?l.scrollTop+i.body.scrollTop:i.scrollTop,a.left=n?l.scrollLeft+i.body.scrollLeft:i.scrollLeft,e.scrollTopDelta=a.top-o,e.scrollTop=a.top,e.scrollLeftDelta=a.left-s,e.scrollLeft=a.left,e.type=t.origType,n=t.handler.apply(this,arguments),e.type=t.type,n}},function(i,a,n){a.behaviors.global={},a.behaviors.global.attach=function(e){var t=a.behaviors.accessibility;n("global","body",e).forEach(function(){i(".node--view-mode-full table").wrap('<div class="table-wrap" />'),i(".node--view-mode-full .table-wrap").each(function(){i(this).before('<span class="f-icon scroll-indicator">Scroll</span>')}),a.behaviors.global.checkTables(),i(window).resize(function(){a.behaviors.global.checkTables()}),i('a[href*="pdf"]').attr("target","_blank"),i(".sitemap-item > ul.menu > li.menu-item--expanded > a").removeAttr("href"),i("button[data-modal]").on("click",function(){var e=document.querySelector("dialog#"+i(this).data("modal"));i(e).find(".image").html(i(this).find("img").clone()),t.mainFocus=i(this),t.applyTabbing(i(e),"dialog"),e.showModal()}),i("dialog").mouseup(function(){document.querySelector("dialog").close()})}),i(".media--type-video.media--view-mode-url video").each(function(){740<=i(window).width()&&i(this).attr("autoplay","true").removeAttr("preload").attr("playsinline","true")}),i(".fade-in").one("inview",function(e,t){var a=i(this);t&&a.addClass("in-view")}),i("img[data-x][data-y]").each(function(){var e=i(this),t=i(this).attr("data-x")+"%",a=i(this).attr("data-y")+"%";e.attr("style","object-position: "+t+" "+a+" !important"),e.siblings("source").attr("data-aspectratio",e.attr("data-aspectratio"))})},a.behaviors.global.checkTables=function(){i(".node--view-mode-full .table-wrap").each(function(){var e=i(this),t=e.prev(".scroll-indicator");i(this).find("table").width()>1.03*e.width()?(e.addClass("scroll"),t.show()):(e.removeClass("scroll"),t.hide())})}}(jQuery,Drupal,once);
2//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFjY2Vzc2liaWxpdHkuanMiLCJhbGVydGJhci5qcyIsIm5hdmlnYXRpb24uanMiLCJzY3JpcHQuanMiXSwibmFtZXMiOlsiJCIsIkRydXBhbCIsImJlaGF2aW9ycyIsImFjY2Vzc2liaWxpdHkiLCJodG1sIiwidGFiRWxlbXMiLCJtYWluRm9jdXMiLCJhdHRhY2giLCJjb250ZXh0IiwiX29iaiIsInRoaXMiLCJfb2JqTmF2IiwibmF2aWdhdGlvbiIsIm9uY2UiLCJmb3JFYWNoIiwiZWFjaCIsIiR0aGlzIiwia2V5ZG93biIsImUiLCJrZXkiLCJzZXRUaW1lb3V0IiwiYXBwbHlUYWJiaW5nIiwibmV4dCIsImZpbmQiLCJmaXJzdCIsImZvY3VzIiwibWFpbk1lbnVMaW5rcyIsInByZXZlbn
2REZWZhdWx0Iiwid2VhdGhlcldpZGdldCIsIm9wZW5XZWF0aGVyV2lkZ2V0IiwiJGVsZW0iLCIkdHlwZSIsIiRmaXJzdCIsIiRsYXN0IiwibGFzdCIsInByZXYiLCJzaGlmdEtleSIsImNsb3NlU3ViTWVudSIsInBhcmVudCIsImNsb3NlV2VhdGhlcldpZGdldCIsImRvY3VtZW50IiwicXVlcnlTZWxlY3RvciIsImNsb3NlIiwiZ2V0RWxlbWVudEJ5SWQiLCJvcGVuIiwibGVuZ3RoIiwialF1ZXJ5IiwiYWxlcnQiLCJlbGVtIiwiJGZvb3RlciIsInVybHMiLCJkYXRhIiwic3BsaXQiLCJwYXRoIiwid2luZG93IiwibG9jYXRpb24iLCJwYXRobmFtZSIsInRleHQiLCJyZXBsYWNlIiwiY29va2llRGF0YSIsImNvb2tpZUl0ZW0iLCJhdHRyIiwic2xpY2UiLCJpbmRleCIsInZhbHVlIiwiaW5kZXhPZiIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJmYWRlSW4iLCJhZGRDbGFzcyIsInJlbW92ZUNsYXNzIiwib24iLCJldmVudCIsInN0b3BQcm9wYWdhdGlvbiIsInNldEl0ZW0iLCJmYWRlT3V0IiwiaGFtYnVyZ2VyIiwibWFpbk1lbnUiLCJiYWNrIiwid2VhdGhlclRvZ2dsZXMiLCJ3ZWF0aGVyV2lkZ2V0Q2xvc2UiLCJsYXN0c2Nyb2xsIiwic2Nyb2xsWSIsImJsdXIiLCJjbG9zZU1haW5NZW51Iiwib3Blbk1haW5NZW51Iiwib3BlblN1Yk1lbnUiLCJtb3VzZXVwIiwidGFyZ2V0IiwiZGV0YWlscyIsImlzIiwiaGFzIiwicmVtb3ZlQXR0ciIsIm5ld1RhcmdldCIsInNjcm9sbCIsIiRzdWJNZW51IiwiJGFjdGl2ZVN1YiIsInRvcERlbHRhIiwicGFyc2VJbnQiLCJzY3JvbGxUb3BEZWx0YSIsImN1cnJlbnRTY3JvbGwiLCJsYXN0U2Nyb2xsIiwiaGFzQ2xhc3MiLCJzcGVjaWFsIiwic2Nyb2xsZGVsdGEiLCJkZWxlZ2F0ZVR5cGUiLCJiaW5kVHlwZSIsImhhbmRsZSIsImhhbmRsZU9iaiIsInRhcmdldERhdGEiLCJpc0RvYyIsIm9sZFRvcCIsInRvcCIsIm9sZExlZnQiLCJsZWZ0IiwiZG9jRWxlbSIsImRvY3VtZW50RWxlbWVudCIsInNjcm9sbFRvcCIsImJvZHkiLCJzY3JvbGxMZWZ0Iiwic2Nyb2xsTGVmdERlbHRhIiwidHlwZSIsIm9yaWdUeXBlIiwicmVzdWx0IiwiaGFuZGxlciIsImFwcGx5IiwiYXJndW1lbnRzIiwiZ2xvYmFsIiwiX29iakFjY2Vzc2liaWxpdHkiLCJ3cmFwIiwiYmVmb3JlIiwiY2hlY2tUYWJsZXMiLCJyZXNpemUiLCJtb2RhbCIsImNsb25lIiwic2hvd01vZGFsIiwid2lkdGgiLCJvbmUiLCJpc0luVmlldyIsIiR4IiwiJHkiLCJzaWJsaW5ncyIsImluZGljYXRvciIsInNob3ciLCJoaWRlIl0sIm1hcHBpbmdzIjoiY0FBQyxTQUF1QkEsRUFBR0MsR0FJdkJBLEVBQU9DLFVBQVVDLGNBQWdCLENBRTdCQyxLQUFNSixFQUFFLFFBQ1JLLFNBQVUsaURBQ1ZDLFVBQVcsR0FFWEMsT0FONkIsU0FNdEJDLEdBRUgsSUFBTUMsRUFBT0MsS0FDUEMsRUFBVVYsRUFBT0MsVUFBVVUsV0FHakNDLEtBQUssZ0JBQWlCLE9BQVFMLEdBQVNNLFFBQVEsV0FHM0NkLEVBQUUsOEJBQThCZSxLQUFLLFdBRWpDLElBQUlDLEVBQVFoQixFQUFFVSxNQUdkTSxFQUFNQyxRQUFRLFNBQVNDLEdBSVYsVUFGREEsRUFBRUMsTUFHRlYsRUFBS0gsVUFBWVUsRUFDakJJLFdBQVcsV0FDUFgsRUFBS1ksYUFBYUwsRUFBTU0sT0FBUSxpQkFDaENOLEVBQU1NLE9BQU9DLEtBQUtkLEVBQUtKLFVBQVVtQixRQUFRQyxTQUMxQyxVQVNuQmQsRUFBUWUsY0FBY1gsS0FBSyxXQUV2QixJQUFJQyxFQUFRaEIsRUFBRVUsTUFHZE0sRUFBTUMsUUFBUSxTQUFTQyxHQUlWLFVBRkRBLEVBQUVDLE1BR0ZWLEVBQUtILFVBQVlVLEVBQ2pCSSxXQUFXLFdBQ1BYLEVBQUtZLGFBQWFMLEVBQU1NLE9BQVEsYUFDaENOL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BQVVoRixLQUFLLG1CQUFvQjdDLEVBQU02QyxLQUFLLHdCQU9yRTVELEVBQU9DLFVBQVU2SCxPQUFPSSxZQUFjLFdBRWxDbkksRUFBRSxxQ0FBcUNlLEtBQUssV0FFeEMsSUFBSWtILEVBQU9qSSxFQUFFVSxNQUNUb0ksRUFBWWIsRUFBSzlGLEtBQUsscUJBRXZCbkMsRUFBRVUsTUFBTWEsS0FBSyxTQUFTaUgsUUFBMEIsS0FBZlAsRUFBS08sU0FDckNQLEVBQUs1RCxTQUFTLFVBQ2R5RSxFQUFVQyxTQUVWZCxFQUFLM0QsWUFBWSxVQUNqQndFLEVBQVVFLFdBMUYxQixDQWtHR2xHLE9BQVE3QyxPQUFRWSIsImZpbGUiOiJhbGwubWluLmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIGFjY2Vzc2liaWxpdHkoJCwgRHJ1cGFsKSB7XG5cbiAgICAndXNlIHN0cmljdCc7XG5cbiAgICBEcnVwYWwuYmVoYXZpb3JzLmFjY2Vzc2liaWxpdHkgPSB7XG5cbiAgICAgICAgaHRtbDogJCgnaHRtbCcpLFxuICAgICAgICB0YWJFbGVtczogJ2E6bm90KFt0YWJpbmRleD1cIi0xXCJdKTp2aXNpYmxlLCBidXR0b246dmlzaWJsZScsXG4gICAgICAgIG1haW5Gb2N1czogJycsXG5cbiAgICAgICAgYXR0YWNoKGNvbnRleHQpIHtcblxuICAgICAgICAgICAgY29uc3QgX29iaiA9IHRoaXM7XG4gICAgICAgICAgICBjb25zdCBfb2JqTmF2ID0gRHJ1cGFsLmJlaGF2aW9ycy5uYXZpZ2F0aW9uO1xuXG4gICAgICAgICAgICAvLyBHbG9iYWwgY2FsbCBvbmx5IHRyaWdnZXJlZCBvbmNlXG4gICAgICAgICAgICBvbmNlKCdhY2Nlc3NpYmlsaXR5JywgJ2JvZHknLCBjb250ZXh0KS5mb3JFYWNoKGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgIC8vIFNpdGUgc3dpdGNoZXJcbiAgICAgICAgICAgICAgICAkKCcuc2l0ZS1oZWFkZXIgLmxvZ28gc3VtbWFyeScpLmVhY2goZnVuY3Rpb24oKXtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgJHRoaXMgPSAkKHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIENhcHR1cmUga2V5IHByZXNzZXNcbiAgICAgICAgICAgICAgICAgICAgJHRoaXMua2V5ZG93bihmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29iai5tYWluRm9jdXMgPSAkdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29iai5hcHBseVRhYmJpbmcoJHRoaXMubmV4dCgpLCAnc2l0ZV9zd2l0Y2hlcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHRoaXMubmV4dCgpLmZpbmQoX29iai50YWJFbGVtcykuZmlyc3QoKS5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCA0MDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgI
2H1cblxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLy8gTWFpbiBNZW51IGxpbmtzXG4gICAgICAgICAgICAgICAgX29iak5hdi5tYWluTWVudUxpbmtzLmVhY2goZnVuY3Rpb24oKXtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgJHRoaXMgPSAkKHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIENhcHR1cmUga2V5IHByZXNzZXNcbiAgICAgICAgICAgICAgICAgICAgJHRoaXMua2V5ZG93bihmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29iai5tYWluRm9jdXMgPSAkdGhpcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29iai5hcHBseVRhYmJpbmcoJHRoaXMubmV4dCgpLCAnbWFpbl9tZW51Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5uZXh0KCkuZmluZChfb2JqLnRhYkVsZW1zKS5maXJzdCgpLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDQwMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvLyBXZWF0aGVyIHRvZ2dsZVxuICAgICAgICAgICAgICAgICQoJyN3ZWF0aGVyLXRvZ2dsZScpLmVhY2goZnVuY3Rpb24oKXtcblxuICAgICAgICAgICAgICAgICAgICBsZXQgJHRoaXMgPSAkKHRoaXMpO1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIENhcHR1cmUga2V5IHByZXNzZXNcbiAgICAgICAgICAgICAgICAgICAgJHRoaXMua2V5ZG93bihmdW5jdGlvbihlKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZS5rZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb2JqLm1haW5Gb2N1cyA9ICR0aGlzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb2JqLmFwcGx5VGFiYmluZyhfb2JqTmF2LndlYXRoZXJXaWRnZXQsICd3ZWF0aGVyJyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vYmpOYXYub3BlbldlYXRoZXJXaWRnZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29iak5hdi53ZWF0aGVyV2lkZ2V0LmZpbmQoX29iai50YWJFbGVtcykuZmlyc3QoKS5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCA0MDApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9KTtcblxuXG4gICAgICAgIH0sXG5cbiAgICAgICAgYXBwbHlUYWJiaW5nKCRlbGVtLCAkdHlwZSl7XG5cbiAgICAgICAgICAgIGNvbnN0IF9vYmogPSB0aGlzO1xuICAgICAgICAgICAgY29uc3QgX29iak5hdiA9IERydXBhbC5iZWhhdmlvcnMubmF2aWdhdGlvbjtcblxuICAgICAgICAgICAgbGV0ICRmaXJzdCA9ICRlbGVtLmZpbmQoX29iai50YWJFbGVtcykuZmlyc3QoKTtcbiAgICAgICAgICAgIGxldCAkbGFzdCA9ICRlbGVtLmZpbmQoX29iai50YWJFbGVtcykubGFzdCgpO1xuICAgICAgICAgICAgbGV0IHByZXYgPSAnJztcbiAgICAgICAgICAgIGxldCBuZXh0ID0gJyc7XG5cbiAgICAgICAgICAgIC8vIEZpcnN0IGxpbmtcbiAgICAgICAgICAgICRmaXJzdC5rZXlkb3duKGZ1bmN0aW9uKGUpe1xuICAgICAgICAgICAgICAgIC8vIFNoaWZ0IFRhYlxuICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ1RhYicgJiYgZS5zaGlmdEtleSkge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgIHN3aXRjaCgkdHlwZSl7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtYWluX21lbnUnOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vYmpOYXYuY2xvc2VTdWJNZW51KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldiA9IF9vYmoubWFpbkZvY3VzLnBhcmVudCgnbGknKS5wcmV2KCdsaScpLmZpbmQoJ2J1dHRvbiwgYSA+Jyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd3ZWF0aGVyJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb2JqTmF2LmNsb3NlV2VhdGhlcldpZGdldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZGlhbG9nJzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2
2N1bWVudC5xdWVyeVNlbGVjdG9yKCdkaWFsb2cnKS5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2l0ZV9zd2l0Y2hlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJzaXRlX3N3aXRjaGVyXCIpLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZihwcmV2Lmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldi5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9vYmoubWFpbkZvY3VzLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gbGFzdCBsaW5rXG4gICAgICAgICAgICAkbGFzdC5rZXlkb3duKGZ1bmN0aW9uKGUpe1xuICAgICAgICAgICAgICAgIC8vIFRhYlxuICAgICAgICAgICAgICAgIGlmIChlLmtleSA9PT0gJ1RhYicgJiYgIWUuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBzd2l0Y2goJHR5cGUpe1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWFpbl9tZW51JzpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb2JqTmF2LmNsb3NlU3ViTWVudSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgPSBfb2JqLm1haW5Gb2N1cy5wYXJlbnQoJ2xpJykubmV4dCgnbGknKS5maW5kKCdidXR0b24sID4gYScpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnd2VhdGhlcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX29iak5hdi5jbG9zZVdlYXRoZXJXaWRnZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2RpYWxvZyc6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGlhbG9nJykuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3NpdGVfc3dpdGNoZXInOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwic2l0ZV9zd2l0Y2hlclwiKS5vcGVuID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYobmV4dC5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgICAgICAgICBfb2JqLm1haW5Gb2N1cy5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuXG59KGpRdWVyeSwgRHJ1cGFsKSk7XG4iLCIoZnVuY3Rpb24gYWxlcnRTY3JpcHQoJCwgRHJ1cGFsKSB7XG5cbiAgICAndXNlIHN0cmljdCc7XG5cblxuICAgIC8qKlxuICAgICAqIEdMT0JBTFxuICAgICAqIEB0eXBlIHt7YXR0YWNoOiBhdHRhY2h9fVxuICAgICAqL1xuICAgIERydXBhbC5iZWhhdmlvcnMuYWxlcnQgPSB7fTtcblxuICAgIERydXBhbC5iZWhhdmlvcnMuYWxlcnQuYXR0YWNoID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcblxuICAgICAgICBvbmNlKCdhbGVydEJhcicsICcucGFyYWdyYXBoLS10eXBlLS1hbGVydC1iYXInLCBjb250ZXh0KS5mb3JFYWNoKGZ1bmN0aW9uIChlbGVtKSB7XG5cbiAgICAgICAgICAgIGxldCAkdGhpcyA9ICQoZWxlbSk7XG4gICAgICAgICAgICBsZXQgJGZvb3RlciA9ICQoJy5zaXRlLWZvb3RlcicpO1xuICAgICAgICAgICAgbGV0IHVybHMgPSAkdGhpcy5kYXRhKCd1cmxzJykuc3BsaXQoJywgJyk7XG4gICAgICAgICAgICBsZXQgcGF0aCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICAgICAgICAgIGxldCB0ZXh0ID0gJHRoaXMuZmluZCgnLmZpZWxkLS1uYW1lLWZpZWxkLWxpbmsnKS50ZXh0KCkucmVwbGFjZSgvXFxzKy9nLCAnJyk7XG4gICAgICAgICAgICBsZXQgY29va2llRGF0YSA9IFwiXCI7XG4gICAgICAgICAgICBsZXQgY29va2llSXRlbSA9ICQoJ2h0bWwnKS5kYXRhKCdkb21haW4nKSArICctJyArICR0aGlzLmF0dHIoJ2lkJykgKyAnLScgKyB0ZXh0LnNsaWNlKDAsIDMpICsgdGV4dC5zbGljZSgtMyk7XG5cbiAgICAgICAgICAgIC8vIFNob3cgYmFyIGlmIGFueSBVUkwgaXMgZm91bmQgaW4gY3VycmVudCBwYXRoXG4gICAgICAgICAgICAkLmVhY2godXJscywgZnVuY3Rpb24oIGluZGV4LCB2YWx1ZSApe1xuXG4gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIGFueSBwb3NzaWJsZSBzcGFjZXMgaW4gVVJMIHBhdGhcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoLyAvZywnJylcbiAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgbWF0Y2hcbiAgICAgICAgICAgICAgICBpZihwYXRoLmluZGV4T2YodmFsdWUpICE9PSAtMSl7XG5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGNvb2tpZVZhbHVlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oY29va2llSXRlbSk7XG4gICAgICAgICAgICAgICAgICAgIGNvb2tpZURhdGEgPSAkKCdodG1sJykuZGF0YSgnZG9tYWluJykgKyAnLScgKyAkdGhpcy5hdHRyKCdpZCcpICsgJy0nICsgdGV4dC5zbGljZSgwLCA1KSArIHRleHQuc2xpY2UoLTUpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb29raWVWYWx1ZSAhPT0gY29va2llRGF0YSl7XG4gICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5mYWRlSW4oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICRmb290ZXIuYWRkQ2xhc3MoJ2JvcmRlci1yYWRpdXMtbm9uZScpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2V7XG4gICAgICAgICAgICAgICAgICAgICAgICAkZm9vdGVyLnJlbW92ZUNsYXNzKCdib3JkZXItcmFkaXVzLW5vbmUnKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cblxuICAgICAgICAgICAgLy8gT24gQWxlcnQgQmFyIGNsb3NlXG4gICAgICAgICAgICAkdGhpcy5maW5kKCcuY2xvc2UnKS5vbignY2xpY2snLCBmdW5jdGlvbihldmVudCl7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKGNvb2tpZUl0ZW0sIGNvb2tpZURhdGEpO1xuICAgICAgICAgICAgICAgICR0aGlzLmZhZGVPdXQoKTtcblxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgfSk7XG5cbiAgICB9O1xuXG5cbn0oalF1ZXJ5LCBEcnVwYWwpKTtcbiIsIihmdW5jdGlvbiBuYXZpZ2F0aW9uU2NyaXB0KCQsIERydXBhbCkge1xuXG4gICAgRHJ1cGFsLmJlaGF2aW9ycy5uYXZpZ2F0aW9uID0ge1xuXG4gICAgICAgIGh0bWw6ICQoJ2h0bWwnKSxcbiAgICAgICAgaGFtYnVyZ2VyOiAkKCcjbWFpbi1tZW51LXRvZ2dsZScpLFxuICAgICAgICBtYWluTWVudTogJ
2CgnLm1haW4tbWVudScpLFxuICAgICAgICBtYWluTWVudUxpbmtzOiAkKCcubWFpbi1tZW51LWxldmVsLTEnKSxcbiAgICAgICAgYmFjazogJCgnLnN1Ym1lbnUgLmJhY2snKSxcbiAgICAgICAgd2VhdGhlclRvZ2dsZXM6ICQoJy5vcGVuLXdlYXRoZXItd2lkZ2V0JyksXG4gICAgICAgIHdlYXRoZXJXaWRnZXQ6ICQoJyN3ZWF0aGVyLXdpZGdldCcpLFxuICAgICAgICB3ZWF0aGVyV2lkZ2V0Q2xvc2U6ICQoJyN3ZWF0aGVyLXdpZGdldCAuY2xvc2UnKSxcbiAgICAgICAgbGFzdHNjcm9sbDogMCxcblxuICAgICAgICBhdHRhY2goY29udGV4dCkge1xuXG4gICAgICAgICAgICBjb25zdCBfb2JqID0gdGhpcztcblxuICAgICAgICAgICAgb25jZSgnbmF2aWdhdGlvbicsICcuc2l0ZS1oZWFkZXInLCBjb250ZXh0KS5mb3JFYWNoKGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgICAgIC8vIENoZWNrIHNjcm9sbFxuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTY3JvbGwgPSB3aW5kb3cuc2Nyb2xsWTtcbiAgICAgICAgICAgICAgICBpZiAoY3VycmVudFNjcm9sbCA+PSAxMDApIHtcbiAgICAgICAgICAgICAgICAgICAgX29iai5odG1sLmFkZENsYXNzKCdzY3JvbGwtdXAnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyBDbGljayBtYWluIGhhbWJ1cmdlclxuICAgICAgICAgICAgICAgIF9vYmouaGFtYnVyZ2VyLm9uKCdjbGljaycsIGZ1bmN0aW9uIChldmVudCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCAkdGhpcyA9ICQodGhpcyk7XG4gICAgICAgICAgICAgICAgICAgICR0aGlzLmJsdXIoKTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMuYXR0cignYXJpYS1leHBhbmRlZCcpID09PSAndHJ1ZScpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9vYmouY2xvc2VNYWluTWVudSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgX29iai5jbG9zZVN1Yk1lbnUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9vYmoub3Blbk1haW5NZW51KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBfb2JqLmNsb3NlV2VhdGhlcldpZGdldCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIC8vIE1haW4gbmF2IGxpbmtzXG4gICAgICAgICAgICAgICAgX29iai5tYWluTWVudUxpbmtzLmVhY2goZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGxldCAkdGhpcyA9ICQodGhpcyk7XG5cbiAgICAgICAgICAgICAgICAgICAgJHRoaXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5vbignY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy5ibHVyKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHRoaXMuYXR0cignYXJpYS1leHBhbmRlZCcpID09PSAnZmFsc2UnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vYmoub3BlblN1Yk1lbnUoJHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vYmouY2xvc2VTdWJNZW51KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgLy8gQ2xpY2sgbW9iaWxlIGJhY2sgYnV0dG9uXG4gICAgICAgICAgICAgICAgX29iai5iYWNrLm9uKCdjbGljaycsIGZ1bmN0aW9uKGV2ZW50KXtcbiAgICAgICAgICAgICAgICAgICAgX29iai5jbG9zZVN1Yk1lbnUoKTtcblxuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIC8vIENsb3NlIG1lbnUgd2l0aCBjbGljayBvdXRzaWRlXG4gICAgICAgICAgICAgICAgX29iai5odG1sLm1vdXNldXAoZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRhcmdldCA9ICQoJy5zaXRlLWhlYWRlcicpO1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGV0YWlscyA9ICQoJ2RldGFpbHMubG9nbycpXG4gICAgICAgICAgICAgICAgICAgIGlmICghdGFyZ2V0LmlzKGUudGFyZ2V0KSAmJiB0YXJnZXQuaGFzKGUudGFyZ2V0KS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF9vYmouY2xvc2VTdWJNZW51KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFkZXRhaWxzLmlzKGUudGFyZ2V0KSAmJiBkZXRhaWxzLmhhcyhlLnRhcmdldCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzLnJlbW92ZUF0dHIoJ29wZW4nKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAvLyBDbG9zZSB3ZWF0aGVyIHdpZGdldCB3aXRoIGNsaWNrIG91dHNpZGVcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEkKCcud2VhdGhlci10b2dnbGUtcGhvbmU6dmlzaWJsZScpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdUYXJnZXQgPSAkKCcjd2VhdGhlci13aWRnZXQnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbmV3VGFyZ2V0LmlzKGUudGFyZ2V0KSAmJiBuZXdUYXJnZXQuaGFzKGUudGFyZ2V0KS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb2JqLmNsb3NlV2VhdGhlcldpZGdldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvLyBDbGljayB3ZWF0aGVyIHRvZ2dsZXNcbiAgICAgICAgICAgICAgICBfb2JqLndlYXRoZXJUb2dnbGVzLmVhY2goIGZ1bmN0aW9uKCl7XG5cbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5vbignY2xpY2snLCBmdW5jdGlvbiAoZXZlbnQpIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICR0aGlzID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLmJsdXIoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLmF0dHIoJ2FyaWEtZXhwYW5kZWQnKSA9PT0gJ3RydWUnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX29iai5jbG9zZVdlYXRoZXJXaWRnZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgI
2H0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgX29iai5vcGVuV2VhdGhlcldpZGdldCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vYmouY2xvc2VNYWluTWVudSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9vYmouY2xvc2VTdWJNZW51KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvLyBDbGljayBtb2JpbGUgYmFjayBidXR0b25cbiAgICAgICAgICAgICAgICBfb2JqLndlYXRoZXJXaWRnZXRDbG9zZS5vbignY2xpY2snLCBmdW5jdGlvbihldmVudCl7XG4gICAgICAgICAgICAgICAgICAgIF9vYmouY2xvc2VXZWF0aGVyV2lkZ2V0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAvLyBTY3JvbGxpbmcgbGlzdGVuZXJzXG4gICAgICAgICAgICAgICAgJCh3aW5kb3cpLm9uKCdzY3JvbGxkZWx0YScsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIF9vYmouc2Nyb2xsKGUpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSxcblxuICAgICAgICBvcGVuTWFpbk1lbnUoKSB7XG5cbiAgICAgICAgICAgIGxldCBfb2JqID0gdGhpcztcblxuICAgICAgICAgICAgX29iai5oYW1idXJnZXIuYXR0cignYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7XG4gICAgICAgICAgICBfb2JqLmh0bWwuYWRkQ2xhc3MoJ21haW4tbWVudS1vcGVuJyk7XG4gICAgICAgICAgICBfb2JqLm1haW5NZW51LmFkZENsYXNzKCd0cmFuc2l0aW9uLXZpc2liaWxpdHktc2hvdycpO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY2xvc2VNYWluTWVudSgpIHtcblxuICAgICAgICAgICAgbGV0IF9vYmogPSB0aGlzO1xuXG4gICAgICAgICAgICBfb2JqLmhhbWJ1cmdlci5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyk7XG4gICAgICAgICAgICBfb2JqLmh0bWwucmVtb3ZlQ2xhc3MoJ21haW4tbWVudS1vcGVuJyk7XG4gICAgICAgICAgICBfb2JqLm1haW5NZW51LnJlbW92ZUNsYXNzKCd0cmFuc2l0aW9uLXZpc2liaWxpdHktc2hvdycpO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgb3BlblN1Yk1lbnUoJGVsZW0pIHtcblxuICAgICAgICAgICAgbGV0IF9vYmogPSB0aGlzO1xuICAgICAgICAgICAgbGV0ICRzdWJNZW51ID0gJGVsZW0ubmV4dCgnLnN1Ym1lbnUnKTtcbiAgICAgICAgICAgIGxldCAkYWN0aXZlU3ViID0gJCgnLnN1Ym1lbnUudHJhbnNpdGlvbi12aXNpYmlsaXR5LXNob3cnKTtcblxuICAgICAgICAgICAgX29iai5odG1sLmFkZENsYXNzKCdzdWItbWVudS1vcGVuJyk7XG4gICAgICAgICAgICAkYWN0aXZlU3ViLnJlbW92ZUNsYXNzKCd0cmFuc2l0aW9uLXZpc2liaWxpdHktc2hvdycpO1xuICAgICAgICAgICAgJHN1Yk1lbnUuYWRkQ2xhc3MoJ3RyYW5zaXRpb24tdmlzaWJpbGl0eS1zaG93Jyk7XG4gICAgICAgICAgICAkKCcubWFpbi1tZW51IFthcmlhLWV4cGFuZGVkPVwidHJ1ZVwiXScpLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgICAgICAgICAgICRlbGVtLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScpO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY2xvc2VTdWJNZW51KCkge1xuXG4gICAgICAgICAgICBsZXQgX29iaiA9IHRoaXM7XG4gICAgICAgICAgICBsZXQgJGFjdGl2ZVN1YiA9ICQoJy5zdWJtZW51LnRyYW5zaXRpb24tdmlzaWJpbGl0eS1zaG93Jyk7XG5cbiAgICAgICAgICAgIF9vYmouaHRtbC5yZW1vdmVDbGFzcygnc3ViLW1lbnUtb3BlbicpO1xuICAgICAgICAgICAgJGFjdGl2ZVN1Yi5yZW1vdmVDbGFzcygndHJhbnNpdGlvbi12aXNpYmlsaXR5LXNob3cnKTtcbiAgICAgICAgICAgICQoJy5tYWluLW1lbnUgW2FyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJdJykuYXR0cignYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgb3BlbldlYXRoZXJXaWRnZXQoKSB7XG5cbiAgICAgICAgICAgIGxldCBfb2JqID0gdGhpcztcblxuICAgICAgICAgICAgX29iai53ZWF0aGVyVG9nZ2xlcy5lYWNoKCBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignYXJpYS1leHBhbmRlZCcsICd0cnVlJyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIF9vYmouaHRtbC5hZGRDbGFzcygnd2VhdGhlci13aWRnZXQtb3BlbicpO1xuICAgICAgICAgICAgX29iai53ZWF0aGVyV2lkZ2V0LmFkZENsYXNzKCd0cmFuc2l0aW9uLXZpc2liaWxpdHktc2hvdycpO1xuXG4gICAgICAgIH0sXG5cbiAgICAgICAgY2xvc2VXZWF0aGVyV2lkZ2V0KCkge1xuXG4gICAgICAgICAgICBsZXQgX29iaiA9IHRoaXM7XG5cbiAgICAgICAgICAgIF9vYmoud2VhdGhlclRvZ2dsZXMuZWFjaCggZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgX29iai5odG1sLnJlbW92ZUNsYXNzKCd3ZWF0aGVyLXdpZGdldC1vcGVuJyk7XG4gICAgICAgICAgICBfb2JqLndlYXRoZXJXaWRnZXQucmVtb3ZlQ2xhc3MoJ3RyYW5zaXRpb24tdmlzaWJpbGl0eS1zaG93Jyk7XG5cbiAgICAgICAgfSxcblxuICAgICAgICBzY3JvbGwoZSkge1xuXG4gICAgICAgICAgICBsZXQgX29iaiA9IHRoaXM7XG4gICAgICAgICAgICBsZXQgdG9wRGVsdGEgPSBwYXJzZUludChlLnNjcm9sbFRvcERlbHRhLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U2Nyb2xsID0gd2luZG93LnNjcm9sbFk7XG5cbiAgICAgICAgICAgIC8vIFRvcFxuICAgICAgICAgICAgaWYgKGN1cnJlbnRTY3JvbGwgPD0gMTAwKSB7XG4gICAgICAgICAgICAgICAgX29iai5odG1sLnJlbW92ZUNsYXNzKCdzY3JvbGwtZG93bicpLnJlbW92ZUNsYXNzKCdzY3JvbGwtdXAnKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIERvd25cbiAgICAgICAgICAgIGlmIChjdXJyZW50U2Nyb2xsID4gX29iai5sYXN0U2Nyb2xsICYmICFfb2JqLmh0bWwuaGFzQ2xhc3MoJ3Njcm9sbC1kb3duJykpIHtcbiAgICAgICAgICAgICAgICBfb2JqLmh0bWwucmVtb3ZlQ2xhc3MoJ3Njcm9sbC11cCcpO1xuICAgICAgICAgICAgICAgIF9vYmouaHRtbC5hZGRDbGFzcygnc2Nyb2xsLWRvd24nKTtcbiAgICAgICAgICAgICAgICBfb2JqLmNsb3NlU3ViTWVudSgpO1xuICAgICAgICAgICAgICAgIF9vYmouY2xvc2VXZWF0aGVyV2lkZ2V0KCk7XG4gICAgICAgICAgICAgICAgaWYgKCQoJyNtYWluLW1lbnUtdG9nZ2xlOnZpc2libGUnKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIF9vYmouY2xvc2VNYWluTWVudSgpO1xuICAgICAgICAgICAgICAgI
2H1cblxuICAgICAgICAgICAgLy8gVXBcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudFNjcm9sbCA8IF9vYmoubGFzdFNjcm9sbCAmJiBfb2JqLmh0bWwuaGFzQ2xhc3MoJ3Njcm9sbC1kb3duJykgJiYgdG9wRGVsdGEgPCAtMTApIHtcbiAgICAgICAgICAgICAgICBfb2JqLmh0bWwucmVtb3ZlQ2xhc3MoJ3Njcm9sbC1kb3duJyk7XG4gICAgICAgICAgICAgICAgX29iai5odG1sLmFkZENsYXNzKCdzY3JvbGwtdXAnKTtcbiAgICAgICAgICAgICAgICBfb2JqLmNsb3NlTWFpbk1lbnUoKTtcbiAgICAgICAgICAgICAgICBfb2JqLmNsb3NlU3ViTWVudSgpO1xuICAgICAgICAgICAgICAgIF9vYmouY2xvc2VXZWF0aGVyV2lkZ2V0KCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF9vYmoubGFzdFNjcm9sbCA9IGN1cnJlbnRTY3JvbGw7XG5cbiAgICAgICAgfSxcblxuICAgIH07XG5cbn0oalF1ZXJ5LCBEcnVwYWwpKTtcblxuXG5qUXVlcnkuZXZlbnQuc3BlY2lhbC5zY3JvbGxkZWx0YSA9IHtcblxuICAgIGRlbGVnYXRlVHlwZTogJ3Njcm9sbCcsXG4gICAgYmluZFR5cGU6ICdzY3JvbGwnLFxuICAgIGhhbmRsZTogZnVuY3Rpb24gKGV2ZW50KSB7XG5cbiAgICAgICAgbGV0IGhhbmRsZU9iaiA9IGV2ZW50LmhhbmRsZU9iajtcbiAgICAgICAgbGV0IHRhcmdldERhdGEgPSBqUXVlcnkuZGF0YShldmVudC50YXJnZXQpO1xuICAgICAgICBsZXQgcmVzdWx0ID0gbnVsbDtcbiAgICAgICAgbGV0IGVsZW0gPSBldmVudC50YXJnZXQ7XG4gICAgICAgIGxldCBpc0RvYyA9IGVsZW0gPT09IGRvY3VtZW50O1xuICAgICAgICBsZXQgb2xkVG9wID0gdGFyZ2V0RGF0YS50b3AgfHwgMDtcbiAgICAgICAgbGV0IG9sZExlZnQgPSB0YXJnZXREYXRhLmxlZnQgfHwgMDtcbiAgICAgICAgbGV0IGRvY0VsZW0gPSBlbGVtLmRvY3VtZW50RWxlbWVudDtcblxuICAgICAgICB0YXJnZXREYXRhLnRvcCA9IGlzRG9jID8gZG9jRWxlbS5zY3JvbGxUb3AgKyBlbGVtLmJvZHkuc2Nyb2xsVG9wIDogZWxlbS5zY3JvbGxUb3A7XG4gICAgICAgIHRhcmdldERhdGEubGVmdCA9IGlzRG9jID8gZG9jRWxlbS5zY3JvbGxMZWZ0ICsgZWxlbS5ib2R5LnNjcm9sbExlZnQgOiBlbGVtLnNjcm9sbExlZnQ7XG4gICAgICAgIGV2ZW50LnNjcm9sbFRvcERlbHRhID0gdGFyZ2V0RGF0YS50b3AgLSBvbGRUb3A7XG4gICAgICAgIGV2ZW50LnNjcm9sbFRvcCA9IHRhcmdldERhdGEudG9wO1xuICAgICAgICBldmVudC5zY3JvbGxMZWZ0RGVsdGEgPSB0YXJnZXREYXRhLmxlZnQgLSBvbGRMZWZ0O1xuICAgICAgICBldmVudC5zY3JvbGxMZWZ0ID0gdGFyZ2V0RGF0YS5sZWZ0O1xuICAgICAgICBldmVudC50eXBlID0gaGFuZGxlT2JqLm9yaWdUeXBlO1xuICAgICAgICByZXN1bHQgPSBoYW5kbGVPYmouaGFuZGxlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICBldmVudC50eXBlID0gaGFuZGxlT2JqLnR5cGU7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcblxuICAgIH0sXG59O1xuIiwiKGZ1bmN0aW9uIGdsb2JhbFNjcmlwdCgkLCBEcnVwYWwsIG9uY2UpIHtcblxuICAgIC8qKlxuICAgICAqIEdMT0JBTFxuICAgICAqIEB0eXBlIHt7YXR0YWNoOiBhdHRhY2h9fVxuICAgICAqL1xuICAgIERydXBhbC5iZWhhdmlvcnMuZ2xvYmFsID0ge307XG5cbiAgICBEcnVwYWwuYmVoYXZpb3JzLmdsb2JhbC5hdHRhY2ggPSBmdW5jdGlvbiAoY29udGV4dCkge1xuXG4gICAgICAgIGNvbnN0IF9vYmpBY2Nlc3NpYmlsaXR5ID0gRHJ1cGFsLmJlaGF2aW9ycy5hY2Nlc3NpYmlsaXR5O1xuXG4gICAgICAgIC8vIEdsb2JhbCBjYWxsIG9ubHkgdHJpZ2dlcmVkIG9uY2VcbiAgICAgICAgb25jZSgnZ2xvYmFsJywgJ2JvZHknLCBjb250ZXh0KS5mb3JFYWNoKGZ1bmN0aW9uICgpIHtcblxuICAgICAgICAgICAgLy8gVGFibGVzXG4gICAgICAgICAgICAkKCcubm9kZS0tdmlldy1tb2RlLWZ1bGwgdGFibGUnKS53cmFwKCc8ZGl2IGNsYXNzPVwidGFibGUtd3JhcFwiIC8+Jyk7XG4gICAgICAgICAgICAkKCcubm9kZS0tdmlldy1tb2RlLWZ1bGwgLnRhYmxlLXdyYXAnKS5lYWNoKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICQodGhpcykuYmVmb3JlKCc8c3BhbiBjbGFzcz1cImYtaWNvbiBzY3JvbGwtaW5kaWNhdG9yXCI+U2Nyb2xsPC9zcGFuPicpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBEcnVwYWwuYmVoYXZpb3JzLmdsb2JhbC5jaGVja1RhYmxlcygpO1xuXG4gICAgICAgICAgICAkKHdpbmRvdykucmVzaXplKGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgRHJ1cGFsLmJlaGF2aW9ycy5nbG9iYWwuY2hlY2tUYWJsZXMoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAvLyBQREYgbmV3IHdpbmRvd1xuICAgICAgICAgICAgJCgnYVtocmVmKj1cInBkZlwiXScpLmF0dHIoJ3RhcmdldCcsICdfYmxhbmsnKTtcblxuICAgICAgICAgICAgLy8gU2l0ZW1hcFxuICAgICAgICAgICAgJCgnLnNpdGVtYXAtaXRlbSA+IHVsLm1lbnUgPiBsaS5tZW51LWl0ZW0tLWV4cGFuZGVkID4gYScpLnJlbW92ZUF0dHIoJ2hyZWYnKTtcblxuICAgICAgICAgICAgLy8gTW9kYWxzXG4gICAgICAgICAgICAkKCdidXR0b25bZGF0YS1tb2RhbF0nKS5vbignY2xpY2snLCBmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgIGxldCBtb2RhbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpYWxvZyMnICsgJCh0aGlzKS5kYXRhKCdtb2RhbCcpKTtcbiAgICAgICAgICAgICAgICAkKG1vZGFsKS5maW5kKCcuaW1hZ2UnKS5odG1sKCQodGhpcykuZmluZCgnaW1nJykuY2xvbmUoKSk7XG4gICAgICAgICAgICAgICAgX29iakFjY2Vzc2liaWxpdHkubWFpbkZvY3VzID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICBfb2JqQWNjZXNzaWJpbGl0eS5hcHBseVRhYmJpbmcoJChtb2RhbCksICdkaWFsb2cnKTtcbiAgICAgICAgICAgICAgICBtb2RhbC5zaG93TW9kYWwoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgLy8gQ2xvc2UgbW9kYWwgb24gY2xpY2tcbiAgICAgICAgICAgICQoJ2RpYWxvZycpLm1vdXNldXAoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2RpYWxvZycpLmNsb3NlKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBSZW1vdmUgdmlkZW8gZnJvbSBtb2JpbGVcbiAgICAgICAgJCgnLm1lZGlhLS10eXBlLXZpZGVvLm1lZGlhLS12aWV3LW1vZGUtdXJsIHZpZGVvJykuZWFjaChmdW5jdGlvbigpe1xuICAgICAgICAgICAgaWYoJCh3aW5kb3cpLndpZHRoKCkgPj0gNzQwKXtcbiAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ2F1dG9wbGF5JywgJ3RydWUnKS5yZW1vdmVBdHRyKCdwcmVsb2FkJykuYXR0cigncGxheXNpbmxpbmUnLCAndHJ1ZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBJblZpZXcgQW5pbWF0aW9uc1xuICAgICAgICAkKCcuZmFkZS1pbicpXG4gICAgICAgICAgICAub25lKCdpbnZpZXcnLCBmdW5jdGlvbiAoZXZlbnQsIGlzSW5WaWV3KSB7XG4gICAgICAgICAgICAgICAgbGV0ICR0aGlzID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNJblZpZXcpIHtcbiAgICAgICAgICAgICAgICAgICAgJHRoaXMuYWRkQ2xhc3MoJ2luLXZpZXcnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAvLyBJbWFnZXMgb2JqZWN0Rml0IHBvc2l0aW9uXG4gICAgICAgICQoJ2ltZ1tkYXRhLXhdW2RhdGEteV0nKS5lYWNoKGZ1bmN0aW9uKCl7XG5cbiAgICAgICAgICAgIGxldCAkdGhpcyA9ICQodGhpcyk7XG4gICAgICAgICAgICBsZXQgJHggPSAkKHRoaXMpLmF0dHIoJ2RhdGEteCcpICsgJyUnO1xuICAgICAgICAgICAgbGV0ICR5ID0gJCh0aGlzKS5hdHRyKCdkYXRhLXknKSArICclJztcblxuICAgICAgICAgICAgJHRoaXMuYXR0cignc3R5bGUnLCAnb2JqZWN0LXBvc2l0aW9uOiAnICsgJHggKyAnICcgKyAkeSArICcgIWltcG9ydGFudCcpO1xuICAgICAgICAgICAgJHRoaXMuc2libGluZ3MoJ3NvdXJjZScpLmF0dHIoJ2RhdGEtYXNwZWN0cmF0aW8nLCAkdGhpcy5hdHRyKCdkYXRhLWFzcGVjdHJhdGlvJykpO1xuXG4gICAgICAgI
2H0pO1xuXG4gICAgfTtcblxuXG4gICAgRHJ1cGFsLmJlaGF2aW9ycy5nbG9iYWwuY2hlY2tUYWJsZXMgPSBmdW5jdGlvbigpe1xuXG4gICAgICAgICQoJy5ub2RlLS12aWV3LW1vZGUtZnVsbCAudGFibGUtd3JhcCcpLmVhY2goZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgIGxldCB3cmFwID0gJCh0aGlzKTtcbiAgICAgICAgICAgIGxldCBpbmRpY2F0b3IgPSB3cmFwLnByZXYoJy5zY3JvbGwtaW5kaWNhdG9yJyk7XG5cbiAgICAgICAgICAgIGlmKCQodGhpcykuZmluZCgndGFibGUnKS53aWR0aCgpID4gKHdyYXAud2lkdGgoKSAqIDEuMDMpKXtcbiAgICAgICAgICAgICAgICB3cmFwLmFkZENsYXNzKCdzY3JvbGwnKTtcbiAgICAgICAgICAgICAgICBpbmRpY2F0b3Iuc2hvdygpO1xuICAgICAgICAgICAgfWVsc2V7XG4gICAgICAgICAgICAgICAgd3JhcC5yZW1vdmVDbGFzcygnc2Nyb2xsJyk7XG4gICAgICAgICAgICAgICAgaW5kaWNhdG9yLmhpZGUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICB9KTtcblxuICAgIH07XG5cblxufSkoalF1ZXJ5LCBEcnVwYWwsIG9uY2UpO1xuIl19

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.