[fusion_builder_container hundred_percent=”no” hundred_percent_height=”no” hundred_percent_height_scroll=”no” hundred_percent_height_center_content=”yes” equal_height_columns=”no” menu_anchor=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” status=”published” publish_date=”” class=”” id=”” background_color=”” background_image=”” background_position=”center center” background_repeat=”no-repeat” fade=”no” background_parallax=”none” enable_mobile=”no” parallax_speed=”0.3″ video_mp4=”” video_webm=”” video_ogv=”” video_url=”” video_aspect_ratio=”16:9″ video_loop=”yes” video_mute=”yes” video_preview_image=”” border_size=”” border_color=”” border_style=”solid” margin_top=”” margin_bottom=”” padding_top=”” padding_right=”” padding_bottom=”” padding_left=””][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ spacing=”” center_content=”no” link=”” target=”_self” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” background_color=”” background_image=”” background_image_id=”” background_position=”left top” background_repeat=”no-repeat” hover_type=”none” border_size=”0″ border_color=”” border_style=”solid” border_position=”all” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_youtube id=”Lcia7HyT_5o?rel=0″ alignment=”center” width=”1200″ height=”650″ autoplay=”false” api_params=”&rel=0″ hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” css_id=”” /][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container][fusion_builder_container hundred_percent=”no” hundred_percent_height=”no” hundred_percent_height_scroll=”no” hundred_percent_height_center_content=”yes” equal_height_columns=”no” menu_anchor=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” status=”published” publish_date=”” class=”” id=”” background_color=”” background_image=”” background_position=”center center” background_repeat=”no-repeat” fade=”no” background_parallax=”none” enable_mobile=”no” parallax_speed=”0.3″ video_mp4=”” video_webm=”” video_ogv=”” video_url=”” video_aspect_ratio=”16:9″ video_loop=”yes” video_mute=”yes” video_preview_image=”” border_size=”” border_color=”” border_style=”solid” margin_top=”” margin_bottom=”” padding_top=”” padding_right=”” padding_bottom=”” padding_left=””][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ spacing=”” center_content=”no” link=”” target=”_self” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” background_color=”” background_image=”” background_image_id=”” background_position=”left top” background_repeat=”no-repeat” hover_type=”none” border_size=”0″ border_color=”” border_style=”solid” border_position=”all” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_imageframe image_id=”1831|full” max_width=”” style_type=”” blur=”” stylecolor=”” hover_type=”none” bordersize=”” bordercolor=”” borderradius=”” align=”none” lightbox=”no” gallery_id=”” lightbox_image=”” lightbox_image_id=”” alt=”” link=”” linktarget=”_self” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=””]https://www.namarealestate.it/wp-content/uploads/2019/03/fronte.jpg[/fusion_imageframe][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container][fusion_builder_container hundred_percent=”no” hundred_percent_height=”no” hundred_percent_height_scroll=”no” hundred_percent_height_center_content=”yes” equal_height_columns=”no” menu_anchor=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” status=”published” publish_date=”” class=”” id=”” background_color=”” background_image=”” background_position=”center center” background_repeat=”no-repeat” fade=”no” background_parallax=”none” enable_mobile=”no” parallax_speed=”0.3″ video_mp4=”” video_webm=”” video_ogv=”” video_url=”” video_aspect_ratio=”16:9″ video_loop=”yes” video_mute=”yes” video_preview_image=”” border_size=”” border_color=”” border_style=”solid” margin_top=”” margin_bottom=”” padding_top=”” padding_right=”” padding_bottom=”” padding_left=””][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ spacing=”” center_content=”no” link=”” target=”_self” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” background_color=”” background_image=”” background_image_id=”” background_position=”left top” background_repeat=”no-repeat” hover_type=”none” border_size=”0″ border_color=”” border_style=”solid” border_position=”all” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_counters_box columns=”3″ color=”#0224e5″ title_size=”60px” icon=”” icon_size=”” icon_top=”” body_color=”#3da553″ body_size=”20px” border_color=”rgba(224,222,222,0)” animation_offset=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=””][fusion_counter_box value=”100″ delimiter=”” unit=”%” unit_pos=”prefix” icon=”fa-users fas” direction=”up”]Ci sostituiremo a te al 100%[/fusion_counter_box][fusion_counter_box value=”5000″ delimiter=”” unit=”” unit_pos=”prefix” icon=”fa-bullhorn fas” direction=”up”]Agenzie in tutto il mondo per promuovere casa tua[/fusion_counter_box][fusion_counter_box value=”24″ delimiter=”” unit=”H” unit_pos=”prefix” icon=”fa-phone-volume fas” direction=”up”]Potrai sempre controllare cosa succede a casa tua[/fusion_counter_box][/fusion_counters_box][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container][fusion_builder_container hundred_percent=”no” hundred_percent_height=”no” hundred_percent_height_scroll=”no” hundred_percent_height_center_content=”yes” equal_height_columns=”no” menu_anchor=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” status=”published” publish_date=”” class=”” id=”” background_color=”” background_image=”” background_position=”center center” background_repeat=”no-repeat” fade=”no” background_parallax=”none” enable_mobile=”no” parallax_speed=”0.3″ video_mp4=”” video_webm=”” video_ogv=”” video_url=”” video_aspect_ratio=”16:9″ video_loop=”yes” video_mute=”yes” video_preview_image=”” border_size=”” border_color=”” border_style=”solid” margin_top=”” margin_bottom=”” padding_top=”” padding_right=”” padding_bottom=”” padding_left=””][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ spacing=”” center_content=”no” link=”” target=”_self” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” background_color=”” background_image=”” background_image_id=”” background_position=”left top” background_repeat=”no-repeat” hover_type=”none” border_size=”0″ border_color=”” border_style=”solid” border_position=”all” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_code]PHN0eWxlPgogI19mb3JtXzE1XyB7IGZvbnQtc2l6ZToxNHB4OyBsaW5lLWhlaWdodDoxLjY7IGZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IG1hcmdpbjowOyB9CiAjX2Zvcm1fMTVfICogeyBvdXRsaW5lOjA7IH0KIC5fZm9ybV9oaWRlIHsgZGlzcGxheTpub25lOyB2aXNpYmlsaXR5OmhpZGRlbjsgfQogLl9mb3JtX3Nob3cgeyBkaXNwbGF5OmJsb2NrOyB2aXNpYmlsaXR5OnZpc2libGU7IH0KICNfZm9ybV8xNV8uX2Zvcm0tdG9wIHsgdG9wOjA7IH0KICNfZm9ybV8xNV8uX2Zvcm0tYm90dG9tIHsgYm90dG9tOjA7IH0KICNfZm9ybV8xNV8uX2Zvcm0tbGVmdCB7IGxlZnQ6MDsgfQogI19mb3JtXzE1Xy5fZm9ybS1yaWdodCB7IHJpZ2h0OjA7IH0KICNfZm9ybV8xNV8gaW5wdXRbdHlwZT0idGV4dCJdLCNfZm9ybV8xNV8gaW5wdXRbdHlwZT0iZGF0ZSJdLCNfZm9ybV8xNV8gdGV4dGFyZWEgeyBwYWRkaW5nOjZweDsgaGVpZ2h0OmF1dG87IGJvcmRlcjojOTc5Nzk3IDFweCBzb2xpZDsgYm9yZGVyLXJhZGl1czo0cHg7IGNvbG9yOiMwMDAgIWltcG9ydGFudDsgZm9udC1zaXplOjE0cHg7IC13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94OyAtbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgYm94LXNpemluZzpib3JkZXItYm94OyB9CiAjX2Zvcm1fMTVfIHRleHRhcmVhIHsgcmVzaXplOm5vbmU7IH0KICNfZm9ybV8xNV8gLl9zdWJtaXQgeyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgY3Vyc29yOnBvaW50ZXI7IGZvbnQtZmFtaWx5OmFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6MTRweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6IzEwNjYwMSAhaW1wb3J0YW50OyBib3JkZXI6MnB4IHNvbGlkICMzNWE2OGMgIWltcG9ydGFudDsgLW1vei1ib3JkZXItcmFkaXVzOjEwcHggIWltcG9ydGFudDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjEwcHggIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czoxMHB4ICFpbXBvcnRhbnQ7IGNvbG9yOiNmZmYgIWltcG9ydGFudDsgcGFkZGluZzoxMXB4ICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8xNV8gLl9jbG9zZS1pY29uIHsgY3Vyc29yOnBvaW50ZXI7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCdodHRwczovL2QyMjZhajRhbzF0NjFxLmNsb3VkZnJvbnQubmV0L2VzZmt5amgxdV9mb3Jtcy1jbG9zZS1kYXJrLnBuZycpOyBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7IGJhY2tncm91bmQtc2l6ZToxNC4ycHggMTQuMnB4OyBwb3NpdGlvbjphYnNvbHV0ZTsgZGlzcGxheTpibG9jazsgdG9wOjExcHg7IHJpZ2h0OjlweDsgb3ZlcmZsb3c6aGlkZGVuOyB3aWR0aDoxNi4ycHg7IGhlaWdodDoxNi4ycHg7IH0KICNfZm9ybV8xNV8gLl9jbG9zZS1pY29uOmJlZm9yZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB9CiAjX2Zvcm1fMTVfIC5fZm9ybS1ib2R5IHsgbWFyZ2luLWJvdHRvbTozMHB4OyB9CiAjX2Zvcm1fMTVfIC5fZm9ybS1pbWFnZS1sZWZ0IHsgd2lkdGg6MTUwcHg7IGZsb2F0OmxlZnQ7IH0KICNfZm9ybV8xNV8gLl9mb3JtLWNvbnRlbnQtcmlnaHQgeyBtYXJnaW4tbGVmdDoxNjRweDsgfQogI19mb3JtXzE1XyAuX2Zvcm0tYnJhbmRpbmcgeyBjb2xvcjojZmZmOyBmb250LXNpemU6MTBweDsgY2xlYXI6Ym90aDsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW4tdG9wOjMwcHg7IGZvbnQtd2VpZ2h0OjEwMDsgfQogI19mb3JtXzE1XyAuX2Zvcm0tYnJhbmRpbmcgLl9sb2dvIHsgZGlzcGxheTpibG9jazsgd2lkdGg6MTMwcHg7IGhlaWdodDoxNHB4OyBtYXJnaW4tdG9wOjZweDsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2h0dHBzOi8vZDIyNmFqNGFvMXQ2MXEuY2xvdWRmcm9udC5uZXQvaGg5dWpxZ3Y1X2FjbG9nb19saS5wbmcnKTsgYmFja2dyb3VuZC1zaXplOjEzMHB4IGF1dG87IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgfQogI19mb3JtXzE1XyAuX2Zvcm0tbGFiZWwsI19mb3JtXzE1XyAuX2Zvcm1fZWxlbWVudCAuX2Zvcm0tbGFiZWwgeyBmb250LXdlaWdodDpib2xkOyBtYXJnaW4tYm90dG9tOjVweDsgZGlzcGxheTpibG9jazsgfQogI19mb3JtXzE1Xy5fZGFyayAuX2Zvcm0tYnJhbmRpbmcgeyBjb2xvcjojMzMzOyB9CiAjX2Zvcm1fMTVfLl9kYXJrIC5fZm9ybS1icmFuZGluZyAuX2xvZ28geyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnaHR0cHM6Ly9kMjI2YWo0YW8xdDYxcS5jbG91ZGZyb250Lm5ldC9qZnRxMmM4c19hY2xvZ29fZGsucG5nJyk7IH0KICNfZm9ybV8xNV8gLl9mb3JtX2VsZW1lbnQgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luLWJvdHRvbToxMHB4OyBmb250LXNpemU6MDsgbWF4LXdpZHRoOjEwMCU7IH0KICNfZm9ybV8xNV8gLl9mb3JtX2VsZW1lbnQgKiB7IGZvbnQtc2l6ZToxNHB4OyB9CiAjX2Zvcm1fMTVfIC5fZm9ybV9lbGVtZW50Ll9jbGVhciB7IGNsZWFyOmJvdGg7IHdpZHRoOjEwMCU7IGZsb2F0Om5vbmU7IH0KICNfZm9ybV8xNV8gLl9mb3JtX2VsZW1lbnQuX2NsZWFyOmFmdGVyIHsgY2xlYXI6bGVmdDsgfQogI19mb3JtXzE1XyAuX2Zvcm1fZWxlbWVudCBpbnB1dFt0eXBlPSJ0ZXh0Il0sI19mb3JtXzE1XyAuX2Zvcm1fZWxlbWVudCBpbnB1dFt0eXBlPSJkYXRlIl0sI19mb3JtXzE1XyAuX2Zvcm1fZWxlbWVudCBzZWxlY3QsI19mb3JtXzE1XyAuX2Zvcm1fZWxlbWVudCB0ZXh0YXJlYTpub3QoLmctcmVjYXB0Y2hhLXJlc3BvbnNlKSB7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjEwMCU7IC13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94OyAtbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgYm94LXNpemluZzpib3JkZXItYm94OyB9CiAjX2Zvcm1fMTVfIC5fZmllbGQtd3JhcHBlciB7IHBvc2l0aW9uOnJlbGF0aXZlOyB9CiAjX2Zvcm1fMTVfIC5faW5saW5lLXN0eWxlIHsgZmxvYXQ6bGVmdDsgfQogI19mb3JtXzE1XyAuX2lubGluZS1zdHlsZSBpbnB1dFt0eXBlPSJ0ZXh0Il0geyB3aWR0aDoxNTBweDsgfQogI19mb3JtXzE1XyAuX2lubGluZS1zdHlsZTpub3QoLl9jbGVhcikgKyAuX2lubGluZS1zdHlsZTpub3QoLl9jbGVhcikgeyBtYXJnaW4tbGVmdDoyMHB4OyB9CiAjX2Zvcm1fMTVfIC5fZm9ybV9lbGVtZW50IGltZy5fZm9ybS1pbWFnZSB7IG1heC13aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMTVfIC5fY2xlYXItZWxlbWVudCB7IGNsZWFyOmxlZnQ7IH0KICNfZm9ybV8xNV8gLl9mdWxsX3dpZHRoIHsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzE1XyAuX2Zvcm1fZnVsbF9maWVsZCB7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjEwMCU7IG1hcmdpbi1ib3R0b206MTBweDsgfQogI19mb3JtXzE1XyBpbnB1dFt0eXBlPSJ0ZXh0Il0uX2hhc19lcnJvciwjX2Zvcm1fMTVfIHRleHRhcmVhLl9oYXNfZXJyb3IgeyBib3JkZXI6I2YzN2M3YiAxcHggc29saWQ7IH0KICNfZm9ybV8xNV8gaW5wdXRbdHlwZT0iY2hlY2tib3giXS5faGFzX2Vycm9yIHsgb3V0bGluZTojZjM3YzdiIDFweCBzb2xpZDsgfQogI19mb3JtXzE1XyAuX2Vycm9yIHsgZGlzcGxheTpibG9jazsgcG9zaXRpb246YWJzb2x1dGU7IGZvbnQtc2l6ZToxNHB4OyB6LWluZGV4OjEwMDAwMDAxOyB9CiAjX2Zvcm1fMTVfIC5fZXJyb3IuX2Fib3ZlIHsgcGFkZGluZy1ib3R0b206NHB4OyBib3R0b206MzlweDsgcmlnaHQ6MDsgfQogI19mb3JtXzE1XyAuX2Vycm9yLl9iZWxvdyB7IHBhZGRpbmctdG9wOjRweDsgdG9wOjEwMCU7IHJpZ2h0OjA7IH0KICNfZm9ybV8xNV8gLl9lcnJvci5fYWJvdmUgLl9lcnJvci1hcnJvdyB7IGJvdHRvbTowOyByaWdodDoxNXB4OyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6NXB4IHNvbGlkICNmMzdjN2I7IH0KICNfZm9ybV8xNV8gLl9lcnJvci5fYmVsb3cgLl9lcnJvci1hcnJvdyB7IHRvcDowOyByaWdodDoxNXB4OyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1ib3R0b206NXB4IHNvbGlkICNmMzdjN2I7IH0KICNfZm9ybV8xNV8gLl9lcnJvci1pbm5lciB7IHBhZGRpbmc6OHB4IDEycHg7IGJhY2tncm91bmQtY29sb3I6I2YzN2M3YjsgZm9udC1zaXplOjE0cHg7IGZvbnQtZmFtaWx5OmFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyB9CiAjX2Zvcm1fMTVfIC5fZXJyb3ItaW5uZXIuX2Zvcm1fZXJyb3IgeyBtYXJnaW4tYm90dG9tOjVweDsgdGV4dC1hbGlnbjpsZWZ0OyB9CiAjX2Zvcm1fMTVfIC5fYnV0dG9uLXdyYXBwZXIgLl9lcnJvci1pbm5lci5fZm9ybV9lcnJvciB7IHBvc2l0aW9uOnN0YXRpYzsgfQogI19mb3JtXzE1XyAuX2Vycm9yLWlubmVyLl9ub19hcnJvdyB7IG1hcmdpbi1ib3R0b206MTBweDsgfQogI19mb3JtXzE1XyAuX2Vycm9yLWFycm93IHsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjA7IGhlaWdodDowOyB9CiAjX2Zvcm1fMTVfIC5fZXJyb3ItaHRtbCB7IG1hcmdpbi1ib3R0b206MTBweDsgfQogLnBpa2Etc2luZ2xlIHsgei1pbmRleDoxMDAwMDAwMSAhaW1wb3J0YW50OyB9CiBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjMyMHB4KSBhbmQgKG1heC13aWR0aDo2NjdweCkgeyA6Oi13ZWJraXQtc2Nyb2xsYmFyIHsgZGlzcGxheTpub25lOyB9CiAjX2Zvcm1fMTVfIHsgbWFyZ2luOjA7IHdpZHRoOjEwMCU7IG1pbi13aWR0aDoxMDAlOyBtYXgtd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyB9CiAjX2Zvcm1fMTVfICogeyAtd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgLW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgZm9udC1zaXplOjFlbTsgfQogI19mb3JtXzE1XyAuX2Zvcm0tY29udGVudCB7IG1hcmdpbjowOyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMTVfIC5fZm9ybS1pbm5lciB7IGRpc3BsYXk6YmxvY2s7IG1pbi13aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMTVfIC5fZm9ybS10aXRsZSwjX2Zvcm1fMTVfIC5faW5saW5lLXN0eWxlIHsgbWFyZ2luLXRvcDowOyBtYXJnaW4tcmlnaHQ6MDsgbWFyZ2luLWxlZnQ6MDsgfQogI19mb3JtXzE1XyAuX2Zvcm0tdGl0bGUgeyBmb250LXNpemU6MS4yZW07IH0KICNfZm9ybV8xNV8gLl9mb3JtX2VsZW1lbnQgeyBtYXJnaW46MCAwIDIwcHg7IHBhZGRpbmc6MDsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzE1XyAuX2Zvcm0tZWxlbWVudCwjX2Zvcm1fMTVfIC5faW5saW5lLXN0eWxlLCNfZm9ybV8xNV8gaW5wdXRbdHlwZT0idGV4dCJdLCNfZm9ybV8xNV8gbGFiZWwsI19mb3JtXzE1XyBwLCNfZm9ybV8xNV8gdGV4dGFyZWE6bm90KC5nLXJlY2FwdGNoYS1yZXNwb25zZSkgeyBmbG9hdDpub25lOyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMTVfIC5fcm93Ll9jaGVja2JveC1yYWRpbyBsYWJlbCB7IGRpc3BsYXk6aW5saW5lOyB9CiAjX2Zvcm1fMTVfIC5fcm93LCNfZm9ybV8xNV8gcCwjX2Zvcm1fMTVfIGxhYmVsIHsgbWFyZ2luLWJvdHRvbTowLjdlbTsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzE1XyAuX3JvdyBpbnB1dFt0eXBlPSJjaGVja2JveCJdLCNfZm9ybV8xNV8gLl9yb3cgaW5wdXRbdHlwZT0icmFkaW8iXSB7IG1hcmdpbjowICFpbXBvcnRhbnQ7IHZlcnRpY2FsLWFsaWduOm1pZGRsZSAhaW1wb3J0YW50OyB9CiAjX2Zvcm1fMTVfIC5fcm93IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gKyBzcGFuIGxhYmVsIHsgZGlzcGxheTppbmxpbmU7IH0KICNfZm9ybV8xNV8gLl9yb3cgc3BhbiBsYWJlbCB7IG1hcmdpbjowICFpbXBvcnRhbnQ7IHdpZHRoOmluaXRpYWwgIWltcG9ydGFudDsgdmVydGljYWwtYWxpZ246bWlkZGxlICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8xNV8gLl9mb3JtLWltYWdlIHsgbWF4LXdpZHRoOjEwMCU7IGhlaWdodDphdXRvICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8xNV8gaW5wdXRbdHlwZT0idGV4dCJdIHsgcGFkZGluZy1sZWZ0OjEwcHg7IHBhZGRpbmctcmlnaHQ6MTBweDsgZm9udC1zaXplOjE2cHg7IGxpbmUtaGVpZ2h0OjEuM2VtOyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgfQogI19mb3JtXzE1XyBpbnB1dFt0eXBlPSJyYWRpbyJdLCNfZm9ybV8xNV8gaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB3aWR0aDoxLjNlbTsgaGVpZ2h0OjEuM2VtOyBmb250LXNpemU6MWVtOyBtYXJnaW46MCAwLjNlbSAwIDA7IHZlcnRpY2FsLWFsaWduOmJhc2VsaW5lOyB9CiAjX2Zvcm1fMTVfIGJ1dHRvblt0eXBlPSJzdWJtaXQiXSB7IHBhZGRpbmc6MjBweDsgZm9udC1zaXplOjEuNWVtOyB9CiAjX2Zvcm1fMTVfIC5faW5saW5lLXN0eWxlIHsgbWFyZ2luOjIwcHggMCAwICFpbXBvcnRhbnQ7IH0KIH0KICNfZm9ybV8xNV8geyBwb3NpdGlvbjpyZWxhdGl2ZTsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW46MjVweCBhdXRvIDA7IHBhZGRpbmc6MjBweDsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7ICp6b29tOjE7IGJhY2tncm91bmQ6dHJhbnNwYXJlbnQgIWltcG9ydGFudDsgYm9yZGVyOjBweCBzb2xpZCAjYjBiMGIwICFpbXBvcnRhbnQ7IC1tb3otYm9yZGVyLXJhZGl1czoxNXB4ICFpbXBvcnRhbnQ7IC13ZWJraXQtYm9yZGVyLXJhZGl1czoxNXB4ICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MTVweCAhaW1wb3J0YW50OyBjb2xvcjojM2IzYjNiICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8xNV8gLl9mb3JtLXRpdGxlIHsgZm9udC1zaXplOjIycHg7IGxpbmUtaGVpZ2h0OjIycHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWFyZ2luLWJvdHRvbTowOyB9CiAjX2Zvcm1fMTVfOmJlZm9yZSwjX2Zvcm1fMTVfOmFmdGVyIHsgY29udGVudDoiICI7IGRpc3BsYXk6dGFibGU7IH0KICNfZm9ybV8xNV86YWZ0ZXIgeyBjbGVhcjpib3RoOyB9CiAjX2Zvcm1fMTVfLl9pbmxpbmUtc3R5bGUgeyB3aWR0aDphdXRvOyBkaXNwbGF5OmlubGluZS1ibG9jazsgfQogI19mb3JtXzE1Xy5faW5saW5lLXN0eWxlIGlucHV0W3R5cGU9InRleHQiXSwjX2Zvcm1fMTVfLl9pbmxpbmUtc3R5bGUgaW5wdXRbdHlwZT0iZGF0ZSJdIHsgcGFkZGluZzoxMHB4IDEycHg7IH0KICNfZm9ybV8xNV8uX2lubGluZS1zdHlsZSBidXR0b24uX2lubGluZS1zdHlsZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6MjdweDsgfQogI19mb3JtXzE1Xy5faW5saW5lLXN0eWxlIHAgeyBtYXJnaW46MDsgfQogI19mb3JtXzE1Xy5faW5saW5lLXN0eWxlIC5fYnV0dG9uLXdyYXBwZXIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luOjI3cHggMTIuNXB4IDAgMjBweDsgfQogI19mb3JtXzE1XyAuX2Zvcm0tdGhhbmsteW91IHsgcG9zaXRpb246cmVsYXRpdmU7IGxlZnQ6MDsgcmlnaHQ6MDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxOHB4OyB9CiBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjMyMHB4KSBhbmQgKG1heC13aWR0aDo2NjdweCkgeyAjX2Zvcm1fMTVfLl9pbmxpbmUtZm9ybS5faW5saW5lLXN0eWxlIC5faW5saW5lLXN0eWxlLl9idXR0b24td3JhcHBlciB7IG1hcmdpbi10b3A6MjBweCAhaW1wb3J0YW50OyBtYXJnaW4tbGVmdDowICFpbXBvcnRhbnQ7IH0KIH0KPC9zdHlsZT4KPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+CiAgPGZvcm0gbWV0aG9kPSJQT1NUIiBhY3Rpb249Imh0dHBzOi8vbmFtYXJlYWxlc3RhdGU2OTk2OC5hY3RpdmVob3N0ZWQuY29tL3Byb2MucGhwIiBpZD0iX2Zvcm1fMTVfIiBjbGFzcz0iX2Zvcm0gX2Zvcm1fMTUgX2lubGluZS1mb3JtIF9pbmxpbmUtc3R5bGUgX2RhcmsiIG5vdmFsaWRhdGU+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ1IiB2YWx1ZT0iMTUiIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJmIiB2YWx1ZT0iMTUiIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJzIiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYyIgdmFsdWU9IjAiIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtIiB2YWx1ZT0iMCIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdCIgdmFsdWU9InN1YiIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InYiIHZhbHVlPSIyIiAvPgogICAgPGRpdiBjbGFzcz0iX2Zvcm0tY29udGVudCI+CiAgICAgIDxkaXYgY2xhc3M9Il9mb3JtX2VsZW1lbnQgX3g5OTExNjg4MyBfaW5saW5lLXN0eWxlIF9jbGVhciIgPgogICAgICAgIDxkaXYgY2xhc3M9Il9odG1sLWNvZGUiPgogICAgICAgICAgPHA+CiAgICAgICAgICA8L3A+CiAgICAgICAgICA8aDI+CiAgICAgICAgICAgIFZvcnJlaSBlc3NlcmUgY29udGF0dGF0byBwZXIgbWFnZ2lvcmkgaW5mb3JtYXppb25pIHN1IHF1ZXN0byBzZXJ2aXppbwogICAgICAgICAgPC9oMj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Il9mb3JtX2VsZW1lbnQgX3gzOTYzMTIzMCBfaW5saW5lLXN0eWxlICIgPgogICAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgICAgTm9tZSBlIENvZ25vbWUqCiAgICAgICAgPC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJfZmllbGQtd3JhcHBlciI+CiAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZmlyc3RuYW1lIiBwbGFjZWhvbGRlcj0iRGlnaXRhIGlsIHR1byBub21lIiByZXF1aXJlZC8+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF94MzE4MTE1MjAgX2lubGluZS1zdHlsZSAiID4KICAgICAgICA8bGFiZWwgY2xhc3M9Il9mb3JtLWxhYmVsIj4KICAgICAgICAgIFRlbGVmb25vKgogICAgICAgIDwvbGFiZWw+CiAgICAgICAgPGRpdiBjbGFzcz0iX2ZpZWxkLXdyYXBwZXIiPgogICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InBob25lIiBwbGFjZWhvbGRlcj0iRGlnaXRhIGlsIG51bWVybyBkaSB0ZWxlZm9ubyIgcmVxdWlyZWQvPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iX2Zvcm1fZWxlbWVudCBfeDYyMTU1MDg2IF9pbmxpbmUtc3R5bGUgIiA+CiAgICAgICAgPGxhYmVsIGNsYXNzPSJfZm9ybS1sYWJlbCI+CiAgICAgICAgICBFbWFpbCoKICAgICAgICA8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9Il9maWVsZC13cmFwcGVyIj4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJlbWFpbCIgcGxhY2Vob2xkZXI9IkRpZ2l0YSBsJiMwMzk7ZS1tYWlsIiByZXF1aXJlZC8+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF9maWVsZDMgX2lubGluZS1zdHlsZSAiID4KICAgICAgICA8bGFiZWwgY2xhc3M9Il9mb3JtLWxhYmVsIj4KICAgICAgICAgIElsIHR1byBtZXNzYWdnaW8KICAgICAgICA8L2xhYmVsPgogICAgICAgIDxkaXYgY2xhc3M9Il9maWVsZC13cmFwcGVyIj4KICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJmaWVsZFszXSIgcGxhY2Vob2xkZXI9IiIgID48L3RleHRhcmVhPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iX2Zvcm1fZWxlbWVudCBfZmllbGQ2IF9pbmxpbmUtc3R5bGUgIiA+CiAgICAgICAgPGRpdiBjbGFzcz0iX3JvdyI+CiAgICAgICAgICA8bGFiZWwgY2xhc3M9Il9mb3JtLWxhYmVsIj4KICAgICAgICAgICAgQ29uc2Vuc28gYWwgdHJhdHRhbWVudG8gZGVpIG1pZWkgZGF0aSBwZXJzb25hbGkKICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGlucHV0IGRhdGEtYXV0b2ZpbGw9ImZhbHNlIiB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpZWxkWzZdW10iIHZhbHVlPSJ+fCI+CiAgICAgICAgPGRpdiBjbGFzcz0iX3JvdyBfY2hlY2tib3gtcmFkaW8iPgogICAgICAgICAgPGlucHV0IGlkPSJmaWVsZF82RGljaGlhcm8gZGkgYXZlciBsZXR0byBsJiMwMzk7aW5mb3JtYXRpdmEgc3VsbGEgcHJpdmFjeSBlIGRvIGlsIGNvbnNlbnNvIGFsIHRyYXR0YW1lbnRvIGRlaSBtaWVpIGRhdGkgcGVyc29uYWxpIiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZmllbGRbNl1bXSIgdmFsdWU9IkRpY2hpYXJvIGRpIGF2ZXIgbGV0dG8gbCYjMDM5O2luZm9ybWF0aXZhIHN1bGxhIHByaXZhY3kgZSBkbyBpbCBjb25zZW5zbyBhbCB0cmF0dGFtZW50byBkZWkgbWllaSBkYXRpIHBlcnNvbmFsaSIgICA+CiAgICAgICAgICA8c3Bhbj4KICAgICAgICAgICAgPGxhYmVsIGZvcj0iZmllbGRfNkRpY2hpYXJvIGRpIGF2ZXIgbGV0dG8gbCYjMDM5O2luZm9ybWF0aXZhIHN1bGxhIHByaXZhY3kgZSBkbyBpbCBjb25zZW5zbyBhbCB0cmF0dGFtZW50byBkZWkgbWllaSBkYXRpIHBlcnNvbmFsaSI+CiAgICAgICAgICAgICAgRGljaGlhcm8gZGkgYXZlciBsZXR0byBsJiMwMzk7aW5mb3JtYXRpdmEgc3VsbGEgcHJpdmFjeSBlIGRvIGlsIGNvbnNlbnNvIGFsIHRyYXR0YW1lbnRvIGRlaSBtaWVpIGRhdGkgcGVyc29uYWxpCiAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICA8L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF94NjY3NzM2OTkgX2lubGluZS1zdHlsZSBfY2xlYXIiID4KICAgICAgICA8ZGl2IGNsYXNzPSJfaHRtbC1jb2RlIj4KICAgICAgICAgIDxwPgogICAgICAgICAgICBMZWdnaSBsYSBub3N0cmEgPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHBzOi8vd3d3Lm5hbWFyZWFsZXN0YXRlLml0L3ByaXZhY3kvIj5JbmZvcm1hdGl2YQogICAgICAgICAgICBzdWxsYSBwcml2YWN5PC9hPgogICAgICAgICAgPC9wPgogICAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4KICAgICAgPGRpdiBjbGFzcz0iX2Zvcm1fZWxlbWVudCBfeDUyMjkwMzQxIF9pbmxpbmUtc3R5bGUgIiA+CiAgICAgICAgPGxhYmVsIGNsYXNzPSJfZm9ybS1sYWJlbCI+CiAgICAgICAgICBWZXJpZmljYSBsYSByaWNoaWVzdGEqCiAgICAgICAgPC9sYWJlbD4KICAgICAgICA8ZGl2IGNsYXNzPSJnLXJlY2FwdGNoYSIgZGF0YS1zaXRla2V5PSI2TGN3SXc4VEFBQUFBQ1AxeXNNMDhFaENnemQ2cTVKQU9VUjFhMEdvIj4KICAgICAgICA8L2Rpdj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Il9idXR0b24td3JhcHBlciBfaW5saW5lLXN0eWxlIj4KICAgICAgICA8YnV0dG9uIGlkPSJfZm9ybV8xNV9zdWJtaXQiIGNsYXNzPSJfc3VibWl0IiB0eXBlPSJzdWJtaXQiPgogICAgICAgICAgSW52aWEKICAgICAgICA8L2J1dHRvbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Il9jbGVhci1lbGVtZW50Ij4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Il9mb3JtLXRoYW5rLXlvdSIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPgogICAgPC9kaXY+CiAgPC9mb3JtPgo8L2Rpdj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CndpbmRvdy5jZmllbGRzID0geyIzIjoiaWxfdHVvX21lc3NhZ2dpbyIsIjYiOiJjb25zZW5zb19hbF90cmF0dGFtZW50b19kZWlfbWllaV9kYXRpX3BlcnNvbmFsaSJ9Owp3aW5kb3cuX3Nob3dfdGhhbmtfeW91ID0gZnVuY3Rpb24oaWQsIG1lc3NhZ2UsIHRyYWNrY21wX3VybCkgewogIHZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ19mb3JtXycgKyBpZCArICdfJyksIHRoYW5rX3lvdSA9IGZvcm0ucXVlcnlTZWxlY3RvcignLl9mb3JtLXRoYW5rLXlvdScpOwogIGZvcm0ucXVlcnlTZWxlY3RvcignLl9mb3JtLWNvbnRlbnQnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwogIHRoYW5rX3lvdS5pbm5lckhUTUwgPSBtZXNzYWdlOwogIHRoYW5rX3lvdS5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKICBpZiAodHlwZW9mKHRyYWNrY21wX3VybCkgIT0gJ3VuZGVmaW5lZCcgJiYgdHJhY2tjbXBfdXJsKSB7CiAgICAvLyBTaXRlIHRyYWNraW5nIFVSTCB0byB1c2UgYWZ0ZXIgaW5saW5lIGZvcm0gc3VibWlzc2lvbi4KICAgIF9sb2FkX3NjcmlwdCh0cmFja2NtcF91cmwpOwogIH0KICBpZiAodHlwZW9mIHdpbmRvdy5fZm9ybV9jYWxsYmFjayAhPT0gJ3VuZGVmaW5lZCcpIHdpbmRvdy5fZm9ybV9jYWxsYmFjayhpZCk7Cn07CndpbmRvdy5fc2hvd19lcnJvciA9IGZ1bmN0aW9uKGlkLCBtZXNzYWdlLCBodG1sKSB7CiAgdmFyIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnX2Zvcm1fJyArIGlkICsgJ18nKSwgZXJyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksIGJ1dHRvbiA9IGZvcm0ucXVlcnlTZWxlY3RvcignYnV0dG9uJyksIG9sZF9lcnJvciA9IGZvcm0ucXVlcnlTZWxlY3RvcignLl9mb3JtX2Vycm9yJyk7CiAgaWYgKG9sZF9lcnJvcikgb2xkX2Vycm9yLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQob2xkX2Vycm9yKTsKICBlcnIuaW5uZXJIVE1MID0gbWVzc2FnZTsKICBlcnIuY2xhc3NOYW1lID0gJ19lcnJvci1pbm5lciBfZm9ybV9lcnJvciBfbm9fYXJyb3cnOwogIHZhciB3cmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgd3JhcHBlci5jbGFzc05hbWUgPSAnX2Zvcm0taW5uZXInOwogIHdyYXBwZXIuYXBwZW5kQ2hpbGQoZXJyKTsKICBidXR0b24ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUod3JhcHBlciwgYnV0dG9uKTsKICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbaWRePSJfZm9ybSJdW2lkJD0iX3N1Ym1pdCJdJykuZGlzYWJsZWQgPSBmYWxzZTsKICBpZiAoaHRtbCkgewogICAgdmFyIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgZGl2LmNsYXNzTmFtZSA9ICdfZXJyb3ItaHRtbCc7CiAgICBkaXYuaW5uZXJIVE1MID0gaHRtbDsKICAgIGVyci5hcHBlbmRDaGlsZChkaXYpOwogIH0KfTsKd2luZG93Ll9sb2FkX3NjcmlwdCA9IGZ1bmN0aW9uKHVybCwgY2FsbGJhY2spIHsKICB2YXIgaGVhZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKSwgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JyksIHIgPSBmYWxzZTsKICBzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOwogIHNjcmlwdC5jaGFyc2V0ID0gJ3V0Zi04JzsKICBzY3JpcHQuc3JjID0gdXJsOwogIGlmIChjYWxsYmFjaykgewogICAgc2NyaXB0Lm9ubG9hZCA9IHNjcmlwdC5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHsKICAgICAgaWYgKCFyICYmICghdGhpcy5yZWFkeVN0YXRlIHx8IHRoaXMucmVhZHlTdGF0ZSA9PSAnY29tcGxldGUnKSkgewogICAgICAgIHIgPSB0cnVlOwogICAgICAgIGNhbGxiYWNrKCk7CiAgICAgIH0KICAgIH07CiAgfQogIGhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKfTsKKGZ1bmN0aW9uKCkgewogIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoLnNlYXJjaCgiZXhjbHVkZWZvcm0iKSAhPT0gLTEpIHJldHVybiBmYWxzZTsKICB2YXIgZ2V0Q29va2llID0gZnVuY3Rpb24obmFtZSkgewogICAgdmFyIG1hdGNoID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoJyhefDsgKScgKyBuYW1lICsgJz0oW147XSspJykpOwogICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMl0gOiBudWxsOwogIH0KICB2YXIgc2V0Q29va2llID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHsKICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpOwogICAgdmFyIHRpbWUgPSBub3cuZ2V0VGltZSgpOwogICAgdmFyIGV4cGlyZVRpbWUgPSB0aW1lICsgMTAwMCAqIDYwICogNjAgKiAyNCAqIDM2NTsKICAgIG5vdy5zZXRUaW1lKGV4cGlyZVRpbWUpOwogICAgZG9jdW1lbnQuY29va2llID0gbmFtZSArICc9JyArIHZhbHVlICsgJzsgZXhwaXJlcz0nICsgbm93ICsgJztwYXRoPS8nOwogIH0KICAgICAgdmFyIGFkZEV2ZW50ID0gZnVuY3Rpb24oZWxlbWVudCwgZXZlbnQsIGZ1bmMpIHsKICAgIGlmIChlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHsKICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBmdW5jKTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBvbGRGdW5jID0gZWxlbWVudFsnb24nICsgZXZlbnRdOwogICAgICBlbGVtZW50WydvbicgKyBldmVudF0gPSBmdW5jdGlvbigpIHsKICAgICAgICBvbGRGdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICB9OwogICAgfQogIH0KICB2YXIgX3JlbW92ZWQgPSBmYWxzZTsKICB2YXIgZm9ybV90b19zdWJtaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnX2Zvcm1fMTVfJyk7CiAgdmFyIGFsbElucHV0cyA9IGZvcm1fdG9fc3VibWl0LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0LCBzZWxlY3QsIHRleHRhcmVhJyksIHRvb2x0aXBzID0gW10sIHN1Ym1pdHRlZCA9IGZhbHNlOwoKICB2YXIgZ2V0VXJsUGFyYW0gPSBmdW5jdGlvbihuYW1lKSB7CiAgICB2YXIgcmVnZXhTdHIgPSAnW1w/Jl0nICsgbmFtZSArICc9KFteJiNdKiknOwogICAgdmFyIHJlc3VsdHMgPSBuZXcgUmVnRXhwKHJlZ2V4U3RyLCAnaScpLmV4ZWMod2luZG93LmxvY2F0aW9uLmhyZWYpOwogICAgcmV0dXJuIHJlc3VsdHMgIT0gdW5kZWZpbmVkID8gZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMV0pIDogZmFsc2U7CiAgfTsKCiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxJbnB1dHMubGVuZ3RoOyBpKyspIHsKICAgIHZhciByZWdleFN0ciA9ICJmaWVsZFxcWyhcXGQrKVxcXSI7CiAgICB2YXIgcmVzdWx0cyA9IG5ldyBSZWdFeHAocmVnZXhTdHIpLmV4ZWMoYWxsSW5wdXRzW2ldLm5hbWUpOwogICAgaWYgKHJlc3VsdHMgIT0gdW5kZWZpbmVkKSB7CiAgICAgIGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUgPSB3aW5kb3cuY2ZpZWxkc1tyZXN1bHRzWzFdXTsKICAgIH0gZWxzZSB7CiAgICAgIGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUgPSBhbGxJbnB1dHNbaV0ubmFtZTsKICAgIH0KICAgIHZhciBmaWVsZFZhbCA9IGdldFVybFBhcmFtKGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUpOwoKICAgIGlmIChmaWVsZFZhbCkgewogICAgICBpZiAoYWxsSW5wdXRzW2ldLmRhdGFzZXQuYXV0b2ZpbGwgPT09ICJmYWxzZSIpIHsKICAgICAgICBjb250aW51ZTsKICAgICAgfQogICAgICBpZiAoYWxsSW5wdXRzW2ldLnR5cGUgPT0gInJhZGlvIiB8fCBhbGxJbnB1dHNbaV0udHlwZSA9PSAiY2hlY2tib3giKSB7CiAgICAgICAgaWYgKGFsbElucHV0c1tpXS52YWx1ZSA9PSBmaWVsZFZhbCkgewogICAgICAgICAgYWxsSW5wdXRzW2ldLmNoZWNrZWQgPSB0cnVlOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBhbGxJbnB1dHNbaV0udmFsdWUgPSBmaWVsZFZhbDsKICAgICAgfQogICAgfQogIH0KCiAgdmFyIHJlbW92ZV90b29sdGlwcyA9IGZ1bmN0aW9uKCkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b29sdGlwcy5sZW5ndGg7IGkrKykgewogICAgICB0b29sdGlwc1tpXS50aXAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0b29sdGlwc1tpXS50aXApOwogICAgfQogICAgdG9vbHRpcHMgPSBbXTsKICB9OwogIHZhciByZW1vdmVfdG9vbHRpcCA9IGZ1bmN0aW9uKGVsZW0pIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9vbHRpcHMubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKHRvb2x0aXBzW2ldLmVsZW0gPT09IGVsZW0pIHsKICAgICAgICB0b29sdGlwc1tpXS50aXAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0b29sdGlwc1tpXS50aXApOwogICAgICAgIHRvb2x0aXBzLnNwbGljZShpLCAxKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgIH0KICB9OwogIHZhciBjcmVhdGVfdG9vbHRpcCA9IGZ1bmN0aW9uKGVsZW0sIHRleHQpIHsKICAgIHZhciB0b29sdGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksIGFycm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksIGlubmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksIG5ld190b29sdGlwID0ge307CiAgICBpZiAoZWxlbS50eXBlICE9ICdyYWRpbycgJiYgZWxlbS50eXBlICE9ICdjaGVja2JveCcpIHsKICAgICAgdG9vbHRpcC5jbGFzc05hbWUgPSAnX2Vycm9yJzsKICAgICAgYXJyb3cuY2xhc3NOYW1lID0gJ19lcnJvci1hcnJvdyc7CiAgICAgIGlubmVyLmNsYXNzTmFtZSA9ICdfZXJyb3ItaW5uZXInOwogICAgICBpbm5lci5pbm5lckhUTUwgPSB0ZXh0OwogICAgICB0b29sdGlwLmFwcGVuZENoaWxkKGFycm93KTsKICAgICAgdG9vbHRpcC5hcHBlbmRDaGlsZChpbm5lcik7CiAgICAgIGVsZW0ucGFyZW50Tm9kZS5hcHBlbmRDaGlsZCh0b29sdGlwKTsKICAgIH0gZWxzZSB7CiAgICAgIHRvb2x0aXAuY2xhc3NOYW1lID0gJ19lcnJvci1pbm5lciBfbm9fYXJyb3cnOwogICAgICB0b29sdGlwLmlubmVySFRNTCA9IHRleHQ7CiAgICAgIGVsZW0ucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodG9vbHRpcCwgZWxlbSk7CiAgICAgIG5ld190b29sdGlwLm5vX2Fycm93ID0gdHJ1ZTsKICAgIH0KICAgIG5ld190b29sdGlwLnRpcCA9IHRvb2x0aXA7CiAgICBuZXdfdG9vbHRpcC5lbGVtID0gZWxlbTsKICAgIHRvb2x0aXBzLnB1c2gobmV3X3Rvb2x0aXApOwogICAgcmV0dXJuIG5ld190b29sdGlwOwogIH07CiAgdmFyIHJlc2l6ZV90b29sdGlwID0gZnVuY3Rpb24odG9vbHRpcCkgewogICAgdmFyIHJlY3QgPSB0b29sdGlwLmVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CiAgICB2YXIgZG9jID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBzY3JvbGxQb3NpdGlvbiA9IHJlY3QudG9wIC0gKCh3aW5kb3cucGFnZVlPZmZzZXQgfHwgZG9jLnNjcm9sbFRvcCkgIC0gKGRvYy5jbGllbnRUb3AgfHwgMCkpOwogICAgaWYgKHNjcm9sbFBvc2l0aW9uIDwgNDApIHsKICAgICAgdG9vbHRpcC50aXAuY2xhc3NOYW1lID0gdG9vbHRpcC50aXAuY2xhc3NOYW1lLnJlcGxhY2UoLyA/KF9hYm92ZXxfYmVsb3cpID8vZywgJycpICsgJyBfYmVsb3cnOwogICAgfSBlbHNlIHsKICAgICAgdG9vbHRpcC50aXAuY2xhc3NOYW1lID0gdG9vbHRpcC50aXAuY2xhc3NOYW1lLnJlcGxhY2UoLyA/KF9hYm92ZXxfYmVsb3cpID8vZywgJycpICsgJyBfYWJvdmUnOwogICAgfQogIH07CiAgdmFyIHJlc2l6ZV90b29sdGlwcyA9IGZ1bmN0aW9uKCkgewogICAgaWYgKF9yZW1vdmVkKSByZXR1cm47CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRvb2x0aXBzLmxlbmd0aDsgaSsrKSB7CiAgICAgIGlmICghdG9vbHRpcHNbaV0ubm9fYXJyb3cpIHJlc2l6ZV90b29sdGlwKHRvb2x0aXBzW2ldKTsKICAgIH0KICB9OwogIHZhciB2YWxpZGF0ZV9maWVsZCA9IGZ1bmN0aW9uKGVsZW0sIHJlbW92ZSkgewogICAgdmFyIHRvb2x0aXAgPSBudWxsLCB2YWx1ZSA9IGVsZW0udmFsdWUsIG5vX2Vycm9yID0gdHJ1ZTsKICAgIHJlbW92ZSA/IHJlbW92ZV90b29sdGlwKGVsZW0pIDogZmFsc2U7CiAgICBpZiAoZWxlbS50eXBlICE9ICdjaGVja2JveCcpIGVsZW0uY2xhc3NOYW1lID0gZWxlbS5jbGFzc05hbWUucmVwbGFjZSgvID9faGFzX2Vycm9yID8vZywgJycpOwogICAgaWYgKGVsZW0uZ2V0QXR0cmlidXRlKCdyZXF1aXJlZCcpICE9PSBudWxsKSB7CiAgICAgIGlmIChlbGVtLnR5cGUgPT0gJ3JhZGlvJyB8fCAoZWxlbS50eXBlID09ICdjaGVja2JveCcgJiYgL2FueS8udGVzdChlbGVtLmNsYXNzTmFtZSkpKSB7CiAgICAgICAgdmFyIGVsZW1zID0gZm9ybV90b19zdWJtaXQuZWxlbWVudHNbZWxlbS5uYW1lXTsKICAgICAgICBpZiAoIShlbGVtcyBpbnN0YW5jZW9mIE5vZGVMaXN0IHx8IGVsZW1zIGluc3RhbmNlb2YgSFRNTENvbGxlY3Rpb24pIHx8IGVsZW1zLmxlbmd0aCA8PSAxKSB7CiAgICAgICAgICBub19lcnJvciA9IGVsZW0uY2hlY2tlZDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoZWxlbXNbaV0uY2hlY2tlZCkgbm9fZXJyb3IgPSB0cnVlOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiAoIW5vX2Vycm9yKSB7CiAgICAgICAgICB0b29sdGlwID0gY3JlYXRlX3Rvb2x0aXAoZWxlbSwgIlNlbGV6aW9uYSB1blwnb3B6aW9uZS4iKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZWxlbS50eXBlID09J2NoZWNrYm94JykgewogICAgICAgIHZhciBlbGVtcyA9IGZvcm1fdG9fc3VibWl0LmVsZW1lbnRzW2VsZW0ubmFtZV0sIGZvdW5kID0gZmFsc2UsIGVyciA9IFtdOwogICAgICAgIG5vX2Vycm9yID0gdHJ1ZTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICBpZiAoZWxlbXNbaV0uZ2V0QXR0cmlidXRlKCdyZXF1aXJlZCcpID09PSBudWxsKSBjb250aW51ZTsKICAgICAgICAgIGlmICghZm91bmQgJiYgZWxlbXNbaV0gIT09IGVsZW0pIHJldHVybiB0cnVlOwogICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgZWxlbXNbaV0uY2xhc3NOYW1lID0gZWxlbXNbaV0uY2xhc3NOYW1lLnJlcGxhY2UoLyA/X2hhc19lcnJvciA/L2csICcnKTsKICAgICAgICAgIGlmICghZWxlbXNbaV0uY2hlY2tlZCkgewogICAgICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgICAgICBlbGVtc1tpXS5jbGFzc05hbWUgPSBlbGVtc1tpXS5jbGFzc05hbWUgKyAnIF9oYXNfZXJyb3InOwogICAgICAgICAgICBlcnIucHVzaCgiw4ggbmVjZXNzYXJpbyB2ZXJpZmljYXJlICVzIi5yZXBsYWNlKCIlcyIsIGVsZW1zW2ldLnZhbHVlKSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghbm9fZXJyb3IpIHsKICAgICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCBlcnIuam9pbignPGJyLz4nKSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGVsZW0udGFnTmFtZSA9PSAnU0VMRUNUJykgewogICAgICAgIHZhciBzZWxlY3RlZCA9IHRydWU7CiAgICAgICAgaWYgKGVsZW0ubXVsdGlwbGUpIHsKICAgICAgICAgIHNlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW0ub3B0aW9ucy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoZWxlbS5vcHRpb25zW2ldLnNlbGVjdGVkKSB7CiAgICAgICAgICAgICAgc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbS5vcHRpb25zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChlbGVtLm9wdGlvbnNbaV0uc2VsZWN0ZWQgJiYgIWVsZW0ub3B0aW9uc1tpXS52YWx1ZSkgewogICAgICAgICAgICAgIHNlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFzZWxlY3RlZCkgewogICAgICAgICAgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZSArICcgX2hhc19lcnJvcic7CiAgICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgICAgdG9vbHRpcCA9IGNyZWF0ZV90b29sdGlwKGVsZW0sICJTZWxlemlvbmEgdW5cJ29wemlvbmUuIik7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09ICcnKSB7CiAgICAgICAgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZSArICcgX2hhc19lcnJvcic7CiAgICAgICAgbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgICB0b29sdGlwID0gY3JlYXRlX3Rvb2x0aXAoZWxlbSwgIlF1ZXN0byBjYW1wbyDDqCBvYmJsaWdhdG9yaW8uIik7CiAgICAgIH0KICAgIH0KICAgIGlmIChub19lcnJvciAmJiBlbGVtLm5hbWUgPT0gJ2VtYWlsJykgewogICAgICBpZiAoIXZhbHVlLm1hdGNoKC9eW1wrX2EtejAtOS0nJj1dKyhcLltcK19hLXowLTktJ10rKSpAW2EtejAtOS1dKyhcLlthLXowLTktXSspKihcLlthLXpdezIsfSkkL2kpKSB7CiAgICAgICAgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZSArICcgX2hhc19lcnJvcic7CiAgICAgICAgbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgICB0b29sdGlwID0gY3JlYXRlX3Rvb2x0aXAoZWxlbSwgIkluc2VyaXNjaSB1biBpbmRpcml6em8gZW1haWwgdmFsaWRvLiIpOwogICAgICB9CiAgICB9CiAgICBpZiAobm9fZXJyb3IgJiYgL2RhdGVfZmllbGQvLnRlc3QoZWxlbS5jbGFzc05hbWUpKSB7CiAgICAgIGlmICghdmFsdWUubWF0Y2goL15cZFxkXGRcZC1cZFxkLVxkXGQkLykpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiSW5zZXJpc2NpIHVuYSBkYXRhIHZhbGlkYS4iKTsKICAgICAgfQogICAgfQogICAgdG9vbHRpcCA/IHJlc2l6ZV90b29sdGlwKHRvb2x0aXApIDogZmFsc2U7CiAgICByZXR1cm4gbm9fZXJyb3I7CiAgfTsKICB2YXIgbmVlZHNfdmFsaWRhdGUgPSBmdW5jdGlvbihlbCkgewogICAgcmV0dXJuIGVsLm5hbWUgPT0gJ2VtYWlsJyB8fCBlbC5nZXRBdHRyaWJ1dGUoJ3JlcXVpcmVkJykgIT09IG51bGw7CiAgfTsKICB2YXIgdmFsaWRhdGVfZm9ybSA9IGZ1bmN0aW9uKGUpIHsKICAgIHZhciBlcnIgPSBmb3JtX3RvX3N1Ym1pdC5xdWVyeVNlbGVjdG9yKCcuX2Zvcm1fZXJyb3InKSwgbm9fZXJyb3IgPSB0cnVlOwogICAgaWYgKCFzdWJtaXR0ZWQpIHsKICAgICAgc3VibWl0dGVkID0gdHJ1ZTsKICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGFsbElucHV0cy5sZW5ndGg7IGkgPCBsZW47IGkrKykgewogICAgICAgIHZhciBpbnB1dCA9IGFsbElucHV0c1tpXTsKICAgICAgICBpZiAobmVlZHNfdmFsaWRhdGUoaW5wdXQpKSB7CiAgICAgICAgICBpZiAoaW5wdXQudHlwZSA9PSAndGV4dCcpIHsKICAgICAgICAgICAgYWRkRXZlbnQoaW5wdXQsICdibHVyJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUudHJpbSgpOwogICAgICAgICAgICAgIHZhbGlkYXRlX2ZpZWxkKHRoaXMsIHRydWUpOwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgYWRkRXZlbnQoaW5wdXQsICdpbnB1dCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHZhbGlkYXRlX2ZpZWxkKHRoaXMsIHRydWUpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQudHlwZSA9PSAncmFkaW8nIHx8IGlucHV0LnR5cGUgPT0gJ2NoZWNrYm94JykgewogICAgICAgICAgICAoZnVuY3Rpb24oZWwpIHsKICAgICAgICAgICAgICB2YXIgcmFkaW9zID0gZm9ybV90b19zdWJtaXQuZWxlbWVudHNbZWwubmFtZV07CiAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByYWRpb3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGFkZEV2ZW50KHJhZGlvc1tpXSwgJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX2ZpZWxkKGVsLCB0cnVlKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSkoaW5wdXQpOwogICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC50YWdOYW1lID09ICdTRUxFQ1QnKSB7CiAgICAgICAgICAgIGFkZEV2ZW50KGlucHV0LCAnY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC50eXBlID09ICd0ZXh0YXJlYScpewogICAgICAgICAgICBhZGRFdmVudChpbnB1dCwgJ2lucHV0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmVtb3ZlX3Rvb2x0aXBzKCk7CiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYWxsSW5wdXRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgIHZhciBlbGVtID0gYWxsSW5wdXRzW2ldOwogICAgICBpZiAobmVlZHNfdmFsaWRhdGUoZWxlbSkpIHsKICAgICAgICBpZiAoZWxlbS50YWdOYW1lLnRvTG93ZXJDYXNlKCkgIT09ICJzZWxlY3QiKSB7CiAgICAgICAgICBlbGVtLnZhbHVlID0gZWxlbS52YWx1ZS50cmltKCk7CiAgICAgICAgfQogICAgICAgIHZhbGlkYXRlX2ZpZWxkKGVsZW0pID8gdHJ1ZSA6IG5vX2Vycm9yID0gZmFsc2U7CiAgICAgIH0KICAgIH0KICAgIGlmICghbm9fZXJyb3IgJiYgZSkgewogICAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICB9CiAgICByZXNpemVfdG9vbHRpcHMoKTsKICAgIHJldHVybiBub19lcnJvcjsKICB9OwogIGFkZEV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScsIHJlc2l6ZV90b29sdGlwcyk7CiAgYWRkRXZlbnQod2luZG93LCAnc2Nyb2xsJywgcmVzaXplX3Rvb2x0aXBzKTsKICB3aW5kb3dbJ3JlY2FwdGNoYV9jYWxsYmFjayddID0gZnVuY3Rpb24oKSB7CiAgLy8gR2V0IGFsbCByZWNhcHRjaGFzIGluIHRoZSBET00gKHRoZXJlIG1heSBiZSBtb3JlIHRoYW4gb25lIGZvcm0gb24gdGhlIHBhZ2UpLgogIHZhciByZWNhcHRjaGFzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZy1yZWNhcHRjaGEiKTsKICBmb3IgKHZhciBpIGluIHJlY2FwdGNoYXMpIHsKICAgIC8vIFNldCB0aGUgcmVjYXB0Y2hhIGVsZW1lbnQgSUQsIHNvIHRoZSByZWNhcHRjaGEgY2FuIGJlIGFwcGxpZWQgdG8gZWFjaCBlbGVtZW50LgogICAgdmFyIHJlY2FwdGNoYV9pZCA9ICJyZWNhcHRjaGFfIiArIGk7CiAgICByZWNhcHRjaGFzW2ldLmlkID0gcmVjYXB0Y2hhX2lkOwogICAgdmFyIGVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocmVjYXB0Y2hhX2lkKTsKICAgIGlmIChlbCAhPSBudWxsKSB7CiAgICAgIHZhciBzaXRla2V5ID0gZWwuZ2V0QXR0cmlidXRlKCJkYXRhLXNpdGVrZXkiKTsKICAgICAgdmFyIHN0b2tlbiA9IGVsLmdldEF0dHJpYnV0ZSgiZGF0YS1zdG9rZW4iKTsKICAgICAgZ3JlY2FwdGNoYS5yZW5kZXIocmVjYXB0Y2hhX2lkLCB7InNpdGVrZXkiOnNpdGVrZXksInN0b2tlbiI6c3Rva2VufSk7CiAgICB9CiAgfQp9OyAgX2xvYWRfc2NyaXB0KCIvL3d3dy5nb29nbGUuY29tL3JlY2FwdGNoYS9hcGkuanM/b25sb2FkPXJlY2FwdGNoYV9jYWxsYmFjayZyZW5kZXI9ZXhwbGljaXQiKTsKICB3aW5kb3cuX29sZF9zZXJpYWxpemUgPSBudWxsOwogIGlmICh0eXBlb2Ygc2VyaWFsaXplICE9PSAndW5kZWZpbmVkJykgd2luZG93Ll9vbGRfc2VyaWFsaXplID0gd2luZG93LnNlcmlhbGl6ZTsKICBfbG9hZF9zY3JpcHQoIi8vZDNyeGFpajU2dmplZ2UuY2xvdWRmcm9udC5uZXQvZm9ybS1zZXJpYWxpemUvMC4zL3NlcmlhbGl6ZS5taW4uanMiLCBmdW5jdGlvbigpIHsKICAgIHdpbmRvdy5fZm9ybV9zZXJpYWxpemUgPSB3aW5kb3cuc2VyaWFsaXplOwogICAgaWYgKHdpbmRvdy5fb2xkX3NlcmlhbGl6ZSkgd2luZG93LnNlcmlhbGl6ZSA9IHdpbmRvdy5fb2xkX3NlcmlhbGl6ZTsKICB9KTsKICB2YXIgZm9ybV9zdWJtaXQgPSBmdW5jdGlvbihlKSB7CiAgICBlLnByZXZlbnREZWZhdWx0KCk7CiAgICBpZiAodmFsaWRhdGVfZm9ybSgpKSB7CiAgICAgIC8vIHVzZSB0aGlzIHRyaWNrIHRvIGdldCB0aGUgc3VibWl0IGJ1dHRvbiAmIGRpc2FibGUgaXQgdXNpbmcgcGxhaW4gamF2YXNjcmlwdAogICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjX2Zvcm1fMTVfc3VibWl0JykuZGlzYWJsZWQgPSB0cnVlOwogICAgICAgICAgICB2YXIgc2VyaWFsaXplZCA9IF9mb3JtX3NlcmlhbGl6ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnX2Zvcm1fMTVfJykpOwogICAgICB2YXIgZXJyID0gZm9ybV90b19zdWJtaXQucXVlcnlTZWxlY3RvcignLl9mb3JtX2Vycm9yJyk7CiAgICAgIGVyciA/IGVyci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGVycikgOiBmYWxzZTsKICAgICAgX2xvYWRfc2NyaXB0KCdodHRwczovL25hbWFyZWFsZXN0YXRlNjk5NjguYWN0aXZlaG9zdGVkLmNvbS9wcm9jLnBocD8nICsgc2VyaWFsaXplZCArICcmanNvbnA9dHJ1ZScpOwogICAgfQogICAgcmV0dXJuIGZhbHNlOwogIH07CiAgYWRkRXZlbnQoZm9ybV90b19zdWJtaXQsICdzdWJtaXQnLCBmb3JtX3N1Ym1pdCk7Cn0pKCk7Cgo8L3NjcmlwdD4=[/fusion_code][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]