How Traders Can Join the Fintech Movement

[fusion_builder_container admin_label=”Desktop” 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=”medium-visibility,large-visibility” 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=”2%” padding_right=”10%” padding_bottom=”2%” padding_left=”10%” admin_toggled=”no”][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ spacing=”yes” center_content=”no” link=”” target=”_self” min_height=”” hide_on_mobile=”medium-visibility,large-visibility” class=”” id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” hover_type=”none” border_size=”” border_color=”” border_style=”solid” border_position=”all” padding_top=”2%” padding_right=”10%” padding_bottom=”2%” padding_left=”10%” margin_top=”0px” margin_bottom=”0px” 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=””]

How Traders Can Join the Fintech Movement

As Fintech continues to make waves through the industry of finance, certain lessons are quickly being learned. The impact of technology is already a well-known concept in retail banking, wherein the disruption is self-evident. But what of technology’s impact on capital markets and the trading floor? Is disruption as rife in these sectors, or are investment banks somehow immune to competition from emerging tech?

Earlier this month, on November 6th, CFTE held a fireside chat with finance leaders to address these questions and more. Hosted by MUFG, the 5th largest bank worldwide, in their European Headquarters in London, the evening freely invited CFTE alumni and learners to gain insight from a panel formed of MUFG’s Stephane Alex; Behavox’s Alex Viall; Mosaic Smart Data’s Matt Hodgson, and not leastly our co-founder Huy Nguyen Trieu.

The evening held much discussion on the various strategies and frameworks employed by leading financial figures to adapt to the industry’s rapid digitisation. A packed hall of keen professionals heard from Stephane Alex, Head of Global Customer Marketing at MUFG, as he outlined his firm’s major focus over the past five years: Innovation. Following their expansion out of Japan, the fields of Artificial Intelligence, Big Data, Blockchain, Robotic Process Automation (RPA) were all areas of innovation for MUFG. Meanwhile, as the bank continued to develop schemes based on these emerging technologies, they also had to be innovative on the trading floor. This meant greater importance on the pillars of: Risk Management, Data-driven Predictions, Sales, and Settlement.

As the panel drew on, Matt Hodgson, CEO of Mosaic Smart Data, shared his firm’s response to digitisation. Describing the idea of ‘fixed income’ as a personal pain point, he needed his 2013 company to sufficiently solve this problem. And so, Mosaic Smart Data began selling software which addressed fixed income issues, adding value to the front end. By providing an API framework to entire organisations at a time, their brand offered unique value to the industry. Following this forceful ‘migration’ to electronic and digital channels, a new problem reared its head: communication via a common messaging language. Similar to Stephane and MUFG, Matt and his firm responded by leaning on four pillars for the solution. In their case, this meant:

  1. Aggregating transactions over different channels.
  2. Solving KPI and provide a framework delivering effective insight.
  3. Combining multiple segments of clients into one. To avoid the pitfalls of spamming clients.
  4. Their product needed lightning-quick response times (like Apple & Netflix).

Once these principles were in place, Matt’s team was able to match their competitors’ pace of innovation and digital transformation. Alex Viall, Head of Regulatory Intelligence at Behavox, opined on how this pace has changed in recent years. Armed with experience as a regulator, he acknowledged his company’s role: to hold huge amounts of data, group them into a manageable data lake, and run algorithms which would generate meaningful findings and insights for clients.

The panel grew into conversation of current and future trends in Finance, and panellists were asked to briefly breakdown important factors in the industry.

Stephane Alex of MUFG spoke on:

  1. Simplicity of Finance.
  2. Transparency of institutions and services.
  3. Affordability of consumer-facing services.

Matt Hodgson of Mosaic Smart Data declared:

  1. While Fintech soars, banks need to realise they’re also invited to engage.
  2. The costs of nascent tech will decrease.
  3. There will be greater pressure on human capital in front offices.
  4. Process data is nigh-on impossible for humans.

While Alex Viall of Behavox said:

  1. Respect for data and its value rose as people started to mine and work with said data. This will continue.
  2. People are seeking more evidence-based answers instead of tradition.
  3. Data’s ability to personalise services is vital.
  4. Delivering information in real-life is an extraordinary technological leap in finance.

As promised, the evening also saw discussion on the role of automation, and more specifically how it affects the industry workforce. CFTE co-founder Huy Nguyen Trieu probed the panel on the topic, asking which activities in trading are currently in danger of disappearing. In response, Stephane Alex noted that management must take responsibility and sustain some roles for their employees with their oversight.

Next, the panellists were pressed on specific applications of emerging technologies. Algorithms will continue to dominate the trading floor, predicts Stephane, while Matt noted the importance of efficiency in data. Real-time information was not commonplace half a decade ago, while modern finance is much more capable to understand customers thanks to smarter tools. As a result, the roles of those in sales will dramatically change in terms of strategy as they adopt more intellectual approaches to their processes.

All experts called on more urgency in financial institutions taking larger risks, and to take them more often. The trio also highlighted a multitude of examples that showcase current innovations in capitals markets and banking today. For one, there are considerable changes in infrastructure, as Data Scientists and Data Engineers become more prominent. Another salient point is the difference in large and small firms– large institutions have the access and capability to utilise massive amounts of data, while smaller firms without this flow need to act in clever ways to arrive at the same conclusions. Artificial Intelligence will bridge this gap.

Ultimately, a large amount of the trading workforce remains afraid to lose their jobs to automation as a result of continued digital transformation. To these workers, t
he panel provided some words of encouragement and methods of practice:

  • Stephane Alex claimed that since the workforce as whole is becoming smarter, this means the middle and back office will also have to learn and become better. He presented this as positive affirmation that most workers would not get lost in the shuffle.
  • Alex Viall said “It depends on how you embrace technology and change. People can be creative; you need to create the right environment you personally need to be interested in tech and focus on all the tools that can make you more productive. Everything [in finance] is going to be more transparent.”
  • Matt Hodgson opined “[You should be] Continuing education! We encourage everybody to learn. No matter what: improve and learn. Share information openly; break down silos. If we don’t cannibalize ourselves someone will do it for us.”

This event is one of many in CFTE’s calendar which tackles prominent themes in Fintech. For more information on our future events, please subscribe to our events newsletter below. 

[/fusion_text][/fusion_builder_column][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=”1%” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_separator style_type=”default” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” sep_color=”” top_margin=”” bottom_margin=”” border_size=”2″ icon=”” icon_circle=”” icon_circle_color=”” width=”” alignment=”center” /][/fusion_builder_column][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=”relatedPosts” 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=”10%” padding_bottom=”0%” 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=””]

Related Posts

