Content-Type: multipart/related; start=; boundary=----------N4eNwrm1gWfA2YNEcWro80 Content-Location: http://www.cds73.fr/spip.php?article355 Subject: =?utf-8?Q?D=C3=A9c=C3=A8s=20en=20plong=C3=A9e=20souterrained'Agn=C3=A8s=20MILOWKA=20-=20Comit=C3=A9=20D=C3=A9partemental=20de=20Sp=C3=A9l=C3=A9ologie=20de=20la=20Savoie?= MIME-Version: 1.0 ------------N4eNwrm1gWfA2YNEcWro80 Content-Disposition: inline; filename=spip.htm Content-Type: text/html; charset=utf-8; name=spip.htm Content-ID: Content-Location: http://www.cds73.fr/spip.php?article355 Content-Transfer-Encoding: Quoted-Printable = = = = = = = = = = = = = = = D=C3=A9c=C3=A8s en plong=C3=A9e souterrained'Agn=C3=A8s MILOWKA = - Comit=C3=A9 D=C3=A9partemental de Sp=C3=A9l=C3=A9ologie de la Savoie<= /title> = = = <script src=3D"prive/javascript/jquery.js" type=3D"text/javascript"></sc= ript> <script src=3D"prive/javascript/jquery.form.js" type=3D"text/javascript"= ></script> <script src=3D"prive/javascript/ajaxCallback.js" type=3D"text/javascript= "></script> <!-- insert_head --><script type=3D"text/javascript"> jQuery(document).ready(function() { setHover() }); </script><script src=3D"http://www.cds73.fr/plugins/sarkaspip_300/scr= ipts/jcarousellite_1.0.1.js" type=3D"text/javascript"></script><script s= rc=3D"http://www.cds73.fr/plugins/sarkaspip_300/scripts/jquery.mousewhee= l.js" type=3D"text/javascript"></script> = </head> <body dir=3D"ltr"> <div id=3D"container"> <div id=3D"header"> = <div class=3D"bandeau_haut"> = <div class=3D"nav_bandeau"> = <!-- Navigation dans les langues --> = <div class=3D"nav_langue"> <ul> <li class=3D"on"> [<a rel=3D"start" href=3D"spip.php?article11&calendrier_mois= =3D3&calendrier_annee=3D2004&lang=3Dfr" title=3D"français">= fr</a>] </li> </ul> </div> = <!-- Navigation dans les raccourcis --> = <!-- Navigation dans les raccourcis --> = </div> = = = = <a class=3D"site_logo" href=3D"http://cds73.fr" title=3D"Accueil du sit= e"><img src=3D"local/cache-vignettes/L600xH78/siteon0-1d235.png" alt=3D"= " width=3D'600' height=3D'78' class=3D'spip_logos' style=3D'height:78px= ;width:600px;' /></a> <div class=3D"site_nom"> = <h1><a href=3D"http://cds73.fr" title=3D"Accueil du site">Comit=C3=A9= D=C3=A9partemental de Sp=C3=A9l=C3=A9ologie de la Savoie</a></h1> = = </div> <br class=3D"nettoyeur" /> </div> = <div class=3D"bandeau_chemin"> = <div class=3D"recherche_chemin"> = <div class=3D"formulaire_spip formulaire_recherche" id=3D"formulaire_= recherche"> <form action=3D"http://www.cds73.fr/spip.php?page=3Drecherche" method=3D= "get"><div> <input name=3D"page" value=3D"recherche" type=3D"hidden" /> = <label for=3D"recherche">Rechercher :</label> <input type=3D"text" class=3D"text" size=3D"10" name=3D"recherche" id=3D= "recherche" accesskey=3D"4" /> <input type=3D"submit" class=3D"submit" value=3D">>" title=3D"Rec= hercher" /> </div></form> </div> <span>Rechercher dans le site</span> </div> = = <div class=3D"chemin"> <a href=3D"http://cds73.fr">Accueil du site</a> = > = = <a href=3D"spip.php?rubrique2" title=3D"Se rendre sur la page de cet= te rubrique">Les commissions</a> = = = = > = = <a href=3D"spip.php?rubrique17" title=3D"Se rendre sur la page de ce= tte rubrique">Secours</a> = = = </div> </div> </div> = <div id=3D"wrapper"> <div id=3D"content"> = <div id=3D"article" class=3D"article"> = <div class=3D"titre"><h1>D=C3=A9c=C3=A8s en plong=C3=A9e souterraine= d’Agn=C3=A8s MILOWKA </h1></div> = = <div class=3D"description"> = = = = = <div class=3D"cartouche"> = = = = mardi 15 mars 2011 = = = <br />par = <a href=3D"spip.php?auteur45">FFS</a> = = = <br />popularité : 1% = = = = = = = </div> <br class=3D"nettoyeur" /> = = = <div class=3D"texte"><p>Sur le site de plong=C3=A9esout :</p> <p>Notre communaut=C3=A9 vient encore de perdre l’un des siens. Ag= nes Milowka qui a =C3=A9t=C3=A9 une des plongeuses du film Sanctum a =C3= =A9t=C3=A9 retrouv=C3=A9e morte dans la fameuse Tank Cave dans la r=C3=A9= gion du Mt Gambier en Australie.</p> <p>Les derniers =C3=A9l=C3=A9ments indiquent une probable r=C3=A9cup=C3=A9= ration du corps par un forage compte tenu de l’=C3=A9troitesse des= passages qu’elle explorait =C3=A0 cet endroit et la faible profon= deur de ce r=C3=A9seau (20m).</p> <p>La news : <a href=3D'http://www.heraldsun.com.au/news/victor' cl= ass=3D'spip_out' rel=3D'nofollow'>http://www.heraldsun.com.au/news/victo= r</a> ... 6013495041 Son site : <a href=3D'http://www.AgnesMilowka.com' class=3D'spip_ou= t' rel=3D'nofollow'>http://www.AgnesMilowka.com</a></p> <p>Les explos en cours : <a href=3D'http://ezinearticles.com/?Pushi= ng-the-C' class=3D'spip_out' rel=3D'nofollow'>http://ezinearticles.com/?= Pushing-the-C</a> ... id=3D5474129</p> <p>Son corps vient d’=C3=AAtre r=C3=A9cup=C3=A9r=C3=A9 aujourdR= 17;hui 15 mars vers 16h00 heure locale.</p></div> = = = = = = = = = = <br class=3D"nettoyeur" /> </div> = = = = = = = = = </div> = = = = = = = = </div> </div> = <div id=3D"navigation"> = <script type=3D"text/javascript"> //<![CDATA[ = function hover(obj) { if(document.all) { UL =3D obj.getElementsByTagName('ul'); if(UL.length > 0) {UL[0].style.display =3D 'block';} } } function hout(obj) { if(document.all) { UL =3D obj.getElementsByTagName('ul'); if(UL.length > 0) {UL[0].style.display =3D 'none';} } } function setHover(){ if (document.getElementById('menu_rubriques')) { LI =3D document.getElementById('menu_rubriques').getElementsByTagName(= 'li'); nLI =3D LI.length; for(i=3D0; i < nLI; i++){ LI[i].onmouseover =3D function(){hover(this);} LI[i].onmouseout =3D function(){hout(this);} } } } //]]> </script> <div id=3D"menu_rubriques" class=3D"noisette menu_rub1"> <ul class=3D"menulist"> <li class=3D"smenu"> <a href=3D"spip.php?rubrique1">Le CDS 73</a> = = <ul> = <li> <a href=3D"spip.php?rubrique3">Administration</a> = = = </li> = <li> <a href=3D"spip.php?rubrique4">Statuts et r=C3=A8glement int=C3=A9= rieur</a> = = = </li> = <li> <a href=3D"spip.php?rubrique5">Les agr=C3=A9ments</a> = = = </li> = = </ul> = = </li> <li class=3D"smenu"> <a href=3D"spip.php?rubrique2">Les commissions</a> = = <ul> = <li> <a href=3D"spip.php?rubrique11">=C3=89cole D=C3=A9partementale de= Sp=C3=A9l=C3=A9ologie</a> = = = </li> = <li> <a href=3D"spip.php?rubrique12">Fichier</a> = = = </li> = <li> <a href=3D"spip.php?rubrique13">Mines</a> = = = </li> = <li> <a href=3D"spip.php?rubrique14">Publication</a> = = = </li> = <li> <a href=3D"spip.php?rubrique16">Scientifique</a> = = = </li> = <li> <a href=3D"spip.php?rubrique17">Secours</a> = = = </li> = <li> <a href=3D"spip.php?rubrique43">Biologie</a> = = = </li> = <li> <a href=3D"spip.php?rubrique45">Environnement</a> = = = </li> = <li> <a href=3D"spip.php?rubrique48">M=C3=A9dicale</a> = = = </li> = = </ul> = = </li> <li class=3D"smenu"> <a href=3D"spip.php?rubrique7">Les Clubs</a> = = <ul> = <li> <a href=3D"spip.php?rubrique20">ASAR</a> = = = </li> = <li> <a href=3D"spip.php?rubrique25">CAF Albertville</a> = = = </li> = <li> <a href=3D"spip.php?rubrique26">CAF Chambery</a> = = = </li> = <li> <a href=3D"spip.php?rubrique28">MAPS</a> = = = </li> = <li> <a href=3D"spip.php?rubrique29">MASS</a> = = = </li> = <li> <a href=3D"spip.php?rubrique30">SCS</a> = = = </li> = <li> <a href=3D"spip.php?rubrique32">URSUS</a> = = = </li> = = </ul> = = </li> <li class=3D"smenu"> <a href=3D"spip.php?rubrique8">La sp=C3=A9l=C3=A9ologie savoyarde</= a> = = <ul> = <li> <a href=3D"spip.php?rubrique33">La sp=C3=A9l=C3=A9o, c=E2=80=99es= t quoi ?</a> = = = </li> = <li> <a href=3D"spip.php?rubrique34">Sp=C3=A9l=C3=A9om=C3=A9trie de la= Savoie</a> = = = </li> = <li> <a href=3D"spip.php?rubrique40">Les grands noms de la sp=C3=A9l=C3= =A9ologie savoyarde</a> = = = </li> = = </ul> = = </li> <li> <a href=3D"spip.php?rubrique9">Explorations</a> = = = = = </li> <li> <a href=3D"spip.php?rubrique41">Br=C3=A8ves, d=E2=80=99ici et d=E2=80= =99ailleurs ...</a> = = = = = </li> <li class=3D"smenu"> <a href=3D"spip.php?rubrique38">Revue de presse</a> = = <ul> = <li> <a href=3D"spip.php?rubrique49">publications r=C3=A9guli=C3=A8res= </a> = = = </li> = = </ul> = = </li> <li> <a href=3D"spip.php?rubrique39">=C3=80 d=C3=A9couvrir</a> = = = = = </li> <li> <a href=3D"spip.php?rubrique46">Des nouvelles de la F=C3=A9d=C3=A9r= ation</a> = = = = = </li> </ul> <!-- menulist --> </div> <!-- menu_rub1 --> = <div id=3D"menu_raccourcis" class=3D"noisette nav2"><ul> = = = <li class=3D"raccourci_nav1"><a href=3D"http://www.cds73.fr/spip.php?p= age=3Dagenda&id_rubrique=3D44&annee=3D2011&mois=3D06">Agenda= </a></li> = = = <li class=3D"raccourci_nav1"><a href=3D"http://www.cds73.fr/spip.php?p= age=3Dgalerie&id_rubrique=3D47">Galerie</a></li> = = </ul> </div> = <div id=3D"nav_visiteur" class=3D"noisette nav2"> <ul> = = = = = = = = = = <li class=3D"raccourci_nav1"><a href=3D"http://www.cds73.fr/spip.php?= page=3Dlogin-public&url=3D.%2F">Connexion</a></li> </ul> = = </div> = = = <div id=3D"noisette_statistiques" class=3D"noisette"> <h1 class=3D"intitule">Statistiques</h1> <div class=3D"contenu"> = <h2 class=3D"titre_bloc">Dernière mise à jour</h2> = <div class=3D"texte">samedi 18 juin 2011</div> = = </div> <div class=3D"contenu"> <h2 class=3D"titre_bloc">Publication</h2> <div class=3D"texte"> = = = = 264 Articles<br /> = 10 Albums photo<br /> Aucune brève<br /> Aucun site<br /> = 54 Auteurs<br /> </div> </div> = <div class=3D"contenu"> <h2 class=3D"titre_bloc">Visites</h2> <div class=3D"texte"> 4 aujourd'hui<br /> 48 hier<br /> 14271 depuis le début<br /> = = 4 visiteurs actuellement connectés = </div> </div> </div> = <div id=3D"noisette_badges" class=3D"noisette"> <div class=3D"badges"> = = = = = <br class=3D"nettoyeur" /> </div> </div> </div> = <div id=3D"extra"> = <div id=3D"nav_recherche" class=3D"noisette"> <h1 class=3D"intitule">Rechercher</h1> = = = = <div class=3D"nav_recherche contenu "> <h2 class=3D"titre_bloc">sur le web</h2> <a href=3D"http://www.exalead.com/search"><img class=3D"moteur" src=3D"= plugins/sarkaspip_300/images/logo-exalead.gif" alt=3D"Exalead" /></a> <div class=3D"formulaire_spip formulaire_recherche" id=3D"exalead"> = <form method=3D"get" action=3D"http://partner.exalead.fr/search/C=3D0"= > <div> <input type=3D"hidden" name=3D"2q" value=3D"*" /> <input type=3D"hidden" name=3D"siteop" value=3D"include" /> <input type=3D"hidden" name=3D"site" value=3D"" /> = <label for=3D"q">Rechercher :</label> <input type=3D"text" class=3D"text" name=3D"q" id=3D"q" size=3D"10" = maxlength=3D"255" value=3D"Saisir le(s) mot(s)" onfocus=3D"this.value=3D= '';" /> <input type=3D"image" src=3D"squelettes-dist/rechercher.gif" class=3D= "submit" value=3D"" /> = </div> </form> </div> </div> = = = = = </div> = <div id=3D"noisette_navigation" class=3D"noisette"> <h1 class=3D"intitule">Navigation</h1> = = <div class=3D'ajaxbloc env-n82Y+Rq/YGHZdUxmxAzYK2xgUbqNHDU1EUSaq6nQWuR= TepZwlLAqhCspPztxToAeKm1t+txF1TVH917ydbYBA9qyDlwJB0W2XxAVjjuW7anskBYjB3N= Ael1BmHfqLP5EubUYEUxomYcw3HRkXcEFx9RNdmYMGz3RDOoBK7PPiLz7l2MMnw=3D=3D'> <a name=3D'pagination_article_rubrique_date' id=3D'pagination_article_ru= brique_date'></a> <div class=3D"contenu"> <h2 class=3D"titre_bloc">Articles de la rubrique</h2> <div class=3D"liste"><ul> = <li><a class=3D"titre" href=3D"spip.php?article374" title=3D"Se rendr= e sur la page de cet article"> Le 50 =C3=A8me anniversaire du Sp=C3=A9l=C3=A9o Secourts Hongrois </a></li> = <li><span class=3D"titre"> D=C3=A9c=C3=A8s en plong=C3=A9e souterrained’Agn=C3=A8s MILOW= KA = </span></li> = <li><a class=3D"titre" href=3D"spip.php?article315" title=3D"Se rendr= e sur la page de cet article"> Flash info SSF </a></li> = <li><a class=3D"titre" href=3D"spip.php?article282" title=3D"Se rendr= e sur la page de cet article"> Secours de La Dragonniere de Gaud </a></li> = <li><a class=3D"titre" href=3D"spip.php?article300" title=3D"Se rendr= e sur la page de cet article"> exercice secours en SAVOIE </a></li> = <li><a class=3D"titre" href=3D"spip.php?article292" title=3D"Se rendr= e sur la page de cet article"> Formation sp=C3=A9l=C3=A9o secours en Turquie </a></li> = <li><a class=3D"titre" href=3D"spip.php?article257" title=3D"Se rendr= e sur la page de cet article"> Exercice secours en sp=C3=A9l=C3=A9ologie au gouffre du Coutal les = 29 et 30 mai 2010 </a></li> = <li><a class=3D"titre" href=3D"spip.php?article256" title=3D"Se rendr= e sur la page de cet article"> Le co=C3=BBt des secours ... </a></li> = <li><a class=3D"titre" href=3D"spip.php?article255" title=3D"Se rendr= e sur la page de cet article"> L’organisation des secours en sp=C3=A9l=C3=A9ologie </a></li> = <li><a class=3D"titre" href=3D"spip.php?article220" title=3D"Se rendr= e sur la page de cet article"> exercice secours en Haute Savoie </a></li> = </ul></div> <div class=3D"pagination"><span class=3D"on">0</span> | <a href=3D'spip.php?article355&debut_article_rubrique_date=3D10#pag= ination_article_rubrique_date' class=3D'lien_pagination' rel=3D'nofollow= '>10</a></div> </div></div><!-- ajaxbloc --> = <div class=3D'ajaxbloc env-n82E+V2/YOHJRUiKzcp6xLIEBVqyvk7kC+K61eoEAYR= 0kf9nPNQEkLeTGiN97KluuPhE3N+myZTZe9H+8KqivD6ouhsty5oE4z0LscxBh2hky+MnZWG= xx/4Ge4nhn8+10Usko9jLxHUlFJZ0eXAZY2Oarcfz85sGUCG7rw=3D=3D'> </div><!-- ajaxbloc --> </div> <div class=3D'ajaxbloc env-L9AOmV2/eKFJAiUxzQkCmb290XPnOyTLlycQ+7TT9ueA= rWPcsPgqJiuTF1ZD7nk6Dg3A/5g7H+hQ1Aum/3oG15JO5K+rK+/VdmSFrxIzVRO4UABzAm+J= odK0UY5zDrIS0PfsHCJB22+gso/mpVJVnGc/5AQ9ZgOxbQP/YzQJ+iN4M7+6sSB30GF1kBCl= mr3BCyO0USSiGzcgTmBHAbC5K3S3q5nzp3OUrSmQbzdwougIrRojeOdnIONNjRf2dcMJLSgR= rBbesQq8B6Kdv2TCUkrVvoaPTAZN1X9PlACICPxObAAzJ/OKyg=3D=3D'> <div id=3D"noisette_miniagenda" class=3D"noisette"> <h1><a class=3D"intitule" href=3D"http://www.cds73.fr/spip.php?page=3Da= genda&id_rubrique=3D44&annee=3D2011&mois=3D06"> Agenda </a></h1> <div class=3D"contenu"> = = = = = = = = = = = = = <h2><a class=3D"titre_bloc bord ajax" href=3D"spip.php?article355&= calendrier_mois=3D6&calendrier_annee=3D2010" title=3D"Juin 2010= "><<</a></h2><h2 class=3D"titre_bloc centre">2011</h2><h2><a class= =3D"titre_bloc bord ajax" href=3D"spip.php?article355&calendrier_moi= s=3D6&calendrier_annee=3D2012" title=3D"Juin 2012">>></a>= </h2><h2><a class=3D"titre_bloc bord ajax" href=3D"spip.php?article355&a= mp;calendrier_mois=3D5&calendrier_annee=3D2011" title=3D"Mai 20= 11"><<</a></h2><h2 class=3D"titre_bloc centre">Juin</h2><h2><a cla= ss=3D"titre_bloc bord ajax" href=3D"spip.php?article355&calendrier_m= ois=3D7&calendrier_annee=3D2011" title=3D"Juillet 2011">>>= ;</a></h2><h2><a id=3D"auj" class=3D"titre_bloc ajax" href=3D"spip.php?a= rticle355&calendrier_mois=3D06&calendrier_annee=3D2011" title=3D= "Juin 2011">Aujourd'hui</a></h2><table summary=3D"Mini agenda mensu= el"><thead><tr><th title=3D"lundi">Lu</th><th title=3D"mardi">Ma</th><th= title=3D"mercredi">Me</th><th title=3D"jeudi">Je</th><th title=3D"vendr= edi">Ve</th><th title=3D"samedi">Sa</th><th title=3D"dimanche">Di</th></= tr></thead><tbody><tr><td class=3D"horsperiode">30</td><td class=3D"hors= periode">31</td><td class=3D"libre">1</td><td class=3D"libre"><a href=3D= "spip.php?page=3Devenement&id_article=3D250" title=3D"00:00 -&n= bsp;24 =C3=A8me rassemblement national des sections SPELEO des Clubs Alp= ins fran=C3=A7ais">2</a></td><td class=3D"libre">3</td><td class=3D"libr= e">4</td><td class=3D"libre">5</td></tr><tr><td class=3D"libre">6</td><t= d class=3D"libre">7</td><td class=3D"libre">8</td><td class=3D"libre">9<= /td><td class=3D"libre">10</td><td class=3D"libre"><a href=3D"spip.php?p= age=3Devenement&id_article=3D275" title=3D"00:00 - AG 2011= de la F.F.Sp=C3=A9l=C3=A9ologie">11</a></td><td class=3D"libre">12</td>= </tr><tr><td class=3D"libre">13</td><td class=3D"libre">14</td><td class= =3D"libre">15</td><td class=3D"libre">16</td><td class=3D"libre">17</td>= <td class=3D"libre">18</td><td class=3D"today">19</td></tr><tr><td class= =3D"libre">20</td><td class=3D"libre">21</td><td class=3D"libre">22</td>= <td class=3D"libre">23</td><td class=3D"libre">24</td><td class=3D"libre= ">25</td><td class=3D"libre">26</td></tr><tr><td class=3D"libre">27</td>= <td class=3D"libre">28</td><td class=3D"libre">29</td><td class=3D"libre= ">30</td><td class=3D"horsperiode">1</td><td class=3D"horsperiode">2</td= ><td class=3D"horsperiode">3</td></tr></tbody></table><table id=3D"foote= r_evenements" summary=3D"Liste des évènements à ven= ir"><tr><td class=3D"footer_colg">27-08 00:00: </td><td class=3D"fo= oter_cold"><a href=3D"spip.php?page=3Devenement&id_article=3D361">15= =C3=A8me Nuit europ=C3=A9enne de la Chauve-souris, les 27 et 28 ao=C3=BB= t 2011</a></td></tr><tr><td class=3D"footer_colg">19-09 00:00: </td= ><td class=3D"footer_cold"><a href=3D"spip.php?page=3Devenement&id_a= rticle=3D359">EURO SPELEO 2011</a></td></tr></table> </div> </div></div><!-- ajaxbloc --> </div> = <div id=3D"footer"> = <div class=3D"pied_bas"> <div class=3D"copyright">© 2009-2011 Comit=C3=A9 D=C3=A9= partemental de Sp=C3=A9l=C3=A9ologie de la Savoie</div> <div class=3D"cr= edits"><a href=3D"http://www.cds73.fr/spip.php?page=3Dplan&tri=3Dpar= _rubrique">Plan du site</a> | <a href=3D"http://www.spip.net" = title=3D"Site réalisé avec SPIP, un CMS gratuit sous licen= ce GPLv3">SPIP 2.0.9 [14357]</a> | <a href=3D"http://sark= a-spip.com" title=3D"Ce site utilise le squelette SARKA-SPIP">Sarka-SPIP=  3.0.0 [31559]</a> | <a href=3D"http://sarka-spip.com" ti= tle=3D"Sylvain, Toufik, Xavier, Eric, Pascal">Collectif Sarka-SPIP</a>&n= bsp;| <a href=3D"http://www.gnu.org/copyleft/gpl.html" title=3D"Le = squelette SARKA-SPIP est distribué sous licence GPLv3">GPLv3</a>&= nbsp;| <a href=3D"plugins/sarkaspip_300/article.html" title=3D"Voir= le squelette de la page article.html" rel=3D"nofollow">Squelette</= a> | <a href=3D"#header" title=3D"Retour en haut de la page" r= el=3D"nofollow">Haut ↑</a></div></div> <!-- SPIP-CRON --><div style=3D"background-image: url('http://www.cds73.= fr/spip.php?action=3Dcron');"></div> </div> </div> </body> </html> ------------N4eNwrm1gWfA2YNEcWro80 Content-Disposition: inline; filename=raz.css Content-Type: text/css; charset=utf-8; name=raz.css Content-Location: http://www.cds73.fr/plugins/sarkaspip_300/css/raz.css Content-Transfer-Encoding: 8bit /* RAZ.CSS */ /* Cette feuille contient: */ /* - une raz de tous les styles pour uniformiser les navigateurs */ /* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */ /* Correction des styles par defaut / mise a zero multinavigateurs */ /* -------------------------------------------------------------------- */ body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td { margin: 0; padding: 0; } table { border-collapse: collapse; border-spacing: 0; } fieldset,img { border: 0; } address,caption,cite,code,dfn,em,strong,th,var { font-style: normal; font-weight: normal; } ol,ul,li { list-style: none; } caption,th { text-align: left; } h1,h2,h3,h4,h5,h6 { font-size: 100%; font-weight: normal; } q:before,q:after { contenu:''; } abbr,acronym { border: 0; } ins { text-decoration: none; } ------------N4eNwrm1gWfA2YNEcWro80 Content-Disposition: inline; filename=layout13.css Content-Type: text/css; charset=utf-8; name=layout13.css Content-Location: http://www.cds73.fr/plugins/sarkaspip_300/css/layouts/layout13.css Content-Transfer-Encoding: 8bit /* Ceci est le fichier CSS du Layout Gala N░13 de http://blog.html.it/layoutgala/ */ html,body{margin:0;padding:0} body{font: 76% arial,sans-serif} p{margin:0 10px 10px} a{display:block;color: #981793;padding:10px} div#header h1{height:80px;line-height:80px;margin:0; padding-left:10px;background: #EEE;color: #79B30B} div#content p{line-height:1.4} div#navigation{background:#B9CAFF} div#extra{background:#FF8539} div#footer{background: #333;color: #FFF} div#footer p{margin:0;padding:5px 10px} div#wrapper{float:left;width:100%} div#content{margin: 0 220px} div#navigation{float:left;width:220px;margin-left:-100%} div#extra{float:left;width:220px;margin-left:-220px} div#footer{clear:left;width:100%} ------------N4eNwrm1gWfA2YNEcWro80 Content-Disposition: inline; filename=spip_style.css Content-Type: text/css; charset=utf-8; name=spip_style.css Content-Location: http://www.cds73.fr/prive/spip_style.css Content-Transfer-Encoding: 8bit /* SPIP-STYLE */ /* Cette feuille contient les styles associes au code genere par SPIP. */ /* Ces styles sont indispensables et doivent necessairement etre */ /* definis pour le bon fonctionnement de vos squelettes. */ /* Intertitre */ h3.spip { text-align: center; margin-top: 2em; margin-bottom: 1.4em; font-size: 1.15em; font-weight: bold; } hr.spip { margin: 2em auto; } /* Listes SPIP */ ul.spip {} ol.spip { list-style: decimal; } /* Citations, code et poesie */ blockquote.spip { margin: 2em 0; padding-left: 1em; border-left: 0.30em solid; } blockquote.spip_poesie { margin: 2em 0; padding-left: 1em; border-left: 1px solid; font-family: Garamond, Georgia, Times, serif; } blockquote.spip_poesie div { text-indent: -3em; margin-left: 3em; } .spip_code, .spip_cadre { font-family: Courier, "Courier New", monospace; color: #036; } .spip_cadre { width: 99%; background-color: #F4F8F8; border: 1px inset; } div.spip_code, .spip_cadre { margin-bottom: 1em; } .spip_surligne { background: #FF6; } /* Tableaux */ table.spip { max-width: 99%; margin-right: auto; margin-left: auto; margin-bottom: 1em; border-collapse: collapse; border-spacing: 0; line-height: normal; } table.spip caption { caption-side: top; /* bottom pas pris en compte par IE */ text-align: center; margin-right: auto; margin-left: auto; font-weight: bold; } table.spip tr.row_first { background: #FFC; } table.spip tr.row_odd { background: #EEE; } table.spip tr.row_even { background: #DDD; } table.spip th, table.spip td { padding: 0.20em 0.40em; text-align: left; border: 1px solid; } table.spip th { vertical-align: bottom; font-weight: bold; } table.spip td { vertical-align: top; } /* Logos, documents et images */ img, .spip_logos { margin: 0; padding: 0; border: 0; } .spip_documents { text-align: center; line-height: normal; } .spip_documents p { margin: 0.10em; padding: 0; } .spip_documents_center { display: block; clear: both; width: 100%; margin: 1em auto; } .spip_documents_left { float: left; margin-right: 15px; margin-bottom: 5px; } .spip_documents_right { float: right; margin-left: 15px; margin-bottom: 5px; } .spip_doc_titre { margin-right: auto; margin-left: auto; font-weight: bold; font-size: 0.90em; } .spip_doc_descriptif { clear: both; margin-right: auto; margin-left: auto; font-size: 0.90em; } /* modeles par defaut */ .spip_modele { float: right; display: block; padding: 1em; border: 1px solid; width: 180px; } /* Couleurs des liens de SPIP */ a.spip_note {} /* liens vers notes de bas de page */ a.spip_ancre {} /* liens internes a la page */ a.spip_in {} /* liens internes */ a.spip_mail { color: #900; } a.spip_mail:before { content: "\002709"; } /* liens vers un email */ a.spip_out { color: #009; } /* liens sortants */ a.spip_url { color: #009; } /* liens url sortants */ a.spip_glossaire { color: #060; } /* liens vers encyclopedie */ a.spip_glossaire:hover { text-decoration: underline overline; } .on { font-weight: bold; } /* liens exposes */ ------------N4eNwrm1gWfA2YNEcWro80 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.cds73.fr/squelettes-dist/rechercher.gif Content-Transfer-Encoding: Base64 R0lGODlhGQATAOZhAKqsre/y9fP19vHz9vHx8e7y9fDz9amsrfz8/ODh4ayur6ut ru/z9fr6+qqtrfb39+rq6u/v78zOzvf3966wsd3e3rCzs83Oz62vsPHy8u/w8O3u 7vv7+/L09v39/fz9/eXm5vDw8bS3t9HT0+zs7cTFxautrdzd3uvs7LCyst7f4OPl 5b7AwMPFxbi6u/Hx8u7x9eHi4ePj4+jo6cHDw6+xssfIyPr7++rr6rCys9na2urr 6+Lj48XHx+Lj4vPz897f39TV1trc3Kuur9bX2M7P0MbIyMLExK2wsejp6fT29vX2 9sTGxuDg4O7u7+7v7/Dx8cnLzMvMzezs7N/g4MbHx97g4N7e3+nq6qyvsOLi4s7P z9rb28LFxfT09Pj496mrrP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAACH5BAEAAGEALAAAAAAZABMAAAfxgGGCg4SFhoeFCE4RBDeI j2EEFxRglQpSBJCFVwCVnpUAQpqCJwdgCy1UPAlGC2AHFZo/nTUzBgUDAQY7OWAA G5AXvkkBAl/HSwFYQ2BRjxwYYDQDxsfHSgZVYFkNiC+VFQUT1tYBWpUoiFCVPgXk 1gwrlSSIIZVAAQ/vXwUxlU+IEFA6ImDAu4I2wCjohqgIGAcQDAwY96BDgCkmKrHQ gCiDAzApIAhgAINBBxwWPgHYwrBQgk4OSjSRkYCJq0+VLKg4ZKUTzlc6uvwccSiD hGiVkEjgGAaEiE8unhGIsAFBoQ9BFFTqMeqRFy5EPIQJBAA7 ------------N4eNwrm1gWfA2YNEcWro80 Content-Disposition: inline; filename=spip_formulaires.css Content-Type: text/css; charset=utf-8; name=spip_formulaires.css Content-Location: http://www.cds73.fr/squelettes-dist/spip_formulaires.css Content-Transfer-Encoding: 8bit /* ------------------------------------------ /* Habillage des formulaires /* ------------------------------------------ */ input, select, textarea { font-size: 100%; font-family: inherit; } /* Structure generale des formulaires ----------------------------------------------- */ .formulaire_spip { clear: both; margin-bottom: 2em; padding: 0; border: 0; text-align: left; font-size: 1em; } .formulaire_spip form { margin: 0; padding: 0; } /* Bug IE/Win */ /* Fieldset */ .formulaire_spip fieldset { clear: both; margin: 0 0 1em 0; padding: 0; border: 0; } .formulaire_spip fieldset legend { margin: 0; padding: 0; font-size: 1.05em; font-weight: bold; background-color: #fff; color: #333; } /* Preciser la couleur des legend et du fond pour IE/Win */ .formulaire_spip fieldset fieldset { margin-top: 1em; } .formulaire_spip fieldset fieldset legend { font-size: 1em; font-weight: normal; } /* Explications */ .formulaire_spip .explication { margin: 0.50em 0; color: #444; } /* Lignes */ .formulaire_spip ul { margin: 0; padding: 0; list-style: none; } .formulaire_spip ul li { clear: both; margin: 0; padding: 0.50em 0; } /* Labels */ .formulaire_spip label { display: block; text-align: left; color: #444; font-weight: bold; /* pour IE/Win */ position: relative; } .formulaire_spip li p { margin-top: 0; margin-bottom: 0; } .formulaire_spip .choix label{display:inline;font-weight:normal;} .formulaire_spip .choix input.radio, .formulaire_spip .choix input.checkbox {width:auto;} /* Champs de saisie */ .formulaire_spip input.text { width: 15em; border: 1px inset; } .formulaire_spip textarea { width: 99%; border: 1px inset; } .formulaire_spip select { width: 99%; } /* Boutons */ .formulaire_spip .boutons { clear: both; margin: 0; padding: 0; text-align: right; } .formulaire_spip .boutons input { margin-left: 1em; } .formulaire_spip .boutons input, input.submit {} /* Reponses, previsu et erreurs ----------------------------------------------- */ /* Champs obligatoires */ .formulaire_spip li.obligatoire {} .formulaire_spip li.obligatoire label {} /* Previsualisation du message */ .formulaire_spip fieldset.previsu { margin-bottom: 2em; padding: 1em; border: 2px dashed #F57900; } .formulaire_spip fieldset.previsu legend { padding: 0 0.50em; font-weight: bold; color: #F57900; } .formulaire_spip fieldset.previsu li { padding: 3px; border: none; } .formulaire_spip fieldset.previsu p { margin: 1em 0; } /* Reponse du formulaire */ .reponse_formulaire { font-weight: bold; color: #e86519; font-size: 1.20em; } fieldset.reponse_formulaire { border-color: #e86519; font-weight: normal; } fieldset.reponse_formulaire.reponse_formulaire legend { color: #F57900; } /* Preciser la couleur des legend et du fond pour IE/Win */ /* * Erreurs */ .formulaire_spip li.erreur .erreur_message { display: block; color: #C30; font-weight: bold; } .formulaire_spip li.erreur input.text, .formulaire_spip li.erreur textarea { background-color: #FCC; border-style: solid; border-color: #C30; } .reponse_formulaire_erreur { margin: 0; color: #C30; font-weight: bold; } /* * OK */ .reponse_formulaire_ok { margin: 0; color: #53AD20; font-weight: bold; } /* Variantes et cas particuliers ----------------------------------------------- */ /* Barre de raccourcis typographiques */ table.spip_barre { width: 100%; } table.spip_barre a img { background: #FDA; padding: 3px; border: 1px outset #CC9; } table.spip_barre a:focus img, table.spip_barre a:hover img, table.spip_barre a:active img { background: #FFF; border: 1px solid #CC9; } table.spip_barre input.barre { width: 99%; background: transparent; border: 0; } /* Formulaire de forum */ .formulaire_forum .saisie_titre input.text, .formulaire_forum .saisie_titre textarea { width: 98%; } /* Selection des langues */ .formulaire_menu_lang { margin: 0; padding: 0; background: none; } /* Formulaires de recherche (site / petitions) */ .formulaire_recherche { margin: 0; padding: 0; background: none; } .formulaire_recherche * { display: inline; vertical-align: middle; } .formulaire_recherche label {} .formulaire_recherche input.text { width: 10em; padding-left: 25px; background: #FFF url(rechercher.gif) no-repeat left center; } .formulaire_recherche input.submit {} .spip_surligne {} /* Cf.: spip_style.css */ /* Choix des mots-clefs */ ul.choix_mots { display: block; margin: 0; padding: 0; list-style: none; } ul.choix_mots li { clear: none; float: left; display: block; width: 30%; padding: 1%; } ul.choix_mots li label { display: inline; font-weight: normal; } .formulaire_spip .bugajaxie { display: none; } /* Bug IE/Win */ /* Formulaire de login dans une page */ .formulaire_login ul li {clear:left;} .formulaire_login .editer_password .details {display:block;} .formulaire_login #spip_logo_auteur {float:right;} ------------N4eNwrm1gWfA2YNEcWro80 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.cds73.fr/plugins/sarkaspip_300/images/puce-n1.gif Content-Transfer-Encoding: Base64 R0lGODlhCAALAKIAAM/Pz6+vr4uLiz09Pf///wAAAAAAAAAAACH5BAEAAAQALAAA AAAIAAsAAAMVSLrcJBACNWoN1A5M9M4WF0lOaTYJADs= ------------N4eNwrm1gWfA2YNEcWro80 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.cds73.fr/plugins/sarkaspip_300/images/arrow_from_left.gif Content-Transfer-Encoding: Base64 R0lGODlhBAAHAIAAAP///////yH5BAEAAAEALAAAAAAEAAcAAAIIRA4WaeyrVCgA Ow== ------------N4eNwrm1gWfA2YNEcWro80 Content-Disposition: inline Content-Type: image/gif Content-Location: http://www.cds73.fr/plugins/sarkaspip_300/images/liste_articles.gif Content-Transfer-Encoding: Base64 R0lGODlhEAAQANUAAPn5+fb29vPz8+7u7uvr6+jo6OXl5eLi4t/f39nZ2dTU1NHR 0c7OzsvLy8jIyMXFxcLCwr+/v7y8vLm5ube3t7S0tLGxsa6urqurq6ioqKWlpaKi op+fn5eXl5SUlJGRkY6OjouLi4iIiIWFhYCAgH19fXp6end3d3R0dHFxcWtra2ho aGNjY2BgYFpaWlRUVFFRUUtLS0NDQ0BAQD09PTo6Ojc3NzQ0NDExMS4uLisrK/// /wAAAAAAAAAAAAAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78i IGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxu czp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNC4y LjItYzA2MyA1My4zNTE3MzUsIDIwMDgvMDcvMjItMTg6MTE6MTIgICAgICAgICI+ CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8w Mi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRm OmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2Jl LmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+QWRvYmUg RmlyZXdvcmtzIENTNDwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNy ZWF0ZURhdGU+MjAwNy0wMS0wNFQyMjoxMDozMVo8L3htcDpDcmVhdGVEYXRlPgog ICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAwOS0wOC0xN1QxODo0NzozNlo8L3ht cDpNb2RpZnlEYXRlPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJk ZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9 Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRj OmZvcm1hdD5pbWFnZS9naWY8L2RjOmZvcm1hdD4KICAgICAgPC9yZGY6RGVzY3Jp cHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgCjw/eHBhY2tldCBlbmQ9 InciPz4B//79/Pv6+fj39vX08/Lx8O/u7ezr6uno5+bl5OPi4eDf3t3c29rZ2NfW 1dTT0tHQz87NzMvKycjHxsXEw8LBwL++vby7urm4t7a1tLOysbCvrq2sq6qpqKem paSjoqGgn56dnJuamZiXlpWUk5KRkI+OjYyLiomIh4aFhIOCgYB/fn18e3p5eHd2 dXRzcnFwb25tbGtqaWhnZmVkY2JhYF9eXVxbWllYV1ZVVFNSUVBPTk1MS0pJSEdG RURDQkFAPz49PAA6OTg3NjU0MzIxMC8uLSwrKikoJyYlJCMiISAfHh0cGxoZGBcW FRQTEhEQDw4NDAsKCQgHBgUEAwIBAAAh+QQBBwA7ACwAAAAAEAAQAAAGrcCdcEgs Go9IYqQCSQ4tCYIBQ0xNKhhQ5lEYDAyMzbCkcFAshkDAe1hwxgoKRAAArAsckig1 UpkUFSAWGBgZGyMmHyMkLS8nCiUYDQ0RFhscHScqLzk7KBApBQoKEhoiKC0xNzQ0 OykcHAgRGBsgKS4zODozLjsrJJMTGhwfKS8xMjYzJTswIQdSCQsPFRkcHiK9OzUZ dQACBQhlSxgvQjYgF+rW2CUoKiwsTkhBADs= ------------N4eNwrm1gWfA2YNEcWro80 Content-Disposition: inline; filename=spip.css Content-Type: text/css; charset=iso-8859-15; name=spip.css Content-Location: http://www.cds73.fr/spip.php?page=style.css Content-Transfer-Encoding: 8bit /* BASE.CSS */ /* Cette feuille contient: */ /* - les styles associes au code genere par SPIP 2.0 */ /* - les styles des formulaires de SPIP 2.0 */ /* - les styles de la pagination SPIP */ /* - les styles generaux propres au squelette */ /* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */ /* Styles de Typographie generale generes par SPIP (spip_styles.css) */ /* -------------------------------------------------------------------- */ strong {font-weight: bold;} em {font-style: italic;} /* Titraille / Intertitres */ h3.spip { font-weight: bold; font-size: 1.6em; margin: 1em 0 0.5em 0; text-align: left; line-height: 1.1em; color: #6262a4;} hr.spip {} /*Cf.: spip_style.css*/ /* Listes SPIP */ /* -- Puces generees par un tiret suivant d'un ou plusieurs asterisques (ex: -* blabla...) */ /* -- Ces puces sont incluses dans une balise <ul class="spip"> et le code de chaque item est <li class="spip"> */ ul.spip {padding: 0; margin: 5px 0 10px 20px;} ul.spip li {list-style-image: url(plugins/sarkaspip_300/images/puce-n0.gif); padding: 0; margin: 5px 0 0 0; line-height: 1.4em;} ul.spip ul.spip li {list-style-image: url(plugins/sarkaspip_300/images/puce-n1.gif); line-height: 1.4em;} ul.spip ul.spip ul.spip li {list-style-image: url(plugins/sarkaspip_300/images/puce-n2.gif); line-height: 1.4em;} /* -- Puces generees par un tiret suivant d'un ou plusieurs diese (ex: -# blabla...) */ /* -- Ces puces sont incluses dans une balise <ol class="spip"> et le code de chaque item est <li class="spip"> */ ol.spip {padding: 0; margin: 5px 0 10px 20px;} ol.spip li {list-style-type: decimal; list-style-image: none; list-style-position: inside; padding: 0; margin: 5px 0 0 0; line-height: 1.4em;border:none;} ol.spip ol.spip li {list-style-type: decimal; line-height: 1.4em;} ol.spip ol.spip ol.spip li {list-style-type: decimal; line-height: 1.4em;} /* Citations, code et poesie */ blockquote.spip { display: block; padding: 0 1em; font-style: italic; overflow: auto; border-left: 4px solid #990000; color: #000000; background: #eeeeee;} blockquote.spip_poesie {font-family: inherit; border: 0; line-height: 1.2em;} blockquote.spip_poesie div {} /*Cf.: spip_style.css*/ .spip_code { display: block; padding: 0 1em; margin: 1em 0; font-size: 1.1em; line-height:1.5em; overflow: auto; max-height: 25em; border-left: 4px solid #669999; color: #000000; background: #eeeeee;} .spip_cadre {border: 0; padding: 0.5em 1em; width: 95%; font: inherit; border-left: 4px solid transparent; color: #000000; background: #eeeeee;} div.spip_code, .spip_cadre {} /*Cf.: spip_style.css*/ /* Surlignage */ .spip_surligne {} /*Cf.: spip_style.css*/ /* Tableaux */ table.spip {font-size: 1em; border-color: transparent; line-height: 1.4em; border-collapse: inherit; border-spacing: 2px; margin-bottom: 1em;} table.spip caption {} /*Cf.: spip_style.css*/ table.spip tr.row_first {text-align: center; color: #ffffff; background: #808080;} table.spip tr.row_odd {background: #e0e0e0; color: inherit} table.spip tr.row_even {background: #eeeeee; color: inherit} table.spip td, table.spip th {padding: 0 10px} table.spip th {border : none;} table.spip td {border : none;} /* Logos, documents et images */ img, .spip_logos {} /*Cf.: spip_style.css*/ .spip_documents {margin : 0 auto;} .spip_documents_center {} /*Cf.: spip_style.css*/ .spip_documents_left {margin: 5px 10px 5px 0;} /*Cf.: spip_style.css*/ .spip_documents_right { margin: 5px 0 5px 10px;} /*Cf.: spip_style.css*/ .spip_doc_titre {} /*Cf.: spip_style.css*/ .spip_doc_descriptif {} /*Cf.: spip_style.css*/ /* modeles par defaut */ .spip_modele {} /*Cf.: spip_style.css*/ /* Couleurs des liens de SPIP */ a {text-decoration:none; display: inline; padding: 0; color: #990000;} a.spip_note {color: #990000;} /* liens vers notes de bas de page */ a.spip_ancre {color: #990000;} /* liens internes a la page */ a.spip_in {color: #990000;} /* liens internes */ a.spip_out {color: #990000;} /* liens sortants */ a.spip_mail {color: #990000;} a.spip_mail:before {content: "";} /* liens vers un email */ a.spip_url {color: #990000;} /* liens url sortants */ a.spip_glossaire {color: #990000;} /* liens vers encyclopedie */ a.spip_glossaire:hover {color: #990000; text-decoration: underline;} a:hover {text-decoration: underline; color: #990000;} .on {} /* liens exposes */ /* -------------------------------------------------------------------- */ /* Styles de la pagination generes par SPIP */ /* -------------------------------------------------------------------- */ .pagination {margin: 30px 0; padding: 0; font-size: 1.2em; text-align: right; text-decoration: none; color: #6262a4;} .pagination .on { display:inline; padding: 2px 5px 0; font-weight: bold; background: #6262a4; color: #ffffff; text-decoration: none;} .pagination a { display:inline; padding: 2px 5px 0; background: transparent; color: #6262a4;} .pagination a:hover { background: #f0f0a4; color: #6262a4; text-decoration: none;} .pagination a.ancre {display:none;} /* -------------------------------------------------------------------- */ /* Styles des formulaires SPIP */ /* -------------------------------------------------------------------- */ input, textarea, select { font-size: 100%; font-family: inherit; } /* Structure generale des formulaires */ .formulaire_spip {clear: both; margin-bottom: 30px; padding: 1em; border: 0; text-align: left; font-size: 1.2em; background: #f0f0fa; color: #000000;} .formulaire_spip form { margin: 0; padding: 0; } /* Bug IE/Win */ .formulaire_spip .bugajaxie { display: none; } /* Bug IE/Win */ /* - Fieldset */ .formulaire_spip fieldset { clear: both; margin: 0 0 1em 0; padding: 0; border: 0; } .formulaire_spip fieldset legend { margin: 0 0 10px; padding: 0; line-height: 1.2; font-size: 1.55em; font-weight: bold; background: #f0f0fa; color: #000000; } /* Preciser la couleur des legend pour IE/Win */ .formulaire_spip fieldset fieldset { margin-top: 1em; } .formulaire_spip fieldset fieldset legend { font-size: 1em; font-weight: normal; } /* - Explications */ .formulaire_spip .explication { margin: 0.50em 0; color: #000000; } /* - Lignes */ .formulaire_spip ul { margin: 0; padding: 0; list-style: none; } .formulaire_spip ul li { clear: both; margin: 0; padding: 0.50em 0; } .formulaire_spip ul li.multi_critere{width: 50%; float: left;} /* - Labels */ .formulaire_spip label { margin-bottom: 3px; display: block; text-align: left; font-weight: bold; /* for IE */ position: relative; color: #000000; } .formulaire_spip li p { margin-top: 0; margin-bottom: 0; } /* - Champs de saisie */ .formulaire_spip input.text {padding: 0.2em 0; width: 99%; background: #ffffff; border: 2px solid #888888;} .formulaire_spip textarea {padding: 0.2em 0; width: 99%; background: #ffffff; border: 2px solid #888888;} .formulaire_spip select { width: 99%; } /* - Boutons */ .formulaire_spip .boutons { clear: both; margin: 0; padding: 0; text-align: right; } .formulaire_spip .boutons input { margin-left: 1em; } .formulaire_spip .boutons input, input.submit {} /* Reponses, previsu et erreurs */ /* - Champs obligatoires */ .formulaire_spip li.obligatoire {} .formulaire_spip li.obligatoire label { font-weight: bold; } /* - Previsualisation du message */ .formulaire_spip fieldset.previsu { margin-bottom: 2em; padding: 1em; background: #f0f0fa; border: 2px dashed #f57900; } .formulaire_spip fieldset.previsu legend { padding: 0 0.50em; color: #f57900; font-weight: bold; } .formulaire_spip fieldset.previsu li { padding: 3px; border: none; color: #000000} .formulaire_spip fieldset.previsu .boutons input {} /* - Reponse du formulaire */ .reponse_formulaire { font-weight: bold; color: #e86519; font-size: 1.20em; } fieldset.reponse_formulaire { border-color: #e86519; font-weight: normal; } fieldset.reponse_formulaire.reponse_formulaire legend { color: #F57900; } /* Preciser la couleur des legend pour IE/Win */ /* - Erreurs */ .formulaire_spip li.erreur .erreur_message { display: block; color: red; font-weight: bold; } .formulaire_spip li.erreur input.text, .formulaire_spip li.erreur textarea { background-color: #FCC; border-style: solid; border-color: red; } .reponse_formulaire_erreur { margin: 0; color: red; font-weight: bold; } /* - OK */ .reponse_formulaire_ok { margin: 0; color: #53AD20; font-weight: bold; } /* Variantes et cas particuliers */ /* - Barre de raccourcis typographiques */ table.spip_barre { width: 100%; } table.spip_barre a img { background: #f5f5f5; padding: 3px; border: 1px solid #cccccc; margin-right: 1px; } table.spip_barre a:hover img { background: #ffffff; border: 1px solid #888888; } table.spip_barre input.barre { width: 99%; background: transparent; border: 0; color: #000000; } /* - Formulaire de forum */ .formulaire_forum .saisie_titre input.text { width: 99%; } /* - Login */ .formulaire_spip input.text#var_login {width: 40%;} .formulaire_spip input.password {padding: 0.2em 0; width: 40%; background: #ffffff; border: 2px solid #888888;} /* - Selection des langues */ .formulaire_menu_lang { margin: 0; padding: 1em; background: none; width: 40%;} /* - Formulaires de contact */ .formulaire_ecrire_auteur fieldset legend {padding-left: 20px; background: url(plugins/sarkaspip_300/images/formulaire_mail.gif) top left no-repeat;} /* - Formulaires de recherche */ .formulaire_recherche {margin: 0 0 0 10px; padding: 0; background: none; width : 158px; } .formulaire_recherche form {margin: 0;} .formulaire_recherche label {display: none !important; } .formulaire_recherche input{margin : 0; clear:none; } .formulaire_recherche input.text {width: 115px; float:left; margin:0 2px 1px 0; height:17px; padding: 0; background: #ffffff; border: 1px solid #888888;} .formulaire_recherche input.submit {padding: 0 2px; font-size:1.1em;} /* -- specificite du formulaire dans la noisette recherche */ .contenu .formulaire_recherche {display : block; padding: 0 0 5px 0;} /* -- specificite du formulaire de recherche dans le bandeau --*/ .recherche_chemin{font-size:1.2em;} .recherche_chemin #formulaire_recherche {background:transparent; display:block; float:right; margin:0; padding:0; width:160px; font-size:1em;} .recherche_chemin .formulaire_recherche input.text{margin-top:1px; padding: 0; background: #ffffff; border: 1px solid #888888;} .recherche_chemin .formulaire_recherche input.submit {cursor: pointer;} .recherche_chemin span{float:right; margin: 5px 5px 0 20px;} /* -- formulaires de recherche des moteurs externes a SPIP */ .moteur {margin: 2px 0 0 10px;} /* -- formulaire de la shoutbox */ #contenu_shoutbox_dialogue {margin: 0 0 20px; padding: 5px; line-height:1.1em; background: #ffffff; border: 2px solid #888888;} /* Choix des mots-clefs */ ul.choix_mots { display: block; margin: 0; padding: 0; list-style: none; } ul.choix_mots li { clear: none; float: left; display: block; width: 30%; padding: 1%; } ul.choix_mots li label { display: inline; font-weight: normal; } /* -------------------------------------------------------------------- */ /* Styles generaux specifiques au squelette */ /* -------------------------------------------------------------------- */ /* Typographie par defaut du squelette */ h1 {font-size: 2em; line-height: 1.2em;} p {margin: 0 0 10px;} /* Les logos des articles, rubriques... */ .logo img {margin: 0;} .gauche {float: left; margin: 0 10px 5px 0;} .droite {float: right; margin: 0 0 5px 10px;} /* Nettoyage de float */ .nettoyeur{ clear: both; height: 0; margin: 0; padding: 0; border: 0; line-height: 1px; font-size: 1px; } .nettoyeur_droite {clear: right;} .nettoyeur_gauche {clear: left;}/* LAYOUT.CSS */ /* Cette feuille contient: */ /* - les styles de surcharge des layout Gala pour le squelette */ /* -------------------------------------------------------------------- */ /* Correspond a une taille de 16px dans la plupart des navigateurs */ html {font-size: 100%;} /* correspond a une taille de 10px car 10px/16px = 0,625 */ body { padding: 0; font: 0.625em/1em Helvetica,Verdana,Arial,sans-serif; color: #000000; background: #ffffff; } #header {padding: 0 0 10px;} div#header h1{margin: 0; padding-left: 0; height: auto; line-height: 1.12em; color: transparent; background: none;} div#footer{padding: 30px 0 0; color: transparent; background: none; line-height: 1.12em;} div#navigation{width: 180px; background: none;} div#extra{width:180px; background: none;} div#container{background: #ffffff; } /* Pour les layouts a largeur variable*/ div#navigation{padding: 0 20px;} div#extra{padding: 0 20px;} #content {padding: 0 20px;} /* Pour les layouts a largeur fixe 3 colonnes*/ /* Pour les layouts a 2 colonnes*//* BANDEAU.CSS */ /* Cette feuille contient: */ /* - les styles de la partie haute du bandeau */ /* - les styles de la partie basse du bandeau */ /* - les styles du chemin du bandeau */ /* - les styles de la partie haute du pied de page */ /* - les styles de la partie basse du pied de page */ /* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */ /* Styles du bandeau - partie haute */ /* -------------------------------------------------------------------- */ /* Structure generale du bandeau haut */ .bandeau_haut { padding: 0 10px 0; min-height: 50px; background: #6262a4 ;} /* Navigation: liste des langues et raccourcis */ .nav_bandeau{float: right; min-width: 150px; max-width: 45%; color: #eeeeee; font-size: 1.2em; padding-top:10px;} .nav_raccourci, .nav_langue {margin-right: 5px; text-align: right;} .nav_langue {line-height: 1.6em;} .nav_langue ul, .nav_raccourci ul {padding: 0 5px 0 0; margin: 5px 0; line-height: 1em;} .nav_langue li, .nav_raccourci li {display: inline; list-style: none;} .nav_langue li a, .nav_raccourci li a {color: #eeeeee; text-decoration: none; padding: 0 2px 0 2px;} .nav_langue li a:hover, .nav_raccourci li a:hover {color: #aaaaaa; text-decoration: none;} .nav_langue li.on {font-size: 1.25em; font-weight: bold;} .nav_raccourci li.auteur a {font-weight: normal;} .raccourci_bandeau {} /* sert uniquement a faire le pendant de la structure des raccourcis dans la colonne navigation */ /* Logo, titre et slogan du site */ .site_logo {margin: 10px 20px 10px 10px; float: left;} .site_nom {padding: 10px 0 0 10px; overflow: visible !important /*Firefox*/; overflow :hidden /*IE6*/;} .site_nom h1 {} .site_nom h1 a {color: #eeeeee; text-decoration: none;} .site_nom h1 a:hover {color: #eeeeee; text-decoration: none;} .site_nom h2 {font-size: 1.3em; line-height: 1em; margin: 0; color: #eeeeee; display: inline;} /* -------------------------------------------------------------------- */ /* Styles du bandeau - partie basse */ /* -------------------------------------------------------------------- */ .bandeau_bas { min-height: 50px; background: #6262a4; text-align:left;} a .bandeau_bas {display:inline;} /* -------------------------------------------------------------------- */ /* Styles du bandeau - chemin */ /* -------------------------------------------------------------------- */ .bandeau_chemin { min-height:22px; margin-bottom: 20px; color: #6262a4; padding: 0 15px; background: #ddddef; height:auto;line-height:1.4em; } .bandeau_chemin .recherche_chemin {width: 320px; float: right;} .bandeau_chemin a {padding: 0 5px 0 10px; color: #6262a4;} .bandeau_chemin a:hover {color: #808080; text-decoration: none;} .chemin {padding-top: 5px; font-size:1.2em;} /* Surcharge des boutons du plugin Boutons dans le Texte */ .textsizeup, .textsizedown, .textonly {float: right; margin: 0 5px 0 0; padding: 0; border: 0;} .textsizeup:hover, .textsizedown:hover {} .textonly {display: none} /* -------------------------------------------------------------------- */ /* Styles du pied de page - partie haute (non disponible) */ /* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */ /* Styles du pied de page - partie basse */ /* -------------------------------------------------------------------- */ .pied_bas { padding: 10px 20px 10px; font-size: 1.2em; text-align: right; background: #6262a4; color: #eeeeee; } .pied_bas .copyright {margin: 0 0 5px;} .pied_bas .credits {margin: 0 0 5px;} .pied_bas a {color: #eeeeee; text-decoration: none;} .pied_bas a:hover {color: #aaaaaa; text-decoration: none;}/* NOISETTES.CSS */ /* Cette feuille contient: */ /* - les styles des noisettes des colonnes extra et navigation */ /* - les styles des menus verticaux et horizontaux */ /* -------------------------------------------------------------------- */ /* Initialisation des variables permettant de d├ęterminer un alignement ├á droite ou ├á gauche */ /* Noisettes pouvant etre inserees dans les colonnes extra et navigation */ /* Styles generiques */ .noisette {margin-bottom: 15px; color: #808080;} .noisette h1, h2, h3 {margin: 0; font-size: 1em;} .noisette h1.intitule, .noisette h1 a.intitule { display: block; margin-bottom: 10px; font-weight: bold; font-size: 1.5em; text-align: center; line-height:1.2em; border: 1px solid #808080; background: #808080; color: #ffffff; padding : 2px 0;} .noisette h1 a.intitule:hover { background: #eeeeee; color: #808080; text-decoration: none;} .noisette .contenu {margin-bottom: 5px; padding: 0; border: 1px solid #808080; background: #FFFFFF;} .noisette .contenu.mixte {padding: 5px 0 0;} .noisette .contenu h2.titre_bloc, .noisette .contenu h2 a.titre_bloc { display: block; margin: 0; padding: 1px; font-size: 1.25em; line-height: 1.5em; font-weight: bold; text-align: center; border-bottom: 1px solid #808080; background: #eeeeee; color: #808080;} .noisette .contenu h2 a.titre_bloc:hover { background: #808080; color: #ffffff; text-decoration: none;} .noisette .contenu .liste ul {margin: 0; padding: 0;} .noisette .contenu .liste ol {margin: 0; padding: 0 5px;} .noisette .contenu .liste ol li {list-style: decimal inside;} .noisette .contenu h2.titre, .noisette .contenu h2 a.titre, .noisette .contenu .liste li .titre { display: block; padding: 0 0 5px 10px; margin: 0 5px; font-weight: bold; text-decoration: none; color: #808080; background: url(plugins/sarkaspip_300/images/puce-n0.gif) left top no-repeat;} .noisette .contenu .liste ol li .titre {background: none; display: inline; margin:0; padding: 0;} .noisette .contenu h2 a.titre:hover, .noisette .contenu .liste li a.titre:hover{ color: #808080; text-decoration: underline;} .noisette .contenu .liste li span.titre {color: #000000;} /* A REVOIR */ .noisette .contenu .date_bloc { margin-left: 30%; padding: 1px; font-size: 0.9em; text-align: center; border-bottom: 1px solid #808080; border-left: 1px solid #808080;} .noisette .contenu div.introduction, .noisette .contenu a.introduction { display: block; margin: 0 5px; padding:0 0 5px 10px; color: #808080;} .noisette .contenu a.introduction:hover{ color: #808080; text-decoration: underline;} .noisette .contenu div.introduction * {margin: 0;} .noisette .contenu .liste {margin: 0; padding: 5px 0;} .noisette .contenu .texte {margin: 0; padding: 5px; line-height: 1.1em;} .noisette .contenu .texte p {margin:0.7em 0em; padding:0;} .noisette .contenu .notes {margin: 0; padding: 5px; line-height: 100%; border-top: 1px solid #808080;} .noisette .contenu .notes p {margin: 0;} .noisette .contenu h3 {padding: 3px 0; line-height: 1.1em;} .noisette .contenu a {} .noisette .contenu a:hover {} .noisette .contenu strong {} .noisette .contenu blockquote, .noisette .contenu code {margin : 2px;} /* Styles specifiques pour la pagination dans les noisettes */ .noisette .pagination {margin: 0 5px 5px; font-size: 1em;} /* Styles specifiques pour l'herbier */ #noisette_herbier.noisette .contenu .texte {text-align: center;} #noisette_herbier.noisette .contenu .texte ul {width: 120px; margin: 0 auto;} /* Styles specifiques pour les statistiques */ #noisette_statistiques.noisette .contenu .texte {text-align: center;} /* Styles specifiques pour la navigation des articles et rubrique mots-cles et categories */ #noisette_filtre.noisette .contenu h2.titre_bloc.bouton {border-bottom: 0; background: #808080; color: #ffffff; text-decoration: none;} #noisette_filtre.noisette .contenu h2 a.titre_bloc.bouton {border-bottom: 0;} #noisette_navigation.noisette .contenu .liste li .titre, #noisette_filtre.noisette .contenu .liste li .titre, #noisette_motscles.noisette .contenu .liste li .titre { display: block; padding: 0 0 5px 10px; margin: 0 5px; font-size: 1em; font-weight: bold; text-decoration: none; } #noisette_navigation.noisette .contenu .liste li span.titre, #noisette_filtre.noisette .contenu .liste li span.titre, #noisette_motscles.noisette .contenu .liste li span.titre {background: url(plugins/sarkaspip_300/images/puce-n1.gif) left top no-repeat;} #noisette_navigation.noisette .contenu .liste li a.titre, #noisette_filtre.noisette .contenu .liste li a.titre, #noisette_motscles.noisette .contenu .liste li a.titre {background-image: none;} #noisette_navigation.noisette .contenu .liste li a.titre:hover, #noisette_filtre.noisette .contenu .liste li a.titre:hover, #noisette_motscles.noisette .contenu .liste li a.titre:hover { color: #808080; background: url(plugins/sarkaspip_300/images/puce-n1.gif) left top no-repeat; text-decoration: underline;} /* Styles specifiques pour les badges */ .noisette .badges a {display: block; margin: 2px 0; padding: 0; border: 0; width: 80px; height: 15px; float:left; clear: left; } .noisette .badges a:hover {text-decoration: none;} #logo_rss {background: url(plugins/sarkaspip_300/images/badge_rss.png) no-repeat;} #logo_rss:hover {background: url(plugins/sarkaspip_300/images/badge_rss_hover.png) no-repeat;} #logo_sarkaspip {background: url(plugins/sarkaspip_300/images/badge_sarkaspip.png) no-repeat;} #logo_sarkaspip:hover {background: url(plugins/sarkaspip_300/images/badge_sarkaspip_hover.png) no-repeat;} #logo_spip {background: url(plugins/sarkaspip_300/images/badge_spip.png) no-repeat;} #logo_spip:hover {background: url(plugins/sarkaspip_300/images/badge_spip_hover.png) no-repeat;} #logo_xhtml {background: url(plugins/sarkaspip_300/images/badge_xhtml.png) no-repeat;} #logo_xhtml:hover {background: url(plugins/sarkaspip_300/images/badge_xhtml_hover.png) no-repeat;} #logo_perso {background: url(plugins/sarkaspip_300/images/badge_perso.png) no-repeat;} #logo_perso:hover {background: url(plugins/sarkaspip_300/images/badge_perso_hover.png) no-repeat;} /* Styles specifiques pour le mini-agenda */ #noisette_miniagenda.noisette {overflow: hidden; width:180px} #noisette_miniagenda.noisette .contenu table {table-layout: fixed; border-spacing:0; width:100% !important /*FF*/; width:178px /*IE*/; font-size: 1.1em; text-align: center;border-collapse:inherit;} #noisette_miniagenda.noisette .contenu table thead { background: #808080; color: #ffffff;} #noisette_miniagenda.noisette .contenu table th {text-align: center; padding: 2px 0;} #noisette_miniagenda.noisette .contenu table td {line-height: 1.1em; color: #808080} #noisette_miniagenda.noisette .contenu table td.libre, #noisette_miniagenda.noisette .contenu table td.occupe {background-color: #ffffff; border: 1px solid #ffffff;} #noisette_miniagenda.noisette .contenu table td.horsperiode { background: #eeeeee; border: 1px solid #eeeeee; color: #808080;} #noisette_miniagenda.noisette .contenu table td.today {font-weight: bolder; background: transparent; border: 1px solid #990000;} #noisette_miniagenda.noisette .contenu table td a {font-weight: bolder;} #noisette_miniagenda.noisette .contenu table td a:hover {} #noisette_miniagenda.noisette .contenu h2 a.titre_bloc {padding: 0 0; font-size: 1.2em;border-top: 1px solid #808080;} #noisette_miniagenda.noisette .contenu h2.titre_bloc.centre, #noisette_miniagenda.noisette .contenu h2 a.titre_bloc.bord {padding: 1px 0; border-top: 0;float: left;font-size: 1.2em;} #noisette_miniagenda.noisette .contenu h2.titre_bloc.centre {width: 50%;} #noisette_miniagenda.noisette .contenu h2 a.titre_bloc.bord {width: 25%;} #noisette_miniagenda.noisette .contenu .texte {padding: 2px; border-top: 1px solid #808080;} #noisette_miniagenda.noisette .contenu table#footer_evenements {padding: 2px 0; table-layout: fixed; border-top: 1px solid #808080; text-align: left; font-size: 1em;} #noisette_miniagenda.noisette .contenu table#footer_evenements td{line-height:1.1em;} #noisette_miniagenda.noisette .contenu table#footer_evenements td.footer_colg {padding: 1px; font-weight: bold; width: 37% !important /*FF*/;width: 66px /*IE*/;} #noisette_miniagenda.noisette .contenu table#footer_evenements td.footer_cold {padding: 1px; width: 63% !important /*FF*/;width: 112px /*IE*/;} #noisette_miniagenda.noisette .contenu table#footer_evenements td.footer_cold a {font-weight: normal; color: #808080;} #noisette_miniagenda.noisette .contenu table#footer_evenements td.footer_cold a:hover {color: #808080;} /* Styles specifiques pour la noisette Rainette */ #noisette_rainette.noisette .contenu .texte .maj {text-align: center;} #noisette_rainette.noisette .contenu .texte .resume {text-align: center; font-size: 1.2em; font-weight: bold;margin: 10px 0} #noisette_rainette.noisette .contenu .texte .resume ul{font-weight: normal; margin-top: 5px;font-size: 0.9em;} #noisette_rainette.noisette .contenu .texte .resume li{} #noisette_rainette.noisette .contenu .texte .temperature {font-size: 2em; font-weight: bold; margin: 0 5px;} #noisette_rainette.noisette .contenu .texte .previsions {font-size: 1.3em;} #noisette_rainette.noisette .contenu .texte .temperature img {float:left;} #noisette_rainette.noisette .contenu .texte .temperature p {padding: 30px 0 0 90px;} #noisette_rainette.noisette .contenu .texte .liens {text-align: center;} .pave-prevision {overflow: hidden; float: left; width: 168px; height: 190px;} .conteneur_selection {overflow: hidden; float: left; width: 168px; height: 190px;} /* Styles specifiques pour la noisette Nuage de mots */ #noisette_nuage.noisette .contenu ul.nuage {padding:5px;} #noisette_nuage.noisette .contenu ul.nuage a {color: #808080;} /* Menus vertical des rubriques et raccourcis inseres dans les colonnes extra et navigation */ /* Navigation dans les rubriques - arborescence deroulante */ .menu_rub1 { padding: 0; font-size: 1.2em; text-align: left;} .menu_rub1 ul.menulist, .menu_rub1 ul.menulist ul { background: #6262a4; border: 1px solid #ffffff; border-bottom: 0; list-style: none; z-index: 500; margin: 0; padding: 0; line-height:1.2em; width:178px;} .menu_rub1 ul.menulist ul {position: absolute; top: -1px; left: 178px;} .menu_rub1 ul.menulist li {position: relative; margin: 0; padding: 0; border-bottom: 1px solid #FFFFFF;} .menu_rub1 ul.menulist li ul {display:none;} .menu_rub1 ul.menulist li:hover>ul {display:block;} .menu_rub1 ul.menulist a { background: #6262a4; color: #ffffff; text-decoration: none; display: block; padding: 5px;} .menu_rub1 ul.menulist a:hover { background: #323284; color: #ffffff; text-decoration: none;} .menu_rub1 ul.menulist li.smenu, .menu_rub1 ul.menulist li.smenu>a { background: #6262a4; background-image: url(plugins/sarkaspip_300/images/arrow_from_left.gif); background-position: 170px; background-repeat: no-repeat;} .menu_rub1 ul.menulist li.smenu:hover, .menu_rub1 ul.menulist li.smenu>a:hover { background: #323284; background-image: url(plugins/sarkaspip_300/images/arrow_from_top.gif); background-position: 167px; background-repeat: no-repeat;} .menu_rub1 ul.menulist a.menu_articles {} .menu_rub1 ul.menulist a.menu_articles:hover {} /* Navigation dans les rubriques - arborescence depliee */ .menu_rub2 {font-size: 1.2em; border: 0; font-weight: normal;} .menu_rub2 ul {margin: 0; padding: 0; list-style: none;} .menu_rub2 ul li { margin: 0; padding: 0; border: 0; line-height: 1.3em;} .menu_rub2 ul li a { display: block; width: 158px; margin-bottom: 0; padding: 5px 10px; border: 1px solid #ffffff; border-top: 0; color: #ffffff; background: #6262a4;} .menu_rub2 ul li a#m1 {border-top: 1px solid #6262a4;} .menu_rub2 ul li ul li a { display: block; width: 148px; margin-bottom: 0; padding: 5px 10px 5px 20px; color: #ffffff; background: #6262a4;} .menu_rub2 ul li ul li ul li a { display: block; width: 138px; margin-bottom: 0; padding: 5px 10px 5px 30px; color: #ffffff; background: #6262a4;} .menu_rub2 a.on { background: #323284; color: #ffffff; font-weight: bold;} .menu_rub2 a:hover { background: #323284; color: #ffffff; text-decoration: none;} /* Navigation dans les rubriques - arborescence accordeon a ouverture automatique */ .menu_rub3 {width: 100%; padding:0; font-size: 1.2em;} .menu_rub3 .cache {padding-left:10%; width: 90%; background: none; display: none;} .menu_rub3 .cache a { display: block; border-top: 1px solid #ffffff; background: #6262a4;} .menu_rub3 .cache a.on {background: #323284;} .menu_rub3 ul.menulist {background: none; border: 0; list-style: none; z-index: 500; margin: 0; padding: 0; line-height: 1.2em} .menu_rub3 ul.menulist li {position: relative; margin: 0; padding: 0; border-bottom: 1px solid #ffffff;} .menu_rub3 ul.menulist a { display: block; text-decoration: none; padding: 5px; color: #ffffff; background: #6262a4;} .menu_rub3 ul.menulist a:hover { background: #323284; color: #ffffff;} .menu_rub3 ul.menulist a.on { background: #323284; color: #ffffff;} /* Bloc de menus des raccourcis de navigation*/ .nav2 {font-size: 1.2em; width: 178px;border: 1px solid #808080;} .nav2 ul {padding: 5px 0; margin: 0} .nav2 li { list-style: none; margin: 5px 10px; line-height: 1.4em; background: #6262a4; border: #ffffff solid 1px; color: #ffffff;} .raccourci_nav1 {text-align: center;} .raccourci_nav1 a {display: block; width: 100%; color: #ffffff;} .raccourci_nav1 a:hover { text-decoration: none; background: #323284; color: #ffffff;} .nav2 .auteur {margin: 7px 10px; padding-top: 3px; padding-bottom: 2px; text-align: center; background: transparent; border: 0;} /* Menu horizontal dans le bandeau bas */ .menu_horiz{font-size:1.2em; margin: 0 15px 0; min-height: 50px; } .menu_horiz, .menu_horiz ul {list-style: none; line-height: 1; padding: 0; min-height: 50px; } .menu_horiz ul{width:100%; margin: 0; float: left;} .menu_horiz a {display: block; text-decoration: none; padding: 5px 10px; color: #ffffff; border-left: #6262a4 solid 1px; text-align: left; } .menu_horiz a#mh_n1 {border-left: none;} .menu_horiz a.it_n1 { border-top: #6262a4 solid 1px;} .menu_horiz a.pere {background: url((plugins/sarkaspip_300/images/puce-n0.gif)) center right no-repeat;} .menu_horiz a:hover { text-decoration: none; color: #ffffff;} .menu_horiz li {float: left; padding: 0; width: 150px; background: #6262a4;} .menu_horiz li ul {position: absolute; left: -999em; height: auto; font-weight: normal; margin: 0; padding: 0; 10; } .menu_horiz li li {padding: 0 ; overflow : hidden; border-right: #6262a4 solid 1px; border-left: none; clear:left; } .menu_horiz li ul ul {margin: -51px 0 0 150px;} .menu_horiz li:hover ul ul, .menu_horiz li:hover ul ul ul, .menu_horiz li:hover ul ul ul ul, .menu_horiz li.sfhover ul ul, .menu_horiz li.sfhover ul ul ul, .menu_horiz li.sfhover ul ul ul ul {left: -999em;} .menu_horiz li:hover ul, .menu_horiz li li:hover ul, .menu_horiz li li li:hover ul, .menu_horiz li li li li:hover ul {left: auto;} .menu_horiz li.sfhover ul {left:auto;} .menu_horiz li li.sfhover ul, .menu_horiz li li li.sfhover ul, .menu_horiz li li li li.sfhover ul {left: auto;} .menu_horiz li:hover, .menu_horiz li.sfhover {background: #323284;} .menu_horiz li li a, .menu_horiz li li li a { border-bottom: #6262a4 solid 1px;}/* ELEMENTS.CSS */ /* Cette feuille contient: */ /* - les styles de la partie centrale du site */ /* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */ /* Styles des titres de page */ /* -------------------------------------------------------------------- */ /* Titre generique */ .titre h1 {font-weight: bold; margin: 0 0 5px; padding-bottom: 5px; color: #6262a4; border-bottom: 2px solid #6262a4;} /* Boutons de fonction positionnes a droite du titre */ a.fonction {display: block; float: right; width: 24px; height: 24px; margin-left: 10px;} a.fonction.repondre_commentaire {width: 16px; height: 16px; margin-right: 0; background-image: url(plugins/sarkaspip_300/images/commentaire_repondre.gif); background-repeat: no-repeat;} #commenter {background-image: url(plugins/sarkaspip_300/images/article_commenter.gif); background-repeat: no-repeat;} #signer {background-image: url(plugins/sarkaspip_300/images/article_commenter.gif); background-repeat: no-repeat;} #creer_pdf {background-image: url(plugins/sarkaspip_300/images/article_pdf.gif); background-repeat: no-repeat;} #voir_commentaires {background-image: url(plugins/sarkaspip_300/images/article_commentaires.gif); background-repeat: no-repeat;} #voir_signatures {background-image: url(plugins/sarkaspip_300/images/article_signatures.gif); background-repeat: no-repeat;} #recommander {background-image: url(plugins/sarkaspip_300/images/article_recommander.gif); background-repeat: no-repeat;} a.fonction.revenir_haut_page {background-image: url(plugins/sarkaspip_300/images/arrow_to_top.gif); background-repeat: no-repeat;} /* -------------------------------------------------------------------- */ /* Styles du cartouche (auteurs, date, popularite, notation) */ /* -------------------------------------------------------------------- */ .cartouche { font-weight: normal; font-size: 1.1em; line-height: 1.1em; text-align: right; margin: 0 0 30px 10px; padding: 0; float: right; color: #6262a4;} .complements {font-weight: normal; margin: 10px 0 5px; font-size: 1.1em;} /* -------------------------------------------------------------------- */ /* Styles de la description (champs editoriaux) */ /* -------------------------------------------------------------------- */ /* Styles generiques */ .description {margin: 10px 0 30px; font-size: 1.2em; line-height: 1em;} .description li {margin-left: 10px; line-height: 1.4em;} .description p {font-size: 1em;} .description .soustitre {float: none; line-height: 1em; font-size: 1.4em; font-weight: bold; font-style: italic; margin: 0; padding: 0; color: #6262a4;} .description .chapo {margin: 0 0 30px; font-style: italic; color: #6262a4;} .description .texte {} .description .lien_site {margin: 10px 0 20px; padding-top: 10px; font-size: 1em; border-top: 1px dotted #6262a4;} .description .ps {margin: 10px 0 20px; padding-top: 10px; font-size: 1em; border-top: 1px dotted #6262a4;} .description .notes {margin: 10px 0 20px; padding-top: 10px; font-size: 1em; border-top: 1px dotted #6262a4;} .description .filles {margin: 10px 0 20px; padding-top: 10px; font-size: 1em; border-top: 1px dotted #6262a4;} .description .filles a {padding: 0 0 0 15px; background: transparent url(plugins/sarkaspip_300/images/puce0.jpg) left center no-repeat; text-decoration: none;} .description .filles a:hover {background: transparent url(plugins/sarkaspip_300/images/puce1.jpg) left center no-repeat; ;text-decoration: none;} /* -------------------------------------------------------------------- */ /* Styles des messaes d'erreur */ /* -------------------------------------------------------------------- */ .erreur {margin: 0; padding-bottom: 10px;} .erreur .description .texte {margin-top: 30px; font-size: 1.2em; font-weight: bold; color: red; line-height: 1.4em;} /* -------------------------------------------------------------------- */ /* Styles des blocs type portfolio (images, documents joints, breves) */ /* -------------------------------------------------------------------- */ /* Styles generiques */ .portfolio {clear: both; margin-bottom: 30px; padding-top: 2px;width:100%;} .portfolio h2 {font-size: 1.9em; line-height: 1em; font-weight: bold; margin: 0 0 10px; padding: 0 0 5px 20px; color: #6262a4; border-bottom: 2px solid #6262a4;} /* Portfolio des images jointes */ .portfolio a img {margin: 10px 10px; border: 4px solid #eeeeee;} .portfolio a:hover img {border-color: #6262a4;} /* Portfolio des documents jointes */ .portfolio dl {width: 115px; height: 11em; text-align: center; margin: 10px; float: left;} .portfolio dt {width: 115px; font-weight: bold;} .portfolio dt a img {border: 0;} .portfolio dt a:hover img {border: 0;} .portfolio dd {width: 115px; margin: 0; padding: 0;} /* -------------------------------------------------------------------- */ /* Styles des blocs de type commentaires */ /* -------------------------------------------------------------------- */ .commentaires {padding: 0 0 10px 0; margin: 0 0 30px 0; clear: both;} .commentaires h2 {font-size: 1.9em; line-height: 1.2em; font-weight: bold; padding: 0 0 5px 20px; margin: 0; background: url(plugins/sarkaspip_300/images/commentaires.gif) top left no-repeat; color: #6262a4; border-bottom: 2px solid #6262a4;} .commentaires h2.date {margin-top:30px; padding: 0 0 5px 20px;background: url(plugins/sarkaspip_300/images/liste_syndics.gif) top left no-repeat;} .commentaires .message {margin: 0; padding: 10px 0 10px; background: transparent; border-top: 1px dotted #6262a4;} .commentaires .message:hover {background: #f0f0fa;} .commentaires #co_n1.message,.commentaires .co_n1 {border-top: 0; padding: 20px 0 10px;} .commentaires .message .titre {font-size: 1.2em; font-weight:bold; margin:0 0 10px 50px;} .commentaires .message .gravatar {float:left} .commentaires .message .cartouche_simple {margin-left: 50px; font-size: 1.1em; color: #6262a4;} .commentaires .message .texte{margin-left : 50px; padding-top: 5px;font-size:1.2em;line-height:1.1em;} .commentaires .message .texte ul li{border-top:none;} .commentaires ul { line-height: 1.1em;} .commentaires ul#exif {width:50%;margin : 0 auto;text-align:center;border:1px dotted;} .commentaires li {padding:10px 0; height:auto; border-top: 1px dotted #6262a4;} .commentaires li:hover {background: #f0f0fa;} .commentaires a.titre{padding-top: 5px; margin: 0; font-size: 1.6em; font-weight: bold; line-height:1em; text-decoration: none; color: #6262a4;} .commentaires li .cartouche{margin : 0 0 10px 10px; font-size: 1.1em;} .commentaires li .complements{font-size: 1.1em;} /* -------------------------------------------------------------------- */ /* Styles des blocs de type extraits */ /* -------------------------------------------------------------------- */ .extrait {margin: 0 0 20px; padding: 0 0 10px 15px; background: transparent; border-left: 5px solid #6262a4; border-bottom: 1px solid #6262a4;} .extrait h3 a.titre {display: block; padding-top: 5px; margin: 0; font-size: 1.6em; font-weight: bold; line-height:1em; text-decoration: none; color: #6262a4;} .extrait h3 a.titre:hover {color: #6262a4; text-decoration: underline;} .extrait .cartouche {color: #6262a4;} .extrait .lire_suite {text-align: left; margin: 10px 0 0; font-size: 1.1em;} .extrait .cartouche a, .extrait .complements a {color: #990000; text-decoration: none;} .extrait .lire_suite a {padding: 0 0 5px 20px; background: url(plugins/sarkaspip_300/images/lire_suite.gif) left center no-repeat; color: #990000; text-decoration: none;} .extrait .cartouche a:hover, .extrait .complements a:hover, .extrait .lire_suite a:hover { color: #990000; text-decoration: underline;} .extrait .introduction {margin: 10px 0 0; font-size:1.2em; line-height : 1.4em;} /* -------------------------------------------------------------------- */ /* Styles des blocs de type arbre (plan, agenda) */ /* -------------------------------------------------------------------- */ .arbre {margin: 0; padding-bottom: 10px;} .arbre ul { list-style-type: none; padding: 0; margin: 0; font-size: 1em; line-height: 1em;} .arbre ul li {font-weight: bold; padding: 5px 10px 10px; margin: 0 0 15px; border: 2px solid #888888; background: #eeeeee;} .arbre ul li li {padding: 0 0 0 15px; margin: 0; border: 0; background: none;} .arbre ul li li li {padding: 0 0 0 15px; margin: 0; border: 0; background: none;} .arbre .noeud {padding: 5px 0 5px 15px; font-size: 1.5em; line-height: 1.4em; text-decoration: none; color: #888888;} .arbre a.noeud:hover {background-image: url(plugins/sarkaspip_300/images/puce0.jpg); background-position: left center; background-repeat: no-repeat; color: #888888; text-decoration: none;} .arbre a.feuille {padding: 0 0 0 15px; font-size: 1.1em; font-weight: normal; line-height: 1.2em; color: #6262a4;} .arbre a.feuille:hover {background-image: url(plugins/sarkaspip_300/images/puce-n0.gif); background-position: left center; background-repeat: no-repeat; color: #888888; text-decoration: underline;} .arbre a.feuille .date {} /* -------------------------------------------------------------------- */ /* Styles des blocs de type planches */ /* -------------------------------------------------------------------- */ .planche {margin-top: 30px;} .planche h2 {font-size: 1.9em; line-height: 1em; font-weight: bold; margin: 0 0 10px; padding: 0 0 5px 20px; color: #6262a4; border-bottom: 2px solid #6262a4;} .planche ul {margin: 0; padding: 0; list-style-type: none;} .planche li {width: 45%; min-height: 18em; float: left; margin: 0 0 20px; padding: 10px 0; background: transparent; border-top: 1px dotted #6262a4;} .planche li.n1 {border-top: 0;} .planche li.gauche {margin-right: 20px;} .planche li.droite {margin-left: 20px; float: right;} .planche h3 a.titre {display: block; padding-top: 5px; margin: 0; font-size: 1.6em; font-weight: bold; line-height:1em; text-decoration: none; color: #6262a4;} .planche h3 a.titre:hover {color: #6262a4; text-decoration: underline;} .planche .complements {font-weight: normal; margin: 10px 0 5px; font-size: 1.1em;} .planche .cartouche {text-align: left; margin: 0; float: none;} .planche .cartouche a, .planche .complements a {color: #990000; text-decoration: none;} .planche .cartouche a:hover, .planche .complements a:hover { color: #990000; text-decoration: underline;} .planche a img {float:right; margin: 0 0 5px 5px; border: 4px solid #eeeeee;} .planche a:hover img {border: 4px solid #6262a4;} .planche .introduction {margin: 10px 0 0;font-size:1.2em;line-height:1.4em;} /* -------------------------------------------------------------------- */ /* Styles specifiques a chaque page */ /* -------------------------------------------------------------------- */ /* Style specifique a la notation (plugin Notation) */ .description .plugin {margin: 10px 0 0; padding-top: 10px; font-size: 1em; line-height: 1.6em; border-top: 1px dotted #6262a4; color: #6262a4;} .description .notation div.star-rating a {border: 0; text-align: left;} .description .notation .note { color: #6262a4;} /* Style specifique aux bookmarks sur les reseaux sociaux (plugin Social Tags) */ .description .socialtags {margin: 0; padding: 0;} /* Titres de blocs */ #images_jointes.portfolio h2 {background: url(plugins/sarkaspip_300/images/portfolio_images.gif) top left no-repeat;} #documents_joints.portfolio h2 {background: url(plugins/sarkaspip_300/images/portfolio_documents.gif) top left no-repeat;} #articles_recents.portfolio h2, #article_commentaire.portfolio h2, #articles_auteur.portfolio h2, #articles_rubrique.portfolio h2 {background: url(plugins/sarkaspip_300/images/liste_articles.gif) top left no-repeat;} #breves_site.commentaires h2 {background: url(plugins/sarkaspip_300/images/liste_breves.gif) top left no-repeat;} #sites_site.portfolio h2 {background: url(plugins/sarkaspip_300/images/liste_sites.gif) top left no-repeat;} .portfolio h2.jalon {background: url(plugins/sarkaspip_300/images/liste_tickets.gif) top left no-repeat;} /* Page rubrique */ .rubrique {margin: 0; padding-bottom: 10px;} .rubrique .titre {} .rubrique .titre h1 {margin: 0 0 35px;} /* Page article */ .article {margin: 0; padding-bottom: 10px;} .article .cartouche {font-size: 0.92em} /* -- Styles des petitions de l'article */ #signatures.commentaires h2 {background: url(plugins/sarkaspip_300/images/liste_signatures.gif) top left no-repeat;} #signatures.commentaires table{width: 100%; margin-top: 10px; font-size: 1.2em;} /* Page sommaire */ /* -- Edito et une */ #edito.article, #une.article {margin: 0 0 30px; padding: 5px 10px; text-align: justify;} #edito.article { border: 2px solid #808080; background: #eeeeee;} #une.article { border: 2px solid #808080; background: #eeeeee;} #edito.article .titre, #edito.article .soustitre, #une.article .titre, #une.article .soustitre {} #edito.article .titre h1, #une.article .titre h1 {border: 0;} #edito.article a.fonction, #une.article a.fonction {display: none;} #edito.article .cartouche, #une.article .cartouche {font-size: 1.2em} #une.article .complements {font-size: 0.91em; margin-bottom: 10px;} /* -- Albums recents */ #albums_recents.planche h2, #albums_auteur.planche h2 {background: url(plugins/sarkaspip_300/images/liste_albums.gif) top left no-repeat;} #albums_recents.planche li, #albums_auteur.planche li { min-height: 18em; } /* Page evenement */ #evenement.article .cartouche {text-align: left; float: left; margin: 0 10px 30px 0;} /* Page auteur */ .auteur {margin: 0; padding-bottom: 10px;} #albums_auteur.planche li {} /* Page site */ .site {margin: 0; padding-bottom: 10px;} /* -- Thumbshot du site */ .site a img {margin: 0 0 10px 10px; border: 4px solid #eeeeee;} .site a:hover img{border-color: #6262a4;} /* -- Liste des articles syndiques */ #articles_syndiques.commentaires h2 {background: url(plugins/sarkaspip_300/images/liste_syndics.gif) top left no-repeat;} #articles_syndiques.commentaires .titre {margin: 0;} #articles_syndiques.commentaires .texte{margin: 5px 0 0;} .site .description li {margin-left: 0; margin-bottom: 10px;} .site .description li:hover {background:#f0f0fa;} /* Page galerie */ .galerie {margin: 0; padding-bottom: 10px;width:100%;} .galerie .planche li {} /* Page Herbier */ .herbier {margin: 0; padding-bottom: 10px;width:100%;} .herbier .planche li {width: 100%;} /* Page Recherche */ .recherche {margin: 0; padding-bottom: 10px; width:100%;} #recherche_rubrique.commentaires h2 {margin:0; background: url(plugins/sarkaspip_300/images/portfolio_documents.gif) top left no-repeat;} #recherche_mot_article.commentaires h2 {margin:0; background: url(plugins/sarkaspip_300/images/liste_breves.gif) top left no-repeat;} #recherche_breve.commentaires h2 {margin:0; background: url(plugins/sarkaspip_300/images/liste_breves.gif) top left no-repeat;} #recherche_site.commentaires h2 {margin:0; background: url(plugins/sarkaspip_300/images/liste_sites.gif) top left no-repeat;} #recherche_commentaire.commentaires h2 {margin:0; background: url(plugins/sarkaspip_300/images/commentaires.gif) top left no-repeat;} #recherche_article.commentaires h2 {margin:0; background: url(plugins/sarkaspip_300/images/liste_articles.gif) top left no-repeat;} #recherche_album.commentaires h2 {margin:0; background: url(plugins/sarkaspip_300/images/portfolio_images.gif) top left no-repeat;} #recherche_evenement.commentaires h2 {margin:0; background: url(plugins/sarkaspip_300/images/evenement.gif) top left no-repeat;} /* Page album */ .album {padding: 0 0 10px 0; margin: 0 0 30px 0; clear: both; width:100%;} .carrousel {display: block; margin: 0 0 20px; padding: 10px 0} #a_defilement.carrousel {overflow: hidden; position: relative;} .carrousel .contenu {margin: 0 auto; position: relative;} #a_pagination.carrousel .contenu li {display: block; float: left;} .carrousel .contenu .vignette a img {margin-right: 5px; border: 4px solid #eeeeee;} .carrousel .contenu .vignette a:hover img {border: 4px solid #6262a4;} .carrousel .contenu .vignette a.survol {display:none;position:absolute;background: transparent url(plugins/sarkaspip_300/images/pointeur_bas.gif) no-repeat bottom center;} .carrousel .contenu .vignette a.survol img {margin: 0; border: 4px solid #6262a4;} .carrousel .navigation {margin: 10px 0 20px; text-align: center; font-size: 1.2em; font-weight: bold;} .carrousel .navigation a {background: transparent; color: #6262a4;} .carrousel .navigation a:hover {background: #f0f0a4; color: #6262a4; text-decoration: none;} .carrousel .pagination {margin: 10px 0 20px; text-align: center; font-weight: bold;} .carrousel .contenu ul.vignettes span {width: 128px;}/* max thumbnail width + 2px */ .carrousel .contenu ul.vignettes span.wrap1 {margin: 0 5px 5px 5px; display: inline-block; vertical-align: top; text-align: center;} .carrousel .contenu ul.vignettes span.wrap2 {height: 136px; background: transparent; border: 4px solid #eeeeee; display: table-cell; vertical-align: middle;} .carrousel .contenu ul.vignettes span.wrap2:hover { background: #888888; border: 4px solid #6262a4;} .carrousel .contenu ul.vignettes span.wrap2 a {display: block; width: 128px;} /* max thumbnail width + 2px */ .carrousel .contenu ul.vignettes span.titre { display: block; height: 4em; padding-top: 5px; font-size: 90%; overflow: hidden; margin-left:auto; margin-right:auto; line-height : 1.2em; } .zoom {display: block; margin: 0 0 20px; padding: 10px 0;} .zoom #conteneur_photo {padding:0; margin: 0 0 10px;} .zoom #titre_photo {padding:0; margin: 0 0 20px; font-size: 1.2em; font-weight: bold; text-align: center;} .zoom #descriptif_photo {padding:0; margin: 0 0 20px;} .zoom #exif_photo {padding:0; margin: 0 0 20px;} #exif_photo.commentaires table{width: 300px; font-family: verdana; border: 0; margin :0 auto;} #exif_photo.commentaires table tr{height: 20px;} #exif_photo.commentaires table td.titre {background-color : #EFEFEF; padding: 0 5px; border-bottom : 1px dotted #000000; font-weight:bold;height: 20px;} #exif_photo.commentaires table td.minilogo {text-align: right; height: 20px;} #exif_photo.commentaires table td.colonne1{width: 130px; font-size: 90%; text-align: right; padding: 5px;} #exif_photo.commentaires table td.colonne2{width: 170px;}/* IE.CSS */ /* Cette feuille contient: */ /* - tous les hacks necessaires a IE (version >= 6) */ /* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */ /* raz.css */ /* -------------------------------------------------------------------- */ * html * {height:1; zoom:1} * html .ajaxbloc, * html input, * html img, * html textarea, * html blockquote {height:auto;} /* -------------------------------------------------------------------- */ /* layoutxx.css */ /* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */ /* base.css */ /* -------------------------------------------------------------------- */ * html .spip_code, * html .spip_cadre {height:auto; width:90%;} * html blockquote.spip_poesie div {text-indent:0;} * html .formulaire_recherche input{border-width:0; display:inline; background-color:#E0E0E0} * html .formulaire_recherche input.text {height:23px; width:118px; border:1px solid #6262A4;} * html .formulaire_recherche input.submit {border: 0;} *+html .formulaire_recherche input.submit {float : right;} /* -------------------------------------------------------------------- */ /* layout.css */ /* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */ /* bandeau.css */ /* -------------------------------------------------------------------- */ * html .bandeau_haut {height: 50px;} /* IE6 ne comprend pas min-height */ * html .nav_bandeau {width: 45%;} /* IE6 ne comprend pas max-width */ * html .bandeau_bas {height: 23px;} * html .bandeau_chemin {height: 22px;} /* -------------------------------------------------------------------- */ /* noisettes.css */ /* -------------------------------------------------------------------- */ * html #noisette_herbier.noisette .contenu .texte ul.innerfade li {margin-left:-60px;} *+html #noisette_herbier.noisette .contenu .texte ul.innerfade li {margin-left:-60px;} * html #noisette_miniagenda.noisette {height:auto;} * html #noisette_miniagenda.noisette .contenu {width:178px;} * html #noisette_miniagenda.noisette .contenu br.nettoyeur {line-height : 0;} /* Sous IE6 ce nettoyeur a une hauteur non nulle */ * html #noisette_miniagenda.noisette .contenu h2 {float:left;} * html #noisette_miniagenda.noisette .contenu h2.titre_bloc.centre {width: 90px;} * html #noisette_miniagenda.noisette .contenu h2 a.titre_bloc.bord {width: 44px;} * html #noisette_miniagenda.noisette .contenu h2 a.titre_bloc#auj {border:none; width: 100%;} * html .menu_rub1 ul.menulist ul {top: 0; left: 173px;} *+html .menu_rub1 ul.menulist ul {top: 0;} /* -------------------------------------------------------------------- */ /* elements.css */ /* -------------------------------------------------------------------- */ * html .planche .cartouche {width :140px; float:none;} * html .planche li {height: 18em;} * html #planche.galerie-album {height: 220px;} *+html #planche.galerie-album {height: 220px;} * html .carrousel .contenu ul.vignettes span.wrap2 {display: inline-block; text-align: left;} * html .carrousel .contenu ul.vignettes span.wrap2 a {overflow: visible; top: 50%; text-align: center;} * html .carrousel .contenu ul.vignettes span.wrap2 span {overflow: visible; top: 50%; text-align: center;} * html .carrousel .contenu ul.vignettes img {margin-top: 10px; top: -30%; } *+html .carrousel .contenu ul.vignettes span.wrap2 {display: block; position: relative; text-align: left;} *+html .carrousel .contenu ul.vignettes span.wrap2 a {overflow: visible; position: absolute; top: 50%; text-align: center;} *+html .carrousel .contenu ul.vignettes span.wrap2 span {overflow: visible; position: absolute; top: 50%; text-align: center;} *+html .carrousel .contenu ul.vignettes img {position: relative; top: -50%; margin-top: 2%;} ------------N4eNwrm1gWfA2YNEcWro80 Content-Disposition: inline; filename=impression.css Content-Type: text/css; charset=utf-8; name=impression.css Content-Location: http://www.cds73.fr/plugins/sarkaspip_300/css/impression.css Content-Transfer-Encoding: 8bit /* IMPRESSION.CSS */ /* Cette feuille contient: */ /* - les styles specifiques a l'impression (media=print) */ /* -------------------------------------------------------------------- */ /* Correction des styles HTML par defaut ---------------------------------------------- */ body { background: #FFF; margin: 15pt; text-align: left; font: 8pt Helvetica, Verdana, Arial, sans-serif; color: #000; } img, table { margin: 0; padding: 0; border: 0; } ul, ol, li { margin: 0; padding: 0; list-style: none; } /* Ne pas imprimer : on elimine les elements de navigation (display: none; ) ---------------------------------------------- */ div#header, div#footer {margin :0; padding:0; display: none; } div#navigation, div#extra {display: none; } div#content,div#wrapper {margin:0; padding:0; width:100%;} #une.article, #edito.article{background:#FFF;border:none;} .repondre, .repondre, .formulaire_spip { display: none; } .spip-admin, .spip-admin-float, .invisible { display: none; } /* Disposition a l'ecran ---------------------------------------------- */ .nettoyeur { clear: both; } /* Pour les liens, on les souligne et /* on affiche l'URL cible a la suite des liens sortants (!) ---------------------------------------------- */ a { color: #520; text-decoration: underline; } a.spip_out:after,a.spip_in:after, a.spip_glossaire:after, a.spip_mail:after { display: inline; content: " [" attr(href) "]"; } a.fonction{display:none;} ------------N4eNwrm1gWfA2YNEcWro80 Content-Disposition: inline; filename=favicon.ico Content-Type: image/x-icon; name=favicon.ico Content-Location: http://www.cds73.fr/plugins/sarkaspip_300/images/favicon.ico Content-Transfer-Encoding: Base64 AAABAAEAHyAAAAEAGACoDAAAFgAAACgAAAAfAAAAQAAAAAEAGAAAAAAAgAwAAAAA AAAAAAAAAAAAAAAAAAD8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz5/Pv8/v3////6 /Pvl7PH1+Pn///76/fv5/Pv5/Pv8/vz8/vz7/fz8/vz8/vz8/vz8/vz8/vz8/vz8 /vz8/vz8/vz8/vx1dXX8/vz8/vz8/vz8/vz8/vz8/vz8/vz6/Pz///7v9PmKq9s1 b8IZWLYwaLrL2ez////9/v7///76/Pv6/fv9/vz7/fz7/fz8/vz8/vz8/vz8/vz8 /vz8/vz8/vz8/vx1dXX8/vz8/vz8/vz8/vz8/vz8/vz6/fv///7J2vEka80AScAB UMECVMIARrosZsL4+/qrw+aiveX////8/f73+vr///3///38/vz8/vz8/vz8/vz8 /vz8/vz8/vz8/vx1dXX8/vz8/vz8/vz8/vz8/vz6/fz///3R4vYPX9oAWNcLZNcJ YdMFXdEIXc4IW8wlZL0DQ6wGSrVUidBEgNN8pt/6/Pzh6vX6/Pv9//z8/vz8/vz8 /vz8/vz8/vz8/vx1dXX8/vz8/vz8/vz8/vz8/vz7/fz///xKju0YcOgObOoAX+gA XuUFY98DXdwAWOEOV8cyYqgnXKsKSqkARa8GT7wDU8R0oN3///35/Pv8/vz8/vz8 /vz8/vz8/vz8/vx1dXX8/vz8/vz8/vz8/vz7/fv+//35/P/O4vr39vNbluxkldZt mdgAYu87geF6oNdpldnKyMS+vr+0tbeepK99j6w8aKmAn8z////7/f37/vv8/vz8 /vz8/vz8/vz8/vx1dXX8/vz8/vz8/vz8/vz+//75+/nf4N7PzMa+vby7v8XV0Mje 18+GrOTM0trt49bZ2djS1NbR0dHLy8vGw8C/urW2sKmpqKbHycj5+vn9//38/vz8 /vz8/vz8/vz8/vx1dXX8/vz8/vz8/vz9//3u7+/Oz8++v7+2uLjExcXS0tHX2Nrd 3uDt6OLo5+fk5ujm5+bj4+Pe3t/Y2NjOz8/Dw8S2trioqKmcnJy8vLv8/vz8/vz8 /vz8/vz8/vz8/vx1dXX8/vz8/vz6+/r3+Pfj4+Tk5OTm5ubKysrR0tLc3Nzl5eXs 7Ozw8vP19vf3+Pj19fbw8PHq6uvj4+Pb29zQ0dDEw8S1tbWpqamenp7c3t3////7 /fv8/vz8/vz8/vx1dXX8/vz7/fz6+vvt7u7t7e3q6ung4eHQ0dDb29vl5ebv7+/4 +Pj8/vz8/vz5/Pz7/fz///74+Pjq6+3i4uPZ2dnNzc2+vr6urq+en5/Lzcz////7 /fv8/vz8/vz8/vx1dXX8/vz8//z7/Pv09fTu7u7r6+vk5eXa2trg4ODs7ez39/j8 /v37/vz6/Pv////9/v3n7vXx9fn//vnq6ure3t7S09LEw8OysrKenp/Q0dD////7 /fv8/vz8/vz8/vx1dXX8/vz8/vz6+vrz9PPv7+7s7e7l5ube3d7d3d3v7+/7/Pv8 /vz6/fz///+sw+Y7dcoWW8AdYMKApdrz8u/h4eHV1tbIyMm+v7+mpqbn6Of////7 /fv8/vz8/vz8/vx1dXX8/vz7/fz6+/r5+vnDw8S+vr7b29rh4eDX19fe3t76+/v7 /vz///1umdgAR7sBTMABU8MDUsAAQrqCpdjw7OTR0tTNzs7Y2NjW19fy8/L+//78 /vz8/vz8/vz8/vx1dXX8/vz8/vz7/vv////x8vC6urvCwsLa2tra2trR0dHu8PH/ //+Ep90ARsEIXtEIX9UFXtcHX9UCWM0YXsfT197U1NLLzc3X1tbg39/k5eXz9fT9 //38/vz8/vz8/vx1dXX8/vz8/vz8/vz7/fv////09fXLzMzLzMzY2Nja29z49vPO 3O8HVskFX9cFZOMEZukEaOsEZugHZOAAVNKFpdPb18++v8LX19fe3t/j5OTr6+z4 +fj9//38/vz8/vx1dXX8/vz8/vz8/vz8/vz7/fv+//76+/rb3NvQ0NHa29z28upl kdYAUtEIZ+QEavAFb/oFcPsFbvgHau0AXN46edPHxcC9v8L3+fj3+Pjp6urs7O3z 8/P7/fv8/vz8/vx1dXX8/vz8/vz8/vz8/vz8/vz7/vv9/v3////r7e3Y2NfR09ce Zs0AXNgFaOkFb/oFcfoFcfkFcfwEbPcDZeYDWtOor8D//PD7/v/9//7y8vLr6+v1 9fT4+vn8/vz8/vx1dXX8/vz8/vz8/vz8/vz8/vz8/vz8/vz7/fv9/v////u3xt0A UsUFYNgEZucGa/QEc/4Fd/8HcvsIbfEKbe8AZus2h/G63P/4+vz///3w8fHr6uv0 9PT5+vr7/fv8/vx1dXX8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz4+/r///+jvucA SL4HXM8EYd0FbvoJaOkIQ6MKMoAQM3sVOIEcQosUSJ4IVsZMlfXq8v3y8vHq6+z4 +Pj5+vr7/fv8/vx1dXX8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz4+/v///+Apd0A RrkIWckFZeYJS7UKJmsQJF4YL2khN3AnPHMxQnc9R3c9THwAUdyRv////fLx9PX1 9fXz9PT5+/n9//11dXX8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz5/Pv///9smNkA Sb4IXM4KOpARJFwVMnATOYIOOYkSPI0ZRJQcS58ZU7IRZtpSmffp8vr///38/v3q 6uvp6ur8/fz8/vx1dXX8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz4+/v///9pl9sA Sb0RP5EPNX0VQ5QIV8Y4f+V1puuBr+17r/F7tPudyP3R5v7+/vz+//z8/vz8//38 /vz6/Pv8/vz8/vx1dXX8/vz8/vz8/vz8/vz8/vz8/vz8/vz6/fz///7k7PYmaskC TbcLU7gGWMgEWdACXtoXbeNSlPCmyfjx9fr///v+//z///z4/Pz4+/v4+/z9/vz8 /vz8/vz8/vz8/vx1dXX8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz///1IgM4ARboG VcIBT8MAT8AEVMMHWs8CYNsAX+oAY/UPdflXnvi20/n0+Pv///x2r/mqzPr///z5 /Pz8/vz8/vz8/vx1dXX8/vz8/vz8/vz8/vz8/vz8/vz7/fz///3t8vcfYsAfZMKQ pcJ7msIra8kGVscBVtEAWNsCYugAZvcAb/4Aav0AavowifpZnvs8jPft9Pv///z7 /fz8/vz8/vz8/vx1dXX8/vz8/vz8/vz8/vz8/vz8/vz8/vz7/fz///7T2uXX3OLg 3dasqKF7enqSn7Rnh7dwl86gut5dn/YdfPcWevkQePsTd/g3ivTR4/n///z6/fz8 /vz8/vz8/vz8/vx1dXX8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz9//3s6+nq6ure 3+C7vL2srKukoZ2inZTh3NPv7Oj////q8fjQ4fjH3frX5ff6+/n+//37/fz8/vz8 /vz8/vz8/vz8/vx1dXX8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz+//3z9fXr7O3p 6+vk5eXp6urq7e3i5Obh4uT4+vv6/fz+//3///3///3///38/vz6/fz8/vz8/vz8 /vz8/vz8/vz8/vx1dXX8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz9//35+vni4uPm 6Onq7O3t7O3v7vDr6+z5+vn9//38/vz7/fz6/fz6/fz6/fz7/vz8/vz8/vz8/vz8 /vz8/vz8/vz8/vx1dXX8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vzx8vHo6eju8O/u 7+7l5eXt7u7h4eH7/fz9//38/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8 /vz8/vz8/vz8/vx1dXX8/vz8/vz8/vz8/vz8/vz8/vz8/vz6+/r4+vj///7+/v/x 8vH7/fv////v8fDz9PP8/v38/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8 /vz8/vz8/vz8/vx1dXX8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz9//38/vz5+/r7 /Pz9//38/vz9//35+vn6/Pv8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8/vz8 /vz8/vz8/vz8/vx1dXUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA== ------------N4eNwrm1gWfA2YNEcWro80 Content-Disposition: inline; filename=jquery.js Content-Type: application/x-javascript; charset=utf-8; name=jquery.js Content-Location: http://www.cds73.fr/prive/javascript/jquery.js Content-Transfer-Encoding: Base64 KGZ1bmN0aW9uKCl7Ci8qCiAqIGpRdWVyeSAxLjIuNiAtIE5ldyBXYXZlIEphdmFz Y3JpcHQKICoKICogQ29weXJpZ2h0IChjKSAyMDA4IEpvaG4gUmVzaWcgKGpxdWVy eS5jb20pCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCAoTUlULUxJQ0VO U0UudHh0KQogKiBhbmQgR1BMIChHUEwtTElDRU5TRS50eHQpIGxpY2Vuc2VzLgog KgogKiAkRGF0ZTogMjAwOC0wNS0yNCAxNDoyMjoxNyAtMDQwMCAoU2F0LCAyNCBN YXkgMjAwOCkgJAogKiAkUmV2OiA1Njg1ICQKICovCgovLyBNYXAgb3ZlciBqUXVl cnkgaW4gY2FzZSBvZiBvdmVyd3JpdGUKdmFyIF9qUXVlcnkgPSB3aW5kb3cualF1 ZXJ5LAovLyBNYXAgb3ZlciB0aGUgJCBpbiBjYXNlIG9mIG92ZXJ3cml0ZQoJXyQg PSB3aW5kb3cuJDsKCnZhciBqUXVlcnkgPSB3aW5kb3cualF1ZXJ5ID0gd2luZG93 LiQgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGNvbnRleHQgKSB7CgkvLyBUaGUgalF1 ZXJ5IG9iamVjdCBpcyBhY3R1YWxseSBqdXN0IHRoZSBpbml0IGNvbnN0cnVjdG9y ICdlbmhhbmNlZCcKCXJldHVybiBuZXcgalF1ZXJ5LmZuLmluaXQoIHNlbGVjdG9y LCBjb250ZXh0ICk7Cn07CgovLyBBIHNpbXBsZSB3YXkgdG8gY2hlY2sgZm9yIEhU TUwgc3RyaW5ncyBvciBJRCBzdHJpbmdzCi8vIChib3RoIG9mIHdoaWNoIHdlIG9w dGltaXplIGZvcikKdmFyIHF1aWNrRXhwciA9IC9eW148XSooPCgufFxzKSs+KVte Pl0qJHxeIyhcdyspJC8sCgovLyBJcyBpdCBhIHNpbXBsZSBzZWxlY3RvcgoJaXNT aW1wbGUgPSAvXi5bXjojXFtcLl0qJC8sCgovLyBXaWxsIHNwZWVkIHVwIHJlZmVy ZW5jZXMgdG8gdW5kZWZpbmVkLCBhbmQgYWxsb3dzIG11bmdpbmcgaXRzIG5hbWUu Cgl1bmRlZmluZWQ7CgpqUXVlcnkuZm4gPSBqUXVlcnkucHJvdG90eXBlID0gewoJ aW5pdDogZnVuY3Rpb24oIHNlbGVjdG9yLCBjb250ZXh0ICkgewoJCS8vIE1ha2Ug c3VyZSB0aGF0IGEgc2VsZWN0aW9uIHdhcyBwcm92aWRlZAoJCXNlbGVjdG9yID0g c2VsZWN0b3IgfHwgZG9jdW1lbnQ7CgoJCS8vIEhhbmRsZSAkKERPTUVsZW1lbnQp CgkJaWYgKCBzZWxlY3Rvci5ub2RlVHlwZSApIHsKCQkJdGhpc1swXSA9IHNlbGVj dG9yOwoJCQl0aGlzLmxlbmd0aCA9IDE7CgkJCXJldHVybiB0aGlzOwoJCX0KCQkv LyBIYW5kbGUgSFRNTCBzdHJpbmdzCgkJaWYgKCB0eXBlb2Ygc2VsZWN0b3IgPT0g InN0cmluZyIgKSB7CgkJCS8vIEFyZSB3ZSBkZWFsaW5nIHdpdGggSFRNTCBzdHJp bmcgb3IgYW4gSUQ/CgkJCXZhciBtYXRjaCA9IHF1aWNrRXhwci5leGVjKCBzZWxl Y3RvciApOwoKCQkJLy8gVmVyaWZ5IGEgbWF0Y2gsIGFuZCB0aGF0IG5vIGNvbnRl eHQgd2FzIHNwZWNpZmllZCBmb3IgI2lkCgkJCWlmICggbWF0Y2ggJiYgKG1hdGNo WzFdIHx8ICFjb250ZXh0KSApIHsKCgkJCQkvLyBIQU5ETEU6ICQoaHRtbCkgLT4g JChhcnJheSkKCQkJCWlmICggbWF0Y2hbMV0gKQoJCQkJCXNlbGVjdG9yID0galF1 ZXJ5LmNsZWFuKCBbIG1hdGNoWzFdIF0sIGNvbnRleHQgKTsKCgkJCQkvLyBIQU5E TEU6ICQoIiNpZCIpCgkJCQllbHNlIHsKCQkJCQl2YXIgZWxlbSA9IGRvY3VtZW50 LmdldEVsZW1lbnRCeUlkKCBtYXRjaFszXSApOwoKCQkJCQkvLyBNYWtlIHN1cmUg YW4gZWxlbWVudCB3YXMgbG9jYXRlZAoJCQkJCWlmICggZWxlbSApewoJCQkJCQkv LyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgSUUgYW5kIE9wZXJhIHJldHVybiBpdGVt cwoJCQkJCQkvLyBieSBuYW1lIGluc3RlYWQgb2YgSUQKCQkJCQkJaWYgKCBlbGVt LmlkICE9IG1hdGNoWzNdICkKCQkJCQkJCXJldHVybiBqUXVlcnkoKS5maW5kKCBz ZWxlY3RvciApOwoKCQkJCQkJLy8gT3RoZXJ3aXNlLCB3ZSBpbmplY3QgdGhlIGVs ZW1lbnQgZGlyZWN0bHkgaW50byB0aGUgalF1ZXJ5IG9iamVjdAoJCQkJCQlyZXR1 cm4galF1ZXJ5KCBlbGVtICk7CgkJCQkJfQoJCQkJCXNlbGVjdG9yID0gW107CgkJ CQl9CgoJCQkvLyBIQU5ETEU6ICQoZXhwciwgW2NvbnRleHRdKQoJCQkvLyAod2hp Y2ggaXMganVzdCBlcXVpdmFsZW50IHRvOiAkKGNvbnRlbnQpLmZpbmQoZXhwcikK CQkJfSBlbHNlCgkJCQlyZXR1cm4galF1ZXJ5KCBjb250ZXh0ICkuZmluZCggc2Vs ZWN0b3IgKTsKCgkJLy8gSEFORExFOiAkKGZ1bmN0aW9uKQoJCS8vIFNob3J0Y3V0 IGZvciBkb2N1bWVudCByZWFkeQoJCX0gZWxzZSBpZiAoIGpRdWVyeS5pc0Z1bmN0 aW9uKCBzZWxlY3RvciApICkKCQkJcmV0dXJuIGpRdWVyeSggZG9jdW1lbnQgKVsg alF1ZXJ5LmZuLnJlYWR5ID8gInJlYWR5IiA6ICJsb2FkIiBdKCBzZWxlY3RvciAp OwoKCQlyZXR1cm4gdGhpcy5zZXRBcnJheShqUXVlcnkubWFrZUFycmF5KHNlbGVj dG9yKSk7Cgl9LAoKCS8vIFRoZSBjdXJyZW50IHZlcnNpb24gb2YgalF1ZXJ5IGJl aW5nIHVzZWQKCWpxdWVyeTogIjEuMi42IiwKCgkvLyBUaGUgbnVtYmVyIG9mIGVs ZW1lbnRzIGNvbnRhaW5lZCBpbiB0aGUgbWF0Y2hlZCBlbGVtZW50IHNldAoJc2l6 ZTogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMubGVuZ3RoOwoJfSwKCgkvLyBU aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGNvbnRhaW5lZCBpbiB0aGUgbWF0Y2hlZCBl bGVtZW50IHNldAoJbGVuZ3RoOiAwLAoKCS8vIEdldCB0aGUgTnRoIGVsZW1lbnQg aW4gdGhlIG1hdGNoZWQgZWxlbWVudCBzZXQgT1IKCS8vIEdldCB0aGUgd2hvbGUg bWF0Y2hlZCBlbGVtZW50IHNldCBhcyBhIGNsZWFuIGFycmF5CglnZXQ6IGZ1bmN0 aW9uKCBudW0gKSB7CgkJcmV0dXJuIG51bSA9PSB1bmRlZmluZWQgPwoKCQkJLy8g UmV0dXJuIGEgJ2NsZWFuJyBhcnJheQoJCQlqUXVlcnkubWFrZUFycmF5KCB0aGlz ICkgOgoKCQkJLy8gUmV0dXJuIGp1c3QgdGhlIG9iamVjdAoJCQl0aGlzWyBudW0g XTsKCX0sCgoJLy8gVGFrZSBhbiBhcnJheSBvZiBlbGVtZW50cyBhbmQgcHVzaCBp dCBvbnRvIHRoZSBzdGFjawoJLy8gKHJldHVybmluZyB0aGUgbmV3IG1hdGNoZWQg ZWxlbWVudCBzZXQpCglwdXNoU3RhY2s6IGZ1bmN0aW9uKCBlbGVtcyApIHsKCQkv LyBCdWlsZCBhIG5ldyBqUXVlcnkgbWF0Y2hlZCBlbGVtZW50IHNldAoJCXZhciBy ZXQgPSBqUXVlcnkoIGVsZW1zICk7CgoJCS8vIEFkZCB0aGUgb2xkIG9iamVjdCBv bnRvIHRoZSBzdGFjayAoYXMgYSByZWZlcmVuY2UpCgkJcmV0LnByZXZPYmplY3Qg PSB0aGlzOwoKCQkvLyBSZXR1cm4gdGhlIG5ld2x5LWZvcm1lZCBlbGVtZW50IHNl dAoJCXJldHVybiByZXQ7Cgl9LAoKCS8vIEZvcmNlIHRoZSBjdXJyZW50IG1hdGNo ZWQgc2V0IG9mIGVsZW1lbnRzIHRvIGJlY29tZQoJLy8gdGhlIHNwZWNpZmllZCBh cnJheSBvZiBlbGVtZW50cyAoZGVzdHJveWluZyB0aGUgc3RhY2sgaW4gdGhlIHBy b2Nlc3MpCgkvLyBZb3Ugc2hvdWxkIHVzZSBwdXNoU3RhY2soKSBpbiBvcmRlciB0 byBkbyB0aGlzLCBidXQgbWFpbnRhaW4gdGhlIHN0YWNrCglzZXRBcnJheTogZnVu Y3Rpb24oIGVsZW1zICkgewoJCS8vIFJlc2V0dGluZyB0aGUgbGVuZ3RoIHRvIDAs IHRoZW4gdXNpbmcgdGhlIG5hdGl2ZSBBcnJheSBwdXNoCgkJLy8gaXMgYSBzdXBl ci1mYXN0IHdheSB0byBwb3B1bGF0ZSBhbiBvYmplY3Qgd2l0aCBhcnJheS1saWtl IHByb3BlcnRpZXMKCQl0aGlzLmxlbmd0aCA9IDA7CgkJQXJyYXkucHJvdG90eXBl LnB1c2guYXBwbHkoIHRoaXMsIGVsZW1zICk7CgoJCXJldHVybiB0aGlzOwoJfSwK CgkvLyBFeGVjdXRlIGEgY2FsbGJhY2sgZm9yIGV2ZXJ5IGVsZW1lbnQgaW4gdGhl IG1hdGNoZWQgc2V0LgoJLy8gKFlvdSBjYW4gc2VlZCB0aGUgYXJndW1lbnRzIHdp dGggYW4gYXJyYXkgb2YgYXJncywgYnV0IHRoaXMgaXMKCS8vIG9ubHkgdXNlZCBp bnRlcm5hbGx5LikKCWVhY2g6IGZ1bmN0aW9uKCBjYWxsYmFjaywgYXJncyApIHsK CQlyZXR1cm4galF1ZXJ5LmVhY2goIHRoaXMsIGNhbGxiYWNrLCBhcmdzICk7Cgl9 LAoKCS8vIERldGVybWluZSB0aGUgcG9zaXRpb24gb2YgYW4gZWxlbWVudCB3aXRo aW4KCS8vIHRoZSBtYXRjaGVkIHNldCBvZiBlbGVtZW50cwoJaW5kZXg6IGZ1bmN0 aW9uKCBlbGVtICkgewoJCXZhciByZXQgPSAtMTsKCgkJLy8gTG9jYXRlIHRoZSBw b3NpdGlvbiBvZiB0aGUgZGVzaXJlZCBlbGVtZW50CgkJcmV0dXJuIGpRdWVyeS5p bkFycmF5KAoJCQkvLyBJZiBpdCByZWNlaXZlcyBhIGpRdWVyeSBvYmplY3QsIHRo ZSBmaXJzdCBlbGVtZW50IGlzIHVzZWQKCQkJZWxlbSAmJiBlbGVtLmpxdWVyeSA/ IGVsZW1bMF0gOiBlbGVtCgkJLCB0aGlzICk7Cgl9LAoKCWF0dHI6IGZ1bmN0aW9u KCBuYW1lLCB2YWx1ZSwgdHlwZSApIHsKCQl2YXIgb3B0aW9ucyA9IG5hbWU7CgoJ CS8vIExvb2sgZm9yIHRoZSBjYXNlIHdoZXJlIHdlJ3JlIGFjY2Vzc2luZyBhIHN0 eWxlIHZhbHVlCgkJaWYgKCBuYW1lLmNvbnN0cnVjdG9yID09IFN0cmluZyApCgkJ CWlmICggdmFsdWUgPT09IHVuZGVmaW5lZCApCgkJCQlyZXR1cm4gdGhpc1swXSAm JiBqUXVlcnlbIHR5cGUgfHwgImF0dHIiIF0oIHRoaXNbMF0sIG5hbWUgKTsKCgkJ CWVsc2UgewoJCQkJb3B0aW9ucyA9IHt9OwoJCQkJb3B0aW9uc1sgbmFtZSBdID0g dmFsdWU7CgkJCX0KCgkJLy8gQ2hlY2sgdG8gc2VlIGlmIHdlJ3JlIHNldHRpbmcg c3R5bGUgdmFsdWVzCgkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihpKXsKCQkJ Ly8gU2V0IGFsbCB0aGUgc3R5bGVzCgkJCWZvciAoIG5hbWUgaW4gb3B0aW9ucyAp CgkJCQlqUXVlcnkuYXR0cigKCQkJCQl0eXBlID8KCQkJCQkJdGhpcy5zdHlsZSA6 CgkJCQkJCXRoaXMsCgkJCQkJbmFtZSwgalF1ZXJ5LnByb3AoIHRoaXMsIG9wdGlv bnNbIG5hbWUgXSwgdHlwZSwgaSwgbmFtZSApCgkJCQkpOwoJCX0pOwoJfSwKCglj c3M6IGZ1bmN0aW9uKCBrZXksIHZhbHVlICkgewoJCS8vIGlnbm9yZSBuZWdhdGl2 ZSB3aWR0aCBhbmQgaGVpZ2h0IHZhbHVlcwoJCWlmICggKGtleSA9PSAnd2lkdGgn IHx8IGtleSA9PSAnaGVpZ2h0JykgJiYgcGFyc2VGbG9hdCh2YWx1ZSkgPCAwICkK CQkJdmFsdWUgPSB1bmRlZmluZWQ7CgkJcmV0dXJuIHRoaXMuYXR0cigga2V5LCB2 YWx1ZSwgImN1ckNTUyIgKTsKCX0sCgoJdGV4dDogZnVuY3Rpb24oIHRleHQgKSB7 CgkJaWYgKCB0eXBlb2YgdGV4dCAhPSAib2JqZWN0IiAmJiB0ZXh0ICE9IG51bGwg KQoJCQlyZXR1cm4gdGhpcy5lbXB0eSgpLmFwcGVuZCggKHRoaXNbMF0gJiYgdGhp c1swXS5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50KS5jcmVhdGVUZXh0Tm9kZSgg dGV4dCApICk7CgoJCXZhciByZXQgPSAiIjsKCgkJalF1ZXJ5LmVhY2goIHRleHQg fHwgdGhpcywgZnVuY3Rpb24oKXsKCQkJalF1ZXJ5LmVhY2goIHRoaXMuY2hpbGRO b2RlcywgZnVuY3Rpb24oKXsKCQkJCWlmICggdGhpcy5ub2RlVHlwZSAhPSA4ICkK CQkJCQlyZXQgKz0gdGhpcy5ub2RlVHlwZSAhPSAxID8KCQkJCQkJdGhpcy5ub2Rl VmFsdWUgOgoJCQkJCQlqUXVlcnkuZm4udGV4dCggWyB0aGlzIF0gKTsKCQkJfSk7 CgkJfSk7CgoJCXJldHVybiByZXQ7Cgl9LAoKCXdyYXBBbGw6IGZ1bmN0aW9uKCBo dG1sICkgewoJCWlmICggdGhpc1swXSApCgkJCS8vIFRoZSBlbGVtZW50cyB0byB3 cmFwIHRoZSB0YXJnZXQgYXJvdW5kCgkJCWpRdWVyeSggaHRtbCwgdGhpc1swXS5v d25lckRvY3VtZW50ICkKCQkJCS5jbG9uZSgpCgkJCQkuaW5zZXJ0QmVmb3JlKCB0 aGlzWzBdICkKCQkJCS5tYXAoZnVuY3Rpb24oKXsKCQkJCQl2YXIgZWxlbSA9IHRo aXM7CgoJCQkJCXdoaWxlICggZWxlbS5maXJzdENoaWxkICkKCQkJCQkJZWxlbSA9 IGVsZW0uZmlyc3RDaGlsZDsKCgkJCQkJcmV0dXJuIGVsZW07CgkJCQl9KQoJCQkJ LmFwcGVuZCh0aGlzKTsKCgkJcmV0dXJuIHRoaXM7Cgl9LAoKCXdyYXBJbm5lcjog ZnVuY3Rpb24oIGh0bWwgKSB7CgkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigp ewoJCQlqUXVlcnkoIHRoaXMgKS5jb250ZW50cygpLndyYXBBbGwoIGh0bWwgKTsK CQl9KTsKCX0sCgoJd3JhcDogZnVuY3Rpb24oIGh0bWwgKSB7CgkJcmV0dXJuIHRo aXMuZWFjaChmdW5jdGlvbigpewoJCQlqUXVlcnkoIHRoaXMgKS53cmFwQWxsKCBo dG1sICk7CgkJfSk7Cgl9LAoKCWFwcGVuZDogZnVuY3Rpb24oKSB7CgkJcmV0dXJu IHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCB0cnVlLCBmYWxzZSwgZnVuY3Rpb24o ZWxlbSl7CgkJCWlmICh0aGlzLm5vZGVUeXBlID09IDEpCgkJCQl0aGlzLmFwcGVu ZENoaWxkKCBlbGVtICk7CgkJfSk7Cgl9LAoKCXByZXBlbmQ6IGZ1bmN0aW9uKCkg ewoJCXJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywgdHJ1ZSwgdHJ1ZSwg ZnVuY3Rpb24oZWxlbSl7CgkJCWlmICh0aGlzLm5vZGVUeXBlID09IDEpCgkJCQl0 aGlzLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcy5maXJzdENoaWxkICk7CgkJfSk7 Cgl9LAoKCWJlZm9yZTogZnVuY3Rpb24oKSB7CgkJcmV0dXJuIHRoaXMuZG9tTWFu aXAoYXJndW1lbnRzLCBmYWxzZSwgZmFsc2UsIGZ1bmN0aW9uKGVsZW0pewoJCQl0 aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKCBlbGVtLCB0aGlzICk7CgkJfSk7 Cgl9LAoKCWFmdGVyOiBmdW5jdGlvbigpIHsKCQlyZXR1cm4gdGhpcy5kb21NYW5p cChhcmd1bWVudHMsIGZhbHNlLCB0cnVlLCBmdW5jdGlvbihlbGVtKXsKCQkJdGhp cy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSggZWxlbSwgdGhpcy5uZXh0U2libGlu ZyApOwoJCX0pOwoJfSwKCgllbmQ6IGZ1bmN0aW9uKCkgewoJCXJldHVybiB0aGlz LnByZXZPYmplY3QgfHwgalF1ZXJ5KCBbXSApOwoJfSwKCglmaW5kOiBmdW5jdGlv biggc2VsZWN0b3IgKSB7CgkJdmFyIGVsZW1zID0galF1ZXJ5Lm1hcCh0aGlzLCBm dW5jdGlvbihlbGVtKXsKCQkJcmV0dXJuIGpRdWVyeS5maW5kKCBzZWxlY3Rvciwg ZWxlbSApOwoJCX0pOwoKCQlyZXR1cm4gdGhpcy5wdXNoU3RhY2soIC9bXis+XSBb Xis+XS8udGVzdCggc2VsZWN0b3IgKSB8fCBzZWxlY3Rvci5pbmRleE9mKCIuLiIp ID4gLTEgPwoJCQlqUXVlcnkudW5pcXVlKCBlbGVtcyApIDoKCQkJZWxlbXMgKTsK CX0sCgoJY2xvbmU6IGZ1bmN0aW9uKCBldmVudHMgKSB7CgkJLy8gRG8gdGhlIGNs b25lCgkJdmFyIHJldCA9IHRoaXMubWFwKGZ1bmN0aW9uKCl7CgkJCWlmICggalF1 ZXJ5LmJyb3dzZXIubXNpZSAmJiAhalF1ZXJ5LmlzWE1MRG9jKHRoaXMpICkgewoJ CQkJLy8gSUUgY29waWVzIGV2ZW50cyBib3VuZCB2aWEgYXR0YWNoRXZlbnQgd2hl bgoJCQkJLy8gdXNpbmcgY2xvbmVOb2RlLiBDYWxsaW5nIGRldGFjaEV2ZW50IG9u IHRoZQoJCQkJLy8gY2xvbmUgd2lsbCBhbHNvIHJlbW92ZSB0aGUgZXZlbnRzIGZy b20gdGhlIG9yaWduYWwKCQkJCS8vIEluIG9yZGVyIHRvIGdldCBhcm91bmQgdGhp cywgd2UgdXNlIGlubmVySFRNTC4KCQkJCS8vIFVuZm9ydHVuYXRlbHksIHRoaXMg bWVhbnMgc29tZSBtb2RpZmljYXRpb25zIHRvCgkJCQkvLyBhdHRyaWJ1dGVzIGlu IElFIHRoYXQgYXJlIGFjdHVhbGx5IG9ubHkgc3RvcmVkCgkJCQkvLyBhcyBwcm9w ZXJ0aWVzIHdpbGwgbm90IGJlIGNvcGllZCAoc3VjaCBhcyB0aGUKCQkJCS8vIHRo ZSBuYW1lIGF0dHJpYnV0ZSBvbiBhbiBpbnB1dCkuCgkJCQl2YXIgY2xvbmUgPSB0 aGlzLmNsb25lTm9kZSh0cnVlKSwKCQkJCQljb250YWluZXIgPSBkb2N1bWVudC5j cmVhdGVFbGVtZW50KCJkaXYiKTsKCQkJCWNvbnRhaW5lci5hcHBlbmRDaGlsZChj bG9uZSk7CgkJCQlyZXR1cm4galF1ZXJ5LmNsZWFuKFtjb250YWluZXIuaW5uZXJI VE1MXSlbMF07CgkJCX0gZWxzZQoJCQkJcmV0dXJuIHRoaXMuY2xvbmVOb2RlKHRy dWUpOwoJCX0pOwoKCQkvLyBOZWVkIHRvIHNldCB0aGUgZXhwYW5kbyB0byBudWxs IG9uIHRoZSBjbG9uZWQgc2V0IGlmIGl0IGV4aXN0cwoJCS8vIHJlbW92ZURhdGEg ZG9lc24ndCB3b3JrIGhlcmUsIElFIHJlbW92ZXMgaXQgZnJvbSB0aGUgb3JpZ2lu YWwgYXMgd2VsbAoJCS8vIHRoaXMgaXMgcHJpbWFyaWx5IGZvciBJRSBidXQgdGhl IGRhdGEgZXhwYW5kbyBzaG91bGRuJ3QgYmUgY29waWVkIG92ZXIgaW4gYW55IGJy b3dzZXIKCQl2YXIgY2xvbmUgPSByZXQuZmluZCgiKiIpLmFuZFNlbGYoKS5lYWNo KGZ1bmN0aW9uKCl7CgkJCWlmICggdGhpc1sgZXhwYW5kbyBdICE9IHVuZGVmaW5l ZCApCgkJCQl0aGlzWyBleHBhbmRvIF0gPSBudWxsOwoJCX0pOwoKCQkvLyBDb3B5 IHRoZSBldmVudHMgZnJvbSB0aGUgb3JpZ2luYWwgdG8gdGhlIGNsb25lCgkJaWYg KCBldmVudHMgPT09IHRydWUgKQoJCQl0aGlzLmZpbmQoIioiKS5hbmRTZWxmKCku ZWFjaChmdW5jdGlvbihpKXsKCQkJCWlmICh0aGlzLm5vZGVUeXBlID09IDMpCgkJ CQkJcmV0dXJuOwoJCQkJdmFyIGV2ZW50cyA9IGpRdWVyeS5kYXRhKCB0aGlzLCAi ZXZlbnRzIiApOwoKCQkJCWZvciAoIHZhciB0eXBlIGluIGV2ZW50cyApCgkJCQkJ Zm9yICggdmFyIGhhbmRsZXIgaW4gZXZlbnRzWyB0eXBlIF0gKQoJCQkJCQlqUXVl cnkuZXZlbnQuYWRkKCBjbG9uZVsgaSBdLCB0eXBlLCBldmVudHNbIHR5cGUgXVsg aGFuZGxlciBdLCBldmVudHNbIHR5cGUgXVsgaGFuZGxlciBdLmRhdGEgKTsKCQkJ fSk7CgoJCS8vIFJldHVybiB0aGUgY2xvbmVkIHNldAoJCXJldHVybiByZXQ7Cgl9 LAoKCWZpbHRlcjogZnVuY3Rpb24oIHNlbGVjdG9yICkgewoJCXJldHVybiB0aGlz LnB1c2hTdGFjaygKCQkJalF1ZXJ5LmlzRnVuY3Rpb24oIHNlbGVjdG9yICkgJiYK CQkJalF1ZXJ5LmdyZXAodGhpcywgZnVuY3Rpb24oZWxlbSwgaSl7CgkJCQlyZXR1 cm4gc2VsZWN0b3IuY2FsbCggZWxlbSwgaSApOwoJCQl9KSB8fAoKCQkJalF1ZXJ5 Lm11bHRpRmlsdGVyKCBzZWxlY3RvciwgdGhpcyApICk7Cgl9LAoKCW5vdDogZnVu Y3Rpb24oIHNlbGVjdG9yICkgewoJCWlmICggc2VsZWN0b3IuY29uc3RydWN0b3Ig PT0gU3RyaW5nICkKCQkJLy8gdGVzdCBzcGVjaWFsIGNhc2Ugd2hlcmUganVzdCBv bmUgc2VsZWN0b3IgaXMgcGFzc2VkIGluCgkJCWlmICggaXNTaW1wbGUudGVzdCgg c2VsZWN0b3IgKSApCgkJCQlyZXR1cm4gdGhpcy5wdXNoU3RhY2soIGpRdWVyeS5t dWx0aUZpbHRlciggc2VsZWN0b3IsIHRoaXMsIHRydWUgKSApOwoJCQllbHNlCgkJ CQlzZWxlY3RvciA9IGpRdWVyeS5tdWx0aUZpbHRlciggc2VsZWN0b3IsIHRoaXMg KTsKCgkJdmFyIGlzQXJyYXlMaWtlID0gc2VsZWN0b3IubGVuZ3RoICYmIHNlbGVj dG9yW3NlbGVjdG9yLmxlbmd0aCAtIDFdICE9PSB1bmRlZmluZWQgJiYgIXNlbGVj dG9yLm5vZGVUeXBlOwoJCXJldHVybiB0aGlzLmZpbHRlcihmdW5jdGlvbigpIHsK CQkJcmV0dXJuIGlzQXJyYXlMaWtlID8galF1ZXJ5LmluQXJyYXkoIHRoaXMsIHNl bGVjdG9yICkgPCAwIDogdGhpcyAhPSBzZWxlY3RvcjsKCQl9KTsKCX0sCgoJYWRk OiBmdW5jdGlvbiggc2VsZWN0b3IgKSB7CgkJcmV0dXJuIHRoaXMucHVzaFN0YWNr KCBqUXVlcnkudW5pcXVlKCBqUXVlcnkubWVyZ2UoCgkJCXRoaXMuZ2V0KCksCgkJ CXR5cGVvZiBzZWxlY3RvciA9PSAnc3RyaW5nJyA/CgkJCQlqUXVlcnkoIHNlbGVj dG9yICkgOgoJCQkJalF1ZXJ5Lm1ha2VBcnJheSggc2VsZWN0b3IgKQoJCSkpKTsK CX0sCgoJaXM6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKCQlyZXR1cm4gISFzZWxl Y3RvciAmJiBqUXVlcnkubXVsdGlGaWx0ZXIoIHNlbGVjdG9yLCB0aGlzICkubGVu Z3RoID4gMDsKCX0sCgoJaGFzQ2xhc3M6IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsK CQlyZXR1cm4gdGhpcy5pcyggIi4iICsgc2VsZWN0b3IgKTsKCX0sCgoJdmFsOiBm dW5jdGlvbiggdmFsdWUgKSB7CgkJaWYgKCB2YWx1ZSA9PSB1bmRlZmluZWQgKSB7 CgoJCQlpZiAoIHRoaXMubGVuZ3RoICkgewoJCQkJdmFyIGVsZW0gPSB0aGlzWzBd OwoKCQkJCS8vIFdlIG5lZWQgdG8gaGFuZGxlIHNlbGVjdCBib3hlcyBzcGVjaWFs CgkJCQlpZiAoIGpRdWVyeS5ub2RlTmFtZSggZWxlbSwgInNlbGVjdCIgKSApIHsK CQkJCQl2YXIgaW5kZXggPSBlbGVtLnNlbGVjdGVkSW5kZXgsCgkJCQkJCXZhbHVl cyA9IFtdLAoJCQkJCQlvcHRpb25zID0gZWxlbS5vcHRpb25zLAoJCQkJCQlvbmUg PSBlbGVtLnR5cGUgPT0gInNlbGVjdC1vbmUiOwoKCQkJCQkvLyBOb3RoaW5nIHdh cyBzZWxlY3RlZAoJCQkJCWlmICggaW5kZXggPCAwICkKCQkJCQkJcmV0dXJuIG51 bGw7CgoJCQkJCS8vIExvb3AgdGhyb3VnaCBhbGwgdGhlIHNlbGVjdGVkIG9wdGlv bnMKCQkJCQlmb3IgKCB2YXIgaSA9IG9uZSA/IGluZGV4IDogMCwgbWF4ID0gb25l ID8gaW5kZXggKyAxIDogb3B0aW9ucy5sZW5ndGg7IGkgPCBtYXg7IGkrKyApIHsK CQkJCQkJdmFyIG9wdGlvbiA9IG9wdGlvbnNbIGkgXTsKCgkJCQkJCWlmICggb3B0 aW9uLnNlbGVjdGVkICkgewoJCQkJCQkJLy8gR2V0IHRoZSBzcGVjaWZjIHZhbHVl IGZvciB0aGUgb3B0aW9uCgkJCQkJCQl2YWx1ZSA9IGpRdWVyeS5icm93c2VyLm1z aWUgJiYgIW9wdGlvbi5hdHRyaWJ1dGVzLnZhbHVlLnNwZWNpZmllZCA/IG9wdGlv bi50ZXh0IDogb3B0aW9uLnZhbHVlOwoKCQkJCQkJCS8vIFdlIGRvbid0IG5lZWQg YW4gYXJyYXkgZm9yIG9uZSBzZWxlY3RzCgkJCQkJCQlpZiAoIG9uZSApCgkJCQkJ CQkJcmV0dXJuIHZhbHVlOwoKCQkJCQkJCS8vIE11bHRpLVNlbGVjdHMgcmV0dXJu IGFuIGFycmF5CgkJCQkJCQl2YWx1ZXMucHVzaCggdmFsdWUgKTsKCQkJCQkJfQoJ CQkJCX0KCgkJCQkJcmV0dXJuIHZhbHVlczsKCgkJCQkvLyBFdmVyeXRoaW5nIGVs c2UsIHdlIGp1c3QgZ3JhYiB0aGUgdmFsdWUKCQkJCX0gZWxzZQoJCQkJCXJldHVy biAodGhpc1swXS52YWx1ZSB8fCAiIikucmVwbGFjZSgvXHIvZywgIiIpOwoKCQkJ fQoKCQkJcmV0dXJuIHVuZGVmaW5lZDsKCQl9CgoJCWlmKCB2YWx1ZS5jb25zdHJ1 Y3RvciA9PSBOdW1iZXIgKQoJCQl2YWx1ZSArPSAnJzsKCgkJcmV0dXJuIHRoaXMu ZWFjaChmdW5jdGlvbigpewoJCQlpZiAoIHRoaXMubm9kZVR5cGUgIT0gMSApCgkJ CQlyZXR1cm47CgoJCQlpZiAoIHZhbHVlLmNvbnN0cnVjdG9yID09IEFycmF5ICYm IC9yYWRpb3xjaGVja2JveC8udGVzdCggdGhpcy50eXBlICkgKQoJCQkJdGhpcy5j aGVja2VkID0gKGpRdWVyeS5pbkFycmF5KHRoaXMudmFsdWUsIHZhbHVlKSA+PSAw IHx8CgkJCQkJalF1ZXJ5LmluQXJyYXkodGhpcy5uYW1lLCB2YWx1ZSkgPj0gMCk7 CgoJCQllbHNlIGlmICggalF1ZXJ5Lm5vZGVOYW1lKCB0aGlzLCAic2VsZWN0IiAp ICkgewoJCQkJdmFyIHZhbHVlcyA9IGpRdWVyeS5tYWtlQXJyYXkodmFsdWUpOwoK CQkJCWpRdWVyeSggIm9wdGlvbiIsIHRoaXMgKS5lYWNoKGZ1bmN0aW9uKCl7CgkJ CQkJdGhpcy5zZWxlY3RlZCA9IChqUXVlcnkuaW5BcnJheSggdGhpcy52YWx1ZSwg dmFsdWVzICkgPj0gMCB8fAoJCQkJCQlqUXVlcnkuaW5BcnJheSggdGhpcy50ZXh0 LCB2YWx1ZXMgKSA+PSAwKTsKCQkJCX0pOwoKCQkJCWlmICggIXZhbHVlcy5sZW5n dGggKQoJCQkJCXRoaXMuc2VsZWN0ZWRJbmRleCA9IC0xOwoKCQkJfSBlbHNlCgkJ CQl0aGlzLnZhbHVlID0gdmFsdWU7CgkJfSk7Cgl9LAoKCWh0bWw6IGZ1bmN0aW9u KCB2YWx1ZSApIHsKCQlyZXR1cm4gdmFsdWUgPT0gdW5kZWZpbmVkID8KCQkJKHRo aXNbMF0gPwoJCQkJdGhpc1swXS5pbm5lckhUTUwgOgoJCQkJbnVsbCkgOgoJCQl0 aGlzLmVtcHR5KCkuYXBwZW5kKCB2YWx1ZSApOwoJfSwKCglyZXBsYWNlV2l0aDog ZnVuY3Rpb24oIHZhbHVlICkgewoJCXJldHVybiB0aGlzLmFmdGVyKCB2YWx1ZSAp LnJlbW92ZSgpOwoJfSwKCgllcTogZnVuY3Rpb24oIGkgKSB7CgkJcmV0dXJuIHRo aXMuc2xpY2UoIGksIGkgKyAxICk7Cgl9LAoKCXNsaWNlOiBmdW5jdGlvbigpIHsK CQlyZXR1cm4gdGhpcy5wdXNoU3RhY2soIEFycmF5LnByb3RvdHlwZS5zbGljZS5h cHBseSggdGhpcywgYXJndW1lbnRzICkgKTsKCX0sCgoJbWFwOiBmdW5jdGlvbigg Y2FsbGJhY2sgKSB7CgkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnkubWFw KHRoaXMsIGZ1bmN0aW9uKGVsZW0sIGkpewoJCQlyZXR1cm4gY2FsbGJhY2suY2Fs bCggZWxlbSwgaSwgZWxlbSApOwoJCX0pKTsKCX0sCgoJYW5kU2VsZjogZnVuY3Rp b24oKSB7CgkJcmV0dXJuIHRoaXMuYWRkKCB0aGlzLnByZXZPYmplY3QgKTsKCX0s CgoJZGF0YTogZnVuY3Rpb24oIGtleSwgdmFsdWUgKXsKCQl2YXIgcGFydHMgPSBr ZXkuc3BsaXQoIi4iKTsKCQlwYXJ0c1sxXSA9IHBhcnRzWzFdID8gIi4iICsgcGFy dHNbMV0gOiAiIjsKCgkJaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgewoJCQl2 YXIgZGF0YSA9IHRoaXMudHJpZ2dlckhhbmRsZXIoImdldERhdGEiICsgcGFydHNb MV0gKyAiISIsIFtwYXJ0c1swXV0pOwoKCQkJaWYgKCBkYXRhID09PSB1bmRlZmlu ZWQgJiYgdGhpcy5sZW5ndGggKQoJCQkJZGF0YSA9IGpRdWVyeS5kYXRhKCB0aGlz WzBdLCBrZXkgKTsKCgkJCXJldHVybiBkYXRhID09PSB1bmRlZmluZWQgJiYgcGFy dHNbMV0gPwoJCQkJdGhpcy5kYXRhKCBwYXJ0c1swXSApIDoKCQkJCWRhdGE7CgkJ fSBlbHNlCgkJCXJldHVybiB0aGlzLnRyaWdnZXIoInNldERhdGEiICsgcGFydHNb MV0gKyAiISIsIFtwYXJ0c1swXSwgdmFsdWVdKS5lYWNoKGZ1bmN0aW9uKCl7CgkJ CQlqUXVlcnkuZGF0YSggdGhpcywga2V5LCB2YWx1ZSApOwoJCQl9KTsKCX0sCgoJ cmVtb3ZlRGF0YTogZnVuY3Rpb24oIGtleSApewoJCXJldHVybiB0aGlzLmVhY2go ZnVuY3Rpb24oKXsKCQkJalF1ZXJ5LnJlbW92ZURhdGEoIHRoaXMsIGtleSApOwoJ CX0pOwoJfSwKCglkb21NYW5pcDogZnVuY3Rpb24oIGFyZ3MsIHRhYmxlLCByZXZl cnNlLCBjYWxsYmFjayApIHsKCQl2YXIgY2xvbmUgPSB0aGlzLmxlbmd0aCA+IDEs IGVsZW1zOwoKCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7CgkJCWlmICgg IWVsZW1zICkgewoJCQkJZWxlbXMgPSBqUXVlcnkuY2xlYW4oIGFyZ3MsIHRoaXMu b3duZXJEb2N1bWVudCApOwoKCQkJCWlmICggcmV2ZXJzZSApCgkJCQkJZWxlbXMu cmV2ZXJzZSgpOwoJCQl9CgoJCQl2YXIgb2JqID0gdGhpczsKCgkJCWlmICggdGFi bGUgJiYgalF1ZXJ5Lm5vZGVOYW1lKCB0aGlzLCAidGFibGUiICkgJiYgalF1ZXJ5 Lm5vZGVOYW1lKCBlbGVtc1swXSwgInRyIiApICkKCQkJCW9iaiA9IHRoaXMuZ2V0 RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF0gfHwgdGhpcy5hcHBlbmRDaGls ZCggdGhpcy5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5IikgKTsK CgkJCXZhciBzY3JpcHRzID0galF1ZXJ5KCBbXSApOwoKCQkJalF1ZXJ5LmVhY2go ZWxlbXMsIGZ1bmN0aW9uKCl7CgkJCQl2YXIgZWxlbSA9IGNsb25lID8KCQkJCQlq UXVlcnkoIHRoaXMgKS5jbG9uZSggdHJ1ZSApWzBdIDoKCQkJCQl0aGlzOwoKCQkJ CS8vIGV4ZWN1dGUgYWxsIHNjcmlwdHMgYWZ0ZXIgdGhlIGVsZW1lbnRzIGhhdmUg YmVlbiBpbmplY3RlZAoJCQkJaWYgKCBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJz Y3JpcHQiICkgKQoJCQkJCXNjcmlwdHMgPSBzY3JpcHRzLmFkZCggZWxlbSApOwoJ CQkJZWxzZSB7CgkJCQkJLy8gUmVtb3ZlIGFueSBpbm5lciBzY3JpcHRzIGZvciBs YXRlciBldmFsdWF0aW9uCgkJCQkJaWYgKCBlbGVtLm5vZGVUeXBlID09IDEgKQoJ CQkJCQlzY3JpcHRzID0gc2NyaXB0cy5hZGQoIGpRdWVyeSggInNjcmlwdCIsIGVs ZW0gKS5yZW1vdmUoKSApOwoKCQkJCQkvLyBJbmplY3QgdGhlIGVsZW1lbnRzIGlu dG8gdGhlIGRvY3VtZW50CgkJCQkJY2FsbGJhY2suY2FsbCggb2JqLCBlbGVtICk7 CgkJCQl9CgkJCX0pOwoKCQkJc2NyaXB0cy5lYWNoKCBldmFsU2NyaXB0ICk7CgkJ fSk7Cgl9Cn07CgovLyBHaXZlIHRoZSBpbml0IGZ1bmN0aW9uIHRoZSBqUXVlcnkg cHJvdG90eXBlIGZvciBsYXRlciBpbnN0YW50aWF0aW9uCmpRdWVyeS5mbi5pbml0 LnByb3RvdHlwZSA9IGpRdWVyeS5mbjsKCmZ1bmN0aW9uIGV2YWxTY3JpcHQoIGks IGVsZW0gKSB7CglpZiAoIGVsZW0uc3JjICkKCQlqUXVlcnkuYWpheCh7CgkJCXVy bDogZWxlbS5zcmMsCgkJCWFzeW5jOiBmYWxzZSwKCQkJZGF0YVR5cGU6ICJzY3Jp cHQiCgkJfSk7CgoJZWxzZQoJCWpRdWVyeS5nbG9iYWxFdmFsKCBlbGVtLnRleHQg fHwgZWxlbS50ZXh0Q29udGVudCB8fCBlbGVtLmlubmVySFRNTCB8fCAiIiApOwoK CWlmICggZWxlbS5wYXJlbnROb2RlICkKCQllbGVtLnBhcmVudE5vZGUucmVtb3Zl Q2hpbGQoIGVsZW0gKTsKfQoKZnVuY3Rpb24gbm93KCl7CglyZXR1cm4gK25ldyBE YXRlOwp9CgpqUXVlcnkuZXh0ZW5kID0galF1ZXJ5LmZuLmV4dGVuZCA9IGZ1bmN0 aW9uKCkgewoJLy8gY29weSByZWZlcmVuY2UgdG8gdGFyZ2V0IG9iamVjdAoJdmFy IHRhcmdldCA9IGFyZ3VtZW50c1swXSB8fCB7fSwgaSA9IDEsIGxlbmd0aCA9IGFy Z3VtZW50cy5sZW5ndGgsIGRlZXAgPSBmYWxzZSwgb3B0aW9uczsKCgkvLyBIYW5k bGUgYSBkZWVwIGNvcHkgc2l0dWF0aW9uCglpZiAoIHRhcmdldC5jb25zdHJ1Y3Rv ciA9PSBCb29sZWFuICkgewoJCWRlZXAgPSB0YXJnZXQ7CgkJdGFyZ2V0ID0gYXJn dW1lbnRzWzFdIHx8IHt9OwoJCS8vIHNraXAgdGhlIGJvb2xlYW4gYW5kIHRoZSB0 YXJnZXQKCQlpID0gMjsKCX0KCgkvLyBIYW5kbGUgY2FzZSB3aGVuIHRhcmdldCBp cyBhIHN0cmluZyBvciBzb21ldGhpbmcgKHBvc3NpYmxlIGluIGRlZXAgY29weSkK CWlmICggdHlwZW9mIHRhcmdldCAhPSAib2JqZWN0IiAmJiB0eXBlb2YgdGFyZ2V0 ICE9ICJmdW5jdGlvbiIgKQoJCXRhcmdldCA9IHt9OwoKCS8vIGV4dGVuZCBqUXVl cnkgaXRzZWxmIGlmIG9ubHkgb25lIGFyZ3VtZW50IGlzIHBhc3NlZAoJaWYgKCBs ZW5ndGggPT0gaSApIHsKCQl0YXJnZXQgPSB0aGlzOwoJCS0taTsKCX0KCglmb3Ig KCA7IGkgPCBsZW5ndGg7IGkrKyApCgkJLy8gT25seSBkZWFsIHdpdGggbm9uLW51 bGwvdW5kZWZpbmVkIHZhbHVlcwoJCWlmICggKG9wdGlvbnMgPSBhcmd1bWVudHNb IGkgXSkgIT0gbnVsbCApCgkJCS8vIEV4dGVuZCB0aGUgYmFzZSBvYmplY3QKCQkJ Zm9yICggdmFyIG5hbWUgaW4gb3B0aW9ucyApIHsKCQkJCXZhciBzcmMgPSB0YXJn ZXRbIG5hbWUgXSwgY29weSA9IG9wdGlvbnNbIG5hbWUgXTsKCgkJCQkvLyBQcmV2 ZW50IG5ldmVyLWVuZGluZyBsb29wCgkJCQlpZiAoIHRhcmdldCA9PT0gY29weSAp CgkJCQkJY29udGludWU7CgoJCQkJLy8gUmVjdXJzZSBpZiB3ZSdyZSBtZXJnaW5n IG9iamVjdCB2YWx1ZXMKCQkJCWlmICggZGVlcCAmJiBjb3B5ICYmIHR5cGVvZiBj b3B5ID09ICJvYmplY3QiICYmICFjb3B5Lm5vZGVUeXBlICkKCQkJCQl0YXJnZXRb IG5hbWUgXSA9IGpRdWVyeS5leHRlbmQoIGRlZXAsIAoJCQkJCQkvLyBOZXZlciBt b3ZlIG9yaWdpbmFsIG9iamVjdHMsIGNsb25lIHRoZW0KCQkJCQkJc3JjIHx8ICgg Y29weS5sZW5ndGggIT0gbnVsbCA/IFsgXSA6IHsgfSApCgkJCQkJLCBjb3B5ICk7 CgoJCQkJLy8gRG9uJ3QgYnJpbmcgaW4gdW5kZWZpbmVkIHZhbHVlcwoJCQkJZWxz ZSBpZiAoIGNvcHkgIT09IHVuZGVmaW5lZCApCgkJCQkJdGFyZ2V0WyBuYW1lIF0g PSBjb3B5OwoKCQkJfQoKCS8vIFJldHVybiB0aGUgbW9kaWZpZWQgb2JqZWN0Cgly ZXR1cm4gdGFyZ2V0Owp9OwoKdmFyIGV4cGFuZG8gPSAialF1ZXJ5IiArIG5vdygp LCB1dWlkID0gMCwgd2luZG93RGF0YSA9IHt9LAoJLy8gZXhjbHVkZSB0aGUgZm9s bG93aW5nIGNzcyBwcm9wZXJ0aWVzIHRvIGFkZCBweAoJZXhjbHVkZSA9IC96LT9p bmRleHxmb250LT93ZWlnaHR8b3BhY2l0eXx6b29tfGxpbmUtP2hlaWdodC9pLAoJ Ly8gY2FjaGUgZGVmYXVsdFZpZXcKCWRlZmF1bHRWaWV3ID0gZG9jdW1lbnQuZGVm YXVsdFZpZXcgfHwge307CgpqUXVlcnkuZXh0ZW5kKHsKCW5vQ29uZmxpY3Q6IGZ1 bmN0aW9uKCBkZWVwICkgewoJCXdpbmRvdy4kID0gXyQ7CgoJCWlmICggZGVlcCAp CgkJCXdpbmRvdy5qUXVlcnkgPSBfalF1ZXJ5OwoKCQlyZXR1cm4galF1ZXJ5OwoJ fSwKCgkvLyBTZWUgdGVzdC91bml0L2NvcmUuanMgZm9yIGRldGFpbHMgY29uY2Vy bmluZyB0aGlzIGZ1bmN0aW9uLgoJaXNGdW5jdGlvbjogZnVuY3Rpb24oIGZuICkg ewoJCXJldHVybiAhIWZuICYmIHR5cGVvZiBmbiAhPSAic3RyaW5nIiAmJiAhZm4u bm9kZU5hbWUgJiYKCQkJZm4uY29uc3RydWN0b3IgIT0gQXJyYXkgJiYgL15bXHNb XT9mdW5jdGlvbi8udGVzdCggZm4gKyAiIiApOwoJfSwKCgkvLyBjaGVjayBpZiBh biBlbGVtZW50IGlzIGluIGEgKG9yIGlzIGFuKSBYTUwgZG9jdW1lbnQKCWlzWE1M RG9jOiBmdW5jdGlvbiggZWxlbSApIHsKCQlyZXR1cm4gZWxlbS5kb2N1bWVudEVs ZW1lbnQgJiYgIWVsZW0uYm9keSB8fAoJCQllbGVtLnRhZ05hbWUgJiYgZWxlbS5v d25lckRvY3VtZW50ICYmICFlbGVtLm93bmVyRG9jdW1lbnQuYm9keTsKCX0sCgoJ Ly8gRXZhbHVsYXRlcyBhIHNjcmlwdCBpbiBhIGdsb2JhbCBjb250ZXh0CglnbG9i YWxFdmFsOiBmdW5jdGlvbiggZGF0YSApIHsKCQlkYXRhID0galF1ZXJ5LnRyaW0o IGRhdGEgKTsKCgkJaWYgKCBkYXRhICkgewoJCQkvLyBJbnNwaXJlZCBieSBjb2Rl IGJ5IEFuZHJlYSBHaWFtbWFyY2hpCgkJCS8vIGh0dHA6Ly93ZWJyZWZsZWN0aW9u LmJsb2dzcG90LmNvbS8yMDA3LzA4L2dsb2JhbC1zY29wZS1ldmFsdWF0aW9uLWFu ZC1kb20uaHRtbAoJCQl2YXIgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU YWdOYW1lKCJoZWFkIilbMF0gfHwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LAoJ CQkJc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CgoJ CQlzY3JpcHQudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiOwoJCQlpZiAoIGpRdWVy eS5icm93c2VyLm1zaWUgKQoJCQkJc2NyaXB0LnRleHQgPSBkYXRhOwoJCQllbHNl CgkJCQlzY3JpcHQuYXBwZW5kQ2hpbGQoIGRvY3VtZW50LmNyZWF0ZVRleHROb2Rl KCBkYXRhICkgKTsKCgkJCS8vIFVzZSBpbnNlcnRCZWZvcmUgaW5zdGVhZCBvZiBh cHBlbmRDaGlsZCAgdG8gY2lyY3VtdmVudCBhbiBJRTYgYnVnLgoJCQkvLyBUaGlz IGFyaXNlcyB3aGVuIGEgYmFzZSBub2RlIGlzIHVzZWQgKCMyNzA5KS4KCQkJaGVh ZC5pbnNlcnRCZWZvcmUoIHNjcmlwdCwgaGVhZC5maXJzdENoaWxkICk7CgkJCWhl YWQucmVtb3ZlQ2hpbGQoIHNjcmlwdCApOwoJCX0KCX0sCgoJbm9kZU5hbWU6IGZ1 bmN0aW9uKCBlbGVtLCBuYW1lICkgewoJCXJldHVybiBlbGVtLm5vZGVOYW1lICYm IGVsZW0ubm9kZU5hbWUudG9VcHBlckNhc2UoKSA9PSBuYW1lLnRvVXBwZXJDYXNl KCk7Cgl9LAoKCWNhY2hlOiB7fSwKCglkYXRhOiBmdW5jdGlvbiggZWxlbSwgbmFt ZSwgZGF0YSApIHsKCQllbGVtID0gZWxlbSA9PSB3aW5kb3cgPwoJCQl3aW5kb3dE YXRhIDoKCQkJZWxlbTsKCgkJdmFyIGlkID0gZWxlbVsgZXhwYW5kbyBdOwoKCQkv LyBDb21wdXRlIGEgdW5pcXVlIElEIGZvciB0aGUgZWxlbWVudAoJCWlmICggIWlk ICkKCQkJaWQgPSBlbGVtWyBleHBhbmRvIF0gPSArK3V1aWQ7CgoJCS8vIE9ubHkg Z2VuZXJhdGUgdGhlIGRhdGEgY2FjaGUgaWYgd2UncmUKCQkvLyB0cnlpbmcgdG8g YWNjZXNzIG9yIG1hbmlwdWxhdGUgaXQKCQlpZiAoIG5hbWUgJiYgIWpRdWVyeS5j YWNoZVsgaWQgXSApCgkJCWpRdWVyeS5jYWNoZVsgaWQgXSA9IHt9OwoKCQkvLyBQ cmV2ZW50IG92ZXJyaWRpbmcgdGhlIG5hbWVkIGNhY2hlIHdpdGggdW5kZWZpbmVk IHZhbHVlcwoJCWlmICggZGF0YSAhPT0gdW5kZWZpbmVkICkKCQkJalF1ZXJ5LmNh Y2hlWyBpZCBdWyBuYW1lIF0gPSBkYXRhOwoKCQkvLyBSZXR1cm4gdGhlIG5hbWVk IGNhY2hlIGRhdGEsIG9yIHRoZSBJRCBmb3IgdGhlIGVsZW1lbnQKCQlyZXR1cm4g bmFtZSA/CgkJCWpRdWVyeS5jYWNoZVsgaWQgXVsgbmFtZSBdIDoKCQkJaWQ7Cgl9 LAoKCXJlbW92ZURhdGE6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lICkgewoJCWVsZW0g PSBlbGVtID09IHdpbmRvdyA/CgkJCXdpbmRvd0RhdGEgOgoJCQllbGVtOwoKCQl2 YXIgaWQgPSBlbGVtWyBleHBhbmRvIF07CgoJCS8vIElmIHdlIHdhbnQgdG8gcmVt b3ZlIGEgc3BlY2lmaWMgc2VjdGlvbiBvZiB0aGUgZWxlbWVudCdzIGRhdGEKCQlp ZiAoIG5hbWUgKSB7CgkJCWlmICggalF1ZXJ5LmNhY2hlWyBpZCBdICkgewoJCQkJ Ly8gUmVtb3ZlIHRoZSBzZWN0aW9uIG9mIGNhY2hlIGRhdGEKCQkJCWRlbGV0ZSBq UXVlcnkuY2FjaGVbIGlkIF1bIG5hbWUgXTsKCgkJCQkvLyBJZiB3ZSd2ZSByZW1v dmVkIGFsbCB0aGUgZGF0YSwgcmVtb3ZlIHRoZSBlbGVtZW50J3MgY2FjaGUKCQkJ CW5hbWUgPSAiIjsKCgkJCQlmb3IgKCBuYW1lIGluIGpRdWVyeS5jYWNoZVsgaWQg XSApCgkJCQkJYnJlYWs7CgoJCQkJaWYgKCAhbmFtZSApCgkJCQkJalF1ZXJ5LnJl bW92ZURhdGEoIGVsZW0gKTsKCQkJfQoKCQkvLyBPdGhlcndpc2UsIHdlIHdhbnQg dG8gcmVtb3ZlIGFsbCBvZiB0aGUgZWxlbWVudCdzIGRhdGEKCQl9IGVsc2UgewoJ CQkvLyBDbGVhbiB1cCB0aGUgZWxlbWVudCBleHBhbmRvCgkJCXRyeSB7CgkJCQlk ZWxldGUgZWxlbVsgZXhwYW5kbyBdOwoJCQl9IGNhdGNoKGUpewoJCQkJLy8gSUUg aGFzIHRyb3VibGUgZGlyZWN0bHkgcmVtb3ZpbmcgdGhlIGV4cGFuZG8KCQkJCS8v IGJ1dCBpdCdzIG9rIHdpdGggdXNpbmcgcmVtb3ZlQXR0cmlidXRlCgkJCQlpZiAo IGVsZW0ucmVtb3ZlQXR0cmlidXRlICkKCQkJCQllbGVtLnJlbW92ZUF0dHJpYnV0 ZSggZXhwYW5kbyApOwoJCQl9CgoJCQkvLyBDb21wbGV0ZWx5IHJlbW92ZSB0aGUg ZGF0YSBjYWNoZQoJCQlkZWxldGUgalF1ZXJ5LmNhY2hlWyBpZCBdOwoJCX0KCX0s CgoJLy8gYXJncyBpcyBmb3IgaW50ZXJuYWwgdXNhZ2Ugb25seQoJZWFjaDogZnVu Y3Rpb24oIG9iamVjdCwgY2FsbGJhY2ssIGFyZ3MgKSB7CgkJdmFyIG5hbWUsIGkg PSAwLCBsZW5ndGggPSBvYmplY3QubGVuZ3RoOwoKCQlpZiAoIGFyZ3MgKSB7CgkJ CWlmICggbGVuZ3RoID09IHVuZGVmaW5lZCApIHsKCQkJCWZvciAoIG5hbWUgaW4g b2JqZWN0ICkKCQkJCQlpZiAoIGNhbGxiYWNrLmFwcGx5KCBvYmplY3RbIG5hbWUg XSwgYXJncyApID09PSBmYWxzZSApCgkJCQkJCWJyZWFrOwoJCQl9IGVsc2UKCQkJ CWZvciAoIDsgaSA8IGxlbmd0aDsgKQoJCQkJCWlmICggY2FsbGJhY2suYXBwbHko IG9iamVjdFsgaSsrIF0sIGFyZ3MgKSA9PT0gZmFsc2UgKQoJCQkJCQlicmVhazsK CgkJLy8gQSBzcGVjaWFsLCBmYXN0LCBjYXNlIGZvciB0aGUgbW9zdCBjb21tb24g dXNlIG9mIGVhY2gKCQl9IGVsc2UgewoJCQlpZiAoIGxlbmd0aCA9PSB1bmRlZmlu ZWQgKSB7CgkJCQlmb3IgKCBuYW1lIGluIG9iamVjdCApCgkJCQkJaWYgKCBjYWxs YmFjay5jYWxsKCBvYmplY3RbIG5hbWUgXSwgbmFtZSwgb2JqZWN0WyBuYW1lIF0g KSA9PT0gZmFsc2UgKQoJCQkJCQlicmVhazsKCQkJfSBlbHNlCgkJCQlmb3IgKCB2 YXIgdmFsdWUgPSBvYmplY3RbMF07CgkJCQkJaSA8IGxlbmd0aCAmJiBjYWxsYmFj ay5jYWxsKCB2YWx1ZSwgaSwgdmFsdWUgKSAhPT0gZmFsc2U7IHZhbHVlID0gb2Jq ZWN0WysraV0gKXt9CgkJfQoKCQlyZXR1cm4gb2JqZWN0OwoJfSwKCglwcm9wOiBm dW5jdGlvbiggZWxlbSwgdmFsdWUsIHR5cGUsIGksIG5hbWUgKSB7CgkJLy8gSGFu ZGxlIGV4ZWN1dGFibGUgZnVuY3Rpb25zCgkJaWYgKCBqUXVlcnkuaXNGdW5jdGlv biggdmFsdWUgKSApCgkJCXZhbHVlID0gdmFsdWUuY2FsbCggZWxlbSwgaSApOwoK CQkvLyBIYW5kbGUgcGFzc2luZyBpbiBhIG51bWJlciB0byBhIENTUyBwcm9wZXJ0 eQoJCXJldHVybiB2YWx1ZSAmJiB2YWx1ZS5jb25zdHJ1Y3RvciA9PSBOdW1iZXIg JiYgdHlwZSA9PSAiY3VyQ1NTIiAmJiAhZXhjbHVkZS50ZXN0KCBuYW1lICkgPwoJ CQl2YWx1ZSArICJweCIgOgoJCQl2YWx1ZTsKCX0sCgoJY2xhc3NOYW1lOiB7CgkJ Ly8gaW50ZXJuYWwgb25seSwgdXNlIGFkZENsYXNzKCJjbGFzcyIpCgkJYWRkOiBm dW5jdGlvbiggZWxlbSwgY2xhc3NOYW1lcyApIHsKCQkJalF1ZXJ5LmVhY2goKGNs YXNzTmFtZXMgfHwgIiIpLnNwbGl0KC9ccysvKSwgZnVuY3Rpb24oaSwgY2xhc3NO YW1lKXsKCQkJCWlmICggZWxlbS5ub2RlVHlwZSA9PSAxICYmICFqUXVlcnkuY2xh c3NOYW1lLmhhcyggZWxlbS5jbGFzc05hbWUsIGNsYXNzTmFtZSApICkKCQkJCQll bGVtLmNsYXNzTmFtZSArPSAoZWxlbS5jbGFzc05hbWUgPyAiICIgOiAiIikgKyBj bGFzc05hbWU7CgkJCX0pOwoJCX0sCgoJCS8vIGludGVybmFsIG9ubHksIHVzZSBy ZW1vdmVDbGFzcygiY2xhc3MiKQoJCXJlbW92ZTogZnVuY3Rpb24oIGVsZW0sIGNs YXNzTmFtZXMgKSB7CgkJCWlmIChlbGVtLm5vZGVUeXBlID09IDEpCgkJCQllbGVt LmNsYXNzTmFtZSA9IGNsYXNzTmFtZXMgIT0gdW5kZWZpbmVkID8KCQkJCQlqUXVl cnkuZ3JlcChlbGVtLmNsYXNzTmFtZS5zcGxpdCgvXHMrLyksIGZ1bmN0aW9uKGNs YXNzTmFtZSl7CgkJCQkJCXJldHVybiAhalF1ZXJ5LmNsYXNzTmFtZS5oYXMoIGNs YXNzTmFtZXMsIGNsYXNzTmFtZSApOwoJCQkJCX0pLmpvaW4oIiAiKSA6CgkJCQkJ IiI7CgkJfSwKCgkJLy8gaW50ZXJuYWwgb25seSwgdXNlIGhhc0NsYXNzKCJjbGFz cyIpCgkJaGFzOiBmdW5jdGlvbiggZWxlbSwgY2xhc3NOYW1lICkgewoJCQlyZXR1 cm4galF1ZXJ5LmluQXJyYXkoIGNsYXNzTmFtZSwgKGVsZW0uY2xhc3NOYW1lIHx8 IGVsZW0pLnRvU3RyaW5nKCkuc3BsaXQoL1xzKy8pICkgPiAtMTsKCQl9Cgl9LAoK CS8vIEEgbWV0aG9kIGZvciBxdWlja2x5IHN3YXBwaW5nIGluL291dCBDU1MgcHJv cGVydGllcyB0byBnZXQgY29ycmVjdCBjYWxjdWxhdGlvbnMKCXN3YXA6IGZ1bmN0 aW9uKCBlbGVtLCBvcHRpb25zLCBjYWxsYmFjayApIHsKCQl2YXIgb2xkID0ge307 CgkJLy8gUmVtZW1iZXIgdGhlIG9sZCB2YWx1ZXMsIGFuZCBpbnNlcnQgdGhlIG5l dyBvbmVzCgkJZm9yICggdmFyIG5hbWUgaW4gb3B0aW9ucyApIHsKCQkJb2xkWyBu YW1lIF0gPSBlbGVtLnN0eWxlWyBuYW1lIF07CgkJCWVsZW0uc3R5bGVbIG5hbWUg XSA9IG9wdGlvbnNbIG5hbWUgXTsKCQl9CgoJCWNhbGxiYWNrLmNhbGwoIGVsZW0g KTsKCgkJLy8gUmV2ZXJ0IHRoZSBvbGQgdmFsdWVzCgkJZm9yICggdmFyIG5hbWUg aW4gb3B0aW9ucyApCgkJCWVsZW0uc3R5bGVbIG5hbWUgXSA9IG9sZFsgbmFtZSBd OwoJfSwKCgljc3M6IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBmb3JjZSApIHsKCQlp ZiAoIG5hbWUgPT0gIndpZHRoIiB8fCBuYW1lID09ICJoZWlnaHQiICkgewoJCQl2 YXIgdmFsLCBwcm9wcyA9IHsgcG9zaXRpb246ICJhYnNvbHV0ZSIsIHZpc2liaWxp dHk6ICJoaWRkZW4iLCBkaXNwbGF5OiJibG9jayIgfSwgd2hpY2ggPSBuYW1lID09 ICJ3aWR0aCIgPyBbICJMZWZ0IiwgIlJpZ2h0IiBdIDogWyAiVG9wIiwgIkJvdHRv bSIgXTsKCgkJCWZ1bmN0aW9uIGdldFdIKCkgewoJCQkJdmFsID0gbmFtZSA9PSAi d2lkdGgiID8gZWxlbS5vZmZzZXRXaWR0aCA6IGVsZW0ub2Zmc2V0SGVpZ2h0OwoJ CQkJdmFyIHBhZGRpbmcgPSAwLCBib3JkZXIgPSAwOwoJCQkJalF1ZXJ5LmVhY2go IHdoaWNoLCBmdW5jdGlvbigpIHsKCQkJCQlwYWRkaW5nICs9IHBhcnNlRmxvYXQo alF1ZXJ5LmN1ckNTUyggZWxlbSwgInBhZGRpbmciICsgdGhpcywgdHJ1ZSkpIHx8 IDA7CgkJCQkJYm9yZGVyICs9IHBhcnNlRmxvYXQoalF1ZXJ5LmN1ckNTUyggZWxl bSwgImJvcmRlciIgKyB0aGlzICsgIldpZHRoIiwgdHJ1ZSkpIHx8IDA7CgkJCQl9 KTsKCQkJCXZhbCAtPSBNYXRoLnJvdW5kKHBhZGRpbmcgKyBib3JkZXIpOwoJCQl9 CgoJCQlpZiAoIGpRdWVyeShlbGVtKS5pcygiOnZpc2libGUiKSApCgkJCQlnZXRX SCgpOwoJCQllbHNlCgkJCQlqUXVlcnkuc3dhcCggZWxlbSwgcHJvcHMsIGdldFdI ICk7CgoJCQlyZXR1cm4gTWF0aC5tYXgoMCwgdmFsKTsKCQl9CgoJCXJldHVybiBq UXVlcnkuY3VyQ1NTKCBlbGVtLCBuYW1lLCBmb3JjZSApOwoJfSwKCgljdXJDU1M6 IGZ1bmN0aW9uKCBlbGVtLCBuYW1lLCBmb3JjZSApIHsKCQl2YXIgcmV0LCBzdHls ZSA9IGVsZW0uc3R5bGU7CgoJCS8vIEEgaGVscGVyIG1ldGhvZCBmb3IgZGV0ZXJt aW5pbmcgaWYgYW4gZWxlbWVudCdzIHZhbHVlcyBhcmUgYnJva2VuCgkJZnVuY3Rp b24gY29sb3IoIGVsZW0gKSB7CgkJCWlmICggIWpRdWVyeS5icm93c2VyLnNhZmFy aSApCgkJCQlyZXR1cm4gZmFsc2U7CgoJCQkvLyBkZWZhdWx0VmlldyBpcyBjYWNo ZWQKCQkJdmFyIHJldCA9IGRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoIGVs ZW0sIG51bGwgKTsKCQkJcmV0dXJuICFyZXQgfHwgcmV0LmdldFByb3BlcnR5VmFs dWUoImNvbG9yIikgPT0gIiI7CgkJfQoKCQkvLyBXZSBuZWVkIHRvIGhhbmRsZSBv cGFjaXR5IHNwZWNpYWwgaW4gSUUKCQlpZiAoIG5hbWUgPT0gIm9wYWNpdHkiICYm IGpRdWVyeS5icm93c2VyLm1zaWUgKSB7CgkJCXJldCA9IGpRdWVyeS5hdHRyKCBz dHlsZSwgIm9wYWNpdHkiICk7CgoJCQlyZXR1cm4gcmV0ID09ICIiID8KCQkJCSIx IiA6CgkJCQlyZXQ7CgkJfQoJCS8vIE9wZXJhIHNvbWV0aW1lcyB3aWxsIGdpdmUg dGhlIHdyb25nIGRpc3BsYXkgYW5zd2VyLCB0aGlzIGZpeGVzIGl0LCBzZWUgIzIw MzcKCQlpZiAoIGpRdWVyeS5icm93c2VyLm9wZXJhICYmIG5hbWUgPT0gImRpc3Bs YXkiICkgewoJCQl2YXIgc2F2ZSA9IHN0eWxlLm91dGxpbmU7CgkJCXN0eWxlLm91 dGxpbmUgPSAiMCBzb2xpZCBibGFjayI7CgkJCXN0eWxlLm91dGxpbmUgPSBzYXZl OwoJCX0KCgkJLy8gTWFrZSBzdXJlIHdlJ3JlIHVzaW5nIHRoZSByaWdodCBuYW1l IGZvciBnZXR0aW5nIHRoZSBmbG9hdCB2YWx1ZQoJCWlmICggbmFtZS5tYXRjaCgg L2Zsb2F0L2kgKSApCgkJCW5hbWUgPSBzdHlsZUZsb2F0OwoKCQlpZiAoICFmb3Jj ZSAmJiBzdHlsZSAmJiBzdHlsZVsgbmFtZSBdICkKCQkJcmV0ID0gc3R5bGVbIG5h bWUgXTsKCgkJZWxzZSBpZiAoIGRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUg KSB7CgoJCQkvLyBPbmx5ICJmbG9hdCIgaXMgbmVlZGVkIGhlcmUKCQkJaWYgKCBu YW1lLm1hdGNoKCAvZmxvYXQvaSApICkKCQkJCW5hbWUgPSAiZmxvYXQiOwoKCQkJ bmFtZSA9IG5hbWUucmVwbGFjZSggLyhbQS1aXSkvZywgIi0kMSIgKS50b0xvd2Vy Q2FzZSgpOwoKCQkJdmFyIGNvbXB1dGVkU3R5bGUgPSBkZWZhdWx0Vmlldy5nZXRD b21wdXRlZFN0eWxlKCBlbGVtLCBudWxsICk7CgoJCQlpZiAoIGNvbXB1dGVkU3R5 bGUgJiYgIWNvbG9yKCBlbGVtICkgKQoJCQkJcmV0ID0gY29tcHV0ZWRTdHlsZS5n ZXRQcm9wZXJ0eVZhbHVlKCBuYW1lICk7CgoJCQkvLyBJZiB0aGUgZWxlbWVudCBp c24ndCByZXBvcnRpbmcgaXRzIHZhbHVlcyBwcm9wZXJseSBpbiBTYWZhcmkKCQkJ Ly8gdGhlbiBzb21lIGRpc3BsYXk6IG5vbmUgZWxlbWVudHMgYXJlIGludm9sdmVk CgkJCWVsc2UgewoJCQkJdmFyIHN3YXAgPSBbXSwgc3RhY2sgPSBbXSwgYSA9IGVs ZW0sIGkgPSAwOwoKCQkJCS8vIExvY2F0ZSBhbGwgb2YgdGhlIHBhcmVudCBkaXNw bGF5OiBub25lIGVsZW1lbnRzCgkJCQlmb3IgKCA7IGEgJiYgY29sb3IoYSk7IGEg PSBhLnBhcmVudE5vZGUgKQoJCQkJCXN0YWNrLnVuc2hpZnQoYSk7CgoJCQkJLy8g R28gdGhyb3VnaCBhbmQgbWFrZSB0aGVtIHZpc2libGUsIGJ1dCBpbiByZXZlcnNl CgkJCQkvLyAoSXQgd291bGQgYmUgYmV0dGVyIGlmIHdlIGtuZXcgdGhlIGV4YWN0 IGRpc3BsYXkgdHlwZSB0aGF0IHRoZXkgaGFkKQoJCQkJZm9yICggOyBpIDwgc3Rh Y2subGVuZ3RoOyBpKysgKQoJCQkJCWlmICggY29sb3IoIHN0YWNrWyBpIF0gKSAp IHsKCQkJCQkJc3dhcFsgaSBdID0gc3RhY2tbIGkgXS5zdHlsZS5kaXNwbGF5OwoJ CQkJCQlzdGFja1sgaSBdLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwoJCQkJCX0K CgkJCQkvLyBTaW5jZSB3ZSBmbGlwIHRoZSBkaXNwbGF5IHN0eWxlLCB3ZSBoYXZl IHRvIGhhbmRsZSB0aGF0CgkJCQkvLyBvbmUgc3BlY2lhbCwgb3RoZXJ3aXNlIGdl dCB0aGUgdmFsdWUKCQkJCXJldCA9IG5hbWUgPT0gImRpc3BsYXkiICYmIHN3YXBb IHN0YWNrLmxlbmd0aCAtIDEgXSAhPSBudWxsID8KCQkJCQkibm9uZSIgOgoJCQkJ CSggY29tcHV0ZWRTdHlsZSAmJiBjb21wdXRlZFN0eWxlLmdldFByb3BlcnR5VmFs dWUoIG5hbWUgKSApIHx8ICIiOwoKCQkJCS8vIEZpbmFsbHksIHJldmVydCB0aGUg ZGlzcGxheSBzdHlsZXMgYmFjawoJCQkJZm9yICggaSA9IDA7IGkgPCBzd2FwLmxl bmd0aDsgaSsrICkKCQkJCQlpZiAoIHN3YXBbIGkgXSAhPSBudWxsICkKCQkJCQkJ c3RhY2tbIGkgXS5zdHlsZS5kaXNwbGF5ID0gc3dhcFsgaSBdOwoJCQl9CgoJCQkv LyBXZSBzaG91bGQgYWx3YXlzIGdldCBhIG51bWJlciBiYWNrIGZyb20gb3BhY2l0 eQoJCQlpZiAoIG5hbWUgPT0gIm9wYWNpdHkiICYmIHJldCA9PSAiIiApCgkJCQly ZXQgPSAiMSI7CgoJCX0gZWxzZSBpZiAoIGVsZW0uY3VycmVudFN0eWxlICkgewoJ CQl2YXIgY2FtZWxDYXNlID0gbmFtZS5yZXBsYWNlKC9cLShcdykvZywgZnVuY3Rp b24oYWxsLCBsZXR0ZXIpewoJCQkJcmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgp OwoJCQl9KTsKCgkJCXJldCA9IGVsZW0uY3VycmVudFN0eWxlWyBuYW1lIF0gfHwg ZWxlbS5jdXJyZW50U3R5bGVbIGNhbWVsQ2FzZSBdOwoKCQkJLy8gRnJvbSB0aGUg YXdlc29tZSBoYWNrIGJ5IERlYW4gRWR3YXJkcwoJCQkvLyBodHRwOi8vZXJpay5l YWUubmV0L2FyY2hpdmVzLzIwMDcvMDcvMjcvMTguNTQuMTUvI2NvbW1lbnQtMTAy MjkxCgoJCQkvLyBJZiB3ZSdyZSBub3QgZGVhbGluZyB3aXRoIGEgcmVndWxhciBw aXhlbCBudW1iZXIKCQkJLy8gYnV0IGEgbnVtYmVyIHRoYXQgaGFzIGEgd2VpcmQg ZW5kaW5nLCB3ZSBuZWVkIHRvIGNvbnZlcnQgaXQgdG8gcGl4ZWxzCgkJCWlmICgg IS9eXGQrKHB4KT8kL2kudGVzdCggcmV0ICkgJiYgL15cZC8udGVzdCggcmV0ICkg KSB7CgkJCQkvLyBSZW1lbWJlciB0aGUgb3JpZ2luYWwgdmFsdWVzCgkJCQl2YXIg bGVmdCA9IHN0eWxlLmxlZnQsIHJzTGVmdCA9IGVsZW0ucnVudGltZVN0eWxlLmxl ZnQ7CgoJCQkJLy8gUHV0IGluIHRoZSBuZXcgdmFsdWVzIHRvIGdldCBhIGNvbXB1 dGVkIHZhbHVlIG91dAoJCQkJZWxlbS5ydW50aW1lU3R5bGUubGVmdCA9IGVsZW0u Y3VycmVudFN0eWxlLmxlZnQ7CgkJCQlzdHlsZS5sZWZ0ID0gcmV0IHx8IDA7CgkJ CQlyZXQgPSBzdHlsZS5waXhlbExlZnQgKyAicHgiOwoKCQkJCS8vIFJldmVydCB0 aGUgY2hhbmdlZCB2YWx1ZXMKCQkJCXN0eWxlLmxlZnQgPSBsZWZ0OwoJCQkJZWxl bS5ydW50aW1lU3R5bGUubGVmdCA9IHJzTGVmdDsKCQkJfQoJCX0KCgkJcmV0dXJu IHJldDsKCX0sCgoJY2xlYW46IGZ1bmN0aW9uKCBlbGVtcywgY29udGV4dCApIHsK CQl2YXIgcmV0ID0gW107CgkJY29udGV4dCA9IGNvbnRleHQgfHwgZG9jdW1lbnQ7 CgkJLy8gIWNvbnRleHQuY3JlYXRlRWxlbWVudCBmYWlscyBpbiBJRSB3aXRoIGFu IGVycm9yIGJ1dCByZXR1cm5zIHR5cGVvZiAnb2JqZWN0JwoJCWlmICh0eXBlb2Yg Y29udGV4dC5jcmVhdGVFbGVtZW50ID09ICd1bmRlZmluZWQnKQoJCQljb250ZXh0 ID0gY29udGV4dC5vd25lckRvY3VtZW50IHx8IGNvbnRleHRbMF0gJiYgY29udGV4 dFswXS5vd25lckRvY3VtZW50IHx8IGRvY3VtZW50OwoKCQlqUXVlcnkuZWFjaChl bGVtcywgZnVuY3Rpb24oaSwgZWxlbSl7CgkJCWlmICggIWVsZW0gKQoJCQkJcmV0 dXJuOwoKCQkJaWYgKCBlbGVtLmNvbnN0cnVjdG9yID09IE51bWJlciApCgkJCQll bGVtICs9ICcnOwoKCQkJLy8gQ29udmVydCBodG1sIHN0cmluZyBpbnRvIERPTSBu b2RlcwoJCQlpZiAoIHR5cGVvZiBlbGVtID09ICJzdHJpbmciICkgewoJCQkJLy8g Rml4ICJYSFRNTCItc3R5bGUgdGFncyBpbiBhbGwgYnJvd3NlcnMKCQkJCWVsZW0g PSBlbGVtLnJlcGxhY2UoLyg8KFx3KylbXj5dKj8pXC8+L2csIGZ1bmN0aW9uKGFs bCwgZnJvbnQsIHRhZyl7CgkJCQkJcmV0dXJuIHRhZy5tYXRjaCgvXihhYmJyfGJy fGNvbHxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtfGhyfGFyZWF8ZW1iZWQpJC9p KSA/CgkJCQkJCWFsbCA6CgkJCQkJCWZyb250ICsgIj48LyIgKyB0YWcgKyAiPiI7 CgkJCQl9KTsKCgkJCQkvLyBUcmltIHdoaXRlc3BhY2UsIG90aGVyd2lzZSBpbmRl eE9mIHdvbid0IHdvcmsgYXMgZXhwZWN0ZWQKCQkJCXZhciB0YWdzID0galF1ZXJ5 LnRyaW0oIGVsZW0gKS50b0xvd2VyQ2FzZSgpLCBkaXYgPSBjb250ZXh0LmNyZWF0 ZUVsZW1lbnQoImRpdiIpOwoKCQkJCXZhciB3cmFwID0KCQkJCQkvLyBvcHRpb24g b3Igb3B0Z3JvdXAKCQkJCQkhdGFncy5pbmRleE9mKCI8b3B0IikgJiYKCQkJCQlb IDEsICI8c2VsZWN0IG11bHRpcGxlPSdtdWx0aXBsZSc+IiwgIjwvc2VsZWN0PiIg XSB8fAoKCQkJCQkhdGFncy5pbmRleE9mKCI8bGVnIikgJiYKCQkJCQlbIDEsICI8 ZmllbGRzZXQ+IiwgIjwvZmllbGRzZXQ+IiBdIHx8CgoJCQkJCXRhZ3MubWF0Y2go L148KHRoZWFkfHRib2R5fHRmb290fGNvbGd8Y2FwKS8pICYmCgkJCQkJWyAxLCAi PHRhYmxlPiIsICI8L3RhYmxlPiIgXSB8fAoKCQkJCQkhdGFncy5pbmRleE9mKCI8 dHIiKSAmJgoJCQkJCVsgMiwgIjx0YWJsZT48dGJvZHk+IiwgIjwvdGJvZHk+PC90 YWJsZT4iIF0gfHwKCgkJCQkgCS8vIDx0aGVhZD4gbWF0Y2hlZCBhYm92ZQoJCQkJ CSghdGFncy5pbmRleE9mKCI8dGQiKSB8fCAhdGFncy5pbmRleE9mKCI8dGgiKSkg JiYKCQkJCQlbIDMsICI8dGFibGU+PHRib2R5Pjx0cj4iLCAiPC90cj48L3Rib2R5 PjwvdGFibGU+IiBdIHx8CgoJCQkJCSF0YWdzLmluZGV4T2YoIjxjb2wiKSAmJgoJ CQkJCVsgMiwgIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwgIjwv Y29sZ3JvdXA+PC90YWJsZT4iIF0gfHwKCgkJCQkJLy8gSUUgY2FuJ3Qgc2VyaWFs aXplIDxsaW5rPiBhbmQgPHNjcmlwdD4gdGFncyBub3JtYWxseQoJCQkJCWpRdWVy eS5icm93c2VyLm1zaWUgJiYKCQkJCQlbIDEsICJkaXY8ZGl2PiIsICI8L2Rpdj4i IF0gfHwKCgkJCQkJWyAwLCAiIiwgIiIgXTsKCgkJCQkvLyBHbyB0byBodG1sIGFu ZCBiYWNrLCB0aGVuIHBlZWwgb2ZmIGV4dHJhIHdyYXBwZXJzCgkJCQlkaXYuaW5u ZXJIVE1MID0gd3JhcFsxXSArIGVsZW0gKyB3cmFwWzJdOwoKCQkJCS8vIE1vdmUg dG8gdGhlIHJpZ2h0IGRlcHRoCgkJCQl3aGlsZSAoIHdyYXBbMF0tLSApCgkJCQkJ ZGl2ID0gZGl2Lmxhc3RDaGlsZDsKCgkJCQkvLyBSZW1vdmUgSUUncyBhdXRvaW5z ZXJ0ZWQgPHRib2R5PiBmcm9tIHRhYmxlIGZyYWdtZW50cwoJCQkJaWYgKCBqUXVl cnkuYnJvd3Nlci5tc2llICkgewoKCQkJCQkvLyBTdHJpbmcgd2FzIGEgPHRhYmxl PiwgKm1heSogaGF2ZSBzcHVyaW91cyA8dGJvZHk+CgkJCQkJdmFyIHRib2R5ID0g IXRhZ3MuaW5kZXhPZigiPHRhYmxlIikgJiYgdGFncy5pbmRleE9mKCI8dGJvZHki KSA8IDAgPwoJCQkJCQlkaXYuZmlyc3RDaGlsZCAmJiBkaXYuZmlyc3RDaGlsZC5j aGlsZE5vZGVzIDoKCgkJCQkJCS8vIFN0cmluZyB3YXMgYSBiYXJlIDx0aGVhZD4g b3IgPHRmb290PgoJCQkJCQl3cmFwWzFdID09ICI8dGFibGU+IiAmJiB0YWdzLmlu ZGV4T2YoIjx0Ym9keSIpIDwgMCA/CgkJCQkJCQlkaXYuY2hpbGROb2RlcyA6CgkJ CQkJCQlbXTsKCgkJCQkJZm9yICggdmFyIGogPSB0Ym9keS5sZW5ndGggLSAxOyBq ID49IDAgOyAtLWogKQoJCQkJCQlpZiAoIGpRdWVyeS5ub2RlTmFtZSggdGJvZHlb IGogXSwgInRib2R5IiApICYmICF0Ym9keVsgaiBdLmNoaWxkTm9kZXMubGVuZ3Ro ICkKCQkJCQkJCXRib2R5WyBqIF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCggdGJv ZHlbIGogXSApOwoKCQkJCQkvLyBJRSBjb21wbGV0ZWx5IGtpbGxzIGxlYWRpbmcg d2hpdGVzcGFjZSB3aGVuIGlubmVySFRNTCBpcyB1c2VkCgkJCQkJaWYgKCAvXlxz Ly50ZXN0KCBlbGVtICkgKQoJCQkJCQlkaXYuaW5zZXJ0QmVmb3JlKCBjb250ZXh0 LmNyZWF0ZVRleHROb2RlKCBlbGVtLm1hdGNoKC9eXHMqLylbMF0gKSwgZGl2LmZp cnN0Q2hpbGQgKTsKCgkJCQl9CgoJCQkJZWxlbSA9IGpRdWVyeS5tYWtlQXJyYXko IGRpdi5jaGlsZE5vZGVzICk7CgkJCX0KCgkJCWlmICggZWxlbS5sZW5ndGggPT09 IDAgJiYgKCFqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJmb3JtIiApICYmICFqUXVl cnkubm9kZU5hbWUoIGVsZW0sICJzZWxlY3QiICkpICkKCQkJCXJldHVybjsKCgkJ CWlmICggZWxlbVswXSA9PSB1bmRlZmluZWQgfHwgalF1ZXJ5Lm5vZGVOYW1lKCBl bGVtLCAiZm9ybSIgKSB8fCBlbGVtLm9wdGlvbnMgKQoJCQkJcmV0LnB1c2goIGVs ZW0gKTsKCgkJCWVsc2UKCQkJCXJldCA9IGpRdWVyeS5tZXJnZSggcmV0LCBlbGVt ICk7CgoJCX0pOwoKCQlyZXR1cm4gcmV0OwoJfSwKCglhdHRyOiBmdW5jdGlvbigg ZWxlbSwgbmFtZSwgdmFsdWUgKSB7CgkJLy8gZG9uJ3Qgc2V0IGF0dHJpYnV0ZXMg b24gdGV4dCBhbmQgY29tbWVudCBub2RlcwoJCWlmICghZWxlbSB8fCBlbGVtLm5v ZGVUeXBlID09IDMgfHwgZWxlbS5ub2RlVHlwZSA9PSA4KQoJCQlyZXR1cm4gdW5k ZWZpbmVkOwoKCQl2YXIgbm90eG1sID0gIWpRdWVyeS5pc1hNTERvYyggZWxlbSAp LAoJCQkvLyBXaGV0aGVyIHdlIGFyZSBzZXR0aW5nIChvciBnZXR0aW5nKQoJCQlz ZXQgPSB2YWx1ZSAhPT0gdW5kZWZpbmVkLAoJCQltc2llID0galF1ZXJ5LmJyb3dz ZXIubXNpZTsKCgkJLy8gVHJ5IHRvIG5vcm1hbGl6ZS9maXggdGhlIG5hbWUKCQlu YW1lID0gbm90eG1sICYmIGpRdWVyeS5wcm9wc1sgbmFtZSBdIHx8IG5hbWU7CgoJ CS8vIE9ubHkgZG8gYWxsIHRoZSBmb2xsb3dpbmcgaWYgdGhpcyBpcyBhIG5vZGUg KGZhc3RlciBmb3Igc3R5bGUpCgkJLy8gSUUgZWxlbS5nZXRBdHRyaWJ1dGUgcGFz c2VzIGV2ZW4gZm9yIHN0eWxlCgkJaWYgKCBlbGVtLnRhZ05hbWUgKSB7CgoJCQkv LyBUaGVzZSBhdHRyaWJ1dGVzIHJlcXVpcmUgc3BlY2lhbCB0cmVhdG1lbnQKCQkJ dmFyIHNwZWNpYWwgPSAvaHJlZnxzcmN8c3R5bGUvLnRlc3QoIG5hbWUgKTsKCgkJ CS8vIFNhZmFyaSBtaXMtcmVwb3J0cyB0aGUgZGVmYXVsdCBzZWxlY3RlZCBwcm9w ZXJ0eSBvZiBhIGhpZGRlbiBvcHRpb24KCQkJLy8gQWNjZXNzaW5nIHRoZSBwYXJl bnQncyBzZWxlY3RlZEluZGV4IHByb3BlcnR5IGZpeGVzIGl0CgkJCWlmICggbmFt ZSA9PSAic2VsZWN0ZWQiICYmIGpRdWVyeS5icm93c2VyLnNhZmFyaSApCgkJCQll bGVtLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDsKCgkJCS8vIElmIGFwcGxpY2Fi bGUsIGFjY2VzcyB0aGUgYXR0cmlidXRlIHZpYSB0aGUgRE9NIDAgd2F5CgkJCWlm ICggbmFtZSBpbiBlbGVtICYmIG5vdHhtbCAmJiAhc3BlY2lhbCApIHsKCQkJCWlm ICggc2V0ICl7CgkJCQkJLy8gV2UgY2FuJ3QgYWxsb3cgdGhlIHR5cGUgcHJvcGVy dHkgdG8gYmUgY2hhbmdlZCAoc2luY2UgaXQgY2F1c2VzIHByb2JsZW1zIGluIElF KQoJCQkJCWlmICggbmFtZSA9PSAidHlwZSIgJiYgalF1ZXJ5Lm5vZGVOYW1lKCBl bGVtLCAiaW5wdXQiICkgJiYgZWxlbS5wYXJlbnROb2RlICkKCQkJCQkJdGhyb3cg InR5cGUgcHJvcGVydHkgY2FuJ3QgYmUgY2hhbmdlZCI7CgogIAkJCQlpZiggalF1 ZXJ5Lm5vZGVOYW1lKCBlbGVtLCAiZm9ybSIgKSAmJiBlbGVtLmdldEF0dHJpYnV0 ZU5vZGUobmFtZSkgKQogIAkJCQkJZWxlbS5zZXRBdHRyaWJ1dGUoIG5hbWUsICIi ICsgdmFsdWUgKTsKICAgICAgICAgIGVsc2UKCQkJCQkgIGVsZW1bIG5hbWUgXSA9 IHZhbHVlOwoJCQkJfQoKCQkJCS8vIGJyb3dzZXJzIGluZGV4IGVsZW1lbnRzIGJ5 IGlkL25hbWUgb24gZm9ybXMsIGdpdmUgcHJpb3JpdHkgdG8gYXR0cmlidXRlcy4K CQkJCWlmKCBqUXVlcnkubm9kZU5hbWUoIGVsZW0sICJmb3JtIiApICYmIGVsZW0u Z2V0QXR0cmlidXRlTm9kZShuYW1lKSApCgkJCQkJcmV0dXJuIGVsZW0uZ2V0QXR0 cmlidXRlTm9kZSggbmFtZSApLm5vZGVWYWx1ZTsKCgkJCQlyZXR1cm4gZWxlbVsg bmFtZSBdOwoJCQl9CgoJCQlpZiAoIG1zaWUgJiYgbm90eG1sICYmICBuYW1lID09 ICJzdHlsZSIgKQoJCQkJcmV0dXJuIGpRdWVyeS5hdHRyKCBlbGVtLnN0eWxlLCAi Y3NzVGV4dCIsIHZhbHVlICk7CgoJCQlpZiAoIHNldCApCgkJCQkvLyBjb252ZXJ0 IHRoZSB2YWx1ZSB0byBhIHN0cmluZyAoYWxsIGJyb3dzZXJzIGRvIHRoaXMgYnV0 IElFKSBzZWUgIzEwNzAKCQkJCWVsZW0uc2V0QXR0cmlidXRlKCBuYW1lLCAiIiAr IHZhbHVlICk7CgoJCQl2YXIgYXR0ciA9IG1zaWUgJiYgbm90eG1sICYmIHNwZWNp YWwKCQkJCQkvLyBTb21lIGF0dHJpYnV0ZXMgcmVxdWlyZSBhIHNwZWNpYWwgY2Fs bCBvbiBJRQoJCQkJCT8gZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUsIDIgKQoJCQkJ CTogZWxlbS5nZXRBdHRyaWJ1dGUoIG5hbWUgKTsKCgkJCS8vIE5vbi1leGlzdGVu dCBhdHRyaWJ1dGVzIHJldHVybiBudWxsLCB3ZSBub3JtYWxpemUgdG8gdW5kZWZp bmVkCgkJCXJldHVybiBhdHRyID09PSBudWxsID8gdW5kZWZpbmVkIDogYXR0cjsK CQl9CgoJCS8vIGVsZW0gaXMgYWN0dWFsbHkgZWxlbS5zdHlsZSAuLi4gc2V0IHRo ZSBzdHlsZQoKCQkvLyBJRSB1c2VzIGZpbHRlcnMgZm9yIG9wYWNpdHkKCQlpZiAo IG1zaWUgJiYgbmFtZSA9PSAib3BhY2l0eSIgKSB7CgkJCWlmICggc2V0ICkgewoJ CQkJLy8gSUUgaGFzIHRyb3VibGUgd2l0aCBvcGFjaXR5IGlmIGl0IGRvZXMgbm90 IGhhdmUgbGF5b3V0CgkJCQkvLyBGb3JjZSBpdCBieSBzZXR0aW5nIHRoZSB6b29t IGxldmVsCgkJCQllbGVtLnpvb20gPSAxOwoKCQkJCS8vIFNldCB0aGUgYWxwaGEg ZmlsdGVyIHRvIHNldCB0aGUgb3BhY2l0eQoJCQkJZWxlbS5maWx0ZXIgPSAoZWxl bS5maWx0ZXIgfHwgIiIpLnJlcGxhY2UoIC9hbHBoYVwoW14pXSpcKS8sICIiICkg KwoJCQkJCShwYXJzZUludCggdmFsdWUgKSArICcnID09ICJOYU4iID8gIiIgOiAi YWxwaGEob3BhY2l0eT0iICsgdmFsdWUgKiAxMDAgKyAiKSIpOwoJCQl9CgoJCQly ZXR1cm4gZWxlbS5maWx0ZXIgJiYgZWxlbS5maWx0ZXIuaW5kZXhPZigib3BhY2l0 eT0iKSA+PSAwID8KCQkJCShwYXJzZUZsb2F0KCBlbGVtLmZpbHRlci5tYXRjaCgv b3BhY2l0eT0oW14pXSopLylbMV0gKSAvIDEwMCkgKyAnJzoKCQkJCSIiOwoJCX0K CgkJbmFtZSA9IG5hbWUucmVwbGFjZSgvLShbYS16XSkvaWcsIGZ1bmN0aW9uKGFs bCwgbGV0dGVyKXsKCQkJcmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgpOwoJCX0p OwoKCQlpZiAoIHNldCApCgkJCWVsZW1bIG5hbWUgXSA9IHZhbHVlOwoKCQlyZXR1 cm4gZWxlbVsgbmFtZSBdOwoJfSwKCgl0cmltOiBmdW5jdGlvbiggdGV4dCApIHsK CQlyZXR1cm4gKHRleHQgfHwgIiIpLnJlcGxhY2UoIC9eXHMrfFxzKyQvZywgIiIg KTsKCX0sCgoJbWFrZUFycmF5OiBmdW5jdGlvbiggYXJyYXkgKSB7CgkJdmFyIHJl dCA9IFtdOwoKCQlpZiggYXJyYXkgIT0gbnVsbCApewoJCQl2YXIgaSA9IGFycmF5 Lmxlbmd0aDsKCQkJLy90aGUgd2luZG93LCBzdHJpbmdzIGFuZCBmdW5jdGlvbnMg YWxzbyBoYXZlICdsZW5ndGgnCgkJCWlmKCBpID09IG51bGwgfHwgYXJyYXkuc3Bs aXQgfHwgYXJyYXkuc2V0SW50ZXJ2YWwgfHwgYXJyYXkuY2FsbCApCgkJCQlyZXRb MF0gPSBhcnJheTsKCQkJZWxzZQoJCQkJd2hpbGUoIGkgKQoJCQkJCXJldFstLWld ID0gYXJyYXlbaV07CgkJfQoKCQlyZXR1cm4gcmV0OwoJfSwKCglpbkFycmF5OiBm dW5jdGlvbiggZWxlbSwgYXJyYXkgKSB7CgkJZm9yICggdmFyIGkgPSAwLCBsZW5n dGggPSBhcnJheS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKyApCgkJLy8gVXNlID09 PSBiZWNhdXNlIG9uIElFLCB3aW5kb3cgPT0gZG9jdW1lbnQKCQkJaWYgKCBhcnJh eVsgaSBdID09PSBlbGVtICkKCQkJCXJldHVybiBpOwoKCQlyZXR1cm4gLTE7Cgl9 LAoKCW1lcmdlOiBmdW5jdGlvbiggZmlyc3QsIHNlY29uZCApIHsKCQkvLyBXZSBo YXZlIHRvIGxvb3AgdGhpcyB3YXkgYmVjYXVzZSBJRSAmIE9wZXJhIG92ZXJ3cml0 ZSB0aGUgbGVuZ3RoCgkJLy8gZXhwYW5kbyBvZiBnZXRFbGVtZW50c0J5VGFnTmFt ZQoJCXZhciBpID0gMCwgZWxlbSwgcG9zID0gZmlyc3QubGVuZ3RoOwoJCS8vIEFs c28sIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGNvcnJlY3QgZWxlbWVu dHMgYXJlIGJlaW5nIHJldHVybmVkCgkJLy8gKElFIHJldHVybnMgY29tbWVudCBu b2RlcyBpbiBhICcqJyBxdWVyeSkKCQlpZiAoIGpRdWVyeS5icm93c2VyLm1zaWUg KSB7CgkJCXdoaWxlICggZWxlbSA9IHNlY29uZFsgaSsrIF0gKQoJCQkJaWYgKCBl bGVtLm5vZGVUeXBlICE9IDggKQoJCQkJCWZpcnN0WyBwb3MrKyBdID0gZWxlbTsK CgkJfSBlbHNlCgkJCXdoaWxlICggZWxlbSA9IHNlY29uZFsgaSsrIF0gKQoJCQkJ Zmlyc3RbIHBvcysrIF0gPSBlbGVtOwoKCQlyZXR1cm4gZmlyc3Q7Cgl9LAoKCXVu aXF1ZTogZnVuY3Rpb24oIGFycmF5ICkgewoJCXZhciByZXQgPSBbXSwgZG9uZSA9 IHt9OwoKCQl0cnkgewoKCQkJZm9yICggdmFyIGkgPSAwLCBsZW5ndGggPSBhcnJh eS5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKyApIHsKCQkJCXZhciBpZCA9IGpRdWVy eS5kYXRhKCBhcnJheVsgaSBdICk7CgoJCQkJaWYgKCAhZG9uZVsgaWQgXSApIHsK CQkJCQlkb25lWyBpZCBdID0gdHJ1ZTsKCQkJCQlyZXQucHVzaCggYXJyYXlbIGkg XSApOwoJCQkJfQoJCQl9CgoJCX0gY2F0Y2goIGUgKSB7CgkJCXJldCA9IGFycmF5 OwoJCX0KCgkJcmV0dXJuIHJldDsKCX0sCgoJZ3JlcDogZnVuY3Rpb24oIGVsZW1z LCBjYWxsYmFjaywgaW52ICkgewoJCXZhciByZXQgPSBbXTsKCgkJLy8gR28gdGhy b3VnaCB0aGUgYXJyYXksIG9ubHkgc2F2aW5nIHRoZSBpdGVtcwoJCS8vIHRoYXQg cGFzcyB0aGUgdmFsaWRhdG9yIGZ1bmN0aW9uCgkJZm9yICggdmFyIGkgPSAwLCBs ZW5ndGggPSBlbGVtcy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKyApCgkJCWlmICgg IWludiAhPSAhY2FsbGJhY2soIGVsZW1zWyBpIF0sIGkgKSApCgkJCQlyZXQucHVz aCggZWxlbXNbIGkgXSApOwoKCQlyZXR1cm4gcmV0OwoJfSwKCgltYXA6IGZ1bmN0 aW9uKCBlbGVtcywgY2FsbGJhY2sgKSB7CgkJdmFyIHJldCA9IFtdOwoKCQkvLyBH byB0aHJvdWdoIHRoZSBhcnJheSwgdHJhbnNsYXRpbmcgZWFjaCBvZiB0aGUgaXRl bXMgdG8gdGhlaXIKCQkvLyBuZXcgdmFsdWUgKG9yIHZhbHVlcykuCgkJZm9yICgg dmFyIGkgPSAwLCBsZW5ndGggPSBlbGVtcy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkr KyApIHsKCQkJdmFyIHZhbHVlID0gY2FsbGJhY2soIGVsZW1zWyBpIF0sIGkgKTsK CgkJCWlmICggdmFsdWUgIT0gbnVsbCApCgkJCQlyZXRbIHJldC5sZW5ndGggXSA9 IHZhbHVlOwoJCX0KCgkJcmV0dXJuIHJldC5jb25jYXQuYXBwbHkoIFtdLCByZXQg KTsKCX0KfSk7Cgp2YXIgdXNlckFnZW50ID0gbmF2aWdhdG9yLnVzZXJBZ2VudC50 b0xvd2VyQ2FzZSgpOwoKLy8gRmlndXJlIG91dCB3aGF0IGJyb3dzZXIgaXMgYmVp bmcgdXNlZApqUXVlcnkuYnJvd3NlciA9IHsKCXZlcnNpb246ICh1c2VyQWdlbnQu bWF0Y2goIC8uKyg/OnJ2fGl0fHJhfGllKVtcLzogXShbXGQuXSspLyApIHx8IFtd KVsxXSwKCXNhZmFyaTogL3dlYmtpdC8udGVzdCggdXNlckFnZW50ICksCglvcGVy YTogL29wZXJhLy50ZXN0KCB1c2VyQWdlbnQgKSwKCW1zaWU6IC9tc2llLy50ZXN0 KCB1c2VyQWdlbnQgKSAmJiAhL29wZXJhLy50ZXN0KCB1c2VyQWdlbnQgKSwKCW1v emlsbGE6IC9tb3ppbGxhLy50ZXN0KCB1c2VyQWdlbnQgKSAmJiAhLyhjb21wYXRp YmxlfHdlYmtpdCkvLnRlc3QoIHVzZXJBZ2VudCApCn07Cgp2YXIgc3R5bGVGbG9h dCA9IGpRdWVyeS5icm93c2VyLm1zaWUgPwoJInN0eWxlRmxvYXQiIDoKCSJjc3NG bG9hdCI7CgpqUXVlcnkuZXh0ZW5kKHsKCS8vIENoZWNrIHRvIHNlZSBpZiB0aGUg VzNDIGJveCBtb2RlbCBpcyBiZWluZyB1c2VkCglib3hNb2RlbDogIWpRdWVyeS5i cm93c2VyLm1zaWUgfHwgZG9jdW1lbnQuY29tcGF0TW9kZSA9PSAiQ1NTMUNvbXBh dCIsCgoJcHJvcHM6IHsKCQkiZm9yIjogImh0bWxGb3IiLAoJCSJjbGFzcyI6ICJj bGFzc05hbWUiLAoJCSJmbG9hdCI6IHN0eWxlRmxvYXQsCgkJY3NzRmxvYXQ6IHN0 eWxlRmxvYXQsCgkJc3R5bGVGbG9hdDogc3R5bGVGbG9hdCwKCQlyZWFkb25seTog InJlYWRPbmx5IiwKCQltYXhsZW5ndGg6ICJtYXhMZW5ndGgiLAoJCWNlbGxzcGFj aW5nOiAiY2VsbFNwYWNpbmciCgl9Cn0pOwoKalF1ZXJ5LmVhY2goewoJcGFyZW50 OiBmdW5jdGlvbihlbGVtKXtyZXR1cm4gZWxlbS5wYXJlbnROb2RlO30sCglwYXJl bnRzOiBmdW5jdGlvbihlbGVtKXtyZXR1cm4galF1ZXJ5LmRpcihlbGVtLCJwYXJl bnROb2RlIik7fSwKCW5leHQ6IGZ1bmN0aW9uKGVsZW0pe3JldHVybiBqUXVlcnku bnRoKGVsZW0sMiwibmV4dFNpYmxpbmciKTt9LAoJcHJldjogZnVuY3Rpb24oZWxl bSl7cmV0dXJuIGpRdWVyeS5udGgoZWxlbSwyLCJwcmV2aW91c1NpYmxpbmciKTt9 LAoJbmV4dEFsbDogZnVuY3Rpb24oZWxlbSl7cmV0dXJuIGpRdWVyeS5kaXIoZWxl bSwibmV4dFNpYmxpbmciKTt9LAoJcHJldkFsbDogZnVuY3Rpb24oZWxlbSl7cmV0 dXJuIGpRdWVyeS5kaXIoZWxlbSwicHJldmlvdXNTaWJsaW5nIik7fSwKCXNpYmxp bmdzOiBmdW5jdGlvbihlbGVtKXtyZXR1cm4galF1ZXJ5LnNpYmxpbmcoZWxlbS5w YXJlbnROb2RlLmZpcnN0Q2hpbGQsZWxlbSk7fSwKCWNoaWxkcmVuOiBmdW5jdGlv bihlbGVtKXtyZXR1cm4galF1ZXJ5LnNpYmxpbmcoZWxlbS5maXJzdENoaWxkKTt9 LAoJY29udGVudHM6IGZ1bmN0aW9uKGVsZW0pe3JldHVybiBqUXVlcnkubm9kZU5h bWUoZWxlbSwiaWZyYW1lIik/ZWxlbS5jb250ZW50RG9jdW1lbnR8fGVsZW0uY29u dGVudFdpbmRvdy5kb2N1bWVudDpqUXVlcnkubWFrZUFycmF5KGVsZW0uY2hpbGRO b2Rlcyk7fQp9LCBmdW5jdGlvbihuYW1lLCBmbil7CglqUXVlcnkuZm5bIG5hbWUg XSA9IGZ1bmN0aW9uKCBzZWxlY3RvciApIHsKCQl2YXIgcmV0ID0galF1ZXJ5Lm1h cCggdGhpcywgZm4gKTsKCgkJaWYgKCBzZWxlY3RvciAmJiB0eXBlb2Ygc2VsZWN0 b3IgPT0gInN0cmluZyIgKQoJCQlyZXQgPSBqUXVlcnkubXVsdGlGaWx0ZXIoIHNl bGVjdG9yLCByZXQgKTsKCgkJcmV0dXJuIHRoaXMucHVzaFN0YWNrKCBqUXVlcnku dW5pcXVlKCByZXQgKSApOwoJfTsKfSk7CgpqUXVlcnkuZWFjaCh7CglhcHBlbmRU bzogImFwcGVuZCIsCglwcmVwZW5kVG86ICJwcmVwZW5kIiwKCWluc2VydEJlZm9y ZTogImJlZm9yZSIsCglpbnNlcnRBZnRlcjogImFmdGVyIiwKCXJlcGxhY2VBbGw6 ICJyZXBsYWNlV2l0aCIKfSwgZnVuY3Rpb24obmFtZSwgb3JpZ2luYWwpewoJalF1 ZXJ5LmZuWyBuYW1lIF0gPSBmdW5jdGlvbigpIHsKCQl2YXIgYXJncyA9IGFyZ3Vt ZW50czsKCgkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpewoJCQlmb3IgKCB2 YXIgaSA9IDAsIGxlbmd0aCA9IGFyZ3MubGVuZ3RoOyBpIDwgbGVuZ3RoOyBpKysg KQoJCQkJalF1ZXJ5KCBhcmdzWyBpIF0gKVsgb3JpZ2luYWwgXSggdGhpcyApOwoJ CX0pOwoJfTsKfSk7CgpqUXVlcnkuZWFjaCh7CglyZW1vdmVBdHRyOiBmdW5jdGlv biggbmFtZSApIHsKCQlqUXVlcnkuYXR0ciggdGhpcywgbmFtZSwgIiIgKTsKCQlp ZiAodGhpcy5ub2RlVHlwZSA9PSAxKQoJCQl0aGlzLnJlbW92ZUF0dHJpYnV0ZSgg bmFtZSApOwoJfSwKCglhZGRDbGFzczogZnVuY3Rpb24oIGNsYXNzTmFtZXMgKSB7 CgkJalF1ZXJ5LmNsYXNzTmFtZS5hZGQoIHRoaXMsIGNsYXNzTmFtZXMgKTsKCX0s CgoJcmVtb3ZlQ2xhc3M6IGZ1bmN0aW9uKCBjbGFzc05hbWVzICkgewoJCWpRdWVy eS5jbGFzc05hbWUucmVtb3ZlKCB0aGlzLCBjbGFzc05hbWVzICk7Cgl9LAoKCXRv Z2dsZUNsYXNzOiBmdW5jdGlvbiggY2xhc3NOYW1lcyApIHsKCQlqUXVlcnkuY2xh c3NOYW1lWyBqUXVlcnkuY2xhc3NOYW1lLmhhcyggdGhpcywgY2xhc3NOYW1lcyAp ID8gInJlbW92ZSIgOiAiYWRkIiBdKCB0aGlzLCBjbGFzc05hbWVzICk7Cgl9LAoK CXJlbW92ZTogZnVuY3Rpb24oIHNlbGVjdG9yICkgewoJCWlmICggIXNlbGVjdG9y IHx8IGpRdWVyeS5maWx0ZXIoIHNlbGVjdG9yLCBbIHRoaXMgXSApLnIubGVuZ3Ro ICkgewoJCQkvLyBQcmV2ZW50IG1lbW9yeSBsZWFrcwoJCQlqUXVlcnkoICIqIiwg dGhpcyApLmFkZCh0aGlzKS5lYWNoKGZ1bmN0aW9uKCl7CgkJCQlqUXVlcnkuZXZl bnQucmVtb3ZlKHRoaXMpOwoJCQkJalF1ZXJ5LnJlbW92ZURhdGEodGhpcyk7CgkJ CX0pOwoJCQlpZiAodGhpcy5wYXJlbnROb2RlKQoJCQkJdGhpcy5wYXJlbnROb2Rl LnJlbW92ZUNoaWxkKCB0aGlzICk7CgkJfQoJfSwKCgllbXB0eTogZnVuY3Rpb24o KSB7CgkJLy8gUmVtb3ZlIGVsZW1lbnQgbm9kZXMgYW5kIHByZXZlbnQgbWVtb3J5 IGxlYWtzCgkJalF1ZXJ5KCAiPioiLCB0aGlzICkucmVtb3ZlKCk7CgoJCS8vIFJl bW92ZSBhbnkgcmVtYWluaW5nIG5vZGVzCgkJd2hpbGUgKCB0aGlzLmZpcnN0Q2hp bGQgKQoJCQl0aGlzLnJlbW92ZUNoaWxkKCB0aGlzLmZpcnN0Q2hpbGQgKTsKCX0K fSwgZnVuY3Rpb24obmFtZSwgZm4pewoJalF1ZXJ5LmZuWyBuYW1lIF0gPSBmdW5j dGlvbigpewoJCXJldHVybiB0aGlzLmVhY2goIGZuLCBhcmd1bWVudHMgKTsKCX07 Cn0pOwoKalF1ZXJ5LmVhY2goWyAiSGVpZ2h0IiwgIldpZHRoIiBdLCBmdW5jdGlv bihpLCBuYW1lKXsKCXZhciB0eXBlID0gbmFtZS50b0xvd2VyQ2FzZSgpOwoKCWpR dWVyeS5mblsgdHlwZSBdID0gZnVuY3Rpb24oIHNpemUgKSB7CgkJLy8gR2V0IHdp bmRvdyB3aWR0aCBvciBoZWlnaHQKCQlyZXR1cm4gdGhpc1swXSA9PSB3aW5kb3cg PwoJCQkvLyBPcGVyYSByZXBvcnRzIGRvY3VtZW50LmJvZHkuY2xpZW50W1dpZHRo L0hlaWdodF0gcHJvcGVybHkgaW4gYm90aCBxdWlya3MgYW5kIHN0YW5kYXJkcwoJ CQlqUXVlcnkuYnJvd3Nlci5vcGVyYSAmJiBkb2N1bWVudC5ib2R5WyAiY2xpZW50 IiArIG5hbWUgXSB8fAoKCQkJLy8gU2FmYXJpIHJlcG9ydHMgaW5uZXJbV2lkdGgv SGVpZ2h0XSBqdXN0IGZpbmUgKE1vemlsbGEgYW5kIE9wZXJhIGluY2x1ZGUgc2Ny b2xsIGJhciB3aWR0aHMpCgkJCWpRdWVyeS5icm93c2VyLnNhZmFyaSAmJiB3aW5k b3dbICJpbm5lciIgKyBuYW1lIF0gfHwKCgkJCS8vIEV2ZXJ5b25lIGVsc2UgdXNl IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCBvciBkb2N1bWVudC5ib2R5IGRlcGVu ZGluZyBvbiBRdWlya3MgdnMgU3RhbmRhcmRzIG1vZGUKCQkJZG9jdW1lbnQuY29t cGF0TW9kZSA9PSAiQ1NTMUNvbXBhdCIgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVt ZW50WyAiY2xpZW50IiArIG5hbWUgXSB8fCBkb2N1bWVudC5ib2R5WyAiY2xpZW50 IiArIG5hbWUgXSA6CgoJCQkvLyBHZXQgZG9jdW1lbnQgd2lkdGggb3IgaGVpZ2h0 CgkJCXRoaXNbMF0gPT0gZG9jdW1lbnQgPwoJCQkJLy8gRWl0aGVyIHNjcm9sbFtX aWR0aC9IZWlnaHRdIG9yIG9mZnNldFtXaWR0aC9IZWlnaHRdLCB3aGljaGV2ZXIg aXMgZ3JlYXRlcgoJCQkJTWF0aC5tYXgoCgkJCQkJTWF0aC5tYXgoZG9jdW1lbnQu Ym9keVsic2Nyb2xsIiArIG5hbWVdLCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRb InNjcm9sbCIgKyBuYW1lXSksCgkJCQkJTWF0aC5tYXgoZG9jdW1lbnQuYm9keVsi b2Zmc2V0IiArIG5hbWVdLCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbIm9mZnNl dCIgKyBuYW1lXSkKCQkJCSkgOgoKCQkJCS8vIEdldCBvciBzZXQgd2lkdGggb3Ig aGVpZ2h0IG9uIHRoZSBlbGVtZW50CgkJCQlzaXplID09IHVuZGVmaW5lZCA/CgkJ CQkJLy8gR2V0IHdpZHRoIG9yIGhlaWdodCBvbiB0aGUgZWxlbWVudAoJCQkJCSh0 aGlzLmxlbmd0aCA/IGpRdWVyeS5jc3MoIHRoaXNbMF0sIHR5cGUgKSA6IG51bGwp IDoKCgkJCQkJLy8gU2V0IHRoZSB3aWR0aCBvciBoZWlnaHQgb24gdGhlIGVsZW1l bnQgKGRlZmF1bHQgdG8gcGl4ZWxzIGlmIHZhbHVlIGlzIHVuaXRsZXNzKQoJCQkJ CXRoaXMuY3NzKCB0eXBlLCBzaXplLmNvbnN0cnVjdG9yID09IFN0cmluZyA/IHNp emUgOiBzaXplICsgInB4IiApOwoJfTsKfSk7CgovLyBIZWxwZXIgZnVuY3Rpb24g dXNlZCBieSB0aGUgZGltZW5zaW9ucyBhbmQgb2Zmc2V0IG1vZHVsZXMKZnVuY3Rp b24gbnVtKGVsZW0sIHByb3ApIHsKCXJldHVybiBlbGVtWzBdICYmIHBhcnNlSW50 KCBqUXVlcnkuY3VyQ1NTKGVsZW1bMF0sIHByb3AsIHRydWUpLCAxMCApIHx8IDA7 Cn12YXIgY2hhcnMgPSBqUXVlcnkuYnJvd3Nlci5zYWZhcmkgJiYgcGFyc2VJbnQo alF1ZXJ5LmJyb3dzZXIudmVyc2lvbikgPCA0MTcgPwoJCSIoPzpbXFx3Kl8tXXxc XFxcLikiIDoKCQkiKD86W1xcd1x1MDEyOC1cdUZGRkYqXy1dfFxcXFwuKSIsCglx dWlja0NoaWxkID0gbmV3IFJlZ0V4cCgiXj5cXHMqKCIgKyBjaGFycyArICIrKSIp LAoJcXVpY2tJRCA9IG5ldyBSZWdFeHAoIl4oIiArIGNoYXJzICsgIispKCMpKCIg KyBjaGFycyArICIrKSIpLAoJcXVpY2tDbGFzcyA9IG5ldyBSZWdFeHAoIl4oWyMu XT8pKCIgKyBjaGFycyArICIqKSIpOwoKalF1ZXJ5LmV4dGVuZCh7CglleHByOiB7 CgkJIiI6IGZ1bmN0aW9uKGEsaSxtKXtyZXR1cm4gbVsyXT09IioifHxqUXVlcnku bm9kZU5hbWUoYSxtWzJdKTt9LAoJCSIjIjogZnVuY3Rpb24oYSxpLG0pe3JldHVy biBhLmdldEF0dHJpYnV0ZSgiaWQiKT09bVsyXTt9LAoJCSI6IjogewoJCQkvLyBQ b3NpdGlvbiBDaGVja3MKCQkJbHQ6IGZ1bmN0aW9uKGEsaSxtKXtyZXR1cm4gaTxt WzNdLTA7fSwKCQkJZ3Q6IGZ1bmN0aW9uKGEsaSxtKXtyZXR1cm4gaT5tWzNdLTA7 fSwKCQkJbnRoOiBmdW5jdGlvbihhLGksbSl7cmV0dXJuIG1bM10tMD09aTt9LAoJ CQllcTogZnVuY3Rpb24oYSxpLG0pe3JldHVybiBtWzNdLTA9PWk7fSwKCQkJZmly c3Q6IGZ1bmN0aW9uKGEsaSl7cmV0dXJuIGk9PTA7fSwKCQkJbGFzdDogZnVuY3Rp b24oYSxpLG0scil7cmV0dXJuIGk9PXIubGVuZ3RoLTE7fSwKCQkJZXZlbjogZnVu Y3Rpb24oYSxpKXtyZXR1cm4gaSUyPT0wO30sCgkJCW9kZDogZnVuY3Rpb24oYSxp KXtyZXR1cm4gaSUyO30sCgoJCQkvLyBDaGlsZCBDaGVja3MKCQkJImZpcnN0LWNo aWxkIjogZnVuY3Rpb24oYSl7cmV0dXJuIGEucGFyZW50Tm9kZS5nZXRFbGVtZW50 c0J5VGFnTmFtZSgiKiIpWzBdPT1hO30sCgkJCSJsYXN0LWNoaWxkIjogZnVuY3Rp b24oYSl7cmV0dXJuIGpRdWVyeS5udGgoYS5wYXJlbnROb2RlLmxhc3RDaGlsZCwx LCJwcmV2aW91c1NpYmxpbmciKT09YTt9LAoJCQkib25seS1jaGlsZCI6IGZ1bmN0 aW9uKGEpe3JldHVybiAhalF1ZXJ5Lm50aChhLnBhcmVudE5vZGUubGFzdENoaWxk LDIsInByZXZpb3VzU2libGluZyIpO30sCgoJCQkvLyBQYXJlbnQgQ2hlY2tzCgkJ CXBhcmVudDogZnVuY3Rpb24oYSl7cmV0dXJuIGEuZmlyc3RDaGlsZDt9LAoJCQll bXB0eTogZnVuY3Rpb24oYSl7cmV0dXJuICFhLmZpcnN0Q2hpbGQ7fSwKCgkJCS8v IFRleHQgQ2hlY2sKCQkJY29udGFpbnM6IGZ1bmN0aW9uKGEsaSxtKXtyZXR1cm4g KGEudGV4dENvbnRlbnR8fGEuaW5uZXJUZXh0fHxqUXVlcnkoYSkudGV4dCgpfHwi IikuaW5kZXhPZihtWzNdKT49MDt9LAoKCQkJLy8gVmlzaWJpbGl0eQoJCQl2aXNp YmxlOiBmdW5jdGlvbihhKXtyZXR1cm4gImhpZGRlbiIhPWEudHlwZSYmalF1ZXJ5 LmNzcyhhLCJkaXNwbGF5IikhPSJub25lIiYmalF1ZXJ5LmNzcyhhLCJ2aXNpYmls aXR5IikhPSJoaWRkZW4iO30sCgkJCWhpZGRlbjogZnVuY3Rpb24oYSl7cmV0dXJu ICJoaWRkZW4iPT1hLnR5cGV8fGpRdWVyeS5jc3MoYSwiZGlzcGxheSIpPT0ibm9u ZSJ8fGpRdWVyeS5jc3MoYSwidmlzaWJpbGl0eSIpPT0iaGlkZGVuIjt9LAoKCQkJ Ly8gRm9ybSBhdHRyaWJ1dGVzCgkJCWVuYWJsZWQ6IGZ1bmN0aW9uKGEpe3JldHVy biAhYS5kaXNhYmxlZDt9LAoJCQlkaXNhYmxlZDogZnVuY3Rpb24oYSl7cmV0dXJu IGEuZGlzYWJsZWQ7fSwKCQkJY2hlY2tlZDogZnVuY3Rpb24oYSl7cmV0dXJuIGEu Y2hlY2tlZDt9LAoJCQlzZWxlY3RlZDogZnVuY3Rpb24oYSl7cmV0dXJuIGEuc2Vs ZWN0ZWR8fGpRdWVyeS5hdHRyKGEsInNlbGVjdGVkIik7fSwKCgkJCS8vIEZvcm0g ZWxlbWVudHMKCQkJdGV4dDogZnVuY3Rpb24oYSl7cmV0dXJuICJ0ZXh0Ij09YS50 eXBlO30sCgkJCXJhZGlvOiBmdW5jdGlvbihhKXtyZXR1cm4gInJhZGlvIj09YS50 eXBlO30sCgkJCWNoZWNrYm94OiBmdW5jdGlvbihhKXtyZXR1cm4gImNoZWNrYm94 Ij09YS50eXBlO30sCgkJCWZpbGU6IGZ1bmN0aW9uKGEpe3JldHVybiAiZmlsZSI9 PWEudHlwZTt9LAoJCQlwYXNzd29yZDogZnVuY3Rpb24oYSl7cmV0dXJuICJwYXNz d29yZCI9PWEudHlwZTt9LAoJCQlzdWJtaXQ6IGZ1bmN0aW9uKGEpe3JldHVybiAi c3VibWl0Ij09YS50eXBlO30sCgkJCWltYWdlOiBmdW5jdGlvbihhKXtyZXR1cm4g ImltYWdlIj09YS50eXBlO30sCgkJCXJlc2V0OiBmdW5jdGlvbihhKXtyZXR1cm4g InJlc2V0Ij09YS50eXBlO30sCgkJCWJ1dHRvbjogZnVuY3Rpb24oYSl7cmV0dXJu ICJidXR0b24iPT1hLnR5cGV8fGpRdWVyeS5ub2RlTmFtZShhLCJidXR0b24iKTt9 LAoJCQlpbnB1dDogZnVuY3Rpb24oYSl7cmV0dXJuIC9pbnB1dHxzZWxlY3R8dGV4 dGFyZWF8YnV0dG9uL2kudGVzdChhLm5vZGVOYW1lKTt9LAoKCQkJLy8gOmhhcygp CgkJCWhhczogZnVuY3Rpb24oYSxpLG0pe3JldHVybiBqUXVlcnkuZmluZChtWzNd LGEpLmxlbmd0aDt9LAoKCQkJLy8gOmhlYWRlcgoJCQloZWFkZXI6IGZ1bmN0aW9u KGEpe3JldHVybiAvaFxkL2kudGVzdChhLm5vZGVOYW1lKTt9LAoKCQkJLy8gOmFu aW1hdGVkCgkJCWFuaW1hdGVkOiBmdW5jdGlvbihhKXtyZXR1cm4galF1ZXJ5Lmdy ZXAoalF1ZXJ5LnRpbWVycyxmdW5jdGlvbihmbil7cmV0dXJuIGE9PWZuLmVsZW07 fSkubGVuZ3RoO30KCQl9Cgl9LAoKCS8vIFRoZSByZWd1bGFyIGV4cHJlc3Npb25z IHRoYXQgcG93ZXIgdGhlIHBhcnNpbmcgZW5naW5lCglwYXJzZTogWwoJCS8vIE1h dGNoOiBbQHZhbHVlPSd0ZXN0J10sIFtAZm9vXQoJCS9eKFxbKSAqQD8oW1x3LV0r KSAqKFshKiRefj1dKikgKignPyI/KSguKj8pXDQgKlxdLywKCgkJLy8gTWF0Y2g6 IDpjb250YWlucygnZm9vJykKCQkvXig6KShbXHctXSspXCgiPyc/KC4qPyhcKC4q P1wpKT9bXihdKj8pIj8nP1wpLywKCgkJLy8gTWF0Y2g6IDpldmVuLCA6bGFzdC1j aGlsZCwgI2lkLCAuY2xhc3MKCQluZXcgUmVnRXhwKCJeKFs6LiNdKikoIiArIGNo YXJzICsgIispIikKCV0sCgoJbXVsdGlGaWx0ZXI6IGZ1bmN0aW9uKCBleHByLCBl bGVtcywgbm90ICkgewoJCXZhciBvbGQsIGN1ciA9IFtdOwoKCQl3aGlsZSAoIGV4 cHIgJiYgZXhwciAhPSBvbGQgKSB7CgkJCW9sZCA9IGV4cHI7CgkJCXZhciBmID0g alF1ZXJ5LmZpbHRlciggZXhwciwgZWxlbXMsIG5vdCApOwoJCQlleHByID0gZi50 LnJlcGxhY2UoL15ccyosXHMqLywgIiIgKTsKCQkJY3VyID0gbm90ID8gZWxlbXMg PSBmLnIgOiBqUXVlcnkubWVyZ2UoIGN1ciwgZi5yICk7CgkJfQoKCQlyZXR1cm4g Y3VyOwoJfSwKCglmaW5kOiBmdW5jdGlvbiggdCwgY29udGV4dCApIHsKCQkvLyBR dWlja2x5IGhhbmRsZSBub24tc3RyaW5nIGV4cHJlc3Npb25zCgkJaWYgKCB0eXBl b2YgdCAhPSAic3RyaW5nIiApCgkJCXJldHVybiBbIHQgXTsKCgkJLy8gY2hlY2sg dG8gbWFrZSBzdXJlIGNvbnRleHQgaXMgYSBET00gZWxlbWVudCBvciBhIGRvY3Vt ZW50CgkJaWYgKCBjb250ZXh0ICYmIGNvbnRleHQubm9kZVR5cGUgIT0gMSAmJiBj b250ZXh0Lm5vZGVUeXBlICE9IDkpCgkJCXJldHVybiBbIF07CgoJCS8vIFNldCB0 aGUgY29ycmVjdCBjb250ZXh0IChpZiBub25lIGlzIHByb3ZpZGVkKQoJCWNvbnRl eHQgPSBjb250ZXh0IHx8IGRvY3VtZW50OwoKCQkvLyBJbml0aWFsaXplIHRoZSBz ZWFyY2gKCQl2YXIgcmV0ID0gW2NvbnRleHRdLCBkb25lID0gW10sIGxhc3QsIG5v ZGVOYW1lOwoKCQkvLyBDb250aW51ZSB3aGlsZSBhIHNlbGVjdG9yIGV4cHJlc3Np b24gZXhpc3RzLCBhbmQgd2hpbGUKCQkvLyB3ZSdyZSBubyBsb25nZXIgbG9vcGlu ZyB1cG9uIG91cnNlbHZlcwoJCXdoaWxlICggdCAmJiBsYXN0ICE9IHQgKSB7CgkJ CXZhciByID0gW107CgkJCWxhc3QgPSB0OwoKCQkJdCA9IGpRdWVyeS50cmltKHQp OwoKCQkJdmFyIGZvdW5kVG9rZW4gPSBmYWxzZSwKCgkJCS8vIEFuIGF0dGVtcHQg YXQgc3BlZWRpbmcgdXAgY2hpbGQgc2VsZWN0b3JzIHRoYXQKCQkJLy8gcG9pbnQg dG8gYSBzcGVjaWZpYyBlbGVtZW50IHRhZwoJCQkJcmUgPSBxdWlja0NoaWxkLAoK CQkJCW0gPSByZS5leGVjKHQpOwoKCQkJaWYgKCBtICkgewoJCQkJbm9kZU5hbWUg PSBtWzFdLnRvVXBwZXJDYXNlKCk7CgoJCQkJLy8gUGVyZm9ybSBvdXIgb3duIGl0 ZXJhdGlvbiBhbmQgZmlsdGVyCgkJCQlmb3IgKCB2YXIgaSA9IDA7IHJldFtpXTsg aSsrICkKCQkJCQlmb3IgKCB2YXIgYyA9IHJldFtpXS5maXJzdENoaWxkOyBjOyBj ID0gYy5uZXh0U2libGluZyApCgkJCQkJCWlmICggYy5ub2RlVHlwZSA9PSAxICYm IChub2RlTmFtZSA9PSAiKiIgfHwgYy5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpID09 IG5vZGVOYW1lKSApCgkJCQkJCQlyLnB1c2goIGMgKTsKCgkJCQlyZXQgPSByOwoJ CQkJdCA9IHQucmVwbGFjZSggcmUsICIiICk7CgkJCQlpZiAoIHQuaW5kZXhPZigi ICIpID09IDAgKSBjb250aW51ZTsKCQkJCWZvdW5kVG9rZW4gPSB0cnVlOwoJCQl9 IGVsc2UgewoJCQkJcmUgPSAvXihbPit+XSlccyooXHcqKS9pOwoKCQkJCWlmICgg KG0gPSByZS5leGVjKHQpKSAhPSBudWxsICkgewoJCQkJCXIgPSBbXTsKCgkJCQkJ dmFyIG1lcmdlID0ge307CgkJCQkJbm9kZU5hbWUgPSBtWzJdLnRvVXBwZXJDYXNl KCk7CgkJCQkJbSA9IG1bMV07CgoJCQkJCWZvciAoIHZhciBqID0gMCwgcmwgPSBy ZXQubGVuZ3RoOyBqIDwgcmw7IGorKyApIHsKCQkJCQkJdmFyIG4gPSBtID09ICJ+ IiB8fCBtID09ICIrIiA/IHJldFtqXS5uZXh0U2libGluZyA6IHJldFtqXS5maXJz dENoaWxkOwoJCQkJCQlmb3IgKCA7IG47IG4gPSBuLm5leHRTaWJsaW5nICkKCQkJ CQkJCWlmICggbi5ub2RlVHlwZSA9PSAxICkgewoJCQkJCQkJCXZhciBpZCA9IGpR dWVyeS5kYXRhKG4pOwoKCQkJCQkJCQlpZiAoIG0gPT0gIn4iICYmIG1lcmdlW2lk XSApIGJyZWFrOwoKCQkJCQkJCQlpZiAoIW5vZGVOYW1lIHx8IG4ubm9kZU5hbWUu dG9VcHBlckNhc2UoKSA9PSBub2RlTmFtZSApIHsKCQkJCQkJCQkJaWYgKCBtID09 ICJ+IiApIG1lcmdlW2lkXSA9IHRydWU7CgkJCQkJCQkJCXIucHVzaCggbiApOwoJ CQkJCQkJCX0KCgkJCQkJCQkJaWYgKCBtID09ICIrIiApIGJyZWFrOwoJCQkJCQkJ fQoJCQkJCX0KCgkJCQkJcmV0ID0gcjsKCgkJCQkJLy8gQW5kIHJlbW92ZSB0aGUg dG9rZW4KCQkJCQl0ID0galF1ZXJ5LnRyaW0oIHQucmVwbGFjZSggcmUsICIiICkg KTsKCQkJCQlmb3VuZFRva2VuID0gdHJ1ZTsKCQkJCX0KCQkJfQoKCQkJLy8gU2Vl IGlmIHRoZXJlJ3Mgc3RpbGwgYW4gZXhwcmVzc2lvbiwgYW5kIHRoYXQgd2UgaGF2 ZW4ndCBhbHJlYWR5CgkJCS8vIG1hdGNoZWQgYSB0b2tlbgoJCQlpZiAoIHQgJiYg IWZvdW5kVG9rZW4gKSB7CgkJCQkvLyBIYW5kbGUgbXVsdGlwbGUgZXhwcmVzc2lv bnMKCQkJCWlmICggIXQuaW5kZXhPZigiLCIpICkgewoJCQkJCS8vIENsZWFuIHRo ZSByZXN1bHQgc2V0CgkJCQkJaWYgKCBjb250ZXh0ID09IHJldFswXSApIHJldC5z aGlmdCgpOwoKCQkJCQkvLyBNZXJnZSB0aGUgcmVzdWx0IHNldHMKCQkJCQlkb25l ID0galF1ZXJ5Lm1lcmdlKCBkb25lLCByZXQgKTsKCgkJCQkJLy8gUmVzZXQgdGhl IGNvbnRleHQKCQkJCQlyID0gcmV0ID0gW2NvbnRleHRdOwoKCQkJCQkvLyBUb3Vj aCB1cCB0aGUgc2VsZWN0b3Igc3RyaW5nCgkJCQkJdCA9ICIgIiArIHQuc3Vic3Ry KDEsdC5sZW5ndGgpOwoKCQkJCX0gZWxzZSB7CgkJCQkJLy8gT3B0aW1pemUgZm9y IHRoZSBjYXNlIG5vZGVOYW1lI2lkTmFtZQoJCQkJCXZhciByZTIgPSBxdWlja0lE OwoJCQkJCXZhciBtID0gcmUyLmV4ZWModCk7CgoJCQkJCS8vIFJlLW9yZ2FuaXpl IHRoZSByZXN1bHRzLCBzbyB0aGF0IHRoZXkncmUgY29uc2lzdGVudAoJCQkJCWlm ICggbSApIHsKCQkJCQkJbSA9IFsgMCwgbVsyXSwgbVszXSwgbVsxXSBdOwoKCQkJ CQl9IGVsc2UgewoJCQkJCQkvLyBPdGhlcndpc2UsIGRvIGEgdHJhZGl0aW9uYWwg ZmlsdGVyIGNoZWNrIGZvcgoJCQkJCQkvLyBJRCwgY2xhc3MsIGFuZCBlbGVtZW50 IHNlbGVjdG9ycwoJCQkJCQlyZTIgPSBxdWlja0NsYXNzOwoJCQkJCQltID0gcmUy LmV4ZWModCk7CgkJCQkJfQoKCQkJCQltWzJdID0gbVsyXS5yZXBsYWNlKC9cXC9n LCAiIik7CgoJCQkJCXZhciBlbGVtID0gcmV0W3JldC5sZW5ndGgtMV07CgoJCQkJ CS8vIFRyeSB0byBkbyBhIGdsb2JhbCBzZWFyY2ggYnkgSUQsIHdoZXJlIHdlIGNh bgoJCQkJCWlmICggbVsxXSA9PSAiIyIgJiYgZWxlbSAmJiBlbGVtLmdldEVsZW1l bnRCeUlkICYmICFqUXVlcnkuaXNYTUxEb2MoZWxlbSkgKSB7CgkJCQkJCS8vIE9w dGltaXphdGlvbiBmb3IgSFRNTCBkb2N1bWVudCBjYXNlCgkJCQkJCXZhciBvaWQg PSBlbGVtLmdldEVsZW1lbnRCeUlkKG1bMl0pOwoKCQkJCQkJLy8gRG8gYSBxdWlj ayBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgYWN0dWFsIElEIGF0dHJp YnV0ZQoJCQkJCQkvLyB0byBhdm9pZCBzZWxlY3RpbmcgYnkgdGhlIG5hbWUgYXR0 cmlidXRlIGluIElFCgkJCQkJCS8vIGFsc28gY2hlY2sgdG8gaW5zdXJlIGlkIGlz IGEgc3RyaW5nIHRvIGF2b2lkIHNlbGVjdGluZyBhbiBlbGVtZW50IHdpdGggdGhl IG5hbWUgb2YgJ2lkJyBpbnNpZGUgYSBmb3JtCgkJCQkJCWlmICggKGpRdWVyeS5i cm93c2VyLm1zaWV8fGpRdWVyeS5icm93c2VyLm9wZXJhKSAmJiBvaWQgJiYgdHlw ZW9mIG9pZC5pZCA9PSAic3RyaW5nIiAmJiBvaWQuaWQgIT0gbVsyXSApCgkJCQkJ CQlvaWQgPSBqUXVlcnkoJ1tAaWQ9IicrbVsyXSsnIl0nLCBlbGVtKVswXTsKCgkJ CQkJCS8vIERvIGEgcXVpY2sgY2hlY2sgZm9yIG5vZGUgbmFtZSAod2hlcmUgYXBw bGljYWJsZSkgc28KCQkJCQkJLy8gdGhhdCBkaXYjZm9vIHNlYXJjaGVzIHdpbGwg YmUgcmVhbGx5IGZhc3QKCQkJCQkJcmV0ID0gciA9IG9pZCAmJiAoIW1bM10gfHwg alF1ZXJ5Lm5vZGVOYW1lKG9pZCwgbVszXSkpID8gW29pZF0gOiBbXTsKCQkJCQl9 IGVsc2UgewoJCQkJCQkvLyBXZSBuZWVkIHRvIGZpbmQgYWxsIGRlc2NlbmRhbnQg ZWxlbWVudHMKCQkJCQkJZm9yICggdmFyIGkgPSAwOyByZXRbaV07IGkrKyApIHsK CQkJCQkJCS8vIEdyYWIgdGhlIHRhZyBuYW1lIGJlaW5nIHNlYXJjaGVkIGZvcgoJ CQkJCQkJdmFyIHRhZyA9IG1bMV0gPT0gIiMiICYmIG1bM10gPyBtWzNdIDogbVsx XSAhPSAiIiB8fCBtWzBdID09ICIiID8gIioiIDogbVsyXTsKCgkJCQkJCQkvLyBI YW5kbGUgSUU3IGJlaW5nIHJlYWxseSBkdW1iIGFib3V0IDxvYmplY3Q+cwoJCQkJ CQkJaWYgKCB0YWcgPT0gIioiICYmIHJldFtpXS5ub2RlTmFtZS50b0xvd2VyQ2Fz ZSgpID09ICJvYmplY3QiICkKCQkJCQkJCQl0YWcgPSAicGFyYW0iOwoKCQkJCQkJ CXIgPSBqUXVlcnkubWVyZ2UoIHIsIHJldFtpXS5nZXRFbGVtZW50c0J5VGFnTmFt ZSggdGFnICkpOwoJCQkJCQl9CgoJCQkJCQkvLyBJdCdzIGZhc3RlciB0byBmaWx0 ZXIgYnkgY2xhc3MgYW5kIGJlIGRvbmUgd2l0aCBpdAoJCQkJCQlpZiAoIG1bMV0g PT0gIi4iICkKCQkJCQkJCXIgPSBqUXVlcnkuY2xhc3NGaWx0ZXIoIHIsIG1bMl0g KTsKCgkJCQkJCS8vIFNhbWUgd2l0aCBJRCBmaWx0ZXJpbmcKCQkJCQkJaWYgKCBt WzFdID09ICIjIiApIHsKCQkJCQkJCXZhciB0bXAgPSBbXTsKCgkJCQkJCQkvLyBU cnkgdG8gZmluZCB0aGUgZWxlbWVudCB3aXRoIHRoZSBJRAoJCQkJCQkJZm9yICgg dmFyIGkgPSAwOyByW2ldOyBpKysgKQoJCQkJCQkJCWlmICggcltpXS5nZXRBdHRy aWJ1dGUoImlkIikgPT0gbVsyXSApIHsKCQkJCQkJCQkJdG1wID0gWyByW2ldIF07 CgkJCQkJCQkJCWJyZWFrOwoJCQkJCQkJCX0KCgkJCQkJCQlyID0gdG1wOwoJCQkJ CQl9CgoJCQkJCQlyZXQgPSByOwoJCQkJCX0KCgkJCQkJdCA9IHQucmVwbGFjZSgg cmUyLCAiIiApOwoJCQkJfQoKCQkJfQoKCQkJLy8gSWYgYSBzZWxlY3RvciBzdHJp bmcgc3RpbGwgZXhpc3RzCgkJCWlmICggdCApIHsKCQkJCS8vIEF0dGVtcHQgdG8g ZmlsdGVyIGl0CgkJCQl2YXIgdmFsID0galF1ZXJ5LmZpbHRlcih0LHIpOwoJCQkJ cmV0ID0gciA9IHZhbC5yOwoJCQkJdCA9IGpRdWVyeS50cmltKHZhbC50KTsKCQkJ fQoJCX0KCgkJLy8gQW4gZXJyb3Igb2NjdXJyZWQgd2l0aCB0aGUgc2VsZWN0b3I7 CgkJLy8ganVzdCByZXR1cm4gYW4gZW1wdHkgc2V0IGluc3RlYWQKCQlpZiAoIHQg KQoJCQlyZXQgPSBbXTsKCgkJLy8gUmVtb3ZlIHRoZSByb290IGNvbnRleHQKCQlp ZiAoIHJldCAmJiBjb250ZXh0ID09IHJldFswXSApCgkJCXJldC5zaGlmdCgpOwoK CQkvLyBBbmQgY29tYmluZSB0aGUgcmVzdWx0cwoJCWRvbmUgPSBqUXVlcnkubWVy Z2UoIGRvbmUsIHJldCApOwoKCQlyZXR1cm4gZG9uZTsKCX0sCgoJY2xhc3NGaWx0 ZXI6IGZ1bmN0aW9uKHIsbSxub3QpewoJCW0gPSAiICIgKyBtICsgIiAiOwoJCXZh ciB0bXAgPSBbXTsKCQlmb3IgKCB2YXIgaSA9IDA7IHJbaV07IGkrKyApIHsKCQkJ dmFyIHBhc3MgPSAoIiAiICsgcltpXS5jbGFzc05hbWUgKyAiICIpLmluZGV4T2Yo IG0gKSA+PSAwOwoJCQlpZiAoICFub3QgJiYgcGFzcyB8fCBub3QgJiYgIXBhc3Mg KQoJCQkJdG1wLnB1c2goIHJbaV0gKTsKCQl9CgkJcmV0dXJuIHRtcDsKCX0sCgoJ ZmlsdGVyOiBmdW5jdGlvbih0LHIsbm90KSB7CgkJdmFyIGxhc3Q7CgoJCS8vIExv b2sgZm9yIGNvbW1vbiBmaWx0ZXIgZXhwcmVzc2lvbnMKCQl3aGlsZSAoIHQgJiYg dCAhPSBsYXN0ICkgewoJCQlsYXN0ID0gdDsKCgkJCXZhciBwID0galF1ZXJ5LnBh cnNlLCBtOwoKCQkJZm9yICggdmFyIGkgPSAwOyBwW2ldOyBpKysgKSB7CgkJCQlt ID0gcFtpXS5leGVjKCB0ICk7CgoJCQkJaWYgKCBtICkgewoJCQkJCS8vIFJlbW92 ZSB3aGF0IHdlIGp1c3QgbWF0Y2hlZAoJCQkJCXQgPSB0LnN1YnN0cmluZyggbVsw XS5sZW5ndGggKTsKCgkJCQkJbVsyXSA9IG1bMl0ucmVwbGFjZSgvXFwvZywgIiIp OwoJCQkJCWJyZWFrOwoJCQkJfQoJCQl9CgoJCQlpZiAoICFtICkKCQkJCWJyZWFr OwoKCQkJLy8gOm5vdCgpIGlzIGEgc3BlY2lhbCBjYXNlIHRoYXQgY2FuIGJlIG9w dGltaXplZCBieQoJCQkvLyBrZWVwaW5nIGl0IG91dCBvZiB0aGUgZXhwcmVzc2lv biBsaXN0CgkJCWlmICggbVsxXSA9PSAiOiIgJiYgbVsyXSA9PSAibm90IiApCgkJ CQkvLyBvcHRpbWl6ZSBpZiBvbmx5IG9uZSBzZWxlY3RvciBmb3VuZCAobW9zdCBj b21tb24gY2FzZSkKCQkJCXIgPSBpc1NpbXBsZS50ZXN0KCBtWzNdICkgPwoJCQkJ CWpRdWVyeS5maWx0ZXIobVszXSwgciwgdHJ1ZSkuciA6CgkJCQkJalF1ZXJ5KCBy ICkubm90KCBtWzNdICk7CgoJCQkvLyBXZSBjYW4gZ2V0IGEgYmlnIHNwZWVkIGJv b3N0IGJ5IGZpbHRlcmluZyBieSBjbGFzcyBoZXJlCgkJCWVsc2UgaWYgKCBtWzFd ID09ICIuIiApCgkJCQlyID0galF1ZXJ5LmNsYXNzRmlsdGVyKHIsIG1bMl0sIG5v dCk7CgoJCQllbHNlIGlmICggbVsxXSA9PSAiWyIgKSB7CgkJCQl2YXIgdG1wID0g W10sIHR5cGUgPSBtWzNdOwoKCQkJCWZvciAoIHZhciBpID0gMCwgcmwgPSByLmxl bmd0aDsgaSA8IHJsOyBpKysgKSB7CgkJCQkJdmFyIGEgPSByW2ldLCB6ID0gYVsg alF1ZXJ5LnByb3BzW21bMl1dIHx8IG1bMl0gXTsKCgkJCQkJaWYgKCB6ID09IG51 bGwgfHwgL2hyZWZ8c3JjfHNlbGVjdGVkLy50ZXN0KG1bMl0pICkKCQkJCQkJeiA9 IGpRdWVyeS5hdHRyKGEsbVsyXSkgfHwgJyc7CgoJCQkJCWlmICggKHR5cGUgPT0g IiIgJiYgISF6IHx8CgkJCQkJCSB0eXBlID09ICI9IiAmJiB6ID09IG1bNV0gfHwK CQkJCQkJIHR5cGUgPT0gIiE9IiAmJiB6ICE9IG1bNV0gfHwKCQkJCQkJIHR5cGUg PT0gIl49IiAmJiB6ICYmICF6LmluZGV4T2YobVs1XSkgfHwKCQkJCQkJIHR5cGUg PT0gIiQ9IiAmJiB6LnN1YnN0cih6Lmxlbmd0aCAtIG1bNV0ubGVuZ3RoKSA9PSBt WzVdIHx8CgkJCQkJCSAodHlwZSA9PSAiKj0iIHx8IHR5cGUgPT0gIn49IikgJiYg ei5pbmRleE9mKG1bNV0pID49IDApIF4gbm90ICkKCQkJCQkJCXRtcC5wdXNoKCBh ICk7CgkJCQl9CgoJCQkJciA9IHRtcDsKCgkJCS8vIFdlIGNhbiBnZXQgYSBzcGVl ZCBib29zdCBieSBoYW5kbGluZyBudGgtY2hpbGQgaGVyZQoJCQl9IGVsc2UgaWYg KCBtWzFdID09ICI6IiAmJiBtWzJdID09ICJudGgtY2hpbGQiICkgewoJCQkJdmFy IG1lcmdlID0ge30sIHRtcCA9IFtdLAoJCQkJCS8vIHBhcnNlIGVxdWF0aW9ucyBs aWtlICdldmVuJywgJ29kZCcsICc1JywgJzJuJywgJzNuKzInLCAnNG4tMScsICct bis2JwoJCQkJCXRlc3QgPSAvKC0/KShcZCopbigoPzpcK3wtKT9cZCopLy5leGVj KAoJCQkJCQltWzNdID09ICJldmVuIiAmJiAiMm4iIHx8IG1bM10gPT0gIm9kZCIg JiYgIjJuKzEiIHx8CgkJCQkJCSEvXEQvLnRlc3QobVszXSkgJiYgIjBuKyIgKyBt WzNdIHx8IG1bM10pLAoJCQkJCS8vIGNhbGN1bGF0ZSB0aGUgbnVtYmVycyAoZmly c3QpbisobGFzdCkgaW5jbHVkaW5nIGlmIHRoZXkgYXJlIG5lZ2F0aXZlCgkJCQkJ Zmlyc3QgPSAodGVzdFsxXSArICh0ZXN0WzJdIHx8IDEpKSAtIDAsIGxhc3QgPSB0 ZXN0WzNdIC0gMDsKCgkJCQkvLyBsb29wIHRocm91Z2ggYWxsIHRoZSBlbGVtZW50 cyBsZWZ0IGluIHRoZSBqUXVlcnkgb2JqZWN0CgkJCQlmb3IgKCB2YXIgaSA9IDAs IHJsID0gci5sZW5ndGg7IGkgPCBybDsgaSsrICkgewoJCQkJCXZhciBub2RlID0g cltpXSwgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZSwgaWQgPSBqUXVlcnku ZGF0YShwYXJlbnROb2RlKTsKCgkJCQkJaWYgKCAhbWVyZ2VbaWRdICkgewoJCQkJ CQl2YXIgYyA9IDE7CgoJCQkJCQlmb3IgKCB2YXIgbiA9IHBhcmVudE5vZGUuZmly c3RDaGlsZDsgbjsgbiA9IG4ubmV4dFNpYmxpbmcgKQoJCQkJCQkJaWYgKCBuLm5v ZGVUeXBlID09IDEgKQoJCQkJCQkJCW4ubm9kZUluZGV4ID0gYysrOwoKCQkJCQkJ bWVyZ2VbaWRdID0gdHJ1ZTsKCQkJCQl9CgoJCQkJCXZhciBhZGQgPSBmYWxzZTsK CgkJCQkJaWYgKCBmaXJzdCA9PSAwICkgewoJCQkJCQlpZiAoIG5vZGUubm9kZUlu ZGV4ID09IGxhc3QgKQoJCQkJCQkJYWRkID0gdHJ1ZTsKCQkJCQl9IGVsc2UgaWYg KCAobm9kZS5ub2RlSW5kZXggLSBsYXN0KSAlIGZpcnN0ID09IDAgJiYgKG5vZGUu bm9kZUluZGV4IC0gbGFzdCkgLyBmaXJzdCA+PSAwICkKCQkJCQkJYWRkID0gdHJ1 ZTsKCgkJCQkJaWYgKCBhZGQgXiBub3QgKQoJCQkJCQl0bXAucHVzaCggbm9kZSAp OwoJCQkJfQoKCQkJCXIgPSB0bXA7CgoJCQkvLyBPdGhlcndpc2UsIGZpbmQgdGhl IGV4cHJlc3Npb24gdG8gZXhlY3V0ZQoJCQl9IGVsc2UgewoJCQkJdmFyIGZuID0g alF1ZXJ5LmV4cHJbIG1bMV0gXTsKCQkJCWlmICggdHlwZW9mIGZuID09ICJvYmpl Y3QiICkKCQkJCQlmbiA9IGZuWyBtWzJdIF07CgoJCQkJaWYgKCB0eXBlb2YgZm4g PT0gInN0cmluZyIgKQoJCQkJCWZuID0gZXZhbCgiZmFsc2V8fGZ1bmN0aW9uKGEs aSl7cmV0dXJuICIgKyBmbiArICI7fSIpOwoKCQkJCS8vIEV4ZWN1dGUgaXQgYWdh aW5zdCB0aGUgY3VycmVudCBmaWx0ZXIKCQkJCXIgPSBqUXVlcnkuZ3JlcCggciwg ZnVuY3Rpb24oZWxlbSwgaSl7CgkJCQkJcmV0dXJuIGZuKGVsZW0sIGksIG0sIHIp OwoJCQkJfSwgbm90ICk7CgkJCX0KCQl9CgoJCS8vIFJldHVybiBhbiBhcnJheSBv ZiBmaWx0ZXJlZCBlbGVtZW50cyAocikKCQkvLyBhbmQgdGhlIG1vZGlmaWVkIGV4 cHJlc3Npb24gc3RyaW5nICh0KQoJCXJldHVybiB7IHI6IHIsIHQ6IHQgfTsKCX0s CgoJZGlyOiBmdW5jdGlvbiggZWxlbSwgZGlyICl7CgkJdmFyIG1hdGNoZWQgPSBb XSwKCQkJY3VyID0gZWxlbVtkaXJdOwoJCXdoaWxlICggY3VyICYmIGN1ciAhPSBk b2N1bWVudCApIHsKCQkJaWYgKCBjdXIubm9kZVR5cGUgPT0gMSApCgkJCQltYXRj aGVkLnB1c2goIGN1ciApOwoJCQljdXIgPSBjdXJbZGlyXTsKCQl9CgkJcmV0dXJu IG1hdGNoZWQ7Cgl9LAoKCW50aDogZnVuY3Rpb24oY3VyLHJlc3VsdCxkaXIsZWxl bSl7CgkJcmVzdWx0ID0gcmVzdWx0IHx8IDE7CgkJdmFyIG51bSA9IDA7CgoJCWZv ciAoIDsgY3VyOyBjdXIgPSBjdXJbZGlyXSApCgkJCWlmICggY3VyLm5vZGVUeXBl ID09IDEgJiYgKytudW0gPT0gcmVzdWx0ICkKCQkJCWJyZWFrOwoKCQlyZXR1cm4g Y3VyOwoJfSwKCglzaWJsaW5nOiBmdW5jdGlvbiggbiwgZWxlbSApIHsKCQl2YXIg ciA9IFtdOwoKCQlmb3IgKCA7IG47IG4gPSBuLm5leHRTaWJsaW5nICkgewoJCQlp ZiAoIG4ubm9kZVR5cGUgPT0gMSAmJiBuICE9IGVsZW0gKQoJCQkJci5wdXNoKCBu ICk7CgkJfQoKCQlyZXR1cm4gcjsKCX0KfSk7Ci8qCiAqIEEgbnVtYmVyIG9mIGhl bHBlciBmdW5jdGlvbnMgdXNlZCBmb3IgbWFuYWdpbmcgZXZlbnRzLgogKiBNYW55 IG9mIHRoZSBpZGVhcyBiZWhpbmQgdGhpcyBjb2RlIG9yaWduYXRlZCBmcm9tCiAq IERlYW4gRWR3YXJkcycgYWRkRXZlbnQgbGlicmFyeS4KICovCmpRdWVyeS5ldmVu dCA9IHsKCgkvLyBCaW5kIGFuIGV2ZW50IHRvIGFuIGVsZW1lbnQKCS8vIE9yaWdp bmFsIGJ5IERlYW4gRWR3YXJkcwoJYWRkOiBmdW5jdGlvbihlbGVtLCB0eXBlcywg aGFuZGxlciwgZGF0YSkgewoJCWlmICggZWxlbS5ub2RlVHlwZSA9PSAzIHx8IGVs ZW0ubm9kZVR5cGUgPT0gOCApCgkJCXJldHVybjsKCgkJLy8gRm9yIHdoYXRldmVy IHJlYXNvbiwgSUUgaGFzIHRyb3VibGUgcGFzc2luZyB0aGUgd2luZG93IG9iamVj dAoJCS8vIGFyb3VuZCwgY2F1c2luZyBpdCB0byBiZSBjbG9uZWQgaW4gdGhlIHBy b2Nlc3MKCQlpZiAoIGpRdWVyeS5icm93c2VyLm1zaWUgJiYgZWxlbS5zZXRJbnRl cnZhbCApCgkJCWVsZW0gPSB3aW5kb3c7CgoJCS8vIE1ha2Ugc3VyZSB0aGF0IHRo ZSBmdW5jdGlvbiBiZWluZyBleGVjdXRlZCBoYXMgYSB1bmlxdWUgSUQKCQlpZiAo ICFoYW5kbGVyLmd1aWQgKQoJCQloYW5kbGVyLmd1aWQgPSB0aGlzLmd1aWQrKzsK CgkJLy8gaWYgZGF0YSBpcyBwYXNzZWQsIGJpbmQgdG8gaGFuZGxlcgoJCWlmKCBk YXRhICE9IHVuZGVmaW5lZCApIHsKCQkJLy8gQ3JlYXRlIHRlbXBvcmFyeSBmdW5j dGlvbiBwb2ludGVyIHRvIG9yaWdpbmFsIGhhbmRsZXIKCQkJdmFyIGZuID0gaGFu ZGxlcjsKCgkJCS8vIENyZWF0ZSB1bmlxdWUgaGFuZGxlciBmdW5jdGlvbiwgd3Jh cHBlZCBhcm91bmQgb3JpZ2luYWwgaGFuZGxlcgoJCQloYW5kbGVyID0gdGhpcy5w cm94eSggZm4sIGZ1bmN0aW9uKCkgewoJCQkJLy8gUGFzcyBhcmd1bWVudHMgYW5k IGNvbnRleHQgdG8gb3JpZ2luYWwgaGFuZGxlcgoJCQkJcmV0dXJuIGZuLmFwcGx5 KHRoaXMsIGFyZ3VtZW50cyk7CgkJCX0pOwoKCQkJLy8gU3RvcmUgZGF0YSBpbiB1 bmlxdWUgaGFuZGxlcgoJCQloYW5kbGVyLmRhdGEgPSBkYXRhOwoJCX0KCgkJLy8g SW5pdCB0aGUgZWxlbWVudCdzIGV2ZW50IHN0cnVjdHVyZQoJCXZhciBldmVudHMg PSBqUXVlcnkuZGF0YShlbGVtLCAiZXZlbnRzIikgfHwgalF1ZXJ5LmRhdGEoZWxl bSwgImV2ZW50cyIsIHt9KSwKCQkJaGFuZGxlID0galF1ZXJ5LmRhdGEoZWxlbSwg ImhhbmRsZSIpIHx8IGpRdWVyeS5kYXRhKGVsZW0sICJoYW5kbGUiLCBmdW5jdGlv bigpewoJCQkJLy8gSGFuZGxlIHRoZSBzZWNvbmQgZXZlbnQgb2YgYSB0cmlnZ2Vy IGFuZCB3aGVuCgkJCQkvLyBhbiBldmVudCBpcyBjYWxsZWQgYWZ0ZXIgYSBwYWdl IGhhcyB1bmxvYWRlZAoJCQkJaWYgKCB0eXBlb2YgalF1ZXJ5ICE9ICJ1bmRlZmlu ZWQiICYmICFqUXVlcnkuZXZlbnQudHJpZ2dlcmVkICkKCQkJCQlyZXR1cm4galF1 ZXJ5LmV2ZW50LmhhbmRsZS5hcHBseShhcmd1bWVudHMuY2FsbGVlLmVsZW0sIGFy Z3VtZW50cyk7CgkJCX0pOwoJCS8vIEFkZCBlbGVtIGFzIGEgcHJvcGVydHkgb2Yg dGhlIGhhbmRsZSBmdW5jdGlvbgoJCS8vIFRoaXMgaXMgdG8gcHJldmVudCBhIG1l bW9yeSBsZWFrIHdpdGggbm9uLW5hdGl2ZQoJCS8vIGV2ZW50IGluIElFLgoJCWhh bmRsZS5lbGVtID0gZWxlbTsKCgkJLy8gSGFuZGxlIG11bHRpcGxlIGV2ZW50cyBz ZXBhcmF0ZWQgYnkgYSBzcGFjZQoJCS8vIGpRdWVyeSguLi4pLmJpbmQoIm1vdXNl b3ZlciBtb3VzZW91dCIsIGZuKTsKCQlqUXVlcnkuZWFjaCh0eXBlcy5zcGxpdCgv XHMrLyksIGZ1bmN0aW9uKGluZGV4LCB0eXBlKSB7CgkJCS8vIE5hbWVzcGFjZWQg ZXZlbnQgaGFuZGxlcnMKCQkJdmFyIHBhcnRzID0gdHlwZS5zcGxpdCgiLiIpOwoJ CQl0eXBlID0gcGFydHNbMF07CgkJCWhhbmRsZXIudHlwZSA9IHBhcnRzWzFdOwoK CQkJLy8gR2V0IHRoZSBjdXJyZW50IGxpc3Qgb2YgZnVuY3Rpb25zIGJvdW5kIHRv IHRoaXMgZXZlbnQKCQkJdmFyIGhhbmRsZXJzID0gZXZlbnRzW3R5cGVdOwoKCQkJ Ly8gSW5pdCB0aGUgZXZlbnQgaGFuZGxlciBxdWV1ZQoJCQlpZiAoIWhhbmRsZXJz KSB7CgkJCQloYW5kbGVycyA9IGV2ZW50c1t0eXBlXSA9IHt9OwoKCQkJCS8vIENo ZWNrIGZvciBhIHNwZWNpYWwgZXZlbnQgaGFuZGxlcgoJCQkJLy8gT25seSB1c2Ug YWRkRXZlbnRMaXN0ZW5lci9hdHRhY2hFdmVudCBpZiB0aGUgc3BlY2lhbAoJCQkJ Ly8gZXZlbnRzIGhhbmRsZXIgcmV0dXJucyBmYWxzZQoJCQkJaWYgKCAhalF1ZXJ5 LmV2ZW50LnNwZWNpYWxbdHlwZV0gfHwgalF1ZXJ5LmV2ZW50LnNwZWNpYWxbdHlw ZV0uc2V0dXAuY2FsbChlbGVtKSA9PT0gZmFsc2UgKSB7CgkJCQkJLy8gQmluZCB0 aGUgZ2xvYmFsIGV2ZW50IGhhbmRsZXIgdG8gdGhlIGVsZW1lbnQKCQkJCQlpZiAo ZWxlbS5hZGRFdmVudExpc3RlbmVyKQoJCQkJCQllbGVtLmFkZEV2ZW50TGlzdGVu ZXIodHlwZSwgaGFuZGxlLCBmYWxzZSk7CgkJCQkJZWxzZSBpZiAoZWxlbS5hdHRh Y2hFdmVudCkKCQkJCQkJZWxlbS5hdHRhY2hFdmVudCgib24iICsgdHlwZSwgaGFu ZGxlKTsKCQkJCX0KCQkJfQoKCQkJLy8gQWRkIHRoZSBmdW5jdGlvbiB0byB0aGUg ZWxlbWVudCdzIGhhbmRsZXIgbGlzdAoJCQloYW5kbGVyc1toYW5kbGVyLmd1aWRd ID0gaGFuZGxlcjsKCgkJCS8vIEtlZXAgdHJhY2sgb2Ygd2hpY2ggZXZlbnRzIGhh dmUgYmVlbiB1c2VkLCBmb3IgZ2xvYmFsIHRyaWdnZXJpbmcKCQkJalF1ZXJ5LmV2 ZW50Lmdsb2JhbFt0eXBlXSA9IHRydWU7CgkJfSk7CgoJCS8vIE51bGxpZnkgZWxl bSB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcyBpbiBJRQoJCWVsZW0gPSBudWxsOwoJ fSwKCglndWlkOiAxLAoJZ2xvYmFsOiB7fSwKCgkvLyBEZXRhY2ggYW4gZXZlbnQg b3Igc2V0IG9mIGV2ZW50cyBmcm9tIGFuIGVsZW1lbnQKCXJlbW92ZTogZnVuY3Rp b24oZWxlbSwgdHlwZXMsIGhhbmRsZXIpIHsKCQkvLyBkb24ndCBkbyBldmVudHMg b24gdGV4dCBhbmQgY29tbWVudCBub2RlcwoJCWlmICggZWxlbS5ub2RlVHlwZSA9 PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT0gOCApCgkJCXJldHVybjsKCgkJdmFyIGV2 ZW50cyA9IGpRdWVyeS5kYXRhKGVsZW0sICJldmVudHMiKSwgcmV0LCBpbmRleDsK CgkJaWYgKCBldmVudHMgKSB7CgkJCS8vIFVuYmluZCBhbGwgZXZlbnRzIGZvciB0 aGUgZWxlbWVudAoJCQlpZiAoIHR5cGVzID09IHVuZGVmaW5lZCB8fCAodHlwZW9m IHR5cGVzID09ICJzdHJpbmciICYmIHR5cGVzLmNoYXJBdCgwKSA9PSAiLiIpICkK CQkJCWZvciAoIHZhciB0eXBlIGluIGV2ZW50cyApCgkJCQkJdGhpcy5yZW1vdmUo IGVsZW0sIHR5cGUgKyAodHlwZXMgfHwgIiIpICk7CgkJCWVsc2UgewoJCQkJLy8g dHlwZXMgaXMgYWN0dWFsbHkgYW4gZXZlbnQgb2JqZWN0IGhlcmUKCQkJCWlmICgg dHlwZXMudHlwZSApIHsKCQkJCQloYW5kbGVyID0gdHlwZXMuaGFuZGxlcjsKCQkJ CQl0eXBlcyA9IHR5cGVzLnR5cGU7CgkJCQl9CgoJCQkJLy8gSGFuZGxlIG11bHRp cGxlIGV2ZW50cyBzZXBlcmF0ZWQgYnkgYSBzcGFjZQoJCQkJLy8galF1ZXJ5KC4u LikudW5iaW5kKCJtb3VzZW92ZXIgbW91c2VvdXQiLCBmbik7CgkJCQlqUXVlcnku ZWFjaCh0eXBlcy5zcGxpdCgvXHMrLyksIGZ1bmN0aW9uKGluZGV4LCB0eXBlKXsK CQkJCQkvLyBOYW1lc3BhY2VkIGV2ZW50IGhhbmRsZXJzCgkJCQkJdmFyIHBhcnRz ID0gdHlwZS5zcGxpdCgiLiIpOwoJCQkJCXR5cGUgPSBwYXJ0c1swXTsKCgkJCQkJ aWYgKCBldmVudHNbdHlwZV0gKSB7CgkJCQkJCS8vIHJlbW92ZSB0aGUgZ2l2ZW4g aGFuZGxlciBmb3IgdGhlIGdpdmVuIHR5cGUKCQkJCQkJaWYgKCBoYW5kbGVyICkK CQkJCQkJCWRlbGV0ZSBldmVudHNbdHlwZV1baGFuZGxlci5ndWlkXTsKCgkJCQkJ CS8vIHJlbW92ZSBhbGwgaGFuZGxlcnMgZm9yIHRoZSBnaXZlbiB0eXBlCgkJCQkJ CWVsc2UKCQkJCQkJCWZvciAoIGhhbmRsZXIgaW4gZXZlbnRzW3R5cGVdICkKCQkJ CQkJCQkvLyBIYW5kbGUgdGhlIHJlbW92YWwgb2YgbmFtZXNwYWNlZCBldmVudHMK CQkJCQkJCQlpZiAoICFwYXJ0c1sxXSB8fCBldmVudHNbdHlwZV1baGFuZGxlcl0u dHlwZSA9PSBwYXJ0c1sxXSApCgkJCQkJCQkJCWRlbGV0ZSBldmVudHNbdHlwZV1b aGFuZGxlcl07CgoJCQkJCQkvLyByZW1vdmUgZ2VuZXJpYyBldmVudCBoYW5kbGVy IGlmIG5vIG1vcmUgaGFuZGxlcnMgZXhpc3QKCQkJCQkJZm9yICggcmV0IGluIGV2 ZW50c1t0eXBlXSApIGJyZWFrOwoJCQkJCQlpZiAoICFyZXQgKSB7CgkJCQkJCQlp ZiAoICFqUXVlcnkuZXZlbnQuc3BlY2lhbFt0eXBlXSB8fCBqUXVlcnkuZXZlbnQu c3BlY2lhbFt0eXBlXS50ZWFyZG93bi5jYWxsKGVsZW0pID09PSBmYWxzZSApIHsK CQkJCQkJCQlpZiAoZWxlbS5yZW1vdmVFdmVudExpc3RlbmVyKQoJCQkJCQkJCQll bGVtLnJlbW92ZUV2ZW50TGlzdGVuZXIodHlwZSwgalF1ZXJ5LmRhdGEoZWxlbSwg ImhhbmRsZSIpLCBmYWxzZSk7CgkJCQkJCQkJZWxzZSBpZiAoZWxlbS5kZXRhY2hF dmVudCkKCQkJCQkJCQkJZWxlbS5kZXRhY2hFdmVudCgib24iICsgdHlwZSwgalF1 ZXJ5LmRhdGEoZWxlbSwgImhhbmRsZSIpKTsKCQkJCQkJCX0KCQkJCQkJCXJldCA9 IG51bGw7CgkJCQkJCQlkZWxldGUgZXZlbnRzW3R5cGVdOwoJCQkJCQl9CgkJCQkJ fQoJCQkJfSk7CgkJCX0KCgkJCS8vIFJlbW92ZSB0aGUgZXhwYW5kbyBpZiBpdCdz IG5vIGxvbmdlciB1c2VkCgkJCWZvciAoIHJldCBpbiBldmVudHMgKSBicmVhazsK CQkJaWYgKCAhcmV0ICkgewoJCQkJdmFyIGhhbmRsZSA9IGpRdWVyeS5kYXRhKCBl bGVtLCAiaGFuZGxlIiApOwoJCQkJaWYgKCBoYW5kbGUgKSBoYW5kbGUuZWxlbSA9 IG51bGw7CgkJCQlqUXVlcnkucmVtb3ZlRGF0YSggZWxlbSwgImV2ZW50cyIgKTsK CQkJCWpRdWVyeS5yZW1vdmVEYXRhKCBlbGVtLCAiaGFuZGxlIiApOwoJCQl9CgkJ fQoJfSwKCgl0cmlnZ2VyOiBmdW5jdGlvbih0eXBlLCBkYXRhLCBlbGVtLCBkb25h dGl2ZSwgZXh0cmEpIHsKCQkvLyBDbG9uZSB0aGUgaW5jb21pbmcgZGF0YSwgaWYg YW55CgkJZGF0YSA9IGpRdWVyeS5tYWtlQXJyYXkoZGF0YSk7CgoJCWlmICggdHlw ZS5pbmRleE9mKCIhIikgPj0gMCApIHsKCQkJdHlwZSA9IHR5cGUuc2xpY2UoMCwg LTEpOwoJCQl2YXIgZXhjbHVzaXZlID0gdHJ1ZTsKCQl9CgoJCS8vIEhhbmRsZSBh IGdsb2JhbCB0cmlnZ2VyCgkJaWYgKCAhZWxlbSApIHsKCQkJLy8gT25seSB0cmln Z2VyIGlmIHdlJ3ZlIGV2ZXIgYm91bmQgYW4gZXZlbnQgZm9yIGl0CgkJCWlmICgg dGhpcy5nbG9iYWxbdHlwZV0gKQoJCQkJalF1ZXJ5KCIqIikuYWRkKFt3aW5kb3cs IGRvY3VtZW50XSkudHJpZ2dlcih0eXBlLCBkYXRhKTsKCgkJLy8gSGFuZGxlIHRy aWdnZXJpbmcgYSBzaW5nbGUgZWxlbWVudAoJCX0gZWxzZSB7CgkJCS8vIGRvbid0 IGRvIGV2ZW50cyBvbiB0ZXh0IGFuZCBjb21tZW50IG5vZGVzCgkJCWlmICggZWxl bS5ub2RlVHlwZSA9PSAzIHx8IGVsZW0ubm9kZVR5cGUgPT0gOCApCgkJCQlyZXR1 cm4gdW5kZWZpbmVkOwoKCQkJdmFyIHZhbCwgcmV0LCBmbiA9IGpRdWVyeS5pc0Z1 bmN0aW9uKCBlbGVtWyB0eXBlIF0gfHwgbnVsbCApLAoJCQkJLy8gQ2hlY2sgdG8g c2VlIGlmIHdlIG5lZWQgdG8gcHJvdmlkZSBhIGZha2UgZXZlbnQsIG9yIG5vdAoJ CQkJZXZlbnQgPSAhZGF0YVswXSB8fCAhZGF0YVswXS5wcmV2ZW50RGVmYXVsdDsK CgkJCS8vIFBhc3MgYWxvbmcgYSBmYWtlIGV2ZW50CgkJCWlmICggZXZlbnQgKSB7 CgkJCQlkYXRhLnVuc2hpZnQoewoJCQkJCXR5cGU6IHR5cGUsCgkJCQkJdGFyZ2V0 OiBlbGVtLAoJCQkJCXByZXZlbnREZWZhdWx0OiBmdW5jdGlvbigpe30sCgkJCQkJ c3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbigpe30sCgkJCQkJdGltZVN0YW1wOiBu b3coKQoJCQkJfSk7CgkJCQlkYXRhWzBdW2V4cGFuZG9dID0gdHJ1ZTsgLy8gbm8g bmVlZCB0byBmaXggZmFrZSBldmVudAoJCQl9CgoJCQkvLyBFbmZvcmNlIHRoZSBy aWdodCB0cmlnZ2VyIHR5cGUKCQkJZGF0YVswXS50eXBlID0gdHlwZTsKCQkJaWYg KCBleGNsdXNpdmUgKQoJCQkJZGF0YVswXS5leGNsdXNpdmUgPSB0cnVlOwoKCQkJ Ly8gVHJpZ2dlciB0aGUgZXZlbnQsIGl0IGlzIGFzc3VtZWQgdGhhdCAiaGFuZGxl IiBpcyBhIGZ1bmN0aW9uCgkJCXZhciBoYW5kbGUgPSBqUXVlcnkuZGF0YShlbGVt LCAiaGFuZGxlIik7CgkJCWlmICggaGFuZGxlICkKCQkJCXZhbCA9IGhhbmRsZS5h cHBseSggZWxlbSwgZGF0YSApOwoKCQkJLy8gSGFuZGxlIHRyaWdnZXJpbmcgbmF0 aXZlIC5vbmZvbyBoYW5kbGVycyAoYW5kIG9uIGxpbmtzIHNpbmNlIHdlIGRvbid0 IGNhbGwgLmNsaWNrKCkgZm9yIGxpbmtzKQoJCQlpZiAoICghZm4gfHwgKGpRdWVy eS5ub2RlTmFtZShlbGVtLCAnYScpICYmIHR5cGUgPT0gImNsaWNrIikpICYmIGVs ZW1bIm9uIit0eXBlXSAmJiBlbGVtWyJvbiIrdHlwZV0uYXBwbHkoIGVsZW0sIGRh dGEgKSA9PT0gZmFsc2UgKQoJCQkJdmFsID0gZmFsc2U7CgoJCQkvLyBFeHRyYSBm dW5jdGlvbnMgZG9uJ3QgZ2V0IHRoZSBjdXN0b20gZXZlbnQgb2JqZWN0CgkJCWlm ICggZXZlbnQgKQoJCQkJZGF0YS5zaGlmdCgpOwoKCQkJLy8gSGFuZGxlIHRyaWdn ZXJpbmcgb2YgZXh0cmEgZnVuY3Rpb24KCQkJaWYgKCBleHRyYSAmJiBqUXVlcnku aXNGdW5jdGlvbiggZXh0cmEgKSApIHsKCQkJCS8vIGNhbGwgdGhlIGV4dHJhIGZ1 bmN0aW9uIGFuZCB0YWNrIHRoZSBjdXJyZW50IHJldHVybiB2YWx1ZSBvbiB0aGUg ZW5kIGZvciBwb3NzaWJsZSBpbnNwZWN0aW9uCgkJCQlyZXQgPSBleHRyYS5hcHBs eSggZWxlbSwgdmFsID09IG51bGwgPyBkYXRhIDogZGF0YS5jb25jYXQoIHZhbCAp ICk7CgkJCQkvLyBpZiBhbnl0aGluZyBpcyByZXR1cm5lZCwgZ2l2ZSBpdCBwcmVj ZWRlbmNlIGFuZCBoYXZlIGl0IG92ZXJ3cml0ZSB0aGUgcHJldmlvdXMgdmFsdWUK CQkJCWlmIChyZXQgIT09IHVuZGVmaW5lZCkKCQkJCQl2YWwgPSByZXQ7CgkJCX0K CgkJCS8vIFRyaWdnZXIgdGhlIG5hdGl2ZSBldmVudHMgKGV4Y2VwdCBmb3IgY2xp Y2tzIG9uIGxpbmtzKQoJCQlpZiAoIGZuICYmIGRvbmF0aXZlICE9PSBmYWxzZSAm JiB2YWwgIT09IGZhbHNlICYmICEoalF1ZXJ5Lm5vZGVOYW1lKGVsZW0sICdhJykg JiYgdHlwZSA9PSAiY2xpY2siKSApIHsKCQkJCXRoaXMudHJpZ2dlcmVkID0gdHJ1 ZTsKCQkJCXRyeSB7CgkJCQkJZWxlbVsgdHlwZSBdKCk7CgkJCQkvLyBwcmV2ZW50 IElFIGZyb20gdGhyb3dpbmcgYW4gZXJyb3IgZm9yIHNvbWUgaGlkZGVuIGVsZW1l bnRzCgkJCQl9IGNhdGNoIChlKSB7fQoJCQl9CgoJCQl0aGlzLnRyaWdnZXJlZCA9 IGZhbHNlOwoJCX0KCgkJcmV0dXJuIHZhbDsKCX0sCgoJaGFuZGxlOiBmdW5jdGlv bihldmVudCkgewoJCS8vIHJldHVybmVkIHVuZGVmaW5lZCBvciBmYWxzZQoJCXZh ciB2YWwsIHJldCwgbmFtZXNwYWNlLCBhbGwsIGhhbmRsZXJzOwoKCQlldmVudCA9 IGFyZ3VtZW50c1swXSA9IGpRdWVyeS5ldmVudC5maXgoIGV2ZW50IHx8IHdpbmRv dy5ldmVudCApOwoKCQkvLyBOYW1lc3BhY2VkIGV2ZW50IGhhbmRsZXJzCgkJbmFt ZXNwYWNlID0gZXZlbnQudHlwZS5zcGxpdCgiLiIpOwoJCWV2ZW50LnR5cGUgPSBu YW1lc3BhY2VbMF07CgkJbmFtZXNwYWNlID0gbmFtZXNwYWNlWzFdOwoJCS8vIENh Y2hlIHRoaXMgbm93LCBhbGwgPSB0cnVlIG1lYW5zLCBhbnkgaGFuZGxlcgoJCWFs bCA9ICFuYW1lc3BhY2UgJiYgIWV2ZW50LmV4Y2x1c2l2ZTsKCgkJaGFuZGxlcnMg PSAoIGpRdWVyeS5kYXRhKHRoaXMsICJldmVudHMiKSB8fCB7fSApW2V2ZW50LnR5 cGVdOwoKCQlmb3IgKCB2YXIgaiBpbiBoYW5kbGVycyApIHsKCQkJdmFyIGhhbmRs ZXIgPSBoYW5kbGVyc1tqXTsKCgkJCS8vIEZpbHRlciB0aGUgZnVuY3Rpb25zIGJ5 IGNsYXNzCgkJCWlmICggYWxsIHx8IGhhbmRsZXIudHlwZSA9PSBuYW1lc3BhY2Ug KSB7CgkJCQkvLyBQYXNzIGluIGEgcmVmZXJlbmNlIHRvIHRoZSBoYW5kbGVyIGZ1 bmN0aW9uIGl0c2VsZgoJCQkJLy8gU28gdGhhdCB3ZSBjYW4gbGF0ZXIgcmVtb3Zl IGl0CgkJCQlldmVudC5oYW5kbGVyID0gaGFuZGxlcjsKCQkJCWV2ZW50LmRhdGEg PSBoYW5kbGVyLmRhdGE7CgoJCQkJcmV0ID0gaGFuZGxlci5hcHBseSggdGhpcywg YXJndW1lbnRzICk7CgoJCQkJaWYgKCB2YWwgIT09IGZhbHNlICkKCQkJCQl2YWwg PSByZXQ7CgoJCQkJaWYgKCByZXQgPT09IGZhbHNlICkgewoJCQkJCWV2ZW50LnBy ZXZlbnREZWZhdWx0KCk7CgkJCQkJZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CgkJ CQl9CgkJCX0KCQl9CgoJCXJldHVybiB2YWw7Cgl9LAoKCWZpeDogZnVuY3Rpb24o ZXZlbnQpIHsKCQlpZiAoIGV2ZW50W2V4cGFuZG9dID09IHRydWUgKQoJCQlyZXR1 cm4gZXZlbnQ7CgoJCS8vIHN0b3JlIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgZXZl bnQgb2JqZWN0CgkJLy8gYW5kICJjbG9uZSIgdG8gc2V0IHJlYWQtb25seSBwcm9w ZXJ0aWVzCgkJdmFyIG9yaWdpbmFsRXZlbnQgPSBldmVudDsKCQlldmVudCA9IHsg b3JpZ2luYWxFdmVudDogb3JpZ2luYWxFdmVudCB9OwoJCXZhciBwcm9wcyA9ICJh bHRLZXkgYXR0ckNoYW5nZSBhdHRyTmFtZSBidWJibGVzIGJ1dHRvbiBjYW5jZWxh YmxlIGNoYXJDb2RlIGNsaWVudFggY2xpZW50WSBjdHJsS2V5IGN1cnJlbnRUYXJn ZXQgZGF0YSBkZXRhaWwgZXZlbnRQaGFzZSBmcm9tRWxlbWVudCBoYW5kbGVyIGtl eUNvZGUgbWV0YUtleSBuZXdWYWx1ZSBvcmlnaW5hbFRhcmdldCBwYWdlWCBwYWdl WSBwcmV2VmFsdWUgcmVsYXRlZE5vZGUgcmVsYXRlZFRhcmdldCBzY3JlZW5YIHNj cmVlblkgc2hpZnRLZXkgc3JjRWxlbWVudCB0YXJnZXQgdGltZVN0YW1wIHRvRWxl bWVudCB0eXBlIHZpZXcgd2hlZWxEZWx0YSB3aGljaCIuc3BsaXQoIiAiKTsKCQlm b3IgKCB2YXIgaT1wcm9wcy5sZW5ndGg7IGk7IGktLSApCgkJCWV2ZW50WyBwcm9w c1tpXSBdID0gb3JpZ2luYWxFdmVudFsgcHJvcHNbaV0gXTsKCgkJLy8gTWFyayBp dCBhcyBmaXhlZAoJCWV2ZW50W2V4cGFuZG9dID0gdHJ1ZTsKCgkJLy8gYWRkIHBy ZXZlbnREZWZhdWx0IGFuZCBzdG9wUHJvcGFnYXRpb24gc2luY2UKCQkvLyB0aGV5 IHdpbGwgbm90IHdvcmsgb24gdGhlIGNsb25lCgkJZXZlbnQucHJldmVudERlZmF1 bHQgPSBmdW5jdGlvbigpIHsKCQkJLy8gaWYgcHJldmVudERlZmF1bHQgZXhpc3Rz IHJ1biBpdCBvbiB0aGUgb3JpZ2luYWwgZXZlbnQKCQkJaWYgKG9yaWdpbmFsRXZl bnQucHJldmVudERlZmF1bHQpCgkJCQlvcmlnaW5hbEV2ZW50LnByZXZlbnREZWZh dWx0KCk7CgkJCS8vIG90aGVyd2lzZSBzZXQgdGhlIHJldHVyblZhbHVlIHByb3Bl cnR5IG9mIHRoZSBvcmlnaW5hbCBldmVudCB0byBmYWxzZSAoSUUpCgkJCW9yaWdp bmFsRXZlbnQucmV0dXJuVmFsdWUgPSBmYWxzZTsKCQl9OwoJCWV2ZW50LnN0b3BQ cm9wYWdhdGlvbiA9IGZ1bmN0aW9uKCkgewoJCQkvLyBpZiBzdG9wUHJvcGFnYXRp b24gZXhpc3RzIHJ1biBpdCBvbiB0aGUgb3JpZ2luYWwgZXZlbnQKCQkJaWYgKG9y aWdpbmFsRXZlbnQuc3RvcFByb3BhZ2F0aW9uKQoJCQkJb3JpZ2luYWxFdmVudC5z dG9wUHJvcGFnYXRpb24oKTsKCQkJLy8gb3RoZXJ3aXNlIHNldCB0aGUgY2FuY2Vs QnViYmxlIHByb3BlcnR5IG9mIHRoZSBvcmlnaW5hbCBldmVudCB0byB0cnVlIChJ RSkKCQkJb3JpZ2luYWxFdmVudC5jYW5jZWxCdWJibGUgPSB0cnVlOwoJCX07CgoJ CS8vIEZpeCB0aW1lU3RhbXAKCQlldmVudC50aW1lU3RhbXAgPSBldmVudC50aW1l U3RhbXAgfHwgbm93KCk7CgoJCS8vIEZpeCB0YXJnZXQgcHJvcGVydHksIGlmIG5l Y2Vzc2FyeQoJCWlmICggIWV2ZW50LnRhcmdldCApCgkJCWV2ZW50LnRhcmdldCA9 IGV2ZW50LnNyY0VsZW1lbnQgfHwgZG9jdW1lbnQ7IC8vIEZpeGVzICMxOTI1IHdo ZXJlIHNyY0VsZW1lbnQgbWlnaHQgbm90IGJlIGRlZmluZWQgZWl0aGVyCgoJCS8v IGNoZWNrIGlmIHRhcmdldCBpcyBhIHRleHRub2RlIChzYWZhcmkpCgkJaWYgKCBl dmVudC50YXJnZXQubm9kZVR5cGUgPT0gMyApCgkJCWV2ZW50LnRhcmdldCA9IGV2 ZW50LnRhcmdldC5wYXJlbnROb2RlOwoKCQkvLyBBZGQgcmVsYXRlZFRhcmdldCwg aWYgbmVjZXNzYXJ5CgkJaWYgKCAhZXZlbnQucmVsYXRlZFRhcmdldCAmJiBldmVu dC5mcm9tRWxlbWVudCApCgkJCWV2ZW50LnJlbGF0ZWRUYXJnZXQgPSBldmVudC5m cm9tRWxlbWVudCA9PSBldmVudC50YXJnZXQgPyBldmVudC50b0VsZW1lbnQgOiBl dmVudC5mcm9tRWxlbWVudDsKCgkJLy8gQ2FsY3VsYXRlIHBhZ2VYL1kgaWYgbWlz c2luZyBhbmQgY2xpZW50WC9ZIGF2YWlsYWJsZQoJCWlmICggZXZlbnQucGFnZVgg PT0gbnVsbCAmJiBldmVudC5jbGllbnRYICE9IG51bGwgKSB7CgkJCXZhciBkb2Mg PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIGJvZHkgPSBkb2N1bWVudC5ib2R5 OwoJCQlldmVudC5wYWdlWCA9IGV2ZW50LmNsaWVudFggKyAoZG9jICYmIGRvYy5z Y3JvbGxMZWZ0IHx8IGJvZHkgJiYgYm9keS5zY3JvbGxMZWZ0IHx8IDApIC0gKGRv Yy5jbGllbnRMZWZ0IHx8IDApOwoJCQlldmVudC5wYWdlWSA9IGV2ZW50LmNsaWVu dFkgKyAoZG9jICYmIGRvYy5zY3JvbGxUb3AgfHwgYm9keSAmJiBib2R5LnNjcm9s bFRvcCB8fCAwKSAtIChkb2MuY2xpZW50VG9wIHx8IDApOwoJCX0KCgkJLy8gQWRk IHdoaWNoIGZvciBrZXkgZXZlbnRzCgkJaWYgKCAhZXZlbnQud2hpY2ggJiYgKChl dmVudC5jaGFyQ29kZSB8fCBldmVudC5jaGFyQ29kZSA9PT0gMCkgPyBldmVudC5j aGFyQ29kZSA6IGV2ZW50LmtleUNvZGUpICkKCQkJZXZlbnQud2hpY2ggPSBldmVu dC5jaGFyQ29kZSB8fCBldmVudC5rZXlDb2RlOwoKCQkvLyBBZGQgbWV0YUtleSB0 byBub24tTWFjIGJyb3dzZXJzICh1c2UgY3RybCBmb3IgUEMncyBhbmQgTWV0YSBm b3IgTWFjcykKCQlpZiAoICFldmVudC5tZXRhS2V5ICYmIGV2ZW50LmN0cmxLZXkg KQoJCQlldmVudC5tZXRhS2V5ID0gZXZlbnQuY3RybEtleTsKCgkJLy8gQWRkIHdo aWNoIGZvciBjbGljazogMSA9PSBsZWZ0OyAyID09IG1pZGRsZTsgMyA9PSByaWdo dAoJCS8vIE5vdGU6IGJ1dHRvbiBpcyBub3Qgbm9ybWFsaXplZCwgc28gZG9uJ3Qg dXNlIGl0CgkJaWYgKCAhZXZlbnQud2hpY2ggJiYgZXZlbnQuYnV0dG9uICkKCQkJ ZXZlbnQud2hpY2ggPSAoZXZlbnQuYnV0dG9uICYgMSA/IDEgOiAoIGV2ZW50LmJ1 dHRvbiAmIDIgPyAzIDogKCBldmVudC5idXR0b24gJiA0ID8gMiA6IDAgKSApKTsK CgkJcmV0dXJuIGV2ZW50OwoJfSwKCglwcm94eTogZnVuY3Rpb24oIGZuLCBwcm94 eSApewoJCS8vIFNldCB0aGUgZ3VpZCBvZiB1bmlxdWUgaGFuZGxlciB0byB0aGUg c2FtZSBvZiBvcmlnaW5hbCBoYW5kbGVyLCBzbyBpdCBjYW4gYmUgcmVtb3ZlZAoJ CXByb3h5Lmd1aWQgPSBmbi5ndWlkID0gZm4uZ3VpZCB8fCBwcm94eS5ndWlkIHx8 IHRoaXMuZ3VpZCsrOwoJCS8vIFNvIHByb3h5IGNhbiBiZSBkZWNsYXJlZCBhcyBh biBhcmd1bWVudAoJCXJldHVybiBwcm94eTsKCX0sCgoJc3BlY2lhbDogewoJCXJl YWR5OiB7CgkJCXNldHVwOiBmdW5jdGlvbigpIHsKCQkJCS8vIE1ha2Ugc3VyZSB0 aGUgcmVhZHkgZXZlbnQgaXMgc2V0dXAKCQkJCWJpbmRSZWFkeSgpOwoJCQkJcmV0 dXJuOwoJCQl9LAoKCQkJdGVhcmRvd246IGZ1bmN0aW9uKCkgeyByZXR1cm47IH0K CQl9LAoKCQltb3VzZWVudGVyOiB7CgkJCXNldHVwOiBmdW5jdGlvbigpIHsKCQkJ CWlmICggalF1ZXJ5LmJyb3dzZXIubXNpZSApIHJldHVybiBmYWxzZTsKCQkJCWpR dWVyeSh0aGlzKS5iaW5kKCJtb3VzZW92ZXIiLCBqUXVlcnkuZXZlbnQuc3BlY2lh bC5tb3VzZWVudGVyLmhhbmRsZXIpOwoJCQkJcmV0dXJuIHRydWU7CgkJCX0sCgoJ CQl0ZWFyZG93bjogZnVuY3Rpb24oKSB7CgkJCQlpZiAoIGpRdWVyeS5icm93c2Vy Lm1zaWUgKSByZXR1cm4gZmFsc2U7CgkJCQlqUXVlcnkodGhpcykudW5iaW5kKCJt b3VzZW92ZXIiLCBqUXVlcnkuZXZlbnQuc3BlY2lhbC5tb3VzZWVudGVyLmhhbmRs ZXIpOwoJCQkJcmV0dXJuIHRydWU7CgkJCX0sCgoJCQloYW5kbGVyOiBmdW5jdGlv bihldmVudCkgewoJCQkJLy8gSWYgd2UgYWN0dWFsbHkganVzdCBtb3VzZWQgb24g dG8gYSBzdWItZWxlbWVudCwgaWdub3JlIGl0CgkJCQlpZiAoIHdpdGhpbkVsZW1l bnQoZXZlbnQsIHRoaXMpICkgcmV0dXJuIHRydWU7CgkJCQkvLyBFeGVjdXRlIHRo ZSByaWdodCBoYW5kbGVycyBieSBzZXR0aW5nIHRoZSBldmVudCB0eXBlIHRvIG1v dXNlZW50ZXIKCQkJCWV2ZW50LnR5cGUgPSAibW91c2VlbnRlciI7CgkJCQlyZXR1 cm4galF1ZXJ5LmV2ZW50LmhhbmRsZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpOwoJ CQl9CgkJfSwKCgkJbW91c2VsZWF2ZTogewoJCQlzZXR1cDogZnVuY3Rpb24oKSB7 CgkJCQlpZiAoIGpRdWVyeS5icm93c2VyLm1zaWUgKSByZXR1cm4gZmFsc2U7CgkJ CQlqUXVlcnkodGhpcykuYmluZCgibW91c2VvdXQiLCBqUXVlcnkuZXZlbnQuc3Bl Y2lhbC5tb3VzZWxlYXZlLmhhbmRsZXIpOwoJCQkJcmV0dXJuIHRydWU7CgkJCX0s CgoJCQl0ZWFyZG93bjogZnVuY3Rpb24oKSB7CgkJCQlpZiAoIGpRdWVyeS5icm93 c2VyLm1zaWUgKSByZXR1cm4gZmFsc2U7CgkJCQlqUXVlcnkodGhpcykudW5iaW5k KCJtb3VzZW91dCIsIGpRdWVyeS5ldmVudC5zcGVjaWFsLm1vdXNlbGVhdmUuaGFu ZGxlcik7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfSwKCgkJCWhhbmRsZXI6IGZ1bmN0 aW9uKGV2ZW50KSB7CgkJCQkvLyBJZiB3ZSBhY3R1YWxseSBqdXN0IG1vdXNlZCBv biB0byBhIHN1Yi1lbGVtZW50LCBpZ25vcmUgaXQKCQkJCWlmICggd2l0aGluRWxl bWVudChldmVudCwgdGhpcykgKSByZXR1cm4gdHJ1ZTsKCQkJCS8vIEV4ZWN1dGUg dGhlIHJpZ2h0IGhhbmRsZXJzIGJ5IHNldHRpbmcgdGhlIGV2ZW50IHR5cGUgdG8g bW91c2VsZWF2ZQoJCQkJZXZlbnQudHlwZSA9ICJtb3VzZWxlYXZlIjsKCQkJCXJl dHVybiBqUXVlcnkuZXZlbnQuaGFuZGxlLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7 CgkJCX0KCQl9Cgl9Cn07CgpqUXVlcnkuZm4uZXh0ZW5kKHsKCWJpbmQ6IGZ1bmN0 aW9uKCB0eXBlLCBkYXRhLCBmbiApIHsKCQlyZXR1cm4gdHlwZSA9PSAidW5sb2Fk IiA/IHRoaXMub25lKHR5cGUsIGRhdGEsIGZuKSA6IHRoaXMuZWFjaChmdW5jdGlv bigpewoJCQlqUXVlcnkuZXZlbnQuYWRkKCB0aGlzLCB0eXBlLCBmbiB8fCBkYXRh LCBmbiAmJiBkYXRhICk7CgkJfSk7Cgl9LAoKCW9uZTogZnVuY3Rpb24oIHR5cGUs IGRhdGEsIGZuICkgewoJCXZhciBvbmUgPSBqUXVlcnkuZXZlbnQucHJveHkoIGZu IHx8IGRhdGEsIGZ1bmN0aW9uKGV2ZW50KSB7CgkJCWpRdWVyeSh0aGlzKS51bmJp bmQoZXZlbnQsIG9uZSk7CgkJCXJldHVybiAoZm4gfHwgZGF0YSkuYXBwbHkoIHRo aXMsIGFyZ3VtZW50cyApOwoJCX0pOwoJCXJldHVybiB0aGlzLmVhY2goZnVuY3Rp b24oKXsKCQkJalF1ZXJ5LmV2ZW50LmFkZCggdGhpcywgdHlwZSwgb25lLCBmbiAm JiBkYXRhKTsKCQl9KTsKCX0sCgoJdW5iaW5kOiBmdW5jdGlvbiggdHlwZSwgZm4g KSB7CgkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpewoJCQlqUXVlcnkuZXZl bnQucmVtb3ZlKCB0aGlzLCB0eXBlLCBmbiApOwoJCX0pOwoJfSwKCgl0cmlnZ2Vy OiBmdW5jdGlvbiggdHlwZSwgZGF0YSwgZm4gKSB7CgkJcmV0dXJuIHRoaXMuZWFj aChmdW5jdGlvbigpewoJCQlqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0 YSwgdGhpcywgdHJ1ZSwgZm4gKTsKCQl9KTsKCX0sCgoJdHJpZ2dlckhhbmRsZXI6 IGZ1bmN0aW9uKCB0eXBlLCBkYXRhLCBmbiApIHsKCQlyZXR1cm4gdGhpc1swXSAm JiBqUXVlcnkuZXZlbnQudHJpZ2dlciggdHlwZSwgZGF0YSwgdGhpc1swXSwgZmFs c2UsIGZuICk7Cgl9LAoKCXRvZ2dsZTogZnVuY3Rpb24oIGZuICkgewoJCS8vIFNh dmUgcmVmZXJlbmNlIHRvIGFyZ3VtZW50cyBmb3IgYWNjZXNzIGluIGNsb3N1cmUK CQl2YXIgYXJncyA9IGFyZ3VtZW50cywgaSA9IDE7CgoJCS8vIGxpbmsgYWxsIHRo ZSBmdW5jdGlvbnMsIHNvIGFueSBvZiB0aGVtIGNhbiB1bmJpbmQgdGhpcyBjbGlj ayBoYW5kbGVyCgkJd2hpbGUoIGkgPCBhcmdzLmxlbmd0aCApCgkJCWpRdWVyeS5l dmVudC5wcm94eSggZm4sIGFyZ3NbaSsrXSApOwoKCQlyZXR1cm4gdGhpcy5jbGlj ayggalF1ZXJ5LmV2ZW50LnByb3h5KCBmbiwgZnVuY3Rpb24oZXZlbnQpIHsKCQkJ Ly8gRmlndXJlIG91dCB3aGljaCBmdW5jdGlvbiB0byBleGVjdXRlCgkJCXRoaXMu bGFzdFRvZ2dsZSA9ICggdGhpcy5sYXN0VG9nZ2xlIHx8IDAgKSAlIGk7CgoJCQkv LyBNYWtlIHN1cmUgdGhhdCBjbGlja3Mgc3RvcAoJCQlldmVudC5wcmV2ZW50RGVm YXVsdCgpOwoKCQkJLy8gYW5kIGV4ZWN1dGUgdGhlIGZ1bmN0aW9uCgkJCXJldHVy biBhcmdzWyB0aGlzLmxhc3RUb2dnbGUrKyBdLmFwcGx5KCB0aGlzLCBhcmd1bWVu dHMgKSB8fCBmYWxzZTsKCQl9KSk7Cgl9LAoKCWhvdmVyOiBmdW5jdGlvbihmbk92 ZXIsIGZuT3V0KSB7CgkJcmV0dXJuIHRoaXMuYmluZCgnbW91c2VlbnRlcicsIGZu T3ZlcikuYmluZCgnbW91c2VsZWF2ZScsIGZuT3V0KTsKCX0sCgoJcmVhZHk6IGZ1 bmN0aW9uKGZuKSB7CgkJLy8gQXR0YWNoIHRoZSBsaXN0ZW5lcnMKCQliaW5kUmVh ZHkoKTsKCgkJLy8gSWYgdGhlIERPTSBpcyBhbHJlYWR5IHJlYWR5CgkJaWYgKCBq UXVlcnkuaXNSZWFkeSApCgkJCS8vIEV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGltbWVk aWF0ZWx5CgkJCWZuLmNhbGwoIGRvY3VtZW50LCBqUXVlcnkgKTsKCgkJLy8gT3Ro ZXJ3aXNlLCByZW1lbWJlciB0aGUgZnVuY3Rpb24gZm9yIGxhdGVyCgkJZWxzZQoJ CQkvLyBBZGQgdGhlIGZ1bmN0aW9uIHRvIHRoZSB3YWl0IGxpc3QKCQkJalF1ZXJ5 LnJlYWR5TGlzdC5wdXNoKCBmdW5jdGlvbigpIHsgcmV0dXJuIGZuLmNhbGwodGhp cywgalF1ZXJ5KTsgfSApOwoKCQlyZXR1cm4gdGhpczsKCX0KfSk7CgpqUXVlcnku ZXh0ZW5kKHsKCWlzUmVhZHk6IGZhbHNlLAoJcmVhZHlMaXN0OiBbXSwKCS8vIEhh bmRsZSB3aGVuIHRoZSBET00gaXMgcmVhZHkKCXJlYWR5OiBmdW5jdGlvbigpIHsK CQkvLyBNYWtlIHN1cmUgdGhhdCB0aGUgRE9NIGlzIG5vdCBhbHJlYWR5IGxvYWRl ZAoJCWlmICggIWpRdWVyeS5pc1JlYWR5ICkgewoJCQkvLyBSZW1lbWJlciB0aGF0 IHRoZSBET00gaXMgcmVhZHkKCQkJalF1ZXJ5LmlzUmVhZHkgPSB0cnVlOwoKCQkJ Ly8gSWYgdGhlcmUgYXJlIGZ1bmN0aW9ucyBib3VuZCwgdG8gZXhlY3V0ZQoJCQlp ZiAoIGpRdWVyeS5yZWFkeUxpc3QgKSB7CgkJCQkvLyBFeGVjdXRlIGFsbCBvZiB0 aGVtCgkJCQlqUXVlcnkuZWFjaCggalF1ZXJ5LnJlYWR5TGlzdCwgZnVuY3Rpb24o KXsKCQkJCQl0aGlzLmNhbGwoIGRvY3VtZW50ICk7CgkJCQl9KTsKCgkJCQkvLyBS ZXNldCB0aGUgbGlzdCBvZiBmdW5jdGlvbnMKCQkJCWpRdWVyeS5yZWFkeUxpc3Qg PSBudWxsOwoJCQl9CgoJCQkvLyBUcmlnZ2VyIGFueSBib3VuZCByZWFkeSBldmVu dHMKCQkJalF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VySGFuZGxlcigicmVhZHkiKTsK CQl9Cgl9Cn0pOwoKdmFyIHJlYWR5Qm91bmQgPSBmYWxzZTsKCmZ1bmN0aW9uIGJp bmRSZWFkeSgpewoJaWYgKCByZWFkeUJvdW5kICkgcmV0dXJuOwoJcmVhZHlCb3Vu ZCA9IHRydWU7CgoJLy8gTW96aWxsYSwgT3BlcmEgKHNlZSBmdXJ0aGVyIGJlbG93 IGZvciBpdCkgYW5kIHdlYmtpdCBuaWdodGxpZXMgY3VycmVudGx5IHN1cHBvcnQg dGhpcyBldmVudAoJaWYgKCBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyICYmICFq UXVlcnkuYnJvd3Nlci5vcGVyYSkKCQkvLyBVc2UgdGhlIGhhbmR5IGV2ZW50IGNh bGxiYWNrCgkJZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggIkRPTUNvbnRlbnRM b2FkZWQiLCBqUXVlcnkucmVhZHksIGZhbHNlICk7CgoJLy8gSWYgSUUgaXMgdXNl ZCBhbmQgaXMgbm90IGluIGEgZnJhbWUKCS8vIENvbnRpbnVhbGx5IGNoZWNrIHRv IHNlZSBpZiB0aGUgZG9jdW1lbnQgaXMgcmVhZHkKCWlmICggalF1ZXJ5LmJyb3dz ZXIubXNpZSAmJiB3aW5kb3cgPT0gdG9wICkgKGZ1bmN0aW9uKCl7CgkJaWYgKGpR dWVyeS5pc1JlYWR5KSByZXR1cm47CgkJdHJ5IHsKCQkJLy8gSWYgSUUgaXMgdXNl ZCwgdXNlIHRoZSB0cmljayBieSBEaWVnbyBQZXJpbmkKCQkJLy8gaHR0cDovL2ph dmFzY3JpcHQubndib3guY29tL0lFQ29udGVudExvYWRlZC8KCQkJZG9jdW1lbnQu ZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0Iik7CgkJfSBjYXRjaCggZXJy b3IgKSB7CgkJCXNldFRpbWVvdXQoIGFyZ3VtZW50cy5jYWxsZWUsIDAgKTsKCQkJ cmV0dXJuOwoJCX0KCQkvLyBhbmQgZXhlY3V0ZSBhbnkgd2FpdGluZyBmdW5jdGlv bnMKCQlqUXVlcnkucmVhZHkoKTsKCX0pKCk7CgoJaWYgKCBqUXVlcnkuYnJvd3Nl ci5vcGVyYSApCgkJZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lciggIkRPTUNvbnRl bnRMb2FkZWQiLCBmdW5jdGlvbiAoKSB7CgkJCWlmIChqUXVlcnkuaXNSZWFkeSkg cmV0dXJuOwoJCQlmb3IgKHZhciBpID0gMDsgaSA8IGRvY3VtZW50LnN0eWxlU2hl ZXRzLmxlbmd0aDsgaSsrKQoJCQkJaWYgKGRvY3VtZW50LnN0eWxlU2hlZXRzW2ld LmRpc2FibGVkKSB7CgkJCQkJc2V0VGltZW91dCggYXJndW1lbnRzLmNhbGxlZSwg MCApOwoJCQkJCXJldHVybjsKCQkJCX0KCQkJLy8gYW5kIGV4ZWN1dGUgYW55IHdh aXRpbmcgZnVuY3Rpb25zCgkJCWpRdWVyeS5yZWFkeSgpOwoJCX0sIGZhbHNlKTsK CglpZiAoIGpRdWVyeS5icm93c2VyLnNhZmFyaSApIHsKCQl2YXIgbnVtU3R5bGVz OwoJCShmdW5jdGlvbigpewoJCQlpZiAoalF1ZXJ5LmlzUmVhZHkpIHJldHVybjsK CQkJaWYgKCBkb2N1bWVudC5yZWFkeVN0YXRlICE9ICJsb2FkZWQiICYmIGRvY3Vt ZW50LnJlYWR5U3RhdGUgIT0gImNvbXBsZXRlIiApIHsKCQkJCXNldFRpbWVvdXQo IGFyZ3VtZW50cy5jYWxsZWUsIDAgKTsKCQkJCXJldHVybjsKCQkJfQoJCQlpZiAo IG51bVN0eWxlcyA9PT0gdW5kZWZpbmVkICkKCQkJCW51bVN0eWxlcyA9IGpRdWVy eSgic3R5bGUsIGxpbmtbcmVsPXN0eWxlc2hlZXRdIikubGVuZ3RoOwoJCQlpZiAo IGRvY3VtZW50LnN0eWxlU2hlZXRzLmxlbmd0aCAhPSBudW1TdHlsZXMgKSB7CgkJ CQlzZXRUaW1lb3V0KCBhcmd1bWVudHMuY2FsbGVlLCAwICk7CgkJCQlyZXR1cm47 CgkJCX0KCQkJLy8gYW5kIGV4ZWN1dGUgYW55IHdhaXRpbmcgZnVuY3Rpb25zCgkJ CWpRdWVyeS5yZWFkeSgpOwoJCX0pKCk7Cgl9CgoJLy8gQSBmYWxsYmFjayB0byB3 aW5kb3cub25sb2FkLCB0aGF0IHdpbGwgYWx3YXlzIHdvcmsKCWpRdWVyeS5ldmVu dC5hZGQoIHdpbmRvdywgImxvYWQiLCBqUXVlcnkucmVhZHkgKTsKfQoKalF1ZXJ5 LmVhY2goICgiYmx1cixmb2N1cyxsb2FkLHJlc2l6ZSxzY3JvbGwsdW5sb2FkLGNs aWNrLGRibGNsaWNrLCIgKwoJIm1vdXNlZG93bixtb3VzZXVwLG1vdXNlbW92ZSxt b3VzZW92ZXIsbW91c2VvdXQsY2hhbmdlLHNlbGVjdCwiICsKCSJzdWJtaXQsa2V5 ZG93bixrZXlwcmVzcyxrZXl1cCxlcnJvciIpLnNwbGl0KCIsIiksIGZ1bmN0aW9u KGksIG5hbWUpewoKCS8vIEhhbmRsZSBldmVudCBiaW5kaW5nCglqUXVlcnkuZm5b bmFtZV0gPSBmdW5jdGlvbihmbil7CgkJcmV0dXJuIGZuID8gdGhpcy5iaW5kKG5h bWUsIGZuKSA6IHRoaXMudHJpZ2dlcihuYW1lKTsKCX07Cn0pOwoKLy8gQ2hlY2tz IGlmIGFuIGV2ZW50IGhhcHBlbmVkIG9uIGFuIGVsZW1lbnQgd2l0aGluIGFub3Ro ZXIgZWxlbWVudAovLyBVc2VkIGluIGpRdWVyeS5ldmVudC5zcGVjaWFsLm1vdXNl ZW50ZXIgYW5kIG1vdXNlbGVhdmUgaGFuZGxlcnMKdmFyIHdpdGhpbkVsZW1lbnQg PSBmdW5jdGlvbihldmVudCwgZWxlbSkgewoJLy8gQ2hlY2sgaWYgbW91c2Uob3Zl cnxvdXQpIGFyZSBzdGlsbCB3aXRoaW4gdGhlIHNhbWUgcGFyZW50IGVsZW1lbnQK CXZhciBwYXJlbnQgPSBldmVudC5yZWxhdGVkVGFyZ2V0OwoJLy8gVHJhdmVyc2Ug dXAgdGhlIHRyZWUKCXdoaWxlICggcGFyZW50ICYmIHBhcmVudCAhPSBlbGVtICkg dHJ5IHsgcGFyZW50ID0gcGFyZW50LnBhcmVudE5vZGU7IH0gY2F0Y2goZXJyb3Ip IHsgcGFyZW50ID0gZWxlbTsgfQoJLy8gUmV0dXJuIHRydWUgaWYgd2UgYWN0dWFs bHkganVzdCBtb3VzZWQgb24gdG8gYSBzdWItZWxlbWVudAoJcmV0dXJuIHBhcmVu dCA9PSBlbGVtOwp9OwoKLy8gUHJldmVudCBtZW1vcnkgbGVha3MgaW4gSUUKLy8g QW5kIHByZXZlbnQgZXJyb3JzIG9uIHJlZnJlc2ggd2l0aCBldmVudHMgbGlrZSBt b3VzZW92ZXIgaW4gb3RoZXIgYnJvd3NlcnMKLy8gV2luZG93IGlzbid0IGluY2x1 ZGVkIHNvIGFzIG5vdCB0byB1bmJpbmQgZXhpc3RpbmcgdW5sb2FkIGV2ZW50cwpq UXVlcnkod2luZG93KS5iaW5kKCJ1bmxvYWQiLCBmdW5jdGlvbigpIHsKCWpRdWVy eSgiKiIpLmFkZChkb2N1bWVudCkudW5iaW5kKCk7Cn0pOwpqUXVlcnkuZm4uZXh0 ZW5kKHsKCS8vIEtlZXAgYSBjb3B5IG9mIHRoZSBvbGQgbG9hZAoJX2xvYWQ6IGpR dWVyeS5mbi5sb2FkLAoKCWxvYWQ6IGZ1bmN0aW9uKCB1cmwsIHBhcmFtcywgY2Fs bGJhY2sgKSB7CgkJaWYgKCB0eXBlb2YgdXJsICE9ICdzdHJpbmcnICkKCQkJcmV0 dXJuIHRoaXMuX2xvYWQoIHVybCApOwoKCQl2YXIgb2ZmID0gdXJsLmluZGV4T2Yo IiAiKTsKCQlpZiAoIG9mZiA+PSAwICkgewoJCQl2YXIgc2VsZWN0b3IgPSB1cmwu c2xpY2Uob2ZmLCB1cmwubGVuZ3RoKTsKCQkJdXJsID0gdXJsLnNsaWNlKDAsIG9m Zik7CgkJfQoKCQljYWxsYmFjayA9IGNhbGxiYWNrIHx8IGZ1bmN0aW9uKCl7fTsK CgkJLy8gRGVmYXVsdCB0byBhIEdFVCByZXF1ZXN0CgkJdmFyIHR5cGUgPSAiR0VU IjsKCgkJLy8gSWYgdGhlIHNlY29uZCBwYXJhbWV0ZXIgd2FzIHByb3ZpZGVkCgkJ aWYgKCBwYXJhbXMgKQoJCQkvLyBJZiBpdCdzIGEgZnVuY3Rpb24KCQkJaWYgKCBq UXVlcnkuaXNGdW5jdGlvbiggcGFyYW1zICkgKSB7CgkJCQkvLyBXZSBhc3N1bWUg dGhhdCBpdCdzIHRoZSBjYWxsYmFjawoJCQkJY2FsbGJhY2sgPSBwYXJhbXM7CgkJ CQlwYXJhbXMgPSBudWxsOwoKCQkJLy8gT3RoZXJ3aXNlLCBidWlsZCBhIHBhcmFt IHN0cmluZwoJCQl9IGVsc2UgewoJCQkJcGFyYW1zID0galF1ZXJ5LnBhcmFtKCBw YXJhbXMgKTsKCQkJCXR5cGUgPSAiUE9TVCI7CgkJCX0KCgkJdmFyIHNlbGYgPSB0 aGlzOwoKCQkvLyBSZXF1ZXN0IHRoZSByZW1vdGUgZG9jdW1lbnQKCQlqUXVlcnku YWpheCh7CgkJCXVybDogdXJsLAoJCQl0eXBlOiB0eXBlLAoJCQlkYXRhVHlwZTog Imh0bWwiLAoJCQlkYXRhOiBwYXJhbXMsCgkJCWNvbXBsZXRlOiBmdW5jdGlvbihy ZXMsIHN0YXR1cyl7CgkJCQkvLyBJZiBzdWNjZXNzZnVsLCBpbmplY3QgdGhlIEhU TUwgaW50byBhbGwgdGhlIG1hdGNoZWQgZWxlbWVudHMKCQkJCWlmICggc3RhdHVz ID09ICJzdWNjZXNzIiB8fCBzdGF0dXMgPT0gIm5vdG1vZGlmaWVkIiApCgkJCQkJ Ly8gU2VlIGlmIGEgc2VsZWN0b3Igd2FzIHNwZWNpZmllZAoJCQkJCXNlbGYuaHRt bCggc2VsZWN0b3IgPwoJCQkJCQkvLyBDcmVhdGUgYSBkdW1teSBkaXYgdG8gaG9s ZCB0aGUgcmVzdWx0cwoJCQkJCQlqUXVlcnkoIjxkaXYvPiIpCgkJCQkJCQkvLyBp bmplY3QgdGhlIGNvbnRlbnRzIG9mIHRoZSBkb2N1bWVudCBpbiwgcmVtb3Zpbmcg dGhlIHNjcmlwdHMKCQkJCQkJCS8vIHRvIGF2b2lkIGFueSAnUGVybWlzc2lvbiBE ZW5pZWQnIGVycm9ycyBpbiBJRQoJCQkJCQkJLmFwcGVuZChyZXMucmVzcG9uc2VU ZXh0LnJlcGxhY2UoLzxzY3JpcHQoLnxccykqP1wvc2NyaXB0Pi9nLCAiIikpCgoJ CQkJCQkJLy8gTG9jYXRlIHRoZSBzcGVjaWZpZWQgZWxlbWVudHMKCQkJCQkJCS5m aW5kKHNlbGVjdG9yKSA6CgoJCQkJCQkvLyBJZiBub3QsIGp1c3QgaW5qZWN0IHRo ZSBmdWxsIHJlc3VsdAoJCQkJCQlyZXMucmVzcG9uc2VUZXh0ICk7CgoJCQkJc2Vs Zi5lYWNoKCBjYWxsYmFjaywgW3Jlcy5yZXNwb25zZVRleHQsIHN0YXR1cywgcmVz XSApOwoJCQl9CgkJfSk7CgkJcmV0dXJuIHRoaXM7Cgl9LAoKCXNlcmlhbGl6ZTog ZnVuY3Rpb24oKSB7CgkJcmV0dXJuIGpRdWVyeS5wYXJhbSh0aGlzLnNlcmlhbGl6 ZUFycmF5KCkpOwoJfSwKCXNlcmlhbGl6ZUFycmF5OiBmdW5jdGlvbigpIHsKCQly ZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXsKCQkJcmV0dXJuIGpRdWVyeS5ub2Rl TmFtZSh0aGlzLCAiZm9ybSIpID8KCQkJCWpRdWVyeS5tYWtlQXJyYXkodGhpcy5l bGVtZW50cykgOiB0aGlzOwoJCX0pCgkJLmZpbHRlcihmdW5jdGlvbigpewoJCQly ZXR1cm4gdGhpcy5uYW1lICYmICF0aGlzLmRpc2FibGVkICYmCgkJCQkodGhpcy5j aGVja2VkIHx8IC9zZWxlY3R8dGV4dGFyZWEvaS50ZXN0KHRoaXMubm9kZU5hbWUp IHx8CgkJCQkJL3RleHR8aGlkZGVufHBhc3N3b3JkL2kudGVzdCh0aGlzLnR5cGUp KTsKCQl9KQoJCS5tYXAoZnVuY3Rpb24oaSwgZWxlbSl7CgkJCXZhciB2YWwgPSBq UXVlcnkodGhpcykudmFsKCk7CgkJCXJldHVybiB2YWwgPT0gbnVsbCA/IG51bGwg OgoJCQkJdmFsLmNvbnN0cnVjdG9yID09IEFycmF5ID8KCQkJCQlqUXVlcnkubWFw KCB2YWwsIGZ1bmN0aW9uKHZhbCwgaSl7CgkJCQkJCXJldHVybiB7bmFtZTogZWxl bS5uYW1lLCB2YWx1ZTogdmFsfTsKCQkJCQl9KSA6CgkJCQkJe25hbWU6IGVsZW0u bmFtZSwgdmFsdWU6IHZhbH07CgkJfSkuZ2V0KCk7Cgl9Cn0pOwoKLy8gQXR0YWNo IGEgYnVuY2ggb2YgZnVuY3Rpb25zIGZvciBoYW5kbGluZyBjb21tb24gQUpBWCBl dmVudHMKalF1ZXJ5LmVhY2goICJhamF4U3RhcnQsYWpheFN0b3AsYWpheENvbXBs ZXRlLGFqYXhFcnJvcixhamF4U3VjY2VzcyxhamF4U2VuZCIuc3BsaXQoIiwiKSwg ZnVuY3Rpb24oaSxvKXsKCWpRdWVyeS5mbltvXSA9IGZ1bmN0aW9uKGYpewoJCXJl dHVybiB0aGlzLmJpbmQobywgZik7Cgl9Owp9KTsKCnZhciBqc2MgPSBub3coKTsK CmpRdWVyeS5leHRlbmQoewoJZ2V0OiBmdW5jdGlvbiggdXJsLCBkYXRhLCBjYWxs YmFjaywgdHlwZSApIHsKCQkvLyBzaGlmdCBhcmd1bWVudHMgaWYgZGF0YSBhcmd1 bWVudCB3YXMgb21taXRlZAoJCWlmICggalF1ZXJ5LmlzRnVuY3Rpb24oIGRhdGEg KSApIHsKCQkJY2FsbGJhY2sgPSBkYXRhOwoJCQlkYXRhID0gbnVsbDsKCQl9CgoJ CXJldHVybiBqUXVlcnkuYWpheCh7CgkJCXR5cGU6ICJHRVQiLAoJCQl1cmw6IHVy bCwKCQkJZGF0YTogZGF0YSwKCQkJc3VjY2VzczogY2FsbGJhY2ssCgkJCWRhdGFU eXBlOiB0eXBlCgkJfSk7Cgl9LAoKCWdldFNjcmlwdDogZnVuY3Rpb24oIHVybCwg Y2FsbGJhY2sgKSB7CgkJcmV0dXJuIGpRdWVyeS5nZXQodXJsLCBudWxsLCBjYWxs YmFjaywgInNjcmlwdCIpOwoJfSwKCglnZXRKU09OOiBmdW5jdGlvbiggdXJsLCBk YXRhLCBjYWxsYmFjayApIHsKCQlyZXR1cm4galF1ZXJ5LmdldCh1cmwsIGRhdGEs IGNhbGxiYWNrLCAianNvbiIpOwoJfSwKCglwb3N0OiBmdW5jdGlvbiggdXJsLCBk YXRhLCBjYWxsYmFjaywgdHlwZSApIHsKCQlpZiAoIGpRdWVyeS5pc0Z1bmN0aW9u KCBkYXRhICkgKSB7CgkJCWNhbGxiYWNrID0gZGF0YTsKCQkJZGF0YSA9IHt9OwoJ CX0KCgkJcmV0dXJuIGpRdWVyeS5hamF4KHsKCQkJdHlwZTogIlBPU1QiLAoJCQl1 cmw6IHVybCwKCQkJZGF0YTogZGF0YSwKCQkJc3VjY2VzczogY2FsbGJhY2ssCgkJ CWRhdGFUeXBlOiB0eXBlCgkJfSk7Cgl9LAoKCWFqYXhTZXR1cDogZnVuY3Rpb24o IHNldHRpbmdzICkgewoJCWpRdWVyeS5leHRlbmQoIGpRdWVyeS5hamF4U2V0dGlu Z3MsIHNldHRpbmdzICk7Cgl9LAoKCWFqYXhTZXR0aW5nczogewoJCXVybDogbG9j YXRpb24uaHJlZiwKCQlnbG9iYWw6IHRydWUsCgkJdHlwZTogIkdFVCIsCgkJdGlt ZW91dDogMCwKCQljb250ZW50VHlwZTogImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0t dXJsZW5jb2RlZCIsCgkJcHJvY2Vzc0RhdGE6IHRydWUsCgkJYXN5bmM6IHRydWUs CgkJZGF0YTogbnVsbCwKCQl1c2VybmFtZTogbnVsbCwKCQlwYXNzd29yZDogbnVs bCwKCQlhY2NlcHRzOiB7CgkJCXhtbDogImFwcGxpY2F0aW9uL3htbCwgdGV4dC94 bWwiLAoJCQlodG1sOiAidGV4dC9odG1sIiwKCQkJc2NyaXB0OiAidGV4dC9qYXZh c2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiwKCQkJanNvbjogImFwcGxp Y2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCIsCgkJCXRleHQ6ICJ0ZXh0L3Bs YWluIiwKCQkJX2RlZmF1bHQ6ICIqLyoiCgkJfQoJfSwKCgkvLyBMYXN0LU1vZGlm aWVkIGhlYWRlciBjYWNoZSBmb3IgbmV4dCByZXF1ZXN0CglsYXN0TW9kaWZpZWQ6 IHt9LAoKCWFqYXg6IGZ1bmN0aW9uKCBzICkgewoJCS8vIEV4dGVuZCB0aGUgc2V0 dGluZ3MsIGJ1dCByZS1leHRlbmQgJ3MnIHNvIHRoYXQgaXQgY2FuIGJlCgkJLy8g Y2hlY2tlZCBhZ2FpbiBsYXRlciAoaW4gdGhlIHRlc3Qgc3VpdGUsIHNwZWNpZmlj YWxseSkKCQlzID0galF1ZXJ5LmV4dGVuZCh0cnVlLCBzLCBqUXVlcnkuZXh0ZW5k KHRydWUsIHt9LCBqUXVlcnkuYWpheFNldHRpbmdzLCBzKSk7CgoJCXZhciBqc29u cCwganNyZSA9IC89XD8oJnwkKS9nLCBzdGF0dXMsIGRhdGEsCgkJCXR5cGUgPSBz LnR5cGUudG9VcHBlckNhc2UoKTsKCgkJLy8gY29udmVydCBkYXRhIGlmIG5vdCBh bHJlYWR5IGEgc3RyaW5nCgkJaWYgKCBzLmRhdGEgJiYgcy5wcm9jZXNzRGF0YSAm JiB0eXBlb2Ygcy5kYXRhICE9ICJzdHJpbmciICkKCQkJcy5kYXRhID0galF1ZXJ5 LnBhcmFtKHMuZGF0YSk7CgoJCS8vIEhhbmRsZSBKU09OUCBQYXJhbWV0ZXIgQ2Fs bGJhY2tzCgkJaWYgKCBzLmRhdGFUeXBlID09ICJqc29ucCIgKSB7CgkJCWlmICgg dHlwZSA9PSAiR0VUIiApIHsKCQkJCWlmICggIXMudXJsLm1hdGNoKGpzcmUpICkK CQkJCQlzLnVybCArPSAocy51cmwubWF0Y2goL1w/LykgPyAiJiIgOiAiPyIpICsg KHMuanNvbnAgfHwgImNhbGxiYWNrIikgKyAiPT8iOwoJCQl9IGVsc2UgaWYgKCAh cy5kYXRhIHx8ICFzLmRhdGEubWF0Y2goanNyZSkgKQoJCQkJcy5kYXRhID0gKHMu ZGF0YSA/IHMuZGF0YSArICImIiA6ICIiKSArIChzLmpzb25wIHx8ICJjYWxsYmFj ayIpICsgIj0/IjsKCQkJcy5kYXRhVHlwZSA9ICJqc29uIjsKCQl9CgoJCS8vIEJ1 aWxkIHRlbXBvcmFyeSBKU09OUCBmdW5jdGlvbgoJCWlmICggcy5kYXRhVHlwZSA9 PSAianNvbiIgJiYgKHMuZGF0YSAmJiBzLmRhdGEubWF0Y2goanNyZSkgfHwgcy51 cmwubWF0Y2goanNyZSkpICkgewoJCQlqc29ucCA9ICJqc29ucCIgKyBqc2MrKzsK CgkJCS8vIFJlcGxhY2UgdGhlID0/IHNlcXVlbmNlIGJvdGggaW4gdGhlIHF1ZXJ5 IHN0cmluZyBhbmQgdGhlIGRhdGEKCQkJaWYgKCBzLmRhdGEgKQoJCQkJcy5kYXRh ID0gKHMuZGF0YSArICIiKS5yZXBsYWNlKGpzcmUsICI9IiArIGpzb25wICsgIiQx Iik7CgkJCXMudXJsID0gcy51cmwucmVwbGFjZShqc3JlLCAiPSIgKyBqc29ucCAr ICIkMSIpOwoKCQkJLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUKCQkJLy8gdGhhdCBh IEpTT05QIHN0eWxlIHJlc3BvbnNlIGlzIGV4ZWN1dGVkIHByb3Blcmx5CgkJCXMu ZGF0YVR5cGUgPSAic2NyaXB0IjsKCgkJCS8vIEhhbmRsZSBKU09OUC1zdHlsZSBs b2FkaW5nCgkJCXdpbmRvd1sganNvbnAgXSA9IGZ1bmN0aW9uKHRtcCl7CgkJCQlk YXRhID0gdG1wOwoJCQkJc3VjY2VzcygpOwoJCQkJY29tcGxldGUoKTsKCQkJCS8v IEdhcmJhZ2UgY29sbGVjdAoJCQkJd2luZG93WyBqc29ucCBdID0gdW5kZWZpbmVk OwoJCQkJdHJ5eyBkZWxldGUgd2luZG93WyBqc29ucCBdOyB9IGNhdGNoKGUpe30K CQkJCWlmICggaGVhZCApCgkJCQkJaGVhZC5yZW1vdmVDaGlsZCggc2NyaXB0ICk7 CgkJCX07CgkJfQoKCQlpZiAoIHMuZGF0YVR5cGUgPT0gInNjcmlwdCIgJiYgcy5j YWNoZSA9PSBudWxsICkKCQkJcy5jYWNoZSA9IGZhbHNlOwoKCQlpZiAoIHMuY2Fj aGUgPT09IGZhbHNlICYmIHR5cGUgPT0gIkdFVCIgKSB7CgkJCXZhciB0cyA9IG5v dygpOwoJCQkvLyB0cnkgcmVwbGFjaW5nIF89IGlmIGl0IGlzIHRoZXJlCgkJCXZh ciByZXQgPSBzLnVybC5yZXBsYWNlKC8oXD98JilfPS4qPygmfCQpLywgIiQxXz0i ICsgdHMgKyAiJDIiKTsKCQkJLy8gaWYgbm90aGluZyB3YXMgcmVwbGFjZWQsIGFk ZCB0aW1lc3RhbXAgdG8gdGhlIGVuZAoJCQlzLnVybCA9IHJldCArICgocmV0ID09 IHMudXJsKSA/IChzLnVybC5tYXRjaCgvXD8vKSA/ICImIiA6ICI/IikgKyAiXz0i ICsgdHMgOiAiIik7CgkJfQoKCQkvLyBJZiBkYXRhIGlzIGF2YWlsYWJsZSwgYXBw ZW5kIGRhdGEgdG8gdXJsIGZvciBnZXQgcmVxdWVzdHMKCQlpZiAoIHMuZGF0YSAm JiB0eXBlID09ICJHRVQiICkgewoJCQlzLnVybCArPSAocy51cmwubWF0Y2goL1w/ LykgPyAiJiIgOiAiPyIpICsgcy5kYXRhOwoKCQkJLy8gSUUgbGlrZXMgdG8gc2Vu ZCBib3RoIGdldCBhbmQgcG9zdCBkYXRhLCBwcmV2ZW50IHRoaXMKCQkJcy5kYXRh ID0gbnVsbDsKCQl9CgoJCS8vIFdhdGNoIGZvciBhIG5ldyBzZXQgb2YgcmVxdWVz dHMKCQlpZiAoIHMuZ2xvYmFsICYmICEgalF1ZXJ5LmFjdGl2ZSsrICkKCQkJalF1 ZXJ5LmV2ZW50LnRyaWdnZXIoICJhamF4U3RhcnQiICk7CgoJCS8vIE1hdGNoZXMg YW4gYWJzb2x1dGUgVVJMLCBhbmQgc2F2ZXMgdGhlIGRvbWFpbgoJCXZhciByZW1v dGUgPSAvXig/Olx3KzopP1wvXC8oW15cLz8jXSspLzsKCgkJLy8gSWYgd2UncmUg cmVxdWVzdGluZyBhIHJlbW90ZSBkb2N1bWVudAoJCS8vIGFuZCB0cnlpbmcgdG8g bG9hZCBKU09OIG9yIFNjcmlwdCB3aXRoIGEgR0VUCgkJaWYgKCBzLmRhdGFUeXBl ID09ICJzY3JpcHQiICYmIHR5cGUgPT0gIkdFVCIKCQkJCSYmIHJlbW90ZS50ZXN0 KHMudXJsKSAmJiByZW1vdGUuZXhlYyhzLnVybClbMV0gIT0gbG9jYXRpb24uaG9z dCApewoJCQl2YXIgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l KCJoZWFkIilbMF07CgkJCXZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVt ZW50KCJzY3JpcHQiKTsKCQkJc2NyaXB0LnNyYyA9IHMudXJsOwoJCQlpZiAocy5z Y3JpcHRDaGFyc2V0KQoJCQkJc2NyaXB0LmNoYXJzZXQgPSBzLnNjcmlwdENoYXJz ZXQ7CgoJCQkvLyBIYW5kbGUgU2NyaXB0IGxvYWRpbmcKCQkJaWYgKCAhanNvbnAg KSB7CgkJCQl2YXIgZG9uZSA9IGZhbHNlOwoKCQkJCS8vIEF0dGFjaCBoYW5kbGVy cyBmb3IgYWxsIGJyb3dzZXJzCgkJCQlzY3JpcHQub25sb2FkID0gc2NyaXB0Lm9u cmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCl7CgkJCQkJaWYgKCAhZG9uZSAm JiAoIXRoaXMucmVhZHlTdGF0ZSB8fAoJCQkJCQkJdGhpcy5yZWFkeVN0YXRlID09 ICJsb2FkZWQiIHx8IHRoaXMucmVhZHlTdGF0ZSA9PSAiY29tcGxldGUiKSApIHsK CQkJCQkJZG9uZSA9IHRydWU7CgkJCQkJCXN1Y2Nlc3MoKTsKCQkJCQkJY29tcGxl dGUoKTsKCQkJCQkJaGVhZC5yZW1vdmVDaGlsZCggc2NyaXB0ICk7CgkJCQkJfQoJ CQkJfTsKCQkJfQoKCQkJaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpOwoKCQkJLy8g V2UgaGFuZGxlIGV2ZXJ5dGhpbmcgdXNpbmcgdGhlIHNjcmlwdCBlbGVtZW50IGlu amVjdGlvbgoJCQlyZXR1cm4gdW5kZWZpbmVkOwoJCX0KCgkJdmFyIHJlcXVlc3RE b25lID0gZmFsc2U7CgoJCS8vIENyZWF0ZSB0aGUgcmVxdWVzdCBvYmplY3Q7IE1p Y3Jvc29mdCBmYWlsZWQgdG8gcHJvcGVybHkKCQkvLyBpbXBsZW1lbnQgdGhlIFhN TEh0dHBSZXF1ZXN0IGluIElFNywgc28gd2UgdXNlIHRoZSBBY3RpdmVYT2JqZWN0 IHdoZW4gaXQgaXMgYXZhaWxhYmxlCgkJdmFyIHhociA9IHdpbmRvdy5BY3RpdmVY T2JqZWN0ID8gbmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIikg OiBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKCgkJLy8gT3BlbiB0aGUgc29ja2V0CgkJ Ly8gUGFzc2luZyBudWxsIHVzZXJuYW1lLCBnZW5lcmF0ZXMgYSBsb2dpbiBwb3B1 cCBvbiBPcGVyYSAoIzI4NjUpCgkJaWYoIHMudXNlcm5hbWUgKQoJCQl4aHIub3Bl bih0eXBlLCBzLnVybCwgcy5hc3luYywgcy51c2VybmFtZSwgcy5wYXNzd29yZCk7 CgkJZWxzZQoJCQl4aHIub3Blbih0eXBlLCBzLnVybCwgcy5hc3luYyk7CgoJCS8v IE5lZWQgYW4gZXh0cmEgdHJ5L2NhdGNoIGZvciBjcm9zcyBkb21haW4gcmVxdWVz dHMgaW4gRmlyZWZveCAzCgkJdHJ5IHsKCQkJLy8gU2V0IHRoZSBjb3JyZWN0IGhl YWRlciwgaWYgZGF0YSBpcyBiZWluZyBzZW50CgkJCWlmICggcy5kYXRhICkKCQkJ CXhoci5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLCBzLmNvbnRlbnRU eXBlKTsKCgkJCS8vIFNldCB0aGUgSWYtTW9kaWZpZWQtU2luY2UgaGVhZGVyLCBp ZiBpZk1vZGlmaWVkIG1vZGUuCgkJCWlmICggcy5pZk1vZGlmaWVkICkKCQkJCXho ci5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsCgkJCQkJalF1 ZXJ5Lmxhc3RNb2RpZmllZFtzLnVybF0gfHwgIlRodSwgMDEgSmFuIDE5NzAgMDA6 MDA6MDAgR01UIiApOwoKCQkJLy8gU2V0IGhlYWRlciBzbyB0aGUgY2FsbGVkIHNj cmlwdCBrbm93cyB0aGF0IGl0J3MgYW4gWE1MSHR0cFJlcXVlc3QKCQkJeGhyLnNl dFJlcXVlc3RIZWFkZXIoIlgtUmVxdWVzdGVkLVdpdGgiLCAiWE1MSHR0cFJlcXVl c3QiKTsKCgkJCS8vIFNldCB0aGUgQWNjZXB0cyBoZWFkZXIgZm9yIHRoZSBzZXJ2 ZXIsIGRlcGVuZGluZyBvbiB0aGUgZGF0YVR5cGUKCQkJeGhyLnNldFJlcXVlc3RI ZWFkZXIoIkFjY2VwdCIsIHMuZGF0YVR5cGUgJiYgcy5hY2NlcHRzWyBzLmRhdGFU eXBlIF0gPwoJCQkJcy5hY2NlcHRzWyBzLmRhdGFUeXBlIF0gKyAiLCAqLyoiIDoK CQkJCXMuYWNjZXB0cy5fZGVmYXVsdCApOwoJCX0gY2F0Y2goZSl7fQoKCQkvLyBB bGxvdyBjdXN0b20gaGVhZGVycy9taW1ldHlwZXMKCQlpZiAoIHMuYmVmb3JlU2Vu ZCAmJiBzLmJlZm9yZVNlbmQoeGhyLCBzKSA9PT0gZmFsc2UgKSB7CgkJCS8vIGNs ZWFudXAgYWN0aXZlIHJlcXVlc3QgY291bnRlcgoJCQlzLmdsb2JhbCAmJiBqUXVl cnkuYWN0aXZlLS07CgkJCS8vIGNsb3NlIG9wZW5kZWQgc29ja2V0CgkJCXhoci5h Ym9ydCgpOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlpZiAoIHMuZ2xvYmFsICkK CQkJalF1ZXJ5LmV2ZW50LnRyaWdnZXIoImFqYXhTZW5kIiwgW3hociwgc10pOwoK CQkvLyBXYWl0IGZvciBhIHJlc3BvbnNlIHRvIGNvbWUgYmFjawoJCXZhciBvbnJl YWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbihpc1RpbWVvdXQpewoJCQkvLyBUaGUg dHJhbnNmZXIgaXMgY29tcGxldGUgYW5kIHRoZSBkYXRhIGlzIGF2YWlsYWJsZSwg b3IgdGhlIHJlcXVlc3QgdGltZWQgb3V0CgkJCWlmICggIXJlcXVlc3REb25lICYm IHhociAmJiAoeGhyLnJlYWR5U3RhdGUgPT0gNCB8fCBpc1RpbWVvdXQgPT0gInRp bWVvdXQiKSApIHsKCQkJCXJlcXVlc3REb25lID0gdHJ1ZTsKCgkJCQkvLyBjbGVh ciBwb2xsIGludGVydmFsCgkJCQlpZiAoaXZhbCkgewoJCQkJCWNsZWFySW50ZXJ2 YWwoaXZhbCk7CgkJCQkJaXZhbCA9IG51bGw7CgkJCQl9CgoJCQkJc3RhdHVzID0g aXNUaW1lb3V0ID09ICJ0aW1lb3V0IiAmJiAidGltZW91dCIgfHwKCQkJCQkhalF1 ZXJ5Lmh0dHBTdWNjZXNzKCB4aHIgKSAmJiAiZXJyb3IiIHx8CgkJCQkJcy5pZk1v ZGlmaWVkICYmIGpRdWVyeS5odHRwTm90TW9kaWZpZWQoIHhociwgcy51cmwgKSAm JiAibm90bW9kaWZpZWQiIHx8CgkJCQkJInN1Y2Nlc3MiOwoKCQkJCWlmICggc3Rh dHVzID09ICJzdWNjZXNzIiApIHsKCQkJCQkvLyBXYXRjaCBmb3IsIGFuZCBjYXRj aCwgWE1MIGRvY3VtZW50IHBhcnNlIGVycm9ycwoJCQkJCXRyeSB7CgkJCQkJCS8v IHByb2Nlc3MgdGhlIGRhdGEgKHJ1bnMgdGhlIHhtbCB0aHJvdWdoIGh0dHBEYXRh IHJlZ2FyZGxlc3Mgb2YgY2FsbGJhY2spCgkJCQkJCWRhdGEgPSBqUXVlcnkuaHR0 cERhdGEoIHhociwgcy5kYXRhVHlwZSwgcy5kYXRhRmlsdGVyICk7CgkJCQkJfSBj YXRjaChlKSB7CgkJCQkJCXN0YXR1cyA9ICJwYXJzZXJlcnJvciI7CgkJCQkJfQoJ CQkJfQoKCQkJCS8vIE1ha2Ugc3VyZSB0aGF0IHRoZSByZXF1ZXN0IHdhcyBzdWNj ZXNzZnVsIG9yIG5vdG1vZGlmaWVkCgkJCQlpZiAoIHN0YXR1cyA9PSAic3VjY2Vz cyIgKSB7CgkJCQkJLy8gQ2FjaGUgTGFzdC1Nb2RpZmllZCBoZWFkZXIsIGlmIGlm TW9kaWZpZWQgbW9kZS4KCQkJCQl2YXIgbW9kUmVzOwoJCQkJCXRyeSB7CgkJCQkJ CW1vZFJlcyA9IHhoci5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIp OwoJCQkJCX0gY2F0Y2goZSkge30gLy8gc3dhbGxvdyBleGNlcHRpb24gdGhyb3du IGJ5IEZGIGlmIGhlYWRlciBpcyBub3QgYXZhaWxhYmxlCgoJCQkJCWlmICggcy5p Zk1vZGlmaWVkICYmIG1vZFJlcyApCgkJCQkJCWpRdWVyeS5sYXN0TW9kaWZpZWRb cy51cmxdID0gbW9kUmVzOwoKCQkJCQkvLyBKU09OUCBoYW5kbGVzIGl0cyBvd24g c3VjY2VzcyBjYWxsYmFjawoJCQkJCWlmICggIWpzb25wICkKCQkJCQkJc3VjY2Vz cygpOwoJCQkJfSBlbHNlCgkJCQkJalF1ZXJ5LmhhbmRsZUVycm9yKHMsIHhociwg c3RhdHVzKTsKCgkJCQkvLyBGaXJlIHRoZSBjb21wbGV0ZSBoYW5kbGVycwoJCQkJ Y29tcGxldGUoKTsKCgkJCQkvLyBTdG9wIG1lbW9yeSBsZWFrcwoJCQkJaWYgKCBz LmFzeW5jICkKCQkJCQl4aHIgPSBudWxsOwoJCQl9CgkJfTsKCgkJaWYgKCBzLmFz eW5jICkgewoJCQkvLyBkb24ndCBhdHRhY2ggdGhlIGhhbmRsZXIgdG8gdGhlIHJl cXVlc3QsIGp1c3QgcG9sbCBpdCBpbnN0ZWFkCgkJCXZhciBpdmFsID0gc2V0SW50 ZXJ2YWwob25yZWFkeXN0YXRlY2hhbmdlLCAxMyk7CgoJCQkvLyBUaW1lb3V0IGNo ZWNrZXIKCQkJaWYgKCBzLnRpbWVvdXQgPiAwICkKCQkJCXNldFRpbWVvdXQoZnVu Y3Rpb24oKXsKCQkJCQkvLyBDaGVjayB0byBzZWUgaWYgdGhlIHJlcXVlc3QgaXMg c3RpbGwgaGFwcGVuaW5nCgkJCQkJaWYgKCB4aHIgKSB7CgkJCQkJCS8vIENhbmNl bCB0aGUgcmVxdWVzdAoJCQkJCQl4aHIuYWJvcnQoKTsKCgkJCQkJCWlmKCAhcmVx dWVzdERvbmUgKQoJCQkJCQkJb25yZWFkeXN0YXRlY2hhbmdlKCAidGltZW91dCIg KTsKCQkJCQl9CgkJCQl9LCBzLnRpbWVvdXQpOwoJCX0KCgkJLy8gU2VuZCB0aGUg ZGF0YQoJCXRyeSB7CgkJCXhoci5zZW5kKHMuZGF0YSk7CgkJfSBjYXRjaChlKSB7 CgkJCWpRdWVyeS5oYW5kbGVFcnJvcihzLCB4aHIsIG51bGwsIGUpOwoJCX0KCgkJ Ly8gZmlyZWZveCAxLjUgZG9lc24ndCBmaXJlIHN0YXRlY2hhbmdlIGZvciBzeW5j IHJlcXVlc3RzCgkJaWYgKCAhcy5hc3luYyApCgkJCW9ucmVhZHlzdGF0ZWNoYW5n ZSgpOwoKCQlmdW5jdGlvbiBzdWNjZXNzKCl7CgkJCS8vIElmIGEgbG9jYWwgY2Fs bGJhY2sgd2FzIHNwZWNpZmllZCwgZmlyZSBpdCBhbmQgcGFzcyBpdCB0aGUgZGF0 YQoJCQlpZiAoIHMuc3VjY2VzcyApCgkJCQlzLnN1Y2Nlc3MoIGRhdGEsIHN0YXR1 cyApOwoKCQkJLy8gRmlyZSB0aGUgZ2xvYmFsIGNhbGxiYWNrCgkJCWlmICggcy5n bG9iYWwgKQoJCQkJalF1ZXJ5LmV2ZW50LnRyaWdnZXIoICJhamF4U3VjY2VzcyIs IFt4aHIsIHNdICk7CgkJfQoKCQlmdW5jdGlvbiBjb21wbGV0ZSgpewoJCQkvLyBQ cm9jZXNzIHJlc3VsdAoJCQlpZiAoIHMuY29tcGxldGUgKQoJCQkJcy5jb21wbGV0 ZSh4aHIsIHN0YXR1cyk7CgoJCQkvLyBUaGUgcmVxdWVzdCB3YXMgY29tcGxldGVk CgkJCWlmICggcy5nbG9iYWwgKQoJCQkJalF1ZXJ5LmV2ZW50LnRyaWdnZXIoICJh amF4Q29tcGxldGUiLCBbeGhyLCBzXSApOwoKCQkJLy8gSGFuZGxlIHRoZSBnbG9i YWwgQUpBWCBjb3VudGVyCgkJCWlmICggcy5nbG9iYWwgJiYgISAtLWpRdWVyeS5h Y3RpdmUgKQoJCQkJalF1ZXJ5LmV2ZW50LnRyaWdnZXIoICJhamF4U3RvcCIgKTsK CQl9CgoJCS8vIHJldHVybiBYTUxIdHRwUmVxdWVzdCB0byBhbGxvdyBhYm9ydGlu ZyB0aGUgcmVxdWVzdCBldGMuCgkJcmV0dXJuIHhocjsKCX0sCgoJaGFuZGxlRXJy b3I6IGZ1bmN0aW9uKCBzLCB4aHIsIHN0YXR1cywgZSApIHsKCQkvLyBJZiBhIGxv Y2FsIGNhbGxiYWNrIHdhcyBzcGVjaWZpZWQsIGZpcmUgaXQKCQlpZiAoIHMuZXJy b3IgKSBzLmVycm9yKCB4aHIsIHN0YXR1cywgZSApOwoKCQkvLyBGaXJlIHRoZSBn bG9iYWwgY2FsbGJhY2sKCQlpZiAoIHMuZ2xvYmFsICkKCQkJalF1ZXJ5LmV2ZW50 LnRyaWdnZXIoICJhamF4RXJyb3IiLCBbeGhyLCBzLCBlXSApOwoJfSwKCgkvLyBD b3VudGVyIGZvciBob2xkaW5nIHRoZSBudW1iZXIgb2YgYWN0aXZlIHF1ZXJpZXMK CWFjdGl2ZTogMCwKCgkvLyBEZXRlcm1pbmVzIGlmIGFuIFhNTEh0dHBSZXF1ZXN0 IHdhcyBzdWNjZXNzZnVsIG9yIG5vdAoJaHR0cFN1Y2Nlc3M6IGZ1bmN0aW9uKCB4 aHIgKSB7CgkJdHJ5IHsKCQkJLy8gSUUgZXJyb3Igc29tZXRpbWVzIHJldHVybnMg MTIyMyB3aGVuIGl0IHNob3VsZCBiZSAyMDQgc28gdHJlYXQgaXQgYXMgc3VjY2Vz cywgc2VlICMxNDUwCgkJCXJldHVybiAheGhyLnN0YXR1cyAmJiBsb2NhdGlvbi5w cm90b2NvbCA9PSAiZmlsZToiIHx8CgkJCQkoIHhoci5zdGF0dXMgPj0gMjAwICYm IHhoci5zdGF0dXMgPCAzMDAgKSB8fCB4aHIuc3RhdHVzID09IDMwNCB8fCB4aHIu c3RhdHVzID09IDEyMjMgfHwKCQkJCWpRdWVyeS5icm93c2VyLnNhZmFyaSAmJiB4 aHIuc3RhdHVzID09IHVuZGVmaW5lZDsKCQl9IGNhdGNoKGUpe30KCQlyZXR1cm4g ZmFsc2U7Cgl9LAoKCS8vIERldGVybWluZXMgaWYgYW4gWE1MSHR0cFJlcXVlc3Qg cmV0dXJucyBOb3RNb2RpZmllZAoJaHR0cE5vdE1vZGlmaWVkOiBmdW5jdGlvbigg eGhyLCB1cmwgKSB7CgkJdHJ5IHsKCQkJdmFyIHhoclJlcyA9IHhoci5nZXRSZXNw b25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpOwoKCQkJLy8gRmlyZWZveCBhbHdh eXMgcmV0dXJucyAyMDAuIGNoZWNrIExhc3QtTW9kaWZpZWQgZGF0ZQoJCQlyZXR1 cm4geGhyLnN0YXR1cyA9PSAzMDQgfHwgeGhyUmVzID09IGpRdWVyeS5sYXN0TW9k aWZpZWRbdXJsXSB8fAoJCQkJalF1ZXJ5LmJyb3dzZXIuc2FmYXJpICYmIHhoci5z dGF0dXMgPT0gdW5kZWZpbmVkOwoJCX0gY2F0Y2goZSl7fQoJCXJldHVybiBmYWxz ZTsKCX0sCgoJaHR0cERhdGE6IGZ1bmN0aW9uKCB4aHIsIHR5cGUsIGZpbHRlciAp IHsKCQl2YXIgY3QgPSB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoImNvbnRlbnQtdHlw ZSIpLAoJCQl4bWwgPSB0eXBlID09ICJ4bWwiIHx8ICF0eXBlICYmIGN0ICYmIGN0 LmluZGV4T2YoInhtbCIpID49IDAsCgkJCWRhdGEgPSB4bWwgPyB4aHIucmVzcG9u c2VYTUwgOiB4aHIucmVzcG9uc2VUZXh0OwoKCQlpZiAoIHhtbCAmJiBkYXRhLmRv Y3VtZW50RWxlbWVudC50YWdOYW1lID09ICJwYXJzZXJlcnJvciIgKQoJCQl0aHJv dyAicGFyc2VyZXJyb3IiOwoJCQkKCQkvLyBBbGxvdyBhIHByZS1maWx0ZXJpbmcg ZnVuY3Rpb24gdG8gc2FuaXRpemUgdGhlIHJlc3BvbnNlCgkJaWYoIGZpbHRlciAp CgkJCWRhdGEgPSBmaWx0ZXIoIGRhdGEsIHR5cGUgKTsKCgkJLy8gSWYgdGhlIHR5 cGUgaXMgInNjcmlwdCIsIGV2YWwgaXQgaW4gZ2xvYmFsIGNvbnRleHQKCQlpZiAo IHR5cGUgPT0gInNjcmlwdCIgKQoJCQlqUXVlcnkuZ2xvYmFsRXZhbCggZGF0YSAp OwoKCQkvLyBHZXQgdGhlIEphdmFTY3JpcHQgb2JqZWN0LCBpZiBKU09OIGlzIHVz ZWQuCgkJaWYgKCB0eXBlID09ICJqc29uIiApCgkJCWRhdGEgPSBldmFsKCIoIiAr IGRhdGEgKyAiKSIpOwoKCQlyZXR1cm4gZGF0YTsKCX0sCgoJLy8gU2VyaWFsaXpl IGFuIGFycmF5IG9mIGZvcm0gZWxlbWVudHMgb3IgYSBzZXQgb2YKCS8vIGtleS92 YWx1ZXMgaW50byBhIHF1ZXJ5IHN0cmluZwoJcGFyYW06IGZ1bmN0aW9uKCBhICkg ewoJCXZhciBzID0gW107CgoJCS8vIElmIGFuIGFycmF5IHdhcyBwYXNzZWQgaW4s IGFzc3VtZSB0aGF0IGl0IGlzIGFuIGFycmF5CgkJLy8gb2YgZm9ybSBlbGVtZW50 cwoJCWlmICggYS5jb25zdHJ1Y3RvciA9PSBBcnJheSB8fCBhLmpxdWVyeSApCgkJ CS8vIFNlcmlhbGl6ZSB0aGUgZm9ybSBlbGVtZW50cwoJCQlqUXVlcnkuZWFjaCgg YSwgZnVuY3Rpb24oKXsKCQkJCXMucHVzaCggZW5jb2RlVVJJQ29tcG9uZW50KHRo aXMubmFtZSkgKyAiPSIgKyBlbmNvZGVVUklDb21wb25lbnQoIHRoaXMudmFsdWUg KSApOwoJCQl9KTsKCgkJLy8gT3RoZXJ3aXNlLCBhc3N1bWUgdGhhdCBpdCdzIGFu IG9iamVjdCBvZiBrZXkvdmFsdWUgcGFpcnMKCQllbHNlCgkJCS8vIFNlcmlhbGl6 ZSB0aGUga2V5L3ZhbHVlcwoJCQlmb3IgKCB2YXIgaiBpbiBhICkKCQkJCS8vIElm IHRoZSB2YWx1ZSBpcyBhbiBhcnJheSB0aGVuIHRoZSBrZXkgbmFtZXMgbmVlZCB0 byBiZSByZXBlYXRlZAoJCQkJaWYgKCBhW2pdICYmIGFbal0uY29uc3RydWN0b3Ig PT0gQXJyYXkgKQoJCQkJCWpRdWVyeS5lYWNoKCBhW2pdLCBmdW5jdGlvbigpewoJ CQkJCQlzLnB1c2goIGVuY29kZVVSSUNvbXBvbmVudChqKSArICI9IiArIGVuY29k ZVVSSUNvbXBvbmVudCggdGhpcyApICk7CgkJCQkJfSk7CgkJCQllbHNlCgkJCQkJ cy5wdXNoKCBlbmNvZGVVUklDb21wb25lbnQoaikgKyAiPSIgKyBlbmNvZGVVUklD b21wb25lbnQoIGpRdWVyeS5pc0Z1bmN0aW9uKGFbal0pID8gYVtqXSgpIDogYVtq XSApICk7CgoJCS8vIFJldHVybiB0aGUgcmVzdWx0aW5nIHNlcmlhbGl6YXRpb24K CQlyZXR1cm4gcy5qb2luKCImIikucmVwbGFjZSgvJTIwL2csICIrIik7Cgl9Cgp9 KTsKalF1ZXJ5LmZuLmV4dGVuZCh7CglzaG93OiBmdW5jdGlvbihzcGVlZCxjYWxs YmFjayl7CgkJcmV0dXJuIHNwZWVkID8KCQkJdGhpcy5hbmltYXRlKHsKCQkJCWhl aWdodDogInNob3ciLCB3aWR0aDogInNob3ciLCBvcGFjaXR5OiAic2hvdyIKCQkJ fSwgc3BlZWQsIGNhbGxiYWNrKSA6CgoJCQl0aGlzLmZpbHRlcigiOmhpZGRlbiIp LmVhY2goZnVuY3Rpb24oKXsKCQkJCXRoaXMuc3R5bGUuZGlzcGxheSA9IHRoaXMu b2xkYmxvY2sgfHwgIiI7CgkJCQlpZiAoIGpRdWVyeS5jc3ModGhpcywiZGlzcGxh eSIpID09ICJub25lIiApIHsKCQkJCQl2YXIgZWxlbSA9IGpRdWVyeSgiPCIgKyB0 aGlzLnRhZ05hbWUgKyAiIC8+IikuYXBwZW5kVG8oImJvZHkiKTsKCQkJCQl0aGlz LnN0eWxlLmRpc3BsYXkgPSBlbGVtLmNzcygiZGlzcGxheSIpOwoJCQkJCS8vIGhh bmRsZSBhbiBlZGdlIGNvbmRpdGlvbiB3aGVyZSBjc3MgaXMgLSBkaXYgeyBkaXNw bGF5Om5vbmU7IH0gb3Igc2ltaWxhcgoJCQkJCWlmICh0aGlzLnN0eWxlLmRpc3Bs YXkgPT0gIm5vbmUiKQoJCQkJCQl0aGlzLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2si OwoJCQkJCWVsZW0ucmVtb3ZlKCk7CgkJCQl9CgkJCX0pLmVuZCgpOwoJfSwKCglo aWRlOiBmdW5jdGlvbihzcGVlZCxjYWxsYmFjayl7CgkJcmV0dXJuIHNwZWVkID8K CQkJdGhpcy5hbmltYXRlKHsKCQkJCWhlaWdodDogImhpZGUiLCB3aWR0aDogImhp ZGUiLCBvcGFjaXR5OiAiaGlkZSIKCQkJfSwgc3BlZWQsIGNhbGxiYWNrKSA6CgoJ CQl0aGlzLmZpbHRlcigiOnZpc2libGUiKS5lYWNoKGZ1bmN0aW9uKCl7CgkJCQl0 aGlzLm9sZGJsb2NrID0gdGhpcy5vbGRibG9jayB8fCBqUXVlcnkuY3NzKHRoaXMs ImRpc3BsYXkiKTsKCQkJCXRoaXMuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKCQkJ fSkuZW5kKCk7Cgl9LAoKCS8vIFNhdmUgdGhlIG9sZCB0b2dnbGUgZnVuY3Rpb24K CV90b2dnbGU6IGpRdWVyeS5mbi50b2dnbGUsCgoJdG9nZ2xlOiBmdW5jdGlvbigg Zm4sIGZuMiApewoJCXJldHVybiBqUXVlcnkuaXNGdW5jdGlvbihmbikgJiYgalF1 ZXJ5LmlzRnVuY3Rpb24oZm4yKSA/CgkJCXRoaXMuX3RvZ2dsZS5hcHBseSggdGhp cywgYXJndW1lbnRzICkgOgoJCQlmbiA/CgkJCQl0aGlzLmFuaW1hdGUoewoJCQkJ CWhlaWdodDogInRvZ2dsZSIsIHdpZHRoOiAidG9nZ2xlIiwgb3BhY2l0eTogInRv Z2dsZSIKCQkJCX0sIGZuLCBmbjIpIDoKCQkJCXRoaXMuZWFjaChmdW5jdGlvbigp ewoJCQkJCWpRdWVyeSh0aGlzKVsgalF1ZXJ5KHRoaXMpLmlzKCI6aGlkZGVuIikg PyAic2hvdyIgOiAiaGlkZSIgXSgpOwoJCQkJfSk7Cgl9LAoKCXNsaWRlRG93bjog ZnVuY3Rpb24oc3BlZWQsY2FsbGJhY2spewoJCXJldHVybiB0aGlzLmFuaW1hdGUo e2hlaWdodDogInNob3cifSwgc3BlZWQsIGNhbGxiYWNrKTsKCX0sCgoJc2xpZGVV cDogZnVuY3Rpb24oc3BlZWQsY2FsbGJhY2spewoJCXJldHVybiB0aGlzLmFuaW1h dGUoe2hlaWdodDogImhpZGUifSwgc3BlZWQsIGNhbGxiYWNrKTsKCX0sCgoJc2xp ZGVUb2dnbGU6IGZ1bmN0aW9uKHNwZWVkLCBjYWxsYmFjayl7CgkJcmV0dXJuIHRo aXMuYW5pbWF0ZSh7aGVpZ2h0OiAidG9nZ2xlIn0sIHNwZWVkLCBjYWxsYmFjayk7 Cgl9LAoKCWZhZGVJbjogZnVuY3Rpb24oc3BlZWQsIGNhbGxiYWNrKXsKCQlyZXR1 cm4gdGhpcy5hbmltYXRlKHtvcGFjaXR5OiAic2hvdyJ9LCBzcGVlZCwgY2FsbGJh Y2spOwoJfSwKCglmYWRlT3V0OiBmdW5jdGlvbihzcGVlZCwgY2FsbGJhY2spewoJ CXJldHVybiB0aGlzLmFuaW1hdGUoe29wYWNpdHk6ICJoaWRlIn0sIHNwZWVkLCBj YWxsYmFjayk7Cgl9LAoKCWZhZGVUbzogZnVuY3Rpb24oc3BlZWQsdG8sY2FsbGJh Y2spewoJCXJldHVybiB0aGlzLmFuaW1hdGUoe29wYWNpdHk6IHRvfSwgc3BlZWQs IGNhbGxiYWNrKTsKCX0sCgoJYW5pbWF0ZTogZnVuY3Rpb24oIHByb3AsIHNwZWVk LCBlYXNpbmcsIGNhbGxiYWNrICkgewoJCXZhciBvcHRhbGwgPSBqUXVlcnkuc3Bl ZWQoc3BlZWQsIGVhc2luZywgY2FsbGJhY2spOwoKCQlyZXR1cm4gdGhpc1sgb3B0 YWxsLnF1ZXVlID09PSBmYWxzZSA/ICJlYWNoIiA6ICJxdWV1ZSIgXShmdW5jdGlv bigpewoJCQlpZiAoIHRoaXMubm9kZVR5cGUgIT0gMSkKCQkJCXJldHVybiBmYWxz ZTsKCgkJCXZhciBvcHQgPSBqUXVlcnkuZXh0ZW5kKHt9LCBvcHRhbGwpLCBwLAoJ CQkJaGlkZGVuID0galF1ZXJ5KHRoaXMpLmlzKCI6aGlkZGVuIiksIHNlbGYgPSB0 aGlzOwoKCQkJZm9yICggcCBpbiBwcm9wICkgewoJCQkJaWYgKCBwcm9wW3BdID09 ICJoaWRlIiAmJiBoaWRkZW4gfHwgcHJvcFtwXSA9PSAic2hvdyIgJiYgIWhpZGRl biApCgkJCQkJcmV0dXJuIG9wdC5jb21wbGV0ZS5jYWxsKHRoaXMpOwoKCQkJCWlm ICggcCA9PSAiaGVpZ2h0IiB8fCBwID09ICJ3aWR0aCIgKSB7CgkJCQkJLy8gU3Rv cmUgZGlzcGxheSBwcm9wZXJ0eQoJCQkJCW9wdC5kaXNwbGF5ID0galF1ZXJ5LmNz cyh0aGlzLCAiZGlzcGxheSIpOwoKCQkJCQkvLyBNYWtlIHN1cmUgdGhhdCBub3Ro aW5nIHNuZWFrcyBvdXQKCQkJCQlvcHQub3ZlcmZsb3cgPSB0aGlzLnN0eWxlLm92 ZXJmbG93OwoJCQkJfQoJCQl9CgoJCQlpZiAoIG9wdC5vdmVyZmxvdyAhPSBudWxs ICkKCQkJCXRoaXMuc3R5bGUub3ZlcmZsb3cgPSAiaGlkZGVuIjsKCgkJCW9wdC5j dXJBbmltID0galF1ZXJ5LmV4dGVuZCh7fSwgcHJvcCk7CgoJCQlqUXVlcnkuZWFj aCggcHJvcCwgZnVuY3Rpb24obmFtZSwgdmFsKXsKCQkJCXZhciBlID0gbmV3IGpR dWVyeS5meCggc2VsZiwgb3B0LCBuYW1lICk7CgoJCQkJaWYgKCAvdG9nZ2xlfHNo b3d8aGlkZS8udGVzdCh2YWwpICkKCQkJCQllWyB2YWwgPT0gInRvZ2dsZSIgPyBo aWRkZW4gPyAic2hvdyIgOiAiaGlkZSIgOiB2YWwgXSggcHJvcCApOwoJCQkJZWxz ZSB7CgkJCQkJdmFyIHBhcnRzID0gdmFsLnRvU3RyaW5nKCkubWF0Y2goL14oWyst XT0pPyhbXGQrLS5dKykoLiopJC8pLAoJCQkJCQlzdGFydCA9IGUuY3VyKHRydWUp IHx8IDA7CgoJCQkJCWlmICggcGFydHMgKSB7CgkJCQkJCXZhciBlbmQgPSBwYXJz ZUZsb2F0KHBhcnRzWzJdKSwKCQkJCQkJCXVuaXQgPSBwYXJ0c1szXSB8fCAicHgi OwoKCQkJCQkJLy8gV2UgbmVlZCB0byBjb21wdXRlIHN0YXJ0aW5nIHZhbHVlCgkJ CQkJCWlmICggdW5pdCAhPSAicHgiICkgewoJCQkJCQkJc2VsZi5zdHlsZVsgbmFt ZSBdID0gKGVuZCB8fCAxKSArIHVuaXQ7CgkJCQkJCQlzdGFydCA9ICgoZW5kIHx8 IDEpIC8gZS5jdXIodHJ1ZSkpICogc3RhcnQ7CgkJCQkJCQlzZWxmLnN0eWxlWyBu YW1lIF0gPSBzdGFydCArIHVuaXQ7CgkJCQkJCX0KCgkJCQkJCS8vIElmIGEgKz0v LT0gdG9rZW4gd2FzIHByb3ZpZGVkLCB3ZSdyZSBkb2luZyBhIHJlbGF0aXZlIGFu aW1hdGlvbgoJCQkJCQlpZiAoIHBhcnRzWzFdICkKCQkJCQkJCWVuZCA9ICgocGFy dHNbMV0gPT0gIi09IiA/IC0xIDogMSkgKiBlbmQpICsgc3RhcnQ7CgoJCQkJCQll LmN1c3RvbSggc3RhcnQsIGVuZCwgdW5pdCApOwoJCQkJCX0gZWxzZQoJCQkJCQll LmN1c3RvbSggc3RhcnQsIHZhbCwgIiIgKTsKCQkJCX0KCQkJfSk7CgoJCQkvLyBG b3IgSlMgc3RyaWN0IGNvbXBsaWFuY2UKCQkJcmV0dXJuIHRydWU7CgkJfSk7Cgl9 LAoKCXF1ZXVlOiBmdW5jdGlvbih0eXBlLCBmbil7CgkJaWYgKCBqUXVlcnkuaXNG dW5jdGlvbih0eXBlKSB8fCAoIHR5cGUgJiYgdHlwZS5jb25zdHJ1Y3RvciA9PSBB cnJheSApKSB7CgkJCWZuID0gdHlwZTsKCQkJdHlwZSA9ICJmeCI7CgkJfQoKCQlp ZiAoICF0eXBlIHx8ICh0eXBlb2YgdHlwZSA9PSAic3RyaW5nIiAmJiAhZm4pICkK CQkJcmV0dXJuIHF1ZXVlKCB0aGlzWzBdLCB0eXBlICk7CgoJCXJldHVybiB0aGlz LmVhY2goZnVuY3Rpb24oKXsKCQkJaWYgKCBmbi5jb25zdHJ1Y3RvciA9PSBBcnJh eSApCgkJCQlxdWV1ZSh0aGlzLCB0eXBlLCBmbik7CgkJCWVsc2UgewoJCQkJcXVl dWUodGhpcywgdHlwZSkucHVzaCggZm4gKTsKCgkJCQlpZiAoIHF1ZXVlKHRoaXMs IHR5cGUpLmxlbmd0aCA9PSAxICkKCQkJCQlmbi5jYWxsKHRoaXMpOwoJCQl9CgkJ fSk7Cgl9LAoKCXN0b3A6IGZ1bmN0aW9uKGNsZWFyUXVldWUsIGdvdG9FbmQpewoJ CXZhciB0aW1lcnMgPSBqUXVlcnkudGltZXJzOwoKCQlpZiAoY2xlYXJRdWV1ZSkK CQkJdGhpcy5xdWV1ZShbXSk7CgoJCXRoaXMuZWFjaChmdW5jdGlvbigpewoJCQkv LyBnbyBpbiByZXZlcnNlIG9yZGVyIHNvIGFueXRoaW5nIGFkZGVkIHRvIHRoZSBx dWV1ZSBkdXJpbmcgdGhlIGxvb3AgaXMgaWdub3JlZAoJCQlmb3IgKCB2YXIgaSA9 IHRpbWVycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSApCgkJCQlpZiAoIHRpbWVy c1tpXS5lbGVtID09IHRoaXMgKSB7CgkJCQkJaWYgKGdvdG9FbmQpCgkJCQkJCS8v IGZvcmNlIHRoZSBuZXh0IHN0ZXAgdG8gYmUgdGhlIGxhc3QKCQkJCQkJdGltZXJz W2ldKHRydWUpOwoJCQkJCXRpbWVycy5zcGxpY2UoaSwgMSk7CgkJCQl9CgkJfSk7 CgoJCS8vIHN0YXJ0IHRoZSBuZXh0IGluIHRoZSBxdWV1ZSBpZiB0aGUgbGFzdCBz dGVwIHdhc24ndCBmb3JjZWQKCQlpZiAoIWdvdG9FbmQpCgkJCXRoaXMuZGVxdWV1 ZSgpOwoKCQlyZXR1cm4gdGhpczsKCX0KCn0pOwoKdmFyIHF1ZXVlID0gZnVuY3Rp b24oIGVsZW0sIHR5cGUsIGFycmF5ICkgewoJaWYgKCBlbGVtICl7CgoJCXR5cGUg PSB0eXBlIHx8ICJmeCI7CgoJCXZhciBxID0galF1ZXJ5LmRhdGEoIGVsZW0sIHR5 cGUgKyAicXVldWUiICk7CgoJCWlmICggIXEgfHwgYXJyYXkgKQoJCQlxID0galF1 ZXJ5LmRhdGEoIGVsZW0sIHR5cGUgKyAicXVldWUiLCBqUXVlcnkubWFrZUFycmF5 KGFycmF5KSApOwoKCX0KCXJldHVybiBxOwp9OwoKalF1ZXJ5LmZuLmRlcXVldWUg PSBmdW5jdGlvbih0eXBlKXsKCXR5cGUgPSB0eXBlIHx8ICJmeCI7CgoJcmV0dXJu IHRoaXMuZWFjaChmdW5jdGlvbigpewoJCXZhciBxID0gcXVldWUodGhpcywgdHlw ZSk7CgoJCXEuc2hpZnQoKTsKCgkJaWYgKCBxLmxlbmd0aCApCgkJCXFbMF0uY2Fs bCggdGhpcyApOwoJfSk7Cn07CgpqUXVlcnkuZXh0ZW5kKHsKCglzcGVlZDogZnVu Y3Rpb24oc3BlZWQsIGVhc2luZywgZm4pIHsKCQl2YXIgb3B0ID0gc3BlZWQgJiYg c3BlZWQuY29uc3RydWN0b3IgPT0gT2JqZWN0ID8gc3BlZWQgOiB7CgkJCWNvbXBs ZXRlOiBmbiB8fCAhZm4gJiYgZWFzaW5nIHx8CgkJCQlqUXVlcnkuaXNGdW5jdGlv biggc3BlZWQgKSAmJiBzcGVlZCwKCQkJZHVyYXRpb246IHNwZWVkLAoJCQllYXNp bmc6IGZuICYmIGVhc2luZyB8fCBlYXNpbmcgJiYgZWFzaW5nLmNvbnN0cnVjdG9y ICE9IEZ1bmN0aW9uICYmIGVhc2luZwoJCX07CgoJCW9wdC5kdXJhdGlvbiA9IChv cHQuZHVyYXRpb24gJiYgb3B0LmR1cmF0aW9uLmNvbnN0cnVjdG9yID09IE51bWJl ciA/CgkJCW9wdC5kdXJhdGlvbiA6CgkJCWpRdWVyeS5meC5zcGVlZHNbb3B0LmR1 cmF0aW9uXSkgfHwgalF1ZXJ5LmZ4LnNwZWVkcy5kZWY7CgoJCS8vIFF1ZXVlaW5n CgkJb3B0Lm9sZCA9IG9wdC5jb21wbGV0ZTsKCQlvcHQuY29tcGxldGUgPSBmdW5j dGlvbigpewoJCQlpZiAoIG9wdC5xdWV1ZSAhPT0gZmFsc2UgKQoJCQkJalF1ZXJ5 KHRoaXMpLmRlcXVldWUoKTsKCQkJaWYgKCBqUXVlcnkuaXNGdW5jdGlvbiggb3B0 Lm9sZCApICkKCQkJCW9wdC5vbGQuY2FsbCggdGhpcyApOwoJCX07CgoJCXJldHVy biBvcHQ7Cgl9LAoKCWVhc2luZzogewoJCWxpbmVhcjogZnVuY3Rpb24oIHAsIG4s IGZpcnN0TnVtLCBkaWZmICkgewoJCQlyZXR1cm4gZmlyc3ROdW0gKyBkaWZmICog cDsKCQl9LAoJCXN3aW5nOiBmdW5jdGlvbiggcCwgbiwgZmlyc3ROdW0sIGRpZmYg KSB7CgkJCXJldHVybiAoKC1NYXRoLmNvcyhwKk1hdGguUEkpLzIpICsgMC41KSAq IGRpZmYgKyBmaXJzdE51bTsKCQl9Cgl9LAoKCXRpbWVyczogW10sCgl0aW1lcklk OiBudWxsLAoKCWZ4OiBmdW5jdGlvbiggZWxlbSwgb3B0aW9ucywgcHJvcCApewoJ CXRoaXMub3B0aW9ucyA9IG9wdGlvbnM7CgkJdGhpcy5lbGVtID0gZWxlbTsKCQl0 aGlzLnByb3AgPSBwcm9wOwoKCQlpZiAoICFvcHRpb25zLm9yaWcgKQoJCQlvcHRp b25zLm9yaWcgPSB7fTsKCX0KCn0pOwoKalF1ZXJ5LmZ4LnByb3RvdHlwZSA9IHsK CgkvLyBTaW1wbGUgZnVuY3Rpb24gZm9yIHNldHRpbmcgYSBzdHlsZSB2YWx1ZQoJ dXBkYXRlOiBmdW5jdGlvbigpewoJCWlmICggdGhpcy5vcHRpb25zLnN0ZXAgKQoJ CQl0aGlzLm9wdGlvbnMuc3RlcC5jYWxsKCB0aGlzLmVsZW0sIHRoaXMubm93LCB0 aGlzICk7CgoJCShqUXVlcnkuZnguc3RlcFt0aGlzLnByb3BdIHx8IGpRdWVyeS5m eC5zdGVwLl9kZWZhdWx0KSggdGhpcyApOwoKCQkvLyBTZXQgZGlzcGxheSBwcm9w ZXJ0eSB0byBibG9jayBmb3IgaGVpZ2h0L3dpZHRoIGFuaW1hdGlvbnMKCQlpZiAo IHRoaXMucHJvcCA9PSAiaGVpZ2h0IiB8fCB0aGlzLnByb3AgPT0gIndpZHRoIiAp CgkJCXRoaXMuZWxlbS5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKCX0sCgoJLy8g R2V0IHRoZSBjdXJyZW50IHNpemUKCWN1cjogZnVuY3Rpb24oZm9yY2UpewoJCWlm ICggdGhpcy5lbGVtW3RoaXMucHJvcF0gIT0gbnVsbCAmJiB0aGlzLmVsZW0uc3R5 bGVbdGhpcy5wcm9wXSA9PSBudWxsICkKCQkJcmV0dXJuIHRoaXMuZWxlbVsgdGhp cy5wcm9wIF07CgoJCXZhciByID0gcGFyc2VGbG9hdChqUXVlcnkuY3NzKHRoaXMu ZWxlbSwgdGhpcy5wcm9wLCBmb3JjZSkpOwoJCXJldHVybiByICYmIHIgPiAtMTAw MDAgPyByIDogcGFyc2VGbG9hdChqUXVlcnkuY3VyQ1NTKHRoaXMuZWxlbSwgdGhp cy5wcm9wKSkgfHwgMDsKCX0sCgoJLy8gU3RhcnQgYW4gYW5pbWF0aW9uIGZyb20g b25lIG51bWJlciB0byBhbm90aGVyCgljdXN0b206IGZ1bmN0aW9uKGZyb20sIHRv LCB1bml0KXsKCQl0aGlzLnN0YXJ0VGltZSA9IG5vdygpOwoJCXRoaXMuc3RhcnQg PSBmcm9tOwoJCXRoaXMuZW5kID0gdG87CgkJdGhpcy51bml0ID0gdW5pdCB8fCB0 aGlzLnVuaXQgfHwgInB4IjsKCQl0aGlzLm5vdyA9IHRoaXMuc3RhcnQ7CgkJdGhp cy5wb3MgPSB0aGlzLnN0YXRlID0gMDsKCQl0aGlzLnVwZGF0ZSgpOwoKCQl2YXIg c2VsZiA9IHRoaXM7CgkJZnVuY3Rpb24gdChnb3RvRW5kKXsKCQkJcmV0dXJuIHNl bGYuc3RlcChnb3RvRW5kKTsKCQl9CgoJCXQuZWxlbSA9IHRoaXMuZWxlbTsKCgkJ alF1ZXJ5LnRpbWVycy5wdXNoKHQpOwoKCQlpZiAoIGpRdWVyeS50aW1lcklkID09 IG51bGwgKSB7CgkJCWpRdWVyeS50aW1lcklkID0gc2V0SW50ZXJ2YWwoZnVuY3Rp b24oKXsKCQkJCXZhciB0aW1lcnMgPSBqUXVlcnkudGltZXJzOwoKCQkJCWZvciAo IHZhciBpID0gMDsgaSA8IHRpbWVycy5sZW5ndGg7IGkrKyApCgkJCQkJaWYgKCAh dGltZXJzW2ldKCkgKQoJCQkJCQl0aW1lcnMuc3BsaWNlKGktLSwgMSk7CgoJCQkJ aWYgKCAhdGltZXJzLmxlbmd0aCApIHsKCQkJCQljbGVhckludGVydmFsKCBqUXVl cnkudGltZXJJZCApOwoJCQkJCWpRdWVyeS50aW1lcklkID0gbnVsbDsKCQkJCX0K CQkJfSwgMTMpOwoJCX0KCX0sCgoJLy8gU2ltcGxlICdzaG93JyBmdW5jdGlvbgoJ c2hvdzogZnVuY3Rpb24oKXsKCQkvLyBSZW1lbWJlciB3aGVyZSB3ZSBzdGFydGVk LCBzbyB0aGF0IHdlIGNhbiBnbyBiYWNrIHRvIGl0IGxhdGVyCgkJdGhpcy5vcHRp b25zLm9yaWdbdGhpcy5wcm9wXSA9IGpRdWVyeS5hdHRyKCB0aGlzLmVsZW0uc3R5 bGUsIHRoaXMucHJvcCApOwoJCXRoaXMub3B0aW9ucy5zaG93ID0gdHJ1ZTsKCgkJ Ly8gQmVnaW4gdGhlIGFuaW1hdGlvbgoJCXRoaXMuY3VzdG9tKDAsIHRoaXMuY3Vy KCkpOwoKCQkvLyBNYWtlIHN1cmUgdGhhdCB3ZSBzdGFydCBhdCBhIHNtYWxsIHdp ZHRoL2hlaWdodCB0byBhdm9pZCBhbnkKCQkvLyBmbGFzaCBvZiBjb250ZW50CgkJ aWYgKCB0aGlzLnByb3AgPT0gIndpZHRoIiB8fCB0aGlzLnByb3AgPT0gImhlaWdo dCIgKQoJCQl0aGlzLmVsZW0uc3R5bGVbdGhpcy5wcm9wXSA9ICIxcHgiOwoKCQkv LyBTdGFydCBieSBzaG93aW5nIHRoZSBlbGVtZW50CgkJalF1ZXJ5KHRoaXMuZWxl bSkuc2hvdygpOwoJfSwKCgkvLyBTaW1wbGUgJ2hpZGUnIGZ1bmN0aW9uCgloaWRl OiBmdW5jdGlvbigpewoJCS8vIFJlbWVtYmVyIHdoZXJlIHdlIHN0YXJ0ZWQsIHNv IHRoYXQgd2UgY2FuIGdvIGJhY2sgdG8gaXQgbGF0ZXIKCQl0aGlzLm9wdGlvbnMu b3JpZ1t0aGlzLnByb3BdID0galF1ZXJ5LmF0dHIoIHRoaXMuZWxlbS5zdHlsZSwg dGhpcy5wcm9wICk7CgkJdGhpcy5vcHRpb25zLmhpZGUgPSB0cnVlOwoKCQkvLyBC ZWdpbiB0aGUgYW5pbWF0aW9uCgkJdGhpcy5jdXN0b20odGhpcy5jdXIoKSwgMCk7 Cgl9LAoKCS8vIEVhY2ggc3RlcCBvZiBhbiBhbmltYXRpb24KCXN0ZXA6IGZ1bmN0 aW9uKGdvdG9FbmQpewoJCXZhciB0ID0gbm93KCk7CgoJCWlmICggZ290b0VuZCB8 fCB0ID4gdGhpcy5vcHRpb25zLmR1cmF0aW9uICsgdGhpcy5zdGFydFRpbWUgKSB7 CgkJCXRoaXMubm93ID0gdGhpcy5lbmQ7CgkJCXRoaXMucG9zID0gdGhpcy5zdGF0 ZSA9IDE7CgkJCXRoaXMudXBkYXRlKCk7CgoJCQl0aGlzLm9wdGlvbnMuY3VyQW5p bVsgdGhpcy5wcm9wIF0gPSB0cnVlOwoKCQkJdmFyIGRvbmUgPSB0cnVlOwoJCQlm b3IgKCB2YXIgaSBpbiB0aGlzLm9wdGlvbnMuY3VyQW5pbSApCgkJCQlpZiAoIHRo aXMub3B0aW9ucy5jdXJBbmltW2ldICE9PSB0cnVlICkKCQkJCQlkb25lID0gZmFs c2U7CgoJCQlpZiAoIGRvbmUgKSB7CgkJCQlpZiAoIHRoaXMub3B0aW9ucy5kaXNw bGF5ICE9IG51bGwgKSB7CgkJCQkJLy8gUmVzZXQgdGhlIG92ZXJmbG93CgkJCQkJ dGhpcy5lbGVtLnN0eWxlLm92ZXJmbG93ID0gdGhpcy5vcHRpb25zLm92ZXJmbG93 OwoKCQkJCQkvLyBSZXNldCB0aGUgZGlzcGxheQoJCQkJCXRoaXMuZWxlbS5zdHls ZS5kaXNwbGF5ID0gdGhpcy5vcHRpb25zLmRpc3BsYXk7CgkJCQkJaWYgKCBqUXVl cnkuY3NzKHRoaXMuZWxlbSwgImRpc3BsYXkiKSA9PSAibm9uZSIgKQoJCQkJCQl0 aGlzLmVsZW0uc3R5bGUuZGlzcGxheSA9ICJibG9jayI7CgkJCQl9CgoJCQkJLy8g SGlkZSB0aGUgZWxlbWVudCBpZiB0aGUgImhpZGUiIG9wZXJhdGlvbiB3YXMgZG9u ZQoJCQkJaWYgKCB0aGlzLm9wdGlvbnMuaGlkZSApCgkJCQkJdGhpcy5lbGVtLnN0 eWxlLmRpc3BsYXkgPSAibm9uZSI7CgoJCQkJLy8gUmVzZXQgdGhlIHByb3BlcnRp ZXMsIGlmIHRoZSBpdGVtIGhhcyBiZWVuIGhpZGRlbiBvciBzaG93bgoJCQkJaWYg KCB0aGlzLm9wdGlvbnMuaGlkZSB8fCB0aGlzLm9wdGlvbnMuc2hvdyApCgkJCQkJ Zm9yICggdmFyIHAgaW4gdGhpcy5vcHRpb25zLmN1ckFuaW0gKQoJCQkJCQlqUXVl cnkuYXR0cih0aGlzLmVsZW0uc3R5bGUsIHAsIHRoaXMub3B0aW9ucy5vcmlnW3Bd KTsKCQkJfQoKCQkJaWYgKCBkb25lICkKCQkJCS8vIEV4ZWN1dGUgdGhlIGNvbXBs ZXRlIGZ1bmN0aW9uCgkJCQl0aGlzLm9wdGlvbnMuY29tcGxldGUuY2FsbCggdGhp cy5lbGVtICk7CgoJCQlyZXR1cm4gZmFsc2U7CgkJfSBlbHNlIHsKCQkJdmFyIG4g PSB0IC0gdGhpcy5zdGFydFRpbWU7CgkJCXRoaXMuc3RhdGUgPSBuIC8gdGhpcy5v cHRpb25zLmR1cmF0aW9uOwoKCQkJLy8gUGVyZm9ybSB0aGUgZWFzaW5nIGZ1bmN0 aW9uLCBkZWZhdWx0cyB0byBzd2luZwoJCQl0aGlzLnBvcyA9IGpRdWVyeS5lYXNp bmdbdGhpcy5vcHRpb25zLmVhc2luZyB8fCAoalF1ZXJ5LmVhc2luZy5zd2luZyA/ ICJzd2luZyIgOiAibGluZWFyIildKHRoaXMuc3RhdGUsIG4sIDAsIDEsIHRoaXMu b3B0aW9ucy5kdXJhdGlvbik7CgkJCXRoaXMubm93ID0gdGhpcy5zdGFydCArICgo dGhpcy5lbmQgLSB0aGlzLnN0YXJ0KSAqIHRoaXMucG9zKTsKCgkJCS8vIFBlcmZv cm0gdGhlIG5leHQgc3RlcCBvZiB0aGUgYW5pbWF0aW9uCgkJCXRoaXMudXBkYXRl KCk7CgkJfQoKCQlyZXR1cm4gdHJ1ZTsKCX0KCn07CgpqUXVlcnkuZXh0ZW5kKCBq UXVlcnkuZngsIHsKCXNwZWVkczp7CgkJc2xvdzogNjAwLAogCQlmYXN0OiAyMDAs CiAJCS8vIERlZmF1bHQgc3BlZWQKIAkJZGVmOiA0MDAKCX0sCglzdGVwOiB7CgkJ c2Nyb2xsTGVmdDogZnVuY3Rpb24oZngpewoJCQlmeC5lbGVtLnNjcm9sbExlZnQg PSBmeC5ub3c7CgkJfSwKCgkJc2Nyb2xsVG9wOiBmdW5jdGlvbihmeCl7CgkJCWZ4 LmVsZW0uc2Nyb2xsVG9wID0gZngubm93OwoJCX0sCgoJCW9wYWNpdHk6IGZ1bmN0 aW9uKGZ4KXsKCQkJalF1ZXJ5LmF0dHIoZnguZWxlbS5zdHlsZSwgIm9wYWNpdHki LCBmeC5ub3cpOwoJCX0sCgoJCV9kZWZhdWx0OiBmdW5jdGlvbihmeCl7CgkJCWZ4 LmVsZW0uc3R5bGVbIGZ4LnByb3AgXSA9IGZ4Lm5vdyArIGZ4LnVuaXQ7CgkJfQoJ fQp9KTsKLy8gVGhlIE9mZnNldCBNZXRob2QKLy8gT3JpZ2luYWxseSBCeSBCcmFu ZG9uIEFhcm9uLCBwYXJ0IG9mIHRoZSBEaW1lbnNpb24gUGx1Z2luCi8vIGh0dHA6 Ly9qcXVlcnkuY29tL3BsdWdpbnMvcHJvamVjdC9kaW1lbnNpb25zCmpRdWVyeS5m bi5vZmZzZXQgPSBmdW5jdGlvbigpIHsKCXZhciBsZWZ0ID0gMCwgdG9wID0gMCwg ZWxlbSA9IHRoaXNbMF0sIHJlc3VsdHM7CgoJaWYgKCBlbGVtICkgd2l0aCAoIGpR dWVyeS5icm93c2VyICkgewoJCXZhciBwYXJlbnQgICAgICAgPSBlbGVtLnBhcmVu dE5vZGUsCgkJICAgIG9mZnNldENoaWxkICA9IGVsZW0sCgkJICAgIG9mZnNldFBh cmVudCA9IGVsZW0ub2Zmc2V0UGFyZW50LAoJCSAgICBkb2MgICAgICAgICAgPSBl bGVtLm93bmVyRG9jdW1lbnQsCgkJICAgIHNhZmFyaTIgICAgICA9IHNhZmFyaSAm JiBwYXJzZUludCh2ZXJzaW9uKSA8IDUyMiAmJiAhL2Fkb2JlYWlyL2kudGVzdCh1 c2VyQWdlbnQpLAoJCSAgICBjc3MgICAgICAgICAgPSBqUXVlcnkuY3VyQ1NTLAoJ CSAgICBmaXhlZCAgICAgICAgPSBjc3MoZWxlbSwgInBvc2l0aW9uIikgPT0gImZp eGVkIjsKCgkJLy8gVXNlIGdldEJvdW5kaW5nQ2xpZW50UmVjdCBpZiBhdmFpbGFi bGUKCQlpZiAoIGVsZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0ICkgewoJCQl2YXIg Ym94ID0gZWxlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKCgkJCS8vIEFkZCB0 aGUgZG9jdW1lbnQgc2Nyb2xsIG9mZnNldHMKCQkJYWRkKGJveC5sZWZ0ICsgTWF0 aC5tYXgoZG9jLmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0LCBkb2MuYm9keS5z Y3JvbGxMZWZ0KSwKCQkJCWJveC50b3AgICsgTWF0aC5tYXgoZG9jLmRvY3VtZW50 RWxlbWVudC5zY3JvbGxUb3AsICBkb2MuYm9keS5zY3JvbGxUb3ApKTsKCgkJCS8v IElFIGFkZHMgdGhlIEhUTUwgZWxlbWVudCdzIGJvcmRlciwgYnkgZGVmYXVsdCBp dCBpcyBtZWRpdW0gd2hpY2ggaXMgMnB4CgkJCS8vIElFIDYgYW5kIDcgcXVpcmtz IG1vZGUgdGhlIGJvcmRlciB3aWR0aCBpcyBvdmVyd3JpdGFibGUgYnkgdGhlIGZv bGxvd2luZyBjc3MgaHRtbCB7IGJvcmRlcjogMDsgfQoJCQkvLyBJRSA3IHN0YW5k YXJkcyBtb2RlLCB0aGUgYm9yZGVyIGlzIGFsd2F5cyAycHgKCQkJLy8gVGhpcyBi b3JkZXIvb2Zmc2V0IGlzIHR5cGljYWxseSByZXByZXNlbnRlZCBieSB0aGUgY2xp ZW50TGVmdCBhbmQgY2xpZW50VG9wIHByb3BlcnRpZXMKCQkJLy8gSG93ZXZlciwg aW4gSUU2IGFuZCA3IHF1aXJrcyBtb2RlIHRoZSBjbGllbnRMZWZ0IGFuZCBjbGll bnRUb3AgcHJvcGVydGllcyBhcmUgbm90IHVwZGF0ZWQgd2hlbiBvdmVyd3JpdGlu ZyBpdCB2aWEgQ1NTCgkJCS8vIFRoZXJlZm9yZSB0aGlzIG1ldGhvZCB3aWxsIGJl IG9mZiBieSAycHggaW4gSUUgd2hpbGUgaW4gcXVpcmtzbW9kZQoJCQlhZGQoIC1k b2MuZG9jdW1lbnRFbGVtZW50LmNsaWVudExlZnQsIC1kb2MuZG9jdW1lbnRFbGVt ZW50LmNsaWVudFRvcCApOwoKCQkvLyBPdGhlcndpc2UgbG9vcCB0aHJvdWdoIHRo ZSBvZmZzZXRQYXJlbnRzIGFuZCBwYXJlbnROb2RlcwoJCX0gZWxzZSB7CgoJCQkv LyBJbml0aWFsIGVsZW1lbnQgb2Zmc2V0cwoJCQlhZGQoIGVsZW0ub2Zmc2V0TGVm dCwgZWxlbS5vZmZzZXRUb3AgKTsKCgkJCS8vIEdldCBwYXJlbnQgb2Zmc2V0cwoJ CQl3aGlsZSAoIG9mZnNldFBhcmVudCApIHsKCQkJCS8vIEFkZCBvZmZzZXRQYXJl bnQgb2Zmc2V0cwoJCQkJYWRkKCBvZmZzZXRQYXJlbnQub2Zmc2V0TGVmdCwgb2Zm c2V0UGFyZW50Lm9mZnNldFRvcCApOwoKCQkJCS8vIE1vemlsbGEgYW5kIFNhZmFy aSA+IDIgZG9lcyBub3QgaW5jbHVkZSB0aGUgYm9yZGVyIG9uIG9mZnNldCBwYXJl bnRzCgkJCQkvLyBIb3dldmVyIE1vemlsbGEgYWRkcyB0aGUgYm9yZGVyIGZvciB0 YWJsZSBvciB0YWJsZSBjZWxscwoJCQkJaWYgKCBtb3ppbGxhICYmICEvXnQoYWJs ZXxkfGgpJC9pLnRlc3Qob2Zmc2V0UGFyZW50LnRhZ05hbWUpIHx8IHNhZmFyaSAm JiAhc2FmYXJpMiApCgkJCQkJYm9yZGVyKCBvZmZzZXRQYXJlbnQgKTsKCgkJCQkv LyBBZGQgdGhlIGRvY3VtZW50IHNjcm9sbCBvZmZzZXRzIGlmIHBvc2l0aW9uIGlz IGZpeGVkIG9uIGFueSBvZmZzZXRQYXJlbnQKCQkJCWlmICggIWZpeGVkICYmIGNz cyhvZmZzZXRQYXJlbnQsICJwb3NpdGlvbiIpID09ICJmaXhlZCIgKQoJCQkJCWZp eGVkID0gdHJ1ZTsKCgkJCQkvLyBTZXQgb2Zmc2V0Q2hpbGQgdG8gcHJldmlvdXMg b2Zmc2V0UGFyZW50IHVubGVzcyBpdCBpcyB0aGUgYm9keSBlbGVtZW50CgkJCQlv ZmZzZXRDaGlsZCAgPSAvXmJvZHkkL2kudGVzdChvZmZzZXRQYXJlbnQudGFnTmFt ZSkgPyBvZmZzZXRDaGlsZCA6IG9mZnNldFBhcmVudDsKCQkJCS8vIEdldCBuZXh0 IG9mZnNldFBhcmVudAoJCQkJb2Zmc2V0UGFyZW50ID0gb2Zmc2V0UGFyZW50Lm9m ZnNldFBhcmVudDsKCQkJfQoKCQkJLy8gR2V0IHBhcmVudCBzY3JvbGwgb2Zmc2V0 cwoJCQl3aGlsZSAoIHBhcmVudCAmJiBwYXJlbnQudGFnTmFtZSAmJiAhL15ib2R5 fGh0bWwkL2kudGVzdChwYXJlbnQudGFnTmFtZSkgKSB7CgkJCQkvLyBSZW1vdmUg cGFyZW50IHNjcm9sbCBVTkxFU1MgdGhhdCBwYXJlbnQgaXMgaW5saW5lIG9yIGEg dGFibGUgdG8gd29yayBhcm91bmQgT3BlcmEgaW5saW5lL3RhYmxlIHNjcm9sbExl ZnQvVG9wIGJ1ZwoJCQkJaWYgKCAhL15pbmxpbmV8dGFibGUuKiQvaS50ZXN0KGNz cyhwYXJlbnQsICJkaXNwbGF5IikpICkKCQkJCQkvLyBTdWJ0cmFjdCBwYXJlbnQg c2Nyb2xsIG9mZnNldHMKCQkJCQlhZGQoIC1wYXJlbnQuc2Nyb2xsTGVmdCwgLXBh cmVudC5zY3JvbGxUb3AgKTsKCgkJCQkvLyBNb3ppbGxhIGRvZXMgbm90IGFkZCB0 aGUgYm9yZGVyIGZvciBhIHBhcmVudCB0aGF0IGhhcyBvdmVyZmxvdyAhPSB2aXNp YmxlCgkJCQlpZiAoIG1vemlsbGEgJiYgY3NzKHBhcmVudCwgIm92ZXJmbG93Iikg IT0gInZpc2libGUiICkKCQkJCQlib3JkZXIoIHBhcmVudCApOwoKCQkJCS8vIEdl dCBuZXh0IHBhcmVudAoJCQkJcGFyZW50ID0gcGFyZW50LnBhcmVudE5vZGU7CgkJ CX0KCgkJCS8vIFNhZmFyaSA8PSAyIGRvdWJsZXMgYm9keSBvZmZzZXRzIHdpdGgg YSBmaXhlZCBwb3NpdGlvbiBlbGVtZW50L29mZnNldFBhcmVudCBvciBhYnNvbHV0 ZWx5IHBvc2l0aW9uZWQgb2Zmc2V0Q2hpbGQKCQkJLy8gTW96aWxsYSBkb3VibGVz IGJvZHkgb2Zmc2V0cyB3aXRoIGEgbm9uLWFic29sdXRlbHkgcG9zaXRpb25lZCBv ZmZzZXRDaGlsZAoJCQlpZiAoIChzYWZhcmkyICYmIChmaXhlZCB8fCBjc3Mob2Zm c2V0Q2hpbGQsICJwb3NpdGlvbiIpID09ICJhYnNvbHV0ZSIpKSB8fAoJCQkJKG1v emlsbGEgJiYgY3NzKG9mZnNldENoaWxkLCAicG9zaXRpb24iKSAhPSAiYWJzb2x1 dGUiKSApCgkJCQkJYWRkKCAtZG9jLmJvZHkub2Zmc2V0TGVmdCwgLWRvYy5ib2R5 Lm9mZnNldFRvcCApOwoKCQkJLy8gQWRkIHRoZSBkb2N1bWVudCBzY3JvbGwgb2Zm c2V0cyBpZiBwb3NpdGlvbiBpcyBmaXhlZAoJCQlpZiAoIGZpeGVkICkKCQkJCWFk ZChNYXRoLm1heChkb2MuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQsIGRvYy5i b2R5LnNjcm9sbExlZnQpLAoJCQkJCU1hdGgubWF4KGRvYy5kb2N1bWVudEVsZW1l bnQuc2Nyb2xsVG9wLCAgZG9jLmJvZHkuc2Nyb2xsVG9wKSk7CgkJfQoKCQkvLyBS ZXR1cm4gYW4gb2JqZWN0IHdpdGggdG9wIGFuZCBsZWZ0IHByb3BlcnRpZXMKCQly ZXN1bHRzID0geyB0b3A6IHRvcCwgbGVmdDogbGVmdCB9OwoJfQoKCWZ1bmN0aW9u IGJvcmRlcihlbGVtKSB7CgkJYWRkKCBqUXVlcnkuY3VyQ1NTKGVsZW0sICJib3Jk ZXJMZWZ0V2lkdGgiLCB0cnVlKSwgalF1ZXJ5LmN1ckNTUyhlbGVtLCAiYm9yZGVy VG9wV2lkdGgiLCB0cnVlKSApOwoJfQoKCWZ1bmN0aW9uIGFkZChsLCB0KSB7CgkJ bGVmdCArPSBwYXJzZUludChsLCAxMCkgfHwgMDsKCQl0b3AgKz0gcGFyc2VJbnQo dCwgMTApIHx8IDA7Cgl9CgoJcmV0dXJuIHJlc3VsdHM7Cn07CgoKalF1ZXJ5LmZu LmV4dGVuZCh7Cglwb3NpdGlvbjogZnVuY3Rpb24oKSB7CgkJdmFyIGxlZnQgPSAw LCB0b3AgPSAwLCByZXN1bHRzOwoKCQlpZiAoIHRoaXNbMF0gKSB7CgkJCS8vIEdl dCAqcmVhbCogb2Zmc2V0UGFyZW50CgkJCXZhciBvZmZzZXRQYXJlbnQgPSB0aGlz Lm9mZnNldFBhcmVudCgpLAoKCQkJLy8gR2V0IGNvcnJlY3Qgb2Zmc2V0cwoJCQlv ZmZzZXQgICAgICAgPSB0aGlzLm9mZnNldCgpLAoJCQlwYXJlbnRPZmZzZXQgPSAv XmJvZHl8aHRtbCQvaS50ZXN0KG9mZnNldFBhcmVudFswXS50YWdOYW1lKSA/IHsg dG9wOiAwLCBsZWZ0OiAwIH0gOiBvZmZzZXRQYXJlbnQub2Zmc2V0KCk7CgoJCQkv LyBTdWJ0cmFjdCBlbGVtZW50IG1hcmdpbnMKCQkJLy8gbm90ZTogd2hlbiBhbiBl bGVtZW50IGhhcyBtYXJnaW46IGF1dG8gdGhlIG9mZnNldExlZnQgYW5kIG1hcmdp bkxlZnQgCgkJCS8vIGFyZSB0aGUgc2FtZSBpbiBTYWZhcmkgY2F1c2luZyBvZmZz ZXQubGVmdCB0byBpbmNvcnJlY3RseSBiZSAwCgkJCW9mZnNldC50b3AgIC09IG51 bSggdGhpcywgJ21hcmdpblRvcCcgKTsKCQkJb2Zmc2V0LmxlZnQgLT0gbnVtKCB0 aGlzLCAnbWFyZ2luTGVmdCcgKTsKCgkJCS8vIEFkZCBvZmZzZXRQYXJlbnQgYm9y ZGVycwoJCQlwYXJlbnRPZmZzZXQudG9wICArPSBudW0oIG9mZnNldFBhcmVudCwg J2JvcmRlclRvcFdpZHRoJyApOwoJCQlwYXJlbnRPZmZzZXQubGVmdCArPSBudW0o IG9mZnNldFBhcmVudCwgJ2JvcmRlckxlZnRXaWR0aCcgKTsKCgkJCS8vIFN1YnRy YWN0IHRoZSB0d28gb2Zmc2V0cwoJCQlyZXN1bHRzID0gewoJCQkJdG9wOiAgb2Zm c2V0LnRvcCAgLSBwYXJlbnRPZmZzZXQudG9wLAoJCQkJbGVmdDogb2Zmc2V0Lmxl ZnQgLSBwYXJlbnRPZmZzZXQubGVmdAoJCQl9OwoJCX0KCgkJcmV0dXJuIHJlc3Vs dHM7Cgl9LAoKCW9mZnNldFBhcmVudDogZnVuY3Rpb24oKSB7CgkJdmFyIG9mZnNl dFBhcmVudCA9IHRoaXNbMF0ub2Zmc2V0UGFyZW50OwoJCXdoaWxlICggb2Zmc2V0 UGFyZW50ICYmICghL15ib2R5fGh0bWwkL2kudGVzdChvZmZzZXRQYXJlbnQudGFn TmFtZSkgJiYgalF1ZXJ5LmNzcyhvZmZzZXRQYXJlbnQsICdwb3NpdGlvbicpID09 ICdzdGF0aWMnKSApCgkJCW9mZnNldFBhcmVudCA9IG9mZnNldFBhcmVudC5vZmZz ZXRQYXJlbnQ7CgkJcmV0dXJuIGpRdWVyeShvZmZzZXRQYXJlbnQpOwoJfQp9KTsK CgovLyBDcmVhdGUgc2Nyb2xsTGVmdCBhbmQgc2Nyb2xsVG9wIG1ldGhvZHMKalF1 ZXJ5LmVhY2goIFsnTGVmdCcsICdUb3AnXSwgZnVuY3Rpb24oaSwgbmFtZSkgewoJ dmFyIG1ldGhvZCA9ICdzY3JvbGwnICsgbmFtZTsKCQoJalF1ZXJ5LmZuWyBtZXRo b2QgXSA9IGZ1bmN0aW9uKHZhbCkgewoJCWlmICghdGhpc1swXSkgcmV0dXJuOwoK CQlyZXR1cm4gdmFsICE9IHVuZGVmaW5lZCA/CgoJCQkvLyBTZXQgdGhlIHNjcm9s bCBvZmZzZXQKCQkJdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewoJCQkJdGhpcyA9PSB3 aW5kb3cgfHwgdGhpcyA9PSBkb2N1bWVudCA/CgkJCQkJd2luZG93LnNjcm9sbFRv KAoJCQkJCQkhaSA/IHZhbCA6IGpRdWVyeSh3aW5kb3cpLnNjcm9sbExlZnQoKSwK CQkJCQkJIGkgPyB2YWwgOiBqUXVlcnkod2luZG93KS5zY3JvbGxUb3AoKQoJCQkJ CSkgOgoJCQkJCXRoaXNbIG1ldGhvZCBdID0gdmFsOwoJCQl9KSA6CgoJCQkvLyBS ZXR1cm4gdGhlIHNjcm9sbCBvZmZzZXQKCQkJdGhpc1swXSA9PSB3aW5kb3cgfHwg dGhpc1swXSA9PSBkb2N1bWVudCA/CgkJCQlzZWxmWyBpID8gJ3BhZ2VZT2Zmc2V0 JyA6ICdwYWdlWE9mZnNldCcgXSB8fAoJCQkJCWpRdWVyeS5ib3hNb2RlbCAmJiBk b2N1bWVudC5kb2N1bWVudEVsZW1lbnRbIG1ldGhvZCBdIHx8CgkJCQkJZG9jdW1l bnQuYm9keVsgbWV0aG9kIF0gOgoJCQkJdGhpc1swXVsgbWV0aG9kIF07Cgl9Owp9 KTsKLy8gQ3JlYXRlIGlubmVySGVpZ2h0LCBpbm5lcldpZHRoLCBvdXRlckhlaWdo dCBhbmQgb3V0ZXJXaWR0aCBtZXRob2RzCmpRdWVyeS5lYWNoKFsgIkhlaWdodCIs ICJXaWR0aCIgXSwgZnVuY3Rpb24oaSwgbmFtZSl7CgoJdmFyIHRsID0gaSA/ICJM ZWZ0IiAgOiAiVG9wIiwgIC8vIHRvcCBvciBsZWZ0CgkJYnIgPSBpID8gIlJpZ2h0 IiA6ICJCb3R0b20iOyAvLyBib3R0b20gb3IgcmlnaHQKCgkvLyBpbm5lckhlaWdo dCBhbmQgaW5uZXJXaWR0aAoJalF1ZXJ5LmZuWyJpbm5lciIgKyBuYW1lXSA9IGZ1 bmN0aW9uKCl7CgkJcmV0dXJuIHRoaXNbIG5hbWUudG9Mb3dlckNhc2UoKSBdKCkg KwoJCQludW0odGhpcywgInBhZGRpbmciICsgdGwpICsKCQkJbnVtKHRoaXMsICJw YWRkaW5nIiArIGJyKTsKCX07CgoJLy8gb3V0ZXJIZWlnaHQgYW5kIG91dGVyV2lk dGgKCWpRdWVyeS5mblsib3V0ZXIiICsgbmFtZV0gPSBmdW5jdGlvbihtYXJnaW4p IHsKCQlyZXR1cm4gdGhpc1siaW5uZXIiICsgbmFtZV0oKSArCgkJCW51bSh0aGlz LCAiYm9yZGVyIiArIHRsICsgIldpZHRoIikgKwoJCQludW0odGhpcywgImJvcmRl ciIgKyBiciArICJXaWR0aCIpICsKCQkJKG1hcmdpbiA/CgkJCQludW0odGhpcywg Im1hcmdpbiIgKyB0bCkgKyBudW0odGhpcywgIm1hcmdpbiIgKyBicikgOiAwKTsK CX07Cgp9KTt9KSgpOwo= ------------N4eNwrm1gWfA2YNEcWro80 Content-Disposition: inline; filename=jquery.form.js Content-Type: application/x-javascript; charset=utf-8; name=jquery.form.js Content-Location: http://www.cds73.fr/prive/javascript/jquery.form.js Content-Transfer-Encoding: Base64 LyoKICogalF1ZXJ5IEZvcm0gUGx1Z2luCiAqIHZlcnNpb246IDIuMjUgKDA4LUFQ Ui0yMDA5KQogKiArcGF0Y2ggaHR0cDovL3RyYWMucmV6by5uZXQvdHJhYy9zcGlw L2NoYW5nZXNldC8xMzk2OAogKgogKiBAcmVxdWlyZXMgalF1ZXJ5IHYxLjIuMiBv ciBsYXRlcgogKgogKiBFeGFtcGxlcyBhbmQgZG9jdW1lbnRhdGlvbiBhdDogaHR0 cDovL21hbHN1cC5jb20vanF1ZXJ5L2Zvcm0vCiAqIER1YWwgbGljZW5zZWQgdW5k ZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzOgogKiAgIGh0dHA6Ly93d3cub3Bl bnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwCiAqICAgaHR0cDov L3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1sCiAqLwo7KGZ1bmN0aW9uKCQp IHsKCi8qCiAgICBVc2FnZSBOb3RlOgogICAgLS0tLS0tLS0tLS0KICAgIERvIG5v dCB1c2UgYm90aCBhamF4U3VibWl0IGFuZCBhamF4Rm9ybSBvbiB0aGUgc2FtZSBm b3JtLiAgVGhlc2UKICAgIGZ1bmN0aW9ucyBhcmUgaW50ZW5kZWQgdG8gYmUgZXhj bHVzaXZlLiAgVXNlIGFqYXhTdWJtaXQgaWYgeW91IHdhbnQKICAgIHRvIGJpbmQg eW91ciBvd24gc3VibWl0IGhhbmRsZXIgdG8gdGhlIGZvcm0uICBGb3IgZXhhbXBs ZSwKCiAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKICAgICAgICAk KCcjbXlGb3JtJykuYmluZCgnc3VibWl0JywgZnVuY3Rpb24oKSB7CiAgICAgICAg ICAgICQodGhpcykuYWpheFN1Ym1pdCh7CiAgICAgICAgICAgICAgICB0YXJnZXQ6 ICcjb3V0cHV0JwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgcmV0dXJuIGZh bHNlOyAvLyA8LS0gaW1wb3J0YW50IQogICAgICAgIH0pOwogICAgfSk7CgogICAg VXNlIGFqYXhGb3JtIHdoZW4geW91IHdhbnQgdGhlIHBsdWdpbiB0byBtYW5hZ2Ug YWxsIHRoZSBldmVudCBiaW5kaW5nCiAgICBmb3IgeW91LiAgRm9yIGV4YW1wbGUs CgogICAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CiAgICAgICAgJCgn I215Rm9ybScpLmFqYXhGb3JtKHsKICAgICAgICAgICAgdGFyZ2V0OiAnI291dHB1 dCcKICAgICAgICB9KTsKICAgIH0pOwoKICAgIFdoZW4gdXNpbmcgYWpheEZvcm0s IHRoZSBhamF4U3VibWl0IGZ1bmN0aW9uIHdpbGwgYmUgaW52b2tlZCBmb3IgeW91 CiAgICBhdCB0aGUgYXBwcm9wcmlhdGUgdGltZS4KKi8KCi8qKgogKiBhamF4U3Vi bWl0KCkgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIGltbWVkaWF0ZWx5IHN1Ym1p dHRpbmcKICogYW4gSFRNTCBmb3JtIHVzaW5nIEFKQVguCiAqLwokLmZuLmFqYXhT dWJtaXQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAvLyBmYXN0IGZhaWwgaWYg bm90aGluZyBzZWxlY3RlZCAoaHR0cDovL2Rldi5qcXVlcnkuY29tL3RpY2tldC8y NzUyKQogICAgaWYgKCF0aGlzLmxlbmd0aCkgewogICAgICAgIGxvZygnYWpheFN1 Ym1pdDogc2tpcHBpbmcgc3VibWl0IHByb2Nlc3MgLSBubyBlbGVtZW50IHNlbGVj dGVkJyk7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICB9CgogICAgaWYgKHR5cGVv ZiBvcHRpb25zID09ICdmdW5jdGlvbicpCiAgICAgICAgb3B0aW9ucyA9IHsgc3Vj Y2Vzczogb3B0aW9ucyB9OwoKICAgIC8vIGNsZWFuIHVybCAoZG9uJ3QgaW5jbHVk ZSBoYXNoIHZhdWUpCiAgICB2YXIgdXJsID0gdGhpcy5hdHRyKCdhY3Rpb24nKSB8 fCB3aW5kb3cubG9jYXRpb24uaHJlZjsKICAgIHVybCA9ICh1cmwubWF0Y2goL14o W14jXSspLyl8fFtdKVsxXTsKCQkvLyBpZiBhY3Rpb24gaXMgb25seSBhbiBhbmNo b3IgYW5kIHJlbWFpbnMgZW1wdHksIGZmIGZhaWwKCQkvLyB0cnkgYWdhaW4gd2l0 aCB3aW5kb3cubG9jYXRpb24gaW4gdGhpcyBjYXNlCiAgICB1cmwgPSB1cmwgfHwg d2luZG93LmxvY2F0aW9uLmhyZWY7CiAgICB1cmwgPSAodXJsLm1hdGNoKC9eKFte I10rKS8pfHxbXSlbMV07CiAgICB1cmwgPSB1cmwgfHwgJyc7CgoJCW9wdGlvbnMg PSAkLmV4dGVuZCh7CiAgICAgICAgdXJsOiAgdXJsLAogICAgICAgIHR5cGU6IHRo aXMuYXR0cignbWV0aG9kJykgfHwgJ0dFVCcKICAgIH0sIG9wdGlvbnMgfHwge30p OwoKICAgIC8vIGhvb2sgZm9yIG1hbmlwdWxhdGluZyB0aGUgZm9ybSBkYXRhIGJl Zm9yZSBpdCBpcyBleHRyYWN0ZWQ7CiAgICAvLyBjb252ZW5pZW50IGZvciB1c2Ug d2l0aCByaWNoIGVkaXRvcnMgbGlrZSB0aW55TUNFIG9yIEZDS0VkaXRvcgogICAg dmFyIHZldG8gPSB7fTsKICAgIHRoaXMudHJpZ2dlcignZm9ybS1wcmUtc2VyaWFs aXplJywgW3RoaXMsIG9wdGlvbnMsIHZldG9dKTsKICAgIGlmICh2ZXRvLnZldG8p IHsKICAgICAgICBsb2coJ2FqYXhTdWJtaXQ6IHN1Ym1pdCB2ZXRvZWQgdmlhIGZv cm0tcHJlLXNlcmlhbGl6ZSB0cmlnZ2VyJyk7CiAgICAgICAgcmV0dXJuIHRoaXM7 CiAgICB9CgogICAgLy8gcHJvdmlkZSBvcHBvcnR1bml0eSB0byBhbHRlciBmb3Jt IGRhdGEgYmVmb3JlIGl0IGlzIHNlcmlhbGl6ZWQKICAgIGlmIChvcHRpb25zLmJl Zm9yZVNlcmlhbGl6ZSAmJiBvcHRpb25zLmJlZm9yZVNlcmlhbGl6ZSh0aGlzLCBv cHRpb25zKSA9PT0gZmFsc2UpIHsKICAgICAgICBsb2coJ2FqYXhTdWJtaXQ6IHN1 Ym1pdCBhYm9ydGVkIHZpYSBiZWZvcmVTZXJpYWxpemUgY2FsbGJhY2snKTsKICAg ICAgICByZXR1cm4gdGhpczsKICAgIH0KCiAgICB2YXIgYSA9IHRoaXMuZm9ybVRv QXJyYXkob3B0aW9ucy5zZW1hbnRpYyk7CiAgICBpZiAob3B0aW9ucy5kYXRhKSB7 CiAgICAgICAgb3B0aW9ucy5leHRyYURhdGEgPSBvcHRpb25zLmRhdGE7CiAgICAg ICAgZm9yICh2YXIgbiBpbiBvcHRpb25zLmRhdGEpIHsKICAgICAgICAgIGlmKG9w dGlvbnMuZGF0YVtuXSBpbnN0YW5jZW9mIEFycmF5KSB7CiAgICAgICAgICAgIGZv ciAodmFyIGsgaW4gb3B0aW9ucy5kYXRhW25dKQogICAgICAgICAgICAgIGEucHVz aCggeyBuYW1lOiBuLCB2YWx1ZTogb3B0aW9ucy5kYXRhW25dW2tdIH0gKTsKICAg ICAgICAgIH0KICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGEucHVzaCggeyBu YW1lOiBuLCB2YWx1ZTogb3B0aW9ucy5kYXRhW25dIH0gKTsKICAgICAgICB9CiAg ICB9CgogICAgLy8gZ2l2ZSBwcmUtc3VibWl0IGNhbGxiYWNrIGFuIG9wcG9ydHVu aXR5IHRvIGFib3J0IHRoZSBzdWJtaXQKICAgIGlmIChvcHRpb25zLmJlZm9yZVN1 Ym1pdCAmJiBvcHRpb25zLmJlZm9yZVN1Ym1pdChhLCB0aGlzLCBvcHRpb25zKSA9 PT0gZmFsc2UpIHsKICAgICAgICBsb2coJ2FqYXhTdWJtaXQ6IHN1Ym1pdCBhYm9y dGVkIHZpYSBiZWZvcmVTdWJtaXQgY2FsbGJhY2snKTsKICAgICAgICByZXR1cm4g dGhpczsKICAgIH0KCiAgICAvLyBmaXJlIHZldG9hYmxlICd2YWxpZGF0ZScgZXZl bnQKICAgIHRoaXMudHJpZ2dlcignZm9ybS1zdWJtaXQtdmFsaWRhdGUnLCBbYSwg dGhpcywgb3B0aW9ucywgdmV0b10pOwogICAgaWYgKHZldG8udmV0bykgewogICAg ICAgIGxvZygnYWpheFN1Ym1pdDogc3VibWl0IHZldG9lZCB2aWEgZm9ybS1zdWJt aXQtdmFsaWRhdGUgdHJpZ2dlcicpOwogICAgICAgIHJldHVybiB0aGlzOwogICAg fQoKICAgIHZhciBxID0gJC5wYXJhbShhKTsKCiAgICBpZiAob3B0aW9ucy50eXBl LnRvVXBwZXJDYXNlKCkgPT0gJ0dFVCcpIHsKICAgICAgICBvcHRpb25zLnVybCAr PSAob3B0aW9ucy51cmwuaW5kZXhPZignPycpID49IDAgPyAnJicgOiAnPycpICsg cTsKICAgICAgICBvcHRpb25zLmRhdGEgPSBudWxsOyAgLy8gZGF0YSBpcyBudWxs IGZvciAnZ2V0JwogICAgfQogICAgZWxzZQogICAgICAgIG9wdGlvbnMuZGF0YSA9 IHE7IC8vIGRhdGEgaXMgdGhlIHF1ZXJ5IHN0cmluZyBmb3IgJ3Bvc3QnCgogICAg dmFyICRmb3JtID0gdGhpcywgY2FsbGJhY2tzID0gW107CiAgICBpZiAob3B0aW9u cy5yZXNldEZvcm0pIGNhbGxiYWNrcy5wdXNoKGZ1bmN0aW9uKCkgeyAkZm9ybS5y ZXNldEZvcm0oKTsgfSk7CiAgICBpZiAob3B0aW9ucy5jbGVhckZvcm0pIGNhbGxi YWNrcy5wdXNoKGZ1bmN0aW9uKCkgeyAkZm9ybS5jbGVhckZvcm0oKTsgfSk7Cgog ICAgLy8gcGVyZm9ybSBhIGxvYWQgb24gdGhlIHRhcmdldCBvbmx5IGlmIGRhdGFU eXBlIGlzIG5vdCBwcm92aWRlZAogICAgaWYgKCFvcHRpb25zLmRhdGFUeXBlICYm IG9wdGlvbnMudGFyZ2V0KSB7CiAgICAgICAgdmFyIG9sZFN1Y2Nlc3MgPSBvcHRp b25zLnN1Y2Nlc3MgfHwgZnVuY3Rpb24oKXt9OwogICAgICAgIGNhbGxiYWNrcy5w dXNoKGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgICAgJChvcHRpb25zLnRhcmdl dCkuaHRtbChkYXRhKS5lYWNoKG9sZFN1Y2Nlc3MsIGFyZ3VtZW50cyk7CiAgICAg ICAgfSk7CiAgICB9CiAgICBlbHNlIGlmIChvcHRpb25zLnN1Y2Nlc3MpCiAgICAg ICAgY2FsbGJhY2tzLnB1c2gob3B0aW9ucy5zdWNjZXNzKTsKCiAgICBvcHRpb25z LnN1Y2Nlc3MgPSBmdW5jdGlvbihkYXRhLCBzdGF0dXMpIHsKICAgICAgICBmb3Ig KHZhciBpPTAsIG1heD1jYWxsYmFja3MubGVuZ3RoOyBpIDwgbWF4OyBpKyspCiAg ICAgICAgICAgIGNhbGxiYWNrc1tpXS5hcHBseShvcHRpb25zLCBbZGF0YSwgc3Rh dHVzLCAkZm9ybV0pOwogICAgfTsKCiAgICAvLyBhcmUgdGhlcmUgZmlsZXMgdG8g dXBsb2FkPwogICAgdmFyIGZpbGVzID0gJCgnaW5wdXQ6ZmlsZScsIHRoaXMpLmZp ZWxkVmFsdWUoKTsKICAgIHZhciBmb3VuZCA9IGZhbHNlOwogICAgZm9yICh2YXIg aj0wOyBqIDwgZmlsZXMubGVuZ3RoOyBqKyspCiAgICAgICAgaWYgKGZpbGVzW2pd KQogICAgICAgICAgICBmb3VuZCA9IHRydWU7CgogICAgLy8gb3B0aW9ucy5pZnJh bWUgYWxsb3dzIHVzZXIgdG8gZm9yY2UgaWZyYW1lIG1vZGUKICAgaWYgKG9wdGlv bnMuaWZyYW1lIHx8IGZvdW5kKSB7CiAgICAgICAvLyBoYWNrIHRvIGZpeCBTYWZh cmkgaGFuZyAodGhhbmtzIHRvIFRpbSBNb2xlbmRpamsgZm9yIHRoaXMpCiAgICAg ICAvLyBzZWU6ICBodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvanF1ZXJ5 LWRldi9icm93c2VfdGhyZWFkL3RocmVhZC8zNjM5NWI3YWI1MTBkZDVkCiAgICAg ICBpZiAob3B0aW9ucy5jbG9zZUtlZXBBbGl2ZSkKICAgICAgICAgICAkLmdldChv cHRpb25zLmNsb3NlS2VlcEFsaXZlLCBmaWxlVXBsb2FkKTsKICAgICAgIGVsc2UK ICAgICAgICAgICBmaWxlVXBsb2FkKCk7CiAgICAgICB9CiAgIGVsc2UKICAgICAg ICQuYWpheChvcHRpb25zKTsKCiAgICAvLyBmaXJlICdub3RpZnknIGV2ZW50CiAg ICB0aGlzLnRyaWdnZXIoJ2Zvcm0tc3VibWl0LW5vdGlmeScsIFt0aGlzLCBvcHRp b25zXSk7CiAgICByZXR1cm4gdGhpczsKCgogICAgLy8gcHJpdmF0ZSBmdW5jdGlv biBmb3IgaGFuZGxpbmcgZmlsZSB1cGxvYWRzIChoYXQgdGlwIHRvIFlBSE9PISkK ICAgIGZ1bmN0aW9uIGZpbGVVcGxvYWQoKSB7CiAgICAgICAgdmFyIGZvcm0gPSAk Zm9ybVswXTsKCiAgICAgICAgaWYgKCQoJzppbnB1dFtuYW1lPXN1Ym1pdF0nLCBm b3JtKS5sZW5ndGgpIHsKICAgICAgICAgICAgYWxlcnQoJ0Vycm9yOiBGb3JtIGVs ZW1lbnRzIG11c3Qgbm90IGJlIG5hbWVkICJzdWJtaXQiLicpOwogICAgICAgICAg ICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB2YXIgb3B0cyA9ICQuZXh0ZW5k KHt9LCAkLmFqYXhTZXR0aW5ncywgb3B0aW9ucyk7CgkJdmFyIHMgPSAkLmV4dGVu ZCh0cnVlLCB7fSwgJC5leHRlbmQodHJ1ZSwge30sICQuYWpheFNldHRpbmdzKSwg b3B0cyk7CgogICAgICAgIHZhciBpZCA9ICdqcUZvcm1JTycgKyAobmV3IERhdGUo KS5nZXRUaW1lKCkpOwogICAgICAgIHZhciAkaW8gPSAkKCc8aWZyYW1lIGlkPSIn ICsgaWQgKyAnIiBuYW1lPSInICsgaWQgKyAnIiBzcmM9ImFib3V0OmJsYW5rIiAv PicpOwogICAgICAgIHZhciBpbyA9ICRpb1swXTsKCiAgICAgICAgJGlvLmNzcyh7 IHBvc2l0aW9uOiAnYWJzb2x1dGUnLCB0b3A6ICctMTAwMHB4JywgbGVmdDogJy0x MDAwcHgnIH0pOwoKICAgICAgICB2YXIgeGhyID0geyAvLyBtb2NrIG9iamVjdAog ICAgICAgICAgICBhYm9ydGVkOiAwLAogICAgICAgICAgICByZXNwb25zZVRleHQ6 IG51bGwsCiAgICAgICAgICAgIHJlc3BvbnNlWE1MOiBudWxsLAogICAgICAgICAg ICBzdGF0dXM6IDAsCiAgICAgICAgICAgIHN0YXR1c1RleHQ6ICduL2EnLAogICAg ICAgICAgICBnZXRBbGxSZXNwb25zZUhlYWRlcnM6IGZ1bmN0aW9uKCkge30sCiAg ICAgICAgICAgIGdldFJlc3BvbnNlSGVhZGVyOiBmdW5jdGlvbigpIHt9LAogICAg ICAgICAgICBzZXRSZXF1ZXN0SGVhZGVyOiBmdW5jdGlvbigpIHt9LAogICAgICAg ICAgICBhYm9ydDogZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB0aGlzLmFi b3J0ZWQgPSAxOwogICAgICAgICAgICAgICAgJGlvLmF0dHIoJ3NyYycsJ2Fib3V0 OmJsYW5rJyk7IC8vIGFib3J0IG9wIGluIHByb2dyZXNzCiAgICAgICAgICAgIH0K ICAgICAgICB9OwoKICAgICAgICB2YXIgZyA9IG9wdHMuZ2xvYmFsOwogICAgICAg IC8vIHRyaWdnZXIgYWpheCBnbG9iYWwgZXZlbnRzIHNvIHRoYXQgYWN0aXZpdHkv YmxvY2sgaW5kaWNhdG9ycyB3b3JrIGxpa2Ugbm9ybWFsCiAgICAgICAgaWYgKGcg JiYgISAkLmFjdGl2ZSsrKSAkLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpOwog ICAgICAgIGlmIChnKSAkLmV2ZW50LnRyaWdnZXIoImFqYXhTZW5kIiwgW3hociwg b3B0c10pOwoKCQlpZiAocy5iZWZvcmVTZW5kICYmIHMuYmVmb3JlU2VuZCh4aHIs IHMpID09PSBmYWxzZSkgewoJCQlzLmdsb2JhbCAmJiAkLmFjdGl2ZS0tOwoJCQly ZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICh4aHIuYWJvcnRlZCkKICAgICAg ICAgICAgcmV0dXJuOwoKICAgICAgICB2YXIgY2JJbnZva2VkID0gMDsKICAgICAg ICB2YXIgdGltZWRPdXQgPSAwOwoKICAgICAgICAvLyBhZGQgc3VibWl0dGluZyBl bGVtZW50IHRvIGRhdGEgaWYgd2Uga25vdyBpdAogICAgICAgIHZhciBzdWIgPSBm b3JtLmNsazsKICAgICAgICBpZiAoc3ViKSB7CiAgICAgICAgICAgIHZhciBuID0g c3ViLm5hbWU7CiAgICAgICAgICAgIGlmIChuICYmICFzdWIuZGlzYWJsZWQpIHsK ICAgICAgICAgICAgICAgIG9wdGlvbnMuZXh0cmFEYXRhID0gb3B0aW9ucy5leHRy YURhdGEgfHwge307CiAgICAgICAgICAgICAgICBvcHRpb25zLmV4dHJhRGF0YVtu XSA9IHN1Yi52YWx1ZTsKICAgICAgICAgICAgICAgIGlmIChzdWIudHlwZSA9PSAi aW1hZ2UiKSB7CiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5leHRyYURhdGFb bmFtZSsnLngnXSA9IGZvcm0uY2xrX3g7CiAgICAgICAgICAgICAgICAgICAgb3B0 aW9ucy5leHRyYURhdGFbbmFtZSsnLnknXSA9IGZvcm0uY2xrX3k7CiAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIHRh a2UgYSBicmVhdGggc28gdGhhdCBwZW5kaW5nIHJlcGFpbnRzIGdldCBzb21lIGNw dSB0aW1lIGJlZm9yZSB0aGUgdXBsb2FkIHN0YXJ0cwogICAgICAgIHNldFRpbWVv dXQoZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSBmb3JtIGF0 dHJzIGFyZSBzZXQKICAgICAgICAgICAgdmFyIHQgPSAkZm9ybS5hdHRyKCd0YXJn ZXQnKSwgYSA9ICRmb3JtLmF0dHIoJ2FjdGlvbicpOwoKCQkJLy8gdXBkYXRlIGZv cm0gYXR0cnMgaW4gSUUgZnJpZW5kbHkgd2F5CgkJCWZvcm0uc2V0QXR0cmlidXRl KCd0YXJnZXQnLGlkKTsKCQkJaWYgKGZvcm0uZ2V0QXR0cmlidXRlKCdtZXRob2Qn KSAhPSAnUE9TVCcpCgkJCQlmb3JtLnNldEF0dHJpYnV0ZSgnbWV0aG9kJywgJ1BP U1QnKTsKCQkJaWYgKGZvcm0uZ2V0QXR0cmlidXRlKCdhY3Rpb24nKSAhPSBvcHRz LnVybCkKCQkJCWZvcm0uc2V0QXR0cmlidXRlKCdhY3Rpb24nLCBvcHRzLnVybCk7 CgogICAgICAgICAgICAvLyBpZSBib3JrcyBpbiBzb21lIGNhc2VzIHdoZW4gc2V0 dGluZyBlbmNvZGluZwogICAgICAgICAgICBpZiAoISBvcHRpb25zLnNraXBFbmNv ZGluZ092ZXJyaWRlKSB7CiAgICAgICAgICAgICAgICAkZm9ybS5hdHRyKHsKICAg ICAgICAgICAgICAgICAgICBlbmNvZGluZzogJ211bHRpcGFydC9mb3JtLWRhdGEn LAogICAgICAgICAgICAgICAgICAgIGVuY3R5cGU6ICAnbXVsdGlwYXJ0L2Zvcm0t ZGF0YScKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAg ICAgICAvLyBzdXBwb3J0IHRpbW91dAogICAgICAgICAgICBpZiAob3B0cy50aW1l b3V0KQogICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgdGlt ZWRPdXQgPSB0cnVlOyBjYigpOyB9LCBvcHRzLnRpbWVvdXQpOwoKICAgICAgICAg ICAgLy8gYWRkICJleHRyYSIgZGF0YSB0byBmb3JtIGlmIHByb3ZpZGVkIGluIG9w dGlvbnMKICAgICAgICAgICAgdmFyIGV4dHJhSW5wdXRzID0gW107CiAgICAgICAg ICAgIHRyeSB7CiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5leHRyYURhdGEp CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgbiBpbiBvcHRpb25zLmV4dHJh RGF0YSkKICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFJbnB1dHMucHVzaCgK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoJzxpbnB1dCB0eXBlPSJoaWRk ZW4iIG5hbWU9IicrbisnIiB2YWx1ZT0iJytvcHRpb25zLmV4dHJhRGF0YVtuXSsn IiAvPicpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZFRv KGZvcm0pWzBdKTsKCiAgICAgICAgICAgICAgICAvLyBhZGQgaWZyYW1lIHRvIGRv YyBhbmQgc3VibWl0IHRoZSBmb3JtCiAgICAgICAgICAgICAgICAkaW8uYXBwZW5k VG8oJ2JvZHknKTsKICAgICAgICAgICAgICAgIGlvLmF0dGFjaEV2ZW50ID8gaW8u YXR0YWNoRXZlbnQoJ29ubG9hZCcsIGNiKSA6IGlvLmFkZEV2ZW50TGlzdGVuZXIo J2xvYWQnLCBjYiwgZmFsc2UpOwogICAgICAgICAgICAgICAgZm9ybS5zdWJtaXQo KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmaW5hbGx5IHsKICAgICAgICAg ICAgICAgIC8vIHJlc2V0IGF0dHJzIGFuZCByZW1vdmUgImV4dHJhIiBpbnB1dCBl bGVtZW50cwoJCQkJZm9ybS5zZXRBdHRyaWJ1dGUoJ2FjdGlvbicsYSk7CiAgICAg ICAgICAgICAgICB0ID8gZm9ybS5zZXRBdHRyaWJ1dGUoJ3RhcmdldCcsIHQpIDog JGZvcm0ucmVtb3ZlQXR0cigndGFyZ2V0Jyk7CiAgICAgICAgICAgICAgICAkKGV4 dHJhSW5wdXRzKS5yZW1vdmUoKTsKICAgICAgICAgICAgfQogICAgICAgIH0sIDEw KTsKCiAgICAgICAgdmFyIG51bGxDaGVja0ZsYWcgPSAwOwoKICAgICAgICBmdW5j dGlvbiBjYigpIHsKICAgICAgICAgICAgaWYgKGNiSW52b2tlZCsrKSByZXR1cm47 CgogICAgICAgICAgICBpby5kZXRhY2hFdmVudCA/IGlvLmRldGFjaEV2ZW50KCdv bmxvYWQnLCBjYikgOiBpby5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkJywgY2Is IGZhbHNlKTsKCiAgICAgICAgICAgIHZhciBvayA9IHRydWU7CiAgICAgICAgICAg IHRyeSB7CiAgICAgICAgICAgICAgICBpZiAodGltZWRPdXQpIHRocm93ICd0aW1l b3V0JzsKICAgICAgICAgICAgICAgIC8vIGV4dHJhY3QgdGhlIHNlcnZlciByZXNw b25zZSBmcm9tIHRoZSBpZnJhbWUKICAgICAgICAgICAgICAgIHZhciBkYXRhLCBk b2M7CgogICAgICAgICAgICAgICAgZG9jID0gaW8uY29udGVudFdpbmRvdyA/IGlv LmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQgOiBpby5jb250ZW50RG9jdW1lbnQgPyBp by5jb250ZW50RG9jdW1lbnQgOiBpby5kb2N1bWVudDsKCiAgICAgICAgICAgICAg ICBpZiAoKGRvYy5ib2R5ID09IG51bGwgfHwgZG9jLmJvZHkuaW5uZXJIVE1MID09 ICcnKSAmJiAhbnVsbENoZWNrRmxhZykgewogICAgICAgICAgICAgICAgICAgIC8v IGluIHNvbWUgYnJvd3NlcnMgKGNvdWdoLCBPcGVyYSA5LjIueCkgdGhlIGlmcmFt ZSBET00gaXMgbm90IGFsd2F5cyB0cmF2ZXJzYWJsZSB3aGVuCiAgICAgICAgICAg ICAgICAgICAgLy8gdGhlIG9ubG9hZCBjYWxsYmFjayBmaXJlcywgc28gd2UgZ2l2 ZSB0aGVtIGEgMm5kIGNoYW5jZQogICAgICAgICAgICAgICAgICAgIG51bGxDaGVj a0ZsYWcgPSAxOwogICAgICAgICAgICAgICAgICAgIGNiSW52b2tlZC0tOwogICAg ICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoY2IsIDEwMCk7CiAgICAgICAgICAg ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg ICAgIHhoci5yZXNwb25zZVRleHQgPSBkb2MuYm9keSA/IGRvYy5ib2R5LmlubmVy SFRNTCA6IG51bGw7CiAgICAgICAgICAgICAgICB4aHIucmVzcG9uc2VYTUwgPSBk b2MuWE1MRG9jdW1lbnQgPyBkb2MuWE1MRG9jdW1lbnQgOiBkb2M7CiAgICAgICAg ICAgICAgICB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIgPSBmdW5jdGlvbihoZWFkZXIp ewogICAgICAgICAgICAgICAgICAgIHZhciBoZWFkZXJzID0geydjb250ZW50LXR5 cGUnOiBvcHRzLmRhdGFUeXBlfTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4g aGVhZGVyc1toZWFkZXJdOwogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAg ICAgICBpZiAob3B0cy5kYXRhVHlwZSA9PSAnanNvbicgfHwgb3B0cy5kYXRhVHlw ZSA9PSAnc2NyaXB0JykgewogICAgICAgICAgICAgICAgICAgIHZhciB0YSA9IGRv Yy5nZXRFbGVtZW50c0J5VGFnTmFtZSgndGV4dGFyZWEnKVswXTsKICAgICAgICAg ICAgICAgICAgICB4aHIucmVzcG9uc2VUZXh0ID0gdGEgPyB0YS52YWx1ZSA6IHho ci5yZXNwb25zZVRleHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg ICBlbHNlIGlmIChvcHRzLmRhdGFUeXBlID09ICd4bWwnICYmICF4aHIucmVzcG9u c2VYTUwgJiYgeGhyLnJlc3BvbnNlVGV4dCAhPSBudWxsKSB7CiAgICAgICAgICAg ICAgICAgICAgeGhyLnJlc3BvbnNlWE1MID0gdG9YbWwoeGhyLnJlc3BvbnNlVGV4 dCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkYXRhID0gJC5o dHRwRGF0YSh4aHIsIG9wdHMuZGF0YVR5cGUpOwogICAgICAgICAgICB9CiAgICAg ICAgICAgIGNhdGNoKGUpewogICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKICAg ICAgICAgICAgICAgICQuaGFuZGxlRXJyb3Iob3B0cywgeGhyLCAnZXJyb3InLCBl KTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gb3JkZXJpbmcgb2YgdGhl c2UgY2FsbGJhY2tzL3RyaWdnZXJzIGlzIG9kZCwgYnV0IHRoYXQncyBob3cgJC5h amF4IGRvZXMgaXQKICAgICAgICAgICAgaWYgKG9rKSB7CiAgICAgICAgICAgICAg ICBvcHRzLnN1Y2Nlc3MoZGF0YSwgJ3N1Y2Nlc3MnKTsKICAgICAgICAgICAgICAg IGlmIChnKSAkLmV2ZW50LnRyaWdnZXIoImFqYXhTdWNjZXNzIiwgW3hociwgb3B0 c10pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChnKSAkLmV2ZW50LnRy aWdnZXIoImFqYXhDb21wbGV0ZSIsIFt4aHIsIG9wdHNdKTsKICAgICAgICAgICAg aWYgKGcgJiYgISAtLSQuYWN0aXZlKSAkLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9w Iik7CiAgICAgICAgICAgIGlmIChvcHRzLmNvbXBsZXRlKSBvcHRzLmNvbXBsZXRl KHhociwgb2sgPyAnc3VjY2VzcycgOiAnZXJyb3InKTsKCiAgICAgICAgICAgIC8v IGNsZWFuIHVwCiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAg ICAgICAgICAgICAgICAkaW8ucmVtb3ZlKCk7CiAgICAgICAgICAgICAgICB4aHIu cmVzcG9uc2VYTUwgPSBudWxsOwogICAgICAgICAgICB9LCAxMDApOwogICAgICAg IH07CgogICAgICAgIGZ1bmN0aW9uIHRvWG1sKHMsIGRvYykgewogICAgICAgICAg ICBpZiAod2luZG93LkFjdGl2ZVhPYmplY3QpIHsKICAgICAgICAgICAgICAgIGRv YyA9IG5ldyBBY3RpdmVYT2JqZWN0KCdNaWNyb3NvZnQuWE1MRE9NJyk7CiAgICAg ICAgICAgICAgICBkb2MuYXN5bmMgPSAnZmFsc2UnOwogICAgICAgICAgICAgICAg ZG9jLmxvYWRYTUwocyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQog ICAgICAgICAgICAgICAgZG9jID0gKG5ldyBET01QYXJzZXIoKSkucGFyc2VGcm9t U3RyaW5nKHMsICd0ZXh0L3htbCcpOwogICAgICAgICAgICByZXR1cm4gKGRvYyAm JiBkb2MuZG9jdW1lbnRFbGVtZW50ICYmIGRvYy5kb2N1bWVudEVsZW1lbnQudGFn TmFtZSAhPSAncGFyc2VyZXJyb3InKSA/IGRvYyA6IG51bGw7CiAgICAgICAgfTsK ICAgIH07Cn07CgovKioKICogYWpheEZvcm0oKSBwcm92aWRlcyBhIG1lY2hhbmlz bSBmb3IgZnVsbHkgYXV0b21hdGluZyBmb3JtIHN1Ym1pc3Npb24uCiAqCiAqIFRo ZSBhZHZhbnRhZ2VzIG9mIHVzaW5nIHRoaXMgbWV0aG9kIGluc3RlYWQgb2YgYWph eFN1Ym1pdCgpIGFyZToKICoKICogMTogVGhpcyBtZXRob2Qgd2lsbCBpbmNsdWRl IGNvb3JkaW5hdGVzIGZvciA8aW5wdXQgdHlwZT0iaW1hZ2UiIC8+IGVsZW1lbnRz IChpZiB0aGUgZWxlbWVudAogKiAgICBpcyB1c2VkIHRvIHN1Ym1pdCB0aGUgZm9y bSkuCiAqIDIuIFRoaXMgbWV0aG9kIHdpbGwgaW5jbHVkZSB0aGUgc3VibWl0IGVs ZW1lbnQncyBuYW1lL3ZhbHVlIGRhdGEgKGZvciB0aGUgZWxlbWVudCB0aGF0IHdh cwogKiAgICB1c2VkIHRvIHN1Ym1pdCB0aGUgZm9ybSkuCiAqIDMuIFRoaXMgbWV0 aG9kIGJpbmRzIHRoZSBzdWJtaXQoKSBtZXRob2QgdG8gdGhlIGZvcm0gZm9yIHlv dS4KICoKICogVGhlIG9wdGlvbnMgYXJndW1lbnQgZm9yIGFqYXhGb3JtIHdvcmtz IGV4YWN0bHkgYXMgaXQgZG9lcyBmb3IgYWpheFN1Ym1pdC4gIGFqYXhGb3JtIG1l cmVseQogKiBwYXNzZXMgdGhlIG9wdGlvbnMgYXJndW1lbnQgYWxvbmcgYWZ0ZXIg cHJvcGVybHkgYmluZGluZyBldmVudHMgZm9yIHN1Ym1pdCBlbGVtZW50cyBhbmQK ICogdGhlIGZvcm0gaXRzZWxmLgogKi8KJC5mbi5hamF4Rm9ybSA9IGZ1bmN0aW9u KG9wdGlvbnMpIHsKICAgIHJldHVybiB0aGlzLmFqYXhGb3JtVW5iaW5kKCkuYmlu ZCgnc3VibWl0LmZvcm0tcGx1Z2luJyxmdW5jdGlvbigpIHsKICAgICAgICAkKHRo aXMpLmFqYXhTdWJtaXQob3B0aW9ucyk7CiAgICAgICAgcmV0dXJuIGZhbHNlOwog ICAgfSkuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAvLyBzdG9yZSBvcHRpb25z IGluIGhhc2gKICAgICAgICAkKCI6c3VibWl0LGlucHV0OmltYWdlIiwgdGhpcyku YmluZCgnY2xpY2suZm9ybS1wbHVnaW4nLGZ1bmN0aW9uKGUpIHsKICAgICAgICAg ICAgdmFyIGZvcm0gPSB0aGlzLmZvcm07CiAgICAgICAgICAgIGZvcm0uY2xrID0g dGhpczsKICAgICAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAnaW1hZ2UnKSB7CiAg ICAgICAgICAgICAgICBpZiAoZS5vZmZzZXRYICE9IHVuZGVmaW5lZCkgewogICAg ICAgICAgICAgICAgICAgIGZvcm0uY2xrX3ggPSBlLm9mZnNldFg7CiAgICAgICAg ICAgICAgICAgICAgZm9ybS5jbGtfeSA9IGUub2Zmc2V0WTsKICAgICAgICAgICAg ICAgIH0gZWxzZSBpZiAodHlwZW9mICQuZm4ub2Zmc2V0ID09ICdmdW5jdGlvbicp IHsgLy8gdHJ5IHRvIHVzZSBkaW1lbnNpb25zIHBsdWdpbgogICAgICAgICAgICAg ICAgICAgIHZhciBvZmZzZXQgPSAkKHRoaXMpLm9mZnNldCgpOwogICAgICAgICAg ICAgICAgICAgIGZvcm0uY2xrX3ggPSBlLnBhZ2VYIC0gb2Zmc2V0LmxlZnQ7CiAg ICAgICAgICAgICAgICAgICAgZm9ybS5jbGtfeSA9IGUucGFnZVkgLSBvZmZzZXQu dG9wOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg ICBmb3JtLmNsa194ID0gZS5wYWdlWCAtIHRoaXMub2Zmc2V0TGVmdDsKICAgICAg ICAgICAgICAgICAgICBmb3JtLmNsa195ID0gZS5wYWdlWSAtIHRoaXMub2Zmc2V0 VG9wOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAg IC8vIGNsZWFyIGZvcm0gdmFycwogICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0 aW9uKCkgeyBmb3JtLmNsayA9IGZvcm0uY2xrX3ggPSBmb3JtLmNsa195ID0gbnVs bDsgfSwgMTApOwogICAgICAgIH0pOwogICAgfSk7Cn07CgovLyBhamF4Rm9ybVVu YmluZCB1bmJpbmRzIHRoZSBldmVudCBoYW5kbGVycyB0aGF0IHdlcmUgYm91bmQg YnkgYWpheEZvcm0KJC5mbi5hamF4Rm9ybVVuYmluZCA9IGZ1bmN0aW9uKCkgewog ICAgdGhpcy51bmJpbmQoJ3N1Ym1pdC5mb3JtLXBsdWdpbicpOwogICAgcmV0dXJu IHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAkKCI6c3VibWl0LGlucHV0 OmltYWdlIiwgdGhpcykudW5iaW5kKCdjbGljay5mb3JtLXBsdWdpbicpOwogICAg fSk7Cgp9OwoKLyoqCiAqIGZvcm1Ub0FycmF5KCkgZ2F0aGVycyBmb3JtIGVsZW1l bnQgZGF0YSBpbnRvIGFuIGFycmF5IG9mIG9iamVjdHMgdGhhdCBjYW4KICogYmUg cGFzc2VkIHRvIGFueSBvZiB0aGUgZm9sbG93aW5nIGFqYXggZnVuY3Rpb25zOiAk LmdldCwgJC5wb3N0LCBvciBsb2FkLgogKiBFYWNoIG9iamVjdCBpbiB0aGUgYXJy YXkgaGFzIGJvdGggYSAnbmFtZScgYW5kICd2YWx1ZScgcHJvcGVydHkuICBBbiBl eGFtcGxlIG9mCiAqIGFuIGFycmF5IGZvciBhIHNpbXBsZSBsb2dpbiBmb3JtIG1p Z2h0IGJlOgogKgogKiBbIHsgbmFtZTogJ3VzZXJuYW1lJywgdmFsdWU6ICdqcmVz aWcnIH0sIHsgbmFtZTogJ3Bhc3N3b3JkJywgdmFsdWU6ICdzZWNyZXQnIH0gXQog KgogKiBJdCBpcyB0aGlzIGFycmF5IHRoYXQgaXMgcGFzc2VkIHRvIHByZS1zdWJt aXQgY2FsbGJhY2sgZnVuY3Rpb25zIHByb3ZpZGVkIHRvIHRoZQogKiBhamF4U3Vi bWl0KCkgYW5kIGFqYXhGb3JtKCkgbWV0aG9kcy4KICovCiQuZm4uZm9ybVRvQXJy YXkgPSBmdW5jdGlvbihzZW1hbnRpYykgewogICAgdmFyIGEgPSBbXTsKICAgIGlm ICh0aGlzLmxlbmd0aCA9PSAwKSByZXR1cm4gYTsKCiAgICB2YXIgZm9ybSA9IHRo aXNbMF07CiAgICB2YXIgZWxzID0gc2VtYW50aWMgPyBmb3JtLmdldEVsZW1lbnRz QnlUYWdOYW1lKCcqJykgOiBmb3JtLmVsZW1lbnRzOwogICAgaWYgKCFlbHMpIHJl dHVybiBhOwogICAgZm9yKHZhciBpPTAsIG1heD1lbHMubGVuZ3RoOyBpIDwgbWF4 OyBpKyspIHsKICAgICAgICB2YXIgZWwgPSBlbHNbaV07CiAgICAgICAgdmFyIG4g PSBlbC5uYW1lOwogICAgICAgIGlmICghbikgY29udGludWU7CgogICAgICAgIGlm IChzZW1hbnRpYyAmJiBmb3JtLmNsayAmJiBlbC50eXBlID09ICJpbWFnZSIpIHsK ICAgICAgICAgICAgLy8gaGFuZGxlIGltYWdlIGlucHV0cyBvbiB0aGUgZmx5IHdo ZW4gc2VtYW50aWMgPT0gdHJ1ZQogICAgICAgICAgICBpZighZWwuZGlzYWJsZWQg JiYgZm9ybS5jbGsgPT0gZWwpCiAgICAgICAgICAgICAgICBhLnB1c2goe25hbWU6 IG4rJy54JywgdmFsdWU6IGZvcm0uY2xrX3h9LCB7bmFtZTogbisnLnknLCB2YWx1 ZTogZm9ybS5jbGtfeX0pOwogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9 CgogICAgICAgIHZhciB2ID0gJC5maWVsZFZhbHVlKGVsLCB0cnVlKTsKICAgICAg ICBpZiAodiAmJiB2LmNvbnN0cnVjdG9yID09IEFycmF5KSB7CiAgICAgICAgICAg IGZvcih2YXIgaj0wLCBqbWF4PXYubGVuZ3RoOyBqIDwgam1heDsgaisrKQogICAg ICAgICAgICAgICAgYS5wdXNoKHtuYW1lOiBuLCB2YWx1ZTogdltqXX0pOwogICAg ICAgIH0KICAgICAgICBlbHNlIGlmICh2ICE9PSBudWxsICYmIHR5cGVvZiB2ICE9 ICd1bmRlZmluZWQnKQogICAgICAgICAgICBhLnB1c2goe25hbWU6IG4sIHZhbHVl OiB2fSk7CiAgICB9CgogICAgaWYgKCFzZW1hbnRpYyAmJiBmb3JtLmNsaykgewog ICAgICAgIC8vIGlucHV0IHR5cGU9PSdpbWFnZScgYXJlIG5vdCBmb3VuZCBpbiBl bGVtZW50cyBhcnJheSEgaGFuZGxlIHRoZW0gaGVyZQogICAgICAgIHZhciBpbnB1 dHMgPSBmb3JtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpOwogICAgICAg IGZvcih2YXIgaT0wLCBtYXg9aW5wdXRzLmxlbmd0aDsgaSA8IG1heDsgaSsrKSB7 CiAgICAgICAgICAgIHZhciBpbnB1dCA9IGlucHV0c1tpXTsKICAgICAgICAgICAg dmFyIG4gPSBpbnB1dC5uYW1lOwogICAgICAgICAgICBpZihuICYmICFpbnB1dC5k aXNhYmxlZCAmJiBpbnB1dC50eXBlID09ICJpbWFnZSIgJiYgZm9ybS5jbGsgPT0g aW5wdXQpCiAgICAgICAgICAgICAgICBhLnB1c2goe25hbWU6IG4rJy54JywgdmFs dWU6IGZvcm0uY2xrX3h9LCB7bmFtZTogbisnLnknLCB2YWx1ZTogZm9ybS5jbGtf eX0pOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBhOwp9OwoKLyoqCiAqIFNl cmlhbGl6ZXMgZm9ybSBkYXRhIGludG8gYSAnc3VibWl0dGFibGUnIHN0cmluZy4g VGhpcyBtZXRob2Qgd2lsbCByZXR1cm4gYSBzdHJpbmcKICogaW4gdGhlIGZvcm1h dDogbmFtZTE9dmFsdWUxJmFtcDtuYW1lMj12YWx1ZTIKICovCiQuZm4uZm9ybVNl cmlhbGl6ZSA9IGZ1bmN0aW9uKHNlbWFudGljKSB7CiAgICAvL2hhbmQgb2ZmIHRv IGpRdWVyeS5wYXJhbSBmb3IgcHJvcGVyIGVuY29kaW5nCiAgICByZXR1cm4gJC5w YXJhbSh0aGlzLmZvcm1Ub0FycmF5KHNlbWFudGljKSk7Cn07CgovKioKICogU2Vy aWFsaXplcyBhbGwgZmllbGQgZWxlbWVudHMgaW4gdGhlIGpRdWVyeSBvYmplY3Qg aW50byBhIHF1ZXJ5IHN0cmluZy4KICogVGhpcyBtZXRob2Qgd2lsbCByZXR1cm4g YSBzdHJpbmcgaW4gdGhlIGZvcm1hdDogbmFtZTE9dmFsdWUxJmFtcDtuYW1lMj12 YWx1ZTIKICovCiQuZm4uZmllbGRTZXJpYWxpemUgPSBmdW5jdGlvbihzdWNjZXNz ZnVsKSB7CiAgICB2YXIgYSA9IFtdOwogICAgdGhpcy5lYWNoKGZ1bmN0aW9uKCkg ewogICAgICAgIHZhciBuID0gdGhpcy5uYW1lOwogICAgICAgIGlmICghbikgcmV0 dXJuOwogICAgICAgIHZhciB2ID0gJC5maWVsZFZhbHVlKHRoaXMsIHN1Y2Nlc3Nm dWwpOwogICAgICAgIGlmICh2ICYmIHYuY29uc3RydWN0b3IgPT0gQXJyYXkpIHsK ICAgICAgICAgICAgZm9yICh2YXIgaT0wLG1heD12Lmxlbmd0aDsgaSA8IG1heDsg aSsrKQogICAgICAgICAgICAgICAgYS5wdXNoKHtuYW1lOiBuLCB2YWx1ZTogdltp XX0pOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICh2ICE9PSBudWxsICYmIHR5 cGVvZiB2ICE9ICd1bmRlZmluZWQnKQogICAgICAgICAgICBhLnB1c2goe25hbWU6 IHRoaXMubmFtZSwgdmFsdWU6IHZ9KTsKICAgIH0pOwogICAgLy9oYW5kIG9mZiB0 byBqUXVlcnkucGFyYW0gZm9yIHByb3BlciBlbmNvZGluZwogICAgcmV0dXJuICQu cGFyYW0oYSk7Cn07CgovKioKICogUmV0dXJucyB0aGUgdmFsdWUocykgb2YgdGhl IGVsZW1lbnQgaW4gdGhlIG1hdGNoZWQgc2V0LiAgRm9yIGV4YW1wbGUsIGNvbnNp ZGVyIHRoZSBmb2xsb3dpbmcgZm9ybToKICoKICogIDxmb3JtPjxmaWVsZHNldD4K ICogICAgICA8aW5wdXQgbmFtZT0iQSIgdHlwZT0idGV4dCIgLz4KICogICAgICA8 aW5wdXQgbmFtZT0iQSIgdHlwZT0idGV4dCIgLz4KICogICAgICA8aW5wdXQgbmFt ZT0iQiIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSJCMSIgLz4KICogICAgICA8aW5w dXQgbmFtZT0iQiIgdHlwZT0iY2hlY2tib3giIHZhbHVlPSJCMiIvPgogKiAgICAg IDxpbnB1dCBuYW1lPSJDIiB0eXBlPSJyYWRpbyIgdmFsdWU9IkMxIiAvPgogKiAg ICAgIDxpbnB1dCBuYW1lPSJDIiB0eXBlPSJyYWRpbyIgdmFsdWU9IkMyIiAvPgog KiAgPC9maWVsZHNldD48L2Zvcm0+CiAqCiAqICB2YXIgdiA9ICQoJzp0ZXh0Jyku ZmllbGRWYWx1ZSgpOwogKiAgLy8gaWYgbm8gdmFsdWVzIGFyZSBlbnRlcmVkIGlu dG8gdGhlIHRleHQgaW5wdXRzCiAqICB2ID09IFsnJywnJ10KICogIC8vIGlmIHZh bHVlcyBlbnRlcmVkIGludG8gdGhlIHRleHQgaW5wdXRzIGFyZSAnZm9vJyBhbmQg J2JhcicKICogIHYgPT0gWydmb28nLCdiYXInXQogKgogKiAgdmFyIHYgPSAkKCc6 Y2hlY2tib3gnKS5maWVsZFZhbHVlKCk7CiAqICAvLyBpZiBuZWl0aGVyIGNoZWNr Ym94IGlzIGNoZWNrZWQKICogIHYgPT09IHVuZGVmaW5lZAogKiAgLy8gaWYgYm90 aCBjaGVja2JveGVzIGFyZSBjaGVja2VkCiAqICB2ID09IFsnQjEnLCAnQjInXQog KgogKiAgdmFyIHYgPSAkKCc6cmFkaW8nKS5maWVsZFZhbHVlKCk7CiAqICAvLyBp ZiBuZWl0aGVyIHJhZGlvIGlzIGNoZWNrZWQKICogIHYgPT09IHVuZGVmaW5lZAog KiAgLy8gaWYgZmlyc3QgcmFkaW8gaXMgY2hlY2tlZAogKiAgdiA9PSBbJ0MxJ10K ICoKICogVGhlIHN1Y2Nlc3NmdWwgYXJndW1lbnQgY29udHJvbHMgd2hldGhlciBv ciBub3QgdGhlIGZpZWxkIGVsZW1lbnQgbXVzdCBiZSAnc3VjY2Vzc2Z1bCcKICog KHBlciBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9pbnRlcmFjdC9mb3Jtcy5o dG1sI3N1Y2Nlc3NmdWwtY29udHJvbHMpLgogKiBUaGUgZGVmYXVsdCB2YWx1ZSBv ZiB0aGUgc3VjY2Vzc2Z1bCBhcmd1bWVudCBpcyB0cnVlLiAgSWYgdGhpcyB2YWx1 ZSBpcyBmYWxzZSB0aGUgdmFsdWUocykKICogZm9yIGVhY2ggZWxlbWVudCBpcyBy ZXR1cm5lZC4KICoKICogTm90ZTogVGhpcyBtZXRob2QgKmFsd2F5cyogcmV0dXJu cyBhbiBhcnJheS4gIElmIG5vIHZhbGlkIHZhbHVlIGNhbiBiZSBkZXRlcm1pbmVk IHRoZQogKiAgICAgICBhcnJheSB3aWxsIGJlIGVtcHR5LCBvdGhlcndpc2UgaXQg d2lsbCBjb250YWluIG9uZSBvciBtb3JlIHZhbHVlcy4KICovCiQuZm4uZmllbGRW YWx1ZSA9IGZ1bmN0aW9uKHN1Y2Nlc3NmdWwpIHsKICAgIGZvciAodmFyIHZhbD1b XSwgaT0wLCBtYXg9dGhpcy5sZW5ndGg7IGkgPCBtYXg7IGkrKykgewogICAgICAg IHZhciBlbCA9IHRoaXNbaV07CiAgICAgICAgdmFyIHYgPSAkLmZpZWxkVmFsdWUo ZWwsIHN1Y2Nlc3NmdWwpOwogICAgICAgIGlmICh2ID09PSBudWxsIHx8IHR5cGVv ZiB2ID09ICd1bmRlZmluZWQnIHx8ICh2LmNvbnN0cnVjdG9yID09IEFycmF5ICYm ICF2Lmxlbmd0aCkpCiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIHYuY29u c3RydWN0b3IgPT0gQXJyYXkgPyAkLm1lcmdlKHZhbCwgdikgOiB2YWwucHVzaCh2 KTsKICAgIH0KICAgIHJldHVybiB2YWw7Cn07CgovKioKICogUmV0dXJucyB0aGUg dmFsdWUgb2YgdGhlIGZpZWxkIGVsZW1lbnQuCiAqLwokLmZpZWxkVmFsdWUgPSBm dW5jdGlvbihlbCwgc3VjY2Vzc2Z1bCkgewogICAgdmFyIG4gPSBlbC5uYW1lLCB0 ID0gZWwudHlwZSwgdGFnID0gZWwudGFnTmFtZS50b0xvd2VyQ2FzZSgpOwogICAg aWYgKHR5cGVvZiBzdWNjZXNzZnVsID09ICd1bmRlZmluZWQnKSBzdWNjZXNzZnVs ID0gdHJ1ZTsKCiAgICBpZiAoc3VjY2Vzc2Z1bCAmJiAoIW4gfHwgZWwuZGlzYWJs ZWQgfHwgdCA9PSAncmVzZXQnIHx8IHQgPT0gJ2J1dHRvbicgfHwKICAgICAgICAo dCA9PSAnY2hlY2tib3gnIHx8IHQgPT0gJ3JhZGlvJykgJiYgIWVsLmNoZWNrZWQg fHwKICAgICAgICAodCA9PSAnc3VibWl0JyB8fCB0ID09ICdpbWFnZScpICYmIGVs LmZvcm0gJiYgZWwuZm9ybS5jbGsgIT0gZWwgfHwKICAgICAgICB0YWcgPT0gJ3Nl bGVjdCcgJiYgZWwuc2VsZWN0ZWRJbmRleCA9PSAtMSkpCiAgICAgICAgICAgIHJl dHVybiBudWxsOwoKICAgIGlmICh0YWcgPT0gJ3NlbGVjdCcpIHsKICAgICAgICB2 YXIgaW5kZXggPSBlbC5zZWxlY3RlZEluZGV4OwogICAgICAgIGlmIChpbmRleCA8 IDApIHJldHVybiBudWxsOwogICAgICAgIHZhciBhID0gW10sIG9wcyA9IGVsLm9w dGlvbnM7CiAgICAgICAgdmFyIG9uZSA9ICh0ID09ICdzZWxlY3Qtb25lJyk7CiAg ICAgICAgdmFyIG1heCA9IChvbmUgPyBpbmRleCsxIDogb3BzLmxlbmd0aCk7CiAg ICAgICAgZm9yKHZhciBpPShvbmUgPyBpbmRleCA6IDApOyBpIDwgbWF4OyBpKysp IHsKICAgICAgICAgICAgdmFyIG9wID0gb3BzW2ldOwogICAgICAgICAgICBpZiAo b3Auc2VsZWN0ZWQpIHsKCQkJCXZhciB2ID0gb3AudmFsdWU7CgkJCQlpZiAoIXYp IC8vIGV4dHJhIHBhaW4gZm9yIElFLi4uCiAgICAgICAgICAgICAgICAJdiA9IChv cC5hdHRyaWJ1dGVzICYmIG9wLmF0dHJpYnV0ZXNbJ3ZhbHVlJ10gJiYgIShvcC5h dHRyaWJ1dGVzWyd2YWx1ZSddLnNwZWNpZmllZCkpID8gb3AudGV4dCA6IG9wLnZh bHVlOwogICAgICAgICAgICAgICAgaWYgKG9uZSkgcmV0dXJuIHY7CiAgICAgICAg ICAgICAgICBhLnB1c2godik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAg ICAgcmV0dXJuIGE7CiAgICB9CiAgICByZXR1cm4gZWwudmFsdWU7Cn07CgovKioK ICogQ2xlYXJzIHRoZSBmb3JtIGRhdGEuICBUYWtlcyB0aGUgZm9sbG93aW5nIGFj dGlvbnMgb24gdGhlIGZvcm0ncyBpbnB1dCBmaWVsZHM6CiAqICAtIGlucHV0IHRl eHQgZmllbGRzIHdpbGwgaGF2ZSB0aGVpciAndmFsdWUnIHByb3BlcnR5IHNldCB0 byB0aGUgZW1wdHkgc3RyaW5nCiAqICAtIHNlbGVjdCBlbGVtZW50cyB3aWxsIGhh dmUgdGhlaXIgJ3NlbGVjdGVkSW5kZXgnIHByb3BlcnR5IHNldCB0byAtMQogKiAg LSBjaGVja2JveCBhbmQgcmFkaW8gaW5wdXRzIHdpbGwgaGF2ZSB0aGVpciAnY2hl Y2tlZCcgcHJvcGVydHkgc2V0IHRvIGZhbHNlCiAqICAtIGlucHV0cyBvZiB0eXBl IHN1Ym1pdCwgYnV0dG9uLCByZXNldCwgYW5kIGhpZGRlbiB3aWxsICpub3QqIGJl IGVmZmVjdGVkCiAqICAtIGJ1dHRvbiBlbGVtZW50cyB3aWxsICpub3QqIGJlIGVm ZmVjdGVkCiAqLwokLmZuLmNsZWFyRm9ybSA9IGZ1bmN0aW9uKCkgewogICAgcmV0 dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAkKCdpbnB1dCxzZWxl Y3QsdGV4dGFyZWEnLCB0aGlzKS5jbGVhckZpZWxkcygpOwogICAgfSk7Cn07Cgov KioKICogQ2xlYXJzIHRoZSBzZWxlY3RlZCBmb3JtIGVsZW1lbnRzLgogKi8KJC5m bi5jbGVhckZpZWxkcyA9ICQuZm4uY2xlYXJJbnB1dHMgPSBmdW5jdGlvbigpIHsK ICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIHQg PSB0aGlzLnR5cGUsIHRhZyA9IHRoaXMudGFnTmFtZS50b0xvd2VyQ2FzZSgpOwog ICAgICAgIGlmICh0ID09ICd0ZXh0JyB8fCB0ID09ICdwYXNzd29yZCcgfHwgdGFn ID09ICd0ZXh0YXJlYScpCiAgICAgICAgICAgIHRoaXMudmFsdWUgPSAnJzsKICAg ICAgICBlbHNlIGlmICh0ID09ICdjaGVja2JveCcgfHwgdCA9PSAncmFkaW8nKQog ICAgICAgICAgICB0aGlzLmNoZWNrZWQgPSBmYWxzZTsKICAgICAgICBlbHNlIGlm ICh0YWcgPT0gJ3NlbGVjdCcpCiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRl eCA9IC0xOwogICAgfSk7Cn07CgovKioKICogUmVzZXRzIHRoZSBmb3JtIGRhdGEu ICBDYXVzZXMgYWxsIGZvcm0gZWxlbWVudHMgdG8gYmUgcmVzZXQgdG8gdGhlaXIg b3JpZ2luYWwgdmFsdWUuCiAqLwokLmZuLnJlc2V0Rm9ybSA9IGZ1bmN0aW9uKCkg ewogICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAvLyBn dWFyZCBhZ2FpbnN0IGFuIGlucHV0IHdpdGggdGhlIG5hbWUgb2YgJ3Jlc2V0Jwog ICAgICAgIC8vIG5vdGUgdGhhdCBJRSByZXBvcnRzIHRoZSByZXNldCBmdW5jdGlv biBhcyBhbiAnb2JqZWN0JwogICAgICAgIGlmICh0eXBlb2YgdGhpcy5yZXNldCA9 PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgdGhpcy5yZXNldCA9PSAnb2JqZWN0JyAm JiAhdGhpcy5yZXNldC5ub2RlVHlwZSkpCiAgICAgICAgICAgIHRoaXMucmVzZXQo KTsKICAgIH0pOwp9OwoKLyoqCiAqIEVuYWJsZXMgb3IgZGlzYWJsZXMgYW55IG1h dGNoaW5nIGVsZW1lbnRzLgogKi8KJC5mbi5lbmFibGUgPSBmdW5jdGlvbihiKSB7 CiAgICBpZiAoYiA9PSB1bmRlZmluZWQpIGIgPSB0cnVlOwogICAgcmV0dXJuIHRo aXMuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICB0aGlzLmRpc2FibGVkID0gIWI7 CiAgICB9KTsKfTsKCi8qKgogKiBDaGVja3MvdW5jaGVja3MgYW55IG1hdGNoaW5n IGNoZWNrYm94ZXMgb3IgcmFkaW8gYnV0dG9ucyBhbmQKICogc2VsZWN0cy9kZXNl bGVjdHMgYW5kIG1hdGNoaW5nIG9wdGlvbiBlbGVtZW50cy4KICovCiQuZm4uc2Vs ZWN0ZWQgPSBmdW5jdGlvbihzZWxlY3QpIHsKICAgIGlmIChzZWxlY3QgPT0gdW5k ZWZpbmVkKSBzZWxlY3QgPSB0cnVlOwogICAgcmV0dXJuIHRoaXMuZWFjaChmdW5j dGlvbigpIHsKICAgICAgICB2YXIgdCA9IHRoaXMudHlwZTsKICAgICAgICBpZiAo dCA9PSAnY2hlY2tib3gnIHx8IHQgPT0gJ3JhZGlvJykKICAgICAgICAgICAgdGhp cy5jaGVja2VkID0gc2VsZWN0OwogICAgICAgIGVsc2UgaWYgKHRoaXMudGFnTmFt ZS50b0xvd2VyQ2FzZSgpID09ICdvcHRpb24nKSB7CiAgICAgICAgICAgIHZhciAk c2VsID0gJCh0aGlzKS5wYXJlbnQoJ3NlbGVjdCcpOwogICAgICAgICAgICBpZiAo c2VsZWN0ICYmICRzZWxbMF0gJiYgJHNlbFswXS50eXBlID09ICdzZWxlY3Qtb25l JykgewogICAgICAgICAgICAgICAgLy8gZGVzZWxlY3QgYWxsIG90aGVyIG9wdGlv bnMKICAgICAgICAgICAgICAgICRzZWwuZmluZCgnb3B0aW9uJykuc2VsZWN0ZWQo ZmFsc2UpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQg PSBzZWxlY3Q7CiAgICAgICAgfQogICAgfSk7Cn07CgovLyBoZWxwZXIgZm4gZm9y IGNvbnNvbGUgbG9nZ2luZwovLyBzZXQgJC5mbi5hamF4U3VibWl0LmRlYnVnIHRv IHRydWUgdG8gZW5hYmxlIGRlYnVnIGxvZ2dpbmcKZnVuY3Rpb24gbG9nKCkgewog ICAgaWYgKCQuZm4uYWpheFN1Ym1pdC5kZWJ1ZyAmJiB3aW5kb3cuY29uc29sZSAm JiB3aW5kb3cuY29uc29sZS5sb2cpCiAgICAgICAgd2luZG93LmNvbnNvbGUubG9n KCdbanF1ZXJ5LmZvcm1dICcgKyBBcnJheS5wcm90b3R5cGUuam9pbi5jYWxsKGFy Z3VtZW50cywnJykpOwp9OwoKfSkoalF1ZXJ5KTsK ------------N4eNwrm1gWfA2YNEcWro80 Content-Disposition: inline; filename=ajaxCallback.js Content-Type: application/x-javascript; charset=utf-8; name=ajaxCallback.js Content-Location: http://www.cds73.fr/prive/javascript/ajaxCallback.js Content-Transfer-Encoding: Base64 Ly8gQSBwbHVnaW4gdGhhdCB3cmFwcyBhbGwgYWpheCBjYWxscyBpbnRyb2R1Y2lu ZyBhIGZpeGVkIGNhbGxiYWNrIGZ1bmN0aW9uIG9uIGFqYXggY29tcGxldGUKaWYo IWpRdWVyeS5sb2FkX2hhbmRsZXJzKSB7CglqUXVlcnkubG9hZF9oYW5kbGVycyA9 IG5ldyBBcnJheSgpOwoJLy8KCS8vIEFkZCBhIGZ1bmN0aW9uIHRvIHRoZSBsaXN0 IG9mIHRob3NlIHRvIGJlIGV4ZWN1dGVkIG9uIGFqYXggbG9hZCBjb21wbGV0ZQoJ Ly8KCWZ1bmN0aW9uIG9uQWpheExvYWQoZikgewoJCWpRdWVyeS5sb2FkX2hhbmRs ZXJzLnB1c2goZik7Cgl9OwoKCS8vCgkvLyBDYWxsIHRoZSBmdW5jdGlvbnMgdGhh dCBoYXZlIGJlZW4gYWRkZWQgdG8gb25BamF4TG9hZAoJLy8KCWZ1bmN0aW9uIHRy aWdnZXJBamF4TG9hZChyb290KSB7CgkJZm9yICggdmFyIGkgPSAwOyBpIDwgalF1 ZXJ5LmxvYWRfaGFuZGxlcnMubGVuZ3RoOyBpKysgKQoJCQlqUXVlcnkubG9hZF9o YW5kbGVyc1tpXS5hcHBseSggcm9vdCApOwoJfTsKCgkvLyBqUXVlcnkgdXNlcyBf bG9hZCwgd2UgdXNlIF9BQ0Jsb2FkCglqUXVlcnkuZm4uX0FDQmxvYWQgPSBqUXVl cnkuZm4ubG9hZDsKCglqUXVlcnkuZm4ubG9hZCA9IGZ1bmN0aW9uKCB1cmwsIHBh cmFtcywgY2FsbGJhY2sgKSB7CgoJCWNhbGxiYWNrID0gY2FsbGJhY2sgfHwgZnVu Y3Rpb24oKXt9OwoKCQkvLyBJZiB0aGUgc2Vjb25kIHBhcmFtZXRlciB3YXMgcHJv dmlkZWQKCQlpZiAoIHBhcmFtcyApIHsKCQkJLy8gSWYgaXQncyBhIGZ1bmN0aW9u CgkJCWlmICggcGFyYW1zLmNvbnN0cnVjdG9yID09IEZ1bmN0aW9uICkgewoJCQkJ Ly8gV2UgYXNzdW1lIHRoYXQgaXQncyB0aGUgY2FsbGJhY2sKCQkJCWNhbGxiYWNr ID0gcGFyYW1zOwoJCQkJcGFyYW1zID0gbnVsbDsKCQkJfQoJCX0KCQl2YXIgY2Fs bGJhY2syID0gZnVuY3Rpb24ocmVzLHN0YXR1cykge3RyaWdnZXJBamF4TG9hZCh0 aGlzKTtjYWxsYmFjayhyZXMsc3RhdHVzKTt9OwoKCQlyZXR1cm4gdGhpcy5fQUNC bG9hZCggdXJsLCBwYXJhbXMsIGNhbGxiYWNrMiApOwoJfTsKCglqUXVlcnkuX0FD QmFqYXggPSBqUXVlcnkuYWpheDsKCglqUXVlcnkuYWpheCA9IGZ1bmN0aW9uKHR5 cGUpIHsKCQkvL0lmIGNhbGxlZCBieSBfbG9hZCBleGl0IG5vdyBiZWNhdXNlIHRo ZSBjYWxsYmFjayBoYXMgYWxyZWFkeSBiZWVuIHNldAoJCWlmIChqUXVlcnkuYWph eC5jYWxsZXI9PWpRdWVyeS5mbi5fbG9hZCkgcmV0dXJuIGpRdWVyeS5fQUNCYWph eCggdHlwZSk7CgkJCXZhciBvcmlnX2NvbXBsZXRlID0gdHlwZS5jb21wbGV0ZSB8 fCBmdW5jdGlvbigpIHt9OwoJCQl0eXBlLmNvbXBsZXRlID0gZnVuY3Rpb24ocmVz LHN0YXR1cykgewoJCQkJLy8gRG8gbm90IGZpcmUgT25BamF4TG9hZCBpZiB0aGUg ZGF0YVR5cGUgaXMgbm90IGh0bWwKCQkJCXZhciBkYXRhVHlwZSA9IHR5cGUuZGF0 YVR5cGU7CgkJCQl2YXIgY3QgPSAocmVzICYmICh0eXBlb2YgcmVzLmdldFJlc3Bv bnNlSGVhZGVyID09ICdmdW5jdGlvbicpKQoJCQkJCT8gcmVzLmdldFJlc3BvbnNl SGVhZGVyKCJjb250ZW50LXR5cGUiKTogJyc7CgkJCQl2YXIgeG1sID0gIWRhdGFU eXBlICYmIGN0ICYmIGN0LmluZGV4T2YoInhtbCIpID49IDA7CgkJCQlvcmlnX2Nv bXBsZXRlKHJlcyxzdGF0dXMpOwoJCQkJaWYoIWRhdGFUeXBlICYmICF4bWwgfHwg ZGF0YVR5cGUgPT0gImh0bWwiKSB0cmlnZ2VyQWpheExvYWQoZG9jdW1lbnQpOwoJ CX07CgkJcmV0dXJuIGpRdWVyeS5fQUNCYWpheCh0eXBlKTsKCX07Cgp9CgovLyBh bmltYXRpb24gZHUgYmxvYyBjaWJsZSBwb3VyIGZhaXJlIHBhdGllbnRlcgpqUXVl cnkuZm4uYW5pbWVhamF4ID0gZnVuY3Rpb24oZW5kKSB7Cgl0aGlzLmNoaWxkcmVu KCkuY3NzKCdvcGFjaXR5JywgMC41KTsKCWlmICh0eXBlb2YgYWpheF9pbWFnZV9z ZWFyY2hpbmcgIT0gJ3VuZGVmaW5lZCcpewoJCXZhciBpID0gKHRoaXMpLmZpbmQo Jy5pbWFnZV9sb2FkaW5nJyk7CgkJaWYgKGkubGVuZ3RoKSBpLmVxKDApLmh0bWwo YWpheF9pbWFnZV9zZWFyY2hpbmcpOwoJCWVsc2UgdGhpcy5wcmVwZW5kKCc8c3Bh biBjbGFzcz0iaW1hZ2VfbG9hZGluZyI+JythamF4X2ltYWdlX3NlYXJjaGluZysn PC9zcGFuPicpOwoJfQoJcmV0dXJuIHRoaXM7IC8vIGRvbid0IGJyZWFrIHRoZSBj aGFpbgp9CgovLyBzJ2lsIG4nZXN0IHBhcyB0b3RhbGVtZW50IHZpc2libGUsIHNj cm9sbGVyIHBvdXIgcG9zaXRpb25uZXIKLy8gbGUgYmxvYyBjaWJsZSBlbiBoYXV0 IGRlIGwnZWNyYW4KLy8gc2kgZm9yY2UgPSB0cnVlLCBzY3JvbGxlciBkYW5zIHRv dXMgbGVzIGNhcwpqUXVlcnkuZm4ucG9zaXRpb25uZXIgPSBmdW5jdGlvbihmb3Jj ZSkgewoJdmFyIG9mZnNldCA9IGpRdWVyeSh0aGlzKS5vZmZzZXQoeydzY3JvbGwn OmZhbHNlfSk7Cgl2YXIgaGF1dGV1ciA9IHBhcnNlSW50KGpRdWVyeSh0aGlzKS5j c3MoJ2hlaWdodCcpKTsKCXZhciBzY3JvbGx0b3AgPSBzZWxmWydwYWdlWU9mZnNl dCddIHx8CgkJalF1ZXJ5LmJveE1vZGVsICYmIGRvY3VtZW50LmRvY3VtZW50RWxl bWVudFsgJ3Njcm9sbFRvcCcgXSB8fAoJCWRvY3VtZW50LmJvZHlbICdzY3JvbGxU b3AnIF07Cgl2YXIgaCA9IGpRdWVyeSh3aW5kb3cpLmhlaWdodCgpOwoJdmFyIHNj cm9sbD0wOwoKCWlmIChmb3JjZSB8fCBvZmZzZXRbJ3RvcCddIC0gNSA8PSBzY3Jv bGx0b3ApCgkJc2Nyb2xsID0gb2Zmc2V0Wyd0b3AnXSAtIDU7CgllbHNlIGlmIChv ZmZzZXRbJ3RvcCddICsgaGF1dGV1ciAtIGggKyA1ID4gc2Nyb2xsdG9wKQoJCXNj cm9sbCA9IE1hdGgubWluKG9mZnNldFsndG9wJ10gLSA1LCBvZmZzZXRbJ3RvcCdd ICsgaGF1dGV1ciAtIGggKyAxNSk7CglpZiAoc2Nyb2xsKQoJCWpRdWVyeSgnaHRt bCxib2R5JykKCQkuYW5pbWF0ZSh7c2Nyb2xsVG9wOiBzY3JvbGx9LCAzMDApOwoK CS8vIHBvc2l0aW9ubmVyIGxlIGN1cnNldXIgZGFucyBsYSBwcmVtaWVyZSB6b25l IGRlIHNhaXNpZQoJalF1ZXJ5KGpRdWVyeSgnKicsIHRoaXMpLmZpbHRlcignaW5w dXRbdHlwZT10ZXh0XSx0ZXh0YXJlYScpWzBdKS5mb2N1cygpOwoJcmV0dXJuIHRo aXM7IC8vIGRvbid0IGJyZWFrIHRoZSBjaGFpbgp9CgovLyBkZXV4IGZvbmN0aW9u cyBwb3VyIHJlbmRyZSBsJ2FqYXggY29tcGF0aWJsZSBKYXdzCnZhciB2aXJ0dWFs YnVmZmVyX2lkPSdzcGlwX3ZpcnR1YWxidWZmZXJ1cGRhdGUnOwpmdW5jdGlvbiBp bml0UmVhZGVyQnVmZmVyKCl7CglpZiAoalF1ZXJ5KCcjJyt2aXJ0dWFsYnVmZmVy X2lkKS5sZW5ndGgpIHJldHVybjsKCWpRdWVyeSgnYm9keScpLmFwcGVuZCgnPHAg c3R5bGU9ImZsb2F0OmxlZnQ7d2lkdGg6MDtoZWlnaHQ6MDtwb3NpdGlvbjphYnNv bHV0ZTtsZWZ0Oi01MDAwO3RvcDotNTAwMDsiPjxpbnB1dCB0eXBlPSJoaWRkZW4i IG5hbWU9IicrdmlydHVhbGJ1ZmZlcl9pZCsnIiBpZD0iJyt2aXJ0dWFsYnVmZmVy X2lkKyciIHZhbHVlPSIwIiAvPjwvcD4nKTsKfQpmdW5jdGlvbiB1cGRhdGVSZWFk ZXJCdWZmZXIoKXsKCXZhciBpID0galF1ZXJ5KCcjJyt2aXJ0dWFsYnVmZmVyX2lk KTsKCWlmICghaS5sZW5ndGgpIHJldHVybjsKCS8vIGluY3JlbWVudG9ucyBsJ2lu cHV0IGhpZGRlbiwgY2UgcXVpIGEgcG91ciBlZmZldCBkZSBmb3JjZXIgbGUgcmFm cmFpY2hpc3NlbWVudCBkdQoJLy8gYnVmZmVyIGR1IGxlY3RldXIgZCdlY3JhbiAo YXUgbW9pbnMgZGFucyBKYXdzKQoJaS5hdHRyKCd2YWx1ZScscGFyc2VJbnQoaS5h dHRyKCd2YWx1ZScpKSsxKTsKfQoKLy8gcmVjaGFyZ2VtZW50IGFqYXggZCd1biBm b3JtdWxhaXJlIGR5bmFtaXF1ZSBpbXBsZW1lbnRlIHBhciBmb3JtdWxhaXJlcy94 eHguaHRtbApqUXVlcnkuZm4uZm9ybXVsYWlyZV9keW5fYWpheCA9IGZ1bmN0aW9u KHRhcmdldCkgewoJaWYgKHRoaXMubGVuZ3RoKQoJCWluaXRSZWFkZXJCdWZmZXIo KTsKICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgewoJCXZhciBjaWJsZSA9 IHRhcmdldCB8fCB0aGlzOwoJCWpRdWVyeSgnZm9ybTpub3QoLm5vYWpheCwuYm91 dG9uX2FjdGlvbl9wb3N0KScsIHRoaXMpLmVhY2goZnVuY3Rpb24oKXsKCQl2YXIg bGVmb3JtID0gdGhpczsKCQl2YXIgbGVjbGssbGVjbGtfeCxsZWNsa195OwoJCWpR dWVyeSh0aGlzKS5wcmVwZW5kKCI8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd2 YXJfYWpheCcgdmFsdWU9J2Zvcm0nIC8+IikKCQkuYWpheEZvcm0oewoJCQliZWZv cmVTdWJtaXQ6IGZ1bmN0aW9uKCl7CgkJCQkvLyBtZW1vcmlzZXIgbGUgYm91dG9u IGNsaXF1ZSwgZW4gY2FzIGRlIHJlcG9zdCBub24gYWpheAoJCQkJbGVjbGsgPSBs ZWZvcm0uY2xrOwogICAgICAgIGlmIChsZWNsaykgewogICAgICAgICAgICB2YXIg biA9IGxlY2xrLm5hbWU7CiAgICAgICAgICAgIGlmIChuICYmICFsZWNsay5kaXNh YmxlZCAmJiBsZWNsay50eXBlID09ICJpbWFnZSIpIHsKCQkJCQkJCWxlY2xrX3gg PSBsZWZvcm0uY2xrX3g7CgkJCQkJCQlsZWNsa195ID0gbGVmb3JtLmNsa195Owog ICAgICAgICAgICB9CiAgICAgICAgfQoJCQkJalF1ZXJ5KGNpYmxlKS5hZGRDbGFz cygnbG9hZGluZycpLmFuaW1lYWpheCgpOwoJCQl9LAoJCQlzdWNjZXNzOiBmdW5j dGlvbihjKXsKCQkJCWlmIChjPT0nbm9hamF4Jyl7CgkJCQkJLy8gbGUgc2VydmV1 ciBuZSB2ZXV0IHBhcyB0cmFpdGVyIGNlIGZvcm11bGFpcmUgZW4gYWpheAoJCQkJ CS8vIG9uIHJlc3VibWl0IHNhbnMgYWpheAoJCQkJCWpRdWVyeSgiaW5wdXRbbmFt ZT12YXJfYWpheF0iLGxlZm9ybSkucmVtb3ZlKCk7CgkJCQkJLy8gc2kgb24gYSBt ZW1vcmlzZSBsZSBub20gZXQgbGEgdmFsZXVyIGR1IGJvdXRvbiBjbGlxdWUKCQkJ CQkvLyBsZXMgcmVpbmplY3RlciBkYW5zIGxlIGRvbSBzb3VzIGZvcm1lIGRlIGlu cHV0IGhpZGRlbgoJCQkJCS8vIHBvdXIgcXVlIGxlIHNlcnZldXIgbGVzIHJlY29p dmUKCQkJCQlpZiAobGVjbGspewogICAgICAgICAgICB2YXIgbiA9IGxlY2xrLm5h bWU7CiAgICAgICAgICAgIGlmIChuICYmICFsZWNsay5kaXNhYmxlZCkgewoJCQkJ CQkJalF1ZXJ5KGxlZm9ybSkucHJlcGVuZCgiPGlucHV0IHR5cGU9J2hpZGRlbicg bmFtZT0nIituKyInIHZhbHVlPSciK2xlY2xrLnZhbHVlKyInIC8+Iik7CgkJCQkJ CQlpZiAobGVjbGsudHlwZSA9PSAiaW1hZ2UiKSB7CgkJCQkJCQkJalF1ZXJ5KGxl Zm9ybSkucHJlcGVuZCgiPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nIituKyIu eCcgdmFsdWU9JyIrbGVmb3JtLmNsa194KyInIC8+Iik7CgkJCQkJCQkJalF1ZXJ5 KGxlZm9ybSkucHJlcGVuZCgiPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nIitu KyIueScgdmFsdWU9JyIrbGVmb3JtLmNsa195KyInIC8+Iik7CgkJCQkJCQl9CgkJ CQkJCX0KCQkJCQl9CgkJCQkJalF1ZXJ5KGxlZm9ybSkuYWpheEZvcm1VbmJpbmQo KS5zdWJtaXQoKTsKCQkJCX0KCQkJCWVsc2UgewoJCQkJCXZhciByZWN1ID0galF1 ZXJ5KCc8ZGl2PjxcL2Rpdj4nKS5odG1sKGMpOwoJCQkJCXZhciBkID0galF1ZXJ5 KCdkaXYuYWpheCcscmVjdSk7CgkJCQkJaWYgKGQubGVuZ3RoKQoJCQkJCQljID0g ZC5odG1sKCk7CgkJCQkJalF1ZXJ5KGNpYmxlKQoJCQkJCS5yZW1vdmVDbGFzcygn bG9hZGluZycpCgkJCQkJLmh0bWwoYyk7CgkJCQkJdmFyIGEgPSBqUXVlcnkoJ2E6 Zmlyc3QnLHJlY3UpLmVxKDApOwoJCQkJCWlmIChhLmxlbmd0aCAmJiBhLmlzKCdh W25hbWU9YWpheF9hbmNyZV0nKSl7CgkJCQkJCWEgPSBhLmF0dHIoJ2hyZWYnKTsK CQkJCQkJc2V0VGltZW91dChmdW5jdGlvbigpewoJCQkJCQkJalF1ZXJ5KGEsY2li bGUpLnBvc2l0aW9ubmVyKHRydWUpOwoJCQkJCQkJLy9hID0gYS5zcGxpdCgnIycp OwoJCQkJCQkJLy93aW5kb3cubG9jYXRpb24uaGFzaCA9IGFbMV07CgkJCQkJCX0s MTApOwoJCQkJCX0KCQkJCQllbHNlewoJCQkJCQlqUXVlcnkoY2libGUpLnBvc2l0 aW9ubmVyKGZhbHNlKTsKCQkJCQkJaWYgKGEubGVuZ3RoICYmIGEuaXMoJ2FbbmFt ZT1hamF4X3JlZGlyZWN0XScpKXsKCQkJCQkJCWEgPSBhLmF0dHIoJ2hyZWYnKTsK CQkJCQkJCWpRdWVyeShjaWJsZSkuYWRkQ2xhc3MoJ2xvYWRpbmcnKS5hbmltZWFq YXgoKTsKCQkJCQkJCXNldFRpbWVvdXQoZnVuY3Rpb24oKXsKCQkJCQkJCQlkb2N1 bWVudC5sb2NhdGlvbi5yZXBsYWNlKGEpOwoJCQkJCQkJfSwxMCk7CgkJCQkJCX0K CQkJCQl9CgkJCQkJLy8gb24gbGUgcmVmYWl0IGEgbGEgbWFpbiBpY2kgY2FyIG9u QWpheExvYWQgaW50ZXJ2aWVudCBzdXIgdW5lIGlmcmFtZSBkYW5zIElFNiBldCBu b24gcGFzIHN1ciBsZSBkb2N1bWVudAoJCQkJCXRyaWdnZXJBamF4TG9hZChjaWJs ZSk7CgkJCQkJLy8gbWV0dHJlIGEgam91ciBsZSBidWZmZXIgZHUgbmF2aWdhdGV1 ciBwb3VyIGFpZGVyIGphd3MgZXQgYXV0cmVzIHJlYWRlcnMKCQkJCQl1cGRhdGVS ZWFkZXJCdWZmZXIoKTsKCQkJCX0KCQkJfSwKCQkJaWZyYW1lOiBqUXVlcnkuYnJv d3Nlci5tc2llCgkJfSkKCQkuYWRkQ2xhc3MoJ25vYWpheCcpIC8vIHByZXZpZW50 IHF1J29uIG4nYWpheGVyYSBwYXMgZGV1eCBmb2lzIGxlIG1lbWUgZm9ybXVsYWly ZSBlbiBjYXMgZGUgYWpheGxvYWQKCQk7CgkJfSk7CiAgfSk7Cn0KCi8vIHBlcm1l dHRyZSBkJ3V0aWxpc2VyIG9uY2xpY2s9J3JldHVybiBjb25maXJtKCdldGVzIHZv dXMgc3VyPycpOycgc3VyIHVuIGxpZW4gYWpheAp2YXIgYWpheF9jb25maXJtPXRy dWU7CnZhciBhamF4X2NvbmZpcm1fZGF0ZT0wOwp2YXIgc3BpcF9jb25maXJtID0g d2luZG93LmNvbmZpcm07CmZ1bmN0aW9uIF9jb25maXJtKG1lc3NhZ2UpewoJYWph eF9jb25maXJtID0gc3BpcF9jb25maXJtKG1lc3NhZ2UpOwoJaWYgKCFhamF4X2Nv bmZpcm0pIHsKCQl2YXIgZCA9IG5ldyBEYXRlKCk7CgkJYWpheF9jb25maXJtX2Rh dGUgPSBkLmdldFRpbWUoKTsKCX0KCXJldHVybiBhamF4X2NvbmZpcm07Cn0Kd2lu ZG93LmNvbmZpcm0gPSBfY29uZmlybTsKCi8vIHJlY2hhcmdlbWVudCBhamF4IGQn dW5lIG5vaXNldHRlIGltcGxlbWVudGVlIHBhciB7YWpheH0KLy8gYXZlYyBtaXNl IGVuIGNhY2hlIGRlcyB1cmwKdmFyIHByZWxvYWRlZF91cmxzID0ge307CnZhciBh amF4YmxvY19zZWxlY3RldXI7CmpRdWVyeS5mbi5hamF4YmxvYyA9IGZ1bmN0aW9u KCkgewoJaWYgKHRoaXMubGVuZ3RoKQoJCWluaXRSZWFkZXJCdWZmZXIoKTsKCiAg cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKCSAgalF1ZXJ5KCdkaXYuYWph eGJsb2MnLHRoaXMpLmFqYXhibG9jKCk7IC8vIHRyYWl0ZXIgbGVzIGVuZmFudHMg ZCdhYm9yZAoJCXZhciBibG9jZnJhZyA9IGpRdWVyeSh0aGlzKTsKCgkJdmFyIG9u X3BhZ2luYXRpb24gPSBmdW5jdGlvbihjKSB7CgkJCWpRdWVyeShibG9jZnJhZykK CQkJLmh0bWwoYykKCQkJLnJlbW92ZUNsYXNzKCdsb2FkaW5nJyk7CgkJCXZhciBh ID0galF1ZXJ5KCdhOmZpcnN0JyxqUXVlcnkoYmxvY2ZyYWcpKS5lcSgwKTsKCQkJ aWYgKGEubGVuZ3RoICYmIGEuaXMoJ2FbbmFtZT1hamF4X2FuY3JlXScpCgkJCSl7 CgkJCQlhID0gYS5hdHRyKCdocmVmJyk7CgkJCQlzZXRUaW1lb3V0KGZ1bmN0aW9u KCl7CgkJCQkJalF1ZXJ5KGEsYmxvY2ZyYWcpLnBvc2l0aW9ubmVyKHRydWUpOwoJ CQkJCS8vYSA9IGEuc3BsaXQoJyMnKTsKCQkJCQkvL3dpbmRvdy5sb2NhdGlvbi5o YXNoID0gYVsxXTsKCQkJCX0sMTApOwoJCQl9CgkJCWVsc2UgewoJCQkJalF1ZXJ5 KGJsb2NmcmFnKS5wb3NpdGlvbm5lcihmYWxzZSk7CgkJCX0KCQkJdXBkYXRlUmVh ZGVyQnVmZmVyKCk7CgkJfQoKCQl2YXIgYWpheF9lbnYgPSAoIiIrYmxvY2ZyYWcu YXR0cignY2xhc3MnKSkubWF0Y2goL2Vudi0oW14gXSspLyk7CgkJaWYgKCFhamF4 X2VudiB8fCBhamF4X2Vudj09dW5kZWZpbmVkKSByZXR1cm47CgkJYWpheF9lbnYg PSBhamF4X2VudlsxXTsKCQlpZiAoYWpheGJsb2Nfc2VsZWN0ZXVyPT11bmRlZmlu ZWQpCgkJCWFqYXhibG9jX3NlbGVjdGV1ciA9ICcucGFnaW5hdGlvbiBhLGEuYWph eCc7CgoJCWpRdWVyeShhamF4YmxvY19zZWxlY3RldXIsdGhpcykubm90KCcubm9h amF4JykuZWFjaChmdW5jdGlvbigpewoJCQl2YXIgdXJsID0gdGhpcy5ocmVmLnNw bGl0KCcjJyk7CgkJCXVybFswXSArPSAodXJsWzBdLmluZGV4T2YoIj8iKT4wID8g JyYnOic/JykrJ3Zhcl9hamF4PTEmdmFyX2FqYXhfZW52PScrZW5jb2RlVVJJQ29t cG9uZW50KGFqYXhfZW52KTsKCQkJaWYgKHVybFsxXSkKCQkJCXVybFswXSArPSAi JnZhcl9hamF4X2FuY3JlPSIrdXJsWzFdOwoJCQlpZiAoalF1ZXJ5KHRoaXMpLmlz KCcucHJlbG9hZCcpICYmICFwcmVsb2FkZWRfdXJsc1t1cmxbMF1dKSB7CgkJCQlq UXVlcnkuYWpheCh7InVybCI6dXJsWzBdLCJzdWNjZXNzIjpmdW5jdGlvbihyKXtw cmVsb2FkZWRfdXJsc1t1cmxbMF1dPXI7fX0pOwoJCQl9CgkJCWpRdWVyeSh0aGlz KS5jbGljayhmdW5jdGlvbigpewoJCQkJaWYgKCFhamF4X2NvbmZpcm0pIHsKCQkJ CQkvLyBvbiByZWFybWUgcG91ciBsZSBwcm9jaGFpbiBjbGljCgkJCQkJYWpheF9j b25maXJtPXRydWU7CgkJCQkJdmFyIGQgPSBuZXcgRGF0ZSgpOwoJCQkJCS8vIHNl dWxlIHVuZSBhbm51bGF0aW9uIHBhciBjb25maXJtKCkgZGFucyBsZXMgMiBzZWNv bmRlcyBwcmVjZWRlbnRlcyBlc3QgcHJpc2UgZW4gY29tcHRlCgkJCQkJaWYgKChk LmdldFRpbWUoKS1hamF4X2NvbmZpcm1fZGF0ZSk8PTIpCgkJCQkJCXJldHVybiBm YWxzZTsKCQkJCX0KCQkJCWpRdWVyeShibG9jZnJhZykKCQkJCS5hbmltZWFqYXgo KQoJCQkJLmFkZENsYXNzKCdsb2FkaW5nJyk7CgkJCQlpZiAocHJlbG9hZGVkX3Vy bHNbdXJsWzBdXSkgewoJCQkJCW9uX3BhZ2luYXRpb24ocHJlbG9hZGVkX3VybHNb dXJsWzBdXSk7CgkJCQkJdHJpZ2dlckFqYXhMb2FkKGRvY3VtZW50KTsKCQkJCX0g ZWxzZSB7CgkJCQkJalF1ZXJ5LmFqYXgoewoJCQkJCQl1cmw6IHVybFswXSwKCQkJ CQkJc3VjY2VzczogZnVuY3Rpb24oYyl7CgkJCQkJCQlvbl9wYWdpbmF0aW9uKGMp OwoJCQkJCQkJcHJlbG9hZGVkX3VybHNbdXJsWzBdXSA9IGM7CgkJCQkJCX0KCQkJ CQl9KTsKCQkJCX0KCQkJCXJldHVybiBmYWxzZTsKCQkJfSk7CgkJfSkuYWRkQ2xh c3MoJ25vYWpheCcpOyAvLyBwcmV2aWVudCBxdSdvbiBhamF4IHBhcyBkZXV4IGZv aXMgbGUgbWVtZSBsaWVuCgkJalF1ZXJ5KCdmb3JtLmJvdXRvbl9hY3Rpb25fcG9z dC5hamF4Om5vdCgubm9hamF4KScsIHRoaXMpLmVhY2goZnVuY3Rpb24oKXsKCQkJ dmFyIGxlZm9ybSA9IHRoaXM7CgkJCXZhciB1cmwgPSBqUXVlcnkodGhpcykuYXR0 cignYWN0aW9uJykuc3BsaXQoJyMnKTsKCQkJalF1ZXJ5KHRoaXMpCgkJCS5wcmVw ZW5kKCI8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd2YXJfYWpheCcgdmFsdWU9 JzEnIC8+PGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0ndmFyX2FqYXhfZW52JyB2 YWx1ZT0nIisoYWpheF9lbnYpKyInIC8+IisodXJsWzFdPyI8aW5wdXQgdHlwZT0n aGlkZGVuJyBuYW1lPSd2YXJfYWpheF9hbmNyZScgdmFsdWU9JyIrdXJsWzFdKyIn IC8+IjoiIikpCgkJCS5hamF4Rm9ybSh7CgkJCQliZWZvcmVTdWJtaXQ6IGZ1bmN0 aW9uKCl7CgkJCQkJalF1ZXJ5KGJsb2NmcmFnKS5hZGRDbGFzcygnbG9hZGluZycp LmFuaW1lYWpheCgpOwoJCQkJfSwKCQkJCXN1Y2Nlc3M6IGZ1bmN0aW9uKGMpewoJ CQkJCW9uX3BhZ2luYXRpb24oYyk7CgkJCQkJcHJlbG9hZGVkX3VybHMgPSB7fTsg Ly8gb24gdmlkZSBsZSBjYWNoZSBkZXMgdXJscyBjYXIgb24gYSBmYWl0IHVuZSBh Y3Rpb24gZW4gYmRkCgkJCQkJLy8gb24gbGUgcmVmYWl0IGEgbGEgbWFpbiBpY2kg Y2FyIG9uQWpheExvYWQgaW50ZXJ2aWVudCBzdXIgdW5lIGlmcmFtZSBkYW5zIElF NiBldCBub24gcGFzIHN1ciBsZSBkb2N1bWVudAoJCQkJCWpRdWVyeShibG9jZnJh ZykKCQkJCQkuYWpheGJsb2MoKTsKCQkJCX0sCgkJCQlpZnJhbWU6IGpRdWVyeS5i cm93c2VyLm1zaWUKCQkJfSkKCQkJLmFkZENsYXNzKCdub2FqYXgnKSAvLyBwcmV2 aWVudCBxdSdvbiBuJ2FqYXhlcmEgcGFzIGRldXggZm9pcyBsZSBtZW1lIGZvcm11 bGFpcmUgZW4gY2FzIGRlIGFqYXhsb2FkCgkJCTsKCQl9KTsKICB9KTsKfTsKCi8v IEFqYXhlciBsZXMgZm9ybXVsYWlyZXMgcXVpIGxlIGRlbWFuZGVudCwgYXUgZGVt YXJyYWdlCgpqUXVlcnkoZnVuY3Rpb24oKSB7CglqUXVlcnkoJ2Zvcm06bm90KC5i b3V0b25fYWN0aW9uX3Bvc3QpJykucGFyZW50cygnZGl2LmFqYXgnKQoJLmZvcm11 bGFpcmVfZHluX2FqYXgoKTsKCWpRdWVyeSgnZGl2LmFqYXhibG9jJykuYWpheGJs b2MoKTsKfSk7CgovLyAuLi4gZXQgYSBjaGFxdWUgZm9pcyBxdWUgbGUgRE9NIGNo YW5nZQpvbkFqYXhMb2FkKGZ1bmN0aW9uKCkgewoJaWYgKGpRdWVyeSl7CgkJalF1 ZXJ5KCdmb3JtOm5vdCguYm91dG9uX2FjdGlvbl9wb3N0KScsIHRoaXMpLnBhcmVu dHMoJ2Rpdi5hamF4JykKCQkuZm9ybXVsYWlyZV9keW5fYWpheCgpOwoJCWpRdWVy eSgnZGl2LmFqYXhibG9jJywgdGhpcykKCQkuYWpheGJsb2MoKTsKCX0KfSk7Cg== ------------N4eNwrm1gWfA2YNEcWro80 Content-Disposition: inline; filename=jcarousellite_1.0.1.js Content-Type: application/x-javascript; charset=utf-8; name=jcarousellite_1.0.1.js Content-Location: http://www.cds73.fr/plugins/sarkaspip_300/scripts/jcarousellite_1.0.1.js Content-Transfer-Encoding: Base64 LyoqCiAqIGpDYXJvdXNlbExpdGUgLSBqUXVlcnkgcGx1Z2luIHRvIG5hdmlnYXRl IGltYWdlcy9hbnkgY29udGVudCBpbiBhIGNhcm91c2VsIHN0eWxlIHdpZGdldC4K ICogQHJlcXVpcmVzIGpRdWVyeSB2MS4yIG9yIGFib3ZlCiAqCiAqIGh0dHA6Ly9n bWFyd2FoYS5jb20vanF1ZXJ5L2pjYXJvdXNlbGxpdGUvCiAqCiAqIENvcHlyaWdo dCAoYykgMjAwNyBHYW5lc2hqaSBNYXJ3YWhhIChnbWFyd2FoYS5jb20pCiAqIER1 YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzOgogKiBo dHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBo cAogKiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLmh0bWwKICoKICog VmVyc2lvbjogMS4wLjEKICogTm90ZTogUmVxdWlyZXMganF1ZXJ5IDEuMiBvciBh Ym92ZSBmcm9tIHZlcnNpb24gMS4wLjEKICovCgovKioKICogQ3JlYXRlcyBhIGNh cm91c2VsLXN0eWxlIG5hdmlnYXRpb24gd2lkZ2V0IGZvciBpbWFnZXMvYW55LWNv bnRlbnQgZnJvbSBhIHNpbXBsZSBIVE1MIG1hcmt1cC4KICoKICogVGhlIEhUTUwg bWFya3VwIHRoYXQgaXMgdXNlZCB0byBidWlsZCB0aGUgY2Fyb3VzZWwgY2FuIGJl IGFzIHNpbXBsZSBhcy4uLgogKgogKiAgPGRpdiBjbGFzcz0iY2Fyb3VzZWwiPgog KiAgICAgIDx1bD4KICogICAgICAgICAgPGxpPjxpbWcgc3JjPSJpbWFnZS8xLmpw ZyIgYWx0PSIxIj48L2xpPgogKiAgICAgICAgICA8bGk+PGltZyBzcmM9ImltYWdl LzIuanBnIiBhbHQ9IjIiPjwvbGk+CiAqICAgICAgICAgIDxsaT48aW1nIHNyYz0i aW1hZ2UvMy5qcGciIGFsdD0iMyI+PC9saT4KICogICAgICA8L3VsPgogKiAgPC9k aXY+CiAqCiAqIEFzIHlvdSBjYW4gc2VlLCB0aGlzIHNuaXBwZXQgaXMgbm90aGlu ZyBidXQgYSBzaW1wbGUgZGl2IGNvbnRhaW5pbmcgYW4gdW5vcmRlcmVkIGxpc3Qg b2YgaW1hZ2VzLgogKiBZb3UgZG9uJ3QgbmVlZCBhbnkgc3BlY2lhbCAiY2xhc3Mi IGF0dHJpYnV0ZSwgb3IgYSBzcGVjaWFsICJjc3MiIGZpbGUgZm9yIHRoaXMgcGx1 Z2luLgogKiBJIGFtIHVzaW5nIGEgY2xhc3MgYXR0cmlidXRlIGp1c3QgZm9yIHRo ZSBzYWtlIG9mIGV4cGxhbmF0aW9uIGhlcmUuCiAqCiAqIFRvIG5hdmlnYXRlIHRo ZSBlbGVtZW50cyBvZiB0aGUgY2Fyb3VzZWwsIHlvdSBuZWVkIHNvbWUga2luZCBv ZiBuYXZpZ2F0aW9uIGJ1dHRvbnMuCiAqIEZvciBleGFtcGxlLCB5b3Ugd2lsbCBu ZWVkIGEgInByZXZpb3VzIiBidXR0b24gdG8gZ28gYmFja3dhcmQsIGFuZCBhICJu ZXh0IiBidXR0b24gdG8gZ28gZm9yd2FyZC4KICogVGhpcyBuZWVkIG5vdCBiZSBw YXJ0IG9mIHRoZSBjYXJvdXNlbCAiZGl2IiBpdHNlbGYuIEl0IGNhbiBiZSBhbnkg ZWxlbWVudCBpbiB5b3VyIHBhZ2UuCiAqIExldHMgYXNzdW1lIHRoYXQgdGhlIGZv bGxvd2luZyBlbGVtZW50cyBpbiB5b3VyIGRvY3VtZW50IGNhbiBiZSB1c2VkIGFz IG5leHQsIGFuZCBwcmV2IGJ1dHRvbnMuLi4KICoKICogPGJ1dHRvbiBjbGFzcz0i cHJldiI+Jmx0OyZsdDs8L2J1dHRvbj4KICogPGJ1dHRvbiBjbGFzcz0ibmV4dCI+ Jmd0OyZndDs8L2J1dHRvbj4KICoKICogTm93LCBhbGwgeW91IG5lZWQgdG8gZG8g aXMgY2FsbCB0aGUgY2Fyb3VzZWwgY29tcG9uZW50IG9uIHRoZSBkaXYgZWxlbWVu dCB0aGF0IHJlcHJlc2VudHMgaXQsIGFuZCBwYXNzIGluIHRoZQogKiBuYXZpZ2F0 aW9uIGJ1dHRvbnMgYXMgb3B0aW9ucy4KICoKICogJCgiLmNhcm91c2VsIikuakNh cm91c2VsTGl0ZSh7CiAqICAgICAgYnRuTmV4dDogIi5uZXh0IiwKICogICAgICBi dG5QcmV2OiAiLnByZXYiCiAqIH0pOwogKgogKiBUaGF0J3MgaXQsIHlvdSB3b3Vs ZCBoYXZlIG5vdyBjb252ZXJ0ZWQgeW91ciByYXcgZGl2LCBpbnRvIGEgbWFnbmlm aWNpZW50IGNhcm91c2VsLgogKgogKiBUaGVyZSBhcmUgcXVpdGUgYSBmZXcgb3Ro ZXIgb3B0aW9ucyB0aGF0IHlvdSBjYW4gdXNlIHRvIGN1c3RvbWl6ZSBpdCB0aG91 Z2guCiAqIEVhY2ggd2lsbCBiZSBleHBsYWluZWQgd2l0aCBhbiBleGFtcGxlIGJl bG93LgogKgogKiBAcGFyYW0gYW4gb3B0aW9ucyBvYmplY3QgLSBZb3UgY2FuIHNw ZWNpZnkgYWxsIHRoZSBvcHRpb25zIHNob3duIGJlbG93IGFzIGFuIG9wdGlvbnMg b2JqZWN0IHBhcmFtLgogKgogKiBAb3B0aW9uIGJ0blByZXYsIGJ0bk5leHQgOiBz dHJpbmcgLSBubyBkZWZhdWx0cwogKiBAZXhhbXBsZQogKiAkKCIuY2Fyb3VzZWwi KS5qQ2Fyb3VzZWxMaXRlKHsKICogICAgICBidG5OZXh0OiAiLm5leHQiLAogKiAg ICAgIGJ0blByZXY6ICIucHJldiIKICogfSk7CiAqIEBkZXNjIENyZWF0ZXMgYSBi YXNpYyBjYXJvdXNlbC4gQ2xpY2tpbmcgImJ0blByZXYiIG5hdmlnYXRlcyBiYWNr d2FyZHMgYW5kICJidG5OZXh0IiBuYXZpZ2F0ZXMgZm9yd2FyZC4KICoKICogQG9w dGlvbiBidG5HbyAtIGFycmF5IC0gbm8gZGVmYXVsdHMKICogQGV4YW1wbGUKICog JCgiLmNhcm91c2VsIikuakNhcm91c2VsTGl0ZSh7CiAqICAgICAgYnRuTmV4dDog Ii5uZXh0IiwKICogICAgICBidG5QcmV2OiAiLnByZXYiLAogKiAgICAgIGJ0bkdv OiBbIi4wIiwgIi4xIiwgIi4yIl0KICogfSk7CiAqIEBkZXNjIElmIHlvdSBkb24n dCB3YW50IG5leHQgYW5kIHByZXZpb3VzIGJ1dHRvbnMgZm9yIG5hdmlnYXRpb24s IGluc3RlYWQgeW91IHByZWZlciBjdXN0b20gbmF2aWdhdGlvbiBiYXNlZCBvbgog KiB0aGUgaXRlbSBudW1iZXIgd2l0aGluIHRoZSBjYXJvdXNlbCwgeW91IGNhbiB1 c2UgdGhpcyBvcHRpb24uIEp1c3Qgc3VwcGx5IGFuIGFycmF5IG9mIHNlbGVjdG9y cyBmb3IgZWFjaCBlbGVtZW50CiAqIGluIHRoZSBjYXJvdXNlbC4gVGhlIGluZGV4 IG9mIHRoZSBhcnJheSByZXByZXNlbnRzIHRoZSBpbmRleCBvZiB0aGUgZWxlbWVu dC4gV2hhdCBpIG1lYW4gaXMsIGlmIHRoZQogKiBmaXJzdCBlbGVtZW50IGluIHRo ZSBhcnJheSBpcyAiLjAiLCBpdCBtZWFucyB0aGF0IHdoZW4gdGhlIGVsZW1lbnQg cmVwcmVzZW50ZWQgYnkgIi4wIiBpcyBjbGlja2VkLCB0aGUgY2Fyb3VzZWwKICog d2lsbCBzbGlkZSB0byB0aGUgZmlyc3QgZWxlbWVudCBhbmQgc28gb24gYW5kIHNv IGZvcnRoLiBUaGlzIGZlYXR1cmUgaXMgdmVyeSBwb3dlcmZ1bC4gRm9yIGV4YW1w bGUsIGkgbWFkZSBhIHRhYmJlZAogKiBpbnRlcmZhY2Ugb3V0IG9mIGl0IGJ5IG1h a2luZyBteSBuYXZpZ2F0aW9uIGVsZW1lbnRzIHN0eWxlZCBsaWtlIHRhYnMgaW4g Y3NzLiBBcyB0aGUgY2Fyb3VzZWwgaXMgY2FwYWJsZSBvZiBob2xkaW5nCiAqIGFu eSBjb250ZW50LCBub3QganVzdCBpbWFnZXMsIHlvdSBjYW4gaGF2ZSBhIHZlcnkg c2ltcGxlIHRhYmJlZCBuYXZpZ2F0aW9uIGluIG1pbnV0ZXMgd2l0aG91dCB1c2lu ZyBhbnkgb3RoZXIgcGx1Z2luLgogKiBUaGUgYmVzdCBwYXJ0IGlzIHRoYXQsIHRo ZSB0YWIgd2lsbCAic2xpZGUiIGJhc2VkIG9uIHRoZSBwcm92aWRlZCBlZmZlY3Qu IDotKQogKgogKiBAb3B0aW9uIG1vdXNlV2hlZWwgOiBib29sZWFuIC0gZGVmYXVs dCBpcyBmYWxzZQogKiBAZXhhbXBsZQogKiAkKCIuY2Fyb3VzZWwiKS5qQ2Fyb3Vz ZWxMaXRlKHsKICogICAgICBtb3VzZVdoZWVsOiB0cnVlCiAqIH0pOwogKiBAZGVz YyBUaGUgY2Fyb3VzZWwgY2FuIGFsc28gYmUgbmF2aWdhdGVkIHVzaW5nIHRoZSBt b3VzZSB3aGVlbCBpbnRlcmZhY2Ugb2YgYSBzY3JvbGwgbW91c2UgaW5zdGVhZCBv ZiB1c2luZyBidXR0b25zLgogKiBUbyBnZXQgdGhpcyBmZWF0dXJlIHdvcmtpbmcs IHlvdSBoYXZlIHRvIGRvIDIgdGhpbmdzLiBGaXJzdCwgeW91IGhhdmUgdG8gaW5j bHVkZSB0aGUgbW91c2Utd2hlZWwgcGx1Z2luIGZyb20gYnJhbmRvbi4KICogU2Vj b25kLCB5b3Ugd2lsbCBoYXZlIHRvIHNldCB0aGUgb3B0aW9uICJtb3VzZVdoZWVs IiB0byB0cnVlLiBUaGF0J3MgaXQsIG5vdyB5b3Ugd2lsbCBiZSBhYmxlIHRvIG5h dmlnYXRlIHlvdXIgY2Fyb3VzZWwKICogdXNpbmcgdGhlIG1vdXNlIHdoZWVsLiBV c2luZyBidXR0b25zIGFuZCBtb3VzZVdoZWVsIG9yIG5vdCBtdXR1YWxseSBleGNs dXNpdmUuIFlvdSBjYW4gc3RpbGwgaGF2ZSBidXR0b25zIGZvciBuYXZpZ2F0aW9u CiAqIGFzIHdlbGwuIFRoZXkgY29tcGxlbWVudCBlYWNoIG90aGVyLiBUbyB1c2Ug Ym90aCB0b2dldGhlciwganVzdCBzdXBwbHkgdGhlIG9wdGlvbnMgcmVxdWlyZWQg Zm9yIGJvdGggYXMgc2hvd24gYmVsb3cuCiAqIEBleGFtcGxlCiAqICQoIi5jYXJv dXNlbCIpLmpDYXJvdXNlbExpdGUoewogKiAgICAgIGJ0bk5leHQ6ICIubmV4dCIs CiAqICAgICAgYnRuUHJldjogIi5wcmV2IiwKICogICAgICBtb3VzZVdoZWVsOiB0 cnVlCiAqIH0pOwogKgogKiBAb3B0aW9uIGF1dG8gOiBudW1iZXIgLSBkZWZhdWx0 IGlzIG51bGwsIG1lYW5pbmcgYXV0b3Njcm9sbCBpcyBkaXNhYmxlZCBieSBkZWZh dWx0CiAqIEBleGFtcGxlCiAqICQoIi5jYXJvdXNlbCIpLmpDYXJvdXNlbExpdGUo ewogKiAgICAgIGF1dG86IDgwMCwKICogICAgICBzcGVlZDogNTAwCiAqIH0pOwog KiBAZGVzYyBZb3UgY2FuIG1ha2UgeW91ciBjYXJvdXNlbCBhdXRvLW5hdmlnYXRl IGl0c2VsZiBieSBzcGVjZnlpbmcgYSBtaWxsaXNlY29uZCB2YWx1ZSBpbiB0aGlz IG9wdGlvbi4KICogVGhlIHZhbHVlIHlvdSBzcGVjaWZ5IGlzIHRoZSBhbW91bnQg b2YgdGltZSBiZXR3ZWVuIDIgc2xpZGVzLiBUaGUgZGVmYXVsdCBpcyBudWxsLCBh bmQgdGhhdCBkaXNhYmxlcyBhdXRvIHNjcm9sbGluZy4KICogU3BlY2lmeSB0aGlz IHZhbHVlIGFuZCBtYWdpY2FsbHkgeW91ciBjYXJvdXNlbCB3aWxsIHN0YXJ0IGF1 dG8gc2Nyb2xsaW5nLgogKgogKiBAb3B0aW9uIHNwZWVkIDogbnVtYmVyIC0gMjAw IGlzIGRlZmF1bHQKICogQGV4YW1wbGUKICogJCgiLmNhcm91c2VsIikuakNhcm91 c2VsTGl0ZSh7CiAqICAgICAgYnRuTmV4dDogIi5uZXh0IiwKICogICAgICBidG5Q cmV2OiAiLnByZXYiLAogKiAgICAgIHNwZWVkOiA4MDAKICogfSk7CiAqIEBkZXNj IFNwZWNpZnlpbmcgYSBzcGVlZCB3aWxsIHNsb3ctZG93biBvciBzcGVlZC11cCB0 aGUgc2xpZGluZyBzcGVlZCBvZiB5b3VyIGNhcm91c2VsLiBUcnkgaXQgb3V0IHdp dGgKICogZGlmZmVyZW50IHNwZWVkcyBsaWtlIDgwMCwgNjAwLCAxNTAwIGV0Yy4g UHJvdmlkaW5nIDAsIHdpbGwgcmVtb3ZlIHRoZSBzbGlkZSBlZmZlY3QuCiAqCiAq IEBvcHRpb24gZWFzaW5nIDogc3RyaW5nIC0gbm8gZWFzaW5nIGVmZmVjdHMgYnkg ZGVmYXVsdC4KICogQGV4YW1wbGUKICogJCgiLmNhcm91c2VsIikuakNhcm91c2Vs TGl0ZSh7CiAqICAgICAgYnRuTmV4dDogIi5uZXh0IiwKICogICAgICBidG5QcmV2 OiAiLnByZXYiLAogKiAgICAgIGVhc2luZzogImJvdW5jZW91dCIKICogfSk7CiAq IEBkZXNjIFlvdSBjYW4gc3BlY2lmeSBhbnkgZWFzaW5nIGVmZmVjdC4gTm90ZTog WW91IG5lZWQgZWFzaW5nIHBsdWdpbiBmb3IgdGhhdC4gT25jZSBzcGVjaWZpZWQs CiAqIHRoZSBjYXJvdXNlbCB3aWxsIHNsaWRlIGJhc2VkIG9uIHRoZSBwcm92aWRl ZCBlYXNpbmcgZWZmZWN0LgogKgogKiBAb3B0aW9uIHZlcnRpY2FsIDogYm9vbGVh biAtIGRlZmF1bHQgaXMgZmFsc2UKICogQGV4YW1wbGUKICogJCgiLmNhcm91c2Vs IikuakNhcm91c2VsTGl0ZSh7CiAqICAgICAgYnRuTmV4dDogIi5uZXh0IiwKICog ICAgICBidG5QcmV2OiAiLnByZXYiLAogKiAgICAgIHZlcnRpY2FsOiB0cnVlCiAq IH0pOwogKiBAZGVzYyBEZXRlcm1pbmVzIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGNh cm91c2VsLiB0cnVlLCBtZWFucyB0aGUgY2Fyb3VzZWwgd2lsbCBkaXNwbGF5IHZl cnRpY2FsbHkuIFRoZSBuZXh0IGFuZAogKiBwcmV2IGJ1dHRvbnMgd2lsbCBzbGlk ZSB0aGUgaXRlbXMgdmVydGljYWxseSBhcyB3ZWxsLiBUaGUgZGVmYXVsdCBpcyBm YWxzZSwgd2hpY2ggbWVhbnMgdGhhdCB0aGUgY2Fyb3VzZWwgd2lsbAogKiBkaXNw bGF5IGhvcml6b250YWxseS4gVGhlIG5leHQgYW5kIHByZXYgaXRlbXMgd2lsbCBz bGlkZSB0aGUgaXRlbXMgZnJvbSBsZWZ0LXJpZ2h0IGluIHRoaXMgY2FzZS4KICoK ICogQG9wdGlvbiBjaXJjdWxhciA6IGJvb2xlYW4gLSBkZWZhdWx0IGlzIHRydWUK ICogQGV4YW1wbGUKICogJCgiLmNhcm91c2VsIikuakNhcm91c2VsTGl0ZSh7CiAq ICAgICAgYnRuTmV4dDogIi5uZXh0IiwKICogICAgICBidG5QcmV2OiAiLnByZXYi LAogKiAgICAgIGNpcmN1bGFyOiBmYWxzZQogKiB9KTsKICogQGRlc2MgU2V0dGlu ZyBpdCB0byB0cnVlIGVuYWJsZXMgY2lyY3VsYXIgbmF2aWdhdGlvbi4gVGhpcyBt ZWFucywgaWYgeW91IGNsaWNrICJuZXh0IiBhZnRlciB5b3UgcmVhY2ggdGhlIGxh c3QKICogZWxlbWVudCwgeW91IHdpbGwgYXV0b21hdGljYWxseSBzbGlkZSB0byB0 aGUgZmlyc3QgZWxlbWVudCBhbmQgdmljZSB2ZXJzYS4gSWYgeW91IHNldCBjaXJj dWxhciB0byBmYWxzZSwgdGhlbgogKiBpZiB5b3UgY2xpY2sgb24gdGhlICJuZXh0 IiBidXR0b24gYWZ0ZXIgeW91IHJlYWNoIHRoZSBsYXN0IGVsZW1lbnQsIHlvdSB3 aWxsIHN0YXkgaW4gdGhlIGxhc3QgZWxlbWVudCBpdHNlbGYKICogYW5kIHNpbWls YXJseSBmb3IgInByZXZpb3VzIiBidXR0b24gYW5kIGZpcnN0IGVsZW1lbnQuCiAq CiAqIEBvcHRpb24gdmlzaWJsZSA6IG51bWJlciAtIGRlZmF1bHQgaXMgMwogKiBA ZXhhbXBsZQogKiAkKCIuY2Fyb3VzZWwiKS5qQ2Fyb3VzZWxMaXRlKHsKICogICAg ICBidG5OZXh0OiAiLm5leHQiLAogKiAgICAgIGJ0blByZXY6ICIucHJldiIsCiAq ICAgICAgdmlzaWJsZTogNAogKiB9KTsKICogQGRlc2MgVGhpcyBzcGVjaWZpZXMg dGhlIG51bWJlciBvZiBpdGVtcyB2aXNpYmxlIGF0IGFsbCB0aW1lcyB3aXRoaW4g dGhlIGNhcm91c2VsLiBUaGUgZGVmYXVsdCBpcyAzLgogKiBZb3UgYXJlIGV2ZW4g ZnJlZSB0byBleHBlcmltZW50IHdpdGggcmVhbCBudW1iZXJzLiBFZzogIjMuNSIg d2lsbCBoYXZlIDMgaXRlbXMgZnVsbHkgdmlzaWJsZSBhbmQgdGhlCiAqIGxhc3Qg aXRlbSBoYWxmIHZpc2libGUuIFRoaXMgZ2l2ZXMgeW91IHRoZSBlZmZlY3Qgb2Yg c2hvd2luZyB0aGUgdXNlciB0aGF0IHRoZXJlIGFyZSBtb3JlIGltYWdlcyB0byB0 aGUgcmlnaHQuCiAqCiAqIEBvcHRpb24gc3RhcnQgOiBudW1iZXIgLSBkZWZhdWx0 IGlzIDAKICogQGV4YW1wbGUKICogJCgiLmNhcm91c2VsIikuakNhcm91c2VsTGl0 ZSh7CiAqICAgICAgYnRuTmV4dDogIi5uZXh0IiwKICogICAgICBidG5QcmV2OiAi LnByZXYiLAogKiAgICAgIHN0YXJ0OiAyCiAqIH0pOwogKiBAZGVzYyBZb3UgY2Fu IHNwZWNpZnkgZnJvbSB3aGljaCBpdGVtIHRoZSBjYXJvdXNlbCBzaG91bGQgc3Rh cnQuIFJlbWVtYmVyLCB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgY2Fyb3VzZWwKICog aGFzIGEgc3RhcnQgb2YgMCwgYW5kIHNvIG9uLgogKgogKiBAb3B0aW9uIHNjcm9v bCA6IG51bWJlciAtIGRlZmF1bHQgaXMgMQogKiBAZXhhbXBsZQogKiAkKCIuY2Fy b3VzZWwiKS5qQ2Fyb3VzZWxMaXRlKHsKICogICAgICBidG5OZXh0OiAiLm5leHQi LAogKiAgICAgIGJ0blByZXY6ICIucHJldiIsCiAqICAgICAgc2Nyb2xsOiAyCiAq IH0pOwogKiBAZGVzYyBUaGUgbnVtYmVyIG9mIGl0ZW1zIHRoYXQgc2hvdWxkIHNj cm9sbC9zbGlkZSB3aGVuIHlvdSBjbGljayB0aGUgbmV4dC9wcmV2IG5hdmlnYXRp b24gYnV0dG9ucy4gQnkKICogZGVmYXVsdCwgb25seSBvbmUgaXRlbSBpcyBzY3Jv bGxlZCwgYnV0IHlvdSBtYXkgc2V0IGl0IHRvIGFueSBudW1iZXIuIEVnOiBzZXR0 aW5nIGl0IHRvICIyIiB3aWxsIHNjcm9sbAogKiAyIGl0ZW1zIHdoZW4geW91IGNs aWNrIHRoZSBuZXh0IG9yIHByZXZpb3VzIGJ1dHRvbnMuCiAqCiAqIEBvcHRpb24g YmVmb3JlU3RhcnQsIGFmdGVyRW5kIDogZnVuY3Rpb24gLSBjYWxsYmFja3MKICog QGV4YW1wbGUKICogJCgiLmNhcm91c2VsIikuakNhcm91c2VsTGl0ZSh7CiAqICAg ICAgYnRuTmV4dDogIi5uZXh0IiwKICogICAgICBidG5QcmV2OiAiLnByZXYiLAog KiAgICAgIGJlZm9yZVN0YXJ0OiBmdW5jdGlvbihhKSB7CiAqICAgICAgICAgIGFs ZXJ0KCJCZWZvcmUgYW5pbWF0aW9uIHN0YXJ0czoiICsgYSk7CiAqICAgICAgfSwK ICogICAgICBhZnRlckVuZDogZnVuY3Rpb24oYSkgewogKiAgICAgICAgICBhbGVy dCgiQWZ0ZXIgYW5pbWF0aW9uIGVuZHM6IiArIGEpOwogKiAgICAgIH0KICogfSk7 CiAqIEBkZXNjIElmIHlvdSB3YW50ZWQgdG8gZG8gc29tZSBsb2dpYyBpbiB5b3Vy IHBhZ2UgYmVmb3JlIHRoZSBzbGlkZSBzdGFydHMgYW5kIGFmdGVyIHRoZSBzbGlk ZSBlbmRzLCB5b3UgY2FuCiAqIHJlZ2lzdGVyIHRoZXNlIDIgY2FsbGJhY2tzLiBU aGUgZnVuY3Rpb25zIHdpbGwgYmUgcGFzc2VkIGFuIGFyZ3VtZW50IHRoYXQgcmVw cmVzZW50cyBhbiBhcnJheSBvZiBlbGVtZW50cyB0aGF0CiAqIGFyZSB2aXNpYmxl IGF0IHRoZSB0aW1lIG9mIGNhbGxiYWNrLgogKgogKgogKiBAY2F0IFBsdWdpbnMv SW1hZ2UgR2FsbGVyeQogKiBAYXV0aG9yIEdhbmVzaGppIE1hcndhaGEvZ2FuZXNo cmVhZEBnbWFpbC5jb20KICovCgooZnVuY3Rpb24oJCkgeyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENvbXBsaWFudCB3aXRoIGpx dWVyeS5ub0NvbmZsaWN0KCkKJC5mbi5qQ2Fyb3VzZWxMaXRlID0gZnVuY3Rpb24o bykgewogICAgbyA9ICQuZXh0ZW5kKHsKICAgICAgICBidG5QcmV2OiBudWxsLAog ICAgICAgIGJ0bk5leHQ6IG51bGwsCiAgICAgICAgYnRuR286IG51bGwsCiAgICAg ICAgbW91c2VXaGVlbDogZmFsc2UsCiAgICAgICAgYXV0bzogbnVsbCwKCiAgICAg ICAgc3BlZWQ6IDIwMCwKICAgICAgICBlYXNpbmc6IG51bGwsCgogICAgICAgIHZl cnRpY2FsOiBmYWxzZSwKICAgICAgICBjaXJjdWxhcjogdHJ1ZSwKICAgICAgICB2 aXNpYmxlOiAzLAogICAgICAgIHN0YXJ0OiAwLAogICAgICAgIHNjcm9sbDogMSwK CiAgICAgICAgYmVmb3JlU3RhcnQ6IG51bGwsCiAgICAgICAgYWZ0ZXJFbmQ6IG51 bGwKICAgIH0sIG8gfHwge30pOwoKICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rp b24oKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV0dXJucyB0aGUg ZWxlbWVudCBjb2xsZWN0aW9uLiBDaGFpbmFibGUuCgogICAgICAgIHZhciBydW5u aW5nID0gZmFsc2UsIGFuaW1Dc3M9by52ZXJ0aWNhbD8idG9wIjoibGVmdCIsIHNp emVDc3M9by52ZXJ0aWNhbD8iaGVpZ2h0Ijoid2lkdGgiOwogICAgICAgIHZhciBk aXYgPSAkKHRoaXMpLCB1bCA9ICQoInVsIiwgZGl2KSwgdExpID0gJCgibGkiLCB1 bCksIHRsID0gdExpLnNpemUoKSwgdiA9IG8udmlzaWJsZTsKCiAgICAgICAgaWYo by5jaXJjdWxhcikgewogICAgICAgICAgICB1bC5wcmVwZW5kKHRMaS5zbGljZSh0 bC12LTErMSkuY2xvbmUoKSkKICAgICAgICAgICAgICAuYXBwZW5kKHRMaS5zbGlj ZSgwLHYpLmNsb25lKCkpOwogICAgICAgICAgICBvLnN0YXJ0ICs9IHY7CiAgICAg ICAgfQoKICAgICAgICB2YXIgbGkgPSAkKCJsaSIsIHVsKSwgaXRlbUxlbmd0aCA9 IGxpLnNpemUoKSwgY3VyciA9IG8uc3RhcnQ7CiAgICAgICAgZGl2LmNzcygidmlz aWJpbGl0eSIsICJ2aXNpYmxlIik7CgogICAgICAgIGxpLmNzcyh7b3ZlcmZsb3c6 ICJoaWRkZW4iLCBmbG9hdDogby52ZXJ0aWNhbCA/ICJub25lIiA6ICJsZWZ0In0p OwogICAgICAgIHVsLmNzcyh7bWFyZ2luOiAiMCIsIHBhZGRpbmc6ICIwIiwgcG9z aXRpb246ICJyZWxhdGl2ZSIsICJsaXN0LXN0eWxlLXR5cGUiOiAibm9uZSIsICJ6 LWluZGV4IjogIjEifSk7CiAgICAgICAgZGl2LmNzcyh7b3ZlcmZsb3c6ICJoaWRk ZW4iLCBwb3NpdGlvbjogInJlbGF0aXZlIiwgInotaW5kZXgiOiAiMiIsIGxlZnQ6 ICIwcHgifSk7CgogICAgICAgIHZhciBsaVNpemUgPSBvLnZlcnRpY2FsID8gaGVp Z2h0KGxpKSA6IHdpZHRoKGxpKTsgICAvLyBGdWxsIGxpIHNpemUoaW5jbCBtYXJn aW4pLVVzZWQgZm9yIGFuaW1hdGlvbgogICAgICAgIHZhciB1bFNpemUgPSBsaVNp emUgKiBpdGVtTGVuZ3RoOyAgICAgICAgICAgICAgICAgICAvLyBzaXplIG9mIGZ1 bGwgdWwodG90YWwgbGVuZ3RoLCBub3QganVzdCBmb3IgdGhlIHZpc2libGUgaXRl bXMpCiAgICAgICAgdmFyIGRpdlNpemUgPSBsaVNpemUgKiB2OyAgICAgICAgICAg ICAgICAgICAgICAgICAgIC8vIHNpemUgb2YgZW50aXJlIGRpdih0b3RhbCBsZW5n dGggZm9yIGp1c3QgdGhlIHZpc2libGUgaXRlbXMpCgogICAgICAgIGxpLmNzcyh7 d2lkdGg6IGxpLndpZHRoKCksIGhlaWdodDogbGkuaGVpZ2h0KCl9KTsKICAgICAg ICB1bC5jc3Moc2l6ZUNzcywgdWxTaXplKyJweCIpLmNzcyhhbmltQ3NzLCAtKGN1 cnIqbGlTaXplKSk7CgogICAgICAgIGRpdi5jc3Moc2l6ZUNzcywgZGl2U2l6ZSsi cHgiKTsgICAgICAgICAgICAgICAgICAgICAvLyBXaWR0aCBvZiB0aGUgRElWLiBs ZW5ndGggb2YgdmlzaWJsZSBpbWFnZXMKCiAgICAgICAgaWYoby5idG5QcmV2KQog ICAgICAgICAgICAkKG8uYnRuUHJldikuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAg ICAgICAgICAgICByZXR1cm4gZ28oY3Vyci1vLnNjcm9sbCk7CiAgICAgICAgICAg IH0pOwoKICAgICAgICBpZihvLmJ0bk5leHQpCiAgICAgICAgICAgICQoby5idG5O ZXh0KS5jbGljayhmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgIHJldHVybiBn byhjdXJyK28uc2Nyb2xsKTsKICAgICAgICAgICAgfSk7CgogICAgICAgIGlmKG8u YnRuR28pCiAgICAgICAgICAgICQuZWFjaChvLmJ0bkdvLCBmdW5jdGlvbihpLCB2 YWwpIHsKICAgICAgICAgICAgICAgICQodmFsKS5jbGljayhmdW5jdGlvbigpIHsK ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ28oby5jaXJjdWxhciA/IG8udmlz aWJsZStpIDogaSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7 CgogICAgICAgIGlmKG8ubW91c2VXaGVlbCAmJiBkaXYubW91c2V3aGVlbCkKICAg ICAgICAgICAgZGl2Lm1vdXNld2hlZWwoZnVuY3Rpb24oZSwgZCkgewogICAgICAg ICAgICAgICAgcmV0dXJuIGQ+MCA/IGdvKGN1cnItby5zY3JvbGwpIDogZ28oY3Vy citvLnNjcm9sbCk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICBpZihvLmF1dG8p CiAgICAgICAgICAgIHNldEludGVydmFsKGZ1bmN0aW9uKCkgewogICAgICAgICAg ICAgICAgZ28oY3VycitvLnNjcm9sbCk7CiAgICAgICAgICAgIH0sIG8uYXV0bytv LnNwZWVkKTsKCiAgICAgICAgZnVuY3Rpb24gdmlzKCkgewogICAgICAgICAgICBy ZXR1cm4gbGkuc2xpY2UoY3Vycikuc2xpY2UoMCx2KTsKICAgICAgICB9OwoKICAg ICAgICBmdW5jdGlvbiBnbyh0bykgewogICAgICAgICAgICBpZighcnVubmluZykg ewoKICAgICAgICAgICAgICAgIGlmKG8uYmVmb3JlU3RhcnQpCiAgICAgICAgICAg ICAgICAgICAgby5iZWZvcmVTdGFydC5jYWxsKHRoaXMsIHZpcygpKTsKCiAgICAg ICAgICAgICAgICBpZihvLmNpcmN1bGFyKSB7ICAgICAgICAgICAgLy8gSWYgY2ly Y3VsYXIgd2UgYXJlIGluIGZpcnN0IG9yIGxhc3QsIHRoZW4gZ290byB0aGUgb3Ro ZXIgZW5kCiAgICAgICAgICAgICAgICAgICAgaWYodG88PW8uc3RhcnQtdi0xKSB7 ICAgICAgICAgICAvLyBJZiBmaXJzdCwgdGhlbiBnb3RvIGxhc3QKICAgICAgICAg ICAgICAgICAgICAgICAgdWwuY3NzKGFuaW1Dc3MsIC0oKGl0ZW1MZW5ndGgtKHYq MikpKmxpU2l6ZSkrInB4Iik7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIElm ICJzY3JvbGwiID4gMSwgdGhlbiB0aGUgInRvIiBtaWdodCBub3QgYmUgZXF1YWwg dG8gdGhlIGNvbmRpdGlvbjsgaXQgY2FuIGJlIGxlc3NlciBkZXBlbmRpbmcgb24g dGhlIG51bWJlciBvZiBlbGVtZW50cy4KICAgICAgICAgICAgICAgICAgICAgICAg Y3VyciA9IHRvPT1vLnN0YXJ0LXYtMSA/IGl0ZW1MZW5ndGgtKHYqMiktMSA6IGl0 ZW1MZW5ndGgtKHYqMiktby5zY3JvbGw7CiAgICAgICAgICAgICAgICAgICAgfSBl bHNlIGlmKHRvPj1pdGVtTGVuZ3RoLXYrMSkgeyAvLyBJZiBsYXN0LCB0aGVuIGdv dG8gZmlyc3QKICAgICAgICAgICAgICAgICAgICAgICAgdWwuY3NzKGFuaW1Dc3Ms IC0oICh2KSAqIGxpU2l6ZSApICsgInB4IiApOwogICAgICAgICAgICAgICAgICAg ICAgICAvLyBJZiAic2Nyb2xsIiA+IDEsIHRoZW4gdGhlICJ0byIgbWlnaHQgbm90 IGJlIGVxdWFsIHRvIHRoZSBjb25kaXRpb247IGl0IGNhbiBiZSBncmVhdGVyIGRl cGVuZGluZyBvbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzLgogICAgICAgICAgICAg ICAgICAgICAgICBjdXJyID0gdG89PWl0ZW1MZW5ndGgtdisxID8gdisxIDogditv LnNjcm9sbDsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgY3VyciA9IHRvOwog ICAgICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgIC8vIElm IG5vbi1jaXJjdWxhciBhbmQgdG8gcG9pbnRzIHRvIGZpcnN0IG9yIGxhc3QsIHdl IGp1c3QgcmV0dXJuLgogICAgICAgICAgICAgICAgICAgIGlmKHRvPDAgfHwgdG8+ aXRlbUxlbmd0aC12KSByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgZWxzZSBj dXJyID0gdG87CiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAg ICAgICAgLy8gSWYgbmVpdGhlciBvdmVycmlkZXMgaXQsIHRoZSBjdXJyIHdpbGwg c3RpbGwgYmUgInRvIiBhbmQgd2UgY2FuIHByb2NlZWQuCgogICAgICAgICAgICAg ICAgcnVubmluZyA9IHRydWU7CgogICAgICAgICAgICAgICAgdWwuYW5pbWF0ZSgK ICAgICAgICAgICAgICAgICAgICBhbmltQ3NzID09ICJsZWZ0IiA/IHsgbGVmdDog LShjdXJyKmxpU2l6ZSkgfSA6IHsgdG9wOiAtKGN1cnIqbGlTaXplKSB9ICwgby5z cGVlZCwgby5lYXNpbmcsCiAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7 CiAgICAgICAgICAgICAgICAgICAgICAgIGlmKG8uYWZ0ZXJFbmQpCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvLmFmdGVyRW5kLmNhbGwodGhpcywgdmlzKCkp OwogICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nID0gZmFsc2U7CiAgICAg ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAg ICAgIC8vIERpc2FibGUgYnV0dG9ucyB3aGVuIHRoZSBjYXJvdXNlbCByZWFjaGVz IHRoZSBsYXN0L2ZpcnN0LCBhbmQgZW5hYmxlIHdoZW4gbm90CiAgICAgICAgICAg ICAgICBpZighby5jaXJjdWxhcikgewogICAgICAgICAgICAgICAgICAgICQoby5i dG5QcmV2ICsgIiwiICsgby5idG5OZXh0KS5yZW1vdmVDbGFzcygiZGlzYWJsZWQi KTsKICAgICAgICAgICAgICAgICAgICAkKCAoY3Vyci1vLnNjcm9sbDwwICYmIG8u YnRuUHJldikKICAgICAgICAgICAgICAgICAgICAgICAgfHwKICAgICAgICAgICAg ICAgICAgICAgICAoY3VycitvLnNjcm9sbCA+IGl0ZW1MZW5ndGgtdiAmJiBvLmJ0 bk5leHQpCiAgICAgICAgICAgICAgICAgICAgICAgIHx8CiAgICAgICAgICAgICAg ICAgICAgICAgW10KICAgICAgICAgICAgICAgICAgICAgKS5hZGRDbGFzcygiZGlz YWJsZWQiKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH07CiAgICB9KTsKfTsKCmZ1bmN0 aW9uIGNzcyhlbCwgcHJvcCkgewogICAgcmV0dXJuIHBhcnNlSW50KCQuY3NzKGVs WzBdLCBwcm9wKSkgfHwgMDsKfTsKZnVuY3Rpb24gd2lkdGgoZWwpIHsKICAgIHJl dHVybiAgZWxbMF0ub2Zmc2V0V2lkdGggKyBjc3MoZWwsICdtYXJnaW5MZWZ0Jykg KyBjc3MoZWwsICdtYXJnaW5SaWdodCcpOwp9OwpmdW5jdGlvbiBoZWlnaHQoZWwp IHsKICAgIHJldHVybiBlbFswXS5vZmZzZXRIZWlnaHQgKyBjc3MoZWwsICdtYXJn aW5Ub3AnKSArIGNzcyhlbCwgJ21hcmdpbkJvdHRvbScpOwp9OwoKfSkoalF1ZXJ5 KTs= ------------N4eNwrm1gWfA2YNEcWro80 Content-Disposition: inline; filename=jquery.mousewheel.js Content-Type: application/x-javascript; charset=utf-8; name=jquery.mousewheel.js Content-Location: http://www.cds73.fr/plugins/sarkaspip_300/scripts/jquery.mousewheel.js Content-Transfer-Encoding: Base64 LyohIENvcHlyaWdodCAoYykgMjAwOSBCcmFuZG9uIEFhcm9uIChodHRwOi8vYnJh bmRvbmFhcm9uLm5ldCkKICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUICho dHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBo cCkKICogYW5kIEdQTCAoaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNl cy9ncGwtbGljZW5zZS5waHApIGxpY2Vuc2VzLgogKiBUaGFua3MgdG86IGh0dHA6 Ly9hZG9tYXMub3JnL2phdmFzY3JpcHQtbW91c2Utd2hlZWwvIGZvciBzb21lIHBv aW50ZXJzLgogKiBUaGFua3MgdG86IE1hdGhpYXMgQmFuayhodHRwOi8vd3d3Lm1h dGhpYXMtYmFuay5kZSkgZm9yIGEgc2NvcGUgYnVnIGZpeC4KICoKICogVmVyc2lv bjogMy4wLjIKICogCiAqIFJlcXVpcmVzOiAxLjIuMisKICovCgooZnVuY3Rpb24o JCkgewoKdmFyIHR5cGVzID0gWydET01Nb3VzZVNjcm9sbCcsICdtb3VzZXdoZWVs J107CgokLmV2ZW50LnNwZWNpYWwubW91c2V3aGVlbCA9IHsKCXNldHVwOiBmdW5j dGlvbigpIHsKCQlpZiAoIHRoaXMuYWRkRXZlbnRMaXN0ZW5lciApCgkJCWZvciAo IHZhciBpPXR5cGVzLmxlbmd0aDsgaTsgKQoJCQkJdGhpcy5hZGRFdmVudExpc3Rl bmVyKCB0eXBlc1stLWldLCBoYW5kbGVyLCBmYWxzZSApOwoJCWVsc2UKCQkJdGhp cy5vbm1vdXNld2hlZWwgPSBoYW5kbGVyOwoJfSwKCQoJdGVhcmRvd246IGZ1bmN0 aW9uKCkgewoJCWlmICggdGhpcy5yZW1vdmVFdmVudExpc3RlbmVyICkKCQkJZm9y ICggdmFyIGk9dHlwZXMubGVuZ3RoOyBpOyApCgkJCQl0aGlzLnJlbW92ZUV2ZW50 TGlzdGVuZXIoIHR5cGVzWy0taV0sIGhhbmRsZXIsIGZhbHNlICk7CgkJZWxzZQoJ CQl0aGlzLm9ubW91c2V3aGVlbCA9IG51bGw7Cgl9Cn07CgokLmZuLmV4dGVuZCh7 Cgltb3VzZXdoZWVsOiBmdW5jdGlvbihmbikgewoJCXJldHVybiBmbiA/IHRoaXMu YmluZCgibW91c2V3aGVlbCIsIGZuKSA6IHRoaXMudHJpZ2dlcigibW91c2V3aGVl bCIpOwoJfSwKCQoJdW5tb3VzZXdoZWVsOiBmdW5jdGlvbihmbikgewoJCXJldHVy biB0aGlzLnVuYmluZCgibW91c2V3aGVlbCIsIGZuKTsKCX0KfSk7CgoKZnVuY3Rp b24gaGFuZGxlcihldmVudCkgewoJdmFyIGFyZ3MgPSBbXS5zbGljZS5jYWxsKCBh cmd1bWVudHMsIDEgKSwgZGVsdGEgPSAwLCByZXR1cm5WYWx1ZSA9IHRydWU7CgkK CWV2ZW50ID0gJC5ldmVudC5maXgoZXZlbnQgfHwgd2luZG93LmV2ZW50KTsKCWV2 ZW50LnR5cGUgPSAibW91c2V3aGVlbCI7CgkKCWlmICggZXZlbnQud2hlZWxEZWx0 YSApIGRlbHRhID0gZXZlbnQud2hlZWxEZWx0YS8xMjA7CglpZiAoIGV2ZW50LmRl dGFpbCAgICAgKSBkZWx0YSA9IC1ldmVudC5kZXRhaWwvMzsKCQoJLy8gQWRkIGV2 ZW50cyBhbmQgZGVsdGEgdG8gdGhlIGZyb250IG9mIHRoZSBhcmd1bWVudHMKCWFy Z3MudW5zaGlmdChldmVudCwgZGVsdGEpOwoKCXJldHVybiAkLmV2ZW50LmhhbmRs ZS5hcHBseSh0aGlzLCBhcmdzKTsKfQoKfSkoalF1ZXJ5KTs= ------------N4eNwrm1gWfA2YNEcWro80 Content-Disposition: inline; filename=siteon0-1d235.png Content-Type: image/png; name=siteon0-1d235.png Content-Location: http://www.cds73.fr/local/cache-vignettes/L600xH78/siteon0-1d235.png Content-Transfer-Encoding: Base64 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 /EEbJ5L49c1HNDpdtls9fM8hh4sm+gT9Nl9+/Rtcv7mMZKa59OnHnF8skkupfPjJ JbyRja4Z7G8+JFE9nMAjECxEPcWwP8DMKRjZHKHnEIYJoiKDqqFkSniegzJsgRAj hz62E2LqRQ53Nrl4YpojU1l6Iw8hCsinUxwqBmEkIiQQBTayMjYHbbSalOYqbK0/ 4pe/eMRmy2OtMSBOFEpTs4iiiCRGyGJMzpKREw8xdsBzWZrL82h7k/XtDVQl5KE2 4vhkjr/+6z/n669fRElNcPfuMhePLbK1v0Nak0h8FT+MyReKjB7d5+bDR0yW03z1 i2f5wS9u4wQGqWyeKOrh2R1Eq4aRytBprHFsrkzFDElJQ1RJptcfouomruswMzXB xkGX4fYaopBQSAkgjgc0VCkikEK8KGBzv8OJpWP8i6+/xH/4j3/G1Yc7mLpO1pIx MNlqdqi3e/zGV59HNmIIQ/KlCXJ9kQYBpfwibm8HWxxPcLp2j6nJBXZ6MBqN0HWF ows1Qr+IP+oTKRpaJk+5mOfn17bwoohyqYIdacSixLmpLFXNI4o8dldXSQQJzcrR 7ftkJqeZy0uUUn0ib8BB45ChF1MoTJMrWUhOiCIkELmkDYkEiKIYYlBkgZQOg9Yu WUtHFqGU12h0PTRNJQpDBAmKmQz9fo/9+h61ooWe0liompiGhud7DJwQUUwwMhli WUPWBeqtNqcX8ny80iHUJYpZi367x4LWQRITRh5848uvIksCgiCTL5YQ4gDftTGy NexBB1VW8H2PM7NZVpYTNNnl6FQRzZAp5gv0Oy0WpssQesRxQqs5JAptcrVp4sgl cXrEpoqiZfj6yQnuLst8WH8mdPmfP+L/2pufwzTPHP9Yay587vlT3ktAfPJ5qfTG f6OFsvp5BktlzFI9y2I9WU9ef7JPZsxgSYAo2EOh/eHPhIIZCZ7dT45MF4VeZ0Bp 9gK//vQ6H3x6A9/p02tts7+7jj3oYWgKa5sb5CoTlGvzKIrCw5vv09q4yuBwm/b+ JvXN67z63ALFbIpuv0emUOX4mdf59KP3uPnJL7hz9zqVcoEQhY3tfcx0mg/fe5vm 1gPMdJb+yOXTD9+mubNMr93k9t0HvPv23+P3dgmdOtg9QrtLNWtyuHWXT997i417 lxDDLvXGHlc+fIvF+Rkmly7yZ//lb/nR3/8AS/SYmyxy9OgRbl//lPvL92gd7IMg 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 1On0FOMkYhwNwfEIg4B2u0U0iNAafE9RKAaUq0VG4zEWhjwX+oM2hUIFpaFSsLFU NmnXmJxKtYTnWliWwmTgOD6qXESsEkNTY/nSp5g5/QqOpRl2njA6ekCeRijl4hZj nLBI0HwGb8rBKBsfC7SHWAGiHWyTM+x3eXLvPj/4/ne5t75GuVZmuuyTjSOMyrm6 9pDuKMN1FcPMwrdd4jQlQtPPEiJjcMVQrhSwyLEyg9gWR7Hmr99+xIFKOPP8i1jt Bzy682Oi4QC74JBnE7fqTASVCzkcgy0HV08G4nGW4fkeSSQk4wTHd4mSmJI3UUIq JShXYyG4jsU4yQhdG9dWWJZC5xMCdxyNMI6Doyy0toiiGN+dfMdaQ5ZPaN1KYBCb ibJRT6w6Jw/tiUeUoy3yVCj5HuMso+C6k9m+nph1GqPIleDYFoPY4No5sdHsdFKO xil1b8TZmQqzs7OMc8XO3h77/R44KTNhmSiF9jglTmEUxQSW4CghyoXEQK89YL7k UfZc0JqKBwXb5dY7b6OinNe++F/RPHkeY08qwMjTSo8CzMTpPZ/QCEwmaG3hFwOM MTgCkg5Jswhtu2h70nKUCRpDmLQFDXIcCH2MvI5t+IzJJ/5devKdK0t/QLOfWD4c W0LIJGrLdSeKx+2NuySjQ4527/PerQd87iv/hMb0HPm4x43rVzlotbj8/IvYro/W 3rGHcg6oiTP9R2Q+SusPwqyN5MfvIc1TJFM4jiZPU2w/nJD2LQvleaAsbG+SxSgy Ca+ebZyZtCeVkMVdBu0dsqTPJW8RyxjCSp1PftYH5dFrbXN/fZ1Ob0DFc1mab1Ar Fth8skvB0dy9t804hZOzAc2CZjoUuhWfcSulVvJwXWj3x3iBol60adZKZMmYZi1g NBhQrDYJwyKjwZh6kHJmoYZkEWcWq7h2RjTqEfe6zM3PYRfqbN19wLWbD5lq1Enj xyyvLIPb5MKLF0j8As0Ti1jFBkXHn1AYxeA7OY5WhG5As+gxXS5x9vyzRKIQkzHq t/ALFaJc0e13+Yv/+IfMLszx+//sX7Lx5IjHwxzLsdm4/gMe3voOgaVwCxXm6vMf AF1RMpk4WRqthNUzF9BhyFeq8/z43Vs8jmKULlOpV3jh1DJ/9Mf/J1/5jcv4sc+p 517lzMocM7Vp/uRrbW493KIY5FhuGaUVxsSUywWyuEdo2yzONRn1dtnZSulne8xG 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 aj8ymjpUxWsUeW09Wnunk6rVcSYqqlo1qkXdahIaXbRWP3ye61RUA2v12VmhhzOv UWi0rCptLPr0tNIwMNqNA713mutwJdYwiPXjZ7lat+wnKopaK68qotpUpZ5Ncr31 +FhD2+ogRjvdVOM40TTpaVNk2ksSTfs9nWa1TkujZ/NKB91Uo8RpmnT15s0XtN/r 6Xwy0Wle6SKvdGPU1WE3Ui+1noxz/ZUvv6Y7a2vamEhvP5vqOC+0G1s9XjQ6dyuq quqzUx1ErRZ1rS1Gm6pUg2q/k2heFnpld12NM3p6PtfJvNaTSaY//PCx3n70XLOs 0LtHhR7PWj08menJONeSREsb6vDqTT1PtvS7j8b6YJJrrk69C9Vj1Ruj3nuladUa 1SiO1JSlBlWt22ur+vzBe7qxtq5b6321p/f19Nb3teMK7SW1BlqpEaPHs1zvn831 tMh0ZaWrURRpf7ihWVVpVi40LzKNIq9npwcqWaFpmOpo9wWtxOn2xkAX2VTHs1y3 hj39yi//qr76+Z/X3c113dscaRI7/fKXf07LaqZ3nhyrdYkW05lOs1LL1ml3MNA4 NCptq2ezXNWjVhs1qiou0dPzqYbOaGi8Wmv0ZNJomc/1az/8WBe1asxMs/GxPpxG OlzZ0NVeov1hT4vFRFUj7Y+2NIhSXcxnmqQdjeOOjrYva6fT1TBJ9PT0TBfzuWaL TEfDgcZhrKjRqlosOzTUal41akysF6+9pE+ePdNhGmg3DLUU0cl0omfjmbbitS0L jSJVWy90kRdqw0hpKw19qUd3f6xnT2+ptU5VGj159kCrxan6eqZSnGtnsKlbl1/W 0dYV3br0gnbX9nT7wlWVfKLbPaOLZ3d0evpEo/6G/uKv/rb+jb/5O7q6fU19uqNF KdpJEvWqmsaheozubG3p7qVL2l3d0ZV+X8/OTvUrv/w3taxqXd17WXvb13T71S/q 5o2XdefKi7q2e01tZ6Srw1VtZqfK7Eg/98pL+nO/8lvqkqG2fvl505QLVfX6mdc/ r6ubO6phqulwS0db1zXqb6mLuqom0DgMtN/t6NGs1srGeuHSCzq3fZ2UkdZVpdcu 7enp6Zkm3VQfPHyot+9+pPPFuXZSp8aG6pIVTYYXdX3vmp6dn2kUxNoSa9Dpapr0 VG2kaW+kNu5o3Buqc4nWxULDpKPOOg3SnkIg2MB/dI4+MfmgXgAAACJJREFUXizf w35maqU/o6f+vanV9E//5b8Pvfp3x19e/v8BsdTEivlzNUEAAAAASUVORK5CYII= ------------N4eNwrm1gWfA2YNEcWro80 Content-Disposition: inline; filename=logo-exalead.gif Content-Type: image/gif; name=logo-exalead.gif Content-Location: http://www.cds73.fr/plugins/sarkaspip_300/images/logo-exalead.gif Content-Transfer-Encoding: Base64 R0lGODlheAAeAPf/AKm+yqC9zaDI3qWssZW/15zE2bnCyGGWs4Chs1mJpGWevVB8 lXydr1ZsesfO04+dpzpUZNXa3qu2vSxHWePn6YGRnPHz9Ehgb2R4ht7s8+Hv9lWF n3KFkV6UsluNqZ2psvn4+ENmefDu7YmmtXCXrE1+mTpke//9/MXc6XKy1mOOpYaq vdXj6lOAmnaetFGFomCYuKiyt1uQr/Ty8UZzjJa0xTxecjtpgvLw7+nw9N7f38LL 0I6ru8ng7Wmlxs/Q0eXj4lp0gpPG5GObubrK06rBzoOdq6G2wvHx8Xa12Hy52jlb brrGzNrp8c3NzdHg6dPk7WqhwNjl7fz7+unz+bnP21pwfVJyhLnCxlSIpWeiwmGa usje6cPS2oiswPX09DNWaYnC4fP3+dzr8cLV4VaLqbLJ1oGmu3Cv0aW6x+Xw95G2 ypi3yPn183mht7u9v1+au0xlcmKixou40s7c47XX6ZWrt12SsGmDks/e53+ludbc 30h5k97c23uUoWyszy9SZniRnv////b5+6q1u9Pn8nm32d7m65ujqOzw8q24vkFp gHm01DFUZ0+Cn5y5yNTX2NHf577Jz0Nqf8PY5G+lw4G+34aisoejtFF/mNLZ3sLJ zVJufqC0vsra4nWYq8bN0X2Ypv78+n+aqX6esOzz+OPi4ebl5XuuymV3gFmHobzR 3cbQ1WGgw7PDzLXCydPU1M3k8Z2xvF+Akujl4+bx+ISlt4+hq1KCnU5peJ+1wa6z tafG2K/G0s/U17vFyeHf3migv15+kI2xxdfg5JvM50Fkd73Fyk1od4S41XCLmbDS 5NXl7bnT4rrb7Ji80F6hx8/f6GmjxMrc5W6v1HCjv3WQoKjT6v/59tni6El3kbHN 3JC91snQ1XmZq3mbruPp7e/2+aXL4Nzs9a3P4VZ2iHCpyGWnymOHmmaKnuDn6/// /VmTs1uUtKLP6Iaxyc7Z3463zr3L09vg49vi59/g4d3i5brL1bbH0L7N1XusxrPF zrfHz4Ovxx88T////yH5BAEAAP8ALAAAAAB4AB4AAAj/AP8JHEiwoMGDCBMqXMiw ocOHECNKnEixosQMlB65UKFKBQ8zYyyKHEnSYYZVXly4ObNCD4kNfBbUkFKypk2R Gp6wqWGGRSIkOGZ8SdSFAQ0aRTTcXMp0oQYyAarkEPFDkZ1LpBB02iMKXrobIzI0 HUv2aZE8IJwQAsCrADdUlWB4YDAPhJEbl8SS3WszWgC0b5hAKYRimYBV+sxFaaeK n6BRJgDwnTwyA5sqIN6woqKmSY86AsTQqeQjGIwXREDMWvRkL4UHEkg+eBChge0I DzgIxBB7YpUaOX4woUKl1rhYzsSVEuQpihYFHTaA62bCyF4H/hqQ9OcvwgV/F2r7 /6MQIfvEMSvM4CAEJYOGDIU+C8ixY4onBQqGlEEwBc+k1mNhp91I3P2DnQP/cPdB Bf5MMBEZLrDwAwBNiDHIIGKEU4oa6/CwhihdwLBFdJrEYEIaChmAQQMYGCDQB7AJ NBuC/0TAQYuzUSCgQBRUYNsHFhAkQQMV4NabgRhwUJ4/BvrjAAX+QHCBlP4EGVEN biSiCC9NiLAJKKDsIIkkr6zwxxoz5NNBBy8cAUsI1iTEIHfcVfCPAdwZwOAEQTZA J50O7BjBBH9eEKQDhP6pHQUQ/FnggXji6Q+eNELkwhlI2FEAFDo8Qo44biXDCCNJ nDNMG/J4kAUCpnByBUJLPv/gwAPcUfDPntwh+AF3HEjwnZM7+tmAAQY0qlujEEhQ AaHacdDgAx80yuSBD0DwzwTW+vOBRCqsgMMIc3BRzzPXuFOMEGFYYkgKaLTiRRtM 4EICEEGEgBCtE9jWAKEPCPSrnf9g4A8GPOa6I3cX2IYslJMKxKB2jQIsQYGv6Rib BC5KUOlDqugxAwKoUKLDO0Kgm64SSaTwhxzxzDDAAiSYUu+9jnLX7z9++nOznwAn CGx2S9aMXZUCTaxdngUzeZMKJHyBSRTN6FCNEkoYkjI17MpBwAkvO0JKH7m8etDE fP5jQQQD7Uon2gxCEOTEPx/tT28RWGmz2cLibN6tBd7/ZMsGiRzBzjYnTNMDFyig gHg/0GwdQyYelKCLEzYog5AFhObLbI3cSSCw20H/Gjff4DU6AYLORpmodnBjS+dS vfBBhC9lePHLMQZgofsOJ4A7RQwtyJDAApogAsYRCUUgbYN1f0ewBY0S7EDO0ga6 95x3m10twnv7yl3OSzGzwCcifCODDB2ICAccMBzSBRIDtHBH5N7QYoUNkSwUqK0N 6aiQjhsbyJMOEgG0jYUHNGAFJBIAAwVoQRo+8IEWsoGN+M1vAwvYwwDA4AelUOaD EWEBDdCBA1e8oANbGAJ+hmCPAWRCBh7YgDbw0Yc4LIEOIMwhRIpwg1GcgAiqKEMH ow5AxFu0wAMJKMEC7iGCVDRCFjqMYkM0MIIbhOIL6kDABl6QhSyUwBFKZMAhgJAK QARCL1JMI0IygAkTCGMTIKBHGhDwCRIgIA3EEMEu4mDGkKjxjwfRAAAWYQI8xAAS QDjFKYDhBERYoRFL6IQHAUnJgrBgBJOwgTE4EQQrIGMJYLCBEfJXyVIaRAr7CEU5 QhCCK/gBADQxpSxnScta2rIhAQEAOw== ------------N4eNwrm1gWfA2YNEcWro80--