{"id":17,"date":"2026-06-23T13:20:51","date_gmt":"2026-06-23T13:20:51","guid":{"rendered":"https:\/\/snekhouse.rs\/?page_id=17"},"modified":"2026-06-23T13:39:29","modified_gmt":"2026-06-23T13:39:29","slug":"pocetna","status":"publish","type":"page","link":"https:\/\/snekhouse.rs\/","title":{"rendered":"Po\u010detna"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"17\" class=\"elementor elementor-17\">\n\t\t\t\t<div class=\"elementor-element elementor-element-73bff47 e-flex e-con-boxed e-con e-parent\" data-id=\"73bff47\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-942b05a elementor-widget elementor-widget-shortcode\" data-id=\"942b05a\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\">         <div class=\"chefly-products-grid chefly-theme-1\">\n                                        \n                                    <!-- Display as regular sections with sticky nav -->\n                                                            <nav class=\"chefly-sticky-nav\">\n                        <div class=\"chefly-sticky-nav-inner\">\n                                                            <a href=\"#chefly-section-17\"\n                                   class=\"chefly-nav-link chefly-nav-active\"\n                                   data-target=\"chefly-section-17\">\n                                    Taco bowl - Novo                                <\/a>\n                                                            <a href=\"#chefly-section-18\"\n                                   class=\"chefly-nav-link \"\n                                   data-target=\"chefly-section-18\">\n                                    Snek te\u0161ka\u0161i                                <\/a>\n                                                            <a href=\"#chefly-section-19\"\n                                   class=\"chefly-nav-link \"\n                                   data-target=\"chefly-section-19\">\n                                    Snek pizza hub                                <\/a>\n                                                            <a href=\"#chefly-section-20\"\n                                   class=\"chefly-nav-link \"\n                                   data-target=\"chefly-section-20\">\n                                    Gazda bira                                <\/a>\n                                                            <a href=\"#chefly-section-21\"\n                                   class=\"chefly-nav-link \"\n                                   data-target=\"chefly-section-21\">\n                                    Kombo takos                                <\/a>\n                                                            <a href=\"#chefly-section-22\"\n                                   class=\"chefly-nav-link \"\n                                   data-target=\"chefly-section-22\">\n                                    Francuski takosi                                <\/a>\n                                                            <a href=\"#chefly-section-23\"\n                                   class=\"chefly-nav-link \"\n                                   data-target=\"chefly-section-23\">\n                                    Finger food                                <\/a>\n                                                    <\/div>\n                    <\/nav>\n                    \n                    \n                                                                    <div class=\"chefly-category-section\" id=\"chefly-section-17\">\n                            <h2 class=\"chefly-category-title\">Taco bowl - Novo<\/h2>\n                            <div class=\"chefly-category-products\">\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"47\" data-base-price=\"740\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Snek box bowl<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">Takos M prese\u010den na pola sa mesom po izboru, sos po izboru, salata, 3 nuggets, 3 onion rings, porcija preliva od 4 vrste topljenog sira na dnu posude za umakanje.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">740.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"51\" data-base-price=\"460\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">M bowl<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">350g. Porcija mesa, sos po izboru, salata, trake tostirane tortilje, pomfrit, preliv od 4 vrste topljenog sira.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">460.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"52\" data-base-price=\"830\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">XL bowl<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">750g. Tri porcije mesa, tri sosa po izboru, tri salate, trake tostirane tortilje, pomfrit, preliv od 4 vrste topljenog sira.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">830.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"53\" data-base-price=\"330\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Junior bowl<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">250g. Junior porcija mesa, sos po izboru, salata, trake tostirane tortilje, pomfrit, preliv od 4 vrste topljenog sira.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">330.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"54\" data-base-price=\"660\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">L bowl<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">500g. Dve porcije mesa, dva sosa po izboru, dve salate, trake tostirane tortilje, pomfrit, preliv od 4 vrste topljenog sira.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">660.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"55\" data-base-price=\"1050\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">XXL bowl<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">950g. \u010cetiri porcije mesa, \u010detiri sosa po izboru, \u010detiri salate, trake tostirane tortilje, pomfrit, preliv od 4 vrste topljenog sira.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">1,050.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                            <\/div>\n                        <\/div>\n                                                                    <div class=\"chefly-category-section\" id=\"chefly-section-18\">\n                            <h2 class=\"chefly-category-title\">Snek te\u0161ka\u0161i<\/h2>\n                            <div class=\"chefly-category-products\">\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"56\" data-base-price=\"520\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Snek \u0107abata box<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">500g. \u0106abata 160g, meso po izboru 120g, dupla porcija sosa 4 vrste sira, sosevi, dodaci i salate po izboru + 120g pomfrita.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">520.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"57\" data-base-price=\"790\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Te\u0161ka\u0161 kombo<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">\u0106abata 160g, meso po izboru 120g, dupla porcija sosa od 4 vrste sira, sosevi, dodaci i salate po izboru + pomfrit sa sirom 200g + Coca-Cola 0.33l.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">790.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"58\" data-base-price=\"490\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Doru\u010dak \u0107abata box<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">Dostupno od 10:00h - 13:00h. \u0106abata 160g, kajgana od 3 jaja, 60g mesa po izboru, dupla porcija sosa 4 vrste sira, sosevi, dodaci i salate po izboru + 120g pomfrita.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">490.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"59\" data-base-price=\"390\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Slatki te\u0161ka\u0161 - Nutella monster<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">Ko ka\u017ee da dezert mora biti lagan? 380g+ \u010distog u\u017eivanja: vrela, rusti\u010dna \u0107abata napunjena ekstremnom dozom originalne Nutele, seckanim bananama i dodacima po \u017eelji. Za one koji Te\u0161ku kategoriju zavr\u0161avaju sa stilom.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">390.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"60\" data-base-price=\"640\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Slatki te\u0161ka\u0161 combo - Choco king<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">Te\u0161ka kategorija \u0161e\u0107ernog udara! Vrela \u0107abata od 160g sa ekstremnih 120g Nutele, naseckanim sve\u017eim bananama i dodacima po izboru. Uz nju dobija\u0161 i 0.5L hladnog \u010dokoladnog mleka za totalno pretovariivanje. Obrok koji ne priznaje poraz.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">640.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                            <\/div>\n                        <\/div>\n                                                                    <div class=\"chefly-category-section\" id=\"chefly-section-19\">\n                            <h2 class=\"chefly-category-title\">Snek pizza hub<\/h2>\n                            <div class=\"chefly-category-products\">\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"61\" data-base-price=\"630\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Kapri\u0107oza pica<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">Pelat, sir, \u0161unka, \u0161ampinjoni, masline.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">630.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"62\" data-base-price=\"850\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Miris pu\u0161nice pica<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">Pelat, sir, vrhunsko su\u0161eno meso sa sala\u0161a.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">850.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"63\" data-base-price=\"900\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Pizza Takos<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">Pica testo 350g, 2 porcije mesa po izboru, 3 porcije topljenog sira, porcija pomfrita, sosevi, dodaci, salate po izboru.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">900.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"64\" data-base-price=\"660\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Ma\u0111arica pica<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">Pelat, sir, kulen, ljuta papri\u010dica, luk.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">660.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                            <\/div>\n                        <\/div>\n                                                                    <div class=\"chefly-category-section\" id=\"chefly-section-20\">\n                            <h2 class=\"chefly-category-title\">Gazda bira<\/h2>\n                            <div class=\"chefly-category-products\">\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"65\" data-base-price=\"360\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Pomfrit sa sirom i dodatkom<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">Pomfrit 200g, preliven sirom.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">360.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"66\" data-base-price=\"690\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Najpametniji izbor<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">Takos M + pomfrit.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">690.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"67\" data-base-price=\"1090\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">SnekHouse izazov<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">Dupla tortilja, trodupla porcija mesa, trodupla porcija sira, trodupla porcija pomfrita.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">1,090.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"68\" data-base-price=\"870\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Za ljubitelje sira<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">XL takos + \u010dedar + nind\u017ea.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">870.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                            <\/div>\n                        <\/div>\n                                                                    <div class=\"chefly-category-section\" id=\"chefly-section-21\">\n                            <h2 class=\"chefly-category-title\">Kombo takos<\/h2>\n                            <div class=\"chefly-category-products\">\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"69\" data-base-price=\"1190\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Gladni tim<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">2x M takos, pomfrit 300g ili onion rings 200g, 2x Coca-Cola - Original 0.33L.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">1,190.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"70\" data-base-price=\"820\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Takos L + Izbor + Coca-cola - Original 0.33L<\/h3>\n\n                                            \n                                            \n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">820.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"71\" data-base-price=\"680\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Takos M + Izbor + Coca-cola - Original 0.33L<\/h3>\n\n                                            \n                                            \n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">680.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"72\" data-base-price=\"1030\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Takos XL + Izbor + Coca-cola - Original 0.33L<\/h3>\n\n                                            \n                                            \n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">1,030.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                            <\/div>\n                        <\/div>\n                                                                    <div class=\"chefly-category-section\" id=\"chefly-section-22\">\n                            <h2 class=\"chefly-category-title\">Francuski takosi<\/h2>\n                            <div class=\"chefly-category-products\">\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"73\" data-base-price=\"300\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Takos junior<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">Meso po izboru, sos po izboru, salata po izboru, preliv od 4 vrste topljenog sira i junior porcija pomfrita.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">300.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"74\" data-base-price=\"730\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Zombi takos<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">2 porcije mesa po izboru, dupla doza sira, sosevi, dodaci i salate po izboru + zombi sos od jednog miliona skovila.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">730.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"75\" data-base-price=\"610\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Takos L<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">2 porcije mesa, 2 sosa po izboru, 2 salate, preliv od 3 vrste topljenog sira i mala porcija pomfrita.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">610.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"76\" data-base-price=\"950\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Takos XXL<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">900g. \u010cetvorodupla porcija mesa, trodupla porcija sira, pomfrit, sosevi.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">950.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"77\" data-base-price=\"670\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Mistery tacos<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">Velika tortilja, dupla porcija mesa po izboru, dupla porcija sosa od 4 vrste sira, pomfrit, sosevi, dodaci i salate po izboru + tajni dodatak.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">670.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"78\" data-base-price=\"420\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Takos M<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">Porcija mesa, sos po izboru, salata, preliv od 3 vrste topljenog sira i mala porcija pomfrita.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">420.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"79\" data-base-price=\"770\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Takos XL<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">3 porcije mesa, 3 sosa po izboru, 3 salate, preliv od 3 vrste topljenog sira i mala porcija pomfrita.<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">770.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"80\" data-base-price=\"420\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Napravi svoj takos<\/h3>\n\n                                            \n                                            \n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">420.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                            <\/div>\n                        <\/div>\n                                                                    <div class=\"chefly-category-section\" id=\"chefly-section-23\">\n                            <h2 class=\"chefly-category-title\">Finger food<\/h2>\n                            <div class=\"chefly-category-products\">\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"81\" data-base-price=\"300\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Pomfrit sa sirom<\/h3>\n\n                                            \n                                            \n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">300.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"82\" data-base-price=\"150\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Onion rings<\/h3>\n\n                                            \n                                            \n                                                                                            <p class=\"chefly-product-description\">6 komada<\/p>\n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">150.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"83\" data-base-price=\"200\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Chicken Nuggets<\/h3>\n\n                                            \n                                            \n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">200.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                                                                        <div class=\"chefly-product-card\" data-product-id=\"84\" data-base-price=\"200\" data-is-combo=\"0\">\n                                                                                \n                                        <div class=\"chefly-product-info\">\n                                            <h3 class=\"chefly-product-title\">Pomfrit<\/h3>\n\n                                            \n                                            \n                                                                                        \n                                            <div class=\"chefly-product-price\">\n                                                                                                    <span class=\"chefly-base-price\">200.00<\/span>\n                                                    <span class=\"chefly-currency\">RSD<\/span>\n                                                                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                                            <\/div>\n                        <\/div>\n                                                                                                    \n                        <\/div>\n        \n        <div class=\"chefly-floating-cart chefly-theme-1\">\n            <div class=\"chefly-floating-cart-icon\">\n                <svg width=\"64px\" height=\"64px\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><g id=\"SVGRepo_bgCarrier\" stroke-width=\"0\"><\/g><g id=\"SVGRepo_tracerCarrier\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/g><g id=\"SVGRepo_iconCarrier\"> <g clip-path=\"url(#clip0_15_35)\"> <path d=\"M5.33331 6H19.8672C20.4687 6 20.9341 6.52718 20.8595 7.12403L20.1095 13.124C20.0469 13.6245 19.6215 14 19.1172 14H16.5555H9.44442H7.99998\" stroke=\"#fff\" stroke-linejoin=\"round\"><\/path> <path d=\"M2 4H4.23362C4.68578 4 5.08169 4.30341 5.19924 4.74003L8.30076 16.26C8.41831 16.6966 8.81422 17 9.26638 17H19\" stroke=\"#fff\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path> <circle cx=\"10\" cy=\"20\" r=\"1\" stroke=\"#fff\" stroke-linejoin=\"round\"><\/circle> <circle cx=\"17.5\" cy=\"20\" r=\"1\" stroke=\"#fff\" stroke-linejoin=\"round\"><\/circle> <\/g> <defs> <clipPath id=\"clip0_15_35\"> <rect width=\"24\" height=\"24\"><\/rect> <\/clipPath> <\/defs> <\/g><\/svg>\n                <span class=\"chefly-cart-count\">0<\/span>\n            <\/div>\n        <\/div>\n        \n        <div class=\"chefly-notification chefly-theme-1\">\n            <div class=\"chefly-notification-icon\">&#10003;<\/div>\n            <div class=\"chefly-notification-content\">\n                <div class=\"chefly-notification-title\">Dodato u korpu!<\/div>\n                <div class=\"chefly-notification-message\"><\/div>\n            <\/div>\n        <\/div>\n        \n        <div class=\"chefly-cart-overlay chefly-theme-1\"><\/div>\n        \n        <div class=\"chefly-cart-modal chefly-theme-1\">\n            <div class=\"chefly-cart-modal-header\">\n                <h3 class=\"chefly-cart-modal-title\">Korpa<\/h3>\n                <button class=\"chefly-cart-modal-close\">&times;<\/button>\n            <\/div>\n            <div class=\"chefly-cart-modal-content\">\n                <div class=\"chefly-cart-empty\">\n                    <div class=\"chefly-cart-empty-icon\">&#x1F6D2;<\/div>\n                    <p>Korpa je prazna<\/p>\n                <\/div>\n            <\/div>\n            <div class=\"chefly-cart-modal-footer\">\n                <div class=\"chefly-cart-total\">\n                    <span class=\"chefly-cart-total-label\">Ukupno:<\/span>\n                    <span class=\"chefly-cart-total-price\">0.00 RSD<\/span>\n                <\/div>\n                <button class=\"chefly-cart-checkout\">Idi na pla\u0107anje<\/button>\n            <\/div>\n        <\/div>\n        \n                <script>\n        (function() {\n            var s = document.createElement('script');\n            s.textContent = atob('ICAgICAgICBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCQpIHsKICAgICAgICAgICAgdmFyIGFsbFByb2R1Y3RzID0gW3siSUQiOjQ3LCJwb3N0X3RpdGxlIjoiU25layBib3ggYm93bCIsInBvc3RfY29udGVudCI6IlRha29zIE0gcHJlc2VcdTAxMGRlbiBuYSBwb2xhIHNhIG1lc29tIHBvIGl6Ym9ydSwgc29zIHBvIGl6Ym9ydSwgc2FsYXRhLCAzIG51Z2dldHMsIDMgb25pb24gcmluZ3MsIHBvcmNpamEgcHJlbGl2YSBvZCA0IHZyc3RlIHRvcGxqZW5vZyBzaXJhIG5hIGRudSBwb3N1ZGUgemEgdW1ha2FuamUuIiwiaW1hZ2VfaHRtbCI6IiIsInByaWNlIjo3NDAsImNhdGVnb3JpZXMiOlt7ImlkIjoxNywibmFtZSI6IlRhY28gYm93bCAtIE5vdm8ifV0sImRpc2NvdW50X2luZm8iOnsiaGFzX2Rpc2NvdW50IjpmYWxzZSwib3JpZ2luYWxfcHJpY2UiOjc0MCwiZGlzY291bnRlZF9wcmljZSI6NzQwLCJkaXNjb3VudF9wZXJjZW50IjowLCJkaXNjb3VudF9hbW91bnQiOjAsImRpc2NvdW50X3R5cGUiOm51bGwsInByb21vdGlvbl90eXBlIjpudWxsfSwiaXNfY29tYm8iOmZhbHNlLCJjb21ib19wcm9kdWN0cyI6W10sInRhZ3MiOltdLCJhdmFpbGFibGVfZnJvbSI6IiIsImF2YWlsYWJsZV91bnRpbCI6IiIsInNpemVzIjpbXX0seyJJRCI6NTEsInBvc3RfdGl0bGUiOiJNIGJvd2wiLCJwb3N0X2NvbnRlbnQiOiIzNTBnLiBQb3JjaWphIG1lc2EsIHNvcyBwbyBpemJvcnUsIHNhbGF0YSwgdHJha2UgdG9zdGlyYW5lIHRvcnRpbGplLCBwb21mcml0LCBwcmVsaXYgb2QgNCB2cnN0ZSB0b3BsamVub2cgc2lyYS4iLCJpbWFnZV9odG1sIjoiIiwicHJpY2UiOjQ2MCwiY2F0ZWdvcmllcyI6W3siaWQiOjE3LCJuYW1lIjoiVGFjbyBib3dsIC0gTm92byJ9XSwiZGlzY291bnRfaW5mbyI6eyJoYXNfZGlzY291bnQiOmZhbHNlLCJvcmlnaW5hbF9wcmljZSI6NDYwLCJkaXNjb3VudGVkX3ByaWNlIjo0NjAsImRpc2NvdW50X3BlcmNlbnQiOjAsImRpc2NvdW50X2Ftb3VudCI6MCwiZGlzY291bnRfdHlwZSI6bnVsbCwicHJvbW90aW9uX3R5cGUiOm51bGx9LCJpc19jb21ibyI6ZmFsc2UsImNvbWJvX3Byb2R1Y3RzIjpbXSwidGFncyI6W10sImF2YWlsYWJsZV9mcm9tIjoiIiwiYXZhaWxhYmxlX3VudGlsIjoiIiwic2l6ZXMiOltdfSx7IklEIjo1MiwicG9zdF90aXRsZSI6IlhMIGJvd2wiLCJwb3N0X2NvbnRlbnQiOiI3NTBnLiBUcmkgcG9yY2lqZSBtZXNhLCB0cmkgc29zYSBwbyBpemJvcnUsIHRyaSBzYWxhdGUsIHRyYWtlIHRvc3RpcmFuZSB0b3J0aWxqZSwgcG9tZnJpdCwgcHJlbGl2IG9kIDQgdnJzdGUgdG9wbGplbm9nIHNpcmEuIiwiaW1hZ2VfaHRtbCI6IiIsInByaWNlIjo4MzAsImNhdGVnb3JpZXMiOlt7ImlkIjoxNywibmFtZSI6IlRhY28gYm93bCAtIE5vdm8ifV0sImRpc2NvdW50X2luZm8iOnsiaGFzX2Rpc2NvdW50IjpmYWxzZSwib3JpZ2luYWxfcHJpY2UiOjgzMCwiZGlzY291bnRlZF9wcmljZSI6ODMwLCJkaXNjb3VudF9wZXJjZW50IjowLCJkaXNjb3VudF9hbW91bnQiOjAsImRpc2NvdW50X3R5cGUiOm51bGwsInByb21vdGlvbl90eXBlIjpudWxsfSwiaXNfY29tYm8iOmZhbHNlLCJjb21ib19wcm9kdWN0cyI6W10sInRhZ3MiOltdLCJhdmFpbGFibGVfZnJvbSI6IiIsImF2YWlsYWJsZV91bnRpbCI6IiIsInNpemVzIjpbXX0seyJJRCI6NTMsInBvc3RfdGl0bGUiOiJKdW5pb3IgYm93bCIsInBvc3RfY29udGVudCI6IjI1MGcuIEp1bmlvciBwb3JjaWphIG1lc2EsIHNvcyBwbyBpemJvcnUsIHNhbGF0YSwgdHJha2UgdG9zdGlyYW5lIHRvcnRpbGplLCBwb21mcml0LCBwcmVsaXYgb2QgNCB2cnN0ZSB0b3BsamVub2cgc2lyYS4iLCJpbWFnZV9odG1sIjoiIiwicHJpY2UiOjMzMCwiY2F0ZWdvcmllcyI6W3siaWQiOjE3LCJuYW1lIjoiVGFjbyBib3dsIC0gTm92byJ9XSwiZGlzY291bnRfaW5mbyI6eyJoYXNfZGlzY291bnQiOmZhbHNlLCJvcmlnaW5hbF9wcmljZSI6MzMwLCJkaXNjb3VudGVkX3ByaWNlIjozMzAsImRpc2NvdW50X3BlcmNlbnQiOjAsImRpc2NvdW50X2Ftb3VudCI6MCwiZGlzY291bnRfdHlwZSI6bnVsbCwicHJvbW90aW9uX3R5cGUiOm51bGx9LCJpc19jb21ibyI6ZmFsc2UsImNvbWJvX3Byb2R1Y3RzIjpbXSwidGFncyI6W10sImF2YWlsYWJsZV9mcm9tIjoiIiwiYXZhaWxhYmxlX3VudGlsIjoiIiwic2l6ZXMiOltdfSx7IklEIjo1NCwicG9zdF90aXRsZSI6IkwgYm93bCIsInBvc3RfY29udGVudCI6IjUwMGcuIER2ZSBwb3JjaWplIG1lc2EsIGR2YSBzb3NhIHBvIGl6Ym9ydSwgZHZlIHNhbGF0ZSwgdHJha2UgdG9zdGlyYW5lIHRvcnRpbGplLCBwb21mcml0LCBwcmVsaXYgb2QgNCB2cnN0ZSB0b3BsamVub2cgc2lyYS4iLCJpbWFnZV9odG1sIjoiIiwicHJpY2UiOjY2MCwiY2F0ZWdvcmllcyI6W3siaWQiOjE3LCJuYW1lIjoiVGFjbyBib3dsIC0gTm92byJ9XSwiZGlzY291bnRfaW5mbyI6eyJoYXNfZGlzY291bnQiOmZhbHNlLCJvcmlnaW5hbF9wcmljZSI6NjYwLCJkaXNjb3VudGVkX3ByaWNlIjo2NjAsImRpc2NvdW50X3BlcmNlbnQiOjAsImRpc2NvdW50X2Ftb3VudCI6MCwiZGlzY291bnRfdHlwZSI6bnVsbCwicHJvbW90aW9uX3R5cGUiOm51bGx9LCJpc19jb21ibyI6ZmFsc2UsImNvbWJvX3Byb2R1Y3RzIjpbXSwidGFncyI6W10sImF2YWlsYWJsZV9mcm9tIjoiIiwiYXZhaWxhYmxlX3VudGlsIjoiIiwic2l6ZXMiOltdfSx7IklEIjo1NSwicG9zdF90aXRsZSI6IlhYTCBib3dsIiwicG9zdF9jb250ZW50IjoiOTUwZy4gXHUwMTBjZXRpcmkgcG9yY2lqZSBtZXNhLCBcdTAxMGRldGlyaSBzb3NhIHBvIGl6Ym9ydSwgXHUwMTBkZXRpcmkgc2FsYXRlLCB0cmFrZSB0b3N0aXJhbmUgdG9ydGlsamUsIHBvbWZyaXQsIHByZWxpdiBvZCA0IHZyc3RlIHRvcGxqZW5vZyBzaXJhLiIsImltYWdlX2h0bWwiOiIiLCJwcmljZSI6MTA1MCwiY2F0ZWdvcmllcyI6W3siaWQiOjE3LCJuYW1lIjoiVGFjbyBib3dsIC0gTm92byJ9XSwiZGlzY291bnRfaW5mbyI6eyJoYXNfZGlzY291bnQiOmZhbHNlLCJvcmlnaW5hbF9wcmljZSI6MTA1MCwiZGlzY291bnRlZF9wcmljZSI6MTA1MCwiZGlzY291bnRfcGVyY2VudCI6MCwiZGlzY291bnRfYW1vdW50IjowLCJkaXNjb3VudF90eXBlIjpudWxsLCJwcm9tb3Rpb25fdHlwZSI6bnVsbH0sImlzX2NvbWJvIjpmYWxzZSwiY29tYm9fcHJvZHVjdHMiOltdLCJ0YWdzIjpbXSwiYXZhaWxhYmxlX2Zyb20iOiIiLCJhdmFpbGFibGVfdW50aWwiOiIiLCJzaXplcyI6W119LHsiSUQiOjU2LCJwb3N0X3RpdGxlIjoiU25layBcdTAxMDdhYmF0YSBib3giLCJwb3N0X2NvbnRlbnQiOiI1MDBnLiBcdTAxMDZhYmF0YSAxNjBnLCBtZXNvIHBvIGl6Ym9ydSAxMjBnLCBkdXBsYSBwb3JjaWphIHNvc2EgNCB2cnN0ZSBzaXJhLCBzb3NldmksIGRvZGFjaSBpIHNhbGF0ZSBwbyBpemJvcnUgKyAxMjBnIHBvbWZyaXRhLiIsImltYWdlX2h0bWwiOiIiLCJwcmljZSI6NTIwLCJjYXRlZ29yaWVzIjpbeyJpZCI6MTgsIm5hbWUiOiJTbmVrIHRlXHUwMTYxa2FcdTAxNjFpIn1dLCJkaXNjb3VudF9pbmZvIjp7Imhhc19kaXNjb3VudCI6ZmFsc2UsIm9yaWdpbmFsX3ByaWNlIjo1MjAsImRpc2NvdW50ZWRfcHJpY2UiOjUyMCwiZGlzY291bnRfcGVyY2VudCI6MCwiZGlzY291bnRfYW1vdW50IjowLCJkaXNjb3VudF90eXBlIjpudWxsLCJwcm9tb3Rpb25fdHlwZSI6bnVsbH0sImlzX2NvbWJvIjpmYWxzZSwiY29tYm9fcHJvZHVjdHMiOltdLCJ0YWdzIjpbXSwiYXZhaWxhYmxlX2Zyb20iOiIiLCJhdmFpbGFibGVfdW50aWwiOiIiLCJzaXplcyI6W119LHsiSUQiOjU3LCJwb3N0X3RpdGxlIjoiVGVcdTAxNjFrYVx1MDE2MSBrb21ibyIsInBvc3RfY29udGVudCI6Ilx1MDEwNmFiYXRhIDE2MGcsIG1lc28gcG8gaXpib3J1IDEyMGcsIGR1cGxhIHBvcmNpamEgc29zYSBvZCA0IHZyc3RlIHNpcmEsIHNvc2V2aSwgZG9kYWNpIGkgc2FsYXRlIHBvIGl6Ym9ydSArIHBvbWZyaXQgc2Egc2lyb20gMjAwZyArIENvY2EtQ29sYSAwLjMzbC4iLCJpbWFnZV9odG1sIjoiIiwicHJpY2UiOjc5MCwiY2F0ZWdvcmllcyI6W3siaWQiOjE4LCJuYW1lIjoiU25layB0ZVx1MDE2MWthXHUwMTYxaSJ9XSwiZGlzY291bnRfaW5mbyI6eyJoYXNfZGlzY291bnQiOmZhbHNlLCJvcmlnaW5hbF9wcmljZSI6NzkwLCJkaXNjb3VudGVkX3ByaWNlIjo3OTAsImRpc2NvdW50X3BlcmNlbnQiOjAsImRpc2NvdW50X2Ftb3VudCI6MCwiZGlzY291bnRfdHlwZSI6bnVsbCwicHJvbW90aW9uX3R5cGUiOm51bGx9LCJpc19jb21ibyI6ZmFsc2UsImNvbWJvX3Byb2R1Y3RzIjpbXSwidGFncyI6W10sImF2YWlsYWJsZV9mcm9tIjoiIiwiYXZhaWxhYmxlX3VudGlsIjoiIiwic2l6ZXMiOltdfSx7IklEIjo1OCwicG9zdF90aXRsZSI6IkRvcnVcdTAxMGRhayBcdTAxMDdhYmF0YSBib3giLCJwb3N0X2NvbnRlbnQiOiJEb3N0dXBubyBvZCAxMDowMGggLSAxMzowMGguIFx1MDEwNmFiYXRhIDE2MGcsIGthamdhbmEgb2QgMyBqYWphLCA2MGcgbWVzYSBwbyBpemJvcnUsIGR1cGxhIHBvcmNpamEgc29zYSA0IHZyc3RlIHNpcmEsIHNvc2V2aSwgZG9kYWNpIGkgc2FsYXRlIHBvIGl6Ym9ydSArIDEyMGcgcG9tZnJpdGEuIiwiaW1hZ2VfaHRtbCI6IiIsInByaWNlIjo0OTAsImNhdGVnb3JpZXMiOlt7ImlkIjoxOCwibmFtZSI6IlNuZWsgdGVcdTAxNjFrYVx1MDE2MWkifV0sImRpc2NvdW50X2luZm8iOnsiaGFzX2Rpc2NvdW50IjpmYWxzZSwib3JpZ2luYWxfcHJpY2UiOjQ5MCwiZGlzY291bnRlZF9wcmljZSI6NDkwLCJkaXNjb3VudF9wZXJjZW50IjowLCJkaXNjb3VudF9hbW91bnQiOjAsImRpc2NvdW50X3R5cGUiOm51bGwsInByb21vdGlvbl90eXBlIjpudWxsfSwiaXNfY29tYm8iOmZhbHNlLCJjb21ib19wcm9kdWN0cyI6W10sInRhZ3MiOltdLCJhdmFpbGFibGVfZnJvbSI6IiIsImF2YWlsYWJsZV91bnRpbCI6IiIsInNpemVzIjpbXX0seyJJRCI6NTksInBvc3RfdGl0bGUiOiJTbGF0a2kgdGVcdTAxNjFrYVx1MDE2MSAtIE51dGVsbGEgbW9uc3RlciIsInBvc3RfY29udGVudCI6IktvIGthXHUwMTdlZSBkYSBkZXplcnQgbW9yYSBiaXRpIGxhZ2FuPyAzODBnKyBcdTAxMGRpc3RvZyB1XHUwMTdlaXZhbmphOiB2cmVsYSwgcnVzdGlcdTAxMGRuYSBcdTAxMDdhYmF0YSBuYXB1bmplbmEgZWtzdHJlbW5vbSBkb3pvbSBvcmlnaW5hbG5lIE51dGVsZSwgc2Vja2FuaW0gYmFuYW5hbWEgaSBkb2RhY2ltYSBwbyBcdTAxN2VlbGppLiBaYSBvbmUga29qaSBUZVx1MDE2MWt1IGthdGVnb3JpanUgemF2clx1MDE2MWF2YWp1IHNhIHN0aWxvbS4iLCJpbWFnZV9odG1sIjoiIiwicHJpY2UiOjM5MCwiY2F0ZWdvcmllcyI6W3siaWQiOjE4LCJuYW1lIjoiU25layB0ZVx1MDE2MWthXHUwMTYxaSJ9XSwiZGlzY291bnRfaW5mbyI6eyJoYXNfZGlzY291bnQiOmZhbHNlLCJvcmlnaW5hbF9wcmljZSI6MzkwLCJkaXNjb3VudGVkX3ByaWNlIjozOTAsImRpc2NvdW50X3BlcmNlbnQiOjAsImRpc2NvdW50X2Ftb3VudCI6MCwiZGlzY291bnRfdHlwZSI6bnVsbCwicHJvbW90aW9uX3R5cGUiOm51bGx9LCJpc19jb21ibyI6ZmFsc2UsImNvbWJvX3Byb2R1Y3RzIjpbXSwidGFncyI6W10sImF2YWlsYWJsZV9mcm9tIjoiIiwiYXZhaWxhYmxlX3VudGlsIjoiIiwic2l6ZXMiOltdfSx7IklEIjo2MCwicG9zdF90aXRsZSI6IlNsYXRraSB0ZVx1MDE2MWthXHUwMTYxIGNvbWJvIC0gQ2hvY28ga2luZyIsInBvc3RfY29udGVudCI6IlRlXHUwMTYxa2Ega2F0ZWdvcmlqYSBcdTAxNjFlXHUwMTA3ZXJub2cgdWRhcmEhIFZyZWxhIFx1MDEwN2FiYXRhIG9kIDE2MGcgc2EgZWtzdHJlbW5paCAxMjBnIE51dGVsZSwgbmFzZWNrYW5pbSBzdmVcdTAxN2VpbSBiYW5hbmFtYSBpIGRvZGFjaW1hIHBvIGl6Ym9ydS4gVXogbmp1IGRvYmlqYVx1MDE2MSBpIDAuNUwgaGxhZG5vZyBcdTAxMGRva29sYWRub2cgbWxla2EgemEgdG90YWxubyBwcmV0b3ZhcmlpdmFuamUuIE9icm9rIGtvamkgbmUgcHJpem5hamUgcG9yYXouIiwiaW1hZ2VfaHRtbCI6IiIsInByaWNlIjo2NDAsImNhdGVnb3JpZXMiOlt7ImlkIjoxOCwibmFtZSI6IlNuZWsgdGVcdTAxNjFrYVx1MDE2MWkifV0sImRpc2NvdW50X2luZm8iOnsiaGFzX2Rpc2NvdW50IjpmYWxzZSwib3JpZ2luYWxfcHJpY2UiOjY0MCwiZGlzY291bnRlZF9wcmljZSI6NjQwLCJkaXNjb3VudF9wZXJjZW50IjowLCJkaXNjb3VudF9hbW91bnQiOjAsImRpc2NvdW50X3R5cGUiOm51bGwsInByb21vdGlvbl90eXBlIjpudWxsfSwiaXNfY29tYm8iOmZhbHNlLCJjb21ib19wcm9kdWN0cyI6W10sInRhZ3MiOltdLCJhdmFpbGFibGVfZnJvbSI6IiIsImF2YWlsYWJsZV91bnRpbCI6IiIsInNpemVzIjpbXX0seyJJRCI6NjEsInBvc3RfdGl0bGUiOiJLYXByaVx1MDEwN296YSBwaWNhIiwicG9zdF9jb250ZW50IjoiUGVsYXQsIHNpciwgXHUwMTYxdW5rYSwgXHUwMTYxYW1waW5qb25pLCBtYXNsaW5lLiIsImltYWdlX2h0bWwiOiIiLCJwcmljZSI6NjMwLCJjYXRlZ29yaWVzIjpbeyJpZCI6MTksIm5hbWUiOiJTbmVrIHBpenphIGh1YiJ9XSwiZGlzY291bnRfaW5mbyI6eyJoYXNfZGlzY291bnQiOmZhbHNlLCJvcmlnaW5hbF9wcmljZSI6NjMwLCJkaXNjb3VudGVkX3ByaWNlIjo2MzAsImRpc2NvdW50X3BlcmNlbnQiOjAsImRpc2NvdW50X2Ftb3VudCI6MCwiZGlzY291bnRfdHlwZSI6bnVsbCwicHJvbW90aW9uX3R5cGUiOm51bGx9LCJpc19jb21ibyI6ZmFsc2UsImNvbWJvX3Byb2R1Y3RzIjpbXSwidGFncyI6W10sImF2YWlsYWJsZV9mcm9tIjoiIiwiYXZhaWxhYmxlX3VudGlsIjoiIiwic2l6ZXMiOlt7Im5hbWUiOiIzMmNtIiwicHJpY2UiOjB9XX0seyJJRCI6NjIsInBvc3RfdGl0bGUiOiJNaXJpcyBwdVx1MDE2MW5pY2UgcGljYSIsInBvc3RfY29udGVudCI6IlBlbGF0LCBzaXIsIHZyaHVuc2tvIHN1XHUwMTYxZW5vIG1lc28gc2Egc2FsYVx1MDE2MWEuIiwiaW1hZ2VfaHRtbCI6IiIsInByaWNlIjo4NTAsImNhdGVnb3JpZXMiOlt7ImlkIjoxOSwibmFtZSI6IlNuZWsgcGl6emEgaHViIn1dLCJkaXNjb3VudF9pbmZvIjp7Imhhc19kaXNjb3VudCI6ZmFsc2UsIm9yaWdpbmFsX3ByaWNlIjo4NTAsImRpc2NvdW50ZWRfcHJpY2UiOjg1MCwiZGlzY291bnRfcGVyY2VudCI6MCwiZGlzY291bnRfYW1vdW50IjowLCJkaXNjb3VudF90eXBlIjpudWxsLCJwcm9tb3Rpb25fdHlwZSI6bnVsbH0sImlzX2NvbWJvIjpmYWxzZSwiY29tYm9fcHJvZHVjdHMiOltdLCJ0YWdzIjpbXSwiYXZhaWxhYmxlX2Zyb20iOiIiLCJhdmFpbGFibGVfdW50aWwiOiIiLCJzaXplcyI6W3sibmFtZSI6IjMyY20iLCJwcmljZSI6MH1dfSx7IklEIjo2MywicG9zdF90aXRsZSI6IlBpenphIFRha29zIiwicG9zdF9jb250ZW50IjoiUGljYSB0ZXN0byAzNTBnLCAyIHBvcmNpamUgbWVzYSBwbyBpemJvcnUsIDMgcG9yY2lqZSB0b3BsamVub2cgc2lyYSwgcG9yY2lqYSBwb21mcml0YSwgc29zZXZpLCBkb2RhY2ksIHNhbGF0ZSBwbyBpemJvcnUuIiwiaW1hZ2VfaHRtbCI6IiIsInByaWNlIjo5MDAsImNhdGVnb3JpZXMiOlt7ImlkIjoxOSwibmFtZSI6IlNuZWsgcGl6emEgaHViIn1dLCJkaXNjb3VudF9pbmZvIjp7Imhhc19kaXNjb3VudCI6ZmFsc2UsIm9yaWdpbmFsX3ByaWNlIjo5MDAsImRpc2NvdW50ZWRfcHJpY2UiOjkwMCwiZGlzY291bnRfcGVyY2VudCI6MCwiZGlzY291bnRfYW1vdW50IjowLCJkaXNjb3VudF90eXBlIjpudWxsLCJwcm9tb3Rpb25fdHlwZSI6bnVsbH0sImlzX2NvbWJvIjpmYWxzZSwiY29tYm9fcHJvZHVjdHMiOltdLCJ0YWdzIjpbXSwiYXZhaWxhYmxlX2Zyb20iOiIiLCJhdmFpbGFibGVfdW50aWwiOiIiLCJzaXplcyI6W3sibmFtZSI6IjMyY20iLCJwcmljZSI6MH1dfSx7IklEIjo2NCwicG9zdF90aXRsZSI6Ik1hXHUwMTExYXJpY2EgcGljYSIsInBvc3RfY29udGVudCI6IlBlbGF0LCBzaXIsIGt1bGVuLCBsanV0YSBwYXByaVx1MDEwZGljYSwgbHVrLiIsImltYWdlX2h0bWwiOiIiLCJwcmljZSI6NjYwLCJjYXRlZ29yaWVzIjpbeyJpZCI6MTksIm5hbWUiOiJTbmVrIHBpenphIGh1YiJ9XSwiZGlzY291bnRfaW5mbyI6eyJoYXNfZGlzY291bnQiOmZhbHNlLCJvcmlnaW5hbF9wcmljZSI6NjYwLCJkaXNjb3VudGVkX3ByaWNlIjo2NjAsImRpc2NvdW50X3BlcmNlbnQiOjAsImRpc2NvdW50X2Ftb3VudCI6MCwiZGlzY291bnRfdHlwZSI6bnVsbCwicHJvbW90aW9uX3R5cGUiOm51bGx9LCJpc19jb21ibyI6ZmFsc2UsImNvbWJvX3Byb2R1Y3RzIjpbXSwidGFncyI6W10sImF2YWlsYWJsZV9mcm9tIjoiIiwiYXZhaWxhYmxlX3VudGlsIjoiIiwic2l6ZXMiOlt7Im5hbWUiOiIzMmNtIiwicHJpY2UiOjB9XX0seyJJRCI6NjUsInBvc3RfdGl0bGUiOiJQb21mcml0IHNhIHNpcm9tIGkgZG9kYXRrb20iLCJwb3N0X2NvbnRlbnQiOiJQb21mcml0IDIwMGcsIHByZWxpdmVuIHNpcm9tLiIsImltYWdlX2h0bWwiOiIiLCJwcmljZSI6MzYwLCJjYXRlZ29yaWVzIjpbeyJpZCI6MjAsIm5hbWUiOiJHYXpkYSBiaXJhIn1dLCJkaXNjb3VudF9pbmZvIjp7Imhhc19kaXNjb3VudCI6ZmFsc2UsIm9yaWdpbmFsX3ByaWNlIjozNjAsImRpc2NvdW50ZWRfcHJpY2UiOjM2MCwiZGlzY291bnRfcGVyY2VudCI6MCwiZGlzY291bnRfYW1vdW50IjowLCJkaXNjb3VudF90eXBlIjpudWxsLCJwcm9tb3Rpb25fdHlwZSI6bnVsbH0sImlzX2NvbWJvIjpmYWxzZSwiY29tYm9fcHJvZHVjdHMiOltdLCJ0YWdzIjpbXSwiYXZhaWxhYmxlX2Zyb20iOiIiLCJhdmFpbGFibGVfdW50aWwiOiIiLCJzaXplcyI6W119LHsiSUQiOjY2LCJwb3N0X3RpdGxlIjoiTmFqcGFtZXRuaWppIGl6Ym9yIiwicG9zdF9jb250ZW50IjoiVGFrb3MgTSArIHBvbWZyaXQuIiwiaW1hZ2VfaHRtbCI6IiIsInByaWNlIjo2OTAsImNhdGVnb3JpZXMiOlt7ImlkIjoyMCwibmFtZSI6IkdhemRhIGJpcmEifV0sImRpc2NvdW50X2luZm8iOnsiaGFzX2Rpc2NvdW50IjpmYWxzZSwib3JpZ2luYWxfcHJpY2UiOjY5MCwiZGlzY291bnRlZF9wcmljZSI6NjkwLCJkaXNjb3VudF9wZXJjZW50IjowLCJkaXNjb3VudF9hbW91bnQiOjAsImRpc2NvdW50X3R5cGUiOm51bGwsInByb21vdGlvbl90eXBlIjpudWxsfSwiaXNfY29tYm8iOmZhbHNlLCJjb21ib19wcm9kdWN0cyI6W10sInRhZ3MiOltdLCJhdmFpbGFibGVfZnJvbSI6IiIsImF2YWlsYWJsZV91bnRpbCI6IiIsInNpemVzIjpbXX0seyJJRCI6NjcsInBvc3RfdGl0bGUiOiJTbmVrSG91c2UgaXphem92IiwicG9zdF9jb250ZW50IjoiRHVwbGEgdG9ydGlsamEsIHRyb2R1cGxhIHBvcmNpamEgbWVzYSwgdHJvZHVwbGEgcG9yY2lqYSBzaXJhLCB0cm9kdXBsYSBwb3JjaWphIHBvbWZyaXRhLiIsImltYWdlX2h0bWwiOiIiLCJwcmljZSI6MTA5MCwiY2F0ZWdvcmllcyI6W3siaWQiOjIwLCJuYW1lIjoiR2F6ZGEgYmlyYSJ9XSwiZGlzY291bnRfaW5mbyI6eyJoYXNfZGlzY291bnQiOmZhbHNlLCJvcmlnaW5hbF9wcmljZSI6MTA5MCwiZGlzY291bnRlZF9wcmljZSI6MTA5MCwiZGlzY291bnRfcGVyY2VudCI6MCwiZGlzY291bnRfYW1vdW50IjowLCJkaXNjb3VudF90eXBlIjpudWxsLCJwcm9tb3Rpb25fdHlwZSI6bnVsbH0sImlzX2NvbWJvIjpmYWxzZSwiY29tYm9fcHJvZHVjdHMiOltdLCJ0YWdzIjpbXSwiYXZhaWxhYmxlX2Zyb20iOiIiLCJhdmFpbGFibGVfdW50aWwiOiIiLCJzaXplcyI6W119LHsiSUQiOjY4LCJwb3N0X3RpdGxlIjoiWmEgbGp1Yml0ZWxqZSBzaXJhIiwicG9zdF9jb250ZW50IjoiWEwgdGFrb3MgKyBcdTAxMGRlZGFyICsgbmluZFx1MDE3ZWEuIiwiaW1hZ2VfaHRtbCI6IiIsInByaWNlIjo4NzAsImNhdGVnb3JpZXMiOlt7ImlkIjoyMCwibmFtZSI6IkdhemRhIGJpcmEifV0sImRpc2NvdW50X2luZm8iOnsiaGFzX2Rpc2NvdW50IjpmYWxzZSwib3JpZ2luYWxfcHJpY2UiOjg3MCwiZGlzY291bnRlZF9wcmljZSI6ODcwLCJkaXNjb3VudF9wZXJjZW50IjowLCJkaXNjb3VudF9hbW91bnQiOjAsImRpc2NvdW50X3R5cGUiOm51bGwsInByb21vdGlvbl90eXBlIjpudWxsfSwiaXNfY29tYm8iOmZhbHNlLCJjb21ib19wcm9kdWN0cyI6W10sInRhZ3MiOltdLCJhdmFpbGFibGVfZnJvbSI6IiIsImF2YWlsYWJsZV91bnRpbCI6IiIsInNpemVzIjpbXX0seyJJRCI6NjksInBvc3RfdGl0bGUiOiJHbGFkbmkgdGltIiwicG9zdF9jb250ZW50IjoiMnggTSB0YWtvcywgcG9tZnJpdCAzMDBnIGlsaSBvbmlvbiByaW5ncyAyMDBnLCAyeCBDb2NhLUNvbGEgLSBPcmlnaW5hbCAwLjMzTC4iLCJpbWFnZV9odG1sIjoiIiwicHJpY2UiOjExOTAsImNhdGVnb3JpZXMiOlt7ImlkIjoyMSwibmFtZSI6IktvbWJvIHRha29zIn1dLCJkaXNjb3VudF9pbmZvIjp7Imhhc19kaXNjb3VudCI6ZmFsc2UsIm9yaWdpbmFsX3ByaWNlIjoxMTkwLCJkaXNjb3VudGVkX3ByaWNlIjoxMTkwLCJkaXNjb3VudF9wZXJjZW50IjowLCJkaXNjb3VudF9hbW91bnQiOjAsImRpc2NvdW50X3R5cGUiOm51bGwsInByb21vdGlvbl90eXBlIjpudWxsfSwiaXNfY29tYm8iOmZhbHNlLCJjb21ib19wcm9kdWN0cyI6W10sInRhZ3MiOltdLCJhdmFpbGFibGVfZnJvbSI6IiIsImF2YWlsYWJsZV91bnRpbCI6IiIsInNpemVzIjpbXX0seyJJRCI6NzAsInBvc3RfdGl0bGUiOiJUYWtvcyBMICsgSXpib3IgKyBDb2NhLWNvbGEgLSBPcmlnaW5hbCAwLjMzTCIsInBvc3RfY29udGVudCI6IiIsImltYWdlX2h0bWwiOiIiLCJwcmljZSI6ODIwLCJjYXRlZ29yaWVzIjpbeyJpZCI6MjEsIm5hbWUiOiJLb21ibyB0YWtvcyJ9XSwiZGlzY291bnRfaW5mbyI6eyJoYXNfZGlzY291bnQiOmZhbHNlLCJvcmlnaW5hbF9wcmljZSI6ODIwLCJkaXNjb3VudGVkX3ByaWNlIjo4MjAsImRpc2NvdW50X3BlcmNlbnQiOjAsImRpc2NvdW50X2Ftb3VudCI6MCwiZGlzY291bnRfdHlwZSI6bnVsbCwicHJvbW90aW9uX3R5cGUiOm51bGx9LCJpc19jb21ibyI6ZmFsc2UsImNvbWJvX3Byb2R1Y3RzIjpbXSwidGFncyI6W10sImF2YWlsYWJsZV9mcm9tIjoiIiwiYXZhaWxhYmxlX3VudGlsIjoiIiwic2l6ZXMiOltdfSx7IklEIjo3MSwicG9zdF90aXRsZSI6IlRha29zIE0gKyBJemJvciArIENvY2EtY29sYSAtIE9yaWdpbmFsIDAuMzNMIiwicG9zdF9jb250ZW50IjoiIiwiaW1hZ2VfaHRtbCI6IiIsInByaWNlIjo2ODAsImNhdGVnb3JpZXMiOlt7ImlkIjoyMSwibmFtZSI6IktvbWJvIHRha29zIn1dLCJkaXNjb3VudF9pbmZvIjp7Imhhc19kaXNjb3VudCI6ZmFsc2UsIm9yaWdpbmFsX3ByaWNlIjo2ODAsImRpc2NvdW50ZWRfcHJpY2UiOjY4MCwiZGlzY291bnRfcGVyY2VudCI6MCwiZGlzY291bnRfYW1vdW50IjowLCJkaXNjb3VudF90eXBlIjpudWxsLCJwcm9tb3Rpb25fdHlwZSI6bnVsbH0sImlzX2NvbWJvIjpmYWxzZSwiY29tYm9fcHJvZHVjdHMiOltdLCJ0YWdzIjpbXSwiYXZhaWxhYmxlX2Zyb20iOiIiLCJhdmFpbGFibGVfdW50aWwiOiIiLCJzaXplcyI6W119LHsiSUQiOjcyLCJwb3N0X3RpdGxlIjoiVGFrb3MgWEwgKyBJemJvciArIENvY2EtY29sYSAtIE9yaWdpbmFsIDAuMzNMIiwicG9zdF9jb250ZW50IjoiIiwiaW1hZ2VfaHRtbCI6IiIsInByaWNlIjoxMDMwLCJjYXRlZ29yaWVzIjpbeyJpZCI6MjEsIm5hbWUiOiJLb21ibyB0YWtvcyJ9XSwiZGlzY291bnRfaW5mbyI6eyJoYXNfZGlzY291bnQiOmZhbHNlLCJvcmlnaW5hbF9wcmljZSI6MTAzMCwiZGlzY291bnRlZF9wcmljZSI6MTAzMCwiZGlzY291bnRfcGVyY2VudCI6MCwiZGlzY291bnRfYW1vdW50IjowLCJkaXNjb3VudF90eXBlIjpudWxsLCJwcm9tb3Rpb25fdHlwZSI6bnVsbH0sImlzX2NvbWJvIjpmYWxzZSwiY29tYm9fcHJvZHVjdHMiOltdLCJ0YWdzIjpbXSwiYXZhaWxhYmxlX2Zyb20iOiIiLCJhdmFpbGFibGVfdW50aWwiOiIiLCJzaXplcyI6W119LHsiSUQiOjczLCJwb3N0X3RpdGxlIjoiVGFrb3MganVuaW9yIiwicG9zdF9jb250ZW50IjoiTWVzbyBwbyBpemJvcnUsIHNvcyBwbyBpemJvcnUsIHNhbGF0YSBwbyBpemJvcnUsIHByZWxpdiBvZCA0IHZyc3RlIHRvcGxqZW5vZyBzaXJhIGkganVuaW9yIHBvcmNpamEgcG9tZnJpdGEuIiwiaW1hZ2VfaHRtbCI6IiIsInByaWNlIjozMDAsImNhdGVnb3JpZXMiOlt7ImlkIjoyMiwibmFtZSI6IkZyYW5jdXNraSB0YWtvc2kifV0sImRpc2NvdW50X2luZm8iOnsiaGFzX2Rpc2NvdW50IjpmYWxzZSwib3JpZ2luYWxfcHJpY2UiOjMwMCwiZGlzY291bnRlZF9wcmljZSI6MzAwLCJkaXNjb3VudF9wZXJjZW50IjowLCJkaXNjb3VudF9hbW91bnQiOjAsImRpc2NvdW50X3R5cGUiOm51bGwsInByb21vdGlvbl90eXBlIjpudWxsfSwiaXNfY29tYm8iOmZhbHNlLCJjb21ib19wcm9kdWN0cyI6W10sInRhZ3MiOltdLCJhdmFpbGFibGVfZnJvbSI6IiIsImF2YWlsYWJsZV91bnRpbCI6IiIsInNpemVzIjpbXX0seyJJRCI6NzQsInBvc3RfdGl0bGUiOiJab21iaSB0YWtvcyIsInBvc3RfY29udGVudCI6IjIgcG9yY2lqZSBtZXNhIHBvIGl6Ym9ydSwgZHVwbGEgZG96YSBzaXJhLCBzb3NldmksIGRvZGFjaSBpIHNhbGF0ZSBwbyBpemJvcnUgKyB6b21iaSBzb3Mgb2QgamVkbm9nIG1pbGlvbmEgc2tvdmlsYS4iLCJpbWFnZV9odG1sIjoiIiwicHJpY2UiOjczMCwiY2F0ZWdvcmllcyI6W3siaWQiOjIyLCJuYW1lIjoiRnJhbmN1c2tpIHRha29zaSJ9XSwiZGlzY291bnRfaW5mbyI6eyJoYXNfZGlzY291bnQiOmZhbHNlLCJvcmlnaW5hbF9wcmljZSI6NzMwLCJkaXNjb3VudGVkX3ByaWNlIjo3MzAsImRpc2NvdW50X3BlcmNlbnQiOjAsImRpc2NvdW50X2Ftb3VudCI6MCwiZGlzY291bnRfdHlwZSI6bnVsbCwicHJvbW90aW9uX3R5cGUiOm51bGx9LCJpc19jb21ibyI6ZmFsc2UsImNvbWJvX3Byb2R1Y3RzIjpbXSwidGFncyI6W10sImF2YWlsYWJsZV9mcm9tIjoiIiwiYXZhaWxhYmxlX3VudGlsIjoiIiwic2l6ZXMiOltdfSx7IklEIjo3NSwicG9zdF90aXRsZSI6IlRha29zIEwiLCJwb3N0X2NvbnRlbnQiOiIyIHBvcmNpamUgbWVzYSwgMiBzb3NhIHBvIGl6Ym9ydSwgMiBzYWxhdGUsIHByZWxpdiBvZCAzIHZyc3RlIHRvcGxqZW5vZyBzaXJhIGkgbWFsYSBwb3JjaWphIHBvbWZyaXRhLiIsImltYWdlX2h0bWwiOiIiLCJwcmljZSI6NjEwLCJjYXRlZ29yaWVzIjpbeyJpZCI6MjIsIm5hbWUiOiJGcmFuY3Vza2kgdGFrb3NpIn1dLCJkaXNjb3VudF9pbmZvIjp7Imhhc19kaXNjb3VudCI6ZmFsc2UsIm9yaWdpbmFsX3ByaWNlIjo2MTAsImRpc2NvdW50ZWRfcHJpY2UiOjYxMCwiZGlzY291bnRfcGVyY2VudCI6MCwiZGlzY291bnRfYW1vdW50IjowLCJkaXNjb3VudF90eXBlIjpudWxsLCJwcm9tb3Rpb25fdHlwZSI6bnVsbH0sImlzX2NvbWJvIjpmYWxzZSwiY29tYm9fcHJvZHVjdHMiOltdLCJ0YWdzIjpbXSwiYXZhaWxhYmxlX2Zyb20iOiIiLCJhdmFpbGFibGVfdW50aWwiOiIiLCJzaXplcyI6W119LHsiSUQiOjc2LCJwb3N0X3RpdGxlIjoiVGFrb3MgWFhMIiwicG9zdF9jb250ZW50IjoiOTAwZy4gXHUwMTBjZXR2b3JvZHVwbGEgcG9yY2lqYSBtZXNhLCB0cm9kdXBsYSBwb3JjaWphIHNpcmEsIHBvbWZyaXQsIHNvc2V2aS4iLCJpbWFnZV9odG1sIjoiIiwicHJpY2UiOjk1MCwiY2F0ZWdvcmllcyI6W3siaWQiOjIyLCJuYW1lIjoiRnJhbmN1c2tpIHRha29zaSJ9XSwiZGlzY291bnRfaW5mbyI6eyJoYXNfZGlzY291bnQiOmZhbHNlLCJvcmlnaW5hbF9wcmljZSI6OTUwLCJkaXNjb3VudGVkX3ByaWNlIjo5NTAsImRpc2NvdW50X3BlcmNlbnQiOjAsImRpc2NvdW50X2Ftb3VudCI6MCwiZGlzY291bnRfdHlwZSI6bnVsbCwicHJvbW90aW9uX3R5cGUiOm51bGx9LCJpc19jb21ibyI6ZmFsc2UsImNvbWJvX3Byb2R1Y3RzIjpbXSwidGFncyI6W10sImF2YWlsYWJsZV9mcm9tIjoiIiwiYXZhaWxhYmxlX3VudGlsIjoiIiwic2l6ZXMiOltdfSx7IklEIjo3NywicG9zdF90aXRsZSI6Ik1pc3RlcnkgdGFjb3MiLCJwb3N0X2NvbnRlbnQiOiJWZWxpa2EgdG9ydGlsamEsIGR1cGxhIHBvcmNpamEgbWVzYSBwbyBpemJvcnUsIGR1cGxhIHBvcmNpamEgc29zYSBvZCA0IHZyc3RlIHNpcmEsIHBvbWZyaXQsIHNvc2V2aSwgZG9kYWNpIGkgc2FsYXRlIHBvIGl6Ym9ydSArIHRham5pIGRvZGF0YWsuIiwiaW1hZ2VfaHRtbCI6IiIsInByaWNlIjo2NzAsImNhdGVnb3JpZXMiOlt7ImlkIjoyMiwibmFtZSI6IkZyYW5jdXNraSB0YWtvc2kifV0sImRpc2NvdW50X2luZm8iOnsiaGFzX2Rpc2NvdW50IjpmYWxzZSwib3JpZ2luYWxfcHJpY2UiOjY3MCwiZGlzY291bnRlZF9wcmljZSI6NjcwLCJkaXNjb3VudF9wZXJjZW50IjowLCJkaXNjb3VudF9hbW91bnQiOjAsImRpc2NvdW50X3R5cGUiOm51bGwsInByb21vdGlvbl90eXBlIjpudWxsfSwiaXNfY29tYm8iOmZhbHNlLCJjb21ib19wcm9kdWN0cyI6W10sInRhZ3MiOltdLCJhdmFpbGFibGVfZnJvbSI6IiIsImF2YWlsYWJsZV91bnRpbCI6IiIsInNpemVzIjpbXX0seyJJRCI6NzgsInBvc3RfdGl0bGUiOiJUYWtvcyBNIiwicG9zdF9jb250ZW50IjoiUG9yY2lqYSBtZXNhLCBzb3MgcG8gaXpib3J1LCBzYWxhdGEsIHByZWxpdiBvZCAzIHZyc3RlIHRvcGxqZW5vZyBzaXJhIGkgbWFsYSBwb3JjaWphIHBvbWZyaXRhLiIsImltYWdlX2h0bWwiOiIiLCJwcmljZSI6NDIwLCJjYXRlZ29yaWVzIjpbeyJpZCI6MjIsIm5hbWUiOiJGcmFuY3Vza2kgdGFrb3NpIn1dLCJkaXNjb3VudF9pbmZvIjp7Imhhc19kaXNjb3VudCI6ZmFsc2UsIm9yaWdpbmFsX3ByaWNlIjo0MjAsImRpc2NvdW50ZWRfcHJpY2UiOjQyMCwiZGlzY291bnRfcGVyY2VudCI6MCwiZGlzY291bnRfYW1vdW50IjowLCJkaXNjb3VudF90eXBlIjpudWxsLCJwcm9tb3Rpb25fdHlwZSI6bnVsbH0sImlzX2NvbWJvIjpmYWxzZSwiY29tYm9fcHJvZHVjdHMiOltdLCJ0YWdzIjpbXSwiYXZhaWxhYmxlX2Zyb20iOiIiLCJhdmFpbGFibGVfdW50aWwiOiIiLCJzaXplcyI6W119LHsiSUQiOjc5LCJwb3N0X3RpdGxlIjoiVGFrb3MgWEwiLCJwb3N0X2NvbnRlbnQiOiIzIHBvcmNpamUgbWVzYSwgMyBzb3NhIHBvIGl6Ym9ydSwgMyBzYWxhdGUsIHByZWxpdiBvZCAzIHZyc3RlIHRvcGxqZW5vZyBzaXJhIGkgbWFsYSBwb3JjaWphIHBvbWZyaXRhLiIsImltYWdlX2h0bWwiOiIiLCJwcmljZSI6NzcwLCJjYXRlZ29yaWVzIjpbeyJpZCI6MjIsIm5hbWUiOiJGcmFuY3Vza2kgdGFrb3NpIn1dLCJkaXNjb3VudF9pbmZvIjp7Imhhc19kaXNjb3VudCI6ZmFsc2UsIm9yaWdpbmFsX3ByaWNlIjo3NzAsImRpc2NvdW50ZWRfcHJpY2UiOjc3MCwiZGlzY291bnRfcGVyY2VudCI6MCwiZGlzY291bnRfYW1vdW50IjowLCJkaXNjb3VudF90eXBlIjpudWxsLCJwcm9tb3Rpb25fdHlwZSI6bnVsbH0sImlzX2NvbWJvIjpmYWxzZSwiY29tYm9fcHJvZHVjdHMiOltdLCJ0YWdzIjpbXSwiYXZhaWxhYmxlX2Zyb20iOiIiLCJhdmFpbGFibGVfdW50aWwiOiIiLCJzaXplcyI6W119LHsiSUQiOjgwLCJwb3N0X3RpdGxlIjoiTmFwcmF2aSBzdm9qIHRha29zIiwicG9zdF9jb250ZW50IjoiIiwiaW1hZ2VfaHRtbCI6IiIsInByaWNlIjo0MjAsImNhdGVnb3JpZXMiOlt7ImlkIjoyMiwibmFtZSI6IkZyYW5jdXNraSB0YWtvc2kifV0sImRpc2NvdW50X2luZm8iOnsiaGFzX2Rpc2NvdW50IjpmYWxzZSwib3JpZ2luYWxfcHJpY2UiOjQyMCwiZGlzY291bnRlZF9wcmljZSI6NDIwLCJkaXNjb3VudF9wZXJjZW50IjowLCJkaXNjb3VudF9hbW91bnQiOjAsImRpc2NvdW50X3R5cGUiOm51bGwsInByb21vdGlvbl90eXBlIjpudWxsfSwiaXNfY29tYm8iOmZhbHNlLCJjb21ib19wcm9kdWN0cyI6W10sInRhZ3MiOltdLCJhdmFpbGFibGVfZnJvbSI6IiIsImF2YWlsYWJsZV91bnRpbCI6IiIsInNpemVzIjpbXX0seyJJRCI6ODEsInBvc3RfdGl0bGUiOiJQb21mcml0IHNhIHNpcm9tIiwicG9zdF9jb250ZW50IjoiIiwiaW1hZ2VfaHRtbCI6IiIsInByaWNlIjozMDAsImNhdGVnb3JpZXMiOlt7ImlkIjoyMywibmFtZSI6IkZpbmdlciBmb29kIn1dLCJkaXNjb3VudF9pbmZvIjp7Imhhc19kaXNjb3VudCI6ZmFsc2UsIm9yaWdpbmFsX3ByaWNlIjozMDAsImRpc2NvdW50ZWRfcHJpY2UiOjMwMCwiZGlzY291bnRfcGVyY2VudCI6MCwiZGlzY291bnRfYW1vdW50IjowLCJkaXNjb3VudF90eXBlIjpudWxsLCJwcm9tb3Rpb25fdHlwZSI6bnVsbH0sImlzX2NvbWJvIjpmYWxzZSwiY29tYm9fcHJvZHVjdHMiOltdLCJ0YWdzIjpbXSwiYXZhaWxhYmxlX2Zyb20iOiIiLCJhdmFpbGFibGVfdW50aWwiOiIiLCJzaXplcyI6W119LHsiSUQiOjgyLCJwb3N0X3RpdGxlIjoiT25pb24gcmluZ3MiLCJwb3N0X2NvbnRlbnQiOiI2IGtvbWFkYSIsImltYWdlX2h0bWwiOiIiLCJwcmljZSI6MTUwLCJjYXRlZ29yaWVzIjpbeyJpZCI6MjMsIm5hbWUiOiJGaW5nZXIgZm9vZCJ9XSwiZGlzY291bnRfaW5mbyI6eyJoYXNfZGlzY291bnQiOmZhbHNlLCJvcmlnaW5hbF9wcmljZSI6MTUwLCJkaXNjb3VudGVkX3ByaWNlIjoxNTAsImRpc2NvdW50X3BlcmNlbnQiOjAsImRpc2NvdW50X2Ftb3VudCI6MCwiZGlzY291bnRfdHlwZSI6bnVsbCwicHJvbW90aW9uX3R5cGUiOm51bGx9LCJpc19jb21ibyI6ZmFsc2UsImNvbWJvX3Byb2R1Y3RzIjpbXSwidGFncyI6W10sImF2YWlsYWJsZV9mcm9tIjoiIiwiYXZhaWxhYmxlX3VudGlsIjoiIiwic2l6ZXMiOltdfSx7IklEIjo4MywicG9zdF90aXRsZSI6IkNoaWNrZW4gTnVnZ2V0cyIsInBvc3RfY29udGVudCI6IiIsImltYWdlX2h0bWwiOiIiLCJwcmljZSI6MjAwLCJjYXRlZ29yaWVzIjpbeyJpZCI6MjMsIm5hbWUiOiJGaW5nZXIgZm9vZCJ9XSwiZGlzY291bnRfaW5mbyI6eyJoYXNfZGlzY291bnQiOmZhbHNlLCJvcmlnaW5hbF9wcmljZSI6MjAwLCJkaXNjb3VudGVkX3ByaWNlIjoyMDAsImRpc2NvdW50X3BlcmNlbnQiOjAsImRpc2NvdW50X2Ftb3VudCI6MCwiZGlzY291bnRfdHlwZSI6bnVsbCwicHJvbW90aW9uX3R5cGUiOm51bGx9LCJpc19jb21ibyI6ZmFsc2UsImNvbWJvX3Byb2R1Y3RzIjpbXSwidGFncyI6W10sImF2YWlsYWJsZV9mcm9tIjoiIiwiYXZhaWxhYmxlX3VudGlsIjoiIiwic2l6ZXMiOlt7Im5hbWUiOiI2IGtvbWFkYSIsInByaWNlIjowfSx7Im5hbWUiOiIxMiBrb21hZGEiLCJwcmljZSI6MTgwfV19LHsiSUQiOjg0LCJwb3N0X3RpdGxlIjoiUG9tZnJpdCIsInBvc3RfY29udGVudCI6IiIsImltYWdlX2h0bWwiOiIiLCJwcmljZSI6MjAwLCJjYXRlZ29yaWVzIjpbeyJpZCI6MjMsIm5hbWUiOiJGaW5nZXIgZm9vZCJ9XSwiZGlzY291bnRfaW5mbyI6eyJoYXNfZGlzY291bnQiOmZhbHNlLCJvcmlnaW5hbF9wcmljZSI6MjAwLCJkaXNjb3VudGVkX3ByaWNlIjoyMDAsImRpc2NvdW50X3BlcmNlbnQiOjAsImRpc2NvdW50X2Ftb3VudCI6MCwiZGlzY291bnRfdHlwZSI6bnVsbCwicHJvbW90aW9uX3R5cGUiOm51bGx9LCJpc19jb21ibyI6ZmFsc2UsImNvbWJvX3Byb2R1Y3RzIjpbXSwidGFncyI6W10sImF2YWlsYWJsZV9mcm9tIjoiIiwiYXZhaWxhYmxlX3VudGlsIjoiIiwic2l6ZXMiOltdfV07CiAgICAgICAgICAgIHZhciBhbGxTaWRlcyA9IHsiNDciOltdLCI1MSI6W10sIjUyIjpbXSwiNTMiOltdLCI1NCI6W10sIjU1IjpbXSwiNTYiOltdLCI1NyI6W10sIjU4IjpbXSwiNTkiOltdLCI2MCI6W10sIjYxIjpbXSwiNjIiOltdLCI2MyI6W10sIjY0IjpbXSwiNjUiOltdLCI2NiI6W10sIjY3IjpbXSwiNjgiOltdLCI2OSI6W10sIjcwIjpbXSwiNzEiOltdLCI3MiI6W10sIjczIjpbXSwiNzQiOltdLCI3NSI6W10sIjc2IjpbXSwiNzciOltdLCI3OCI6W10sIjc5IjpbXSwiODAiOltdLCI4MSI6W10sIjgyIjpbXSwiODMiOltdLCI4NCI6W119OwogICAgICAgICAgICB2YXIgYWxsQ2F0ZWdvcmllcyA9IHsiMTciOnsiaWQiOjE3LCJuYW1lIjoiVGFjbyBib3dsIC0gTm92byJ9LCIxOCI6eyJpZCI6MTgsIm5hbWUiOiJTbmVrIHRlXHUwMTYxa2FcdTAxNjFpIn0sIjE5Ijp7ImlkIjoxOSwibmFtZSI6IlNuZWsgcGl6emEgaHViIn0sIjIwIjp7ImlkIjoyMCwibmFtZSI6IkdhemRhIGJpcmEifSwiMjEiOnsiaWQiOjIxLCJuYW1lIjoiS29tYm8gdGFrb3MifSwiMjIiOnsiaWQiOjIyLCJuYW1lIjoiRnJhbmN1c2tpIHRha29zaSJ9LCIyMyI6eyJpZCI6MjMsIm5hbWUiOiJGaW5nZXIgZm9vZCJ9fTsKICAgICAgICAgICAgdmFyIHByb2R1Y3RDYXRlZ29yeU1hcCA9IHsiMTciOls0Nyw1MSw1Miw1Myw1NCw1NV0sIjE4IjpbNTYsNTcsNTgsNTksNjBdLCIxOSI6WzYxLDYyLDYzLDY0XSwiMjAiOls2NSw2Niw2Nyw2OF0sIjIxIjpbNjksNzAsNzEsNzJdLCIyMiI6WzczLDc0LDc1LDc2LDc3LDc4LDc5LDgwXSwiMjMiOls4MSw4Miw4Myw4NF19OwoKICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJy5jaGVmbHktcHJvZHVjdC1jYXJkJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwoKICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmNsb3Nlc3QoJy5jaGVmbHktcHJvZHVjdHMtZ3JpZCcpLmhhc0NsYXNzKCdjaGVmbHktcmVzdGF1cmFudC1jbG9zZWQnKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5oYXNDbGFzcygnY2hlZmx5LXByb2R1Y3QtdW5hdmFpbGFibGUnKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgcHJvZHVjdElkID0gJCh0aGlzKS5kYXRhKCdwcm9kdWN0LWlkJyk7CiAgICAgICAgICAgICAgICB2YXIgcHJvZHVjdERhdGEgPSBhbGxQcm9kdWN0cy5maW5kKGZ1bmN0aW9uKHApIHsgcmV0dXJuIHAuSUQgPT0gcHJvZHVjdElkOyB9KTsKCiAgICAgICAgICAgICAgICBpZiAoIXByb2R1Y3REYXRhKSByZXR1cm47CiAgICAgICAgICAgICAgICB2YXIgYmFzZVByaWNlID0gcGFyc2VGbG9hdCgkKHRoaXMpLmRhdGEoJ2Jhc2UtcHJpY2UnKSk7CiAgICAgICAgICAgICAgICB2YXIgY3VycmVuY3kgPSBnZXRXb29Db21tZXJjZUN1cnJlbmN5U3ltYm9sKCk7CiAgICAgICAgICAgICAgICB2YXIgc2lkZXNGb3JQcm9kdWN0ID0gKGFsbFNpZGVzICYmIGFsbFNpZGVzW3Byb2R1Y3RJZF0pID8gYWxsU2lkZXNbcHJvZHVjdElkXSA6IFtdOwogICAgICAgICAgICAgICAgdmFyIHRoZW1lQ2xhc3MgPSAkKHRoaXMpLmNsb3Nlc3QoJy5jaGVmbHktcHJvZHVjdHMtZ3JpZCcpLmF0dHIoJ2NsYXNzJykubWF0Y2goL2NoZWZseS10aGVtZS1cZCsvKVswXTsKCiAgICAgICAgICAgICAgICB2YXIgY3VycmVuY3lTeW1ib2wgPSBjdXJyZW5jeS5yZXBsYWNlKC8mI3g\/WzAtOUEtRmEtZl0rOy9nLCBmdW5jdGlvbihtYXRjaCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKHBhcnNlSW50KG1hdGNoLnJlcGxhY2UoL1smI3g7XS9nLCAnJyksIDE2KSk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICB2YXIgaW1hZ2VIdG1sID0gcHJvZHVjdERhdGEuaW1hZ2VfaHRtbAogICAgICAgICAgICAgICAgICAgID8gJzxkaXYgY2xhc3M9ImNoZWZseS1saWdodGJveC1pbWFnZSI+JyArIHByb2R1Y3REYXRhLmltYWdlX2h0bWwgKyAnPC9kaXY+JwogICAgICAgICAgICAgICAgICAgIDogJyc7CgogICAgICAgICAgICAgICAgdmFyIHNpemVzSHRtbCA9ICcnOwogICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJvZHVjdERhdGEuc2l6ZXMpICYmIHByb2R1Y3REYXRhLnNpemVzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICB2YXIgc2l6ZXNMaXN0SHRtbCA9ICcnOwogICAgICAgICAgICAgICAgICAgIHByb2R1Y3REYXRhLnNpemVzLmZvckVhY2goZnVuY3Rpb24oc2l6ZU9wdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmF3U2l6ZU5hbWUgPSBzaXplT3B0aW9uICYmIHNpemVPcHRpb24ubmFtZSA\/IHNpemVPcHRpb24ubmFtZSA6ICcnOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJhd1NpemVOYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlc2NhcGVkU2l6ZU5hbWUgPSBTdHJpbmcocmF3U2l6ZU5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvJi9nLCAnJmFtcDsnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLzwvZywgJyZsdDsnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLz4vZywgJyZndDsnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyIvZywgJyZxdW90OycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvJy9nLCAnJiMzOTsnKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVuY29kZWRTaXplTmFtZSA9IGVuY29kZVVSSUNvbXBvbmVudChyYXdTaXplTmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaXplUHJpY2UgPSBwYXJzZUZsb2F0KHNpemVPcHRpb24ucHJpY2UpIHx8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcmljZUJhZGdlID0gc2l6ZVByaWNlID4gMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnPHNwYW4gY2xhc3M9ImNoZWZseS1saWdodGJveC1zaXplLXByaWNlIj4rJyArIHNpemVQcmljZS50b0ZpeGVkKDIpICsgJyAnICsgY3VycmVuY3lTeW1ib2wgKyAnPC9zcGFuPicKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJzxzcGFuIGNsYXNzPSJjaGVmbHktbGlnaHRib3gtc2l6ZS1wcmljZSI+MCAnICsgY3VycmVuY3lTeW1ib2wgKyAnPC9zcGFuPic7CgogICAgICAgICAgICAgICAgICAgICAgICBzaXplc0xpc3RIdG1sICs9ICc8bGFiZWwgY2xhc3M9ImNoZWZseS1saWdodGJveC1zaXplLW9wdGlvbiI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iY2hlZmx5LXNpemUtY2hlY2tib3giIGRhdGEtc2l6ZS1uYW1lPSInICsgZW5jb2RlZFNpemVOYW1lICsgJyIgZGF0YS1zaXplLXByaWNlPSInICsgc2l6ZVByaWNlLnRvRml4ZWQoMikgKyAnIj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iY2hlZmx5LWxpZ2h0Ym94LXNpemUtdGl0bGUiPicgKyBlc2NhcGVkU2l6ZU5hbWUgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2VCYWRnZSArCiAgICAgICAgICAgICAgICAgICAgICAgICc8L2xhYmVsPic7CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgIGlmIChzaXplc0xpc3RIdG1sKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNpemVzSHRtbCA9ICc8ZGl2IGNsYXNzPSJjaGVmbHktbGlnaHRib3gtc2l6ZXMiPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImNoZWZseS1saWdodGJveC1zaXplcy1oZWFkaW5nIj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGg0PicgKyAiVmVsaVx1MDEwZGluZSIgKyAnPC9oND4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJjaGVmbHktbGlnaHRib3gtc2l6ZXMtbGlzdCI+JyArIHNpemVzTGlzdEh0bWwgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB2YXIgc2lkZXNIdG1sID0gJyc7CiAgICAgICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShzaWRlc0ZvclByb2R1Y3QpICYmIHNpZGVzRm9yUHJvZHVjdC5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGdyb3Vwc0h0bWwgPSAnJzsKCiAgICAgICAgICAgICAgICAgICAgc2lkZXNGb3JQcm9kdWN0LmZvckVhY2goZnVuY3Rpb24oc2lkZVNldCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmF3U2V0TmFtZSA9IHNpZGVTZXQgJiYgc2lkZVNldC5zZXRfbmFtZSA\/IHNpZGVTZXQuc2V0X25hbWUgOiAiUHJpbG96aSI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzYWZlU2V0TmFtZSA9IFN0cmluZyhyYXdTZXROYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyYvZywgJyZhbXA7JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC88L2csICcmbHQ7JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8+L2csICcmZ3Q7JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8iL2csICcmcXVvdDsnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLycvZywgJyYjMzk7Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbmNvZGVkU2V0TmFtZSA9IGVuY29kZVVSSUNvbXBvbmVudChyYXdTZXROYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNldFNpZGVzID0gQXJyYXkuaXNBcnJheShzaWRlU2V0ICYmIHNpZGVTZXQuc2lkZXMpID8gc2lkZVNldC5zaWRlcyA6IFtdOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWluUmVxdWlyZWQgPSBwYXJzZUludChzaWRlU2V0Lm1pbiwgMTApIHx8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXhBbGxvd2VkID0gcGFyc2VJbnQoc2lkZVNldC5tYXgsIDEwKSB8fCAwOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVxdWlyZW1lbnRzSHRtbCA9ICcnOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAobWluUmVxdWlyZWQgPiAwIHx8IG1heEFsbG93ZWQgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFydHMgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtaW5SZXF1aXJlZCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0cy5wdXNoKCJNaW5pbXVtIiArICcgJyArIG1pblJlcXVpcmVkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXhBbGxvd2VkID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzLnB1c2goIk1ha3NpbXVtIiArICcgJyArIG1heEFsbG93ZWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzSHRtbCA9ICc8c3BhbiBjbGFzcz0iY2hlZmx5LWxpZ2h0Ym94LXNldC1yZXN0cmljdGlvbnMiPicgKyBwYXJ0cy5qb2luKCcgLSAnKSArICc8L3NwYW4+JzsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNldFNpZGVzLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXNSZXF1aXJlZCA9IHNpZGVTZXQucmVxdWlyZWQgfHwgKG1pblJlcXVpcmVkID4gMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXF1aXJlZFBpbGwgPSBpc1JlcXVpcmVkID8gJyA8c3BhbiBjbGFzcz0iY2hlZmx5LWxpZ2h0Ym94LXJlcXVpcmVkLXBpbGwiPicgKyAiT2JhdmV6bm8iICsgJzwvc3Bhbj4nIDogJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3Vwc0h0bWwgKz0gJzxkaXYgY2xhc3M9ImNoZWZseS1saWdodGJveC1zaWRlcy1ncm91cCcgKyAoaXNSZXF1aXJlZCA\/ICcgaXMtcmVxdWlyZWQnIDogJycpICsgJyIgZGF0YS1zZXQtaWQ9IicgKyBzaWRlU2V0LnNldF9pZCArICciIGRhdGEtcmVxdWlyZWQ9IicgKyAoaXNSZXF1aXJlZCA\/ICcxJyA6ICcwJykgKyAnIiBkYXRhLW1pbj0iJyArIG1pblJlcXVpcmVkICsgJyIgZGF0YS1tYXg9IicgKyBtYXhBbGxvd2VkICsgJyI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iY2hlZmx5LWxpZ2h0Ym94LXNpZGVzLWhlYWRpbmciPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8aDQ+JyArIHNhZmVTZXROYW1lICsgcmVxdWlyZWRQaWxsICsgJzwvaDQ+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZW1lbnRzSHRtbCArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iY2hlZmx5LWxpZ2h0Ym94LXNpZGVzLWxpc3QiPic7CgogICAgICAgICAgICAgICAgICAgICAgICBzZXRTaWRlcy5mb3JFYWNoKGZ1bmN0aW9uKHNpZGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaWRlUHJpY2UgPSBwYXJzZUZsb2F0KHNpZGUucHJpY2UpIHx8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJpY2VIdG1sID0gc2lkZVByaWNlID4gMAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gJzxzcGFuIGNsYXNzPSJjaGVmbHktbGlnaHRib3gtc2lkZS1wcmljZSI+KycgKyBzaWRlUHJpY2UudG9GaXhlZCgyKSArICcgJyArICdyc2QnICsgJzwvc3Bhbj4nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnPHNwYW4gY2xhc3M9ImNoZWZseS1saWdodGJveC1zaWRlLWZyZWUiPjAgcnNkPC9zcGFuPic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXNjYXBlZFRpdGxlID0gU3RyaW5nKHNpZGUudGl0bGUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLyYvZywgJyZhbXA7JykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvPC9nLCAnJmx0OycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoLz4vZywgJyZndDsnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8iL2csICcmcXVvdDsnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8nL2csICcmIzM5OycpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVuY29kZWRUaXRsZSA9IGVuY29kZVVSSUNvbXBvbmVudChzaWRlLnRpdGxlIHx8ICcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaWRlUXR5RW5hYmxlZCA9IHNpZGUucXVhbnRpdHlfZW5hYmxlZCAhPT0gZmFsc2UgJiYgc2lkZVNldC5xdWFudGl0eV9lbmFibGVkICE9PSBmYWxzZTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cHNIdG1sICs9ICc8ZGl2IGNsYXNzPSJjaGVmbHktbGlnaHRib3gtc2lkZS1vcHRpb24iIGRhdGEtc2lkZS1pZD0iJyArIHNpZGUuaWQgKyAnIj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iY2hlZmx5LWxpZ2h0Ym94LXNpZGUtZGV0YWlscyI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iY2hlZmx5LWxpZ2h0Ym94LXNpZGUtdGl0bGUiPicgKyBlc2NhcGVkVGl0bGUgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmljZUh0bWwgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNpZGVRdHlFbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBzSHRtbCArPSAnPGRpdiBjbGFzcz0iY2hlZmx5LXNpZGUtcXR5LWNvbnRyb2wiIGRhdGEtc2V0LWlkPSInICsgc2lkZS5zZXRfaWQgKyAnIj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2hlZmx5LXNpZGUtcXR5LWJ0biBtaW51cyIgYXJpYS1sYWJlbD0iJyArICJTbWFuamkga29saVx1MDEwZGludSBkb2RhdGthIiArICciPjxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4tPC9zcGFuPjwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9Im51bWJlciIgY2xhc3M9ImNoZWZseS1zaWRlLXF0eS1pbnB1dCIgdmFsdWU9IjAiIG1pbj0iMCIgbWF4PSI5OSIgZGF0YS1zaWRlLWlkPSInICsgc2lkZS5pZCArICciIGRhdGEtc2lkZS10aXRsZT0iJyArIGVuY29kZWRUaXRsZSArICciIGRhdGEtc2lkZS1wcmljZT0iJyArIHNpZGVQcmljZSArICciIGRhdGEtc2V0LWlkPSInICsgc2lkZS5zZXRfaWQgKyAnIiBkYXRhLXNpZGUtc2V0PSInICsgZW5jb2RlZFNldE5hbWUgKyAnIj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2hlZmx5LXNpZGUtcXR5LWJ0biBwbHVzIiBhcmlhLWxhYmVsPSInICsgIlBvdmVcdTAxMDdhaiBrb2xpXHUwMTBkaW51IGRvZGF0a2EiICsgJyI+PHNwYW4gYXJpYS1oaWRkZW49InRydWUiPis8L3NwYW4+PC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyb3Vwc0h0bWwgKz0gJzxkaXYgY2xhc3M9ImNoZWZseS1zaWRlLXF0eS1jb250cm9sIGNoZWNrYm94LW1vZGUiIGRhdGEtc2V0LWlkPSInICsgc2lkZS5zZXRfaWQgKyAnIj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImNoZWZseS1zaWRlLWNoZWNrYm94Ij4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxpbnB1dCB0eXBlPSJudW1iZXIiIGNsYXNzPSJjaGVmbHktc2lkZS1xdHktaW5wdXQiIHZhbHVlPSIwIiBtaW49IjAiIG1heD0iMSIgZGF0YS1zaWRlLWlkPSInICsgc2lkZS5pZCArICciIGRhdGEtc2lkZS10aXRsZT0iJyArIGVuY29kZWRUaXRsZSArICciIGRhdGEtc2lkZS1wcmljZT0iJyArIHNpZGVQcmljZSArICciIGRhdGEtc2V0LWlkPSInICsgc2lkZS5zZXRfaWQgKyAnIiBkYXRhLXNpZGUtc2V0PSInICsgZW5jb2RlZFNldE5hbWUgKyAnIiBzdHlsZT0iZGlzcGxheTpub25lOyI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBncm91cHNIdG1sICs9ICc8L2Rpdj4nOwogICAgICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGdyb3Vwc0h0bWwgKz0gJzwvZGl2PjwvZGl2Pic7CiAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgIGlmIChncm91cHNIdG1sKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVzSHRtbCA9ICc8ZGl2IGNsYXNzPSJjaGVmbHktbGlnaHRib3gtc2lkZXMiPicgKyBncm91cHNIdG1sICsgJzwvZGl2Pic7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciBsaWdodGJveEh0bWwgPSAnPGRpdiBjbGFzcz0iY2hlZmx5LWxpZ2h0Ym94ICcgKyB0aGVtZUNsYXNzICsgJyIgZGF0YS1wcm9kdWN0LWlkPSInICsgcHJvZHVjdElkICsgJyIgZGF0YS1iYXNlLXByaWNlPSInICsgYmFzZVByaWNlICsgJyI+JyArCiAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImNoZWZseS1saWdodGJveC1jb250YWluZXIiPicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPGJ1dHRvbiBjbGFzcz0iY2hlZmx5LWxpZ2h0Ym94LWNsb3NlIj48c3Bhbj4mdGltZXM7PC9zcGFuPjwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgICAgICAgICBpbWFnZUh0bWwgKwogICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iY2hlZmx5LWxpZ2h0Ym94LWNvbnRlbnQiPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxoMiBjbGFzcz0iY2hlZmx5LWxpZ2h0Ym94LXRpdGxlIj4nICsgcHJvZHVjdERhdGEucG9zdF90aXRsZSArICc8L2gyPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxwIGNsYXNzPSJjaGVmbHktbGlnaHRib3gtZGVzY3JpcHRpb24iPicgKyBwcm9kdWN0RGF0YS5wb3N0X2NvbnRlbnQgKyAnPC9wPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImNoZWZseS1saWdodGJveC1wcmljZSI+JyArIGJhc2VQcmljZS50b0ZpeGVkKDIpICsgJyAnICsgY3VycmVuY3lTeW1ib2wgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplc0h0bWwgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZXNIdG1sICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJjaGVmbHktbGlnaHRib3gtZm9vdGVyIj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iY2hlZmx5LWxpZ2h0Ym94LXRvdGFsIj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJjaGVmbHktbGlnaHRib3gtdG90YWwtbGFiZWwiPicgKyAiVWt1cG5vOiIgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImNoZWZseS1saWdodGJveC10b3RhbC1wcmljZSI+JyArIGJhc2VQcmljZS50b0ZpeGVkKDIpICsgJyAnICsgY3VycmVuY3lTeW1ib2wgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iY2hlZmx5LWxpZ2h0Ym94LWFjdGlvbnMiPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iY2hlZmx5LWxpZ2h0Ym94LXF1YW50aXR5Ij4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iY2hlZmx5LWxpZ2h0Ym94LXF1YW50aXR5LWxhYmVsIj4nICsgIktvbGlcdTAxMGRpbmE6IiArICc8L3NwYW4+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9Im51bWJlciIgY2xhc3M9ImNoZWZseS1saWdodGJveC1xdWFudGl0eS1pbnB1dCIgdmFsdWU9IjEiIG1pbj0iMSIgbWF4PSI5OSI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImNoZWZseS1saWdodGJveC1hZGQtY2FydCI+JyArICJEb2RhaiB1IGtvcnB1IiArICc8L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAnPC9kaXY+JzsKCiAgICAgICAgICAgICAgICAkKCdib2R5JykuYXBwZW5kKGxpZ2h0Ym94SHRtbCk7CiAgICAgICAgICAgICAgICB2YXIgJGxpZ2h0Ym94ID0gJCgnLmNoZWZseS1saWdodGJveCcpLmxhc3QoKTsKICAgICAgICAgICAgICAgICRsaWdodGJveC5hZGRDbGFzcygnYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAkKCdib2R5JykuY3NzKCdvdmVyZmxvdycsICdoaWRkZW4nKTsKICAgICAgICAgICAgICAgICRsaWdodGJveC5maW5kKCcuY2hlZmx5LWxpZ2h0Ym94LXNpZGVzLWdyb3VwJykuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBlbmZvcmNlU2lkZVNldExpbWl0cygkKHRoaXMpKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdXBkYXRlTGlnaHRib3hUb3RhbCgkbGlnaHRib3gpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuY2hlZmx5LWxpZ2h0Ym94LWNsb3NlJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgICAgICQodGhpcykuY2xvc2VzdCgnLmNoZWZseS1saWdodGJveCcpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKS5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICQoJ2JvZHknKS5jc3MoJ292ZXJmbG93JywgJycpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuY2hlZmx5LWxpZ2h0Ym94JywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0ID09PSB0aGlzKSB7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnYWN0aXZlJykucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICAgICAgJCgnYm9keScpLmNzcygnb3ZlcmZsb3cnLCAnJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAgICAgZnVuY3Rpb24gc2FuaXRpemVTaWRlUXVhbnRpdHkodmFsdWUpIHsKICAgICAgICAgICAgICAgIHZhciBudW1lcmljID0gcGFyc2VJbnQodmFsdWUsIDEwKTsKICAgICAgICAgICAgICAgIGlmIChpc05hTihudW1lcmljKSB8fCBudW1lcmljIDwgMCkgewogICAgICAgICAgICAgICAgICAgIG51bWVyaWMgPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG51bWVyaWMgPiA5OSkgewogICAgICAgICAgICAgICAgICAgIG51bWVyaWMgPSA5OTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBudW1lcmljOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBnZXRTZXRNZXRyaWNzKCRncm91cCkgewogICAgICAgICAgICAgICAgdmFyIHRvdGFscyA9IHsKICAgICAgICAgICAgICAgICAgICB1bmlxdWVDb3VudDogMAogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAkZ3JvdXAuZmluZCgnLmNoZWZseS1zaWRlLXF0eS1pbnB1dCcpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHF0eSA9IHNhbml0aXplU2lkZVF1YW50aXR5KCQodGhpcykudmFsKCkpOwogICAgICAgICAgICAgICAgICAgIGlmIChxdHkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFscy51bmlxdWVDb3VudCArPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbHM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGZ1bmN0aW9uIGVuZm9yY2VTaWRlU2V0TGltaXRzKCRncm91cCkgewogICAgICAgICAgICAgICAgdmFyIG1pblJlcXVpcmVkID0gcGFyc2VJbnQoJGdyb3VwLmRhdGEoJ21pbicpLCAxMCkgfHwgMDsKICAgICAgICAgICAgICAgIHZhciBtYXhBbGxvd2VkID0gcGFyc2VJbnQoJGdyb3VwLmRhdGEoJ21heCcpLCAxMCkgfHwgMDsKICAgICAgICAgICAgICAgIHZhciBtZXRyaWNzID0gZ2V0U2V0TWV0cmljcygkZ3JvdXApOwogICAgICAgICAgICAgICAgdmFyIHVuaXF1ZUNvdW50ID0gbWV0cmljcy51bmlxdWVDb3VudDsKICAgICAgICAgICAgICAgIHZhciBpc01pc3NpbmcgPSBmYWxzZTsKCiAgICAgICAgICAgICAgICBpZiAoKCRncm91cC5kYXRhKCdyZXF1aXJlZCcpID09PSAxIHx8ICRncm91cC5kYXRhKCdyZXF1aXJlZCcpID09PSAnMScgfHwgbWluUmVxdWlyZWQgPiAwKSAmJiB1bmlxdWVDb3VudCA8IE1hdGgubWF4KDEsIG1pblJlcXVpcmVkKSkgewogICAgICAgICAgICAgICAgICAgIGlzTWlzc2luZyA9IHRydWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCFpc01pc3NpbmcgJiYgbWF4QWxsb3dlZCA+IDAgJiYgdW5pcXVlQ291bnQgPiBtYXhBbGxvd2VkKSB7CiAgICAgICAgICAgICAgICAgICAgaXNNaXNzaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkZ3JvdXAuZmluZCgnLmNoZWZseS1zaWRlLXF0eS1pbnB1dCcpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHF0eSA9IHNhbml0aXplU2lkZVF1YW50aXR5KCQodGhpcykudmFsKCkpOwogICAgICAgICAgICAgICAgICAgICQodGhpcykudmFsKHF0eSk7CiAgICAgICAgICAgICAgICAgICAgdmFyICRvcHRpb24gPSAkKHRoaXMpLmNsb3Nlc3QoJy5jaGVmbHktbGlnaHRib3gtc2lkZS1vcHRpb24nKTsKICAgICAgICAgICAgICAgICAgICAkb3B0aW9uLmZpbmQoJy5jaGVmbHktc2lkZS1xdHktYnRuLm1pbnVzJykucHJvcCgnZGlzYWJsZWQnLCBxdHkgPD0gMCk7CiAgICAgICAgICAgICAgICAgICAgdmFyIGRpc2FibGVQbHVzID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgaWYgKG1heEFsbG93ZWQgPiAwICYmIHVuaXF1ZUNvdW50ID49IG1heEFsbG93ZWQgJiYgcXR5ID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVQbHVzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJG9wdGlvbi5maW5kKCcuY2hlZmx5LXNpZGUtcXR5LWJ0bi5wbHVzJykucHJvcCgnZGlzYWJsZWQnLCBkaXNhYmxlUGx1cyk7CgogICAgICAgICAgICAgICAgICAgIHZhciAkY2hlY2tib3ggPSAkb3B0aW9uLmZpbmQoJy5jaGVmbHktc2lkZS1jaGVja2JveCcpOwogICAgICAgICAgICAgICAgICAgIGlmICgkY2hlY2tib3gubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRjaGVja2JveC5wcm9wKCdjaGVja2VkJywgcXR5ID4gMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXhBbGxvd2VkID4gMCAmJiBxdHkgPT09IDAgJiYgdW5pcXVlQ291bnQgPj0gbWF4QWxsb3dlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNoZWNrYm94LnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2hlY2tib3gucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChxdHkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRvcHRpb24uYWRkQ2xhc3MoJ2lzLXNlbGVjdGVkJyk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG9wdGlvbi5yZW1vdmVDbGFzcygnaXMtc2VsZWN0ZWQnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBpZiAoaXNNaXNzaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgJGdyb3VwLmFkZENsYXNzKCdpcy1taXNzaW5nJyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRncm91cC5yZW1vdmVDbGFzcygnaXMtbWlzc2luZycpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmIChtYXhBbGxvd2VkID4gMCAmJiB1bmlxdWVDb3VudCA+PSBtYXhBbGxvd2VkKSB7CiAgICAgICAgICAgICAgICAgICAgJGdyb3VwLmFkZENsYXNzKCdoYXMtbWF4Jyk7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICRncm91cC5yZW1vdmVDbGFzcygnaGFzLW1heCcpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAhaXNNaXNzaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBjaGFuZ2VTaWRlUXVhbnRpdHkoJGlucHV0LCBuZXdWYWx1ZSkgewogICAgICAgICAgICAgICAgdmFyICRncm91cCA9ICRpbnB1dC5jbG9zZXN0KCcuY2hlZmx5LWxpZ2h0Ym94LXNpZGVzLWdyb3VwJyk7CiAgICAgICAgICAgICAgICB2YXIgc2FuaXRpemVkVmFsdWUgPSBzYW5pdGl6ZVNpZGVRdWFudGl0eShuZXdWYWx1ZSk7CiAgICAgICAgICAgICAgICB2YXIgbWF4QWxsb3dlZCA9IHBhcnNlSW50KCRncm91cC5kYXRhKCdtYXgnKSwgMTApIHx8IDA7CiAgICAgICAgICAgICAgICB2YXIgY3VycmVudFF0eSA9IHNhbml0aXplU2lkZVF1YW50aXR5KCRpbnB1dC52YWwoKSk7CiAgICAgICAgICAgICAgICB2YXIgd2FzU2VsZWN0ZWQgPSBjdXJyZW50UXR5ID4gMDsKICAgICAgICAgICAgICAgIHZhciBtZXRyaWNzID0gZ2V0U2V0TWV0cmljcygkZ3JvdXApOwogICAgICAgICAgICAgICAgdmFyIHVuaXF1ZVdpdGhvdXRUaGlzID0gbWV0cmljcy51bmlxdWVDb3VudCAtICh3YXNTZWxlY3RlZCA\/IDEgOiAwKTsKCiAgICAgICAgICAgICAgICBpZiAobWF4QWxsb3dlZCA+IDAgJiYgIXdhc1NlbGVjdGVkICYmIHNhbml0aXplZFZhbHVlID4gMCAmJiB1bmlxdWVXaXRob3V0VGhpcyA+PSBtYXhBbGxvd2VkKSB7CiAgICAgICAgICAgICAgICAgICAgc2FuaXRpemVkVmFsdWUgPSAwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRpbnB1dC52YWwoc2FuaXRpemVkVmFsdWUpOwogICAgICAgICAgICAgICAgZW5mb3JjZVNpZGVTZXRMaW1pdHMoJGdyb3VwKTsKICAgICAgICAgICAgICAgIHVwZGF0ZUxpZ2h0Ym94VG90YWwoJGlucHV0LmNsb3Nlc3QoJy5jaGVmbHktbGlnaHRib3gnKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuY2hlZmx5LXNpZGUtcXR5LWJ0bi5wbHVzJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgJGlucHV0ID0gJCh0aGlzKS5zaWJsaW5ncygnLmNoZWZseS1zaWRlLXF0eS1pbnB1dCcpOwogICAgICAgICAgICAgICAgY2hhbmdlU2lkZVF1YW50aXR5KCRpbnB1dCwgc2FuaXRpemVTaWRlUXVhbnRpdHkoJGlucHV0LnZhbCgpKSArIDEpOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuY2hlZmx5LXNpZGUtcXR5LWJ0bi5taW51cycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyICRpbnB1dCA9ICQodGhpcykuc2libGluZ3MoJy5jaGVmbHktc2lkZS1xdHktaW5wdXQnKTsKICAgICAgICAgICAgICAgIGNoYW5nZVNpZGVRdWFudGl0eSgkaW5wdXQsIHNhbml0aXplU2lkZVF1YW50aXR5KCRpbnB1dC52YWwoKSkgLSAxKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignaW5wdXQnLCAnLmNoZWZseS1zaWRlLXF0eS1pbnB1dCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUucmVwbGFjZSgvW14wLTldL2csICcnKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2hhbmdlJywgJy5jaGVmbHktc2lkZS1xdHktaW5wdXQnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGNoYW5nZVNpZGVRdWFudGl0eSgkKHRoaXMpLCBzYW5pdGl6ZVNpZGVRdWFudGl0eSgkKHRoaXMpLnZhbCgpKSk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NoYW5nZScsICcuY2hlZmx5LXNpZGUtY2hlY2tib3gnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHZhciAkY2hlY2tib3ggPSAkKHRoaXMpOwogICAgICAgICAgICAgICAgdmFyICRxdHlJbnB1dCA9ICRjaGVja2JveC5zaWJsaW5ncygnLmNoZWZseS1zaWRlLXF0eS1pbnB1dCcpOwogICAgICAgICAgICAgICAgJHF0eUlucHV0LnZhbCgkY2hlY2tib3guaXMoJzpjaGVja2VkJykgPyAxIDogMCk7CiAgICAgICAgICAgICAgICB2YXIgJGdyb3VwID0gJHF0eUlucHV0LmNsb3Nlc3QoJy5jaGVmbHktbGlnaHRib3gtc2lkZXMtZ3JvdXAnKTsKICAgICAgICAgICAgICAgIGVuZm9yY2VTaWRlU2V0TGltaXRzKCRncm91cCk7CiAgICAgICAgICAgICAgICB1cGRhdGVMaWdodGJveFRvdGFsKCRxdHlJbnB1dC5jbG9zZXN0KCcuY2hlZmx5LWxpZ2h0Ym94JykpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjaGFuZ2UnLCAnLmNoZWZseS1zaXplLWNoZWNrYm94JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgJGxpZ2h0Ym94ID0gJCh0aGlzKS5jbG9zZXN0KCcuY2hlZmx5LWxpZ2h0Ym94Jyk7CiAgICAgICAgICAgICAgICB2YXIgJHNpemVzQmxvY2sgPSAkbGlnaHRib3guZmluZCgnLmNoZWZseS1saWdodGJveC1zaXplcycpOwogICAgICAgICAgICAgICAgaWYgKCRzaXplc0Jsb2NrLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIGlmICgkc2l6ZXNCbG9jay5maW5kKCcuY2hlZmx5LXNpemUtY2hlY2tib3g6Y2hlY2tlZCcpLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJHNpemVzQmxvY2sucmVtb3ZlQ2xhc3MoJ2lzLW1pc3NpbmcnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1cGRhdGVMaWdodGJveFRvdGFsKCRsaWdodGJveCk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NoYW5nZScsICcuY2hlZmx5LWxpZ2h0Ym94LXF1YW50aXR5LWlucHV0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgcXVhbnRpdHkgPSBwYXJzZUludCgkKHRoaXMpLnZhbCgpKTsKICAgICAgICAgICAgICAgIGlmIChxdWFudGl0eSA8IDEpIHsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnZhbCgxKTsKICAgICAgICAgICAgICAgICAgICBxdWFudGl0eSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB1cGRhdGVMaWdodGJveFRvdGFsKCQodGhpcykuY2xvc2VzdCgnLmNoZWZseS1saWdodGJveCcpKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgICAgICBmdW5jdGlvbiB1cGRhdGVMaWdodGJveFRvdGFsKGxpZ2h0Ym94KSB7CiAgICAgICAgICAgICAgICB2YXIgYmFzZVByaWNlID0gcGFyc2VGbG9hdChsaWdodGJveC5kYXRhKCdiYXNlLXByaWNlJykpOwogICAgICAgICAgICAgICAgaWYgKGlzTmFOKGJhc2VQcmljZSkpIHsKICAgICAgICAgICAgICAgICAgICBiYXNlUHJpY2UgPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGN1cnJlbmN5ID0gZ2V0V29vQ29tbWVyY2VDdXJyZW5jeVN5bWJvbCgpOwogICAgICAgICAgICAgICAgdmFyIGN1cnJlbmN5U3ltYm9sID0gY3VycmVuY3kucmVwbGFjZSgvJiN4P1swLTlBLUZhLWZdKzsvZywgZnVuY3Rpb24obWF0Y2gpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShwYXJzZUludChtYXRjaC5yZXBsYWNlKC9bJiN4O10vZywgJycpLCAxNikpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB2YXIgcXVhbnRpdHkgPSBwYXJzZUludChsaWdodGJveC5maW5kKCcuY2hlZmx5LWxpZ2h0Ym94LXF1YW50aXR5LWlucHV0JykudmFsKCkpIHx8IDE7CiAgICAgICAgICAgICAgICB2YXIgc2lkZXNUb3RhbCA9IDA7CgogICAgICAgICAgICAgICAgbGlnaHRib3guZmluZCgnLmNoZWZseS1zaWRlLXF0eS1pbnB1dCcpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHF0eSA9IHNhbml0aXplU2lkZVF1YW50aXR5KCQodGhpcykudmFsKCkpOwogICAgICAgICAgICAgICAgICAgIGlmIChxdHkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcmljZVBlclVuaXQgPSBwYXJzZUZsb2F0KCQodGhpcykuZGF0YSgnc2lkZS1wcmljZScpKSB8fCAwOwogICAgICAgICAgICAgICAgICAgICAgICBzaWRlc1RvdGFsICs9IHByaWNlUGVyVW5pdCAqIHF0eTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICB2YXIgc2l6ZXNUb3RhbCA9IDA7CiAgICAgICAgICAgICAgICBsaWdodGJveC5maW5kKCcuY2hlZmx5LXNpemUtY2hlY2tib3g6Y2hlY2tlZCcpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgc2l6ZXNUb3RhbCArPSBwYXJzZUZsb2F0KCQodGhpcykuZGF0YSgnc2l6ZS1wcmljZScpKSB8fCAwOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgdmFyIHRvdGFsID0gKGJhc2VQcmljZSArIHNpZGVzVG90YWwgKyBzaXplc1RvdGFsKSAqIHF1YW50aXR5OwogICAgICAgICAgICAgICAgbGlnaHRib3guZmluZCgnLmNoZWZseS1saWdodGJveC10b3RhbC1wcmljZScpLnRleHQodG90YWwudG9GaXhlZCgyKSArICcgJyArIGN1cnJlbmN5U3ltYm9sKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgZnVuY3Rpb24gdmFsaWRhdGVSZXF1aXJlZFNlbGVjdGlvbnMobGlnaHRib3gpIHsKICAgICAgICAgICAgICAgIHZhciBtaXNzaW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICBsaWdodGJveC5maW5kKCcuY2hlZmx5LWxpZ2h0Ym94LXNpZGVzLWdyb3VwJykuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWVuZm9yY2VTaWRlU2V0TGltaXRzKCQodGhpcykpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG1pc3NpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgcmV0dXJuICFtaXNzaW5nOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyA9PT09PSBDT01CTyBNT0RBTCBGVU5DVElPTlMgPT09PT0KICAgICAgICAgICAgZnVuY3Rpb24gb3BlbkNvbWJvTW9kYWwocHJvZHVjdERhdGEpIHsKICAgICAgICAgICAgICAgIHZhciBjdXJyZW5jeSA9IGdldFdvb0NvbW1lcmNlQ3VycmVuY3lTeW1ib2woKTsKICAgICAgICAgICAgICAgIHZhciBjdXJyZW5jeVN5bWJvbCA9IGN1cnJlbmN5LnJlcGxhY2UoLyYjeD9bMC05QS1GYS1mXSs7L2csIGZ1bmN0aW9uKG1hdGNoKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQobWF0Y2gucmVwbGFjZSgvWyYjeDtdL2csICcnKSwgMTYpKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgdmFyIGNvbWJvUHJpY2UgPSBwYXJzZUZsb2F0KHByb2R1Y3REYXRhLnByaWNlKSB8fCAwOwogICAgICAgICAgICAgICAgdmFyIGNvbWJvUHJvZHVjdHMgPSBwcm9kdWN0RGF0YS5jb21ib19wcm9kdWN0cyB8fCBbXTsKCiAgICAgICAgICAgICAgICB2YXIgcHJvZHVjdHNIdG1sID0gJzxkaXYgY2xhc3M9ImNoZWZseS1jb21iby1wcm9kdWN0cy1ncmlkIj4nOwogICAgICAgICAgICAgICAgY29tYm9Qcm9kdWN0cy5mb3JFYWNoKGZ1bmN0aW9uKHBpZCkgewogICAgICAgICAgICAgICAgICAgIHZhciBjb21wID0gYWxsUHJvZHVjdHMuZmluZChmdW5jdGlvbihwKSB7IHJldHVybiBwLklEID09IHBpZDsgfSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbXBQcmljZSA9IHBhcnNlRmxvYXQoY29tcC5wcmljZSkgfHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbXBJbWFnZSA9IGNvbXAuaW1hZ2VfaHRtbCA\/IGNvbXAuaW1hZ2VfaHRtbCA6ICcnOwogICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0c0h0bWwgKz0gJzxkaXYgY2xhc3M9ImNoZWZseS1jb21iby1wcm9kdWN0LWNhcmQiIGRhdGEtcHJvZHVjdC1pZD0iJyArIGNvbXAuSUQgKyAnIj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJjaGVmbHktY29tYm8tcHJvZHVjdC1jaGVjayI+JiMxMDAwNDs8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJjaGVmbHktY29tYm8tcHJvZHVjdC1pbWFnZSI+JyArIGNvbXBJbWFnZSArICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJjaGVmbHktY29tYm8tcHJvZHVjdC1pbmZvIj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImNoZWZseS1jb21iby1wcm9kdWN0LW5hbWUiPicgKyBjb21wLnBvc3RfdGl0bGUgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb21wUHJpY2UgPiAwID8gJzxzcGFuIGNsYXNzPSJjaGVmbHktY29tYm8tcHJvZHVjdC1wcmljZSI+JyArIGNvbXBQcmljZS50b0ZpeGVkKDIpICsgJyAnICsgY3VycmVuY3lTeW1ib2wgKyAnPC9zcGFuPicgOiAnJykgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHByb2R1Y3RzSHRtbCArPSAnPC9kaXY+JzsKCiAgICAgICAgICAgICAgICB2YXIgbW9kYWxIdG1sID0gJzxkaXYgY2xhc3M9ImNoZWZseS1jb21iby1tb2RhbCIgZGF0YS1jb21iby1wcm9kdWN0LWlkPSInICsgcHJvZHVjdERhdGEuSUQgKyAnIj4nICsKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iY2hlZmx5LWNvbWJvLW1vZGFsLWJhY2tkcm9wIj48L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iY2hlZmx5LWNvbWJvLW1vZGFsLWNvbnRhaW5lciI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJjaGVmbHktY29tYm8tbW9kYWwtY2xvc2UiPjxzcGFuPiZ0aW1lczs8L3NwYW4+PC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJjaGVmbHktY29tYm8tbW9kYWwtaGVhZGVyIj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8aDI+JyArIHByb2R1Y3REYXRhLnBvc3RfdGl0bGUgKyAnPC9oMj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJjaGVmbHktY29tYm8tbW9kYWwtcHJpY2UiPicgKyBjb21ib1ByaWNlLnRvRml4ZWQoMikgKyAnICcgKyBjdXJyZW5jeVN5bWJvbCArICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iY2hlZmx5LWNvbWJvLW1vZGFsLWJvZHkgbm8tc2lkZWJhciI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iY2hlZmx5LWNvbWJvLWNvbnRlbnQiPicgKyBwcm9kdWN0c0h0bWwgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImNoZWZseS1jb21iby1tb2RhbC1mb290ZXIiPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImNoZWZseS1jb21iby1zdW1tYXJ5Ij4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPHNwYW4gY2xhc3M9ImNoZWZseS1jb21iby1zdW1tYXJ5LWxhYmVsIj4nICsgIkl6YWJyYW5vOiIgKyAnPC9zcGFuPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8c3BhbiBjbGFzcz0iY2hlZmx5LWNvbWJvLXN1bW1hcnktaXRlbXMiPjwvc3Bhbj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJjaGVmbHktY29tYm8tYWN0aW9ucyI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iY2hlZmx5LWNvbWJvLWFkZC1jYXJ0Ij4nICsgIkRvZGFqIHUga29ycHUiICsgJzwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgJzwvZGl2Pic7CgogICAgICAgICAgICAgICAgJCgnYm9keScpLmFwcGVuZChtb2RhbEh0bWwpOwogICAgICAgICAgICAgICAgdmFyICRtb2RhbCA9ICQoJy5jaGVmbHktY29tYm8tbW9kYWwnKS5sYXN0KCk7CiAgICAgICAgICAgICAgICAkbW9kYWwuZGF0YSgnY29tYm8tY29tcG9uZW50cycsIHt9KTsKICAgICAgICAgICAgICAgICQoJ2JvZHknKS5jc3MoJ292ZXJmbG93JywgJ2hpZGRlbicpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnLmNoZWZseS1jb21iby1tb2RhbC1jbG9zZSwgLmNoZWZseS1jb21iby1tb2RhbC1iYWNrZHJvcCcsIGZ1bmN0aW9uKGUpIHsKICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldCA9PT0gdGhpcyB8fCAkKHRoaXMpLmhhc0NsYXNzKCdjaGVmbHktY29tYm8tbW9kYWwtY2xvc2UnKSkgewogICAgICAgICAgICAgICAgICAgICQoJy5jaGVmbHktY29tYm8tbW9kYWwnKS5yZW1vdmUoKTsKICAgICAgICAgICAgICAgICAgICAkKCdib2R5JykuY3NzKCdvdmVyZmxvdycsICcnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnLmNoZWZseS1jb21iby1wcm9kdWN0LWNhcmQnLCBmdW5jdGlvbihlKSB7CiAgICAgICAgICAgICAgICBpZiAoJChlLnRhcmdldCkuY2xvc2VzdCgnLmNoZWZseS1jb21iby1tb2RhbC1jbG9zZScpLmxlbmd0aCkgcmV0dXJuOwogICAgICAgICAgICAgICAgdmFyICRjYXJkID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgIHZhciBwcm9kdWN0SWQgPSAkY2FyZC5kYXRhKCdwcm9kdWN0LWlkJyk7CiAgICAgICAgICAgICAgICB2YXIgJG1vZGFsID0gJCgnLmNoZWZseS1jb21iby1tb2RhbCcpOwogICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkQ29tcG9uZW50cyA9ICRtb2RhbC5kYXRhKCdjb21iby1jb21wb25lbnRzJykgfHwge307CgogICAgICAgICAgICAgICAgaWYgKCRjYXJkLmhhc0NsYXNzKCdzZWxlY3RlZCcpKSB7CiAgICAgICAgICAgICAgICAgICAgJGNhcmQucmVtb3ZlQ2xhc3MoJ3NlbGVjdGVkJyk7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHNlbGVjdGVkQ29tcG9uZW50c1twcm9kdWN0SWRdOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkY2FyZC5hZGRDbGFzcygnc2VsZWN0ZWQnKTsKICAgICAgICAgICAgICAgICAgICB2YXIgY29tcCA9IGFsbFByb2R1Y3RzLmZpbmQoZnVuY3Rpb24ocCkgeyByZXR1cm4gcC5JRCA9PSBwcm9kdWN0SWQ7IH0pOwogICAgICAgICAgICAgICAgICAgIGlmIChjb21wKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkQ29tcG9uZW50c1twcm9kdWN0SWRdID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdF9pZDogcHJvZHVjdElkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGNvbXAucG9zdF90aXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBwYXJzZUZsb2F0KGNvbXAucHJpY2UpIHx8IDAKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkbW9kYWwuZGF0YSgnY29tYm8tY29tcG9uZW50cycsIHNlbGVjdGVkQ29tcG9uZW50cyk7CiAgICAgICAgICAgICAgICB1cGRhdGVDb21ib1N1bW1hcnkoKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBmdW5jdGlvbiB1cGRhdGVDb21ib1N1bW1hcnkoKSB7CiAgICAgICAgICAgICAgICB2YXIgJG1vZGFsID0gJCgnLmNoZWZseS1jb21iby1tb2RhbCcpOwogICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkQ29tcG9uZW50cyA9ICRtb2RhbC5kYXRhKCdjb21iby1jb21wb25lbnRzJykgfHwge307CiAgICAgICAgICAgICAgICB2YXIgaXRlbXMgPSBbXTsKICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHNlbGVjdGVkQ29tcG9uZW50cykuZm9yRWFjaChmdW5jdGlvbihrZXkpIHsKICAgICAgICAgICAgICAgICAgICBpdGVtcy5wdXNoKHNlbGVjdGVkQ29tcG9uZW50c1trZXldLnRpdGxlKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgJG1vZGFsLmZpbmQoJy5jaGVmbHktY29tYm8tc3VtbWFyeS1pdGVtcycpLnRleHQoaXRlbXMuam9pbignLCAnKSB8fCAiTmlcdTAxNjF0YSBuaWplIGl6YWJyYW5vIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuY2hlZmx5LWNvbWJvLWFkZC1jYXJ0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgJG1vZGFsID0gJCgnLmNoZWZseS1jb21iby1tb2RhbCcpOwogICAgICAgICAgICAgICAgdmFyIHByb2R1Y3RJZCA9ICRtb2RhbC5kYXRhKCdjb21iby1wcm9kdWN0LWlkJyk7CiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRDb21wb25lbnRzID0gJG1vZGFsLmRhdGEoJ2NvbWJvLWNvbXBvbmVudHMnKSB8fCB7fTsKICAgICAgICAgICAgICAgIHZhciBjb21wb25lbnRzID0gW107CiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhzZWxlY3RlZENvbXBvbmVudHMpLmZvckVhY2goZnVuY3Rpb24oa2V5KSB7CiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cy5wdXNoKHNlbGVjdGVkQ29tcG9uZW50c1trZXldKTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICQuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9zbmVraG91c2UucnMvd3AtYWRtaW4vYWRtaW4tYWpheC5waHAnLAogICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQT1NUJywKICAgICAgICAgICAgICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ2NoZWZseV9hZGRfdG9fY2FydCcsCiAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RfaWQ6IHByb2R1Y3RJZCwKICAgICAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbWJvX2NvbXBvbmVudHM6IEpTT04uc3RyaW5naWZ5KGNvbXBvbmVudHMpLAogICAgICAgICAgICAgICAgICAgICAgICBub25jZTogJzEwNDg3ZTYwOGEnCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXNwb25zZSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmNoZWZseS1jb21iby1tb2RhbCcpLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnYm9keScpLmNzcygnb3ZlcmZsb3cnLCAnJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVDYXJ0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydChyZXNwb25zZS5kYXRhIHx8ICJHcmVcdTAxNjFrYSBwcmkgZG9kYXZhbmp1IHUga29ycHUuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoIkdyZVx1MDE2MWthIG5hIHNlcnZlcnUuIik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJy5jaGVmbHktbGlnaHRib3gtYWRkLWNhcnQnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJz09PSBBZGQgdG8gY2FydCBidXR0b24gY2xpY2tlZCA9PT0nKTsKICAgICAgICAgICAgICAgIHZhciBsaWdodGJveCA9ICQodGhpcykuY2xvc2VzdCgnLmNoZWZseS1saWdodGJveCcpOwogICAgICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZVJlcXVpcmVkU2VsZWN0aW9ucyhsaWdodGJveCkpIHsKICAgICAgICAgICAgICAgICAgICBhbGVydCgiTW9yYXRlIG9kYWJyYXRpIG9iYXZlem5lIGRvZGF0a2UuIik7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gUmVxdWlyZSBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgc2l6ZSB3aGVuIHNpemVzIGFyZSBhdmFpbGFibGUKICAgICAgICAgICAgICAgIHZhciAkc2l6ZXNCbG9jayA9IGxpZ2h0Ym94LmZpbmQoJy5jaGVmbHktbGlnaHRib3gtc2l6ZXMnKTsKICAgICAgICAgICAgICAgIGlmICgkc2l6ZXNCbG9jay5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRDb3VudCA9ICRzaXplc0Jsb2NrLmZpbmQoJy5jaGVmbHktc2l6ZS1jaGVja2JveDpjaGVja2VkJykubGVuZ3RoOwogICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZENvdW50ID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzaXplc0Jsb2NrLmFkZENsYXNzKCdpcy1taXNzaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KCJNb2xpbW8gaXphYmVyaXRlIHZlbGlcdTAxMGRpbnUuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkc2l6ZXNCbG9jay5yZW1vdmVDbGFzcygnaXMtbWlzc2luZycpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHZhciBwcm9kdWN0SWQgPSBsaWdodGJveC5kYXRhKCdwcm9kdWN0LWlkJyk7CiAgICAgICAgICAgICAgICB2YXIgcXVhbnRpdHkgPSBwYXJzZUludChsaWdodGJveC5maW5kKCcuY2hlZmx5LWxpZ2h0Ym94LXF1YW50aXR5LWlucHV0JykudmFsKCkpIHx8IDE7CiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRTaWRlcyA9IFtdOwogICAgICAgICAgICAgICAgdmFyIHNpZGVzRGF0YSA9IFtdOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBsaWdodGJveC5maW5kKCcuY2hlZmx5LXNpZGUtcXR5LWlucHV0JykuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgc2lkZVF0eSA9IHNhbml0aXplU2lkZVF1YW50aXR5KCQodGhpcykudmFsKCkpOwogICAgICAgICAgICAgICAgICAgIGlmIChzaWRlUXR5ID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2lkZUlkID0gcGFyc2VJbnQoJCh0aGlzKS5kYXRhKCdzaWRlLWlkJyksIDEwKSB8fCAwOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2lkZVByaWNlID0gcGFyc2VGbG9hdCgkKHRoaXMpLmRhdGEoJ3NpZGUtcHJpY2UnKSkgfHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVuY29kZWRUaXRsZSA9ICQodGhpcykuZGF0YSgnc2lkZS10aXRsZScpIHx8ICcnOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2lkZVRpdGxlID0gZW5jb2RlZFRpdGxlID8gZGVjb2RlVVJJQ29tcG9uZW50KGVuY29kZWRUaXRsZSkgOiAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGVuY29kZWRTZXQgPSAkKHRoaXMpLmRhdGEoJ3NpZGUtc2V0Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkZWNvZGVkU2V0ID0gZW5jb2RlZFNldCA\/IGRlY29kZVVSSUNvbXBvbmVudChlbmNvZGVkU2V0KSA6ICcnOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2V0SWQgPSBwYXJzZUludCgkKHRoaXMpLmRhdGEoJ3NldC1pZCcpLCAxMCkgfHwgbnVsbDsKCiAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVzRGF0YS5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBzaWRlSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogc2lkZVRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpY2U6IHNpZGVQcmljZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9pZDogc2V0SWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRfbmFtZTogZGVjb2RlZFNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiBzaWRlUXR5CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFNpZGVzLnB1c2goewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHNpZGVJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiBzaWRlUXR5CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBHZXQgc2V0IG5hbWUgZnJvbSBzaWRlcyBkYXRhCiAgICAgICAgICAgICAgICB2YXIgc2lkZXNGb3JQcm9kdWN0ID0gYWxsU2lkZXNbcHJvZHVjdElkXSB8fCBbXTsKICAgICAgICAgICAgICAgIHZhciBjYXRlZ29yeU5hbWUgPSAnUHJpbG96aSc7CiAgICAgICAgICAgICAgICBpZiAoc2lkZXNEYXRhLmxlbmd0aCA+IDAgJiYgc2lkZXNEYXRhWzBdLnNldF9uYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlOYW1lID0gc2lkZXNEYXRhWzBdLnNldF9uYW1lOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHNpZGVzRm9yUHJvZHVjdCkgJiYgc2lkZXNGb3JQcm9kdWN0Lmxlbmd0aCA+IDAgJiYgc2lkZXNGb3JQcm9kdWN0WzBdLnNldF9uYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlOYW1lID0gc2lkZXNGb3JQcm9kdWN0WzBdLnNldF9uYW1lOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgZmxhdHRlbmVkSWRzID0gW107CiAgICAgICAgICAgICAgICBzZWxlY3RlZFNpZGVzLmZvckVhY2goZnVuY3Rpb24oZW50cnkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGVudHJ5ID09PSAnb2JqZWN0JyAmJiBlbnRyeSAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY291bnQgPSBlbnRyeS5xdWFudGl0eSB8fCAxOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYXR0ZW5lZElkcy5wdXNoKGVudHJ5LmlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZsYXR0ZW5lZElkcy5wdXNoKGVudHJ5KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRTaXplcyA9IFtdOwogICAgICAgICAgICAgICAgbGlnaHRib3guZmluZCgnLmNoZWZseS1zaXplLWNoZWNrYm94OmNoZWNrZWQnKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBlbmNvZGVkTmFtZSA9ICQodGhpcykuZGF0YSgnc2l6ZS1uYW1lJykgfHwgJyc7CiAgICAgICAgICAgICAgICAgICAgdmFyIGRlY29kZWROYW1lID0gZW5jb2RlZE5hbWUgPyBkZWNvZGVVUklDb21wb25lbnQoZW5jb2RlZE5hbWUpIDogJyc7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNpemVQcmljZSA9IHBhcnNlRmxvYXQoJCh0aGlzKS5kYXRhKCdzaXplLXByaWNlJykpIHx8IDA7CiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRTaXplcy5wdXNoKHsKICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZGVjb2RlZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIHByaWNlOiBzaXplUHJpY2UKICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ0FkZGluZyB0byBjYXJ0OicsIHsgcHJvZHVjdElkLCBxdWFudGl0eSwgc2VsZWN0ZWRTaWRlczogZmxhdHRlbmVkSWRzLCBzaWRlc0RhdGEsIGNhdGVnb3J5TmFtZSB9KTsKICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ1Byb2R1Y3QgSUQ6JywgcHJvZHVjdElkKTsKICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ1F1YW50aXR5OicsIHF1YW50aXR5KTsKICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ1NpZGVzIGRhdGE6JywgSlNPTi5zdHJpbmdpZnkoc2lkZXNEYXRhKSk7CiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdDYXRlZ29yeSBuYW1lIChzZXQgbmFtZSk6JywgY2F0ZWdvcnlOYW1lKTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gR2V0IGRpc2NvdW50ZWQgcHJpY2UgZnJvbSB0aGUgcHJvZHVjdCBjYXJkCiAgICAgICAgICAgICAgICB2YXIgZGlzY291bnRlZFByaWNlID0gcGFyc2VGbG9hdCgkKCcuY2hlZmx5LXByb2R1Y3QtY2FyZFtkYXRhLXByb2R1Y3QtaWQ9IicgKyBwcm9kdWN0SWQgKyAnIl0nKS5kYXRhKCdiYXNlLXByaWNlJykpIHx8IDA7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIEFkZCB0byBXb29Db21tZXJjZSBjYXJ0IHZpYSBBSkFYCiAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCc9PT0gU2VuZGluZyBBSkFYIHJlcXVlc3QgdG8gYWRkIHRvIGNhcnQgPT09Jyk7CiAgICAgICAgICAgICAgICAkLmFqYXgoewogICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vc25la2hvdXNlLnJzL3dwLWFkbWluL2FkbWluLWFqYXgucGhwJywKICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUE9TVCcsCiAgICAgICAgICAgICAgICAgICAgZGF0YTogewogICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdjaGVmbHlfYWRkX3RvX2NhcnQnLAogICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0X2lkOiBwcm9kdWN0SWQsCiAgICAgICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiBxdWFudGl0eSwKICAgICAgICAgICAgICAgICAgICAgICAgc2lkZXM6IHNpZGVzRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZXM6IHNlbGVjdGVkU2l6ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVfaWRzOiBmbGF0dGVuZWRJZHMsCiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5X25hbWU6IGNhdGVnb3J5TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgZGlzY291bnRlZF9wcmljZTogZGlzY291bnRlZFByaWNlLAogICAgICAgICAgICAgICAgICAgICAgICBub25jZTogJzEwNDg3ZTYwOGEnCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXNwb25zZSkgewogICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCc9PT0gQUpBWCBhZGQgdG8gY2FydCBzdWNjZXNzID09PScpOwogICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdSZXNwb25zZTonLCByZXNwb25zZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ1Jlc3BvbnNlIHN1Y2Nlc3M6JywgcmVzcG9uc2Uuc3VjY2Vzcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ1Jlc3BvbnNlIGRhdGE6JywgcmVzcG9uc2UuZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAvLyBHZXQgcHJvZHVjdCB0aXRsZSBmcm9tIGxpZ2h0Ym94CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwcm9kdWN0VGl0bGUgPSBsaWdodGJveC5maW5kKCcuY2hlZmx5LWxpZ2h0Ym94LXRpdGxlJykudGV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgbGlnaHRib3gucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAkKCdib2R5JykuY3NzKCdvdmVyZmxvdycsICcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNob3cgbm90aWZpY2F0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWZseUNhcnQuc2hvd05vdGlmaWNhdGlvbihwcm9kdWN0VGl0bGUsIHF1YW50aXR5KTsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbG9hZCBjYXJ0IGZyb20gV29vQ29tbWVyY2UKICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnPT09IFJlbG9hZGluZyBjYXJ0IGZyb20gV29vQ29tbWVyY2UgPT09Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoZWZseUNhcnQubG9hZEZyb21Xb29Db21tZXJjZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVmcmVzaCBXb29Db21tZXJjZSBjYXJ0IGZyYWdtZW50cwogICAgICAgICAgICAgICAgICAgICAgICAkKGRvY3VtZW50LmJvZHkpLnRyaWdnZXIoJ3djX2ZyYWdtZW50X3JlZnJlc2gnKTsKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbih4aHIsIHN0YXR1cywgZXJyb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmVycm9yKCc9PT0gQUpBWCBhZGQgdG8gY2FydCBlcnJvciA9PT0nKTsKICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmVycm9yKCdFcnJvcjonLCBlcnJvcik7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5lcnJvcignU3RhdHVzOicsIHN0YXR1cyk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5lcnJvcignWEhSOicsIHhocik7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5lcnJvcignUmVzcG9uc2UgdGV4dDonLCB4aHIucmVzcG9uc2VUZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoIkdyZVx1MDE2MWthIHByaWxpa29tIGRvZGF2YW5qYSB1IGtvcnB1ISIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGZ1bmN0aW9uIGdldFdvb0NvbW1lcmNlQ3VycmVuY3lTeW1ib2woKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gIlJTRCI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIHZhciBjaGVmbHlDYXJ0ID0gewogICAgICAgICAgICAgICAgaXRlbXM6IFtdLAogICAgICAgICAgICAgICAgY2FydFRvdGFsOiAwLAogICAgICAgICAgICAgICAgY2FydERpc2NvdW50OiBudWxsLAogICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uVGltZW91dDogbnVsbCwKICAgICAgICAgICAgICAgIHBlbmRpbmdRdWFudGl0eVVwZGF0ZXM6IDAsCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGxvYWRGcm9tV29vQ29tbWVyY2U6IGZ1bmN0aW9uKGNhbGxiYWNrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgICQuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vc25la2hvdXNlLnJzL3dwLWFkbWluL2FkbWluLWFqYXgucGhwJywKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1BPU1QnLAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdjaGVmbHlfZ2V0X2NhcnRfaXRlbXMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9uY2U6ICcxMDQ4N2U2MDhhJwogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzICYmIHJlc3BvbnNlLmRhdGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLml0ZW1zID0gcmVzcG9uc2UuZGF0YS5jYXJ0X2l0ZW1zIHx8IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FydFRvdGFsID0gcmVzcG9uc2UuZGF0YS5jYXJ0X3RvdGFsIHx8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jYXJ0RGlzY291bnQgPSByZXNwb25zZS5kYXRhLmNhcnRfZGlzY291bnQgfHwgbnVsbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZUNhcnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKHhociwgc3RhdHVzLCBlcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBhZGRJdGVtOiBmdW5jdGlvbihwcm9kdWN0SWQsIHF1YW50aXR5LCBzaWRlcykgewogICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ2FkZEl0ZW0gY2FsbGVkIHdpdGg6JywgeyBwcm9kdWN0SWQsIHF1YW50aXR5LCBzaWRlcyB9KTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB2YXIgcHJvZHVjdCA9IHByb2R1Y3RzRGF0YS5maW5kKGZ1bmN0aW9uKHApIHsgcmV0dXJuIHAuSUQgPT0gcHJvZHVjdElkOyB9KTsKICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdGb3VuZCBwcm9kdWN0OicsIHByb2R1Y3QpOwogICAgICAgICAgICAgICAgICAgIGlmICghcHJvZHVjdCkgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHZhciBjYXJkID0gJCgnLmNoZWZseS1wcm9kdWN0LWNhcmRbZGF0YS1wcm9kdWN0LWlkPSInICsgcHJvZHVjdElkICsgJyJdJyk7CiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnQ2FyZCBlbGVtZW50OicsIGNhcmQpOwogICAgICAgICAgICAgICAgICAgIHZhciBiYXNlUHJpY2UgPSBwYXJzZUZsb2F0KGNhcmQuZGF0YSgnYmFzZS1wcmljZScpKTsKICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdCYXNlIHByaWNlOicsIGJhc2VQcmljZSk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgdmFyIGV4aXN0aW5nSXRlbSA9IHRoaXMuaXRlbXMuZmluZChmdW5jdGlvbihpdGVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLnByb2R1Y3RJZCA9PT0gcHJvZHVjdElkICYmIEpTT04uc3RyaW5naWZ5KGl0ZW0uc2lkZXMpID09PSBKU09OLnN0cmluZ2lmeShzaWRlcyk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nSXRlbSkgewogICAgICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdFeGlzdGluZyBpdGVtIGZvdW5kLCB1cGRhdGluZyBxdWFudGl0eScpOwogICAgICAgICAgICAgICAgICAgICAgICBleGlzdGluZ0l0ZW0ucXVhbnRpdHkgKz0gcXVhbnRpdHk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnQWRkaW5nIG5ldyBpdGVtJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMucHVzaCh7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9kdWN0SWQ6IHByb2R1Y3RJZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwcm9kdWN0LnBvc3RfdGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZTogaGFzUG9zdFRodW1ibmFpbChwcm9kdWN0KSA\/IGdldFBvc3RUaHVtYm5haWwocHJvZHVjdElkLCAnbGFyZ2UnKSA6ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVhbnRpdHk6IHF1YW50aXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZXM6IHNpZGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVByaWNlOiBiYXNlUHJpY2UKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ0NhcnQgaXRlbXMgYWZ0ZXIgYWRkOicsIHRoaXMuaXRlbXMpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FydCgpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuYW5pbWF0ZUNhcnQoKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dOb3RpZmljYXRpb24ocHJvZHVjdC5wb3N0X3RpdGxlLCBxdWFudGl0eSk7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBhbmltYXRlQ2FydDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgJCgnLmNoZWZseS1mbG9hdGluZy1jYXJ0JykuYWRkQ2xhc3MoJ2JvdW5jZScpOwogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJy5jaGVmbHktZmxvYXRpbmctY2FydCcpLnJlbW92ZUNsYXNzKCdib3VuY2UnKTsKICAgICAgICAgICAgICAgICAgICB9LCA1MDApOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgc2hvd05vdGlmaWNhdGlvbjogZnVuY3Rpb24ocHJvZHVjdFRpdGxlLCBxdWFudGl0eSkgewogICAgICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlID0gcXVhbnRpdHkgPiAxIAogICAgICAgICAgICAgICAgICAgICAgICA\/IHF1YW50aXR5ICsgJ3ggJyArIHByb2R1Y3RUaXRsZSAKICAgICAgICAgICAgICAgICAgICAgICAgOiBwcm9kdWN0VGl0bGU7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgJCgnLmNoZWZseS1ub3RpZmljYXRpb24tbWVzc2FnZScpLnRleHQobWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgICAgJCgnLmNoZWZseS1ub3RpZmljYXRpb24nKS5yZW1vdmVDbGFzcygnaGlkaW5nJykuYWRkQ2xhc3MoJ2FjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5vdGlmaWNhdGlvblRpbWVvdXQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMubm90aWZpY2F0aW9uVGltZW91dCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uVGltZW91dCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJy5jaGVmbHktbm90aWZpY2F0aW9uJykuYWRkQ2xhc3MoJ2hpZGluZycpOwogICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmNoZWZseS1ub3RpZmljYXRpb24nKS5yZW1vdmVDbGFzcygnYWN0aXZlJykucmVtb3ZlQ2xhc3MoJ2hpZGluZycpOwogICAgICAgICAgICAgICAgICAgICAgICB9LCAzMDApOwogICAgICAgICAgICAgICAgICAgIH0sIDI1MDApOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgcmVtb3ZlSXRlbTogZnVuY3Rpb24oaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7CiAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLml0ZW1zW2luZGV4XTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0uY2FydF9pdGVtX2tleSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIC8vIE9wdGltaXN0aWMgVUkgdXBkYXRlCiAgICAgICAgICAgICAgICAgICAgc2VsZi5pdGVtcy5zcGxpY2UoaW5kZXgsIDEpOwogICAgICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlQ2FydCgpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICQuYWpheCh7CiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHBzOi8vc25la2hvdXNlLnJzL3dwLWFkbWluL2FkbWluLWFqYXgucGhwJywKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1BPU1QnLAogICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdjaGVmbHlfcmVtb3ZlX2NhcnRfaXRlbScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJ0X2l0ZW1fa2V5OiBpdGVtLmNhcnRfaXRlbV9rZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub25jZTogJzEwNDg3ZTYwOGEnCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9hZEZyb21Xb29Db21tZXJjZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjogZnVuY3Rpb24oeGhyLCBzdGF0dXMsIGVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvYWRGcm9tV29vQ29tbWVyY2UoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdXBkYXRlQ2FydDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwogICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJz09PSB1cGRhdGVDYXJ0IGNhbGxlZCA9PT0nKTsKICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdDdXJyZW50IGl0ZW1zOicsIHRoaXMuaXRlbXMpOwogICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ051bWJlciBvZiBpdGVtczonLCB0aGlzLml0ZW1zLmxlbmd0aCk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50ID0gdGhpcy5pdGVtcy5yZWR1Y2UoZnVuY3Rpb24oc3VtLCBpdGVtKSB7IHJldHVybiBzdW0gKyBpdGVtLnF1YW50aXR5OyB9LCAwKTsKICAgICAgICAgICAgICAgICAgICAvL2NvbnNvbGUubG9nKCdUb3RhbCBjb3VudDonLCBjb3VudCk7CiAgICAgICAgICAgICAgICAgICAgJCgnLmNoZWZseS1jYXJ0LWNvdW50JykudGV4dChjb3VudCk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXRlbXMubGVuZ3RoID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ0NhcnQgaXMgZW1wdHknKTsKICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmNoZWZseS1jYXJ0LW1vZGFsLWNvbnRlbnQnKS5odG1sKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImNoZWZseS1jYXJ0LWVtcHR5Ij4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iY2hlZmx5LWNhcnQtZW1wdHktaWNvbiI+PHN2ZyB3aWR0aD0iNDgiIGhlaWdodD0iNDgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjY2NjIiBzdHJva2Utd2lkdGg9IjEuNSIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48Y2lyY2xlIGN4PSI5IiBjeT0iMjEiIHI9IjEiLz48Y2lyY2xlIGN4PSIyMCIgY3k9IjIxIiByPSIxIi8+PHBhdGggZD0iTTEgMWg0bDIuNjggMTMuMzlhMiAyIDAgMCAwIDIgMS42MWg5LjcyYTIgMiAwIDAgMCAyLTEuNjFMMjMgNkg2Ii8+PC9zdmc+PC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxwPicgKyAiVmFcdTAxNjFhIGtvcnBhIGplIHByYXpuYSIgKyAnPC9wPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2PicKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJCgnLmNoZWZseS1jYXJ0LXRvdGFsLXByaWNlJykudGV4dCgnMC4wMCAnICsgZ2V0V29vQ29tbWVyY2VDdXJyZW5jeVN5bWJvbCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbXNIdG1sID0gJzxkaXYgY2xhc3M9ImNoZWZseS1jYXJ0LWl0ZW1zIj4nOwogICAgICAgICAgICAgICAgICAgIHZhciB0b3RhbCA9IHRoaXMuY2FydFRvdGFsIHx8IDA7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNpemVMYWJlbCA9ICJWZWxpXHUwMTBkaW5hOiI7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNpZGVzTGFiZWwgPSAiUHJpbG96aToiOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYmFzZVByaWNlID0gcGFyc2VGbG9hdChpdGVtLmJhc2VQcmljZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtVG90YWwgPSBpdGVtLnRvdGFsUHJpY2UgPyBwYXJzZUZsb2F0KGl0ZW0udG90YWxQcmljZSkgOiAoYmFzZVByaWNlICogaXRlbS5xdWFudGl0eSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaWRlc1RvdGFsID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNpZGVFbnRyaWVzID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaXplQ29zdCA9IDA7CgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VsZWN0ZWRTaXplcyA9IGl0ZW0uc2l6ZXMgfHwgW107CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaXplRW50cmllcyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFNpemVzLmZvckVhY2goZnVuY3Rpb24oc2l6ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzaXplIHx8ICFzaXplLm5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgbGluZSA9IHNpemUubmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygc2l6ZS5wcmljZSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGFyc2VkU2l6ZVByaWNlID0gcGFyc2VGbG9hdChzaXplLnByaWNlKSB8fCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgKz0gJyAoJyArIHBhcnNlZFNpemVQcmljZS50b0ZpeGVkKDIpICsgJyAnICsgZ2V0V29vQ29tbWVyY2VDdXJyZW5jeVN5bWJvbCgpICsgJyknOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVDb3N0ICs9IHBhcnNlZFNpemVQcmljZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVFbnRyaWVzLnB1c2gobGluZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2l6ZURpc3BsYXlIdG1sID0gc2l6ZUVudHJpZXMubGVuZ3RoID8gJzxkaXYgY2xhc3M9ImNoZWZseS1jYXJ0LWl0ZW0tc2l6ZSI+JyArIHNpemVMYWJlbCArICcgJyArIHNpemVFbnRyaWVzLmpvaW4oJywgJykgKyAnPC9kaXY+JyA6ICcnOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uc2lkZXMgJiYgaXRlbS5zaWRlcy5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNpZGVzLmZvckVhY2goZnVuY3Rpb24oc2lkZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaWRlICYmIHNpZGUucHJpY2UgIT09IHVuZGVmaW5lZCAmJiBzaWRlLnRpdGxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBxdHkgPSBzaWRlLnF1YW50aXR5ID8gcGFyc2VJbnQoc2lkZS5xdWFudGl0eSwgMTApIDogMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzTmFOKHF0eSkgfHwgcXR5IDwgMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXR5ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2lkZVByaWNlID0gcGFyc2VGbG9hdChzaWRlLnByaWNlKSB8fCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlc1RvdGFsICs9IHNpZGVQcmljZSAqIHF0eTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNpZGVFbnRyeSA9IHNpZGUudGl0bGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxdHkgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlRW50cnkgKz0gJyB4JyArIHF0eTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlRW50cnkgKz0gJyAoJyArIHNpZGVQcmljZS50b0ZpeGVkKDIpICsgJyAnICsgZ2V0V29vQ29tbWVyY2VDdXJyZW5jeVN5bWJvbCgpICsgJyknOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlRW50cmllcy5wdXNoKHNpZGVFbnRyeSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNpZGVzRGlzcGxheUh0bWwgPSBzaWRlRW50cmllcy5sZW5ndGggPyAnPGRpdiBjbGFzcz0iY2hlZmx5LWNhcnQtaXRlbS1zaWRlcyI+JyArIHNpZGVzTGFiZWwgKyAnICcgKyBzaWRlRW50cmllcy5qb2luKCcsICcpICsgJzwvZGl2PicgOiAnJzsKCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRvdGFsUHJpY2Ugd2FzIG5vdCBwcm92aWRlZCBieSBiYWNrZW5kLCBhZGQgc2lkZXMgbWFudWFsbHkKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVtLnRvdGFsUHJpY2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1Ub3RhbCArPSAoc2lkZXNUb3RhbCArIHNpemVDb3N0KSAqIGl0ZW0ucXVhbnRpdHk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zSHRtbCArPSAnPGRpdiBjbGFzcz0iY2hlZmx5LWNhcnQtaXRlbSIgZGF0YS1pbmRleD0iJyArIGluZGV4ICsgJyI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iY2hlZmx5LWNhcnQtaXRlbS1pbWFnZSI+JyArIGl0ZW0uaW1hZ2UgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iY2hlZmx5LWNhcnQtaXRlbS1pbmZvIj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iY2hlZmx5LWNhcnQtaXRlbS10aXRsZSI+JyArIGl0ZW0udGl0bGUgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZURpc3BsYXlIdG1sICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWRlc0Rpc3BsYXlIdG1sICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iY2hlZmx5LWNhcnQtaXRlbS1xdWFudGl0eS1jb250cm9scyI+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8YnV0dG9uIGNsYXNzPSJjaGVmbHktcXVhbnRpdHktYnRuIGNoZWZseS1xdWFudGl0eS1taW51cyInICsgKHNlbGYucGVuZGluZ1F1YW50aXR5VXBkYXRlcyA+IDAgPyAnIGRpc2FibGVkJyA6ICcnKSArICc+LTwvYnV0dG9uPicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGlucHV0IHR5cGU9Im51bWJlciIgY2xhc3M9ImNoZWZseS1xdWFudGl0eS1pbnB1dCIgdmFsdWU9IicgKyBpdGVtLnF1YW50aXR5ICsgJyIgbWluPSIxIiBtYXg9Ijk5IiBkYXRhLWluZGV4PSInICsgaW5kZXggKyAnIicgKyAoc2VsZi5wZW5kaW5nUXVhbnRpdHlVcGRhdGVzID4gMCA\/ICcgZGlzYWJsZWQnIDogJycpICsgJz4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImNoZWZseS1xdWFudGl0eS1idG4gY2hlZmx5LXF1YW50aXR5LXBsdXMiJyArIChzZWxmLnBlbmRpbmdRdWFudGl0eVVwZGF0ZXMgPiAwID8gJyBkaXNhYmxlZCcgOiAnJykgKyAnPis8L2J1dHRvbj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JzsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmNvbWJvX2NvbXBvbmVudHMgJiYgaXRlbS5jb21ib19jb21wb25lbnRzLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb21wVGl0bGVzID0gaXRlbS5jb21ib19jb21wb25lbnRzLm1hcChmdW5jdGlvbihjKSB7IHJldHVybiBjLnRpdGxlOyB9KS5qb2luKCcsICcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNIdG1sICs9ICc8ZGl2IGNsYXNzPSJjaGVmbHktY2FydC1pdGVtLWNvbWJvIj48c3Ryb25nPicgKyAiU2FzdGF2OiIgKyAnPC9zdHJvbmc+ICcgKyBjb21wVGl0bGVzICsgJzwvZGl2Pic7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zSHRtbCArPSAnPGRpdiBjbGFzcz0iY2hlZmx5LWNhcnQtaXRlbS1wcmljZSIgZGF0YS1pbmRleD0iJyArIGluZGV4ICsgJyI+JyArIGl0ZW1Ub3RhbC50b0ZpeGVkKDIpICsgJyAnICsgZ2V0V29vQ29tbWVyY2VDdXJyZW5jeVN5bWJvbCgpICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxidXR0b24gY2xhc3M9ImNoZWZseS1jYXJ0LWl0ZW0tcmVtb3ZlIj4mdGltZXM7PC9idXR0b24+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGl0ZW1zSHRtbCArPSAnPC9kaXY+JzsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBBZGQgZGlzY291bnQgZGlzcGxheSBpZiBhcHBsaWNhYmxlCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2FydERpc2NvdW50ICYmIHRoaXMuY2FydERpc2NvdW50LnR5cGUgPT09ICdjYXJ0X3RvdGFsX2Rpc2NvdW50JykgewogICAgICAgICAgICAgICAgICAgICAgICBpdGVtc0h0bWwgKz0gJzxkaXYgY2xhc3M9ImNoZWZseS1jYXJ0LWRpc2NvdW50Ij4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJjaGVmbHktY2FydC1kaXNjb3VudC1pbmZvIj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJjaGVmbHktY2FydC1kaXNjb3VudC10aXRsZSI+JyArICJQb3B1c3QgbmEga29ycHUiICsgJyAoJyArIHRoaXMuY2FydERpc2NvdW50LnBlcmNlbnQgKyAnJSk8L2Rpdj4nICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJjaGVmbHktY2FydC1kaXNjb3VudC10aHJlc2hvbGQiPicgKyAiTWluaW11bSIgKyAnOiAnICsgcGFyc2VGbG9hdCh0aGlzLmNhcnREaXNjb3VudC50aHJlc2hvbGQpLnRvRml4ZWQoMikgKyAnICcgKyBnZXRXb29Db21tZXJjZUN1cnJlbmN5U3ltYm9sKCkgKyAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+JyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iY2hlZmx5LWNhcnQtZGlzY291bnQtYW1vdW50Ij4tJyArIHBhcnNlRmxvYXQodGhpcy5jYXJ0RGlzY291bnQuZGlzY291bnRfYW1vdW50KS50b0ZpeGVkKDIpICsgJyAnICsgZ2V0V29vQ29tbWVyY2VDdXJyZW5jeVN5bWJvbCgpICsgJzwvZGl2PicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2Pic7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ1NldHRpbmcgY2FydCBjb250ZW50IEhUTUwnKTsKICAgICAgICAgICAgICAgICAgICAkKCcuY2hlZmx5LWNhcnQtbW9kYWwtY29udGVudCcpLmh0bWwoaXRlbXNIdG1sKTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBTZXQgdG90YWwgcHJpY2Ugd2l0aCBkaXNjb3VudCBhcHBsaWVkCiAgICAgICAgICAgICAgICAgICAgdmFyIGZpbmFsVG90YWwgPSB0b3RhbDsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jYXJ0RGlzY291bnQgJiYgdGhpcy5jYXJ0RGlzY291bnQubmV3X3RvdGFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsVG90YWwgPSB0aGlzLmNhcnREaXNjb3VudC5uZXdfdG90YWw7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIC8vY29uc29sZS5sb2coJ1NldHRpbmcgdG90YWwgcHJpY2U6JywgZmluYWxUb3RhbC50b0ZpeGVkKDIpKTsKICAgICAgICAgICAgICAgICAgICAkKCcuY2hlZmx5LWNhcnQtdG90YWwtcHJpY2UnKS50ZXh0KGZpbmFsVG90YWwudG9GaXhlZCgyKSArICcgJyArIGdldFdvb0NvbW1lcmNlQ3VycmVuY3lTeW1ib2woKSk7CiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnPT09IHVwZGF0ZUNhcnQgY29tcGxldGUgPT09Jyk7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBvcGVuQ2FydDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgLy9jb25zb2xlLmxvZygnb3BlbkNhcnQgY2FsbGVkJyk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVDYXJ0KCk7CiAgICAgICAgICAgICAgICAgICAgJCgnLmNoZWZseS1jYXJ0LW1vZGFsJykuYWRkQ2xhc3MoJ2FjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgICQoJy5jaGVmbHktY2FydC1vdmVybGF5JykuYWRkQ2xhc3MoJ2FjdGl2ZScpOwogICAgICAgICAgICAgICAgICAgICQoJ2JvZHknKS5jc3MoJ292ZXJmbG93JywgJ2hpZGRlbicpOwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgY2xvc2VDYXJ0OiBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAkKCcuY2hlZmx5LWNhcnQtbW9kYWwnKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgJCgnLmNoZWZseS1jYXJ0LW92ZXJsYXknKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgJCgnYm9keScpLmNzcygnb3ZlcmZsb3cnLCAnJyk7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB1cGRhdGVRdWFudGl0eTogZnVuY3Rpb24oaW5kZXgsIG5ld1F1YW50aXR5KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLml0ZW1zLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0gdGhpcy5pdGVtc1tpbmRleF07CiAgICAgICAgICAgICAgICAgICAgaWYgKCFpdGVtIHx8ICFpdGVtLmNhcnRfaXRlbV9rZXkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdRdWFudGl0eVVwZGF0ZXMgKz0gMTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZUNoZWNrb3V0QnV0dG9uKCk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgLy8gT3B0aW1pc3RpYyBVSSB1cGRhdGUKICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1zW2luZGV4XS5xdWFudGl0eSA9IG5ld1F1YW50aXR5OwogICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlQ2FydCgpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICAgICAgICAgICAgICAkLmFqYXgoewogICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwczovL3NuZWtob3VzZS5ycy93cC1hZG1pbi9hZG1pbi1hamF4LnBocCcsCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdQT1NUJywKICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnY2hlZmx5X3VwZGF0ZV9jYXJ0X3F1YW50aXR5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcnRfaXRlbV9rZXk6IGl0ZW0uY2FydF9pdGVtX2tleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHF1YW50aXR5OiBuZXdRdWFudGl0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbmNlOiAnMTA0ODdlNjA4YScKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzcG9uc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9hZEZyb21Xb29Db21tZXJjZShmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBlbmRpbmdRdWFudGl0eVVwZGF0ZXMgPSBNYXRoLm1heCgwLCBzZWxmLnBlbmRpbmdRdWFudGl0eVVwZGF0ZXMgLSAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZUNoZWNrb3V0QnV0dG9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi51cGRhdGVDYXJ0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKHhociwgc3RhdHVzLCBlcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2FkRnJvbVdvb0NvbW1lcmNlKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGVuZGluZ1F1YW50aXR5VXBkYXRlcyA9IE1hdGgubWF4KDAsIHNlbGYucGVuZGluZ1F1YW50aXR5VXBkYXRlcyAtIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlQ2hlY2tvdXRCdXR0b24oKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZUNhcnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB1cGRhdGVDaGVja291dEJ1dHRvbjogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyICRidG4gPSAkKCcuY2hlZmx5LWNhcnQtY2hlY2tvdXQnKTsKICAgICAgICAgICAgICAgICAgICB2YXIgJHF0eUlucHV0cyA9ICQoJy5jaGVmbHktcXVhbnRpdHktaW5wdXQsIC5jaGVmbHktcXVhbnRpdHktYnRuJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucGVuZGluZ1F1YW50aXR5VXBkYXRlcyA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJGJ0bi5wcm9wKCdkaXNhYmxlZCcsIHRydWUpLmFkZENsYXNzKCdjaGVmbHktY2hlY2tvdXQtZGlzYWJsZWQnKS50ZXh0KCJBXHUwMTdldXJpcmFuamUuLi4iKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHF0eUlucHV0cy5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRidG4ucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSkucmVtb3ZlQ2xhc3MoJ2NoZWZseS1jaGVja291dC1kaXNhYmxlZCcpLnRleHQoIklkaSBuYSBwbGFcdTAxMDdhbmplIik7CiAgICAgICAgICAgICAgICAgICAgICAgICRxdHlJbnB1dHMucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgY2hlY2tvdXQ6IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1zLmxlbmd0aCA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBhbGVydCgiVmFcdTAxNjFhIGtvcnBhIGplIHByYXpuYSEiKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wZW5kaW5nUXVhbnRpdHlVcGRhdGVzID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBhbGVydCgiU2FcdTAxMGRla2FqdGUgZGEgc2Uga29saVx1MDEwZGluYSBhXHUwMTdldXJpcmEuIik7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAnaHR0cHM6Ly9zbmVraG91c2UucnMvP3BhZ2VfaWQ9MTEnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9OwogICAgICAgICAgICAKICAgICAgICAgICAgJCgnLmNoZWZseS1mbG9hdGluZy1jYXJ0Jykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBjaGVmbHlDYXJ0Lm9wZW5DYXJ0KCk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAgICAgY2hlZmx5Q2FydC5sb2FkRnJvbVdvb0NvbW1lcmNlKCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAkKCcuY2hlZmx5LWNhcnQtb3ZlcmxheScpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgY2hlZmx5Q2FydC5jbG9zZUNhcnQoKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAkKCcuY2hlZmx5LWNhcnQtbW9kYWwtY2xvc2UnKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIGNoZWZseUNhcnQuY2xvc2VDYXJ0KCk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJy5jaGVmbHktY2FydC1pdGVtLXJlbW92ZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gJCh0aGlzKS5jbG9zZXN0KCcuY2hlZmx5LWNhcnQtaXRlbScpLmRhdGEoJ2luZGV4Jyk7CiAgICAgICAgICAgICAgICBjaGVmbHlDYXJ0LnJlbW92ZUl0ZW0oaW5kZXgpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuY2hlZmx5LXF1YW50aXR5LW1pbnVzJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5wcm9wKCdkaXNhYmxlZCcpKSByZXR1cm47CiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSAkKHRoaXMpLnNpYmxpbmdzKCcuY2hlZmx5LXF1YW50aXR5LWlucHV0JykuZGF0YSgnaW5kZXgnKTsKICAgICAgICAgICAgICAgIHZhciBjdXJyZW50UXR5ID0gcGFyc2VJbnQoJCh0aGlzKS5zaWJsaW5ncygnLmNoZWZseS1xdWFudGl0eS1pbnB1dCcpLnZhbCgpKTsKICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UXR5ID4gMSkgewogICAgICAgICAgICAgICAgICAgIGNoZWZseUNhcnQudXBkYXRlUXVhbnRpdHkoaW5kZXgsIGN1cnJlbnRRdHkgLSAxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnLmNoZWZseS1xdWFudGl0eS1wbHVzJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5wcm9wKCdkaXNhYmxlZCcpKSByZXR1cm47CiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSAkKHRoaXMpLnNpYmxpbmdzKCcuY2hlZmx5LXF1YW50aXR5LWlucHV0JykuZGF0YSgnaW5kZXgnKTsKICAgICAgICAgICAgICAgIHZhciBjdXJyZW50UXR5ID0gcGFyc2VJbnQoJCh0aGlzKS5zaWJsaW5ncygnLmNoZWZseS1xdWFudGl0eS1pbnB1dCcpLnZhbCgpKTsKICAgICAgICAgICAgICAgIGlmIChjdXJyZW50UXR5IDwgOTkpIHsKICAgICAgICAgICAgICAgICAgICBjaGVmbHlDYXJ0LnVwZGF0ZVF1YW50aXR5KGluZGV4LCBjdXJyZW50UXR5ICsgMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAKICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NoYW5nZScsICcuY2hlZmx5LXF1YW50aXR5LWlucHV0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBpZiAoJCh0aGlzKS5wcm9wKCdkaXNhYmxlZCcpKSByZXR1cm47CiAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSAkKHRoaXMpLmRhdGEoJ2luZGV4Jyk7CiAgICAgICAgICAgICAgICB2YXIgbmV3UXR5ID0gcGFyc2VJbnQoJCh0aGlzKS52YWwoKSk7CiAgICAgICAgICAgICAgICBpZiAobmV3UXR5ID49IDEgJiYgbmV3UXR5IDw9IDk5KSB7CiAgICAgICAgICAgICAgICAgICAgY2hlZmx5Q2FydC51cGRhdGVRdWFudGl0eShpbmRleCwgbmV3UXR5KTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS52YWwoY2hlZmx5Q2FydC5pdGVtc1tpbmRleF0ucXVhbnRpdHkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgICQoJy5jaGVmbHktY2FydC1jaGVja291dCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgY2hlZmx5Q2FydC5jaGVja291dCgpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIFN0aWNreSBuYXYgc2Nyb2xsIGJlaGF2aW9yCiAgICAgICAgICAgIHZhciAkc3RpY2t5TmF2ID0gJCgnLmNoZWZseS1zdGlja3ktbmF2Jyk7CiAgICAgICAgICAgIGlmICgkc3RpY2t5TmF2Lmxlbmd0aCkgewogICAgICAgICAgICAgICAgdmFyIG5hdk9mZnNldCA9ICRzdGlja3lOYXYub3V0ZXJIZWlnaHQoKSArIDEwOwoKICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLm9uKCdjbGljaycsICcuY2hlZmx5LW5hdi1saW5rJywgZnVuY3Rpb24oZSkgewogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgICAgICB2YXIgJGNsaWNrZWRMaW5rID0gJCh0aGlzKTsKICAgICAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gJGNsaWNrZWRMaW5rLmRhdGEoJ3RhcmdldCcpOwogICAgICAgICAgICAgICAgICAgIHZhciAkdGFyZ2V0ID0gJCgnIycgKyB0YXJnZXQpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJHRhcmdldC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJCgnaHRtbCwgYm9keScpLmFuaW1hdGUoewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9wOiAkdGFyZ2V0Lm9mZnNldCgpLnRvcCAtIG5hdk9mZnNldAogICAgICAgICAgICAgICAgICAgICAgICB9LCA0MDApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgLy8gSG9yaXpvbnRhbCBzY3JvbGwgdG8gY2VudGVyIGNsaWNrZWQgaXRlbQogICAgICAgICAgICAgICAgICAgIHZhciAkbmF2SW5uZXIgPSAkc3RpY2t5TmF2LmZpbmQoJy5jaGVmbHktc3RpY2t5LW5hdi1pbm5lcicpOwogICAgICAgICAgICAgICAgICAgIHZhciBuYXZXaWR0aCA9ICRzdGlja3lOYXYud2lkdGgoKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbGlua0xlZnQgPSAkY2xpY2tlZExpbmsucG9zaXRpb24oKS5sZWZ0OwogICAgICAgICAgICAgICAgICAgIHZhciBsaW5rV2lkdGggPSAkY2xpY2tlZExpbmsub3V0ZXJXaWR0aCgpOwogICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGxMZWZ0ID0gJHN0aWNreU5hdi5zY3JvbGxMZWZ0KCk7CgogICAgICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBuZXcgc2Nyb2xsIHBvc2l0aW9uIHRvIGNlbnRlciB0aGUgaXRlbQogICAgICAgICAgICAgICAgICAgIHZhciBjZW50ZXJPZmZzZXQgPSAobmF2V2lkdGggLyAyKSAtIChsaW5rV2lkdGggLyAyKTsKICAgICAgICAgICAgICAgICAgICB2YXIgbmV3U2Nyb2xsTGVmdCA9IHNjcm9sbExlZnQgKyBsaW5rTGVmdCAtIGNlbnRlck9mZnNldDsKCiAgICAgICAgICAgICAgICAgICAgJG5hdklubmVyLnBhcmVudCgpLmFuaW1hdGUoewogICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxMZWZ0OiBuZXdTY3JvbGxMZWZ0CiAgICAgICAgICAgICAgICAgICAgfSwgMzAwKTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgIHZhciAkbmF2TGlua3MgPSAkKCcuY2hlZmx5LW5hdi1saW5rJyk7CiAgICAgICAgICAgICAgICB2YXIgJHNlY3Rpb25zID0gJG5hdkxpbmtzLm1hcChmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgnIycgKyAkKHRoaXMpLmRhdGEoJ3RhcmdldCcpKVswXTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICQod2luZG93KS5vbignc2Nyb2xsJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHNjcm9sbFBvcyA9ICQod2luZG93KS5zY3JvbGxUb3AoKSArIG5hdk9mZnNldCArIDUwOwogICAgICAgICAgICAgICAgICAgIHZhciBjdXJyZW50SWQgPSAnJzsKCiAgICAgICAgICAgICAgICAgICAgJHNlY3Rpb25zLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkc2VjdGlvbiA9ICQodGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkc2VjdGlvbi5sZW5ndGggJiYgJHNlY3Rpb24ub2Zmc2V0KCkudG9wIDw9IHNjcm9sbFBvcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudElkID0gJHNlY3Rpb24uYXR0cignaWQnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICAgICAkbmF2TGlua3MucmVtb3ZlQ2xhc3MoJ2NoZWZseS1uYXYtYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRJZCkgewogICAgICAgICAgICAgICAgICAgICAgICAkbmF2TGlua3MuZmlsdGVyKCdbZGF0YS10YXJnZXQ9IicgKyBjdXJyZW50SWQgKyAnIl0nKS5hZGRDbGFzcygnY2hlZmx5LW5hdi1hY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICB9KTsKICAgICAgICA=');\n            document.currentScript.after(s);\n        })();\n        <\/script>\n         <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-17","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/snekhouse.rs\/index.php?rest_route=\/wp\/v2\/pages\/17","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/snekhouse.rs\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/snekhouse.rs\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/snekhouse.rs\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/snekhouse.rs\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=17"}],"version-history":[{"count":7,"href":"https:\/\/snekhouse.rs\/index.php?rest_route=\/wp\/v2\/pages\/17\/revisions"}],"predecessor-version":[{"id":50,"href":"https:\/\/snekhouse.rs\/index.php?rest_route=\/wp\/v2\/pages\/17\/revisions\/50"}],"wp:attachment":[{"href":"https:\/\/snekhouse.rs\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=17"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}