[/fusion_text][fusion_separator style_type=”default” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” sep_color=”” top_margin=”2%” bottom_margin=”” border_size=”0″ icon=”” icon_circle=”” icon_circle_color=”” width=”” alignment=”center” /][fusion_builder_row_inner][fusion_builder_column_inner type=”1_3″ layout=”1_3″ spacing=”” center_content=”no” hover_type=”none” link=”” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogPost” id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” border_size=”0″ border_color=”” border_style=”solid” 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” border_position=”all”][fusion_recent_posts layout=”default” hover_type=”none” columns=”1″ number_posts=”1″ offset=”1″ pull_by=”category” cat_slug=”events” exclude_cats=”” tag_slug=”” exclude_tags=”” thumbnail=”yes” title=”yes” meta=”yes” meta_author=”no” meta_categories=”no” meta_date=”yes” meta_comments=”no” meta_tags=”no” content_alignment=”” excerpt=”no” excerpt_length=”0″ strip_html=”yes” scrolling=”no” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogImage” id=”BlogImage” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” /][/fusion_builder_column_inner][fusion_builder_column_inner type=”1_3″ layout=”1_3″ spacing=”” center_content=”no” hover_type=”none” link=”” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogPost” id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” border_size=”0″ border_color=”” border_style=”solid” 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” border_position=”all”][fusion_recent_posts layout=”default” hover_type=”none” columns=”1″ number_posts=”1″ offset=”4″ pull_by=”category” cat_slug=”events” exclude_cats=”” tag_slug=”” exclude_tags=”” thumbnail=”yes” title=”yes” meta=”yes” meta_author=”no” meta_categories=”no” meta_date=”yes” meta_comments=”no” meta_tags=”no” content_alignment=”” excerpt=”no” excerpt_length=”0″ strip_html=”yes” scrolling=”no” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogImage” id=”BlogImage” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” /][/fusion_builder_column_inner][fusion_builder_column_inner type=”1_3″ layout=”1_3″ spacing=”” center_content=”no” hover_type=”none” link=”” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogPost” id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” border_size=”0″ border_color=”” border_style=”solid” 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” border_position=”all”][fusion_recent_posts layout=”default” hover_type=”none” columns=”1″ number_posts=”1″ offset=”6″ pull_by=”category” cat_slug=”events” exclude_cats=”” tag_slug=”” exclude_tags=”” thumbnail=”yes” title=”yes” meta=”yes” meta_author=”no” meta_categories=”no” meta_date=”yes” meta_comments=”no” meta_tags=”no” content_alignment=”” excerpt=”no” excerpt_length=”0″ strip_html=”yes” scrolling=”no” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogImage” id=”BlogImage” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” /][/fusion_builder_column_inner][/fusion_builder_row_inner][/fusion_builder_column][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=”1%” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_separator style_type=”default” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” sep_color=”” top_margin=”” bottom_margin=”” border_size=”2″ icon=”” icon_circle=”” icon_circle_color=”” width=”” alignment=”center” /][/fusion_builder_column][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” 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]PHN0eWxlPgogI19mb3JtXzMxXyB7IGZvbnQtc2l6ZToxNHB4OyBsaW5lLWhlaWdodDoxLjY7IGZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IG1hcmdpbjowOyB9CiAjX2Zvcm1fMzFfICogeyBvdXRsaW5lOjA7IH0KIC5fZm9ybV9oaWRlIHsgZGlzcGxheTpub25lOyB2aXNpYmlsaXR5OmhpZGRlbjsgfQogLl9mb3JtX3Nob3cgeyBkaXNwbGF5OmJsb2NrOyB2aXNpYmlsaXR5OnZpc2libGU7IH0KICNfZm9ybV8zMV8uX2Zvcm0tdG9wIHsgdG9wOjA7IH0KICNfZm9ybV8zMV8uX2Zvcm0tYm90dG9tIHsgYm90dG9tOjA7IH0KICNfZm9ybV8zMV8uX2Zvcm0tbGVmdCB7IGxlZnQ6MDsgfQogI19mb3JtXzMxXy5fZm9ybS1yaWdodCB7IHJpZ2h0OjA7IH0KICNfZm9ybV8zMV8gaW5wdXRbdHlwZT0idGV4dCJdLCNfZm9ybV8zMV8gaW5wdXRbdHlwZT0iZGF0ZSJdLCNfZm9ybV8zMV8gdGV4dGFyZWEgeyBwYWRkaW5nOjZweDsgaGVpZ2h0OmF1dG87IGJvcmRlcjojOTc5Nzk3IDFweCBzb2xpZDsgYm9yZGVyLXJhZGl1czo0cHg7IGNvbG9yOiMwMDAgIWltcG9ydGFudDsgZm9udC1zaXplOjEzcHg7IC13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94OyAtbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgYm94LXNpemluZzpib3JkZXItYm94OyB9CiAjX2Zvcm1fMzFfIHRleHRhcmVhIHsgcmVzaXplOm5vbmU7IH0KICNfZm9ybV8zMV8gLl9zdWJtaXQgeyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgY3Vyc29yOnBvaW50ZXI7IGZvbnQtZmFtaWx5OmFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6MTRweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6IzhmMDcwNyAhaW1wb3J0YW50OyBib3JkZXI6MCAhaW1wb3J0YW50OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4ICFpbXBvcnRhbnQ7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHggIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czo0cHggIWltcG9ydGFudDsgY29sb3I6I2ZmZiAhaW1wb3J0YW50OyBwYWRkaW5nOjEwcHggIWltcG9ydGFudDsgfQogI19mb3JtXzMxXyAuX2Nsb3NlLWljb24geyBjdXJzb3I6cG9pbnRlcjsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2h0dHBzOi8vZDIyNmFqNGFvMXQ2MXEuY2xvdWRmcm9udC5uZXQvZXNma3lqaDF1X2Zvcm1zLWNsb3NlLWRhcmsucG5nJyk7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjE0LjJweCAxNC4ycHg7IHBvc2l0aW9uOmFic29sdXRlOyBkaXNwbGF5OmJsb2NrOyB0b3A6MTFweDsgcmlnaHQ6OXB4OyBvdmVyZmxvdzpoaWRkZW47IHdpZHRoOjE2LjJweDsgaGVpZ2h0OjE2LjJweDsgfQogI19mb3JtXzMxXyAuX2Nsb3NlLWljb246YmVmb3JlIHsgcG9zaXRpb246cmVsYXRpdmU7IH0KICNfZm9ybV8zMV8gLl9mb3JtLWJvZHkgeyBtYXJnaW4tYm90dG9tOjMwcHg7IH0KICNfZm9ybV8zMV8gLl9mb3JtLWltYWdlLWxlZnQgeyB3aWR0aDoxNTBweDsgZmxvYXQ6bGVmdDsgfQogI19mb3JtXzMxXyAuX2Zvcm0tY29udGVudC1yaWdodCB7IG1hcmdpbi1sZWZ0OjE2NHB4OyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1icmFuZGluZyB7IGNvbG9yOiNmZmY7IGZvbnQtc2l6ZToxMHB4OyBjbGVhcjpib3RoOyB0ZXh0LWFsaWduOmxlZnQ7IG1hcmdpbi10b3A6MzBweDsgZm9udC13ZWlnaHQ6MTAwOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1icmFuZGluZyAuX2xvZ28geyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMzBweDsgaGVpZ2h0OjE0cHg7IG1hcmdpbi10b3A6NnB4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnaHR0cHM6Ly9kMjI2YWo0YW8xdDYxcS5jbG91ZGZyb250Lm5ldC9oaDl1anFndjVfYWNsb2dvX2xpLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MTMwcHggYXV0bzsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1sYWJlbCwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IC5fZm9ybS1sYWJlbCB7IGZvbnQtd2VpZ2h0OmJvbGQ7IG1hcmdpbi1ib3R0b206NXB4OyBkaXNwbGF5OmJsb2NrOyB9CiAjX2Zvcm1fMzFfLl9kYXJrIC5fZm9ybS1icmFuZGluZyB7IGNvbG9yOiMzMzM7IH0KICNfZm9ybV8zMV8uX2RhcmsgLl9mb3JtLWJyYW5kaW5nIC5fbG9nbyB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCdodHRwczovL2QyMjZhajRhbzF0NjFxLmNsb3VkZnJvbnQubmV0L2pmdHEyYzhzX2FjbG9nb19kay5wbmcnKTsgfQogI19mb3JtXzMxXyAuX2Zvcm1fZWxlbWVudCB7IHBvc2l0aW9uOnJlbGF0aXZlOyBtYXJnaW4tYm90dG9tOjEwcHg7IGZvbnQtc2l6ZTowOyBtYXgtd2lkdGg6MTAwJTsgfQogI19mb3JtXzMxXyAuX2Zvcm1fZWxlbWVudCAqIHsgZm9udC1zaXplOjE0cHg7IH0KICNfZm9ybV8zMV8gLl9mb3JtX2VsZW1lbnQuX2NsZWFyIHsgY2xlYXI6Ym90aDsgd2lkdGg6MTAwJTsgZmxvYXQ6bm9uZTsgfQogI19mb3JtXzMxXyAuX2Zvcm1fZWxlbWVudC5fY2xlYXI6YWZ0ZXIgeyBjbGVhcjpsZWZ0OyB9CiAjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IGlucHV0W3R5cGU9InRleHQiXSwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IGlucHV0W3R5cGU9ImRhdGUiXSwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IHNlbGVjdCwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IHRleHRhcmVhOm5vdCguZy1yZWNhcHRjaGEtcmVzcG9uc2UpIHsgZGlzcGxheTpibG9jazsgd2lkdGg6MTAwJTsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0KICNfZm9ybV8zMV8gLl9maWVsZC13cmFwcGVyIHsgcG9zaXRpb246cmVsYXRpdmU7IH0KICNfZm9ybV8zMV8gLl9pbmxpbmUtc3R5bGUgeyBmbG9hdDpsZWZ0OyB9CiAjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlIGlucHV0W3R5cGU9InRleHQiXSB7IHdpZHRoOjE1MHB4OyB9CiAjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlOm5vdCguX2NsZWFyKSArIC5faW5saW5lLXN0eWxlOm5vdCguX2NsZWFyKSB7IG1hcmdpbi1sZWZ0OjIwcHg7IH0KICNfZm9ybV8zMV8gLl9mb3JtX2VsZW1lbnQgaW1nLl9mb3JtLWltYWdlIHsgbWF4LXdpZHRoOjEwMCU7IH0KICNfZm9ybV8zMV8gLl9jbGVhci1lbGVtZW50IHsgY2xlYXI6bGVmdDsgfQogI19mb3JtXzMxXyAuX2Z1bGxfd2lkdGggeyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybV9mdWxsX2ZpZWxkIHsgZGlzcGxheTpibG9jazsgd2lkdGg6MTAwJTsgbWFyZ2luLWJvdHRvbToxMHB4OyB9CiAjX2Zvcm1fMzFfIGlucHV0W3R5cGU9InRleHQiXS5faGFzX2Vycm9yLCNfZm9ybV8zMV8gdGV4dGFyZWEuX2hhc19lcnJvciB7IGJvcmRlcjojZjM3YzdiIDFweCBzb2xpZDsgfQogI19mb3JtXzMxXyBpbnB1dFt0eXBlPSJjaGVja2JveCJdLl9oYXNfZXJyb3IgeyBvdXRsaW5lOiNmMzdjN2IgMXB4IHNvbGlkOyB9CiAjX2Zvcm1fMzFfIC5fZXJyb3IgeyBkaXNwbGF5OmJsb2NrOyBwb3NpdGlvbjphYnNvbHV0ZTsgZm9udC1zaXplOjEzcHg7IHotaW5kZXg6MTAwMDAwMDE7IH0KICNfZm9ybV8zMV8gLl9lcnJvci5fYWJvdmUgeyBwYWRkaW5nLWJvdHRvbTo0cHg7IHRvcDotNDFweDsgcmlnaHQ6MDsgfQogI19mb3JtXzMxXyAuX2Vycm9yLl9iZWxvdyB7IHBhZGRpbmctdG9wOjRweDsgdG9wOjEwMCU7IHJpZ2h0OjA7IH0KICNfZm9ybV8zMV8gLl9lcnJvci5fYWJvdmUgLl9lcnJvci1hcnJvdyB7IGJvdHRvbTowOyByaWdodDoxNXB4OyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6NXB4IHNvbGlkICNmMzdjN2I7IH0KICNfZm9ybV8zMV8gLl9lcnJvci5fYmVsb3cgLl9lcnJvci1hcnJvdyB7IHRvcDowOyByaWdodDoxNXB4OyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1ib3R0b206NXB4IHNvbGlkICNmMzdjN2I7IH0KICNfZm9ybV8zMV8gLl9lcnJvci1pbm5lciB7IHBhZGRpbmc6OHB4IDEycHg7IGJhY2tncm91bmQtY29sb3I6I2YzN2M3YjsgZm9udC1zaXplOjEzcHg7IGZvbnQtZmFtaWx5OmFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyB9CiAjX2Zvcm1fMzFfIC5fZXJyb3ItaW5uZXIuX2Zvcm1fZXJyb3IgeyBtYXJnaW4tYm90dG9tOjVweDsgdGV4dC1hbGlnbjpsZWZ0OyB9CiAjX2Zvcm1fMzFfIC5fYnV0dG9uLXdyYXBwZXIgLl9lcnJvci1pbm5lci5fZm9ybV9lcnJvciB7IHBvc2l0aW9uOnN0YXRpYzsgfQogI19mb3JtXzMxXyAuX2Vycm9yLWlubmVyLl9ub19hcnJvdyB7IG1hcmdpbi1ib3R0b206MTBweDsgfQogI19mb3JtXzMxXyAuX2Vycm9yLWFycm93IHsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjA7IGhlaWdodDowOyB9CiAjX2Zvcm1fMzFfIC5fZXJyb3ItaHRtbCB7IG1hcmdpbi1ib3R0b206MTBweDsgfQogLnBpa2Etc2luZ2xlIHsgei1pbmRleDoxMDAwMDAwMSAhaW1wb3J0YW50OyB9CiBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjMyMHB4KSBhbmQgKG1heC13aWR0aDo2NjdweCkgeyA6Oi13ZWJraXQtc2Nyb2xsYmFyIHsgZGlzcGxheTpub25lOyB9CiAjX2Zvcm1fMzFfIHsgbWFyZ2luOjA7IHdpZHRoOjEwMCU7IG1pbi13aWR0aDoxMDAlOyBtYXgtd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyB9CiAjX2Zvcm1fMzFfICogeyAtd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgLW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgZm9udC1zaXplOjFlbTsgfQogI19mb3JtXzMxXyAuX2Zvcm0tY29udGVudCB7IG1hcmdpbjowOyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1pbm5lciB7IGRpc3BsYXk6YmxvY2s7IG1pbi13aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS10aXRsZSwjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlIHsgbWFyZ2luLXRvcDowOyBtYXJnaW4tcmlnaHQ6MDsgbWFyZ2luLWxlZnQ6MDsgfQogI19mb3JtXzMxXyAuX2Zvcm0tdGl0bGUgeyBmb250LXNpemU6MS4yZW07IH0KICNfZm9ybV8zMV8gLl9mb3JtX2VsZW1lbnQgeyBtYXJnaW46MCAwIDIwcHg7IHBhZGRpbmc6MDsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzMxXyAuX2Zvcm0tZWxlbWVudCwjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlLCNfZm9ybV8zMV8gaW5wdXRbdHlwZT0idGV4dCJdLCNfZm9ybV8zMV8gbGFiZWwsI19mb3JtXzMxXyBwLCNfZm9ybV8zMV8gdGV4dGFyZWE6bm90KC5nLXJlY2FwdGNoYS1yZXNwb25zZSkgeyBmbG9hdDpub25lOyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fcm93Ll9jaGVja2JveC1yYWRpbyBsYWJlbCB7IGRpc3BsYXk6aW5saW5lOyB9CiAjX2Zvcm1fMzFfIC5fcm93LCNfZm9ybV8zMV8gcCwjX2Zvcm1fMzFfIGxhYmVsIHsgbWFyZ2luLWJvdHRvbTowLjdlbTsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzMxXyAuX3JvdyBpbnB1dFt0eXBlPSJjaGVja2JveCJdLCNfZm9ybV8zMV8gLl9yb3cgaW5wdXRbdHlwZT0icmFkaW8iXSB7IG1hcmdpbjowICFpbXBvcnRhbnQ7IHZlcnRpY2FsLWFsaWduOm1pZGRsZSAhaW1wb3J0YW50OyB9CiAjX2Zvcm1fMzFfIC5fcm93IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gKyBzcGFuIGxhYmVsIHsgZGlzcGxheTppbmxpbmU7IH0KICNfZm9ybV8zMV8gLl9yb3cgc3BhbiBsYWJlbCB7IG1hcmdpbjowICFpbXBvcnRhbnQ7IHdpZHRoOmluaXRpYWwgIWltcG9ydGFudDsgdmVydGljYWwtYWxpZ246bWlkZGxlICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zMV8gLl9mb3JtLWltYWdlIHsgbWF4LXdpZHRoOjEwMCU7IGhlaWdodDphdXRvICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zMV8gaW5wdXRbdHlwZT0idGV4dCJdIHsgcGFkZGluZy1sZWZ0OjEwcHg7IHBhZGRpbmctcmlnaHQ6MTBweDsgZm9udC1zaXplOjE2cHg7IGxpbmUtaGVpZ2h0OjEuM2VtOyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgfQogI19mb3JtXzMxXyBpbnB1dFt0eXBlPSJyYWRpbyJdLCNfZm9ybV8zMV8gaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB3aWR0aDoxLjNlbTsgaGVpZ2h0OjEuM2VtOyBmb250LXNpemU6MWVtOyBtYXJnaW46MCAwLjNlbSAwIDA7IHZlcnRpY2FsLWFsaWduOmJhc2VsaW5lOyB9CiAjX2Zvcm1fMzFfIGJ1dHRvblt0eXBlPSJzdWJtaXQiXSB7IHBhZGRpbmc6MjBweDsgZm9udC1zaXplOjEuNWVtOyB9CiAjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlIHsgbWFyZ2luOjIwcHggMCAwICFpbXBvcnRhbnQ7IH0KIH0KICNfZm9ybV8zMV8geyBwb3NpdGlvbjpyZWxhdGl2ZTsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW46MjVweCBhdXRvIDA7IHBhZGRpbmc6MjBweDsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7ICp6b29tOjE7IGJhY2tncm91bmQ6I2ZmZiAhaW1wb3J0YW50OyBib3JkZXI6MHB4IHNvbGlkICNiMGIwYjAgIWltcG9ydGFudDsgd2lkdGg6NTAwcHg7IC1tb3otYm9yZGVyLXJhZGl1czowcHggIWltcG9ydGFudDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjBweCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjBweCAhaW1wb3J0YW50OyBjb2xvcjojMDAwICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zMV8gLl9mb3JtLXRpdGxlIHsgZm9udC1zaXplOjIycHg7IGxpbmUtaGVpZ2h0OjIycHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWFyZ2luLWJvdHRvbTowOyB9CiAjX2Zvcm1fMzFfOmJlZm9yZSwjX2Zvcm1fMzFfOmFmdGVyIHsgY29udGVudDoiICI7IGRpc3BsYXk6dGFibGU7IH0KICNfZm9ybV8zMV86YWZ0ZXIgeyBjbGVhcjpib3RoOyB9CiAjX2Zvcm1fMzFfLl9pbmxpbmUtc3R5bGUgeyB3aWR0aDphdXRvOyBkaXNwbGF5OmlubGluZS1ibG9jazsgfQogI19mb3JtXzMxXy5faW5saW5lLXN0eWxlIGlucHV0W3R5cGU9InRleHQiXSwjX2Zvcm1fMzFfLl9pbmxpbmUtc3R5bGUgaW5wdXRbdHlwZT0iZGF0ZSJdIHsgcGFkZGluZzoxMHB4IDEycHg7IH0KICNfZm9ybV8zMV8uX2lubGluZS1zdHlsZSBidXR0b24uX2lubGluZS1zdHlsZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6MjdweDsgfQogI19mb3JtXzMxXy5faW5saW5lLXN0eWxlIHAgeyBtYXJnaW46MDsgfQogI19mb3JtXzMxXy5faW5saW5lLXN0eWxlIC5fYnV0dG9uLXdyYXBwZXIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luOjI3cHggMTIuNXB4IDAgMjBweDsgfQogI19mb3JtXzMxXyAuX2Zvcm0tdGhhbmsteW91IHsgcG9zaXRpb246cmVsYXRpdmU7IGxlZnQ6MDsgcmlnaHQ6MDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxOHB4OyB9CiBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjMyMHB4KSBhbmQgKG1heC13aWR0aDo2NjdweCkgeyAjX2Zvcm1fMzFfLl9pbmxpbmUtZm9ybS5faW5saW5lLXN0eWxlIC5faW5saW5lLXN0eWxlLl9idXR0b24td3JhcHBlciB7IG1hcmdpbi10b3A6MjBweCAhaW1wb3J0YW50OyBtYXJnaW4tbGVmdDowICFpbXBvcnRhbnQ7IH0KIH0KPC9zdHlsZT4KPGZvcm0gbWV0aG9kPSJQT1NUIiBhY3Rpb249Imh0dHBzOi8vY2Z0ZS5hY3RpdmVob3N0ZWQuY29tL3Byb2MucGhwIiBpZD0iX2Zvcm1fMzFfIiBjbGFzcz0iX2Zvcm0gX2Zvcm1fMzEgX2lubGluZS1mb3JtICBfZGFyayIgbm92YWxpZGF0ZT4KICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ1IiB2YWx1ZT0iMzEiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZiIgdmFsdWU9IjMxIiAvPgogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InMiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYyIgdmFsdWU9IjAiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibSIgdmFsdWU9IjAiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3ViIiAvPgogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InYiIHZhbHVlPSIyIiAvPgogIDxkaXYgY2xhc3M9Il9mb3JtLWNvbnRlbnQiPgogICAgPGRpdiBjbGFzcz0iX2Zvcm1fZWxlbWVudCBfeDU0MjQzOTgyIF9mdWxsX3dpZHRoIF9jbGVhciIgPgogICAgICA8ZGl2IGNsYXNzPSJfZm9ybS10aXRsZSI+CiAgICAgICAgU3Vic2NyaWJlIHRvIENGVEUmIzAzOTtzIEV2ZW50IE5ld3NsZXR0ZXIKICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Il9mb3JtX2VsZW1lbnQgX3g2MDkzMzQ3MiBfZnVsbF93aWR0aCAiID4KICAgICAgPGxhYmVsIGNsYXNzPSJfZm9ybS1sYWJlbCI+CiAgICAgICAgRmlyc3QgTmFtZSoKICAgICAgPC9sYWJlbD4KICAgICAgPGRpdiBjbGFzcz0iX2ZpZWxkLXdyYXBwZXIiPgogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmaXJzdG5hbWUiIHBsYWNlaG9sZGVyPSJUeXBlIHlvdXIgZmlyc3QgbmFtZSIgcmVxdWlyZWQvPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iX2Zvcm1fZWxlbWVudCBfeDQyNjQ4NjAwIF9mdWxsX3dpZHRoICIgPgogICAgICA8bGFiZWwgY2xhc3M9Il9mb3JtLWxhYmVsIj4KICAgICAgICBMYXN0IE5hbWUqCiAgICAgIDwvbGFiZWw+CiAgICAgIDxkaXYgY2xhc3M9Il9maWVsZC13cmFwcGVyIj4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibGFzdG5hbWUiIHBsYWNlaG9sZGVyPSJUeXBlIHlvdXIgbGFzdCBuYW1lIiByZXF1aXJlZC8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF94MDQ5NzQ5MTkgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgIEVtYWlsKgogICAgICA8L2xhYmVsPgogICAgICA8ZGl2IGNsYXNzPSJfZmllbGQtd3JhcHBlciI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImVtYWlsIiBwbGFjZWhvbGRlcj0iVHlwZSB5b3VyIGVtYWlsIiByZXF1aXJlZC8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF9maWVsZDEgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgIENvdW50cnkqCiAgICAgIDwvbGFiZWw+CiAgICAgIDxkaXYgY2xhc3M9Il9maWVsZC13cmFwcGVyIj4KICAgICAgICA8c2VsZWN0IG5hbWU9ImZpZWxkWzFdIiByZXF1aXJlZD4KICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFmZ2hhbmlzdGFuIiA+CiAgICAgICAgICAgIEFmZ2hhbmlzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFsYmFuaWEiID4KICAgICAgICAgICAgQWxiYW5pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBbGdlcmlhIiA+CiAgICAgICAgICAgIEFsZ2VyaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW1lcmljYW4gU2Ftb2EiID4KICAgICAgICAgICAgQW1lcmljYW4gU2Ftb2EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW5kb3JyYSIgPgogICAgICAgICAgICBBbmRvcnJhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFuZ29sYSIgPgogICAgICAgICAgICBBbmdvbGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW5ndWlsbGEiID4KICAgICAgICAgICAgQW5ndWlsbGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW50YXJjdGljYSIgPgogICAgICAgICAgICBBbnRhcmN0aWNhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFudGlndWEgYW5kIEJhcmJ1ZGEiID4KICAgICAgICAgICAgQW50aWd1YSBhbmQgQmFyYnVkYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBcmdlbnRpbmEiID4KICAgICAgICAgICAgQXJnZW50aW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFybWVuaWEiID4KICAgICAgICAgICAgQXJtZW5pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBcnViYSIgPgogICAgICAgICAgICBBcnViYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBdXN0cmFsaWEiID4KICAgICAgICAgICAgQXVzdHJhbGlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkF1c3RyaWEiID4KICAgICAgICAgICAgQXVzdHJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBemVyYmFpamFuIiA+CiAgICAgICAgICAgIEF6ZXJiYWlqYW4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmFoYW1hcyIgPgogICAgICAgICAgICBCYWhhbWFzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJhaHJhaW4iID4KICAgICAgICAgICAgQmFocmFpbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCYW5nbGFkZXNoIiA+CiAgICAgICAgICAgIEJhbmdsYWRlc2gKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmFyYmFkb3MiID4KICAgICAgICAgICAgQmFyYmFkb3MKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmVsYXJ1cyIgPgogICAgICAgICAgICBCZWxhcnVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJlbGdpdW0iID4KICAgICAgICAgICAgQmVsZ2l1bQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCZWxpemUiID4KICAgICAgICAgICAgQmVsaXplCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJlbmluIiA+CiAgICAgICAgICAgIEJlbmluCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJlcm11ZGEiID4KICAgICAgICAgICAgQmVybXVkYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCaHV0YW4iID4KICAgICAgICAgICAgQmh1dGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJvbGl2aWEiID4KICAgICAgICAgICAgQm9saXZpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCb3NuaWEgYW5kIEhlcnplZ292aW5hIiA+CiAgICAgICAgICAgIEJvc25pYSBhbmQgSGVyemVnb3ZpbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQm90c3dhbmEiID4KICAgICAgICAgICAgQm90c3dhbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQm91dmV0IElzbGFuZCIgPgogICAgICAgICAgICBCb3V2ZXQgSXNsYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJyYXppbCIgPgogICAgICAgICAgICBCcmF6aWwKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQnJpdGlzaCBJbmRpYW4gT2NlYW4gVGVycml0b3J5IiA+CiAgICAgICAgICAgIEJyaXRpc2ggSW5kaWFuIE9jZWFuIFRlcnJpdG9yeQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCcnVuZWkgRGFydXNzYWxhbSIgPgogICAgICAgICAgICBCcnVuZWkgRGFydXNzYWxhbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCdWxnYXJpYSIgPgogICAgICAgICAgICBCdWxnYXJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCdXJraW5hIEZhc28iID4KICAgICAgICAgICAgQnVya2luYSBGYXNvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJ1cnVuZGkiID4KICAgICAgICAgICAgQnVydW5kaQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYW1ib2RpYSIgPgogICAgICAgICAgICBDYW1ib2RpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYW1lcm9vbiIgPgogICAgICAgICAgICBDYW1lcm9vbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYW5hZGEiID4KICAgICAgICAgICAgQ2FuYWRhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNhcGUgVmVyZGUiID4KICAgICAgICAgICAgQ2FwZSBWZXJkZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYXltYW4gSXNsYW5kcyIgPgogICAgICAgICAgICBDYXltYW4gSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDZW50cmFsIEFmcmljYW4gUmVwdWJsaWMiID4KICAgICAgICAgICAgQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNoYWQiID4KICAgICAgICAgICAgQ2hhZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDaGlsZSIgPgogICAgICAgICAgICBDaGlsZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDaGluYSIgPgogICAgICAgICAgICBDaGluYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDaHJpc3RtYXMgSXNsYW5kIiA+CiAgICAgICAgICAgIENocmlzdG1hcyBJc2xhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29jb3MgKEtlZWxpbmcpIElzbGFuZHMiID4KICAgICAgICAgICAgQ29jb3MgKEtlZWxpbmcpIElzbGFuZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29sb21iaWEiID4KICAgICAgICAgICAgQ29sb21iaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29tb3JvcyIgPgogICAgICAgICAgICBDb21vcm9zCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNvbmdvIiA+CiAgICAgICAgICAgIENvbmdvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNvbmdvLCB0aGUgRGVtb2NyYXRpYyBSZXB1YmxpYyBvZiB0aGUiID4KICAgICAgICAgICAgQ29uZ28sIHRoZSBEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDb29rIElzbGFuZHMiID4KICAgICAgICAgICAgQ29vayBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNvc3RhIFJpY2EiID4KICAgICAgICAgICAgQ29zdGEgUmljYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDb3RlIEQmIzAzOTtJdm9pcmUiID4KICAgICAgICAgICAgQ290ZSBEJiMwMzk7SXZvaXJlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNyb2F0aWEiID4KICAgICAgICAgICAgQ3JvYXRpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDdWJhIiA+CiAgICAgICAgICAgIEN1YmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ3lwcnVzIiA+CiAgICAgICAgICAgIEN5cHJ1cwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDemVjaCBSZXB1YmxpYyIgPgogICAgICAgICAgICBDemVjaCBSZXB1YmxpYwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJEZW5tYXJrIiA+CiAgICAgICAgICAgIERlbm1hcmsKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRGppYm91dGkiID4KICAgICAgICAgICAgRGppYm91dGkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRG9taW5pY2EiID4KICAgICAgICAgICAgRG9taW5pY2EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRG9taW5pY2FuIFJlcHVibGljIiA+CiAgICAgICAgICAgIERvbWluaWNhbiBSZXB1YmxpYwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJFY3VhZG9yIiA+CiAgICAgICAgICAgIEVjdWFkb3IKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRWd5cHQiID4KICAgICAgICAgICAgRWd5cHQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRWwgU2FsdmFkb3IiID4KICAgICAgICAgICAgRWwgU2FsdmFkb3IKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRXF1YXRvcmlhbCBHdWluZWEiID4KICAgICAgICAgICAgRXF1YXRvcmlhbCBHdWluZWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRXJpdHJlYSIgPgogICAgICAgICAgICBFcml0cmVhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkVzdG9uaWEiID4KICAgICAgICAgICAgRXN0b25pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJFdGhpb3BpYSIgPgogICAgICAgICAgICBFdGhpb3BpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGYWxrbGFuZCBJc2xhbmRzIChNYWx2aW5hcykiID4KICAgICAgICAgICAgRmFsa2xhbmQgSXNsYW5kcyAoTWFsdmluYXMpCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZhcm9lIElzbGFuZHMiID4KICAgICAgICAgICAgRmFyb2UgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGaWppIiA+CiAgICAgICAgICAgIEZpamkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRmlubGFuZCIgPgogICAgICAgICAgICBGaW5sYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZyYW5jZSIgPgogICAgICAgICAgICBGcmFuY2UKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRnJlbmNoIEd1aWFuYSIgPgogICAgICAgICAgICBGcmVuY2ggR3VpYW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZyZW5jaCBQb2x5bmVzaWEiID4KICAgICAgICAgICAgRnJlbmNoIFBvbHluZXNpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXMiID4KICAgICAgICAgICAgRnJlbmNoIFNvdXRoZXJuIFRlcnJpdG9yaWVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdhYm9uIiA+CiAgICAgICAgICAgIEdhYm9uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdhbWJpYSIgPgogICAgICAgICAgICBHYW1iaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR2VvcmdpYSIgPgogICAgICAgICAgICBHZW9yZ2lhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikdlcm1hbnkiID4KICAgICAgICAgICAgR2VybWFueQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHaGFuYSIgPgogICAgICAgICAgICBHaGFuYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHaWJyYWx0YXIiID4KICAgICAgICAgICAgR2licmFsdGFyCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdyZWVjZSIgPgogICAgICAgICAgICBHcmVlY2UKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3JlZW5sYW5kIiA+CiAgICAgICAgICAgIEdyZWVubGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHcmVuYWRhIiA+CiAgICAgICAgICAgIEdyZW5hZGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3VhZGVsb3VwZSIgPgogICAgICAgICAgICBHdWFkZWxvdXBlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1YW0iID4KICAgICAgICAgICAgR3VhbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHdWF0ZW1hbGEiID4KICAgICAgICAgICAgR3VhdGVtYWxhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1ZXJuc2V5IiA+CiAgICAgICAgICAgIEd1ZXJuc2V5CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1aW5lYSIgPgogICAgICAgICAgICBHdWluZWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3VpbmVhLUJpc3NhdSIgPgogICAgICAgICAgICBHdWluZWEtQmlzc2F1CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1eWFuYSIgPgogICAgICAgICAgICBHdXlhbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSGFpdGkiID4KICAgICAgICAgICAgSGFpdGkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSGVhcmQgSXNsYW5kIGFuZCBNY2RvbmFsZCBJc2xhbmRzIiA+CiAgICAgICAgICAgIEhlYXJkIElzbGFuZCBhbmQgTWNkb25hbGQgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIb2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKSIgPgogICAgICAgICAgICBIb2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIb25kdXJhcyIgPgogICAgICAgICAgICBIb25kdXJhcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIb25nIEtvbmciID4KICAgICAgICAgICAgSG9uZyBLb25nCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikh1bmdhcnkiID4KICAgICAgICAgICAgSHVuZ2FyeQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJY2VsYW5kIiA+CiAgICAgICAgICAgIEljZWxhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSW5kaWEiID4KICAgICAgICAgICAgSW5kaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSW5kb25lc2lhIiA+CiAgICAgICAgICAgIEluZG9uZXNpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJcmFuLCBJc2xhbWljIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIElyYW4sIElzbGFtaWMgUmVwdWJsaWMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSXJhcSIgPgogICAgICAgICAgICBJcmFxCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IklyZWxhbmQiID4KICAgICAgICAgICAgSXJlbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJc3JhZWwiID4KICAgICAgICAgICAgSXNyYWVsCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikl0YWx5IiA+CiAgICAgICAgICAgIEl0YWx5CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkphbWFpY2EiID4KICAgICAgICAgICAgSmFtYWljYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJKYXBhbiIgPgogICAgICAgICAgICBKYXBhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJKb3JkYW4iID4KICAgICAgICAgICAgSm9yZGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkthemFraHN0YW4iID4KICAgICAgICAgICAgS2F6YWtoc3RhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLZW55YSIgPgogICAgICAgICAgICBLZW55YQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLaXJpYmF0aSIgPgogICAgICAgICAgICBLaXJpYmF0aQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLb3JlYSwgRGVtb2NyYXRpYyBQZW9wbGUmIzAzOTtzIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIEtvcmVhLCBEZW1vY3JhdGljIFBlb3BsZSYjMDM5O3MgUmVwdWJsaWMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iS29yZWEsIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIEtvcmVhLCBSZXB1YmxpYyBvZgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLdXdhaXQiID4KICAgICAgICAgICAgS3V3YWl0CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikt5cmd5enN0YW4iID4KICAgICAgICAgICAgS3lyZ3l6c3RhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMYW8gUGVvcGxlJiMwMzk7cyBEZW1vY3JhdGljIFJlcHVibGljIiA+CiAgICAgICAgICAgIExhbyBQZW9wbGUmIzAzOTtzIERlbW9jcmF0aWMgUmVwdWJsaWMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTGF0dmlhIiA+CiAgICAgICAgICAgIExhdHZpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMZWJhbm9uIiA+CiAgICAgICAgICAgIExlYmFub24KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTGVzb3RobyIgPgogICAgICAgICAgICBMZXNvdGhvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkxpYmVyaWEiID4KICAgICAgICAgICAgTGliZXJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMaWJ5YW4gQXJhYiBKYW1haGlyaXlhIiA+CiAgICAgICAgICAgIExpYnlhbiBBcmFiIEphbWFoaXJpeWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTGllY2h0ZW5zdGVpbiIgPgogICAgICAgICAgICBMaWVjaHRlbnN0ZWluCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkxpdGh1YW5pYSIgPgogICAgICAgICAgICBMaXRodWFuaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTHV4ZW1ib3VyZyIgPgogICAgICAgICAgICBMdXhlbWJvdXJnCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hY2FvIiA+CiAgICAgICAgICAgIE1hY2FvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hY2Vkb25pYSwgdGhlIEZvcm1lciBZdWdvc2xhdiBSZXB1YmxpYyBvZiIgPgogICAgICAgICAgICBNYWNlZG9uaWEsIHRoZSBGb3JtZXIgWXVnb3NsYXYgUmVwdWJsaWMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFkYWdhc2NhciIgPgogICAgICAgICAgICBNYWRhZ2FzY2FyCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hbGF3aSIgPgogICAgICAgICAgICBNYWxhd2kKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFsYXlzaWEiID4KICAgICAgICAgICAgTWFsYXlzaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFsZGl2ZXMiID4KICAgICAgICAgICAgTWFsZGl2ZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFsaSIgPgogICAgICAgICAgICBNYWxpCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hbHRhIiA+CiAgICAgICAgICAgIE1hbHRhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hcnNoYWxsIElzbGFuZHMiID4KICAgICAgICAgICAgTWFyc2hhbGwgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNYXJ0aW5pcXVlIiA+CiAgICAgICAgICAgIE1hcnRpbmlxdWUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWF1cml0YW5pYSIgPgogICAgICAgICAgICBNYXVyaXRhbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hdXJpdGl1cyIgPgogICAgICAgICAgICBNYXVyaXRpdXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWF5b3R0ZSIgPgogICAgICAgICAgICBNYXlvdHRlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1leGljbyIgPgogICAgICAgICAgICBNZXhpY28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWljcm9uZXNpYSwgRmVkZXJhdGVkIFN0YXRlcyBvZiIgPgogICAgICAgICAgICBNaWNyb25lc2lhLCBGZWRlcmF0ZWQgU3RhdGVzIG9mCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1vbGRvdmEsIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIE1vbGRvdmEsIFJlcHVibGljIG9mCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1vbmFjbyIgPgogICAgICAgICAgICBNb25hY28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW9uZ29saWEiID4KICAgICAgICAgICAgTW9uZ29saWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW9udGVuZWdybyIgPgogICAgICAgICAgICBNb250ZW5lZ3JvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1vbnRzZXJyYXQiID4KICAgICAgICAgICAgTW9udHNlcnJhdAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNb3JvY2NvIiA+CiAgICAgICAgICAgIE1vcm9jY28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW96YW1iaXF1ZSIgPgogICAgICAgICAgICBNb3phbWJpcXVlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik15YW5tYXIiID4KICAgICAgICAgICAgTXlhbm1hcgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOYW1pYmlhIiA+CiAgICAgICAgICAgIE5hbWliaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmF1cnUiID4KICAgICAgICAgICAgTmF1cnUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmVwYWwiID4KICAgICAgICAgICAgTmVwYWwKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmV0aGVybGFuZHMiID4KICAgICAgICAgICAgTmV0aGVybGFuZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmV0aGVybGFuZHMgQW50aWxsZXMiID4KICAgICAgICAgICAgTmV0aGVybGFuZHMgQW50aWxsZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmV3IENhbGVkb25pYSIgPgogICAgICAgICAgICBOZXcgQ2FsZWRvbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5ldyBaZWFsYW5kIiA+CiAgICAgICAgICAgIE5ldyBaZWFsYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5pY2FyYWd1YSIgPgogICAgICAgICAgICBOaWNhcmFndWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmlnZXIiID4KICAgICAgICAgICAgTmlnZXIKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmlnZXJpYSIgPgogICAgICAgICAgICBOaWdlcmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5pdWUiID4KICAgICAgICAgICAgTml1ZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOb3Jmb2xrIElzbGFuZCIgPgogICAgICAgICAgICBOb3Jmb2xrIElzbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOb3J0aGVybiBNYXJpYW5hIElzbGFuZHMiID4KICAgICAgICAgICAgTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5vcndheSIgPgogICAgICAgICAgICBOb3J3YXkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iT21hbiIgPgogICAgICAgICAgICBPbWFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBha2lzdGFuIiA+CiAgICAgICAgICAgIFBha2lzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBhbGF1IiA+CiAgICAgICAgICAgIFBhbGF1CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBhbGVzdGluaWFuIFRlcnJpdG9yeSwgT2NjdXBpZWQiID4KICAgICAgICAgICAgUGFsZXN0aW5pYW4gVGVycml0b3J5LCBPY2N1cGllZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQYW5hbWEiID4KICAgICAgICAgICAgUGFuYW1hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBhcHVhIE5ldyBHdWluZWEiID4KICAgICAgICAgICAgUGFwdWEgTmV3IEd1aW5lYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQYXJhZ3VheSIgPgogICAgICAgICAgICBQYXJhZ3VheQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQZXJ1IiA+CiAgICAgICAgICAgIFBlcnUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUGhpbGlwcGluZXMiID4KICAgICAgICAgICAgUGhpbGlwcGluZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUGl0Y2Fpcm4iID4KICAgICAgICAgICAgUGl0Y2Fpcm4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUG9sYW5kIiA+CiAgICAgICAgICAgIFBvbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQb3J0dWdhbCIgPgogICAgICAgICAgICBQb3J0dWdhbAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQdWVydG8gUmljbyIgPgogICAgICAgICAgICBQdWVydG8gUmljbwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJRYXRhciIgPgogICAgICAgICAgICBRYXRhcgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJSZXVuaW9uIiA+CiAgICAgICAgICAgIFJldW5pb24KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUm9tYW5pYSIgPgogICAgICAgICAgICBSb21hbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlJ1c3NpYW4gRmVkZXJhdGlvbiIgPgogICAgICAgICAgICBSdXNzaWFuIEZlZGVyYXRpb24KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUndhbmRhIiA+CiAgICAgICAgICAgIFJ3YW5kYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTYWludCBIZWxlbmEiID4KICAgICAgICAgICAgU2FpbnQgSGVsZW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhaW50IEtpdHRzIGFuZCBOZXZpcyIgPgogICAgICAgICAgICBTYWludCBLaXR0cyBhbmQgTmV2aXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2FpbnQgTHVjaWEiID4KICAgICAgICAgICAgU2FpbnQgTHVjaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2FpbnQgUGllcnJlIGFuZCBNaXF1ZWxvbiIgPgogICAgICAgICAgICBTYWludCBQaWVycmUgYW5kIE1pcXVlbG9uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzIiA+CiAgICAgICAgICAgIFNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhbW9hIiA+CiAgICAgICAgICAgIFNhbW9hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhbiBNYXJpbm8iID4KICAgICAgICAgICAgU2FuIE1hcmlubwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTYW8gVG9tZSBhbmQgUHJpbmNpcGUiID4KICAgICAgICAgICAgU2FvIFRvbWUgYW5kIFByaW5jaXBlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhdWRpIEFyYWJpYSIgPgogICAgICAgICAgICBTYXVkaSBBcmFiaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2VuZWdhbCIgPgogICAgICAgICAgICBTZW5lZ2FsCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNlcmJpYSIgPgogICAgICAgICAgICBTZXJiaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2V5Y2hlbGxlcyIgPgogICAgICAgICAgICBTZXljaGVsbGVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNpZXJyYSBMZW9uZSIgPgogICAgICAgICAgICBTaWVycmEgTGVvbmUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2luZ2Fwb3JlIiA+CiAgICAgICAgICAgIFNpbmdhcG9yZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTbG92YWtpYSIgPgogICAgICAgICAgICBTbG92YWtpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTbG92ZW5pYSIgPgogICAgICAgICAgICBTbG92ZW5pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTb2xvbW9uIElzbGFuZHMiID4KICAgICAgICAgICAgU29sb21vbiBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNvbWFsaWEiID4KICAgICAgICAgICAgU29tYWxpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTb3V0aCBBZnJpY2EiID4KICAgICAgICAgICAgU291dGggQWZyaWNhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNvdXRoIEdlb3JnaWEgYW5kIHRoZSBTb3V0aCBTYW5kd2ljaCBJc2xhbmRzIiA+CiAgICAgICAgICAgIFNvdXRoIEdlb3JnaWEgYW5kIHRoZSBTb3V0aCBTYW5kd2ljaCBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNwYWluIiA+CiAgICAgICAgICAgIFNwYWluCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNyaSBMYW5rYSIgPgogICAgICAgICAgICBTcmkgTGFua2EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3VkYW4iID4KICAgICAgICAgICAgU3VkYW4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3VyaW5hbWUiID4KICAgICAgICAgICAgU3VyaW5hbWUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3ZhbGJhcmQgYW5kIEphbiBNYXllbiIgPgogICAgICAgICAgICBTdmFsYmFyZCBhbmQgSmFuIE1heWVuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlN3YXppbGFuZCIgPgogICAgICAgICAgICBTd2F6aWxhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3dlZGVuIiA+CiAgICAgICAgICAgIFN3ZWRlbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTd2l0emVybGFuZCIgPgogICAgICAgICAgICBTd2l0emVybGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTeXJpYW4gQXJhYiBSZXB1YmxpYyIgPgogICAgICAgICAgICBTeXJpYW4gQXJhYiBSZXB1YmxpYwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUYWl3YW4sIFByb3ZpbmNlIG9mIENoaW5hIiA+CiAgICAgICAgICAgIFRhaXdhbiwgUHJvdmluY2Ugb2YgQ2hpbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVGFqaWtpc3RhbiIgPgogICAgICAgICAgICBUYWppa2lzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRhbnphbmlhLCBVbml0ZWQgUmVwdWJsaWMgb2YiID4KICAgICAgICAgICAgVGFuemFuaWEsIFVuaXRlZCBSZXB1YmxpYyBvZgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUaGFpbGFuZCIgPgogICAgICAgICAgICBUaGFpbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUaW1vci1MZXN0ZSIgPgogICAgICAgICAgICBUaW1vci1MZXN0ZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUb2dvIiA+CiAgICAgICAgICAgIFRvZ28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVG9rZWxhdSIgPgogICAgICAgICAgICBUb2tlbGF1CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRvbmdhIiA+CiAgICAgICAgICAgIFRvbmdhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRyaW5pZGFkIGFuZCBUb2JhZ28iID4KICAgICAgICAgICAgVHJpbmlkYWQgYW5kIFRvYmFnbwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUdW5pc2lhIiA+CiAgICAgICAgICAgIFR1bmlzaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVHVya2V5IiA+CiAgICAgICAgICAgIFR1cmtleQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUdXJrbWVuaXN0YW4iID4KICAgICAgICAgICAgVHVya21lbmlzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlR1cmtzIGFuZCBDYWljb3MgSXNsYW5kcyIgPgogICAgICAgICAgICBUdXJrcyBhbmQgQ2FpY29zIElzbGFuZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVHV2YWx1IiA+CiAgICAgICAgICAgIFR1dmFsdQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVZ2FuZGEiID4KICAgICAgICAgICAgVWdhbmRhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlVrcmFpbmUiID4KICAgICAgICAgICAgVWtyYWluZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVbml0ZWQgQXJhYiBFbWlyYXRlcyIgPgogICAgICAgICAgICBVbml0ZWQgQXJhYiBFbWlyYXRlcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVbml0ZWQgS2luZ2RvbSIgPgogICAgICAgICAgICBVbml0ZWQgS2luZ2RvbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVbml0ZWQgU3RhdGVzIiA+CiAgICAgICAgICAgIFVuaXRlZCBTdGF0ZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVW5pdGVkIFN0YXRlcyBNaW5vciBPdXRseWluZyBJc2xhbmRzIiA+CiAgICAgICAgICAgIFVuaXRlZCBTdGF0ZXMgTWlub3IgT3V0bHlpbmcgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVcnVndWF5IiA+CiAgICAgICAgICAgIFVydWd1YXkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVXpiZWtpc3RhbiIgPgogICAgICAgICAgICBVemJla2lzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlZhbnVhdHUiID4KICAgICAgICAgICAgVmFudWF0dQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWZW5lenVlbGEiID4KICAgICAgICAgICAgVmVuZXp1ZWxhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlZpZXRuYW0iID4KICAgICAgICAgICAgVmlldG5hbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWaXJnaW4gSXNsYW5kcywgQnJpdGlzaCIgPgogICAgICAgICAgICBWaXJnaW4gSXNsYW5kcywgQnJpdGlzaAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWaXJnaW4gSXNsYW5kcywgVS5zLiIgPgogICAgICAgICAgICBWaXJnaW4gSXNsYW5kcywgVS5zLgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJXYWxsaXMgYW5kIEZ1dHVuYSIgPgogICAgICAgICAgICBXYWxsaXMgYW5kIEZ1dHVuYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJXZXN0ZXJuIFNhaGFyYSIgPgogICAgICAgICAgICBXZXN0ZXJuIFNhaGFyYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJZZW1lbiIgPgogICAgICAgICAgICBZZW1lbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJaYW1iaWEiID4KICAgICAgICAgICAgWmFtYmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlppbWJhYndlIiA+CiAgICAgICAgICAgIFppbWJhYndlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNHIiA+CiAgICAgICAgICAgIFNHCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNBTkFEQSIgPgogICAgICAgICAgICBDQU5BREEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iS29yZWEiID4KICAgICAgICAgICAgS29yZWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIiA+CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikx1eGVtYm91cmdoIiA+CiAgICAgICAgICAgIEx1eGVtYm91cmdoCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1ZIiA+CiAgICAgICAgICAgIE1ZCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkVTV0FSVElOSSIgPgogICAgICAgICAgICBFU1dBUlRJTkkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZVN3YXRpbmkgIiA+CiAgICAgICAgICAgIGVTd2F0aW5pCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNaIiA+CiAgICAgICAgICAgIFNaCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNBIiA+CiAgICAgICAgICAgIENBCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdyZWF0IEJyaXRhaW4iID4KICAgICAgICAgICAgR3JlYXQgQnJpdGFpbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJSdXNzaWEiID4KICAgICAgICAgICAgUnVzc2lhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkhvbmcgS29uZyBTQVIgQ2hpbmEiID4KICAgICAgICAgICAgSG9uZyBLb25nIFNBUiBDaGluYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMb25kb24iID4KICAgICAgICAgICAgTG9uZG9uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICA8L3NlbGVjdD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Il9mb3JtX2VsZW1lbnQgX2ZpZWxkMiBfZnVsbF93aWR0aCAiID4KICAgICAgPGRpdiBjbGFzcz0iX3JvdyI+CiAgICAgICAgPGxhYmVsIGNsYXNzPSJfZm9ybS1sYWJlbCI+CiAgICAgICAgICBQcml2YWN5IFBvbGljeSoKICAgICAgICA8L2xhYmVsPgogICAgICA8L2Rpdj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmllbGRbMl1bXSIgdmFsdWU9In58Ij4KICAgICAgPGRpdiBjbGFzcz0iX3JvdyBfY2hlY2tib3gtcmFkaW8iPgogICAgICAgIDxpbnB1dCBpZD0iZmllbGRfMkkgcmVhZCBhbmQgdW5kZXJzdG9vZCBDRlRFIFByaXZhY3kgUG9saWN5ICh3d3cuY2Z0ZS5lZHVjYXRpb24vcHJpdmFjeS1wb2xpY3kpIiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZmllbGRbMl1bXSIgdmFsdWU9IkkgcmVhZCBhbmQgdW5kZXJzdG9vZCBDRlRFIFByaXZhY3kgUG9saWN5ICh3d3cuY2Z0ZS5lZHVjYXRpb24vcHJpdmFjeS1wb2xpY3kpIiBjbGFzcz0iYW55IiAgcmVxdWlyZWQ+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8bGFiZWwgZm9yPSJmaWVsZF8ySSByZWFkIGFuZCB1bmRlcnN0b29kIENGVEUgUHJpdmFjeSBQb2xpY3kgKHd3dy5jZnRlLmVkdWNhdGlvbi9wcml2YWN5LXBvbGljeSkiPgogICAgICAgICAgICBJIHJlYWQgYW5kIHVuZGVyc3Rvb2QgQ0ZURSBQcml2YWN5IFBvbGljeSAod3d3LmNmdGUuZWR1Y2F0aW9uL3ByaXZhY3ktcG9saWN5KQogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF9maWVsZDMgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxkaXYgY2xhc3M9Il9yb3ciPgogICAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgICAgQ29tbXVuaWNhdGlvbiBvcHRpb25zCiAgICAgICAgPC9sYWJlbD4KICAgICAgPC9kaXY+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpZWxkWzNdW10iIHZhbHVlPSJ+fCI+CiAgICAgIDxkaXYgY2xhc3M9Il9yb3cgX2NoZWNrYm94LXJhZGlvIj4KICAgICAgICA8aW5wdXQgaWQ9ImZpZWxkXzNJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSYjMDM5O3MgY291cnNlcyBieSBlbWFpbCIgdHlwZT0iY2hlY2tib3giIG5hbWU9ImZpZWxkWzNdW10iIHZhbHVlPSJJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSYjMDM5O3MgY291cnNlcyBieSBlbWFpbCIgICA+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8bGFiZWwgZm9yPSJmaWVsZF8zSSYjMDM5O20gaGFwcHkgdG8gcmVjZWl2ZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IENGVEUmIzAzOTtzIGNvdXJzZXMgYnkgZW1haWwiPgogICAgICAgICAgICBJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSYjMDM5O3MgY291cnNlcyBieSBlbWFpbAogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJfcm93IF9jaGVja2JveC1yYWRpbyI+CiAgICAgICAgPGlucHV0IGlkPSJmaWVsZF8zSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZ2VuZXJhbCBuZXdzbGV0dGVyIiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZmllbGRbM11bXSIgdmFsdWU9Ikkgd2FudCB0byByZWNlaXZlIENGVEUmIzAzOTtzIGdlbmVyYWwgbmV3c2xldHRlciIgICA+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8bGFiZWwgZm9yPSJmaWVsZF8zSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZ2VuZXJhbCBuZXdzbGV0dGVyIj4KICAgICAgICAgICAgSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZ2VuZXJhbCBuZXdzbGV0dGVyCiAgICAgICAgICA8L2xhYmVsPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Il9yb3cgX2NoZWNrYm94LXJhZGlvIj4KICAgICAgICA8aW5wdXQgaWQ9ImZpZWxkXzNJIHdhbnQgdG8gcmVjZWl2ZSBDRlRFJiMwMzk7cyBldmVudHMgbmV3c2xldHRlciAiIHR5cGU9ImNoZWNrYm94IiBuYW1lPSJmaWVsZFszXVtdIiB2YWx1ZT0iSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZXZlbnRzIG5ld3NsZXR0ZXIgIiAgID4KICAgICAgICA8c3Bhbj4KICAgICAgICAgIDxsYWJlbCBmb3I9ImZpZWxkXzNJIHdhbnQgdG8gcmVjZWl2ZSBDRlRFJiMwMzk7cyBldmVudHMgbmV3c2xldHRlciAiPgogICAgICAgICAgICBJIHdhbnQgdG8gcmVjZWl2ZSBDRlRFJiMwMzk7cyBldmVudHMgbmV3c2xldHRlcgogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfYnV0dG9uLXdyYXBwZXIgX2Z1bGxfd2lkdGgiPgogICAgICA8YnV0dG9uIGlkPSJfZm9ybV8zMV9zdWJtaXQiIGNsYXNzPSJfc3VibWl0IiB0eXBlPSJzdWJtaXQiPgogICAgICAgIFN1Ym1pdAogICAgICA8L2J1dHRvbj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iX2NsZWFyLWVsZW1lbnQiPgogICAgPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iX2Zvcm0tdGhhbmsteW91IiBzdHlsZT0iZGlzcGxheTpub25lOyI+CiAgPC9kaXY+CjwvZm9ybT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CndpbmRvdy5jZmllbGRzID0geyIxIjoiY291bnRyeSIsIjIiOiJwcml2YWN5X3BvbGljeSIsIjMiOiJjb21tdW5pY2F0aW9uX29wdGlvbnMifTsKd2luZG93Ll9zaG93X3RoYW5rX3lvdSA9IGZ1bmN0aW9uKGlkLCBtZXNzYWdlLCB0cmFja2NtcF91cmwpIHsKICB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfZm9ybV8nICsgaWQgKyAnXycpLCB0aGFua195b3UgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybS10aGFuay15b3UnKTsKICBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybS1jb250ZW50Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICB0aGFua195b3UuaW5uZXJIVE1MID0gbWVzc2FnZTsKICB0aGFua195b3Uuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgaWYgKHR5cGVvZih0cmFja2NtcF91cmwpICE9ICd1bmRlZmluZWQnICYmIHRyYWNrY21wX3VybCkgewogICAgLy8gU2l0ZSB0cmFja2luZyBVUkwgdG8gdXNlIGFmdGVyIGlubGluZSBmb3JtIHN1Ym1pc3Npb24uCiAgICBfbG9hZF9zY3JpcHQodHJhY2tjbXBfdXJsKTsKICB9CiAgaWYgKHR5cGVvZiB3aW5kb3cuX2Zvcm1fY2FsbGJhY2sgIT09ICd1bmRlZmluZWQnKSB3aW5kb3cuX2Zvcm1fY2FsbGJhY2soaWQpOwp9Owp3aW5kb3cuX3Nob3dfZXJyb3IgPSBmdW5jdGlvbihpZCwgbWVzc2FnZSwgaHRtbCkgewogIHZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ19mb3JtXycgKyBpZCArICdfJyksIGVyciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLCBidXR0b24gPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpLCBvbGRfZXJyb3IgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybV9lcnJvcicpOwogIGlmIChvbGRfZXJyb3IpIG9sZF9lcnJvci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG9sZF9lcnJvcik7CiAgZXJyLmlubmVySFRNTCA9IG1lc3NhZ2U7CiAgZXJyLmNsYXNzTmFtZSA9ICdfZXJyb3ItaW5uZXIgX2Zvcm1fZXJyb3IgX25vX2Fycm93JzsKICB2YXIgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogIHdyYXBwZXIuY2xhc3NOYW1lID0gJ19mb3JtLWlubmVyJzsKICB3cmFwcGVyLmFwcGVuZENoaWxkKGVycik7CiAgYnV0dG9uLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHdyYXBwZXIsIGJ1dHRvbik7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2lkXj0iX2Zvcm0iXVtpZCQ9Il9zdWJtaXQiXScpLmRpc2FibGVkID0gZmFsc2U7CiAgaWYgKGh0bWwpIHsKICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGRpdi5jbGFzc05hbWUgPSAnX2Vycm9yLWh0bWwnOwogICAgZGl2LmlubmVySFRNTCA9IGh0bWw7CiAgICBlcnIuYXBwZW5kQ2hpbGQoZGl2KTsKICB9Cn07CndpbmRvdy5fbG9hZF9zY3JpcHQgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKSB7CiAgICB2YXIgaGVhZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKSwgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JyksIHIgPSBmYWxzZTsKICAgIHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICBzY3JpcHQuY2hhcnNldCA9ICd1dGYtOCc7CiAgICBzY3JpcHQuc3JjID0gdXJsOwogICAgaWYgKGNhbGxiYWNrKSB7CiAgICAgIHNjcmlwdC5vbmxvYWQgPSBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgIGlmICghciAmJiAoIXRoaXMucmVhZHlTdGF0ZSB8fCB0aGlzLnJlYWR5U3RhdGUgPT0gJ2NvbXBsZXRlJykpIHsKICAgICAgICByID0gdHJ1ZTsKICAgICAgICBjYWxsYmFjaygpOwogICAgICAgIH0KICAgICAgfTsKICAgIH0KICAgIGhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKfTsKKGZ1bmN0aW9uKCkgewogIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoLnNlYXJjaCgiZXhjbHVkZWZvcm0iKSAhPT0gLTEpIHJldHVybiBmYWxzZTsKICB2YXIgZ2V0Q29va2llID0gZnVuY3Rpb24obmFtZSkgewogICAgdmFyIG1hdGNoID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoJyhefDsgKScgKyBuYW1lICsgJz0oW147XSspJykpOwogICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMl0gOiBudWxsOwogIH0KICB2YXIgc2V0Q29va2llID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHsKICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpOwogICAgdmFyIHRpbWUgPSBub3cuZ2V0VGltZSgpOwogICAgdmFyIGV4cGlyZVRpbWUgPSB0aW1lICsgMTAwMCAqIDYwICogNjAgKiAyNCAqIDM2NTsKICAgIG5vdy5zZXRUaW1lKGV4cGlyZVRpbWUpOwogICAgZG9jdW1lbnQuY29va2llID0gbmFtZSArICc9JyArIHZhbHVlICsgJzsgZXhwaXJlcz0nICsgbm93ICsgJztwYXRoPS8nOwogIH0KICAgICAgdmFyIGFkZEV2ZW50ID0gZnVuY3Rpb24oZWxlbWVudCwgZXZlbnQsIGZ1bmMpIHsKICAgIGlmIChlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHsKICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBmdW5jKTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBvbGRGdW5jID0gZWxlbWVudFsnb24nICsgZXZlbnRdOwogICAgICBlbGVtZW50WydvbicgKyBldmVudF0gPSBmdW5jdGlvbigpIHsKICAgICAgICBvbGRGdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICB9OwogICAgfQogIH0KICB2YXIgX3JlbW92ZWQgPSBmYWxzZTsKICB2YXIgZm9ybV90b19zdWJtaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnX2Zvcm1fMzFfJyk7CiAgdmFyIGFsbElucHV0cyA9IGZvcm1fdG9fc3VibWl0LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0LCBzZWxlY3QsIHRleHRhcmVhJyksIHRvb2x0aXBzID0gW10sIHN1Ym1pdHRlZCA9IGZhbHNlOwoKICB2YXIgZ2V0VXJsUGFyYW0gPSBmdW5jdGlvbihuYW1lKSB7CiAgICB2YXIgcmVnZXhTdHIgPSAnW1w/Jl0nICsgbmFtZSArICc9KFteJiNdKiknOwogICAgdmFyIHJlc3VsdHMgPSBuZXcgUmVnRXhwKHJlZ2V4U3RyLCAnaScpLmV4ZWMod2luZG93LmxvY2F0aW9uLmhyZWYpOwogICAgcmV0dXJuIHJlc3VsdHMgIT0gdW5kZWZpbmVkID8gZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMV0pIDogZmFsc2U7CiAgfTsKCiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxJbnB1dHMubGVuZ3RoOyBpKyspIHsKICAgIHZhciByZWdleFN0ciA9ICJmaWVsZFxcWyhcXGQrKVxcXSI7CiAgICB2YXIgcmVzdWx0cyA9IG5ldyBSZWdFeHAocmVnZXhTdHIpLmV4ZWMoYWxsSW5wdXRzW2ldLm5hbWUpOwogICAgaWYgKHJlc3VsdHMgIT0gdW5kZWZpbmVkKSB7CiAgICAgIGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUgPSB3aW5kb3cuY2ZpZWxkc1tyZXN1bHRzWzFdXTsKICAgIH0gZWxzZSB7CiAgICAgIGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUgPSBhbGxJbnB1dHNbaV0ubmFtZTsKICAgIH0KICAgIHZhciBmaWVsZFZhbCA9IGdldFVybFBhcmFtKGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUpOwoKICAgIGlmIChmaWVsZFZhbCkgewogICAgICBpZiAoYWxsSW5wdXRzW2ldLnR5cGUgPT0gInJhZGlvIiB8fCBhbGxJbnB1dHNbaV0udHlwZSA9PSAiY2hlY2tib3giKSB7CiAgICAgICAgaWYgKGFsbElucHV0c1tpXS52YWx1ZSA9PSBmaWVsZFZhbCkgewogICAgICAgICAgYWxsSW5wdXRzW2ldLmNoZWNrZWQgPSB0cnVlOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBhbGxJbnB1dHNbaV0udmFsdWUgPSBmaWVsZFZhbDsKICAgICAgfQogICAgfQogIH0KCiAgdmFyIHJlbW92ZV90b29sdGlwcyA9IGZ1bmN0aW9uKCkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b29sdGlwcy5sZW5ndGg7IGkrKykgewogICAgICB0b29sdGlwc1tpXS50aXAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0b29sdGlwc1tpXS50aXApOwogICAgfQogICAgICB0b29sdGlwcyA9IFtdOwogIH07CiAgdmFyIHJlbW92ZV90b29sdGlwID0gZnVuY3Rpb24oZWxlbSkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b29sdGlwcy5sZW5ndGg7IGkrKykgewogICAgICBpZiAodG9vbHRpcHNbaV0uZWxlbSA9PT0gZWxlbSkgewogICAgICAgIHRvb2x0aXBzW2ldLnRpcC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRvb2x0aXBzW2ldLnRpcCk7CiAgICAgICAgdG9vbHRpcHMuc3BsaWNlKGksIDEpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgfQogIH07CiAgdmFyIGNyZWF0ZV90b29sdGlwID0gZnVuY3Rpb24oZWxlbSwgdGV4dCkgewogICAgdmFyIHRvb2x0aXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgYXJyb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgaW5uZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgbmV3X3Rvb2x0aXAgPSB7fTsKICAgIGlmIChlbGVtLnR5cGUgIT0gJ3JhZGlvJyAmJiBlbGVtLnR5cGUgIT0gJ2NoZWNrYm94JykgewogICAgICB0b29sdGlwLmNsYXNzTmFtZSA9ICdfZXJyb3InOwogICAgICBhcnJvdy5jbGFzc05hbWUgPSAnX2Vycm9yLWFycm93JzsKICAgICAgaW5uZXIuY2xhc3NOYW1lID0gJ19lcnJvci1pbm5lcic7CiAgICAgIGlubmVyLmlubmVySFRNTCA9IHRleHQ7CiAgICAgIHRvb2x0aXAuYXBwZW5kQ2hpbGQoYXJyb3cpOwogICAgICB0b29sdGlwLmFwcGVuZENoaWxkKGlubmVyKTsKICAgICAgZWxlbS5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRvb2x0aXApOwogICAgfSBlbHNlIHsKICAgICAgdG9vbHRpcC5jbGFzc05hbWUgPSAnX2Vycm9yLWlubmVyIF9ub19hcnJvdyc7CiAgICAgIHRvb2x0aXAuaW5uZXJIVE1MID0gdGV4dDsKICAgICAgZWxlbS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0b29sdGlwLCBlbGVtKTsKICAgICAgbmV3X3Rvb2x0aXAubm9fYXJyb3cgPSB0cnVlOwogICAgfQogICAgbmV3X3Rvb2x0aXAudGlwID0gdG9vbHRpcDsKICAgIG5ld190b29sdGlwLmVsZW0gPSBlbGVtOwogICAgdG9vbHRpcHMucHVzaChuZXdfdG9vbHRpcCk7CiAgICByZXR1cm4gbmV3X3Rvb2x0aXA7CiAgfTsKICB2YXIgcmVzaXplX3Rvb2x0aXAgPSBmdW5jdGlvbih0b29sdGlwKSB7CiAgICB2YXIgcmVjdCA9IHRvb2x0aXAuZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIHZhciBkb2MgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHNjcm9sbFBvc2l0aW9uID0gcmVjdC50b3AgLSAoKHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2Muc2Nyb2xsVG9wKSAgLSAoZG9jLmNsaWVudFRvcCB8fCAwKSk7CiAgICBpZiAoc2Nyb2xsUG9zaXRpb24gPCA0MCkgewogICAgICB0b29sdGlwLnRpcC5jbGFzc05hbWUgPSB0b29sdGlwLnRpcC5jbGFzc05hbWUucmVwbGFjZSgvID8oX2Fib3ZlfF9iZWxvdykgPy9nLCAnJykgKyAnIF9iZWxvdyc7CiAgICB9IGVsc2UgewogICAgICB0b29sdGlwLnRpcC5jbGFzc05hbWUgPSB0b29sdGlwLnRpcC5jbGFzc05hbWUucmVwbGFjZSgvID8oX2Fib3ZlfF9iZWxvdykgPy9nLCAnJykgKyAnIF9hYm92ZSc7CiAgICB9CiAgfTsKICB2YXIgcmVzaXplX3Rvb2x0aXBzID0gZnVuY3Rpb24oKSB7CiAgICBpZiAoX3JlbW92ZWQpIHJldHVybjsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9vbHRpcHMubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKCF0b29sdGlwc1tpXS5ub19hcnJvdykgcmVzaXplX3Rvb2x0aXAodG9vbHRpcHNbaV0pOwogICAgfQogIH07CiAgdmFyIHZhbGlkYXRlX2ZpZWxkID0gZnVuY3Rpb24oZWxlbSwgcmVtb3ZlKSB7CiAgICB2YXIgdG9vbHRpcCA9IG51bGwsIHZhbHVlID0gZWxlbS52YWx1ZSwgbm9fZXJyb3IgPSB0cnVlOwogICAgcmVtb3ZlID8gcmVtb3ZlX3Rvb2x0aXAoZWxlbSkgOiBmYWxzZTsKICAgIGlmIChlbGVtLnR5cGUgIT0gJ2NoZWNrYm94JykgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZS5yZXBsYWNlKC8gP19oYXNfZXJyb3IgPy9nLCAnJyk7CiAgICBpZiAoZWxlbS5nZXRBdHRyaWJ1dGUoJ3JlcXVpcmVkJykgIT09IG51bGwpIHsKICAgICAgaWYgKGVsZW0udHlwZSA9PSAncmFkaW8nIHx8IChlbGVtLnR5cGUgPT0gJ2NoZWNrYm94JyAmJiAvYW55Ly50ZXN0KGVsZW0uY2xhc3NOYW1lKSkpIHsKICAgICAgICB2YXIgZWxlbXMgPSBmb3JtX3RvX3N1Ym1pdC5lbGVtZW50c1tlbGVtLm5hbWVdOwogICAgICAgIGlmICghKGVsZW1zIGluc3RhbmNlb2YgTm9kZUxpc3QgfHwgZWxlbXMgaW5zdGFuY2VvZiBIVE1MQ29sbGVjdGlvbikgfHwgZWxlbXMubGVuZ3RoIDw9IDEpIHsKICAgICAgICAgIG5vX2Vycm9yID0gZWxlbS5jaGVja2VkOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIG5vX2Vycm9yID0gZmFsc2U7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChlbGVtc1tpXS5jaGVja2VkKSBub19lcnJvciA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghbm9fZXJyb3IpIHsKICAgICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiUGxlYXNlIHNlbGVjdCBhbiBvcHRpb24uIik7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGVsZW0udHlwZSA9PSdjaGVja2JveCcpIHsKICAgICAgICB2YXIgZWxlbXMgPSBmb3JtX3RvX3N1Ym1pdC5lbGVtZW50c1tlbGVtLm5hbWVdLCBmb3VuZCA9IGZhbHNlLCBlcnIgPSBbXTsKICAgICAgICBub19lcnJvciA9IHRydWU7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgaWYgKGVsZW1zW2ldLmdldEF0dHJpYnV0ZSgncmVxdWlyZWQnKSA9PT0gbnVsbCkgY29udGludWU7CiAgICAgICAgICBpZiAoIWZvdW5kICYmIGVsZW1zW2ldICE9PSBlbGVtKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgIGVsZW1zW2ldLmNsYXNzTmFtZSA9IGVsZW1zW2ldLmNsYXNzTmFtZS5yZXBsYWNlKC8gP19oYXNfZXJyb3IgPy9nLCAnJyk7CiAgICAgICAgICBpZiAoIWVsZW1zW2ldLmNoZWNrZWQpIHsKICAgICAgICAgICAgbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgICAgICAgZWxlbXNbaV0uY2xhc3NOYW1lID0gZWxlbXNbaV0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICAgICAgZXJyLnB1c2goIkNoZWNraW5nICVzIGlzIHJlcXVpcmVkIi5yZXBsYWNlKCIlcyIsIGVsZW1zW2ldLnZhbHVlKSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghbm9fZXJyb3IpIHsKICAgICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCBlcnIuam9pbignPGJyLz4nKSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGVsZW0udGFnTmFtZSA9PSAnU0VMRUNUJykgewogICAgICAgIHZhciBzZWxlY3RlZCA9IHRydWU7CiAgICAgICAgaWYgKGVsZW0ubXVsdGlwbGUpIHsKICAgICAgICAgIHNlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW0ub3B0aW9ucy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoZWxlbS5vcHRpb25zW2ldLnNlbGVjdGVkKSB7CiAgICAgICAgICAgICAgc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbS5vcHRpb25zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChlbGVtLm9wdGlvbnNbaV0uc2VsZWN0ZWQgJiYgIWVsZW0ub3B0aW9uc1tpXS52YWx1ZSkgewogICAgICAgICAgICAgIHNlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFzZWxlY3RlZCkgewogICAgICAgICAgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZSArICcgX2hhc19lcnJvcic7CiAgICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgICAgdG9vbHRpcCA9IGNyZWF0ZV90b29sdGlwKGVsZW0sICJQbGVhc2Ugc2VsZWN0IGFuIG9wdGlvbi4iKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKTsKICAgICAgfQogICAgfQogICAgaWYgKG5vX2Vycm9yICYmIGVsZW0ubmFtZSA9PSAnZW1haWwnKSB7CiAgICAgIGlmICghdmFsdWUubWF0Y2goL15bXCtfYS16MC05LScmPV0rKFwuW1wrX2EtejAtOS0nXSspKkBbYS16MC05LV0rKFwuW2EtejAtOS1dKykqKFwuW2Etel17Mix9KSQvaSkpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiRW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzLiIpOwogICAgICB9CiAgICB9CiAgICBpZiAobm9fZXJyb3IgJiYgL2RhdGVfZmllbGQvLnRlc3QoZWxlbS5jbGFzc05hbWUpKSB7CiAgICAgIGlmICghdmFsdWUubWF0Y2goL15cZFxkXGRcZC1cZFxkLVxkXGQkLykpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiRW50ZXIgYSB2YWxpZCBkYXRlLiIpOwogICAgICB9CiAgICB9CiAgICB0b29sdGlwID8gcmVzaXplX3Rvb2x0aXAodG9vbHRpcCkgOiBmYWxzZTsKICAgIHJldHVybiBub19lcnJvcjsKICB9OwogIHZhciBuZWVkc192YWxpZGF0ZSA9IGZ1bmN0aW9uKGVsKSB7CiAgICByZXR1cm4gZWwubmFtZSA9PSAnZW1haWwnIHx8IGVsLmdldEF0dHJpYnV0ZSgncmVxdWlyZWQnKSAhPT0gbnVsbDsKICB9OwogIHZhciB2YWxpZGF0ZV9mb3JtID0gZnVuY3Rpb24oZSkgewogICAgdmFyIGVyciA9IGZvcm1fdG9fc3VibWl0LnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybV9lcnJvcicpLCBub19lcnJvciA9IHRydWU7CiAgICBpZiAoIXN1Ym1pdHRlZCkgewogICAgICBzdWJtaXR0ZWQgPSB0cnVlOwogICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYWxsSW5wdXRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgdmFyIGlucHV0ID0gYWxsSW5wdXRzW2ldOwogICAgICAgIGlmIChuZWVkc192YWxpZGF0ZShpbnB1dCkpIHsKICAgICAgICAgIGlmIChpbnB1dC50eXBlID09ICd0ZXh0JykgewogICAgICAgICAgICBhZGRFdmVudChpbnB1dCwgJ2JsdXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS50cmltKCk7CiAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBhZGRFdmVudChpbnB1dCwgJ2lucHV0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC50eXBlID09ICdyYWRpbycgfHwgaW5wdXQudHlwZSA9PSAnY2hlY2tib3gnKSB7CiAgICAgICAgICAgIChmdW5jdGlvbihlbCkgewogICAgICAgICAgICAgIHZhciByYWRpb3MgPSBmb3JtX3RvX3N1Ym1pdC5lbGVtZW50c1tlbC5uYW1lXTsKICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhZGlvcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgYWRkRXZlbnQocmFkaW9zW2ldLCAnY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQoZWwsIHRydWUpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KShpbnB1dCk7CiAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnRhZ05hbWUgPT0gJ1NFTEVDVCcpIHsKICAgICAgICAgICAgYWRkRXZlbnQoaW5wdXQsICdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB2YWxpZGF0ZV9maWVsZCh0aGlzLCB0cnVlKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICByZW1vdmVfdG9vbHRpcHMoKTsKICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhbGxJbnB1dHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKICAgICAgdmFyIGVsZW0gPSBhbGxJbnB1dHNbaV07CiAgICAgIGlmIChuZWVkc192YWxpZGF0ZShlbGVtKSkgewogICAgICAgIGlmIChlbGVtLnRhZ05hbWUudG9Mb3dlckNhc2UoKSAhPT0gInNlbGVjdCIpIHsKICAgICAgICAgIGVsZW0udmFsdWUgPSBlbGVtLnZhbHVlLnRyaW0oKTsKICAgICAgICB9CiAgICAgICAgdmFsaWRhdGVfZmllbGQoZWxlbSkgPyB0cnVlIDogbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgfQogICAgfQogICAgaWYgKCFub19lcnJvciAmJiBlKSB7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIH0KICAgIHJlc2l6ZV90b29sdGlwcygpOwogICAgcmV0dXJuIG5vX2Vycm9yOwogIH07CiAgYWRkRXZlbnQod2luZG93LCAncmVzaXplJywgcmVzaXplX3Rvb2x0aXBzKTsKICBhZGRFdmVudCh3aW5kb3csICdzY3JvbGwnLCByZXNpemVfdG9vbHRpcHMpOwogIHdpbmRvdy5fb2xkX3NlcmlhbGl6ZSA9IG51bGw7CiAgaWYgKHR5cGVvZiBzZXJpYWxpemUgIT09ICd1bmRlZmluZWQnKSB3aW5kb3cuX29sZF9zZXJpYWxpemUgPSB3aW5kb3cuc2VyaWFsaXplOwogIF9sb2FkX3NjcmlwdCgiLy9kM3J4YWlqNTZ2amVnZS5jbG91ZGZyb250Lm5ldC9mb3JtLXNlcmlhbGl6ZS8wLjMvc2VyaWFsaXplLm1pbi5qcyIsIGZ1bmN0aW9uKCkgewogICAgd2luZG93Ll9mb3JtX3NlcmlhbGl6ZSA9IHdpbmRvdy5zZXJpYWxpemU7CiAgICBpZiAod2luZG93Ll9vbGRfc2VyaWFsaXplKSB3aW5kb3cuc2VyaWFsaXplID0gd2luZG93Ll9vbGRfc2VyaWFsaXplOwogIH0pOwogIHZhciBmb3JtX3N1Ym1pdCA9IGZ1bmN0aW9uKGUpIHsKICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIGlmICh2YWxpZGF0ZV9mb3JtKCkpIHsKICAgICAgLy8gdXNlIHRoaXMgdHJpY2sgdG8gZ2V0IHRoZSBzdWJtaXQgYnV0dG9uICYgZGlzYWJsZSBpdCB1c2luZyBwbGFpbiBqYXZhc2NyaXB0CiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNfZm9ybV8zMV9zdWJtaXQnKS5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgICAgIHZhciBzZXJpYWxpemVkID0gX2Zvcm1fc2VyaWFsaXplKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfZm9ybV8zMV8nKSk7CiAgICAgIHZhciBlcnIgPSBmb3JtX3RvX3N1Ym1pdC5xdWVyeVNlbGVjdG9yKCcuX2Zvcm1fZXJyb3InKTsKICAgICAgZXJyID8gZXJyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZXJyKSA6IGZhbHNlOwogICAgICBfbG9hZF9zY3JpcHQoJ2h0dHBzOi8vY2Z0ZS5hY3RpdmVob3N0ZWQuY29tL3Byb2MucGhwPycgKyBzZXJpYWxpemVkICsgJyZqc29ucD10cnVlJyk7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7CiAgfTsKICBhZGRFdmVudChmb3JtX3RvX3N1Ym1pdCwgJ3N1Ym1pdCcsIGZvcm1fc3VibWl0KTsKfSkoKTsKCjwvc2NyaXB0Pg==[/fusion_code][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container][fusion_builder_container admin_label=”Mobile” 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” 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=”2%” padding_right=”2%” padding_bottom=”2%” padding_left=”2%”][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ spacing=”yes” center_content=”no” link=”” target=”_self” min_height=”” hide_on_mobile=”small-visibility” class=”” id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” hover_type=”none” border_size=”” border_color=”” border_style=”solid” border_position=”all” padding_top=”2%” padding_right=”2%” padding_bottom=”2%” padding_left=”2%” margin_top=”0px” margin_bottom=”0px” 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=””]

