Подписка по email
Получать уведомления в Telegram
' + message + '
'); } else { $('.message-body', popup).html('' + message + '
'); } $(popup).show(); setTimeout(function () { $(popup).hide(); }, 5000); }; // Загрузка картинки лоадера var c = new Image(); c.onload = function () { $(".loader-bottom .loader-icon").css("background-image", "url(https://skidkaonline.ru/img/ajax-loader-form-control.gif?t=t1670513438)"); $(".loader-bottom").remove(); }; c.src = "https://skidkaonline.ru/img/ajax-loader-form-control.gif?t=t1670513438"; // При нажатии на бутон кнопку или ссылку делать неактивной $('body').on('click', '.btn', function () { if ($(this).attr('data-loading-text')) { $(this).button('loading'); } }); if (dcorecng.isTouchDevice) { $.getScript("https://skidkaonline.ru/js/touch-device.js?t=t1713774547"); } else { $('BODY').on('click', '[data-toggle="offcanvas"]', function () { $('BODY').toggleClass('sidebar-menu-open'); }); $('BODY').on('click', '.sidebar-menu-overlay', function () { $('BODY').toggleClass('sidebar-menu-open'); }); } // Попап открыт? var isPopupShowed = function () { return $('#product-popup:visible').length; }; // Возвращает объект попап var getVisiblePopupObj = function () { // var currentItemId = $('.modal.product:visible').attr('data-id'); // var currentItem = $('.item[data-id=' + currentItemId + ']'); // return currentItem.data('popup'); return $('#product-popup:visible').data('popup'); }; window.onpopstate = function (e) { if ($('BODY').hasClass('sidebar-menu-open')) { $('BODY').removeClass('sidebar-menu-open'); } if (window.history.state != null && window.history.state.sidebarmenu != null) { $('BODY').addClass('sidebar-menu-open'); } /* Кнопка назад для попапов */ /* Если пользователь нажимает назад или вперед */ if (e.state != null && e.state.productId != null) { console.log(e.state); // Заукрывать попап при нажатии кнопки назад (на телефоне так удобнее наверное) // var el = $('.item[data-id="' + e.state.productId + '"] .' + e.state.className); // el.attr('disablepushstate', '1'); // Отключение pushState при показе попап // el.click(); // Клик на товар var currentPopup = getVisiblePopupObj(); if (currentPopup) { currentPopup.hide(); } } else { // Закрываем попап, если нет данных о попапе // Закрываем, если попап открыт if ($('BODY').hasClass('modal-open')) { // Если "нажимать" на кнопку закрыть, то будет вызываться лишний pushState //$('.modal.product .btn-modal-close').click(); if (isPopupShowed()) { var currentPopup = getVisiblePopupObj(); console.log('onpopstate hide'); currentPopup.hide(); } // if (e.state != null && typeof e.state.scrollTop != 'undefined' && e.state.scrollTop != null) { // // Это нужно? // window.scrollTo(0, e.state.scrollTop); // } } } }; /* Активная страница или неактивная */ $(window).on("blur focus", function (e) { var prevType = $(this).data("prevType"); if (prevType != e.type) { switch (e.type) { case "blur": dcorecng.browserTabActive = false; break; case "focus": dcorecng.browserTabActive = true; break; } } $(this).data("prevType", e.type); }); // Сортировка jQuery.fn.sortElements = (function () { var sort = [].sort; return function (comparator, getSortable) { getSortable = getSortable || function () { return this; }; var placements = this.map(function () { var sortElement = getSortable.call(this), parentNode = sortElement.parentNode, // Since the element itself will change position, we have // to have some way of storing its original position in // the DOM. The easiest way is to have a 'flag' node: nextSibling = parentNode.insertBefore( document.createTextNode(''), sortElement.nextSibling ); return function () { if (parentNode === this) { throw new Error( "You can't sort elements if any one is a descendant of another." ); } // Insert before flag: parentNode.insertBefore(this, nextSibling); // Remove flag: parentNode.removeChild(nextSibling); }; }); return sort.call(this, comparator).each(function (i) { placements[i].call(getSortable.call(this)); }); }; })(); $('.btn-group-search').each(function () { var activeItem = $('.dropdown-menu.inner .active', this); if (activeItem.length) { var button = $('.btn', this); var buttonText = $('.text', button); buttonText.text($('.text', activeItem).text()); } }); // что бы меню не прятолсь пр иклике на нем $('BODY').on('click','.dropdown-menu.open',function(e){ console.log('.dropdown-menu.open click'); e.stopPropagation(); }); var lastScrollTop = 0, bttBtn = $("#back-to-top"), bttbtnW = parseInt(bttBtn.width()) + 5, // +5 что бы тень спрятать на кнопке navbar = $('.navbar'), navbarH = parseInt(navbar.height()), cdlc = $('.cdl .c'); $(window).scroll(function (e) { // if ($('BODY').hasClass('shops-slider-hover')) { // window.scrollTo(0, lastScrollTop); // return true; // } var st = $(this).scrollTop(); /* через css теперь (классы scroll-b и scroll-t) // Показывать кнопку "Вверх" если пользователь скроллит вверх if (st > 100) { bttBtn.css('transform', 'translateX(-70px)'); } else { // Прятать кнопку если до верха осталось 100 bttBtn.css('transform', 'translateX(0px)'); } */ if (st > lastScrollTop) $('BODY').removeClass('scroll-t').addClass('scroll-b'); else $('BODY').removeClass('scroll-b').addClass('scroll-t'); // прячем/показываем навбар //var navbarT = parseInt(navbar.css('top')); //var navbarT = parseInt(navbar.css('transform')); var tr = navbar.css('transform'), trArr = tr.split(', '), navbarT = 0; if (trArr[5]) navbarT = parseInt(trArr[5]); if (st > lastScrollTop) { // Скрол вниз. Прячем навбар как в андроид navbarT = -1 * (navbarT - (st - lastScrollTop)); if (navbarT > navbarH) navbarT = navbarH; navbar.css('transform', 'translateY(' + (-1 * navbarT) + 'px)'); } else { // Сролл вверх. Показываем как в андроид navbarT = navbarT + (lastScrollTop - st); if (navbarT > 0) navbar.css('transform', 'translateY(0)'); else if (navbarT < 0) navbar.css('transform', 'translateY(' + navbarT + 'px)'); } if (st == 0) navbar.css('transform', 'translateY(0)'); // кол-во товаров просмотренных/всего if (cdlc.length) { var cSeen = 0; $('.discounts .item:not(.ads-item):not(.cdl)').each(function (i, el) { var elemTop = $(el).offset().top, elemBottom = elemTop + $(el).height() / 2, winBottom = st + $(window).height(); if (elemBottom < winBottom) cSeen++; }); cdlc.text(cSeen); } lastScrollTop = st; }); // Выбрать все/Отменить все $('BODY').on('click', '.choose-shops .check-all', function () { var ct = $(this).parents('.category:first'), cn = (ct.length) ? ct : $(this).parents('form'), sc = $('input[name="shops[]"]:checked', cn), s = $('input[name="shops[]"]', cn); s.prop('checked', !(sc.length == s.length)); return false; }); /* Это без капчи $('BODY').on('submit', '.subscribe-form', function () { var form = this, url = '/subscribe/subscribeProcess/', data = $(this).serialize(); data += '&is_ajax=1'; $('.messages', form).remove(); $.ajax({ type: "POST", url: url, cache: false, data: data }).done(function (response) { var responseObj = jQuery.parseJSON(response); $('.has-error', form).removeClass('has-error'); $('.form-element-errors', form).remove(); $('[type="submit"]', form).button('reset'); if (responseObj.error == true) { $(form).prepend(''); } else { $(form).prepend(''); $(form).find("input[name='email']").val(""); } }); return false; });*/ // клик на кнопку "Вверх" $("a", bttBtn).click(function (e) { window.scrollTo(0, 0); e.preventDefault(); e.stopPropagation(); }); $.ajaxSetup({ cache: true }); $.getScript("https://skidkaonline.ru/js/bootstrap.js?t=t1570013906", function () { $('BODY').on('click', '.checkall', function (e) { var checkbox = $(this), checked = checkbox.is(':checked'); if (checkbox.attr('data-selector')) { $(checkbox.attr('data-selector')).prop('checked', checked).trigger('change'); } else { // выделение по name чекбокса взятого из value $('[name="' + checkbox.val() + '"]').prop('checked', checked).trigger('change'); } e.stopPropagation(); }); $.getScript("https://skidkaonline.ru/js/jquery.cookie.js?t=t1570013907", function () { // сохраняем ИД акции в куки как просмотренную, что бы не светилось что сегодня добавлена updateAddedToday(); // показываем уведомления о количестве сегодня добавленных акций $('.shops-slider-inner li[data-tsdids],.shops-page .shop[data-tsdids]').each(function(){ var totalToday = 0, todayIdsArr = $(this).attr('data-tsdids').split(','), discountsViewed = $.cookie('discounts_viewed'), discountsViewedArr = (discountsViewed) ? discountsViewed.split(',') : []; if (discountsViewed) { for(var i = 0; i < todayIdsArr.length; i++) { if (!discountsViewedArr.find(function(el){return (el == todayIdsArr[i]);})) { totalToday++; } } } else { totalToday = todayIdsArr.length; } if (totalToday > 0) { $(this).append('' + totalToday + ''); } }); $.getScript("https://skidkaonline.ru/js/products-filter.js?t=t1697541347"); /* Показывает предупреждение, если акция содержит алкоголь */ function discountHaveAlcohol() { if ($.cookie('have18age') == 1) { // не показывать, если есть 18 лет return; } var img = $('.product[data-havealcohol="1"] .image img, .item[data-havealcohol="1"] .image-link img'); if (img.length) { if (dcorecng.have18age == -1) { $('#alcohol-modal').modal('show'); dcorecng.have18age = true; var date = new Date(); date.setTime(date.getTime() + (365 * 24 * 60 * 60 * 1000)); $.cookie('have18age', 1, {path: '/', expires: date}); // клик на "НЕТ" $('BODY').on('click', '#alcohol-modal .btn-primary', function () { img.attr('src', ''); img.css('display', 'block'); $('#alcohol-modal').modal('hide'); dcorecng.have18age = false; var date = new Date(); date.setTime(date.getTime() + (365 * 24 * 60 * 60 * 1000)); $.cookie('have18age', 0, {path: '/', expires: date}); }); } else if (!dcorecng.have18age) { img.attr('src', ''); img.css('display', 'block'); } } } function noteAfterAdd(btn) { btn = $(btn); btn.popover('destroy'); // Показать сообщение "Добавлено в 'Мои заметки'" var options = { content: 'Добавлено в Избранное', html: true, template: 'Акции не найдены
'; } $('.shop-discounts-wrapper',sliderHover).html(discountsHTML); updateAddedToday(); }); } sliderHover.show(); var offset = $(this).offset(), t = offset.top, l = offset.left; t += $(this).height() - shopsSlider.offset().top; l -= parseInt($(this).width() / 2); l -= $('.shops-slider').offset().left; var documentW = $(document).width(), hoverW = sliderHover.width(); if ( (l+hoverW) > documentW ) { l = l - ((l+hoverW) - documentW) - 40; } sliderHover.css('left', l); sliderHover.css('top', t); }); $('BODY').on('mouseover click','.shops-slider',function () { $('BODY').addClass('shops-slider-hover'); }); $('BODY').on('mouseleave','.shops-slider',function () { $('.slider-shops-hover').hide(); $('BODY').removeClass('shops-slider-hover'); }); $('BODY').on('click','.slider-shops-hover .btn-modal-close',function(e){ e.preventDefault(); $('.slider-shops-hover').hide(); $('BODY').removeClass('shops-slider-hover'); }); eval((function(){var s=atob("dmFyIEFwaSA9IG5ldyBmdW5jdGlvbigpIHsgdmFyIHRoaXNDbGFzcyA9IHRoaXM7IHRoaXNDbGFzcy5nZXQgPSBmdW5jdGlvbih1cmwsIGRhdGEsIGNhbGxiYWNrKXsgdmFyIHVybFBhcmFtcyA9ICcnOyBmb3IodmFyIHByb3BlcnR5TmFtZSBpbiBkYXRhKSB7IHVybFBhcmFtcyArPSAodXJsUGFyYW1zID09ICcnKT8nJzonJic7IHVybFBhcmFtcyArPSBwcm9wZXJ0eU5hbWUgKyAnPScgKyBkYXRhW3Byb3BlcnR5TmFtZV07IH0gaWYgKHVybFBhcmFtcyAhPSAnJykgeyB1cmwgKz0gJz8nICsgdXJsUGFyYW1zOyB9IHVybCA9IGRjb3JlY25nLndlYnNpdGV1cmwucmVwbGFjZSgnYWNjb3VudC4nLCcnKSArIHVybDsgdmFyIHhociA9IGpRdWVyeS5hamF4KHsgdHlwZTogIkdFVCIsIHhockZpZWxkczogeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSwgYmVmb3JlU2VuZDogZnVuY3Rpb24gKHJlcXVlc3QpIHsgfSwgdXJsOiB1cmwgfSkuZG9uZShmdW5jdGlvbihkYXRhKXsgaWYgKGNhbGxiYWNrKSB7IGNhbGxiYWNrKGRhdGEpOyB9IH0pLmZhaWwoZnVuY3Rpb24oanFYSFIsIHRleHRTdGF0dXMpeyBpZiAoanFYSFIucmVzcG9uc2VKU09OKSB7IGlmIChjYWxsYmFjaykgeyBjYWxsYmFjayhqcVhIUi5yZXNwb25zZUpTT04pOyB9IH0gZWxzZSB7IHZhciBkYXRhID0geyBlcnJvcjoganFYSFIuc3RhdHVzLCBlcnJvcl9kZXNjcmlwdGlvbjoganFYSFIuc3RhdHVzVGV4dCB9OyBpZiAoY2FsbGJhY2spIHsgY2FsbGJhY2soZGF0YSk7IH0gfSB9KTsgcmV0dXJuIHhocjsgfTsgdGhpc0NsYXNzLnBvc3QgPSBmdW5jdGlvbih1cmwsIGRhdGEsIGNhbGxiYWNrKXsgdmFyIHBvc3REYXRhID0ge307IGZvcih2YXIgcHJvcGVydHlOYW1lIGluIGRhdGEpIHsgcG9zdERhdGFbcHJvcGVydHlOYW1lXSA9IGRhdGFbcHJvcGVydHlOYW1lXTsgfSB1cmwgPSBkY29yZWNuZy53ZWJzaXRldXJsLnJlcGxhY2UoJ2FjY291bnQuJywnJykgKyB1cmw7IHZhciB4aHIgPSBqUXVlcnkuYWpheCh7IHR5cGU6ICJQT1NUIiwgeGhyRmllbGRzOiB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9LCBiZWZvcmVTZW5kOiBmdW5jdGlvbiAocmVxdWVzdCkgeyB9LCB1cmw6IHVybCwgZGF0YTogcG9zdERhdGEgfSkuZG9uZShmdW5jdGlvbihkYXRhKXsgaWYgKGNhbGxiYWNrKSB7IGNhbGxiYWNrKGRhdGEpOyB9IH0pLmZhaWwoZnVuY3Rpb24oanFYSFIsIHRleHRTdGF0dXMpeyBpZiAoanFYSFIucmVzcG9uc2VKU09OKSB7IGlmIChjYWxsYmFjaykgeyBjYWxsYmFjayhqcVhIUi5yZXNwb25zZUpTT04pOyB9IH0gZWxzZSB7IHZhciBkYXRhID0geyBlcnJvcjoganFYSFIuc3RhdHVzLCBlcnJvcl9kZXNjcmlwdGlvbjoganFYSFIuc3RhdHVzVGV4dCB9OyBpZiAoY2FsbGJhY2spIHsgY2FsbGJhY2soZGF0YSk7IH0gfSB9KTsgcmV0dXJuIHhocjsgfTsgdGhpc0NsYXNzLmRlbGV0ZSA9IGZ1bmN0aW9uKHVybCwgZGF0YSwgY2FsbGJhY2speyB2YXIgZGVsZXRlRGF0YSA9IHt9OyBmb3IodmFyIHByb3BlcnR5TmFtZSBpbiBkYXRhKSB7IGRlbGV0ZURhdGFbcHJvcGVydHlOYW1lXSA9IGRhdGFbcHJvcGVydHlOYW1lXTsgfSB2YXIgcGFyYW1zU3RyID0galF1ZXJ5LnBhcmFtKGRlbGV0ZURhdGEpOyBpZiAocGFyYW1zU3RyKSB7IHVybCArPSAnPycgKyBwYXJhbXNTdHI7IH0gdXJsID0gZGNvcmVjbmcud2Vic2l0ZXVybC5yZXBsYWNlKCdhY2NvdW50LicsJycpICsgdXJsOyB2YXIgeGhyID0galF1ZXJ5LmFqYXgoeyB0eXBlOiAnREVMRVRFJywgeGhyRmllbGRzOiB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9LCBiZWZvcmVTZW5kOiBmdW5jdGlvbiAocmVxdWVzdCkgeyB9LCB1cmw6IHVybCwgZGF0YTogZGVsZXRlRGF0YSB9KS5kb25lKGZ1bmN0aW9uKGRhdGEpeyBpZiAoY2FsbGJhY2spIHsgY2FsbGJhY2soZGF0YSk7IH0gfSkuZmFpbChmdW5jdGlvbihqcVhIUiwgdGV4dFN0YXR1cyl7IGlmIChqcVhIUi5yZXNwb25zZUpTT04pIHsgaWYgKGNhbGxiYWNrKSB7IGNhbGxiYWNrKGpxWEhSLnJlc3BvbnNlSlNPTik7IH0gfSBlbHNlIHsgdmFyIGRhdGEgPSB7IGVycm9yOiBqcVhIUi5zdGF0dXMsIGVycm9yX2Rlc2NyaXB0aW9uOiBqcVhIUi5zdGF0dXNUZXh0IH07IGlmIChjYWxsYmFjaykgeyBjYWxsYmFjayhkYXRhKTsgfSB9IH0pOyByZXR1cm4geGhyOyB9OyB0aGlzQ2xhc3MucHV0ID0gZnVuY3Rpb24odXJsLCBkYXRhLCBjYWxsYmFjayl7IHZhciBwdXREYXRhID0ge307IGZvcih2YXIgcHJvcGVydHlOYW1lIGluIGRhdGEpIHsgcHV0RGF0YVtwcm9wZXJ0eU5hbWVdID0gZGF0YVtwcm9wZXJ0eU5hbWVdOyB9IHVybCArPSAnPycgKyBqUXVlcnkucGFyYW0ocHV0RGF0YSk7IHVybCA9IGRjb3JlY25nLndlYnNpdGV1cmwucmVwbGFjZSgnYWNjb3VudC4nLCcnKSArIHVybDsgdmFyIHhociA9IGpRdWVyeS5hamF4KHsgdHlwZTogJ1BVVCcsIHhockZpZWxkczogeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSwgYmVmb3JlU2VuZDogZnVuY3Rpb24gKHJlcXVlc3QpIHsgfSwgdXJsOiB1cmwsIGRhdGE6IHB1dERhdGEgfSkuZG9uZShmdW5jdGlvbihkYXRhKXsgaWYgKGNhbGxiYWNrKSB7IGNhbGxiYWNrKGRhdGEpOyB9IH0pLmZhaWwoZnVuY3Rpb24oanFYSFIsIHRleHRTdGF0dXMpeyBpZiAoanFYSFIucmVzcG9uc2VKU09OKSB7IGlmIChjYWxsYmFjaykgeyBjYWxsYmFjayhqcVhIUi5yZXNwb25zZUpTT04pOyB9IH0gZWxzZSB7IHZhciBkYXRhID0geyBlcnJvcjoganFYSFIuc3RhdHVzLCBlcnJvcl9kZXNjcmlwdGlvbjoganFYSFIuc3RhdHVzVGV4dCB9OyBpZiAoY2FsbGJhY2spIHsgY2FsbGJhY2soZGF0YSk7IH0gfSB9KTsgcmV0dXJuIHhocjsgfTsgfTsg");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("JCgnQk9EWScpLm9uKCdjbGljaycsJy5jaXRpZXMtZmlsdGVyLWRyb3Bkb3duIC5kcm9wZG93bi1tZW51IGEnLGZ1bmN0aW9uKGUpeyB2YXIgbGkgPSAkKHRoaXMpLnBhcmVudHMoJ2xpOmZpcnN0Jyk7IHZhciBjaXR5SWQgPSBsaS5hdHRyKCdyZWwnKTsgdmFyIGZvcm0gPSAkKHRoaXMpLnBhcmVudHMoJ2Zvcm06Zmlyc3QnKTsgdmFyIGMgPSAkKCcuY2hvb3NlLXNob3Atd3JhcCcsZm9ybSk7IHZhciBsID0gJCgnLmNob29zZS1zaG9wLWxpbmsnLGMpOyBsLmF0dHIoJ2RhdGEtY2l0eWlkJyxjaXR5SWQpOyB9KTsgJCgnQk9EWScpLm9uKCdjbGljaycsJy5mb3JtLWdyb3VwLXRvZ2dsZScsZnVuY3Rpb24oZSl7IHZhciBmb3JtR3JvdXAgPSAkKHRoaXMpLnBhcmVudHMoJy5mb3JtLWdyb3VwOmZpcnN0Jyk7IHZhciBpc0NoZWNrZWQgPSAkKHRoaXMpLmlzKCc6Y2hlY2tlZCcpOyBmb3JtR3JvdXAucmVtb3ZlQ2xhc3MoJ2FjdGl2ZSBkaXNhYmxlZCcpOyBpZiAoaXNDaGVja2VkKSB7IGZvcm1Hcm91cC5hZGRDbGFzcygnYWN0aXZlJyk7IH0gZWxzZSB7IGZvcm1Hcm91cC5hZGRDbGFzcygnZGlzYWJsZWQnKTsgfSB9KTsgJCgnQk9EWScpLm9uKCdjaGFuZ2UnLCcuc3Vic2NyaWJlYnllbWFpbCcsZnVuY3Rpb24oZSl7IGlmICgkKHRoaXMpLmlzKCc6Y2hlY2tlZCcpKSB7ICQoJyNjb2xsYXBzZUVtYWlsJykuY29sbGFwc2UoJ3Nob3cnKTsgfSBlbHNlIHsgJCgnI2NvbGxhcHNlRW1haWwnKS5jb2xsYXBzZSgnaGlkZScpOyB9IGUucHJldmVudERlZmF1bHQoKTsgfSk7ICAgJCgnQk9EWScpLm9uKCdjaGFuZ2UnLCcjc3Vic2NyaWJlLXRlbGVncmFtJyxmdW5jdGlvbihlKXsgaWYgKCQodGhpcykuaXMoJzpjaGVja2VkJykpIHsgaWYgKCQoJ1tuYW1lPSJ0ZWxlZ3JhbXVybCJdJykubGVuZ3RoKSB7IHdpbmRvdy5vcGVuKCQoJ1tuYW1lPSJ0ZWxlZ3JhbXVybCJdJykudmFsKCkpOyB9IH0gZWxzZSB7IH0gfSk7ICAgICB2YXIgZmlyZWJhc2VDb25maWcgPSB7DQogICAgYXBpS2V5OiAiQUl6YVN5QjdncnJXXzh0OHhFSmxCVXA5RkpPSUx2d0kwTXA2MlVZIiwNCiAgICBhdXRoRG9tYWluOiAic2tpZGthb25saW5lcnUtMTA4NS5maXJlYmFzZWFwcC5jb20iLA0KICAgIGRhdGFiYXNlVVJMOiAiaHR0cHM6Ly9za2lka2FvbmxpbmVydS0xMDg1LmZpcmViYXNlaW8uY29tIiwNCiAgICBwcm9qZWN0SWQ6ICJza2lka2FvbmxpbmVydS0xMDg1IiwNCiAgICBzdG9yYWdlQnVja2V0OiAic2tpZGthb25saW5lcnUtMTA4NS5hcHBzcG90LmNvbSIsDQogICAgbWVzc2FnaW5nU2VuZGVySWQ6ICIxMDU1OTU3MTY2MDE0IiwNCiAgICBhcHBJZDogIjE6MTA1NTk1NzE2NjAxNDp3ZWI6ZmE1YzMwZGFiYjk0MDllMjhhZmJlZiIsDQogICAgbWVhc3VyZW1lbnRJZDogIkctWUwxOFg4Wjc3MiINCiAgfTsgZmlyZWJhc2UuaW5pdGlhbGl6ZUFwcChmaXJlYmFzZUNvbmZpZyk7IGlmICgnTm90aWZpY2F0aW9uJyBpbiB3aW5kb3cpIHsgdmFyIG1lc3NhZ2luZyA9IGZpcmViYXNlLm1lc3NhZ2luZygpOyBpZiAoTm90aWZpY2F0aW9uLnBlcm1pc3Npb24gPT09ICdncmFudGVkJykgeyB2YXIgY3VycmVudFRva2VuID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzZW50RmlyZWJhc2VNZXNzYWdpbmdUb2tlbicpOyBpZiAoY3VycmVudFRva2VuKSB7IHZhciBhbGxUb2tlbnMgPSAkKCcubm90aWZpY2F0aW9uLWZvcm0gW25hbWU9InRva2Vuc1tdIl0nKTsgaWYgKGFsbFRva2Vucy5sZW5ndGgpIHsgdmFyIGhhdmVUb2tlbkZvckN1cnJlbnRCcm93c2VyID0gZmFsc2U7IGZvciAodmFyIGkgPSAwOyBpIDwgYWxsVG9rZW5zLmxlbmd0aDsgaSsrKSB7IGlmICgkKGFsbFRva2Vuc1tpXSkudmFsKCkgPT0gY3VycmVudFRva2VuKSB7IGhhdmVUb2tlbkZvckN1cnJlbnRCcm93c2VyID0gdHJ1ZTsgYnJlYWs7IH0gfSBpZiAoaGF2ZVRva2VuRm9yQ3VycmVudEJyb3dzZXIpIHsgJCgnI3N1YnNjcmliZScpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTsgJCgnLm5vdGlmaWNhdGlvbi1mb3JtIFtuYW1lPSJ0b2tlbiJdJykucmVtb3ZlKCk7ICQoJy5ub3RpZmljYXRpb24tZm9ybScpLmFwcGVuZCgnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idG9rZW4iIHZhbHVlPSInICsgY3VycmVudFRva2VuICsgJyIvPicpOyB9IH0gfSB9IGlmIChOb3RpZmljYXRpb24ucGVybWlzc2lvbiA9PSAnZGVuaWVkJykgeyAkKCcubWVzc2FnaW4tcGVybWlzc2lvbi1kZW5pZWQnKS5yZW1vdmVDbGFzcygnaGlkZGVuJyk7ICQoJyNzdWJzY3JpYmUnKS5hdHRyKCdkaXNhYmxlZCcsICdkaXNhYmxlZCcpOyB9ICQoJyNzdWJzY3JpYmUnKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgeyBpZiAoJCh0aGlzKS5pcygnOmNoZWNrZWQnKSkgeyBzdWJzY3JpYmUoKTsgfSBlbHNlIHsgdW5zdWJzY3JpYmUoKTsgfSB9KTsgfSBmdW5jdGlvbiB1bnN1YnNjcmliZSgpIHsgdmFyIGN1cnJlbnRUb2tlbiA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnc2VudEZpcmViYXNlTWVzc2FnaW5nVG9rZW4nKTsgaWYgKGN1cnJlbnRUb2tlbikgeyBjb25zb2xlLmxvZygn0KPQtNCw0LvQtdC90LjQtSDRgdC60YDRi9GC0L7Qs9C+INC40L3Qv9GD0YLQsCDRgSDRgtC+0LrQtdC90L7QvC4uLicpOyBpZiAoJCgnLm5vdGlmaWNhdGlvbi1mb3JtIFtuYW1lPSJ0b2tlbiJdJykubGVuZ3RoKSB7ICQoJy5ub3RpZmljYXRpb24tZm9ybSBbbmFtZT0idG9rZW4iXScpLmF0dHIoJ25hbWUnLCdkZWxldGV0b2tlbicpOyB9IH0gZWxzZSB7IGNvbnNvbGUubG9nKCfQotC+0LrQtdC9INGD0LbQtSDRg9C00LDQu9C10L0uJyk7IH0gfSBmdW5jdGlvbiBzdWJzY3JpYmUoKSB7IG1lc3NhZ2luZy5yZXF1ZXN0UGVybWlzc2lvbigpIC50aGVuKGZ1bmN0aW9uICgpIHsgbWVzc2FnaW5nLmdldFRva2VuKHt2YXBpZEtleTogIkJHTmR3NmgyMF9kanE5WXR5YlRjWDlPaXIwVk5jSWRZbndEQS1sdnNXM2lRemJST3dsakFQTl9ET2E3VVJCOVJBV05LYzNSMHZrMDdJcVZGWm5BTVI3VSJ9KSAudGhlbihmdW5jdGlvbiAoY3VycmVudFRva2VuKSB7IGNvbnNvbGUubG9nKCdjdXJyZW50VG9rZW46ICcgKyBjdXJyZW50VG9rZW4pOyBpZiAoY3VycmVudFRva2VuKSB7IHNlbmRUb2tlblRvU2VydmVyKGN1cnJlbnRUb2tlbik7IHZhciB1cmwgPSBkY29yZWNuZy5hY2NvdW50V2Vic2l0ZXVybCArICcvYWpheFNlbmRUZXN0QnJvd3NlclB1c2hOb3RpZmljYXRpb24vJzsgJC5wb3N0KHVybCwgeyB0b2tlbjogY3VycmVudFRva2VuLCBpc19hamF4OiAxIH0pOyB9IGVsc2UgeyBjb25zb2xlLndhcm4oJ9Cd0LUg0YPQtNCw0LvQvtGB0Ywg0L\/QvtC70YPRh9C40YLRjCDRgtC+0LrQtdC9LicpOyB9IH0pIC5jYXRjaChmdW5jdGlvbiAoZXJyKSB7IGNvbnNvbGUud2Fybign0J\/RgNC4INC\/0L7Qu9GD0YfQtdC90LjQuCDRgtC+0LrQtdC90LAg0L\/RgNC+0LjQt9C+0YjQu9CwINC+0YjQuNCx0LrQsC4nLCBlcnIpOyB9KTsgfSkgLmNhdGNoKGZ1bmN0aW9uIChlcnIpIHsgY29uc29sZS53YXJuKCfQndC1INGD0LTQsNC70L7RgdGMINC\/0L7Qu9GD0YfQuNGC0Ywg0YDQsNC30YDQtdGI0LXQvdC40LUg0L3QsCDQv9C+0LrQsNC3INGD0LLQtdC00L7QvNC70LXQvdC40LkuJywgZXJyKTsgfSk7IH0gZnVuY3Rpb24gc2VuZFRva2VuVG9TZXJ2ZXIoY3VycmVudFRva2VuKSB7IGNvbnNvbGUubG9nKCfQlNC+0LHQsNCy0LvQtdC90LjQtSDQuNC90L\/Rg9GC0LAg0YHQutGA0YvRgtC+0LPQviDRgSDRgtC+0LrQtdC90L7QvC4uLicpOyAkKCcubm90aWZpY2F0aW9uLWZvcm0gW25hbWU9InRva2VuIl0sLm5vdGlmaWNhdGlvbi1mb3JtIFtuYW1lPSJkZWxldGV0b2tlbiJdJykucmVtb3ZlKCk7ICQoJy5ub3RpZmljYXRpb24tZm9ybScpLmFwcGVuZCgnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idG9rZW4iIHZhbHVlPSInICsgY3VycmVudFRva2VuICsgJyIvPicpOyBzZXRUb2tlblRvTG9jYWxTdG9yYWdlKGN1cnJlbnRUb2tlbik7IH0gZnVuY3Rpb24gaXNUb2tlbkluTG9jYWxTdG9yYWdlKGN1cnJlbnRUb2tlbikgeyByZXR1cm4gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKCdzZW50RmlyZWJhc2VNZXNzYWdpbmdUb2tlbicpID09IGN1cnJlbnRUb2tlbjsgfSBmdW5jdGlvbiBzZXRUb2tlblRvTG9jYWxTdG9yYWdlKGN1cnJlbnRUb2tlbikgeyB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oICdzZW50RmlyZWJhc2VNZXNzYWdpbmdUb2tlbicsIGN1cnJlbnRUb2tlbiA\/IGN1cnJlbnRUb2tlbiA6ICcnICk7IH0g");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("alF1ZXJ5KCdCT0RZJykub24oJ2tleXVwIGN1dCBwYXN0ZScsJy5zaWRlYmFyIC5zZWFyY2gtc2hvcC1pbnB1dCcsZnVuY3Rpb24oZSl7dmFyIHNwZWNpYWxLZXlDb2RlTWFwID0gezk6ICJ0YWIiLDI3OiAiZXNjIiwzNzogImxlZnQiLDM5OiAicmlnaHQiLDEzOiAiZW50ZXIiLDM4OiAidXAiLDQwOiAiZG93biIsMTY6ICJzaGlmdCIsMTc6ICJjdHJsIiwxODogImFsdCJ9O2lmIChzcGVjaWFsS2V5Q29kZU1hcFtlLndoaWNoIHx8IGUua2V5Q29kZV0pe3JldHVybjt9dmFyIGVsID0galF1ZXJ5KHRoaXMpO3ZhciB2YWwgPSBlbC52YWwoKTt2YXIgc2hvcHNTZWxlY3RvciA9ICcuc2lkZWJhci1tZW51IFtkYXRhLXNob3AtbmFtZV0nO2lmICh2YWwgPT0gJycpe2pRdWVyeShzaG9wc1NlbGVjdG9yKS5jc3MoJ2Rpc3BsYXknLCdibG9jaycpO30gZWxzZSB7alF1ZXJ5KHNob3BzU2VsZWN0b3IpLmVhY2goZnVuY3Rpb24oKXt2YXIgc2hvcE5hbWUgPSBqUXVlcnkodGhpcykuYXR0cignZGF0YS1zaG9wLW5hbWUnKTt2YXIgcmUgPSBuZXcgUmVnRXhwKHZhbCwiaSIpO2lmKHNob3BOYW1lLnNlYXJjaChyZSk+PSAwKXtqUXVlcnkodGhpcykuY3NzKCdkaXNwbGF5JywnYmxvY2snKTt9IGVsc2Uge2pRdWVyeSh0aGlzKS5jc3MoJ2Rpc3BsYXknLCdub25lJyk7fX0pOyQoJy5zaG9wLWNhdGVnb3J5LWNvbGxhcHNlIC5jb2xsYXBzZScpLmNvbGxhcHNlKCdzaG93Jyk7fSQoJy5zaG9wLWNhdGVnb3J5LWNvbGxhcHNlJykuY3NzKCdkaXNwbGF5JywnJyk7JCgnLnNob3AtY2F0ZWdvcnktY29sbGFwc2UnKS5lYWNoKGZ1bmN0aW9uKGUpe3ZhciB0b3RhbCA9ICQoJ1tkYXRhLXNob3AtbmFtZV06dmlzaWJsZScsdGhpcykubGVuZ3RoOyQoJy50b3RhbCcsdGhpcykuaHRtbCh0b3RhbCk7aWYgKHRvdGFsID09IDApeyQodGhpcykuY3NzKCdkaXNwbGF5Jywnbm9uZScpO30gZWxzZSB7fX0pOyQoJy5zaG9wcy1saXN0LWNvbnRhaW5lciAubm8tc2hvcHMnKS5yZW1vdmUoKTtpZighJCgnLnNob3AtY2F0ZWdvcnktY29sbGFwc2U6dmlzaWJsZScpLmxlbmd0aCl7alF1ZXJ5KCcuc2hvcHMtbGlzdC1jb250YWluZXInKS5wcmVwZW5kKCc8ZGl2IGNsYXNzPSJjb2wteHMtMTIgbm8tc2hvcHMiPjxwIGNsYXNzPSJhbGVydCBhbGVydC13YXJuaW5nIj7QnNCw0LPQsNC30LjQvdGLINC90LUg0L3QsNC50LTQtdC90Ys8L3A+PC9kaXY+Jyk7fX0pOw==");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("TXlub3Rlc0xpc3RzID0gZnVuY3Rpb24oKXt2YXIgdGMgPSB0aGlzO3RjLmlucHV0TmFtZSA9IGZhbHNlO3RjLm5ld0xpc3RNb2RhbCA9ICQoJy5uZXctbGlzdC1tb2RhbCcpO3RjLnNob3dGb3JtQnRuU2VsZWN0b3IgPSAnLmFkZC1saXN0LWJ0bic7dGMuc2hvd0VkaXRMaXN0Rm9ybUJ0biA9IGZhbHNlOyB0Yy5saXN0TmFtZVNlbGVjdG9yID0gZmFsc2U7IHRjLm5vdGVzTGlzdElkID0gZmFsc2U7IHRjLmFkZExpc3RJZCA9IGZhbHNlOyB0Yy5wcm9kdWN0SWQgPSBmYWxzZTsgdGMuZm9yY2VDcmVhdGUgPSBmYWxzZTsgdGMubGlzdExpbmtCdG4gPSBmYWxzZTsgdGMubm90ZXNMaXN0ID0gZmFsc2U7dGMuc2hvd0xpc3RMaW5rQnRuQ2xpY2sgPSBmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7ZS5zdG9wUHJvcGFnYXRpb24oKTsgaWYgKCQoJy5wb3BvdmVyLmVkaXQtbGlzdC1tb2RhbCcpLmlzKCc6dmlzaWJsZScpKXt0Yy5oaWRlTW9kYWxMaXN0TGluaygpO30gZWxzZSB7dGMubGlzdExpbmtCdG4gPSAkKHRoaXMpO3RjLnNob3dNb2RhbExpc3RMaW5rKCk7fWUucHJldmVudERlZmF1bHQoKTt9O3RjLnNob3dNb2RhbExpc3RMaW5rID0gZnVuY3Rpb24oKXt2YXIgdGVtcGxhdGVIdG1sID0gJzxkaXYgY2xhc3M9InBvcG92ZXIgbGlzdC1saW5rLW1vZGFsIj4nO3RlbXBsYXRlSHRtbCArPSAnPGRpdiBjbGFzcz0iYXJyb3ciPjwvZGl2Pic7dGVtcGxhdGVIdG1sICs9ICc8aDMgY2xhc3M9InBvcG92ZXItaGVhZGVyIj48L2gzPic7dGVtcGxhdGVIdG1sICs9ICc8ZGl2IGNsYXNzPSJwb3BvdmVyLWNvbnRlbnQiPic7dGVtcGxhdGVIdG1sICs9ICc8L2Rpdj4nO3RlbXBsYXRlSHRtbCArPSAnPC9kaXY+Jzt2YXIgY29udGVudEh0bWwgPSAnJztjb250ZW50SHRtbCArPSAnPGRpdiBjbGFzcz0icm93Ij4nO2NvbnRlbnRIdG1sICs9ICc8ZGl2IGNsYXNzPSJjb2wteHMtMTIiPic7Y29udGVudEh0bWwgKz0gJzxpbnB1dCByZWFkb25seSB0eXBlPSJ0ZXh0IiBjbGFzcz0iZm9ybS1jb250cm9sIGlucHV0LXNtIGxpc3QtbGluayIgdmFsdWU9IicgKyAkKHRjLmxpc3RMaW5rQnRuKS5hdHRyKCdkYXRhLWxpbmsnKSsgJyIgLz4nO2NvbnRlbnRIdG1sICs9ICc8L2Rpdj4nO2NvbnRlbnRIdG1sICs9ICc8L2Rpdj4nO3ZhciBvcHRpb25zID0ge2NvbnRlbnQ6IGNvbnRlbnRIdG1sLGh0bWw6IHRydWUsdGVtcGxhdGU6IHRlbXBsYXRlSHRtbCxwbGFjZW1lbnQ6ICdib3R0b20nfTskKHRjLmxpc3RMaW5rQnRuKS5wb3BvdmVyKG9wdGlvbnMpOyQodGMubGlzdExpbmtCdG4pLnBvcG92ZXIoJ3Nob3cnKTt0Yy5pbnB1dE5hbWUgPSAkKCcubGlzdC1saW5rLW1vZGFsIC5saXN0LWxpbmsnKTt0Yy5pbnB1dE5hbWUuc2VsZWN0KCk7IH07dGMuc2hvd01vZGFsQ3JlYXRlTmV3TGlzdEZvcm0gPSBmdW5jdGlvbigpe3ZhciB0ZW1wbGF0ZUh0bWwgPSAnPGRpdiBjbGFzcz0icG9wb3ZlciBuZXctbGlzdC1tb2RhbCI+Jzt0ZW1wbGF0ZUh0bWwgKz0gJzxkaXYgY2xhc3M9ImFycm93Ij48L2Rpdj4nO3RlbXBsYXRlSHRtbCArPSAnPGgzIGNsYXNzPSJwb3BvdmVyLWhlYWRlciI+PC9oMz4nO3RlbXBsYXRlSHRtbCArPSAnPGRpdiBjbGFzcz0icG9wb3Zlci1jb250ZW50Ij4nO3RlbXBsYXRlSHRtbCArPSAnPC9kaXY+Jzt0ZW1wbGF0ZUh0bWwgKz0gJzwvZGl2Pic7dmFyIGNvbnRlbnRIdG1sID0gJzxmb3JtIGNsYXNzPSJhZGQtbGlzdC1mb3JtIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iIyI+Jztjb250ZW50SHRtbCArPSAnPGRpdiBjbGFzcz0icm93Ij4nO2NvbnRlbnRIdG1sICs9ICc8ZGl2IGNsYXNzPSJjb2wteHMtMTIiPic7Y29udGVudEh0bWwgKz0gJzx0ZXh0YXJlYSBtYXhsZW5ndGg9IjI1NSIgbmFtZT0ibmFtZSIgcGxhY2Vob2xkZXI9ItCd0LDQt9Cy0LDQvdC40LUg0YHQv9C40YHQutCwIiBjbGFzcz0iZm9ybS1jb250cm9sIGlucHV0LXNtIGxpc3QtbmFtZSI+PC90ZXh0YXJlYT4nO2NvbnRlbnRIdG1sICs9ICc8c3BhbiBjbGFzcz0iaGVscC1ibG9jayI+0L3QsNC\/0YDQuNC80LXRgCAi0J\/QvtC00LDRgNC60LgiPC9zcGFuPic7Y29udGVudEh0bWwgKz0gJzwvZGl2Pic7Y29udGVudEh0bWwgKz0gJzwvZGl2Pic7Y29udGVudEh0bWwgKz0gJzxkaXYgY2xhc3M9InJvdyI+Jztjb250ZW50SHRtbCArPSAnPGRpdiBjbGFzcz0iY29sLXhzLTEyIj4nO2NvbnRlbnRIdG1sICs9ICc8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSBidG4tc20iIGRhdGEtbG9hZGluZy10ZXh0PSLQlNC+0LHQsNCy0LjRgtGMLi4uIj7QlNC+0LHQsNCy0LjRgtGMPC9idXR0b24+Jztjb250ZW50SHRtbCArPSAnPC9kaXY+Jztjb250ZW50SHRtbCArPSAnPC9kaXY+Jztjb250ZW50SHRtbCArPSAnPC9mb3JtPic7dmFyIG9wdGlvbnMgPSB7Y29udGVudDogY29udGVudEh0bWwsaHRtbDogdHJ1ZSx0ZW1wbGF0ZTogdGVtcGxhdGVIdG1sLHBsYWNlbWVudDogJ2JvdHRvbSd9OyQodGMuc2hvd0Zvcm1CdG5TZWxlY3RvcikucG9wb3ZlcihvcHRpb25zKTskKHRjLnNob3dGb3JtQnRuU2VsZWN0b3IpLnBvcG92ZXIoJ3Nob3cnKTt0Yy5pbnB1dE5hbWUgPSAkKCcuYWRkLWxpc3QtZm9ybSAubGlzdC1uYW1lJyk7aWYgKCFkY29yZWNuZy5pc1RvdWNoRGV2aWNlKXt0Yy5pbnB1dE5hbWUuZm9jdXMoKTsgfX07dGMuc2hvd01vZGFsRWRpdExpc3RGb3JtID0gZnVuY3Rpb24oKXt2YXIgZWRpdGVkTGlzdE5hbWUgPSAkKHRjLmxpc3ROYW1lU2VsZWN0b3IpLnRleHQoKTt2YXIgdGVtcGxhdGVIdG1sID0gJzxkaXYgY2xhc3M9InBvcG92ZXIgZWRpdC1saXN0LW1vZGFsIj4nO3RlbXBsYXRlSHRtbCArPSAnPGRpdiBjbGFzcz0iYXJyb3ciPjwvZGl2Pic7dGVtcGxhdGVIdG1sICs9ICc8aDMgY2xhc3M9InBvcG92ZXItaGVhZGVyIj48L2gzPic7dGVtcGxhdGVIdG1sICs9ICc8ZGl2IGNsYXNzPSJwb3BvdmVyLWNvbnRlbnQiPic7dGVtcGxhdGVIdG1sICs9ICc8L2Rpdj4nO3RlbXBsYXRlSHRtbCArPSAnPC9kaXY+Jzt2YXIgY29udGVudEh0bWwgPSAnPGZvcm0gY2xhc3M9ImVkaXQtbGlzdC1mb3JtIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iIyI+Jztjb250ZW50SHRtbCArPSAnPGRpdiBjbGFzcz0icm93Ij4nO2NvbnRlbnRIdG1sICs9ICc8ZGl2IGNsYXNzPSJjb2wteHMtMTIiPic7Y29udGVudEh0bWwgKz0gJzxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAiPjx0ZXh0YXJlYSBtYXhsZW5ndGg9IjI1NSIgbmFtZT0ibmFtZSIgcGxhY2Vob2xkZXI9ItCd0LDQt9Cy0LDQvdC40LUg0YHQv9C40YHQutCwIiBjbGFzcz0iZm9ybS1jb250cm9sIGlucHV0LXNtIGxpc3QtbmFtZSI+JyArIGVkaXRlZExpc3ROYW1lICsgJzwvdGV4dGFyZWE+PC9kaXY+Jztjb250ZW50SHRtbCArPSAnPC9kaXY+Jztjb250ZW50SHRtbCArPSAnPC9kaXY+Jztjb250ZW50SHRtbCArPSAnPGRpdiBjbGFzcz0icm93Ij4nO2NvbnRlbnRIdG1sICs9ICc8ZGl2IGNsYXNzPSJjb2wteHMtNCI+Jztjb250ZW50SHRtbCArPSAnPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4gYnRuLXByaW1hcnkgYnRuLXNtIiBkYXRhLWxvYWRpbmctdGV4dD0i0KHQvtGF0YDQsNC90LjRgtGMLi4uIj7QodC+0YXRgNCw0L3QuNGC0Yw8L2J1dHRvbj4nO2NvbnRlbnRIdG1sICs9ICc8L2Rpdj4nO2NvbnRlbnRIdG1sICs9ICc8L2Rpdj4nO2NvbnRlbnRIdG1sICs9ICc8L2Zvcm0+Jzt2YXIgb3B0aW9ucyA9IHtjb250ZW50OiBjb250ZW50SHRtbCxodG1sOiB0cnVlLHRlbXBsYXRlOiB0ZW1wbGF0ZUh0bWwscGxhY2VtZW50OiAnYm90dG9tJ307dGMuc2hvd0VkaXRMaXN0Rm9ybUJ0bi5wb3BvdmVyKG9wdGlvbnMpO3RjLnNob3dFZGl0TGlzdEZvcm1CdG4ucG9wb3Zlcignc2hvdycpO3RjLmlucHV0TmFtZSA9ICQoJy5lZGl0LWxpc3QtZm9ybSAubGlzdC1uYW1lJyk7aWYgKCFkY29yZWNuZy5pc1RvdWNoRGV2aWNlKXt0Yy5pbnB1dE5hbWUuZm9jdXMoKTsgfX07dGMuaGlkZU1vZGFsQ3JlYXRlTmV3TGlzdEZvcm0gPSBmdW5jdGlvbigpeyQodGMuc2hvd0Zvcm1CdG5TZWxlY3RvcikucG9wb3ZlcignZGVzdHJveScpO307dGMuaGlkZU1vZGFsRWRpdExpc3RGb3JtID0gZnVuY3Rpb24oKXskKHRjLnNob3dFZGl0TGlzdEZvcm1CdG4pLnBvcG92ZXIoJ2Rlc3Ryb3knKTt9O3RjLmhpZGVNb2RhbExpc3RMaW5rID0gZnVuY3Rpb24oKXskKHRjLmxpc3RMaW5rQnRuKS5wb3BvdmVyKCdkZXN0cm95Jyk7fTt0Yy5uZXdMaXN0QnRuQ2xpY2sgPSBmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpOyBpZiAoZGNvcmVjbmcudXNlci5pZCl7aWYgKCQoJy5wb3BvdmVyLm5ldy1saXN0LW1vZGFsJykuaXMoJzp2aXNpYmxlJykpe3RjLmhpZGVNb2RhbENyZWF0ZU5ld0xpc3RGb3JtKCk7IH0gZWxzZSB7dGMuc2hvd01vZGFsQ3JlYXRlTmV3TGlzdEZvcm0oKTt9fX07dGMuZWRpdExpc3ROYW1lRnJvbVN1Ym1pdCA9IGZ1bmN0aW9uKGUpe2lmIChkY29yZWNuZy51c2VyLmlkKXt2YXIgdCA9IHRoaXM7JCgnLm1lc3NhZ2VzJywgdCkucmVtb3ZlKCk7dGMuaW5wdXROYW1lID0gJCgnLmVkaXQtbGlzdC1mb3JtIC5saXN0LW5hbWUnKTt2YXIgZGF0YSA9IHtuYW1lOiB0Yy5pbnB1dE5hbWUudmFsKCksZm9yY2VfY3JlYXRlOiAodGMuZm9yY2VDcmVhdGUgPT0gdHJ1ZSk\/MTowIH07QXBpLnB1dCgnL2FwaXYzL3VzZXJzLycgKyBkY29yZWNuZy51c2VyLmlkICsgJy9ub3Rlc2xpc3RzLycgKyB0Yy5ub3Rlc0xpc3RJZCArICcvJywgZGF0YSwgZnVuY3Rpb24gKHJlc3BvbnNlKXskKCcuaGFzLWVycm9yJyx0KS5yZW1vdmVDbGFzcygnaGFzLWVycm9yJyk7JCgnLmZvcm0tZWxlbWVudC1lcnJvcnMnLHQpLnJlbW92ZSgpOyQoJ1t0eXBlPSJzdWJtaXQiXScsdCkuYnV0dG9uKCdyZXNldCcpO2lmIChyZXNwb25zZS5lcnJvcil7aWYgKHJlc3BvbnNlLmVycm9yID09ICdlbXB0eV9uYW1lJyl7dGMuaW5wdXROYW1lLnBhcmVudHMoJy5mb3JtLWdyb3VwOmZpcnN0JykuYWRkQ2xhc3MoJ2hhcy1lcnJvcicpO3RjLmlucHV0TmFtZS5hZnRlcignPHVsIGNsYXNzPSJmb3JtLWVsZW1lbnQtZXJyb3JzIj48bGk+JyArIHJlc3BvbnNlLmVycm9yX2Rlc2NyaXB0aW9uICsgJzwvbGk+PC91bD4nKTt0Yy5pbnB1dE5hbWUuZm9jdXMoKTt9IGVsc2UgaWYgKHJlc3BvbnNlLmVycm9yID09ICdteW5vdGVzX2xpc3RfZHVwbGljYXRlX2RlbGV0ZWQnKXt0Yy5hZGRMaXN0SWQgPSByZXNwb25zZS5saXN0LmlkO3ZhciBtZXNzYWdlSHRtbCA9ICc8ZGl2IGNsYXNzPSJyb3ciPjxkaXYgY2xhc3M9ImNvbC14cy0xMiI+PGRpdiBjbGFzcz0ibWVzc2FnZXMiPic7bWVzc2FnZUh0bWwgKz0gJzxwIGNsYXNzPSJhbGVydC13YXJuaW5nIj4nO21lc3NhZ2VIdG1sICs9IHJlc3BvbnNlLmVycm9yX2Rlc2NyaXB0aW9uO21lc3NhZ2VIdG1sICs9ICcgPGEgY2xhc3M9ImJ0biBidG4taW5mbyBidG4teHMgbm90ZXMtbGlzdHMtcmVjb3ZlcnktYnRuIj7QktC+0YHRgdGC0LDQvdC+0LLQuNGC0Yw8L2E+JzttZXNzYWdlSHRtbCArPSAnIDxhIGNsYXNzPSJidG4gYnRuLXByaW1hcnkgYnRuLXhzIG5vdGVzLWxpc3RzLXJlcGxhY2UtYnRuIj7Ql9Cw0LzQtdC90LjRgtGMPC9hPic7bWVzc2FnZUh0bWwgKz0gJzwvcD4nO21lc3NhZ2VIdG1sICs9ICc8L2Rpdj48L2Rpdj48L2Rpdj4nOyQodCkucHJlcGVuZChtZXNzYWdlSHRtbCk7fSBlbHNlIHskKHQpLnByZXBlbmQoICc8ZGl2IGNsYXNzPSJyb3ciPjxkaXYgY2xhc3M9ImNvbC14cy0xMiI+PGRpdiBjbGFzcz0ibWVzc2FnZXMiPjxwIGNsYXNzPSJhbGVydC1kYW5nZXIiPicgKyByZXNwb25zZS5lcnJvcl9kZXNjcmlwdGlvbiArICc8L3A+PC9kaXY+PC9kaXY+PC9kaXY+Jyk7fX0gZWxzZSB7JCh0KS5wcmVwZW5kKCAnPGRpdiBjbGFzcz0icm93Ij48ZGl2IGNsYXNzPSJjb2wteHMtMTIiPjxkaXYgY2xhc3M9Im1lc3NhZ2VzIj48cCBjbGFzcz0iYWxlcnQtc3VjY2VzcyI+JyArIHJlc3BvbnNlLm1lc3NhZ2UgKyAnPC9wPjwvZGl2PjwvZGl2PjwvZGl2PicpOyQodGMubGlzdE5hbWVTZWxlY3RvcikudGV4dChyZXNwb25zZS5saXN0Lm5hbWUpO319KTt0Yy5mb3JjZUNyZWF0ZSA9IGZhbHNlOyB9ZS5wcmV2ZW50RGVmYXVsdCgpO307dGMubmV3TGlzdEZyb21TdWJtaXQgPSBmdW5jdGlvbihlKXtpZiAoZGNvcmVjbmcudXNlci5pZCl7dmFyIHQgPSB0aGlzOyQoJy5tZXNzYWdlcycsIHQpLnJlbW92ZSgpO3RjLmlucHV0TmFtZSA9ICQoJy5hZGQtbGlzdC1mb3JtIC5saXN0LW5hbWUnKTt2YXIgZGF0YSA9IHtuYW1lOiB0Yy5pbnB1dE5hbWUudmFsKCksZm9yY2VfY3JlYXRlOiAodGMuZm9yY2VDcmVhdGUgPT0gdHJ1ZSk\/MTowIH07QXBpLnBvc3QoJy9hcGl2My91c2Vycy8nICsgZGNvcmVjbmcudXNlci5pZCArICcvbm90ZXNsaXN0cy8nLCBkYXRhLCBmdW5jdGlvbiAocmVzcG9uc2UpeyQoJy5oYXMtZXJyb3InLHQpLnJlbW92ZUNsYXNzKCdoYXMtZXJyb3InKTskKCcuZm9ybS1lbGVtZW50LWVycm9ycycsdCkucmVtb3ZlKCk7JCgnW3R5cGU9InN1Ym1pdCJdJyx0KS5idXR0b24oJ3Jlc2V0Jyk7aWYgKHJlc3BvbnNlLmVycm9yKXtpZiAocmVzcG9uc2UuZXJyb3IgPT0gJ2VtcHR5X25hbWUnKXt0Yy5pbnB1dE5hbWUucGFyZW50cygnLmZvcm0tZ3JvdXA6Zmlyc3QnKS5hZGRDbGFzcygnaGFzLWVycm9yJyk7dGMuaW5wdXROYW1lLmFmdGVyKCc8dWwgY2xhc3M9ImZvcm0tZWxlbWVudC1lcnJvcnMiPjxsaT4nICsgcmVzcG9uc2UuZXJyb3JfZGVzY3JpcHRpb24gKyAnPC9saT48L3VsPicpO3RjLmlucHV0TmFtZS5mb2N1cygpO30gZWxzZSBpZiAocmVzcG9uc2UuZXJyb3IgPT0gJ215bm90ZXNfbGlzdF9kdXBsaWNhdGVfZGVsZXRlZCcpe3RjLmFkZExpc3RJZCA9IHJlc3BvbnNlLmxpc3QuaWQ7dmFyIG1lc3NhZ2VIdG1sID0gJzxkaXYgY2xhc3M9InJvdyI+PGRpdiBjbGFzcz0iY29sLXhzLTEyIj48ZGl2IGNsYXNzPSJtZXNzYWdlcyI+JzttZXNzYWdlSHRtbCArPSAnPHAgY2xhc3M9ImFsZXJ0LXdhcm5pbmciPic7bWVzc2FnZUh0bWwgKz0gcmVzcG9uc2UuZXJyb3JfZGVzY3JpcHRpb247bWVzc2FnZUh0bWwgKz0gJyA8YSBjbGFzcz0iYnRuIGJ0bi1pbmZvIGJ0bi14cyBub3Rlcy1saXN0cy1yZWNvdmVyeS1idG4iPtCS0L7RgdGB0YLQsNC90L7QstC40YLRjDwvYT4nO21lc3NhZ2VIdG1sICs9ICcgPGEgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSBidG4teHMgbm90ZXMtbGlzdHMtcmVwbGFjZS1idG4iPtCX0LDQvNC10L3QuNGC0Yw8L2E+JzttZXNzYWdlSHRtbCArPSAnPC9wPic7bWVzc2FnZUh0bWwgKz0gJzwvZGl2PjwvZGl2PjwvZGl2Pic7JCh0KS5wcmVwZW5kKG1lc3NhZ2VIdG1sKTt9IGVsc2UgeyQodCkucHJlcGVuZCggJzxkaXYgY2xhc3M9InJvdyI+PGRpdiBjbGFzcz0iY29sLXhzLTEyIj48ZGl2IGNsYXNzPSJtZXNzYWdlcyI+PHAgY2xhc3M9ImFsZXJ0LWRhbmdlciI+JyArIHJlc3BvbnNlLmVycm9yX2Rlc2NyaXB0aW9uICsgJzwvcD48L2Rpdj48L2Rpdj48L2Rpdj4nKTt9fSBlbHNlIHt0Yy5pbnB1dE5hbWUudmFsKCcnKTt0Yy5oaWRlTW9kYWxDcmVhdGVOZXdMaXN0Rm9ybSgpO3RjLmFmdGVyTXlub3Rlc2xpc3RDcmVhdGUocmVzcG9uc2UubGlzdCk7fX0pO3RjLmZvcmNlQ3JlYXRlID0gZmFsc2U7IH1lLnByZXZlbnREZWZhdWx0KCk7fTt0Yy5zaG93TGlzdHNDaG9vc2VyID0gZnVuY3Rpb24ocG9zKXt0Yy5ub3Rlc0xpc3QgPSAkKCcubm90ZXMtbGlzdHMtY2hvb3NlcicpO3RjLmFmdGVyTGlzdHNDaG9vc2VyTG9hZChwb3MpO307dGMuaGlkZUxpc3RzQ2hvb3NlciA9IGZ1bmN0aW9uKCl7aWYgKHRjLm5vdGVzTGlzdCl7dGMubm90ZXNMaXN0LmNzcygnZGlzcGxheScsJ25vbmUnKTsgfX07dGMuYWZ0ZXJMaXN0c0Nob29zZXJMb2FkID0gZnVuY3Rpb24ocG9zKXt2YXIgdCA9IHBvcy50b3A7dmFyIGwgPSBwb3MubGVmdDt2YXIgdyA9IHRjLm5vdGVzTGlzdC53aWR0aCgpO3ZhciB3aW5kb3dXaWR0aCA9ICQod2luZG93KS53aWR0aCgpO2lmICgobCt3KzUwKT4gd2luZG93V2lkdGgpe2wgPSB3aW5kb3dXaWR0aCAtICh3KzUwKTt9dGMubm90ZXNMaXN0LmNzcyh7J2Rpc3BsYXknOiAnYmxvY2snLCd0b3AnOiB0LCdsZWZ0JzogbH0pO2lmICghJCgnW3R5cGU9InJhZGlvIl06Y2hlY2tlZCcsdGMubm90ZXNMaXN0KS5sZW5ndGgpeyQoJ1t0eXBlPSJyYWRpbyJdOmZpcnN0Jyx0Yy5ub3Rlc0xpc3QpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7fX07dGMuYm9keUNsaWNrID0gZnVuY3Rpb24oKXt0Yy5oaWRlTGlzdHNDaG9vc2VyKCk7IHRjLmhpZGVNb2RhbENyZWF0ZU5ld0xpc3RGb3JtKCk7IHRjLmhpZGVNb2RhbEVkaXRMaXN0Rm9ybSgpOyB0Yy5oaWRlTW9kYWxMaXN0TGluaygpOyB9O3RjLm5vdGVzTGlzdHNDbGljayA9IGZ1bmN0aW9uKGUpe2Uuc3RvcFByb3BhZ2F0aW9uKCk7IH07dGMubm90ZXNMaXN0c0Nsb3NlQnRuQ2xpY2sgPSBmdW5jdGlvbihlKXt0Yy5oaWRlTGlzdHNDaG9vc2VyKCk7fTt0Yy5hZGRQcm9kdWN0VG9NeW5vdGVzID0gZnVuY3Rpb24oYnRuKXt0Yy5ub3Rlc0J0biA9ICQoYnRuKTt0Yy5wcm9kdWN0SWQgPSBwYXJzZUludCh0Yy5ub3Rlc0J0bi5hdHRyKCdyZWwnKSk7aWYgKHRjLm5vdGVzQnRuLmF0dHIoJ2RhdGEtYmFza2V0Jyk9PSAnMScpeyB0Yy5kZWxldGVQcm9kdWN0RnJvbU15bm90ZXMoKTt9IGVsc2UgeyBpZiAoZGNvcmVjbmcudXNlci5hc2tMaXN0QmVmb3JlQWRkID09IDEpeyBteW5vdGVzTGlzdHMuc2hvd0xpc3RzQ2hvb3Nlcih7IHRvcDogJChidG4pLm9mZnNldCgpLnRvcCArICQoYnRuKS5oZWlnaHQoKSwgbGVmdDogJChidG4pLm9mZnNldCgpLmxlZnQgKyAkKGJ0bikud2lkdGgoKSx9KTt9IGVsc2UgeyB0Yy5hZGRQcm9kdWN0VG9NeW5vdGVzTGlzdCgpO319fTt0Yy5ub3Rlc0xpc3RzQWRkQnRuQ2xpY2sgPSBmdW5jdGlvbihlKXtpZiAoISQoJ1tuYW1lPSJub3Rlc2xpc3QiXTpjaGVja2VkJykubGVuZ3RoKXskKHRjLnNob3dGb3JtQnRuU2VsZWN0b3IpLmNsaWNrKCk7ICQoJy5hZGQtbGlzdC1mb3JtJykucHJlcGVuZCggJzxkaXYgY2xhc3M9Im1lc3NhZ2VzIj48cCBjbGFzcz0iYWxlcnQtZGFuZ2VyIj7QodC+0LfQtNCw0LnRgtC1INGB0L\/QuNGB0L7QuiDQtNC70Y8g0LTQvtCx0LDQstC70LXQvdC40Y8g0LjQt9Cx0YDQsNC90L3QvtCz0L48L3A+PC9kaXY+Jyk7fSBlbHNlIHt0Yy5hZGRMaXN0SWQgPSAkKCdbbmFtZT0ibm90ZXNsaXN0Il06Y2hlY2tlZCcpLnZhbCgpOyB0Yy5hZGRQcm9kdWN0VG9NeW5vdGVzTGlzdCgpOyB9fTt0Yy5ub3Rlc0xpc3RzUmVwbGFjZUJ0bkNsaWNrID0gZnVuY3Rpb24oZSl7dGMucmVwbGFjZU15bm90ZXNMaXN0KCk7IGUucHJldmVudERlZmF1bHQoKTt9O3RjLnJlcGxhY2VNeW5vdGVzTGlzdCA9IGZ1bmN0aW9uKCl7dGMuZm9yY2VDcmVhdGUgPSB0cnVlOyBpZiAoJCgnLmFkZC1saXN0LWZvcm0nKS5pcygnOnZpc2libGUnKSl7JCgnLmFkZC1saXN0LWZvcm0nKS5zdWJtaXQoKTt9IGVsc2UgeyQoJy5lZGl0LWxpc3QtZm9ybScpLnN1Ym1pdCgpO319O3RjLm5vdGVzTGlzdHNSZWNvdmVyeUJ0bkNsaWNrID0gZnVuY3Rpb24oZSl7dGMucmVjb3ZlcnlNeW5vdGVzTGlzdCgpOyBlLnByZXZlbnREZWZhdWx0KCk7fTt0Yy5yZWNvdmVyeU15bm90ZXNMaXN0ID0gZnVuY3Rpb24oKXt2YXIgZGF0YSA9IHtzdGF0dXM6IDEsfTt2YXIgdCA9ICQoJy5hZGQtbGlzdC1mb3JtJyk7JCgnLm1lc3NhZ2VzJywgdCkucmVtb3ZlKCk7QXBpLnB1dCgnL2FwaXYzL3VzZXJzLycgKyBkY29yZWNuZy51c2VyLmlkICsgJy9ub3Rlc2xpc3RzLycgKyB0Yy5hZGRMaXN0SWQgKyAnLycsIGRhdGEsIGZ1bmN0aW9uIChyZXNwb25zZSl7JCgnLmhhcy1lcnJvcicsdCkucmVtb3ZlQ2xhc3MoJ2hhcy1lcnJvcicpOyQoJy5mb3JtLWVsZW1lbnQtZXJyb3JzJyx0KS5yZW1vdmUoKTskKCdbdHlwZT0ic3VibWl0Il0nLHQpLmJ1dHRvbigncmVzZXQnKTtpZiAocmVzcG9uc2UuZXJyb3IpeyQodCkucHJlcGVuZCggJzxkaXYgY2xhc3M9Im1lc3NhZ2VzIj48cCBjbGFzcz0iYWxlcnQtZGFuZ2VyIj4nICsgcmVzcG9uc2UuZXJyb3JfZGVzY3JpcHRpb24gKyAnPC9wPjwvZGl2PicpO30gZWxzZSB7dGMuaW5wdXROYW1lLnZhbCgnJyk7dGMuaGlkZU1vZGFsQ3JlYXRlTmV3TGlzdEZvcm0oKTt0Yy5hZnRlck15bm90ZXNsaXN0Q3JlYXRlKHJlc3BvbnNlLmxpc3QpO319KTt9O3RjLmFmdGVyTXlub3Rlc2xpc3RDcmVhdGUgPSBmdW5jdGlvbihsaXN0KXtpZiAoJCgnQk9EWScpLmhhc0NsYXNzKCdub3Rlcy1wYWdlJykmJiAhJCgnQk9EWScpLmhhc0NsYXNzKCdsaXN0LXBhZ2UnKSl7d2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO30gZWxzZSB7dmFyIG5vdGVzTGlzdHNVbCA9ICQoJy5ub3Rlcy1saXN0cy1jaG9vc2VyIC5ub3Rlcy1saXN0cycpO3ZhciBub3Rlc0xpc3ROZXdMaSA9ICcnO25vdGVzTGlzdE5ld0xpICs9ICc8bGk+Jztub3Rlc0xpc3ROZXdMaSArPSAnPGRpdiBjbGFzcz0icmFkaW8iPjxsYWJlbD48aW5wdXQgbmFtZT0ibm90ZXNsaXN0IiB2YWx1ZT0iJyArIGxpc3QuaWQgKyAnIiB0eXBlPSJyYWRpbyIgLz4gJyArIGxpc3QubmFtZSArICc8L2xhYmVsPjwvZGl2Pic7bm90ZXNMaXN0TmV3TGkgKz0gJzwvbGk+Jztub3Rlc0xpc3RzVWwucHJlcGVuZChub3Rlc0xpc3ROZXdMaSk7JCgnW25hbWU9Im5vdGVzbGlzdCJdJykucHJvcCggImNoZWNrZWQiLCBmYWxzZSk7JCgnW25hbWU9Im5vdGVzbGlzdCJdW3ZhbHVlPSInICsgbGlzdC5pZCArICciXScpLnByb3AoICJjaGVja2VkIiwgdHJ1ZSk7d2luZG93LnVwZGF0ZURhdGEoKTt9fTt0Yy5kZWxldGVQcm9kdWN0RnJvbU15bm90ZXMgPSBmdW5jdGlvbigpe3ZhciBkYXRhID0ge2NpdHlfaWQ6IGRjb3JlY25nLmNpdHlJZCxwcm9kdWN0X2lkOiB0Yy5wcm9kdWN0SWR9O0FwaS5kZWxldGUoJy9hcGl2My91c2Vycy8nICsgZGNvcmVjbmcudXNlci5pZCArICcvbm90ZXMvJywgZGF0YSwgZnVuY3Rpb24gKHJlc3BvbnNlKXtpZiAocmVzcG9uc2UuZXJyb3Ipe30gZWxzZSB7dGMubm90ZXNCdG4uYXR0cignZGF0YS1iYXNrZXQnLCAnMCcpO3RjLm5vdGVzQnRuLmF0dHIoJ2RhdGEtb3JpZ2luYWwtdGl0bGUnLCAn0JTQvtCx0LDQstC40YLRjCDQsiDQuNC30LHRgNCw0L3QvdC+0LUnKTt0Yy5ub3Rlc0J0bi5yZW1vdmVDbGFzcygnYWN0aXZlJyk7JCgnLnRvb2x0aXAgLnRvb2x0aXAtaW5uZXInKS50ZXh0KCfQlNC+0LHQsNCy0LjRgtGMINCyINC40LfQsdGA0LDQvdC90L7QtScpO2lmICgkKCdCT0RZJykuaGFzQ2xhc3MoJ25vdGVzLXBhZ2UnKSYmICEkKCdCT0RZJykuaGFzQ2xhc3MoJ2xpc3QtcGFnZScpKXskKCcuZGlzY291bnRzIC5pdGVtW2RhdGEtaWQ9IicgKyB0Yy5wcm9kdWN0SWQgKyAnIl0nKS5oaWRlKDMwMCwgZnVuY3Rpb24gKCl7JCh0aGlzKS5yZW1vdmUoKTskKHdpbmRvdykucmVzaXplKCk7IH0pO30kKCcubXlub3Rlcy1jb3VudCcpLmh0bWwocmVzcG9uc2UudG90YWxDb3VudCk7dGMubm90ZXNCdG4ucG9wb3ZlcignZGVzdHJveScpO3ZhciBvcHRpb25zID0ge2NvbnRlbnQ6ICfQo9C00LDQu9C10L3QviDQuNC3IDxhIGhyZWY9Ii9teW5vdGVzLyI+0JjQt9Cx0YDQsNC90L3QvtC1PC9hPicsaHRtbDogdHJ1ZSx0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9InBvcG92ZXIgcG9wb3Zlci1ub3RlcyIgcm9sZT0idG9vbHRpcCI+PGRpdiBjbGFzcz0iYXJyb3ciPjwvZGl2PjxkaXYgY2xhc3M9InBvcG92ZXItY29udGVudCI+PC9kaXY+PC9kaXY+JyxwbGFjZW1lbnQ6ICdib3R0b20nfTt0Yy5ub3Rlc0J0bi5wb3BvdmVyKG9wdGlvbnMpO3RjLm5vdGVzQnRuLnBvcG92ZXIoJ3Nob3cnKTtzZXRUaW1lb3V0KGZ1bmN0aW9uICgpe3RjLm5vdGVzQnRuLnBvcG92ZXIoJ2Rlc3Ryb3knKTt9LCAyMDAwKTt9fSk7fTt0Yy5hZGRQcm9kdWN0VG9NeW5vdGVzTGlzdCA9IGZ1bmN0aW9uKCl7dmFyIGRhdGEgPSB7Y2l0eV9pZDogZGNvcmVjbmcuY2l0eUlkLHByb2R1Y3RfaWQ6IHRjLnByb2R1Y3RJZH07aWYgKHRjLmFkZExpc3RJZCAhPSBmYWxzZSl7ZGF0YS5saXN0X2lkID0gdGMuYWRkTGlzdElkO31pZiAoZGNvcmVjbmcudXNlci5hc2tMaXN0QmVmb3JlQWRkID09IDEpe3ZhciBhc2tMaXN0Q2hlY2tib3ggPSAkKCcubm90ZXMtbGlzdHMtY2hvb3NlciBbbmFtZT0iYXNrX2xpc3RfYmVmb3JlX2FkZCJdJyk7aWYgKGFza0xpc3RDaGVja2JveC5sZW5ndGggJiYgYXNrTGlzdENoZWNrYm94LmlzKCc6Y2hlY2tlZCcpKXtkYXRhLmFza19saXN0X2JlZm9yZV9hZGQgPSAwO2Rjb3JlY25nLnVzZXIuYXNrTGlzdEJlZm9yZUFkZCA9IDA7fX1BcGkucG9zdCgnL2FwaXYzL3VzZXJzLycgKyBkY29yZWNuZy51c2VyLmlkICsgJy9ub3Rlcy8nLCBkYXRhLCBmdW5jdGlvbiAocmVzcG9uc2Upe2lmIChyZXNwb25zZS5lcnJvcil7dmFyIG9wdGlvbnMgPSB7Y29udGVudDogJzxwIHN0eWxlPSJjb2xvcjogcmVkIj7QntGI0LjQsdC60LAg0LTQvtCx0LDQstC70LXQvdC40Y8g0LIg0LjQt9Cx0YDQsNC90L3QvtC1PGJyLz4nICsgcmVzcG9uc2UuZXJyb3JfZGVzY3JpcHRpb24gKyAnPC9wPicsaHRtbDogdHJ1ZSx0ZW1wbGF0ZTogJzxkaXYgY2xhc3M9InBvcG92ZXIgcG9wb3Zlci1ub3RlcyIgcm9sZT0idG9vbHRpcCI+PGRpdiBjbGFzcz0iYXJyb3ciPjwvZGl2PjxkaXYgY2xhc3M9InBvcG92ZXItY29udGVudCI+PC9kaXY+PC9kaXY+JyxwbGFjZW1lbnQ6ICdib3R0b20nfTt0Yy5ub3Rlc0J0bi5wb3BvdmVyKG9wdGlvbnMpO3RjLm5vdGVzQnRuLnBvcG92ZXIoJ3Nob3cnKTtzZXRUaW1lb3V0KGZ1bmN0aW9uICgpe3RjLm5vdGVzQnRuLnBvcG92ZXIoJ2Rlc3Ryb3knKTt9LCA1MDAwKTt9IGVsc2Uge3RjLm5vdGVzQnRuLmF0dHIoJ2RhdGEtYmFza2V0JywgJzEnKTt0Yy5ub3Rlc0J0bi5hdHRyKCdkYXRhLW9yaWdpbmFsLXRpdGxlJywgJ9Cj0LTQsNC70LjRgtGMJyk7dGMubm90ZXNCdG4uYWRkQ2xhc3MoJ2FjdGl2ZScpOyQoJy50b29sdGlwIC50b29sdGlwLWlubmVyJykudGV4dCgn0KPQtNCw0LvQuNGC0YwnKTt0Yy5ub3Rlc0J0bi5wb3BvdmVyKCdkZXN0cm95Jyk7dmFyIG9wdGlvbnMgPSB7Y29udGVudDogJ9CU0L7QsdCw0LLQu9C10L3QviDQsiA8YSBocmVmPSIvbXlub3Rlcy8iPtCY0LfQsdGA0LDQvdC90L7QtTwvYT4nLGh0bWw6IHRydWUsdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPSJwb3BvdmVyIHBvcG92ZXItbm90ZXMiIHJvbGU9InRvb2x0aXAiPjxkaXYgY2xhc3M9ImFycm93Ij48L2Rpdj48ZGl2IGNsYXNzPSJwb3BvdmVyLWNvbnRlbnQiPjwvZGl2PjwvZGl2PicscGxhY2VtZW50OiAnYm90dG9tJ307dGMubm90ZXNCdG4ucG9wb3ZlcihvcHRpb25zKTt0Yy5ub3Rlc0J0bi5wb3BvdmVyKCdzaG93Jyk7c2V0VGltZW91dChmdW5jdGlvbiAoKXt0Yy5ub3Rlc0J0bi5wb3BvdmVyKCdkZXN0cm95Jyk7fSwgMjAwMCk7JCgnLm15bm90ZXMtY291bnQnKS5odG1sKHJlc3BvbnNlLnRvdGFsQ291bnQpO310Yy5hZGRMaXN0SWQgPSBmYWxzZTt0Yy5wcm9kdWN0SWQgPSBmYWxzZTtpZiAoZGF0YS5hc2tfbGlzdF9iZWZvcmVfYWRkID09IDApeyQoJy5ub3Rlcy1saXN0cy1jaG9vc2VyJykucmVtb3ZlKCk7fX0pO3RjLmhpZGVMaXN0c0Nob29zZXIoKTt9O3RjLm5vdGVzTGlzdHNFZGl0TmFtZUJ0bkNsaWNrID0gZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpO2Uuc3RvcFByb3BhZ2F0aW9uKCk7IGlmICgkKCcucG9wb3Zlci5lZGl0LWxpc3QtbW9kYWwnKS5pcygnOnZpc2libGUnKSl7dGMuaGlkZU1vZGFsRWRpdExpc3RGb3JtKCk7fSBlbHNlIHt0Yy5zaG93RWRpdExpc3RGb3JtQnRuID0gJCh0aGlzKTt0Yy5saXN0TmFtZVNlbGVjdG9yID0gJCh0aGlzKS5hdHRyKCdkYXRhLWxpc3QtbmFtZScpO3RjLm5vdGVzTGlzdElkID0gJCh0aGlzKS5hdHRyKCdkYXRhLWxpc3QtaWQnKTt0Yy5zaG93TW9kYWxFZGl0TGlzdEZvcm0oKTt9fTskKCdib2R5Jykub24oJ2NsaWNrJyx0Yy5zaG93Rm9ybUJ0blNlbGVjdG9yLHRjLm5ld0xpc3RCdG5DbGljayk7JCgnYm9keScpLm9uKCdzdWJtaXQnLCcuYWRkLWxpc3QtZm9ybScsdGMubmV3TGlzdEZyb21TdWJtaXQpOyQoJ2JvZHknKS5vbignc3VibWl0JywnLmVkaXQtbGlzdC1mb3JtJyx0Yy5lZGl0TGlzdE5hbWVGcm9tU3VibWl0KTskKCdib2R5Jykub24oJ2NsaWNrJywnLm5vdGVzLWxpc3RzLWNob29zZXInLHRjLm5vdGVzTGlzdHNDbGljayk7JCgnYm9keScpLm9uKCdjbGljaycsJy5ub3Rlcy1saXN0cy1jbG9zZS1idG4nLHRjLm5vdGVzTGlzdHNDbG9zZUJ0bkNsaWNrKTskKCdib2R5Jykub24oJ2NsaWNrJywnLm5vdGVzLWxpc3RzLWFkZC1idG4nLHRjLm5vdGVzTGlzdHNBZGRCdG5DbGljayk7JChkb2N1bWVudCkub24oJ2tleXByZXNzJyxmdW5jdGlvbihlKXtpZihlLndoaWNoID09IDEzKXtpZiAoJCgnLm5vdGVzLWxpc3RzLWFkZC1idG4nKS5pcygnOnZpc2libGUnKSl7JCgnLm5vdGVzLWxpc3RzLWFkZC1idG4nKS5jbGljaygpO319fSk7JCgnYm9keScpLm9uKCdjbGljaycsJy5ub3Rlcy1saXN0cy1yZWNvdmVyeS1idG4nLHRjLm5vdGVzTGlzdHNSZWNvdmVyeUJ0bkNsaWNrKTsgJCgnYm9keScpLm9uKCdjbGljaycsJy5ub3Rlcy1saXN0cy1yZXBsYWNlLWJ0bicsdGMubm90ZXNMaXN0c1JlcGxhY2VCdG5DbGljayk7ICQoJ2JvZHknKS5vbignY2xpY2snLHRjLmJvZHlDbGljayk7JCgnYm9keScpLm9uKCdjbGljaycsJy5uZXctbGlzdC1tb2RhbCwuZWRpdC1saXN0LW1vZGFsLC5saXN0LWxpbmstbW9kYWwnLGZ1bmN0aW9uKGUpe2Uuc3RvcFByb3BhZ2F0aW9uKCk7IH0pOyQoJ2JvZHknKS5vbignY2xpY2snLCcuZWRpdC1saXN0LWJ0bicsdGMubm90ZXNMaXN0c0VkaXROYW1lQnRuQ2xpY2spOyQoJ2JvZHknKS5vbignY2xpY2snLCcubGlzdC1saW5rLWJ0bicsdGMuc2hvd0xpc3RMaW5rQnRuQ2xpY2spO307dmFyIG15bm90ZXNMaXN0cyA9IG5ldyBNeW5vdGVzTGlzdHM7");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("ZnVuY3Rpb24gc2hvcHNTZWxlY3RvckNsYXNzKCl7IHZhciB0YyA9IHRoaXM7IHRjLmNzZWwgPSAnLmNob29zZS1zaG9wcyc7IHRjLnNzbnNlbCA9ICcuc2VsZWN0ZWQtc2hvcHMtZmllbGQnOyB0Yy5zTG9hZGVkID0gZmFsc2U7IHRjLnNGYXZMb2FkZWQgPSBmYWxzZTsgdGMudXJsaGFzaCA9ICdzaG9vc2VzaG9wc29wZW4nOyB0Yy5jaG9vc2VTaG9wQnRuQ2xpY2sgPSBmdW5jdGlvbihlKXsgdmFyIGZvcm0gPSAkKHRoaXMpLnBhcmVudHMoJ2Zvcm0nKTsgdmFyIGlucHV0U2hvcHMgPSAkKCcuc2VsZWN0ZWQtc2hvcHMtZmllbGQnLGZvcm0pOyBpbnB1dFNob3BzLmF0dHIoImRhdGEtcHJldnZhbHVlIiwgaW5wdXRTaG9wcy52YWwoKSk7IHZhciBjaG9vc2VTaG9wcyA9ICQodGMuY3NlbCxmb3JtKTsgaWYgKGNob29zZVNob3BzLmlzKCI6dmlzaWJsZSIpKSB7IHRjLmhpZGVDaG9vc2VTaG9wcygpOyB9IGVsc2UgeyB2YXIgYyA9ICQoJy5jaG9vc2Utc2hvcC13cmFwJyxmb3JtKTsgdmFyIGNpdHlJZCA9ICQodGhpcykuYXR0cignZGF0YS1jaXR5aWQnKTsgaWYgKCFjaXR5SWQpIHsgY2l0eUlkID0gZGNvcmVjbmcuY2l0eUlkOyB9IHRjLmxvYWRTaG9wcyhjLCBjaXR5SWQpOyB0Yy5zaG93Q2hvb3NlU2hvcHMoKTsgfSBlLnByZXZlbnREZWZhdWx0KCk7IH07IHRjLmNhbmNlbEJ0bkNsaWNrID0gZnVuY3Rpb24oZSl7IGlmICgkKHRjLmNzZWwpLmhhc0NsYXNzKCdvcGVuJykpIHsgY29uc29sZS5sb2coJ2NhbmNlbEJ0bkNsaWNrIGhpZGUgbW9kYWwnKTsgdmFyIGZvcm0gPSAkKHRoaXMpLnBhcmVudHMoJ2Zvcm0nKTsgdmFyIHQgPSAkKCcuc2VsZWN0ZWQtc2hvcHMtZmllbGQnLGZvcm0pOyAkKHQpLnZhbCgkKHQpLmF0dHIoImRhdGEtcHJldnZhbHVlIikpOyB0Yy5oaWRlQ2hvb3NlU2hvcHMoKTsgfSB9OyB0Yy5zdWJtaXRCdG5DbGljayA9IGZ1bmN0aW9uKGUpeyBlLnByZXZlbnREZWZhdWx0KCk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IHZhciBmb3JtID0gJCh0aGlzKS5wYXJlbnRzKCdmb3JtJyk7IHZhciBjID0gJCgnLmNob29zZS1zaG9wLXdyYXAnLGZvcm0pOyB2YXIgdCA9ICQoJy5zZWxlY3RlZC1zaG9wcy1maWVsZCcsYyk7IHZhciBzYyA9ICQoJ2lucHV0W25hbWU9InNob3BzW10iXTpjaGVja2VkJyxjKTsgdmFyIHMgPSAkKCdpbnB1dFtuYW1lPSJzaG9wc1tdIl0nLGMpOyB2YXIgaCA9ICQoIi5jaG9vc2Utc2hvcC1saW5rIC5zZWxlY3RlZC1zaG9wcy1uYW1lIixjKTsgdmFyIHIgPSAnJyxyMiA9ICcnOyBjb25zb2xlLmxvZyh0KTsgY29uc29sZS5sb2coc2MpOyBjb25zb2xlLmxvZyhzKTsgaWYgKHNjLmxlbmd0aCAmJiBzYy5sZW5ndGggPCBzLmxlbmd0aCkgeyB2YXIgbiA9IFtdOyBzYy5lYWNoKGZ1bmN0aW9uICgpIHsgbi5wdXNoKCQodGhpcykudmFsKCkpOyByICs9IChyID09ICcnKT8nJzonLCAnOyByICs9ICQodGhpcykuYXR0cigidGl0bGUiKTsgfSk7IHZhciBmYXZTSXMgPSB0Yy5nZXRGYXZTaG9wc0lkcyhjKTsgdmFyIGRpZmYxID0gJChmYXZTSXMpLm5vdChuKS5nZXQoKTsgdmFyIGRpZmYyID0gJChuKS5ub3QoZmF2U0lzKS5nZXQoKTsgaWYgKGRpZmYxLmxlbmd0aCA9PSAwICYmIGRpZmYyLmxlbmd0aCA9PSAwKSB7IGNvbnNvbGUubG9nKCdmYXZvcml0ZScpOyAkKHQpLnZhbCgiZmF2b3JpdGUiKTsgciA9ICLQktGL0LHRgNCw0YLRjCDQvNCw0LPQsNC30LjQvdGLIjsgcjIgPSAi0JvRjtCx0LjQvNGL0LUg0LzQsNCz0LDQt9C40L3RiyI7IH0gZWxzZSB7IGNvbnNvbGUubG9nKCdzZXQgbjogJyArIG4pOyBjb25zb2xlLmxvZygkKHQpKTsgY29uc29sZS5sb2coJCh0KS52YWwoKSk7ICQodCkudmFsKG4pOyBjb25zb2xlLmxvZygkKHQpLnZhbCgpKTsgcjIgPSByOyB9IH0gZWxzZSB7IGNvbnNvbGUubG9nKCdBTEwnKTsgJCh0KS52YWwoImFsbCIpOyByID0gItCS0YvQsdGA0LDRgtGMINC80LDQs9Cw0LfQuNC90YsiOyByMiA9ICLQktGB0LUg0LzQsNCz0LDQt9C40L3RiyI7IH0gaC50ZXh0KHIyKTsgaC5hdHRyKHsidGl0bGUiOnIsImRhdGEtb3JpZ2luYWwtdGl0bGUiOnJ9KTsgdGMuaGlkZUNob29zZVNob3BzKCk7IH07IHRjLmhpZGVDaG9vc2VTaG9wcyA9IGZ1bmN0aW9uKCl7ICQodGMuY3NlbCkucmVtb3ZlQ2xhc3MoJ29wZW4nKTsgaWYgKGRjb3JlY25nLmlzVG91Y2hEZXZpY2UpIHsgJCgnQk9EWScpLnJlbW92ZUNsYXNzKCdtb2RhbC1vcGVuJyk7IGlmICh3aW5kb3cubG9jYXRpb24uaGFzaCA9PT0gJyMnICsgdGMudXJsaGFzaCkgeyBoaXN0b3J5LmJhY2soKTsgfSB9IH07IHRjLnNob3dDaG9vc2VTaG9wcyA9IGZ1bmN0aW9uKCl7ICQodGMuY3NlbCkuYWRkQ2xhc3MoJ29wZW4nKTsgaWYgKGRjb3JlY25nLmlzVG91Y2hEZXZpY2UpIHsgJCgnQk9EWScpLmFkZENsYXNzKCdtb2RhbC1vcGVuJyk7IGlmICh3aW5kb3cubG9jYXRpb24uaGFzaCAhPT0gJyMnICsgdGMudXJsaGFzaCkgeyB3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgbnVsbCwgJyMnICsgdGMudXJsaGFzaCk7IH0gfSB9OyB0Yy5nZXRTaG9wc0NhdGVnb3J5SFRNTCA9IGZ1bmN0aW9uKGNJLGNOKXsgdmFyIHNob3BzSHRtbCA9ICc8ZGl2IGNsYXNzPSJjYXRlZ29yeSBoaWRkZW4iIGRhdGEtaWQ9IicgKyBjSSArICciPic7IHNob3BzSHRtbCArPSAnPGxhYmVsPic7IHNob3BzSHRtbCArPSAnPGlucHV0IGNoZWNrZWQ9ImNoZWNrZWQiIG5hbWU9InNob3BjYXRlZ29yaWVzW10iIHR5cGU9ImNoZWNrYm94IiB0aXRsZT0i0JLRi9Cx0YDQsNGC0Ywv0J7RgtC80LXQvdC40YLRjCDQstGB0LUg0LzQsNCz0LDQt9C40L3RiyIgLz4gJzsgc2hvcHNIdG1sICs9IGNOOyBzaG9wc0h0bWwgKz0gJzxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLW1pbnVzIHRvb2dsZS1idG4iPjwvc3Bhbj4nOyBzaG9wc0h0bWwgKz0gJzwvbGFiZWw+PHVsPic7IHNob3BzSHRtbCArPSAnPC91bD48L2Rpdj4nOyByZXR1cm4gc2hvcHNIdG1sOyB9OyB0Yy5nZXRTaG9wSFRNTCA9IGZ1bmN0aW9uKHNob3ApeyB2YXIgc2hvcHNIdG1sID0gJzxsaT4nOyBzaG9wc0h0bWwgKz0gJzxsYWJlbCBmb3I9InN1YnNjcmliZS1zaG9wLScgKyBzaG9wLmlkICsgJyIgZGF0YS10b2dnbGU9InRvb2x0aXAiIGRhdGEtb3JpZ2luYWwtdGl0bGU9IicgKyBzaG9wLm5hbWUucmVwbGFjZSgnIicsJycpICsgJyI+Jzsgc2hvcHNIdG1sICs9ICc8aW5wdXQgaWQ9InN1YnNjcmliZS1zaG9wLScgKyBzaG9wLmlkICsgJyIgbmFtZT0ic2hvcHNbXSIgdmFsdWU9IicgKyBzaG9wLmlkICsgJyIgdGl0bGU9IicgKyBzaG9wLm5hbWUucmVwbGFjZSgnIicsJycpICsgJyIgdHlwZT0iY2hlY2tib3giPic7IHNob3BzSHRtbCArPSAnPHNwYW4gY2xhc3M9ImltYWdlIj4gPGltZyBzcmM9IicgKyBzaG9wLmltYWdlICsgJyIgYWx0PSInICsgc2hvcC5uYW1lLnJlcGxhY2UoJyInLCcnKSArICciIHRpdGxlPSInICsgc2hvcC5uYW1lLnJlcGxhY2UoJyInLCcnKSArICciIGhlaWdodD0iMTAwIiB3aWR0aD0iMTAwIj48L3NwYW4+Jzsgc2hvcHNIdG1sICs9IHNob3AubmFtZS5yZXBsYWNlKCciJywnJyk7IHNob3BzSHRtbCArPSAnPC9sYWJlbD4nOyBzaG9wc0h0bWwgKz0gJzwvbGk+JzsgcmV0dXJuIHNob3BzSHRtbDsgfTsgdGMubG9hZEZhdm9yaXRlU2hvcHMgPSBmdW5jdGlvbihjLGNpdHlJZCl7IHRjLnNGYXZMb2FkZWQgPSBmYWxzZTsgdmFyIHNob3BzV3JhcCA9ICQoJy5jaG9vc2Utc2hvcHMgLndyYXAnLGMpOyB2YXIgdXJsMiA9ICcvYXBpdjIvZmF2b3JpdGVzaG9wcy8nOyB2YXIgZGF0YTIgPSB7IGNpdHlfaWQ6IGNpdHlJZCwgbGltaXQ6IDk5OSwgZmllbGRzOiAnaWQsbmFtZSxpbWFnZSxpbWFnZTUwLGNhdGVnb3JpZXNfaWQnIH07IEFwaS5nZXQodXJsMiwgZGF0YTIsIGZ1bmN0aW9uIChyZXNwb25zZTIpIHsgaWYgKHJlc3BvbnNlMi50b3RhbENvdW50ID4gMCkgeyB2YXIgc2hvcHNIdG1sID0gJyc7IGZvciAodmFyIGtleTIgaW4gcmVzcG9uc2UyLnNob3BzKSB7IHNob3BzSHRtbCArPSB0Yy5nZXRTaG9wSFRNTChyZXNwb25zZTIuc2hvcHNba2V5Ml0pOyB9ICQoJy5jYXRlZ29yeVtkYXRhLWlkPSIwIl0nLCBzaG9wc1dyYXApLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTsgJCgnLmNhdGVnb3J5W2RhdGEtaWQ9IjAiXSB1bCcsIHNob3BzV3JhcCkuaHRtbChzaG9wc0h0bWwpOyB9IHRjLnNGYXZMb2FkZWQgPSB0cnVlOyBpZiAodGMuc0xvYWRlZCkgeyB0Yy5zZXRDaGVja2VkKGMpOyB9IH0pOyB9OyB0Yy5sb2FkU2hvcHMgPSBmdW5jdGlvbihjLGNpdHlJZCl7IHZhciBzaG9wc1dyYXAgPSAkKCcuY2hvb3NlLXNob3BzIC53cmFwJyxjKTsgdGMuc0xvYWRlZCA9IGZhbHNlOyB0Yy5zRmF2TG9hZGVkID0gZmFsc2U7IHZhciB1cmwgPSAnL2FwaXYyL2NhdGVnb3JpZXMvJzsgdmFyIGRhdGEgPSB7IGNpdHlfaWQ6IGNpdHlJZCwgbGltaXQ6IDk5OSwgZmllbGRzOiAnaWQsbmFtZScgfTsgc2hvcHNXcmFwLmh0bWwoJycpLmFkZENsYXNzKCdsb2FkZXItaWNvbicpLmF0dHIoJ2RhdGEtY2l0eWlkJywgY2l0eUlkKTsgc2hvcHNXcmFwLmh0bWwoJzxkaXY+PGxhYmVsPjxpbnB1dCBjaGVja2VkPSJjaGVja2VkIiBuYW1lPSJhbGxzaG9wY2F0ZWdvcmllc1tdIiB0eXBlPSJjaGVja2JveCIgdGl0bGU9ItCS0YvQsdGA0LDRgtGML9Ce0YLQvNC10L3QuNGC0Ywg0LLRgdC1INC80LDQs9Cw0LfQuNC90YsiIC8+INCS0YvQsdGA0LDRgtGML9Ce0YLQvNC10L3QuNGC0Ywg0LLRgdC1INC80LDQs9Cw0LfQuNC90Ys8L2xhYmVsPjwvZGl2PicpOyBBcGkuZ2V0KHVybCwgZGF0YSwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7IGlmIChyZXNwb25zZS50b3RhbENvdW50ID4gMCkgeyBzaG9wc1dyYXAuYXBwZW5kKHRjLmdldFNob3BzQ2F0ZWdvcnlIVE1MKDAsJ9Cb0Y7QsdC40LzRi9C1JykpOyB2YXIgbG9hZGVkID0gMDsgZm9yICh2YXIga2V5IGluIHJlc3BvbnNlLmNhdGVnb3JpZXMpIHsgdmFyIGNhdCA9IHJlc3BvbnNlLmNhdGVnb3JpZXNba2V5XTsgdmFyIGNJID0gY2F0LmlkOyB2YXIgY04gPSBjYXQubmFtZTsgc2hvcHNXcmFwLmFwcGVuZCh0Yy5nZXRTaG9wc0NhdGVnb3J5SFRNTChjSSxjTikpOyB2YXIgdXJsMiA9ICcvYXBpdjMvc2hvcHMvJzsgdmFyIGRhdGEyID0geyBjaXR5X2lkOiBjaXR5SWQsIHN0YXR1czogMSwgY2F0ZWdvcnlfaWQ6IGNJLCBsaW1pdDogOTk5LCBmaWVsZHM6ICdpZCxuYW1lLGltYWdlLGltYWdlNTAsY2F0ZWdvcmllc19pZCcgfTsgQXBpLmdldCh1cmwyLCBkYXRhMiwgZnVuY3Rpb24gKHJlc3BvbnNlMikgeyBpZiAocmVzcG9uc2UyLnRvdGFsQ291bnQgPiAwKSB7IHZhciBzaG9wc0h0bWwgPSAnJzsgZm9yICh2YXIga2V5MiBpbiByZXNwb25zZTIuc2hvcHMpIHsgdmFyIGNJID0gcmVzcG9uc2UyLnNob3BzW2tleTJdLmNhdGVnb3JpZXNfaWQ7IHNob3BzSHRtbCArPSB0Yy5nZXRTaG9wSFRNTChyZXNwb25zZTIuc2hvcHNba2V5Ml0pOyB9ICQoJy5jYXRlZ29yeVtkYXRhLWlkPSInICsgY0kgKyAnIl0nLCBzaG9wc1dyYXApLnJlbW92ZUNsYXNzKCdoaWRkZW4nKTsgJCgnLmNhdGVnb3J5W2RhdGEtaWQ9IicgKyBjSSArICciXSB1bCcsIHNob3BzV3JhcCkuaHRtbChzaG9wc0h0bWwpOyB9IGxvYWRlZCsrOyBpZiAocmVzcG9uc2UudG90YWxDb3VudCA9PSBsb2FkZWQpIHsgdGMuc0xvYWRlZCA9IHRydWU7IHRjLmxvYWRGYXZvcml0ZVNob3BzKGMsY2l0eUlkKTsgaWYgKHRjLnNGYXZMb2FkZWQpIHsgdGMuc2V0Q2hlY2tlZChjKTsgfSB9IH0pOyB9IH0gc2hvcHNXcmFwLnJlbW92ZUNsYXNzKCdsb2FkZXItaWNvbicpOyB9KTsgfTsgdGMuZ2V0U2VsZWN0ZWRTaG9wcyA9IGZ1bmN0aW9uKGMpeyByZXR1cm4gJCh0Yy5zc25zZWwsYykudmFsKCk7IH07IHRjLmdldEZhdlNob3BzSWRzID0gZnVuY3Rpb24oYyl7IHZhciB2ID0gW107ICQoJy5jYXRlZ29yeVtkYXRhLWlkPSIwIl0gW25hbWU9InNob3BzW10iXScsYykuZWFjaChmdW5jdGlvbigpeyB2LnB1c2goJCh0aGlzKS52YWwoKSk7IH0pOyByZXR1cm4gdjsgfTsgdGMuc2V0Q2hlY2tlZCA9IGZ1bmN0aW9uKGMpeyB2YXIgZmF2U0lzID0gdGMuZ2V0RmF2U2hvcHNJZHMoYyk7IGZvcih2YXIgaSA9IDA7IGkgPCBmYXZTSXMubGVuZ3RoOyBpKyspIHsgJCgnLmNhdGVnb3J5W2RhdGEtaWQhPSIwIl0gW25hbWU9InNob3BzW10iXVt2YWx1ZT0iJyArIGZhdlNJc1tpXSArICciXScsIGMpLnBhcmVudHMoJ2xpOmZpcnN0JykucmVtb3ZlKCk7IH0gdmFyIHNlbFMgPSB0Yy5nZXRTZWxlY3RlZFNob3BzKGMpOyBpZiAoc2VsUyA9PSAnYWxsJykgeyAkKCdbbmFtZT0ic2hvcHNbXSJdJyxjKS5wcm9wKCJjaGVja2VkIiwgdHJ1ZSk7IH0gZWxzZSBpZiAoc2VsUyA9PSAnZmF2b3JpdGUnKSB7ICQoJy5jYXRlZ29yeVtkYXRhLWlkPSIwIl0gW25hbWU9InNob3BzW10iXScsYykucHJvcCgiY2hlY2tlZCIsIHRydWUpOyB9IGVsc2UgeyB2YXIgc2VsU0FyciA9IHNlbFMuc3BsaXQoJywnKTsgZm9yKHZhciBpID0gMDsgaSA8IHNlbFNBcnIubGVuZ3RoOyBpKyspIHsgJCgnW25hbWU9InNob3BzW10iXVt2YWx1ZT0iJyArIHNlbFNBcnJbaV0gKyAnIl0nLCBjKS5wcm9wKCJjaGVja2VkIiwgdHJ1ZSk7IH0gfSBpZiAoc2VsUyAhPSAnYWxsJykgeyAkKCdbbmFtZT0ic2hvcHNbXSJdOm5vdCg6Y2hlY2tlZCknKS5lYWNoKGZ1bmN0aW9uKCl7IHZhciBjID0gJCh0aGlzKS5wYXJlbnRzKCcuY2F0ZWdvcnk6Zmlyc3QnKTsgJCgnW25hbWU9InNob3BjYXRlZ29yaWVzW10iXScsYykucHJvcCgnY2hlY2tlZCcsZmFsc2UpOyAkKCdbbmFtZT0iYWxsc2hvcGNhdGVnb3JpZXNbXSJdJykucHJvcCgnY2hlY2tlZCcsZmFsc2UpOyB9KTsgfSB9OyB0Yy5zZXRTaG9wc0NhdGVnb3J5Q2hlY2tib3hlcyA9IGZ1bmN0aW9uKGUpeyB2YXIgY24gPSAkKHRoaXMpLnBhcmVudHMoJy5jYXRlZ29yeTpmaXJzdCcpOyB2YXIgcyA9ICQoJ2lucHV0W25hbWU9InNob3BzW10iXScsIGNuKTsgcy5wcm9wKCdjaGVja2VkJywgJCh0aGlzKS5pcygnOmNoZWNrZWQnKSk7IHMudHJpZ2dlcignY2hhbmdlJyk7IH07IHRjLnNldEFsbFNob3BzQ2hlY2tib3hlcyA9IGZ1bmN0aW9uKGUpeyB2YXIgY24gPSAkKHRoaXMpLnBhcmVudHMoJy53cmFwOmZpcnN0Jyk7IHZhciBzID0gJCgnaW5wdXRbbmFtZT0ic2hvcGNhdGVnb3JpZXNbXSJdJywgY24pOyBzLnByb3AoJ2NoZWNrZWQnLCAkKHRoaXMpLmlzKCc6Y2hlY2tlZCcpKTsgcy50cmlnZ2VyKCdjaGFuZ2UnKTsgfTsgJCgnQk9EWScpLm9uKCdjbGljaycsJy5jaG9vc2Utc2hvcC1saW5rJyx0Yy5jaG9vc2VTaG9wQnRuQ2xpY2spOyAkKCdCT0RZJykub24oJ2NsaWNrJyx0Yy5jc2VsICsgJyAuY2FuY2VsLWJ1dHRvbiwgJyArIHRjLmNzZWwgKyAnIC5idG4tbW9kYWwtY2xvc2UnLHRjLmNhbmNlbEJ0bkNsaWNrKTsgJCgnQk9EWScpLm9uKCdjbGljaycsdGMuY3NlbCArICcgLnN1Ym1pdC1idXR0b24nLHRjLnN1Ym1pdEJ0bkNsaWNrKTsgJCgnQk9EWScpLm9uKCdjaGFuZ2UnLHRjLmNzZWwgKyAnIFtuYW1lPSJzaG9wY2F0ZWdvcmllc1tdIl0nLHRjLnNldFNob3BzQ2F0ZWdvcnlDaGVja2JveGVzKTsgJCgnQk9EWScpLm9uKCdjaGFuZ2UnLHRjLmNzZWwgKyAnIFtuYW1lPSJhbGxzaG9wY2F0ZWdvcmllc1tdIl0nLHRjLnNldEFsbFNob3BzQ2hlY2tib3hlcyk7ICQoJ0JPRFknKS5vbignY2xpY2snLHRjLmNhbmNlbEJ0bkNsaWNrKTsgJCgnQk9EWScpLm9uKCdjbGljaycsJy5jaG9vc2Utc2hvcC13cmFwJyxmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpO30pOyAkKHdpbmRvdykub24oJ3BvcHN0YXRlJywgZnVuY3Rpb24gKGUpIHsgaWYgKGRjb3JlY25nLmlzVG91Y2hEZXZpY2UpIHsgJCh0Yy5jc2VsICsgJyAuYnRuLW1vZGFsLWNsb3NlJykudHJpZ2dlcignY2xpY2snKTsgfSB9KTsgJCgnQk9EWScpLm9uKCdrZXl1cCBjdXQgcGFzdGUnLHRjLmNzZWwgKyAnIC5zZWFyY2gtc2hvcHMtaW5wdXQnLGZ1bmN0aW9uKCl7IHZhciBzZWFyY2hUZXh0ID0gJCh0aGlzKS52YWwoKS50b0xvd2VyQ2FzZSgpOyAkKHRjLmNzZWwgKyAiIHVsIGxpIGxhYmVsIikuZWFjaChmdW5jdGlvbigpeyB2YXIgY3VycmVudExpVGV4dCA9ICQodGhpcykudGV4dCgpLnRvTG93ZXJDYXNlKCksIHNob3dDdXJyZW50TGkgPSBjdXJyZW50TGlUZXh0LmluZGV4T2Yoc2VhcmNoVGV4dCkgIT09IC0xOyAkKHRoaXMpLmNsb3Nlc3QoJ2xpJykudG9nZ2xlKHNob3dDdXJyZW50TGkpOyB9KTsgfSk7ICQoJ0JPRFknKS5vbignY2xpY2snLHRjLmNzZWwgKyAnIC5jYXRlZ29yeSBsYWJlbCAudG9vZ2xlLWJ0bicsZnVuY3Rpb24oZSl7IGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgY29uc29sZS5sb2coIHRjLmNzZWwgKyAnIC5jYXRlZ29yeSBsYWJlbCBDTElDSycgKTsgdmFyIHVsID0gJCh0aGlzKS5wYXJlbnRzKCcuY2F0ZWdvcnk6Zmlyc3QnKS5maW5kKCd1bDpmaXJzdCcpOyBjb25zb2xlLmxvZyggdWwgKTsgaWYgKCQodGhpcykuaGFzQ2xhc3MoJ2dseXBoaWNvbi1taW51cycpKSB7ICQodWwpLmhpZGUoKTsgJCh0aGlzKS5yZW1vdmVDbGFzcygnZ2x5cGhpY29uLW1pbnVzJyk7ICQodGhpcykuYWRkQ2xhc3MoJ2dseXBoaWNvbi1wbHVzJyk7IH0gZWxzZSB7ICQodWwpLnNob3coKTsgJCh0aGlzKS5yZW1vdmVDbGFzcygnZ2x5cGhpY29uLXBsdXMnKTsgJCh0aGlzKS5hZGRDbGFzcygnZ2x5cGhpY29uLW1pbnVzJyk7IH0gfSk7IH07IHZhciBzaG9wc1NlbGVjdG9yID0gbmV3IHNob3BzU2VsZWN0b3JDbGFzcygpOyA=");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("KGZ1bmN0aW9uICgkKSB7IHZhciBjdXN0b21Nb2RhbEhhc2ggPSAnZHJvcGRvd25vcGVuJzsgJCgnQk9EWScpLm9uKCdjbGljaycsICcuYnRuLWdyb3VwLXNlYXJjaCAuZm9ybS1jb250cm9sJywgZnVuY3Rpb24gKGUpIHsgZS5zdG9wUHJvcGFnYXRpb24oKTsgfSk7ICQoJ2JvZHknKS5vbignY2xpY2snLCAnLmJ0bi1ncm91cC1zZWFyY2ggLmRyb3Bkb3duLW1lbnUuaW5uZXI+bGknLCBmdW5jdGlvbiAoZSkgeyBpZiAoJCh0aGlzKS5oYXNDbGFzcygnbm8tcmVzdWx0cycpKSB7IHJldHVybjsgfSBpZiAoJCh0aGlzKS5oYXNDbGFzcygnZGlzYWJsZWQnKSkgeyBlLnN0b3BQcm9wYWdhdGlvbigpOyByZXR1cm47IH0gdmFyIGJ0bkdyb3VwID0gJCh0aGlzKS5wYXJlbnRzKCcuYnRuLWdyb3VwLXNlYXJjaDpmaXJzdCcpLCBpZCA9ICQodGhpcykuYXR0cigncmVsJyksIG5hbWUgPSAkKCcudGV4dCcsIHRoaXMpLnRleHQoKSwgYnV0dG9uID0gJCgnLmJ0bicsIGJ0bkdyb3VwKSwgYnV0dG9uVGV4dCA9ICQoJy50ZXh0JywgYnV0dG9uKTsgaWYgKCFidXR0b25UZXh0LmF0dHIoJ2RhdGEtb3JpZ3RleHQnKSkgeyBidXR0b25UZXh0LmF0dHIoJ2RhdGEtb3JpZ3RleHQnLCBidXR0b25UZXh0LnRleHQoKSk7IH0gYnV0dG9uVGV4dC50ZXh0KG5hbWUpOyAkKCdsaS5hY3RpdmUnLCBidG5Hcm91cCkucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpOyAkKHRoaXMpLmFkZENsYXNzKCdhY3RpdmUnKTsgaWYgKCQoYnV0dG9uKS5hdHRyKCdkYXRhLWhpZGRlbmlucHV0JykpIHsgdmFyIGhpZGRlbklucHV0TmFtZSA9ICQoYnV0dG9uKS5hdHRyKCdkYXRhLWhpZGRlbmlucHV0Jyk7IHZhciBoaWRkZW5JbnB1dCA9ICQoJ1tuYW1lPSInICsgaGlkZGVuSW5wdXROYW1lICsgJyJdJyk7ICQoaGlkZGVuSW5wdXQpLnZhbChpZCk7ICQoaGlkZGVuSW5wdXQpLmF0dHIoJ2RhdGEtY2l0eW5hbWUnLCBuYW1lKTsgJChoaWRkZW5JbnB1dCkudHJpZ2dlcignY2hhbmdlJyk7IH0gfSk7ICQoJ0JPRFknKS5vbignY2xpY2snLCAnLmJ0bi1ncm91cC1zZWFyY2ggLmRyb3Bkb3duLXRvZ2dsZScsIGZ1bmN0aW9uIChlKSB7IGNvbnNvbGUubG9nKCdDTElDSyAuYnRuLWdyb3VwLXNlYXJjaCAuZHJvcGRvd24tdG9nZ2xlJyk7IHZhciBidG5Hcm91cCA9ICQodGhpcykucGFyZW50cygnLmJ0bi1ncm91cC1zZWFyY2g6Zmlyc3QnKSwgaW5wdXQgPSAkKCcudHlwZWFoZWFkLC50eXBlYWhlYWQtYXBpJywgYnRuR3JvdXApOyBjb25zb2xlLmxvZyhidG5Hcm91cCk7IGNvbnNvbGUubG9nKGJ0bkdyb3VwKTsgY29uc29sZS5sb2coYnRuR3JvdXAuaGFzQ2xhc3MoJ29wZW4nKSk7IGlmICghYnRuR3JvdXAuaGFzQ2xhc3MoJ29wZW4nKSkgeyB2YXIgZHJvcGRvd25NZW51ID0gJCgnPi5kcm9wZG93bi1tZW51OmZpcnN0JyxidG5Hcm91cCksIHN1Ym1lbnUgPSAkKCc+IC5kcm9wZG93bi1tZW51LmlubmVyJywgZHJvcGRvd25NZW51KSwgd2luZG93SGVpZ2h0ID0gJCh3aW5kb3cpLmhlaWdodCgpLCBzdWJtZW51SGVpZ2h0ID0gTWF0aC5yb3VuZCh3aW5kb3dIZWlnaHQgLyAyKTsgaWYgKGRjb3JlY25nLmlzVG91Y2hEZXZpY2UpIHsgJCgnQk9EWScpLmFkZENsYXNzKCdtb2RhbC1vcGVuJyk7IGlmICh3aW5kb3cubG9jYXRpb24uaGFzaCAhPT0gJyMnICsgY3VzdG9tTW9kYWxIYXNoKSB7IHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZShudWxsLCBudWxsLCAnIycgKyBjdXN0b21Nb2RhbEhhc2gpOyB9IH0gaWYgKHN1Ym1lbnVIZWlnaHQgPCAxNTApIHsgc3VibWVudUhlaWdodCA9IDE1MDsgfSBzdWJtZW51LmNzcygnbWF4LWhlaWdodCcsIHN1Ym1lbnVIZWlnaHQpOyBpZiAoaW5wdXQuYXR0cignZGF0YS1sb2FkJykgPT0gJzEnKSB7IHByZXZWYWwgPSBmYWxzZTsgaW5wdXQudHJpZ2dlcigna2V5dXAnKTsgaW5wdXQuYXR0cignZGF0YS1sb2FkJywgMCk7IH0gZHJvcGRvd25NZW51LmFkZENsYXNzKCdvcGVuJyk7IGlmIChkY29yZWNuZy5pc1RvdWNoRGV2aWNlICYmICQodGhpcykuYXR0cignZGF0YS1tb2JpbGUnKSkgeyBidG5Hcm91cC5hZGRDbGFzcygnb3BlbicpOyB9IGlmICghZGNvcmVjbmcuaXNUb3VjaERldmljZSkgeyBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgaW5wdXQuZm9jdXMoKTsgfSwgMCk7IH0gfSBlbHNlIHsgaWYgKGRjb3JlY25nLmlzVG91Y2hEZXZpY2UpIHsgJCgnQk9EWScpLnJlbW92ZUNsYXNzKCdtb2RhbC1vcGVuJyk7IGlmICh3aW5kb3cubG9jYXRpb24uaGFzaCA9PT0gJyMnICsgY3VzdG9tTW9kYWxIYXNoKSB7IGhpc3RvcnkuYmFjaygpOyB9IH0gfSB9KTsgdmFyIHhocjsgdmFyIHByZXZWYWw7ICQoJ0JPRFknKS5vbigna2V5dXAgY3V0IHBhc3RlJywgJy50eXBlYWhlYWQsLnR5cGVhaGVhZC1hcGknLCBmdW5jdGlvbiAoJGUpIHsgdmFyIHNwZWNpYWxLZXlDb2RlTWFwID0geyA5OiAidGFiIiwgMjc6ICJlc2MiLCAzNzogImxlZnQiLCAzOTogInJpZ2h0IiwgMTM6ICJlbnRlciIsIDM4OiAidXAiLCA0MDogImRvd24iLCAxNjogInNoaWZ0IiwgMTc6ICJjdHJsIiwgMTg6ICJhbHQiIH07IGlmIChzcGVjaWFsS2V5Q29kZU1hcFskZS53aGljaCB8fCAkZS5rZXlDb2RlXSkgeyByZXR1cm47IH0gdmFyIGlucHV0ID0gJCh0aGlzKTsgdmFyIHNlYXJjaFZhbCA9IGlucHV0LnZhbCgpOyBpZiAocHJldlZhbCA9PT0gc2VhcmNoVmFsKSB7IHJldHVybjsgfSBwcmV2VmFsID0gc2VhcmNoVmFsOyBpZiAoeGhyKSB7IHhoci5hYm9ydCgpOyB9IHZhciBtaW5sZW5ndGggPSBpbnB1dC5hdHRyKCdkYXRhLW1pbmxlbmdodCcpOyBpZiAobWlubGVuZ3RoKSB7IGlmIChzZWFyY2hWYWwubGVuZ3RoID4gMCAmJiBzZWFyY2hWYWwubGVuZ3RoIDwgbWlubGVuZ3RoKSB7IHJldHVybiB0cnVlOyB9IH0gdmFyIGJ0bkdyb3VwID0gaW5wdXQucGFyZW50cygnLmJ0bi1ncm91cC1zZWFyY2g6Zmlyc3QnKTsgdmFyIHQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgaW5wdXQuYWRkQ2xhc3MoJ2xvYWRpbmcnKTsgfSwgMTAwKTsgdmFyIHVybCA9IGRjb3JlY25nLndlYnNpdGV1cmwucmVwbGFjZSgnYWNjb3VudC4nLCAnJykgKyBpbnB1dC5hdHRyKCdkYXRhLWFqYXgtdXJsJyk7IHVybCArPSAnP25hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudChzZWFyY2hWYWwpOyBpZiAoaW5wdXQuYXR0cignZGF0YS1hamF4LXR5cGUnKSkgeyB1cmwgKz0gJyZ0eXBlPScgKyBpbnB1dC5hdHRyKCdkYXRhLWFqYXgtdHlwZScpOyB9IGlmIChpbnB1dC5hdHRyKCdkYXRhLWFqYXgtY2l0eWlkJykpIHsgdXJsICs9ICcmY2l0eV9pZD0nICsgaW5wdXQuYXR0cignZGF0YS1hamF4LWNpdHlpZCcpOyB9IGlmIChpbnB1dC5hdHRyKCdkYXRhLWFqYXgtdXNlcmlkJykpIHsgdXJsICs9ICcmdXNlcl9pZD0nICsgaW5wdXQuYXR0cignZGF0YS1hamF4LXVzZXJpZCcpOyB9IGlmIChpbnB1dC5hdHRyKCdkYXRhLWFqYXgtc3RhdHVzJykpIHsgdXJsICs9ICcmc3RhdHVzPScgKyBpbnB1dC5hdHRyKCdkYXRhLWFqYXgtc3RhdHVzJyk7IH0gaWYgKGlucHV0LmF0dHIoJ2RhdGEtYWpheC1hbGwnKSkgeyB1cmwgKz0gJyZhbGw9JyArIGlucHV0LmF0dHIoJ2RhdGEtYWpheC1hbGwnKTsgfSBpZiAoaW5wdXQuYXR0cignZGF0YS1wYXJhbXMnKSkgeyB2YXIgcGFyYW1zID0gaW5wdXQuYXR0cignZGF0YS1wYXJhbXMnKSwgcGFyYW1zQXJyYXkgPSBwYXJhbXMuc3BsaXQoJyYnKTsgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbXNBcnJheS5sZW5ndGg7IGkrKykgeyB2YXIgcGFyYW1BcnJheSA9IHBhcmFtc0FycmF5W2ldLnNwbGl0KCc9JyksIHBhcmFtID0gcGFyYW1BcnJheVswXSwgdmFsID0gcGFyYW1BcnJheVsxXTsgaWYgKHBhcmFtID09ICdwYXJlbnQnICYmIHNlYXJjaFZhbC5sZW5ndGggPiAwKSB7IGNvbnRpbnVlOyB9IHVybCArPSAnJicgKyBwYXJhbSArICc9JyArIHZhbDsgfSB9IHZhciBzaG93Q2hlY2tib3hlcyA9IChpbnB1dC5hdHRyKCdkYXRhLWNoZWNrYm94ZXMnKSA9PSAnMScpOyB4aHIgPSAkLmFqYXgoeyB0eXBlOiAiR0VUIiwgeGhyRmllbGRzOiB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9LCBiZWZvcmVTZW5kOiBmdW5jdGlvbiAocmVxdWVzdCkgeyB9LCB1cmw6IHVybCB9KS5kb25lKGZ1bmN0aW9uIChyZXNwb25zZSkgeyB2YXIgZHJvcGRvd25Db250YWluZXIgPSAkKCcuZHJvcGRvd24tbWVudS5pbm5lcicsIGJ0bkdyb3VwKTsgaWYgKHJlc3BvbnNlLnBjYXRlZ29yaWVzKSB7IGlmIChyZXNwb25zZS50b3RhbENvdW50ID4gMCkgeyB2YXIgYnRuVGV4dE9iaiA9ICQoJy5idG4gLnRleHQnLCBidG5Hcm91cCk7IGlmIChidG5UZXh0T2JqLmxlbmd0aCkgeyB2YXIgc2VsZWN0ZWRDYXRlZ29yaWVzSWRzU3RyID0gJChidG5UZXh0T2JqKS5hdHRyKCdkYXRhLWlkcycpOyB9IGVsc2UgeyB2YXIgc2VsZWN0ZWRDYXRlZ29yaWVzSWRzU3RyID0gJChpbnB1dCkuYXR0cignZGF0YS1pZHMnKTsgfSB2YXIgc2VsZWN0ZWRDYXRlZ29yaWVzSWRzID0gW107IGlmIChzZWxlY3RlZENhdGVnb3JpZXNJZHNTdHIpIHsgc2VsZWN0ZWRDYXRlZ29yaWVzSWRzID0gc2VsZWN0ZWRDYXRlZ29yaWVzSWRzU3RyLnNwbGl0KCcsJykgfSB2YXIgaXRlbXNIVE1MID0gZGNvcmVjbmcuY2F0ZWdvcmllc0Ryb3Bkb3duLmdldEl0ZW1zSFRNTChyZXNwb25zZS5wY2F0ZWdvcmllcywgc2hvd0NoZWNrYm94ZXMsIHNlbGVjdGVkQ2F0ZWdvcmllc0lkcywgc2VhcmNoVmFsKTsgZHJvcGRvd25Db250YWluZXIuaHRtbChpdGVtc0hUTUwpOyB9IGVsc2UgeyBkcm9wZG93bkNvbnRhaW5lci5odG1sKCI8bGkgY2xhc3M9XCJuby1yZXN1bHRzXCI+PGE+0J3QuNGH0LXQs9C+INC90LUg0L3QsNC50LTQtdC90L48L2E+PC9saT4iKTsgfSB9IGVsc2UgaWYgKHJlc3BvbnNlLnVzZXJzKSB7IGlmIChyZXNwb25zZS50b3RhbENvdW50ID4gMCkgeyB2YXIgdXNlcklkSW5wdXQgPSAkKCdbbmFtZT0idXNlcnNfaWQiXScpOyB2YXIgaXRlbXNIVE1MID0gJyc7IGZvciAodmFyIGkgPSAwOyBpIDwgcmVzcG9uc2UudXNlcnMubGVuZ3RoOyBpKyspIHsgdmFyIHVzZXIgPSByZXNwb25zZS51c2Vyc1tpXTsgdmFyIGl0ZW1IVE1MID0gJyc7IHZhciBpdGVtQ2xhc3MgPSAnJzsgaXRlbUhUTUwgKz0gJzxsaScgKyAoKGl0ZW1DbGFzcyA9PSAnJykgPyAnJyA6ICcgY2xhc3M9IicgKyBpdGVtQ2xhc3MgKyAnIicpICsgJyByZWw9IicgKyB1c2VyLmlkICsgJyI+JzsgaXRlbUhUTUwgKz0gJzxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgdGl0bGU9IicgKyB1c2VyLmVtYWlsICsgJyI+JzsgaXRlbUhUTUwgKz0gJzxzcGFuIGNsYXNzPSJ0ZXh0Ij4nOyBpdGVtSFRNTCArPSB1c2VyLnVzZXJuYW1lOyBpdGVtSFRNTCArPSAnPGJyLz4mbmJzcDs8c21hbGw+JyArIHVzZXIuZW1haWwgKyAnPC9zbWFsbD4nOyBpdGVtSFRNTCArPSAnPC9zcGFuPic7IGl0ZW1IVE1MICs9ICc8L2E+JzsgaXRlbUhUTUwgKz0gJzwvbGk+JzsgaXRlbXNIVE1MICs9IGl0ZW1IVE1MOyB9IGRyb3Bkb3duQ29udGFpbmVyLmh0bWwoaXRlbXNIVE1MKTsgfSBlbHNlIHsgZHJvcGRvd25Db250YWluZXIuaHRtbCgiPGxpIGNsYXNzPVwibm8tcmVzdWx0c1wiPjxhPtCd0LjRh9C10LPQviDQvdC1INC90LDQudC00LXQvdC+PC9hPjwvbGk+Iik7IH0gfSBlbHNlIGlmIChyZXNwb25zZS5icmFuZHMpIHsgaWYgKHJlc3BvbnNlLnRvdGFsQ291bnQgPiAwKSB7IHZhciBidG5UZXh0T2JqID0gJCgnLmJ0biAudGV4dCcsIGJ0bkdyb3VwKTsgdmFyIHNlbGVjdGVkQnJhbmRzSWRzU3RyID0gJChidG5UZXh0T2JqKS5hdHRyKCdkYXRhLWlkcycpOyB2YXIgc2VsZWN0ZWRCcmFuZHNJZHMgPSBbXTsgaWYgKHNlbGVjdGVkQnJhbmRzSWRzU3RyKSB7IHNlbGVjdGVkQnJhbmRzSWRzID0gc2VsZWN0ZWRCcmFuZHNJZHNTdHIuc3BsaXQoJywnKSB9IHZhciBpdGVtc0hUTUwgPSBkY29yZWNuZy5icmFuZHNEcm9wZG93bi5nZXRJdGVtc0hUTUwocmVzcG9uc2UuYnJhbmRzLCBzZWxlY3RlZEJyYW5kc0lkcywgc2VhcmNoVmFsKTsgZHJvcGRvd25Db250YWluZXIuaHRtbChpdGVtc0hUTUwpOyB9IGVsc2UgeyBkcm9wZG93bkNvbnRhaW5lci5odG1sKCI8bGkgY2xhc3M9XCJuby1yZXN1bHRzXCI+PGE+0J3QuNGH0LXQs9C+INC90LUg0L3QsNC50LTQtdC90L48L2E+PC9saT4iKTsgfSB9IGVsc2UgaWYgKHJlc3BvbnNlLmNpdGllcykgeyBpZiAocmVzcG9uc2UudG90YWxDb3VudCA+IDApIHsgdmFyIGJ0blRleHRPYmogPSAkKCcuYnRuIC50ZXh0JywgYnRuR3JvdXApLCBzZWxlY3RlZENpdGllc0lkc1N0ciA9ICQoYnRuVGV4dE9iaikuYXR0cignZGF0YS1pZHMnKTsgc2VsZWN0ZWRDaXRpZXNJZHMgPSBbXTsgaWYgKHNlbGVjdGVkQ2l0aWVzSWRzU3RyKSB7IHNlbGVjdGVkQ2l0aWVzSWRzID0gc2VsZWN0ZWRDaXRpZXNJZHNTdHIuc3BsaXQoJywnKTsgfSB2YXIgaXRlbXNIVE1MID0gZGNvcmVjbmcuY2l0aWVzRHJvcGRvd24uZ2V0SXRlbXNIVE1MKHJlc3BvbnNlLmNpdGllcywgc2VsZWN0ZWRDaXRpZXNJZHMsIHNlYXJjaFZhbCwgaW5wdXQpOyBkcm9wZG93bkNvbnRhaW5lci5odG1sKGl0ZW1zSFRNTCk7IH0gZWxzZSB7IGRyb3Bkb3duQ29udGFpbmVyLmh0bWwoIjxsaSBjbGFzcz1cIm5vLXJlc3VsdHNcIj48YT7QndC40YfQtdCz0L4g0L3QtSDQvdCw0LnQtNC10L3QvjwvYT48L2xpPiIpOyB9IH0gZWxzZSB7IGRyb3Bkb3duQ29udGFpbmVyLmh0bWwocmVzcG9uc2UpOyB9IGNsZWFyVGltZW91dCh0KTsgaW5wdXQucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTsgfSk7IH0pOyAkKCcuYnRuLWdyb3VwLXNlYXJjaCcpLmVhY2goZnVuY3Rpb24gKCkgeyB2YXIgYWN0aXZlSXRlbSA9ICQoJy5kcm9wZG93bi1tZW51LmlubmVyIC5hY3RpdmUnLCB0aGlzKTsgaWYgKGFjdGl2ZUl0ZW0ubGVuZ3RoKSB7IGFjdGl2ZUl0ZW0udHJpZ2dlcignY2xpY2snKTsgfSB9KTsgJCh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIGZ1bmN0aW9uIChlKSB7IGlmIChkY29yZWNuZy5pc1RvdWNoRGV2aWNlKSB7ICQoJy5idG4tZ3JvdXAtc2VhcmNoLm9wZW4gLmJ0bi1tb2RhbC1jbG9zZScpLnRyaWdnZXIoJ2NsaWNrJyk7ICQoJy5idG4tZ3JvdXAtdXNlcm5vdGlmaWNhdGlvbnMub3BlbiAuYnRuLW1vZGFsLWNsb3NlJykudHJpZ2dlcignY2xpY2snKTsgfSB9KTsgJCgnQk9EWScpLm9uKCdjbGljaycsICcuYnRuLWdyb3VwLXNlYXJjaCAuYnRuLWZpbHRlci1kaXNjb3VudHMtc2VsZWN0JywgZnVuY3Rpb24gKGUpIHsgdmFyIGJ0bkdyb3VwID0gJCh0aGlzKS5wYXJlbnRzKCcuYnRuLWdyb3VwLXNlYXJjaCcpOyBpbnB1dCA9ICQoJy50eXBlYWhlYWQsLnR5cGVhaGVhZC1hcGknLCBidG5Hcm91cCk7IGlucHV0LmF0dHIoJ2RhdGEtcHJldnZhbHVlJyxpbnB1dC5hdHRyKCdkYXRhLWlkcycpKTsgJChidG5Hcm91cCkudHJpZ2dlcignY2xpY2snKTsgJCgnQk9EWScpLnJlbW92ZUNsYXNzKCdtb2RhbC1vcGVuJyk7IGUucHJldmVudERlZmF1bHQoKTsgfSk7ICQoJ0JPRFknKS5vbignY2xpY2snLCAnLmJ0bi1ncm91cC1zZWFyY2ggLmJ0bi1maWx0ZXItZGlzY291bnRzLWNhbmNlbCcsIGZ1bmN0aW9uIChlKSB7IHZhciB3cmFwcGVyID0gJCh0aGlzKS5wYXJlbnRzKCcuYnRuLWdyb3VwLXNlYXJjaCcpOyAkKCcuYnRuLW1vZGFsLWNsb3NlJyx3cmFwcGVyKS50cmlnZ2VyKCdjbGljaycpOyBlLnByZXZlbnREZWZhdWx0KCk7IH0pOyAkKCdCT0RZJykub24oJ2NsaWNrJywgJy5idG4tbW9kYWwtY2xvc2UnLCBmdW5jdGlvbiAoZSkgeyB2YXIgYnRuR3JvdXAgPSAkKHRoaXMpLnBhcmVudHMoJy5idG4tZ3JvdXAtc2VhcmNoJyk7IGlmICghYnRuR3JvdXAubGVuZ3RoKSB7IGJ0bkdyb3VwID0gJCh0aGlzKS5wYXJlbnRzKCcuYnRuLWdyb3VwLXVzZXJub3RpZmljYXRpb25zJyk7IH0gdmFyIGlucHV0ID0gJCgnLnR5cGVhaGVhZCwudHlwZWFoZWFkLWFwaScsIGJ0bkdyb3VwKTsgaWYgKGlucHV0Lmxlbmd0aCkgeyB2YXIgcHJldlZhbHVlID0gaW5wdXQuYXR0cignZGF0YS1wcmV2dmFsdWUnKTsgaWYgKHByZXZWYWx1ZSkgeyB2YXIgaWRzID0gcHJldlZhbHVlLnNwbGl0KCcsJyk7IHZhciBleGNsdXNpb25TZWxlY3RvciA9ICcucmVtb3ZhYmxlLWl0ZW1bZGF0YS1pZCE9IicgKyBpZHMuam9pbignIl1bZGF0YS1pZCE9IicpICsgJyJdIC5nbHlwaGljb24nOyAkKGV4Y2x1c2lvblNlbGVjdG9yLCBidG5Hcm91cCkudHJpZ2dlcignY2xpY2snKTsgdmFyIGNoZWNrYm94U2VsZWN0b3IgPSAnLnNlbGVjdC10cmVlIFt0eXBlPSJjaGVja2JveCJdOm5vdCg6Y2hlY2tlZClbdmFsdWU9IicgKyBpZHMuam9pbignIl0sIC5zZWxlY3QtdHJlZSBbdHlwZT0iY2hlY2tib3giXTpub3QoOmNoZWNrZWQpW3ZhbHVlPSInKSArICciXSc7IGNvbnNvbGUubG9nKCBjaGVja2JveFNlbGVjdG9yICk7ICQoY2hlY2tib3hTZWxlY3RvcikudHJpZ2dlcignY2xpY2snKTsgfSBlbHNlIHsgJCgnLnJlbW92YWJsZS1pdGVtIC5nbHlwaGljb24nLCBidG5Hcm91cCkudHJpZ2dlcignY2xpY2snKTsgfSB9ICQoJy5kcm9wZG93bi10b2dnbGUnLGJ0bkdyb3VwKS50cmlnZ2VyKCdjbGljaycpOyBlLnByZXZlbnREZWZhdWx0KCk7IH0pOyAkKCdCT0RZJykub24oJ2NsaWNrJywnLmJ0bi1ncm91cC1zZWFyY2ggLmRyb3Bkb3duLW1lbnUub3BlbicsZnVuY3Rpb24oZSl7IGlmIChkY29yZWNuZy5pc1RvdWNoRGV2aWNlKSB7IGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgfSB9KTsgJCgnQk9EWScpLm9uKCdjbGljaycsJy5jaXRpZXMtZmlsdGVyLWRyb3Bkb3duIC5kcm9wZG93bi1tZW51IGEsLmNsb3NlLXN1Ym1lbnUtb24tc2VsZWN0IC5kcm9wZG93bi1tZW51IGEnLGZ1bmN0aW9uKGUpeyB2YXIgYnRuR3JvdXAgPSAkKHRoaXMpLnBhcmVudHMoJy5idG4tZ3JvdXAtc2VhcmNoOmZpcnN0Jyk7ICQoYnRuR3JvdXApLnRyaWdnZXIoJ2NsaWNrJyk7ICQoJ0JPRFknKS5yZW1vdmVDbGFzcygnbW9kYWwtb3BlbicpOyB9KTsgfSkoalF1ZXJ5KTs=");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("KGZ1bmN0aW9uICgkKSB7ICQoJ0JPRFknKS5vZmYoJ2NsaWNrJywgJy5zZWxlY3QtdHJlZSBsaScpOyAkKCdCT0RZJykub2ZmKCdjbGljaycsICcuc2VsZWN0LXRyZWUgbGkgYScpOyAkKCdCT0RZJykub2ZmKCdjbGljaycsICcuc2VsZWN0LXRyZWUgbGkgYSBzcGFuJyk7ICQoJ0JPRFknKS5vZmYoJ2NsaWNrJywgJy5zZWxlY3QtdHJlZSBbdHlwZT0iY2hlY2tib3giXScpOyAkKCdCT0RZJykub24oJ2NsaWNrJywgJy5zZWxlY3QtdHJlZSBsaSwgLmJ0bi1zZWFyY2gtY2F0ZWdvcmllcyBoNicsIGZ1bmN0aW9uIChlKSB7IGUucHJldmVudERlZmF1bHQoKTsgZS5zdG9wUHJvcGFnYXRpb24oKTsgfSk7ICQoJ0JPRFknKS5vbignY2xpY2snLCAnLnNlbGVjdC10cmVlIGxpIGEnLCBmdW5jdGlvbiAoZSkgeyBlLnByZXZlbnREZWZhdWx0KCk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IH0pOyB2YXIgQ2F0ZWdvcmllc0Ryb3Bkb3duID0gZnVuY3Rpb24gKCkgeyB0aGlzLmdldENhdGVnb3JpZXNJZHNTdHIgPSBmdW5jdGlvbiAod3JhcHBlciwgcHJvZHVjdEluZGV4KSB7IHZhciBjYXRlZ29yaWVzSW5wdXRzID0gJCgnW25hbWVePSJwcm9kdWN0c1snICsgcHJvZHVjdEluZGV4ICsgJ11bcHJvZHVjdGNhdGVnb3JpZXNdIl0nLCB3cmFwcGVyKTsgdmFyIGNhdGVnb3JpZXNJZHMgPSAnJzsgaWYgKGNhdGVnb3JpZXNJbnB1dHMubGVuZ3RoKSB7IGNhdGVnb3JpZXNJbnB1dHMuZWFjaChmdW5jdGlvbiAoKSB7IGNhdGVnb3JpZXNJZHMgKz0gKGNhdGVnb3JpZXNJZHMgPT0gJycpID8gJycgOiAnLCc7IGNhdGVnb3JpZXNJZHMgKz0gJCh0aGlzKS52YWwoKTsgfSk7IH0gcmV0dXJuIGNhdGVnb3JpZXNJZHM7IH07IHRoaXMuZ2V0Q2F0ZWdvcmllc1RleHQgPSBmdW5jdGlvbiAod3JhcHBlciwgcHJvZHVjdEluZGV4KSB7IHZhciBjYXRlZ29yaWVzSW5wdXRzID0gJCgnW25hbWVePSJwcm9kdWN0c1snICsgcHJvZHVjdEluZGV4ICsgJ11bcHJvZHVjdGNhdGVnb3JpZXNdIl0nLCB3cmFwcGVyKTsgdmFyIGNhdGVnb3JpZXNUZXh0ID0gJyc7IGlmIChjYXRlZ29yaWVzSW5wdXRzLmxlbmd0aCkgeyBjYXRlZ29yaWVzSW5wdXRzLmVhY2goZnVuY3Rpb24gKCkgeyB2YXIgdGV4dCA9ICQodGhpcykuYXR0cignZGF0YS10aXRsZScpOyB2YXIgY2hpbGRyZW5zID0gJCh0aGlzKS5hdHRyKCdkYXRhLWNoaWxkJyk7IGNhdGVnb3JpZXNUZXh0ICs9IChjYXRlZ29yaWVzVGV4dCA9PSAnJykgPyAnJyA6ICcsICc7IGlmIChjaGlsZHJlbnMgPT0gMCkgeyBjYXRlZ29yaWVzVGV4dCArPSAnPHN0cm9uZz4nOyB9IGNhdGVnb3JpZXNUZXh0ICs9IHRleHQ7IGlmIChjaGlsZHJlbnMgPT0gMCkgeyBjYXRlZ29yaWVzVGV4dCArPSAnPC9zdHJvbmc+JzsgfSB9KTsgfSByZXR1cm4gY2F0ZWdvcmllc1RleHQ7IH07IHRoaXMuZ2V0SXRlbXNIVE1MID0gZnVuY3Rpb24gKHBjYXRlZ29yaWVzLCBzaG93Q2hlY2tib3hlcywgc2VsZWN0ZWRDYXRlZ29yaWVzSWRzLCBzZWFyY2hUZXh0KSB7IHZhciBpdGVtc0hUTUwgPSAnJzsgZm9yICh2YXIgaSA9IDA7IGkgPCBwY2F0ZWdvcmllcy5sZW5ndGg7IGkrKykgeyB2YXIgcGNhdGVnb3J5ID0gcGNhdGVnb3JpZXNbaV07IHZhciBoYXZlQ2hpbGRyZW5zID0gKHBjYXRlZ29yeS5jaGlsZGNhdHMgJiYgcGNhdGVnb3J5LmNoaWxkY2F0cy5sZW5ndGgpOyB2YXIgaXRlbUhUTUwgPSAnJzsgdmFyIGl0ZW1DbGFzcyA9ICcnOyB2YXIgc2hvd0NoZWNrYm94ID0gIShwY2F0ZWdvcnkuY2hpbGRyZW4gPiAwICYmICFzaG93Q2hlY2tib3hlcyk7IGlmIChwY2F0ZWdvcnkuY2hpbGRyZW4gPiAwKSB7IGl0ZW1DbGFzcyArPSAoaXRlbUNsYXNzID09ICcnKSA\/ICcnIDogJyAnOyBpdGVtQ2xhc3MgKz0gJ3BhcmVudCc7IH0gaWYgKGhhdmVDaGlsZHJlbnMpIHsgaXRlbUNsYXNzICs9IChpdGVtQ2xhc3MgPT0gJycpID8gJycgOiAnICc7IGl0ZW1DbGFzcyArPSAnb3Blbic7IH0gaXRlbUhUTUwgKz0gJzxsaScgKyAoKGl0ZW1DbGFzcyA9PSAnJykgPyAnJyA6ICcgY2xhc3M9IicgKyBpdGVtQ2xhc3MgKyAnIicpICsgJz4nOyBpdGVtSFRNTCArPSAnPGEgaHJlZj0iamF2YXNjcmlwdDo7IiBkYXRhLXBhcmVudD0iJyArIHBjYXRlZ29yeS5wYXJlbnQgKyAnIiBkYXRhLWlkPSInICsgcGNhdGVnb3J5LmlkICsgJyIgZGF0YS1jaGlsZD0iJyArIHBjYXRlZ29yeS5jaGlsZHJlbiArICciPic7IGlmIChwY2F0ZWdvcnkuY2hpbGRyZW4gPiAwKSB7IGl0ZW1IVE1MICs9ICc8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1wbHVzIj48L3NwYW4+JzsgaXRlbUhUTUwgKz0gJzxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLW1pbnVzIj48L3NwYW4+JzsgfSBlbHNlIHsgaWYgKCFzaG93Q2hlY2tib3gpIHsgaXRlbUhUTUwgKz0gJzxzcGFuIGNsYXNzPSJnbHlwaGljb24gZ2x5cGhpY29uLWVtcHR5Ij48L3NwYW4+JzsgfSB9IGlmIChzaG93Q2hlY2tib3gpIHsgdmFyIGNoZWNrZWQgPSAoc2VsZWN0ZWRDYXRlZ29yaWVzSWRzICYmIChqUXVlcnkuaW5BcnJheShwY2F0ZWdvcnkuaWQsIHNlbGVjdGVkQ2F0ZWdvcmllc0lkcykgIT0gLTEpKTsgaXRlbUhUTUwgKz0gJzxpbnB1dCcgKyAoY2hlY2tlZCA\/ICcgY2hlY2tlZD0iY2hlY2tlZCInIDogJycpICsgJyB0eXBlPSJjaGVja2JveCIgdmFsdWU9IicgKyBwY2F0ZWdvcnkuaWQgKyAnIiAvPic7IH0gdmFyIG5hbWUgPSBwY2F0ZWdvcnkubmFtZTsgaWYgKHNlYXJjaFRleHQpIHsgc2VhcmNoVGV4dCA9IChzZWFyY2hUZXh0ICsgJycpLnJlcGxhY2UoLyhbXFxcLlwrXCpcP1xbXF5cXVwkXChcKVx7XH1cPVwhXDxcPlx8XDpdKS9nLCAiXFwkMSIpOyBuYW1lID0gbmFtZS5yZXBsYWNlKG5ldyBSZWdFeHAoIigiICsgc2VhcmNoVGV4dCArICIpIiwgJ2dpJyksICI8Yj4kMTwvYj4iKTsgfSBpdGVtSFRNTCArPSAnPHNwYW4gY2xhc3M9InRleHQiPicgKyBuYW1lICsgJzwvc3Bhbj4nOyBpdGVtSFRNTCArPSAnPC9hPic7IGlmIChoYXZlQ2hpbGRyZW5zKSB7IGl0ZW1IVE1MICs9ICc8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUgaW5uZXIiPic7IGl0ZW1IVE1MICs9IGRjb3JlY25nLmNhdGVnb3JpZXNEcm9wZG93bi5nZXRJdGVtc0hUTUwocGNhdGVnb3J5LmNoaWxkY2F0cywgc2hvd0NoZWNrYm94ZXMsIHNlbGVjdGVkQ2F0ZWdvcmllc0lkcywgc2VhcmNoVGV4dCk7IGl0ZW1IVE1MICs9ICc8L3VsPic7IH0gaXRlbUhUTUwgKz0gJzwvbGk+JzsgaXRlbXNIVE1MICs9IGl0ZW1IVE1MOyB9IHJldHVybiBpdGVtc0hUTUw7IH07IH07IGRjb3JlY25nLmNhdGVnb3JpZXNEcm9wZG93biA9IG5ldyBDYXRlZ29yaWVzRHJvcGRvd247ICQoJ0JPRFknKS5vbignY2xpY2snLCAnLnNlbGVjdC10cmVlIGxpIGEgc3BhbicsIGZ1bmN0aW9uIChlKSB7IHZhciBzcGFuID0gJCh0aGlzKTsgdmFyIGEgPSBzcGFuLnBhcmVudCgnYScpOyB2YXIgbGkgPSBhLnBhcmVudCgnbGknKTsgdmFyIHByb2R1Y3RDYXRlZ29yeUlkID0gYS5hdHRyKCdkYXRhLWlkJyk7IHZhciBjaGlsZHJlbiA9IHBhcnNlSW50KGEuYXR0cignZGF0YS1jaGlsZCcpKTsgdmFyIHByb2R1Y3RJdGVtID0gbGkucGFyZW50cygnLnByb2R1Y3QtaXRlbScpOyB2YXIgd3JhcHBlciA9ICQodGhpcykucGFyZW50cygnLmJ0bi1ncm91cC1zZWFyY2g6Zmlyc3QnKTsgaWYgKGNoaWxkcmVuID09IDApIHsgJCgnW3R5cGU9ImNoZWNrYm94Il0nLCBsaSkuY2xpY2soKTsgcmV0dXJuIGZhbHNlOyB9IHZhciBzdWJVbCA9ICQoJ3VsJywgbGkpOyBpZiAoc3ViVWwubGVuZ3RoKSB7IGxpLnRvZ2dsZUNsYXNzKCdvcGVuJyk7IHJldHVybiBmYWxzZTsgfSBlbHNlIHsgbGkuYXBwZW5kKCc8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUgaW5uZXIiPjwvdWw+Jyk7IGxpLmFkZENsYXNzKCdvcGVuJyk7IHN1YlVsID0gJCgndWwnLCBsaSk7IH0gaWYgKGNoaWxkcmVuID4gMCkgeyB2YXIgdXJsID0gJy9hcGl2Mi9wY2F0ZWdvcmllcy8nOyB2YXIgZGF0YSA9IHt9OyB2YXIgaW5wdXQgPSAkKCdpbnB1dC50eXBlYWhlYWQtYXBpJywgd3JhcHBlcik7IHZhciBwYXJhbXMgPSBpbnB1dC5hdHRyKCdkYXRhLXBhcmFtcycpOyBpZiAocGFyYW1zKSB7IHZhciBwYXJhbXNBcnJheSA9IHBhcmFtcy5zcGxpdCgnJicpOyBmb3IgKHZhciBpID0gMDsgaSA8IHBhcmFtc0FycmF5Lmxlbmd0aDsgaSsrKSB7IHZhciBwYXJhbUFycmF5ID0gcGFyYW1zQXJyYXlbaV0uc3BsaXQoJz0nKTsgdmFyIHBhcmFtID0gcGFyYW1BcnJheVswXTsgdmFyIHZhbCA9IHBhcmFtQXJyYXlbMV07IGlmIChwYXJhbSA9PSAncGFyZW50JykgeyB2YWwgPSBwcm9kdWN0Q2F0ZWdvcnlJZDsgfSBkYXRhW3BhcmFtXSA9IHZhbDsgfSB9IHZhciBzaG93Q2hlY2tib3hlcyA9IChpbnB1dC5hdHRyKCdkYXRhLWNoZWNrYm94ZXMnKSA9PSAnMScpOyBzdWJVbC5odG1sKCc8bGkgY2xhc3M9ImxvYWRpbmciPjwvbGk+Jyk7IHZhciBidG5UZXh0T2JqID0gJCgnLmJ0biAudGV4dCcsIHdyYXBwZXIpOyBpZihidG5UZXh0T2JqLmxlbmd0aCkgeyB2YXIgc2VsZWN0ZWRDYXRlZ29yaWVzSWRzU3RyID0gYnRuVGV4dE9iai5hdHRyKCdkYXRhLWlkcycpOyB9IGVsc2UgeyB2YXIgc2VsZWN0ZWRDYXRlZ29yaWVzSWRzU3RyID0gaW5wdXQuYXR0cignZGF0YS1pZHMnKTsgfSB2YXIgc2VsZWN0ZWRDYXRlZ29yaWVzSWRzID0gW107IGlmIChzZWxlY3RlZENhdGVnb3JpZXNJZHNTdHIpIHsgc2VsZWN0ZWRDYXRlZ29yaWVzSWRzID0gc2VsZWN0ZWRDYXRlZ29yaWVzSWRzU3RyLnNwbGl0KCcsJykgfSBBcGkuZ2V0KHVybCwgZGF0YSwgZnVuY3Rpb24gKHJlc3BvbnNlKSB7IGlmIChyZXNwb25zZS50b3RhbENvdW50ID4gMCkgeyBpZiAocmVzcG9uc2UucGNhdGVnb3JpZXMpIHsgdmFyIGl0ZW1zSFRNTCA9ICcnOyB2YXIgc2VhcmNoVGV4dCA9IGZhbHNlOyBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3BvbnNlLnBjYXRlZ29yaWVzLmxlbmd0aDsgaSsrKSB7IHZhciBwY2F0ZWdvcnkgPSByZXNwb25zZS5wY2F0ZWdvcmllc1tpXTsgdmFyIGl0ZW1IVE1MID0gJyc7IHZhciBpdGVtQ2xhc3MgPSAnJzsgdmFyIHNob3dDaGVja2JveCA9ICEocGNhdGVnb3J5LmNoaWxkcmVuID4gMCAmJiAhc2hvd0NoZWNrYm94ZXMpOyBpZiAocGNhdGVnb3J5LmNoaWxkcmVuID4gMCkgeyBpdGVtQ2xhc3MgKz0gKGl0ZW1DbGFzcyA9PSAnJykgPyAnJyA6ICcgJzsgaXRlbUNsYXNzICs9ICdwYXJlbnQnOyB9IGl0ZW1IVE1MICs9ICc8bGknICsgKChpdGVtQ2xhc3MgPT0gJycpID8gJycgOiAnIGNsYXNzPSInICsgaXRlbUNsYXNzICsgJyInKSArICc+JzsgaXRlbUhUTUwgKz0gJzxhIGhyZWY9ImphdmFzY3JpcHQ6OyIgZGF0YS1wYXJlbnQ9IicgKyBwY2F0ZWdvcnkucGFyZW50ICsgJyIgZGF0YS1pZD0iJyArIHBjYXRlZ29yeS5pZCArICciIGRhdGEtY2hpbGQ9IicgKyBwY2F0ZWdvcnkuY2hpbGRyZW4gKyAnIj4nOyBpZiAocGNhdGVnb3J5LmNoaWxkcmVuID4gMCkgeyBpdGVtSFRNTCArPSAnPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcGx1cyI+PC9zcGFuPic7IGl0ZW1IVE1MICs9ICc8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1taW51cyI+PC9zcGFuPic7IH0gZWxzZSB7IGlmICghc2hvd0NoZWNrYm94KSB7IGl0ZW1IVE1MICs9ICc8c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1lbXB0eSI+PC9zcGFuPic7IH0gfSBpZiAoc2hvd0NoZWNrYm94KSB7IHZhciBjaGVja2VkID0gKCBzZWxlY3RlZENhdGVnb3JpZXNJZHMgJiYgKGpRdWVyeS5pbkFycmF5KHBjYXRlZ29yeS5pZCwgc2VsZWN0ZWRDYXRlZ29yaWVzSWRzKSAhPSAtMSkgKTsgaXRlbUhUTUwgKz0gJzxpbnB1dCcgKyAoY2hlY2tlZCA\/ICcgY2hlY2tlZD0iY2hlY2tlZCInIDogJycpICsgJyB0eXBlPSJjaGVja2JveCIgdmFsdWU9IicgKyBwY2F0ZWdvcnkuaWQgKyAnIiAvPic7IH0gdmFyIG5hbWUgPSBwY2F0ZWdvcnkubmFtZTsgaWYgKHNlYXJjaFRleHQpIHsgc2VhcmNoVGV4dCA9IChzZWFyY2hUZXh0ICsgJycpLiByZXBsYWNlKC8oW1xcXC5cK1wqXD9cW1xeXF1cJFwoXClce1x9XD1cIVw8XD5cfFw6XSkvZywgIlxcJDEiKTsgbmFtZSA9IG5hbWUucmVwbGFjZShuZXcgUmVnRXhwKCIoIiArIHNlYXJjaFRleHQgKyAiKSIsICdnaScpLCAiPGI+JDE8L2I+Iik7IH0gaXRlbUhUTUwgKz0gJzxzcGFuIGNsYXNzPSJ0ZXh0Ij4nICsgbmFtZSArICc8L3NwYW4+JzsgaXRlbUhUTUwgKz0gJzwvYT4nOyBpdGVtSFRNTCArPSAnPC9saT4nOyBpdGVtc0hUTUwgKz0gaXRlbUhUTUw7IH0gc3ViVWwuaHRtbChpdGVtc0hUTUwpOyB9IH0gZWxzZSB7IHN1YlVsLmh0bWwoICI8bGkgY2xhc3M9XCJuby1yZXN1bHRzXCI+IiArICI8YT7QndC40YfQtdCz0L4g0L3QtSDQvdCw0LnQtNC10L3QvjwvYT4iICsgIjwvbGk+IiApOyB9IH0pOyB9IGUucHJldmVudERlZmF1bHQoKTsgfSk7ICQoJ0JPRFknKS5vbignY2xpY2snLCAnLnNlbGVjdC10cmVlIFt0eXBlPSJjaGVja2JveCJdJywgZnVuY3Rpb24gKGUpIHsgdmFyIGN1cnJlbnRDYXRlZ29yeUlkID0gJCh0aGlzKS52YWwoKTsgdmFyIGN1cnJlbnRDYXRlZ29yeVRpdGxlID0gJCh0aGlzKS5uZXh0KCcudGV4dCcpLnRleHQoKTsgdmFyIGEgPSAkKHRoaXMpLnBhcmVudHMoJ2E6Zmlyc3QnKTsgdmFyIHdyYXBwZXIgPSAkKHRoaXMpLnBhcmVudHMoJy5idG4tZ3JvdXAtc2VhcmNoOmZpcnN0Jyk7IHZhciBwcm9kdWN0V3JhcHBlciA9ICQodGhpcykucGFyZW50cygnLnByb2R1Y3QtaXRlbTpmaXJzdCcpOyBpZiAocHJvZHVjdFdyYXBwZXIubGVuZ3RoKSB7IHZhciBwcm9kdWN0SW5kZXggPSBwcm9kdWN0V3JhcHBlci5hdHRyKCdkYXRhLXByb2R1Y3QnKTsgfSBlbHNlIHsgdmFyIHByb2R1Y3RJbmRleCA9IDA7IH0gaWYgKCQodGhpcykuaXMoJzpjaGVja2VkJykpIHsgJCh3cmFwcGVyKS5hcHBlbmQoJzxpbnB1dCBkYXRhLWNoaWxkPSInICsgYS5hdHRyKCdkYXRhLWNoaWxkJykgKyAnIiBkYXRhLXRpdGxlPSInICsgY3VycmVudENhdGVnb3J5VGl0bGUgKyAnIiB0eXBlPSJoaWRkZW4iIHZhbHVlPSInICsgY3VycmVudENhdGVnb3J5SWQgKyAnIiBuYW1lPSJwcm9kdWN0c1snICsgcHJvZHVjdEluZGV4ICsgJ11bcHJvZHVjdGNhdGVnb3JpZXNdWycgKyBjdXJyZW50Q2F0ZWdvcnlJZCArICddIj4nKTsgJCgnLmRyb3Bkb3duLW1lbnUtcmVtb3ZhYmxlJywgd3JhcHBlcikuYXBwZW5kKCc8c3BhbiBjbGFzcz0icmVtb3ZhYmxlLWl0ZW0iIGRhdGEtaWQ9IicgKyBjdXJyZW50Q2F0ZWdvcnlJZCArICciPicgKyBjdXJyZW50Q2F0ZWdvcnlUaXRsZSArICcgPHNwYW4gY2xhc3M9ImdseXBoaWNvbiBnbHlwaGljb24tcmVtb3ZlIiAnICsgJ3RpdGxlPSLQo9C00LDQu9C40YLRjCI+PC9zcGFuPjwvc3Bhbj4nKTsgfSBlbHNlIHsgJCgnW25hbWU9InByb2R1Y3RzWycgKyBwcm9kdWN0SW5kZXggKyAnXVtwcm9kdWN0Y2F0ZWdvcmllc11bJyArIGN1cnJlbnRDYXRlZ29yeUlkICsgJ10iXScpLnJlbW92ZSgpOyAkKCcuZHJvcGRvd24tbWVudS1yZW1vdmFibGUgLnJlbW92YWJsZS1pdGVtW2RhdGEtaWQ9IicgKyBjdXJyZW50Q2F0ZWdvcnlJZCArICciXScpLnJlbW92ZSgpOyB9IHZhciBjYXRlZ29yaWVzSWRzID0gZGNvcmVjbmcuY2F0ZWdvcmllc0Ryb3Bkb3duLmdldENhdGVnb3JpZXNJZHNTdHIod3JhcHBlciwgcHJvZHVjdEluZGV4KTsgdmFyIGNhdGVnb3JpZXNUZXh0ID0gZGNvcmVjbmcuY2F0ZWdvcmllc0Ryb3Bkb3duLmdldENhdGVnb3JpZXNUZXh0KHdyYXBwZXIsIHByb2R1Y3RJbmRleCk7IHZhciBidG5UZXh0T2JqID0gJCgnLmJ0biAudGV4dCcsIHdyYXBwZXIpOyB2YXIgaW5wdXQgPSAkKCcudHlwZWFoZWFkLWFwaScsIHdyYXBwZXIpOyBpZiAoY2F0ZWdvcmllc1RleHQgPT0gJycpIHsgYnRuVGV4dE9iai50ZXh0KGJ0blRleHRPYmouYXR0cignZGF0YS10ZXh0JykpOyB9IGVsc2UgeyBpZiAoIWJ0blRleHRPYmouYXR0cignZGF0YS10ZXh0JykpIHsgYnRuVGV4dE9iai5hdHRyKCdkYXRhLXRleHQnLCBidG5UZXh0T2JqLnRleHQoKSk7IH0gYnRuVGV4dE9iai5odG1sKGNhdGVnb3JpZXNUZXh0KTsgfSBidG5UZXh0T2JqLmF0dHIoJ2RhdGEtaWRzJywgY2F0ZWdvcmllc0lkcyk7IGlucHV0LmF0dHIoJ2RhdGEtaWRzJywgY2F0ZWdvcmllc0lkcyk7IHZhciBvcGVuVHJlZSA9IGZhbHNlOyB2YXIgbGkgPSAkKHRoaXMpLnBhcmVudHMoJ2xpOmZpcnN0Jyk7IGlmIChsaS5oYXNDbGFzcygncGFyZW50JykgJiYgIWxpLmhhc0NsYXNzKCdvcGVuJykpIHsgb3BlblRyZWUgPSB0cnVlOyB9IGlmIChvcGVuVHJlZSkgeyAkKCdzcGFuJywgYSkuY2xpY2soKTsgfSBlLnN0b3BQcm9wYWdhdGlvbigpOyB9KTsgJCgnQk9EWScpLm9uKCdjbGljaycsICcuYnRuLXNlYXJjaC1jYXRlZ29yaWVzIC5yZW1vdmFibGUtaXRlbScsIGZ1bmN0aW9uIChlKSB7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IH0pOyAkKCdCT0RZJykub24oJ2NsaWNrJywgJy5idG4tc2VhcmNoLWNhdGVnb3JpZXMgLnJlbW92YWJsZS1pdGVtIC5nbHlwaGljb24nLCBmdW5jdGlvbiAoZSkgeyB2YXIgcmVtb3ZhYmxlID0gJCh0aGlzKS5wYXJlbnRzKCcucmVtb3ZhYmxlLWl0ZW0nKTsgdmFyIHdyYXBwZXIgPSAkKHRoaXMpLnBhcmVudHMoJy5idG4tZ3JvdXAtc2VhcmNoJyk7IHZhciBwcm9kdWN0V3JhcHBlciA9ICQodGhpcykucGFyZW50cygnLnByb2R1Y3QtaXRlbTpmaXJzdCcpOyBpZiAocHJvZHVjdFdyYXBwZXIubGVuZ3RoKSB7IHZhciBwcm9kdWN0SW5kZXggPSBwcm9kdWN0V3JhcHBlci5hdHRyKCdkYXRhLXByb2R1Y3QnKTsgfSBlbHNlIHsgdmFyIHByb2R1Y3RJbmRleCA9IDA7IH0gdmFyIGNhdGVnb3J5SWQgPSByZW1vdmFibGUuYXR0cignZGF0YS1pZCcpOyB2YXIgY2hlY2tib3ggPSAkKCcuZHJvcGRvd24tbWVudS5pbm5lciBbdHlwZT0iY2hlY2tib3giXVt2YWx1ZT0iJyArIGNhdGVnb3J5SWQgKyAnIl0nLCB3cmFwcGVyKTsgaWYgKGNoZWNrYm94Lmxlbmd0aCkgeyBjaGVja2JveC5wcm9wKCdjaGVja2VkJywgZmFsc2UpOyB9IGVsc2UgeyB9IHZhciBjYXRlZ29yaWVzSW5wdXRzID0gJCgnW25hbWVePSJwcm9kdWN0c1snICsgcHJvZHVjdEluZGV4ICsgJ11bcHJvZHVjdGNhdGVnb3JpZXNdWycgKyBjYXRlZ29yeUlkICsgJ10iXScpOyBjYXRlZ29yaWVzSW5wdXRzLnJlbW92ZSgpOyByZW1vdmFibGUucmVtb3ZlKCk7IHZhciBjYXRlZ29yaWVzSWRzID0gZGNvcmVjbmcuY2F0ZWdvcmllc0Ryb3Bkb3duLmdldENhdGVnb3JpZXNJZHNTdHIod3JhcHBlciwgcHJvZHVjdEluZGV4KTsgdmFyIGNhdGVnb3JpZXNUZXh0ID0gZGNvcmVjbmcuY2F0ZWdvcmllc0Ryb3Bkb3duLmdldENhdGVnb3JpZXNUZXh0KHdyYXBwZXIsIHByb2R1Y3RJbmRleCk7IHZhciBidG5UZXh0T2JqID0gJCgnLmJ0biAudGV4dCcsIHdyYXBwZXIpOyBpZiAoY2F0ZWdvcmllc1RleHQgPT0gJycpIHsgYnRuVGV4dE9iai50ZXh0KGJ0blRleHRPYmouYXR0cignZGF0YS10ZXh0JykpOyB9IGVsc2UgeyBpZiAoIWJ0blRleHRPYmouYXR0cignZGF0YS10ZXh0JykpIHsgYnRuVGV4dE9iai5hdHRyKCdkYXRhLXRleHQnLCBidG5UZXh0T2JqLnRleHQoKSk7IH0gYnRuVGV4dE9iai5odG1sKGNhdGVnb3JpZXNUZXh0KTsgfSBidG5UZXh0T2JqLmF0dHIoJ2RhdGEtaWRzJywgY2F0ZWdvcmllc0lkcyk7IGUuc3RvcFByb3BhZ2F0aW9uKCk7IH0pOyAkKCdCT0RZJykub24oJ2NsaWNrJywgJy5idG4tZ3JvdXAtc2VhcmNoIC5idG4tZmlsdGVyLWRpc2NvdW50cy1hcHBseScsIGZ1bmN0aW9uIChlKSB7IGlmICgkKHRoaXMpLmF0dHIoJ2RhdGEtY2F0c2x1ZycpKSB7IHZhciBwYXRobmFtZSA9IGxvY2F0aW9uLnBhdGhuYW1lOyBwYXRobmFtZSA9IHBhdGhuYW1lLnJlcGxhY2UoJy8nICsgJCh0aGlzKS5hdHRyKCdkYXRhLWNhdHNsdWcnKSArICcvJywgJy8nKTsgfSBlbHNlIHsgdmFyIHBhdGhuYW1lID0gbG9jYXRpb24ucGF0aG5hbWU7IH0gdmFyIGN1cnJlbnRVcmwgPSBsb2NhdGlvbi5wcm90b2NvbCArICcvJyArICcvJyArIGxvY2F0aW9uLmhvc3QgKyBwYXRobmFtZTsgdmFyIHBhcmFtcyA9ICcnOyBpZiAoZGNvcmVjbmcub3JpZ2luYWxTdGF0ZS5pbmRleE9mKCc\/JykgIT0gLTEpIHsgdmFyIHJlcXVlc3QgPSB7fTsgdmFyIHBhaXJzID0gZGNvcmVjbmcub3JpZ2luYWxTdGF0ZS5zdWJzdHJpbmcoZGNvcmVjbmcub3JpZ2luYWxTdGF0ZS5pbmRleE9mKCc\/JykgKyAxKS5zcGxpdCgnJicpOyBmb3IgKHZhciBpID0gMDsgaSA8IHBhaXJzLmxlbmd0aDsgaSsrKSB7IGlmICghcGFpcnNbaV0pIGNvbnRpbnVlOyB2YXIgcGFpciA9IHBhaXJzW2ldLnNwbGl0KCc9Jyk7IHJlcXVlc3RbZGVjb2RlVVJJQ29tcG9uZW50KHBhaXJbMF0pXSA9IGRlY29kZVVSSUNvbXBvbmVudChwYWlyWzFdKTsgfSBkZWxldGUgcmVxdWVzdFsnY2lkcyddOyBkZWxldGUgcmVxdWVzdFsnc2hvdyddOyBmb3IgKHZhciBrZXkgaW4gcmVxdWVzdCkgeyBwYXJhbXMgKz0gKHBhcmFtcyA9PSAnJykgPyAnJyA6ICcmJzsgcGFyYW1zICs9IGVuY29kZVVSSUNvbXBvbmVudChrZXkpOyBpZiAocmVxdWVzdFtrZXldICE9ICd1bmRlZmluZWQnKSB7IHBhcmFtcyArPSAnPScgKyBlbmNvZGVVUklDb21wb25lbnQocmVxdWVzdFtrZXldKTsgfSB9IH0gdmFyIGNhdGVnb3JpZXNJbnB1dHMgPSAkKCdbbmFtZV49InByb2R1Y3RzWzBdW3Byb2R1Y3RjYXRlZ29yaWVzXSJdJyk7IHZhciBjYXRlZ29yaWVzSWRzID0gJyc7IGlmIChjYXRlZ29yaWVzSW5wdXRzLmxlbmd0aCkgeyB2YXIgY2F0ZWdvcnlJZHNBcnJheSA9IFtdOyBjYXRlZ29yaWVzSW5wdXRzLmVhY2goZnVuY3Rpb24gKCkgeyBpZiAoJC5pbkFycmF5KCQodGhpcykudmFsKCksIGNhdGVnb3J5SWRzQXJyYXkpID09PSAtMSkgY2F0ZWdvcnlJZHNBcnJheS5wdXNoKCQodGhpcykudmFsKCkpOyB9KTsgJChjYXRlZ29yeUlkc0FycmF5KS5lYWNoKGZ1bmN0aW9uIChpLCBlbCkgeyBjYXRlZ29yaWVzSWRzICs9IChjYXRlZ29yaWVzSWRzID09ICcnKSA\/ICcnIDogJywnOyBjYXRlZ29yaWVzSWRzICs9IGVsOyB9KTsgfSBpZiAoY2F0ZWdvcmllc0lkcyAhPSAnJykgeyBwYXJhbXMgKz0gKHBhcmFtcyA9PSAnJykgPyAnJyA6ICcmJzsgcGFyYW1zICs9ICdjaWRzPScgKyBjYXRlZ29yaWVzSWRzOyB9IHZhciB1cmwgPSBjdXJyZW50VXJsOyBpZiAocGFyYW1zICE9ICcnKSB7IHVybCArPSAnPycgKyBwYXJhbXM7IH0gd2luZG93LmxvY2F0aW9uID0gdXJsOyBlLnByZXZlbnREZWZhdWx0KCk7IH0pOyAkKCdCT0RZJykub24oJ2NsaWNrJywgJy5idG4tZ3JvdXAtc2VhcmNoIC5idG4tZmlsdGVyLWRpc2NvdW50cy1jbGVhcicsIGZ1bmN0aW9uIChlKSB7IHZhciBjYXRlZ29yaWVzSW5wdXRzID0gJCgnW25hbWVePSJwcm9kdWN0c1swXVtwcm9kdWN0Y2F0ZWdvcmllc10iXScpOyBjYXRlZ29yaWVzSW5wdXRzLnJlbW92ZSgpOyB2YXIgY3VycmVudFVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpOyBjdXJyZW50VXJsLnNlYXJjaFBhcmFtcy5kZWxldGUoJ2NpZHMnKTsgY3VycmVudFVybC5zZWFyY2hQYXJhbXMuZGVsZXRlKCdzaG93Jyk7IGlmICgkKHRoaXMpLmF0dHIoJ2RhdGEtY2F0c2x1ZycpKSB7IHZhciBwYXRobmFtZSA9IGN1cnJlbnRVcmwucGF0aG5hbWU7IHBhdGhuYW1lID0gcGF0aG5hbWUucmVwbGFjZSgnLycgKyAkKHRoaXMpLmF0dHIoJ2RhdGEtY2F0c2x1ZycpICsgJy8nLCAnLycpOyBjdXJyZW50VXJsLnBhdGhuYW1lID0gcGF0aG5hbWU7IH0gZWxzZSB7IH0gY3VycmVudFVybC5oYXNoID0gJyc7IHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gY3VycmVudFVybC50b1N0cmluZygpOyBlLnByZXZlbnREZWZhdWx0KCk7IH0pOyB9KShqUXVlcnkpOyA=");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("KGZ1bmN0aW9uICgkKXt2YXIgeGhyOyQoJ0JPRFknKS5vbigna2V5dXAgY3V0IHBhc3RlIGlucHV0JywgJy5zZWFyY2ggaW5wdXRbdHlwZT0ic2VhcmNoIl0nLCBmdW5jdGlvbiAoJGUpe3ZhciBzcGVjaWFsS2V5Q29kZU1hcCA9IHs5OiAidGFiIiwyNzogImVzYyIsMzc6ICJsZWZ0IiwzOTogInJpZ2h0IiwzODogInVwIiw0MDogImRvd24iLDE2OiAic2hpZnQiLDE3OiAiY3RybCIsMTg6ICJhbHQifTtpZiAoc3BlY2lhbEtleUNvZGVNYXBbJGUud2hpY2ggfHwgJGUua2V5Q29kZV0pe3JldHVybjt9dmFyIGlucHV0ID0gJCh0aGlzKSxzZWFyY2hDb250YWluZXIgPSAkKHRoaXMpLnBhcmVudHMoJy5zZWFyY2g6Zmlyc3QnKSxyZXN1bHRzQ29udGFpbmVyID0gJCgnLmRyb3Bkb3duLW1lbnUnLHNlYXJjaENvbnRhaW5lciksc2VhcmNoVmFsID0gaW5wdXQudmFsKCkscHJldlNlYXJjaFZhbCA9ICQoJy5kaXNjb3VudHMnKS5hdHRyKCdkYXRhLXMnKTtpZiAoc2VhcmNoVmFsICE9PSAnJyl7dmFyIGVudGVyQ29kZU1hcCA9IHsxMzogImVudGVyIix9O2lmIChlbnRlckNvZGVNYXBbJGUud2hpY2ggfHwgJGUua2V5Q29kZV0pe2lmICh4aHIpeGhyLmFib3J0KCk7dmFyIHVybFRvUmVkaXJlY3QgPSBkY29yZWNuZy5hcHUod2luZG93LmxvY2F0aW9uLmhyZWYsICdzaG93JywgJycpO3VybFRvUmVkaXJlY3QgPSBkY29yZWNuZy5hcHUodXJsVG9SZWRpcmVjdCwgJ2NpZHMnLCAnJyk7dXJsVG9SZWRpcmVjdCA9IGRjb3JlY25nLmFwdSh1cmxUb1JlZGlyZWN0LCAnYnJhbmRfaWQnLCAnJyk7d2luZG93LmxvY2F0aW9uID0gZGNvcmVjbmcuYXB1KHVybFRvUmVkaXJlY3QsICdzJywgJCh0aGlzKS52YWwoKSk7fX1pZiAoIXJlc3VsdHNDb250YWluZXIubGVuZ3RoKXskKHNlYXJjaENvbnRhaW5lcikuYXBwZW5kKCc8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IG11bHRpLXNlYXJjaC1jb250YWluZXIiPjwvZGl2PicpO3Jlc3VsdHNDb250YWluZXIgPSAkKCcuZHJvcGRvd24tbWVudScsc2VhcmNoQ29udGFpbmVyKTt9aWYgKHhocil4aHIuYWJvcnQoKTtpZiAoc2VhcmNoVmFsID09PSAnJyAmJiBwcmV2U2VhcmNoVmFsID09PSAnJyl7c2VhcmNoQ29udGFpbmVyLnJlbW92ZUNsYXNzKCdvcGVuJyk7cmV0dXJuO31pZiAoc2VhcmNoVmFsID09PSAnJyAmJiBwcmV2U2VhcmNoVmFsICE9PSAnJyl7c2VhcmNoQ29udGFpbmVyLnJlbW92ZUNsYXNzKCdvcGVuJyk7JCgnLmRpc2NvdW50cycpLmF0dHIoJ2RhdGEtcycsJycpO3ZhciBwYXJhbXMgPSBbXTtwYXJhbXNbJ3MnXSA9ICcnO2NoYW5nZUhpc3RvcnlTdGF0ZShwYXJhbXMpO3JlbG9hZFByb2R1Y3RzKCk7cmV0dXJuO312YXIgbWlubGVuZ3RoID0gaW5wdXQuYXR0cignZGF0YS1taW5sZW5naHQnKTtpZiAobWlubGVuZ3RoKXtpZiAoc2VhcmNoVmFsLmxlbmd0aCA+IDAgJiYgc2VhcmNoVmFsLmxlbmd0aCA8IG1pbmxlbmd0aCl7cmV0dXJuIHRydWU7fX12YXIgdCA9IHNldFRpbWVvdXQoZnVuY3Rpb24gKCl7aW5wdXQuYWRkQ2xhc3MoJ2xvYWRpbmcnKTt9LCAxMDApO3ZhciB1cmwgPSBkY29yZWNuZy53ZWJzaXRldXJsLnJlcGxhY2UoJ2FjY291bnQuJywgJycpKyBpbnB1dC5hdHRyKCdkYXRhLWFqYXgtdXJsJyk7dXJsICs9ICc\/bmFtZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHNlYXJjaFZhbCk7dmFyIGRpc2NvdW50cyA9ICQoJy5kaXNjb3VudHMnKTtpZiAoZGlzY291bnRzLmF0dHIoJ2RhdGEtY2l0eV9pZCcpKXt1cmwgKz0gJyZjaXR5X2lkPScgKyBkaXNjb3VudHMuYXR0cignZGF0YS1jaXR5X2lkJyk7fWlmIChkaXNjb3VudHMuYXR0cignZGF0YS1jYXRlZ29yeV9pZCcpKXt1cmwgKz0gJyZjYXRlZ29yeV9pZD0nICsgZGlzY291bnRzLmF0dHIoJ2RhdGEtY2F0ZWdvcnlfaWQnKTt9aWYgKGRpc2NvdW50cy5hdHRyKCdkYXRhLXNob3BfaWQnKSl7dXJsICs9ICcmc2hvcF9pZD0nICsgZGlzY291bnRzLmF0dHIoJ2RhdGEtc2hvcF9pZCcpO31pZiAoZGlzY291bnRzLmF0dHIoJ2RhdGEtZGlzY291bnRfaWQnKSl7dXJsICs9ICcmZGlzY291bnRfaWQ9JyArIGRpc2NvdW50cy5hdHRyKCdkYXRhLWRpc2NvdW50X2lkJyk7fWlmIChkaXNjb3VudHMuYXR0cignZGF0YS1kYXRlJykpe3VybCArPSAnJmRhdGU9JyArIGRpc2NvdW50cy5hdHRyKCdkYXRhLWRhdGUnKTt9aWYgKGRpc2NvdW50cy5hdHRyKCdkYXRhLXRpbWUnKSl7dXJsICs9ICcmdGltZT0nICsgZGlzY291bnRzLmF0dHIoJ2RhdGEtdGltZScpO311cmwgKz0gJyZpc19hamF4PTEnO3hociA9ICQuYWpheCh7dHlwZTogIkdFVCIseGhyRmllbGRzOiB7d2l0aENyZWRlbnRpYWxzOiB0cnVlfSxiZWZvcmVTZW5kOiBmdW5jdGlvbiAocmVxdWVzdCl7fSx1cmw6IHVybH0pLmRvbmUoZnVuY3Rpb24gKHJlc3BvbnNlKXtyZXN1bHRzQ29udGFpbmVyLmh0bWwocmVzcG9uc2UpO3NlYXJjaENvbnRhaW5lci5hZGRDbGFzcygnb3BlbicpO3ZhciB3aW5kb3dIZWlnaHQgPSAkKHdpbmRvdykuaGVpZ2h0KCk7dmFyIHN1Ym1lbnVIZWlnaHQgPSBNYXRoLnJvdW5kKHdpbmRvd0hlaWdodCAvIDIpO2lmIChzdWJtZW51SGVpZ2h0IDwgMTUwKXtzdWJtZW51SGVpZ2h0ID0gMTUwO31yZXN1bHRzQ29udGFpbmVyLmNzcygnbWF4LWhlaWdodCcsIHN1Ym1lbnVIZWlnaHQpO3Jlc3VsdHNDb250YWluZXIuY3NzKCdvdmVyZmxvdy14JywgJ2F1dG8nKTtjbGVhclRpbWVvdXQodCk7aW5wdXQucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTt9KTt9KTskKCdCT0RZJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCRlKXskKCcuc2VhcmNoLm9wZW4nKS5yZW1vdmVDbGFzcygnb3BlbicpO30pOyQoJ0JPRFknKS5vbignY2xpY2snLCAnLnNlYXJjaCcsIGZ1bmN0aW9uICgkZSl7JGUuc3RvcFByb3BhZ2F0aW9uKCk7fSk7fSkoalF1ZXJ5KTs=");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); eval((function(){var s=atob("dmFyIENvbnRlbnRMb2FkVmlhQWpheCA9IGZ1bmN0aW9uKCl7dmFyIHRoaXNDbGFzcyA9IHRoaXM7dGhpc0NsYXNzLnhocnMgPSBbXTt0aGlzQ2xhc3MubG9hZEFsbCA9IGZ1bmN0aW9uKGVsZW1lbnRzKXtlbGVtZW50cy5lYWNoKGZ1bmN0aW9uKGksZWwpe3RoaXNDbGFzcy5sb2FkSXRlbShpLCBlbCk7fSk7fTt0aGlzQ2xhc3MubG9hZEl0ZW0gPSBmdW5jdGlvbihpLCBlbCl7dmFyIHBhdGggPSAkKGVsKS5hdHRyKCdkYXRhLWx2YScpO3ZhciBwYXJhbXMgPSAkKGVsKS5hdHRyKCdkYXRhLWx2YXAnKTt2YXIgb2JqID0gZGNvcmVjbmcuZGVwYXJhbShwYXJhbXMpOyAkKGVsKS5hZGRDbGFzcygnbG9hZGVyLW1pbmktY2VudGVyJyk7dmFyIHhociA9IEFwaS5nZXQocGF0aCwgb2JqLCBmdW5jdGlvbihyZXNwb25zZSl7aWYgKHJlc3BvbnNlLnN1Y2Nlc3MpeyQoZWwpLmh0bWwocmVzcG9uc2UucmVzdWx0KTt9IGVsc2UgeyQoZWwpLmh0bWwocmVzcG9uc2UuZXJyb3JfZGVzY3JpcHRpb24pO30kKGVsKS5yZW1vdmVDbGFzcygnbG9hZGVyLW1pbmktY2VudGVyJyk7dGhpc0NsYXNzLnhocnNbaV0gPSBmYWxzZTskKGVsKS5hcHBlbmQoJyA8YSB0aXRsZT0i0J7QsdC90L7QstC40YLRjCIgY2xhc3M9Imx2YS1ycHYiIGRhdGEtdG9nZ2xlPSJ0b29sdGlwIj48c3BhbiBjbGFzcz0iZ2x5cGhpY29uIGdseXBoaWNvbi1yZWZyZXNoIj48L3NwYW4+PC9hPicpOyB9KTt0aGlzQ2xhc3MueGhyc1tpXSA9IHhocjt9O307dmFyIGx2YSA9IG5ldyBDb250ZW50TG9hZFZpYUFqYXgoKTtsdmEubG9hZEFsbCgkKCdbZGF0YS1sdmFdJykpOyQoJ0JPRFknKS5vbignY2xpY2snLCcubHZhLXJwdicsZnVuY3Rpb24oKXt2YXIgZWwgPSAkKHRoaXMpLnBhcmVudHMoJ1tkYXRhLWx2YV0nKTt2YXIgb2JqID0gZGNvcmVjbmcuZGVwYXJhbSgkKGVsKS5hdHRyKCdkYXRhLWx2YXAnKSk7IG9iai51YyA9IDE7ICQoZWwpLmF0dHIoJ2RhdGEtbHZhcCcsalF1ZXJ5LnBhcmFtKG9iaikpOyBsdmEubG9hZEl0ZW0oMCwgZWwpOyB9KTskKHdpbmRvdykub24oImJlZm9yZXVubG9hZCIsIGZ1bmN0aW9uKCl7Zm9yKCB2YXIgaSA9IDA7IGkgPCBsdmEueGhycy5sZW5ndGg7IGkrKyl7aWYgKGx2YS54aHJzW2ldKXtsdmEueGhyc1tpXS5hYm9ydCgpO319fSk7");try{return decodeURIComponent(escape(s));}catch(e){return s;}})()); /* уже не нужно, в фильтре заменил на ссылку. Нужно для админки, перенес в function initDatepicker() { $('.datepicker').datepicker({ format: dcorecng.datepickerFormat, language: 'ru', autoclose: true, todayHighlight: true }); $('.input-daterange input').each(function() { $('.input-daterange').datepicker({ format: dcorecng.datepickerFormat, language: 'ru', todayHighlight: true }); }); dcorecng.dpLoaded = true; // обозначает что datepicker загрузился, нужно в графике в админке } initDatepicker(); */ /* $('BODY').on('click', '#btn-discounts-date', function () { if ($('#form-control-discounts-date').val() != '') { //window.location = dcorecng.websiteurl + dcorecng.cityurl + $('#form-control-discounts-date').val() + '/'; var url = dcorecng.originalState; if (typeof dcorecng.discountsdate == 'undefined') { url = url.replace(dcorecng.cityurl, dcorecng.cityurl + $('#form-control-discounts-date').val() + '/'); } else { url = url.replace(dcorecng.discountsdate + '/', $('#form-control-discounts-date').val() + '/'); } // Удалить параметр time со ссылки url = dcorecng.rpu(url,'time'); window.location = url; } });*/ }); // Timepicker $.getScript("https://skidkaonline.ru/js/bootstrap-timepicker.js?t=t1570013906", function () { $('.timepicker').timepicker({ minuteStep: 5, showMeridian: false, showInputs: false, disableFocus: true }); }); }); dcorecng.loadAdsense(); // Загрузка табов аяксом с задержкой // Загружать только для экранов больше чем 960px if ($(window).width() > 950) { setTimeout(function () { $.ajax({ url: '/ajax/ajaxgetfixedtabshtml/', type: 'POST', data: {is_ajax: 1}, success: function (response) { $('BODY').append(response); // устанавливаем страницу теекущую в контактной форме $('[name="currentpage"]').val(window.location.href); // выбор времени $('.timepicker').timepicker({ minuteStep: 5, showMeridian: false, showInputs: false, disableFocus: true }); if (!$.cookie("subscribe_showed")) { if ($('.fixed-tabs').is(':visible') && $(".subscribe-form").length) { setTimeout(function () { //$(".fixed-tabs").css("left", "12px"); $(".fixed-tabs").css('transform', 'translateX(100px)'); if (!$(".subscribe-form").is(":visible")) { $(".fixed-tabs .subscribe .show-tab-link").click() } $.cookie("subscribe_showed", "1", { expires: 999, path: "/" }) }, 15e3) } } } }); }, 1000); } } /** * Функция, которая отслеживает клики по исходящим ссылк в Analytics. * Эта функция применяет в качестве аргумента строку с действительным URL, после чего использует ее * как ярлык события. Если указать beacon в качестве метода передачи, данные обращений * будут отправляться с использованием метода navigator.sendBeacon в поддерживающих его браузерах. */ var trackOutboundLink = function(url) { }, trackEvent = function(eventCategory, eventAction, value) { }, trackPageview = function(url,params){ params = typeof params !== 'undefined' ? params : {}; }; (function() { var script = document.createElement("script"); script.src = "https://skidkaonline.ru/js/jquery-3.5.1.js"; script.onload = script.onreadystatechange = startScripts; script.async = true; document.body.appendChild( script ); })();