!function(e){e(document).ready(function(){function t(){e(".addthis_sharing_toolbox").length>=1&&(e("#atstbx").length>=1?n():s())}function n(){e("#atstbx a span").each(function(){var t=e(this).attr("title");e(this).html('<span class="element-invisible">'+t+"</span>"),e(this).parent("a").attr("href","#")})}function s(){setTimeout(function(){t()},5e3)}e(".social-media-print__sharing-toggle").click(function(t){t.preventDefault(),e(".addthis_sharing_toolbox").fadeToggle()}),e(document).keyup(function(t){27==t.keyCode&&e(".addthis_sharing_toolbox").fadeOut()}),t()})}(jQuery),function(e){function t(t){e.each(t,function(t,n){var s=e(n).length;1==s&&e("body").addClass("show-calendar")})}function n(){e("#calendar__toggle-calendar").hasClass("active")||(e(".view--events-calendar .attachment").fadeOut(0,function(){e(".view--events-calendar .view-content").fadeIn(300)}),e("#calendar__toggle-calendar").addClass("active"),e("#calendar__toggle-list").removeClass("active"),e("body").removeClass("hide-calendar").addClass("show-calendar"))}function s(){e("#calendar__toggle-list").hasClass("active")||(e("body").hasClass("show-calendar")?e(".view--events-calendar .view-content").fadeOut(0,function(){e(".view--events-calendar .attachment,.view--events-calendar .attachment .view-content").fadeIn(300)}):e(".view--events-calendar .attachment,.view--events-calendar .attachment .view-content").fadeIn(300),e("#calendar__toggle-list").addClass("active"),e("#calendar__toggle-calendar").removeClass("active"),e("body").removeClass("show-calendar").removeClass("had-calendar").addClass("hide-calendar"))}var i=["body.page-news-events-events-calendar"];e(document).ready(function(){t(i),e("#calendar__toggle-calendar").click(function(e){e.preventDefault(),n()}),e("#calendar__toggle-list").click(function(e){e.preventDefault(),s()})}),e(document).ajaxComplete(function(){e("body").hasClass("show-calendar")?(n(),e("#calendar__toggle-calendar").addClass("active"),e("#calendar__toggle-list").removeClass("active")):e("body").hasClass("hide-calendar")&&(s(),e("#calendar__toggle-list").addClass("active"),e("#calendar__toggle-calendar").removeClass("active")),e("#calendar__toggle-calendar").click(function(e){e.preventDefault(),n()}),e("#calendar__toggle-list").click(function(e){e.preventDefault(),s()})}),e(window).load(function(){window.loaded=!0}),e(document).ready(function(){enquire.register("screen and (max-width:679px)",{match:function(){e("body").hasClass("show-calendar")&&(s(),window.loaded===!0&&e("body").addClass("had-calendar"))},unmatch:function(){e("body").hasClass("had-calendar")&&n()},setup:function(){},deferSetup:!0,destroy:function(){}})})}(jQuery),function(e){e(document).ready(function(){e(".pane--publication-topic-area-taxonomy-topic-area .view-content").columnize({columns:3,lastNeverTallest:!0}),e("footer .menu-name-main-menu .menu li:first-child .menu").columnize({columns:2,lastNeverTallest:!0})})}(jQuery),function(e){function t(t){e.each(t,function(t,s){var i=e(s).length;i>1&&n(s)})}function n(t){var n=[];e(t).each(function(){var t=e(this).outerHeight();n.push(t)}),s(n,t)}function s(e,t){var n=Math.max.apply(Math,e);i(n,t)}function i(t,n){e(n).css("height",t+"px")}function a(t){e.each(t,function(t,n){var s=e(n).length;s>1&&e(n).css("height","auto")})}var o=[".panel-region--call-outs .pane--callout .pane__inner-content",".pane--half-width .pane__inner-content",".pane--half-width .pane__header",".nist-featured-topics__link",".nist-hero--homepage .nist-hero__caption--overlay"];e(window).resize(function(){var n=e(window).width();n>=680&&(a(o),t(o))}),e(window).load(function(){var n=e(window).width();n>=680&&t(o),enquire.register("screen and (max-width:679px)",{match:function(){a(o)},unmatch:function(){t(o)},setup:function(){},deferSetup:!0,destroy:function(){}})})}(jQuery),!function(e,t,n){var s=window.matchMedia;"undefined"!=typeof module&&module.exports?module.exports=n(s):"function"==typeof define&&define.amd?define(function(){return t[e]=n(s)}):t[e]=n(s)}("enquire",this,function(e){"use strict";function t(e,t){var n,s=0,i=e.length;for(s;i>s&&(n=t(e[s],s),n!==!1);s++);}function n(e){return"[object Array]"===Object.prototype.toString.apply(e)}function s(e){return"function"==typeof e}function i(e){this.options=e,!e.deferSetup&&this.setup()}function a(t,n){this.query=t,this.isUnconditional=n,this.handlers=[],this.mql=e(t);var s=this;this.listener=function(e){s.mql=e,s.assess()},this.mql.addListener(this.listener)}function o(){if(!e)throw new Error("matchMedia not present, legacy browsers require a polyfill");this.queries={},this.browserIsIncapable=!e("only all").matches}return i.prototype={setup:function(){this.options.setup&&this.options.setup(),this.initialised=!0},on:function(){!this.initialised&&this.setup(),this.options.match&&this.options.match()},off:function(){this.options.unmatch&&this.options.unmatch()},destroy:function(){this.options.destroy?this.options.destroy():this.off()},equals:function(e){return this.options===e||this.options.match===e}},a.prototype={addHandler:function(e){var t=new i(e);this.handlers.push(t),this.matches()&&t.on()},removeHandler:function(e){var n=this.handlers;t(n,function(t,s){return t.equals(e)?(t.destroy(),!n.splice(s,1)):void 0})},matches:function(){return this.mql.matches||this.isUnconditional},clear:function(){t(this.handlers,function(e){e.destroy()}),this.mql.removeListener(this.listener),this.handlers.length=0},assess:function(){var e=this.matches()?"on":"off";t(this.handlers,function(t){t[e]()})}},o.prototype={register:function(e,i,o){var l=this.queries,d=o&&this.browserIsIncapable;return l[e]||(l[e]=new a(e,d)),s(i)&&(i={match:i}),n(i)||(i=[i]),t(i,function(t){s(t)&&(t={match:t}),l[e].addHandler(t)}),this},unregister:function(e,t){var n=this.queries[e];return n&&(t?n.removeHandler(t):(n.clear(),delete this.queries[e])),this}},new o}),function(e){e(document).ready(function(){e(".nist-expandable-help input").each(function(){var t=e(this).attr("id").replace("edit-submitted-",""),n="webform-component--"+t+"-help",s=e("."+n).first();s.addClass("nist-expandable-help__text").hide(),e(this).parent().append('<a href="#" class="nist-expandable-help__button"><i class="fa fa-question-circle"><span class="element-invisible">More information</span></i></a>'),e(this).parent().append(s)}),e(".nist-expandable-help__button").click(function(t){t.preventDefault(),e(this).toggleClass("is-open"),e(this).siblings(".nist-expandable-help__text").slideToggle()})})}(jQuery),function(e){function t(){e(".media-element-container, .file").each(function(){var t=e(this).find("img");if("undefined"!=typeof t&&"undefined"!=typeof t[0]){var n=new Image;n.src=t.attr("src");var s=n.width,i=(n.height,t.attr("width"));"0"!=i&&s>i&&(s=i),"0"!=s&&e(this).css("width",s+"px")}})}Drupal.behaviors.imageContainer={attach:function(e,n){t()}},e(window).load(function(){t()})}(jQuery),function(e){e.fn.columnize=function(t){function n(e,t){try{e.append(t)}catch(n){e[0].appendChild(t[0])}}this.cols=[],this.offset=0,this.before=[],this.lastOther=0,this.prevMax=0,this.debug=0,this.setColumnStart=null,this.elipsisText="";var s={width:400,columns:!1,buildOnce:!1,overflow:!1,doneFunc:function(){},target:!1,ignoreImageLoading:!0,columnFloat:"left",lastNeverTallest:!1,accuracy:!1,precise:!1,manualBreaks:!1,cssClassPrefix:"",elipsisText:"...",debug:0};return t=e.extend(s,t),"string"==typeof t.width&&(t.width=parseInt(t.width,10),isNaN(t.width)&&(t.width=s.width)),"function"==typeof t.setColumnStart&&(this.setColumnStart=t.setColumnStart),"string"==typeof t.elipsisText&&(this.elipsisText=t.elipsisText),t.debug&&(this.debug=t.debug),t.setWidth||(t.precise?t.setWidth=function(e){return 100/e}:t.setWidth=function(e){return Math.floor(100/e)}),this.each(function(){function i(e,t){var n=t?".":"";return m.length?n+m+"-"+e:n+e}function a(s,a,o,l){for(;(p||o.height()<l)&&a[0].childNodes.length;){var d=a[0].childNodes[0];if(e(d).find(i("columnbreak",!0)).length)return;if(e(d).hasClass(i("columnbreak")))return;n(s,e(d))}if(0!==s[0].childNodes.length){var r=s[0].childNodes,c=r[r.length-1];s[0].removeChild(c);var u=e(c);if(3==u[0].nodeType){var h=u[0].nodeValue,f=t.width/18;t.accuracy&&(f=t.accuracy);for(var m,v=null;o.height()<l&&h.length;){var g=h.indexOf(" ",f);m=-1!=g?h.substring(0,g):h,v=document.createTextNode(m),n(s,e(v)),h=h.length>f&&-1!=g?h.substring(g):""}if(o.height()>=l&&null!==v&&(s[0].removeChild(v),h=v.nodeValue+h),!h.length)return!1;u[0].nodeValue=h}return a.contents().length?a.prepend(u):n(a,u),3==u[0].nodeType}}function o(e,t,s,l){if(!e.contents(":last").find(i("columnbreak",!0)).length&&!e.contents(":last").hasClass(i("columnbreak"))&&t.contents().length){var d=t.contents(":first");if("undefined"==typeof d.get(0)||1!=d.get(0).nodeType)return;var r=d.clone(!0);if(d.hasClass(i("columnbreak")))n(e,r),d.remove();else if(p)n(e,r),d.remove();else if(1==r.get(0).nodeType&&!r.hasClass(i("dontend")))if(n(e,r),r.is("img")&&s.height()<l+20)d.remove();else if(d.hasClass(i("dontsplit"))&&s.height()<l+20)d.remove();else if(r.is("img")||d.hasClass(i("dontsplit")))r.remove();else{if(r.empty(),a(r,d,s,l))d.addClass(i("split"));else{if(d.addClass(i("split")),"OL"==d.get(0).tagName){var c=r.get(0).childElementCount+r.get(0).start;d.attr("start",c+1)}d.children().length&&o(r,d,s,l)}if(0===r.get(0).childNodes.length)r.remove(),d.removeClass(i("split"));else if(1==r.get(0).childNodes.length){var u=r.get(0).childNodes[0];if(3==u.nodeType){var h=/\s/,f=u.nodeValue;h.test(f)&&(r.remove(),d.removeClass(i("split")))}}}}}function l(){if(!c.data("columnized")||1!=c.children().length){if(c.data("columnized",!0),c.data("columnizing",!0),c.empty(),c.append(e("<div class='"+i("first")+" "+i("last")+" "+i("column")+" ' style='width:100%; float: "+t.columnFloat+";'></div>")),$col=c.children().eq(c.children().length-1),$destroyable=h.clone(!0),t.overflow){for(targetHeight=t.overflow.height,a($col,$destroyable,$col,targetHeight),$destroyable.contents().find(":first-child").hasClass(i("dontend"))||o($col,$destroyable,$col,targetHeight);$col.contents(":last").length&&d($col.contents(":last").get(0));){var s=$col.contents(":last");s.remove(),$destroyable.prepend(s)}for(var l="",r=document.createElement("DIV");$destroyable[0].childNodes.length>0;){var u=$destroyable[0].childNodes[0];if(u.attributes)for(var f=0;f<u.attributes.length;f++)0===u.attributes[f].nodeName.indexOf("jQuery")&&u.removeAttribute(u.attributes[f].nodeName);r.innerHTML="",r.appendChild($destroyable[0].childNodes[0]),l+=r.innerHTML}var p=e(t.overflow.id)[0];p.innerHTML=l}else n($col,$destroyable.contents());c.data("columnizing",!1),t.overflow&&t.overflow.doneFunc&&t.overflow.doneFunc(),t.doneFunc()}}function d(t){return 3==t.nodeType?/^\s+$/.test(t.nodeValue)&&t.previousSibling?d(t.previousSibling):!1:1!=t.nodeType?!1:e(t).hasClass(i("dontend"))?!0:0===t.childNodes.length?!1:d(t.childNodes[t.childNodes.length-1])}function r(){if(v=0,f!=c.width()){f=c.width();var s=Math.round(c.width()/t.width),r=t.width,m=t.height;if(t.columns&&(s=t.columns),p&&(s=h.find(i("columnbreak",!0)).length+1,r=!1),1>=s)return l();if(!c.data("columnizing")){c.data("columnized",!0),c.data("columnizing",!0),c.empty(),c.append(e("<div style='width:"+t.setWidth(s)+"%; float: "+t.columnFloat+";'></div>")),x=c.children(":last"),n(x,h.clone()),u=x.height(),c.empty();var g=u/s,b=3,w=!1;t.overflow?(b=1,g=t.overflow.height):m&&r&&(b=1,g=m,w=!0);for(var _=0;b>_&&20>_;_++){c.empty();var C,y,x,k;try{C=h.clone(!0)}catch(T){C=h.clone()}C.css("visibility","hidden");for(var S=0;s>S;S++)y=0===S?i("first"):"",y+=" "+i("column"),y=S==s-1?i("last")+" "+y:y,c.append(e("<div class='"+y+"' style='width:"+t.setWidth(s)+"%; float: "+t.columnFloat+";'></div>"));for(S=0;S<s-(t.overflow?0:1)||w&&C.contents().length;){for(c.children().length<=S&&c.append(e("<div class='"+y+"' style='width:"+t.setWidth(s)+"%; float: "+t.columnFloat+";'></div>")),x=c.children().eq(S),w&&x.width(r+"px"),a(x,C,x,g),o(x,C,x,g);x.contents(":last").length&&d(x.contents(":last").get(0));)k=x.contents(":last"),k.remove(),C.prepend(k);S++,0===x.contents().length&&C.contents().length?x.append(C.contents(":first")):S!=s-(t.overflow?0:1)||t.overflow||C.find(i("columnbreak",!0)).length&&s++}if(t.overflow&&!w){var D=!1,I=document.all&&-1!=navigator.appVersion.indexOf("MSIE 7.");if(D||I){for(var O="",N=document.createElement("DIV");C[0].childNodes.length>0;){var M=C[0].childNodes[0];for(S=0;S<M.attributes.length;S++)0===M.attributes[S].nodeName.indexOf("jQuery")&&M.removeAttribute(M.attributes[S].nodeName);N.innerHTML="",N.appendChild(C[0].childNodes[0]),O+=N.innerHTML}var L=e(t.overflow.id)[0];L.innerHTML=O}else e(t.overflow.id).empty().append(C.contents().clone(!0))}else if(w)c.children().each(function(e){x=c.children().eq(e),x.width(r+"px"),0===e?x.addClass(i("first")):e==c.children().length-1?x.addClass(i("last")):(x.removeClass(i("first")),x.removeClass(i("last")))}),c.width(c.children().length*r+"px");else{x=c.children().eq(c.children().length-1),C.contents().each(function(){x.append(e(this))});var j=(x.height(),0),q=1e7,z=0,A=!1,E=0;c.children().each(function(e){return function(t){var n=e.children().eq(t),s=n.children(":last").find(i("columnbreak",!0)).length;if(!s){var a=n.height();A=!1,j+=a,a>z&&(z=a,A=!0),q>a&&(q=a),E++}}}(c));var Q=j/E;0===j?_=b:t.lastNeverTallest&&A?(v+=5,g+=5,_==b-1&&b++):z-q>30?g=Q+30:Math.abs(Q-g)>20?g=Q:_=b}c.append(e("<br style='clear:both;'>"))}c.find(i("column",!0)).find(":first"+i("removeiffirst",!0)).remove(),c.find(i("column",!0)).find(":last"+i("removeiflast",!0)).remove(),c.find(i("split",!0)).find(":first"+i("removeiffirst",!0)).remove(),c.find(i("split",!0)).find(":last"+i("removeiflast",!0)).remove(),c.data("columnizing",!1),t.overflow&&t.overflow.doneFunc(),t.doneFunc()}}}var c=e(t.target?t.target:this),u=e(this).height(),h=e("<div></div>"),f=0,p=t.manualBreaks,m=s.cssClassPrefix;"string"==typeof t.cssClassPrefix&&(m=t.cssClassPrefix);var v=0;if(n(h,e(this).contents().clone(!0)),!t.ignoreImageLoading&&!t.target&&!c.data("imageLoaded")&&(c.data("imageLoaded",!0),e(this).find("img").length>0)){var g=function(e,s){return function(){e.data("firstImageLoaded")||(e.data("firstImageLoaded","true"),n(e.empty(),s.children().clone(!0)),e.columnize(t))}}(e(this),h);return e(this).find("img").one("load",g),void e(this).find("img").one("abort",g)}c.empty(),r(),t.buildOnce||e(window).resize(function(){t.buildOnce||(c.data("timeout")&&clearTimeout(c.data("timeout")),c.data("timeout",setTimeout(r,200)))})})},e.fn.renumberByJS=function(t,n,s,i){if(this.setList=function(t,n,s){var i,a=this.before.parents();if(i=e(t[this.offset-1]).find(">*"),i.last()[0].tagName!=s.toUpperCase())return this.debug&&console.log("Last item in previous column, isn't a list..."),0;i=i.length;var o=1;if(o=this.lastOther<=0?this.before.children().length+1:e(a[this.lastOther]).children().length+1,e(t[this.offset]).find(s+":first li.split").length){var l=e(t[this.offset-1]).find(s+":last li:last");if(""===this.elipsisText||e(t[this.offset-1]).find(s+":last ~ div").length||e(t[this.offset-1]).find(s+":last ~ p").length);else if(0==e(l).find("ul, ol, dl").length){var d=l.last().text(),r=d.length;";"==d.substring(r-1)?d.substring(r-4)!=this.elipsisText+";"&&(d=d.substring(0,r-1)+this.elipsisText+";"):d.substring(r-3)!=this.elipsisText&&(d+=this.elipsisText),l.last().text(d)}0==e(t[this.offset]).find(s+":first >li.split >"+s).length&&o--}if(1==i&&(o+=this.prevMax),this.nest>1){this.debug&&console.log("Supposed to be a nested list...decr"),o--;var c=e(t[this.offset-1]).find(s+":first li.split:first");c.length>0&&(this.debug&&console.log("Previous column started with a split item, so that count is one less than expected"),o--),c=e(t[this.offset]).find(s+":first li:first").clone(),c.children().remove(),e.trim(c.text()).length>0&&(this.debug&&console.log("If that was a complete list in the previous column, don't decr."),o++,0==e(t[this.offset-1]).find(">"+s+":last ").children().length&&(this.debug&&console.log("unless that was empty, in which case revert"),o--))}else{var c=e(t[this.offset]).find(s+":first li:first "+s+".split li.split");c.length>0&&(this.debug&&console.log("[Nested] Column started with a split item, so that count is one less than expected"),o--)}return this.debug&&console.log("Setting the start value to "+o+" ("+this.prevMax+")"),o>0&&("function"==typeof this.setColumnStart?this.setColumnStart(n,o):n.attr("start",o)),0},"undefined"==typeof s&&(s=!1),"undefined"==typeof i&&(i=!1),!s&&!i)throw"renumberByJS(): Bad param, must pass an id or a class";var a="";this.prevMax=1,a=i?"."+i:"#"+s;var o=t.toLowerCase(),l=t.toUpperCase();for(this.cols=e(a),this.debug&&console.log("There are "+this.cols.length+" items, looking for "+o),this.before=e(this.cols[0]).find(o+":last"),this.prevMax=this.before.children().length,this.offset=1;this.offset<this.cols.length;this.offset++)if(this.debug&&console.log("iterating "+this.offset+"...[of "+this.cols.length+"]"),this.offset%n!=0){if(this.before=e(this.cols[this.offset-1]).find(o+":last"),this.before.length){this.debug&&console.log("Have some "+t+" elements in the previous column");var d=e(this.cols[this.offset]).find(o+":first"),r=e(this.cols[this.offset]).find("*:first");if(r[0]!==d[0])continue;var c=this.before.parents();this.lastOther=0;for(var u=!1;this.lastOther<c.length;this.lastOther++)if(c[this.lastOther].tagName!=l&&"LI"!=c[this.lastOther].tagName){u=!0,this.lastOther--;break}this.nest=1,e(this.cols[this.offset]).find(">"+o+":first li "+o+":first").length&&(this.nest=2),this.setList(this.cols,d,o),this.lastOther--,d=e(this.cols[this.offset]).find(o+":first li "+o+":first"),d.length&&(this.before=e(this.cols[this.offset-1]).find(">"+o+":last li "+o+":last"),this.prevMax=0,this.nest=1,this.setList(this.cols,d,o));var h=e(this.cols[this.offset-1]).find(">"+o+":last");this.prevMax=h.children().length}}else this.debug&&console.log("First column (in theory..)"),this.prevMax=1;return 0}}(jQuery);var FORMALIZE=function(e,t,n){function s(e){var t=n.createElement("b");return t.innerHTML="<!--[if IE "+e+"]><br><![endif]-->",!!t.getElementsByTagName("br").length}var i="placeholder"in n.createElement("input"),a="autofocus"in n.createElement("input"),o=s(6),l=s(7);return{go:function(){var e,t=this.init;for(e in t)t.hasOwnProperty(e)&&t[e]()},init:{disable_link_button:function(){e(n.documentElement).delegate("a.button_disabled","click",function(){return!1})},full_input_size:function(){l&&e("textarea, input.input_full").length&&e("textarea, input.input_full").wrap('<span class="input_full_wrap"></span>')},ie6_skin_inputs:function(){if(o&&e("input, select, textarea").length){var t=/button|submit|reset/,n=/date|datetime|datetime-local|email|month|number|password|range|search|tel|text|time|url|week/;e("input").each(function(){var s=e(this);this.getAttribute("type").match(t)?(s.addClass("ie6_button"),this.disabled&&s.addClass("ie6_button_disabled")):this.getAttribute("type").match(n)&&(s.addClass("ie6_input"),this.disabled&&s.addClass("ie6_input_disabled"))}),e("textarea, select").each(function(){this.disabled&&e(this).addClass("ie6_input_disabled")})}},autofocus:function(){if(!a&&e(":input[autofocus]").length){var t=e("[autofocus]")[0];t.disabled||t.focus()}},placeholder:function(){!i&&e(":input[placeholder]").length&&(FORMALIZE.misc.add_placeholder(),e(":input[placeholder]").each(function(){if("password"!==this.type){var t=e(this),n=t.attr("placeholder");t.focus(function(){t.val()===n&&t.val("").removeClass("placeholder_text")}).blur(function(){FORMALIZE.misc.add_placeholder()}),t.closest("form").submit(function(){t.val()===n&&t.val("").removeClass("placeholder_text")}).bind("reset",function(){setTimeout(FORMALIZE.misc.add_placeholder,50)})}}))}},misc:{add_placeholder:function(){!i&&e(":input[placeholder]").length&&e(":input[placeholder]").each(function(){if("password"!==this.type){var t=e(this),n=t.attr("placeholder");t.val()&&t.val()!==n||t.val(n).addClass("placeholder_text")}})}}}}(jQuery,this,this.document);jQuery(document).ready(function(){FORMALIZE.go()}),function(e){function t(){e(".menu--main-menu--new .is-open").removeClass("is-open"),e(".menu--main-menu--new .is-focused").removeClass("is-focused")}e(document).ready(function(){e(".menu--main-menu--new li.menu-depth-1").focusin(function(){e(".menu--main-menu--new li.menu-depth-1").removeClass("is-focused"),e(this).closest("li.menu-depth-1").addClass("is-focused")}),e(".menu--main-menu--new li.menu-depth-1").focusout(function(){e(".menu--main-menu--new li.menu-depth-1").removeClass("is-focused")}),e(".menu--main-menu--new__submenu").each(function(){e(this).find("> .menu").wrapInner('<div class="column-container"><div class="column">')}),e(".mobile-toggle--menu").click(function(t){t.preventDefault(),e("body").hasClass("has-mobile-menu")?e("#navigation .block--menu-block").slideUp(300,function(){e("body").removeClass("has-mobile-menu")}):(e("body").addClass("has-mobile-menu"),e("#navigation .block--menu-block").slideDown(300))}),e(".mobile-toggle--menu > a").focus(function(){e("body").addClass("focus-mobile-menu"),e("#navigation .block--menu-block").slideDown(300)}),e("#main").focusin(function(){e(".focus-mobile-menu #navigation .block--menu-block").slideUp(300,function(){e("body").removeClass("focus-mobile-menu"),e("body").removeClass("has-mobile-menu"),t()})})}),e(window).load(function(){e(".menu--main-menu--new__submenu").on("click",".menu--main-menu--new__close",function(e){e.preventDefault(),t()}),e(document).keyup(function(e){27==e.keyCode&&t()}),e(document).keyup(function(n){13==n.keyCode&&e(".menu--main-menu--new__close").is(":focus")&&t()}),e(".menu--main-menu--new__submenu").each(function(){var t=e(this).find(".column-break").length,n=0;switch(t){case 0:for(e(this).find(".column-container").addClass("has-one-column").prepend('<span tabindex="0" class="menu--main-menu--new__close">Close</span>'),e(this).addClass("one-column"),n=0;t>n;n++){var s=e(this).find(".column-container .column-break").eq(n);e("<div class='column'>").insertAfter(s.parent()).append(s.nextAll().andSelf())}break;case 1:for(e(this).find(".column-container").addClass("has-two-columns").prepend('<span tabindex="0" class="menu--main-menu--new__close">Close</span>'),n=0;t>n;n++){var s=e(this).find(".column-container .column-break").eq(n);e("<div class='column'>").insertAfter(s.parent()).append(s.nextAll().andSelf())}break;case 2:var i=e(this).find(".column-container");for(e(i).addClass("has-three-columns").prepend('<span tabindex="0" class="menu--main-menu--new__close">Close</span>'),n=0;t>n;n++){var s=e(this).find(".column-container .column-break").eq(n);e("<div class='column'>").insertAfter(s.parent()).append(s.nextAll().andSelf())}break;case 3:for(e(this).find(".column-container").addClass("has-four-columns").prepend('<span tabindex="0" class="menu--main-menu--new__close">Close</span>'),n=0;t>n;n++){var s=e(this).find(".column-container .column-break").eq(n);e("<div class='column'>").insertAfter(s.parent()).append(s.nextAll().andSelf())}}})})}(jQuery),function(e){function t(t){t.blur();var n=t.closest("li");return n.hasClass("is-open")?(n.find("ul, .menu--main-menu--new__submenu").first().slideUp(),n.removeClass("is-open"),t.toggleClass("fa-minus fa-plus")):(e(".menu--main-menu--new__submenu").slideUp(),e(".menu--main-menu--new .menu-depth-1").removeClass("is-open"),e(".menu--main-menu--new .expander").removeClass("fa-minus").addClass("fa-plus"),n.find("ul, .menu--main-menu--new__submenu").first().slideDown(),n.addClass("is-open"),t.toggleClass("fa-plus fa-minus")),!1}e(document).ready(function(){e(".expandable li:has(ul)").children("a").append(' <span class="expander fa fa-plus"><span class="element-invisible">Expand or Collapse</span></span>'),e(".expandable a.active").parents("li").addClass("is-active-trail"),t(e("li.is-active-trail > a .expander")),e(".expander").click(function(n){n.preventDefault(),t(e(this))})}),e(document).keyup(function(n){13==n.keyCode&&e(".expander").is(":focus")&&t(e(".expander:focus"))})}(jQuery),function(e){e(document).ready(function(){e("#content svg").once("wrapSVG",function(){e(this).each(function(t,n){e(n).wrap('<div class="nist-svg__wrapper"></div>')})}),e(".nist-svg--scalable").once("scalable",function(){e(this).each(function(t,n){var s=n.viewBox.baseVal,i=s.height/s.width*100;e(n).parent().addClass("nist-svg__wrapper--scalable"),e(n).parent().css("padding-bottom",i+"%")})}),e("svg a").each(function(t,n){if(e(this).attr("data-nist-svg-tooltip")){var s=e(this).attr("data-nist-svg-tooltip");e(this).closest(".nist-svg__wrapper").append('<div class="nist-svg__tooltip nist-svg__tooltip--'+t+'"><div class="nist-svg__tooltip-content">'+s+'</div><span class="nist-svg__tooltip-close fa fa-close"><span class="element-invisible">Close</span></span></div>'),e(this).click(function(){event.preventDefault(),e(this).closest(".nist-svg__wrapper").find(".nist-svg__tooltip--"+t).addClass("is-open").fadeIn()})}e(this).attr("data-nist-show")&&e(this).click(function(){event.preventDefault();var t=e(this).attr("data-nist-show"),n=e("[data-nist-element='"+t+"']");e(this).closest(".nist-svg__wrapper").find("[data-nist-element]").fadeOut(),n.fadeIn()})}),e(".nist-svg__tooltip-close").click(function(){event.preventDefault(),e(this).closest(".nist-svg__tooltip").removeClass("is-open").fadeOut()}),e("[data-nist-element]").click(function(){e(this).hide()})})}(jQuery),function(e){e(document).ready(function(){})}(jQuery),function(e){e(document).ready(function(){function t(t){e.each(t,function(t,s){var i=e(s).length;1==i&&(n(s),e(s).find("input").focusin(function(){e(s).find(".form-item").removeClass("empty")}),e(s).find("input").focusout(function(){n(s)}))})}function n(t){var n=e(t).find("input").val();""==n&&e(t).find(".form-item").addClass("empty")}var s=[".primary-filter"];t(s)})}(jQuery),function(e){e(document).ready(function(){function t(){e(".table-inner").each(function(t,n){e(n).parent().removeClass("overflow").attr("style",""),e(n).siblings(".table-overflow").remove();var s=e(n).overflown_width(),i=e(n).height(),a=e(n).width(),o=e(n).children("table").width(),l=e(window).width(),d=o+2;d>=l&&(d=l-52);var r=0;if(d>=1400)var r=(d-1168)/2,r=0-r;if((1400>d||1168>a)&&(d=a),1==s)if(d>=1400&&e(n).parent().addClass("overflow").css({height:i+2,width:d,left:r}),o>d+20){e(n).after('<div class="table-overflow">Scroll <span class="fa fa-arrow-right"></span></div>');var c=0;e(n).parent().scroll(function(){var t=e(n).parent().scrollLeft();t>c&&e(n).siblings(".table-overflow").hide()})}else e(n).parent(".table-wrapper").css("overflow","visible")})}e("table").once("wrapTable",function(){e(this).each(function(t,n){e(n).wrap('<div class="table-wrapper"><div class="table-inner"></div></div>')})}),e.fn.overflown_width=function(){var e=this[0];return e.scrollWidth>e.clientWidth},e(window).load(function(){t()}),e(window).resize(function(){t()})})}(jQuery),function(e){e(document).ready(function(){0!=e(".group-publication-authors").find(".field--nist-authors").length&&0!=e(".group-publication-authors").find(".field--non-nist-authors").length&&e(".group-publication-authors .field--nist-authors .textformatter-list").append(", ")}),e(document).ready(function(){e(".megamenu-fake-link").click(function(e){e.preventDefault()})}),e(document).ready(function(){e("#block-gtranslate-gtranslate select").attr("name","google_translate").attr("id","google_translate").before('<label class="element-invisible" for="google_translate">Translate</label>')}),e(document).ready(function(){e(".panel-region--left-sidebar fieldset.collapsible").removeClass("collapsed")}),e(document).ready(function(){e("#cboxPrevious").append("Prev</button>"),e("#cboxPrevious").attr("value","Previous Item"),e("#cboxNext").append("Next</button>"),e("#cboxNext").attr("value","Next Item"),e("#cboxSlideshow").append("Slideshow</button>"),e("#cboxSlideshow").attr("value","Slideshow")}),e(document).ready(function(){e("html").removeClass("no-js").addClass("js")})}(jQuery),function(e){e(document).ready(function(){e("#block-gtranslate-gtranslate select").selectOrDie({customClass:"translate-select",size:10}),e("#main select:not([multiple])").not("#edit-term-node-tid-depth,#edit-term-node-tid-depth-1,.no-sod").selectOrDie({customClass:"standard-select",size:10})}),e(window).load(function(){var t=e(".panel-region--left-sidebar .views-widget-filter-secondary").width();e(".panel-region--left-sidebar .sod_select").css("width",t-40+"px"),e(".panel-region--left-sidebar .sod_list_wrapper").css("width",t-40+"px")}),e(window).resize(function(){var t=e(".panel-region--left-sidebar .views-widget-filter-secondary").width();e(".panel-region--left-sidebar .sod_select").css("width",t-40+"px"),e(".panel-region--left-sidebar .sod_list_wrapper").css("width",t-40+"px")})}(jQuery),!function(e){"use strict";e.fn.selectOrDie=function(t){var n,s,i={customID:null,customClass:"",placeholder:null,placeholderOption:!1,prefix:null,cycle:!1,stripEmpty:!1,links:!1,linksExternal:!1,size:0,tabIndex:0,onChange:e.noop},a={},o=!1,l={initSoD:function(t){return a=e.extend({},i,t),this.each(function(){if(e(this).parent().hasClass("sod_select"))console.log("Select or Die: It looks like the SoD already exists");else{var t,n,s,i=e(this),o=i.data("custom-id")?i.data("custom-id"):a.customID,d=i.data("custom-class")?i.data("custom-class"):a.customClass,r=i.data("prefix")?i.data("prefix"):a.prefix,c=i.data("placeholder")?i.data("placeholder"):a.placeholder,u=i.data("placeholder-option")?i.data("placeholder-option"):a.placeholderOption,h=i.data("cycle")?i.data("cycle"):a.cycle,f=i.data("links")?i.data("links"):a.links,p=i.data("links-external")?i.data("links-external"):a.linksExternal,m=parseInt(i.data("size"))?i.data("size"):a.size,v=parseInt(i.data("tabindex"))?i.data("tabindex"):a.tabIndex?a.tabIndex:i.attr("tabindex")?i.attr("tabindex"):a.tabIndex,g=i.data("strip-empty")?i.data("strip-empty"):a.stripEmpty,b=i.prop("title")?i.prop("title"):null,w=i.is(":disabled")?" disabled":"",_="",C="",y=0;r&&(_='<span class="sod_prefix">'+r+"</span> "),C+=c&&!r?'<span class="sod_label sod_placeholder">'+c+"</span>":'<span class="sod_label">'+_+"</span>",t=e("<span/>",{id:o,"class":"sod_select "+d+w,title:b,tabindex:v,html:C,"data-cycle":h,"data-links":f,"data-links-external":p,"data-placeholder":c,"data-placeholder-option":u,"data-prefix":r,"data-filter":""}).insertAfter(this),l.isTouch()&&t.addClass("touch"),n=e("<span/>",{"class":"sod_list_wrapper"}).appendTo(t),s=e("<span/>",{"class":"sod_list"}).appendTo(n),e("option, optgroup",i).each(function(n){var i=e(this);g&&!e.trim(i.text())?i.remove():0===n&&u&&!_?l.populateSoD(i,s,t,!0):l.populateSoD(i,s,t,!1)}),m&&(n.show(),e(".sod_option:lt("+m+")",s).each(function(){y+=e(this).outerHeight()}),n.removeAttr("style"),s.css({"max-height":y})),i.appendTo(t),t.on("focusin",l.focusSod).on("click",l.triggerSod).on("click",".sod_option",l.optionClick).on("mousemove",".sod_option",l.optionHover).on("keydown",l.keyboardUse),i.on("change",l.selectChange),e(document).on("click","label[for='"+i.attr("id")+"']",function(e){e.preventDefault(),t.focus()})}})},populateSoD:function(t,n,s,i){var a=s.data("placeholder"),o=s.data("placeholder-option"),l=s.data("prefix"),d=s.find(".sod_label"),r=t.parent(),c=t.text(),u=t.val(),h=t.data("custom-id")?t.data("custom-id"):null,f=t.data("custom-class")?t.data("custom-class"):"",p=t.is(":disabled")?" disabled ":"",m=t.is(":selected")?" selected active ":"",v=t.data("link")?" link ":"",g=t.data("link-external")?" linkexternal":"",b=t.prop("label");t.is("option")?(e("<span/>",{"class":"sod_option "+f+p+m+v+g,id:h,title:c,html:c,"data-value":u}).appendTo(n),i&&!l?(s.data("label",c),s.data("placeholder",c),t.prop("disabled",!0),n.find(".sod_option:last").addClass("is-placeholder disabled"),m&&d.addClass("sod_placeholder")):m&&a&&!o&&!l?s.data("label",a):m&&s.data("label",c),(m&&!a||m&&o||m&&l)&&d.append(c),r.is("optgroup")&&(n.find(".sod_option:last").addClass("groupchild"),
r.is(":disabled")&&n.find(".sod_option:last").addClass("disabled"))):e("<span/>",{"class":"sod_option optgroup "+p,title:b,html:b,"data-label":b}).appendTo(n)},focusSod:function(){var t=e(this);t.hasClass("disabled")?l.blurSod(t):(l.blurSod(e(".sod_select.focus").not(t)),t.addClass("focus"),e("html").on("click.sodBlur",function(){l.blurSod(t)}))},triggerSod:function(t){t.stopPropagation();var n=e(this),i=n.find(".sod_list"),a=n.data("placeholder"),o=n.find(".active"),d=n.find(".selected");n.hasClass("disabled")||n.hasClass("open")||n.hasClass("touch")?(clearTimeout(s),n.removeClass("open"),a&&(n.find(".sod_label").get(0).lastChild.nodeValue=o.text())):(n.addClass("open"),a&&!n.data("prefix")&&n.find(".sod_label").addClass("sod_placeholder").html(a),l.listScroll(i,d),l.checkViewport(n,i))},keyboardUse:function(t){var s,i,a,d=e(this),r=d.find(".sod_list"),c=d.find(".sod_option"),u=d.find(".sod_label"),h=d.data("cycle"),f=c.filter(".active");return t.which>36&&t.which<41?(37===t.which||38===t.which?(i=f.prevAll(":not('.disabled, .optgroup')").first(),a=c.not(".disabled, .optgroup").last()):(39===t.which||40===t.which)&&(i=f.nextAll(":not('.disabled, .optgroup')").first(),a=c.not(".disabled, .optgroup").first()),!i.hasClass("sod_option")&&h&&(i=a),(i.hasClass("sod_option")||h)&&(f.removeClass("active"),i.addClass("active"),u.get(0).lastChild.nodeValue=i.text(),l.listScroll(r,i),d.hasClass("open")||(o=!0)),!1):(13===t.which||32===t.which&&d.hasClass("open")&&(" "===d.data("filter")[0]||""===d.data("filter"))?(t.preventDefault(),f.click()):32!==t.which||d.hasClass("open")||" "!==d.data("filter")[0]&&""!==d.data("filter")?27===t.which&&l.blurSod(d):(t.preventDefault(),o=!1,d.click()),void(0!==t.which&&(clearTimeout(n),d.data("filter",d.data("filter")+String.fromCharCode(t.which)),s=c.filter(function(){return 0===e(this).text().toLowerCase().indexOf(d.data("filter").toLowerCase())}).not(".disabled, .optgroup").first(),s.length&&(f.removeClass("active"),s.addClass("active"),l.listScroll(r,s),u.get(0).lastChild.nodeValue=s.text(),d.hasClass("open")||(o=!0)),n=setTimeout(function(){d.data("filter","")},500))))},optionHover:function(){var t=e(this);t.hasClass("disabled")||t.hasClass("optgroup")||t.siblings().removeClass("active").end().addClass("active")},optionClick:function(t){t.stopPropagation();var n=e(this),i=n.closest(".sod_select"),a=n.hasClass("disabled"),o=n.hasClass("optgroup"),l=i.find(".sod_option:not('.optgroup')").index(this);i.hasClass("touch")||(a||o||(i.find(".selected, .sod_placeholder").removeClass("selected sod_placeholder"),n.addClass("selected"),i.find("select option")[l].selected=!0,i.find("select").change()),clearTimeout(s),i.removeClass("open"))},selectChange:function(){var t=e(this),n=t.find(":selected"),s=n.text(),i=t.closest(".sod_select");i.find(".sod_label").get(0).lastChild.nodeValue=s,i.data("label",s),a.onChange.call(this),!i.data("links")&&!n.data("link")||n.data("link-external")?(i.data("links-external")||n.data("link-external"))&&window.open(n.val(),"_blank"):window.location.href=n.val()},blurSod:function(t){if(e("body").find(t).length){var n=t.data("label"),i=t.data("placeholder"),a=t.find(".active"),l=t.find(".selected"),d=!1;clearTimeout(s),o&&!a.hasClass("selected")?(a.click(),d=!0):a.hasClass("selected")||(a.removeClass("active"),l.addClass("active")),!d&&i?t.find(".sod_label").get(0).lastChild.nodeValue=l.text():d||(t.find(".sod_label").get(0).lastChild.nodeValue=n),o=!1,t.removeClass("open focus"),t.blur(),e("html").off(".sodBlur")}},checkViewport:function(t,n){var i=t[0].getBoundingClientRect(),a=n.outerHeight();i.bottom+a+10>e(window).height()&&i.top-a>10?t.addClass("above"):t.removeClass("above"),s=setTimeout(function(){l.checkViewport(t,n)},200)},listScroll:function(e,t){var n=e[0].getBoundingClientRect(),s=t[0].getBoundingClientRect();n.top>s.top?e.scrollTop(e.scrollTop()-n.top+s.top):n.bottom<s.bottom&&e.scrollTop(e.scrollTop()-n.bottom+s.bottom)},isTouch:function(){return"ontouchstart"in window||navigator.MaxTouchPoints>0||navigator.msMaxTouchPoints>0}},d={destroy:function(){return this.each(function(){var t=e(this),n=t.parent();n.hasClass("sod_select")?(t.off("change"),n.find("span").remove(),t.unwrap()):console.log("Select or Die: There's no SoD to destroy")})},update:function(){return this.each(function(){var t=e(this),n=t.parent(),s=n.find(".sod_list:first");n.hasClass("sod_select")?(s.empty(),n.find(".sod_label").get(0).lastChild.nodeValue="",t.is(":disabled")&&n.addClass("disabled"),e("option, optgroup",t).each(function(){l.populateSoD(e(this),s,n)})):console.log("Select or Die: There's no SoD to update")})},disable:function(t){return this.each(function(){var n=e(this),s=n.parent();s.hasClass("sod_select")?"undefined"!=typeof t?(s.find(".sod_list:first .sod_option[data-value='"+t+"']").addClass("disabled"),s.find(".sod_list:first .sod_option[data-label='"+t+"']").nextUntil(":not(.groupchild)").addClass("disabled"),e("option[value='"+t+"'], optgroup[label='"+t+"']",this).prop("disabled",!0)):s.hasClass("sod_select")&&(s.addClass("disabled"),n.prop("disabled",!0)):console.log("Select or Die: There's no SoD to disable")})},enable:function(t){return this.each(function(){var n=e(this),s=n.parent();s.hasClass("sod_select")?"undefined"!=typeof t?(s.find(".sod_list:first .sod_option[data-value='"+t+"']").removeClass("disabled"),s.find(".sod_list:first .sod_option[data-label='"+t+"']").nextUntil(":not(.groupchild)").removeClass("disabled"),e("option[value='"+t+"'], optgroup[label='"+t+"']",this).prop("disabled",!1)):s.hasClass("sod_select")&&(s.removeClass("disabled"),n.prop("disabled",!1)):console.log("Select or Die: There's no SoD to enable")})}};return d[t]?d[t].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof t&&t?void e.error('Select or Die: Oh no! No such method "'+t+'" for the SoD instance'):l.initSoD.apply(this,arguments)}}(jQuery),function(e){e(document).ready(function(){e("#timeline__toggle-timeline").click(function(t){t.preventDefault(),e(this).hasClass("active")||(e(".timeline-list").fadeOut(300,function(){e(".timeline-actual").fadeIn(300)}),e(this).addClass("active"),e("#timeline__toggle-list").removeClass("active"))}),e("#timeline__toggle-list").click(function(t){t.preventDefault(),e(this).hasClass("active")||(e(".timeline-actual").fadeOut(300,function(){e(".timeline-list").fadeIn(300)}),e(this).addClass("active"),e("#timeline__toggle-timeline").removeClass("active"))})})}(jQuery);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFkZHRoaXMtYWNjZXNpYmlsaXR5LmpzIiwiY2FsZW5kYXItdG9nZ2xlcy5qcyIsImNvbHVtbml6ZXItaW5pdC5qcyIsImN1c3RvbUVxdWFsSGVpZ2h0cy5qcyIsImVucXVpcmUubWluLmpzIiwiZm9ybS1leHBhbmRhYmxlLWhlbHAuanMiLCJpbWFnZS1jb250YWluZXIuanMiLCJqcXVlcnkuY29sdW1uaXplci5taW4uanMiLCJqcXVlcnkuZm9ybWFsaXplLmxlZ2FjeS5taW4uanMiLCJtZWdhbWVudS0tbmV3LmpzIiwibWVudS10cmVlLWNvbGxhcHNlLmpzIiwibmlzdC1zdmcuanMiLCJwbGFjZWhvbGRlcnMuanMiLCJwcmltYXJ5LWZpbHRlci5qcyIsInJlc3BvbnNpdmUtdGFibGVzLmpzIiwic2NyaXB0LmpzIiwic2VsZWN0b3JkaWUtaW5pdC5qcyIsInNlbGVjdG9yZGllLm1pbi5qcyIsInRpbWVsaW5lLXRvZ2dsZS5qcyJdLCJuYW1lcyI6WyIkIiwiZG9jdW1lbnQiLCJyZWFkeSIsImFkZFRoaXNDaGVja2VyIiwibGVuZ3RoIiwiYWRkVGhpc01hcmt1cEFkanVzdG1lbnQiLCJhZGRUaGlzUmVkb0NoZWNrZXIiLCJlYWNoIiwic3BhblRpdGxlIiwidGhpcyIsImF0dHIiLCJodG1sIiwicGFyZW50Iiwic2V0VGltZW91dCIsImNsaWNrIiwiZSIsInByZXZlbnREZWZhdWx0IiwiZmFkZVRvZ2dsZSIsImtleXVwIiwia2V5Q29kZSIsImZhZGVPdXQiLCJqUXVlcnkiLCJkb2VzRWxlbWVudEV4aXN0Iiwic2VsZWN0b3JBcnJheSIsImtleSIsInNlbGVjdG9yIiwiYW1vdW50T2ZFbGVtZW50cyIsImFkZENsYXNzIiwiY2FsZW5kYXJPbiIsImhhc0NsYXNzIiwiZmFkZUluIiwicmVtb3ZlQ2xhc3MiLCJjYWxlbmRhck9mZiIsImFqYXhDb21wbGV0ZSIsIndpbmRvdyIsImxvYWQiLCJsb2FkZWQiLCJlbnF1aXJlIiwicmVnaXN0ZXIiLCJtYXRjaCIsInVubWF0Y2giLCJzZXR1cCIsImRlZmVyU2V0dXAiLCJkZXN0cm95IiwiY29sdW1uaXplIiwiY29sdW1ucyIsImxhc3ROZXZlclRhbGxlc3QiLCJkb2VzRWxlbWVudEV4aXN0V2l0aE11bHRpcGxlIiwiZ2V0SGVpZ2h0cyIsImhlaWdodEFycmF5IiwiaXRlbUhlaWdodCIsIm91dGVySGVpZ2h0IiwicHVzaCIsImZpbmRHcmVhdGVzdEhlaWdodCIsImdyZWF0ZXN0SGVpZ2h0IiwiTWF0aCIsIm1heCIsImFwcGx5IiwiYXBwbHlHcmVhdGVzdEhlaWdodCIsImNzcyIsInJlbW92ZUdyZWF0ZXN0SGVpZ2h0IiwicmVzaXplIiwid2luZG93V2lkdGgiLCJ3aWR0aCIsImEiLCJiIiwiYyIsImQiLCJtYXRjaE1lZGlhIiwibW9kdWxlIiwiZXhwb3J0cyIsImRlZmluZSIsImFtZCIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwib3B0aW9ucyIsImYiLCJxdWVyeSIsImlzVW5jb25kaXRpb25hbCIsImhhbmRsZXJzIiwibXFsIiwibGlzdGVuZXIiLCJhc3Nlc3MiLCJhZGRMaXN0ZW5lciIsImciLCJFcnJvciIsInF1ZXJpZXMiLCJicm93c2VySXNJbmNhcGFibGUiLCJtYXRjaGVzIiwiaW5pdGlhbGlzZWQiLCJvbiIsIm9mZiIsImVxdWFscyIsImFkZEhhbmRsZXIiLCJyZW1vdmVIYW5kbGVyIiwic3BsaWNlIiwiY2xlYXIiLCJyZW1vdmVMaXN0ZW5lciIsImgiLCJpIiwidW5yZWdpc3RlciIsImlucHV0SUQiLCJyZXBsYWNlIiwiaGVscENsYXNzIiwiaGVscEVsZW1lbnQiLCJmaXJzdCIsImhpZGUiLCJhcHBlbmQiLCJ0b2dnbGVDbGFzcyIsInNpYmxpbmdzIiwic2xpZGVUb2dnbGUiLCJpbWFnZUNvbnRhaW5lciIsInNjcmVlbkltYWdlIiwiZmluZCIsInRoZUltYWdlIiwiSW1hZ2UiLCJzcmMiLCJpbWFnZVdpZHRoIiwic2NyZWVuSW1hZ2VXaWR0aCIsImhlaWdodCIsIkRydXBhbCIsImJlaGF2aW9ycyIsImF0dGFjaCIsImNvbnRleHQiLCJzZXR0aW5ncyIsImZuIiwiYXBwZW5kU2FmZSIsIiR0YXJnZXQiLCIkZWxlbSIsImFwcGVuZENoaWxkIiwiY29scyIsIm9mZnNldCIsImJlZm9yZSIsImxhc3RPdGhlciIsInByZXZNYXgiLCJkZWJ1ZyIsInNldENvbHVtblN0YXJ0IiwiZWxpcHNpc1RleHQiLCJkZWZhdWx0cyIsImJ1aWxkT25jZSIsIm92ZXJmbG93IiwiZG9uZUZ1bmMiLCJ0YXJnZXQiLCJpZ25vcmVJbWFnZUxvYWRpbmciLCJjb2x1bW5GbG9hdCIsImFjY3VyYWN5IiwicHJlY2lzZSIsIm1hbnVhbEJyZWFrcyIsImNzc0NsYXNzUHJlZml4IiwiZXh0ZW5kIiwicGFyc2VJbnQiLCJpc05hTiIsInNldFdpZHRoIiwibnVtQ29scyIsImZsb29yIiwicHJlZml4VGhlQ2xhc3NOYW1lIiwiY2xhc3NOYW1lIiwid2l0aERvdCIsImRvdCIsIiRwdXRJbkhlcmUiLCIkcHVsbE91dEhlcmUiLCIkcGFyZW50Q29sdW1uIiwidGFyZ2V0SGVpZ2h0IiwiY2hpbGROb2RlcyIsIm5vZGUiLCJraWRzIiwibGFzdEtpZCIsInJlbW92ZUNoaWxkIiwiJGl0ZW0iLCJub2RlVHlwZSIsIm9UZXh0Iiwibm9kZVZhbHVlIiwiY291bnRlcjIiLCJjb2x1bW5UZXh0IiwibGF0ZXN0VGV4dE5vZGUiLCJpbmRleE9mU3BhY2UiLCJpbmRleE9mIiwic3Vic3RyaW5nIiwiY3JlYXRlVGV4dE5vZGUiLCJjb250ZW50cyIsInByZXBlbmQiLCJzcGxpdCIsIiRjbG9uZU1lIiwiZ2V0IiwiJGNsb25lIiwiY2xvbmUiLCJyZW1vdmUiLCJpcyIsImVtcHR5IiwidGFnTmFtZSIsInN0YXJ0V2l0aCIsImNoaWxkRWxlbWVudENvdW50Iiwic3RhcnQiLCJjaGlsZHJlbiIsIm9ubHlOb2RlIiwid2hpdGVzcGFjZSIsInN0ciIsInRlc3QiLCJzaW5nbGVDb2x1bW5pemVJdCIsIiRpbkJveCIsImRhdGEiLCIkY29sIiwiZXEiLCIkZGVzdHJveWFibGUiLCIkY2FjaGUiLCJjaGVja0RvbnRFbmRDb2x1bW4iLCIkbGFzdEtpZCIsImRpdiIsImNyZWF0ZUVsZW1lbnQiLCJraWQiLCJhdHRyaWJ1dGVzIiwibm9kZU5hbWUiLCJyZW1vdmVBdHRyaWJ1dGUiLCJpbm5lckhUTUwiLCJpZCIsImRvbSIsInByZXZpb3VzU2libGluZyIsImNvbHVtbml6ZUl0IiwiYWRqdXN0bWVudCIsImxhc3RXaWR0aCIsInJvdW5kIiwib3B0aW9uV2lkdGgiLCJvcHRpb25IZWlnaHQiLCJtYXhIZWlnaHQiLCJtYXhMb29wcyIsInNjcm9sbEhvcml6b250YWxseSIsImxvb3BDb3VudCIsIklFNiIsIklFNyIsIm5hdmlnYXRvciIsImFwcFZlcnNpb24iLCJ0b3RhbEgiLCJtaW4iLCJsYXN0SXNNYXgiLCJudW1iZXJPZkNvbHVtbnNUaGF0RG9udEVuZEluQUNvbHVtbkJyZWFrIiwiZW5kc0luQnJlYWsiLCJhdmdIIiwiYWJzIiwiZnVuYyIsIm9uZSIsImNsZWFyVGltZW91dCIsInJlbnVtYmVyQnlKUyIsIiRzZWFyY2hUYWciLCIkY29sbm8iLCIkdGFyZ2V0SWQiLCIkdGFyZ2V0Q2xhc3MiLCJzZXRMaXN0IiwiJGNvbHMiLCIkbGlzdCIsIiR0YWcxIiwiJHJlc3QiLCIkcGFyZW50cyIsInBhcmVudHMiLCJsYXN0IiwidG9VcHBlckNhc2UiLCJjb25zb2xlIiwibG9nIiwiJHRpbnQiLCIkd2hlcmVFbGlwc2lzIiwiJHR4dCIsInRleHQiLCIkbGVuIiwibmVzdCIsIiR0dCIsInRyaW0iLCJ0b0xvd2VyQ2FzZSIsIiR0YWcyIiwiJGZpcnN0IiwiJGZvdW5kIiwiJHJlc2V0IiwiRk9STUFMSVpFIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJnbyIsImluaXQiLCJoYXNPd25Qcm9wZXJ0eSIsImRpc2FibGVfbGlua19idXR0b24iLCJkb2N1bWVudEVsZW1lbnQiLCJkZWxlZ2F0ZSIsImZ1bGxfaW5wdXRfc2l6ZSIsIndyYXAiLCJpZTZfc2tpbl9pbnB1dHMiLCJnZXRBdHRyaWJ1dGUiLCJkaXNhYmxlZCIsImF1dG9mb2N1cyIsImZvY3VzIiwicGxhY2Vob2xkZXIiLCJtaXNjIiwiYWRkX3BsYWNlaG9sZGVyIiwidHlwZSIsInZhbCIsImJsdXIiLCJjbG9zZXN0Iiwic3VibWl0IiwiYmluZCIsImNsb3NlTWVnYW1lbnUiLCJmb2N1c2luIiwiZm9jdXNvdXQiLCJ3cmFwSW5uZXIiLCJzbGlkZVVwIiwic2xpZGVEb3duIiwiYW1vdW50T2ZDb2x1bW5zIiwiYm91bmRhcnkiLCJpbnNlcnRBZnRlciIsIm5leHRBbGwiLCJhbmRTZWxmIiwiY3VycmVudENvbHVtbkNvbnRhaW5lciIsImV4cGFuZENvbGxhcHNlIiwiZXhwYW5kZXIiLCIkdGhpc1N1Ym1lbnUiLCJvbmNlIiwiaW5kZXgiLCJlbGVtZW50IiwiYm94Iiwidmlld0JveCIsImJhc2VWYWwiLCJyYXRpbyIsInZhbHVlIiwidG9vbFRpcFRleHQiLCJldmVudCIsImVsZW1lbnROdW1iZXIiLCJlbGVtZW50VG9TaG93IiwiY2hlY2tWYWx1ZSIsImN1cnJlbnRWYWx1ZSIsInRhYmxlT3ZlcmZsb3ciLCJvdmVyZmxvd24iLCJvdmVyZmxvd25fd2lkdGgiLCJ0YWJsZV93aWR0aCIsImJyb3dzZXJfd2lkdGgiLCJ3cmFwcGVyX3dpZHRoIiwibGVmdCIsImFmdGVyIiwibGFzdFBvcyIsInNjcm9sbCIsImN1cnJQb3MiLCJzY3JvbGxMZWZ0Iiwic2Nyb2xsV2lkdGgiLCJjbGllbnRXaWR0aCIsInNlbGVjdE9yRGllIiwiY3VzdG9tQ2xhc3MiLCJzaXplIiwibm90IiwibGVmdENvbFdpZHRoIiwiY3VzdG9tSUQiLCJwbGFjZWhvbGRlck9wdGlvbiIsInByZWZpeCIsImN5Y2xlIiwic3RyaXBFbXB0eSIsImxpbmtzIiwibGlua3NFeHRlcm5hbCIsInRhYkluZGV4Iiwib25DaGFuZ2UiLCJub29wIiwiaW5pdFNvRCIsInUiLCJ2IiwidyIsImoiLCJrIiwibCIsIm0iLCJuIiwibyIsInAiLCJwcm9wIiwicSIsInIiLCJzIiwidCIsImNsYXNzIiwidGl0bGUiLCJ0YWJpbmRleCIsImRhdGEtY3ljbGUiLCJkYXRhLWxpbmtzIiwiZGF0YS1saW5rcy1leHRlcm5hbCIsImRhdGEtcGxhY2Vob2xkZXIiLCJkYXRhLXBsYWNlaG9sZGVyLW9wdGlvbiIsImRhdGEtcHJlZml4IiwiZGF0YS1maWx0ZXIiLCJpc1RvdWNoIiwiYXBwZW5kVG8iLCJwb3B1bGF0ZVNvRCIsInNob3ciLCJyZW1vdmVBdHRyIiwibWF4LWhlaWdodCIsImZvY3VzU29kIiwidHJpZ2dlclNvZCIsIm9wdGlvbkNsaWNrIiwib3B0aW9uSG92ZXIiLCJrZXlib2FyZFVzZSIsInNlbGVjdENoYW5nZSIsImRhdGEtdmFsdWUiLCJkYXRhLWxhYmVsIiwiYmx1clNvZCIsInN0b3BQcm9wYWdhdGlvbiIsImxhc3RDaGlsZCIsImxpc3RTY3JvbGwiLCJjaGVja1ZpZXdwb3J0IiwiZmlsdGVyIiwid2hpY2giLCJwcmV2QWxsIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiZW5kIiwic2VsZWN0ZWQiLCJjaGFuZ2UiLCJjYWxsIiwib3BlbiIsImxvY2F0aW9uIiwiaHJlZiIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImJvdHRvbSIsInRvcCIsInNjcm9sbFRvcCIsIk1heFRvdWNoUG9pbnRzIiwibXNNYXhUb3VjaFBvaW50cyIsInVud3JhcCIsInVwZGF0ZSIsImRpc2FibGUiLCJuZXh0VW50aWwiLCJlbmFibGUiLCJBcnJheSIsInNsaWNlIiwiYXJndW1lbnRzIiwiZXJyb3IiXSwibWFwcGluZ3MiOiJDQUFBLFNBQUFBLEdBR0FBLEVBQUFDLFVBQUFDLE1BQUEsV0EyQkEsUUFBQUMsS0FFQUgsRUFBQSw0QkFBQUksUUFBQSxJQUVBSixFQUFBLFdBQUFJLFFBQUEsRUFDQUMsSUFFQUMsS0FVQSxRQUFBRCxLQUNBTCxFQUFBLGtCQUFBTyxLQUFBLFdBRUEsR0FBQUMsR0FBQVIsRUFBQVMsTUFBQUMsS0FBQSxRQUNBVixHQUFBUyxNQUFBRSxLQUFBLG1DQUFBSCxFQUFBLFdBQ0FSLEVBQUFTLE1BQUFHLE9B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QUE0VixNQUFBaEIsS0FBQWlCLFVBQUEsSUFBQSxnQkFBQXRXLElBQUFBLE1BQUFELEdBQUF3VyxNQUFBLHlDQUFBdlcsRUFBQSwwQkFBQWtDLEVBQUE4UCxRQUFBeFMsTUFBQWhELEtBQUE4WixhQUFBbFosUUNmQSxTQUFBckIsR0FJQUEsRUFBQUMsVUFBQUMsTUFBQSxXQUVBRixFQUFBLDhCQUFBYyxNQUFBLFNBQUFDLEdBQ0FBLEVBQUFDLGlCQUVBaEIsRUFBQVMsTUFBQW9CLFNBQUEsWUFJQTdCLEVBQUEsa0JBQUFvQixRQUFBLElBQUEsV0FDQXBCLEVBQUEsb0JBQUE4QixPQUFBLE9BR0E5QixFQUFBUyxNQUFBa0IsU0FBQSxVQUNBM0IsRUFBQSwwQkFBQStCLFlBQUEsYUFRQS9CLEVBQUEsMEJBQUFjLE1BQUEsU0FBQUMsR0FDQUEsRUFBQUMsaUJBRUFoQixFQUFBUyxNQUFBb0IsU0FBQSxZQUlBN0IsRUFBQSxvQkFBQW9CLFFBQUEsSUFBQSxXQUNBcEIsRUFBQSxrQkFBQThCLE9BQUEsT0FHQTlCLEVBQUFTLE1BQUFrQixTQUFBLFVBQ0EzQixFQUFBLDhCQUFBK0IsWUFBQSxnQkFXQVYiLCJmaWxlIjoic2NyaXB0cy5taW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gKCQpIHtcblxuXG4gICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7XG5cbiAgICAvL1RvZ2dsZSBmb3IgU2hhcmluZ1xuICAgICQoJy5zb2NpYWwtbWVkaWEtcHJpbnRfX3NoYXJpbmctdG9nZ2xlJykuY2xpY2soZnVuY3Rpb24oZSl7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAkKCcuYWRkdGhpc19zaGFyaW5nX3Rvb2xib3gnKS5mYWRlVG9nZ2xlKCk7XG4gICAgfSk7XG5cbiAgICAvL0VzY2FwZSB0byBjbG9zZSBzaGFyaW5nIGJveFxuICAgIC8vQ2xvc2Ugb24gRXNjYXBlXG4gICAgJChkb2N1bWVudCkua2V5dXAoZnVuY3Rpb24oZSkge1xuICAgICAgaWYgKGUua2V5Q29kZSA9PSAyNykge1xuICAgICAgICAkKCcuYWRkdGhpc19zaGFyaW5nX3Rvb2xib3gnKS5mYWRlT3V0KCk7XG4gICAgICB9XG4gICAgfSk7XG5cblxuICAgIC8qKlxuICAgICAqXG4gICAgICogVGhlIEFkZFRoaXMgdG9vbGJhciBtYXJrdXAgaXMgYXV0b21hdGljYWxseSBpbnNlcnRlZCB2aWEgamF2YXNjcmlwdCBhZnRlciB0aGUgcGFnZSBsb2Fkcy5cbiAgICAgKiBUaGlzIGlzIGNvbnRyb2xsZWQgYnkgQWRkVGhpcy4gVGhpcyBtYXJrdXAgaXMgaW5hY2Nlc3NpYmxlIGFuZCBzaW5jZSBpdCBpcyBnZW5lcmF0ZWQgdmlhIGV4dGVybmFsXG4gICAgICogamF2YXNjcmlwdCB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBwYWdlIHRvIHNlZSBpZiBpdHMgdGhlcmUuXG4gICAgICpcbiAgICAgKi9cblxuICAgIGFkZFRoaXNDaGVja2VyKCk7XG5cbiAgICBmdW5jdGlvbiBhZGRUaGlzQ2hlY2tlcigpe1xuXG4gICAgICBpZigkKCcuYWRkdGhpc19zaGFyaW5nX3Rvb2xib3gnKS5sZW5ndGggPj0gMSl7XG5cbiAgICAgICAgaWYoJCgnI2F0c3RieCcpLmxlbmd0aCA+PSAxKXtcbiAgICAgICAgICBhZGRUaGlzTWFya3VwQWRqdXN0bWVudCgpO1xuICAgICAgICB9ZWxzZXtcbiAgICAgICAgICBhZGRUaGlzUmVkb0NoZWNrZXIoKTtcbiAgICAgICAgfVxuXG5cbiAgICAgIH1lbHNle1xuXG4gICAgICB9XG5cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBhZGRUaGlzTWFya3VwQWRqdXN0bWVudCgpe1xuICAgICAgJCgnI2F0c3RieCBhIHNwYW4nKS5lYWNoKGZ1bmN0aW9uKCl7XG5cbiAgICAgICAgdmFyIHNwYW5UaXRsZSA9ICQodGhpcykuYXR0cigndGl0bGUnKTtcbiAgICAgICAgJCh0aGlzKS5odG1sKCc8c3BhbiBjbGFzcz1cImVsZW1lbnQtaW52aXNpYmxlXCI+JytzcGFuVGl0bGUrJzwvc3Bhbj4nKTtcbiAgICAgICAgJCh0aGlzKS5wYXJlbnQoJ2EnKS5hdHRyKCdocmVmJywgJyMnKTtcblxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gYWRkVGhpc1JlZG9DaGVja2VyKCl7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YWRkVGhpc0NoZWNrZXIoKTt9LDUwMDApO1xuICAgIH1cblxuICB9KTtcblxuXG5cbn0pKGpRdWVyeSk7XG4iLCIoZnVuY3Rpb24gKCQpIHtcblxuICAvL1RPRE8gRG9jdW1lbnQgYW5kIENsZWFuIHVwXG5cblxuICB2YXIgc2VsZWN0b3JBcnJheSA9IFtcbiAgICAnYm9keS5wYWdlLW5ld3MtZXZlbnRzLWV2ZW50cy1jYWxlbmRhcidcbiAgXTtcblxuXG5cbiAgZnVuY3Rpb24gZG9lc0VsZW1lbnRFeGlzdChzZWxlY3RvckFycmF5KXtcblxuXG4gICAgJC5lYWNoKHNlbGVjdG9yQXJyYXksIGZ1bmN0aW9uKGtleSwgc2VsZWN0b3Ipe1xuXG4gICAgICB2YXIgYW1vdW50T2ZFbGVtZW50cyA9ICQoc2VsZWN0b3IpLmxlbmd0aDtcblxuICAgICAgaWYoYW1vdW50T2ZFbGVtZW50cyA9PSAxKXtcbiAgICAgICAgJCgnYm9keScpLmFkZENsYXNzKCdzaG93LWNhbGVuZGFyJyk7XG4gICAgICB9XG5cbiAgICB9KTtcblxuICB9XG5cbiAgZnVuY3Rpb24gY2FsZW5kYXJPbigpe1xuICAgIGlmKCQoJyNjYWxlbmRhcl9fdG9nZ2xlLWNhbGVuZGFyJykuaGFzQ2xhc3MoJ2FjdGl2ZScpKXtcblxuICAgIH1lbHNle1xuXG4gICAgICAkKCcudmlldy0tZXZlbnRzLWNhbGVuZGFyIC5hdHRhY2htZW50JykuZmFkZU91dCgwLGZ1bmN0aW9uKCl7XG4gICAgICAgICQoJy52aWV3LS1ldmVudHMtY2FsZW5kYXIgLnZpZXctY29udGVudCcpLmZhZGVJbigzMDApO1xuICAgICAgfSk7XG5cbiAgICAgICQoJyNjYWxlbmRhcl9fdG9nZ2xlLWNhbGVuZGFyJykuYWRkQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgJCgnI2NhbGVuZGFyX190b2dnbGUtbGlzdCcpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTtcbiAgICAgICQoJ2JvZHknKS5yZW1vdmVDbGFzcygnaGlkZS1jYWxlbmRhcicpLmFkZENsYXNzKCdzaG93LWNhbGVuZGFyJyk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gY2FsZW5kYXJPZmYoKXtcblxuICAgIGlmKCQoJyNjYWxlbmRhcl9fdG9nZ2xlLWxpc3QnKS5oYXNDbGFzcygnYWN0aXZlJykpe1xuXG4gICAgfWVsc2V7XG4gICAgICAvL29ubHkgZG8gdGhlIGZhZGVvdXQgaWYgY2FsZW5kYXIgaXMgcHJlc2VudCBlbHNlIGp1c3Qgc2hvdyBuZXcgYXR0YWNobWVudCBMaXN0XG4gICAgICBpZigkKCdib2R5JykuaGFzQ2xhc3MoJ3Nob3ctY2FsZW5kYXInKSkge1xuICAgICAgICAkKCcudmlldy0tZXZlbnRzLWNhbGVuZGFyIC52aWV3LWNvbnRlbnQnKS5mYWRlT3V0KDAsZnVuY3Rpb24oKXtcbiAgICAgICAgICAkKCcudmlldy0tZXZlbnRzLWNhbGVuZGFyIC5hdHRhY2htZW50LCcgK1xuICAgICAgICAgICcudmlldy0tZXZlbnRzLWNhbGVuZGFyIC5hdHRhY2htZW50IC52aWV3LWNvbnRlbnQnKS5mYWRlSW4oMzAwKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAkKCcudmlldy0tZXZlbnRzLWNhbGVuZGFyIC5hdHRhY2htZW50LCcgK1xuICAgICAgICAnLnZpZXctLWV2ZW50cy1jYWxlbmRhciAuYXR0YWNobWVudCAudmlldy1jb250ZW50JykuZmFkZUluKDMwMCk7XG4gICAgICB9XG5cblxuICAgICAgJCgnI2NhbGVuZGFyX190b2dnbGUtbGlzdCcpLmFkZENsYXNzKCdhY3RpdmUnKTtcbiAgICAgICQoJyNjYWxlbmRhcl9fdG9nZ2xlLWNhbGVuZGFyJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgJCgnYm9keScpLnJlbW92ZUNsYXNzKCdzaG93LWNhbGVuZGFyJykucmVtb3ZlQ2xhc3MoJ2hhZC1jYWxlbmRhcicpLmFkZENsYXNzKCdoaWRlLWNhbGVuZGFyJyk7XG5cbiAgICB9XG5cbiAgfVxuXG4gICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7XG4gICAgZG9lc0VsZW1lbnRFeGlzdChzZWxlY3RvckFycmF5KTtcblxuXG4gICAgJCgnI2NhbGVuZGFyX190b2dnbGUtY2FsZW5kYXInKS5jbGljayhmdW5jdGlvbihlKXtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNhbGVuZGFyT24oKTtcblxuICAgIH0pO1xuXG4gICAgJCgnI2NhbGVuZGFyX190b2dnbGUtbGlzdCcpLmNsaWNrKGZ1bmN0aW9uKGUpe1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgY2FsZW5kYXJPZmYoKTtcbiAgICB9KTtcblxuXG4gIH0pO1xuXG4gICQoZG9jdW1lbnQpLmFqYXhDb21wbGV0ZShmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCQoJ2JvZHknKS5oYXNDbGFzcygnc2hvdy1jYWxlbmRhcicpKSB7XG4gICAgICBjYWxlbmRhck9uKCk7XG4gICAgICAkKCcjY2FsZW5kYXJfX3RvZ2dsZS1jYWxlbmRhcicpLmFkZENsYXNzKCdhY3RpdmUnKTtcbiAgICAgICQoJyNjYWxlbmRhcl9fdG9nZ2xlLWxpc3QnKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XG5cbiAgICB9ZWxzZSBpZigkKCdib2R5JykuaGFzQ2xhc3MoJ2hpZGUtY2FsZW5kYXInKSl7XG4gICAgICBjYWxlbmRhck9mZigpO1xuICAgICAgJCgnI2NhbGVuZGFyX190b2dnbGUtbGlzdCcpLmFkZENsYXNzKCdhY3RpdmUnKTtcbiAgICAgICQoJyNjYWxlbmRhcl9fdG9nZ2xlLWNhbGVuZGFyJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO1xuICAgIH1cblxuICAgICQoJyNjYWxlbmRhcl9fdG9nZ2xlLWNhbGVuZGFyJykuY2xpY2soZnVuY3Rpb24oZSl7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjYWxlbmRhck9uKCk7XG5cbiAgICB9KTtcblxuICAgICQoJyNjYWxlbmRhcl9fdG9nZ2xlLWxpc3QnKS5jbGljayhmdW5jdGlvbihlKXtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNhbGVuZGFyT2ZmKCk7XG4gICAgfSk7XG5cbiAgfSk7XG5cblxuICAkKHdpbmRvdykubG9hZChmdW5jdGlvbigpIHtcbiAgICB3aW5kb3cubG9hZGVkID0gdHJ1ZTtcbiAgfSk7XG5cbiAgLy9UT0RPIENsZWFuIChhbHNvIGZpeClcbiAgLy9DYWxlbmRhciBMaXN0IFRvZ2dsZSBvbiByZXNpemVcbiAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXtcblxuXG5cblxuXG4gICAgZW5xdWlyZS5yZWdpc3RlcihcInNjcmVlbiBhbmQgKG1heC13aWR0aDo2NzlweClcIiwge1xuXG4gICAgICAvLyBPUFRJT05BTFxuICAgICAgLy8gSWYgc3VwcGxpZWQsIHRyaWdnZXJlZCB3aGVuIGEgbWVkaWEgcXVlcnkgbWF0Y2hlcy5cbiAgICAgIG1hdGNoIDogZnVuY3Rpb24oKSB7XG5cblxuICAgICAgICBpZigkKCdib2R5JykuaGFzQ2xhc3MoJ3Nob3ctY2FsZW5kYXInKSl7XG4gICAgICAgICAgY2FsZW5kYXJPZmYoKTtcbiAgICAgICAgICBpZih3aW5kb3cubG9hZGVkPT09dHJ1ZSl7XG4gICAgICAgICAgICAkKCdib2R5JykuYWRkQ2xhc3MoJ2hhZC1jYWxlbmRhcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG5cblxuXG5cbiAgICAgIH0sXG5cbiAgICAgIC8vIE9QVElPTkFMXG4gICAgICAvLyBJZiBzdXBwbGllZCwgdHJpZ2dlcmVkIHdoZW4gdGhlIG1lZGlhIHF1ZXJ5IHRyYW5zaXRpb25zXG4gICAgICAvLyAqZnJvbSBhIG1hdGNoZWQgc3RhdGUgdG8gYW4gdW5tYXRjaGVkIHN0YXRlKi5cbiAgICAgIHVubWF0Y2ggOiBmdW5jdGlvbigpIHtcblxuICAgICAgICBpZigkKCdib2R5JykuaGFzQ2xhc3MoJ2hhZC1jYWxlbmRhcicpKXtcbiAgICAgICAgICBjYWxlbmRhck9uKCk7XG4gICAgICAgIH1cblxuXG4gICAgICB9LFxuXG4gICAgICAvLyBPUFRJT05BTFxuICAgICAgLy8gSWYgc3VwcGxpZWQsIHRyaWdnZXJlZCBvbmNlLCB3aGVuIHRoZSBoYW5kbGVyIGlzIHJlZ2lzdGVyZWQuXG4gICAgICBzZXR1cCA6IGZ1bmN0aW9uKCkge30sXG5cbiAgICAgIC8vIE9QVElPTkFMLCBkZWZhdWx0cyB0byBmYWxzZVxuICAgICAgLy8gSWYgc2V0IHRvIHRydWUsIGRlZmVycyBleGVjdXRpb24gb2YgdGhlIHNldHVwIGZ1bmN0aW9uXG4gICAgICAvLyB1bnRpbCB0aGUgZmlyc3QgdGltZSB0aGUgbWVkaWEgcXVlcnkgaXMgbWF0Y2hlZFxuICAgICAgZGVmZXJTZXR1cCA6IHRydWUsXG5cbiAgICAgIC8vIE9QVElPTkFMXG4gICAgICAvLyBJZiBzdXBwbGllZCwgdHJpZ2dlcmVkIHdoZW4gaGFuZGxlciBpcyB1bnJlZ2lzdGVyZWQuXG4gICAgICAvLyBQbGFjZSBjbGVhbnVwIGNvZGUgaGVyZVxuICAgICAgZGVzdHJveSA6IGZ1bmN0aW9uKCkge31cblxuICAgIH0pO1xuXG5cbiAgfSk7XG5cblxufSkoalF1ZXJ5KTtcbiIsIihmdW5jdGlvbiAoJCkge1xuXG5cbiAgLy90b2RvIHJ1biBlbGVtZW50IGNoZWNrIGZpcnN0XG4gIC8vRG9jdW1lbnRhdGlvbiA6IGh0dHBzOi8vZ2l0aHViLmNvbS9hZGFtd3VsZi9Db2x1bW5pemVyLWpRdWVyeS1QbHVnaW5cblxuICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe1xuXG5cbiAgICAkKCcucGFuZS0tcHVibGljYXRpb24tdG9waWMtYXJlYS10YXhvbm9teS10b3BpYy1hcmVhIC52aWV3LWNvbnRlbnQnKS5jb2x1bW5pemUoe1xuICAgICAgY29sdW1uczogMyxcbiAgICAgIGxhc3ROZXZlclRhbGxlc3Q6IHRydWVcbiAgICB9KTtcblxuICAgICQoJ2Zvb3RlciAubWVudS1uYW1lLW1haW4tbWVudSAubWVudSBsaTpmaXJzdC1jaGlsZCAubWVudScpLmNvbHVtbml6ZSh7XG4gICAgICBjb2x1bW5zOiAyLFxuICAgICAgbGFzdE5ldmVyVGFsbGVzdDogdHJ1ZVxuICAgIH0pO1xuXG4gIH0pO1xuXG5cbn0pKGpRdWVyeSk7XG4iLCIoZnVuY3Rpb24gKCQpIHtcblxuICAvL0VxdWFsIEhlaWdodHNcblxuICB2YXIgc2VsZWN0b3JBcnJheSA9IFtcbiAgICAnLnBhbmVsLXJlZ2lvbi0tY2FsbC1vdXRzIC5wYW5lLS1jYWxsb3V0IC5wYW5lX19pbm5lci1jb250ZW50JyxcbiAgICAnLnBhbmUtLWhhbGYtd2lkdGggLnBhbmVfX2lubmVyLWNvbnRlbnQnLFxuICAgICcucGFuZS0taGFsZi13aWR0aCAucGFuZV9faGVhZGVyJyxcbiAgICAnLm5pc3QtZmVhdHVyZWQtdG9waWNzX19saW5rJyxcbiAgICAnLm5pc3QtaGVyby0taG9tZXBhZ2UgLm5pc3QtaGVyb19fY2FwdGlvbi0tb3ZlcmxheSdcbiAgXTtcblxuXG5cbiAgZnVuY3Rpb24gZG9lc0VsZW1lbnRFeGlzdFdpdGhNdWx0aXBsZShzZWxlY3RvckFycmF5KXtcblxuICAgICQuZWFjaChzZWxlY3RvckFycmF5LCBmdW5jdGlvbihrZXksIHNlbGVjdG9yKXtcblxuICAgICAgdmFyIGFtb3VudE9mRWxlbWVudHMgPSAkKHNlbGVjdG9yKS5sZW5ndGg7XG5cbiAgICAgIGlmKGFtb3VudE9mRWxlbWVudHMgPiAxKXtcbiAgICAgICAgZ2V0SGVpZ2h0cyhzZWxlY3Rvcik7XG4gICAgICB9XG5cbiAgICB9KTtcblxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0SGVpZ2h0cyhzZWxlY3Rvcil7XG5cbiAgICB2YXIgaGVpZ2h0QXJyYXkgPSBbXTtcblxuICAgICQoc2VsZWN0b3IpLmVhY2goZnVuY3Rpb24oKXtcbiAgICAgIHZhciBpdGVtSGVpZ2h0ID0gJCh0aGlzKS5vdXRlckhlaWdodCgpO1xuICAgICAgaGVpZ2h0QXJyYXkucHVzaChpdGVtSGVpZ2h0KTtcbiAgICB9KTtcblxuICAgIGZpbmRHcmVhdGVzdEhlaWdodChoZWlnaHRBcnJheSwgc2VsZWN0b3IpO1xuXG4gIH1cblxuXG5cblxuXG5cbiAgZnVuY3Rpb24gZmluZEdyZWF0ZXN0SGVpZ2h0KGhlaWdodEFycmF5LCBzZWxlY3Rvcil7XG4gICAgdmFyIGdyZWF0ZXN0SGVpZ2h0ID0gTWF0aC5tYXguYXBwbHkoTWF0aCwgaGVpZ2h0QXJyYXkpO1xuXG4gICAgYXBwbHlHcmVhdGVzdEhlaWdodChncmVhdGVzdEhlaWdodCwgc2VsZWN0b3IpO1xuICB9XG5cbiAgZnVuY3Rpb24gYXBwbHlHcmVhdGVzdEhlaWdodChncmVhdGVzdEhlaWdodCwgc2VsZWN0b3Ipe1xuXG4gICAgJChzZWxlY3RvcikuY3NzKCdoZWlnaHQnLCBncmVhdGVzdEhlaWdodCsncHgnKTtcblxuICB9XG5cbiAgZnVuY3Rpb24gcmVtb3ZlR3JlYXRlc3RIZWlnaHQoc2VsZWN0b3JBcnJheSl7XG5cblxuICAgICQuZWFjaChzZWxlY3RvckFycmF5LCBmdW5jdGlvbihrZXksIHNlbGVjdG9yKXtcblxuICAgICAgdmFyIGFtb3VudE9mRWxlbWVudHMgPSAkKHNlbGVjdG9yKS5sZW5ndGg7XG5cbiAgICAgIGlmKGFtb3VudE9mRWxlbWVudHMgPiAxKXtcbiAgICAgICAgJChzZWxlY3RvcikuY3NzKCdoZWlnaHQnLCAnYXV0bycpO1xuICAgICAgfVxuXG4gICAgfSk7XG5cblxuXG5cbiAgfVxuXG4gICQod2luZG93KS5yZXNpemUoZnVuY3Rpb24oKXtcblxuICAgIC8vUmVzaXplIHJlY2FsY3VsYXRlXG4gICAgdmFyIHdpbmRvd1dpZHRoID0gJCh3aW5kb3cpLndpZHRoKCk7XG5cbiAgICBpZih3aW5kb3dXaWR0aCA+PSA2ODApe1xuICAgICAgcmVtb3ZlR3JlYXRlc3RIZWlnaHQoc2VsZWN0b3JBcnJheSk7XG4gICAgICBkb2VzRWxlbWVudEV4aXN0V2l0aE11bHRpcGxlKHNlbGVjdG9yQXJyYXkpO1xuICAgIH1cblxuICB9KTtcblxuXG4gICQod2luZG93KS5sb2FkKGZ1bmN0aW9uKCl7XG5cblxuICAgIHZhciB3aW5kb3dXaWR0aCA9ICQod2luZG93KS53aWR0aCgpO1xuXG4gICAgaWYod2luZG93V2lkdGggPj0gNjgwKXtcbiAgICAgIGRvZXNFbGVtZW50RXhpc3RXaXRoTXVsdGlwbGUoc2VsZWN0b3JBcnJheSk7XG4gICAgfVxuXG5cbiAgICBlbnF1aXJlLnJlZ2lzdGVyKFwic2NyZWVuIGFuZCAobWF4LXdpZHRoOjY3OXB4KVwiLCB7XG5cbiAgICAgIC8vIE9QVElPTkFMXG4gICAgICAvLyBJZiBzdXBwbGllZCwgdHJpZ2dlcmVkIHdoZW4gYSBtZWRpYSBxdWVyeSBtYXRjaGVzLlxuICAgICAgbWF0Y2ggOiBmdW5jdGlvbigpIHtcblxuICAgICAgICByZW1vdmVHcmVhdGVzdEhlaWdodChzZWxlY3RvckFycmF5KTtcblxuICAgICAgfSxcblxuICAgICAgLy8gT1BUSU9OQUxcbiAgICAgIC8vIElmIHN1cHBsaWVkLCB0cmlnZ2VyZWQgd2hlbiB0aGUgbWVkaWEgcXVlcnkgdHJhbnNpdGlvbnNcbiAgICAgIC8vICpmcm9tIGEgbWF0Y2hlZCBzdGF0ZSB0byBhbiB1bm1hdGNoZWQgc3RhdGUqLlxuICAgICAgdW5tYXRjaCA6IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIGRvZXNFbGVtZW50RXhpc3RXaXRoTXVsdGlwbGUoc2VsZWN0b3JBcnJheSk7XG5cbiAgICAgIH0sXG5cbiAgICAgIC8vIE9QVElPTkFMXG4gICAgICAvLyBJZiBzdXBwbGllZCwgdHJpZ2dlcmVkIG9uY2UsIHdoZW4gdGhlIGhhbmRsZXIgaXMgcmVnaXN0ZXJlZC5cbiAgICAgIHNldHVwIDogZnVuY3Rpb24oKSB7fSxcblxuICAgICAgLy8gT1BUSU9OQUwsIGRlZmF1bHRzIHRvIGZhbHNlXG4gICAgICAvLyBJZiBzZXQgdG8gdHJ1ZSwgZGVmZXJzIGV4ZWN1dGlvbiBvZiB0aGUgc2V0dXAgZnVuY3Rpb25cbiAgICAgIC8vIHVudGlsIHRoZSBmaXJzdCB0aW1lIHRoZSBtZWRpYSBxdWVyeSBpcyBtYXRjaGVkXG4gICAgICBkZWZlclNldHVwIDogdHJ1ZSxcblxuICAgICAgLy8gT1BUSU9OQUxcbiAgICAgIC8vIElmIHN1cHBsaWVkLCB0cmlnZ2VyZWQgd2hlbiBoYW5kbGVyIGlzIHVucmVnaXN0ZXJlZC5cbiAgICAgIC8vIFBsYWNlIGNsZWFudXAgY29kZSBoZXJlXG4gICAgICBkZXN0cm95IDogZnVuY3Rpb24oKSB7fVxuXG4gICAgfSk7XG5cbiAgfSk7XG5cblxuXG5cblxuXG59KShqUXVlcnkpO1xuIiwiLyohXG4gKiBlbnF1aXJlLmpzIHYyLjEuMiAtIEF3ZXNvbWUgTWVkaWEgUXVlcmllcyBpbiBKYXZhU2NyaXB0XG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQgTmljayBXaWxsaWFtcyAtIGh0dHA6Ly93aWNreS5uaWxsaWEubXMvZW5xdWlyZS5qc1xuICogTGljZW5zZTogTUlUIChodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocClcbiAqL1xuXG4hZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXdpbmRvdy5tYXRjaE1lZGlhO1widW5kZWZpbmVkXCIhPXR5cGVvZiBtb2R1bGUmJm1vZHVsZS5leHBvcnRzP21vZHVsZS5leHBvcnRzPWMoZCk6XCJmdW5jdGlvblwiPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZShmdW5jdGlvbigpe3JldHVybiBiW2FdPWMoZCl9KTpiW2FdPWMoZCl9KFwiZW5xdWlyZVwiLHRoaXMsZnVuY3Rpb24oYSl7XCJ1c2Ugc3RyaWN0XCI7ZnVuY3Rpb24gYihhLGIpe3ZhciBjLGQ9MCxlPWEubGVuZ3RoO2ZvcihkO2U+ZCYmKGM9YihhW2RdLGQpLGMhPT0hMSk7ZCsrKTt9ZnVuY3Rpb24gYyhhKXtyZXR1cm5cIltvYmplY3QgQXJyYXldXCI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KGEpfWZ1bmN0aW9uIGQoYSl7cmV0dXJuXCJmdW5jdGlvblwiPT10eXBlb2YgYX1mdW5jdGlvbiBlKGEpe3RoaXMub3B0aW9ucz1hLCFhLmRlZmVyU2V0dXAmJnRoaXMuc2V0dXAoKX1mdW5jdGlvbiBmKGIsYyl7dGhpcy5xdWVyeT1iLHRoaXMuaXNVbmNvbmRpdGlvbmFsPWMsdGhpcy5oYW5kbGVycz1bXSx0aGlzLm1xbD1hKGIpO3ZhciBkPXRoaXM7dGhpcy5saXN0ZW5lcj1mdW5jdGlvbihhKXtkLm1xbD1hLGQuYXNzZXNzKCl9LHRoaXMubXFsLmFkZExpc3RlbmVyKHRoaXMubGlzdGVuZXIpfWZ1bmN0aW9uIGcoKXtpZighYSl0aHJvdyBuZXcgRXJyb3IoXCJtYXRjaE1lZGlhIG5vdCBwcmVzZW50LCBsZWdhY3kgYnJvd3NlcnMgcmVxdWlyZSBhIHBvbHlmaWxsXCIpO3RoaXMucXVlcmllcz17fSx0aGlzLmJyb3dzZXJJc0luY2FwYWJsZT0hYShcIm9ubHkgYWxsXCIpLm1hdGNoZXN9cmV0dXJuIGUucHJvdG90eXBlPXtzZXR1cDpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5zZXR1cCYmdGhpcy5vcHRpb25zLnNldHVwKCksdGhpcy5pbml0aWFsaXNlZD0hMH0sb246ZnVuY3Rpb24oKXshdGhpcy5pbml0aWFsaXNlZCYmdGhpcy5zZXR1cCgpLHRoaXMub3B0aW9ucy5tYXRjaCYmdGhpcy5vcHRpb25zLm1hdGNoKCl9LG9mZjpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy51bm1hdGNoJiZ0aGlzLm9wdGlvbnMudW5tYXRjaCgpfSxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLmRlc3Ryb3k/dGhpcy5vcHRpb25zLmRlc3Ryb3koKTp0aGlzLm9mZigpfSxlcXVhbHM6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMub3B0aW9ucz09PWF8fHRoaXMub3B0aW9ucy5tYXRjaD09PWF9fSxmLnByb3RvdHlwZT17YWRkSGFuZGxlcjpmdW5jdGlvbihhKXt2YXIgYj1uZXcgZShhKTt0aGlzLmhhbmRsZXJzLnB1c2goYiksdGhpcy5tYXRjaGVzKCkmJmIub24oKX0scmVtb3ZlSGFuZGxlcjpmdW5jdGlvbihhKXt2YXIgYz10aGlzLmhhbmRsZXJzO2IoYyxmdW5jdGlvbihiLGQpe3JldHVybiBiLmVxdWFscyhhKT8oYi5kZXN0cm95KCksIWMuc3BsaWNlKGQsMSkpOnZvaWQgMH0pfSxtYXRjaGVzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubXFsLm1hdGNoZXN8fHRoaXMuaXNVbmNvbmRpdGlvbmFsfSxjbGVhcjpmdW5jdGlvbigpe2IodGhpcy5oYW5kbGVycyxmdW5jdGlvbihhKXthLmRlc3Ryb3koKX0pLHRoaXMubXFsLnJlbW92ZUxpc3RlbmVyKHRoaXMubGlzdGVuZXIpLHRoaXMuaGFuZGxlcnMubGVuZ3RoPTB9LGFzc2VzczpmdW5jdGlvbigpe3ZhciBhPXRoaXMubWF0Y2hlcygpP1wib25cIjpcIm9mZlwiO2IodGhpcy5oYW5kbGVycyxmdW5jdGlvbihiKXtiW2FdKCl9KX19LGcucHJvdG90eXBlPXtyZWdpc3RlcjpmdW5jdGlvbihhLGUsZyl7dmFyIGg9dGhpcy5xdWVyaWVzLGk9ZyYmdGhpcy5icm93c2VySXNJbmNhcGFibGU7cmV0dXJuIGhbYV18fChoW2FdPW5ldyBmKGEsaSkpLGQoZSkmJihlPXttYXRjaDplfSksYyhlKXx8KGU9W2VdKSxiKGUsZnVuY3Rpb24oYil7ZChiKSYmKGI9e21hdGNoOmJ9KSxoW2FdLmFkZEhhbmRsZXIoYil9KSx0aGlzfSx1bnJlZ2lzdGVyOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5xdWVyaWVzW2FdO3JldHVybiBjJiYoYj9jLnJlbW92ZUhhbmRsZXIoYik6KGMuY2xlYXIoKSxkZWxldGUgdGhpcy5xdWVyaWVzW2FdKSksdGhpc319LG5ldyBnfSk7IiwiKGZ1bmN0aW9uICgkKSB7XG5cbiAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7XG5cbiAgICAvLyBNb3ZlIGhlbHAgdGV4dCB1bmRlciB0aGUgYXNzb2NpYXRlZCBmb3JtIGlucHV0IGJ5IG1hdGNoaW5nIHRoZSBpbnB1dCBpZFxuICAgIC8vIHdpdGggdGhlIGhlbHAgdGV4dCB3ZWJmb3JtIGNvbXBvbmVudC4gVGhpcyBjbGFzcyBpcyBjcmVhdGVkIGJ5XG4gICAgLy8gY3VzdG9taXppbmcgdGhlIGlkIG9mIHRoZSBoZWxwIHRleHQgd2ViZm9ybSBjb21wb25lbnQuXG4gICAgJCgnLm5pc3QtZXhwYW5kYWJsZS1oZWxwIGlucHV0JykuZWFjaChcbiAgICAgIGZ1bmN0aW9uKCl7XG4gICAgICAgIHZhciBpbnB1dElEID0gJCh0aGlzKS5hdHRyKFwiaWRcIikucmVwbGFjZSgnZWRpdC1zdWJtaXR0ZWQtJywnJyk7XG4gICAgICAgIHZhciBoZWxwQ2xhc3MgPSBcIndlYmZvcm0tY29tcG9uZW50LS1cIiArIGlucHV0SUQgKyBcIi1oZWxwXCI7XG4gICAgICAgIHZhciBoZWxwRWxlbWVudCA9ICQoJy4nICsgaGVscENsYXNzKS5maXJzdCgpO1xuICAgICAgICBoZWxwRWxlbWVudC5hZGRDbGFzcygnbmlzdC1leHBhbmRhYmxlLWhlbHBfX3RleHQnKS5oaWRlKCk7XG4gICAgICAgICQodGhpcykucGFyZW50KCkuYXBwZW5kKCc8YSBocmVmPVwiI1wiIGNsYXNzPVwibmlzdC1leHBhbmRhYmxlLWhlbHBfX2J1dHRvblwiPjxpIGNsYXNzPVwiZmEgZmEtcXVlc3Rpb24tY2lyY2xlXCI+PHNwYW4gY2xhc3M9XCJlbGVtZW50LWludmlzaWJsZVwiPk1vcmUgaW5mb3JtYXRpb248L3NwYW4+PC9pPjwvYT4nKTtcbiAgICAgICAgJCh0aGlzKS5wYXJlbnQoKS5hcHBlbmQoaGVscEVsZW1lbnQpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICAkKCcubmlzdC1leHBhbmRhYmxlLWhlbHBfX2J1dHRvbicpLmNsaWNrKFxuICAgICAgZnVuY3Rpb24oZSkge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICQodGhpcykudG9nZ2xlQ2xhc3MoJ2lzLW9wZW4nKTtcbiAgICAgICAgLy8gU2hvdy9oaWRlIHRoZSBoZWxwIHRleHQgZm9yIHRoaXMgZWxlbWVudFxuICAgICAgICAkKHRoaXMpLnNpYmxpbmdzKCcubmlzdC1leHBhbmRhYmxlLWhlbHBfX3RleHQnKS5zbGlkZVRvZ2dsZSgpO1xuICAgICAgfVxuICAgICk7XG5cbiAgfSk7XG5cbn0pKGpRdWVyeSk7XG4iLCIoZnVuY3Rpb24gKCQpIHtcblxuICBmdW5jdGlvbiBpbWFnZUNvbnRhaW5lcigpIHtcbiAgICAkKCcubWVkaWEtZWxlbWVudC1jb250YWluZXIsIC5maWxlJykuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgIHZhciBzY3JlZW5JbWFnZSA9ICQodGhpcykuZmluZCgnaW1nJyk7XG5cbiAgICAgIGlmKCh0eXBlb2Ygc2NyZWVuSW1hZ2UgIT0gJ3VuZGVmaW5lZCcpICYmICh0eXBlb2Ygc2NyZWVuSW1hZ2VbMF0gIT0gJ3VuZGVmaW5lZCcpKSB7XG5cbiAgICAgICAgLy8gQ3JlYXRlIG5ldyBvZmZzY3JlZW4gaW1hZ2UgdG8gdGVzdFxuICAgICAgICB2YXIgdGhlSW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgICAgICAgdGhlSW1hZ2Uuc3JjID0gc2NyZWVuSW1hZ2UuYXR0cihcInNyY1wiKTtcblxuICAgICAgICAvLyBHZXQgYWNjdXJhdGUgbWVhc3VyZW1lbnRzIGZyb20gdGhhdC5cbiAgICAgICAgdmFyIGltYWdlV2lkdGggPSB0aGVJbWFnZS53aWR0aDtcbiAgICAgICAgdmFyIGltYWdlSGVpZ2h0ID0gdGhlSW1hZ2UuaGVpZ2h0O1xuXG4gICAgICAgIC8vIEdldCBzY3JlZW4gaW1hZ2Ugd2lkdGggcHJvcGVydHlcbiAgICAgICAgdmFyIHNjcmVlbkltYWdlV2lkdGggPSBzY3JlZW5JbWFnZS5hdHRyKFwid2lkdGhcIik7XG5cbiAgICAgICAgLy8gVXNlIHRoZSBzY3JlZW4gaW1hZ2Ugd2lkdGggcHJvcGVydHkgaWYgaXQgaXMgbGVzcyB0aGFuIHRoZSBhY3R1YWwgd2lkdGhcbiAgICAgICAgaWYoc2NyZWVuSW1hZ2VXaWR0aCAhPSAnMCcgJiYgc2NyZWVuSW1hZ2VXaWR0aCA8IGltYWdlV2lkdGgpIHtcbiAgICAgICAgICBpbWFnZVdpZHRoID0gc2NyZWVuSW1hZ2VXaWR0aDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKGltYWdlV2lkdGggIT0gJzAnKSB7XG4gICAgICAgICAgJCh0aGlzKS5jc3MoIFwid2lkdGhcIiwgaW1hZ2VXaWR0aCArICdweCcgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuXG4gIC8vIFNpemUgaW1hZ2UgY29udGFpbmVyIGxvYWRlZCB2aWEgQWpheFxuICBEcnVwYWwuYmVoYXZpb3JzLmltYWdlQ29udGFpbmVyID0ge1xuICBhdHRhY2g6IGZ1bmN0aW9uIChjb250ZXh0LCBzZXR0aW5ncykge1xuICAgIGltYWdlQ29udGFpbmVyKCk7XG4gIH19O1xuXG4gIC8vIFdhaXQgZm9yIGltYWdlcyB0byBsb2FkIHRvIHJ1blxuICAkKHdpbmRvdykubG9hZChmdW5jdGlvbigpIHtcbiAgICBpbWFnZUNvbnRhaW5lcigpO1xuICB9KTtcblxufSkoalF1ZXJ5KTsiLCJcbihmdW5jdGlvbigkKXskLmZuLmNvbHVtbml6ZT1mdW5jdGlvbihvcHRpb25zKXt0aGlzLmNvbHM9W107dGhpcy5vZmZzZXQ9MDt0aGlzLmJlZm9yZT1bXTt0aGlzLmxhc3RPdGhlcj0wO3RoaXMucHJldk1heD0wO3RoaXMuZGVidWc9MDt0aGlzLnNldENvbHVtblN0YXJ0PW51bGw7dGhpcy5lbGlwc2lzVGV4dD0nJzt2YXIgZGVmYXVsdHM9e3dpZHRoOjQwMCxjb2x1bW5zOmZhbHNlLGJ1aWxkT25jZTpmYWxzZSxvdmVyZmxvdzpmYWxzZSxkb25lRnVuYzpmdW5jdGlvbigpe30sdGFyZ2V0OmZhbHNlLGlnbm9yZUltYWdlTG9hZGluZzp0cnVlLGNvbHVtbkZsb2F0OlwibGVmdFwiLGxhc3ROZXZlclRhbGxlc3Q6ZmFsc2UsYWNjdXJhY3k6ZmFsc2UscHJlY2lzZTpmYWxzZSxtYW51YWxCcmVha3M6ZmFsc2UsY3NzQ2xhc3NQcmVmaXg6XCJcIixlbGlwc2lzVGV4dDonLi4uJyxkZWJ1ZzowfTtvcHRpb25zPSQuZXh0ZW5kKGRlZmF1bHRzLG9wdGlvbnMpO2lmKHR5cGVvZihvcHRpb25zLndpZHRoKT09XCJzdHJpbmdcIil7b3B0aW9ucy53aWR0aD1wYXJzZUludChvcHRpb25zLndpZHRoLDEwKTtpZihpc05hTihvcHRpb25zLndpZHRoKSl7b3B0aW9ucy53aWR0aD1kZWZhdWx0cy53aWR0aDt9fVxuICAgIGlmKHR5cGVvZiBvcHRpb25zLnNldENvbHVtblN0YXJ0PT0nZnVuY3Rpb24nKXt0aGlzLnNldENvbHVtblN0YXJ0PW9wdGlvbnMuc2V0Q29sdW1uU3RhcnQ7fVxuICAgIGlmKHR5cGVvZiBvcHRpb25zLmVsaXBzaXNUZXh0PT0nc3RyaW5nJyl7dGhpcy5lbGlwc2lzVGV4dD1vcHRpb25zLmVsaXBzaXNUZXh0O31cbiAgICBpZihvcHRpb25zLmRlYnVnKXt0aGlzLmRlYnVnPW9wdGlvbnMuZGVidWc7fVxuICAgIGlmKCFvcHRpb25zLnNldFdpZHRoKXtpZihvcHRpb25zLnByZWNpc2Upe29wdGlvbnMuc2V0V2lkdGg9ZnVuY3Rpb24obnVtQ29scyl7cmV0dXJuIDEwMC9udW1Db2xzO307fWVsc2V7b3B0aW9ucy5zZXRXaWR0aD1mdW5jdGlvbihudW1Db2xzKXtyZXR1cm4gTWF0aC5mbG9vcigxMDAvbnVtQ29scyk7fTt9fVxuICAgIGZ1bmN0aW9uIGFwcGVuZFNhZmUoJHRhcmdldCwkZWxlbSl7dHJ5eyR0YXJnZXQuYXBwZW5kKCRlbGVtKTt9Y2F0Y2goZSl7JHRhcmdldFswXS5hcHBlbmRDaGlsZCgkZWxlbVswXSk7fX1cbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyICRpbkJveD1vcHRpb25zLnRhcmdldD8kKG9wdGlvbnMudGFyZ2V0KTokKHRoaXMpO3ZhciBtYXhIZWlnaHQ9JCh0aGlzKS5oZWlnaHQoKTt2YXIgJGNhY2hlPSQoJzxkaXY+PC9kaXY+Jyk7dmFyIGxhc3RXaWR0aD0wO3ZhciBjb2x1bW5pemluZz1mYWxzZTt2YXIgbWFudWFsQnJlYWtzPW9wdGlvbnMubWFudWFsQnJlYWtzO3ZhciBjc3NDbGFzc1ByZWZpeD1kZWZhdWx0cy5jc3NDbGFzc1ByZWZpeDtpZih0eXBlb2Yob3B0aW9ucy5jc3NDbGFzc1ByZWZpeCk9PVwic3RyaW5nXCIpe2Nzc0NsYXNzUHJlZml4PW9wdGlvbnMuY3NzQ2xhc3NQcmVmaXg7fVxuICAgICAgICB2YXIgYWRqdXN0bWVudD0wO2FwcGVuZFNhZmUoJGNhY2hlLCQodGhpcykuY29udGVudHMoKS5jbG9uZSh0cnVlKSk7aWYoIW9wdGlvbnMuaWdub3JlSW1hZ2VMb2FkaW5nJiYhb3B0aW9ucy50YXJnZXQpe2lmKCEkaW5Cb3guZGF0YShcImltYWdlTG9hZGVkXCIpKXskaW5Cb3guZGF0YShcImltYWdlTG9hZGVkXCIsdHJ1ZSk7aWYoJCh0aGlzKS5maW5kKFwiaW1nXCIpLmxlbmd0aD4wKXt2YXIgZnVuYz1mdW5jdGlvbigkaW5Cb3gsJGNhY2hlKXtyZXR1cm4gZnVuY3Rpb24oKXtpZighJGluQm94LmRhdGEoXCJmaXJzdEltYWdlTG9hZGVkXCIpKXskaW5Cb3guZGF0YShcImZpcnN0SW1hZ2VMb2FkZWRcIixcInRydWVcIik7YXBwZW5kU2FmZSgkaW5Cb3guZW1wdHkoKSwkY2FjaGUuY2hpbGRyZW4oKS5jbG9uZSh0cnVlKSk7JGluQm94LmNvbHVtbml6ZShvcHRpb25zKTt9fTt9KCQodGhpcyksJGNhY2hlKTskKHRoaXMpLmZpbmQoXCJpbWdcIikub25lKFwibG9hZFwiLGZ1bmMpOyQodGhpcykuZmluZChcImltZ1wiKS5vbmUoXCJhYm9ydFwiLGZ1bmMpO3JldHVybjt9fX1cbiAgICAgICAgJGluQm94LmVtcHR5KCk7Y29sdW1uaXplSXQoKTtpZighb3B0aW9ucy5idWlsZE9uY2UpeyQod2luZG93KS5yZXNpemUoZnVuY3Rpb24oKXtpZighb3B0aW9ucy5idWlsZE9uY2Upe2lmKCRpbkJveC5kYXRhKFwidGltZW91dFwiKSl7Y2xlYXJUaW1lb3V0KCRpbkJveC5kYXRhKFwidGltZW91dFwiKSk7fVxuICAgICAgICAgICAgJGluQm94LmRhdGEoXCJ0aW1lb3V0XCIsc2V0VGltZW91dChjb2x1bW5pemVJdCwyMDApKTt9fSk7fVxuICAgICAgICBmdW5jdGlvbiBwcmVmaXhUaGVDbGFzc05hbWUoY2xhc3NOYW1lLHdpdGhEb3Qpe3ZhciBkb3Q9d2l0aERvdD9cIi5cIjpcIlwiO2lmKGNzc0NsYXNzUHJlZml4Lmxlbmd0aCl7cmV0dXJuIGRvdCtjc3NDbGFzc1ByZWZpeCtcIi1cIitjbGFzc05hbWU7fVxuICAgICAgICAgICAgcmV0dXJuIGRvdCtjbGFzc05hbWU7fVxuICAgICAgICBmdW5jdGlvbiBjb2x1bW5pemUoJHB1dEluSGVyZSwkcHVsbE91dEhlcmUsJHBhcmVudENvbHVtbix0YXJnZXRIZWlnaHQpe3doaWxlKChtYW51YWxCcmVha3N8fCRwYXJlbnRDb2x1bW4uaGVpZ2h0KCk8dGFyZ2V0SGVpZ2h0KSYmJHB1bGxPdXRIZXJlWzBdLmNoaWxkTm9kZXMubGVuZ3RoKXt2YXIgbm9kZT0kcHVsbE91dEhlcmVbMF0uY2hpbGROb2Rlc1swXTtpZigkKG5vZGUpLmZpbmQocHJlZml4VGhlQ2xhc3NOYW1lKFwiY29sdW1uYnJlYWtcIix0cnVlKSkubGVuZ3RoKXtyZXR1cm47fVxuICAgICAgICAgICAgaWYoJChub2RlKS5oYXNDbGFzcyhwcmVmaXhUaGVDbGFzc05hbWUoXCJjb2x1bW5icmVha1wiKSkpe3JldHVybjt9XG4gICAgICAgICAgICBhcHBlbmRTYWZlKCRwdXRJbkhlcmUsJChub2RlKSk7fVxuICAgICAgICAgICAgaWYoJHB1dEluSGVyZVswXS5jaGlsZE5vZGVzLmxlbmd0aD09PTApcmV0dXJuO3ZhciBraWRzPSRwdXRJbkhlcmVbMF0uY2hpbGROb2Rlczt2YXIgbGFzdEtpZD1raWRzW2tpZHMubGVuZ3RoLTFdOyRwdXRJbkhlcmVbMF0ucmVtb3ZlQ2hpbGQobGFzdEtpZCk7dmFyICRpdGVtPSQobGFzdEtpZCk7aWYoJGl0ZW1bMF0ubm9kZVR5cGU9PTMpe3ZhciBvVGV4dD0kaXRlbVswXS5ub2RlVmFsdWU7dmFyIGNvdW50ZXIyPW9wdGlvbnMud2lkdGgvMTg7aWYob3B0aW9ucy5hY2N1cmFjeSlcbiAgICAgICAgICAgICAgICBjb3VudGVyMj1vcHRpb25zLmFjY3VyYWN5O3ZhciBjb2x1bW5UZXh0O3ZhciBsYXRlc3RUZXh0Tm9kZT1udWxsO3doaWxlKCRwYXJlbnRDb2x1bW4uaGVpZ2h0KCk8dGFyZ2V0SGVpZ2h0JiZvVGV4dC5sZW5ndGgpe3ZhciBpbmRleE9mU3BhY2U9b1RleHQuaW5kZXhPZignICcsY291bnRlcjIpO2lmKGluZGV4T2ZTcGFjZSE9LTEpe2NvbHVtblRleHQ9b1RleHQuc3Vic3RyaW5nKDAsaW5kZXhPZlNwYWNlKTt9ZWxzZXtjb2x1bW5UZXh0PW9UZXh0O31cbiAgICAgICAgICAgICAgICBsYXRlc3RUZXh0Tm9kZT1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjb2x1bW5UZXh0KTthcHBlbmRTYWZlKCRwdXRJbkhlcmUsJChsYXRlc3RUZXh0Tm9kZSkpO2lmKG9UZXh0Lmxlbmd0aD5jb3VudGVyMiYmaW5kZXhPZlNwYWNlIT0tMSl7b1RleHQ9b1RleHQuc3Vic3RyaW5nKGluZGV4T2ZTcGFjZSk7fWVsc2V7b1RleHQ9XCJcIjt9fVxuICAgICAgICAgICAgICAgIGlmKCRwYXJlbnRDb2x1bW4uaGVpZ2h0KCk+PXRhcmdldEhlaWdodCYmbGF0ZXN0VGV4dE5vZGUhPT1udWxsKXskcHV0SW5IZXJlWzBdLnJlbW92ZUNoaWxkKGxhdGVzdFRleHROb2RlKTtvVGV4dD1sYXRlc3RUZXh0Tm9kZS5ub2RlVmFsdWUrb1RleHQ7fVxuICAgICAgICAgICAgICAgIGlmKG9UZXh0Lmxlbmd0aCl7JGl0ZW1bMF0ubm9kZVZhbHVlPW9UZXh0O31lbHNle3JldHVybiBmYWxzZTt9fVxuICAgICAgICAgICAgaWYoJHB1bGxPdXRIZXJlLmNvbnRlbnRzKCkubGVuZ3RoKXskcHVsbE91dEhlcmUucHJlcGVuZCgkaXRlbSk7fWVsc2V7YXBwZW5kU2FmZSgkcHVsbE91dEhlcmUsJGl0ZW0pO31cbiAgICAgICAgICAgIHJldHVybiAkaXRlbVswXS5ub2RlVHlwZT09Mzt9XG4gICAgICAgIGZ1bmN0aW9uIHNwbGl0KCRwdXRJbkhlcmUsJHB1bGxPdXRIZXJlLCRwYXJlbnRDb2x1bW4sdGFyZ2V0SGVpZ2h0KXtpZigkcHV0SW5IZXJlLmNvbnRlbnRzKFwiOmxhc3RcIikuZmluZChwcmVmaXhUaGVDbGFzc05hbWUoXCJjb2x1bW5icmVha1wiLHRydWUpKS5sZW5ndGgpe3JldHVybjt9XG4gICAgICAgICAgICBpZigkcHV0SW5IZXJlLmNvbnRlbnRzKFwiOmxhc3RcIikuaGFzQ2xhc3MocHJlZml4VGhlQ2xhc3NOYW1lKFwiY29sdW1uYnJlYWtcIikpKXtyZXR1cm47fVxuICAgICAgICAgICAgaWYoJHB1bGxPdXRIZXJlLmNvbnRlbnRzKCkubGVuZ3RoKXt2YXIgJGNsb25lTWU9JHB1bGxPdXRIZXJlLmNvbnRlbnRzKFwiOmZpcnN0XCIpO2lmKHR5cGVvZiAkY2xvbmVNZS5nZXQoMCk9PSd1bmRlZmluZWQnfHwkY2xvbmVNZS5nZXQoMCkubm9kZVR5cGUhPTEpcmV0dXJuO3ZhciAkY2xvbmU9JGNsb25lTWUuY2xvbmUodHJ1ZSk7aWYoJGNsb25lTWUuaGFzQ2xhc3MocHJlZml4VGhlQ2xhc3NOYW1lKFwiY29sdW1uYnJlYWtcIikpKXthcHBlbmRTYWZlKCRwdXRJbkhlcmUsJGNsb25lKTskY2xvbmVNZS5yZW1vdmUoKTt9ZWxzZSBpZihtYW51YWxCcmVha3Mpe2FwcGVuZFNhZmUoJHB1dEluSGVyZSwkY2xvbmUpOyRjbG9uZU1lLnJlbW92ZSgpO31lbHNlIGlmKCRjbG9uZS5nZXQoMCkubm9kZVR5cGU9PTEmJiEkY2xvbmUuaGFzQ2xhc3MocHJlZml4VGhlQ2xhc3NOYW1lKFwiZG9udGVuZFwiKSkpe2FwcGVuZFNhZmUoJHB1dEluSGVyZSwkY2xvbmUpO2lmKCRjbG9uZS5pcyhcImltZ1wiKSYmJHBhcmVudENvbHVtbi5oZWlnaHQoKTx0YXJnZXRIZWlnaHQrMjApeyRjbG9uZU1lLnJlbW92ZSgpO31lbHNlIGlmKCRjbG9uZU1lLmhhc0NsYXNzKHByZWZpeFRoZUNsYXNzTmFtZShcImRvbnRzcGxpdFwiKSkmJiRwYXJlbnRDb2x1bW4uaGVpZ2h0KCk8dGFyZ2V0SGVpZ2h0KzIwKXskY2xvbmVNZS5yZW1vdmUoKTt9ZWxzZSBpZigkY2xvbmUuaXMoXCJpbWdcIil8fCRjbG9uZU1lLmhhc0NsYXNzKHByZWZpeFRoZUNsYXNzTmFtZShcImRvbnRzcGxpdFwiKSkpeyRjbG9uZS5yZW1vdmUoKTt9ZWxzZXskY2xvbmUuZW1wdHkoKTtpZighY29sdW1uaXplKCRjbG9uZSwkY2xvbmVNZSwkcGFyZW50Q29sdW1uLHRhcmdldEhlaWdodCkpeyRjbG9uZU1lLmFkZENsYXNzKHByZWZpeFRoZUNsYXNzTmFtZShcInNwbGl0XCIpKTtpZigkY2xvbmVNZS5nZXQoMCkudGFnTmFtZT09J09MJyl7dmFyIHN0YXJ0V2l0aD0kY2xvbmUuZ2V0KDApLmNoaWxkRWxlbWVudENvdW50KyRjbG9uZS5nZXQoMCkuc3RhcnQ7JGNsb25lTWUuYXR0cignc3RhcnQnLHN0YXJ0V2l0aCsxKTt9XG4gICAgICAgICAgICAgICAgaWYoJGNsb25lTWUuY2hpbGRyZW4oKS5sZW5ndGgpe3NwbGl0KCRjbG9uZSwkY2xvbmVNZSwkcGFyZW50Q29sdW1uLHRhcmdldEhlaWdodCk7fX1lbHNleyRjbG9uZU1lLmFkZENsYXNzKHByZWZpeFRoZUNsYXNzTmFtZShcInNwbGl0XCIpKTt9XG4gICAgICAgICAgICAgICAgaWYoJGNsb25lLmdldCgwKS5jaGlsZE5vZGVzLmxlbmd0aD09PTApeyRjbG9uZS5yZW1vdmUoKTskY2xvbmVNZS5yZW1vdmVDbGFzcyhwcmVmaXhUaGVDbGFzc05hbWUoXCJzcGxpdFwiKSk7fWVsc2UgaWYoJGNsb25lLmdldCgwKS5jaGlsZE5vZGVzLmxlbmd0aD09MSl7dmFyIG9ubHlOb2RlPSRjbG9uZS5nZXQoMCkuY2hpbGROb2Rlc1swXTtpZihvbmx5Tm9kZS5ub2RlVHlwZT09Myl7dmFyIHdoaXRlc3BhY2U9L1xccy87dmFyIHN0cj1vbmx5Tm9kZS5ub2RlVmFsdWU7aWYod2hpdGVzcGFjZS50ZXN0KHN0cikpeyRjbG9uZS5yZW1vdmUoKTskY2xvbmVNZS5yZW1vdmVDbGFzcyhwcmVmaXhUaGVDbGFzc05hbWUoXCJzcGxpdFwiKSk7fX19fX19fVxuICAgICAgICBmdW5jdGlvbiBzaW5nbGVDb2x1bW5pemVJdCgpe2lmKCRpbkJveC5kYXRhKFwiY29sdW1uaXplZFwiKSYmJGluQm94LmNoaWxkcmVuKCkubGVuZ3RoPT0xKXtyZXR1cm47fVxuICAgICAgICAgICAgJGluQm94LmRhdGEoXCJjb2x1bW5pemVkXCIsdHJ1ZSk7JGluQm94LmRhdGEoXCJjb2x1bW5pemluZ1wiLHRydWUpOyRpbkJveC5lbXB0eSgpOyRpbkJveC5hcHBlbmQoJChcIjxkaXYgY2xhc3M9J1wiXG4gICAgICAgICAgICAgICAgK3ByZWZpeFRoZUNsYXNzTmFtZShcImZpcnN0XCIpK1wiIFwiXG4gICAgICAgICAgICAgICAgK3ByZWZpeFRoZUNsYXNzTmFtZShcImxhc3RcIikrXCIgXCJcbiAgICAgICAgICAgICAgICArcHJlZml4VGhlQ2xhc3NOYW1lKFwiY29sdW1uXCIpK1wiIFwiXG4gICAgICAgICAgICAgICAgK1wiJyBzdHlsZT0nd2lkdGg6MTAwJTsgZmxvYXQ6IFwiK29wdGlvbnMuY29sdW1uRmxvYXQrXCI7Jz48L2Rpdj5cIikpOyRjb2w9JGluQm94LmNoaWxkcmVuKCkuZXEoJGluQm94LmNoaWxkcmVuKCkubGVuZ3RoLTEpOyRkZXN0cm95YWJsZT0kY2FjaGUuY2xvbmUodHJ1ZSk7aWYob3B0aW9ucy5vdmVyZmxvdyl7dGFyZ2V0SGVpZ2h0PW9wdGlvbnMub3ZlcmZsb3cuaGVpZ2h0O2NvbHVtbml6ZSgkY29sLCRkZXN0cm95YWJsZSwkY29sLHRhcmdldEhlaWdodCk7aWYoISRkZXN0cm95YWJsZS5jb250ZW50cygpLmZpbmQoXCI6Zmlyc3QtY2hpbGRcIikuaGFzQ2xhc3MocHJlZml4VGhlQ2xhc3NOYW1lKFwiZG9udGVuZFwiKSkpe3NwbGl0KCRjb2wsJGRlc3Ryb3lhYmxlLCRjb2wsdGFyZ2V0SGVpZ2h0KTt9XG4gICAgICAgICAgICAgICAgd2hpbGUoJGNvbC5jb250ZW50cyhcIjpsYXN0XCIpLmxlbmd0aCYmY2hlY2tEb250RW5kQ29sdW1uKCRjb2wuY29udGVudHMoXCI6bGFzdFwiKS5nZXQoMCkpKXt2YXIgJGxhc3RLaWQ9JGNvbC5jb250ZW50cyhcIjpsYXN0XCIpOyRsYXN0S2lkLnJlbW92ZSgpOyRkZXN0cm95YWJsZS5wcmVwZW5kKCRsYXN0S2lkKTt9XG4gICAgICAgICAgICAgICAgdmFyIGh0bWw9XCJcIjt2YXIgZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0RJVicpO3doaWxlKCRkZXN0cm95YWJsZVswXS5jaGlsZE5vZGVzLmxlbmd0aD4wKXt2YXIga2lkPSRkZXN0cm95YWJsZVswXS5jaGlsZE5vZGVzWzBdO2lmKGtpZC5hdHRyaWJ1dGVzKXtmb3IodmFyIGk9MDtpPGtpZC5hdHRyaWJ1dGVzLmxlbmd0aDtpKyspe2lmKGtpZC5hdHRyaWJ1dGVzW2ldLm5vZGVOYW1lLmluZGV4T2YoXCJqUXVlcnlcIik9PT0wKXtraWQucmVtb3ZlQXR0cmlidXRlKGtpZC5hdHRyaWJ1dGVzW2ldLm5vZGVOYW1lKTt9fX1cbiAgICAgICAgICAgICAgICAgICAgZGl2LmlubmVySFRNTD1cIlwiO2Rpdi5hcHBlbmRDaGlsZCgkZGVzdHJveWFibGVbMF0uY2hpbGROb2Rlc1swXSk7aHRtbCs9ZGl2LmlubmVySFRNTDt9XG4gICAgICAgICAgICAgICAgdmFyIG92ZXJmbG93PSQob3B0aW9ucy5vdmVyZmxvdy5pZClbMF07b3ZlcmZsb3cuaW5uZXJIVE1MPWh0bWw7fWVsc2V7YXBwZW5kU2FmZSgkY29sLCRkZXN0cm95YWJsZS5jb250ZW50cygpKTt9XG4gICAgICAgICAgICAkaW5Cb3guZGF0YShcImNvbHVtbml6aW5nXCIsZmFsc2UpO2lmKG9wdGlvbnMub3ZlcmZsb3cmJm9wdGlvbnMub3ZlcmZsb3cuZG9uZUZ1bmMpe29wdGlvbnMub3ZlcmZsb3cuZG9uZUZ1bmMoKTt9XG4gICAgICAgICAgICBvcHRpb25zLmRvbmVGdW5jKCk7fVxuICAgICAgICBmdW5jdGlvbiBjaGVja0RvbnRFbmRDb2x1bW4oZG9tKXtpZihkb20ubm9kZVR5cGU9PTMpe2lmKC9eXFxzKyQvLnRlc3QoZG9tLm5vZGVWYWx1ZSkpe2lmKCFkb20ucHJldmlvdXNTaWJsaW5nKXJldHVybiBmYWxzZTtyZXR1cm4gY2hlY2tEb250RW5kQ29sdW1uKGRvbS5wcmV2aW91c1NpYmxpbmcpO31cbiAgICAgICAgICAgIHJldHVybiBmYWxzZTt9XG4gICAgICAgICAgICBpZihkb20ubm9kZVR5cGUhPTEpcmV0dXJuIGZhbHNlO2lmKCQoZG9tKS5oYXNDbGFzcyhwcmVmaXhUaGVDbGFzc05hbWUoXCJkb250ZW5kXCIpKSlyZXR1cm4gdHJ1ZTtpZihkb20uY2hpbGROb2Rlcy5sZW5ndGg9PT0wKXJldHVybiBmYWxzZTtyZXR1cm4gY2hlY2tEb250RW5kQ29sdW1uKGRvbS5jaGlsZE5vZGVzW2RvbS5jaGlsZE5vZGVzLmxlbmd0aC0xXSk7fVxuICAgICAgICBmdW5jdGlvbiBjb2x1bW5pemVJdCgpe2FkanVzdG1lbnQ9MDtpZihsYXN0V2lkdGg9PSRpbkJveC53aWR0aCgpKXJldHVybjtsYXN0V2lkdGg9JGluQm94LndpZHRoKCk7dmFyIG51bUNvbHM9TWF0aC5yb3VuZCgkaW5Cb3gud2lkdGgoKS9vcHRpb25zLndpZHRoKTt2YXIgb3B0aW9uV2lkdGg9b3B0aW9ucy53aWR0aDt2YXIgb3B0aW9uSGVpZ2h0PW9wdGlvbnMuaGVpZ2h0O2lmKG9wdGlvbnMuY29sdW1ucyludW1Db2xzPW9wdGlvbnMuY29sdW1ucztpZihtYW51YWxCcmVha3Mpe251bUNvbHM9JGNhY2hlLmZpbmQocHJlZml4VGhlQ2xhc3NOYW1lKFwiY29sdW1uYnJlYWtcIix0cnVlKSkubGVuZ3RoKzE7b3B0aW9uV2lkdGg9ZmFsc2U7fVxuICAgICAgICAgICAgaWYobnVtQ29sczw9MSl7cmV0dXJuIHNpbmdsZUNvbHVtbml6ZUl0KCk7fVxuICAgICAgICAgICAgaWYoJGluQm94LmRhdGEoXCJjb2x1bW5pemluZ1wiKSlyZXR1cm47JGluQm94LmRhdGEoXCJjb2x1bW5pemVkXCIsdHJ1ZSk7JGluQm94LmRhdGEoXCJjb2x1bW5pemluZ1wiLHRydWUpOyRpbkJveC5lbXB0eSgpOyRpbkJveC5hcHBlbmQoJChcIjxkaXYgc3R5bGU9J3dpZHRoOlwiK29wdGlvbnMuc2V0V2lkdGgobnVtQ29scykrXCIlOyBmbG9hdDogXCIrb3B0aW9ucy5jb2x1bW5GbG9hdCtcIjsnPjwvZGl2PlwiKSk7JGNvbD0kaW5Cb3guY2hpbGRyZW4oXCI6bGFzdFwiKTthcHBlbmRTYWZlKCRjb2wsJGNhY2hlLmNsb25lKCkpO21heEhlaWdodD0kY29sLmhlaWdodCgpOyRpbkJveC5lbXB0eSgpO3ZhciB0YXJnZXRIZWlnaHQ9bWF4SGVpZ2h0L251bUNvbHM7dmFyIGZpcnN0VGltZT10cnVlO3ZhciBtYXhMb29wcz0zO3ZhciBzY3JvbGxIb3Jpem9udGFsbHk9ZmFsc2U7aWYob3B0aW9ucy5vdmVyZmxvdyl7bWF4TG9vcHM9MTt0YXJnZXRIZWlnaHQ9b3B0aW9ucy5vdmVyZmxvdy5oZWlnaHQ7fWVsc2UgaWYob3B0aW9uSGVpZ2h0JiZvcHRpb25XaWR0aCl7bWF4TG9vcHM9MTt0YXJnZXRIZWlnaHQ9b3B0aW9uSGVpZ2h0O3Njcm9sbEhvcml6b250YWxseT10cnVlO31cbiAgICAgICAgICAgIGZvcih2YXIgbG9vcENvdW50PTA7bG9vcENvdW50PG1heExvb3BzJiZsb29wQ291bnQ8MjA7bG9vcENvdW50KyspeyRpbkJveC5lbXB0eSgpO3ZhciAkZGVzdHJveWFibGUsY2xhc3NOYW1lLCRjb2wsJGxhc3RLaWQ7dHJ5eyRkZXN0cm95YWJsZT0kY2FjaGUuY2xvbmUodHJ1ZSk7fWNhdGNoKGUpeyRkZXN0cm95YWJsZT0kY2FjaGUuY2xvbmUoKTt9XG4gICAgICAgICAgICAgICAgJGRlc3Ryb3lhYmxlLmNzcyhcInZpc2liaWxpdHlcIixcImhpZGRlblwiKTtmb3IodmFyIGk9MDtpPG51bUNvbHM7aSsrKXtjbGFzc05hbWU9KGk9PT0wKT9wcmVmaXhUaGVDbGFzc05hbWUoXCJmaXJzdFwiKTpcIlwiO2NsYXNzTmFtZSs9XCIgXCIrcHJlZml4VGhlQ2xhc3NOYW1lKFwiY29sdW1uXCIpO2NsYXNzTmFtZT0oaT09bnVtQ29scy0xKT8ocHJlZml4VGhlQ2xhc3NOYW1lKFwibGFzdFwiKStcIiBcIitjbGFzc05hbWUpOmNsYXNzTmFtZTskaW5Cb3guYXBwZW5kKCQoXCI8ZGl2IGNsYXNzPSdcIitjbGFzc05hbWUrXCInIHN0eWxlPSd3aWR0aDpcIitvcHRpb25zLnNldFdpZHRoKG51bUNvbHMpK1wiJTsgZmxvYXQ6IFwiK29wdGlvbnMuY29sdW1uRmxvYXQrXCI7Jz48L2Rpdj5cIikpO31cbiAgICAgICAgICAgICAgICBpPTA7d2hpbGUoaTxudW1Db2xzLShvcHRpb25zLm92ZXJmbG93PzA6MSl8fHNjcm9sbEhvcml6b250YWxseSYmJGRlc3Ryb3lhYmxlLmNvbnRlbnRzKCkubGVuZ3RoKXtpZigkaW5Cb3guY2hpbGRyZW4oKS5sZW5ndGg8PWkpeyRpbkJveC5hcHBlbmQoJChcIjxkaXYgY2xhc3M9J1wiK2NsYXNzTmFtZStcIicgc3R5bGU9J3dpZHRoOlwiK29wdGlvbnMuc2V0V2lkdGgobnVtQ29scykrXCIlOyBmbG9hdDogXCIrb3B0aW9ucy5jb2x1bW5GbG9hdCtcIjsnPjwvZGl2PlwiKSk7fVxuICAgICAgICAgICAgICAgICAgICAkY29sPSRpbkJveC5jaGlsZHJlbigpLmVxKGkpO2lmKHNjcm9sbEhvcml6b250YWxseSl7JGNvbC53aWR0aChvcHRpb25XaWR0aCtcInB4XCIpO31cbiAgICAgICAgICAgICAgICAgICAgY29sdW1uaXplKCRjb2wsJGRlc3Ryb3lhYmxlLCRjb2wsdGFyZ2V0SGVpZ2h0KTtzcGxpdCgkY29sLCRkZXN0cm95YWJsZSwkY29sLHRhcmdldEhlaWdodCk7d2hpbGUoJGNvbC5jb250ZW50cyhcIjpsYXN0XCIpLmxlbmd0aCYmY2hlY2tEb250RW5kQ29sdW1uKCRjb2wuY29udGVudHMoXCI6bGFzdFwiKS5nZXQoMCkpKXskbGFzdEtpZD0kY29sLmNvbnRlbnRzKFwiOmxhc3RcIik7JGxhc3RLaWQucmVtb3ZlKCk7JGRlc3Ryb3lhYmxlLnByZXBlbmQoJGxhc3RLaWQpO31cbiAgICAgICAgICAgICAgICAgICAgaSsrO2lmKCRjb2wuY29udGVudHMoKS5sZW5ndGg9PT0wJiYkZGVzdHJveWFibGUuY29udGVudHMoKS5sZW5ndGgpeyRjb2wuYXBwZW5kKCRkZXN0cm95YWJsZS5jb250ZW50cyhcIjpmaXJzdFwiKSk7fWVsc2UgaWYoaT09bnVtQ29scy0ob3B0aW9ucy5vdmVyZmxvdz8wOjEpJiYhb3B0aW9ucy5vdmVyZmxvdyl7aWYoJGRlc3Ryb3lhYmxlLmZpbmQocHJlZml4VGhlQ2xhc3NOYW1lKFwiY29sdW1uYnJlYWtcIix0cnVlKSkubGVuZ3RoKXtudW1Db2xzKys7fX19XG4gICAgICAgICAgICAgICAgaWYob3B0aW9ucy5vdmVyZmxvdyYmIXNjcm9sbEhvcml6b250YWxseSl7dmFyIElFNj1mYWxzZTt2YXIgSUU3PShkb2N1bWVudC5hbGwpJiYobmF2aWdhdG9yLmFwcFZlcnNpb24uaW5kZXhPZihcIk1TSUUgNy5cIikhPS0xKTtpZihJRTZ8fElFNyl7dmFyIGh0bWw9XCJcIjt2YXIgZGl2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ0RJVicpO3doaWxlKCRkZXN0cm95YWJsZVswXS5jaGlsZE5vZGVzLmxlbmd0aD4wKXt2YXIga2lkPSRkZXN0cm95YWJsZVswXS5jaGlsZE5vZGVzWzBdO2ZvcihpPTA7aTxraWQuYXR0cmlidXRlcy5sZW5ndGg7aSsrKXtpZihraWQuYXR0cmlidXRlc1tpXS5ub2RlTmFtZS5pbmRleE9mKFwialF1ZXJ5XCIpPT09MCl7a2lkLnJlbW92ZUF0dHJpYnV0ZShraWQuYXR0cmlidXRlc1tpXS5ub2RlTmFtZSk7fX1cbiAgICAgICAgICAgICAgICAgICAgZGl2LmlubmVySFRNTD1cIlwiO2Rpdi5hcHBlbmRDaGlsZCgkZGVzdHJveWFibGVbMF0uY2hpbGROb2Rlc1swXSk7aHRtbCs9ZGl2LmlubmVySFRNTDt9XG4gICAgICAgICAgICAgICAgICAgIHZhciBvdmVyZmxvdz0kKG9wdGlvbnMub3ZlcmZsb3cuaWQpWzBdO292ZXJmbG93LmlubmVySFRNTD1odG1sO31lbHNleyQob3B0aW9ucy5vdmVyZmxvdy5pZCkuZW1wdHkoKS5hcHBlbmQoJGRlc3Ryb3lhYmxlLmNvbnRlbnRzKCkuY2xvbmUodHJ1ZSkpO319ZWxzZSBpZighc2Nyb2xsSG9yaXpvbnRhbGx5KXskY29sPSRpbkJveC5jaGlsZHJlbigpLmVxKCRpbkJveC5jaGlsZHJlbigpLmxlbmd0aC0xKTskZGVzdHJveWFibGUuY29udGVudHMoKS5lYWNoKGZ1bmN0aW9uKCl7JGNvbC5hcHBlbmQoJCh0aGlzKSk7fSk7dmFyIGFmdGVySD0kY29sLmhlaWdodCgpO3ZhciBkaWZmPWFmdGVySC10YXJnZXRIZWlnaHQ7dmFyIHRvdGFsSD0wO3ZhciBtaW49MTAwMDAwMDA7dmFyIG1heD0wO3ZhciBsYXN0SXNNYXg9ZmFsc2U7dmFyIG51bWJlck9mQ29sdW1uc1RoYXREb250RW5kSW5BQ29sdW1uQnJlYWs9MDskaW5Cb3guY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKCRpbkJveCl7cmV0dXJuIGZ1bmN0aW9uKCRpdGVtKXt2YXIgJGNvbD0kaW5Cb3guY2hpbGRyZW4oKS5lcSgkaXRlbSk7dmFyIGVuZHNJbkJyZWFrPSRjb2wuY2hpbGRyZW4oXCI6bGFzdFwiKS5maW5kKHByZWZpeFRoZUNsYXNzTmFtZShcImNvbHVtbmJyZWFrXCIsdHJ1ZSkpLmxlbmd0aDtpZighZW5kc0luQnJlYWspe3ZhciBoPSRjb2wuaGVpZ2h0KCk7bGFzdElzTWF4PWZhbHNlO3RvdGFsSCs9aDtpZihoPm1heCl7bWF4PWg7bGFzdElzTWF4PXRydWU7fVxuICAgICAgICAgICAgICAgICAgICBpZihoPG1pbiltaW49aDtudW1iZXJPZkNvbHVtbnNUaGF0RG9udEVuZEluQUNvbHVtbkJyZWFrKys7fX07fSgkaW5Cb3gpKTt2YXIgYXZnSD10b3RhbEgvbnVtYmVyT2ZDb2x1bW5zVGhhdERvbnRFbmRJbkFDb2x1bW5CcmVhaztpZih0b3RhbEg9PT0wKXtsb29wQ291bnQ9bWF4TG9vcHM7fWVsc2UgaWYob3B0aW9ucy5sYXN0TmV2ZXJUYWxsZXN0JiZsYXN0SXNNYXgpe2FkanVzdG1lbnQrPTU7dGFyZ2V0SGVpZ2h0PXRhcmdldEhlaWdodCs1O2lmKGxvb3BDb3VudD09bWF4TG9vcHMtMSltYXhMb29wcysrO31lbHNlIGlmKG1heC1taW4+MzApe3RhcmdldEhlaWdodD1hdmdIKzMwO31lbHNlIGlmKE1hdGguYWJzKGF2Z0gtdGFyZ2V0SGVpZ2h0KT4yMCl7dGFyZ2V0SGVpZ2h0PWF2Z0g7fWVsc2V7bG9vcENvdW50PW1heExvb3BzO319ZWxzZXskaW5Cb3guY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKGkpeyRjb2w9JGluQm94LmNoaWxkcmVuKCkuZXEoaSk7JGNvbC53aWR0aChvcHRpb25XaWR0aCtcInB4XCIpO2lmKGk9PT0wKXskY29sLmFkZENsYXNzKHByZWZpeFRoZUNsYXNzTmFtZShcImZpcnN0XCIpKTt9ZWxzZSBpZihpPT0kaW5Cb3guY2hpbGRyZW4oKS5sZW5ndGgtMSl7JGNvbC5hZGRDbGFzcyhwcmVmaXhUaGVDbGFzc05hbWUoXCJsYXN0XCIpKTt9ZWxzZXskY29sLnJlbW92ZUNsYXNzKHByZWZpeFRoZUNsYXNzTmFtZShcImZpcnN0XCIpKTskY29sLnJlbW92ZUNsYXNzKHByZWZpeFRoZUNsYXNzTmFtZShcImxhc3RcIikpO319KTskaW5Cb3gud2lkdGgoJGluQm94LmNoaWxkcmVuKCkubGVuZ3RoKm9wdGlvbldpZHRoK1wicHhcIik7fVxuICAgICAgICAgICAgICAgICRpbkJveC5hcHBlbmQoJChcIjxiciBzdHlsZT0nY2xlYXI6Ym90aDsnPlwiKSk7fVxuICAgICAgICAgICAgJGluQm94LmZpbmQocHJlZml4VGhlQ2xhc3NOYW1lKFwiY29sdW1uXCIsdHJ1ZSkpLmZpbmQoXCI6Zmlyc3RcIitwcmVmaXhUaGVDbGFzc05hbWUoXCJyZW1vdmVpZmZpcnN0XCIsdHJ1ZSkpLnJlbW92ZSgpOyRpbkJveC5maW5kKHByZWZpeFRoZUNsYXNzTmFtZShcImNvbHVtblwiLHRydWUpKS5maW5kKCc6bGFzdCcrcHJlZml4VGhlQ2xhc3NOYW1lKFwicmVtb3ZlaWZsYXN0XCIsdHJ1ZSkpLnJlbW92ZSgpOyRpbkJveC5maW5kKHByZWZpeFRoZUNsYXNzTmFtZShcInNwbGl0XCIsdHJ1ZSkpLmZpbmQoXCI6Zmlyc3RcIitwcmVmaXhUaGVDbGFzc05hbWUoXCJyZW1vdmVpZmZpcnN0XCIsdHJ1ZSkpLnJlbW92ZSgpOyRpbkJveC5maW5kKHByZWZpeFRoZUNsYXNzTmFtZShcInNwbGl0XCIsdHJ1ZSkpLmZpbmQoJzpsYXN0JytwcmVmaXhUaGVDbGFzc05hbWUoXCJyZW1vdmVpZmxhc3RcIix0cnVlKSkucmVtb3ZlKCk7JGluQm94LmRhdGEoXCJjb2x1bW5pemluZ1wiLGZhbHNlKTtpZihvcHRpb25zLm92ZXJmbG93KXtvcHRpb25zLm92ZXJmbG93LmRvbmVGdW5jKCk7fVxuICAgICAgICAgICAgb3B0aW9ucy5kb25lRnVuYygpO319KTt9OyQuZm4ucmVudW1iZXJCeUpTPWZ1bmN0aW9uKCRzZWFyY2hUYWcsJGNvbG5vLCR0YXJnZXRJZCwkdGFyZ2V0Q2xhc3Mpe3RoaXMuc2V0TGlzdD1mdW5jdGlvbigkY29scywkbGlzdCwkdGFnMSl7dmFyICRwYXJlbnRzPXRoaXMuYmVmb3JlLnBhcmVudHMoKTt2YXIgJHJlc3Q7JHJlc3Q9JCgkY29sc1t0aGlzLm9mZnNldC0xXSkuZmluZCgnPionKTtpZigoJHJlc3QubGFzdCgpKVswXS50YWdOYW1lIT0kdGFnMS50b1VwcGVyQ2FzZSgpKXtpZih0aGlzLmRlYnVnKXtjb25zb2xlLmxvZyhcIkxhc3QgaXRlbSBpbiBwcmV2aW91cyBjb2x1bW4sIGlzbid0IGEgbGlzdC4uLlwiKTt9XG4gICAgcmV0dXJuIDA7fVxuICAgICRyZXN0PSRyZXN0Lmxlbmd0aDt2YXIgJHRpbnQ9MTtpZih0aGlzLmxhc3RPdGhlcjw9MCl7JHRpbnQ9dGhpcy5iZWZvcmUuY2hpbGRyZW4oKS5sZW5ndGgrMTt9ZWxzZXskdGludD0kKCRwYXJlbnRzW3RoaXMubGFzdE90aGVyXSkuY2hpbGRyZW4oKS5sZW5ndGgrMTt9XG4gICAgaWYoJCgkY29sc1t0aGlzLm9mZnNldF0pLmZpbmQoJHRhZzErJzpmaXJzdCBsaS5zcGxpdCcpLmxlbmd0aCl7dmFyICR3aGVyZUVsaXBzaXM9JCgkY29sc1t0aGlzLm9mZnNldC0xXSkuZmluZCgkdGFnMSsnOmxhc3QgbGk6bGFzdCcpO2lmKHRoaXMuZWxpcHNpc1RleHQ9PT0nJ3x8JCgkY29sc1t0aGlzLm9mZnNldC0xXSkuZmluZCgkdGFnMSsnOmxhc3QgfiBkaXYnKS5sZW5ndGh8fCQoJGNvbHNbdGhpcy5vZmZzZXQtMV0pLmZpbmQoJHRhZzErJzpsYXN0IH4gcCcpLmxlbmd0aCl7O31lbHNle2lmKCQoJHdoZXJlRWxpcHNpcykuZmluZCgndWwsIG9sLCBkbCcpLmxlbmd0aD09MCl7dmFyICR0eHQ9JHdoZXJlRWxpcHNpcy5sYXN0KCkudGV4dCgpO3ZhciAkbGVuPSR0eHQubGVuZ3RoO2lmKCR0eHQuc3Vic3RyaW5nKCRsZW4tMSk9PSc7Jyl7aWYoJHR4dC5zdWJzdHJpbmcoJGxlbi00KSE9dGhpcy5lbGlwc2lzVGV4dCsnOycpeyR0eHQ9JHR4dC5zdWJzdHJpbmcoMCwkbGVuLTEpK3RoaXMuZWxpcHNpc1RleHQrJzsnO319ZWxzZXtpZigkdHh0LnN1YnN0cmluZygkbGVuLTMpIT10aGlzLmVsaXBzaXNUZXh0KXskdHh0Kz10aGlzLmVsaXBzaXNUZXh0O319XG4gICAgICAgICR3aGVyZUVsaXBzaXMubGFzdCgpLnRleHQoJHR4dCk7fX1cbiAgICAgICAgaWYoJCgkY29sc1t0aGlzLm9mZnNldF0pLmZpbmQoJHRhZzErJzpmaXJzdCA+bGkuc3BsaXQgPicrJHRhZzEpLmxlbmd0aD09MCl7JHRpbnQtLTt9fVxuICAgIGlmKCRyZXN0PT0xKXskdGludCs9dGhpcy5wcmV2TWF4O31cbiAgICBpZih0aGlzLm5lc3Q+MSl7aWYodGhpcy5kZWJ1Zyl7Y29uc29sZS5sb2coXCJTdXBwb3NlZCB0byBiZSBhIG5lc3RlZCBsaXN0Li4uZGVjclwiKTt9XG4gICAgICAgICR0aW50LS07dmFyICR0dD0kKCRjb2xzW3RoaXMub2Zmc2V0LTFdKS5maW5kKCR0YWcxKyc6Zmlyc3QgbGkuc3BsaXQ6Zmlyc3QnKTtpZigkdHQubGVuZ3RoPjApe2lmKHRoaXMuZGVidWcpe2NvbnNvbGUubG9nKFwiUHJldmlvdXMgY29sdW1uIHN0YXJ0ZWQgd2l0aCBhIHNwbGl0IGl0ZW0sIHNvIHRoYXQgY291bnQgaXMgb25lIGxlc3MgdGhhbiBleHBlY3RlZFwiKTt9XG4gICAgICAgICAgICAkdGludC0tO31cbiAgICAgICAgJHR0PSQoJGNvbHNbdGhpcy5vZmZzZXRdKS5maW5kKCR0YWcxKyc6Zmlyc3QgbGk6Zmlyc3QnKS5jbG9uZSgpOyR0dC5jaGlsZHJlbigpLnJlbW92ZSgpO2lmKCQudHJpbSgkdHQudGV4dCgpKS5sZW5ndGg+MCl7aWYodGhpcy5kZWJ1Zyl7Y29uc29sZS5sb2coXCJJZiB0aGF0IHdhcyBhIGNvbXBsZXRlIGxpc3QgaW4gdGhlIHByZXZpb3VzIGNvbHVtbiwgZG9uJ3QgZGVjci5cIik7fVxuICAgICAgICAgICAgJHRpbnQrKztpZigkKCRjb2xzW3RoaXMub2Zmc2V0LTFdKS5maW5kKFwiPlwiKyR0YWcxKyc6bGFzdCAnKS5jaGlsZHJlbigpLmxlbmd0aD09MCl7aWYodGhpcy5kZWJ1Zyl7Y29uc29sZS5sb2coXCJ1bmxlc3MgdGhhdCB3YXMgZW1wdHksIGluIHdoaWNoIGNhc2UgcmV2ZXJ0XCIpO31cbiAgICAgICAgICAgICAgICAkdGludC0tO319fWVsc2V7dmFyICR0dD0kKCRjb2xzW3RoaXMub2Zmc2V0XSkuZmluZCgkdGFnMSsnOmZpcnN0IGxpOmZpcnN0ICcrJHRhZzErXCIuc3BsaXQgbGkuc3BsaXRcIik7aWYoJHR0Lmxlbmd0aD4wKXtpZih0aGlzLmRlYnVnKXtjb25zb2xlLmxvZyhcIltOZXN0ZWRdIENvbHVtbiBzdGFydGVkIHdpdGggYSBzcGxpdCBpdGVtLCBzbyB0aGF0IGNvdW50IGlzIG9uZSBsZXNzIHRoYW4gZXhwZWN0ZWRcIik7fVxuICAgICAgICAkdGludC0tO319XG4gICAgaWYodGhpcy5kZWJ1Zyl7Y29uc29sZS5sb2coXCJTZXR0aW5nIHRoZSBzdGFydCB2YWx1ZSB0byBcIiskdGludCtcIiAoXCIrdGhpcy5wcmV2TWF4K1wiKVwiKTt9XG4gICAgaWYoJHRpbnQ+MCl7aWYodHlwZW9mIHRoaXMuc2V0Q29sdW1uU3RhcnQ9PSdmdW5jdGlvbicpe3RoaXMuc2V0Q29sdW1uU3RhcnQoJGxpc3QsJHRpbnQpO31lbHNleyRsaXN0LmF0dHIoJ3N0YXJ0JywkdGludCk7fX1cbiAgICByZXR1cm4gMDt9XG4gICAgaWYodHlwZW9mICR0YXJnZXRJZD09PSd1bmRlZmluZWQnKXskdGFyZ2V0SWQ9ZmFsc2U7fVxuICAgIGlmKHR5cGVvZiAkdGFyZ2V0Q2xhc3M9PT0ndW5kZWZpbmVkJyl7JHRhcmdldENsYXNzPWZhbHNlO31cbiAgICBpZighJHRhcmdldElkJiYhJHRhcmdldENsYXNzKXt0aHJvd1wicmVudW1iZXJCeUpTKCk6IEJhZCBwYXJhbSwgbXVzdCBwYXNzIGFuIGlkIG9yIGEgY2xhc3NcIjt9XG4gICAgdmFyICR0YXJnZXQ9Jyc7dGhpcy5wcmV2TWF4PTE7aWYoJHRhcmdldENsYXNzKXskdGFyZ2V0PVwiLlwiKyR0YXJnZXRDbGFzczt9ZWxzZXskdGFyZ2V0PVwiI1wiKyR0YXJnZXRJZDt9XG4gICAgdmFyICR0YWcxPSRzZWFyY2hUYWcudG9Mb3dlckNhc2UoKTt2YXIgJHRhZzI9JHNlYXJjaFRhZy50b1VwcGVyQ2FzZSgpO3RoaXMuY29scz0kKCR0YXJnZXQpO2lmKHRoaXMuZGVidWcpe2NvbnNvbGUubG9nKFwiVGhlcmUgYXJlIFwiK3RoaXMuY29scy5sZW5ndGgrXCIgaXRlbXMsIGxvb2tpbmcgZm9yIFwiKyR0YWcxKTt9XG4gICAgdGhpcy5iZWZvcmU9JCh0aGlzLmNvbHNbMF0pLmZpbmQoJHRhZzErJzpsYXN0Jyk7dGhpcy5wcmV2TWF4PXRoaXMuYmVmb3JlLmNoaWxkcmVuKCkubGVuZ3RoO2Zvcih0aGlzLm9mZnNldD0xO3RoaXMub2Zmc2V0PHRoaXMuY29scy5sZW5ndGg7dGhpcy5vZmZzZXQrKyl7aWYodGhpcy5kZWJ1Zyl7Y29uc29sZS5sb2coXCJpdGVyYXRpbmcgXCIrdGhpcy5vZmZzZXQrXCIuLi5bb2YgXCIrdGhpcy5jb2xzLmxlbmd0aCtcIl1cIik7fVxuICAgICAgICBpZih0aGlzLm9mZnNldCUkY29sbm89PTApe2lmKHRoaXMuZGVidWcpe2NvbnNvbGUubG9nKFwiRmlyc3QgY29sdW1uIChpbiB0aGVvcnkuLilcIik7fVxuICAgICAgICAgICAgdGhpcy5wcmV2TWF4PTE7Y29udGludWU7fVxuICAgICAgICB0aGlzLmJlZm9yZT0kKHRoaXMuY29sc1t0aGlzLm9mZnNldC0xXSkuZmluZCgkdGFnMSsnOmxhc3QnKTtpZih0aGlzLmJlZm9yZS5sZW5ndGgpe2lmKHRoaXMuZGVidWcpe2NvbnNvbGUubG9nKFwiSGF2ZSBzb21lIFwiKyRzZWFyY2hUYWcrXCIgZWxlbWVudHMgaW4gdGhlIHByZXZpb3VzIGNvbHVtblwiKTt9XG4gICAgICAgICAgICB2YXIgJGxpc3Q9JCh0aGlzLmNvbHNbdGhpcy5vZmZzZXRdKS5maW5kKCR0YWcxKyc6Zmlyc3QnKTt2YXIgJGZpcnN0PSQodGhpcy5jb2xzW3RoaXMub2Zmc2V0XSkuZmluZCgnKjpmaXJzdCcpO2lmKCRmaXJzdFswXSE9PSRsaXN0WzBdKXtjb250aW51ZTt9XG4gICAgICAgICAgICB2YXIgJHBhcmVudHM9dGhpcy5iZWZvcmUucGFyZW50cygpO3RoaXMubGFzdE90aGVyPTA7dmFyICRmb3VuZD1mYWxzZTtmb3IoO3RoaXMubGFzdE90aGVyPCRwYXJlbnRzLmxlbmd0aDt0aGlzLmxhc3RPdGhlcisrKXtpZigkcGFyZW50c1t0aGlzLmxhc3RPdGhlcl0udGFnTmFtZSE9JHRhZzImJiRwYXJlbnRzW3RoaXMubGFzdE90aGVyXS50YWdOYW1lIT1cIkxJXCIpeyRmb3VuZD10cnVlO3RoaXMubGFzdE90aGVyLS07YnJlYWs7fX1cbiAgICAgICAgICAgIHRoaXMubmVzdD0xO2lmKCQodGhpcy5jb2xzW3RoaXMub2Zmc2V0XSkuZmluZChcIj5cIiskdGFnMSsnOmZpcnN0IGxpICcrJHRhZzErXCI6Zmlyc3RcIikubGVuZ3RoKXt0aGlzLm5lc3Q9Mjt9XG4gICAgICAgICAgICB0aGlzLnNldExpc3QodGhpcy5jb2xzLCRsaXN0LCR0YWcxKTt0aGlzLmxhc3RPdGhlci0tOyRsaXN0PSQodGhpcy5jb2xzW3RoaXMub2Zmc2V0XSkuZmluZCgkdGFnMSsnOmZpcnN0IGxpICcrJHRhZzErXCI6Zmlyc3RcIik7aWYoJGxpc3QubGVuZ3RoKXt0aGlzLmJlZm9yZT0kKHRoaXMuY29sc1t0aGlzLm9mZnNldC0xXSkuZmluZChcIj5cIiskdGFnMSsnOmxhc3QgbGkgJyskdGFnMStcIjpsYXN0XCIpO3RoaXMucHJldk1heD0wO3RoaXMubmVzdD0xO3RoaXMuc2V0TGlzdCh0aGlzLmNvbHMsJGxpc3QsJHRhZzEpO31cbiAgICAgICAgICAgIHZhciAkcmVzZXQ9JCh0aGlzLmNvbHNbdGhpcy5vZmZzZXQtMV0pLmZpbmQoXCI+XCIrJHRhZzErJzpsYXN0Jyk7dGhpcy5wcmV2TWF4PSRyZXNldC5jaGlsZHJlbigpLmxlbmd0aDt9fVxuICAgIHJldHVybiAwO307fSkoalF1ZXJ5KTsiLCJ2YXIgRk9STUFMSVpFPWZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBlKGEpe3ZhciBiPWMuY3JlYXRlRWxlbWVudChcImJcIik7cmV0dXJuIGIuaW5uZXJIVE1MPVwiPCEtLVtpZiBJRSBcIithK1wiXT48YnI+PCFbZW5kaWZdLS0+XCIsISFiLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiYnJcIikubGVuZ3RofXZhciBmPVwicGxhY2Vob2xkZXJcImluIGMuY3JlYXRlRWxlbWVudChcImlucHV0XCIpLGc9XCJhdXRvZm9jdXNcImluIGMuY3JlYXRlRWxlbWVudChcImlucHV0XCIpLGg9ZSg2KSxpPWUoNyk7cmV0dXJue2dvOmZ1bmN0aW9uKCl7dmFyIGEsYj10aGlzLmluaXQ7Zm9yKGEgaW4gYiliLmhhc093blByb3BlcnR5KGEpJiZiW2FdKCl9LGluaXQ6e2Rpc2FibGVfbGlua19idXR0b246ZnVuY3Rpb24oKXthKGMuZG9jdW1lbnRFbGVtZW50KS5kZWxlZ2F0ZShcImEuYnV0dG9uX2Rpc2FibGVkXCIsXCJjbGlja1wiLGZ1bmN0aW9uKCl7cmV0dXJuITF9KX0sZnVsbF9pbnB1dF9zaXplOmZ1bmN0aW9uKCl7aSYmYShcInRleHRhcmVhLCBpbnB1dC5pbnB1dF9mdWxsXCIpLmxlbmd0aCYmYShcInRleHRhcmVhLCBpbnB1dC5pbnB1dF9mdWxsXCIpLndyYXAoJzxzcGFuIGNsYXNzPVwiaW5wdXRfZnVsbF93cmFwXCI+PC9zcGFuPicpfSxpZTZfc2tpbl9pbnB1dHM6ZnVuY3Rpb24oKXtpZihoJiZhKFwiaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWFcIikubGVuZ3RoKXt2YXIgYj0vYnV0dG9ufHN1Ym1pdHxyZXNldC8sYz0vZGF0ZXxkYXRldGltZXxkYXRldGltZS1sb2NhbHxlbWFpbHxtb250aHxudW1iZXJ8cGFzc3dvcmR8cmFuZ2V8c2VhcmNofHRlbHx0ZXh0fHRpbWV8dXJsfHdlZWsvO2EoXCJpbnB1dFwiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIGQ9YSh0aGlzKTt0aGlzLmdldEF0dHJpYnV0ZShcInR5cGVcIikubWF0Y2goYik/KGQuYWRkQ2xhc3MoXCJpZTZfYnV0dG9uXCIpLHRoaXMuZGlzYWJsZWQmJmQuYWRkQ2xhc3MoXCJpZTZfYnV0dG9uX2Rpc2FibGVkXCIpKTp0aGlzLmdldEF0dHJpYnV0ZShcInR5cGVcIikubWF0Y2goYykmJihkLmFkZENsYXNzKFwiaWU2X2lucHV0XCIpLHRoaXMuZGlzYWJsZWQmJmQuYWRkQ2xhc3MoXCJpZTZfaW5wdXRfZGlzYWJsZWRcIikpfSksYShcInRleHRhcmVhLCBzZWxlY3RcIikuZWFjaChmdW5jdGlvbigpe3RoaXMuZGlzYWJsZWQmJmEodGhpcykuYWRkQ2xhc3MoXCJpZTZfaW5wdXRfZGlzYWJsZWRcIil9KX19LGF1dG9mb2N1czpmdW5jdGlvbigpe2lmKCFnJiZhKFwiOmlucHV0W2F1dG9mb2N1c11cIikubGVuZ3RoKXt2YXIgYj1hKFwiW2F1dG9mb2N1c11cIilbMF07Yi5kaXNhYmxlZHx8Yi5mb2N1cygpfX0scGxhY2Vob2xkZXI6ZnVuY3Rpb24oKXshZiYmYShcIjppbnB1dFtwbGFjZWhvbGRlcl1cIikubGVuZ3RoJiYoRk9STUFMSVpFLm1pc2MuYWRkX3BsYWNlaG9sZGVyKCksYShcIjppbnB1dFtwbGFjZWhvbGRlcl1cIikuZWFjaChmdW5jdGlvbigpe2lmKFwicGFzc3dvcmRcIiE9PXRoaXMudHlwZSl7dmFyIGI9YSh0aGlzKSxjPWIuYXR0cihcInBsYWNlaG9sZGVyXCIpO2IuZm9jdXMoZnVuY3Rpb24oKXtiLnZhbCgpPT09YyYmYi52YWwoXCJcIikucmVtb3ZlQ2xhc3MoXCJwbGFjZWhvbGRlcl90ZXh0XCIpfSkuYmx1cihmdW5jdGlvbigpe0ZPUk1BTElaRS5taXNjLmFkZF9wbGFjZWhvbGRlcigpfSksYi5jbG9zZXN0KFwiZm9ybVwiKS5zdWJtaXQoZnVuY3Rpb24oKXtiLnZhbCgpPT09YyYmYi52YWwoXCJcIikucmVtb3ZlQ2xhc3MoXCJwbGFjZWhvbGRlcl90ZXh0XCIpfSkuYmluZChcInJlc2V0XCIsZnVuY3Rpb24oKXtzZXRUaW1lb3V0KEZPUk1BTElaRS5taXNjLmFkZF9wbGFjZWhvbGRlciw1MCl9KX19KSl9fSxtaXNjOnthZGRfcGxhY2Vob2xkZXI6ZnVuY3Rpb24oKXshZiYmYShcIjppbnB1dFtwbGFjZWhvbGRlcl1cIikubGVuZ3RoJiZhKFwiOmlucHV0W3BsYWNlaG9sZGVyXVwiKS5lYWNoKGZ1bmN0aW9uKCl7aWYoXCJwYXNzd29yZFwiIT09dGhpcy50eXBlKXt2YXIgYj1hKHRoaXMpLGM9Yi5hdHRyKFwicGxhY2Vob2xkZXJcIik7Yi52YWwoKSYmYi52YWwoKSE9PWN8fGIudmFsKGMpLmFkZENsYXNzKFwicGxhY2Vob2xkZXJfdGV4dFwiKX19KX19fX0oalF1ZXJ5LHRoaXMsdGhpcy5kb2N1bWVudCk7alF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe0ZPUk1BTElaRS5nbygpfSk7IiwiKGZ1bmN0aW9uICgkKSB7XG5cblxuLy9UT0RPIENsZWFuIFVwXG5cblxuXG4gIGZ1bmN0aW9uIGNsb3NlTWVnYW1lbnUoKSB7XG4gICAgJCgnLm1lbnUtLW1haW4tbWVudS0tbmV3IC5pcy1vcGVuJykucmVtb3ZlQ2xhc3MoJ2lzLW9wZW4nKTtcbiAgICAkKCcubWVudS0tbWFpbi1tZW51LS1uZXcgLmlzLWZvY3VzZWQnKS5yZW1vdmVDbGFzcygnaXMtZm9jdXNlZCcpO1xuICB9XG5cbiAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXtcblxuICAgICAgJCgnLm1lbnUtLW1haW4tbWVudS0tbmV3IGxpLm1lbnUtZGVwdGgtMScpLmZvY3VzaW4oZnVuY3Rpb24oKXtcbiAgICAgICAgJCgnLm1lbnUtLW1haW4tbWVudS0tbmV3IGxpLm1lbnUtZGVwdGgtMScpLnJlbW92ZUNsYXNzKCdpcy1mb2N1c2VkJyk7XG4gICAgICAgICQodGhpcykuY2xvc2VzdCgnbGkubWVudS1kZXB0aC0xJykuYWRkQ2xhc3MoJ2lzLWZvY3VzZWQnKTtcbiAgICAgIH0pO1xuXG4gICAgICAkKCcubWVudS0tbWFpbi1tZW51LS1uZXcgbGkubWVudS1kZXB0aC0xJykuZm9jdXNvdXQoZnVuY3Rpb24oKXtcbiAgICAgICAgJCgnLm1lbnUtLW1haW4tbWVudS0tbmV3IGxpLm1lbnUtZGVwdGgtMScpLnJlbW92ZUNsYXNzKCdpcy1mb2N1c2VkJyk7XG4gICAgICB9KTtcblxuXG4gICAgJCgnLm1lbnUtLW1haW4tbWVudS0tbmV3X19zdWJtZW51JykuZWFjaChmdW5jdGlvbigpe1xuICAgICAgJCh0aGlzKS5maW5kKCc+IC5tZW51Jykud3JhcElubmVyKCc8ZGl2IGNsYXNzPVwiY29sdW1uLWNvbnRhaW5lclwiPjxkaXYgY2xhc3M9XCJjb2x1bW5cIj4nKTtcbiAgICB9KTtcblxuXG4gICAgLy9Nb2JpbGUgTWVudSBUb2dnbGUgb24gY2xpY2tcbiAgICAkKCcubW9iaWxlLXRvZ2dsZS0tbWVudScpLmNsaWNrKGZ1bmN0aW9uKGUpe1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICBpZigkKCdib2R5JykuaGFzQ2xhc3MoJ2hhcy1tb2JpbGUtbWVudScpKXtcbiAgICAgICAgJCgnI25hdmlnYXRpb24gLmJsb2NrLS1tZW51LWJsb2NrJykuc2xpZGVVcCgzMDAsZnVuY3Rpb24oKXtcbiAgICAgICAgICAkKCdib2R5JykucmVtb3ZlQ2xhc3MoJ2hhcy1tb2JpbGUtbWVudScpO1xuICAgICAgICB9KTtcblxuICAgICAgfWVsc2V7XG5cbiAgICAgICAgJCgnYm9keScpLmFkZENsYXNzKCdoYXMtbW9iaWxlLW1lbnUnKTtcbiAgICAgICAgJCgnI25hdmlnYXRpb24gLmJsb2NrLS1tZW51LWJsb2NrJykuc2xpZGVEb3duKDMwMCk7XG4gICAgICB9XG5cbiAgICB9KTtcblxuICAgIC8vTW9iaWxlIE1lbnUgVG9nZ2xlIG9uIGZvY3VzXG4gICAgJCgnLm1vYmlsZS10b2dnbGUtLW1lbnUgPiBhJykuZm9jdXMoZnVuY3Rpb24oKXtcblxuICAgICAgICAkKCdib2R5JykuYWRkQ2xhc3MoJ2ZvY3VzLW1vYmlsZS1tZW51Jyk7XG4gICAgICAgICQoJyNuYXZpZ2F0aW9uIC5ibG9jay0tbWVudS1ibG9jaycpLnNsaWRlRG93bigzMDApO1xuICAgIH0pO1xuXG4gICAgLy8gTW9iaWxlIE1lbnUgVG9nZ2xlIG9uIGZvY3VzXG4gICAgJCgnI21haW4nKS5mb2N1c2luKGZ1bmN0aW9uKCl7XG5cbiAgICAgICAgJCgnLmZvY3VzLW1vYmlsZS1tZW51ICNuYXZpZ2F0aW9uIC5ibG9jay0tbWVudS1ibG9jaycpLnNsaWRlVXAoMzAwLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgJCgnYm9keScpLnJlbW92ZUNsYXNzKCdmb2N1cy1tb2JpbGUtbWVudScpO1xuICAgICAgICAgICQoJ2JvZHknKS5yZW1vdmVDbGFzcygnaGFzLW1vYmlsZS1tZW51Jyk7XG4gICAgICAgICAgY2xvc2VNZWdhbWVudSgpO1xuICAgICAgICB9KTtcblxuICAgIH0pO1xuXG5cblxuICB9KTtcblxuICAkKHdpbmRvdykubG9hZChmdW5jdGlvbigpe1xuXG5cbiAgICAvL0Nsb3NlIG9uIENsaWNrXG4gICAgJCgnLm1lbnUtLW1haW4tbWVudS0tbmV3X19zdWJtZW51Jykub24oJ2NsaWNrJywgJy5tZW51LS1tYWluLW1lbnUtLW5ld19fY2xvc2UnLCAoZnVuY3Rpb24oZSl7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBjbG9zZU1lZ2FtZW51KCk7XG4gICAgfSkpO1xuXG4gICAgLy9DbG9zZSBvbiBFc2NhcGVcbiAgICAkKGRvY3VtZW50KS5rZXl1cChmdW5jdGlvbihlKSB7XG4gICAgICBpZiAoZS5rZXlDb2RlID09IDI3KSB7XG4gICAgICAgIGNsb3NlTWVnYW1lbnUoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vQ2xvc2Ugb24gcmV0dXJuIHdoZW4gY2xvc2UgYnV0dG9uIGlzIGluIGZvY3VzXG4gICAgJChkb2N1bWVudCkua2V5dXAoZnVuY3Rpb24oZSkge1xuICAgICAgaWYgKGUua2V5Q29kZSA9PSAxMyAmJiAkKCcubWVudS0tbWFpbi1tZW51LS1uZXdfX2Nsb3NlJykuaXMoJzpmb2N1cycpKSB7XG4gICAgICAgIGNsb3NlTWVnYW1lbnUoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgICQoJy5tZW51LS1tYWluLW1lbnUtLW5ld19fc3VibWVudScpLmVhY2goZnVuY3Rpb24oKXtcblxuICAgICAgdmFyIGFtb3VudE9mQ29sdW1ucyA9ICQodGhpcykuZmluZCgnLmNvbHVtbi1icmVhaycpLmxlbmd0aDtcbiAgICAgIHZhciBpID0gMDtcblxuICAgICAgc3dpdGNoKGFtb3VudE9mQ29sdW1ucyl7XG5cbiAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICQodGhpcykuZmluZCgnLmNvbHVtbi1jb250YWluZXInKS5hZGRDbGFzcygnaGFzLW9uZS1jb2x1bW4nKS5wcmVwZW5kKCc8c3BhbiB0YWJpbmRleD1cIjBcIiBjbGFzcz1cIm1lbnUtLW1haW4tbWVudS0tbmV3X19jbG9zZVwiPkNsb3NlPC9zcGFuPicpO1xuICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ29uZS1jb2x1bW4nKTtcblxuICAgICAgICAgIGZvcihpPTA7IGk8YW1vdW50T2ZDb2x1bW5zOyBpKyspe1xuICAgICAgICAgICAgdmFyIGJvdW5kYXJ5ID0gJCh0aGlzKS5maW5kKCcuY29sdW1uLWNvbnRhaW5lciAuY29sdW1uLWJyZWFrJykuZXEoaSk7XG4gICAgICAgICAgICAkKFwiPGRpdiBjbGFzcz0nY29sdW1uJz5cIikuaW5zZXJ0QWZ0ZXIoYm91bmRhcnkucGFyZW50KCkpLmFwcGVuZChib3VuZGFyeS5uZXh0QWxsKCkuYW5kU2VsZigpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICQodGhpcykuZmluZCgnLmNvbHVtbi1jb250YWluZXInKS5hZGRDbGFzcygnaGFzLXR3by1jb2x1bW5zJykucHJlcGVuZCgnPHNwYW4gdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJtZW51LS1tYWluLW1lbnUtLW5ld19fY2xvc2VcIj5DbG9zZTwvc3Bhbj4nKTtcblxuICAgICAgICAgIGZvcihpPTA7IGk8YW1vdW50T2ZDb2x1bW5zOyBpKyspe1xuICAgICAgICAgICAgdmFyIGJvdW5kYXJ5ID0gJCh0aGlzKS5maW5kKCcuY29sdW1uLWNvbnRhaW5lciAuY29sdW1uLWJyZWFrJykuZXEoaSk7XG4gICAgICAgICAgICAkKFwiPGRpdiBjbGFzcz0nY29sdW1uJz5cIikuaW5zZXJ0QWZ0ZXIoYm91bmRhcnkucGFyZW50KCkpLmFwcGVuZChib3VuZGFyeS5uZXh0QWxsKCkuYW5kU2VsZigpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICB2YXIgY3VycmVudENvbHVtbkNvbnRhaW5lciA9ICQodGhpcykuZmluZCgnLmNvbHVtbi1jb250YWluZXInKTtcblxuICAgICAgICAgICQoY3VycmVudENvbHVtbkNvbnRhaW5lcikuYWRkQ2xhc3MoJ2hhcy10aHJlZS1jb2x1bW5zJykucHJlcGVuZCgnPHNwYW4gdGFiaW5kZXg9XCIwXCIgY2xhc3M9XCJtZW51LS1tYWluLW1lbnUtLW5ld19fY2xvc2VcIj5DbG9zZTwvc3Bhbj4nKTtcblxuICAgICAgICAgIGZvcihpPTA7IGk8YW1vdW50T2ZDb2x1bW5zOyBpKyspe1xuICAgICAgICAgICAgdmFyIGJvdW5kYXJ5ID0gJCh0aGlzKS5maW5kKCcuY29sdW1uLWNvbnRhaW5lciAuY29sdW1uLWJyZWFrJykuZXEoaSk7XG4gICAgICAgICAgICAkKFwiPGRpdiBjbGFzcz0nY29sdW1uJz5cIikuaW5zZXJ0QWZ0ZXIoYm91bmRhcnkucGFyZW50KCkpLmFwcGVuZChib3VuZGFyeS5uZXh0QWxsKCkuYW5kU2VsZigpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5jb2x1bW4tY29udGFpbmVyJykuYWRkQ2xhc3MoJ2hhcy1mb3VyLWNvbHVtbnMnKS5wcmVwZW5kKCc8c3BhbiB0YWJpbmRleD1cIjBcIiBjbGFzcz1cIm1lbnUtLW1haW4tbWVudS0tbmV3X19jbG9zZVwiPkNsb3NlPC9zcGFuPicpO1xuXG4gICAgICAgICAgZm9yKGk9MDsgaTxhbW91bnRPZkNvbHVtbnM7IGkrKyl7XG4gICAgICAgICAgICB2YXIgYm91bmRhcnkgPSAkKHRoaXMpLmZpbmQoJy5jb2x1bW4tY29udGFpbmVyIC5jb2x1bW4tYnJlYWsnKS5lcShpKTtcbiAgICAgICAgICAgICQoXCI8ZGl2IGNsYXNzPSdjb2x1bW4nPlwiKS5pbnNlcnRBZnRlcihib3VuZGFyeS5wYXJlbnQoKSkuYXBwZW5kKGJvdW5kYXJ5Lm5leHRBbGwoKS5hbmRTZWxmKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgIH0pO1xuXG4gIH0pO1xuXG59KShqUXVlcnkpO1xuXG4iLCIoZnVuY3Rpb24gKCQpIHtcblxuICAvL1RPRE8gLSBDbGVhbiB1cCBhbmQgY29tYmluZSB3aXRoIHRvcCBuYXYgY29sbGFwc2libGUganNcblxuICBmdW5jdGlvbiBleHBhbmRDb2xsYXBzZShleHBhbmRlcikge1xuICAgIGV4cGFuZGVyLmJsdXIoKTtcblxuICAgIHZhciAkdGhpc1N1Ym1lbnUgPSAgZXhwYW5kZXIuY2xvc2VzdCgnbGknKTtcblxuICAgIGlmKCR0aGlzU3VibWVudS5oYXNDbGFzcygnaXMtb3BlbicpKXtcbiAgICAgICR0aGlzU3VibWVudS5maW5kKCd1bCwgLm1lbnUtLW1haW4tbWVudS0tbmV3X19zdWJtZW51JykuZmlyc3QoKS5zbGlkZVVwKCk7XG4gICAgICAkdGhpc1N1Ym1lbnUucmVtb3ZlQ2xhc3MoJ2lzLW9wZW4nKTtcbiAgICAgIGV4cGFuZGVyLnRvZ2dsZUNsYXNzKFwiZmEtbWludXMgZmEtcGx1c1wiKTtcbiAgICB9ZWxzZXtcbiAgICAgICQoJy5tZW51LS1tYWluLW1lbnUtLW5ld19fc3VibWVudScpLnNsaWRlVXAoKTtcbiAgICAgICQoJy5tZW51LS1tYWluLW1lbnUtLW5ldyAubWVudS1kZXB0aC0xJykucmVtb3ZlQ2xhc3MoXCJpcy1vcGVuXCIpO1xuICAgICAgJCgnLm1lbnUtLW1haW4tbWVudS0tbmV3IC5leHBhbmRlcicpLnJlbW92ZUNsYXNzKFwiZmEtbWludXNcIikuYWRkQ2xhc3MoXCJmYS1wbHVzXCIpO1xuXG4gICAgICAvKiBjb2xsYXBzZSBhbGwgdGhlIG90aGVyIHN1Ym1lbnVzICovXG4gICAgICAkdGhpc1N1Ym1lbnUuZmluZCgndWwsIC5tZW51LS1tYWluLW1lbnUtLW5ld19fc3VibWVudScpLmZpcnN0KCkuc2xpZGVEb3duKCk7XG4gICAgICAkdGhpc1N1Ym1lbnUuYWRkQ2xhc3MoJ2lzLW9wZW4nKTtcbiAgICAgIGV4cGFuZGVyLnRvZ2dsZUNsYXNzKFwiZmEtcGx1cyBmYS1taW51c1wiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe1xuXG4gICAgLyogVXRpbGl0eSBjbGFzcyB0byBhZGQgZXhwYW5kZXIgdG8gbmVzdGVkIGxpc3RzICovXG4gICAgJCgnLmV4cGFuZGFibGUgbGk6aGFzKHVsKScpLmNoaWxkcmVuKCdhJykuYXBwZW5kKCcgPHNwYW4gY2xhc3M9XCJleHBhbmRlciBmYSBmYS1wbHVzXCI+PHNwYW4gY2xhc3M9XCJlbGVtZW50LWludmlzaWJsZVwiPkV4cGFuZCBvciBDb2xsYXBzZTwvc3Bhbj48L3NwYW4+Jyk7XG5cbiAgICAvKiBNYWtlIHN1cmUgYWN0aXZlIHRyYWlsIGlzIHNldCAqL1xuICAgICQoJy5leHBhbmRhYmxlIGEuYWN0aXZlJykucGFyZW50cygnbGknKS5hZGRDbGFzcygnaXMtYWN0aXZlLXRyYWlsJyk7XG5cbiAgICBleHBhbmRDb2xsYXBzZSgkKCdsaS5pcy1hY3RpdmUtdHJhaWwgPiBhIC5leHBhbmRlcicpKTtcblxuICAgICQoJy5leHBhbmRlcicpLmNsaWNrKGZ1bmN0aW9uKGUpe1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXhwYW5kQ29sbGFwc2UoJCh0aGlzKSk7XG4gICAgfSk7XG5cbiAgfSk7XG5cbiAgJChkb2N1bWVudCkua2V5dXAoZnVuY3Rpb24oZSkge1xuICAgIC8qIEVudGVyIGtleSAqL1xuICAgIGlmIChlLmtleUNvZGUgPT0gMTMgJiYgJCgnLmV4cGFuZGVyJykuaXMoJzpmb2N1cycpKSB7XG4gICAgICBleHBhbmRDb2xsYXBzZSgkKCcuZXhwYW5kZXI6Zm9jdXMnKSk7XG4gICAgfTtcblxuICB9KTtcblxufSkoalF1ZXJ5KTtcbiIsIihmdW5jdGlvbiAoJCkge1xuXG4gICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkge1xuXG4gICAgLy8gQWRkIGEgd3JhcHBlciB0byBpbmxpbmUgc3ZnIGVsZW1lbnRzIHNvIHdlIGNhbiBwb3NpdGlvbiB0b29sdGlwc1xuICAgICQoJyNjb250ZW50IHN2ZycpLm9uY2UoJ3dyYXBTVkcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAkKHRoaXMpLmVhY2goIGZ1bmN0aW9uKCBpbmRleCwgZWxlbWVudCApe1xuICAgICAgICAkKGVsZW1lbnQpLndyYXAoJzxkaXYgY2xhc3M9XCJuaXN0LXN2Z19fd3JhcHBlclwiPjwvZGl2PicpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cblxuXG4gICAgJCgnLm5pc3Qtc3ZnLS1zY2FsYWJsZScpLm9uY2UoJ3NjYWxhYmxlJywgZnVuY3Rpb24gKCkge1xuICAgICAgJCh0aGlzKS5lYWNoKCBmdW5jdGlvbiggaW5kZXgsIGVsZW1lbnQgKXtcbiAgICAgICAgLy8gR2V0IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IHJhdGlvXG4gICAgICAgIHZhciBib3ggPSBlbGVtZW50LnZpZXdCb3guYmFzZVZhbDtcbiAgICAgICAgdmFyIHJhdGlvID0gYm94LmhlaWdodCAvIGJveC53aWR0aCAqIDEwMDtcbiAgICAgICAgJChlbGVtZW50KS5wYXJlbnQoKS5hZGRDbGFzcygnbmlzdC1zdmdfX3dyYXBwZXItLXNjYWxhYmxlJyk7XG4gICAgICAgICQoZWxlbWVudCkucGFyZW50KCkuY3NzKCdwYWRkaW5nLWJvdHRvbScsIHJhdGlvICsgJyUnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gU1ZHIHRvb2x0aXBcbiAgICAkKCdzdmcgYScpLmVhY2goZnVuY3Rpb24oaW5kZXgsIHZhbHVlKSB7XG4gICAgICBpZiAoJCh0aGlzKS5hdHRyKCdkYXRhLW5pc3Qtc3ZnLXRvb2x0aXAnKSkge1xuICAgICAgICAvLyBDcmVhdGUgdG9vbHRpcCBjb250ZW50XG4gICAgICAgIHZhciB0b29sVGlwVGV4dCA9ICQodGhpcykuYXR0cignZGF0YS1uaXN0LXN2Zy10b29sdGlwJyk7XG4gICAgICAgICQodGhpcykuY2xvc2VzdCgnLm5pc3Qtc3ZnX193cmFwcGVyJykuYXBwZW5kKCc8ZGl2IGNsYXNzPVwibmlzdC1zdmdfX3Rvb2x0aXAgbmlzdC1zdmdfX3Rvb2x0aXAtLScgKyBpbmRleCArICdcIj48ZGl2IGNsYXNzPVwibmlzdC1zdmdfX3Rvb2x0aXAtY29udGVudFwiPicgKyB0b29sVGlwVGV4dCArICc8L2Rpdj48c3BhbiBjbGFzcz1cIm5pc3Qtc3ZnX190b29sdGlwLWNsb3NlIGZhIGZhLWNsb3NlXCI+PHNwYW4gY2xhc3M9XCJlbGVtZW50LWludmlzaWJsZVwiPkNsb3NlPC9zcGFuPjwvc3Bhbj48L2Rpdj4nKTtcblxuICAgICAgICAvLyBTaG93IHRvb2x0aXAgb24gY2xpY2tcbiAgICAgICAgJCh0aGlzKS5jbGljayhmdW5jdGlvbigpIHtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICQodGhpcykuY2xvc2VzdCgnLm5pc3Qtc3ZnX193cmFwcGVyJykuZmluZCgnLm5pc3Qtc3ZnX190b29sdGlwLS0nICsgaW5kZXgpLmFkZENsYXNzKCdpcy1vcGVuJykuZmFkZUluKCk7XG4gICAgICAgIH0pXG5cbiAgICAgIH1cblxuICAgICAgLy8gU1ZHIHNob3cgYW5kIGhpZGUgZWxlbWVudCBidXR0b25zXG4gICAgICBpZiAoJCh0aGlzKS5hdHRyKCdkYXRhLW5pc3Qtc2hvdycpKSB7XG5cbiAgICAgICAgLy8gU2hvdyBtYXRjaGluZyBlbGVtZW50IG9uIGNsaWNrXG4gICAgICAgICQodGhpcykuY2xpY2soZnVuY3Rpb24oKSB7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB2YXIgZWxlbWVudE51bWJlciA9ICQodGhpcykuYXR0cignZGF0YS1uaXN0LXNob3cnKTtcbiAgICAgICAgICB2YXIgZWxlbWVudFRvU2hvdyA9ICQoIFwiW2RhdGEtbmlzdC1lbGVtZW50PSdcIiArIGVsZW1lbnROdW1iZXIgKyBcIiddXCIgKTtcbiAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJy5uaXN0LXN2Z19fd3JhcHBlcicpLmZpbmQoJ1tkYXRhLW5pc3QtZWxlbWVudF0nKS5mYWRlT3V0KCk7XG4gICAgICAgICAgZWxlbWVudFRvU2hvdy5mYWRlSW4oKTtcbiAgICAgICAgfSlcblxuICAgICAgfVxuXG4gICAgfSlcblxuICAgIC8vIFNob3cgdG9vbHRpcCBvbiBjbGlja1xuICAgICQoJy5uaXN0LXN2Z19fdG9vbHRpcC1jbG9zZScpLmNsaWNrKGZ1bmN0aW9uKCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICQodGhpcykuY2xvc2VzdCgnLm5pc3Qtc3ZnX190b29sdGlwJykucmVtb3ZlQ2xhc3MoJ2lzLW9wZW4nKS5mYWRlT3V0KCk7XG4gICAgfSlcblxuICAgICAvLyBDbG9zZSBlbGVtZW50IHRoYXQgd2FzIHJldmVhbGVkIGJ5IGEgc2hvdyBidXR0b25cbiAgICAkKCdbZGF0YS1uaXN0LWVsZW1lbnRdJykuY2xpY2soZnVuY3Rpb24oKSB7XG4gICAgICAkKHRoaXMpLmhpZGUoKTtcbiAgICB9KTtcblxuICB9KTtcblxufSkoalF1ZXJ5KTsiLCIvKiBQbGFjZWhvbGRlcnMuanMgdjQuMC4xICovXG4vKiFcbiAqIFRoZSBNSVQgTGljZW5zZVxuICpcbiAqIENvcHlyaWdodCAoYykgMjAxMiBKYW1lcyBBbGxhcmRpY2VcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4gKiBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0b1xuICogZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGVcbiAqIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vclxuICogc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbiAqIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbiAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1JcbiAqIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuICogRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HU1xuICogSU4gVEhFIFNPRlRXQVJFLlxuICovXG4oZnVuY3Rpb24gKCQpIHtcblxuICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe1xuXG4gICAgICAgICAgICAoZnVuY3Rpb24gKCkge1xuXG4gICAgICAgICAgICAgICAgJC5zdXBwb3J0LnBsYWNlaG9sZGVyID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdmFyIHRlc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICAgICAgICAgIGlmICgncGxhY2Vob2xkZXInIGluIHRlc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgJC5zdXBwb3J0LnBsYWNlaG9sZGVyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWN0aXZlID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKCdmb3JtJykuZGVsZWdhdGUoJzp0ZXh0JywgJ2ZvY3VzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX3BsYWNlaG9sZGVyID0gJCh0aGlzKS5hdHRyKCdwbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZhbCA9ICQodGhpcykudmFsKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfcGxhY2Vob2xkZXIgIT0gJycgJiYgX3ZhbCA9PSBfcGxhY2Vob2xkZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykudmFsKCcnKS5yZW1vdmVDbGFzcygnaGFzUGxhY2Vob2xkZXInKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmRlbGVnYXRlKCc6dGV4dCcsICdibHVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX3BsYWNlaG9sZGVyID0gJCh0aGlzKS5hdHRyKCdwbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3ZhbCA9ICQodGhpcykudmFsKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vIG5lZWQgdG8gdGVzdCBmb3IgdmFsdWVzIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBqUXVlcnkgdmVyc2lvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB1bmRlZmluZWQgYW5kIGFuIGVtcHR5IHN0cmluZyBib3RoIGFyZSBmYWxzeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIV9wbGFjZWhvbGRlciAmJiAoIF92YWwgPT0gJycgfHwgX3ZhbCA9PSBfcGxhY2Vob2xkZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnZhbChfcGxhY2Vob2xkZXIpLmFkZENsYXNzKCdoYXNQbGFjZWhvbGRlcicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkuc3VibWl0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcuaGFzUGxhY2Vob2xkZXInKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQodGhpcykudmFsKCcnKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnOnRleHQnKS5ibHVyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChhY3RpdmUpLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSk7XG5cblxuICB9KTtcblxufSkoalF1ZXJ5KTtcbiIsIihmdW5jdGlvbiAoJCkge1xuXG4gIC8vRnVuY3Rpb25hbGl0eSBmb3IgcHJpbWFyeSBmaWx0ZXJzIHdpdGggc2VhcmNoIGljb25zXG4gIC8vVE9ETyBzZXQgdXAgdG8gbG9vcCB0aHJvdWdoIHNlbGVjdG9yIGFycmF5XG4gIC8vU2VhcmNoIGljb24gdG8gZGlzYXBwZWFyIGlmIHVzZXIgZm9jdXNlcyBpbiBvciBoYXMgaW5wdXR0ZWQgdGV4dC5cblxuICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe1xuXG4gICAgLy9TZXQgU2VsZWN0b3JzXG5cbiAgICB2YXIgc2VsZWN0b3JBcnJheSA9IFtcbiAgICAgICcucHJpbWFyeS1maWx0ZXInXG4gICAgXTtcblxuXG4gICAgLy9GaXJlIEZ1bmN0aW9uIG9uIExvYWRcbiAgICBkb2VzRWxlbWVudEV4aXN0KHNlbGVjdG9yQXJyYXkpO1xuXG5cbiAgICAvL0xvb3AgVGhyb3VnaCBTZWxlY3RvcnMsIGlmIHRoZXkgZXhpc3Qgb24gdGhlIHBhZ2UgcnVuIHRoZSByZXN0IG9mIHRoZSBzY3JpcHRcblxuICAgIGZ1bmN0aW9uIGRvZXNFbGVtZW50RXhpc3Qoc2VsZWN0b3JBcnJheSl7XG5cbiAgICAgICQuZWFjaChzZWxlY3RvckFycmF5LCBmdW5jdGlvbihrZXksIHNlbGVjdG9yKXtcblxuICAgICAgICB2YXIgYW1vdW50T2ZFbGVtZW50cyA9ICQoc2VsZWN0b3IpLmxlbmd0aDtcblxuICAgICAgICBpZihhbW91bnRPZkVsZW1lbnRzID09IDEpe1xuXG4gICAgICAgICAgLy9UT0RPIEZpbmQgYSBiZXR0ZXIgd2F5IHRvIGdldCB0aGlzIGNsYXNzIG9uIHRoZXNlIHNlbGVjdG9yc1xuICAgICAgICAgIC8vJChzZWxlY3RvcikuYWRkQ2xhc3MoJ3ByaW1hcnktZmlsdGVyJyk7XG5cbiAgICAgICAgICAvL0lmIGl0IGV4aXN0cyBydW4gaXQgdGhyb3VnaCB0aGUgdmFsdWUgY2hlY2tlclxuICAgICAgICAgIGNoZWNrVmFsdWUoc2VsZWN0b3IpO1xuXG4gICAgICAgICAgLy9JZiBpdCBleGlzdHMgc2V0IHVwIHZhbHVlIHdhdGNoZXJzXG5cbiAgICAgICAgICAvL0FjdGlvbnMgb24gRm9jdXMgSW5cbiAgICAgICAgICAkKHNlbGVjdG9yKS5maW5kKCdpbnB1dCcpLmZvY3VzaW4oZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICQoc2VsZWN0b3IpLmZpbmQoJy5mb3JtLWl0ZW0nKS5yZW1vdmVDbGFzcygnZW1wdHknKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIC8vQWN0aW9ucyBvbiBGb3VjcyBPdXRcbiAgICAgICAgICAkKHNlbGVjdG9yKS5maW5kKCdpbnB1dCcpLmZvY3Vzb3V0KGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBjaGVja1ZhbHVlKHNlbGVjdG9yKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgIH0pO1xuXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2hlY2tWYWx1ZShzZWxlY3Rvcil7XG4gICAgICB2YXIgY3VycmVudFZhbHVlID0gJChzZWxlY3RvcikuZmluZCgnaW5wdXQnKS52YWwoKTtcblxuXG4gICAgICBpZihjdXJyZW50VmFsdWUgPT0gJycpe1xuXG4gICAgICAgICQoc2VsZWN0b3IpLmZpbmQoJy5mb3JtLWl0ZW0nKS5hZGRDbGFzcygnZW1wdHknKTtcblxuICAgICAgfWVsc2V7XG5cbiAgICAgIH1cbiAgICB9XG5cblxuXG4gIH0pO1xuXG59KShqUXVlcnkpO1xuIiwiKGZ1bmN0aW9uKCQpIHtcblxuLy8gU2ltcGx5IHdyYXAgYWxsIHRhYmxlcyBpbiB0aGUgYm9keSBmaWVsZCB3aXRoIGEgZGl2XG4vLyBUaGlzIGFsbG93cyB1cyB0byBzZXQgYSBvdmVyZmxvdzphdXRvIG9uIHRoZSBjb250YWluZXJcbi8vIHNvIGJpZyB0YWJsZXMgc2Nyb2xsIGhvcml6b250YWxseSBhbmQgZG9uJ3QgYnJlYWsgdGhlIGxheW91dFxuXG4gICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7XG5cbiAgICAvLyBXcmFwIHRhYmxlc1xuICAgICQoJ3RhYmxlJykub25jZSgnd3JhcFRhYmxlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAkKHRoaXMpLmVhY2goIGZ1bmN0aW9uKCBpbmRleCwgZWxlbWVudCApe1xuICAgICAgICAgICQoZWxlbWVudCkud3JhcCgnPGRpdiBjbGFzcz1cInRhYmxlLXdyYXBwZXJcIj48ZGl2IGNsYXNzPVwidGFibGUtaW5uZXJcIj48L2Rpdj48L2Rpdj4nKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgIGZ1bmN0aW9uIHRhYmxlT3ZlcmZsb3coKXtcbiAgICAgICQoJy50YWJsZS1pbm5lcicpLmVhY2goIGZ1bmN0aW9uKCBpbmRleCwgZWxlbWVudCApe1xuICAgICAgICAvLyBDbGVhciBhbnkgcHJldmlvdXMgYWx0ZXJhdGlvbnMgc28gd2UgY2FuIGdldCBjb3JyZWN0IG1lYXN1cmVtZW50c1xuICAgICAgICAkKGVsZW1lbnQpLnBhcmVudCgpLnJlbW92ZUNsYXNzKCdvdmVyZmxvdycpLmF0dHIoJ3N0eWxlJywgJycpO1xuICAgICAgICAkKGVsZW1lbnQpLnNpYmxpbmdzKCcudGFibGUtb3ZlcmZsb3cnKS5yZW1vdmUoKTtcblxuICAgICAgICAvLyBJcyB0aGUgdGFibGUgb3ZlcmZsb3dpbmc/XG4gICAgICAgIHZhciBvdmVyZmxvd24gPSAkKGVsZW1lbnQpLm92ZXJmbG93bl93aWR0aCgpO1xuXG4gICAgICAgIC8vIE1ha2UgbWVhc3VyZW1lbnRzXG4gICAgICAgIHZhciBoZWlnaHQgPSAkKGVsZW1lbnQpLmhlaWdodCgpO1xuICAgICAgICB2YXIgd2lkdGggPSAkKGVsZW1lbnQpLndpZHRoKCk7XG4gICAgICAgIHZhciB0YWJsZV93aWR0aCA9ICQoZWxlbWVudCkuY2hpbGRyZW4oJ3RhYmxlJykud2lkdGgoKTtcbiAgICAgICAgdmFyIGJyb3dzZXJfd2lkdGggPSAkKCB3aW5kb3cgKS53aWR0aCgpO1xuICAgICAgICB2YXIgd3JhcHBlcl93aWR0aCA9IHRhYmxlX3dpZHRoICsgMjtcblxuICAgICAgICAvLyBMaW1pdCB3aWR0aCBvZiB3cmFwcGVyIHRvIGJyb3dzZXIgd2lkdGhcbiAgICAgICAgaWYod3JhcHBlcl93aWR0aCA+PSBicm93c2VyX3dpZHRoKSB7XG4gICAgICAgICAgd3JhcHBlcl93aWR0aCA9IGJyb3dzZXJfd2lkdGggLSA1MjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldCBwb3NpdGlvbiBvZiB3cmFwcGVyIHNvIHdlIGNhbiBtb3ZlIGl0IG91dHNpZGUgdGhlIGNvbnRhaW5lciBpZiBuZWVkZWRcbiAgICAgICAgdmFyIGxlZnQgPSAwO1xuICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHBvc2l0aW9uaW5nXG4gICAgICAgIGlmKHdyYXBwZXJfd2lkdGggPj0gMTQwMCkge1xuICAgICAgICAgIC8vIHN1YnRyYWN0IG1heCB3aWR0aCBvZiBjb250ZW50IGFuZCBkaXZpZGUgaW4gaGFsZiB0byBnZXQgdGhlIGxlZnQgcG9zaXRpb25cbiAgICAgICAgICB2YXIgbGVmdCA9ICh3cmFwcGVyX3dpZHRoIC0gMTE2OCkgLyAyO1xuICAgICAgICAgIC8vIG5lZ2F0ZVxuICAgICAgICAgIHZhciBsZWZ0ID0gMCAtIGxlZnQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZih3cmFwcGVyX3dpZHRoIDwgMTQwMCB8fCB3aWR0aCA8IDExNjgpIHtcbiAgICAgICAgICB3cmFwcGVyX3dpZHRoID0gd2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgd2lkdGgsIGhlaWdodCBhbmQgcG9zaXRpb24gb2Ygd3JhcHBlciBzaW5jZSB0aGUgaW5uZXIgZGl2IGlzIGFic29sdXRlXG4gICAgICAgIGlmKG92ZXJmbG93biA9PSB0cnVlKSB7XG5cbiAgICAgICAgICAvLyBEb24ndCBib3RoZXIgc2V0dGluZyB3aWR0aCBldGMuIGlmIHRoZSBicm93c2VyIGlzIG5vdCB3aWRlXG4gICAgICAgICAgaWYod3JhcHBlcl93aWR0aCA+PSAxNDAwKSB7XG4gICAgICAgICAgICAkKGVsZW1lbnQpLnBhcmVudCgpLmFkZENsYXNzKCdvdmVyZmxvdycpLmNzcyh7XG4gICAgICAgICAgICAgICdoZWlnaHQnIDogaGVpZ2h0ICsgMixcbiAgICAgICAgICAgICAgJ3dpZHRoJyA6IHdyYXBwZXJfd2lkdGgsXG4gICAgICAgICAgICAgICdsZWZ0JyA6IGxlZnRcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFJlbmRlciBhIHNjcm9sbCBpbmRpY2F0b3Igd2hlbiBuZWVkZWQgYW5kIGJ1aWxkIGluIGEgMjBweCB0b2xlcmFuY2VcbiAgICAgICAgICBpZih0YWJsZV93aWR0aCA+ICh3cmFwcGVyX3dpZHRoICsgMjApKSB7XG4gICAgICAgICAgICAkKGVsZW1lbnQpLmFmdGVyKCc8ZGl2IGNsYXNzPVwidGFibGUtb3ZlcmZsb3dcIj5TY3JvbGwgPHNwYW4gY2xhc3M9XCJmYSBmYS1hcnJvdy1yaWdodFwiPjwvc3Bhbj48L2Rpdj4nKTtcbiAgICAgICAgICAgIC8vIEhpZGUgdGhlIHNjcm9sbCBpbmRpY2F0b3Igb25jZSB0aGUgdXNlciBzdGFydHMgdG8gc2Nyb2xsXG4gICAgICAgICAgICB2YXIgbGFzdFBvcyA9IDA7XG4gICAgICAgICAgICAkKGVsZW1lbnQpLnBhcmVudCgpLnNjcm9sbChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgdmFyIGN1cnJQb3MgPSAkKGVsZW1lbnQpLnBhcmVudCgpLnNjcm9sbExlZnQoKTtcbiAgICAgICAgICAgICAgaWYgKGxhc3RQb3MgPCBjdXJyUG9zKSB7XG4gICAgICAgICAgICAgICAgJChlbGVtZW50KS5zaWJsaW5ncygnLnRhYmxlLW92ZXJmbG93JykuaGlkZSgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAkKGVsZW1lbnQpLnBhcmVudCgnLnRhYmxlLXdyYXBwZXInKS5jc3MoJ292ZXJmbG93JywgJ3Zpc2libGUnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuXG4gICAgJC5mbi5vdmVyZmxvd25fd2lkdGg9ZnVuY3Rpb24oKXt2YXIgZT10aGlzWzBdO3JldHVybiBlLnNjcm9sbFdpZHRoPmUuY2xpZW50V2lkdGg7fVxuXG4gICAgJCh3aW5kb3cpLmxvYWQoZnVuY3Rpb24oKSB7XG4gICAgICB0YWJsZU92ZXJmbG93KCk7XG4gICAgfSk7XG5cbiAgICAkKHdpbmRvdykucmVzaXplKGZ1bmN0aW9uKCkge1xuICAgICAgdGFibGVPdmVyZmxvdygpO1xuICAgIH0pO1xuXG5cbiAgfSk7XG5cbn0pKGpRdWVyeSk7XG4iLCIvKipcbiAqIEBmaWxlXG4gKiBBIEphdmFTY3JpcHQgZmlsZSBmb3IgdGhlIHRoZW1lLlxuICpcbiAqIEluIG9yZGVyIGZvciB0aGlzIEphdmFTY3JpcHQgdG8gYmUgbG9hZGVkIG9uIHBhZ2VzLCBzZWUgdGhlIGluc3RydWN0aW9ucyBpblxuICogdGhlIFJFQURNRS50eHQgbmV4dCB0byB0aGlzIGZpbGUuXG4gKi9cblxuLy8gSmF2YVNjcmlwdCBzaG91bGQgYmUgbWFkZSBjb21wYXRpYmxlIHdpdGggbGlicmFyaWVzIG90aGVyIHRoYW4galF1ZXJ5IGJ5XG4vLyB3cmFwcGluZyBpdCB3aXRoIGFuIFwiYW5vbnltb3VzIGNsb3N1cmVcIi4gU2VlOlxuLy8gLSBodHRwczovL2RydXBhbC5vcmcvbm9kZS8xNDQ2NDIwXG4vLyAtIGh0dHA6Ly93d3cuYWRlcXVhdGVseWdvb2QuY29tLzIwMTAvMy9KYXZhU2NyaXB0LU1vZHVsZS1QYXR0ZXJuLUluLURlcHRoXG4oZnVuY3Rpb24gKCQpIHtcblxuICAgIC8vVE9ETyBjbGVhbiB1cFxuICAgIC8vQ29tbWEgU2VwZXJhdGVkIEF1dGhvcnMgLyBOb24gQXV0aG9yc1xuICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7XG5cblxuICAgICAgaWYoJCgnLmdyb3VwLXB1YmxpY2F0aW9uLWF1dGhvcnMnKS5maW5kKCcuZmllbGQtLW5pc3QtYXV0aG9ycycpLmxlbmd0aCAhPSAwICYmICQoJy5ncm91cC1wdWJsaWNhdGlvbi1hdXRob3JzJykuZmluZCgnLmZpZWxkLS1ub24tbmlzdC1hdXRob3JzJykubGVuZ3RoICE9IDApe1xuXG4gICAgICAgICQoJy5ncm91cC1wdWJsaWNhdGlvbi1hdXRob3JzIC5maWVsZC0tbmlzdC1hdXRob3JzIC50ZXh0Zm9ybWF0dGVyLWxpc3QnKS5hcHBlbmQoJywgJylcblxuICAgICAgfVxuXG4gICAgfSk7XG5cblxuICAgIC8vVE9ETyBDTEVBTlxuICAgIC8vRmFrZSBtZW51IGl0ZW1zIGluIG1lZ2EgbWVudVxuXG4gICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXtcblxuICAgICAgJCgnLm1lZ2FtZW51LWZha2UtbGluaycpLmNsaWNrKGZ1bmN0aW9uKGUpe1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9KTtcblxuICAgIH0pO1xuXG5cblxuXG5cblxuXG5cbiAgICAvL1RPRE8gQ0xFQU4gVVBcbiAgICAvL0dUcmFuc2xhdGUgQWNjZXNzaWJpbGl0eVxuXG4gICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXtcblxuXG4gICAgICAkKCcjYmxvY2stZ3RyYW5zbGF0ZS1ndHJhbnNsYXRlIHNlbGVjdCcpLmF0dHIoJ25hbWUnLCAnZ29vZ2xlX3RyYW5zbGF0ZScpLmF0dHIoJ2lkJywgJ2dvb2dsZV90cmFuc2xhdGUnKS5iZWZvcmUoJzxsYWJlbCBjbGFzcz1cImVsZW1lbnQtaW52aXNpYmxlXCIgZm9yPVwiZ29vZ2xlX3RyYW5zbGF0ZVwiPlRyYW5zbGF0ZTwvbGFiZWw+Jyk7XG5cbiAgICB9KTtcblxuXG5cblxuXG4gICAgLy9UT0RPIENsZWFuIFVwXG4gICAgLy9MZWZ0IEhhbmQgRXhwb3NlZCBGaWx0ZXJzIFN0YXJ0IE9wZW4/XG5cbiAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe1xuXG5cbiAgICAgICQoJy5wYW5lbC1yZWdpb24tLWxlZnQtc2lkZWJhciBmaWVsZHNldC5jb2xsYXBzaWJsZScpLnJlbW92ZUNsYXNzKCdjb2xsYXBzZWQnKTtcblxuXG5cbiAgICB9KTtcblxuXG5cblxuICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7XG4gICAgICAkKFwiI2Nib3hQcmV2aW91c1wiKS5hcHBlbmQoXCJQcmV2PC9idXR0b24+XCIpXG4gICAgICAkKFwiI2Nib3hQcmV2aW91c1wiKS5hdHRyKFwidmFsdWVcIiwgXCJQcmV2aW91cyBJdGVtXCIpO1xuXG4gICAgICAkKFwiI2Nib3hOZXh0XCIpLmFwcGVuZChcIk5leHQ8L2J1dHRvbj5cIilcbiAgICAgICQoXCIjY2JveE5leHRcIikuYXR0cihcInZhbHVlXCIsIFwiTmV4dCBJdGVtXCIpO1xuXG4gICAgICAkKFwiI2Nib3hTbGlkZXNob3dcIikuYXBwZW5kKFwiU2xpZGVzaG93PC9idXR0b24+XCIpXG4gICAgICAkKFwiI2Nib3hTbGlkZXNob3dcIikuYXR0cihcInZhbHVlXCIsIFwiU2xpZGVzaG93XCIpO1xuXG4gICAgfSk7XG5cblxuXG4gICAgLy99KTtcblxuICAgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkge1xuICAgICAgJChcImh0bWxcIikucmVtb3ZlQ2xhc3MoXCJuby1qc1wiKS5hZGRDbGFzcyhcImpzXCIpO1xuICAgIH0pO1xuXG5cblxufSkoalF1ZXJ5KTtcbiIsIihmdW5jdGlvbiAoJCkge1xuXG5cblxuICAvL1RPRE8gQ0xFQU4gVVBcbiAgLy9TZWxlY3Qgb3IgZGllXG4gICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7XG5cblxuICAgICQoJyNibG9jay1ndHJhbnNsYXRlLWd0cmFuc2xhdGUgc2VsZWN0Jykuc2VsZWN0T3JEaWUoe1xuICAgICAgY3VzdG9tQ2xhc3M6ICd0cmFuc2xhdGUtc2VsZWN0JyxcbiAgICAgIHNpemU6IDEwXG4gICAgfSk7XG5cbiAgICAvL09ubHkgYXBwbHkgdG8gbm9uLW11bHRpcGxlIHNlbGVjdHMgYW5kIG5vdCB0byB0ZXJtIHdpdGggZGVwdGggZmlsdGVyc1xuICAgIC8vVGhvc2UgdXNlIGNob3NlblxuICAgICQoJyNtYWluIHNlbGVjdDpub3QoW211bHRpcGxlXSknKS5ub3QoJyNlZGl0LXRlcm0tbm9kZS10aWQtZGVwdGgsI2VkaXQtdGVybS1ub2RlLXRpZC1kZXB0aC0xLC5uby1zb2QnKS5zZWxlY3RPckRpZSh7XG4gICAgICBjdXN0b21DbGFzczogJ3N0YW5kYXJkLXNlbGVjdCcsXG4gICAgICBzaXplOiAxMFxuICAgIH0pO1xuXG5cblxuXG4gIH0pO1xuXG4gIC8vZ2V0IHNpZGViYXIgc2VsZWN0cyB0byByZXNpemVcblxuICAkKHdpbmRvdykubG9hZChmdW5jdGlvbigpe1xuICAgIHZhciBsZWZ0Q29sV2lkdGggPSAkKCcucGFuZWwtcmVnaW9uLS1sZWZ0LXNpZGViYXIgLnZpZXdzLXdpZGdldC1maWx0ZXItc2Vjb25kYXJ5Jykud2lkdGgoKTtcblxuICAgICQoJy5wYW5lbC1yZWdpb24tLWxlZnQtc2lkZWJhciAuc29kX3NlbGVjdCcpLmNzcygnd2lkdGgnLCBsZWZ0Q29sV2lkdGgtNDArJ3B4Jyk7XG4gICAgJCgnLnBhbmVsLXJlZ2lvbi0tbGVmdC1zaWRlYmFyIC5zb2RfbGlzdF93cmFwcGVyJykuY3NzKCd3aWR0aCcsIGxlZnRDb2xXaWR0aC00MCsncHgnKTtcbiAgfSk7XG5cbiAgJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbigpe1xuICAgIHZhciBsZWZ0Q29sV2lkdGggPSAkKCcucGFuZWwtcmVnaW9uLS1sZWZ0LXNpZGViYXIgLnZpZXdzLXdpZGdldC1maWx0ZXItc2Vjb25kYXJ5Jykud2lkdGgoKTtcblxuICAgICQoJy5wYW5lbC1yZWdpb24tLWxlZnQtc2lkZWJhciAuc29kX3NlbGVjdCcpLmNzcygnd2lkdGgnLCBsZWZ0Q29sV2lkdGgtNDArJ3B4Jyk7XG4gICAgJCgnLnBhbmVsLXJlZ2lvbi0tbGVmdC1zaWRlYmFyIC5zb2RfbGlzdF93cmFwcGVyJykuY3NzKCd3aWR0aCcsIGxlZnRDb2xXaWR0aC00MCsncHgnKTtcbiAgfSk7XG5cblxufSkoalF1ZXJ5KTtcbiIsIi8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gKlxuICogIE5hbWU6ICAgICAgICAgIHNlbGVjdG9yZGllLm1pbi5qc1xuICogIFVwZGF0ZWQ6ICAgICAgIDIwMTQtMTAtMTFcbiAqICBWZXJzaW9uOiAgICAgICAwLjEuOFxuICogIENyZWF0ZWQgYnk6ICAgIFBlciBWIEAgVnN0Lm1uXG4gKiAgV2hhdD86ICAgICAgICAgTWluaWZpZWQgdmVyc2lvbiBvZiB0aGUgU2VsZWN0IG9yIERpZSBKU1xuICpcbiAqICBDb3B5cmlnaHQgKGMpIDIwMTQgUGVyIFZlc3RtYW5cbiAqICBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBsaWNlbnNlcy5cbiAqXG4gKiAgQmVhcmRzLCBSb2NrICYgTG91ZCBHdW5zIHwgQ29ncyAnbiBLZWdzXG4gKlxuICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi9cblxuIWZ1bmN0aW9uKGEpe1widXNlIHN0cmljdFwiO2EuZm4uc2VsZWN0T3JEaWU9ZnVuY3Rpb24oYil7dmFyIGYsZyxjPXtjdXN0b21JRDpudWxsLGN1c3RvbUNsYXNzOlwiXCIscGxhY2Vob2xkZXI6bnVsbCxwbGFjZWhvbGRlck9wdGlvbjohMSxwcmVmaXg6bnVsbCxjeWNsZTohMSxzdHJpcEVtcHR5OiExLGxpbmtzOiExLGxpbmtzRXh0ZXJuYWw6ITEsc2l6ZTowLHRhYkluZGV4OjAsb25DaGFuZ2U6YS5ub29wfSxkPXt9LGU9ITEsaD17aW5pdFNvRDpmdW5jdGlvbihiKXtyZXR1cm4gZD1hLmV4dGVuZCh7fSxjLGIpLHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKGEodGhpcykucGFyZW50KCkuaGFzQ2xhc3MoXCJzb2Rfc2VsZWN0XCIpKWNvbnNvbGUubG9nKFwiU2VsZWN0IG9yIERpZTogSXQgbG9va3MgbGlrZSB0aGUgU29EIGFscmVhZHkgZXhpc3RzXCIpO2Vsc2V7dmFyIHUsdix3LGI9YSh0aGlzKSxjPWIuZGF0YShcImN1c3RvbS1pZFwiKT9iLmRhdGEoXCJjdXN0b20taWRcIik6ZC5jdXN0b21JRCxlPWIuZGF0YShcImN1c3RvbS1jbGFzc1wiKT9iLmRhdGEoXCJjdXN0b20tY2xhc3NcIik6ZC5jdXN0b21DbGFzcyxmPWIuZGF0YShcInByZWZpeFwiKT9iLmRhdGEoXCJwcmVmaXhcIik6ZC5wcmVmaXgsZz1iLmRhdGEoXCJwbGFjZWhvbGRlclwiKT9iLmRhdGEoXCJwbGFjZWhvbGRlclwiKTpkLnBsYWNlaG9sZGVyLGk9Yi5kYXRhKFwicGxhY2Vob2xkZXItb3B0aW9uXCIpP2IuZGF0YShcInBsYWNlaG9sZGVyLW9wdGlvblwiKTpkLnBsYWNlaG9sZGVyT3B0aW9uLGo9Yi5kYXRhKFwiY3ljbGVcIik/Yi5kYXRhKFwiY3ljbGVcIik6ZC5jeWNsZSxrPWIuZGF0YShcImxpbmtzXCIpP2IuZGF0YShcImxpbmtzXCIpOmQubGlua3MsbD1iLmRhdGEoXCJsaW5rcy1leHRlcm5hbFwiKT9iLmRhdGEoXCJsaW5rcy1leHRlcm5hbFwiKTpkLmxpbmtzRXh0ZXJuYWwsbT1wYXJzZUludChiLmRhdGEoXCJzaXplXCIpKT9iLmRhdGEoXCJzaXplXCIpOmQuc2l6ZSxuPXBhcnNlSW50KGIuZGF0YShcInRhYmluZGV4XCIpKT9iLmRhdGEoXCJ0YWJpbmRleFwiKTpkLnRhYkluZGV4P2QudGFiSW5kZXg6Yi5hdHRyKFwidGFiaW5kZXhcIik/Yi5hdHRyKFwidGFiaW5kZXhcIik6ZC50YWJJbmRleCxvPWIuZGF0YShcInN0cmlwLWVtcHR5XCIpP2IuZGF0YShcInN0cmlwLWVtcHR5XCIpOmQuc3RyaXBFbXB0eSxwPWIucHJvcChcInRpdGxlXCIpP2IucHJvcChcInRpdGxlXCIpOm51bGwscT1iLmlzKFwiOmRpc2FibGVkXCIpP1wiIGRpc2FibGVkXCI6XCJcIixyPVwiXCIscz1cIlwiLHQ9MDtmJiYocj0nPHNwYW4gY2xhc3M9XCJzb2RfcHJlZml4XCI+JytmK1wiPC9zcGFuPiBcIikscys9ZyYmIWY/JzxzcGFuIGNsYXNzPVwic29kX2xhYmVsIHNvZF9wbGFjZWhvbGRlclwiPicrZytcIjwvc3Bhbj5cIjonPHNwYW4gY2xhc3M9XCJzb2RfbGFiZWxcIj4nK3IrXCI8L3NwYW4+XCIsdT1hKFwiPHNwYW4vPlwiLHtpZDpjLFwiY2xhc3NcIjpcInNvZF9zZWxlY3QgXCIrZStxLHRpdGxlOnAsdGFiaW5kZXg6bixodG1sOnMsXCJkYXRhLWN5Y2xlXCI6aixcImRhdGEtbGlua3NcIjprLFwiZGF0YS1saW5rcy1leHRlcm5hbFwiOmwsXCJkYXRhLXBsYWNlaG9sZGVyXCI6ZyxcImRhdGEtcGxhY2Vob2xkZXItb3B0aW9uXCI6aSxcImRhdGEtcHJlZml4XCI6ZixcImRhdGEtZmlsdGVyXCI6XCJcIn0pLmluc2VydEFmdGVyKHRoaXMpLGguaXNUb3VjaCgpJiZ1LmFkZENsYXNzKFwidG91Y2hcIiksdj1hKFwiPHNwYW4vPlwiLHtcImNsYXNzXCI6XCJzb2RfbGlzdF93cmFwcGVyXCJ9KS5hcHBlbmRUbyh1KSx3PWEoXCI8c3Bhbi8+XCIse1wiY2xhc3NcIjpcInNvZF9saXN0XCJ9KS5hcHBlbmRUbyh2KSxhKFwib3B0aW9uLCBvcHRncm91cFwiLGIpLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9YSh0aGlzKTtvJiYhYS50cmltKGMudGV4dCgpKT9jLnJlbW92ZSgpOjA9PT1iJiZpJiYhcj9oLnBvcHVsYXRlU29EKGMsdyx1LCEwKTpoLnBvcHVsYXRlU29EKGMsdyx1LCExKX0pLG0mJih2LnNob3coKSxhKFwiLnNvZF9vcHRpb246bHQoXCIrbStcIilcIix3KS5lYWNoKGZ1bmN0aW9uKCl7dCs9YSh0aGlzKS5vdXRlckhlaWdodCgpfSksdi5yZW1vdmVBdHRyKFwic3R5bGVcIiksdy5jc3Moe1wibWF4LWhlaWdodFwiOnR9KSksYi5hcHBlbmRUbyh1KSx1Lm9uKFwiZm9jdXNpblwiLGguZm9jdXNTb2QpLm9uKFwiY2xpY2tcIixoLnRyaWdnZXJTb2QpLm9uKFwiY2xpY2tcIixcIi5zb2Rfb3B0aW9uXCIsaC5vcHRpb25DbGljaykub24oXCJtb3VzZW1vdmVcIixcIi5zb2Rfb3B0aW9uXCIsaC5vcHRpb25Ib3Zlcikub24oXCJrZXlkb3duXCIsaC5rZXlib2FyZFVzZSksYi5vbihcImNoYW5nZVwiLGguc2VsZWN0Q2hhbmdlKSxhKGRvY3VtZW50KS5vbihcImNsaWNrXCIsXCJsYWJlbFtmb3I9J1wiK2IuYXR0cihcImlkXCIpK1wiJ11cIixmdW5jdGlvbihhKXthLnByZXZlbnREZWZhdWx0KCksdS5mb2N1cygpfSl9fSl9LHBvcHVsYXRlU29EOmZ1bmN0aW9uKGIsYyxkLGUpe3ZhciBmPWQuZGF0YShcInBsYWNlaG9sZGVyXCIpLGc9ZC5kYXRhKFwicGxhY2Vob2xkZXItb3B0aW9uXCIpLGg9ZC5kYXRhKFwicHJlZml4XCIpLGk9ZC5maW5kKFwiLnNvZF9sYWJlbFwiKSxqPWIucGFyZW50KCksaz1iLnRleHQoKSxsPWIudmFsKCksbT1iLmRhdGEoXCJjdXN0b20taWRcIik/Yi5kYXRhKFwiY3VzdG9tLWlkXCIpOm51bGwsbj1iLmRhdGEoXCJjdXN0b20tY2xhc3NcIik/Yi5kYXRhKFwiY3VzdG9tLWNsYXNzXCIpOlwiXCIsbz1iLmlzKFwiOmRpc2FibGVkXCIpP1wiIGRpc2FibGVkIFwiOlwiXCIscD1iLmlzKFwiOnNlbGVjdGVkXCIpP1wiIHNlbGVjdGVkIGFjdGl2ZSBcIjpcIlwiLHE9Yi5kYXRhKFwibGlua1wiKT9cIiBsaW5rIFwiOlwiXCIscj1iLmRhdGEoXCJsaW5rLWV4dGVybmFsXCIpP1wiIGxpbmtleHRlcm5hbFwiOlwiXCIscz1iLnByb3AoXCJsYWJlbFwiKTtiLmlzKFwib3B0aW9uXCIpPyhhKFwiPHNwYW4vPlwiLHtcImNsYXNzXCI6XCJzb2Rfb3B0aW9uIFwiK24rbytwK3ErcixpZDptLHRpdGxlOmssaHRtbDprLFwiZGF0YS12YWx1ZVwiOmx9KS5hcHBlbmRUbyhjKSxlJiYhaD8oZC5kYXRhKFwibGFiZWxcIixrKSxkLmRhdGEoXCJwbGFjZWhvbGRlclwiLGspLGIucHJvcChcImRpc2FibGVkXCIsITApLGMuZmluZChcIi5zb2Rfb3B0aW9uOmxhc3RcIikuYWRkQ2xhc3MoXCJpcy1wbGFjZWhvbGRlciBkaXNhYmxlZFwiKSxwJiZpLmFkZENsYXNzKFwic29kX3BsYWNlaG9sZGVyXCIpKTpwJiZmJiYhZyYmIWg/ZC5kYXRhKFwibGFiZWxcIixmKTpwJiZkLmRhdGEoXCJsYWJlbFwiLGspLChwJiYhZnx8cCYmZ3x8cCYmaCkmJmkuYXBwZW5kKGspLGouaXMoXCJvcHRncm91cFwiKSYmKGMuZmluZChcIi5zb2Rfb3B0aW9uOmxhc3RcIikuYWRkQ2xhc3MoXCJncm91cGNoaWxkXCIpLGouaXMoXCI6ZGlzYWJsZWRcIikmJmMuZmluZChcIi5zb2Rfb3B0aW9uOmxhc3RcIikuYWRkQ2xhc3MoXCJkaXNhYmxlZFwiKSkpOmEoXCI8c3Bhbi8+XCIse1wiY2xhc3NcIjpcInNvZF9vcHRpb24gb3B0Z3JvdXAgXCIrbyx0aXRsZTpzLGh0bWw6cyxcImRhdGEtbGFiZWxcIjpzfSkuYXBwZW5kVG8oYyl9LGZvY3VzU29kOmZ1bmN0aW9uKCl7dmFyIGI9YSh0aGlzKTtiLmhhc0NsYXNzKFwiZGlzYWJsZWRcIik/aC5ibHVyU29kKGIpOihoLmJsdXJTb2QoYShcIi5zb2Rfc2VsZWN0LmZvY3VzXCIpLm5vdChiKSksYi5hZGRDbGFzcyhcImZvY3VzXCIpLGEoXCJodG1sXCIpLm9uKFwiY2xpY2suc29kQmx1clwiLGZ1bmN0aW9uKCl7aC5ibHVyU29kKGIpfSkpfSx0cmlnZ2VyU29kOmZ1bmN0aW9uKGIpe2Iuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGM9YSh0aGlzKSxkPWMuZmluZChcIi5zb2RfbGlzdFwiKSxlPWMuZGF0YShcInBsYWNlaG9sZGVyXCIpLGY9Yy5maW5kKFwiLmFjdGl2ZVwiKSxpPWMuZmluZChcIi5zZWxlY3RlZFwiKTtjLmhhc0NsYXNzKFwiZGlzYWJsZWRcIil8fGMuaGFzQ2xhc3MoXCJvcGVuXCIpfHxjLmhhc0NsYXNzKFwidG91Y2hcIik/KGNsZWFyVGltZW91dChnKSxjLnJlbW92ZUNsYXNzKFwib3BlblwiKSxlJiYoYy5maW5kKFwiLnNvZF9sYWJlbFwiKS5nZXQoMCkubGFzdENoaWxkLm5vZGVWYWx1ZT1mLnRleHQoKSkpOihjLmFkZENsYXNzKFwib3BlblwiKSxlJiYhYy5kYXRhKFwicHJlZml4XCIpJiZjLmZpbmQoXCIuc29kX2xhYmVsXCIpLmFkZENsYXNzKFwic29kX3BsYWNlaG9sZGVyXCIpLmh0bWwoZSksaC5saXN0U2Nyb2xsKGQsaSksaC5jaGVja1ZpZXdwb3J0KGMsZCkpfSxrZXlib2FyZFVzZTpmdW5jdGlvbihiKXt2YXIgbCxtLG4sYz1hKHRoaXMpLGQ9Yy5maW5kKFwiLnNvZF9saXN0XCIpLGc9Yy5maW5kKFwiLnNvZF9vcHRpb25cIiksaT1jLmZpbmQoXCIuc29kX2xhYmVsXCIpLGo9Yy5kYXRhKFwiY3ljbGVcIiksaz1nLmZpbHRlcihcIi5hY3RpdmVcIik7cmV0dXJuIGIud2hpY2g+MzYmJmIud2hpY2g8NDE/KDM3PT09Yi53aGljaHx8Mzg9PT1iLndoaWNoPyhtPWsucHJldkFsbChcIjpub3QoJy5kaXNhYmxlZCwgLm9wdGdyb3VwJylcIikuZmlyc3QoKSxuPWcubm90KFwiLmRpc2FibGVkLCAub3B0Z3JvdXBcIikubGFzdCgpKTooMzk9PT1iLndoaWNofHw0MD09PWIud2hpY2gpJiYobT1rLm5leHRBbGwoXCI6bm90KCcuZGlzYWJsZWQsIC5vcHRncm91cCcpXCIpLmZpcnN0KCksbj1nLm5vdChcIi5kaXNhYmxlZCwgLm9wdGdyb3VwXCIpLmZpcnN0KCkpLCFtLmhhc0NsYXNzKFwic29kX29wdGlvblwiKSYmaiYmKG09biksKG0uaGFzQ2xhc3MoXCJzb2Rfb3B0aW9uXCIpfHxqKSYmKGsucmVtb3ZlQ2xhc3MoXCJhY3RpdmVcIiksbS5hZGRDbGFzcyhcImFjdGl2ZVwiKSxpLmdldCgwKS5sYXN0Q2hpbGQubm9kZVZhbHVlPW0udGV4dCgpLGgubGlzdFNjcm9sbChkLG0pLGMuaGFzQ2xhc3MoXCJvcGVuXCIpfHwoZT0hMCkpLCExKTooMTM9PT1iLndoaWNofHwzMj09PWIud2hpY2gmJmMuaGFzQ2xhc3MoXCJvcGVuXCIpJiYoXCIgXCI9PT1jLmRhdGEoXCJmaWx0ZXJcIilbMF18fFwiXCI9PT1jLmRhdGEoXCJmaWx0ZXJcIikpPyhiLnByZXZlbnREZWZhdWx0KCksay5jbGljaygpKTozMiE9PWIud2hpY2h8fGMuaGFzQ2xhc3MoXCJvcGVuXCIpfHxcIiBcIiE9PWMuZGF0YShcImZpbHRlclwiKVswXSYmXCJcIiE9PWMuZGF0YShcImZpbHRlclwiKT8yNz09PWIud2hpY2gmJmguYmx1clNvZChjKTooYi5wcmV2ZW50RGVmYXVsdCgpLGU9ITEsYy5jbGljaygpKSwwIT09Yi53aGljaCYmKGNsZWFyVGltZW91dChmKSxjLmRhdGEoXCJmaWx0ZXJcIixjLmRhdGEoXCJmaWx0ZXJcIikrU3RyaW5nLmZyb21DaGFyQ29kZShiLndoaWNoKSksbD1nLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiAwPT09YSh0aGlzKS50ZXh0KCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKGMuZGF0YShcImZpbHRlclwiKS50b0xvd2VyQ2FzZSgpKX0pLm5vdChcIi5kaXNhYmxlZCwgLm9wdGdyb3VwXCIpLmZpcnN0KCksbC5sZW5ndGgmJihrLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpLGwuYWRkQ2xhc3MoXCJhY3RpdmVcIiksaC5saXN0U2Nyb2xsKGQsbCksaS5nZXQoMCkubGFzdENoaWxkLm5vZGVWYWx1ZT1sLnRleHQoKSxjLmhhc0NsYXNzKFwib3BlblwiKXx8KGU9ITApKSxmPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtjLmRhdGEoXCJmaWx0ZXJcIixcIlwiKX0sNTAwKSksdm9pZCAwKX0sb3B0aW9uSG92ZXI6ZnVuY3Rpb24oKXt2YXIgYj1hKHRoaXMpO2IuaGFzQ2xhc3MoXCJkaXNhYmxlZFwiKXx8Yi5oYXNDbGFzcyhcIm9wdGdyb3VwXCIpfHxiLnNpYmxpbmdzKCkucmVtb3ZlQ2xhc3MoXCJhY3RpdmVcIikuZW5kKCkuYWRkQ2xhc3MoXCJhY3RpdmVcIil9LG9wdGlvbkNsaWNrOmZ1bmN0aW9uKGIpe2Iuc3RvcFByb3BhZ2F0aW9uKCk7dmFyIGM9YSh0aGlzKSxkPWMuY2xvc2VzdChcIi5zb2Rfc2VsZWN0XCIpLGU9Yy5oYXNDbGFzcyhcImRpc2FibGVkXCIpLGY9Yy5oYXNDbGFzcyhcIm9wdGdyb3VwXCIpLGg9ZC5maW5kKFwiLnNvZF9vcHRpb246bm90KCcub3B0Z3JvdXAnKVwiKS5pbmRleCh0aGlzKTtkLmhhc0NsYXNzKFwidG91Y2hcIil8fChlfHxmfHwoZC5maW5kKFwiLnNlbGVjdGVkLCAuc29kX3BsYWNlaG9sZGVyXCIpLnJlbW92ZUNsYXNzKFwic2VsZWN0ZWQgc29kX3BsYWNlaG9sZGVyXCIpLGMuYWRkQ2xhc3MoXCJzZWxlY3RlZFwiKSxkLmZpbmQoXCJzZWxlY3Qgb3B0aW9uXCIpW2hdLnNlbGVjdGVkPSEwLGQuZmluZChcInNlbGVjdFwiKS5jaGFuZ2UoKSksY2xlYXJUaW1lb3V0KGcpLGQucmVtb3ZlQ2xhc3MoXCJvcGVuXCIpKX0sc2VsZWN0Q2hhbmdlOmZ1bmN0aW9uKCl7dmFyIGI9YSh0aGlzKSxjPWIuZmluZChcIjpzZWxlY3RlZFwiKSxlPWMudGV4dCgpLGY9Yi5jbG9zZXN0KFwiLnNvZF9zZWxlY3RcIik7Zi5maW5kKFwiLnNvZF9sYWJlbFwiKS5nZXQoMCkubGFzdENoaWxkLm5vZGVWYWx1ZT1lLGYuZGF0YShcImxhYmVsXCIsZSksZC5vbkNoYW5nZS5jYWxsKHRoaXMpLCFmLmRhdGEoXCJsaW5rc1wiKSYmIWMuZGF0YShcImxpbmtcIil8fGMuZGF0YShcImxpbmstZXh0ZXJuYWxcIik/KGYuZGF0YShcImxpbmtzLWV4dGVybmFsXCIpfHxjLmRhdGEoXCJsaW5rLWV4dGVybmFsXCIpKSYmd2luZG93Lm9wZW4oYy52YWwoKSxcIl9ibGFua1wiKTp3aW5kb3cubG9jYXRpb24uaHJlZj1jLnZhbCgpfSxibHVyU29kOmZ1bmN0aW9uKGIpe2lmKGEoXCJib2R5XCIpLmZpbmQoYikubGVuZ3RoKXt2YXIgYz1iLmRhdGEoXCJsYWJlbFwiKSxkPWIuZGF0YShcInBsYWNlaG9sZGVyXCIpLGY9Yi5maW5kKFwiLmFjdGl2ZVwiKSxoPWIuZmluZChcIi5zZWxlY3RlZFwiKSxpPSExO2NsZWFyVGltZW91dChnKSxlJiYhZi5oYXNDbGFzcyhcInNlbGVjdGVkXCIpPyhmLmNsaWNrKCksaT0hMCk6Zi5oYXNDbGFzcyhcInNlbGVjdGVkXCIpfHwoZi5yZW1vdmVDbGFzcyhcImFjdGl2ZVwiKSxoLmFkZENsYXNzKFwiYWN0aXZlXCIpKSwhaSYmZD9iLmZpbmQoXCIuc29kX2xhYmVsXCIpLmdldCgwKS5sYXN0Q2hpbGQubm9kZVZhbHVlPWgudGV4dCgpOml8fChiLmZpbmQoXCIuc29kX2xhYmVsXCIpLmdldCgwKS5sYXN0Q2hpbGQubm9kZVZhbHVlPWMpLGU9ITEsYi5yZW1vdmVDbGFzcyhcIm9wZW4gZm9jdXNcIiksYi5ibHVyKCksYShcImh0bWxcIikub2ZmKFwiLnNvZEJsdXJcIil9fSxjaGVja1ZpZXdwb3J0OmZ1bmN0aW9uKGIsYyl7dmFyIGQ9YlswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxlPWMub3V0ZXJIZWlnaHQoKTtkLmJvdHRvbStlKzEwPmEod2luZG93KS5oZWlnaHQoKSYmZC50b3AtZT4xMD9iLmFkZENsYXNzKFwiYWJvdmVcIik6Yi5yZW1vdmVDbGFzcyhcImFib3ZlXCIpLGc9c2V0VGltZW91dChmdW5jdGlvbigpe2guY2hlY2tWaWV3cG9ydChiLGMpfSwyMDApfSxsaXN0U2Nyb2xsOmZ1bmN0aW9uKGEsYil7dmFyIGM9YVswXS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxkPWJbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7Yy50b3A+ZC50b3A/YS5zY3JvbGxUb3AoYS5zY3JvbGxUb3AoKS1jLnRvcCtkLnRvcCk6Yy5ib3R0b208ZC5ib3R0b20mJmEuc2Nyb2xsVG9wKGEuc2Nyb2xsVG9wKCktYy5ib3R0b20rZC5ib3R0b20pfSxpc1RvdWNoOmZ1bmN0aW9uKCl7cmV0dXJuXCJvbnRvdWNoc3RhcnRcImluIHdpbmRvd3x8bmF2aWdhdG9yLk1heFRvdWNoUG9pbnRzPjB8fG5hdmlnYXRvci5tc01heFRvdWNoUG9pbnRzPjB9fSxpPXtkZXN0cm95OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWEodGhpcyksYz1iLnBhcmVudCgpO2MuaGFzQ2xhc3MoXCJzb2Rfc2VsZWN0XCIpPyhiLm9mZihcImNoYW5nZVwiKSxjLmZpbmQoXCJzcGFuXCIpLnJlbW92ZSgpLGIudW53cmFwKCkpOmNvbnNvbGUubG9nKFwiU2VsZWN0IG9yIERpZTogVGhlcmUncyBubyBTb0QgdG8gZGVzdHJveVwiKX0pfSx1cGRhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9YSh0aGlzKSxjPWIucGFyZW50KCksZD1jLmZpbmQoXCIuc29kX2xpc3Q6Zmlyc3RcIik7Yy5oYXNDbGFzcyhcInNvZF9zZWxlY3RcIik/KGQuZW1wdHkoKSxjLmZpbmQoXCIuc29kX2xhYmVsXCIpLmdldCgwKS5sYXN0Q2hpbGQubm9kZVZhbHVlPVwiXCIsYi5pcyhcIjpkaXNhYmxlZFwiKSYmYy5hZGRDbGFzcyhcImRpc2FibGVkXCIpLGEoXCJvcHRpb24sIG9wdGdyb3VwXCIsYikuZWFjaChmdW5jdGlvbigpe2gucG9wdWxhdGVTb0QoYSh0aGlzKSxkLGMpfSkpOmNvbnNvbGUubG9nKFwiU2VsZWN0IG9yIERpZTogVGhlcmUncyBubyBTb0QgdG8gdXBkYXRlXCIpfSl9LGRpc2FibGU6ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBjPWEodGhpcyksZD1jLnBhcmVudCgpO2QuaGFzQ2xhc3MoXCJzb2Rfc2VsZWN0XCIpP1widW5kZWZpbmVkXCIhPXR5cGVvZiBiPyhkLmZpbmQoXCIuc29kX2xpc3Q6Zmlyc3QgLnNvZF9vcHRpb25bZGF0YS12YWx1ZT0nXCIrYitcIiddXCIpLmFkZENsYXNzKFwiZGlzYWJsZWRcIiksZC5maW5kKFwiLnNvZF9saXN0OmZpcnN0IC5zb2Rfb3B0aW9uW2RhdGEtbGFiZWw9J1wiK2IrXCInXVwiKS5uZXh0VW50aWwoXCI6bm90KC5ncm91cGNoaWxkKVwiKS5hZGRDbGFzcyhcImRpc2FibGVkXCIpLGEoXCJvcHRpb25bdmFsdWU9J1wiK2IrXCInXSwgb3B0Z3JvdXBbbGFiZWw9J1wiK2IrXCInXVwiLHRoaXMpLnByb3AoXCJkaXNhYmxlZFwiLCEwKSk6ZC5oYXNDbGFzcyhcInNvZF9zZWxlY3RcIikmJihkLmFkZENsYXNzKFwiZGlzYWJsZWRcIiksYy5wcm9wKFwiZGlzYWJsZWRcIiwhMCkpOmNvbnNvbGUubG9nKFwiU2VsZWN0IG9yIERpZTogVGhlcmUncyBubyBTb0QgdG8gZGlzYWJsZVwiKX0pfSxlbmFibGU6ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBjPWEodGhpcyksZD1jLnBhcmVudCgpO2QuaGFzQ2xhc3MoXCJzb2Rfc2VsZWN0XCIpP1widW5kZWZpbmVkXCIhPXR5cGVvZiBiPyhkLmZpbmQoXCIuc29kX2xpc3Q6Zmlyc3QgLnNvZF9vcHRpb25bZGF0YS12YWx1ZT0nXCIrYitcIiddXCIpLnJlbW92ZUNsYXNzKFwiZGlzYWJsZWRcIiksZC5maW5kKFwiLnNvZF9saXN0OmZpcnN0IC5zb2Rfb3B0aW9uW2RhdGEtbGFiZWw9J1wiK2IrXCInXVwiKS5uZXh0VW50aWwoXCI6bm90KC5ncm91cGNoaWxkKVwiKS5yZW1vdmVDbGFzcyhcImRpc2FibGVkXCIpLGEoXCJvcHRpb25bdmFsdWU9J1wiK2IrXCInXSwgb3B0Z3JvdXBbbGFiZWw9J1wiK2IrXCInXVwiLHRoaXMpLnByb3AoXCJkaXNhYmxlZFwiLCExKSk6ZC5oYXNDbGFzcyhcInNvZF9zZWxlY3RcIikmJihkLnJlbW92ZUNsYXNzKFwiZGlzYWJsZWRcIiksYy5wcm9wKFwiZGlzYWJsZWRcIiwhMSkpOmNvbnNvbGUubG9nKFwiU2VsZWN0IG9yIERpZTogVGhlcmUncyBubyBTb0QgdG8gZW5hYmxlXCIpfSl9fTtyZXR1cm4gaVtiXT9pW2JdLmFwcGx5KHRoaXMsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDEpKTpcIm9iamVjdFwiIT10eXBlb2YgYiYmYj8oYS5lcnJvcignU2VsZWN0IG9yIERpZTogT2ggbm8hIE5vIHN1Y2ggbWV0aG9kIFwiJytiKydcIiBmb3IgdGhlIFNvRCBpbnN0YW5jZScpLHZvaWQgMCk6aC5pbml0U29ELmFwcGx5KHRoaXMsYXJndW1lbnRzKX19KGpRdWVyeSk7XG4iLCIoZnVuY3Rpb24gKCQpIHtcblxuICAvL1RPRE8gQ2xlYW5cbiAgLy9UaW1lbGluZSBMaXN0IFRvZ2dsZVxuICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpe1xuXG4gICAgJCgnI3RpbWVsaW5lX190b2dnbGUtdGltZWxpbmUnKS5jbGljayhmdW5jdGlvbihlKXtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgaWYoJCh0aGlzKS5oYXNDbGFzcygnYWN0aXZlJykpe1xuXG4gICAgICB9ZWxzZXtcblxuICAgICAgICAkKCcudGltZWxpbmUtbGlzdCcpLmZhZGVPdXQoMzAwLGZ1bmN0aW9uKCl7XG4gICAgICAgICAgJCgnLnRpbWVsaW5lLWFjdHVhbCcpLmZhZGVJbigzMDApO1xuICAgICAgICB9KTtcblxuICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCdhY3RpdmUnKTtcbiAgICAgICAgJCgnI3RpbWVsaW5lX190b2dnbGUtbGlzdCcpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTtcbiAgICAgIH1cblxuXG5cblxuICAgIH0pO1xuXG4gICAgJCgnI3RpbWVsaW5lX190b2dnbGUtbGlzdCcpLmNsaWNrKGZ1bmN0aW9uKGUpe1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICBpZigkKHRoaXMpLmhhc0NsYXNzKCdhY3RpdmUnKSl7XG5cbiAgICAgIH1lbHNle1xuXG4gICAgICAgICQoJy50aW1lbGluZS1hY3R1YWwnKS5mYWRlT3V0KDMwMCxmdW5jdGlvbigpe1xuICAgICAgICAgICQoJy50aW1lbGluZS1saXN0JykuZmFkZUluKDMwMCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICAkKCcjdGltZWxpbmVfX3RvZ2dsZS10aW1lbGluZScpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTtcblxuICAgICAgfVxuXG5cblxuICAgIH0pO1xuXG5cbiAgfSk7XG5cbn0pKGpRdWVyeSk7XG4iXSwic291cmNlUm9vdCI6Ii9zb3VyY2UvIn0=
;/**/
;(function ($) {
  Drupal.behaviors.nistStyleFileEntityLinkGa = {
    attach: function (context, settings) {
      var gaEventConfig = {
        category: 'Downloads',
        action: '', // file type
        label: '', // full file url
        value: '0'
      };

      $('.file-entity-link').click(function(event) {
        // Need to manually track file entity link clicks
        // See WWW-1396 in JIRA
        
        var fileUrl = $(this).attr('data-file-url');
        var fileExtension = fileUrl.substr(fileUrl.lastIndexOf('.')+1);

        gaEventConfig.action = fileExtension;
        gaEventConfig.label = fileUrl;

        if (typeof ga !== 'undefined') { 
          // See https://developers.google.com/analytics/devguides/collection/analyticsjs/command-queue-reference#send
          ga('send', 'event', gaEventConfig.category, gaEventConfig.action, gaEventConfig.label, gaEventConfig.value);
        }
      });
    }
  };
})(jQuery);;/**/