How Traders Can Join the Fintech Movement

As Fintech continues to make waves through the industry of finance, certain lessons are quickly being learned. The impact of technology is already a well-known concept in retail banking, wherein the disruption is self-evident. But what of technology’s impact on capital markets and the trading floor? Is disruption as rife in these sectors, or are investment banks somehow immune to competition from emerging tech?

Earlier this month, on November 6th, CFTE held a fireside chat with finance leaders to address these questions and more. Hosted by MUFG, the 5th largest bank worldwide, in their European Headquarters in London, the evening freely invited CFTE alumni and learners to gain insight from a panel formed of MUFG’s Stephane Alex; Behavox’s Alex Viall; Mosaic Smart Data’s Matt Hodgson, and not leastly our co-founder Huy Nguyen Trieu.

The evening held much discussion on the various strategies and frameworks employed by leading financial figures to adapt to the industry’s rapid digitisation. A packed hall of keen professionals heard from Stephane Alex, Head of Global Customer Marketing at MUFG, as he outlined his firm’s major focus over the past five years: Innovation. Following their expansion out of Japan, the fields of Artificial Intelligence, Big Data, Blockchain, Robotic Process Automation (RPA) were all areas of innovation for MUFG. Meanwhile, as the bank continued to develop schemes based on these emerging technologies, they also had to be innovative on the trading floor. This meant greater importance on the pillars of: Risk Management, Data-driven Predictions, Sales, and Settlement.

