vendor: 28,994 bytes, line 1
1(function(){var l,t,o,r,n={}.hasOwnProperty;function e(){this.options_index=0,this.parsed=[]}function i(t,e){this.form_field=t,this.options=null!=e?e:{},this.label_click_handler=function(t,e){return function(){return t.apply(e,arguments)}}(this.label_click_handler,this),i.browser_is_supported()&&(this.is_multiple=this.form_field.multiple,this.set_default_text(),this.set_default_values(),this.setup(),this.set_up_html(),this.register_observers(),this.on_ready())}function s(){return s.__super__.constructor.apply(this,arguments)}e.prototype.add_node=function(t){return"OPTGROUP"===t.nodeName.toUpperCase()?this.add_group(t):this.add_option(t)},e.prototype.add_group=function(t){var e,i,s,o,n,r;for(e=this.parsed.length,this.parsed.push({array_index:e,group:!0,label:t.label,title:t.title?t.title:void 0,children:0,disabled:t.disabled,classes:t.className}),r=[],i=0,s=(n=t.childNodes).length;i<s;i++)o=n[i],r.push(this.add_option(o,e,t.disabled));return r},e.prototype.add_option=function(t,e,i){if("OPTION"===t.nodeName.toUpperCase())return""!==t.text?(null!=e&&(this.parsed[e].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:t.value,text:t.text,html:t.innerHTML,title:t.title?t.title:void 0,selected:t.selected,disabled:!0===i?i:t.disabled,group_array_index:e,group_label:null!=e?this.parsed[e].label:null,classes:t.className,style:t.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1},(r=e).select_to_array=function(t){var e,i,s,o,n;for(o=new r,i=0,s=(n=t.childNodes).length;i<s;i++)e=n[i],o.add_node(e);return o.parsed},i.prototype.set_default_values=function(){var e,i;return this.click_test_action=(e=this,function(t){return e.test_active_click(t)}),this.activate_action=(i=this,function(t){return i.activate_field(t)}),this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.is_rtl=this.options.rtl||/\bchosen-rtl\b/.test(this.form_field.className),this.allow_single_deselect=null!=this.options.allow_single_deselect&&null!=this.form_field.options[0]&&""===this.form_field.options[0].text&&this.options.allow_single_deselect,this.disable_search_threshold=this.options.disable_search_threshold||0,this.disable_search=this.options.disable_search||!1,this.enable_split_word_search=null==this.options.enable_split_word_search||this.options.enable_split_word_search,this.group_search=null==this.options.group_search||this.options.group_search,this.search_contains=this.options.search_contains||!1,this.single_backstroke_delete=null==this.options.single_backstroke_delete||this.options.single_backstroke_delete,this.max_selected_options=this.options.max_selected_options||1/0,this.inherit_select_classes=this.options.inherit_select_classes||!1,this.display_selected_options=null==this.options.display_selected_options||this.options.display_selected_options,this.display_disabled_options=null==this.options.display_disabled_options||this.options.display_disabled_options,this.include_group_label_in_selected=this.options.include_group_label_in_selected||!1,this.max_shown_results=this.options.max_shown_results||Number.POSITIVE_INFINITY,this.case_sensitive_search=this.options.case_sensitive_search||!1,this.hide_results_on_select=null==this.options.hide_results_on_select||this.options.hide_results_on_select},i.prototype.set_default_text=function(){return this.form_field.getAttribute("data-placeholder")?this.default_text=this.form_field.getAttribute("data-placeholder"):this.is_multiple?this.default_text=this.options.placeholder_text_multiple||this.options.placeholder_text||i.default_multiple_text:this.default_text=this.options.placeholder_text_single||this.options.placeholder_text||i.default_single_text,this.default_text=this.escape_html(this.default_text),this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||i.default_no_result_text},i.prototype.choice_label=function(t){return this.include_group_label_in_selected&&null!=t.group_label?"<b class='group-name'>"+this.escape_html(t.group_label)+"</b>"+t.html:t.html},i.prototype.mouse_enter=function(){return this.mouse_on_container=!0},i.prototype.mouse_leave=function(){return this.mouse_on_container=!1},i.prototype.input_focus=function(t){if(this.is_multiple){if(!this.active_field)return setTimeout((e=this,function(){return e.container_mousedown()}),50)}else if(!this.active_field)return this.activate_field();var e},i.prototype.input_blur=function(t){if(!this.mouse_on_container)return this.active_field=!1,setTimeout((e=this,function(){return e.blur_test()}),100);var e},i.prototype.label_click_handler=function(t){return this.is_multiple?this.container_mousedown(t):this.activate_field()},i.prototype.results_option_build=function(t){var e,i,s,o,n,r,l;for(e="",o=l=0,n=(r=this.results_data).length;o<n&&((s="")!==(s=(i=r[o]).group?this.result_add_group(i):this.result_add_option(i))&&(l++,e+=s),(null!=t?t.first:void 0)&&(i.selected&&this.is_multiple?this.choice_build(i):i.selected&&!this.is_multiple&&this.single_set_selected_text(this.choice_label(i))),!(l>=this.max_shown_results));o++);return e},i.prototype.result_add_option=function(t){var e,i;return t.search_match&&this.include_option_in_results(t)?(e=[],t.disabled||t.selected&&this.is_multiple||e.push("active-result"),!t.disabled||t.selected&&this.is_multiple||e.push("disabled-result"),t.selected&&e.push("result-selected"),null!=t.group_array_index&&e.push("group-option"),""!==t.classes&&e.push(t.classes),(i=document.createElement("li")).className=e.join(" "),t.style&&(i.style.cssText=t.style),i.setAttribute("data-option-array-index",t.array_index),i.innerHTML=t.highlighted_html||t.html,t.title&&(i.title=t.title),this.outerHTML(i)):""},i.prototype.result_add_group=function(t){var e,i;return(t.search_match||t.group_match)&&0<t.active_options?((e=[]).push("group-result"),t.classes&&e.push(t.classes),(i=document.createElement("li")).className=e.join(" "),i.innerHTML=t.highlighted_html||this.escape_html(t.label),t.title&&(i.title=t.title),this.outerHTML(i)):""},i.prototype.results_update_field=function(){if(this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing)return this.winnow_results()},i.prototype.reset_single_select_options=function(){var t,e,i,s,o;for(o=[],t=0,e=(i=this.results_data).length;t<e;t++)(s=i[t]).selected?o.push(s.selected=!1):o.push(void 0);return o},i.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},i.prototype.results_search=function(t){return this.results_showing?this.winnow_results():this.results_show()},i.prototype.winnow_results=function(t){var e,i,s,o,n,r,l,a,d,c,h,p,u,f,_;for(this.no_results_clear(),c=0,e=(l=this.get_search_text()).replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"),d=this.get_search_regex(e),s=0,o=(a=this.results_data).length;s<o;s++)(n=a[s]).search_match=!1,p=h=null,n.highlighted_html="",this.include_option_in_results(n)&&(n.group&&(n.group_match=!1,n.active_options=0),null!=n.group_array_index&&this.results_data[n.group_array_index]&&(0===(h=this.results_data[n.group_array_index]).active_options&&h.search_match&&(c+=1),h.active_options+=1),_=n.group?n.label:n.text,n.group&&!this.group_search||(p=this.search_string_match(_,d),n.search_match=null!=p,n.search_match&&!n.group&&(c+=1),n.search_match?(l.length&&(u=p.index,r=_.slice(0,u),i=_.slice(u,u+l.length),f=_.slice(u+l.length),n.highlighted_html=this.escape_html(r)+"<em>"+this.escape_html(i)+"</em>"+this.escape_html(f)),null!=h&&(h.group_match=!0)):null!=n.group_array_index&&this.results_data[n.group_array_index].search_match&&(n.search_match=!0)));return this.result_clear_highlight(),c<1&&l.length?(this.update_results_content(""),this.no_results(l)):(this.update_results_content(this.results_option_build()),(null!=t?t.skip_highlight:void 0)?void 0:this.winnow_results_set_highlight())},i.prototype.get_search_regex=function(t){var e,i;return i=this.search_contains?t:"(^|\\s|\\b)"+t+"[^\\s]*",this.enable_split_word_search||this.search_contains||(i="^"+i),e=this.case_sensitive_search?"":"i",new RegExp(i,e)},i.prototype.search_string_match=function(t,e){var i;return i=e.exec(t),!this.search_contains&&(null!=i?i[1]:void 0)&&(i.index+=1),i},i.prototype.choices_count=function(){var t,e,i;if(null!=this.selected_option_count)return this.selected_option_count;for(t=this.selected_option_count=0,e=(i=this.form_field.options).length;t<e;t++)i[t].selected&&(this.selected_option_count+=1);return this.selected_option_count},i.prototype.choices_click=function(t){if(t.preventDefault(),this.activate_field(),!this.results_showing&&!this.is_disabled)return this.results_show()},i.prototype.keydown_checker=function(t){var e,i;switch(i=null!=(e=t.which)?e:t.keyCode,this.search_field_scale(),8!==i&&this.pending_backstroke&&this.clear_backstroke(),i){case 8:this.backstroke_length=this.get_search_field_value().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(t),this.mouse_on_container=!1;break;case 13:case 27:this.results_showing&&t.preventDefault();break;case 32:this.disable_search&&t.preventDefault();break;case 38:t.preventDefault(),this.keyup_arrow();break;case 40:t.preventDefault(),this.keydown_arrow()}},i.prototype.keyup_checker=function(t){var e,i;switch(i=null!=(e=t.which)?e:t.keyCode,this.search_field_scale(),i){case 8:this.is_multiple&&this.backstroke_length<1&&0<this.choices_count()?this.keydown_backstroke():this.pending_backstroke||(this.result_clear_highlight(),this.results_search());break;case 13:t.preventDefault(),this.results_showing&&this.result_select(t);break;case 27:this.results_showing&&this.results_hide();break;case 9:case 16:case 17:case 18:case 38:case 40:case 91:break;default:this.results_search()}},i.prototype.clipboard_event_checker=function(t){var e;if(!this.is_disabled)return setTimeout((e=this,function(){return e.results_search()}),50)},i.prototype.container_width=function(){return null!=this.options.width?this.options.width:this.form_field.offsetWidth+"px"},i.prototype.include_option_in_results=function(t){return!(this.is_multiple&&!this.display_selected_options&&t.selected||!this.display_disabled_options&&t.disabled||t.empty)},i.prototype.search_results_touchstart=function(t){return this.touch_started=!0,this.search_results_mouseover(t)},i.prototype.search_results_touchmove=function(t){return this.touch_started=!1,this.search_results_mouseout(t)},i.prototype.search_results_touchend=function(t){if(this.touch_started)return this.search_results_mouseup(t)},i.prototype.outerHTML=function(t){var e;return t.outerHTML?t.outerHTML:((e=document.createElement("div")).appendChild(t),e.innerHTML)},i.prototype.get_single_html=function(){return'<a class="chosen-single chosen-default">\n <span>'+this.default_text+'</span>\n <div><b></b></div>\n</a>\n<div class="chosen-drop">\n <div class="chosen-search">\n <input class="chosen-search-input" type="text" autocomplete="off" />\n </div>\n <ul class="chosen-results"></ul>\n</div>'},i.prototype.get_multi_html=function(){return'<ul class="chosen-choices">\n <li class="search-field">\n <input class="chosen-search-input" type="text" autocomplete="off" value="'+this.default_text+'" />\n </li>\n</ul>\n<div class="chosen-drop">\n <ul class="chosen-results"></ul>\n</div>'},i.prototype.get_no_results_html=function(t){return'<li class="no-results">\n '+this.results_none_found+" <span>"+this.escape_html(t)+"</span>\n</li>"},i.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?8<=document.documentMode:!(/iP(od|hone)/i.test(window.navigator.userAgent)||/IEMobile/i.test(window.navigator.userAgent)||/Windows Phone/i.test(window.navigator.userAgent)||/BlackBerry/i.test(window.navigator.userAgent)||/BB10/i.test(window.navigator.userAgent)||/Android.*Mobile/i.test(window.navigator.userAgent))},i.default_multiple_text="Select Some Options",i.default_single_text="Select an Option",i.default_no_result_text="No results match",t=i,(l=jQuery).fn.extend({chosen:function(s){return t.browser_is_supported()?this.each(function(t){var e,i;i=(e=l(this)).data("chosen"),"destroy"!==s?i instanceof o||e.data("chosen",new o(this,s)):i instanceof o&&i.destroy()}):this}}),function(t,e){for(var i in e)n.call(e,i)&&(t[i]=e[i]);function s(){this.constructor=t}s.prototype=e.prototype,t.prototype=new s,t.__super__=e.prototype}(s,t),s.prototype.setup=function(){return this.form_field_jq=l(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex},s.prototype.set_up_html=function(){var t,e;return(t=["chosen-container"]).push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&t.push(this.form_field.className),this.is_rtl&&t.push("chosen-rtl"),e={class:t.join(" "),title:this.form_field.title},this.form_field.id.length&&(e.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=l("<div />",e),this.container.width(this.container_width()),this.is_multiple?this.container.html(this.get_multi_html()):this.container.html(this.get_single_html()),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior()},s.prototype.on_ready=function(){return this.form_field_jq.trigger("chosen:ready",{chosen:this})},s.prototype.register_observers=function(){var e,i,s,o,n,r,l,a,d,c,h,p,u,f,_,g,v,m,y,w,k,b,S,T;return this.container.on("touchstart.chosen",(e=this,function(t){e.container_mousedown(t)})),this.container.on("touchend.chosen",(i=this,function(t){i.container_mouseup(t)})),this.container.on("mousedown.chosen",(s=this,function(t){s.container_mousedown(t)})),this.container.on("mouseup.chosen",(o=this,function(t){o.container_mouseup(t)})),this.container.on("mouseenter.chosen",(n=this,function(t){n.mouse_enter(t)})),this.container.on("mouseleave.chosen",(r=this,function(t){r.mouse_leave(t)})),this.search_results.on("mouseup.chosen",(l=this,function(t){l.search_results_mouseup(t)})),this.search_results.on("mouseover.chosen",(a=this,function(t){a.search_results_mouseover(t)})),this.search_results.on("mouseout.chosen",(d=this,function(t){d.search_results_mouseout(t)})),this.search_results.on("mousewheel.chosen DOMMouseScroll.chosen",(c=this,function(t){c.search_results_mousewheel(t)})),this.search_results.on("touchstart.chosen",(h=this,function(t){h.search_results_touchstart(t)})),this.search_results.on("touchmove.chosen",(p=this,function(t){p.search_results_touchmove(t)})),this.search_results.on("touchend.chosen",(u=this,function(t){u.search_results_touchend(t)})),this.form_field_jq.on("chosen:updated.chosen",(f=this,function(t){f.results_update_field(t)})),this.form_field_jq.on("chosen:activate.chosen",(_=this,function(t){_.activate_field(t)})),this.form_field_jq.on("chosen:open.chosen",(g=this,function(t){g.container_mousedown(t)})),this.form_field_jq.on("chosen:close.chosen",(v=this,function(t){v.close_field(t)})),this.search_field.on("blur.chosen",(m=this,function(t){m.input_blur(t)})),this.search_field.on("keyup.chosen",(y=this,function(t){y.keyup_checker(t)})),this.search_field.on("keydown.chosen",(w=this,function(t){w.keydown_checker(t)})),this.search_field.on("focus.chosen",(k=this,function(t){k.input_focus(t)})),this.search_field.on("cut.chosen",(b=this,function(t){b.clipboard_event_checker(t)})),this.search_field.on("paste.chosen",(S=this,function(t){S.clipboard_event_checker(t)})),this.is_multiple?this.search_choices.on("click.chosen",(T=this,function(t){T.choices_click(t)})):this.container.on("click.chosen",function(t){t.preventDefault()})},s.prototype.destroy=function(){return l(this.container[0].ownerDocument).off("click.chosen",this.click_test_action),0<this.form_field_label.length&&this.form_field_label.off("click.chosen"),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},s.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field.disabled||this.form_field_jq.parents("fieldset").is(":disabled"),this.container.toggleClass("chosen-disabled",this.is_disabled),this.search_field[0].disabled=this.is_disabled,this.is_multiple||this.selected_item.off("focus.chosen",this.activate_field),this.is_disabled?this.close_field():this.is_multiple?void 0:this.selected_item.on("focus.chosen",this.activate_field)},s.prototype.container_mousedown=function(t){var e;if(!this.is_disabled)return!t||"mousedown"!==(e=t.type)&&"touchstart"!==e||this.results_showing||t.preventDefault(),null!=t&&l(t.target).hasClass("search-choice-close")?void 0:(this.active_field?this.is_multiple||!t||l(t.target)[0]!==this.selected_item[0]&&!l(t.target).parents("a.chosen-single").length||(t.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),l(this.container[0].ownerDocument).on("click.chosen",this.click_test_action),this.results_show()),this.activate_field())},s.prototype.container_mouseup=function(t){if("ABBR"===t.target.nodeName&&!this.is_disabled)return this.results_reset(t)},s.prototype.search_results_mousewheel=function(t){var e;if(t.originalEvent&&(e=t.originalEvent.deltaY||-t.originalEvent.wheelDelta||t.originalEvent.detail),null!=e)return t.preventDefault(),"DOMMouseScroll"===t.type&&(e*=40),this.search_results.scrollTop(e+this.search_results.scrollTop())},s.prototype.blur_test=function(t){if(!this.active_field&&this.container.hasClass("chosen-container-active"))return this.close_field()},s.prototype.close_field=function(){return l(this.container[0].ownerDocument).off("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale(),this.search_field.blur()},s.prototype.activate_field=function(){if(!this.is_disabled)return this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},s.prototype.test_active_click=function(t){var e;return(e=l(t.target).closest(".chosen-container")).length&&this.container[0]===e[0]?this.active_field=!0:this.close_field()},s.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=r.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},s.prototype.result_do_highlight=function(t){var e,i,s,o;if(t.length){if(this.result_clear_highlight(),this.result_highlight=t,this.result_highlight.addClass("highlighted"),(s=parseInt(this.search_results.css("maxHeight"),10))+(o=this.search_results.scrollTop())<=(e=(i=this.result_highlight.position().top+this.search_results.scrollTop())+this.result_highlight.outerHeight()))return this.search_results.scrollTop(0<e-s?e-s:0);if(i<o)return this.search_results.scrollTop(i)}},s.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},s.prototype.results_show=function(){return this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.container.addClass("chosen-with-drop"),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.get_search_field_value()),this.winnow_results(),this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this}))},s.prototype.update_results_content=function(t){return this.search_results.html(t)},s.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.container.removeClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:hiding_dropdown",{chosen:this})),this.results_showing=!1},s.prototype.set_tab_index=function(t){var e;if(this.form_field.tabIndex)return e=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=e},s.prototype.set_label_behavior=function(){if(this.form_field_label=this.form_field_jq.parents("label"),!this.form_field_label.length&&this.form_field.id.length&&(this.form_field_label=l("label[for='"+this.form_field.id+"']")),0<this.form_field_label.length)return this.form_field_label.on("click.chosen",this.label_click_handler)},s.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},s.prototype.search_results_mouseup=function(t){var e;if((e=l(t.target).hasClass("active-result")?l(t.target):l(t.target).parents(".active-result").first()).length)return this.result_highlight=e,this.result_select(t),this.search_field.focus()},s.prototype.search_results_mouseover=function(t){var e;if(e=l(t.target).hasClass("active-result")?l(t.target):l(t.target).parents(".active-result").first())return this.result_do_highlight(e)},s.prototype.search_results_mouseout=function(t){if(l(t.target).hasClass("active-result")||l(t.target).parents(".active-result").first())return this.result_clear_highlight()},s.prototype.choice_build=function(t){var e,i,s;return e=l("<li />",{class:"search-choice"}).html("<span>"+this.choice_label(t)+"</span>"),t.disabled?e.addClass("search-choice-disabled"):((i=l("<a />",{class:"search-choice-close","data-option-array-index":t.array_index})).on("click.chosen",(s=this,function(t){return s.choice_destroy_link_click(t)})),e.append(i)),this.search_container.before(e)},s.prototype.choice_destroy_link_click=function(t){if(t.preventDefault(),t.stopPropagation(),!this.is_disabled)return this.choice_destroy(l(t.target))},s.prototype.choice_destroy=function(t){if(this.result_deselect(t[0].getAttribute("data-option-array-index")))return this.active_field?this.search_field.focus():this.show_search_field_default(),this.is_multiple&&0<this.choices_count()&&this.get_search_field_value().length<1&&this.results_hide(),t.parents("li").first().remove(),this.search_field_scale()},s.prototype.results_reset=function(){if(this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.trigger_form_field_change(),this.active_field)return this.results_hide()},s.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},s.prototype.result_select=function(t){var e,i;if(this.result_highlight)return e=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?e.removeClass("active-result"):this.reset_single_select_options(),e.addClass("result-selected"),(i=this.results_data[e[0].getAttribute("data-option-array-index")]).selected=!0,this.form_field.options[i.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(i):this.single_set_selected_text(this.choice_label(i)),this.is_multiple&&(!this.hide_results_on_select||t.metaKey||t.ctrlKey)?t.metaKey||t.ctrlKey?this.winnow_results({skip_highlight:!0}):(this.search_field.val(""),this.winnow_results()):(this.results_hide(),this.show_search_field_default()),!this.is_multiple&&this.form_field.selectedIndex===this.current_selectedIndex||this.trigger_form_field_change({selected:this.form_field.options[i.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,t.preventDefault(),this.search_field_scale())},s.prototype.single_set_selected_text=function(t){return null==t&&(t=this.default_text),t===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").html(t)},s.prototype.result_deselect=function(t){var e;return e=this.results_data[t],!this.form_field.options[e.options_index].disabled&&(e.selected=!1,this.form_field.options[e.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.trigger_form_field_change({deselected:this.form_field.options[e.options_index].value}),this.search_field_scale(),!0)},s.prototype.single_deselect_control_build=function(){if(this.allow_single_deselect)return this.selected_item.find("abbr").length||this.selected_item.find("span").first().after('<abbr class="search-choice-close"></abbr>'),this.selected_item.addClass("chosen-single-with-deselect")},s.prototype.get_search_field_value=function(){return this.search_field.val()},s.prototype.get_search_text=function(){return l.trim(this.get_search_field_value())},s.prototype.escape_html=function(t){return l("<div/>").text(t).html()},s.prototype.winnow_results_set_highlight=function(){var t,e;if(null!=(t=(e=this.is_multiple?[]:this.search_results.find(".result-selected.active-result")).length?e.first():this.search_results.find(".active-result").first()))return this.result_do_highlight(t)},s.prototype.no_results=function(t){var e;return e=this.get_no_results_html(t),this.search_results.append(e),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},s.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},s.prototype.keydown_arrow=function(){var t;return this.results_showing&&this.result_highlight?(t=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(t):void 0:this.results_show()},s.prototype.keyup_arrow=function(){var t;return this.results_showing||this.is_multiple?this.result_highlight?(t=this.result_highlight.prevAll("li.active-result")).length?this.result_do_highlight(t.first()):(0<this.choices_count()&&this.results_hide(),this.result_clear_highlight()):void 0:this.results_show()},s.prototype.keydown_backstroke=function(){var t;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(t=this.search_container.siblings("li.search-choice").last()).length&&!t.hasClass("search-choice-disabled")?(this.pending_backstroke=t,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0},s.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},s.prototype.search_field_scale=function(){var t,e,i,s,o,n,r;if(this.is_multiple){for(o={position:"absolute",left:"-1000px",top:"-1000px",display:"none",whiteSpace:"pre"},e=0,i=(n=["fontSize","fontStyle","fontWeight","fontFamily","lineHeight","textTransform","letterSpacing"]).length;e<i;e++)o[s=n[e]]=this.search_field.css(s);return(t=l("<div />").css(o)).text(this.get_search_field_value()),l("body").append(t),r=t.width()+25,t.remove(),this.container.is(":visible")&&(r=Math.min(this.container.outerWidth()-10,r)),this.search_field.width(r)}},s.prototype.trigger_form_field_change=function(t){return this.form_field_jq.trigger("input",t),this.form_field_jq.trigger("change",t)},o=s}).call(this),function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).Headroom=e()}(this,function(){"use strict";function t(){return"undefined"!=typeof window}function e(t){return t&&t.document&&function(t){return 9===t.nodeType}(t.document)}function p(t){return e(t)?function(t){var e=t.document,i=e.body,s=e.documentElement;return{scrollHeight:function(){return Math.max(i.scrollHeight,s.scrollHeight,i.offsetHeight,s.offsetHeight,i.clientHeight,s.clientHeight)}
1,height:function(){return t.innerHeight||s.clientHeight||i.clientHeight},scrollY:function(){return void 0!==t.pageYOffset?t.pageYOffset:(s||i.parentNode||i).scrollTop}}}(t):function(t){return{scrollHeight:function(){return Math.max(t.scrollHeight,t.offsetHeight,t.clientHeight)},height:function(){return Math.max(t.offsetHeight,t.clientHeight)},scrollY:function(){return t.scrollTop}}}(t)}function i(t,s,o){var e,i=function(){var e=!1;try{var t={get passive(){e=!0}};window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch(t){e=!1}return e}(),n=!1,r=p(t),l=r.scrollY(),a={};function d(){var t=Math.round(r.scrollY()),e=r.height(),i=r.scrollHeight();a.scrollY=t,a.lastScrollY=l,a.direction=l<t?"down":"up",a.distance=Math.abs(t-l),a.isOutOfBounds=t<0||i<t+e,a.top=t<=s.offset,a.bottom=i<=t+e,a.toleranceExceeded=a.distance>s.tolerance[a.direction],o(a),l=t,n=!1}function c(){n||(n=!0,e=requestAnimationFrame(d))}var h=!!i&&{passive:!0,capture:!1};return t.addEventListener("scroll",c,h),{destroy:function(){cancelAnimationFrame(e),t.removeEventListener("scroll",c,h)}}}function s(t,e){e=e||{},Object.assign(this,s.options,e),this.classes=Object.assign({},s.options.classes,e.classes),this.elem=t,this.tolerance=function(t){return t===Object(t)?t:{down:t,up:t}}(this.tolerance),this.initialised=!1,this.frozen=!1}return s.prototype={constructor:s,init:function(){return s.cutsTheMustard&&!this.initialised&&(this.addClass("initial"),this.initialised=!0,setTimeout(function(t){t.scrollTracker=i(t.scroller,{offset:t.offset,tolerance:t.tolerance},t.update.bind(t))},100,this)),this},destroy:function(){this.initialised=!1,Object.keys(this.classes).forEach(this.removeClass,this),this.scrollTracker.destroy()},unpin:function(){!this.hasClass("pinned")&&this.hasClass("unpinned")||(this.addClass("unpinned"),this.removeClass("pinned"),this.onUnpin&&this.onUnpin.call(this))},pin:function(){this.hasClass("unpinned")&&(this.addClass("pinned"),this.removeClass("unpinned"),this.onPin&&this.onPin.call(this))},freeze:function(){this.frozen=!0,this.addClass("frozen")},unfreeze:function(){this.frozen=!1,this.removeClass("frozen")},top:function(){this.hasClass("top")||(this.addClass("top"),this.removeClass("notTop"),this.onTop&&this.onTop.call(this))},notTop:function(){this.hasClass("notTop")||(this.addClass("notTop"),this.removeClass("top"),this.onNotTop&&this.onNotTop.call(this))},bottom:function(){this.hasClass("bottom")||(this.addClass("bottom"),this.removeClass("notBottom"),this.onBottom&&this.onBottom.call(this))},notBottom:function(){this.hasClass("notBottom")||(this.addClass("notBottom"),this.removeClass("bottom"),this.onNotBottom&&this.onNotBottom.call(this))},shouldUnpin:function(t){return"down"===t.direction&&!t.top&&t.toleranceExceeded},shouldPin:function(t){return"up"===t.direction&&t.toleranceExceeded||t.top},addClass:function(t){this.elem.classList.add(this.classes[t])},removeClass:function(t){this.elem.classList.remove(this.classes[t])},hasClass:function(t){return this.elem.classList.contains(this.classes[t])},update:function(t){t.isOutOfBounds||!0!==this.frozen&&(t.top?this.top():this.notTop(),t.bottom?this.bottom():this.notBottom(),this.shouldUnpin(t)?this.unpin():this.shouldPin(t)&&this.pin())}},s.options={tolerance:{up:0,down:0},offset:0,scroller:t()?window:null,classes:{frozen:"headroom--frozen",pinned:"headroom--pinned",unpinned:"headroom--unpinned",top:"headroom--top",notTop:"headroom--not-top",bottom:"headroom--bottom",notBottom:"headroom--not-bottom",initial:"headroom"}},s.cutsTheMustard=!!(t()&&function(){}.bind&&"classList"in document.documentElement&&Object.assign&&Object.keys&&requestAnimationFrame),s}),function(){function e(t,e){return function(){return t.apply(e,arguments)}}var s,t,i,a,o,r=[].indexOf||function(t){for(var e=0,i=this.length;e<i;e++)if(e in this&&this[e]===t)return e;return-1};function n(){}function l(){this.keys=[],this.values=[]}function d(){"undefined"!=typeof console&&null!==console&&console.warn("MutationObserver is not supported by your browser."),"undefined"!=typeof console&&null!==console&&console.warn("WOW.js cannot detect dom mutations, please call .sync() after loading new content.")}function c(t){null==t&&(t={}),this.scrollCallback=e(this.scrollCallback,this),this.scrollHandler=e(this.scrollHandler,this),this.resetAnimation=e(this.resetAnimation,this),this.start=e(this.start,this),this.scrolled=!0,this.config=this.util().extend(t,this.defaults),null!=t.scrollC
1ontainer&&(this.config.scrollContainer=document.querySelector(t.scrollContainer)),this.animationNameCache=new i,this.wowEvent=this.util().createEvent(this.config.boxClass)}n.prototype.extend=function(t,e){var i,s;for(i in e)s=e[i],null==t[i]&&(t[i]=s);return t},n.prototype.isMobile=function(t){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(t)},n.prototype.createEvent=function(t,e,i,s){var o;return null==e&&(e=!1),null==i&&(i=!1),null==s&&(s=null),null!=document.createEvent?(o=document.createEvent("CustomEvent")).initCustomEvent(t,e,i,s):null!=document.createEventObject?(o=document.createEventObject()).eventType=t:o.eventName=t,o},n.prototype.emitEvent=function(t,e){return null!=t.dispatchEvent?t.dispatchEvent(e):e in(null!=t)?t[e]():"on"+e in(null!=t)?t["on"+e]():void 0},n.prototype.addEvent=function(t,e,i){return null!=t.addEventListener?t.addEventListener(e,i,!1):null!=t.attachEvent?t.attachEvent("on"+e,i):t[e]=i},n.prototype.removeEvent=function(t,e,i){return null!=t.removeEventListener?t.removeEventListener(e,i,!1):null!=t.detachEvent?t.detachEvent("on"+e,i):delete t[e]},n.prototype.innerHeight=function(){return"innerHeight"in window?window.innerHeight:document.documentElement.clientHeight},t=n,i=this.WeakMap||this.MozWeakMap||(l.prototype.get=function(t){var e,i,s,o;for(e=i=0,s=(o=this.keys).length;i<s;e=++i)if(o[e]===t)return this.values[e]},l.prototype.set=function(t,e){var i,s,o,n;for(i=s=0,o=(n=this.keys).length;s<o;i=++s)if(n[i]===t)return void(this.values[i]=e);return this.keys.push(t),this.values.push(e)},i=l),s=this.MutationObserver||this.WebkitMutationObserver||this.MozMutationObserver||(d.notSupported=!0,d.prototype.observe=function(){},s=d),a=this.getComputedStyle||function(i,t){return this.getPropertyValue=function(t){var e;return"float"===t&&(t="styleFloat"),o.test(t)&&t.replace(o,function(t,e){return e.toUpperCase()}),(null!=(e=i.currentStyle)?e[t]:void 0)||null},this},o=/(\-([a-z]){1})/g,this.WOW=(c.prototype.defaults={boxClass:"wow",animateClass:"animated",offset:0,mobile:!0,live:!0,callback:null,scrollContainer:null},c.prototype.init=function(){var t;return this.element=window.document.documentElement,"interactive"===(t=document.readyState)||"complete"===t?this.start():this.util().addEvent(document,"DOMContentLoaded",this.start),this.finished=[]},c.prototype.start=function(){var o,t,e,i,r;if(this.stopped=!1,this.boxes=function(){var t,e,i,s;for(s=[],t=0,e=(i=this.element.querySelectorAll("."+this.config.boxClass)).length;t<e;t++)o=i[t],s.push(o);return s}.call(this),this.all=function(){var t,e,i,s;for(s=[],t=0,e=(i=this.boxes).length;t<e;t++)o=i[t],s.push(o);return s}.call(this),this.boxes.length)if(this.disabled())this.resetStyle();else for(t=0,e=(i=this.boxes).length;t<e;t++)o=i[t],this.applyStyle(o,!0);if(this.disabled()||(this.util().addEvent(this.config.scrollContainer||window,"scroll",this.scrollHandler),this.util().addEvent(window,"resize",this.scrollHandler),this.interval=setInterval(this.scrollCallback,50)),this.config.live)return new s((r=this,function(t){var e,i,o,n,s;for(s=[],e=0,i=t.length;e<i;e++)n=t[e],s.push(function(){var t,e,i,s;for(s=[],t=0,e=(i=n.addedNodes||[]).length;t<e;t++)o=i[t],s.push(this.doSync(o));return s}.call(r));return s})).observe(document.body,{childList:!0,subtree:!0})},c.prototype.stop=function(){if(this.stopped=!0,this.util().removeEvent(this.config.scrollContainer||window,"scroll",this.scrollHandler),this.util().removeEvent(window,"resize",this.scrollHandler),null!=this.interval)return clearInterval(this.interval)},c.prototype.sync=function(t){if(s.notSupported)return this.doSync(this.element)},c.prototype.doSync=function(t){var e,i,s,o,n;if(null==t&&(t=this.element),1===t.nodeType){for(n=[],i=0,s=(o=(t=t.parentNode||t).querySelectorAll("."+this.config.boxClass)).length;i<s;i++)e=o[i],r.call(this.all,e)<0?(this.boxes.push(e),this.all.push(e),this.stopped||this.disabled()?this.resetStyle():this.applyStyle(e,!0),n.push(this.scrolled=!0)):n.push(void 0);return n}},c.prototype.show=function(t){return this.applyStyle(t),t.className=t.className+" "+this.config.animateClass,null!=this.config.callback&&this.config.callback(t),this.util().emitEvent(t,this.wowEvent),this.util().addEvent(t,"animationend",this.resetAnimation),this.util().addEvent(t,"oanimationend",this.resetAnimation),this.util().addEvent(t,"webkitAnimationEnd",this.resetAnimation),this.util().addEvent(t,"MSAnimationEnd",this.resetAnimation),t},c.prototype.applyStyle=function(t,e){var i,s,o,n;return s=t.getAttribute("data-wow-duration"),i=t.getAttribute("data-wow-delay"),o=t.getAttribute("data-wow-iteration"),this.animate((n=this,function(){return n.customStyle(t,e,s,i,o)}))},c.prototype.animate="requestAnimationFrame"in window?function(t){return window.requestAnimationFrame(t)}:function(t){return t()},c.prototype.resetStyle=function(){var t,e,i,s,o;for(o=[],e=0,i=(s=this.boxes).length;e<i;e++)t=s[e],o.push(t.style.visibility="visible");return o},c.prototype.resetAnimation=function(t){var e;if(0<=t.type.toLowerCase().indexOf("animationend"))return(e=t.target||t.srcElement).className=e.className.replace(this.config.animateClass,"").trim()}
1,c.prototype.customStyle=function(t,e,i,s,o){return e&&this.cacheAnimationName(t),t.style.visibility=e?"hidden":"visible",i&&this.vendorSet(t.style,{animationDuration:i}),s&&this.vendorSet(t.style,{animationDelay:s}),o&&this.vendorSet(t.style,{animationIterationCount:o}),this.vendorSet(t.style,{animationName:e?"none":this.cachedAnimationName(t)}),t},c.prototype.vendors=["moz","webkit"],c.prototype.vendorSet=function(o,t){var n,e,r,l;for(n in e=[],t)r=t[n],o[""+n]=r,e.push(function(){var t,e,i,s;for(s=[],t=0,e=(i=this.vendors).length;t<e;t++)l=i[t],s.push(o[""+l+n.charAt(0).toUpperCase()+n.substr(1)]=r);return s}.call(this));return e},c.prototype.vendorCSS=function(t,e){var i,s,o,n,r,l;for(n=(r=a(t)).getPropertyCSSValue(e),i=0,s=(o=this.vendors).length;i<s;i++)l=o[i],n=n||r.getPropertyCSSValue("-"+l+"-"+e);return n},c.prototype.animationName=function(e){var i;try{i=this.vendorCSS(e,"animation-name").cssText}catch(t){i=a(e).getPropertyValue("animation-name")}return"none"===i?"":i},c.prototype.cacheAnimationName=function(t){return this.animationNameCache.set(t,this.animationName(t))},c.prototype.cachedAnimationName=function(t){return this.animationNameCache.get(t)},c.prototype.scrollHandler=function(){return this.scrolled=!0},c.prototype.scrollCallback=function(){var o;if(this.scrolled&&(this.scrolled=!1,this.boxes=function(){var t,e,i,s;for(s=[],t=0,e=(i=this.boxes).length;t<e;t++)(o=i[t])&&(this.isVisible(o)?this.show(o):s.push(o));return s}.call(this),!this.boxes.length&&!this.config.live))return this.stop()},c.prototype.offsetTop=function(t){for(var e;void 0===t.offsetTop;)t=t.parentNode;for(e=t.offsetTop;t=t.offsetParent;)e+=t.offsetTop;return e},c.prototype.isVisible=function(t){var e,i,s,o,n;return i=t.getAttribute("data-wow-offset")||this.config.offset,o=(n=this.config.scrollContainer&&this.config.scrollContainer.scrollTop||window.pageYOffset)+Math.min(this.element.clientHeight,this.util().innerHeight())-i,e=(s=this.offsetTop(t))+t.clientHeight,s<=o&&n<=e},c.prototype.util=function(){return null!=this._util?this._util:this._util=new t},c.prototype.disabled=function(){return!this.config.mobile&&this.util().isMobile(navigator.userAgent)},c)}.call(this),function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):"undefined"!=typeof exports?module.exports=t(require("jquery")):t(jQuery)}(function(d){"use strict";var o,r=window.Slick||{};o=0,(r=function(t,e){var i,s=this;s.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:d(t),appendDots:d(t),arrows:!0,asNavFor:null,prevArrow:'<button class="slick-prev" aria-label="Previous" type="button">Previous</button>',nextArrow:'<button class="slick-next" aria-label="Next" type="button">Next</button>',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(t,e){return d('<button type="button" />').text(e+1)},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,focusOnChange:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnFocus:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},s.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,scrolling:!1,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,swiping:!1,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},d.extend(s,s.initials),s.activeBreakpoint=null,s.animType=null,s.animProp=null,s.breakpoints=[],s.breakpointSettings=[],s.cssTransitions=!1,s.focussed=!1,s.interrupted=!1,s.hidden="hidden",s.paused=!0,s.positionProp=null,s.respondTo=null,s.rowCount=1,s.shouldClick=!0,s.$slider=d(t),s.$slidesCache=null,s.transformType=null,s.transitionType=null,s.visibilityChange="visibilitychange",s.windowWidth=0,s.windowTimer=null,i=d(t).data("slick")||{},s.options=d.extend({},s.defaults,e,i),s.currentSlide=s.options.initialSlide,s.originalSettings=s.options,void 0!==document.mozHidden?(s.hidden="mozHidden",s.visibilityChange="mozvisibilitychange"):void 0!==document.webkitHidden&&(s.hidden="webkitHidden",s.visibilityChange="webkitvisibilitychange"),s.autoPlay=d.proxy(s.autoPlay,s),s.autoPlayClear=d.proxy(s.autoPlayClear,s),s.autoPlayIterator=d.proxy(s.autoPlayIterator,s),s.changeSlide=d.proxy(s.changeSlide,s),s.clickHandler=
vendor: 8,792 bytes, line 1
1d.proxy(s.clickHandler,s),s.selectHandler=d.proxy(s.selectHandler,s),s.setPosition=d.proxy(s.setPosition,s),s.swipeHandler=d.proxy(s.swipeHandler,s),s.dragHandler=d.proxy(s.dragHandler,s),s.keyHandler=d.proxy(s.keyHandler,s),s.instanceUid=o++,s.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,s.registerBreakpoints(),s.init(!0)}).prototype.activateADA=function(){this.$slideTrack.find(".slick-active").attr({"aria-hidden":"false"}).find("a, input, button, select").attr({tabindex:"0"})},r.prototype.addSlide=r.prototype.slickAdd=function(t,e,i){var s=this;if("boolean"==typeof e)i=e,e=null;else if(e<0||e>=s.slideCount)return!1;s.unload(),"number"==typeof e?0===e&&0===s.$slides.length?d(t).appendTo(s.$slideTrack):i?d(t).insertBefore(s.$slides.eq(e)):d(t).insertAfter(s.$slides.eq(e)):!0===i?d(t).prependTo(s.$slideTrack):d(t).appendTo(s.$slideTrack),s.$slides=s.$slideTrack.children(this.options.slide),s.$slideTrack.children(this.options.slide).detach(),s.$slideTrack.append(s.$slides),s.$slides.each(function(t,e){d(e).attr("data-slick-index",t)}),s.$slidesCache=s.$slides,s.reinit()},r.prototype.animateHeight=function(){var t=this;if(1===t.options.slidesToShow&&!0===t.options.adaptiveHeight&&!1===t.options.vertical){var e=t.$slides.eq(t.currentSlide).outerHeight(!0);t.$list.animate({height:e},t.options.speed)}},r.prototype.animateSlide=function(t,e){var i={},s=this;s.animateHeight(),!0===s.options.rtl&&!1===s.options.vertical&&(t=-t),!1===s.transformsEnabled?!1===s.options.vertical?s.$slideTrack.animate({left:t},s.options.speed,s.options.easing,e):s.$slideTrack.animate({top:t},s.options.speed,s.options.easing,e):!1===s.cssTransitions?(!0===s.options.rtl&&(s.currentLeft=-s.currentLeft),d({animStart:s.currentLeft}).animate({animStart:t},{duration:s.options.speed,easing:s.options.easing,step:function(t){t=Math.ceil(t),!1===s.options.vertical?i[s.animType]="translate("+t+"px, 0px)":i[s.animType]="translate(0px,"+t+"px)",s.$slideTrack.css(i)},complete:function(){e&&e.call()}})):(s.applyTransition(),t=Math.ceil(t),!1===s.options.vertical?i[s.animType]="translate3d("+t+"px, 0px, 0px)":i[s.animType]="translate3d(0px,"+t+"px, 0px)",s.$slideTrack.css(i),e&&setTimeout(function(){s.disableTransition(),e.call()},s.options.speed))},r.prototype.getNavTarget=function(){var t=this.options.asNavFor;return t&&null!==t&&(t=d(t).not(this.$slider)),t},r.prototype.asNavFor=function(e){var t=this.getNavTarget();null!==t&&"object"==typeof t&&t.each(function(){var t=d(this).slick("getSlick");t.unslicked||t.slideHandler(e,!0)})},r.prototype.applyTransition=function(t){var e=this,i={};!1===e.options.fade?i[e.transitionType]=e.transformType+" "+e.options.speed+"ms "+e.options.cssEase:i[e.transitionType]="opacity "+e.options.speed+"ms "+e.options.cssEase,!1===e.options.fade?e.$slideTrack.css(i):e.$slides.eq(t).css(i)},r.prototype.autoPlay=function(){var t=this;t.autoPlayClear(),t.slideCount>t.options.slidesToShow&&(t.autoPlayTimer=setInterval(t.autoPlayIterator,t.options.autoplaySpeed))},r.prototype.autoPlayClear=function(){this.autoPlayTimer&&clearInterval(this.autoPlayTimer)},r.prototype.autoPlayIterator=function(){var t=this,e=t.currentSlide+t.options.slidesToScroll;t.paused||t.interrupted||t.focussed||(!1===t.options.infinite&&(1===t.direction&&t.currentSlide+1===t.slideCount-1?t.direction=0:0===t.direction&&(e=t.currentSlide-t.options.slidesToScroll,t.currentSlide-1==0&&(t.direction=1))),t.slideHandler(e))},r.prototype.buildArrows=function(){var t=this;!0===t.options.arrows&&(t.$prevArrow=d(t.options.prevArrow).addClass("slick-arrow"),t.$nextArrow=d(t.options.nextArrow).addClass("slick-arrow"),t.slideCount>t.options.slidesToShow?(t.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),t.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),t.htmlExpr.test(t.options.prevArrow)&&t.$prevArrow.prependTo(t.options.appendArrows),t.htmlExpr.test(t.options.nextArrow)&&t.$nextArrow.appendTo(t.options.appendArrows),!0!==t.options.infinite&&t.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):t.$prevArrow.add(t.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},r.prototype.buildDots=function(){var t,e,i=this;if(!0===i.options.dots&&i.slideCount>i.options.slidesToShow){for(i.$slider.addClass("slick-dotted"),e=d("<ul />").addClass(i.options.dotsClass),t=0;t<=i.getDotCount();t+=1)e.append(d("<li />").append(i.options.customPaging.call(this,i,t)));i.$dots=e.appendTo(i.options.appendDots),i.$dots.find("li").first().addClass("slick-active")}},r.prototype.buildOut=function(){var t=this;t.$slides=t.$slider.children(t.options.slide+":not(.slick-cloned)").addClass("slick-slide"),t.slideCount=t.$slides.length,t.$slides.each(function(t,e){d(e).attr("data-slick-index",t).data("originalStyling",d(e).attr("style")||"")}),t.$slider.addClass("slick-slider"),t.$slideTrack=0===t.slideCount?d('<div class="slick-track"/>').appendTo(t.$slider):t.$slides.wrapAll('<div class="slick-track"/>').parent(),t.$list=t.$slideTrack.wrap('<div class="slick-list"/>').parent(),t.$slideTrack.css("opacity",0),!0!==t.options.centerMode&&!0!==t.options.swipeToSlide||(t.options.slidesToScroll=1),d("img[data-lazy]",t.$slider).not("[src]").addClass("slick-loading"),t.setupInfinite(),t.buildArrows(),t.buildDots(),t.updateDots(),t.setSlideClasses("number"==typeof t.currentSlide?t.currentSlide:0),!0===t.options.draggable&&t.$list.addClass("draggable")},r.prototype.buildRows=function(){var t,e,i,s,o,n,r,l=this;if(s=document.createDocumentFragment(),n=l.$slider.children(),0<l.options.rows){for(r=l.options.slidesPerRow*l.options.rows,o=Math.ceil(n.length/r),t=0;t<o;t++){var a=document.createElement("div");for(e=0;e<l.options.rows;e++){var d=document.createElement("div");for(i=0;i<l.options.slidesPerRow;i++){var c=t*r+(e*l.options.slidesPerRow+i);n.get(c)&&d.appendChild(n.get(c))}a.appendChild(d)}s.appendChild(a)}l.$slider.empty().append(s),l.$slider.children().children().children().css({width:100/l.options.slidesPerRow+"%",display:"inline-block"})}},r.prototype.checkResponsive=function(t,e){var i,s,o,n=this,r=!1,l=n.$slider.width(),a=window.innerWidth||d(window).width();if("window"===n.respondTo?o=a:"slider"===n.respondTo?o=l:"min"===n.respondTo&&(o=Math.min(a,l)),n.options.responsive&&n.options.responsive.length&&null!==n.options.responsive){for(i in s=null,n.breakpoints)n.breakpoints.hasOwnProperty(i)&&(!1===n.originalSettings.mobileFirst?o<n.breakpoints[i]&&(s=n.breakpoints[i]):o>n.breakpoints[i]&&(s=n.breakpoints[i]));null!==s?null!==n.activeBreakpoint&&s===n.activeBreakpoint&&!e||(n.activeBreakpoint=s,"unslick"===n.breakpointSettings[s]?n.unslick(s):(n.options=d.extend({},n.originalSettings,n.breakpointSettings[s]),!0===t&&(n.currentSlide=n.options.initialSlide),n.refresh(t)),r=s):null!==n.activeBreakpoint&&(n.activeBreakpoint=null,n.options=n.originalSettings,!0===t&&(n.currentSlide=n.options.initialSlide),n.refresh(t),r=s),t||!1===r||n.$slider.trigger("breakpoint",[n,r])}},r.prototype.changeSlide=function(t,e){var i,s,o=this,n=d(t.currentTarget);switch(n.is("a")&&t.preventDefault(),n.is("li")||(n=n.closest("li")),i=o.slideCount%o.options.slidesToScroll!=0?0:(o.slideCount-o.currentSlide)%o.options.slidesToScroll,t.data.message){case"previous":s=0==i?o.options.slidesToScroll:o.options.slidesToShow-i,o.slideCount>o.options.slidesToShow&&o.slideHandler(o.currentSlide-s,!1,e);break;case"next":s=0==i?o.options.slidesToScroll:i,o.slideCount>o.options.slidesToShow&&o.slideHandler(o.currentSlide+s,!1,e);break;case"index":var r=0===t.data.index?0:t.data.index||n.index()*o.options.slidesToScroll;o.slideHandler(o.checkNavigable(r),!1,e),n.children().trigger("focus");break;default:return}},r.prototype.checkNavigable=function(t){var e,i;if(i=0,t>(e=this.getNavigableIndexes())[e.length-1])t=e[e.length-1];else for(var s in e){if(t<e[s]){t=i;break}i=e[s]}return t},r.prototype.cleanUpEvents=function(){var t=this;t.options.dots&&null!==t.$dots&&(d("li",t.$dots).off("click.slick",t.changeSlide).off("mouseenter.slick",d.proxy(t.interrupt,t,!0)).off("mouseleave.slick",d.proxy(t.interrupt,t,!1)),!0===t.options.accessibility&&t.$dots.off("keydown.slick",t.keyHandler)),t.$slider.off("focus.slick blur.slick"),!0===t.options.arrows&&t.slideCount>t.options.slidesToShow&&(t.$prevArrow&&t.$prevArrow.off("click.slick",t.changeSlide),t.$nextArrow&&t.$nextArrow.off("click.slick",t.changeSlide),!0===t.options.accessibility&&(t.$prevArrow&&t.$prevArrow.off("keydown.slick",t.keyHandler),t.$nextArrow&&t.$nextArrow.off("keydown.slick",t.keyHandler))),t.$list.off("touchstart.slick mousedown.slick",t.swipeHandler),t.$list.off("touchmove.slick mousemove.slick",t.swipeHandler),t.$list.off("touchend.slick mouseup.slick",t.swipeHandler),t.$list.off("touchcancel.slick mouseleave.
1slick",t.swipeHandler),t.$list.off("click.slick",t.clickHandler),d(document).off(t.visibilityChange,t.visibility),t.cleanUpSlideEvents(),!0===t.options.accessibility&&t.$list.off("keydown.slick",t.keyHandler),!0===t.options.focusOnSelect&&d(t.$slideTrack).children().off("click.slick",t.selectHandler),d(window).off("orientationchange.slick.slick-"+t.instanceUid,t.orientationChange),d(window).off("resize.slick.slick-"+t.instanceUid,t.resize),d("[draggable!=true]",t.$slideTrack).off("dragstart",t.preventDefault),d(window).off("load.slick.slick-"+t.instanceUid,t.setPosition)},r.prototype.cleanUpSlideEvents=function(){var t=this;t.$list.off("mouseenter.slick",d.proxy(t.interrupt,t,!0)),t.$list.off("mouseleave.slick",d.proxy(t.interrupt,t,!1))},r.prototype.cleanUpRows=function(){var t;0<this.options.rows&&((t=this.$slides.children().children()).removeAttr("style"),this.$slider.empty().append(t))},r.prototype.clickHandler=function(t){!1===this.shouldClick&&(t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault())},r.prototype.destroy=function(t){var e=this;e.autoPlayClear(),e.touchObject={},e.cleanUpEvents(),d(".slick-cloned",e.$slider).detach(),e.$dots&&e.$dots.remove(),e.$prevArrow&&e.$prevArrow.length&&(e.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.remove()),e.$nextArrow&&e.$nextArrow.length&&(e.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.remove()),e.$slides&&(e.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){d(this).attr("style",d(this).data("originalStyling"))}),e.$slideTrack.children(this.options.slide).detach(),e.$slideTrack.detach(),e.$list.detach(),e.$slider.append(e.$slides)),e.cleanUpRows(),e.$slider.removeClass("slick-slider"),e.$slider.removeClass("slick-initialized"),e.$slider.removeClass("slick-dotted"),e.unslicked=!0,t||e.$slider.trigger("destroy",[e])},r.prototype.disableTransition=function(t){var e={};e[this.transitionType]="",!1===this.options.fade?this.$slideTrack.css(e):this.$slides.eq(t).css(e)},r.prototype.fadeSlide=function(t,e){var i=this;!1===i.cssTransitions?(i.$slides.eq(t).css({zIndex:i.options.zIndex}),i.$slides.eq(t).animate({opacity:1},i.options.speed,i.options.easing,e)):(i.applyTransition(t),i.$slides.eq(t).css({opacity:1,zIndex:i.options.zIndex}),e&&setTimeout(function(){i.disableTransition(t),e.call()},i.options.speed))},r.prototype.fadeSlideOut=function(t){var e=this;!1===e.cssTransitions?e.$slides.eq(t).animate({opacity:0,zIndex:e.options.zIndex-2},e.options.speed,e.options.easing):(e.applyTransition(t),e.$slides.eq(t).css({opacity:0,zIndex:e.options.zIndex-2}))},r.prototype.filterSlides=r.prototype.slickFilter=function(t){var e=this;null!==t&&(e.$slidesCache=e.$slides,e.unload(),e.$slideTrack.children(this.options.slide).detach(),e.$slidesCache.filter(t).appendTo(e.$slideTrack),e.reinit())},r.prototype.focusHandler=function(){var i=this;i.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick","*",function(t){t.stopImmediatePropagation();var e=d(this);setTimeout(function(){i.options.pauseOnFocus&&(i.focussed=e.is(":focus"),i.autoPlay())},0)})},r.prototype.getCurrent=r.prototype.slickCurrentSlide=function(){return this.currentSlide},r.prototype.getDotCount=function(){var t=this,e=0,i=0,s=0;if(!0===t.options.infinite)if(t.slideCount<=t.options.slidesToShow)++s;else for(;e<t.slideCount;)++s,e=i+t.options.slidesToScroll,i+=t.options.slidesToScroll<=t.options.slidesToShow?t.options.slidesToScroll:t.options.slidesToShow;else if(!0===t.options.centerMode)s=t.slideCount;else if(t.options.asNavFor)for(;e<t.slideCount;)++s,e=i+t.options.slidesToScroll,i+=t.options.slidesToScroll<=t.options.slidesToShow?t.options.slidesToScroll:t.options.slidesToShow;else s=1+Math.ceil((t.slideCount-t.options.slidesToShow)/t.options.slidesToScroll);return s-1},r.prototype.getLeft=function(t){var e,i,s,o,n=this,r=0;return n.slideOffset=0,i=n.$slides.first().outerHeight(!0),!0===n.options.infinite?(n.slideCount>n.options.slidesToShow&&(n.slideOffset=n.slideWidth*n.options.slidesToShow*-1,o=-1,!0===n.options.vertical&&!0===n.options.centerMode&&(2===n.options.slidesToShow?o=-1.5:1===n.options.slidesToShow&&(o=-2)),r=i*n.options.slidesToShow*o),n.slideCount%n.options.slidesToScroll!=0&&t+n.options.slidesToScroll>n.slideCount&&n.slideCount>n.options.slidesToShow&&(r=t>n.slideCount?(n.slideOffset=(n.options.slidesToShow-(t-n.slideCount))*n.slideWidth*-1,(n.options.slidesToShow-(t-n.slideCount))*i*-1):(n.slideOffset=n.slideCount%n.options.slidesToScroll*n.slideWidth*-1,n.slideCount%n.options.slidesToScroll*i*-1))):t+n.options.slidesToShow>n.slideCount&&(n.slideOffset=(t+n.options.slidesToShow-n.slideCount)*n.slideWidth,r=(t+n.options.slidesToShow-n.slideCount)*i),n.slideCount<=n.options.slidesToShow&&(r=n.slideOffset=0),!0===n.options.centerMode&&n.slideCount<=n.options.slidesToShow?n.slideOffset=n.slideWidth*Math.floor(n.options.slidesToShow)/2-n.slideWidth*n.slideCount/2:!0===n.options.centerMode&&!0===n.options.infinite?n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)-n.slideWidth:!0===n.options.centerMode&&(n.slideOffset=0,n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)),e=!1===n.options.vertical?t*n.slideWidth*-1+n.slideOffset:t*i*-1+r,!0===n.options.variableWidth&&(s=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(t):n.$slideTrack.children(".slick-slide").eq(t+n.options.slidesToShow),e=!0===n.options.rtl?s[0]?-1*(n.$slideTrack.width()-s[0].offsetLeft-s.width()):0:s[0]?-1*s[0].offsetLeft:0,!0===n.options.centerMode&&(s=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(t):n.$slideTrack.children(".slick-slide").eq(t+n.options.slidesToShow+1),e=!0===n.options.rtl?s[0]?-1*(n.$slideTrack.width()-s[0].offsetLeft-s.width()):0:s[0]?-1*s[0].offsetLeft:0,e+=(n.$list.width()-s.outerWidth())/2)),e},r.prototype.getOption=r.prototype.slickGetOption=function(t){return this.options[t]},r.prototype.getNavigableIndexes=function(){var t,e=this,i=0,s=0,o=[];for(t=!1===e.options.infinite?e.slideCount:(i=-1*e.options.slidesToScroll,s=-1*e.options.slidesToScroll,2*e.slideCount);i<t;)o.push(i),i=s+e.options.slidesToScroll,s+=e.options.slidesToScroll<=e.options.slidesToShow?e.options.slidesToScroll:e.options.slidesToShow;return o},r.prototype.getSlick=function(){return this},r.prototype.getSlideCount=function(){var i,s,o=this;return s=!0===o.options.centerMode?o.slideWidth*Math.floor(o.options.slidesToShow/2):0,!0===o.options.swipeToSlide?(o.$slideTrack.find(".slick-slide").each(function(t,e){if(e.offsetLeft-s+d(e).outerWidth()/2>-1*o.swipeLeft)return i=e,!1}),Math.abs(d(i).attr("data-slick-index")-o.currentSlide)||1):o.options.slidesToScroll},r.prototype.goTo=r.prototype.slickGoTo=function(t,e){this.changeSlide({data:{message:"index",index:
1parseInt(t)}},e)},r.prototype.init=function(t){var e=this;d(e.$slider).hasClass("slick-initialized")||(d(e.$slider).addClass("slick-initialized"),e.buildRows(),e.buildOut(),e.setProps(),e.startLoad(),e.loadSlider(),e.initializeEvents(),e.updateArrows(),e.updateDots(),e.checkResponsive(!0),e.focusHandler()),t&&e.$slider.trigger("init",[e]),!0===e.options.accessibility&&e.initADA(),e.options.autoplay&&(e.paused=!1,e.autoPlay())},r.prototype.initADA=function(){var s=this,i=Math.ceil(s.slideCount/s.options.slidesToShow),o=s.getNavigableIndexes().filter(function(t){return 0<=t&&t<s.slideCount});s.$slides.add(s.$slideTrack.find(".slick-cloned")).attr({"aria-hidden":"true",tabindex:"-1"}).find("a, input, button, select").attr({tabindex:"-1"}),null!==s.$dots&&(s.$slides.not(s.$slideTrack.find(".slick-cloned")).each(function(t){var e=o.indexOf(t);if(d(this).attr({role:"tabpanel",id:"slick-slide"+s.instanceUid+t,tabindex:-1}),-1!==e){var i="slick-slide-control"+s.instanceUid+e;d("#"+i).length&&d(this).attr({"aria-describedby":i})}}),s.$dots.attr("role","tablist").find("li").each(function(t){var e=o[t];d(this).attr({role:"presentation"}),d(this).find("button").first().attr({role:"tab",id:"slick-slide-control"+s.instanceUid+t,"aria-controls":"slick-slide"+s.instanceUid+e,"aria-label":t+1+" of "+i,"aria-selected":null,tabindex:"-1"})}).eq(s.currentSlide).find("button").attr({"aria-selected":"true",tabindex:"0"}).end());for(var t=s.currentSlide,e=t+s.options.slidesToShow;t<e;t++)s.options.focusOnChange?s.$slides.eq(t).attr({tabindex:"0"}):s.$slides.eq(t).removeAttr("tabindex");s.activateADA()},r.prototype.initArrowEvents=function(){var t=this;!0===t.options.arrows&&t.slideCount>t.options.slidesToShow&&(t.$prevArrow.off("click.slick").on("click.slick",{message:"previous"},t.changeSlide),t.$nextArrow.off("click.slick").on("click.slick",{message:"next"},t.changeSlide),!0===t.options.accessibility&&(t.$prevArrow.on("keydown.slick",t.keyHandler),t.$nextArrow.on("keydown.slick",t.keyHandler)))},r.prototype.initDotEvents=function(){var t=this;!0===t.options.dots&&t.slideCount>t.options.slidesToShow&&(d("li",t.$dots).on("click.slick",{message:"index"},t.changeSlide),!0===t.options.accessibility&&t.$dots.on("keydown.slick",t.keyHandler)),!0===t.options.dots&&!0===t.options.pauseOnDotsHover&&t.slideCount>t.options.slidesToShow&&d("li",t.$dots).on("mouseenter.slick",d.proxy(t.interrupt,t,!0)).on("mouseleave.slick",d.proxy(t.interrupt,t,!1))},r.prototype.initSlideEvents=function(){var t=this;t.options.pauseOnHover&&(t.$list.on("mouseenter.slick",d.proxy(t.interrupt,t,!0)),t.$list.on("mouseleave.slick",d.proxy(t.interrupt,t,!1)))},r.prototype.initializeEvents=function(){var t=this;t.initArrowEvents(),t.initDotEvents(),t.initSlideEvents(),t.$list.on("touchstart.slick mousedown.slick",{action:"start"},t.swipeHandler),t.$list.on("touchmove.slick mousemove.slick",{action:"move"},t.swipeHandler),t.$list.on("touchend.slick mouseup.slick",{action:"end"}
1,t.swipeHandler),t.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},t.swipeHandler),t.$list.on("click.slick",t.clickHandler),d(document).on(t.visibilityChange,d.proxy(t.visibility,t)),!0===t.options.accessibility&&t.$list.on("keydown.slick",t.keyHandler),!0===t.options.focusOnSelect&&d(t.$slideTrack).children().on("click.slick",t.selectHandler),d(window).on("orientationchange.slick.slick-"+t.instanceUid,d.proxy(t.orientationChange,t)),d(window).on("resize.slick.slick-"+t.instanceUid,d.proxy(t.resize,t)),d("[draggable!=true]",t.$slideTrack).on("dragstart",t.preventDefault),d(window).on("load.slick.slick-"+t.instanceUid,t.setPosition),d(t.setPosition)},r.prototype.initUI=function(){var t=this;!0===t.options.arrows&&t.slideCount>t.options.slidesToShow&&(t.$prevArrow.show(),t.$nextArrow.show()),!0===t.options.dots&&t.slideCount>t.options.slidesToShow&&t.$dots.show()},r.prototype.keyHandler=function(t){var e=this;t.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===t.keyCode&&!0===e.options.accessibility?e.changeSlide({data:{message:!0===e.options.rtl?"next":"previous"}}):39===t.keyCode&&!0===e.options.accessibility&&e.changeSlide({data:{message:!0===e.options.rtl?"previous":"next"}}))},r.prototype.lazyLoad=function(){var t,e,i,n=this;function s(t){d("img[data-lazy]",t).each(function(){var t=d(this),e=d(this).attr("data-lazy"),i=d(this).attr("data-srcset"),s=d(this).attr("data-sizes")||n.$slider.attr("data-sizes"),o=document.createElement("img");o.onload=function(){t.animate({opacity:0}
vendor: 7,038 bytes, line 1
1,100,function(){i&&(t.attr("srcset",i),s&&t.attr("sizes",s)),t.attr("src",e).animate({opacity:1},200,function(){t.removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading")}),n.$slider.trigger("lazyLoaded",[n,t,e])})},o.onerror=function(){t.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),n.$slider.trigger("lazyLoadError",[n,t,e])},o.src=e})}if(!0===n.options.centerMode?i=!0===n.options.infinite?(e=n.currentSlide+(n.options.slidesToShow/2+1))+n.options.slidesToShow+2:(e=Math.max(0,n.currentSlide-(n.options.slidesToShow/2+1)),n.options.slidesToShow/2+1+2+n.currentSlide):(e=n.options.infinite?n.options.slidesToShow+n.currentSlide:n.currentSlide,i=Math.ceil(e+n.options.slidesToShow),!0===n.options.fade&&(0<e&&e--,i<=n.slideCount&&i++)),t=n.$slider.find(".slick-slide").slice(e,i),"anticipated"===n.options.lazyLoad)for(var o=e-1,r=i,l=n.$slider.find(".slick-slide"),a=0;a<n.options.slidesToScroll;a++)o<0&&(o=n.slideCount-1),t=(t=t.add(l.eq(o))).add(l.eq(r)),o--,r++;s(t),n.slideCount<=n.options.slidesToShow?s(n.$slider.find(".slick-slide")):n.currentSlide>=n.slideCount-n.options.slidesToShow?s(n.$slider.find(".slick-cloned").slice(0,n.options.slidesToShow)):0===n.currentSlide&&s(n.$slider.find(".slick-cloned").slice(-1*n.options.slidesToShow))},r.prototype.loadSlider=function(){var t=this;t.setPosition(),t.$slideTrack.css({opacity:1}),t.$slider.removeClass("slick-loading"),t.initUI(),"progressive"===t.options.lazyLoad&&t.progressiveLazyLoad()},r.prototype.next=r.prototype.slickNext=function(){this.changeSlide({data:{message:"next"}})},r.prototype.orientationChange=function(){this.checkResponsive(),this.setPosition()},r.prototype.pause=r.prototype.slickPause=function(){this.autoPlayClear(),this.paused=!0},r.prototype.play=r.prototype.slickPlay=function(){var t=this;t.autoPlay(),t.options.autoplay=!0,t.paused=!1,t.focussed=!1,t.interrupted=!1},r.prototype.postSlide=function(t){var e=this;e.unslicked||(e.$slider.trigger("afterChange",[e,t]),e.animating=!1,e.slideCount>e.options.slidesToShow&&e.setPosition(),e.swipeLeft=null,e.options.autoplay&&e.autoPlay(),!0===e.options.accessibility&&(e.initADA(),e.options.focusOnChange&&d(e.$slides.get(e.currentSlide)).attr("tabindex",0).focus()))},r.prototype.prev=r.prototype.slickPrev=function(){this.changeSlide({data:{message:"previous"}})},r.prototype.preventDefault=function(t){t.preventDefault()},r.prototype.progressiveLazyLoad=function(t){t=t||1;var e,i,s,o,n,r=this,l=d("img[data-lazy]",r.$slider);l.length?(e=l.first(),i=e.attr("data-lazy"),s=e.attr("data-srcset"),o=e.attr("data-sizes")||r.$slider.attr("data-sizes"),(n=document.createElement("img")).onload=function(){s&&(e.attr("srcset",s),o&&e.attr("sizes",o)),e.attr("src",i).removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading"),!0===r.options.adaptiveHeight&&r.setPosition(),r.$slider.trigger("lazyLoaded",[r,e,i]),r.progressiveLazyLoad()},n.onerror=function(){t<3?setTimeout(function(){r.progressiveLazyLoad(t+1)},500):(e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),r.$slider.trigger("lazyLoadError",[r,e,i]),r.progressiveLazyLoad())},n.src=i):r.$slider.trigger("allImagesLoaded",[r])},r.prototype.refresh=function(t){var e,i,s=this;i=s.slideCount-s.options.slidesToShow,!s.options.infinite&&s.currentSlide>i&&(s.currentSlide=i),s.slideCount<=s.options.slidesToShow&&(s.currentSlide=0),e=s.currentSlide,s.destroy(!0),d.extend(s,s.initials,{currentSlide:e}),s.init(),t||s.changeSlide({data:{message:"index",index:e}},!1)},r.prototype.registerBreakpoints=function(){var t,e,i,s=this,o=s.options.responsive||null;if("array"===d.type(o)&&o.length){for(t in s.respondTo=s.options.respondTo||"window",o)if(i=s.breakpoints.length-1,o.hasOwnProperty(t)){for(e=o[t].breakpoint;0<=i;)s.breakpoints[i]&&s.breakpoints[i]===e&&s.breakpoints.splice(i,1),i--;s.breakpoints.push(e),s.breakpointSettings[e]=o[t].settings}s.breakpoints.sort(function(t,e){return s.options.mobileFirst?t-e:e-t})}},r.prototype.reinit=function(){var t=this;t.$slides=t.$slideTrack.children(t.options.slide).addClass("slick-slide"),t.slideCount=t.$slides.length,t.currentSlide>=t.slideCount&&0!==t.currentSlide&&(t.currentSlide=t.currentSlide-t.options.slidesToScroll),t.slideCount<=t.options.slidesToShow&&(t.currentSlide=0),t.registerBreakpoints(),t.setProps(),t.setupInfinite(),t.buildArrows(),t.updateArrows(),t.initArrowEvents(),t.buildDots(),t.updateDots(),t.initDotEvents(),t.cleanUpSlideEvents(),t.initSlideEvents(),t.checkResponsive(!1,!0),!0===t.options.focusOnSelect&&d(t.$slideTrack).children().on("click.slick",t.selectHandler),t.setSlideClasses("number"==typeof t.currentSlide?t.currentSlide:0),t.setPosition(),t.focusHandler(),t.paused=!t.options.autoplay,t.autoPlay(),t.$slider.trigger("reInit",[t])},r.prototype.resize=function(){var t=this;d(window).width()!==t.windowWidth&&(clearTimeout(t.windowDelay),t.windowDelay=window.setTimeout(function(){t.windowWidth=d(window).width(),t.checkResponsive(),t.unslicked||t.setPosition()},50))},r.prototype.removeSlide=r.prototype.slickRemove=function(t,e,i){var s=this;if(t="boolean"==typeof t?!0===(e=t)?0:s.slideCount-1:!0===e?--t:t,s.slideCount<1||t<0||t>s.slideCount-1)return!1;s.unload(),!0===i?s.$slideTrack.children().remove():s.$slideTrack.children(this.options.slide).eq(t).remove(),s.$slides=s.$slideTrack.children(this.options.slide),s.$slideTrack.children(this.options.slide).detach(),s.$slideTrack.append(s.$slides),s.$slidesCache=s.$slides,s.reinit()},r.prototype.setCSS=function(t){var e,i,s=this,o={};!0===s.options.rtl&&(t=-t),e="left"==s.positionProp?Math.ceil(t)+"px":"0px",i="top"==s.positionProp?Math.ceil(t)+"px":"0px",o[s.positionProp]=t,!1===s.transformsEnabled||(!(o={})===s.cssTransitions?o[s.animType]="translate("+e+", "+i+")":o[s.animType]="translate3d("+e+", "+i+", 0px)"),s.$slideTrack.css(o)},r.prototype.setDimensions=function(){var t=this;!1===t.options.vertical?!0===t.options.centerMode&&t.$list.css({padding:"0px "+t.options.centerPadding}):(t.$list.height(t.$slides.first().outerHeight(!0)*t.options.slidesToShow),!0===t.options.centerMode&&t.$list.css({padding:t.options.centerPadding+" 0px"})),t.listWidth=t.$list.width(),t.listHeight=t.$list.height(),!1===t.options.vertical&&!1===t.options.variableWidth?(t.slideWidth=Math.ceil(t.listWidth/t.options.slidesToShow),t.$slideTrack.width(Math.ceil(t.slideWidth*t.$slideTrack.children(".slick-slide").length))):!0===t.options.variableWidth?t.$slideTrack.width(5e3*t.slideCount):(t.slideWidth=Math.ceil(t.listWidth),t.$slideTrack.height(Math.ceil(t.$slides.first().outerHeight(!0)*t.$slideTrack.children(".slick-slide").length)));var e=t.$slides.first().outerWidth(!0)-t.$slides.first().width();!1===t.options.variableWidth&&t.$slideTrack.children(".slick-slide").width(t.slideWidth-e)},r.prototype.setFade=function(){var i,s=this;s.$slides.each(function(t,e){i=s.slideWidth*t*-1,!0===s.options.rtl?d(e).css({position:"relative",right:i,top:0,zIndex:s.options.zIndex-2,opacity:0}
1):d(e).css({position:"relative",left:i,top:0,zIndex:s.options.zIndex-2,opacity:0})}),s.$slides.eq(s.currentSlide).css({zIndex:s.options.zIndex-1,opacity:1})},r.prototype.setHeight=function(){var t=this;if(1===t.options.slidesToShow&&!0===t.options.adaptiveHeight&&!1===t.options.vertical){var e=t.$slides.eq(t.currentSlide).outerHeight(!0);t.$list.css("height",e)}},r.prototype.setOption=r.prototype.slickSetOption=function(){var t,e,i,s,o,n=this,r=!1;if("object"===d.type(arguments[0])?(i=arguments[0],r=arguments[1],o="multiple"):"string"===d.type(arguments[0])&&(s=arguments[1],r=arguments[2],"responsive"===(i=arguments[0])&&"array"===d.type(arguments[1])?o="responsive":void 0!==arguments[1]&&(o="single")),"single"===o)n.options[i]=s;else if("multiple"===o)d.each(i,function(t,e){n.options[t]=e});else if("responsive"===o)for(e in s)if("array"!==d.type(n.options.responsive))n.options.responsive=[s[e]];else{for(t=n.options.responsive.length-1;0<=t;)n.options.responsive[t].breakpoint===s[e].breakpoint&&n.options.responsive.splice(t,1),t--;n.options.responsive.push(s[e])}r&&(n.unload(),n.reinit())},r.prototype.setPosition=function(){var t=this;t.setDimensions(),t.setHeight(),!1===t.options.fade?t.setCSS(t.getLeft(t.currentSlide)):t.setFade(),t.$slider.trigger("setPosition",[t])},r.prototype.setProps=function(){var t=this,e=document.body.style;t.positionProp=!0===t.options.vertical?"top":"left","top"===t.positionProp?t.$slider.addClass("slick-vertical"):t.$slider.removeClass("slick-vertical"),void 0===e.WebkitTransition&&void 0===e.MozTransition&&void 0===e.msTransition||!0===t.options.useCSS&&(t.cssTransitions=!0),t.options.fade&&("number"==typeof t.options.zIndex?t.options.zIndex<3&&(t.options.zIndex=3):t.options.zIndex=t.defaults.zIndex),void 0!==e.OTransform&&(t.animType="OTransform",t.transformType="-o-transform",t.transitionType="OTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(t.animType=!1)),void 0!==e.MozTransform&&(t.animType="MozTransform",t.transformType="-moz-transform",t.transitionType="MozTransition",void 0===e.perspectiveProperty&&void 0===e.MozPerspective&&(t.animType=!1)),void 0!==e.webkitTransform&&(t.animType="webkitTransform",t.transformType="-webkit-transform",t.transitionType="webkitTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(t.animType=!1)),void 0!==e.msTransform&&(t.animType="msTransform",t.transformType="-ms-transform",t.transitionType="msTransition",void 0===e.msTransform&&(t.animType=!1)),void 0!==e.transform&&!1!==t.animType&&(t.animType="transform",t.transformType="transform",t.transitionType="transition"),t.transformsEnabled=t.options.useTransform&&null!==t.animType&&!1!==t.animType},r.prototype.setSlideClasses=function(t){var e,i,s,o,n=this;if(i=n.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),n.$slides.eq(t).addClass("slick-current"),!0===n.options.centerMode){var r=n.options.slidesToShow%2==0?1:0;e=Math.floor(n.options.slidesToShow/2),!0===n.options.infinite&&(e<=t&&t<=n.slideCount-1-e?n.$slides.slice(t-e+r,t+e+1).addClass("slick-active").attr("aria-hidden","false"):(s=n.options.slidesToShow+t,i.slice(s-e+1+r,s+e+2).addClass("slick-active").attr("aria-hidden","false")),0===t?i.eq(i.length-1-n.options.slidesToShow).addClass("slick-center"):t===n.slideCount-1&&i.eq(n.options.slidesToShow).addClass("slick-center")),n.$slides.eq(t).addClass("slick-center")}else 0<=t&&t<=n.slideCount-n.options.slidesToShow?n.$slides.slice(t,t+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):i.length<=n.options.slidesToShow?i.addClass("slick-active").attr("aria-hidden","false"):(o=n.slideCount%n.options.slidesToShow,s=!0===n.options.infinite?n.options.slidesToShow+t:t,n.options.slidesToShow==n.options.slidesToScroll&&n.slideCount-t<n.options.slidesToShow?i.slice(s-(n.options.slidesToShow-o),s+o).addClass("slick-active").attr("aria-hidden","false"):i.slice(s,s+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"));"ondemand"!==n.options.lazyLoad&&"anticipated"!==n.options.lazyLoad||n.lazyLoad()},r.prototype.setupInfinite=function(){var t,e,i,s=this;if(!0===s.options.fade&&(s.options.centerMode=!1),!0===s.options.infinite&&!1===s.options.fade&&(e=null,s.slideCount>s.options.slidesToShow)){for(i=!0===s.options.centerMode?s.options.slidesToShow+1:s.options.slidesToShow,t=s.slideCount;t>s.slideCount-i;t-=1)e=t-1,d(s.$slides[e]).clone(!0).attr("id","").attr("data-slick-index",e-s.slideCount).prependTo(s.$slideTrack).addClass("slick-cloned");for(t=0;t<i+s.slideCount;t+=1)e=t,d(s.$slides[e]).clone(!0).attr("id","").attr("data-slick-index",e+s.slideCount).appendTo(s.$slideTrack).addClass("slick-cloned");s.$slideTrack.find(".slick-cloned").find("[id]").each(function(){d(this).attr("id","")})}},r.prototype.interrupt=function(t){t||this.autoPlay(),this.interrupted=t},r.prototype.selectHandler=function(t){var e=d(t.target).is(".slick-slide")?d(t.target):d(t.target).parents(".slick-slide"),i=parseInt(e.attr("data-slick-index"));i=i||0,this.slideCount<=this.options.slidesToShow?this.slideHandler(i,!1,!0):this.slideHandler(i)}
vendor: 6,042 bytes, line 1
1,r.prototype.slideHandler=function(t,e,i){var s,o,n,r,l,a,d=this;if(e=e||!1,!(!0===d.animating&&!0===d.options.waitForAnimate||!0===d.options.fade&&d.currentSlide===t))if(!1===e&&d.asNavFor(t),s=t,l=d.getLeft(s),r=d.getLeft(d.currentSlide),d.currentLeft=null===d.swipeLeft?r:d.swipeLeft,!1===d.options.infinite&&!1===d.options.centerMode&&(t<0||t>d.getDotCount()*d.options.slidesToScroll))!1===d.options.fade&&(s=d.currentSlide,!0!==i&&d.slideCount>d.options.slidesToShow?d.animateSlide(r,function(){d.postSlide(s)}):d.postSlide(s));else if(!1===d.options.infinite&&!0===d.options.centerMode&&(t<0||t>d.slideCount-d.options.slidesToScroll))!1===d.options.fade&&(s=d.currentSlide,!0!==i&&d.slideCount>d.options.slidesToShow?d.animateSlide(r,function(){d.postSlide(s)}):d.postSlide(s));else{if(d.options.autoplay&&clearInterval(d.autoPlayTimer),o=s<0?d.slideCount%d.options.slidesToScroll!=0?d.slideCount-d.slideCount%d.options.slidesToScroll:d.slideCount+s:s>=d.slideCount?d.slideCount%d.options.slidesToScroll!=0?0:s-d.slideCount:s,d.animating=!0,d.$slider.trigger("beforeChange",[d,d.currentSlide,o]),n=d.currentSlide,d.currentSlide=o,d.setSlideClasses(d.currentSlide),d.options.asNavFor&&(a=(a=d.getNavTarget()).slick("getSlick")).slideCount<=a.options.slidesToShow&&a.setSlideClasses(d.currentSlide),d.updateDots(),d.updateArrows(),!0===d.options.fade)return!0!==i?(d.fadeSlideOut(n),d.fadeSlide(o,function(){d.postSlide(o)})):d.postSlide(o),void d.animateHeight();!0!==i&&d.slideCount>d.options.slidesToShow?d.animateSlide(l,function(){d.postSlide(o)}):d.postSlide(o)}},r.prototype.startLoad=function(){var t=this;!0===t.options.arrows&&t.slideCount>t.options.slidesToShow&&(t.$prevArrow.hide(),t.$nextArrow.hide()),!0===t.options.dots&&t.slideCount>t.options.slidesToShow&&t.$dots.hide(),t.$slider.addClass("slick-loading")},r.prototype.swipeDirection=function(){var t,e,i,s,o=this;return t=o.touchObject.startX-o.touchObject.curX,e=o.touchObject.startY-o.touchObject.curY,i=Math.atan2(e,t),(s=Math.round(180*i/Math.PI))<0&&(s=360-Math.abs(s)),s<=45&&0<=s?!1===o.options.rtl?"left":"right":s<=360&&315<=s?!1===o.options.rtl?"left":"right":135<=s&&s<=225?!1===o.options.rtl?"right":"left":!0===o.options.verticalSwiping?35<=s&&s<=135?"down":"up":"vertical"},r.prototype.swipeEnd=function(t){var e,i,s=this;if(s.dragging=!1,s.swiping=!1,s.scrolling)return s.scrolling=!1;if(s.interrupted=!1,s.shouldClick=!(10<s.touchObject.swipeLength),void 0===s.touchObject.curX)return!1;if(!0===s.touchObject.edgeHit&&s.$slider.trigger("edge",[s,s.swipeDirection()]),s.touchObject.swipeLength>=s.touchObject.minSwipe){switch(i=s.swipeDirection()){case"left":case"down":e=s.options.swipeToSlide?s.checkNavigable(s.currentSlide+s.getSlideCount()):s.currentSlide+s.getSlideCount(),s.currentDirection=0;break;case"right":case"up":e=s.options.swipeToSlide?s.checkNavigable(s.currentSlide-s.getSlideCount()):s.currentSlide-s.getSlideCount(),s.currentDirection=1}"vertical"!=i&&(s.slideHandler(e),s.touchObject={},s.$slider.trigger("swipe",[s,i]))}else s.touchObject.startX!==s.touchObject.curX&&(s.slideHandler(s.currentSlide),s.touchObject={})},r.prototype.swipeHandler=function(t){var e=this;if(!(!1===e.options.swipe||"ontouchend"in document&&!1===e.options.swipe||!1===e.options.draggable&&-1!==t.type.indexOf("mouse")))switch(e.touchObject.fingerCount=t.originalEvent&&void 0!==t.originalEvent.touches?t.originalEvent.touches.length:1,e.touchObject.minSwipe=e.listWidth/e.options.touchThreshold,!0===e.options.verticalSwiping&&(e.touchObject.minSwipe=e.listHeight/e.options.touchThreshold),t.data.action){case"start":e.swipeStart(t);break;case"move":e.swipeMove(t);break;case"end":e.swipeEnd(t)}},r.prototype.swipeMove=function(t){var e,i,s,o,n,r,l=this;return n=void 0!==t.originalEvent?t.originalEvent.touches:null,!(!l.dragging||l.scrolling||n&&1!==n.length)&&(e=l.getLeft(l.currentSlide),l.touchObject.curX=void 0!==n?n[0].pageX:t.clientX,l.touchObject.curY=void 0!==n?n[0].pageY:t.clientY,l.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(l.touchObject.curX-l.touchObject.startX,2))),r=Math.round(Math.sqrt(Math.pow(l.touchObject.curY-l.touchObject.startY,2))),!l.options.verticalSwiping&&!l.swiping&&4<r?!(l.scrolling=!0):(!0===l.options.verticalSwiping&&(l.touchObject.swipeLength=r),i=l.swipeDirection(),void 0!==t.originalEvent&&4<l.touchObject.swipeLength&&(l.swiping=!0,t.preventDefault()),o=(!1===l.options.rtl?1:-1)*(l.touchObject.curX>l.touchObject.startX?1:-1),!0===l.options.verticalSwiping&&(o=l.touchObject.curY>l.touchObject.startY?1:-1),s=l.touchObject.swipeLength,(l.touchObject.edgeHit=!1)===l.options.infinite&&(0===l.currentSlide&&"right"===i||l.currentSlide>=l.getDotCount()&&"left"===i)&&(s=l.touchObject.swipeLength*l.options.edgeFriction,l.touchObject.edgeHit=!0),!1===l.options.vertical?l.swipeLeft=e+s*o:l.swipeLeft=e+s*(l.$list.height()/l.listWidth)*o,!0===l.options.verticalSwiping&&(l.swipeLeft=e+s*o),!0!==l.options.fade&&!1!==l.options.touchMove&&(!0===l.animating?(l.swipeLeft=null,!1):void l.setCSS(l.swipeLeft))))},r.prototype.swipeStart=function(t){var e,i=this;if(i.interrupted=!0,1!==i.touchObject.fingerCount||i.slideCount<=i.options.slidesToShow)return!(i.touchObject={});void 0!==t.originalEvent&&void 0!==t.originalEvent.touches&&(e=t.originalEvent.touches[0]),i.touchObject.startX=i.touchObject.curX=void 0!==e?e.pageX:t.clientX,i.touchObject.startY=i.touchObject.curY=void 0!==e?e.pageY:t.clientY,i.dragging=!0},r.prototype.unfilterSlides=r.prototype.slickUnfilter=function(){var t=this;null!==t.$slidesCache&&(t.unload(),t.$slideTrack.children(this.options.slide).detach(),t.$slidesCache.appendTo(t.$slideTrack),t.reinit())},r.prototype.unload=function(){var t=this;d(".slick-cloned",t.$slider).remove(),t.$dots&&t.$dots.remove(),t.$prevArrow&&t.htmlExpr.test(t.options.prevArrow)&&t.$prevArrow.remove(),t.$nextArrow&&t.htmlExpr.test(t.options.nextArrow)&&t.$nextArrow.remove(),t.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")}
1,r.prototype.unslick=function(t){this.$slider.trigger("unslick",[this,t]),this.destroy()},r.prototype.updateArrows=function(){var t=this;Math.floor(t.options.slidesToShow/2),!0===t.options.arrows&&t.slideCount>t.options.slidesToShow&&!t.options.infinite&&(t.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),t.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===t.currentSlide?(t.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),t.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):t.currentSlide>=t.slideCount-t.options.slidesToShow&&!1===t.options.centerMode?(t.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),t.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):t.currentSlide>=t.slideCount-1&&!0===t.options.centerMode&&(t.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),t.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},r.prototype.updateDots=function(){var t=this;null!==t.$dots&&(t.$dots.find("li").removeClass("slick-active").end(),t.$dots.find("li").eq(Math.floor(t.currentSlide/t.options.slidesToScroll)).addClass("slick-active"))},r.prototype.visibility=function(){this.options.autoplay&&(document[this.hidden]?this.interrupted=!0:this.interrupted=!1)},d.fn.slick=function(){var t,e,i=this,s=arguments[0],o=Array.prototype.slice.call(arguments,1),n=i.length;for(t=0;t<n;t++)if("object"==typeof s||void 0===s?i[t].slick=new r(i[t],s):e=i[t].slick[s].apply(i[t].slick,o),void 0!==e)return e;return i}}),function(){"use strict";var e=0,n={};function i(t){if(!t)throw new Error("No options passed to Waypoint constructor");if(!t.element)throw new Error("No element option passed to Waypoint constructor");if(!t.handler)throw new Error("No handler option passed to Waypoint constructor");this.key="waypoint-"+e,this.options=i.Adapter.extend({},i.defaults,t),this.element=this.options.element,this.adapter=new i.Adapter(this.element),this.callback=t.handler,this.axis=this.options.horizontal?"horizontal":"vertical",this.enabled=this.options.enabled,this.triggerPoint=null,this.group=i.Group.findOrCreate({name:this.options.group,axis:this.axis}),this.context=i.Context.findOrCreateByElement(this.options.context),i.offsetAliases[this.options.offset]&&(this.options.offset=i.offsetAliases[this.options.offset]),this.group.add(this),this.context.add(this),n[this.key]=this,e+=1}i.prototype.queueTrigger=function(t){this.group.queueTrigger(this,t)},i.prototype.trigger=function(t){this.enabled&&this.callback&&this.callback.apply(this,t)},i.prototype.destroy=function(){this.context.remove(this),this.group.remove(this),delete n[this.key]},i.prototype.disable=function(){return this.enabled=!1,this},i.prototype.enable=function(){return this.context.refresh(),this.enabled=!0,this},i.prototype.next=function(){return this.group.next(this)},i.prototype.previous=function(){return this.group.previous(this)},i.invokeAll=function(t){var e=[];for(var i in n)e.push(n[i]);for(var s=0,o=e.length;s<o;s++)e[s][t]()},i.destroyAll=function(){i.invokeAll("destroy")},i.disableAll=function(){i.invokeAll("disable")},i.enableAll=function(){for(var t in i.Context.refreshAll(),n)n[t].enabled=!0;return this},i.refreshAll=function(){i.Context.refreshAll()},i.viewportHeight=function(){return window.innerHeight||document.documentElement.clientHeight},i.viewportWidth=function(){return document.documentElement.clientWidth},i.adapters=[],i.defaults={context:window,continuous:!0,enabled:!0,group:"default",horizontal:!1,offset:0},i.offsetAliases={"bottom-in-view":function(){return this.context.innerHeight()-this.adapter.outerHeight()},"right-in-view":function(){return this.context.innerWidth()-this.adapter.outerWidth()}},window.Waypoint=i}(),function(){"use strict";function e(t){window.setTimeout(t,1e3/60)}var i=0,s={},g=window.Waypoint,t=window.onload;function o(t){this.element=t,this.Adapter=g.Adapter,this.adapter=new this.Adapter(t),this.key="waypoint-context-"+i,this.didScroll=!1,this.didResize=!1,this.oldScroll={x:this.adapter.scrollLeft(),y:this.adapter.scrollTop()},this.waypoints={vertical:{},horizontal:{}},t.waypointContextKey=this.key,s[t.waypointContextKey]=this,i+=1,g.windowContext||(g.windowContext=!0,g.windowContext=new o(window)),this.createThrottledScrollHandler(),this.createThrottledResizeHandler()}o.prototype.add=function(t){var e=t.options.horizontal?"horizontal":"vertical";this.waypoints[e][t.key]=t,this.refresh()},o.prototype.checkEmpty=function(){var t=this.Adapter.isEmptyObject(this.waypoints.horizontal),e=this.Adapter.isEmptyObject(this.waypoints.vertical),i=this.element==this.element.window;t&&e&&!i&&(this.adapter.off(".waypoints"),delete s[this.key])},o.prototype.createThrottledResizeHandler=function(){var t=this;function e(){t.handleResize(),t.didResize=!1}this.adapter.on("resize.waypoints",function(){t.didResize||(t.didResize=!0,g.requestAnimationFrame(e))})},o.prototype.createThrottledScrollHandler=function(){var t=this;function e(){t.handleScroll(),t.didScroll=!1}this.adapter.on("scroll.waypoints",function(){t.didScroll&&!g.isTouch||(t.didScroll=!0,g.requestAnimationFrame(e))})},o.prototype.handleResize=function(){g.Context.refreshAll()},o.prototype.handleScroll=function(){var t={},e={horizontal:{newScroll:this.adapter.scrollLeft(),oldScroll:this.oldScroll.x,forward:"right",backward:"left"},vertical:{newScroll:this.adapter.scrollTop(),oldScroll:this.oldScroll.y,forward:"down",backward:"up"}};for(var i in e){var s=e[i],o=s.newScroll>s.oldScroll?s.forward:s.backward;for(var n in this.waypoints[i]){var r=this.waypoints[i][n];if(null!==r.triggerPoint){var l=s.oldScroll<r.triggerPoint,a=s.newScroll>=r.triggerPoint;(l&&a||!l&&!a)&&(r.queueTrigger(o),t[r.group.id]=r.group)}}}for(var d in t)t[d].flushTriggers();this.oldScroll={x:e.horizontal.newScroll,y:e.vertical.newScroll}}
1,o.prototype.innerHeight=function(){return this.element==this.element.window?g.viewportHeight():this.adapter.innerHeight()},o.prototype.remove=function(t){delete this.waypoints[t.axis][t.key],this.checkEmpty()},o.prototype.innerWidth=function(){return this.element==this.element.window?g.viewportWidth():this.adapter.innerWidth()},o.prototype.destroy=function(){var t=[];for(var e in this.waypoints)for(var i in this.waypoints[e])t.push(this.waypoints[e][i]);for(var s=0,o=t.length;s<o;s++)t[s].destroy()},o.prototype.refresh=function(){var t,e=this.element==this.element.window,i=e?void 0:this.adapter.offset(),s={};for(var o in this.handleScroll(),t={horizontal:{contextOffset:e?0:i.left,contextScroll:e?0:this.oldScroll.x,contextDimension:this.innerWidth(),oldScroll:this.oldScroll.x,forward:"right",backward:"left",offsetProp:"left"},vertical:{contextOffset:e?0:i.top,contextScroll:e?0:this.oldScroll.y,contextDimension:this.innerHeight(),oldScroll:this.oldScroll.y,forward:"down",backward:"up",offsetProp:"top"}}){var n=t[o];for(var r in this.waypoints[o]){var l,a,d,c,h=this.waypoints[o][r],p=h.options.offset,u=h.triggerPoint,f=0,_=null==u;h.element!==h.element.window&&(f=h.adapter.offset()[n.offsetProp]),"function"==typeof p?p=p.apply(h):"string"==typeof p&&(p=parseFloat(p),-1<h.options.offset.indexOf("%")&&(p=Math.ceil(n.contextDimension*p/100))),l=n.contextScroll-n.contextOffset,h.triggerPoint=Math.floor(f+l-p),a=u<n.oldScroll,d=h.triggerPoint>=n.oldScroll,c=!a&&!d,!_&&(a&&d)?(h.queueTrigger(n.backward),s[h.group.id]=h.group):!_&&c?(h.queueTrigger(n.forward),s[h.group.id]=h.group):_&&n.oldScroll>=h.triggerPoint&&(h.queueTrigger(n.forward),s[h.group.id]=h.group)}}return g.requestAnimationFrame(function(){for(var t in s)s[t].flushTriggers()}),this},o.findOrCreateByElement=function(t){return o.findByElement(t)||new o(t)},o.refreshAll=function(){for(var t in s)s[t].refresh()},o.findByElement=function(t){return s[t.waypointContextKey]},window.onload=function(){t&&t(),o.refreshAll()},g.requestAnimationFrame=function(t){(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||e).call(window,t)},g.Context=o}(),function(){"use strict";function r(t,e){return t.triggerPoint-e.triggerPoint}function l(t,e){return e.triggerPoint-t.triggerPoint}var e={vertical:{},horizontal:{}},i=window.Waypoint;function s(t){this.name=t.name,this.axis=t.axis,this.id=this.name+"-"+this.axis,this.waypoints=[],this.clearTriggerQueues(),e[this.axis][this.name]=this}s.prototype.add=function(t){this.waypoints.push(t)},s.prototype.clearTriggerQueues=function(){this.triggerQueues={up:[],down:[],left:[],right:[]}},s.prototype.flushTriggers=function(){for(var t in this.triggerQueues){var e=this.triggerQueues[t],i="up"===t||"left"===t;e.sort(i?l:r);for(var s=0,o=e.length;s<o;s+=1){var n=e[s];!n.options.continuous&&s!==e.length-1||n.trigger([t])}}this.clearTriggerQueues()},s.prototype.next=function(t){this.waypoints.sort(r);var e=i.Adapter.inArray(t,this.waypoints);return e===this.waypoints.length-1?null:this.waypoints[e+1]},s.prototype.previous=function(t){this.waypoints.sort(r);var e=i.Adapter.inArray(t,this.waypoints);return e?this.waypoints[e-1]:null},s.prototype.queueTrigger=function(t,e){this.triggerQueues[e].push(t)},s.prototype.remove=function(t){var e=i.Adapter.inArray(t,this.waypoints);-1<e&&this.waypoints.splice(e,1)},s.prototype.first=function(){return this.waypoints[0]},s.prototype.last=function(){return this.waypoints[this.waypoints.length-1]},s.findOrCreate=function(t){return e[t.axis][t.name]||new s(t)},i.Group=s}(),function(){"use strict";var t=window.Waypoint;function s(t){return t===t.window}function o(t){return s(t)?t:t.defaultView}function e(t){this.element=t,this.handlers={}}e.prototype.innerHeight=function(){return s(this.element)?this.element.innerHeight:this.element.clientHeight},e.prototype.innerWidth=function(){return s(this.element)?this.element.innerWidth:this.element.clientWidth},e.prototype.off=function(t,e){function i(t,e,i){for(var s=0,o=e.length-1;s<o;s++){var n=e[s];i&&i!==n||t.removeEventListener(n)}}var s=t.split("."),o=s[0],n=s[1],r=this.element;if(n&&this.handlers[n]&&o)i(r,this.handlers[n][o],e),this.handlers[n][o]=[];else if(o)for(var l in this.handlers)i(r,this.handlers[l][o]||[],e),this.handlers[l][o]=[];else if(n&&this.handlers[n]){for(var a in this.handlers[n])i(r,this.handlers[n][a],e);this.handlers[n]={}}},e.prototype.offset=function(){if(!this.element.ownerDocument)return null;var t=this.element.ownerDocument.documentElement,e=o(this.element.ownerDocument),i={top:0,left:0};return this.element.getBoundingClientRect&&(i=this.element.getBoundingClientRect()),{top:i.top+e.pageYOffset-t.clientTop,left:i.left+e.pageXOffset-t.clientLeft}},e.prototype.on=function(t,e){var i=t.split("."),s=i[0],o=i[1]||"__default",n=this.handlers[o]=this.handlers[o]||{};(n[s]=n[s]||[]).push(e),this.element.addEventListener(s,e)},e.prototype.outerHeight=function(t){var e,i=this.innerHeight();return t&&!s(this.element)&&(e=window.getComputedStyle(this.element),i+=parseInt(e.marginTop,10),i+=parseInt(e.marginBottom,10)),i},e.prototype.outerWidth=function(t){var e,i=this.innerWidth();return t&&!s(this.element)&&(e=window.getComputedStyle(this.element),i+=parseInt(e.marginLeft,10),i+=parseInt(e.marginRight,10)),i},e.prototype.scrollLeft=function(){var t=o(this.element);return t?t.pageXOffset:this.element.scrollLeft},e.prototype.scrollTop=function(){var t=o(this.element);return t?t.pageYOffset:this.element.scrollTop},e.extend=function(){var t=Array.prototype.slice.call(arguments);function e(t,e){if("object"==typeof t&&"object"==typeof e)for(var i in e)e.hasOwnProperty(i)&&(t[i]=e[i]);return t}for(var i=1,s=t.length;i<s;i++)e(t[0],t[i]);return t[0]}
1,e.inArray=function(t,e,i){return null==e?-1:e.indexOf(t,i)},e.isEmptyObject=function(t){for(var e in t)return!1;return!0},t.adapters.push({name:"noframework",Adapter:e}),t.Adapter=e}(),function(){"use strict";function t(){}var s=window.Waypoint;function e(t){this.options=s.Adapter.extend({},e.defaults,t),this.axis=this.options.horizontal?"horizontal":"vertical",this.waypoints=[],this.element=this.options.element,this.createWaypoints()}e.prototype.createWaypoints=function(){for(var t={vertical:[{down:"enter",up:"exited",offset:"100%"},{down:"entered",up:"exit",offset:"bottom-in-view"},{down:"exit",up:"entered",offset:0},{down:"exited",up:"enter",offset:function(){return-this.adapter.outerHeight()}}],horizontal:[{right:"enter",left:"exited",offset:"100%"},{right:"entered",left:"exit",offset:"right-in-view"},{right:"exit",left:"entered",offset:0},{right:"exited",left:"enter",offset:function(){return-this.adapter.outerWidth()}}]},e=0,i=t[this.axis].length;e<i;e++){var s=t[this.axis][e];this.createWaypoint(s)}},e.prototype.createWaypoint=function(t){var e,i=this;this.waypoints.push(new s({context:this.options.context,element:this.options.element,enabled:this.options.enabled,handler:(e=t,function(t){i.options[e[t]].call(i,t)}),offset:t.offset,horizontal:this.options.horizontal}))},e.prototype.destroy=function(){for(var t=0,e=this.waypoints.length;t<e;t++)this.waypoints[t].destroy();this.waypoints=[]},e.prototype.disable=function(){for(var t=0,e=this.waypoints.length;t<e;t++)this.waypoints[t].disable()},e.prototype.enable=function(){for(var t=0,e=this.waypoints.length;t<e;t++)this.waypoints[t].enable()},e.defaults={context:window,enabled:!0,enter:t,entered:t,exit:t,exited:t},s.Inview=e}(); 2//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNob3Nlbi5qcXVlcnkuanMiLCJoZWFkcm9vbS5qcyIsIndvdy5qcyIsInNsaWNrLmpzIiwibm9mcmFtZXdvcmsud2F5cG9pbnRzLmpzIiwiaW52aWV3LmpzIl0sIm5hbWVzIjpbIiQiLCJBYnN0cmFjdENob3NlbiIsIkNob3NlbiIsIlNlbGVjdFBhcnNlciIsImhhc1Byb3AiLCJoYXNPd25Qcm9wZXJ0eSIsInRoaXMiLCJvcHRpb25zX2luZGV4IiwicGFyc2VkIiwiZm9ybV9maWVsZCIsIm9wdGlvbnMxIiwib3B0aW9ucyIsImxhYmVsX2NsaWNrX2hhbmRsZXIiLCJmbiIsIm1lIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJiaW5kIiwiYnJvd3Nlcl9pc19zdXBwb3J0ZWQiLCJpc19tdWx0aXBsZSIsIm11bHRpcGxlIiwic2V0X2RlZmF1bHRfdGV4dCIsInNldF9kZWZhdWx0X3ZhbHVlcyIsInNldHVwIiwic2V0X3VwX2h0bWwiLCJyZWdpc3Rlcl9vYnNlcnZlcnMiLCJvbl9yZWFkeSIsIl9fc3VwZXJfXyIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiYWRkX25vZGUiLCJjaGlsZCIsIm5vZGVOYW1lIiwidG9VcHBlckNhc2UiLCJhZGRfZ3JvdXAiLCJhZGRfb3B0aW9uIiwiZ3JvdXAiLCJncm91cF9wb3NpdGlvbiIsImkiLCJsZW4iLCJvcHRpb24iLCJyZWYiLCJyZXN1bHRzMSIsImxlbmd0aCIsInB1c2giLCJhcnJheV9pbmRleCIsImxhYmVsIiwidGl0bGUiLCJjaGlsZHJlbiIsImRpc2FibGVkIiwiY2xhc3NlcyIsImNsYXNzTmFtZSIsImNoaWxkTm9kZXMiLCJncm91cF9kaXNhYmxlZCIsInRleHQiLCJ2YWx1ZSIsImh0bWwiLCJpbm5lckhUTUwiLCJzZWxlY3RlZCIsImdyb3VwX2FycmF5X2luZGV4IiwiZ3JvdXBfbGFiZWwiLCJzdHlsZSIsImNzc1RleHQiLCJlbXB0eSIsInNlbGVjdF90b19hcnJheSIsInNlbGVjdCIsInBhcnNlciIsIl90aGlzIiwiY2xpY2tfdGVzdF9hY3Rpb24iLCJldnQiLCJ0ZXN0X2FjdGl2ZV9jbGljayIsImFjdGl2YXRlX2FjdGlvbiIsImFjdGl2YXRlX2ZpZWxkIiwiYWN0aXZlX2ZpZWxkIiwibW91c2Vfb25fY29udGFpbmVyIiwicmVzdWx0c19zaG93aW5nIiwicmVzdWx0X2hpZ2hsaWdodGVkIiwiaXNfcnRsIiwicnRsIiwidGVzdCIsImFsbG93X3NpbmdsZV9kZXNlbGVjdCIsImRpc2FibGVfc2VhcmNoX3RocmVzaG9sZCIsImRpc2FibGVfc2VhcmNoIiwiZW5hYmxlX3NwbGl0X3dvcmRfc2VhcmNoIiwiZ3JvdXBfc2VhcmNoIiwic2VhcmNoX2NvbnRhaW5zIiwic2luZ2xlX2JhY2tzdHJva2VfZGVsZXRlIiwibWF4X3NlbGVjdGVkX29wdGlvbnMiLCJJbmZpbml0eSIsImluaGVyaXRfc2VsZWN0X2NsYXNzZXMiLCJkaXNwbGF5X3NlbGVjdGVkX29wdGlvbnMiLCJkaXNwbGF5X2Rpc2FibGVkX29wdGlvbnMiLCJpbmNsdWRlX2dyb3VwX2xhYmVsX2luX3NlbGVjdGVkIiwibWF4X3Nob3duX3Jlc3VsdHMiLCJOdW1iZXIiLCJQT1NJVElWRV9JTkZJTklUWSIsImNhc2Vfc2Vuc2l0aXZlX3NlYXJjaCIsImhpZGVfcmVzdWx0c19vbl9zZWxlY3QiLCJnZXRBdHRyaWJ1dGUiLCJkZWZhdWx0X3RleHQiLCJwbGFjZWhvbGRlcl90ZXh0X211bHRpcGxlIiwicGxhY2Vob2xkZXJfdGV4dCIsImRlZmF1bHRfbXVsdGlwbGVfdGV4dCIsInBsYWNlaG9sZGVyX3RleHRfc2luZ2xlIiwiZGVmYXVsdF9zaW5nbGVfdGV4dCIsImVzY2FwZV9odG1sIiwicmVzdWx0c19ub25lX2ZvdW5kIiwibm9fcmVzdWx0c190ZXh0IiwiZGVmYXVsdF9ub19yZXN1bHRfdGV4dCIsImNob2ljZV9sYWJlbCIsIml0ZW0iLCJtb3VzZV9lbnRlciIsIm1vdXNlX2xlYXZlIiwiaW5wdXRfZm9jdXMiLCJzZXRUaW1lb3V0IiwiY29udGFpbmVyX21vdXNlZG93biIsImlucHV0X2JsdXIiLCJibHVyX3Rlc3QiLCJyZXN1bHRzX29wdGlvbl9idWlsZCIsImNvbn
2RlbnQiLCJkYXRhIiwiZGF0YV9jb250ZW50Iiwic2hvd25fcmVzdWx0cyIsInJlc3VsdHNfZGF0YSIsInJlc3VsdF9hZGRfZ3JvdXAiLCJyZXN1bHRfYWRkX29wdGlvbiIsImZpcnN0IiwiY2hvaWNlX2J1aWxkIiwic2luZ2xlX3NldF9zZWxlY3RlZF90ZXh0Iiwib3B0aW9uX2VsIiwic2VhcmNoX21hdGNoIiwiaW5jbHVkZV9vcHRpb25faW5fcmVzdWx0cyIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsImpvaW4iLCJzZXRBdHRyaWJ1dGUiLCJoaWdobGlnaHRlZF9odG1sIiwib3V0ZXJIVE1MIiwiZ3JvdXBfZWwiLCJncm91cF9tYXRjaCIsImFjdGl2ZV9vcHRpb25zIiwicmVzdWx0c191cGRhdGVfZmllbGQiLCJyZXN1bHRzX3Jlc2V0X2NsZWFudXAiLCJyZXN1bHRfY2xlYXJfaGlnaGxpZ2h0IiwicmVzdWx0c19idWlsZCIsIndpbm5vd19yZXN1bHRzIiwicmVzZXRfc2luZ2xlX3NlbGVjdF9vcHRpb25zIiwicmVzdWx0IiwicmVzdWx0c190b2dnbGUiLCJyZXN1bHRzX2hpZGUiLCJyZXN1bHRzX3Nob3ciLCJyZXN1bHRzX3NlYXJjaCIsImVzY2FwZWRRdWVyeSIsImZpeCIsInByZWZpeCIsInF1ZXJ5IiwicmVnZXgiLCJyZXN1bHRzIiwicmVzdWx0c19ncm91cCIsInN0YXJ0cG9zIiwic3VmZml4Iiwibm9fcmVzdWx0c19jbGVhciIsImdldF9zZWFyY2hfdGV4dCIsInJlcGxhY2UiLCJnZXRfc2VhcmNoX3JlZ2V4Iiwic2VhcmNoX3N0cmluZ19tYXRjaCIsImluZGV4Iiwic2xpY2UiLCJ1cGRhdGVfcmVzdWx0c19jb250ZW50Iiwibm9fcmVzdWx0cyIsInNraXBfaGlnaGxpZ2h0Iiwid2lubm93X3Jlc3VsdHNfc2V0X2hpZ2hsaWdodCIsImVzY2FwZWRfc2VhcmNoX3N0cmluZyIsInJlZ2V4X2ZsYWciLCJyZWdleF9zdHJpbmciLCJSZWdFeHAiLCJzZWFyY2hfc3RyaW5nIiwibWF0Y2giLCJleGVjIiwiY2hvaWNlc19jb3VudCIsInNlbGVjdGVkX29wdGlvbl9jb3VudCIsImNob2ljZXNfY2xpY2siLCJwcmV2ZW50RGVmYXVsdCIsImlzX2Rpc2FibGVkIiwia2V5ZG93bl9jaGVja2VyIiwic3Ryb2tlIiwid2hpY2giLCJrZXlDb2RlIiwic2VhcmNoX2ZpZWxkX3NjYWxlIiwicGVuZGluZ19iYWNrc3Ryb2tlIiwiY2xlYXJfYmFja3N0cm9rZSIsImJhY2tzdHJva2VfbGVuZ3RoIiwiZ2V0X3NlYXJjaF9maWVsZF92YWx1ZSIsInJlc3VsdF9zZWxlY3QiLCJrZXl1cF9hcnJvdyIsImtleWRvd25fYXJyb3ciLCJrZXl1cF9jaGVja2VyIiwia2V5ZG93bl9iYWNrc3Ryb2tlIiwiY2xpcGJvYXJkX2V2ZW50X2NoZWNrZXIiLCJjb250YWluZXJfd2lkdGgiLCJ3aWR0aCIsIm9mZnNldFdpZHRoIiwic2VhcmNoX3Jlc3VsdHNfdG91Y2hzdGFydCIsInRvdWNoX3N0YXJ0ZWQiLCJzZWFyY2hfcmVzdWx0c19tb3VzZW92ZXIiLCJzZWFyY2hfcmVzdWx0c190b3VjaG1vdmUiLCJzZWFyY2hfcmVzdWx0c19tb3VzZW91dCIsInNlYXJjaF9yZXN1bHRzX3RvdWNoZW5kIiwic2VhcmNoX3Jlc3VsdHNfbW91c2V1cCIsImVsZW1lbnQiLCJ0bXAiLCJhcHBlbmRDaGlsZCIsImdldF9zaW5nbGVfaHRtbCIsImdldF9tdWx0aV9odG1sIiwiZ2V0X25vX3Jlc3VsdHNfaHRtbCIsInRlcm1zIiwid2luZG93IiwibmF2aWdhdG9yIiwiYXBwTmFtZSIsImRvY3VtZW50TW9kZSIsInVzZXJBZ2VudCIsImpRdWVyeSIsImV4dGVuZCIsImNob3NlbiIsImVhY2giLCJpbnB1dF9maWVsZCIsIiR0aGlzIiwiZGVzdHJveSIsInBhcmVudCIsImtleSIsImNhbGwiLCJjdG9yIiwiZm9ybV9maWVsZF9qcSIsImN1cnJlbnRfc2VsZWN0ZWRJbmRleCIsInNlbGVjdGVkSW5kZXgiLCJjb250YWluZXJfY2xhc3NlcyIsImNvbnRhaW5lcl9wcm9wcyIsImNsYXNzIiwiaWQiLCJjb250YWluZXIiLCJoaWRlIiwiYWZ0ZXIiLCJkcm9wZG93biIsImZpbmQiLCJzZWFyY2hfZmllbGQiLCJzZWFyY2hfcmVzdWx0cyIsInNlYXJjaF9ub19yZXN1bHRzIiwic2VhcmNoX2Nob2ljZXMiLCJzZWFyY2hfY29udGFpbmVyIiwic2VsZWN0ZWRfaXRlbSIsInNldF90YWJfaW5kZXgiLCJzZXRfbGFiZWxfYmVoYXZpb3IiLCJ0cmlnZ2VyIiwib24iLCJjb250YWluZXJfbW91c2V1cCIsInNlYXJjaF9yZXN1bHRzX21vdXNld2hlZWwiLCJjbG9zZV9maWVsZCIsIm93bmVyRG9jdW1lbnQiLCJvZmYiLCJmb3JtX2ZpZWxkX2xhYmVsIiwidGFiSW5kZXgiLCJyZW1vdmUiLCJyZW1vdmVEYXRhIiwic2hvdyIsInNlYXJjaF9maWVsZF9kaXNhYmxlZCIsInBhcmVudHMiLCJpcyIsInRvZ2dsZUNsYXNzIiwidHlwZSIsInRhcmdldCIsImhhc0NsYXNzIiwidmFsIiwicmVzdWx0c19yZXNldCIsImRlbHRhIiwib3JpZ2luYWxFdmVudCIsImRlbHRhWSIsIndoZWVsRGVsdGEiLCJkZXRhaWwiLCJzY3JvbGxUb3AiLCJyZW1vdmVDbGFzcyIsInNob3dfc2VhcmNoX2ZpZWxkX2RlZmF1bHQiLCJibHVyIiwiYWRkQ2xhc3MiLCJmb2N1cyIsImFjdGl2ZV9jb250YWluZXIiLCJjbG9zZXN0IiwicGFyc2luZyIsInJlYWRPbmx5IiwicmVzdWx0X2RvX2hpZ2hsaWdodCIsImVsIiwiaGlnaF9ib3R0b20iLCJoaWdoX3RvcCIsIm1heEhlaWdodCIsInZpc2libGVfdG9wIiwicmVzdWx0X2hpZ2hsaWdodCIsInBhcnNlSW50IiwiY3NzIiwicG9zaXRpb24iLCJ0b3AiLCJvdXRlckhlaWdodCIsInRpIiwiY2hvaWNlIiwiY2xvc2VfbGluayIsImRhdGEtb3B0aW9uLWFycmF5LWluZGV4IiwiY2hvaWNlX2Rlc3Ryb3lfbGlua19jbGljayIsImFwcGVuZCIsImJlZm9yZSIsInN0b3BQcm9wYWdhdGlvbiIsImNob2ljZV9kZXN0cm95IiwibGluayIsInJlc3VsdF9kZXNlbGVjdCIsInRyaWdnZXJfZm9ybV9maWVsZF9jaGFuZ2UiLCJoaWdoIiwibWV0YUtleSIsImN0cmxLZXkiLCJzaW5nbGVfZGVzZWxlY3RfY29udHJvbF9idWlsZCIsInBvcyIsInJlc3VsdF9kYXRhIiwiZGVzZWxlY3RlZCIsInRyaW0iLCJkb19oaWdoIiwic2VsZWN0ZWRfcmVzdWx0cyIsIm5vX3Jlc3VsdHNfaHRtbCIsIm5leHRfc2liIiwibmV4dEFsbCIsInByZXZfc2licyIsInByZXZBbGwiLCJuZXh0X2F2YWlsYWJsZV9kZXN0cm95Iiwic2libGluZ3MiLCJsYXN0IiwiZGl2Iiwic3R5bGVfYmxvY2siLCJzdHlsZXMiLCJsZWZ0IiwiZGlzcGxheSIsIndoaXRlU3BhY2UiLCJNYXRoIiwibWluIiwib3V0ZXJXaWR0aCIsImV4dHJhIiwiZ2xvYmFsIiwiZmFjdG9yeSIsImV4cG9ydHMiLCJtb2R1bGUiLCJkZWZpbmUiLCJhbWQiLCJzZWxmIiwiSGVhZHJvb20iLCJpc0Jyb3dzZXIiLCJpc1dpbmRvdyIsIm9iaiIsIm5vZGVUeXBlIiwiaXNEb2
2N1bWVudCIsImNyZWF0ZVNjcm9sbGVyIiwid2luIiwiZG9jIiwiYm9keSIsImRvY3VtZW50RWxlbWVudCIsInNjcm9sbEhlaWdodCIsIm1heCIsIm9mZnNldEhlaWdodCIsImNsaWVudEhlaWdodCIsImhlaWdodCIsImlubmVySGVpZ2h0Iiwic2Nyb2xsWSIsInVuZGVmaW5lZCIsInBhZ2VZT2Zmc2V0IiwicGFyZW50Tm9kZSIsIndpbmRvd1Njcm9sbGVyIiwiZWxlbWVudFNjcm9sbGVyIiwidHJhY2tTY3JvbGwiLCJjYWxsYmFjayIsInJhZklkIiwiaXNQYXNzaXZlU3VwcG9ydGVkIiwic3VwcG9ydGVkIiwicGFzc2l2ZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZXJyIiwicGFzc2l2ZUV2ZW50c1N1cHBvcnRlZCIsInNjcm9sbGVkIiwic2Nyb2xsZXIiLCJsYXN0U2Nyb2xsWSIsImRldGFpbHMiLCJ1cGRhdGUiLCJyb3VuZCIsImRpcmVjdGlvbiIsImRpc3RhbmNlIiwiYWJzIiwiaXNPdXRPZkJvdW5kcyIsIm9mZnNldCIsImJvdHRvbSIsInRvbGVyYW5jZUV4Y2VlZGVkIiwidG9sZXJhbmNlIiwiaGFuZGxlU2Nyb2xsIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiZXZlbnRPcHRpb25zIiwiY2FwdHVyZSIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwiZWxlbSIsIk9iamVjdCIsImFzc2lnbiIsInQiLCJkb3duIiwidXAiLCJub3JtYWxpemVUb2xlcmFuY2UiLCJpbml0aWFsaXNlZCIsImZyb3plbiIsImluaXQiLCJjdXRzVGhlTXVzdGFyZCIsInNjcm9sbFRyYWNrZXIiLCJrZXlzIiwiZm9yRWFjaCIsInVucGluIiwib25VbnBpbiIsInBpbiIsIm9uUGluIiwiZnJlZXplIiwidW5mcmVlemUiLCJvblRvcCIsIm5vdFRvcCIsIm9uTm90VG9wIiwib25Cb3R0b20iLCJub3RCb3R0b20iLCJvbk5vdEJvdHRvbSIsInNob3VsZFVucGluIiwic2hvdWxkUGluIiwiY2xhc3NMaXN0IiwiYWRkIiwiY29udGFpbnMiLCJwaW5uZWQiLCJ1bnBpbm5lZCIsImluaXRpYWwiLCJNdXRhdGlvbk9ic2VydmVyIiwiVXRpbCIsIldlYWtNYXAiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0Q29tcHV0ZWRTdHlsZVJYIiwiaW5kZXhPZiIsImwiLCJ2YWx1ZXMiLCJjb25zb2xlIiwid2FybiIsIldPVyIsInNjcm9sbENhbGxiYWNrIiwic2Nyb2xsSGFuZGxlciIsInJlc2V0QW5pbWF0aW9uIiwic3RhcnQiLCJjb25maWciLCJ1dGlsIiwiZGVmYXVsdHMiLCJzY3JvbGxDb250YWluZXIiLCJxdWVyeVNlbGVjdG9yIiwiYW5pbWF0aW9uTmFtZUNhY2hlIiwid293RXZlbnQiLCJjcmVhdGVFdmVudCIsImJveENsYXNzIiwiY3VzdG9tIiwiaXNNb2JpbGUiLCJhZ2VudCIsImV2ZW50IiwiYnViYmxlIiwiY2FuY2VsIiwiY3VzdG9tRXZlbnQiLCJpbml0Q3VzdG9tRXZlbnQiLCJjcmVhdGVFdmVudE9iamVjdCIsImV2ZW50VHlwZSIsImV2ZW50TmFtZSIsImVtaXRFdmVudCIsImRpc3BhdGNoRXZlbnQiLCJhZGRFdmVudCIsImF0dGFjaEV2ZW50IiwicmVtb3ZlRXZlbnQiLCJkZXRhY2hFdmVudCIsIk1veldlYWtNYXAiLCJnZXQiLCJqIiwic2V0IiwiV2Via2l0TXV0YXRpb25PYnNlcnZlciIsIk1vek11dGF0aW9uT2JzZXJ2ZXIiLCJub3RTdXBwb3J0ZWQiLCJvYnNlcnZlIiwicHNldWRvIiwiZ2V0UHJvcGVydHlWYWx1ZSIsInByb3AiLCJfIiwiX2NoYXIiLCJjdXJyZW50U3R5bGUiLCJhbmltYXRlQ2xhc3MiLCJtb2JpbGUiLCJsaXZlIiwicmVhZHlTdGF0ZSIsImZpbmlzaGVkIiwiYm94Iiwic3RvcHBlZCIsImJveGVzIiwicXVlcnlTZWxlY3RvckFsbCIsImFsbCIsInJlc2V0U3R5bGUiLCJhcHBseVN0eWxlIiwiaW50ZXJ2YWwiLCJzZXRJbnRlcnZhbCIsInJlY29yZHMiLCJrIiwibGVuMSIsIm5vZGUiLCJyZWNvcmQiLCJsZW4yIiwicmVmMSIsImFkZGVkTm9kZXMiLCJkb1N5bmMiLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwic3RvcCIsImNsZWFySW50ZXJ2YWwiLCJzeW5jIiwiaGlkZGVuIiwiZGVsYXkiLCJkdXJhdGlvbiIsIml0ZXJhdGlvbiIsImFuaW1hdGUiLCJjdXN0b21TdHlsZSIsInZpc2liaWxpdHkiLCJ0b0xvd2VyQ2FzZSIsInNyY0VsZW1lbnQiLCJjYWNoZUFuaW1hdGlvbk5hbWUiLCJ2ZW5kb3JTZXQiLCJhbmltYXRpb25EdXJhdGlvbiIsImFuaW1hdGlvbkRlbGF5IiwiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCJhbmltYXRpb25OYW1lIiwiY2FjaGVkQW5pbWF0aW9uTmFtZSIsInZlbmRvcnMiLCJwcm9wZXJ0aWVzIiwibmFtZSIsInZlbmRvciIsImNoYXJBdCIsInN1YnN0ciIsInZlbmRvckNTUyIsInByb3BlcnR5IiwiZ2V0UHJvcGVydHlDU1NWYWx1ZSIsImVycm9yIiwiaXNWaXNpYmxlIiwib2Zmc2V0VG9wIiwib2Zmc2V0UGFyZW50Iiwidmlld0JvdHRvbSIsInZpZXdUb3AiLCJfdXRpbCIsInJlcXVpcmUiLCJpbnN0YW5jZVVpZCIsIlNsaWNrIiwic2V0dGluZ3MiLCJkYXRhU2V0dGluZ3MiLCJhY2Nlc3NpYmlsaXR5IiwiYWRhcHRpdmVIZWlnaHQiLCJhcHBlbmRBcnJvd3MiLCJhcHBlbmREb3RzIiwiYXJyb3dzIiwiYXNOYXZGb3IiLCJwcmV2QXJyb3ciLCJuZXh0QXJyb3ciLCJhdXRvcGxheSIsImF1dG9wbGF5U3BlZWQiLCJjZW50ZXJNb2RlIiwiY2VudGVyUGFkZGluZyIsImNzc0Vhc2UiLCJjdXN0b21QYWdpbmciLCJzbGlkZXIiLCJkb3RzIiwiZG90c0NsYXNzIiwiZHJhZ2dhYmxlIiwiZWFzaW5nIiwiZWRnZUZyaWN0aW9uIiwiZmFkZSIsImZvY3VzT25TZWxlY3QiLCJmb2N1c09uQ2hhbmdlIiwiaW5maW5pdGUiLCJpbml0aWFsU2xpZGUiLCJsYXp5TG9hZCIsIm1vYmlsZUZpcnN0IiwicGF1c2VPbkhvdmVyIiwicGF1c2VPbkZvY3VzIiwicGF1c2VPbkRvdHNIb3ZlciIsInJlc3BvbmRUbyIsInJlc3BvbnNpdmUiLCJyb3dzIiwic2xpZGUiLCJzbGlkZXNQZXJSb3ciLCJzbGlkZXNUb1Nob3ciLCJzbGlkZXNUb1Njcm9sbCIsInNwZWVkIiwic3dpcGUiLCJzd2lwZVRvU2xpZGUiLCJ0b3VjaE1vdmUiLCJ0b3VjaFRocmVzaG9sZCIsInVzZUNTUyIsInVzZVRyYW5zZm9ybSIsInZhcmlhYmxlV2lkdGgiLCJ2ZXJ0aWNhbCIsInZlcnRpY2FsU3dpcGluZyIsIndhaXRGb3JBbmltYXRlIiwiekluZGV4IiwiaW5pdGlhbHMiLCJhbmltYXRpbmciLCJkcmFnZ2luZyIsImF1dG9QbGF5VGltZXIiLCJjdXJyZW50RGlyZWN0aW9uIiwiY3VycmVudExlZnQiLCJ
2jdXJyZW50U2xpZGUiLCIkZG90cyIsImxpc3RXaWR0aCIsImxpc3RIZWlnaHQiLCJsb2FkSW5kZXgiLCIkbmV4dEFycm93IiwiJHByZXZBcnJvdyIsInNjcm9sbGluZyIsInNsaWRlQ291bnQiLCJzbGlkZVdpZHRoIiwiJHNsaWRlVHJhY2siLCIkc2xpZGVzIiwic2xpZGluZyIsInNsaWRlT2Zmc2V0Iiwic3dpcGVMZWZ0Iiwic3dpcGluZyIsIiRsaXN0IiwidG91Y2hPYmplY3QiLCJ0cmFuc2Zvcm1zRW5hYmxlZCIsInVuc2xpY2tlZCIsImFjdGl2ZUJyZWFrcG9pbnQiLCJhbmltVHlwZSIsImFuaW1Qcm9wIiwiYnJlYWtwb2ludHMiLCJicmVha3BvaW50U2V0dGluZ3MiLCJjc3NUcmFuc2l0aW9ucyIsImZvY3Vzc2VkIiwiaW50ZXJydXB0ZWQiLCJwYXVzZWQiLCJwb3NpdGlvblByb3AiLCJyb3dDb3VudCIsInNob3VsZENsaWNrIiwiJHNsaWRlciIsIiRzbGlkZXNDYWNoZSIsInRyYW5zZm9ybVR5cGUiLCJ0cmFuc2l0aW9uVHlwZSIsInZpc2liaWxpdHlDaGFuZ2UiLCJ3aW5kb3dXaWR0aCIsIndpbmRvd1RpbWVyIiwib3JpZ2luYWxTZXR0aW5ncyIsIm1vekhpZGRlbiIsIndlYmtpdEhpZGRlbiIsImF1dG9QbGF5IiwicHJveHkiLCJhdXRvUGxheUNsZWFyIiwiYXV0b1BsYXlJdGVyYXRvciIsImNoYW5nZVNsaWRlIiwiY2xpY2tIYW5kbGVyIiwic2VsZWN0SGFuZGxlciIsInNldFBvc2l0aW9uIiwic3dpcGVIYW5kbGVyIiwiZHJhZ0hhbmRsZXIiLCJrZXlIYW5kbGVyIiwiaHRtbEV4cHIiLCJyZWdpc3RlckJyZWFrcG9pbnRzIiwiYWN0aXZhdGVBREEiLCJhdHRyIiwiYXJpYS1oaWRkZW4iLCJ0YWJpbmRleCIsImFkZFNsaWRlIiwic2xpY2tBZGQiLCJtYXJrdXAiLCJhZGRCZWZvcmUiLCJ1bmxvYWQiLCJhcHBlbmRUbyIsImluc2VydEJlZm9yZSIsImVxIiwiaW5zZXJ0QWZ0ZXIiLCJwcmVwZW5kVG8iLCJkZXRhY2giLCJyZWluaXQiLCJhbmltYXRlSGVpZ2h0IiwidGFyZ2V0SGVpZ2h0IiwiYW5pbWF0ZVNsaWRlIiwidGFyZ2V0TGVmdCIsImFuaW1Qcm9wcyIsImFuaW1TdGFydCIsInN0ZXAiLCJub3ciLCJjZWlsIiwiY29tcGxldGUiLCJhcHBseVRyYW5zaXRpb24iLCJkaXNhYmxlVHJhbnNpdGlvbiIsImdldE5hdlRhcmdldCIsIm5vdCIsInNsaWNrIiwic2xpZGVIYW5kbGVyIiwidHJhbnNpdGlvbiIsInNsaWRlVG8iLCJidWlsZEFycm93cyIsInJlbW92ZUF0dHIiLCJhcmlhLWRpc2FibGVkIiwiYnVpbGREb3RzIiwiZG90IiwiZ2V0RG90Q291bnQiLCJidWlsZE91dCIsIndyYXBBbGwiLCJ3cmFwIiwic2V0dXBJbmZpbml0ZSIsInVwZGF0ZURvdHMiLCJzZXRTbGlkZUNsYXNzZXMiLCJidWlsZFJvd3MiLCJhIiwiYiIsImMiLCJuZXdTbGlkZXMiLCJudW1PZlNsaWRlcyIsIm9yaWdpbmFsU2xpZGVzIiwic2xpZGVzUGVyU2VjdGlvbiIsImNyZWF0ZURvY3VtZW50RnJhZ21lbnQiLCJyb3ciLCJjaGVja1Jlc3BvbnNpdmUiLCJmb3JjZVVwZGF0ZSIsImJyZWFrcG9pbnQiLCJ0YXJnZXRCcmVha3BvaW50IiwicmVzcG9uZFRvV2lkdGgiLCJ0cmlnZ2VyQnJlYWtwb2ludCIsInNsaWRlcldpZHRoIiwiaW5uZXJXaWR0aCIsInVuc2xpY2siLCJyZWZyZXNoIiwiZG9udEFuaW1hdGUiLCJpbmRleE9mZnNldCIsIiR0YXJnZXQiLCJjdXJyZW50VGFyZ2V0IiwibWVzc2FnZSIsImNoZWNrTmF2aWdhYmxlIiwibmF2aWdhYmxlcyIsInByZXZOYXZpZ2FibGUiLCJnZXROYXZpZ2FibGVJbmRleGVzIiwibiIsImNsZWFuVXBFdmVudHMiLCJpbnRlcnJ1cHQiLCJjbGVhblVwU2xpZGVFdmVudHMiLCJvcmllbnRhdGlvbkNoYW5nZSIsInJlc2l6ZSIsImNsZWFuVXBSb3dzIiwic3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uIiwiZmFkZVNsaWRlIiwic2xpZGVJbmRleCIsIm9wYWNpdHkiLCJmYWRlU2xpZGVPdXQiLCJmaWx0ZXJTbGlkZXMiLCJzbGlja0ZpbHRlciIsImZpbHRlciIsImZvY3VzSGFuZGxlciIsIiRzZiIsImdldEN1cnJlbnQiLCJzbGlja0N1cnJlbnRTbGlkZSIsImJyZWFrUG9pbnQiLCJjb3VudGVyIiwicGFnZXJRdHkiLCJnZXRMZWZ0IiwidmVydGljYWxIZWlnaHQiLCJ0YXJnZXRTbGlkZSIsImNvZWYiLCJ2ZXJ0aWNhbE9mZnNldCIsImZsb29yIiwib2Zmc2V0TGVmdCIsImdldE9wdGlvbiIsInNsaWNrR2V0T3B0aW9uIiwiaW5kZXhlcyIsImdldFNsaWNrIiwiZ2V0U2xpZGVDb3VudCIsInN3aXBlZFNsaWRlIiwiY2VudGVyT2Zmc2V0IiwiZ29UbyIsInNsaWNrR29UbyIsImNyZWF0aW9uIiwic2V0UHJvcHMiLCJzdGFydExvYWQiLCJsb2FkU2xpZGVyIiwiaW5pdGlhbGl6ZUV2ZW50cyIsInVwZGF0ZUFycm93cyIsImluaXRBREEiLCJudW1Eb3RHcm91cHMiLCJ0YWJDb250cm9sSW5kZXhlcyIsInNsaWRlQ29udHJvbEluZGV4Iiwicm9sZSIsImFyaWFCdXR0b25Db250cm9sIiwiYXJpYS1kZXNjcmliZWRieSIsIm1hcHBlZFNsaWRlSW5kZXgiLCJhcmlhLWNvbnRyb2xzIiwiYXJpYS1sYWJlbCIsImFyaWEtc2VsZWN0ZWQiLCJlbmQiLCJpbml0QXJyb3dFdmVudHMiLCJpbml0RG90RXZlbnRzIiwiaW5pdFNsaWRlRXZlbnRzIiwiYWN0aW9uIiwiaW5pdFVJIiwidGFnTmFtZSIsImxvYWRSYW5nZSIsInJhbmdlU3RhcnQiLCJyYW5nZUVuZCIsImxvYWRJbWFnZXMiLCJpbWFnZXNTY29wZSIsImltYWdlIiwiaW1hZ2VTb3VyY2UiLCJpbWFnZVNyY1NldCIsImltYWdlU2l6ZXMiLCJpbWFnZVRvTG9hZCIsIm9ubG9hZCIsIm9uZXJyb3IiLCJzcmMiLCJwcmV2U2xpZGUiLCJuZXh0U2xpZGUiLCJwcm9ncmVzc2l2ZUxhenlMb2FkIiwibmV4dCIsInNsaWNrTmV4dCIsInBhdXNlIiwic2xpY2tQYXVzZSIsInBsYXkiLCJzbGlja1BsYXkiLCJwb3N0U2xpZGUiLCJwcmV2Iiwic2xpY2tQcmV2IiwidHJ5Q291bnQiLCIkaW1nc1RvTG9hZCIsImluaXRpYWxpemluZyIsImxhc3RWaXNpYmxlSW5kZXgiLCJjdXJyZW50QnJlYWtwb2ludCIsInJlc3BvbnNpdmVTZXR0aW5ncyIsInNwbGljZSIsInNvcnQiLCJjbGVhclRpbWVvdXQiLCJ3aW5kb3dEZWxheSIsInJlbW92ZVNsaWRlIiwic2xpY2tSZW1vdmUiLCJyZW1vdmVCZWZvcmUiLCJyZW1vdmVBbGwiLCJzZXRDU1MiLCJ4IiwieSIsInBvc2l0aW9uUHJvcHMiLCJzZXREaW1lbnNpb25zIiwicGFkZGluZyIsInNldEZhZGUiLCJyaWdodCIsInNldEhlaWdodCIsInNldE9wdGlvbiIsInNsaWNrU2V0T3B0aW9uIiwib3B0IiwiYm9keVN0eWxlIiwiV2Via2l0VHJhbnNpdGlvbiIsIk1velRyYW5zaXRpb24iLCJtc1RyYW5zaXRpb24iLCJPVHJhbnNmb3JtIiwicGVyc3BlY3RpdmVQcm9wZXJ0eSIsIndlYmtpdFBlcnNwZWN0aXZlIiwiTW96VHJhbnNmb3JtIiwiTW96UGVyc3BlY3RpdmUiLCJ3ZWJraXRUcmFuc2Zvcm0iLCJtc1RyYW5zZm9ybSIsInRyYW5zZm9ybSIsImFsbFNsaWRlcyIsInJlbWFpbmRlciIsImV2ZW5Db2VmIiwiaW5maW5pdGVDb3VudCIsImNsb25lIiwidG9nZ2xlIiwidGFyZ2V0RWxlbWVudCIsImFuaW1TbGlkZSIsIm9sZFNsaWRlIiwic2xpZGVMZWZ0IiwibmF2VGFyZ2V0Iiwic3dpcGVEaXJlY3Rpb24iLCJ4RGlzdCIsInlEaXN0IiwiciIsInN3aXBlQW5nbGUiLCJzdGFydFgiLCJjdXJYIiwic3RhcnRZIiwiY3VyWSIsImF0YW4yIiwiUEkiLCJzd2lwZUVuZCIsInN3aXBlTGVuZ3RoIiwiZWRnZUhpdCIsIm1pblN3aXBlIiwiZmluZ2VyQ291bnQiLCJ0b3VjaGVzIiwic3dpcGVTdGFydCIsInN3aXBlTW92ZSIsIm
2N1ckxlZnQiLCJwb3NpdGlvbk9mZnNldCIsInZlcnRpY2FsU3dpcGVMZW5ndGgiLCJwYWdlWCIsImNsaWVudFgiLCJwYWdlWSIsImNsaWVudFkiLCJzcXJ0IiwicG93IiwidW5maWx0ZXJTbGlkZXMiLCJzbGlja1VuZmlsdGVyIiwiZnJvbUJyZWFrcG9pbnQiLCJyZXQiLCJhcmdzIiwiQXJyYXkiLCJrZXlDb3VudGVyIiwiYWxsV2F5cG9pbnRzIiwiV2F5cG9pbnQiLCJFcnJvciIsImhhbmRsZXIiLCJBZGFwdGVyIiwiYWRhcHRlciIsImF4aXMiLCJob3Jpem9udGFsIiwiZW5hYmxlZCIsInRyaWdnZXJQb2ludCIsIkdyb3VwIiwiZmluZE9yQ3JlYXRlIiwiY29udGV4dCIsIkNvbnRleHQiLCJmaW5kT3JDcmVhdGVCeUVsZW1lbnQiLCJvZmZzZXRBbGlhc2VzIiwicXVldWVUcmlnZ2VyIiwiZGlzYWJsZSIsImVuYWJsZSIsInByZXZpb3VzIiwiaW52b2tlQWxsIiwibWV0aG9kIiwiYWxsV2F5cG9pbnRzQXJyYXkiLCJ3YXlwb2ludEtleSIsImRlc3Ryb3lBbGwiLCJkaXNhYmxlQWxsIiwiZW5hYmxlQWxsIiwicmVmcmVzaEFsbCIsInZpZXdwb3J0SGVpZ2h0Iiwidmlld3BvcnRXaWR0aCIsImNsaWVudFdpZHRoIiwiYWRhcHRlcnMiLCJjb250aW51b3VzIiwiYm90dG9tLWluLXZpZXciLCJyaWdodC1pbi12aWV3IiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lU2hpbSIsImNvbnRleHRzIiwib2xkV2luZG93TG9hZCIsImRpZFNjcm9sbCIsImRpZFJlc2l6ZSIsIm9sZFNjcm9sbCIsInNjcm9sbExlZnQiLCJ3YXlwb2ludHMiLCJ3YXlwb2ludENvbnRleHRLZXkiLCJ3aW5kb3dDb250ZXh0IiwiY3JlYXRlVGhyb3R0bGVkU2Nyb2xsSGFuZGxlciIsImNyZWF0ZVRocm90dGxlZFJlc2l6ZUhhbmRsZXIiLCJ3YXlwb2ludCIsImNoZWNrRW1wdHkiLCJob3Jpem9udGFsRW1wdHkiLCJpc0VtcHR5T2JqZWN0IiwidmVydGljYWxFbXB0eSIsInJlc2l6ZUhhbmRsZXIiLCJoYW5kbGVSZXNpemUiLCJpc1RvdWNoIiwidHJpZ2dlcmVkR3JvdXBzIiwiYXhlcyIsIm5ld1Njcm9sbCIsImZvcndhcmQiLCJiYWNrd2FyZCIsImF4aXNLZXkiLCJ3YXNCZWZvcmVUcmlnZ2VyUG9pbnQiLCJub3dBZnRlclRyaWdnZXJQb2ludCIsImdyb3VwS2V5IiwiZmx1c2hUcmlnZ2VycyIsImNvbnRleHRPZmZzZXQiLCJjb250ZXh0U2Nyb2xsIiwiY29udGV4dERpbWVuc2lvbiIsIm9mZnNldFByb3AiLCJjb250ZXh0TW9kaWZpZXIiLCJ3YXNCZWZvcmVTY3JvbGwiLCJub3dBZnRlclNjcm9sbCIsInRyaWdnZXJlZEZvcndhcmQiLCJhZGp1c3RtZW50Iiwib2xkVHJpZ2dlclBvaW50IiwiZWxlbWVudE9mZnNldCIsImZyZXNoV2F5cG9pbnQiLCJwYXJzZUZsb2F0IiwiZmluZEJ5RWxlbWVudCIsImNvbnRleHRJZCIsIm1velJlcXVlc3RBbmltYXRpb25GcmFtZSIsIndlYmtpdFJlcXVlc3RBbmltYXRpb25GcmFtZSIsImJ5VHJpZ2dlclBvaW50IiwiYnlSZXZlcnNlVHJpZ2dlclBvaW50IiwiZ3JvdXBzIiwiY2xlYXJUcmlnZ2VyUXVldWVzIiwidHJpZ2dlclF1ZXVlcyIsInJldmVyc2UiLCJpbkFycmF5IiwiZ2V0V2luZG93IiwiZGVmYXVsdFZpZXciLCJOb0ZyYW1ld29ya0FkYXB0ZXIiLCJoYW5kbGVycyIsInJlbW92ZUxpc3RlbmVycyIsImxpc3RlbmVycyIsImxpc3RlbmVyIiwiZXZlbnRQYXJ0cyIsInNwbGl0IiwibmFtZXNwYWNlIiwibnMiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiY2xpZW50VG9wIiwicGFnZVhPZmZzZXQiLCJjbGllbnRMZWZ0IiwibnNIYW5kbGVycyIsImluY2x1ZGVNYXJnaW4iLCJjb21wdXRlZFN0eWxlIiwibWFyZ2luVG9wIiwibWFyZ2luQm90dG9tIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwibWVyZ2UiLCJhcnJheSIsIm5vb3AiLCJJbnZpZXciLCJjcmVhdGVXYXlwb2ludHMiLCJjb25maWdzIiwiY3JlYXRlV2F5cG9pbnQiLCJlbnRlciIsImVudGVyZWQiLCJleGl0IiwiZXhpdGVkIl0sIm1hcHBpbmdzIjoiQ0FBQSxXQUNBLElBQUFBLEVBQUFDLEVBQUFDLEVBQUFDLEVBR0FDLEVBQUEsR0FBQUMsZUFHQSxTQUFBRixJQUNBRyxLQUFBQyxjQUFBLEVBQ0FELEtBQUFFLE9BQUEsR0ErRUEsU0FBQVAsRUFBQVEsRUFBQUMsR0FDQUosS0FBQUcsV0FBQUEsRUFDQUgsS0FBQUssUUFBQSxNQUFBRCxFQUFBQSxFQUFBLEdBQ0FKLEtBQUFNLG9CQXpGQSxTQUFBQyxFQUFBQyxHQUFBLE9BQUEsV0FBQSxPQUFBRCxFQUFBRSxNQUFBRCxFQUFBRSxZQXlGQUMsQ0FBQVgsS0FBQU0sb0JBQUFOLE1BQ0FMLEVBQUFpQix5QkFHQVosS0FBQWEsWUFBQWIsS0FBQUcsV0FBQVcsU0FDQWQsS0FBQWUsbUJBQ0FmLEtBQUFnQixxQkFDQWhCLEtBQUFpQixRQUNBakIsS0FBQWtCLGNBQ0FsQixLQUFBbUIscUJBQ0FuQixLQUFBb0IsWUF1aEJBLFNBQUF4QixJQUNBLE9BQUFBLEVBQUF5QixVQUFBQyxZQUFBYixNQUFBVCxLQUFBVSxXQWpuQkFiLEVBQUEwQixVQUFBQyxTQUFBLFNBQUFDLEdBQ0EsTUFBQSxhQUFBQSxFQUFBQyxTQUFBQyxjQUNBM0IsS0FBQTRCLFVBQUFILEdBRUF6QixLQUFBNkIsV0FBQUosSUFJQTVCLEVBQUEwQixVQUFBSyxVQUFBLFNBQUFFLEdBQ0EsSUFBQUMsRUFBQUMsRUFBQUMsRUFBQUMsRUFBQUMsRUFBQUMsRUFhQSxJQVpBTCxFQUFBL0IsS0FBQUUsT0FBQW1DLE9BQ0FyQyxLQUFBRSxPQUFBb0MsS0FBQSxDQUNBQyxZQUFBUixFQUNBRCxPQUFBLEVBQ0FVLE1BQUFWLEVBQUFVLE1BQ0FDLE1BQUFYLEVBQUFXLE1BQUFYLEVBQUFXLFdBQUEsRUFDQUMsU0FBQ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Q0FDQSxJQUFBMFosRUFBQWtrQixFQUFBNS9CLEtBQUE2NEIsTUFBQTcyQixHQUNBaEMsS0FBQTYvQixlQUFBbmtCLEtBS0Fna0IsRUFBQW4rQixVQUFBcytCLGVBQUEsU0FBQW5rQixHQUNBLElBS0FBLEVBTEF0RyxFQUFBcFYsS0FDQUEsS0FBQWk3QixVQUFBMzRCLEtBQUEsSUFBQWsyQixFQUFBLENBQ0FXLFFBQUFuNUIsS0FBQUssUUFBQTg0QixRQUNBeHNCLFFBQUEzTSxLQUFBSyxRQUFBc00sUUFDQW9zQixRQUFBLzRCLEtBQUFLLFFBQUEwNEIsUUFDQUwsU0FBQWhkLEVBSUFBLEVBSEEsU0FBQTlELEdBQ0F4QyxFQUFBL1UsUUFBQXFiLEVBQUE5RCxJQUFBNUosS0FBQW9ILEVBQUF3QyxLQUdBSSxPQUFBMEQsRUFBQTFELE9BQ0E4Z0IsV0FBQTk0QixLQUFBSyxRQUFBeTRCLGVBS0E0RyxFQUFBbitCLFVBQUFzTSxRQUFBLFdBQ0EsSUFBQSxJQUFBN0wsRUFBQSxFQUFBbXZCLEVBQUFueEIsS0FBQWk3QixVQUFBNTRCLE9BQUFMLEVBQUFtdkIsRUFBQW52QixJQUNBaEMsS0FBQWk3QixVQUFBajVCLEdBQUE2TCxVQUVBN04sS0FBQWk3QixVQUFBLElBR0F5RSxFQUFBbitCLFVBQUFpNEIsUUFBQSxXQUNBLElBQUEsSUFBQXgzQixFQUFBLEVBQUFtdkIsRUFBQW54QixLQUFBaTdCLFVBQUE1NEIsT0FBQUwsRUFBQW12QixFQUFBbnZCLElBQ0FoQyxLQUFBaTdCLFVBQUFqNUIsR0FBQXczQixXQUlBa0csRUFBQW4rQixVQUFBazRCLE9BQUEsV0FDQSxJQUFBLElBQUF6M0IsRU
2FBQSxFQUFBbXZCLEVBQUFueEIsS0FBQWk3QixVQUFBNTRCLE9BQUFMLEVBQUFtdkIsRUFBQW52QixJQUNBaEMsS0FBQWk3QixVQUFBajVCLEdBQUF5M0IsVUFJQWlHLEVBQUE5akIsU0FBQSxDQUNBdWQsUUFBQWpzQixPQUNBNnJCLFNBQUEsRUFDQStHLE1BQUFMLEVBQ0FNLFFBQUFOLEVBQ0FPLEtBQUFQLEVBQ0FRLE9BQUFSLEdBR0FqSCxFQUFBa0gsT0FBQUEsRUEvR0EiLCJmaWxlIjoiY29tcG9uZW50cy5taW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKSB7XG4gIHZhciAkLCBBYnN0cmFjdENob3NlbiwgQ2hvc2VuLCBTZWxlY3RQYXJzZXIsXG4gICAgYmluZCA9IGZ1bmN0aW9uKGZuLCBtZSl7IHJldHVybiBmdW5jdGlvbigpeyByZXR1cm4gZm4uYXBwbHkobWUsIGFyZ3VtZW50cyk7IH07IH0sXG4gICAgZXh0ZW5kID0gZnVuY3Rpb24oY2hpbGQsIHBhcmVudCkgeyBmb3IgKHZhciBrZXkgaW4gcGFyZW50KSB7IGlmIChoYXNQcm9wLmNhbGwocGFyZW50LCBrZXkpKSBjaGlsZFtrZXldID0gcGFyZW50W2tleV07IH0gZnVuY3Rpb24gY3RvcigpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGNoaWxkOyB9IGN0b3IucHJvdG90eXBlID0gcGFyZW50LnByb3RvdHlwZTsgY2hpbGQucHJvdG90eXBlID0gbmV3IGN0b3IoKTsgY2hpbGQuX19zdXBlcl9fID0gcGFyZW50LnByb3RvdHlwZTsgcmV0dXJuIGNoaWxkOyB9LFxuICAgIGhhc1Byb3AgPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxuICBTZWxlY3RQYXJzZXIgPSAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gU2VsZWN0UGFyc2VyKCkge1xuICAgICAgdGhpcy5vcHRpb25zX2luZGV4ID0gMDtcbiAgICAgIHRoaXMucGFyc2VkID0gW107XG4gICAgfVxuXG4gICAgU2VsZWN0UGFyc2VyLnByb3RvdHlwZS5hZGRfbm9kZSA9IGZ1bmN0aW9uKGNoaWxkKSB7XG4gICAgICBpZiAoY2hpbGQubm9kZU5hbWUudG9VcHBlckNhc2UoKSA9PT0gXCJPUFRHUk9VUFwiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFkZF9ncm91cChjaGlsZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5hZGRfb3B0aW9uKGNoaWxkKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgU2VsZWN0UGFyc2VyLnByb3RvdHlwZS5hZGRfZ3JvdXAgPSBmdW5jdGlvbihncm91cCkge1xuICAgICAgdmFyIGdyb3VwX3Bvc2l0aW9uLCBpLCBsZW4sIG9wdGlvbiwgcmVmLCByZXN1bHRzMTtcbiAgICAgIGdyb3VwX3Bvc2l0aW9uID0gdGhpcy5wYXJzZWQubGVuZ3RoO1xuICAgICAgdGhpcy5wYXJzZWQucHVzaCh7XG4gICAgICAgIGFycmF5X2luZGV4OiBncm91cF9wb3NpdGlvbixcbiAgICAgICAgZ3JvdXA6IHRydWUsXG4gICAgICAgIGxhYmVsOiBncm91cC5sYWJlbCxcbiAgICAgICAgdGl0bGU6IGdyb3VwLnRpdGxlID8gZ3JvdXAudGl0bGUgOiB2b2lkIDAsXG4gICAgICAgIGNoaWxkcmVuOiAwLFxuICAgICAgICBkaXNhYmxlZDogZ3JvdXAuZGlzYWJsZWQsXG4gICAgICAgIGNsYXNzZXM6IGdyb3VwLmNsYXNzTmFtZVxuICAgICAgfSk7XG4gICAgICByZWYgPSBncm91cC5jaGlsZE5vZGVzO1xuICAgICAgcmVzdWx0czEgPSBbXTtcbiAgICAgIGZvciAoaSA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBvcHRpb24gPSByZWZbaV07XG4gICAgICAgIHJlc3VsdHMxLnB1c2godGhpcy5hZGRfb3B0aW9uKG9wdGlvbiwgZ3JvdXBfcG9zaXRpb24sIGdyb3VwLmRpc2FibGVkKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0czE7XG4gICAgfTtcblxuICAgIFNlbGVjdFBhcnNlci5wcm90b3R5cGUuYWRkX29wdGlvbiA9IGZ1bmN0aW9uKG9wdGlvbiwgZ3JvdXBfcG9zaXRpb24sIGdyb3VwX2Rpc2FibGVkKSB7XG4gICAgICBpZiAob3B0aW9uLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCkgPT09IFwiT1BUSU9OXCIpIHtcbiAgICAgICAgaWYgKG9wdGlvbi50ZXh0ICE9PSBcIlwiKSB7XG4gICAgICAgICAgaWYgKGdyb3VwX3Bvc2l0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICAgIHRoaXMucGFyc2VkW2dyb3VwX3Bvc2l0aW9uXS5jaGlsZHJlbiArPSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnBhcnNlZC5wdXNoKHtcbiAgICAgICAgICAgIGFycmF5X2luZGV4OiB0aGlzLnBhcnNlZC5sZW5ndGgsXG4gICAgICAgICAgICBvcHRpb25zX2luZGV4OiB0aGlzLm9wdGlvbnNfaW5kZXgsXG4gICAgICAgICAgICB2YWx1ZTogb3B0aW9uLnZhbHVlLFxuICAgICAgICAgICAgdGV4dDogb3B0aW9uLnRleHQsXG4gICAgICAgICAgICBodG1sOiBvcHRpb24uaW5uZXJIVE1MLFxuICAgICAgICAgICAgdGl0bGU6IG9wdGlvbi50aXRsZSA/IG9wdGlvbi50aXRsZSA6IHZvaWQgMCxcbiAgICAgICAgICAgIHNlbGVjdGVkOiBvcHRpb24uc2VsZWN0ZWQsXG4gICAgICAgICAgICBkaXNhYmxlZDogZ3JvdXBfZGlzYWJsZWQgPT09IHRydWUgPyBncm91cF9kaXNhYmxlZCA6IG9wdGlvbi5kaXNhYmxlZCxcbiAgICAgICAgICAgIGdyb3VwX2FycmF5X2luZGV4OiBncm91cF9wb3NpdGlvbixcbiAgICAgICAgICAgIGdyb3VwX2xhYmVsOiBncm91cF9wb3NpdGlvbiAhPSBudWxsID8gdGhpcy5wYXJzZWRbZ3JvdXBfcG9zaXRpb25dLmxhYmVsIDogbnVsbCxcbiAgICAgICAgICAgIGNsYXNzZXM6IG9wdGlvbi5jbGFzc05hbWUsXG4gICAgICAgICAgICBzdHlsZTogb3B0aW9uLnN0eWxlLmNzc1RleHRcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnBhcnNlZC5wdXNoKHtcbiAgICAgICAgICAgIGFycmF5X2luZGV4OiB0aGlzLnBhcnNlZC5sZW5ndGgsXG4gICAgICAgICAgICBvcHRpb25zX2luZGV4OiB0aGlzLm9wdGlvbnNfaW5kZXgsXG4gICAgICAgICAgICBlbXB0eTogdHJ1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnNfaW5kZXggKz0gMTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIFNlbGVjdFBhcnNlcjtcblxuICB9KSgpO1xuXG4gIFNlbGVjdFBhcnNlci5zZWxlY3RfdG9fYXJyYXkgPSBmdW5jdGlvbihzZWxlY3QpIHtcbiAgICB2YXIgY2hpbGQsIGksIGxlbiwgcGFyc2VyLCByZWY7XG4gICAgcGFyc2VyID0gbmV3IFNlbGVjdFBhcnNlcigpO1xuICAgIHJlZiA9IHNlbGVjdC5jaGlsZE5vZGVzO1xuICAgIGZvciAoaSA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2hpbGQgPSByZWZbaV07XG4gICAgICBwYXJzZXIuYWRkX25vZGUoY2hpbGQpO1xuICAgIH1cbiAgICByZXR1cm4gcGFyc2VyLnBhcnNlZDtcbiAgfTtcblxuICBBYnN0cmFjdENob3NlbiA9IChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBBYnN0cmFjdENob3Nlbihmb3JtX2ZpZWxkLCBvcHRpb25zMSkge1xuICAgICAgdGhpcy5mb3JtX2ZpZWxkID0gZm9ybV9maWVsZDtcbiAgICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnMxICE9IG51bGwgPyBvcHRpb25zMSA6IHt9O1xuICAgICAgdGhpcy5sYWJlbF9jbGlja19oYW5kbGVyID0gYmluZCh0aGlzLmxhYmVsX2NsaWNrX2hhbmRsZXIsIHR
2oaXMpO1xuICAgICAgaWYgKCFBYnN0cmFjdENob3Nlbi5icm93c2VyX2lzX3N1cHBvcnRlZCgpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuaXNfbXVsdGlwbGUgPSB0aGlzLmZvcm1fZmllbGQubXVsdGlwbGU7XG4gICAgICB0aGlzLnNldF9kZWZhdWx0X3RleHQoKTtcbiAgICAgIHRoaXMuc2V0X2RlZmF1bHRfdmFsdWVzKCk7XG4gICAgICB0aGlzLnNldHVwKCk7XG4gICAgICB0aGlzLnNldF91cF9odG1sKCk7XG4gICAgICB0aGlzLnJlZ2lzdGVyX29ic2VydmVycygpO1xuICAgICAgdGhpcy5vbl9yZWFkeSgpO1xuICAgIH1cblxuICAgIEFic3RyYWN0Q2hvc2VuLnByb3RvdHlwZS5zZXRfZGVmYXVsdF92YWx1ZXMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuY2xpY2tfdGVzdF9hY3Rpb24gPSAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGV2dCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy50ZXN0X2FjdGl2ZV9jbGljayhldnQpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcyk7XG4gICAgICB0aGlzLmFjdGl2YXRlX2FjdGlvbiA9IChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXZ0KSB7XG4gICAgICAgICAgcmV0dXJuIF90aGlzLmFjdGl2YXRlX2ZpZWxkKGV2dCk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKTtcbiAgICAgIHRoaXMuYWN0aXZlX2ZpZWxkID0gZmFsc2U7XG4gICAgICB0aGlzLm1vdXNlX29uX2NvbnRhaW5lciA9IGZhbHNlO1xuICAgICAgdGhpcy5yZXN1bHRzX3Nob3dpbmcgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVzdWx0X2hpZ2hsaWdodGVkID0gbnVsbDtcbiAgICAgIHRoaXMuaXNfcnRsID0gdGhpcy5vcHRpb25zLnJ0bCB8fCAvXFxiY2hvc2VuLXJ0bFxcYi8udGVzdCh0aGlzLmZvcm1fZmllbGQuY2xhc3NOYW1lKTtcbiAgICAgIHRoaXMuYWxsb3dfc2luZ2xlX2Rlc2VsZWN0ID0gKHRoaXMub3B0aW9ucy5hbGxvd19zaW5nbGVfZGVzZWxlY3QgIT0gbnVsbCkgJiYgKHRoaXMuZm9ybV9maWVsZC5vcHRpb25zWzBdICE9IG51bGwpICYmIHRoaXMuZm9ybV9maWVsZC5vcHRpb25zWzBdLnRleHQgPT09IFwiXCIgPyB0aGlzLm9wdGlvbnMuYWxsb3dfc2luZ2xlX2Rlc2VsZWN0IDogZmFsc2U7XG4gICAgICB0aGlzLmRpc2FibGVfc2VhcmNoX3RocmVzaG9sZCA9IHRoaXMub3B0aW9ucy5kaXNhYmxlX3NlYXJjaF90aHJlc2hvbGQgfHwgMDtcbiAgICAgIHRoaXMuZGlzYWJsZV9zZWFyY2ggPSB0aGlzLm9wdGlvbnMuZGlzYWJsZV9zZWFyY2ggfHwgZmFsc2U7XG4gICAgICB0aGlzLmVuYWJsZV9zcGxpdF93b3JkX3NlYXJjaCA9IHRoaXMub3B0aW9ucy5lbmFibGVfc3BsaXRfd29yZF9zZWFyY2ggIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5lbmFibGVfc3BsaXRfd29yZF9zZWFyY2ggOiB0cnVlO1xuICAgICAgdGhpcy5ncm91cF9zZWFyY2ggPSB0aGlzLm9wdGlvbnMuZ3JvdXBfc2VhcmNoICE9IG51bGwgPyB0aGlzLm9wdGlvbnMuZ3JvdXBfc2VhcmNoIDogdHJ1ZTtcbiAgICAgIHRoaXMuc2VhcmNoX2NvbnRhaW5zID0gdGhpcy5vcHRpb25zLnNlYXJjaF9jb250YWlucyB8fCBmYWxzZTtcbiAgICAgIHRoaXMuc2luZ2xlX2JhY2tzdHJva2VfZGVsZXRlID0gdGhpcy5vcHRpb25zLnNpbmdsZV9iYWNrc3Ryb2tlX2RlbGV0ZSAhPSBudWxsID8gdGhpcy5vcHRpb25zLnNpbmdsZV9iYWNrc3Ryb2tlX2RlbGV0ZSA6IHRydWU7XG4gICAgICB0aGlzLm1heF9zZWxlY3RlZF9vcHRpb25zID0gdGhpcy5vcHRpb25zLm1heF9zZWxlY3RlZF9vcHRpb25zIHx8IEluZmluaXR5O1xuICAgICAgdGhpcy5pbmhlcml0X3NlbGVjdF9jbGFzc2VzID0gdGhpcy5vcHRpb25zLmluaGVyaXRfc2VsZWN0X2NsYXNzZXMgfHwgZmFsc2U7XG4gICAgICB0aGlzLmRpc3BsYXlfc2VsZWN0ZWRfb3B0aW9ucyA9IHRoaXMub3B0aW9ucy5kaXNwbGF5X3NlbGVjdGVkX29wdGlvbnMgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5kaXNwbGF5X3NlbGVjdGVkX29wdGlvbnMgOiB0cnVlO1xuICAgICAgdGhpcy5kaXNwbGF5X2Rpc2FibGVkX29wdGlvbnMgPSB0aGlzLm9wdGlvbnMuZGlzcGxheV9kaXNhYmxlZF9vcHRpb25zICE9IG51bGwgPyB0aGlzLm9wdGlvbnMuZGlzcGxheV9kaXNhYmxlZF9vcHRpb25zIDogdHJ1ZTtcbiAgICAgIHRoaXMuaW5jbHVkZV9ncm91cF9sYWJlbF9pbl9zZWxlY3RlZCA9IHRoaXMub3B0aW9ucy5pbmNsdWRlX2dyb3VwX2xhYmVsX2luX3NlbGVjdGVkIHx8IGZhbHNlO1xuICAgICAgdGhpcy5tYXhfc2hvd25fcmVzdWx0cyA9IHRoaXMub3B0aW9ucy5tYXhfc2hvd25fcmVzdWx0cyB8fCBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG4gICAgICB0aGlzLmNhc2Vfc2Vuc2l0aXZlX3NlYXJjaCA9IHRoaXMub3B0aW9ucy5jYXNlX3NlbnNpdGl2ZV9zZWFyY2ggfHwgZmFsc2U7XG4gICAgICByZXR1cm4gdGhpcy5oaWRlX3Jlc3VsdHNfb25fc2VsZWN0ID0gdGhpcy5vcHRpb25zLmhpZGVfcmVzdWx0c19vbl9zZWxlY3QgIT0gbnVsbCA/IHRoaXMub3B0aW9ucy5oaWRlX3Jlc3VsdHNfb25fc2VsZWN0IDogdHJ1ZTtcbiAgICB9O1xuXG4gICAgQWJzdHJhY3RDaG9zZW4ucHJvdG90eXBlLnNldF9kZWZhdWx0X3RleHQgPSBmdW5jdGlvbigpIHtcbiAgICAgIGlmICh0aGlzLmZvcm1fZmllbGQuZ2V0QXR0cmlidXRlKFwiZGF0YS1wbGFjZWhvbGRlclwiKSkge1xuICAgICAgICB0aGlzLmRlZmF1bHRfdGV4dCA9IHRoaXMuZm9ybV9maWVsZC5nZXRBdHRyaWJ1dGUoXCJkYXRhLXBsYWNlaG9sZGVyXCIpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmlzX211bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuZGVmYXVsdF90ZXh0ID0gdGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyX3RleHRfbXVsdGlwbGUgfHwgdGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyX3RleHQgfHwgQWJzdHJhY3RDaG9zZW4uZGVmYXVsdF9tdWx0aXBsZV90ZXh0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0X3RleHQgPSB0aGlzLm9wdGlvbnMucGxhY2Vob2xkZXJfdGV4dF9zaW5nbGUgfHwgdGhpcy5vcHRpb25zLnBsYWNlaG9sZG
2VyX3RleHQgfHwgQWJzdHJhY3RDaG9zZW4uZGVmYXVsdF9zaW5nbGVfdGV4dDtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGVmYXVsdF90ZXh0ID0gdGhpcy5lc2NhcGVfaHRtbCh0aGlzLmRlZmF1bHRfdGV4dCk7XG4gICAgICByZXR1cm4gdGhpcy5yZXN1bHRzX25vbmVfZm91bmQgPSB0aGlzLmZvcm1fZmllbGQuZ2V0QXR0cmlidXRlKFwiZGF0YS1ub19yZXN1bHRzX3RleHRcIikgfHwgdGhpcy5vcHRpb25zLm5vX3Jlc3VsdHNfdGV4dCB8fCBBYnN0cmFjdENob3Nlbi5kZWZhdWx0X25vX3Jlc3VsdF90ZXh0O1xuICAgIH07XG5cbiAgICBBYnN0cmFjdENob3Nlbi5wcm90b3R5cGUuY2hvaWNlX2xhYmVsID0gZnVuY3Rpb24oaXRlbSkge1xuICAgICAgaWYgKHRoaXMuaW5jbHVkZV9ncm91cF9sYWJlbF9pbl9zZWxlY3RlZCAmJiAoaXRlbS5ncm91cF9sYWJlbCAhPSBudWxsKSkge1xuICAgICAgICByZXR1cm4gXCI8YiBjbGFzcz0nZ3JvdXAtbmFtZSc+XCIgKyAodGhpcy5lc2NhcGVfaHRtbChpdGVtLmdyb3VwX2xhYmVsKSkgKyBcIjwvYj5cIiArIGl0ZW0uaHRtbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpdGVtLmh0bWw7XG4gICAgICB9XG4gICAgfTtcblxuICAgIEFic3RyYWN0Q2hvc2VuLnByb3RvdHlwZS5tb3VzZV9lbnRlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMubW91c2Vfb25fY29udGFpbmVyID0gdHJ1ZTtcbiAgICB9O1xuXG4gICAgQWJzdHJhY3RDaG9zZW4ucHJvdG90eXBlLm1vdXNlX2xlYXZlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5tb3VzZV9vbl9jb250YWluZXIgPSBmYWxzZTtcbiAgICB9O1xuXG4gICAgQWJzdHJhY3RDaG9zZW4ucHJvdG90eXBlLmlucHV0X2ZvY3VzID0gZnVuY3Rpb24oZXZ0KSB7XG4gICAgICBpZiAodGhpcy5pc19tdWx0aXBsZSkge1xuICAgICAgICBpZiAoIXRoaXMuYWN0aXZlX2ZpZWxkKSB7XG4gICAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoKChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuY29udGFpbmVyX21vdXNlZG93bigpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSh0aGlzKSksIDUwKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKCF0aGlzLmFjdGl2ZV9maWVsZCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmFjdGl2YXRlX2ZpZWxkKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgQWJzdHJhY3RDaG9zZW4ucHJvdG90eXBlLmlucHV0X2JsdXIgPSBmdW5jdGlvbihldnQpIHtcbiAgICAgIGlmICghdGhpcy5tb3VzZV9vbl9jb250YWluZXIpIHtcbiAgICAgICAgdGhpcy5hY3RpdmVfZmllbGQgPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoKChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHJldHVybiBfdGhpcy5ibHVyX3Rlc3QoKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9KSh0aGlzKSksIDEwMCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIEFic3RyYWN0Q2hvc2VuLnByb3RvdHlwZS5sYWJlbF9jbGlja19oYW5kbGVyID0gZnVuY3Rpb24oZXZ0KSB7XG4gICAgICBpZiAodGhpcy5pc19tdWx0aXBsZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXJfbW91c2Vkb3duKGV2dCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmF0ZV9maWVsZCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBBYnN0cmFjdENob3Nlbi5wcm90b3R5cGUucmVzdWx0c19vcHRpb25fYnVpbGQgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgICB2Y
2XIgY29udGVudCwgZGF0YSwgZGF0YV9jb250ZW50LCBpLCBsZW4sIHJlZiwgc2hvd25fcmVzdWx0cztcbiAgICAgIGNvbnRlbnQgPSAnJztcbiAgICAgIHNob3duX3Jlc3VsdHMgPSAwO1xuICAgICAgcmVmID0gdGhpcy5yZXN1bHRzX2RhdGE7XG4gICAgICBmb3IgKGkgPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgZGF0YSA9IHJlZltpXTtcbiAgICAgICAgZGF0YV9jb250ZW50ID0gJyc7XG4gICAgICAgIGlmIChkYXRhLmdyb3VwKSB7XG4gICAgICAgICAgZGF0YV9jb250ZW50ID0gdGhpcy5yZXN1bHRfYWRkX2dyb3VwKGRhdGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRhdGFfY29udGVudCA9IHRoaXMucmVzdWx0X2FkZF9vcHRpb24oZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRhdGFfY29udGVudCAhPT0gJycpIHtcbiAgICAgICAgICBzaG93bl9yZXN1bHRzKys7XG4gICAgICAgICAgY29udGVudCArPSBkYXRhX2NvbnRlbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMgIT0gbnVsbCA/IG9wdGlvbnMuZmlyc3QgOiB2b2lkIDApIHtcbiAgICAgICAgICBpZiAoZGF0YS5zZWxlY3RlZCAmJiB0aGlzLmlzX211bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLmNob2ljZV9idWlsZChkYXRhKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEuc2VsZWN0ZWQgJiYgIXRoaXMuaXNfbXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2luZ2xlX3NldF9zZWxlY3RlZF90ZXh0KHRoaXMuY2hvaWNlX2xhYmVsKGRhdGEpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHNob3duX3Jlc3VsdHMgPj0gdGhpcy5tYXhfc2hvd25fcmVzdWx0cykge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9O1xuXG4gICAgQWJzdHJhY3RDaG9zZW4ucHJvdG90eXBlLnJlc3VsdF9hZGRfb3B0aW9uID0gZnVuY3Rpb24ob3B0aW9uKSB7XG4gICAgICB2Y
2XIgY2xhc3Nlcywgb3B0aW9uX2VsO1xuICAgICAgaWYgKCFvcHRpb24uc2VhcmNoX21hdGNoKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5pbmNsdWRlX29wdGlvbl9pbl9yZXN1bHRzKG9wdGlvbikpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgICAgY2xhc3NlcyA9IFtdO1xuICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQgJiYgIShvcHRpb24uc2VsZWN0ZWQgJiYgdGhpcy5pc19tdWx0aXBsZSkpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKFwiYWN0aXZlLXJlc3VsdFwiKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb24uZGlzYWJsZWQgJiYgIShvcHRpb24uc2VsZWN0ZWQgJiYgdGhpcy5pc19tdWx0aXBsZSkpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKFwiZGlzYWJsZWQtcmVzdWx0XCIpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbi5zZWxlY3RlZCkge1xuICAgICAgICBjbGFzc2VzLnB1c2goXCJyZXN1bHQtc2VsZWN0ZWRcIik7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9uLmdyb3VwX2FycmF5X2luZGV4ICE9IG51bGwpIHtcbiAgICAgICAgY2xhc3Nlcy5wdXNoKFwiZ3JvdXAtb3B0aW9uXCIpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbi5jbGFzc2VzICE9PSBcIlwiKSB7XG4gICAgICAgIGNsYXNzZXMucHVzaChvcHRpb24uY2xhc3Nlcyk7XG4gICAgICB9XG4gICAgICBvcHRpb25fZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlcIik7XG4gICAgICBvcHRpb25fZWwuY2xhc3NOYW1lID0gY2xhc3Nlcy5qb2luKFwiIFwiKTtcbiAgICAgIGlmIChvcHRpb24uc3R5bGUpIHtcbiAgICAgICAgb3B0aW9uX2VsLnN0eWxlLmNzc1RleHQgPSBvcHRpb24uc3R5bGU7XG4gICAgICB9XG4gICAgICBvcHRpb25fZWwuc2V0QXR0cmlidXRlKFwiZGF0YS1vcHRpb24tYXJyYXktaW5kZXhcIiwgb3B0aW9uLmFycmF5X2luZGV4KTtcbiAgICAgIG9wdGlvbl9lbC5pbm5lckhUTUwgPSBvcHRpb24uaGlnaGxpZ2h0ZWRfaHRtbCB8fCBvcHRpb24uaHRtbDtcbiAgICAgIGlmIChvcHRpb24udGl0bGUpIHtcbiAgICAgICAgb3B0aW9uX2VsLnRpdGxlID0gb3B0aW9uLnRpdGxlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMub3V0ZXJIVE1MKG9wdGlvbl9lbCk7XG4gICAgfTtcblxuICAgIEFic3RyYWN0Q2hvc2VuLnByb3RvdHlwZS5yZXN1bHRfYWRkX2dyb3VwID0gZnVuY3Rpb24oZ3JvdXApIHtcbiAgICAgIHZhciBjbGFzc2VzLCBncm91cF9lbDtcbiAgICAgIGlmICghKGdyb3VwLnNlYXJjaF9tYXRjaCB8fCBncm91cC5ncm91cF9tYXRjaCkpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgICAgaWYgKCEoZ3JvdXAuYWN0aXZlX29wdGlvbnMgPiAwKSkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgICBjbGFzc2VzID0gW107XG4gICAgICBjbGFzc2VzLnB1c2goXCJncm91cC1yZXN1bHRcIik7XG4gICAgICBpZiAoZ3JvdXAuY2xhc3Nlcykge1xuICAgICAgICBjbGFzc2VzLnB1c2goZ3JvdXAuY2xhc3Nlcyk7XG4gICAgICB9XG4gICAgICBncm91cF9lbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJsaVwiKTtcbiAgICAgIGdyb3VwX2VsLmNsYXNzTmFtZSA9IGNsYXNzZXMuam9pbihcIiBcIik7XG4gICAgICBncm91cF9lbC5pbm5lckhUTUwgPSBncm91cC5oaWdobGlnaHRlZF9odG1sIHx8IHRoaXMuZXNjYXBlX2h0bWwoZ3JvdXAubGFiZWwpO1xuICAgICAgaWYgKGdyb3VwLnRpdGxlKSB7XG4gICAgICAgIGdyb3VwX2VsLnRpdGxlID0gZ3JvdXAudGl0bGU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5vdXRlckhUTUwoZ3JvdXBfZWwpO1xuICAgIH07XG5cbiAgICBBYnN0cmFjdENob3Nlbi5wcm90b3R5cGUucmVzdWx0c191cGRhdGVfZmllbGQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuc2V0X2RlZmF1bHRfdGV4dCgpO1xuICAgICAgaWYgKCF0aGlzLmlzX211bHRpcGxlKSB7XG4gICAgICAgIHRoaXMucmVzdWx0c19yZXNldF9jbGVhbnVwKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnJlc3VsdF9jbGVhcl9oaWdobGlnaHQoKTtcbiAgICAgIHRoaXMucmVzdWx0c19idWlsZCgpO1xuICAgICAgaWYgKHRoaXMucmVzdWx0c19zaG93aW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLndpbm5vd19yZXN1bHRzKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIEFic3RyYWN0Q2hvc2VuLnByb3RvdHlwZS5yZXNldF9zaW5nbGVfc2VsZWN0X29wdGlvbnMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBpLCBsZW4sIHJlZiwgcmVzdWx0LCByZXN1bHRzMTtcbiAgICAgIHJlZiA9IHRoaXMucmVzdWx0c19kYXRhO1xuICAgICAgcmVzdWx0czEgPSBbXTtcbiAgICAgIGZvciAoaSA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICByZXN1bHQgPSByZWZbaV07XG4gICAgICAgIGlmIChyZXN1bHQuc2VsZWN0ZWQpIHtcbiAgICAgICAgICByZXN1bHRzMS5wdXNoKHJlc3VsdC5zZWxlY3RlZCA9IGZhbHNlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHRzMS5wdXNoKHZvaWQgMCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHRzMTtcbiAgICB9O1xuXG4gICAgQWJzdHJhY3RDaG9zZW4ucHJvdG90eXBlLnJlc3VsdHNfdG9nZ2xlID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAodGhpcy5yZXN1bHRzX3Nob3dpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0c19oaWRlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHRzX3Nob3coKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgQWJzdHJhY3RDaG9zZW4ucHJvdG90eXBlLnJlc3VsdHNfc2VhcmNoID0gZnVuY3Rpb24oZXZ0KSB7XG4gICAgICBpZiAodGhpcy5yZXN1bHRzX3Nob3dpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2lubm93X3Jlc3VsdHMoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc3VsdHNfc2hvdygpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBBYnN0cmFjdENob3Nlbi5wcm90b3R5cGUud2lubm93X3Jlc3VsdHMgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgICB2Y
2XIgZXNjYXBlZFF1ZXJ5LCBmaXgsIGksIGxlbiwgb3B0aW9uLCBwcmVmaXgsIHF1ZXJ5LCByZWYsIHJlZ2V4LCByZXN1bHRzLCByZXN1bHRzX2dyb3VwLCBzZWFyY2hfbWF0Y2gsIHN0YXJ0cG9zLCBzdWZmaXgsIHRleHQ7XG4gICAgICB0aGlzLm5vX3Jlc3VsdHNfY2xlYXIoKTtcbiAgICAgIHJlc3VsdHMgPSAwO1xuICAgICAgcXVlcnkgPSB0aGlzLmdldF9zZWFyY2hfdGV4dCgpO1xuICAgICAgZXNjYXBlZFF1ZXJ5ID0gcXVlcnkucmVwbGFjZSgvWy1bXFxde30oKSorPy4sXFxcXF4kfCNcXHNdL2csIFwiXFxcXCQmXCIpO1xuICAgICAgcmVnZXggPSB0aGlzLmdldF9zZWFyY2hfcmVnZXgoZXNjYXBlZFF1ZXJ5KTtcbiAgICAgIHJlZiA9IHRoaXMucmVzdWx0c19kYXRhO1xuICAgICAgZm9yIChpID0gMCwgbGVuID0gcmVmLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIG9wdGlvbiA9IHJlZltpXTtcbiAgICAgICAgb3B0aW9uLnNlYXJjaF9tYXRjaCA9IGZhbHNlO1xuICAgICAgICByZXN1bHRzX2dyb3VwID0gbnVsbDtcbiAgICAgICAgc2VhcmNoX21hdGNoID0gbnVsbDtcbiAgICAgICAgb3B0aW9uLmhpZ2hsaWdodGVkX2h0bWwgPSAnJztcbiAgICAgICAgaWYgKHRoaXMuaW5jbHVkZV9vcHRpb25faW5fcmVzdWx0cyhvcHRpb24pKSB7XG4gICAgICAgICAgaWYgKG9wdGlvbi5ncm91cCkge1xuICAgICAgICAgICAgb3B0aW9uLmdyb3VwX21hdGNoID0gZmFsc2U7XG4gICAgICAgICAgICBvcHRpb24uYWN0aXZlX29wdGlvbnMgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoKG9wdGlvbi5ncm91cF9hcnJheV9pbmRleCAhPSBudWxsKSAmJiB0aGlzLnJlc3VsdHNfZGF0YVtvcHRpb24uZ3JvdXBfYXJyYXlfaW5kZXhdKSB7XG4gICAgICAgICAgICByZXN1bHRzX2dyb3VwID0gdGhpcy5yZXN1bHRzX2RhdGFbb3B0aW9uLmdyb3VwX2FycmF5X2luZGV4XTtcbiAgICAgICAgICAgIGlmIChyZXN1bHRzX2dyb3VwLmFjdGl2ZV9vcHRpb25zID09PSAwICYmIHJlc3VsdHNfZ3JvdXAuc2VhcmNoX21hdGNoKSB7XG4gICAgICAgICAgICAgIHJlc3VsdHMgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdHNfZ3JvdXAuYWN0aXZlX29wdGlvbnMgKz0gMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGV4dCA9IG9wdGlvbi5ncm91cCA/IG9wdGlvbi5sYWJlbCA6IG9wdGlvbi50ZXh0O1xuICAgICAgICAgIGlmICghKG9wdGlvbi5ncm91cCAmJiAhdGhpcy5ncm91cF9zZWFyY2gpKSB7XG4gICAgICAgICAgICBzZWFyY2hfbWF0Y2ggPSB0aGlzLnNlYXJjaF9zdHJpbmdfbWF0Y2godGV4dCwgcmVnZXgpO1xuICAgICAgICAgICAgb3B0aW9uLnNlYXJjaF9tYXRjaCA9IHNlYXJjaF9tYXRjaCAhPSBudWxsO1xuICAgICAgICAgICAgaWYgKG9wdGlvbi5zZWFyY2hfbWF0Y2ggJiYgIW9wdGlvbi5ncm91cCkge1xuICAgICAgICAgICAgICByZXN1bHRzICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3B0aW9uLnNlYXJjaF9tYXRjaCkge1xuICAgICAgICAgICAgICBpZiAocXVlcnkubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgc3RhcnRwb3MgPSBzZWFyY2hfbWF0Y2guaW5kZXg7XG4gICAgICAgICAgICAgICAgcHJlZml4ID0gdGV4dC5zbGljZSgwLCBzdGFydHBvcyk7XG4gICAgICAgICAgICAgICAgZml4ID0gdGV4dC5zbGljZShzdGFydHBvcywgc3RhcnRwb3MgKyBxdWVyeS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIHN1ZmZpeCA9IHRleHQuc2xpY2Uoc3RhcnRwb3MgKyBxdWVyeS5sZW5ndGgpO1xuICAgICAgICAgICAgICAgIG9wdGlvbi5oaWdobGlnaHRlZF9odG1sID0gKHRoaXMuZXNjYXBlX2h0bWwocHJlZml4KSkgKyBcIjxlbT5cIiArICh0aGlzLmVzY2FwZV9odG1sKGZpeCkpICsgXCI8L2VtPlwiICsgKHRoaXMuZXNjYXBlX2h0bWwoc3VmZml4KSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKHJlc3VsdHNfZ3JvdXAgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdHNfZ3JvdXAuZ3JvdXBfbWF0Y2ggPSB0cnVlO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2UgaWYgKChvcHRpb24uZ3JvdXBfYXJyYXlfaW5kZXggIT0gbnVsbCkgJiYgdGhpcy5yZXN1bHRzX2RhdGFbb3B0aW9uLmdyb3VwX2FycmF5X2luZGV4XS5zZWFyY2hfbWF0Y2gpIHtcbiAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaF9tYXRjaCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnJlc3VsdF9jbGVhcl9oaWdobGlnaHQoKTtcbiAgICAgIGlmIChyZXN1bHRzIDwgMSAmJiBxdWVyeS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy51cGRhdGVfcmVzdWx0c19jb250ZW50KFwiXCIpO1xuICAgICAgICByZXR1cm4gdGhpcy5ub19yZXN1bHRzKHF1ZXJ5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudXBkYXRlX3Jlc3VsdHNfY29udGVudCh0aGlzLnJlc3VsdHNfb3B0aW9uX2J1aWxkKCkpO1xuICAgICAgICBpZiAoIShvcHRpb25zICE9IG51bGwgPyBvcHRpb25zLnNraXBfaGlnaGxpZ2h0IDogdm9pZCAwKSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLndpbm5vd19yZXN1bHRzX3NldF9oaWdobGlnaHQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBBYnN0cmFjdENob3Nlbi5wcm90b3R5cGUuZ2V0X3NlYXJjaF9yZWdleCA9IGZ1bmN0aW9uKGVzY2FwZWRfc2VhcmNoX3N0cmluZykge1xuICAgICAgdmFyIHJlZ2V4X2ZsYWcsIHJlZ2V4X3N0cmluZztcbiAgICAgIHJlZ2V4X3N0cmluZyA9IHRoaXMuc2VhcmNoX2NvbnRhaW5zID8gZXNjYXBlZF9zZWFyY2hfc3RyaW5nIDogXCIoXnxcXFxcc3xcXFxcYilcIiArIGVzY2FwZWRfc2VhcmNoX3N0cmluZyArIFwiW15cXFxcc10qXCI7XG4gICAgICBpZiAoISh0aGlzLmVuYWJsZV9zcGxpdF93b3JkX3NlYXJjaCB8fCB0aGlzLnNlYXJjaF9jb250YWlucykpIHtcbiAgICAgICAgcmVnZXhfc3RyaW5nID0gXCJeXCIgKyByZWdleF9zdHJpbmc7XG4gICAgICB9XG4gICAgICByZWdleF9mbGFnID0gdGhpcy5jYXNlX3NlbnNpdGl2ZV9zZWFyY2ggPyBcIlwiIDogXCJpXCI7XG4gICAgICByZXR1cm4gbmV3IFJlZ0V4cChyZWdleF9zdHJpbmcsIHJlZ2V4X2ZsYWcpO1xuICAgIH07XG5cbiAgICBBYnN0cmFjdENob3Nlbi5wcm90b3R5cGUuc2VhcmNoX3N0cmluZ19tYXRjaCA9IGZ1bmN0aW9uKHNlYXJjaF9zdHJpbmcsIHJlZ2V4KSB7XG4gICAgICB2Y
2XIgbWF0Y2g7XG4gICAgICBtYXRjaCA9IHJlZ2V4LmV4ZWMoc2VhcmNoX3N0cmluZyk7XG4gICAgICBpZiAoIXRoaXMuc2VhcmNoX2NvbnRhaW5zICYmIChtYXRjaCAhPSBudWxsID8gbWF0Y2hbMV0gOiB2b2lkIDApKSB7XG4gICAgICAgIG1hdGNoLmluZGV4ICs9IDE7XG4gICAgICB9XG4gICAgICByZXR1cm4gbWF0Y2g7XG4gICAgfTtcblxuICAgIEFic3RyYWN0Q2hvc2VuLnByb3RvdHlwZS5jaG9pY2VzX2NvdW50ID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgaSwgbGVuLCBvcHRpb24sIHJlZjtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkX29wdGlvbl9jb3VudCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkX29wdGlvbl9jb3VudDtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2VsZWN0ZWRfb3B0aW9uX2NvdW50ID0gMDtcbiAgICAgIHJlZiA9IHRoaXMuZm9ybV9maWVsZC5vcHRpb25zO1xuICAgICAgZm9yIChpID0gMCwgbGVuID0gcmVmLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIG9wdGlvbiA9IHJlZltpXTtcbiAgICAgICAgaWYgKG9wdGlvbi5zZWxlY3RlZCkge1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRfb3B0aW9uX2NvdW50ICs9IDE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkX29wdGlvbl9jb3VudDtcbiAgICB9O1xuXG4gICAgQWJzdHJhY3RDaG9zZW4ucHJvdG90eXBlLmNob2ljZXNfY2xpY2sgPSBmdW5jdGlvbihldnQpIHtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5hY3RpdmF0ZV9maWVsZCgpO1xuICAgICAgaWYgKCEodGhpcy5yZXN1bHRzX3Nob3dpbmcgfHwgdGhpcy5pc19kaXNhYmxlZCkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0c19zaG93KCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIEFic3RyYWN0Q2hvc2VuLnByb3RvdHlwZS5rZXlkb3duX2NoZWNrZXIgPSBmdW5jdGlvbihldnQpIHtcbiAgICAgIHZhciByZWYsIHN0cm9rZTtcbiAgICAgIHN0cm9rZSA9IChyZWYgPSBldnQud2hpY2gpICE9IG51bGwgPyByZWYgOiBldnQua2V5Q29kZTtcbiAgICAgIHRoaXMuc2VhcmNoX2ZpZWxkX3NjYWxlKCk7XG4gICAgICBpZiAoc3Ryb2tlICE9PSA4ICYmIHRoaXMucGVuZGluZ19iYWNrc3Ryb2tlKSB7XG4gICAgICAgIHRoaXMuY2xlYXJfYmFja3N0cm9rZSgpO1xuICAgICAgfVxuICAgICAgc3dpdGNoIChzdHJva2UpIHtcbiAgICAgICAgY2FzZSA4OlxuICAgICAgICAgIHRoaXMuYmFja3N0cm9rZV9sZW5ndGggPSB0aGlzLmdldF9zZWFyY2hfZmllbGRfdmFsdWUoKS5sZW5ndGg7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICBpZiAodGhpcy5yZXN1bHRzX3Nob3dpbmcgJiYgIXRoaXMuaXNfbXVsdGlwbGUpIHtcbiAgICAgICAgICAgIHRoaXMucmVzdWx0X3NlbGVjdChldnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLm1vdXNlX29uX2NvbnRhaW5lciA9IGZhbHNlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDEzOlxuICAgICAgICAgIGlmICh0aGlzLnJlc3VsdHNfc2hvd2luZykge1xuICAgICAgICAgICAgZXZ0LnByZXZlbn
2REZWZhdWx0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgIGlmICh0aGlzLnJlc3VsdHNfc2hvd2luZykge1xuICAgICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDMyOlxuICAgICAgICAgIGlmICh0aGlzLmRpc2FibGVfc2VhcmNoKSB7XG4gICAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzg6XG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgdGhpcy5rZXl1cF9hcnJvdygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDQwOlxuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMua2V5ZG93bl9hcnJvdygpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBBYnN0cmFjdENob3Nlbi5wcm90b3R5cGUua2V5dXBfY2hlY2tlciA9IGZ1bmN0aW9uKGV2dCkge1xuICAgICAgdmFyIHJlZiwgc3Ryb2tlO1xuICAgICAgc3Ryb2tlID0gKHJlZiA9IGV2dC53aGljaCkgIT0gbnVsbCA/IHJlZiA6IGV2dC5rZXlDb2RlO1xuICAgICAgdGhpcy5zZWFyY2hfZmllbGRfc2NhbGUoKTtcbiAgICAgIHN3aXRjaCAoc3Ryb2tlKSB7XG4gICAgICAgIGNhc2UgODpcbiAgICAgICAgICBpZiAodGhpcy5pc19tdWx0aXBsZSAmJiB0aGlzLmJhY2tzdHJva2VfbGVuZ3RoIDwgMSAmJiB0aGlzLmNob2ljZXNfY291bnQoKSA+IDApIHtcbiAgICAgICAgICAgIHRoaXMua2V5ZG93bl9iYWNrc3Ryb2tlKCk7XG4gICAgICAgICAgfSBlbHNlIGlmICghdGhpcy5wZW5kaW5nX2JhY2tzdHJva2UpIHtcbiAgICAgICAgICAgIHRoaXMucmVzdWx0X2NsZWFyX2hpZ2hsaWdodCgpO1xuICAgICAgICAgICAgdGhpcy5yZXN1bHRzX3NlYXJjaCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBpZiAodGhpcy5yZXN1bHRzX3Nob3dpbmcpIHtcbiAgICAgICAgICAgIHRoaXMucmVzdWx0X3NlbGVjdChldnQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICBpZiAodGhpcy5yZXN1bHRzX3Nob3dpbmcpIHtcbiAgICAgICAgICAgIHRoaXMucmVzdWx0c19oaWRlKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIDk6XG4gICAgICAgIGNhc2UgMTY6XG4gICAgICAgIGNhc2UgMTc6XG4gICAgICAgIGNhc2UgMTg6XG4gICAgICAgIGNhc2UgMzg6XG4gICAgICAgIGNhc2UgNDA6XG4gICAgICAgIGNhc2UgOTE6XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhpcy5yZXN1bHRzX3NlYXJjaCgpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBBYnN0cmFjdENob3Nlbi5wcm90b3R5cGUuY2xpcGJvYXJkX2V2ZW50X2NoZWNrZXIgPSBmdW5jdGlvbihldnQpIHtcbiAgICAgIGlmICh0aGlzLmlzX2Rpc2FibGVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBzZXRUaW1lb3V0KCgoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiBfdGhpcy5yZXN1bHRzX3NlYXJjaCgpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpLCA1MCk7XG4gICAgfTtcblxuICAgIEFic3RyYWN0Q2hvc2VuLnByb3RvdHlwZS5jb250YWluZXJfd2lkdGggPSBmdW5jdGlvbigpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMud2lkdGggIT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLndpZHRoO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybV9maWVsZC5vZmZzZXRXaWR0aCArIFwicHhcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgQWJzdHJhY3RDaG9zZW4ucHJvdG90eXBlLmluY2x1ZGVfb3B0aW9uX2luX3Jlc3VsdHMgPSBmdW5jdGlvbihvcHRpb24pIHtcbiAgICAgIGlmICh0aGlzLmlzX211bHRpcGxlICYmICghdGhpcy5kaXNwbGF5X3NlbGVjdGVkX29wdGlvbnMgJiYgb3B0aW9uLnNlbGVjdGVkKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuZGlzcGxheV9kaXNhYmxlZF9vcHRpb25zICYmIG9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAob3B0aW9uLmVtcHR5KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG5cbiAgICBBYnN0cmFjdENob3Nlbi5wcm90b3R5cGUuc2VhcmNoX3Jlc3VsdHNfdG91Y2hzdGFydCA9IGZ1bmN0aW9uKGV2dCkge1xuICAgICAgdGhpcy50b3VjaF9zdGFydGVkID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0aGlzLnNlYXJjaF9yZXN1bHRzX21vdXNlb3ZlcihldnQpO1xuICAgIH07XG5cbiAgICBBYnN0cmFjdENob3Nlbi5wcm90b3R5cGUuc2VhcmNoX3Jlc3VsdHNfdG91Y2htb3ZlID0gZnVuY3Rpb24oZXZ0KSB7XG4gICAgICB0aGlzLnRvdWNoX3N0YXJ0ZWQgPSBmYWxzZTtcbiAgICAgIHJldHVybiB0aGlzLnNlYXJjaF9yZXN1bHRzX21vdXNlb3V0KGV2dCk7XG4gICAgfTtcblxuICAgIEFic3RyYWN0Q2hvc2VuLnByb3RvdHlwZS5zZWFyY2hfcmVzdWx0c190b3VjaGVuZCA9IGZ1bmN0aW9uKGV2dCkge1xuICAgICAgaWYgKHRoaXMudG91Y2hfc3RhcnRlZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hfcmVzdWx0c19tb3VzZXVwKGV2dCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIEFic3RyYWN0Q2hvc2VuLnByb3RvdHlwZS5vdXRlckhUTUwgPSBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICB2Y
2XIgdG1wO1xuICAgICAgaWYgKGVsZW1lbnQub3V0ZXJIVE1MKSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50Lm91dGVySFRNTDtcbiAgICAgIH1cbiAgICAgIHRtcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7XG4gICAgICB0bXAuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgICByZXR1cm4gdG1wLmlubmVySFRNTDtcbiAgICB9O1xuXG4gICAgQWJzdHJhY3RDaG9zZW4ucHJvdG90eXBlLmdldF9zaW5nbGVfaHRtbCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFwiPGEgY2xhc3M9XFxcImNob3Nlbi1zaW5nbGUgY2hvc2VuLWRlZmF1bHRcXFwiPlxcbiAgPHNwYW4+XCIgKyB0aGlzLmRlZmF1bHRfdGV4dCArIFwiPC9zcGFuPlxcbiAgPGRpdj48Yj48L2I+PC9kaXY+XFxuPC9hPlxcbjxkaXYgY2xhc3M9XFxcImNob3Nlbi1kcm9wXFxcIj5cXG4gIDxkaXYgY2xhc3M9XFxcImNob3Nlbi1zZWFyY2hcXFwiPlxcbiAgICA8aW5wdXQgY2xhc3M9XFxcImNob3Nlbi1zZWFyY2gtaW5wdXRcXFwiIHR5cGU9XFxcInRleHRcXFwiIGF1dG9jb21wbGV0ZT1cXFwib2ZmXFxcIiAvPlxcbiAgPC9kaXY+XFxuICA8dWwgY2xhc3M9XFxcImNob3Nlbi1yZXN1bHRzXFxcIj48L3VsPlxcbjwvZGl2PlwiO1xuICAgIH07XG5cbiAgICBBYnN0cmFjdENob3Nlbi5wcm90b3R5cGUuZ2V0X211bHRpX2h0bWwgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIjx1bCBjbGFzcz1cXFwiY2hvc2VuLWNob2ljZXNcXFwiPlxcbiAgPGxpIGNsYXNzPVxcXCJzZWFyY2gtZmllbGRcXFwiPlxcbiAgICA8aW5wdXQgY2xhc3M9XFxcImNob3Nlbi1zZWFyY2gtaW5wdXRcXFwiIHR5cGU9XFxcInRleHRcXFwiIGF1dG9jb21wbGV0ZT1cXFwib2ZmXFxcIiB2YWx1ZT1cXFwiXCIgKyB0aGlzLmRlZmF1bHRfdGV4dCArIFwiXFxcIiAvPlxcbiAgPC9saT5cXG48L3VsPlxcbjxkaXYgY2xhc3M9XFxcImNob3Nlbi1kcm9wXFxcIj5cXG4gIDx1bCBjbGFzcz1cXFwiY2hvc2VuLXJlc3VsdHNcXFwiPjwvdWw+XFxuPC9kaXY+XCI7XG4gICAgfTtcblxuICAgIEFic3RyYWN0Q2hvc2VuLnByb3RvdHlwZS5nZXRfbm9fcmVzdWx0c19odG1sID0gZnVuY3Rpb24odGVybXMpIHtcbiAgICAgIHJldHVybiBcIjxsaSBjbGFzcz1cXFwibm8tcmVzdWx0c1xcXCI+XFxuICBcIiArIHRoaXMucmVzdWx0c19ub25lX2ZvdW5kICsgXCIgPHNwYW4+XCIgKyAodGhpcy5lc2NhcGVfaHRtbCh0ZXJtcykpICsgXCI8L3NwYW4+XFxuPC9saT5cIjtcbiAgICB9O1xuXG4gICAgQWJzdHJhY3RDaG9zZW4uYnJvd3Nlcl9pc19zdXBwb3J0ZWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIGlmIChcIk1pY3Jvc29mdCBJbnRlcm5ldCBFeHBsb3JlclwiID09PSB3aW5kb3cubmF2aWdhdG9yLmFwcE5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50TW9kZSA+PSA4O1xuICAgICAgfVxuICAgICAgaWYgKC9pUChvZHxob25lKS9pLnRlc3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpIHx8IC9JRU1vYmlsZS9pLnRlc3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpIHx8IC9XaW5kb3dzIFBob25lL2kudGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkgfHwgL0JsYWNrQmVycnkvaS50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KSB8fCAvQkIxMC9pLnRlc3Qod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQpIHx8IC9BbmRyb2lkLipNb2JpbGUvaS50ZXN0KHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50KSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuXG4gICAgQWJzdHJhY3RDaG9zZW4uZGVmYXVsdF9tdWx0aXBsZV90ZXh0ID0gXCJTZWxlY3QgU29tZSBPcHRpb25zXCI7XG5cbiAgICBBYnN0cmFjdENob3Nlbi5kZWZhdWx0X3NpbmdsZV90ZXh0ID0gXCJTZWxlY3QgYW4gT3B0aW9uXCI7XG5cbiAgICBBYnN0cmFjdENob3Nlbi5kZWZhdWx0X25vX3Jlc3VsdF90ZXh0ID0gXCJObyByZXN1bHRzIG1hdGNoXCI7XG5cbiAgICByZXR1cm4gQWJzdHJhY3RDaG9zZW47XG5cbiAgfSkoKTtcblxuICAkID0galF1ZXJ5O1xuXG4gICQuZm4uZXh0ZW5kKHtcbiAgICBjaG9zZW46IGZ1bmN0aW9uKG9wdGlvbnMpIHtcbiAgICAgIGlmICghQWJzdHJhY3RDaG9zZW4uYnJvd3Nlcl9pc19zdXBwb3J0ZWQoKSkge1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oaW5wdXRfZmllbGQpIHtcbiAgICAgICAgdmFyICR0aGlzLCBjaG9zZW47XG4gICAgICAgICR0aGlzID0gJCh0aGlzKTtcbiAgICAgICAgY2hvc2VuID0gJHRoaXMuZGF0YSgnY2hvc2VuJyk7XG4gICAgICAgIGlmIChvcHRpb25zID09PSAnZGVzdHJveScpIHtcbiAgICAgICAgICBpZiAoY2hvc2VuIGluc3RhbmNlb2YgQ2hvc2VuKSB7XG4gICAgICAgICAgICBjaG9zZW4uZGVzdHJveSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCEoY2hvc2VuIGluc3RhbmNlb2YgQ2hvc2VuKSkge1xuICAgICAgICAgICR0aGlzLmRhdGEoJ2Nob3NlbicsIG5ldyBDaG9zZW4odGhpcywgb3B0aW9ucykpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIENob3NlbiA9IChmdW5jdGlvbihzdXBlckNsYXNzKSB7XG4gICAgZXh0ZW5kKENob3Nlbiwgc3VwZXJDbGFzcyk7XG5cbiAgICBmdW5jdGlvbiBDaG9zZW4oKSB7XG4gICAgICByZXR1cm4gQ2hvc2VuLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgIH1cblxuICAgIENob3Nlbi5wcm90b3R5cGUuc2V0dXAgPSBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuZm9ybV9maWVsZF9qcSA9ICQodGhpcy5mb3JtX2ZpZWxkKTtcbiAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRfc2VsZWN0ZWRJbmRleCA9IHRoaXMuZm9ybV9maWVsZC5zZWxlY3RlZEluZGV4O1xuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLnNldF91cF9odG1sID0gZnVuY3Rpb24oKSB7XG4gICAgICB2Y
2XIgY29udGFpbmVyX2NsYXNzZXMsIGNvbnRhaW5lcl9wcm9wcztcbiAgICAgIGNvbnRhaW5lcl9jbGFzc2VzID0gW1wiY2hvc2VuLWNvbnRhaW5lclwiXTtcbiAgICAgIGNvbnRhaW5lcl9jbGFzc2VzLnB1c2goXCJjaG9zZW4tY29udGFpbmVyLVwiICsgKHRoaXMuaXNfbXVsdGlwbGUgPyBcIm11bHRpXCIgOiBcInNpbmdsZVwiKSk7XG4gICAgICBpZiAodGhpcy5pbmhlcml0X3NlbGVjdF9jbGFzc2VzICYmIHRoaXMuZm9ybV9maWVsZC5jbGFzc05hbWUpIHtcbiAgICAgICAgY29udGFpbmVyX2NsYXNzZXMucHVzaCh0aGlzLmZvcm1fZmllbGQuY2xhc3NOYW1lKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmlzX3J0bCkge1xuICAgICAgICBjb250YWluZXJfY2xhc3Nlcy5wdXNoKFwiY2hvc2VuLXJ0bFwiKTtcbiAgICAgIH1cbiAgICAgIGNvbnRhaW5lcl9wcm9wcyA9IHtcbiAgICAgICAgJ2NsYXNzJzogY29udGFpbmVyX2NsYXNzZXMuam9pbignICcpLFxuICAgICAgICAndGl0bGUnOiB0aGlzLmZvcm1fZmllbGQudGl0bGVcbiAgICAgIH07XG4gICAgICBpZiAodGhpcy5mb3JtX2ZpZWxkLmlkLmxlbmd0aCkge1xuICAgICAgICBjb250YWluZXJfcHJvcHMuaWQgPSB0aGlzLmZvcm1fZmllbGQuaWQucmVwbGFjZSgvW15cXHddL2csICdfJykgKyBcIl9jaG9zZW5cIjtcbiAgICAgIH1cbiAgICAgIHRoaXMuY29udGFpbmVyID0gJChcIjxkaXYgLz5cIiwgY29udGFpbmVyX3Byb3BzKTtcbiAgICAgIHRoaXMuY29udGFpbmVyLndpZHRoKHRoaXMuY29udGFpbmVyX3dpZHRoKCkpO1xuICAgICAgaWYgKHRoaXMuaXNfbXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5jb250YWluZXIuaHRtbCh0aGlzLmdldF9tdWx0aV9odG1sKCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jb250YWluZXIuaHRtbCh0aGlzLmdldF9zaW5nbGVfaHRtbCgpKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZm9ybV9maWVsZF9qcS5oaWRlKCkuYWZ0ZXIodGhpcy5jb250YWluZXIpO1xuICAgICAgdGhpcy5kcm9wZG93biA9IHRoaXMuY29udGFpbmVyLmZpbmQoJ2Rpdi5jaG9zZW4tZHJvcCcpLmZpcnN0KCk7XG4gICAgICB0aGlzLnNlYXJjaF9maWVsZCA9IHRoaXMuY29udGFpbmVyLmZpbmQoJ2lucHV0JykuZmlyc3QoKTtcbiAgICAgIHRoaXMuc2VhcmNoX3Jlc3VsdHMgPSB0aGlzLmNvbnRhaW5lci5maW5kKCd1bC5jaG9zZW4tcmVzdWx0cycpLmZpcnN0KCk7XG4gICAgICB0aGlzLnNlYXJjaF9maWVsZF9zY2FsZSgpO1xuICAgICAgdGhpcy5zZWFyY2hfbm9fcmVzdWx0cyA9IHRoaXMuY29udGFpbmVyLmZpbmQoJ2xpLm5vLXJlc3VsdHMnKS5maXJzdCgpO1xuICAgICAgaWYgKHRoaXMuaXNfbXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hfY2hvaWNlcyA9IHRoaXMuY29udGFpbmVyLmZpbmQoJ3VsLmNob3Nlbi1jaG9pY2VzJykuZmlyc3QoKTtcbiAgICAgICAgdGhpcy5zZWFyY2hfY29udGFpbmVyID0gdGhpcy5jb250YWluZXIuZmluZCgnbGkuc2VhcmNoLWZpZWxkJykuZmlyc3QoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VhcmNoX2NvbnRhaW5lciA9IHRoaXMuY29udGFpbmVyLmZpbmQoJ2Rpdi5jaG9zZW4tc2VhcmNoJykuZmlyc3QoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZF9pdGVtID0gdGhpcy5jb250YWluZXIuZmluZCgnLmNob3Nlbi1zaW5nbGUnKS5maXJzdCgpO1xuICAgICAgfVxuICAgICAgdGhpcy5yZXN1bHRzX2J1aWxkKCk7XG4gICAgICB0aGlzLnNldF90YWJfaW5kZXgoKTtcbiAgICAgIHJldHVybiB0aGlzLnNldF9sYWJlbF9iZWhhdmlvcigpO1xuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLm9uX3JlYWR5ID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtX2ZpZWxkX2pxLnRyaWdnZXIoXCJjaG9zZW46cmVhZHlcIiwge1xuICAgICAgICBjaG9zZW46IHRoaXNcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLnJlZ2lzdGVyX29ic2VydmVycyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5jb250YWluZXIub24oJ3RvdWNoc3RhcnQuY2hvc2VuJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihldnQpIHtcbiAgICAgICAgICBfdGhpcy5jb250YWluZXJfbW91c2Vkb3duKGV2dCk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICB0aGlzLmNvbnRhaW5lci5vbigndG91Y2hlbmQuY2hvc2VuJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihldnQpIHtcbiAgICAgICAgICBfdGhpcy5jb250YWluZXJfbW91c2V1cChldnQpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgdGhpcy5jb250YWluZXIub24oJ21vdXNlZG93bi5jaG9zZW4nLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGV2dCkge1xuICAgICAgICAgIF90aGlzLmNvbnRhaW5lcl9tb3VzZWRvd24oZXZ0KTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHRoaXMuY29udGFpbmVyLm9uKCdtb3VzZXVwLmNob3NlbicsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXZ0KSB7XG4gICAgICAgICAgX3RoaXMuY29udGFpbmVyX21vdXNldXAoZXZ0KTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHRoaXMuY29udGFpbmVyLm9uKCdtb3VzZWVudGVyLmNob3NlbicsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXZ0KSB7XG4gICAgICAgICAgX3RoaXMubW91c2VfZW50ZXIoZXZ0KTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHRoaXMuY29udGFpbmVyLm9uKCdtb3VzZWxlYXZlLmNob3NlbicsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXZ0KSB7XG4gICAgICAgICAgX3RoaXMubW91c2VfbGVhdmUoZXZ0KTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHRoaXMuc2VhcmNoX3Jlc3VsdHMub24oJ21vdXNldXAuY2hvc2VuJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgI
2HJldHVybiBmdW5jdGlvbihldnQpIHtcbiAgICAgICAgICBfdGhpcy5zZWFyY2hfcmVzdWx0c19tb3VzZXVwKGV2dCk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICB0aGlzLnNlYXJjaF9yZXN1bHRzLm9uKCdtb3VzZW92ZXIuY2hvc2VuJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihldnQpIHtcbiAgICAgICAgICBfdGhpcy5zZWFyY2hfcmVzdWx0c19tb3VzZW92ZXIoZXZ0KTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHRoaXMuc2VhcmNoX3Jlc3VsdHMub24oJ21vdXNlb3V0LmNob3NlbicsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXZ0KSB7XG4gICAgICAgICAgX3RoaXMuc2VhcmNoX3Jlc3VsdHNfbW91c2VvdXQoZXZ0KTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHRoaXMuc2VhcmNoX3Jlc3VsdHMub24oJ21vdXNld2hlZWwuY2hvc2VuIERPTU1vdXNlU2Nyb2xsLmNob3NlbicsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXZ0KSB7XG4gICAgICAgICAgX3RoaXMuc2VhcmNoX3Jlc3VsdHNfbW91c2V3aGVlbChldnQpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgdGhpcy5zZWFyY2hfcmVzdWx0cy5vbigndG91Y2hzdGFydC5jaG9zZW4nLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGV2dCkge1xuICAgICAgICAgIF90aGlzLnNlYXJjaF9yZXN1bHRzX3RvdWNoc3RhcnQoZXZ0KTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHRoaXMuc2VhcmNoX3Jlc3VsdHMub24oJ3RvdWNobW92ZS5jaG9zZW4nLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGV2dCkge1xuICAgICAgICAgIF90aGlzLnNlYXJjaF9yZXN1bHRzX3RvdWNobW92ZShldnQpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgdGhpcy5zZWFyY2hfcmVzdWx0cy5vbigndG91Y2hlbmQuY2hvc2VuJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihldnQpIHtcbiAgICAgICAgICBfdGhpcy5zZWFyY2hfcmVzdWx0c190b3VjaGVuZChldnQpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgdGhpcy5mb3JtX2ZpZWxkX2pxLm9uKFwiY2hvc2VuOnVwZGF0ZWQuY2hvc2VuXCIsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXZ0KSB7XG4gICAgICAgICAgX3RoaXMucmVzdWx0c191cGRhdGVfZmllbGQoZXZ0KTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHRoaXMuZm9ybV9maWVsZF9qcS5vbihcImNob3NlbjphY3RpdmF0ZS5jaG9zZW5cIiwgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihldnQpIHtcbiAgICAgICAgICBfdGhpcy5hY3RpdmF0ZV9maWVsZChldnQpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgdGhpcy5mb3JtX2ZpZWxkX2pxLm9uKFwiY2hvc2VuOm9wZW4uY2hvc2VuXCIsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXZ0KSB7XG4gICAgICAgICAgX3RoaXMuY29udGFpbmVyX21vdXNlZG93bihldnQpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgdGhpcy5mb3JtX2ZpZWxkX2pxLm9uKFwiY2hvc2VuOmNsb3NlLmNob3NlblwiLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGV2dCkge1xuICAgICAgICAgIF90aGlzLmNsb3NlX2ZpZWxkKGV2dCk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICB0aGlzLnNlYXJjaF9maWVsZC5vbignYmx1ci5jaG9zZW4nLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGV2dCkge1xuICAgICAgICAgIF90aGlzLmlucHV0X2JsdXIoZXZ0KTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHRoaXMuc2VhcmNoX2ZpZWxkLm9uKCdrZXl1cC5jaG9zZW4nLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGV2dCkge1xuICAgICAgICAgIF90aGlzLmtleXVwX2NoZWNrZXIoZXZ0KTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICAgIHRoaXMuc2VhcmNoX2ZpZWxkLm9uKCdrZXlkb3duLmNob3NlbicsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oZXZ0KSB7XG4gICAgICAgICAgX3RoaXMua2V5ZG93bl9jaGVja2VyKGV2dCk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICB0aGlzLnNlYXJjaF9maWVsZC5vbignZm9jdXMuY2hvc2VuJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihldnQpIHtcbiAgICAgICAgICBfdGhpcy5pbnB1dF9mb2N1cyhldnQpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgdGhpcy5zZWFyY2hfZmllbGQub24oJ2N1dC5jaG9zZW4nLCAoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGV2dCkge1xuICAgICAgICAgIF90aGlzLmNsaXBib2FyZF9ldmVudF9jaGVja2VyKGV2dCk7XG4gICAgICAgIH07XG4gICAgICB9KSh0aGlzKSk7XG4gICAgICB0aGlzLnNlYXJjaF9maWVsZC5vbigncGFzdGUuY2hvc2VuJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbihldnQpIHtcbiAgICAgICAgICBfdGhpcy5jbGlwYm9hcmRfZXZlbnRfY2hlY2tlcihldnQpO1xuICAgICAgICB9O1xuICAgICAgfSkodGhpcykpO1xuICAgICAgaWYgKHRoaXMuaXNfbXVsdGlwbGUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoX2Nob2ljZXMub24oJ2NsaWNrLmNob3NlbicsIChmdW5jdGlvbihfdGhpcykge1xuICAgICAgICAgIHJldHVybiBmdW5jdGlvbihldnQpIHtcbiAgICAgICAgICAgIF90aGlzLmNob2ljZXNfY2xpY2soZXZ0KTtcbiAgICAgICAgICB9O1xuICAgICAgICB9KSh0aGlzKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5jb250YWluZXIub24oJ2NsaWNrLmNob3NlbicsIGZ1bmN0aW9uKGV2dCkge1xuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgQ2hvc2VuLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oKSB7XG4gICAgICAkKHRoaXMuY29udGFpbmVyWzBdLm93bmVyRG9jdW1lbnQpLm9mZignY2xpY2suY2hvc2VuJywgdGhpcy5jbGlja190ZXN0X2FjdGlvbik7XG4gICAgICBpZiAodGhpcy5mb3JtX2ZpZWxkX2xhYmVsLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5mb3JtX2ZpZWxkX2xhYmVsLm9mZignY2xpY2suY2hvc2VuJyk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zZWFyY2hfZmllbGRbMF0udGFiSW5kZXgpIHtcbiAgICAgICAgdGhpcy5mb3JtX2ZpZWxkX2pxWzBdLnRhYkluZGV4ID0gdGhpcy5zZWFyY2hfZmllbGRbMF0udGFiSW5kZXg7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbnRhaW5lci5yZW1vdmUoKTtcbiAgICAgIHRoaXMuZm9ybV9maWVsZF9qcS5yZW1vdmVEYXRhKCdjaG9zZW4nKTtcbiAgICAgIHJldHVybi
2B0aGlzLmZvcm1fZmllbGRfanEuc2hvdygpO1xuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLnNlYXJjaF9maWVsZF9kaXNhYmxlZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5pc19kaXNhYmxlZCA9IHRoaXMuZm9ybV9maWVsZC5kaXNhYmxlZCB8fCB0aGlzLmZvcm1fZmllbGRfanEucGFyZW50cygnZmllbGRzZXQnKS5pcygnOmRpc2FibGVkJyk7XG4gICAgICB0aGlzLmNvbnRhaW5lci50b2dnbGVDbGFzcygnY2hvc2VuLWRpc2FibGVkJywgdGhpcy5pc19kaXNhYmxlZCk7XG4gICAgICB0aGlzLnNlYXJjaF9maWVsZFswXS5kaXNhYmxlZCA9IHRoaXMuaXNfZGlzYWJsZWQ7XG4gICAgICBpZiAoIXRoaXMuaXNfbXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZF9pdGVtLm9mZignZm9jdXMuY2hvc2VuJywgdGhpcy5hY3RpdmF0ZV9maWVsZCk7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5pc19kaXNhYmxlZCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jbG9zZV9maWVsZCgpO1xuICAgICAgfSBlbHNlIGlmICghdGhpcy5pc19tdWx0aXBsZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZF9pdGVtLm9uKCdmb2N1cy5jaG9zZW4nLCB0aGlzLmFjdGl2YXRlX2ZpZWxkKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgQ2hvc2VuLnByb3RvdHlwZS5jb250YWluZXJfbW91c2Vkb3duID0gZnVuY3Rpb24oZXZ0KSB7XG4gICAgICB2YXIgcmVmO1xuICAgICAgaWYgKHRoaXMuaXNfZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKGV2dCAmJiAoKHJlZiA9IGV2dC50eXBlKSA9PT0gJ21vdXNlZG93bicgfHwgcmVmID09PSAndG91Y2hzdGFydCcpICYmICF0aGlzLnJlc3VsdHNfc2hvd2luZykge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIH1cbiAgICAgIGlmICghKChldnQgIT0gbnVsbCkgJiYgKCQoZXZ0LnRhcmdldCkpLmhhc0NsYXNzKFwic2VhcmNoLWNob2ljZS1jbG9zZVwiKSkpIHtcbiAgICAgICAgaWYgKCF0aGlzLmFjdGl2ZV9maWVsZCkge1xuICAgICAgICAgIGlmICh0aGlzLmlzX211bHRpcGxlKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaF9maWVsZC52YWwoXCJcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgICQodGhpcy5jb250YWluZXJbMF0ub3duZXJEb2N1bWVudCkub24oJ2NsaWNrLmNob3NlbicsIHRoaXMuY2xpY2tfdGVzdF9hY3Rpb24pO1xuICAgICAgICAgIHRoaXMucmVzdWx0c19zaG93KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNfbXVsdGlwbGUgJiYgZXZ0ICYmICgoJChldnQudGFyZ2V0KVswXSA9PT0gdGhpcy5zZWxlY3RlZF9pdGVtWzBdKSB8fCAkKGV2dC50YXJnZXQpLnBhcmVudHMoXCJhLmNob3Nlbi1zaW5nbGVcIikubGVuZ3RoKSkge1xuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIHRoaXMucmVzdWx0c190b2dnbGUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5hY3RpdmF0ZV9maWVsZCgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLmNvbnRhaW5lcl9tb3VzZXVwID0gZnVuY3Rpb24oZXZ0KSB7XG4gICAgICBpZiAoZXZ0LnRhcmdldC5ub2RlTmFtZSA9PT0gXCJBQkJSXCIgJiYgIXRoaXMuaXNfZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0c19yZXNldChldnQpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLnNlYXJjaF9yZXN1bHRzX21vdXNld2hlZWwgPSBmdW5jdGlvbihldnQpIHtcbiAgICAgIHZhciBkZWx0YTtcbiAgICAgIGlmIChldnQub3JpZ2luYWxFdmVudCkge1xuICAgICAgICBkZWx0YSA9IGV2dC5vcmlnaW5hbEV2ZW50LmRlbHRhWSB8fCAtZXZ0Lm9yaWdpbmFsRXZlbnQud2hlZWxEZWx0YSB8fCBldnQub3JpZ2luYWxFdmVudC5kZXRhaWw7XG4gICAgICB9XG4gICAgICBpZiAoZGVsdGEgIT0gbnVsbCkge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKGV2dC50eXBlID09PSAnRE9NTW91c2VTY3JvbGwnKSB7XG4gICAgICAgICAgZGVsdGEgPSBkZWx0YSAqIDQwO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaF9yZXN1bHRzLnNjcm9sbFRvcChkZWx0YSArIHRoaXMuc2VhcmNoX3Jlc3VsdHMuc2Nyb2xsVG9wKCkpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLmJsdXJfdGVzdCA9IGZ1bmN0aW9uKGV2dCkge1xuICAgICAgaWYgKCF0aGlzLmFjdGl2ZV9maWVsZCAmJiB0aGlzLmNvbnRhaW5lci5oYXNDbGFzcyhcImNob3Nlbi1jb250YWluZXItYW
2N0aXZlXCIpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsb3NlX2ZpZWxkKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIENob3Nlbi5wcm90b3R5cGUuY2xvc2VfZmllbGQgPSBmdW5jdGlvbigpIHtcbiAgICAgICQodGhpcy5jb250YWluZXJbMF0ub3duZXJEb2N1bWVudCkub2ZmKFwiY2xpY2suY2hvc2VuXCIsIHRoaXMuY2xpY2tfdGVzdF9hY3Rpb24pO1xuICAgICAgdGhpcy5hY3RpdmVfZmllbGQgPSBmYWxzZTtcbiAgICAgIHRoaXMucmVzdWx0c19oaWRlKCk7XG4gICAgICB0aGlzLmNvbnRhaW5lci5yZW1vdmVDbGFzcyhcImNob3Nlbi1jb250YWluZXItYWN0aXZlXCIpO1xuICAgICAgdGhpcy5jbGVhcl9iYWNrc3Ryb2tlKCk7XG4gICAgICB0aGlzLnNob3dfc2VhcmNoX2ZpZWxkX2RlZmF1bHQoKTtcbiAgICAgIHRoaXMuc2VhcmNoX2ZpZWxkX3NjYWxlKCk7XG4gICAgICByZXR1cm4gdGhpcy5zZWFyY2hfZmllbGQuYmx1cigpO1xuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLmFjdGl2YXRlX2ZpZWxkID0gZnVuY3Rpb24oKSB7XG4gICAgICBpZiAodGhpcy5pc19kaXNhYmxlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmNvbnRhaW5lci5hZGRDbGFzcyhcImNob3Nlbi1jb250YWluZXItYWN0aXZlXCIpO1xuICAgICAgdGhpcy5hY3RpdmVfZmllbGQgPSB0cnVlO1xuICAgICAgdGhpcy5zZWFyY2hfZmllbGQudmFsKHRoaXMuc2VhcmNoX2ZpZWxkLnZhbCgpKTtcbiAgICAgIHJldHVybiB0aGlzLnNlYXJjaF9maWVsZC5mb2N1cygpO1xuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLnRlc3RfYWN0aXZlX2NsaWNrID0gZnVuY3Rpb24oZXZ0KSB7XG4gICAgICB2Y
2XIgYWN0aXZlX2NvbnRhaW5lcjtcbiAgICAgIGFjdGl2ZV9jb250YWluZXIgPSAkKGV2dC50YXJnZXQpLmNsb3Nlc3QoJy5jaG9zZW4tY29udGFpbmVyJyk7XG4gICAgICBpZiAoYWN0aXZlX2NvbnRhaW5lci5sZW5ndGggJiYgdGhpcy5jb250YWluZXJbMF0gPT09IGFjdGl2ZV9jb250YWluZXJbMF0pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlX2ZpZWxkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNsb3NlX2ZpZWxkKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIENob3Nlbi5wcm90b3R5cGUucmVzdWx0c19idWlsZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5wYXJzaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRfb3B0aW9uX2NvdW50ID0gbnVsbDtcbiAgICAgIHRoaXMucmVzdWx0c19kYXRhID0gU2VsZWN0UGFyc2VyLnNlbGVjdF90b19hcnJheSh0aGlzLmZvcm1fZmllbGQpO1xuICAgICAgaWYgKHRoaXMuaXNfbXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hfY2hvaWNlcy5maW5kKFwibGkuc2VhcmNoLWNob2ljZVwiKS5yZW1vdmUoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2luZ2xlX3NldF9zZWxlY3RlZF90ZXh0KCk7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVfc2VhcmNoIHx8IHRoaXMuZm9ybV9maWVsZC5vcHRpb25zLmxlbmd0aCA8PSB0aGlzLmRpc2FibGVfc2VhcmNoX3RocmVzaG9sZCkge1xuICAgICAgICAgIHRoaXMuc2VhcmNoX2ZpZWxkWzBdLnJlYWRPbmx5ID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLmNvbnRhaW5lci5hZGRDbGFzcyhcImNob3Nlbi1jb250YWluZXItc2luZ2xlLW5vc2VhcmNoXCIpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2VhcmNoX2ZpZWxkWzBdLnJlYWRPbmx5ID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5jb250YWluZXIucmVtb3ZlQ2xhc3MoXCJjaG9zZW4tY29udGFpbmVyLXNpbmdsZS1ub3NlYXJjaFwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy51cGRhdGVfcmVzdWx0c19jb250ZW50KHRoaXMucmVzdWx0c19vcHRpb25fYnVpbGQoe1xuICAgICAgICBmaXJzdDogdHJ1ZVxuICAgICAgfSkpO1xuICAgICAgdGhpcy5zZWFyY2hfZmllbGRfZGlzYWJsZWQoKTtcbiAgICAgIHRoaXMuc2hvd19zZWFyY2hfZmllbGRfZGVmYXVsdCgpO1xuICAgICAgdGhpcy5zZWFyY2hfZmllbGRfc2NhbGUoKTtcbiAgICAgIHJldHVybiB0aGlzLnBhcnNpbmcgPSBmYWxzZTtcbiAgICB9O1xuXG4gICAgQ2hvc2VuLnByb3RvdHlwZS5yZXN1bHRfZG9faGlnaGxpZ2h0ID0gZnVuY3Rpb24oZWwpIHtcbiAgICAgIHZhciBoaWdoX2JvdHRvbSwgaGlnaF90b3AsIG1heEhlaWdodCwgdmlzaWJsZV9ib3R0b20sIHZpc2libGVfdG9wO1xuICAgICAgaWYgKGVsLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnJlc3VsdF9jbGVhcl9oaWdobGlnaHQoKTtcbiAgICAgICAgdGhpcy5yZXN1bHRfaGlnaGxpZ2h0ID0gZWw7XG4gICAgICAgIHRoaXMucmVzdWx0X2hpZ2hsaWdodC5hZGRDbGFzcyhcImhpZ2hsaWdodGVkXCIpO1xuICAgICAgICBtYXhIZWlnaHQgPSBwYXJzZUludCh0aGlzLnNlYXJjaF9yZXN1bHRzLmNzcyhcIm1heEhlaWdodFwiKSwgMTApO1xuICAgICAgICB2aXNpYmxlX3RvcCA9IHRoaXMuc2VhcmNoX3Jlc3VsdHMuc2Nyb2xsVG9wKCk7XG4gICAgICAgIHZpc2libGVfYm90dG9tID0gbWF4SGVpZ2h0ICsgdmlzaWJsZV90b3A7XG4gICAgICAgIGhpZ2hfdG9wID0gdGhpcy5yZXN1bHRfaGlnaGxpZ2h0LnBvc2l0aW9uKCkudG9wICsgdGhpcy5zZWFyY2hfcmVzdWx0cy5zY3JvbGxUb3AoKTtcbiAgICAgICAgaGlnaF9ib3R0b20gPSBoaWdoX3RvcCArIHRoaXMucmVzdWx0X2hpZ2hsaWdodC5vdXRlckhlaWdodCgpO1xuICAgICAgICBpZiAoaGlnaF9ib3R0b20gPj0gdmlzaWJsZV9ib3R0b20pIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hfcmVzdWx0cy5zY3JvbGxUb3AoKGhpZ2hfYm90dG9tIC0gbWF4SGVpZ2h0KSA+IDAgPyBoaWdoX2JvdHRvbSAtIG1heEhlaWdodCA6IDApO1xuICAgICAgICB9IGVsc2UgaWYgKGhpZ2hfdG9wIDwgdmlzaWJsZV90b3ApIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hfcmVzdWx0cy5zY3JvbGxUb3AoaGlnaF90b3ApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAgIENob3Nlbi5wcm90b3R5cGUucmVzdWx0X2NsZWFyX2hpZ2hsaWdodCA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHRoaXMucmVzdWx0X2hpZ2hsaWdodCkge1xuICAgICAgICB0aGlzLnJlc3VsdF9oaWdobGlnaHQucmVtb3ZlQ2xhc3MoXCJoaWdobGlnaHRlZFwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnJlc3VsdF9oaWdobGlnaHQgPSBudWxsO1xuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLnJlc3VsdHNfc2hvdyA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKHRoaXMuaXNfbXVsdGlwbGUgJiYgdGhpcy5tYXhfc2VsZWN0ZWRfb3B0aW9ucyA8PSB0aGlzLmNob2ljZXNfY291bnQoKSkge1xuICAgICAgICB0aGlzLmZvcm1fZmllbGRfanEudHJpZ2dlcihcImNob3NlbjptYXhzZWxlY3RlZFwiLCB7XG4gICAgICAgICAgY2hvc2VuOiB0aGlzXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICB0aGlzLmNvbnRhaW5lci5hZGRDbGFzcyhcImNob3Nlbi13aXRoLWRyb3BcIik7XG4gICAgICB0aGlzLnJlc3VsdHNfc2hvd2luZyA9IHRydWU7XG4gICAgICB0aGlzLnNlYXJjaF9maWVsZC5mb2N1cygpO1xuICAgICAgdGhpcy5zZWFyY2hfZmllbGQudmFsKHRoaXMuZ2V0X3NlYXJjaF9maWVsZF92YWx1ZSgpKTtcbiAgICAgIHRoaXMud2lubm93X3Jlc3VsdHMoKTtcbiAgICAgIHJldHVybiB0aGlzLmZvcm1fZmllbGRfanEudHJpZ2dlcihcImNob3NlbjpzaG93aW5nX2Ryb3Bkb3duXCIsIHtcbiAgICAgICAgY2hvc2VuOiB0aGlzXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgQ2hvc2VuLnByb3RvdHlwZS51cGRhdGVfcmVzdWx0c19jb250ZW50ID0gZnVuY3Rpb24oY29udGVudCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoX3Jlc3VsdHMuaHRtbChjb250ZW50KTtcbiAgICB9O1xuXG4gICAgQ2hvc2VuLnByb3RvdHlwZS5yZXN1bHRzX2hpZGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIGlmICh0aGlzLnJlc3VsdHNfc2hvd2luZykge1xuICAgICAgICB0aGlzLnJlc3VsdF9jbGVhcl9oaWdobGlnaHQoKTtcbiAgICAgICAgdGhpcy5jb250YWluZXIucmVtb3ZlQ2xhc3MoXCJjaG9zZW4td2l0aC1kcm9wXCIpO1xuICAgICAgICB0aGlzLmZvcm1fZmllbGRfanEudHJpZ2dlcihcImNob3NlbjpoaWRpbmdfZHJvcGRvd25cIiwge1xuICAgICAgICAgIGNob3NlbjogdGhpc1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybi
2B0aGlzLnJlc3VsdHNfc2hvd2luZyA9IGZhbHNlO1xuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLnNldF90YWJfaW5kZXggPSBmdW5jdGlvbihlbCkge1xuICAgICAgdmFyIHRpO1xuICAgICAgaWYgKHRoaXMuZm9ybV9maWVsZC50YWJJbmRleCkge1xuICAgICAgICB0aSA9IHRoaXMuZm9ybV9maWVsZC50YWJJbmRleDtcbiAgICAgICAgdGhpcy5mb3JtX2ZpZWxkLnRhYkluZGV4ID0gLTE7XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaF9maWVsZFswXS50YWJJbmRleCA9IHRpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLnNldF9sYWJlbF9iZWhhdmlvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5mb3JtX2ZpZWxkX2xhYmVsID0gdGhpcy5mb3JtX2ZpZWxkX2pxLnBhcmVudHMoXCJsYWJlbFwiKTtcbiAgICAgIGlmICghdGhpcy5mb3JtX2ZpZWxkX2xhYmVsLmxlbmd0aCAmJiB0aGlzLmZvcm1fZmllbGQuaWQubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuZm9ybV9maWVsZF9sYWJlbCA9ICQoXCJsYWJlbFtmb3I9J1wiICsgdGhpcy5mb3JtX2ZpZWxkLmlkICsgXCInXVwiKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZvcm1fZmllbGRfbGFiZWwubGVuZ3RoID4gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtX2ZpZWxkX2xhYmVsLm9uKCdjbGljay5jaG9zZW4nLCB0aGlzLmxhYmVsX2NsaWNrX2hhbmRsZXIpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLnNob3dfc2VhcmNoX2ZpZWxkX2RlZmF1bHQgPSBmdW5jdGlvbigpIHtcbiAgICAgIGlmICh0aGlzLmlzX211bHRpcGxlICYmIHRoaXMuY2hvaWNlc19jb3VudCgpIDwgMSAmJiAhdGhpcy5hY3RpdmVfZmllbGQpIHtcbiAgICAgICAgdGhpcy5zZWFyY2hfZmllbGQudmFsKHRoaXMuZGVmYXVsdF90ZXh0KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoX2ZpZWxkLmFkZENsYXNzKFwiZGVmYXVsdFwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2VhcmNoX2ZpZWxkLnZhbChcIlwiKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoX2ZpZWxkLnJlbW92ZUNsYXNzKFwiZGVmYXVsdFwiKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgQ2hvc2VuLnByb3RvdHlwZS5zZWFyY2hfcmVzdWx0c19tb3VzZXVwID0gZnVuY3Rpb24oZXZ0KSB7XG4gICAgICB2Y
2XIgdGFyZ2V0O1xuICAgICAgdGFyZ2V0ID0gJChldnQudGFyZ2V0KS5oYXNDbGFzcyhcImFjdGl2ZS1yZXN1bHRcIikgPyAkKGV2dC50YXJnZXQpIDogJChldnQudGFyZ2V0KS5wYXJlbnRzKFwiLmFjdGl2ZS1yZXN1bHRcIikuZmlyc3QoKTtcbiAgICAgIGlmICh0YXJnZXQubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMucmVzdWx0X2hpZ2hsaWdodCA9IHRhcmdldDtcbiAgICAgICAgdGhpcy5yZXN1bHRfc2VsZWN0KGV2dCk7XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaF9maWVsZC5mb2N1cygpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLnNlYXJjaF9yZXN1bHRzX21vdXNlb3ZlciA9IGZ1bmN0aW9uKGV2dCkge1xuICAgICAgdmFyIHRhcmdldDtcbiAgICAgIHRhcmdldCA9ICQoZXZ0LnRhcmdldCkuaGFzQ2xhc3MoXCJhY3RpdmUtcmVzdWx0XCIpID8gJChldnQudGFyZ2V0KSA6ICQoZXZ0LnRhcmdldCkucGFyZW50cyhcIi5hY3RpdmUtcmVzdWx0XCIpLmZpcnN0KCk7XG4gICAgICBpZiAodGFyZ2V0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc3VsdF9kb19oaWdobGlnaHQodGFyZ2V0KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgQ2hvc2VuLnByb3RvdHlwZS5zZWFyY2hfcmVzdWx0c19tb3VzZW91dCA9IGZ1bmN0aW9uKGV2dCkge1xuICAgICAgaWYgKCQoZXZ0LnRhcmdldCkuaGFzQ2xhc3MoXCJhY3RpdmUtcmVzdWx0XCIpIHx8ICQoZXZ0LnRhcmdldCkucGFyZW50cygnLmFjdGl2ZS1yZXN1bHQnKS5maXJzdCgpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc3VsdF9jbGVhcl9oaWdobGlnaHQoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgQ2hvc2VuLnByb3RvdHlwZS5jaG9pY2VfYnVpbGQgPSBmdW5jdGlvbihpdGVtKSB7XG4gICAgICB2Y
2XIgY2hvaWNlLCBjbG9zZV9saW5rO1xuICAgICAgY2hvaWNlID0gJCgnPGxpIC8+Jywge1xuICAgICAgICBcImNsYXNzXCI6IFwic2VhcmNoLWNob2ljZVwiXG4gICAgICB9KS5odG1sKFwiPHNwYW4+XCIgKyAodGhpcy5jaG9pY2VfbGFiZWwoaXRlbSkpICsgXCI8L3NwYW4+XCIpO1xuICAgICAgaWYgKGl0ZW0uZGlzYWJsZWQpIHtcbiAgICAgICAgY2hvaWNlLmFkZENsYXNzKCdzZWFyY2gtY2hvaWNlLWRpc2FibGVkJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjbG9zZV9saW5rID0gJCgnPGEgLz4nLCB7XG4gICAgICAgICAgXCJjbGFzc1wiOiAnc2VhcmNoLWNob2ljZS1jbG9zZScsXG4gICAgICAgICAgJ2RhdGEtb3B0aW9uLWFycmF5LWluZGV4JzogaXRlbS5hcnJheV9pbmRleFxuICAgICAgICB9KTtcbiAgICAgICAgY2xvc2VfbGluay5vbignY2xpY2suY2hvc2VuJywgKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGV2dCkge1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzLmNob2ljZV9kZXN0cm95X2xpbmtfY2xpY2soZXZ0KTtcbiAgICAgICAgICB9O1xuICAgICAgICB9KSh0aGlzKSk7XG4gICAgICAgIGNob2ljZS5hcHBlbmQoY2xvc2VfbGluayk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5zZWFyY2hfY29udGFpbmVyLmJlZm9yZShjaG9pY2UpO1xuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLmNob2ljZV9kZXN0cm95X2xpbmtfY2xpY2sgPSBmdW5jdGlvbihldnQpIHtcbiAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgaWYgKCF0aGlzLmlzX2Rpc2FibGVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNob2ljZV9kZXN0cm95KCQoZXZ0LnRhcmdldCkpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLmNob2ljZV9kZXN0cm95ID0gZnVuY3Rpb24obGluaykge1xuICAgICAgaWYgKHRoaXMucmVzdWx0X2Rlc2VsZWN0KGxpbmtbMF0uZ2V0QXR0cmlidXRlKFwiZGF0YS1vcHRpb24tYXJyYXktaW5kZXhcIikpKSB7XG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZV9maWVsZCkge1xuICAgICAgICAgIHRoaXMuc2VhcmNoX2ZpZWxkLmZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zaG93X3NlYXJjaF9maWVsZF9kZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaXNfbXVsdGlwbGUgJiYgdGhpcy5jaG9pY2VzX2NvdW50KCkgPiAwICYmIHRoaXMuZ2V0X3NlYXJjaF9maWVsZF92YWx1ZSgpLmxlbmd0aCA8IDEpIHtcbiAgICAgICAgICB0aGlzLnJlc3VsdHNfaGlkZSgpO1xuICAgICAgICB9XG4gICAgICAgIGxpbmsucGFyZW50cygnbGknKS5maXJzdCgpLnJlbW92ZSgpO1xuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hfZmllbGRfc2NhbGUoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgQ2hvc2VuLnByb3RvdHlwZS5yZXN1bHRzX3Jlc2V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLnJlc2V0X3NpbmdsZV9zZWxlY3Rfb3B0aW9ucygpO1xuICAgICAgdGhpcy5mb3JtX2ZpZWxkLm9wdGlvbnNbMF0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5zaW5nbGVfc2V0X3NlbGVjdGVkX3RleHQoKTtcbiAgICAgIHRoaXMuc2hvd19zZWFyY2hfZmllbGRfZGVmYXVsdCgpO1xuICAgICAgdGhpcy5yZXN1bHRzX3Jlc2V0X2NsZWFudXAoKTtcbiAgICAgIHRoaXMudHJpZ2dlcl9mb3JtX2ZpZWxkX2NoYW5nZSgpO1xuICAgICAgaWYgKHRoaXMuYWN0aXZlX2ZpZWxkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc3VsdHNfaGlkZSgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLnJlc3VsdHNfcmVzZXRfY2xlYW51cCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5jdXJyZW50X3NlbGVjdGVkSW5kZXggPSB0aGlzLmZvcm1fZmllbGQuc2VsZWN0ZWRJbmRleDtcbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkX2l0ZW0uZmluZChcImFiYnJcIikucmVtb3ZlKCk7XG4gICAgfTtcblxuICAgIENob3Nlbi5wcm90b3R5cGUucmVzdWx0X3NlbGVjdCA9IGZ1bmN0aW9uKGV2dCkge1xuICAgICAgdmFyIGhpZ2gsIGl0ZW07XG4gICAgICBpZiAodGhpcy5yZXN1bHRfaGlnaGxpZ2h0KSB7XG4gICAgICAgIGhpZ2ggPSB0aGlzLnJlc3VsdF9oaWdobGlnaHQ7XG4gICAgICAgIHRoaXMucmVzdWx0X2NsZWFyX2hpZ2hsaWdodCgpO1xuICAgICAgICBpZiAodGhpcy5pc19tdWx0aXBsZSAmJiB0aGlzLm1heF9zZWxlY3RlZF9vcHRpb25zIDw9IHRoaXMuY2hvaWNlc19jb3VudCgpKSB7XG4gICAgICAgICAgdGhpcy5mb3JtX2ZpZWxkX2pxLnRyaWdnZXIoXCJjaG9zZW46bWF4c2VsZWN0ZWRcIiwge1xuICAgICAgICAgICAgY2hvc2VuOiB0aGlzXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzX211bHRpcGxlKSB7XG4gICAgICAgICAgaGlnaC5yZW1vdmVDbGFzcyhcImFjdGl2ZS1yZXN1bHRcIik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5yZXNldF9zaW5nbGVfc2VsZWN0X29wdGlvbnMoKTtcbiAgICAgICAgfVxuICAgICAgICBoaWdoLmFkZENsYXNzKFwicmVzdWx0LXNlbGVjdGVkXCIpO1xuICAgICAgICBpdGVtID0gdGhpcy5yZXN1bHRzX2RhdGFbaGlnaFswXS5nZXRBdHRyaWJ1dGUoXCJkYXRhLW9wdGlvbi1hcnJheS1pbmRleFwiKV07XG4gICAgICAgIGl0ZW0uc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmZvcm1fZmllbGQub3B0aW9uc1tpdGVtLm9wdGlvbnNfaW5kZXhdLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZF9vcHRpb25fY291bnQgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5pc19tdWx0aXBsZSkge1xuICAgICAgICAgIHRoaXMuY2hvaWNlX2J1aWxkKGl0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc2luZ2xlX3NldF9zZWxlY3RlZF90ZXh0KHRoaXMuY2hvaWNlX2xhYmVsKGl0ZW0pKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5pc19tdWx0aXBsZSAmJiAoIXRoaXMuaGlkZV9yZXN1bHRzX29uX3NlbGVjdCB8fCAoZXZ0Lm1ldGFLZXkgfHwgZXZ0LmN0cmxLZXkpKSkge1xuICAgICAgICAgIGlmIChldnQubWV0YUtleSB8fCBldnQuY3RybEtleSkge1xuICAgICAgICAgICAgdGhpcy53aW5ub3dfcmVzdWx0cyh7XG4gICAgICAgICAgICAgI
2HNraXBfaGlnaGxpZ2h0OiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hfZmllbGQudmFsKFwiXCIpO1xuICAgICAgICAgICAgdGhpcy53aW5ub3dfcmVzdWx0cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnJlc3VsdHNfaGlkZSgpO1xuICAgICAgICAgIHRoaXMuc2hvd19zZWFyY2hfZmllbGRfZGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlzX211bHRpcGxlIHx8IHRoaXMuZm9ybV9maWVsZC5zZWxlY3RlZEluZGV4ICE9PSB0aGlzLmN1cnJlbnRfc2VsZWN0ZWRJbmRleCkge1xuICAgICAgICAgIHRoaXMudHJpZ2dlcl9mb3JtX2ZpZWxkX2NoYW5nZSh7XG4gICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5mb3JtX2ZpZWxkLm9wdGlvbnNbaXRlbS5vcHRpb25zX2luZGV4XS52YWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuY3VycmVudF9zZWxlY3RlZEluZGV4ID0gdGhpcy5mb3JtX2ZpZWxkLnNlbGVjdGVkSW5kZXg7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5zZWFyY2hfZmllbGRfc2NhbGUoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgQ2hvc2VuLnByb3RvdHlwZS5zaW5nbGVfc2V0X3NlbGVjdGVkX3RleHQgPSBmdW5jdGlvbih0ZXh0KSB7XG4gICAgICBpZiAodGV4dCA9PSBudWxsKSB7XG4gICAgICAgIHRleHQgPSB0aGlzLmRlZmF1bHRfdGV4dDtcbiAgICAgIH1cbiAgICAgIGlmICh0ZXh0ID09PSB0aGlzLmRlZmF1bHRfdGV4dCkge1xuICAgICAgICB0aGlzLnNlbGVjdGVkX2l0ZW0uYWRkQ2xhc3MoXCJjaG9zZW4tZGVmYXVsdFwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2luZ2xlX2Rlc2VsZWN0X2NvbnRyb2xfYnVpbGQoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZF9pdGVtLnJlbW92ZUNsYXNzKFwiY2hvc2VuLWRlZmF1bHRcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZF9pdGVtLmZpbmQoXCJzcGFuXCIpLmh0bWwodGV4dCk7XG4gICAgfTtcblxuICAgIENob3Nlbi5wcm90b3R5cGUucmVzdWx0X2Rlc2VsZWN0ID0gZnVuY3Rpb24ocG9zKSB7XG4gICAgICB2Y
2XIgcmVzdWx0X2RhdGE7XG4gICAgICByZXN1bHRfZGF0YSA9IHRoaXMucmVzdWx0c19kYXRhW3Bvc107XG4gICAgICBpZiAoIXRoaXMuZm9ybV9maWVsZC5vcHRpb25zW3Jlc3VsdF9kYXRhLm9wdGlvbnNfaW5kZXhdLmRpc2FibGVkKSB7XG4gICAgICAgIHJlc3VsdF9kYXRhLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZm9ybV9maWVsZC5vcHRpb25zW3Jlc3VsdF9kYXRhLm9wdGlvbnNfaW5kZXhdLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRfb3B0aW9uX2NvdW50ID0gbnVsbDtcbiAgICAgICAgdGhpcy5yZXN1bHRfY2xlYXJfaGlnaGxpZ2h0KCk7XG4gICAgICAgIGlmICh0aGlzLnJlc3VsdHNfc2hvd2luZykge1xuICAgICAgICAgIHRoaXMud2lubm93X3Jlc3VsdHMoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnRyaWdnZXJfZm9ybV9maWVsZF9jaGFuZ2Uoe1xuICAgICAgICAgIGRlc2VsZWN0ZWQ6IHRoaXMuZm9ybV9maWVsZC5vcHRpb25zW3Jlc3VsdF9kYXRhLm9wdGlvbnNfaW5kZXhdLnZhbHVlXG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnNlYXJjaF9maWVsZF9zY2FsZSgpO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgQ2hvc2VuLnByb3RvdHlwZS5zaW5nbGVfZGVzZWxlY3RfY29udHJvbF9idWlsZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCF0aGlzLmFsbG93X3NpbmdsZV9kZXNlbGVjdCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuc2VsZWN0ZWRfaXRlbS5maW5kKFwiYWJiclwiKS5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZF9pdGVtLmZpbmQoXCJzcGFuXCIpLmZpcnN0KCkuYWZ0ZXIoXCI8YWJiciBjbGFzcz1cXFwic2VhcmNoLWNob2ljZS1jbG9zZVxcXCI+PC9hYmJyPlwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkX2l0ZW0uYWRkQ2xhc3MoXCJjaG9zZW4tc2luZ2xlLXdpdGgtZGVzZWxlY3RcIik7XG4gICAgfTtcblxuICAgIENob3Nlbi5wcm90b3R5cGUuZ2V0X3NlYXJjaF9maWVsZF92YWx1ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoX2ZpZWxkLnZhbCgpO1xuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLmdldF9zZWFyY2hfdGV4dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuICQudHJpbSh0aGlzLmdldF9zZWFyY2hfZmllbGRfdmFsdWUoKSk7XG4gICAgfTtcblxuICAgIENob3Nlbi5wcm90b3R5cGUuZXNjYXBlX2h0bWwgPSBmdW5jdGlvbih0ZXh0KSB7XG4gICAgICByZXR1cm4gJCgnPGRpdi8+JykudGV4dCh0ZXh0KS5odG1sKCk7XG4gICAgfTtcblxuICAgIENob3Nlbi5wcm90b3R5cGUud2lubm93X3Jlc3VsdHNfc2V0X2hpZ2hsaWdodCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGRvX2hpZ2gsIHNlbGVjdGVkX3Jlc3VsdHM7XG4gICAgICBzZWxlY3RlZF9yZXN1bHRzID0gIXRoaXMuaXNfbXVsdGlwbGUgPyB0aGlzLnNlYXJjaF9yZXN1bHRzLmZpbmQoXCIucmVzdWx0LXNlbGVjdGVkLmFjdGl2ZS1yZXN1bHRcIikgOiBbXTtcbiAgICAgIGRvX2hpZ2ggPSBzZWxlY3RlZF9yZXN1bHRzLmxlbmd0aCA/IHNlbGVjdGVkX3Jlc3VsdHMuZmlyc3QoKSA6IHRoaXMuc2VhcmNoX3Jlc3VsdHMuZmluZChcIi5hY3RpdmUtcmVzdWx0XCIpLmZpcnN0KCk7XG4gICAgICBpZiAoZG9faGlnaCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc3VsdF9kb19oaWdobGlnaHQoZG9faGlnaCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIENob3Nlbi5wcm90b3R5cGUubm9fcmVzdWx0cyA9IGZ1bmN0aW9uKHRlcm1zKSB7XG4gICAgICB2Y
2XIgbm9fcmVzdWx0c19odG1sO1xuICAgICAgbm9fcmVzdWx0c19odG1sID0gdGhpcy5nZXRfbm9fcmVzdWx0c19odG1sKHRlcm1zKTtcbiAgICAgIHRoaXMuc2VhcmNoX3Jlc3VsdHMuYXBwZW5kKG5vX3Jlc3VsdHNfaHRtbCk7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtX2ZpZWxkX2pxLnRyaWdnZXIoXCJjaG9zZW46bm9fcmVzdWx0c1wiLCB7XG4gICAgICAgIGNob3NlbjogdGhpc1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIENob3Nlbi5wcm90b3R5cGUubm9fcmVzdWx0c19jbGVhciA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoX3Jlc3VsdHMuZmluZChcIi5uby1yZXN1bHRzXCIpLnJlbW92ZSgpO1xuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLmtleWRvd25fYXJyb3cgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBuZXh0X3NpYjtcbiAgICAgIGlmICh0aGlzLnJlc3VsdHNfc2hvd2luZyAmJiB0aGlzLnJlc3VsdF9oaWdobGlnaHQpIHtcbiAgICAgICAgbmV4dF9zaWIgPSB0aGlzLnJlc3VsdF9oaWdobGlnaHQubmV4dEFsbChcImxpLmFjdGl2ZS1yZXN1bHRcIikuZmlyc3QoKTtcbiAgICAgICAgaWYgKG5leHRfc2liKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMucmVzdWx0X2RvX2hpZ2hsaWdodChuZXh0X3NpYik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc3VsdHNfc2hvdygpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLmtleXVwX2Fycm93ID0gZnVuY3Rpb24oKSB7XG4gICAgICB2Y
2XIgcHJldl9zaWJzO1xuICAgICAgaWYgKCF0aGlzLnJlc3VsdHNfc2hvd2luZyAmJiAhdGhpcy5pc19tdWx0aXBsZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHRzX3Nob3coKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5yZXN1bHRfaGlnaGxpZ2h0KSB7XG4gICAgICAgIHByZXZfc2licyA9IHRoaXMucmVzdWx0X2hpZ2hsaWdodC5wcmV2QWxsKFwibGkuYWN0aXZlLXJlc3VsdFwiKTtcbiAgICAgICAgaWYgKHByZXZfc2licy5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHRfZG9faGlnaGxpZ2h0KHByZXZfc2licy5maXJzdCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5jaG9pY2VzX2NvdW50KCkgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnJlc3VsdHNfaGlkZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhpcy5yZXN1bHRfY2xlYXJfaGlnaGxpZ2h0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgQ2hvc2VuLnByb3RvdHlwZS5rZXlkb3duX2JhY2tzdHJva2UgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBuZXh0X2F2YWlsYWJsZV9kZXN0cm95O1xuICAgICAgaWYgKHRoaXMucGVuZGluZ19iYWNrc3Ryb2tlKSB7XG4gICAgICAgIHRoaXMuY2hvaWNlX2Rlc3Ryb3kodGhpcy5wZW5kaW5nX2JhY2tzdHJva2UuZmluZChcImFcIikuZmlyc3QoKSk7XG4gICAgICAgIHJldHVybiB0aGlzLmNsZWFyX2JhY2tzdHJva2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHRfYXZhaWxhYmxlX2Rlc3Ryb3kgPSB0aGlzLnNlYXJjaF9jb250YWluZXIuc2libGluZ3MoXCJsaS5zZWFyY2gtY2hvaWNlXCIpLmxhc3QoKTtcbiAgICAgICAgaWYgKG5leHRfYXZhaWxhYmxlX2Rlc3Ryb3kubGVuZ3RoICYmICFuZXh0X2F2YWlsYWJsZV9kZXN0cm95Lmhhc0NsYXNzKFwic2VhcmNoLWNob2ljZS1kaXNhYmxlZFwiKSkge1xuICAgICAgICAgIHRoaXMucGVuZGluZ19iYWNrc3Ryb2tlID0gbmV4dF9hdmFpbGFibGVfZGVzdHJveTtcbiAgICAgICAgICBpZiAodGhpcy5zaW5nbGVfYmFja3N0cm9rZV9kZWxldGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmtleWRvd25fYmFja3N0cm9rZSgpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5wZW5kaW5nX2JhY2tzdHJva2UuYWRkQ2xhc3MoXCJzZWFyY2gtY2hvaWNlLWZvY3VzXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLmNsZWFyX2JhY2tzdHJva2UgPSBmdW5jdGlvbigpIHtcbiAgICAgIGlmICh0aGlzLnBlbmRpbmdfYmFja3N0cm9rZSkge1xuICAgICAgICB0aGlzLnBlbmRpbmdfYmFja3N0cm9rZS5yZW1vdmVDbGFzcyhcInNlYXJjaC1jaG9pY2UtZm9jdXNcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5wZW5kaW5nX2JhY2tzdHJva2UgPSBudWxsO1xuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLnNlYXJjaF9maWVsZF9zY2FsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGRpdiwgaSwgbGVuLCBzdHlsZSwgc3R5bGVfYmxvY2ssIHN0eWxlcywgd2lkdGg7XG4gICAgICBpZiAoIXRoaXMuaXNfbXVsdGlwbGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgc3R5bGVfYmxvY2sgPSB7XG4gICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICBsZWZ0OiAnLTEwMDBweCcsXG4gICAgICAgIHRvcDogJy0xMDAwcHgnLFxuICAgICAgICBkaXNwbGF5OiAnbm9uZScsXG4gICAgICAgIHdoaXRlU3BhY2U6ICdwcmUnXG4gICAgICB9O1xuICAgICAgc3R5bGVzID0gWydmb250U2l6ZScsICdmb250U3R5bGUnLCAnZm9udFdlaWdodCcsICdmb250RmFtaWx5JywgJ2xpbmVIZWlnaHQnLCAndGV4dFRyYW5zZm9ybScsICdsZXR0ZXJTcGFjaW5nJ107XG4gICAgICBmb3IgKGkgPSAwLCBsZW4gPSBzdHlsZXMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgc3R5bGUgPSBzdHlsZXNbaV07XG4gICAgICAgIHN0eWxlX2Jsb2NrW3N0eWxlXSA9IHRoaXMuc2VhcmNoX2ZpZWxkLmNzcyhzdHlsZSk7XG4gICAgICB9XG4gICAgICBkaXYgPSAkKCc8ZGl2IC8+JykuY3NzKHN0eWxlX2Jsb2NrKTtcbiAgICAgIGRpdi50ZXh0KHRoaXMuZ2V0X3NlYXJjaF9maWVsZF92YWx1ZSgpKTtcbiAgICAgICQoJ2JvZHknKS5hcHBlbmQoZGl2KTtcbiAgICAgIHdpZHRoID0gZGl2LndpZHRoKCkgKyAyNTtcbiAgICAgIGRpdi5yZW1vdmUoKTtcbiAgICAgIGlmICh0aGlzLmNvbnRhaW5lci5pcygnOnZpc2libGUnKSkge1xuICAgICAgICB3aWR0aCA9IE1hdGgubWluKHRoaXMuY29udGFpbmVyLm91dGVyV2lkdGgoKSAtIDEwLCB3aWR0aCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5zZWFyY2hfZmllbGQud2lkdGgod2lkdGgpO1xuICAgIH07XG5cbiAgICBDaG9zZW4ucHJvdG90eXBlLnRyaWdnZXJfZm9ybV9maWVsZF9jaGFuZ2UgPSBmdW5jdGlvbihleHRyYSkge1xuICAgICAgdGhpcy5mb3JtX2ZpZWxkX2pxLnRyaWdnZXIoXCJpbnB1dFwiLCBleHRyYSk7XG4gICAgICByZXR1cm4gdGhpcy5mb3JtX2ZpZWxkX2pxLnRyaWdnZXIoXCJjaGFuZ2VcIiwgZXh0cmEpO1xuICAgIH07XG5cbiAgICByZXR1cm4gQ2hvc2VuO1xuXG4gIH0pKEFic3RyYWN0Q2hvc2VuKTtcblxufSkuY2FsbCh0aGlzKTtcbiIsIi8qIVxuICogaGVhZHJvb20uanMgdjAuMTAuMyAtIEdpdmUgeW91ciBwYWdlIHNvbWUgaGVhZHJvb20uIEhpZGUgeW91ciBoZWFkZXIgdW50aWwgeW91IG5lZWQgaXRcbiAqIENvcHlyaWdodCAoYykgMjAxOSBOaWNrIFdpbGxpYW1zIC0gaHR0cDovL3dpY2t5Lm5pbGxpYS5tcy9oZWFkcm9vbS5qc1xuICogTGljZW5zZTogTUlUXG4gKi9cblxuKGZ1bmN0aW9uIChnbG9iYWwsIGZhY3RvcnkpIHtcbiAgdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnID8gbW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCkgOlxuICB0eX
2Blb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQgPyBkZWZpbmUoZmFjdG9yeSkgOlxuICAoZ2xvYmFsID0gZ2xvYmFsIHx8IHNlbGYsIGdsb2JhbC5IZWFkcm9vbSA9IGZhY3RvcnkoKSk7XG59KHRoaXMsIGZ1bmN0aW9uICgpIHsgJ3VzZSBzdHJpY3QnO1xuXG4gIGZ1bmN0aW9uIGlzQnJvd3NlcigpIHtcbiAgICByZXR1cm4gdHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VkIHRvIGRldGVjdCBicm93c2VyIHN1cHBvcnQgZm9yIGFkZGluZyBhbiBldmVudCBsaXN0ZW5lciB3aXRoIG9wdGlvbnNcbiAgICogQ3JlZGl0OiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvRXZlbnRUYXJnZXQvYWRkRXZlbnRMaXN0ZW5lclxuICAgKi9cbiAgZnVuY3Rpb24gcGFzc2l2ZUV2ZW50c1N1cHBvcnRlZCgpIHtcbiAgICB2YXIgc3VwcG9ydGVkID0gZmFsc2U7XG5cbiAgICB0cnkge1xuICAgICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBnZXR0ZXItcmV0dXJuXG4gICAgICAgIGdldCBwYXNzaXZlKCkge1xuICAgICAgICAgIHN1cHBvcnRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInRlc3RcIiwgb3B0aW9ucywgb3B0aW9ucyk7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRlc3RcIiwgb3B0aW9ucywgb3B0aW9ucyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzdXBwb3J0ZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VwcG9ydGVkO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNTdXBwb3J0ZWQoKSB7XG4gICAgcmV0dXJuICEhKFxuICAgICAgaXNCcm93c2VyKCkgJiZcbiAgICAgIGZ1bmN0aW9uKCkge30uYmluZCAmJlxuICAgICAgXCJjbGFzc0xpc3RcIiBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiZcbiAgICAgIE9iamVjdC5hc3NpZ24gJiZcbiAgICAgIE9iamVjdC5rZXlzICYmXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICApO1xuICB9XG5cbiAgZnVuY3Rpb24gaXNEb2N1bWVudChvYmopIHtcbiAgICByZXR1cm4gb2JqLm5vZGVUeXBlID09PSA5OyAvLyBOb2RlLkRPQ1VNRU5UX05PREUgPT09IDlcbiAgfVxuXG4gIGZ1bmN0aW9uIGlzV2luZG93KG9iaikge1xuICAgIC8vIGBvYmogPT09IHdpbmRvd2Agb3IgYG9iaiBpbnN0YW5jZW9mIFdpbmRvd2AgaXMgbm90IHN1ZmZpY2llbnQsXG4gICAgLy8gYXMgdGhlIG9iaiBtYXkgYmUgdGhlIHdpbmRvdyBvZiBhbiBpZnJhbWUuXG4gICAgcmV0dXJuIG9iaiAmJiBvYmouZG9jdW1lbnQgJiYgaXNEb2N1bWVudChvYmouZG9jdW1lbnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gd2luZG93U2Nyb2xsZXIod2luKSB7XG4gICAgdmFyIGRvYyA9IHdpbi5kb2N1bWVudDtcbiAgICB2YXIgYm9keSA9IGRvYy5ib2R5O1xuICAgIHZhciBodG1sID0gZG9jLmRvY3VtZW50RWxlbWVudDtcblxuICAgIHJldHVybiB7XG4gICAgICAvKipcbiAgICAgICAqIEBzZWUgaHR0cDovL2phbWVzLnBhZG9sc2V5LmNvbS9qYXZhc2NyaXB0L2dldC1kb2N1bWVudC1oZWlnaHQtY3Jvc3MtYnJvd3Nlci9cbiAgICAgICAqIEByZXR1cm4ge051bWJlcn0gdGhlIHNjcm9sbCBoZWlnaHQgb2YgdGhlIGRvY3VtZW50IGluIHBpeGVsc1xuICAgICAgICovXG4gICAgICBzY3JvbGxIZWlnaHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTWF0aC5tYXgoXG4gICAgICAgICAgYm9keS5zY3JvbGxIZWlnaHQsXG4gICAgICAgICAgaHRtbC5zY3JvbGxIZWlnaHQsXG4gICAgICAgICAgYm9keS5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgaHRtbC5vZmZzZXRIZWlnaHQsXG4gICAgICAgICAgYm9keS5jbGllbnRIZWlnaHQsXG4gICAgICAgICAgaHRtbC5jbGllbnRIZWlnaHRcbiAgICAgICAgKTtcbiAgICAgIH0sXG5cbiAgICAgIC8qKlxuICAgICAgICogQHNlZSBodHRwOi8vYW5keWxhbmd0b24uY28udWsvYmxvZy9kZXZlbG9wbWVudC9nZXQtdmlld3BvcnQtc2l6ZS13aWR0aC1hbmQtaGVpZ2h0LWphdmFzY3JpcHRcbiAgICAgICAqIEByZXR1cm4ge051bWJlcn0gdGhlIGhlaWdodCBvZiB0aGUgdmlld3BvcnQgaW4gcGl4ZWxzXG4gICAgICAgKi9cbiAgICAgIGhlaWdodDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB3aW4uaW5uZXJIZWlnaHQgfHwgaHRtbC5jbGllbnRIZWlnaHQgfHwgYm9keS5jbGllbnRIZWlnaHQ7XG4gICAgICB9LFxuXG4gICAgICAvKipcbiAgICAgICAqIEdldHMgdGhlIFkgc2Nyb2xsIHBvc2l0aW9uXG4gICAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IHBpeGVscyB0aGUgcGFnZSBoYXMgc2Nyb2xsZWQgYWxvbmcgdGhlIFktYXhpc1xuICAgICAgICovXG4gICAgICBzY3JvbGxZOiBmdW5jdGlvbigpIHtcbiAgICAgICAgaWYgKHdpbi5wYWdlWU9mZnNldCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgcmV0dXJuIHdpbi5wYWdlWU9mZnNldDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoaHRtbCB8fCBib2R5LnBhcmVudE5vZGUgfHwgYm9keSkuc2Nyb2xsVG9wO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBmdW5jdGlvbiBlbGVtZW50U2Nyb2xsZXIoZWxlbWVudCkge1xuICAgIHJldHVybiB7XG4gICAgICAvKipcbiAgICAgICAqIEByZXR1cm4ge051bWJlcn0gdGhlIHNjcm9sbCBoZWlnaHQgb2YgdGhlIGVsZW1lbnQgaW4gcGl4ZWxzXG4gICAgICAgKi9cbiAgICAgIHNjcm9sbEhlaWdodDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBNYXRoLm1heChcbiAgICAgICAgICBlbGVtZW50LnNjcm9sbEhlaWdodCxcbiAgICAgICAgICBlbGVtZW50Lm9mZnNldEhlaWdodCxcbiAgICAgICAgICBlbGVtZW50LmNsaWVudEhlaWdodFxuICAgICAgICApO1xuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBAcmV0dXJuIHtOdW1iZXJ9IHRoZSBoZWlnaHQgb2YgdGhlIGVsZW1lbnQgaW4gcGl4ZWxzXG4gICAgICAgKi9cbiAgICAgIGhlaWdodDogZnVuY3Rpb24oKSB7XG4gICAgICAgI
2HJldHVybiBNYXRoLm1heChlbGVtZW50Lm9mZnNldEhlaWdodCwgZWxlbWVudC5jbGllbnRIZWlnaHQpO1xuICAgICAgfSxcblxuICAgICAgLyoqXG4gICAgICAgKiBHZXRzIHRoZSBZIHNjcm9sbCBwb3NpdGlvblxuICAgICAgICogQHJldHVybiB7TnVtYmVyfSBwaXhlbHMgdGhlIGVsZW1lbnQgaGFzIHNjcm9sbGVkIGFsb25nIHRoZSBZLWF4aXNcbiAgICAgICAqL1xuICAgICAgc2Nyb2xsWTogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBlbGVtZW50LnNjcm9sbFRvcDtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlU2Nyb2xsZXIoZWxlbWVudCkge1xuICAgIHJldHVybiBpc1dpbmRvdyhlbGVtZW50KSA/IHdpbmRvd1Njcm9sbGVyKGVsZW1lbnQpIDogZWxlbWVudFNjcm9sbGVyKGVsZW1lbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBlbGVtZW50IEV2ZW50VGFyZ2V0XG4gICAqL1xuICBmdW5jdGlvbiB0cmFja1Njcm9sbChlbGVtZW50LCBvcHRpb25zLCBjYWxsYmFjaykge1xuICAgIHZhciBpc1Bhc3NpdmVTdXBwb3J0ZWQgPSBwYXNzaXZlRXZlbnRzU3VwcG9ydGVkKCk7XG4gICAgdmFyIHJhZklkO1xuICAgIHZhciBzY3JvbGxlZCA9IGZhbHNlO1xuICAgIHZhciBzY3JvbGxlciA9IGNyZWF0ZVNjcm9sbGVyKGVsZW1lbnQpO1xuICAgIHZhciBsYXN0U2Nyb2xsWSA9IHNjcm9sbGVyLnNjcm9sbFkoKTtcbiAgICB2YXIgZGV0YWlscyA9IHt9O1xuXG4gICAgZnVuY3Rpb24gdXBkYXRlKCkge1xuICAgICAgdmFyIHNjcm9sbFkgPSBNYXRoLnJvdW5kKHNjcm9sbGVyLnNjcm9sbFkoKSk7XG4gICAgICB2Y
2XIgaGVpZ2h0ID0gc2Nyb2xsZXIuaGVpZ2h0KCk7XG4gICAgICB2YXIgc2Nyb2xsSGVpZ2h0ID0gc2Nyb2xsZXIuc2Nyb2xsSGVpZ2h0KCk7XG5cbiAgICAgIC8vIHJldXNlIG9iamVjdCBmb3IgbGVzcyBtZW1vcnkgY2h1cm5cbiAgICAgIGRldGFpbHMuc2Nyb2xsWSA9IHNjcm9sbFk7XG4gICAgICBkZXRhaWxzLmxhc3RTY3JvbGxZID0gbGFzdFNjcm9sbFk7XG4gICAgICBkZXRhaWxzLmRpcmVjdGlvbiA9IHNjcm9sbFkgPiBsYXN0U2Nyb2xsWSA/IFwiZG93blwiIDogXCJ1cFwiO1xuICAgICAgZGV0YWlscy5kaXN0YW5jZSA9IE1hdGguYWJzKHNjcm9sbFkgLSBsYXN0U2Nyb2xsWSk7XG4gICAgICBkZXRhaWxzLmlzT3V0T2ZCb3VuZHMgPSBzY3JvbGxZIDwgMCB8fCBzY3JvbGxZICsgaGVpZ2h0ID4gc2Nyb2xsSGVpZ2h0O1xuICAgICAgZGV0YWlscy50b3AgPSBzY3JvbGxZIDw9IG9wdGlvbnMub2Zmc2V0O1xuICAgICAgZGV0YWlscy5ib3R0b20gPSBzY3JvbGxZICsgaGVpZ2h0ID49IHNjcm9sbEhlaWdodDtcbiAgICAgIGRldGFpbHMudG9sZXJhbmNlRXhjZWVkZWQgPVxuICAgICAgICBkZXRhaWxzLmRpc3RhbmNlID4gb3B0aW9ucy50b2xlcmFuY2VbZGV0YWlscy5kaXJlY3Rpb25dO1xuXG4gICAgICBjYWxsYmFjayhkZXRhaWxzKTtcblxuICAgICAgbGFzdFNjcm9sbFkgPSBzY3JvbGxZO1xuICAgICAgc2Nyb2xsZWQgPSBmYWxzZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBoYW5kbGVTY3JvbGwoKSB7XG4gICAgICBpZiAoIXNjcm9sbGVkKSB7XG4gICAgICAgIHNjcm9sbGVkID0gdHJ1ZTtcbiAgICAgICAgcmFmSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUodXBkYXRlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgZXZlbnRPcHRpb25zID0gaXNQYXNzaXZlU3VwcG9ydGVkXG4gICAgICA/IHsgcGFzc2l2ZTogdHJ1ZSwgY2FwdHVyZTogZmFsc2UgfVxuICAgICAgOiBmYWxzZTtcbiAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJzY3JvbGxcIiwgaGFuZGxlU2Nyb2xsLCBldmVudE9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRlc3Ryb3k6IGZ1bmN0aW9uKCkge1xuICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFtZShyYWZJZCk7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInNjcm9sbFwiLCBoYW5kbGVTY3JvbGwsIGV2ZW50T3B0aW9ucyk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZVRvbGVyYW5jZSh0KSB7XG4gICAgcmV0dXJuIHQgPT09IE9iamVjdCh0KSA/IHQgOiB7IGRvd246IHQsIHVwOiB0IH07XG4gIH1cblxuICAvKipcbiAgICogVUkgZW5oYW5jZW1lbnQgZm9yIGZpeGVkIGhlYWRlcnMuXG4gICAqIEhpZGVzIGhlYWRlciB3aGVuIHNjcm9sbGluZyBkb3duXG4gICAqIFNob3dzIGhlYWRlciB3aGVuIHNjcm9sbGluZyB1cFxuICAgKiBAY29uc3RydWN0b3JcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBlbGVtIHRoZSBoZWFkZXIgZWxlbWVudFxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyBvcHRpb25zIGZvciB0aGUgd2lkZ2V0XG4gICAqL1xuICBmdW5jdGlvbiBIZWFkcm9vbShlbGVtLCBvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLCBIZWFkcm9vbS5vcHRpb25zLCBvcHRpb25zKTtcbiAgICB0aGlzLmNsYXNzZXMgPSBPYmplY3QuYXNzaWduKHt9LCBIZWFkcm9vbS5vcHRpb25zLmNsYXNzZXMsIG9wdGlvbnMuY2xhc3Nlcyk7XG5cbiAgICB0aGlzLmVsZW0gPSBlbGVtO1xuICAgIHRoaXMudG9sZXJhbmNlID0gbm9ybWFsaXplVG9sZXJhbmNlKHRoaXMudG9sZXJhbmNlKTtcbiAgICB0aGlzLmluaXRpYWxpc2VkID0gZmFsc2U7XG4gICAgdGhpcy5mcm96ZW4gPSBmYWxzZTtcbiAgfVxuICBIZWFkcm9vbS5wcm90b3R5cGUgPSB7XG4gICAgY29uc3RydWN0b3I6IEhlYWRyb29tLFxuXG4gICAgLyoqXG4gICAgICogU3RhcnQgbGlzdGVuaW5nIHRvIHNjcm9sbGluZ1xuICAgICAqIEBwdWJsaWNcbiAgICAgKi9cbiAgICBpbml0OiBmdW5jdGlvbigpIHtcbiAgICAgIGlmIChIZWFkcm9vbS5jdXRzVGhlTXVzdGFyZCAmJiAhdGhpcy5pbml0aWFsaXNlZCkge1xuICAgICAgICB0aGlzLmFkZENsYXNzKFwiaW5pdGlhbFwiKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXNlZCA9IHRydWU7XG5cbiAgICAgICAgLy8gZGVmZXIgZXZlbnQgcmVnaXN0cmF0aW9uIHRvIGhhbmRsZSBicm93c2VyXG4gICAgICAgIC8vIHBvdGVudGlhbGx5IHJlc3RvcmluZyBwcmV2aW91cyBzY3JvbGwgcG9zaXRpb25cbiAgICAgICAgc2V0VGltZW91dChcbiAgICAgICAgICBmdW5jdGlvbihzZWxmKSB7XG4gICAgICAgICAgICBzZWxmLnNjcm9sbFRyYWNrZXIgPSB0cmFja1Njcm9sbChcbiAgICAgICAgICAgICAgc2VsZi5zY3JvbGxlcixcbiAgICAgICAgICAgICAgeyBvZmZzZXQ6IHNlbGYub2Zmc2V0LCB0b2xlcmFuY2U6IHNlbGYudG9sZXJhbmNlIH0sXG4gICAgICAgICAgICAgIHNlbGYudXBkYXRlLmJpbmQoc2VsZilcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAxMDAsXG4gICAgICAgICAgdGhpc1xuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogRGVzdHJveSB0aGUgd2lkZ2V0LCBjbGVhcmluZyB1cCBhZnRlciBpdHNlbGZcbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgZGVzdHJveTogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLmluaXRpYWxpc2VkID0gZmFsc2U7XG4gICAgICBPYmplY3Qua2V5cyh0aGlzLmNsYXNzZXMpLmZvckVhY2godGhpcy5yZW1vdmVDbGFzcywgdGhpcyk7XG4gICAgICB0aGlzLnNjcm9sbFRyYWNrZXIuZGVzdHJveSgpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBVbnBpbiB0aGUgZWxlbWVudFxuICAgICAqIEBwdWJsaWNcbiAgICAgKi9cbiAgICB1bnBpbjogZnVuY3Rpb24oKSB7XG4gICAgICBpZiAodGhpcy5oYXNDbGFzcyhcInBpbm5lZFwiKSB8fCAhdGhpcy5oYXNDbGFzcyhcInVucGlubmVkXCIpKSB7XG4gICAgICAgI
2HRoaXMuYWRkQ2xhc3MoXCJ1bnBpbm5lZFwiKTtcbiAgICAgICAgdGhpcy5yZW1vdmVDbGFzcyhcInBpbm5lZFwiKTtcblxuICAgICAgICBpZiAodGhpcy5vblVucGluKSB7XG4gICAgICAgICAgdGhpcy5vblVucGluLmNhbGwodGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUGluIHRoZSBlbGVtZW50XG4gICAgICogQHB1YmxpY1xuICAgICAqL1xuICAgIHBpbjogZnVuY3Rpb24oKSB7XG4gICAgICBpZiAodGhpcy5oYXNDbGFzcyhcInVucGlubmVkXCIpKSB7XG4gICAgICAgIHRoaXMuYWRkQ2xhc3MoXCJwaW5uZWRcIik7XG4gICAgICAgIHRoaXMucmVtb3ZlQ2xhc3MoXCJ1bnBpbm5lZFwiKTtcblxuICAgICAgICBpZiAodGhpcy5vblBpbikge1xuICAgICAgICAgIHRoaXMub25QaW4uY2FsbCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBGcmVlemVzIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSB3aWRnZXRcbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgZnJlZXplOiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuZnJvemVuID0gdHJ1ZTtcbiAgICAgIHRoaXMuYWRkQ2xhc3MoXCJmcm96ZW5cIik7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJlLWVuYWJsZXMgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIG9mIHRoZSB3aWRnZXRcbiAgICAgKiBAcHVibGljXG4gICAgICovXG4gICAgdW5mcmVlemU6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5mcm96ZW4gPSBmYWxzZTtcbiAgICAgIHRoaXMucmVtb3ZlQ2xhc3MoXCJmcm96ZW5cIik7XG4gICAgfSxcblxuICAgIHRvcDogZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoIXRoaXMuaGFzQ2xhc3MoXCJ0b3BcIikpIHtcbiAgICAgICAgdGhpcy5hZGRDbGFzcyhcInRvcFwiKTtcbiAgICAgICAgdGhpcy5yZW1vdmVDbGFzcyhcIm5vdFRvcFwiKTtcblxuICAgICAgICBpZiAodGhpcy5vblRvcCkge1xuICAgICAgICAgIHRoaXMub25Ub3AuY2FsbCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBub3RUb3A6IGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCF0aGlzLmhhc0NsYXNzKFwibm90VG9wXCIpKSB7XG4gICAgICAgIHRoaXMuYWRkQ2xhc3MoXCJub3RUb3BcIik7XG4gICAgICAgIHRoaXMucmVtb3ZlQ2xhc3MoXCJ0b3BcIik7XG5cbiAgICAgICAgaWYgKHRoaXMub25Ob3RUb3ApIHtcbiAgICAgICAgICB0aGlzLm9uTm90VG9wLmNhbGwodGhpcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYm90dG9tOiBmdW5jdGlvbigpIHtcbiAgICAgIGlmICghdGhpcy5oYXNDbGFzcyhcImJvdHRvbVwiKSkge1xuICAgICAgICB0aGlzLmFkZENsYXNzKFwiYm90dG9tXCIpO1xuICAgICAgICB0aGlzLnJlbW92ZUNsYXNzKFwibm90Qm90dG9tXCIpO1xuXG4gICAgICAgIGlmICh0aGlzLm9uQm90dG9tKSB7XG4gICAgICAgICAgdGhpcy5vbkJvdHRvbS5jYWxsKHRoaXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcblxuICAgIG5vdEJvdHRvbTogZnVuY3Rpb24oKSB7XG4gICAgICBpZiAoIXRoaXMuaGFzQ2xhc3MoXCJub3RCb3R0b21cIikpIHtcbiAgICAgICAgdGhpcy5hZGRDbGFzcyhcIm5vdEJvdHRvbVwiKTtcbiAgICAgICAgdGhpcy5yZW1vdmVDbGFzcyhcImJvdHRvbVwiKTtcblxuICAgICAgICBpZiAodGhpcy5vbk5vdEJvdHRvbSkge1xuICAgICAgICAgIHRoaXMub25Ob3RCb3R0b20uY2FsbCh0aGlzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBzaG91bGRVbnBpbjogZnVuY3Rpb24oZGV0YWlscykge1xuICAgICAgdmFyIHNjcm9sbGluZ0Rvd24gPSBkZXRhaWxzLmRpcmVjdGlvbiA9PT0gXCJkb3duXCI7XG5cbiAgICAgIHJldHVybiBzY3JvbGxpbmdEb3duICYmICFkZXRhaWxzLnRvcCAmJiBkZXRhaWxzLnRvbGVyYW5jZUV4Y2VlZGVkO1xuICAgIH0sXG5cbiAgICBzaG91bGRQaW46IGZ1bmN0aW9uKGRldGFpbHMpIHtcbiAgICAgIHZhciBzY3JvbGxpbmdVcCA9IGRldGFpbHMuZGlyZWN0aW9uID09PSBcInVwXCI7XG5cbiAgICAgIHJldHVybiAoc2Nyb2xsaW5nVXAgJiYgZGV0YWlscy50b2xlcmFuY2VFeGNlZWRlZCkgfHwgZGV0YWlscy50b3A7XG4gICAgfSxcblxuICAgIGFkZENsYXNzOiBmdW5jdGlvbihjbGFzc05hbWUpIHtcbiAgICAgIHRoaXMuZWxlbS5jbGFzc0xpc3QuYWRkKHRoaXMuY2xhc3Nlc1tjbGFzc05hbWVdKTtcbiAgICB9LFxuXG4gICAgcmVtb3ZlQ2xhc3M6IGZ1bmN0aW9uKGNsYXNzTmFtZSkge1xuICAgICAgdGhpcy5lbGVtLmNsYXNzTGlzdC5yZW1vdmUodGhpcy5jbGFzc2VzW2NsYXNzTmFtZV0pO1xuICAgIH0sXG5cbiAgICBoYXNDbGFzczogZnVuY3Rpb24oY2xhc3NOYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5lbGVtLmNsYXNzTGlzdC5jb250YWlucyh0aGlzLmNsYXNzZXNbY2xhc3NOYW1lXSk7XG4gICAgfSxcblxuICAgIHVwZGF0ZTogZnVuY3Rpb24oZGV0YWlscykge1xuICAgICAgaWYgKGRldGFpbHMuaXNPdXRPZkJvdW5kcykge1xuICAgICAgICAvLyBJZ25vcmUgYm91bmN5IHNjcm9sbGluZyBpbiBPU1hcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5mcm96ZW4gPT09IHRydWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGV0YWlscy50b3ApIHtcbiAgICAgICAgdGhpcy50b3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubm90VG9wKCk7XG4gICAgICB9XG5cbiAgICAgIGlmIChkZXRhaWxzLmJvdHRvbSkge1xuICAgICAgICB0aGlzLmJvdHRvbSgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5ub3RCb3R0b20oKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuc2hvdWxkVW5waW4oZGV0YWlscykpIHtcbiAgICAgICAgdGhpcy51bnBpbigpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLnNob3VsZFBpbihkZXRhaWxzKSkge1xuICAgICAgICB0aGlzLnBpbigpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogRGVmYXVsdCBvcHRpb25zXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBIZWFkcm9vbS5vcHRpb25zID0ge1xuICAgIHRvbGVyYW5jZToge1xuICAgICAgdXA6IDAsXG4gICAgICBkb3duOiAwXG4gICAgfSxcbiAgICBvZmZzZXQ6IDAsXG4gICAgc2Nyb2xsZXI6IGlzQnJvd3NlcigpID8gd2luZG93IDogbnVsbCxcbiAgICBjbGFzc2VzOiB7XG4gICAgICBmcm96ZW46IFwiaGVhZHJvb20tLWZyb3plblwiLFxuICAgICAgcGlubmVkOiBcImhlYWRyb29tLS1waW5uZWRcIixcbiAgICAgIHVucGlubmVkOiBcImhlYWRyb29tLS11bnBpbm5lZFwiLFxuICAgICAgdG9wOiBcImhlYWRyb29tLS10b3BcIixcbiAgICAgIG5vdFRvcDogXCJoZWFkcm9vbS0tbm90LXRvcFwiLFxuICAgICAgYm90dG9tOiBcImhlYWRyb29tLS1ib3R0b21cIixcbiAgICAgIG5vdEJvdHRvbTogXCJoZWFkcm9vbS0tbm90LWJvdHRvbVwiLFxuICAgICAgaW5pdGlhbDogXCJoZWFkcm9vbVwiXG4gICAgfVxuICB9O1xuXG4gIEhlYWRyb29tLmN1dHNUaGVNdXN0YXJkID0gaXNTdXBwb3J0ZWQoKTtcblxuICByZXR1cm4gSGVhZHJvb207XG5cbn0pKTtcbiIsIihmdW5jdGlvbigpIHtcbiAgdmFyIE11dGF0aW9uT2JzZXJ2ZXIsIFV0aWwsIFdlYWtNYXAsIGdldENvbXB1dGVkU3R5bGUsIGdldENvbXB1dGVkU3R5bGVSWCxcbiAgICBiaW5kID0gZnVuY3Rpb24oZm4sIG1lKXsgcmV0dXJuIGZ1bmN0aW9uKCl7IHJldHVybi
2Bmbi5hcHBseShtZSwgYXJndW1lbnRzKTsgfTsgfSxcbiAgICBpbmRleE9mID0gW10uaW5kZXhPZiB8fCBmdW5jdGlvbihpdGVtKSB7IGZvciAodmFyIGkgPSAwLCBsID0gdGhpcy5sZW5ndGg7IGkgPCBsOyBpKyspIHsgaWYgKGkgaW4gdGhpcyAmJiB0aGlzW2ldID09PSBpdGVtKSByZXR1cm4gaTsgfSByZXR1cm4gLTE7IH07XG5cbiAgVXRpbCA9IChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBVdGlsKCkge31cblxuICAgIFV0aWwucHJvdG90eXBlLmV4dGVuZCA9IGZ1bmN0aW9uKGN1c3RvbSwgZGVmYXVsdHMpIHtcbiAgICAgIHZhciBrZXksIHZhbHVlO1xuICAgICAgZm9yIChrZXkgaW4gZGVmYXVsdHMpIHtcbiAgICAgICAgdmFsdWUgPSBkZWZhdWx0c1trZXldO1xuICAgICAgICBpZiAoY3VzdG9tW2tleV0gPT0gbnVsbCkge1xuICAgICAgICAgIGN1c3RvbVtrZXldID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBjdXN0b207XG4gICAgfTtcblxuICAgIFV0aWwucHJvdG90eXBlLmlzTW9iaWxlID0gZnVuY3Rpb24oYWdlbnQpIHtcbiAgICAgIHJldHVybiAvQW5kcm9pZHx3ZWJPU3xpUGhvbmV8aVBhZHxpUG9kfEJsYWNrQmVycnl8SUVNb2JpbGV8T3BlcmEgTWluaS9pLnRlc3QoYWdlbnQpO1xuICAgIH07XG5cbiAgICBVdGlsLnByb3RvdHlwZS5jcmVhdGVFdmVudCA9IGZ1bmN0aW9uKGV2ZW50LCBidWJibGUsIGNhbmNlbCwgZGV0YWlsKSB7XG4gICAgICB2YXIgY3VzdG9tRXZlbnQ7XG4gICAgICBpZiAoYnViYmxlID09IG51bGwpIHtcbiAgICAgICAgYnViYmxlID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoY2FuY2VsID09IG51bGwpIHtcbiAgICAgICAgY2FuY2VsID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBpZiAoZGV0YWlsID09IG51bGwpIHtcbiAgICAgICAgZGV0YWlsID0gbnVsbDtcbiAgICAgIH1cbiAgICAgIGlmIChkb2N1bWVudC5jcmVhdGVFdmVudCAhPSBudWxsKSB7XG4gICAgICAgIGN1c3RvbUV2ZW50ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0N1c3RvbUV2ZW50Jyk7XG4gICAgICAgIGN1c3RvbUV2ZW50LmluaXRDdXN0b21FdmVudChldmVudCwgYnViYmxlLCBjYW5jZWwsIGRldGFpbCk7XG4gICAgICB9IGVsc2UgaWYgKGRvY3VtZW50LmNyZWF0ZUV2ZW50T2JqZWN0ICE9IG51bGwpIHtcbiAgICAgICAgY3VzdG9tRXZlbnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudE9iamVjdCgpO1xuICAgICAgICBjdXN0b21FdmVudC5ldmVudFR5cGUgPSBldmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGN1c3RvbUV2ZW50LmV2ZW50TmFtZSA9IGV2ZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIGN1c3RvbUV2ZW50O1xuICAgIH07XG5cbiAgICBVdGlsLnByb3RvdHlwZS5lbWl0RXZlbnQgPSBmdW5jdGlvbihlbGVtLCBldmVudCkge1xuICAgICAgaWYgKGVsZW0uZGlzcGF0Y2hFdmVudCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBlbGVtLmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xuICAgICAgfSBlbHNlIGlmIChldmVudCBpbiAoZWxlbSAhPSBudWxsKSkge1xuICAgICAgICByZXR1cm4gZWxlbVtldmVudF0oKTtcbiAgICAgIH0gZWxzZSBpZiAoKFwib25cIiArIGV2ZW50KSBpbiAoZWxlbSAhPSBudWxsKSkge1xuICAgICAgICByZXR1cm4gZWxlbVtcIm9uXCIgKyBldmVudF0oKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgVXRpbC5wcm90b3R5cGUuYWRkRXZlbnQgPSBmdW5jdGlvbihlbGVtLCBldmVudCwgZm4pIHtcbiAgICAgIGlmIChlbGVtLmFkZEV2ZW50TGlzdGVuZXIgIT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZWxlbS5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBmbiwgZmFsc2UpO1xuICAgICAgfSBlbHNlIGlmIChlbGVtLmF0dGFjaEV2ZW50ICE9IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGVsZW0uYXR0YWNoRXZlbnQoXCJvblwiICsgZXZlbnQsIGZuKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBlbGVtW2V2ZW50XSA9IGZuO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBVdGlsLnByb3RvdHlwZS5yZW1vdmVFdmVudCA9IGZ1bmN0aW9uKGVsZW0sIGV2ZW50LCBmbikge1xuICAgICAgaWYgKGVsZW0ucmVtb3ZlRXZlbnRMaXN0ZW5lciAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBlbGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnQsIGZuLCBmYWxzZSk7XG4gICAgICB9IGVsc2UgaWYgKGVsZW0uZGV0YWNoRXZlbnQgIT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZWxlbS5kZXRhY2hFdmVudChcIm9uXCIgKyBldmVudCwgZm4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRlbGV0ZSBlbGVtW2V2ZW50XTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgVXRpbC5wcm90b3R5cGUuaW5uZXJIZWlnaHQgPSBmdW5jdGlvbigpIHtcbiAgICAgIGlmICgnaW5uZXJIZWlnaHQnIGluIHdpbmRvdykge1xuICAgICAgICByZXR1cm4gd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiBVdGlsO1xuXG4gIH0pKCk7XG5cbiAgV2Vha01hcCA9IHRoaXMuV2Vha01hcCB8fCB0aGlzLk1veldlYWtNYXAgfHwgKFdlYWtNYXAgPSAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gV2Vha01hcCgpIHtcbiAgICAgIHRoaXMua2V5cyA9IFtdO1xuICAgICAgdGhpcy52YWx1ZXMgPSBbXTtcbiAgICB9XG5cbiAgICBXZWFrTWFwLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihrZXkpIHtcbiAgICAgIHZhciBpLCBpdGVtLCBqLCBsZW4sIHJlZjtcbiAgICAgIHJlZiA9IHRoaXMua2V5cztcbiAgICAgIGZvciAoaSA9IGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBpID0gKytqKSB7XG4gICAgICAgIGl0ZW0gPSByZWZbaV07XG4gICAgICAgIGlmIChpdGVtID09PSBrZXkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy52YWx1ZXNbaV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgV2Vha01hcC5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24oa2V5LCB2YWx1ZSkge1xuICAgICAgdmFyIGksIGl0ZW0sIGosIGxlbiwgcmVmO1xuICAgICAgcmVmID0gdGhpcy5rZXlzO1xuICAgICAgZm9yIChpID0gaiA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGogPCBsZW47IGkgPSArK2opIHtcbiAgICAgICAgaXRlbSA9IHJlZltpXTtcbiAgICAgICAgaWYgKGl0ZW0gPT09IGtleSkge1xuICAgICAgICAgI
2HRoaXMudmFsdWVzW2ldID0gdmFsdWU7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmtleXMucHVzaChrZXkpO1xuICAgICAgcmV0dXJuIHRoaXMudmFsdWVzLnB1c2godmFsdWUpO1xuICAgIH07XG5cbiAgICByZXR1cm4gV2Vha01hcDtcblxuICB9KSgpKTtcblxuICBNdXRhdGlvbk9ic2VydmVyID0gdGhpcy5NdXRhdGlvbk9ic2VydmVyIHx8IHRoaXMuV2Via2l0TXV0YXRpb25PYnNlcnZlciB8fCB0aGlzLk1vek11dGF0aW9uT2JzZXJ2ZXIgfHwgKE11dGF0aW9uT2JzZXJ2ZXIgPSAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gTXV0YXRpb25PYnNlcnZlcigpIHtcbiAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBjb25zb2xlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignTXV0YXRpb25PYnNlcnZlciBpcyBub3Qgc3VwcG9ydGVkIGJ5IHlvdXIgYnJvd3Nlci4nKTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gXCJ1bmRlZmluZWRcIiAmJiBjb25zb2xlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignV09XLmpzIGNhbm5vdCBkZXRlY3QgZG9tIG11dGF0aW9ucywgcGxlYXNlIGNhbGwgLnN5bmMoKSBhZnRlciBsb2FkaW5nIG5ldyBjb250ZW50LicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIE11dGF0aW9uT2JzZXJ2ZXIubm90U3VwcG9ydGVkID0gdHJ1ZTtcblxuICAgIE11dGF0aW9uT2JzZXJ2ZXIucHJvdG90eXBlLm9ic2VydmUgPSBmdW5jdGlvbigpIHt9O1xuXG4gICAgcmV0dXJuIE11dGF0aW9uT2JzZXJ2ZXI7XG5cbiAgfSkoKSk7XG5cbiAgZ2V0Q29tcHV0ZWRTdHlsZSA9IHRoaXMuZ2V0Q29tcHV0ZWRTdHlsZSB8fCBmdW5jdGlvbihlbCwgcHNldWRvKSB7XG4gICAgdGhpcy5nZXRQcm9wZXJ0eVZhbHVlID0gZnVuY3Rpb24ocHJvcCkge1xuICAgICAgdmFyIHJlZjtcbiAgICAgIGlmIChwcm9wID09PSAnZmxvYXQnKSB7XG4gICAgICAgIHByb3AgPSAnc3R5bGVGbG9hdCc7XG4gICAgICB9XG4gICAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZVJYLnRlc3QocHJvcCkpIHtcbiAgICAgICAgcHJvcC5yZXBsYWNlKGdldENvbXB1dGVkU3R5bGVSWCwgZnVuY3Rpb24oXywgX2NoYXIpIHtcbiAgICAgICAgICByZXR1cm4gX2NoYXIudG9VcHBlckNhc2UoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gKChyZWYgPSBlbC5jdXJyZW50U3R5bGUpICE9IG51bGwgPyByZWZbcHJvcF0gOiB2b2lkIDApIHx8IG51bGw7XG4gICAgfTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBnZXRDb21wdXRlZFN0eWxlUlggPSAvKFxcLShbYS16XSl7MX0pL2c7XG5cbiAgdGhpcy5XT1cgPSAoZnVuY3Rpb24oKSB7XG4gICAgV09XLnByb3RvdHlwZS5kZWZhdWx0cyA9IHtcbiAgICAgIGJveENsYXNzOiAnd293JyxcbiAgICAgIGFuaW1hdGVDbGFzczogJ2FuaW1hdGVkJyxcbiAgICAgIG9mZnNldDogMCxcbiAgICAgIG1vYmlsZTogdHJ1ZSxcbiAgICAgIGxpdmU6IHRydWUsXG4gICAgICBjYWxsYmFjazogbnVsbCxcbiAgICAgIHNjcm9sbENvbnRhaW5lcjogbnVsbFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBXT1cob3B0aW9ucykge1xuICAgICAgaWYgKG9wdGlvbnMgPT0gbnVsbCkge1xuICAgICAgICBvcHRpb25zID0ge307XG4gICAgICB9XG4gICAgICB0aGlzLnNjcm9sbENhbGxiYWNrID0gYmluZCh0aGlzLnNjcm9sbENhbGxiYWNrLCB0aGlzKTtcbiAgICAgIHRoaXMuc2Nyb2xsSGFuZGxlciA9IGJpbmQodGhpcy5zY3JvbGxIYW5kbGVyLCB0aGlzKTtcbiAgICAgIHRoaXMucmVzZXRBbmltYXRpb24gPSBiaW5kKHRoaXMucmVzZXRBbmltYXRpb24sIHRoaXMpO1xuICAgICAgdGhpcy5zdGFydCA9IGJpbmQodGhpcy5zdGFydCwgdGhpcyk7XG4gICAgICB0aGlzLnNjcm9sbGVkID0gdHJ1ZTtcbiAgICAgIHRoaXMuY29uZmlnID0gdGhpcy51dGlsKCkuZXh0ZW5kKG9wdGlvbnMsIHRoaXMuZGVmYXVsdHMpO1xuICAgICAgaWYgKG9wdGlvbnMuc2Nyb2xsQ29udGFpbmVyICE9IG51bGwpIHtcbiAgICAgICAgdGhpcy5jb25maWcuc2Nyb2xsQ29udGFpbmVyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihvcHRpb25zLnNjcm9sbENvbnRhaW5lcik7XG4gICAgICB9XG4gICAgICB0aGlzLmFuaW1hdGlvbk5hbWVDYWNoZSA9IG5ldyBXZWFrTWFwKCk7XG4gICAgICB0aGlzLndvd0V2ZW50ID0gdGhpcy51dGlsKCkuY3JlYXRlRXZlbnQodGhpcy5jb25maWcuYm94Q2xhc3MpO1xuICAgIH1cblxuICAgIFdPVy5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHJlZjtcbiAgICAgIHRoaXMuZWxlbWVudCA9IHdpbmRvdy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICBpZiAoKHJlZiA9IGRvY3VtZW50LnJlYWR5U3RhdGUpID09PSBcImludGVyYWN0aXZlXCIgfHwgcmVmID09PSBcImNvbXBsZXRlXCIpIHtcbiAgICAgICAgdGhpcy5zdGFydCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51dGlsKCkuYWRkRXZlbnQoZG9jdW1lbnQsICdET01Db250ZW50TG9hZGVkJywgdGhpcy5zdGFydCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5maW5pc2hlZCA9IFtdO1xuICAgIH07XG5cbiAgICBXT1cucHJvdG90eXBlLnN0YXJ0ID0gZnVuY3Rpb24oKSB7XG4gICAgICB2Y
2XIgYm94LCBqLCBsZW4sIHJlZjtcbiAgICAgIHRoaXMuc3RvcHBlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5ib3hlcyA9IChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIGosIGxlbiwgcmVmLCByZXN1bHRzO1xuICAgICAgICByZWYgPSB0aGlzLmVsZW1lbnQucXVlcnlTZWxlY3RvckFsbChcIi5cIiArIHRoaXMuY29uZmlnLmJveENsYXNzKTtcbiAgICAgICAgcmVzdWx0cyA9IFtdO1xuICAgICAgICBmb3IgKGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgICAgICBib3ggPSByZWZbal07XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKGJveCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICB9KS5jYWxsKHRoaXMpO1xuICAgICAgdGhpcy5hbGwgPSAoZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBqLCBsZW4sIHJlZiwgcmVzdWx0cztcbiAgICAgICAgcmVmID0gdGhpcy5ib3hlcztcbiAgICAgICAgcmVzdWx0cyA9IFtdO1xuICAgICAgICBmb3IgKGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgICAgICBib3ggPSByZWZbal07XG4gICAgICAgICAgcmVzdWx0cy5wdXNoKGJveCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICB9KS5jYWxsKHRoaXMpO1xuICAgICAgaWYgKHRoaXMuYm94ZXMubGVuZ3RoKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKCkpIHtcbiAgICAgICAgICB0aGlzLnJlc2V0U3R5bGUoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWYgPSB0aGlzLmJveGVzO1xuICAgICAgICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgICAgICAgYm94ID0gcmVmW2pdO1xuICAgICAgICAgICAgdGhpcy5hcHBseVN0eWxlKGJveCwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMuZGlzYWJsZWQoKSkge1xuICAgICAgICB0aGlzLnV0aWwoKS5hZGRFdmVudCh0aGlzLmNvbmZpZy5zY3JvbGxDb250YWluZXIgfHwgd2luZG93LCAnc2Nyb2xsJywgdGhpcy5zY3JvbGxIYW5kbGVyKTtcbiAgICAgICAgdGhpcy51dGlsKCkuYWRkRXZlbnQod2luZG93LCAncmVzaXplJywgdGhpcy5zY3JvbGxIYW5kbGVyKTtcbiAgICAgICAgdGhpcy5pbnRlcnZhbCA9IHNldEludGVydmFsKHRoaXMuc2Nyb2xsQ2FsbGJhY2ssIDUwKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmNvbmZpZy5saXZlKSB7XG4gICAgICAgIHJldHVybiBuZXcgTXV0YXRpb25PYnNlcnZlcigoZnVuY3Rpb24oX3RoaXMpIHtcbiAgICAgICAgICByZXR1cm4gZnVuY3Rpb24ocmVjb3Jkcykge1xuICAgICAgICAgICAgdmFyIGssIGxlbjEsIG5vZGUsIHJlY29yZCwgcmVzdWx0cztcbiAgICAgICAgICAgIHJlc3VsdHMgPSBbXTtcbiAgICAgICAgICAgIGZvciAoayA9IDAsIGxlbjEgPSByZWNvcmRzLmxlbmd0aDsgayA8IGxlbjE7IGsrKykge1xuICAgICAgICAgICAgICByZWNvcmQgPSByZWNvcmRzW2tdO1xuICAgICAgICAgICAgICByZXN1bHRzLnB1c2goKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIHZhciBsLCBsZW4yLCByZWYxLCByZXN1bHRzMTtcbiAgICAgICAgICAgICAgICByZWYxID0gcmVjb3JkLmFkZGVkTm9kZXMgfHwgW107XG4gICAgICAgICAgICAgICAgcmVzdWx0czEgPSBbXTtcbiAgICAgICAgICAgICAgICBmb3IgKGwgPSAwLCBsZW4yID0gcmVmMS5sZW5ndGg7IGwgPCBsZW4yOyBsKyspIHtcbiAgICAgICAgICAgICAgICAgIG5vZGUgPSByZWYxW2xdO1xuICAgICAgICAgICAgICAgICAgcmVzdWx0czEucHVzaCh0aGlzLmRvU3luYyhub2RlKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHRzMTtcbiAgICAgICAgICAgICAgfSkuY2FsbChfdGhpcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgICAgICAgfTtcbiAgICAgICAgfSkodGhpcykpLm9ic2VydmUoZG9jdW1lbnQuYm9keSwge1xuICAgICAgICAgIGNoaWxkTGlzdDogdHJ1ZSxcbiAgICAgICAgICBzdWJ0cmVlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBXT1cucHJvdG90eXBlLnN0b3AgPSBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuc3RvcHBlZCA9IHRydWU7XG4gICAgICB0aGlzLnV0aWwoKS5yZW1vdmVFdmVudCh0aGlzLmNvbmZpZy5zY3JvbGxDb250YWluZXIgfHwgd2luZG93LCAnc2Nyb2xsJywgdGhpcy5zY3JvbGxIYW5kbGVyKTtcbiAgICAgIHRoaXMudXRpbCgpLnJlbW92ZUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScsIHRoaXMuc2Nyb2xsSGFuZGxlcik7XG4gICAgICBpZiAodGhpcy5pbnRlcnZhbCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBjbGVhckludGVydmFsKHRoaXMuaW50ZXJ2YWwpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBXT1cucHJvdG90eXBlLnN5bmMgPSBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICBpZiAoTXV0YXRpb25PYnNlcnZlci5ub3RTdXBwb3J0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG9TeW5jKHRoaXMuZWxlbWVudCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIFdPVy5wcm90b3R5cGUuZG9TeW5jID0gZnVuY3Rpb24oZWxlbWVudCkge1xuICAgICAgdmFyIGJveCwgaiwgbGVuLCByZWYsIHJlc3VsdHM7XG4gICAgICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgICAgIGVsZW1lbnQgPSB0aGlzLmVsZW1lbnQ7XG4gICAgICB9XG4gICAgICBpZiAoZWxlbWVudC5ub2RlVHlwZSAhPT0gMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBlbGVtZW50ID0gZWxlbWVudC5wYXJlbnROb2RlIHx8IGVsZW1lbnQ7XG4gICAgICByZWYgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCIuXCIgKyB0aGlzLmNvbmZpZy5ib3hDbGFzcyk7XG4gICAgICByZXN1bHRzID0gW107XG4gICAgICBmb3IgKGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgICAgYm94ID0gcmVmW2pdO1xuICAgICAgICBpZiAoaW5kZX
2hPZi5jYWxsKHRoaXMuYWxsLCBib3gpIDwgMCkge1xuICAgICAgICAgIHRoaXMuYm94ZXMucHVzaChib3gpO1xuICAgICAgICAgIHRoaXMuYWxsLnB1c2goYm94KTtcbiAgICAgICAgICBpZiAodGhpcy5zdG9wcGVkIHx8IHRoaXMuZGlzYWJsZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5yZXNldFN0eWxlKCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlTdHlsZShib3gsIHRydWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXN1bHRzLnB1c2godGhpcy5zY3JvbGxlZCA9IHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdHMucHVzaCh2b2lkIDApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0cztcbiAgICB9O1xuXG4gICAgV09XLnByb3RvdHlwZS5zaG93ID0gZnVuY3Rpb24oYm94KSB7XG4gICAgICB0aGlzLmFwcGx5U3R5bGUoYm94KTtcbiAgICAgIGJveC5jbGFzc05hbWUgPSBib3guY2xhc3NOYW1lICsgXCIgXCIgKyB0aGlzLmNvbmZpZy5hbmltYXRlQ2xhc3M7XG4gICAgICBpZiAodGhpcy5jb25maWcuY2FsbGJhY2sgIT0gbnVsbCkge1xuICAgICAgICB0aGlzLmNvbmZpZy5jYWxsYmFjayhib3gpO1xuICAgICAgfVxuICAgICAgdGhpcy51dGlsKCkuZW1pdEV2ZW50KGJveCwgdGhpcy53b3dFdmVudCk7XG4gICAgICB0aGlzLnV0aWwoKS5hZGRFdmVudChib3gsICdhbmltYXRpb25lbmQnLCB0aGlzLnJlc2V0QW5pbWF0aW9uKTtcbiAgICAgIHRoaXMudXRpbCgpLmFkZEV2ZW50KGJveCwgJ29hbmltYXRpb25lbmQnLCB0aGlzLnJlc2V0QW5pbWF0aW9uKTtcbiAgICAgIHRoaXMudXRpbCgpLmFkZEV2ZW50KGJveCwgJ3dlYmtpdEFuaW1hdGlvbkVuZCcsIHRoaXMucmVzZXRBbmltYXRpb24pO1xuICAgICAgdGhpcy51dGlsKCkuYWRkRXZlbnQoYm94LCAnTVNBbmltYXRpb25FbmQnLCB0aGlzLnJlc2V0QW5pbWF0aW9uKTtcbiAgICAgIHJldHVybiBib3g7XG4gICAgfTtcblxuICAgIFdPVy5wcm90b3R5cGUuYXBwbHlTdHlsZSA9IGZ1bmN0aW9uKGJveCwgaGlkZGVuKSB7XG4gICAgICB2Y
2XIgZGVsYXksIGR1cmF0aW9uLCBpdGVyYXRpb247XG4gICAgICBkdXJhdGlvbiA9IGJveC5nZXRBdHRyaWJ1dGUoJ2RhdGEtd293LWR1cmF0aW9uJyk7XG4gICAgICBkZWxheSA9IGJveC5nZXRBdHRyaWJ1dGUoJ2RhdGEtd293LWRlbGF5Jyk7XG4gICAgICBpdGVyYXRpb24gPSBib3guZ2V0QXR0cmlidXRlKCdkYXRhLXdvdy1pdGVyYXRpb24nKTtcbiAgICAgIHJldHVybiB0aGlzLmFuaW1hdGUoKGZ1bmN0aW9uKF90aGlzKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICAgICAgICByZXR1cm4gX3RoaXMuY3VzdG9tU3R5bGUoYm94LCBoaWRkZW4sIGR1cmF0aW9uLCBkZWxheSwgaXRlcmF0aW9uKTtcbiAgICAgICAgfTtcbiAgICAgIH0pKHRoaXMpKTtcbiAgICB9O1xuXG4gICAgV09XLnByb3RvdHlwZS5hbmltYXRlID0gKGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCdyZXF1ZXN0QW5pbWF0aW9uRnJhbWUnIGluIHdpbmRvdykge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgICAgICByZXR1cm4gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZShjYWxsYmFjayk7XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24oY2FsbGJhY2spIHtcbiAgICAgICAgICByZXR1cm4gY2FsbGJhY2soKTtcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KSgpO1xuXG4gICAgV09XLnByb3RvdHlwZS5yZXNldFN0eWxlID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgYm94LCBqLCBsZW4sIHJlZiwgcmVzdWx0cztcbiAgICAgIHJlZiA9IHRoaXMuYm94ZXM7XG4gICAgICByZXN1bHRzID0gW107XG4gICAgICBmb3IgKGogPSAwLCBsZW4gPSByZWYubGVuZ3RoOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgICAgYm94ID0gcmVmW2pdO1xuICAgICAgICByZXN1bHRzLnB1c2goYm94LnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZScpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdHM7XG4gICAgfTtcblxuICAgIFdPVy5wcm90b3R5cGUucmVzZXRBbmltYXRpb24gPSBmdW5jdGlvbihldmVudCkge1xuICAgICAgdmFyIHRhcmdldDtcbiAgICAgIGlmIChldmVudC50eXBlLnRvTG93ZXJDYXNlKCkuaW5kZXhPZignYW5pbWF0aW9uZW5kJykgPj0gMCkge1xuICAgICAgICB0YXJnZXQgPSBldmVudC50YXJnZXQgfHwgZXZlbnQuc3JjRWxlbWVudDtcbiAgICAgICAgcmV0dXJuIHRhcmdldC5jbGFzc05hbWUgPSB0YXJnZXQuY2xhc3NOYW1lLnJlcGxhY2UodGhpcy5jb25maWcuYW5pbWF0ZUNsYXNzLCAnJykudHJpbSgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBXT1cucHJvdG90eXBlLmN1c3RvbVN0eWxlID0gZnVuY3Rpb24oYm94LCBoaWRkZW4sIGR1cmF0aW9uLCBkZWxheSwgaXRlcmF0aW9uKSB7XG4gICAgICBpZiAoaGlkZGVuKSB7XG4gICAgICAgIHRoaXMuY2FjaGVBbmltYXRpb25OYW1lKGJveCk7XG4gICAgICB9XG4gICAgICBib3guc3R5bGUudmlzaWJpbGl0eSA9IGhpZGRlbiA/ICdoaWRkZW4nIDogJ3Zpc2libGUnO1xuICAgICAgaWYgKGR1cmF0aW9uKSB7XG4gICAgICAgIHRoaXMudmVuZG9yU2V0KGJveC5zdHlsZSwge1xuICAgICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uOiBkdXJhdGlvblxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIGlmIChkZWxheSkge1xuICAgICAgICB0aGlzLnZlbmRvclNldChib3guc3R5bGUsIHtcbiAgICAgICAgICBhbmltYXRpb25EZWxheTogZGVsYXlcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBpZiAoaXRlcmF0aW9uKSB7XG4gICAgICAgIHRoaXMudmVuZG9yU2V0KGJveC5zdHlsZSwge1xuICAgICAgICAgIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiBpdGVyYXRpb25cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICB0aGlzLnZlbmRvclNldChib3guc3R5bGUsIHtcbiAgICAgICAgYW5pbWF0aW9uTmFtZTogaGlkZGVuID8gJ25vbmUnIDogdGhpcy5jYWNoZWRBbmltYXRpb25OYW1lKGJveClcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIGJveDtcbiAgICB9O1xuXG4gICAgV09XLnByb3RvdHlwZS52ZW5kb3JzID0gW1wibW96XCIsIFwid2Via2l0XCJdO1xuXG4gICAgV09XLnByb3RvdHlwZS52ZW5kb3JTZXQgPSBmdW5jdGlvbihlbGVtLCBwcm9wZXJ0aWVzKSB7XG4gICAgICB2Y
2XIgbmFtZSwgcmVzdWx0cywgdmFsdWUsIHZlbmRvcjtcbiAgICAgIHJlc3VsdHMgPSBbXTtcbiAgICAgIGZvciAobmFtZSBpbiBwcm9wZXJ0aWVzKSB7XG4gICAgICAgIHZhbHVlID0gcHJvcGVydGllc1tuYW1lXTtcbiAgICAgICAgZWxlbVtcIlwiICsgbmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgcmVzdWx0cy5wdXNoKChmdW5jdGlvbigpIHtcbiAgICAgICAgICB2YXIgaiwgbGVuLCByZWYsIHJlc3VsdHMxO1xuICAgICAgICAgIHJlZiA9IHRoaXMudmVuZG9ycztcbiAgICAgICAgICByZXN1bHRzMSA9IFtdO1xuICAgICAgICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgICAgICAgdmVuZG9yID0gcmVmW2pdO1xuICAgICAgICAgICAgcmVzdWx0czEucHVzaChlbGVtW1wiXCIgKyB2ZW5kb3IgKyAobmFtZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSkgKyAobmFtZS5zdWJzdHIoMSkpXSA9IHZhbHVlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdHMxO1xuICAgICAgICB9KS5jYWxsKHRoaXMpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHRzO1xuICAgIH07XG5cbiAgICBXT1cucHJvdG90eXBlLnZlbmRvckNTUyA9IGZ1bmN0aW9uKGVsZW0sIHByb3BlcnR5KSB7XG4gICAgICB2YXIgaiwgbGVuLCByZWYsIHJlc3VsdCwgc3R5bGUsIHZlbmRvcjtcbiAgICAgIHN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtKTtcbiAgICAgIHJlc3VsdCA9IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUocHJvcGVydHkpO1xuICAgICAgcmVmID0gdGhpcy52ZW5kb3JzO1xuICAgICAgZm9yIChqID0gMCwgbGVuID0gcmVmLmxlbmd0aDsgaiA8IGxlbjsgaisrKSB7XG4gICAgICAgIHZlbmRvciA9IHJlZltqXTtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0IHx8IHN0eWxlLmdldFByb3BlcnR5Q1NTVmFsdWUoXCItXCIgKyB2ZW5kb3IgKyBcIi1cIiArIHByb3BlcnR5KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICAgIFdPVy5wcm90b3R5cGUuYW5pbWF0aW9uTmFtZSA9IGZ1bmN0aW9uKGJveCkge1xuICAgICAgdmFyIGFuaW1hdGlvbk5hbWUsIGVycm9yO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYW5pbWF0aW9uTmFtZSA9IHRoaXMudmVuZG9yQ1NTKGJveCwgJ2FuaW1hdGlvbi1uYW1lJykuY3NzVGV4dDtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGFuaW1hdGlvbk5hbWUgPSBnZXRDb21wdXRlZFN0eWxlKGJveCkuZ2V0UHJvcGVydHlWYWx1ZSgnYW5pbWF0aW9uLW5hbWUnKTtcbiAgICAgIH1cbiAgICAgIGlmIChhbmltYXRpb25OYW1lID09PSAnbm9uZScpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGFuaW1hdGlvbk5hbWU7XG4gICAgICB9XG4gICAgfTtcblxuICAgIFdPVy5wcm90b3R5cGUuY2FjaGVBbmltYXRpb25OYW1lID0gZnVuY3Rpb24oYm94KSB7XG4gICAgICByZXR1cm4gdGhpcy5hbmltYXRpb25OYW1lQ2FjaGUuc2V0KGJveCwgdGhpcy5hbmltYXRpb25OYW1lKGJveCkpO1xuICAgIH07XG5cbiAgICBXT1cucHJvdG90eXBlLmNhY2hlZEFuaW1hdGlvbk5hbWUgPSBmdW5jdGlvbihib3gpIHtcbiAgICAgIHJldHVybiB0aGlzLmFuaW1hdGlvbk5hbWVDYWNoZS5nZXQoYm94KTtcbiAgICB9O1xuXG4gICAgV09XLnByb3RvdHlwZS5zY3JvbGxIYW5kbGVyID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5zY3JvbGxlZCA9IHRydWU7XG4gICAgfTtcblxuICAgIFdPVy5wcm90b3R5cGUuc2Nyb2xsQ2FsbGJhY2sgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBib3g7XG4gICAgICBpZiAodGhpcy5zY3JvbGxlZCkge1xuICAgICAgICB0aGlzLnNjcm9sbGVkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuYm94ZXMgPSAoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgdmFyIGosIGxlbiwgcmVmLCByZXN1bHRzO1xuICAgICAgICAgIHJlZiA9IHRoaXMuYm94ZXM7XG4gICAgICAgICAgcmVzdWx0cyA9IFtdO1xuICAgICAgICAgIGZvciAoaiA9IDAsIGxlbiA9IHJlZi5sZW5ndGg7IGogPCBsZW47IGorKykge1xuICAgICAgICAgICAgYm94ID0gcmVmW2pdO1xuICAgICAgICAgICAgaWYgKCEoYm94KSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmlzaWJsZShib3gpKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2hvdyhib3gpO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdHMucHVzaChib3gpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gcmVzdWx0cztcbiAgICAgICAgfSkuY2FsbCh0aGlzKTtcbiAgICAgICAgaWYgKCEodGhpcy5ib3hlcy5sZW5ndGggfHwgdGhpcy5jb25maWcubGl2ZSkpIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5zdG9wKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gICAgV09XLnByb3RvdHlwZS5vZmZzZXRUb3AgPSBmdW5jdGlvbihlbGVtZW50KSB7XG4gICAgICB2Y
2XIgdG9wO1xuICAgICAgd2hpbGUgKGVsZW1lbnQub2Zmc2V0VG9wID09PSB2b2lkIDApIHtcbiAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50Tm9kZTtcbiAgICAgIH1cbiAgICAgIHRvcCA9IGVsZW1lbnQub2Zmc2V0VG9wO1xuICAgICAgd2hpbGUgKGVsZW1lbnQgPSBlbGVtZW50Lm9mZnNldFBhcmVudCkge1xuICAgICAgICB0b3AgKz0gZWxlbWVudC5vZmZzZXRUb3A7XG4gICAgICB9XG4gICAgICByZXR1cm4gdG9wO1xuICAgIH07XG5cbiAgICBXT1cucHJvdG90eXBlLmlzVmlzaWJsZSA9IGZ1bmN0aW9uKGJveCkge1xuICAgICAgdmFyIGJvdHRvbSwgb2Zmc2V0LCB0b3AsIHZpZXdCb3R0b20sIHZpZXdUb3A7XG4gICAgICBvZmZzZXQgPSBib3guZ2V0QXR0cmlidXRlKCdkYXRhLXdvdy1vZmZzZXQnKSB8fCB0aGlzLmNvbmZpZy5vZmZzZXQ7XG4gICAgICB2aWV3VG9wID0gKHRoaXMuY29uZmlnLnNjcm9sbENvbnRhaW5lciAmJiB0aGlzLmNvbmZpZy5zY3JvbGxDb250YWluZXIuc2Nyb2xsVG9wKSB8fCB3aW5kb3cucGFnZVlPZmZzZXQ7XG4gICAgICB2aWV3Qm90dG9tID0gdmlld1RvcCArIE1hdGgubWluKHRoaXMuZWxlbWVudC5jbGllbnRIZWlnaHQsIHRoaXMudXRpbCgpLmlubmVySGVpZ2h0KCkpIC0gb2Zmc2V0O1xuICAgICAgdG9wID0gdGhpcy5vZmZzZXRUb3AoYm94KTtcbiAgICAgIGJvdHRvbSA9IHRvcCArIGJveC5jbGllbnRIZWlnaHQ7XG4gICAgICByZXR1cm4gdG9wIDw9IHZpZXdCb3R0b20gJiYgYm90dG9tID49IHZpZXdUb3A7XG4gICAgfTtcblxuICAgIFdPVy5wcm90b3R5cGUudXRpbCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3V0aWwgIT0gbnVsbCA/IHRoaXMuX3V0aWwgOiB0aGlzLl91dGlsID0gbmV3IFV0aWwoKTtcbiAgICB9O1xuXG4gICAgV09XLnByb3RvdHlwZS5kaXNhYmxlZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuICF0aGlzLmNvbmZpZy5tb2JpbGUgJiYgdGhpcy51dGlsKCkuaXNNb2JpbGUobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgfTtcblxuICAgIHJldHVybiBXT1c7XG5cbiAgfSkoKTtcblxufSkuY2FsbCh0aGlzKTtcbiIsIi8qXG4gICAgIF8gXyAgICAgIF8gICAgICAgX1xuIF9fX3wgKF8pIF9fX3wgfCBfXyAgKF8pX19fXG4vIF9ffCB8IHwvIF9ffCB8LyAvICB8IC8gX198XG5cXF9fIFxcIHwgfCAoX198ICAgPCBfIHwgXFxfXyBcXFxufF9fXy9ffF98XFxfX198X3xcXF8oXykvIHxfX18vXG4gICAgICAgICAgICAgICAgICAgfF9fL1xuXG4gVmVyc2lvbjogMS44LjFcbiAgQXV0aG9yOiBLZW4gV2hlZWxlclxuIFdlYnNpdGU6IGh0dHA6Ly9rZW53aGVlbGVyLmdpdGh1Yi5pb1xuICAgIERvY3M6IGh0dHA6Ly9rZW53aGVlbGVyLmdpdGh1Yi5pby9zbGlja1xuICAgIFJlcG86IGh0dHA6Ly9naXRodWIuY29tL2tlbndoZWVsZXIvc2xpY2tcbiAgSXNzdWVzOiBodHRwOi8vZ2l0aHViLmNvbS9rZW53aGVlbGVyL3NsaWNrL2lzc3Vlc1xuXG4gKi9cbi8qIGdsb2JhbCB3aW5kb3csIGRvY3VtZW50LCBkZWZpbmUsIGpRdWVyeSwgc2V0SW50ZXJ2YWwsIGNsZWFySW50ZXJ2YWwgKi9cbjsoZnVuY3Rpb24oZmFjdG9yeSkge1xuICAgICd1c2Ugc3RyaWN0JztcbiAgICBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKSB7XG4gICAgICAgIGRlZmluZShbJ2pxdWVyeSddLCBmYWN0b3J5KTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBleHBvcnRzICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICBtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZSgnanF1ZXJ5JykpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGZhY3RvcnkoalF1ZXJ5KTtcbiAgICB9XG5cbn0oZnVuY3Rpb24oJCkge1xuICAgICd1c2Ugc3RyaWN0JztcbiAgICB2YXIgU2xpY2sgPSB3aW5kb3cuU2xpY2sgfHwge307XG5cbiAgICBTbGljayA9IChmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
2XIgaW5zdGFuY2VVaWQgPSAwO1xuXG4gICAgICAgIGZ1bmN0aW9uIFNsaWNrKGVsZW1lbnQsIHNldHRpbmdzKSB7XG5cbiAgICAgICAgICAgIHZhciBfID0gdGhpcywgZGF0YVNldHRpbmdzO1xuXG4gICAgICAgICAgICBfLmRlZmF1bHRzID0ge1xuICAgICAgICAgICAgICAgIGFjY2Vzc2liaWxpdHk6IHRydWUsXG4gICAgICAgICAgICAgICAgYWRhcHRpdmVIZWlnaHQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGFwcGVuZEFycm93czogJChlbGVtZW50KSxcbiAgICAgICAgICAgICAgICBhcHBlbmREb3RzOiAkKGVsZW1lbnQpLFxuICAgICAgICAgICAgICAgIGFycm93czogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhc05hdkZvcjogbnVsbCxcbiAgICAgICAgICAgICAgICBwcmV2QXJyb3c6ICc8YnV0dG9uIGNsYXNzPVwic2xpY2stcHJldlwiIGFyaWEtbGFiZWw9XCJQcmV2aW91c1wiIHR5cGU9XCJidXR0b25cIj5QcmV2aW91czwvYnV0dG9uPicsXG4gICAgICAgICAgICAgICAgbmV4dEFycm93OiAnPGJ1dHRvbiBjbGFzcz1cInNsaWNrLW5leHRcIiBhcmlhLWxhYmVsPVwiTmV4dFwiIHR5cGU9XCJidXR0b25cIj5OZXh0PC9idXR0b24+JyxcbiAgICAgICAgICAgICAgICBhdXRvcGxheTogZmFsc2UsXG4gICAgICAgICAgICAgICAgYXV0b3BsYXlTcGVlZDogMzAwMCxcbiAgICAgICAgICAgICAgICBjZW50ZXJNb2RlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBjZW50ZXJQYWRkaW5nOiAnNTBweCcsXG4gICAgICAgICAgICAgICAgY3NzRWFzZTogJ2Vhc2UnLFxuICAgICAgICAgICAgICAgIGN1c3RvbVBhZ2luZzogZnVuY3Rpb24oc2xpZGVyLCBpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCc8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAvPicpLnRleHQoaSArIDEpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZG90czogZmFsc2UsXG4gICAgICAgICAgICAgICAgZG90c0NsYXNzOiAnc2xpY2stZG90cycsXG4gICAgICAgICAgICAgICAgZHJhZ2dhYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGVhc2luZzogJ2xpbmVhcicsXG4gICAgICAgICAgICAgICAgZWRnZUZyaWN0aW9uOiAwLjM1LFxuICAgICAgICAgICAgICAgIGZhZGU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZvY3VzT25TZWxlY3Q6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGZvY3VzT25DaGFuZ2U6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGluZmluaXRlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGluaXRpYWxTbGlkZTogMCxcbiAgICAgICAgICAgICAgICBsYXp5TG9hZDogJ29uZGVtYW5kJyxcbiAgICAgICAgICAgICAgICBtb2JpbGVGaXJzdDogZmFsc2UsXG4gICAgICAgICAgICAgICAgcGF1c2VPbkhvdmVyOiB0cnVlLFxuICAgICAgICAgICAgICAgIHBhdXNlT25Gb2N1czogdHJ1ZSxcbiAgICAgICAgICAgICAgICBwYXVzZU9uRG90c0hvdmVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgICByZXNwb25kVG86ICd3aW5kb3cnLFxuICAgICAgICAgICAgICAgIHJlc3BvbnNpdmU6IG51bGwsXG4gICAgICAgICAgICAgICAgcm93czogMSxcbiAgICAgICAgICAgICAgICBydGw6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNsaWRlOiAnJyxcbiAgICAgICAgICAgICAgICBzbGlkZXNQZXJSb3c6IDEsXG4gICAgICAgICAgICAgICAgc2xpZGVzVG9TaG93OiAxLFxuICAgICAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgICAgIHNwZWVkOiA1MDAsXG4gICAgICAgICAgICAgICAgc3dpcGU6IHRydWUsXG4gICAgICAgICAgICAgICAgc3dpcGVUb1NsaWRlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB0b3VjaE1vdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgdG91Y2hUaHJlc2hvbGQ6IDUsXG4gICAgICAgICAgICAgICAgdXNlQ1NTOiB0cnVlLFxuICAgICAgICAgICAgICAgIHVzZVRyYW5zZm9ybTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB2Y
2XJpYWJsZVdpZHRoOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB2ZXJ0aWNhbDogZmFsc2UsXG4gICAgICAgICAgICAgICAgdmVydGljYWxTd2lwaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB3YWl0Rm9yQW5pbWF0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IDEwMDBcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIF8uaW5pdGlhbHMgPSB7XG4gICAgICAgICAgICAgICAgYW5pbWF0aW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBkcmFnZ2luZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgYXV0b1BsYXlUaW1lcjogbnVsbCxcbiAgICAgICAgICAgICAgICBjdXJyZW50RGlyZWN0aW9uOiAwLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRMZWZ0OiBudWxsLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRTbGlkZTogMCxcbiAgICAgICAgICAgICAgICBkaXJlY3Rpb246IDEsXG4gICAgICAgICAgICAgICAgJGRvdHM6IG51bGwsXG4gICAgICAgICAgICAgICAgbGlzdFdpZHRoOiBudWxsLFxuICAgICAgICAgICAgICAgIGxpc3RIZWlnaHQ6IG51bGwsXG4gICAgICAgICAgICAgICAgbG9hZEluZGV4OiAwLFxuICAgICAgICAgICAgICAgICRuZXh0QXJyb3c6IG51bGwsXG4gICAgICAgICAgICAgICAgJHByZXZBcnJvdzogbnVsbCxcbiAgICAgICAgICAgICAgICBzY3JvbGxpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNsaWRlQ291bnQ6IG51bGwsXG4gICAgICAgICAgICAgICAgc2xpZGVXaWR0aDogbnVsbCxcbiAgICAgICAgICAgICAgICAkc2xpZGVUcmFjazogbnVsbCxcbiAgICAgICAgICAgICAgICAkc2xpZGVzOiBudWxsLFxuICAgICAgICAgICAgICAgIHNsaWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHNsaWRlT2Zmc2V0OiAwLFxuICAgICAgICAgICAgICAgIHN3aXBlTGVmdDogbnVsbCxcbiAgICAgICAgICAgICAgICBzd2lwaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAkbGlzdDogbnVsbCxcbiAgICAgICAgICAgICAgICB0b3VjaE9iamVjdDoge30sXG4gICAgICAgICAgICAgICAgdHJhbnNmb3Jtc0VuYWJsZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHVuc2xpY2tlZDogZmFsc2VcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICQuZXh0ZW5kKF8sIF8uaW5pdGlhbHMpO1xuXG4gICAgICAgICAgICBfLmFjdGl2ZUJyZWFrcG9pbnQgPSBudWxsO1xuICAgICAgICAgICAgXy5hbmltVHlwZSA9IG51bGw7XG4gICAgICAgICAgICBfLmFuaW1Qcm9wID0gbnVsbDtcbiAgICAgICAgICAgIF8uYnJlYWtwb2ludHMgPSBbXTtcbiAgICAgICAgICAgIF8uYnJlYWtwb2ludFNldHRpbmdzID0gW107XG4gICAgICAgICAgICBfLmNzc1RyYW5zaXRpb25zID0gZmFsc2U7XG4gICAgICAgICAgICBfLmZvY3Vzc2VkID0gZmFsc2U7XG4gICAgICAgICAgICBfLmludGVycnVwdGVkID0gZmFsc2U7XG4gICAgICAgICAgICBfLmhpZGRlbiA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgXy5wYXVzZWQgPSB0cnVlO1xuICAgICAgICAgICAgXy5wb3NpdGlvblByb3AgPSBudWxsO1xuICAgICAgICAgICAgXy5yZXNwb25kVG8gPSBudWxsO1xuICAgICAgICAgICAgXy5yb3dDb3VudCA9IDE7XG4gICAgICAgICAgICBfLnNob3VsZENsaWNrID0gdHJ1ZTtcbiAgICAgICAgICAgIF8uJHNsaWRlciA9ICQoZWxlbWVudCk7XG4gICAgICAgICAgICBfLiRzbGlkZXNDYWNoZSA9IG51bGw7XG4gICAgICAgICAgICBfLnRyYW5zZm9ybVR5cGUgPSBudWxsO1xuICAgICAgICAgICAgXy50cmFuc2l0aW9uVHlwZSA9IG51bGw7XG4gICAgICAgICAgICBfLnZpc2liaWxpdHlDaGFuZ2UgPSAndmlzaWJpbGl0eWNoYW5nZSc7XG4gICAgICAgICAgICBfLndpbmRvd1dpZHRoID0gMDtcbiAgICAgICAgICAgIF8ud2luZG93VGltZXIgPSBudWxsO1xuXG4gICAgICAgICAgICBkYXRhU2V0dGluZ3MgPSAkKGVsZW1lbnQpLmRhdGEoJ3NsaWNrJykgfHwge307XG5cbiAgICAgICAgICAgIF8ub3B0aW9ucyA9ICQuZXh0ZW5kKHt9LCBfLmRlZmF1bHRzLCBzZXR0aW5ncywgZGF0YVNldHRpbmdzKTtcblxuICAgICAgICAgICAgXy5jdXJyZW50U2xpZGUgPSBfLm9wdGlvbnMuaW5pdGlhbFNsaWRlO1xuXG4gICAgICAgICAgICBfLm9yaWdpbmFsU2V0dGluZ3MgPSBfLm9wdGlvbnM7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2YgZG9jdW1lbnQubW96SGlkZGVuICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIF8uaGlkZGVuID0gJ21vekhpZGRlbic7XG4gICAgICAgICAgICAgICAgXy52aXNpYmlsaXR5Q2hhbmdlID0gJ21venZpc2liaWxpdHljaGFuZ2UnO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgZG9jdW1lbnQud2Via2l0SGlkZGVuICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgICAgIF8uaGlkZGVuID0gJ3dlYmtpdEhpZGRlbic7XG4gICAgICAgICAgICAgICAgXy52aXNpYmlsaXR5Q2hhbmdlID0gJ3dlYmtpdHZpc2liaWxpdHljaGFuZ2UnO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfLmF1dG9QbGF5ID0gJC5wcm94eShfLmF1dG9QbGF5LCBfKTtcbiAgICAgICAgICAgIF8uYXV0b1BsYXlDbGVhciA9ICQucHJveHkoXy5hdXRvUGxheUNsZWFyLCBfKTtcbiAgICAgICAgICAgIF8uYXV0b1BsYXlJdGVyYXRvciA9ICQucHJveHkoXy5hdXRvUGxheUl0ZXJhdG9yLCBfKTtcbiAgICAgICAgICAgIF8uY2hhbmdlU2xpZGUgPSAkLnByb3h5KF8uY2hhbmdlU2xpZGUsIF8pO1xuICAgICAgICAgICAgXy5jbGlja0hhbmRsZXIgPSAkLnByb3h5KF8uY2xpY2tIYW5kbGVyLCBfKTtcbiAgICAgICAgICAgIF8uc2VsZWN0SGFuZGxlciA9ICQucHJveHkoXy5zZWxlY3RIYW5kbGVyLCBfKTtcbiAgICAgICAgICAgIF8uc2V0UG9zaXRpb24gPSAkLnByb3h5KF8uc2V0UG9zaXRpb24sIF8pO1xuICAgICAgICAgICAgXy5zd2lwZUhhbmRsZXIgPSAkLnByb3h5KF8uc3dpcGVIYW5kbGVyLCBfKTtcbiAgICAgICAgICAgIF8uZHJhZ0hhbmRsZXIgPSAkLnByb3h5KF8uZHJhZ0hhbmRsZXIsIF8pO1xuICAgICAgICAgICAgXy5rZXlIYW5kbGVyID0gJC5wcm94eShfLmtleUhhbmRsZXIsIF8pO1xuXG4gICAgICAgICAgICBfLmluc3RhbmNlVWlkID0gaW5zdGFuY2VVaWQrKztcblxuICAgICAgICAgICAgLy8gQSBzaW1wbGUgd2F5IHRvIGNoZWNrIGZvciBIVE1MIHN0cmluZ3NcbiAgICAgICAgICAgIC8vIFN0cmljdCBIVE1MIHJlY29nbml0aW9uIChtdXN0IHN0YXJ0IHdpdGggPClcbiAgICAgICAgICAgIC8vIEV4dHJhY3RlZCBmcm9tIGpRdWVyeSB2MS4xMSBzb3VyY2VcbiAgICAgICAgICAgIF8uaHRtbEV4cHIgPSAvXig/OlxccyooPFtcXHdcXFddKz4pW14+XSopJC87XG5cblxuICAgICAgICAgICAgXy5yZWdpc3RlckJyZWFrcG9pbnRzKCk7XG4gICAgICAgICAgICBfLmluaXQo
2dHJ1ZSk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTbGljaztcblxuICAgIH0oKSk7XG5cbiAgICBTbGljay5wcm90b3R5cGUuYWN0aXZhdGVBREEgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uJHNsaWRlVHJhY2suZmluZCgnLnNsaWNrLWFjdGl2ZScpLmF0dHIoe1xuICAgICAgICAgICAgJ2FyaWEtaGlkZGVuJzogJ2ZhbHNlJ1xuICAgICAgICB9KS5maW5kKCdhLCBpbnB1dCwgYnV0dG9uLCBzZWxlY3QnKS5hdHRyKHtcbiAgICAgICAgICAgICd0YWJpbmRleCc6ICcwJ1xuICAgICAgICB9KTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYWRkU2xpZGUgPSBTbGljay5wcm90b3R5cGUuc2xpY2tBZGQgPSBmdW5jdGlvbihtYXJrdXAsIGluZGV4LCBhZGRCZWZvcmUpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHR5cGVvZihpbmRleCkgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgYWRkQmVmb3JlID0gaW5kZXg7XG4gICAgICAgICAgICBpbmRleCA9IG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPCAwIHx8IChpbmRleCA+PSBfLnNsaWRlQ291bnQpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBfLnVubG9hZCgpO1xuXG4gICAgICAgIGlmICh0eXBlb2YoaW5kZXgpID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgaWYgKGluZGV4ID09PSAwICYmIF8uJHNsaWRlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAkKG1hcmt1cCkuYXBwZW5kVG8oXy4kc2xpZGVUcmFjayk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGFkZEJlZm9yZSkge1xuICAgICAgICAgICAgICAgICQobWFya3VwKS5pbnNlcnRCZWZvcmUoXy4kc2xpZGVzLmVxKGluZGV4KSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICQobWFya3VwKS5pbnNlcnRBZnRlcihfLiRzbGlkZXMuZXEoaW5kZXgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChhZGRCZWZvcmUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAkKG1hcmt1cCkucHJlcGVuZFRvKF8uJHNsaWRlVHJhY2spO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAkKG1hcmt1cCkuYXBwZW5kVG8oXy4kc2xpZGVUcmFjayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBfLiRzbGlkZXMgPSBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSk7XG5cbiAgICAgICAgXy4kc2xpZGVUcmFjay5jaGlsZHJlbih0aGlzLm9wdGlvbnMuc2xpZGUpLmRldGFjaCgpO1xuXG4gICAgICAgIF8uJHNsaWRlVHJhY2suYXBwZW5kKF8uJHNsaWRlcyk7XG5cbiAgICAgICAgXy4kc2xpZGVzLmVhY2goZnVuY3Rpb24oaW5kZXgsIGVsZW1lbnQpIHtcbiAgICAgICAgICAgICQoZWxlbWVudCkuYXR0cignZGF0YS1zbGljay1pbmRleCcsIGluZGV4KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgXy4kc2xpZGVzQ2FjaGUgPSBfLiRzbGlkZXM7XG5cbiAgICAgICAgXy5yZWluaXQoKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYW5pbWF0ZUhlaWdodCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2Y
2XIgXyA9IHRoaXM7XG4gICAgICAgIGlmIChfLm9wdGlvbnMuc2xpZGVzVG9TaG93ID09PSAxICYmIF8ub3B0aW9ucy5hZGFwdGl2ZUhlaWdodCA9PT0gdHJ1ZSAmJiBfLm9wdGlvbnMudmVydGljYWwgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB2YXIgdGFyZ2V0SGVpZ2h0ID0gXy4kc2xpZGVzLmVxKF8uY3VycmVudFNsaWRlKS5vdXRlckhlaWdodCh0cnVlKTtcbiAgICAgICAgICAgIF8uJGxpc3QuYW5pbWF0ZSh7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiB0YXJnZXRIZWlnaHRcbiAgICAgICAgICAgIH0sIF8ub3B0aW9ucy5zcGVlZCk7XG4gICAgICAgIH1cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmFuaW1hdGVTbGlkZSA9IGZ1bmN0aW9uKHRhcmdldExlZnQsIGNhbGxiYWNrKSB7XG5cbiAgICAgICAgdmFyIGFuaW1Qcm9wcyA9IHt9LFxuICAgICAgICAgICAgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5hbmltYXRlSGVpZ2h0KCk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5ydGwgPT09IHRydWUgJiYgXy5vcHRpb25zLnZlcnRpY2FsID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdGFyZ2V0TGVmdCA9IC10YXJnZXRMZWZ0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChfLnRyYW5zZm9ybXNFbmFibGVkID09PSBmYWxzZSkge1xuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy52ZXJ0aWNhbCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgICAgICBsZWZ0OiB0YXJnZXRMZWZ0XG4gICAgICAgICAgICAgICAgfSwgXy5vcHRpb25zLnNwZWVkLCBfLm9wdGlvbnMuZWFzaW5nLCBjYWxsYmFjayk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suYW5pbWF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIHRvcDogdGFyZ2V0TGVmdFxuICAgICAgICAgICAgICAgIH0sIF8ub3B0aW9ucy5zcGVlZCwgXy5vcHRpb25zLmVhc2luZywgY2FsbGJhY2spO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgIGlmIChfLmNzc1RyYW5zaXRpb25zID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIGlmIChfLm9wdGlvbnMucnRsID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIF8uY3VycmVudExlZnQgPSAtKF8uY3VycmVudExlZnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAkKHtcbiAgICAgICAgICAgICAgICAgICAgYW5pbVN0YXJ0OiBfLmN1cnJlbnRMZWZ0XG4gICAgICAgICAgICAgICAgfSkuYW5pbWF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIGFuaW1TdGFydDogdGFyZ2V0TGVmdFxuICAgICAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IF8ub3B0aW9ucy5zcGVlZCxcbiAgICAgICAgICAgICAgICAgICAgZWFzaW5nOiBfLm9wdGlvbnMuZWFzaW5nLFxuICAgICAgICAgICAgICAgICAgICBzdGVwOiBmdW5jdGlvbihub3cpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdyA9IE1hdGguY2VpbChub3cpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy52ZXJ0aWNhbCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmltUHJvcHNbXy5hbmltVHlwZV0gPSAndHJhbnNsYXRlKCcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3cgKyAncHgsIDBweCknO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY3NzKGFuaW1Qcm9wcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1Qcm9wc1tfLmFuaW1UeXBlXSA9ICd0cmFuc2xhdGUoMHB4LCcgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3cgKyAncHgpJztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcyhhbmltUHJvcHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjay5jYWxsKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgIF8uYXBwbHlUcmFuc2l0aW9uKCk7XG4gICAgICAgICAgICAgICAgdGFyZ2V0TGVmdCA9IE1hdGguY2VpbCh0YXJnZXRMZWZ0KTtcblxuICAgICAgICAgICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWwgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgICAgIGFuaW1Qcm9wc1tfLmFuaW1UeXBlXSA9ICd0cmFuc2xhdGUzZCgnICsgdGFyZ2V0TGVmdCArICdweCwgMHB4LCAwcHgpJztcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBhbmltUHJvcHNbXy5hbmltVHlwZV0gPSAndHJhbnNsYXRlM2QoMHB4LCcgKyB0YXJnZXRMZWZ0ICsgJ3B4LCAwcHgpJztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5jc3MoYW5pbVByb3BzKTtcblxuICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBfLmRpc2FibGVUcmFuc2l0aW9uKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrLmNhbGwoKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgXy5vcHRpb25zLnNwZWVkKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmdldE5hdlRhcmdldCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGFzTmF2Rm9yID0gXy5vcHRpb25zLmFzTmF2Rm9yO1xuXG4gICAgICAgIGlmICggYXNOYXZGb3IgJiYgYXNOYXZGb3IgIT09IG51bGwgKSB7XG4gICAgICAgICAgICBhc05hdkZvciA9ICQoYXNOYXZGb3IpLm5vdChfLiRzbGlkZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGFzTmF2Rm9yO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5hc05hdkZvciA9IGZ1bmN0aW9uKGluZGV4KSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgYXNOYXZGb3IgPSBfLmdldE5hdlRhcmdldCgpO1xuXG4gICAgICAgIGlmICggYXNOYXZGb3IgIT09IG51bGwgJiYgdHlwZW9mIGFzTmF2Rm9yID09PSAnb2JqZWN0JyApIHtcbiAgICAgICAgICAgIGFzTmF2Rm9yLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIHRhcmdldCA9ICQodGhpcykuc2xpY2soJ2dldFNsaWNrJyk7XG4gICAgICAgICAgICAgICAgaWYoIXRhcmdldC51bnNsaWNrZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnNsaWRlSGFuZGxlcihpbmRleCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgI
2H1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYXBwbHlUcmFuc2l0aW9uID0gZnVuY3Rpb24oc2xpZGUpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICB0cmFuc2l0aW9uID0ge307XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5mYWRlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdHJhbnNpdGlvbltfLnRyYW5zaXRpb25UeXBlXSA9IF8udHJhbnNmb3JtVHlwZSArICcgJyArIF8ub3B0aW9ucy5zcGVlZCArICdtcyAnICsgXy5vcHRpb25zLmNzc0Vhc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uW18udHJhbnNpdGlvblR5cGVdID0gJ29wYWNpdHkgJyArIF8ub3B0aW9ucy5zcGVlZCArICdtcyAnICsgXy5vcHRpb25zLmNzc0Vhc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLmZhZGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcyh0cmFuc2l0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8uJHNsaWRlcy5lcShzbGlkZSkuY3NzKHRyYW5zaXRpb24pO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmF1dG9QbGF5ID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uYXV0b1BsYXlDbGVhcigpO1xuXG4gICAgICAgIGlmICggXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyApIHtcbiAgICAgICAgICAgIF8uYXV0b1BsYXlUaW1lciA9IHNldEludGVydmFsKCBfLmF1dG9QbGF5SXRlcmF0b3IsIF8ub3B0aW9ucy5hdXRvcGxheVNwZWVkICk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYXV0b1BsYXlDbGVhciA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoXy5hdXRvUGxheVRpbWVyKSB7XG4gICAgICAgICAgICBjbGVhckludGVydmFsKF8uYXV0b1BsYXlUaW1lcik7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYXV0b1BsYXlJdGVyYXRvciA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIHNsaWRlVG8gPSBfLmN1cnJlbnRTbGlkZSArIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbDtcblxuICAgICAgICBpZiAoICFfLnBhdXNlZCAmJiAhXy5pbnRlcnJ1cHRlZCAmJiAhXy5mb2N1c3NlZCApIHtcblxuICAgICAgICAgICAgaWYgKCBfLm9wdGlvbnMuaW5maW5pdGUgPT09IGZhbHNlICkge1xuXG4gICAgICAgICAgICAgICAgaWYgKCBfLmRpcmVjdGlvbiA9PT0gMSAmJiAoIF8uY3VycmVudFNsaWRlICsgMSApID09PSAoIF8uc2xpZGVDb3VudCAtIDEgKSkge1xuICAgICAgICAgICAgICAgICAgICBfLmRpcmVjdGlvbiA9IDA7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoIF8uZGlyZWN0aW9uID09PSAwICkge1xuXG4gICAgICAgICAgICAgICAgICAgIHNsaWRlVG8gPSBfLmN1cnJlbnRTbGlkZSAtIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoIF8uY3VycmVudFNsaWRlIC0gMSA9PT0gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF8uZGlyZWN0aW9uID0gMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF8uc2xpZGVIYW5kbGVyKCBzbGlkZVRvICk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5idWlsZEFycm93cyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmFycm93cyA9PT0gdHJ1ZSApIHtcblxuICAgICAgICAgICAgXy4kcHJldkFycm93ID0gJChfLm9wdGlvbnMucHJldkFycm93KS5hZGRDbGFzcygnc2xpY2stYXJyb3cnKTtcbiAgICAgICAgICAgIF8uJG5leHRBcnJvdyA9ICQoXy5vcHRpb25zLm5leHRBcnJvdykuYWRkQ2xhc3MoJ3NsaWNrLWFycm93Jyk7XG5cbiAgICAgICAgICAgIGlmKCBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICkge1xuXG4gICAgICAgICAgICAgICAgXy4kcHJldkFycm93LnJlbW92ZUNsYXNzKCdzbGljay1oaWRkZW4nKS5yZW1vdmVBdHRyKCdhcmlhLWh
2pZGRlbiB0YWJpbmRleCcpO1xuICAgICAgICAgICAgICAgIF8uJG5leHRBcnJvdy5yZW1vdmVDbGFzcygnc2xpY2staGlkZGVuJykucmVtb3ZlQXR0cignYXJpYS1oaWRkZW4gdGFiaW5kZXgnKTtcblxuICAgICAgICAgICAgICAgIGlmIChfLmh0bWxFeHByLnRlc3QoXy5vcHRpb25zLnByZXZBcnJvdykpIHtcbiAgICAgICAgICAgICAgICAgICAgXy4kcHJldkFycm93LnByZXBlbmRUbyhfLm9wdGlvbnMuYXBwZW5kQXJyb3dzKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoXy5odG1sRXhwci50ZXN0KF8ub3B0aW9ucy5uZXh0QXJyb3cpKSB7XG4gICAgICAgICAgICAgICAgICAgIF8uJG5leHRBcnJvdy5hcHBlbmRUbyhfLm9wdGlvbnMuYXBwZW5kQXJyb3dzKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlICE9PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIF8uJHByZXZBcnJvd1xuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1kaXNhYmxlZCcpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignYXJpYS1kaXNhYmxlZCcsICd0cnVlJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgXy4kcHJldkFycm93LmFkZCggXy4kbmV4dEFycm93IClcblxuICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ3NsaWNrLWhpZGRlbicpXG4gICAgICAgICAgICAgICAgICAgIC5hdHRyKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdhcmlhLWRpc2FibGVkJzogJ3RydWUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ3RhYmluZGV4JzogJy0xJ1xuICAgICAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYnVpbGREb3RzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgaSwgZG90O1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZG90cyA9PT0gdHJ1ZSAmJiBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlci5hZGRDbGFzcygnc2xpY2stZG90dGVkJyk7XG5cbiAgICAgICAgICAgIGRvdCA9ICQoJzx1bCAvPicpLmFkZENsYXNzKF8ub3B0aW9ucy5kb3RzQ2xhc3MpO1xuXG4gICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IF8uZ2V0RG90Q291bnQoKTsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgZG90LmFwcGVuZCgkKCc8bGkgLz4nKS5hcHBlbmQoXy5vcHRpb25zLmN1c3RvbVBhZ2luZy5jYWxsKHRoaXMsIF8sIGkpKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF8uJGRvdHMgPSBkb3QuYXBwZW5kVG8oXy5vcHRpb25zLmFwcGVuZERvdHMpO1xuXG4gICAgICAgICAgICBfLiRkb3RzLmZpbmQoJ2xpJykuZmlyc3QoKS5hZGRDbGFzcygnc2xpY2stYWN0aXZlJyk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5idWlsZE91dCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLiRzbGlkZXMgPVxuICAgICAgICAgICAgXy4kc2xpZGVyXG4gICAgICAgICAgICAgICAgLmNoaWxkcmVuKCBfLm9wdGlvbnMuc2xpZGUgKyAnOm5vdCguc2xpY2stY2xvbmVkKScpXG4gICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1zbGlkZScpO1xuXG4gICAgICAgIF8uc2xpZGVDb3VudCA9IF8uJHNsaWRlcy5sZW5ndGg7XG5cbiAgICAgICAgXy4kc2xpZGVzLmVhY2goZnVuY3Rpb24oaW5kZXgsIGVsZW1lbnQpIHtcbiAgICAgICAgICAgICQoZWxlbWVudClcbiAgICAgICAgICAgICAgICAuYXR0cignZGF0YS1zbGljay1pbmRleCcsIGluZGV4KVxuICAgICAgICAgICAgICAgIC5kYXRhKCdvcmlnaW5hbFN0eWxpbmcnLCAkKGVsZW1lbnQpLmF0dHIoJ3N0eWxlJykgfHwgJycpO1xuICAgICAgICB9KTtcblxuICAgICAgICBfLiRzbGlkZXIuYWRkQ2xhc3MoJ3NsaWNrLXNsaWRlcicpO1xuXG4gICAgICAgIF8uJHNsaWRlVHJhY2sgPSAoXy5zbGlkZUNvdW50ID09PSAwKSA/XG4gICAgICAgICAgICAkKCc8ZGl2IGNsYXNzPVwic2xpY2stdHJhY2tcIi8+JykuYXBwZW5kVG8oXy4kc2xpZGVyKSA6XG4gICAgICAgICAgICBfLiRzbGlkZXMud3JhcEFsbCgnPGRpdiBjbGFzcz1cInNsaWNrLXRyYWNrXCIvPicpLnBhcmVudCgpO1xuXG4gICAgICAgIF8uJGxpc3QgPSBfLiRzbGlkZVRyYWNrLndyYXAoXG4gICAgICAgICAgICAnPGRpdiBjbGFzcz1cInNsaWNrLWxpc3RcIi8+JykucGFyZW50KCk7XG4gICAgICAgIF8uJHNsaWRlVHJhY2suY3NzKCdvcGFjaXR5JywgMCk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlIHx8IF8ub3B0aW9ucy5zd2lwZVRvU2xpZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA9IDE7XG4gICAgICAgIH1cblxuICAgICAgICAkKCdpbWdbZGF0YS1sYXp5XScsIF8uJHNsaWRlcikubm90KCdbc3JjXScpLmFkZENsYXNzKCdzbGljay1sb2FkaW5nJyk7XG5cbiAgICAgICAgXy5zZXR1cEluZmluaXRlKCk7XG5cbiAgICAgICAgXy5idWlsZEFycm93cygpO1xuXG4gICAgICAgIF8uYnVpbGREb3RzKCk7XG5cbiAgICAgICAgXy51cGRhdGVEb3RzKCk7XG5cblxuICAgICAgICBfLnNldFNsaWRlQ2xhc3Nlcyh0eXBlb2YgXy5jdXJyZW50U2xpZGUgPT09ICdudW1iZXInID8gXy5jdXJyZW50U2xpZGUgOiAwKTtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmRyYWdnYWJsZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy4kbGlzdC5hZGRDbGFzcygnZHJhZ2dhYmxlJyk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuYnVpbGRSb3dzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLCBhLCBiLCBjLCBuZXdTbGlkZXMsIG51bU9mU2xpZGVzLCBvcmlnaW5hbFNsaWRlcyxzbGlkZXNQZXJTZWN0aW9uO1xuXG4gICAgICAgIG5ld1NsaWRlcyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcbiAgICAgICAgb3JpZ2luYWxTbGlkZXMgPSBfLiRzbGlkZXIuY2hpbGRyZW4oKTtcblxuICAgICAgICBpZihfLm9wdGlvbnMucm93cyA+IDApIHtcblxuICAgICAgICAgICAgc2xpZGVzUGVyU2VjdGlvbiA9I
2F8ub3B0aW9ucy5zbGlkZXNQZXJSb3cgKiBfLm9wdGlvbnMucm93cztcbiAgICAgICAgICAgIG51bU9mU2xpZGVzID0gTWF0aC5jZWlsKFxuICAgICAgICAgICAgICAgIG9yaWdpbmFsU2xpZGVzLmxlbmd0aCAvIHNsaWRlc1BlclNlY3Rpb25cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGZvcihhID0gMDsgYSA8IG51bU9mU2xpZGVzOyBhKyspe1xuICAgICAgICAgICAgICAgIHZhciBzbGlkZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgICAgIGZvcihiID0gMDsgYiA8IF8ub3B0aW9ucy5yb3dzOyBiKyspIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgICAgICAgICAgICBmb3IoYyA9IDA7IGMgPCBfLm9wdGlvbnMuc2xpZGVzUGVyUm93OyBjKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0YXJnZXQgPSAoYSAqIHNsaWRlc1BlclNlY3Rpb24gKyAoKGIgKiBfLm9wdGlvbnMuc2xpZGVzUGVyUm93KSArIGMpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcmlnaW5hbFNsaWRlcy5nZXQodGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdy5hcHBlbmRDaGlsZChvcmlnaW5hbFNsaWRlcy5nZXQodGFyZ2V0KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgc2xpZGUuYXBwZW5kQ2hpbGQocm93KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmV3U2xpZGVzLmFwcGVuZENoaWxkKHNsaWRlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgXy4kc2xpZGVyLmVtcHR5KCkuYXBwZW5kKG5ld1NsaWRlcyk7XG4gICAgICAgICAgICBfLiRzbGlkZXIuY2hpbGRyZW4oKS5jaGlsZHJlbigpLmNoaWxkcmVuKClcbiAgICAgICAgICAgICAgICAuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJzooMTAwIC8gXy5vcHRpb25zLnNsaWRlc1BlclJvdykgKyAnJScsXG4gICAgICAgICAgICAgICAgICAgICdkaXNwbGF5JzogJ2lubGluZS1ibG9jaydcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmNoZWNrUmVzcG9uc2l2ZSA9IGZ1bmN0aW9uKGluaXRpYWwsIGZvcmNlVXBkYXRlKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgYnJlYWtwb2ludCwgdGFyZ2V0QnJlYWtwb2ludCwgcmVzcG9uZFRvV2lkdGgsIHRyaWdnZXJCcmVha3BvaW50ID0gZmFsc2U7XG4gICAgICAgIHZhciBzbGlkZXJXaWR0aCA9IF8uJHNsaWRlci53aWR0aCgpO1xuICAgICAgICB2Y
2XIgd2luZG93V2lkdGggPSB3aW5kb3cuaW5uZXJXaWR0aCB8fCAkKHdpbmRvdykud2lkdGgoKTtcblxuICAgICAgICBpZiAoXy5yZXNwb25kVG8gPT09ICd3aW5kb3cnKSB7XG4gICAgICAgICAgICByZXNwb25kVG9XaWR0aCA9IHdpbmRvd1dpZHRoO1xuICAgICAgICB9IGVsc2UgaWYgKF8ucmVzcG9uZFRvID09PSAnc2xpZGVyJykge1xuICAgICAgICAgICAgcmVzcG9uZFRvV2lkdGggPSBzbGlkZXJXaWR0aDtcbiAgICAgICAgfSBlbHNlIGlmIChfLnJlc3BvbmRUbyA9PT0gJ21pbicpIHtcbiAgICAgICAgICAgIHJlc3BvbmRUb1dpZHRoID0gTWF0aC5taW4od2luZG93V2lkdGgsIHNsaWRlcldpZHRoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggXy5vcHRpb25zLnJlc3BvbnNpdmUgJiZcbiAgICAgICAgICAgIF8ub3B0aW9ucy5yZXNwb25zaXZlLmxlbmd0aCAmJlxuICAgICAgICAgICAgXy5vcHRpb25zLnJlc3BvbnNpdmUgIT09IG51bGwpIHtcblxuICAgICAgICAgICAgdGFyZ2V0QnJlYWtwb2ludCA9IG51bGw7XG5cbiAgICAgICAgICAgIGZvciAoYnJlYWtwb2ludCBpbiBfLmJyZWFrcG9pbnRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKF8uYnJlYWtwb2ludHMuaGFzT3duUHJvcGVydHkoYnJlYWtwb2ludCkpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF8ub3JpZ2luYWxTZXR0aW5ncy5tb2JpbGVGaXJzdCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25kVG9XaWR0aCA8IF8uYnJlYWtwb2ludHNbYnJlYWtwb2ludF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRCcmVha3BvaW50ID0gXy5icmVha3BvaW50c1ticmVha3BvaW50XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25kVG9XaWR0aCA+IF8uYnJlYWtwb2ludHNbYnJlYWtwb2ludF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRCcmVha3BvaW50ID0gXy5icmVha3BvaW50c1ticmVha3BvaW50XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRhcmdldEJyZWFrcG9pbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBpZiAoXy5hY3RpdmVCcmVha3BvaW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRCcmVha3BvaW50ICE9PSBfLmFjdGl2ZUJyZWFrcG9pbnQgfHwgZm9yY2VVcGRhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF8uYWN0aXZlQnJlYWtwb2ludCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QnJlYWtwb2ludDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfLmJyZWFrcG9pbnRTZXR0aW5nc1t0YXJnZXRCcmVha3BvaW50XSA9PT0gJ3Vuc2xpY2snKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXy51bnNsaWNrKHRhcmdldEJyZWFrcG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLm9wdGlvbnMgPSAkLmV4dGVuZCh7fSwgXy5vcmlnaW5hbFNldHRpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmJyZWFrcG9pbnRTZXR0aW5nc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldEJyZWFrcG9pbnRdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5pdGlhbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmN1cnJlbnRTbGlkZSA9IF8ub3B0aW9ucy5pbml0aWFsU2xpZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8ucmVmcmVzaChpbml0aWFsKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJCcmVha3BvaW50ID0gdGFyZ2V0QnJlYWtwb2ludDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIF8uYWN0aXZlQnJlYWtwb2ludCA9IHRhcmdldEJyZWFrcG9pbnQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChfLmJyZWFrcG9pbnRTZXR0aW5nc1t0YXJnZXRCcmVha3BvaW50XSA9PT0gJ3Vuc2xpY2snKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLnVuc2xpY2sodGFyZ2V0QnJlYWtwb2ludCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLm9wdGlvbnMgPSAkLmV4dGVuZCh7fSwgXy5vcmlnaW5hbFNldHRpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uYnJlYWtwb2ludFNldHRpbmdzW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRCcmVha3BvaW50XSk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5pdGlhbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uY3VycmVudFNsaWRlID0gXy5vcHRpb25zLmluaXRpYWxTbGlkZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIF8ucmVmcmVzaChpbml0aWFsKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyQnJlYWtwb2ludCA9IHRhcmdldEJyZWFrcG9pbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoXy5hY3RpdmVCcmVha3BvaW50ICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIF8uYWN0aXZlQnJlYWtwb2ludCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIF8ub3B0aW9ucyA9IF8ub3JpZ2luYWxTZXR0aW5ncztcbiAgICAgICAgICAgICAgICAgICAgaWYgKGluaXRpYWwgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF8uY3VycmVudFNsaWRlID0gXy5vcHRpb25zLmluaXRpYWxTbGlkZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBfLnJlZnJlc2goaW5pdGlhbCk7XG4gICAgICAgICAgICAgICAgICAgI
2HRyaWdnZXJCcmVha3BvaW50ID0gdGFyZ2V0QnJlYWtwb2ludDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIG9ubHkgdHJpZ2dlciBicmVha3BvaW50cyBkdXJpbmcgYW4gYWN0dWFsIGJyZWFrLiBub3Qgb24gaW5pdGlhbGl6ZS5cbiAgICAgICAgICAgIGlmKCAhaW5pdGlhbCAmJiB0cmlnZ2VyQnJlYWtwb2ludCAhPT0gZmFsc2UgKSB7XG4gICAgICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2JyZWFrcG9pbnQnLCBbXywgdHJpZ2dlckJyZWFrcG9pbnRdKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5jaGFuZ2VTbGlkZSA9IGZ1bmN0aW9uKGV2ZW50LCBkb250QW5pbWF0ZSkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgICR0YXJnZXQgPSAkKGV2ZW50LmN1cnJlbnRUYXJnZXQpLFxuICAgICAgICAgICAgaW5kZXhPZmZzZXQsIHNsaWRlT2Zmc2V0LCB1bmV2ZW5PZmZzZXQ7XG5cbiAgICAgICAgLy8gSWYgdGFyZ2V0IGlzIGEgbGluaywgcHJldmVudCBkZWZhdWx0IGFjdGlvbi5cbiAgICAgICAgaWYoJHRhcmdldC5pcygnYScpKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWYgdGFyZ2V0IGlzIG5vdCB0aGUgPGxpPiBlbGVtZW50IChpZTogYSBjaGlsZCksIGZpbmQgdGhlIDxsaT4uXG4gICAgICAgIGlmKCEkdGFyZ2V0LmlzKCdsaScpKSB7XG4gICAgICAgICAgICAkdGFyZ2V0ID0gJHRhcmdldC5jbG9zZXN0KCdsaScpO1xuICAgICAgICB9XG5cbiAgICAgICAgdW5ldmVuT2Zmc2V0ID0gKF8uc2xpZGVDb3VudCAlIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAhPT0gMCk7XG4gICAgICAgIGluZGV4T2Zmc2V0ID0gdW5ldmVuT2Zmc2V0ID8gMCA6IChfLnNsaWRlQ291bnQgLSBfLmN1cnJlbnRTbGlkZSkgJSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7XG5cbiAgICAgICAgc3dpdGNoIChldmVudC5kYXRhLm1lc3NhZ2UpIHtcblxuICAgICAgICAgICAgY2FzZSAncHJldmlvdXMnOlxuICAgICAgICAgICAgICAgIHNsaWRlT2Zmc2V0ID0gaW5kZXhPZmZzZXQgPT09IDAgPyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgOiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC0gaW5kZXhPZmZzZXQ7XG4gICAgICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgXy5zbGlkZUhhbmRsZXIoXy5jdXJyZW50U2xpZGUgLSBzbGlkZU9mZnNldCwgZmFsc2UsIGRvbnRBbmltYXRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ25leHQnOlxuICAgICAgICAgICAgICAgIHNsaWRlT2Zmc2V0ID0gaW5kZXhPZmZzZXQgPT09IDAgPyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgOiBpbmRleE9mZnNldDtcbiAgICAgICAgICAgICAgICBpZiAoXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgICAgICAgICBfLnNsaWRlSGFuZGxlcihfLmN1cnJlbnRTbGlkZSArIHNsaWRlT2Zmc2V0LCBmYWxzZSwgZG9udEFuaW1hdGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnaW5kZXgnOlxuICAgICAgICAgICAgICAgIHZhciBpbmRleCA9IGV2ZW50LmRhdGEuaW5kZXggPT09IDAgPyAwIDpcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQuZGF0YS5pbmRleCB8fCAkdGFyZ2V0LmluZGV4KCkgKiBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7XG5cbiAgICAgICAgICAgICAgICBfLnNsaWRlSGFuZGxlcihfLmNoZWNrTmF2aWdhYmxlKGluZGV4KSwgZmFsc2UsIGRvbnRBbmltYXRlKTtcbiAgICAgICAgICAgICAgICAkdGFyZ2V0LmNoaWxkcmVuKCkudHJpZ2dlcignZm9jdXMnKTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuY2hlY2tOYXZpZ2FibGUgPSBmdW5jdGlvbihpbmRleCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIG5hdmlnYWJsZXMsIHByZXZOYXZpZ2FibGU7XG5cbiAgICAgICAgbmF2aWdhYmxlcyA9IF8uZ2V0TmF2aWdhYmxlSW5kZXhlcygpO1xuICAgICAgICBwcmV2TmF2aWdhYmxlID0gMDtcbiAgICAgICAgaWYgKGluZGV4ID4gbmF2aWdhYmxlc1tuYXZpZ2FibGVzLmxlbmd0aCAtIDFdKSB7XG4gICAgICAgICAgICBpbmRleCA9IG5hdmlnYWJsZXNbbmF2aWdhYmxlcy5sZW5ndGggLSAxXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAodmFyIG4gaW4gbmF2aWdhYmxlcykge1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IG5hdmlnYWJsZXNbbl0pIHtcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBwcmV2TmF2aWdhYmxlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcHJldk5hdmlnYWJsZSA9IG5hdmlnYWJsZXNbbl07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5jbGVhblVwRXZlbnRzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZG90cyAmJiBfLiRkb3RzICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgICQoJ2xpJywgXy4kZG90cylcbiAgICAgICAgICAgICAgICAub2ZmKCdjbGljay5zbGljaycsIF8uY2hhbmdlU2xpZGUpXG4gICAgICAgICAgICAgICAgLm9mZignbW91c2VlbnRlci5zbGljaycsICQucHJveHkoXy5pbnRlcnJ1cHQsIF8sIHRydWUpKVxuICAgICAgICAgICAgICAgIC5vZmYoJ21vdXNlbGVhdmUuc2xpY2snLCAkLnByb3h5KF8uaW50ZXJydXB0LCBfLCBmYWxzZSkpO1xuXG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmFjY2Vzc2liaWxpdHkgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBfLiRkb3RzLm9mZigna2V5ZG93bi5zbGljaycsIF8ua2V5SGFuZGxlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgI
2H1cblxuICAgICAgICBfLiRzbGlkZXIub2ZmKCdmb2N1cy5zbGljayBibHVyLnNsaWNrJyk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5hcnJvd3MgPT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgXy4kcHJldkFycm93ICYmIF8uJHByZXZBcnJvdy5vZmYoJ2NsaWNrLnNsaWNrJywgXy5jaGFuZ2VTbGlkZSk7XG4gICAgICAgICAgICBfLiRuZXh0QXJyb3cgJiYgXy4kbmV4dEFycm93Lm9mZignY2xpY2suc2xpY2snLCBfLmNoYW5nZVNsaWRlKTtcblxuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgXy4kcHJldkFycm93ICYmIF8uJHByZXZBcnJvdy5vZmYoJ2tleWRvd24uc2xpY2snLCBfLmtleUhhbmRsZXIpO1xuICAgICAgICAgICAgICAgIF8uJG5leHRBcnJvdyAmJiBfLiRuZXh0QXJyb3cub2ZmKCdrZXlkb3duLnNsaWNrJywgXy5rZXlIYW5kbGVyKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIF8uJGxpc3Qub2ZmKCd0b3VjaHN0YXJ0LnNsaWNrIG1vdXNlZG93bi5zbGljaycsIF8uc3dpcGVIYW5kbGVyKTtcbiAgICAgICAgXy4kbGlzdC5vZmYoJ3RvdWNobW92ZS5zbGljayBtb3VzZW1vdmUuc2xpY2snLCBfLnN3aXBlSGFuZGxlcik7XG4gICAgICAgIF8uJGxpc3Qub2ZmKCd0b3VjaGVuZC5zbGljayBtb3VzZXVwLnNsaWNrJywgXy5zd2lwZUhhbmRsZXIpO1xuICAgICAgICBfLiRsaXN0Lm9mZigndG91Y2hjYW5jZWwuc2xpY2sgbW91c2VsZWF2ZS5zbGljaycsIF8uc3dpcGVIYW5kbGVyKTtcblxuICAgICAgICBfLiRsaXN0Lm9mZignY2xpY2suc2xpY2snLCBfLmNsaWNrSGFuZGxlcik7XG5cbiAgICAgICAgJChkb2N1bWVudCkub2ZmKF8udmlzaWJpbGl0eUNoYW5nZSwgXy52aXNpYmlsaXR5KTtcblxuICAgICAgICBfLmNsZWFuVXBTbGlkZUV2ZW50cygpO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy4kbGlzdC5vZmYoJ2tleWRvd24uc2xpY2snLCBfLmtleUhhbmRsZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5mb2N1c09uU2VsZWN0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAkKF8uJHNsaWRlVHJhY2spLmNoaWxkcmVuKCkub2ZmKCdjbGljay5zbGljaycsIF8uc2VsZWN0SGFuZGxlcik7XG4gICAgICAgIH1cblxuICAgICAgICAkKHdpbmRvdykub2ZmKCdvcmllbnRhdGlvbmNoYW5nZS5zbGljay5zbGljay0nICsgXy5pbnN0YW5jZVVpZCwgXy5vcmllbnRhdGlvbkNoYW5nZSk7XG5cbiAgICAgICAgJCh3aW5kb3cpLm9mZigncmVzaXplLnNsaWNrLnNsaWNrLScgKyBfLmluc3RhbmNlVWlkLCBfLnJlc2l6ZSk7XG5cbiAgICAgICAgJCgnW2RyYWdnYWJsZSE9dHJ1ZV0nLCBfLiRzbGlkZVRyYWNrKS5vZmYoJ2RyYWdzdGFydCcsIF8ucHJldmVudERlZmF1bHQpO1xuXG4gICAgICAgICQod2luZG93KS5vZmYoJ2xvYWQuc2xpY2suc2xpY2stJyArIF8uaW5zdGFuY2VVaWQsIF8uc2V0UG9zaXRpb24pO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5jbGVhblVwU2xpZGVFdmVudHMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
2XIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy4kbGlzdC5vZmYoJ21vdXNlZW50ZXIuc2xpY2snLCAkLnByb3h5KF8uaW50ZXJydXB0LCBfLCB0cnVlKSk7XG4gICAgICAgIF8uJGxpc3Qub2ZmKCdtb3VzZWxlYXZlLnNsaWNrJywgJC5wcm94eShfLmludGVycnVwdCwgXywgZmFsc2UpKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuY2xlYW5VcFJvd3MgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsIG9yaWdpbmFsU2xpZGVzO1xuXG4gICAgICAgIGlmKF8ub3B0aW9ucy5yb3dzID4gMCkge1xuICAgICAgICAgICAgb3JpZ2luYWxTbGlkZXMgPSBfLiRzbGlkZXMuY2hpbGRyZW4oKS5jaGlsZHJlbigpO1xuICAgICAgICAgICAgb3JpZ2luYWxTbGlkZXMucmVtb3ZlQXR0cignc3R5bGUnKTtcbiAgICAgICAgICAgIF8uJHNsaWRlci5lbXB0eSgpLmFwcGVuZChvcmlnaW5hbFNsaWRlcyk7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuY2xpY2tIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8uc2hvdWxkQ2xpY2sgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBldmVudC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24ocmVmcmVzaCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLmF1dG9QbGF5Q2xlYXIoKTtcblxuICAgICAgICBfLnRvdWNoT2JqZWN0ID0ge307XG5cbiAgICAgICAgXy5jbGVhblVwRXZlbnRzKCk7XG5cbiAgICAgICAgJCgnLnNsaWNrLWNsb25lZCcsIF8uJHNsaWRlcikuZGV0YWNoKCk7XG5cbiAgICAgICAgaWYgKF8uJGRvdHMpIHtcbiAgICAgICAgICAgIF8uJGRvdHMucmVtb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIF8uJHByZXZBcnJvdyAmJiBfLiRwcmV2QXJyb3cubGVuZ3RoICkge1xuXG4gICAgICAgICAgICBfLiRwcmV2QXJyb3dcbiAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoJ3NsaWNrLWRpc2FibGVkIHNsaWNrLWFycm93IHNsaWNrLWhpZGRlbicpXG4gICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2FyaWEtaGlkZGVuIGFyaWEtZGlzYWJsZWQgdGFiaW5kZXgnKVxuICAgICAgICAgICAgICAgIC5jc3MoJ2Rpc3BsYXknLCcnKTtcblxuICAgICAgICAgICAgaWYgKCBfLmh0bWxFeHByLnRlc3QoIF8ub3B0aW9ucy5wcmV2QXJyb3cgKSkge1xuICAgICAgICAgICAgICAgIF8uJHByZXZBcnJvdy5yZW1vdmUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggXy4kbmV4dEFycm93ICYmIF8uJG5leHRBcnJvdy5sZW5ndGggKSB7XG5cbiAgICAgICAgICAgIF8uJG5leHRBcnJvd1xuICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnc2xpY2stZGlzYWJsZWQgc2xpY2stYXJyb3cgc2xpY2staGlkZGVuJylcbiAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignYXJpYS1oaWRkZW4gYXJpYS1kaXNhYmxlZCB0YWJpbmRleCcpXG4gICAgICAgICAgICAgICAgLmNzcygnZGlzcGxheScsJycpO1xuXG4gICAgICAgICAgICBpZiAoIF8uaHRtbEV4cHIudGVzdCggXy5vcHRpb25zLm5leHRBcnJvdyApKSB7XG4gICAgICAgICAgICAgICAgXy4kbmV4dEFycm93LnJlbW92ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cblxuICAgICAgICBpZiAoXy4kc2xpZGVzKSB7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlc1xuICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnc2xpY2stc2xpZGUgc2xpY2stYWN0aXZlIHNsaWNrLWNlbnRlciBzbGljay12aXNpYmxlIHNsaWNrLWN1cnJlbnQnKVxuICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdhcmlhLWh
2pZGRlbicpXG4gICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoJ2RhdGEtc2xpY2staW5kZXgnKVxuICAgICAgICAgICAgICAgIC5lYWNoKGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignc3R5bGUnLCAkKHRoaXMpLmRhdGEoJ29yaWdpbmFsU3R5bGluZycpKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5jaGlsZHJlbih0aGlzLm9wdGlvbnMuc2xpZGUpLmRldGFjaCgpO1xuXG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmRldGFjaCgpO1xuXG4gICAgICAgICAgICBfLiRsaXN0LmRldGFjaCgpO1xuXG4gICAgICAgICAgICBfLiRzbGlkZXIuYXBwZW5kKF8uJHNsaWRlcyk7XG4gICAgICAgIH1cblxuICAgICAgICBfLmNsZWFuVXBSb3dzKCk7XG5cbiAgICAgICAgXy4kc2xpZGVyLnJlbW92ZUNsYXNzKCdzbGljay1zbGlkZXInKTtcbiAgICAgICAgXy4kc2xpZGVyLnJlbW92ZUNsYXNzKCdzbGljay1pbml0aWFsaXplZCcpO1xuICAgICAgICBfLiRzbGlkZXIucmVtb3ZlQ2xhc3MoJ3NsaWNrLWRvdHRlZCcpO1xuXG4gICAgICAgIF8udW5zbGlja2VkID0gdHJ1ZTtcblxuICAgICAgICBpZighcmVmcmVzaCkge1xuICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2Rlc3Ryb3knLCBbX10pO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmRpc2FibGVUcmFuc2l0aW9uID0gZnVuY3Rpb24oc2xpZGUpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICB0cmFuc2l0aW9uID0ge307XG5cbiAgICAgICAgdHJhbnNpdGlvbltfLnRyYW5zaXRpb25UeXBlXSA9ICcnO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZmFkZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY3NzKHRyYW5zaXRpb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgXy4kc2xpZGVzLmVxKHNsaWRlKS5jc3ModHJhbnNpdGlvbik7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZmFkZVNsaWRlID0gZnVuY3Rpb24oc2xpZGVJbmRleCwgY2FsbGJhY2spIHtcblxuICAgICAgICB2Y
2XIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8uY3NzVHJhbnNpdGlvbnMgPT09IGZhbHNlKSB7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlcy5lcShzbGlkZUluZGV4KS5jc3Moe1xuICAgICAgICAgICAgICAgIHpJbmRleDogXy5vcHRpb25zLnpJbmRleFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlcy5lcShzbGlkZUluZGV4KS5hbmltYXRlKHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAxXG4gICAgICAgICAgICB9LCBfLm9wdGlvbnMuc3BlZWQsIF8ub3B0aW9ucy5lYXNpbmcsIGNhbGxiYWNrKTtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICBfLmFwcGx5VHJhbnNpdGlvbihzbGlkZUluZGV4KTtcblxuICAgICAgICAgICAgXy4kc2xpZGVzLmVxKHNsaWRlSW5kZXgpLmNzcyh7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IF8ub3B0aW9ucy56SW5kZXhcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIF8uZGlzYWJsZVRyYW5zaXRpb24oc2xpZGVJbmRleCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2suY2FsbCgpO1xuICAgICAgICAgICAgICAgIH0sIF8ub3B0aW9ucy5zcGVlZCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5mYWRlU2xpZGVPdXQgPSBmdW5jdGlvbihzbGlkZUluZGV4KSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLmNzc1RyYW5zaXRpb25zID09PSBmYWxzZSkge1xuXG4gICAgICAgICAgICBfLiRzbGlkZXMuZXEoc2xpZGVJbmRleCkuYW5pbWF0ZSh7XG4gICAgICAgICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IF8ub3B0aW9ucy56SW5kZXggLSAyXG4gICAgICAgICAgICB9LCBfLm9wdGlvbnMuc3BlZWQsIF8ub3B0aW9ucy5lYXNpbmcpO1xuXG4gICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgIF8uYXBwbHlUcmFuc2l0aW9uKHNsaWRlSW5kZXgpO1xuXG4gICAgICAgICAgICBfLiRzbGlkZXMuZXEoc2xpZGVJbmRleCkuY3NzKHtcbiAgICAgICAgICAgICAgICBvcGFjaXR5OiAwLFxuICAgICAgICAgICAgICAgIHpJbmRleDogXy5vcHRpb25zLnpJbmRleCAtIDJcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZmlsdGVyU2xpZGVzID0gU2xpY2sucHJvdG90eXBlLnNsaWNrRmlsdGVyID0gZnVuY3Rpb24oZmlsdGVyKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChmaWx0ZXIgIT09IG51bGwpIHtcblxuICAgICAgICAgICAgXy4kc2xpZGVzQ2FjaGUgPSBfLiRzbGlkZXM7XG5cbiAgICAgICAgICAgIF8udW5sb2FkKCk7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKS5kZXRhY2goKTtcblxuICAgICAgICAgICAgXy4kc2xpZGVzQ2FjaGUuZmlsdGVyKGZpbHRlcikuYXBwZW5kVG8oXy4kc2xpZGVUcmFjayk7XG5cbiAgICAgICAgICAgIF8ucmVpbml0KCk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5mb2N1c0hhbmRsZXIgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
2XIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy4kc2xpZGVyXG4gICAgICAgICAgICAub2ZmKCdmb2N1cy5zbGljayBibHVyLnNsaWNrJylcbiAgICAgICAgICAgIC5vbignZm9jdXMuc2xpY2sgYmx1ci5zbGljaycsICcqJywgZnVuY3Rpb24oZXZlbnQpIHtcblxuICAgICAgICAgICAgZXZlbnQuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgICB2YXIgJHNmID0gJCh0aGlzKTtcblxuICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGlmKCBfLm9wdGlvbnMucGF1c2VPbkZvY3VzICkge1xuICAgICAgICAgICAgICAgICAgICBfLmZvY3Vzc2VkID0gJHNmLmlzKCc6Zm9jdXMnKTtcbiAgICAgICAgICAgICAgICAgICAgXy5hdXRvUGxheSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfSwgMCk7XG5cbiAgICAgICAgfSk7XG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5nZXRDdXJyZW50ID0gU2xpY2sucHJvdG90eXBlLnNsaWNrQ3VycmVudFNsaWRlID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuICAgICAgICByZXR1cm4gXy5jdXJyZW50U2xpZGU7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmdldERvdENvdW50ID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIHZhciBicmVha1BvaW50ID0gMDtcbiAgICAgICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgICAgICB2YXIgcGFnZXJRdHkgPSAwO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuaW5maW5pdGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGlmIChfLnNsaWRlQ291bnQgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgICAgICArK3BhZ2VyUXR5O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoYnJlYWtQb2ludCA8IF8uc2xpZGVDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICArK3BhZ2VyUXR5O1xuICAgICAgICAgICAgICAgICAgICBicmVha1BvaW50ID0gY291bnRlciArIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbDtcbiAgICAgICAgICAgICAgICAgICAgY291bnRlciArPSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyA/IF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA6IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3c7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBwYWdlclF0eSA9IF8uc2xpZGVDb3VudDtcbiAgICAgICAgfSBlbHNlIGlmKCFfLm9wdGlvbnMuYXNOYXZGb3IpIHtcbiAgICAgICAgICAgIHBhZ2VyUXR5ID0gMSArIE1hdGguY2VpbCgoXy5zbGlkZUNvdW50IC0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykgLyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwpO1xuICAgICAgICB9ZWxzZSB7XG4gICAgICAgICAgICB3aGlsZSAoYnJlYWtQb2ludCA8IF8uc2xpZGVDb3VudCkge1xuICAgICAgICAgICAgICAgICsrcGFnZXJRdHk7XG4gICAgICAgICAgICAgICAgYnJlYWtQb2ludCA9IGNvdW50ZXIgKyBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7XG4gICAgICAgICAgICAgICAgY291bnRlciArPSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyA/IF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA6IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3c7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFnZXJRdHkgLSAxO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5nZXRMZWZ0ID0gZnVuY3Rpb24oc2xpZGVJbmRleCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIHRhcmdldExlZnQsXG4gICAgICAgICAgICB2ZXJ0aWNhbEhlaWdodCxcbiAgICAgICAgICAgIHZlcnRpY2FsT2Zmc2V0ID0gMCxcbiAgICAgICAgICAgIHRhcmdldFNsaWRlLFxuICAgICAgICAgICAgY29lZjtcblxuICAgICAgICBfLnNsaWRlT2Zmc2V0ID0gMDtcbiAgICAgICAgdmVydGljYWxIZWlnaHQgPSBfLiRzbGlkZXMuZmlyc3QoKS5vdXRlckhlaWdodCh0cnVlKTtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgICAgIF8uc2xpZGVPZmZzZXQgPSAoXy5zbGlkZVdpZHRoICogXy5vcHRpb25zLnNsaWRlc1RvU2hvdykgKiAtMTtcbiAgICAgICAgICAgICAgICBjb2VmID0gLTFcblxuICAgICAgICAgICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWwgPT09IHRydWUgJiYgXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZWYgPSAtMS41O1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPT09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvZWYgPSAtMlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZlcnRpY2FsT2Zmc2V0ID0gKHZlcnRpY2FsSGVpZ2h0ICogXy5vcHRpb25zLnNsaWRlc1RvU2hvdykgKiBjb2VmO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCAlIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCAhPT0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChzbGlkZUluZGV4ICsgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsID4gXy5zbGlkZUNvdW50ICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNsaWRlSW5kZXggPiBfLnNsaWRlQ291bnQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF8uc2xpZGVPZmZzZXQgPSAoKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLSAoc2xpZGVJbmRleCAtIF8uc2xpZGVDb3VudCkpICogXy5zbGlkZVdpZHRoKSAqIC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWxPZmZzZXQgPSAoKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLSAoc2xpZGVJbmRleCAtIF8uc2xpZGVDb3VudCkpICogdmVydGljYWxIZWlnaHQpICogLTE7XG4gICAgICAgICAgICAgICAgICAgI
2H0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLnNsaWRlT2Zmc2V0ID0gKChfLnNsaWRlQ291bnQgJSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwpICogXy5zbGlkZVdpZHRoKSAqIC0xO1xuICAgICAgICAgICAgICAgICAgICAgICAgdmVydGljYWxPZmZzZXQgPSAoKF8uc2xpZGVDb3VudCAlIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCkgKiB2ZXJ0aWNhbEhlaWdodCkgKiAtMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzbGlkZUluZGV4ICsgXy5vcHRpb25zLnNsaWRlc1RvU2hvdyA+IF8uc2xpZGVDb3VudCkge1xuICAgICAgICAgICAgICAgIF8uc2xpZGVPZmZzZXQgPSAoKHNsaWRlSW5kZXggKyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSAtIF8uc2xpZGVDb3VudCkgKiBfLnNsaWRlV2lkdGg7XG4gICAgICAgICAgICAgICAgdmVydGljYWxPZmZzZXQgPSAoKHNsaWRlSW5kZXggKyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSAtIF8uc2xpZGVDb3VudCkgKiB2ZXJ0aWNhbEhlaWdodDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLnNsaWRlQ291bnQgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgXy5zbGlkZU9mZnNldCA9IDA7XG4gICAgICAgICAgICB2ZXJ0aWNhbE9mZnNldCA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUgJiYgXy5zbGlkZUNvdW50IDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgIF8uc2xpZGVPZmZzZXQgPSAoKF8uc2xpZGVXaWR0aCAqIE1hdGguZmxvb3IoXy5vcHRpb25zLnNsaWRlc1RvU2hvdykpIC8gMikgLSAoKF8uc2xpZGVXaWR0aCAqIF8uc2xpZGVDb3VudCkgLyAyKTtcbiAgICAgICAgfSBlbHNlIGlmIChfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSAmJiBfLm9wdGlvbnMuaW5maW5pdGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uc2xpZGVPZmZzZXQgKz0gXy5zbGlkZVdpZHRoICogTWF0aC5mbG9vcihfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC8gMikgLSBfLnNsaWRlV2lkdGg7XG4gICAgICAgIH0gZWxzZSBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uc2xpZGVPZmZzZXQgPSAwO1xuICAgICAgICAgICAgXy5zbGlkZU9mZnNldCArPSBfLnNsaWRlV2lkdGggKiBNYXRoLmZsb29yKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLyAyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWwgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB0YXJnZXRMZWZ0ID0gKChzbGlkZUluZGV4ICogXy5zbGlkZVdpZHRoKSAqIC0xKSArIF8uc2xpZGVPZmZzZXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0YXJnZXRMZWZ0ID0gKChzbGlkZUluZGV4ICogdmVydGljYWxIZWlnaHQpICogLTEpICsgdmVydGljYWxPZmZzZXQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLnZhcmlhYmxlV2lkdGggPT09IHRydWUpIHtcblxuICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA8PSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93IHx8IF8ub3B0aW9ucy5pbmZpbml0ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRTbGlkZSA9IF8uJHNsaWRlVHJhY2suY2hpbGRyZW4oJy5zbGljay1zbGlkZScpLmVxKHNsaWRlSW5kZXgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRTbGlkZSA9IF8uJHNsaWRlVHJhY2suY2hpbGRyZW4oJy5zbGljay1zbGlkZScpLmVxKHNsaWRlSW5kZXggKyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5ydGwgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBpZiAodGFyZ2V0U2xpZGVbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0TGVmdCA9IChfLiRzbGlkZVRyYWNrLndpZHRoKCkgLSB0YXJnZXRTbGlkZVswXS5vZmZzZXRMZWZ0IC0gdGFyZ2V0U2xpZGUud2lkdGgoKSkgKiAtMTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRMZWZ0ID0gIDA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRMZWZ0ID0gdGFyZ2V0U2xpZGVbMF0gPyB0YXJnZXRTbGlkZVswXS5vZmZzZXRMZWZ0ICogLTEgOiAwO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBpZiAoXy5zbGlkZUNvdW50IDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgfHwgXy5vcHRpb25zLmluZmluaXRlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRTbGlkZSA9IF8uJHNsaWRlVHJhY2suY2hpbGRyZW4oJy5zbGljay1zbGlkZScpLmVxKHNsaWRlSW5kZXgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRhcmdldFNsaWRlID0gXy4kc2xpZGVUcmFjay5jaGlsZHJlbignLnNsaWNrLXNsaWRlJykuZXEoc2xpZGVJbmRleCArIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgKyAxKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoXy5vcHRpb25zLnJ0bCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0U2xpZGVbMF0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldExlZnQgPSAoXy4kc2xpZGVUcmFjay53aWR0aCgpIC0gdGFyZ2V0U2xpZGVbMF0ub2Zmc2V0TGVmdCAtIHRhcmdldFNsaWRlLndpZHRoKCkpICogLTE7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRMZWZ0ID0gIDA7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRMZWZ0ID0gdGFyZ2V0U2xpZGVbMF0gPyB0YXJnZXRTbGlkZVswXS5vZmZzZXRMZWZ0ICogLTEgOiAwO1xuICAgICAgICAgICAgICAgI
2H1cblxuICAgICAgICAgICAgICAgIHRhcmdldExlZnQgKz0gKF8uJGxpc3Qud2lkdGgoKSAtIHRhcmdldFNsaWRlLm91dGVyV2lkdGgoKSkgLyAyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRhcmdldExlZnQ7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmdldE9wdGlvbiA9IFNsaWNrLnByb3RvdHlwZS5zbGlja0dldE9wdGlvbiA9IGZ1bmN0aW9uKG9wdGlvbikge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICByZXR1cm4gXy5vcHRpb25zW29wdGlvbl07XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmdldE5hdmlnYWJsZUluZGV4ZXMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICBicmVha1BvaW50ID0gMCxcbiAgICAgICAgICAgIGNvdW50ZXIgPSAwLFxuICAgICAgICAgICAgaW5kZXhlcyA9IFtdLFxuICAgICAgICAgICAgbWF4O1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuaW5maW5pdGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBtYXggPSBfLnNsaWRlQ291bnQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBicmVha1BvaW50ID0gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsICogLTE7XG4gICAgICAgICAgICBjb3VudGVyID0gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsICogLTE7XG4gICAgICAgICAgICBtYXggPSBfLnNsaWRlQ291bnQgKiAyO1xuICAgICAgICB9XG5cbiAgICAgICAgd2hpbGUgKGJyZWFrUG9pbnQgPCBtYXgpIHtcbiAgICAgICAgICAgIGluZGV4ZXMucHVzaChicmVha1BvaW50KTtcbiAgICAgICAgICAgIGJyZWFrUG9pbnQgPSBjb3VudGVyICsgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsO1xuICAgICAgICAgICAgY291bnRlciArPSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyA/IF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCA6IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3c7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5kZXhlcztcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZ2V0U2xpY2sgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICByZXR1cm4gdGhpcztcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZ2V0U2xpZGVDb3VudCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIHNsaWRlc1RyYXZlcnNlZCwgc3dpcGVkU2xpZGUsIGNlbnRlck9mZnNldDtcblxuICAgICAgICBjZW50ZXJPZmZzZXQgPSBfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSA/IF8uc2xpZGVXaWR0aCAqIE1hdGguZmxvb3IoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAvIDIpIDogMDtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLnN3aXBlVG9TbGlkZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5maW5kKCcuc2xpY2stc2xpZGUnKS5lYWNoKGZ1bmN0aW9uKGluZGV4LCBzbGlkZSkge1xuICAgICAgICAgICAgICAgIGlmIChzbGlkZS5vZmZzZXRMZWZ0IC0gY2VudGVyT2Zmc2V0ICsgKCQoc2xpZGUpLm91dGVyV2lkdGgoKSAvIDIpID4gKF8uc3dpcGVMZWZ0ICogLTEpKSB7XG4gICAgICAgICAgICAgICAgICAgIHN3aXBlZFNsaWRlID0gc2xpZGU7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgc2xpZGVzVHJhdmVyc2VkID0gTWF0aC5hYnMoJChzd2lwZWRTbGlkZSkuYXR0cignZGF0YS1zbGljay1pbmRleCcpIC0gXy5jdXJyZW50U2xpZGUpIHx8IDE7XG5cbiAgICAgICAgICAgIHJldHVybiBzbGlkZXNUcmF2ZXJzZWQ7XG5cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuZ29UbyA9IFNsaWNrLnByb3RvdHlwZS5zbGlja0dvVG8gPSBmdW5jdGlvbihzbGlkZSwgZG9udEFuaW1hdGUpIHtcblxuICAgICAgICB2Y
2XIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5jaGFuZ2VTbGlkZSh7XG4gICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ2luZGV4JyxcbiAgICAgICAgICAgICAgICBpbmRleDogcGFyc2VJbnQoc2xpZGUpXG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIGRvbnRBbmltYXRlKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKGNyZWF0aW9uKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmICghJChfLiRzbGlkZXIpLmhhc0NsYXNzKCdzbGljay1pbml0aWFsaXplZCcpKSB7XG5cbiAgICAgICAgICAgICQoXy4kc2xpZGVyKS5hZGRDbGFzcygnc2xpY2staW5pdGlhbGl6ZWQnKTtcblxuICAgICAgICAgICAgXy5idWlsZFJvd3MoKTtcbiAgICAgICAgICAgIF8uYnVpbGRPdXQoKTtcbiAgICAgICAgICAgIF8uc2V0UHJvcHMoKTtcbiAgICAgICAgICAgIF8uc3RhcnRMb2FkKCk7XG4gICAgICAgICAgICBfLmxvYWRTbGlkZXIoKTtcbiAgICAgICAgICAgIF8uaW5pdGlhbGl6ZUV2ZW50cygpO1xuICAgICAgICAgICAgXy51cGRhdGVBcnJvd3MoKTtcbiAgICAgICAgICAgIF8udXBkYXRlRG90cygpO1xuICAgICAgICAgICAgXy5jaGVja1Jlc3BvbnNpdmUodHJ1ZSk7XG4gICAgICAgICAgICBfLmZvY3VzSGFuZGxlcigpO1xuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3JlYXRpb24pIHtcbiAgICAgICAgICAgIF8uJHNsaWRlci50cmlnZ2VyKCdpbml0JywgW19dKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy5pbml0QURBKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIF8ub3B0aW9ucy5hdXRvcGxheSApIHtcblxuICAgICAgICAgICAgXy5wYXVzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIF8uYXV0b1BsYXkoKTtcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmluaXRBREEgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgICAgIG51bURvdEdyb3VwcyA9IE1hdGguY2VpbChfLnNsaWRlQ291bnQgLyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSxcbiAgICAgICAgICAgICAgICB0YWJDb250cm9sSW5kZXhlcyA9IF8uZ2V0TmF2aWdhYmxlSW5kZXhlcygpLmZpbHRlcihmdW5jdGlvbih2YWwpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh2YWwgPj0gMCkgJiYgKHZhbCA8IF8uc2xpZGVDb3VudCk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgXy4kc2xpZGVzLmFkZChfLiRzbGlkZVRyYWNrLmZpbmQoJy5zbGljay1jbG9uZWQnKSkuYXR0cih7XG4gICAgICAgICAgICAnYXJpYS1oaWRkZW4nOiAndHJ1ZScsXG4gICAgICAgICAgICAndGFiaW5kZXgnOiAnLTEnXG4gICAgICAgIH0pLmZpbmQoJ2EsIGlucHV0LCBidXR0b24sIHNlbGVjdCcpLmF0dHIoe1xuICAgICAgICAgICAgJ3RhYmluZGV4JzogJy0xJ1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoXy4kZG90cyAhPT0gbnVsbCkge1xuICAgICAgICAgICAgXy4kc2xpZGVzLm5vdChfLiRzbGlkZVRyYWNrLmZpbmQoJy5zbGljay1jbG9uZWQnKSkuZWFjaChmdW5jdGlvbihpKSB7XG4gICAgICAgICAgICAgICAgdmFyIHNsaWRlQ29udHJvbEluZGV4ID0gdGFiQ29udHJvbEluZGV4ZXMuaW5kZXhPZihpKTtcblxuICAgICAgICAgICAgICAgICQodGhpcykuYXR0cih7XG4gICAgICAgICAgICAgICAgICAgICdyb2xlJzogJ3RhYnBhbmVsJyxcbiAgICAgICAgICAgICAgICAgICAgJ2lkJzogJ3NsaWNrLXNsaWRlJyArIF8uaW5zdGFuY2VVaWQgKyBpLFxuICAgICAgICAgICAgICAgICAgICAndGFiaW5kZXgnOiAtMVxuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgaWYgKHNsaWRlQ29udHJvbEluZGV4ICE9PSAtMSkge1xuICAgICAgICAgICAgICAgICAgIHZhciBhcmlhQnV0dG9uQ29udHJvbCA9ICdzbGljay1zbGlkZS1jb250cm9sJyArIF8uaW5zdGFuY2VVaWQgKyBzbGlkZUNvbnRyb2xJbmRleFxuICAgICAgICAgICAgICAgICAgIGlmICgkKCcjJyArIGFyaWFCdXR0b25Db250cm9sKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgJ2FyaWEtZGVzY3JpYmVkYnknOiBhcmlhQnV0dG9uQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBfLiRkb3RzLmF0dHIoJ3JvbGUnLCAndGFibGlzdCcpLmZpbmQoJ2xpJykuZWFjaChmdW5jdGlvbihpKSB7XG4gICAgICAgICAgICAgICAgdmFyIG1hcHBlZFNsaWRlSW5kZXggPSB0YWJDb250cm9sSW5kZXhlc1tpXTtcblxuICAgICAgICAgICAgICAgICQodGhpcykuYXR0cih7XG4gICAgICAgICAgICAgICAgICAgICdyb2xlJzogJ3ByZXNlbnRhdGlvbidcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnYnV0dG9uJykuZmlyc3QoKS5hdHRyKHtcbiAgICAgICAgICAgICAgICAgICAgJ3JvbGUnOiAndGFiJyxcbiAgICAgICAgICAgICAgICAgICAgJ2lkJzogJ3NsaWNrLXNsaWRlLWNvbnRyb2wnICsgXy5pbnN0YW5jZVVpZCArIGksXG4gICAgICAgICAgICAgICAgICAgICdhcmlhLWNvbnRyb2xzJzogJ3NsaWNrLXNsaWRlJyArIF8uaW5zdGFuY2VVaWQgKyBtYXBwZWRTbGlkZUluZGV4LFxuICAgICAgICAgICAgICAgICAgICAnYXJpYS1sYWJlbCc6IChpICsgMSkgKyAnIG9mICcgKyBudW1Eb3RHcm91cHMsXG4gICAgICAgICAgICAgICAgICAgICdhcmlhLXNlbGVjdGVkJzogbnVsbCxcbiAgICAgICAgICAgICAgICAgICAgJ3RhYmluZGV4JzogJy0xJ1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICB9KS5lcShfLmN1cnJlbnRTbGlkZSkuZmluZCgnYnV0dG9uJykuYXR0cih7XG4gICAgICAgICAgICAgICAgJ2FyaWEtc2VsZWN0ZWQnOiAndHJ1ZScsXG4gICAgICAgICAgICAgICAgJ3RhYmluZGV4JzogJzAnXG4gICAgICAgICAgICB9KS5lbmQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAodmFyIGk9Xy5jdXJyZW50U2xpZGUsIG1heD1pK18ub3B0aW9ucy5zbGlkZXNUb1Nob3c7IGkgPCBtYXg7IGkrKykge1xuICAgICAgICAgIGlmIChfLm9wdGlvbnMuZm9jdXNPbkNoYW5nZSkge1xuICAgICAgICAgICAgXy4kc2xpZGVzLmVxKGkpLmF0dHIoey
2d0YWJpbmRleCc6ICcwJ30pO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBfLiRzbGlkZXMuZXEoaSkucmVtb3ZlQXR0cigndGFiaW5kZXgnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBfLmFjdGl2YXRlQURBKCk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmluaXRBcnJvd0V2ZW50cyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmFycm93cyA9PT0gdHJ1ZSAmJiBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICBfLiRwcmV2QXJyb3dcbiAgICAgICAgICAgICAgIC5vZmYoJ2NsaWNrLnNsaWNrJylcbiAgICAgICAgICAgICAgIC5vbignY2xpY2suc2xpY2snLCB7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdwcmV2aW91cydcbiAgICAgICAgICAgICAgIH0sIF8uY2hhbmdlU2xpZGUpO1xuICAgICAgICAgICAgXy4kbmV4dEFycm93XG4gICAgICAgICAgICAgICAub2ZmKCdjbGljay5zbGljaycpXG4gICAgICAgICAgICAgICAub24oJ2NsaWNrLnNsaWNrJywge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnbmV4dCdcbiAgICAgICAgICAgICAgIH0sIF8uY2hhbmdlU2xpZGUpO1xuXG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmFjY2Vzc2liaWxpdHkgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBfLiRwcmV2QXJyb3cub24oJ2tleWRvd24uc2xpY2snLCBfLmtleUhhbmRsZXIpO1xuICAgICAgICAgICAgICAgIF8uJG5leHRBcnJvdy5vbigna2V5ZG93bi5zbGljaycsIF8ua2V5SGFuZGxlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuaW5pdERvdEV2ZW50cyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmRvdHMgPT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgJCgnbGknLCBfLiRkb3RzKS5vbignY2xpY2suc2xpY2snLCB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ2luZGV4J1xuICAgICAgICAgICAgfSwgXy5jaGFuZ2VTbGlkZSk7XG5cbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuYWNjZXNzaWJpbGl0eSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIF8uJGRvdHMub24oJ2tleWRvd24uc2xpY2snLCBfLmtleUhhbmRsZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5kb3RzID09PSB0cnVlICYmIF8ub3B0aW9ucy5wYXVzZU9uRG90c0hvdmVyID09PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcblxuICAgICAgICAgICAgJCgnbGknLCBfLiRkb3RzKVxuICAgICAgICAgICAgICAgIC5vbignbW91c2VlbnRlci5zbGljaycsICQucHJveHkoXy5pbnRlcnJ1cHQsIF8sIHRydWUpKVxuICAgICAgICAgICAgICAgIC5vbignbW91c2VsZWF2ZS5zbGljaycsICQucHJveHkoXy5pbnRlcnJ1cHQsIF8sIGZhbHNlKSk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5pbml0U2xpZGVFdmVudHMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
2XIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKCBfLm9wdGlvbnMucGF1c2VPbkhvdmVyICkge1xuXG4gICAgICAgICAgICBfLiRsaXN0Lm9uKCdtb3VzZWVudGVyLnNsaWNrJywgJC5wcm94eShfLmludGVycnVwdCwgXywgdHJ1ZSkpO1xuICAgICAgICAgICAgXy4kbGlzdC5vbignbW91c2VsZWF2ZS5zbGljaycsICQucHJveHkoXy5pbnRlcnJ1cHQsIF8sIGZhbHNlKSk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5pbml0aWFsaXplRXZlbnRzID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uaW5pdEFycm93RXZlbnRzKCk7XG5cbiAgICAgICAgXy5pbml0RG90RXZlbnRzKCk7XG4gICAgICAgIF8uaW5pdFNsaWRlRXZlbnRzKCk7XG5cbiAgICAgICAgXy4kbGlzdC5vbigndG91Y2hzdGFydC5zbGljayBtb3VzZWRvd24uc2xpY2snLCB7XG4gICAgICAgICAgICBhY3Rpb246ICdzdGFydCdcbiAgICAgICAgfSwgXy5zd2lwZUhhbmRsZXIpO1xuICAgICAgICBfLiRsaXN0Lm9uKCd0b3VjaG1vdmUuc2xpY2sgbW91c2Vtb3ZlLnNsaWNrJywge1xuICAgICAgICAgICAgYWN0aW9uOiAnbW92ZSdcbiAgICAgICAgfSwgXy5zd2lwZUhhbmRsZXIpO1xuICAgICAgICBfLiRsaXN0Lm9uKCd0b3VjaGVuZC5zbGljayBtb3VzZXVwLnNsaWNrJywge1xuICAgICAgICAgICAgYWN0aW9uOiAnZW5kJ1xuICAgICAgICB9LCBfLnN3aXBlSGFuZGxlcik7XG4gICAgICAgIF8uJGxpc3Qub24oJ3RvdWNoY2FuY2VsLnNsaWNrIG1vdXNlbGVhdmUuc2xpY2snLCB7XG4gICAgICAgICAgICBhY3Rpb246ICdlbmQnXG4gICAgICAgIH0sIF8uc3dpcGVIYW5kbGVyKTtcblxuICAgICAgICBfLiRsaXN0Lm9uKCdjbGljay5zbGljaycsIF8uY2xpY2tIYW5kbGVyKTtcblxuICAgICAgICAkKGRvY3VtZW50KS5vbihfLnZpc2liaWxpdHlDaGFuZ2UsICQucHJveHkoXy52aXNpYmlsaXR5LCBfKSk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLiRsaXN0Lm9uKCdrZXlkb3duLnNsaWNrJywgXy5rZXlIYW5kbGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZm9jdXNPblNlbGVjdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgJChfLiRzbGlkZVRyYWNrKS5jaGlsZHJlbigpLm9uKCdjbGljay5zbGljaycsIF8uc2VsZWN0SGFuZGxlcik7XG4gICAgICAgIH1cblxuICAgICAgICAkKHdpbmRvdykub24oJ29yaWVudGF0aW9uY2hhbmdlLnNsaWNrLnNsaWNrLScgKyBfLmluc3RhbmNlVWlkLCAkLnByb3h5KF8ub3JpZW50YXRpb25DaGFuZ2UsIF8pKTtcblxuICAgICAgICAkKHdpbmRvdykub24oJ3Jlc2l6ZS5zbGljay5zbGljay0nICsgXy5pbnN0YW5jZVVpZCwgJC5wcm94eShfLnJlc2l6ZSwgXykpO1xuXG4gICAgICAgICQoJ1tkcmFnZ2FibGUhPXRydWVdJywgXy4kc2xpZGVUcmFjaykub24oJ2RyYWdzdGFydCcsIF8ucHJldmVudERlZmF1bHQpO1xuXG4gICAgICAgICQod2luZG93KS5vbignbG9hZC5zbGljay5zbGljay0nICsgXy5pbnN0YW5jZVVpZCwgXy5zZXRQb3NpdGlvbik7XG4gICAgICAgICQoXy5zZXRQb3NpdGlvbik7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmluaXRVSSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmFycm93cyA9PT0gdHJ1ZSAmJiBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG5cbiAgICAgICAgICAgIF8uJHByZXZBcnJvdy5zaG93KCk7XG4gICAgICAgICAgICBfLiRuZXh0QXJyb3cuc2hvdygpO1xuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLmRvdHMgPT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuXG4gICAgICAgICAgICBfLiRkb3RzLnNob3coKTtcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmtleUhhbmRsZXIgPSBmdW5jdGlvbihldmVudCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcbiAgICAgICAgIC8vRG9udCBzbGlkZSBpZiB0aGUgY3Vyc29yIGlzIGluc2lkZSB0aGUgZm9ybSBmaWVsZHMgYW5kIGFycm93IGtleXMgYXJlIHByZXNzZWRcbiAgICAgICAgaWYoIWV2ZW50LnRhcmdldC50YWdOYW1lLm1hdGNoKCdURVhUQVJFQXxJTlBVVHxTRUxFQ1QnKSkge1xuICAgICAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDM3ICYmIF8ub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgXy5jaGFuZ2VTbGlkZSh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IF8ub3B0aW9ucy5ydGwgPT09IHRydWUgPyAnbmV4dCcgOiAgJ3ByZXZpb3VzJ1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmtleUNvZGUgPT09IDM5ICYmIF8ub3B0aW9ucy5hY2Nlc3NpYmlsaXR5ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgXy5jaGFuZ2VTbGlkZSh7XG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IF8ub3B0aW9ucy5ydGwgPT09IHRydWUgPyAncHJldmlvdXMnIDogJ25leHQnXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5sYXp5TG9hZCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGxvYWRSYW5nZSwgY2xvbmVSYW5nZSwgcmFuZ2VTdGFydCwgcmFuZ2VFbmQ7XG5cbiAgICAgICAgZnVuY3Rpb24gbG9hZEltYWdlcyhpbWFnZXNTY29wZSkge1xuXG4gICAgICAgICAgICAkKCdpbWdbZGF0YS1sYXp5XScsIGltYWdlc1Njb3BlKS5lYWNoKGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgdmFyIGltYWdlID0gJCh0aGlzKSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VTb3VyY2UgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtbGF6eScpLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZVNyY1NldCA9ICQodGhpcykuYXR0cignZGF0YS1zcmNzZXQnKSxcbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VTaXplcyAgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtc2l6ZXMnKSB8fCBfLiRzbGlkZXIuYXR0cignZGF0YS1zaXplcycpLFxuICAgICAgICAgICAgICAgICAgICBpbWFnZVRvTG9hZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuXG4gICAgICAgICAgICAgICAgaW1hZ2VUb0xvYWQub25sb2FkID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hbmltYXRlKHsgb3BhY2l0eTogMCB9
2LCAxMDAsIGZ1bmN0aW9uKCkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlU3JjU2V0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignc3Jjc2V0JywgaW1hZ2VTcmNTZXQgKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW1hZ2VTaXplcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignc2l6ZXMnLCBpbWFnZVNpemVzICk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignc3JjJywgaW1hZ2VTb3VyY2UpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hbmltYXRlKHsgb3BhY2l0eTogMSB9LCAyMDAsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQXR0cignZGF0YS1sYXp5IGRhdGEtc3Jjc2V0IGRhdGEtc2l6ZXMnKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnc2xpY2stbG9hZGluZycpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignbGF6eUxvYWRlZCcsIFtfLCBpbWFnZSwgaW1hZ2VTb3VyY2VdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICAgIGltYWdlVG9Mb2FkLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgICAgICBpbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZUF0dHIoICdkYXRhLWxhenknIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcyggJ3NsaWNrLWxvYWRpbmcnIClcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcyggJ3NsaWNrLWxhenlsb2FkLWVycm9yJyApO1xuXG4gICAgICAgICAgICAgICAgICAgIF8uJHNsaWRlci50cmlnZ2VyKCdsYXp5TG9hZEVycm9yJywgWyBfLCBpbWFnZSwgaW1hZ2VTb3VyY2UgXSk7XG5cbiAgICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgICAgaW1hZ2VUb0xvYWQuc3JjID0gaW1hZ2VTb3VyY2U7XG5cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuaW5maW5pdGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICByYW5nZVN0YXJ0ID0gXy5jdXJyZW50U2xpZGUgKyAoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAvIDIgKyAxKTtcbiAgICAgICAgICAgICAgICByYW5nZUVuZCA9IHJhbmdlU3RhcnQgKyBfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICsgMjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmFuZ2VTdGFydCA9IE1hdGgubWF4KDAsIF8uY3VycmVudFNsaWRlIC0gKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgLyAyICsgMSkpO1xuICAgICAgICAgICAgICAgIHJhbmdlRW5kID0gMiArIChfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC8gMiArIDEpICsgXy5jdXJyZW50U2xpZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByYW5nZVN0YXJ0ID0gXy5vcHRpb25zLmluZmluaXRlID8gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyArIF8uY3VycmVudFNsaWRlIDogXy5jdXJyZW50U2xpZGU7XG4gICAgICAgICAgICByYW5nZUVuZCA9IE1hdGguY2VpbChyYW5nZVN0YXJ0ICsgXy5vcHRpb25zLnNsaWRlc1RvU2hvdyk7XG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmZhZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBpZiAocmFuZ2VTdGFydCA+IDApIHJhbmdlU3RhcnQtLTtcbiAgICAgICAgICAgICAgICBpZiAocmFuZ2VFbmQgPD0gXy5zbGlkZUNvdW50KSByYW5nZUVuZCsrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgbG9hZFJhbmdlID0gXy4kc2xpZGVyLmZpbmQoJy5zbGljay1zbGlkZScpLnNsaWNlKHJhbmdlU3RhcnQsIHJhbmdlRW5kKTtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmxhenlMb2FkID09PSAnYW50aWNpcGF0ZWQnKSB7XG4gICAgICAgICAgICB2Y
2XIgcHJldlNsaWRlID0gcmFuZ2VTdGFydCAtIDEsXG4gICAgICAgICAgICAgICAgbmV4dFNsaWRlID0gcmFuZ2VFbmQsXG4gICAgICAgICAgICAgICAgJHNsaWRlcyA9IF8uJHNsaWRlci5maW5kKCcuc2xpY2stc2xpZGUnKTtcblxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGw7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmIChwcmV2U2xpZGUgPCAwKSBwcmV2U2xpZGUgPSBfLnNsaWRlQ291bnQgLSAxO1xuICAgICAgICAgICAgICAgIGxvYWRSYW5nZSA9IGxvYWRSYW5nZS5hZGQoJHNsaWRlcy5lcShwcmV2U2xpZGUpKTtcbiAgICAgICAgICAgICAgICBsb2FkUmFuZ2UgPSBsb2FkUmFuZ2UuYWRkKCRzbGlkZXMuZXEobmV4dFNsaWRlKSk7XG4gICAgICAgICAgICAgICAgcHJldlNsaWRlLS07XG4gICAgICAgICAgICAgICAgbmV4dFNsaWRlKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsb2FkSW1hZ2VzKGxvYWRSYW5nZSk7XG5cbiAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA8PSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICBjbG9uZVJhbmdlID0gXy4kc2xpZGVyLmZpbmQoJy5zbGljay1zbGlkZScpO1xuICAgICAgICAgICAgbG9hZEltYWdlcyhjbG9uZVJhbmdlKTtcbiAgICAgICAgfSBlbHNlXG4gICAgICAgIGlmIChfLmN1cnJlbnRTbGlkZSA+PSBfLnNsaWRlQ291bnQgLSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICBjbG9uZVJhbmdlID0gXy4kc2xpZGVyLmZpbmQoJy5zbGljay1jbG9uZWQnKS5zbGljZSgwLCBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KTtcbiAgICAgICAgICAgIGxvYWRJbWFnZXMoY2xvbmVSYW5nZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoXy5jdXJyZW50U2xpZGUgPT09IDApIHtcbiAgICAgICAgICAgIGNsb25lUmFuZ2UgPSBfLiRzbGlkZXIuZmluZCgnLnNsaWNrLWNsb25lZCcpLnNsaWNlKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgKiAtMSk7XG4gICAgICAgICAgICBsb2FkSW1hZ2VzKGNsb25lUmFuZ2UpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmxvYWRTbGlkZXIgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
2XIgXyA9IHRoaXM7XG5cbiAgICAgICAgXy5zZXRQb3NpdGlvbigpO1xuXG4gICAgICAgIF8uJHNsaWRlVHJhY2suY3NzKHtcbiAgICAgICAgICAgIG9wYWNpdHk6IDFcbiAgICAgICAgfSk7XG5cbiAgICAgICAgXy4kc2xpZGVyLnJlbW92ZUNsYXNzKCdzbGljay1sb2FkaW5nJyk7XG5cbiAgICAgICAgXy5pbml0VUkoKTtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmxhenlMb2FkID09PSAncHJvZ3Jlc3NpdmUnKSB7XG4gICAgICAgICAgICBfLnByb2dyZXNzaXZlTGF6eUxvYWQoKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5uZXh0ID0gU2xpY2sucHJvdG90eXBlLnNsaWNrTmV4dCA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLmNoYW5nZVNsaWRlKHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiAnbmV4dCdcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLm9yaWVudGF0aW9uQ2hhbmdlID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uY2hlY2tSZXNwb25zaXZlKCk7XG4gICAgICAgIF8uc2V0UG9zaXRpb24oKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucGF1c2UgPSBTbGljay5wcm90b3R5cGUuc2xpY2tQYXVzZSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLmF1dG9QbGF5Q2xlYXIoKTtcbiAgICAgICAgXy5wYXVzZWQgPSB0cnVlO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5wbGF5ID0gU2xpY2sucHJvdG90eXBlLnNsaWNrUGxheSA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLmF1dG9QbGF5KCk7XG4gICAgICAgIF8ub3B0aW9ucy5hdXRvcGxheSA9IHRydWU7XG4gICAgICAgIF8ucGF1c2VkID0gZmFsc2U7XG4gICAgICAgIF8uZm9jdXNzZWQgPSBmYWxzZTtcbiAgICAgICAgXy5pbnRlcnJ1cHRlZCA9IGZhbHNlO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5wb3N0U2xpZGUgPSBmdW5jdGlvbihpbmRleCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiggIV8udW5zbGlja2VkICkge1xuXG4gICAgICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignYWZ0ZXJDaGFuZ2UnLCBbXywgaW5kZXhdKTtcblxuICAgICAgICAgICAgXy5hbmltYXRpbmcgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgICAgICBfLnNldFBvc2l0aW9uKCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF8uc3dpcGVMZWZ0ID0gbnVsbDtcblxuICAgICAgICAgICAgaWYgKCBfLm9wdGlvbnMuYXV0b3BsYXkgKSB7XG4gICAgICAgICAgICAgICAgXy5hdXRvUGxheSgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLmFjY2Vzc2liaWxpdHkgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICBfLmluaXRBREEoKTtcblxuICAgICAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuZm9jdXNPbkNoYW5nZSkge1xuICAgICAgICAgICAgICAgICAgICB2Y
2XIgJGN1cnJlbnRTbGlkZSA9ICQoXy4kc2xpZGVzLmdldChfLmN1cnJlbnRTbGlkZSkpO1xuICAgICAgICAgICAgICAgICAgICAkY3VycmVudFNsaWRlLmF0dHIoJ3RhYmluZGV4JywgMCkuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5wcmV2ID0gU2xpY2sucHJvdG90eXBlLnNsaWNrUHJldiA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLmNoYW5nZVNsaWRlKHtcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiAncHJldmlvdXMnXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5wcmV2ZW50RGVmYXVsdCA9IGZ1bmN0aW9uKGV2ZW50KSB7XG5cbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucHJvZ3Jlc3NpdmVMYXp5TG9hZCA9IGZ1bmN0aW9uKCB0cnlDb3VudCApIHtcblxuICAgICAgICB0cnlDb3VudCA9IHRyeUNvdW50IHx8IDE7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgJGltZ3NUb0xvYWQgPSAkKCAnaW1nW2RhdGEtbGF6eV0nLCBfLiRzbGlkZXIgKSxcbiAgICAgICAgICAgIGltYWdlLFxuICAgICAgICAgICAgaW1hZ2VTb3VyY2UsXG4gICAgICAgICAgICBpbWFnZVNyY1NldCxcbiAgICAgICAgICAgIGltYWdlU2l6ZXMsXG4gICAgICAgICAgICBpbWFnZVRvTG9hZDtcblxuICAgICAgICBpZiAoICRpbWdzVG9Mb2FkLmxlbmd0aCApIHtcblxuICAgICAgICAgICAgaW1hZ2UgPSAkaW1nc1RvTG9hZC5maXJzdCgpO1xuICAgICAgICAgICAgaW1hZ2VTb3VyY2UgPSBpbWFnZS5hdHRyKCdkYXRhLWxhenknKTtcbiAgICAgICAgICAgIGltYWdlU3JjU2V0ID0gaW1hZ2UuYXR0cignZGF0YS1zcmNzZXQnKTtcbiAgICAgICAgICAgIGltYWdlU2l6ZXMgID0gaW1hZ2UuYXR0cignZGF0YS1zaXplcycpIHx8IF8uJHNsaWRlci5hdHRyKCdkYXRhLXNpemVzJyk7XG4gICAgICAgICAgICBpbWFnZVRvTG9hZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuXG4gICAgICAgICAgICBpbWFnZVRvTG9hZC5vbmxvYWQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICAgICAgICAgIGlmIChpbWFnZVNyY1NldCkge1xuICAgICAgICAgICAgICAgICAgICBpbWFnZVxuICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ3NyY3NldCcsIGltYWdlU3JjU2V0ICk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGltYWdlU2l6ZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ3NpemVzJywgaW1hZ2VTaXplcyApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgLmF0dHIoICdzcmMnLCBpbWFnZVNvdXJjZSApXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCdkYXRhLWxhenkgZGF0YS1zcmNzZXQgZGF0YS1zaXplcycpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnc2xpY2stbG9hZGluZycpO1xuXG4gICAgICAgICAgICAgICAgaWYgKCBfLm9wdGlvbnMuYWRhcHRpdmVIZWlnaHQgPT09IHRydWUgKSB7XG4gICAgICAgICAgICAgICAgICAgIF8uc2V0UG9zaXRpb24oKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignbGF6eUxvYWRlZCcsIFsgXywgaW1hZ2UsIGltYWdlU291cmNlIF0pO1xuICAgICAgICAgICAgICAgIF8ucHJvZ3Jlc3NpdmVMYXp5TG9hZCgpO1xuXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpbWFnZVRvTG9hZC5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgICAgICAgICBpZiAoIHRyeUNvdW50IDwgMyApIHtcblxuICAgICAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICAgICAgICogdHJ5IHRvIGxvYWQgdGhlIGltYWdlIDMgdGltZXMsXG4gICAgICAgICAgICAgICAgICAgICAqIGxlYXZlIGEgc2xpZ2h0IGRlbGF5IHNvIHdlIGRvbid0IGdldFxuICAgICAgICAgICAgICAgICAgICAgKiBzZXJ2ZXJzIGJsb2NraW5nIHRoZSByZXF1ZXN0LlxuICAgICAgICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCggZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLnByb2dyZXNzaXZlTGF6eUxvYWQoIHRyeUNvdW50ICsgMSApO1xuICAgICAgICAgICAgICAgICAgICB9LCA1MDAgKTtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICAgICAgaW1hZ2VcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVBdHRyKCAnZGF0YS1sYXp5JyApXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVtb3ZlQ2xhc3MoICdzbGljay1sb2FkaW5nJyApXG4gICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoICdzbGljay1sYXp5bG9hZC1lcnJvcicgKTtcblxuICAgICAgICAgICAgICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignbGF6eUxvYWRFcnJvcicsIFsgXywgaW1hZ2UsIGltYWdlU291cmNlIF0pO1xuXG4gICAgICAgICAgICAgICAgICAgIF8ucHJvZ3Jlc3NpdmVMYXp5TG9hZCgpO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBpbWFnZVRvTG9hZC5zcmMgPSBpbWFnZVNvdXJjZTtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignYWxsSW1hZ2VzTG9hZGVkJywgWyBfIF0pO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucmVmcmVzaCA9IGZ1bmN0aW9uKCBpbml0aWFsaXppbmcgKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLCBjdXJyZW50U2xpZGUsIGxhc3RWaXNpYmxlSW5kZXg7XG5cbiAgICAgICAgbGFzdFZpc2libGVJbmRleCA9IF8uc2xpZGVDb3VudCAtIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3c7XG5cbiAgICAgICAgLy8gaW4gbm9uLWluZmluaXRlIHNsaWRlcnMsIHdlIGRvbid0IHdhbnQgdG8gZ28gcGFzdCB0aGVcbiAgICAgICAgLy8gbGFzdCB2aXN
2pYmxlIGluZGV4LlxuICAgICAgICBpZiggIV8ub3B0aW9ucy5pbmZpbml0ZSAmJiAoIF8uY3VycmVudFNsaWRlID4gbGFzdFZpc2libGVJbmRleCApKSB7XG4gICAgICAgICAgICBfLmN1cnJlbnRTbGlkZSA9IGxhc3RWaXNpYmxlSW5kZXg7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBpZiBsZXNzIHNsaWRlcyB0aGFuIHRvIHNob3csIGdvIHRvIHN0YXJ0LlxuICAgICAgICBpZiAoIF8uc2xpZGVDb3VudCA8PSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICkge1xuICAgICAgICAgICAgXy5jdXJyZW50U2xpZGUgPSAwO1xuXG4gICAgICAgIH1cblxuICAgICAgICBjdXJyZW50U2xpZGUgPSBfLmN1cnJlbnRTbGlkZTtcblxuICAgICAgICBfLmRlc3Ryb3kodHJ1ZSk7XG5cbiAgICAgICAgJC5leHRlbmQoXywgXy5pbml0aWFscywgeyBjdXJyZW50U2xpZGU6IGN1cnJlbnRTbGlkZSB9KTtcblxuICAgICAgICBfLmluaXQoKTtcblxuICAgICAgICBpZiggIWluaXRpYWxpemluZyApIHtcblxuICAgICAgICAgICAgXy5jaGFuZ2VTbGlkZSh7XG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiAnaW5kZXgnLFxuICAgICAgICAgICAgICAgICAgICBpbmRleDogY3VycmVudFNsaWRlXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgZmFsc2UpO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucmVnaXN0ZXJCcmVha3BvaW50cyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcywgYnJlYWtwb2ludCwgY3VycmVudEJyZWFrcG9pbnQsIGwsXG4gICAgICAgICAgICByZXNwb25zaXZlU2V0dGluZ3MgPSBfLm9wdGlvbnMucmVzcG9uc2l2ZSB8fCBudWxsO1xuXG4gICAgICAgIGlmICggJC50eXBlKHJlc3BvbnNpdmVTZXR0aW5ncykgPT09ICdhcnJheScgJiYgcmVzcG9uc2l2ZVNldHRpbmdzLmxlbmd0aCApIHtcblxuICAgICAgICAgICAgXy5yZXNwb25kVG8gPSBfLm9wdGlvbnMucmVzcG9uZFRvIHx8ICd3aW5kb3cnO1xuXG4gICAgICAgICAgICBmb3IgKCBicmVha3BvaW50IGluIHJlc3BvbnNpdmVTZXR0aW5ncyApIHtcblxuICAgICAgICAgICAgICAgIGwgPSBfLmJyZWFrcG9pbnRzLmxlbmd0aC0xO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNpdmVTZXR0aW5ncy5oYXNPd25Qcm9wZXJ0eShicmVha3BvaW50KSkge1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50QnJlYWtwb2ludCA9IHJlc3BvbnNpdmVTZXR0aW5nc1ticmVha3BvaW50XS5icmVha3BvaW50O1xuXG4gICAgICAgICAgICAgICAgICAgIC8vIGxvb3AgdGhyb3VnaCB0aGUgYnJlYWtwb2ludHMgYW5kIGN1dCBvdXQgYW55IGV4aXN0aW5nXG4gICAgICAgICAgICAgICAgICAgIC8vIG9uZXMgd2l0aCB0aGUgc2FtZSBicmVha3BvaW50IG51bWJlciwgd2UgZG9uJ3Qgd2FudCBkdXBlcy5cbiAgICAgICAgICAgICAgICAgICAgd2hpbGUoIGwgPj0gMCApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBfLmJyZWFrcG9pbnRzW2xdICYmIF8uYnJlYWtwb2ludHNbbF0gPT09IGN1cnJlbnRCcmVha3BvaW50ICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uYnJlYWtwb2ludHMuc3BsaWNlKGwsMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBsLS07XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBfLmJyZWFrcG9pbnRzLnB1c2goY3VycmVudEJyZWFrcG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICBfLmJyZWFrcG9pbnRTZXR0aW5nc1tjdXJyZW50QnJlYWtwb2ludF0gPSByZXNwb25zaXZlU2V0dGluZ3NbYnJlYWtwb2ludF0uc2V0dGluZ3M7XG5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgXy5icmVha3BvaW50cy5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gKCBfLm9wdGlvbnMubW9iaWxlRmlyc3QgKSA/IGEtYiA6IGItYTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIH1cblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUucmVpbml0ID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIF8uJHNsaWRlcyA9XG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrXG4gICAgICAgICAgICAgICAgLmNoaWxkcmVuKF8ub3B0aW9ucy5zbGlkZSlcbiAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ3NsaWNrLXNsaWRlJyk7XG5cbiAgICAgICAgXy5zbGlkZUNvdW50ID0gXy4kc2xpZGVzLmxlbmd0aDtcblxuICAgICAgICBpZiAoXy5jdXJyZW50U2xpZGUgPj0gXy5zbGlkZUNvdW50ICYmIF8uY3VycmVudFNsaWRlICE9PSAwKSB7XG4gICAgICAgICAgICBfLmN1cnJlbnRTbGlkZSA9IF8uY3VycmVudFNsaWRlIC0gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA8PSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICBfLmN1cnJlbnRTbGlkZSA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBfLnJlZ2lzdGVyQnJlYWtwb2ludHMoKTtcblxuICAgICAgICBfLnNldFByb3BzKCk7XG4gICAgICAgIF8uc2V0dXBJbmZpbml0ZSgpO1xuICAgICAgICBfLmJ1aWxkQXJyb3dzKCk7XG4gICAgICAgIF8udXBkYXRlQXJyb3dzKCk7XG4gICAgICAgIF8uaW5pdEFycm93RXZlbnRzKCk7XG4gICAgICAgIF8uYnVpbGREb3RzKCk7XG4gICAgICAgIF8udXBkYXRlRG90cygpO1xuICAgICAgICBfLmluaXREb3RFdmVudHMoKTtcbiAgICAgICAgXy5jbGVhblVwU2xpZGVFdmVudHMoKTtcbiAgICAgICAgXy5pbml0U2xpZGVFdmVudHMoKTtcblxuICAgICAgICBfLmNoZWNrUmVzcG9uc2l2ZShmYWxzZSwgdHJ1ZSk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5mb2N1c09uU2VsZWN0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAkKF8uJHNsaWRlVHJhY2spLmNoaWxkcmVuKCkub24oJ2NsaWNrLnNsaWNrJywgXy5zZWxlY3RIYW5kbGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF8uc2V0U2xpZGVDbGFzc2VzKHR5cGVvZiBfLmN1cnJlbnRTbGlkZSA9PT0gJ251bWJlcicgPyBfLmN1cnJlbnRTbGlkZSA6IDApO1xuXG4gICAgICAgIF8uc2V0UG9zaXRpb24oKTtcbiAgICAgICAgXy5mb2N1c0hhbmRsZXIoKTtcblxuICAgICAgICBfLnBhdXNlZCA9ICFfLm9wdGlvbnMuYXV0b3BsYXk7XG4gICAgICAgIF8uYXV0b1BsYXkoKTtcblxuICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcigncmVJbml0JywgW19dKTtcblxuICAgI
2H07XG5cbiAgICBTbGljay5wcm90b3R5cGUucmVzaXplID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmICgkKHdpbmRvdykud2lkdGgoKSAhPT0gXy53aW5kb3dXaWR0aCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KF8ud2luZG93RGVsYXkpO1xuICAgICAgICAgICAgXy53aW5kb3dEZWxheSA9IHdpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgIF8ud2luZG93V2lkdGggPSAkKHdpbmRvdykud2lkdGgoKTtcbiAgICAgICAgICAgICAgICBfLmNoZWNrUmVzcG9uc2l2ZSgpO1xuICAgICAgICAgICAgICAgIGlmKCAhXy51bnNsaWNrZWQgKSB7IF8uc2V0UG9zaXRpb24oKTsgfVxuICAgICAgICAgICAgfSwgNTApO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5yZW1vdmVTbGlkZSA9IFNsaWNrLnByb3RvdHlwZS5zbGlja1JlbW92ZSA9IGZ1bmN0aW9uKGluZGV4LCByZW1vdmVCZWZvcmUsIHJlbW92ZUFsbCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAodHlwZW9mKGluZGV4KSA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgICAgICByZW1vdmVCZWZvcmUgPSBpbmRleDtcbiAgICAgICAgICAgIGluZGV4ID0gcmVtb3ZlQmVmb3JlID09PSB0cnVlID8gMCA6IF8uc2xpZGVDb3VudCAtIDE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpbmRleCA9IHJlbW92ZUJlZm9yZSA9PT0gdHJ1ZSA/IC0taW5kZXggOiBpbmRleDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChfLnNsaWRlQ291bnQgPCAxIHx8IGluZGV4IDwgMCB8fCBpbmRleCA+IF8uc2xpZGVDb3VudCAtIDEpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIF8udW5sb2FkKCk7XG5cbiAgICAgICAgaWYgKHJlbW92ZUFsbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5jaGlsZHJlbigpLnJlbW92ZSgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5jaGlsZHJlbih0aGlzLm9wdGlvbnMuc2xpZGUpLmVxKGluZGV4KS5yZW1vdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF8uJHNsaWRlcyA9IF8uJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKTtcblxuICAgICAgICBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKHRoaXMub3B0aW9ucy5zbGlkZSkuZGV0YWNoKCk7XG5cbiAgICAgICAgXy4kc2xpZGVUcmFjay5hcHBlbmQoXy4kc2xpZGVzKTtcblxuICAgICAgICBfLiRzbGlkZXNDYWNoZSA9IF8uJHNsaWRlcztcblxuICAgICAgICBfLnJlaW5pdCgpO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZXRDU1MgPSBmdW5jdGlvbihwb3NpdGlvbikge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIHBvc2l0aW9uUHJvcHMgPSB7fSxcbiAgICAgICAgICAgIHgsIHk7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5ydGwgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHBvc2l0aW9uID0gLXBvc2l0aW9uO1xuICAgICAgICB9XG4gICAgICAgIHggPSBfLnBvc2l0aW9uUHJvcCA9PSAnbGVmdCcgPyBNYXRoLmNlaWwocG9zaXRpb24pICsgJ3B4JyA6ICcwcHgnO1xuICAgICAgICB5ID0gXy5wb3NpdGlvblByb3AgPT0gJ3RvcCcgPyBNYXRoLmNlaWwocG9zaXRpb24pICsgJ3B4JyA6ICcwcHgnO1xuXG4gICAgICAgIHBvc2l0aW9uUHJvcHNbXy5wb3NpdGlvblByb3BdID0gcG9zaXRpb247XG5cbiAgICAgICAgaWYgKF8udHJhbnNmb3Jtc0VuYWJsZWQgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrLmNzcyhwb3NpdGlvblByb3BzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvc2l0aW9uUHJvcHMgPSB7fTtcbiAgICAgICAgICAgIGlmIChfLmNzc1RyYW5zaXRpb25zID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uUHJvcHNbXy5hbmltVHlwZV0gPSAndHJhbnNsYXRlKCcgKyB4ICsgJywgJyArIHkgKyAnKSc7XG4gICAgICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5jc3MocG9zaXRpb25Qcm9wcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHBvc2l0aW9uUHJvcHNbXy5hbmltVHlwZV0gPSAndHJhbnNsYXRlM2QoJyArIHggKyAnLCAnICsgeSArICcsIDBweCknO1xuICAgICAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY3NzKHBvc2l0aW9uUHJvcHMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnNldERpbWVuc2lvbnMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
2XIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy52ZXJ0aWNhbCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIF8uJGxpc3QuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogKCcwcHggJyArIF8ub3B0aW9ucy5jZW50ZXJQYWRkaW5nKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgXy4kbGlzdC5oZWlnaHQoXy4kc2xpZGVzLmZpcnN0KCkub3V0ZXJIZWlnaHQodHJ1ZSkgKiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KTtcbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIF8uJGxpc3QuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgcGFkZGluZzogKF8ub3B0aW9ucy5jZW50ZXJQYWRkaW5nICsgJyAwcHgnKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgXy5saXN0V2lkdGggPSBfLiRsaXN0LndpZHRoKCk7XG4gICAgICAgIF8ubGlzdEhlaWdodCA9IF8uJGxpc3QuaGVpZ2h0KCk7XG5cblxuICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsID09PSBmYWxzZSAmJiBfLm9wdGlvbnMudmFyaWFibGVXaWR0aCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIF8uc2xpZGVXaWR0aCA9IE1hdGguY2VpbChfLmxpc3RXaWR0aCAvIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpO1xuICAgICAgICAgICAgXy4kc2xpZGVUcmFjay53aWR0aChNYXRoLmNlaWwoKF8uc2xpZGVXaWR0aCAqIF8uJHNsaWRlVHJhY2suY2hpbGRyZW4oJy5zbGljay1zbGlkZScpLmxlbmd0aCkpKTtcblxuICAgICAgICB9IGVsc2UgaWYgKF8ub3B0aW9ucy52YXJpYWJsZVdpZHRoID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLiRzbGlkZVRyYWNrLndpZHRoKDUwMDAgKiBfLnNsaWRlQ291bnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgXy5zbGlkZVdpZHRoID0gTWF0aC5jZWlsKF8ubGlzdFdpZHRoKTtcbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suaGVpZ2h0KE1hdGguY2VpbCgoXy4kc2xpZGVzLmZpcnN0KCkub3V0ZXJIZWlnaHQodHJ1ZSkgKiBfLiRzbGlkZVRyYWNrLmNoaWxkcmVuKCcuc2xpY2stc2xpZGUnKS5sZW5ndGgpKSk7XG4gICAgICAgIH1cblxuICAgICAgICB2Y
2XIgb2Zmc2V0ID0gXy4kc2xpZGVzLmZpcnN0KCkub3V0ZXJXaWR0aCh0cnVlKSAtIF8uJHNsaWRlcy5maXJzdCgpLndpZHRoKCk7XG4gICAgICAgIGlmIChfLm9wdGlvbnMudmFyaWFibGVXaWR0aCA9PT0gZmFsc2UpIF8uJHNsaWRlVHJhY2suY2hpbGRyZW4oJy5zbGljay1zbGlkZScpLndpZHRoKF8uc2xpZGVXaWR0aCAtIG9mZnNldCk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnNldEZhZGUgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICB0YXJnZXRMZWZ0O1xuXG4gICAgICAgIF8uJHNsaWRlcy5lYWNoKGZ1bmN0aW9uKGluZGV4LCBlbGVtZW50KSB7XG4gICAgICAgICAgICB0YXJnZXRMZWZ0ID0gKF8uc2xpZGVXaWR0aCAqIGluZGV4KSAqIC0xO1xuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5ydGwgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICAkKGVsZW1lbnQpLmNzcyh7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICAgICAgICAgICAgICByaWdodDogdGFyZ2V0TGVmdCxcbiAgICAgICAgICAgICAgICAgICAgdG9wOiAwLFxuICAgICAgICAgICAgICAgICAgICB6SW5kZXg6IF8ub3B0aW9ucy56SW5kZXggLSAyLFxuICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiAwXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICQoZWxlbWVudCkuY3NzKHtcbiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICAgICAgICAgICAgICAgIGxlZnQ6IHRhcmdldExlZnQsXG4gICAgICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICAgICAgekluZGV4OiBfLm9wdGlvbnMuekluZGV4IC0gMixcbiAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBfLiRzbGlkZXMuZXEoXy5jdXJyZW50U2xpZGUpLmNzcyh7XG4gICAgICAgICAgICB6SW5kZXg6IF8ub3B0aW9ucy56SW5kZXggLSAxLFxuICAgICAgICAgICAgb3BhY2l0eTogMVxuICAgICAgICB9KTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc2V0SGVpZ2h0ID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuc2xpZGVzVG9TaG93ID09PSAxICYmIF8ub3B0aW9ucy5hZGFwdGl2ZUhlaWdodCA9PT0gdHJ1ZSAmJiBfLm9wdGlvbnMudmVydGljYWwgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICB2Y
2XIgdGFyZ2V0SGVpZ2h0ID0gXy4kc2xpZGVzLmVxKF8uY3VycmVudFNsaWRlKS5vdXRlckhlaWdodCh0cnVlKTtcbiAgICAgICAgICAgIF8uJGxpc3QuY3NzKCdoZWlnaHQnLCB0YXJnZXRIZWlnaHQpO1xuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnNldE9wdGlvbiA9XG4gICAgU2xpY2sucHJvdG90eXBlLnNsaWNrU2V0T3B0aW9uID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIGFjY2VwdHMgYXJndW1lbnRzIGluIGZvcm1hdCBvZjpcbiAgICAgICAgICpcbiAgICAgICAgICogIC0gZm9yIGNoYW5naW5nIGEgc2luZ2xlIG9wdGlvbidzIHZhbHVlOlxuICAgICAgICAgKiAgICAgLnNsaWNrKFwic2V0T3B0aW9uXCIsIG9wdGlvbiwgdmFsdWUsIHJlZnJlc2ggKVxuICAgICAgICAgKlxuICAgICAgICAgKiAgLSBmb3IgY2hhbmdpbmcgYSBzZXQgb2YgcmVzcG9uc2l2ZSBvcHRpb25zOlxuICAgICAgICAgKiAgICAgLnNsaWNrKFwic2V0T3B0aW9uXCIsICdyZXNwb25zaXZlJywgW3t9LCAuLi5dLCByZWZyZXNoIClcbiAgICAgICAgICpcbiAgICAgICAgICogIC0gZm9yIHVwZGF0aW5nIG11bHRpcGxlIHZhbHVlcyBhdCBvbmNlIChub3QgcmVzcG9uc2l2ZSlcbiAgICAgICAgICogICAgIC5zbGljayhcInNldE9wdGlvblwiLCB7ICdvcHRpb24nOiB2YWx1ZSwgLi4uIH0sIHJlZnJlc2ggKVxuICAgICAgICAgKi9cblxuICAgICAgICB2YXIgXyA9IHRoaXMsIGwsIGl0ZW0sIG9wdGlvbiwgdmFsdWUsIHJlZnJlc2ggPSBmYWxzZSwgdHlwZTtcblxuICAgICAgICBpZiggJC50eXBlKCBhcmd1bWVudHNbMF0gKSA9PT0gJ29iamVjdCcgKSB7XG5cbiAgICAgICAgICAgIG9wdGlvbiA9ICBhcmd1bWVudHNbMF07XG4gICAgICAgICAgICByZWZyZXNoID0gYXJndW1lbnRzWzFdO1xuICAgICAgICAgICAgdHlwZSA9ICdtdWx0aXBsZSc7XG5cbiAgICAgICAgfSBlbHNlIGlmICggJC50eXBlKCBhcmd1bWVudHNbMF0gKSA9PT0gJ3N0cmluZycgKSB7XG5cbiAgICAgICAgICAgIG9wdGlvbiA9ICBhcmd1bWVudHNbMF07XG4gICAgICAgICAgICB2YWx1ZSA9IGFyZ3VtZW50c1sxXTtcbiAgICAgICAgICAgIHJlZnJlc2ggPSBhcmd1bWVudHNbMl07XG5cbiAgICAgICAgICAgIGlmICggYXJndW1lbnRzWzBdID09PSAncmVzcG9uc2l2ZScgJiYgJC50eXBlKCBhcmd1bWVudHNbMV0gKSA9PT0gJ2FycmF5JyApIHtcblxuICAgICAgICAgICAgICAgIHR5cGUgPSAncmVzcG9uc2l2ZSc7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIHR5cGVvZiBhcmd1bWVudHNbMV0gIT09ICd1bmRlZmluZWQnICkge1xuXG4gICAgICAgICAgICAgICAgdHlwZSA9ICdzaW5nbGUnO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggdHlwZSA9PT0gJ3NpbmdsZScgKSB7XG5cbiAgICAgICAgICAgIF8ub3B0aW9uc1tvcHRpb25dID0gdmFsdWU7XG5cblxuICAgICAgICB9IGVsc2UgaWYgKCB0eXBlID09PSAnbXVsdGlwbGUnICkge1xuXG4gICAgICAgICAgICAkLmVhY2goIG9wdGlvbiAsIGZ1bmN0aW9uKCBvcHQsIHZhbCApIHtcblxuICAgICAgICAgICAgICAgIF8ub3B0aW9uc1tvcHRdID0gdmFsO1xuXG4gICAgICAgICAgICB9KTtcblxuXG4gICAgICAgIH0gZWxzZSBpZiAoIHR5cGUgPT09ICdyZXNwb25zaXZlJyApIHtcblxuICAgICAgICAgICAgZm9yICggaXRlbSBpbiB2YWx1ZSApIHtcblxuICAgICAgICAgICAgICAgIGlmKCAkLnR5cGUoIF8ub3B0aW9ucy5yZXNwb25zaXZlICkgIT09ICdhcnJheScgKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zLnJlc3BvbnNpdmUgPSBbIHZhbHVlW2l0ZW1dIF07XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgIGwgPSBfLm9wdGlvbnMucmVzcG9uc2l2ZS5sZW5ndGgtMTtcblxuICAgICAgICAgICAgICAgICAgICAvLyBsb29wIHRocm91Z2ggdGhlIHJlc3BvbnNpdmUgb2JqZWN0IGFuZCBzcGxpY2Ugb3V0IGR1cGxpY2F0ZXMuXG4gICAgICAgICAgICAgICAgICAgIHdoaWxlKCBsID49IDAgKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBfLm9wdGlvbnMucmVzcG9uc2l2ZVtsXS5icmVha3BvaW50ID09PSB2YWx1ZVtpdGVtXS5icmVha3BvaW50ICkge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zLnJlc3BvbnNpdmUuc3BsaWNlKGwsMSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgbC0tO1xuXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBfLm9wdGlvbnMucmVzcG9uc2l2ZS5wdXNoKCB2YWx1ZVtpdGVtXSApO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggcmVmcmVzaCApIHtcblxuICAgICAgICAgICAgXy51bmxvYWQoKTtcbiAgICAgICAgICAgIF8ucmVpbml0KCk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZXRQb3NpdGlvbiA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBfLnNldERpbWVuc2lvbnMoKTtcblxuICAgICAgICBfLnNldEhlaWdodCgpO1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuZmFkZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIF8uc2V0Q1NTKF8uZ2V0TGVmdChfLmN1cnJlbnRTbGlkZSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgXy5zZXRGYWRlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignc2V0UG9zaXRpb24nLCBbX10pO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZXRQcm9wcyA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcyxcbiAgICAgICAgICAgIGJvZHlTdHlsZSA9IGRvY3VtZW50LmJvZHkuc3R5bGU7XG5cbiAgICAgICAgXy5wb3NpdGlvblByb3AgPSBfLm9wdGlvbnMudmVydGljYWwgPT09IHRydWUgPyAndG9wJyA6ICdsZWZ0JztcblxuICAgICAgICBpZiAoXy5wb3NpdGlvblByb3AgPT09ICd0b3AnKSB7XG4gICAgICAgICAgICBfLiRzbGlkZXIuYWRkQ2xhc3MoJ3NsaWNrLXZlcnRpY2FsJyk7XG4gICAgICAgI
2H0gZWxzZSB7XG4gICAgICAgICAgICBfLiRzbGlkZXIucmVtb3ZlQ2xhc3MoJ3NsaWNrLXZlcnRpY2FsJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYm9keVN0eWxlLldlYmtpdFRyYW5zaXRpb24gIT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgYm9keVN0eWxlLk1velRyYW5zaXRpb24gIT09IHVuZGVmaW5lZCB8fFxuICAgICAgICAgICAgYm9keVN0eWxlLm1zVHJhbnNpdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoXy5vcHRpb25zLnVzZUNTUyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIF8uY3NzVHJhbnNpdGlvbnMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBfLm9wdGlvbnMuZmFkZSApIHtcbiAgICAgICAgICAgIGlmICggdHlwZW9mIF8ub3B0aW9ucy56SW5kZXggPT09ICdudW1iZXInICkge1xuICAgICAgICAgICAgICAgIGlmKCBfLm9wdGlvbnMuekluZGV4IDwgMyApIHtcbiAgICAgICAgICAgICAgICAgICAgXy5vcHRpb25zLnpJbmRleCA9IDM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBfLm9wdGlvbnMuekluZGV4ID0gXy5kZWZhdWx0cy56SW5kZXg7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYm9keVN0eWxlLk9UcmFuc2Zvcm0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgXy5hbmltVHlwZSA9ICdPVHJhbnNmb3JtJztcbiAgICAgICAgICAgIF8udHJhbnNmb3JtVHlwZSA9ICctby10cmFuc2Zvcm0nO1xuICAgICAgICAgICAgXy50cmFuc2l0aW9uVHlwZSA9ICdPVHJhbnNpdGlvbic7XG4gICAgICAgICAgICBpZiAoYm9keVN0eWxlLnBlcnNwZWN0aXZlUHJvcGVydHkgPT09IHVuZGVmaW5lZCAmJiBib2R5U3R5bGUud2Via2l0UGVyc3BlY3RpdmUgPT09IHVuZGVmaW5lZCkgXy5hbmltVHlwZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChib2R5U3R5bGUuTW96VHJhbnNmb3JtICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIF8uYW5pbVR5cGUgPSAnTW96VHJhbnNmb3JtJztcbiAgICAgICAgICAgIF8udHJhbnNmb3JtVHlwZSA9ICctbW96LXRyYW5zZm9ybSc7XG4gICAgICAgICAgICBfLnRyYW5zaXRpb25UeXBlID0gJ01velRyYW5zaXRpb24nO1xuICAgICAgICAgICAgaWYgKGJvZHlTdHlsZS5wZXJzcGVjdGl2ZVByb3BlcnR5ID09PSB1bmRlZmluZWQgJiYgYm9keVN0eWxlLk1velBlcnNwZWN0aXZlID09PSB1bmRlZmluZWQpIF8uYW5pbVR5cGUgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoYm9keVN0eWxlLndlYmtpdFRyYW5zZm9ybSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBfLmFuaW1UeXBlID0gJ3dlYmtpdFRyYW5zZm9ybSc7XG4gICAgICAgICAgICBfLnRyYW5zZm9ybVR5cGUgPSAnLXdlYmtpdC10cmFuc2Zvcm0nO1xuICAgICAgICAgICAgXy50cmFuc2l0aW9uVHlwZSA9ICd3ZWJraXRUcmFuc2l0aW9uJztcbiAgICAgICAgICAgIGlmIChib2R5U3R5bGUucGVyc3BlY3RpdmVQcm9wZXJ0eSA9PT0gdW5kZWZpbmVkICYmIGJvZHlTdHlsZS53ZWJraXRQZXJzcG
2VjdGl2ZSA9PT0gdW5kZWZpbmVkKSBfLmFuaW1UeXBlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGJvZHlTdHlsZS5tc1RyYW5zZm9ybSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBfLmFuaW1UeXBlID0gJ21zVHJhbnNmb3JtJztcbiAgICAgICAgICAgIF8udHJhbnNmb3JtVHlwZSA9ICctbXMtdHJhbnNmb3JtJztcbiAgICAgICAgICAgIF8udHJhbnNpdGlvblR5cGUgPSAnbXNUcmFuc2l0aW9uJztcbiAgICAgICAgICAgIGlmIChib2R5U3R5bGUubXNUcmFuc2Zvcm0gPT09IHVuZGVmaW5lZCkgXy5hbmltVHlwZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChib2R5U3R5bGUudHJhbnNmb3JtICE9PSB1bmRlZmluZWQgJiYgXy5hbmltVHlwZSAhPT0gZmFsc2UpIHtcbiAgICAgICAgICAgIF8uYW5pbVR5cGUgPSAndHJhbnNmb3JtJztcbiAgICAgICAgICAgIF8udHJhbnNmb3JtVHlwZSA9ICd0cmFuc2Zvcm0nO1xuICAgICAgICAgICAgXy50cmFuc2l0aW9uVHlwZSA9ICd0cmFuc2l0aW9uJztcbiAgICAgICAgfVxuICAgICAgICBfLnRyYW5zZm9ybXNFbmFibGVkID0gXy5vcHRpb25zLnVzZVRyYW5zZm9ybSAmJiAoXy5hbmltVHlwZSAhPT0gbnVsbCAmJiBfLmFuaW1UeXBlICE9PSBmYWxzZSk7XG4gICAgfTtcblxuXG4gICAgU2xpY2sucHJvdG90eXBlLnNldFNsaWRlQ2xhc3NlcyA9IGZ1bmN0aW9uKGluZGV4KSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgY2VudGVyT2Zmc2V0LCBhbGxTbGlkZXMsIGluZGV4T2Zmc2V0LCByZW1haW5kZXI7XG5cbiAgICAgICAgYWxsU2xpZGVzID0gXy4kc2xpZGVyXG4gICAgICAgICAgICAuZmluZCgnLnNsaWNrLXNsaWRlJylcbiAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnc2xpY2stYWN0aXZlIHNsaWNrLWNlbnRlciBzbGljay1jdXJyZW50JylcbiAgICAgICAgICAgIC5hdHRyKCdhcmlhLWh
2pZGRlbicsICd0cnVlJyk7XG5cbiAgICAgICAgXy4kc2xpZGVzXG4gICAgICAgICAgICAuZXEoaW5kZXgpXG4gICAgICAgICAgICAuYWRkQ2xhc3MoJ3NsaWNrLWN1cnJlbnQnKTtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmNlbnRlck1vZGUgPT09IHRydWUpIHtcblxuICAgICAgICAgICAgdmFyIGV2ZW5Db2VmID0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAlIDIgPT09IDAgPyAxIDogMDtcblxuICAgICAgICAgICAgY2VudGVyT2Zmc2V0ID0gTWF0aC5mbG9vcihfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC8gMik7XG5cbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuaW5maW5pdGUgPT09IHRydWUpIHtcblxuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSBjZW50ZXJPZmZzZXQgJiYgaW5kZXggPD0gKF8uc2xpZGVDb3VudCAtIDEpIC0gY2VudGVyT2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIF8uJHNsaWRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKGluZGV4IC0gY2VudGVyT2Zmc2V0ICsgZXZlbkNvZWYsIGluZGV4ICsgY2VudGVyT2Zmc2V0ICsgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stYWN0aXZlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdhcmlhLWhpZGRlbicsICdmYWxzZScpO1xuXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgICAgICAgICBpbmRleE9mZnNldCA9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgKyBpbmRleDtcbiAgICAgICAgICAgICAgICAgICAgYWxsU2xpZGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2xpY2UoaW5kZXhPZmZzZXQgLSBjZW50ZXJPZmZzZXQgKyAxICsgZXZlbkNvZWYsIGluZGV4T2Zmc2V0ICsgY2VudGVyT2Zmc2V0ICsgMilcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRDbGFzcygnc2xpY2stYWN0aXZlJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCdhcmlhLWh
2pZGRlbicsICdmYWxzZScpO1xuXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG5cbiAgICAgICAgICAgICAgICAgICAgYWxsU2xpZGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAuZXEoYWxsU2xpZGVzLmxlbmd0aCAtIDEgLSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1jZW50ZXInKTtcblxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT09IF8uc2xpZGVDb3VudCAtIDEpIHtcblxuICAgICAgICAgICAgICAgICAgICBhbGxTbGlkZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIC5lcShfLm9wdGlvbnMuc2xpZGVzVG9TaG93KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1jZW50ZXInKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBfLiRzbGlkZXNcbiAgICAgICAgICAgICAgICAuZXEoaW5kZXgpXG4gICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1jZW50ZXInKTtcblxuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCAmJiBpbmRleCA8PSAoXy5zbGlkZUNvdW50IC0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykpIHtcblxuICAgICAgICAgICAgICAgIF8uJHNsaWRlc1xuICAgICAgICAgICAgICAgICAgICAuc2xpY2UoaW5kZXgsIGluZGV4ICsgXy5vcHRpb25zLnNsaWRlc1RvU2hvdylcbiAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1hY3RpdmUnKVxuICAgICAgICAgICAgICAgICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcblxuICAgICAgICAgICAgfSBlbHNlIGlmIChhbGxTbGlkZXMubGVuZ3RoIDw9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcblxuICAgICAgICAgICAgICAgIGFsbFNsaWRlc1xuICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ3NsaWNrLWFjdGl2ZScpXG4gICAgICAgICAgICAgICAgICAgIC5hdHRyKCdhcmlhLWh
2pZGRlbicsICdmYWxzZScpO1xuXG4gICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgcmVtYWluZGVyID0gXy5zbGlkZUNvdW50ICUgXy5vcHRpb25zLnNsaWRlc1RvU2hvdztcbiAgICAgICAgICAgICAgICBpbmRleE9mZnNldCA9IF8ub3B0aW9ucy5pbmZpbml0ZSA9PT0gdHJ1ZSA/IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgKyBpbmRleCA6IGluZGV4O1xuXG4gICAgICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cgPT0gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsICYmIChfLnNsaWRlQ291bnQgLSBpbmRleCkgPCBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG5cbiAgICAgICAgICAgICAgICAgICAgYWxsU2xpZGVzXG4gICAgICAgICAgICAgICAgICAgICAgICAuc2xpY2UoaW5kZXhPZmZzZXQgLSAoXy5vcHRpb25zLnNsaWRlc1RvU2hvdyAtIHJlbWFpbmRlciksIGluZGV4T2Zmc2V0ICsgcmVtYWluZGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1hY3RpdmUnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2FyaWEtaGlkZGVuJywgJ2ZhbHNlJyk7XG5cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgICAgICAgICAgIGFsbFNsaWRlc1xuICAgICAgICAgICAgICAgICAgICAgICAgLnNsaWNlKGluZGV4T2Zmc2V0LCBpbmRleE9mZnNldCArIF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ3NsaWNrLWFjdGl2ZScpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcblxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLmxhenlMb2FkID09PSAnb25kZW1hbmQnIHx8IF8ub3B0aW9ucy5sYXp5TG9hZCA9PT0gJ2FudGljaXBhdGVkJykge1xuICAgICAgICAgICAgXy5sYXp5TG9hZCgpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zZXR1cEluZmluaXRlID0gZnVuY3Rpb24oKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgaSwgc2xpZGVJbmRleCwgaW5maW5pdGVDb3VudDtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmZhZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8ub3B0aW9ucy5jZW50ZXJNb2RlID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLmluZmluaXRlID09PSB0cnVlICYmIF8ub3B0aW9ucy5mYWRlID09PSBmYWxzZSkge1xuXG4gICAgICAgICAgICBzbGlkZUluZGV4ID0gbnVsbDtcblxuICAgICAgICAgICAgaWYgKF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcblxuICAgICAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICBpbmZpbml0ZUNvdW50ID0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdyArIDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaW5maW5pdGVDb3VudCA9IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3c7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZm9yIChpID0gXy5zbGlkZUNvdW50OyBpID4gKF8uc2xpZGVDb3VudCAtXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmZpbml0ZUNvdW50KTsgaSAtPSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIHNsaWRlSW5kZXggPSBpIC0gMTtcbiAgICAgICAgICAgICAgICAgICAgJChfLiRzbGlkZXNbc2xpZGVJbmRleF0pLmNsb25lKHRydWUpLmF0dHIoJ2lkJywgJycpXG4gICAgICAgICAgICAgICAgICAgICAgICAuYXR0cignZGF0YS1zbGljay1pbmRleCcsIHNsaWRlSW5kZXggLSBfLnNsaWRlQ291bnQpXG4gICAgICAgICAgICAgICAgICAgICAgICAucHJlcGVuZFRvKF8uJHNsaWRlVHJhY2spLmFkZENsYXNzKCdzbGljay1jbG9uZWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGluZmluaXRlQ291bnQgICsgXy5zbGlkZUNvdW50OyBpICs9IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVJbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgICAgICQoXy4kc2xpZGVzW3NsaWRlSW5kZXhdKS5jbG9uZSh0cnVlKS5hdHRyKCdpZCcsICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoJ2RhdGEtc2xpY2staW5kZXgnLCBzbGlkZUluZGV4ICsgXy5zbGlkZUNvdW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZFRvKF8uJHNsaWRlVHJhY2spLmFkZENsYXNzKCdzbGljay1jbG9uZWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgXy4kc2xpZGVUcmFjay5maW5kKCcuc2xpY2stY2xvbmVkJykuZmluZCgnW2lkXScpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignaWQnLCAnJyk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLmludGVycnVwdCA9IGZ1bmN0aW9uKCB0b2dnbGUgKSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzO1xuXG4gICAgICAgIGlmKCAhdG9nZ2xlICkge1xuICAgICAgICAgICAgXy5hdXRvUGxheSgpO1xuICAgICAgICB9XG4gICAgICAgIF8uaW50ZXJydXB0ZWQgPSB0b2dnbGU7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnNlbGVjdEhhbmRsZXIgPSBmdW5jdGlvbihldmVudCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICB2Y
2XIgdGFyZ2V0RWxlbWVudCA9XG4gICAgICAgICAgICAkKGV2ZW50LnRhcmdldCkuaXMoJy5zbGljay1zbGlkZScpID9cbiAgICAgICAgICAgICAgICAkKGV2ZW50LnRhcmdldCkgOlxuICAgICAgICAgICAgICAgICQoZXZlbnQudGFyZ2V0KS5wYXJlbnRzKCcuc2xpY2stc2xpZGUnKTtcblxuICAgICAgICB2YXIgaW5kZXggPSBwYXJzZUludCh0YXJnZXRFbGVtZW50LmF0dHIoJ2RhdGEtc2xpY2staW5kZXgnKSk7XG5cbiAgICAgICAgaWYgKCFpbmRleCkgaW5kZXggPSAwO1xuXG4gICAgICAgIGlmIChfLnNsaWRlQ291bnQgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuXG4gICAgICAgICAgICBfLnNsaWRlSGFuZGxlcihpbmRleCwgZmFsc2UsIHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuXG4gICAgICAgIH1cblxuICAgICAgICBfLnNsaWRlSGFuZGxlcihpbmRleCk7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnNsaWRlSGFuZGxlciA9IGZ1bmN0aW9uKGluZGV4LCBzeW5jLCBkb250QW5pbWF0ZSkge1xuXG4gICAgICAgIHZhciB0YXJnZXRTbGlkZSwgYW5pbVNsaWRlLCBvbGRTbGlkZSwgc2xpZGVMZWZ0LCB0YXJnZXRMZWZ0ID0gbnVsbCxcbiAgICAgICAgICAgIF8gPSB0aGlzLCBuYXZUYXJnZXQ7XG5cbiAgICAgICAgc3luYyA9IHN5bmMgfHwgZmFsc2U7XG5cbiAgICAgICAgaWYgKF8uYW5pbWF0aW5nID09PSB0cnVlICYmIF8ub3B0aW9ucy53YWl0Rm9yQW5pbWF0ZSA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5mYWRlID09PSB0cnVlICYmIF8uY3VycmVudFNsaWRlID09PSBpbmRleCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN5bmMgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBfLmFzTmF2Rm9yKGluZGV4KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRhcmdldFNsaWRlID0gaW5kZXg7XG4gICAgICAgIHRhcmdldExlZnQgPSBfLmdldExlZnQodGFyZ2V0U2xpZGUpO1xuICAgICAgICBzbGlkZUxlZnQgPSBfLmdldExlZnQoXy5jdXJyZW50U2xpZGUpO1xuXG4gICAgICAgIF8uY3VycmVudExlZnQgPSBfLnN3aXBlTGVmdCA9PT0gbnVsbCA/IHNsaWRlTGVmdCA6IF8uc3dpcGVMZWZ0O1xuXG4gICAgICAgIGlmIChfLm9wdGlvbnMuaW5maW5pdGUgPT09IGZhbHNlICYmIF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSBmYWxzZSAmJiAoaW5kZXggPCAwIHx8IGluZGV4ID4gXy5nZXREb3RDb3VudCgpICogXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsKSkge1xuICAgICAgICAgICAgaWYgKF8ub3B0aW9ucy5mYWRlID09PSBmYWxzZSkge1xuICAgICAgICAgICAgICAgIHRhcmdldFNsaWRlID0gXy5jdXJyZW50U2xpZGU7XG4gICAgICAgICAgICAgICAgaWYgKGRvbnRBbmltYXRlICE9PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcbiAgICAgICAgICAgICAgICAgICAgXy5hbmltYXRlU2xpZGUoc2xpZGVMZWZ0LCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIF8ucG9zdFNsaWRlKHRhcmdldFNsaWRlKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgXy5wb3N0U2xpZGUodGFyZ2V0U2xpZGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChfLm9wdGlvbnMuaW5maW5pdGUgPT09IGZhbHNlICYmIF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSB0cnVlICYmIChpbmRleCA8IDAgfHwgaW5kZXggPiAoXy5zbGlkZUNvdW50IC0gXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsKSkpIHtcbiAgICAgICAgICAgIGlmIChfLm9wdGlvbnMuZmFkZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgICAgICB0YXJnZXRTbGlkZSA9IF8uY3VycmVudFNsaWRlO1xuICAgICAgICAgICAgICAgIGlmIChkb250QW5pbWF0ZSAhPT0gdHJ1ZSAmJiBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93KSB7XG4gICAgICAgICAgICAgICAgICAgIF8uYW5pbWF0ZVNsaWRlKHNsaWRlTGVmdCwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBfLnBvc3RTbGlkZSh0YXJnZXRTbGlkZSk7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIF8ucG9zdFNsaWRlKHRhcmdldFNsaWRlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIF8ub3B0aW9ucy5hdXRvcGxheSApIHtcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoXy5hdXRvUGxheVRpbWVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0YXJnZXRTbGlkZSA8IDApIHtcbiAgICAgICAgICAgIGlmIChfLnNsaWRlQ291bnQgJSBfLm9wdGlvbnMuc2xpZGVzVG9TY3JvbGwgIT09IDApIHtcbiAgICAgICAgICAgICAgICBhbmltU2xpZGUgPSBfLnNsaWRlQ291bnQgLSAoXy5zbGlkZUNvdW50ICUgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYW5pbVNsaWRlID0gXy5zbGlkZUNvdW50ICsgdGFyZ2V0U2xpZGU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0U2xpZGUgPj0gXy5zbGlkZUNvdW50KSB7XG4gICAgICAgICAgICBpZiAoXy5zbGlkZUNvdW50ICUgXy5vcHRpb25zLnNsaWRlc1RvU2Nyb2xsICE9PSAwKSB7XG4gICAgICAgICAgICAgICAgYW5pbVNsaWRlID0gMDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgYW5pbVNsaWRlID0gdGFyZ2V0U2xpZGUgLSBfLnNsaWRlQ291bnQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBhbmltU2xpZGUgPSB0YXJnZXRTbGlkZTtcbiAgICAgICAgfVxuXG4gICAgICAgIF8uYW5pbWF0aW5nID0gdHJ1ZTtcblxuICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignYmVmb3JlQ2hhbmdlJywgW18sIF8uY3VycmVudFNsaWRlLCBhbmltU2xpZGVdKTtcblxuICAgICAgICBvbGRTbGlkZSA9IF8uY3VycmVudFNsaWRlO1xuICAgICAgICBfLmN1cnJlbnRTbGlkZSA9IGFuaW1TbGlkZTtcblxuICAgICAgICBfLnNldFNsaWRlQ2xhc3NlcyhfLmN1cnJlbnRTbGlkZSk7XG5cbiAgICAgICAgaWYgKCBfLm9wdGlvbnMuYXNOYXZGb3IgKSB7XG5cbiAgICAgICAgICAgIG5hdlRhcmdldCA9IF8uZ2V0TmF2VGFyZ2V0KCk7XG4gICAgICAgICAgICBuYXZUYXJnZXQgPSBuYXZUYXJnZXQuc2xpY2soJ2dldFNsaWNrJyk7XG5cbiAgICAgICAgICAgIGlmICggbmF2VGFyZ2V0LnNsaWRlQ291bnQgPD0gbmF2VGFyZ2V0Lm9wdGlvbnMuc2xpZGVzVG9TaG93ICkge1xuICAgICAgICAgICAgICAgIG5hdlRhcmdldC5zZXRTbGlkZUNsYXNzZXMoXy5jdXJyZW50U2xpZGUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgI
2H1cblxuICAgICAgICBfLnVwZGF0ZURvdHMoKTtcbiAgICAgICAgXy51cGRhdGVBcnJvd3MoKTtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLmZhZGUgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGlmIChkb250QW5pbWF0ZSAhPT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICAgICAgXy5mYWRlU2xpZGVPdXQob2xkU2xpZGUpO1xuXG4gICAgICAgICAgICAgICAgXy5mYWRlU2xpZGUoYW5pbVNsaWRlLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgXy5wb3N0U2xpZGUoYW5pbVNsaWRlKTtcbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBfLnBvc3RTbGlkZShhbmltU2xpZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgXy5hbmltYXRlSGVpZ2h0KCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZG9udEFuaW1hdGUgIT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgXy5hbmltYXRlU2xpZGUodGFyZ2V0TGVmdCwgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgXy5wb3N0U2xpZGUoYW5pbVNsaWRlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgXy5wb3N0U2xpZGUoYW5pbVNsaWRlKTtcbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zdGFydExvYWQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
2XIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5hcnJvd3MgPT09IHRydWUgJiYgXy5zbGlkZUNvdW50ID4gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuXG4gICAgICAgICAgICBfLiRwcmV2QXJyb3cuaGlkZSgpO1xuICAgICAgICAgICAgXy4kbmV4dEFycm93LmhpZGUoKTtcblxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5kb3RzID09PSB0cnVlICYmIF8uc2xpZGVDb3VudCA+IF8ub3B0aW9ucy5zbGlkZXNUb1Nob3cpIHtcblxuICAgICAgICAgICAgXy4kZG90cy5oaWRlKCk7XG5cbiAgICAgICAgfVxuXG4gICAgICAgIF8uJHNsaWRlci5hZGRDbGFzcygnc2xpY2stbG9hZGluZycpO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zd2lwZURpcmVjdGlvbiA9IGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIHZhciB4RGlzdCwgeURpc3QsIHIsIHN3aXBlQW5nbGUsIF8gPSB0aGlzO1xuXG4gICAgICAgIHhEaXN0ID0gXy50b3VjaE9iamVjdC5zdGFydFggLSBfLnRvdWNoT2JqZWN0LmN1clg7XG4gICAgICAgIHlEaXN0ID0gXy50b3VjaE9iamVjdC5zdGFydFkgLSBfLnRvdWNoT2JqZWN0LmN1clk7XG4gICAgICAgIHIgPSBNYXRoLmF0YW4yKHlEaXN0LCB4RGlzdCk7XG5cbiAgICAgICAgc3dpcGVBbmdsZSA9IE1hdGgucm91bmQociAqIDE4MCAvIE1hdGguUEkpO1xuICAgICAgICBpZiAoc3dpcGVBbmdsZSA8IDApIHtcbiAgICAgICAgICAgIHN3aXBlQW5nbGUgPSAzNjAgLSBNYXRoLmFicyhzd2lwZUFuZ2xlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgoc3dpcGVBbmdsZSA8PSA0NSkgJiYgKHN3aXBlQW5nbGUgPj0gMCkpIHtcbiAgICAgICAgICAgIHJldHVybiAoXy5vcHRpb25zLnJ0bCA9PT0gZmFsc2UgPyAnbGVmdCcgOiAncmlnaHQnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKHN3aXBlQW5nbGUgPD0gMzYwKSAmJiAoc3dpcGVBbmdsZSA+PSAzMTUpKSB7XG4gICAgICAgICAgICByZXR1cm4gKF8ub3B0aW9ucy5ydGwgPT09IGZhbHNlID8gJ2xlZnQnIDogJ3JpZ2h0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKChzd2lwZUFuZ2xlID49IDEzNSkgJiYgKHN3aXBlQW5nbGUgPD0gMjI1KSkge1xuICAgICAgICAgICAgcmV0dXJuIChfLm9wdGlvbnMucnRsID09PSBmYWxzZSA/ICdyaWdodCcgOiAnbGVmdCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWxTd2lwaW5nID09PSB0cnVlKSB7XG4gICAgICAgICAgICBpZiAoKHN3aXBlQW5nbGUgPj0gMzUpICYmIChzd2lwZUFuZ2xlIDw9IDEzNSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2Rvd24nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3VwJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAndmVydGljYWwnO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zd2lwZUVuZCA9IGZ1bmN0aW9uKGV2ZW50KSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgc2xpZGVDb3VudCxcbiAgICAgICAgICAgIGRpcmVjdGlvbjtcblxuICAgICAgICBfLmRyYWdnaW5nID0gZmFsc2U7XG4gICAgICAgIF8uc3dpcGluZyA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChfLnNjcm9sbGluZykge1xuICAgICAgICAgICAgXy5zY3JvbGxpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIF8uaW50ZXJydXB0ZWQgPSBmYWxzZTtcbiAgICAgICAgXy5zaG91bGRDbGljayA9ICggXy50b3VjaE9iamVjdC5zd2lwZUxlbmd0aCA+IDEwICkgPyBmYWxzZSA6IHRydWU7XG5cbiAgICAgICAgaWYgKCBfLnRvdWNoT2JqZWN0LmN1clggPT09IHVuZGVmaW5lZCApIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICggXy50b3VjaE9iamVjdC5lZGdlSGl0ID09PSB0cnVlICkge1xuICAgICAgICAgICAgXy4kc2xpZGVyLnRyaWdnZXIoJ2VkZ2UnLCBbXywgXy5zd2lwZURpcmVjdGlvbigpIF0pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCBfLnRvdWNoT2JqZWN0LnN3aXBlTGVuZ3RoID49IF8udG91Y2hPYmplY3QubWluU3dpcGUgKSB7XG5cbiAgICAgICAgICAgIGRpcmVjdGlvbiA9IF8uc3dpcGVEaXJlY3Rpb24oKTtcblxuICAgICAgICAgICAgc3dpdGNoICggZGlyZWN0aW9uICkge1xuXG4gICAgICAgICAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICAgICAgY2FzZSAnZG93bic6XG5cbiAgICAgICAgICAgICAgICAgICAgc2xpZGVDb3VudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBfLm9wdGlvbnMuc3dpcGVUb1NsaWRlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmNoZWNrTmF2aWdhYmxlKCBfLmN1cnJlbnRTbGlkZSArIF8uZ2V0U2xpZGVDb3VudCgpICkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uY3VycmVudFNsaWRlICsgXy5nZXRTbGlkZUNvdW50KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgXy5jdXJyZW50RGlyZWN0aW9uID0gMDtcblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgJ3JpZ2h0JzpcbiAgICAgICAgICAgICAgICBjYXNlICd1cCc6XG5cbiAgICAgICAgICAgICAgICAgICAgc2xpZGVDb3VudCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBfLm9wdGlvbnMuc3dpcGVUb1NsaWRlID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfLmNoZWNrTmF2aWdhYmxlKCBfLmN1cnJlbnRTbGlkZSAtIF8uZ2V0U2xpZGVDb3VudCgpICkgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8uY3VycmVudFNsaWRlIC0gXy5nZXRTbGlkZUNvdW50KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgXy5jdXJyZW50RGlyZWN0aW9uID0gMTtcblxuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG5cblxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiggZGlyZWN0aW9uICE9ICd2ZXJ0aWNhbCcgKSB7XG5cbiAgICAgICAgICAgICAgICBfLnNsaWRlSGFuZGxlciggc2xpZGVDb3VudCApO
21xuICAgICAgICAgICAgICAgIF8udG91Y2hPYmplY3QgPSB7fTtcbiAgICAgICAgICAgICAgICBfLiRzbGlkZXIudHJpZ2dlcignc3dpcGUnLCBbXywgZGlyZWN0aW9uIF0pO1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSBlbHNlIHtcblxuICAgICAgICAgICAgaWYgKCBfLnRvdWNoT2JqZWN0LnN0YXJ0WCAhPT0gXy50b3VjaE9iamVjdC5jdXJYICkge1xuXG4gICAgICAgICAgICAgICAgXy5zbGlkZUhhbmRsZXIoIF8uY3VycmVudFNsaWRlICk7XG4gICAgICAgICAgICAgICAgXy50b3VjaE9iamVjdCA9IHt9O1xuXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS5zd2lwZUhhbmRsZXIgPSBmdW5jdGlvbihldmVudCkge1xuXG4gICAgICAgIHZhciBfID0gdGhpcztcblxuICAgICAgICBpZiAoKF8ub3B0aW9ucy5zd2lwZSA9PT0gZmFsc2UpIHx8ICgnb250b3VjaGVuZCcgaW4gZG9jdW1lbnQgJiYgXy5vcHRpb25zLnN3aXBlID09PSBmYWxzZSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfSBlbHNlIGlmIChfLm9wdGlvbnMuZHJhZ2dhYmxlID09PSBmYWxzZSAmJiBldmVudC50eXBlLmluZGV4T2YoJ21vdXNlJykgIT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBfLnRvdWNoT2JqZWN0LmZpbmdlckNvdW50ID0gZXZlbnQub3JpZ2luYWxFdmVudCAmJiBldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXMgIT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgICBldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXMubGVuZ3RoIDogMTtcblxuICAgICAgICBfLnRvdWNoT2JqZWN0Lm1pblN3aXBlID0gXy5saXN0V2lkdGggLyBfLm9wdGlvbnNcbiAgICAgICAgICAgIC50b3VjaFRocmVzaG9sZDtcblxuICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy50b3VjaE9iamVjdC5taW5Td2lwZSA9IF8ubGlzdEhlaWdodCAvIF8ub3B0aW9uc1xuICAgICAgICAgICAgICAgIC50b3VjaFRocmVzaG9sZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAoZXZlbnQuZGF0YS5hY3Rpb24pIHtcblxuICAgICAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgICAgICAgIF8uc3dpcGVTdGFydChldmVudCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ21vdmUnOlxuICAgICAgICAgICAgICAgIF8uc3dpcGVNb3ZlKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICAgICAgICBfLnN3aXBlRW5kKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnN3aXBlTW92ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgZWRnZVdhc0hpdCA9IGZhbHNlLFxuICAgICAgICAgICAgY3VyTGVmdCwgc3dpcGVEaXJlY3Rpb24sIHN3aXBlTGVuZ3RoLCBwb3NpdGlvbk9mZnNldCwgdG91Y2hlcywgdmVydGljYWxTd2lwZUxlbmd0aDtcblxuICAgICAgICB0b3VjaGVzID0gZXZlbnQub3JpZ2luYWxFdmVudCAhPT0gdW5kZWZpbmVkID8gZXZlbnQub3JpZ2luYWxFdmVudC50b3VjaGVzIDogbnVsbDtcblxuICAgICAgICBpZiAoIV8uZHJhZ2dpbmcgfHwgXy5zY3JvbGxpbmcgfHwgdG91Y2hlcyAmJiB0b3VjaGVzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY3VyTGVmdCA9IF8uZ2V0TGVmdChfLmN1cnJlbnRTbGlkZSk7XG5cbiAgICAgICAgXy50b3VjaE9iamVjdC5jdXJYID0gdG91Y2hlcyAhPT0gdW5kZWZpbmVkID8gdG91Y2hlc1swXS5wYWdlWCA6IGV2ZW50LmNsaWVudFg7XG4gICAgICAgIF8udG91Y2hPYmplY3QuY3VyWSA9IHRvdWNoZXMgIT09IHVuZGVmaW5lZCA/IHRvdWNoZXNbMF0ucGFnZVkgOiBldmVudC5jbGllbnRZO1xuXG4gICAgICAgIF8udG91Y2hPYmplY3Quc3dpcGVMZW5ndGggPSBNYXRoLnJvdW5kKE1hdGguc3FydChcbiAgICAgICAgICAgIE1hdGgucG93KF8udG91Y2hPYmplY3QuY3VyWCAtIF8udG91Y2hPYmplY3Quc3RhcnRYLCAyKSkpO1xuXG4gICAgICAgIHZlcnRpY2FsU3dpcGVMZW5ndGggPSBNYXRoLnJvdW5kKE1hdGguc3FydChcbiAgICAgICAgICAgIE1hdGgucG93KF8udG91Y2hPYmplY3QuY3VyWSAtIF8udG91Y2hPYmplY3Quc3RhcnRZLCAyKSkpO1xuXG4gICAgICAgIGlmICghXy5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyAmJiAhXy5zd2lwaW5nICYmIHZlcnRpY2FsU3dpcGVMZW5ndGggPiA0KSB7XG4gICAgICAgICAgICBfLnNjcm9sbGluZyA9IHRydWU7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsU3dpcGluZyA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgXy50b3VjaE9iamVjdC5zd2lwZUxlbmd0aCA9IHZlcnRpY2FsU3dpcGVMZW5ndGg7XG4gICAgICAgIH1cblxuICAgICAgICBzd2lwZURpcmVjdGlvbiA9IF8uc3dpcGVEaXJlY3Rpb24oKTtcblxuICAgICAgICBpZiAoZXZlbnQub3JpZ2luYWxFdmVudCAhPT0gdW5kZWZpbmVkICYmIF8udG91Y2hPYmplY3Quc3dpcGVMZW5ndGggPiA0KSB7XG4gICAgICAgICAgICBfLnN3aXBpbmcgPSB0cnVlO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHBvc2l0aW9uT2Zmc2V0ID0gKF8ub3B0aW9ucy5ydGwgPT09IGZhbHNlID8gMSA6IC0xKSAqIChfLnRvdWNoT2JqZWN0LmN1clggPiBfLnRvdWNoT2JqZWN0LnN0YXJ0WCA/IDEgOiAtMSk7XG4gICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWxTd2lwaW5nID09PSB0cnVlKSB7XG4gICAgICAgICAgICBwb3NpdGlvbk9mZnNldCA9IF8udG91Y2hPYmplY3QuY3VyWSA+IF8udG91Y2hPYmplY3Quc3RhcnRZID8gMSA6IC0xO1xuICAgICAgICB9XG5cblxuICAgICAgICBzd2lwZUxlbmd0aCA9IF8udG91Y2hPYmplY3Quc3dpcGVMZW5ndGg7XG5cbiAgICAgICAgXy50b3VjaE9iamVjdC5lZGdlSGl0ID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5pbmZpbml0ZSA9PT0gZmFsc2UpIHtcbiAgICAgICAgICAgIGlmICgoXy5jdXJyZW50U2xpZGUgPT09IDAgJiYgc3dpcGVEaXJlY3Rpb24gPT09ICdyaWdodCcpIHx8IChfLmN1cnJlbnRTbGlkZSA+PSBfLmdldERvdENvdW50KCkgJiYgc3dpcGVEaXJlY3Rpb24gPT09ICdsZWZ0JykpIHtcbiAgICAgICAgICAgICAgICBzd2lwZUxlbmd0aCA9IF8udG91Y2hPYmplY3Quc3dpcGVMZW5ndGggKiBfLm9wdGlvbnMuZWRnZUZyaWN0aW9uO1xuICAgICAgICAgICAgICAgIF8udG91Y2hPYmplY3QuZWRnZUhpdCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgI
2H1cblxuICAgICAgICBpZiAoXy5vcHRpb25zLnZlcnRpY2FsID09PSBmYWxzZSkge1xuICAgICAgICAgICAgXy5zd2lwZUxlZnQgPSBjdXJMZWZ0ICsgc3dpcGVMZW5ndGggKiBwb3NpdGlvbk9mZnNldDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIF8uc3dpcGVMZWZ0ID0gY3VyTGVmdCArIChzd2lwZUxlbmd0aCAqIChfLiRsaXN0LmhlaWdodCgpIC8gXy5saXN0V2lkdGgpKSAqIHBvc2l0aW9uT2Zmc2V0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChfLm9wdGlvbnMudmVydGljYWxTd2lwaW5nID09PSB0cnVlKSB7XG4gICAgICAgICAgICBfLnN3aXBlTGVmdCA9IGN1ckxlZnQgKyBzd2lwZUxlbmd0aCAqIHBvc2l0aW9uT2Zmc2V0O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8ub3B0aW9ucy5mYWRlID09PSB0cnVlIHx8IF8ub3B0aW9ucy50b3VjaE1vdmUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy5hbmltYXRpbmcgPT09IHRydWUpIHtcbiAgICAgICAgICAgIF8uc3dpcGVMZWZ0ID0gbnVsbDtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIF8uc2V0Q1NTKF8uc3dpcGVMZWZ0KTtcblxuICAgIH07XG5cbiAgICBTbGljay5wcm90b3R5cGUuc3dpcGVTdGFydCA9IGZ1bmN0aW9uKGV2ZW50KSB7XG5cbiAgICAgICAgdmFyIF8gPSB0aGlzLFxuICAgICAgICAgICAgdG91Y2hlcztcblxuICAgICAgICBfLmludGVycnVwdGVkID0gdHJ1ZTtcblxuICAgICAgICBpZiAoXy50b3VjaE9iamVjdC5maW5nZXJDb3VudCAhPT0gMSB8fCBfLnNsaWRlQ291bnQgPD0gXy5vcHRpb25zLnNsaWRlc1RvU2hvdykge1xuICAgICAgICAgICAgXy50b3VjaE9iamVjdCA9IHt9O1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50Lm9yaWdpbmFsRXZlbnQgIT09IHVuZGVmaW5lZCAmJiBldmVudC5vcmlnaW5hbEV2ZW50LnRvdWNoZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdG91Y2hlcyA9IGV2ZW50Lm9yaWdpbmFsRXZlbnQudG91Y2hlc1swXTtcbiAgICAgICAgfVxuXG4gICAgICAgIF8udG91Y2hPYmplY3Quc3RhcnRYID0gXy50b3VjaE9iamVjdC5jdXJYID0gdG91Y2hlcyAhPT0gdW5kZWZpbmVkID8gdG91Y2hlcy5wYWdlWCA6IGV2ZW50LmNsaWVudFg7XG4gICAgICAgIF8udG91Y2hPYmplY3Quc3RhcnRZID0gXy50b3VjaE9iamVjdC5jdXJZID0gdG91Y2hlcyAhPT0gdW5kZWZpbmVkID8gdG91Y2hlcy5wYWdlWSA6IGV2ZW50LmNsaWVudFk7XG5cbiAgICAgICAgXy5kcmFnZ2luZyA9IHRydWU7XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnVuZmlsdGVyU2xpZGVzID0gU2xpY2sucHJvdG90eXBlLnNsaWNrVW5maWx0ZXIgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
2XIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8uJHNsaWRlc0NhY2hlICE9PSBudWxsKSB7XG5cbiAgICAgICAgICAgIF8udW5sb2FkKCk7XG5cbiAgICAgICAgICAgIF8uJHNsaWRlVHJhY2suY2hpbGRyZW4odGhpcy5vcHRpb25zLnNsaWRlKS5kZXRhY2goKTtcblxuICAgICAgICAgICAgXy4kc2xpZGVzQ2FjaGUuYXBwZW5kVG8oXy4kc2xpZGVUcmFjayk7XG5cbiAgICAgICAgICAgIF8ucmVpbml0KCk7XG5cbiAgICAgICAgfVxuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS51bmxvYWQgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgJCgnLnNsaWNrLWNsb25lZCcsIF8uJHNsaWRlcikucmVtb3ZlKCk7XG5cbiAgICAgICAgaWYgKF8uJGRvdHMpIHtcbiAgICAgICAgICAgIF8uJGRvdHMucmVtb3ZlKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXy4kcHJldkFycm93ICYmIF8uaHRtbEV4cHIudGVzdChfLm9wdGlvbnMucHJldkFycm93KSkge1xuICAgICAgICAgICAgXy4kcHJldkFycm93LnJlbW92ZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKF8uJG5leHRBcnJvdyAmJiBfLmh0bWxFeHByLnRlc3QoXy5vcHRpb25zLm5leHRBcnJvdykpIHtcbiAgICAgICAgICAgIF8uJG5leHRBcnJvdy5yZW1vdmUoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIF8uJHNsaWRlc1xuICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdzbGljay1zbGlkZSBzbGljay1hY3RpdmUgc2xpY2stdmlzaWJsZSBzbGljay1jdXJyZW50JylcbiAgICAgICAgICAgIC5hdHRyKCdhcmlhLWh
2pZGRlbicsICd0cnVlJylcbiAgICAgICAgICAgIC5jc3MoJ3dpZHRoJywgJycpO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS51bnNsaWNrID0gZnVuY3Rpb24oZnJvbUJyZWFrcG9pbnQpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG4gICAgICAgIF8uJHNsaWRlci50cmlnZ2VyKCd1bnNsaWNrJywgW18sIGZyb21CcmVha3BvaW50XSk7XG4gICAgICAgIF8uZGVzdHJveSgpO1xuXG4gICAgfTtcblxuICAgIFNsaWNrLnByb3RvdHlwZS51cGRhdGVBcnJvd3MgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICBjZW50ZXJPZmZzZXQ7XG5cbiAgICAgICAgY2VudGVyT2Zmc2V0ID0gTWF0aC5mbG9vcihfLm9wdGlvbnMuc2xpZGVzVG9TaG93IC8gMik7XG5cbiAgICAgICAgaWYgKCBfLm9wdGlvbnMuYXJyb3dzID09PSB0cnVlICYmXG4gICAgICAgICAgICBfLnNsaWRlQ291bnQgPiBfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmXG4gICAgICAgICAgICAhXy5vcHRpb25zLmluZmluaXRlICkge1xuXG4gICAgICAgICAgICBfLiRwcmV2QXJyb3cucmVtb3ZlQ2xhc3MoJ3NsaWNrLWRpc2FibGVkJykuYXR0cignYXJpYS1kaXNhYmxlZCcsICdmYWxzZScpO1xuICAgICAgICAgICAgXy4kbmV4dEFycm93LnJlbW92ZUNsYXNzKCdzbGljay1kaXNhYmxlZCcpLmF0dHIoJ2FyaWEtZGlzYWJsZWQnLCAnZmFsc2UnKTtcblxuICAgICAgICAgICAgaWYgKF8uY3VycmVudFNsaWRlID09PSAwKSB7XG5cbiAgICAgICAgICAgICAgICBfLiRwcmV2QXJyb3cuYWRkQ2xhc3MoJ3NsaWNrLWRpc2FibGVkJykuYXR0cignYXJpYS1kaXNhYmxlZCcsICd0cnVlJyk7XG4gICAgICAgICAgICAgICAgXy4kbmV4dEFycm93LnJlbW92ZUNsYXNzKCdzbGljay1kaXNhYmxlZCcpLmF0dHIoJ2FyaWEtZGlzYWJsZWQnLCAnZmFsc2UnKTtcblxuICAgICAgICAgICAgfSBlbHNlIGlmIChfLmN1cnJlbnRTbGlkZSA+PSBfLnNsaWRlQ291bnQgLSBfLm9wdGlvbnMuc2xpZGVzVG9TaG93ICYmIF8ub3B0aW9ucy5jZW50ZXJNb2RlID09PSBmYWxzZSkge1xuXG4gICAgICAgICAgICAgICAgXy4kbmV4dEFycm93LmFkZENsYXNzKCdzbGljay1kaXNhYmxlZCcpLmF0dHIoJ2FyaWEtZGlzYWJsZWQnLCAndHJ1ZScpO1xuICAgICAgICAgICAgICAgIF8uJHByZXZBcnJvdy5yZW1vdmVDbGFzcygnc2xpY2stZGlzYWJsZWQnKS5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ2ZhbHNlJyk7XG5cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXy5jdXJyZW50U2xpZGUgPj0gXy5zbGlkZUNvdW50IC0gMSAmJiBfLm9wdGlvbnMuY2VudGVyTW9kZSA9PT0gdHJ1ZSkge1xuXG4gICAgICAgICAgICAgICAgXy4kbmV4dEFycm93LmFkZENsYXNzKCdzbGljay1kaXNhYmxlZCcpLmF0dHIoJ2FyaWEtZGlzYWJsZWQnLCAndHJ1ZScpO1xuICAgICAgICAgICAgICAgIF8uJHByZXZBcnJvdy5yZW1vdmVDbGFzcygnc2xpY2stZGlzYWJsZWQnKS5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ2ZhbHNlJyk7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnVwZGF0ZURvdHMgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2Y
2XIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKF8uJGRvdHMgIT09IG51bGwpIHtcblxuICAgICAgICAgICAgXy4kZG90c1xuICAgICAgICAgICAgICAgIC5maW5kKCdsaScpXG4gICAgICAgICAgICAgICAgICAgIC5yZW1vdmVDbGFzcygnc2xpY2stYWN0aXZlJylcbiAgICAgICAgICAgICAgICAgICAgLmVuZCgpO1xuXG4gICAgICAgICAgICBfLiRkb3RzXG4gICAgICAgICAgICAgICAgLmZpbmQoJ2xpJylcbiAgICAgICAgICAgICAgICAuZXEoTWF0aC5mbG9vcihfLmN1cnJlbnRTbGlkZSAvIF8ub3B0aW9ucy5zbGlkZXNUb1Njcm9sbCkpXG4gICAgICAgICAgICAgICAgLmFkZENsYXNzKCdzbGljay1hY3RpdmUnKTtcblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgU2xpY2sucHJvdG90eXBlLnZpc2liaWxpdHkgPSBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgXyA9IHRoaXM7XG5cbiAgICAgICAgaWYgKCBfLm9wdGlvbnMuYXV0b3BsYXkgKSB7XG5cbiAgICAgICAgICAgIGlmICggZG9jdW1lbnRbXy5oaWRkZW5dICkge1xuXG4gICAgICAgICAgICAgICAgXy5pbnRlcnJ1cHRlZCA9IHRydWU7XG5cbiAgICAgICAgICAgIH0gZWxzZSB7XG5cbiAgICAgICAgICAgICAgICBfLmludGVycnVwdGVkID0gZmFsc2U7XG5cbiAgICAgICAgICAgIH1cblxuICAgICAgICB9XG5cbiAgICB9O1xuXG4gICAgJC5mbi5zbGljayA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgXyA9IHRoaXMsXG4gICAgICAgICAgICBvcHQgPSBhcmd1bWVudHNbMF0sXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKSxcbiAgICAgICAgICAgIGwgPSBfLmxlbmd0aCxcbiAgICAgICAgICAgIGksXG4gICAgICAgICAgICByZXQ7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb3B0ID09ICdvYmplY3QnIHx8IHR5cGVvZiBvcHQgPT0gJ3VuZGVmaW5lZCcpXG4gICAgICAgICAgICAgICAgX1tpXS5zbGljayA9IG5ldyBTbGljayhfW2ldLCBvcHQpO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHJldCA9IF9baV0uc2xpY2tbb3B0XS5hcHBseShfW2ldLnNsaWNrLCBhcmdzKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgcmV0ICE9ICd1bmRlZmluZWQnKSByZXR1cm4gcmV0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfO1xuICAgIH07XG5cbn0pKTtcbiIsIi8qIVxuV2F5cG9pbnRzIC0gNC4wLjFcbkNvcHlyaWdodCDCqSAyMDExLTIwMTYgQ2FsZWIgVHJvdWdodG9uXG5MaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG5odHRwczovL2dpdGh1Yi5jb20vaW1ha2V3ZWJ0aGluZ3Mvd2F5cG9pbnRzL2Jsb2IvbWFzdGVyL2xpY2Vuc2VzLnR4dFxuKi9cbihmdW5jdGlvbigpIHtcbiAgJ3VzZSBzdHJpY3QnXG5cbiAgdmFyIGtleUNvdW50ZXIgPSAwXG4gIHZhciBhbGxXYXlwb2ludHMgPSB7fVxuXG4gIC8qIGh0dHA6Ly9pbWFrZXdlYnRoaW5ncy5jb20vd2F5cG9pbnRzL2FwaS93YXlwb2ludCAqL1xuICBmdW5jdGlvbiBXYXlwb2ludChvcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIG9wdGlvbnMgcGFzc2VkIHRvIFdheXBvaW50IGNvbnN0cnVjdG9yJylcbiAgICB9XG4gICAgaWYgKCFvcHRpb25zLmVsZW1lbnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gZWxlbWVudCBvcHRpb24gcGFzc2VkIHRvIFdheXBvaW50IGNvbnN0cnVjdG9yJylcbiAgICB9XG4gICAgaWYgKCFvcHRpb25zLmhhbmRsZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTm8gaGFuZGxlciBvcHRpb24gcGFzc2VkIHRvIFdheXBvaW50IGNvbnN0cnVjdG9yJylcbiAgICB9XG5cbiAgICB0aGlzLmtleSA9ICd3YXlwb2ludC0nICsga2V5Q291bnRlclxuICAgIHRoaXMub3B0aW9ucyA9IFdheXBvaW50LkFkYXB0ZXIuZXh0ZW5kKHt9LCBXYXlwb2ludC5kZWZhdWx0cywgb3B0aW9ucylcbiAgICB0aGlzLmVsZW1lbnQgPSB0aGlzLm9wdGlvbnMuZWxlbWVudFxuICAgIHRoaXMuYWRhcHRlciA9IG5ldyBXYXlwb2ludC5BZGFwdGVyKHRoaXMuZWxlbWVudClcbiAgICB0aGlzLmNhbGxiYWNrID0gb3B0aW9ucy5oYW5kbGVyXG4gICAgdGhpcy5heGlzID0gdGhpcy5vcHRpb25zLmhvcml6b250YWwgPyAnaG9yaXpvbnRhbCcgOiAndmVydGljYWwnXG4gICAgdGhpcy5lbmFibGVkID0gdGhpcy5vcHRpb25zLmVuYWJsZWRcbiAgICB0aGlzLnRyaWdnZXJQb2ludCA9IG51bGxcbiAgICB0aGlzLmdyb3VwID0gV2F5cG9pbnQuR3JvdXAuZmluZE9yQ3JlYXRlKHtcbiAgICAgIG5hbWU6IHRoaXMub3B0aW9ucy5ncm91cCxcbiAgICAgIGF4aXM6IHRoaXMuYXhpc1xuICAgIH0pXG4gICAgdGhpcy5jb250ZXh0ID0gV2F5cG9pbnQuQ29udGV4dC5maW5kT3JDcmVhdGVCeUVsZW1lbnQodGhpcy5vcHRpb25zLmNvbnRleHQpXG5cbiAgICBpZiAoV2F5cG9pbnQub2Zmc2V0QWxpYXNlc1t0aGlzLm9wdGlvbnMub2Zmc2V0XSkge1xuICAgICAgdGhpcy5vcHRpb25zLm9mZnNldCA9IFdheXBvaW50Lm9mZnNldEFsaWFzZXNbdGhpcy5vcHRpb25zLm9mZnNldF1cbiAgICB9XG4gICAgdGhpcy5ncm91cC5hZGQodGhpcylcbiAgICB0aGlzLmNvbnRleHQuYWRkKHRoaXMpXG4gICAgYWxsV2F5cG9pbnRzW3RoaXMua2V5XSA9IHRoaXNcbiAgICBrZXlDb3VudGVyICs9IDFcbiAgfVxuXG4gIC8qIFByaXZhdGUgKi9cbiAgV2F5cG9pbnQucHJvdG90eXBlLnF1ZXVlVHJpZ2dlciA9IGZ1bmN0aW9uKGRpcmVjdGlvbikge1xuICAgIHRoaXMuZ3JvdXAucXVldWVUcmlnZ2VyKHRoaXMsIGRpcmVjdGlvbilcbiAgfVxuXG4gIC8qIFByaXZhdGUgKi9cbiAgV2F5cG9pbnQucHJvdG90eXBlLnRyaWdnZXIgPSBmdW5jdGlvbihhcmdzKSB7XG4gICAgaWYgKCF0aGlzLmVuYWJsZWQpIHtcbiAgICAgIHJldHVyblxuICAgI
2H1cbiAgICBpZiAodGhpcy5jYWxsYmFjaykge1xuICAgICAgdGhpcy5jYWxsYmFjay5hcHBseSh0aGlzLCBhcmdzKVxuICAgIH1cbiAgfVxuXG4gIC8qIFB1YmxpYyAqL1xuICAvKiBodHRwOi8vaW1ha2V3ZWJ0aGluZ3MuY29tL3dheXBvaW50cy9hcGkvZGVzdHJveSAqL1xuICBXYXlwb2ludC5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuY29udGV4dC5yZW1vdmUodGhpcylcbiAgICB0aGlzLmdyb3VwLnJlbW92ZSh0aGlzKVxuICAgIGRlbGV0ZSBhbGxXYXlwb2ludHNbdGhpcy5rZXldXG4gIH1cblxuICAvKiBQdWJsaWMgKi9cbiAgLyogaHR0cDovL2ltYWtld2VidGhpbmdzLmNvbS93YXlwb2ludHMvYXBpL2Rpc2FibGUgKi9cbiAgV2F5cG9pbnQucHJvdG90eXBlLmRpc2FibGUgPSBmdW5jdGlvbigpIHtcbiAgICB0aGlzLmVuYWJsZWQgPSBmYWxzZVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKiBQdWJsaWMgKi9cbiAgLyogaHR0cDovL2ltYWtld2VidGhpbmdzLmNvbS93YXlwb2ludHMvYXBpL2VuYWJsZSAqL1xuICBXYXlwb2ludC5wcm90b3R5cGUuZW5hYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy5jb250ZXh0LnJlZnJlc2goKVxuICAgIHRoaXMuZW5hYmxlZCA9IHRydWVcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgLyogUHVibGljICovXG4gIC8qIGh0dHA6Ly9pbWFrZXdlYnRoaW5ncy5jb20vd2F5cG9pbnRzL2FwaS9uZXh0ICovXG4gIFdheXBvaW50LnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuZ3JvdXAubmV4dCh0aGlzKVxuICB9XG5cbiAgLyogUHVibGljICovXG4gIC8qIGh0dHA6Ly9pbWFrZXdlYnRoaW5ncy5jb20vd2F5cG9pbnRzL2FwaS9wcmV2aW91cyAqL1xuICBXYXlwb2ludC5wcm90b3R5cGUucHJldmlvdXMgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5ncm91cC5wcmV2aW91cyh0aGlzKVxuICB9XG5cbiAgLyogUHJpdmF0ZSAqL1xuICBXYXlwb2ludC5pbnZva2VBbGwgPSBmdW5jdGlvbihtZXRob2QpIHtcbiAgICB2YXIgYWxsV2F5cG9pbnRzQXJyYXkgPSBbXVxuICAgIGZvciAodmFyIHdheXBvaW50S2V5IGluIGFsbFdheXBvaW50cykge1xuICAgICAgYWxsV2F5cG9pbnRzQXJyYXkucHVzaChhbGxXYXlwb2ludHNbd2F5cG9pbnRLZXldKVxuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMCwgZW5kID0gYWxsV2F5cG9pbnRzQXJyYXkubGVuZ3RoOyBpIDwgZW5kOyBpKyspIHtcbiAgICAgIGFsbFdheXBvaW50c0FycmF5W2ldW21ldGhvZF0oKVxuICAgIH1cbiAgfVxuXG4gIC8qIFB1YmxpYyAqL1xuICAvKiBodHRwOi8vaW1ha2V3ZWJ0aGluZ3MuY29tL3dheXBvaW50cy9hcGkvZGVzdHJveS1hbGwgKi9cbiAgV2F5cG9pbnQuZGVzdHJveUFsbCA9IGZ1bmN0aW9uKCkge1xuICAgIFdheXBvaW50Lmludm9rZUFsbCgnZGVzdHJveScpXG4gIH1cblxuICAvKiBQdWJsaWMgKi9cbiAgLyogaHR0cDovL2ltYWtld2VidGhpbmdzLmNvbS93YXlwb2ludHMvYXBpL2Rpc2FibGUtYWxsICovXG4gIFdheXBvaW50LmRpc2FibGVBbGwgPSBmdW5jdGlvbigpIHtcbiAgICBXYXlwb2ludC5pbnZva2VBbGwoJ2Rpc2FibGUnKVxuICB9XG5cbiAgLyogUHVibGljICovXG4gIC8qIGh0dHA6Ly9pbWFrZXdlYnRoaW5ncy5jb20vd2F5cG9pbnRzL2FwaS9lbmFibGUtYWxsICovXG4gIFdheXBvaW50LmVuYWJsZUFsbCA9IGZ1bmN0aW9uKCkge1xuICAgIFdheXBvaW50LkNvbnRleHQucmVmcmVzaEFsbCgpXG4gICAgZm9yICh2YXIgd2F5cG9pbnRLZXkgaW4gYWxsV2F5cG9pbnRzKSB7XG4gICAgICBhbGxXYXlwb2ludHNbd2F5cG9pbnRLZXldLmVuYWJsZWQgPSB0cnVlXG4gICAgfVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKiBQdWJsaWMgKi9cbiAgLyogaHR0cDovL2ltYWtld2VidGhpbmdzLmNvbS93YXlwb2ludHMvYXBpL3JlZnJlc2gtYWxsICovXG4gIFdheXBvaW50LnJlZnJlc2hBbGwgPSBmdW5jdGlvbigpIHtcbiAgICBXYXlwb2ludC5Db250ZXh0LnJlZnJlc2hBbGwoKVxuICB9XG5cbiAgLyogUHVibGljICovXG4gIC8qIGh0dHA6Ly9pbWFrZXdlYnRoaW5ncy5jb20vd2F5cG9pbnRzL2FwaS92aWV3cG9ydC1oZWlnaHQgKi9cbiAgV2F5cG9pbnQudmlld3BvcnRIZWlnaHQgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gd2luZG93LmlubmVySGVpZ2h0IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHRcbiAgfVxuXG4gIC8qIFB1YmxpYyAqL1xuICAvKiBodHRwOi8vaW1ha2V3ZWJ0aGluZ3MuY29tL3dheXBvaW50cy9hcGkvdmlld3BvcnQtd2lkdGggKi9cbiAgV2F5cG9pbnQudmlld3BvcnRXaWR0aCA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGhcbiAgfVxuXG4gIFdheXBvaW50LmFkYXB0ZXJzID0gW11cblxuICBXYXlwb2ludC5kZWZhdWx0cyA9IHtcbiAgICBjb250ZXh0OiB3aW5kb3csXG4gICAgY29udGludW91czogdHJ1ZSxcbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIGdyb3VwOiAnZGVmYXVsdCcsXG4gICAgaG9yaXpvbnRhbDogZmFsc2UsXG4gICAgb2Zmc2V0OiAwXG4gIH1cblxuICBXYXlwb2ludC5vZmZzZXRBbGlhc2VzID0ge1xuICAgICdib3R0b20taW4tdmlldyc6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udGV4dC5pbm5lckhlaWdodCgpIC0gdGhpcy5hZGFwdGVyLm91dGVySGVpZ2h0KClcbiAgICB9LFxuICAgICdyaWdodC1pbi12aWV3JzogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5jb250ZXh0LmlubmVyV2lkdGgoKSAtIHRoaXMuYWRhcHRlci5vdXRlcldpZHRoKClcbiAgICB9XG4gIH1cblxuICB3aW5kb3cuV2F5cG9pbnQgPSBXYXlwb2ludFxufSgpKVxuOyhmdW5jdGlvbigpIHtcbiAgJ3VzZSBzdHJpY3QnXG5cbiAgZnVuY3Rpb24gcmVxdWVzdEFuaW1hdGlvbkZyYW1lU2hpbShjYWxsYmFjaykge1xuICAgIHdpbmRvdy5zZXRUaW1lb3V0KGNhbGxiYWNrLCAxMDAwIC8gNjApXG4gIH1cblxuICB2YXIga2V5Q291bnRlciA9IDBcbiAgdmFyIGNvbnRleHRzID0ge31cbiAgdmFyIFdheXBvaW50ID0gd2luZG93LldheXBvaW50XG4gIHZhciBvbGRXaW5kb3dMb2FkID0gd2luZG93Lm9ubG9hZF
2xuXG4gIC8qIGh0dHA6Ly9pbWFrZXdlYnRoaW5ncy5jb20vd2F5cG9pbnRzL2FwaS9jb250ZXh0ICovXG4gIGZ1bmN0aW9uIENvbnRleHQoZWxlbWVudCkge1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnRcbiAgICB0aGlzLkFkYXB0ZXIgPSBXYXlwb2ludC5BZGFwdGVyXG4gICAgdGhpcy5hZGFwdGVyID0gbmV3IHRoaXMuQWRhcHRlcihlbGVtZW50KVxuICAgIHRoaXMua2V5ID0gJ3dheXBvaW50LWNvbnRleHQtJyArIGtleUNvdW50ZXJcbiAgICB0aGlzLmRpZFNjcm9sbCA9IGZhbHNlXG4gICAgdGhpcy5kaWRSZXNpemUgPSBmYWxzZVxuICAgIHRoaXMub2xkU2Nyb2xsID0ge1xuICAgICAgeDogdGhpcy5hZGFwdGVyLnNjcm9sbExlZnQoKSxcbiAgICAgIHk6IHRoaXMuYWRhcHRlci5zY3JvbGxUb3AoKVxuICAgIH1cbiAgICB0aGlzLndheXBvaW50cyA9IHtcbiAgICAgIHZlcnRpY2FsOiB7fSxcbiAgICAgIGhvcml6b250YWw6IHt9XG4gICAgfVxuXG4gICAgZWxlbWVudC53YXlwb2ludENvbnRleHRLZXkgPSB0aGlzLmtleVxuICAgIGNvbnRleHRzW2VsZW1lbnQud2F5cG9pbnRDb250ZXh0S2V5XSA9IHRoaXNcbiAgICBrZXlDb3VudGVyICs9IDFcbiAgICBpZiAoIVdheXBvaW50LndpbmRvd0NvbnRleHQpIHtcbiAgICAgIFdheXBvaW50LndpbmRvd0NvbnRleHQgPSB0cnVlXG4gICAgICBXYXlwb2ludC53aW5kb3dDb250ZXh0ID0gbmV3IENvbnRleHQod2luZG93KVxuICAgIH1cblxuICAgIHRoaXMuY3JlYXRlVGhyb3R0bGVkU2Nyb2xsSGFuZGxlcigpXG4gICAgdGhpcy5jcmVhdGVUaHJvdHRsZWRSZXNpemVIYW5kbGVyKClcbiAgfVxuXG4gIC8qIFByaXZhdGUgKi9cbiAgQ29udGV4dC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24od2F5cG9pbnQpIHtcbiAgICB2YXIgYXhpcyA9IHdheXBvaW50Lm9wdGlvbnMuaG9yaXpvbn
2RhbCA/ICdob3Jpem9udGFsJyA6ICd2ZXJ0aWNhbCdcbiAgICB0aGlzLndheXBvaW50c1theGlzXVt3YXlwb2ludC5rZXldID0gd2F5cG9pbnRcbiAgICB0aGlzLnJlZnJlc2goKVxuICB9XG5cbiAgLyogUHJpdmF0ZSAqL1xuICBDb250ZXh0LnByb3RvdHlwZS5jaGVja0VtcHR5ID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGhvcml6b250YWxFbXB0eSA9IHRoaXMuQWRhcHRlci5pc0VtcHR5T2JqZWN0KHRoaXMud2F5cG9pbnRzLmhvcml6b250YWwpXG4gICAgdmFyIHZlcnRpY2FsRW1wdHkgPSB0aGlzLkFkYXB0ZXIuaXNFbXB0eU9iamVjdCh0aGlzLndheXBvaW50cy52ZXJ0aWNhbClcbiAgICB2YXIgaXNXaW5kb3cgPSB0aGlzLmVsZW1lbnQgPT0gdGhpcy5lbGVtZW50LndpbmRvd1xuICAgIGlmIChob3Jpem9udGFsRW1wdHkgJiYgdmVydGljYWxFbXB0eSAmJiAhaXNXaW5kb3cpIHtcbiAgICAgIHRoaXMuYWRhcHRlci5vZmYoJy53YXlwb2ludHMnKVxuICAgICAgZGVsZXRlIGNvbnRleHRzW3RoaXMua2V5XVxuICAgIH1cbiAgfVxuXG4gIC8qIFByaXZhdGUgKi9cbiAgQ29udGV4dC5wcm90b3R5cGUuY3JlYXRlVGhyb3R0bGVkUmVzaXplSGFuZGxlciA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBzZWxmID0gdGhpc1xuXG4gICAgZnVuY3Rpb24gcmVzaXplSGFuZGxlcigpIHtcbiAgICAgIHNlbGYuaGFuZGxlUmVzaXplKClcbiAgICAgIHNlbGYuZGlkUmVzaXplID0gZmFsc2VcbiAgICB9XG5cbiAgICB0aGlzLmFkYXB0ZXIub24oJ3Jlc2l6ZS53YXlwb2ludHMnLCBmdW5jdGlvbigpIHtcbiAgICAgIGlmICghc2VsZi5kaWRSZXNpemUpIHtcbiAgICAgICAgc2VsZi5kaWRSZXNpemUgPSB0cnVlXG4gICAgICAgIFdheXBvaW50LnJlcXVlc3RBbmltYXRpb25GcmFtZShyZXNpemVIYW5kbGVyKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICAvKiBQcml2YXRlICovXG4gIENvbnRleHQucHJvdG90eXBlLmNyZWF0ZVRocm90dGxlZFNjcm9sbEhhbmRsZXIgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXNcbiAgICBmdW5jdGlvbiBzY3JvbGxIYW5kbGVyKCkge1xuICAgICAgc2VsZi5oYW5kbGVTY3JvbGwoKVxuICAgICAgc2VsZi5kaWRTY3JvbGwgPSBmYWxzZVxuICAgIH1cblxuICAgIHRoaXMuYWRhcHRlci5vbignc2Nyb2xsLndheXBvaW50cycsIGZ1bmN0aW9uKCkge1xuICAgICAgaWYgKCFzZWxmLmRpZFNjcm9sbCB8fCBXYXlwb2ludC5pc1RvdWNoKSB7XG4gICAgICAgIHNlbGYuZGlkU2Nyb2xsID0gdHJ1ZVxuICAgICAgICBXYXlwb2ludC5yZXF1
2ZXN0QW5pbWF0aW9uRnJhbWUoc2Nyb2xsSGFuZGxlcilcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgLyogUHJpdmF0ZSAqL1xuICBDb250ZXh0LnByb3RvdHlwZS5oYW5kbGVSZXNpemUgPSBmdW5jdGlvbigpIHtcbiAgICBXYXlwb2ludC5Db250ZXh0LnJlZnJlc2hBbGwoKVxuICB9XG5cbiAgLyogUHJpdmF0ZSAqL1xuICBDb250ZXh0LnByb3RvdHlwZS5oYW5kbGVTY3JvbGwgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgdHJpZ2dlcmVkR3JvdXBzID0ge31cbiAgICB2YXIgYXhlcyA9IHtcbiAgICAgIGhvcml6b250YWw6IHtcbiAgICAgICAgbmV3U2Nyb2xsOiB0aGlzLmFkYXB0ZXIuc2Nyb2xsTGVmdCgpLFxuICAgICAgICBvbGRTY3JvbGw6IHRoaXMub2xkU2Nyb2xsLngsXG4gICAgICAgIGZvcndhcmQ6ICdyaWdodCcsXG4gICAgICAgIGJhY2t3YXJkOiAnbGVmdCdcbiAgICAgIH0sXG4gICAgICB2ZXJ0aWNhbDoge1xuICAgICAgICBuZXdTY3JvbGw6IHRoaXMuYWRhcHRlci5zY3JvbGxUb3AoKSxcbiAgICAgICAgb2xkU2Nyb2xsOiB0aGlzLm9sZFNjcm9sbC55LFxuICAgICAgICBmb3J3YXJkOiAnZG93bicsXG4gICAgICAgIGJhY2t3YXJkOiAndXAnXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgYXhpc0tleSBpbiBheGVzKSB7XG4gICAgICB2YXIgYXhpcyA9IGF4ZXNbYXhpc0tleV1cbiAgICAgIHZhciBpc0ZvcndhcmQgPSBheGlzLm5ld1Njcm9sbCA+IGF4aXMub2xkU2Nyb2xsXG4gICAgICB2YXIgZGlyZWN0aW9uID0gaXNGb3J3YXJkID8gYXhpcy5mb3J3YXJkIDogYXhpcy5iYWNrd2FyZFxuXG4gICAgICBmb3IgKHZhciB3YXlwb2ludEtleSBpbiB0aGlzLndheXBvaW50c1theGlzS2V5XSkge1xuICAgICAgICB2Y
2XIgd2F5cG9pbnQgPSB0aGlzLndheXBvaW50c1theGlzS2V5XVt3YXlwb2ludEtleV1cbiAgICAgICAgaWYgKHdheXBvaW50LnRyaWdnZXJQb2ludCA9PT0gbnVsbCkge1xuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cbiAgICAgICAgdmFyIHdhc0JlZm9yZVRyaWdnZXJQb2ludCA9IGF4aXMub2xkU2Nyb2xsIDwgd2F5cG9pbnQudHJpZ2dlclBvaW50XG4gICAgICAgIHZhciBub3dBZnRlclRyaWdnZXJQb2ludCA9IGF4aXMubmV3U2Nyb2xsID49IHdheXBvaW50LnRyaWdnZXJQb2ludFxuICAgICAgICB2YXIgY3Jvc3NlZEZvcndhcmQgPSB3YXNCZWZvcmVUcmlnZ2VyUG9pbnQgJiYgbm93QWZ0ZXJUcmlnZ2VyUG9pbnRcbiAgICAgICAgdmFyIGNyb3NzZWRCYWNrd2FyZCA9ICF3YXNCZWZvcmVUcmlnZ2VyUG9pbnQgJiYgIW5vd0FmdGVyVHJpZ2dlclBvaW50XG4gICAgICAgIGlmIChjcm9zc2VkRm9yd2FyZCB8fCBjcm9zc2VkQmFja3dhcmQpIHtcbiAgICAgICAgICB3YXlwb2ludC5xdWV1ZVRyaWdnZXIoZGlyZWN0aW9uKVxuICAgICAgICAgIHRyaWdnZXJlZEdyb3Vwc1t3YXlwb2ludC5ncm91cC5pZF0gPSB3YXlwb2ludC5ncm91cFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgZ3JvdXBLZXkgaW4gdHJpZ2dlcmVkR3JvdXBzKSB7XG4gICAgICB0cmlnZ2VyZWRHcm91cHNbZ3JvdXBLZXldLmZsdXNoVHJpZ2dlcnMoKVxuICAgIH1cblxuICAgIHRoaXMub2xkU2Nyb2xsID0ge1xuICAgICAgeDogYXhlcy5ob3Jpem9udGFsLm5ld1Njcm9sbCxcbiAgICAgIHk6IGF4ZXMudmVydGljYWwubmV3U2Nyb2xsXG4gICAgfVxuICB9XG5cbiAgLyogUHJpdmF0ZSAqL1xuICBDb250ZXh0LnByb3RvdHlwZS5pbm5lckhlaWdodCA9IGZ1bmN0aW9uKCkge1xuICAgIC8qZXNsaW50LWRpc2FibGUgZXFlcWVxICovXG4gICAgaWYgKHRoaXMuZWxlbWVudCA9PSB0aGlzLmVsZW1lbnQud2luZG93KSB7XG4gICAgICByZXR1cm4gV2F5cG9pbnQudmlld3BvcnRIZWlnaHQoKVxuICAgIH1cbiAgICAvKmVzbGludC1lbmFibGUgZXFlcWVxICovXG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5pbm5lckhlaWdodCgpXG4gIH1cblxuICAvKiBQcml2YXRlICovXG4gIENvbnRleHQucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uKHdheXBvaW50KSB7XG4gICAgZGVsZXRlIHRoaXMud2F5cG9pbnRzW3dheXBvaW50LmF4aXNdW3dheXBvaW50LmtleV1cbiAgICB0aGlzLmNoZWNrRW1wdHkoKVxuICB9XG5cbiAgLyogUHJpdmF0ZSAqL1xuICBDb250ZXh0LnByb3RvdHlwZS5pbm5lcldpZHRoID0gZnVuY3Rpb24oKSB7XG4gICAgLyplc2xpbnQtZGlzYWJsZSBlcWVxZXEgKi9cbiAgICBpZiAodGhpcy5lbGVtZW50ID09IHRoaXMuZWxlbWVudC53aW5kb3cpIHtcbiAgICAgIHJldHVybiBXYXlwb2ludC52aWV3cG9ydFdpZHRoKClcbiAgICB9XG4gICAgLyplc2xpbnQtZW5hYmxlIGVxZXFlcSAqL1xuICAgIHJldHVybiB0aGlzLmFkYXB0ZXIuaW5uZXJXaWR0aCgpXG4gIH1cblxuICAvKiBQdWJsaWMgKi9cbiAgLyogaHR0cDovL2ltYWtld2VidGhpbmdzLmNvbS93YXlwb2ludHMvYXBpL2NvbnRleHQtZGVzdHJveSAqL1xuICBDb250ZXh0LnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGFsbFdheXBvaW50cyA9IFtdXG4gICAgZm9yICh2YXIgYXhpcyBpbiB0aGlzLndheXBvaW50cykge1xuICAgICAgZm9yICh2YXIgd2F5cG9pbnRLZXkgaW4gdGhpcy53YXlwb2ludHNbYXhpc10pIHtcbiAgICAgICAgYWxsV2F5cG9pbnRzLnB1c2godGhpcy53YXlwb2ludHNbYXhpc11bd2F5cG9pbnRLZXldKVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKHZhciBpID0gMCwgZW5kID0gYWxsV2F5cG9pbnRzLmxlbmd0aDsgaSA8IGVuZDsgaSsrKSB7XG4gICAgICBhbGxXYXlwb2ludHNbaV0uZGVzdHJveSgpXG4gICAgfVxuICB9XG5cbiAgLyogUHVibGljICovXG4gIC8qIGh0dHA6Ly9pbWFrZXdlYnRoaW5ncy5jb20vd2F5cG9pbnRzL2FwaS9jb250ZXh0LXJlZnJlc2ggKi9cbiAgQ29udGV4dC5wcm90b3R5cGUucmVmcmVzaCA9IGZ1bmN0aW9uKCkge1xuICAgIC8qZXNsaW50LWRpc2FibGUgZXFlcWVxICovXG4gICAgdmFyIGlzV2luZG93ID0gdGhpcy5lbGVtZW50ID09IHRoaXMuZWxlbWVudC53aW5kb3dcbiAgICAvKmVzbGludC1lbmFibGUgZXFlcWVxICovXG4gICAgdmFyIGNvbnRleHRPZmZzZXQgPSBpc1dpbmRvdyA/IHVuZGVmaW5lZCA6IHRoaXMuYWRhcHRlci5vZmZzZXQoKVxuICAgIHZhciB0cmlnZ2VyZWRHcm91cHMgPSB7fVxuICAgIHZhciBheGVzXG5cbiAgICB0aGlzLmhhbmRsZVNjcm9sbCgpXG4gICAgYXhlcyA9IHtcbiAgICAgIGhvcml6b250YWw6IHtcbiAgICAgICAgY29udGV4dE9mZnNldDogaXNXaW5kb3cgPyAwIDogY29udGV4dE9mZnNldC5sZWZ0LFxuICAgICAgICBjb250ZXh0U2Nyb2xsOiBpc1dpbmRvdyA/IDAgOiB0aGlzLm9sZFNjcm9sbC54LFxuICAgICAgICBjb250ZXh0RGltZW5zaW9uOiB0aGlzLmlubmVyV2lkdGgoKSxcbiAgICAgICAgb2xkU2Nyb2xsOiB0aGlzLm9sZFNjcm9sbC54LFxuICAgICAgICBmb3J3YXJkOiAncmlnaHQnLFxuICAgICAgICBiYWNrd2FyZDogJ2xlZnQnLFxuICAgICAgICBvZmZzZXRQcm9wOiAnbGVmdCdcbiAgICAgIH0sXG4gICAgICB2ZXJ0aWNhbDoge1xuICAgICAgICBjb250ZXh0T2Zmc2V0OiBpc1dpbmRvdyA/IDAgOiBjb250ZXh0T2Zmc2V0LnRvcCxcbiAgICAgICAgY29udGV4dFNjcm9sbDogaXNXaW5kb3cgPyAwIDogdGhpcy5vbGRTY3JvbGwueSxcbiAgICAgICAgY29udGV4dERpbWVuc2lvbjogdGhpcy5pbm5lckhlaWdodCgpLFxuICAgICAgICBvbGRTY3JvbGw6IHRoaXMub2xkU2Nyb2xsLnksXG4gICAgICAgIGZvcndhcmQ6ICdkb3duJyxcbiAgICAgICAgYmFja3dhcmQ6ICd1cCcsXG4gICAgICAgIG9mZnNldFByb3A6ICd0b3AnXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgYXhpc0tleSBpbiBheGVzKSB7XG4gICAgICB2Y
2XIgYXhpcyA9IGF4ZXNbYXhpc0tleV1cbiAgICAgIGZvciAodmFyIHdheXBvaW50S2V5IGluIHRoaXMud2F5cG9pbnRzW2F4aXNLZXldKSB7XG4gICAgICAgIHZhciB3YXlwb2ludCA9IHRoaXMud2F5cG9pbnRzW2F4aXNLZXldW3dheXBvaW50S2V5XVxuICAgICAgICB2YXIgYWRqdXN0bWVudCA9IHdheXBvaW50Lm9wdGlvbnMub2Zmc2V0XG4gICAgICAgIHZhciBvbGRUcmlnZ2VyUG9pbnQgPSB3YXlwb2ludC50cmlnZ2VyUG9pbnRcbiAgICAgICAgdmFyIGVsZW1lbnRPZmZzZXQgPSAwXG4gICAgICAgIHZhciBmcmVzaFdheXBvaW50ID0gb2xkVHJpZ2dlclBvaW50ID09IG51bGxcbiAgICAgICAgdmFyIGNvbnRleHRNb2RpZmllciwgd2FzQmVmb3JlU2Nyb2xsLCBub3dBZnRlclNjcm9sbFxuICAgICAgICB2YXIgdHJpZ2dlcmVkQmFja3dhcmQsIHRyaWdnZXJlZEZvcndhcmRcblxuICAgICAgICBpZiAod2F5cG9pbnQuZWxlbWVudCAhPT0gd2F5cG9pbnQuZWxlbWVudC53aW5kb3cpIHtcbiAgICAgICAgICBlbGVtZW50T2Zmc2V0ID0gd2F5cG9pbnQuYWRhcHRlci5vZmZzZXQoKVtheGlzLm9mZnNldFByb3BdXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIGFkanVzdG1lbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBhZGp1c3RtZW50ID0gYWRqdXN0bWVudC5hcHBseSh3YXlwb2ludClcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh0eXBlb2YgYWRqdXN0bWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBhZGp1c3RtZW50ID0gcGFyc2VGbG9hdChhZGp1c3RtZW50KVxuICAgICAgICAgIGlmICh3YXlwb2ludC5vcHRpb25zLm9mZnNldC5pbmRleE9mKCclJykgPiAtIDEpIHtcbiAgICAgICAgICAgIGFkanVzdG1lbnQgPSBNYXRoLmNlaWwoYXhpcy5jb250ZXh0RGltZW5zaW9uICogYWRqdXN0bWVudCAvIDEwMClcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb250ZXh0TW9kaWZpZXIgPSBheGlzLmNvbnRleHRTY3JvbGwgLSBheGlzLmNvbnRleHRPZmZzZXRcbiAgICAgICAgd2F5cG9pbnQudHJpZ2dlclBvaW50ID0gTWF0aC5mbG9vcihlbGVtZW50T2Zmc2V0ICsgY29udGV4dE1vZGlmaWVyIC0gYWRqdXN0bWVudClcbiAgICAgICAgd2FzQmVmb3JlU2Nyb2xsID0gb2xkVHJpZ2dlclBvaW50IDwgYXhpcy5vbGRTY3JvbGxcbiAgICAgICAgbm93QWZ0ZXJTY3JvbGwgPSB3YXlwb2ludC50cmlnZ2VyUG9pbnQgPj0gYXhpcy5vbGRTY3JvbGxcbiAgICAgICAgdHJpZ2dlcmVkQmFja3dhcmQgPSB3YXNCZWZvcmVTY3JvbGwgJiYgbm93QWZ0ZXJTY3JvbGxcbiAgICAgICAgdHJpZ2dlcmVkRm9yd2FyZCA9ICF3YXNCZWZvcmVTY3JvbGwgJiYgIW5vd0FmdGVyU2Nyb2xsXG5cbiAgICAgICAgaWYgKCFmcmVzaFdheXBvaW50ICYmIHRyaWdnZXJlZEJhY2t3YXJkKSB7XG4gICAgICAgICAgd2F5cG9pbnQucXVldWVUcmlnZ2VyKGF4aXMuYmFja3dhcmQpXG4gICAgICAgICAgdHJpZ2dlcmVkR3JvdXBzW3dheXBvaW50Lmdyb3VwLmlkXSA9IHdheXBvaW50Lmdyb3VwXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIWZyZXNoV2F5cG9pbnQgJiYgdHJpZ2dlcmVkRm9yd2FyZCkge1xuICAgICAgICAgIHdheXBvaW50LnF1ZXVlVHJpZ2dlcihheGlzLmZvcndhcmQpXG4gICAgICAgICAgdHJpZ2dlcmVkR3JvdXBzW3dheXBvaW50Lmdyb3VwLmlkXSA9IHdheXBvaW50Lmdyb3VwXG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoZnJlc2hXYXlwb2ludCAmJiBheGlzLm9sZFNjcm9sbCA+PSB3YXlwb2ludC50cmlnZ2VyUG9pbnQpIHtcbiAgICAgICAgICB3YXlwb2ludC5xdWV1ZVRyaWdnZXIoYXhpcy5mb3J3YXJkKVxuICAgICAgICAgIHRyaWdnZXJlZEdyb3Vwc1t3YXlwb2ludC5ncm91cC5pZF0gPSB3YXlwb2ludC5ncm91cFxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgV2F5cG9pbnQucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkge1xuICAgICAgZm9yICh2YXIgZ3JvdXBLZXkgaW4gdHJpZ2dlcmVkR3JvdXBzKSB7XG4gICAgICAgIHRyaWdnZXJlZEdyb3Vwc1tncm91cEtleV0uZmx1c2hUcmlnZ2VycygpXG4gICAgICB9XG4gICAgfSlcblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvKiBQcml2YXRlICovXG4gIENvbnRleHQuZmluZE9yQ3JlYXRlQnlFbGVtZW50ID0gZnVuY3Rpb24oZWxlbWVudCkge1xuICAgIHJldHVybiBDb250ZXh0LmZpbmRCeUVsZW1lbnQoZWxlbWVudCkgfHwgbmV3IENvbnRleHQoZWxlbWVudClcbiAgfVxuXG4gIC8qIFByaXZhdGUgKi9cbiAgQ29udGV4dC5yZWZyZXNoQWxsID0gZnVuY3Rpb24oKSB7XG4gICAgZm9yICh2YXIgY29udGV4dElkIGluIGNvbnRleHRzKSB7XG4gICAgICBjb250ZXh0c1tjb250ZXh0SWRdLnJlZnJlc2goKVxuICAgIH1cbiAgfVxuXG4gIC8qIFB1YmxpYyAqL1xuICAvKiBodHRwOi8vaW1ha2V3ZWJ0aGluZ3MuY29tL3dheXBvaW50cy9hcGkvY29udGV4dC1maW5kLWJ5LWVsZW1lbnQgKi9cbiAgQ29udGV4dC5maW5kQnlFbGVtZW50ID0gZnVuY3Rpb24oZWxlbWVudCkge1xuICAgIHJldHVybiBjb250ZXh0c1tlbGVtZW50LndheXBvaW50Q29udGV4dEtleV1cbiAgfVxuXG4gIHdpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICBpZiAob2xkV2luZG93TG9hZCkge1xuICAgICAgb2xkV2luZG93TG9hZCgpXG4gICAgfVxuICAgIENvbnRleHQucmVmcmVzaEFsbCgpXG4gIH1cblxuXG4gIFdheXBvaW50LnJlcXVlc3RBbmltYXRpb25GcmFtZSA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7XG4gICAgdmFyIHJlcXVlc3RGbiA9IHdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHxcbiAgICAgIHdpbmRvdy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHxcbiAgICAgIHdpbmRvdy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWUgfHxcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZVNoaW1cbiAgICByZXF1ZXN0Rm4uY2FsbCh3aW5kb3csIGNhbGxiYWNrKVxuICB9XG4gIFdheXBvaW50LkNvbnRleHQgPSBDb250ZXh0XG59KCkpXG47KGZ1bmN0aW9uKCkge1xuICAndXNlIHN0cmljdCdcblxuICBmdW5jdGlvbiBieVRyaWdnZXJQb2ludChhLCBiKSB7XG4gICAgcmV0dXJuIGEudHJpZ2dlclBvaW50IC0gYi50cmlnZ2VyUG9pbnRcbiAgfVxuXG4gIGZ1bmN0aW9uIGJ5UmV2ZXJzZVRyaWdnZXJQb2ludChhLCBiKSB7XG4gICAgcmV0dXJuIGIudHJpZ2dlclBvaW50IC0gYS50cmlnZ2VyUG9pbnRcbiAgfVxuXG4gIHZhciBncm91cHMgPSB7XG4gICAgdmVydGljYWw6IHt9LFxuICAgIGhvcml6b250YWw6IHt9XG4gIH1cbiAgdmFyIFdheXBvaW50ID0gd2luZG93LldheXBvaW50XG5cbiAgLyogaHR0cDovL2ltYWtld2VidGhpbmdzLmNvbS93YXlwb2ludHMvYXBpL2dyb3VwICovXG4gIGZ1bmN0aW9uIEdyb3VwKG9wdGlvbnMpIHtcbiAgICB0aGlzLm5hbWUgPSBvcHRpb25zLm5hbWVcbiAgICB0aGlzLmF4aXMgPSBvcHRpb25zLmF4aXNcbiAgICB0aGlzLmlkID0gdGh
2pcy5uYW1lICsgJy0nICsgdGhpcy5heGlzXG4gICAgdGhpcy53YXlwb2ludHMgPSBbXVxuICAgIHRoaXMuY2xlYXJUcmlnZ2VyUXVldWVzKClcbiAgICBncm91cHNbdGhpcy5heGlzXVt0aGlzLm5hbWVdID0gdGhpc1xuICB9XG5cbiAgLyogUHJpdmF0ZSAqL1xuICBHcm91cC5wcm90b3R5cGUuYWRkID0gZnVuY3Rpb24od2F5cG9pbnQpIHtcbiAgICB0aGlzLndheXBvaW50cy5wdXNoKHdheXBvaW50KVxuICB9XG5cbiAgLyogUHJpdmF0ZSAqL1xuICBHcm91cC5wcm90b3R5cGUuY2xlYXJUcmlnZ2VyUXVldWVzID0gZnVuY3Rpb24oKSB7XG4gICAgdGhpcy50cmlnZ2VyUXVldWVzID0ge1xuICAgICAgdXA6IFtdLFxuICAgICAgZG93bjogW10sXG4gICAgICBsZWZ0OiBbXSxcbiAgICAgIHJpZ2h0OiBbXVxuICAgIH1cbiAgfVxuXG4gIC8qIFByaXZhdGUgKi9cbiAgR3JvdXAucHJvdG90eXBlLmZsdXNoVHJpZ2dlcnMgPSBmdW5jdGlvbigpIHtcbiAgICBmb3IgKHZhciBkaXJlY3Rpb24gaW4gdGhpcy50cmlnZ2VyUXVldWVzKSB7XG4gICAgICB2YXIgd2F5cG9pbnRzID0gdGhpcy50cmlnZ2VyUXVldWVzW2RpcmVjdGlvbl1cbiAgICAgIHZhciByZXZlcnNlID0gZGlyZWN0aW9uID09PSAndXAnIHx8IGRpcmVjdGlvbiA9PT0gJ2xlZnQnXG4gICAgICB3YXlwb2ludHMuc29ydChyZXZlcnNlID8gYnlSZXZlcnNlVHJpZ2dlclBvaW50IDogYnlUcmlnZ2VyUG9pbnQpXG4gICAgICBmb3IgKHZhciBpID0gMCwgZW5kID0gd2F5cG9pbnRzLmxlbmd0aDsgaSA8IGVuZDsgaSArPSAxKSB7XG4gICAgICAgIHZhciB3YXlwb2ludCA9IHdheXBvaW50c1tpXVxuICAgICAgICBpZiAod2F5cG9pbnQub3B0aW9ucy5jb250aW51b3VzIHx8IGkgPT09IHdheXBvaW50cy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgd2F5cG9pbnQudHJpZ2dlcihbZGlyZWN0aW9uXSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNsZWFyVHJpZ2dlclF1ZXVlcygpXG4gIH1cblxuICAvKiBQcml2YXRlICovXG4gIEdyb3VwLnByb3RvdHlwZS5uZXh0ID0gZnVuY3Rpb24od2F5cG9pbnQpIHtcbiAgICB0aGlzLndheXBvaW50cy5zb3J0KGJ5VHJpZ2dlclBvaW50KVxuICAgIHZhciBpbmRleCA9IFdheXBvaW50LkFkYXB0ZXIuaW5BcnJheSh3YXlwb2ludCwgdGhpcy53YXlwb2ludHMpXG4gICAgdmFyIGlzTGFzdCA9IGluZGV4ID09PSB0aGlzLndheXBvaW50cy5sZW5ndGggLSAxXG4gICAgcmV0dXJuIGlzTGFzdCA/IG51bGwgOiB0aGlzLndheXBvaW50c1tpbmRleCArIDFdXG4gIH1cblxuICAvKiBQcml2YXRlICovXG4gIEdyb3VwLnByb3RvdHlwZS5wcmV2aW91cyA9IGZ1bmN0aW9uKHdheXBvaW50KSB7XG4gICAgdGhpcy53YXlwb2ludHMuc29ydChieVRyaWdnZXJQb2ludClcbiAgICB2YXIgaW5kZXggPSBXYXlwb2ludC5BZGFwdGVyLmluQXJyYXkod2F5cG9pbnQsIHRoaXMud2F5cG9pbnRzKVxuICAgIHJldHVybiBpbmRleCA/IHRoaXMud2F5cG9pbnRzW2luZGV4IC0gMV0gOiBudWxsXG4gIH1cblxuICAvKiBQcml2YXRlICovXG4gIEdyb3VwLnByb3RvdHlwZS5xdWV1ZVRyaWdnZXIgPSBmdW5jdGlvbih3YXlwb2ludCwgZGlyZWN0aW9uKSB7XG4gICAgdGhpcy50cmlnZ2VyUXVldWVzW2RpcmVjdGlvbl0ucHVzaCh3YXlwb2ludClcbiAgfVxuXG4gIC8qIFByaXZhdGUgKi9cbiAgR3JvdXAucHJvdG90eXBlLnJlbW92ZSA9IGZ1bmN0aW9uKHdheXBvaW50KSB7XG4gICAgdmFyIGluZGV4ID0gV2F5cG9pbnQuQWRhcHRlci5pbkFycmF5KHdheXBvaW50LCB0aGlzLndheXBvaW50cylcbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgdGhpcy53YXlwb2ludHMuc3BsaWNlKGluZGV4LCAxKVxuICAgIH1cbiAgfVxuXG4gIC8qIFB1YmxpYyAqL1xuICAvKiBodHRwOi8vaW1ha2V3ZWJ0aGluZ3MuY29tL3dheXBvaW50cy9hcGkvZmlyc3QgKi9cbiAgR3JvdXAucHJvdG90eXBlLmZpcnN0ID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMud2F5cG9pbnRzWzBdXG4gIH1cblxuICAvKiBQdWJsaWMgKi9cbiAgLyogaHR0cDovL2ltYWtld2VidGhpbmdzLmNvbS93YXlwb2ludHMvYXBpL2xhc3QgKi9cbiAgR3JvdXAucHJvdG90eXBlLmxhc3QgPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy53YXlwb2ludHNbdGhpcy53YXlwb2ludHMubGVuZ3RoIC0gMV1cbiAgfVxuXG4gIC8qIFByaXZhdGUgKi9cbiAgR3JvdXAuZmluZE9yQ3JlYXRlID0gZnVuY3Rpb24ob3B0aW9ucykge1xuICAgIHJldHVybiBncm91cHNbb3B0aW9ucy5heGlzXVtvcHRpb25zLm5hbWVdIHx8IG5ldyBHcm91cChvcHRpb25zKVxuICB9XG5cbiAgV2F5cG9pbnQuR3JvdXAgPSBHcm91cFxufSgpKVxuOyhmdW5jdGlvbigpIHtcbiAgJ3VzZSBzdHJpY3QnXG5cbiAgdmFyIFdheXBvaW50ID0gd2luZG93LldheXBvaW50XG5cbiAgZnVuY3Rpb24gaXNXaW5kb3coZWxlbWVudCkge1xuICAgIHJldHVybiBlbGVtZW50ID09PSBlbGVtZW50LndpbmRvd1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0V2luZG93KGVsZW1lbnQpIHtcbiAgICBpZiAoaXNXaW5kb3coZWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBlbGVtZW50XG4gICAgfVxuICAgIHJldHVybiBlbGVtZW50LmRlZmF1bHRWaWV3XG4gIH1cblxuICBmdW5jdGlvbiBOb0ZyYW1ld29ya0FkYXB0ZXIoZWxlbWVudCkge1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnRcbiAgICB0aGlzLmhhbmRsZXJzID0ge31cbiAgfVxuXG4gIE5vRnJhbWV3b3JrQWRhcHRlci5wcm90b3R5cGUuaW5uZXJIZWlnaHQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgaXNXaW4gPSBpc1dpbmRvdyh0aGlzLmVsZW1lbnQpXG4gICAgcmV0dXJuIGlzV2luID8gdGhpcy5lbGVtZW50LmlubmVySGVpZ2h0IDogdGhpcy5lbGVtZW50LmNsaWVudEhlaWdodFxuICB9XG5cbiAgTm9GcmFtZXdvcmtBZGFwdGVyLnByb3RvdHlwZS5pbm5lcldpZHRoID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGlzV2luID0gaXNXaW5kb3codGhpcy5lbGVtZW50KVxuICAgIHJldHVybiBpc1dpbiA/IHRoaXMuZWxlbWVudC5pbm5lcldpZHRoIDogdGhpcy5lbGVtZW50LmNsaWVudFdpZHRoXG4gIH1cblxuICBOb0ZyYW1ld29ya0FkYXB0ZXIucHJvdG90eXBlLm9mZiA9IGZ1bmN0aW9uKGV2ZW50LCBoYW5kbGVyKSB7XG4gICAgZnVuY3Rpb24gcmVtb3ZlTGlzdGVuZXJzKGVsZW1lbnQsIGxpc3RlbmVycywgaGFuZGxlcikge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGVuZCA9IGxpc3RlbmVycy5sZW5ndGggLSAxOyBpIDwgZW5kOyBpKyspIHtcbiAgICAgICAgdmFyIGxpc3RlbmVyID0gbGlzdGVuZXJzW2ldXG4gICAgICAgIGlmICghaGFuZGxlciB8fCBoYW5kbGVyID09PSBsaXN0ZW5lcikge1xuICAgICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihsaXN0ZW5lcilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgI
2HZhciBldmVudFBhcnRzID0gZXZlbnQuc3BsaXQoJy4nKVxuICAgIHZhciBldmVudFR5cGUgPSBldmVudFBhcnRzWzBdXG4gICAgdmFyIG5hbWVzcGFjZSA9IGV2ZW50UGFydHNbMV1cbiAgICB2YXIgZWxlbWVudCA9IHRoaXMuZWxlbWVudFxuXG4gICAgaWYgKG5hbWVzcGFjZSAmJiB0aGlzLmhhbmRsZXJzW25hbWVzcGFjZV0gJiYgZXZlbnRUeXBlKSB7XG4gICAgICByZW1vdmVMaXN0ZW5lcnMoZWxlbWVudCwgdGhpcy5oYW5kbGVyc1tuYW1lc3BhY2VdW2V2ZW50VHlwZV0sIGhhbmRsZXIpXG4gICAgICB0aGlzLmhhbmRsZXJzW25hbWVzcGFjZV1bZXZlbnRUeXBlXSA9IFtdXG4gICAgfVxuICAgIGVsc2UgaWYgKGV2ZW50VHlwZSkge1xuICAgICAgZm9yICh2YXIgbnMgaW4gdGhpcy5oYW5kbGVycykge1xuICAgICAgICByZW1vdmVMaXN0ZW5lcnMoZWxlbWVudCwgdGhpcy5oYW5kbGVyc1tuc11bZXZlbnRUeXBlXSB8fCBbXSwgaGFuZGxlcilcbiAgICAgICAgdGhpcy5oYW5kbGVyc1tuc11bZXZlbnRUeXBlXSA9IFtdXG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKG5hbWVzcGFjZSAmJiB0aGlzLmhhbmRsZXJzW25hbWVzcGFjZV0pIHtcbiAgICAgIGZvciAodmFyIHR5cGUgaW4gdGhpcy5oYW5kbGVyc1tuYW1lc3BhY2VdKSB7XG4gICAgICAgIHJlbW92ZUxpc3RlbmVycyhlbGVtZW50LCB0aGlzLmhhbmRsZXJzW25hbWVzcGFjZV1bdHlwZV0sIGhhbmRsZXIpXG4gICAgICB9XG4gICAgICB0aGlzLmhhbmRsZXJzW25hbWVzcGFjZV0gPSB7fVxuICAgIH1cbiAgfVxuXG4gIC8qIEFkYXB0ZWQgZnJvbSBqUXVlcnkgMS54IG9mZnNldCgpICovXG4gIE5vRnJhbWV3b3JrQWRhcHRlci5wcm90b3R5cGUub2Zmc2V0ID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKCF0aGlzLmVsZW1lbnQub3duZXJEb2N1bWVudCkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICB2YXIgZG9jdW1lbnRFbGVtZW50ID0gdGhpcy5lbGVtZW50Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XG4gICAgdmFyIHdpbiA9IGdldFdpbmRvdyh0aGlzLmVsZW1lbnQub3duZXJEb2N1bWVudClcbiAgICB2YXIgcmVjdCA9IHtcbiAgICAgIHRvcDogMCxcbiAgICAgIGxlZnQ6IDBcbiAgICB9XG5cbiAgICBpZiAodGhpcy5lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCkge1xuICAgICAgcmVjdCA9IHRoaXMuZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0b3A6IHJlY3QudG9wICsgd2luLnBhZ2VZT2Zmc2V0IC0gZG9jdW1lbnRFbGVtZW50LmNsaWVudFRvcCxcbiAgICAgIGxlZnQ6IHJlY3QubGVmdCArIHdpbi5wYWdlWE9mZnNldCAtIGRvY3VtZW50RWxlbWVudC5jbGllbnRMZWZ0XG4gICAgfVxuICB9XG5cbiAgTm9GcmFtZXdvcmtBZGFwdGVyLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uKGV2ZW50LCBoYW5kbGVyKSB7XG4gICAgdmFyIGV2ZW50UGFydHMgPSBldmVudC5zcGxpdCgnLicpXG4gICAgdmFyIGV2ZW50VHlwZSA9IGV2ZW50UGFydHNbMF1cbiAgICB2YXIgbmFtZXNwYWNlID0gZXZlbnRQYXJ0c1sxXSB8fCAnX19kZWZhdWx0J1xuICAgIHZhciBuc0hhbmRsZXJzID0gdGhpcy5oYW5kbGVyc1tuYW1lc3BhY2VdID0gdGhpcy5oYW5kbGVyc1tuYW1lc3BhY2VdIHx8IHt9XG4gICAgdmFyIG5zVHlwZUxpc3QgPSBuc0hhbmRsZXJzW2V2ZW50VHlwZV0gPSBuc0hhbmRsZXJzW2V2ZW50VHlwZV0gfHwgW11cblxuICAgIG5zVHlwZUxpc3QucHVzaChoYW5kbGVyKVxuICAgIHRoaXMuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgaGFuZGxlcilcbiAgfVxuXG4gIE5vRnJhbWV3b3JrQWRhcHRlci5wcm90b3R5cGUub3V0ZXJIZWlnaHQgPSBmdW5jdGlvbihpbmNsdWRlTWFyZ2luKSB7XG4gICAgdmFyIGhlaWdodCA9IHRoaXMuaW5uZXJIZWlnaHQoKVxuICAgIHZhciBjb21wdXRlZFN0eWxlXG5cbiAgICBpZiAoaW5jbHVkZU1hcmdpbiAmJiAhaXNXaW5kb3codGhpcy5lbGVtZW50KSkge1xuICAgICAgY29tcHV0ZWRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudClcbiAgICAgIGhlaWdodCArPSBwYXJzZUludChjb21wdXRlZFN0eWxlLm1hcmdpblRvcCwgMTApXG4gICAgICBoZWlnaHQgKz0gcGFyc2VJbnQoY29tcHV0ZWRTdHlsZS5tYXJnaW5Cb3R0b20sIDEwKVxuICAgIH1cblxuICAgIHJldHVybiBoZWlnaHRcbiAgfVxuXG4gIE5vRnJhbWV3b3JrQWRhcHRlci5wcm90b3R5cGUub3V0ZXJXaWR0aCA9IGZ1bmN0aW9uKGluY2x1ZGVNYXJnaW4pIHtcbiAgICB2YXIgd2lkdGggPSB0aGlzLmlubmVyV2lkdGgoKVxuICAgIHZhciBjb21wdXRlZFN0eWxlXG5cbiAgICBpZiAoaW5jbHVkZU1hcmdpbiAmJiAhaXNXaW5kb3codGhpcy5lbGVtZW50KSkge1xuICAgICAgY29tcHV0ZWRTdHlsZSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHRoaXMuZWxlbWVudClcbiAgICAgIHdpZHRoICs9IHBhcnNlSW50KGNvbXB1dGVkU3R5bGUubWFyZ2luTGVmdCwgMTApXG4gICAgICB3aWR0aCArPSBwYXJzZUludChjb21wdXRlZFN0eWxlLm1hcmdpblJpZ2h0LCAxMClcbiAgICB9XG5cbiAgICByZXR1cm4gd2lkdGhcbiAgfVxuXG4gIE5vRnJhbWV3b3JrQWRhcHRlci5wcm90b3R5cGUuc2Nyb2xsTGVmdCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciB3aW4gPSBnZXRXaW5kb3codGhpcy5lbGVtZW50KVxuICAgIHJldHVybiB3aW4gPyB3aW4ucGFnZVhPZmZzZXQgOiB0aGlzLmVsZW1lbnQuc2Nyb2xsTGVmdFxuICB9XG5cbiAgTm9GcmFtZXdvcmtBZGFwdGVyLnByb3RvdHlwZS5zY3JvbGxUb3AgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgd2luID0gZ2V0V2luZG93KHRoaXMuZWxlbWVudClcbiAgICByZXR1cm4gd2luID8gd2luLnBhZ2VZT2Zmc2V0IDogdGhpcy5lbGVtZW50LnNjcm9sbFRvcFxuICB9XG5cbiAgTm9GcmFtZXdvcmtBZGFwdGVyLmV4dGVuZCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKVxuXG4gICAgZnVuY3Rpb24gbWVyZ2UodGFyZ2V0LCBvYmopIHtcbiAgICAgIGlmICh0eXBlb2YgdGFyZ2V0ID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0Jykge1xuICAgICAgICBmb3IgKHZhciBrZXkgaW4gb2JqKSB7XG4gICAgICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICB0YXJnZXRba2V5XSA9IG9ialtrZXldXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybi
2B0YXJnZXRcbiAgICB9XG5cbiAgICBmb3IgKHZhciBpID0gMSwgZW5kID0gYXJncy5sZW5ndGg7IGkgPCBlbmQ7IGkrKykge1xuICAgICAgbWVyZ2UoYXJnc1swXSwgYXJnc1tpXSlcbiAgICB9XG4gICAgcmV0dXJuIGFyZ3NbMF1cbiAgfVxuXG4gIE5vRnJhbWV3b3JrQWRhcHRlci5pbkFycmF5ID0gZnVuY3Rpb24oZWxlbWVudCwgYXJyYXksIGkpIHtcbiAgICByZXR1cm4gYXJyYXkgPT0gbnVsbCA/IC0xIDogYXJyYXkuaW5kZXhPZihlbGVtZW50LCBpKVxuICB9XG5cbiAgTm9GcmFtZXdvcmtBZGFwdGVyLmlzRW1wdHlPYmplY3QgPSBmdW5jdGlvbihvYmopIHtcbiAgICAvKiBlc2xpbnQgbm8tdW51c2VkLXZhcnM6IDAgKi9cbiAgICBmb3IgKHZhciBuYW1lIGluIG9iaikge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICAgIHJldHVybiB0cnVlXG4gIH1cblxuICBXYXlwb2ludC5hZGFwdGVycy5wdXNoKHtcbiAgICBuYW1lOiAnbm9mcmFtZXdvcmsnLFxuICAgIEFkYXB0ZXI6IE5vRnJhbWV3b3JrQWRhcHRlclxuICB9KVxuICBXYXlwb2ludC5BZGFwdGVyID0gTm9GcmFtZXdvcmtBZGFwdGVyXG59KCkpXG47IiwiLyohXG5XYXlwb2ludHMgSW52aWV3IFNob3J0Y3V0IC0gNC4wLjFcbkNvcHlyaWdodCDCqSAyMDExLTIwMTYgQ2FsZWIgVHJvdWdodG9uXG5MaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuXG5odHRwczovL2dpdGh1Yi5jb20vaW1ha2V3ZWJ0aGluZ3Mvd2F5cG9pbnRzL2Jsb2IvbWFzdGVyL2xpY2Vuc2VzLnR4dFxuKi9cbihmdW5jdGlvbigpIHtcbiAgJ3VzZSBzdHJpY3QnXG5cbiAgZnVuY3Rpb24gbm9vcCgpIHt9XG5cbiAgdmFyIFdheXBvaW50ID0gd2luZG93LldheXBvaW50XG5cbiAgLyogaHR0cDovL2ltYWtld2VidGhpbmdzLmNvbS93YXlwb2ludHMvc2hvcnRjdXRzL2ludmlldyAqL1xuICBmdW5jdGlvbiBJbnZpZXcob3B0aW9ucykge1xuICAgIHRoaXMub3B0aW9ucyA9IFdheXBvaW50LkFkYXB0ZXIuZXh0ZW5kKHt9LCBJbnZpZXcuZGVmYXVsdHMsIG9wdGlvbnMpXG4gICAgdGhpcy5heGlzID0gdGhpcy5vcHRpb25zLmhvcml6b250YWwgPyAnaG9yaXpvbnRhbCcgOiAndmVydGljYWwnXG4gICAgdGhpcy53YXlwb2ludHMgPSBbXVxuICAgIHRoaXMuZWxlbWVudCA9IHRoaXMub3B0aW9ucy5lbGVtZW50XG4gICAgdGhpcy5jcmVhdGVXYXlwb2ludHMoKVxuICB9XG5cbiAgLyogUHJpdmF0ZSAqL1xuICBJbnZpZXcucHJvdG90eXBlLmNyZWF0ZVdheXBvaW50cyA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBjb25maWdzID0ge1xuICAgICAgdmVydGljYWw6IFt7XG4gICAgICAgIGRvd246ICdlbnRlcicsXG4gICAgICAgIHVwOiAnZXhpdGVkJyxcbiAgICAgICAgb2Zmc2V0OiAnMTAwJSdcbiAgICAgIH0sIHtcbiAgICAgICAgZG93bjogJ2VudGVyZWQnLFxuICAgICAgICB1cDogJ2V4aXQnLFxuICAgICAgICBvZmZzZXQ6ICdib3R0b20taW4tdmlldydcbiAgICAgIH0sIHtcbiAgICAgICAgZG93bjogJ2V4aXQnLFxuICAgICAgICB1cDogJ2VudGVyZWQnLFxuICAgICAgICBvZmZzZXQ6IDBcbiAgICAgIH0sIHtcbiAgICAgICAgZG93bjogJ2V4aXRlZCcsXG4gICAgICAgIHVwOiAnZW50ZXInLFxuICAgICAgICBvZmZzZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiAtdGhpcy5hZGFwdGVyLm91dGVySGVpZ2h0KClcbiAgICAgICAgfVxuICAgICAgfV0sXG4gICAgICBob3Jpem9udGFsOiBbe1xuICAgICAgICByaWdodDogJ2VudGVyJyxcbiAgICAgICAgbGVmdDogJ2V4aXRlZCcsXG4gICAgICAgIG9mZnNldDogJzEwMCUnXG4gICAgICB9LCB7XG4gICAgICAgIHJpZ2h0OiAnZW50ZXJlZCcsXG4gICAgICAgIGxlZnQ6ICdleGl0JyxcbiAgICAgICAgb2Zmc2V0OiAncmlnaHQtaW4tdmlldydcbiAgICAgIH0sIHtcbiAgICAgICAgcmlnaHQ6ICdleGl0JyxcbiAgICAgICAgbGVmdDogJ2VudGVyZWQnLFxuICAgICAgICBvZmZzZXQ6IDBcbiAgICAgIH0sIHtcbiAgICAgICAgcmlnaHQ6ICdleGl0ZWQnLFxuICAgICAgICBsZWZ0OiAnZW50ZXInLFxuICAgICAgICBvZmZzZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICAgIHJldHVybiAtdGhpcy5hZGFwdGVyLm91dGVyV2lkdGgoKVxuICAgICAgICB9XG4gICAgICB9XVxuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSBjb25maWdzW3RoaXMuYXhpc10ubGVuZ3RoOyBpIDwgZW5kOyBpKyspIHtcbiAgICAgIHZhciBjb25maWcgPSBjb25maWdzW3RoaXMuYXhpc11baV1cbiAgICAgIHRoaXMuY3JlYXRlV2F5cG9pbnQoY29uZmlnKVxuICAgIH1cbiAgfVxuXG4gIC8qIFByaXZhdGUgKi9cbiAgSW52aWV3LnByb3RvdHlwZS5jcmVhdGVXYXlwb2ludCA9IGZ1bmN0aW9uKGNvbmZpZykge1xuICAgIHZhciBzZWxmID0gdGhpc1xuICAgIHRoaXMud2F5cG9pbnRzLnB1c2gobmV3IFdheXBvaW50KHtcbiAgICAgIGNvbnRleHQ6IHRoaXMub3B0aW9ucy5jb250ZXh0LFxuICAgICAgZWxlbWVudDogdGhpcy5vcHRpb25zLmVsZW1lbnQsXG4gICAgICBlbmFibGVkOiB0aGlzLm9wdGlvbnMuZW5hYmxlZCxcbiAgICAgIGhhbmRsZXI6IChmdW5jdGlvbihjb25maWcpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKGRpcmVjdGlvbikge1xuICAgICAgICAgIHNlbGYub3B0aW9uc1tjb25maWdbZGlyZWN0aW9uXV0uY2FsbChzZWxmLCBkaXJlY3Rpb24pXG4gICAgICAgIH1cbiAgICAgIH0oY29uZmlnKSksXG4gICAgICBvZmZzZXQ6IGNvbmZpZy5vZmZzZXQsXG4gICAgICBob3Jpem9udGFsOiB0aGlzLm9wdGlvbnMuaG9yaXpvbn
2RhbFxuICAgIH0pKVxuICB9XG5cbiAgLyogUHVibGljICovXG4gIEludmlldy5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uKCkge1xuICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSB0aGlzLndheXBvaW50cy5sZW5ndGg7IGkgPCBlbmQ7IGkrKykge1xuICAgICAgdGhpcy53YXlwb2ludHNbaV0uZGVzdHJveSgpXG4gICAgfVxuICAgIHRoaXMud2F5cG9pbnRzID0gW11cbiAgfVxuXG4gIEludmlldy5wcm90b3R5cGUuZGlzYWJsZSA9IGZ1bmN0aW9uKCkge1xuICAgIGZvciAodmFyIGkgPSAwLCBlbmQgPSB0aGlzLndheXBvaW50cy5sZW5ndGg7IGkgPCBlbmQ7IGkrKykge1xuICAgICAgdGhpcy53YXlwb2ludHNbaV0uZGlzYWJsZSgpXG4gICAgfVxuICB9XG5cbiAgSW52aWV3LnByb3RvdHlwZS5lbmFibGUgPSBmdW5jdGlvbigpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgZW5kID0gdGhpcy53YXlwb2ludHMubGVuZ3RoOyBpIDwgZW5kOyBpKyspIHtcbiAgICAgIHRoaXMud2F5cG9pbnRzW2ldLmVuYWJsZSgpXG4gICAgfVxuICB9XG5cbiAgSW52aWV3LmRlZmF1bHRzID0ge1xuICAgIGNvbnRleHQ6IHdpbmRvdyxcbiAgICBlbmFibGVkOiB0cnVlLFxuICAgIGVudGVyOiBub29wLFxuICAgIGVudGVyZWQ6IG5vb3AsXG4gICAgZXhpdDogbm9vcCxcbiAgICBleGl0ZWQ6IG5vb3BcbiAgfVxuXG4gIFdheXBvaW50LkludmlldyA9IEludmlld1xufSgpKVxuOyJdfQ==
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.