Аудит

Данные на 15 февраля 2024

Добавить сайт в список

60

Показатели сайта

0
0
0
Узнайте больше об этом сайте
ИКС сайта 50
SSL-сертификат Есть SSL-сертификат

Содержимое

Заголовок (тег title) Как организовать хороший праздник и вечеринку, что подарить
Заголовок (тег h1) Все идеи подарков
Описание сайта (description) Как весело провести праздник? Поздравления, какие дарить подарки, сценарии праздников

Главная страница сайта

URL сайта https://fl-catering.ru/
Локализация сайта Альтернативных страниц нет
Кодировка страниц UTF-8
Тексты 50
HTML теги 566
a67 article7 aside1 body1 button2 comment2 div145 footer1 form1 h11 head1 header1 html1 img27 input1 label1 li8 link10 main1 meta176 nav2 p5 script20 span75 style6 title1 ul1 unknown1
Скрипты на сайте 16
Все скрипты:
/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js
data:text/javascript;base64,IWZ1bmN0aW9uKCl7dmFyIHQ9ITE7dHJ5e3ZhciBlPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwicGFzc2l2ZSIse2dldDpmdW5jdGlvbigpe3Q9ITB9fSk7d2luZG93LmFkZEV2ZW50TGlzdGVuZXIoInRlc3QiLG51bGwsZSl9Y2F0Y2godCl7fXJldHVybiB0fSgpfHxmdW5jdGlvbihpKXt2YXIgbz0hMCxzPSExO0V2ZW50VGFyZ2V0LnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyPWZ1bmN0aW9uKHQsZSxuKXt2YXIgcj0ib2JqZWN0Ij09dHlwZW9mIG4sYT1yP24uY2FwdHVyZTpuO249cj9uOnt9LCJ0b3VjaHN0YXJ0IiE9dCYmInNjcm9sbCIhPXQmJiJ3aGVlbCIhPXR8fChuLnBhc3NpdmU9dm9pZCAwIT09bi5wYXNzaXZlP24ucGFzc2l2ZTpvKSxuLmNhcHR1cmU9dm9pZCAwIT09YT9hOnMsaS5jYWxsKHRoaXMsdCxlLG4pfX0oRXZlbnRUYXJnZXQucHJvdG90eXBlLmFkZEV2ZW50TGlzdGVuZXIp
data:text/javascript;base64,Y29uc29sZS5sb2coJ2FkOiBudW4nKQ==
data:text/javascript;base64,Y29uc29sZS5sb2coJ3JlYm9vdCBhZDogb3B0aW9ucyBlcnJvcicp
data:text/javascript;base64,ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29weSIsKGV2ZW50KT0+e3ZhciBwYWdlbGluaz0iXG7QmNGB0YLQvtGH0L3QuNC6OiBodHRwczovL2ZsLWNhdGVyaW5nLnJ1IjtldmVudC5jbGlwYm9hcmREYXRhLnNldERhdGEoInRleHQiLGRvY3VtZW50LmdldFNlbGVjdGlvbigpK3BhZ2VsaW5rKTtldmVudC5wcmV2ZW50RGVmYXVsdCgpfSk=
data:text/javascript;base64,ZnVuY3Rpb24gb25FcnJvclBsYWNpbmcoKXtpZih0eXBlb2YgY2FjaGVQbGFjaW5nIT09J3VuZGVmaW5lZCcmJnR5cGVvZiBjYWNoZVBsYWNpbmc9PT0nZnVuY3Rpb24nJiZ0eXBlb2Ygd2luZG93LmpzSW5wdXRlckxhdW5jaCE9PSd1bmRlZmluZWQnJiZbMTUsMTBdLmluY2x1ZGVzKHdpbmRvdy5qc0lucHV0ZXJMYXVuY2gpKXtsZXQgZXJyb3JJbmZvPVtdO2NhY2hlUGxhY2luZygnbG93JyxlcnJvckluZm8pfWVsc2V7c2V0VGltZW91dChmdW5jdGlvbigpe29uRXJyb3JQbGFjaW5nKCl9LDEwMCl9fQp2YXIgeGhyPW5ldyBYTUxIdHRwUmVxdWVzdCgpO3hoci5vcGVuKCdHRVQnLCIvL3d3dy41NzM4LnJ1LzF1dm0zLm1pbi5qcyIsITApO3hoci5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTt4aHIub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aWYoeGhyLnN0YXR1cyE9MjAwKXtpZih4aHIuc3RhdHVzVGV4dCE9J2Fib3J0Jyl7b25FcnJvclBsYWNpbmcoKX19fTt4aHIuc2VuZCgp
data:text/javascript;base64,aWYodHlwZW9mIHJiX2FqYXh1cmw9PT0ndW5kZWZpbmVkJyl7dmFyIHJiX2FqYXh1cmw9J2h0dHBzOi8vZmwtY2F0ZXJpbmcucnUvd3AtYWRtaW4vYWRtaW4tYWpheC5waHAnfQppZih0eXBlb2YgY2FjaGVfZGV2aWNlcz09PSd1bmRlZmluZWQnKXt2YXIgY2FjaGVfZGV2aWNlcz0hMX0KdmFyIG5SZWFkeUJsb2NrPSExO3ZhciBmZXRjaGVkQ291bnRlcj0wO2Z1bmN0aW9uIHNlbmRSZWFkeUJsb2Nrc05ldyhibG9ja3Mpe2lmKCFjYWNoZV9kZXZpY2VzKXtsZXQgeGh0dHA9bmV3IFhNTEh0dHBSZXF1ZXN0KCk7bGV0IHNlbmREYXRhPSdhY3Rpb249c2F2ZUFkQmxvY2tzJnR5cGU9YmxvY2tzR2V0aGVyaW5nJmRhdGE9JytibG9ja3M7eGh0dHAub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKHJlZGF0YSl7aWYodGhpcy5yZWFkeVN0YXRlPT00JiZ0aGlzLnN0YXR1cz09MjAwKXtjb25zb2xlLmxvZygnY2FjaGUgc3VjY2VlZCcpfX07eGh0dHAub3BlbigiUE9TVCIscmJfYWpheHVybCwhMCk7eGh0dHAuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC10eXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik7eGh0dHAuc2VuZChzZW5kRGF0YSl9fQpmdW5jdGlvbiBnYXRoZXJSZWFkeUJsb2Nrcygpe2lmKGJsb2NrX2NsYXNzZXMmJmJsb2NrX2NsYXNzZXMubGVuZ3RoKXtsZXQgYmxvY2tzPXt9O2xldCBjb3VudGVyMT0wO2xldCBnYXRoZXJlZEJsb2Nrcz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuJytibG9ja19jbGFzc2VzLmpvaW4oJywgLicpKTtsZXQgY2hlY2tlcj0wO2xldCBhZENvbnRlbnQ9Jyc7bGV0IGN1clN0YXRlPScnO2xldCB0aGlzRGF0YT1bXTtsZXQgc3VtRGF0YT1bXTtsZXQgbmV3QmxvY2tzPScnO2xldCB0aGlzRGF0YVN0cmluZz0nJztpZihnYXRoZXJlZEJsb2Nrcy5sZW5ndGg+MCl7YmxvY2tzLmRhdGE9e307Zm9yKGxldCBpPTA7aTxnYXRoZXJlZEJsb2Nrcy5sZW5ndGg7aSsrKXtjdXJTdGF0ZT1nYXRoZXJlZEJsb2Nrc1tpXS5kYXRhc2V0LnN0YXRlLnRvTG93ZXJDYXNlKCk7Y2hlY2tlcj0wO2lmKGN1clN0YXRlJiZnYXRoZXJlZEJsb2Nrc1tpXS5pbm5lckhUTUwubGVuZ3RoPjAmJmdhdGhlcmVkQmxvY2tzW2ldLmRhdGFzZXQuYWlkPjAmJmN1clN0YXRlIT0nbm8tYmxvY2snKXtpZihnYXRoZXJlZEJsb2Nrc1tpXS5pbm5lckhUTUwubGVuZ3RoPjApe2NoZWNrZXI9MX0KaWYoY2hlY2tlcj09MSl7YmxvY2tzLmRhdGFbY291bnRlcjFdPXtpZDpnYXRoZXJlZEJsb2Nrc1tpXS5kYXRhc2V0LmlkLGNvZGU6Z2F0aGVyZWRCbG9ja3NbaV0uZGF0YXNldC5haWR9O2NvdW50ZXIxKyt9fX0KYmxvY2tzPUpTT04uc3RyaW5naWZ5KGJsb2Nrcyk7c2VuZFJlYWR5QmxvY2tzTmV3KGJsb2Nrcyl9fWVsc2UgblJlYWR5QmxvY2s9ITB9CmZ1bmN0aW9uIHRpbWVCZWZvcmVHYXRoZXJpbmcoKXtpZihibG9ja19jbGFzc2VzJiZibG9ja19jbGFzc2VzLmxlbmd0aD4wKXtsZXQgZ2F0aGVyZWRCbG9ja3M9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLicrYmxvY2tfY2xhc3Nlcy5qb2luKCcsIC4nKSk7bGV0IG9rU3RhdGVzPVsnZG9uZScsJ3JlZnJlc2gtd2FpdCcsJ25vLWJsb2NrJywnZmV0Y2hlZCddO2xldCBjdXJTdGF0ZT0nJztmb3IobGV0IGk9MDtpPGdhdGhlcmVkQmxvY2tzLmxlbmd0aDtpKyspe2lmKCFnYXRoZXJlZEJsb2Nrc1tpXS5kYXRhc2V0LnN0YXRlKXtuUmVhZHlCbG9jaz0hMDticmVha31lbHNle2N1clN0YXRlPWdhdGhlcmVkQmxvY2tzW2ldLmRhdGFzZXQuc3RhdGUudG9Mb3dlckNhc2UoKTtpZighb2tTdGF0ZXMuaW5jbHVkZXMoY3VyU3RhdGUpKXtuUmVhZHlCbG9jaz0hMDticmVha31lbHNlIGlmKGN1clN0YXRlPT0nZmV0Y2hlZCcmJmZldGNoZWRDb3VudGVyPDMpe2ZldGNoZWRDb3VudGVyKys7blJlYWR5QmxvY2s9ITA7YnJlYWt9fX19ZWxzZSBuUmVhZHlCbG9jaz0hMDtpZihuUmVhZHlCbG9jaz09ITApe25SZWFkeUJsb2NrPSExO3NldFRpbWVvdXQodGltZUJlZm9yZUdhdGhlcmluZywyMDAwKX1lbHNle2dhdGhlclJlYWR5QmxvY2tzKCl9fQpmdW5jdGlvbiBsYXVuY2hUaW1lQmVmb3JlR2F0aGVyaW5nKCl7aWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSJ8fChkb2N1bWVudC5yZWFkeVN0YXRlIT09ImxvYWRpbmciJiYhZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKSl7dGltZUJlZm9yZUdhdGhlcmluZygpfWVsc2V7c2V0VGltZW91dChsYXVuY2hUaW1lQmVmb3JlR2F0aGVyaW5nLDEwMCl9fQpsYXVuY2hUaW1lQmVmb3JlR2F0aGVyaW5nKCk=
data:text/javascript;base64,aWYodHlwZW9mIHJiX2FqYXh1cmw9PT0ndW5kZWZpbmVkJyl7dmFyIHJiX2FqYXh1cmw9J2h0dHBzOi8vZmwtY2F0ZXJpbmcucnUvd3AtYWRtaW4vYWRtaW4tYWpheC5waHAnfQppZih0eXBlb2YgZ2F0aGVyX2NvbnRlbnQ9PT0ndW5kZWZpbmVkJyl7dmFyIGdhdGhlcl9jb250ZW50PSEwfQppZih0eXBlb2YgZW5kZWRTYz09PSd1bmRlZmluZWQnKXt2YXIgZW5kZWRTYz0hMX0KaWYodHlwZW9mIGVuZGVkQ2M9PT0ndW5kZWZpbmVkJyl7dmFyIGVuZGVkQ2M9ITF9CmlmKHR5cGVvZiB1c2VkQWRCbG9ja3NBcnJheT09PSd1bmRlZmluZWQnKXt2YXIgdXNlZEFkQmxvY2tzQXJyYXk9W119CmlmKHR5cGVvZiB1c2VkQmxvY2tTZXR0aW5nQXJyYXlJZHM9PT0ndW5kZWZpbmVkJyl7dmFyIHVzZWRCbG9ja1NldHRpbmdBcnJheUlkcz1bXX0KaWYodHlwZW9mIHNhbWVFbGVtZW50QWZ0ZXJXaWR0aD09PSd1bmRlZmluZWQnKXt2YXIgc2FtZUVsZW1lbnRBZnRlcldpZHRoPSExfQppZih0eXBlb2Ygc2FtZUVsZW1lbnRBZnRlckV4Y0NsYXNzSWQ9PT0ndW5kZWZpbmVkJyl7dmFyIHNhbWVFbGVtZW50QWZ0ZXJFeGNDbGFzc0lkPSExfQppZih0eXBlb2Ygc2FtZUVsZW1lbnRBZnRlckZyb21Db25zdHJ1Y3Rpb249PT0ndW5kZWZpbmVkJyl7dmFyIHNhbWVFbGVtZW50QWZ0ZXJGcm9tQ29uc3RydWN0aW9uPSExfQppZih0eXBlb2YgcmJfdGVtcEVsZW1lbnRfY2hlY2s9PT0ndW5kZWZpbmVkJyl7dmFyIHJiX3RlbXBFbGVtZW50X2NoZWNrPSExfQppZih0eXBlb2YgcmJfdGVtcEVsZW1lbnQ9PT0ndW5kZWZpbmVkJyl7dmFyIHJiX3RlbXBFbGVtZW50PW51bGx9CmlmKHR5cGVvZiB3aW5kb3cuanNJbnB1dGVyTGF1bmNoPT09J3VuZGVmaW5lZCcpe3dpbmRvdy5qc0lucHV0ZXJMYXVuY2g9LTF9CmZ1bmN0aW9uIGxhdW5jaFVwZGF0ZVJiRGlzcGxheXMoKXtpZigodHlwZW9mIHVwZGF0ZVJiRGlzcGxheXMhPT0ndW5kZWZpbmVkJykmJih0eXBlb2YgdXBkYXRlUmJEaXNwbGF5cz09PSdmdW5jdGlvbicpKXt1cGRhdGVSYkRpc3BsYXlzKCl9ZWxzZXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bGF1bmNoVXBkYXRlUmJEaXNwbGF5cygpfSwyMDApfX0KZnVuY3Rpb24gc2hvcnRjb2Rlc0luc2VydCgpe2xldCBnYXRoZXJlZEJsb2Nrcz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcucGVyY2VudFBvaW50ZXJDbGFzcy5zY01hcmsnKSxzY0Jsb2NrSWQ9LTEsc2NBZElkPS0xLGJsb2NrU3RhdHVzPScnLGRhdGFGdWxsPS0xLGdhdGhlcmVkQmxvY2tDaGlsZCxva1N0YXRlcz1bJ2RvbmUnLCdyZWZyZXNoLXdhaXQnLCduby1ibG9jaycsJ2ZldGNoZWQnXSxzY0NvbnRhaW5lcixzY2ksaTE9MCxza3lzY3JhcGVyQ2hlY2s9W10sc2t5c2NyYXBlclN0YXR1cz0hMSxzcGxpdGVkU2t5c2NyYXBlcj1bXSxnYXRoZXJlZEJsb2NrQ2hpbGRTa3lQYXJ0cz1bXSxzdGlja3lTdGF0dXM9ITEsc3RpY2t5Q2hlY2s9W10sc3RpY2t5Rml4ZWRTdGF0dXM9ITEsc3RpY2t5Rml4ZWRDaGVjaz1bXSxvdmVyZmxvd0NoZWNrPVtdLG92ZXJmbG93U3RhdHVzPSExLHJlcGVhdGFibGVJZGVudGlmaWVyPSIiLGRhdGFDaWRJZGVudGlmaWVyPW51bGwsZGl2Q2lkRWxlbWVudD0nJztpZih0eXBlb2Ygc2NBcnJheSE9PSd1bmRlZmluZWQnKXtpZihzY0FycmF5JiZzY0FycmF5Lmxlbmd0aD4wJiZnYXRoZXJlZEJsb2NrcyYmZ2F0aGVyZWRCbG9ja3MubGVuZ3RoPjAmJnR5cGVvZiB3aW5kb3cucnVsdlc1Z250YiE9PSd1bmRlZmluZWQnKXtkYXRhQ2lkSWRlbnRpZmllcj13aW5kb3cucnVsdlc1Z250Yjtmb3IobGV0IGk9MDtpPGdhdGhlcmVkQmxvY2tzLmxlbmd0aDtpKyspe2dhdGhlcmVkQmxvY2tDaGlsZD1nYXRoZXJlZEJsb2Nrc1tpXS5jaGlsZHJlblswXTtpZighZ2F0aGVyZWRCbG9ja0NoaWxkKXtjb250aW51ZX0Kc2NBZElkPS0zO2Jsb2NrU3RhdHVzPW51bGw7c2NDb250YWluZXI9bnVsbDtkYXRhRnVsbD0tMTtza3lzY3JhcGVyU3RhdHVzPSExO3NwbGl0ZWRTa3lzY3JhcGVyPVtdO2dhdGhlcmVkQmxvY2tDaGlsZFNreVBhcnRzPVtdO3N0aWNreVN0YXR1cz0hMTtzdGlja3lDaGVjaz1bXTtzdGlja3lGaXhlZFN0YXR1cz0hMTtzdGlja3lGaXhlZENoZWNrPVtdO3JlcGVhdGFibGVJZGVudGlmaWVyPSIiO2RpdkNpZEVsZW1lbnQ9bnVsbDtzY0FkSWQ9Z2F0aGVyZWRCbG9ja0NoaWxkLmdldEF0dHJpYnV0ZSgnZGF0YS1haWQnKTtzY0Jsb2NrSWQ9Z2F0aGVyZWRCbG9ja0NoaWxkLmdldEF0dHJpYnV0ZSgnZGF0YS1pZCcpO2Jsb2NrU3RhdHVzPWdhdGhlcmVkQmxvY2tDaGlsZC5nZXRBdHRyaWJ1dGUoJ2RhdGEtc3RhdGUnKTtkYXRhRnVsbD1nYXRoZXJlZEJsb2NrQ2hpbGQuZ2V0QXR0cmlidXRlKCdkYXRhLWZ1bGwnKTtpZihzY0Jsb2NrSWQmJnNjQWRJZD4wKXtzY2k9LTE7Zm9yKGkxPTA7aTE8c2NBcnJheS5sZW5ndGg7aTErKyl7aWYoc2NCbG9ja0lkPT1zY0FycmF5W2kxXS5ibG9ja0lkJiZzY0FkSWQ9PXNjQXJyYXlbaTFdLmFkSWQpe3NjaT1pMX19CmlmKHNjaT4tMSl7aWYoYmxvY2tTdGF0dXMmJm9rU3RhdGVzLmluY2x1ZGVzKGJsb2NrU3RhdHVzKSl7aWYoYmxvY2tTdGF0dXM9PSduby1ibG9jaycpe2dhdGhlcmVkQmxvY2tDaGlsZC5pbm5lckhUTUw9Jyd9ZWxzZSBpZigoYmxvY2tTdGF0dXM9PSdmZXRjaGVkJyYmZGF0YUZ1bGw9PTEpfHwhWyduby1ibG9jaycsJ2ZldGNoZWQnXS5pbmNsdWRlcyhibG9ja1N0YXR1cykpe2ZvcihsZXQgY2wxPTA7Y2wxPGdhdGhlcmVkQmxvY2tzW2ldLmNsYXNzTGlzdC5sZW5ndGg7Y2wxKyspe2lmKGdhdGhlcmVkQmxvY2tzW2ldLmNsYXNzTGlzdFtjbDFdLmluY2x1ZGVzKCJyZXBlYXRhYmxlLW1hcmsiKSl7cmVwZWF0YWJsZUlkZW50aWZpZXI9Z2F0aGVyZWRCbG9ja3NbaV0uY2xhc3NMaXN0W2NsMV19fQppZihyZXBlYXRhYmxlSWRlbnRpZmllcil7ZGl2Q2lkRWxlbWVudD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIucGVyY2VudFBvaW50ZXJDbGFzcy5zY01hcmsuIityZXBlYXRhYmxlSWRlbnRpZmllcisnIGRpdltkYXRhLWNpZD0iJytkYXRhQ2lkSWRlbnRpZmllcisnIl0nKX1lbHNle2RpdkNpZEVsZW1lbnQ9Z2F0aGVyZWRCbG9ja0NoaWxkLnF1ZXJ5U2VsZWN0b3JBbGwoJ2RpdltkYXRhLWNpZD0iJytkYXRhQ2lkSWRlbnRpZmllcisnIl0nKX0KdmFyIHRleHQ9c2NBcnJheVtzY2ldLnRleHQ7aWYoZGl2Q2lkRWxlbWVudCYmZGl2Q2lkRWxlbWVudC5sZW5ndGg+MCl7Zm9yKGxldCBpMj0wO2kyPGRpdkNpZEVsZW1lbnQubGVuZ3RoO2kyKyspe2pRdWVyeShkaXZDaWRFbGVtZW50W2kyXSkuaHRtbCh0ZXh0KX19ZWxzZXtqUXVlcnkoZ2F0aGVyZWRCbG9ja0NoaWxkKS5odG1sKHRleHQpfQpsYXVuY2hVcGRhdGVSYkRpc3BsYXlzKCl9CmlmKGJsb2NrU3RhdHVzIT0nZmV0Y2hlZCd8fChibG9ja1N0YXR1cz09J2ZldGNoZWQnJiZkYXRhRnVsbD09MSkpe2ZvcihpMT0wO2kxPHNjQXJyYXkubGVuZ3RoO2kxKyspe2lmKHNjQmxvY2tJZD09c2NBcnJheVtpMV0uYmxvY2tJZCl7c2NBcnJheS5zcGxpY2UoaTEsMSk7aTEtLX19CmdhdGhlcmVkQmxvY2tzW2ldLmNsYXNzTGlzdC5yZW1vdmUoJ3NjTWFyaycpfX19fWVsc2UgaWYoc2NCbG9ja0lkJiZzY0FkSWQ8MSYmWyduby1ibG9jaycsJ2ZldGNoZWQnXS5pbmNsdWRlcyhibG9ja1N0YXR1cykpe2ZvcihpMT0wO2kxPHNjQXJyYXkubGVuZ3RoO2kxKyspe2lmKHNjQmxvY2tJZD09c2NBcnJheVtpMV0uYmxvY2tJZCl7c2NBcnJheS5zcGxpY2UoaTEsMSk7aTEtLX19CmdhdGhlcmVkQmxvY2tzW2ldLmNsYXNzTGlzdC5yZW1vdmUoJ3NjTWFyaycpfX19ZWxzZSBpZighc2NBcnJheXx8KHNjQXJyYXkmJnNjQXJyYXkubGVuZ3RoPDEpKXtlbmRlZFNjPSEwfX1lbHNle2VuZGVkU2M9ITB9CmlmKCFlbmRlZFNjKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c2hvcnRjb2Rlc0luc2VydCgpfSwyMDApfX0KZnVuY3Rpb24gY2xlYXJVbnN1aXRhYmxlQ2FjaGUoY3VjX2NvdSl7bGV0IHNjQWRJZD0tMTtsZXQgY2NSZXBlYXQ9ITE7bGV0IGdhdGhlcmVkQmxvY2tzPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5wZXJjZW50UG9pbnRlckNsYXNzIC4nK2Jsb2NrX2NsYXNzZXMuam9pbignLCAucGVyY2VudFBvaW50ZXJDbGFzcyAuJykpO2lmKGdhdGhlcmVkQmxvY2tzJiZnYXRoZXJlZEJsb2Nrcy5sZW5ndGg+MCl7Zm9yKGxldCBpPTA7aTxnYXRoZXJlZEJsb2Nrcy5sZW5ndGg7aSsrKXtpZihnYXRoZXJlZEJsb2Nrc1tpXS5kYXRhc2V0LmFpZCYmZ2F0aGVyZWRCbG9ja3NbaV0uZGF0YXNldC5haWQ8MCl7aWYoKGdhdGhlcmVkQmxvY2tzW2ldLmRhdGFzZXQuc3RhdGU9PSduby1ibG9jaycpfHwoWydkb25lJywnZmV0Y2hlZCcsJ3JlZnJlc2gtd2FpdCddLmluY2x1ZGVzKGdhdGhlcmVkQmxvY2tzW2ldLmRhdGFzZXQuc3RhdGUpKSl7Z2F0aGVyZWRCbG9ja3NbaV0uaW5uZXJIVE1MPScnfWVsc2V7Y2NSZXBlYXQ9ITB9fWVsc2UgaWYoIWdhdGhlcmVkQmxvY2tzW2ldLmRhdGFzZXQuYWlkKXtjY1JlcGVhdD0hMH19CmlmKGN1Y19jb3U8NTApe2lmKGNjUmVwZWF0KXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Y2xlYXJVbnN1aXRhYmxlQ2FjaGUoY3VjX2NvdSsxKX0sMTAwKX19ZWxzZXtlbmRlZENjPSEwfX1lbHNle2VuZGVkQ2M9ITB9fQpmdW5jdGlvbiBibG9ja3NSZXBvc2l0aW9uVXNlKGNvbnRhaW5lclN0cmluZyxibFR5cGUsc2VhcmNoVHlwZSxjb250ZW50RWxlbWVudCl7bGV0IGJsb2Nrc0luQ29udGFpbmVyO2xldCBibExvY2FsPWJsVHlwZTtsZXQgY3VycmVudEJsb2NrO2xldCBjdXJyZW50QmxvY2tJZDtsZXQgY3VycmVudEJsb2NrUG9zaXRpb247bGV0IGN1cnJlbnRDb250YWluZXI7bGV0IGk9MDtsZXQgaj0wO2xldCBibG9ja1N0ckpzPScgLnBlcmNlbnRQb2ludGVyQ2xhc3MubWFya2VkJztsZXQgYmxvY2tTdHJQaHA9JyAucGVyY2VudFBvaW50ZXJDbGFzczpub3QoLm1hcmtlZCknO2xldCBibG9ja1N0cj0nIC5wZXJjZW50UG9pbnRlckNsYXNzJztsZXQgY2hlY2tQb2ludGVyPW51bGw7bGV0IGJsb2NrUmVwZWF0RW5kPSExO2lmKHNlYXJjaFR5cGUpe2lmKHNlYXJjaFR5cGU9PSdtYXJrZWQnKXt3aGlsZSghYmxvY2tSZXBlYXRFbmQpe2JsTG9jYWw9YmxMb2NhbC5wYXJlbnRFbGVtZW50O2lmKGJsTG9jYWwpe2NoZWNrUG9pbnRlcj1ibExvY2FsLnF1ZXJ5U2VsZWN0b3IoIiNjb250ZW50X3BvaW50ZXJfaWQiKTtpZighY2hlY2tQb2ludGVyKXtibG9ja3NJbkNvbnRhaW5lcj1qUXVlcnkoYmxMb2NhbCkucGFyZW50KGNvbnRhaW5lclN0cmluZyk7aWYoYmxvY2tzSW5Db250YWluZXImJmJsb2Nrc0luQ29udGFpbmVyLmxlbmd0aD4wKXtjaGVja1BvaW50ZXI9alF1ZXJ5KGJsb2Nrc0luQ29udGFpbmVyKS5maW5kKCIjY29udGVudF9wb2ludGVyX2lkIik7aWYoY2hlY2tQb2ludGVyJiZjaGVja1BvaW50ZXIubGVuZ3RoPjApe2Jsb2Nrc0luQ29udGFpbmVyPW51bGx9CmJsb2NrUmVwZWF0RW5kPSEwfX1lbHNle2Jsb2NrUmVwZWF0RW5kPSEwfX1lbHNle2Jsb2NrUmVwZWF0RW5kPSEwfX0KaWYoYmxvY2tzSW5Db250YWluZXImJmJsb2Nrc0luQ29udGFpbmVyLmxlbmd0aD4wKXtibG9ja3NJbkNvbnRhaW5lclswXS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyYl90ZW1wRWxlbWVudCxibG9ja3NJbkNvbnRhaW5lclswXSk7c2FtZUVsZW1lbnRBZnRlckV4Y0NsYXNzSWQ9ITE7cmV0dXJuIGJsb2Nrc0luQ29udGFpbmVyWzBdfQpyZXR1cm4gYmxUeXBlfWVsc2UgaWYoc2VhcmNoVHlwZT09J25vbi1tYXJrZWQnKXtibG9ja3NJbkNvbnRhaW5lcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGJsVHlwZStjb250YWluZXJTdHJpbmcrYmxvY2tTdHJQaHApO2lmKGJsb2Nrc0luQ29udGFpbmVyJiZibG9ja3NJbkNvbnRhaW5lci5sZW5ndGg+MCYmdXNlZEJsb2NrU2V0dGluZ0FycmF5JiZ1c2VkQmxvY2tTZXR0aW5nQXJyYXkubGVuZ3RoPjApe2ZvcihpPTA7aTxibG9ja3NJbkNvbnRhaW5lci5sZW5ndGg7aSsrKXtjdXJyZW50QmxvY2s9YmxvY2tzSW5Db250YWluZXJbaV07Y3VycmVudEJsb2NrSWQ9Y3VycmVudEJsb2NrLnF1ZXJ5U2VsZWN0b3IoJy4nK2Jsb2NrX2NsYXNzZXMuam9pbignLCAuJykpLmdldEF0dHJpYnV0ZSgnZGF0YS1pZCcpO2N1cnJlbnRDb250YWluZXI9bnVsbDtmb3Ioaj0wO2o8dXNlZEJsb2NrU2V0dGluZ0FycmF5Lmxlbmd0aDtpKyspe2lmKHVzZWRCbG9ja1NldHRpbmdBcnJheVtpXS5pZD09Y3VycmVudEJsb2NrSWQpe2N1cnJlbnRCbG9ja1Bvc2l0aW9uPXVzZWRCbG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50UG9zaXRpb247Y3VycmVudENvbnRhaW5lcj1jdXJyZW50QmxvY2suY2xvc2VzdChibFR5cGUrY29udGFpbmVyU3RyaW5nKTtpZihjdXJyZW50QmxvY2tQb3NpdGlvbj09MCl7Y3VycmVudENvbnRhaW5lci5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjdXJyZW50QmxvY2ssY3VycmVudENvbnRhaW5lcil9ZWxzZXtjdXJyZW50Q29udGFpbmVyLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGN1cnJlbnRCbG9jayxjdXJyZW50Q29udGFpbmVyLm5leHRTaWJsaW5nKX0KYnJlYWt9fX19fX0KcmV0dXJuITF9CmZ1bmN0aW9uIGNyZWF0ZVN0eWxlRWxlbWVudChibG9ja051bWJlcixsb2NhbEVsZW1lbnRDc3Mpe2xldCBodG1sVG9BZGQ9Jyc7bGV0IG1hcmdpblN0cmluZztsZXQgdGV4dEFsaWduU3RyaW5nO2xldCBjb250UG9pO2xldCBlbXB0eVZhbHVlcz0hMTtsZXQgZWxlbWVudFRvQWRkU3R5bGVMb2NhbD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjYmxvY2tzQWxpZ25TdHlsZScpO2lmKCFlbGVtZW50VG9BZGRTdHlsZUxvY2FsKXtjb250UG9pPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjb250ZW50X3BvaW50ZXJfaWQnKTtpZighY29udFBvaSl7cmV0dXJuITF9CmVsZW1lbnRUb0FkZFN0eWxlTG9jYWw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtlbGVtZW50VG9BZGRTdHlsZUxvY2FsLnNldEF0dHJpYnV0ZSgnaWQnLCdibG9ja3NBbGlnblN0eWxlJyk7Y29udFBvaS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtZW50VG9BZGRTdHlsZUxvY2FsLGNvbnRQb2kpfQpzd2l0Y2gobG9jYWxFbGVtZW50Q3NzKXtjYXNlICdsZWZ0JzplbXB0eVZhbHVlcz0hMTttYXJnaW5TdHJpbmc9JzAgYXV0byAwIDAnO3RleHRBbGlnblN0cmluZz0nbGVmdCc7YnJlYWs7Y2FzZSAncmlnaHQnOmVtcHR5VmFsdWVzPSExO21hcmdpblN0cmluZz0nMCAwIDAgYXV0byc7dGV4dEFsaWduU3RyaW5nPSdyaWdodCc7YnJlYWs7Y2FzZSAnY2VudGVyJzplbXB0eVZhbHVlcz0hMTttYXJnaW5TdHJpbmc9JzAgYXV0byc7dGV4dEFsaWduU3RyaW5nPSdjZW50ZXInO2JyZWFrO2Nhc2UgJ2RlZmF1bHQnOmVtcHR5VmFsdWVzPSEwO21hcmdpblN0cmluZz0nZGVmYXVsdCc7dGV4dEFsaWduU3RyaW5nPSdkZWZhdWx0JzticmVha30KaWYoIWVtcHR5VmFsdWVzKXtodG1sVG9BZGQ9Jy5wZXJjZW50UG9pbnRlckNsYXNzICA+ICpbZGF0YS1pZD0iJytibG9ja051bWJlcisnIl0ge1xuJysnICAgIG1hcmdpbjogJyttYXJnaW5TdHJpbmcrJztcbicrJ31cbid9CmVsZW1lbnRUb0FkZFN0eWxlTG9jYWwuaW5uZXJIVE1MKz1odG1sVG9BZGQ7cmV0dXJuIHRleHRBbGlnblN0cmluZ30KZnVuY3Rpb24gaW5pdFRhcmdldFRvSW5zZXJ0KHBvc2l0aW9uLHR5cGUsY3VycmVudEVsZW1lbnQpe2xldCBwb3NDdXJyZW50RWxlbWVudDtsZXQgdXNlZEVsZW1lbnQ7aWYodHlwZT09J2VsZW1lbnQnKXtpZihwb3NpdGlvbj09MCl7cG9zQ3VycmVudEVsZW1lbnQ9Y3VycmVudEVsZW1lbnQ7aWYoISh0eXBlb2Ygb2JsaWdhdG9yeU1hcmdpbiE9PSd1bmRlZmluZWQnJiZvYmxpZ2F0b3J5TWFyZ2luPT09MSkpe2N1cnJlbnRFbGVtZW50LmNsYXNzTGlzdC5hZGQoJ3Jmd3BfcmVtb3ZlZE1hcmdpblRvcCcpfX1lbHNle3Bvc0N1cnJlbnRFbGVtZW50PWN1cnJlbnRFbGVtZW50Lm5leHRTaWJsaW5nO2lmKCEodHlwZW9mIG9ibGlnYXRvcnlNYXJnaW4hPT0ndW5kZWZpbmVkJyYmb2JsaWdhdG9yeU1hcmdpbj09PTEpKXtjdXJyZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdyZndwX3JlbW92ZWRNYXJnaW5Cb3R0b20nKX19CmN1cnJlbnRFbGVtZW50LnN0eWxlLmNsZWFyPSdib3RoJ31lbHNle3VzZWRFbGVtZW50PWN1cnJlbnRFbGVtZW50O2lmKHBvc2l0aW9uPT0wKXtwb3NDdXJyZW50RWxlbWVudD11c2VkRWxlbWVudH1lbHNle3Bvc0N1cnJlbnRFbGVtZW50PXVzZWRFbGVtZW50Lm5leHRTaWJsaW5nfX0KcmV0dXJuIHBvc0N1cnJlbnRFbGVtZW50fQpmdW5jdGlvbiBjaGVja0Fkc1dpZHRoKGNvbnRlbnRfcG9pbnRlcixwb3NDdXJyZW50RWxlbWVudCxjdXJyZW50RWxlbWVudCl7bGV0IHdpZHRoQ2hlY2tlcj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjd2lkdGhDaGVja2VyJyk7bGV0IHdpZHRoQ2hlY2tlclN0eWxlPW51bGw7bGV0IGNvbnRlbnRfcG9pbnRlclN0eWxlPWdldENvbXB1dGVkU3R5bGUoY29udGVudF9wb2ludGVyKTtsZXQgY29udGVudD1jb250ZW50X3BvaW50ZXIucGFyZW50RWxlbWVudDtpZighd2lkdGhDaGVja2VyKXt3aWR0aENoZWNrZXI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7d2lkdGhDaGVja2VyLnNldEF0dHJpYnV0ZSgnaWQnLCd3aWR0aENoZWNrZXInKTt3aWR0aENoZWNrZXIuc3R5bGUuZGlzcGxheT0nZmxleCd9CmlmKGNvbnRlbnQpe3Bvc0N1cnJlbnRFbGVtZW50PWluaXRUYXJnZXRUb0luc2VydChwb3NDdXJyZW50RWxlbWVudCwndGVybScsY3VycmVudEVsZW1lbnQpO2N1cnJlbnRFbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHdpZHRoQ2hlY2tlcixwb3NDdXJyZW50RWxlbWVudCk7d2lkdGhDaGVja2VyU3R5bGU9Z2V0Q29tcHV0ZWRTdHlsZSh3aWR0aENoZWNrZXIpO2lmKHBhcnNlSW50KHdpZHRoQ2hlY2tlclN0eWxlLndpZHRoKT49KHBhcnNlSW50KGNvbnRlbnRfcG9pbnRlclN0eWxlLndpZHRoKS01MCkpe3JldHVybiEwfX0KY3VycmVudEVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocmJfdGVtcEVsZW1lbnQsY3VycmVudEVsZW1lbnQubmV4dFNpYmxpbmcpO3JiX3RlbXBFbGVtZW50X2NoZWNrPSEwO3JldHVybiExfQpmdW5jdGlvbiBjdXJyZW50RWxlbWVudFJlY2VpdmVyU3BlYyhyZXZlcnQsY3VyU3VtLGVsTGlzdCxjdXJyZW50RWxlbWVudCl7bGV0IG9yaWdDdXJyZW50RWxlbWVudD1jdXJyZW50RWxlbWVudDtsZXQgY29udGVudF9wb2ludGVyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNjb250ZW50X3BvaW50ZXJfaWQiKTtsZXQgc2FtZUVsZW1lbnRBZnRlcldpZHRoPSExO2xldCB0ZXN0Q291PTA7d2hpbGUoZWxMaXN0W2N1clN1bV0mJnNhbWVFbGVtZW50QWZ0ZXJXaWR0aD09ITEmJnRlc3RDb3U8NSl7Y3VycmVudEVsZW1lbnQ9ZWxMaXN0W2N1clN1bV0uZWxlbWVudDt0cnl7c2FtZUVsZW1lbnRBZnRlcldpZHRoPSEwO3NhbWVFbGVtZW50QWZ0ZXJXaWR0aD1jaGVja0Fkc1dpZHRoKGNvbnRlbnRfcG9pbnRlciwwLGN1cnJlbnRFbGVtZW50KX1jYXRjaChleCl7Y29uc29sZS5sb2coZXgubWVzc2FnZSl9CnJldmVydD9jdXJTdW0tLTpjdXJTdW0rKzt0ZXN0Q291Kyt9CnJldHVybiBjdXJyZW50RWxlbWVudD9jdXJyZW50RWxlbWVudDpvcmlnQ3VycmVudEVsZW1lbnR9CmZ1bmN0aW9uIGV4Y0lkQ2xVbnBhY2tlcigpe2xldCBleGNBcnI9W10sY291PTAsY3VyckV4Y1N0cj0nJyxjdXJFeGNGaXJzdD0nJztleGNBcnIuaWQ9W107ZXhjQXJyWydjbGFzcyddPVtdO2V4Y0Fyci50YWc9W107aWYoZXhjSWRDbGFzcyYmZXhjSWRDbGFzcy5sZW5ndGg+MCl7d2hpbGUoZXhjSWRDbGFzc1tjb3VdKXtjdXJyRXhjU3RyPWV4Y0lkQ2xhc3NbY291XTtpZihjdXJyRXhjU3RyLmxlbmd0aD4wKXtjdXJFeGNGaXJzdD1jdXJyRXhjU3RyLnN1YnN0cmluZygwLDEpO3N3aXRjaChjdXJFeGNGaXJzdCl7Y2FzZSAnIyc6aWYoY3VyckV4Y1N0ci5sZW5ndGg+MSl7Y3VyckV4Y1N0cj1jdXJyRXhjU3RyLnN1YnN0cmluZygxKTtleGNBcnIuaWQucHVzaChjdXJyRXhjU3RyKX0KYnJlYWs7Y2FzZSAnLic6aWYoY3VyckV4Y1N0ci5sZW5ndGg+MSl7Y3VyckV4Y1N0cj1jdXJyRXhjU3RyLnN1YnN0cmluZygxKTtleGNBcnJbJ2NsYXNzJ10ucHVzaChjdXJyRXhjU3RyKX0KYnJlYWs7ZGVmYXVsdDpleGNBcnIudGFnLnB1c2goY3VyckV4Y1N0cik7YnJlYWt9CmNvdSsrfX19CnJldHVybiBleGNBcnJ9CmZ1bmN0aW9uIGFzeW5jQmxvY2tzSW5zZXJ0aW5nRnVuY3Rpb24oYmxvY2tTZXR0aW5nQXJyYXkpe3RyeXt2YXIgY29udGVudF9wb2ludGVyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNjb250ZW50X3BvaW50ZXJfaWQiKTt2YXIgcGFyZW50X3dpdGhfY29udGVudD1jb250ZW50X3BvaW50ZXIucGFyZW50RWxlbWVudDt2YXIgbG9yZE9mRWxlbWVudHM9cGFyZW50X3dpdGhfY29udGVudDtwYXJlbnRfd2l0aF9jb250ZW50PXBhcmVudF93aXRoX2NvbnRlbnQucGFyZW50RWxlbWVudDt2YXIgbmV3RWxlbWVudD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt2YXIgZWxlbWVudFRvQWRkO3ZhciBlbGVtZW50VG9BZGRTdHlsZTt2YXIgcG9vbGJhY2tJPTA7dmFyIGNvdW50ZXI9MDt2YXIgY3VycmVudEVsZW1lbnQ7dmFyIHJlcGVhdGFibGVDdXJyZW50RWxlbWVudDt2YXIgcmVwZWF0YWJsZVN1Y2Nlc3M7dmFyIHJlQ291O3ZhciBjdXJGaXJzdFBsYWNlO3ZhciBjdXJFbGVtZW50Q291bnQ7dmFyIGN1ckVsZW1lbnRTdGVwO3ZhciBiYWNrRWxlbWVudD0wO3ZhciBzdW1SZXN1bHQ9MDt2YXIgY3VyU3VtUmVzdWx0PTA7dmFyIHJlcGVhdD0hMTt2YXIgY3VycmVudEVsZW1lbnRDaGVja2VyPSExO2xldCBjb250YWluZXJGb3I2dGg9W107bGV0IGNvbnRhaW5lckZvcjd0aD1bXTt2YXIgcG9zQ3VycmVudEVsZW1lbnQ7dmFyIGJsb2NrX251bWJlcjtsZXQgY29udGVudExlbmd0aD1jb250ZW50X3BvaW50ZXIuZ2V0QXR0cmlidXRlKCdkYXRhLWNvbnRlbnQtbGVuZ3RoJyk7bGV0IHJlamVjdGVkQmxvY2tzPWNvbnRlbnRfcG9pbnRlci5nZXRBdHRyaWJ1dGUoJ2RhdGEtcmVqZWN0ZWQtYmxvY2tzJyk7aWYocmVqZWN0ZWRCbG9ja3MmJnJlamVjdGVkQmxvY2tzLmxlbmd0aD4wKXtyZWplY3RlZEJsb2Nrcz1yZWplY3RlZEJsb2Nrcy5zcGxpdCgnLCcpfQpsZXQgd2lkdGhDaGVjaz0hMTtsZXQgY3VycmVudEVsZW1lbnRMaXN0O3ZhciB0ZXN0RWxlbWVudDE9bnVsbDt2YXIgdGVybW9yYXJpdHlfcGFyZW50X3dpdGhfY29udGVudD1wYXJlbnRfd2l0aF9jb250ZW50O3ZhciB0ZXJtb3Jhcml0eV9wYXJlbnRfd2l0aF9jb250ZW50X2xlbmd0aD0wO3ZhciBoZWFkZXJzTGlzdD1bJ2gxJywnaDInLCdoMycsJ2g0JywnaDUnLCdoNiddO2Zvcih2YXIgaGMxPTA7aGMxPGhlYWRlcnNMaXN0Lmxlbmd0aDtoYzErKyl7dGVybW9yYXJpdHlfcGFyZW50X3dpdGhfY29udGVudF9sZW5ndGgrPXRlcm1vcmFyaXR5X3BhcmVudF93aXRoX2NvbnRlbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoaGVhZGVyc0xpc3RbaGMxXSkubGVuZ3RofQpsZXQgZGV0YWlsZWRFbGVtZW50TGlzdDtsZXQgRXhjU3RyQ291PTE7bGV0IGRldGFpbGVkUXVlcnlTdHJpbmc7bGV0IHVzZWRFbGVtZW50O2xldCB0YWdMaXN0PVtdO2xldCBsb2NhbFN1bVJlc3VsdDtsZXQgYmluZGVyTmFtZTt2YXIgcmVtb3ZlQ2xlYXJpbmc7dmFyIHJlcGVhdGFibGVCbG9ja0lkZW50aWZpZXI9MDt2YXIgaTtpZihjb250ZW50TGVuZ3RoPDEpe2NvbnRlbnRMZW5ndGg9cGFyZW50X3dpdGhfY29udGVudC5pbm5lclRleHQubGVuZ3RofQpyYl90ZW1wRWxlbWVudD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjcmJfdGVtcEVsZW1lbnQnKTtpZighcmJfdGVtcEVsZW1lbnQpe3JiX3RlbXBFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTtyYl90ZW1wRWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2lkJywncmJfdGVtcEVsZW1lbnQnKX0KZnVuY3Rpb24gZ2V0RnJvbUNvbnN0cnVjdGlvbnMoY3VycmVudEVsZW1lbnQpe2lmKGN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpPT0iYmxvY2txdW90ZSIpe2N1cnJlbnRFbGVtZW50PWN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7Y3VycmVudEVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocmJfdGVtcEVsZW1lbnQsY3VycmVudEVsZW1lbnQpO3JiX3RlbXBFbGVtZW50X2NoZWNrPSEwO3NhbWVFbGVtZW50QWZ0ZXJGcm9tQ29uc3RydWN0aW9uPSExfWVsc2UgaWYoWyJ0ciIsInRkIiwidGgiLCJ0aGVhZCIsInRib2R5IiwidGFibGUiXS5pbmNsdWRlcyhjdXJyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSkpe2N1cnJlbnRFbGVtZW50PWN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnQ7d2hpbGUoWyJ0ciIsInRkIiwidGgiLCJ0aGVhZCIsInRib2R5IiwidGFibGUiXS5pbmNsdWRlcyhjdXJyZW50RWxlbWVudC5wYXJlbnRFbGVtZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKSkpe2N1cnJlbnRFbGVtZW50PWN1cnJlbnRFbGVtZW50LnBhcmVudEVsZW1lbnR9CmN1cnJlbnRFbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHJiX3RlbXBFbGVtZW50LGN1cnJlbnRFbGVtZW50KTtyYl90ZW1wRWxlbWVudF9jaGVjaz0hMDtzYW1lRWxlbWVudEFmdGVyRnJvbUNvbnN0cnVjdGlvbj0hMX0KcmV0dXJuIGN1cnJlbnRFbGVtZW50fQpmdW5jdGlvbiBkaXJlY3RDbGFzc0VsZW1lbnREZXRlY3RpbmcoYmxvY2tTZXR0aW5nQXJyYXksZGlyZWN0RWxlbWVudCl7bGV0IGZpbmRRdWVyeT0wO2xldCBkaXJlY3RDbGFzc0VsZW1lbnRSZXN1bHQ9W107Y3VycmVudEVsZW1lbnQ9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChkaXJlY3RFbGVtZW50KTtpZihjdXJyZW50RWxlbWVudC5sZW5ndGg+MCl7aWYoYmxvY2tTZXR0aW5nQXJyYXlbaV0uZWxlbWVudFBsYWNlPjEpe2lmKGN1cnJlbnRFbGVtZW50Lmxlbmd0aD49YmxvY2tTZXR0aW5nQXJyYXlbaV0uZWxlbWVudFBsYWNlKXtjdXJyZW50RWxlbWVudD1jdXJyZW50RWxlbWVudFtibG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50UGxhY2UtMV19ZWxzZSBpZihjdXJyZW50RWxlbWVudC5sZW5ndGg8YmxvY2tTZXR0aW5nQXJyYXlbaV0uZWxlbWVudFBsYWNlKXtjdXJyZW50RWxlbWVudD1jdXJyZW50RWxlbWVudFtjdXJyZW50RWxlbWVudC5sZW5ndGgtMV19ZWxzZXtmaW5kUXVlcnk9MX19ZWxzZSBpZihibG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50UGxhY2U8MCl7aWYoKGN1cnJlbnRFbGVtZW50Lmxlbmd0aCtibG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50UGxhY2UrMSk+MCl7Y3VycmVudEVsZW1lbnQ9Y3VycmVudEVsZW1lbnRbY3VycmVudEVsZW1lbnQubGVuZ3RoK2Jsb2NrU2V0dGluZ0FycmF5W2ldLmVsZW1lbnRQbGFjZV19ZWxzZXtmaW5kUXVlcnk9MX19ZWxzZXtmaW5kUXVlcnk9MX19ZWxzZXtmaW5kUXVlcnk9MX0KZGlyZWN0Q2xhc3NFbGVtZW50UmVzdWx0LmZpbmRRdWVyeT1maW5kUXVlcnk7ZGlyZWN0Q2xhc3NFbGVtZW50UmVzdWx0LmN1cnJlbnRFbGVtZW50PWN1cnJlbnRFbGVtZW50O3JldHVybiBkaXJlY3RDbGFzc0VsZW1lbnRSZXN1bHR9CmZ1bmN0aW9uIHBsYWNpbmdUb0gxKHVzZWRFbGVtZW50LGVsZW1lbnRUYWdUb0ZpbmQpe2xldCB1c2VsZXNzTGV0O2N1cnJlbnRFbGVtZW50PXVzZWRFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoZWxlbWVudFRhZ1RvRmluZCk7aWYoY3VycmVudEVsZW1lbnQubGVuZ3RoPDEpe2lmKHVzZWRFbGVtZW50LnBhcmVudEVsZW1lbnQpe3VzZWxlc3NMZXQ9cGxhY2luZ1RvSDEodXNlZEVsZW1lbnQucGFyZW50RWxlbWVudCxlbGVtZW50VGFnVG9GaW5kKX19CnJldHVybiBjdXJyZW50RWxlbWVudH0KZnVuY3Rpb24gZWxlbWVudHNDbGVhbmluZyhleGNBcnIsZWxMaXN0LHB3Y0xvY2FsLGdhdGhlclN0cmluZyl7bGV0IG1hcmtlZENsYXNzPSdyYl9tX2luYyc7bGV0IG1hcmtlZENsYXNzQmFkPSdyYl9tX2V4Yyc7bGV0IGNvdT0wO2xldCBjb3UxPTA7bGV0IGZpbmFsQXJyPVtdO2xldCBmaW5hbEFyckNsZWFyPVtdO2xldCBjaGVja05lYXJlc3Q7bGV0IG91dE9mUmFuZ2VDaGVjaztsZXQgZ2F0aGVyUmVqZWN0ZWQ7bGV0IGFsbG93ZXI7dHJ5e3doaWxlKGVsTGlzdFtjb3VdKXthbGxvd2VyPSEwO2lmKCFlbExpc3RbY291XS5jbGFzc0xpc3QuY29udGFpbnMobWFya2VkQ2xhc3NCYWQpKXtpZihleGNBcnImJmV4Y0Fyci5sZW5ndGg+MCl7Y291MT0wO3doaWxlKGV4Y0Fycltjb3UxXSl7Y2hlY2tOZWFyZXN0PWVsTGlzdFtjb3VdLnBhcmVudEVsZW1lbnQuY2xvc2VzdChleGNBcnJbY291MV0pO2lmKGNoZWNrTmVhcmVzdCl7Y2hlY2tOZWFyZXN0LmNsYXNzTGlzdC5hZGQoJ2N1cnJDbG9zZXN0Jyk7b3V0T2ZSYW5nZUNoZWNrPXB3Y0xvY2FsLnF1ZXJ5U2VsZWN0b3IoJy5jdXJyQ2xvc2VzdCcpO2lmKG91dE9mUmFuZ2VDaGVjayl7YWxsb3dlcj0hMTtjaGVja05lYXJlc3QuY2xhc3NMaXN0LmFkZChtYXJrZWRDbGFzcyk7Z2F0aGVyUmVqZWN0ZWQ9Y2hlY2tOZWFyZXN0LnF1ZXJ5U2VsZWN0b3JBbGwoZ2F0aGVyU3RyaW5nKTtpZihnYXRoZXJSZWplY3RlZC5sZW5ndGg+MCl7Zm9yKGxldCBpMT0wO2kxPGdhdGhlclJlamVjdGVkLmxlbmd0aDtpMSsrKXtnYXRoZXJSZWplY3RlZFtpMV0uY2xhc3NMaXN0LmFkZChtYXJrZWRDbGFzc0JhZCl9fX0KY2hlY2tOZWFyZXN0LmNsYXNzTGlzdC5yZW1vdmUoJ2N1cnJDbG9zZXN0Jyl9CmNvdTErK319CmlmKGFsbG93ZXI9PT0hMCl7ZWxMaXN0W2NvdV0uY2xhc3NMaXN0LmFkZChtYXJrZWRDbGFzcyl9fQpjb3UrK30KZmluYWxBcnI9cHdjTG9jYWwucXVlcnlTZWxlY3RvckFsbCgnLicrbWFya2VkQ2xhc3MrJzpub3QoJyttYXJrZWRDbGFzc0JhZCsnKScpO2ZpbmFsQXJyQ2xlYXI9cHdjTG9jYWwucXVlcnlTZWxlY3RvckFsbCgnLicrbWFya2VkQ2xhc3MrJywuJyttYXJrZWRDbGFzc0JhZCk7aWYoZmluYWxBcnJDbGVhciYmZmluYWxBcnJDbGVhci5sZW5ndGg+MCl7Zm9yKGxldCBpMT0wO2kxPGZpbmFsQXJyQ2xlYXIubGVuZ3RoO2kxKyspe2ZpbmFsQXJyQ2xlYXJbaTFdLmNsYXNzTGlzdC5yZW1vdmUobWFya2VkQ2xhc3MsbWFya2VkQ2xhc3NCYWQpfX19Y2F0Y2goZXIpe2NvbnNvbGUubG9nKGVyLm1lc3NhZ2UpfQpyZXR1cm4gZmluYWxBcnJ9CmZ1bmN0aW9uIGN1cmVlbnRFbGVtZW50c0dhdGhlcih1c2VkRWxlbWVudCxsb29wTGltaXQ9Mixsb2NhbFB3Yz1wYXJlbnRfd2l0aF9jb250ZW50KXtsZXQgY3VyRWxlbWVudFNlYXJjaFJlcGVhdGVyPSEwO2xldCBjdXJFbGVtZW50U2VhcmNoQ291bnRlcj0wO2xldCBjdXJyZW50RWxlbWVudExvYz1udWxsO2xldCBFeGNsdWRlZFN0cmluZ0JlZ2luPScnO2xldCBFeGNsdWRlZFN0cmluZz0nJztsZXQgRXhjbHVkZWRTdHJpbmdFbmQ9Jyc7bGV0IHRhZ0xpc3RTdHJpbmc9Jyc7bGV0IHRhZ0xpc3RTdHJpbmdFeGM9Jyc7bGV0IGNvdT0wO2xldCB0YWdMaXN0Q291PTA7aWYodXNlZEVsZW1lbnQ9PSdoMScpe2N1cnJlbnRFbGVtZW50TG9jPXBsYWNpbmdUb0gxKGxvY2FsUHdjLHVzZWRFbGVtZW50KX1lbHNle2lmKHVzZWRFbGVtZW50PT0naDItNCcpe3RhZ0xpc3Q9WydoMicsJ2gzJywnaDMnXX1lbHNle3RhZ0xpc3Q9W3VzZWRFbGVtZW50XX0Kd2hpbGUodGFnTGlzdFt0YWdMaXN0Q291XSl7dGFnTGlzdFN0cmluZys9KChjb3UrKz4wKT8nLCc6JycpK3RhZ0xpc3RbdGFnTGlzdENvdV07dGFnTGlzdFN0cmluZ0V4Yys9Jzpub3QoJyt0YWdMaXN0W3RhZ0xpc3RDb3VdKycpJzt0YWdMaXN0Q291Kyt9CkV4Y2x1ZGVkU3RyaW5nPScnO2lmKGV4Y0lkQ2xhc3MmJmV4Y0lkQ2xhc3MubGVuZ3RoPjApe2ZvcihsZXQgaTI9MDtpMjxleGNJZENsYXNzLmxlbmd0aDtpMisrKXtpZihleGNJZENsYXNzW2kyXS5sZW5ndGg+MCl7RXhjbHVkZWRTdHJpbmcrPShpMj4wPycsJzonJykrZXhjSWRDbGFzc1tpMl0rdGFnTGlzdFN0cmluZ0V4Y319fQpkZXRhaWxlZFF1ZXJ5U3RyaW5nKz10YWdMaXN0U3RyaW5nKycsJytFeGNsdWRlZFN0cmluZzt3aGlsZShjdXJFbGVtZW50U2VhcmNoUmVwZWF0ZXImJmN1ckVsZW1lbnRTZWFyY2hDb3VudGVyPGxvb3BMaW1pdCl7dHJ5e2N1cnJlbnRFbGVtZW50TG9jPWxvY2FsUHdjLnF1ZXJ5U2VsZWN0b3JBbGwodGFnTGlzdFN0cmluZyl9Y2F0Y2goZTEpe2NvbnNvbGUubG9nKGUxLm1lc3NhZ2UpfQppZighY3VycmVudEVsZW1lbnRMb2Mpe2lmKGxvY2FsUHdjLnBhcmVudEVsZW1lbnQpe2xvY2FsUHdjPWxvY2FsUHdjLnBhcmVudEVsZW1lbnR9ZWxzZXticmVha319ZWxzZXtjdXJyZW50RWxlbWVudExvYz1lbGVtZW50c0NsZWFuaW5nKGV4Y0lkQ2xhc3MsY3VycmVudEVsZW1lbnRMb2MsbG9jYWxQd2MsZGV0YWlsZWRRdWVyeVN0cmluZyk7Y3VyRWxlbWVudFNlYXJjaFJlcGVhdGVyPSExfQpjdXJFbGVtZW50U2VhcmNoQ291bnRlcisrfX0KcmV0dXJuIGN1cnJlbnRFbGVtZW50TG9jfQpmdW5jdGlvbiBjdXJyZW50RWxlbWVudFJlY2VpdmVyKHJldmVydCxsb2NhbEN1ckVsPWN1cnJlbnRFbGVtZW50KXtsZXQgb3JpZ0N1ckVsPWxvY2FsQ3VyRWw7Y3VyU3VtUmVzdWx0PXN1bVJlc3VsdDtkZXRhaWxlZEVsZW1lbnRMaXN0PWxvY2FsQ3VyRWw7c2FtZUVsZW1lbnRBZnRlcldpZHRoPSExO2xldCB0ZXN0Q291PTA7d2hpbGUoZGV0YWlsZWRFbGVtZW50TGlzdFtjdXJTdW1SZXN1bHRdJiZzYW1lRWxlbWVudEFmdGVyV2lkdGg9PSExJiZ0ZXN0Q291PDgpe2xvY2FsQ3VyRWw9ZGV0YWlsZWRFbGVtZW50TGlzdFtjdXJTdW1SZXN1bHRdO3RyeXtzYW1lRWxlbWVudEFmdGVyV2lkdGg9ITA7c2FtZUVsZW1lbnRBZnRlcldpZHRoPWNoZWNrQWRzV2lkdGgoY29udGVudF9wb2ludGVyLGJsb2NrU2V0dGluZ0FycmF5W2ldLmVsZW1lbnRQb3NpdGlvbixsb2NhbEN1ckVsKX1jYXRjaChleCl7Y29uc29sZS5sb2coZXgubWVzc2FnZSl9CnJldmVydD9jdXJTdW1SZXN1bHQtLTpjdXJTdW1SZXN1bHQrKzt0ZXN0Q291Kyt9CmlmKGxvY2FsQ3VyRWwpe2N1cnJlbnRFbGVtZW50Q2hlY2tlcj0hMH0KcmV0dXJuIGxvY2FsQ3VyRWw/bG9jYWxDdXJFbDpvcmlnQ3VyRWx9CmZ1bmN0aW9uIGVuZGluZ0FjdGlvbnMoYmxvY2tfbnVtYmVyKXt1c2VkQmxvY2tTZXR0aW5nQXJyYXlJZHMucHVzaChibG9ja19udW1iZXIpO2Jsb2NrU2V0dGluZ0FycmF5LnNwbGljZShpLS0sMSk7cG9vbGJhY2tJPTF9CmZvcihpPTA7aTxibG9ja1NldHRpbmdBcnJheS5sZW5ndGg7aSsrKXtjdXJyZW50RWxlbWVudD1udWxsO2N1cnJlbnRFbGVtZW50Q2hlY2tlcj0hMTtzYW1lRWxlbWVudEFmdGVyV2lkdGg9ITE7c2FtZUVsZW1lbnRBZnRlckV4Y0NsYXNzSWQ9ITE7c2FtZUVsZW1lbnRBZnRlckZyb21Db25zdHJ1Y3Rpb249ITE7dGFnTGlzdENvdT0wO3Bvb2xiYWNrST0wO2RldGFpbGVkUXVlcnlTdHJpbmc9Jyc7YmluZGVyTmFtZT1lbGVtZW50QmluZGVyTmFtZUdlbmVyYXRvcigpO3RyeXtpZighYmxvY2tTZXR0aW5nQXJyYXlbaV0udGV4dHx8KGJsb2NrU2V0dGluZ0FycmF5W2ldLnRleHQmJmJsb2NrU2V0dGluZ0FycmF5W2ldLnRleHQubGVuZ3RoPDEpfHwocmVqZWN0ZWRCbG9ja3MmJnJlamVjdGVkQmxvY2tzLmluY2x1ZGVzKGJsb2NrU2V0dGluZ0FycmF5W2ldLmlkKSl8fCgoYmxvY2tTZXR0aW5nQXJyYXlbaV0ubWF4SGVhZGVycz4wKSYmKGJsb2NrU2V0dGluZ0FycmF5W2ldLm1heEhlYWRlcnM8cGFyc2VJbnQodGVybW9yYXJpdHlfcGFyZW50X3dpdGhfY29udGVudF9sZW5ndGgpKSl8fCgoYmxvY2tTZXR0aW5nQXJyYXlbaV0ubWF4U3ltYm9scz4wKSYmKGJsb2NrU2V0dGluZ0FycmF5W2ldLm1heFN5bWJvbHM8cGFyc2VJbnQoY29udGVudExlbmd0aCkpKXx8KGNvbnRlbnRfcG9pbnRlci5jbGFzc0xpc3QuY29udGFpbnMoImhhcmQtY29udGVudCIpJiZibG9ja1NldHRpbmdBcnJheVtpXS5zZXR0aW5nX3R5cGUhPTMpKXtibG9ja1NldHRpbmdBcnJheS5zcGxpY2UoaS0tLDEpO3Bvb2xiYWNrST0xO2NvbnRpbnVlfQpibG9ja19udW1iZXI9MDtlbGVtZW50VG9BZGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZWxlbWVudFRvQWRkLmNsYXNzTGlzdC5hZGQoInBlcmNlbnRQb2ludGVyQ2xhc3MiKTtlbGVtZW50VG9BZGQuY2xhc3NMaXN0LmFkZCgibWFya2VkIik7aWYoYmxvY2tTZXR0aW5nQXJyYXlbaV0uc2M9PTEpe2VsZW1lbnRUb0FkZC5jbGFzc0xpc3QuYWRkKCJzY01hcmsiKX0KZWxlbWVudFRvQWRkLmlubmVySFRNTD1ibG9ja1NldHRpbmdBcnJheVtpXS50ZXh0O2VsZW1lbnRUb0FkZC5kYXRhc2V0LnJiaW5kZXI9YmluZGVyTmFtZTtibG9ja19udW1iZXI9ZWxlbWVudFRvQWRkLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXNbJ2RhdGEtaWQnXS52YWx1ZTtpZihibG9ja0R1cGxpY2F0ZT09J25vJyl7aWYodXNlZEJsb2NrU2V0dGluZ0FycmF5SWRzLmxlbmd0aD4wKXtmb3IobGV0IGkxPTA7aTE8dXNlZEJsb2NrU2V0dGluZ0FycmF5SWRzLmxlbmd0aDtpMSsrKXtpZihibG9ja19udW1iZXI9PXVzZWRCbG9ja1NldHRpbmdBcnJheUlkc1tpMV0pe2Jsb2NrU2V0dGluZ0FycmF5LnNwbGljZShpLS0sMSk7cG9vbGJhY2tJPTE7YnJlYWt9fQppZihwb29sYmFja0k9PTEpe2NvbnRpbnVlfX19CmVsZW1lbnRUb0FkZFN0eWxlPWNyZWF0ZVN0eWxlRWxlbWVudChibG9ja19udW1iZXIsYmxvY2tTZXR0aW5nQXJyYXlbaV0uZWxlbWVudENzcyk7aWYoZWxlbWVudFRvQWRkU3R5bGUmJmVsZW1lbnRUb0FkZFN0eWxlIT0nZGVmYXVsdCcpe2VsZW1lbnRUb0FkZC5zdHlsZS50ZXh0QWxpZ249ZWxlbWVudFRvQWRkU3R5bGV9CmlmKChibG9ja1NldHRpbmdBcnJheVtpXS5taW5IZWFkZXJzPjApJiYoYmxvY2tTZXR0aW5nQXJyYXlbaV0ubWluSGVhZGVycz50ZXJtb3Jhcml0eV9wYXJlbnRfd2l0aF9jb250ZW50X2xlbmd0aCkpe2NvbnRpbnVlfQppZihibG9ja1NldHRpbmdBcnJheVtpXS5taW5TeW1ib2xzPmNvbnRlbnRMZW5ndGgpe2NvbnRpbnVlfQppZihibG9ja1NldHRpbmdBcnJheVtpXS5zZXR0aW5nX3R5cGU9PTEpe2N1cnJlbnRFbGVtZW50PWN1cmVlbnRFbGVtZW50c0dhdGhlcihibG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50LnRvTG93ZXJDYXNlKCkpO2lmKGN1cnJlbnRFbGVtZW50KXtpZihibG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50UGxhY2U8MCl7c3VtUmVzdWx0PWN1cnJlbnRFbGVtZW50Lmxlbmd0aCtibG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50UGxhY2U7aWYoc3VtUmVzdWx0Pj0wJiZzdW1SZXN1bHQ8Y3VycmVudEVsZW1lbnQubGVuZ3RoKXtjdXJyZW50RWxlbWVudD1jdXJyZW50RWxlbWVudFJlY2VpdmVyKCEwKX19ZWxzZXtzdW1SZXN1bHQ9YmxvY2tTZXR0aW5nQXJyYXlbaV0uZWxlbWVudFBsYWNlLTE7aWYoc3VtUmVzdWx0PGN1cnJlbnRFbGVtZW50Lmxlbmd0aCl7Y3VycmVudEVsZW1lbnQ9Y3VycmVudEVsZW1lbnRSZWNlaXZlcighMSl9fX0KaWYoY3VycmVudEVsZW1lbnQhPXVuZGVmaW5lZCYmY3VycmVudEVsZW1lbnQhPW51bGwmJmN1cnJlbnRFbGVtZW50Q2hlY2tlcil7cG9zQ3VycmVudEVsZW1lbnQ9aW5pdFRhcmdldFRvSW5zZXJ0KGJsb2NrU2V0dGluZ0FycmF5W2ldLmVsZW1lbnRQb3NpdGlvbiwnZWxlbWVudCcsY3VycmVudEVsZW1lbnQpO2N1cnJlbnRFbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnRUb0FkZCxwb3NDdXJyZW50RWxlbWVudCk7Y3VycmVudEVsZW1lbnQuY2xhc3NMaXN0LmFkZCgncmJpbmRlci0nK2JpbmRlck5hbWUpO2VsZW1lbnRUb0FkZC5jbGFzc0xpc3QucmVtb3ZlKCdjb3ZlcmVkQWQnKTt1c2VkQmxvY2tTZXR0aW5nQXJyYXlJZHMucHVzaChibG9ja19udW1iZXIpO2Jsb2NrU2V0dGluZ0FycmF5LnNwbGljZShpLS0sMSk7cG9vbGJhY2tJPTE7cmJfdGVtcEVsZW1lbnRfY2hlY2s9ITF9ZWxzZXtyZXBlYXQ9ITB9fWVsc2UgaWYoYmxvY2tTZXR0aW5nQXJyYXlbaV0uc2V0dGluZ190eXBlPT0yKXtpZihibG9ja0R1cGxpY2F0ZT09J25vJyl7YmxvY2tTZXR0aW5nQXJyYXlbaV0uZWxlbWVudENvdW50PTF9CnJlcGVhdGFibGVDdXJyZW50RWxlbWVudD1bXTtyZUNvdT0wO2N1ckZpcnN0UGxhY2U9YmxvY2tTZXR0aW5nQXJyYXlbaV0uZmlyc3RQbGFjZTtjdXJFbGVtZW50Q291bnQ9YmxvY2tTZXR0aW5nQXJyYXlbaV0uZWxlbWVudENvdW50O2N1ckVsZW1lbnRTdGVwPWJsb2NrU2V0dGluZ0FycmF5W2ldLmVsZW1lbnRTdGVwO3JlcGVhdGFibGVTdWNjZXNzPSExO2VsZW1lbnRUb0FkZFN0eWxlPWNyZWF0ZVN0eWxlRWxlbWVudChibG9ja19udW1iZXIsYmxvY2tTZXR0aW5nQXJyYXlbaV0uZWxlbWVudENzcyk7cmVwZWF0YWJsZUN1cnJlbnRFbGVtZW50PWN1cmVlbnRFbGVtZW50c0dhdGhlcihibG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50LnRvTG93ZXJDYXNlKCkpO2lmKHJlcGVhdGFibGVDdXJyZW50RWxlbWVudCl7Zm9yKGxldCBpMT0wO2kxPGJsb2NrU2V0dGluZ0FycmF5W2ldLmVsZW1lbnRDb3VudDtpMSsrKXtjdXJyZW50RWxlbWVudENoZWNrZXI9ITE7bGV0IHJlcEVsZW1lbnRUb0FkZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXBFbGVtZW50VG9BZGQuY2xhc3NMaXN0LmFkZCgicGVyY2VudFBvaW50ZXJDbGFzcyIpO3JlcEVsZW1lbnRUb0FkZC5jbGFzc0xpc3QuYWRkKCJtYXJrZWQiKTtpZihibG9ja1NldHRpbmdBcnJheVtpXS5zYz09MSl7cmVwRWxlbWVudFRvQWRkLmNsYXNzTGlzdC5hZGQoInNjTWFyayIpfQpyZXBFbGVtZW50VG9BZGQuY2xhc3NMaXN0LmFkZCgicmVwZWF0YWJsZS1tYXJrLSIrcmVwZWF0YWJsZUJsb2NrSWRlbnRpZmllcik7cmVwRWxlbWVudFRvQWRkLmlubmVySFRNTD1ibG9ja1NldHRpbmdBcnJheVtpXS50ZXh0O2lmKGVsZW1lbnRUb0FkZFN0eWxlJiZlbGVtZW50VG9BZGRTdHlsZSE9J2RlZmF1bHQnKXtyZXBFbGVtZW50VG9BZGQuc3R5bGUudGV4dEFsaWduPWVsZW1lbnRUb0FkZFN0eWxlfQpzdW1SZXN1bHQ9TWF0aC5yb3VuZChwYXJzZUludChibG9ja1NldHRpbmdBcnJheVtpXS5maXJzdFBsYWNlKSsoaTEqcGFyc2VJbnQoYmxvY2tTZXR0aW5nQXJyYXlbaV0uZWxlbWVudFN0ZXApKS0xKTtpZihzdW1SZXN1bHQ8cmVwZWF0YWJsZUN1cnJlbnRFbGVtZW50Lmxlbmd0aCl7Y3VycmVudEVsZW1lbnQ9Y3VycmVudEVsZW1lbnRSZWNlaXZlcighMSxyZXBlYXRhYmxlQ3VycmVudEVsZW1lbnQpfQppZihjdXJyZW50RWxlbWVudCE9dW5kZWZpbmVkJiZjdXJyZW50RWxlbWVudCE9bnVsbCYmY3VycmVudEVsZW1lbnRDaGVja2VyKXtwb3NDdXJyZW50RWxlbWVudD1pbml0VGFyZ2V0VG9JbnNlcnQoYmxvY2tTZXR0aW5nQXJyYXlbaV0uZWxlbWVudFBvc2l0aW9uLCdlbGVtZW50JyxjdXJyZW50RWxlbWVudCk7Y3VycmVudEVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUocmVwRWxlbWVudFRvQWRkLHBvc0N1cnJlbnRFbGVtZW50KTtjdXJyZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdyYmluZGVyLScrYmluZGVyTmFtZSk7cmVwRWxlbWVudFRvQWRkLmNsYXNzTGlzdC5yZW1vdmUoJ2NvdmVyZWRBZCcpO2N1ckZpcnN0UGxhY2U9c3VtUmVzdWx0K3BhcnNlSW50KGJsb2NrU2V0dGluZ0FycmF5W2ldLmVsZW1lbnRTdGVwKSsxO2N1ckVsZW1lbnRDb3VudC0tO3JlcGVhdGFibGVTdWNjZXNzPSEwfWVsc2V7cmVwZWF0YWJsZVN1Y2Nlc3M9ITE7YnJlYWt9fX0KaWYocmVwZWF0YWJsZVN1Y2Nlc3M9PSEwKXt1c2VkQmxvY2tTZXR0aW5nQXJyYXlJZHMucHVzaChibG9ja19udW1iZXIpO2Jsb2NrU2V0dGluZ0FycmF5LnNwbGljZShpLS0sMSk7cG9vbGJhY2tJPTE7cmVwZWF0YWJsZUJsb2NrSWRlbnRpZmllcisrfWVsc2V7aWYoIWJsb2NrU2V0dGluZ0FycmF5W2ldLnVuc3VjY2Vzcyl7YmxvY2tTZXR0aW5nQXJyYXlbaV0udW5zdWNjZXNzPTF9ZWxzZXtibG9ja1NldHRpbmdBcnJheVtpXS51bnN1Y2Nlc3M9TWF0aC5yb3VuZChibG9ja1NldHRpbmdBcnJheVtpXS51bnN1Y2Nlc3MrMSl9CmlmKGJsb2NrU2V0dGluZ0FycmF5W2ldLnVuc3VjY2Vzcz4xMCl7dXNlZEJsb2NrU2V0dGluZ0FycmF5SWRzLnB1c2goYmxvY2tfbnVtYmVyKTtibG9ja1NldHRpbmdBcnJheS5zcGxpY2UoaS0tLDEpO3Bvb2xiYWNrST0xfWVsc2V7YmxvY2tTZXR0aW5nQXJyYXlbaV0uZmlyc3RQbGFjZT1jdXJGaXJzdFBsYWNlO2Jsb2NrU2V0dGluZ0FycmF5W2ldLmVsZW1lbnRDb3VudD1jdXJFbGVtZW50Q291bnQ7YmxvY2tTZXR0aW5nQXJyYXlbaV0uZWxlbWVudFN0ZXA9Y3VyRWxlbWVudFN0ZXA7cmVwZWF0PSEwfX19ZWxzZSBpZihibG9ja1NldHRpbmdBcnJheVtpXS5zZXR0aW5nX3R5cGU9PTMpe2xldCBlbGVtZW50VHlwZVN5bWJvbD0nJztsZXQgZWxlbWVudFNwYWNlU3ltYm9sPScnO2xldCBlbGVtZW50TmFtZT0nJztsZXQgZWxlbWVudFR5cGU9Jyc7bGV0IGVsZW1lbnRUYWc9Jyc7bGV0IGZpbmRRdWVyeT0wO2xldCBkaXJlY3RDbGFzc1Jlc3VsdD1bXTtsZXQgZGlyZWN0RWxlbWVudD1ibG9ja1NldHRpbmdBcnJheVtpXS5kaXJlY3RFbGVtZW50LnRyaW0oKTtpZihkaXJlY3RFbGVtZW50LnNlYXJjaCgnIycpPi0xKXtmaW5kUXVlcnk9MX1lbHNlIGlmKChkaXJlY3RFbGVtZW50LnNlYXJjaCgnIycpPDApJiYoZGlyZWN0RWxlbWVudC5zZWFyY2goJy4nKT4tMSkpe2RpcmVjdENsYXNzUmVzdWx0PWRpcmVjdENsYXNzRWxlbWVudERldGVjdGluZyhibG9ja1NldHRpbmdBcnJheSxkaXJlY3RFbGVtZW50KTtmaW5kUXVlcnk9ZGlyZWN0Q2xhc3NSZXN1bHQuZmluZFF1ZXJ5O2N1cnJlbnRFbGVtZW50PWRpcmVjdENsYXNzUmVzdWx0LmN1cnJlbnRFbGVtZW50fQppZihmaW5kUXVlcnk9PTEpe2N1cnJlbnRFbGVtZW50PWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZGlyZWN0RWxlbWVudCl9CmlmKGN1cnJlbnRFbGVtZW50KXtjdXJyZW50RWxlbWVudENoZWNrZXI9ITB9CmlmKGN1cnJlbnRFbGVtZW50IT11bmRlZmluZWQmJmN1cnJlbnRFbGVtZW50IT1udWxsJiZjdXJyZW50RWxlbWVudENoZWNrZXIpe3Bvc0N1cnJlbnRFbGVtZW50PWluaXRUYXJnZXRUb0luc2VydChibG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50UG9zaXRpb24sJ2VsZW1lbnQnLGN1cnJlbnRFbGVtZW50KTtjdXJyZW50RWxlbWVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtZW50VG9BZGQscG9zQ3VycmVudEVsZW1lbnQpO2VsZW1lbnRUb0FkZC5jbGFzc0xpc3QucmVtb3ZlKCdjb3ZlcmVkQWQnKTtjdXJyZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdyYmluZGVyLScrYmluZGVyTmFtZSk7dXNlZEJsb2NrU2V0dGluZ0FycmF5SWRzLnB1c2goYmxvY2tfbnVtYmVyKTtibG9ja1NldHRpbmdBcnJheS5zcGxpY2UoaS0tLDEpO3Bvb2xiYWNrST0xfWVsc2V7cmVwZWF0PSEwfX1lbHNlIGlmKGJsb2NrU2V0dGluZ0FycmF5W2ldLnNldHRpbmdfdHlwZT09NCl7ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2NvbnRlbnRfcG9pbnRlcl9pZCIpLnBhcmVudEVsZW1lbnQuYXBwZW5kKGVsZW1lbnRUb0FkZCk7dXNlZEJsb2NrU2V0dGluZ0FycmF5SWRzLnB1c2goYmxvY2tfbnVtYmVyKTtibG9ja1NldHRpbmdBcnJheS5zcGxpY2UoaS0tLDEpO3Bvb2xiYWNrST0xfWVsc2UgaWYoYmxvY2tTZXR0aW5nQXJyYXlbaV0uc2V0dGluZ190eXBlPT01KXtsZXQgY3VycmVudEVsZW1lbnRMaXN0PWN1cmVlbnRFbGVtZW50c0dhdGhlcigncCcsMSxjb250ZW50X3BvaW50ZXIucGFyZW50RWxlbWVudCk7aWYoY3VycmVudEVsZW1lbnRMaXN0JiZjdXJyZW50RWxlbWVudExpc3QubGVuZ3RoPjApe2xldCBwQ291bnQ9Y3VycmVudEVsZW1lbnRMaXN0Lmxlbmd0aDtsZXQgZWxlbWVudE51bWJlcj1NYXRoLnJvdW5kKHBDb3VudC8yKTtpZihwQ291bnQ+MSl7Y3VycmVudEVsZW1lbnQ9Y3VycmVudEVsZW1lbnRMaXN0W2VsZW1lbnROdW1iZXIrMV19CmlmKGN1cnJlbnRFbGVtZW50IT11bmRlZmluZWQmJmN1cnJlbnRFbGVtZW50IT1udWxsKXtpZihwQ291bnQ+MSl7Y3VycmVudEVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZWxlbWVudFRvQWRkLGN1cnJlbnRFbGVtZW50KX1lbHNle2N1cnJlbnRFbGVtZW50LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnRUb0FkZCxjdXJyZW50RWxlbWVudC5uZXh0U2libGluZyl9CmVsZW1lbnRUb0FkZC5jbGFzc0xpc3QucmVtb3ZlKCdjb3ZlcmVkQWQnKTtjdXJyZW50RWxlbWVudC5jbGFzc0xpc3QuYWRkKCdyYmluZGVyLScrYmluZGVyTmFtZSk7dXNlZEJsb2NrU2V0dGluZ0FycmF5SWRzLnB1c2goYmxvY2tfbnVtYmVyKTtibG9ja1NldHRpbmdBcnJheS5zcGxpY2UoaS0tLDEpO3Bvb2xiYWNrST0xfWVsc2V7cmVwZWF0PSEwfX1lbHNle3JlcGVhdD0hMH19ZWxzZSBpZihibG9ja1NldHRpbmdBcnJheVtpXS5zZXR0aW5nX3R5cGU9PTYpe2lmKGNvbnRhaW5lckZvcjZ0aC5sZW5ndGg+MCl7Zm9yKGxldCBqPTA7ajxjb250YWluZXJGb3I2dGgubGVuZ3RoO2orKyl7aWYoY29udGFpbmVyRm9yNnRoW2pdLmVsZW1lbnRQbGFjZT5ibG9ja1NldHRpbmdBcnJheVtpXS5lbGVtZW50UGxhY2Upe2lmKGo9PWNvbnRhaW5lckZvcjZ0aC5sZW5ndGgtMSl7Y29udGFpbmVyRm9yNnRoLnB1c2goYmxvY2tTZXR0aW5nQXJyYXlbaV0pO3VzZWRCbG9ja1NldHRpbmdBcnJheUlkcy5wdXNoKGJsb2NrX251bWJlcik7YmxvY2tTZXR0aW5nQXJyYXkuc3BsaWNlKGktLSwxKTtwb29sYmFja0k9MTticmVha319ZWxzZXtmb3IobGV0IGs9Y29udGFpbmVyRm9yNnRoLmxlbmd0aC0xO2s+ai0xO2stLSl7Y29udGFpbmVyRm9yNnRoW2srMV09Y29udGFpbmVyRm9yNnRoW2tdfQpjb250YWluZXJGb3I2dGhbal09YmxvY2tTZXR0aW5nQXJyYXlbaV07dXNlZEJsb2NrU2V0dGluZ0FycmF5SWRzLnB1c2goYmxvY2tfbnVtYmVyKTtibG9ja1NldHRpbmdBcnJheS5zcGxpY2UoaS0tLDEpO3Bvb2xiYWNrST0xO2JyZWFrfX19ZWxzZXtjb250YWluZXJGb3I2dGgucHVzaChibG9ja1NldHRpbmdBcnJheVtpXSk7dXNlZEJsb2NrU2V0dGluZ0FycmF5SWRzLnB1c2goYmxvY2tfbnVtYmVyKTtibG9ja1NldHRpbmdBcnJheS5zcGxpY2UoaS0tLDEpO3Bvb2xiYWNrST0xfX1lbHNlIGlmKGJsb2NrU2V0dGluZ0FycmF5W2ldLnNldHRpbmdfdHlwZT09Nyl7aWYoY29udGFpbmVyRm9yN3RoLmxlbmd0aD4wKXtmb3IobGV0IGo9MDtqPGNvbnRhaW5lckZvcjd0aC5sZW5ndGg7aisrKXtpZihjb250YWluZXJGb3I3dGhbal0uZWxlbWVudFBsYWNlPmJsb2NrU2V0dGluZ0FycmF5W2ldLmVsZW1lbnRQbGFjZSl7aWYoaj09Y29udGFpbmVyRm9yN3RoLmxlbmd0aC0xKXtjb250YWluZXJGb3I3dGgucHVzaChibG9ja1NldHRpbmdBcnJheVtpXSk7dXNlZEJsb2NrU2V0dGluZ0FycmF5SWRzLnB1c2goYmxvY2tfbnVtYmVyKTtibG9ja1NldHRpbmdBcnJheS5zcGxpY2UoaS0tLDEpO3Bvb2xiYWNrST0xO2JyZWFrfX1lbHNle2ZvcihsZXQgaz1jb250YWluZXJGb3I3dGgubGVuZ3RoLTE7az5qLTE7ay0tKXtjb250YWluZXJGb3I3dGhbaysxXT1jb250YWluZXJGb3I3dGhba119CmNvbnRhaW5lckZvcjd0aFtqXT1ibG9ja1NldHRpbmdBcnJheVtpXTt1c2VkQmxvY2tTZXR0aW5nQXJyYXlJZHMucHVzaChibG9ja19udW1iZXIpO2Jsb2NrU2V0dGluZ0FycmF5LnNwbGljZShpLS0sMSk7cG9vbGJhY2tJPTE7YnJlYWt9fX1lbHNle2NvbnRhaW5lckZvcjd0aC5wdXNoKGJsb2NrU2V0dGluZ0FycmF5W2ldKTt1c2VkQmxvY2tTZXR0aW5nQXJyYXlJZHMucHVzaChibG9ja19udW1iZXIpO2Jsb2NrU2V0dGluZ0FycmF5LnNwbGljZShpLS0sMSk7cG9vbGJhY2tJPTF9fX1jYXRjaChlKXtjb25zb2xlLmxvZyhlLm1lc3NhZ2UpfX0KdmFyIGFycmF5PXRleHRMZW5ndGhHYXRoZXJlcihsb3JkT2ZFbGVtZW50cyksdGxBcnJheT1hcnJheS5hcnJheSxsZW5ndGg9YXJyYXkubGVuZ3RoO2lmKGNvbnRhaW5lckZvcjZ0aC5sZW5ndGg+MCl7cGVyY2VudEluc2VydGVyKGxvcmRPZkVsZW1lbnRzLGNvbnRhaW5lckZvcjZ0aCx0bEFycmF5LGxlbmd0aCl9CmlmKGNvbnRhaW5lckZvcjd0aC5sZW5ndGg+MCl7c3ltYm9sSW5zZXJ0ZXIobG9yZE9mRWxlbWVudHMsY29udGFpbmVyRm9yN3RoLHRsQXJyYXkpfQpzaG9ydGNvZGVzSW5zZXJ0KCk7bGV0IHN0b3BwZXI9MDt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsZnVuY3Rpb24oKXtpZihyZXBlYXQ9ITApe3NldFRpbWVvdXQoZnVuY3Rpb24oKXthc3luY0Jsb2Nrc0luc2VydGluZ0Z1bmN0aW9uKGJsb2NrU2V0dGluZ0FycmF5KX0sMTAwKX19KX1jYXRjaChlKXtjb25zb2xlLmxvZyhlLm1lc3NhZ2UpfX0KZnVuY3Rpb24gcG9zc2libGVUYWdzSW5DaGVja0NvbmZpcm1lcihwb3NzaWJsZVRhZ3NBcnJheSxwb3NzaWJsZVRhZ3NJbkNoZWNrKXtpZihwb3NzaWJsZVRhZ3NBcnJheS5pbmNsdWRlcygiTEkiKSl7aWYocG9zc2libGVUYWdzQXJyYXkuaW5jbHVkZXMoIlVMIikpe3Bvc3NpYmxlVGFnc0luQ2hlY2sucHVzaCgiVUwiKX0KaWYocG9zc2libGVUYWdzQXJyYXkuaW5jbHVkZXMoIk9MIikpe3Bvc3NpYmxlVGFnc0luQ2hlY2sucHVzaCgiT0wiKX19CnJldHVybiExfQpmdW5jdGlvbiB0ZXh0TGVuZ3RoR2F0aGVyZXIobG9yZE9mRWxlbWVudHNMb2Mpe3ZhciBwb3NzaWJsZVRhZ3NBcnJheTtpZih0eXBlb2YgdGFnc0xpc3RGb3JUZXh0TGVuZ3RoIT09InVuZGVmaW5lZCIpe3Bvc3NpYmxlVGFnc0FycmF5PXRhZ3NMaXN0Rm9yVGV4dExlbmd0aH1lbHNle3Bvc3NpYmxlVGFnc0FycmF5PVsiUCIsIkgxIiwiSDIiLCJIMyIsIkg0IiwiSDUiLCJINiIsIkRJViIsIkJMT0NLUVVPVEUiLCJJTkRFWCIsIkFSVElDTEUiLCJTRUNUSU9OIl19CmxldCBwb3NzaWJsZVRhZ3NJbkNoZWNrPVsiRElWIiwiSU5ERVgiLCJTRUNUSU9OIl07cG9zc2libGVUYWdzSW5DaGVja0NvbmZpcm1lcihwb3NzaWJsZVRhZ3NBcnJheSxwb3NzaWJsZVRhZ3NJbkNoZWNrKTtsZXQgZXhjQXJyPWV4Y0lkQ2xVbnBhY2tlcigpLHRleHRMZW5ndGg9MCx0bEFycmF5PVtdO2Z1bmN0aW9uIHRleHRMZW5ndGhHYXRoZXJlclJlYyhsb3JkT2ZFbGVtZW50c0xvYyl7bGV0IGFsbG93ZWQ7bGV0IGNvdTE7bGV0IGNsYXNzZXNBcnJheTtsZXQgY291bnRTdWNjZXNzPTA7dHJ5e2ZvcihsZXQgaT0wO2k8bG9yZE9mRWxlbWVudHNMb2MuY2hpbGRyZW4ubGVuZ3RoO2krKyl7aWYocG9zc2libGVUYWdzQXJyYXkuaW5jbHVkZXMobG9yZE9mRWxlbWVudHNMb2MuY2hpbGRyZW5baV0udGFnTmFtZSkmJiFsb3JkT2ZFbGVtZW50c0xvYy5jaGlsZHJlbltpXS5jbGFzc0xpc3QuY29udGFpbnMoInBlcmNlbnRQb2ludGVyQ2xhc3MiKSYmbG9yZE9mRWxlbWVudHNMb2MuY2hpbGRyZW5baV0uaWQhPSJ0b2NfY29udGFpbmVyIil7aWYocG9zc2libGVUYWdzSW5DaGVjay5pbmNsdWRlcyhsb3JkT2ZFbGVtZW50c0xvYy5jaGlsZHJlbltpXS50YWdOYW1lKSYmKGxvcmRPZkVsZW1lbnRzTG9jLmNoaWxkcmVuW2ldLmNoaWxkcmVuLmxlbmd0aD4wKSl7YWxsb3dlZD0hMDtpZihsb3JkT2ZFbGVtZW50c0xvYy5jaGlsZHJlbltpXS5pZCYmZXhjQXJyLmlkLmxlbmd0aD4wKXtjb3UxPTA7d2hpbGUoZXhjQXJyLmlkW2NvdTFdKXtpZihsb3JkT2ZFbGVtZW50c0xvYy5jaGlsZHJlbltpXS5pZC50b0xvd2VyQ2FzZSgpPT1leGNBcnIuaWRbY291MV0udG9Mb3dlckNhc2UoKSl7YWxsb3dlZD0hMTticmVha30KY291MSsrfX0KaWYobG9yZE9mRWxlbWVudHNMb2MuY2hpbGRyZW5baV0uY2xhc3NMaXN0Lmxlbmd0aD4wJiZleGNBcnJbJ2NsYXNzJ10ubGVuZ3RoPjApe2NvdTE9MDt3aGlsZShleGNBcnJbJ2NsYXNzJ11bY291MV0pe2NsYXNzZXNBcnJheT1leGNBcnJbJ2NsYXNzJ11bY291MV0uc3BsaXQoJy4nKTtpZihjbGFzc2VzQXJyYXkuZXZlcnkoY2xhc3NOYW1lPT5sb3JkT2ZFbGVtZW50c0xvYy5jaGlsZHJlbltpXS5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSkpe2FsbG93ZWQ9ITE7YnJlYWt9CmNvdTErK319CmlmKGV4Y0Fyci50YWcubGVuZ3RoPjApe2NvdTE9MDt3aGlsZShleGNBcnIudGFnW2NvdTFdKXtpZihsb3JkT2ZFbGVtZW50c0xvYy5jaGlsZHJlbltpXS50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PWV4Y0Fyci50YWdbY291MV0udG9Mb3dlckNhc2UoKSl7YWxsb3dlZD0hMTticmVha30KY291MSsrfX0KaWYoYWxsb3dlZCl7aWYodGV4dExlbmd0aEdhdGhlcmVyUmVjKGxvcmRPZkVsZW1lbnRzTG9jLmNoaWxkcmVuW2ldLGV4Y0Fycixwb3NzaWJsZVRhZ3NBcnJheSxwb3NzaWJsZVRhZ3NJbkNoZWNrKSl7Y291bnRTdWNjZXNzKys7Y29udGludWV9fX0KdGV4dExlbmd0aD10ZXh0TGVuZ3RoK2xvcmRPZkVsZW1lbnRzTG9jLmNoaWxkcmVuW2ldLmlubmVyVGV4dC5sZW5ndGg7dGxBcnJheS5wdXNoKHt0YWc6bG9yZE9mRWxlbWVudHNMb2MuY2hpbGRyZW5baV0udGFnTmFtZSxsZW5ndGg6bG9yZE9mRWxlbWVudHNMb2MuY2hpbGRyZW5baV0uaW5uZXJUZXh0Lmxlbmd0aCxsZW5ndGhTdW06dGV4dExlbmd0aCxlbGVtZW50OmxvcmRPZkVsZW1lbnRzTG9jLmNoaWxkcmVuW2ldfSk7Y291bnRTdWNjZXNzKyt9fX1jYXRjaChlcil7Y29uc29sZS5sb2coZXIubWVzc2FnZSl9CnJldHVybiBjb3VudFN1Y2Nlc3M+MH0KdGV4dExlbmd0aEdhdGhlcmVyUmVjKGxvcmRPZkVsZW1lbnRzTG9jKTtyZXR1cm57YXJyYXk6dGxBcnJheSxsZW5ndGg6dGV4dExlbmd0aH19CndpbmRvdy5hc3luY0Z1bmN0aW9uTGF1bmNoZXI9ZnVuY3Rpb24oKXtpZih3aW5kb3cuanNJbnB1dGVyTGF1bmNoIT09dW5kZWZpbmVkJiZbMTUsMTBdLmluY2x1ZGVzKHdpbmRvdy5qc0lucHV0ZXJMYXVuY2gpJiYodHlwZW9mIGFzeW5jQmxvY2tzSW5zZXJ0aW5nRnVuY3Rpb24hPT0ndW5kZWZpbmVkJykmJih0eXBlb2YgYXN5bmNCbG9ja3NJbnNlcnRpbmdGdW5jdGlvbj09PSdmdW5jdGlvbicpJiZ0eXBlb2YgZW5kZWRTYyE9PSd1bmRlZmluZWQnJiZ0eXBlb2YgZW5kZWRDYyE9PSd1bmRlZmluZWQnJiZ0eXBlb2YgdXNlZEFkQmxvY2tzQXJyYXkhPT0ndW5kZWZpbmVkJyYmdHlwZW9mIHVzZWRCbG9ja1NldHRpbmdBcnJheUlkcyE9PSd1bmRlZmluZWQnJiZ0eXBlb2Ygc2FtZUVsZW1lbnRBZnRlcldpZHRoIT09J3VuZGVmaW5lZCcmJnR5cGVvZiBzYW1lRWxlbWVudEFmdGVyRXhjQ2xhc3NJZCE9PSd1bmRlZmluZWQnJiZ0eXBlb2Ygc2FtZUVsZW1lbnRBZnRlckZyb21Db25zdHJ1Y3Rpb24hPT0ndW5kZWZpbmVkJyYmdHlwZW9mIHJiX3RlbXBFbGVtZW50X2NoZWNrIT09J3VuZGVmaW5lZCcmJnR5cGVvZiByYl90ZW1wRWxlbWVudCE9PSd1bmRlZmluZWQnJiZ0eXBlb2Ygd2luZG93LmpzSW5wdXRlckxhdW5jaCE9PSd1bmRlZmluZWQnKXthc3luY0Jsb2Nrc0luc2VydGluZ0Z1bmN0aW9uKGJsb2NrU2V0dGluZ0FycmF5KTtpZighZW5kZWRTYyl7c2hvcnRjb2Rlc0luc2VydCgpfQppZighZW5kZWRDYyl7fX1lbHNle3NldFRpbWVvdXQoZnVuY3Rpb24oKXthc3luY0Z1bmN0aW9uTGF1bmNoZXIoKX0sNTApfX07ZnVuY3Rpb24gYXN5bmNJbnNlcnRpbmdzSW5zZXJ0aW5nRnVuY3Rpb24oaW5zZXJ0aW5nc0FycmF5KXtsZXQgY3VycmVudEVsZW1lbnRGb3JJbnNlcnRpbmc9MDtsZXQgY3VycmVudEVsZW1lbnRUb01vdmU9MDtsZXQgcG9zaXRpb25FbGVtZW50PTA7bGV0IHBvc2l0aW9uPTA7bGV0IGluc2VydFRvQWRkPTA7bGV0IHBvc3RJZD0wO2xldCByZXBlYXRTZWFyY2g9MDtpZihpbnNlcnRpbmdzQXJyYXkmJmluc2VydGluZ3NBcnJheS5sZW5ndGg+MCl7Zm9yKGxldCBpPTA7aTxpbnNlcnRpbmdzQXJyYXkubGVuZ3RoO2krKyl7aWYoIWluc2VydGluZ3NBcnJheVtpXS51c2VkfHwoaW5zZXJ0aW5nc0FycmF5W2ldLnVzZWQmJmluc2VydGluZ3NBcnJheVtpXS51c2VkPT0wKSl7cG9zaXRpb25FbGVtZW50PWluc2VydGluZ3NBcnJheVtpXS5wb3NpdGlvbl9lbGVtZW50O3Bvc2l0aW9uPWluc2VydGluZ3NBcnJheVtpXS5wb3NpdGlvbjtpbnNlcnRUb0FkZD1pbnNlcnRpbmdzQXJyYXlbaV0uY29udGVudDtwb3N0SWQ9aW5zZXJ0aW5nc0FycmF5W2ldLnBvc3RJZDtjdXJyZW50RWxlbWVudEZvckluc2VydGluZz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKHBvc2l0aW9uRWxlbWVudCk7Y3VycmVudEVsZW1lbnRUb01vdmU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmNvdmVyZWRJbnNlcnRpbmdzW2RhdGEtaWQ9IicrcG9zdElkKyciXScpO2lmKGN1cnJlbnRFbGVtZW50Rm9ySW5zZXJ0aW5nKXtpZihwb3NpdGlvbj09MCl7Y3VycmVudEVsZW1lbnRGb3JJbnNlcnRpbmcucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoY3VycmVudEVsZW1lbnRUb01vdmUsY3VycmVudEVsZW1lbnRGb3JJbnNlcnRpbmcpO2N1cnJlbnRFbGVtZW50VG9Nb3ZlLmNsYXNzTGlzdC5yZW1vdmUoJ2NvdmVyZWRJbnNlcnRpbmdzJyk7aW5zZXJ0aW5nc0FycmF5W2ldLnVzZWQ9MX1lbHNle2N1cnJlbnRFbGVtZW50Rm9ySW5zZXJ0aW5nLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGN1cnJlbnRFbGVtZW50VG9Nb3ZlLGN1cnJlbnRFbGVtZW50Rm9ySW5zZXJ0aW5nLm5leHRTaWJsaW5nKTtjdXJyZW50RWxlbWVudFRvTW92ZS5jbGFzc0xpc3QucmVtb3ZlKCdjb3ZlcmVkSW5zZXJ0aW5ncycpO2luc2VydGluZ3NBcnJheVtpXS51c2VkPTF9fWVsc2V7cmVwZWF0U2VhcmNoPTF9fX19CmlmKHJlcGVhdFNlYXJjaD09MSl7c2V0VGltZW91dChmdW5jdGlvbigpe2FzeW5jSW5zZXJ0aW5nc0luc2VydGluZ0Z1bmN0aW9uKGluc2VydGluZ3NBcnJheSl9LDEwMCl9fQpmdW5jdGlvbiBpbnNlcnRpbmdzRnVuY3Rpb25MYXVuY2goKXtpZih3aW5kb3cuanNJbnNlcnRpbmdzTGF1bmNoIT09dW5kZWZpbmVkJiZqc0luc2VydGluZ3NMYXVuY2g9PTI1KXthc3luY0luc2VydGluZ3NJbnNlcnRpbmdGdW5jdGlvbihpbnNlcnRpbmdzQXJyYXkpfWVsc2V7c2V0VGltZW91dChmdW5jdGlvbigpe2luc2VydGluZ3NGdW5jdGlvbkxhdW5jaCgpfSwxMDApfX0KZnVuY3Rpb24gc2V0TG9uZ0NhY2hlKCl7bGV0IHhodHRwPW5ldyBYTUxIdHRwUmVxdWVzdCgpO2xldCBzZW5kRGF0YT0nYWN0aW9uPXNldExvbmdDYWNoZSZ0eXBlPWxvbmdDYXRjaGluZyc7eGh0dHAub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKHJlZGF0YSl7aWYodGhpcy5yZWFkeVN0YXRlPT00JiZ0aGlzLnN0YXR1cz09MjAwKXtjb25zb2xlLmxvZygnbG9uZyBjYWNoZSBkZXBsb3llZCcpfX07eGh0dHAub3BlbigiUE9TVCIscmJfYWpheHVybCwhMCk7eGh0dHAuc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC10eXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIik7eGh0dHAuc2VuZChzZW5kRGF0YSl9CmZ1bmN0aW9uIGNhY2hlUGxhY2luZyhhbGVydF90eXBlLGVycm9ySW5mbz1udWxsKXtsZXQgYWRCbG9ja3M9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnBlcmNlbnRQb2ludGVyQ2xhc3MgLicrYmxvY2tfY2xhc3Nlcy5qb2luKCcsIC5wZXJjZW50UG9pbnRlckNsYXNzIC4nKSk7bGV0IGN1ckFkQmxvY2s7bGV0IG9rU3RhdGVzPVsnZG9uZScsJ3JlZnJlc2gtd2FpdCcsJ25vLWJsb2NrJywnZmV0Y2hlZCddO2xldCBibG9ja0FpZD1udWxsO2xldCBibG9ja0lkO2lmKHR5cGVvZiBjYWNoZWRCbG9ja3NBcnJheSE9PSd1bmRlZmluZWQnJiZjYWNoZWRCbG9ja3NBcnJheSYmY2FjaGVkQmxvY2tzQXJyYXkubGVuZ3RoPjAmJmFkQmxvY2tzJiZhZEJsb2Nrcy5sZW5ndGg+MCl7Zm9yKGxldCBpPTA7aTxhZEJsb2Nrcy5sZW5ndGg7aSsrKXtibG9ja0FpZD1hZEJsb2Nrc1tpXS5kYXRhc2V0LmFpZDtpZighYmxvY2tBaWQpe2Jsb2NrSWQ9YWRCbG9ja3NbaV0uZGF0YXNldC5pZDtpZihjYWNoZWRCbG9ja3NBcnJheVtibG9ja0lkXSl7alF1ZXJ5KGFkQmxvY2tzW2ldKS5odG1sKGNhY2hlZEJsb2Nrc0FycmF5W2Jsb2NrSWRdKX19fX0KaWYoYWxlcnRfdHlwZSYmYWxlcnRfdHlwZT09J2hpZ2gnKXtzZXRMb25nQ2FjaGUoKX19CmZ1bmN0aW9uIHN5bWJvbEluc2VydGVyKGxvcmRPZkVsZW1lbnRzLGNvbnRhaW5lckZvcjd0aCx0bEFycmF5KXt0cnl7dmFyIGN1cnJlbnRDaGlsZHJlbkxlbmd0aD0wO2xldCBwcmV2aW91c0JyZWFrPTA7bGV0IG5lZWRsZUxlbmd0aDtsZXQgY3VycmVudFN1bUxlbmd0aDtsZXQgZWxlbWVudFRvQWRkO2xldCBlbGVtZW50VG9CaW5kO2xldCBlbGVtZW50VG9BZGRTdHlsZTtsZXQgYmxvY2tfbnVtYmVyO2xldCBiaW5kZXJOYW1lO2lmKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFya2VkU3BhbjEiKSl7Zm9yKGxldCBpPTA7aTxjb250YWluZXJGb3I3dGgubGVuZ3RoO2krKyl7cHJldmlvdXNCcmVhaz0wO2N1cnJlbnRDaGlsZHJlbkxlbmd0aD0wO2N1cnJlbnRTdW1MZW5ndGg9MDtuZWVkbGVMZW5ndGg9TWF0aC5hYnMoY29udGFpbmVyRm9yN3RoW2ldLmVsZW1lbnRQbGFjZSk7YmluZGVyTmFtZT1lbGVtZW50QmluZGVyTmFtZUdlbmVyYXRvcigpO2VsZW1lbnRUb0FkZD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtlbGVtZW50VG9BZGQuY2xhc3NMaXN0LmFkZCgicGVyY2VudFBvaW50ZXJDbGFzcyIpO2VsZW1lbnRUb0FkZC5jbGFzc0xpc3QuYWRkKCJtYXJrZWQiKTtpZihjb250YWluZXJGb3I3dGhbaV0uc2M9PTEpe2VsZW1lbnRUb0FkZC5jbGFzc0xpc3QuYWRkKCJzY01hcmsiKX0KZWxlbWVudFRvQWRkLmRhdGFzZXQucmJpbmRlcj1iaW5kZXJOYW1lO2VsZW1lbnRUb0FkZC5pbm5lckhUTUw9Y29udGFpbmVyRm9yN3RoW2ldLnRleHQ7YmxvY2tfbnVtYmVyPWVsZW1lbnRUb0FkZC5jaGlsZHJlblswXS5hdHRyaWJ1dGVzWydkYXRhLWlkJ10udmFsdWU7aWYoIWVsZW1lbnRUb0FkZCl7Y29udGludWV9CmVsZW1lbnRUb0FkZFN0eWxlPWNyZWF0ZVN0eWxlRWxlbWVudChibG9ja19udW1iZXIsY29udGFpbmVyRm9yN3RoW2ldLmVsZW1lbnRDc3MpO2lmKGVsZW1lbnRUb0FkZFN0eWxlJiZlbGVtZW50VG9BZGRTdHlsZSE9J2RlZmF1bHQnKXtlbGVtZW50VG9BZGQuc3R5bGUudGV4dEFsaWduPWVsZW1lbnRUb0FkZFN0eWxlfQppZihjb250YWluZXJGb3I3dGhbaV0uZWxlbWVudFBsYWNlPDApe2ZvcihsZXQgaj10bEFycmF5Lmxlbmd0aC0xO2o+LTE7ai0tKXtjdXJyZW50U3VtTGVuZ3RoPWN1cnJlbnRTdW1MZW5ndGgrdGxBcnJheVtqXS5sZW5ndGg7aWYobmVlZGxlTGVuZ3RoPGN1cnJlbnRTdW1MZW5ndGgpe2VsZW1lbnRUb0JpbmQ9dGxBcnJheVtqXS5lbGVtZW50O2VsZW1lbnRUb0JpbmQ9Y3VycmVudEVsZW1lbnRSZWNlaXZlclNwZWMoITAsaix0bEFycmF5LGVsZW1lbnRUb0JpbmQpO2VsZW1lbnRUb0JpbmQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZWxlbWVudFRvQWRkLGVsZW1lbnRUb0JpbmQpO2VsZW1lbnRUb0JpbmQuY2xhc3NMaXN0LmFkZCgncmJpbmRlci0nK2JpbmRlck5hbWUpO2VsZW1lbnRUb0FkZC5jbGFzc0xpc3QucmVtb3ZlKCdjb3ZlcmVkQWQnKTticmVha319fWVsc2UgaWYoY29udGFpbmVyRm9yN3RoW2ldLmVsZW1lbnRQbGFjZT09MCl7ZWxlbWVudFRvQmluZD10bEFycmF5WzBdLmVsZW1lbnQ7ZWxlbWVudFRvQmluZC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtZW50VG9BZGQsZWxlbWVudFRvQmluZCk7ZWxlbWVudFRvQmluZC5jbGFzc0xpc3QuYWRkKCdyYmluZGVyLScrYmluZGVyTmFtZSk7ZWxlbWVudFRvQWRkLmNsYXNzTGlzdC5yZW1vdmUoJ2NvdmVyZWRBZCcpfWVsc2V7Zm9yKGxldCBqPTA7ajx0bEFycmF5Lmxlbmd0aDtqKyspe2N1cnJlbnRTdW1MZW5ndGg9Y3VycmVudFN1bUxlbmd0aCt0bEFycmF5W2pdLmxlbmd0aDtpZihuZWVkbGVMZW5ndGg8Y3VycmVudFN1bUxlbmd0aCl7ZWxlbWVudFRvQmluZD10bEFycmF5W2pdLmVsZW1lbnQ7ZWxlbWVudFRvQmluZD1jdXJyZW50RWxlbWVudFJlY2VpdmVyU3BlYyghMSxqLHRsQXJyYXksZWxlbWVudFRvQmluZCk7ZWxlbWVudFRvQmluZC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtZW50VG9BZGQsZWxlbWVudFRvQmluZC5uZXh0U2libGluZyk7ZWxlbWVudFRvQmluZC5jbGFzc0xpc3QuYWRkKCdyYmluZGVyLScrYmluZGVyTmFtZSk7ZWxlbWVudFRvQWRkLmNsYXNzTGlzdC5yZW1vdmUoJ2NvdmVyZWRBZCcpO2JyZWFrfX19fQp2YXIgc3Bhbk1hcmtlcj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7c3Bhbk1hcmtlci5zZXRBdHRyaWJ1dGUoImlkIiwibWFya2VkU3BhbjEiKTtsb3JkT2ZFbGVtZW50cy5wcmVwZW5kKHNwYW5NYXJrZXIpfX1jYXRjaChlKXtjb25zb2xlLmxvZyhlKX19CmZ1bmN0aW9uIHBlcmNlbnRJbnNlcnRlcihsb3JkT2ZFbGVtZW50cyxjb250YWluZXJGb3I2dGgsdGxBcnJheSx0ZXh0TGVuZ3RoKXt0cnl7dmFyIHRleHROZWVkeUxlbmd0aD0wO2xldCBlbGVtZW50VG9BZGQ7dmFyIGVsZW1lbnRUb0JpbmQ7bGV0IGVsZW1lbnRUb0FkZFN0eWxlO2xldCBibG9ja19udW1iZXI7dmFyIGJpbmRlck5hbWU7ZnVuY3Rpb24gaW5zZXJ0QnlQZXJjZW50cyh0ZXh0TGVuZ3RoKXtsZXQgbG9jYWxNaWRkbGVWYWx1ZT0wO2ZvcihsZXQgaj0wO2o8Y29udGFpbmVyRm9yNnRoLmxlbmd0aDtqKyspe3RleHROZWVkeUxlbmd0aD1NYXRoLnJvdW5kKHRleHRMZW5ndGgqKGNvbnRhaW5lckZvcjZ0aFtqXS5lbGVtZW50UGxhY2UvMTAwKSk7Zm9yKGxldCBpPTA7aTx0bEFycmF5Lmxlbmd0aDtpKyspe2lmKHRsQXJyYXlbaV0ubGVuZ3RoU3VtPj10ZXh0TmVlZHlMZW5ndGgpe2JpbmRlck5hbWU9ZWxlbWVudEJpbmRlck5hbWVHZW5lcmF0b3IoKTtlbGVtZW50VG9BZGQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZWxlbWVudFRvQWRkLmNsYXNzTGlzdC5hZGQoInBlcmNlbnRQb2ludGVyQ2xhc3MiKTtlbGVtZW50VG9BZGQuY2xhc3NMaXN0LmFkZCgibWFya2VkIik7aWYoY29udGFpbmVyRm9yNnRoW2pdLnNjPT0xKXtlbGVtZW50VG9BZGQuY2xhc3NMaXN0LmFkZCgic2NNYXJrIil9CmVsZW1lbnRUb0FkZC5kYXRhc2V0LnJiaW5kZXI9YmluZGVyTmFtZTtlbGVtZW50VG9BZGQuaW5uZXJIVE1MPWNvbnRhaW5lckZvcjZ0aFtqXS50ZXh0O2lmKCFlbGVtZW50VG9BZGQpe2JyZWFrfQpibG9ja19udW1iZXI9ZWxlbWVudFRvQWRkLmNoaWxkcmVuWzBdLmF0dHJpYnV0ZXNbJ2RhdGEtaWQnXS52YWx1ZTtlbGVtZW50VG9BZGRTdHlsZT1jcmVhdGVTdHlsZUVsZW1lbnQoYmxvY2tfbnVtYmVyLGNvbnRhaW5lckZvcjZ0aFtqXS5lbGVtZW50Q3NzKTtpZihlbGVtZW50VG9BZGRTdHlsZSYmZWxlbWVudFRvQWRkU3R5bGUhPSdkZWZhdWx0Jyl7ZWxlbWVudFRvQWRkLnN0eWxlLnRleHRBbGlnbj1lbGVtZW50VG9BZGRTdHlsZX0KbG9jYWxNaWRkbGVWYWx1ZT10bEFycmF5W2ldLmxlbmd0aFN1bS1NYXRoLnJvdW5kKHRsQXJyYXlbaV0ubGVuZ3RoLzIpO2VsZW1lbnRUb0JpbmQ9dGxBcnJheVtpXS5lbGVtZW50O2N1cnJlbnRFbGVtZW50UmVjZWl2ZXJTcGVjKCExLGksdGxBcnJheSxlbGVtZW50VG9CaW5kKTtpZih0ZXh0TmVlZHlMZW5ndGg8bG9jYWxNaWRkbGVWYWx1ZSl7ZWxlbWVudFRvQmluZC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtZW50VG9BZGQsZWxlbWVudFRvQmluZCl9ZWxzZXtlbGVtZW50VG9CaW5kLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGVsZW1lbnRUb0FkZCxlbGVtZW50VG9CaW5kLm5leHRTaWJsaW5nKX0KZWxlbWVudFRvQmluZC5jbGFzc0xpc3QuYWRkKCdyYmluZGVyLScrYmluZGVyTmFtZSk7ZWxlbWVudFRvQWRkLmNsYXNzTGlzdC5yZW1vdmUoJ2NvdmVyZWRBZCcpO2JyZWFrfX19CnJldHVybiExfQpmdW5jdGlvbiBjbGVhclRsTWFya3MoKXtsZXQgbWFya3NGb3JEZWxldGluZz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcudGV4dExlbmd0aE1hcmtlcicpO2lmKG1hcmtzRm9yRGVsZXRpbmcubGVuZ3RoPjApe2ZvcihsZXQgaT0wO2k8bWFya3NGb3JEZWxldGluZy5sZW5ndGg7aSsrKXttYXJrc0ZvckRlbGV0aW5nW2ldLnJlbW92ZSgpfX19CmlmKCFkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibWFya2VkU3BhbiIpKXtpbnNlcnRCeVBlcmNlbnRzKHRleHRMZW5ndGgpO2NsZWFyVGxNYXJrcygpO3ZhciBzcGFuTWFya2VyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTtzcGFuTWFya2VyLnNldEF0dHJpYnV0ZSgiaWQiLCJtYXJrZWRTcGFuIik7bG9yZE9mRWxlbWVudHMucHJlcGVuZChzcGFuTWFya2VyKX19Y2F0Y2goZSl7Y29uc29sZS5sb2coZS5tZXNzYWdlKX19CmZ1bmN0aW9uIHNhdmVDb250ZW50QmxvY2soY29udGVudENvbnRhaW5lcil7dHJ5e2lmKCFnYXRoZXJfY29udGVudCl7Y29uc29sZS5sb2coJ2NvbnRlbnQgZ2F0aGVyIHNhdmUgZnVuY3Rpb24gZW50ZXJlZCcpO2xldCB4aHR0cD1uZXcgWE1MSHR0cFJlcXVlc3QoKTtsZXQgc2VuZERhdGE9J2FjdGlvbj1SRldQX3NhdmVDb250ZW50Q29udGFpbmVyJnR5cGU9Z2F0aGVyQ29udGVudEJsb2NrJmRhdGE9Jytjb250ZW50Q29udGFpbmVyO3hodHRwLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihyZWRhdGEpe2lmKHRoaXMucmVhZHlTdGF0ZT09NCYmdGhpcy5zdGF0dXM9PTIwMCl7Y29uc29sZS5sb2coJ2NvbnRlbnQgZ2F0aGVyIHN1Y2NlZWQnKX1lbHNle2NvbnNvbGUubG9nKCdjb250ZW50IGdhdGhlciBnb25lIHdyb25nJyl9fTt4aHR0cC5vcGVuKCJQT1NUIixyYl9hamF4dXJsLCEwKTt4aHR0cC5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiKTt4aHR0cC5zZW5kKHNlbmREYXRhKX19Y2F0Y2goZXIpe2NvbnNvbGUubG9nKCdjb250ZW50IGdhdGhlciBlcnJvcjogJytlcisnOycpfX0Kd2luZG93LmdhdGhlckNvbnRlbnRCbG9jaz1mdW5jdGlvbigpe2xldCBjUG9pbnRlcj1udWxsLGNQb2ludGVyUGFyZW50PW51bGwsY1BvaW50ZXJQYXJlbnRTdHJpbmc9bnVsbCxjbGFzc1dvcmRzPVsnY29udGVudCcsJ2VudHJ5JywncG9zdCcsJ3dyYXAnLCdkZXNjcmlwdGlvbicsJ3RheG9ub215J10sY2xhc3NDaG9vc2VkPSExO2NQb2ludGVyPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjb250ZW50X3BvaW50ZXJfaWQnKTtpZihjUG9pbnRlcil7aWYod2luZG93LmpzSW5wdXRlckxhdW5jaCE9PTE1KXtyZXR1cm4hMX0KY1BvaW50ZXJQYXJlbnQ9Y1BvaW50ZXIucGFyZW50RWxlbWVudDtpZihjUG9pbnRlclBhcmVudCl7aWYoY1BvaW50ZXJQYXJlbnQuaWQpe2NQb2ludGVyUGFyZW50U3RyaW5nPScjJytjUG9pbnRlclBhcmVudC5pZH1lbHNle2lmKGNQb2ludGVyUGFyZW50LmNsYXNzTGlzdC5sZW5ndGg+MCl7Y1BvaW50ZXJQYXJlbnRTdHJpbmc9Jy4nK2NQb2ludGVyUGFyZW50LmNsYXNzTGlzdFswXTtmb3IobGV0IGo9MDtqPGNsYXNzV29yZHMubGVuZ3RoO2orKyl7Zm9yKGxldCBpPTA7aTxjUG9pbnRlclBhcmVudC5jbGFzc0xpc3QubGVuZ3RoO2krKyl7aWYoY1BvaW50ZXJQYXJlbnQuY2xhc3NMaXN0W2ldLmluY2x1ZGVzKGNsYXNzV29yZHNbal0pKXtjUG9pbnRlclBhcmVudFN0cmluZz0nLicrY1BvaW50ZXJQYXJlbnQuY2xhc3NMaXN0W2ldO2NsYXNzQ2hvb3NlZD0hMDticmVha319CmlmKGNsYXNzQ2hvb3NlZD09PSEwKXticmVha319fX0KaWYoY1BvaW50ZXJQYXJlbnRTdHJpbmcpe2NvbnNvbGUubG9nKCdjb250ZW50IGdhdGhlciBjb250ZW50IGJsb2NrIGRldGVjdGVkJyk7c2F2ZUNvbnRlbnRCbG9jayhjUG9pbnRlclBhcmVudFN0cmluZyl9fX1lbHNle2NvbnNvbGUubG9nKCdjb250ZW50IGdhdGhlciBkZWxheWVkJyk7c2V0VGltZW91dChmdW5jdGlvbigpe2dhdGhlckNvbnRlbnRCbG9jaygpfSw1MDApfX07d2luZG93LnJlbW92ZU1hcmdpbkNsYXNzPWZ1bmN0aW9uKGJsb2NrT2JqZWN0KXtpZihibG9ja09iamVjdCYmdHlwZW9mIHdpbmRvdy5qc0lucHV0ZXJMYXVuY2ghPT0ndW5kZWZpbmVkJyYmWzE1LDEwXS5pbmNsdWRlcyh3aW5kb3cuanNJbnB1dGVyTGF1bmNoKSl7bGV0IGJpbmRlck5hbWUsbmVlZGVkRWxlbWVudCxjdXJyZW50RGlyZWN0aW9uLHNlZWtlckl0ZXJhdGlvbkNvdW50LGN1cnJlbnRTdWJsaW5nO2JpbmRlck5hbWU9YmxvY2tPYmplY3QuZGF0YXNldC5yYmluZGVyO2lmKGJpbmRlck5hbWUpe3NlZWtlckl0ZXJhdGlvbkNvdW50PTA7Y3VycmVudERpcmVjdGlvbj0nYmVmb3JlJztkb3tzZWVrZXJJdGVyYXRpb25Db3VudCsrO2N1cnJlbnRTdWJsaW5nPWJsb2NrT2JqZWN0Lm5leHRFbGVtZW50U2libGluZztpZihjdXJyZW50U3VibGluZyYmY3VycmVudFN1YmxpbmcuY2xhc3NMaXN0LmNvbnRhaW5zKCdyYmluZGVyLScrYmluZGVyTmFtZSkpe25lZWRlZEVsZW1lbnQ9Y3VycmVudFN1Ymxpbmd9fXdoaWxlKGN1cnJlbnRTdWJsaW5nJiYhbmVlZGVkRWxlbWVudCYmc2Vla2VySXRlcmF0aW9uQ291bnQ8NSk7aWYoIW5lZWRlZEVsZW1lbnQpe3NlZWtlckl0ZXJhdGlvbkNvdW50PTA7Y3VycmVudERpcmVjdGlvbj0nYWZ0ZXInO2Rve3NlZWtlckl0ZXJhdGlvbkNvdW50Kys7Y3VycmVudFN1Ymxpbmc9YmxvY2tPYmplY3QucHJldmlvdXNFbGVtZW50U2libGluZztpZihjdXJyZW50U3VibGluZyYmY3VycmVudFN1YmxpbmcuY2xhc3NMaXN0LmNvbnRhaW5zKCdyYmluZGVyLScrYmluZGVyTmFtZSkpe25lZWRlZEVsZW1lbnQ9Y3VycmVudFN1Ymxpbmd9fXdoaWxlKGN1cnJlbnRTdWJsaW5nJiYhbmVlZGVkRWxlbWVudCYmc2Vla2VySXRlcmF0aW9uQ291bnQ8NSk7fQppZihuZWVkZWRFbGVtZW50KXtpZihjdXJyZW50RGlyZWN0aW9uPT09J2JlZm9yZScpe25lZWRlZEVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgncmZ3cF9yZW1vdmVkTWFyZ2luVG9wJyl9ZWxzZXtuZWVkZWRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ3Jmd3BfcmVtb3ZlZE1hcmdpbkJvdHRvbScpfX19fQpyZXR1cm4hMX07ZnVuY3Rpb24gZWxlbWVudEJpbmRlck5hbWVHZW5lcmF0b3IoKXtsZXQgYmluZGVyTmFtZT0nJyxjaGVja2VkRWxlbWVudHMscGFzc2VkPSExO3doaWxlKHBhc3NlZD09PSExKXtiaW5kZXJOYW1lPU1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSoxMDAwMDApO2NoZWNrZWRFbGVtZW50cz1kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1yYmluZGVyPSInK2JpbmRlck5hbWUrJyJdJyk7aWYoY2hlY2tlZEVsZW1lbnRzLmxlbmd0aDwxKXtwYXNzZWQ9ITB9fQpyZXR1cm4gYmluZGVyTmFtZX0=
data:text/javascript;base64,cmJDb25maWc9e3N0YXJ0OnBlcmZvcm1hbmNlLm5vdygpLHJiRG9tYWluOid3d3cuNTczOC5ydScscm90YXRvcjonMXV2bTMnfTt0b2tlbj1sb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnMXV2bTMnKXx8KDFlNisnJykucmVwbGFjZSgvWzAxOF0vZyxjPT4oY15jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKG5ldyBVaW50OEFycmF5KDEpKVswXSYxNT4+Yy80KS50b1N0cmluZygxNikpO3JzZGZoc2U9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7cnNkZmhzZS5zZXRBdHRyaWJ1dGUoJ3NyYycsJy8vd3d3LjU3MzgucnUvMXV2bTMubWluLmpzPycrdG9rZW4pO3JzZGZoc2Uuc2V0QXR0cmlidXRlKCdhc3luYycsJ2FzeW5jJyk7cnNkZmhzZS5zZXRBdHRyaWJ1dGUoJ3R5cGUnLCd0ZXh0L2phdmFzY3JpcHQnKTtkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHJzZGZoc2UpO2xvY2FsU3RvcmFnZS5zZXRJdGVtKCcxdXZtMycsdG9rZW4p
data:text/javascript;base64,dmFyIGJsb2NrX2NsYXNzZXM9WyJjb250ZW50X3JiIiwiY250MzJfcmxfYmdfc3RyIiwicmxfY250X2JnIl07ZnVuY3Rpb24gYWRkQXR0ckl0ZW0oY2xhc3NOYW1lKXtpZihkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuIitjbGFzc05hbWUpJiYhYmxvY2tfY2xhc3Nlcy5pbmNsdWRlcyhjbGFzc05hbWUpKXtibG9ja19jbGFzc2VzLnB1c2goY2xhc3NOYW1lKX19
data:text/javascript;base64,dmFyIHEydzNfc2lkZWJhcl9vcHRpb25zPVt7InNpZGViYXIiOiJzaWRlYmFyLTEiLCJ1c2Vfc3RpY2t5X3Bvc2l0aW9uIjohMSwibWFyZ2luX3RvcCI6MCwibWFyZ2luX2JvdHRvbSI6MCwic3RvcF9lbGVtZW50c19zZWxlY3RvcnMiOiIiLCJzY3JlZW5fbWF4X3dpZHRoIjowLCJzY3JlZW5fbWF4X2hlaWdodCI6MCwid2lkZ2V0cyI6WyIjY3VzdG9tX2h0bWwtMiJdfV0=
data:text/javascript;base64,dmFyIHNldHRpbmdzX2FycmF5PXsicmF0aW5nX3RleHRfYXZlcmFnZSI6Ilx1MDQ0MVx1MDQ0MFx1MDQzNVx1MDQzNFx1MDQzZFx1MDQzNVx1MDQzNSIsInJhdGluZ190ZXh0X2Zyb20iOiJcdTA0MzhcdTA0MzciLCJsaWdodGJveF9kaXNwbGF5IjoiMSIsInNpZGViYXJfZml4ZWQiOiIifTt2YXIgd3BzX2FqYXg9eyJ1cmwiOiJodHRwczpcL1wvZmwtY2F0ZXJpbmcucnVcL3dwLWFkbWluXC9hZG1pbi1hamF4LnBocCIsIm5vbmNlIjoiNzFjYWFjMGU3ZCJ9
https://fl-catering.ru/wp-content/litespeed/js/07ceeddc66009c500925eb4f372b9dd3.js?ver=b9dd3
https://fl-catering.ru/wp-content/litespeed/js/378898d41bab840d8cab9708c1c3a826.js?ver=3a826
https://fl-catering.ru/wp-content/litespeed/js/531af5a0cf4f34e8edf3473d0f0dd9de.js?ver=dd9de
https://fl-catering.ru/wp-includes/js/jquery/jquery.min.js
Внешние ссылки 1
Внутренние ссылки 66