As the panel drew on, Matt Hodgson, CEO of Mosaic Smart Data, shared his firm’s response to digitisation. Describing the idea of ‘fixed income’ as a personal pain point, he needed his 2013 company to sufficiently solve this problem. And so, Mosaic Smart Data began selling software which addressed fixed income issues, adding value to the front end. By providing an API framework to entire organisations at a time, their brand offered unique value to the industry. Following this forceful ‘migration’ to electronic and digital channels, a new problem reared its head: communication via a common messaging language. Similar to Stephane and MUFG, Matt and his firm responded by leaning on four pillars for the solution. In their case, this meant:

  1. Aggregating transactions over different channels.
  2. Solving KPI and provide a framework delivering effective insight.
  3. Combining multiple segments of clients into one. To avoid the pitfalls of spamming clients.
  4. Their product needed lightning-quick response times (like Apple & Netflix).

Once these principles were in place, Matt’s team was able to match their competitors’ pace of innovation and digital transformation. Alex Viall, Head of Regulatory Intelligence at Behavox, opined on how this pace has changed in recent years. Armed with experience as a regulator, he acknowledged his company’s role: to hold huge amounts of data, group them into a manageable data lake, and run algorithms which would generate meaningful findings and insights for clients.

The panel grew into conversation of current and future trends in Finance, and panellists were asked to briefly breakdown important factors in the industry.

Stephane Alex of MUFG spoke on:

  1. Simplicity of Finance.
  2. Transparency of institutions and services.
  3. Affordability of consumer-facing services.

