[fusion_builder_container type=”flex” hundred_percent=”yes” hundred_percent_height=”no” min_height_medium=”” min_height_small=”” min_height=”” hundred_percent_height_scroll=”no” align_content=”stretch” flex_align_items=”flex-start” flex_justify_content=”flex-start” flex_wrap_medium=”” flex_wrap_small=”” flex_wrap=”wrap” flex_column_spacing=”” hundred_percent_height_center_content=”yes” equal_height_columns=”no” container_tag=”div” menu_anchor=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” status=”published” publish_date=”” class=”” id=”” margin_top_medium=”” margin_bottom_medium=”” margin_top_small=”” margin_bottom_small=”” margin_top=”” margin_bottom=”” padding_top_medium=”” padding_right_medium=”” padding_bottom_medium=”” padding_left_medium=”” padding_top_small=”” padding_right_small=”” padding_bottom_small=”” padding_left_small=”” padding_top=”0px” padding_right=”0px” padding_bottom=”0px” padding_left=”0px” link_hover_color=”” hue=”” saturation=”” lightness=”” alpha=”” link_color=”” border_sizes_top=”” border_sizes_right=”” border_sizes_bottom=”” border_sizes_left=”” border_color=”” border_style=”solid” border_radius_top_left=”” border_radius_top_right=”” border_radius_bottom_right=”” border_radius_bottom_left=”” box_shadow=”no” box_shadow_vertical=”” box_shadow_horizontal=”” box_shadow_blur=”0″ box_shadow_spread=”0″ box_shadow_color=”” box_shadow_style=”” z_index=”” overflow=”” background_color_medium=”” background_color_small=”” background_color=”” gradient_start_color=”” gradient_end_color=”” gradient_start_position=”0″ gradient_end_position=”100″ gradient_type=”linear” radial_direction=”center center” linear_angle=”180″ background_image_medium=”” background_image_small=”” background_image=”” skip_lazy_load=”” background_position_medium=”” background_position_small=”” background_position=”center center” background_repeat_medium=”” background_repeat_small=”” background_repeat=”no-repeat” background_size_medium=”” background_size_small=”” background_size=”” background_custom_size=”” background_custom_size_medium=”” background_custom_size_small=”” fade=”no” background_parallax=”none” enable_mobile=”no” parallax_speed=”0.3″ background_blend_mode_medium=”” background_blend_mode_small=”” background_blend_mode=”none” background_slider_images=”” background_slider_position=”” background_slider_skip_lazy_loading=”no” background_slider_loop=”yes” background_slider_pause_on_hover=”no” background_slider_slideshow_speed=”5000″ background_slider_animation=”fade” background_slider_direction=”up” background_slider_animation_speed=”800″ background_slider_blend_mode=”” video_mp4=”” video_webm=”” video_ogv=”” video_url=”” video_aspect_ratio=”16:9″ video_loop=”yes” video_mute=”yes” video_preview_image=”” pattern_bg=”none” pattern_custom_bg=”” pattern_bg_color=”” pattern_bg_style=”default” pattern_bg_opacity=”100″ pattern_bg_size=”” pattern_bg_blend_mode=”normal” mask_bg=”none” mask_custom_bg=”” mask_bg_color=”” mask_bg_accent_color=”” mask_bg_style=”default” mask_bg_opacity=”100″ mask_bg_transform=”left” mask_bg_blend_mode=”normal” render_logics=”” logics=”” absolute=”off” absolute_devices=”small,medium,large” sticky=”off” sticky_devices=”small-visibility,medium-visibility,large-visibility” sticky_background_color=”” sticky_height=”” sticky_offset=”” sticky_transition_offset=”0″ scroll_offset=”0″ animation_type=”” animation_direction=”left” animation_color=”” animation_speed=”0.3″ animation_delay=”0″ animation_offset=”” filter_hue=”0″ filter_saturation=”100″ filter_brightness=”100″ filter_contrast=”100″ filter_invert=”0″ filter_sepia=”0″ filter_opacity=”100″ filter_blur=”0″ filter_hue_hover=”0″ filter_saturation_hover=”100″ filter_brightness_hover=”100″ filter_contrast_hover=”100″ filter_invert_hover=”0″ filter_sepia_hover=”0″ filter_opacity_hover=”100″ filter_blur_hover=”0″][fusion_builder_row][fusion_builder_column type=”1_1″ layout=”1_1″ align_self=”auto” content_layout=”column” align_content=”flex-start” valign_content=”flex-start” content_wrap=”wrap” spacing=”” center_content=”no” column_tag=”div” link=”” target=”_self” link_description=”” min_height=”” hide_on_mobile=”small-visibility,medium-visibility,large-visibility” sticky_display=”normal,sticky” class=”” id=”” type_medium=”” type_small=”” flex_grow_medium=”” flex_grow_small=”” flex_grow=”” flex_shrink_medium=”” flex_shrink_small=”” flex_shrink=”” order_medium=”0″ order_small=”0″ dimension_spacing_medium=”” dimension_spacing_small=”” dimension_spacing=”” dimension_margin_medium=”” dimension_margin_small=”” margin_top=”” margin_bottom=”” padding_medium=”” padding_small=”” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” hover_type=”none” border_sizes=”” border_color_hover=”” border_color=”” border_style=”solid” border_radius=”” box_shadow=”no” dimension_box_shadow=”” box_shadow_blur=”0″ box_shadow_spread=”0″ box_shadow_color=”” box_shadow_style=”” z_index_hover=”” z_index=”” overflow=”” background_type=”single” background_color_medium=”” background_color_small=”” background_color_medium_hover=”” background_color_small_hover=”” background_color_hover=”” background_color=”” gradient_start_color=”” gradient_end_color=”” gradient_start_position=”0″ gradient_end_position=”100″ gradient_type=”linear” radial_direction=”center center” linear_angle=”180″ background_image_medium=”” background_image_small=”” background_image=”” background_image_id_medium=”” background_image_id_small=”” background_image_id=”” lazy_load=”none” skip_lazy_load=”” background_position_medium=”” background_position_small=”” background_position=”left top” background_repeat_medium=”” background_repeat_small=”” background_repeat=”no-repeat” background_size_medium=”” background_size_small=”” background_size=”” background_custom_size=”” background_custom_size_medium=”” background_custom_size_small=”” background_blend_mode_medium=”” background_blend_mode_small=”” background_blend_mode=”none” background_slider_images=”” background_slider_position=”” background_slider_skip_lazy_loading=”no” background_slider_loop=”yes” background_slider_pause_on_hover=”no” background_slider_slideshow_speed=”5000″ background_slider_animation=”fade” background_slider_direction=”up” background_slider_animation_speed=”800″ background_slider_blend_mode=”” render_logics=”” sticky=”off” sticky_devices=”small-visibility,medium-visibility,large-visibility” sticky_offset=”” absolute=”off” absolute_props=”” filter_type=”regular” filter_hover_element=”self” filter_hue=”0″ filter_saturation=”100″ filter_brightness=”100″ filter_contrast=”100″ filter_invert=”0″ filter_sepia=”0″ filter_opacity=”100″ filter_blur=”0″ filter_hue_hover=”0″ filter_saturation_hover=”100″ filter_brightness_hover=”100″ filter_contrast_hover=”100″ filter_invert_hover=”0″ filter_sepia_hover=”0″ filter_opacity_hover=”100″ filter_blur_hover=”0″ transform_type=”regular” transform_hover_element=”self” transform_scale_x=”1″ transform_scale_y=”1″ transform_translate_x=”0″ transform_translate_y=”0″ transform_rotate=”0″ transform_skew_x=”0″ transform_skew_y=”0″ transform_scale_x_hover=”1″ transform_scale_y_hover=”1″ transform_translate_x_hover=”0″ transform_translate_y_hover=”0″ transform_rotate_hover=”0″ transform_skew_x_hover=”0″ transform_skew_y_hover=”0″ transform_origin=”” transition_duration=”300″ transition_easing=”ease” transition_custom_easing=”” motion_effects=”” scroll_motion_devices=”small-visibility,medium-visibility,large-visibility” animation_type=”” animation_direction=”left” animation_color=”” animation_speed=”0.3″ animation_delay=”0″ animation_offset=”” last=”true” border_position=”all” first=”true”][fusion_code]PCEtLQpXZWJzaXRlcyBCeSBNaWtlCk5ldXJvLVNwYXJrcyBIb21lcGFnZSBIZXJvClZpbWVvIGF1dG9wbGF5IHdpdGggdmlkZW8gY29udHJvbHMKLS0+Cgo8c2VjdGlvbgogICAgY2xhc3M9Im5zLWhvbWUtaGVybyIKICAgIGFyaWEtbGFiZWxsZWRieT0ibnMtaG9tZS1oZXJvLXRpdGxlIgo+CiAgICA8ZGl2IGNsYXNzPSJucy1ob21lLWhlcm9fX2lubmVyIj4KCiAgICAgICAgPGRpdiBjbGFzcz0ibnMtaG9tZS1oZXJvX19jb250ZW50Ij4KCiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJucy1ob21lLWhlcm9fX2V5ZWJyb3ciPgogICAgICAgICAgICAgICAgTmV1cm9kaXZlcnNpdHkgc3VwcG9ydCBmb3IgcGVvcGxlIGFuZCBvcmdhbmlzYXRpb25zCiAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgIDxoMQogICAgICAgICAgICAgICAgaWQ9Im5zLWhvbWUtaGVyby10aXRsZSIKICAgICAgICAgICAgICAgIGNsYXNzPSJucy1ob21lLWhlcm9fX3RpdGxlIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibnMtaG9tZS1oZXJvX190aXRsZS1tYWluIj4KICAgICAgICAgICAgICAgICAgICBCZXR0ZXIgYnVzaW5lc3MuCiAgICAgICAgICAgICAgICA8L3NwYW4+CgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im5zLWhvbWUtaGVyb19fcG93ZXJlZC1saW5lIj4KCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im5zLWhvbWUtaGVyb19fcG93ZXJlZC10ZXh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgUG93ZXJlZCBieQogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im5zLWhvbWUtaGVyb19fbmV1cm8tdGV4dCI+CiAgICAgICAgICAgICAgICAgICAgICAgIG5ldXJvZGl2ZXJzaXR5LgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgIDwvaDE+CgogICAgICAgICAgICA8cCBjbGFzcz0ibnMtaG9tZS1oZXJvX19pbnRybyI+CiAgICAgICAgICAgICAgICBBcyB5b3VyIGJ1c2luZXNzIGdyb3dzLCBzbyBkb2VzIHlvdXIgdG8tZG8gbGlzdC4gVGhhdOKAmXMgd2hlcmUgd2UgY29tZSBpbi4gQnVzaW5lc3MgZ3Jvd3RoIGlzIGNoYWxsZW5naW5nLCBidXQgd2UgdW5kZXJzdGFuZCBmaXJzdC1oYW5kIGhvdyBuZXVyb2RpdmVyZ2VudCBjb25kaXRpb25zIGNhbiBtYWtlIHRob3NlIGNoYWxsZW5nZXMgZXZlbiBoYXJkZXIuIFNvLCB3ZSB0YWtlIGxlbmd0aHksIHRpbWUtYm91bmQgdGFza3Mgb2ZmIHlvdXIgcGxhdGUsIGZyZWVpbmcgeW91IHVwIHRvIGZvY3VzIG9uIHRoZSBjb3JlIG9mIHlvdXIgb3BlcmF0aW9uLCB3aXRob3V0IGJhcnJpZXJzIGdldHRpbmcgaW4geW91ciB3YXkuCiAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5zLWhvbWUtaGVyb19fYWN0aW9ucyI+CgogICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibnMtaG9tZS1oZXJvX19idXR0b24gbnMtaG9tZS1oZXJvX19idXR0b24tLXByaW1hcnkiCiAgICAgICAgICAgICAgICAgICAgaHJlZj0iL25ldXJvZGl2ZXJzaXR5LXdvcmtwbGFjZS10cmFpbmluZy8iCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+RXhwbG9yZSB3b3JrcGxhY2UgdHJhaW5pbmc8L3NwYW4+CgogICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01IDEyaDE0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMyA2bDYgNi02IDYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJucy1ob21lLWhlcm9fX2J1dHRvbiBucy1ob21lLWhlcm9fX2J1dHRvbi0tc2Vjb25kYXJ5IgogICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vdGlja2V0cy5uZXVyb3NwYXJrc29sdXRpb25zLmNvbS8iCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgVmlldyBsaXZlIHRyYWluaW5nCiAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSJucy1ob21lLWhlcm9fX3NlcnZpY2VzIgogICAgICAgICAgICAgICAgYXJpYS1sYWJlbD0iTmV1cm8tU3BhcmtzIHNlcnZpY2VzIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8c3Bhbj5Xb3JrcGxhY2UgdHJhaW5pbmc8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3Bhbj5BY2Nlc3MgdG8gV29yayBzdXBwb3J0PC9zcGFuPgogICAgICAgICAgICAgICAgPHNwYW4+QnVzaW5lc3MgY29hY2hpbmc8L3NwYW4+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0ibnMtaG9tZS1oZXJvX192aXN1YWwiPgoKICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9Im5zLWhvbWUtaGVyb19fdmlkZW8tZnJhbWUiCiAgICAgICAgICAgICAgICBkYXRhLWhlcm8tdmlkZW8tZnJhbWUKICAgICAgICAgICAgPgoKICAgICAgICAgICAgICAgIDxpZnJhbWUKICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibnMtaG9tZS1oZXJvX192aW1lbyIKICAgICAgICAgICAgICAgICAgICBzcmM9Imh0dHBzOi8vcGxheWVyLnZpbWVvLmNvbS92aWRlby8xMDc1NzUwNjUzP2F1dG9wbGF5PTEmbXV0ZWQ9MSZsb29wPTAmYXV0b3BhdXNlPTAmcGxheXNpbmxpbmU9MSZjb250cm9scz0wJnRpdGxlPTAmYnlsaW5lPTAmcG9ydHJhaXQ9MCZkbnQ9MSIKICAgICAgICAgICAgICAgICAgICB0aXRsZT0iV2VsY29tZSB0byBOZXVyby1TcGFya3MiCiAgICAgICAgICAgICAgICAgICAgYWxsb3c9ImF1dG9wbGF5OyBmdWxsc2NyZWVuOyBwaWN0dXJlLWluLXBpY3R1cmUiCiAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0iZWFnZXIiCiAgICAgICAgICAgICAgICAgICAgcmVmZXJyZXJwb2xpY3k9InN0cmljdC1vcmlnaW4td2hlbi1jcm9zcy1vcmlnaW4iCiAgICAgICAgICAgICAgICAgICAgYWxsb3dmdWxsc2NyZWVuCiAgICAgICAgICAgICAgICA+PC9pZnJhbWU+CgogICAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJucy1ob21lLWhlcm9fX3ZpZGVvLW92ZXJsYXkiCiAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49InRydWUiCiAgICAgICAgICAgICAgICA+PC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJucy1ob21lLWhlcm9fX3ZpZGVvLWJyYW5kIgogICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPSJ0cnVlIgogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJucy1ob21lLWhlcm9fX3ZpZGVvLWRvdCI+PC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+V2VsY29tZSB0bzwvc21hbGw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+TmV1cm8tU3BhcmtzPC9zdHJvbmc+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im5zLWhvbWUtaGVyb19fcGxheS1idXR0b24iCiAgICAgICAgICAgICAgICAgICAgdHlwZT0iYnV0dG9uIgogICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9IlBhdXNlIHZpZGVvIgogICAgICAgICAgICAgICAgICAgIGRhdGEtaGVyby1wbGF5CiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICA8c3ZnCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJucy1ob21lLWhlcm9fX3BsYXktaWNvbiBucy1ob21lLWhlcm9fX3BsYXktaWNvbi0tcGxheSIKICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD0iMCAwIDI0IDI0IgogICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj0idHJ1ZSIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik04IDVsMTEgNy0xMSA3eiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgoKICAgICAgICAgICAgICAgICAgICA8c3ZnCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJucy1ob21lLWhlcm9fX3BsYXktaWNvbiBucy1ob21lLWhlcm9fX3BsYXktaWNvbi0tcGF1c2UiCiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9IjAgMCAyNCAyNCIKICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49InRydWUiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNOCA1djE0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xNiA1djE0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KCiAgICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im5zLWhvbWUtaGVyb19fZnVsbHNjcmVlbi1idXR0b24iCiAgICAgICAgICAgICAgICAgICAgdHlwZT0iYnV0dG9uIgogICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9Ik9wZW4gdmlkZW8gZnVsbCBzY3JlZW4iCiAgICAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD0iZmFsc2UiCiAgICAgICAgICAgICAgICAgICAgZGF0YS1oZXJvLWZ1bGxzY3JlZW4KICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZAogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgIDxzdmcKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im5zLWhvbWUtaGVyb19fZnVsbHNjcmVlbi1pY29uIG5zLWhvbWUtaGVyb19fZnVsbHNjcmVlbi1pY29uLS1vcGVuIgogICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPSJ0cnVlIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTkgNEg0djUiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE1IDRoNXY1Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik05IDIwSDR2LTUiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE1IDIwaDV2LTUiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KCiAgICAgICAgICAgICAgICAgICAgPHN2ZwogICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibnMtaG9tZS1oZXJvX19mdWxsc2NyZWVuLWljb24gbnMtaG9tZS1oZXJvX19mdWxsc2NyZWVuLWljb24tLWNsb3NlIgogICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPSJ0cnVlIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQgOWg1VjQiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIwIDloLTVWNCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNCAxNWg1djUiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIwIDE1aC01djUiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgoKICAgICAgICAgICAgICAgIDxidXR0b24KICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibnMtaG9tZS1oZXJvX19zb3VuZC1idXR0b24iCiAgICAgICAgICAgICAgICAgICAgdHlwZT0iYnV0dG9uIgogICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9IlR1cm4gdmlkZW8gc291bmQgb24iCiAgICAgICAgICAgICAgICAgICAgYXJpYS1wcmVzc2VkPSJmYWxzZSIKICAgICAgICAgICAgICAgICAgICBkYXRhLWhlcm8tc291bmQKICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZAogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgIDxzdmcKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im5zLWhvbWUtaGVyb19fc291bmQtaWNvbiBucy1ob21lLWhlcm9fX3NvdW5kLWljb24tLW11dGVkIgogICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PSIwIDAgMjQgMjQiCiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPSJ0cnVlIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTUgOXY2aDRsNSA0VjVMOSA5SDV6Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xOCA5bDQgNCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMjIgOWwtNCA0Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CgogICAgICAgICAgICAgICAgICAgIDxzdmcKICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im5zLWhvbWUtaGVyb19fc291bmQtaWNvbiBucy1ob21lLWhlcm9fX3NvdW5kLWljb24tLXBsYXlpbmciCiAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9IjAgMCAyNCAyNCIKICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49InRydWUiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNSA5djZoNGw1IDRWNUw5IDlINXoiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE3IDlhNCA0IDAgMDEwIDYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE5IDZhOCA4IDAgMDEwIDEyIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPC9zdmc+CgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGRhdGEtaGVyby1zb3VuZC10ZXh0PgogICAgICAgICAgICAgICAgICAgICAgICBUdXJuIHNvdW5kIG9uCiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9idXR0b24+CgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSJucy1ob21lLWhlcm9fX3ZpZGVvLWFjY2VudCIKICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPSJ0cnVlIgogICAgICAgICAgICA+PC9kaXY+CgogICAgICAgIDwvZGl2PgoKICAgIDwvZGl2PgoKICAgIDxkaXYKICAgICAgICBjbGFzcz0ibnMtaG9tZS1oZXJvX19tb2RhbCIKICAgICAgICBkYXRhLWhlcm8tbW9kYWwKICAgICAgICByb2xlPSJkaWFsb2ciCiAgICAgICAgYXJpYS1tb2RhbD0idHJ1ZSIKICAgICAgICBhcmlhLWhpZGRlbj0idHJ1ZSIKICAgICAgICBhcmlhLWxhYmVsPSJOZXVyby1TcGFya3MgdmlkZW8iCiAgICA+CiAgICAgICAgPGRpdgogICAgICAgICAgICBjbGFzcz0ibnMtaG9tZS1oZXJvX19tb2RhbC1iYWNrZHJvcCIKICAgICAgICAgICAgZGF0YS1oZXJvLW1vZGFsLWNsb3NlCiAgICAgICAgPjwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJucy1ob21lLWhlcm9fX21vZGFsLXBhbmVsIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5zLWhvbWUtaGVyb19fbW9kYWwtaGVhZGVyIj4KCiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxzcGFuPk5ldXJvLVNwYXJrczwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPldlbGNvbWUgdG8gTmV1cm8tU3BhcmtzPC9zdHJvbmc+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8YnV0dG9uCiAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im5zLWhvbWUtaGVyb19fbW9kYWwtY2xvc2UiCiAgICAgICAgICAgICAgICAgICAgdHlwZT0iYnV0dG9uIgogICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9IkNsb3NlIGZ1bGwtc2NyZWVuIHZpZGVvIgogICAgICAgICAgICAgICAgICAgIGRhdGEtaGVyby1tb2RhbC1jbG9zZQogICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02IDZsMTIgMTIiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE4IDZMNiAxOCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgPC9idXR0b24+CgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYKICAgICAgICAgICAgICAgIGNsYXNzPSJucy1ob21lLWhlcm9fX21vZGFsLXZpZGVvIgogICAgICAgICAgICAgICAgZGF0YS1oZXJvLW1vZGFsLXZpZGVvCiAgICAgICAgICAgID48L2Rpdj4KCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9zZWN0aW9uPgoKPHN0eWxlPgogICAgLm5zLWhvbWUtaGVybywKICAgIC5ucy1ob21lLWhlcm8gKiB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvIHsKICAgICAgICAtLW5zLXB1cnBsZTogIzQyMzI2MTsKICAgICAgICAtLW5zLXB1cnBsZS1taWQ6ICMzNzI3NTA7CiAgICAgICAgLS1ucy1wdXJwbGUtZGFyazogIzJlMjE0NzsKICAgICAgICAtLW5zLXB1cnBsZS1kZWVwOiAjMWIxMjMyOwogICAgICAgIC0tbnMtbGlsYWM6ICNjYThmZWQ7CiAgICAgICAgLS1ucy1saWxhYy1saWdodDogI2VhZDBmOTsKICAgICAgICAtLW5zLWNyZWFtOiAjZjZlY2UwOwogICAgICAgIC0tbnMtd2hpdGU6ICNmZmZmZmY7CgogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBpc29sYXRpb246IGlzb2xhdGU7CgogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1pbi1oZWlnaHQ6IG1pbig4NTBweCwgOTB2aCk7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKCiAgICAgICAgcGFkZGluZzoKICAgICAgICAgICAgY2xhbXAoOTBweCwgOXZ3LCAxNDBweCkKICAgICAgICAgICAgMjRweAogICAgICAgICAgICBjbGFtcCg3OHB4LCA4dncsIDExNnB4KTsKCiAgICAgICAgYmFja2dyb3VuZDoKICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KAogICAgICAgICAgICAgICAgY2lyY2xlIGF0IDkyJSA4JSwKICAgICAgICAgICAgICAgIHJnYmEoMjAyLCAxNDMsIDIzNywgMC4yKSwKICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50IDI3JQogICAgICAgICAgICApLAogICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoCiAgICAgICAgICAgICAgICBjaXJjbGUgYXQgMyUgOTQlLAogICAgICAgICAgICAgICAgcmdiYSgyMDIsIDE0MywgMjM3LCAwLjA4KSwKICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50IDI5JQogICAgICAgICAgICApLAogICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoCiAgICAgICAgICAgICAgICAxMzVkZWcsCiAgICAgICAgICAgICAgICB2YXIoLS1ucy1wdXJwbGUtZGVlcCkgMCUsCiAgICAgICAgICAgICAgICB2YXIoLS1ucy1wdXJwbGUtZGFyaykgNTElLAogICAgICAgICAgICAgICAgdmFyKC0tbnMtcHVycGxlKSAxMDAlCiAgICAgICAgICAgICk7CgogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1jcmVhbSk7CiAgICAgICAgZm9udC1mYW1pbHk6ICJMYXRvIiwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgICB9CgogICAgLm5zLWhvbWUtaGVybzo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAiIjsKCiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHotaW5kZXg6IC0xOwoKICAgICAgICB0b3A6IC0zNjBweDsKICAgICAgICByaWdodDogLTI3MHB4OwoKICAgICAgICB3aWR0aDogNzIwcHg7CiAgICAgICAgaGVpZ2h0OiA3MjBweDsKCiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMDIsIDE0MywgMjM3LCAwLjEpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKCiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB9CgogICAgLm5zLWhvbWUtaGVybzo6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICIiOwoKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgei1pbmRleDogLTE7CgogICAgICAgIHRvcDogMDsKICAgICAgICBsZWZ0OiA4JTsKCiAgICAgICAgd2lkdGg6IDFweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CgogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjQ2LCAyMzYsIDIyNCwgMC4wNSk7CgogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgfQoKICAgIC5ucy1ob21lLWhlcm9fX2lubmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgei1pbmRleDogMjsKCiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6CiAgICAgICAgICAgIG1pbm1heCgwLCAwLjk1ZnIpCiAgICAgICAgICAgIG1pbm1heCg0MzBweCwgMS4wNWZyKTsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwoKICAgICAgICB3aWR0aDogbWluKDEzNjBweCwgMTAwJSk7CiAgICAgICAgbWFyZ2luOiAwIGF1dG87CgogICAgICAgIGdhcDogY2xhbXAoNTRweCwgN3Z3LCAxMDVweCk7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fY29udGVudCB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHotaW5kZXg6IDM7CgogICAgICAgIG1pbi13aWR0aDogMDsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX19leWVicm93IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CgogICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7CgogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1saWxhYyk7CgogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogODAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM1OwoKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xNWVtOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fZXllYnJvdzo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAiIjsKCiAgICAgICAgd2lkdGg6IDM0cHg7CiAgICAgICAgaGVpZ2h0OiAycHg7CgogICAgICAgIGZsZXg6IDAgMCAzNHB4OwoKICAgICAgICBtYXJnaW4tcmlnaHQ6IDEycHg7CgogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW5zLWxpbGFjKTsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX190aXRsZSB7CiAgICAgICAgbWF4LXdpZHRoOiA3MjBweDsKCiAgICAgICAgbWFyZ2luOiAwOwoKICAgICAgICBmb250LWZhbWlseTogIkFudG9uIiwgSW1wYWN0LCBzYW5zLXNlcmlmOwogICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoNjBweCwgN3Z3LCAxMDVweCk7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsaW5lLWhlaWdodDogMC45MjsKCiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX190aXRsZS1tYWluIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKCiAgICAgICAgY29sb3I6IHZhcigtLW5zLWNyZWFtKTsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX19wb3dlcmVkLWxpbmUgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwoKICAgICAgICBtYXJnaW4tdG9wOiAxMXB4OwogICAgfQoKICAgIC5ucy1ob21lLWhlcm9fX3Bvd2VyZWQtdGV4dCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CgogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1jcmVhbSk7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fbmV1cm8tdGV4dCB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CgogICAgICAgIG1hcmdpbi10b3A6IDVweDsKCiAgICAgICAgY29sb3I6IHZhcigtLW5zLWxpbGFjKTsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX19pbnRybyB7CiAgICAgICAgbWF4LXdpZHRoOiA2MTBweDsKCiAgICAgICAgbWFyZ2luOiAzMXB4IDAgMDsKCiAgICAgICAgY29sb3I6IHJnYmEoMjQ2LCAyMzYsIDIyNCwgMC43OSk7CgogICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMTZweCwgMS40NXZ3LCAxOXB4KTsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjc7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fYWN0aW9ucyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKCiAgICAgICAgbWFyZ2luLXRvcDogMzVweDsKCiAgICAgICAgZ2FwOiAxM3B4OwogICAgfQoKICAgIC5ucy1ob21lLWhlcm8gLm5zLWhvbWUtaGVyb19fYnV0dG9uIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwoKICAgICAgICBtaW4taGVpZ2h0OiA1NnB4OwoKICAgICAgICBwYWRkaW5nOiAxNnB4IDIzcHg7CgogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKCiAgICAgICAgZm9udC1mYW1pbHk6ICJBbnRvbiIsIEltcGFjdCwgc2Fucy1zZXJpZjsKICAgICAgICBmb250LXNpemU6IDE1cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsaW5lLWhlaWdodDogMTsKCiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDFlbTsKICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CgogICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CgogICAgICAgIGdhcDogMTRweDsKCiAgICAgICAgdHJhbnNpdGlvbjoKICAgICAgICAgICAgdHJhbnNmb3JtIDIyMG1zIGVhc2UsCiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgMjIwbXMgZWFzZSwKICAgICAgICAgICAgYm9yZGVyLWNvbG9yIDIyMG1zIGVhc2UsCiAgICAgICAgICAgIGNvbG9yIDIyMG1zIGVhc2UsCiAgICAgICAgICAgIGJveC1zaGFkb3cgMjIwbXMgZWFzZTsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX19idXR0b24tLXByaW1hcnkgewogICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tbnMtbGlsYWMpICFpbXBvcnRhbnQ7CgogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW5zLWxpbGFjKTsKCiAgICAgICAgY29sb3I6IHZhcigtLW5zLXB1cnBsZS1kYXJrKTsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX19idXR0b24tLXByaW1hcnk6aG92ZXIsCiAgICAubnMtaG9tZS1oZXJvX19idXR0b24tLXByaW1hcnk6Zm9jdXMtdmlzaWJsZSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpOwoKICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLW5zLWNyZWFtKSAhaW1wb3J0YW50OwoKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ucy1jcmVhbSk7CgogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1wdXJwbGUtZGFyayk7CgogICAgICAgIGJveC1zaGFkb3c6CiAgICAgICAgICAgIDAgMTZweCAzNHB4IHJnYmEoMCwgMCwgMCwgMC4yMik7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fYnV0dG9uLS1zZWNvbmRhcnkgewogICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgyNDYsIDIzNiwgMjI0LCAwLjMyKSAhaW1wb3J0YW50OwoKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDQ1KTsKCiAgICAgICAgY29sb3I6IHZhcigtLW5zLWNyZWFtKTsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX19idXR0b24tLXNlY29uZGFyeTpob3ZlciwKICAgIC5ucy1ob21lLWhlcm9fX2J1dHRvbi0tc2Vjb25kYXJ5OmZvY3VzLXZpc2libGUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTsKCiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ucy1jcmVhbSkgIWltcG9ydGFudDsKCiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNDYsIDIzNiwgMjI0LCAwLjEpOwoKICAgICAgICBjb2xvcjogdmFyKC0tbnMtd2hpdGUpOwogICAgfQoKICAgIC5ucy1ob21lLWhlcm9fX2J1dHRvbiBzdmcgewogICAgICAgIHdpZHRoOiAxOXB4OwogICAgICAgIGhlaWdodDogMTlweDsKCiAgICAgICAgZmxleDogMCAwIDE5cHg7CgogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiBjdXJyZW50Q29sb3I7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAxLjg7CgogICAgICAgIHN0cm9rZS1saW5lY2FwOiByb3VuZDsKICAgICAgICBzdHJva2UtbGluZWpvaW46IHJvdW5kOwoKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjIwbXMgZWFzZTsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX19idXR0b246aG92ZXIgc3ZnLAogICAgLm5zLWhvbWUtaGVyb19fYnV0dG9uOmZvY3VzLXZpc2libGUgc3ZnIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNHB4KTsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX19zZXJ2aWNlcyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGZsZXgtd3JhcDogd3JhcDsKCiAgICAgICAgbWFyZ2luLXRvcDogMzZweDsKCiAgICAgICAgY29sb3I6IHJnYmEoMjQ2LCAyMzYsIDIyNCwgMC41OCk7CgogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBmb250LXdlaWdodDogODAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7CgogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjExZW07CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKCiAgICAgICAgZ2FwOiAxMnB4IDA7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fc2VydmljZXMgc3BhbiB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX19zZXJ2aWNlcyBzcGFuOm5vdCg6bGFzdC1jaGlsZCk6OmFmdGVyIHsKICAgICAgICBjb250ZW50OiAiIjsKCiAgICAgICAgd2lkdGg6IDRweDsKICAgICAgICBoZWlnaHQ6IDRweDsKCiAgICAgICAgbWFyZ2luOiAwIDE0cHg7CgogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKCiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbnMtbGlsYWMpOwogICAgfQoKICAgIC5ucy1ob21lLWhlcm9fX3Zpc3VhbCB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwoKICAgICAgICBtaW4td2lkdGg6IDA7CgogICAgICAgIHBhZGRpbmc6CiAgICAgICAgICAgIGNsYW1wKDE4cHgsIDIuNHZ3LCAzMHB4KQogICAgICAgICAgICBjbGFtcCgxOHB4LCAyLjR2dywgMzBweCkKICAgICAgICAgICAgY2xhbXAoMThweCwgMi40dncsIDMwcHgpCiAgICAgICAgICAgIDA7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fdmlkZW8tZnJhbWUgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB6LWluZGV4OiAyOwoKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBhc3BlY3QtcmF0aW86IDE2IC8gMTA7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKCiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNDYsIDIzNiwgMjI0LCAwLjE5KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CgogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW5zLXB1cnBsZS1kZWVwKTsKCiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwoKICAgICAgICBib3gtc2hhZG93OgogICAgICAgICAgICAwIDQwcHggODJweCByZ2JhKDAsIDAsIDAsIDAuMjgpLAogICAgICAgICAgICAwIDlweCAyNnB4IHJnYmEoMCwgMCwgMCwgMC4xOCk7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fdmlkZW8tcGxhY2Vob2xkZXIgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGFzcGVjdC1yYXRpbzogMTYgLyAxMDsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX192aW1lbyB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwoKICAgICAgICB0b3A6IDUwJTsKICAgICAgICBsZWZ0OiA1MCU7CgogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIGhlaWdodDogMTAwJTsKCiAgICAgICAgYm9yZGVyOiAwOwoKICAgICAgICB0cmFuc2Zvcm06CiAgICAgICAgICAgIHRyYW5zbGF0ZSgtNTAlLCAtNTAlKQogICAgICAgICAgICBzY2FsZSgxLjAxNSk7CgogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgfQoKICAgIC5ucy1ob21lLWhlcm9fX3ZpZGVvLW92ZXJsYXkgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB6LWluZGV4OiAyOwoKICAgICAgICBpbnNldDogMDsKCiAgICAgICAgYmFja2dyb3VuZDoKICAgICAgICAgICAgbGluZWFyLWdyYWRpZW50KAogICAgICAgICAgICAgICAgMTgwZGVnLAogICAgICAgICAgICAgICAgcmdiYSgyNywgMTgsIDUwLCAwLjAxKSAzNSUsCiAgICAgICAgICAgICAgICByZ2JhKDI3LCAxOCwgNTAsIDAuNTMpIDEwMCUKICAgICAgICAgICAgKTsKCiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fdmlkZW8tYnJhbmQgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB6LWluZGV4OiA0OwoKICAgICAgICBib3R0b206IDIycHg7CiAgICAgICAgbGVmdDogMjRweDsKCiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwoKICAgICAgICBjb2xvcjogdmFyKC0tbnMtY3JlYW0pOwoKICAgICAgICBnYXA6IDEycHg7CgogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgfQoKICAgIC5ucy1ob21lLWhlcm9fX3ZpZGVvLWRvdCB7CiAgICAgICAgd2lkdGg6IDlweDsKICAgICAgICBoZWlnaHQ6IDlweDsKCiAgICAgICAgZmxleDogMCAwIDlweDsKCiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwoKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ucy1saWxhYyk7CgogICAgICAgIGJveC1zaGFkb3c6CiAgICAgICAgICAgIDAgMCAwIDZweCByZ2JhKDIwMiwgMTQzLCAyMzcsIDAuMTYpOwogICAgfQoKICAgIC5ucy1ob21lLWhlcm9fX3ZpZGVvLWJyYW5kIGRpdiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoKICAgICAgICBnYXA6IDNweDsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX192aWRlby1icmFuZCBzbWFsbCB7CiAgICAgICAgY29sb3I6IHJnYmEoMjQ2LCAyMzYsIDIyNCwgMC42OCk7CgogICAgICAgIGZvbnQtc2l6ZTogOXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CgogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjEzZW07CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX192aWRlby1icmFuZCBzdHJvbmcgewogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1jcmVhbSk7CgogICAgICAgIGZvbnQtZmFtaWx5OiAiQW50b24iLCBJbXBhY3QsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiAyMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CgogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fdmlkZW8tYWNjZW50IHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgei1pbmRleDogMTsKCiAgICAgICAgdG9wOiAwOwogICAgICAgIHJpZ2h0OiAwOwoKICAgICAgICB3aWR0aDogNjclOwogICAgICAgIGhlaWdodDogNjglOwoKICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7CgogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW5zLWxpbGFjKTsKCiAgICAgICAgb3BhY2l0eTogMC40MjsKCiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fcGxheS1idXR0b24gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDUwJTsKICAgICAgICBsZWZ0OiA1MCU7CiAgICAgICAgei1pbmRleDogNzsKCiAgICAgICAgZGlzcGxheTogZ3JpZDsKCiAgICAgICAgd2lkdGg6IDU4cHg7CiAgICAgICAgaGVpZ2h0OiA1OHB4OwoKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKCiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjsKCiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNDYsIDIzNiwgMjI0LCAwLjQyKTsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CgogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjcsIDE4LCA1MCwgMC43Mik7CgogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1jcmVhbSk7CgogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKCiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvOwoKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTsKCiAgICAgICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwogICAgICAgIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOwoKICAgICAgICB0cmFuc2l0aW9uOgogICAgICAgICAgICBvcGFjaXR5IDM1MG1zIGVhc2UsCiAgICAgICAgICAgIHZpc2liaWxpdHkgMzUwbXMgZWFzZSwKICAgICAgICAgICAgdHJhbnNmb3JtIDIwMG1zIGVhc2UsCiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgMjAwbXMgZWFzZSwKICAgICAgICAgICAgYm9yZGVyLWNvbG9yIDIwMG1zIGVhc2UsCiAgICAgICAgICAgIGNvbG9yIDIwMG1zIGVhc2U7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fdmlkZW8tZnJhbWUuaXMtcGxheWluZy5pcy1wbGF5LWNvbnRyb2wtaGlkZGVuCiAgICAubnMtaG9tZS1oZXJvX19wbGF5LWJ1dHRvbiB7CiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CgogICAgICAgIHRyYW5zZm9ybToKICAgICAgICAgICAgdHJhbnNsYXRlKC01MCUsIC01MCUpCiAgICAgICAgICAgIHNjYWxlKDAuOTQpOwogICAgfQoKICAgIC5ucy1ob21lLWhlcm9fX3BsYXktYnV0dG9uOmhvdmVyLAogICAgLm5zLWhvbWUtaGVyb19fcGxheS1idXR0b246Zm9jdXMtdmlzaWJsZSB7CiAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB2aXNpYmlsaXR5OiB2aXNpYmxlOwoKICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLW5zLWxpbGFjKTsKCiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbnMtcHVycGxlKTsKCiAgICAgICAgdHJhbnNmb3JtOgogICAgICAgICAgICB0cmFuc2xhdGUoLTUwJSwgLTUwJSkKICAgICAgICAgICAgc2NhbGUoMS4wNik7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fcGxheS1idXR0b246ZGlzYWJsZWQsCiAgICAubnMtaG9tZS1oZXJvX19mdWxsc2NyZWVuLWJ1dHRvbjpkaXNhYmxlZCwKICAgIC5ucy1ob21lLWhlcm9fX3NvdW5kLWJ1dHRvbjpkaXNhYmxlZCB7CiAgICAgICAgY3Vyc29yOiBkZWZhdWx0OwoKICAgICAgICBvcGFjaXR5OiAwLjU7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fcGxheS1pY29uIHsKICAgICAgICB3aWR0aDogMjRweDsKICAgICAgICBoZWlnaHQ6IDI0cHg7CgogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiBjdXJyZW50Q29sb3I7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAyLjI7CgogICAgICAgIHN0cm9rZS1saW5lY2FwOiByb3VuZDsKICAgICAgICBzdHJva2UtbGluZWpvaW46IHJvdW5kOwogICAgfQoKICAgIC5ucy1ob21lLWhlcm9fX3BsYXktaWNvbi0tcGxheSB7CiAgICAgICAgZmlsbDogY3VycmVudENvbG9yOwogICAgICAgIHN0cm9rZTogbm9uZTsKCiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDFweCk7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fcGxheS1pY29uLS1wYXVzZSB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX192aWRlby1mcmFtZS5pcy1wbGF5aW5nCiAgICAubnMtaG9tZS1oZXJvX19wbGF5LWljb24tLXBsYXkgewogICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fdmlkZW8tZnJhbWUuaXMtcGxheWluZwogICAgLm5zLWhvbWUtaGVyb19fcGxheS1pY29uLS1wYXVzZSB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fZnVsbHNjcmVlbi1idXR0b24gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB6LWluZGV4OiA2OwoKICAgICAgICB0b3A6IDE4cHg7CiAgICAgICAgcmlnaHQ6IDE4cHg7CgogICAgICAgIGRpc3BsYXk6IGdyaWQ7CgogICAgICAgIHdpZHRoOiA0NHB4OwogICAgICAgIGhlaWdodDogNDRweDsKCiAgICAgICAgbWFyZ2luOiAwOwogICAgICAgIHBhZGRpbmc6IDA7CgogICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7CgogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjQ2LCAyMzYsIDIyNCwgMC40Mik7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwoKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI3LCAxOCwgNTAsIDAuODgpOwoKICAgICAgICBjb2xvcjogdmFyKC0tbnMtY3JlYW0pOwoKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CgogICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgICAgICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKCiAgICAgICAgdHJhbnNpdGlvbjoKICAgICAgICAgICAgdHJhbnNmb3JtIDIwMG1zIGVhc2UsCiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgMjAwbXMgZWFzZSwKICAgICAgICAgICAgYm9yZGVyLWNvbG9yIDIwMG1zIGVhc2UsCiAgICAgICAgICAgIGNvbG9yIDIwMG1zIGVhc2U7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fZnVsbHNjcmVlbi1idXR0b246aG92ZXIsCiAgICAubnMtaG9tZS1oZXJvX19mdWxsc2NyZWVuLWJ1dHRvbjpmb2N1cy12aXNpYmxlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCk7CgogICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tbnMtbGlsYWMpOwoKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ucy1wdXJwbGUpOwogICAgfQoKICAgIC5ucy1ob21lLWhlcm9fX2Z1bGxzY3JlZW4taWNvbiB7CiAgICAgICAgd2lkdGg6IDIxcHg7CiAgICAgICAgaGVpZ2h0OiAyMXB4OwoKICAgICAgICBmaWxsOiBub25lOwogICAgICAgIHN0cm9rZTogY3VycmVudENvbG9yOwogICAgICAgIHN0cm9rZS13aWR0aDogMS44OwoKICAgICAgICBzdHJva2UtbGluZWNhcDogcm91bmQ7CiAgICAgICAgc3Ryb2tlLWxpbmVqb2luOiByb3VuZDsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX19mdWxsc2NyZWVuLWljb24tLWNsb3NlIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgfQoKICAgIC5ucy1ob21lLWhlcm9fX3ZpZGVvLWZyYW1lLmlzLWZ1bGxzY3JlZW4KICAgIC5ucy1ob21lLWhlcm9fX2Z1bGxzY3JlZW4taWNvbi0tb3BlbiB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX192aWRlby1mcmFtZS5pcy1mdWxsc2NyZWVuCiAgICAubnMtaG9tZS1oZXJvX19mdWxsc2NyZWVuLWljb24tLWNsb3NlIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX19zb3VuZC1idXR0b24gewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB6LWluZGV4OiA2OwoKICAgICAgICByaWdodDogMjBweDsKICAgICAgICBib3R0b206IDIwcHg7CgogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CgogICAgICAgIG1pbi1oZWlnaHQ6IDQ2cHg7CgogICAgICAgIHBhZGRpbmc6IDEycHggMTZweDsKCiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNDYsIDIzNiwgMjI0LCAwLjQyKTsKICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7CgogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjcsIDE4LCA1MCwgMC44OCk7CgogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1jcmVhbSk7CgogICAgICAgIGZvbnQtZmFtaWx5OiAiTGF0byIsIEFyaWFsLCBzYW5zLXNlcmlmOwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBmb250LXdlaWdodDogODAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwoKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CgogICAgICAgIGN1cnNvcjogcG9pbnRlcjsKCiAgICAgICAgZ2FwOiA5cHg7CgogICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKICAgICAgICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTsKCiAgICAgICAgdHJhbnNpdGlvbjoKICAgICAgICAgICAgdHJhbnNmb3JtIDIwMG1zIGVhc2UsCiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgMjAwbXMgZWFzZSwKICAgICAgICAgICAgYm9yZGVyLWNvbG9yIDIwMG1zIGVhc2UsCiAgICAgICAgICAgIGNvbG9yIDIwMG1zIGVhc2U7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fc291bmQtYnV0dG9uOmhvdmVyLAogICAgLm5zLWhvbWUtaGVyb19fc291bmQtYnV0dG9uOmZvY3VzLXZpc2libGUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTsKCiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ucy1saWxhYyk7CgogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW5zLXB1cnBsZSk7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fc291bmQtYnV0dG9uLmlzLXVubXV0ZWQgewogICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tbnMtbGlsYWMpOwoKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ucy1saWxhYyk7CgogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1wdXJwbGUtZGFyayk7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fc291bmQtaWNvbiB7CiAgICAgICAgd2lkdGg6IDIwcHg7CiAgICAgICAgaGVpZ2h0OiAyMHB4OwoKICAgICAgICBmbGV4OiAwIDAgMjBweDsKCiAgICAgICAgZmlsbDogY3VycmVudENvbG9yOwogICAgICAgIHN0cm9rZTogY3VycmVudENvbG9yOwogICAgICAgIHN0cm9rZS13aWR0aDogMS43OwoKICAgICAgICBzdHJva2UtbGluZWNhcDogcm91bmQ7CiAgICAgICAgc3Ryb2tlLWxpbmVqb2luOiByb3VuZDsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX19zb3VuZC1pY29uLS1wbGF5aW5nIHsKICAgICAgICBkaXNwbGF5OiBub25lOwogICAgfQoKICAgIC5ucy1ob21lLWhlcm9fX3NvdW5kLWJ1dHRvbi5pcy11bm11dGVkCiAgICAubnMtaG9tZS1oZXJvX19zb3VuZC1pY29uLS1tdXRlZCB7CiAgICAgICAgZGlzcGxheTogbm9uZTsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX19zb3VuZC1idXR0b24uaXMtdW5tdXRlZAogICAgLm5zLWhvbWUtaGVyb19fc291bmQtaWNvbi0tcGxheWluZyB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fbW9kYWwgewogICAgICAgIHBvc2l0aW9uOiBmaXhlZDsKICAgICAgICBpbnNldDogMDsKICAgICAgICB6LWluZGV4OiA5OTk5OTk7CgogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKCiAgICAgICAgcGFkZGluZzogMjRweDsKCiAgICAgICAgb3BhY2l0eTogMDsKICAgICAgICB2aXNpYmlsaXR5OiBoaWRkZW47CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CgogICAgICAgIHRyYW5zaXRpb246CiAgICAgICAgICAgIG9wYWNpdHkgMjIwbXMgZWFzZSwKICAgICAgICAgICAgdmlzaWJpbGl0eSAyMjBtcyBlYXNlOwogICAgfQoKICAgIC5ucy1ob21lLWhlcm9fX21vZGFsLmlzLW9wZW4gewogICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTsKICAgICAgICBwb2ludGVyLWV2ZW50czogYXV0bzsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX19tb2RhbC1iYWNrZHJvcCB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGluc2V0OiAwOwoKICAgICAgICBiYWNrZ3JvdW5kOgogICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoCiAgICAgICAgICAgICAgICBjaXJjbGUgYXQgODUlIDglLAogICAgICAgICAgICAgICAgcmdiYSgyMDIsIDE0MywgMjM3LCAwLjE2KSwKICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50IDMyJQogICAgICAgICAgICApLAogICAgICAgICAgICByZ2JhKDE1LCA5LCAyNywgMC45NCk7CgogICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxNHB4KTsKICAgICAgICAtd2Via2l0LWJhY2tkcm9wLWZpbHRlcjogYmx1cigxNHB4KTsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX19tb2RhbC1wYW5lbCB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHotaW5kZXg6IDI7CgogICAgICAgIHdpZHRoOiBtaW4oMTUwMHB4LCAxMDAlKTsKICAgICAgICBtYXgtaGVpZ2h0OiBjYWxjKDEwMHZoIC0gNDhweCk7CgogICAgICAgIHBhZGRpbmc6IGNsYW1wKDE1cHgsIDJ2dywgMjVweCk7CgogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjAyLCAxNDMsIDIzNywgMC4zOCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTRweDsKCiAgICAgICAgYmFja2dyb3VuZDoKICAgICAgICAgICAgbGluZWFyLWdyYWRpZW50KAogICAgICAgICAgICAgICAgMTM1ZGVnLAogICAgICAgICAgICAgICAgdmFyKC0tbnMtcHVycGxlLWRhcmspLAogICAgICAgICAgICAgICAgdmFyKC0tbnMtcHVycGxlLWRlZXApCiAgICAgICAgICAgICk7CgogICAgICAgIGJveC1zaGFkb3c6CiAgICAgICAgICAgIDAgMzJweCA5MHB4IHJnYmEoMCwgMCwgMCwgMC41NCk7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fbW9kYWwtaGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwoKICAgICAgICBtYXJnaW4tYm90dG9tOiAxNXB4OwoKICAgICAgICBnYXA6IDIwcHg7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fbW9kYWwtaGVhZGVyID4gZGl2IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CgogICAgICAgIGdhcDogNHB4OwogICAgfQoKICAgIC5ucy1ob21lLWhlcm9fX21vZGFsLWhlYWRlciBzcGFuIHsKICAgICAgICBjb2xvcjogdmFyKC0tbnMtbGlsYWMpOwoKICAgICAgICBmb250LXNpemU6IDlweDsKICAgICAgICBmb250LXdlaWdodDogODAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwoKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xNGVtOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICB9CgogICAgLm5zLWhvbWUtaGVyb19fbW9kYWwtaGVhZGVyIHN0cm9uZyB7CiAgICAgICAgY29sb3I6IHZhcigtLW5zLWNyZWFtKTsKCiAgICAgICAgZm9udC1mYW1pbHk6ICJBbnRvbiIsIEltcGFjdCwgc2Fucy1zZXJpZjsKICAgICAgICBmb250LXNpemU6IGNsYW1wKDIycHgsIDIuOHZ3LCAzNnB4KTsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwoKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgfQoKICAgIC5ucy1ob21lLWhlcm9fX21vZGFsLWNsb3NlIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwoKICAgICAgICB3aWR0aDogNDRweDsKICAgICAgICBoZWlnaHQ6IDQ0cHg7CgogICAgICAgIGZsZXg6IDAgMCA0NHB4OwogICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7CgogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBwYWRkaW5nOiAwOwoKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI0NiwgMjM2LCAyMjQsIDAuMzIpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKCiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKCiAgICAgICAgY29sb3I6IHZhcigtLW5zLWNyZWFtKTsKCiAgICAgICAgY3Vyc29yOiBwb2ludGVyOwoKICAgICAgICB0cmFuc2l0aW9uOgogICAgICAgICAgICB0cmFuc2Zvcm0gMjAwbXMgZWFzZSwKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciAyMDBtcyBlYXNlLAogICAgICAgICAgICBib3JkZXItY29sb3IgMjAwbXMgZWFzZSwKICAgICAgICAgICAgY29sb3IgMjAwbXMgZWFzZTsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX19tb2RhbC1jbG9zZTpob3ZlciwKICAgIC5ucy1ob21lLWhlcm9fX21vZGFsLWNsb3NlOmZvY3VzLXZpc2libGUgewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKDZkZWcpOwoKICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLW5zLWxpbGFjKTsKCiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbnMtbGlsYWMpOwoKICAgICAgICBjb2xvcjogdmFyKC0tbnMtcHVycGxlLWRhcmspOwogICAgfQoKICAgIC5ucy1ob21lLWhlcm9fX21vZGFsLWNsb3NlIHN2ZyB7CiAgICAgICAgd2lkdGg6IDE5cHg7CiAgICAgICAgaGVpZ2h0OiAxOXB4OwoKICAgICAgICBmaWxsOiBub25lOwogICAgICAgIHN0cm9rZTogY3VycmVudENvbG9yOwogICAgICAgIHN0cm9rZS13aWR0aDogMjsKCiAgICAgICAgc3Ryb2tlLWxpbmVjYXA6IHJvdW5kOwogICAgfQoKICAgIC5ucy1ob21lLWhlcm9fX21vZGFsLXZpZGVvIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgIH0KCiAgICAubnMtaG9tZS1oZXJvX19tb2RhbC12aWRlbwogICAgLm5zLWhvbWUtaGVyb19fdmlkZW8tZnJhbWUgewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG1heC1oZWlnaHQ6IGNhbGMoMTAwdmggLSAxNDVweCk7CiAgICAgICAgYXNwZWN0LXJhdGlvOiAxNiAvIDk7CgogICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgyMDIsIDE0MywgMjM3LCAwLjM4KTsKCiAgICAgICAgYm94LXNoYWRvdzoKICAgICAgICAgICAgMCAyOHB4IDcwcHggcmdiYSgwLCAwLCAwLCAwLjQ0KTsKICAgIH0KCiAgICBib2R5Lm5zLWhvbWUtdmlkZW8tb3BlbiB7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OwogICAgfQoKICAgIEBtZWRpYSAobWF4LXdpZHRoOiAxMDUwcHgpIHsKICAgICAgICAubnMtaG9tZS1oZXJvIHsKICAgICAgICAgICAgbWluLWhlaWdodDogYXV0bzsKICAgICAgICB9CgogICAgICAgIC5ucy1ob21lLWhlcm9fX2lubmVyIHsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CgogICAgICAgICAgICBnYXA6IDU4cHg7CiAgICAgICAgfQoKICAgICAgICAubnMtaG9tZS1oZXJvX19jb250ZW50LAogICAgICAgIC5ucy1ob21lLWhlcm9fX3RpdGxlIHsKICAgICAgICAgICAgbWF4LXdpZHRoOiA4NTBweDsKICAgICAgICB9CgogICAgICAgIC5ucy1ob21lLWhlcm9fX3Zpc3VhbCB7CiAgICAgICAgICAgIHdpZHRoOiBtaW4oODUwcHgsIDEwMCUpOwoKICAgICAgICAgICAgcGFkZGluZy1yaWdodDogMjRweDsKICAgICAgICB9CgogICAgICAgIC5ucy1ob21lLWhlcm9fX3ZpZGVvLWZyYW1lLAogICAgICAgIC5ucy1ob21lLWhlcm9fX3ZpZGVvLXBsYWNlaG9sZGVyIHsKICAgICAgICAgICAgYXNwZWN0LXJhdGlvOiAxNiAvIDk7CiAgICAgICAgfQogICAgfQoKICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2ODBweCkgewogICAgICAgIC5ucy1ob21lLWhlcm8gewogICAgICAgICAgICBwYWRkaW5nOgogICAgICAgICAgICAgICAgNzJweAogICAgICAgICAgICAgICAgMTZweAogICAgICAgICAgICAgICAgNjhweDsKICAgICAgICB9CgogICAgICAgIC5ucy1ob21lLWhlcm86OmFmdGVyIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICB9CgogICAgICAgIC5ucy1ob21lLWhlcm9fX2lubmVyIHsKICAgICAgICAgICAgZ2FwOiA0M3B4OwogICAgICAgIH0KCiAgICAgICAgLm5zLWhvbWUtaGVyb19fZXllYnJvdyB7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwoKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDsKCiAgICAgICAgICAgIGZvbnQtc2l6ZTogOXB4OwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS40NTsKCiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjEyZW07CiAgICAgICAgfQoKICAgICAgICAubnMtaG9tZS1oZXJvX19leWVicm93OjpiZWZvcmUgewogICAgICAgICAgICB3aWR0aDogMjRweDsKCiAgICAgICAgICAgIGZsZXgtYmFzaXM6IDI0cHg7CgogICAgICAgICAgICBtYXJnaW4tdG9wOiA2cHg7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogOXB4OwogICAgICAgIH0KCiAgICAgICAgLm5zLWhvbWUtaGVyb19fdGl0bGUgewogICAgICAgICAgICBmb250LXNpemU6IGNsYW1wKDQ4cHgsIDE0LjV2dywgNzBweCk7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAwLjk0OwogICAgICAgIH0KCiAgICAgICAgLm5zLWhvbWUtaGVyb19fcG93ZXJlZC1saW5lIHsKICAgICAgICAgICAgbWFyZ2luLXRvcDogOHB4OwogICAgICAgIH0KCiAgICAgICAgLm5zLWhvbWUtaGVyb19fbmV1cm8tdGV4dCB7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDRweDsKICAgICAgICB9CgogICAgICAgIC5ucy1ob21lLWhlcm9fX2ludHJvIHsKICAgICAgICAgICAgbWFyZ2luLXRvcDogMjRweDsKCiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjU7CiAgICAgICAgfQoKICAgICAgICAubnMtaG9tZS1oZXJvX19hY3Rpb25zIHsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IHN0cmV0Y2g7CiAgICAgICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CgogICAgICAgICAgICBtYXJnaW4tdG9wOiAyOXB4OwogICAgICAgIH0KCiAgICAgICAgLm5zLWhvbWUtaGVybyAubnMtaG9tZS1oZXJvX19idXR0b24gewogICAgICAgICAgICB3aWR0aDogMTAwJTsKCiAgICAgICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7CiAgICAgICAgfQoKICAgICAgICAubnMtaG9tZS1oZXJvX19zZXJ2aWNlcyB7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoKICAgICAgICAgICAgbWFyZ2luLXRvcDogMjlweDsKCiAgICAgICAgICAgIGdhcDogOXB4OwogICAgICAgIH0KCiAgICAgICAgLm5zLWhvbWUtaGVyb19fc2VydmljZXMgc3Bhbjpub3QoOmxhc3QtY2hpbGQpOjphZnRlciB7CiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAubnMtaG9tZS1oZXJvX19zZXJ2aWNlcyBzcGFuOjpiZWZvcmUgewogICAgICAgICAgICBjb250ZW50OiAiIjsKCiAgICAgICAgICAgIHdpZHRoOiA1cHg7CiAgICAgICAgICAgIGhlaWdodDogNXB4OwoKICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiA5cHg7CgogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CgogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ucy1saWxhYyk7CiAgICAgICAgfQoKICAgICAgICAubnMtaG9tZS1oZXJvX192aXN1YWwgewogICAgICAgICAgICBwYWRkaW5nOgogICAgICAgICAgICAgICAgMTJweAogICAgICAgICAgICAgICAgMTJweAogICAgICAgICAgICAgICAgMAogICAgICAgICAgICAgICAgMDsKICAgICAgICB9CgogICAgICAgIC5ucy1ob21lLWhlcm9fX3ZpZGVvLWZyYW1lLAogICAgICAgIC5ucy1ob21lLWhlcm9fX3ZpZGVvLXBsYWNlaG9sZGVyIHsKICAgICAgICAgICAgYXNwZWN0LXJhdGlvOiA0IC8gMzsKCiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICB9CgogICAgICAgIC5ucy1ob21lLWhlcm9fX3ZpZGVvLWZyYW1lIHsKICAgICAgICAgICAgYm94LXNoYWRvdzoKICAgICAgICAgICAgICAgIDAgMjVweCA1MHB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7CiAgICAgICAgfQoKICAgICAgICAubnMtaG9tZS1oZXJvX192aW1lbyB7CiAgICAgICAgICAgIHdpZHRoOiAxMzQlOwogICAgICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgfQoKICAgICAgICAubnMtaG9tZS1oZXJvX192aWRlby1hY2NlbnQgewogICAgICAgICAgICB3aWR0aDogNzIlOwogICAgICAgICAgICBoZWlnaHQ6IDY1JTsKCiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKICAgICAgICB9CgogICAgICAgIC5ucy1ob21lLWhlcm9fX3ZpZGVvLWJyYW5kIHsKICAgICAgICAgICAgdG9wOiAxNnB4OwogICAgICAgICAgICBib3R0b206IGF1dG87CiAgICAgICAgICAgIGxlZnQ6IDE3cHg7CiAgICAgICAgfQoKICAgICAgICAubnMtaG9tZS1oZXJvX192aWRlby1icmFuZCBzdHJvbmcgewogICAgICAgICAgICBmb250LXNpemU6IDE3cHg7CiAgICAgICAgfQoKICAgICAgICAubnMtaG9tZS1oZXJvX19zb3VuZC1idXR0b24gewogICAgICAgICAgICByaWdodDogMTJweDsKICAgICAgICAgICAgYm90dG9tOiAxMnB4OwoKICAgICAgICAgICAgbWluLWhlaWdodDogNDJweDsKCiAgICAgICAgICAgIHBhZGRpbmc6IDEwcHggMTNweDsKCiAgICAgICAgICAgIGZvbnQtc2l6ZTogOXB4OwogICAgICAgIH0KCiAgICAgICAgLm5zLWhvbWUtaGVyb19fcGxheS1idXR0b24gewogICAgICAgICAgICB3aWR0aDogNTJweDsKICAgICAgICAgICAgaGVpZ2h0OiA1MnB4OwogICAgICAgIH0KCiAgICAgICAgLm5zLWhvbWUtaGVyb19fZnVsbHNjcmVlbi1idXR0b24gewogICAgICAgICAgICB0b3A6IDEycHg7CiAgICAgICAgICAgIHJpZ2h0OiAxMnB4OwoKICAgICAgICAgICAgd2lkdGg6IDQycHg7CiAgICAgICAgICAgIGhlaWdodDogNDJweDsKICAgICAgICB9CgogICAgICAgIC5ucy1ob21lLWhlcm9fX21vZGFsIHsKICAgICAgICAgICAgcGFkZGluZzogMTBweDsKICAgICAgICB9CgogICAgICAgIC5ucy1ob21lLWhlcm9fX21vZGFsLXBhbmVsIHsKICAgICAgICAgICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDIwcHgpOwoKICAgICAgICAgICAgcGFkZGluZzogMTJweDsKCiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICAgICAgfQoKICAgICAgICAubnMtaG9tZS1oZXJvX19tb2RhbC1oZWFkZXIgewogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgICAgIH0KCiAgICAgICAgLm5zLWhvbWUtaGVyb19fbW9kYWwtaGVhZGVyIHNwYW4gewogICAgICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgIH0KCiAgICAgICAgLm5zLWhvbWUtaGVyb19fbW9kYWwtaGVhZGVyIHN0cm9uZyB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMjFweDsKICAgICAgICB9CgogICAgICAgIC5ucy1ob21lLWhlcm9fX21vZGFsLWNsb3NlIHsKICAgICAgICAgICAgd2lkdGg6IDQwcHg7CiAgICAgICAgICAgIGhlaWdodDogNDBweDsKCiAgICAgICAgICAgIGZsZXgtYmFzaXM6IDQwcHg7CiAgICAgICAgfQoKICAgICAgICAubnMtaG9tZS1oZXJvX19tb2RhbC12aWRlbwogICAgICAgIC5ucy1ob21lLWhlcm9fX3ZpZGVvLWZyYW1lIHsKICAgICAgICAgICAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDkwcHgpOwogICAgICAgICAgICBhc3BlY3QtcmF0aW86IDE2IC8gOTsKICAgICAgICB9CgogICAgICAgIC5ucy1ob21lLWhlcm9fX21vZGFsLXZpZGVvCiAgICAgICAgLm5zLWhvbWUtaGVyb19fdmltZW8gewogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICB9CiAgICB9CgogICAgQG1lZGlhIChtYXgtd2lkdGg6IDQyMHB4KSB7CiAgICAgICAgLm5zLWhvbWUtaGVyb19fc291bmQtYnV0dG9uIHNwYW4gewogICAgICAgICAgICBtYXgtd2lkdGg6IDc4cHg7CgogICAgICAgICAgICBsaW5lLWhlaWdodDogMS4yOwogICAgICAgIH0KICAgIH0KCiAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogICAgICAgIC5ucy1ob21lLWhlcm9fX2J1dHRvbiwKICAgICAgICAubnMtaG9tZS1oZXJvX19idXR0b24gc3ZnLAogICAgICAgIC5ucy1ob21lLWhlcm9fX3NvdW5kLWJ1dHRvbiwKICAgICAgICAubnMtaG9tZS1oZXJvX19wbGF5LWJ1dHRvbiwKICAgICAgICAubnMtaG9tZS1oZXJvX19mdWxsc2NyZWVuLWJ1dHRvbiwKICAgICAgICAubnMtaG9tZS1oZXJvX19tb2RhbCwKICAgICAgICAubnMtaG9tZS1oZXJvX19tb2RhbC1jbG9zZSB7CiAgICAgICAgICAgIHRyYW5zaXRpb246IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAubnMtaG9tZS1oZXJvX19idXR0b246aG92ZXIsCiAgICAgICAgLm5zLWhvbWUtaGVyb19fYnV0dG9uOmZvY3VzLXZpc2libGUsCiAgICAgICAgLm5zLWhvbWUtaGVyb19fc291bmQtYnV0dG9uOmhvdmVyLAogICAgICAgIC5ucy1ob21lLWhlcm9fX3NvdW5kLWJ1dHRvbjpmb2N1cy12aXNpYmxlLAogICAgICAgIC5ucy1ob21lLWhlcm9fX2Z1bGxzY3JlZW4tYnV0dG9uOmhvdmVyLAogICAgICAgIC5ucy1ob21lLWhlcm9fX2Z1bGxzY3JlZW4tYnV0dG9uOmZvY3VzLXZpc2libGUgewogICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAubnMtaG9tZS1oZXJvX19wbGF5LWJ1dHRvbjpob3ZlciwKICAgICAgICAubnMtaG9tZS1oZXJvX19wbGF5LWJ1dHRvbjpmb2N1cy12aXNpYmxlIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7CiAgICAgICAgfQogICAgfQo8L3N0eWxlPgoKPHNjcmlwdD4KKGZ1bmN0aW9uICgpIHsKICAgIGZ1bmN0aW9uIGxvYWRWaW1lb1BsYXllckFwaShjYWxsYmFjaykgewogICAgICAgIGlmICgKICAgICAgICAgICAgd2luZG93LlZpbWVvICYmCiAgICAgICAgICAgIHR5cGVvZiB3aW5kb3cuVmltZW8uUGxheWVyID09PSAiZnVuY3Rpb24iCiAgICAgICAgKSB7CiAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGNvbnN0IGV4aXN0aW5nU2NyaXB0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigKICAgICAgICAgICAgJ3NjcmlwdFtzcmM9Imh0dHBzOi8vcGxheWVyLnZpbWVvLmNvbS9hcGkvcGxheWVyLmpzIl0nCiAgICAgICAgKTsKCiAgICAgICAgaWYgKGV4aXN0aW5nU2NyaXB0KSB7CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgIHdpbmRvdy5WaW1lbyAmJgogICAgICAgICAgICAgICAgdHlwZW9mIHdpbmRvdy5WaW1lby5QbGF5ZXIgPT09ICJmdW5jdGlvbiIKICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICBjYWxsYmFjaygpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZXhpc3RpbmdTY3JpcHQuYWRkRXZlbnRMaXN0ZW5lcigKICAgICAgICAgICAgICAgICAgICAibG9hZCIsCiAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgeyBvbmNlOiB0cnVlIH0KICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGNvbnN0IHNjcmlwdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpOwoKICAgICAgICBzY3JpcHQuc3JjID0KICAgICAgICAgICAgImh0dHBzOi8vcGxheWVyLnZpbWVvLmNvbS9hcGkvcGxheWVyLmpzIjsKCiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGNhbGxiYWNrOwoKICAgICAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7CiAgICB9CgogICAgZnVuY3Rpb24gaW5pdGlhbGlzZU5ldXJvU3BhcmtzSGVybyhzY29wZSkgewogICAgICAgIGNvbnN0IHJvb3QgPSBzY29wZSB8fCBkb2N1bWVudDsKCiAgICAgICAgcm9vdAogICAgICAgICAgICAucXVlcnlTZWxlY3RvckFsbCgiLm5zLWhvbWUtaGVybyIpCiAgICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChoZXJvKSB7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgaGVyby5kYXRhc2V0LnZpZGVvQ29udHJvbHNJbml0aWFsaXNlZCA9PT0KICAgICAgICAgICAgICAgICAgICAieWVzIgogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGNvbnN0IGlmcmFtZSA9IGhlcm8ucXVlcnlTZWxlY3RvcigKICAgICAgICAgICAgICAgICAgICAiLm5zLWhvbWUtaGVyb19fdmltZW8iCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGNvbnN0IGZyYW1lID0gaGVyby5xdWVyeVNlbGVjdG9yKAogICAgICAgICAgICAgICAgICAgICJbZGF0YS1oZXJvLXZpZGVvLWZyYW1lXSIKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgY29uc3QgcGxheUJ1dHRvbiA9IGhlcm8ucXVlcnlTZWxlY3RvcigKICAgICAgICAgICAgICAgICAgICAiW2RhdGEtaGVyby1wbGF5XSIKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgY29uc3Qgc291bmRCdXR0b24gPSBoZXJvLnF1ZXJ5U2VsZWN0b3IoCiAgICAgICAgICAgICAgICAgICAgIltkYXRhLWhlcm8tc291bmRdIgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBjb25zdCBzb3VuZFRleHQgPSBoZXJvLnF1ZXJ5U2VsZWN0b3IoCiAgICAgICAgICAgICAgICAgICAgIltkYXRhLWhlcm8tc291bmQtdGV4dF0iCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGNvbnN0IGZ1bGxzY3JlZW5CdXR0b24gPSBoZXJvLnF1ZXJ5U2VsZWN0b3IoCiAgICAgICAgICAgICAgICAgICAgIltkYXRhLWhlcm8tZnVsbHNjcmVlbl0iCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGNvbnN0IG1vZGFsID0gaGVyby5xdWVyeVNlbGVjdG9yKAogICAgICAgICAgICAgICAgICAgICJbZGF0YS1oZXJvLW1vZGFsXSIKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgY29uc3QgbW9kYWxWaWRlbyA9IGhlcm8ucXVlcnlTZWxlY3RvcigKICAgICAgICAgICAgICAgICAgICAiW2RhdGEtaGVyby1tb2RhbC12aWRlb10iCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGNvbnN0IG1vZGFsQ2xvc2VCdXR0b25zID0KICAgICAgICAgICAgICAgICAgICBoZXJvLnF1ZXJ5U2VsZWN0b3JBbGwoCiAgICAgICAgICAgICAgICAgICAgICAgICJbZGF0YS1oZXJvLW1vZGFsLWNsb3NlXSIKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAhaWZyYW1lIHx8CiAgICAgICAgICAgICAgICAgICAgIWZyYW1lIHx8CiAgICAgICAgICAgICAgICAgICAgIXBsYXlCdXR0b24gfHwKICAgICAgICAgICAgICAgICAgICAhc291bmRCdXR0b24gfHwKICAgICAgICAgICAgICAgICAgICAhZnVsbHNjcmVlbkJ1dHRvbiB8fAogICAgICAgICAgICAgICAgICAgICFtb2RhbCB8fAogICAgICAgICAgICAgICAgICAgICFtb2RhbFZpZGVvIHx8CiAgICAgICAgICAgICAgICAgICAgIXdpbmRvdy5WaW1lbwogICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGhlcm8uZGF0YXNldC52aWRlb0NvbnRyb2xzSW5pdGlhbGlzZWQgPQogICAgICAgICAgICAgICAgICAgICJ5ZXMiOwoKICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobW9kYWwpOwoKICAgICAgICAgICAgICAgIGNvbnN0IHBsYXllciA9IG5ldyB3aW5kb3cuVmltZW8uUGxheWVyKAogICAgICAgICAgICAgICAgICAgIGlmcmFtZQogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBsZXQgc291bmRFbmFibGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICBsZXQgaGFzRW5kZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGxldCBtb2RhbE9wZW4gPSBmYWxzZTsKICAgICAgICAgICAgICAgIGxldCBwbGFjZWhvbGRlciA9IG51bGw7CiAgICAgICAgICAgICAgICBsZXQgcHJldmlvdXNGb2N1cyA9IG51bGw7CiAgICAgICAgICAgICAgICBsZXQgcGxheUNvbnRyb2xUaW1lciA9IG51bGw7CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gY2xlYXJQbGF5Q29udHJvbFRpbWVyKCkgewogICAgICAgICAgICAgICAgICAgIGlmIChwbGF5Q29udHJvbFRpbWVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF5Q29udHJvbFRpbWVyCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICBwbGF5Q29udHJvbFRpbWVyID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gc2hvd1BsYXlDb250cm9sVGVtcG9yYXJpbHkoKSB7CiAgICAgICAgICAgICAgICAgICAgY2xlYXJQbGF5Q29udHJvbFRpbWVyKCk7CgogICAgICAgICAgICAgICAgICAgIGZyYW1lLmNsYXNzTGlzdC5yZW1vdmUoCiAgICAgICAgICAgICAgICAgICAgICAgICJpcy1wbGF5LWNvbnRyb2wtaGlkZGVuIgogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgIWZyYW1lLmNsYXNzTGlzdC5jb250YWlucygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpcy1wbGF5aW5nIgogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHBsYXlDb250cm9sVGltZXIgPQogICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuc2V0VGltZW91dCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLmNsYXNzTGlzdC5jb250YWlucygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpcy1wbGF5aW5nIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLmNsYXNzTGlzdC5hZGQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXMtcGxheS1jb250cm9sLWhpZGRlbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUwMAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVBsYXlpbmdTdGF0ZShpc1BsYXlpbmcpIHsKICAgICAgICAgICAgICAgICAgICBmcmFtZS5jbGFzc0xpc3QudG9nZ2xlKAogICAgICAgICAgICAgICAgICAgICAgICAiaXMtcGxheWluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzUGxheWluZwogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIHBsYXlCdXR0b24uc2V0QXR0cmlidXRlKAogICAgICAgICAgICAgICAgICAgICAgICAiYXJpYS1sYWJlbCIsCiAgICAgICAgICAgICAgICAgICAgICAgIGlzUGxheWluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAiUGF1c2UgdmlkZW8iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJQbGF5IHZpZGVvIgogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmIChpc1BsYXlpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1BsYXlDb250cm9sVGVtcG9yYXJpbHkoKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBjbGVhclBsYXlDb250cm9sVGltZXIoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lLmNsYXNzTGlzdC5yZW1vdmUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXMtcGxheS1jb250cm9sLWhpZGRlbiIKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gdXBkYXRlU291bmRTdGF0ZShpc0VuYWJsZWQpIHsKICAgICAgICAgICAgICAgICAgICBzb3VuZEVuYWJsZWQgPSBpc0VuYWJsZWQ7CgogICAgICAgICAgICAgICAgICAgIHNvdW5kQnV0dG9uLmNsYXNzTGlzdC50b2dnbGUoCiAgICAgICAgICAgICAgICAgICAgICAgICJpcy11bm11dGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgaXNFbmFibGVkCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgc291bmRCdXR0b24uc2V0QXR0cmlidXRlKAogICAgICAgICAgICAgICAgICAgICAgICAiYXJpYS1wcmVzc2VkIiwKICAgICAgICAgICAgICAgICAgICAgICAgaXNFbmFibGVkID8gInRydWUiIDogImZhbHNlIgogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIHNvdW5kQnV0dG9uLnNldEF0dHJpYnV0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgImFyaWEtbGFiZWwiLAogICAgICAgICAgICAgICAgICAgICAgICBpc0VuYWJsZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gIlR1cm4gdmlkZW8gc291bmQgb2ZmIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiVHVybiB2aWRlbyBzb3VuZCBvbiIKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoc291bmRUZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNvdW5kVGV4dC50ZXh0Q29udGVudCA9IGlzRW5hYmxlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAiVHVybiBzb3VuZCBvZmYiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICJUdXJuIHNvdW5kIG9uIjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gb3BlblZpZGVvTW9kYWwoKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGFsT3BlbikgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBtb2RhbE9wZW4gPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIHByZXZpb3VzRm9jdXMgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50OwoKICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlciA9CiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwoKICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlci5jbGFzc05hbWUgPQogICAgICAgICAgICAgICAgICAgICAgICAibnMtaG9tZS1oZXJvX192aWRlby1wbGFjZWhvbGRlciI7CgogICAgICAgICAgICAgICAgICAgIGZyYW1lLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKAogICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlciwKICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBtb2RhbFZpZGVvLmFwcGVuZENoaWxkKGZyYW1lKTsKCiAgICAgICAgICAgICAgICAgICAgZnJhbWUuY2xhc3NMaXN0LmFkZCgiaXMtZnVsbHNjcmVlbiIpOwogICAgICAgICAgICAgICAgICAgIG1vZGFsLmNsYXNzTGlzdC5hZGQoImlzLW9wZW4iKTsKCiAgICAgICAgICAgICAgICAgICAgbW9kYWwuc2V0QXR0cmlidXRlKAogICAgICAgICAgICAgICAgICAgICAgICAiYXJpYS1oaWRkZW4iLAogICAgICAgICAgICAgICAgICAgICAgICAiZmFsc2UiCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgZnVsbHNjcmVlbkJ1dHRvbi5zZXRBdHRyaWJ1dGUoCiAgICAgICAgICAgICAgICAgICAgICAgICJhcmlhLWV4cGFuZGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgInRydWUiCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgZnVsbHNjcmVlbkJ1dHRvbi5zZXRBdHRyaWJ1dGUoCiAgICAgICAgICAgICAgICAgICAgICAgICJhcmlhLWxhYmVsIiwKICAgICAgICAgICAgICAgICAgICAgICAgIkNsb3NlIGZ1bGwtc2NyZWVuIHZpZGVvIgogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgIm5zLWhvbWUtdmlkZW8tb3BlbiIKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBzaG93UGxheUNvbnRyb2xUZW1wb3JhcmlseSgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGNsb3NlVmlkZW9Nb2RhbCgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIW1vZGFsT3BlbikgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBtb2RhbE9wZW4gPSBmYWxzZTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHBsYWNlaG9sZGVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcgogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXIgPSBudWxsOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgZnJhbWUuY2xhc3NMaXN0LnJlbW92ZSgiaXMtZnVsbHNjcmVlbiIpOwogICAgICAgICAgICAgICAgICAgIG1vZGFsLmNsYXNzTGlzdC5yZW1vdmUoImlzLW9wZW4iKTsKCiAgICAgICAgICAgICAgICAgICAgbW9kYWwuc2V0QXR0cmlidXRlKAogICAgICAgICAgICAgICAgICAgICAgICAiYXJpYS1oaWRkZW4iLAogICAgICAgICAgICAgICAgICAgICAgICAidHJ1ZSIKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBmdWxsc2NyZWVuQnV0dG9uLnNldEF0dHJpYnV0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgImFyaWEtZXhwYW5kZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAiZmFsc2UiCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgZnVsbHNjcmVlbkJ1dHRvbi5zZXRBdHRyaWJ1dGUoCiAgICAgICAgICAgICAgICAgICAgICAgICJhcmlhLWxhYmVsIiwKICAgICAgICAgICAgICAgICAgICAgICAgIk9wZW4gdmlkZW8gZnVsbCBzY3JlZW4iCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKAogICAgICAgICAgICAgICAgICAgICAgICAibnMtaG9tZS12aWRlby1vcGVuIgogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNGb2N1cyAmJgogICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcHJldmlvdXNGb2N1cy5mb2N1cyA9PT0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmdW5jdGlvbiIKICAgICAgICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNGb2N1cy5mb2N1cygpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwbGF5ZXIucmVhZHkoKQogICAgICAgICAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBsYXllci5zZXRMb29wKGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7fSkKICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwbGF5ZXIuc2V0TXV0ZWQodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkge30pCiAgICAgICAgICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGxheWVyLnNldFZvbHVtZSgwKTsKICAgICAgICAgICAgICAgICAgICB9KQogICAgICAgICAgICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoKSB7fSkKICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwbGF5ZXIuZ2V0UGF1c2VkKCk7CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAudGhlbihmdW5jdGlvbiAoaXNQYXVzZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlUGxheWluZ1N0YXRlKCFpc1BhdXNlZCk7CiAgICAgICAgICAgICAgICAgICAgfSkKICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVQbGF5aW5nU3RhdGUoZmFsc2UpOwogICAgICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgICAgLmZpbmFsbHkoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICAgICBwbGF5QnV0dG9uLmRpc2FibGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIHNvdW5kQnV0dG9uLmRpc2FibGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxzY3JlZW5CdXR0b24uZGlzYWJsZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBwbGF5ZXIub24oInBsYXkiLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgaGFzRW5kZWQgPSBmYWxzZTsKCiAgICAgICAgICAgICAgICAgICAgdXBkYXRlUGxheWluZ1N0YXRlKHRydWUpOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgcGxheWVyLm9uKCJwYXVzZSIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICB1cGRhdGVQbGF5aW5nU3RhdGUoZmFsc2UpOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgcGxheWVyLm9uKCJlbmRlZCIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICBoYXNFbmRlZCA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgIHVwZGF0ZVBsYXlpbmdTdGF0ZShmYWxzZSk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICBwbGF5ZXIub24oCiAgICAgICAgICAgICAgICAgICAgInZvbHVtZWNoYW5nZSIsCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTXV0ZWQgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZW9mIGV2ZW50Lm11dGVkID09PSAiYm9vbGVhbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGV2ZW50Lm11dGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBldmVudC52b2x1bWUgPT09IDA7CgogICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVTb3VuZFN0YXRlKCFpc011dGVkKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHBsYXlCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigKICAgICAgICAgICAgICAgICAgICAiY2xpY2siLAogICAgICAgICAgICAgICAgICAgIGFzeW5jIGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpc1BhdXNlZCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgcGxheWVyLmdldFBhdXNlZCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1BhdXNlZCB8fCBoYXNFbmRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNFbmRlZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBwbGF5ZXIuc2V0Q3VycmVudFRpbWUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNFbmRlZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgcGxheWVyLnBsYXkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgcGxheWVyLnBhdXNlKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBWaW1lbyBwbGF5YmFjayBjb3VsZCBub3QgYmUgY2hhbmdlZC4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBmcmFtZS5hZGRFdmVudExpc3RlbmVyKAogICAgICAgICAgICAgICAgICAgICJjbGljayIsCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnRhcmdldC5jbG9zZXN0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJidXR0b24sIGEiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZS5jbGFzc0xpc3QuY29udGFpbnMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImlzLXBsYXlpbmciCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1BsYXlDb250cm9sVGVtcG9yYXJpbHkoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgc291bmRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigKICAgICAgICAgICAgICAgICAgICAiY2xpY2siLAogICAgICAgICAgICAgICAgICAgIGFzeW5jIGZ1bmN0aW9uIChldmVudCkgewogICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc291bmRFbmFibGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgcGxheWVyLnNldE11dGVkKHRydWUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHBsYXllci5zZXRWb2x1bWUoMCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVNvdW5kU3RhdGUoZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBwbGF5ZXIuc2V0TXV0ZWQoZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHBsYXllci5zZXRWb2x1bWUoMSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVNvdW5kU3RhdGUodHJ1ZSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzUGF1c2VkID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgcGxheWVyLmdldFBhdXNlZCgpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNQYXVzZWQgJiYgIWhhc0VuZGVkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IHBsYXllci5wbGF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgVmltZW8gc291bmQgY291bGQgbm90IGJlIGNoYW5nZWQuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgZnVsbHNjcmVlbkJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKAogICAgICAgICAgICAgICAgICAgICJjbGljayIsCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGFsT3BlbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VWaWRlb01vZGFsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuVmlkZW9Nb2RhbCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBtb2RhbENsb3NlQnV0dG9ucy5mb3JFYWNoKAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChidXR0b24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2xpY2siLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VWaWRlb01vZGFsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKAogICAgICAgICAgICAgICAgICAgICJrZXlkb3duIiwKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoZXZlbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQua2V5ID09PSAiRXNjYXBlIiAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kYWxPcGVuCiAgICAgICAgICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VWaWRlb01vZGFsKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9KTsKICAgIH0KCiAgICBmdW5jdGlvbiBzdGFydE5ldXJvU3BhcmtzSGVybyhzY29wZSkgewogICAgICAgIGxvYWRWaW1lb1BsYXllckFwaShmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGluaXRpYWxpc2VOZXVyb1NwYXJrc0hlcm8oCiAgICAgICAgICAgICAgICBzY29wZSB8fCBkb2N1bWVudAogICAgICAgICAgICApOwogICAgICAgIH0pOwogICAgfQoKICAgIGlmIChkb2N1bWVudC5yZWFkeVN0YXRlID09PSAibG9hZGluZyIpIHsKICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKAogICAgICAgICAgICAiRE9NQ29udGVudExvYWRlZCIsCiAgICAgICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIHN0YXJ0TmV1cm9TcGFya3NIZXJvKGRvY3VtZW50KTsKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9IGVsc2UgewogICAgICAgIHN0YXJ0TmV1cm9TcGFya3NIZXJvKGRvY3VtZW50KTsKICAgIH0KCiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigKICAgICAgICAiZnVzaW9uLWNvbnRlbnQtcmVuZGVyZWQiLAogICAgICAgIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgc3RhcnROZXVyb1NwYXJrc0hlcm8oZG9jdW1lbnQpOwogICAgICAgIH0KICAgICk7Cn0pKCk7Cjwvc2NyaXB0Pg==[/fusion_code][fusion_code]PCEtLQpXZWJzaXRlcyBCeSBNaWtlCk5ldXJvLVNwYXJrcyBUeXBpbmcgQmFubmVyCkNyZWFtIEJhY2tncm91bmQgVmVyc2lvbgotLT4KCjxkaXYKICAgIGNsYXNzPSJucy10eXBpbmctYmFubmVyIgogICAgcm9sZT0icmVnaW9uIgogICAgYXJpYS1sYWJlbD0iTmV1cm8tU3BhcmtzIHN1cHBvcnQiCj4KICAgIDxkaXYgY2xhc3M9Im5zLXR5cGluZy1iYW5uZXJfX2lubmVyIj4KCiAgICAgICAgPGRpdiBjbGFzcz0ibnMtdHlwaW5nLWJhbm5lcl9faWNvbiIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCA2NCA2NCI+CiAgICAgICAgICAgICAgICA8ZGVmcz4KICAgICAgICAgICAgICAgICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgICAgICAgICAgICAgICAgaWQ9Im5zLXR5cGluZy10cm9waHktZ3JhZGllbnQiCiAgICAgICAgICAgICAgICAgICAgICAgIHgxPSIwIgogICAgICAgICAgICAgICAgICAgICAgICB5MT0iMCIKICAgICAgICAgICAgICAgICAgICAgICAgeDI9IjEiCiAgICAgICAgICAgICAgICAgICAgICAgIHkyPSIxIgogICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgPHN0b3AKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wLWNvbG9yPSIjNDIzMjYxIgogICAgICAgICAgICAgICAgICAgICAgICA+PC9zdG9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHN0b3AKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iNTUlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcC1jb2xvcj0iIzhkNGZjMCIKICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3RvcD4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxzdG9wCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9IjEwMCUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wLWNvbG9yPSIjY2E4ZmVkIgogICAgICAgICAgICAgICAgICAgICAgICA+PC9zdG9wPgogICAgICAgICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgICAgICAgICA8L2RlZnM+CgogICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICBkPSJNMTggOGgyOHYxNmMwIDkuMy01LjkgMTcuMi0xNCAyMC4yQzIzLjkgNDEuMiAxOCAzMy4zIDE4IDI0Vjh6IgogICAgICAgICAgICAgICAgICAgIGZpbGw9Im5vbmUiCiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPSJ1cmwoI25zLXR5cGluZy10cm9waHktZ3JhZGllbnQpIgogICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD0iNCIKICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49InJvdW5kIgogICAgICAgICAgICAgICAgPjwvcGF0aD4KCiAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgIGQ9Ik0xOCAxNEg5djVjMCA3LjIgNC45IDEyLjkgMTEuNiAxNC41TTQ2IDE0aDl2NWMwIDcuMi00LjkgMTIuOS0xMS42IDE0LjUiCiAgICAgICAgICAgICAgICAgICAgZmlsbD0ibm9uZSIKICAgICAgICAgICAgICAgICAgICBzdHJva2U9InVybCgjbnMtdHlwaW5nLXRyb3BoeS1ncmFkaWVudCkiCiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPSI0IgogICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICAgICAgICAgICAgICAgID48L3BhdGg+CgogICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICBkPSJNMzIgNDR2OE0yMyA1N2gxOCIKICAgICAgICAgICAgICAgICAgICBmaWxsPSJub25lIgogICAgICAgICAgICAgICAgICAgIHN0cm9rZT0idXJsKCNucy10eXBpbmctdHJvcGh5LWdyYWRpZW50KSIKICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9IjQiCiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogICAgICAgICAgICAgICAgPjwvcGF0aD4KCiAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgIGQ9Ik0zMiAxNmwyLjQgNSA1LjYuOC00IDMuOS45IDUuNS00LjktMi42LTQuOSAyLjYuOS01LjUtNC0zLjkgNS42LS44TDMyIDE2eiIKICAgICAgICAgICAgICAgICAgICBmaWxsPSJ1cmwoI25zLXR5cGluZy10cm9waHktZ3JhZGllbnQpIgogICAgICAgICAgICAgICAgPjwvcGF0aD4KICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9Im5zLXR5cGluZy1iYW5uZXJfX2NvbnRlbnQiPgoKICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im5zLXR5cGluZy1iYW5uZXJfX2xhYmVsIj4KICAgICAgICAgICAgICAgIE5ldXJvLVNwYXJrcwogICAgICAgICAgICA8L3NwYW4+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJucy10eXBpbmctYmFubmVyX190eXBpbmctbGluZSI+CgogICAgICAgICAgICAgICAgPHNwYW4KICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibnMtdHlwaW5nLWJhbm5lcl9fdGV4dCIKICAgICAgICAgICAgICAgICAgICBhcmlhLWxpdmU9InBvbGl0ZSIKICAgICAgICAgICAgICAgID48L3NwYW4+CgogICAgICAgICAgICAgICAgPHNwYW4KICAgICAgICAgICAgICAgICAgICBjbGFzcz0ibnMtdHlwaW5nLWJhbm5lcl9fY3Vyc29yIgogICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPSJ0cnVlIgogICAgICAgICAgICAgICAgPjwvc3Bhbj4KCiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdgogICAgICAgICAgICBjbGFzcz0ibnMtdHlwaW5nLWJhbm5lcl9fc3BhcmtsZSIKICAgICAgICAgICAgYXJpYS1oaWRkZW49InRydWUiCiAgICAgICAgPgogICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCI+CiAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIgMi43NWwyLjE1IDUuMSA1LjEgMi4xNS01LjEgMi4xNS0yLjE1IDUuMS0yLjE1LTUuMS01LjEtMi4xNSA1LjEtMi4xNUwxMiAyLjc1eiI+PC9wYXRoPgogICAgICAgICAgICA8L3N2Zz4KICAgICAgICA8L2Rpdj4KCiAgICA8L2Rpdj4KPC9kaXY+Cgo8c3R5bGU+CiAgICAubnMtdHlwaW5nLWJhbm5lciwKICAgIC5ucy10eXBpbmctYmFubmVyICogewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICB9CgogICAgLm5zLXR5cGluZy1iYW5uZXIgewogICAgICAgIC0tbnMtcHVycGxlOiAjNDIzMjYxOwogICAgICAgIC0tbnMtcHVycGxlLWRhcms6ICMyZTIxNDc7CiAgICAgICAgLS1ucy1saWxhYzogI2NhOGZlZDsKICAgICAgICAtLW5zLWxpbGFjLWxpZ2h0OiAjZWFkMGY5OwogICAgICAgIC0tbnMtY3JlYW06ICNmNmVjZTA7CiAgICAgICAgLS1ucy1jcmVhbS1saWdodDogI2ZjZjhmMzsKCiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGlzb2xhdGlvbjogaXNvbGF0ZTsKCiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKCiAgICAgICAgcGFkZGluZzogMjBweCAyNHB4OwoKICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSg2NiwgNTAsIDk3LCAwLjA5KTsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSg2NiwgNTAsIDk3LCAwLjA5KTsKCiAgICAgICAgYmFja2dyb3VuZDoKICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KAogICAgICAgICAgICAgICAgY2lyY2xlIGF0IDkyJSA1JSwKICAgICAgICAgICAgICAgIHJnYmEoMjAyLCAxNDMsIDIzNywgMC4yKSwKICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50IDMwJQogICAgICAgICAgICApLAogICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoCiAgICAgICAgICAgICAgICBjaXJjbGUgYXQgNSUgMTAwJSwKICAgICAgICAgICAgICAgIHJnYmEoNjYsIDUwLCA5NywgMC4wNyksCiAgICAgICAgICAgICAgICB0cmFuc3BhcmVudCAyOSUKICAgICAgICAgICAgKSwKICAgICAgICAgICAgbGluZWFyLWdyYWRpZW50KAogICAgICAgICAgICAgICAgMTgwZGVnLAogICAgICAgICAgICAgICAgdmFyKC0tbnMtY3JlYW0tbGlnaHQpLAogICAgICAgICAgICAgICAgdmFyKC0tbnMtY3JlYW0pCiAgICAgICAgICAgICk7CgogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1wdXJwbGUtZGFyayk7CiAgICAgICAgZm9udC1mYW1pbHk6ICJMYXRvIiwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgICB9CgogICAgLyoKICAgICAqIFN1YnRsZSBhbmltYXRlZCBzd2VlcAogICAgICovCgogICAgLm5zLXR5cGluZy1iYW5uZXI6OmJlZm9yZSB7CiAgICAgICAgY29udGVudDogIiI7CgogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICBpbnNldDogMDsKCiAgICAgICAgYmFja2dyb3VuZDoKICAgICAgICAgICAgbGluZWFyLWdyYWRpZW50KAogICAgICAgICAgICAgICAgOTBkZWcsCiAgICAgICAgICAgICAgICB0cmFuc3BhcmVudCwKICAgICAgICAgICAgICAgIHJnYmEoMjAyLCAxNDMsIDIzNywgMC4wOSksCiAgICAgICAgICAgICAgICB0cmFuc3BhcmVudAogICAgICAgICAgICApOwoKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpOwoKICAgICAgICBhbmltYXRpb246IG5zQmFubmVyU2hpbmUgN3MgZWFzZS1pbi1vdXQgaW5maW5pdGU7CgogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgfQoKICAgIC8qCiAgICAgKiBEZWNvcmF0aXZlIGxpbmUKICAgICAqLwoKICAgIC5ucy10eXBpbmctYmFubmVyOjphZnRlciB7CiAgICAgICAgY29udGVudDogIiI7CgogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IDA7CiAgICAgICAgcmlnaHQ6IDklOwoKICAgICAgICB3aWR0aDogMXB4OwogICAgICAgIGhlaWdodDogMTAwJTsKCiAgICAgICAgYmFja2dyb3VuZDogcmdiYSg2NiwgNTAsIDk3LCAwLjA3KTsKCiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB9CgogICAgLm5zLXR5cGluZy1iYW5uZXJfX2lubmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgei1pbmRleDogMjsKCiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKSBhdXRvOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CgogICAgICAgIHdpZHRoOiBtaW4oMTIyMHB4LCAxMDAlKTsKICAgICAgICBtaW4taGVpZ2h0OiA2NHB4OwoKICAgICAgICBtYXJnaW46IDAgYXV0bzsKCiAgICAgICAgZ2FwOiAyMHB4OwogICAgfQoKICAgIC8qCiAgICAgKiBUcm9waHkgaWNvbgogICAgICovCgogICAgLm5zLXR5cGluZy1iYW5uZXJfX2ljb24gewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CgogICAgICAgIHdpZHRoOiA1OHB4OwogICAgICAgIGhlaWdodDogNThweDsKCiAgICAgICAgZmxleDogMCAwIDU4cHg7CiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjsKCiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg2NiwgNTAsIDk3LCAwLjE3KTsKICAgICAgICBib3JkZXItcmFkaXVzOiAxN3B4OwoKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNDcpOwoKICAgICAgICBib3gtc2hhZG93OgogICAgICAgICAgICAwIDEwcHggMjhweCByZ2JhKDY2LCA1MCwgOTcsIDAuMDcpLAogICAgICAgICAgICBpbnNldCAwIDFweCAwIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NSk7CgogICAgICAgIHRyYW5zaXRpb246CiAgICAgICAgICAgIHRyYW5zZm9ybSAzMDBtcyBlYXNlLAogICAgICAgICAgICBib3JkZXItY29sb3IgMzAwbXMgZWFzZSwKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciAzMDBtcyBlYXNlOwogICAgfQoKICAgIC5ucy10eXBpbmctYmFubmVyOmhvdmVyCiAgICAubnMtdHlwaW5nLWJhbm5lcl9faWNvbiB7CiAgICAgICAgdHJhbnNmb3JtOgogICAgICAgICAgICByb3RhdGUoLTRkZWcpCiAgICAgICAgICAgIHRyYW5zbGF0ZVkoLTJweCk7CgogICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgyMDIsIDE0MywgMjM3LCAwLjgpOwoKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzIpOwogICAgfQoKICAgIC5ucy10eXBpbmctYmFubmVyX19pY29uIHN2ZyB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CgogICAgICAgIHdpZHRoOiAzN3B4OwogICAgICAgIGhlaWdodDogMzdweDsKICAgIH0KCiAgICAvKgogICAgICogVHlwaW5nIGNvbnRlbnQKICAgICAqLwoKICAgIC5ucy10eXBpbmctYmFubmVyX19jb250ZW50IHsKICAgICAgICBtaW4td2lkdGg6IDA7CiAgICB9CgogICAgLm5zLXR5cGluZy1iYW5uZXJfX2xhYmVsIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKCiAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4OwoKICAgICAgICBjb2xvcjogdmFyKC0tbnMtcHVycGxlKTsKCiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CgogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjE2ZW07CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIH0KCiAgICAubnMtdHlwaW5nLWJhbm5lcl9fdHlwaW5nLWxpbmUgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKCiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICAgIG1pbi1oZWlnaHQ6IDMzcHg7CiAgICB9CgogICAgLm5zLXR5cGluZy1iYW5uZXJfX3RleHQgewogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1wdXJwbGUtZGFyayk7CgogICAgICAgIGZvbnQtZmFtaWx5OiAiQW50b24iLCBJbXBhY3QsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgyMHB4LCAyLjJ2dywgMjlweCk7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsaW5lLWhlaWdodDogMS4xMjsKCiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDFlbTsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgfQoKICAgIC5ucy10eXBpbmctYmFubmVyX19jdXJzb3IgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKCiAgICAgICAgd2lkdGg6IDJweDsKICAgICAgICBoZWlnaHQ6IDI1cHg7CgogICAgICAgIGZsZXg6IDAgMCAycHg7CgogICAgICAgIG1hcmdpbi1sZWZ0OiA3cHg7CgogICAgICAgIGJvcmRlci1yYWRpdXM6IDJweDsKCiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbnMtbGlsYWMpOwoKICAgICAgICBhbmltYXRpb246IG5zVHlwaW5nQ3Vyc29yIDAuOHMgc3RlcHMoMSkgaW5maW5pdGU7CiAgICB9CgogICAgLyoKICAgICAqIFNwYXJrbGUKICAgICAqLwoKICAgIC5ucy10eXBpbmctYmFubmVyX19zcGFya2xlIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwoKICAgICAgICB3aWR0aDogNDBweDsKICAgICAgICBoZWlnaHQ6IDQwcHg7CgogICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7CgogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1saWxhYyk7CgogICAgICAgIG9wYWNpdHk6IDAuODsKCiAgICAgICAgYW5pbWF0aW9uOiBuc1NwYXJrbGVGbG9hdCAzLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlOwogICAgfQoKICAgIC5ucy10eXBpbmctYmFubmVyX19zcGFya2xlIHN2ZyB7CiAgICAgICAgd2lkdGg6IDIycHg7CiAgICAgICAgaGVpZ2h0OiAyMnB4OwoKICAgICAgICBmaWxsOiBjdXJyZW50Q29sb3I7CiAgICB9CgogICAgLyoKICAgICAqIEFuaW1hdGlvbnMKICAgICAqLwoKICAgIEBrZXlmcmFtZXMgbnNUeXBpbmdDdXJzb3IgewogICAgICAgIDAlLAogICAgICAgIDQ4JSB7CiAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgfQoKICAgICAgICA0OSUsCiAgICAgICAgMTAwJSB7CiAgICAgICAgICAgIG9wYWNpdHk6IDA7CiAgICAgICAgfQogICAgfQoKICAgIEBrZXlmcmFtZXMgbnNCYW5uZXJTaGluZSB7CiAgICAgICAgMCUsCiAgICAgICAgNTglIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTsKICAgICAgICB9CgogICAgICAgIDgyJSwKICAgICAgICAxMDAlIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpOwogICAgICAgIH0KICAgIH0KCiAgICBAa2V5ZnJhbWVzIG5zU3BhcmtsZUZsb2F0IHsKICAgICAgICAwJSwKICAgICAgICAxMDAlIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHJvdGF0ZSgwZGVnKTsKICAgICAgICAgICAgb3BhY2l0eTogMC42NTsKICAgICAgICB9CgogICAgICAgIDUwJSB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtNHB4KSByb3RhdGUoOGRlZyk7CiAgICAgICAgICAgIG9wYWNpdHk6IDE7CiAgICAgICAgfQogICAgfQoKICAgIC8qCiAgICAgKiBNb2JpbGUKICAgICAqLwoKICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2ODBweCkgewogICAgICAgIC5ucy10eXBpbmctYmFubmVyIHsKICAgICAgICAgICAgcGFkZGluZzogMTdweCAxNnB4OwogICAgICAgIH0KCiAgICAgICAgLm5zLXR5cGluZy1iYW5uZXI6OmFmdGVyIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICB9CgogICAgICAgIC5ucy10eXBpbmctYmFubmVyX19pbm5lciB7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogYXV0byBtaW5tYXgoMCwgMWZyKTsKCiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDYycHg7CgogICAgICAgICAgICBnYXA6IDE0cHg7CiAgICAgICAgfQoKICAgICAgICAubnMtdHlwaW5nLWJhbm5lcl9faWNvbiB7CiAgICAgICAgICAgIHdpZHRoOiA1MHB4OwogICAgICAgICAgICBoZWlnaHQ6IDUwcHg7CgogICAgICAgICAgICBmbGV4LWJhc2lzOiA1MHB4OwoKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMTVweDsKICAgICAgICB9CgogICAgICAgIC5ucy10eXBpbmctYmFubmVyX19pY29uIHN2ZyB7CiAgICAgICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgICAgICBoZWlnaHQ6IDMycHg7CiAgICAgICAgfQoKICAgICAgICAubnMtdHlwaW5nLWJhbm5lcl9fdHlwaW5nLWxpbmUgewogICAgICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDsKCiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDQ4cHg7CiAgICAgICAgfQoKICAgICAgICAubnMtdHlwaW5nLWJhbm5lcl9fdGV4dCB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMThweCwgNS41dncsIDIzcHgpOwogICAgICAgIH0KCiAgICAgICAgLm5zLXR5cGluZy1iYW5uZXJfX2N1cnNvciB7CiAgICAgICAgICAgIGhlaWdodDogMjFweDsKCiAgICAgICAgICAgIG1hcmdpbi10b3A6IDFweDsKICAgICAgICB9CgogICAgICAgIC5ucy10eXBpbmctYmFubmVyX19zcGFya2xlIHsKICAgICAgICAgICAgZGlzcGxheTogbm9uZTsKICAgICAgICB9CiAgICB9CgogICAgQG1lZGlhIChtYXgtd2lkdGg6IDQyMHB4KSB7CiAgICAgICAgLm5zLXR5cGluZy1iYW5uZXJfX2xhYmVsIHsKICAgICAgICAgICAgZm9udC1zaXplOiA5cHg7CgogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xMmVtOwogICAgICAgIH0KCiAgICAgICAgLm5zLXR5cGluZy1iYW5uZXJfX3RleHQgewogICAgICAgICAgICBmb250LXNpemU6IDE4cHg7CiAgICAgICAgfQogICAgfQoKICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CiAgICAgICAgLm5zLXR5cGluZy1iYW5uZXI6OmJlZm9yZSwKICAgICAgICAubnMtdHlwaW5nLWJhbm5lcl9fY3Vyc29yLAogICAgICAgIC5ucy10eXBpbmctYmFubmVyX19zcGFya2xlIHsKICAgICAgICAgICAgYW5pbWF0aW9uOiBub25lICFpbXBvcnRhbnQ7CiAgICAgICAgfQoKICAgICAgICAubnMtdHlwaW5nLWJhbm5lcl9fY3Vyc29yIHsKICAgICAgICAgICAgb3BhY2l0eTogMTsKICAgICAgICB9CgogICAgICAgIC5ucy10eXBpbmctYmFubmVyX19pY29uIHsKICAgICAgICAgICAgdHJhbnNpdGlvbjogbm9uZTsKICAgICAgICB9CgogICAgICAgIC5ucy10eXBpbmctYmFubmVyOmhvdmVyCiAgICAgICAgLm5zLXR5cGluZy1iYW5uZXJfX2ljb24gewogICAgICAgICAgICB0cmFuc2Zvcm06IG5vbmU7CiAgICAgICAgfQogICAgfQo8L3N0eWxlPgoKPHNjcmlwdD4KKGZ1bmN0aW9uICgpIHsKICAgIGZ1bmN0aW9uIGluaXRpYWxpc2VUeXBpbmdCYW5uZXJzKHNjb3BlKSB7CiAgICAgICAgY29uc3Qgcm9vdCA9IHNjb3BlIHx8IGRvY3VtZW50OwoKICAgICAgICByb290CiAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yQWxsKCIubnMtdHlwaW5nLWJhbm5lciIpCiAgICAgICAgICAgIC5mb3JFYWNoKGZ1bmN0aW9uIChiYW5uZXIpIHsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICBiYW5uZXIuZGF0YXNldC50eXBpbmdJbml0aWFsaXNlZCA9PT0gInllcyIKICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBjb25zdCB0ZXh0RWxlbWVudCA9IGJhbm5lci5xdWVyeVNlbGVjdG9yKAogICAgICAgICAgICAgICAgICAgICIubnMtdHlwaW5nLWJhbm5lcl9fdGV4dCIKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCF0ZXh0RWxlbWVudCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBiYW5uZXIuZGF0YXNldC50eXBpbmdJbml0aWFsaXNlZCA9ICJ5ZXMiOwoKICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2VzID0gWwogICAgICAgICAgICAgICAgICAgICJBd2FyZC13aW5uaW5nIG5ldXJvZGl2ZXJzaXR5IHN1cHBvcnQiLAogICAgICAgICAgICAgICAgICAgICJQcmFjdGljYWwgc3VwcG9ydCBidWlsdCBhcm91bmQgcmVhbCBwZW9wbGUiLAogICAgICAgICAgICAgICAgICAgICJIZWxwaW5nIHBlb3BsZSBhbmQgYnVzaW5lc3NlcyB0aHJpdmUiLAogICAgICAgICAgICAgICAgICAgICJDcmVhdGluZyBzdHJvbmdlciBhbmQgbW9yZSBpbmNsdXNpdmUgd29ya3BsYWNlcyIKICAgICAgICAgICAgICAgIF07CgogICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2VJbmRleCA9IDA7CiAgICAgICAgICAgICAgICBsZXQgY2hhcmFjdGVySW5kZXggPSAwOwogICAgICAgICAgICAgICAgbGV0IGRlbGV0aW5nID0gZmFsc2U7CiAgICAgICAgICAgICAgICBsZXQgdGltZXI7CgogICAgICAgICAgICAgICAgY29uc3QgdHlwaW5nU3BlZWQgPSA1NTsKICAgICAgICAgICAgICAgIGNvbnN0IGRlbGV0aW5nU3BlZWQgPSAyODsKICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZFBhdXNlID0gMjEwMDsKICAgICAgICAgICAgICAgIGNvbnN0IGVtcHR5UGF1c2UgPSA0NTA7CgogICAgICAgICAgICAgICAgZnVuY3Rpb24gdHlwZU1lc3NhZ2UoKSB7CiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3VycmVudE1lc3NhZ2UgPQogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlc1ttZXNzYWdlSW5kZXhdOwoKICAgICAgICAgICAgICAgICAgICBpZiAoIWRlbGV0aW5nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlckluZGV4Kys7CgogICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RWxlbWVudC50ZXh0Q29udGVudCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50TWVzc2FnZS5zdWJzdHJpbmcoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJJbmRleAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlckluZGV4ID49CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50TWVzc2FnZS5sZW5ndGgKICAgICAgICAgICAgICAgICAgICAgICAgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWxldGluZyA9IHRydWU7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXIgPSB3aW5kb3cuc2V0VGltZW91dCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlTWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZWRQYXVzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlTWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGluZ1NwZWVkCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJJbmRleC0tOwoKICAgICAgICAgICAgICAgICAgICB0ZXh0RWxlbWVudC50ZXh0Q29udGVudCA9CiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNZXNzYWdlLnN1YnN0cmluZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJJbmRleAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVySW5kZXggPD0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjaGFyYWN0ZXJJbmRleCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0aW5nID0gZmFsc2U7CgogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlSW5kZXggPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1lc3NhZ2VJbmRleCArIDEpICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VzLmxlbmd0aDsKCiAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlTWVzc2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5UGF1c2UKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHRpbWVyID0gd2luZG93LnNldFRpbWVvdXQoCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVNZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGluZ1NwZWVkCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgd2luZG93Lm1hdGNoTWVkaWEoCiAgICAgICAgICAgICAgICAgICAgICAgICIocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSIKICAgICAgICAgICAgICAgICAgICApLm1hdGNoZXMKICAgICAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgICAgIHRleHRFbGVtZW50LnRleHRDb250ZW50ID0gbWVzc2FnZXNbMF07CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHRleHRFbGVtZW50LnRleHRDb250ZW50ID0gIiI7CiAgICAgICAgICAgICAgICB0eXBlTWVzc2FnZSgpOwogICAgICAgICAgICB9KTsKICAgIH0KCiAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImxvYWRpbmciKSB7CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigKICAgICAgICAgICAgIkRPTUNvbnRlbnRMb2FkZWQiLAogICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBpbml0aWFsaXNlVHlwaW5nQmFubmVycyhkb2N1bWVudCk7CiAgICAgICAgICAgIH0KICAgICAgICApOwogICAgfSBlbHNlIHsKICAgICAgICBpbml0aWFsaXNlVHlwaW5nQmFubmVycyhkb2N1bWVudCk7CiAgICB9CgogICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoCiAgICAgICAgImVsZW1lbnRvci9mcm9udGVuZC9pbml0IiwKICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGluaXRpYWxpc2VUeXBpbmdCYW5uZXJzKGRvY3VtZW50KTsKCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgIHdpbmRvdy5lbGVtZW50b3JGcm9udGVuZCAmJgogICAgICAgICAgICAgICAgd2luZG93LmVsZW1lbnRvckZyb250ZW5kLmhvb2tzCiAgICAgICAgICAgICkgewogICAgICAgICAgICAgICAgd2luZG93LmVsZW1lbnRvckZyb250ZW5kLmhvb2tzLmFkZEFjdGlvbigKICAgICAgICAgICAgICAgICAgICAiZnJvbnRlbmQvZWxlbWVudF9yZWFkeS9odG1sLmRlZmF1bHQiLAogICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uICgkc2NvcGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGlzZVR5cGluZ0Jhbm5lcnMoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc2NvcGUgJiYgJHNjb3BlWzBdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAkc2NvcGVbMF0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGRvY3VtZW50CiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICk7Cn0pKCk7Cjwvc2NyaXB0Pg==[/fusion_code][fusion_code]PHNlY3Rpb24KICAgIGlkPSJyZWNvZ25pdGlvbiIKICAgIGNsYXNzPSJyZWNvZ25pdGlvbi1zZWN0aW9uIgogICAgYXJpYS1sYWJlbGxlZGJ5PSJyZWNvZ25pdGlvbi1oZWFkaW5nIgo+CiAgICA8ZGl2IGNsYXNzPSJyZWNvZ25pdGlvbi13cmFwIj4KICAgICAgICA8ZGl2IGNsYXNzPSJyZWNvZ25pdGlvbi1pbnRybyI+CjxkaXYgY2xhc3M9InJlY29nbml0aW9uLWtpY2tlciI+CiAgICA8c3BhbiBjbGFzcz0icmVjb2duaXRpb24ta2lja2VyX19pY29uIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiPgogICAgICAgICAgICA8cGF0aCBkPSJNMTIgMi43NWwyLjE1IDUuMSA1LjEgMi4xNS01LjEgMi4xNS0yLjE1IDUuMS0yLjE1LTUuMS01LjEtMi4xNSA1LjEtMi4xNUwxMiAyLjc1eiI+PC9wYXRoPgogICAgICAgIDwvc3ZnPgogICAgPC9zcGFuPgoKICAgIDxzcGFuPgogICAgICAgIDxzcGFuIGNsYXNzPSJyZWNvZ25pdGlvbi1raWNrZXJfX2hpZ2hsaWdodCI+QXdhcmQtd2lubmluZzwvc3Bhbj4KICAgICAgICBuZXVyb2RpdmVyc2l0eSBzdXBwb3J0CiAgICA8L3NwYW4+CjwvZGl2PgogICAgICAgICAgICA8aDIKICAgICAgICAgICAgICAgIGlkPSJyZWNvZ25pdGlvbi1oZWFkaW5nIgogICAgICAgICAgICAgICAgY2xhc3M9InJlY29nbml0aW9uLWhlYWRpbmciCiAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIFJlYWwgc3VwcG9ydC4KICAgICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgICAgIFJlY29nbmlzZWQgaW1wYWN0LgogICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8L2gyPgogICAgICAgICAgICA8cCBjbGFzcz0icmVjb2duaXRpb24tc3VtbWFyeSI+CiAgICAgICAgICAgICAgICBOZXVyby1TcGFya3MgcHJvdmlkZXMgcHJhY3RpY2FsIHdvcmtwbGFjZSBzdXBwb3J0LAogICAgICAgICAgICAgICAgdHJhaW5pbmcgYW5kIGNvYWNoaW5nIHRoYXQgaGVscHMgcGVvcGxlIGFuZCBvcmdhbmlzYXRpb25zCiAgICAgICAgICAgICAgICByZW1vdmUgYmFycmllcnMsIGJ1aWxkIGNvbmZpZGVuY2UgYW5kIHRocml2ZS4KICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgY2xhc3M9InJlY29nbml0aW9uLWxpbmsiCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL25ldXJvc3Bhcmtzb2x1dGlvbnMuY29tLzctcmVhc29ucy10by1tZWV0LW5ldXJvLXNwYXJrcy1zdXBwb3J0LyIKICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPHNwYW4+RGlzY292ZXIgb3VyIGFwcHJvYWNoPC9zcGFuPgogICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNSAxMmgxNCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMyA2bDYgNi02IDYiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICA8L2E+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGFydGljbGUgY2xhc3M9InJlY29nbml0aW9uLWNhcmQiPgogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICBjbGFzcz0icmVjb2duaXRpb24tY2FyZF9faWNvbiIKICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPSJ0cnVlIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCA2NCA2NCI+CiAgICAgICAgICAgICAgICAgICAgPGRlZnM+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9InJlY29nbml0aW9uLXRyb3BoeS1ncmFkaWVudCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgxPSIwIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTE9IjAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4Mj0iMSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkyPSIxIgogICAgICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RvcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iMCUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcC1jb2xvcj0iI2Y2ZWNlMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3N0b3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RvcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldD0iNTIlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AtY29sb3I9IiNjYThmZWQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zdG9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0b3AKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9IjEwMCUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcC1jb2xvcj0iIzhkNGZjMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3N0b3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgICAgICAgICAgICAgICAgPC9kZWZzPgogICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0xOCA4aDI4djE2YzAgOS4zLTUuOSAxNy4yLTE0IDIwLjJDMjMuOSA0MS4yIDE4IDMzLjMgMTggMjRWOHoiCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9Im5vbmUiCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT0idXJsKCNyZWNvZ25pdGlvbi10cm9waHktZ3JhZGllbnQpIgogICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9IjQiCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj0icm91bmQiCiAgICAgICAgICAgICAgICAgICAgPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgICAgICBkPSJNMTggMTRIOXY1YzAgNy4yIDQuOSAxMi45IDExLjYgMTQuNU00NiAxNGg5djVjMCA3LjItNC45IDEyLjktMTEuNiAxNC41IgogICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSJub25lIgogICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9InVybCgjcmVjb2duaXRpb24tdHJvcGh5LWdyYWRpZW50KSIKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPSI0IgogICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWNhcD0icm91bmQiCiAgICAgICAgICAgICAgICAgICAgPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgICAgICBkPSJNMzIgNDR2OE0yMyA1N2gxOCIKICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD0ibm9uZSIKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPSJ1cmwoI3JlY29nbml0aW9uLXRyb3BoeS1ncmFkaWVudCkiCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD0iNCIKICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogICAgICAgICAgICAgICAgICAgID48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTMyIDE2bDIuNCA1IDUuNi44LTQgMy45LjkgNS41LTQuOS0yLjYtNC45IDIuNi45LTUuNS00LTMuOSA1LjYtLjhMMzIgMTZ6IgogICAgICAgICAgICAgICAgICAgICAgICBmaWxsPSJ1cmwoI3JlY29nbml0aW9uLXRyb3BoeS1ncmFkaWVudCkiCiAgICAgICAgICAgICAgICAgICAgPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVjb2duaXRpb24tY2FyZF9fY29weSI+CiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9InJlY29nbml0aW9uLWNhcmRfX2hlYWRpbmciPgogICAgICAgICAgICAgICAgICAgIEF3YXJkLXdpbm5pbmcgc3VwcG9ydCBidWlsdCBhcm91bmQgcmVhbCBwZW9wbGUKICAgICAgICAgICAgICAgIDwvaDM+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0icmVjb2duaXRpb24tY2FyZF9fdGV4dCI+CiAgICAgICAgICAgICAgICAgICAgRXZlcnlvbmUgZGVzZXJ2ZXMgYnVzaW5lc3Mgc3VjY2VzcywgcmVnYXJkbGVzcyBvZiBuZXVyb2RpdmVyZ2VuY2UsIHJhY2UsIGdlbmRlciBvciBzZXh1YWwgb3JpZW50YXRpb24uIE5vIG1hdHRlciB3aG8geW91IGFyZSBvciB5b3VyIHN0b3J5LCB3ZSBoZWxwIHlvdSB0aHJpdmUgaW4gYSB3b3JsZCB3aGVyZSBzb2NpZXRhbCBiYXJyaWVycyBjYW4gcmVzdHJpY3QgeW91IGZyb20gcmVhY2hpbmcgeW91ciBlbnRyZXByZW5ldXJpYWwgcG90ZW50aWFsLiBJdOKAmXMgdGltZSBmb3IgaW5jbHVzaXZpdHksIGFjY2Vzc2liaWxpdHkgYW5kIGVxdWFsaXR5IHRocm91Z2hvdXQgdGhlIGJ1c2luZXNzIHdvcmxkLiBUb2dldGhlciwgd2UgY2FuIG1ha2UgaXQgaGFwcGVuLgogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdgogICAgICAgICAgICAgICAgY2xhc3M9InJlY29nbml0aW9uLWNhcmRfX3VuZGVybGluZSIKICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPSJ0cnVlIgogICAgICAgICAgICA+PC9kaXY+CiAgICAgICAgPC9hcnRpY2xlPgogICAgPC9kaXY+Cjwvc2VjdGlvbj4KPHN0eWxlPgogICAgQHByb3BlcnR5IC0tcmVjb2duaXRpb24tbGlnaHQtcG9zaXRpb24gewogICAgICAgIHN5bnRheDogIjxhbmdsZT4iOwogICAgICAgIGluaXRpYWwtdmFsdWU6IDBkZWc7CiAgICAgICAgaW5oZXJpdHM6IGZhbHNlOwogICAgfQogICAgLnJlY29nbml0aW9uLXNlY3Rpb24sCiAgICAucmVjb2duaXRpb24tc2VjdGlvbiAqIHsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgfQogICAgLnJlY29nbml0aW9uLXNlY3Rpb24gewogICAgICAgIC0tcHVycGxlOiAjNDIzMjYxOwogICAgICAgIC0tcHVycGxlLWRhcms6ICMyZTIxNDc7CiAgICAgICAgLS1wdXJwbGUtZGVlcDogIzFiMTIzMjsKICAgICAgICAtLWxpbGFjOiAjY2E4ZmVkOwogICAgICAgIC0tbGlsYWMtbGlnaHQ6ICNlYWQwZjk7CiAgICAgICAgLS1jcmVhbTogI2Y2ZWNlMDsKICAgICAgICAtLW11dGVkOiAjYzliZGQzOwogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBpc29sYXRpb246IGlzb2xhdGU7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBwYWRkaW5nOgogICAgICAgICAgICBjbGFtcCg3MnB4LCA5dncsIDEzMnB4KQogICAgICAgICAgICAyNHB4OwogICAgICAgIGJhY2tncm91bmQ6CiAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudCgKICAgICAgICAgICAgICAgIGNpcmNsZSBhdCA4MiUgMTYlLAogICAgICAgICAgICAgICAgcmdiYSgyMDIsIDE0MywgMjM3LCAwLjE2KSwKICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50IDMxJQogICAgICAgICAgICApLAogICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoCiAgICAgICAgICAgICAgICBjaXJjbGUgYXQgNiUgOTIlLAogICAgICAgICAgICAgICAgcmdiYSgyMDIsIDE0MywgMjM3LCAwLjA4KSwKICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50IDI5JQogICAgICAgICAgICApLAogICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoCiAgICAgICAgICAgICAgICAxMjVkZWcsCiAgICAgICAgICAgICAgICB2YXIoLS1wdXJwbGUtZGVlcCkgMCUsCiAgICAgICAgICAgICAgICB2YXIoLS1wdXJwbGUtZGFyaykgNTAlLAogICAgICAgICAgICAgICAgdmFyKC0tcHVycGxlKSAxMDAlCiAgICAgICAgICAgICk7CiAgICAgICAgY29sb3I6IHZhcigtLWNyZWFtKTsKICAgICAgICBmb250LWZhbWlseTogIkxhdG8iLCBBcmlhbCwgc2Fucy1zZXJpZjsKICAgIH0KICAgIC5yZWNvZ25pdGlvbi1zZWN0aW9uOjpiZWZvcmUgewogICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB0b3A6IC0yNTBweDsKICAgICAgICByaWdodDogLTE1MHB4OwogICAgICAgIHdpZHRoOiA0NjBweDsKICAgICAgICBoZWlnaHQ6IDQ2MHB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjAyLCAxNDMsIDIzNywgMC4wOCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgfQogICAgLnJlY29nbml0aW9uLXNlY3Rpb246OmFmdGVyIHsKICAgICAgICBjb250ZW50OiAiIjsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgYm90dG9tOiAtMjQwcHg7CiAgICAgICAgbGVmdDogLTE2MHB4OwogICAgICAgIHdpZHRoOiA0MDBweDsKICAgICAgICBoZWlnaHQ6IDQwMHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBiYWNrZ3JvdW5kOgogICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoCiAgICAgICAgICAgICAgICBjaXJjbGUsCiAgICAgICAgICAgICAgICByZ2JhKDIwMiwgMTQzLCAyMzcsIDAuMSksCiAgICAgICAgICAgICAgICB0cmFuc3BhcmVudCA2OCUKICAgICAgICAgICAgKTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIH0KICAgIC5yZWNvZ25pdGlvbi13cmFwIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgei1pbmRleDogMjsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczoKICAgICAgICAgICAgbWlubWF4KDAsIDAuODRmcikKICAgICAgICAgICAgbWlubWF4KDAsIDEuMTZmcik7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICB3aWR0aDogbWluKDEyMjBweCwgMTAwJSk7CiAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICAgICAgZ2FwOiBjbGFtcCg0OHB4LCA4dncsIDExMHB4KTsKICAgIH0KICAgIC5yZWNvZ25pdGlvbi1pbnRybyB7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgfQoKLnJlY29nbml0aW9uLWtpY2tlcl9faGlnaGxpZ2h0IHsKICAgIGNvbG9yOiAjY2E4ZmVkOwp9CiAgICAucmVjb2duaXRpb24ta2lja2VyIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIG1hcmdpbi1ib3R0b206IDI0cHg7CiAgICAgICAgY29sb3I6IHZhcigtLWxpbGFjKTsKICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgICAgICBsaW5lLWhlaWdodDogMS4zOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjEzZW07CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICBnYXA6IDEwcHg7CiAgICB9CiAgICAucmVjb2duaXRpb24ta2lja2VyX19pY29uIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIHdpZHRoOiAzMHB4OwogICAgICAgIGhlaWdodDogMzBweDsKICAgICAgICBmbGV4OiAwIDAgMzBweDsKICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyOwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjAyLCAxNDMsIDIzNywgMC40Mik7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjAyLCAxNDMsIDIzNywgMC4wOCk7CiAgICB9CiAgICAucmVjb2duaXRpb24ta2lja2VyX19pY29uIHN2ZyB7CiAgICAgICAgd2lkdGg6IDE2cHg7CiAgICAgICAgaGVpZ2h0OiAxNnB4OwogICAgICAgIGZpbGw6IGN1cnJlbnRDb2xvcjsKICAgIH0KICAgIC5yZWNvZ25pdGlvbi1oZWFkaW5nIHsKICAgICAgICBtYXgtd2lkdGg6IDU5MHB4OwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBjb2xvcjogdmFyKC0tY3JlYW0pOwogICAgICAgIGZvbnQtZmFtaWx5OiAiQW50b24iLCBJbXBhY3QsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiBjbGFtcCg1MnB4LCA2LjV2dywgODhweCk7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsaW5lLWhlaWdodDogMC45ODsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMDsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgfQogICAgLnJlY29nbml0aW9uLWhlYWRpbmcgc3BhbiB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgY29sb3I6IHZhcigtLWxpbGFjKTsKICAgIH0KICAgIC5yZWNvZ25pdGlvbi1zdW1tYXJ5IHsKICAgICAgICBtYXgtd2lkdGg6IDU2MHB4OwogICAgICAgIG1hcmdpbjogMjhweCAwIDA7CiAgICAgICAgY29sb3I6IHJnYmEoMjQ2LCAyMzYsIDIyNCwgMC43OCk7CiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgxNnB4LCAxLjV2dywgMTlweCk7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNzsKICAgIH0KICAgIC5yZWNvZ25pdGlvbi1zZWN0aW9uIC5yZWNvZ25pdGlvbi1saW5rIHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIG1pbi1oZWlnaHQ6IDU0cHg7CiAgICAgICAgbWFyZ2luLXRvcDogMzRweDsKICAgICAgICBwYWRkaW5nOiAxNHB4IDI0cHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbGlsYWMpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1saWxhYyk7CiAgICAgICAgY29sb3I6IHZhcigtLXB1cnBsZS1kYXJrKTsKICAgICAgICBmb250LWZhbWlseTogIkFudG9uIiwgSW1wYWN0LCBzYW5zLXNlcmlmOwogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07CiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICAgICAgZ2FwOiAxNHB4OwogICAgICAgIHRyYW5zaXRpb246CiAgICAgICAgICAgIHRyYW5zZm9ybSAyMjBtcyBlYXNlLAogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIDIyMG1zIGVhc2UsCiAgICAgICAgICAgIGJvcmRlci1jb2xvciAyMjBtcyBlYXNlLAogICAgICAgICAgICBjb2xvciAyMjBtcyBlYXNlLAogICAgICAgICAgICBib3gtc2hhZG93IDIyMG1zIGVhc2U7CiAgICB9CiAgICAucmVjb2duaXRpb24tc2VjdGlvbiAucmVjb2duaXRpb24tbGluazpob3ZlciwKICAgIC5yZWNvZ25pdGlvbi1zZWN0aW9uIC5yZWNvZ25pdGlvbi1saW5rOmZvY3VzLXZpc2libGUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTsKICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNyZWFtKTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jcmVhbSk7CiAgICAgICAgY29sb3I6IHZhcigtLXB1cnBsZS1kYXJrKTsKICAgICAgICBib3gtc2hhZG93OgogICAgICAgICAgICAwIDE2cHggMzRweCByZ2JhKDAsIDAsIDAsIDAuMjIpOwogICAgfQogICAgLnJlY29nbml0aW9uLWxpbmsgc3ZnIHsKICAgICAgICB3aWR0aDogMTlweDsKICAgICAgICBoZWlnaHQ6IDE5cHg7CiAgICAgICAgZmxleDogMCAwIDE5cHg7CiAgICAgICAgZmlsbDogbm9uZTsKICAgICAgICBzdHJva2U6IGN1cnJlbnRDb2xvcjsKICAgICAgICBzdHJva2Utd2lkdGg6IDEuODsKICAgICAgICBzdHJva2UtbGluZWNhcDogcm91bmQ7CiAgICAgICAgc3Ryb2tlLWxpbmVqb2luOiByb3VuZDsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjIwbXMgZWFzZTsKICAgIH0KICAgIC5yZWNvZ25pdGlvbi1saW5rOmhvdmVyIHN2ZywKICAgIC5yZWNvZ25pdGlvbi1saW5rOmZvY3VzLXZpc2libGUgc3ZnIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNHB4KTsKICAgIH0KICAgIC5yZWNvZ25pdGlvbi1jYXJkIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgaXNvbGF0aW9uOiBpc29sYXRlOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgICAgIG1pbi1oZWlnaHQ6IDQzMHB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICAgICAgcGFkZGluZzogY2xhbXAoMzJweCwgNHZ3LCA0OHB4KTsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDI0NiwgMjM2LCAyMjQsIDAuMTgpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDI2cHg7CiAgICAgICAgYmFja2dyb3VuZDoKICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KAogICAgICAgICAgICAgICAgY2lyY2xlIGF0IDk2JSAwJSwKICAgICAgICAgICAgICAgIHJnYmEoMjAyLCAxNDMsIDIzNywgMC4yNCksCiAgICAgICAgICAgICAgICB0cmFuc3BhcmVudCAzNyUKICAgICAgICAgICAgKSwKICAgICAgICAgICAgbGluZWFyLWdyYWRpZW50KAogICAgICAgICAgICAgICAgMTM1ZGVnLAogICAgICAgICAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA5KSwKICAgICAgICAgICAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMjUpCiAgICAgICAgICAgICk7CiAgICAgICAgYm94LXNoYWRvdzoKICAgICAgICAgICAgMCAyNnB4IDc1cHggcmdiYSg4LCA0LCAxOCwgMC4zKTsKICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMThweCk7CiAgICAgICAgLXdlYmtpdC1iYWNrZHJvcC1maWx0ZXI6IGJsdXIoMThweCk7CiAgICAgICAgdHJhbnNpdGlvbjoKICAgICAgICAgICAgdHJhbnNmb3JtIDI2MG1zIGVhc2UsCiAgICAgICAgICAgIGJvcmRlci1jb2xvciAyNjBtcyBlYXNlLAogICAgICAgICAgICBib3gtc2hhZG93IDI2MG1zIGVhc2U7CiAgICB9CiAgICAucmVjb2duaXRpb24tY2FyZDpob3ZlciB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC03cHgpOwogICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgyMDIsIDE0MywgMjM3LCAwLjYyKTsKICAgICAgICBib3gtc2hhZG93OgogICAgICAgICAgICAwIDM0cHggOTBweCByZ2JhKDgsIDQsIDE4LCAwLjQpLAogICAgICAgICAgICAwIDAgMjBweCByZ2JhKDIwMiwgMTQzLCAyMzcsIDAuMjIpOwogICAgfQogICAgLnJlY29nbml0aW9uLWNhcmQ6OmFmdGVyIHsKICAgICAgICBjb250ZW50OiAiIjsKICAgICAgICAtLXJlY29nbml0aW9uLWxpZ2h0LXBvc2l0aW9uOiAwZGVnOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB6LWluZGV4OiAxMDsKICAgICAgICBpbnNldDogMDsKICAgICAgICBwYWRkaW5nOiAycHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogaW5oZXJpdDsKICAgICAgICBiYWNrZ3JvdW5kOgogICAgICAgICAgICBjb25pYy1ncmFkaWVudCgKICAgICAgICAgICAgICAgIGZyb20gdmFyKC0tcmVjb2duaXRpb24tbGlnaHQtcG9zaXRpb24pLAogICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgMGRlZywKICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50IDI3MGRlZywKICAgICAgICAgICAgICAgIHJnYmEoMjAyLCAxNDMsIDIzNywgMC4wNCkgMjgwZGVnLAogICAgICAgICAgICAgICAgcmdiYSgyMDIsIDE0MywgMjM3LCAwLjI4KSAyOTFkZWcsCiAgICAgICAgICAgICAgICByZ2JhKDIwMiwgMTQzLCAyMzcsIDAuNzIpIDMwMWRlZywKICAgICAgICAgICAgICAgIHZhcigtLWxpbGFjKSAzMDlkZWcsCiAgICAgICAgICAgICAgICB2YXIoLS1saWxhYy1saWdodCkgMzE1ZGVnLAogICAgICAgICAgICAgICAgdmFyKC0tbGlsYWMpIDMyMWRlZywKICAgICAgICAgICAgICAgIHJnYmEoMjAyLCAxNDMsIDIzNywgMC42MikgMzMxZGVnLAogICAgICAgICAgICAgICAgcmdiYSgyMDIsIDE0MywgMjM3LCAwLjE4KSAzNDJkZWcsCiAgICAgICAgICAgICAgICB0cmFuc3BhcmVudCAzNTNkZWcsCiAgICAgICAgICAgICAgICB0cmFuc3BhcmVudCAzNjBkZWcKICAgICAgICAgICAgKTsKICAgICAgICBvcGFjaXR5OiAxOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgICAgIGZpbHRlcjoKICAgICAgICAgICAgZHJvcC1zaGFkb3coCiAgICAgICAgICAgICAgICAwIDAgNXB4CiAgICAgICAgICAgICAgICByZ2JhKDIwMiwgMTQzLCAyMzcsIDAuOCkKICAgICAgICAgICAgKQogICAgICAgICAgICBkcm9wLXNoYWRvdygKICAgICAgICAgICAgICAgIDAgMCAxMXB4CiAgICAgICAgICAgICAgICByZ2JhKDIwMiwgMTQzLCAyMzcsIDAuMzgpCiAgICAgICAgICAgICk7CiAgICAgICAgLXdlYmtpdC1tYXNrOgogICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoIzAwMCAwIDApIGNvbnRlbnQtYm94LAogICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoIzAwMCAwIDApOwogICAgICAgIC13ZWJraXQtbWFzay1jb21wb3NpdGU6IHhvcjsKICAgICAgICBtYXNrOgogICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoIzAwMCAwIDApIGNvbnRlbnQtYm94LAogICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoIzAwMCAwIDApOwogICAgICAgIG1hc2stY29tcG9zaXRlOiBleGNsdWRlOwogICAgICAgIGFuaW1hdGlvbjoKICAgICAgICAgICAgcmVjb2duaXRpb25MaWdodExvb3AKICAgICAgICAgICAgNHMKICAgICAgICAgICAgbGluZWFyCiAgICAgICAgICAgIGluZmluaXRlOwogICAgICAgIHdpbGwtY2hhbmdlOiAtLXJlY29nbml0aW9uLWxpZ2h0LXBvc2l0aW9uOwogICAgfQogICAgQGtleWZyYW1lcyByZWNvZ25pdGlvbkxpZ2h0TG9vcCB7CiAgICAgICAgZnJvbSB7CiAgICAgICAgICAgIC0tcmVjb2duaXRpb24tbGlnaHQtcG9zaXRpb246IDBkZWc7CiAgICAgICAgfQogICAgICAgIHRvIHsKICAgICAgICAgICAgLS1yZWNvZ25pdGlvbi1saWdodC1wb3NpdGlvbjogMzYwZGVnOwogICAgICAgIH0KICAgIH0KICAgIC5yZWNvZ25pdGlvbi1jYXJkID4gKiB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHotaW5kZXg6IDI7CiAgICB9CiAgICAucmVjb2duaXRpb24tY2FyZF9faWNvbiB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICB3aWR0aDogODJweDsKICAgICAgICBoZWlnaHQ6IDgycHg7CiAgICAgICAgZmxleDogMCAwIDgycHg7CiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIwMiwgMTQzLCAyMzcsIDAuNDIpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDIycHg7CiAgICAgICAgYmFja2dyb3VuZDoKICAgICAgICAgICAgbGluZWFyLWdyYWRpZW50KAogICAgICAgICAgICAgICAgMTQ1ZGVnLAogICAgICAgICAgICAgICAgcmdiYSgyMDIsIDE0MywgMjM3LCAwLjE3KSwKICAgICAgICAgICAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wMzUpCiAgICAgICAgICAgICk7CiAgICAgICAgdHJhbnNpdGlvbjoKICAgICAgICAgICAgdHJhbnNmb3JtIDM1MG1zIGN1YmljLWJlemllcigwLjIsIDAuNzUsIDAuMjUsIDEpLAogICAgICAgICAgICBib3JkZXItY29sb3IgMjUwbXMgZWFzZTsKICAgIH0KICAgIC5yZWNvZ25pdGlvbi1jYXJkX19pY29uIHN2ZyB7CiAgICAgICAgd2lkdGg6IDUycHg7CiAgICAgICAgaGVpZ2h0OiA1MnB4OwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAzNTBtcyBlYXNlOwogICAgfQogICAgLnJlY29nbml0aW9uLWNhcmQ6aG92ZXIKICAgIC5yZWNvZ25pdGlvbi1jYXJkX19pY29uIHsKICAgICAgICB0cmFuc2Zvcm06CiAgICAgICAgICAgIHJvdGF0ZSgtNGRlZykKICAgICAgICAgICAgc2NhbGUoMS4wNyk7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1saWxhYyk7CiAgICB9CiAgICAucmVjb2duaXRpb24tY2FyZDpob3ZlcgogICAgLnJlY29nbml0aW9uLWNhcmRfX2ljb24gc3ZnIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDYpOwogICAgfQogICAgLnJlY29nbml0aW9uLWNhcmRfX2NvcHkgewogICAgICAgIG1hcmdpbi10b3A6IDQ4cHg7CiAgICB9CiAgICAucmVjb2duaXRpb24tY2FyZF9faGVhZGluZyB7CiAgICAgICAgbWF4LXdpZHRoOiA1OTBweDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgY29sb3I6IHZhcigtLWNyZWFtKSAhaW1wb3J0YW50OwogICAgICAgIGZvbnQtZmFtaWx5OiAiQW50b24iLCBJbXBhY3QsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgzMnB4LCA0dncsIDQ5cHgpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDM7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIH0KICAgIC5yZWNvZ25pdGlvbi1jYXJkX190ZXh0IHsKICAgICAgICBtYXgtd2lkdGg6IDU4MHB4OwogICAgICAgIG1hcmdpbjogMjBweCAwIDA7CiAgICAgICAgY29sb3I6IHZhcigtLW11dGVkKTsKICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjg7CiAgICB9CiAgICAucmVjb2duaXRpb24tY2FyZF9fdW5kZXJsaW5lIHsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsKICAgICAgICB6LWluZGV4OiAzICFpbXBvcnRhbnQ7CiAgICAgICAgcmlnaHQ6IDA7CiAgICAgICAgYm90dG9tOiAwOwogICAgICAgIGxlZnQ6IDA7CiAgICAgICAgaGVpZ2h0OiA0cHg7CiAgICAgICAgYmFja2dyb3VuZDoKICAgICAgICAgICAgbGluZWFyLWdyYWRpZW50KAogICAgICAgICAgICAgICAgOTBkZWcsCiAgICAgICAgICAgICAgICB0cmFuc3BhcmVudCAwJSwKICAgICAgICAgICAgICAgIHZhcigtLWxpbGFjKSAzMCUsCiAgICAgICAgICAgICAgICB2YXIoLS1jcmVhbSkgNjUlLAogICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgMTAwJQogICAgICAgICAgICApOwogICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDAuMjUpOwogICAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGxlZnQ7CiAgICAgICAgb3BhY2l0eTogMC42NTsKICAgICAgICB0cmFuc2l0aW9uOgogICAgICAgICAgICB0cmFuc2Zvcm0gNTAwbXMgZWFzZSwKICAgICAgICAgICAgb3BhY2l0eSAzMDBtcyBlYXNlOwogICAgfQogICAgLnJlY29nbml0aW9uLWNhcmQ6aG92ZXIKICAgIC5yZWNvZ25pdGlvbi1jYXJkX191bmRlcmxpbmUgewogICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDEpOwogICAgICAgIG9wYWNpdHk6IDE7CiAgICB9CiAgICBAbWVkaWEgKG1heC13aWR0aDogMTAyNHB4KSB7CiAgICAgICAgLnJlY29nbml0aW9uLXdyYXAgewogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgICAgICAgZ2FwOiA1OHB4OwogICAgICAgIH0KICAgICAgICAucmVjb2duaXRpb24taW50cm8sCiAgICAgICAgLnJlY29nbml0aW9uLWhlYWRpbmcgewogICAgICAgICAgICBtYXgtd2lkdGg6IDc2MHB4OwogICAgICAgIH0KICAgICAgICAucmVjb2duaXRpb24tc3VtbWFyeSB7CiAgICAgICAgICAgIG1heC13aWR0aDogNjkwcHg7CiAgICAgICAgfQogICAgICAgIC5yZWNvZ25pdGlvbi1jYXJkIHsKICAgICAgICAgICAgd2lkdGg6IG1pbig3ODBweCwgMTAwJSk7CiAgICAgICAgfQogICAgfQogICAgQG1lZGlhIChtYXgtd2lkdGg6IDY4MHB4KSB7CiAgICAgICAgLnJlY29nbml0aW9uLXNlY3Rpb24gewogICAgICAgICAgICBwYWRkaW5nOgogICAgICAgICAgICAgICAgNjhweAogICAgICAgICAgICAgICAgMTZweDsKICAgICAgICB9CiAgICAgICAgLnJlY29nbml0aW9uLWtpY2tlciB7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0OwogICAgICAgICAgICBmb250LXNpemU6IDEwcHg7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7CiAgICAgICAgfQogICAgICAgIC5yZWNvZ25pdGlvbi1oZWFkaW5nIHsKICAgICAgICAgICAgZm9udC1zaXplOiBjbGFtcCg0OHB4LCAxNHZ3LCA2OHB4KTsKICAgICAgICB9CiAgICAgICAgLnJlY29nbml0aW9uLXN1bW1hcnkgewogICAgICAgICAgICBtYXJnaW4tdG9wOiAyM3B4OwogICAgICAgICAgICBmb250LXNpemU6IDE2cHg7CiAgICAgICAgfQogICAgICAgIC5yZWNvZ25pdGlvbi1zZWN0aW9uIC5yZWNvZ25pdGlvbi1saW5rIHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgICAgIG1hcmdpbi10b3A6IDI5cHg7CiAgICAgICAgfQogICAgICAgIC5yZWNvZ25pdGlvbi1jYXJkIHsKICAgICAgICAgICAgbWluLWhlaWdodDogMDsKICAgICAgICAgICAgcGFkZGluZzoKICAgICAgICAgICAgICAgIDI2cHgKICAgICAgICAgICAgICAgIDIycHgKICAgICAgICAgICAgICAgIDM0cHg7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7CiAgICAgICAgfQogICAgICAgIC5yZWNvZ25pdGlvbi1jYXJkX19pY29uIHsKICAgICAgICAgICAgd2lkdGg6IDY4cHg7CiAgICAgICAgICAgIGhlaWdodDogNjhweDsKICAgICAgICAgICAgZmxleC1iYXNpczogNjhweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMThweDsKICAgICAgICB9CiAgICAgICAgLnJlY29nbml0aW9uLWNhcmRfX2ljb24gc3ZnIHsKICAgICAgICAgICAgd2lkdGg6IDQ0cHg7CiAgICAgICAgICAgIGhlaWdodDogNDRweDsKICAgICAgICB9CiAgICAgICAgLnJlY29nbml0aW9uLWNhcmRfX2NvcHkgewogICAgICAgICAgICBtYXJnaW4tdG9wOiAzNHB4OwogICAgICAgIH0KICAgICAgICAucmVjb2duaXRpb24tY2FyZF9faGVhZGluZyB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoMzBweCwgOXZ3LCA0MHB4KTsKICAgICAgICB9CiAgICAgICAgLnJlY29nbml0aW9uLWNhcmRfX3RleHQgewogICAgICAgICAgICBmb250LXNpemU6IDE1cHg7CiAgICAgICAgfQogICAgfQogICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAgICAgICAucmVjb2duaXRpb24tc2VjdGlvbiAqLAogICAgICAgIC5yZWNvZ25pdGlvbi1zZWN0aW9uICo6OmJlZm9yZSwKICAgICAgICAucmVjb2duaXRpb24tc2VjdGlvbiAqOjphZnRlciB7CiAgICAgICAgICAgIHNjcm9sbC1iZWhhdmlvcjogYXV0byAhaW1wb3J0YW50OwogICAgICAgICAgICB0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjAxbXMgIWltcG9ydGFudDsKICAgICAgICAgICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAwLjAxbXMgIWltcG9ydGFudDsKICAgICAgICAgICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogMSAhaW1wb3J0YW50OwogICAgICAgIH0KICAgICAgICAucmVjb2duaXRpb24tY2FyZDo6YWZ0ZXIgewogICAgICAgICAgICBkaXNwbGF5OiBub25lOwogICAgICAgIH0KICAgICAgICAucmVjb2duaXRpb24tY2FyZDpob3ZlciB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZTsKICAgICAgICB9CiAgICB9Cjwvc3R5bGU+[/fusion_code][fusion_code]PCEtLQpORVVSTy1TUEFSS1Mg4oCUIExJVkUgVFJBSU5JTkcgSE9NRVBBR0UgU0VDVElPTgoKLS0+Cgo8c2VjdGlvbiBjbGFzcz0ibnMtbGl2ZS10cmFpbmluZyIgYXJpYS1sYWJlbGxlZGJ5PSJucy1saXZlLXRyYWluaW5nLXRpdGxlIj4KCiAgICA8ZGl2IGNsYXNzPSJucy1saXZlLXRyYWluaW5nX19pbm5lciI+CgogICAgICAgIDxoZWFkZXIgY2xhc3M9Im5zLWxpdmUtdHJhaW5pbmdfX2hlYWRlciI+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJucy1saXZlLXRyYWluaW5nX19pbnRybyI+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibnMtbGl2ZS10cmFpbmluZ19fZXllYnJvdyI+CgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJucy1saXZlLXRyYWluaW5nX19leWVicm93LWljb24iIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTcgM3YzTTE3IDN2M000IDloMTYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9IjQiIHk9IjUiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNSIgcng9IjIiPjwvcmVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik04IDEzaDNNOCAxNmg2Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgTGl2ZSBuZXVyb2RpdmVyc2l0eSB0cmFpbmluZyBpbiBCdXJubGV5CgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGgyIGlkPSJucy1saXZlLXRyYWluaW5nLXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICBUd28gZm9jdXNlZCBzZXNzaW9ucy48YnI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+T25lIHByYWN0aWNhbCB0cmFpbmluZyBkYXkuPC9zcGFuPgogICAgICAgICAgICAgICAgPC9oMj4KCiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0ibnMtbGl2ZS10cmFpbmluZ19fc3VtbWFyeSI+CgogICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgSm9pbiBOZXVyby1TcGFya3MgZm9yIHByYWN0aWNhbCwgZXhwZXJ0LWxlZCB0cmFpbmluZyBkZXNpZ25lZAogICAgICAgICAgICAgICAgICAgIHRvIGhlbHAgcGVvcGxlIHVuZGVyc3RhbmQgbmV1cm9kaXZlcnNpdHkgYW5kIGJ1aWxkIG1vcmUKICAgICAgICAgICAgICAgICAgICBpbmNsdXNpdmUgd29ya3BsYWNlcy4KICAgICAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJucy1saXZlLXRyYWluaW5nX19sb2NhdGlvbiI+CgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTIwIDEwYzAgNS04IDExLTggMTFTNCAxNSA0IDEwYTggOCAwIDEgMSAxNiAweiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxMCIgcj0iMi41Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICBCdXJubGV5LCBMYW5jYXNoaXJlCgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgPC9oZWFkZXI+CgogICAgICAgIDxkaXYgY2xhc3M9Im5zLWxpdmUtdHJhaW5pbmdfX3Nlc3Npb25zIj4KCiAgICAgICAgICAgIDwhLS0gTU9STklORyBTRVNTSU9OIC0tPgoKICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im5zLWxpdmUtdHJhaW5pbmdfX3Nlc3Npb24gbnMtbGl2ZS10cmFpbmluZ19fc2Vzc2lvbi0tbW9ybmluZyI+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibnMtbGl2ZS10cmFpbmluZ19fc2Vzc2lvbi10b3AiPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJucy1saXZlLXRyYWluaW5nX190aW1lIj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJucy1saXZlLXRyYWluaW5nX190aW1lLWljb24iIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI5Ij48L2NpcmNsZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTIgN3Y1bDMgMiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPk1vcm5pbmcgc2Vzc2lvbjwvc21hbGw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPjk6MDBhbeKAkzEyOjMwcG08L3N0cm9uZz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im5zLWxpdmUtdHJhaW5pbmdfX2F1ZGllbmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgT3BlbiB0byBldmVyeW9uZQogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJucy1saXZlLXRyYWluaW5nX19zZXNzaW9uLWNvbnRlbnQiPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJucy1saXZlLXRyYWluaW5nX19zZXNzaW9uLWhlYWRpbmciPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im5zLWxpdmUtdHJhaW5pbmdfX251bWJlciI+MDE8L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+TmV1cm9kaXZlcnNpdHkgRm91bmRhdGlvbnM8L2gzPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIHByYWN0aWNhbCBpbnRyb2R1Y3Rpb24gZGVzaWduZWQgZm9yIGVtcGxveWVlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhSIHByb2Zlc3Npb25hbHMsIGJ1c2luZXNzIG93bmVycyBhbmQgYW55b25lIHdobwogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FudHMgdG8gYmV0dGVyIHVuZGVyc3RhbmQgbmV1cm9kaXZlcnNpdHkuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5zLWxpdmUtdHJhaW5pbmdfX3RvcGljcyI+CgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibnMtbGl2ZS10cmFpbmluZ19fdG9waWNzLXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoYXQgdGhlIHNlc3Npb24gZXhwbG9yZXMKICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQgMTAuNWwzLjUgMy41TDE2IDYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdoYXQgbmV1cm9kaXZlcnNpdHkgbWVhbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQgMTAuNWwzLjUgMy41TDE2IDYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbiBuZXVyb2RpdmVyZ2VudCBjb25kaXRpb25zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDIwIDIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik00IDEwLjVsMy41IDMuNUwxNiA2Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmFjdGljYWwgd29ya3BsYWNlIHN1cHBvcnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQgMTAuNWwzLjUgMy41TDE2IDYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVxdWFsaXR5IEFjdCByZXNwb25zaWJpbGl0aWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8Zm9vdGVyIGNsYXNzPSJucy1saXZlLXRyYWluaW5nX19zZXNzaW9uLWZvb3RlciI+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5zLWxpdmUtdHJhaW5pbmdfX3ByaWNlIj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD5Nb3JuaW5nIHRpY2tldDwvc21hbGw+CgogICAgICAgICAgICAgICAgICAgICAgICA8c3Ryb25nPsKjOTk8L3N0cm9uZz4KCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJucy1saXZlLXRyYWluaW5nX19idXR0b24iCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vdGlja2V0cy5uZXVyb3NwYXJrc29sdXRpb25zLmNvbS8iCiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD0iX2JsYW5rIgogICAgICAgICAgICAgICAgICAgICAgICByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBWaWV3IG1vcm5pbmcgdGlja2V0cwoKICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01IDEyaDE0TTEzIDZsNiA2LTYgNiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgPC9mb290ZXI+CgogICAgICAgICAgICA8L2FydGljbGU+CgogICAgICAgICAgICA8IS0tIEFGVEVSTk9PTiBTRVNTSU9OIC0tPgoKICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9Im5zLWxpdmUtdHJhaW5pbmdfX3Nlc3Npb24gbnMtbGl2ZS10cmFpbmluZ19fc2Vzc2lvbi0tYWZ0ZXJub29uIj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJucy1saXZlLXRyYWluaW5nX19zZXNzaW9uLXRvcCI+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5zLWxpdmUtdHJhaW5pbmdfX3RpbWUiPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im5zLWxpdmUtdHJhaW5pbmdfX3RpbWUtaWNvbiIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjkiPjwvY2lyY2xlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMiA3djVsMyAyIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+QWZ0ZXJub29uIHNlc3Npb248L3NtYWxsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz4xOjMwcG3igJM0OjAwcG08L3N0cm9uZz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im5zLWxpdmUtdHJhaW5pbmdfX2F1ZGllbmNlIj4KICAgICAgICAgICAgICAgICAgICAgICAgTWFuYWdlcnMgYW5kIEhSCiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgoKICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5zLWxpdmUtdHJhaW5pbmdfX3Nlc3Npb24tY29udGVudCI+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5zLWxpdmUtdHJhaW5pbmdfX3Nlc3Npb24taGVhZGluZyI+CgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibnMtbGl2ZS10cmFpbmluZ19fbnVtYmVyIj4wMjwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxoMz5OZXVyb2RpdmVyc2l0eSBmb3IgUGVvcGxlIE1hbmFnZXJzPC9oMz4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgQSBmb2N1c2VkIHNlc3Npb24gZm9yIG1hbmFnZXJzIGFuZCBIUiBwcm9mZXNzaW9uYWxzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aG8gd2FudCB0byBsZWFkIGNvbmZpZGVudGx5LCBtYWtlIGVmZmVjdGl2ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRqdXN0bWVudHMgYW5kIHN1cHBvcnQgbmV1cm9kaXZlcmdlbnQgdGVhbSBtZW1iZXJzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJucy1saXZlLXRyYWluaW5nX190b3BpY3MiPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Im5zLWxpdmUtdHJhaW5pbmdfX3RvcGljcy10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaGF0IHRoZSBzZXNzaW9uIGV4cGxvcmVzCiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDIwIDIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik00IDEwLjVsMy41IDMuNUwxNiA2Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWNvZ25pc2luZyB3aGVuIHN1cHBvcnQgaXMgbmVlZGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDIwIDIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik00IDEwLjVsMy41IDMuNUwxNiA2Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCZXR0ZXIgd29ya3BsYWNlIGNvbnZlcnNhdGlvbnMKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQgMTAuNWwzLjUgMy41TDE2IDYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYXNvbmFibGUgYWRqdXN0bWVudHMgdGhhdCB3b3JrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDIwIDIwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik00IDEwLjVsMy41IDMuNUwxNiA2Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWlyIGFuZCBpbmNsdXNpdmUgbWFuYWdlbWVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGZvb3RlciBjbGFzcz0ibnMtbGl2ZS10cmFpbmluZ19fc2Vzc2lvbi1mb290ZXIiPgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJucy1saXZlLXRyYWluaW5nX19wcmljZSI+CgogICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+RnVsbC1kYXkgdGlja2V0PC9zbWFsbD4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+wqMxNzU8L3N0cm9uZz4KCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJucy1saXZlLXRyYWluaW5nX19idXR0b24iCiAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9Imh0dHBzOi8vdGlja2V0cy5uZXVyb3NwYXJrc29sdXRpb25zLmNvbS8iCiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldD0iX2JsYW5rIgogICAgICAgICAgICAgICAgICAgICAgICByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiCiAgICAgICAgICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgICAgICAgICBWaWV3IGZ1bGwtZGF5IHRpY2tldHMKCiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNSAxMmgxNE0xMyA2bDYgNi02IDYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgIDwvZm9vdGVyPgoKICAgICAgICAgICAgPC9hcnRpY2xlPgoKICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGZvb3RlciBjbGFzcz0ibnMtbGl2ZS10cmFpbmluZ19fZm9vdGVyIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5zLWxpdmUtdHJhaW5pbmdfX2Zvb3Rlci1pY29uIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CgogICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgNDggNDgiPgoKICAgICAgICAgICAgICAgICAgICA8ZGVmcz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmVhckdyYWRpZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD0ibnMtdHJhaW5pbmctZm9vdGVyLWdyYWRpZW50IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgeDE9IjAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5MT0iMCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgyPSIxIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgeTI9IjEiCiAgICAgICAgICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iMCUiIHN0b3AtY29sb3I9IiNmNmVjZTAiPjwvc3RvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdG9wIG9mZnNldD0iNTAlIiBzdG9wLWNvbG9yPSIjY2E4ZmVkIj48L3N0b3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3RvcCBvZmZzZXQ9IjEwMCUiIHN0b3AtY29sb3I9IiM4MzUwYjAiPjwvc3RvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saW5lYXJHcmFkaWVudD4KICAgICAgICAgICAgICAgICAgICA8L2RlZnM+CgogICAgICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgICAgIGQ9Ik0xMCAxMWgyOHYyNUgxMHoiCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9Im5vbmUiCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT0idXJsKCNucy10cmFpbmluZy1mb290ZXItZ3JhZGllbnQpIgogICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9IjMiCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lam9pbj0icm91bmQiCiAgICAgICAgICAgICAgICAgICAgPjwvcGF0aD4KCiAgICAgICAgICAgICAgICAgICAgPHBhdGgKICAgICAgICAgICAgICAgICAgICAgICAgZD0iTTE2IDd2OE0zMiA3djhNMTAgMTloMjgiCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9Im5vbmUiCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT0idXJsKCNucy10cmFpbmluZy1mb290ZXItZ3JhZGllbnQpIgogICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9IjMiCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICAgICAgICAgICAgICAgICAgICA+PC9wYXRoPgoKICAgICAgICAgICAgICAgICAgICA8cGF0aAogICAgICAgICAgICAgICAgICAgICAgICBkPSJNMTggMjZoNE0yNiAyNmg0TTE4IDMxaDQiCiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGw9Im5vbmUiCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT0idXJsKCNucy10cmFpbmluZy1mb290ZXItZ3JhZGllbnQpIgogICAgICAgICAgICAgICAgICAgICAgICBzdHJva2Utd2lkdGg9IjMiCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICAgICAgICAgICAgICAgICAgICA+PC9wYXRoPgoKICAgICAgICAgICAgICAgIDwvc3ZnPgoKICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJucy1saXZlLXRyYWluaW5nX19mb290ZXItY29weSI+CgogICAgICAgICAgICAgICAgPHN0cm9uZz5DaG9vc2UgdGhlIHNlc3Npb24gdGhhdCBpcyByaWdodCBmb3IgeW91Ljwvc3Ryb25nPgoKICAgICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgICAgIEJvb2sgdGhlIG1vcm5pbmcgZm91bmRhdGlvbnMgc2Vzc2lvbiBvciBhdHRlbmQgdGhlIGNvbXBsZXRlCiAgICAgICAgICAgICAgICAgICAgdHJhaW5pbmcgZGF5IHdpdGggdGhlIHBlb3BsZS1tYW5hZ2VyIHNlc3Npb24gaW5jbHVkZWQuCiAgICAgICAgICAgICAgICA8L3NwYW4+CgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBjbGFzcz0ibnMtbGl2ZS10cmFpbmluZ19fZm9vdGVyLWxpbmsiCiAgICAgICAgICAgICAgICBocmVmPSJodHRwczovL3RpY2tldHMubmV1cm9zcGFya3NvbHV0aW9ucy5jb20vIgogICAgICAgICAgICAgICAgdGFyZ2V0PSJfYmxhbmsiCiAgICAgICAgICAgICAgICByZWw9Im5vb3BlbmVyIG5vcmVmZXJyZXIiCiAgICAgICAgICAgID4KICAgICAgICAgICAgICAgIFZpZXcgYWxsIHRpY2tldHMKCiAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01IDEyaDE0TTEzIDZsNiA2LTYgNiI+PC9wYXRoPgogICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgIDwvYT4KCiAgICAgICAgPC9mb290ZXI+CgogICAgPC9kaXY+Cgo8L3NlY3Rpb24+Cgo8c3R5bGU+CiAgICAubnMtbGl2ZS10cmFpbmluZywKICAgIC5ucy1saXZlLXRyYWluaW5nICogewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICB9CgogICAgLm5zLWxpdmUtdHJhaW5pbmcgewogICAgICAgIC0tbnMtcHVycGxlOiAjNDIzMjYxOwogICAgICAgIC0tbnMtcHVycGxlLWRhcms6ICMyZTIxNDc7CiAgICAgICAgLS1ucy1wdXJwbGUtZGVlcDogIzFiMTIzMjsKICAgICAgICAtLW5zLWxpbGFjOiAjY2E4ZmVkOwogICAgICAgIC0tbnMtbGlsYWMtbGlnaHQ6ICNlYWQwZjk7CiAgICAgICAgLS1ucy1jcmVhbTogI2Y2ZWNlMDsKICAgICAgICAtLW5zLWNyZWFtLWxpZ2h0OiAjZmNmOGYzOwogICAgICAgIC0tbnMtd2hpdGU6ICNmZmZmZmY7CiAgICAgICAgLS1ucy10ZXh0OiAjNGI0MDU1OwogICAgICAgIC0tbnMtbXV0ZWQ6ICM3NTZiN2M7CiAgICAgICAgLS1ucy1saW5lOiByZ2JhKDY2LCA1MCwgOTcsIDAuMTUpOwoKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBwYWRkaW5nOiBjbGFtcCg3MnB4LCA4dncsIDExOHB4KSAyNHB4OwogICAgICAgIGJhY2tncm91bmQ6CiAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudCgKICAgICAgICAgICAgICAgIGNpcmNsZSBhdCA5NiUgNiUsCiAgICAgICAgICAgICAgICByZ2JhKDIwMiwgMTQzLCAyMzcsIDAuMTYpLAogICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgMjclCiAgICAgICAgICAgICksCiAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgKICAgICAgICAgICAgICAgIDE4MGRlZywKICAgICAgICAgICAgICAgIHZhcigtLW5zLWNyZWFtLWxpZ2h0KSAwJSwKICAgICAgICAgICAgICAgIHZhcigtLW5zLWNyZWFtKSAxMDAlCiAgICAgICAgICAgICk7CiAgICAgICAgY29sb3I6IHZhcigtLW5zLXRleHQpOwogICAgICAgIGZvbnQtZmFtaWx5OiAiTGF0byIsIEFyaWFsLCBzYW5zLXNlcmlmOwogICAgfQoKICAgIC5ucy1saXZlLXRyYWluaW5nX19pbm5lciB7CiAgICAgICAgd2lkdGg6IG1pbigxMjIwcHgsIDEwMCUpOwogICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgfQoKICAgIC5ucy1saXZlLXRyYWluaW5nX19oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMS4xZnIpIG1pbm1heCgzMDBweCwgMC42NWZyKTsKICAgICAgICBnYXA6IGNsYW1wKDM2cHgsIDd2dywgOTZweCk7CiAgICAgICAgYWxpZ24taXRlbXM6IGVuZDsKICAgICAgICBtYXJnaW4tYm90dG9tOiBjbGFtcCg0MnB4LCA2dncsIDY4cHgpOwogICAgfQoKICAgIC5ucy1saXZlLXRyYWluaW5nX19leWVicm93IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGdhcDogMTFweDsKICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1wdXJwbGUpOwogICAgICAgIGZvbnQtc2l6ZTogMTNweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjI7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMTNlbTsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgfQoKICAgIC5ucy1saXZlLXRyYWluaW5nX19leWVicm93LWljb24gewogICAgICAgIHdpZHRoOiAzMnB4OwogICAgICAgIGhlaWdodDogMzJweDsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg2NiwgNTAsIDk3LCAwLjIyKTsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyMDIsIDE0MywgMjM3LCAwLjE4KTsKICAgIH0KCiAgICAubnMtbGl2ZS10cmFpbmluZ19fZXllYnJvdy1pY29uIHN2ZyB7CiAgICAgICAgd2lkdGg6IDE3cHg7CiAgICAgICAgaGVpZ2h0OiAxN3B4OwogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiBjdXJyZW50Q29sb3I7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAxLjg7CiAgICAgICAgc3Ryb2tlLWxpbmVjYXA6IHJvdW5kOwogICAgICAgIHN0cm9rZS1saW5lam9pbjogcm91bmQ7CiAgICB9CgogICAgLm5zLWxpdmUtdHJhaW5pbmdfX2ludHJvIGgyIHsKICAgICAgICBtYXgtd2lkdGg6IDc2MHB4OwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBjb2xvcjogdmFyKC0tbnMtcHVycGxlKTsKICAgICAgICBmb250LWZhbWlseTogIkFudG9uIiwgSW1wYWN0LCBzYW5zLXNlcmlmOwogICAgICAgIGZvbnQtc2l6ZTogY2xhbXAoNDlweCwgNnZ3LCA3OHB4KTsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAwLjk5OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICB9CgogICAgLm5zLWxpdmUtdHJhaW5pbmdfX2ludHJvIGgyIHNwYW4gewogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1saWxhYyk7CiAgICB9CgogICAgLm5zLWxpdmUtdHJhaW5pbmdfX3N1bW1hcnkgewogICAgICAgIHBhZGRpbmctbGVmdDogMjZweDsKICAgICAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkIHZhcigtLW5zLWxpbGFjKTsKICAgIH0KCiAgICAubnMtbGl2ZS10cmFpbmluZ19fc3VtbWFyeSBwIHsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgY29sb3I6IHZhcigtLW5zLXRleHQpOwogICAgICAgIGZvbnQtc2l6ZTogMTdweDsKICAgICAgICBsaW5lLWhlaWdodDogMS42NTsKICAgIH0KCiAgICAubnMtbGl2ZS10cmFpbmluZ19fbG9jYXRpb24gewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDlweDsKICAgICAgICBtYXJnaW4tdG9wOiAxOXB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1wdXJwbGUpOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgfQoKICAgIC5ucy1saXZlLXRyYWluaW5nX19sb2NhdGlvbiBzcGFuIHsKICAgICAgICB3aWR0aDogMjhweDsKICAgICAgICBoZWlnaHQ6IDI4cHg7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ucy1wdXJwbGUpOwogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1jcmVhbSk7CiAgICB9CgogICAgLm5zLWxpdmUtdHJhaW5pbmdfX2xvY2F0aW9uIHN2ZyB7CiAgICAgICAgd2lkdGg6IDE1cHg7CiAgICAgICAgaGVpZ2h0OiAxNXB4OwogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiBjdXJyZW50Q29sb3I7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAxLjg7CiAgICAgICAgc3Ryb2tlLWxpbmVjYXA6IHJvdW5kOwogICAgICAgIHN0cm9rZS1saW5lam9pbjogcm91bmQ7CiAgICB9CgogICAgLm5zLWxpdmUtdHJhaW5pbmdfX3Nlc3Npb25zIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDIsIG1pbm1heCgwLCAxZnIpKTsKICAgICAgICBnYXA6IDI0cHg7CiAgICB9CgogICAgLm5zLWxpdmUtdHJhaW5pbmdfX3Nlc3Npb24gewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47CiAgICAgICAgbWluLWhlaWdodDogNjQwcHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ucy1saW5lKTsKICAgICAgICBib3JkZXItcmFkaXVzOiAyNnB4OwogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC43NCk7CiAgICAgICAgYm94LXNoYWRvdzogMCAyMnB4IDY1cHggcmdiYSg2NiwgNTAsIDk3LCAwLjA5KTsKICAgICAgICB0cmFuc2l0aW9uOgogICAgICAgICAgICB0cmFuc2Zvcm0gMjYwbXMgZWFzZSwKICAgICAgICAgICAgYm9yZGVyLWNvbG9yIDI2MG1zIGVhc2UsCiAgICAgICAgICAgIGJveC1zaGFkb3cgMjYwbXMgZWFzZTsKICAgIH0KCiAgICAubnMtbGl2ZS10cmFpbmluZ19fc2Vzc2lvbjo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAiIjsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgd2lkdGg6IDIxMHB4OwogICAgICAgIGhlaWdodDogMjEwcHg7CiAgICAgICAgdG9wOiAtMTI1cHg7CiAgICAgICAgcmlnaHQ6IC05MHB4OwogICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDIwMiwgMTQzLCAyMzcsIDAuMTYpOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSA1MDBtcyBlYXNlOwogICAgfQoKICAgIC5ucy1saXZlLXRyYWluaW5nX19zZXNzaW9uOjphZnRlciB7CiAgICAgICAgY29udGVudDogIiI7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIGhlaWdodDogNHB4OwogICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgKICAgICAgICAgICAgOTBkZWcsCiAgICAgICAgICAgIHRyYW5zcGFyZW50LAogICAgICAgICAgICB2YXIoLS1ucy1saWxhYyksCiAgICAgICAgICAgIHZhcigtLW5zLXB1cnBsZSksCiAgICAgICAgICAgIHRyYW5zcGFyZW50CiAgICAgICAgKTsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgwLjI0KTsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0OwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSA0NTBtcyBlYXNlOwogICAgfQoKICAgIC5ucy1saXZlLXRyYWluaW5nX19zZXNzaW9uOmhvdmVyIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLThweCk7CiAgICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDIwMiwgMTQzLCAyMzcsIDAuNjgpOwogICAgICAgIGJveC1zaGFkb3c6IDAgMzBweCA4MHB4IHJnYmEoNjYsIDUwLCA5NywgMC4xNik7CiAgICB9CgogICAgLm5zLWxpdmUtdHJhaW5pbmdfX3Nlc3Npb246aG92ZXI6OmJlZm9yZSB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIyKSB0cmFuc2xhdGUoLTEwcHgsIDEycHgpOwogICAgfQoKICAgIC5ucy1saXZlLXRyYWluaW5nX19zZXNzaW9uOmhvdmVyOjphZnRlciB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMSk7CiAgICB9CgogICAgLm5zLWxpdmUtdHJhaW5pbmdfX3Nlc3Npb24tLWFmdGVybm9vbiB7CiAgICAgICAgYmFja2dyb3VuZDoKICAgICAgICAgICAgbGluZWFyLWdyYWRpZW50KAogICAgICAgICAgICAgICAgMTQ1ZGVnLAogICAgICAgICAgICAgICAgcmdiYSgyMDIsIDE0MywgMjM3LCAwLjEyKSwKICAgICAgICAgICAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC44MikKICAgICAgICAgICAgKTsKICAgIH0KCiAgICAubnMtbGl2ZS10cmFpbmluZ19fc2Vzc2lvbi10b3AgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB6LWluZGV4OiAyOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgZ2FwOiAxNnB4OwogICAgICAgIHBhZGRpbmc6IDI0cHggMjZweDsKICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tbnMtbGluZSk7CiAgICB9CgogICAgLm5zLWxpdmUtdHJhaW5pbmdfX3RpbWUgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBnYXA6IDEycHg7CiAgICB9CgogICAgLm5zLWxpdmUtdHJhaW5pbmdfX3RpbWUtaWNvbiB7CiAgICAgICAgd2lkdGg6IDQ0cHg7CiAgICAgICAgaGVpZ2h0OiA0NHB4OwogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZmxleDogMCAwIDQ0cHg7CiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIwMiwgMTQzLCAyMzcsIDAuNCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMTRweDsKICAgICAgICBiYWNrZ3JvdW5kOgogICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoCiAgICAgICAgICAgICAgICAxNDVkZWcsCiAgICAgICAgICAgICAgICByZ2JhKDIwMiwgMTQzLCAyMzcsIDAuMjQpLAogICAgICAgICAgICAgICAgcmdiYSgyNDYsIDIzNiwgMjI0LCAwLjc1KQogICAgICAgICAgICApOwogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1wdXJwbGUpOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAzMDBtcyBlYXNlOwogICAgfQoKICAgIC5ucy1saXZlLXRyYWluaW5nX19zZXNzaW9uOmhvdmVyIC5ucy1saXZlLXRyYWluaW5nX190aW1lLWljb24gewogICAgICAgIHRyYW5zZm9ybTogcm90YXRlKC01ZGVnKSBzY2FsZSgxLjA2KTsKICAgIH0KCiAgICAubnMtbGl2ZS10cmFpbmluZ19fdGltZS1pY29uIHN2ZyB7CiAgICAgICAgd2lkdGg6IDIzcHg7CiAgICAgICAgaGVpZ2h0OiAyM3B4OwogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiBjdXJyZW50Q29sb3I7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAxLjg7CiAgICAgICAgc3Ryb2tlLWxpbmVjYXA6IHJvdW5kOwogICAgICAgIHN0cm9rZS1saW5lam9pbjogcm91bmQ7CiAgICB9CgogICAgLm5zLWxpdmUtdHJhaW5pbmdfX3RpbWUgc21hbGwgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG1hcmdpbi1ib3R0b206IDNweDsKICAgICAgICBjb2xvcjogdmFyKC0tbnMtbXV0ZWQpOwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjEyZW07CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIH0KCiAgICAubnMtbGl2ZS10cmFpbmluZ19fdGltZSBzdHJvbmcgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1wdXJwbGUpOwogICAgICAgIGZvbnQtc2l6ZTogMTVweDsKICAgIH0KCiAgICAubnMtbGl2ZS10cmFpbmluZ19fYXVkaWVuY2UgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgbWluLWhlaWdodDogMzFweDsKICAgICAgICBwYWRkaW5nOiA3cHggMTJweDsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDY2LCA1MCwgOTcsIDAuMTYpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4OwogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjAyLCAxNDMsIDIzNywgMC4xMik7CiAgICAgICAgY29sb3I6IHZhcigtLW5zLXB1cnBsZSk7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtOwogICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgfQoKICAgIC5ucy1saXZlLXRyYWluaW5nX19zZXNzaW9uLWNvbnRlbnQgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB6LWluZGV4OiAyOwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgcGFkZGluZzogY2xhbXAoMjdweCwgNHZ3LCAzOHB4KTsKICAgIH0KCiAgICAubnMtbGl2ZS10cmFpbmluZ19fbnVtYmVyIHsKICAgICAgICBjb2xvcjogdmFyKC0tbnMtbGlsYWMpOwogICAgICAgIGZvbnQtZmFtaWx5OiAiQW50b24iLCBJbXBhY3QsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjFlbTsKICAgIH0KCiAgICAubnMtbGl2ZS10cmFpbmluZ19fc2Vzc2lvbi1oZWFkaW5nIGgzIHsKICAgICAgICBtYXJnaW46IDExcHggMCAwOwogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1wdXJwbGUpOwogICAgICAgIGZvbnQtZmFtaWx5OiAiQW50b24iLCBJbXBhY3QsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgzMXB4LCA0dncsIDQ1cHgpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMDM7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIH0KCiAgICAubnMtbGl2ZS10cmFpbmluZ19fc2Vzc2lvbi1oZWFkaW5nIHAgewogICAgICAgIG1hcmdpbjogMThweCAwIDA7CiAgICAgICAgY29sb3I6IHZhcigtLW5zLXRleHQpOwogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICBsaW5lLWhlaWdodDogMS42NTsKICAgIH0KCiAgICAubnMtbGl2ZS10cmFpbmluZ19fdG9waWNzIHsKICAgICAgICBtYXJnaW4tdG9wOiAzMHB4OwogICAgICAgIHBhZGRpbmctdG9wOiAyN3B4OwogICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCB2YXIoLS1ucy1saW5lKTsKICAgIH0KCiAgICAubnMtbGl2ZS10cmFpbmluZ19fdG9waWNzLXRpdGxlIHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKICAgICAgICBtYXJnaW4tYm90dG9tOiAxN3B4OwogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1wdXJwbGUpOwogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjEyZW07CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIH0KCiAgICAubnMtbGl2ZS10cmFpbmluZ19fdG9waWNzIHVsIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdhcDogMTNweDsKICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgcGFkZGluZzogMDsKICAgICAgICBsaXN0LXN0eWxlOiBub25lOwogICAgfQoKICAgIC5ucy1saXZlLXRyYWluaW5nX190b3BpY3MgbGkgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICAgICAgZ2FwOiAxMHB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1ucy10ZXh0KTsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICBsaW5lLWhlaWdodDogMS40OwogICAgfQoKICAgIC5ucy1saXZlLXRyYWluaW5nX190b3BpY3MgbGkgc3BhbiB7CiAgICAgICAgd2lkdGg6IDIxcHg7CiAgICAgICAgaGVpZ2h0OiAyMXB4OwogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZmxleDogMCAwIDIxcHg7CiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjsKICAgICAgICBtYXJnaW4tdG9wOiAxcHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLW5zLWxpbGFjLWxpZ2h0KTsKICAgICAgICBjb2xvcjogdmFyKC0tbnMtcHVycGxlKTsKICAgIH0KCiAgICAubnMtbGl2ZS10cmFpbmluZ19fdG9waWNzIGxpIHN2ZyB7CiAgICAgICAgd2lkdGg6IDEycHg7CiAgICAgICAgaGVpZ2h0OiAxMnB4OwogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiBjdXJyZW50Q29sb3I7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAyOwogICAgICAgIHN0cm9rZS1saW5lY2FwOiByb3VuZDsKICAgICAgICBzdHJva2UtbGluZWpvaW46IHJvdW5kOwogICAgfQoKICAgIC5ucy1saXZlLXRyYWluaW5nX19zZXNzaW9uLWZvb3RlciB7CiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIHotaW5kZXg6IDI7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsKICAgICAgICBnYXA6IDE4cHg7CiAgICAgICAgcGFkZGluZzogMjJweCAyNnB4IDI2cHg7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLW5zLWxpbmUpOwogICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjQ2LCAyMzYsIDIyNCwgMC41KTsKICAgIH0KCiAgICAubnMtbGl2ZS10cmFpbmluZ19fcHJpY2Ugc21hbGwgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwogICAgICAgIG1hcmdpbi1ib3R0b206IDNweDsKICAgICAgICBjb2xvcjogdmFyKC0tbnMtbXV0ZWQpOwogICAgICAgIGZvbnQtc2l6ZTogMTBweDsKICAgICAgICBmb250LXdlaWdodDogNzAwOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjFlbTsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgfQoKICAgIC5ucy1saXZlLXRyYWluaW5nX19wcmljZSBzdHJvbmcgewogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1wdXJwbGUpOwogICAgICAgIGZvbnQtZmFtaWx5OiAiQW50b24iLCBJbXBhY3QsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiAzMnB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICB9CgogICAgLm5zLWxpdmUtdHJhaW5pbmdfX2J1dHRvbiwKICAgIC5ucy1saXZlLXRyYWluaW5nX19mb290ZXItbGluayB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgICAgICBnYXA6IDExcHg7CiAgICAgICAgbWluLWhlaWdodDogNDhweDsKICAgICAgICBwYWRkaW5nOiAxM3B4IDIwcHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tbnMtcHVycGxlKTsKICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbnMtcHVycGxlKTsKICAgICAgICBjb2xvcjogdmFyKC0tbnMtY3JlYW0pOwogICAgICAgIGZvbnQtZmFtaWx5OiAiQW50b24iLCBJbXBhY3QsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDFlbTsKICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgICAgICB0cmFuc2l0aW9uOgogICAgICAgICAgICB0cmFuc2Zvcm0gMjIwbXMgZWFzZSwKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciAyMjBtcyBlYXNlLAogICAgICAgICAgICBib3JkZXItY29sb3IgMjIwbXMgZWFzZSwKICAgICAgICAgICAgY29sb3IgMjIwbXMgZWFzZSwKICAgICAgICAgICAgYm94LXNoYWRvdyAyMjBtcyBlYXNlOwogICAgfQoKICAgIC5ucy1saXZlLXRyYWluaW5nX19idXR0b24gc3ZnLAogICAgLm5zLWxpdmUtdHJhaW5pbmdfX2Zvb3Rlci1saW5rIHN2ZyB7CiAgICAgICAgd2lkdGg6IDE4cHg7CiAgICAgICAgaGVpZ2h0OiAxOHB4OwogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiBjdXJyZW50Q29sb3I7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAxLjg7CiAgICAgICAgc3Ryb2tlLWxpbmVjYXA6IHJvdW5kOwogICAgICAgIHN0cm9rZS1saW5lam9pbjogcm91bmQ7CiAgICAgICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDIyMG1zIGVhc2U7CiAgICB9CgogICAgLm5zLWxpdmUtdHJhaW5pbmdfX2J1dHRvbjpob3ZlciwKICAgIC5ucy1saXZlLXRyYWluaW5nX19idXR0b246Zm9jdXMtdmlzaWJsZSwKICAgIC5ucy1saXZlLXRyYWluaW5nX19mb290ZXItbGluazpob3ZlciwKICAgIC5ucy1saXZlLXRyYWluaW5nX19mb290ZXItbGluazpmb2N1cy12aXNpYmxlIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ucy1saWxhYyk7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbnMtbGlsYWMpOwogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1wdXJwbGUtZGFyayk7CiAgICAgICAgYm94LXNoYWRvdzogMCAxNHB4IDMwcHggcmdiYSg2NiwgNTAsIDk3LCAwLjE4KTsKICAgIH0KCiAgICAubnMtbGl2ZS10cmFpbmluZ19fYnV0dG9uOmhvdmVyIHN2ZywKICAgIC5ucy1saXZlLXRyYWluaW5nX19mb290ZXItbGluazpob3ZlciBzdmcgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0cHgpOwogICAgfQoKICAgIC5ucy1saXZlLXRyYWluaW5nX19mb290ZXIgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBhdXRvIG1pbm1heCgwLCAxZnIpIGF1dG87CiAgICAgICAgZ2FwOiAyMXB4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgbWFyZ2luLXRvcDogMjRweDsKICAgICAgICBwYWRkaW5nOiAyNXB4IDI4cHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMDIsIDE0MywgMjM3LCAwLjM1KTsKICAgICAgICBib3JkZXItcmFkaXVzOiAxOHB4OwogICAgICAgIGJhY2tncm91bmQ6CiAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgKICAgICAgICAgICAgICAgIDEyMGRlZywKICAgICAgICAgICAgICAgIHZhcigtLW5zLXB1cnBsZS1kYXJrKSwKICAgICAgICAgICAgICAgIHZhcigtLW5zLXB1cnBsZSkKICAgICAgICAgICAgKTsKICAgICAgICBib3gtc2hhZG93OiAwIDIycHggNTVweCByZ2JhKDQ2LCAzMywgNzEsIDAuMTgpOwogICAgfQoKICAgIC5ucy1saXZlLXRyYWluaW5nX19mb290ZXItaWNvbiB7CiAgICAgICAgd2lkdGg6IDU4cHg7CiAgICAgICAgaGVpZ2h0OiA1OHB4OwogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIwMiwgMTQzLCAyMzcsIDAuMzUpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDE3cHg7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKICAgIH0KCiAgICAubnMtbGl2ZS10cmFpbmluZ19fZm9vdGVyLWljb24gc3ZnIHsKICAgICAgICB3aWR0aDogMzdweDsKICAgICAgICBoZWlnaHQ6IDM3cHg7CiAgICB9CgogICAgLm5zLWxpdmUtdHJhaW5pbmdfX2Zvb3Rlci1jb3B5IHN0cm9uZyB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgY29sb3I6IHZhcigtLW5zLWNyZWFtKTsKICAgICAgICBmb250LWZhbWlseTogIkFudG9uIiwgSW1wYWN0LCBzYW5zLXNlcmlmOwogICAgICAgIGZvbnQtc2l6ZTogMjNweDsKICAgICAgICBmb250LXdlaWdodDogNDAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjE7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIH0KCiAgICAubnMtbGl2ZS10cmFpbmluZ19fZm9vdGVyLWNvcHkgc3BhbiB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgbWFyZ2luLXRvcDogNXB4OwogICAgICAgIGNvbG9yOiB2YXIoLS1ucy1saWxhYy1saWdodCk7CiAgICAgICAgZm9udC1zaXplOiAxNHB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7CiAgICB9CgogICAgLm5zLWxpdmUtdHJhaW5pbmdfX2Zvb3Rlci1saW5rIHsKICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLW5zLWxpbGFjKTsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1ucy1saWxhYyk7CiAgICAgICAgY29sb3I6IHZhcigtLW5zLXB1cnBsZS1kYXJrKTsKICAgIH0KCiAgICAubnMtbGl2ZS10cmFpbmluZ19fZm9vdGVyLWxpbms6aG92ZXIsCiAgICAubnMtbGl2ZS10cmFpbmluZ19fZm9vdGVyLWxpbms6Zm9jdXMtdmlzaWJsZSB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ucy1jcmVhbSk7CiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbnMtY3JlYW0pOwogICAgfQoKICAgIEBtZWRpYSAobWF4LXdpZHRoOiA5ODBweCkgewogICAgICAgIC5ucy1saXZlLXRyYWluaW5nX19oZWFkZXIgewogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKICAgICAgICB9CgogICAgICAgIC5ucy1saXZlLXRyYWluaW5nX19zdW1tYXJ5IHsKICAgICAgICAgICAgbWF4LXdpZHRoOiA3MDBweDsKICAgICAgICB9CgogICAgICAgIC5ucy1saXZlLXRyYWluaW5nX19zZXNzaW9ucyB7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICAgIH0KCiAgICAgICAgLm5zLWxpdmUtdHJhaW5pbmdfX3Nlc3Npb24gewogICAgICAgICAgICBtaW4taGVpZ2h0OiAwOwogICAgICAgIH0KICAgIH0KCiAgICBAbWVkaWEgKG1heC13aWR0aDogNjgwcHgpIHsKICAgICAgICAubnMtbGl2ZS10cmFpbmluZyB7CiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IDE2cHg7CiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogMTZweDsKICAgICAgICB9CgogICAgICAgIC5ucy1saXZlLXRyYWluaW5nX19zdW1tYXJ5IHsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxOHB4OwogICAgICAgIH0KCiAgICAgICAgLm5zLWxpdmUtdHJhaW5pbmdfX3Nlc3Npb24gewogICAgICAgICAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgICAgIH0KCiAgICAgICAgLm5zLWxpdmUtdHJhaW5pbmdfX3Nlc3Npb24tdG9wIHsKICAgICAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHg7CiAgICAgICAgfQoKICAgICAgICAubnMtbGl2ZS10cmFpbmluZ19fYXVkaWVuY2UgewogICAgICAgICAgICBtYXgtd2lkdGg6IDExOHB4OwogICAgICAgIH0KCiAgICAgICAgLm5zLWxpdmUtdHJhaW5pbmdfX3Nlc3Npb24tY29udGVudCB7CiAgICAgICAgICAgIHBhZGRpbmc6IDI2cHggMjFweDsKICAgICAgICB9CgogICAgICAgIC5ucy1saXZlLXRyYWluaW5nX19zZXNzaW9uLWZvb3RlciB7CiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBzdHJldGNoOwogICAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgICAgICBwYWRkaW5nOiAyMHB4OwogICAgICAgIH0KCiAgICAgICAgLm5zLWxpdmUtdHJhaW5pbmdfX2J1dHRvbiB7CiAgICAgICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIH0KCiAgICAgICAgLm5zLWxpdmUtdHJhaW5pbmdfX2Zvb3RlciB7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICAgICAgICBwYWRkaW5nOiAyNHB4OwogICAgICAgIH0KCiAgICAgICAgLm5zLWxpdmUtdHJhaW5pbmdfX2Zvb3Rlci1saW5rIHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgfQogICAgfQoKICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CiAgICAgICAgLm5zLWxpdmUtdHJhaW5pbmcgKiwKICAgICAgICAubnMtbGl2ZS10cmFpbmluZyAqOjpiZWZvcmUsCiAgICAgICAgLm5zLWxpdmUtdHJhaW5pbmcgKjo6YWZ0ZXIgewogICAgICAgICAgICBzY3JvbGwtYmVoYXZpb3I6IGF1dG8gIWltcG9ydGFudDsKICAgICAgICAgICAgdHJhbnNpdGlvbi1kdXJhdGlvbjogMC4wMW1zICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMC4wMW1zICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIGFuaW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDEgIWltcG9ydGFudDsKICAgICAgICB9CiAgICB9Cjwvc3R5bGU+[/fusion_code][fusion_code]PHNlY3Rpb24KICAgIGNsYXNzPSJ3b3JrcGxhY2UtYmFubmVyIgogICAgYXJpYS1sYWJlbGxlZGJ5PSJ3b3JrcGxhY2UtYmFubmVyLXRpdGxlIgo+CiAgICA8ZGl2CiAgICAgICAgY2xhc3M9IndvcmtwbGFjZS1iYW5uZXJfX3BhdHRlcm4iCiAgICAgICAgYXJpYS1oaWRkZW49InRydWUiCiAgICA+CiAgICAgICAgPHN2ZwogICAgICAgICAgICB2aWV3Qm94PSIwIDAgOTAwIDM2MCIKICAgICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0ibm9uZSIKICAgICAgICA+CiAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICBkPSJNLTQwIDI4NUM5MSAxOTcgMTY3IDMzNyAyOTIgMjQ5QzQwMyAxNzEgNDQ4IDQ0IDU5NiA5MUM3MDQgMTI1IDczNyAyNDAgOTQxIDEzNCIKICAgICAgICAgICAgPjwvcGF0aD4KCiAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICBkPSJNLTc1IDEyNkM4MyA0MyAxNjEgMTU4IDI3NSAxMTNDNDE3IDU3IDQ1NSAyMTggNjAyIDE5MEM3MzEgMTY2IDc5OCA1MiA5NjkgNzQiCiAgICAgICAgICAgID48L3BhdGg+CgogICAgICAgICAgICA8Y2lyY2xlIGN4PSIxMzIiIGN5PSI5NSIgcj0iNSI+PC9jaXJjbGU+CiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjI4NSIgY3k9IjI0OSIgcj0iNSI+PC9jaXJjbGU+CiAgICAgICAgICAgIDxjaXJjbGUgY3g9IjU5OCIgY3k9IjkyIiByPSI1Ij48L2NpcmNsZT4KICAgICAgICAgICAgPGNpcmNsZSBjeD0iNzU1IiBjeT0iMjIxIiByPSI1Ij48L2NpcmNsZT4KICAgICAgICA8L3N2Zz4KICAgIDwvZGl2PgoKICAgIDxzcGFuCiAgICAgICAgY2xhc3M9IndvcmtwbGFjZS1iYW5uZXJfX3Jpbmcgd29ya3BsYWNlLWJhbm5lcl9fcmluZy0tbGFyZ2UiCiAgICAgICAgYXJpYS1oaWRkZW49InRydWUiCiAgICA+PC9zcGFuPgoKICAgIDxzcGFuCiAgICAgICAgY2xhc3M9IndvcmtwbGFjZS1iYW5uZXJfX3Jpbmcgd29ya3BsYWNlLWJhbm5lcl9fcmluZy0tc21hbGwiCiAgICAgICAgYXJpYS1oaWRkZW49InRydWUiCiAgICA+PC9zcGFuPgoKICAgIDxkaXYgY2xhc3M9IndvcmtwbGFjZS1iYW5uZXJfX2lubmVyIj4KCiAgICAgICAgPGRpdgogICAgICAgICAgICBjbGFzcz0id29ya3BsYWNlLWJhbm5lcl9fbWFyayIKICAgICAgICAgICAgYXJpYS1oaWRkZW49InRydWUiCiAgICAgICAgPgogICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCA2NCA2NCI+CiAgICAgICAgICAgICAgICA8ZGVmcz4KICAgICAgICAgICAgICAgICAgICA8bGluZWFyR3JhZGllbnQKICAgICAgICAgICAgICAgICAgICAgICAgaWQ9IndvcmtwbGFjZS1tYXJrLWdyYWRpZW50IgogICAgICAgICAgICAgICAgICAgICAgICB4MT0iMCIKICAgICAgICAgICAgICAgICAgICAgICAgeTE9IjAiCiAgICAgICAgICAgICAgICAgICAgICAgIHgyPSIxIgogICAgICAgICAgICAgICAgICAgICAgICB5Mj0iMSIKICAgICAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdG9wCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9IjAlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcC1jb2xvcj0iI2Y2ZWNlMCIKICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3RvcD4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxzdG9wCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQ9IjU0JSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AtY29sb3I9IiNjYThmZWQiCiAgICAgICAgICAgICAgICAgICAgICAgID48L3N0b3A+CgogICAgICAgICAgICAgICAgICAgICAgICA8c3RvcAogICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0PSIxMDAlIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RvcC1jb2xvcj0iIzhkNGZjMCIKICAgICAgICAgICAgICAgICAgICAgICAgPjwvc3RvcD4KICAgICAgICAgICAgICAgICAgICA8L2xpbmVhckdyYWRpZW50PgogICAgICAgICAgICAgICAgPC9kZWZzPgoKICAgICAgICAgICAgICAgIDxyZWN0CiAgICAgICAgICAgICAgICAgICAgeD0iOCIKICAgICAgICAgICAgICAgICAgICB5PSIxMCIKICAgICAgICAgICAgICAgICAgICB3aWR0aD0iNDgiCiAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIzNSIKICAgICAgICAgICAgICAgICAgICByeD0iNiIKICAgICAgICAgICAgICAgICAgICBmaWxsPSJub25lIgogICAgICAgICAgICAgICAgICAgIHN0cm9rZT0idXJsKCN3b3JrcGxhY2UtbWFyay1ncmFkaWVudCkiCiAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLXdpZHRoPSIzLjUiCiAgICAgICAgICAgICAgICA+PC9yZWN0PgoKICAgICAgICAgICAgICAgIDxwYXRoCiAgICAgICAgICAgICAgICAgICAgZD0iTTE4IDIxaDI4TTE4IDI5aDE4TTI1IDUzaDE0TTMyIDQ1djgiCiAgICAgICAgICAgICAgICAgICAgZmlsbD0ibm9uZSIKICAgICAgICAgICAgICAgICAgICBzdHJva2U9InVybCgjd29ya3BsYWNlLW1hcmstZ3JhZGllbnQpIgogICAgICAgICAgICAgICAgICAgIHN0cm9rZS13aWR0aD0iMy41IgogICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIKICAgICAgICAgICAgICAgID48L3BhdGg+CgogICAgICAgICAgICAgICAgPGNpcmNsZQogICAgICAgICAgICAgICAgICAgIGN4PSI0NSIKICAgICAgICAgICAgICAgICAgICBjeT0iMzEiCiAgICAgICAgICAgICAgICAgICAgcj0iNSIKICAgICAgICAgICAgICAgICAgICBmaWxsPSJ1cmwoI3dvcmtwbGFjZS1tYXJrLWdyYWRpZW50KSIKICAgICAgICAgICAgICAgID48L2NpcmNsZT4KICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IndvcmtwbGFjZS1iYW5uZXJfX2NvbnRlbnQiPgoKICAgICAgICAgICAgPHNwYW4gY2xhc3M9IndvcmtwbGFjZS1iYW5uZXJfX2xhYmVsIj4KICAgICAgICAgICAgICAgIFdvcmtwbGFjZSB0cmFpbmluZwogICAgICAgICAgICA8L3NwYW4+CgogICAgICAgICAgICA8aDIKICAgICAgICAgICAgICAgIGlkPSJ3b3JrcGxhY2UtYmFubmVyLXRpdGxlIgogICAgICAgICAgICAgICAgY2xhc3M9IndvcmtwbGFjZS1iYW5uZXJfX3RpdGxlIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgICBCdWlsZCBhIHdvcmtwbGFjZSB3aGVyZQogICAgICAgICAgICAgICAgPHNwYW4+ZXZlcnlvbmUgY2FuIHRocml2ZS48L3NwYW4+CiAgICAgICAgICAgIDwvaDI+CgogICAgICAgICAgICA8cCBjbGFzcz0id29ya3BsYWNlLWJhbm5lcl9fdGV4dCI+CiAgICAgICAgICAgICAgICBQcmFjdGljYWwsIGV4cGVydC1sZWQgbmV1cm9kaXZlcnNpdHkgdHJhaW5pbmcgdGFpbG9yZWQKICAgICAgICAgICAgICAgIHRvIHlvdXIgb3JnYW5pc2F0aW9uLCB5b3VyIHBlb3BsZSBhbmQgdGhlIGNoYWxsZW5nZXMKICAgICAgICAgICAgICAgIHRoZXkgZmFjZS4KICAgICAgICAgICAgPC9wPgoKICAgICAgICA8L2Rpdj4KCiAgICAgICAgPGRpdiBjbGFzcz0id29ya3BsYWNlLWJhbm5lcl9fYWN0aW9uIj4KCiAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICBjbGFzcz0id29ya3BsYWNlLWJhbm5lcl9fYnV0dG9uIgogICAgICAgICAgICAgICAgaHJlZj0iaHR0cHM6Ly90aWNrZXRzLm5ldXJvc3Bhcmtzb2x1dGlvbnMuY29tLyIKICAgICAgICAgICAgPgogICAgICAgICAgICAgICAgPHNwYW4+Qm9vayB3b3JrcGxhY2UgdHJhaW5pbmc8L3NwYW4+CgogICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNSAxMmgxNCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMyA2bDYgNi02IDYiPjwvcGF0aD4KICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICA8L2E+CgogICAgICAgIDwvZGl2PgoKICAgIDwvZGl2Pgo8L3NlY3Rpb24+Cgo8c3R5bGU+CiAgICAud29ya3BsYWNlLWJhbm5lciwKICAgIC53b3JrcGxhY2UtYmFubmVyICogewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICB9CgogICAgLndvcmtwbGFjZS1iYW5uZXIgewogICAgICAgIC0tcHVycGxlOiAjNDIzMjYxOwogICAgICAgIC0tcHVycGxlLWRhcms6ICMyZTIxNDc7CiAgICAgICAgLS1wdXJwbGUtZGVlcDogIzFiMTIzMjsKICAgICAgICAtLWxpbGFjOiAjY2E4ZmVkOwogICAgICAgIC0tY3JlYW06ICNmNmVjZTA7CgogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBpc29sYXRpb246IGlzb2xhdGU7CgogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CgogICAgICAgIHBhZGRpbmc6IGNsYW1wKDM0cHgsIDV2dywgNThweCkgMjRweDsKCiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjAyLCAxNDMsIDIzNywgMC4yMik7CiAgICAgICAgYm9yZGVyLXJpZ2h0OiAwOwogICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDIwMiwgMTQzLCAyMzcsIDAuMjIpOwogICAgICAgIGJvcmRlci1sZWZ0OiAwOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDA7CgogICAgICAgIGJhY2tncm91bmQ6CiAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudCgKICAgICAgICAgICAgICAgIGNpcmNsZSBhdCA5MiUgMCUsCiAgICAgICAgICAgICAgICByZ2JhKDIwMiwgMTQzLCAyMzcsIDAuMTgpLAogICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgMzQlCiAgICAgICAgICAgICksCiAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudCgKICAgICAgICAgICAgICAgIGNpcmNsZSBhdCAwJSAxMDAlLAogICAgICAgICAgICAgICAgcmdiYSgyMDIsIDE0MywgMjM3LCAwLjA3KSwKICAgICAgICAgICAgICAgIHRyYW5zcGFyZW50IDMyJQogICAgICAgICAgICApLAogICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoCiAgICAgICAgICAgICAgICAxMjBkZWcsCiAgICAgICAgICAgICAgICB2YXIoLS1wdXJwbGUtZGVlcCkgMCUsCiAgICAgICAgICAgICAgICB2YXIoLS1wdXJwbGUtZGFyaykgNTIlLAogICAgICAgICAgICAgICAgdmFyKC0tcHVycGxlKSAxMDAlCiAgICAgICAgICAgICk7CgogICAgICAgIGJveC1zaGFkb3c6CiAgICAgICAgICAgIDAgMjRweCA2MHB4IHJnYmEoMjcsIDE4LCA1MCwgMC4xOCksCiAgICAgICAgICAgIGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKCiAgICAgICAgY29sb3I6IHZhcigtLWNyZWFtKTsKICAgICAgICBmb250LWZhbWlseTogIkxhdG8iLCBBcmlhbCwgc2Fucy1zZXJpZjsKICAgIH0KCiAgICAud29ya3BsYWNlLWJhbm5lcl9fcGF0dGVybiB7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHotaW5kZXg6IDA7CgogICAgICAgIGluc2V0OiAwOwoKICAgICAgICBvcGFjaXR5OiAwLjA3OwoKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgIH0KCiAgICAud29ya3BsYWNlLWJhbm5lcl9fcGF0dGVybiBzdmcgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwoKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICB9CgogICAgLndvcmtwbGFjZS1iYW5uZXJfX3BhdHRlcm4gcGF0aCB7CiAgICAgICAgZmlsbDogbm9uZTsKICAgICAgICBzdHJva2U6IHZhcigtLWNyZWFtKTsKICAgICAgICBzdHJva2Utd2lkdGg6IDEuNTsKICAgICAgICBzdHJva2UtbGluZWNhcDogcm91bmQ7CiAgICB9CgogICAgLndvcmtwbGFjZS1iYW5uZXJfX3BhdHRlcm4gY2lyY2xlIHsKICAgICAgICBmaWxsOiB2YXIoLS1saWxhYyk7CiAgICB9CgogICAgLndvcmtwbGFjZS1iYW5uZXJfX3JpbmcgewogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICB6LWluZGV4OiAwOwoKICAgICAgICBkaXNwbGF5OiBibG9jazsKCiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNDYsIDIzNiwgMjI0LCAwLjA3KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CgogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgfQoKICAgIC53b3JrcGxhY2UtYmFubmVyX19yaW5nLS1sYXJnZSB7CiAgICAgICAgdG9wOiAtMTkwcHg7CiAgICAgICAgcmlnaHQ6IC0xMTVweDsKCiAgICAgICAgd2lkdGg6IDM2MHB4OwogICAgICAgIGhlaWdodDogMzYwcHg7CiAgICB9CgogICAgLndvcmtwbGFjZS1iYW5uZXJfX3JpbmctLXNtYWxsIHsKICAgICAgICByaWdodDogMjglOwogICAgICAgIGJvdHRvbTogLTExNXB4OwoKICAgICAgICB3aWR0aDogMTkwcHg7CiAgICAgICAgaGVpZ2h0OiAxOTBweDsKICAgIH0KCiAgICAud29ya3BsYWNlLWJhbm5lcl9faW5uZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB6LWluZGV4OiAyOwoKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczoKICAgICAgICAgICAgYXV0bwogICAgICAgICAgICBtaW5tYXgoMCwgMWZyKQogICAgICAgICAgICBhdXRvOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CgogICAgICAgIHdpZHRoOiBtaW4oMTI2MHB4LCAxMDAlKTsKICAgICAgICBtYXJnaW46IDAgYXV0bzsKCiAgICAgICAgZ2FwOiBjbGFtcCgyNHB4LCAzdncsIDQycHgpOwogICAgfQoKICAgIC53b3JrcGxhY2UtYmFubmVyX19tYXJrIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwoKICAgICAgICB3aWR0aDogNzhweDsKICAgICAgICBoZWlnaHQ6IDc4cHg7CgogICAgICAgIGZsZXg6IDAgMCA3OHB4OwogICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7CgogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjAyLCAxNDMsIDIzNywgMC40Mik7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDsKCiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA1KTsKCiAgICAgICAgYm94LXNoYWRvdzoKICAgICAgICAgICAgaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDcpOwoKICAgICAgICB0cmFuc2l0aW9uOgogICAgICAgICAgICB0cmFuc2Zvcm0gMjYwbXMgZWFzZSwKICAgICAgICAgICAgYm9yZGVyLWNvbG9yIDI2MG1zIGVhc2UsCiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgMjYwbXMgZWFzZTsKICAgIH0KCiAgICAud29ya3BsYWNlLWJhbm5lcjpob3ZlcgogICAgLndvcmtwbGFjZS1iYW5uZXJfX21hcmsgewogICAgICAgIHRyYW5zZm9ybToKICAgICAgICAgICAgdHJhbnNsYXRlWSgtM3B4KQogICAgICAgICAgICByb3RhdGUoLTNkZWcpOwoKICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWxpbGFjKTsKCiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyMDIsIDE0MywgMjM3LCAwLjA5KTsKICAgIH0KCiAgICAud29ya3BsYWNlLWJhbm5lcl9fbWFyayBzdmcgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwoKICAgICAgICB3aWR0aDogNTBweDsKICAgICAgICBoZWlnaHQ6IDUwcHg7CiAgICB9CgogICAgLndvcmtwbGFjZS1iYW5uZXJfX2NvbnRlbnQgewogICAgICAgIG1pbi13aWR0aDogMDsKICAgIH0KCiAgICAud29ya3BsYWNlLWJhbm5lcl9fbGFiZWwgewogICAgICAgIGRpc3BsYXk6IGJsb2NrOwoKICAgICAgICBtYXJnaW4tYm90dG9tOiA5cHg7CgogICAgICAgIGNvbG9yOiB2YXIoLS1saWxhYyk7CgogICAgICAgIGZvbnQtc2l6ZTogMTFweDsKICAgICAgICBmb250LXdlaWdodDogODAwOwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwoKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xNWVtOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICB9CgogICAgLndvcmtwbGFjZS1iYW5uZXJfX3RpdGxlIHsKICAgICAgICBtYXJnaW46IDA7CgogICAgICAgIGNvbG9yOiB2YXIoLS1jcmVhbSk7CgogICAgICAgIGZvbnQtZmFtaWx5OiAiQW50b24iLCBJbXBhY3QsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiBjbGFtcCgzMHB4LCAzLjd2dywgNDZweCk7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsaW5lLWhlaWdodDogMS4wMzsKCiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIH0KCiAgICAud29ya3BsYWNlLWJhbm5lcl9fdGl0bGUgc3BhbiB7CiAgICAgICAgY29sb3I6IHZhcigtLWxpbGFjKTsKICAgIH0KCiAgICAud29ya3BsYWNlLWJhbm5lcl9fdGV4dCB7CiAgICAgICAgbWF4LXdpZHRoOiA3MjBweDsKCiAgICAgICAgbWFyZ2luOiAxM3B4IDAgMDsKCiAgICAgICAgY29sb3I6IHJnYmEoMjQ2LCAyMzYsIDIyNCwgMC44KTsKCiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICB9CgogICAgLndvcmtwbGFjZS1iYW5uZXJfX2FjdGlvbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7CiAgICB9CgogICAgLndvcmtwbGFjZS1iYW5uZXIgLndvcmtwbGFjZS1iYW5uZXJfX2J1dHRvbiB7CiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKCiAgICAgICAgbWluLWhlaWdodDogNTZweDsKCiAgICAgICAgcGFkZGluZzogMTZweCAyM3B4OwoKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1saWxhYyk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNnB4OwoKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1saWxhYyk7CgogICAgICAgIGNvbG9yOiB2YXIoLS1wdXJwbGUtZGFyayk7CgogICAgICAgIGZvbnQtZmFtaWx5OiAiQW50b24iLCBJbXBhY3QsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiAxNXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CgogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwoKICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwoKICAgICAgICBnYXA6IDEzcHg7CgogICAgICAgIHRyYW5zaXRpb246CiAgICAgICAgICAgIHRyYW5zZm9ybSAyMjBtcyBlYXNlLAogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIDIyMG1zIGVhc2UsCiAgICAgICAgICAgIGJvcmRlci1jb2xvciAyMjBtcyBlYXNlLAogICAgICAgICAgICBib3gtc2hhZG93IDIyMG1zIGVhc2UsCiAgICAgICAgICAgIGNvbG9yIDIyMG1zIGVhc2U7CiAgICB9CgogICAgLndvcmtwbGFjZS1iYW5uZXIgLndvcmtwbGFjZS1iYW5uZXJfX2J1dHRvbjpob3ZlciwKICAgIC53b3JrcGxhY2UtYmFubmVyIC53b3JrcGxhY2UtYmFubmVyX19idXR0b246Zm9jdXMtdmlzaWJsZSB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0zcHgpOwoKICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNyZWFtKTsKCiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY3JlYW0pOwoKICAgICAgICBjb2xvcjogdmFyKC0tcHVycGxlLWRhcmspOwoKICAgICAgICBib3gtc2hhZG93OgogICAgICAgICAgICAwIDE1cHggMzJweCByZ2JhKDAsIDAsIDAsIDAuMik7CiAgICB9CgogICAgLndvcmtwbGFjZS1iYW5uZXJfX2J1dHRvbiBzdmcgewogICAgICAgIHdpZHRoOiAxOXB4OwogICAgICAgIGhlaWdodDogMTlweDsKCiAgICAgICAgZmxleDogMCAwIDE5cHg7CgogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiBjdXJyZW50Q29sb3I7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAxLjg7CgogICAgICAgIHN0cm9rZS1saW5lY2FwOiByb3VuZDsKICAgICAgICBzdHJva2UtbGluZWpvaW46IHJvdW5kOwoKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjIwbXMgZWFzZTsKICAgIH0KCiAgICAud29ya3BsYWNlLWJhbm5lcl9fYnV0dG9uOmhvdmVyIHN2ZywKICAgIC53b3JrcGxhY2UtYmFubmVyX19idXR0b246Zm9jdXMtdmlzaWJsZSBzdmcgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg0cHgpOwogICAgfQoKICAgIEBtZWRpYSAobWF4LXdpZHRoOiA5NTBweCkgewogICAgICAgIC53b3JrcGxhY2UtYmFubmVyX19pbm5lciB7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczoKICAgICAgICAgICAgICAgIGF1dG8KICAgICAgICAgICAgICAgIG1pbm1heCgwLCAxZnIpOwogICAgICAgIH0KCiAgICAgICAgLndvcmtwbGFjZS1iYW5uZXJfX2FjdGlvbiB7CiAgICAgICAgICAgIGdyaWQtY29sdW1uOiAyOwoKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBmbGV4LXN0YXJ0OwogICAgICAgIH0KICAgIH0KCiAgICBAbWVkaWEgKG1heC13aWR0aDogNjUwcHgpIHsKICAgICAgICAud29ya3BsYWNlLWJhbm5lciB7CiAgICAgICAgICAgIHBhZGRpbmc6IDMycHggMThweDsKCiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDA7CiAgICAgICAgfQoKICAgICAgICAud29ya3BsYWNlLWJhbm5lcl9faW5uZXIgewogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKCiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKCiAgICAgICAgICAgIGdhcDogMTlweDsKICAgICAgICB9CgogICAgICAgIC53b3JrcGxhY2UtYmFubmVyX19yaW5nLS1zbWFsbCB7CiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7CiAgICAgICAgfQoKICAgICAgICAud29ya3BsYWNlLWJhbm5lcl9fbWFyayB7CiAgICAgICAgICAgIHdpZHRoOiA2NnB4OwogICAgICAgICAgICBoZWlnaHQ6IDY2cHg7CgogICAgICAgICAgICBtYXJnaW46IDAgYXV0bzsKCiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDE3cHg7CiAgICAgICAgfQoKICAgICAgICAud29ya3BsYWNlLWJhbm5lcl9fbWFyayBzdmcgewogICAgICAgICAgICB3aWR0aDogNDJweDsKICAgICAgICAgICAgaGVpZ2h0OiA0MnB4OwogICAgICAgIH0KCiAgICAgICAgLndvcmtwbGFjZS1iYW5uZXJfX3RpdGxlIHsKICAgICAgICAgICAgZm9udC1zaXplOiBjbGFtcCgyOHB4LCA4LjR2dywgMzhweCk7CiAgICAgICAgfQoKICAgICAgICAud29ya3BsYWNlLWJhbm5lcl9fdGV4dCB7CiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogYXV0bzsKICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87CgogICAgICAgICAgICBmb250LXNpemU6IDE1cHg7CiAgICAgICAgfQoKICAgICAgICAud29ya3BsYWNlLWJhbm5lcl9fYWN0aW9uIHsKICAgICAgICAgICAgZ3JpZC1jb2x1bW46IGF1dG87CgogICAgICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAgICAgfQoKICAgICAgICAud29ya3BsYWNlLWJhbm5lciAud29ya3BsYWNlLWJhbm5lcl9fYnV0dG9uIHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CgogICAgICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsOwogICAgICAgIH0KICAgIH0KCiAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogICAgICAgIC53b3JrcGxhY2UtYmFubmVyX19tYXJrLAogICAgICAgIC53b3JrcGxhY2UtYmFubmVyX19idXR0b24sCiAgICAgICAgLndvcmtwbGFjZS1iYW5uZXJfX2J1dHRvbiBzdmcgewogICAgICAgICAgICB0cmFuc2l0aW9uOiBub25lOwogICAgICAgIH0KCiAgICAgICAgLndvcmtwbGFjZS1iYW5uZXI6aG92ZXIKICAgICAgICAud29ya3BsYWNlLWJhbm5lcl9fbWFyaywKICAgICAgICAud29ya3BsYWNlLWJhbm5lciAud29ya3BsYWNlLWJhbm5lcl9fYnV0dG9uOmhvdmVyIHsKICAgICAgICAgICAgdHJhbnNmb3JtOiBub25lOwogICAgICAgIH0KICAgIH0KPC9zdHlsZT4=[/fusion_code][fusion_code]PHNlY3Rpb24gY2xhc3M9ImhlbHAtc2VjdGlvbiIgYXJpYS1sYWJlbGxlZGJ5PSJoZWxwLXNlY3Rpb24tdGl0bGUiPgogICAgPGRpdiBjbGFzcz0iaGVscC1zZWN0aW9uX19pbm5lciI+CgogICAgICAgIDxoZWFkZXIgY2xhc3M9ImhlbHAtc2VjdGlvbl9faGVhZGVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVscC1zZWN0aW9uX19oZWFkaW5nIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlbHAtc2VjdGlvbl9fZXllYnJvdyI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImhlbHAtc2VjdGlvbl9fZXllYnJvdy1pY29uIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMiAzdjNNNS42IDUuNmwyLjEgMi4xTTMgMTJoM001LjYgMTguNGwyLjEtMi4xTTEyIDIxdi0zTTE4LjQgMTguNGwtMi4xLTIuMU0yMSAxMmgtM00xOC40IDUuNmwtMi4xIDIuMSI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iNCI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgSG93IHdlIGhlbHAKICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxoMiBpZD0iaGVscC1zZWN0aW9uLXRpdGxlIj4KICAgICAgICAgICAgICAgICAgICBQcmFjdGljYWwgc3VwcG9ydC48YnI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4+QnVpbHQgYXJvdW5kIHJlYWwgcGVvcGxlLjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvaDI+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVscC1zZWN0aW9uX19zdW1tYXJ5Ij4KICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgIEZyb20gd29ya3BsYWNlIHRyYWluaW5nIHRvIHRhaWxvcmVkIG9uZS10by1vbmUgc3VwcG9ydCwKICAgICAgICAgICAgICAgICAgICBOZXVyby1TcGFya3MgaGVscHMgcGVvcGxlIGFuZCBvcmdhbmlzYXRpb25zIHVuZGVyc3RhbmQKICAgICAgICAgICAgICAgICAgICBuZXVyb2RpdmVyc2l0eSwgcmVtb3ZlIGJhcnJpZXJzIGFuZCBjcmVhdGUgbGFzdGluZyBjaGFuZ2UuCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvaGVhZGVyPgoKICAgICAgICA8ZGl2IGNsYXNzPSJoZWxwLXNlY3Rpb25fX2dyaWQiPgoKICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9ImhlbHAtY2FyZCI+CiAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJoZWxwLWNhcmRfX2xpbmsiCiAgICAgICAgICAgICAgICAgICAgaHJlZj0iL25ldXJvZGl2ZXJzaXR5LXdvcmtwbGFjZS10cmFpbmluZy8iCiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD0iTGVhcm4gbW9yZSBhYm91dCBOZXVyb2RpdmVyc2l0eSBXb3JrcGxhY2UgVHJhaW5pbmciCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVscC1jYXJkX190b3AiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaGVscC1jYXJkX19udW1iZXIiPjAxPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImhlbHAtY2FyZF9faWNvbiIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxyZWN0IHg9IjUiIHk9IjgiIHdpZHRoPSIyMiIgaGVpZ2h0PSIxOCIgcng9IjIiPjwvcmVjdD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMTAgOFY1aDEydjNNMTAgMTRoMTJNMTAgMTloNU0xOSAxOWgzIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWxwLWNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaGVscC1jYXJkX19mb3JtYXQiPldlIGNvbWUgdG8geW91PC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGgzPk5ldXJvZGl2ZXJzaXR5IFdvcmtwbGFjZSBUcmFpbmluZzwvaDM+CgogICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVtcG93ZXIgeW91ciB0ZWFtIHRvIGJlY29tZSBtb3JlIGF3YXJlLCBpbmNsdXNpdmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBwcm9kdWN0aXZlIGJ5IGhlbHBpbmcgdGhlbSB1bmRlcnN0YW5kIGFsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNwZWN0cyBvZiBuZXVyb2RpdmVyc2l0eSBpbiB0aGUgd29ya3BsYWNlLgogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlbHAtY2FyZF9fZm9vdGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+TGVhcm4gbW9yZTwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgdmlld0JveD0iMCAwIDI0IDI0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNNSAxMmgxNE0xMyA2bDYgNi02IDYiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvYXJ0aWNsZT4KCiAgICAgICAgICAgIDxhcnRpY2xlIGNsYXNzPSJoZWxwLWNhcmQiPgogICAgICAgICAgICAgICAgPGEKICAgICAgICAgICAgICAgICAgICBjbGFzcz0iaGVscC1jYXJkX19saW5rIgogICAgICAgICAgICAgICAgICAgIGhyZWY9Ii9saXZlLW5ldXJvZGl2ZXJzaXR5LXRyYWluaW5nLyIKICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPSJMZWFybiBtb3JlIGFib3V0IE5ldXJvZGl2ZXJzaXR5IFRyYWluaW5nIGluIEJ1cm5sZXkiCiAgICAgICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVscC1jYXJkX190b3AiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaGVscC1jYXJkX19udW1iZXIiPjAyPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImhlbHAtY2FyZF9faWNvbiIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMzIgMzIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik02IDExaDIwdjE1SDZ6TTEwIDd2OE0yMiA3djhNNiAxNmgyMCI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMSAyMWg0TTE4IDIxaDMiPjwvcGF0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImhlbHAtY2FyZF9fY29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJoZWxwLWNhcmRfX2Zvcm1hdCI+WW91IGNvbWUgdG8gdXM8L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8aDM+TmV1cm9kaXZlcnNpdHkgVHJhaW5pbmcgaW4gQnVybmxleTwvaDM+CgogICAgICAgICAgICAgICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV4cGxvcmUgbmV1cm9kaXZlcnNpdHkgYW5kIG5ldXJvZGl2ZXJnZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb25zIHRocm91Z2ggcHJhY3RpY2FsLCBleHBlcnQtbGVkIHNlc3Npb25zCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNpZ25lZCBmb3IgcGVyc29uYWwgYW5kIHByb2Zlc3Npb25hbCBkZXZlbG9wbWVudC4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWxwLWNhcmRfX2Zvb3RlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkxlYXJuIG1vcmU8L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAyNCAyNCIgYXJpYS1oaWRkZW49InRydWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTUgMTJoMTRNMTMgNmw2IDYtNiA2Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICA8L2FydGljbGU+CgogICAgICAgICAgICA8YXJ0aWNsZSBjbGFzcz0iaGVscC1jYXJkIj4KICAgICAgICAgICAgICAgIDxhCiAgICAgICAgICAgICAgICAgICAgY2xhc3M9ImhlbHAtY2FyZF9fbGluayIKICAgICAgICAgICAgICAgICAgICBocmVmPSIvbmV1cm9kaXZlcnNpdHktc3VwcG9ydC1qb2ItYWlkZS1zcGVjaWFsaXN0cy8iCiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD0iTGVhcm4gbW9yZSBhYm91dCBTdXBwb3J0IGFuZCBKb2IgQWlkZSBTZXJ2aWNlcyIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWxwLWNhcmRfX3RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJoZWxwLWNhcmRfX251bWJlciI+MDM8L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaGVscC1jYXJkX19pY29uIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD0iMTEiIGN5PSIxMCIgcj0iNCI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD0iMjIiIGN5PSIxMiIgcj0iMyI+PC9jaXJjbGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTQgMjZjMC01IDMtOCA3LThzNyAzIDcgOE0xOCAyNmMwLTQgMi03IDUtN3M1IDMgNSA3Ij48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWxwLWNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaGVscC1jYXJkX19mb3JtYXQiPlZpcnR1YWwgb3IgaW4gcGVyc29uPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGgzPlN1cHBvcnQgYW5kIEpvYiBBaWRlIFNlcnZpY2VzPC9oMz4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5sb2NrIG1vcmUgdGltZSBhbmQgcHJvZHVjdGl2aXR5IHdpdGggdGFpbG9yZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgZnJvbSBhIHJlYWwgcGVyc29uLiBTdXBwb3J0IG1heSBhbHNvIGJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5kZWQgdGhyb3VnaCB0aGUgZ292ZXJubWVudOKAmXMgQWNjZXNzIHRvIFdvcmsgZ3JhbnQuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVscC1jYXJkX19mb290ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5MZWFybiBtb3JlPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01IDEyaDE0TTEzIDZsNiA2LTYgNiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9hcnRpY2xlPgoKICAgICAgICAgICAgPGFydGljbGUgY2xhc3M9ImhlbHAtY2FyZCI+CiAgICAgICAgICAgICAgICA8YQogICAgICAgICAgICAgICAgICAgIGNsYXNzPSJoZWxwLWNhcmRfX2xpbmsiCiAgICAgICAgICAgICAgICAgICAgaHJlZj0iL3RhaWxvcmVkLWVudHJlcHJlbmV1cmlhbC1idXNpbmVzcy1jb2FjaGluZy8iCiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD0iTGVhcm4gbW9yZSBhYm91dCBUYWlsb3JlZCBDb2FjaGluZyIKICAgICAgICAgICAgICAgID4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWxwLWNhcmRfX3RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJoZWxwLWNhcmRfX251bWJlciI+MDQ8L3NwYW4+CgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaGVscC1jYXJkX19pY29uIiBhcmlhLWhpZGRlbj0idHJ1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHZpZXdCb3g9IjAgMCAzMiAzMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD0iTTE2IDRhOSA5IDAgMCAwLTUgMTYuNVYyNWgxMHYtNC41QTkgOSAwIDAgMCAxNiA0eiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik0xMiAyOGg4TTEzIDIxaDZNMTYgOHYzTTEwIDExbDIgMk0yMiAxMWwtMiAyIj48L3BhdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWxwLWNhcmRfX2NvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaGVscC1jYXJkX19mb3JtYXQiPlZpcnR1YWwgb3IgaW4gcGVyc29uPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGgzPlRhaWxvcmVkIENvYWNoaW5nPC9oMz4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0IHBlcnNvbmFsaXNlZCBvbmUtdG8tb25lIHN1cHBvcnQsIHByYWN0aWNhbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyYXRlZ2llcyBhbmQgY2xlYXIgZ3VpZGFuY2Ugc2hhcGVkIGFyb3VuZCB5b3VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpdmlkdWFsIG5ldXJvZGl2ZXJzaXR5IGpvdXJuZXkuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaGVscC1jYXJkX19mb290ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5MZWFybiBtb3JlPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIGFyaWEtaGlkZGVuPSJ0cnVlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9Ik01IDEyaDE0TTEzIDZsNiA2LTYgNiI+PC9wYXRoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgPC9hcnRpY2xlPgoKICAgICAgICA8L2Rpdj4KCiAgICA8L2Rpdj4KPC9zZWN0aW9uPgoKPHN0eWxlPgogICAgLmhlbHAtc2VjdGlvbiwKICAgIC5oZWxwLXNlY3Rpb24gKiB7CiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDsKICAgIH0KCiAgICAuaGVscC1zZWN0aW9uIHsKICAgICAgICAtLWhlbHAtcHVycGxlOiAjNDIzMjYxOwogICAgICAgIC0taGVscC1wdXJwbGUtZGFyazogIzJlMjE0NzsKICAgICAgICAtLWhlbHAtbGlsYWM6ICNjYThmZWQ7CiAgICAgICAgLS1oZWxwLWxpbGFjLWxpZ2h0OiAjZWFkMGY5OwogICAgICAgIC0taGVscC1jcmVhbTogI2Y2ZWNlMDsKICAgICAgICAtLWhlbHAtY3JlYW0tbGlnaHQ6ICNmY2Y4ZjM7CiAgICAgICAgLS1oZWxwLXRleHQ6ICM0YjQwNTU7CiAgICAgICAgLS1oZWxwLW11dGVkOiAjNzU2YjdjOwogICAgICAgIC0taGVscC1ib3JkZXI6IHJnYmEoNjYsIDUwLCA5NywgMC4xNCk7CgogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHBhZGRpbmc6IGNsYW1wKDcycHgsIDh2dywgMTE4cHgpIDI0cHg7CiAgICAgICAgYmFja2dyb3VuZDoKICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KAogICAgICAgICAgICAgICAgY2lyY2xlIGF0IDk1JSA4JSwKICAgICAgICAgICAgICAgIHJnYmEoMjAyLCAxNDMsIDIzNywgMC4xNiksCiAgICAgICAgICAgICAgICB0cmFuc3BhcmVudCAyNyUKICAgICAgICAgICAgKSwKICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KAogICAgICAgICAgICAgICAgY2lyY2xlIGF0IDMlIDk2JSwKICAgICAgICAgICAgICAgIHJnYmEoNjYsIDUwLCA5NywgMC4wNiksCiAgICAgICAgICAgICAgICB0cmFuc3BhcmVudCAyOCUKICAgICAgICAgICAgKSwKICAgICAgICAgICAgbGluZWFyLWdyYWRpZW50KAogICAgICAgICAgICAgICAgMTgwZGVnLAogICAgICAgICAgICAgICAgdmFyKC0taGVscC1jcmVhbS1saWdodCkgMCUsCiAgICAgICAgICAgICAgICB2YXIoLS1oZWxwLWNyZWFtKSAxMDAlCiAgICAgICAgICAgICk7CiAgICAgICAgY29sb3I6IHZhcigtLWhlbHAtdGV4dCk7CiAgICAgICAgZm9udC1mYW1pbHk6ICJMYXRvIiwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgICB9CgogICAgLmhlbHAtc2VjdGlvbjo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAiIjsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiA5JTsKICAgICAgICByaWdodDogLTgwcHg7CiAgICAgICAgd2lkdGg6IDI2MHB4OwogICAgICAgIGhlaWdodDogMjYwcHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMDIsIDE0MywgMjM3LCAwLjE4KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB9CgogICAgLmhlbHAtc2VjdGlvbjo6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICIiOwogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICByaWdodDogNDVweDsKICAgICAgICBib3R0b206IC05MHB4OwogICAgICAgIHdpZHRoOiAxODVweDsKICAgICAgICBoZWlnaHQ6IDE4NXB4OwogICAgICAgIGJvcmRlcjogMzhweCBzb2xpZCByZ2JhKDY2LCA1MCwgOTcsIDAuMDM1KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB9CgogICAgLmhlbHAtc2VjdGlvbl9faW5uZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB6LWluZGV4OiAxOwogICAgICAgIHdpZHRoOiBtaW4oMTIyMHB4LCAxMDAlKTsKICAgICAgICBtYXJnaW46IDAgYXV0bzsKICAgIH0KCiAgICAuaGVscC1zZWN0aW9uX19oZWFkZXIgewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMS4xZnIpIG1pbm1heCgzMDBweCwgMC42NWZyKTsKICAgICAgICBnYXA6IGNsYW1wKDM2cHgsIDd2dywgOTZweCk7CiAgICAgICAgYWxpZ24taXRlbXM6IGVuZDsKICAgICAgICBtYXJnaW4tYm90dG9tOiBjbGFtcCg0MnB4LCA2dncsIDY4cHgpOwogICAgfQoKICAgIC5oZWxwLXNlY3Rpb25fX2V5ZWJyb3cgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgZ2FwOiAxMXB4OwogICAgICAgIG1hcmdpbi1ib3R0b206IDIwcHg7CiAgICAgICAgY29sb3I6IHZhcigtLWhlbHAtcHVycGxlKTsKICAgICAgICBmb250LXNpemU6IDEzcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsKICAgICAgICBsaW5lLWhlaWdodDogMS4yOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjEzZW07CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIH0KCiAgICAuaGVscC1zZWN0aW9uX19leWVicm93LWljb24gewogICAgICAgIGRpc3BsYXk6IGdyaWQ7CiAgICAgICAgd2lkdGg6IDMycHg7CiAgICAgICAgaGVpZ2h0OiAzMnB4OwogICAgICAgIHBsYWNlLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg2NiwgNTAsIDk3LCAwLjIyKTsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyMDIsIDE0MywgMjM3LCAwLjE4KTsKICAgIH0KCiAgICAuaGVscC1zZWN0aW9uX19leWVicm93LWljb24gc3ZnIHsKICAgICAgICB3aWR0aDogMTdweDsKICAgICAgICBoZWlnaHQ6IDE3cHg7CiAgICAgICAgZmlsbDogbm9uZTsKICAgICAgICBzdHJva2U6IGN1cnJlbnRDb2xvcjsKICAgICAgICBzdHJva2Utd2lkdGg6IDEuODsKICAgICAgICBzdHJva2UtbGluZWNhcDogcm91bmQ7CiAgICAgICAgc3Ryb2tlLWxpbmVqb2luOiByb3VuZDsKICAgIH0KCiAgICAuaGVscC1zZWN0aW9uX19oZWFkaW5nIGgyIHsKICAgICAgICBtYXgtd2lkdGg6IDgyMHB4OwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBjb2xvcjogdmFyKC0taGVscC1wdXJwbGUpOwogICAgICAgIGZvbnQtZmFtaWx5OiAiQW50b24iLCBJbXBhY3QsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiBjbGFtcCg0OXB4LCA2dncsIDc4cHgpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDAuOTk7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDA7CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIH0KCiAgICAuaGVscC1zZWN0aW9uX19oZWFkaW5nIGgyIHNwYW4gewogICAgICAgIGNvbG9yOiB2YXIoLS1oZWxwLWxpbGFjKTsKICAgIH0KCiAgICAuaGVscC1zZWN0aW9uX19zdW1tYXJ5IHsKICAgICAgICBwYWRkaW5nLWxlZnQ6IDI2cHg7CiAgICAgICAgYm9yZGVyLWxlZnQ6IDNweCBzb2xpZCB2YXIoLS1oZWxwLWxpbGFjKTsKICAgIH0KCiAgICAuaGVscC1zZWN0aW9uX19zdW1tYXJ5IHAgewogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBjb2xvcjogdmFyKC0taGVscC10ZXh0KTsKICAgICAgICBmb250LXNpemU6IDE3cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjU7CiAgICB9CgogICAgLmhlbHAtc2VjdGlvbl9fZ3JpZCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7CiAgICAgICAgZ2FwOiAyNHB4OwogICAgfQoKICAgIC5oZWxwLWNhcmQgewogICAgICAgIG1pbi13aWR0aDogMDsKICAgIH0KCiAgICAuaGVscC1jYXJkX19saW5rIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBtaW4taGVpZ2h0OiA0MzBweDsKICAgICAgICBoZWlnaHQ6IDEwMCU7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwogICAgICAgIHBhZGRpbmc6IGNsYW1wKDI2cHgsIDR2dywgMzhweCk7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0taGVscC1ib3JkZXIpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDI0cHg7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjcyKTsKICAgICAgICBib3gtc2hhZG93OiAwIDIycHggNjVweCByZ2JhKDY2LCA1MCwgOTcsIDAuMDgpOwogICAgICAgIGNvbG9yOiBpbmhlcml0OwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOgogICAgICAgICAgICB0cmFuc2Zvcm0gMjYwbXMgZWFzZSwKICAgICAgICAgICAgYm9yZGVyLWNvbG9yIDI2MG1zIGVhc2UsCiAgICAgICAgICAgIGJveC1zaGFkb3cgMjYwbXMgZWFzZSwKICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvciAyNjBtcyBlYXNlOwogICAgfQoKICAgIC5oZWxwLWNhcmRfX2xpbms6OmJlZm9yZSB7CiAgICAgICAgY29udGVudDogIiI7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHRvcDogLTEwMHB4OwogICAgICAgIHJpZ2h0OiAtODBweDsKICAgICAgICB3aWR0aDogMjEwcHg7CiAgICAgICAgaGVpZ2h0OiAyMTBweDsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyMDIsIDE0MywgMjM3LCAwLjE0KTsKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gNTAwbXMgZWFzZTsKICAgIH0KCiAgICAuaGVscC1jYXJkX19saW5rOjphZnRlciB7CiAgICAgICAgY29udGVudDogIiI7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIHJpZ2h0OiAwOwogICAgICAgIGJvdHRvbTogMDsKICAgICAgICBsZWZ0OiAwOwogICAgICAgIGhlaWdodDogNHB4OwogICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgKICAgICAgICAgICAgOTBkZWcsCiAgICAgICAgICAgIHRyYW5zcGFyZW50LAogICAgICAgICAgICB2YXIoLS1oZWxwLWxpbGFjKSwKICAgICAgICAgICAgdmFyKC0taGVscC1wdXJwbGUpLAogICAgICAgICAgICB0cmFuc3BhcmVudAogICAgICAgICk7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMC4yKTsKICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBsZWZ0OwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSA0MjBtcyBlYXNlOwogICAgfQoKICAgIC5oZWxwLWNhcmRfX2xpbms6aG92ZXIsCiAgICAuaGVscC1jYXJkX19saW5rOmZvY3VzLXZpc2libGUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtOHB4KTsKICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoMjAyLCAxNDMsIDIzNywgMC43KTsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuODgpOwogICAgICAgIGJveC1zaGFkb3c6IDAgMzBweCA4MHB4IHJnYmEoNjYsIDUwLCA5NywgMC4xNSk7CiAgICAgICAgb3V0bGluZTogbm9uZTsKICAgIH0KCiAgICAuaGVscC1jYXJkX19saW5rOmhvdmVyOjpiZWZvcmUsCiAgICAuaGVscC1jYXJkX19saW5rOmZvY3VzLXZpc2libGU6OmJlZm9yZSB7CiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIpIHRyYW5zbGF0ZSgtMTBweCwgMTJweCk7CiAgICB9CgogICAgLmhlbHAtY2FyZF9fbGluazpob3Zlcjo6YWZ0ZXIsCiAgICAuaGVscC1jYXJkX19saW5rOmZvY3VzLXZpc2libGU6OmFmdGVyIHsKICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgxKTsKICAgIH0KCiAgICAuaGVscC1jYXJkX190b3AgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB6LWluZGV4OiAxOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuOwogICAgICAgIGdhcDogMjBweDsKICAgIH0KCiAgICAuaGVscC1jYXJkX19udW1iZXIgewogICAgICAgIGNvbG9yOiB2YXIoLS1oZWxwLWxpbGFjKTsKICAgICAgICBmb250LWZhbWlseTogIkFudG9uIiwgSW1wYWN0LCBzYW5zLXNlcmlmOwogICAgICAgIGZvbnQtc2l6ZTogMTRweDsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xZW07CiAgICB9CgogICAgLmhlbHAtY2FyZF9faWNvbiB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICB3aWR0aDogNThweDsKICAgICAgICBoZWlnaHQ6IDU4cHg7CiAgICAgICAgZmxleDogMCAwIDU4cHg7CiAgICAgICAgcGxhY2UtaXRlbXM6IGNlbnRlcjsKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDIwMiwgMTQzLCAyMzcsIDAuNDIpOwogICAgICAgIGJvcmRlci1yYWRpdXM6IDE3cHg7CiAgICAgICAgYmFja2dyb3VuZDoKICAgICAgICAgICAgbGluZWFyLWdyYWRpZW50KAogICAgICAgICAgICAgICAgMTQ1ZGVnLAogICAgICAgICAgICAgICAgcmdiYSgyMDIsIDE0MywgMjM3LCAwLjI1KSwKICAgICAgICAgICAgICAgIHJnYmEoMjQ2LCAyMzYsIDIyNCwgMC43NikKICAgICAgICAgICAgKTsKICAgICAgICBjb2xvcjogdmFyKC0taGVscC1wdXJwbGUpOwogICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAzMDBtcyBlYXNlOwogICAgfQoKICAgIC5oZWxwLWNhcmRfX2xpbms6aG92ZXIgLmhlbHAtY2FyZF9faWNvbiwKICAgIC5oZWxwLWNhcmRfX2xpbms6Zm9jdXMtdmlzaWJsZSAuaGVscC1jYXJkX19pY29uIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtNWRlZykgc2NhbGUoMS4wNik7CiAgICB9CgogICAgLmhlbHAtY2FyZF9faWNvbiBzdmcgewogICAgICAgIHdpZHRoOiAyOXB4OwogICAgICAgIGhlaWdodDogMjlweDsKICAgICAgICBmaWxsOiBub25lOwogICAgICAgIHN0cm9rZTogY3VycmVudENvbG9yOwogICAgICAgIHN0cm9rZS13aWR0aDogMS43OwogICAgICAgIHN0cm9rZS1saW5lY2FwOiByb3VuZDsKICAgICAgICBzdHJva2UtbGluZWpvaW46IHJvdW5kOwogICAgfQoKICAgIC5oZWxwLWNhcmRfX2NvbnRlbnQgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB6LWluZGV4OiAxOwogICAgICAgIGZsZXg6IDE7CiAgICAgICAgcGFkZGluZy10b3A6IDM0cHg7CiAgICB9CgogICAgLmhlbHAtY2FyZF9fZm9ybWF0IHsKICAgICAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIG1pbi1oZWlnaHQ6IDMxcHg7CiAgICAgICAgcGFkZGluZzogN3B4IDEycHg7CiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSg2NiwgNTAsIDk3LCAwLjE1KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDsKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDIwMiwgMTQzLCAyMzcsIDAuMTIpOwogICAgICAgIGNvbG9yOiB2YXIoLS1oZWxwLXB1cnBsZSk7CiAgICAgICAgZm9udC1zaXplOiAxMHB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDEuMjsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wOGVtOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICB9CgogICAgLmhlbHAtY2FyZF9fY29udGVudCBoMyB7CiAgICAgICAgbWF4LXdpZHRoOiA0ODBweDsKICAgICAgICBtYXJnaW46IDIwcHggMCAwOwogICAgICAgIGNvbG9yOiB2YXIoLS1oZWxwLXB1cnBsZSk7CiAgICAgICAgZm9udC1mYW1pbHk6ICJBbnRvbiIsIEltcGFjdCwgc2Fucy1zZXJpZjsKICAgICAgICBmb250LXNpemU6IGNsYW1wKDMxcHgsIDR2dywgNDVweCk7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsaW5lLWhlaWdodDogMS4wMzsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgfQoKICAgIC5oZWxwLWNhcmRfX2NvbnRlbnQgcCB7CiAgICAgICAgbWF4LXdpZHRoOiA1MjBweDsKICAgICAgICBtYXJnaW46IDE4cHggMCAwOwogICAgICAgIGNvbG9yOiB2YXIoLS1oZWxwLXRleHQpOwogICAgICAgIGZvbnQtc2l6ZTogMTZweDsKICAgICAgICBsaW5lLWhlaWdodDogMS42NTsKICAgIH0KCiAgICAuaGVscC1jYXJkX19mb290ZXIgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKICAgICAgICB6LWluZGV4OiAxOwogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47CiAgICAgICAgZ2FwOiAyMHB4OwogICAgICAgIG1hcmdpbi10b3A6IDMycHg7CiAgICAgICAgcGFkZGluZy10b3A6IDIycHg7CiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLWhlbHAtYm9yZGVyKTsKICAgICAgICBjb2xvcjogdmFyKC0taGVscC1wdXJwbGUpOwogICAgICAgIGZvbnQtZmFtaWx5OiAiQW50b24iLCBJbXBhY3QsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiAxNXB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxOwogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07CiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIH0KCiAgICAuaGVscC1jYXJkX19mb290ZXIgc3ZnIHsKICAgICAgICB3aWR0aDogMjJweDsKICAgICAgICBoZWlnaHQ6IDIycHg7CiAgICAgICAgZmlsbDogbm9uZTsKICAgICAgICBzdHJva2U6IGN1cnJlbnRDb2xvcjsKICAgICAgICBzdHJva2Utd2lkdGg6IDEuODsKICAgICAgICBzdHJva2UtbGluZWNhcDogcm91bmQ7CiAgICAgICAgc3Ryb2tlLWxpbmVqb2luOiByb3VuZDsKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjIwbXMgZWFzZTsKICAgIH0KCiAgICAuaGVscC1jYXJkX19saW5rOmhvdmVyIC5oZWxwLWNhcmRfX2Zvb3RlciBzdmcsCiAgICAuaGVscC1jYXJkX19saW5rOmZvY3VzLXZpc2libGUgLmhlbHAtY2FyZF9fZm9vdGVyIHN2ZyB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDVweCk7CiAgICB9CgogICAgQG1lZGlhIChtYXgtd2lkdGg6IDk4MHB4KSB7CiAgICAgICAgLmhlbHAtc2VjdGlvbl9faGVhZGVyIHsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgICAgfQoKICAgICAgICAuaGVscC1zZWN0aW9uX19zdW1tYXJ5IHsKICAgICAgICAgICAgbWF4LXdpZHRoOiA3MDBweDsKICAgICAgICB9CiAgICB9CgogICAgQG1lZGlhIChtYXgtd2lkdGg6IDgyMHB4KSB7CiAgICAgICAgLmhlbHAtc2VjdGlvbl9fZ3JpZCB7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICAgIH0KCiAgICAgICAgLmhlbHAtY2FyZF9fbGluayB7CiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDA7CiAgICAgICAgfQogICAgfQoKICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2ODBweCkgewogICAgICAgIC5oZWxwLXNlY3Rpb24gewogICAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiAxNnB4OwogICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDE2cHg7CiAgICAgICAgfQoKICAgICAgICAuaGVscC1zZWN0aW9uX19zdW1tYXJ5IHsKICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiAxOHB4OwogICAgICAgIH0KCiAgICAgICAgLmhlbHAtY2FyZF9fbGluayB7CiAgICAgICAgICAgIHBhZGRpbmc6IDI0cHggMjFweDsKICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDsKICAgICAgICB9CgogICAgICAgIC5oZWxwLWNhcmRfX2NvbnRlbnQgewogICAgICAgICAgICBwYWRkaW5nLXRvcDogMjhweDsKICAgICAgICB9CgogICAgICAgIC5oZWxwLWNhcmRfX2NvbnRlbnQgaDMgewogICAgICAgICAgICBmb250LXNpemU6IGNsYW1wKDMxcHgsIDEwdncsIDQycHgpOwogICAgICAgIH0KCiAgICAgICAgLmhlbHAtY2FyZF9fY29udGVudCBwIHsKICAgICAgICAgICAgZm9udC1zaXplOiAxNXB4OwogICAgICAgIH0KICAgIH0KCiAgICBAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246IHJlZHVjZSkgewogICAgICAgIC5oZWxwLXNlY3Rpb24gKiwKICAgICAgICAuaGVscC1zZWN0aW9uICo6OmJlZm9yZSwKICAgICAgICAuaGVscC1zZWN0aW9uICo6OmFmdGVyIHsKICAgICAgICAgICAgc2Nyb2xsLWJlaGF2aW9yOiBhdXRvICFpbXBvcnRhbnQ7CiAgICAgICAgICAgIHRyYW5zaXRpb24tZHVyYXRpb246IDAuMDFtcyAhaW1wb3J0YW50OwogICAgICAgICAgICBhbmltYXRpb24tZHVyYXRpb246IDAuMDFtcyAhaW1wb3J0YW50OwogICAgICAgICAgICBhbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAxICFpbXBvcnRhbnQ7CiAgICAgICAgfQogICAgfQo8L3N0eWxlPg==[/fusion_code][fusion_code]PHN0eWxlPgogICAgLmNvbnRhY3QtcGFuZWwsCiAgICAuY29udGFjdC1wYW5lbCAqIHsKICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OwogICAgfQoKICAgIC5jb250YWN0LXBhbmVsIHsKICAgICAgICAtLXB1cnBsZTogIzQyMzI2MTsKICAgICAgICAtLXB1cnBsZS1kYXJrOiAjMmUyMTQ3OwogICAgICAgIC0tcHVycGxlLWRlZXA6ICMyMTE3MzU7CiAgICAgICAgLS1saWxhYzogI2NhOGZlZDsKICAgICAgICAtLWxpbGFjLWxpZ2h0OiAjZWFkMGY5OwogICAgICAgIC0tY3JlYW06ICNmNmVjZTA7CiAgICAgICAgLS13aGl0ZTogI2ZmZmZmZjsKCiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgICAgIGlzb2xhdGlvbjogaXNvbGF0ZTsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwogICAgICAgIHBhZGRpbmc6IGNsYW1wKDcycHgsIDh2dywgMTEycHgpIDI0cHg7CgogICAgICAgIGJhY2tncm91bmQ6CiAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudCgKICAgICAgICAgICAgICAgIGNpcmNsZSBhdCA5MiUgNSUsCiAgICAgICAgICAgICAgICByZ2JhKDIwMiwgMTQzLCAyMzcsIDAuMjIpLAogICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgMzAlCiAgICAgICAgICAgICksCiAgICAgICAgICAgIHJhZGlhbC1ncmFkaWVudCgKICAgICAgICAgICAgICAgIGNpcmNsZSBhdCA0JSA5NiUsCiAgICAgICAgICAgICAgICByZ2JhKDI0NiwgMjM2LCAyMjQsIDAuMDgpLAogICAgICAgICAgICAgICAgdHJhbnNwYXJlbnQgMzIlCiAgICAgICAgICAgICksCiAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgKICAgICAgICAgICAgICAgIDEzNWRlZywKICAgICAgICAgICAgICAgIHZhcigtLXB1cnBsZS1kZWVwKSAwJSwKICAgICAgICAgICAgICAgIHZhcigtLXB1cnBsZS1kYXJrKSA0MiUsCiAgICAgICAgICAgICAgICB2YXIoLS1wdXJwbGUpIDEwMCUKICAgICAgICAgICAgKTsKCiAgICAgICAgY29sb3I6IHZhcigtLWNyZWFtKTsKICAgICAgICBmb250LWZhbWlseTogIkxhdG8iLCBBcmlhbCwgc2Fucy1zZXJpZjsKICAgIH0KCiAgICAuY29udGFjdC1wYW5lbDo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAiIjsKICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CiAgICAgICAgdG9wOiAtMTEwcHg7CiAgICAgICAgcmlnaHQ6IC05MHB4OwogICAgICAgIHdpZHRoOiAzMzBweDsKICAgICAgICBoZWlnaHQ6IDMzMHB4OwogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjAyLCAxNDMsIDIzNywgMC4xNCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwogICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lOwogICAgfQoKICAgIC5jb250YWN0LXBhbmVsOjphZnRlciB7CiAgICAgICAgY29udGVudDogIiI7CiAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwogICAgICAgIGJvdHRvbTogLTEzMHB4OwogICAgICAgIGxlZnQ6IC05NXB4OwogICAgICAgIHdpZHRoOiAyOTBweDsKICAgICAgICBoZWlnaHQ6IDI5MHB4OwogICAgICAgIGJvcmRlcjogNTBweCBzb2xpZCByZ2JhKDI0NiwgMjM2LCAyMjQsIDAuMDI1KTsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CiAgICB9CgogICAgLmNvbnRhY3QtcGFuZWxfX2lubmVyIHsKICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CiAgICAgICAgei1pbmRleDogMjsKICAgICAgICB3aWR0aDogbWluKDEyMjBweCwgMTAwJSk7CiAgICAgICAgbWFyZ2luOiAwIGF1dG87CiAgICB9CgogICAgLmNvbnRhY3QtcGFuZWxfX2hlYWRlciB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6CiAgICAgICAgICAgIG1pbm1heCgwLCAxLjJmcikKICAgICAgICAgICAgbWlubWF4KDI4MHB4LCAwLjhmcik7CiAgICAgICAgYWxpZ24taXRlbXM6IGVuZDsKICAgICAgICBnYXA6IDUwcHg7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogY2xhbXAoNDBweCwgNXZ3LCA2NnB4KTsKICAgIH0KCiAgICAuY29udGFjdC1wYW5lbF9fZXllYnJvdyB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyOwogICAgICAgIG1hcmdpbi1ib3R0b206IDE4cHg7CiAgICAgICAgY29sb3I6IHZhcigtLWxpbGFjLWxpZ2h0KTsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgICAgICBsaW5lLWhlaWdodDogMTsKICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4xNmVtOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICB9CgogICAgLmNvbnRhY3QtcGFuZWxfX2V5ZWJyb3c6OmJlZm9yZSB7CiAgICAgICAgY29udGVudDogIiI7CiAgICAgICAgd2lkdGg6IDMwcHg7CiAgICAgICAgaGVpZ2h0OiAycHg7CiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxMXB4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWxpbGFjKTsKICAgIH0KCiAgICAuY29udGFjdC1wYW5lbF9faGVhZGVyIGgyIHsKICAgICAgICBtYXgtd2lkdGg6IDgyMHB4OwogICAgICAgIG1hcmdpbjogMDsKICAgICAgICBjb2xvcjogdmFyKC0tY3JlYW0pOwogICAgICAgIGZvbnQtZmFtaWx5OiAiQW50b24iLCBJbXBhY3QsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiBjbGFtcCg1MnB4LCA3dncsIDkxcHgpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDAuOTY7CiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxNWVtOwogICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7CiAgICB9CgogICAgLmNvbnRhY3QtcGFuZWxfX2hlYWRlciBoMjo6YWZ0ZXIgewogICAgICAgIGNvbnRlbnQ6ICIuIjsKICAgICAgICBjb2xvcjogdmFyKC0tbGlsYWMpOwogICAgfQoKICAgIC5jb250YWN0LXBhbmVsX19pbnRybyB7CiAgICAgICAgbWF4LXdpZHRoOiA0MzBweDsKICAgICAgICBtYXJnaW46IDAgMCA1cHg7CiAgICAgICAgY29sb3I6IHJnYmEoMjQ2LCAyMzYsIDIyNCwgMC43OCk7CiAgICAgICAgZm9udC1zaXplOiAxN3B4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjc7CiAgICB9CgogICAgLmNvbnRhY3QtcGFuZWxfX2Zvcm0gewogICAgICAgIHdpZHRoOiAxMDAlOwogICAgICAgIHBhZGRpbmc6IGNsYW1wKDlweCwgMS41dncsIDE2cHgpOwogICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpOwogICAgICAgIC13ZWJraXQtYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7CiAgICB9CgogICAgLmNvbnRhY3QtcGFuZWxfX2ZyYW1lIHsKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBtYXgtd2lkdGg6IDkwMHB4OwogICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CgogICAgICAgIGJvcmRlci1yYWRpdXM6IDdweDsKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jcmVhbSk7CiAgICB9CgogICAgLmNvbnRhY3QtcGFuZWxfX2ZyYW1lIGlmcmFtZSB7CiAgICAgICAgZGlzcGxheTogYmxvY2s7CiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgaGVpZ2h0OiA3MjBweDsKICAgICAgICBib3JkZXI6IDA7CiAgICAgICAgYm9yZGVyLXJhZGl1czogN3B4OwogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNyZWFtKTsKICAgICAgICB0cmFuc2l0aW9uOiBoZWlnaHQgMjQwbXMgZWFzZTsKICAgIH0KCiAgICBAbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHsKICAgICAgICAuY29udGFjdC1wYW5lbF9faGVhZGVyIHsKICAgICAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnI7CiAgICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICB9CgogICAgICAgIC5jb250YWN0LXBhbmVsX19pbnRybyB7CiAgICAgICAgICAgIG1heC13aWR0aDogNjIwcHg7CiAgICAgICAgfQogICAgfQoKICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2ODBweCkgewogICAgICAgIC5jb250YWN0LXBhbmVsIHsKICAgICAgICAgICAgcGFkZGluZzogNjZweCAxNnB4OwogICAgICAgIH0KCiAgICAgICAgLmNvbnRhY3QtcGFuZWxfX2hlYWRlciB7CiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IDM0cHg7CiAgICAgICAgfQoKICAgICAgICAuY29udGFjdC1wYW5lbF9faGVhZGVyIGgyIHsKICAgICAgICAgICAgZm9udC1zaXplOiBjbGFtcCg0NHB4LCAxNHZ3LCA2M3B4KTsKICAgICAgICB9CgogICAgICAgIC5jb250YWN0LXBhbmVsX19pbnRybyB7CiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTVweDsKICAgICAgICB9CgogICAgICAgIC5jb250YWN0LXBhbmVsX19mb3JtIHsKICAgICAgICAgICAgcGFkZGluZzogN3B4OwogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA3cHg7CiAgICAgICAgfQoKICAgICAgICAuY29udGFjdC1wYW5lbF9fZnJhbWUsCiAgICAgICAgLmNvbnRhY3QtcGFuZWxfX2ZyYW1lIGlmcmFtZSB7CiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgICAgICB9CiAgICB9CgogICAgQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHsKICAgICAgICAuY29udGFjdC1wYW5lbF9fZnJhbWUgaWZyYW1lIHsKICAgICAgICAgICAgdHJhbnNpdGlvbjogbm9uZTsKICAgICAgICB9CiAgICB9Cjwvc3R5bGU+Cgo8c2VjdGlvbgogICAgY2xhc3M9ImNvbnRhY3QtcGFuZWwiCiAgICBhcmlhLWxhYmVsbGVkYnk9ImNvbnRhY3QtcGFuZWwtdGl0bGUiCiAgICBkYXRhLWNvbnRhY3QtcGFuZWwKPgogICAgPGRpdiBjbGFzcz0iY29udGFjdC1wYW5lbF9faW5uZXIiPgoKICAgICAgICA8aGVhZGVyIGNsYXNzPSJjb250YWN0LXBhbmVsX19oZWFkZXIiPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFjdC1wYW5lbF9faGVhZGluZyI+CgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNvbnRhY3QtcGFuZWxfX2V5ZWJyb3ciPgogICAgICAgICAgICAgICAgICAgIENvbnRhY3QgdXMKICAgICAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICA8aDIgaWQ9ImNvbnRhY3QtcGFuZWwtdGl0bGUiPgogICAgICAgICAgICAgICAgICAgIEdldCBpbiB0b3VjaCB3aXRoIG91ciBmcmllbmRseSBzdXBwb3J0IHRlYW0KICAgICAgICAgICAgICAgIDwvaDI+CgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxwIGNsYXNzPSJjb250YWN0LXBhbmVsX19pbnRybyI+CiAgICAgICAgICAgICAgICBEcm9wIHVzIGEgbWVzc2FnZSBhbmQgdGVsbCB1cyBob3cgd2UgY2FuIGhlbHAuIEEgbWVtYmVyIG9mIHRoZQogICAgICAgICAgICAgICAgTmV1cm8tU3BhcmtzIHRlYW0gd2lsbCBiZSBpbiB0b3VjaCBzb29uLgogICAgICAgICAgICA8L3A+CgogICAgICAgIDwvaGVhZGVyPgoKICAgICAgICA8ZGl2IGNsYXNzPSJjb250YWN0LXBhbmVsX19mb3JtIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbnRhY3QtcGFuZWxfX2ZyYW1lIj4KCiAgICAgICAgICAgICAgICA8aWZyYW1lCiAgICAgICAgICAgICAgICAgICAgc3JjPSJodHRwczovL3ZpYnJhbnQtZ29saWNrLjIxNy0xNTQtNDctMjYucGxlc2sucGFnZS8/bnNfY3JtX3B1YmxpY19mb3JtPWZfazQ1ZXBNaEhpTXFIcjFWcVpGR3ZCQm53VlMxYVFWRDcmZW1iZWQ9MSIKICAgICAgICAgICAgICAgICAgICB0aXRsZT0iQ29udGFjdCBOZXVyby1TcGFya3MiCiAgICAgICAgICAgICAgICAgICAgbG9hZGluZz0ibGF6eSIKICAgICAgICAgICAgICAgICAgICByZWZlcnJlcnBvbGljeT0ic3RyaWN0LW9yaWdpbi13aGVuLWNyb3NzLW9yaWdpbiIKICAgICAgICAgICAgICAgICAgICBkYXRhLW5zLWNybS1pZnJhbWU9ImZfazQ1ZXBNaEhpTXFIcjFWcVpGR3ZCQm53VlMxYVFWRDciCiAgICAgICAgICAgICAgICA+PC9pZnJhbWU+CgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgPC9kaXY+CgogICAgPC9kaXY+Cjwvc2VjdGlvbj4KCjxzY3JpcHQ+CihmdW5jdGlvbiAoKSB7CiAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jdXJyZW50U2NyaXB0OwoKICAgIGNvbnN0IHNlY3Rpb24gPQogICAgICAgIHNjcmlwdCAmJgogICAgICAgIHNjcmlwdC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nICYmCiAgICAgICAgc2NyaXB0LnByZXZpb3VzRWxlbWVudFNpYmxpbmcubWF0Y2hlcygiW2RhdGEtY29udGFjdC1wYW5lbF0iKQogICAgICAgICAgICA/IHNjcmlwdC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nCiAgICAgICAgICAgIDogZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiW2RhdGEtY29udGFjdC1wYW5lbF0iKTsKCiAgICBpZiAoIXNlY3Rpb24pIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgY29uc3QgZnJhbWUgPSBzZWN0aW9uLnF1ZXJ5U2VsZWN0b3IoCiAgICAgICAgImlmcmFtZVtkYXRhLW5zLWNybS1pZnJhbWVdIgogICAgKTsKCiAgICBpZiAoIWZyYW1lIHx8IGZyYW1lLmRhdGFzZXQubnNDcm1SZXNpemVSZWFkeSA9PT0gIjEiKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGZyYW1lLmRhdGFzZXQubnNDcm1SZXNpemVSZWFkeSA9ICIxIjsKCiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIGZ1bmN0aW9uIChldmVudCkgewogICAgICAgIGlmICgKICAgICAgICAgICAgIWV2ZW50IHx8CiAgICAgICAgICAgICFldmVudC5kYXRhIHx8CiAgICAgICAgICAgIGV2ZW50LmRhdGEudHlwZSAhPT0gIm5zLWNybS1mb3JtLWhlaWdodCIKICAgICAgICApIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgaWYgKGV2ZW50LnNvdXJjZSAhPT0gZnJhbWUuY29udGVudFdpbmRvdykgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBjb25zdCBoZWlnaHQgPSBwYXJzZUludChldmVudC5kYXRhLmhlaWdodCwgMTApOwoKICAgICAgICBpZiAoCiAgICAgICAgICAgIE51bWJlci5pc0Zpbml0ZShoZWlnaHQpICYmCiAgICAgICAgICAgIGhlaWdodCA+IDI0MCAmJgogICAgICAgICAgICBoZWlnaHQgPCAxODAwCiAgICAgICAgKSB7CiAgICAgICAgICAgIGZyYW1lLnN0eWxlLmhlaWdodCA9IGhlaWdodCArICJweCI7CiAgICAgICAgfQogICAgfSk7Cn0pKCk7Cjwvc2NyaXB0Pg==[/fusion_code][fusion_code]PHNlY3Rpb24KICAgIGNsYXNzPSJjbGllbnQtc3RvcmllcyIKICAgIGFyaWEtbGFiZWxsZWRieT0iY2xpZW50LXN0b3JpZXMtdGl0bGUiCj4KICAgIDxkaXYgY2xhc3M9ImNsaWVudC1zdG9yaWVzX19pbm5lciI+CgogICAgICAgIDxoZWFkZXIgY2xhc3M9ImNsaWVudC1zdG9yaWVzX19oZWFkZXIiPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iY2xpZW50LXN0b3JpZXNfX2hlYWRpbmciPgoKICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjbGllbnQtc3Rvcmllc19fZXllYnJvdyI+CiAgICAgICAgICAgICAgICAgICAgQ2xpZW50IGV4cGVyaWVuY2VzCiAgICAgICAgICAgICAgICA8L3NwYW4+CgogICAgICAgICAgICAgICAgPGgyIGlkPSJjbGllbnQtc3Rvcmllcy10aXRsZSI+CiAgICAgICAgICAgICAgICAgICAgV2hhdCBvdXIgY2xpZW50cyBzYXkKICAgICAgICAgICAgICAgIDwvaDI+CgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxwIGNsYXNzPSJjbGllbnQtc3Rvcmllc19faW50cm8iPgogICAgICAgICAgICAgICAgSG9uZXN0IGZlZWRiYWNrIGZyb20gcGVvcGxlIGFuZCBidXNpbmVzc2VzIHN1cHBvcnRlZCBieSB0aGUKICAgICAgICAgICAgICAgIE5ldXJvLVNwYXJrcyB0ZWFtLgogICAgICAgICAgICA8L3A+CgogICAgICAgIDwvaGVhZGVyPgoKICAgICAgICA8ZGl2IGNsYXNzPSJjbGllbnQtc3Rvcmllc19fbGF5b3V0Ij4KCiAgICAgICAgICAgIDxzY3JpcHQKICAgICAgICAgICAgICAgIHNyYz0iaHR0cHM6Ly9lbGZzaWdodGNkbi5jb20vcGxhdGZvcm0uanMiCiAgICAgICAgICAgICAgICBhc3luYwogICAgICAgICAgICA+PC9zY3JpcHQ+CgogICAgICAgICAgICA8ZGl2CiAgICAgICAgICAgICAgICBjbGFzcz0iZWxmc2lnaHQtYXBwLWE0M2RiNTE5LWVjY2EtNDNiNi04Zjk3LThlY2Q2MGNmNzEzOCIKICAgICAgICAgICAgICAgIGRhdGEtZWxmc2lnaHQtYXBwLWxhenkKICAgICAgICAgICAgPjwvZGl2PgoKICAgICAgICA8L2Rpdj4KCiAgICA8L2Rpdj4KPC9zZWN0aW9uPgoKPHN0eWxlPgogICAgLmNsaWVudC1zdG9yaWVzLAogICAgLmNsaWVudC1zdG9yaWVzICogewogICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CiAgICB9CgogICAgLmNsaWVudC1zdG9yaWVzIHsKICAgICAgICAtLXB1cnBsZTogIzQyMzI2MTsKICAgICAgICAtLXB1cnBsZS1kYXJrOiAjMmUyMTQ3OwogICAgICAgIC0tbGlsYWM6ICNjYThmZWQ7CiAgICAgICAgLS1jcmVhbTogI2Y2ZWNlMDsKCiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlOwoKICAgICAgICB3aWR0aDogMTAwJTsKICAgICAgICBvdmVyZmxvdzogaGlkZGVuOwoKICAgICAgICBwYWRkaW5nOiBjbGFtcCg3MnB4LCA4dncsIDExMnB4KSAyNHB4OwoKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jcmVhbSk7CgogICAgICAgIGNvbG9yOiB2YXIoLS1wdXJwbGUtZGFyayk7CiAgICAgICAgZm9udC1mYW1pbHk6ICJMYXRvIiwgQXJpYWwsIHNhbnMtc2VyaWY7CiAgICB9CgogICAgLmNsaWVudC1zdG9yaWVzX19pbm5lciB7CiAgICAgICAgd2lkdGg6IG1pbigxMjIwcHgsIDEwMCUpOwogICAgICAgIG1hcmdpbjogMCBhdXRvOwogICAgfQoKICAgIC5jbGllbnQtc3Rvcmllc19faGVhZGVyIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczoKICAgICAgICAgICAgbWlubWF4KDAsIDEuMmZyKQogICAgICAgICAgICBtaW5tYXgoMjgwcHgsIDAuOGZyKTsKICAgICAgICBhbGlnbi1pdGVtczogZW5kOwoKICAgICAgICBtYXJnaW4tYm90dG9tOiBjbGFtcCg0MHB4LCA1dncsIDY2cHgpOwoKICAgICAgICBnYXA6IDUwcHg7CiAgICB9CgogICAgLmNsaWVudC1zdG9yaWVzX19leWVicm93IHsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CgogICAgICAgIG1hcmdpbi1ib3R0b206IDE4cHg7CgogICAgICAgIGNvbG9yOiB2YXIoLS1wdXJwbGUpOwoKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgICAgICBsaW5lLWhlaWdodDogMTsKCiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMTZlbTsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgfQoKICAgIC5jbGllbnQtc3Rvcmllc19fZXllYnJvdzo6YmVmb3JlIHsKICAgICAgICBjb250ZW50OiAiIjsKCiAgICAgICAgd2lkdGg6IDMwcHg7CiAgICAgICAgaGVpZ2h0OiAycHg7CgogICAgICAgIG1hcmdpbi1yaWdodDogMTFweDsKCiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tbGlsYWMpOwogICAgfQoKICAgIC5jbGllbnQtc3Rvcmllc19faGVhZGVyIGgyIHsKICAgICAgICBtYXgtd2lkdGg6IDc0MHB4OwoKICAgICAgICBtYXJnaW46IDA7CgogICAgICAgIGNvbG9yOiB2YXIoLS1wdXJwbGUtZGFyayk7CgogICAgICAgIGZvbnQtZmFtaWx5OiAiQW50b24iLCBJbXBhY3QsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiBjbGFtcCg1MnB4LCA3dncsIDkxcHgpOwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDAuOTY7CgogICAgICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMTVlbTsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgfQoKICAgIC5jbGllbnQtc3Rvcmllc19faGVhZGVyIGgyOjphZnRlciB7CiAgICAgICAgY29udGVudDogIi4iOwoKICAgICAgICBjb2xvcjogdmFyKC0tbGlsYWMpOwogICAgfQoKICAgIC5jbGllbnQtc3Rvcmllc19faW50cm8gewogICAgICAgIG1heC13aWR0aDogNDMwcHg7CgogICAgICAgIG1hcmdpbjogMCAwIDVweDsKCiAgICAgICAgY29sb3I6IHJnYmEoNDYsIDMzLCA3MSwgMC43Mik7CgogICAgICAgIGZvbnQtc2l6ZTogMTdweDsKICAgICAgICBsaW5lLWhlaWdodDogMS43OwogICAgfQoKICAgIC5jbGllbnQtc3Rvcmllc19fbGF5b3V0IHsKICAgICAgICBkaXNwbGF5OiBibG9jazsKCiAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgbWluLXdpZHRoOiAwOwogICAgfQoKICAgIC5jbGllbnQtc3Rvcmllc19fbGF5b3V0CiAgICAuZWxmc2lnaHQtYXBwLWE0M2RiNTE5LWVjY2EtNDNiNi04Zjk3LThlY2Q2MGNmNzEzOCwKICAgIC5jbGllbnQtc3Rvcmllc19fbGF5b3V0CiAgICAuZWxmc2lnaHQtYXBwLWE0M2RiNTE5LWVjY2EtNDNiNi04Zjk3LThlY2Q2MGNmNzEzOAogICAgPiBkaXYsCiAgICAuY2xpZW50LXN0b3JpZXNfX2xheW91dAogICAgLmVhcHBzLXdpZGdldCwKICAgIC5jbGllbnQtc3Rvcmllc19fbGF5b3V0CiAgICAuZWFwcHMtd2lkZ2V0LWNvbnRlbnQgewogICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7CiAgICAgICAgbWF4LXdpZHRoOiBub25lICFpbXBvcnRhbnQ7CiAgICB9CgogICAgLmNsaWVudC1zdG9yaWVzX19zaWRlIHsKICAgICAgICBkaXNwbGF5OiBncmlkOwogICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwoKICAgICAgICBnYXA6IDIycHg7CiAgICB9CgogICAgLmNsaWVudC1zdG9yaWVzX19sb3dlciB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6CiAgICAgICAgICAgIHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7CgogICAgICAgIG1hcmdpbi10b3A6IDIycHg7CgogICAgICAgIGdhcDogMjJweDsKICAgIH0KCiAgICAuc3RvcnktY2FyZCB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoKICAgICAgICBtaW4td2lkdGg6IDA7CgogICAgICAgIHBhZGRpbmc6IGNsYW1wKDI3cHgsIDN2dywgMzhweCk7CgogICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoNjYsIDUwLCA5NywgMC4xNCk7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4OwoKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNTgpOwoKICAgICAgICB0cmFuc2l0aW9uOgogICAgICAgICAgICBib3JkZXItY29sb3IgMjIwbXMgZWFzZSwKICAgICAgICAgICAgdHJhbnNmb3JtIDIyMG1zIGVhc2UsCiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3IgMjIwbXMgZWFzZSwKICAgICAgICAgICAgYm94LXNoYWRvdyAyMjBtcyBlYXNlOwogICAgfQoKICAgIC5zdG9yeS1jYXJkOmhvdmVyIHsKICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTNweCk7CgogICAgICAgIGJvcmRlci1jb2xvcjogcmdiYSg2NiwgNTAsIDk3LCAwLjMpOwoKICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNzgpOwoKICAgICAgICBib3gtc2hhZG93OgogICAgICAgICAgICAwIDE4cHggNDVweCByZ2JhKDY2LCA1MCwgOTcsIDAuMDgpOwogICAgfQoKICAgIC5zdG9yeS1jYXJkLS1mZWF0dXJlZCB7CiAgICAgICAgcGFkZGluZzogY2xhbXAoMzFweCwgNHZ3LCA0OHB4KTsKCiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wdXJwbGUpOwoKICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wdXJwbGUpOwoKICAgICAgICBjb2xvcjogdmFyKC0tY3JlYW0pOwogICAgfQoKICAgIC5zdG9yeS1jYXJkLS1mZWF0dXJlZDpob3ZlciB7CiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1wdXJwbGUtZGFyayk7CgogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXB1cnBsZS1kYXJrKTsKCiAgICAgICAgYm94LXNoYWRvdzoKICAgICAgICAgICAgMCAyMnB4IDUycHggcmdiYSg0NiwgMzMsIDcxLCAwLjIpOwogICAgfQoKICAgIC5zdG9yeS1jYXJkX19zdGFycyB7CiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDsKCiAgICAgICAgY29sb3I6IHZhcigtLXB1cnBsZSk7CgogICAgICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgc2Fucy1zZXJpZjsKICAgICAgICBmb250LXNpemU6IDE0cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CgogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjEzZW07CiAgICB9CgogICAgLnN0b3J5LWNhcmQtLWZlYXR1cmVkIC5zdG9yeS1jYXJkX19zdGFycyB7CiAgICAgICAgY29sb3I6IHZhcigtLWxpbGFjKTsKICAgIH0KCiAgICAuc3RvcnktY2FyZF9fY29weSB7CiAgICAgICAgZmxleC1ncm93OiAxOwoKICAgICAgICBjb2xvcjogcmdiYSg0NiwgMzMsIDcxLCAwLjgzKTsKCiAgICAgICAgZm9udC1zaXplOiAxNXB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjc2OwogICAgfQoKICAgIC5zdG9yeS1jYXJkLS1mZWF0dXJlZCAuc3RvcnktY2FyZF9fY29weSB7CiAgICAgICAgY29sb3I6IHJnYmEoMjQ2LCAyMzYsIDIyNCwgMC45KTsKCiAgICAgICAgZm9udC1zaXplOiAxNnB4OwogICAgICAgIGxpbmUtaGVpZ2h0OiAxLjg7CiAgICB9CgogICAgLnN0b3J5LWNhcmRfX2NvcHkgcCB7CiAgICAgICAgbWFyZ2luOiAwIDAgMTZweDsKICAgIH0KCiAgICAuc3RvcnktY2FyZF9fY29weSBwOmxhc3QtY2hpbGQgewogICAgICAgIG1hcmdpbi1ib3R0b206IDA7CiAgICB9CgogICAgLnN0b3J5LWNhcmRfX2NvcHktLWxpbWl0ZWQgewogICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKCiAgICAgICAgbWF4LWhlaWdodDogMjEwcHg7CiAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKCiAgICAgICAgdHJhbnNpdGlvbjogbWF4LWhlaWdodCA0NTBtcyBlYXNlOwogICAgfQoKICAgIC5zdG9yeS1jYXJkX19jb3B5LS1saW1pdGVkOjphZnRlciB7CiAgICAgICAgY29udGVudDogIiI7CgogICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgICAgICByaWdodDogMDsKICAgICAgICBib3R0b206IDA7CiAgICAgICAgbGVmdDogMDsKCiAgICAgICAgaGVpZ2h0OiA4MHB4OwoKICAgICAgICBiYWNrZ3JvdW5kOgogICAgICAgICAgICBsaW5lYXItZ3JhZGllbnQoCiAgICAgICAgICAgICAgICB0byBib3R0b20sCiAgICAgICAgICAgICAgICByZ2JhKDI1MCwgMjQ3LCAyNDIsIDApLAogICAgICAgICAgICAgICAgcmdiYSgyNTAsIDI0NywgMjQyLCAxKQogICAgICAgICAgICApOwoKICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKCiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAyMDBtcyBlYXNlOwogICAgfQoKICAgIC5zdG9yeS1jYXJkLS1mZWF0dXJlZCAuc3RvcnktY2FyZF9fY29weS0tbGltaXRlZDo6YWZ0ZXIgewogICAgICAgIGJhY2tncm91bmQ6CiAgICAgICAgICAgIGxpbmVhci1ncmFkaWVudCgKICAgICAgICAgICAgICAgIHRvIGJvdHRvbSwKICAgICAgICAgICAgICAgIHJnYmEoNjYsIDUwLCA5NywgMCksCiAgICAgICAgICAgICAgICByZ2JhKDY2LCA1MCwgOTcsIDEpCiAgICAgICAgICAgICk7CiAgICB9CgogICAgLnN0b3J5LWNhcmQuaXMtb3BlbiAuc3RvcnktY2FyZF9fY29weS0tbGltaXRlZCB7CiAgICAgICAgbWF4LWhlaWdodDogMTYwMHB4OwogICAgfQoKICAgIC5zdG9yeS1jYXJkLmlzLW9wZW4gLnN0b3J5LWNhcmRfX2NvcHktLWxpbWl0ZWQ6OmFmdGVyIHsKICAgICAgICBvcGFjaXR5OiAwOwogICAgfQoKICAgIC5zdG9yeS1jYXJkX190b2dnbGUgewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDsKCiAgICAgICAgbWFyZ2luLXRvcDogMTlweDsKICAgICAgICBwYWRkaW5nOiAwIDAgM3B4OwoKICAgICAgICBib3JkZXI6IDA7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIGN1cnJlbnRDb2xvcjsKCiAgICAgICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7CgogICAgICAgIGNvbG9yOiB2YXIoLS1wdXJwbGUpOwoKICAgICAgICBmb250LWZhbWlseTogIkxhdG8iLCBBcmlhbCwgc2Fucy1zZXJpZjsKICAgICAgICBmb250LXNpemU6IDExcHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDgwMDsKICAgICAgICBsaW5lLWhlaWdodDogMTsKCiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDhlbTsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwoKICAgICAgICBjdXJzb3I6IHBvaW50ZXI7CgogICAgICAgIGdhcDogN3B4OwoKICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAxODBtcyBlYXNlOwogICAgfQoKICAgIC5zdG9yeS1jYXJkLS1mZWF0dXJlZCAuc3RvcnktY2FyZF9fdG9nZ2xlIHsKICAgICAgICBjb2xvcjogdmFyKC0tbGlsYWMpOwogICAgfQoKICAgIC5zdG9yeS1jYXJkX190b2dnbGU6aG92ZXIsCiAgICAuc3RvcnktY2FyZF9fdG9nZ2xlOmZvY3VzLXZpc2libGUgewogICAgICAgIGNvbG9yOiB2YXIoLS1saWxhYyk7CiAgICB9CgogICAgLnN0b3J5LWNhcmQtLWZlYXR1cmVkIC5zdG9yeS1jYXJkX190b2dnbGU6aG92ZXIsCiAgICAuc3RvcnktY2FyZC0tZmVhdHVyZWQgLnN0b3J5LWNhcmRfX3RvZ2dsZTpmb2N1cy12aXNpYmxlIHsKICAgICAgICBjb2xvcjogdmFyKC0tY3JlYW0pOwogICAgfQoKICAgIC5zdG9yeS1jYXJkX190b2dnbGUgc3ZnIHsKICAgICAgICB3aWR0aDogMTVweDsKICAgICAgICBoZWlnaHQ6IDE1cHg7CgogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiBjdXJyZW50Q29sb3I7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAxLjg7CgogICAgICAgIHN0cm9rZS1saW5lY2FwOiByb3VuZDsKICAgICAgICBzdHJva2UtbGluZWpvaW46IHJvdW5kOwoKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjIwbXMgZWFzZTsKICAgIH0KCiAgICAuc3RvcnktY2FyZC5pcy1vcGVuIC5zdG9yeS1jYXJkX190b2dnbGUgc3ZnIHsKICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpOwogICAgfQoKICAgIC5zdG9yeS1jYXJkX19mb290ZXIgewogICAgICAgIGRpc3BsYXk6IGZsZXg7CiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKCiAgICAgICAgbWFyZ2luLXRvcDogMjlweDsKICAgICAgICBwYWRkaW5nLXRvcDogMjJweDsKCiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoNjYsIDUwLCA5NywgMC4xMyk7CgogICAgICAgIGdhcDogMTJweDsKICAgIH0KCiAgICAuc3RvcnktY2FyZC0tZmVhdHVyZWQgLnN0b3J5LWNhcmRfX2Zvb3RlciB7CiAgICAgICAgYm9yZGVyLXRvcC1jb2xvcjogcmdiYSgyNDYsIDIzNiwgMjI0LCAwLjE2KTsKICAgIH0KCiAgICAuc3RvcnktY2FyZF9faW5pdGlhbCB7CiAgICAgICAgZGlzcGxheTogZ3JpZDsKCiAgICAgICAgd2lkdGg6IDQycHg7CiAgICAgICAgaGVpZ2h0OiA0MnB4OwoKICAgICAgICBmbGV4OiAwIDAgNDJweDsKICAgICAgICBwbGFjZS1pdGVtczogY2VudGVyOwoKICAgICAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDY2LCA1MCwgOTcsIDAuMik7CiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlOwoKICAgICAgICBjb2xvcjogdmFyKC0tcHVycGxlKTsKCiAgICAgICAgZm9udC1mYW1pbHk6ICJBbnRvbiIsIEltcGFjdCwgc2Fucy1zZXJpZjsKICAgICAgICBmb250LXNpemU6IDE3cHg7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CiAgICB9CgogICAgLnN0b3J5LWNhcmQtLWZlYXR1cmVkIC5zdG9yeS1jYXJkX19pbml0aWFsIHsKICAgICAgICBib3JkZXItY29sb3I6IHJnYmEoMjAyLCAxNDMsIDIzNywgMC41NSk7CgogICAgICAgIGNvbG9yOiB2YXIoLS1jcmVhbSk7CiAgICB9CgogICAgLnN0b3J5LWNhcmRfX2Zvb3RlciA+IGRpdiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOwoKICAgICAgICBnYXA6IDNweDsKICAgIH0KCiAgICAuc3RvcnktY2FyZF9fZm9vdGVyIHN0cm9uZyB7CiAgICAgICAgY29sb3I6IHZhcigtLXB1cnBsZS1kYXJrKTsKCiAgICAgICAgZm9udC1mYW1pbHk6ICJBbnRvbiIsIEltcGFjdCwgc2Fucy1zZXJpZjsKICAgICAgICBmb250LXNpemU6IDE3cHg7CiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDsKICAgICAgICBsaW5lLWhlaWdodDogMTsKCiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKICAgIH0KCiAgICAuc3RvcnktY2FyZC0tZmVhdHVyZWQgLnN0b3J5LWNhcmRfX2Zvb3RlciBzdHJvbmcgewogICAgICAgIGNvbG9yOiB2YXIoLS1jcmVhbSk7CiAgICB9CgogICAgLnN0b3J5LWNhcmRfX2Zvb3RlciBkaXYgc3BhbiB7CiAgICAgICAgY29sb3I6IHJnYmEoNDYsIDMzLCA3MSwgMC41NCk7CgogICAgICAgIGZvbnQtc2l6ZTogOXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA4MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CgogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjFlbTsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwogICAgfQoKICAgIC5zdG9yeS1jYXJkLS1mZWF0dXJlZCAuc3RvcnktY2FyZF9fZm9vdGVyIGRpdiBzcGFuIHsKICAgICAgICBjb2xvcjogcmdiYSgyNDYsIDIzNiwgMjI0LCAwLjU2KTsKICAgIH0KCiAgICAuY2xpZW50LXN0b3JpZXNfX2FjdGlvbiB7CiAgICAgICAgZGlzcGxheTogZmxleDsKICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKCiAgICAgICAgbWFyZ2luLXRvcDogY2xhbXAoMzhweCwgNXZ3LCA1OHB4KTsKICAgIH0KCiAgICAuY2xpZW50LXN0b3JpZXMgLmNsaWVudC1zdG9yaWVzX19idXR0b24gewogICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CgogICAgICAgIG1pbi1oZWlnaHQ6IDU2cHg7CgogICAgICAgIHBhZGRpbmc6IDE2cHggMjRweDsKCiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tcHVycGxlKTsKICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7CgogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLXB1cnBsZSk7CgogICAgICAgIGNvbG9yOiB2YXIoLS1jcmVhbSk7CgogICAgICAgIGZvbnQtZmFtaWx5OiAiQW50b24iLCBJbXBhY3QsIHNhbnMtc2VyaWY7CiAgICAgICAgZm9udC1zaXplOiAxNXB4OwogICAgICAgIGZvbnQtd2VpZ2h0OiA0MDA7CiAgICAgICAgbGluZS1oZWlnaHQ6IDE7CgogICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjAyZW07CiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlOwoKICAgICAgICBnYXA6IDEzcHg7CgogICAgICAgIHRyYW5zaXRpb246CiAgICAgICAgICAgIHRyYW5zZm9ybSAyMjBtcyBlYXNlLAogICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yIDIyMG1zIGVhc2UsCiAgICAgICAgICAgIGJvcmRlci1jb2xvciAyMjBtcyBlYXNlLAogICAgICAgICAgICBjb2xvciAyMjBtcyBlYXNlLAogICAgICAgICAgICBib3gtc2hhZG93IDIyMG1zIGVhc2U7CiAgICB9CgogICAgLmNsaWVudC1zdG9yaWVzIC5jbGllbnQtc3Rvcmllc19fYnV0dG9uOmhvdmVyLAogICAgLmNsaWVudC1zdG9yaWVzIC5jbGllbnQtc3Rvcmllc19fYnV0dG9uOmZvY3VzLXZpc2libGUgewogICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtM3B4KTsKCiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1saWxhYyk7CgogICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWxpbGFjKTsKCiAgICAgICAgY29sb3I6IHZhcigtLXB1cnBsZS1kYXJrKTsKCiAgICAgICAgYm94LXNoYWRvdzoKICAgICAgICAgICAgMCAxNnB4IDM0cHggcmdiYSg2NiwgNTAsIDk3LCAwLjE2KTsKICAgIH0KCiAgICAuY2xpZW50LXN0b3JpZXNfX2J1dHRvbiBzdmcgewogICAgICAgIHdpZHRoOiAxOXB4OwogICAgICAgIGhlaWdodDogMTlweDsKCiAgICAgICAgZmxleDogMCAwIDE5cHg7CgogICAgICAgIGZpbGw6IG5vbmU7CiAgICAgICAgc3Ryb2tlOiBjdXJyZW50Q29sb3I7CiAgICAgICAgc3Ryb2tlLXdpZHRoOiAxLjg7CgogICAgICAgIHN0cm9rZS1saW5lY2FwOiByb3VuZDsKICAgICAgICBzdHJva2UtbGluZWpvaW46IHJvdW5kOwoKICAgICAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjIwbXMgZWFzZTsKICAgIH0KCiAgICAuY2xpZW50LXN0b3JpZXNfX2J1dHRvbjpob3ZlciBzdmcsCiAgICAuY2xpZW50LXN0b3JpZXNfX2J1dHRvbjpmb2N1cy12aXNpYmxlIHN2ZyB7CiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDRweCk7CiAgICB9CgogICAgQG1lZGlhIChtYXgtd2lkdGg6IDkwMHB4KSB7CiAgICAgICAgLmNsaWVudC1zdG9yaWVzX19oZWFkZXIgewogICAgICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmcjsKCiAgICAgICAgICAgIGdhcDogMjRweDsKICAgICAgICB9CgogICAgICAgIC5jbGllbnQtc3Rvcmllc19fc2lkZSB7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczoKICAgICAgICAgICAgICAgIHJlcGVhdCgyLCBtaW5tYXgoMCwgMWZyKSk7CiAgICAgICAgfQogICAgfQoKICAgIEBtZWRpYSAobWF4LXdpZHRoOiA2ODBweCkgewogICAgICAgIC5jbGllbnQtc3RvcmllcyB7CiAgICAgICAgICAgIHBhZGRpbmc6IDY2cHggMTZweDsKICAgICAgICB9CgogICAgICAgIC5jbGllbnQtc3Rvcmllc19faGVhZGVyIHsKICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMzRweDsKICAgICAgICB9CgogICAgICAgIC5jbGllbnQtc3Rvcmllc19faGVhZGVyIGgyIHsKICAgICAgICAgICAgZm9udC1zaXplOiBjbGFtcCg0NHB4LCAxNHZ3LCA2M3B4KTsKICAgICAgICB9CgogICAgICAgIC5jbGllbnQtc3Rvcmllc19faW50cm8gewogICAgICAgICAgICBmb250LXNpemU6IDE1cHg7CiAgICAgICAgfQoKICAgICAgICAuY2xpZW50LXN0b3JpZXNfX3NpZGUsCiAgICAgICAgLmNsaWVudC1zdG9yaWVzX19sb3dlciB7CiAgICAgICAgICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyOwogICAgICAgIH0KCiAgICAgICAgLnN0b3J5LWNhcmQsCiAgICAgICAgLnN0b3J5LWNhcmQtLWZlYXR1cmVkIHsKICAgICAgICAgICAgcGFkZGluZzogMjVweCAyMXB4OwogICAgICAgIH0KCiAgICAgICAgLnN0b3J5LWNhcmRfX2NvcHksCiAgICAgICAgLnN0b3J5LWNhcmQtLWZlYXR1cmVkIC5zdG9yeS1jYXJkX19jb3B5IHsKICAgICAgICAgICAgZm9udC1zaXplOiAxNXB4OwogICAgICAgICAgICBsaW5lLWhlaWdodDogMS43OwogICAgICAgIH0KCiAgICAgICAgLmNsaWVudC1zdG9yaWVzIC5jbGllbnQtc3Rvcmllc19fYnV0dG9uIHsKICAgICAgICAgICAgd2lkdGg6IDEwMCU7CiAgICAgICAgfQogICAgfQoKICAgIEBtZWRpYSAocHJlZmVycy1yZWR1Y2VkLW1vdGlvbjogcmVkdWNlKSB7CiAgICAgICAgLnN0b3J5LWNhcmQsCiAgICAgICAgLnN0b3J5LWNhcmRfX2NvcHktLWxpbWl0ZWQsCiAgICAgICAgLnN0b3J5LWNhcmRfX3RvZ2dsZSwKICAgICAgICAuc3RvcnktY2FyZF9fdG9nZ2xlIHN2ZywKICAgICAgICAuY2xpZW50LXN0b3JpZXNfX2J1dHRvbiwKICAgICAgICAuY2xpZW50LXN0b3JpZXNfX2J1dHRvbiBzdmcgewogICAgICAgICAgICB0cmFuc2l0aW9uOiBub25lOwogICAgICAgIH0KCiAgICAgICAgLnN0b3J5LWNhcmQ6aG92ZXIsCiAgICAgICAgLmNsaWVudC1zdG9yaWVzX19idXR0b246aG92ZXIsCiAgICAgICAgLmNsaWVudC1zdG9yaWVzX19idXR0b246Zm9jdXMtdmlzaWJsZSB7CiAgICAgICAgICAgIHRyYW5zZm9ybTogbm9uZTsKICAgICAgICB9CiAgICB9Cjwvc3R5bGU+Cgo8c2NyaXB0PgooZnVuY3Rpb24gKCkgewogICAgaWYgKHdpbmRvdy5uZXVyb1NwYXJrc0NsaWVudFN0b3JpZXNSZWFkeSkgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICB3aW5kb3cubmV1cm9TcGFya3NDbGllbnRTdG9yaWVzUmVhZHkgPSB0cnVlOwoKICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24gKGV2ZW50KSB7CiAgICAgICAgY29uc3QgYnV0dG9uID0gZXZlbnQudGFyZ2V0LmNsb3Nlc3QoIltkYXRhLXN0b3J5LXRvZ2dsZV0iKTsKCiAgICAgICAgaWYgKCFidXR0b24pIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgY29uc3QgY2FyZCA9IGJ1dHRvbi5jbG9zZXN0KCJbZGF0YS1zdG9yeS1jYXJkXSIpOwoKICAgICAgICBpZiAoIWNhcmQpIHsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgY29uc3QgbGFiZWwgPSBidXR0b24ucXVlcnlTZWxlY3Rvcigic3BhbiIpOwogICAgICAgIGNvbnN0IGlzT3BlbiA9IGNhcmQuY2xhc3NMaXN0LnRvZ2dsZSgiaXMtb3BlbiIpOwoKICAgICAgICBidXR0b24uc2V0QXR0cmlidXRlKAogICAgICAgICAgICAiYXJpYS1leHBhbmRlZCIsCiAgICAgICAgICAgIGlzT3BlbiA/ICJ0cnVlIiA6ICJmYWxzZSIKICAgICAgICApOwoKICAgICAgICBpZiAobGFiZWwpIHsKICAgICAgICAgICAgbGFiZWwudGV4dENvbnRlbnQgPSBpc09wZW4KICAgICAgICAgICAgICAgID8gIlNob3cgbGVzcyIKICAgICAgICAgICAgICAgIDogIlJlYWQgZnVsbCByZXZpZXciOwogICAgICAgIH0KICAgIH0pOwp9KSgpOwo8L3NjcmlwdD4=[/fusion_code][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]