meta-теги

viewportwidth=device-width, initial-scale=1
robotsindex, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1
twitter:cardsummary_large_image
yandex-verificatione2c2897f9f14296b
google-site-verificationoySkbjXUOkS2LT-XG3JNYH9So3MNNKf2OnmFKge59VE
wmail-verification7c1b88bbf77c1b8c40f1d1f16c56e8d8
ahrefs-site-verification1605aac7567744803b960c6a7e1b739e449176d18549d992706ba9dd323907b3
msapplication-TileImagehttps://fl-catering.ru/wp-content/uploads/2015/09/cake.png
og:localeru_RU
og:typewebsite
og:titleВсе идеи подарков
og:descriptionКак весело провести праздник? Поздравления, какие дарить подарки, сценарии праздников
og:urlhttps://fl-catering.ru/
og:site_nameВсе идеи подарков

Скриншот сайта

Скриншота нет

Сервер сайта

IP адрес сайта 104.21.86.124
172.67.219.167
Веб-сервер cloudflare
Версия HTTP HTTP 3
DNS сервера gloria.ns.cloudflare.com
hans.ns.cloudflare.com
DNS записи 5
A записи
1: ip: 104.21.86.124
2: ip: 172.67.219.167
NS записи
3: target: gloria.ns.cloudflare.com
4: target: hans.ns.cloudflare.com
SOA записи
5: mname: gloria.ns.cloudflare.com
5: rname: dns.cloudflare.com
5: serial: 2332000098
5: refresh: 10000
5: retry: 2400
5: expire: 604800
5: minimum-ttl: 1800

Ответ сервера

Группы заголовков: заголовки безопасности, заголовки кэширования.
status HTTP/2 200
date Thu, 15 Feb 2024 05:18:58 GMT
content-type text/html; charset=UTF-8
x-dns-prefetch-control on
link ; rel="https://api.w.org/"
vary Accept-Encoding
x-litespeed-cache hit
cf-cache-status DYNAMIC
report-to {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=ohGT1ddSDVWRbrjBAaAfcNyIdD07yD%2BDNYn%2FCY7Sb9DAkTQMzh8k7OoEIopUDIxLCjp6y8E1fPBM8gB8%2Bm8NwLwsRwLg9Es9C5iRAv4S7V4dew3iM32RPXAz%2BQSS7mOTUg%3D%3D"}],"group":"cf-nel","max_age":604800}
nel {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
strict-transport-security max-age=31536000; includeSubDomains; preload
x-content-type-options nosniff
server cloudflare
cf-ray 855b17e0eb549938-ARN
content-encoding gzip
alt-svc h3=":443"; ma=86400

Оцените сайт

Не ставьте оценку если отвечаете на другой отзыв или пишите комментарий:

Можно добавить текст отзыва, ответ на другой отзыв, или просто комментарий к сайту:
captcha