Matt Hodgson of Mosaic Smart Data declared:

  1. While Fintech soars, banks need to realise they’re also invited to engage.
  2. The costs of nascent tech will decrease.
  3. There will be greater pressure on human capital in front offices.
  4. Process data is nigh-on impossible for humans.

While Alex Viall of Behavox said:

  1. Respect for data and its value rose as people started to mine and work with said data. This will continue.
  2. People are seeking more evidence-based answers instead of tradition.
  3. Data’s ability to personalise services is vital.
  4. Delivering information in real-life is an extraordinary technological leap in finance.

As promised, the evening also saw discussion on the role of automation, and more specifically how it affects the industry workforce. CFTE co-founder Huy Nguyen Trieu probed the panel on the topic, asking which activities in trading are currently in danger of disappearing. In response, Stephane Alex noted that management must take responsibility and sustain some roles for their employees with their oversight.

Next, the panellists were pressed on specific applications of emerging technologies. Algorithms will continue to dominate the trading floor, predicts Stephane, while Matt noted the importance of efficiency in data. Real-time information was not commonplace half a decade ago, while modern finance is much more capable to understand customers thanks to smarter tools. As a result, the roles of those in sales will dramatically change in terms of strategy as they adopt more intellectual approaches to their processes.

All experts called on more urgency in financial institutions taking larger risks, and to take them more often. The trio also highlighted a multitude of examples that showcase current innovations in capitals markets and banking today. For one, there are considerable changes in infrastructure, as Data Scientists and Data Engineers become more prominent. Another salient point is the difference in large and small firms– large institutions have the access and capability to utilise massive amounts of data, while smaller firms without this flow need to act in clever ways to arrive at the same conclusions. Artificial Intelligence will bridge this gap.

Ultimately, a large amount of the trading workforce remains afraid to lose their jobs to automation as a result of continued digital transformation. To these workers, t
he panel provided some words of encouragement and methods of practice:

  • Stephane Alex claimed that since the workforce as whole is becoming smarter, this means the middle and back office will also have to learn and become better. He presented this as positive affirmation that most workers would not get lost in the shuffle.
  • Alex Viall said “It depends on how you embrace technology and change. People can be creative; you need to create the right environment you personally need to be interested in tech and focus on all the tools that can make you more productive. Everything [in finance] is going to be more transparent.”
  • Matt Hodgson opined “[You should be] Continuing education! We encourage everybody to learn. No matter what: improve and learn. Share information openly; break down silos. If we don’t cannibalize ourselves someone will do it for us.”

This event is one of many in CFTE’s calendar which tackles prominent themes in Fintech. For more information on our future events, please subscribe to our events newsletter below.

[/fusion_text][/fusion_builder_column][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=”1%” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_separator style_type=”default” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” sep_color=”” top_margin=”” bottom_margin=”2%” border_size=”2″ icon=”” icon_circle=”” icon_circle_color=”” width=”” alignment=”center” /][/fusion_builder_column][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=”relatedPostsMobile” 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=”0%” padding_right=”2%” padding_bottom=”0%” padding_left=”2%” 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=””]

Related Posts

