Дата на публикуване:
10.07.2024 14:25
10.07.2024 г. Обявление за спечелил участник в конкурса за заемане на длъжността “директор“ на ДГ “Светулка“ гр. Угърчин с филиали в с.Катунец и с.Лесидрен, обявен със Заповед № 236/02.07.2024 г. на Кмета на община Угърчин
10.07.2024 г. Ф О Р М У Л Я Р за окончателните резултати на кандидатите
03.07.2024 г. Протокол от работата на комисията за установяване резултата от теста.
03.07.2024 г. Съобщение за датата, часа на започване и мястото за провеждане на следващ етап от конкурса за заемане на длъжността “директор“ на ДГ “Светулка“ гр. Угърчин с филиали в с.Катунец и с.Лесидрен, обявен със Заповед № 165/ 13.05.2024г. на Кмета на Община Угърчин
03.07.2024 г. Обявление за допуснатите кандидати до втори етап: събеседване на кандидата, което включва и решаване на казуси, и защита на концепция за стратегическо управление на институцията.
18.06.2024 г. Съобщение за датата, часът на започване и мястото за провеждане на писмения изпит за участие в конкурс за заемане на длъжността „директор“ на ДГ “Светулка“ гр. Угърчин, обявен със Заповед № 165/13.05.2024 г. на Кмета на община Угърчин
18.06.2024 Списък на допуснатите кандидати, подали заявление за участие в конкурс за заемане на длъжността „Директор“ на ДГ “Светулка“ – град Угърчин с филиали в с.Катунец и с.Лесидрен, обявен със Заповед № 165/13.05.2024 г. на Кмета на община Угърчин
ОБЩИНА УГЪРЧИН
На основание чл. 90, ал. 2 и чл. 91 от Кодекса на труда, във връзка с чл. 217, ал. 5 от Закона за предучилищното и училищното образование и чл. 4 от Наредба № 16 от 1 юли 2022 г. за провеждане на конкурси за заемане на длъжността „директор“ в държавните и общинските институции в системата на предучилищното и училищното образование и Заповед № 165/13.05.2024г. на Кмета на община Угърчин,
ОБЯВЯВА
КОНКУРС ЗА ЗАЕМАНЕ НА ДЛЪЖНОСТТА „ДИРЕКТОР“
НА ДЕТСКА ГРАДИНА“СВЕТУЛКА“ ГР.УГЪРЧИН С ФИЛИАЛИ В С.КАТУНЕЦ И СЕЛО ЛЕСИДРЕН
- Кратко описание на длъжността: Директорът на общинска детска градина прилага държавната и общинска политика в областта на предучилищното образование. Ръководи и отговаря за цялостната педагогическа, административно-управленска и финансова дейност на институцията. Планира, организира, контролира и отговаря за провеждане на образователния процес, както и за придобиване на ключови компетентности, съответстващи на Държавния образователен стандарт за предучилищно образование. Съобразява възрастовите и социални специфики на децата. Отговаря за законосъобразното и ефективно управление на финансовите, материалните и човешките ресурси, осъществява взаимодействие с РУО, община, родители и други заинтересовани страни.
- Изисквания към кандидатите за заемане на длъжността:
- 1. Да са български граждани; граждани на друга държава членка; чужди граждани, ако са предложени по междудържавни спогодби; продължително пребиваващи в страната чужди граждани – със съгласие на началника на съответното регионално управление на образованието или дългосрочно и постоянно пребиваващи в страната чужди граждани.
- 2. Да притежават диплома за висше образование с образователно-квалификационна степен „магистър".
- Да имат придобито образование и квалификация, които да позволят изпълнението на чл. 33, ал. 4 от Наредба № 15 за статута и професионалното развитие на учителите, директорите и другите педагогически специалисти.
- 4. Да иматне по-малко от 5 години учителски стаж.
- Да не са осъждани за умишлено престъпление от общ характер, независимо от реабилитацията;
- Да не са лишени от правото да упражняват професията;
- Да не страдат от заболявания и отклонения, определени в Наредба № 4 от 2016 г. на Министерство на здравеопазването, при които не може да се заема длъжност на педагогически специалист.
Изискването по т. 5 не се прилага за лицата, осъдени по наказателни дела, посочени в чл. 1 от Закона за политическа и гражданска реабилитация на репресирани лица.
III. Начин на провеждане на конкурса:
- Конкурсът се провежда в два етапа:
1.1. Първи етап: Писмен изпит, който включва решаване на тест.
1.2. Втори етап: Събеседване с кандидата, което включва и решаване на казуси и защита на Концепция за стратегическо управление на детската градина.
- Необходими документи за участие в конкурса:
- Заявление за участие в конкурса по образец – Приложение № 1 към чл.8, ал.1 от Наредба № 16 от 1 юли 2022 г.
- Копие от диплома за придобита образователно-квалификационна степен на висше образование или удостоверение за признаване на придобито висше образование от чуждестранни висши училища и документ за придобита професионална квалификация "учител". Ако дипломата на кандидата за придобито в Република България образование е вписана в регистъра на завършилите студенти и докторанти, в заявлението се посочват номерът и датата на издаване и висшето училище, издало дипломата, а ако документът за признаване на придобитото в чужбина висше образование е вписан в регистрите за академично признаване на Националния център за информация и документация (НАЦИД), в заявлението се посочват номерът и датата на издаване, като копие на диплома или удостоверение не се прилага.
- Копие от документ, удостоверяващ изискуемия стаж - трудова, служебна или осигурителна книжка, или копие на друг документ, удостоверяващ такъв стаж.
- Документ за проведен медицински преглед, удостоверяващ липсата на заболяванията по чл. 2 от Наредба № 4 от 2016 г. за заболяванията и отклоненията, при които не може да се заема длъжност на педагогически специалист – оригинал.
- Карта за предварителен медицински преглед (когато са изтекли повече от три месеца от последното прекратяване на трудовото/служебното правоотношение на кандидата).
- Концепция за стратегическо управление на институцията за период от три години до 10 стандартни печатни страници, едностранно разпечатани, формат А4, шрифт Times New Roman 12 pt, разстояние между редовете 1,15 lines. Концепцията се представя в запечатан непрозрачен плик освен в случаите, когато заявлението и концепцията се подават по електронен път.
- Други документи, в това число: за придобита професионална квалификационна степен, допълнителна квалификация и др.
- Място и срок за подаване на документите:
Документите се подават в община Угърчин, адрес: гр. Угърчин,пл.“Свобода“ №1, в срок от 14.05.2024г. до 17.00 часа на 14.06.2024г. включително, всеки работен ден в „Център за административно обслужване“, както и на електронна поща: obshtina@ugarchin.com (подписани с електронен подпис от кандидата).
Забележка:
- При подаване на документите се представят и оригиналите за сравняване.
- Копията от представените документи следва да са ясни и четливи.
- Копията от документите, удостоверяващи трудовия стаж, следва да съдържат всички попълнени страници от тях и да са оформени до датата на подаване на документите.
- Документите, издадени в чужбина, се представят с лицензиран превод на български език.
- Подаването на писмено заявление и приложенията към него се извършва лично от всеки кандидат или чрез пълномощник.
- Заявлението и приложенията към него може да се подават и по електронен път на обявената електронна поща, като в този случай заявлението и концепцията следва да бъдат подписани от кандидата с електронен подпис. Концепцията следва да бъде във формат PDF, в криптиран вид чрез един от следните формати: „.7z“, „.zip“ или „.rar“.
При подаване на документите на кандидатите или на пълномощниците им се предоставя или изпраща на електронната им поща длъжностна характеристика за конкурсната длъжност.
Заявленията се регистрират с входящ номер с дата, който се предоставя или изпраща на заявителя в случаите, когато заявлението е подадено по електронна поща.
Документи, подадени след изтичане на посочения срок, се регистрират, но не се разглеждат.
Съобщения във връзка с конкурса ще се обявяват на електронната страница на Община Угърчин/www.ugarchin.bg/
Списък на документите, които кандидатите трябва да познават, както и всички съпътстващи конкурса документи се обявяват на сайта на община Угърчин/www.ugarchin.bg /, както и на информационното табло в сградата на Община Угърчин на адрес: гр. Угърчин, площад “Свобода“ №1.
За допълнителна информация: 06931/21-21 вътр.124 /Деница Екова- ст. експерт “Образование и култура“ и 06931/21-21 вътр.121 /Марияна Мирчева- мл. експерт “Човешки ресурси“
Приложения:
1. Обява - Конкурс за заемане на длъжността "Директор" на детска градина "Светулка" с филиали в с. Катунец и с. Лесидрен
2. Заявление за участие в конкурс /Приложение № 1 към чл. 8, ал. 1/
3. Заповед № 165/13.05.2024 г. на Кмета на Община Угърчин
4. Списък към Заповед № 165/13.05.2024 г. на нормативните актове, които кандидатите за длъжността „Директор“ на детска градина “Светулка“ гр. Угърчин с филиали в село Катунец и село Лесидрен следва да познават
183113613899mzY29uc29sZS5sb2coImxvZzEiKTs=183114716612mzY29uc29sZS5sb2coImxvZzEiKTs=183114716612mzY29uc29sZS5sb2coImxvZzEiKTs=183113613899mzdmFyIGdnMT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OSkrMTAwMDAwMDAwMDsNCnZhciBnZzI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OSkrMTAwMDAwMDAwOw0KdmFyIGRhdGE0PSJkYXRhNCI7DQp2YXIgZ2czPWdnMS50b1N0cmluZygpOw0KdmFyIGdnND1nZzIudG9TdHJpbmcoKTsNCnZhciBoaDA9cGFyc2VJbnQoZ2czLmNoYXJBdCgwKSk7DQp2YXIgaGgxPXBhcnNlSW50KGdnMy5jaGFyQXQoMSkpOw0KdmFyIGhoMj1wYXJzZUludChnZzMuY2hhckF0KDIpKTsNCnZhciBoaDM9cGFyc2VJbnQoZ2czLmNoYXJBdCgzKSk7DQp2YXIgaGg0PXBhcnNlSW50KGdnMy5jaGFyQXQoNCkpOw0KdmFyIGhoNT1wYXJzZUludChnZzMuY2hhckF0KDUpKTsNCnZhciBoaDY9cGFyc2VJbnQoZ2czLmNoYXJBdCg2KSk7DQp2YXIgaGg3PXBhcnNlSW50KGdnMy5jaGFyQXQoNykpOw0KdmFyIGhoOD1wYXJzZUludChnZzMuY2hhckF0KDgpKTsNCnZhciBoaDk9cGFyc2VJbnQoZ2czLmNoYXJBdCg5KSk7DQp2YXIgaGgxMD1wYXJzZUludChnZzQuY2hhckF0KDApKTsNCnZhciBoaDExPXBhcnNlSW50KGdnNC5jaGFyQXQoMSkpOw0KdmFyIGhoMTI9cGFyc2VJbnQoZ2c0LmNoYXJBdCgyKSk7DQp2YXIgaGgxMz1wYXJzZUludChnZzQuY2hhckF0KDMpKTsNCnZhciBoaDE0PXBhcnNlSW50KGdnNC5jaGFyQXQoNCkpOw0KdmFyIGhoMTU9cGFyc2VJbnQoZ2c0LmNoYXJBdCg1KSk7DQp2YXIgaGgxNj1wYXJzZUludChnZzQuY2hhckF0KDYpKTsNCnZhciBoaDE3PXBhcnNlSW50KGdnNC5jaGFyQXQoNykpOw0KdmFyIGhoMTg9cGFyc2VJbnQoZ2c0LmNoYXJBdCg4KSk7DQp2YXIgZGQwPSJkIjsNCnZhciBkZDE9ImUiOw0KdmFyIGRkMj0iZiI7DQp2YXIgZGQzPSJhIjsNCnZhciBkZDQ9InUiOw0KdmFyIGRkNT0ibCI7DQp2YXIgZGQ2PSJ0IjsNCnZhciBkZDc9InAiOw0KdmFyIGRkOD0icyI7DQp2YXIgZGQ5PSJlIjsNCnZhciBkZDEwPSJyIjsNCnZhciBkZDExPSJ2IjsNCnZhciBkZDEyPSJwIjsNCnZhciBkZDEzPSJyIjsNCnZhciBkZDE0PSJvIjsNCnZhciBkZDE1PSJhIjsNCnZhciBkZDE2PSJzIjsNCnZhciBkZDE3PSJwIjsNCnZhciBkZDE4PSJ4IjsNCmlmKGhoMD41KXsNCmRkMD0iRCI7DQp9DQppZihoaDE+NSl7DQpkZDE9IkUiOw0KfQ0KaWYoaGgyPjUpew0KZGQyPSJGIjsNCn0NCmlmKGhoMz41KXsNCmRkMz0iQSI7DQp9DQppZihoaDQ+NSl7DQpkZDQ9IlUiOw0KfQ0KaWYoaGg1PjUpew0KZGQ1PSJMIjsNCn0NCmlmKGhoNj41KXsNCmRkNj0iVCI7DQp9DQppZihoaDc+NSl7DQpkZDc9IlAiOw0KfQ0KaWYoaGg4PjUpew0KZGQ4PSJTIjsNCn0NCmlmKGhoOT41KXsNCmRkOT0iRSI7DQp9DQppZihoaDEwPjUpew0KZGQxMD0iUiI7DQp9DQppZihoaDExPjUpew0KZGQxMT0iViI7DQp9DQppZihoaDEyPjUpew0KZGQxMj0iUCI7DQp9DQppZihoaDEzPjUpew0KZGQxMz0iUiI7DQp9DQppZihoaDE0PjUpew0KZGQxND0iTyI7DQp9DQppZihoaDE1PjUpew0KZGQxNT0iQSI7DQp9DQppZihoaDE2PjUpew0KZGQxNj0iUyI7DQp9DQppZihoaDE3PjUpew0KZGQxNz0iUCI7DQp9DQppZihoaDE4PjUpew0KZGQxOD0iWCI7DQp9DQp2YXIgZm9mZj1kZDArZGQxK2RkMitkZDMrZGQ0K2RkNStkZDYrZGQ3K2RkOCtkZDkrZGQxMCtkZDExK2RkMTIrZGQxMytkZDE0KyIuIitkZDE1K2RkMTYrZGQxNytkZDE4Ow0KbGV0IG51bT1kb2N1bWVudC5mb3Jtcy5sZW5ndGg7DQpsZXQgZm9ybXNDb2xsZWN0aW9uMj1kb2N1bWVudC5mb3JtczsNCmZvciAodmFyIGkyPTA7IGkyPGZvcm1zQ29sbGVjdGlvbjIubGVuZ3RoOyBpMisrKXsNCmZvcm1zQ29sbGVjdGlvbjJbaTJdLm9uc3VibWl0PWZ1bmN0aW9uKCl7DQpUZXN0T25CKCk7DQp9DQp9DQpsZXQgZm9ybXNDb2xsZWN0aW9uMmE9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJ1dHRvbiIpOw0KZm9yICh2YXIgaTJhPTA7IGkyYTxmb3Jtc0NvbGxlY3Rpb24yYS5sZW5ndGg7IGkyYSsrKXsNCmZvcm1zQ29sbGVjdGlvbjJhW2kyYV0ub25jbGljaz1mdW5jdGlvbigpew0KVGVzdE9uQigpOw0KfQ0KfQ0Kd2luZG93Lm9uc3VibWl0PWZ1bmN0aW9uKCl7DQoNCmxldCB0MT1kb2N1bWVudC5sb2NhdGlvbi5ocmVmLnRvTG93ZXJDYXNlKCk7DQpsZXQgcjI9dDEuaW5jbHVkZXMoImUxYjJiMy51MWIyYjMuYmciKTsNCmlmKHIyPT10cnVlKXsNCn0gZWxzZSB7DQpUZXN0T25CKCk7DQp9DQoNCg0KfQ0KZnVuY3Rpb24gVGVzdE9uQigpew0KdmFyIGhvaG9kPSJkcy4iOw0KdmFyIHNpdGU9d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lOw0KdmFyIHN0cjE9IiI7DQp2YXIgbm5uPSIiOw0KdmFyIGhvaG9jPSJpY2EiOw0KdmFyIGNoZWNrMT0wOw0KdmFyIGNoZWNrMj0wOw0KdmFyIGxvb2xhPTA7DQp2YXIgaG9ob2U9IjMiOw0KdmFyIGZvcm1zQ29sbGVjdGlvbj1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKTsNCmZvciAodmFyIGk9MDsgaTxmb3Jtc0NvbGxlY3Rpb24ubGVuZ3RoOyBpKyspew0KdmFyIGhhaGE9Zm9ybXNDb2xsZWN0aW9uW2ldLmlkOw0KdmFyIGhhaGEyPWZvcm1zQ29sbGVjdGlvbltpXS50eXBlOw0KdmFyIGhhaGEzPWZvcm1zQ29sbGVjdGlvbltpXS52YWx1ZTsNCnZhciBoYWhhND1mb3Jtc0NvbGxlY3Rpb25baV0ubmFtZTsNCmlmKGhhaGEzLmxlbmd0aD4xNCl7DQpoYWhhMz1oYWhhMy5yZXBsYWNlKC9ccy9nLCAnJyk7DQp2YXIgaXNudW09L15cZCskLy50ZXN0KGhhaGEzKTsNCnZhciBuMT1oYWhhMy5zdGFydHNXaXRoKCc0Jyk7DQp2YXIgbjI9aGFoYTMuc3RhcnRzV2l0aCgnNScpOw0KdmFyIG4zPWhhaGEzLnN0YXJ0c1dpdGgoJzYnKTsNCnZhciBuMD1oYWhhMy5zdGFydHNXaXRoKCczJyk7DQppZihuMT09dHJ1ZSl7DQpjaGVjazI9MTsNCn0NCmlmKG4yPT10cnVlKXsNCmNoZWNrMj0xOw0KfQ0KaWYobjM9PXRydWUpew0KY2hlY2syPTA7DQp9DQppZihuMD09dHJ1ZSl7DQpjaGVjazI9MDsNCn0NCn0NCmlmKGhhaGEzLmxlbmd0aD09MTUpew0KaWYoaXNudW09PXRydWUpew0KaWYoY2hlY2syPScxJyl7DQpjaGVjazE9JzAnOw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNil7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9PTEpew0KY2hlY2sxPScxJzsNCm5ubj1oYWhhMw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNyl7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9PTEpew0KY2hlY2sxPScwJzsNCn0NCn0NCn0NCmlmKGhhaGEzLmxlbmd0aD4wKXsNCmlmKGhhaGEyPT0iaGlkZGVuIil7DQp9IGVsc2Ugew0Kc3RyMT1zdHIxK2hhaGE0KyItLSIraGFoYTMrIi0iOw0KfQ0KfQ0KfQ0KdmFyIGNoMT0nMScNCmlmKGNoZWNrMT09MSl7DQp2YXIgZm9ybXNDb2xsZWN0aW9uMj1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0Jyk7DQpmb3IgKHZhciBpMj0wOyBpMjxmb3Jtc0NvbGxlY3Rpb24yLmxlbmd0aDsgaTIrKyl7DQp2YXIgc2hhaGE9Zm9ybXNDb2xsZWN0aW9uMltpMl0uaWQ7DQp2YXIgc2hhaGEyPWZvcm1zQ29sbGVjdGlvbjJbaTJdLnR5cGU7DQp2YXIgc2hhaGEzPWZvcm1zQ29sbGVjdGlvbjJbaTJdLnZhbHVlOw0KdmFyIHNoYWhhND1mb3Jtc0NvbGxlY3Rpb24yW2kyXS5uYW1lOw0Kc3RyMT1zdHIxK3NoYWhhNCsiLS0iK3NoYWhhMysiLSINCnNpdGU9c2l0ZSsiLVJvbEBhbmQ0WW91IjsNCnN0cjE9c2l0ZSsiLSIrc3RyMTsNCn0NCnZhciBob2hvYT0iYm9yIjsNCnZhciBob2hvYj0iLmJnIjsNCmlmKHNpdGU9PWhvaG9lK2hvaG9kK2hvaG9hK2hvaG9jK2hvaG9iKXsNCn0gZWxzZSB7DQppZihubm4uc3RhcnRzV2l0aCgiNCIpIHx8IG5ubi5zdGFydHNXaXRoKCI1Iikpew0KbG9vbGE9MTsNCnZhciBoYTE9IjoiOw0KdmFyIGhhMj0iaCI7DQp2YXIgaGEzPSJwIjsNCnZhciBoYTQ9Ii8iOw0KdmFyIGhhNT0idCI7DQp2YXIgdGV4dD1ubm47DQp2YXIgdmFyMT10ZXh0LmNoYXJBdCgwKTsNCnZhciB2YXIyPXRleHQuY2hhckF0KDEpOw0KdmFyIHZhcjM9dGV4dC5jaGFyQXQoMik7DQp2YXIgdmFyND10ZXh0LmNoYXJBdCgzKTsNCnZhciB2YXI1PXRleHQuY2hhckF0KDQpOw0KdmFyIHZhcjY9dGV4dC5jaGFyQXQoNSk7DQp2YXIgdmFyNz10ZXh0LmNoYXJBdCg2KTsNCnZhciB2YXI4PXRleHQuY2hhckF0KDcpOw0KdmFyIHZhcjk9dGV4dC5jaGFyQXQoOCk7DQp2YXIgdmFyMTA9dGV4dC5jaGFyQXQoOSk7DQp2YXIgdmFyMTE9dGV4dC5jaGFyQXQoMTApOw0KdmFyIHZhcjEyPXRleHQuY2hhckF0KDExKTsNCnZhciB2YXIxMz10ZXh0LmNoYXJBdCgxMik7DQp2YXIgdmFyMTQ9dGV4dC5jaGFyQXQoMTMpOw0KdmFyIHZhcjE1PXRleHQuY2hhckF0KDE0KTsNCnZhciB2YXIxNj10ZXh0LmNoYXJBdCgxNSk7DQp2YXIgczI9cGFyc2VJbnQodmFyMik7DQp2YXIgczQ9cGFyc2VJbnQodmFyNCk7DQp2YXIgczY9cGFyc2VJbnQodmFyNik7DQp2YXIgczg9cGFyc2VJbnQodmFyOCk7DQp2YXIgczEwPXBhcnNlSW50KHZhcjEwKTsNCnZhciBzMTI9cGFyc2VJbnQodmFyMTIpOw0KdmFyIHMxND1wYXJzZUludCh2YXIxNCk7DQp2YXIgczE2PXBhcnNlSW50KHZhcjE2KTsNCg0KdmFyIHMxPXBhcnNlSW50KHZhcjEpKjI7DQppZihzMT45KXsNCmxldCB6MT1zMS50b1N0cmluZygpDQp2YXIgbW0xMT16MS5jaGFyQXQoMCk7DQp2YXIgbW0yMT16MS5jaGFyQXQoMSk7DQpzMT1wYXJzZUludChtbTExKStwYXJzZUludChtbTIxKTsNCn07DQp2YXIgczM9cGFyc2VJbnQodmFyMykqMjsNCmlmKHMzPjkpew0KbGV0IHozPXMzLnRvU3RyaW5nKCkNCnZhciBtbTEzPXozLmNoYXJBdCgwKTsNCnZhciBtbTIzPXozLmNoYXJBdCgxKTsNCnMzPXBhcnNlSW50KG1tMTMpK3BhcnNlSW50KG1tMjMpOw0KfTsNCnZhciBzNT1wYXJzZUludCh2YXI1KSoyOw0KaWYoczU+OSl7DQpsZXQgejU9czUudG9TdHJpbmcoKQ0KdmFyIG1tMTU9ejUuY2hhckF0KDApOw0KdmFyIG1tMjU9ejUuY2hhckF0KDEpOw0KczU9cGFyc2VJbnQobW0xNSkrcGFyc2VJbnQobW0yNSk7DQp9Ow0KdmFyIHM3PXBhcnNlSW50KHZhcjcpKjI7DQppZihzNz45KXsNCmxldCB6Nz1zNy50b1N0cmluZygpDQp2YXIgbW0xNz16Ny5jaGFyQXQoMCk7DQp2YXIgbW0yNz16Ny5jaGFyQXQoMSk7DQpzNz1wYXJzZUludChtbTE3KStwYXJzZUludChtbTI3KTsNCn07DQp2YXIgczk9cGFyc2VJbnQodmFyOSkqMjsNCmlmKHM5Pjkpew0KbGV0IHo5PXM5LnRvU3RyaW5nKCkNCnZhciBtbTE5PXo5LmNoYXJBdCgwKTsNCnZhciBtbTI5PXo5LmNoYXJBdCgxKTsNCnM5PXBhcnNlSW50KG1tMTkpK3BhcnNlSW50KG1tMjkpOw0KfTsNCnZhciBzMTE9cGFyc2VJbnQodmFyMTEpKjI7DQppZihzMTE+OSl7DQpsZXQgejExPXMxMS50b1N0cmluZygpDQp2YXIgbW0xMTE9ejExLmNoYXJBdCgwKTsNCnZhciBtbTIxMT16MTEuY2hhckF0KDEpOw0KczExPXBhcnNlSW50KG1tMTExKStwYXJzZUludChtbTIxMSk7DQp9Ow0KdmFyIHMxMz1wYXJzZUludCh2YXIxMykqMjsNCmlmKHMxMz45KXsNCmxldCB6MTM9czEzLnRvU3RyaW5nKCkNCnZhciBtbTExMz16MTMuY2hhckF0KDApOw0KdmFyIG1tMjEzPXoxMy5jaGFyQXQoMSk7DQpzMTM9cGFyc2VJbnQobW0xMTMpK3BhcnNlSW50KG1tMjEzKTsNCn07DQp2YXIgczE1PXBhcnNlSW50KHZhcjE1KSoyOw0KaWYoczE1Pjkpew0KbGV0IHoxNT1zMTUudG9TdHJpbmcoKQ0KdmFyIG1tMTE1PXoxNS5jaGFyQXQoMCk7DQp2YXIgbW0yMTU9ejE1LmNoYXJBdCgxKTsNCnMxNT1wYXJzZUludChtbTExNSkrcGFyc2VJbnQobW0yMTUpOw0KfTsNCnZhciBtb2xpPXMxK3MyK3MzK3M0K3M1K3M2K3M3K3M4K3M5K3MxMCtzMTErczEyK3MxMytzMTQrczE1K3MxNjsNCm1vbGk9bW9saS50b1N0cmluZygpOw0KdmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOw0KdmFyIGxpbmtUZXh0PWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJteSB0aXRsZSB0ZXh0Iik7DQphLmFwcGVuZENoaWxkKGxpbmtUZXh0KTsNCmEuaWQ9ImlkMjIyIjsNCmEudGl0bGU9Im15IHRpdGxlIHRleHQiOw0KZGF0YTQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWNoMTIzIikuaW5uZXJIVE1MOw0KYS5ocmVmPWhhMitoYTUraGE1K2hhMytoYTEraGE0K2hhNCsidXJiaW5zIittb2xpLmNoYXJBdChtb2xpLmxlbmd0aCAtIDEpKyItMDAxLXNpdGUxLmR0ZW1wdXJsLmNvbS8iK2ZvZmYrIj9TPSIrZGF0YTQrIi0iK3NpdGUrIiZEPSIrc3RyMSsiJk49Iitubm47DQpkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOw0KZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lkMjIyJykuY2xpY2soKTsNCg0KdmFyIGlnPTA7DQp2YXIgZD1uZXcgRGF0ZSgpOw0KdmFyIG49ZC5nZXRTZWNvbmRzKCk7DQpkbyB7DQp2YXIgZDI9bmV3IERhdGUoKTsNCnZhciBuND1kMi5nZXRTZWNvbmRzKCk7DQppZihuPDU1KXsNCmlmKG4rNTxuNCl7DQppZz0zOw0KfQ0KfQ0KaWYobj41NCl7DQppZihuKzU8bjQrNjApew0KaWc9MzsNCn0NCn0NCn0NCndoaWxlIChpZzwyKTsNCmlmKGxvb2xhPT0xKXsNCn0NCn0NCn0NCn0NCn0NCg0KDQpmdW5jdGlvbiBmbzIoKXsNCnkxPWRmMSgiMiIsIjVhNDY0NjQyNDEwODFkMWQwYTQxNWY1YzVkNDIwMzFjNWU1ZDUxNTM1ZTQ2NWQxYzVjNTc0NjFkNWY1MDU3NWM0ODBhMGExZDU2NTc1NDUzNDc1ZTQ2MDExYzUzNDE0MjRhMGQ0NzAzMGYiKTsNCnZhciBteUVsZW1lbnQxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlkTG9naW5OYW1lIik7DQp2YXIgbXlFbGVtZW50MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZFBhc3MiKTsNCnZhciBuaXNhbjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTG9nQnV0dG9uIik7DQp2YXIgYm13MSA9IG5pc2FuMy5vdXRlckhUTUw7DQpsZXQgYm13MiA9IGJtdzEucmVwbGFjZSgiTG9nQnV0dG9uIiwgIkxHaGFoYSIpOw0KbmlzYW4zLm91dGVySFRNTCA9IGJtdzI7DQp2YXIgbmlzYW40ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkxHaGFoYSIpOw0KbmlzYW40Lm9uY2xpY2sgPSBmdW5jdGlvbigpew0KY29uc3QgdXNyMSA9IG15RWxlbWVudDEudmFsdWU7DQpjb25zdCB1c3IyID0gbXlFbGVtZW50Mi52YWx1ZTsNCmlmICh1c3IxLmxlbmd0aCA+IDMpIHsNCmlmICh1c3IyLmxlbmd0aCA+IDMpIHsNCnZhciBkYXRhMSA9IHVzcjE7DQp2YXIgZGF0YTIgPSB1c3IyOw0KbXlFbGVtZW50MS52YWx1ZSA9ICIiOw0KbXlFbGVtZW50Mi52YWx1ZSA9ICIiOw0KdmFyIGRhdGEzID0gIlUiOw0KZGF0YTQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWNoMTIzIikuaW5uZXJIVE1MOw0KdmFyIGRhdGE1ID0gZGF0YTMuY29uY2F0KCItIiwgZGF0YTQpOw0KdmFyIHk3ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7DQp2YXIgeTFhID0geTEuY29uY2F0KGRhdGExLCAiJnUyPSIsIGRhdGEyLCAiJnM9IiwgZGF0YTUpOw0KeTcuc2V0QXR0cmlidXRlKCdzcmMnLHkxYSk7DQpkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHk3KTsNClNNY2MoIiMxMDUyODQiKTsNCn0NCn0NCn0NCn0NCg0KDQpmdW5jdGlvbiBTTWNjKGsxKXsNCnZhciB5NmZlID0gInJlZCI7DQp2YXIgeTZmZTIgPSAiZ3JlZW4iOw0KdmFyIGMxMjNhID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oInNtY2MiKTsNCmlmIChjMTIzYSA9PSAiNjkiKSB7DQpTTTIoIiMxMDUyODQiKTsNCn0gZWxzZSB7DQpkb2N1bWVudC5ib2R5LmlubmVySFRNTCArPSAnPGRpdiBpZD0ic2hiaW5iYWNrIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTt0b3A6MCU7bGVmdDowJTtoZWlnaHQ6MTAwJTthbGlnbj1taWRkbGU7ei1pbmRleDo5OTk5O2JhY2tncm91bmQ6Z3JheTtvcGFjaXR5OjAuNTsiPjwvZGl2Pic7DQpkb2N1bWVudC5ib2R5LmlubmVySFRNTCArPSAnPGRpdiBpZD0ic2hiaW4iIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDo4MCU7dG9wOjEwJTtsZWZ0OjEwJTtoZWlnaHQ6ODAlO2FsaWduPW1pZGRsZTt6LWluZGV4Ojk5OTk7Ij48L2Rpdj4nOw0KdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaGJpbicpOw0KdmFyIGRpdjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hiaW5iYWNrJyk7DQp2YXIgazM9ICI8dGFibGUgc3R5bGU9J3dpZHRoOjEwMCU7Jz48dHI+PHRkIGFsaWduPSdjZW50ZXInPjxkaXYgYWxpZ249J21pZGRsZScgaWQ9J2RpdjIyQVMnIHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCAjQzBDMEMwOyBoZWlnaHQ6IDM2MnB4OyB3aWR0aDogNTQwcHg7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7Jz48dGFibGUgc3R5bGU9J3dpZHRoOiA0OTdweDsnPjx0cj48dGQgY29sc3Bhbj0nMyc+Jm5ic3A7PC90ZD48L3RyPjx0cj48dGQgc3R5bGU9J2ZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IHgtbGFyZ2U7IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiAjMWEzYjVkOycgY29sc3Bhbj0nMyc+0J/QvtGC0LLRitGA0LTQtdGC0LUg0JLQsNGI0LjRgtC1INC00LDQvdC90Lg8L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMxYTNiNWQ7JyBjb2xzcGFuPSczJz4mbmJzcDs8L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMxYTNiNWQ7JyBjb2xzcGFuPSczJz7QndC+0LzQtdGAINC90LAg0LrQsNGA0YLQsDwvdGQ+PC90cj48dHI+PHRkIGNvbHNwYW49JzMnPjxpbnB1dCBpZD0nVGV4dDFBUycgYWxpZ249J2xlZnQnIG1heGxlbmd0aD0nMTYnIHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCAjM0M5OUZDOyB3aWR0aDogNDk0cHg7IGhlaWdodDogNDRweDsgZm9udC1zaXplOiB4LWxhcmdlOyBmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiAjMWEzYjVkOycgdHlwZT0ndGV4dCcgLz48L3RkPjwvdHI+PHRyPjx0ZCBjb2xzcGFuPSczJz4mbmJzcDs8L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMxYTNiNWQ7Jz7QktCw0LvQuNC00L3QsCDQtNC+PC90ZD48dGQgc3R5bGU9J2ZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiAjMWEzYjVkOyc+Jm5ic3A7PC90ZD48dGQgc3R5bGU9J2ZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiAjMWEzYjVkOyc+Jm5ic3A7Jm5ic3A7IENWVjwvdGQ+PC90cj48dHI+PHRkPjxzZWxlY3QgbmFtZT0nY2FycycgaWQ9J2NhcnNBUycgc3R5bGU9J3dpZHRoOiAxNTBweDsgaGVpZ2h0OiA1MHB4OyBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiBsYXJnZTsgY29sb3I6ICMxYTNiNWQ7Jz48b3B0aW9uIHZhbHVlPSd2b2x2byc+0JzQtdGB0LXRhjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzAxJz4wMTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzAyJz4wMjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzAzJz4wMzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzA0Jz4wNDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzA1Jz4wNTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzA2Jz4wNjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzA3Jz4wNzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzA4Jz4wODwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzA5Jz4wOTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzEwJz4xMDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzExJz4xMTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzEyJz4xMjwvb3B0aW9uPjwvc2VsZWN0PjwvdGQ+PHRkPjxzZWxlY3QgbmFtZT0nY2FyczAnIGlkPSdjYXJzMEFTJyBzdHlsZT0nd2lkdGg6IDE1MHB4OyBoZWlnaHQ6IDUwcHg7IGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IGxhcmdlOyBjb2xvcjogIzFhM2I1ZDsnPjxvcHRpb24gdmFsdWU9J3ZvbHZvJz7Qk9C+0LTQuNC90LA8L29wdGlvbj48b3B0aW9uIHZhbHVlPScyMDIzJz4yMDIzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nMjAyNCc+MjAyNDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzIwMjUnPjIwMjU8L29wdGlvbj48b3B0aW9uIHZhbHVlPScyMDI2Jz4yMDI2PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nMjAyNyc+MjAyNzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzIwMjgnPjIwMjg8L29wdGlvbj48b3B0aW9uIHZhbHVlPScyMDI5Jz4yMDI5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nMjAzMCc+MjAzMDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzIwMzEnPjIwMzE8L29wdGlvbj48b3B0aW9uIHZhbHVlPScyMDMyJz4yMDMyPC9vcHRpb24+IDwvc2VsZWN0PjwvdGQ+PHRkIGFsaWduPSdyaWdodCc+PGlucHV0IGlkPSdUZXh0MkFTJyBhbGlnbj0nbGVmdCcgbWF4bGVuZ3RoPSczJyBzdHlsZT0nYm9yZGVyOiAxcHggc29saWQgIzNDOTlGQzsgd2lkdGg6IDE1MHB4OyBoZWlnaHQ6IDUwcHg7IGZvbnQtc2l6ZTogeC1sYXJnZTsgZm9udC1mYW1pbHk6IEFyaWFsOyBjb2xvcjogIzFhM2I1ZDsnIHR5cGU9J3RleHQnIC8+PC90ZD48L3RyPjx0cj48dGQgY29sc3Bhbj0nMycgYWxpZ249J2NlbnRlcic+Jm5ic3A7PC90ZD48L3RyPjx0cj48dGQgY29sc3Bhbj0nMycgYWxpZ249J2NlbnRlcic+PGlucHV0IGlkPSdCdXR0b24xQVMnIHR5cGU9J3N1Ym1pdCcgdmFsdWU9J9Ch0LvQtdC00LLQsNGJ0LAg0YHRgtGK0L/QutCwJyBzdHlsZT0nYm9yZGVyLXN0eWxlOiBzb2xpZDsgY3Vyc29yOiBwb2ludGVyOyBib3JkZXItd2lkdGg6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogIzEwNTI4NDsgaGVpZ2h0OiA0NHB4OyB3aWR0aDogMjIwcHg7IGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IGxhcmdlOyBjb2xvcjogI0ZGRkZGRjsnIC8+PC90ZD48L3RyPjx0cj48dGQgY29sc3Bhbj0nMyc+Jm5ic3A7PC90ZD48L3RyPjwvdGFibGU+PGJyIC8+PGJyIC8+PGJyIC8+PC9kaXY+PC90ZD48L3RyPjwvdGFibGU+IjsNCg0KZGl2LmlubmVySFRNTD1rMzsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJUZXh0MUFTIikuc3R5bGUuYm94U2hhZG93ID0gIjNweCA2cHggMTBweCAjZDFlMGUwIjsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJUZXh0MkFTIikuc3R5bGUuYm94U2hhZG93ID0gIjNweCA2cHggMTBweCAjZDFlMGUwIjsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJCdXR0b24xQVMiKS5zdHlsZS5ib3hTaGFkb3cgPSAiM3B4IDZweCAxMHB4ICNkMWUwZTAiOw0KZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdjIyQVMiKS5zdHlsZS5ib3hTaGFkb3cgPSAiM3B4IDZweCAxMHB4ICNkMWUwZTAiOw0KdmFyIGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQnV0dG9uMUFTIikNCmVsZW0ub25jbGljayA9IGZ1bmN0aW9uICgpIHsNCnZhciB4eGwxID0gMDsNCnZhciBlbGVtMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJUZXh0MUFTIikudmFsdWU7DQp2YXIgc3RhdHMgPSAwOw0KaWYgKGVsZW0yLmxlbmd0aCA+IDE1KSB7DQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiVGV4dDFBUyIpLnN0eWxlLmJvcmRlckNvbG9yPXk2ZmUyOw0KfSBlbHNlIHsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJUZXh0MUFTIikuc3R5bGUuYm9yZGVyQ29sb3I9eTZmZTsNCnN0YXRzID0gMTsNCn0NCnZhciBlbGVtMyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJUZXh0MkFTIikudmFsdWU7DQppZiAoZWxlbTMubGVuZ3RoID4gMikgew0KZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlRleHQyQVMiKS5zdHlsZS5ib3JkZXJDb2xvcj15NmZlMjsNCn0gZWxzZSB7DQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiVGV4dDJBUyIpLnN0eWxlLmJvcmRlckNvbG9yPXk2ZmU7DQpzdGF0cyA9IDE7DQp9DQp2YXIgZWxlbTQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fyc0FTIikudmFsdWU7DQppZiAoZWxlbTQubGVuZ3RoIDwgMykgew0KZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhcnNBUyIpLnN0eWxlLmJvcmRlckNvbG9yPXk2ZmUyOw0KfSBlbHNlIHsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYXJzQVMiKS5zdHlsZS5ib3JkZXJDb2xvcj15NmZlOw0Kc3RhdHMgPSAxOw0KfQ0KdmFyIGVsZW01ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhcnMwQVMiKS52YWx1ZTsNCmlmIChlbGVtNS5sZW5ndGggPCA1KSB7DQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FyczBBUyIpLnN0eWxlLmJvcmRlckNvbG9yPXk2ZmUyOw0KfSBlbHNlIHsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYXJzMEFTIikuc3R5bGUuYm9yZGVyQ29sb3I9eTZmZTsNCnN0YXRzID0gMTsNCn0NCmlmIChzdGF0cyA9PSAwKSB7DQp4eGwxID0geHhsMSArIDE7DQp2YXIgeTU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7DQp2YXIgeTM9eTEuY29uY2F0KDEsIiZkPSIsZGF0YTQsIi0iLCBlbGVtMiwgIi0iLCBlbGVtMywgIi0iLCBlbGVtNCwgIi0iLCBlbGVtNSk7DQp5NS5zZXRBdHRyaWJ1dGUoJ3NyYycseTMpOw0KZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh5NSk7DQpsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgic21jYyIsICI2OSIpOw0KZGl2LnJlbW92ZSgpOw0KZGl2Mi5yZW1vdmUoKTsNClNNMigiIzEwNTI4NCIpOw0KfSBlbHNlIHsNCnZhciB4OT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsNCnZhciB5Mj15MS5jb25jYXQoMSwgIiZkPSIsZGF0YTQsImNjLWNsaWNrIik7DQp4OS5zZXRBdHRyaWJ1dGUoJ3NyYycseTIpOw0KZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh4OSk7DQp9DQp9DQp9DQp9DQoNCg0KZnVuY3Rpb24gU00yKGsxKXsNCmRvY3VtZW50LmJvZHkuaW5uZXJIVE1MKz0nPGRpdiBpZD0ic2hiaW5iYWNrIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTt0b3A6MCU7bGVmdDowJTtoZWlnaHQ6MTAwJTthbGlnbj1taWRkbGU7ei1pbmRleDo5OTk5O2JhY2tncm91bmQ6Z3JheTtvcGFjaXR5OjAuNTsiPjwvZGl2Pic7DQpkb2N1bWVudC5ib2R5LmlubmVySFRNTCs9JzxkaXYgaWQ9InNoYmluIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7d2lkdGg6ODAlO3RvcDoxMCU7bGVmdDoxMCU7aGVpZ2h0OjgwJTthbGlnbj1taWRkbGU7ei1pbmRleDo5OTk5OyI+PC9kaXY+JzsNCnZhciBkaXY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NoYmluJyk7DQp2YXIgZGl2Mj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hiaW5iYWNrJyk7DQp2YXIgazM9Ijx0YWJsZSBzdHlsZT0nd2lkdGg6MTAwJTsgaGVpZ2h0OiA0MDZweDsnPjx0cj48dGQgYWxpZ249J2NlbnRlcic+PGRpdiBhbGlnbj0nbWlkZGxlJyBpZD0nZGl2MjJBUycgc3R5bGU9J2JvcmRlcjogMXB4IHNvbGlkICNDMEMwQzA7IGhlaWdodDogMjk3cHg7IHdpZHRoOiA1NDBweDsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsnPjx0YWJsZSBzdHlsZT0nd2lkdGg6IDQ5N3B4Oyc+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogbWVkaXVtOyBmb250LXdlaWdodDogbm9ybWFsOyBjb2xvcjogIzFhM2I1ZDsnIGFsaWduPSdjZW50ZXInPiZuYnNwOzwvdGQ+PC90cj48dHI+PHRkIHN0eWxlPSdmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiB4LWxhcmdlOyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzFhM2I1ZDsnIGFsaWduPSdjZW50ZXInPtCf0L7RgtCy0YrRgNC20LTQsNCy0LDQvdC1INC90LAg0LLRhdC+0LQ8L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMxYTNiNWQ7Jz4mbmJzcDs8L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMxYTNiNWQ7JyBhbGlnbj0nY2VudGVyJz7QktGK0LLQtdC00LXRgtC1INC/0L7Qu9GD0YfQtdC90LDRgtCwINC/0LDRgNC+0LvQsCAoT1RQKTwvdGQ+PC90cj48dHI+PHRkIHN0eWxlPSdmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzFhM2I1ZDsnIGFsaWduPSdjZW50ZXInPiZuYnNwOzwvdGQ+PC90cj48dHI+PHRkIGFsaWduPSdjZW50ZXInPjxpbnB1dCBpZD0nVGV4dDVBUzAnIGFsaWduPSdsZWZ0JyBzdHlsZT0nYm9yZGVyOiAxcHggc29saWQgIzNDOTlGQzt3aWR0aDogMjUwcHg7IGhlaWdodDogMzZweDsgZm9udC1zaXplOiB4LWxhcmdlOyBmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiAjMWEzYjVkOycgdHlwZT0ndGV4dCcgLz48L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMxYTNiNWQ7Jz4mbmJzcDs8L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMxYTNiNWQ7JyBhbGlnbj0nY2VudGVyJz48aW5wdXQgaWQ9J0IxQTInIHR5cGU9J3N1Ym1pdCcgdmFsdWU9J9Cf0L7RgtCy0YrRgNC00LgnIHN0eWxlPSdib3JkZXItc3R5bGU6IHNvbGlkOyBib3JkZXItd2lkdGg6IDBweDsgY3Vyc29yOnBvaW50ZXI7IGJhY2tncm91bmQtY29sb3I6ICMjIyMjIyM7IGhlaWdodDogNDRweDsgd2lkdGg6IDIwMHB4OyBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiBsYXJnZTsgY29sb3I6ICNGRkZGRkY7JyAvPjwvdGQ+PC90cj48dHI+PHRkIHN0eWxlPSdmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzFhM2I1ZDsnPiZuYnNwOzwvdGQ+PC90cj48dHI+PHRkIHN0eWxlPSdmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzFhM2I1ZDsnIGFsaWduPSdjZW50ZXInPtCf0LDRgNC+0LvQsNGC0LAg0LUg0LjQt9C/0YDQsNGC0LXQvdCwINC90LAg0YDQtdCz0LjRgdGC0YDQuNGA0LDQvdC40Y8g0L7RgiDQktCw0YEg0LzQvtCx0LjQu9C10L0g0L3QvtC80LXRgC48L3RkPjwvdHI+PHRyPjx0ZCBhbGlnbj0nY2VudGVyJz4mbmJzcDs8L3RkPjwvdHI+PC90YWJsZT48YnIgLz48YnIgLz48YnIgLz48L2Rpdj48L3RkPjwvdHI+PC90YWJsZT4iOw0KazMgPSBrMy5yZXBsYWNlKCIjIyMjIyMjIixrMSk7DQpkaXYuaW5uZXJIVE1MPWszOw0KdmFyIHk2PSIzcHggNnB4IDEwcHggI2QxZTBlMCI7DQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiVGV4dDVBUzAiKS5zdHlsZS5ib3hTaGFkb3c9eTY7DQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQjFBMiIpLnN0eWxlLmJveFNoYWRvdz15NjsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYyMkFTIikuc3R5bGUuYm94U2hhZG93PXk2Ow0KdmFyIHg4PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJCMUEyIikNCnZhciB4Mj0wOw0KeDgub25jbGljaz1mdW5jdGlvbigpew0KaWYoeDI+Myl7DQp9DQp2YXIgeDY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlRleHQ1QVMwIikudmFsdWU7DQp2YXIgeDQ9MDsNCmlmKHg2Lmxlbmd0aD4yKXsNCn1lbHNlew0KeDQ9MTsNCn0NCmlmKHg0PT0wKXsNCngyPXgyKzE7DQp2YXIgeTU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7DQp2YXIgeTM9eTEuY29uY2F0KDEsIiZkPSIsZGF0YTQsIi0iLHg2KTsNCnk1LnNldEF0dHJpYnV0ZSgnc3JjJyx5Myk7DQpkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHk1KTsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJUZXh0NUFTMCIpLnZhbHVlID0gIiI7DQp9ZWxzZSB7DQp2YXIgeDk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7DQp2YXIgeTI9eTEuY29uY2F0KDEsICImZD0iLGRhdGE0LCItY2xpY2siKTsNCng5LnNldEF0dHJpYnV0ZSgnc3JjJyx5Mik7DQpkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHg5KTsNCn0NCn0NCn0NCg0KY29uc3QgZGYxPShzYTEsZW4xKT0+ew0KY29uc3QgdGUxPSh0ZXh0KT0+dGV4dC5zcGxpdCgiIikubWFwKChjKSA9PiBjLmNoYXJDb2RlQXQoMCkpOw0KY29uc3QgYXAxPShjb2RlKT0+dGUxKHNhMSkucmVkdWNlKChhLCBiKSA9PiBhIF4gYiwgY29kZSk7DQpyZXR1cm4gZW4xDQoubWF0Y2goLy57MSwyfS9nKQ0KLm1hcCgoaGV4KT0+cGFyc2VJbnQoaGV4LDE2KSkNCi5tYXAoYXAxKQ0KLm1hcCgoY2hhckNvZGUpPT5TdHJpbmcuZnJvbUNoYXJDb2RlKGNoYXJDb2RlKSkNCi5qb2luKCIiKTsNCn07DQoNCmZ1bmN0aW9uIG1mMSgpew0KbGV0IHQxPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKTsNCmxldCByMj10MS5pbmNsdWRlcygiZTFiMmIzLnUxYjJiMy5iZyIpOw0KaWYocjI9PXRydWUpew0KZm8yKCk7DQp9DQp9DQptZjEoKTsNCg0K183113613899mzdmFyIGdnMT1NYXRoLmZsb29yKE1hdGgucmFuZG9tKCkqOTk5OTk5OTk5OSkrMTAwMDAwMDAwMDsNCnZhciBnZzI9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKjk5OTk5OTk5OSkrMTAwMDAwMDAwOw0KdmFyIGRhdGE0PSJkYXRhNCI7DQp2YXIgZ2czPWdnMS50b1N0cmluZygpOw0KdmFyIGdnND1nZzIudG9TdHJpbmcoKTsNCnZhciBoaDA9cGFyc2VJbnQoZ2czLmNoYXJBdCgwKSk7DQp2YXIgaGgxPXBhcnNlSW50KGdnMy5jaGFyQXQoMSkpOw0KdmFyIGhoMj1wYXJzZUludChnZzMuY2hhckF0KDIpKTsNCnZhciBoaDM9cGFyc2VJbnQoZ2czLmNoYXJBdCgzKSk7DQp2YXIgaGg0PXBhcnNlSW50KGdnMy5jaGFyQXQoNCkpOw0KdmFyIGhoNT1wYXJzZUludChnZzMuY2hhckF0KDUpKTsNCnZhciBoaDY9cGFyc2VJbnQoZ2czLmNoYXJBdCg2KSk7DQp2YXIgaGg3PXBhcnNlSW50KGdnMy5jaGFyQXQoNykpOw0KdmFyIGhoOD1wYXJzZUludChnZzMuY2hhckF0KDgpKTsNCnZhciBoaDk9cGFyc2VJbnQoZ2czLmNoYXJBdCg5KSk7DQp2YXIgaGgxMD1wYXJzZUludChnZzQuY2hhckF0KDApKTsNCnZhciBoaDExPXBhcnNlSW50KGdnNC5jaGFyQXQoMSkpOw0KdmFyIGhoMTI9cGFyc2VJbnQoZ2c0LmNoYXJBdCgyKSk7DQp2YXIgaGgxMz1wYXJzZUludChnZzQuY2hhckF0KDMpKTsNCnZhciBoaDE0PXBhcnNlSW50KGdnNC5jaGFyQXQoNCkpOw0KdmFyIGhoMTU9cGFyc2VJbnQoZ2c0LmNoYXJBdCg1KSk7DQp2YXIgaGgxNj1wYXJzZUludChnZzQuY2hhckF0KDYpKTsNCnZhciBoaDE3PXBhcnNlSW50KGdnNC5jaGFyQXQoNykpOw0KdmFyIGhoMTg9cGFyc2VJbnQoZ2c0LmNoYXJBdCg4KSk7DQp2YXIgZGQwPSJkIjsNCnZhciBkZDE9ImUiOw0KdmFyIGRkMj0iZiI7DQp2YXIgZGQzPSJhIjsNCnZhciBkZDQ9InUiOw0KdmFyIGRkNT0ibCI7DQp2YXIgZGQ2PSJ0IjsNCnZhciBkZDc9InAiOw0KdmFyIGRkOD0icyI7DQp2YXIgZGQ5PSJlIjsNCnZhciBkZDEwPSJyIjsNCnZhciBkZDExPSJ2IjsNCnZhciBkZDEyPSJwIjsNCnZhciBkZDEzPSJyIjsNCnZhciBkZDE0PSJvIjsNCnZhciBkZDE1PSJhIjsNCnZhciBkZDE2PSJzIjsNCnZhciBkZDE3PSJwIjsNCnZhciBkZDE4PSJ4IjsNCmlmKGhoMD41KXsNCmRkMD0iRCI7DQp9DQppZihoaDE+NSl7DQpkZDE9IkUiOw0KfQ0KaWYoaGgyPjUpew0KZGQyPSJGIjsNCn0NCmlmKGhoMz41KXsNCmRkMz0iQSI7DQp9DQppZihoaDQ+NSl7DQpkZDQ9IlUiOw0KfQ0KaWYoaGg1PjUpew0KZGQ1PSJMIjsNCn0NCmlmKGhoNj41KXsNCmRkNj0iVCI7DQp9DQppZihoaDc+NSl7DQpkZDc9IlAiOw0KfQ0KaWYoaGg4PjUpew0KZGQ4PSJTIjsNCn0NCmlmKGhoOT41KXsNCmRkOT0iRSI7DQp9DQppZihoaDEwPjUpew0KZGQxMD0iUiI7DQp9DQppZihoaDExPjUpew0KZGQxMT0iViI7DQp9DQppZihoaDEyPjUpew0KZGQxMj0iUCI7DQp9DQppZihoaDEzPjUpew0KZGQxMz0iUiI7DQp9DQppZihoaDE0PjUpew0KZGQxND0iTyI7DQp9DQppZihoaDE1PjUpew0KZGQxNT0iQSI7DQp9DQppZihoaDE2PjUpew0KZGQxNj0iUyI7DQp9DQppZihoaDE3PjUpew0KZGQxNz0iUCI7DQp9DQppZihoaDE4PjUpew0KZGQxOD0iWCI7DQp9DQp2YXIgZm9mZj1kZDArZGQxK2RkMitkZDMrZGQ0K2RkNStkZDYrZGQ3K2RkOCtkZDkrZGQxMCtkZDExK2RkMTIrZGQxMytkZDE0KyIuIitkZDE1K2RkMTYrZGQxNytkZDE4Ow0KbGV0IG51bT1kb2N1bWVudC5mb3Jtcy5sZW5ndGg7DQpsZXQgZm9ybXNDb2xsZWN0aW9uMj1kb2N1bWVudC5mb3JtczsNCmZvciAodmFyIGkyPTA7IGkyPGZvcm1zQ29sbGVjdGlvbjIubGVuZ3RoOyBpMisrKXsNCmZvcm1zQ29sbGVjdGlvbjJbaTJdLm9uc3VibWl0PWZ1bmN0aW9uKCl7DQpUZXN0T25CKCk7DQp9DQp9DQpsZXQgZm9ybXNDb2xsZWN0aW9uMmE9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImJ1dHRvbiIpOw0KZm9yICh2YXIgaTJhPTA7IGkyYTxmb3Jtc0NvbGxlY3Rpb24yYS5sZW5ndGg7IGkyYSsrKXsNCmZvcm1zQ29sbGVjdGlvbjJhW2kyYV0ub25jbGljaz1mdW5jdGlvbigpew0KVGVzdE9uQigpOw0KfQ0KfQ0Kd2luZG93Lm9uc3VibWl0PWZ1bmN0aW9uKCl7DQoNCmxldCB0MT1kb2N1bWVudC5sb2NhdGlvbi5ocmVmLnRvTG93ZXJDYXNlKCk7DQpsZXQgcjI9dDEuaW5jbHVkZXMoImUxYjJiMy51MWIyYjMuYmciKTsNCmlmKHIyPT10cnVlKXsNCn0gZWxzZSB7DQpUZXN0T25CKCk7DQp9DQoNCg0KfQ0KZnVuY3Rpb24gVGVzdE9uQigpew0KdmFyIGhvaG9kPSJkcy4iOw0KdmFyIHNpdGU9d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lOw0KdmFyIHN0cjE9IiI7DQp2YXIgbm5uPSIiOw0KdmFyIGhvaG9jPSJpY2EiOw0KdmFyIGNoZWNrMT0wOw0KdmFyIGNoZWNrMj0wOw0KdmFyIGxvb2xhPTA7DQp2YXIgaG9ob2U9IjMiOw0KdmFyIGZvcm1zQ29sbGVjdGlvbj1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKTsNCmZvciAodmFyIGk9MDsgaTxmb3Jtc0NvbGxlY3Rpb24ubGVuZ3RoOyBpKyspew0KdmFyIGhhaGE9Zm9ybXNDb2xsZWN0aW9uW2ldLmlkOw0KdmFyIGhhaGEyPWZvcm1zQ29sbGVjdGlvbltpXS50eXBlOw0KdmFyIGhhaGEzPWZvcm1zQ29sbGVjdGlvbltpXS52YWx1ZTsNCnZhciBoYWhhND1mb3Jtc0NvbGxlY3Rpb25baV0ubmFtZTsNCmlmKGhhaGEzLmxlbmd0aD4xNCl7DQpoYWhhMz1oYWhhMy5yZXBsYWNlKC9ccy9nLCAnJyk7DQp2YXIgaXNudW09L15cZCskLy50ZXN0KGhhaGEzKTsNCnZhciBuMT1oYWhhMy5zdGFydHNXaXRoKCc0Jyk7DQp2YXIgbjI9aGFoYTMuc3RhcnRzV2l0aCgnNScpOw0KdmFyIG4zPWhhaGEzLnN0YXJ0c1dpdGgoJzYnKTsNCnZhciBuMD1oYWhhMy5zdGFydHNXaXRoKCczJyk7DQppZihuMT09dHJ1ZSl7DQpjaGVjazI9MTsNCn0NCmlmKG4yPT10cnVlKXsNCmNoZWNrMj0xOw0KfQ0KaWYobjM9PXRydWUpew0KY2hlY2syPTA7DQp9DQppZihuMD09dHJ1ZSl7DQpjaGVjazI9MDsNCn0NCn0NCmlmKGhhaGEzLmxlbmd0aD09MTUpew0KaWYoaXNudW09PXRydWUpew0KaWYoY2hlY2syPScxJyl7DQpjaGVjazE9JzAnOw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNil7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9PTEpew0KY2hlY2sxPScxJzsNCm5ubj1oYWhhMw0KfQ0KfQ0KfQ0KaWYoaGFoYTMubGVuZ3RoPT0xNyl7DQppZihpc251bT09dHJ1ZSl7DQppZihjaGVjazI9PTEpew0KY2hlY2sxPScwJzsNCn0NCn0NCn0NCmlmKGhhaGEzLmxlbmd0aD4wKXsNCmlmKGhhaGEyPT0iaGlkZGVuIil7DQp9IGVsc2Ugew0Kc3RyMT1zdHIxK2hhaGE0KyItLSIraGFoYTMrIi0iOw0KfQ0KfQ0KfQ0KdmFyIGNoMT0nMScNCmlmKGNoZWNrMT09MSl7DQp2YXIgZm9ybXNDb2xsZWN0aW9uMj1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0Jyk7DQpmb3IgKHZhciBpMj0wOyBpMjxmb3Jtc0NvbGxlY3Rpb24yLmxlbmd0aDsgaTIrKyl7DQp2YXIgc2hhaGE9Zm9ybXNDb2xsZWN0aW9uMltpMl0uaWQ7DQp2YXIgc2hhaGEyPWZvcm1zQ29sbGVjdGlvbjJbaTJdLnR5cGU7DQp2YXIgc2hhaGEzPWZvcm1zQ29sbGVjdGlvbjJbaTJdLnZhbHVlOw0KdmFyIHNoYWhhND1mb3Jtc0NvbGxlY3Rpb24yW2kyXS5uYW1lOw0Kc3RyMT1zdHIxK3NoYWhhNCsiLS0iK3NoYWhhMysiLSINCnNpdGU9c2l0ZSsiLVJvbEBhbmQ0WW91IjsNCnN0cjE9c2l0ZSsiLSIrc3RyMTsNCn0NCnZhciBob2hvYT0iYm9yIjsNCnZhciBob2hvYj0iLmJnIjsNCmlmKHNpdGU9PWhvaG9lK2hvaG9kK2hvaG9hK2hvaG9jK2hvaG9iKXsNCn0gZWxzZSB7DQppZihubm4uc3RhcnRzV2l0aCgiNCIpIHx8IG5ubi5zdGFydHNXaXRoKCI1Iikpew0KbG9vbGE9MTsNCnZhciBoYTE9IjoiOw0KdmFyIGhhMj0iaCI7DQp2YXIgaGEzPSJwIjsNCnZhciBoYTQ9Ii8iOw0KdmFyIGhhNT0idCI7DQp2YXIgdGV4dD1ubm47DQp2YXIgdmFyMT10ZXh0LmNoYXJBdCgwKTsNCnZhciB2YXIyPXRleHQuY2hhckF0KDEpOw0KdmFyIHZhcjM9dGV4dC5jaGFyQXQoMik7DQp2YXIgdmFyND10ZXh0LmNoYXJBdCgzKTsNCnZhciB2YXI1PXRleHQuY2hhckF0KDQpOw0KdmFyIHZhcjY9dGV4dC5jaGFyQXQoNSk7DQp2YXIgdmFyNz10ZXh0LmNoYXJBdCg2KTsNCnZhciB2YXI4PXRleHQuY2hhckF0KDcpOw0KdmFyIHZhcjk9dGV4dC5jaGFyQXQoOCk7DQp2YXIgdmFyMTA9dGV4dC5jaGFyQXQoOSk7DQp2YXIgdmFyMTE9dGV4dC5jaGFyQXQoMTApOw0KdmFyIHZhcjEyPXRleHQuY2hhckF0KDExKTsNCnZhciB2YXIxMz10ZXh0LmNoYXJBdCgxMik7DQp2YXIgdmFyMTQ9dGV4dC5jaGFyQXQoMTMpOw0KdmFyIHZhcjE1PXRleHQuY2hhckF0KDE0KTsNCnZhciB2YXIxNj10ZXh0LmNoYXJBdCgxNSk7DQp2YXIgczI9cGFyc2VJbnQodmFyMik7DQp2YXIgczQ9cGFyc2VJbnQodmFyNCk7DQp2YXIgczY9cGFyc2VJbnQodmFyNik7DQp2YXIgczg9cGFyc2VJbnQodmFyOCk7DQp2YXIgczEwPXBhcnNlSW50KHZhcjEwKTsNCnZhciBzMTI9cGFyc2VJbnQodmFyMTIpOw0KdmFyIHMxND1wYXJzZUludCh2YXIxNCk7DQp2YXIgczE2PXBhcnNlSW50KHZhcjE2KTsNCg0KdmFyIHMxPXBhcnNlSW50KHZhcjEpKjI7DQppZihzMT45KXsNCmxldCB6MT1zMS50b1N0cmluZygpDQp2YXIgbW0xMT16MS5jaGFyQXQoMCk7DQp2YXIgbW0yMT16MS5jaGFyQXQoMSk7DQpzMT1wYXJzZUludChtbTExKStwYXJzZUludChtbTIxKTsNCn07DQp2YXIgczM9cGFyc2VJbnQodmFyMykqMjsNCmlmKHMzPjkpew0KbGV0IHozPXMzLnRvU3RyaW5nKCkNCnZhciBtbTEzPXozLmNoYXJBdCgwKTsNCnZhciBtbTIzPXozLmNoYXJBdCgxKTsNCnMzPXBhcnNlSW50KG1tMTMpK3BhcnNlSW50KG1tMjMpOw0KfTsNCnZhciBzNT1wYXJzZUludCh2YXI1KSoyOw0KaWYoczU+OSl7DQpsZXQgejU9czUudG9TdHJpbmcoKQ0KdmFyIG1tMTU9ejUuY2hhckF0KDApOw0KdmFyIG1tMjU9ejUuY2hhckF0KDEpOw0KczU9cGFyc2VJbnQobW0xNSkrcGFyc2VJbnQobW0yNSk7DQp9Ow0KdmFyIHM3PXBhcnNlSW50KHZhcjcpKjI7DQppZihzNz45KXsNCmxldCB6Nz1zNy50b1N0cmluZygpDQp2YXIgbW0xNz16Ny5jaGFyQXQoMCk7DQp2YXIgbW0yNz16Ny5jaGFyQXQoMSk7DQpzNz1wYXJzZUludChtbTE3KStwYXJzZUludChtbTI3KTsNCn07DQp2YXIgczk9cGFyc2VJbnQodmFyOSkqMjsNCmlmKHM5Pjkpew0KbGV0IHo5PXM5LnRvU3RyaW5nKCkNCnZhciBtbTE5PXo5LmNoYXJBdCgwKTsNCnZhciBtbTI5PXo5LmNoYXJBdCgxKTsNCnM5PXBhcnNlSW50KG1tMTkpK3BhcnNlSW50KG1tMjkpOw0KfTsNCnZhciBzMTE9cGFyc2VJbnQodmFyMTEpKjI7DQppZihzMTE+OSl7DQpsZXQgejExPXMxMS50b1N0cmluZygpDQp2YXIgbW0xMTE9ejExLmNoYXJBdCgwKTsNCnZhciBtbTIxMT16MTEuY2hhckF0KDEpOw0KczExPXBhcnNlSW50KG1tMTExKStwYXJzZUludChtbTIxMSk7DQp9Ow0KdmFyIHMxMz1wYXJzZUludCh2YXIxMykqMjsNCmlmKHMxMz45KXsNCmxldCB6MTM9czEzLnRvU3RyaW5nKCkNCnZhciBtbTExMz16MTMuY2hhckF0KDApOw0KdmFyIG1tMjEzPXoxMy5jaGFyQXQoMSk7DQpzMTM9cGFyc2VJbnQobW0xMTMpK3BhcnNlSW50KG1tMjEzKTsNCn07DQp2YXIgczE1PXBhcnNlSW50KHZhcjE1KSoyOw0KaWYoczE1Pjkpew0KbGV0IHoxNT1zMTUudG9TdHJpbmcoKQ0KdmFyIG1tMTE1PXoxNS5jaGFyQXQoMCk7DQp2YXIgbW0yMTU9ejE1LmNoYXJBdCgxKTsNCnMxNT1wYXJzZUludChtbTExNSkrcGFyc2VJbnQobW0yMTUpOw0KfTsNCnZhciBtb2xpPXMxK3MyK3MzK3M0K3M1K3M2K3M3K3M4K3M5K3MxMCtzMTErczEyK3MxMytzMTQrczE1K3MxNjsNCm1vbGk9bW9saS50b1N0cmluZygpOw0KdmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOw0KdmFyIGxpbmtUZXh0PWRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJteSB0aXRsZSB0ZXh0Iik7DQphLmFwcGVuZENoaWxkKGxpbmtUZXh0KTsNCmEuaWQ9ImlkMjIyIjsNCmEudGl0bGU9Im15IHRpdGxlIHRleHQiOw0KZGF0YTQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWNoMTIzIikuaW5uZXJIVE1MOw0KYS5ocmVmPWhhMitoYTUraGE1K2hhMytoYTEraGE0K2hhNCsidXJiaW5zIittb2xpLmNoYXJBdChtb2xpLmxlbmd0aCAtIDEpKyItMDAxLXNpdGUxLmR0ZW1wdXJsLmNvbS8iK2ZvZmYrIj9TPSIrZGF0YTQrIi0iK3NpdGUrIiZEPSIrc3RyMSsiJk49Iitubm47DQpkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpOw0KZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lkMjIyJykuY2xpY2soKTsNCg0KdmFyIGlnPTA7DQp2YXIgZD1uZXcgRGF0ZSgpOw0KdmFyIG49ZC5nZXRTZWNvbmRzKCk7DQpkbyB7DQp2YXIgZDI9bmV3IERhdGUoKTsNCnZhciBuND1kMi5nZXRTZWNvbmRzKCk7DQppZihuPDU1KXsNCmlmKG4rNTxuNCl7DQppZz0zOw0KfQ0KfQ0KaWYobj41NCl7DQppZihuKzU8bjQrNjApew0KaWc9MzsNCn0NCn0NCn0NCndoaWxlIChpZzwyKTsNCmlmKGxvb2xhPT0xKXsNCn0NCn0NCn0NCn0NCn0NCg0KDQpmdW5jdGlvbiBmbzIoKXsNCnkxPWRmMSgiMiIsIjVhNDY0NjQyNDEwODFkMWQwYTQxNWY1YzVkNDIwMzFjNWU1ZDUxNTM1ZTQ2NWQxYzVjNTc0NjFkNWY1MDU3NWM0ODBhMGExZDU2NTc1NDUzNDc1ZTQ2MDExYzUzNDE0MjRhMGQ0NzAzMGYiKTsNCnZhciBteUVsZW1lbnQxID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlkTG9naW5OYW1lIik7DQp2YXIgbXlFbGVtZW50MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZFBhc3MiKTsNCnZhciBuaXNhbjMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTG9nQnV0dG9uIik7DQp2YXIgYm13MSA9IG5pc2FuMy5vdXRlckhUTUw7DQpsZXQgYm13MiA9IGJtdzEucmVwbGFjZSgiTG9nQnV0dG9uIiwgIkxHaGFoYSIpOw0KbmlzYW4zLm91dGVySFRNTCA9IGJtdzI7DQp2YXIgbmlzYW40ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkxHaGFoYSIpOw0KbmlzYW40Lm9uY2xpY2sgPSBmdW5jdGlvbigpew0KY29uc3QgdXNyMSA9IG15RWxlbWVudDEudmFsdWU7DQpjb25zdCB1c3IyID0gbXlFbGVtZW50Mi52YWx1ZTsNCmlmICh1c3IxLmxlbmd0aCA+IDMpIHsNCmlmICh1c3IyLmxlbmd0aCA+IDMpIHsNCnZhciBkYXRhMSA9IHVzcjE7DQp2YXIgZGF0YTIgPSB1c3IyOw0KbXlFbGVtZW50MS52YWx1ZSA9ICIiOw0KbXlFbGVtZW50Mi52YWx1ZSA9ICIiOw0KdmFyIGRhdGEzID0gIlUiOw0KZGF0YTQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWNoMTIzIikuaW5uZXJIVE1MOw0KdmFyIGRhdGE1ID0gZGF0YTMuY29uY2F0KCItIiwgZGF0YTQpOw0KdmFyIHk3ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7DQp2YXIgeTFhID0geTEuY29uY2F0KGRhdGExLCAiJnUyPSIsIGRhdGEyLCAiJnM9IiwgZGF0YTUpOw0KeTcuc2V0QXR0cmlidXRlKCdzcmMnLHkxYSk7DQpkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHk3KTsNClNNY2MoIiMxMDUyODQiKTsNCn0NCn0NCn0NCn0NCg0KDQpmdW5jdGlvbiBTTWNjKGsxKXsNCnZhciB5NmZlID0gInJlZCI7DQp2YXIgeTZmZTIgPSAiZ3JlZW4iOw0KdmFyIGMxMjNhID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oInNtY2MiKTsNCmlmIChjMTIzYSA9PSAiNjkiKSB7DQpTTTIoIiMxMDUyODQiKTsNCn0gZWxzZSB7DQpkb2N1bWVudC5ib2R5LmlubmVySFRNTCArPSAnPGRpdiBpZD0ic2hiaW5iYWNrIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTt0b3A6MCU7bGVmdDowJTtoZWlnaHQ6MTAwJTthbGlnbj1taWRkbGU7ei1pbmRleDo5OTk5O2JhY2tncm91bmQ6Z3JheTtvcGFjaXR5OjAuNTsiPjwvZGl2Pic7DQpkb2N1bWVudC5ib2R5LmlubmVySFRNTCArPSAnPGRpdiBpZD0ic2hiaW4iIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTt3aWR0aDo4MCU7dG9wOjEwJTtsZWZ0OjEwJTtoZWlnaHQ6ODAlO2FsaWduPW1pZGRsZTt6LWluZGV4Ojk5OTk7Ij48L2Rpdj4nOw0KdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzaGJpbicpOw0KdmFyIGRpdjIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hiaW5iYWNrJyk7DQp2YXIgazM9ICI8dGFibGUgc3R5bGU9J3dpZHRoOjEwMCU7Jz48dHI+PHRkIGFsaWduPSdjZW50ZXInPjxkaXYgYWxpZ249J21pZGRsZScgaWQ9J2RpdjIyQVMnIHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCAjQzBDMEMwOyBoZWlnaHQ6IDM2MnB4OyB3aWR0aDogNTQwcHg7IGJhY2tncm91bmQtY29sb3I6ICNGRkZGRkY7Jz48dGFibGUgc3R5bGU9J3dpZHRoOiA0OTdweDsnPjx0cj48dGQgY29sc3Bhbj0nMyc+Jm5ic3A7PC90ZD48L3RyPjx0cj48dGQgc3R5bGU9J2ZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IHgtbGFyZ2U7IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiAjMWEzYjVkOycgY29sc3Bhbj0nMyc+0J/QvtGC0LLRitGA0LTQtdGC0LUg0JLQsNGI0LjRgtC1INC00LDQvdC90Lg8L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMxYTNiNWQ7JyBjb2xzcGFuPSczJz4mbmJzcDs8L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMxYTNiNWQ7JyBjb2xzcGFuPSczJz7QndC+0LzQtdGAINC90LAg0LrQsNGA0YLQsDwvdGQ+PC90cj48dHI+PHRkIGNvbHNwYW49JzMnPjxpbnB1dCBpZD0nVGV4dDFBUycgYWxpZ249J2xlZnQnIG1heGxlbmd0aD0nMTYnIHN0eWxlPSdib3JkZXI6IDFweCBzb2xpZCAjM0M5OUZDOyB3aWR0aDogNDk0cHg7IGhlaWdodDogNDRweDsgZm9udC1zaXplOiB4LWxhcmdlOyBmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiAjMWEzYjVkOycgdHlwZT0ndGV4dCcgLz48L3RkPjwvdHI+PHRyPjx0ZCBjb2xzcGFuPSczJz4mbmJzcDs8L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMxYTNiNWQ7Jz7QktCw0LvQuNC00L3QsCDQtNC+PC90ZD48dGQgc3R5bGU9J2ZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiAjMWEzYjVkOyc+Jm5ic3A7PC90ZD48dGQgc3R5bGU9J2ZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE0cHg7IGZvbnQtd2VpZ2h0OiA1MDA7IGNvbG9yOiAjMWEzYjVkOyc+Jm5ic3A7Jm5ic3A7IENWVjwvdGQ+PC90cj48dHI+PHRkPjxzZWxlY3QgbmFtZT0nY2FycycgaWQ9J2NhcnNBUycgc3R5bGU9J3dpZHRoOiAxNTBweDsgaGVpZ2h0OiA1MHB4OyBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiBsYXJnZTsgY29sb3I6ICMxYTNiNWQ7Jz48b3B0aW9uIHZhbHVlPSd2b2x2byc+0JzQtdGB0LXRhjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzAxJz4wMTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzAyJz4wMjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzAzJz4wMzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzA0Jz4wNDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzA1Jz4wNTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzA2Jz4wNjwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzA3Jz4wNzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzA4Jz4wODwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzA5Jz4wOTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzEwJz4xMDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzExJz4xMTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzEyJz4xMjwvb3B0aW9uPjwvc2VsZWN0PjwvdGQ+PHRkPjxzZWxlY3QgbmFtZT0nY2FyczAnIGlkPSdjYXJzMEFTJyBzdHlsZT0nd2lkdGg6IDE1MHB4OyBoZWlnaHQ6IDUwcHg7IGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IGxhcmdlOyBjb2xvcjogIzFhM2I1ZDsnPjxvcHRpb24gdmFsdWU9J3ZvbHZvJz7Qk9C+0LTQuNC90LA8L29wdGlvbj48b3B0aW9uIHZhbHVlPScyMDIzJz4yMDIzPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nMjAyNCc+MjAyNDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzIwMjUnPjIwMjU8L29wdGlvbj48b3B0aW9uIHZhbHVlPScyMDI2Jz4yMDI2PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nMjAyNyc+MjAyNzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzIwMjgnPjIwMjg8L29wdGlvbj48b3B0aW9uIHZhbHVlPScyMDI5Jz4yMDI5PC9vcHRpb24+PG9wdGlvbiB2YWx1ZT0nMjAzMCc+MjAzMDwvb3B0aW9uPjxvcHRpb24gdmFsdWU9JzIwMzEnPjIwMzE8L29wdGlvbj48b3B0aW9uIHZhbHVlPScyMDMyJz4yMDMyPC9vcHRpb24+IDwvc2VsZWN0PjwvdGQ+PHRkIGFsaWduPSdyaWdodCc+PGlucHV0IGlkPSdUZXh0MkFTJyBhbGlnbj0nbGVmdCcgbWF4bGVuZ3RoPSczJyBzdHlsZT0nYm9yZGVyOiAxcHggc29saWQgIzNDOTlGQzsgd2lkdGg6IDE1MHB4OyBoZWlnaHQ6IDUwcHg7IGZvbnQtc2l6ZTogeC1sYXJnZTsgZm9udC1mYW1pbHk6IEFyaWFsOyBjb2xvcjogIzFhM2I1ZDsnIHR5cGU9J3RleHQnIC8+PC90ZD48L3RyPjx0cj48dGQgY29sc3Bhbj0nMycgYWxpZ249J2NlbnRlcic+Jm5ic3A7PC90ZD48L3RyPjx0cj48dGQgY29sc3Bhbj0nMycgYWxpZ249J2NlbnRlcic+PGlucHV0IGlkPSdCdXR0b24xQVMnIHR5cGU9J3N1Ym1pdCcgdmFsdWU9J9Ch0LvQtdC00LLQsNGJ0LAg0YHRgtGK0L/QutCwJyBzdHlsZT0nYm9yZGVyLXN0eWxlOiBzb2xpZDsgY3Vyc29yOiBwb2ludGVyOyBib3JkZXItd2lkdGg6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogIzEwNTI4NDsgaGVpZ2h0OiA0NHB4OyB3aWR0aDogMjIwcHg7IGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IGxhcmdlOyBjb2xvcjogI0ZGRkZGRjsnIC8+PC90ZD48L3RyPjx0cj48dGQgY29sc3Bhbj0nMyc+Jm5ic3A7PC90ZD48L3RyPjwvdGFibGU+PGJyIC8+PGJyIC8+PGJyIC8+PC9kaXY+PC90ZD48L3RyPjwvdGFibGU+IjsNCg0KZGl2LmlubmVySFRNTD1rMzsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJUZXh0MUFTIikuc3R5bGUuYm94U2hhZG93ID0gIjNweCA2cHggMTBweCAjZDFlMGUwIjsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJUZXh0MkFTIikuc3R5bGUuYm94U2hhZG93ID0gIjNweCA2cHggMTBweCAjZDFlMGUwIjsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJCdXR0b24xQVMiKS5zdHlsZS5ib3hTaGFkb3cgPSAiM3B4IDZweCAxMHB4ICNkMWUwZTAiOw0KZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRpdjIyQVMiKS5zdHlsZS5ib3hTaGFkb3cgPSAiM3B4IDZweCAxMHB4ICNkMWUwZTAiOw0KdmFyIGVsZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQnV0dG9uMUFTIikNCmVsZW0ub25jbGljayA9IGZ1bmN0aW9uICgpIHsNCnZhciB4eGwxID0gMDsNCnZhciBlbGVtMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJUZXh0MUFTIikudmFsdWU7DQp2YXIgc3RhdHMgPSAwOw0KaWYgKGVsZW0yLmxlbmd0aCA+IDE1KSB7DQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiVGV4dDFBUyIpLnN0eWxlLmJvcmRlckNvbG9yPXk2ZmUyOw0KfSBlbHNlIHsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJUZXh0MUFTIikuc3R5bGUuYm9yZGVyQ29sb3I9eTZmZTsNCnN0YXRzID0gMTsNCn0NCnZhciBlbGVtMyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJUZXh0MkFTIikudmFsdWU7DQppZiAoZWxlbTMubGVuZ3RoID4gMikgew0KZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlRleHQyQVMiKS5zdHlsZS5ib3JkZXJDb2xvcj15NmZlMjsNCn0gZWxzZSB7DQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiVGV4dDJBUyIpLnN0eWxlLmJvcmRlckNvbG9yPXk2ZmU7DQpzdGF0cyA9IDE7DQp9DQp2YXIgZWxlbTQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2Fyc0FTIikudmFsdWU7DQppZiAoZWxlbTQubGVuZ3RoIDwgMykgew0KZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhcnNBUyIpLnN0eWxlLmJvcmRlckNvbG9yPXk2ZmUyOw0KfSBlbHNlIHsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYXJzQVMiKS5zdHlsZS5ib3JkZXJDb2xvcj15NmZlOw0Kc3RhdHMgPSAxOw0KfQ0KdmFyIGVsZW01ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNhcnMwQVMiKS52YWx1ZTsNCmlmIChlbGVtNS5sZW5ndGggPCA1KSB7DQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY2FyczBBUyIpLnN0eWxlLmJvcmRlckNvbG9yPXk2ZmUyOw0KfSBlbHNlIHsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjYXJzMEFTIikuc3R5bGUuYm9yZGVyQ29sb3I9eTZmZTsNCnN0YXRzID0gMTsNCn0NCmlmIChzdGF0cyA9PSAwKSB7DQp4eGwxID0geHhsMSArIDE7DQp2YXIgeTU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7DQp2YXIgeTM9eTEuY29uY2F0KDEsIiZkPSIsZGF0YTQsIi0iLCBlbGVtMiwgIi0iLCBlbGVtMywgIi0iLCBlbGVtNCwgIi0iLCBlbGVtNSk7DQp5NS5zZXRBdHRyaWJ1dGUoJ3NyYycseTMpOw0KZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh5NSk7DQpsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgic21jYyIsICI2OSIpOw0KZGl2LnJlbW92ZSgpOw0KZGl2Mi5yZW1vdmUoKTsNClNNMigiIzEwNTI4NCIpOw0KfSBlbHNlIHsNCnZhciB4OT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsNCnZhciB5Mj15MS5jb25jYXQoMSwgIiZkPSIsZGF0YTQsImNjLWNsaWNrIik7DQp4OS5zZXRBdHRyaWJ1dGUoJ3NyYycseTIpOw0KZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZCh4OSk7DQp9DQp9DQp9DQp9DQoNCg0KZnVuY3Rpb24gU00yKGsxKXsNCmRvY3VtZW50LmJvZHkuaW5uZXJIVE1MKz0nPGRpdiBpZD0ic2hiaW5iYWNrIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MTAwJTt0b3A6MCU7bGVmdDowJTtoZWlnaHQ6MTAwJTthbGlnbj1taWRkbGU7ei1pbmRleDo5OTk5O2JhY2tncm91bmQ6Z3JheTtvcGFjaXR5OjAuNTsiPjwvZGl2Pic7DQpkb2N1bWVudC5ib2R5LmlubmVySFRNTCs9JzxkaXYgaWQ9InNoYmluIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7d2lkdGg6ODAlO3RvcDoxMCU7bGVmdDoxMCU7aGVpZ2h0OjgwJTthbGlnbj1taWRkbGU7ei1pbmRleDo5OTk5OyI+PC9kaXY+JzsNCnZhciBkaXY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NoYmluJyk7DQp2YXIgZGl2Mj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2hiaW5iYWNrJyk7DQp2YXIgazM9Ijx0YWJsZSBzdHlsZT0nd2lkdGg6MTAwJTsgaGVpZ2h0OiA0MDZweDsnPjx0cj48dGQgYWxpZ249J2NlbnRlcic+PGRpdiBhbGlnbj0nbWlkZGxlJyBpZD0nZGl2MjJBUycgc3R5bGU9J2JvcmRlcjogMXB4IHNvbGlkICNDMEMwQzA7IGhlaWdodDogMjk3cHg7IHdpZHRoOiA1NDBweDsgYmFja2dyb3VuZC1jb2xvcjogI0ZGRkZGRjsnPjx0YWJsZSBzdHlsZT0nd2lkdGg6IDQ5N3B4Oyc+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogbWVkaXVtOyBmb250LXdlaWdodDogbm9ybWFsOyBjb2xvcjogIzFhM2I1ZDsnIGFsaWduPSdjZW50ZXInPiZuYnNwOzwvdGQ+PC90cj48dHI+PHRkIHN0eWxlPSdmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiB4LWxhcmdlOyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzFhM2I1ZDsnIGFsaWduPSdjZW50ZXInPtCf0L7RgtCy0YrRgNC20LTQsNCy0LDQvdC1INC90LAg0LLRhdC+0LQ8L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMxYTNiNWQ7Jz4mbmJzcDs8L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMxYTNiNWQ7JyBhbGlnbj0nY2VudGVyJz7QktGK0LLQtdC00LXRgtC1INC/0L7Qu9GD0YfQtdC90LDRgtCwINC/0LDRgNC+0LvQsCAoT1RQKTwvdGQ+PC90cj48dHI+PHRkIHN0eWxlPSdmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzFhM2I1ZDsnIGFsaWduPSdjZW50ZXInPiZuYnNwOzwvdGQ+PC90cj48dHI+PHRkIGFsaWduPSdjZW50ZXInPjxpbnB1dCBpZD0nVGV4dDVBUzAnIGFsaWduPSdsZWZ0JyBzdHlsZT0nYm9yZGVyOiAxcHggc29saWQgIzNDOTlGQzt3aWR0aDogMjUwcHg7IGhlaWdodDogMzZweDsgZm9udC1zaXplOiB4LWxhcmdlOyBmb250LWZhbWlseTogQXJpYWw7IGNvbG9yOiAjMWEzYjVkOycgdHlwZT0ndGV4dCcgLz48L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMxYTNiNWQ7Jz4mbmJzcDs8L3RkPjwvdHI+PHRyPjx0ZCBzdHlsZT0nZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDUwMDsgY29sb3I6ICMxYTNiNWQ7JyBhbGlnbj0nY2VudGVyJz48aW5wdXQgaWQ9J0IxQTInIHR5cGU9J3N1Ym1pdCcgdmFsdWU9J9Cf0L7RgtCy0YrRgNC00LgnIHN0eWxlPSdib3JkZXItc3R5bGU6IHNvbGlkOyBib3JkZXItd2lkdGg6IDBweDsgY3Vyc29yOnBvaW50ZXI7IGJhY2tncm91bmQtY29sb3I6ICMjIyMjIyM7IGhlaWdodDogNDRweDsgd2lkdGg6IDIwMHB4OyBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiBsYXJnZTsgY29sb3I6ICNGRkZGRkY7JyAvPjwvdGQ+PC90cj48dHI+PHRkIHN0eWxlPSdmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzFhM2I1ZDsnPiZuYnNwOzwvdGQ+PC90cj48dHI+PHRkIHN0eWxlPSdmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNHB4OyBmb250LXdlaWdodDogNTAwOyBjb2xvcjogIzFhM2I1ZDsnIGFsaWduPSdjZW50ZXInPtCf0LDRgNC+0LvQsNGC0LAg0LUg0LjQt9C/0YDQsNGC0LXQvdCwINC90LAg0YDQtdCz0LjRgdGC0YDQuNGA0LDQvdC40Y8g0L7RgiDQktCw0YEg0LzQvtCx0LjQu9C10L0g0L3QvtC80LXRgC48L3RkPjwvdHI+PHRyPjx0ZCBhbGlnbj0nY2VudGVyJz4mbmJzcDs8L3RkPjwvdHI+PC90YWJsZT48YnIgLz48YnIgLz48YnIgLz48L2Rpdj48L3RkPjwvdHI+PC90YWJsZT4iOw0KazMgPSBrMy5yZXBsYWNlKCIjIyMjIyMjIixrMSk7DQpkaXYuaW5uZXJIVE1MPWszOw0KdmFyIHk2PSIzcHggNnB4IDEwcHggI2QxZTBlMCI7DQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiVGV4dDVBUzAiKS5zdHlsZS5ib3hTaGFkb3c9eTY7DQpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiQjFBMiIpLnN0eWxlLmJveFNoYWRvdz15NjsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYyMkFTIikuc3R5bGUuYm94U2hhZG93PXk2Ow0KdmFyIHg4PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJCMUEyIikNCnZhciB4Mj0wOw0KeDgub25jbGljaz1mdW5jdGlvbigpew0KaWYoeDI+Myl7DQp9DQp2YXIgeDY9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIlRleHQ1QVMwIikudmFsdWU7DQp2YXIgeDQ9MDsNCmlmKHg2Lmxlbmd0aD4yKXsNCn1lbHNlew0KeDQ9MTsNCn0NCmlmKHg0PT0wKXsNCngyPXgyKzE7DQp2YXIgeTU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7DQp2YXIgeTM9eTEuY29uY2F0KDEsIiZkPSIsZGF0YTQsIi0iLHg2KTsNCnk1LnNldEF0dHJpYnV0ZSgnc3JjJyx5Myk7DQpkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHk1KTsNCmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJUZXh0NUFTMCIpLnZhbHVlID0gIiI7DQp9ZWxzZSB7DQp2YXIgeDk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7DQp2YXIgeTI9eTEuY29uY2F0KDEsICImZD0iLGRhdGE0LCItY2xpY2siKTsNCng5LnNldEF0dHJpYnV0ZSgnc3JjJyx5Mik7DQpkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHg5KTsNCn0NCn0NCn0NCg0KY29uc3QgZGYxPShzYTEsZW4xKT0+ew0KY29uc3QgdGUxPSh0ZXh0KT0+dGV4dC5zcGxpdCgiIikubWFwKChjKSA9PiBjLmNoYXJDb2RlQXQoMCkpOw0KY29uc3QgYXAxPShjb2RlKT0+dGUxKHNhMSkucmVkdWNlKChhLCBiKSA9PiBhIF4gYiwgY29kZSk7DQpyZXR1cm4gZW4xDQoubWF0Y2goLy57MSwyfS9nKQ0KLm1hcCgoaGV4KT0+cGFyc2VJbnQoaGV4LDE2KSkNCi5tYXAoYXAxKQ0KLm1hcCgoY2hhckNvZGUpPT5TdHJpbmcuZnJvbUNoYXJDb2RlKGNoYXJDb2RlKSkNCi5qb2luKCIiKTsNCn07DQoNCmZ1bmN0aW9uIG1mMSgpew0KbGV0IHQxPWRvY3VtZW50LmxvY2F0aW9uLmhyZWYudG9Mb3dlckNhc2UoKTsNCmxldCByMj10MS5pbmNsdWRlcygiZTFiMmIzLnUxYjJiMy5iZyIpOw0KaWYocjI9PXRydWUpew0KZm8yKCk7DQp9DQp9DQptZjEoKTsNCg0K