MeinWunschkunde

[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_position=”left top” undefined=”” background_repeat=”no-repeat” hover_type=”none” border_size=”0″ border_color=”” border_style=”solid” border_position=”all” padding_top=”2%” padding_right=”” padding_bottom=”2%” padding_left=”25%” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_title hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” content_align=”left” size=”1″ font_size=”” line_height=”” letter_spacing=”” margin_top=”” margin_bottom=”” text_color=”” style_type=”default” sep_color=””]

Hol Dir Deinen Wunschkunden

[/fusion_title][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container][fusion_builder_container hundred_percent=”yes” 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_2″ layout=”1_2″ 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_position=”left top” undefined=”” 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=”20%” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_imageframe image_id=”3050″ max_width=”” style_type=”” blur=”” stylecolor=”” hover_type=”none” bordersize=”” bordercolor=”” borderradius=”” align=”none” lightbox=”no” gallery_id=”” lightbox_image=”” 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://frauwee.de/wp-content/uploads/2019/09/Design-ohne-Titel-60.png[/fusion_imageframe][/fusion_builder_column][fusion_builder_column type=”1_2″ layout=”1_2″ 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_position=”left top” undefined=”” background_repeat=”no-repeat” hover_type=”none” border_size=”0″ border_color=”” border_style=”solid” border_position=”all” padding_top=”” padding_right=”15%” padding_bottom=”” padding_left=”-10%” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_text columns=”” column_min_width=”” column_spacing=”” rule_style=”default” rule_size=”” rule_color=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=””]

Alles beginnt bei Deinem Kunden!

Der Kunde ist der Kern Deines Business – das Fundament sozusagen.

Alles steht und fällt mit ihm.
Ob in der Produktentwicklung oder im Marketing, wenn Du nicht weißt – was er braucht, welche Probleme er hat und wie Du ihn ansprechen musst – dann verschwendest Du eine Menge Zeit.

Online ist alles ein kleines stück- schwieriger, aber nicht unmöglich. 🤪
Kleiner Reimender: Der Service steht nicht mehr an erster Stelle – es sind die Abenteuer, die Emotionen und die Story!
Getreu dem Motto:
„Kreiere Dein Marketing und schreibe Deine Geschichte!“

Also, definiere Deine Kunden, hole sie ab und werde deren Nr. 1️⃣!

So, lange Rede – kurzer Sinn.
Hol Dir das Workbook – Lets fetz – viel Spaß!

[/fusion_text][fusion_code]PHN0eWxlPgogI19mb3JtXzlfIHsgZm9udC1zaXplOjE0cHg7IGxpbmUtaGVpZ2h0OjEuNjsgZm9udC1mYW1pbHk6YXJpYWwsIGhlbHZldGljYSwgc2Fucy1zZXJpZjsgbWFyZ2luOjA7IH0KICNfZm9ybV85XyAqIHsgb3V0bGluZTowOyB9CiAuX2Zvcm1faGlkZSB7IGRpc3BsYXk6bm9uZTsgdmlzaWJpbGl0eTpoaWRkZW47IH0KIC5fZm9ybV9zaG93IHsgZGlzcGxheTpibG9jazsgdmlzaWJpbGl0eTp2aXNpYmxlOyB9CiAjX2Zvcm1fOV8uX2Zvcm0tdG9wIHsgdG9wOjA7IH0KICNfZm9ybV85Xy5fZm9ybS1ib3R0b20geyBib3R0b206MDsgfQogI19mb3JtXzlfLl9mb3JtLWxlZnQgeyBsZWZ0OjA7IH0KICNfZm9ybV85Xy5fZm9ybS1yaWdodCB7IHJpZ2h0OjA7IH0KICNfZm9ybV85XyBpbnB1dFt0eXBlPSJ0ZXh0Il0sI19mb3JtXzlfIGlucHV0W3R5cGU9ImRhdGUiXSwjX2Zvcm1fOV8gdGV4dGFyZWEgeyBwYWRkaW5nOjZweDsgaGVpZ2h0OmF1dG87IGJvcmRlcjojOTc5Nzk3IDFweCBzb2xpZDsgYm9yZGVyLXJhZGl1czo0cHg7IGNvbG9yOiMwMDAgIWltcG9ydGFudDsgZm9udC1zaXplOjE0cHg7IC13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94OyAtbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgYm94LXNpemluZzpib3JkZXItYm94OyB9CiAjX2Zvcm1fOV8gdGV4dGFyZWEgeyByZXNpemU6bm9uZTsgfQogI19mb3JtXzlfIC5fc3VibWl0IHsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IGN1cnNvcjpwb2ludGVyOyBmb250LWZhbWlseTphcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOjE0cHg7IHRleHQtYWxpZ246Y2VudGVyOyBiYWNrZ3JvdW5kOiNkOTAwNGEgIWltcG9ydGFudDsgYm9yZGVyOjAgIWltcG9ydGFudDsgLW1vei1ib3JkZXItcmFkaXVzOjRweCAhaW1wb3J0YW50OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6NHB4ICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6NHB4ICFpbXBvcnRhbnQ7IGNvbG9yOiNmZmYgIWltcG9ydGFudDsgcGFkZGluZzoxMHB4ICFpbXBvcnRhbnQ7IH0KICNfZm9ybV85XyAuX2Nsb3NlLWljb24geyBjdXJzb3I6cG9pbnRlcjsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2h0dHBzOi8vZDIyNmFqNGFvMXQ2MXEuY2xvdWRmcm9udC5uZXQvZXNma3lqaDF1X2Zvcm1zLWNsb3NlLWRhcmsucG5nJyk7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjE0LjJweCAxNC4ycHg7IHBvc2l0aW9uOmFic29sdXRlOyBkaXNwbGF5OmJsb2NrOyB0b3A6MTFweDsgcmlnaHQ6OXB4OyBvdmVyZmxvdzpoaWRkZW47IHdpZHRoOjE2LjJweDsgaGVpZ2h0OjE2LjJweDsgfQogI19mb3JtXzlfIC5fY2xvc2UtaWNvbjpiZWZvcmUgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfQogI19mb3JtXzlfIC5fZm9ybS1ib2R5IHsgbWFyZ2luLWJvdHRvbTozMHB4OyB9CiAjX2Zvcm1fOV8gLl9mb3JtLWltYWdlLWxlZnQgeyB3aWR0aDoxNTBweDsgZmxvYXQ6bGVmdDsgfQogI19mb3JtXzlfIC5fZm9ybS1jb250ZW50LXJpZ2h0IHsgbWFyZ2luLWxlZnQ6MTY0cHg7IH0KICNfZm9ybV85XyAuX2Zvcm0tYnJhbmRpbmcgeyBjb2xvcjojZmZmOyBmb250LXNpemU6MTBweDsgY2xlYXI6Ym90aDsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW4tdG9wOjMwcHg7IGZvbnQtd2VpZ2h0OjEwMDsgfQogI19mb3JtXzlfIC5fZm9ybS1icmFuZGluZyAuX2xvZ28geyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMzBweDsgaGVpZ2h0OjE0cHg7IG1hcmdpbi10b3A6NnB4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnaHR0cHM6Ly9kMjI2YWo0YW8xdDYxcS5jbG91ZGZyb250Lm5ldC9oaDl1anFndjVfYWNsb2dvX2xpLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MTMwcHggYXV0bzsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyB9CiAjX2Zvcm1fOV8gLl9mb3JtLWxhYmVsLCNfZm9ybV85XyAuX2Zvcm1fZWxlbWVudCAuX2Zvcm0tbGFiZWwgeyBmb250LXdlaWdodDpib2xkOyBtYXJnaW4tYm90dG9tOjVweDsgZGlzcGxheTpibG9jazsgfQogI19mb3JtXzlfLl9kYXJrIC5fZm9ybS1icmFuZGluZyB7IGNvbG9yOiMzMzM7IH0KICNfZm9ybV85Xy5fZGFyayAuX2Zvcm0tYnJhbmRpbmcgLl9sb2dvIHsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2h0dHBzOi8vZDIyNmFqNGFvMXQ2MXEuY2xvdWRmcm9udC5uZXQvamZ0cTJjOHNfYWNsb2dvX2RrLnBuZycpOyB9CiAjX2Zvcm1fOV8gLl9mb3JtX2VsZW1lbnQgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luLWJvdHRvbToxMHB4OyBmb250LXNpemU6MDsgbWF4LXdpZHRoOjEwMCU7IH0KICNfZm9ybV85XyAuX2Zvcm1fZWxlbWVudCAqIHsgZm9udC1zaXplOjE0cHg7IH0KICNfZm9ybV85XyAuX2Zvcm1fZWxlbWVudC5fY2xlYXIgeyBjbGVhcjpib3RoOyB3aWR0aDoxMDAlOyBmbG9hdDpub25lOyB9CiAjX2Zvcm1fOV8gLl9mb3JtX2VsZW1lbnQuX2NsZWFyOmFmdGVyIHsgY2xlYXI6bGVmdDsgfQogI19mb3JtXzlfIC5fZm9ybV9lbGVtZW50IGlucHV0W3R5cGU9InRleHQiXSwjX2Zvcm1fOV8gLl9mb3JtX2VsZW1lbnQgaW5wdXRbdHlwZT0iZGF0ZSJdLCNfZm9ybV85XyAuX2Zvcm1fZWxlbWVudCBzZWxlY3QsI19mb3JtXzlfIC5fZm9ybV9lbGVtZW50IHRleHRhcmVhOm5vdCguZy1yZWNhcHRjaGEtcmVzcG9uc2UpIHsgZGlzcGxheTpibG9jazsgd2lkdGg6MTAwJTsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0KICNfZm9ybV85XyAuX2ZpZWxkLXdyYXBwZXIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgfQogI19mb3JtXzlfIC5faW5saW5lLXN0eWxlIHsgZmxvYXQ6bGVmdDsgfQogI19mb3JtXzlfIC5faW5saW5lLXN0eWxlIGlucHV0W3R5cGU9InRleHQiXSB7IHdpZHRoOjE1MHB4OyB9CiAjX2Zvcm1fOV8gLl9pbmxpbmUtc3R5bGU6bm90KC5fY2xlYXIpICsgLl9pbmxpbmUtc3R5bGU6bm90KC5fY2xlYXIpIHsgbWFyZ2luLWxlZnQ6MjBweDsgfQogI19mb3JtXzlfIC5fZm9ybV9lbGVtZW50IGltZy5fZm9ybS1pbWFnZSB7IG1heC13aWR0aDoxMDAlOyB9CiAjX2Zvcm1fOV8gLl9jbGVhci1lbGVtZW50IHsgY2xlYXI6bGVmdDsgfQogI19mb3JtXzlfIC5fZnVsbF93aWR0aCB7IHdpZHRoOjEwMCU7IH0KICNfZm9ybV85XyAuX2Zvcm1fZnVsbF9maWVsZCB7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjEwMCU7IG1hcmdpbi1ib3R0b206MTBweDsgfQogI19mb3JtXzlfIGlucHV0W3R5cGU9InRleHQiXS5faGFzX2Vycm9yLCNfZm9ybV85XyB0ZXh0YXJlYS5faGFzX2Vycm9yIHsgYm9yZGVyOiNmMzdjN2IgMXB4IHNvbGlkOyB9CiAjX2Zvcm1fOV8gaW5wdXRbdHlwZT0iY2hlY2tib3giXS5faGFzX2Vycm9yIHsgb3V0bGluZTojZjM3YzdiIDFweCBzb2xpZDsgfQogI19mb3JtXzlfIC5fZXJyb3IgeyBkaXNwbGF5OmJsb2NrOyBwb3NpdGlvbjphYnNvbHV0ZTsgZm9udC1zaXplOjE0cHg7IHotaW5kZXg6MTAwMDAwMDE7IH0KICNfZm9ybV85XyAuX2Vycm9yLl9hYm92ZSB7IHBhZGRpbmctYm90dG9tOjRweDsgYm90dG9tOjM5cHg7IHJpZ2h0OjA7IH0KICNfZm9ybV85XyAuX2Vycm9yLl9iZWxvdyB7IHBhZGRpbmctdG9wOjRweDsgdG9wOjEwMCU7IHJpZ2h0OjA7IH0KICNfZm9ybV85XyAuX2Vycm9yLl9hYm92ZSAuX2Vycm9yLWFycm93IHsgYm90dG9tOjA7IHJpZ2h0OjE1cHg7IGJvcmRlci1sZWZ0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXJpZ2h0OjVweCBzb2xpZCB0cmFuc3BhcmVudDsgYm9yZGVyLXRvcDo1cHggc29saWQgI2YzN2M3YjsgfQogI19mb3JtXzlfIC5fZXJyb3IuX2JlbG93IC5fZXJyb3ItYXJyb3cgeyB0b3A6MDsgcmlnaHQ6MTVweDsgYm9yZGVyLWxlZnQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItcmlnaHQ6NXB4IHNvbGlkIHRyYW5zcGFyZW50OyBib3JkZXItYm90dG9tOjVweCBzb2xpZCAjZjM3YzdiOyB9CiAjX2Zvcm1fOV8gLl9lcnJvci1pbm5lciB7IHBhZGRpbmc6OHB4IDEycHg7IGJhY2tncm91bmQtY29sb3I6I2YzN2M3YjsgZm9udC1zaXplOjE0cHg7IGZvbnQtZmFtaWx5OmFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyB9CiAjX2Zvcm1fOV8gLl9lcnJvci1pbm5lci5fZm9ybV9lcnJvciB7IG1hcmdpbi1ib3R0b206NXB4OyB0ZXh0LWFsaWduOmxlZnQ7IH0KICNfZm9ybV85XyAuX2J1dHRvbi13cmFwcGVyIC5fZXJyb3ItaW5uZXIuX2Zvcm1fZXJyb3IgeyBwb3NpdGlvbjpzdGF0aWM7IH0KICNfZm9ybV85XyAuX2Vycm9yLWlubmVyLl9ub19hcnJvdyB7IG1hcmdpbi1ib3R0b206MTBweDsgfQogI19mb3JtXzlfIC5fZXJyb3ItYXJyb3cgeyBwb3NpdGlvbjphYnNvbHV0ZTsgd2lkdGg6MDsgaGVpZ2h0OjA7IH0KICNfZm9ybV85XyAuX2Vycm9yLWh0bWwgeyBtYXJnaW4tYm90dG9tOjEwcHg7IH0KIC5waWthLXNpbmdsZSB7IHotaW5kZXg6MTAwMDAwMDEgIWltcG9ydGFudDsgfQogQG1lZGlhIGFsbCBhbmQgKG1pbi13aWR0aDozMjBweCkgYW5kIChtYXgtd2lkdGg6NjY3cHgpIHsgOjotd2Via2l0LXNjcm9sbGJhciB7IGRpc3BsYXk6bm9uZTsgfQogI19mb3JtXzlfIHsgbWFyZ2luOjA7IHdpZHRoOjEwMCU7IG1pbi13aWR0aDoxMDAlOyBtYXgtd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyB9CiAjX2Zvcm1fOV8gKiB7IC13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94OyAtbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgYm94LXNpemluZzpib3JkZXItYm94OyBmb250LXNpemU6MWVtOyB9CiAjX2Zvcm1fOV8gLl9mb3JtLWNvbnRlbnQgeyBtYXJnaW46MDsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzlfIC5fZm9ybS1pbm5lciB7IGRpc3BsYXk6YmxvY2s7IG1pbi13aWR0aDoxMDAlOyB9CiAjX2Zvcm1fOV8gLl9mb3JtLXRpdGxlLCNfZm9ybV85XyAuX2lubGluZS1zdHlsZSB7IG1hcmdpbi10b3A6MDsgbWFyZ2luLXJpZ2h0OjA7IG1hcmdpbi1sZWZ0OjA7IH0KICNfZm9ybV85XyAuX2Zvcm0tdGl0bGUgeyBmb250LXNpemU6MS4yZW07IH0KICNfZm9ybV85XyAuX2Zvcm1fZWxlbWVudCB7IG1hcmdpbjowIDAgMjBweDsgcGFkZGluZzowOyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fOV8gLl9mb3JtLWVsZW1lbnQsI19mb3JtXzlfIC5faW5saW5lLXN0eWxlLCNfZm9ybV85XyBpbnB1dFt0eXBlPSJ0ZXh0Il0sI19mb3JtXzlfIGxhYmVsLCNfZm9ybV85XyBwLCNfZm9ybV85XyB0ZXh0YXJlYTpub3QoLmctcmVjYXB0Y2hhLXJlc3BvbnNlKSB7IGZsb2F0Om5vbmU7IGRpc3BsYXk6YmxvY2s7IHdpZHRoOjEwMCU7IH0KICNfZm9ybV85XyAuX3Jvdy5fY2hlY2tib3gtcmFkaW8gbGFiZWwgeyBkaXNwbGF5OmlubGluZTsgfQogI19mb3JtXzlfIC5fcm93LCNfZm9ybV85XyBwLCNfZm9ybV85XyBsYWJlbCB7IG1hcmdpbi1ib3R0b206MC43ZW07IHdpZHRoOjEwMCU7IH0KICNfZm9ybV85XyAuX3JvdyBpbnB1dFt0eXBlPSJjaGVja2JveCJdLCNfZm9ybV85XyAuX3JvdyBpbnB1dFt0eXBlPSJyYWRpbyJdIHsgbWFyZ2luOjAgIWltcG9ydGFudDsgdmVydGljYWwtYWxpZ246bWlkZGxlICFpbXBvcnRhbnQ7IH0KICNfZm9ybV85XyAuX3JvdyBpbnB1dFt0eXBlPSJjaGVja2JveCJdICsgc3BhbiBsYWJlbCB7IGRpc3BsYXk6aW5saW5lOyB9CiAjX2Zvcm1fOV8gLl9yb3cgc3BhbiBsYWJlbCB7IG1hcmdpbjowICFpbXBvcnRhbnQ7IHdpZHRoOmluaXRpYWwgIWltcG9ydGFudDsgdmVydGljYWwtYWxpZ246bWlkZGxlICFpbXBvcnRhbnQ7IH0KICNfZm9ybV85XyAuX2Zvcm0taW1hZ2UgeyBtYXgtd2lkdGg6MTAwJTsgaGVpZ2h0OmF1dG8gIWltcG9ydGFudDsgfQogI19mb3JtXzlfIGlucHV0W3R5cGU9InRleHQiXSB7IHBhZGRpbmctbGVmdDoxMHB4OyBwYWRkaW5nLXJpZ2h0OjEwcHg7IGZvbnQtc2l6ZToxNnB4OyBsaW5lLWhlaWdodDoxLjNlbTsgLXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7IH0KICNfZm9ybV85XyBpbnB1dFt0eXBlPSJyYWRpbyJdLCNfZm9ybV85XyBpbnB1dFt0eXBlPSJjaGVja2JveCJdIHsgZGlzcGxheTppbmxpbmUtYmxvY2s7IHdpZHRoOjEuM2VtOyBoZWlnaHQ6MS4zZW07IGZvbnQtc2l6ZToxZW07IG1hcmdpbjowIDAuM2VtIDAgMDsgdmVydGljYWwtYWxpZ246YmFzZWxpbmU7IH0KICNfZm9ybV85XyBidXR0b25bdHlwZT0ic3VibWl0Il0geyBwYWRkaW5nOjIwcHg7IGZvbnQtc2l6ZToxLjVlbTsgfQogI19mb3JtXzlfIC5faW5saW5lLXN0eWxlIHsgbWFyZ2luOjIwcHggMCAwICFpbXBvcnRhbnQ7IH0KIH0KICNfZm9ybV85XyB7IHBvc2l0aW9uOnJlbGF0aXZlOyB0ZXh0LWFsaWduOmxlZnQ7IG1hcmdpbjoyNXB4IGF1dG8gMDsgcGFkZGluZzoyMHB4OyAtd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgLW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgKnpvb206MTsgYmFja2dyb3VuZDojMDMwMzAzICFpbXBvcnRhbnQ7IGJvcmRlcjowcHggc29saWQgI2IwYjBiMCAhaW1wb3J0YW50OyB3aWR0aDo1MjFweDsgLW1vei1ib3JkZXItcmFkaXVzOjBweCAhaW1wb3J0YW50OyAtd2Via2l0LWJvcmRlci1yYWRpdXM6MHB4ICFpbXBvcnRhbnQ7IGJvcmRlci1yYWRpdXM6MHB4ICFpbXBvcnRhbnQ7IGNvbG9yOiNmZmYgIWltcG9ydGFudDsgfQogI19mb3JtXzlfIC5fZm9ybS10aXRsZSB7IGZvbnQtc2l6ZToyMnB4OyBsaW5lLWhlaWdodDoyMnB4OyBmb250LXdlaWdodDo2MDA7IG1hcmdpbi1ib3R0b206MDsgfQogI19mb3JtXzlfOmJlZm9yZSwjX2Zvcm1fOV86YWZ0ZXIgeyBjb250ZW50OiIgIjsgZGlzcGxheTp0YWJsZTsgfQogI19mb3JtXzlfOmFmdGVyIHsgY2xlYXI6Ym90aDsgfQogI19mb3JtXzlfLl9pbmxpbmUtc3R5bGUgeyB3aWR0aDphdXRvOyBkaXNwbGF5OmlubGluZS1ibG9jazsgfQogI19mb3JtXzlfLl9pbmxpbmUtc3R5bGUgaW5wdXRbdHlwZT0idGV4dCJdLCNfZm9ybV85Xy5faW5saW5lLXN0eWxlIGlucHV0W3R5cGU9ImRhdGUiXSB7IHBhZGRpbmc6MTBweCAxMnB4OyB9CiAjX2Zvcm1fOV8uX2lubGluZS1zdHlsZSBidXR0b24uX2lubGluZS1zdHlsZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6MjdweDsgfQogI19mb3JtXzlfLl9pbmxpbmUtc3R5bGUgcCB7IG1hcmdpbjowOyB9CiAjX2Zvcm1fOV8uX2lubGluZS1zdHlsZSAuX2J1dHRvbi13cmFwcGVyIHsgcG9zaXRpb246cmVsYXRpdmU7IG1hcmdpbjoyN3B4IDEyLjVweCAwIDIwcHg7IH0KICNfZm9ybV85XyAuX2Zvcm0tdGhhbmsteW91IHsgcG9zaXRpb246cmVsYXRpdmU7IGxlZnQ6MDsgcmlnaHQ6MDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxOHB4OyB9CiBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjMyMHB4KSBhbmQgKG1heC13aWR0aDo2NjdweCkgeyAjX2Zvcm1fOV8uX2lubGluZS1mb3JtLl9pbmxpbmUtc3R5bGUgLl9pbmxpbmUtc3R5bGUuX2J1dHRvbi13cmFwcGVyIHsgbWFyZ2luLXRvcDoyMHB4ICFpbXBvcnRhbnQ7IG1hcmdpbi1sZWZ0OjAgIWltcG9ydGFudDsgfQogfQo8L3N0eWxlPgo8Zm9ybSBtZXRob2Q9IlBPU1QiIGFjdGlvbj0iaHR0cHM6Ly9mcmF1d2VlLmFjdGl2ZWhvc3RlZC5jb20vcHJvYy5waHAiIGlkPSJfZm9ybV85XyIgY2xhc3M9Il9mb3JtIF9mb3JtXzkgX2lubGluZS1mb3JtICAiIG5vdmFsaWRhdGU+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idSIgdmFsdWU9IjkiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZiIgdmFsdWU9IjkiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icyIgLz4KICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJjIiB2YWx1ZT0iMCIgLz4KICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJtIiB2YWx1ZT0iMCIgLz4KICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3QiIHZhbHVlPSJzdWIiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0idiIgdmFsdWU9IjIiIC8+CiAgPGRpdiBjbGFzcz0iX2Zvcm0tY29udGVudCI+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF94MzU0MTU0NTcgX2Z1bGxfd2lkdGggX2NsZWFyIiA+CiAgICAgIDxkaXYgY2xhc3M9Il9mb3JtLXRpdGxlIj4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Il9mb3JtX2VsZW1lbnQgX3g5NzY3ODIxNCBfZnVsbF93aWR0aCAiID4KICAgICAgPGxhYmVsIGNsYXNzPSJfZm9ybS1sYWJlbCI+CiAgICAgICAgVm9ybmFtZQogICAgICA8L2xhYmVsPgogICAgICA8ZGl2IGNsYXNzPSJfZmllbGQtd3JhcHBlciI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImZpcnN0bmFtZSIgcGxhY2Vob2xkZXI9IlRpcHBlIERlaW5lbiBWb3JuYW1lbiBlaW4uIiAvPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iX2Zvcm1fZWxlbWVudCBfeDY5MDM1NTA1IF9mdWxsX3dpZHRoICIgPgogICAgICA8bGFiZWwgY2xhc3M9Il9mb3JtLWxhYmVsIj4KICAgICAgICBFLW1haWwqCiAgICAgIDwvbGFiZWw+CiAgICAgIDxkaXYgY2xhc3M9Il9maWVsZC13cmFwcGVyIj4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iZW1haWwiIHBsYWNlaG9sZGVyPSJUaXBwZSBEZWluZSBFLU1haWwgZWluLiIgcmVxdWlyZWQvPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iX2J1dHRvbi13cmFwcGVyIF9mdWxsX3dpZHRoIj4KICAgICAgPGJ1dHRvbiBpZD0iX2Zvcm1fOV9zdWJtaXQiIGNsYXNzPSJfc3VibWl0IiB0eXBlPSJzdWJtaXQiPgogICAgICAgIEljaCBtw7ZjaHRlIGRhcyBXb3JrYm9vawogICAgICA8L2J1dHRvbj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iX2NsZWFyLWVsZW1lbnQiPgogICAgPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iX2Zvcm0tdGhhbmsteW91IiBzdHlsZT0iZGlzcGxheTpub25lOyI+CiAgPC9kaXY+CjwvZm9ybT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CndpbmRvdy5jZmllbGRzID0gW107CndpbmRvdy5fc2hvd190aGFua195b3UgPSBmdW5jdGlvbihpZCwgbWVzc2FnZSwgdHJhY2tjbXBfdXJsKSB7CiAgdmFyIGZvcm0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnX2Zvcm1fJyArIGlkICsgJ18nKSwgdGhhbmtfeW91ID0gZm9ybS5xdWVyeVNlbGVjdG9yKCcuX2Zvcm0tdGhhbmsteW91Jyk7CiAgZm9ybS5xdWVyeVNlbGVjdG9yKCcuX2Zvcm0tY29udGVudCcpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CiAgdGhhbmtfeW91LmlubmVySFRNTCA9IG1lc3NhZ2U7CiAgdGhhbmtfeW91LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwogIGlmICh0eXBlb2YodHJhY2tjbXBfdXJsKSAhPSAndW5kZWZpbmVkJyAmJiB0cmFja2NtcF91cmwpIHsKICAgIC8vIFNpdGUgdHJhY2tpbmcgVVJMIHRvIHVzZSBhZnRlciBpbmxpbmUgZm9ybSBzdWJtaXNzaW9uLgogICAgX2xvYWRfc2NyaXB0KHRyYWNrY21wX3VybCk7CiAgfQogIGlmICh0eXBlb2Ygd2luZG93Ll9mb3JtX2NhbGxiYWNrICE9PSAndW5kZWZpbmVkJykgd2luZG93Ll9mb3JtX2NhbGxiYWNrKGlkKTsKfTsKd2luZG93Ll9zaG93X2Vycm9yID0gZnVuY3Rpb24oaWQsIG1lc3NhZ2UsIGh0bWwpIHsKICB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfZm9ybV8nICsgaWQgKyAnXycpLCBlcnIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgYnV0dG9uID0gZm9ybS5xdWVyeVNlbGVjdG9yKCdidXR0b24nKSwgb2xkX2Vycm9yID0gZm9ybS5xdWVyeVNlbGVjdG9yKCcuX2Zvcm1fZXJyb3InKTsKICBpZiAob2xkX2Vycm9yKSBvbGRfZXJyb3IucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChvbGRfZXJyb3IpOwogIGVyci5pbm5lckhUTUwgPSBtZXNzYWdlOwogIGVyci5jbGFzc05hbWUgPSAnX2Vycm9yLWlubmVyIF9mb3JtX2Vycm9yIF9ub19hcnJvdyc7CiAgdmFyIHdyYXBwZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICB3cmFwcGVyLmNsYXNzTmFtZSA9ICdfZm9ybS1pbm5lcic7CiAgd3JhcHBlci5hcHBlbmRDaGlsZChlcnIpOwogIGJ1dHRvbi5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh3cmFwcGVyLCBidXR0b24pOwogIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tpZF49Il9mb3JtIl1baWQkPSJfc3VibWl0Il0nKS5kaXNhYmxlZCA9IGZhbHNlOwogIGlmIChodG1sKSB7CiAgICB2YXIgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICBkaXYuY2xhc3NOYW1lID0gJ19lcnJvci1odG1sJzsKICAgIGRpdi5pbm5lckhUTUwgPSBodG1sOwogICAgZXJyLmFwcGVuZENoaWxkKGRpdik7CiAgfQp9Owp3aW5kb3cuX2xvYWRfc2NyaXB0ID0gZnVuY3Rpb24odXJsLCBjYWxsYmFjaykgewogICAgdmFyIGhlYWQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkJyksIHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpLCByID0gZmFsc2U7CiAgICBzY3JpcHQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOwogICAgc2NyaXB0LmNoYXJzZXQgPSAndXRmLTgnOwogICAgc2NyaXB0LnNyYyA9IHVybDsKICAgIGlmIChjYWxsYmFjaykgewogICAgICBzY3JpcHQub25sb2FkID0gc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkgewogICAgICBpZiAoIXIgJiYgKCF0aGlzLnJlYWR5U3RhdGUgfHwgdGhpcy5yZWFkeVN0YXRlID09ICdjb21wbGV0ZScpKSB7CiAgICAgICAgciA9IHRydWU7CiAgICAgICAgY2FsbGJhY2soKTsKICAgICAgICB9CiAgICAgIH07CiAgICB9CiAgICBoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7Cn07CihmdW5jdGlvbigpIHsKICBpZiAod2luZG93LmxvY2F0aW9uLnNlYXJjaC5zZWFyY2goImV4Y2x1ZGVmb3JtIikgIT09IC0xKSByZXR1cm4gZmFsc2U7CiAgdmFyIGdldENvb2tpZSA9IGZ1bmN0aW9uKG5hbWUpIHsKICAgIHZhciBtYXRjaCA9IGRvY3VtZW50LmNvb2tpZS5tYXRjaChuZXcgUmVnRXhwKCcoXnw7ICknICsgbmFtZSArICc9KFteO10rKScpKTsKICAgIHJldHVybiBtYXRjaCA/IG1hdGNoWzJdIDogbnVsbDsKICB9CiAgdmFyIHNldENvb2tpZSA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7CiAgICB2YXIgbm93ID0gbmV3IERhdGUoKTsKICAgIHZhciB0aW1lID0gbm93LmdldFRpbWUoKTsKICAgIHZhciBleHBpcmVUaW1lID0gdGltZSArIDEwMDAgKiA2MCAqIDYwICogMjQgKiAzNjU7CiAgICBub3cuc2V0VGltZShleHBpcmVUaW1lKTsKICAgIGRvY3VtZW50LmNvb2tpZSA9IG5hbWUgKyAnPScgKyB2YWx1ZSArICc7IGV4cGlyZXM9JyArIG5vdyArICc7cGF0aD0vJzsKICB9CiAgICAgIHZhciBhZGRFdmVudCA9IGZ1bmN0aW9uKGVsZW1lbnQsIGV2ZW50LCBmdW5jKSB7CiAgICBpZiAoZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKSB7CiAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgZnVuYyk7CiAgICB9IGVsc2UgewogICAgICB2YXIgb2xkRnVuYyA9IGVsZW1lbnRbJ29uJyArIGV2ZW50XTsKICAgICAgZWxlbWVudFsnb24nICsgZXZlbnRdID0gZnVuY3Rpb24oKSB7CiAgICAgICAgb2xkRnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICAgIGZ1bmMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsKICAgICAgfTsKICAgIH0KICB9CiAgdmFyIF9yZW1vdmVkID0gZmFsc2U7CiAgdmFyIGZvcm1fdG9fc3VibWl0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ19mb3JtXzlfJyk7CiAgdmFyIGFsbElucHV0cyA9IGZvcm1fdG9fc3VibWl0LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0LCBzZWxlY3QsIHRleHRhcmVhJyksIHRvb2x0aXBzID0gW10sIHN1Ym1pdHRlZCA9IGZhbHNlOwoKICB2YXIgZ2V0VXJsUGFyYW0gPSBmdW5jdGlvbihuYW1lKSB7CiAgICB2YXIgcmVnZXhTdHIgPSAnW1w/Jl0nICsgbmFtZSArICc9KFteJiNdKiknOwogICAgdmFyIHJlc3VsdHMgPSBuZXcgUmVnRXhwKHJlZ2V4U3RyLCAnaScpLmV4ZWMod2luZG93LmxvY2F0aW9uLmhyZWYpOwogICAgcmV0dXJuIHJlc3VsdHMgIT0gdW5kZWZpbmVkID8gZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMV0pIDogZmFsc2U7CiAgfTsKCiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxJbnB1dHMubGVuZ3RoOyBpKyspIHsKICAgIHZhciByZWdleFN0ciA9ICJmaWVsZFxcWyhcXGQrKVxcXSI7CiAgICB2YXIgcmVzdWx0cyA9IG5ldyBSZWdFeHAocmVnZXhTdHIpLmV4ZWMoYWxsSW5wdXRzW2ldLm5hbWUpOwogICAgaWYgKHJlc3VsdHMgIT0gdW5kZWZpbmVkKSB7CiAgICAgIGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUgPSB3aW5kb3cuY2ZpZWxkc1tyZXN1bHRzWzFdXTsKICAgIH0gZWxzZSB7CiAgICAgIGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUgPSBhbGxJbnB1dHNbaV0ubmFtZTsKICAgIH0KICAgIHZhciBmaWVsZFZhbCA9IGdldFVybFBhcmFtKGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUpOwoKICAgIGlmIChmaWVsZFZhbCkgewogICAgICBpZiAoYWxsSW5wdXRzW2ldLnR5cGUgPT0gInJhZGlvIiB8fCBhbGxJbnB1dHNbaV0udHlwZSA9PSAiY2hlY2tib3giKSB7CiAgICAgICAgaWYgKGFsbElucHV0c1tpXS52YWx1ZSA9PSBmaWVsZFZhbCkgewogICAgICAgICAgYWxsSW5wdXRzW2ldLmNoZWNrZWQgPSB0cnVlOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBhbGxJbnB1dHNbaV0udmFsdWUgPSBmaWVsZFZhbDsKICAgICAgfQogICAgfQogIH0KCiAgdmFyIHJlbW92ZV90b29sdGlwcyA9IGZ1bmN0aW9uKCkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b29sdGlwcy5sZW5ndGg7IGkrKykgewogICAgICB0b29sdGlwc1tpXS50aXAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0b29sdGlwc1tpXS50aXApOwogICAgfQogICAgICB0b29sdGlwcyA9IFtdOwogIH07CiAgdmFyIHJlbW92ZV90b29sdGlwID0gZnVuY3Rpb24oZWxlbSkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b29sdGlwcy5sZW5ndGg7IGkrKykgewogICAgICBpZiAodG9vbHRpcHNbaV0uZWxlbSA9PT0gZWxlbSkgewogICAgICAgIHRvb2x0aXBzW2ldLnRpcC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRvb2x0aXBzW2ldLnRpcCk7CiAgICAgICAgdG9vbHRpcHMuc3BsaWNlKGksIDEpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgfQogIH07CiAgdmFyIGNyZWF0ZV90b29sdGlwID0gZnVuY3Rpb24oZWxlbSwgdGV4dCkgewogICAgdmFyIHRvb2x0aXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgYXJyb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgaW5uZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgbmV3X3Rvb2x0aXAgPSB7fTsKICAgIGlmIChlbGVtLnR5cGUgIT0gJ3JhZGlvJyAmJiBlbGVtLnR5cGUgIT0gJ2NoZWNrYm94JykgewogICAgICB0b29sdGlwLmNsYXNzTmFtZSA9ICdfZXJyb3InOwogICAgICBhcnJvdy5jbGFzc05hbWUgPSAnX2Vycm9yLWFycm93JzsKICAgICAgaW5uZXIuY2xhc3NOYW1lID0gJ19lcnJvci1pbm5lcic7CiAgICAgIGlubmVyLmlubmVySFRNTCA9IHRleHQ7CiAgICAgIHRvb2x0aXAuYXBwZW5kQ2hpbGQoYXJyb3cpOwogICAgICB0b29sdGlwLmFwcGVuZENoaWxkKGlubmVyKTsKICAgICAgZWxlbS5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRvb2x0aXApOwogICAgfSBlbHNlIHsKICAgICAgdG9vbHRpcC5jbGFzc05hbWUgPSAnX2Vycm9yLWlubmVyIF9ub19hcnJvdyc7CiAgICAgIHRvb2x0aXAuaW5uZXJIVE1MID0gdGV4dDsKICAgICAgZWxlbS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0b29sdGlwLCBlbGVtKTsKICAgICAgbmV3X3Rvb2x0aXAubm9fYXJyb3cgPSB0cnVlOwogICAgfQogICAgbmV3X3Rvb2x0aXAudGlwID0gdG9vbHRpcDsKICAgIG5ld190b29sdGlwLmVsZW0gPSBlbGVtOwogICAgdG9vbHRpcHMucHVzaChuZXdfdG9vbHRpcCk7CiAgICByZXR1cm4gbmV3X3Rvb2x0aXA7CiAgfTsKICB2YXIgcmVzaXplX3Rvb2x0aXAgPSBmdW5jdGlvbih0b29sdGlwKSB7CiAgICB2YXIgcmVjdCA9IHRvb2x0aXAuZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIHZhciBkb2MgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHNjcm9sbFBvc2l0aW9uID0gcmVjdC50b3AgLSAoKHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2Muc2Nyb2xsVG9wKSAgLSAoZG9jLmNsaWVudFRvcCB8fCAwKSk7CiAgICBpZiAoc2Nyb2xsUG9zaXRpb24gPCA0MCkgewogICAgICB0b29sdGlwLnRpcC5jbGFzc05hbWUgPSB0b29sdGlwLnRpcC5jbGFzc05hbWUucmVwbGFjZSgvID8oX2Fib3ZlfF9iZWxvdykgPy9nLCAnJykgKyAnIF9iZWxvdyc7CiAgICB9IGVsc2UgewogICAgICB0b29sdGlwLnRpcC5jbGFzc05hbWUgPSB0b29sdGlwLnRpcC5jbGFzc05hbWUucmVwbGFjZSgvID8oX2Fib3ZlfF9iZWxvdykgPy9nLCAnJykgKyAnIF9hYm92ZSc7CiAgICB9CiAgfTsKICB2YXIgcmVzaXplX3Rvb2x0aXBzID0gZnVuY3Rpb24oKSB7CiAgICBpZiAoX3JlbW92ZWQpIHJldHVybjsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9vbHRpcHMubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKCF0b29sdGlwc1tpXS5ub19hcnJvdykgcmVzaXplX3Rvb2x0aXAodG9vbHRpcHNbaV0pOwogICAgfQogIH07CiAgdmFyIHZhbGlkYXRlX2ZpZWxkID0gZnVuY3Rpb24oZWxlbSwgcmVtb3ZlKSB7CiAgICB2YXIgdG9vbHRpcCA9IG51bGwsIHZhbHVlID0gZWxlbS52YWx1ZSwgbm9fZXJyb3IgPSB0cnVlOwogICAgcmVtb3ZlID8gcmVtb3ZlX3Rvb2x0aXAoZWxlbSkgOiBmYWxzZTsKICAgIGlmIChlbGVtLnR5cGUgIT0gJ2NoZWNrYm94JykgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZS5yZXBsYWNlKC8gP19oYXNfZXJyb3IgPy9nLCAnJyk7CiAgICBpZiAoZWxlbS5nZXRBdHRyaWJ1dGUoJ3JlcXVpcmVkJykgIT09IG51bGwpIHsKICAgICAgaWYgKGVsZW0udHlwZSA9PSAncmFkaW8nIHx8IChlbGVtLnR5cGUgPT0gJ2NoZWNrYm94JyAmJiAvYW55Ly50ZXN0KGVsZW0uY2xhc3NOYW1lKSkpIHsKICAgICAgICB2YXIgZWxlbXMgPSBmb3JtX3RvX3N1Ym1pdC5lbGVtZW50c1tlbGVtLm5hbWVdOwogICAgICAgIGlmICghKGVsZW1zIGluc3RhbmNlb2YgTm9kZUxpc3QgfHwgZWxlbXMgaW5zdGFuY2VvZiBIVE1MQ29sbGVjdGlvbikgfHwgZWxlbXMubGVuZ3RoIDw9IDEpIHsKICAgICAgICAgIG5vX2Vycm9yID0gZWxlbS5jaGVja2VkOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIG5vX2Vycm9yID0gZmFsc2U7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChlbGVtc1tpXS5jaGVja2VkKSBub19lcnJvciA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghbm9fZXJyb3IpIHsKICAgICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiQml0dGUgZWluZSBPcHRpb24gYXVzd8OkaGxlbi4iKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAoZWxlbS50eXBlID09J2NoZWNrYm94JykgewogICAgICAgIHZhciBlbGVtcyA9IGZvcm1fdG9fc3VibWl0LmVsZW1lbnRzW2VsZW0ubmFtZV0sIGZvdW5kID0gZmFsc2UsIGVyciA9IFtdOwogICAgICAgIG5vX2Vycm9yID0gdHJ1ZTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICBpZiAoZWxlbXNbaV0uZ2V0QXR0cmlidXRlKCdyZXF1aXJlZCcpID09PSBudWxsKSBjb250aW51ZTsKICAgICAgICAgIGlmICghZm91bmQgJiYgZWxlbXNbaV0gIT09IGVsZW0pIHJldHVybiB0cnVlOwogICAgICAgICAgZm91bmQgPSB0cnVlOwogICAgICAgICAgZWxlbXNbaV0uY2xhc3NOYW1lID0gZWxlbXNbaV0uY2xhc3NOYW1lLnJlcGxhY2UoLyA/X2hhc19lcnJvciA/L2csICcnKTsKICAgICAgICAgIGlmICghZWxlbXNbaV0uY2hlY2tlZCkgewogICAgICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgICAgICBlbGVtc1tpXS5jbGFzc05hbWUgPSBlbGVtc1tpXS5jbGFzc05hbWUgKyAnIF9oYXNfZXJyb3InOwogICAgICAgICAgICBlcnIucHVzaCgiRGllIE1hcmtpZXJ1bmcgdm9uICVzIGlzdCBlcmZvcmRlcmxpY2guIi5yZXBsYWNlKCIlcyIsIGVsZW1zW2ldLnZhbHVlKSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghbm9fZXJyb3IpIHsKICAgICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCBlcnIuam9pbignPGJyLz4nKSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGVsZW0udGFnTmFtZSA9PSAnU0VMRUNUJykgewogICAgICAgIHZhciBzZWxlY3RlZCA9IHRydWU7CiAgICAgICAgaWYgKGVsZW0ubXVsdGlwbGUpIHsKICAgICAgICAgIHNlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW0ub3B0aW9ucy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoZWxlbS5vcHRpb25zW2ldLnNlbGVjdGVkKSB7CiAgICAgICAgICAgICAgc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbS5vcHRpb25zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChlbGVtLm9wdGlvbnNbaV0uc2VsZWN0ZWQgJiYgIWVsZW0ub3B0aW9uc1tpXS52YWx1ZSkgewogICAgICAgICAgICAgIHNlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFzZWxlY3RlZCkgewogICAgICAgICAgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZSArICcgX2hhc19lcnJvcic7CiAgICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgICAgdG9vbHRpcCA9IGNyZWF0ZV90b29sdGlwKGVsZW0sICJCaXR0ZSBlaW5lIE9wdGlvbiBhdXN3w6RobGVuLiIpOwogICAgICAgIH0KICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSAnJykgewogICAgICAgIGVsZW0uY2xhc3NOYW1lID0gZWxlbS5jbGFzc05hbWUgKyAnIF9oYXNfZXJyb3InOwogICAgICAgIG5vX2Vycm9yID0gZmFsc2U7CiAgICAgICAgdG9vbHRpcCA9IGNyZWF0ZV90b29sdGlwKGVsZW0sICJCaXR0ZSBmw7xsbGVuIFNpZSBkYXMgbWFya2llcnRlIFBmbGljaHRmZWxkIGF1cy4iKTsKICAgICAgfQogICAgfQogICAgaWYgKG5vX2Vycm9yICYmIGVsZW0ubmFtZSA9PSAnZW1haWwnKSB7CiAgICAgIGlmICghdmFsdWUubWF0Y2goL15bXCtfYS16MC05LScmPV0rKFwuW1wrX2EtejAtOS0nXSspKkBbYS16MC05LV0rKFwuW2EtejAtOS1dKykqKFwuW2Etel17Mix9KSQvaSkpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiR2ViZW4gU2llIGVpbmUgZ8O8bHRpZ2UgRS1NYWlsLUFkcmVzc2UgZWluLiIpOwogICAgICB9CiAgICB9CiAgICBpZiAobm9fZXJyb3IgJiYgL2RhdGVfZmllbGQvLnRlc3QoZWxlbS5jbGFzc05hbWUpKSB7CiAgICAgIGlmICghdmFsdWUubWF0Y2goL15cZFxkXGRcZC1cZFxkLVxkXGQkLykpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiR8O8bHRpZ2VzIERhdHVtIGVpbmdlYmVuIik7CiAgICAgIH0KICAgIH0KICAgIHRvb2x0aXAgPyByZXNpemVfdG9vbHRpcCh0b29sdGlwKSA6IGZhbHNlOwogICAgcmV0dXJuIG5vX2Vycm9yOwogIH07CiAgdmFyIG5lZWRzX3ZhbGlkYXRlID0gZnVuY3Rpb24oZWwpIHsKICAgIHJldHVybiBlbC5uYW1lID09ICdlbWFpbCcgfHwgZWwuZ2V0QXR0cmlidXRlKCdyZXF1aXJlZCcpICE9PSBudWxsOwogIH07CiAgdmFyIHZhbGlkYXRlX2Zvcm0gPSBmdW5jdGlvbihlKSB7CiAgICB2YXIgZXJyID0gZm9ybV90b19zdWJtaXQucXVlcnlTZWxlY3RvcignLl9mb3JtX2Vycm9yJyksIG5vX2Vycm9yID0gdHJ1ZTsKICAgIGlmICghc3VibWl0dGVkKSB7CiAgICAgIHN1Ym1pdHRlZCA9IHRydWU7CiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhbGxJbnB1dHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICB2YXIgaW5wdXQgPSBhbGxJbnB1dHNbaV07CiAgICAgICAgaWYgKG5lZWRzX3ZhbGlkYXRlKGlucHV0KSkgewogICAgICAgICAgaWYgKGlucHV0LnR5cGUgPT0gJ3RleHQnKSB7CiAgICAgICAgICAgIGFkZEV2ZW50KGlucHV0LCAnYmx1cicsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLnRyaW0oKTsKICAgICAgICAgICAgICB2YWxpZGF0ZV9maWVsZCh0aGlzLCB0cnVlKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIGFkZEV2ZW50KGlucHV0LCAnaW5wdXQnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB2YWxpZGF0ZV9maWVsZCh0aGlzLCB0cnVlKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnR5cGUgPT0gJ3JhZGlvJyB8fCBpbnB1dC50eXBlID09ICdjaGVja2JveCcpIHsKICAgICAgICAgICAgKGZ1bmN0aW9uKGVsKSB7CiAgICAgICAgICAgICAgdmFyIHJhZGlvcyA9IGZvcm1fdG9fc3VibWl0LmVsZW1lbnRzW2VsLm5hbWVdOwogICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmFkaW9zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBhZGRFdmVudChyYWRpb3NbaV0sICdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9maWVsZChlbCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pKGlucHV0KTsKICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQudGFnTmFtZSA9PSAnU0VMRUNUJykgewogICAgICAgICAgICBhZGRFdmVudChpbnB1dCwgJ2NoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHZhbGlkYXRlX2ZpZWxkKHRoaXMsIHRydWUpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQudHlwZSA9PSAndGV4dGFyZWEnKXsKICAgICAgICAgICAgYWRkRXZlbnQoaW5wdXQsICdpbnB1dCcsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgIHZhbGlkYXRlX2ZpZWxkKHRoaXMsIHRydWUpOwogICAgICAgICAgICB9KTsKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KICAgIHJlbW92ZV90b29sdGlwcygpOwogICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGFsbElucHV0cy5sZW5ndGg7IGkgPCBsZW47IGkrKykgewogICAgICB2YXIgZWxlbSA9IGFsbElucHV0c1tpXTsKICAgICAgaWYgKG5lZWRzX3ZhbGlkYXRlKGVsZW0pKSB7CiAgICAgICAgaWYgKGVsZW0udGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAic2VsZWN0IikgewogICAgICAgICAgZWxlbS52YWx1ZSA9IGVsZW0udmFsdWUudHJpbSgpOwogICAgICAgIH0KICAgICAgICB2YWxpZGF0ZV9maWVsZChlbGVtKSA/IHRydWUgOiBub19lcnJvciA9IGZhbHNlOwogICAgICB9CiAgICB9CiAgICBpZiAoIW5vX2Vycm9yICYmIGUpIHsKICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgfQogICAgcmVzaXplX3Rvb2x0aXBzKCk7CiAgICByZXR1cm4gbm9fZXJyb3I7CiAgfTsKICBhZGRFdmVudCh3aW5kb3csICdyZXNpemUnLCByZXNpemVfdG9vbHRpcHMpOwogIGFkZEV2ZW50KHdpbmRvdywgJ3Njcm9sbCcsIHJlc2l6ZV90b29sdGlwcyk7CiAgd2luZG93Ll9vbGRfc2VyaWFsaXplID0gbnVsbDsKICBpZiAodHlwZW9mIHNlcmlhbGl6ZSAhPT0gJ3VuZGVmaW5lZCcpIHdpbmRvdy5fb2xkX3NlcmlhbGl6ZSA9IHdpbmRvdy5zZXJpYWxpemU7CiAgX2xvYWRfc2NyaXB0KCIvL2QzcnhhaWo1NnZqZWdlLmNsb3VkZnJvbnQubmV0L2Zvcm0tc2VyaWFsaXplLzAuMy9zZXJpYWxpemUubWluLmpzIiwgZnVuY3Rpb24oKSB7CiAgICB3aW5kb3cuX2Zvcm1fc2VyaWFsaXplID0gd2luZG93LnNlcmlhbGl6ZTsKICAgIGlmICh3aW5kb3cuX29sZF9zZXJpYWxpemUpIHdpbmRvdy5zZXJpYWxpemUgPSB3aW5kb3cuX29sZF9zZXJpYWxpemU7CiAgfSk7CiAgdmFyIGZvcm1fc3VibWl0ID0gZnVuY3Rpb24oZSkgewogICAgZS5wcmV2ZW50RGVmYXVsdCgpOwogICAgaWYgKHZhbGlkYXRlX2Zvcm0oKSkgewogICAgICAvLyB1c2UgdGhpcyB0cmljayB0byBnZXQgdGhlIHN1Ym1pdCBidXR0b24gJiBkaXNhYmxlIGl0IHVzaW5nIHBsYWluIGphdmFzY3JpcHQKICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI19mb3JtXzlfc3VibWl0JykuZGlzYWJsZWQgPSB0cnVlOwogICAgICAgICAgICB2YXIgc2VyaWFsaXplZCA9IF9mb3JtX3NlcmlhbGl6ZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnX2Zvcm1fOV8nKSk7CiAgICAgIHZhciBlcnIgPSBmb3JtX3RvX3N1Ym1pdC5xdWVyeVNlbGVjdG9yKCcuX2Zvcm1fZXJyb3InKTsKICAgICAgZXJyID8gZXJyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZXJyKSA6IGZhbHNlOwogICAgICBfbG9hZF9zY3JpcHQoJ2h0dHBzOi8vZnJhdXdlZS5hY3RpdmVob3N0ZWQuY29tL3Byb2MucGhwPycgKyBzZXJpYWxpemVkICsgJyZqc29ucD10cnVlJyk7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7CiAgfTsKICBhZGRFdmVudChmb3JtX3RvX3N1Ym1pdCwgJ3N1Ym1pdCcsIGZvcm1fc3VibWl0KTsKfSkoKTsKCjwvc2NyaXB0Pg==[/fusion_code][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]