[/fusion_text][fusion_separator style_type=”default” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” sep_color=”” top_margin=”10%” bottom_margin=”” border_size=”0″ icon=”” icon_circle=”” icon_circle_color=”” width=”” alignment=”center” /][fusion_builder_row_inner][fusion_builder_column_inner type=”1_1″ layout=”1_3″ spacing=”” center_content=”no” hover_type=”none” link=”” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogPost” id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” border_size=”0″ border_color=”” border_style=”solid” 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” border_position=”all”][fusion_recent_posts layout=”default” hover_type=”none” columns=”1″ number_posts=”1″ offset=”1″ pull_by=”category” cat_slug=”events” exclude_cats=”” tag_slug=”” exclude_tags=”” thumbnail=”yes” title=”yes” meta=”yes” meta_author=”no” meta_categories=”no” meta_date=”yes” meta_comments=”no” meta_tags=”no” content_alignment=”” excerpt=”no” excerpt_length=”0″ strip_html=”yes” scrolling=”no” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogImage” id=”BlogImage” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” /][/fusion_builder_column_inner][fusion_builder_column_inner type=”1_1″ layout=”1_3″ spacing=”” center_content=”no” hover_type=”none” link=”” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogPost” id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” border_size=”0″ border_color=”” border_style=”solid” 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” border_position=”all”][fusion_recent_posts layout=”default” hover_type=”none” columns=”1″ number_posts=”1″ offset=”8″ pull_by=”category” cat_slug=”events” exclude_cats=”” tag_slug=”” exclude_tags=”” thumbnail=”yes” title=”yes” meta=”yes” meta_author=”no” meta_categories=”no” meta_date=”yes” meta_comments=”no” meta_tags=”no” content_alignment=”” excerpt=”no” excerpt_length=”0″ strip_html=”yes” scrolling=”no” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogImage” id=”BlogImage” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” /][/fusion_builder_column_inner][fusion_builder_column_inner type=”1_1″ layout=”1_3″ spacing=”” center_content=”no” hover_type=”none” link=”” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogPost” id=”” background_color=”” background_image=”” background_position=”left top” undefined=”” background_repeat=”no-repeat” border_size=”0″ border_color=”” border_style=”solid” 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” border_position=”all”][fusion_recent_posts layout=”default” hover_type=”none” columns=”1″ number_posts=”1″ offset=”10″ pull_by=”category” cat_slug=”events” exclude_cats=”” tag_slug=”” exclude_tags=”” thumbnail=”yes” title=”yes” meta=”yes” meta_author=”no” meta_categories=”no” meta_date=”yes” meta_comments=”no” meta_tags=”no” content_alignment=”” excerpt=”no” excerpt_length=”0″ strip_html=”yes” scrolling=”no” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”BlogImage” id=”BlogImage” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” /][/fusion_builder_column_inner][/fusion_builder_row_inner][/fusion_builder_column][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=”1%” padding_left=”” margin_top=”” margin_bottom=”” animation_type=”” animation_direction=”left” animation_speed=”0.3″ animation_offset=”” last=”no”][fusion_separator style_type=”default” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” class=”” id=”” sep_color=”” top_margin=”” bottom_margin=”” border_size=”2″ icon=”” icon_circle=”” icon_circle_color=”” width=”” alignment=”center” /][/fusion_builder_column][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” 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]PHN0eWxlPgogI19mb3JtXzMxXyB7IGZvbnQtc2l6ZToxNHB4OyBsaW5lLWhlaWdodDoxLjY7IGZvbnQtZmFtaWx5OmFyaWFsLCBoZWx2ZXRpY2EsIHNhbnMtc2VyaWY7IG1hcmdpbjowOyB9CiAjX2Zvcm1fMzFfICogeyBvdXRsaW5lOjA7IH0KIC5fZm9ybV9oaWRlIHsgZGlzcGxheTpub25lOyB2aXNpYmlsaXR5OmhpZGRlbjsgfQogLl9mb3JtX3Nob3cgeyBkaXNwbGF5OmJsb2NrOyB2aXNpYmlsaXR5OnZpc2libGU7IH0KICNfZm9ybV8zMV8uX2Zvcm0tdG9wIHsgdG9wOjA7IH0KICNfZm9ybV8zMV8uX2Zvcm0tYm90dG9tIHsgYm90dG9tOjA7IH0KICNfZm9ybV8zMV8uX2Zvcm0tbGVmdCB7IGxlZnQ6MDsgfQogI19mb3JtXzMxXy5fZm9ybS1yaWdodCB7IHJpZ2h0OjA7IH0KICNfZm9ybV8zMV8gaW5wdXRbdHlwZT0idGV4dCJdLCNfZm9ybV8zMV8gaW5wdXRbdHlwZT0iZGF0ZSJdLCNfZm9ybV8zMV8gdGV4dGFyZWEgeyBwYWRkaW5nOjZweDsgaGVpZ2h0OmF1dG87IGJvcmRlcjojOTc5Nzk3IDFweCBzb2xpZDsgYm9yZGVyLXJhZGl1czo0cHg7IGNvbG9yOiMwMDAgIWltcG9ydGFudDsgZm9udC1zaXplOjEzcHg7IC13ZWJraXQtYm94LXNpemluZzpib3JkZXItYm94OyAtbW96LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgYm94LXNpemluZzpib3JkZXItYm94OyB9CiAjX2Zvcm1fMzFfIHRleHRhcmVhIHsgcmVzaXplOm5vbmU7IH0KICNfZm9ybV8zMV8gLl9zdWJtaXQgeyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgY3Vyc29yOnBvaW50ZXI7IGZvbnQtZmFtaWx5OmFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6MTRweDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQ6IzhmMDcwNyAhaW1wb3J0YW50OyBib3JkZXI6MCAhaW1wb3J0YW50OyAtbW96LWJvcmRlci1yYWRpdXM6NHB4ICFpbXBvcnRhbnQ7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHggIWltcG9ydGFudDsgYm9yZGVyLXJhZGl1czo0cHggIWltcG9ydGFudDsgY29sb3I6I2ZmZiAhaW1wb3J0YW50OyBwYWRkaW5nOjEwcHggIWltcG9ydGFudDsgfQogI19mb3JtXzMxXyAuX2Nsb3NlLWljb24geyBjdXJzb3I6cG9pbnRlcjsgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2h0dHBzOi8vZDIyNmFqNGFvMXQ2MXEuY2xvdWRmcm9udC5uZXQvZXNma3lqaDF1X2Zvcm1zLWNsb3NlLWRhcmsucG5nJyk7IGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsgYmFja2dyb3VuZC1zaXplOjE0LjJweCAxNC4ycHg7IHBvc2l0aW9uOmFic29sdXRlOyBkaXNwbGF5OmJsb2NrOyB0b3A6MTFweDsgcmlnaHQ6OXB4OyBvdmVyZmxvdzpoaWRkZW47IHdpZHRoOjE2LjJweDsgaGVpZ2h0OjE2LjJweDsgfQogI19mb3JtXzMxXyAuX2Nsb3NlLWljb246YmVmb3JlIHsgcG9zaXRpb246cmVsYXRpdmU7IH0KICNfZm9ybV8zMV8gLl9mb3JtLWJvZHkgeyBtYXJnaW4tYm90dG9tOjMwcHg7IH0KICNfZm9ybV8zMV8gLl9mb3JtLWltYWdlLWxlZnQgeyB3aWR0aDoxNTBweDsgZmxvYXQ6bGVmdDsgfQogI19mb3JtXzMxXyAuX2Zvcm0tY29udGVudC1yaWdodCB7IG1hcmdpbi1sZWZ0OjE2NHB4OyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1icmFuZGluZyB7IGNvbG9yOiNmZmY7IGZvbnQtc2l6ZToxMHB4OyBjbGVhcjpib3RoOyB0ZXh0LWFsaWduOmxlZnQ7IG1hcmdpbi10b3A6MzBweDsgZm9udC13ZWlnaHQ6MTAwOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1icmFuZGluZyAuX2xvZ28geyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMzBweDsgaGVpZ2h0OjE0cHg7IG1hcmdpbi10b3A6NnB4OyBiYWNrZ3JvdW5kLWltYWdlOnVybCgnaHR0cHM6Ly9kMjI2YWo0YW8xdDYxcS5jbG91ZGZyb250Lm5ldC9oaDl1anFndjVfYWNsb2dvX2xpLnBuZycpOyBiYWNrZ3JvdW5kLXNpemU6MTMwcHggYXV0bzsgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1sYWJlbCwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IC5fZm9ybS1sYWJlbCB7IGZvbnQtd2VpZ2h0OmJvbGQ7IG1hcmdpbi1ib3R0b206NXB4OyBkaXNwbGF5OmJsb2NrOyB9CiAjX2Zvcm1fMzFfLl9kYXJrIC5fZm9ybS1icmFuZGluZyB7IGNvbG9yOiMzMzM7IH0KICNfZm9ybV8zMV8uX2RhcmsgLl9mb3JtLWJyYW5kaW5nIC5fbG9nbyB7IGJhY2tncm91bmQtaW1hZ2U6dXJsKCdodHRwczovL2QyMjZhajRhbzF0NjFxLmNsb3VkZnJvbnQubmV0L2pmdHEyYzhzX2FjbG9nb19kay5wbmcnKTsgfQogI19mb3JtXzMxXyAuX2Zvcm1fZWxlbWVudCB7IHBvc2l0aW9uOnJlbGF0aXZlOyBtYXJnaW4tYm90dG9tOjEwcHg7IGZvbnQtc2l6ZTowOyBtYXgtd2lkdGg6MTAwJTsgfQogI19mb3JtXzMxXyAuX2Zvcm1fZWxlbWVudCAqIHsgZm9udC1zaXplOjE0cHg7IH0KICNfZm9ybV8zMV8gLl9mb3JtX2VsZW1lbnQuX2NsZWFyIHsgY2xlYXI6Ym90aDsgd2lkdGg6MTAwJTsgZmxvYXQ6bm9uZTsgfQogI19mb3JtXzMxXyAuX2Zvcm1fZWxlbWVudC5fY2xlYXI6YWZ0ZXIgeyBjbGVhcjpsZWZ0OyB9CiAjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IGlucHV0W3R5cGU9InRleHQiXSwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IGlucHV0W3R5cGU9ImRhdGUiXSwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IHNlbGVjdCwjX2Zvcm1fMzFfIC5fZm9ybV9lbGVtZW50IHRleHRhcmVhOm5vdCguZy1yZWNhcHRjaGEtcmVzcG9uc2UpIHsgZGlzcGxheTpibG9jazsgd2lkdGg6MTAwJTsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7IH0KICNfZm9ybV8zMV8gLl9maWVsZC13cmFwcGVyIHsgcG9zaXRpb246cmVsYXRpdmU7IH0KICNfZm9ybV8zMV8gLl9pbmxpbmUtc3R5bGUgeyBmbG9hdDpsZWZ0OyB9CiAjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlIGlucHV0W3R5cGU9InRleHQiXSB7IHdpZHRoOjE1MHB4OyB9CiAjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlOm5vdCguX2NsZWFyKSArIC5faW5saW5lLXN0eWxlOm5vdCguX2NsZWFyKSB7IG1hcmdpbi1sZWZ0OjIwcHg7IH0KICNfZm9ybV8zMV8gLl9mb3JtX2VsZW1lbnQgaW1nLl9mb3JtLWltYWdlIHsgbWF4LXdpZHRoOjEwMCU7IH0KICNfZm9ybV8zMV8gLl9jbGVhci1lbGVtZW50IHsgY2xlYXI6bGVmdDsgfQogI19mb3JtXzMxXyAuX2Z1bGxfd2lkdGggeyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybV9mdWxsX2ZpZWxkIHsgZGlzcGxheTpibG9jazsgd2lkdGg6MTAwJTsgbWFyZ2luLWJvdHRvbToxMHB4OyB9CiAjX2Zvcm1fMzFfIGlucHV0W3R5cGU9InRleHQiXS5faGFzX2Vycm9yLCNfZm9ybV8zMV8gdGV4dGFyZWEuX2hhc19lcnJvciB7IGJvcmRlcjojZjM3YzdiIDFweCBzb2xpZDsgfQogI19mb3JtXzMxXyBpbnB1dFt0eXBlPSJjaGVja2JveCJdLl9oYXNfZXJyb3IgeyBvdXRsaW5lOiNmMzdjN2IgMXB4IHNvbGlkOyB9CiAjX2Zvcm1fMzFfIC5fZXJyb3IgeyBkaXNwbGF5OmJsb2NrOyBwb3NpdGlvbjphYnNvbHV0ZTsgZm9udC1zaXplOjEzcHg7IHotaW5kZXg6MTAwMDAwMDE7IH0KICNfZm9ybV8zMV8gLl9lcnJvci5fYWJvdmUgeyBwYWRkaW5nLWJvdHRvbTo0cHg7IHRvcDotNDFweDsgcmlnaHQ6MDsgfQogI19mb3JtXzMxXyAuX2Vycm9yLl9iZWxvdyB7IHBhZGRpbmctdG9wOjRweDsgdG9wOjEwMCU7IHJpZ2h0OjA7IH0KICNfZm9ybV8zMV8gLl9lcnJvci5fYWJvdmUgLl9lcnJvci1hcnJvdyB7IGJvdHRvbTowOyByaWdodDoxNXB4OyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci10b3A6NXB4IHNvbGlkICNmMzdjN2I7IH0KICNfZm9ybV8zMV8gLl9lcnJvci5fYmVsb3cgLl9lcnJvci1hcnJvdyB7IHRvcDowOyByaWdodDoxNXB4OyBib3JkZXItbGVmdDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1yaWdodDo1cHggc29saWQgdHJhbnNwYXJlbnQ7IGJvcmRlci1ib3R0b206NXB4IHNvbGlkICNmMzdjN2I7IH0KICNfZm9ybV8zMV8gLl9lcnJvci1pbm5lciB7IHBhZGRpbmc6OHB4IDEycHg7IGJhY2tncm91bmQtY29sb3I6I2YzN2M3YjsgZm9udC1zaXplOjEzcHg7IGZvbnQtZmFtaWx5OmFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjojZmZmOyB0ZXh0LWFsaWduOmNlbnRlcjsgdGV4dC1kZWNvcmF0aW9uOm5vbmU7IC13ZWJraXQtYm9yZGVyLXJhZGl1czo0cHg7IC1tb3otYm9yZGVyLXJhZGl1czo0cHg7IGJvcmRlci1yYWRpdXM6NHB4OyB9CiAjX2Zvcm1fMzFfIC5fZXJyb3ItaW5uZXIuX2Zvcm1fZXJyb3IgeyBtYXJnaW4tYm90dG9tOjVweDsgdGV4dC1hbGlnbjpsZWZ0OyB9CiAjX2Zvcm1fMzFfIC5fYnV0dG9uLXdyYXBwZXIgLl9lcnJvci1pbm5lci5fZm9ybV9lcnJvciB7IHBvc2l0aW9uOnN0YXRpYzsgfQogI19mb3JtXzMxXyAuX2Vycm9yLWlubmVyLl9ub19hcnJvdyB7IG1hcmdpbi1ib3R0b206MTBweDsgfQogI19mb3JtXzMxXyAuX2Vycm9yLWFycm93IHsgcG9zaXRpb246YWJzb2x1dGU7IHdpZHRoOjA7IGhlaWdodDowOyB9CiAjX2Zvcm1fMzFfIC5fZXJyb3ItaHRtbCB7IG1hcmdpbi1ib3R0b206MTBweDsgfQogLnBpa2Etc2luZ2xlIHsgei1pbmRleDoxMDAwMDAwMSAhaW1wb3J0YW50OyB9CiBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjMyMHB4KSBhbmQgKG1heC13aWR0aDo2NjdweCkgeyA6Oi13ZWJraXQtc2Nyb2xsYmFyIHsgZGlzcGxheTpub25lOyB9CiAjX2Zvcm1fMzFfIHsgbWFyZ2luOjA7IHdpZHRoOjEwMCU7IG1pbi13aWR0aDoxMDAlOyBtYXgtd2lkdGg6MTAwJTsgYm94LXNpemluZzpib3JkZXItYm94OyB9CiAjX2Zvcm1fMzFfICogeyAtd2Via2l0LWJveC1zaXppbmc6Ym9yZGVyLWJveDsgLW1vei1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IGJveC1zaXppbmc6Ym9yZGVyLWJveDsgZm9udC1zaXplOjFlbTsgfQogI19mb3JtXzMxXyAuX2Zvcm0tY29udGVudCB7IG1hcmdpbjowOyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS1pbm5lciB7IGRpc3BsYXk6YmxvY2s7IG1pbi13aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fZm9ybS10aXRsZSwjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlIHsgbWFyZ2luLXRvcDowOyBtYXJnaW4tcmlnaHQ6MDsgbWFyZ2luLWxlZnQ6MDsgfQogI19mb3JtXzMxXyAuX2Zvcm0tdGl0bGUgeyBmb250LXNpemU6MS4yZW07IH0KICNfZm9ybV8zMV8gLl9mb3JtX2VsZW1lbnQgeyBtYXJnaW46MCAwIDIwcHg7IHBhZGRpbmc6MDsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzMxXyAuX2Zvcm0tZWxlbWVudCwjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlLCNfZm9ybV8zMV8gaW5wdXRbdHlwZT0idGV4dCJdLCNfZm9ybV8zMV8gbGFiZWwsI19mb3JtXzMxXyBwLCNfZm9ybV8zMV8gdGV4dGFyZWE6bm90KC5nLXJlY2FwdGNoYS1yZXNwb25zZSkgeyBmbG9hdDpub25lOyBkaXNwbGF5OmJsb2NrOyB3aWR0aDoxMDAlOyB9CiAjX2Zvcm1fMzFfIC5fcm93Ll9jaGVja2JveC1yYWRpbyBsYWJlbCB7IGRpc3BsYXk6aW5saW5lOyB9CiAjX2Zvcm1fMzFfIC5fcm93LCNfZm9ybV8zMV8gcCwjX2Zvcm1fMzFfIGxhYmVsIHsgbWFyZ2luLWJvdHRvbTowLjdlbTsgd2lkdGg6MTAwJTsgfQogI19mb3JtXzMxXyAuX3JvdyBpbnB1dFt0eXBlPSJjaGVja2JveCJdLCNfZm9ybV8zMV8gLl9yb3cgaW5wdXRbdHlwZT0icmFkaW8iXSB7IG1hcmdpbjowICFpbXBvcnRhbnQ7IHZlcnRpY2FsLWFsaWduOm1pZGRsZSAhaW1wb3J0YW50OyB9CiAjX2Zvcm1fMzFfIC5fcm93IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gKyBzcGFuIGxhYmVsIHsgZGlzcGxheTppbmxpbmU7IH0KICNfZm9ybV8zMV8gLl9yb3cgc3BhbiBsYWJlbCB7IG1hcmdpbjowICFpbXBvcnRhbnQ7IHdpZHRoOmluaXRpYWwgIWltcG9ydGFudDsgdmVydGljYWwtYWxpZ246bWlkZGxlICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zMV8gLl9mb3JtLWltYWdlIHsgbWF4LXdpZHRoOjEwMCU7IGhlaWdodDphdXRvICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zMV8gaW5wdXRbdHlwZT0idGV4dCJdIHsgcGFkZGluZy1sZWZ0OjEwcHg7IHBhZGRpbmctcmlnaHQ6MTBweDsgZm9udC1zaXplOjE2cHg7IGxpbmUtaGVpZ2h0OjEuM2VtOyAtd2Via2l0LWFwcGVhcmFuY2U6bm9uZTsgfQogI19mb3JtXzMxXyBpbnB1dFt0eXBlPSJyYWRpbyJdLCNfZm9ybV8zMV8gaW5wdXRbdHlwZT0iY2hlY2tib3giXSB7IGRpc3BsYXk6aW5saW5lLWJsb2NrOyB3aWR0aDoxLjNlbTsgaGVpZ2h0OjEuM2VtOyBmb250LXNpemU6MWVtOyBtYXJnaW46MCAwLjNlbSAwIDA7IHZlcnRpY2FsLWFsaWduOmJhc2VsaW5lOyB9CiAjX2Zvcm1fMzFfIGJ1dHRvblt0eXBlPSJzdWJtaXQiXSB7IHBhZGRpbmc6MjBweDsgZm9udC1zaXplOjEuNWVtOyB9CiAjX2Zvcm1fMzFfIC5faW5saW5lLXN0eWxlIHsgbWFyZ2luOjIwcHggMCAwICFpbXBvcnRhbnQ7IH0KIH0KICNfZm9ybV8zMV8geyBwb3NpdGlvbjpyZWxhdGl2ZTsgdGV4dC1hbGlnbjpsZWZ0OyBtYXJnaW46MjVweCBhdXRvIDA7IHBhZGRpbmc6MjBweDsgLXdlYmtpdC1ib3gtc2l6aW5nOmJvcmRlci1ib3g7IC1tb3otYm94LXNpemluZzpib3JkZXItYm94OyBib3gtc2l6aW5nOmJvcmRlci1ib3g7ICp6b29tOjE7IGJhY2tncm91bmQ6I2ZmZiAhaW1wb3J0YW50OyBib3JkZXI6MHB4IHNvbGlkICNiMGIwYjAgIWltcG9ydGFudDsgd2lkdGg6NTAwcHg7IC1tb3otYm9yZGVyLXJhZGl1czowcHggIWltcG9ydGFudDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOjBweCAhaW1wb3J0YW50OyBib3JkZXItcmFkaXVzOjBweCAhaW1wb3J0YW50OyBjb2xvcjojMDAwICFpbXBvcnRhbnQ7IH0KICNfZm9ybV8zMV8gLl9mb3JtLXRpdGxlIHsgZm9udC1zaXplOjIycHg7IGxpbmUtaGVpZ2h0OjIycHg7IGZvbnQtd2VpZ2h0OjYwMDsgbWFyZ2luLWJvdHRvbTowOyB9CiAjX2Zvcm1fMzFfOmJlZm9yZSwjX2Zvcm1fMzFfOmFmdGVyIHsgY29udGVudDoiICI7IGRpc3BsYXk6dGFibGU7IH0KICNfZm9ybV8zMV86YWZ0ZXIgeyBjbGVhcjpib3RoOyB9CiAjX2Zvcm1fMzFfLl9pbmxpbmUtc3R5bGUgeyB3aWR0aDphdXRvOyBkaXNwbGF5OmlubGluZS1ibG9jazsgfQogI19mb3JtXzMxXy5faW5saW5lLXN0eWxlIGlucHV0W3R5cGU9InRleHQiXSwjX2Zvcm1fMzFfLl9pbmxpbmUtc3R5bGUgaW5wdXRbdHlwZT0iZGF0ZSJdIHsgcGFkZGluZzoxMHB4IDEycHg7IH0KICNfZm9ybV8zMV8uX2lubGluZS1zdHlsZSBidXR0b24uX2lubGluZS1zdHlsZSB7IHBvc2l0aW9uOnJlbGF0aXZlOyB0b3A6MjdweDsgfQogI19mb3JtXzMxXy5faW5saW5lLXN0eWxlIHAgeyBtYXJnaW46MDsgfQogI19mb3JtXzMxXy5faW5saW5lLXN0eWxlIC5fYnV0dG9uLXdyYXBwZXIgeyBwb3NpdGlvbjpyZWxhdGl2ZTsgbWFyZ2luOjI3cHggMTIuNXB4IDAgMjBweDsgfQogI19mb3JtXzMxXyAuX2Zvcm0tdGhhbmsteW91IHsgcG9zaXRpb246cmVsYXRpdmU7IGxlZnQ6MDsgcmlnaHQ6MDsgdGV4dC1hbGlnbjpjZW50ZXI7IGZvbnQtc2l6ZToxOHB4OyB9CiBAbWVkaWEgYWxsIGFuZCAobWluLXdpZHRoOjMyMHB4KSBhbmQgKG1heC13aWR0aDo2NjdweCkgeyAjX2Zvcm1fMzFfLl9pbmxpbmUtZm9ybS5faW5saW5lLXN0eWxlIC5faW5saW5lLXN0eWxlLl9idXR0b24td3JhcHBlciB7IG1hcmdpbi10b3A6MjBweCAhaW1wb3J0YW50OyBtYXJnaW4tbGVmdDowICFpbXBvcnRhbnQ7IH0KIH0KPC9zdHlsZT4KPGZvcm0gbWV0aG9kPSJQT1NUIiBhY3Rpb249Imh0dHBzOi8vY2Z0ZS5hY3RpdmVob3N0ZWQuY29tL3Byb2MucGhwIiBpZD0iX2Zvcm1fMzFfIiBjbGFzcz0iX2Zvcm0gX2Zvcm1fMzEgX2lubGluZS1mb3JtICBfZGFyayIgbm92YWxpZGF0ZT4KICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJ1IiB2YWx1ZT0iMzEiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZiIgdmFsdWU9IjMxIiAvPgogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InMiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYyIgdmFsdWU9IjAiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ibSIgdmFsdWU9IjAiIC8+CiAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYWN0IiB2YWx1ZT0ic3ViIiAvPgogIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9InYiIHZhbHVlPSIyIiAvPgogIDxkaXYgY2xhc3M9Il9mb3JtLWNvbnRlbnQiPgogICAgPGRpdiBjbGFzcz0iX2Zvcm1fZWxlbWVudCBfeDU0MjQzOTgyIF9mdWxsX3dpZHRoIF9jbGVhciIgPgogICAgICA8ZGl2IGNsYXNzPSJfZm9ybS10aXRsZSI+CiAgICAgICAgU3Vic2NyaWJlIHRvIENGVEUmIzAzOTtzIEV2ZW50IE5ld3NsZXR0ZXIKICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Il9mb3JtX2VsZW1lbnQgX3g2MDkzMzQ3MiBfZnVsbF93aWR0aCAiID4KICAgICAgPGxhYmVsIGNsYXNzPSJfZm9ybS1sYWJlbCI+CiAgICAgICAgRmlyc3QgTmFtZSoKICAgICAgPC9sYWJlbD4KICAgICAgPGRpdiBjbGFzcz0iX2ZpZWxkLXdyYXBwZXIiPgogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJmaXJzdG5hbWUiIHBsYWNlaG9sZGVyPSJUeXBlIHlvdXIgZmlyc3QgbmFtZSIgcmVxdWlyZWQvPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iX2Zvcm1fZWxlbWVudCBfeDQyNjQ4NjAwIF9mdWxsX3dpZHRoICIgPgogICAgICA8bGFiZWwgY2xhc3M9Il9mb3JtLWxhYmVsIj4KICAgICAgICBMYXN0IE5hbWUqCiAgICAgIDwvbGFiZWw+CiAgICAgIDxkaXYgY2xhc3M9Il9maWVsZC13cmFwcGVyIj4KICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ibGFzdG5hbWUiIHBsYWNlaG9sZGVyPSJUeXBlIHlvdXIgbGFzdCBuYW1lIiByZXF1aXJlZC8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF94MDQ5NzQ5MTkgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgIEVtYWlsKgogICAgICA8L2xhYmVsPgogICAgICA8ZGl2IGNsYXNzPSJfZmllbGQtd3JhcHBlciI+CiAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9ImVtYWlsIiBwbGFjZWhvbGRlcj0iVHlwZSB5b3VyIGVtYWlsIiByZXF1aXJlZC8+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF9maWVsZDEgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgIENvdW50cnkqCiAgICAgIDwvbGFiZWw+CiAgICAgIDxkaXYgY2xhc3M9Il9maWVsZC13cmFwcGVyIj4KICAgICAgICA8c2VsZWN0IG5hbWU9ImZpZWxkWzFdIiByZXF1aXJlZD4KICAgICAgICAgIDxvcHRpb24gc2VsZWN0ZWQ+CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFmZ2hhbmlzdGFuIiA+CiAgICAgICAgICAgIEFmZ2hhbmlzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFsYmFuaWEiID4KICAgICAgICAgICAgQWxiYW5pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBbGdlcmlhIiA+CiAgICAgICAgICAgIEFsZ2VyaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW1lcmljYW4gU2Ftb2EiID4KICAgICAgICAgICAgQW1lcmljYW4gU2Ftb2EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW5kb3JyYSIgPgogICAgICAgICAgICBBbmRvcnJhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFuZ29sYSIgPgogICAgICAgICAgICBBbmdvbGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW5ndWlsbGEiID4KICAgICAgICAgICAgQW5ndWlsbGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQW50YXJjdGljYSIgPgogICAgICAgICAgICBBbnRhcmN0aWNhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFudGlndWEgYW5kIEJhcmJ1ZGEiID4KICAgICAgICAgICAgQW50aWd1YSBhbmQgQmFyYnVkYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBcmdlbnRpbmEiID4KICAgICAgICAgICAgQXJnZW50aW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkFybWVuaWEiID4KICAgICAgICAgICAgQXJtZW5pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBcnViYSIgPgogICAgICAgICAgICBBcnViYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBdXN0cmFsaWEiID4KICAgICAgICAgICAgQXVzdHJhbGlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkF1c3RyaWEiID4KICAgICAgICAgICAgQXVzdHJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJBemVyYmFpamFuIiA+CiAgICAgICAgICAgIEF6ZXJiYWlqYW4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmFoYW1hcyIgPgogICAgICAgICAgICBCYWhhbWFzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJhaHJhaW4iID4KICAgICAgICAgICAgQmFocmFpbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCYW5nbGFkZXNoIiA+CiAgICAgICAgICAgIEJhbmdsYWRlc2gKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmFyYmFkb3MiID4KICAgICAgICAgICAgQmFyYmFkb3MKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQmVsYXJ1cyIgPgogICAgICAgICAgICBCZWxhcnVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJlbGdpdW0iID4KICAgICAgICAgICAgQmVsZ2l1bQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCZWxpemUiID4KICAgICAgICAgICAgQmVsaXplCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJlbmluIiA+CiAgICAgICAgICAgIEJlbmluCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJlcm11ZGEiID4KICAgICAgICAgICAgQmVybXVkYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCaHV0YW4iID4KICAgICAgICAgICAgQmh1dGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJvbGl2aWEiID4KICAgICAgICAgICAgQm9saXZpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCb3NuaWEgYW5kIEhlcnplZ292aW5hIiA+CiAgICAgICAgICAgIEJvc25pYSBhbmQgSGVyemVnb3ZpbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQm90c3dhbmEiID4KICAgICAgICAgICAgQm90c3dhbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQm91dmV0IElzbGFuZCIgPgogICAgICAgICAgICBCb3V2ZXQgSXNsYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJyYXppbCIgPgogICAgICAgICAgICBCcmF6aWwKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQnJpdGlzaCBJbmRpYW4gT2NlYW4gVGVycml0b3J5IiA+CiAgICAgICAgICAgIEJyaXRpc2ggSW5kaWFuIE9jZWFuIFRlcnJpdG9yeQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCcnVuZWkgRGFydXNzYWxhbSIgPgogICAgICAgICAgICBCcnVuZWkgRGFydXNzYWxhbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCdWxnYXJpYSIgPgogICAgICAgICAgICBCdWxnYXJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJCdXJraW5hIEZhc28iID4KICAgICAgICAgICAgQnVya2luYSBGYXNvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkJ1cnVuZGkiID4KICAgICAgICAgICAgQnVydW5kaQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYW1ib2RpYSIgPgogICAgICAgICAgICBDYW1ib2RpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYW1lcm9vbiIgPgogICAgICAgICAgICBDYW1lcm9vbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYW5hZGEiID4KICAgICAgICAgICAgQ2FuYWRhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNhcGUgVmVyZGUiID4KICAgICAgICAgICAgQ2FwZSBWZXJkZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDYXltYW4gSXNsYW5kcyIgPgogICAgICAgICAgICBDYXltYW4gSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDZW50cmFsIEFmcmljYW4gUmVwdWJsaWMiID4KICAgICAgICAgICAgQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNoYWQiID4KICAgICAgICAgICAgQ2hhZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDaGlsZSIgPgogICAgICAgICAgICBDaGlsZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDaGluYSIgPgogICAgICAgICAgICBDaGluYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDaHJpc3RtYXMgSXNsYW5kIiA+CiAgICAgICAgICAgIENocmlzdG1hcyBJc2xhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29jb3MgKEtlZWxpbmcpIElzbGFuZHMiID4KICAgICAgICAgICAgQ29jb3MgKEtlZWxpbmcpIElzbGFuZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29sb21iaWEiID4KICAgICAgICAgICAgQ29sb21iaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ29tb3JvcyIgPgogICAgICAgICAgICBDb21vcm9zCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNvbmdvIiA+CiAgICAgICAgICAgIENvbmdvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNvbmdvLCB0aGUgRGVtb2NyYXRpYyBSZXB1YmxpYyBvZiB0aGUiID4KICAgICAgICAgICAgQ29uZ28sIHRoZSBEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDb29rIElzbGFuZHMiID4KICAgICAgICAgICAgQ29vayBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNvc3RhIFJpY2EiID4KICAgICAgICAgICAgQ29zdGEgUmljYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDb3RlIEQmIzAzOTtJdm9pcmUiID4KICAgICAgICAgICAgQ290ZSBEJiMwMzk7SXZvaXJlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNyb2F0aWEiID4KICAgICAgICAgICAgQ3JvYXRpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDdWJhIiA+CiAgICAgICAgICAgIEN1YmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iQ3lwcnVzIiA+CiAgICAgICAgICAgIEN5cHJ1cwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJDemVjaCBSZXB1YmxpYyIgPgogICAgICAgICAgICBDemVjaCBSZXB1YmxpYwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJEZW5tYXJrIiA+CiAgICAgICAgICAgIERlbm1hcmsKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRGppYm91dGkiID4KICAgICAgICAgICAgRGppYm91dGkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRG9taW5pY2EiID4KICAgICAgICAgICAgRG9taW5pY2EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRG9taW5pY2FuIFJlcHVibGljIiA+CiAgICAgICAgICAgIERvbWluaWNhbiBSZXB1YmxpYwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJFY3VhZG9yIiA+CiAgICAgICAgICAgIEVjdWFkb3IKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRWd5cHQiID4KICAgICAgICAgICAgRWd5cHQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRWwgU2FsdmFkb3IiID4KICAgICAgICAgICAgRWwgU2FsdmFkb3IKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRXF1YXRvcmlhbCBHdWluZWEiID4KICAgICAgICAgICAgRXF1YXRvcmlhbCBHdWluZWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRXJpdHJlYSIgPgogICAgICAgICAgICBFcml0cmVhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkVzdG9uaWEiID4KICAgICAgICAgICAgRXN0b25pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJFdGhpb3BpYSIgPgogICAgICAgICAgICBFdGhpb3BpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGYWxrbGFuZCBJc2xhbmRzIChNYWx2aW5hcykiID4KICAgICAgICAgICAgRmFsa2xhbmQgSXNsYW5kcyAoTWFsdmluYXMpCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZhcm9lIElzbGFuZHMiID4KICAgICAgICAgICAgRmFyb2UgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGaWppIiA+CiAgICAgICAgICAgIEZpamkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRmlubGFuZCIgPgogICAgICAgICAgICBGaW5sYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZyYW5jZSIgPgogICAgICAgICAgICBGcmFuY2UKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iRnJlbmNoIEd1aWFuYSIgPgogICAgICAgICAgICBGcmVuY2ggR3VpYW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkZyZW5jaCBQb2x5bmVzaWEiID4KICAgICAgICAgICAgRnJlbmNoIFBvbHluZXNpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJGcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXMiID4KICAgICAgICAgICAgRnJlbmNoIFNvdXRoZXJuIFRlcnJpdG9yaWVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdhYm9uIiA+CiAgICAgICAgICAgIEdhYm9uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdhbWJpYSIgPgogICAgICAgICAgICBHYW1iaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR2VvcmdpYSIgPgogICAgICAgICAgICBHZW9yZ2lhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikdlcm1hbnkiID4KICAgICAgICAgICAgR2VybWFueQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHaGFuYSIgPgogICAgICAgICAgICBHaGFuYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHaWJyYWx0YXIiID4KICAgICAgICAgICAgR2licmFsdGFyCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdyZWVjZSIgPgogICAgICAgICAgICBHcmVlY2UKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3JlZW5sYW5kIiA+CiAgICAgICAgICAgIEdyZWVubGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHcmVuYWRhIiA+CiAgICAgICAgICAgIEdyZW5hZGEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3VhZGVsb3VwZSIgPgogICAgICAgICAgICBHdWFkZWxvdXBlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1YW0iID4KICAgICAgICAgICAgR3VhbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJHdWF0ZW1hbGEiID4KICAgICAgICAgICAgR3VhdGVtYWxhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1ZXJuc2V5IiA+CiAgICAgICAgICAgIEd1ZXJuc2V5CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1aW5lYSIgPgogICAgICAgICAgICBHdWluZWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iR3VpbmVhLUJpc3NhdSIgPgogICAgICAgICAgICBHdWluZWEtQmlzc2F1CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikd1eWFuYSIgPgogICAgICAgICAgICBHdXlhbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSGFpdGkiID4KICAgICAgICAgICAgSGFpdGkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSGVhcmQgSXNsYW5kIGFuZCBNY2RvbmFsZCBJc2xhbmRzIiA+CiAgICAgICAgICAgIEhlYXJkIElzbGFuZCBhbmQgTWNkb25hbGQgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIb2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKSIgPgogICAgICAgICAgICBIb2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIb25kdXJhcyIgPgogICAgICAgICAgICBIb25kdXJhcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJIb25nIEtvbmciID4KICAgICAgICAgICAgSG9uZyBLb25nCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikh1bmdhcnkiID4KICAgICAgICAgICAgSHVuZ2FyeQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJY2VsYW5kIiA+CiAgICAgICAgICAgIEljZWxhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSW5kaWEiID4KICAgICAgICAgICAgSW5kaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSW5kb25lc2lhIiA+CiAgICAgICAgICAgIEluZG9uZXNpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJcmFuLCBJc2xhbWljIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIElyYW4sIElzbGFtaWMgUmVwdWJsaWMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iSXJhcSIgPgogICAgICAgICAgICBJcmFxCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IklyZWxhbmQiID4KICAgICAgICAgICAgSXJlbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJJc3JhZWwiID4KICAgICAgICAgICAgSXNyYWVsCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikl0YWx5IiA+CiAgICAgICAgICAgIEl0YWx5CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkphbWFpY2EiID4KICAgICAgICAgICAgSmFtYWljYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJKYXBhbiIgPgogICAgICAgICAgICBKYXBhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJKb3JkYW4iID4KICAgICAgICAgICAgSm9yZGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkthemFraHN0YW4iID4KICAgICAgICAgICAgS2F6YWtoc3RhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLZW55YSIgPgogICAgICAgICAgICBLZW55YQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLaXJpYmF0aSIgPgogICAgICAgICAgICBLaXJpYmF0aQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLb3JlYSwgRGVtb2NyYXRpYyBQZW9wbGUmIzAzOTtzIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIEtvcmVhLCBEZW1vY3JhdGljIFBlb3BsZSYjMDM5O3MgUmVwdWJsaWMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iS29yZWEsIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIEtvcmVhLCBSZXB1YmxpYyBvZgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJLdXdhaXQiID4KICAgICAgICAgICAgS3V3YWl0CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikt5cmd5enN0YW4iID4KICAgICAgICAgICAgS3lyZ3l6c3RhbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMYW8gUGVvcGxlJiMwMzk7cyBEZW1vY3JhdGljIFJlcHVibGljIiA+CiAgICAgICAgICAgIExhbyBQZW9wbGUmIzAzOTtzIERlbW9jcmF0aWMgUmVwdWJsaWMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTGF0dmlhIiA+CiAgICAgICAgICAgIExhdHZpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMZWJhbm9uIiA+CiAgICAgICAgICAgIExlYmFub24KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTGVzb3RobyIgPgogICAgICAgICAgICBMZXNvdGhvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkxpYmVyaWEiID4KICAgICAgICAgICAgTGliZXJpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMaWJ5YW4gQXJhYiBKYW1haGlyaXlhIiA+CiAgICAgICAgICAgIExpYnlhbiBBcmFiIEphbWFoaXJpeWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTGllY2h0ZW5zdGVpbiIgPgogICAgICAgICAgICBMaWVjaHRlbnN0ZWluCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkxpdGh1YW5pYSIgPgogICAgICAgICAgICBMaXRodWFuaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTHV4ZW1ib3VyZyIgPgogICAgICAgICAgICBMdXhlbWJvdXJnCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hY2FvIiA+CiAgICAgICAgICAgIE1hY2FvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hY2Vkb25pYSwgdGhlIEZvcm1lciBZdWdvc2xhdiBSZXB1YmxpYyBvZiIgPgogICAgICAgICAgICBNYWNlZG9uaWEsIHRoZSBGb3JtZXIgWXVnb3NsYXYgUmVwdWJsaWMgb2YKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFkYWdhc2NhciIgPgogICAgICAgICAgICBNYWRhZ2FzY2FyCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hbGF3aSIgPgogICAgICAgICAgICBNYWxhd2kKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFsYXlzaWEiID4KICAgICAgICAgICAgTWFsYXlzaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFsZGl2ZXMiID4KICAgICAgICAgICAgTWFsZGl2ZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWFsaSIgPgogICAgICAgICAgICBNYWxpCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hbHRhIiA+CiAgICAgICAgICAgIE1hbHRhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hcnNoYWxsIElzbGFuZHMiID4KICAgICAgICAgICAgTWFyc2hhbGwgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNYXJ0aW5pcXVlIiA+CiAgICAgICAgICAgIE1hcnRpbmlxdWUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWF1cml0YW5pYSIgPgogICAgICAgICAgICBNYXVyaXRhbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1hdXJpdGl1cyIgPgogICAgICAgICAgICBNYXVyaXRpdXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWF5b3R0ZSIgPgogICAgICAgICAgICBNYXlvdHRlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1leGljbyIgPgogICAgICAgICAgICBNZXhpY28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTWljcm9uZXNpYSwgRmVkZXJhdGVkIFN0YXRlcyBvZiIgPgogICAgICAgICAgICBNaWNyb25lc2lhLCBGZWRlcmF0ZWQgU3RhdGVzIG9mCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1vbGRvdmEsIFJlcHVibGljIG9mIiA+CiAgICAgICAgICAgIE1vbGRvdmEsIFJlcHVibGljIG9mCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1vbmFjbyIgPgogICAgICAgICAgICBNb25hY28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW9uZ29saWEiID4KICAgICAgICAgICAgTW9uZ29saWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW9udGVuZWdybyIgPgogICAgICAgICAgICBNb250ZW5lZ3JvCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1vbnRzZXJyYXQiID4KICAgICAgICAgICAgTW9udHNlcnJhdAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJNb3JvY2NvIiA+CiAgICAgICAgICAgIE1vcm9jY28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTW96YW1iaXF1ZSIgPgogICAgICAgICAgICBNb3phbWJpcXVlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik15YW5tYXIiID4KICAgICAgICAgICAgTXlhbm1hcgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOYW1pYmlhIiA+CiAgICAgICAgICAgIE5hbWliaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmF1cnUiID4KICAgICAgICAgICAgTmF1cnUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmVwYWwiID4KICAgICAgICAgICAgTmVwYWwKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmV0aGVybGFuZHMiID4KICAgICAgICAgICAgTmV0aGVybGFuZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmV0aGVybGFuZHMgQW50aWxsZXMiID4KICAgICAgICAgICAgTmV0aGVybGFuZHMgQW50aWxsZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmV3IENhbGVkb25pYSIgPgogICAgICAgICAgICBOZXcgQ2FsZWRvbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5ldyBaZWFsYW5kIiA+CiAgICAgICAgICAgIE5ldyBaZWFsYW5kCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5pY2FyYWd1YSIgPgogICAgICAgICAgICBOaWNhcmFndWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmlnZXIiID4KICAgICAgICAgICAgTmlnZXIKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iTmlnZXJpYSIgPgogICAgICAgICAgICBOaWdlcmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5pdWUiID4KICAgICAgICAgICAgTml1ZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOb3Jmb2xrIElzbGFuZCIgPgogICAgICAgICAgICBOb3Jmb2xrIElzbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJOb3J0aGVybiBNYXJpYW5hIElzbGFuZHMiID4KICAgICAgICAgICAgTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik5vcndheSIgPgogICAgICAgICAgICBOb3J3YXkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iT21hbiIgPgogICAgICAgICAgICBPbWFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBha2lzdGFuIiA+CiAgICAgICAgICAgIFBha2lzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBhbGF1IiA+CiAgICAgICAgICAgIFBhbGF1CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBhbGVzdGluaWFuIFRlcnJpdG9yeSwgT2NjdXBpZWQiID4KICAgICAgICAgICAgUGFsZXN0aW5pYW4gVGVycml0b3J5LCBPY2N1cGllZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQYW5hbWEiID4KICAgICAgICAgICAgUGFuYW1hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlBhcHVhIE5ldyBHdWluZWEiID4KICAgICAgICAgICAgUGFwdWEgTmV3IEd1aW5lYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQYXJhZ3VheSIgPgogICAgICAgICAgICBQYXJhZ3VheQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQZXJ1IiA+CiAgICAgICAgICAgIFBlcnUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUGhpbGlwcGluZXMiID4KICAgICAgICAgICAgUGhpbGlwcGluZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUGl0Y2Fpcm4iID4KICAgICAgICAgICAgUGl0Y2Fpcm4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUG9sYW5kIiA+CiAgICAgICAgICAgIFBvbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQb3J0dWdhbCIgPgogICAgICAgICAgICBQb3J0dWdhbAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJQdWVydG8gUmljbyIgPgogICAgICAgICAgICBQdWVydG8gUmljbwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJRYXRhciIgPgogICAgICAgICAgICBRYXRhcgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJSZXVuaW9uIiA+CiAgICAgICAgICAgIFJldW5pb24KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUm9tYW5pYSIgPgogICAgICAgICAgICBSb21hbmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlJ1c3NpYW4gRmVkZXJhdGlvbiIgPgogICAgICAgICAgICBSdXNzaWFuIEZlZGVyYXRpb24KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iUndhbmRhIiA+CiAgICAgICAgICAgIFJ3YW5kYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTYWludCBIZWxlbmEiID4KICAgICAgICAgICAgU2FpbnQgSGVsZW5hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhaW50IEtpdHRzIGFuZCBOZXZpcyIgPgogICAgICAgICAgICBTYWludCBLaXR0cyBhbmQgTmV2aXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2FpbnQgTHVjaWEiID4KICAgICAgICAgICAgU2FpbnQgTHVjaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2FpbnQgUGllcnJlIGFuZCBNaXF1ZWxvbiIgPgogICAgICAgICAgICBTYWludCBQaWVycmUgYW5kIE1pcXVlbG9uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzIiA+CiAgICAgICAgICAgIFNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhbW9hIiA+CiAgICAgICAgICAgIFNhbW9hCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhbiBNYXJpbm8iID4KICAgICAgICAgICAgU2FuIE1hcmlubwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTYW8gVG9tZSBhbmQgUHJpbmNpcGUiID4KICAgICAgICAgICAgU2FvIFRvbWUgYW5kIFByaW5jaXBlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNhdWRpIEFyYWJpYSIgPgogICAgICAgICAgICBTYXVkaSBBcmFiaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2VuZWdhbCIgPgogICAgICAgICAgICBTZW5lZ2FsCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNlcmJpYSIgPgogICAgICAgICAgICBTZXJiaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2V5Y2hlbGxlcyIgPgogICAgICAgICAgICBTZXljaGVsbGVzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNpZXJyYSBMZW9uZSIgPgogICAgICAgICAgICBTaWVycmEgTGVvbmUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU2luZ2Fwb3JlIiA+CiAgICAgICAgICAgIFNpbmdhcG9yZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTbG92YWtpYSIgPgogICAgICAgICAgICBTbG92YWtpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTbG92ZW5pYSIgPgogICAgICAgICAgICBTbG92ZW5pYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTb2xvbW9uIElzbGFuZHMiID4KICAgICAgICAgICAgU29sb21vbiBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNvbWFsaWEiID4KICAgICAgICAgICAgU29tYWxpYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTb3V0aCBBZnJpY2EiID4KICAgICAgICAgICAgU291dGggQWZyaWNhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNvdXRoIEdlb3JnaWEgYW5kIHRoZSBTb3V0aCBTYW5kd2ljaCBJc2xhbmRzIiA+CiAgICAgICAgICAgIFNvdXRoIEdlb3JnaWEgYW5kIHRoZSBTb3V0aCBTYW5kd2ljaCBJc2xhbmRzCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNwYWluIiA+CiAgICAgICAgICAgIFNwYWluCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNyaSBMYW5rYSIgPgogICAgICAgICAgICBTcmkgTGFua2EKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3VkYW4iID4KICAgICAgICAgICAgU3VkYW4KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3VyaW5hbWUiID4KICAgICAgICAgICAgU3VyaW5hbWUKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3ZhbGJhcmQgYW5kIEphbiBNYXllbiIgPgogICAgICAgICAgICBTdmFsYmFyZCBhbmQgSmFuIE1heWVuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlN3YXppbGFuZCIgPgogICAgICAgICAgICBTd2F6aWxhbmQKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iU3dlZGVuIiA+CiAgICAgICAgICAgIFN3ZWRlbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTd2l0emVybGFuZCIgPgogICAgICAgICAgICBTd2l0emVybGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJTeXJpYW4gQXJhYiBSZXB1YmxpYyIgPgogICAgICAgICAgICBTeXJpYW4gQXJhYiBSZXB1YmxpYwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUYWl3YW4sIFByb3ZpbmNlIG9mIENoaW5hIiA+CiAgICAgICAgICAgIFRhaXdhbiwgUHJvdmluY2Ugb2YgQ2hpbmEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVGFqaWtpc3RhbiIgPgogICAgICAgICAgICBUYWppa2lzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRhbnphbmlhLCBVbml0ZWQgUmVwdWJsaWMgb2YiID4KICAgICAgICAgICAgVGFuemFuaWEsIFVuaXRlZCBSZXB1YmxpYyBvZgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUaGFpbGFuZCIgPgogICAgICAgICAgICBUaGFpbGFuZAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUaW1vci1MZXN0ZSIgPgogICAgICAgICAgICBUaW1vci1MZXN0ZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUb2dvIiA+CiAgICAgICAgICAgIFRvZ28KICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVG9rZWxhdSIgPgogICAgICAgICAgICBUb2tlbGF1CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRvbmdhIiA+CiAgICAgICAgICAgIFRvbmdhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlRyaW5pZGFkIGFuZCBUb2JhZ28iID4KICAgICAgICAgICAgVHJpbmlkYWQgYW5kIFRvYmFnbwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUdW5pc2lhIiA+CiAgICAgICAgICAgIFR1bmlzaWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVHVya2V5IiA+CiAgICAgICAgICAgIFR1cmtleQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJUdXJrbWVuaXN0YW4iID4KICAgICAgICAgICAgVHVya21lbmlzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlR1cmtzIGFuZCBDYWljb3MgSXNsYW5kcyIgPgogICAgICAgICAgICBUdXJrcyBhbmQgQ2FpY29zIElzbGFuZHMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVHV2YWx1IiA+CiAgICAgICAgICAgIFR1dmFsdQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVZ2FuZGEiID4KICAgICAgICAgICAgVWdhbmRhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlVrcmFpbmUiID4KICAgICAgICAgICAgVWtyYWluZQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVbml0ZWQgQXJhYiBFbWlyYXRlcyIgPgogICAgICAgICAgICBVbml0ZWQgQXJhYiBFbWlyYXRlcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVbml0ZWQgS2luZ2RvbSIgPgogICAgICAgICAgICBVbml0ZWQgS2luZ2RvbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVbml0ZWQgU3RhdGVzIiA+CiAgICAgICAgICAgIFVuaXRlZCBTdGF0ZXMKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVW5pdGVkIFN0YXRlcyBNaW5vciBPdXRseWluZyBJc2xhbmRzIiA+CiAgICAgICAgICAgIFVuaXRlZCBTdGF0ZXMgTWlub3IgT3V0bHlpbmcgSXNsYW5kcwogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJVcnVndWF5IiA+CiAgICAgICAgICAgIFVydWd1YXkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iVXpiZWtpc3RhbiIgPgogICAgICAgICAgICBVemJla2lzdGFuCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlZhbnVhdHUiID4KICAgICAgICAgICAgVmFudWF0dQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWZW5lenVlbGEiID4KICAgICAgICAgICAgVmVuZXp1ZWxhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlZpZXRuYW0iID4KICAgICAgICAgICAgVmlldG5hbQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWaXJnaW4gSXNsYW5kcywgQnJpdGlzaCIgPgogICAgICAgICAgICBWaXJnaW4gSXNsYW5kcywgQnJpdGlzaAogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJWaXJnaW4gSXNsYW5kcywgVS5zLiIgPgogICAgICAgICAgICBWaXJnaW4gSXNsYW5kcywgVS5zLgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJXYWxsaXMgYW5kIEZ1dHVuYSIgPgogICAgICAgICAgICBXYWxsaXMgYW5kIEZ1dHVuYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJXZXN0ZXJuIFNhaGFyYSIgPgogICAgICAgICAgICBXZXN0ZXJuIFNhaGFyYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJZZW1lbiIgPgogICAgICAgICAgICBZZW1lbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJaYW1iaWEiID4KICAgICAgICAgICAgWmFtYmlhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlppbWJhYndlIiA+CiAgICAgICAgICAgIFppbWJhYndlCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNHIiA+CiAgICAgICAgICAgIFNHCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNBTkFEQSIgPgogICAgICAgICAgICBDQU5BREEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iS29yZWEiID4KICAgICAgICAgICAgS29yZWEKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIiA+CiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ikx1eGVtYm91cmdoIiA+CiAgICAgICAgICAgIEx1eGVtYm91cmdoCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ik1ZIiA+CiAgICAgICAgICAgIE1ZCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkVTV0FSVElOSSIgPgogICAgICAgICAgICBFU1dBUlRJTkkKICAgICAgICAgIDwvb3B0aW9uPgogICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZVN3YXRpbmkgIiA+CiAgICAgICAgICAgIGVTd2F0aW5pCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IlNaIiA+CiAgICAgICAgICAgIFNaCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkNBIiA+CiAgICAgICAgICAgIENBCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkdyZWF0IEJyaXRhaW4iID4KICAgICAgICAgICAgR3JlYXQgQnJpdGFpbgogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJSdXNzaWEiID4KICAgICAgICAgICAgUnVzc2lhCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICAgIDxvcHRpb24gdmFsdWU9IkhvbmcgS29uZyBTQVIgQ2hpbmEiID4KICAgICAgICAgICAgSG9uZyBLb25nIFNBUiBDaGluYQogICAgICAgICAgPC9vcHRpb24+CiAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJMb25kb24iID4KICAgICAgICAgICAgTG9uZG9uCiAgICAgICAgICA8L29wdGlvbj4KICAgICAgICA8L3NlbGVjdD4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9Il9mb3JtX2VsZW1lbnQgX2ZpZWxkMiBfZnVsbF93aWR0aCAiID4KICAgICAgPGRpdiBjbGFzcz0iX3JvdyI+CiAgICAgICAgPGxhYmVsIGNsYXNzPSJfZm9ybS1sYWJlbCI+CiAgICAgICAgICBQcml2YWN5IFBvbGljeSoKICAgICAgICA8L2xhYmVsPgogICAgICA8L2Rpdj4KICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iZmllbGRbMl1bXSIgdmFsdWU9In58Ij4KICAgICAgPGRpdiBjbGFzcz0iX3JvdyBfY2hlY2tib3gtcmFkaW8iPgogICAgICAgIDxpbnB1dCBpZD0iZmllbGRfMkkgcmVhZCBhbmQgdW5kZXJzdG9vZCBDRlRFIFByaXZhY3kgUG9saWN5ICh3d3cuY2Z0ZS5lZHVjYXRpb24vcHJpdmFjeS1wb2xpY3kpIiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZmllbGRbMl1bXSIgdmFsdWU9IkkgcmVhZCBhbmQgdW5kZXJzdG9vZCBDRlRFIFByaXZhY3kgUG9saWN5ICh3d3cuY2Z0ZS5lZHVjYXRpb24vcHJpdmFjeS1wb2xpY3kpIiBjbGFzcz0iYW55IiAgcmVxdWlyZWQ+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8bGFiZWwgZm9yPSJmaWVsZF8ySSByZWFkIGFuZCB1bmRlcnN0b29kIENGVEUgUHJpdmFjeSBQb2xpY3kgKHd3dy5jZnRlLmVkdWNhdGlvbi9wcml2YWN5LXBvbGljeSkiPgogICAgICAgICAgICBJIHJlYWQgYW5kIHVuZGVyc3Rvb2QgQ0ZURSBQcml2YWN5IFBvbGljeSAod3d3LmNmdGUuZWR1Y2F0aW9uL3ByaXZhY3ktcG9saWN5KQogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfZm9ybV9lbGVtZW50IF9maWVsZDMgX2Z1bGxfd2lkdGggIiA+CiAgICAgIDxkaXYgY2xhc3M9Il9yb3ciPgogICAgICAgIDxsYWJlbCBjbGFzcz0iX2Zvcm0tbGFiZWwiPgogICAgICAgICAgQ29tbXVuaWNhdGlvbiBvcHRpb25zCiAgICAgICAgPC9sYWJlbD4KICAgICAgPC9kaXY+CiAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImZpZWxkWzNdW10iIHZhbHVlPSJ+fCI+CiAgICAgIDxkaXYgY2xhc3M9Il9yb3cgX2NoZWNrYm94LXJhZGlvIj4KICAgICAgICA8aW5wdXQgaWQ9ImZpZWxkXzNJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSYjMDM5O3MgY291cnNlcyBieSBlbWFpbCIgdHlwZT0iY2hlY2tib3giIG5hbWU9ImZpZWxkWzNdW10iIHZhbHVlPSJJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSYjMDM5O3MgY291cnNlcyBieSBlbWFpbCIgICA+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8bGFiZWwgZm9yPSJmaWVsZF8zSSYjMDM5O20gaGFwcHkgdG8gcmVjZWl2ZSBtb3JlIGluZm9ybWF0aW9uIGFib3V0IENGVEUmIzAzOTtzIGNvdXJzZXMgYnkgZW1haWwiPgogICAgICAgICAgICBJJiMwMzk7bSBoYXBweSB0byByZWNlaXZlIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgQ0ZURSYjMDM5O3MgY291cnNlcyBieSBlbWFpbAogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgICA8ZGl2IGNsYXNzPSJfcm93IF9jaGVja2JveC1yYWRpbyI+CiAgICAgICAgPGlucHV0IGlkPSJmaWVsZF8zSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZ2VuZXJhbCBuZXdzbGV0dGVyIiB0eXBlPSJjaGVja2JveCIgbmFtZT0iZmllbGRbM11bXSIgdmFsdWU9Ikkgd2FudCB0byByZWNlaXZlIENGVEUmIzAzOTtzIGdlbmVyYWwgbmV3c2xldHRlciIgICA+CiAgICAgICAgPHNwYW4+CiAgICAgICAgICA8bGFiZWwgZm9yPSJmaWVsZF8zSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZ2VuZXJhbCBuZXdzbGV0dGVyIj4KICAgICAgICAgICAgSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZ2VuZXJhbCBuZXdzbGV0dGVyCiAgICAgICAgICA8L2xhYmVsPgogICAgICAgIDwvc3Bhbj4KICAgICAgPC9kaXY+CiAgICAgIDxkaXYgY2xhc3M9Il9yb3cgX2NoZWNrYm94LXJhZGlvIj4KICAgICAgICA8aW5wdXQgaWQ9ImZpZWxkXzNJIHdhbnQgdG8gcmVjZWl2ZSBDRlRFJiMwMzk7cyBldmVudHMgbmV3c2xldHRlciAiIHR5cGU9ImNoZWNrYm94IiBuYW1lPSJmaWVsZFszXVtdIiB2YWx1ZT0iSSB3YW50IHRvIHJlY2VpdmUgQ0ZURSYjMDM5O3MgZXZlbnRzIG5ld3NsZXR0ZXIgIiAgID4KICAgICAgICA8c3Bhbj4KICAgICAgICAgIDxsYWJlbCBmb3I9ImZpZWxkXzNJIHdhbnQgdG8gcmVjZWl2ZSBDRlRFJiMwMzk7cyBldmVudHMgbmV3c2xldHRlciAiPgogICAgICAgICAgICBJIHdhbnQgdG8gcmVjZWl2ZSBDRlRFJiMwMzk7cyBldmVudHMgbmV3c2xldHRlcgogICAgICAgICAgPC9sYWJlbD4KICAgICAgICA8L3NwYW4+CiAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJfYnV0dG9uLXdyYXBwZXIgX2Z1bGxfd2lkdGgiPgogICAgICA8YnV0dG9uIGlkPSJfZm9ybV8zMV9zdWJtaXQiIGNsYXNzPSJfc3VibWl0IiB0eXBlPSJzdWJtaXQiPgogICAgICAgIFN1Ym1pdAogICAgICA8L2J1dHRvbj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iX2NsZWFyLWVsZW1lbnQiPgogICAgPC9kaXY+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0iX2Zvcm0tdGhhbmsteW91IiBzdHlsZT0iZGlzcGxheTpub25lOyI+CiAgPC9kaXY+CjwvZm9ybT48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CndpbmRvdy5jZmllbGRzID0geyIxIjoiY291bnRyeSIsIjIiOiJwcml2YWN5X3BvbGljeSIsIjMiOiJjb21tdW5pY2F0aW9uX29wdGlvbnMifTsKd2luZG93Ll9zaG93X3RoYW5rX3lvdSA9IGZ1bmN0aW9uKGlkLCBtZXNzYWdlLCB0cmFja2NtcF91cmwpIHsKICB2YXIgZm9ybSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfZm9ybV8nICsgaWQgKyAnXycpLCB0aGFua195b3UgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybS10aGFuay15b3UnKTsKICBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybS1jb250ZW50Jykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKICB0aGFua195b3UuaW5uZXJIVE1MID0gbWVzc2FnZTsKICB0aGFua195b3Uuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7CiAgaWYgKHR5cGVvZih0cmFja2NtcF91cmwpICE9ICd1bmRlZmluZWQnICYmIHRyYWNrY21wX3VybCkgewogICAgLy8gU2l0ZSB0cmFja2luZyBVUkwgdG8gdXNlIGFmdGVyIGlubGluZSBmb3JtIHN1Ym1pc3Npb24uCiAgICBfbG9hZF9zY3JpcHQodHJhY2tjbXBfdXJsKTsKICB9CiAgaWYgKHR5cGVvZiB3aW5kb3cuX2Zvcm1fY2FsbGJhY2sgIT09ICd1bmRlZmluZWQnKSB3aW5kb3cuX2Zvcm1fY2FsbGJhY2soaWQpOwp9Owp3aW5kb3cuX3Nob3dfZXJyb3IgPSBmdW5jdGlvbihpZCwgbWVzc2FnZSwgaHRtbCkgewogIHZhciBmb3JtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ19mb3JtXycgKyBpZCArICdfJyksIGVyciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLCBidXR0b24gPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpLCBvbGRfZXJyb3IgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybV9lcnJvcicpOwogIGlmIChvbGRfZXJyb3IpIG9sZF9lcnJvci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG9sZF9lcnJvcik7CiAgZXJyLmlubmVySFRNTCA9IG1lc3NhZ2U7CiAgZXJyLmNsYXNzTmFtZSA9ICdfZXJyb3ItaW5uZXIgX2Zvcm1fZXJyb3IgX25vX2Fycm93JzsKICB2YXIgd3JhcHBlciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogIHdyYXBwZXIuY2xhc3NOYW1lID0gJ19mb3JtLWlubmVyJzsKICB3cmFwcGVyLmFwcGVuZENoaWxkKGVycik7CiAgYnV0dG9uLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHdyYXBwZXIsIGJ1dHRvbik7CiAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2lkXj0iX2Zvcm0iXVtpZCQ9Il9zdWJtaXQiXScpLmRpc2FibGVkID0gZmFsc2U7CiAgaWYgKGh0bWwpIHsKICAgIHZhciBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgIGRpdi5jbGFzc05hbWUgPSAnX2Vycm9yLWh0bWwnOwogICAgZGl2LmlubmVySFRNTCA9IGh0bWw7CiAgICBlcnIuYXBwZW5kQ2hpbGQoZGl2KTsKICB9Cn07CndpbmRvdy5fbG9hZF9zY3JpcHQgPSBmdW5jdGlvbih1cmwsIGNhbGxiYWNrKSB7CiAgICB2YXIgaGVhZCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKSwgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0JyksIHIgPSBmYWxzZTsKICAgIHNjcmlwdC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7CiAgICBzY3JpcHQuY2hhcnNldCA9ICd1dGYtOCc7CiAgICBzY3JpcHQuc3JjID0gdXJsOwogICAgaWYgKGNhbGxiYWNrKSB7CiAgICAgIHNjcmlwdC5vbmxvYWQgPSBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7CiAgICAgIGlmICghciAmJiAoIXRoaXMucmVhZHlTdGF0ZSB8fCB0aGlzLnJlYWR5U3RhdGUgPT0gJ2NvbXBsZXRlJykpIHsKICAgICAgICByID0gdHJ1ZTsKICAgICAgICBjYWxsYmFjaygpOwogICAgICAgIH0KICAgICAgfTsKICAgIH0KICAgIGhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTsKfTsKKGZ1bmN0aW9uKCkgewogIGlmICh3aW5kb3cubG9jYXRpb24uc2VhcmNoLnNlYXJjaCgiZXhjbHVkZWZvcm0iKSAhPT0gLTEpIHJldHVybiBmYWxzZTsKICB2YXIgZ2V0Q29va2llID0gZnVuY3Rpb24obmFtZSkgewogICAgdmFyIG1hdGNoID0gZG9jdW1lbnQuY29va2llLm1hdGNoKG5ldyBSZWdFeHAoJyhefDsgKScgKyBuYW1lICsgJz0oW147XSspJykpOwogICAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMl0gOiBudWxsOwogIH0KICB2YXIgc2V0Q29va2llID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHsKICAgIHZhciBub3cgPSBuZXcgRGF0ZSgpOwogICAgdmFyIHRpbWUgPSBub3cuZ2V0VGltZSgpOwogICAgdmFyIGV4cGlyZVRpbWUgPSB0aW1lICsgMTAwMCAqIDYwICogNjAgKiAyNCAqIDM2NTsKICAgIG5vdy5zZXRUaW1lKGV4cGlyZVRpbWUpOwogICAgZG9jdW1lbnQuY29va2llID0gbmFtZSArICc9JyArIHZhbHVlICsgJzsgZXhwaXJlcz0nICsgbm93ICsgJztwYXRoPS8nOwogIH0KICAgICAgdmFyIGFkZEV2ZW50ID0gZnVuY3Rpb24oZWxlbWVudCwgZXZlbnQsIGZ1bmMpIHsKICAgIGlmIChlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIpIHsKICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50LCBmdW5jKTsKICAgIH0gZWxzZSB7CiAgICAgIHZhciBvbGRGdW5jID0gZWxlbWVudFsnb24nICsgZXZlbnRdOwogICAgICBlbGVtZW50WydvbicgKyBldmVudF0gPSBmdW5jdGlvbigpIHsKICAgICAgICBvbGRGdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7CiAgICAgICAgZnVuYy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwogICAgICB9OwogICAgfQogIH0KICB2YXIgX3JlbW92ZWQgPSBmYWxzZTsKICB2YXIgZm9ybV90b19zdWJtaXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnX2Zvcm1fMzFfJyk7CiAgdmFyIGFsbElucHV0cyA9IGZvcm1fdG9fc3VibWl0LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0LCBzZWxlY3QsIHRleHRhcmVhJyksIHRvb2x0aXBzID0gW10sIHN1Ym1pdHRlZCA9IGZhbHNlOwoKICB2YXIgZ2V0VXJsUGFyYW0gPSBmdW5jdGlvbihuYW1lKSB7CiAgICB2YXIgcmVnZXhTdHIgPSAnW1w/Jl0nICsgbmFtZSArICc9KFteJiNdKiknOwogICAgdmFyIHJlc3VsdHMgPSBuZXcgUmVnRXhwKHJlZ2V4U3RyLCAnaScpLmV4ZWMod2luZG93LmxvY2F0aW9uLmhyZWYpOwogICAgcmV0dXJuIHJlc3VsdHMgIT0gdW5kZWZpbmVkID8gZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMV0pIDogZmFsc2U7CiAgfTsKCiAgZm9yICh2YXIgaSA9IDA7IGkgPCBhbGxJbnB1dHMubGVuZ3RoOyBpKyspIHsKICAgIHZhciByZWdleFN0ciA9ICJmaWVsZFxcWyhcXGQrKVxcXSI7CiAgICB2YXIgcmVzdWx0cyA9IG5ldyBSZWdFeHAocmVnZXhTdHIpLmV4ZWMoYWxsSW5wdXRzW2ldLm5hbWUpOwogICAgaWYgKHJlc3VsdHMgIT0gdW5kZWZpbmVkKSB7CiAgICAgIGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUgPSB3aW5kb3cuY2ZpZWxkc1tyZXN1bHRzWzFdXTsKICAgIH0gZWxzZSB7CiAgICAgIGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUgPSBhbGxJbnB1dHNbaV0ubmFtZTsKICAgIH0KICAgIHZhciBmaWVsZFZhbCA9IGdldFVybFBhcmFtKGFsbElucHV0c1tpXS5kYXRhc2V0Lm5hbWUpOwoKICAgIGlmIChmaWVsZFZhbCkgewogICAgICBpZiAoYWxsSW5wdXRzW2ldLnR5cGUgPT0gInJhZGlvIiB8fCBhbGxJbnB1dHNbaV0udHlwZSA9PSAiY2hlY2tib3giKSB7CiAgICAgICAgaWYgKGFsbElucHV0c1tpXS52YWx1ZSA9PSBmaWVsZFZhbCkgewogICAgICAgICAgYWxsSW5wdXRzW2ldLmNoZWNrZWQgPSB0cnVlOwogICAgICAgIH0KICAgICAgfSBlbHNlIHsKICAgICAgICBhbGxJbnB1dHNbaV0udmFsdWUgPSBmaWVsZFZhbDsKICAgICAgfQogICAgfQogIH0KCiAgdmFyIHJlbW92ZV90b29sdGlwcyA9IGZ1bmN0aW9uKCkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b29sdGlwcy5sZW5ndGg7IGkrKykgewogICAgICB0b29sdGlwc1tpXS50aXAucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0b29sdGlwc1tpXS50aXApOwogICAgfQogICAgICB0b29sdGlwcyA9IFtdOwogIH07CiAgdmFyIHJlbW92ZV90b29sdGlwID0gZnVuY3Rpb24oZWxlbSkgewogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0b29sdGlwcy5sZW5ndGg7IGkrKykgewogICAgICBpZiAodG9vbHRpcHNbaV0uZWxlbSA9PT0gZWxlbSkgewogICAgICAgIHRvb2x0aXBzW2ldLnRpcC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRvb2x0aXBzW2ldLnRpcCk7CiAgICAgICAgdG9vbHRpcHMuc3BsaWNlKGksIDEpOwogICAgICAgIHJldHVybjsKICAgICAgfQogICAgfQogIH07CiAgdmFyIGNyZWF0ZV90b29sdGlwID0gZnVuY3Rpb24oZWxlbSwgdGV4dCkgewogICAgdmFyIHRvb2x0aXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgYXJyb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgaW5uZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSwgbmV3X3Rvb2x0aXAgPSB7fTsKICAgIGlmIChlbGVtLnR5cGUgIT0gJ3JhZGlvJyAmJiBlbGVtLnR5cGUgIT0gJ2NoZWNrYm94JykgewogICAgICB0b29sdGlwLmNsYXNzTmFtZSA9ICdfZXJyb3InOwogICAgICBhcnJvdy5jbGFzc05hbWUgPSAnX2Vycm9yLWFycm93JzsKICAgICAgaW5uZXIuY2xhc3NOYW1lID0gJ19lcnJvci1pbm5lcic7CiAgICAgIGlubmVyLmlubmVySFRNTCA9IHRleHQ7CiAgICAgIHRvb2x0aXAuYXBwZW5kQ2hpbGQoYXJyb3cpOwogICAgICB0b29sdGlwLmFwcGVuZENoaWxkKGlubmVyKTsKICAgICAgZWxlbS5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHRvb2x0aXApOwogICAgfSBlbHNlIHsKICAgICAgdG9vbHRpcC5jbGFzc05hbWUgPSAnX2Vycm9yLWlubmVyIF9ub19hcnJvdyc7CiAgICAgIHRvb2x0aXAuaW5uZXJIVE1MID0gdGV4dDsKICAgICAgZWxlbS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0b29sdGlwLCBlbGVtKTsKICAgICAgbmV3X3Rvb2x0aXAubm9fYXJyb3cgPSB0cnVlOwogICAgfQogICAgbmV3X3Rvb2x0aXAudGlwID0gdG9vbHRpcDsKICAgIG5ld190b29sdGlwLmVsZW0gPSBlbGVtOwogICAgdG9vbHRpcHMucHVzaChuZXdfdG9vbHRpcCk7CiAgICByZXR1cm4gbmV3X3Rvb2x0aXA7CiAgfTsKICB2YXIgcmVzaXplX3Rvb2x0aXAgPSBmdW5jdGlvbih0b29sdGlwKSB7CiAgICB2YXIgcmVjdCA9IHRvb2x0aXAuZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKICAgIHZhciBkb2MgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIHNjcm9sbFBvc2l0aW9uID0gcmVjdC50b3AgLSAoKHdpbmRvdy5wYWdlWU9mZnNldCB8fCBkb2Muc2Nyb2xsVG9wKSAgLSAoZG9jLmNsaWVudFRvcCB8fCAwKSk7CiAgICBpZiAoc2Nyb2xsUG9zaXRpb24gPCA0MCkgewogICAgICB0b29sdGlwLnRpcC5jbGFzc05hbWUgPSB0b29sdGlwLnRpcC5jbGFzc05hbWUucmVwbGFjZSgvID8oX2Fib3ZlfF9iZWxvdykgPy9nLCAnJykgKyAnIF9iZWxvdyc7CiAgICB9IGVsc2UgewogICAgICB0b29sdGlwLnRpcC5jbGFzc05hbWUgPSB0b29sdGlwLnRpcC5jbGFzc05hbWUucmVwbGFjZSgvID8oX2Fib3ZlfF9iZWxvdykgPy9nLCAnJykgKyAnIF9hYm92ZSc7CiAgICB9CiAgfTsKICB2YXIgcmVzaXplX3Rvb2x0aXBzID0gZnVuY3Rpb24oKSB7CiAgICBpZiAoX3JlbW92ZWQpIHJldHVybjsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9vbHRpcHMubGVuZ3RoOyBpKyspIHsKICAgICAgaWYgKCF0b29sdGlwc1tpXS5ub19hcnJvdykgcmVzaXplX3Rvb2x0aXAodG9vbHRpcHNbaV0pOwogICAgfQogIH07CiAgdmFyIHZhbGlkYXRlX2ZpZWxkID0gZnVuY3Rpb24oZWxlbSwgcmVtb3ZlKSB7CiAgICB2YXIgdG9vbHRpcCA9IG51bGwsIHZhbHVlID0gZWxlbS52YWx1ZSwgbm9fZXJyb3IgPSB0cnVlOwogICAgcmVtb3ZlID8gcmVtb3ZlX3Rvb2x0aXAoZWxlbSkgOiBmYWxzZTsKICAgIGlmIChlbGVtLnR5cGUgIT0gJ2NoZWNrYm94JykgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZS5yZXBsYWNlKC8gP19oYXNfZXJyb3IgPy9nLCAnJyk7CiAgICBpZiAoZWxlbS5nZXRBdHRyaWJ1dGUoJ3JlcXVpcmVkJykgIT09IG51bGwpIHsKICAgICAgaWYgKGVsZW0udHlwZSA9PSAncmFkaW8nIHx8IChlbGVtLnR5cGUgPT0gJ2NoZWNrYm94JyAmJiAvYW55Ly50ZXN0KGVsZW0uY2xhc3NOYW1lKSkpIHsKICAgICAgICB2YXIgZWxlbXMgPSBmb3JtX3RvX3N1Ym1pdC5lbGVtZW50c1tlbGVtLm5hbWVdOwogICAgICAgIGlmICghKGVsZW1zIGluc3RhbmNlb2YgTm9kZUxpc3QgfHwgZWxlbXMgaW5zdGFuY2VvZiBIVE1MQ29sbGVjdGlvbikgfHwgZWxlbXMubGVuZ3RoIDw9IDEpIHsKICAgICAgICAgIG5vX2Vycm9yID0gZWxlbS5jaGVja2VkOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgIG5vX2Vycm9yID0gZmFsc2U7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChlbGVtc1tpXS5jaGVja2VkKSBub19lcnJvciA9IHRydWU7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghbm9fZXJyb3IpIHsKICAgICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiUGxlYXNlIHNlbGVjdCBhbiBvcHRpb24uIik7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGVsZW0udHlwZSA9PSdjaGVja2JveCcpIHsKICAgICAgICB2YXIgZWxlbXMgPSBmb3JtX3RvX3N1Ym1pdC5lbGVtZW50c1tlbGVtLm5hbWVdLCBmb3VuZCA9IGZhbHNlLCBlcnIgPSBbXTsKICAgICAgICBub19lcnJvciA9IHRydWU7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlbGVtcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgaWYgKGVsZW1zW2ldLmdldEF0dHJpYnV0ZSgncmVxdWlyZWQnKSA9PT0gbnVsbCkgY29udGludWU7CiAgICAgICAgICBpZiAoIWZvdW5kICYmIGVsZW1zW2ldICE9PSBlbGVtKSByZXR1cm4gdHJ1ZTsKICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKICAgICAgICAgIGVsZW1zW2ldLmNsYXNzTmFtZSA9IGVsZW1zW2ldLmNsYXNzTmFtZS5yZXBsYWNlKC8gP19oYXNfZXJyb3IgPy9nLCAnJyk7CiAgICAgICAgICBpZiAoIWVsZW1zW2ldLmNoZWNrZWQpIHsKICAgICAgICAgICAgbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgICAgICAgZWxlbXNbaV0uY2xhc3NOYW1lID0gZWxlbXNbaV0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICAgICAgZXJyLnB1c2goIkNoZWNraW5nICVzIGlzIHJlcXVpcmVkIi5yZXBsYWNlKCIlcyIsIGVsZW1zW2ldLnZhbHVlKSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICghbm9fZXJyb3IpIHsKICAgICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCBlcnIuam9pbignPGJyLz4nKSk7CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgKGVsZW0udGFnTmFtZSA9PSAnU0VMRUNUJykgewogICAgICAgIHZhciBzZWxlY3RlZCA9IHRydWU7CiAgICAgICAgaWYgKGVsZW0ubXVsdGlwbGUpIHsKICAgICAgICAgIHNlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVsZW0ub3B0aW9ucy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoZWxlbS5vcHRpb25zW2ldLnNlbGVjdGVkKSB7CiAgICAgICAgICAgICAgc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbS5vcHRpb25zLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChlbGVtLm9wdGlvbnNbaV0uc2VsZWN0ZWQgJiYgIWVsZW0ub3B0aW9uc1tpXS52YWx1ZSkgewogICAgICAgICAgICAgIHNlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCFzZWxlY3RlZCkgewogICAgICAgICAgZWxlbS5jbGFzc05hbWUgPSBlbGVtLmNsYXNzTmFtZSArICcgX2hhc19lcnJvcic7CiAgICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgICAgdG9vbHRpcCA9IGNyZWF0ZV90b29sdGlwKGVsZW0sICJQbGVhc2Ugc2VsZWN0IGFuIG9wdGlvbi4iKTsKICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gJycpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKTsKICAgICAgfQogICAgfQogICAgaWYgKG5vX2Vycm9yICYmIGVsZW0ubmFtZSA9PSAnZW1haWwnKSB7CiAgICAgIGlmICghdmFsdWUubWF0Y2goL15bXCtfYS16MC05LScmPV0rKFwuW1wrX2EtejAtOS0nXSspKkBbYS16MC05LV0rKFwuW2EtejAtOS1dKykqKFwuW2Etel17Mix9KSQvaSkpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiRW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzLiIpOwogICAgICB9CiAgICB9CiAgICBpZiAobm9fZXJyb3IgJiYgL2RhdGVfZmllbGQvLnRlc3QoZWxlbS5jbGFzc05hbWUpKSB7CiAgICAgIGlmICghdmFsdWUubWF0Y2goL15cZFxkXGRcZC1cZFxkLVxkXGQkLykpIHsKICAgICAgICBlbGVtLmNsYXNzTmFtZSA9IGVsZW0uY2xhc3NOYW1lICsgJyBfaGFzX2Vycm9yJzsKICAgICAgICBub19lcnJvciA9IGZhbHNlOwogICAgICAgIHRvb2x0aXAgPSBjcmVhdGVfdG9vbHRpcChlbGVtLCAiRW50ZXIgYSB2YWxpZCBkYXRlLiIpOwogICAgICB9CiAgICB9CiAgICB0b29sdGlwID8gcmVzaXplX3Rvb2x0aXAodG9vbHRpcCkgOiBmYWxzZTsKICAgIHJldHVybiBub19lcnJvcjsKICB9OwogIHZhciBuZWVkc192YWxpZGF0ZSA9IGZ1bmN0aW9uKGVsKSB7CiAgICByZXR1cm4gZWwubmFtZSA9PSAnZW1haWwnIHx8IGVsLmdldEF0dHJpYnV0ZSgncmVxdWlyZWQnKSAhPT0gbnVsbDsKICB9OwogIHZhciB2YWxpZGF0ZV9mb3JtID0gZnVuY3Rpb24oZSkgewogICAgdmFyIGVyciA9IGZvcm1fdG9fc3VibWl0LnF1ZXJ5U2VsZWN0b3IoJy5fZm9ybV9lcnJvcicpLCBub19lcnJvciA9IHRydWU7CiAgICBpZiAoIXN1Ym1pdHRlZCkgewogICAgICBzdWJtaXR0ZWQgPSB0cnVlOwogICAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gYWxsSW5wdXRzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgdmFyIGlucHV0ID0gYWxsSW5wdXRzW2ldOwogICAgICAgIGlmIChuZWVkc192YWxpZGF0ZShpbnB1dCkpIHsKICAgICAgICAgIGlmIChpbnB1dC50eXBlID09ICd0ZXh0JykgewogICAgICAgICAgICBhZGRFdmVudChpbnB1dCwgJ2JsdXInLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZS50cmltKCk7CiAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICBhZGRFdmVudChpbnB1dCwgJ2lucHV0JywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQodGhpcywgdHJ1ZSk7CiAgICAgICAgICAgIH0pOwogICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC50eXBlID09ICdyYWRpbycgfHwgaW5wdXQudHlwZSA9PSAnY2hlY2tib3gnKSB7CiAgICAgICAgICAgIChmdW5jdGlvbihlbCkgewogICAgICAgICAgICAgIHZhciByYWRpb3MgPSBmb3JtX3RvX3N1Ym1pdC5lbGVtZW50c1tlbC5uYW1lXTsKICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhZGlvcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgYWRkRXZlbnQocmFkaW9zW2ldLCAnY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfZmllbGQoZWwsIHRydWUpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KShpbnB1dCk7CiAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0LnRhZ05hbWUgPT0gJ1NFTEVDVCcpIHsKICAgICAgICAgICAgYWRkRXZlbnQoaW5wdXQsICdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICB2YWxpZGF0ZV9maWVsZCh0aGlzLCB0cnVlKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgICByZW1vdmVfdG9vbHRpcHMoKTsKICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhbGxJbnB1dHMubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKICAgICAgdmFyIGVsZW0gPSBhbGxJbnB1dHNbaV07CiAgICAgIGlmIChuZWVkc192YWxpZGF0ZShlbGVtKSkgewogICAgICAgIGlmIChlbGVtLnRhZ05hbWUudG9Mb3dlckNhc2UoKSAhPT0gInNlbGVjdCIpIHsKICAgICAgICAgIGVsZW0udmFsdWUgPSBlbGVtLnZhbHVlLnRyaW0oKTsKICAgICAgICB9CiAgICAgICAgdmFsaWRhdGVfZmllbGQoZWxlbSkgPyB0cnVlIDogbm9fZXJyb3IgPSBmYWxzZTsKICAgICAgfQogICAgfQogICAgaWYgKCFub19lcnJvciAmJiBlKSB7CiAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIH0KICAgIHJlc2l6ZV90b29sdGlwcygpOwogICAgcmV0dXJuIG5vX2Vycm9yOwogIH07CiAgYWRkRXZlbnQod2luZG93LCAncmVzaXplJywgcmVzaXplX3Rvb2x0aXBzKTsKICBhZGRFdmVudCh3aW5kb3csICdzY3JvbGwnLCByZXNpemVfdG9vbHRpcHMpOwogIHdpbmRvdy5fb2xkX3NlcmlhbGl6ZSA9IG51bGw7CiAgaWYgKHR5cGVvZiBzZXJpYWxpemUgIT09ICd1bmRlZmluZWQnKSB3aW5kb3cuX29sZF9zZXJpYWxpemUgPSB3aW5kb3cuc2VyaWFsaXplOwogIF9sb2FkX3NjcmlwdCgiLy9kM3J4YWlqNTZ2amVnZS5jbG91ZGZyb250Lm5ldC9mb3JtLXNlcmlhbGl6ZS8wLjMvc2VyaWFsaXplLm1pbi5qcyIsIGZ1bmN0aW9uKCkgewogICAgd2luZG93Ll9mb3JtX3NlcmlhbGl6ZSA9IHdpbmRvdy5zZXJpYWxpemU7CiAgICBpZiAod2luZG93Ll9vbGRfc2VyaWFsaXplKSB3aW5kb3cuc2VyaWFsaXplID0gd2luZG93Ll9vbGRfc2VyaWFsaXplOwogIH0pOwogIHZhciBmb3JtX3N1Ym1pdCA9IGZ1bmN0aW9uKGUpIHsKICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgIGlmICh2YWxpZGF0ZV9mb3JtKCkpIHsKICAgICAgLy8gdXNlIHRoaXMgdHJpY2sgdG8gZ2V0IHRoZSBzdWJtaXQgYnV0dG9uICYgZGlzYWJsZSBpdCB1c2luZyBwbGFpbiBqYXZhc2NyaXB0CiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNfZm9ybV8zMV9zdWJtaXQnKS5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgICAgIHZhciBzZXJpYWxpemVkID0gX2Zvcm1fc2VyaWFsaXplKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdfZm9ybV8zMV8nKSk7CiAgICAgIHZhciBlcnIgPSBmb3JtX3RvX3N1Ym1pdC5xdWVyeVNlbGVjdG9yKCcuX2Zvcm1fZXJyb3InKTsKICAgICAgZXJyID8gZXJyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZXJyKSA6IGZhbHNlOwogICAgICBfbG9hZF9zY3JpcHQoJ2h0dHBzOi8vY2Z0ZS5hY3RpdmVob3N0ZWQuY29tL3Byb2MucGhwPycgKyBzZXJpYWxpemVkICsgJyZqc29ucD10cnVlJyk7CiAgICB9CiAgICByZXR1cm4gZmFsc2U7CiAgfTsKICBhZGRFdmVudChmb3JtX3RvX3N1Ym1pdCwgJ3N1Ym1pdCcsIGZvcm1fc3VibWl0KTsKfSkoKTsKCjwvc2NyaXB0Pg==[/fusion_code][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]