Sublimated Jerseys
[fusion_builder_container type=”flex” hundred_percent=”no” 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_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=”” spacing_medium=”” margin_top_medium=”” margin_bottom_medium=”” spacing_small=”” margin_top_small=”” margin_bottom_small=”” margin_top=”” margin_bottom=”” padding_dimensions_medium=”” padding_top_medium=”” padding_right_medium=”” padding_bottom_medium=”” padding_left_medium=”” padding_dimensions_small=”” padding_top_small=”” padding_right_small=”” padding_bottom_small=”” padding_left_small=”” padding_top=”” padding_right=”” padding_bottom=”” padding_left=”” link_color=”” link_hover_color=”” border_sizes=”” 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=”” 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_color=”” background_image=”” skip_lazy_load=”” background_position=”center center” background_repeat=”no-repeat” fade=”no” background_parallax=”none” enable_mobile=”no” parallax_speed=”0.3″ background_blend_mode=”none” 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=”” 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=”” 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=”” 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_subgroup=”regular” z_index=”” z_index_hover=”” overflow=”” background_type=”single” 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_color=”” background_image=”” background_image_id=”” lazy_load=”none” skip_lazy_load=”” background_position=”left top” background_repeat=”no-repeat” background_blend_mode=”none” 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=”” 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]CgoKPGRpdiBpZD0ibG9hZGVyQWxpZ24iPgogICAgPGRpdiBjbGFzcz0ibG9hZGVyIj48L2Rpdj4KPC9kaXY+CjxkaXYgaWQ9ImlmcmFtZWRpdiIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7aGVpZ2h0OiAyOTA1cHg7bWluLWhlaWdodDogNjAwcHg7Ij4KICAgIDxpZnJhbWUgaWQ9Im15SWZyYW1lIiBzY3JvbGxpbmc9Im5vIiBoZWlnaHQ9IjEwMCUiIHdpZHRoPSIxMDAlIiBzcmM9Imh0dHBzOi8vd3d3LmF1Z3VzdGFzcG9ydHN3ZWFyLmNvbS9jdXN0b20tc3VibGltYXRpb24iPgogICAgPC9pZnJhbWU+CjwvZGl2Pgo8c3R5bGU+CiAgICBib2R5LCBodG1sIHsKICAgICAgICBvdmVyZmxvdzogaW5pdGlhbCAhaW1wb3J0YW50OwogICAgICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGluaXRpYWwgIWltcG9ydGFudDsKICAgIH0KICAgIC5zdG9yZS1mcm9udCB7CiAgICAgICAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgICB9CiAgICAjbG9hZGVyQWxpZ257CiAgICAgICAgaGVpZ2h0OiAxMDB2aDsKICAgICAgICBkaXNwbGF5OiBmbGV4OwogICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICB9CiAgICAubG9hZGVyIHsKICAgICAgICBib3JkZXI6IDE2cHggc29saWQgI2YzZjNmMzsKICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7CiAgICAgICAgYm9yZGVyLXRvcDogMTZweCBzb2xpZCAjMzQ5OGRiOwogICAgICAgIHdpZHRoOiAxMjBweDsKICAgICAgICBoZWlnaHQ6IDEyMHB4OwogICAgICAgIC13ZWJraXQtYW5pbWF0aW9uOiBzcGluIDJzIGxpbmVhciBpbmZpbml0ZTsgLyogU2FmYXJpICovCiAgICAgICAgYW5pbWF0aW9uOiBzcGluIDJzIGxpbmVhciBpbmZpbml0ZTsKICAgIH0KCiAgICAvKiBTYWZhcmkgKi8KICAgIEAtd2Via2l0LWtleWZyYW1lcyBzcGluIHsKICAgICAgICAwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH0KICAgICAgICAxMDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB9CiAgICB9CgogICAgQGtleWZyYW1lcyBzcGluIHsKICAgICAgICAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9CiAgICAgICAgMTAwJSB7IHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7IH0KICAgIH0KPC9zdHlsZT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgdmFyIGFzYkZTUGx1Z2luVmVyc2lvbiA9ICIyMDIyMDMxMC0xMzAwIjsKICAgIHZhciBwYWdlVXJsID0gbG9jYXRpb24uaHJlZjsKICAgIHZhciBkb21haW5VcmwgPSBkb2N1bWVudC5kb21haW47CiAgICB2YXIgcGFnZVF1ZXJ5ID0gbnVsbDsKICAgIHZhciBpZnJhbWVIYXNTYW1lRG9tYWluVXJsID0gdHJ1ZTsKCgogICAgdmFyIGRlZmF1bHRDb25maWcgPSB7CiAgICAgICAgJ2Rpc2NvdW50JyA6IDUsCiAgICAgICAgJ2FkZGxMZWFkVGltZScgOiAyLAogICAgICAgICdtb3EnOjYsCiAgICAgICAgJ21vcVByaWNlJzo2MAogICAgfTsKCiAgICB2YXIgY2F0ZWdvcnlBcnJheSA9IFsKICAgICAgICB7J25hbWUnIDogJ2ZhbndlYXInLCAnZGlzY291bnQnIDogZGVmYXVsdENvbmZpZy5kaXNjb3VudCwgJ2FkZGxMZWFkVGltZScgOiBkZWZhdWx0Q29uZmlnLmFkZGxMZWFkVGltZSwnbW9xJzpkZWZhdWx0Q29uZmlnLm1vcSwgJ21vcVByaWNlJzpkZWZhdWx0Q29uZmlnLm1vcVByaWNlIH0sCiAgICAgICAgeyduYW1lJyA6ICdsYWNyb3NzZScsICdkaXNjb3VudCcgOiBkZWZhdWx0Q29uZmlnLmRpc2NvdW50LCAnYWRkbExlYWRUaW1lJyA6IGRlZmF1bHRDb25maWcuYWRkbExlYWRUaW1lLCdtb3EnOmRlZmF1bHRDb25maWcubW9xLCAnbW9xUHJpY2UnOmRlZmF1bHRDb25maWcubW9xUHJpY2UgfSwKICAgICAgICB7J25hbWUnIDogJ2Jhc2ViYWxsJywgJ2Rpc2NvdW50JyA6IGRlZmF1bHRDb25maWcuZGlzY291bnQsICdhZGRsTGVhZFRpbWUnIDogZGVmYXVsdENvbmZpZy5hZGRsTGVhZFRpbWUsJ21vcSc6ZGVmYXVsdENvbmZpZy5tb3EsICdtb3FQcmljZSc6ZGVmYXVsdENvbmZpZy5tb3FQcmljZSB9LAogICAgICAgIHsnbmFtZScgOiAnYmFza2V0YmFsbCcsICdkaXNjb3VudCcgOiBkZWZhdWx0Q29uZmlnLmRpc2NvdW50LCAnYWRkbExlYWRUaW1lJyA6IGRlZmF1bHRDb25maWcuYWRkbExlYWRUaW1lLCdtb3EnOmRlZmF1bHRDb25maWcubW9xLCAnbW9xUHJpY2UnOmRlZmF1bHRDb25maWcubW9xUHJpY2UgfSwKICAgICAgICB7J25hbWUnIDogJ3NvY2NlcicsICdkaXNjb3VudCcgOiBkZWZhdWx0Q29uZmlnLmRpc2NvdW50LCAnYWRkbExlYWRUaW1lJyA6IGRlZmF1bHRDb25maWcuYWRkbExlYWRUaW1lLCdtb3EnOmRlZmF1bHRDb25maWcubW9xLCAnbW9xUHJpY2UnOmRlZmF1bHRDb25maWcubW9xUHJpY2UgfSwKICAgICAgICB7J25hbWUnIDogJ2Zvb3RiYWxsJywgJ2Rpc2NvdW50JyA6IGRlZmF1bHRDb25maWcuZGlzY291bnQsICdhZGRsTGVhZFRpbWUnIDogZGVmYXVsdENvbmZpZy5hZGRsTGVhZFRpbWUsJ21vcSc6ZGVmYXVsdENvbmZpZy5tb3EsICdtb3FQcmljZSc6ZGVmYXVsdENvbmZpZy5tb3FQcmljZSB9LAogICAgICAgIHsnbmFtZScgOiAnZmxlZWNlJywgJ2Rpc2NvdW50JyA6IGRlZmF1bHRDb25maWcuZGlzY291bnQsICdhZGRsTGVhZFRpbWUnIDogZGVmYXVsdENvbmZpZy5hZGRsTGVhZFRpbWUsJ21vcSc6ZGVmYXVsdENvbmZpZy5tb3EsICdtb3FQcmljZSc6ZGVmYXVsdENvbmZpZy5tb3FQcmljZSB9LAogICAgICAgIHsnbmFtZScgOiAndHJhY2snLCAnZGlzY291bnQnIDogZGVmYXVsdENvbmZpZy5kaXNjb3VudCwgJ2FkZGxMZWFkVGltZScgOiBkZWZhdWx0Q29uZmlnLmFkZGxMZWFkVGltZSwnbW9xJzpkZWZhdWx0Q29uZmlnLm1vcSwgJ21vcVByaWNlJzpkZWZhdWx0Q29uZmlnLm1vcVByaWNlIH0sCiAgICAgICAgeyduYW1lJyA6ICd0cmFpbmluZycsICdkaXNjb3VudCcgOiBkZWZhdWx0Q29uZmlnLmRpc2NvdW50LCAnYWRkbExlYWRUaW1lJyA6IGRlZmF1bHRDb25maWcuYWRkbExlYWRUaW1lLCdtb3EnOmRlZmF1bHRDb25maWcubW9xLCAnbW9xUHJpY2UnOmRlZmF1bHRDb25maWcubW9xUHJpY2UgfSwKICAgICAgICB7J25hbWUnIDogJ3NvZnRiYWxsJywgJ2Rpc2NvdW50JyA6IGRlZmF1bHRDb25maWcuZGlzY291bnQsICdhZGRsTGVhZFRpbWUnIDogZGVmYXVsdENvbmZpZy5hZGRsTGVhZFRpbWUsJ21vcSc6ZGVmYXVsdENvbmZpZy5tb3EsICdtb3FQcmljZSc6ZGVmYXVsdENvbmZpZy5tb3FQcmljZSB9LAogICAgICAgIHsnbmFtZScgOiAncG9sbycsICdkaXNjb3VudCcgOiBkZWZhdWx0Q29uZmlnLmRpc2NvdW50LCAnYWRkbExlYWRUaW1lJyA6IGRlZmF1bHRDb25maWcuYWRkbExlYWRUaW1lLCdtb3EnOmRlZmF1bHRDb25maWcubW9xLCAnbW9xUHJpY2UnOmRlZmF1bHRDb25maWcubW9xUHJpY2UgfSwKICAgICAgICB7J25hbWUnIDogJzUtZGF5LXR1cmJvJywgJ2Rpc2NvdW50JyA6IGRlZmF1bHRDb25maWcuZGlzY291bnQsICdhZGRsTGVhZFRpbWUnIDogZGVmYXVsdENvbmZpZy5hZGRsTGVhZFRpbWUsJ21vcSc6ZGVmYXVsdENvbmZpZy5tb3EsICdtb3FQcmljZSc6ZGVmYXVsdENvbmZpZy5tb3FQcmljZSB9LAogICAgICAgIHsnbmFtZScgOiAndm9sbGV5YmFsbCcsICdkaXNjb3VudCcgOiBkZWZhdWx0Q29uZmlnLmRpc2NvdW50LCAnYWRkbExlYWRUaW1lJyA6IGRlZmF1bHRDb25maWcuYWRkbExlYWRUaW1lLCdtb3EnOmRlZmF1bHRDb25maWcubW9xLCAnbW9xUHJpY2UnOmRlZmF1bHRDb25maWcubW9xUHJpY2UgfSwKICAgICAgICB7J25hbWUnIDogJ2JhYmUtcnV0aC10dXJibycsICdkaXNjb3VudCcgOiBkZWZhdWx0Q29uZmlnLmRpc2NvdW50LCAnYWRkbExlYWRUaW1lJyA6IGRlZmF1bHRDb25maWcuYWRkbExlYWRUaW1lLCdtb3EnOmRlZmF1bHRDb25maWcubW9xLCAnbW9xUHJpY2UnOmRlZmF1bHRDb25maWcubW9xUHJpY2UgfSwKICAgICAgICB7J25hbWUnIDogJ2FjY2Vzc29yaWVzJywgJ2Rpc2NvdW50JyA6IGRlZmF1bHRDb25maWcuZGlzY291bnQsICdhZGRsTGVhZFRpbWUnIDogZGVmYXVsdENvbmZpZy5hZGRsTGVhZFRpbWUsJ21vcSc6ZGVmYXVsdENvbmZpZy5tb3EsICdtb3FQcmljZSc6ZGVmYXVsdENvbmZpZy5tb3FQcmljZSB9LAogICAgICAgIHsnbmFtZScgOiAnY29tcHJlc3Npb24nLCAnZGlzY291bnQnIDogZGVmYXVsdENvbmZpZy5kaXNjb3VudCwgJ2FkZGxMZWFkVGltZScgOiBkZWZhdWx0Q29uZmlnLmFkZGxMZWFkVGltZSwnbW9xJzpkZWZhdWx0Q29uZmlnLm1vcSwgJ21vcVByaWNlJzpkZWZhdWx0Q29uZmlnLm1vcVByaWNlIH0sCiAgICAgICAgeyduYW1lJyA6ICdzZW1pLXN1YmxpbWF0ZWQnLCAnZGlzY291bnQnIDogZGVmYXVsdENvbmZpZy5kaXNjb3VudCwgJ2FkZGxMZWFkVGltZScgOiBkZWZhdWx0Q29uZmlnLmFkZGxMZWFkVGltZSwnbW9xJzpkZWZhdWx0Q29uZmlnLm1vcSwgJ21vcVByaWNlJzpkZWZhdWx0Q29uZmlnLm1vcVByaWNlIH0sCiAgICAgICAgeyduYW1lJyA6ICdkZWZhdWx0LXBhZ2UnLCAnZGlzY291bnQnIDogZGVmYXVsdENvbmZpZy5kaXNjb3VudCwgJ2FkZGxMZWFkVGltZScgOiBkZWZhdWx0Q29uZmlnLmFkZGxMZWFkVGltZSwnbW9xJzpkZWZhdWx0Q29uZmlnLm1vcSwgJ21vcVByaWNlJzpkZWZhdWx0Q29uZmlnLm1vcVByaWNlIH0sCiAgICAgICAgeyduYW1lJyA6ICdzZWFyY2gtZGlzcGxheS12aWV3LXRhZ3MnLCAndGFnJyA6ICdzZWFyY2gtZGlzcGxheS12aWV3LXRhZ3MnLCAgJ2Rpc2NvdW50JyA6IGRlZmF1bHRDb25maWcuZGlzY291bnQsICdhZGRsTGVhZFRpbWUnIDogZGVmYXVsdENvbmZpZy5hZGRsTGVhZFRpbWUsJ21vcSc6ZGVmYXVsdENvbmZpZy5tb3EsICdtb3FQcmljZSc6ZGVmYXVsdENvbmZpZy5tb3FQcmljZSB9LAogICAgICAgIHsnbmFtZScgOiAnc2VhcmNoLWRpc3BsYXktdmlldy10ZXJtJywgJ3NlYXJjaFRlcm0nIDogJ3NlYXJjaC1kaXNwbGF5LXZpZXctdGFncycsICdkaXNjb3VudCcgOiBkZWZhdWx0Q29uZmlnLmRpc2NvdW50LCAnYWRkbExlYWRUaW1lJyA6IGRlZmF1bHRDb25maWcuYWRkbExlYWRUaW1lLCdtb3EnOmRlZmF1bHRDb25maWcubW9xLCAnbW9xUHJpY2UnOmRlZmF1bHRDb25maWcubW9xUHJpY2UgfSwKICAgICAgICB7J25hbWUnIDogJ2N1c3RvbS1oZWFkd2VhcicsICdkaXNjb3VudCcgOiBkZWZhdWx0Q29uZmlnLmRpc2NvdW50LCAnYWRkbExlYWRUaW1lJyA6IGRlZmF1bHRDb25maWcuYWRkbExlYWRUaW1lLCdtb3EnOmRlZmF1bHRDb25maWcubW9xLCAnbW9xUHJpY2UnOmRlZmF1bHRDb25maWcubW9xUHJpY2UgfSwKICAgICAgICB7J25hbWUnIDogJ3N0eWxlcycsICdkaXNjb3VudCcgOiBkZWZhdWx0Q29uZmlnLmRpc2NvdW50LCAnYWRkbExlYWRUaW1lJyA6IGRlZmF1bHRDb25maWcuYWRkbExlYWRUaW1lLCdtb3EnOmRlZmF1bHRDb25maWcubW9xLCAnbW9xUHJpY2UnOmRlZmF1bHRDb25maWcubW9xUHJpY2UgfSwKICAgICAgICB7J25hbWUnIDogJ3J1bm5pbmctaGF0cycsICdkaXNjb3VudCcgOiBkZWZhdWx0Q29uZmlnLmRpc2NvdW50LCAnYWRkbExlYWRUaW1lJyA6IGRlZmF1bHRDb25maWcuYWRkbExlYWRUaW1lLCdtb3EnOmRlZmF1bHRDb25maWcubW9xLCAnbW9xUHJpY2UnOmRlZmF1bHRDb25maWcubW9xUHJpY2UgfSwKICAgICAgICB7J25hbWUnIDogJ2JlYW5pZXMta25pdHMnLCAnZGlzY291bnQnIDogZGVmYXVsdENvbmZpZy5kaXNjb3VudCwgJ2FkZGxMZWFkVGltZScgOiBkZWZhdWx0Q29uZmlnLmFkZGxMZWFkVGltZSwnbW9xJzpkZWZhdWx0Q29uZmlnLm1vcSwgJ21vcVByaWNlJzpkZWZhdWx0Q29uZmlnLm1vcVByaWNlIH0sCiAgICAgICAgeyduYW1lJyA6ICdjYW1vLWhhdHMnLCAnZGlzY291bnQnIDogZGVmYXVsdENvbmZpZy5kaXNjb3VudCwgJ2FkZGxMZWFkVGltZScgOiBkZWZhdWx0Q29uZmlnLmFkZGxMZWFkVGltZSwnbW9xJzpkZWZhdWx0Q29uZmlnLm1vcSwgJ21vcVByaWNlJzpkZWZhdWx0Q29uZmlnLm1vcVByaWNlIH0sCiAgICAgICAgeyduYW1lJyA6ICdvbi1maWVsZC1oYXRzJywgJ2Rpc2NvdW50JyA6IGRlZmF1bHRDb25maWcuZGlzY291bnQsICdhZGRsTGVhZFRpbWUnIDogZGVmYXVsdENvbmZpZy5hZGRsTGVhZFRpbWUsJ21vcSc6ZGVmYXVsdENvbmZpZy5tb3EsICdtb3FQcmljZSc6ZGVmYXVsdENvbmZpZy5tb3FQcmljZSB9LAogICAgICAgIHsnbmFtZScgOiAnbGlmZXN0eWxlLW91dGRvb3ItaGF0cycsICdkaXNjb3VudCcgOiBkZWZhdWx0Q29uZmlnLmRpc2NvdW50LCAnYWRkbExlYWRUaW1lJyA6IGRlZmF1bHRDb25maWcuYWRkbExlYWRUaW1lLCdtb3EnOmRlZmF1bHRDb25maWcubW9xLCAnbW9xUHJpY2UnOmRlZmF1bHRDb25maWcubW9xUHJpY2UgfSwKICAgICAgICB7J25hbWUnIDogJ3NpZGVsaW5lLWNvYWNoZXMtaGF0cycsICdkaXNjb3VudCcgOiBkZWZhdWx0Q29uZmlnLmRpc2NvdW50LCAnYWRkbExlYWRUaW1lJyA6IGRlZmF1bHRDb25maWcuYWRkbExlYWRUaW1lLCdtb3EnOmRlZmF1bHRDb25maWcubW9xLCAnbW9xUHJpY2UnOmRlZmF1bHRDb25maWcubW9xUHJpY2UgfSwKICAgICAgICB7J25hbWUnIDogJ3RydWNrZXItaGF0cycsICdkaXNjb3VudCcgOiBkZWZhdWx0Q29uZmlnLmRpc2NvdW50LCAnYWRkbExlYWRUaW1lJyA6IGRlZmF1bHRDb25maWcuYWRkbExlYWRUaW1lLCdtb3EnOmRlZmF1bHRDb25maWcubW9xLCAnbW9xUHJpY2UnOmRlZmF1bHRDb25maWcubW9xUHJpY2UgfSwKICAgICAgICB7J25hbWUnIDogJ3Zpc29ycycsICdkaXNjb3VudCcgOiBkZWZhdWx0Q29uZmlnLmRpc2NvdW50LCAnYWRkbExlYWRUaW1lJyA6IGRlZmF1bHRDb25maWcuYWRkbExlYWRUaW1lLCdtb3EnOmRlZmF1bHRDb25maWcubW9xLCAnbW9xUHJpY2UnOmRlZmF1bHRDb25maWcubW9xUHJpY2UgfSwKICAgICAgICB7J25hbWUnIDogJ2Jvb25pZS1oYXRzJywgJ2Rpc2NvdW50JyA6IGRlZmF1bHRDb25maWcuZGlzY291bnQsICdhZGRsTGVhZFRpbWUnIDogZGVmYXVsdENvbmZpZy5hZGRsTGVhZFRpbWUsJ21vcSc6ZGVmYXVsdENvbmZpZy5tb3EsICdtb3FQcmljZSc6ZGVmYXVsdENvbmZpZy5tb3FQcmljZSB9LAogICAgICAgIHsnbmFtZScgOiAnZmVhdHVyZXMnLCAnZGlzY291bnQnIDogZGVmYXVsdENvbmZpZy5kaXNjb3VudCwgJ2FkZGxMZWFkVGltZScgOiBkZWZhdWx0Q29uZmlnLmFkZGxMZWFkVGltZSwnbW9xJzpkZWZhdWx0Q29uZmlnLm1vcSwgJ21vcVByaWNlJzpkZWZhdWx0Q29uZmlnLm1vcVByaWNlIH0sCiAgICAgICAgeyduYW1lJyA6ICdmbGV4Zml0LWhhdHMnLCAnZGlzY291bnQnIDogZGVmYXVsdENvbmZpZy5kaXNjb3VudCwgJ2FkZGxMZWFkVGltZScgOiBkZWZhdWx0Q29uZmlnLmFkZGxMZWFkVGltZSwnbW9xJzpkZWZhdWx0Q29uZmlnLm1vcSwgJ21vcVByaWNlJzpkZWZhdWx0Q29uZmlnLm1vcVByaWNlIH0sCiAgICAgICAgeyduYW1lJyA6ICdzbmFwYmFjay1oYXRzJywgJ2Rpc2NvdW50JyA6IGRlZmF1bHRDb25maWcuZGlzY291bnQsICdhZGRsTGVhZFRpbWUnIDogZGVmYXVsdENvbmZpZy5hZGRsTGVhZFRpbWUsJ21vcSc6ZGVmYXVsdENvbmZpZy5tb3EsICdtb3FQcmljZSc6ZGVmYXVsdENvbmZpZy5tb3FQcmljZSB9LAogICAgICAgIHsnbmFtZScgOiAnc3RydWN0dXJlZC1oYXRzJywgJ2Rpc2NvdW50JyA6IGRlZmF1bHRDb25maWcuZGlzY291bnQsICdhZGRsTGVhZFRpbWUnIDogZGVmYXVsdENvbmZpZy5hZGRsTGVhZFRpbWUsJ21vcSc6ZGVmYXVsdENvbmZpZy5tb3EsICdtb3FQcmljZSc6ZGVmYXVsdENvbmZpZy5tb3FQcmljZSB9LAogICAgICAgIHsnbmFtZScgOiAndW5zdHJ1Y3R1cmVkLWhhdHMnLCAnZGlzY291bnQnIDogZGVmYXVsdENvbmZpZy5kaXNjb3VudCwgJ2FkZGxMZWFkVGltZScgOiBkZWZhdWx0Q29uZmlnLmFkZGxMZWFkVGltZSwnbW9xJzpkZWZhdWx0Q29uZmlnLm1vcSwgJ21vcVByaWNlJzpkZWZhdWx0Q29uZmlnLm1vcVByaWNlIH0KICAgIF07CgogICAgdmFyIGNhdGVnb3J5U2hhcmVNYXBwZXIgPSB7CiAgICAgICAgJ2ZhbndlYXInIDogJ2ZhbndlYXInLAogICAgICAgICdsYWNyb3NzZScgOiAnbGFjcm9zc2UnLAogICAgICAgICdiYXNlYmFsbCcgOiAnYmFzZWJhbGwnLAogICAgICAgICdiYXNrZXRiYWxsJyA6ICdiYXNrZXRiYWxsJywKICAgICAgICAnc29jY2VyJyA6ICdzb2NjZXInLAogICAgICAgICdmb290YmFsbCcgOiAnZm9vdGJhbGwnLAogICAgICAgICdmbGVlY2UnIDogJ2ZsZWVjZScsCiAgICAgICAgJ291dGVyd2VhcicgOiAnZmxlZWNlJywKICAgICAgICAndHJhY2snIDogJ3RyYWNrJywKICAgICAgICAndHJhaW5pbmcnIDogJ3RyYWluaW5nJywKICAgICAgICAnc29mdGJhbGwnIDogJ3NvZnRiYWxsJywKICAgICAgICAncG9sb3MnIDogJ3BvbG8nLAogICAgICAgICd0dXJibycgOiAnNS1kYXktdHVyYm8nLAogICAgICAgICd2b2xsZXliYWxsJyA6ICd2b2xsZXliYWxsJywKICAgICAgICAnYmFiZSBydXRoIHR1cmJvJyA6ICdiYWJlLXJ1dGgtdHVyYm8nLAogICAgICAgICdtYXNrcywgZ2FpdGVycywnIDogJ2FjY2Vzc29yaWVzJywKICAgICAgICAnY29tcHJlc3Npb24nIDogJ2NvbXByZXNzaW9uJywKICAgICAgICAnc2VtaS1zdWJsaW1hdGVkJyA6ICdzZW1pLXN1YmxpbWF0ZWQnLAogICAgICAgICdmcmVlc3R5bGUgc3VibGltYXRpb24nIDogJ2RlZmF1bHQtcGFnZScsCiAgICAgICAgJ3NlYXJjaC1kaXNwbGF5LXZpZXctdGFncycgOiAnc2VhcmNoLWRpc3BsYXktdmlldy10YWdzJywKICAgICAgICAnc2VhcmNoLWRpc3BsYXktdmlldy10ZXJtJyA6ICdzZWFyY2gtZGlzcGxheS12aWV3LXRlcm0nLAogICAgICAgICdjdXN0b20gaGVhZHdlYXInOiAnY3VzdG9tLWhlYWR3ZWFyJywKICAgICAgICAnc3R5bGVzJzogJ3N0eWxlcycsCiAgICAgICAgJ2FjdGl2ZS9saWdodHdlaWdodCc6ICdydW5uaW5nLWhhdHMnLAogICAgICAgICdiZWFuaWVzJzogJ2JlYW5pZXMta25pdHMnLAogICAgICAgICdjYW1vJzogJ2NhbW8taGF0cycsCiAgICAgICAgJ29uLWZpZWxkJzogJ29uLWZpZWxkLWhhdHMnLAogICAgICAgICdvdXRkb29yJzogJ2xpZmVzdHlsZS1vdXRkb29yLWhhdHMnLAogICAgICAgICdzaWRlbGluZSc6ICdzaWRlbGluZS1jb2FjaGVzLWhhdHMnLAogICAgICAgICd0cnVja2VycyAvIG1lc2ggYmFjayc6ICd0cnVja2VyLWhhdHMnLAogICAgICAgICd2aXNvcnMnOiAndmlzb3JzJywKICAgICAgICAnd2lkZSBicmltIC8gYm9vbmllJzogJ2Jvb25pZS1oYXRzJywKICAgICAgICAnZmVhdHVyZXMnOiAnZmVhdHVyZXMnLAogICAgICAgICdmbGV4Zml0JzogJ2ZsZXhmaXQtaGF0cycsCiAgICAgICAgJ3NuYXBiYWNrJzogJ3NuYXBiYWNrLWhhdHMnLAogICAgICAgICdzdHJ1Y3R1cmVkJzogJ3N0cnVjdHVyZWQtaGF0cycsCiAgICAgICAgJ3Vuc3RydWN0dXJlZCc6ICd1bnN0cnVjdHVyZWQtaGF0cycKICAgIH07CgogICAgd2luZG93Lm9ubWVzc2FnZSA9IChlKSA9PiB7CiAgICAgICAgdmFyIGRhdGEgPSBlLmRhdGEudG9TdHJpbmcoKTsKCiAgICAgICAgaWYoZS5kYXRhLmRvbWFpblVybCl7CiAgICAgICAgICAgIGlmcmFtZUhhc1NhbWVEb21haW5VcmwgPSBmYWxzZTsKICAgICAgICAgICAgcGFnZVVybCA9IGUuZGF0YS5wYWdlVXJsOwogICAgICAgICAgICBwYWdlUXVlcnkgPSBlLmRhdGEucGFnZVF1ZXJ5OwogICAgICAgICAgICB2YXIgZG9tYWluID0gZS5kYXRhLmRvbWFpblVybDsKICAgICAgICAgICAgZG9tYWluVXJsID0gZG9tYWluLnJlcGxhY2UoL15odHRwcz86XC9cLy8sJycpOwogICAgICAgICAgICBzZXRJZnJhbWVTcmMoKTsKICAgICAgICAgICAgdmFyIGlmcmFtZVNyYyA9ICBnZXRJZnJhbWVTcmMoKTsKICAgICAgICB9CiAgICAgICAgaWYgKGRhdGEuaW5kZXhPZignYXNnSWZyYW1lSGVpZ2h0JykgPiAtMSkgewogICAgICAgICAgICB2YXIgaWZyYW1lSGVpZ2h0ID0gZS5kYXRhLnNwbGl0KCI6Iik7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpZnJhbWVkaXYnKS5zdHlsZS5oZWlnaHQgPSBpZnJhbWVIZWlnaHRbMV0gKyAncHgnOwogICAgICAgIH0KICAgICAgICBpZiAoZGF0YS5pbmRleE9mKCdyZUxvYWRJZnJhbWUnKSA+IC0xKSB7CiAgICAgICAgICAgIC8vZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNob3dTdW1tYXJ5Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgc2V0SWZyYW1lU3JjKCk7CiAgICAgICAgfQogICAgICAgIGlmIChkYXRhLmluZGV4T2YoJ3Njcm9sbFRvVG9wJykgPiAtMSkgewogICAgICAgICAgICB3aW5kb3cuc2Nyb2xsVG8oeyB0b3A6IDAsIGxlZnQ6IDAsIGJlaGF2aW9yOiAnc21vb3RoJyB9KTsKICAgICAgICB9CiAgICAgICAgaWYgKGRhdGEuaW5kZXhPZignYXNnUGFnZU5hbWUnKSA+IC0xKSB7CiAgICAgICAgICAgIHZhciBwYWdlTmFtZSA9IGUuZGF0YS5zcGxpdCgiOiIpOwogICAgICAgICAgICBpZiAocGFnZU5hbWVbMV0gPT0gJ2NvbmZpZ3VyYXRvcicpCiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXlJZnJhbWUiKS5zZXRBdHRyaWJ1dGUoInNjcm9sbGluZyIsICJ5ZXMiKTsKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXlJZnJhbWUiKS5zZXRBdHRyaWJ1dGUoInNjcm9sbGluZyIsICJubyIpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChkYXRhLmluZGV4T2YoJ2NhcnREYXRhJykgPiAtMSkgewogICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSBnZXRDdXJyZW50VXJsUGFyYW1zKCk7CiAgICAgICAgICAgIHZhciBjYXRlZ29yeU5hbWUgPSBxdWVyeVN0cmluZ1snY2F0ZWdvcnlOYW1lJ107CiAgICAgICAgICAgIGlmKGNhdGVnb3J5TmFtZSl7CiAgICAgICAgICAgICAgICBjYXRlZ29yeU5hbWUgPSBjYXRlZ29yeU5hbWUudG9Mb3dlckNhc2UoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGNhdGVnb3J5TmFtZSA9ICdmcmVlc3R5bGUgc3VibGltYXRpb24nOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBwYXRoID0gbG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lOwogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIG9iaiA9IGRhdGEuc3BsaXQoIiMiKTsKICAgICAgICAgICAgbGV0IG9iakxpc3QgPSBvYmpbMV07CiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCJjYXJ0T2JqZWN0IixvYmpMaXN0KTsKICAgICAgICAgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oImNhcnRDYXRlZ29yeU5hbWUiLCBjYXRlZ29yeU5hbWUpOwogICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgiY2FydFBhdGgiLCBwYXRoKTsKICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uPScvY2FydCc7CiAgICAgICAgfQogICAgfTsKICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNteUlmcmFtZScpLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLCBlID0+IHsKICAgICAgICBzZW5kUGFyZW50SGVpZ2h0VG9DaGlsZCgpOwoKICAgIH0pCiAgICBmdW5jdGlvbiBzZW5kUGFyZW50SGVpZ2h0VG9DaGlsZCgpIHsKICAgICAgICB2YXIgY2hpbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXlJZnJhbWUiKS5jb250ZW50V2luZG93OwogICAgICAgIHZhciBlbGVtVG9wID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlmcmFtZWRpdiIpLm9mZnNldFRvcDsKICAgICAgICB2YXIgd2luZG93SGVpZ2h0ID0gIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgfHwgZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQgfHwgd2luZG93LmlubmVySGVpZ2h0OwogICAgICAgIHZhciBjYWxjSGVpZ2h0ID0gd2luZG93SGVpZ2h0IC0gZWxlbVRvcDsKICAgICAgICBpZiAoY2hpbGQucG9zdE1lc3NhZ2UpIHsKICAgICAgICAgICAgY2hpbGQucG9zdE1lc3NhZ2UoInBhcmVudEhlaWdodDoiICsgY2FsY0hlaWdodCwgJyonKTsKICAgICAgICAgICAgY2hpbGQucG9zdE1lc3NhZ2UoInBhcmVudERvbWFpbjoiICsgZG9tYWluVXJsLCAnKicpOwogICAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIHNlbmREYXRhVG9DaGlsZCgpIHsKICAgICAgICB2YXIgY2hpbGQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibXlJZnJhbWUiKS5jb250ZW50V2luZG93OwogICAgICAgIGlmIChjaGlsZC5wb3N0TWVzc2FnZSkgewogICAgICAgICAgICBjaGlsZC5wb3N0TWVzc2FnZSgibG9hZE5leHRQYWdlSWZyYW1lIiwgJyonKTsKICAgICAgICB9CiAgICB9CiAgICBmdW5jdGlvbiBnZXRGdWxsVXJsICgpewogICAgICAgIHZhciBzZWFyY2hMb2NhdGlvbiA9IGZhbHNlOwogICAgICAgIGlmKHdpbmRvdy5sb2NhdGlvbil7CiAgICAgICAgICAgIGlmKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpewogICAgICAgICAgICAgICAgaWYod2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHIoMSkpewogICAgICAgICAgICAgICAgICAgIHNlYXJjaExvY2F0aW9uID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZihzZWFyY2hMb2NhdGlvbil7CiAgICAgICAgICAgIHJldHVybiB3aW5kb3cubG9jYXRpb24uc2VhcmNoLnN1YnN0cigxKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB2YXIgYmFzZVVybCA9IHdpbmRvdy5kb2N1bWVudC5iYXNlVVJJOwogICAgICAgICAgICB2YXIgYmFzZVVybERhdGEgPSBiYXNlVXJsLnNwbGl0KCI/Iik7CiAgICAgICAgICAgIGlmKGJhc2VVcmxEYXRhWzFdICE9IHVuZGVmaW5lZCl7CiAgICAgICAgICAgICAgICByZXR1cm4gYmFzZVVybERhdGFbMV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuICIiOwogICAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIGdldEN1cnJlbnRVcmxQYXJhbXMgKCkgewogICAgICAgIGlmKGlmcmFtZUhhc1NhbWVEb21haW5VcmwgPT09IGZhbHNlKXsKICAgICAgICAgICAgcmV0dXJuIHBhZ2VRdWVyeTsKICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgdmFyIG9wZXJhdG9yID0gJyYnOwogICAgICAgICAgICB2YXIgZ2V0VXJsID0gZ2V0RnVsbFVybCgpOwogICAgICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSAoZnVuY3Rpb24ocGFyYW1zKSB7CiAgICAgICAgICAgICAgICBpZiAocGFyYW1zID09PSAiIikgcmV0dXJuIHt9OwogICAgICAgICAgICAgICAgdmFyIG9iaiA9IHt9OwogICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gcGFyYW1zW2ldLnNwbGl0KCc9JywgMik7CiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgb2JqW3ZhbHVlWzBdXSA9ICIiOwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgb2JqW3ZhbHVlWzBdXSA9IGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZVsxXS5yZXBsYWNlKC9cKy9nLCAiICIpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBvYmo7CiAgICAgICAgICAgIH0pKGdldFVybC5zcGxpdChvcGVyYXRvcikpOwoKICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5U3RyaW5nOwogICAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIHNldElmcmFtZVNyYyAoKSB7CiAgICAgICAgdmFyIHVybCA9ICBnZXRJZnJhbWVTcmMoKTsKICAgICAgICBpZih1cmwpIHsKICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215SWZyYW1lJykuc3JjID0gdXJsOwogICAgICAgIH1lbHNlIHsKICAgICAgICAgICAgdmFyIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteUlmcmFtZScpOwogICAgICAgICAgICBpZnJhbWUuc3JjID0gaWZyYW1lLnNyYzsKICAgICAgICB9CiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpewogICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaWZyYW1lZGl2Iikuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsb2FkZXJBbGlnbiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgfSwgMTAwMCk7CiAgICB9CiAgICBmdW5jdGlvbiB2YWxpZGF0ZSAocXVlcnlTdHJpbmcsIHR5cGUpIHsKICAgICAgICBpZihxdWVyeVN0cmluZyl7CiAgICAgICAgICAgIGlmKHF1ZXJ5U3RyaW5nW3R5cGVdKXsKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgZnVuY3Rpb24gZ2V0SWZyYW1lU3JjICgpIHsKICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSBnZXRDdXJyZW50VXJsUGFyYW1zKCk7CiAgICAgICAgICAgIAogICAgICAgIGlmKHZhbGlkYXRlKHF1ZXJ5U3RyaW5nLCdjYXRlZ29yeU5hbWUnKSl7CiAgICAgICAgICAgIHZhciBjYXRlZ29yeU5hbWUgPSBxdWVyeVN0cmluZ1snY2F0ZWdvcnlOYW1lJ107CiAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZVVybCgoY2F0ZWdvcnlOYW1lLnRvTG93ZXJDYXNlKCkpLnRyaW0oKSwgdHJ1ZSkKICAgICAgICB9IGVsc2UgaWYodmFsaWRhdGUocXVlcnlTdHJpbmcsJ3NlYXJjaFRlcm0nKSl7CiAgICAgICAgICAgIHZhciBzZWFyY2hUZXJtID0gcXVlcnlTdHJpbmdbJ3NlYXJjaFRlcm0nXTsKICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlVXJsKCdzZWFyY2gtZGlzcGxheS12aWV3LXRlcm0nLCBmYWxzZSkKICAgICAgICB9IGVsc2UgaWYodmFsaWRhdGUocXVlcnlTdHJpbmcsJ3RhZycpKXsKICAgICAgICAgICAgdmFyIHRhZyA9IHF1ZXJ5U3RyaW5nWyd0YWcnXTsKICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlVXJsKCdzZWFyY2gtZGlzcGxheS12aWV3LXRhZ3MnLCBmYWxzZSkKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHZhciBjdXJyZW50VVJMID0gcGFnZVVybDsKICAgICAgICAgICAgdmFyIHVybCA9IGN1cnJlbnRVUkwuc3BsaXQoIj8iKTsKICAgICAgICAgICAgdmFyIHVybEFycmF5ID0gdXJsWzBdOwogICAgICAgICAgICB2YXIgdXJsSHJlZkFycmF5ID0gdXJsQXJyYXkuc3BsaXQoJy8nKTsKICAgICAgICAgICAgdmFyIGNhdGVnb3J5TmFtZSA9IG51bGw7CiAgICAgICAgICAgIHVybEhyZWZBcnJheS5mb3JFYWNoKGZ1bmN0aW9uKHVybEVudGl0eSkgewogICAgICAgICAgICAgICAgY2F0ZWdvcnlBcnJheS5mb3JFYWNoKGZ1bmN0aW9uKGNhdGVnb3J5KXsKICAgICAgICAgICAgICAgICAgICBpZiggKHVybEVudGl0eS50b0xvd2VyQ2FzZSgpKS50cmltKCkgPT09ICgoY2F0ZWdvcnkubmFtZSkudG9Mb3dlckNhc2UoKSkudHJpbSgpICl7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5TmFtZSA9ICgoY2F0ZWdvcnkubmFtZSkudG9Mb3dlckNhc2UoKSkudHJpbSgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pCiAgICAgICAgICAgIHJldHVybiBnZW5lcmF0ZVVybChjYXRlZ29yeU5hbWUpOwogICAgICAgIH0KICAgIH0KICAgIGZ1bmN0aW9uIGlzQ29uZmlndXJhdG9yUGFnZSAoKSB7CiAgICAgICAgdmFyIHF1ZXJ5U3RyaW5nID0gZ2V0Q3VycmVudFVybFBhcmFtcygpOwogICAgICAgIGlmKHZhbGlkYXRlKHF1ZXJ5U3RyaW5nLCdzTnVtYmVyJykpewogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgZnVuY3Rpb24gaXNDYXBDb25maWd1cmF0b3JQYWdlICgpIHsKICAgICAgICB2YXIgcXVlcnlTdHJpbmcgPSBnZXRDdXJyZW50VXJsUGFyYW1zKCk7CiAgICAgICAgaWYodmFsaWRhdGUocXVlcnlTdHJpbmcsJ2ROdW1iZXInKSl7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBmdW5jdGlvbiBjaGVja0NhdGVnb3J5IChjYXRlZ29yeU5hbWUpIHsKICAgICAgICBjb25zdCBjYXRlZ29yeSA9IGNhdGVnb3J5QXJyYXkuZmlsdGVyKChpdGVtKSA9PiBpdGVtLm5hbWUgPT09IGNhdGVnb3J5TmFtZSk7CiAgICAgICAgaWYoY2F0ZWdvcnkubGVuZ3RoKXsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGZ1bmN0aW9uIGdlbmVyYXRlVXJsKGNhdGVnb3J5TmFtZSwgaXNDYXRlZ29yeU5hbWUpewogICAgICAgIHZhciBjdXJyZW50SWZyYW1lVXJsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215SWZyYW1lJykuc3JjOwogICAgICAgIHZhciBxdWVyeVN0cmluZyA9IGdldEN1cnJlbnRVcmxQYXJhbXMoKTsKICAgICAgICB2YXIgcmVwbGFjZVRleHQgPSAnY3VzdG9tLXN1YmxpbWF0aW9uJzsKICAgICAgICBpZihjYXRlZ29yeU5hbWUpewogICAgICAgICAgICByZXBsYWNlVGV4dCA9ICdjdXN0b20tc3VibGltYXRpb24tJytjYXRlZ29yeU5hbWU7CiAgICAgICAgICAgIGlmKGlzQ29uZmlndXJhdG9yUGFnZSgpKXsKICAgICAgICAgICAgICAgIHJlcGxhY2VUZXh0ID0gJ0NvbmZpZ3VyYXRvcic7CiAgICAgICAgICAgICAgICBjYXRlZ29yeU5hbWUgPSBjYXRlZ29yeVNoYXJlTWFwcGVyW2NhdGVnb3J5TmFtZV07CiAgICAgICAgICAgIH1lbHNlIGlmKGlzQ2FwQ29uZmlndXJhdG9yUGFnZSgpKXsKICAgICAgICAgICAgICAgIHJlcGxhY2VUZXh0ID0gJ0NhcENvbmZpZ3VyYXRvcic7CiAgICAgICAgICAgICAgICBjYXRlZ29yeU5hbWUgPSBjYXRlZ29yeVNoYXJlTWFwcGVyW2NhdGVnb3J5TmFtZV07CiAgICAgICAgICAgIH0gZWxzZSBpZighaXNDYXRlZ29yeU5hbWUpIHsKICAgICAgICAgICAgICAgIHJlcGxhY2VUZXh0ID0gJ1NlYXJjaERpc3BsYXlWaWV3JzsKICAgICAgICAgICAgICAgIGNhdGVnb3J5TmFtZSA9IGNhdGVnb3J5U2hhcmVNYXBwZXJbY2F0ZWdvcnlOYW1lXTsKICAgICAgICAgICAgfSBlbHNlIGlmKCAoY2F0ZWdvcnlOYW1lID09PSAnNS1kYXktdHVyYm8nKSB8fCAoY2F0ZWdvcnlOYW1lID09PSAnc2VtaS1zdWJsaW1hdGVkJykgKSB7CiAgICAgICAgICAgICAgICByZXBsYWNlVGV4dCA9IGNhdGVnb3J5TmFtZTsKICAgICAgICAgICAgfSBlbHNlIGlmKCFjaGVja0NhdGVnb3J5KGNhdGVnb3J5TmFtZSkpIHsKICAgICAgICAgICAgICAgIGNhdGVnb3J5TmFtZSA9ICdkZWZhdWx0LXBhZ2UnOwogICAgICAgICAgICAgICAgcmVwbGFjZVRleHQgPSAnY3VzdG9tLXN1YmxpbWF0aW9uJzsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZXsKICAgICAgICAgICAgY2F0ZWdvcnlOYW1lID0gJ2RlZmF1bHQtcGFnZSc7CiAgICAgICAgICAgIGlmKGlzQ29uZmlndXJhdG9yUGFnZSgpKXsKICAgICAgICAgICAgICAgIHJlcGxhY2VUZXh0ID0gJ0NvbmZpZ3VyYXRvcic7CiAgICAgICAgICAgIH0gZWxzZSBpZihpc0NhcENvbmZpZ3VyYXRvclBhZ2UoKSl7CiAgICAgICAgICAgICAgICBjYXRlZ29yeU5hbWUgPSAnY3VzdG9tLWhlYWR3ZWFyJzsKICAgICAgICAgICAgICAgIHJlcGxhY2VUZXh0ID0gJ0NhcENvbmZpZ3VyYXRvcic7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdmFyIEluZGV4ID0gY2F0ZWdvcnlBcnJheS5maW5kSW5kZXgoeCA9PiAoKHgubmFtZSkudG9Mb3dlckNhc2UoKSkudHJpbSgpID09PSBjYXRlZ29yeU5hbWUgKTsKICAgICAgICB2YXIgY2F0ZWdvcnlPYmogPSBjYXRlZ29yeUFycmF5W0luZGV4XTsKICAgICAgICB2YXIgdXJsID0gY3VycmVudElmcmFtZVVybC5zcGxpdCgnPycpOwogICAgICAgIHZhciB1cmxBcnJheSA9IHVybFswXTsKICAgICAgICB2YXIgcGFyYW1zQXJyYXkgPSB1cmxbMV07CiAgICAgICAgdmFyIHVybEhyZWZBcnJheSA9IHVybEFycmF5LnNwbGl0KCcvJyk7CiAgICAgICAgdmFyIHVybEhyZWZSZXBsYWNlRW50aXR5ID0gdXJsSHJlZkFycmF5W3VybEhyZWZBcnJheS5sZW5ndGggLTFdOwogICAgICAgIHVybFswXSA9IHVybEFycmF5LnJlcGxhY2UodXJsSHJlZlJlcGxhY2VFbnRpdHksIHJlcGxhY2VUZXh0KTsKICAgICAgICB2YXIgbmV3VXJsID0gdXJsLmpvaW4oJz8nKTsKICAgICAgICB2YXIgaHJlZiA9IG5ldyBVUkwobmV3VXJsKTsKICAgICAgICB2YXIgY2F0ZWdvcnlPYmpMZW5ndGggPSBPYmplY3Qua2V5cyhjYXRlZ29yeU9iaikubGVuZ3RoOwogICAgICAgIGlmKGNhdGVnb3J5T2JqTGVuZ3RoKSB7CiAgICAgICAgICAgIE9iamVjdC5rZXlzKGNhdGVnb3J5T2JqKS5mb3JFYWNoKGZ1bmN0aW9uKGtleSl7CiAgICAgICAgICAgICAgICBocmVmLnNlYXJjaFBhcmFtcy5kZWxldGUoa2V5KTsKICAgICAgICAgICAgICAgIGlmKGtleSA9PSAndGFnJyl7CiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBxdWVyeVN0cmluZ1sndGFnJ10KICAgICAgICAgICAgICAgICAgICBocmVmLnNlYXJjaFBhcmFtcy5zZXQoa2V5LCB2YWx1ZSk7CiAgICAgICAgICAgICAgICB9ZWxzZSBpZihrZXkgPT0gJ3NlYXJjaFRlcm0nKXsKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHF1ZXJ5U3RyaW5nWydzZWFyY2hUZXJtJ10KICAgICAgICAgICAgICAgICAgICBocmVmLnNlYXJjaFBhcmFtcy5zZXQoa2V5LCB2YWx1ZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgIGhyZWYuc2VhcmNoUGFyYW1zLnNldChrZXksIGNhdGVnb3J5T2JqW2tleV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0pCiAgICAgICAgfQogICAgICAgIGlmKGlzQ29uZmlndXJhdG9yUGFnZSgpIHx8IGlzQ2FwQ29uZmlndXJhdG9yUGFnZSgpKXsKICAgICAgICAgICAgT2JqZWN0LmtleXMocXVlcnlTdHJpbmcpLmZvckVhY2goZnVuY3Rpb24oa2V5KXsKICAgICAgICAgICAgICAgIGhyZWYuc2VhcmNoUGFyYW1zLmRlbGV0ZShrZXkpOwogICAgICAgICAgICAgICAgaHJlZi5zZWFyY2hQYXJhbXMuc2V0KGtleSwgcXVlcnlTdHJpbmdba2V5XSk7CiAgICAgICAgICAgIH0pCiAgICAgICAgfQoKICAgICAgICByZXR1cm4gaHJlZi50b1N0cmluZygpOwogICAgfQogICAgZnVuY3Rpb24gaXNTY3JvbGxlZEludG9WaWV3KCkgewogICAgICAgIHZhciBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlmcmFtZWRpdiIpOwogICAgICAgIHZhciBkb2NWaWV3VG9wID0gKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wKSB8fCAgZG9jdW1lbnQuYm9keS5zY3JvbGxUb3A7CiAgICAgICAgdmFyIHdpbmRvd0hlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0IHx8IGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0OwogICAgICAgIHZhciBkb2NWaWV3Qm90dG9tID0gZG9jVmlld1RvcCArIHdpbmRvd0hlaWdodDsKICAgICAgICB2YXIgZWxlbVRvcCA9IGVsZW0ub2Zmc2V0VG9wOwogICAgICAgIHZhciBlbGVtQm90dG9tID0gZWxlbVRvcCArIGVsZW0ub2Zmc2V0SGVpZ2h0OwogICAgICAgIHJldHVybiAoKGVsZW1Cb3R0b20gPD0gZG9jVmlld0JvdHRvbSkpOwogICAgfQogICAgaWYgKHR5cGVvZiAkICE9PSAidW5kZWZpbmVkIil7CiAgICAgICAgaWYoJChkb2N1bWVudCkucmVhZHkpIHskKGRvY3VtZW50KS5yZWFkeShwYWdlTG9hZCwgZmFsc2UpO30KICAgICAgICBlbHNlICB7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHBhZ2VMb2FkLCBmYWxzZSk7fQogICAgfWVsc2V7CiAgICAgICAgaWYgKHdpbmRvdy5hdHRhY2hFdmVudCkge3dpbmRvdy5hdHRhY2hFdmVudCgnb25sb2FkJywgcGFnZUxvYWQpO30KICAgICAgICBlbHNlIGlmICh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcikge3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgcGFnZUxvYWQsIGZhbHNlKTt9CiAgICAgICAgZWxzZSAge2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBwYWdlTG9hZCwgZmFsc2UpO30KICAgIH0KICAgIGZ1bmN0aW9uIHBhZ2VMb2FkKCkgewogICAgICAgIHNldElmcmFtZVNyYygpOwogICAgICAgIHdpbmRvdy5vbnNjcm9sbCA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAoaXNTY3JvbGxlZEludG9WaWV3KCkpIHsKICAgICAgICAgICAgICAgIHNlbmREYXRhVG9DaGlsZCgpOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIH0KPC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIA==[/fusion_code][/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]