<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE module [
  <!ELEMENT module (dtdversion,name,version,description*,help*,about*,requires*,file+)>
  <!ELEMENT dtdversion (#PCDATA)>
  <!ELEMENT name (#PCDATA)>
  <!ELEMENT version (#PCDATA)>
  <!ELEMENT mincmsversion (#PCDATA)>
  <!ELEMENT description (#PCDATA)>
  <!ELEMENT help (#PCDATA)>
  <!ELEMENT about (#PCDATA)>
  <!ELEMENT requires (requiredname,requiredversion)>
  <!ELEMENT requiredname (#PCDATA)>
  <!ELEMENT requiredversion (#PCDATA)>
  <!ELEMENT file (filename,isdir,data)>
  <!ELEMENT filename (#PCDATA)>
  <!ELEMENT isdir (#PCDATA)>
  <!ELEMENT data (#PCDATA)>
]>
<module>
	<dtdversion>1.3</dtdversion>
	<name>Ping</name>
	<version>0.2.2</version>
  <mincmsversion>1.10.9</mincmsversion>
	<help><![CDATA[PGgzPlF1ZSBmYWl0IGNlIG1vZHVsZSA/PC9oMz4KPHA+Q2UgbW9kdWxlIHLDqWN1cMOocmUgbGVzIHLDqXN1bHRhdHMgZGUgdm90cmUgY2x1YiBldCByw6lhbGlzZSBkZXMgdHJhaXRlbWVudHMgYWZpbiBkZSBsZXMgZGlzcG9zZXIgc3VyIHZvdHJlIHNpdGUgaW50ZXJuZXQuPC9wPgo8aDM+Q29tbWVudCBsJ3V0aWxpc2VyID88L2gzPgo8cD5MZSB0YWcgcGFyIGTDqWZhdXQgZXN0IGNlbHVpLWNpIHtjbXNfbW9kdWxlIG1vZHVsZT0nUGluZyd9PC9wPgo8aDM+U3VwcG9ydDwvaDM+Cjx1bD4KPGxpPlBvdXIgb2J0ZW5pciBsYSBkZXJuacOocmUgdmVyc2lvbiBvZmZpY2llbGxlLCBGQVFzLCBvdSBwb3VyIHNpZ25hbGVyIHVuIGJ1ZywgZmFpcmUgdW5lIGRlbWFuZGUgZCdhbcOpbGlvcmF0aW9ucywgbWVyY2kgZGUgY29uc3VsdGVyIGxhIGZvcmdlIGR1IG1vZHVsZSDDoCBjZXR0ZSBhZHJlc3NlIDogCjxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvcGluZy8iPlBpbmc8L2E+LjwvbGk+CjwvdWw+CjxwPkNlIG1vZHVsZSBlc3QgZm91cm5pIHNvdXMgbGljZW5jZSBHUEwgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LlBvdXIgdXRpbGlzZXIgbGUgbG9naWNpZWwsIHZvdXMgZGV2ZXogZW4gIGFjY2VwdGVyIGxlcyB0ZXJtZXM8L3A+Cgo8aDM+Q29weXJpZ2h0IGV0IExpY2VuY2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMTQsIENsYXVkZSBTaW9oYW4gPGEgaHJlZj0ibWFpbHRvOmNsYXVkZUBhZ2ktd2ViY29uc2VpbC5mciI+Y2xhdWRlQGFnaS13ZWJjb25zZWlsLmZyPC9hPi4gVG91cyBkcm9pdHMgcsOpc2VydsOpcy48L3A+CjxoMz5QYXJhbWV0ZXJzPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gdG91cj0iMSIgLSBVdGlsZXogbGUgTsKwIGRlIGpvdXJuw6llIHBvdXIgb2J0ZW5pciBzZXMgcsOpc3VsdGF0cyB1bmlxdWVtZW50PC9saT48bGk+PGVtPihvcHRpb25hbCk8L2VtPiB0eXBlX2NvbXBldD0iMSIgLSBGaWx0cmV6IGxlcyByw6lzdWx0YXRzIGVuIHByw6ljaXNhbnQgbGUgdHlwZSBkZSBjb21ww6l0aXRpb248L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGRhdGVfZGVidXQ9IiIgLSBVdGlsaXNleiBsYSBkYXRlIGRlIGTDqWJ1dCBkZSBjb21ww6l0aXRpb24gYXUgZm9ybWF0IChhYWFhLW1tLWpqKTwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gZGF0ZV9maW49IiIgLSBVdGlsaXNleiBsYSBkYXRlIGRlIGZpbiBhdmVjIGxhIGRhdGUgZGUgZMOpYnV0IGF1IG3Dqm1lIGZvcm1hdDwvbGk+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGltaXQ9IjEwMDAwIiAtIFBvdXIgbGltaXRlciBsZSBuYiDDoCB4IHLDqXN1bHRhdHM8L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBhZ2ktd2ViY29uc2VpbCAmbHQ7Y2xhdWRlQGFnaS13ZWJjb25zZWlsLmZyJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDAuMi4yPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPgo8bGk+VmVyc2lvbiAwLjFiZXRhMywgTm92IDIwMTQgU2MgQW3DqWxpb3JhdGlvbnMgZHUgZnJvbnQtb2ZmaWNlIGV0IGTDqWJvZ3VhZ2UgZHUgYmFjazwvbGk+Cjx1bD4KICAgPGxpPk1pc2UgbmUgcGxhY2UgZHUgZnJvbnQtb2ZmaWNlLjwvbGk+CiAgIDxsaT5BbcOpbGlvcmF0aW9ucyBkdSBiYWNrLW9mZmljZSBldCBjb3JyZWN0aW9ucyBkZSBidWdzLjwvbGk+CjwvdWw+PGJyIC8+]]></about>
	<description><![CDATA[Ce module calcule vos points FFTT.]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAADAAAAAIAAAAMAAAABAMAAAAJQAAIAwAAAAAAAAAAgAAAAEAAAAEAAAAAwBsAGkAYmRzY2xib29sAAAAAAADAAAAAQAAABQAAAADAAAQAABiZHNjbGJvb2wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAMAbABpAGJsc3ZQYmxvYgAAAlFicGxpc3QwMNgBAgMEBQYHCAkKCwxBFUIKXxASdmlld09wdGlvbnNWZXJzaW9uXxAPc2hvd0ljb25QcmV2aWV3XxARY2FsY3VsYXRlQWxsU2l6ZXNXY29sdW1uc1h0ZXh0U2l6ZVpzb3J0Q29sdW1uWGljb25TaXplXxAQdXNlUmVsYXRpdmVEYXRlcxAACQiqDRYbHyQpLjM4PdQODxARChMKFVd2aXNpYmxlVXdpZHRoWWFzY2VuZGluZ1ppZGVudGlmaWVyCRECuwlUbmFtZdQODxARChgLGgkQtQhcZGF0ZU1vZGlmaWVk1A4PEBELGAseCAhbZGF0ZUNyZWF0ZWTUDg8QEQohCyMJEGEIVHNpemXUDg8QEQomCigJEHMJVGtpbmTUDg8QEQsrCi0IEGQJVWxhYmVs1A4PEBELMAoyCBBLCVd2ZXJzaW9u1A4PEBELNQo3CBEBLAlYY29tbWVudHPUDg8QEQs6CzwIEMgIXmRhdGVMYXN0T3BlbmVk1BEPEA4+GAsLWWRhdGVBZGRlZAgII0AoAAAAAAAAI0AwAAAAAAAACQAIABkALgBAAFQAXABlAHAAeQCMAI4AjwCQAJsApACsALIAvADHAMgAywDMANEA2gDbAN0A3gDrAPQA9QD2AQIBCwEMAQ4BDwEUAR0BHgEgASEBJgEvATABMgEzATkBQgFDAUUBRgFOAVcBWAFbAVwBZQFuAW8BcQFyAYEBigGUAZUBlgGfAagAAAAAAAACAQAAAAAAAABEAAAAAAAAAAAAAAAAAAABqQAAAAMAbABpAGJsc3ZwYmxvYgAAAldicGxpc3QwMNgBAgMEBQYHCAkKCwxFDkYKXxASdmlld09wdGlvbnNWZXJzaW9uXxAPc2hvd0ljb25QcmV2aWV3XxARY2FsY3VsYXRlQWxsU2l6ZXNXY29sdW1uc1h0ZXh0U2l6ZVpzb3J0Q29sdW1uWGljb25TaXplXxAQdXNlUmVsYXRpdmVEYXRlcxAACQjZDQ4PEBESExQVFh8jKC0yNzxBWGNvbW1lbnRzVG5hbWVbZGF0ZUNyZWF0ZWRUc2l6ZVVsYWJlbFRraW5kV3ZlcnNpb25eZGF0ZUxhc3RPcGVuZWRcZGF0ZU1vZGlmaWVk1BcYGRoLHAoeV3Zpc2libGVVd2lkdGhZYXNjZW5kaW5nVWluZGV4CBEBLAkQB9QXGBkaCiEKCQkRArsJ1BcYGRoLJQsnCBC1CBAC1BcYGRoKKgssCRBhCBAD1BcYGRoLLwoxCBBkCRAF1BcYGRoKNAo2CRBzCRAE1BcYGRoLOQo7CBBLCRAG1BcYGRoLPgtACBDICBAI1BcYGRoKJQtECQgQASNAKAAAAAAAACNAMAAAAAAAAAkACAAZAC4AQABUAFwAZQBwAHkAjACOAI8AkACjAKwAsQC9AMIAyADNANUA5ADxAPoBAgEIARIBGAEZARwBHQEfASgBKQEsAS0BNgE3ATkBOgE8AUUBRgFIAUkBSwFUAVUBVwFYAVoBYwFkAWYBZwFpAXIBcwF1AXYBeAGBAYIBhAGFAYcBkAGRAZIBlAGdAaYAAAAAAAACAQAAAAAAAABIAAAAAAAAAAAAAAAAAAABpwAAAAkAdABlAG0AcABsAGEAdABlAHNid3NwYmxvYgAAAPpicGxpc3QwMNkBAgMEBQYHCAkKCwoLCgsQEQpdU2hvd1N0YXR1c0JhcltTaG93U2lkZWJhcltTaG93UGF0aGJhcltTaG93VG9vbGJhcltTaG93VGFiVmlld18QFENvbnRhaW5lclNob3dTaWRlYmFyXFdpbmRvd0JvdW5kc1xTaWRlYmFyV2lkdGhfEBVQcmV2aWV3UGFuZVZpc2liaWxpdHkICQgJCAlfEBl7ezYyOSwgMzU0fSwgezEwMjQsIDQ0MH19EI4ICBspNUFNWXB9iqKjpKWmp6jExgAAAAAAAAEBAAAAAAAAABMAAAAAAAAAAAAAAAAAAADHAAAACQB0AGUAbQBwAGwAYQB0AGUAc2RzY2xib29sAQAAAAkAdABlAG0AcABsAGEAdABlAHNsc3ZQYmxvYgAAApNicGxpc3QwMNoBAgMEBQYHCAkKCwwNDkNERRRGDF8QEnZpZXdPcHRpb25zVmVyc2lvbl8QD3Nob3dJY29uUHJldmlld18QEWNhbGN1bGF0ZUFsbFNpemVzV2NvbHVtbnNfEA9zY3JvbGxQb3NpdGlvbllYdGV4dFNpemVfEA9zY3JvbGxQb3NpdGlvblhac29ydENvbHVtblhpY29uU2l6ZV8QEHVzZVJlbGF0aXZlRGF0ZXMQAAkIqg8YHSEmKzA1Oj/UEBESExQVDAxaaWRlbnRpZmllclV3aWR0aFlhc2NlbmRpbmdXdmlzaWJsZVRuYW1lEQHoCQnUEBESExkaDQxcZGF0ZU1vZGlmaWVkELUICdQQERITHhoNDVtkYXRlQ3JlYXRlZAgI1BAREhMiIw0MVHNpemUQYQgJ1BAREhMnKAwMVGtpbmQQcwkJ1BAREhMsLQwNVWxhYmVsEGQJCNQQERITMTIMDVd2ZXJzaW9uEEsJCNQQERITNjcMDVhjb21tZW50cxEBLAkI1BAREhM7PA0NXmRhdGVMYXN0T3BlbmVkEMgICNQTERIQDRoNQggIWWRhdGVBZGRlZCNAOgAAAAAAACNAKAAAAAAAACMAAAAAAAAAACNAMAAAAAAAAAkACAAdADIARABYAGAAcgB7AI0AmAChALQAtgC3ALgAwwDMANcA3QDnAO8A9AD3APgA+QECAQ8BEQESARMBHAEoASkBKgEzATgBOgE7ATwBRQFKAUwBTQFOAVcBXQFfAWABYQFqAXIBdAF1AXYBfwGIAYsBjAGNAZYBpQGnAagBqQGyAbMBtAG+AccB0AHZAeIAAAAAAAACAQAAAAAAAABIAAAAAAAAAAAAAAAAAAAB4wAAAAkAdABlAG0AcABsAGEAdABlAHNsc3ZwYmxvYgAAAplicGxpc3QwMNoBAgMEBQYHCAkKCwwNDkdISRBKDF8QEnZpZXdPcHRpb25zVmVyc2lvbl8QD3Nob3dJY29uUHJldmlld18QEWNhbGN1bGF0ZUFsbFNpemVzV2NvbHVtbnNfEA9zY3JvbGxQb3NpdGlvbllYdGV4dFNpemVfEA9zY3JvbGxQb3NpdGlvblhac29ydENvbHVtblhpY29uU2l6ZV8QEHVzZVJlbGF0aXZlRGF0ZXMQAAkI2Q8QERITFBUWFxghJSovNDk+Q1hjb21tZW50c1RuYW1lW2RhdGVDcmVhdGVkVHNpemVVbGFiZWxUa2luZFd2ZXJzaW9uXmRhdGVMYXN0T3BlbmVkXGRhdGVNb2RpZmllZNQZGhscHR4MDVVpbmRleFV3aWR0aFlhc2NlbmRpbmdXdmlzaWJsZRAHEQEsCQjUGRobHAsiDAwRAegJCdQZGhscJicNDRACELUICNQZGhscKywNDBADEGEICdQZGhscMDEMDRAFEGQJCNQZGhscNTYMDBAEEHMJCdQZGhscOjsMDRAGEEsJCNQZGhscP0ANDRAIEMgICNQZGhscRCcNDBABCAkjQDoAAAAAAAAjQCgAAAAAAAAjAAAAAAAAAAAjQDAAAAAAAAAJAAgAHQAyAEQAWABgAHIAewCNAJgAoQC0ALYAtwC4AMsA1ADZAOUA6gDwAPUA/QEMARkBIgEoAS4BOAFAAUIBRQFGAUcBUAFTAVQBVQFeAWABYgFjAWQBbQFvAXEBcgFzAXwBfgGAAYEBggGLAY0BjwGQAZEBmgGcAZ4BnwGgAakBqwGtAa4BrwG4AboBuwG8AcUBzgHXAeAAAAAAAAACAQAAAAAAAABMAAAAAAAAAAAAAAAAAAAB4QAAAAkAdABlAG0AcABsAGEAdABlAHN2U3JubG9uZwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAEAGMAcgBvAG5kc2NsYm9vbAAAAAAEAGMAcgBvAG52U3JubG9uZwAAAAEAAAAGAGkAbQBhAGcAZQBzZHNjbGJvb2wAAAAABwBpAG4AYwBsAHUAZABlYndzcGJsb2IAAAD6YnBsaXN0MDDZAQIDBAUGBwgJCgsKCwoLEBEKXVNob3dTdGF0dXNCYXJbU2hvd1NpZGViYXJbU2hvd1BhdGhiYXJbU2hvd1Rvb2xiYXJbU2hvd1RhYlZpZXdfEBRDb250YWluZXJTaG93U2lkZWJhclxXaW5kb3dCb3VuZHNcU2lkZWJhcldpZHRoXxAVUHJldmlld1BhbmVWaXNpYmlsaXR5CAkICQgJXxAZe3sxMjAsIDYxN30sIHsxMjI5LCA0NDB9fRCICAgbKTVBTVlwfYqio6SlpqeoxMYAAAAAAAABAQAAAAAAAAATAAAAAAAAAAAAAAAAAAAAxwAAAAcAaQBuAGMAbAB1AGQAZWRzY2xib29sAAAAAAcAaQBuAGMAbAB1AGQAZWxzdlBibG9iAAACUWJwbGlzdDAw2AECAwQFBgcICQoLDEESCkNfEBJ2aWV3T3B0aW9uc1ZlcnNpb25fEA9zaG93SWNvblByZXZpZXdfEBFjYWxjdWxhdGVBbGxTaXplc1djb2x1bW5zWHRleHRTaXplWnNvcnRDb2x1bW5fEBB1c2VSZWxhdGl2ZURhdGVzWGljb25TaXplEAAJCKoNFhsfJCkuMzg91A4PEBESEwoKWmlkZW50aWZpZXJVd2lkdGhZYXNjZW5kaW5nV3Zpc2libGVUbmFtZRECuwkJ1A4PEBEXGAsKXGRhdGVNb2RpZmllZBC1CAnUDg8QERwYCwtbZGF0ZUNyZWF0ZWQICNQODxARICELClRzaXplEGEICdQODxARJSYKClRraW5kEHMJCdQODxARKisKC1VsYWJlbBBkCQjUDg8QES8wCgtXdmVyc2lvbhBLCQjUDg8QETQ1CgtYY29tbWVudHMRASwJCNQODxAROToLC15kYXRlTGFzdE9wZW5lZBDICAjUEQ8QDgsYC0AICFlkYXRlQWRkZWQjQCgAAAAAAAAJI0AwAAAAAAAAAAgAGQAuAEAAVABcAGUAcACDAIwAjgCPAJAAmwCkAK8AtQC/AMcAzADPANAA0QDaAOcA6QDqAOsA9AEAAQEBAgELARABEgETARQBHQEiASQBJQEmAS8BNQE3ATgBOQFCAUoBTAFNAU4BVwFgAWMBZAFlAW4BfQF/AYABgQGKAYsBjAGWAZ8BoAAAAAAAAAIBAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAGpAAAABwBpAG4AYwBsAHUAZABlbHN2cGJsb2IAAAJXYnBsaXN0MDDYAQIDBAUGBwgJCgsMRQ4KR18QEnZpZXdPcHRpb25zVmVyc2lvbl8QD3Nob3dJY29uUHJldmlld18QEWNhbGN1bGF0ZUFsbFNpemVzV2NvbHVtbnNYdGV4dFNpemVac29ydENvbHVtbl8QEHVzZVJlbGF0aXZlRGF0ZXNYaWNvblNpemUQAAkI2Q0ODxAREhMUFRYfIygtMjc8QVhjb21tZW50c1RuYW1lW2RhdGVDcmVhdGVkVHNpemVVbGFiZWxUa2luZFd2ZXJzaW9uXmRhdGVMYXN0T3BlbmVkXGRhdGVNb2RpZmllZNQXGBkaGxwKC1VpbmRleFV3aWR0aFlhc2NlbmRpbmdXdmlzaWJsZRAHEQEsCQjUFxgZGgkgCgoRArsJCdQXGBkaJCULCxACELUICNQXGBkaKSoLChADEGEICdQXGBkaLi8KCxAFEGQJCNQXGBkaMzQKChAEEHMJCdQXGBkaODkKCxAGEEsJCNQXGBkaPT4LCxAIEMgICNQXGBkaQiULChABCAkjQCgAAAAAAAAJI0AwAAAAAAAAAAgAGQAuAEAAVABcAGUAcACDAIwAjgCPAJAAowCsALEAvQDCAMgAzQDVAOQA8QD6AQABBgEQARgBGgEdAR4BHwEoASsBLAEtATYBOAE6ATsBPAFFAUcBSQFKAUsBVAFWAVgBWQFaAWMBZQFnAWgBaQFyAXQBdgF3AXgBgQGDAYUBhgGHAZABkgGTAZQBnQGeAAAAAAAAAgEAAAAAAAAASAAAAAAAAAAAAAAAAAAAAacAAAAEAGwAYQBuAGdid3NwYmxvYgAAAPpicGxpc3QwMNkBAgMEBQYHCAkKCwoLCgsQEQpdU2hvd1N0YXR1c0JhcltTaG93U2lkZWJhcltTaG93UGF0aGJhcltTaG93VG9vbGJhcltTaG93VGFiVmlld18QFENvbnRhaW5lclNob3dTaWRlYmFyXFdpbmRvd0JvdW5kc1xTaWRlYmFyV2lkdGhfEBVQcmV2aWV3UGFuZVZpc2liaWxpdHkICQgJCAlfEBl7ezE2MCwgNTc3fSwgezEyMjksIDQ0MH19EIgICBspNUFNWXB9iqKjpKWmp6jExgAAAAAAAAEBAAAAAAAAABMAAAAAAAAAAAAAAAAAAADHAAAABABsAGEAbgBnZHNjbGJvb2wAAAAABABsAGEAbgBnbHN2UGJsb2IAAAJvYnBsaXN0MDDYAQIDBAUGBwgJCgsMRBUKRlhpY29uU2l6ZV8QD3Nob3dJY29uUHJldmlld18QEWNhbGN1bGF0ZUFsbFNpemVzV2NvbHVtbnNYdGV4dFNpemVac29ydENvbHVtbl8QEHVzZVJlbGF0aXZlRGF0ZXNfEBJ2aWV3T3B0aW9uc1ZlcnNpb24jQDAAAAAAAAAJCKoNFhsfJCkuMzg91A4PEBEKEwoVV3Zpc2libGVVd2lkdGhZYXNjZW5kaW5nWmlkZW50aWZpZXIJEQK7CVRuYW1l1A4PEBEKGAsaCRC1CFxkYXRlTW9kaWZpZWTUDg8QEQsYCx4ICFtkYXRlQ3JlYXRlZNQODxARCiELIwkQYQhUc2l6ZdQODxARCiYKKAkQcwlUa2luZNQODxARCysKLQgQZAlVbGFiZWzUDg8QEQswCjIIEEsJV3ZlcnNpb27UDg8QEQs1CjcIEQEsCVhjb21tZW50c9QODxARCzoLPAgQyAheZGF0ZUxhc3RPcGVuZWTUPj9AEQsYC0NXdmlzaWJsZVV3aWR0aFlhc2NlbmRpbmcICFlkYXRlQWRkZWQjQCgAAAAAAAAJEAAACAAZACIANABIAFAAWQBkAHcAjACVAJYAlwCiAKsAswC5AMMAzgDPANIA0wDYAOEA4gDkAOUA8gD7APwA/QEJARIBEwEVARYBGwEkASUBJwEoAS0BNgE3ATkBOgFAAUkBSgFMAU0BVQFeAV8BYgFjAWwBdQF2AXgBeQGIAZEBmQGfAakBqgGrAbUBvgG/AAAAAAAAAgEAAAAAAAAARwAAAAAAAAAAAAAAAAAAAcEAAAAEAGwAYQBuAGdsc3ZwYmxvYgAAAldicGxpc3QwMNgBAgMEBQYHCAkKCwxGFApBWGljb25TaXplXxAPc2hvd0ljb25QcmV2aWV3XxARY2FsY3VsYXRlQWxsU2l6ZXNXY29sdW1uc1h0ZXh0U2l6ZVpzb3J0Q29sdW1uXxAQdXNlUmVsYXRpdmVEYXRlc18QEnZpZXdPcHRpb25zVmVyc2lvbiNAMAAAAAAAAAkI2Q0ODxAREhMUFRYfJCkuMzg9Qlhjb21tZW50c15kYXRlTGFzdE9wZW5lZFtkYXRlQ3JlYXRlZFRzaXplVWxhYmVsVGtpbmRXdmVyc2lvblRuYW1lXGRhdGVNb2RpZmllZNQXGBkaCxwKHld2aXNpYmxlVXdpZHRoWWFzY2VuZGluZ1VpbmRleAgRASwJEAfUFxgZGgshCyMIEMgIEAjUFxgZGgsmCygIELUIEALUFxgZGgorCy0JEGEIEAPUFxgZGgswCjIIEGQJEAXUFxgZGgo1CjcJEHMJEATUFxgZGgs6CjwIEEsJEAbUFxgZGgo/CkEJEQK7CRAA1BcYGRoKJgtFCQgQASNAKAAAAAAAAAkACAAZACIANABIAFAAWQBkAHcAjACVAJYAlwCqALMAwgDOANMA2QDeAOYA6wD4AQEBCQEPARkBHwEgASMBJAEmAS8BMAEyATMBNQE+AT8BQQFCAUQBTQFOAVABUQFTAVwBXQFfAWABYgFrAWwBbgFvAXEBegF7AX0BfgGAAYkBigGNAY4BkAGZAZoBmwGdAaYAAAAAAAACAQAAAAAAAABIAAAAAAAAAAAAAAAAAAABpwAAAAMAbABpAGJid3NwYmxvYgAAAPpicGxpc3QwMNkBAgMEBQYHCAkKCwoLCgsQEQpdU2hvd1N0YXR1c0JhcltTaG93U2lkZWJhcltTaG93UGF0aGJhcltTaG93VG9vbGJhcltTaG93VGFiVmlld18QFENvbnRhaW5lclNob3dTaWRlYmFyXFdpbmRvd0JvdW5kc1xTaWRlYmFyV2lkdGhfEBVQcmV2aWV3UGFuZVZpc2liaWxpdHkICQgJCAlfEBl7ezEyMCwgNjE3fSwgezEyMjksIDQ0MH19EIgICBspNUFNWXB9iqKjpKWmp6jExgAAAAAAAAEBAAAAAAAAABMAAAAAAAAAAAAAAAAAAADHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAwCwAAAEUAABAMAAAAJQAAIAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEERFNEQgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABgAAAAAAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAgAACAAAADgAAAAAAAAAAAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAHRlTW9kaWZpZWTUFxgZGhscCgtVaW5kZXhVd2lkdGhZYXNjZW5kaW5nV3Zpc2libGUQBxEBLAkI1BcYGRoJIAoKEQK7CQnUFxgZGiQlCwsQAhC1CAjUFxgZGikqCwoQAxBhCAnUFxgZGi4vCgsQBRBkCQjUFxgZGjM0CgoQBBBzCQnUFxgZGjg5CgsQBhBLCQjUFxgZGj0+CwsQCBDICAjUFxgZGkIlCwoQAQgJI0AoAAAAAAAACSNAMAAAAAAAAAAIABkALgBAAFQAXABlAHAAgwCMAI4AjwCQAKMArACxAL0AwgDIAM0A1QDkAPEA+gEAAQYBEAEYARoBHQEeAR8BKAErASwBLQE2ATgBOgE7ATwBRQFHAUkBSgFLAVQBVgFYAVkBWgFjAWUBZwFoAWkBcgF0AXYBdwF4AYEBgwGFAYYBhwGQAZIBkwGUAZ0BngAAAAAAAAIBAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAGnAAAABABsAGEAbgBnYndzcGJsb2IAAAD6YnBsaXN0MDDZAQIDBAUGBwgJCgsKCwoLEBEKXVNob3dTdGF0dXNCYXJbU2hvd1NpZGViYXJbU2hvd1BhdGhiYXJbU2hvd1Rvb2xiYXJbU2hvd1RhYlZpZXdfEBRDb250YWluZXJTaG93U2lkZWJhclxXaW5kb3dCb3VuZHNcU2lkZWJhcldpZHRoXxAVUHJldmlld1BhbmVWaXNpYmlsaXR5CAkICQgJXxAZe3sxNjAsIDU3N30sIHsxMjI5LCA0NDB9fRCICAgbKTVBTVlwfYqio6SlpqeoxMYAAAAAAAABAQAAAAAAAAATAAAAAAAAAAAAAAAAAAAAxwAAAAQAbABhAG4AZ2RzY2xib29sAAAAAAQAbABhAG4AZ2xzdlBibG9iAAACb2JwbGlzdDAw2AECAwQFBgcICQoLDEQVCkZYaWNvblNpemVfEA9zaG93SWNvblByZXZpZXdfEBFjYWxjdWxhdGVBbGxTaXplc1djb2x1bW5zWHRleHRTaXplWnNv]]></data>
	</file>
	<file>
	  <filename>/action.a-venir.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyAgICAgICAgICAgICAgICAgIFRvIGNvbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIwojIyMgICAgQ2V0dGUgcGFnZSBhZmZpY2hlIGxlcyBwcm9jaGFpbmVzIGNvbXDDqXRpdGlvbnMgw6AgdmVuaXIgICAgICMjIwojIyBQYXJhbXMgaW50ZXJ2YWxsZSBkZSB0ZW1wcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyMKIyMgUGFyYW1zIGxpbWl0IHBvdXIgbGltaXRlciBsZSBuYiBkZSByw6lzdWx0YXRzICAgICAgICAgICAgICAgICAgICMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLy9sZXMgY29tcMOpdGl0aW9ucyDDoCB2ZW5pcgppZighaXNzZXQoJGdDbXMpKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKLy9sYSByZXF1ZXRlCiRxdWVyeSA9ICJTRUxFQ1QgY2FsLmRhdGVfZGVidXQsIGNhbC5kYXRlX2ZpbiwgY2FsLnR5cGVfY29tcGV0LHRjLm5hbWUsIHRjLmluZGl2cyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jYWxlbmRyaWVyIEFTIGNhbCwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIEFTIHRjICBXSEVSRSB0Yy5jb2RlX2NvbXBldCA9IGNhbC50eXBlX2NvbXBldCBBTkQgY2FsLmRhdGVfZGVidXQgQkVUV0VFTiBOT1coKSAiOy8vQU5EIChOT1coKSArIElOVEVSVkFMIDcgREFZKSI7Ly8vQkVUV0VFTiAnMjAxNC0xMi0wMScgQU5EICgnMjAxNC0xMi0wMScrIElOVEVSVkFMIDcgREFZKSAiOy8vLy8KJHRlbXBzID0gMTQ7CiRxdWVyeS49IiBBTkQgKE5PVygpICsgSU5URVJWQUwgIi4kdGVtcHMuIiBEQVkpIjsKLy9kw6lmaW5pciB1bmUgcHLDqWbDqXJlbmNlIHBvdXIgdW4gaW50ZXJ2YWwgZGUgdGVtcHMKLy9Qb3VyIGNoYXF1ZSByw6lzdWx0YXQgc2F2b2lyIHMnaWwgcydhZ2l0IGQndW5lIGNvbXDDqXRpdGlvbiBlc3QgaW5kaXZpZHVlbGxlIG91IG5vbgovL2ljaSBvbiBwZXV0IGZhaXJlIGRlcyBwcsOpZsOpcmVuY2VzIHBvdXIgYWZmaW5lciBsZXMgcsOpc3VsdGF0cwokbGltaXQgPSAnJzsKJG9yZGVyID0gJyc7CiR0eXBlX2NvbXBldCA9ICcnOwoKCWlmKGlzc2V0KCRwYXJhbXNbJ3R5cGVfY29tcGV0J10pICYmICRwYXJhbXNbJ3R5cGVfY29tcGV0J10gIT0nJykKCXsKCQkkcXVlcnkuPSIgQU5EIGNhbC50eXBlX2NvbXBldCA9ID8iOwoJCSRwYXJtc1sndHlwZV9jb21wZXQnXSA9ICRwYXJhbXNbJ3R5cGVfY29tcGV0J107Cgl9CgkKJHF1ZXJ5Lj0iIE9SREVSIEJZIGNhbC5kYXRlX2RlYnV0IEFTQywgdGMuY29kZV9jb21wZXQiOwkKCglpZihpc3NldCgkcGFyYW1zWydsaW1pdCddKSAmJiAkcGFyYW1zWydsaW1pdCddICE9JycpCgl7CgkJJGxpbWl0ID0gJHBhcmFtc1snbGltaXQnXTsKCQkkcXVlcnkuPSAiIExJTUlUIDAsIi4kbGltaXQ7Cgl9CgkKaWYoJHR5cGVfY29tcGV0ICE9JycpCnsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICRwYXJtcyk7Cn0KZWxzZQp7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKfQoKCiRyb3dhcnJheSA9IGFycmF5KCk7CiRpPTA7CmlmKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk+MCkKewoJd2hpbGUoJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCXsKCQkkaW5kaXZzID0gJHJvd1snaW5kaXZzJ107CgkJJGRhdGVfZGVidXQgPSAkcm93WydkYXRlX2RlYnV0J107CgkJJGRhdGVfZmluID0gJHJvd1snZGF0ZV9maW4nXTsKCQkkdHlwZV9jb21wZXQgPSAkcm93Wyd0eXBlX2NvbXBldCddOwoJCSRjb21wZXQgPSAkcm93WyduYW1lJ107CgkJJG9uZXJvdyA9IG5ldyBTdGRDbGFzcygpOwoJCSRvbmVyb3ctPnJvd2NsYXNzID0gJHJvd2NsYXNzOwoJCSRvbmVyb3ctPmNvbXBldCA9ICRjb21wZXQ7CgkJJG9uZXJvdy0+ZGF0ZSA9ICRkYXRlX2RlYnV0OwoJCSRvbmVyb3ctPmluZGl2cyA9ICRyb3dbJ2luZGl2cyddOwoJCSAvL29uIGTDqWNsYXJlIHVuIG5vdXZlYXUgdGFibGVhdQoJCSRyb3dhcnJheTIgPSBhcnJheSgpOwoJCWlmKCRpbmRpdnMgPT0gMCkgICAgLy9vbiBlc3Qgc3VyIHVuZSBjb21ww6l0aXRpb24gcGFyIMOpcXVpcGVzCgkJewoJCQkkaSsrOwoJCQkkb25lcm93LT52YWxldXIgPSAkaTsKCQkJLy9vbiByZWZhaXQgdW5lIHJlcXVldGUgcG91ciBleHRyYWlyZSBsZXMgcmVuY29udHJlcwoJCQkkcXVlcnkyID0gIlNFTEVDVCAqLGVxLmZyaWVuZGx5bmFtZSwgZXEubGliZXF1aXBlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzIEFTIHJlbiwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgQVMgZXEgV0hFUkUgcmVuLmlkZGl2ID0gZXEuaWRkaXYgQU5EIHJlbi5pZHBvdWxlID0gZXEuaWRwb3VsZSBBTkQgcmVuLnNhaXNvbiA9IGVxLnNhaXNvbiBBTkQgcmVuLmNsdWIgPSAnMScgQU5EIHJlbi5kYXRlX2V2ZW50ID0gPyBBTkQgZXEudHlwZV9jb21wZXQgPSA/IjsvLyIgQU5EIGRhdGVfZXZlbnQgPj1Ob3coKSI7CgkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsYXJyYXkoJGRhdGVfZGVidXQsICR0eXBlX2NvbXBldCkpOwoJCQkkbmJsaWduZXMgPSAkZGJyZXN1bHRhdC0+UmVjb3JkQ291bnQoKTsKCQkJLy9lY2hvICJsZSBuYiBkZSBsaWduZXMgZXN0IDogIi4kbmJsaWduZXM7CgkJCWlmKCRkYnJlc3VsdGF0ICYmICRkYnJlc3VsdGF0LT5SZWNvcmRDb3VudCgpPjApCgkJCXsKCQkJCXdoaWxlKCRyb3cyID0gJGRicmVzdWx0YXQtPkZldGNoUm93KCkpCgkJCQl7CgkJCQkJLy8kdmFsZXVyID0gJGk7CgkJCQkJJG9uZXJvdzIgPSBuZXcgU3RkQ2xhc3MoKTsKCQkJCQkkZXF1YSA9ICRyb3cyWydlcXVhJ107CgkJCQkJJGVxdWIgPSAkcm93MlsnZXF1YiddOwoJCQkJCSRsaWJlcXVpcGUgPSAkcm93MlsnbGliZXF1aXBlJ107CgkJCQkJJGZyaWVuZGx5bmFtZSA9ICRyb3cyWydmcmllbmRseW5hbWUnXTsKCQkJCQlpZihpc3NldCgkZnJpZW5kbHluYW1lKSAmJiAkZnJpZW5kbHluYW1lICE9JycpCgkJCQkJewoJCQkJCQlpZiAoJGxpYmVxdWlwZSA9PSAkZXF1YSkKCQkJCQkJewoJCQkJCQkJJG9uZXJvdzItPmVxdWE9ICRyb3cyWydmcmllbmRseW5hbWUnXTsKCQkJCQkJfQoJCQkJCQkKCQkJCQkJZWxzZXsKCQkJCQkJCSRvbmVyb3cyLT5lcXVhPSAkcm93MlsnZXF1YSddOwoJCQkJCQl9CgoJCQkJCX0KCQkJCQllbHNlewoJCQkJCQkkb25lcm93Mi0+ZXF1YT0gJHJvdzJbJ2VxdWEnXTsKCQkJCQl9CgkJCQkJaWYoaXNzZXQoJGZyaWVuZGx5bmFtZSkgJiYgJGZyaWVuZGx5bmFtZSAhPScnKQoJCQkJCXsKCQkJCQkJaWYgKCRsaWJlcXVpcGUgPT0gJGVxdWIpCgkJCQkJCXsKCQkJCQkJCSRvbmVyb3cyLT5lcXViPSAkcm93MlsnZnJpZW5kbHluYW1lJ107CgkJCQkJCX0KCgkJCQkJCWVsc2V7CgkJCQkJCQkkb25lcm93Mi0+ZXF1Yj0gJHJvdzJbJ2VxdWInXTsKCQkJCQkJfQoKCQkJCQl9CgkJCQkJZWxzZXsKCQkJCQkJJG9uZXJvdzItPmVxdWI9ICRyb3cyWydlcXViJ107CgkJCQkJfQoJCQkJCQoJCQkJCS8vJG9uZXJvdzItPnZhbGV1ciA9ICR2YWxldXI7CgkJCQkJJHJvd2FycmF5MltdID0gJG9uZXJvdzI7CgkJCQkJCgkJCQl9CgkJCQkKCQkJCSRzbWFydHktPmFzc2lnbigncHJvZHNfJy4kaSwkcm93YXJyYXkyKTsKCQkJCXVuc2V0KCRyb3dhcnJheTIpOwoJCQkvLwl1bnNldCgkdmFsZXVyKTsKCQkJfQoJCQkKCQl9CgkJZWxzZQoJCXsKCQkJJGRhdGVfZXZlbnQgPSAkcm93WydkYXRlX2RlYnV0J107CgkJCSRuYW1lID0gJHJvd1snbmFtZSddOwoJCQkvLyRvbmVyb3ctPmNvbXBldCA9ICRuYW1lOwoJCX0KCQkkcm93YXJyYXlbXSAgPSAkb25lcm93OwoJCSRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwoJCQoJfQp9CmVsc2UKewoJJHNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJywgJ1BhcyBkZSByw6lzdWx0YXRzJyk7CgllY2hvICdwYXMgZGUgcsOpc3VsdGF0cyc7Cn0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhdmVuaXIudHBsJyk7CiMKI0VPRgojCj8+CgoKCgoKCgo=]]></data>
	</file>
	<file>
	  <filename>/action.able_player.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjICAgICAgICAgICAgICAgICAgICAgICBBY3RpdmF0aW9uL2TDqXNhY3RpdmF0aW9uIGQndW4gam91ZXVyICAjIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgTWFuYWdlJykpCiAgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CglyZXR1cm47CiAgIAogIH0KCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKJGVycm9yID0gJyc7CiRsaWNlbmNlID0gJyc7CmlmKCBpc3NldCggJHBhcmFtc1snbGljZW5jZSddICkgJiYgJHBhcmFtc1snbGljZW5jZSddICE9ICcnKSAgICAKewoJJGxpY2VuY2UgPSAkcGFyYW1zWydsaWNlbmNlJ107Cn0KZWxzZQp7CgkJJGVycm9yKys7Cn0JCiRhY3RpZiA9ICcnOwppZiggaXNzZXQoICRwYXJhbXNbJ2FjdGlmJ10pICYmICRwYXJhbXNbJ2FjdGlmJ10gIT0gJycpCnsKCSRhY3RpZiA9ICRwYXJhbXNbJ2FjdGlmJ107Cn0KZWxzZQp7CgkkZXJyb3IrKzsKfQoKLy9vbiBjb21wdGUgbGUgbm9tYnJlIGQnZXJyZXVyCmVjaG8gJGVycm9yOwppZigkZXJyb3I+MCkKewoJJHRoaXMtPlNldE1lc3NhZ2UoInBhcmFtw6h0cmVzIG1hbnF1YW50cyIpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwp9CgppZigkcGFyYW1zWydhY3RpZiddID09JzEnKXsKCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgU0VUIGFjdGlmID0nMScgIFdIRVJFIGxpY2VuY2UgPSA/IjsKCSRtZXNzYWdlID0gIkpvdWV1ciBhY3RpdsOpIjsKfQplbHNlCnsKCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgU0VUIGFjdGlmID0nMCcgIFdIRVJFIGxpY2VuY2UgPSA/IjsKCSRtZXNzYWdlID0gIkpvdWV1ciBkw6lzYWN0aXbDqSI7Cn0KICAgIAogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoICRsaWNlbmNlICkpOwogICAgaWYoJGRicmVzdWx0KQogICAgICAKCXsKCQkkdGhpcy0+U2V0TWVzc2FnZSgiJG1lc3NhZ2UiKTsKCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdqb3VldXJzJyk7CgkJCgl9CgoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.add_all_sit_mens.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKICAgaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3ByZWZzLnBocCcpOwokbm9tX2VxdWlwZXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbm9tX2VxdWlwZXMnKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJG1vaXNfY291cmFudCA9IGRhdGUoJ24nKTsKLy9lY2hvICJsZSBtb2lzIGNvdXJhbnQgZXN0IDoiLiRtb2lzX2NvdXJhbnQ7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKZ2xvYmFsICR0aGVtZU9iamVjdDsKJHJlc3VsdD0gYXJyYXkoKTsKJHBhcm1zID0gYXJyYXkoKTsKJHBoYXNlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BoYXNlX2VuX2NvdXJzJyk7CiRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKCglpZigkcGhhc2U9PTEpCgl7CgkJJG1vaXNfZGVwYXJ0PTk7CgkJJG1vaXNfZmluID0gMTI7CgkJCgl9CgllbHNlewoJCQoJfQoKCiRyb3dhcnJheSA9IGFycmF5KCk7CiRyb3dqb3VldXIgPSBhcnJheSgpOwokam91ZXVyID0gYXJyYXkoKTsKJHF1ZXJ5MSA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJyxub20sIHByZW5vbSkgQVMgam91ZXVyLCBsaWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgV0hFUkUgYWN0aWYgPSAnMSciOwokZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkxKTsKCglpZigkZGJyZXN1bHRhdCAmJiAkZGJyZXN1bHRhdC0+UmVjb3JkQ291bnQoKT4wKQoJewoJCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHRhdC0+RmV0Y2hSb3coKSkKCQl7CgkJCS8vJG1heCA9ICAkcm93Wyd0b3RhbCddOwoJCQkkam91ZXVyID0gJHJvd1snam91ZXVyJ107CgkJCS8vZWNobyAkam91ZXVyOwoJCQkkbGljZW5jZSA9ICRyb3dbJ2xpY2VuY2UnXTsKCQkJJHJvd2FycmF5WyRsaWNlbmNlXSA9ICRqb3VldXI7CQoJCQkkc21hcnR5LT5hc3NpZ24oJ3Jvd2pvdWV1cicsJGpvdWV1cik7CgkJCSRzbWFydHktPmFzc2lnbignbGljZW5jZScsJGxpY2VuY2UpOwoJCQkkc21hcnR5LT5hc3NpZ24oJ3Jvd2FycmF5JywgJHJvd2FycmF5KTsKCQkJJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLAoJICAgIAkJCSR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoICRpZCwgJ2RvX2FkZF9hbGxfc2l0X21lbnMnLCAkcmV0dXJuaWQgKSApOwoJCQkJCgkJCQkkc21hcnR5LT5hc3NpZ24oJ2Nob2l4X21vaXMnLAoJCQkJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2Nob2l4X21vaXMnLCRsaXN0ZV9tb2lzLCAkbW9pc19jb3VyYW50LC0xKSk7CgkJCS8vJHNtYXJ0eS0+YXNzaWduKCdsaWduZXMnLCAkbWF4KTsJCgkJCQkJCQoJCQkJCQkJCgkJCSRzbWFydHktPmFzc2lnbignc3VibWl0JywKCQkJCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpLCAnY2xhc3M9ImJ1dHRvbiInKSk7CgkJCSRzbWFydHktPmFzc2lnbignY2FuY2VsJywKCQkJCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdjYW5jZWwnLAoJCQkJCQkJCSR0aGlzLT5MYW5nKCdjYW5jZWwnKSkpOwoJCQkkc21hcnR5LT5hc3NpZ24oJ2JhY2snLAoJCQkJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2JhY2snLAoJCQkJCQkJCSR0aGlzLT5MYW5nKCdiYWNrJykpKTsKCgkJCSRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsCgkJCQkJJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgkJfQkKfQkJCgkJCQoJCQkKCQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkZF9hbGxfc2l0X21lbnMudHBsJyk7CQkKCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.add_compet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCglpZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgTWFuYWdlJykpCiAgCXsKICAgIAkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CgkJcmV0dXJuOwogICAKICAJfQoKCWlmKCBpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgKQogIAl7CiAgICAJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2NvbXBldHMnKTsKICAgIAkJcmV0dXJuOwogIAl9Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwokZGIgPSYgJHRoaXMtPkdldERiKCk7Ci8vcydhZ2l0LWlsIGQndW5lIG1vZGlmIG91IGQndW5lIGNyw6lhID8KJHJlY29yZF9pZCA9ICcnOwokdHlwZV9jb21wZXRfc2VsZWN0ZWQgPSAnJzsKJGRhdGVfZGVidXQgPSAnJzsKJGRhdGVfZmluID0gJyc7CiRudW1qb3VybiA9ICcnOwokZWRpdCA9IDA7CgoJaWYoaXNzZXQoJHBhcmFtc1sncmVjb3JkX2lkJ10pICYmICRwYXJhbXNbJ3JlY29yZF9pZCddICE9IiIpCgl7CgkJJHJlY29yZF9pZCA9ICRwYXJhbXNbJ3JlY29yZF9pZCddOwoJCSRlZGl0ID0gMTsvL29uIGVzdCBiaWVuIGVuIHRyYWkgZCfDqWRpdGVyIHVuIGVucmVnaXN0cmVtZW50CgkJLy9PTiBWQSBDSEVSQ0hFUiBsJ2VucmVnaXN0cmVtZW50IGVuIHF1ZXN0aW9uCgkJJHF1ZXJ5ID0gIlNFTEVDVCBjYWwuaWQsIHRjLmlkIEFTIGluZGV4MSwgY2FsLnR5cGVfY29tcGV0LCB0Yy5uYW1lLCBjYWwuZGF0ZV9kZWJ1dCwgY2FsLmRhdGVfZmluLCBjYWwubnVtam91cm4gRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2FsZW5kcmllciBBUyBjYWwsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyBBUyB0YyBXSEVSRSBjYWwudHlwZV9jb21wZXQgPSB0Yy5jb2RlX2NvbXBldCBBTkQgY2FsLmlkID0gPyI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJlY29yZF9pZCkpOwoJCXdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQkJewoJCQkJJHR5cGVfY29tcGV0X3NlbGVjdGVkID0gJHJvd1sndHlwZV9jb21wZXQnXTsKCQkJCSRkYXRlX2RlYnV0ID0gJHJvd1snZGF0ZV9kZWJ1dCddOwoJCQkJJGRhdGVfZmluID0gJHJvd1snZGF0ZV9maW4nXTsKCQkJCSRudW1qb3VybiA9ICRyb3dbJ251bWpvdXJuJ107CgkJCQkkbmFtZSA9ICRyb3dbJ25hbWUnXTsKCQkJCSRpbmRleCA9ICRyb3dbJ2luZGV4MSddIC0gMTsKCQkJCQoJCQkJCgkJCQkKCQkJfQoJfQoJLy9vbiBmYWl0IHVuZSByZXF1ZXRlIHBvdXIgY29tcGxldGVyIGwnaW5wdXQgZHJvcGRvd24gZHUgZm9ybXVsYWlyZQoJJHF1ZXJ5ID0gIlNFTEVDVCBuYW1lLCBjb2RlX2NvbXBldCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCgkJaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+MCkKCQl7CgkJCXdoaWxlKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQkJewoJCQkJJHR5cGVfY29tcGV0WyRyb3dbJ25hbWUnXV0gPSAkcm93Wydjb2RlX2NvbXBldCddOwoJCQl9CgkJfQoKCgkJCQoJCgkvL29uIGNvbnN0cnVpdCBsZSBmb3JtdWxhaXJlCgkkc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsCgkJCSAgICAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCAkaWQsICdkb19hZGRfY29tcGV0JywgJHJldHVybmlkICkgKTsKCSRzbWFydHktPmFzc2lnbigndHlwZV9jb21wZXQnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3R5cGVfY29tcGV0JywkdHlwZV9jb21wZXQsJHNlbGVjdGVkaW5kZXggPSAkaW5kZXgsICRzZWxlY3RlZHZhbHVlPSRuYW1lKSk7Cgkkc21hcnR5LT5hc3NpZ24oJ2RhdGVfZGVidXQnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXREYXRlKCRpZCwgJ2RhdGVfZGVidXQnLCRkYXRlX2RlYnV0KSk7Cgkkc21hcnR5LT5hc3NpZ24oJ2RhdGVfZmluJywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0RGF0ZSgkaWQsICdkYXRlX2ZpbicsJGRhdGVfZmluKSk7Cgkkc21hcnR5LT5hc3NpZ24oJ251bWpvdXJuJywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ251bWpvdXJuJywkbnVtam91cm4sMyw1KSk7CQoJJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpLCAnY2xhc3M9ImJ1dHRvbiInKSk7Cgkkc21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2NhbmNlbCcsCgkJCQkJCSR0aGlzLT5MYW5nKCdjYW5jZWwnKSkpOwoJJHNtYXJ0eS0+YXNzaWduKCdiYWNrJywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnYmFjaycsCgkJCQkJCSR0aGlzLT5MYW5nKCdiYWNrJykpKTsKCgkkc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLAoJCQkkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCQoJCgoKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRkX2NvbXBldC50cGwnKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.add_joueur.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKICB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCXJldHVybjsKICAgCiAgfQoKJGRiID0mICR0aGlzLT5HZXREYigpOwovLyRyZWNvcmRfaWQgPSAkcGFyYW1zWydyZWNvcmRfaWQnXTsKCgppZiggIWlzc2V0KCAkcGFyYW1zWydsaWNlbmNlJ10gKSB8fCAkcGFyYW1zWydsaWNlbmNlJ10gPT0gJycpICAgIAp7CgkKCSRwYXJhbXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsKCSRwYXJhbXNbJ2Vycm9yJ10gPSAxOwoJLy8kdGhpcy0+UmVkaXJlY3QoICRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyApOwoJICAgIC8vcmV0dXJuOwp9CgogICAgLy8gZmluZCB0aGUgdXNlcgogICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgV0hFUkUgbGljZW5jZSA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5HZXRSb3coJHF1ZXJ5LCBhcnJheSggJHBhcmFtc1snbGljZW5jZSddICkpOwogICAgaWYoJGRicmVzdWx0KQogICAgICAKCXsKCQkkbGljZW5jZSA9ICRkYnJlc3VsdFsnbGljZW5jZSddOwoJCSRhY3RpZiA9ICRkYnJlc3VsdFsnYWN0aWYnXTsKCQkkYmlydGhkYXkgPSAkZGJyZXN1bHRbJ2JpcnRoZGF5J107CgkJJHNleGUgPSAkZGJyZXN1bHRbJ3NleGUnXTsKCQkkbm9tID0gJGRicmVzdWx0Wydub20nXTsKCQkkcHJlbm9tID0gJGRicmVzdWx0WydwcmVub20nXTsKCQkkYWRyZXNzZSA9ICRkYnJlc3VsdFsnYWRyZXNzZSddOwoJCSR2aWxsZSA9ICRkYnJlc3VsdFsndmlsbGUnXTsKCQkkY29kZXBvc3RhbCA9ICRkYnJlc3VsdFsnY29kZXBvc3RhbCddOwoJCSRsaWNlbmNlID0gJGRicmVzdWx0WydsaWNlbmNlJ107CgkJCgkvLwkkYWN0aWYgPSAkZGJyZXN1bHRbJ2FjdGlmJ107CgkJCgl9CgogIAokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCggJGlkLCAnZG9fZWRpdF9qb3VldXInLCAkcmV0dXJuaWQgKSApOwovKgokc21hcnR5LT5hc3NpZ24oJ3JlY29yZF9pZCcsCgkJICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbiggJGlkLCAncmVjb3JkX2lkJywgJHBhcmFtc1sncmVjb3JkX2lkJ10gKSk7CiovCiRpdGVtcyA9IGFycmF5KCdPdWknPT4nMScsICdOb24nPT4nMCcpOwokc21hcnR5LT5hc3NpZ24oJ2FjdGlmJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2FjdGlmJywkaXRlbXMsLTEsJGFjdGlmKSk7CiRzbWFydHktPmFzc2lnbignbm9tJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwnbm9tJywkbm9tLDgwLDE1MCkpOwkJCQkJCiRzbWFydHktPmFzc2lnbigncHJlbm9tJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3ByZW5vbScsJHByZW5vbSw4MCwxNTApKTsKaWYoaXNzZXQoJHBhcmFtc1snbGljZW5jZSddKSAmJiAkcGFyYW1zWydsaWNlbmNlJ10gIT0gJycpewoJJHNtYXJ0eS0+YXNzaWduKCdsaWNlbmNlJywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ2xpY2VuY2UnLCRsaWNlbmNlKSk7Cn0KZWxzZXsKCSRzbWFydHktPmFzc2lnbignbGljZW5jZScsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnbGljZW5jZScsJGxpY2VuY2UpKTsKfQoKJHNtYXJ0eS0+YXNzaWduKCdiaXJ0aGRheScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RGF0ZSgkaWQsICdiaXJ0aGRheScsJGJpcnRoZGF5KSk7CiRpdGVtcyA9IGFycmF5KCdNYXNjdWxpbic9PidNJywgJ0bDqW1pbmluJz0+J0YnKTsKJHNtYXJ0eS0+YXNzaWduKCdzZXhlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdzZXhlJywkaXRlbXMsLTEsJHNleGUpKTsKJHNtYXJ0eS0+YXNzaWduKCdhZHJlc3NlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2FkcmVzc2UnLCRhZHJlc3NlLDEwMCwyODApKTsKJHNtYXJ0eS0+YXNzaWduKCd2aWxsZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICd2aWxsZScsJHZpbGxlLDgwLDEwMCkpOwokc21hcnR5LT5hc3NpZ24oJ2NvZGVwb3N0YWwnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnY29kZXBvc3RhbCcsJGNvZGVwb3N0YWwsODAsMTAwKSk7CQkJCQoJCQkJCQkJCQkJCQkJCQkKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpLCAnY2xhc3M9ImJ1dHRvbiInKSk7CiRzbWFydHktPmFzc2lnbignY2FuY2VsJywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnY2FuY2VsJywKCQkJCQkJJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdF9qb3VldXIudHBsJyk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.add_sit_mens.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgICAgICAgICAgICBBam91dCBtYW51ZWwgZCd1bmUgc2l0dWF0aW9uIG1lbnN1ZWxsZSAgICAgIyMjCiMjIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyMKIyMjICAgICAgICAgICAgQXV0ZXVyIDogQ2xhdWRlIFNJT0hBTiAgICAgICAgICAgICAgICAgICAgICMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIwojCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKJG5vbV9lcXVpcGVzID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ25vbV9lcXVpcGVzJyk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CiRtb2lzX2NvdXJhbnQgPSBkYXRlKCduJyk7Ci8vJG1vaXNfY291cmFudCA9IDExOwovLyRtb2lzX2NvdXJhbnQgPSA3Oy8vYydlc3QgbGUgbW9pcyBkZSByw6lmw6lyZW5jZSBhdmVjIGxlcXVlbCBpbCBmYXV0IHRyYXZhaWxsZXIgZW4gcHJvZAovL2VjaG8gImxlIG1vaXMgY291cmFudCBlc3QgOiIuJG1vaXNfY291cmFudDsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwokcmVzdWx0PSBhcnJheSgpOwokcGFybXMgPSBhcnJheSgpOwokc2Fpc29uID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwokcGhhc2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKTsKLy8kcGhhc2UgPSAxOy8vcG91ciB0ZXN0CiRzbWFydHktPmFzc2lnbigncGhhc2UnLCRwaGFzZSk7CiRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKCglpZigkcGhhc2U9PTEpCgl7CgkJJG1vaXNfZGVwYXJ0PTk7CgkJJG1vaXNfZmluID0gMTI7CQkKCX0KCWVsc2V7CgkJJG1vaXNfZGVwYXJ0ID0gNzsgLy9wb3N0dWxhdAkJCgl9CgokbGljZW5jZSA9ICcnOwoKCWlmKGlzc2V0KCRwYXJhbXNbJ2xpY2VuY2UnXSkgJiYgJHBhcmFtc1snbGljZW5jZSddICE9JycpCgl7CgkJJGxpY2VuY2UgPSAkcGFyYW1zWydsaWNlbmNlJ107Cgl9CgllbHNlCgl7CgkJJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPmxhbmdbJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcyddKTsKCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzaXR1YXRpb24nKTsKCX0KCiRyb3dhcnJheSA9IGFycmF5KCk7CiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywKCQkkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCAkaWQsICdkb19hZGRfc2l0X21lbnMnLCAkcmV0dXJuaWQgKSApOwokc21hcnR5LT5hc3NpZ24oJ2xpY2VuY2UnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdsaWNlbmNlJywkbGljZW5jZSwxMCwxNSkpOwokaT0wOwokcXVlcnkgPSAiU0VMRUNUIGoubm9tLCBqLnByZW5vbSwgai5saWNlbmNlLCBzdC5tb2lzLCBzdC5wb2ludHMgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2l0X21lbnMgQVMgc3QsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogIFdIRVJFIHN0LmxpY2VuY2UgPSBqLmxpY2VuY2UgQU5EIGoubGljZW5jZSA9ID8iOy8vIiBBTkQgc2Fpc29uID0gPyI7Ci8vZWNobyAkcXVlcnk7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlKSk7CgoJaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKT4wKQoJewoJCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkvL3Zhcl9kdW1wKCRyb3cpOwkJCQoJCQkkbW9pcyA9ICRyb3dbJ21vaXMnXTsKCQkJJGNsYSA9ICRyb3dbJ3BvaW50cyddOwoJCQkkbm9tID0gJHJvd1snbm9tJ107CgkJCSRwcmVub20gPSAkcm93WydwcmVub20nXTsKCQkJJHJvd2FycmF5WyRtb2lzXSA9ICRjbGE7CgkJCS8vcHJpbnRfcigkcm93YXJyYXkpOwkJCgkJCSRzbWFydHktPmFzc2lnbignbm9tJywKCQkJCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ25vbScsICRub20sIDMwLCA4MCkpOwoJCQkkc21hcnR5LT5hc3NpZ24oJ3ByZW5vbScsCgkJCQkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdwcmVub20nLCAkcHJlbm9tLCAzMCwgODApKTsKCQkJJHNtYXJ0eS0+YXNzaWduKCdtb2lzX2NvdXJhbnQnLCAkbW9pc19jb3VyYW50KTsJCQkJCgkJCSRzbWFydHktPmFzc2lnbigncm93YXJyYXknLCRyb3dhcnJheSk7CgkJCQkJCQkKCQl9CQkJCgkJCQoJfQkKCWVsc2UKCXsJCQoJCSRzbWFydHktPmFzc2lnbignbm9tJywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnbm9tJywgJG5vbSwgMzAsIDgwKSk7CgkJJHNtYXJ0eS0+YXNzaWduKCdwcmVub20nLAoJCQkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdwcmVub20nLCAkcHJlbm9tLCAzMCwgODApKTsKCQkkc21hcnR5LT5hc3NpZ24oJ21vaXNfY291cmFudCcsICRtb2lzX2NvdXJhbnQpOwkJCQkKCQkkc21hcnR5LT5hc3NpZ24oJ3Jvd2FycmF5Jywkcm93YXJyYXkpOwkJCQoJfQkKCQoJJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpLCAnY2xhc3M9ImJ1dHRvbiInKSk7Cgkkc21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2NhbmNlbCcsCgkJCQkJCSR0aGlzLT5MYW5nKCdjYW5jZWwnKSkpOwoJJHNtYXJ0eS0+YXNzaWduKCdiYWNrJywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnYmFjaycsCgkJCQkJCSR0aGlzLT5MYW5nKCdiYWNrJykpKTsKCSRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsCgkJCSR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoJCgkKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZGRfc2l0X21lbnMudHBsJyk7CQkKCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.add_type_compet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKICB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCXJldHVybjsKICAgCiAgfQppZiggaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pICkKICB7CiAgICAkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZW5jb250cmVzJyk7CiAgICByZXR1cm47CiAgfQoKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ3VzZXJzJyk7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCiAgIAogICAgJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLAoJCSAgICAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCAkaWQsICdkb19hZGRfdHlwZV9jb21wZXQnLCAkcmV0dXJuaWQgKSApOwokc21hcnR5LT5hc3NpZ24oJ3R5cGVfY29tcGV0JywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCd0eXBlX2NvbXBldCcsJHR5cGVfY29tcGV0LDUsMTApKTsKCiRzbWFydHktPmFzc2lnbignbmFtZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ25hbWUnLCRuYW1lLDc1LDE1MCkpOwokc21hcnR5LT5hc3NpZ24oJ2NvZGVfY29tcGV0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2NvZGVfY29tcGV0JywkY29kZV9jb21wZXQsMiwzKSk7CiRsaXN0ZWNvZWZmID0gYXJyYXkoIjAsMjUiPT4iMC4yNSIsIjAsNTAiPT4iMC41MCIsIjAsNzUiPT4iMC43NSIsICIxLDAwIj0+IjEuMDAiLCAiMSwyNSI9PiIxLjI1IiwiMSw1MCI9PiIxLjUwIik7CiRzbWFydHktPmFzc2lnbignY29lZmZpY2llbnQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2NvZWZmaWNpZW50JywkbGlzdGVjb2VmZiwzKSk7CiRzbWFydHktPmFzc2lnbignaW5kaXZzJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdpbmRpdnMnLGFycmF5KCJPdWkiPT4iT3VpIiwgIk5vbiI9PiJOb24iKSkpOwkKJHNtYXJ0eS0+YXNzaWduKCd0b29sdGlwJywkaGVscHRleHQgPSAnRG9pdCDDqnRyZSB1bmlxdWUnKTsJCiRzbWFydHktPmFzc2lnbignc3VibWl0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpLCAnY2xhc3M9ImJ1dHRvbiInKSk7CiRzbWFydHktPmFzc2lnbignY2FuY2VsJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdjYW5jZWwnLAoJCQkJCSR0aGlzLT5MYW5nKCdjYW5jZWwnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2JhY2snLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2JhY2snLAoJCQkJCSR0aGlzLT5MYW5nKCdiYWNrJykpKTsKCiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZGRfdHlwZV9jb21wZXQudHBsJyk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.admin_calendar_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLyoqLwoJaWYgKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdF9tYXNzZGVsZXRlJ10pICkKICAJewogICAgIAkJaWYoIGlzc2V0KCRwYXJhbXNbJ3NlbCddKSAmJiBpc19hcnJheSgkcGFyYW1zWydzZWwnXSkgJiYgY291bnQoJHBhcmFtc1snc2VsJ10pID4gMCApCiAgICAgIAkJewogICAgICAgIAkJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJGpvdXJuYWxpZCApCgkgIAkJewoJICAgIAkJCXBpbmdfYWRtaW5fb3BzOjpkZWxldGVfam91cm5hbCggJGpvdXJuYWxpZCApOwoJICAJCX0KICAgICAgCQl9CiAgCX0KLyoqLwoKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwokZGVzaWduYXRpb24gPSAnJzsKJG1haW50ZW5hbnQgPSBkYXRlKCJZLW0tZCIpOwoKJG1vaXNfY2hvaXNpID0gJyc7CmlmKGlzc2V0KCRwYXJhbXNbJ21vaXMnXSkgJiYgJHBhcmFtc1snbW9pcyddICE9JycpCnsKCSRtb2lzX2Nob2lzaSA9ICRwYXJhbXNbJ21vaXMnXTsKfQplbHNlCnsKCSRtb2lzX2Nob2lzaSA9ICRtb2lzX2NvdXJhbnQ7Cn0KaWYoJG1vaXNfY2hvaXNpID09MSkKewoJJG1vaXNfcHJlY2VkZW50ID0gMTI7Cn0KZWxzZQp7CgkkbW9pc19wcmVjZWRlbnQgPSAkbW9pc19jaG9pc2kgLTE7Cn0KaWYoJG1vaXNfY2hvaXNpPT0xMikKewoJJG1vaXNfc3VpdmFudCA9IDE7Cn0KZWxzZQp7CgkkbW9pc19zdWl2YW50ID0gJG1vaXNfY2hvaXNpICsgMTsKfQoKJHNtYXJ0eS0+YXNzaWduKCdtb2lzX3ByZWNlZGVudCcsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCwgJzw8IFByw6ljw6lkZW50JywgYXJyYXkoImFjdGl2ZV90YWIiPT4iY2FsZW5kcmllciIsIm1vaXMiPT4iJG1vaXNfcHJlY2VkZW50IikgKSk7CiRzbWFydHktPmFzc2lnbignbW9pc19zdWl2YW50JywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkLCAnU3VpdmFudCA+PicsIGFycmF5KCJhY3RpdmVfdGFiIj0+ImNhbGVuZHJpZXIiLCJtb2lzIj0+IiRtb2lzX3N1aXZhbnQiKSApKTsKCi8vbGVzIGxpZW5zIHBvdXIgc3dpdGNoZXIgZCd1bmUgcGhhc2Ugw6AgbCdhdXRyZQovKgokc21hcnR5LT5hc3NpZ24oJ3BoYXNlMicsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdhZG1pbl9jYWxlbmRhcl90YWInLCRyZXR1cm5pZCwgJ1BoYXNlIDInLCBhcnJheSgicGhhc2UiPT4iMiIpICkpOwokc21hcnR5LT5hc3NpZ24oJ3BoYXNlMScsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdhZG1pbl9jYWxlbmRhcl90YWInLCRyZXR1cm5pZCwgJ1BoYXNlIDEnLCBhcnJheSgicGhhc2UiPT4iMSIpICkpOwoqLwovL2xpc3RlIGRlcyBsaWVucyBwb3VyIHLDqWN1cMOpcmVyIGxlcyBkb25uw6llcyAKJHNtYXJ0eS0+YXNzaWduKCdyZXRyaWV2ZV91c2VycycsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfam91ZXVyc19ieV9jbHViJywgJHJldHVybmlkLCAkY29udGVudHMgPSAiUsOpY3Vww6lyYXRpb24gZGVzIGpvdWV1cnMiLCAkd2Fybl9tZXNzYWdlID0gIkV0ZXMgdm91cyBzw7tyID8gVHJvcCBkJ2FwcGVscyB2ZXJzIGxhIGJhc2UgZGUgZG9ubsOpZXMgcGV1dmVudCBhdm9pciBkZXMgY29uc8OpcXVlbmNlcyBpbXBvcnRhbnRlcyAhIikpOwokc21hcnR5LT5hc3NpZ24oJ3JldHJpZXZlX3RlYW1zJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV90ZWFtcycsICRyZXR1cm5pZCwgJGNvbnRlbnRzID0gIlLDqWN1cMOpcmF0aW9uIGRlcyDDqXF1aXBlcyAoY2hhbXBpb25uYXQgc2VuaW9ycykiLCBhcnJheSgndHlwZSc9PidNJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdyZXRyaWV2ZV90ZWFtc19hdXRyZXMnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3RlYW1zJywgJHJldHVybmlkLCAkY29udGVudHMgPSAiUsOpY3Vww6lyYXRpb24gZGVzIMOpcXVpcGVzIikpOwokc21hcnR5LT5hc3NpZ24oJ3JldHJpZXZlX2FsbF9wYXJ0aWVzJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9hbGxfcGFydGllcycsICRyZXR1cm5pZCwgJGNvbnRlbnRzID0gIlLDqWN1cMOpcmF0aW9uIGRlIHRvdXRlcyBsZXMgcGFydGllcyBGRlRUIikpOwokc21hcnR5LT5hc3NpZ24oJ3JlY3VwX2pvdWV1cnMnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JlY3VwX2pvdWV1cnMnLCAkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCdyZXRyaWV2ZV9hbGxfc3BpZCcsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfYWxsX3BhcnRpZXNfc3BpZCcsICRyZXR1cm5pZCwgJGNvbnRlbnRzID0gJ1LDqWN1cMOpcmF0aW9ucyBkZSB0b3V0ZXMgbGVzIHBhcnRpZXMgU1BJRCcsICR3YXJuX21lc3NhZ2UgPSAnRXRlcyB2b3VzIHPDu3IgPycpKTsKJHNtYXJ0eS0+YXNzaWduKCdyZXRyaWV2ZV9kZXRhaWxzX3JlbmNvbnRyZXMnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX2NsdWInLCAkcmV0dXJuaWQsICRjb250ZW50cyA9ICdSw6ljdXDDqXJhdGlvbnMgZHUgZMOpdGFpbCBkZXMgcmVuY29udHJlcycpKTsKCi8qIG9uIGZhaXQgdW4gZm9ybXVsYWlyZSBkZSBmaWx0cmFnZSBkZXMgcsOpc3VsdGF0cyovCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnYWRtaW5fZGF0YV90YWInKSk7IAokc3RhdHVzbGlzdFskdGhpcy0+bGFuZygnYWxsc3RhdHVzJyldID0nJzsKJGRhdGVsaXN0WyR0aGlzLT5MYW5nKCdhbGxkYXRlcycpXSA9ICcnOwokdHlwZUNvbXBldCA9IGFycmF5KCk7Ci8vJHR5cGVDb21wZXRbJHRoaXMtPkxhbmcoJ2FsbGNvbXBldCcpXSA9ICcnOwokcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXAiOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJewoJCXNldGxvY2FsZSAoTENfVElNRSwgJ2ZyX0ZSJyk7IAoJCS8vJGRhdGVsaXN0WyRyb3dbJ2RhdGVjcmVhdGVkJ11dID0gc3RyZnRpbWUoIiVBICVlICVCICVZIMOgICVIOiVNOiVTIixzdHJ0b3RpbWUoJHJvd1snZGF0ZWNyZWF0ZWQnXSkpOwoJCSRkYXRlbGlzdFskcm93WydkYXRlY3JlYXRlZCddXSA9ICRyb3dbJ2RhdGVjcmVhdGVkJ107IAoJCS8vICRwbGF5ZXJzbGlzdFskcm93WydwbGF5ZXInXV0gPSAkcm93WydsaWNlbmNlJ107CgkJJHN0YXR1c2xpc3RbJHJvd1snc3RhdHVzJ11dID0gJHJvd1snc3RhdHVzJ107CgkJLy8kZXF1aXBlbGlzdFskcm93WydlcXVpcGUnXV0gPSAkcm93WydlcXVpcGUnXTsKCQkvLyR0eXBlQ29tcGV0WyRyb3dbJ2NvZGVjaGFtcCddXSA9ICRyb3dbJ2NvZGVjaGFtcCddOwoJfQoKCQkJaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdGZpbHRlciddKSApCgkJICAJewoJCSAgICAJCWlmKCBpc3NldCggJHBhcmFtc1snZGF0ZWxpc3QnXSkgKQoJCSAgICAgIAkJewoJCQkJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkYXRlQ2hvaXNpJywgJHBhcmFtc1snZGF0ZWxpc3QnXSk7CgkJICAgICAgCQl9CgkJCgkJCQlpZiggaXNzZXQoICRwYXJhbXNbJ3N0YXR1c2xpc3QnXSkgKQoJCSAgICAgIAkJewoJCQkJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzdGF0dXNDaG9pc2llJywgJHBhcmFtc1snc3RhdHVzbGlzdCddKTsKCQkgICAgICAJCX0KCQkJfQoJCQokY3VyZGF0ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCAnZGF0ZUNob2lzaScgKTsKJGN1cnN0YXR1cyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzdGF0dXNDaG9pc2llJyk7Cgokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF90b3VyJywKCQkkdGhpcy0+TGFuZygndG91cicpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9kYXRlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2RhdGVsaXN0JywkZGF0ZWxpc3QsLTEsJGN1cmRhdGUpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zdGF0dXMnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnc3RhdHVzbGlzdCcsJHN0YXR1c2xpc3QsLTEsJGN1cnN0YXR1cykpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9lcXVpcGUnLAoJCSR0aGlzLT5MYW5nKCdlcXVpcGUnKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0ZmlsdGVyJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXRmaWx0ZXInLCR0aGlzLT5MYW5nKCdmaWx0cmVzJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCgokcmVzdWx0PSBhcnJheSAoKTsKJHF1ZXJ5ID0gIlNFTEVDVCBjYWwuaWQsIGNvbXAuY29lZmZpY2llbnQsY29tcC5uYW1lLGNhbC50eXBlX2NvbXBldCxjYWwuZGF0ZV9kZWJ1dCwgY2FsLmRhdGVfZmluLCBjYWwubnVtam91cm4gRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2FsZW5kcmllciBBUyBjYWwsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyBBUyBjb21wIFdIRVJFIGNhbC50eXBlX2NvbXBldCA9IGNvbXAuY29kZV9jb21wZXQgQU5EIE1PTlRIKGNhbC5kYXRlX2RlYnV0KSA9ID8iOwovKgppZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKSA9PScxJyApCnsKCWlmKCRwYXJhbXNbJ3BoYXNlJ10gPT0yKQoJewoJCSRxdWVyeS49ICIgQU5EIE1PTlRIKGNhbC5kYXRlX2RlYnV0KSA+PSAxIEFORCBNT05USChjYWwuZGF0ZV9kZWJ1dCkgPD03IjsgCgl9CgllbHNlCgl7CgkJJHF1ZXJ5Lj0gIiBBTkQgTU9OVEgoY2FsLmRhdGVfZGVidXQpID4gNyBBTkQgTU9OVEgoY2FsLmRhdGVfZGVidXQpIDw9MTIiOyAgLy8vL0JFVFdFRU4gTk9XKCkgQU5EIChOT1coKSArIElOVEVSVkFMIDcgREFZKSI7Cgl9Cn0KZWxzZWlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKSA9PSAnMicpCnsKCWlmKCRwYXJhbXNbJ3BoYXNlJ10gPT0xKQoJewoJCSRxdWVyeS49ICIgQU5EIE1PTlRIKGNhbC5kYXRlX2RlYnV0KSA+IDcgQU5EIE1PTlRIKGNhbC5kYXRlX2RlYnV0KSA8PTEyIjsgIC8vLy9CRVRXRUVOIE5PVygpIEFORCAoTk9XKCkgKyBJTlRFUlZBTCA3IERBWSkiOwoJfQoJZWxzZQoJewoJCSRxdWVyeS49ICIgQU5EIE1PTlRIKGNhbC5kYXRlX2RlYnV0KSA+PSAxIEFORCBNT05USChjYWwuZGF0ZV9kZWJ1dCkgPD03IjsgIC8vLy9CRVRXRUVOIE5PVygpIEFORCAoTk9XKCkgKyBJTlRFUlZBTCA3IERBWSkiOwkKCX0KfQoqLwoJCSRxdWVyeSAuPSIgT1JERVIgQlkgY2FsLmRhdGVfZGVidXQgQVNDIjsKCQkkZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRtb2lzX2Nob2lzaSkpOwoKCS8vZWNobyAkcXVlcnk7CgkKCQlpZiAoISRkYnJlc3VsdCkKCQl7CgoJCQkkZGVzaWduYXRpb24uPSAkZGItPkVycm9yTXNnKCk7CgoJCX0KCgoKCi8vJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKJHJvd2NsYXNzPSAncm93MSc7CiRyb3dhcnJheT0gYXJyYXkgKCk7CgoJaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQogIAl7CiAgICAJCXdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIAkJewoJCQkvLwkkYWN0aWYgPSAkcm93WydhY3RpZiddOwoJCQkkb25lcm93PSBuZXcgU3RkQ2xhc3MoKTsKCQkJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCQkJJG9uZXJvdy0+aWQ9ICRyb3dbJ2lkJ107CgkJCSRvbmVyb3ctPm5hbWU9ICRyb3dbJ25hbWUnXTsKCQkJJG9uZXJvdy0+dHlwZV9jb21wZXQ9ICRyb3dbJ3R5cGVfY29tcGV0J107CgkJCSRvbmVyb3ctPmNvZWZmID0gJHJvd1snY29lZmZpY2llbnQnXTsKCQkJJG9uZXJvdy0+ZGF0ZV9kZWJ1dD0gJHJvd1snZGF0ZV9kZWJ1dCddOwoJCQkkb25lcm93LT5kYXRlX2Zpbj0gJHJvd1snZGF0ZV9maW4nXTsKCQkJJG9uZXJvdy0+bnVtam91cm49ICRyb3dbJ251bWpvdXJuJ107CgkJCSRvbmVyb3ctPnJldHJpZXZlbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfaW5kaXZzJywgJHJldHVybmlkLCAnUsOpY3Vww6lyZXInLCBhcnJheSgidHlwZV9jb21wZXQiPT4kcm93Wyd0eXBlX2NvbXBldCddLCAiY29lZmZpY2llbnQiPT4kcm93Wydjb2VmZmljaWVudCddKSk7CgkJCSRvbmVyb3ctPmVkaXRsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRfY29tcGV0JywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgJHRoaXMtPkxhbmcoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSk7CgkJCQoJCQlpZigkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIERlbGV0ZScpKQoJCQkJewoJCQkJCSRvbmVyb3ctPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZScsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddLCAndHlwZV9jb21wZXQnPT4nY2FsZW5kcmllcicpLCAkdGhpcy0+TGFuZygnZGVsZXRlX2NvbmZpcm0nKSk7CgkJCQl9CgkJCQkKCQkJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCQkJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIAkJfQogIAl9CiRzbWFydHktPmFzc2lnbignbWFpbnRlbmFudCcsJG1haW50ZW5hbnQpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7CiRzbWFydHktPmFzc2lnbignY3JlYXRlbGluaycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkZF9jb21wZXQnLCAkcmV0dXJuaWQsCgkJCQkgICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsICR0aGlzLT5MYW5nKCdhZGQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpKS4KCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRfY29tcGV0JywgJHJldHVybmlkLCAKCQkJCSAgJHRoaXMtPkxhbmcoJ2FkZCcpLCAKCQkJCSAgYXJyYXkoKSkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm0yc3RhcnQnLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdhZG1pbl9kYXRhX3RhYicsJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbignZm9ybTJlbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF9tYXNzZGVsZXRlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXRfbWFzc2RlbGV0ZScsJHRoaXMtPkxhbmcoJ2RlbGV0ZV9zZWxlY3RlZCcpLAoJCQkJCQkJCQkgICAgICcnLCcnLCR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlX2RlbGV0ZW11bHRpcGxlJykpKTsKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdjYWxlbmRhci50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.admin_compets_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKLyogb24gZmFpdCB1biBmb3JtdWxhaXJlIGRlIGZpbHRyYWdlIGRlcyByw6lzdWx0YXRzKi8KLyoKJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdkZWZhdWx0YWRtaW4nKSk7ICAKLy8kdG91cmxpc3QgPSBhcnJheSgwID0+IjAiLDEgPT4iMSIsMiA9PiIyIiwzID0+IjMiLDQgPT4nQWxsJyk7CiR0eXBlQ29tcGV0aXRpb24gPSBhcnJheSgpOwokdG91cmxpc3QgPSBhcnJheSgpOwokdG91cmxpc3RbJHRoaXMtPkxhbmcoJ2FsbHRvdXJzJyldID0gJyc7CiRhbGxlcXVpcGVzID0gICggaXNzZXQoICRwYXJhbXNbJ2FsbGVxdWlwZXMnXSApPyRwYXJhbXNbJ2FsbGVxdWlwZXMnXTonbm8nKTsKCiRlcXVpcGVsaXN0WyR0aGlzLT5MYW5nKCdhbGxlcXVpcGVzJyldID0gJyc7CgokcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY29tcGV0aXRpb25zIjsgLypBUyByZW4sICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jb21wZXRpdGlvbnMgQVMgY29tcCBXSEVSRSByZW4udHlwZV9jb21wZXQgPSBjb21wLmNvZGVfY29tcGV0IjsqLwovKgogJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICB7CiAgICAkdG91cmxpc3RbJHJvd1sndG91ciddXSA9ICRyb3dbJ3RvdXInXTsKICAgICRlcXVpcGVsaXN0WyRyb3dbJ2VxdWlwZSddXSA9ICRyb3dbJ2VxdWlwZSddOwogICAgJHR5cGVDb21wZXRpdGlvblskcm93WyduYW1lJ11dID0gJHJvd1sndHlwZV9jb21wZXQnXTsKICB9CgppZiggaXNzZXQoJHBhcmFtc1snc3VibWl0ZmlsdGVyJ10pICkKICB7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ3RvdXJsaXN0J10pICkKICAgICAgewoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3RvdXJDaG9pc2knLCAkcGFyYW1zWyd0b3VybGlzdCddKTsKICAgICAgfQogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydlcXVpcGVsaXN0J10pKQoJewoJJHRoaXMtPlNldFByZWZlcmVuY2UoICdlcXVpcGVDaG9pc2llJywgJHBhcmFtc1snZXF1aXBlbGlzdCddKTsKCX0KICAgIGlmKCBpc3NldCggJHBhcmFtc1sndHlwZUNvbXBldCddKSkKCQl7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoICdjb21wZXRDaG9pc2llJywgJHBhcmFtc1sndHlwZUNvbXBldCddKTsKCQl9Cn0KJGN1cnRvdXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ3RvdXJDaG9pc2knICk7CiRjdXJlcXVpcGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ2VxdWlwZUNob2lzaWUnICk7CiRjdXJjb21wZXQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY29tcGV0Q2hvaXNpZScpOwoKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jb21wZXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwndHlwZUNvbXBldCcsJHR5cGVDb21wZXRpdGlvbiwtMSwkY3VyY29tcGV0KSk7Cgokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF90b3VyJywKCQkkdGhpcy0+TGFuZygndG91cicpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF90b3VyJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3RvdXJsaXN0JywkdG91cmxpc3QsLTEsJGN1cnRvdXIpKTsKCQkkc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9lcXVpcGUnLAoJCQkJJHRoaXMtPkxhbmcoJ2VxdWlwZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9lcXVpcGUnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnZXF1aXBlbGlzdCcsJGVxdWlwZWxpc3QsLTEsJGN1cmVxdWlwZSkpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdGZpbHRlcicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0ZmlsdGVyJywkdGhpcy0+TGFuZygnZmlsdHJlcycpKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgoKJHNtYXJ0eS0+YXNzaWduKCdpZCcsICR0aGlzLT5MYW5nKCdpZCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdlcXVpcGUnLCAnRXF1aXBlcycpOwokc21hcnR5LT5hc3NpZ24oJ3RvdXInLCAnVG91cicpOwokc21hcnR5LT5hc3NpZ24oJ3Njb3JlJywgJ1Njb3JlJyk7CiRzbWFydHktPmFzc2lnbignYWR2ZXJzYWlyZXMnLCAnQWR2ZXJzYWlyZXMnKTsKKi8KJHJlc3VsdD0gYXJyYXkgKCk7CiRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyI7CgokZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoKCi8vZWNobyAkcXVlcnk7CiRyb3dhcnJheT0gYXJyYXkgKCk7CmlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQogICAgICB7Cgkkb25lcm93PSBuZXcgU3RkQ2xhc3MoKTsKCSRvbmVyb3ctPnJvd2NsYXNzPSAkcm93Y2xhc3M7Cgkkb25lcm93LT5pZD0gJHJvd1snaWQnXTsKCSRvbmVyb3ctPm5hbWU9ICRyb3dbJ25hbWUnXTsKCSRvbmVyb3ctPmNvZGVfY29tcGV0PSAkcm93Wydjb2RlX2NvbXBldCddOwoJJG9uZXJvdy0+Y29lZmZpY2llbnQ9ICRyb3dbJ2NvZWZmaWNpZW50J107Cgkkb25lcm93LT5pbmRpdnM9ICRyb3dbJ2luZGl2cyddOwoJCglpZigkcm93WydpbmRpdnMnXSA9PScxJykKCXsKCQkkb25lcm93LT5wYXJ0aWNpcGUgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdwYXJ0aWNpcGUnLCAkcmV0dXJuaWQsICdQYXJ0aWNpcGFudHMnLCBhcnJheSgndHlwZV9jb21wZXQnPT4kcm93Wydjb2RlX2NvbXBldCddKSk7Cgl9CgkKCSRvbmVyb3ctPmVkaXRsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF90eXBlX2NvbXBldCcsJHJldHVybmlkLCR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoInJlY29yZF9pZCI9PiRyb3dbJ2lkJ10pKTsKCQoJaWYoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBEZWxldGUnKSkKCXsKCQkkb25lcm93LT5kZWxldGVsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGVsZXRlJywgJHJldHVybmlkLCR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCJyZWNvcmRfaWQiPT4kcm93WydpZCddLCAidHlwZV9jb21wZXQiPT4idHlwZV9jb21wZXQiKSk7Cgl9CgkKCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzPSAicm93MiIgOiAkcm93Y2xhc3M9ICJyb3cxIik7Cgkkcm93YXJyYXlbXT0gJG9uZXJvdzsKICAgICAgfQogIH0KZWxzZSB7CgllY2hvICI8cD5BdWN1biByw6lzdWx0YXRzICE8L3A+IjsKfQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kJykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKJHNtYXJ0eS0+YXNzaWduKCdjcmVhdGVsaW5rJywgCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRkX3R5cGVfY29tcGV0JywgJHJldHVybmlkLAoJCQkJICAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+TGFuZygnYWRkX2NvbXBldCcpLCAnJywgJycsICdzeXN0ZW1pY29uJykpLgoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkZF90eXBlX2NvbXBldCcsICRyZXR1cm5pZCwgCgkJCQkgICR0aGlzLT5MYW5nKCdhZGRfdHlwZV9jb21wZXQnKSwgCgkJCQkgIGFycmF5KCkpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnbGlzdF9jb21wZXQudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_fftt_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyAgICAgICAgICAgICAgICAgIEZGVFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwpyZXF1aXJlX29uY2UoZGlybmFtZShfX2ZpbGVfXykuJy9pbmNsdWRlL3RyYXZhdXgucGhwJyk7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fZmlsZV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7Ci8qIG9uIGZhaXQgdW4gZm9ybXVsYWlyZSBkZSBmaWx0cmFnZSBkZXMgcsOpc3VsdGF0cyovCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnZGVmYXVsdGFkbWluJywnJywgJ3Bvc3QnLCAnJyxmYWxzZSwnJyxhcnJheSgnYWN0aXZlX3RhYic9PidmZnR0JykpKTsKJGRhdGVsaXN0WyR0aGlzLT5MYW5nKCdhbGxkYXRlcycpXSA9ICcnOwkKJHBsYXllcnNsaXN0WyR0aGlzLT5MYW5nKCdhbGxwbGF5ZXJzJyldID0gJyc7CiR0eXBlQ29tcGV0ID0gYXJyYXkoKTsKJHR5cGVDb21wZXRbJHRoaXMtPkxhbmcoJ2FsbGNvbXBldCcpXSA9ICcnOwokcXVlcnkxID0gIlNFTEVDVCBwdHMuZGF0ZV9ldmVudCxwdHMuY29kZWNoYW1wLHB0cy5saWNlbmNlICwgQ09OQ0FUX1dTKCcgJyxqLm5vbSwgai5wcmVub20pIEFTIHBsYXllciBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIEFTIHB0cyAgLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBBUyBqIFdIRVJFIHB0cy5saWNlbmNlICA9IGoubGljZW5jZSBBTkQgcHRzLnNhaXNvbiA9ID8gT1JERVIgQlkgai5ub20gQVNDLCBwdHMuZGF0ZV9ldmVudCBBU0MiOy8vIiI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkxLCBhcnJheSgkc2Fpc29uKSk7CndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICB7CiAgICAkZGF0ZWxpc3RbJHJvd1snZGF0ZV9ldmVudCddXSA9ICRyb3dbJ2RhdGVfZXZlbnQnXTsKICAgICRwbGF5ZXJzbGlzdFskcm93WydwbGF5ZXInXV0gPSAkcm93WydsaWNlbmNlJ107CiAgICAkdHlwZUNvbXBldFskcm93Wydjb2RlY2hhbXAnXV0gPSAkcm93Wydjb2RlY2hhbXAnXTsKICB9CgoJaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdGZpbHRlciddKSApCiAgCXsKICAgIAkJaWYoIGlzc2V0KCAkcGFyYW1zWydkYXRlbGlzdCddKSApCiAgICAgIAkJewoJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGF0ZUNob2lzaScsICRwYXJhbXNbJ2RhdGVsaXN0J10pOwogICAgICAJCX0KCQlpZiggaXNzZXQoICRwYXJhbXNbJ3BsYXllcnNsaXN0J10pICkKICAgICAgCQl7CgkJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwbGF5ZXJDaG9pc2knLCAkcGFyYW1zWydwbGF5ZXJzbGlzdCddKTsKICAgICAgCQl9CiAgICAJCWlmKCBpc3NldCggJHBhcmFtc1sndHlwZUNvbXBldCddKSApCgkJeyAKCQkJJHRoaXMtPlNldFByZWZlcmVuY2UgKCAnY29tcGV0Q2hvaXNpZScsICRwYXJhbXNbJ3R5cGVDb21wZXQnXSk7CgkJfQoJfQoJCiRjdXJkYXRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoICdkYXRlQ2hvaXNpJyApOwokY3VycGxheWVyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoICdwbGF5ZXJDaG9pc2knKTsKJGN1ckNvbXBldCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCAnY29tcGV0Q2hvaXNpZScpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF90b3VyJywKCQkkdGhpcy0+TGFuZygndG91cicpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9kYXRlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2RhdGVsaXN0JywkZGF0ZWxpc3QsLTEsJGN1cmRhdGUpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jb21wZXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwndHlwZUNvbXBldCcsJHR5cGVDb21wZXQsLTEsJGN1ckNvbXBldCkpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3BsYXllcicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdwbGF5ZXJzbGlzdCcsJHBsYXllcnNsaXN0LC0xLCRjdXJwbGF5ZXIpKTsKCQkKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRmaWx0ZXInLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdGZpbHRlcicsJHRoaXMtPkxhbmcoJ2ZpbHRyZXMnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKJHJlc3VsdD0gYXJyYXkgKCk7CiRxdWVyeSA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJywgai5ub20sIGoucHJlbm9tKSBBUyBqb3VldXIsIHB0cy5pZCwgcHRzLnZkLCBwdHMubnVtam91cm4scHRzLmRhdGVfZXZlbnQsIHB0cy5hZHZub21wcmUscHRzLnBvaW50cmVzLCBwdHMuYWR2Y2xhb2YgIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXMgQVMgcHRzICwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgQVMgaiBXSEVSRSBwdHMubGljZW5jZSA9IGoubGljZW5jZSBBTkQgcHRzLnNhaXNvbiA9ID8iOwokcGFybXNbJ3NhaXNvbiddID0gJHNhaXNvbjsKCglpZiggaXNzZXQoJHBhcmFtc1snc3VibWl0ZmlsdGVyJ10gKSl7CgkJCgkJaWYgKCRjdXJkYXRlICE9JycpCgkJewoJCQkkcXVlcnkgLj0iIEFORCBwdHMuZGF0ZV9ldmVudCA9ID8gIjsKCQkJJHBhcm1zWydkYXRlX2V2ZW50J10gPSAkY3VyZGF0ZTsKCQkKCQl9CgkJCgkJaWYgKCRjdXJwbGF5ZXIgIT0nJykKCQl7CgkJCSRxdWVyeSAuPSIgQU5EIHB0cy5saWNlbmNlID0gPyI7CgkJCSRwYXJtc1snbGljZW5jZSddID0gJGN1cnBsYXllcjsKCQkKCQl9CgkJCgkJaWYgKCRjdXJDb21wZXQgIT0nJykKCQl7CgkJCSRxdWVyeS49IiBBTkQgcHRzLmNvZGVjaGFtcCA9ID8iOwoJCQkkcGFybXNbJ2NvZGVjaGFtcCddID0gJGN1ckNvbXBldDsKCQl9CgoJCSRxdWVyeS49IiBPUkRFUiBCWSBqb3VldXIscHRzLmRhdGVfZXZlbnQgQVNDIjsKCX0KCWVsc2UKCXsKCQkkcXVlcnkuPSIgT1JERVIgQlkgam91ZXVyLHB0cy5kYXRlX2V2ZW50IEFTQyBMSU1JVCAxMDAiOwoJCQoJfQoJCgokZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnksJHBhcm1zKTsKLy9lY2hvICRxdWVyeTsKaWYgKCEkZGJyZXN1bHQpCnsKCgkJZGllKCdGQVRBTCBTUUwgRVJST1I6ICcuJGRiLT5FcnJvck1zZygpLic8YnIvPlFVRVJZMjogJy4kZGItPnNxbCk7Cgp9Cgokcm93YXJyYXk9IGFycmF5ICgpOwppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewoJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7Cgkkb25lcm93LT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJJG9uZXJvdy0+aWQ9ICRyb3dbJ2lkJ107Cgkkb25lcm93LT5kYXRlX2V2ZW50ID0gJHJvd1snZGF0ZV9ldmVudCddOwoJJG9uZXJvdy0+bnVtam91cm49ICRyb3dbJ251bWpvdXJuJ107Cgkkb25lcm93LT5qb3VldXI9ICRyb3dbJ2pvdWV1ciddOwoJJG9uZXJvdy0+dmQ9ICRyb3dbJ3ZkJ107IAoJJG9uZXJvdy0+YWR2bm9tcHJlPSAkcm93WydhZHZub21wcmUnXTsKLy8JJG9uZXJvdy0+YWR2ZXJzYWlyZT0gJHJvd1snYWR2ZXJzYWlyZSddOwoJJG9uZXJvdy0+cG9pbnRyZXM9ICRyb3dbJ3BvaW50cmVzJ107CgkvLyRvbmVyb3ctPmVxdWlwZT0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnY3JlYXRlX25ld191c2VyJywgJHJldHVybmlkLCAkcm93WydlcXVpcGUnXSwgJHJvdyk7Cgkkb25lcm93LT5lZGl0bGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF9yZXN1bHRzJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgJHRoaXMtPkxhbmcoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSkpOwoJJG9uZXJvdy0+ZHVwbGljYXRlbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF9yZXN1bHRzJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2NvcHkuZ2lmJywgJHRoaXMtPkxhbmcoJ2R1cGxpY2F0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddLCAnZHVwbGljYXRlJz0+JzEnKSk7CgkKCWlmKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgRGVsZXRlJykpCgl7CgkJJG9uZXJvdy0+ZGVsZXRlbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGVsZXRlJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10sJ3R5cGVfY29tcGV0Jz0+J2ZmdHQnKSwgJHRoaXMtPkxhbmcoJ2RlbGV0ZV9jb25maXJtJykpOwoJfQoJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCSRyb3dhcnJheVtdPSAkb25lcm93OwogICAgICB9CiAgfQovL2RldXhpw6htbWUgcmVxdWV0ZSBwb3VyIGNvbXB0ZXIgbGVzIHBvaW50cyBkZSBjZXR0ZSBqb3VybsOpZQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygnc2hlZXRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKCiRzbWFydHktPmFzc2lnbignZm9ybTJzdGFydCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ21hc3NfYWN0aW9uJywkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtMmVuZCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRhcnRpY2xlcyA9IGFycmF5KCJEw6lzYWN0aXZlciI9PiJ1bmFibGUiLCJSw6ljdXDDqXJlciBzaXR1YXRpb24gbWVuc3VlbGxlIj0+InNpdHVhdGlvbiIpOwokc21hcnR5LT5hc3NpZ24oJ2FjdGlvbmRlbWFzc2UnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnYWN0aW9uZGVtYXNzZScsJGFydGljbGVzKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0X21hc3NhY3Rpb24nLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdF9tYXNzYWN0aW9uJywkdGhpcy0+TGFuZygnYXBwbHlfdG9fc2VsZWN0aW9uJyksJycsJycsJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmVfYWN0aW9ubXVsdGlwbGUnKSkpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdmZnR0LnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_joueurs_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fZmlsZV9fKS4nL2luY2x1ZGUvdHJhdmF1eC5waHAnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwoKJHNtYXJ0eS0+YXNzaWduKCdpZCcsICR0aGlzLT5MYW5nKCdpZCcpKTsKJHNtYXJ0eS0+YXNzaWduKCd1c2VybmFtZScsICdKb3VldXInKTsKJHNtYXJ0eS0+YXNzaWduKCdwb2ludHMnLCAnUG9pbnRzJyk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CiRtb2lzX2NvdXJhbnQgPSBkYXRlKCduJyk7CiRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKLy8kbW9udGggPSBtb2lzX2ZyYW5jYWlzKCIkbW9pc19jb3VyYW50Iik7Ci8vZWNobyAibGUgbW9pcyBlbiBmcmFuw6dhaXMgOiAiLiRtb250aDsKLy8kc21hcnR5LT5hc3NpZ24oJ21vaXMtZW4tZnJhbmNhaXMnLCAiJG1vbnRoIik7CiRzaXRfY291cmFudGUgPSAnSnVpbiAyMDE0JzsKJHNtYXJ0eS0+YXNzaWduKCdzaXRfY291cmFudGUnLCAiJHNpdF9jb3VyYW50ZSIpOwokc21hcnR5LT5hc3NpZ24oJ2Rpc3BsYXlfdW5hYmxlX3BsYXllcnMnLCAKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2Rpc3BsYXlfdW5hYmxlX3BsYXllcnMnLCAkcmV0dXJuaWQsICdsaXN0ZSBkZXMgam91ZXVycyBpbmFjdGlmcycpKTsKCgokcmVzdWx0PSBhcnJheSAoKTsKLy9TRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogT04gai5saWNlbmNlID0gcmVjLmxpY2VuY2UgIE9SREVSIEJZIGouaWQgQVNDCiRxdWVyeT0gIlNFTEVDVCBpZCwgQ09OQ0FUX1dTKCcgJyxub20sIHByZW5vbSkgQVMgam91ZXVyLCBsaWNlbmNlLCBhY3RpZiwgc2V4ZSwgYmlydGhkYXkgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSBhY3RpZj0gJzEnICBPUkRFUiBCWSBqb3VldXIgQVNDIjsKaWYoJHRyYXZhdXg9PSd0cnVlJyl7ZWNobyAkcXVlcnk7fQokZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwokcm93Y2xhc3M9ICdyb3cxJzsKJHJvd2FycmF5PSBhcnJheSAoKTsKCmlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQogICAgICB7CgkkYWN0aWYgPSAkcm93WydhY3RpZiddOwoJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7Cgkkb25lcm93LT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJJG9uZXJvdy0+aWQ9ICRyb3dbJ2lkJ107Cgkkb25lcm93LT5saWNlbmNlPSAkcm93WydsaWNlbmNlJ107Cgkkb25lcm93LT5qb3VldXI9ICRyb3dbJ2pvdWV1ciddOwoJJG9uZXJvdy0+YWN0aWY9ICRyb3dbJ2FjdGlmJ107Cgkkb25lcm93LT5zZXhlPSAkcm93WydzZXhlJ107Cgkkb25lcm93LT5iaXJ0aGRheT0gJHJvd1snYmlydGhkYXknXTsKCSRvbmVyb3ctPnZpZXdfY29udGFjdHM9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwndmlld19jb250YWN0cycsICRyZXR1cm5pZCwkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvdG9wZmlsZXMvbXlhY2NvdW50LmdpZicsICR0aGlzLT5MYW5nKCd2aWV3X2NvbnRhY3RzJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJJG9uZXJvdy0+ZG9lZGl0PSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRfam91ZXVyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgJHRoaXMtPkxhbmcoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7CglpZigkcm93WydhY3RpZiddID09JzEnKXsKCQkkb25lcm93LT5lZGl0bGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAndW5hYmxlX3BsYXllcicsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsICR0aGlzLT5MYW5nKCd1bmFibGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgl9CgllbHNlIHsKCQkkb25lcm93LT5lZGl0bGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZW5hYmxlX3BsYXllcicsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9mYWxzZS5naWYnLCAkdGhpcy0+TGFuZygnZW5hYmxlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJfQoJLy8kb25lcm93LT5lZGl0bGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAndW5hYmxlX3BsYXllcicsICRyZXR1cm5pZCwgJ0TDqXNhY3RpdmVyJyxhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJJG9uZXJvdy0+c2l0bWVuc2xpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3NpdF9tZW5zJywgJHJldHVybmlkLCAnU2l0dWF0aW9uIG1lbnN1ZWxsZScsIGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgkkb25lcm93LT5nZXRwYXJ0aWVzbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfcGFydGllcycsICRyZXR1cm5pZCwgJ1BhcnRpZXMgZGlzcHV0w6llcycsIGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgkkb25lcm93LT5nZXRwYXJ0aWVzc3BpZD0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfcGFydGllc19zcGlkJywgJHJldHVybmlkLCAnUGFydGllcyBTUElEJywgYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pKTsKCSRvbmVyb3ctPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZV9qb3VldXInLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSksICR0aGlzLT5MYW5nKCdkZWxldGVfcmVzdWx0X2NvbmZpcm0nKSk7CgkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIH0KICB9CiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKJHNtYXJ0eS0+YXNzaWduKCdyZXRyaWV2ZV91c2VycycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3VzZXJzJywgJHJldHVybmlkLCR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vaW1wb3J0LmdpZicsICR0aGlzLT5MYW5nKCdyZXRyaWV2ZV91c2VycycpLCAnJywgJycsICdzeXN0ZW1pY29uJykpLgokdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV91c2VycycsICRyZXR1cm5pZCwgCgkJICAkdGhpcy0+TGFuZygncmV0cmlldmVfdXNlcnMnKSwgCgkJICBhcnJheSgpKSk7CiRzbWFydHktPmFzc2lnbignY3JlYXRlbGluaycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkZF9qb3VldXInLCAkcmV0dXJuaWQsCgkJCQkgICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsICR0aGlzLT5MYW5nKCdhZGRfdXNlcicpLCAnJywgJycsICdzeXN0ZW1pY29uJykpLgoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkZF9qb3VldXInLCAkcmV0dXJuaWQsIAoJCQkJICAkdGhpcy0+TGFuZygnYWRkX3VzZXInKSwgCgkJCQkgIGFycmF5KCkpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtMnN0YXJ0JywKCQkkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnbWFzc19hY3Rpb24nLCRyZXR1cm5pZCkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm0yZW5kJywKCQkkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKJGFydGljbGVzID0gYXJyYXkoIkTDqXNhY3RpdmVyIj0+InVuYWJsZSIsIk1ldHRyZSDDoCBtYXNjdWxpbiI9PiJtYXNjdWxpbiIsICJNZXR0cmUgw6AgRsOpbWluaW4iPT4iZmVtaW5pbiIpOwokc21hcnR5LT5hc3NpZ24oJ2FjdGlvbmRlbWFzc2UnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnYWN0aW9uZGVtYXNzZScsJGFydGljbGVzKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0X21hc3NhY3Rpb24nLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdF9tYXNzYWN0aW9uJywkdGhpcy0+TGFuZygnYXBwbHlfdG9fc2VsZWN0aW9uJyksJycsJycsJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmVfYWN0aW9ubXVsdGlwbGUnKSkpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdqb3VldXJzLnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_journal_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjICAgICAgICAgICAgICAgICAgICBKT1VSTkFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyMKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgoKCWlmIChpc3NldCgkcGFyYW1zWydzdWJtaXRfbWFzc2RlbGV0ZSddKSApCiAgCXsKICAgICAJCWlmKCBpc3NldCgkcGFyYW1zWydzZWwnXSkgJiYgaXNfYXJyYXkoJHBhcmFtc1snc2VsJ10pICYmIGNvdW50KCRwYXJhbXNbJ3NlbCddKSA+IDAgKQogICAgICAJCXsKICAgICAgICAJCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRqb3VybmFsaWQgKQoJICAJCXsKCSAgICAJCQlwaW5nX2FkbWluX29wczo6ZGVsZXRlX2pvdXJuYWwoICRqb3VybmFsaWQgKTsKCSAgCQl9CiAgICAgIAkJfQogIAl9CgoKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwovL3JlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmNhbGN1bHMucGhwJyk7Ci8vbGlzdGUgZGVzIGxpZW5zIHBvdXIgcsOpY3Vww6lyZXIgbGVzIGRvbm7DqWVzIAokc21hcnR5LT5hc3NpZ24oJ3JldHJpZXZlX3VzZXJzJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9qb3VldXJzX2J5X2NsdWInLCAkcmV0dXJuaWQsICRjb250ZW50cyA9ICJSw6ljdXDDqXJhdGlvbiBkZXMgam91ZXVycyIsICR3YXJuX21lc3NhZ2UgPSAiRXRlcyB2b3VzIHPDu3IgPyBUcm9wIGQnYXBwZWxzIHZlcnMgbGEgYmFzZSBkZSBkb25uw6llcyBwZXV2ZW50IGF2b2lyIGRlcyBjb25zw6lxdWVuY2VzIGltcG9ydGFudGVzICEiKSk7CiRzbWFydHktPmFzc2lnbigncmV0cmlldmVfdGVhbXMnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3RlYW1zJywgJHJldHVybmlkLCAkY29udGVudHMgPSAiUsOpY3Vww6lyYXRpb24gZGVzIMOpcXVpcGVzIChjaGFtcGlvbm5hdCBzZW5pb3JzKSIsIGFycmF5KCd0eXBlJz0+J00nKSkpOwokc21hcnR5LT5hc3NpZ24oJ3JldHJpZXZlX3RlYW1zX2F1dHJlcycsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfdGVhbXMnLCAkcmV0dXJuaWQsICRjb250ZW50cyA9ICJSw6ljdXDDqXJhdGlvbiBkZXMgw6lxdWlwZXMiKSk7CiRzbWFydHktPmFzc2lnbigncmV0cmlldmVfYWxsX3BhcnRpZXMnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX2FsbF9wYXJ0aWVzJywgJHJldHVybmlkLCAkY29udGVudHMgPSAiUsOpY3Vww6lyYXRpb24gZGUgdG91dGVzIGxlcyBwYXJ0aWVzIEZGVFQiKSk7CiRzbWFydHktPmFzc2lnbigncmVjdXBfam91ZXVycycsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmVjdXBfam91ZXVycycsICRyZXR1cm5pZCkpOwokc21hcnR5LT5hc3NpZ24oJ3JldHJpZXZlX2FsbF9zcGlkJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9hbGxfcGFydGllc19zcGlkJywgJHJldHVybmlkLCAkY29udGVudHMgPSAnUsOpY3Vww6lyYXRpb25zIGRlIHRvdXRlcyBsZXMgcGFydGllcyBTUElEJywgJHdhcm5fbWVzc2FnZSA9ICdFdGVzIHZvdXMgc8O7ciA/JykpOwokc21hcnR5LT5hc3NpZ24oJ3JldHJpZXZlX2RldGFpbHNfcmVuY29udHJlcycsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfY2x1YicsICRyZXR1cm5pZCwgJGNvbnRlbnRzID0gJ1LDqWN1cMOpcmF0aW9ucyBkdSBkw6l0YWlsIGRlcyByZW5jb250cmVzJykpOwoKLyogb24gZmFpdCB1biBmb3JtdWxhaXJlIGRlIGZpbHRyYWdlIGRlcyByw6lzdWx0YXRzKi8KLy8kc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2RlZmF1bHRhZG1pbicsJycsICdwb3N0JywgJycsZmFsc2UsJycsYXJyYXkoJ2FjdGl2ZV90YWInPT4nam91cm5hbCcpKSk7CiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdhZG1pbl9qb3VybmFsX3RhYicpKTsKJHN0YXR1c2xpc3RbJHRoaXMtPmxhbmcoJ2FsbHN0YXR1cycpXSA9Jyc7CiRkYXRlbGlzdFskdGhpcy0+TGFuZygnYWxsZGF0ZXMnKV0gPSAnJzsKJHR5cGVDb21wZXQgPSBhcnJheSgpOwovLyR0eXBlQ29tcGV0WyR0aGlzLT5MYW5nKCdhbGxjb21wZXQnKV0gPSAnJzsKJHF1ZXJ5MSA9ICJTRUxFQ1QgZGF0ZWNyZWF0ZWQsIHN0YXR1cyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cCBPUkRFUiBCWSBkYXRlY3JlYXRlZCBERVNDIjsKJGRicmVzdWx0MSA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkxKTsKCmlmKCRkYnJlc3VsdDEgJiYgJGRicmVzdWx0MS0+UmVjb3JkQ291bnQoKT4wKQp7CgkKCgl3aGlsZSAoJHJvdyA9ICRkYnJlc3VsdDEtPkZldGNoUm93KCkpCgkJewoJCQlzZXRsb2NhbGUgKExDX1RJTUUsICdmcl9GUicpOyAKCQkJJGRhdGVsaXN0WyRyb3dbJ2RhdGVjcmVhdGVkJ11dID0gJHJvd1snZGF0ZWNyZWF0ZWQnXTsgCgkJCSRzdGF0dXNsaXN0WyRyb3dbJ3N0YXR1cyddXSA9ICRyb3dbJ3N0YXR1cyddOwoJCX0KCgkJCQlpZiggaXNzZXQoJHBhcmFtc1snc3VibWl0ZmlsdGVyJ10pICkKCQkJICAJewoJCQkgICAgCQlpZiggaXNzZXQoICRwYXJhbXNbJ2RhdGVsaXN0J10pICkKCQkJICAgICAgCQl7CgkJCQkJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkYXRlQ2hvaXNpJywgJHBhcmFtc1snZGF0ZWxpc3QnXSk7CgkJCSAgICAgIAkJfQoJCQoJCQkJCWlmKCBpc3NldCggJHBhcmFtc1snc3RhdHVzbGlzdCddKSApCgkJCSAgICAgIAkJewoJCQkJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc3RhdHVzQ2hvaXNpZScsICRwYXJhbXNbJ3N0YXR1c2xpc3QnXSk7CgkJCSAgICAgIAkJfQoJCQkJfQoKCQkKJGN1cmRhdGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ2RhdGVDaG9pc2knICk7CiRjdXJzdGF0dXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc3RhdHVzQ2hvaXNpZScpOwp9Cgokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF90b3VyJywKCQkkdGhpcy0+TGFuZygndG91cicpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9kYXRlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2RhdGVsaXN0JywkZGF0ZWxpc3QsLTEsJGN1cmRhdGUpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zdGF0dXMnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnc3RhdHVzbGlzdCcsJHN0YXR1c2xpc3QsLTEsJGN1cnN0YXR1cykpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9lcXVpcGUnLAoJCSR0aGlzLT5MYW5nKCdlcXVpcGUnKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0ZmlsdGVyJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXRmaWx0ZXInLCR0aGlzLT5MYW5nKCdmaWx0cmVzJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCiRlZGl0ID0gMDsvL3BvdXIgY29tcGxldGVyIGxhIHJlcXVldGUuCiRwYXJtPSBhcnJheSAoKTsKJGNyaXRlcmUgPSAnJzsKJGFjdGl2YXRpb24gPSAwOwokcXVlcnkyPSAiU0VMRUNUIGlkLCBkYXRlY3JlYXRlZCwgZGVzaWduYXRpb24sIHN0YXR1cyxhY3Rpb24gRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXAiOwokcmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5Mik7CiR0b3RhbHJvd3MgPSAkcmVzdWx0LT5SZWNvcmRDb3VudCgpOwoJaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdGZpbHRlciddICkpCgl7CgoJCWlmICgkY3VyZGF0ZSAhPScnKQoJCXsKCQkJJGVkaXQgPSAxOwoJCQkkY3JpdGVyZS49IiBXSEVSRSBkYXRlY3JlYXRlZCA9ID8gIjsKCQkJJHBhcm1zWydkYXRlY3JlYXRlZCddID0gJGN1cmRhdGU7CgkJCgkJfQoJCWlmKCRjdXJzdGF0dXMgIT0nJykKCQl7CgkJCWlmKCRlZGl0PT0xKQoJCQl7CgkJCQkkY3JpdGVyZS49IiBBTkQgc3RhdHVzID0gPyI7CgkJCQkkcGFybXNbJ3N0YXR1cyddID0gJGN1cnN0YXR1czsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRjcml0ZXJlLj0iIFdIRVJFIHN0YXR1cyA9ID8iOwoJCQkJJHBhcm1zWydzdGF0dXMnXSA9ICRjdXJzdGF0dXM7CgkJCX0KCQl9CgkJJGFjdGl2YXRpb24gPSAxOy8vcGVybWV0IGRlIGRpZmbDqXJlbmNpZXIgbGVzIGRldXggcmVxdWV0ZXMKCQkKCX0KCQoJJGNyaXRlcmUuPSAiIE9SREVSIEJZIGRhdGVjcmVhdGVkIERFU0MiOwoJLy9vbiBpbnN0YW5jaWUgZGVzIHZhcmlhYmxlcyBwb3VyIGNyw6llciB1bmUgcGFnaW5hdGlvbiBkYW5zIGwnb25nbGV0IGpvdXJuYWwKCQoJLy9maW4gZHUgaWYgZGJyZXN1bHQKCSRkYnJlc3VsdDIgPSAnJzsgCiAgICAgICAgJHBhZ2UgPSAxOwoJaWYgKGlzc2V0KCRfR0VUWydwYWdlJ10pKSRwYWdlID0gJF9HRVRbJ3BhZ2UnXTsKCgkkbGltaXQgPSAyMDsKCWlmKGlzc2V0KCRwYXJhbXNbJ2xpbWl0J10pKQoJJHBhZ2Vfc3RyaW5nID0gIiI7CgkkZnJvbSA9ICgkcGFnZSAqICRsaW1pdCkgLSAkbGltaXQ7CglpZigkYWN0aXZhdGlvbj09JzAnKQoJewoJCSRkYnJlc3VsdDIgPSAkZGItPlNlbGVjdExpbWl0KCdTRUxFQ1QgaWQsIGRhdGVjcmVhdGVkLCBkZXNpZ25hdGlvbiwgc3RhdHVzLGFjdGlvbiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfcGluZ19yZWN1cCAnLiRjcml0ZXJlLicnLCAkbGltaXQsICRmcm9tKTsKCgl9CgkKCWVsc2VpZigkYWN0aXZhdGlvbj09JzEnKQoJewoJCSRkYnJlc3VsdDIgPSAkZGItPlNlbGVjdExpbWl0KCdTRUxFQ1QgaWQsIGRhdGVjcmVhdGVkLCBkZXNpZ25hdGlvbiwgc3RhdHVzLGFjdGlvbiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfcGluZ19yZWN1cCAnLiRjcml0ZXJlLicnLCAkbGltaXQsICRmcm9tLCAkcGFybXMpOwoJCQoJfQoJZWNobyAkdG90YWxyb3dzOwoJCgkJLyoKCQlpZiAoISRkYnJlc3VsdDIpCgkJewoKCQkJZGllKCdGQVRBTCBTUUwgRVJST1I6ICcuJGRiLT5FcnJvck1zZygpLic8YnIvPlFVRVJZOiAnLiRkYi0+c3FsKTsKCgkJfQoJCSovCgoKCi8vJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKJHJvd2NsYXNzPSAncm93MSc7CiRyb3dhcnJheT0gYXJyYXkgKCk7CgoJaWYgKCRkYnJlc3VsdDIgJiYgJGRicmVzdWx0Mi0+UmVjb3JkQ291bnQoKSA+IDApCiAgCXsKICAgIAkJJHBhZ2Vfc3RyaW5nID0gcGFnaW5hdGlvbigkcGFnZSwgJHRvdGFscm93cywgJGxpbWl0KTsKCQkkc21hcnR5LT5hc3NpZ24oInBhZ2VzdHJpbmciLCRwYWdlX3N0cmluZyk7CgkJd2hpbGUgKCRyb3c9ICRkYnJlc3VsdDItPkZldGNoUm93KCkpCiAgICAgIAkJewoJCQkkb25lcm93PSBuZXcgU3RkQ2xhc3MoKTsKCQkJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCQkJJG9uZXJvdy0+aWQ9ICRyb3dbJ2lkJ107CgkJCSRvbmVyb3ctPmRhdGVjcmVhdGVkPSAkcm93WydkYXRlY3JlYXRlZCddOwoJCQkkb25lcm93LT5kZXNpZ25hdGlvbj0gJHJvd1snZGVzaWduYXRpb24nXTsKCQkJJG9uZXJvdy0+YWN0aW9uPSAkcm93WydhY3Rpb24nXTsKCQkJLy8kb25lcm93LT5zZWxlY3QgPSAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ3NlbFtdJywkcm93WydpZCddKTsKCQkJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCQkJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIAkJfQogIAl9Cgokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7CiRzbWFydHktPmFzc2lnbignY3JlYXRlbGluaycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkZF9jb21wdGUnLCAkcmV0dXJuaWQsCgkJCQkgICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsICR0aGlzLT5MYW5nKCdhZGQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpKS4KCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRfY29tcHRlJywgJHJldHVybmlkLCAKCQkJCSAgJHRoaXMtPkxhbmcoJ2FkZG5ld3NoZWV0JyksIAoJCQkJICBhcnJheSgpKSk7CiRzbWFydHktPmFzc2lnbignZm9ybTJzdGFydCcsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX2pvdXJuYWxfdGFiJywkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtMmVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0X21hc3NkZWxldGUnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdF9tYXNzZGVsZXRlJywkdGhpcy0+TGFuZygnZGVsZXRlX3NlbGVjdGVkJyksCgkJCQkJCQkJCSAgICAgJycsJycsJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmVfZGVsZXRlbXVsdGlwbGUnKSkpOwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2pvdXJuYWwudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_options_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL29uIHbDqXJpZmllIGxlcyBkcm9pdHMgZGUgY2V0IHV0aWxpc2F0ZXVyCmlmKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFVzZScpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFNldCBQcmVmcycpKXsKCSRtZXNzYWdlID0gIlZvdXMgblwnYXZleiBwYXMgbGVzIGF1dG9yaXNhdGlvbnMgcG91ciBhY2PDqWRlciBhdXggcHLDqWbDqXJlbmNlcyI7CgkkdGhpcy0+U2V0TWVzc2FnZSgiJG1lc3NhZ2UiKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKfQogIC8vIENyZWF0ZUZvcm1TdGFydCBzZXRzIHVwIGEgcHJvcGVyIGZvcm0gdGFnIHRoYXQgd2lsbCBjYXVzZSB0aGUgc3VibWl0IHRvCiAgLy8gcmV0dXJuIGNvbnRyb2wgdG8gdGhpcyBtb2R1bGUgZm9yIHByb2Nlc3NpbmcuCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCAoJGlkLCAndXBkYXRlb3B0aW9ucycsICRyZXR1cm5pZCkpOwokc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCAoKSk7CiRzbWFydHktPmFzc2lnbigndGl0bGVfY2x1Yl9udW1iZXInLCR0aGlzLT5MYW5nKCd0aXRsZV9jbHViX251bWJlcicpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jbHViX251bWJlcicsJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2NsdWJfbnVtYmVyJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY2x1Yl9udW1iZXInLCcnKSw1MCwyNTUpKTsKJHNhaXNvbl9lbmNvdXJzID0gKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fcmVmZXJlbmNlJykpID8gICcyMDEzLTIwMTQnIDogJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9yZWZlcmVuY2UnKTsKLy8kc21hcnR5LT5hc3NpZ24oJ3RpdGxlX2Zvcm1zdWJtaXRfZW1haWxhZGRyZXNzJywkdGhpcy0+TGFuZygnZm9ybXN1Ym1pdF9lbWFpbGFkZHJlc3MnKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfcGhhc2UnLCR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdwaGFzZV9lbl9jb3VycycsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BoYXNlX2VuX2NvdXJzJywnMScpLDUwLDI1NSkpOwovLyRzbWFydHktPmFzc2lnbigndGl0bGVfZW1haWxfc3ViamVjdCcsJHRoaXMtPkxhbmcoJ2VtYWlsX3N1YmplY3QnKSk7CiRpdGVtcyA9IGFycmF5KCk7CiRpdGVtc1snT3VpJ10gPSAnT3VpJzsKJGl0ZW1zWydOb24nXSA9ICdOb24nOwokc2Fpc29uZHJvcGRvd24gPSBhcnJheSgpOwokc2Fpc29uZHJvcGRvd25bJzIwMTMtMjAxNCddID0gJzIwMTMtMjAxNCc7CiRzYWlzb25kcm9wZG93blsnMjAxNC0yMDE1J10gPSAnMjAxNC0yMDE1JzsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zYWlzb25fZW5fY291cnMnLCR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnc2Fpc29uX2VuX2NvdXJzJywkc2Fpc29uZHJvcGRvd24sLTEsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpLDUwLDI1NSkpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X25vbV9lcXVpcGVzJywgCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdub21fZXF1aXBlcycsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdub21fZXF1aXBlcycsICcnKSwgNTAsMjUwKSk7CiRzbWFydHktPmFzc2lnbignam91cl9zaXRfbWVucycsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2pvdXJfc2l0X21lbnMnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnam91cl9zaXRfbWVucycsICcnKSwgNSwgNykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3BvcHVsYXRlX2NhbGVuZGFyJywkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3BvcHVsYXRlX2NhbGVuZGFyJywkaXRlbXMsLTEsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BvcHVsYXRlX2NhbGVuZGFyJyksNTAsMjU1KSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfYWZmaWNoZV9jbHViX3VuaXF1ZW1lbnQnLCR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnYWZmaWNoZV9jbHViX3VuaXF1ZW1lbnQnLCRpdGVtcywtMSwkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWZmaWNoZV9jbHViX3VuaXF1ZW1lbnQnKSw1MCwyNTUpKTsKJHZhbGV1cnNfaW50ZXJ2YWwgPSBhcnJheSgiMSBqb3VyIj0+IjEiLCIyIGpvdXJzIj0+IjIiLCIzIGpvdXJzIj0+IjMiLCJKYW1haXMiPT4iMzY1Iik7CiR2YWxldXJzX25vbWJyZXNfc3BpZCA9IGFycmF5KCIyNSBqb3VldXJzIj0+IjI1IiwgIjUwIGpvdWV1cnMiPT4iNTAiLCAiNzUgam91ZXVycyI9PiI3NSIsIjEwMCBqb3VldXJzIj0+IjEwMCIpOwokdmFsZXVyc19ub21icmVzX2ZmdHQgPSBhcnJheSgiMjUgam91ZXVycyI9PiIyNSIsICI1MCBqb3VldXJzIj0+IjUwIiwgIjc1IGpvdWV1cnMiPT4iNzUiLCIxMDAgam91ZXVycyI9PiIxMDAiKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zcGlkX2ludGVydmFsJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdzcGlkX2ludGVydmFsJywkdmFsZXVyc19pbnRlcnZhbCwtMSwkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc3BpZF9pbnRlcnZhbCcpKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfc3BpZF9ub21icmVzJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3NwaWRfbm9tYnJlcycsJHZhbGV1cnNfbm9tYnJlc19zcGlkLC0xLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzcGlkX25vbWJyZXMnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2ZmdHRfaW50ZXJ2YWwnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2ZmdHRfaW50ZXJ2YWwnLCR2YWxldXJzX2ludGVydmFsLC0xLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmZnR0X2ludGVydmFsJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9mZnR0X25vbWJyZXMnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnZmZ0dF9ub21icmVzJywkdmFsZXVyc19ub21icmVzX2ZmdHQsLTEsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2ZmdHRfbm9tYnJlcycpKSk7Ci8qCiRzbWFydHktPmFzc2lnbignc2l0bWVuc19va19vbmx5JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3NpdG1lbnNfb2tfb25seScsICRpdGVtcywtMSwkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2l0bWVuc19va19vbmx5JyksNTAsMjU1KSk7CiovCiRzbWFydHktPmFzc2lnbignc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0ICgkaWQsICdvcHRpb25zc3VibWl0YnV0dG9uJywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7CgovLyBEaXNwbGF5IHRoZSBwb3B1bGF0ZWQgdGVtcGxhdGUKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlICgnYWRtaW5wcmVmcy50cGwnKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_poules_tab2.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyAgICAgICAgICAgICAgICAgIFRvIGNvbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLy9sZXMgY29tcMOpdGl0aW9ucyDDoCB2ZW5pcgppZighaXNzZXQoJGdDbXMpKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKJGRhdGVfY291cmFudGUgPSBkYXRlKCdZLW0tZCcpOwovL2VjaG8gImxhIGRhdGUgY291cmFudGUgOiAiLiRkYXRlX2NvdXJhbnRlOwovL29uIHRlc3RlIHVuIGFmZmljaGFnZSBwYXIgbW9pcwokbW9pc19jb3VyYW50ID0gZGF0ZSgnbicpOwokbW9pc19jaG9pc2kgPSAnJzsKaWYoaXNzZXQoJHBhcmFtc1snbW9pcyddKSAmJiAkcGFyYW1zWydtb2lzJ10gIT0nJykKewoJJG1vaXNfY2hvaXNpID0gJHBhcmFtc1snbW9pcyddOwp9CmVsc2UKewoJJG1vaXNfY2hvaXNpID0gJG1vaXNfY291cmFudDsKfQppZigkbW9pc19jaG9pc2kgPT0xKQp7CgkkbW9pc19wcmVjZWRlbnQgPSAxMjsKfQplbHNlCnsKCSRtb2lzX3ByZWNlZGVudCA9ICRtb2lzX2Nob2lzaSAtMTsKfQppZigkbW9pc19jaG9pc2k9PTEyKQp7CgkkbW9pc19zdWl2YW50ID0gMTsKfQplbHNlCnsKCSRtb2lzX3N1aXZhbnQgPSAkbW9pc19jaG9pc2kgKyAxOwp9Cgokc21hcnR5LT5hc3NpZ24oJ21vaXNfcHJlY2VkZW50JywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2RlZmF1bHRhZG1pbicsJHJldHVybmlkLCAnUHLDqWPDqWRlbnQnLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJyZXN1bHRhdHMiLCJtb2lzIj0+IiRtb2lzX3ByZWNlZGVudCIpICkpOwokc21hcnR5LT5hc3NpZ24oJ21vaXNfc3VpdmFudCcsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCwgJ1N1aXZhbnQnLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJyZXN1bHRhdHMiLCJtb2lzIj0+IiRtb2lzX3N1aXZhbnQiKSApKTsKJHNtYXJ0eS0+YXNzaWduKCdhbGxfcmVzdWx0cycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX2FsbF9wb3VsZV9yZW5jb250cmVzJywgJHJldHVybmlkLCAnUsOpY3Vww6lyZXIgdG91cyBsZXMgcsOpc3VsdGF0cycpKTsKLy9sYSByZXF1ZXRlCiRxdWVyeSA9ICJTRUxFQ1QgdGMuY29lZmZpY2llbnQsY2FsLmRhdGVfZGVidXQsIERBWShjYWwuZGF0ZV9kZWJ1dCkgQVMgam91cl9jb21wZXQsY2FsLmRhdGVfZmluLCBjYWwudHlwZV9jb21wZXQsdGMubmFtZSwgdGMuaW5kaXZzIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIgQVMgY2FsLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgQVMgdGMgIFdIRVJFIHRjLmNvZGVfY29tcGV0ID0gY2FsLnR5cGVfY29tcGV0IEFORCBNT05USChjYWwuZGF0ZV9kZWJ1dCkgPSA/IjsKLy8kcGFybXNbJ2RhdGVfZGVidXQnXSA9ICRtb2lzX2NvdXJhbnQ7Ci8qCglpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKSA9PScxJyApCgl7CgkJaWYoJHBhcmFtc1sncGhhc2UnXSA9PTIpCgkJewoJCQkkcXVlcnkuPSAiIEFORCBNT05USChjYWwuZGF0ZV9kZWJ1dCkgPj0gMSBBTkQgTU9OVEgoY2FsLmRhdGVfZGVidXQpIDw9NyI7IAoJCX0KCQllbHNlCgkJewoJCQkkcXVlcnkuPSAiIEFORCBNT05USChjYWwuZGF0ZV9kZWJ1dCkgPiA3IEFORCBNT05USChjYWwuZGF0ZV9kZWJ1dCkgPD0xMiI7ICAvLy8vQkVUV0VFTiBOT1coKSBBTkQgKE5PVygpICsgSU5URVJWQUwgNyBEQVkpIjsKCQl9Cgl9CgllbHNlaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwaGFzZV9lbl9jb3VycycpID09ICcyJykKCXsKCQlpZigkcGFyYW1zWydwaGFzZSddID09MSkKCQl7CgkJCSRxdWVyeS49ICIgQU5EIE1PTlRIKGNhbC5kYXRlX2RlYnV0KSA+IDcgQU5EIE1PTlRIKGNhbC5kYXRlX2RlYnV0KSA8PTEyIjsgIC8vLy9CRVRXRUVOIE5PVygpIEFORCAoTk9XKCkgKyBJTlRFUlZBTCA3IERBWSkiOwoJCX0KCQllbHNlCgkJewoJCQkkcXVlcnkuPSAiIEFORCBNT05USChjYWwuZGF0ZV9kZWJ1dCkgPj0gMSBBTkQgTU9OVEgoY2FsLmRhdGVfZGVidXQpIDw9NyI7ICAvLy8vQkVUV0VFTiBOT1coKSBBTkQgKE5PVygpICsgSU5URVJWQUwgNyBEQVkpIjsJCgkJfQoJfQoqLwokcXVlcnkuPSIgT1JERVIgQlkgY2FsLmRhdGVfZGVidXQgQVNDIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkbW9pc19jaG9pc2kpKTsKLy9lY2hvICRxdWVyeTsKCgokcm93YXJyYXkgPSBhcnJheSgpOwokaT0wOwppZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCnsKCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgl7CgkJJGluZGl2cyA9ICRyb3dbJ2luZGl2cyddOwoJCSRkYXRlX2RlYnV0ID0gJHJvd1snZGF0ZV9kZWJ1dCddOwoJCSRkYXRlX2ZpbiA9ICRyb3dbJ2RhdGVfZmluJ107CgkJJHR5cGVfY29tcGV0ID0gJHJvd1sndHlwZV9jb21wZXQnXTsKCQkkam91cl9jb21wZXQgPSAkcm93Wydqb3VyX2NvbXBldCddOwoJCSRjb2VmZmljaWVudCA9ICRyb3dbJ2NvZWZmaWNpZW50J107CgkJJGNvbXBldCA9ICRyb3dbJ25hbWUnXTsKCQkkb25lcm93ID0gbmV3IFN0ZENsYXNzKCk7CgkJJG9uZXJvdy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7CgkJJG9uZXJvdy0+Y29tcGV0ID0gJGNvbXBldDsKCQkkb25lcm93LT5kYXRlID0gJGRhdGVfZGVidXQ7CgkJJG9uZXJvdy0+aW5kaXZzID0gJHJvd1snaW5kaXZzJ107CgkJIC8vb24gZMOpY2xhcmUgdW4gbm91dmVhdSB0YWJsZWF1CgkJJHJvd2FycmF5MiA9IGFycmF5KCk7CgkJaWYoJGluZGl2cyA9PSAwKSAgICAvL29uIGVzdCBzdXIgdW5lIGNvbXDDqXRpdGlvbiBwYXIgw6lxdWlwZXMKCQl7CgkJCSRpKys7CgkJCSRvbmVyb3ctPnZhbGV1ciA9ICRpOwoJCQkvL29uIHJlZmFpdCB1bmUgcmVxdWV0ZSBwb3VyIGV4dHJhaXJlIGxlcyByZW5jb250cmVzCgkJCSRxdWVyeTIgPSAiU0VMRUNUIERJU1RJTkNUIHJlbi5pZCwgcmVuLnNjb3JlYSwgcmVuLnNjb3JlYiwgcmVuLmVxdWEsIHJlbi5lcXViLHJlbi5pZGRpdiwgcmVuLmlkcG91bGUsZXEuZnJpZW5kbHluYW1lLHJlbi5pZCwgcmVuLmNsdWIscmVuLnVwbG9hZGVkLGVxLmxpYmVxdWlwZSxyZW4uZGF0ZV9ldmVudCxyZW4uYWZmaWNoZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBBUyByZW4sICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIEFTIGVxIFdIRVJFIHJlbi5pZGRpdiA9IGVxLmlkZGl2IEFORCByZW4uaWRwb3VsZSA9IGVxLmlkcG91bGUgQU5EIHJlbi5zYWlzb24gPSBlcS5zYWlzb24gQU5EIHJlbi5jbHViID0gJzEnIEFORCByZW4uZGF0ZV9ldmVudCA9ID8gQU5EIGVxLnR5cGVfY29tcGV0ID0gPyI7Ly8iIEFORCBkYXRlX2V2ZW50ID49Tm93KCkiOwoJCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLGFycmF5KCRkYXRlX2RlYnV0LCAkdHlwZV9jb21wZXQpKTsKCQkJJG5ibGlnbmVzID0gJGRicmVzdWx0YXQtPlJlY29yZENvdW50KCk7CgkJCS8vZWNobyAibGUgbmIgZGUgbGlnbmVzIGVzdCA6ICIuJG5ibGlnbmVzOwoJCQlpZigkZGJyZXN1bHRhdCAmJiAkZGJyZXN1bHRhdC0+UmVjb3JkQ291bnQoKT4wKQoJCQl7CgkJCQl3aGlsZSgkcm93MiA9ICRkYnJlc3VsdGF0LT5GZXRjaFJvdygpKQoJCQkJewoJCQkJCS8vJHZhbGV1ciA9ICRpOwoJCQkJCSRvbmVyb3cyID0gbmV3IFN0ZENsYXNzKCk7CgkJCQkJJGlkID0gJHJvdzJbJ2lkJ107CgkJCQkJJGVxdWEgPSAkcm93MlsnZXF1YSddOwoJCQkJCSRlcXViID0gJHJvdzJbJ2VxdWInXTsKCQkJCQkkaWRkaXYgPSAkcm93MlsnaWRkaXYnXTsKCQkJCQkkaWRwb3VsZSA9ICRyb3cyWydpZHBvdWxlJ107CgkJCQkJJHNjb3JlYSA9ICRyb3cyWydzY29yZWEnXTsKCQkJCQkkc2NvcmViID0gJHJvdzJbJ3Njb3JlYiddOwoJCQkJCSRjbHViID0gJHJvdzJbJ2NsdWInXTsKCQkJCQkkZGF0ZV9ldmVudCA9ICRyb3cyWydkYXRlX2V2ZW50J107CgkJCQkJJGFmZmljaGUgPSAkcm93MlsnYWZmaWNoZSddOwoJCQkJCSR1cGxvYWRlZCA9ICRyb3cyWyd1cGxvYWRlZCddOwoJCQkJCSRsaWJlcXVpcGUgPSAkcm93MlsnbGliZXF1aXBlJ107CgkJCQkJJGZyaWVuZGx5bmFtZSA9ICRyb3cyWydmcmllbmRseW5hbWUnXTsKCQkJCQkKCQkJCQlpZigkYWZmaWNoZSA9PTEpCgkJCQkJewoJCQkJCQkkb25lcm93Mi0+ZGlzcGxheT0gJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsICR0aGlzLT5MYW5nKCdkb19ub3RfZGlzcGxheScpLCAnJywgJycsICdzeXN0ZW1pY29uJyk7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCSRvbmVyb3cyLT5kaXNwbGF5PSAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCdkaXNwbGF5X29uX2Zyb250ZW5kJyksICcnLCAnJywgJ3N5c3RlbWljb24nKTsKCQkJCQl9CgkJCQkJCgkJCQkJJHBiID0gMDsKCQkJCQkKCQkJCQlpZigkc2NvcmVhID09MCAmJiAkc2NvcmViID09IDApCgkJCQkJewoJCQkJCQkkcGIgPSAxOwoJCQkJCX0KCQkJCQlpZigkdXBsb2FkZWQgPT0gMCkgCgkJCQkJewoKCQkJCQkgCWlmKCRwYj09MSkgCgkJCQkJCXsKCQkJCQkJCWlmKCRkYXRlX2V2ZW50IDw9ICRkYXRlX2NvdXJhbnRlKQoJCQkJCQkJewoJCQkJCQkJCSRvbmVyb3cyLT5yZXRyaWV2ZV9wb3VsZV9yZW5jb250cmVzPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9wb3VsZV9yZW5jb250cmVzJywgJHJldHVybmlkLCRjb250ZW50cyA9ICdNQUonLCBhcnJheSgnaWRwb3VsZSc9PiRyb3cyWydpZHBvdWxlJ10sICdpZGRpdic9PiRyb3cyWydpZGRpdiddLCAndHlwZV9jb21wZXQnPT4kcm93Wyd0eXBlX2NvbXBldCddKSk7CgkJCQkJCQl9CgkJCQkJCX0KCQkJCQkJaWYoJGRhdGVfZXZlbnQgPD0gJGRhdGVfY291cmFudGUpCgkJCQkJCXsKCQkJCQkJCSRvbmVyb3cyLT5yZXRyaWV2ZV9kZXRhaWxzID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdyZXRyaWV2ZV9kZXRhaWxzX3JlbmNvbnRyZXMyJywgJHJldHVybmlkLCR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vaW1wb3J0LmdpZicsICR0aGlzLT5MYW5nKCdyZXRyaWV2ZWFsbHBhcnRpZXNzcGlkJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3cyWydpZCddKSk7CgkJCQkJCX0KCQkJCQkJCgkJCQkJfQoKCQkJCQlpZigkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIERlbGV0ZScpKQoJCQkJCXsKCQkJCQkJJG9uZXJvdzItPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZScsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93MlsnaWQnXSwgJ3R5cGVfY29tcGV0Jz0+J3BvdWxlcycpLCAkdGhpcy0+TGFuZygnZGVsZXRlX2NvbmZpcm0nKSk7CgkJCQkJfQoJCQkJCWlmKGlzc2V0KCRmcmllbmRseW5hbWUpICYmICRmcmllbmRseW5hbWUgIT0nJykKCQkJCQl7CgkJCQkJCWlmICgkbGliZXF1aXBlID09ICRlcXVhICYmIGlzc2V0KCRmcmllbmRseW5hbWUpICYmICRmcmllbmRseW5hbWUgIT0nJyApCgkJCQkJCXsKCQkJCQkJCSRvbmVyb3cyLT5lcXVhPSAkcm93MlsnZnJpZW5kbHluYW1lJ107CgkJCQkJCX0KCQkJCQkJCgkJCQkJCWVsc2V7CgkJCQkJCQkkb25lcm93Mi0+ZXF1YT0gJHJvdzJbJ2VxdWEnXTsKCQkJCQkJfQoJCQkJCQoJCQkJCX0KCQkJCQllbHNlewoJCQkJCQkkb25lcm93Mi0+ZXF1YT0gJHJvdzJbJ2VxdWEnXTsKCQkJCQl9CgkJCQkJaWYoaXNzZXQoJGZyaWVuZGx5bmFtZSkgJiYgJGZyaWVuZGx5bmFtZSAhPScnKQoJCQkJCXsKCQkJCQkJaWYgKCRsaWJlcXVpcGUgPT0gJGVxdWIpCgkJCQkJCXsKCQkJCQkJCSRvbmVyb3cyLT5lcXViPSAkcm93MlsnZnJpZW5kbHluYW1lJ107CgkJCQkJCX0KCgkJCQkJCWVsc2V7CgkJCQkJCQkkb25lcm93Mi0+ZXF1Yj0gJHJvdzJbJ2VxdWInXTsKCQkJCQkJfQoJCQkJCQoJCQkJCX0KCQkJCQllbHNlewoJCQkJCQkkb25lcm93Mi0+ZXF1Yj0gJHJvdzJbJ2VxdWInXTsKCQkJCQl9CgkJCQkJJG9uZXJvdzItPnNjb3JlYSA9ICRzY29yZWE7CgkJCQkJJG9uZXJvdzItPnNjb3JlYiA9ICRzY29yZWI7CgkJCQkJLy8kb25lcm93Mi0+dmFsZXVyID0gJHZhbGV1cjsKCQkJCQkkcm93YXJyYXkyW10gPSAkb25lcm93MjsKCQkJCQkKCQkJCX0KCQkJCQoJCQkJJHNtYXJ0eS0+YXNzaWduKCdwcm9kc18nLiRpLCRyb3dhcnJheTIpOwoJCQkvLwkkc21hcnR5LT5hc3NpZ24oJ2F0dGVudGlvbl9pbWcnLCAnPGltZyBzcmM9IicuICR0aGlzLT5HZXRNb2R1bGVVUkxQYXRoLicvaW1hZ2VzL3dhcm5pbmcuZ2lmIiBhbHQ9IicuJHRoaXMtPkxhbmcoJ25ld190b3BpY19sYWJlbCcpLiciIHRpdGxlPSInLiR0aGlzLT5MYW5nKCduZXdfdG9waWNfbGFiZWwnKS4nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIC8+Jyk7CgkJCQl1bnNldCgkcm93YXJyYXkyKTsKCQkJLy8JdW5zZXQoJHZhbGV1cik7CgkJCX0KCQkJCgkJfQoJCWVsc2UKCQl7CgkJCS8vb24gZXN0IHN1ciB1bmUgY29tcGV0IGluZGl2aWR1ZWxsZQoJCQkkZGF0ZV9ldmVudCA9ICRyb3dbJ2RhdGVfZGVidXQnXTsKCQkJJG5hbWUgPSAkcm93WyduYW1lJ107CgkJCSRvbmVyb3ctPmRvd25sb2FkID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdyZXRyaWV2ZV9pbmRpdnMnLCRyZXR1cm5pZCwkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ltcG9ydC5naWYnLCAkdGhpcy0+TGFuZygncmV0cmlldmVhbGxwYXJ0aWVzc3BpZCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCd0eXBlX2NvbXBldCc9PiRyb3dbJ3R5cGVfY29tcGV0J10sJ2NvZWZmaWNpZW50Jz0+J2NvZWZmaWNpZW50JykpOwoJCQkvLyRvbmVyb3ctPmNvbXBldCA9ICRuYW1lOwoJCX0KCQkkcm93YXJyYXlbXSAgPSAkb25lcm93OwoJCSRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwoJCSRzbWFydHktPmFzc2lnbignZGF0ZV9jb3VyYW50ZScsICRkYXRlX2NvdXJhbnRlKTsKCQkKCX0KfQplbHNlCnsKCSRzbWFydHktPmFzc2lnbignbWVzc2FnZScsICdQYXMgZGUgcsOpc3VsdGF0cycpOwoJZWNobyAncGFzIGRlIHLDqXN1bHRhdHMnOwp9CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgncmVzdWx0YXRzLnRwbCcpOwojCiNFT0YKIwo/PgoKCgoKCgoK]]></data>
	</file>
	<file>
	  <filename>/action.admin_recup_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19maWxlX18pLicvaW5jbHVkZS90cmF2YXV4LnBocCcpOwokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7Cgokc21hcnR5LT5hc3NpZ24oJ2lkJywgJHRoaXMtPkxhbmcoJ2lkJykpOwokc21hcnR5LT5hc3NpZ24oJ3VzZXJuYW1lJywgJ0pvdWV1cicpOwokc21hcnR5LT5hc3NpZ24oJ3BvaW50cycsICdQb2ludHMnKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJG1vaXNfY291cmFudCA9IGRhdGUoJ24nKTsKJGFubmVlX2NvdXJhbnRlID0gZGF0ZSgnWScpOwovLyRtb250aCA9IG1vaXNfZnJhbmNhaXMoIiRtb2lzX2NvdXJhbnQiKTsKLy9lY2hvICJsZSBtb2lzIGVuIGZyYW7Dp2FpcyA6ICIuJG1vbnRoOwovLyRzbWFydHktPmFzc2lnbignbW9pcy1lbi1mcmFuY2FpcycsICIkbW9udGgiKTsKJHNpdF9jb3VyYW50ZSA9ICdKdWluIDIwMTQnOwokc21hcnR5LT5hc3NpZ24oJ3NpdF9jb3VyYW50ZScsICIkc2l0X2NvdXJhbnRlIik7CiRzbWFydHktPmFzc2lnbignZGlzcGxheV91bmFibGVfcGxheWVycycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGlzcGxheV91bmFibGVfcGxheWVycycsICRyZXR1cm5pZCwgJ2xpc3RlIGRlcyBqb3VldXJzIGluYWN0aWZzJykpOwoKCiRkYnJlc3VsdD0gYXJyYXkgKCk7Ci8vU0VMRUNUICogRlJPTSBwaW5nX21vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgQVMgcmVjIHJpZ2h0IEpPSU4gcGluZ19tb2R1bGVfcGluZ19qb3VldXJzIEFTIGogT04gai5saWNlbmNlID0gcmVjLmxpY2VuY2UgIE9SREVSIEJZIGouaWQgQVNDCiRxdWVyeT0gIlNFTEVDVCBqLmlkLCBDT05DQVRfV1MoJyAnLGoubm9tLCBqLnByZW5vbSkgQVMgam91ZXVyLCBqLmxpY2VuY2UscmVjLm1hal9zcGlkLCByZWMubWFqX2ZmdHQscmVjLnNwaWRfdG90YWwsIHJlYy5zaXRfbWVucywgcmVjLmZmdHQsIHJlYy5zcGlkLCBqLmFjdGlmIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgQVMgaiBMRUZUIEpPSU4gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgQVMgcmVjIE9OIGoubGljZW5jZSA9IHJlYy5saWNlbmNlIFdIRVJFIGouYWN0aWYgPSAnMScgQU5EIChyZWMuc2Fpc29uID0gPyBPUiByZWMuc2Fpc29uIElTIE5VTEwpIE9SREVSIEJZIGpvdWV1ciBBU0MiOwoKJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkc2Fpc29uKSk7CiRyb3djbGFzcz0gJ3JvdzEnOwokcm93YXJyYXk9IGFycmF5ICgpOwppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewoJJGFjdGlmID0gJHJvd1snYWN0aWYnXTsKCS8vJGxpY2VuY2UgPSAkcm93WydsaWNlbmNlJ107Cgkkc2l0X21lbnMgPSAkcm93WydzaXRfbWVucyddOwoJCgkkb25lcm93PSBuZXcgU3RkQ2xhc3MoKTsKCSRvbmVyb3ctPnJvd2NsYXNzPSAkcm93Y2xhc3M7Cgkkb25lcm93LT5pZD0gJHJvd1snaWQnXTsKCSRvbmVyb3ctPmpvdWV1cj0gJHJvd1snam91ZXVyJ107Cgkkb25lcm93LT5saWNlbmNlPSAkcm93WydsaWNlbmNlJ107CgkvLyRvbmVyb3ctPmFjdGl2ZT0gKCRyb3dbJ2FjdGl2ZSddID09IDEpID8gJHRoaXMtPkxhbmcoJ3llcycpIDogJyc7Cgkkb25lcm93LT5zaXRfbWVucz0gJHJvd1snc2l0X21lbnMnXTsKCSRvbmVyb3ctPmZmdHQ9ICRyb3dbJ2ZmdHQnXTsKCSRvbmVyb3ctPm1hal9mZnR0PSAkcm93WydtYWpfZmZ0dCddOwoJJG9uZXJvdy0+c3BpZD0gJHJvd1snc3BpZCddOwoJJG9uZXJvdy0+c3BpZF90b3RhbD0gJHJvd1snc3BpZF90b3RhbCddOwoJJG9uZXJvdy0+bWFqX3NwaWQ9ICRyb3dbJ21hal9zcGlkJ107CgkvLyRvbmVyb3ctPmRvZWRpdD0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF9qb3VldXInLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pLCAkcm93KTsKCWlmKCRyb3dbJ2FjdGlmJ10gPT0nMScpewoJCSRvbmVyb3ctPmVkaXRsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICd1bmFibGVfcGxheWVyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL3RydWUuZ2lmJywgJHRoaXMtPkxhbmcoJ3VuYWJsZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pKTsKCX0gCgllbHNlIHsKCQkkb25lcm93LT5lZGl0bGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZW5hYmxlX3BsYXllcicsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9mYWxzZS5naWYnLCAkdGhpcy0+TGFuZygnZW5hYmxlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJfQoJCglpZigkcm93WydzaXRfbWVucyddID09JycpCgl7CgkJJG9uZXJvdy0+cHVzaF9wbGF5ZXIgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdwdXNoX3BsYXllcicsJHJldHVybmlkLCAnUsOpY3Vww6lyZXIgbGUgam91ZXVyJyxhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJfQoJCgkkb25lcm93LT5jb3JyZWN0aW9uPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRfc2l0X21lbnMnLCAkcmV0dXJuaWQsICdDb3JyaWdlcicsICBhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJLy8kb25lcm93LT5lZGl0bGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAndW5hYmxlX3BsYXllcicsICRyZXR1cm5pZCwgJ0TDqXNhY3RpdmVyJyxhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJJG9uZXJvdy0+c2l0bWVuc2xpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3NpdF9tZW5zJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ltcG9ydC5naWYnLCAkdGhpcy0+TGFuZygncmV0cmlldmVfc2l0X21lbnMnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpKS4KJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfc2l0X21lbnMnLCAkcmV0dXJuaWQsIAoJICAJJHRoaXMtPkxhbmcoJ3JldHJpZXZlX3NpdF9tZW5zJyksIGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgkkb25lcm93LT5nZXRwYXJ0aWVzbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfcGFydGllcycsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9pbXBvcnQuZ2lmJywgJHRoaXMtPkxhbmcoJ3JldHJpZXZlX3BhcnRpZXMnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpKS4KJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfcGFydGllcycsICRyZXR1cm5pZCwgCgkgIAkkdGhpcy0+TGFuZygncmV0cmlldmVfcGFydGllcycpLCBhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJJG9uZXJvdy0+Z2V0cGFydGllc3NwaWQ9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3BhcnRpZXNfc3BpZCcsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9pbXBvcnQuZ2lmJywgJHRoaXMtPkxhbmcoJ3JldHJpZXZlX3BhcnRpZXNfc3BpZCcpLCAnJywgJycsICdzeXN0ZW1pY29uJykpLgokdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9wYXJ0aWVzX3NwaWQnLCAkcmV0dXJuaWQsIAoJICAJJHRoaXMtPkxhbmcoJ3JldHJpZXZlX3BhcnRpZXNfc3BpZCcpLCBhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJLy8kb25lcm93LT5kZWxldGVsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWxldGVfam91ZXVyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pLCAkdGhpcy0+TGFuZygnZGVsZXRlX3Jlc3VsdF9jb25maXJtJykpOwoJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCSRyb3dhcnJheVtdPSAkb25lcm93OwogICAgICB9CiAgfQokc21hcnR5LT5hc3NpZ24oJ2JhcmNoYXJ0cycsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYmFyY2hhcnRzJywgJHJldHVybmlkLCAnVm9pciBncmFwaGlxdWUnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKLyoKJHNtYXJ0eS0+YXNzaWduKCdyZXRyaWV2ZV91c2VycycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3VzZXJzJywgJHJldHVybmlkLCdSw6ljdXDDqXJhdGlvbiBkZSB0b3VzIGxlcyBqb3VldXJzJykpOwoqLwokc21hcnR5LT5hc3NpZ24oJ2F0dGVudGlvbl9pbWcnLCAnPGltZyBzcmM9Ii4uL21vZHVsZXMvUGluZy9pbWFnZXMvd2FybmluZy5naWYiIGFsdD0iJy4kdGhpcy0+TGFuZygnbWlzc2luZ19zaXRfbWVucycpLiciIHRpdGxlPSInLiR0aGlzLT5MYW5nKCdtaXNzaW5nX3NpdF9tZW5zJykuJyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiAvPicpOwoKJHNtYXJ0eS0+YXNzaWduKCdmb3JtMnN0YXJ0JywKCQkkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnbWFzc19hY3Rpb24nLCRyZXR1cm5pZCkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm0yZW5kJywKCQkkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKJGFydGljbGVzID0gYXJyYXkoIkTDqXNhY3RpdmVyIj0+InVuYWJsZSIsIlLDqWN1cMOpcmVyIHNpdHVhdGlvbiBtZW5zdWVsbGUiPT4ic2l0dWF0aW9uIiwgIlLDqWN1cMOpcmVyIGxlcyBwYXJ0aWVzIGR1IFNwaWQiPT4ic3BpZCIsICJSw6ljdXDDqXJlciBsZXMgcGFydGllcyBGRlRUIj0+ImZmdHRfcGFydGllcyIpOwokc21hcnR5LT5hc3NpZ24oJ2FjdGlvbmRlbWFzc2UnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnYWN0aW9uZGVtYXNzZScsJGFydGljbGVzKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0X21hc3NhY3Rpb24nLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdF9tYXNzYWN0aW9uJywkdGhpcy0+TGFuZygnYXBwbHlfdG9fc2VsZWN0aW9uJyksJycsJycsJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmVfYWN0aW9ubXVsdGlwbGUnKSkpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdyZWN1cHBhcnRpZXMudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_situation_mensuelle_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgICAgICAgICAgICAgICAgICAgTCdvbmdsZXQgZGUgbGEgc2l0dWF0aW9uIG1lbnN1ZWxsZSAgICAgICAgICAgIyMjCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyMKIyBBdXRldXIgOiBDbGF1ZGUgU0lPSEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywnUGFyYW1ldGVycycpOwokbW9pc19jb3VyYW50ID0gZGF0ZSgnbicpOy8vTW9pcyBhdSBmb3JtYXQgMSwgMiwgMyBldGMuLi4uCiRtb2lzX2ZyYW5jYWlzID0gYXJyYXkoJ0phbnZpZXInLCAnRsOpdnJpZXInLCdNYXJzJywgJ0F2cmlsJywgJ01haScsICdKdWluJywgJ0p1aWxsZXQnLCdBb8O7dCcsICdTZXB0ZW1icmUnLCAnT2N0b2JyZScsJ05vdmVtYnJlJywnRMOpY2VtYnJlJyk7CiRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKJG1vaXNfcmVlbCA9ICRtb2lzX2NvdXJhbnQgLSAxOwokbW9pc19zbSA9ICRtb2lzX2ZyYW5jYWlzWyIkbW9pc19yZWVsIl07CiRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKLy9lY2hvICJsJ2FubsOpZSBjb3VyYW50ZSBlc3QgOiAiLiRhbm5lZV9jb3VyYW50ZTsKCi8qIG9uIGZhaXQgdW4gZm9ybXVsYWlyZSBkZSBmaWx0cmFnZSBkZXMgcsOpc3VsdGF0cyovCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnYWRtaW5fc2l0dWF0aW9uX21lbnN1ZWxsZV90YWInKSk7IAokc2Fpc29uc2xpc3RbJHRoaXMtPmxhbmcoJ2FsbHNlYXNvbnMnKV0gPScnOwovLyRtb250aHNsaXN0WyR0aGlzLT5MYW5nKCdhbGxtb250aHMnKV0gPSAnJzsKJG1vbnRoc2xpc3QgPSBhcnJheSgiVG91cyBsZXMgbW9pcyI9PiIiLCJKdWlsbGV0Ij0+IjciLCAiQW/Du3QiPT4iOCIpOwokeWVhcnNsaXN0ID0gYXJyYXkoIjIwMTQiPT4iMjAxNCIpOwokdG91cmxpc3RbJHRoaXMtPkxhbmcoJ2FsbHRvdXJzJyldID0gJyc7CiRlcXVpcGVsaXN0WyR0aGlzLT5MYW5nKCdhbGxlcXVpcGVzJyldID0gJyc7CiRwbGF5ZXJzbGlzdFskdGhpcy0+TGFuZygnYWxscGxheWVycycpXSA9ICcnOwokdHlwZUNvbXBldCA9IGFycmF5KCk7CiR0eXBlQ29tcGV0WyR0aGlzLT5MYW5nKCdhbGxjb21wZXQnKV0gPSAnJzsKJHF1ZXJ5ID0gIlNFTEVDVCBwdHMubW9pcyAsai5saWNlbmNlLCBDT05DQVRfV1MoJyAnLGoubm9tLCBqLnByZW5vbSkgQVMgcGxheWVyIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIEFTIHB0cyAgLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBBUyBqIFdIRVJFIHB0cy5saWNlbmNlICA9IGoubGljZW5jZSBBTkQgai5hY3RpZiA9ICcxJyBPUkRFUiBCWSBqLm5vbSBBU0MiOwokZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwp3aGlsZSAoJGRicmVzdWx0YXQgJiYgJHJvdyA9ICRkYnJlc3VsdGF0LT5GZXRjaFJvdygpKQogIHsKICAgIAkKICAgIAkkcGxheWVyc2xpc3RbJHJvd1sncGxheWVyJ11dID0gJHJvd1snbGljZW5jZSddOwoJJG1vbnRoc2xpc3RbJHJvd1snbW9pcyddXSA9ICRyb3dbJ21vaXMnXTsKICAgIAkKICB9CgoJaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdGZpbHRlciddKSApCiAgCXsKICAgIAkJaWYoIGlzc2V0KCAkcGFyYW1zWydtb250aHNsaXN0J10pICkKICAgICAgCQl7CgkJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtb2lzQ2hvaXNpJywgJHBhcmFtc1snbW9udGhzbGlzdCddKTsKICAgICAgCQl9CgkJaWYoIGlzc2V0KCAkcGFyYW1zWydwbGF5ZXJzbGlzdCddKSApCiAgICAgIAkJewoJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgncGxheWVyQ2hvaXNpJywgJHBhcmFtc1sncGxheWVyc2xpc3QnXSk7CiAgICAgIAkJfQoJfQoJCiRjdXJtb250aCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtb2lzQ2hvaXNpJyk7Ci8vJGN1cnRvdXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ3RvdXJDaG9pc2knICk7Ci8vJGN1cnNlYXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25DaG9pc2llJyk7CiRjdXJwbGF5ZXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ3BsYXllckNob2lzaScpOwokY3VyZXF1aXBlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoICdlcXVpcGVDaG9pc2llJyApOwovLyRjdXJDb21wZXQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ2NvbXBldENob2lzaWUnKTsKCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3RvdXInLAoJCSR0aGlzLT5MYW5nKCd0b3VyJykpOwovKgokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3RvdXInLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwndG91cmxpc3QnLCR0b3VybGlzdCwtMSwkY3VydG91cikpOwoJCSovCiRzbWFydHktPmFzc2lnbignaW5wdXRfbW9udGgnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnbW9udGhzbGlzdCcsJG1vbnRoc2xpc3QsLTEsJGN1cm1vbnRoKSk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0X2VxdWlwZScsCgkJJHRoaXMtPkxhbmcoJ2VxdWlwZScpKTsJCQokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2NvbXBldCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCd0eXBlQ29tcGV0JywkdHlwZUNvbXBldCwtMSwkY3VyQ29tcGV0KSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfcGxheWVyJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3BsYXllcnNsaXN0JywkcGxheWVyc2xpc3QsLTEsJGN1cnBsYXllcikpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdGZpbHRlcicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0ZmlsdGVyJywkdGhpcy0+TGFuZygnZmlsdHJlcycpKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgoKCiRzbWFydHktPmFzc2lnbignaWQnLCAkdGhpcy0+TGFuZygnaWQnKSk7CiRzbWFydHktPmFzc2lnbigndXNlcm5hbWUnLCAnSm91ZXVyJyk7CiRzbWFydHktPmFzc2lnbigncG9pbnRzJywgJ1BvaW50cycpOwovLyRhY3Rpb24gPSAoZW1wdHkoJF9QT1NUWydhY3Rpb24nXSkpID8gJ2RlZmF1bHQnIDogJF9QT1NUWydhY3Rpb24nXTsKCi8vJG1vaXNfcHJlZiA9JHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRNb250aFNpdE1lbnMnLCAnNicpOwoKJG1vaXNfcHJlZiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWZhdWx0TW9udGhTaXRNZW5zJyk7Ci8vZWNobyAibGUgbW9pcyBwcmVmIGVzdCA6ICIuJG1vaXNfcHJlZjsKLy8kbW9pcyA9ICghZW1wdHkoJG1vaXNfcHJlZikpID8gJG1vaXNfcHJlZiA6ICRtb2lzX2NvdXJhbnQ7Ci8vZWNobyAibGUgbW9pcyByZXRlbnUgZXN0IDogIi4kbW9pczsKCiRyZXN1bHQ9IGFycmF5ICgpOwokcXVlcnkyID0gIlNFTEVDVCAqLCBzbS5pZCxqLmxpY2VuY2Usc20uaWQsc20ubW9pcyxzbS5wb2ludHMsIHNtLmFubmVlLCBDT05DQVRfV1MoJyAnLCBqLm5vbSwgai5wcmVub20pIEFTIGpvdWV1ciwgc20ucHJvZ21vaXMsIHNtLmNsbmF0LCBzbS5yYW5ncmVnLCBzbS5yYW5nZGVwICBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogTEVGVCBKT0lOICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyBBUyBzbSBPTiBqLmxpY2VuY2UgPSBzbS5saWNlbmNlIFdIRVJFIGouYWN0aWYgPSAnMScgIjsvL0FORCAoc20uYW5uZWUgPSA/IE9SIHNtLmFubmVlIElTIE5VTEwpICI7Ci8vJHBhcm1zWydhbm5lZSddID0gJGFubmVlX2NvdXJhbnRlOwovL2VjaG8gJHF1ZXJ5OwoKCWlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXRmaWx0ZXInXSApKQoJewoJCgkJaWYoJGN1cm1vbnRoICE9JycpCgkJewoJCQoJCQkkcXVlcnkyIC49IiBBTkQgKHNtLm1vaXMgPSA/IE9SIHNtLm1vaXMgSVMgTlVMTCkgIjsKCQkJJHBhcm1zWydtb2lzJ10gPSAkY3VybW9udGg7CgkJfQoJCgkJaWYgKCRjdXJwbGF5ZXIgIT0nJykKCQl7CgkJCSRxdWVyeTIgLj0iIEFORCBqLmxpY2VuY2UgPSA/IjsKCQkJJHBhcm1zWydsaWNlbmNlJ10gPSAkY3VycGxheWVyOwoJCQoJCX0KCQkKCQkkcXVlcnkyIC49IiBPUkRFUiBCWSBqb3VldXIgQVNDIjsKCQkkZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCRwYXJtcyk7CgkKCX0KCWVsc2UKCXsKCQkkcXVlcnkyIC49IkFORCAoc20uYW5uZWUgPSA/IE9SIHNtLmFubmVlIElTIE5VTEwpICBPUkRFUiBCWSBqb3VldXIgQVNDIjsKCQkkZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLGFycmF5KCRhbm5lZV9jb3VyYW50ZSkpOwoJfS8vZmluIGR1IHN1Ym1pdCBmaWx0ZXIKCQovLyRxdWVyeTIuPSIgIEFORCAoc20uYW5uZWUgPSA/IE9SIHNtLmFubmVlIElTIE5VTEwpICI7Ci8vJHBhcm1zWydhbm5lZSddID0gJGFubmVlX2NvdXJhbnRlOwoKCi8vZWNobyAkcXVlcnkyOwoKCWlmICghJGRicmVzdWx0KQoJewoKCQllY2hvICJGQVRBTCBTUUwgRVJST1I6ICIuJGRiLT5FcnJvck1zZygpLiI8YnIvPlFVRVJZMjogIi4kZGItPnNxbDsKCQllY2hvICJwYiByZXEgISI7CgkJJGRlc2lnbmF0aW9uID0gJGRiLT5FcnJvck1zZygpOwoJCWVjaG8gIiRkZXNpZ25hdGlvbiI7CgoJfQoKCgokcm93Y2xhc3M9ICdyb3cxJzsKJHJvd2FycmF5PSBhcnJheSAoKTsKCglpZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgCXsKICAgIAkJd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgCQl7CgkJCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJCQkkb25lcm93LT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJCQkkb25lcm93LT5pZD0gJHJvd1snaWQnXTsKCQkJJG9uZXJvdy0+bGljZW5jZT0gJHJvd1snbGljZW5jZSddOwoJCQkkb25lcm93LT5tb2lzPSAkcm93Wydtb2lzJ107CgkJCSRvbmVyb3ctPmFubmVlPSAkcm93Wydhbm5lZSddOwoJCQkkb25lcm93LT5wb2ludHM9ICRyb3dbJ3BvaW50cyddOwoJCQkkb25lcm93LT5jbG5hdD0gJHJvd1snY2xuYXQnXTsKCQkJJG9uZXJvdy0+cmFuZ3JlZz0gJHJvd1sncmFuZ3JlZyddOwoJCQkkb25lcm93LT5yYW5nZGVwPSAkcm93WydyYW5nZGVwJ107CgkJCSRvbmVyb3ctPnByb2dtb2lzPSAkcm93Wydwcm9nbW9pcyddOwoJCQkvLyRvbmVyb3ctPmVxdWlwZT0gJHRoaXMtPmNyZWF0ZUxpbmsoJGlkLCAndmlld3N0ZWFtcmVzdWx0JywgJHJldHVybmlkLCAkcm93WydlcXVpcGUnXSxhcnJheSgnZXF1aXBlJz0+JHJvd1snZXF1aXBlJ10pLCRyb3cpIDsKCQkJJG9uZXJvdy0+am91ZXVyPSAkcm93Wydqb3VldXInXTsKCQkJJG9uZXJvdy0+ZWRpdGxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkZF9zaXRfbWVucycsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9pbXBvcnQuZ2lmJywgJHRoaXMtPkxhbmcoJ2FkZC1tYW51YWxseScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pKTsKCQkJJG9uZXJvdy0+c2l0bWVuc2xpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3NpdF9tZW5zJywgJHJldHVybmlkLCAnU2l0dWF0aW9uIG1lbnN1ZWxsZScsIGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7CgkJCSRvbmVyb3ctPmdldHBhcnRpZXNsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9wYXJ0aWVzJywgJHJldHVybmlkLCAnUGFydGllcyBkaXNwdXTDqWVzJywgYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pKTsKCQkJaWYoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBEZWxldGUnKSkKCQkJewoJCQkJJG9uZXJvdy0+ZGVsZXRlbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGVsZXRlJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoInR5cGVfY29tcGV0Ij0+InNpdF9tZW5zIiwgJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pLCAkdGhpcy0+TGFuZygnZGVsZXRlX2NvbmZpcm0nKSk7CgkJCX0KCQkJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCQkJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIAkJfQogIAl9Cgokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7CiRzbWFydHktPmFzc2lnbignYWRkYWxsc2l0bWVuc2xpbmsnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnYWRkX2FsbF9zaXRfbWVucycsICRyZXR1cm5pZCwgJ0Fqb3V0ZXIgbWFudWVsbGVtZW50IGxlcyBzaXR1YXRpb25zIG1lbnN1ZWxsZXMnKSk7CiRzbWFydHktPmFzc2lnbigncmV0cmlldmVhbGxzaXRtZW5zJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ3JldHJpZXZlX2FsbF9zaXRfbWVucycsICRyZXR1cm5pZCwgJ0Fqb3V0ZXIgYXV0b21hdGlxdWVtZW50IGxlcyBzaXR1YXRpb25zIG1lbnN1ZWxsZXMnKSk7CiRzbWFydHktPmFzc2lnbignbWlzc2luZ19zaXRfbWVucycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ21pc3Npbmdfc2l0X21lbnMnLCAkcmV0dXJuaWQsICdMZXMgc2l0dWF0aW9ucyBtYW5xdWFudGVzJykpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm0yc3RhcnQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdtYXNzX2FjdGlvbicsJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbignZm9ybTJlbmQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokYXJ0aWNsZXMgPSBhcnJheSgiRMOpc2FjdGl2ZXIiPT4idW5hYmxlIiwiUsOpY3Vww6lyZXIgc2l0dWF0aW9uIG1lbnN1ZWxsZSI9PiJzaXR1YXRpb24iKTsKJHNtYXJ0eS0+YXNzaWduKCdhY3Rpb25kZW1hc3NlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2FjdGlvbmRlbWFzc2UnLCRhcnRpY2xlcykpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF9tYXNzYWN0aW9uJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXRfbWFzc2FjdGlvbicsJHRoaXMtPkxhbmcoJ2FwcGx5X3RvX3NlbGVjdGlvbicpLCcnLCcnLCR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlX2FjdGlvbm11bHRpcGxlJykpKTsKCQkJCSAgCgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FsbHNpdG1lbnMudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_spid_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICAgICAgICAgICAgICBTUElEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwovLwlkZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmNhbGN1bHMucGhwJyk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CgokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7CgovKiBvbiBmYWl0IHVuIGZvcm11bGFpcmUgZGUgZmlsdHJhZ2UgZGVzIHLDqXN1bHRhdHMqLwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2RlZmF1bHRhZG1pbicsJycsICdwb3N0JywgJycsZmFsc2UsJycsYXJyYXkoJ2FjdGl2ZV90YWInPT4nc3BpZCcpKSk7Ci8vJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdhZG1pbl9zcGlkX3RhYicpKTsKCiRkYXRlbGlzdFskdGhpcy0+TGFuZygnYWxsdG91cnMnKV0gPSAnJzsKJGVxdWlwZWxpc3RbJHRoaXMtPkxhbmcoJ2FsbGVxdWlwZXMnKV0gPSAnJzsKJHBsYXllcnNsaXN0WyR0aGlzLT5MYW5nKCdhbGxwbGF5ZXJzJyldID0gJyc7CiR0eXBlQ29tcGV0ID0gYXJyYXkoKTsKJHR5cGVDb21wZXRbJHRoaXMtPkxhbmcoJ2FsbGNvbXBldCcpXSA9ICcnOwokcXVlcnkgPSAiU0VMRUNUIHB0cy5lcHJldXZlLCBwdHMuZGF0ZV9ldmVudCwgai5saWNlbmNlLHB0cy5udW1qb3VybiAsIENPTkNBVF9XUygnICcsai5ub20sIGoucHJlbm9tKSBBUyBwbGF5ZXIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIEFTIHB0cyAgLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBBUyBqIFdIRVJFIHB0cy5saWNlbmNlICA9IGoubGljZW5jZSBBTkQgcHRzLnNhaXNvbiA9ID8gT1JERVIgQlkgcHRzLmRhdGVfZXZlbnQgQVNDLHBsYXllciBBU0MsIHB0cy5udW1qb3VybiBBU0MiOy8vIiI7Ci8vZWNobyAkcXVlcnk7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRzYWlzb24pKTsKd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQogIHsKICAgIAkkZGF0ZWxpc3RbJHJvd1snZGF0ZV9ldmVudCddXSA9ICRyb3dbJ2RhdGVfZXZlbnQnXTsKICAgIAkkcGxheWVyc2xpc3RbJHJvd1sncGxheWVyJ11dID0gJHJvd1snbGljZW5jZSddOwoJJHR5cGVDb21wZXRbJHJvd1snZXByZXV2ZSddXSA9ICRyb3dbJ2VwcmV1dmUnXTsKICB9CgppZiggaXNzZXQoJHBhcmFtc1snc3VibWl0ZmlsdGVyJ10pICkKICB7CiAgICAJaWYoIGlzc2V0KCAkcGFyYW1zWydkYXRlbGlzdCddKSApCiAgICAgIAl7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RhdGVDaG9pc2knLCAkcGFyYW1zWydkYXRlbGlzdCddKTsKICAgICAgCX0KCWlmKCBpc3NldCggJHBhcmFtc1sncGxheWVyc2xpc3QnXSkgKQogICAgICAJewoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwbGF5ZXJDaG9pc2knLCAkcGFyYW1zWydwbGF5ZXJzbGlzdCddKTsKICAgICAgCX0KICAgICAgICBpZiggaXNzZXQoICRwYXJhbXNbJ3R5cGVDb21wZXQnXSkgKQoJeyAKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSAoICdjb21wZXRDaG9pc2llJywgJHBhcmFtc1sndHlwZUNvbXBldCddKTsKCX0KfQokY3VyZGF0ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCAnZGF0ZUNob2lzaScgKTsKJGN1cnBsYXllciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCAncGxheWVyQ2hvaXNpJyk7CiRjdXJDb21wZXQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ2NvbXBldENob2lzaWUnKTsKCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3RvdXInLAoJCSR0aGlzLT5MYW5nKCd0b3VyJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2RhdGUnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnZGF0ZWxpc3QnLCRkYXRlbGlzdCwtMSwkY3VyZGF0ZSkpOwkJCiRzbWFydHktPmFzc2lnbignaW5wdXRfY29tcGV0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3R5cGVDb21wZXQnLCR0eXBlQ29tcGV0LC0xLCRjdXJDb21wZXQpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9wbGF5ZXInLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwncGxheWVyc2xpc3QnLCRwbGF5ZXJzbGlzdCwtMSwkY3VycGxheWVyKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfZXJyb3Jfb25seScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdlcnJvcl9vbmx5JywxLDEpKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRmaWx0ZXInLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdGZpbHRlcicsJHRoaXMtPkxhbmcoJ2ZpbHRyZXMnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKJHJlc3VsdD0gYXJyYXkgKCk7CgokcXVlcnkyID0gIlNFTEVDVCBzcC5pZCBBUyByZWNvcmRfaWQsQ09OQ0FUX1dTKCcgJyxqLm5vbSwgai5wcmVub20pIEFTIGpvdWV1ciwgc3AuZGF0ZV9ldmVudCwgc3AuZXByZXV2ZSwgc3Aubm9tIEFTIG5hbWUsIHNwLmNsYXNzZW1lbnQsIHNwLnZpY3RvaXJlLCBzcC5lY2FydCwgc3AuY29lZmYsIHNwLnBvaW50cmVzLCBzcC5mb3JmYWl0IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgQVMgaiwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBBUyBzcCAgV0hFUkUgai5saWNlbmNlID0gc3AubGljZW5jZSBBTkQgc3Auc2Fpc29uID0gPyAiOy8vIiAgR1JPVVAgQlkgam91ZXVyLHR5cGVfY29tcGV0IE9SREVSIEJZIGpvdWV1cix0eXBlX2NvbXBldCI7CgokcGFybXNbJ3NhaXNvbiddID0gJHNhaXNvbjsKCmlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXRmaWx0ZXInXSApKQp7CglpZiAoJGN1cmRhdGUgIT0nJykKCXsKCQkkcXVlcnkyLj0iIEFORCBzcC5kYXRlX2V2ZW50ID0gPyAiOwoJCSRwYXJtc1snZGF0ZV9ldmVudCddID0gJGN1cmRhdGU7CgkJCgl9CgoJaWYgKCRjdXJwbGF5ZXIgIT0nJykKCXsKCQkkcXVlcnkyLj0iIEFORCBzcC5saWNlbmNlID0gPyI7CgkJJHBhcm1zWydsaWNlbmNlJ10gPSAkY3VycGxheWVyOwoJCQoJfQoJCglpZiAoJGN1ckNvbXBldCAhPScnKQoJewoJCSRxdWVyeTIuPSIgQU5EIHNwLmVwcmV1dmUgPSA/IjsKCQkkcGFybXNbJ2VwcmV1dmUnXSA9ICRjdXJDb21wZXQ7Cgl9CglpZigkcGFyYW1zWydlcnJvcl9vbmx5J10pCgl7CgkJJHF1ZXJ5Mi49IiBBTkQgc3AuY2xhc3NlbWVudCA9IC1zcC5lY2FydCAiOwoJfQoJJHF1ZXJ5Mi49IiBPUkRFUiBCWSBqb3VldXIgQVNDLCBzcC5kYXRlX2V2ZW50IEFTQyI7Cn0KZWxzZQp7CgkkcXVlcnkyLj0iIE9SREVSIEJZIGpvdWV1ciBBU0MsIHNwLmRhdGVfZXZlbnQgQVNDIExJTUlUIDEwMCI7Cn0KCgoKCgoKJGRicmVzdWx0Mj0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsICRwYXJtcyk7Ci8vZWNobyAkcXVlcnkyOwokcm93Y2xhc3M9ICdyb3cxJzsKJHJvd2FycmF5PSBhcnJheSAoKTsKaWYgKCRkYnJlc3VsdDIgJiYgJGRicmVzdWx0Mi0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdDItPkZldGNoUm93KCkpCiAgICAgIHsKCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCSRvbmVyb3ctPnJlY29yZF9pZD0gJHJvd1sncmVjb3JkX2lkJ107Cgkkb25lcm93LT5qb3VldXI9ICRyb3dbJ2pvdWV1ciddOy8vJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAndmlld191c2VyX3Jlc3VsdHMnLCAkcmV0dXJuaWQsICRyb3dbJ2pvdWV1ciddLGFycmF5KCdqb3VldXInPT4kcm93Wydqb3VldXInXSksJHJvdykgOwoJJG9uZXJvdy0+ZGF0ZV9ldmVudD0gJHJvd1snZGF0ZV9ldmVudCddOwoJJG9uZXJvdy0+ZXByZXV2ZT0gJHJvd1snZXByZXV2ZSddOwoJJG9uZXJvdy0+bmFtZT0gJHJvd1snbmFtZSddOwoJJG9uZXJvdy0+Y2xhc3NlbWVudD0gJHJvd1snY2xhc3NlbWVudCddOwoJJG9uZXJvdy0+dmljdG9pcmU9ICRyb3dbJ3ZpY3RvaXJlJ107Cgkkb25lcm93LT5lY2FydD0gJHJvd1snZWNhcnQnXTsKCSRvbmVyb3ctPmNvZWZmPSAkcm93Wydjb2VmZiddOwoJJG9uZXJvdy0+cG9pbnRyZXM9ICRyb3dbJ3BvaW50cmVzJ107Cgkkb25lcm93LT5mb3JmYWl0PSAkcm93Wydmb3JmYWl0J107Cgkkb25lcm93LT5lZGl0bGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF9wbGF5ZXJfcmVzdWx0cycsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ3JlY29yZF9pZCddKSk7Cgkkb25lcm93LT5kdXBsaWNhdGVsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkb19lZGl0X3Jlc3VsdCcsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9jb3B5LmdpZicsICR0aGlzLT5MYW5nKCdkdXBsaWNhdGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1sncmVjb3JkX2lkJ10sICdkdXBsaWNhdGUnPT4nMScpKTsKCQoJaWYoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBEZWxldGUnKSkKCXsKCQkkb25lcm93LT5kZWxldGVsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWxldGUnLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1sncmVjb3JkX2lkJ10sICJ0eXBlX2NvbXBldCI9PiJzcGlkIiksICR0aGlzLT5MYW5nKCdkZWxldGVfY29uZmlybScpKTsKCX0KCQoJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCSRyb3dhcnJheVtdPSAkb25lcm93OwogICAgICB9CiAgfQovKiovCiRzbWFydHktPmFzc2lnbignY3Jvbl9zcGlkX2ZmdHQnLCAKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdjcm9uX3NwaWRfZmZ0dCcsICRyZXR1cm5pZCwgJ1bDqXJpZiBTcGlkIDwtPiBGRlRUJykpOwokc21hcnR5LT5hc3NpZ24oJ3ZlcmlmX3NwaWRfZmZ0dCcsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3ZlcmlmX3NwaWRfZmZ0dCcsICRyZXR1cm5pZCwgJ1bDqXJpZiBTcGlkIDwtPiBGRlRUJykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7Ci8qCiRzbWFydHktPmFzc2lnbignY3JlYXRlbGluaycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2NyZWF0ZV9uZXdfdXNlcjMnLCAkcmV0dXJuaWQsCgkJCQkgICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsICR0aGlzLT5MYW5nKCdhZGRuZXdzaGVldCcpLCAnJywgJycsICdzeXN0ZW1pY29uJykpLgoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2NyZWF0ZV9uZXdfdXNlcjMnLCAkcmV0dXJuaWQsIAoJCQkJICAkdGhpcy0+TGFuZygnYWRkbmV3c2hlZXQnKSwgCgkJCQkgIGFycmF5KCkpKTsKCiRzbWFydHktPmFzc2lnbigncmV0cmlldmVfYWxsJywgCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfYWxsX3BhcnRpZXNfc3BpZCcsICRyZXR1cm5pZCwKCQkJCSR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsICR0aGlzLT5MYW5nKCdsb25nX2ltcG9ydCcpLCAnJywgJycsICdzeXN0ZW1pY29uJykpLgoJCQkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfYWxsX3BhcnRpZXNfc3BpZCcsICRyZXR1cm5pZCwgCgkJCQkJCQkJICAkdGhpcy0+TGFuZygncmV0cmlldmVhbGxwYXJ0aWVzc3BpZCcpLCAKCQkJCQkJCQkgIGFycmF5KCkpKTsKKi8KJHNtYXJ0eS0+YXNzaWduKCdmb3JtMnN0YXJ0JywKCQkkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnbWFzc19hY3Rpb24nLCRyZXR1cm5pZCkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm0yZW5kJywKCQkkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKJGFydGljbGVzID0gYXJyYXkoIk1ldHRyZSBsZSBDb2VmZiDDoCAwLDUiPT4iY29lZmYwNSIsIk1ldHRyZSBsZSBDb2VmZiDDoCAwLDc1Ij0+ImNvZWZmMDc1IiwiTWV0dHJlIGxlIENvZWZmIMOgIDEiPT4iY29lZmYxIiwiTWV0dHJlIGxlIENvZWZmIMOgIDEsMjUiPT4iY29lZmYxMjUiLCJNZXR0cmUgbGUgQ29lZmYgw6AgMSw1Ij0+ImNvZWZmMTUiLCAiUsOpY3Vww6lyZXIgc2l0dWF0aW9uIG1lbnN1ZWxsZSI9PiJzaXR1YXRpb24iLCJTdXBwcmltZXIiPT4ic3VwcF9zcGlkIik7Cgokc21hcnR5LT5hc3NpZ24oJ2FjdGlvbmRlbWFzc2UnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnYWN0aW9uZGVtYXNzZScsJGFydGljbGVzKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0X21hc3NhY3Rpb24nLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdF9tYXNzYWN0aW9uJywkdGhpcy0+TGFuZygnYXBwbHlfdG9fc2VsZWN0aW9uJyksJycsJycsJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmVfYWN0aW9ubXVsdGlwbGUnKSkpOwoKCQkJCi8vZmFpcmUgYXBwYXJhaXRyZSBsZXMgcG9pbnRzIHRvdGF1eCBldCBzb21tZSB2aWN0b2lyZSBlbiBiYXMgPyBDZSBzZXJhaXQgcGFzIG1hbAovKiovCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnc3BpZC50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.admin_teams_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgVXNlJykpCnsKCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJykpOwoJcmV0dXJuOwp9CgpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3ByZWZzLnBocCcpOwokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwokc2Fpc29uX2NvdXJhbnRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwokcGhhc2VfY291cmFudGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKTsKJHBoYXNlID0gKGlzc2V0KCRwYXJhbXNbJ3BoYXNlJ10pKT8kcGFyYW1zWydwaGFzZSddOiRwaGFzZV9jb3VyYW50ZTsKJHNtYXJ0eS0+YXNzaWduKCdwaGFzZTInLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQsICdQaGFzZSAyJywgYXJyYXkoImFjdGl2ZV90YWIiPT4iZXF1aXBlcyIsInBoYXNlIj0+IjIiKSApKTsKJHNtYXJ0eS0+YXNzaWduKCdwaGFzZTEnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQsICdQaGFzZSAxJywgYXJyYXkoImFjdGl2ZV90YWIiPT4iZXF1aXBlcyIsInBoYXNlIj0+IjEiKSApKTsKLy9sYSByZXF1ZXRlCiRzbWFydHktPmFzc2lnbignaWQnLCAkdGhpcy0+TGFuZygnaWQnKSk7CiRzbWFydHktPmFzc2lnbignZXF1aXBlJywgJ0VxdWlwZXMnKTsKJHNtYXJ0eS0+YXNzaWduKCd0b3VyJywgJ1RvdXInKTsKJHNtYXJ0eS0+YXNzaWduKCdzY29yZScsICdTY29yZScpOwokc21hcnR5LT5hc3NpZ24oJ2FkdmVyc2FpcmVzJywgJ0FkdmVyc2FpcmVzJyk7CgokcmVzdWx0PSBhcnJheSAoKTsKJHF1ZXJ5ID0gIlNFTEVDVCBESVNUSU5DVCAqLCBlcS5pZCxjb21wLm5hbWUsIGNvbXAuY29kZV9jb21wZXQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcyBBUyBlcSwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIEFTIGNvbXAgV0hFUkUgZXEuc2Fpc29uID0gPyBBTkQgY29tcC5jb2RlX2NvbXBldCA9IGVxLnR5cGVfY29tcGV0IjsKaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BoYXNlX2VuX2NvdXJzJykgPT0nMScgKQp7CglpZigkcGhhc2UgPT0yKQoJewoJCSRxdWVyeS49ICIgQU5EIGVxLnBoYXNlPTIiOyAKCX0KCWVsc2UKCXsKCQkkcXVlcnkuPSAiIEFORCBlcS5waGFzZT0xIjsgIC8vLy9CRVRXRUVOIE5PVygpIEFORCAoTk9XKCkgKyBJTlRFUlZBTCA3IERBWSkiOwoJfQp9CmVsc2VpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BoYXNlX2VuX2NvdXJzJykgPT0gJzInKQp7CglpZigkcGhhc2UgPT0xKQoJewoJCSRxdWVyeS49ICIgQU5EIGVxLnBoYXNlPTEiOyAgLy8vL0JFVFdFRU4gTk9XKCkgQU5EIChOT1coKSArIElOVEVSVkFMIDcgREFZKSI7Cgl9CgllbHNlCgl7CgkJJHF1ZXJ5Lj0gIiBBTkQgZXEucGhhc2U9MiI7ICAvLy8vQkVUV0VFTiBOT1coKSBBTkQgKE5PVygpICsgSU5URVJWQUwgNyBEQVkpIjsJCgl9Cn0KCSRxdWVyeSAuPSIgT1JERVIgQlkgZXEuaWQgQVNDIjsKCS8vZWNobyAkcXVlcnk7CgkkZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHNhaXNvbl9jb3VyYW50ZSkpOwoJJGNhbGVuZGFySW1hZ2UgPSAiPGltZyBzcmM9XCJ7JG1vZHVsZV9kaXJ9L2ltYWdlcy9jYWxlbmRyaWVyLmpwZ1wiIGNsYXNzPVwic3lzdGVtaWNvblwiIGFsdD1cIlLDqWN1cMOpcmVyIGxlIGNhbGVuZHJpZXJcIiAvPiI7CgkkcG9kaXVtSW1hZ2UgPSAiPGltZyBzcmM9XCJ7JG1vZHVsZV9kaXJ9L2ltYWdlcy9wb2RpdW0uanBnXCIgY2xhc3M9XCJzeXN0ZW1pY29uXCIgd2lkdGg9XCIxNlwiIGhlaWdodCA9XCIxMlwiIGFsdD1cIlLDqWN1cMOpcmVyIGxlIGNsYXNzZW1lbnRcIiAvPiI7CgkvL2VjaG8gJHF1ZXJ5OwoJJHJvd2FycmF5PSBhcnJheSAoKTsKCQoJCWlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKICAJCXsKICAgIAkJCXdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIAkJCXsKCQkJCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJCQkJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCQkJCSRjb2RlID0gJHJvd1snY29kZV9jb21wZXQnXTsKCQkJCSRvbmVyb3ctPmlkPSAkcm93WydpZCddOwoJCQkJJG9uZXJvdy0+aWRwb3VsZSA9ICRyb3dbJ2lkcG91bGUnXTsKCQkJCSRvbmVyb3ctPmlkZGl2ID0gJHJvd1snaWRkaXYnXTsKCQkJCS8vJG9uZXJvdy0+ZXF1aXBlPSAkcm93WydlcXVpcGUnXTsKCQkJCSRvbmVyb3ctPmxpYmVxdWlwZT0gICRyb3dbJ2xpYmVxdWlwZSddOwoJCQkJJG9uZXJvdy0+bGliZGl2aXNpb249ICRyb3dbJ2xpYmRpdmlzaW9uJ107CgkJCQkkb25lcm93LT5mcmllbmRseW5hbWU9ICRyb3dbJ2ZyaWVuZGx5bmFtZSddOwoJCQkJJG9uZXJvdy0+bmFtZT0gJHJvd1snbmFtZSddOwoJCQkJJG9uZXJvdy0+dHlwZV9jb21wZXQgPSAkcm93Wydjb2RlX2NvbXBldCddOwoJCQkJLy8kb25lcm93LT52aWV3PSAkdGhpcy0+Y3JlYXRlTGluaygkaWQsICd2aWV3dGVhbXJlc3VsdCcsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS92aWV3LmdpZicsICR0aGlzLT5MYW5nKCdkb3dubG9hZF9wb3VsZV9yZXN1bHRzJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgnY2xlJz0+JHJvd1snY2xlJ10pKSA7CgkJCQkKCQkJCSRvbmVyb3ctPmVkaXRsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0X3RlYW0nLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSk7CgkJCQkkb25lcm93LT5hZGRuZXdsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF90ZWFtJywkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsICR0aGlzLT5MYW5nKCdhZGRtYW51YWxseScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSk7CgkJCQkKCQkJCWlmKCRjb2RlICE9ICdVJykKCQkJCXsKCQkJCQkvLyRjYWxlbmRyaWVyaW1hZ2UgPSAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2NhbGVuZHJpZXIuanBnJywgJHRoaXMtPkxhbmcoJ2Rvd25sb2FkX3BvdWxlX3Jlc3VsdHMnKSwnJywnJywnc3lzdGVtaWNvbicpOwoJCQkJCSRvbmVyb3ctPnJldHJpZXZlX3BvdWxlX3JlbmNvbnRyZXM9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3BvdWxlX3JlbmNvbnRyZXMnLCAkcmV0dXJuaWQsJGNhbGVuZGFySW1hZ2UsIGFycmF5KCdpZHBvdWxlJz0+JHJvd1snaWRwb3VsZSddLCAnaWRkaXYnPT4kcm93WydpZGRpdiddLCAndHlwZV9jb21wZXQnPT4kcm93Wyd0eXBlX2NvbXBldCddKSk7CgkJCQkJJG9uZXJvdy0+Y2xhc3NlbWVudCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2dldFBvdWxlQ2xhc3NlbWVudCcsJHJldHVybmlkLCRwb2RpdW1JbWFnZSwgYXJyYXkoImlkZGl2Ij0+JHJvd1snaWRkaXYnXSwgImlkcG91bGUiPT4kcm93WydpZHBvdWxlJ10sICJyZWNvcmRfaWQiPT4kcm93WydpZCddLCAidHlwZV9jb21wZXQiPT4kcm93Wydjb2RlX2NvbXBldCddKSk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJG9uZXJvdy0+ZWRpdGxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRfdGVhbScsICRyZXR1cm5pZCwkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL3dhcm5pbmcuZ2lmJywgJHRoaXMtPkxhbmcoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSkpOwoJCQkJfQoJCQkJCgkJCQlpZigkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIERlbGV0ZScpKQoJCQkJewoJCQkJCSRvbmVyb3ctPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZScsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddLCAndHlwZV9jb21wZXQnPT4ndGVhbXMnKSwgJHRoaXMtPkxhbmcoJ2RlbGV0ZV9jb25maXJtJykpOwoJCQkJfQoJCQkJCgkJCQkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJCQkJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIAkJCX0KICAJCX0KCgkJJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Jlc3VsdHNmb3VuZHRleHQnKSk7CgkJJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKCQkkc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKCQkkc21hcnR5LT5hc3NpZ24oJ3JldHJpZXZlX3RlYW1zJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV90ZWFtcycsICRyZXR1cm5pZCwgJGNvbnRlbnRzID0gIlLDqWN1cMOpcmF0aW9uIGRlcyDDqXF1aXBlcyAoY2hhbXBpb25uYXQgc2VuaW9ycykiLCBhcnJheSgndHlwZSc9PidNJykpKTsKCQkkc21hcnR5LT5hc3NpZ24oJ3JldHJpZXZlX3RlYW1zX2F1dHJlcycsCgkJCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV90ZWFtcycsICRyZXR1cm5pZCwgJGNvbnRlbnRzID0gIlLDqWN1cMOpcmF0aW9uIGRlcyDDqXF1aXBlcyIpKTsKCQkkc21hcnR5LT5hc3NpZ24oJ2VkaXRfdGVhbScsCgkJCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0X3RlYW0nLCRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJHRoaXMtPkxhbmcoJ2FkZCcpLCAnJywgJycsICdzeXN0ZW1pY29uJykpLiR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRfdGVhbScsICRyZXR1cm5pZCwgCgkJCQkJCQkJICAkdGhpcy0+TGFuZygnYWRkbWFudWFsbHknKSwgCgkJCQkJCQkJICBhcnJheSgpKSk7CgoKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgndGVhbXNjb3Jlcy50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.classement_equipes.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCggJGdDbXMoKSApIGV4aXQ7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CiRyZWNvcmRfaWQgPSAnJzsKJHF1ZXJ5ID0gIlNFTEVDVCBjbC5pZGVxdWlwZSxlcS5mcmllbmRseW5hbWUsZXEubGliZXF1aXBlLGNsLnBvdWxlLGNsLmNsdCxjbC5lcXVpcGUsY2wuam91ZSxjbC5wdHMgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2xhc3NlbWVudCBBUyBjbCwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgQVMgZXEgV0hFUkUgZXEuaWQgPSBjbC5pZGVxdWlwZSBBTkQgY2wuc2Fpc29uID0gPyI7CiRwYXJtc1snc2Fpc29uJ10gPSAkc2Fpc29uOwovL2VuIHBhcmFtZXRyZXMgcG9zc2libGVzIDogCiNsZSBjaGFtcGlvbm5hdCByZWNoZXJjaMOpIG91IG5vbgojdW5lIGVxdWlwZSBwcsOpY2lzZSBvdSBub24KCglpZihpc3NldCgkcGFyYW1zWydyZWNvcmRfaWQnXSkgJiYgJHBhcmFtc1sncmVjb3JkX2lkJ10gIT0nJykKCXsKCQkJCgkJJHF1ZXJ5Lj0iIEFORCBjbC5pZGVxdWlwZSA9ID8iOwoJCSRwYXJhbXNbJ3JlY29yZF9pZCddID0gJHBhcm1zWydpZGVxdWlwZSddOwoJCgl9CgovL29uIGFvcmRvbm5lIGxhIHRhYmxlCiRxdWVyeS49ICIgT1JERVIgQlkgY2wuaWQgQVNDIjsKCgovL29uIGVmZmVjdHVlIGxhIHJlcXVldGUKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwkcGFybXMpOwplY2hvICRxdWVyeTsKJHJvd2FycmF5ID0gYXJyYXkoKTsKaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKT4wKQp7Cgl3aGlsZSgkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJewoJCSRvbmVyb3cgPSBuZXcgU3RkQ2xhc3MoKTsKCQkkb25lcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsKCQkkb25lcm93LT5mcmllbmRseW5hbWUgPSAkcm93WydmcmllbmRseW5hbWUnXTsKCQkkb25lcm93LT5saWJlcXVpcGUgPSAkcm93WydsaWJlcXVpcGUnXTsKCQkkb25lcm93LT5jbHQgPSAkcm93WydjbHQnXTsKCQkkb25lcm93LT5lcXVpcGUgPSAkcm93WydlcXVpcGUnXTsJCQoJCSRyb3dhcnJheVtdICA9ICRvbmVyb3c7CgkJCQoJfQoKfQplbHNlCnsKCWVjaG8gJ1BhcyBkZSByw6lzdWx0YXRzJzsKfQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnY2xhc3NlbWVudC50cGwnKTsKIwojRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKICAgaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3ByZWZzLnBocCcpOwokbm9tX2VxdWlwZXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbm9tX2VxdWlwZXMnKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwokcmVzdWx0PSBhcnJheSgpOwokcGFybXMgPSBhcnJheSgpOwovLyRyb3dhcnJheSA9IGFycmF5KCk7Ci8vJHJvd2FycmF5MSA9IGFycmF5KCk7CiRpPTA7CiRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jYWxlbmRyaWVyIFdIRVJFIGRhdGVfZmluPD1OT1coKSBHUk9VUCBCWSBkYXRlX2RlYnV0IE9SREVSIEJZIGRhdGVfZGVidXQgREVTQyI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoKCWlmKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk+MCkKCXsKCQl3aGlsZSgkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJJGkrKzsKCQkJJGRhdGVfZGVidXQgPSAkcm93WydkYXRlX2RlYnV0J107CgkJCS8vZWNobyAibGEgZGF0ZSBkw6lidXQgZXN0IDoiLiRkYXRlX2RlYnV0OwoJCQkkZGF0ZWFyciA9IGV4cGxvZGUoJy0nLCAkZGF0ZV9kZWJ1dCk7CgkJCSRkYXRlZnIgPSAkZGF0ZWFyclsyXSAuICctJyAuICRkYXRlYXJyWzFdIC4gJy0nIC4gJGRhdGVhcnJbMF07CgkJCQoJCQkkcXVlcnkyID0gIlNFTEVDVCAqLCByZW4uaWQsIGVxLmxpYmVxdWlwZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBBUyByZW4sICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIEFTIGVxIFdIRVJFIGVxLmlkcG91bGUgPSByZW4uaWRwb3VsZSAgQU5EIHJlbi5zYWlzb24gPSBlcS5zYWlzb24gQU5EIChyZW4uc2NvcmVhICE9MCBBTkQgc2NvcmViICE9MCkgIEFORCByZW4uZGF0ZV9ldmVudCA9ID8iOwoJCQkvLyRxdWVyeTIgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG91bGVzX3JlbmNvbnRyZXMgV0hFUkUgZGF0ZV9ldmVudCA9ID8iOwoJCQkvL21vbiBjbHViIHVuaXF1ZW1lbnQgPwoJCQkkcXVlcnkyLj0iIEFORCBjbHViID0gJzEnIjsKCQkJJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJGRhdGVfZGVidXQpKTsKCQkJCgkJCQkKCQkJaWYoJGRicmVzdWx0YXQgJiYgJGRicmVzdWx0YXQtPlJlY29yZENvdW50KCk+MCkKCQkJewoJCQkJCgkJCQkkY29udGVudSA9ICcnOwkJCQkKCQkJCSRjb250ZW51Lj0gIjxoMz5MZXMgcsOpc3VsdGF0cyBkdSAgIi4kZGF0ZWZyLiI8L2gzPiI7CgkJCQkkY29udGVudS49Ijx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkXCI+IjsKCQkJCQoJCQkJd2hpbGUoJHJvdzIgPSAkZGJyZXN1bHRhdC0+RmV0Y2hSb3coKSkKCQkJCXsKCQkJCQkKCQkJCQoJCQkJCQoJCQkJCSRpZD0gJHJvdzJbJ2lkJ107CgkJCQkJJGRhdGVfZXZlbnQ9ICRyb3cyWydkYXRlX2V2ZW50J107CgkJCQkJJGVxdWIgPSAkcm93MlsnZXF1YiddOwoJCQkJCSRlcXVhID0gJHJvdzJbJ2VxdWEnXTsKCQkJCQkkZnJpZW5kbHluYW1lID0gJHJvdzJbJ2ZyaWVuZGx5bmFtZSddOwoJCQkJCSRsaWJlcXVpcGUgPSAkcm93MlsnbGliZXF1aXBlJ107CgkJCQkJLy9lY2hvICJlcXVpcGUgQiBlc3QgOiAiLiRlcXViOwoKCQkJCQkvLyRvbmVyb3ctPmVxdWlwZT0gJHJvd1snZXF1aXBlJ107CgkJCQkJJGxpYmVsbGU9ICAkcm93MlsnbGliZWxsZSddIDsKCQkJCQkKCQkJCQlpZihpc3NldCgkZnJpZW5kbHluYW1lKSAmJiAkZnJpZW5kbHluYW1lICE9JycpCgkJCQkJewoJCQkJCQlpZiAoJGxpYmVxdWlwZSA9PSAkZXF1YSkKCQkJCQkJewoJCQkJCQkJJGVxdWE9ICRyb3cyWydmcmllbmRseW5hbWUnXTsKCQkJCQkJfQoKCQkJCQkJZWxzZXsKCQkJCQkJCSRlcXVhPSAkcm93MlsnZXF1YSddOwoJCQkJCQl9CgoJCQkJCX0KCQkJCQllbHNlewoJCQkJCQkkZXF1YT0gJHJvdzJbJ2VxdWEnXTsKCQkJCQl9CgkJCQkJJHNjb3JlYT0gJHJvdzJbJ3Njb3JlYSddOwoJCQkJCSRzY29yZWI9ICRyb3cyWydzY29yZWInXTsKCQkJCQkKCQkJCQlpZihpc3NldCgkZnJpZW5kbHluYW1lKSAmJiAkZnJpZW5kbHluYW1lICE9JycpCgkJCQkJewoJCQkJCQlpZiAoJGxpYmVxdWlwZSA9PSAkZXF1YikKCQkJCQkJewoJCQkJCQkJJGVxdWI9ICRyb3cyWydmcmllbmRseW5hbWUnXTsKCQkJCQkJfQoKCQkJCQkJZWxzZXsKCQkJCQkJCSRlcXViPSAkcm93MlsnZXF1YiddOwoJCQkJCQl9CgoJCQkJCX0KCQkJCQllbHNlewoJCQkJCQkkZXF1Yj0gJHJvdzJbJ2VxdWInXTsKCQkJCQl9CgkJCQkJJGRldGFpbHM9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX2RldGFpbHNfcmVuY29udHJlcycsICRyZXR1cm5pZCwgJ0TDqXRhaWxzJywgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3cyWydpZCddLCAndGVtcGxhdGUnPT4nMScpKTsKCQkJCQkkY29udGVudS49Ijx0cj4iOwoJCQkJCS8vJGNvbnRlbnUuPSI8dGQ+JGlkPC90ZD4iOwoJCQkJCSRjb250ZW51Lj0iPHRkPiRlcXVhPC90ZD4iOwoJCQkJCSRjb250ZW51Lj0iPHRkPiRzY29yZWE8L3RkPiI7CgkJCQkJJGNvbnRlbnUuPSI8dGQ+JHNjb3JlYjwvdGQ+IjsKCQkJCQkkY29udGVudS49Ijx0ZD4kZXF1YjwvdGQ+IjsKCQkJCQkkY29udGVudS49Ijx0ZD4kZGV0YWlsczwvdGQ+IjsKCQkJCQkkY29udGVudS49IjwvdHI+IjsKCQkJCQkKCQkJCX0KCQkJCQoJCQkJCgkJCQkkY29udGVudS49IjwvdGFibGU+IjsKCQkJCWVjaG8gJGNvbnRlbnU7CgkJCX0KCQkJCgkJCQoJCX0KCQkKCX0KaWYoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkgJiYgJHBhcmFtc1sndGVtcGxhdGUnXSA9PSAnMScpCQp7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZGV0YWlsc19yZW5jb250cmUudHBsJyk7Cn0KIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKICAgaWYgKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsgCglpZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgVXNlJykpCgl7CgkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CgkJcmV0dXJuOwoJfQoJCgovL29uIGluc3RhbmNpZSBsZXMgb25nbGV0cwoKZWNobyAkdGhpcy0+U3RhcnRUYWJoZWFkZXJzKCk7CmlmIChGQUxTRSA9PSBlbXB0eSgkcGFyYW1zWydhY3RpdmVfdGFiJ10pKQogIHsKICAgICR0YWIgPSAkcGFyYW1zWydhY3RpdmVfdGFiJ107CiAgfSBlbHNlIHsKICAkdGFiID0gJ3JlbmNvbnRyZXMnOwogfQkKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignam91ZXVycycsICdKb3VldXJzJywgKCdqb3VldXJzJyA9PSAkdGFiKT90cnVlOmZhbHNlKTsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignZXF1aXBlcycsICdFcXVpcGVzJywgKCdlcXVpcGVzJyA9PSAkdGFiKT90cnVlOmZhbHNlKTsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignY2FsZW5kcmllcicsICdDYWxlbmRyaWVyJywgKCdjYWxlbmRyaWVyJyA9PSAkdGFiKT90cnVlOmZhbHNlKTsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignZmZ0dCcsICdGRlRUJyAsICgnZmZ0dCcgPT0gJHRhYik/dHJ1ZTpmYWxzZSk7CgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3NwaWQnLCAnU1BJRCcgLCAoJ3NwaWQnID09ICR0YWIpP3RydWU6ZmFsc2UpOwoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdjb21wZXRzJywgJ0NvbXDDqXRpdGlvbnMnICwgKCdjb21wZXQnID09ICR0YWIpP3RydWU6ZmFsc2UpOwoJCgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3BvdWxlcycsICdSw6lzdWx0YXRzJywgKCdyZXN1bHRhdHMnID09ICR0YWIpP3RydWU6ZmFsc2UpOwoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdyZWN1cCcsICdSZWN1cMOpcmF0aW9uJywgKCdSw6ljdXDDqXJhdGlvbicgPT0gJHRhYik/dHJ1ZTpmYWxzZSk7CgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3NpdHVhdGlvbicsICdTaXR1YXRpb24gbWVuc3VlbGxlJywgKCdzaXR1YXRpb24nID09ICR0YWIpP3RydWU6ZmFsc2UpOwoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdqb3VybmFsJywgJ0pvdXJuYWwnLCAoJ0pvdXJuYWwnID09ICR0YWIpP3RydWU6ZmFsc2UpOwoJCglpZigkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFNldCBQcmVmcycpKXsKCQllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2NvbmZpZ3VyYXRpb24nLCAnQ29uZmlndXJhdGlvbicgLCAoJ2NvbmZpZ3VyYXRpb24nID09ICR0YWIpP3RydWU6ZmFsc2UpOwoJfQoKZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOwoKZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7CgkKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdqb3VldXJzJywgJHBhcmFtcyk7CiAgICAJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2FjdGlvbi5hZG1pbl9qb3VldXJzX3RhYi5waHAnKTsKICAgCWVjaG8gJHRoaXMtPkVuZFRhYigpOwoKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdlcXVpcGVzJyAsICRwYXJhbXMpOy8vbGVzIMOpcXVpcGVzCiAgICAJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2FjdGlvbi5hZG1pbl90ZWFtc190YWIucGhwJyk7CiAgIAllY2hvICR0aGlzLT5FbmRUYWIoKTsKCgllY2hvICR0aGlzLT5TdGFydFRhYignY2FsZW5kcmllcicsICRwYXJhbXMpOy8vQ2FsZW5kcmllcgogICAgCWluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9hY3Rpb24uYWRtaW5fY2FsZW5kYXJfdGFiLnBocCcpOwogICAJZWNobyAkdGhpcy0+RW5kVGFiKCk7CgogICAgICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdmZnR0JywgJHBhcmFtcyk7Ly9GRlRUCiAgICAJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2FjdGlvbi5hZG1pbl9mZnR0X3RhYi5waHAnKTsKICAgCWVjaG8gJHRoaXMtPkVuZFRhYigpOwkKIAoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJ3NwaWQnICwgJHBhcmFtcyk7Ly9TcGlkCiAgICAJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2FjdGlvbi5hZG1pbl9zcGlkX3RhYi5waHAnKTsKICAgCWVjaG8gJHRoaXMtPkVuZFRhYigpOwoKICAgICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdjb21wZXRzJyAsICRwYXJhbXMpOy8vbGVzIHR5cGVzIGRlIGNvbXDDqXRpdGlvbnMKICAgIAlpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvYWN0aW9uLmFkbWluX2NvbXBldHNfdGFiLnBocCcpOwogICAJZWNobyAkdGhpcy0+RW5kVGFiKCk7IAkKCgllY2hvICR0aGlzLT5TdGFydFRhYigncG91bGVzJyAsICRwYXJhbXMpOy8vcsOpc3VsdGF0cyBkZXMgcG91bGVzCiAgICAJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2FjdGlvbi5hZG1pbl9wb3VsZXNfdGFiMi5waHAnKTsKICAgCWVjaG8gJHRoaXMtPkVuZFRhYigpOwoKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdyZWN1cCcgLCAkcGFyYW1zKTsKICAgIAlpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvYWN0aW9uLmFkbWluX3JlY3VwX3RhYi5waHAnKTsKICAgCWVjaG8gJHRoaXMtPkVuZFRhYigpOwoKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdzaXR1YXRpb24nICwgJHBhcmFtcyk7Ly9zaXR1YXRpb24gbWVuc3VlbGxlCiAgICAJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2FjdGlvbi5hZG1pbl9zaXR1YXRpb25fbWVuc3VlbGxlX3RhYi5waHAnKTsKICAgCWVjaG8gJHRoaXMtPkVuZFRhYigpOwoKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdqb3VybmFsJywgJHBhcmFtcyk7Ly9sZSBqb3VybmFsCiAgICAJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2FjdGlvbi5hZG1pbl9qb3VybmFsX3RhYi5waHAnKTsKICAgCWVjaG8gJHRoaXMtPkVuZFRhYigpOwppZigkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFNldCBQcmVmcycpKXsKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdjb25maWd1cmF0aW9uJyAsICRwYXJhbXMpOwoJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2FjdGlvbi5hZG1pbl9vcHRpb25zX3RhYi5waHAnKTsKCWVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CmVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsKLy9vbiBhIHJlZmVybcOpIGxlcyBvbmdsZXRzCgovL2VjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5fcGFuZWwudHBsJyk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.delete.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBEZWxldGUnKSkKCXsKCSRwYXJhbXMgPSBhcnJheSgnbWVzc2FnZSc9PkxhbmcoJ25lZWRwZXJtaXNzaW9uJyksICdhY3RpdmVfdGFiJyA9PiAndXNlcnMnKTsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCcnLCAkcGFyYW1zKTsKCX0KCQokZXJyb3IgPSAwOwokZGVzaWduYXRpb24gPSAnJzsKCSRyZWNvcmRfaWQgPSAnJzsKCWlmIChpc3NldCgkcGFyYW1zWydyZWNvcmRfaWQnXSkgJiYgJHBhcmFtc1sncmVjb3JkX2lkJ10gIT0gJycpCgl7CgkJJHJlY29yZF9pZCA9ICRwYXJhbXNbJ3JlY29yZF9pZCddOwoJfQoJZWxzZQoJewoJCQkkZXJyb3IrKzsKCX0KCSR0eXBlX2NvbXBldCA9ICcnOwoJaWYoaXNzZXQoJHBhcmFtc1sndHlwZV9jb21wZXQnXSkgJiYgJHBhcmFtc1sndHlwZV9jb21wZXQnXSAhPScnKQoJewoJCQkgJHR5cGVfY29tcGV0ID0gJHBhcmFtc1sndHlwZV9jb21wZXQnXTsKCX0KCWVsc2UKCXsKCQkJJGVycm9yKys7Cgl9CgkJCgkJaWYgKCRlcnJvcj09MCkKCQl7CgkJCXN3aXRjaCgkdHlwZV9jb21wZXQpCgkJCXsKCQkJCWNhc2UgICJzcGlkIiA6CgoJCQkJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIFdIRVJFIGlkID0gPyI7CgkJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJlY29yZF9pZCkpOwoJCQkJCQoJCQkJCWlmKCEkZGJyZXN1bHQpCgkJCQkJewoJCQkJCQkkZGVzaWduYXRpb24uPSAkZGItPkVycm9yTXNnKCk7CgkJCQkJCQoJCQkJCX0KCQkJCQllbHNlCgkJCQkJewoJCQkJCQkkZGVzaWduYXRpb24uPSJSw6lzdWx0YXQgc3VwcHJpbcOpIjsKCQkJCQkJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJCQkJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzcGlkJyk7CgkJCQkJfQkJCQoKCQkJCWJyZWFrOwoJCQkJY2FzZSAiZmZ0dCIgOgoKCgkJCQkJLy9Ob3cgcmVtb3ZlIHRoZSBhcnRpY2xlCgkJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIFdIRVJFIGlkID0gPyI7CgkJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJlY29yZF9pZCkpOwoKCQkJCQkkdGhpcy0+U2V0TWVzc2FnZSgnUsOpc3VsdGF0IHN1cHByaW3DqScpOwoJCQkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2ZmdHQnKTsKCQkJCWJyZWFrOwoJCQkJY2FzZSAidHlwZV9jb21wZXQiIDoKCgoJCQkJCS8vTm93IHJlbW92ZSB0aGUgYXJ0aWNsZQoJCQkJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgV0hFUkUgaWQgPSA/IjsKCQkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmVjb3JkX2lkKSk7CgoJCQkJCSR0aGlzLT5TZXRNZXNzYWdlKCdUeXBlIGRlIGNvbXDDqXRpdGlvbiBzdXBwcmltw6llJyk7CgkJCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignY29tcGV0cycpOwoJCQkJYnJlYWs7CgkJCQljYXNlICJ0ZWFtcyIgOiAKCQkJCQkkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgV0hFUkUgaWQgPSA/IjsKCQkJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmVjb3JkX2lkKSk7CgoJCQkJCSR0aGlzLT5TZXRNZXNzYWdlKCdFcXVpcGUgc3VwcHJpbcOpZScpOwoJCQkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2VxdWlwZXMnKTsKCQkJCWJyZWFrOwoJCQkJCgkJCQljYXNlICJjYWxlbmRyaWVyIiA6IAoJCQkJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2FsZW5kcmllciBXSEVSRSBpZCA9ID8iOwoJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCgkJCQkJJHRoaXMtPlNldE1lc3NhZ2UoJ0RhdGUgc3VwcHJpbcOpZScpOwoJCQkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2NhbGVuZHJpZXInKTsKCQkJCWJyZWFrOwoJCQkJCgkJCQljYXNlICJwb3VsZXMiIDogCgkJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBXSEVSRSBpZCA9ID8iOwoJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCgkJCQkJJHRoaXMtPlNldE1lc3NhZ2UoJ01hdGNoIHN1cHByaW3DqScpOwoJCQkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3BvdWxlcycpOwoJCQkJYnJlYWs7CgkJCQkKCQkJCWNhc2UgInNpdF9tZW5zIiA6CgkJCQkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyBXSEVSRSBpZCA9ID8iOwoJCQkJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCQkJCQkKCQkJCQkkdGhpcy0+U2V0TWVzc2FnZSgnc2l0dWF0aW9uIHN1cHByaW3DqWUnKTsKCQkJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzaXR1YXRpb24nKTsKCQkJCWJyZWFrOwkKCQkJfQoJCX0KCQkKCQkKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.delete_contact.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCQlpZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKJG1lc3NhZ2UgPSAnJzsKCgkJaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIE1hbmFnZScpKQoJCXsKCQkkcGFyYW1zID0gYXJyYXkoJ21lc3NhZ2UnPT5MYW5nKCduZWVkcGVybWlzc2lvbicpLCAnYWN0aXZlX3RhYicgPT4gJ3VzZXJzJyk7CgkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsJycsICRwYXJhbXMpOwoJCS8qZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CgkJcmV0dXJuOyovCgkJfQoKCQkkcmVjb3JkX2lkID0gJyc7CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ3JlY29yZF9pZCddKSkKCQl7CgkJCSRyZWNvcmRfaWQgPSAkcGFyYW1zWydyZWNvcmRfaWQnXTsKCQl9CgkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jb21tIFdIRVJFIGlkID0gPyI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcmVjb3JkX2lkKSk7CgkJaWYoISRkYnJlc3VsdCl7CgkJCSRtZXNzYWdlLj0kZGItPkVycm9yTXNnKCk7CgkJfQoJCQoKJHRoaXMtPlNldE1lc3NhZ2UoIiRtZXNzYWdlIik7CiR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.display_unable_players.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7Ci8vcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19maWxlX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwoKJG1vaXNfY291cmFudCA9IGRhdGUoJ24nKTsKJGFubmVlX2NvdXJhbnRlID0gZGF0ZSgnWScpOwokc21hcnR5LT5hc3NpZ24oJ2Rpc3BsYXlfZW5hYmxlX3BsYXllcnMnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkbWluX2pvdWV1cnNfcmVjdXBfdGFiJywgJHJldHVybmlkLCAnSm91ZXVycyBhY3RpZnMnKSk7CgoKJHJlc3VsdD0gYXJyYXkgKCk7CiRxdWVyeT0gIlNFTEVDVCBpZCwgQ09OQ0FUX1dTKCcgJyxub20sIHByZW5vbSkgQVMgam91ZXVyLCBsaWNlbmNlLCBhY3RpZiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzICBXSEVSRSBhY3RpZiA9ICcwJyAgT1JERVIgQlkgaWQgQVNDIjsKLy9lY2hvICRxdWVyeTsKJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKJHJvd2NsYXNzPSAncm93MSc7CiRyb3dhcnJheT0gYXJyYXkgKCk7CmlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQogICAgICB7CgkKCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCSRvbmVyb3ctPmlkPSAkcm93WydpZCddOwoJJG9uZXJvdy0+am91ZXVyPSAkcm93Wydqb3VldXInXTsKCQoJaWYoJHJvd1snYWN0aWYnXSA9PScxJyl7CgkJJG9uZXJvdy0+ZWRpdGxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FibGVfcGxheWVyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL3RydWUuZ2lmJywgJHRoaXMtPkxhbmcoJ3VuYWJsZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10sICJhY3RpZiI9PiIwIikpOwoJfQoJZWxzZSB7CgkJJG9uZXJvdy0+ZWRpdGxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FibGVfcGxheWVyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCdlbmFibGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddLCJhY3RpZiI9PiIxIikpOwoJfQoJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCSRyb3dhcnJheVtdPSAkb25lcm93OwogICAgICB9CiAgfQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7CiRzbWFydHktPmFzc2lnbigncmV0cmlldmVfdXNlcnMnLCAKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV91c2VycycsICRyZXR1cm5pZCwnUsOpY3Vww6lyYXRpb24gZGUgdG91cyBsZXMgam91ZXVycycpKTsKJHNtYXJ0eS0+YXNzaWduKCdjcmVhdGVsaW5rJywgCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnY3JlYXRlX25ld191c2VyMycsICRyZXR1cm5pZCwKCQkJCSAgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJHRoaXMtPkxhbmcoJ2FkZG5ld3NoZWV0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSkuCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnY3JlYXRlX25ld191c2VyMycsICRyZXR1cm5pZCwgCgkJCQkgICR0aGlzLT5MYW5nKCdhZGRuZXdzaGVldCcpLCAKCQkJCSAgYXJyYXkoKSkpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCd1bmFibGVfcGxheWVycy50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.doublons.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyAgICAgICAgICAgICAgICAgICAgICBHRVNUSU9OIERFUyBET1VCTE9OUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIwojIyMgQ2V0dGUgcGFnZSBnw6hyZSBsZXMgZG91YmxvbnMgcXVpIG5lIHBldXZlbnQgcGFzIMOqdHJlIHByaXMgZW4gY29tcHRlIGRzIGxlIHNwaWQgICMjIwojIyMgICAgICAgIE3Dqm1lIGpvdWV1ciAgICAgICAgKGxpY2VuY2UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjCiMjIyAgICAgICAgTcOqbWUgYWR2ZXJzYWlyZSAgICAoYWR2bm9tcHJlKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyMKIyMjICAgICAgICBNw6ptZSBEYXRlICAgICAgICAgIChkYXRlX2V2ZW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIwojIyMgICAgICAgIE3Dqm1lIHZpY3RvaXJlICAgICAgKHZpY3RvaXJlIDogMCBvdSAxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjCiMjIyBWb2lyIHNpIG9uIGFqb3V0ZXJhIGVuc3VpdGUgbGUgbnVtw6lybyBkZSBqb3VybsOpZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwppZighaXNzZXQoJGdDbXMpICkgZXhpdDsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKLy9kYW5zIGNlIHNjcmlwdCBvbiByZWNoZXJjaGUgbGVzIGRvdWJsb25zIGRlIHJlbmNvbnRyZSBkYW5zIGxhIEZGVFQgcG91ciBsZXMgaW5jbHVyZSBkYW5zIGxhIGJhc2Ugc3BpZAovL29uIHJlY2hlcmNoZSBkb25jIGQnYWJvcmQgbGVzICJkb3VibG9ucyAiIGRlIGxhIEZGVFQKLy9leCA6IHVuIGpvdXIgcGV1dCByZW5jb250cmVyIGRldXggZm9pcyB1biBtw6ptZSBqb3VldXIgZGFucyB1bmUgZXByZXV2ZSBpbmRpdmlkdWVsbGUKJGRlc2lnbmF0aW9uID0nJzsKLyoKJHF1ZXJ5ID0gIlNFTEVDVCBESVNUSU5DVCBsaWNlbmNlLCBkYXRlX2V2ZW50LCBhZHZub21wcmUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyBhcyB0MSBXSEVSRSAgRVhJU1RTICgKICAgICAgICAgICAgICBTRUxFQ1QgKgogICAgICAgICAgICAgIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXMgdDIKICAgICAgICAgICAgICBXSEVSRSB0MS5pZCA8PiB0Mi5pZAogICAgICAgICAgICAgIEFORCAgIHQxLmxpY2VuY2UgPSB0Mi5saWNlbmNlCiAgICAgICAgICAgICAgQU5EICAgdDEuZGF0ZV9ldmVudCA9IHQyLmRhdGVfZXZlbnQKICAgICAgICAgICAgICBBTkQgICB0MS5hZHZub21wcmUgPSB0Mi5hZHZub21wcmUgKSBBTkQgdDEuc2Fpc29uID0gPyI7CgoqLwokcXVlcnkgPSAiU0VMRUNUIGxpY2VuY2UsIGRhdGVfZXZlbnQsIGFkdm5vbXByZSwgdmQsY291bnQoKikgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyBXSEVSRSBzYWlzb24gPSA/IEFORCBudW1qb3VybiAhPTAgR1JPVVAgQlkgZGF0ZV9ldmVudCwgbGljZW5jZSwgYWR2bm9tcHJlLCB2ZCBIQVZJTkcgY291bnQoKikgPiAxIjsKCi8vJHF1ZXJ5ID0gIlNFTEVDVCBwLmxpY2VuY2UsIHAuZGF0ZV9ldmVudCwgcC5hZHZub21wcmUsc3AuZGF0ZV9ldmVudCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIEFTIHAgTEVGVCBKT0lOICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgQVMgc3AgT04gcC5saWNlbmNlID0gc3AubGljZW5jZSBXSEVSRSBwLmRhdGVfZXZlbnQgPSBzcC5kYXRlX2V2ZW50IEFORCBwLmFkdm5vbXByZSA9IHNwLm5vbSBBTkQgcC5zYWlzb24gID0gPyI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHNhaXNvbl9jb3VyYW50ZSkpOwovL29uIHNhaXQgcXVlIGNoYXF1ZSBlbnJlZ2lzdHJlbWVudCBlbiBkb3VibG9ucyBkb2l0IMOqdHJlIGR1cGxpcXXDqQovL2lsIGVzdCBtw6ptZSBpbnV0aWxlIGRlIGZhaXJlIHVuZSB2w6lyaWZpY2F0aW9uCiRsaWduZXMgPSAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk7CmVjaG8gImxlIG5iIGRlIGxpZ25lcyBldHMgOiIuJGxpZ25lczsKCWlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKICAJewogICAgCQl3aGlsZSAoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQogICAgICAJCXsKCQkvL29uIHByZW5kIGxlcyBkb25uw6llcyBuw6ljZXNzYWlyZXMgcG91ciBsZSBzcGlkIGFmaW4gZGUgbGVzIGluc8OpcmVyCgkJCSRsaWNlbmNlID0gJHJvd1snbGljZW5jZSddOwoJCQkkZGF0ZV9ldmVudCA9ICRyb3dbJ2RhdGVfZXZlbnQnXTsKCQkJJGFkdm5vbXByZSA9ICRyb3dbJ2Fkdm5vbXByZSddOwoJCQkkdmljdG9pcmUgPSAkcm93Wyd2ZCddOwoJCQkKCQkJJHF1ZXJ5MiA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIChpZCkgVkFMVUVTICgnJykiOwoJCS8vCSRkYnJlc3VsdGF0MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCBhcnJheSgpKTsKCQkJCgkJCQoJCgkJfQoJCgl9CgllbHNlCgl7CgkJJGRlc2lnbmF0aW9uLj0iSm91ZXVyIGludHJvdXZhYmxlIjsKCQkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwoJfQojCiNFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.do_add_all_sit_mens.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwokcGhhc2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKTsKCglpZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgTWFuYWdlJykpCgl7CgkJJGRlc2lnbmF0aW9uLj0kdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKTsKCQkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignc2l0dWF0aW9uJyk7Cgl9CgkkYW5uZWUgPSBkYXRlKCdZJyk7Ci8vb24gcsOpY3Vww6hyZSBsZXMgdmFsZXVycwovL3BvdXIgbCdpbnN0YW50IHBhcyBkJ2VycmV1cgokZXJyb3IgPSAwOwokaSA9IDA7CgkJCgkJJGxpY2VuY2UgPSAnJzsKCQlpZiAoaXNzZXQoJHBhcmFtc1snbGljZW5jZSddKSAmJiAkcGFyYW1zWydsaWNlbmNlJ10gIT0gJycpCgkJewoJCQkkbGljZW5jZSA9ICRwYXJhbXNbJ2xpY2VuY2UnXTsKCQl9CgkJZWxzZQoJCXsKCQkJJGVycm9yKys7CgkJfQovL3Zhcl9kdW1wKCRsaWNlbmNlKTsKCQkkY2hvaXhfbW9pcyA9ICcnOwoJCWlmIChpc3NldCgkcGFyYW1zWydjaG9peF9tb2lzJ10pICYmICRwYXJhbXNbJ2Nob2l4X21vaXMnXSAhPSAnJykKCQl7CgkJCSRjaG9peF9tb2lzID0gJHBhcmFtc1snY2hvaXhfbW9pcyddOwoJCQkvLyRlcnJvcisrOwoJCX0KCQllbHNlCgkJewoJCQkkZXJyb3IrKzsKCQl9CgkJaWYoJGVycm9yPjApCgkJewoJCQkkdGhpcy0+U2V0TWVzc2FnZSgncGFyYW3DqHRyZXMgbWFucXVhbnRzJyk7CgkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3NpdHVhdGlvbicpOwoJCX0KCQkKCQlmb3JlYWNoKCRsaWNlbmNlIGFzICRrZXk9PiR2YWx1ZSkKCQl7CgkJCS8vZWNobyAka2V5LiI9PiIuJHZhbHVlLiI8YnIvPiI7CgkJCWlmKCAkdmFsdWUgIT0wIHx8ICR2YWx1ZSAhPScnKQoJCQkKCQkJewoJCQkJCgkJCQkkcXVlcnkgPSAiU0VMRUNUIG1vaXMsIGFubmVlLCBsaWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIFdIRVJFIGxpY2VuY2UgPSA/IEFORCBtb2lzID0gPyBBTkQgYW5uZWUgPSA/IjsKCQkJCS8vZWNobyAkcXVlcnk7CgkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgka2V5LCRjaG9peF9tb2lzLCRhbm5lZSkpOwoJCQkKCQkJCQlpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPT0wKQoJCQkJCXsKCQkJCQkJCgkJCQkJCSRxdWVyeTIgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIChpZCwgZGF0ZWNyZWF0ZWQsIGRhdGVtYWosIG1vaXMsIGFubmVlLCBwaGFzZSwgbGljZW5jZSwgbm9tLCBwcmVub20sIHBvaW50cykgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkJCQkvL2VjaG8gJHF1ZXJ5MjsKCQkJCQkJJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJG5vdywgJG5vdywgJGNob2l4X21vaXMsICRhbm5lZSwgJHBoYXNlLCAka2V5LCRub20sICRwcmVub20sJHZhbHVlKSk7CgkJCQkJCSRpKys7CgkJCQkJCQoJCQkJCX0KCQkJfQoJCQkJCgkJfQoKJGRlc2lnbmF0aW9uLj0kaS4iIHNpdHVhdGlvbihzKSBtb2RpZmnDqWUocykiOwokdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CiR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3NpdHVhdGlvbicpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.do_add_compet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwoKCWlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKCXsKCQkkZGVzaWduYXRpb24gLj0kdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKTsKCQkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignY29tcGV0cycpOwoJfQovL29uIHLDqWN1cMOocmUgbGVzIHZhbGV1cnMKLy9wb3VyIGwnaW5zdGFudCBwYXMgZCdlcnJldXIKJGVycm9yID0gMDsKCQkKCQkkdHlwZV9jb21wZXQgPSAnJzsKCQlpZiAoaXNzZXQoJHBhcmFtc1sndHlwZV9jb21wZXQnXSkgJiYgJHBhcmFtc1sndHlwZV9jb21wZXQnXSAhPSAnJykKCQl7CgkJCSR0eXBlX2NvbXBldCA9ICRwYXJhbXNbJ3R5cGVfY29tcGV0J107CgkJfQoJCWVsc2UKCQl7CgkJCSRlcnJvcisrOwoJCX0KCQkkZGF0ZV9kZWJ1dCA9ICcnOwoJCWlmIChpc3NldCgkcGFyYW1zWydkYXRlX2RlYnV0J10pICYmICRwYXJhbXNbJ2RhdGVfZGVidXQnXSAhPScnKQoJCXsKCQkJJGRhdGVfZGVidXQgPSAkcGFyYW1zWydkYXRlX2RlYnV0J107CgkJfQoJCWVsc2UKCQl7CgkJCSRlcnJvcisrOwoJCX0KCQkkZGF0ZV9maW4gPSAnJzsKCQlpZiAoaXNzZXQoJHBhcmFtc1snZGF0ZV9maW4nXSkgJiYgJHBhcmFtc1snZGF0ZV9maW4nXSAhPScnKQoJCXsKCQkJJGRhdGVfZmluID0gJHBhcmFtc1snZGF0ZV9maW4nXTsKCQl9CgkJZWxzZQoJCXsKCQkJJGRhdGVfZmluID0gJGRhdGVfZGVidXQ7CgkJfQoJCSRudW1qb3VybiA9ICcnOwoJCWlmIChpc3NldCgkcGFyYW1zWydudW1qb3VybiddKSAmJiAkcGFyYW1zWydudW1qb3VybiddICE9JycpCgkJewoJCQkkbnVtam91cm4gPSAkcGFyYW1zWydudW1qb3VybiddOwoJCX0KCQllbHNlCgkJewoJCQkkZXJyb3IrKzsKCQl9CgkJCgkJCgkJLy9vbiBjYWxjdWxlIGxlIG5iIGQnZXJyZXVyCgkJaWYoJGVycm9yPjApCgkJewoJCQkkdGhpcy0+U2V0bWVzc2FnZSgnUGFyYW1ldHJlcyByZXF1aXMgbWFucXVhbnRzICEnKTsKCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignY29tcGV0cycpOwoJCX0JCQoJCQoJCQoJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2FsZW5kcmllciAoaWQsIHR5cGVfY29tcGV0LCBkYXRlX2RlYnV0LCBkYXRlX2ZpbiwgbnVtam91cm4pIFZBTFVFUyAoJycsID8sID8sID8sID8pIjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdHlwZV9jb21wZXQsJGRhdGVfZGVidXQsICRkYXRlX2ZpbiwgJG51bWpvdXJuKSk7CgkJCgkJCWlmKCEkZGJyZXN1bHQpCgkJCXsKCQkJCSRkZXNpZ25hdGlvbiA9ICRkYi0+RXJyb3JNc2coKTsKCQkJCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCQkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2NvbXBldHMnKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKCQkJCSRzdGF0dXMgPSAnT2snOwoJCQkJJGRlc2lnbmF0aW9uID0gIlVuZSBub3V2ZWxsZSBkYXRlIGR1IGNhbGVuZHJpZXIgYSDDqXTDqSBlbnRyw6llIjsKCQkJCSRhY3Rpb24gPSAnZG9fYWRkX2NvbXBldCc7CgkJCQlwaW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsICRkZXNpZ25hdGlvbiwkYWN0aW9uKTsKCQkJfQoJCQoKJHRoaXMtPlNldE1lc3NhZ2UoJ0RhdGUgZW5yZWdpc3Ryw6llICEnKTsKJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignY29tcGV0cycpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.do_add_sit_mens.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwokcGhhc2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKTsKCglpZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgTWFuYWdlJykpCgl7CgkJJGRlc2lnbmF0aW9uLj0kdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKTsKCQkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignc2l0dWF0aW9uJyk7Cgl9CgkkYW5uZWUgPSBkYXRlKCdZJyk7CgkkbW9pcyA9IGRhdGUoJ24nKTsKCQovL29uIHLDqWN1cMOocmUgbGVzIHZhbGV1cnMKLy9wb3VyIGwnaW5zdGFudCBwYXMgZCdlcnJldXIKJGVycm9yID0gMDsKJGkgPSAwOwoJCQoJCSRsaWNlbmNlID0gJyc7CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2xpY2VuY2UnXSkgJiYgJHBhcmFtc1snbGljZW5jZSddICE9ICcnKQoJCXsKCQkJJGxpY2VuY2UgPSAkcGFyYW1zWydsaWNlbmNlJ107CgkJfQoJCWVsc2UKCQl7CgkJCSRlcnJvcisrOwoJCX0KCQkkbm9tID0gJyc7CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ25vbSddKSAmJiAkcGFyYW1zWydub20nXSAhPSAnJykKCQl7CgkJCSRub20gPSAkcGFyYW1zWydub20nXTsKCQl9CgkJCgkJJHByZW5vbSA9ICcnOwoJCWlmIChpc3NldCgkcGFyYW1zWydwcmVub20nXSkgJiYgJHBhcmFtc1sncHJlbm9tJ10gIT0gJycpCgkJewoJCQkkcHJlbm9tID0gJHBhcmFtc1sncHJlbm9tJ107CgkJfQoJCQoJCQoJCSRtb250aCA9ICcnOwoJCWlmIChpc3NldCgkcGFyYW1zWydtb250aCddKSAmJiAkcGFyYW1zWydtb250aCddICE9ICcnKQoJCXsKCQkJJG1vbnRoID0gJHBhcmFtc1snbW9udGgnXTsKCQl9CgkJCgkJZWxzZQoJCXsKCQkJJGVycm9yKys7CgkJfQoJCQoJCWlmKCRlcnJvcj4wKQoJCXsKCQkJJHRoaXMtPlNldE1lc3NhZ2UoJ3BhcmFtw6h0cmVzIG1hbnF1YW50cycpOwoJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzaXR1YXRpb24nKTsKCQl9CgkJZm9yZWFjaCgkbW9udGggYXMgJGtleT0+JHZhbHVlKQoJCXsKCQkJCgkJaWYoJHBoYXNlID09MSkKCQl7CgkJCSRhbm5lZV9yZWYgPSAkYW5uZWU7CgkJfQoJCWVsc2VpZigkcGhhc2UgPT0yKQoJCXsKCQkJaWYoJGtleSA+PTkgJiYgJGtleSA8PTEyKQoJCQl7CgkJCQkkYW5uZWVfcmVmID0gJGFubmVlLTE7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkYW5uZWVfcmVmID0gJGFubmVlOwoJCQl9CgkJfQoJCQkkcXVlcnkgPSAiU0VMRUNUIG1vaXMsIGFubmVlLCBsaWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIFdIRVJFIGxpY2VuY2UgPSA/IEFORCBtb2lzID0gPyBBTkQgYW5uZWUgPSA/IjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UsJGtleSwkYW5uZWVfcmVmKSk7CgkJCQoJCQkJaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKT09MCkKCQkJCXsKCQkJCQkKCQkJCQkKCQkJCQlpZiggJHZhbHVlID4wICkKCQkJCQl7CgkJCQkJCQoJCQkJCSRxdWVyeTIgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIChpZCwgZGF0ZWNyZWF0ZWQsIGRhdGVtYWosIG1vaXMsIGFubmVlLCBwaGFzZSwgbGljZW5jZSwgbm9tLCBwcmVub20sIHBvaW50cykgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkJCS8vZWNobyAkcXVlcnkyOwoJCQkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsIGFycmF5KCRub3csICRub3csICRrZXksICRhbm5lZV9yZWYsICRwaGFzZSwgJGxpY2VuY2UsJG5vbSwgJHByZW5vbSwkdmFsdWUpKTsKCQkJCQkkaSsrOwoJCQkJCX0KCQkJCX0KCQkJCS8qCgkJCQllbHNlaWYoJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPT0xKQoJCQkJewoJCQkJCS8vSWwgeSBhIGTDqWrDoCB1biBlbnJlZ2lzdHJlbWVudCwgZXN0LWlsIGNvbXBsZXQgPwoJCQkJCQoJCQkJCWlmKCR2YWx1ZSA+MCkKCQkJCQl7CgkJCQkJCSRxdWVyeTMgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyBTRVQgcG9pbnRzID0gPyBXSEVSRSBsaWNlbmNlID0gPyBBTkQgbW9pcyA9ID8iOwoJCQkJCQkkZGJyZXMgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MywgYXJyYXkoJHZhbHVlLCRsaWNlbmNlLCRrZXkpKTsKCQkJCQl9CgkJCQkJCgkJCQl9CgkJCQkqLwoJCX0KCiRkZXNpZ25hdGlvbiA9ICRpLiIgc2l0dWF0aW9uKHMpIG1vZGlmacOpZShzKSI7CiR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignc2l0dWF0aW9uJyk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.do_add_type_compet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwoKCWlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKCXsKCQkkZGVzaWduYXRpb24gLj0kdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKTsKCQkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignY29tcGV0cycpOwoJfQovL29uIHLDqWN1cMOocmUgbGVzIHZhbGV1cnMKLy9wb3VyIGwnaW5zdGFudCBwYXMgZCdlcnJldXIKJGRlc2lnbmF0aW9uID0gJyc7CiRlcnJvciA9IDA7CgkJJG5hbWUgPSAnJzsKCQlpZiAoaXNzZXQoJHBhcmFtc1snbmFtZSddKSAmJiAkcGFyYW1zWyduYW1lJ10gIT0nJykKCQl7CgkJCSRuYW1lID0gJHBhcmFtc1snbmFtZSddOwoJCX0KCQllbHNlCgkJewoJCQkkZXJyb3IrKzsKCQl9CgkJJGNvZGVfY29tcGV0ID0gJyc7CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2NvZGVfY29tcGV0J10pICYmICRwYXJhbXNbJ2NvZGVfY29tcGV0J10gIT0gJycpCgkJewoJCQkkY29kZV9jb21wZXQgPSAkcGFyYW1zWydjb2RlX2NvbXBldCddOwoJCX0KCQllbHNlCgkJewoJCQkkZXJyb3IrKzsKCQl9CgkJJGNvZWZmaWNpZW50ID0gJyc7CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2NvZWZmaWNpZW50J10pICYmICRwYXJhbXNbJ2NvZWZmaWNpZW50J10gIT0nJykKCQl7CgkJCSRjb2VmZmljaWVudCA9ICRwYXJhbXNbJ2NvZWZmaWNpZW50J107CgkJfQoJCWVsc2UKCQl7CgkJCSRlcnJvcisrOwoJCX0KCQkkaW5kaXZzID0gJyc7CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2luZGl2cyddKSAmJiAkcGFyYW1zWydpbmRpdnMnXSAhPScnKQoJCXsKCQkJJGluZGl2cyA9ICRwYXJhbXNbJ2luZGl2cyddOwoJCX0KCQllbHNlCgkJewoJCQkkZXJyb3IrKzsKCQl9CgkJCgkJCgkJLy9vbiBjYWxjdWxlIGxlIG5iIGQnZXJyZXVyCgkJaWYoJGVycm9yPjApCgkJewoJCQkkdGhpcy0+U2V0bWVzc2FnZSgnUGFyYW1ldHJlcyByZXF1aXMgbWFucXVhbnRzICEnKTsKCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignY29tcGV0cycpOwoJCX0JCQoJCSRlZGl0ID0gJyc7CgkJaWYoaXNzZXQoJHBhcmFtc1snZWRpdCddKSAmJiAkcGFyYW1zWydlZGl0J10gPT0nT3VpJykKCQl7CgkJCS8vb24gcmVnYXJkZSBsZSByZWNvcmRfaWQgcXVpIGVzdCBlbiBwYXJhbWV0cmUKCQkJaWYoaXNzZXQoJHBhcmFtc1sncmVjb3JkX2lkJ10pICYmICRwYXJhbXNbJ3JlY29yZF9pZCddICE9ICcnKQoJCQl7CgkJCQkkcmVjb3JkX2lkPSAkcGFyYW1zWydyZWNvcmRfaWQnXTsKCQkJfQoJCQkKCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgU0VUIG5hbWUgPSA/LCBjb2RlX2NvbXBldCA9ID8sIGNvZWZmaWNpZW50ID0gPywgaW5kaXZzID0gPyBXSEVSRSBpZCA9ID8iOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbmFtZSwgJGNvZGVfY29tcGV0LCAkY29lZmZpY2llbnQsICRpbmRpdnMsICRyZWNvcmRfaWQpKTsKCQkJJGRlc2lnbmF0aW9uLj0iQ29tcMOpdGl0aW9uIG1vZGlmacOpZSI7CgkJCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCQkJLy8kdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdjb21wZXRzJyk7CgkJfQoJCWVsc2UKCQl7CgkJCgkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyAoaWQsIG5hbWUsIGNvZGVfY29tcGV0LCBjb2VmZmljaWVudCwgaW5kaXZzKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/KSI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5hbWUsJGNvZGVfY29tcGV0LCAkY29lZmZpY2llbnQsICRpbmRpdnMpKTsKCQkKCQkJaWYoISRkYnJlc3VsdCkKCQkJewoJCQkJJGRlc2lnbmF0aW9uID0gJGRiLT5FcnJvck1zZygpOwoJCQkJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJCQkvLwkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdjb21wZXRzJyk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CgkJCQkkc3RhdHVzID0gJ09rJzsKCQkJCSRkZXNpZ25hdGlvbiA9ICJVbmUgbm91dmVsbGUgY29tcMOpdGl0aW9uIGEgw6l0w6kgZW50csOpZSI7CgkJCQkkYWN0aW9uID0gJ2RvX2FkZF90eXBlX2NvbXBldGl0aW9uJzsKCQkJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywgJGRlc2lnbmF0aW9uLCRhY3Rpb24pOwoJCQl9CgkJCgkJfQoKJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwokdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdjb21wZXRzJyk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.do_create_contact.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIGlmICghaXNzZXQoJGdDbXMpKSBleGl0OwpkZWJ1Z19kaXNwbGF5KCRwYXJhbXMsJ1BhcmFtZXRlcnMnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwokbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CiRtZXNzYWdlID0gJyc7CiAgIAogICBpZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKSAKCXsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsJ2RlZmF1bHQnLCAkcmV0dXJuaWQpOwoJfQoJCgkvLyAxIC0gb24gdsOpcmlmaWUgbGVzIGNoYW1wcyBwYXNzw6lzCgkkaWRfdXNlciA9ICcnOwoJLyppZiAoaXNzZXQoJHBhcmFtc1snaWRfdXNlciddKSkKCQl7CgkJCSRpZF91c2VyID0gJHBhcmFtc1snaWRfdXNlciddOwoJCX0KCSovCgkkbGljZW5jZSA9ICcnOwoJaWYgKGlzc2V0ICgkcGFyYW1zWydsaWNlbmNlJ10pKQoJCXsKCQkJJGxpY2VuY2UgPSAkcGFyYW1zWydsaWNlbmNlJ107CgkJfQoJJHR5cGVfY29udGFjdCA9ICcnOwoJaWYgKGlzc2V0KCRwYXJhbXNbJ3R5cGVfY29udGFjdCddKSkKCXsKCSAgJHR5cGVfY29udGFjdCA9ICRwYXJhbXNbJ3R5cGVfY29udGFjdCddOwoJfQoJCglpZiAoaXNzZXQoJHBhcmFtc1snY29udGFjdCddKSAmJiAhZW1wdHkoJHBhcmFtc1snY29udGFjdCddKSkKCQl7CgkJCWlmKCR0eXBlX2NvbnRhY3Q9PSdlbWFpbCcpewoJCQkJaWYoIWlzX2VtYWlsKCRwYXJhbXNbJ2NvbnRhY3QnXSkpewoJCQkJCSRtZXNzYWdlLj0iTFwnYWRyZXNzZSBlbWFpbCBlc3QgaW5jb3JyZWN0ZSI7CgkJCQkJJHRoaXMtPlNldE1lc3NhZ2UoIiRtZXNzYWdlIik7CgkJCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwoJCQkJfQoJCQkJZWxzZXsKCQkJCQkkY29udGFjdCA9ICRwYXJhbXNbJ2NvbnRhY3QnXTsKCQkJCX0KCQkJfQoJCQllbHNlewoJCQkJJGNvbnRhY3QgPSAkcGFyYW1zWydjb250YWN0J107CgkJCX0KCQl9CgkJZWxzZXsKCQkJLy9sZSBjb250YWN0IGVzdCB2aWRlLCBjJ2VzdCBwYXMgYm9uLgoJCX0KCQkKCQkKCSRkZXNjcmlwdGlvbiA9ICcnOwoJaWYgKGlzc2V0ICgkcGFyYW1zWydkZXNjcmlwdGlvbiddKSkKCQl7CgkJCSRkZXNjcmlwdGlvbiA9ICRwYXJhbXNbJ2Rlc2NyaXB0aW9uJ107CgkJfQovL2xlIGNvbnRhY3QgZXN0LWlsIGTDqWrDoCBwcsOpc2VudCA/Ci8vb24gdsOpcmlmaWUKJHF1ZXJ5PSAiU0VMRUNUIGNvbnRhY3QgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY29tbSBXSEVSRSBjb250YWN0ID0gPyI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRjb250YWN0KSk7CmlmKCRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+MCkJewoJJG1lc3NhZ2UuPSJDb250YWN0IGTDqWrDoCBwcsOpc2VudCAhIjsKCSR0aGlzLT5TZXRNZXNzYWdlKCIkbWVzc2FnZSIpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwp9CiRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY29tbSAoaWQsIGRhdGVjcmVhdGVkLCBkYXRlbWFqLGxpY2VuY2UsIHR5cGVfY29udGFjdCwgY29udGFjdCwgZGVzY3JpcHRpb24pIFZBTFVFUyAoPyw/LD8sPyw/LD8sPykiOwkKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGlkLCRub3csICRub3csICRsaWNlbmNlLCAkdHlwZV9jb250YWN0LCAkY29udGFjdCwgJGRlc2NyaXB0aW9uKSk7CmlmKCEkZGJyZXN1bHQpewoJJG1lc3NhZ2UuPSRkYi0+RXJyb3JNc2coKTsKfQplbHNlCnsKCSRtZXNzYWdlLj0gIkNvbnRhY3QgYWpvdXTDqSI7Cn0KLy9zaSBsZSB0eXBlIGRlIGNvbnRhY3QgYWpvdXTDqSBlc3QgZW1haWwsIG9uIHZhIHBvdXZvaXIgbCdham91dGVyIGRhbnMgRkVVIHNpIG5vbiBkw6lqw6AgcHLDqXNlbnQKLy8gb24gdmEgaW5zY3JpcmUgbGUgam91ZXVyIGRhbnMgRkVVIHNpIHByw6lzZW50CmlmKCR0eXBlX2NvbnRhY3Q9PSdlbWFpbCcpewokY29udGFjdCA9IAkKJGZldSA9ICRnQ21zLT5HZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpOwovL29uIHRlc3RlIHNpIGxlIG1vZHVsZSBlc3QgcHLDqXNlbnQgb3Ugbm9uCmlmKCEkZmV1KXsKCSRtZXNzYWdlLj0iTW9kdWxlIEZFVSBhYnNlbnQiOwp9CmVsc2UgewoJJG5hbWUgPSAkcGFyYW1zWydjb250YWN0J107CgkkY29udGFjdCA9ICRwYXJhbXNbJ2NvbnRhY3QnXTsKCS8vbCd1dGlsaXNhdGV1ciBleGlzdGUtdC1pbCBkw6lqw6AgPwoJJHF1ZXJ5PSJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfZmV1c2Vyc191c2VycyBXSEVSRSB1c2VybmFtZSA9ID8iOwoJLy9lY2hvICRxdWVyeTsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRjb250YWN0KSk7CgkvLyRjb3VudGFnZSA9ICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKTsKCWlmKCRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKXsKCSRwc2V1ZG8gPSAnVXh6cXNVSU0nOwoJJGV4cGlyZXMgPSBta3RpbWUoMCwwLDAsZGF0ZSgibSIpLGRhdGUoImQiKSxkYXRlKCJZIikrNSk7CgkkZG9fbWQ1ID0gJyc7CgkkcXVlcnkgPSAkZmV1LT5BZGRVc2VyKCRuYW1lLCAkcHNldWRvLCAkZXhwaXJlcywkZG9fbWQ1ID0gdHJ1ZSk7CgkkZGZsdF9ncm91cCA9ICRmZXUtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfZ3JvdXAnKTsKCSRmZXUtPkF1ZGl0KCcnLCRmZXUtPkdldE5hbWUoKSwgJG5hbWUpOwoJCgkkdWlkID0gJGZldS0+R2V0VXNlcklkKCRuYW1lKTsKCS8vJHVpZCA9ICR1c2VyWzFdOwoKCS8vIHNldCBoaXMgZ3JvdXBzLgoJaWYoICRkZmx0X2dyb3VwID4gMCApIHsKCSAkZmV1LT5Bc3NpZ25Vc2VyVG9Hcm91cCggJHVpZCwgJGRmbHRfZ3JvdXAgKTsKCX0KCSRtZXNzYWdlLj0iTm91dmVsIHV0aWxpc2F0ZXVyIGRhbnMgRkVVIjsKCX0KCWVsc2V7CgkJJG1lc3NhZ2UuPSJVdGlsaXNhdGV1ciBkw6lqw6AgaW5zY3JpdCBkYW5zIEZFVSI7Cgl9Cn0vL2ZpbiBkZSBsJ2luc3RhbmNpYXRpb24gZGUgRkVVCgoKLy9vbiB2YSBlc3NheWVyIGRlIGwnaW5jbHVyZSBkYW5zIGxhIG5ld3NsZXR0ZXIKJG5tcyA9ICRnQ21zLT5HZXRNb2R1bGVJbnN0YW5jZSgnTk1TJyk7CmlmKCEkbm1zKXsKCSRtZXNzYWdlLj0iIE1vZHVsZSBOZXdzbGV0dGVyIGluZGlzcG9uaWJsZSI7Cn0KZWxzZXsKCS8vbGUgbW9kdWxlIGVzdCBkaXNwb25pYmxlLCBvbiB2YSB2b2lyIHNpIGwndXRpbGlzYXRldXIgZXN0IGTDqWrDoCBpbnNjcml0CgkkbWVzc2FnZS49IiBMZSBtb2R1bGUgZXN0IE9rLCBvbiBwZXV0IGNvbnRpbnVlciI7CgkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX25tc191c2VycyBXSEVSRSBlbWFpbCA9ID8iOwoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNvbnRhY3QpKTsKCQoJaWYoJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApewoJCS8vIGwndXRpbGlzYXRldXIgZXN0IGTDqWrDoCBkcyBOTVMKCQkkbWVzc2FnZS49IkFkcmVzc2UgZW1haWwgZMOpasOgIGRhbnMgbGEgbmV3c2xldHRlciI7Cgl9CgllbHNlewoJCS8vJG1lc3NhZ2UuPSIgT24gcGV1dCBpbmNsdXJlLiI7CgkJLy9sJ3V0aWxpc2F0ZXVyIG4nZXN0IHBhcyBlbmNvcmUgZHMgTk1TLCBvbiBsJ2luY2x1dAoJCSRlbWFpbCA9ICRjb250YWN0OwoJCSRsaXN0cyA9IGFycmF5KCIxIik7CgkJJHVzZXJuYW1lID0gJ1RvcCc7CgkJJGRpc2FibGVkID0gMDsKCQkkY29uZmlybWVkID0gMTsvL29uIHBldXQgYXVzc2kgYXBwZWxlciB1bmUgcHLDqWbDqXJlbmNlIGRhbnMgbGVzIG9wdGlvbnMgZGUgY29uZmlnCgkJLy9kdSBzdHlsZSwgb24gZW52b2llIHVuIGVtYWlsIHBvdXIgY29uZmlybWVyIGxhIGRlbWFuZGUgb3UgcGFzCgkJCgkJJHF1ZXJ5ID0gJG5tcy0+QWRkVXNlcigkZW1haWwsJGxpc3RzLCR1c2VybmFtZSwkZGlzYWJsZWQsJGNvbmZpcm1lZCk7CgkJaWYoISRxdWVyeSl7CgkJCSRtZXNzYWdlLj0kZGItPkVycm9yTXNnKCk7CgkJfQoJCWVsc2V7CgkJCSRtZXNzYWdlLj0iVXRpbGlzYXRldXIgYWpvdXTDqSDDoCBsYSBuZXdzbGV0dGVyIjsKCQl9Cgl9Cn0KfS8vZmluIGR1IGlmIGNvbnRhY3QgPSBlbWFpbAokdGhpcy0+U2V0TWVzc2FnZSgiJG1lc3NhZ2UiKTsKJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwoJCgogICAgICAgPz4=]]></data>
	</file>
	<file>
	  <filename>/action.do_edit_joueur.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCgppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwppZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKSB7ICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQpOyB9CiRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3RyYXZhdXgucGhwJyk7CiRkZXNpZ25hdGlvbiA9ICcnOwovL2VjaG8gJHBhcmFtc1sncmVjb3JkX2lkJ107Ci8qCgkJaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQ29tbWVudHMnKSkKCQl7CgkJCWVjaG8gJzxwIGNsYXNzPSJlcnJvciI+Jy4kdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nLCBhcnJheSgnTWFuYWdlIENvbW1lbnRzJykpLic8L3A+JzsKCQkJcmV0dXJuOwoJCX0KKi8KCQkvKk9uIHLDqWN1cMOocmUgbGVzIHZhcmlhYmxlIGV0IG9uIGxlcyB0cmFpdGUgKi8KCQlpZiAoIGlzc2V0KCRwYXJhbXNbJ2xpY2VuY2UnXSApKQoJCXsKCQkJJGxpY2VuY2UgPSAkcGFyYW1zWydsaWNlbmNlJ107CgkJCQoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1snYWN0aWYnXSkpCgkJewoJCQkkYWN0aWYgPSAkcGFyYW1zWydhY3RpZiddOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1snbm9tJ10pKQoJCXsKCQkJJG5vbSA9IHN0cnRvdXBwZXIoJHBhcmFtc1snbm9tJ10pOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1sncHJlbm9tJ10pKQoJCXsKCQkJJHByZW5vbSA9ICRwYXJhbXNbJ3ByZW5vbSddOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1snYmlydGhkYXknXSkpCgkJewoJCQkkYmlydGhkYXkgPSAkcGFyYW1zWydiaXJ0aGRheSddOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1snc2V4ZSddKSkKCQl7CgkJCSRzZXhlID0gJHBhcmFtc1snc2V4ZSddOwoJCX0KCQkKCQlpZiAoaXNzZXQoJHBhcmFtc1snYWRyZXNzZSddKSkKCQl7CgkJCSRhZHJlc3NlID0gJHBhcmFtc1snYWRyZXNzZSddOwoJCX0KCQkKCQlpZiAoIGlzc2V0KCAkcGFyYW1zWyd2aWxsZSddICkpCgkJewoJCQkkdmlsbGUgPSAkcGFyYW1zWyd2aWxsZSddOwoJCX0KCQlpZiAoIGlzc2V0KCAkcGFyYW1zWydjb2RlcG9zdGFsJ10gKSkKCQl7CgkJCSRjb2RlcG9zdGFsID0gJHBhcmFtc1snY29kZXBvc3RhbCddOwoJCX0KCQkvL29uIHJlZ2FyZGUgc2kgbGUgam91ZXVyIGV4aXN0ZSBkw6lqw6Agc2kgb3VpIFVQREFURSBzaSBub24gSU5TRVJUIElOVE8KCQkkcXVlcnkgPSAiU0VMRUNUIGxpY2VuY2UgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSBsaWNlbmNlID0gPyI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UpKTsKCQkkY291bnQgPSAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk7CgkJaWYgKCRjb3VudD4wKXsKCQkJJGFqb3V0ID0gMTsKCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBTRVQgIGFjdGlmID0gPywgbm9tID0gPywgcHJlbm9tID0gPywgYmlydGhkYXkgPSA/LCBzZXhlID0gPywgYWRyZXNzZSA9ID8sIHZpbGxlID0gPywgY29kZXBvc3RhbCA9ID8gV0hFUkUgbGljZW5jZSA9ID8iOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkYWN0aWYsJG5vbSwkcHJlbm9tLCRiaXJ0aGRheSwgJHNleGUsICRhZHJlc3NlLCAkdmlsbGUsICRjb2RlcG9zdGFsLCAkbGljZW5jZSkpOwoJCQkkZGVzaWduYXRpb24uPSJNaXNlIMOgIGpvdXIgZGUiLiRub20uICIgIi4kcHJlbm9tOwoJCX0KCQllbHNlewoJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgKGlkLGFjdGlmLGxpY2VuY2Usbm9tLCBwcmVub20sIGJpcnRoZGF5LCBzZXhlLCBhZHJlc3NlLCB2aWxsZSwgY29kZXBvc3RhbCkgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkYWN0aWYsICRsaWNlbmNlLCAkbm9tLCAkcHJlbm9tLCAkYmlydGhkYXksICRzZXhlLCAkYWRyZXNzZSwgJHZpbGxlLCAkY29kZXBvc3RhbCkpOwoJCQkKCQkJaWYoISRkYnJlc3VsdCl7CgkJCQkkZGVzaWduYXRpb24uPSAkZGItPkVycm9yTXNnKCk7CgkJCX0KCQkJZWxzZXsKCQkJCSRkZXNpZ25hdGlvbi49IkFqb3V0IGRlICIuJG5vbS4iICIuJHByZW5vbTsKCQkJfQoJCQkKCQkJLy9pbCBmYXV0IGF1c3NpIGluc8OpcmVyIGxlIGpvdWV1ciBkYW5zIGxhIHRhYmxlIGRlcyBzaXR1YXRpb25zIG1lbnN1ZWxsZXMKCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIChpZCwgc2Fpc29uLCBkYXRlbWFqLCBsaWNlbmNlLCBzaXRfbWVucywgZmZ0dCwgc3BpZCkgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPykiOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkc2Fpc29uLCAkbm93LCAkbGljZW5jZSwgJ0phbnZpZXIgMjAwMCcsICcwJywnMCcpKTsKCQkJCgkJCWlmKCEkZGJyZXN1bHQpewoJCQkJJGRlc2lnbmF0aW9uLj0gJGRiLT5FcnJvck1zZygpOwoJCQl9CgkJCQoJCX0KCQkKCQkKCQkKCgkJCgkKCQkJLy9vbiBhIHBhcyBkZSBtb2RpZmljYXRpb24gZHUgY29lZmYsIG9uIGNoYW5nZSBzaW1wbGVtZW50IGxlcyBkb25uw6llcyBzYW5zIHJlY2FsY3VsZXIKCQkKCQkJCgkJCgkJLy8gbGEgdGFibGUgcG9pbnRzIGVzdCBtb2RpZmnDqSwgb24gcGFzc2Ugw6AgbGEgdGFibGUgcmVuY29udHJlcwoJCSRzdGF0dXMgPSAnT2snOwoJCS8vJGRlc2lnbmF0aW9uID0gJ0Fqb3V0L21vZGlmaWNhdGlvbiBkZSAnLiRub20uJyAnLiRwcmVub207CgkJJGFjdGlvbiA9ICdkb19lZGl0X2pvdWV1cic7CgkJcGluZ19hZG1pbl9vcHM6OmVjcmlyZWpvdXJuYWwoJG5vdywkc3RhdHVzLCAkZGVzaWduYXRpb24sJGFjdGlvbik7CgkJCiR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCiR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ0pvdWV1cnMnKTsKCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.do_edit_result.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwovL2lmIChpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpIHsgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCk7IH0KcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKCiRkZXNpZ25hdGlvbiA9ICcnOwoKLyokaWRfdXNlciA9ICcnOyovCglpZiAoIGlzc2V0KCRwYXJhbXNbJ3JlY29yZF9pZCddICkpCgl7CgkJJHJlY29yZF9pZCA9ICRwYXJhbXNbJ3JlY29yZF9pZCddOwoJfQoJaWYoaXNzZXQoJHBhcmFtc1snZHVwbGljYXRlJ10pICYmICRwYXJhbXNbJ2R1cGxpY2F0ZSddID09JzEnKQoJewoJCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgV0hFUkUgaWQgPSA/IjsKCQoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCQkKCQkJaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKT4wKQoJCQl7CgkJCQl3aGlsZSgkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCQkJewoJCQkJCSRzYWlzb24gPSAkcm93WydsaWNlbmNlJ107CgkJCQkJLy9wYXMgZGUgZGF0ZW1hagoJCQkJCSRsaWNlbmNlID0gJHJvd1snbGljZW5jZSddOwoJCQkJCSRkYXRlX2V2ZW50ID0gJHJvd1snZGF0ZV9ldmVudCddOwoJCQkJCSRlcHJldXZlID0gJHJvd1snZXByZXV2ZSddOwoJCQkJCSRub20gPSAkcm93Wydub20nXTsKCQkJCQkkbnVtam91cm4gPSAkcm93WydudW1qb3VybiddOwoJCQkJCSRjbGFzc2VtZW50ID0gJHJvd1snY2xhc3NlbWVudCddOwoJCQkJCSR2aWN0b2lyZSA9ICRyb3dbJ3ZpY3RvaXJlJ107CgkJCQkJJGVjYXJ0ID0gJHJvd1snZWNhcnQnXTsKCQkJCQkkdHlwZV9lY2FydCA9ICRyb3dbJ3R5cGVfZWNhcnQnXTsKCQkJCQkkY29lZmYgPSAkcm93Wydjb2VmZiddOwoJCQkJCSRwb2ludHJlcyA9ICRyb3dbJ3BvaW50cmVzJ107CgkJCQkJJGZvcmZhaXQgPSAkcm93Wydmb3JmYWl0J107CgkJCQkJCQkJCQkKCQkJCQkkcXVlcnkyID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgKGlkLCBzYWlzb24sIGRhdGVtYWosIGxpY2VuY2UsIGRhdGVfZXZlbnQsIGVwcmV1dmUsIG5vbSwgbnVtam91cm4sIGNsYXNzZW1lbnQsIHZpY3RvaXJlLCBlY2FydCwgdHlwZV9lY2FydCwgY29lZmYsIHBvaW50cmVzLCBmb3JmYWl0KSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkJCQkJJGRicmVzdWx0MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCBhcnJheSgkc2Fpc29uX2NvdXJhbnRlLCRub3csICRsaWNlbmNlLCRkYXRlX2V2ZW50LCAkZXByZXV2ZSwgJG5vbSwgJG51bWpvdXJuLCAkY2xhc3NlbWVudCwgJHZpY3RvaXJlLCAkZWNhcnQsICR0eXBlX2VjYXJ0LCAkY29lZmYsICRwb2ludHJlcywgJGZvcmZhaXQpKTsKCQkJCQkkZGVzaWduYXRpb24uPSJFbnJlZ2lzdHJlbWVudCBkdXBsaXF1w6kiOwoJCQkJCQoJCQkJfQoJCQl9Cgl9CgllbHNlCgl7CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2VwcmV1dmUnXSkpIAoJCXsKCQkJJGVwcmV1dmUgPSAkcGFyYW1zWydlcHJldXZlJ107CgkJCSRjb2VmZmljaWVudCA9IGNvZWZmKCRlcHJldXZlKTsKCQl9CgoKCQlpZiAoaXNzZXQoJHBhcmFtc1snbnVtam91cm4nXSkpCgkJewoJCQkkbnVtam91cm4gPSAkcGFyYW1zWydudW1qb3VybiddOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1snbm9tJ10pKQoJCXsKCQkJCSRub20gPSAkcGFyYW1zWydub20nXTsKCQl9CgoJCWlmIChpc3NldCgkcGFyYW1zWydjbGFzc2VtZW50J10pKQoJCXsKCQkJCSRjbGFzc2VtZW50ID0gJHBhcmFtc1snY2xhc3NlbWVudCddOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1snZWNhcnQnXSkpCgkJewoJCQkJJGVjYXJ0ID0gJHBhcmFtc1snZWNhcnQnXTsKCQl9CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2NvZWZmJ10pKQoJCXsKCQkJCSRjb2VmZiA9ICRwYXJhbXNbJ2NvZWZmJ107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWyd2aWN0b2lyZSddKSkKCQl7CgkJCQkkdmljdG9pcmUgPSAkcGFyYW1zWyd2aWN0b2lyZSddOwoJCX0KCQkvL29uIHbDqXJpZmllIGxlIGNvZWZmIGRlIGwnw6lwcmV1dmUgOiAKCgkJCWlmICgkY29lZmZpY2llbnQgIT0kY29lZmYpCgkJCXsKCQkJCQkkZGVzaWduYXRpb24uPSJMZSBjb2VmZmljaWVudCBldCBsJ8OpcHJldXZlIG5lIGNvcnJlc3BvbmRlbnQgcGFzICEiOwoJCQl9CgkJLy9vbiBmYWl0IGxlcyBjYWxjdWxzIG7DqWNlc3NhaXJlcwoKCQkvL3RvdXQgZCdhYm9yZCwgeSBhIHQtaWwgZXUgZm9yZmFpdCA/CgkJLy9TaSBvdWksIGludXRpbGUgZGUgY2FsY3VsZXIgbGVzIHBvaW50cwoKCQkJaWYoJGZvcmZhaXQgPT0xKQoJCQl7CgkJCQkJJHBvaW50cmVzID0gMDsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCS8vb24gZMOpdGVybWluZSBsZSB0eXBlIGQnw6ljYXJ0IGVudHJlIGxlcyBkZXV4IGpvdWV1cnMKCQkJCSR0eXBlX2VjYXJ0ID0gQ2FsY3VsRWNhcnQoJGVjYXJ0KTsKCQkJCSRwb2ludHMxID0gQ2FsY3VsUG9pbnRzSW5kaXZzKCR0eXBlX2VjYXJ0LCAkdmljdG9pcmUpOwoJCQkJJHBvaW50cmVzID0gJHBvaW50czEqJGNvZWZmOyAKCgkJCX0KCQkJCgkJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBTRVQgbm9tID0gPywgbnVtam91cm4gPSA/LCBjbGFzc2VtZW50ID0gPywgdmljdG9pcmUgPSA/LCBlY2FydCA9ID8sIGNvZWZmID0gPywgcG9pbnRyZXMgPSA/IFdIRVJFIGlkID0gPyI7CgkJCQkKCQkJCgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRub20sICRudW1qb3VybiwgJGNsYXNzZW1lbnQsICR2aWN0b2lyZSwgJGVjYXJ0LCAkY29lZmYsJHBvaW50cmVzLCAkcmVjb3JkX2lkKSk7CgkKCQkJCWlmICghJGRicmVzdWx0KSAKCQkJCXsKCQkJCQkkZGVzaWduYXRpb24uPSRkYi0+RXJyb3JNc2coKTsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkZGVzaWduYXRpb24uPSJFbnJlZ2lzdHJlbWVudCBtb2RpZmnDqS4iOwoJCQkJfQoJfQoJCgkJCgkJCQoJCQkKCQkkdGhpcy0+U2V0TWVzc2FnZSgkZGVzaWduYXRpb24pOwoJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3Jlc3VsdHMnKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.do_edit_team.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCgppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwppZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKSB7ICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQpOyB9Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5jYWxjdWxzLnBocCcpOwovL2VjaG8gJHBhcmFtc1sncmVjb3JkX2lkJ107CiRkZXNpZ25hdGlvbiA9ICcnOwokZXJyb3IgPTA7Ci8qCgkJaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQ29tbWVudHMnKSkKCQl7CgkJCWVjaG8gJzxwIGNsYXNzPSJlcnJvciI+Jy4kdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nLCBhcnJheSgnTWFuYWdlIENvbW1lbnRzJykpLic8L3A+JzsKCQkJcmV0dXJuOwoJCX0KKi8KCQkvKk9uIHLDqWN1cMOocmUgbGVzIHZhcmlhYmxlIGV0IG9uIGxlcyB0cmFpdGUgKi8KCQkkcmVjb3JkX2lkID0gJyc7IAoJCWlmKCBpc3NldCggJHBhcmFtc1sncmVjb3JkX2lkJ10gKSAmJiAkcGFyYW1zWydyZWNvcmRfaWQnXSAhPSAnJykgICAgCgkJewoJCQkkaWQgPSAkcGFyYW1zWydyZWNvcmRfaWQnXTsKCQkJCgkJfQoJCQoJCWlmIChpc3NldCgkcGFyYW1zWydzYWlzb24nXSkpCgkJewoJCQkkc2Fpc29uID0gJHBhcmFtc1snc2Fpc29uJ107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydwaGFzZSddKSkKCQl7CgkJCSRwaGFzZSA9ICRwYXJhbXNbJ3BoYXNlJ107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydsaWJlcXVpcGUnXSkpCgkJewoJCQkkbGliZXF1aXBlID0gJHBhcmFtc1snbGliZXF1aXBlJ107CgkJfQoJCQoJCWlmIChpc3NldCgkcGFyYW1zWydsaWJkaXZpc2lvbiddKSkKCQl7CgkJCSRsaWJkaXZpc2lvbiA9ICRwYXJhbXNbJ2xpYmRpdmlzaW9uJ107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydmcmllbmRseW5hbWUnXSkpCgkJewoJCQkkZnJpZW5kbHluYW1lID0gJHBhcmFtc1snZnJpZW5kbHluYW1lJ107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWyd0eXBlX2NvbXBldCddKSAmJiAkcGFyYW1zWyd0eXBlX2NvbXBldCddICE9JycpCgkJewoJCQkkdHlwZV9jb21wZXQgPSAkcGFyYW1zWyd0eXBlX2NvbXBldCddOwoJCX0KCQllbHNlCgkJewoJCQkkZXJyb3IrKzsKCQkJCgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydpZGRpdiddKSkKCQl7CgkJCSRpZGRpdiA9ICRwYXJhbXNbJ2lkZGl2J107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydpZHBvdWxlJ10pKQoJCXsKCQkJJGlkcG91bGUgPSAkcGFyYW1zWydpZHBvdWxlJ107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydvcmdhbmlzbWUnXSkpCgkJewoJCQkkb3JnYW5pc21lID0gJHBhcmFtc1snb3JnYW5pc21lJ107CgkJfQoJCSRsaWVuZGl2aXNpb24gPSAiY3hfcG91bGU9Ii4kaWRwb3VsZS4iJkQxPSIuJGlkZGl2LiImb3JnYW5pc21lX3BlcmU9Ii4kb3JnYW5pc21lOwoJCS8vZWNobyAibGUgbGllbiBlc3QgOiAiLiRsaWVuOwoJCWlmKCRlcnJvcj4wKQoJCXsKCQkJJHRoaXMtPlNldE1lc3NhZ2UoJ01hbnF1ZSBsZSB0eXBlIGRlIGNvbXDDqXRpdGlvbiAhJyk7CgkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2VxdWlwZXMnKTsKCQl9CgkJaWYoaXNzZXQoJHBhcmFtc1snQWpvdXRlciddKSkKCQl7CgkJCQoJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgKGlkLCBzYWlzb24sIHBoYXNlLCBsaWJlcXVpcGUsIGxpYmRpdmlzaW9uLGZyaWVuZGx5bmFtZSwgbGllbmRpdmlzaW9uLCBpZHBvdWxlLCBpZGRpdiwgdHlwZV9jb21wZXQpIFZBTFVFUyAoJycsID8sID8sID8sID8sID8sID8sID8sID8sID8pIjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkc2Fpc29uLCAkcGhhc2UsICRsaWJlcXVpcGUsICRsaWJkaXZpc2lvbiwkZnJpZW5kbHluYW1lLCAkbGllbmRpdmlzaW9uLCAkaWRwb3VsZSwgJGlkZGl2LCAkdHlwZV9jb21wZXQpKTsKCQkJJGRlc2lnbmF0aW9uLj0iRXF1aXBlIGFqb3V0w6llIGF2ZWMgc3VjY8OocyI7CgkJfQoJCWVsc2UKCQl7CgkJCS8vb24gYSBwYXMgZGUgbW9kaWZpY2F0aW9uIGR1IGNvZWZmLCBvbiBjaGFuZ2Ugc2ltcGxlbWVudCBsZXMgZG9ubsOpZXMgc2FucyByZWNhbGN1bGVyCgkJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgU0VUICBzYWlzb24gPSA/LCBwaGFzZSA9ID8sIGxpYmVxdWlwZSA9ID8sIGxpYmRpdmlzaW9uID0gPyAsIGZyaWVuZGx5bmFtZSA9ID8gLCBsaWVuZGl2aXNpb24gPSA/LCB0eXBlX2NvbXBldCA9ID8gV0hFUkUgaWQgPSA/IjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHNhaXNvbiwkcGhhc2UsJGxpYmVxdWlwZSwgJGxpYmRpdmlzaW9uLCRmcmllbmRseW5hbWUsJGxpZW5kaXZpc2lvbiwgJHR5cGVfY29tcGV0LCRpZCkpOwoJCQkvL2VjaG8gJHF1ZXJ5OwoJCQkkZGVzaWduYXRpb24uPSJFcXVpcGUgbWlzZSDDoCBqb3VyIGF2ZWMgc3VjY8OocyI7CgkJfQoJCQkKCQoJCWlmICghJGRicmVzdWx0KSB7CgkJCSRkZXNpZ25hdGlvbi49ICAkZGItPkVycm9yTXNnKCk7CgkJLy8JZWNobyAkZGItPnNxbC4iPGJyLz4iOwoJCS8vCSAgICBlY2hvICRkYi0+RXJyb3JNc2coKTsKCQkJCQoJCX0KCQllbHNlIHsKCQkJJGRlc2lnbmF0aW9uLj0gJ0VxdWlwZSBtaXNlIMOgIGpvdXInOwoJCX0KCQkKCQkKCQkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgoJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2VxdWlwZXMnKTsKCQkKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.do_participe.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwovKiovCgoJaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIE1hbmFnZScpKQoJewoJCSRkZXNpZ25hdGlvbi49JHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJyk7CgkJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3NpdHVhdGlvbicpOwoJfQoJJGFubmVlID0gZGF0ZSgnWScpOwovL29uIHLDqWN1cMOocmUgbGVzIHZhbGV1cnMKLy9wb3VyIGwnaW5zdGFudCBwYXMgZCdlcnJldXIKJGVycm9yID0gMDsKCQkKCQkkdHlwZV9jb21wZXQgPSAnJzsKCQlpZiAoaXNzZXQoJHBhcmFtc1sndHlwZV9jb21wZXQnXSkgJiYgJHBhcmFtc1sndHlwZV9jb21wZXQnXSAhPSAnJykKCQl7CgkJCSR0eXBlX2NvbXBldCA9ICRwYXJhbXNbJ3R5cGVfY29tcGV0J107CgkJfQoJCWVsc2UKCQl7CgkJCSRlcnJvcisrOwoJCX0KCQkvL29uIHZpcmUgdG91dGVzIGxlcyBkb25uw6llcyBkZSBjZXR0ZSBjb21wZXQgYXZhbnQgCgkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWNpcGUgV0hFUkUgdHlwZV9jb21wZXQgPSA/IjsKCQkkZGJxdWVyeSA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR0eXBlX2NvbXBldCkpOwkKCQkkbGljZW5jZSA9ICcnOwoJCWlmIChpc3NldCgkcGFyYW1zWydsaWNlbmNlJ10pICYmICRwYXJhbXNbJ2xpY2VuY2UnXSAhPSAnJykKCQl7CgkJCSRsaWNlbmNlID0gJHBhcmFtc1snbGljZW5jZSddOwoJCQkkZXJyb3IrKzsKCQl9CgkJZm9yZWFjaCgkbGljZW5jZSBhcyAka2V5PT4kdmFsdWUpCgkJewoJCQkKCQkJCgkJCQkJJHF1ZXJ5MiA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGljaXBlIChsaWNlbmNlLCB0eXBlX2NvbXBldCkgVkFMVUVTICg/LCA/KSI7CgkJCQkJZWNobyAkcXVlcnkyOwoJCQkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsIGFycmF5KCRrZXksICR0eXBlX2NvbXBldCkpOwoJCQkJCQoJCQkJCgkJCQkKCQkJCgkJCQkKCQl9CgoKJHRoaXMtPlNldE1lc3NhZ2UoJ3BhcnRpY2lwYW50cyBham91dMOpcyAhJyk7CiR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2NvbXBldHMnKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.edit_contact.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgTWFuYWdlJykpCiAgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CglyZXR1cm47CiAgIAogIH0KCiRpZF9yZWNvcmQgPSAnJzsKaWYoICFpc3NldCggJHBhcmFtc1snaWRfcmVjb3JkJ10gKSB8fCAkcGFyYW1zWydpZF9yZWNvcmQnXSA9PSAnJyApICAKewoJJHRoaXMtPlNldE1lc3NhZ2UoJ0lsIG1hbnF1ZSBsXGlkZW50aWZpYW50IGRlIGxhIGxpZ25lJyk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdqb3VldXJzJyk7Ci8qCQokcXVlcnkgPSAiU0VMRUNUIENPTkNBVF9XUygnICcsIG5vbSwgcHJlbm9tKSBBUyBqb3VldXIsIGxpY2VuY2UgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBPUkRFUiBCWSBqb3VldXIgQVNDIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICB7CiAgICAkcGxheWVybGlzdFskcm93Wydqb3VldXInXV0gPSAkcm93WydsaWNlbmNlJ107Cn0vL2ZpbiBkdSB3aGlsZQoqLwp9CgokcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY29tbSBXSEVSRSBpZCA9ID8iOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcGFyYW1zWydpZF9yZWNvcmQnXSkpOwp3aGlsZSgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKewoJJGxpY2VuY2UgPSAkcm93WydsaWNlbmNlJ107CgkkdHlwZV9jb250YWN0ID0gJHJvd1sndHlwZV9jb250YWN0J107CgkkY29udGFjdCA9ICRyb3dbJ2NvbnRhY3QnXTsKCSRkZXNjcmlwdGlvbiA9ICRyb3dbJ2Rlc2NyaXB0aW9uJ107CgkKfQogIAokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsCgkJICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoICRpZCwgJ2RvX2NyZWF0ZV9jb250YWN0JywgJHJldHVybmlkICkgKTsKJHNtYXJ0eS0+YXNzaWduKCdpZCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCAkaWQsICdpZF9yZWNvcmQnLCAkcGFyYW1zWydpZF9yZWNvcmQnXSApKTsKJHNtYXJ0eS0+YXNzaWduKCdsaWNlbmNlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oICRpZCwgJ2xpY2VuY2UnLCAkbGljZW5jZSApKTsKJGFydGljbGVzID0gYXJyYXkoIlTDqWzDqXBob25lIGZpeGUiPT4iVMOpbMOpcGhvbmUgZml4ZSIsICJlbWFpbCI9PiJlbWFpbCIpOwokc21hcnR5LT5hc3NpZ24oJ3R5cGVfY29udGFjdCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAndHlwZV9jb250YWN0JywkYXJ0aWNsZXMsLTEsJHR5cGVfY29udGFjdCkpOwokc21hcnR5LT5hc3NpZ24oJ2NvbnRhY3QnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnY29udGFjdCcsJGNvbnRhY3QsNTAsMTUwKSk7CiRzbWFydHktPmFzc2lnbignZGVzY3JpcHRpb24nLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZGVzY3JpcHRpb24nLCRkZXNjcmlwdGlvbiwzMCwxNTApKTsJCQkJCiRzbWFydHktPmFzc2lnbignc3VibWl0ZWRpdCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdGVkaXQnLCAkdGhpcy0+TGFuZygnc3VibWl0JyksICdjbGFzcz0iYnV0dG9uIicpKTsKJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2NhbmNlbCcsJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CiRzbWFydHktPmFzc2lnbignYmFjaycsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnYmFjaycsJHRoaXMtPkxhbmcoJ2JhY2snKSkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdF9jb250YWN0LnRwbCcpOwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.edit_player_results.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgTWFuYWdlJykpCiAgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CglyZXR1cm47CiAgIAogIH0KCiR0aGlzLT5TZXRDdXJyZW50VGFiKCdyZXN1bHRzJyk7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKLy8kcmVjb3JkX2lkID0gJHBhcmFtc1sncmVjb3JkX2lkJ107CmlmKCBpc3NldCggJHBhcmFtc1snbWVzc2FnZSddICkgKQogIHsKICAgICRzbWFydHktPmFzc2lnbignbWVzc2FnZScsaHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbJ21lc3NhZ2UnXSkpOwogIH0KaWYoIGlzc2V0KCAkcGFyYW1zWydlcnJvciddICkgKQogIHsKICAgICRzbWFydHktPmFzc2lnbignZXJyb3InLGh0bWxfZW50aXR5X2RlY29kZSgkcGFyYW1zWydlcnJvciddKSk7CiAgfQoKCgokcmVjb3JkX2lkID0gJyc7CmlmKCAhaXNzZXQoICRwYXJhbXNbJ3JlY29yZF9pZCddICkgfHwgJHBhcmFtc1sncmVjb3JkX2lkJ10gPT0gJycpICAgIAp7CgkKCSRwYXJhbXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsKCSAgICAkcGFyYW1zWydlcnJvciddID0gMTsKCSAgICAkdGhpcy0+UmVkaXJlY3QoICRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyApOwoJICAgIHJldHVybjsKfQplbHNlCnsKCSRyZWNvcmRfaWQgPSAkcGFyYW1zWydyZWNvcmRfaWQnXTsKfQoKICAgIC8vIGZpbmQgdGhlIHVzZXIKICAgICRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgQVMgcywgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIEFTIHRjIFdIRVJFIHMuZXByZXV2ZSA9IHRjLm5hbWUgQU5EIHMuaWQgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+R2V0Um93KCRxdWVyeSwgYXJyYXkoICRwYXJhbXNbJ3JlY29yZF9pZCddICkpOwogICAgaWYoICEkZGJyZXN1bHQpCiAgICAgIHsKCSR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXN1bHRub3Rmb3VuZCcpKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3Jlc3VsdHMnKTsKCXJldHVybjsKICAgICAgfQoJZWxzZQoJewoJCSRlcHJldXZlID0gJGRicmVzdWx0WydlcHJldXZlJ107CgkJJG51bWpvdXJuID0gJGRicmVzdWx0WydudW1qb3VybiddOwoJCS8vJGVxdWlwZSA9ICRkYnJlc3VsdFsnZXF1aXBlJ107CgkJJG5vbSA9ICRkYnJlc3VsdFsnbm9tJ107CgkJJGNsYXNzZW1lbnQgPSAkZGJyZXN1bHRbJ2NsYXNzZW1lbnQnXTsKCQkkZWNhcnQgPSAkZGJyZXN1bHRbJ2VjYXJ0J107CgkJJGNvZWZmID0gJGRicmVzdWx0Wydjb2VmZiddOwoJCSR2aWN0b2lyZSA9ICRkYnJlc3VsdFsndmljdG9pcmUnXTsKCQkkcG9pbnRzID0gJGRicmVzdWx0Wydwb2ludHMnXTsKCQkkZm9yZmFpdCA9ICRkYnJlc3VsdFsnZm9yZmFpdCddOwoJCQoJCQlpZigkdmljdG9pcmUgPT0xKQoJCQl7CgkJCQkKCQkJCSRzZWxlY3RlZGluZGV4MSA9IDA7CgkJCQkvLyRzZWxlY3RlZHZhbHVlID0gMTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRzZWxlY3RlZGluZGV4MSA9IDE7CgkJCQkvLyRzZWxlY3RlZHZhbHVlID0gMDsKCQkJfQoJCQoJCQoKfQogICAKJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLAoJCSAgICAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCAkaWQsICdkb19lZGl0X3Jlc3VsdCcsICRyZXR1cm5pZCApICk7CiRzbWFydHktPmFzc2lnbigncmVjb3JkX2lkJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oICRpZCwgJ3JlY29yZF9pZCcsICRwYXJhbXNbJ3JlY29yZF9pZCddICkpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdzdWJtaXQnKSwgJ2NsYXNzPSJidXR0b24iJykpOyAgIAokc21hcnR5LT5hc3NpZ24oJ2VwcmV1dmUnLAoJCQkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2VwcmV1dmUnLCRlcHJldXZlLDgwLDE1MCkpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF90b3VyJywKCQkkdGhpcy0+TGFuZygndG91cicpKTsKJHNtYXJ0eS0+YXNzaWduKCdudW1qb3VybicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ251bWpvdXJuJywkbnVtam91cm4sNSwxMCkpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9lcXVpcGUnLAoJCSR0aGlzLT5MYW5nKCdlcXVpcGUnKSk7CiRzbWFydHktPmFzc2lnbignbm9tJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ25vbScsJG5vbSw5MCwxNTApKTsKLyoqLwoKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfam91ZXVyJywKCQkkdGhpcy0+TGFuZygnam91ZXVyJykpOwokc21hcnR5LT5hc3NpZ24oJ2NsYXNzZW1lbnQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnY2xhc3NlbWVudCcsJGNsYXNzZW1lbnQsMzAsODApKTsKCiRzbWFydHktPmFzc2lnbignZWNhcnQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZWNhcnQnLCRlY2FydCwxMCw4MCkpOwoJCQkJCQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9hZHZlcnNhaXJlJywKCQkkdGhpcy0+TGFuZygnYWR2ZXJzYWlyZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdhZHZlcnNhaXJlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2FkdmVyc2FpcmUnLCRhZHZlcnNhaXJlLDgwLDE1MCkpOwoJCSRzbWFydHktPmFzc2lnbigncHRzX2FkdmVyc2FpcmUnLAoJCQkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdwdHNfYWR2ZXJzYWlyZScsJHB0c19hZHZlcnNhaXJlLDEwLDE1MCkpOwoJCQkJCQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF92aWN0b2lyZV9kZWZhaXRlJywKCQkkdGhpcy0+TGFuZygndmljX2RlZicpKTsKCQkKCQkkc21hcnR5LT5hc3NpZ24oJ3ZpY3RvaXJlJywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3ZpY3RvaXJlJywkaXRlbXMgPSBhcnJheSgiViI9PiIxIiwiRCI9PiIwIiksJHNlbGVjdGVkaW5kZXggPSAkc2VsZWN0ZWRpbmRleDEsICRzZWxlY3RlZHZhbHVlPSR2aWN0b2lyZSw1KSk7Ci8qCQkKJHNtYXJ0eS0+YXNzaWduKCd2aWNfZGVmJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3ZpY19kZWYnLCR2aWNfZGVmLDUsMTApKTsKKi8KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfcG9pbnRzJywKCQkkdGhpcy0+TGFuZygncG9pbnRzJykpOwoJCSRpdGVtc2NvZWZmID0gCiRzbWFydHktPmFzc2lnbignY29lZmYnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2NvZWZmJywkaXRlbXNjb2VmZiA9IGFycmF5KCIwIj0+IjAuMDAiLCAiMCw1Ij0+IjAuNTAiLCIwLDc1Ij0+IjAuNzUiLCAiMSI9PiIxLjAwIiwgIjEsMjUiPT4iMS4yNSIsICIxLDUiPT4iMS41MCIpLCRzZWxlY3RlZGluZGV4PSRjb2VmZix2aWN0b2lyZSwgJHNlbGVjdGVkdmFsdWU9JGNvZWZmLDUpKTsJCQkJCQoJCQkJCQkJCQkJCQkJCQkKCiRzbWFydHktPmFzc2lnbignY2FuY2VsJywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnY2FuY2VsJywKCQkJCQkJJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CiRzbWFydHktPmFzc2lnbignYmFjaycsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2JhY2snLAoJCQkJCQkkdGhpcy0+TGFuZygnYmFjaycpKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdHJlc3VsdC50cGwnKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.edit_team.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXyknJykKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFVzZScpKQogIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJykpOwoJcmV0dXJuOwogICAKICB9CgokZGIgPSYgJHRoaXMtPkdldERiKCk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CiRwaGFzZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdQaGFzZV9lbl9jb3VycycpOwokZWRpdCA9IDA7Ly9zZXJ0IMOgIGRpc3Rpbmd1ZXIgbCdham91dCBwYXIgZMOpZmF1dCAwIGQndW5lIMOpZGl0aW9uICg9IDEpCiRyZWNvcmRfaWQgPSAnJzsKaWYoIGlzc2V0KCAkcGFyYW1zWydyZWNvcmRfaWQnXSApICYmICRwYXJhbXNbJ3JlY29yZF9pZCddICE9ICcnKSAgICAKewoJCgkkcmVjb3JkX2lkID0gJHBhcmFtc1sncmVjb3JkX2lkJ107CgkkZWRpdD0xOwoJICAgIAoKCiAgICAvLyBmaW5kIHRoZSB1c2VyCiAgICAkcXVlcnkgPSAiU0VMRUNUIGVxLnNhaXNvbiwgZXEucGhhc2UsZXEubGliZXF1aXBlLCBlcS5saWJkaXZpc2lvbixlcS5saWVuZGl2aXNpb24sZXEuZnJpZW5kbHluYW1lLGVxLnR5cGVfY29tcGV0LCBlcS5pZGRpdixlcS5pZHBvdWxlLHRjLmlkIEFTIGluZGV4MSx0Yy5uYW1lIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgQVMgZXEsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyBBUyB0YyBXSEVSRSBlcS50eXBlX2NvbXBldCA9IHRjLmNvZGVfY29tcGV0IEFORCAgZXEuaWQgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+R2V0Um93KCRxdWVyeSwgYXJyYXkoICRyZWNvcmRfaWQgKSk7CiAgICBpZigkZGJyZXN1bHQpCiAgICAgIAoJewoJCS8vbGlzdGUgZGVzIGRvbm7DqWVzIGEgYWZmaWNoZXIgZGFucyBsZSBmb3JtdWxhaXJlCgkJLy9zYWlzb24sIHBoYXNlLCBsaWJlcXVpcGUsbGliZGl2aXNpb24gZnJpZW5kbHluYW1lCgkJJHNhaXNvbiA9ICRkYnJlc3VsdFsnc2Fpc29uJ107CgkJJHBoYXNlID0gJGRicmVzdWx0WydwaGFzZSddOwoJCSRsaWJlcXVpcGUgPSAkZGJyZXN1bHRbJ2xpYmVxdWlwZSddOwoJCSRsaWJkaXZpc2lvbiA9ICRkYnJlc3VsdFsnbGliZGl2aXNpb24nXTsKCQkkbGllbmRpdmlzaW9uID0gJGRicmVzdWx0WydsaWVuZGl2aXNpb24nXTsKCQkkZnJpZW5kbHluYW1lID0gJGRicmVzdWx0WydmcmllbmRseW5hbWUnXTsKCQkkdHlwZV9jb21wZXQgPSAkZGJyZXN1bHRbJ3R5cGVfY29tcGV0J107CgkJJGlkZGl2ID0gJGRicmVzdWx0WydpZGRpdiddOwoJCSRpZHBvdWxlID0gJGRicmVzdWx0WydpZHBvdWxlJ107CgkJLy9vbiB2YSBjaGVyY2hlciBsJ29yZ2FuaXNtZSBxdWkgb3JnYW5pc2UgbGEgY29tcGV0CgkJJGV4cGxvZGUxID0gZXhwbG9kZSgiJiIsJGxpZW5kaXZpc2lvbik7CgkJJGV4cGxvZGUyID0gZXhwbG9kZSgiPSIsICRleHBsb2RlMVsyXSk7CgkJJG9yZ2FuaXNtZSA9ICRleHBsb2RlMlsxXTsKCQkkaW5kZXggPSAkZGJyZXN1bHRbJ2luZGV4MSddIC0gMTsKCQkkbmFtZSA9ICRkYnJlc3VsdFsnbmFtZSddOwoJCSR0eXBlX2NvbXBldF9zZWxlY3RlZCA9ICRkYnJlc3VsdFsndHlwZV9jb21wZXQnXTsKCQkKCQkKCQkvLyRvcmdhbmlzbWUgPSBnZXRfb3JnYW5pc21lKCRsaWJkaXZpc2lvbik7CgkJCgkJCgl9Cn0KCiAgCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywKCQkgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCggJGlkLCAnZG9fZWRpdF90ZWFtJywgJHJldHVybmlkICkgKTsKaWYoJGVkaXQ9PScxJykKewoJJHNtYXJ0eS0+YXNzaWduKCdyZWNvcmRfaWQnLAoJCQkgICAgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCAkaWQsICdyZWNvcmRfaWQnLCAKCQkJKGlzc2V0KCRwYXJhbXNbJ3JlY29yZF9pZCddKT8kcGFyYW1zWydyZWNvcmRfaWQnXToiIikpKTsKfQokbGlzdHNhaXNvbnMgPSBhcnJheSggJzIwMTQtMjAxNSc9PicyMDE0LTIwMTUnKTsKJGxpc3RwaGFzZSA9IGFycmF5KCcxJz0+JzEnLCAnMic9PicyJyk7CiAgIAokc21hcnR5LT5hc3NpZ24oJ3NhaXNvbicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnc2Fpc29uJywkbGlzdHNhaXNvbnMsCgkJKGlzc2V0KCRzYWlzb24pPyRzYWlzb246JHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpKSkpOwokc21hcnR5LT5hc3NpZ24oJ3BoYXNlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdwaGFzZScsJGxpc3RwaGFzZSwKCQkoaXNzZXQoJHBoYXNlKT8kcGhhc2U6JHRoaXMtPkdldFByZWZlcmVuY2UoJ1BoYXNlX2VuX2NvdXJzJykpKSk7CiRzbWFydHktPmFzc2lnbignbGliZXF1aXBlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2xpYmVxdWlwZScsCgkJKGlzc2V0KCRsaWJlcXVpcGUpPyRsaWJlcXVpcGU6IiIpLDMwLDE1MCkpOwokc21hcnR5LT5hc3NpZ24oJ2xpYmRpdmlzaW9uJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2xpYmRpdmlzaW9uJywKCQkoaXNzZXQoJGxpYmRpdmlzaW9uKT8kbGliZGl2aXNpb246IiIpLDMwLDE1MCkpOwokc21hcnR5LT5hc3NpZ24oJ2ZyaWVuZGx5bmFtZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdmcmllbmRseW5hbWUnLAoJCShpc3NldCgkZnJpZW5kbHluYW1lKT8kbGliZGl2aXNpb246IiIpLDEwLDgwKSk7CiRzbWFydHktPmFzc2lnbignaWRkaXYnLCAKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2lkZGl2JywgCgkJKGlzc2V0KCRpZGRpdik/JGlkZGl2OiIiKSwgMTAsMjApKTsKJHNtYXJ0eS0+YXNzaWduKCdpZHBvdWxlJywgCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpZHBvdWxlJywgCgkJKGlzc2V0KCRpZHBvdWxlKT8kaWRwb3VsZToiIiksIDEwLDIwKSk7CgkJCgokbnVtZXJvX2NsdWIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY2x1Yl9udW1iZXInKTsKJGxpZ3VlID0gc3Vic3RyKCRudW1lcm9fY2x1YiwgMCwyKTsKaWYoJGVkaXQgPT0nMScpCnsKCSRzbWFydHktPmFzc2lnbignb3JnYW5pc21lJywgCgkJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdvcmdhbmlzbWUnLCAkb3JnYW5pc21lLDEwLDIwKSk7Cn0KZWxzZQp7Cgkkb3JnYW5pc21lWydsaWd1ZSddID0gJzEwJy4kbGlndWU7Cgkkb3JnYW5pc21lWydkZXBhcnRlbWVudCddID0gc3Vic3RyKCRudW1lcm9fY2x1YiwyLDIpOwoJJG9yZ2FuaXNtZVsnZmVkZXJhdGlvbiddID0gJzEwMDAwMSc7Cgkkc21hcnR5LT5hc3NpZ24oJ29yZ2FuaXNtZScsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnb3JnYW5pc21lJywkb3JnYW5pc21lKSk7Cn0KCgoJCS8vb24gZmFpdCBsZSB0b3VyIGRlcyBjb21ww6l0aXRpb25zIHBvc3NpYmxlcyBleGNlcHTDqSBVIHBvdXIgdW5kZWZpbmVkCiRxdWVyeTIgPSAiU0VMRUNUIG5hbWUsIGNvZGVfY29tcGV0IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIjsvLyIgV0hFUkUgaW5kaXZzID0gJzAnIjsKJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5Mik7CmlmKCRkYnJlc3VsdGF0ICYmICRkYnJlc3VsdGF0LT5SZWNvcmRDb3VudCgpPjApCnsKCXdoaWxlICgkZGJyZXN1bHRhdCAmJiAkcm93ID0gJGRicmVzdWx0YXQtPkZldGNoUm93KCkpCgkgIHsKCSAgIAkkdHlwZUNvbXBldFskcm93WyduYW1lJ11dID0gJHJvd1snY29kZV9jb21wZXQnXTsKCSAgfQp9CgovKgokc21hcnR5LT5hc3NpZ24oJ3R5cGVfY29tcGV0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3R5cGVfY29tcGV0JywkdHlwZV9jb21wZXQsJHNlbGVjdGVkaW5kZXggPSAkaW5kZXgsICRzZWxlY3RlZHZhbHVlPSRuYW1lKSk7CiovCiRzbWFydHktPmFzc2lnbigndHlwZV9jb21wZXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3R5cGVfY29tcGV0JywkdHlwZUNvbXBldCwKCQkoaXNzZXQoJHR5cGVfY29tcGV0KT8kdHlwZV9jb21wZXQ6Ii0xIiksKGlzc2V0KCR0eXBlX2NvbXBldCk/JHR5cGVfY29tcGV0OiIiKSkpOwoJCiRzbWFydHktPmFzc2lnbignQWpvdXRlcicsCgkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnQWpvdXRlcicsICR0aGlzLT5MYW5nKCdzdWJtaXRhc25ldycpLCAnY2xhc3M9ImJ1dHRvbiInKSk7CQkJCQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdzdWJtaXQnKSwgJ2NsYXNzPSJidXR0b24iJykpOwokc21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnY2FuY2VsJywgJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CiRzbWFydHktPmFzc2lnbignYmFjaycsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnYmFjaycsICR0aGlzLT5MYW5nKCdiYWNrJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywKCQkkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2VkaXR0ZWFtLnRwbCcpOwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.edit_type_compet.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKICB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCXJldHVybjsKICAgCiAgfQppZiggaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pICkKICB7CiAgICAkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZW5jb250cmVzJyk7CiAgICByZXR1cm47CiAgfQoKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ3VzZXJzJyk7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKCiRyZWNvcmRfaWQgPSAnJzsKaWYoICFpc3NldCggJHBhcmFtc1sncmVjb3JkX2lkJ10gKSB8fCAkcGFyYW1zWydyZWNvcmRfaWQnXSA9PSAnJykgICAgCnsKCQoJJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwoJICAgICRwYXJhbXNbJ2Vycm9yJ10gPSAxOwoJICAgICR0aGlzLT5SZWRpcmVjdCggJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zICk7CgkgICAgcmV0dXJuOwp9CgoKICAgIC8vIGZpbmQgdGhlIHVzZXIKICAgICRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyBXSEVSRSBpZCA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5HZXRSb3coJHF1ZXJ5LCBhcnJheSggJHBhcmFtc1sncmVjb3JkX2lkJ10gKSk7CiAgICBpZiggISRkYnJlc3VsdCkKICAgICAgewoJJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXN1bHRub3Rmb3VuZCcpKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIocmVzdWx0cywgJHBhcmFtcyk7CglyZXR1cm47CiAgICAgIH0KCWVsc2UKCXsKCQkkaWQgPSAkZGJyZXN1bHRbJ2lkJ107CgkJJG5hbWUgPSAkZGJyZXN1bHRbJ25hbWUnXTsKCQkkY29kZV9jb21wZXQgPSAkZGJyZXN1bHRbJ2NvZGVfY29tcGV0J107CgkJJGNvZWZmaWNpZW50ID0gJGRicmVzdWx0Wydjb2VmZmljaWVudCddOwoJCSRpbmRpdnMgPSAkZGJyZXN1bHRbJ2luZGl2cyddOwoJCQp9CgogICAKJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLAoJCSAgICAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCAkaWQsICdkb19hZGRfdHlwZV9jb21wZXQnLCAkcmV0dXJuaWQgKSApOwokc21hcnR5LT5hc3NpZ24oJ3JlY29yZF9pZCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAncmVjb3JkX2lkJywgJHBhcmFtc1sncmVjb3JkX2lkJ10gKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpLCAnY2xhc3M9ImJ1dHRvbiInKSk7CiRzbWFydHktPmFzc2lnbignbmFtZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ25hbWUnLCRuYW1lLDExNSwyMDApKTsKJHNtYXJ0eS0+YXNzaWduKCdjb2RlX2NvbXBldCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2NvZGVfY29tcGV0JywkY29kZV9jb21wZXQsNSwxMCkpOwokc21hcnR5LT5hc3NpZ24oJ2NvZWZmaWNpZW50JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2NvZWZmaWNpZW50JywkY29lZmZpY2llbnQsMyw1KSk7CgkJJGl0ZW1zaW5kaXZzID0gYXJyYXkoIk5vbiI9PiIwIiwiT3VpIj0+IjEiKTsKJHNtYXJ0eS0+YXNzaWduKCdpbmRpdnMnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ2luZGl2cycsJGl0ZW1zaW5kaXZzKSk7CiRzbWFydHktPmFzc2lnbignZWRpdCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2VkaXQnLCdPdWknKSk7CQkJCQkJCQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnc3VibWl0JyksICdjbGFzcz0iYnV0dG9uIicpKTsKJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdjYW5jZWwnLAoJCQkJCQkkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdiYWNrJywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnYmFjaycsCgkJCQkJCSR0aGlzLT5MYW5nKCdiYWNrJykpKTsKCiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdlZGl0X3R5cGVfY29tcGV0LnRwbCcpOwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.equipe.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwokZGIgPSYgJHRoaXMtPkdldERiKCk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CiRyZWNvcmRfaWQgPSAnJzsKaWYoIWlzc2V0KCRwYXJhbXNbJ3JlY29yZF9pZCddKSB8fCAkcGFyYW1zWydyZWNvcmRfaWQnXSA9PScnKQp7CgkkbWVzc2FnZSA9ICdVbiBwYiBlc3Qgc3VydmVudSc7Cn0KZWxzZQp7CgkkcmVjb3JkX2lkID0gJHBhcmFtc1sncmVjb3JkX2lkJ107CgkvL2xlIG51bcOpcm8gZGUgbCfDqXF1aXBlIGVzdCBvaywgb24gY29udGludWUKCS8vb24gdmEgZCdhYm9yZCByw6ljdXDDqXJlciBsZSBjbGFzc2VtZW50IGRlIGNldHRlIMOpcXVpcGUKCSRxdWVyeSA9ICJTRUxFQ1QgY2x0LCBqb3VlLGVxdWlwZSxwdHMgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2xhc3NlbWVudCBXSEVSRSBpZGVxdWlwZSA9ID8gQU5EIHNhaXNvbiA9ID8gT1JERVIgQlkgaWQgQVNDIjsKCSRkYnJlc3VsdD0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJlY29yZF9pZCwkc2Fpc29uKSk7CgkKCSRyb3dhcnJheSA9IGFycmF5KCk7CglpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCgl7CgkJd2hpbGUoJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQl7CgkJCSRjbGFzc2VtZW50ID0gJHJvd1snY2x0J107CgkJCWlmKCRjbGFzc2VtZW50PT0nMCcpCgkJCXsKCQkJCSRjbGFzc2VtZW50ID0gJy0nOwoJCQl9CgkJCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJCQkkb25lcm93LT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJCQkkcG91bGUgPSAkcm93Wydwb3VsZSddOwoJCQkkb25lcm93LT5pZD0gJHJvd1snaWQnXTsKCQkJJG9uZXJvdy0+aWRwb3VsZSA9ICRyb3dbJ2lkcG91bGUnXTsKCQkJJG9uZXJvdy0+aWRkaXYgPSAkcm93WydpZGRpdiddOwoJCQkvLyRvbmVyb3ctPmVxdWlwZT0gJHJvd1snZXF1aXBlJ107CgkJCSRvbmVyb3ctPmNsdD0gICRjbGFzc2VtZW50OwoJCQkkb25lcm93LT5lcXVpcGU9ICRyb3dbJ2VxdWlwZSddOwoJCQkkb25lcm93LT5qb3VlPSAkcm93Wydqb3VlJ107CgkJCSRvbmVyb3ctPnB0cz0gJHJvd1sncHRzJ107CgkJCS8vJG9uZXJvdy0+dHlwZV9jb21wZXQgPSAkcm93Wydjb2RlX2NvbXBldCddOwoJCQkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJCQkkcm93YXJyYXlbXT0gJG9uZXJvdzsKCQl9Cgl9Cn0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Jlc3VsdHNmb3VuZHRleHQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwoKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZXF1aXBlLnRwbCcpOwojCiNFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.erase_spid.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCQlpZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CgkJJGRiID0mICR0aGlzLT5HZXREYigpOwoJCWlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKCQl7CgkJJHBhcmFtcyA9IGFycmF5KCdtZXNzYWdlJz0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSwgJ2FjdGl2ZV90YWInID0+ICd1c2VycycpOwoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCcnLCAkcGFyYW1zKTsKCQkvKmVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJykpOwoJCXJldHVybjsqLwoJCX0KCgkJJHJlY29yZF9pZCA9ICcnOwoJCWlmIChpc3NldCgkcGFyYW1zWydyZWNvcmRfaWQnXSkpCgkJewoJCQkkcmVjb3JkX2lkID0gJHBhcmFtc1sncmVjb3JkX2lkJ107CgkJfQoJCSRjb2VmY2hhbXAgPSAnJzsKCQlpZihpc3NldCgkcGFyYW1zWydjb2VmY2hhbXAnXSkpCgkJewoJCQkkY29lZmNoYW1wID0gJHBhcmFtc1snY29lZmNoYW1wJ107CgkJfQoJCSRudW1qb3VybiA9ICcnOwoJCWlmKGlzc2V0KCRwYXJhbXNbJ251bWpvdXJuJ10pKQoJCXsKCQkJJG51bWpvdXJuID0gJHBhcmFtc1snbnVtam91cm4nXTsKCQl9CgkJJHZkID0gJyc7CgkJaWYoaXNzZXQoJHBhcmFtc1sndmQnXSkpCgkJewoJCQkkdmQgPSAkcGFyYW1zWyd2ZCddOwoJCX0KCQkkcG9pbnRyZXMgPSAnJzsKCQlpZihpc3NldCgkcGFyYW1zWydwb2ludHJlcyddKSkKCQl7CgkJCSRwb2ludHJlcyA9ICRwYXJhbXNbJ3BvaW50cmVzJ107CgkJfQoJCQoJCQoJCS8vTm93IHJlbW92ZSB0aGUgYXJ0aWNsZQoJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBTRVQgbnVtam91cm4gPSA/LCBjb2VmZiA9ID8sIHBvaW50cmVzID0gPywgdmljdG9pcmUgPSA/IFdIRVJFIGlkID0gPyI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG51bWpvdXJuLCAkY29lZmNoYW1wLCRwb2ludHJlcywkdmQsICRyZWNvcmRfaWQpKTsKCQkKCQkJaWYoISRkYnJlc3VsdCkKCQkJewoJCQkJZWNobyAkZGItPkVycm9yTXNnKCk7CgkJCQkKCQkJfQoJCQoJCQoKJHRoaXMtPlNldE1lc3NhZ2UoJ1LDqXN1bHRhdCBtb2RpZmnDqScpOwokdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZXN1bHRzJyk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.getPouleClassement.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCAoICRnQ21zICkgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwovL29uIHbDqXJpZmllIGxlcyBwZXJtaXNzaW9ucyBkJ2Fib3JkCmlmKCEgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBVc2UnKSkgZXhpdDsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKJGVycm9yID0gMDsKJGRlc2lnbmF0aW9uID0gJyc7CgokaWRwb3VsZSA9ICcnOwoJaWYoaXNzZXQoJHBhcmFtc1snaWRwb3VsZSddKSAmJiAkcGFyYW1zWydpZHBvdWxlJ10gIT0nJyApCgl7CgkJJGlkcG91bGUgPSAkcGFyYW1zWydpZHBvdWxlJ107Cgl9CgllbHNlCgl7CgkJJGVycm9yKys7Cgl9CgkKJGlkZGl2ID0gJyc7CglpZihpc3NldCgkcGFyYW1zWydpZGRpdiddKSAmJiAkcGFyYW1zWydpZGRpdiddICE9JycpCgl7CgkJJGlkZGl2ID0gJHBhcmFtc1snaWRkaXYnXTsKCX0KCWVsc2UKCXsKCQkkZXJyb3IrKzsKCX0KJHJlY29yZF9pZCA9ICcnOwoJaWYoaXNzZXQoJHBhcmFtc1sncmVjb3JkX2lkJ10pICYmICRwYXJhbXNbJ3JlY29yZF9pZCddICE9JycpCgl7CgkJJHJlY29yZF9pZCA9ICRwYXJhbXNbJ3JlY29yZF9pZCddOwoJfQoJZWxzZQoJewoJCSRlcnJvcisrOwoJfQokY29kZV9jb21wZXQgPSAnJzsKCWlmKGlzc2V0KCRwYXJhbXNbJ3R5cGVfY29tcGV0J10pICYmICRwYXJhbXNbJ3R5cGVfY29tcGV0J10gIT0nJykKCXsKCQkkY29kZV9jb21wZXQgPSAkcGFyYW1zWyd0eXBlX2NvbXBldCddOwoJfQoJZWxzZQoJewoJCSRlcnJvcisrOwoJfQppZigkZXJyb3I+MCkKewoJJHRoaXMtPlNldE1lc3NhZ2UoJ1BhcmFtw6h0cmVzIG1hbnF1YW50cycpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignZXF1aXBlcycpOwoJCn0KLy9ib24gdHQgdmEgYmllbiwgdHQgZXN0IE9rCiRzZXJ2aWNlID0gbmV3IFNlcnZpY2UoKTsKJHJlc3VsdCA9ICRzZXJ2aWNlLT5nZXRQb3VsZUNsYXNzZW1lbnQoJGlkZGl2LCAkaWRwb3VsZSk7Ci8vdmFyX2R1bXAoJHJlc3VsdCk7CgovL29uIHbDqXJpZmllIHF1ZSBsZSByZXN1bHRhdCBlc3QgYmllbiB1biBhcnJheQoKaWYoIWlzX2FycmF5KCRyZXN1bHQpIHx8IGNvdW50KCRyZXN1bHQpPT0wKSAKewoJLy9vbiByZXZpZW50IMOgIGxhIGNhc2UgZMOpcGFydAoJJHRoaXMtPlNldE1lc3NhZ2UoJ0xlIHNlcnZpY2UgZXN0IGNvdXDDqScpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignZXF1aXBlcycpOwoJCn0KLy90dCB2YSBiaWVuLCBvbiBjb250aW51ZQovL29uIHN1cHByaW1lIHR0IGNlIHF1aSDDqXRhaXQgZHMgbGEgYmRkIHBvdXIgY2V0dGUgcG91bGUKJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jbGFzc2VtZW50IFdIRVJFIGlkZGl2ID0gPyBBTkQgaWRwb3VsZT0gPyBBTkQgaWRlcXVpcGUgPSA/IEFORCBzYWlzb24gPSA/IjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGlkZGl2LCAkaWRwb3VsZSwgJHJlY29yZF9pZCwkc2Fpc29uX2NvdXJhbnRlKSk7CiRpPTA7Ly9vbiBpbml0aWFsaXNlIHVuIGNvbXB0ZXVyIAovL29uIHLDqWN1cMOocmUgbGUgcsOpc3VsdGF0IGV0IG9uIGZhaXQgbGUgZm9yZWFjaApmb3JlYWNoKCRyZXN1bHQgYXMgJGNsZSA9PiR0YWIpCnsKCSRwb3VsZSA9ICR0YWJbJ3BvdWxlJ107CgkkY2x0ID0gJHRhYlsnY2x0J107CgkkZXF1aXBlID0gJHRhYlsnZXF1aXBlJ107Cgkkam91ZSA9ICR0YWJbJ2pvdWUnXTsKCSRwdHMgPSAkdGFiWydwdHMnXTsKCQoJJHF1ZXJ5MiA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2xhc3NlbWVudCAoaWQsaWRlcXVpcGUsIHNhaXNvbiwgY29kZV9jb21wZXQsIGlkZGl2LCBpZHBvdWxlLCBwb3VsZSwgY2x0LCBlcXVpcGUsIGpvdWUsIHB0cykgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiOwoJLy9lY2hvICRxdWVyeTI7CgkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCBhcnJheSgkcmVjb3JkX2lkLCRzYWlzb25fY291cmFudGUsJGNvZGVfY29tcGV0LCAkaWRkaXYsICRpZHBvdWxlLCRwb3VsZSwgJGNsdCwgJGVxdWlwZSwgJGpvdWUsJHB0cykpOwoJCglpZighJGRicmVzdWx0YXQpCgl7CgkJJGRlc2lnbmF0aW9uLj0gJGRiLT5FcnJvck1zZygpOwoJCSRzdGF0dXMgPSAnS28nOwoJCQoJfQoJZWxzZQoJewoJCSRkZXNpZ25hdGlvbi49IlLDqWN1cMOpcmF0aW9uIGR1IGNsYXNzZW1lbnQgZGUgbGEgcG91bGUgOiAiLiRwb3VsZTsKCQkkc3RhdHVzID0gIk9rIjsKCX0KCQp9CiRhY3Rpb24gPSAnZ2V0UG91bGVjbGFzc2VtZW50JzsKJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwpwaW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsJGRlc2lnbmF0aW9uLCRhY3Rpb24pOwokdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CiR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2VxdWlwZXMnKTsKCgoKIwojRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.individuelles.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyBhdXRldXIgOiBDbGF1ZGUgU0lPSEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjCiMgQ2V0dGUgcGFnZSByw6ljdXDDqHJlIGxlcyBjb21ww6l0aXRpb25zIGluZGl2aWR1ZWxsZXMgICAgICAgICAgICAgICAgICAgICAgIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKCgokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7CiRwYXJtcyA9IGFycmF5KCk7CiRyZXN1bHQ9IGFycmF5ICgpOwovL29uIMOpdGFibGl0IGxhIGxpc3RlIGRlcyBjb21ww6l0aXRpb25zIGluZGl2aWR1ZWxsZXMgZHUgY2FsZW5kcmllcgokcXVlcnkxID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIgQVMgY2FsLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgQVMgdGMgV0hFUkUgY2FsLnR5cGVfY29tcGV0ID0gdGMuY29kZV9jb21wZXQiOwovL2lsIHMnYWdpdCBkZSBjb21ww6l0aXRpb25zIGluZGl2aWR1ZWxsZXMgPwokcXVlcnkxLj0iIEFORCB0Yy5pbmRpdnMgPSAxIEFORCBkYXRlX2RlYnV0IDwgQ1VSREFURSgpIjsKCiRwYXJhbWV0cmVzID0gMDsKaWYoaXNzZXQoJHBhcmFtc1sndHlwZV9jb21wZXQnXSkgJiYgJHBhcmFtc1sndHlwZV9jb21wZXQnXSAhPScnKQp7CgkkcGFyYW1ldHJlcysrOwoJJHR5cGVfY29tcGV0ID0gJHBhcmFtc1sndHlwZV9jb21wZXQnXTsKCS8vb24gcmVnYXJkZSBzaSB1biBOwrAgZGUgam91cm7DqWUgZXN0IGVuIHBhcmFtw6h0cmUgw6lnYWxlbWVudAoJJHF1ZXJ5MS49IiBBTkQgdGMuY29kZV9jb21wZXQgPSA/IjsKCSRwYXJtc1sndHlwZV9jb21wZXQnXSA9ICR0eXBlX2NvbXBldDsKCQoJCQoJCQkKfQppZihpc3NldCgkcGFyYW1zWyd0b3VyJ10pICYmICRwYXJhbXNbJ3RvdXInXSAhPScnKQp7CgkkcGFyYW1ldHJlcysrOwoJJHRvdXIgPSAkcGFyYW1zWyd0b3VyJ107CgkKCSRxdWVyeTEuPSIgQU5EIGNhbC5udW1qb3VybiA9ID8iOwoJJHBhcm1zWyd0b3VyJ10gPSAkdG91cjsKfQoKCiRxdWVyeTEuPSIgT1JERVIgQlkgY2FsLmRhdGVfZGVidXQgQVNDIjsKaWYoY291bnQoJHBhcmFtZXRyZXMpPjApCnsKCSRyZXN1bHQxID0gJGRiLT5FeGVjdXRlKCRxdWVyeTEsJHBhcm1zKTsKfQplbHNlCnsKCSRyZXN1bHQxID0gJGRiLT5FeGVjdXRlKCRxdWVyeTEpOwp9Ci8vaWwgZmF1ZHJhIGFqb3V0ZXIgcXFjaCBwb3VyIGRpZmbDqXJlbmNpZXIgbGVzIHNhaXNvbnMKLy9pbCBmYXVkcmEgYXVzc2kgY29uc3RydWlyZSBkeW5hbWlxdWVtZW50IGxlcyB0YWJsZWF1IGRlIGxpY2VuY2VzIHNvdXMgZm9ybWUgZCdhcnJheQovKgokYXJyYXlfSSA9IHBpbmdfYWRtaW5fb3BzOjphcnJheV9jb2RlX2NvbXBldCgkdHlwZV9jb21wZXQ9J0knKTsKJGFycmF5X0ogPSBwaW5nX2FkbWluX29wczo6YXJyYXlfY29kZV9jb21wZXQoJHR5cGVfY29tcGV0PSdKJyk7CiRhcnJheV9WID0gcGluZ19hZG1pbl9vcHM6OmFycmF5X2NvZGVfY29tcGV0KCR0eXBlX2NvbXBldD0nVicpOwplY2hvICRhcnJheV9WOwp2YXJfZHVtcCgkYXJyYXlfVik7CiovCgoJaWYoJHJlc3VsdDEgJiYgJHJlc3VsdDEtPlJlY29yZENvdW50KCk+MCkKCXsKCQkkcm93Y2xhc3M9ICdyb3cxJzsKCQkkcm93YXJyYXk9IGFycmF5ICgpOwoJCQoJCXdoaWxlKCRyb3cxID0gJHJlc3VsdDEtPkZldGNoUm93KCkpCgkJewoJCQkvL29uIHLDqWN1cMOocmUgbGVzIHLDqXN1bHRhdHMKCQkJJGRhdGVfZGVidXQgPSAkcm93MVsnZGF0ZV9kZWJ1dCddOwoJCQkkZGF0ZV9maW4gPSAkcm93MVsnZGF0ZV9maW4nXTsKCQkJJG51bWpvdXJuID0gJHJvdzFbJ251bWpvdXJuJ107CgkJCSRuYW1lID0gJHJvdzFbJ25hbWUnXTsKCQkJJGNvZGUgPSAkcm93MVsnY29kZV9jb21wZXQnXTsJCQkKCQkJCgkJCS8vb24gaW5zdGFuY2llIGNlIHF1aSB2YSBmYWlyZSBsZXMgZW50w6p0ZXMKCQkJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7CgkJCSRvbmVyb3ctPnJvd2NsYXNzPSAkcm93Y2xhc3M7CgkJCSRvbmVyb3ctPm5hbWUgPSAkbmFtZTsKCQkJJG9uZXJvdy0+ZGF0ZV9ldmVudCA9ICRkYXRlX2RlYnV0OwoJCQkkb25lcm93LT52YWxldXIgPSAkaTsvL3Ryw6hzIGltcG9ydGFudCBwb3VyIGxlcyBib3VjbGVzCgkJCQoJCQkkYXJyYXkgPSBwaW5nX2FkbWluX29wczo6YXJyYXlfY29kZV9jb21wZXQoJHR5cGVfY29tcGV0PSRjb2RlKTsKCQkJJHF1ZXJ5MiA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJywgai5ub20sIGoucHJlbm9tKSBBUyBqb3VldXIsIGoubGljZW5jZSwgU1VNKHZpY3RvaXJlKSBBUyB2aWMsIGNvdW50KHZpY3RvaXJlKSBBUyBzdXIsIFNVTShwb2ludHJlcykgQVMgcHRzIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBBUyBzcCwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgQVMgaiAgV0hFUkUgc3AubGljZW5jZSA9IGoubGljZW5jZSBBTkQgc3AuZGF0ZV9ldmVudCBCRVRXRUVOID8gQU5EID8iOwoJCS8vCSR0YWIgPSAnYXJyYXknLidfJy4kY29kZTsKCQkvLwl2YXJfZHVtcCgkJHRhYik7CgkJCSRxdWVyeTIuPSIgQU5EIGoubGljZW5jZSBJTiAoICciIC4gaW1wbG9kZSgkYXJyYXksICInLCAnIikgLiAiJyApIjsKCQkJJHF1ZXJ5Mi49IiBHUk9VUCBCWSBqb3VldXIsai5saWNlbmNlIjsKCQkJLy9lY2hvICRxdWVyeTI7CgkJCSRyZXN1bHQyID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsIGFycmF5KCRkYXRlX2RlYnV0LCAkZGF0ZV9maW4pKTsKCQkJCgkJCQlpZigkcmVzdWx0MiAmJiAkcmVzdWx0Mi0+UmVjb3JkQ291bnQoKT4wKQoJCQkJewoJCQkJCS8vJGk9MDsKCQkJCQkkcm93YXJyYXkyID0gYXJyYXkoKTsKCQkJCQkkY29tcHRldXIgPSAwOwoJCQkJCQoJCQkJCXdoaWxlKCRyb3cyID0gJHJlc3VsdDItPkZldGNoUm93KCkpCgkJCQkJewoJCQkJCQkkbGljZW5jZSA9ICRyb3cyWydsaWNlbmNlJ107CgkJCQkJCSRvbmVyb3cyID0gbmV3IFN0ZENsYXNzKCk7CgkJCQkJCSRvbmVyb3cyLT5qb3VldXIgPSAkcm93Mlsnam91ZXVyJ107CgkJCQkJCSRvbmVyb3cyLT52aWMgPSAkcm93MlsndmljJ107CgkJCQkJCSRvbmVyb3cyLT5zdXIgPSAkcm93Mlsnc3VyJ107CgkJCQkJCSRvbmVyb3cyLT5wdHMgPSAkcm93MlsncHRzJ107CgkJCQkJCSRvbmVyb3cyLT5kZXRhaWxzID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAndXNlcl9yZXN1bHRzJywgJHJldHVybmlkLCAiRMOpdGFpbHMiLGFycmF5KCdsaWNlbmNlJz0+JGxpY2VuY2UsJ2RhdGVfZGVidXQnPT4kZGF0ZV9kZWJ1dCwgJ2RhdGVfZmluJz0+JGRhdGVfZmluKSkgOwoJCQkJCQkkb25lcm93Mi0+Y29tcHRldXIgPSAkY29tcHRldXI7CgkJCQkJCS8qCgkJCQkJCS8vb24gY29tbWVuY2UgbGEgdHJvaXNpw6htZSByZXF1ZXRlIAoJCQkJCQkvL29uIHLDqWN1cMOocmUgbGUgZMOpdGFpbAoJCQkJCQkkcXVlcnkzID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBXSEVSRSBsaWNlbmNlID0gPyBBTkQgZGF0ZV9ldmVudCA9ID8iOwoJCQkJCQkkZGJyZXN1bHQzID0gJGRiLT5FeGVjdXRlKCRxdWVyeTMsIGFycmF5KCRsaWNlbmNlLCRkYXRlX2RlYnV0KSk7CgkJCQkJCQoJCQkJCQlpZigkZGJyZXN1bHQzICYmICRkYnJlc3VsdDMtPlJlY29yZENvdW50KCk+MCkKCQkJCQkJewoJCQkJCQkJLy91biBub3V2ZWF1IHdoaWxlIGV0IG91aSAhCgkJCQkJCQl3aGlsZSgkcm93MyA9ICRkYnJlc3VsdDMtPkZldGNoUm93KCkpCgkJCQkJCQl7CgkJCQkJCQkJJG9uZXJvdzMgPSBuZXcgU3RkQ2xhc3MoKTsKCQkJCQkJCQkkb25lcm93My0+am91ZXVyID0gJHJvdzJbJ2pvdWV1ciddOwoJCQkJCQkJCSRvbmVyb3czLT5qb3VldXIgPSAkcm93Mlsnam91ZXVyJ107CgkJCQkJCQkJJG9uZXJvdzMtPmpvdWV1ciA9ICRyb3cyWydqb3VldXInXTsKCQkJCQkJCQkkb25lcm93My0+am91ZXVyID0gJHJvdzJbJ2pvdWV1ciddOwoJCQkJCQkJfQoJCQkJCQl9CgkJCQkJCSovCgkJCQkJCQoJCQkJCSRyb3dhcnJheTJbXSA9ICRvbmVyb3cyOwkKCQkJCQl9Ly9maW4gZHUgZGV1eGnDqG1lIHdoaWxlCgkJCQkJCgkJCQkJJHNtYXJ0eS0+YXNzaWduKCdwcm9kc18nLiRpLCRyb3dhcnJheTIpOwoJCQkJCSRzbWFydHktPmFzc2lnbignaXRlbXNjb3VudF8nLiRpLCBjb3VudCgkcm93YXJyYXkyKSk7CgkJCQkJdW5zZXQoJHJvd2FycmF5Mik7CgkJCQkJLy91bnNldCgkJHRhYik7CgkJCQkJJGkrKzsJCgkJCQkJCgkJCQl9Ly9maW4gZHUgJHJlc3VsdDIKCQkJCQoJCQkkcm93YXJyYXlbXSAgPSAkb25lcm93OwoJCQkkc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKCQkJCQoJCX0vL2ZpbiBkdSBwcmVtaWVyIHdoaWxlCgkJCQkKCQkKCX0vL2ZpbiBkdSBpZiAkcmVzdWx0MQoJCgokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7CQkJCQovL2ZhaXJlIGFwcGFyYWl0cmUgbGVzIHBvaW50cyB0b3RhdXggZXQgc29tbWUgdmljdG9pcmUgZW4gYmFzID8gQ2Ugc2VyYWl0IHBhcyBtYWwKLyoqLwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2luZGl2aWR1ZWxsZXMzLnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.mass_action.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy9jZSBmaWNoaWVyIGZhaXQgZGVzIGFjdGlvbnMgZGUgbWFzc2UsIGlsIGVzdCBhcHBlbMOpIGRlcHVpcyBsJ29uZ2xldCBkZSByw6ljdXDDqXJhdGlvbiBkZXMgaW5mb3Mgc3VyIGxlcyBqb3VldXJzCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwovL3Zhcl9kdW1wKCRwYXJhbXNbJ3NlbCddKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwppZiAoaXNzZXQoJHBhcmFtc1snc3VibWl0X21hc3NhY3Rpb24nXSkgJiYgaXNzZXQoJHBhcmFtc1snYWN0aW9uZGVtYXNzZSddKSApCiAgewogICAgIGlmKCBpc3NldCgkcGFyYW1zWydzZWwnXSkgJiYgaXNfYXJyYXkoJHBhcmFtc1snc2VsJ10pICYmCgljb3VudCgkcGFyYW1zWydzZWwnXSkgPiAwICkKICAgICAgCXsKICAgICAgICAJc3dpdGNoKCRwYXJhbXNbJ2FjdGlvbmRlbWFzc2UnXSkKCQl7CgkJCWNhc2UgInVuYWJsZSIgOgoJCQlmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkbGljZW5jZSApCgkgIAkJewoJICAgIAkJCXBpbmdfYWRtaW5fb3BzOjp1bmFibGVfcGxheWVyKCAkbGljZW5jZSApOwoJICAJCX0KCQkJJHRoaXMtPlNldE1lc3NhZ2UoJ0pvdWV1cnMgZMOpc2FjdGl2w6lzJyk7CgkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKCQkJYnJlYWs7CgkKCQkJY2FzZSAic2l0dWF0aW9uIiA6CgkJCS8vbGVzIGxpY2VuY2VzIGNvbGxlY3TDqWVzIHNvbnQgc3VwcG9zw6llcyDDqnRyZSBhY3RpdmVzCgkJCS8vcXVlIGZhaXQtb24gc2kgZWxsZXMgbmUgbGUgc29udCBwYXMgZW4gcsOpYWxpdMOpID8KCQkJLy9ib25uZSBxdWVzdGlvbgoJCQkvL29uIHByZW5kIGxlcyB2YXJpYWJsZXMgbsOpY2Vzc2FpcmVzCgkKCQkJJG1lc3NhZ2U9J1JldHJvdXZleiB0b3V0ZXMgbGVzIGluZm9zIGRhbnMgbGUgam91cm5hbCc7CgkJCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRsaWNlbmNlICkKCSAgCQl7CgkKCSAgICAJCQlwaW5nX2FkbWluX29wczo6cmV0cmlldmVfc2l0X21lbnMoICRsaWNlbmNlICk7CgkgIAkJfQoJCQkvLyRtZXNzYWdlLj0nPC91bD4nOwoJCQkkdGhpcy0+U2V0TWVzc2FnZSgiJG1lc3NhZ2UiKTsKCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigic2l0dWF0aW9uIik7CgkJCWJyZWFrOwoJCgkJCWNhc2UgImRlbGV0ZV90ZWFtX3Jlc3VsdCIgOgoJCQkvL2xlcyBsaWNlbmNlcyBjb2xsZWN0w6llcyBzb250IHN1cHBvc8OpZXMgw6p0cmUgYWN0aXZlcwoJCQkvL3F1ZSBmYWl0LW9uIHNpIGVsbGVzIG5lIGxlIHNvbnQgcGFzIGVuIHLDqWFsaXTDqSA/CgkJCS8vYm9ubmUgcXVlc3Rpb24KCQkJLy9vbiBwcmVuZCBsZXMgdmFyaWFibGVzIG7DqWNlc3NhaXJlcwoJCgoJCQlmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkcmVjb3JkX2lkICkKCSAgCQl7CgkKCSAgICAJCQlwaW5nX2FkbWluX29wczo6ZGVsZXRlX3RlYW1fcmVzdWx0KCAkcmVjb3JkX2lkICk7CgkgIAkJfQoJCQkvLyRtZXNzYWdlLj0nPC91bD4nOwoJCgkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoInBvdWxlcyIpOwoJCQlicmVhazsKCQoJCQljYXNlICJkaXNwbGF5X29uX2Zyb250ZW5kIiA6CgkKCQkJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJGlkICkKCSAgCQl7CgkKCSAgICAJCQlwaW5nX2FkbWluX29wczo6ZGlzcGxheV9vbl9mcm9udGVuZCggJGlkICk7CgkgIAkJfQoJCgkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoInBvdWxlcyIpOwoJCQlicmVhazsKCQoJCQljYXNlICJkb19ub3RfZGlzcGxheSIgOgoJCgkJCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRyZWNvcmRfaWQgKQoJICAJCXsKCQoJICAgIAkJCXBpbmdfYWRtaW5fb3BzOjpkb19ub3RfZGlzcGxheSggJHJlY29yZF9pZCApOwoJICAJCX0KCQoJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCJwb3VsZXMiKTsKCQkJYnJlYWs7CgkKCQkJY2FzZSAiZmZ0dCIgOgoJCQlmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkam91cm5hbGlkICkKCSAgCQl7CgkgICAgCQkJcGluZ19hZG1pbl9vcHM6OmRlbGV0ZV9qb3VybmFsKCAkam91cm5hbGlkICk7CgkgIAkJfQoJCQlicmVhazsKCQoJCQljYXNlICJzcGlkIiA6CgkJCS8vJHNhaXNvbl9jb3VyYW50ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKCQkJJG1lc3NhZ2U9J1JldHJvdXZleiB0b3V0ZXMgbGVzIGluZm9zIGRhbnMgbGUgam91cm5hbCc7CgkJCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRsaWNlbmNlICkKCSAgCQl7CgkgICAgCQkJcGluZ19hZG1pbl9vcHM6OnJldHJpZXZlX3BhcnRpZXNfc3BpZCggJGxpY2VuY2UgKTsKCSAgCQl9CgkJCSR0aGlzLT5TZXRNZXNzYWdlKCIkbWVzc2FnZSIpOwoJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCJyZWN1cCIpOwoJCQlicmVhazsKCQoJCQljYXNlICJmZnR0X3BhcnRpZXMiIDoKCQkJLy8kc2Fpc29uX2NvdXJhbnRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwoJCQkkbWVzc2FnZT0nUmV0cm91dmV6IHRvdXRlcyBsZXMgaW5mb3MgZGFucyBsZSBqb3VybmFsJzsKCQkJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJGxpY2VuY2UgKQoJICAJCXsKCSAgICAJCQlwaW5nX2FkbWluX29wczo6cmV0cmlldmVfcGFydGllc19mZnR0KCAkbGljZW5jZSApOwoJICAJCX0KCQkJJHRoaXMtPlNldE1lc3NhZ2UoIiRtZXNzYWdlIik7CgkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoInJlY3VwZXJhdGlvbiIpOwoJCQlicmVhazsKCQoJCQljYXNlICJjb2VmZjA1IiA6CgkJCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRyZWNvcmRfaWQpCgkJCXsKCQkJCXBpbmdfYWRtaW5fb3BzOjpjb2VmZl9vcHMoICRyZWNvcmRfaWQsICRjb2VmZj0gJzAuNTAnICk7CgkJCX0KCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignc3BpZCcpOwoJCQlicmVhazsKCQoJCQljYXNlICJjb2VmZjA3NSIgOgoJCQlmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkcmVjb3JkX2lkKQoJCQl7CgkJCQlwaW5nX2FkbWluX29wczo6Y29lZmZfb3BzKCAkcmVjb3JkX2lkLCAkY29lZmY9ICcwLjc1JyApOwoJCQl9CgkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3NwaWQnKTsKCQkJYnJlYWs7CgkKCQkJY2FzZSAiY29lZmYxIiA6CgkJCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRyZWNvcmRfaWQpCgkJCXsKCQkJCXBpbmdfYWRtaW5fb3BzOjpjb2VmZl9vcHMoICRyZWNvcmRfaWQsICRjb2VmZj0nMS4wMCcgKTsKCQkJfQoJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzcGlkJyk7CgkJCWJyZWFrOwoJCgkJCWNhc2UgImNvZWZmMTI1IiA6CgkJCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRyZWNvcmRfaWQpCgkJCXsKCQkJCXBpbmdfYWRtaW5fb3BzOjpjb2VmZl9vcHMoICRyZWNvcmRfaWQsICRjb2VmZj0nMS4yNScpOwoJCQl9CgkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3NwaWQnKTsKCQkJYnJlYWs7CgkKCQkJY2FzZSAiY29lZmYxNSIgOgoJCQkkbWVzc2FnZT0nUmV0cm91dmV6IHRvdXRlcyBsZXMgaW5mb3MgZGFucyBsZSBqb3VybmFsJzsKCQkJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJHJlY29yZF9pZCkKCQkJewoJCQkJcGluZ19hZG1pbl9vcHM6OmNvZWZmX29wcyggJHJlY29yZF9pZCwgJGNvZWZmPSAnMS41MCcgKTsKCQkJfQoJCQkkdGhpcy0+U2V0TWVzc2FnZSgiJG1lc3NhZ2UiKTsKCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignc3BpZCcpOwoJCQlicmVhazsKCQoJCQljYXNlICJzdXBwX3NwaWQiIDoKCQkJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJHJlY29yZF9pZCkKCQkJewoJCQkJcGluZ19hZG1pbl9vcHM6OnN1cHBfc3BpZCggJHJlY29yZF9pZCApOwoJCQl9CgkJCSRtZXNzYWdlID0gJ1BhcnRpZXMocykgU1BJRCBzdXBwcmltw6llKHMpJzsKCQkJJHRoaXMtPlNldE1lc3NhZ2UoIiRtZXNzYWdlIik7CgkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3NwaWQnKTsKCQkJYnJlYWs7CgoJCgkJCWNhc2UgIm1hc2N1bGluIiA6CgkJCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRsaWNlbmNlICkKCSAgCQl7CgkgICAgCQkJcGluZ19hZG1pbl9vcHM6Om1hc2N1bGluKCAkbGljZW5jZSApOwoJICAJCX0KCQoJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdqb3VldXJzJyk7CgkJCWJyZWFrOwoJCQkKCQkJY2FzZSAiZmVtaW5pbiIgOgoJCQlmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkbGljZW5jZSApCgkgIAkJewoJICAgIAkJCXBpbmdfYWRtaW5fb3BzOjpmZW1pbmluKCAkbGljZW5jZSApOwoJICAJCX0KCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwoJCQlicmVhazsKCQogICAgICAJCX0vL2ZpbiBkdSBzd2l0Y2gKICAJfQoJZWxzZQoJewoJCSR0aGlzLT5TZXRNZXNzYWdlKCdQQiBkZSBzw6lsZWN0aW9uIGRlIG1hc3NlICEhJyk7CgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncmVjdXBlcmF0aW9uJyk7Cgl9Cn0KLyoqLwojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.par-equipes.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKICAgaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3ByZWZzLnBocCcpOwokbm9tX2VxdWlwZXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbm9tX2VxdWlwZXMnKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwokcmVzdWx0PSBhcnJheSgpOwokcGFybXMgPSBhcnJheSgpOwokcm93YXJyYXkgPSBhcnJheSgpOwovLyRyb3dhcnJheTEgPSBhcnJheSgpOwokaT0wOwokcXVlcnkgPSAiU0VMRUNUICosIHJlbi5pZCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBBUyByZW4sICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jYWxlbmRyaWVyIEFTIGNhbCAgV0hFUkUgcmVuLmRhdGVfZXZlbnQgPSBjYWwuZGF0ZV9kZWJ1dCBBTkQgY2FsLmRhdGVfZGVidXQ8PU5PVygpIjsvL0dST1VQIEJZIGRhdGVfZGVidXQgT1JERVIgQlkgZGF0ZV9kZWJ1dCBERVNDIjsKLyoKJHF1ZXJ5Lj0iIEFORCB0eXBlX2NvbXBldCA9ID8iOwokcGFybXNbJ3R5cGVfY29tcGV0J10gID0gJysnOwoKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwkcGFybXMpOwoqLwokcXVlcnkuPSIgR1JPVVAgQlkgcmVuLmRhdGVfZXZlbnQgT1JERVIgQlkgcmVuLmRhdGVfZXZlbnQgREVTQyI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwoKCWlmKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk+MCkKCXsKCQl3aGlsZSgkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJJGkrKzsKCQkJJGRhdGVfZGVidXQgPSAkcm93WydkYXRlX2V2ZW50J107CgkJCS8vZWNobyAibGEgZGF0ZSBkw6lidXQgZXN0IDoiLiRkYXRlX2RlYnV0OwoJCQkkZGF0ZWFyciA9IGV4cGxvZGUoJy0nLCAkZGF0ZV9kZWJ1dCk7CgkJCSRkYXRlZnIgPSAkZGF0ZWFyclsyXSAuICctJyAuICRkYXRlYXJyWzFdIC4gJy0nIC4gJGRhdGVhcnJbMF07CgkJCSRpZCA9ICRyb3dbJ2lkJ107CgkJCSRvbmVyb3cgPSBuZXcgU3RkQ2xhc3MoKTsKCQkJJG9uZXJvdy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7CgkJCSRvbmVyb3ctPmRhdGVfZXZlbnQgPSAkZGF0ZWZyOwoJCQkkb25lcm93LT52YWxldXIgPSAkaTsKCQkJCgkJCQoJCQkkcXVlcnkyID0gIlNFTEVDVCAqLGVxLmlkIEFTIGluZCxyZW4uZXF1YSwgcmVuLmVxdWIsIHJlbi5pZCwgZXEubGliZXF1aXBlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzIEFTIHJlbiwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgQVMgZXEgV0hFUkUgZXEuaWRwb3VsZSA9IHJlbi5pZHBvdWxlICBBTkQgcmVuLnNhaXNvbiA9IGVxLnNhaXNvbiBBTkQgKHJlbi5zY29yZWEgIT0wIEFORCBzY29yZWIgIT0wKSAgQU5EIHJlbi5kYXRlX2V2ZW50ID0gPyI7CgkJCSRwYXJtc1snZGF0ZV9ldmVudCddID0gJGRhdGVfZGVidXQ7CgkJCQoJCQlpZihpc3NldCgkcGFyYW1zWyd0eXBlX2NvbXBldCddKSAmJiAkcGFyYW1zWyd0eXBlX2NvbXBldCddKQoJCQl7CgkJCQkJJHF1ZXJ5Mi49IiBBTkQgZXEudHlwZV9jb21wZXQgPSA/IjsKCQkJCQkkcGFybXNbJ3R5cGVfY29tcGV0J10gPSAkcGFyYW1zWyd0eXBlX2NvbXBldCddOwoJCQl9CgkJCQoJCQkvL21vbiBjbHViIHVuaXF1ZW1lbnQgPwoJCQkkcXVlcnkyLj0iIEFORCByZW4uY2x1YiA9ICcxJyI7CgkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsICRwYXJtcyk7CgkJCSRyb3dhcnJheTIgPSBhcnJheSgpOwoJCQkJCgkJCWlmKCRkYnJlc3VsdGF0ICYmICRkYnJlc3VsdGF0LT5SZWNvcmRDb3VudCgpPjApCgkJCXsKCQkJCQoJCQkJJHJvd2NsYXNzPSAncm93MSc7CgkJCQkKCQkJCXdoaWxlKCRyb3cyID0gJGRicmVzdWx0YXQtPkZldGNoUm93KCkpCgkJCQl7CgkJCQkJCgkJCQkKCQkJCQkkZXF1YSA9ICRyb3cyWydlcXVhJ107CgkJCQkJJGVxdWIgPSAkcm93MlsnZXF1YiddOwoJCQkJCSRzY29yZWEgPSAkcm93Mlsnc2NvcmVhJ107CgkJCQkJJHNjb3JlYiA9ICRyb3cyWydzY29yZWInXTsKCQkJCQkkbGliZXF1aXBlID0gJHJvdzJbJ2xpYmVxdWlwZSddOwoJCQkJCSRmcmllbmRseW5hbWUgPSAkcm93MlsnZnJpZW5kbHluYW1lJ107CgkJCQkJJG9uZXJvdzIgPSBuZXcgU3RkQ2xhc3MoKTsKCQkJCQkkb25lcm93Mi0+cm93Y2xhc3MgPSRyb3djbGFzczsKCQkJCQkkb25lcm93Mi0+aWQ9ICRyb3cyWydpZCddOwoJCQkJCSRvbmVyb3cyLT5pbmQ9ICRyb3cyWydpbmQnXTsKCQkJCQkkb25lcm93Mi0+ZGF0ZV9ldmVudD0gJHJvdzJbJ2RhdGVfZXZlbnQnXTsKCQkJCQkkb25lcm93Mi0+ZXF1YiA9ICRyb3cyWydlcXViJ107CgkJCQkJJG9uZXJvdzItPmVxdWEgPSAkcm93MlsnZXF1YSddOwoJCQkJCSRvbmVyb3cyLT5mcmllbmRseW5hbWUgPSAkcm93MlsnZnJpZW5kbHluYW1lJ107CgkJCQkJJG9uZXJvdzItPmxpYmVxdWlwZSA9ICRyb3cyWydsaWJlcXVpcGUnXTsKCQkJCQkvL2VjaG8gImVxdWlwZSBCIGVzdCA6ICIuJGVxdWI7CgoJCQkJCS8vJG9uZXJvdy0+ZXF1aXBlPSAkcm93WydlcXVpcGUnXTsKCQkJCQkkb25lcm93Mi0+bGliZWxsZT0gICRyb3cyWydsaWJlbGxlJ10gOwoJCQkJCQoJCQkJCWlmKGlzc2V0KCRmcmllbmRseW5hbWUpICYmICRmcmllbmRseW5hbWUgIT0nJykKCQkJCQl7CgkJCQkJCWlmICgkbGliZXF1aXBlID09ICRlcXVhKQoJCQkJCQl7CgkJCQkJCQkkb25lcm93Mi0+ZXF1YT0gJHJvdzJbJ2ZyaWVuZGx5bmFtZSddOwoJCQkJCQl9CgoJCQkJCQllbHNlewoJCQkJCQkJJG9uZXJvdzItPmVxdWE9ICRyb3cyWydlcXVhJ107CgkJCQkJCX0KCgkJCQkJfQoJCQkJCWVsc2V7CgkJCQkJCSRvbmVyb3cyLT5lcXVhPSAkcm93MlsnZXF1YSddOwoJCQkJCX0KCQkJCQkkb25lcm93Mi0+c2NvcmVhPSAkcm93Mlsnc2NvcmVhJ107CgkJCQkJJG9uZXJvdzItPnNjb3JlYj0gJHJvdzJbJ3Njb3JlYiddOwoJCQkJCQoJCQkJCWlmKGlzc2V0KCRmcmllbmRseW5hbWUpICYmICRmcmllbmRseW5hbWUgIT0nJykKCQkJCQl7CgkJCQkJCWlmICgkbGliZXF1aXBlID09ICRlcXViKQoJCQkJCQl7CgkJCQkJCQkkb25lcm93Mi0+ZXF1Yj0gJHJvdzJbJ2ZyaWVuZGx5bmFtZSddOwoJCQkJCQl9CgoJCQkJCQllbHNlewoJCQkJCQkJJG9uZXJvdzItPmVxdWI9ICRyb3cyWydlcXViJ107CgkJCQkJCX0KCgkJCQkJfQoJCQkJCWVsc2V7IAoJCQkJCQkkb25lcm93Mi0+ZXF1Yj0gJHJvdzJbJ2VxdWInXTsKCQkJCQl9CgkJCQkJJG9uZXJvdzItPmRldGFpbHM9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX2RldGFpbHNfcmVuY29udHJlcycsICRyZXR1cm5pZCwgJ0TDqXRhaWxzJywgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3cyWydpZCddLCAndGVtcGxhdGUnPT4nMScpKTsKCQkJCQkkb25lcm93Mi0+Y2xhc3M9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2NsYXNzZW1lbnRfZXF1aXBlcycsICRyZXR1cm5pZCwgJ0NsYXNzZW1lbnQnLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvdzJbJ2luZCddKSk7CgkJCQkJJHJvd2FycmF5MltdID0gJG9uZXJvdzI7CgkJCQkJCgkJCQkJCgkJCQl9Ly9maW4gZHUgZGV1eGnDqG1lIHdoaWxlCgkJCQkkc21hcnR5LT5hc3NpZ24oJ3Byb2RzXycuJGksJHJvd2FycmF5Mik7CgkJCQl1bnNldCgkcm93YXJyYXkyKTsKCQkJCQoJCQkJJHJvd2FycmF5W10gID0gJG9uZXJvdzsKCQkJCSRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwoJCQl9Ly8gZmluIGR1IGlmICRkYnJlc3VsdGF0CgkJCQoJCQkKCQl9CgkJCgl9CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2RldGFpbHNfcmVuY29udHJlLnRwbCcpOwoKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.participe.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKJHR5cGVfY29tcGV0ID0gJyc7CiRkZXNpZ25hdGlvbiA9ICcnOwokcm93YXJyYXkgPSBhcnJheSgpOwoKCWlmKCFpc3NldCgkcGFyYW1zWyd0eXBlX2NvbXBldCddKSB8fCAkcGFyYW1zWyd0eXBlX2NvbXBldCddID09ICcnKQoJewoJCSR0aGlzLT5TZXRNZXNzYWdlKCJwYXJhbWV0cmVzIG1hbnF1YW50cyIpOwoJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2NvbXBldHMnKTsKCX0KCWVsc2UKCXsKCQkkdHlwZV9jb21wZXQgPSAkcGFyYW1zWyd0eXBlX2NvbXBldCddOwoJfQoJCiRkYiA9ICR0aGlzLT5HZXREYigpOwokcXVlcnkgPSAiU0VMRUNUIGoubGljZW5jZSwgQ09OQ0FUX1dTKCcgJyxqLm5vbSwgai5wcmVub20gKSBBUyBqb3VldXIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBBUyBqIFdIRVJFIGouYWN0aWYgPSAnMScgIjsKLy9lY2hvICRxdWVyeTsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgoJaWYoISRkYnJlc3VsdCkKCXsKCQkkZGVzaWduYXRpb24uPSAkZGItPkVycm9yTXNnKCk7CgkJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2NvbXBldHMnKTsKCX0KCgkkc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsCgkJCSAgICAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCAkaWQsICdkb19wYXJ0aWNpcGUnLCAkcmV0dXJuaWQgKSApOwoJJHNtYXJ0eS0+YXNzaWduKCd0eXBlX2NvbXBldCcsCgkJCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwndHlwZV9jb21wZXQnLCR0eXBlX2NvbXBldCwxMCwxNSkpOwkKCWlmKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk+MCkKCXsKCQl3aGlsZSgkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJLy92YXJfZHVtcCgkcm93KTsKCQkJCgkJCSRsaWNlbmNlID0gJHJvd1snbGljZW5jZSddOwoJCQkkam91ZXVyID0gJHJvd1snam91ZXVyJ107CgkJCSRyb3dhcnJheVskbGljZW5jZV1bJ25hbWUnXSA9ICRqb3VldXI7CgkJCSRyb3dhcnJheVskbGljZW5jZV1bJ3BhcnRpY2lwZSddID0gZmFsc2U7CgkJCQoJCQkvL29uIHZhIGNoZXJjaGVyIHNpIGxlIGpvdWV1ciBlc3QgZMOpasOgIGRhbnMgbGEgdGFibGUgcGFydGljaXBlCgkJCSRxdWVyeTIgPSAiU0VMRUNUIGxpY2VuY2UsIHR5cGVfY29tcGV0IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpY2lwZSBXSEVSRSBsaWNlbmNlID0gPyBBTkQgdHlwZV9jb21wZXQgPSA/IjsKCQkJLy9lY2hvICRxdWVyeTI7CgkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsIGFycmF5KCRsaWNlbmNlLCAkdHlwZV9jb21wZXQpKTsKCQkJCgkJCWlmKCRkYnJlc3VsdGF0LT5SZWNvcmRDb3VudCgpPjApCgkJCXsKCQkJCXdoaWxlKCRyb3cyID0gJGRicmVzdWx0YXQtPkZldGNoUm93KCkpCgkJCQl7CgkJCQoJCQkJCgkJCQkJJHJvd2FycmF5WyRsaWNlbmNlXVsncGFydGljaXBlJ10gPSB0cnVlOwoJCQkJfQoJCQl9Ly9wcmludF9yKCRyb3dhcnJheSk7CgkJCQoJCQkKCQkJCQkJCgkJCQoJCQkKCQl9CgkJJHNtYXJ0eS0+YXNzaWduKCdyb3dhcnJheScsJHJvd2FycmF5KTsJCgkJCQoJfQoJJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpLCAnY2xhc3M9ImJ1dHRvbiInKSk7Cgkkc21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2NhbmNlbCcsCgkJCQkJCSR0aGlzLT5MYW5nKCdjYW5jZWwnKSkpOwoJJHNtYXJ0eS0+YXNzaWduKCdiYWNrJywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnYmFjaycsCgkJCQkJCSR0aGlzLT5MYW5nKCdiYWNrJykpKTsKCgkkc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLAoJCQkkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdwYXJ0aWNpcGUudHBsJyk7CiMKI0VPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.push_player.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykpIGV4aXQ7Ci8vbWV0dHJlIGxlcyBwZXJtcwojCiMgQ2V0dGUgcGFnZSB2YSBwb3Vzc2VyIHVuIGpvdWV1ciB2ZXJzIGxhIHRhYmxlIHJlY3VwCi8vbWV0dHJlIGxlcyBib25uZXMgcGVybWlzc2lvbnMKaWYoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgVXNlJykpCnsKCSR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKfQokbGljZW5jZSA9ICcnOwppZighaXNzZXQoJHBhcmFtc1snbGljZW5jZSddKSB8fCAkcGFyYW1zWydsaWNlbmNlJ10gPT0nJykKewoJJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ21pc3NpbmdfcGFyYW1ldGVycycpKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKfQplbHNlCnsKCSRsaWNlbmNlID0gJHBhcmFtc1snbGljZW5jZSddOwp9CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7Ci8vb24gdsOpcmlmaWUgbGEgcHLDqXNlbmNlIG91IG5vbiBkdSBqb3VldXIKJHF1ZXJ5ID0gIlNFTEVDVCBsaWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgV0hFUkUgbGljZW5jZSA9ID8gQU5EIHNhaXNvbiA9ID8iOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSwgJHNhaXNvbikpOwokY291bnQgPSAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk7CmlmKCRjb3VudD09MCkvL29uIGVzdCBvawp7CgkvL29uIGZhaXQgbGEgdG90YWxlIGVuIHLDqWN1cMOpcmFudCB0b3V0ZXMgbGVzIGRvbm7DqWVzID8KCS8vb8O5IG9uIGxhaXNzZSBsJ2FkbWluIGxlIGZhaXJlID8KCS8vcG91ciBsJ2hldXJlIG9uIGZhaXQgbGUgbWluaQoJJHF1ZXJ5MiA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyAoaWQsIHNhaXNvbiwgZGF0ZW1haiwgbGljZW5jZSwgc2l0X21lbnMsZmZ0dCxtYWpfZmZ0dCxzcGlkLG1hal9zcGlkLG1hal90b3RhbCxzcGlkX3RvdGFsKSBWQUxVRVMoJycsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIjsKCSRkYnJlc3VsdDIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJHNhaXNvbiwkbm93LCRsaWNlbmNlLCdKYW52aWVyIDIwMDAnLDAsMCwwLDAsMCwwKSk7CgkKCS8vb24gdGVzdGUgbGEgcmVxdWV0ZQoJaWYoISRkYnJlc3VsdDIpCgl7CgkJLy91bmUgZXJyZXVyID8gbGFxdWVsbGUgPwoJCSRtZXNzYWdlID0gJGRiLT5FcnJvck1zZygpOwoJCSRzdGF0dXMgPSAnUGIgSm91ZXVyIHBvdXNzw6knOwoJCSRhY3Rpb24gPSAncHVzaF9wbGF5ZXInOwoJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywkbWVzc2FnZSwkYWN0aW9uKTsKCQkkdGhpcy0+U2V0TWVzc2FnZSgiJG1lc3NhZ2UiKTsKCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZWN1cCcpOwoJCQoJfQoJZWxzZSAvL3RvdXQgcydlc3QgYmllbiBwYXNzw6kKCXsKCQkvL29uIMOpY3JpdCBkYW5zIGxlIGpvdXJuYWwKCQkkc3RhdHVzID0gJ0pvdWV1ciBwb3Vzc8OpJzsKCQkkZGVzaWduYXRpb24gPSAnam91ZXVyIHBvdXNzw6kgOiAnLiRsaWNlbmNlOwoJCSRhY3Rpb24gPSAncHVzaF9wbGF5ZXInOwoJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywkZGVzaWduYXRpb24sJGFjdGlvbik7CgkJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3JlY3VwJyk7Cgl9CgkKfQplbHNlCnsKCSR0aGlzLT5TZXRNZXNzYWdlKCdKb3VldXIgZMOpasOgIHByw6lzZW50ICEnKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3JlY3VwJyk7Cn0KCiMKI0VPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_all_parties.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKCiRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKJHF1ZXJ5ID0gIlNFTEVDVCBsaWNlbmNlLCBDT05DQVRfV1MoJyAnLCBub20sIHByZW5vbSkgQVMgam91ZXVyIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgV0hFUkUgYWN0aWYgPSAnMSciOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKJHJvd2NsYXNzPSAncm93MSc7CiRyb3dhcnJheT0gYXJyYXkgKCk7CgppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogIC8vIG9uIGluc3RhbmNpZSBsYSBjbGFzc2UgCgoJd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgCXsKCQkkc2VydmljZSA9IG5ldyBTZXJ2aWNlKCk7CgkJJGxpY2VuY2UgPSAkcm93WydsaWNlbmNlJ107CgkJJGpvdWV1ciA9ICRyb3dbJ2pvdWV1ciddOwoJCXBpbmdfYWRtaW5fb3BzOjpyZXRyaWV2ZV9wYXJ0aWVzX2ZmdHQoIiRsaWNlbmNlIik7CiAgICAgCX0KCQkKCQkKfS8vZmluIGR1IGlmICRkYnJlc3VsdAplbHNlIHtlY2hvICI8cD5QYXMgZGUgam91ZXVycyBhY3RpZnMuPC9wPiI7fQovKiovCgkKCSR0aGlzLT5TZXRNZXNzYWdlKCdWb2lyIEpvdXJuYWwnKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2ZmdHQnKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_all_parties_spid.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgICAgICAgICBSRUNVUEVSQVRJT04gREUgVE9VVEVTIExFUyBQQVJUSUVTIFNQSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL29uIHbDqXJpZmllIGxhIHBlcm1pc3Npb24gZCd1dGlsaXNlciBsZSBzY3JpcHQKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFVzZScpKQp7CgllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCXJldHVybjsKfQovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKJGRiID0gJHRoaXMtPkdldERiKCk7CiRkZXNpZ25hdGlvbiA9ICcnOwokbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CiRxdWVyeSA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJyxub20scHJlbm9tKSBhcyBwbGF5ZXIsIGxpY2VuY2UgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSBhY3RpZj0nMScgTElNSVQgMiI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwppZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKewoJIAoJLy9vbiBpbnN0YW5jaWUgbGEgY2xhc3NlIGV0IG9uIHZhIGNvbW1lbmNlciDDoCBib3VjbGVyCgkkc2VydmljZSA9IG5ldyBTZXJ2aWNlKCk7CgkKCXdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgl7CgkJJGxpY2VuY2UgPSAkcm93WydsaWNlbmNlJ107CQkKCQkkcGxheWVyID0gJHJvd1sncGxheWVyJ107CgkJCgkJCgkJcGluZ19hZG1pbl9vcHM6OnJldHJpZXZlX3BhcnRpZXNfc3BpZCgkbGljZW5jZSk7CgkJCgkJCQoJfS8vZmluIGR1IHdoaWxlCgkKfQoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_all_poule_rencontres.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3RyYXZhdXgucGhwJyk7CgovLyBsZXMgcHLDqWbDqXJlbmNlcyBuw6ljZXNzYWlyZXMKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJHBoYXNlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BoYXNlX2VuX2NvdXJzJyk7CiRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKJG5vbV9lcXVpcGVzID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ25vbV9lcXVpcGVzJyk7CiRkZXNpZ25hdGlvbiA9ICcnOwovL29uIGZhaXQgdW5lIHJlcXVldGUgcG91ciBleHRyYWlyZSB0b3V0ZXMgbGVzIGluZm9zIGFmaW4gZGUgcHLDqXBhcmVyIHVuZSBib3VjbGUKJHF1ZXJ5MSA9ICJTRUxFQ1QgRElTVElOQ1QgaWRkaXYsIGlkcG91bGUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcyBXSEVSRSBzYWlzb24gPSA/IEFORCBwaGFzZSA9ID8iOwokZGJyZXN1bHQxID0gJGRiLT5FeGVjdXRlKCRxdWVyeTEsIGFycmF5KCRzYWlzb24sJHBoYXNlKSk7CgoJaWYgKCRkYnJlc3VsdDEgJiYgJGRicmVzdWx0MS0+UmVjb3JkQ291bnQoKSA+IDApCiAgCXsKCQkKCQoJCQogICAgCQl3aGlsZSAoJGRicmVzdWx0MSAmJiAkcm93ID0gJGRicmVzdWx0MS0+RmV0Y2hSb3coKSkKICAgICAgCQl7CgkJCSRzZXJ2aWNlID0gbmV3IFNlcnZpY2UoKTsKCSAJCS8vb24gaW5zdGFuY2llIHVuIGNvbXB0ZXVyCgkJCSRpZGRpdiA9ICRyb3dbJ2lkZGl2J107CgkJCSRpZHBvdWxlID0gJHJvd1snaWRwb3VsZSddOwoJCQkkcmVzdWx0ID0gJHNlcnZpY2UtPmdldFBvdWxlUmVuY29udHJlcygiJGlkZGl2IiwiJGlkcG91bGUiKTsKCgkJCS8vaWwgZmF1dCB0ZXN0ZXIgc2kgbGUgdGFibGVhdSBlc3QgdmlkZSBvdSBub24KCQkJaWYoIWlzX2FycmF5KCRyZXN1bHQpIHx8IGNvdW50KCRyZXN1bHQpID09MCkKCQkJewoJCQkJLy9sZSB0YWJsZWF1IGVzdCB2aWRlLCBpbCBmYXV0IGVudm95ZXIgdW4gbWVzc2FnZSBwb3VyIGxlIHNpZ25hbGVyCgkJCQkkZGVzaWduYXRpb24uPSAibGUgc2VydmljZSBlc3QgY291cMOpIjsKCQkJCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCQkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3BvdWxlcycpOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJLy90dCB2YSBiaWVuIG9uIGNvbnRpbnVlCgkJCQoJCQkJLy92YXJfZHVtcCgkcmVzdWx0KTsJCgkJCQkkaT0wOwoJCQkJZm9yZWFjaCgkcmVzdWx0IGFzICRjbGUgPT4kdGFiKQoJCQkJewoKCgkJCQkJJGxpYmVsbGUgPSAkdGFiW2xpYmVsbGVdOwoJCQkJCSRlcXVhID0gJHRhYltlcXVhXTsKCQkJCQkkZXF1YiA9ICR0YWJbZXF1Yl07CgoJCQkJCS8vb24gZmFpdCBxdWVscXVlIHRyYW5zZm9ybWF0aW9ucyBkZXMgaW5mb3MgcmVjdWVpbGxpZXMKCQkJCQlwcmVnX21hdGNoX2FsbCgnI1swLTldKyMnLCRsaWJlbGxlLCRleHRyYWN0KTsKCQkJCQkkdG91ciA9ICRleHRyYWN0WzBdWzBdOwoKCQkJCQkkZXh0cmFjdGlvbiA9IHN1YnN0cigkbGliZWxsZSwtOCk7CgkJCQkJJGRhdGVfZXh0cmFjdCA9IGV4cGxvZGUoJy8nLCAkZXh0cmFjdGlvbik7CgkJCQkJJGFubmVlX2RhdGUgPSAkZGF0ZV9leHRyYWN0WzJdICsgMjAwMDsKCQkJCQkkZGF0ZV9ldmVudCA9ICRhbm5lZV9kYXRlLiItIi4kZGF0ZV9leHRyYWN0WzFdLiItIi4kZGF0ZV9leHRyYWN0WzBdOwoJCQkJCSR1cGxvYWRlZCA9IDA7CgoJCQkJCSRjbHViYSA9IHN0cnBvcygkZXF1YSwkbm9tX2VxdWlwZXMpOwoJCQkJCSRjbHViYiA9IHN0cnBvcygkZXF1Yiwkbm9tX2VxdWlwZXMpOwoJCQkJCgkJCQkJCWlmICgkY2x1YmEgIT09IGZhbHNlIHx8ICRjbHViYiAhPT0gZmFsc2UpCgkJCQkJCXsKCQkJCQkJCSRjbHViID0gMTsKCQkJCQkJCSRhZmZpY2hhZ2UgPSAxOwoJCQkJCQl9CgkJCQkJCWVsc2UKCQkJCQkJewoJCQkJCQkJJGNsdWIgPSAwOwoJCQkJCQl9CgkJCQkJCgkJCQkJJHNjb3JlYSA9ICR0YWJbc2NvcmVhXTsKCQkJCQkkc2NvcmViID0gJHRhYltzY29yZWJdOwoJCQkJCSRsaWVuID0gJHRhYltsaWVuXTsJCgkJCQkJLy8KCQkJCQkvL29uIHbDqXJpZmllIHF1ZSBsZSBzY29yZSBhIGJpZW4gw6l0w6kgc2Fpc2kKCQkJCQkvL3NpIGxlIHNjb3JlIGVzdCBzYWlzaSBvbiBvYnRpZW50IHVuIHN0cmluZyBwb3VyIGxlcyB2YXJpYWJsZXMgc2NvcmVhIGV0IHNjb3JlYgoJCQkJCS8vc2lub24gaWwgcydhZ2l0IGQndW4gYXJyYXkJCgoJCQkJCQlpZihpc19hcnJheSgkc2NvcmVhKSAmJiBpc19hcnJheSgkc2NvcmViKSkKCQkJCQkJewoJCQkJCQkJLy9sZSBzY29yZSBuJ2VzdCBwYXMgcGFydmVudSBvdSBsZSBtYXRjaCBuJ2EgcGFzIMOpdMOpIGpvdcOpCgkJCQkJCQkvL09uIGwnZW5yZWdpc3RyZSBxZCBtw6ptZQoJCQkJCQkJJHNjb3JlYSA9IDA7CgkJCQkJCQkkc2NvcmViID0gMDsKCQkJCQkJCSR1cGRhdGUgPSAwOwkJCgkJCQkJCX0KCQkJCQkvL29uIHbDqXJpZmllIHNpIGwnZW5yZWdpc3RyZW1lbnQgZXN0IGTDqWrDoCBsw6AKCQkJCQkkcXVlcnkyID0gIlNFTEVDVCBpZCxsaWVuLHNjb3JlYSwgc2NvcmViIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzIFdIRVJFIGlkZGl2ID0/IEFORCBpZHBvdWxlID0gPyBBTkQgZGF0ZV9ldmVudCA9ID8gQU5EIGVxdWEgPSA/IEFORCBlcXViID0gPyI7CgkJCQkJJGRicmVzdWx0MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCBhcnJheSgkaWRkaXYsJGlkcG91bGUsJGRhdGVfZXZlbnQsJGVxdWEsJGVxdWIpKTsKCQkJCQoJCQkJCQlpZigkZGJyZXN1bHQyICAmJiAkZGJyZXN1bHQyLT5SZWNvcmRDb3VudCgpID09IDApIAoJCQkJCQl7CgkJCQkJCQkkcXVlcnkzID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyAoaWQsc2Fpc29uLGlkcG91bGUsIGlkZGl2LCBjbHViLCB0b3VyLCBkYXRlX2V2ZW50LCB1cGxvYWRlZCwgbGliZWxsZSwgZXF1YSwgZXF1Yiwgc2NvcmVhLCBzY29yZWIsIGxpZW4pIFZBTFVFUyAoJycsID8gLD8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIjsKCQkJCQkJCS8vCWVjaG8gJHF1ZXJ5OwoJCQkJCQkJJGkrKzsKCQkJCQkJCSR1cGxvYWRlZCA9IDA7CgkJCQkJCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkzLGFycmF5KCRzYWlzb24sJGlkcG91bGUsICRpZGRpdiwgJGNsdWIsICR0b3VyLCAkZGF0ZV9ldmVudCwgJHVwbG9hZGVkLCAkbGliZWxsZSwgJGVxdWEsICRlcXViLCAkc2NvcmVhLCAkc2NvcmViLCAkbGllbikpOwoKCQkJCQkJCWlmKCEkZGJyZXN1bHRhdCkKCQkJCQkJCXsKCQkJCQkJCQkkZGVzaWduYXRpb24gLj0gJGRiLT5FcnJvck1zZygpOyAKCQkJCQkJCX0KCQkJCQkJCgkJCQkJCQkKCQkJCQkJCgkJCQkJCX0KCQkJCQkJZWxzZWlmKCRkYnJlc3VsdDIgJiYgJGRicmVzdWx0Mi0+UmVjb3JkQ291bnQoKSA+MCkKCQkJCQkJewoJCQkJCQkJLy9pbCB5IGEgZMOpasOgIHVuIGVucmVnaXN0cmVtZW50LCBsZSBzY29yZSBlc3QtaWwgw6Agam91ciA/CgkJCQkJCQkkdXBkYXRlID0gMTsKCQkJCQkJCSRyb3cgPSAkZGJyZXN1bHQyLT5GZXRjaFJvdygpOwoJCQkJCQkJJGlkID0gJHJvd1snaWQnXTsKCQkJCQkJCSRzY29yZUEgPSAkcm93WydzY29yZWEnXTsKCQkJCQkJCSRzY29yZUIgPSAkcm93WydzY29yZWInXTsKCgkJCQkJCQkJaWYoJHNjb3JlQSA9PTAgJiYgJHNjb3JlQiA9PTApCgkJCQkJCQkJewoJCQkJCQkJCQkkcXVlcnkzID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG91bGVzX3JlbmNvbnRyZXMgU0VUIHNjb3JlYSA9ID8sIHNjb3JlYiA9ID8gV0hFUkUgaWQgPSA/IjsKCQkJCQkJCQkJJGRicmVzdWx0QSA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkzLCBhcnJheSgkc2NvcmVhLCAkc2NvcmViLCAkaWQpKTsKCQkJCQkJCQkJJGkrKzsKCQkJCQkJCQkJaWYoISRkYnJlc3VsdEEpCgkJCQkJCQkJCXsKCQkJCQkJCQkJCSRkZXNpZ25hdGlvbi49ICRkYi0+RXJyb3JNc2coKTsKCQkJCQkJCQkJfQoJCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQoJCQkJCQoJCQkJCgkJCQkJfS8vZmluIGR1IGZvcmVhY2gKCQkJCX0vL2ZpbiBkdSBpZiAhaXNfYXJyYXkgdsOpcmlmaWNhdGlvbiBkdSB0YWJsZWF1CgkJCSRjb21wdGFnZSA9ICRpOwoJCQkkc3RhdHVzID0gJ1BvdWxlcyc7CgkJCSRkZXNpZ25hdGlvbiA9ICJNaXNlIMOgIGpvdXIgZGUgIi4kY29tcHRhZ2UuIiByZW5jb250cmVzIGRlIGxhIHBvdWxlICIuJGlkcG91bGU7CgkJCSRxdWVyeTQgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwIChpZCwgZGF0ZWNyZWF0ZWQsIHN0YXR1cywgZGVzaWduYXRpb24sIGFjdGlvbikgVkFMVUVTICgnJywgPywgPywgPywgPykiOwoJCQkkYWN0aW9uID0gInJldHJpZXZlX3BvdWxlc19yZW5jb250cmVzIjsKCQkJJGRicmVzdWx0NCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnk0LCBhcnJheSgkbm93LCRzdGF0dXMsICRkZXNpZ25hdGlvbiwkYWN0aW9uKSk7CgkJCQoJCQkJaWYoISRkYnJlc3VsdDQpCgkJCQl7CgkJCQkJJGRlc2lnbmF0aW9uLj0gJGRiLT5FcnJvck1zZygpOyAKCQkJCX0KCQkJCgkJfS8vZmluIGR1IHdoaWxlCgl9CgllbHNlIAoJewoJCSR0aGlzLT5TZXRNZXNzYWdlKCdQYXMgZFwnw6lxdWlwZXMgdHJvdXbDqWVzJyk7CgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignZXF1aXBlcycpOwoJfS8vZmluIGR1IGlmIGRicmVzdWx0CgoKCgoJCgkkdGhpcy0+U2V0TWVzc2FnZSgiUmV0cm91dmV6IGxlcyBpbmZvcyBkYW5zIGxlIGpvdXJuYWwiKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3Jlc3VsdGF0cycpOwoJCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_all_sit_mens.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyMjICAgICAgICAgIFLDiUNVUEVSQVRJT04gREUgVE9VVEVTIExFUyBTSVRVQVRJT05TIE1FTlNVRUxMRVMgICAgICAgICAgICAgIyMjCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9vbiB2w6lyaWZpZSBsZXMgcGVybWlzc2lvbnMKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFVzZScpKQp7CgllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCXJldHVybjsKfQovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5jYWxjdWxzLnBocCcpOwokZGI9JGdDbXMtPkdldERiKCk7Ci8vJGRiID0mICR0aGlzLT5HZXREYigpOwokbW9pc19jb3VyYW50ID0gZGF0ZSgnbicpOwovL3BvdXIgdGVzdCwgamUgY2hhbmdlIG1hbnVlbGxlbWVudCBsZSBtb2lzIGNvdXJhbnQKLy8kbW9pc19jb3VyYW50ID0gMjsKJGFubmVlX2NvdXJhbnRlID0gZGF0ZSgnWScpOwokbW9pc19mcmFuY2FpcyA9IGFycmF5KCdKYW52aWVyJywgJ0bDqXZyaWVyJywnTWFycycsICdBdnJpbCcsICdNYWknLCAnSnVpbicsICdKdWlsbGV0JywnQW/Du3QnLCAnU2VwdGVtYnJlJywgJ09jdG9icmUnLCdOb3ZlbWJyZScsJ0TDqWNlbWJyZScpOwokbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CiRtb2lzX3JlZWwgPSAkbW9pc19jb3VyYW50IC0gMTsKJG1vaXNfc20gPSAkbW9pc19mcmFuY2Fpc1siJG1vaXNfcmVlbCJdOwokbW9pc19zaXRfbWVucyA9ICRtb2lzX3NtLiIgIi4kYW5uZWVfY291cmFudGU7CgokbWVzc2FnZSA9ICcnOwovL2plIHPDqWxlY3Rpb25uZSB0b3V0ZXMgbGVzIGxpY2VuY2VzIGR1IG1vaXMgZW4gcXVlc3Rpb24gZG9uYyBkw6lqw6AgcmVuc2VpZ27DqWVzCi8vIGFmaW4gZGUgbmUgcsOpY3Vww6lyZXIgcXVlIGNlbGxlcyBtYW5xdWFudGVzCiRxdWVyeSA9ICJTRUxFQ1QgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyBXSEVSRSBtb2lzID0gPyBBTkQgYW5uZWUgPSA/IjsKLy9qZSBsZXMgbWV0cyBlbnN1aXRlIGRhbnMgdW4gdGFibGVhdSBwb3VyIGZhaXJlIGxlIE5PVCBJTgkKCiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRtb2lzX2NvdXJhbnQsICRhbm5lZV9jb3VyYW50ZSkpOwokcm93ID0gJGRicmVzdWx0LT5HZXRSb3dzKCk7CiRsaWMgPSBhcnJheSgpOwovLyRsaWMgPSAkcm93WzBdWydsaWNlbmNlJ107Ci8vZWNobyAiTGEgdmFsZXVyIGVzdCA6ICIuJGxpYzsKJGxpZ25lcyA9ICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKTsKZm9yKCRpPTA7JGk8PSRsaWduZXM7JGkrKykKewoJYXJyYXlfcHVzaCgkbGljLCRyb3dbJGldWydsaWNlbmNlJ10pOwoJJGxpY2VuID0gc3Vic3RyKGltcGxvZGUoIiwgIiwgJGxpYyksIDAsIC0zKTsKfQppZigkbGlnbmVzID09MCkKewoJJHF1ZXJ5MiA9ICJTRUxFQ1QgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIGFjdGlmPTEiOwp9CmVsc2UKewoJJHF1ZXJ5MiA9ICJTRUxFQ1QgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIGFjdGlmPTEgQU5EIGxpY2VuY2UgTk9UIElOICgkbGljZW4pIjsKfQovL2VjaG8gJHF1ZXJ5MjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIpOwoKaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQogIHsKCSRzZXJ2aWNlID0gbmV3IFNlcnZpY2UoKTsKIAkvL29uIGluc3RhbmNpZSB1biBjb21wdGV1ciAKCQoKICAgIAl3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIAl7CgkJJGxpY2VuY2UyID0gJHJvd1snbGljZW5jZSddOwoJCQkKCQkkcmVzdWx0ID0gJHNlcnZpY2UtPmdldEpvdWV1cigiJGxpY2VuY2UyIik7CgkJLy92YXJfZHVtcCgkcmVzdWx0KTsKCQkJCgkJaWYoIWlzX2FycmF5KCRyZXN1bHQpKQoJCXsKCQkJJG1lc3NhZ2UuPSJTZXJ2aWNlIGNvdXDDqSBvdSBsaWNlbmNlIGFic2VudGUgcG91ciAiLiRub20uIiAiLiRwcmVub207CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkJCgkJCSRub20gPSAkcmVzdWx0W25vbV07CgkJCSRwcmVub20gPSAkcmVzdWx0W3ByZW5vbV07CgkJCSRuYXRpbyA9ICRyZXN1bHRbbmF0aW9dOwoJCQkkY2xnbG9iID0gJHJlc3VsdFtjbGdsb2JdOwoJCQkkcG9pbnRzID0gJHJlc3VsdFtwb2ludF07CgkJCSRhY2xnbG9iID0gJHJlc3VsdFthY2xnbG9iXTsKCQkJJGFwb2ludCA9ICRyZXN1bHRbYXBvaW50XTsKCQkJJGNsbmF0ID0gJHJlc3VsdFtjbG5hdF07CgkJCSRjYXRlZyA9ICRyZXN1bHRbY2F0ZWddOwoJCQkkcmFuZ3JlZyA9ICRyZXN1bHRbcmFuZ3JlZ107CgkJCSRyYW5nZGVwID0gJHJlc3VsdFtyYW5nZGVwXTsKCQkJJHZhbGNsYSA9ICRyZXN1bHRbdmFsY2xhXTsKCQkJJGNscHJvID0gJHJlc3VsdFtjbHByb107CgkJCSR2YWxpbml0ID0gJHJlc3VsdFt2YWxpbml0XTsKCQkJJHByb2dtb2lzID0gJHJlc3VsdFtwcm9nbW9pc107CgkJCSRwcm9nYW5uID0gJHJlc3VsdFtwcm9nYW5uXTsKCgkJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2l0X21lbnMgKGlkLGRhdGVjcmVhdGVkLCBkYXRlbWFqLCBtb2lzLCBhbm5lZSwgcGhhc2UsIGxpY2VuY2UsIG5vbSwgcHJlbm9tLCBwb2ludHMsIGNsbmF0LCByYW5ncmVnLHJhbmdkZXAsIHByb2dtb2lzKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkJCS8vZWNobyAkcXVlcnk7CgkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkbm93LCRub3csJG1vaXNfY291cmFudCwgJGFubmVlX2NvdXJhbnRlLCAkcGhhc2UsICRsaWNlbmNlMiwgJG5vbSwgJHByZW5vbSwgJHBvaW50cywgJGNsbmF0LCAkcmFuZ3JlZywgJHJhbmdkZXAsICRwcm9nbW9pcykpOwoKCQkJCWlmKCEkZGJyZXN1bHRhdCkKCQkJCXsKCQkJCQkkbWVzc2FnZS49JGRiLT5FcnJvck1zZygpOyAKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkJCgkJCQkJCQkKCQkJCQkvL29uIGVudm9pZSB1biBtZXNzYWdlIMOgIGxhIHRhYmxlIHLDqWN1cCAKCQkJCQkkc3RhdHVzID0gIk9rIjsKCQkJCQkkZGVzaWduYXRpb24gPSAiUsOpY3Vww6lyYXRpb24gc2l0dWF0aW9uIG1lbnN1ZWxsZSBkZSAiLiRtb2lzX3NtLiIgIi4kYW5uZWVfY291cmFudGUuIiBkZSAiLiRub20uIiAiLiRwcmVub207CgkJCQkJJG1lc3NhZ2UuPSAkZGVzaWduYXRpb247CgkJCQkJZWNobyAiJGRlc2lnbmF0aW9uPGJyIC8+IjsKCQkJCQkkYWN0aW9uID0gJ3JldHJpZXZlX2FsbF9zaXRfbWVucyc7CgkJCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cCAoaWQsIGRhdGVjcmVhdGVkLCBzdGF0dXMsIGRlc2lnbmF0aW9uLCBhY3Rpb24pIFZBTFVFUyAoJycsID8sID8sID8sID8pIjsKCQkJCQkkZGJxdWVyeSA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRub3csJHN0YXR1cywkZGVzaWduYXRpb24sJGFjdGlvbikpOwoJCQkJCQkJCQoJCQkJCQlpZighJGRicXVlcnkpCgkJCQkJCXsKCQkJCQkJCSRtZXNzYWdlLj0kZGItPkVycm9yTXNnKCk7IAoJCQkJCQl9CgkJCQkJCQoJCQkJCQkvL29uIG1vZGlmaWUgYXVzc2kgbGEgdGFibGUgZGVzIHJlY3VwIHBhcnRpZXMKCQkJCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyBTRVQgc2l0X21lbnMgPSA/LCBkYXRlbWFqID0gPyBXSEVSRSBsaWNlbmNlID0gPyI7CgkJCQkJCS8vJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIChpZCwgc2l0X21lbnMsIGxpY2VuY2UpIFZBTFVFUyAoJycsID8sID8pIjsKCQkJCQkJCgkJCQkJCSRkYnF1ZXJ5MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCAkbW9pc19zaXRfbWVucywgJG5vdywgJGxpY2VuY2UyKSk7CgkJCQkJCQkJCgkJCQkJCWlmKCEkZGJxdWVyeTIpCgkJCQkJCXsKCQkJCQkJCSRtZXNzYWdlLj0kZGItPkVycm9yTXNnKCk7IAoJCQkJCQl9CgkJCQl9CgkJCQkJCgkJCSRzdGF0dXMgPSAnRWNoZWMnOwoJCQkkZGVzaWduYXRpb24gPSAiRWNoZWMgc2l0dWF0aW9uIG1lbnN1ZWxsZSBkZSAiLiRtb2lzX3NtLiIgIi4kYW5uZWVfY291cmFudGUuIiBkZSAiLiRub20uIiAiLiRwcmVub207CX0vL2ZpbiBkdSBpZiBpc19hcnJheQoJCQkkYWN0aW9uID0gJ3JldHJpZXZlX2FsbF9zaXRfbWVucyc7CgkJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXAgKGlkLCBkYXRlY3JlYXRlZCwgc3RhdHVzLCBkZXNpZ25hdGlvbiwgYWN0aW9uKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/KSI7CgkJCSRkYnF1ZXJ5ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5vdywkc3RhdHVzLCRkZXNpZ25hdGlvbiwkYWN0aW9uKSk7CgkJCQoJCQlpZighJGRicXVlcnkpCgkJCXsKCQkJCWVjaG8gJGRiLT5zcWwuJzxici8+Jy4kZGItPkVycm9yTXNnKCk7IAoJCQl9Cgl9Ly9maW4gZHUgaWYgaXNfYXJyYXkKCQkKICAgICAgfS8vZmluIGR1IHdoaWxlCiRzbWFydHktPmFzc2lnbigncmV0b3VyJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2FkbWluX3NpdHVhdGlvbl9tZW5zdWVsbGVfdGFiJywkcmV0dXJubGluaykpOwoJCQplY2hvICRyZXRvdXI7Ci8vJykvL21ldHRyZSBsZSBjb21wdGV1ciBkZSByw6l1c3NpdGUgZCfDqWNoZWMKLyoKCSR0aGlzLT5TZXRNZXNzYWdlKCdNaXNlcyDDoCBqb3VyIE9LJyk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzaXR1YXRpb24nKTsKCiovCiAgCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_club.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwpkZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7Ci8qCiRtYUNsYXNzZSA9ICdjbGFzcy5TZXJ2aWNlLnBocCc7CiRzZXJ2aWNlID0gbmV3ICRtYUNsYXNzZSgpOwoqLwokc2VydmljZSA9IG5ldyBTZXJ2aWNlKCk7Ci8vJHJlc3VsdCA9ICRzZXJ2aWNlLT5nZXRKb3VldXJQYXJ0aWVzKCIwNzI5MDIyOSIpOwovLyRyZXN1bHQgPSAkc2VydmljZS0+Z2V0Sm91ZXVyUGFydGllcygiMjkyMjcxIik7CiRyZXN1bHQgPSAkc2VydmljZS0+Z2V0UmVuY29udHJlKCJpc19yZXRvdXI9MCZwaGFzZT0xJnJlc18xPTcmcmVzXzI9NyZyZW5jX2lkPTI1NzA0MTUmZXF1aXBfMT1CT1VMT0dORStCSUxMQU5DT1VSVCtBQysyJmVxdWlwXzI9Rk9VRVNOQU5UK1JQKzEmZXF1aXBfaWQxPTI5NjkzNiZlcXVpcF9pZDI9Mjk2OTQxIik7CnZhcl9kdW1wKCRyZXN1bHQpOwoKLyogICAgIAoKZm9yZWFjaCgkcmVzdWx0IGFzICRjbGUgPT4kdGFiKQp7CgkKCSRjbGVfYXBwZWwgPSByYW5kb20oMjApOwoJJGxpY2VuY2UgPSAkdGFiW2xpY2VuY2VdOwoJJGFkdmxpYyA9ICR0YWJbJ2FkdmxpYyddOwoJJHZkID0gJHRhYlsndmQnXTsKCWlmICgkdmQgPT0nVicpewoJCSR2ZCA9IDE7CgkJfQoJZWxzZSAKCQl7JHZkID0gMDt9CgkkbnVtam91cm4gPSAkdGFiWydudW1qb3VybiddOwoJJGNvZGVjaGFtcCA9ICR0YWJbJ2NvZGVjaGFtcCddOwoJJGRhdGUgPSAkdGFiWydkYXRlJ107CgkkYWR2c2V4ZSA9ICR0YWJbJ2FkdnNleGUnXTsKCSRhZHZub21wcmUgPSAkdGFiWydhZHZub21wcmUnXTsKCSRwb2ludHJlcyA9ICR0YWJbJ3BvaW50cmVzJ107CgkkY29lZmNoYW1wID0gJHRhYlsnY29lZmNoYW1wJ107CgkkYWR2Y2xhb2YgPSAkdGFiWydhZHZjbGFvZiddOwoJCgkkcXVlcnkgPSAiU0VMRUNUIGxpY2VuY2UgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSBsaWNlbmNlID0gPyI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSkpOwoJaWYoJGRicmVzdWx0ICAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkgewoJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyAoaWQsY2xlX2FwcGVsLCBsaWNlbmNlLCBhZHZsaWMsIHZkLCBudW1qb3VybiwgY29kZWNoYW1wLCBkYXRlLCBhZHZzZXhlLCBhZHZub21wcmUsIHBvaW50cmVzLCBjb2VmY2hhbXAsIGFkdmNsYW9mKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkJJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCcnLCAkY2xlX2FwcGVsLCAkbGljZW5jZSwgJGFkdmxpYywgJHZkLCAkbnVtam91cm4sICRjb2RlY2hhbXAsICRkYXRlLCAkYWR2c2V4ZSwgJGFkdm5vbXByZSwgJHBvaW50cmVzLCAkY29lZmNoYW1wLCAkYWR2Y2xhb2YpKTsKCQkKCQlpZighJGRicmVzdWx0YXQpCgkJewoJCQlkaWUoJ0ZBVEFMIFNRTCBFUlJPUiAxOiAnLiRkYi0+RXJyb3JNc2coKS4nPGJyLz5RVUVSWTogJy4kZGItPnNxbCk7CgkJfQovLwl9Cn0KCQoJJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ3NhdmVkX3JlY29yZCcpKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3JlbmNvbnRyZXMnKTsKKi8KIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_details_rencontres.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwokZGIgPSYgJHRoaXMtPkdldERiKCk7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwovL2EgZmFpcmUgCi8vbWV0dHJlIGxlcyBhdXRvcmlzYXRpb25zCi8vc2kgcGFzIGRlIHJlY29yZF9pZCByZWRpcmVjdGlvbgokcmVjb3JkX2lkID0gJHBhcmFtc1sncmVjb3JkX2lkJ107Ci8vb24gdmEgdXRpbGlzZXIgY2V0dGUgdmFyaWFibGUgKHJlY29yZF9pZCkgY29tbWUgY2zDqSBzZWNvbmRhaXJlIGRhbnMgbGEgbm91dmVsbGUgdGFibGUKCgokcXVlcnkgPSAiU0VMRUNUIGxpZW4gRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG91bGVzX3JlbmNvbnRyZXMgV0hFUkUgaWQgPSA/IjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJlY29yZF9pZCkpOwppZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCnsKCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgl7CgkJJGxpZW4gPSAkcm93WydsaWVuJ107CgkJJHNlcnZpY2UgPSBuZXcgU2VydmljZSgpOwoJCSRyZXN1bHQgPSAkc2VydmljZS0+Z2V0UmVuY29udHJlKCIkbGllbiIpOwoKCQkvL3ByaW50X3IoJHJlc3VsdCk7CgkJCgkJCWlmKCFpc19hcnJheSgkcmVzdWx0KSkKCQkJeyAKCgkJCQkvL2xlIHRhYmxlYXUgZXN0IHZpZGUsIGlsIGZhdXQgZW52b3llciB1biBtZXNzYWdlIHBvdXIgbGUgc2lnbmFsZXIKCQkJCSRkZXNpZ25hdGlvbi49ICJsZSBzZXJ2aWNlIGVzdCBjb3Vww6kiOwoJCQkJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncG91bGVzJyk7CgkJCX0gICAKCQkJZWxzZQoJCQl7CgkJCS8vb24gZXNzYWllIGRlIGZhaXJlIHFxcyBjYWxjdWxzCgkJCSR0YWJsZWF1MSA9IGFycmF5KCk7CgkJCSR0YWIyID0gYXJyYXkoKTsKCQkJJGNvbXB0ZXVyID0gY291bnQoJHJlc3VsdFtqb3VldXJdKTsKCQkJJGNvbXB0YWdlID0gY291bnQoJHJlc3VsdFtwYXJ0aWVdKTsKCQkJLy9vbiBzY2luZGUgbGUgdGFibGVhdSBwcmluY2lwYWwgZW4gcGx1c2lldXJzIHRhYmxlYXV4ID8KCQkJJHRhYjEgPSBhcnJheV9zbGljZSgkcmVzdWx0LDAsMSk7CgkJCSR0YWIyID0gYXJyYXlfc2xpY2UoJHJlc3VsdCwxLDEpOwoJCQkkdGFiMyA9IGFycmF5X3NsaWNlKCRyZXN1bHQsMiwxKTsKCQkJLy9wcmludF9yKCR0YWIxKTsKCQkJLy9wcmludF9yKCR0YWIyKTsKCQkJLy9wcmludF9yKCR0YWIzKTsKCQkJLy9lY2hvICJsZSBjb21wdGV1ciBlc3QgOiAiLiRjb21wdGV1cjsKCQkJLy9lY2hvICJsZSBuYiBkZSBwYXJ0aWVzIGRpc3B1dMOpZXMgZXN0IDogIi4kY29tcHRhZ2U7CgkJCQkkaT0wOwoJCQkJJGE9MDsKCQkJJGVxdWEgPSAkdGFiMVtyZXN1bHRhdF1bZXF1YV07CgkJCSRyZXNhID0gJHRhYjFbcmVzdWx0YXRdW3Jlc2FdOwoJCQkkZXF1YiA9ICR0YWIxW3Jlc3VsdGF0XVtlcXViXTsKCQkJJHJlc2IgPSAkdGFiMVtyZXN1bHRhdF1bcmVzYl07CgkJCQoJCQkJCgkJCQkJZm9yKCRpPTA7JGk8JGNvbXB0ZXVyOyRpKyspCgkJCQkJewoJCQkJCQkkeGphID0gJ3hqYScuJGk7Ly9leCA6ICR4amEgPSAneGphMCc7CgkJCQkJCSR4Y2EgPSAneGNhJy4kaTsKCQkJCQkJJHhqYiA9ICd4amInLiRpOy8vZXggOiAkeGphID0gJ3hqYTAnOwoJCQkJCQkkeGNiID0gJ3hjYicuJGk7CgkJCQkJCSQkeGphID0gJHRhYjJbam91ZXVyXVskaV1beGphXTsvL2V4IDogJHhqYTAgPSAnJzsKCQkJCQkJJCR4Y2EgPSAkdGFiMltqb3VldXJdWyRpXVt4Y2FdOwoJCQkJCQkkJHhqYiA9ICR0YWIyW2pvdWV1cl1bJGldW3hqYl07Ly9leCA6ICR4amEwID0gJyc7CgkJCQkJCSQkeGNiID0gJHRhYjJbam91ZXVyXVskaV1beGNiXTsKCQkJCQkJLy9lY2hvICQkeGphOwoJCQkJCX0KCQkJCQkJCgkJCQkJZm9yKCRhPTA7JGE8JGNvbXB0YWdlOyRhKyspCgkJCQkJewoJCQkJCQkkamEgPSAnamEnLiRhOy8vZXggJGphID0gJ2phMCc7CgkJCQkJCSQkamEgPSAkdGFiM1twYXJ0aWVdWyRhXVtqYV07CgkJCQkJCSRqYiA9ICdqYicuJGE7Ly9leCAkamEgPSAnamEwJzsKCQkJCQkJJCRqYiA9ICR0YWIzW3BhcnRpZV1bJGFdW2piXTsKCQkJCQkJJHNjb3JlYSA9ICdzY29yZWEnLiRhOwoJCQkJCQkkJHNjb3JlYSA9ICR0YWIzW3BhcnRpZV1bJGFdW3Njb3JlYV07CgkJCQkJCSRzY29yZWIgPSAnc2NvcmViJy4kYTsKCQkJCQkJJCRzY29yZWIgPSAkdGFiM1twYXJ0aWVdWyRhXVtzY29yZWJdOwoJCQkJCQkKCQkJCQl9CgkJCQkKCQkJCQkKCQkJCQoJCQkJCgkJCgkJCQkkY29udGVudSA9ICcnOwoJCQkJJHJldG91cj0gJHRoaXMtPkNyZWF0ZVJldHVybkxpbmsoJGlkLCAkcmV0dXJuaWQsJ1JldG91cicpOwoJCQkJJGNvbnRlbnUuPSI8cD4kcmV0b3VyPC9wPiI7CgkJCQkkY29udGVudS49ICI8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZFwiPiI7CgkJCQkkY29udGVudS49Ijx0cj48dGQ+JGVxdWE8L3RkPjx0ZD4kcmVzYTwvdGQ+PHRkPiRyZXNiPC90ZD48dGQ+JGVxdWI8L3RkPjwvdHI+IjsKCQkJCS8vJGNvbnRlbnUuPSI8L3RhYmxlPiI7CgkJCQkvLyRjb250ZW51Lj0iPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVyZWRcIj4iOwoJCQkJZm9yKCRpPTA7JGk8JGNvbXB0ZXVyOyRpKyspCgkJCQl7CgkJCQkJJGNvbnRlbnUuPSI8dHI+PHRkPiAkeyd4amEnLiRpfTwvdGQ+PHRkPiR7J3hjYScuJGl9PC90ZD48dGQ+JHsneGpiJy4kaX08L3RkPjx0ZD4keyd4Y2InLiRpfTwvdGQ+PC90cj4iOwoJCQkJfQoJCQkJCgkJCQkvLyRjb250ZW51Lj0iPC90YWJsZT4iOwoJCQkvLwkkY29udGVudS49Ijx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkXCI+IjsKCQkJCWZvcigkYT0wOyRhPCRjb21wdGFnZTskYSsrKQoJCQkJewoJCQkJCSRjb250ZW51Lj0iPHRyPjx0ZD4keydqYScuJGF9PC90ZD48dGQ+JHsnc2NvcmVhJy4kYX08L3RkPjx0ZD4keydzY29yZWInLiRhfTwvdGQ+PHRkPiR7J2piJy4kYX08L3RkPjwvdHI+IjsKCQkJCX0KCQkJCQoJCQkJLy8kY29udGVudS49Ijx0cj48dGQ+JHhqYTA8L3RkPjx0ZD4keGNhMDwvdGQ+PHRkPiR4amIwPC90ZD48dGQ+JHhjYjA8L3RkPjwvdHI+IjsKCQkJCSRjb250ZW51Lj0iPC90YWJsZT4iOwkKCQkJCWVjaG8gJGNvbnRlbnU7CQoJCQkJCgkJCX0vL2ZpbiBkdSBlbHNlCgl9Ly9maW4gZHUgd2hpbGUKfQplbHNlCnsKCWVjaG8gJ1BhcyBkZSByw6lzdWx0YXRzJzsKfS8vZmluIGR1IGlmIHByaW1haXJlCiMKIyBFT0YKIwovL2VjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZGV0YWlsc19yZW5jb250cmUudHBsJyk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_details_rencontres2.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwokZGIgPSYgJHRoaXMtPkdldERiKCk7Ci8vYSBmYWlyZSAKLy9tZXR0cmUgbGVzIGF1dG9yaXNhdGlvbnMKLy9zaSBwYXMgZGUgcmVjb3JkX2lkIHJlZGlyZWN0aW9uCiRyZWNvcmRfaWQgPSAnJzsKaWYoaXNzZXQoJHBhcmFtc1sncmVjb3JkX2lkJ10pICYmICRwYXJhbXNbJ3JlY29yZF9pZCddICE9ICcnKQp7CgkkcmVjb3JkX2lkID0gJHBhcmFtc1sncmVjb3JkX2lkJ107Cn0KZWxzZQp7CgkkZGVzaWduYXRpb24gPSAiUGFyYW3DqHRyZXMgbWFucXVhbnRzIjsKCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCSQkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdwb3VsZXMnKTsKfQovL29uIHZhIHV0aWxpc2VyIGNldHRlIHZhcmlhYmxlIChyZWNvcmRfaWQpIGNvbW1lIGNsw6kgc2Vjb25kYWlyZSBkYW5zIGxhIG5vdXZlbGxlIHRhYmxlCgoKJHF1ZXJ5ID0gIlNFTEVDVCBsaWVuIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzIFdIRVJFIGlkID0gPyI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKT4wKQp7Cgl3aGlsZSgkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJewoJCSRsaWVuID0gJHJvd1snbGllbiddOwoJCSRzZXJ2aWNlID0gbmV3IFNlcnZpY2UoKTsKCQkkcmVzdWx0ID0gJHNlcnZpY2UtPmdldFJlbmNvbnRyZSgiJGxpZW4iKTsKCgkJLy9wcmludF9yKCRyZXN1bHQpOwoJCQoJCQlpZighaXNfYXJyYXkoJHJlc3VsdCkpCgkJCXsgCgoJCQkJLy9sZSB0YWJsZWF1IGVzdCB2aWRlLCBpbCBmYXV0IGVudm95ZXIgdW4gbWVzc2FnZSBwb3VyIGxlIHNpZ25hbGVyCgkJCQkkZGVzaWduYXRpb24uPSAibGUgc2VydmljZSBlc3QgY291cMOpIjsKCQkJCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCQkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3BvdWxlcycpOwoJCQl9ICAgCgkJCWVsc2UKCQkJewoJCQkvL29uIGVzc2FpZSBkZSBmYWlyZSBxcXMgY2FsY3VscwoJCQkkdGFibGVhdTEgPSBhcnJheSgpOwoJCQkkdGFiMiA9IGFycmF5KCk7CgkJCSRjb21wdGV1ciA9IGNvdW50KCRyZXN1bHRbam91ZXVyXSk7CgkJCQoJCQkvL29uIHNjaW5kZSBsZSB0YWJsZWF1IHByaW5jaXBhbCBlbiBwbHVzaWV1cnMgdGFibGVhdXggPwoJCQkkdGFiMSA9IGFycmF5X3NsaWNlKCRyZXN1bHQsMCwxKTsKCQkJJHRhYjIgPSBhcnJheV9zbGljZSgkcmVzdWx0LDEsMSk7CgkJCSR0YWIzID0gYXJyYXlfc2xpY2UoJHJlc3VsdCwyLDEpOwoJCQkvL3ByaW50X3IoJHRhYjEpOwoJCQkvL3ByaW50X3IoJHRhYjIpOwoJCQkvL3ByaW50X3IoJHRhYjMpOwoJCQkvL2VjaG8gImxlIGNvbXB0ZXVyIGVzdCA6ICIuJGNvbXB0ZXVyOwoJCQkvL2VjaG8gImxlIG5iIGRlIHBhcnRpZXMgZGlzcHV0w6llcyBlc3QgOiAiLiRjb21wdGFnZTsKCQkJCSRpPTA7CgkJCQkkYT0wOwoJCQkJCgkJCQkJZm9yKCRpPTA7JGk8JGNvbXB0ZXVyOyRpKyspCgkJCQkJewoJCQkJCQkkeGphID0gJ3hqYScuJGk7Ly9leCA6ICR4amEgPSAneGphMCc7CgkJCQkJCSR4amIgPSAneGpiJy4kaTsvL2V4IDogJHhqYSA9ICd4amEwJzsKCQkJCQkJJCR4amEgPSAkdGFiMltqb3VldXJdWyRpXVt4amFdOy8vZXggOiAkeGphMCA9ICcnOwoJCQkJCQkkJHhqYiA9ICR0YWIyW2pvdWV1cl1bJGldW3hqYl07Ly9leCA6ICR4amEwID0gJyc7CgkJCQkJCQoJCQkJCSRxdWVyeTIgPSAiU0VMRUNUIGxpY2VuY2UgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSAoQ09OQ0FUX1dTKCcgJyxub20sIHByZW5vbSkgPSA/KSBPUiAoQ09OQ0FUX1dTKCcgJyxub20sIHByZW5vbSkgPSA/KSI7CgkJCQkJLy9lY2hvICRxdWVyeTI7CgkJCQkJJGRicmVzdWx0MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCBhcnJheSgkJHhqYiwkJHhqYSkpOwoJCQkJCQkKCQkJCQkJaWYoJGRicmVzdWx0MiAmJiAkZGJyZXN1bHQyLT5SZWNvcmRDb3VudCgpPjApCgkJCQkJCXsKCQkJCQkJCXdoaWxlKCRyb3cyPSAkZGJyZXN1bHQyLT5GZXRjaFJvdygpKQoJCQkJCQkJewoJCQkJCQkJCSRsaWNlbmNlID0gJHJvdzJbJ2xpY2VuY2UnXTsKCQkJCQkJCQlwaW5nX2FkbWluX29wczo6cmV0cmlldmVfcGFydGllc19zcGlkKCRsaWNlbmNlLCAkcmVjb3JkX2lkKTsKCQkJCQkJCQkKCQkJCQkJCQkKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCQoJCQkJCQl9CgkJCQkJCQoJCQkJCQkKCQkJCQkJLy9lY2hvICQkeGphOwoJCQkJCX0KCQkJCQkJCi8vb24gbWV0IGxhIHZhbGV1ciB1cGxvYWRlZCDDoCAxCiRxdWVyeTMgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBTRVQgYHVwbG9hZGVkYCA9IDEgV0hFUkUgaWQgPSA/IjsKJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MywgYXJyYXkoJHJlY29yZF9pZCkpOwkJCQkKCQkJCQoJCQkJCQoJCQkJCgkJCQkKCQkKCQkJCQoJCQkJCgkJCQkKCQkJCQoJCQl9Ly9maW4gZHUgZWxzZQoJfS8vZmluIGR1IHdoaWxlCn0vL2ZpbiBkdSBpZiBwcmltYWlyZQokdGhpcy0+U2V0TWVzc2FnZSgnUmV0cm91dmV6IGxlcyBpbmZvcyBkYW5zIGxlIGpvdXJuYWwnKTsKJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncG91bGVzJyk7CiMKIyBFT0YKIwovL2VjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZGV0YWlsc19yZW5jb250cmUudHBsJyk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_indivs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwokZGIgPSYgJHRoaXMtPkdldERiKCk7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwovL29uIHbDqXJpZmllIGxlcyBwZXJtaXNzaW9ucwppZighJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBVc2UnKSkKewoJJHRoaXMtPlNldE1lc3NhZ2UoJ1Blcm1pc3Npb24gbWFucXVhbnRlJyk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdjb21wZXRzJyk7Cn0KJGVycm9yID0gMDsKLy9vbiB2w6lyaWZpZSBsZXMgdmFyaWFibGVzIHJlw6d1ZXMKJHR5cGVfY29tcGV0ID0gJyc7CgppZihpc3NldCgkcGFyYW1zWyd0eXBlX2NvbXBldCddKSAmJiAkcGFyYW1zWyd0eXBlX2NvbXBldCddICE9JycpCnsKCSR0eXBlX2NvbXBldCA9ICRwYXJhbXNbJ3R5cGVfY29tcGV0J107Cn0KZWxzZQp7CgkkZXJyb3IrKzsKfQokY29lZmZpY2llbnQgPSAnJzsKaWYoaXNzZXQoJHBhcmFtc1snY29lZmZpY2llbnQnXSkgJiYgJHBhcmFtc1snY29lZmZpY2llbnQnXSAhPScnKQp7CgkkY29lZmZpY2llbnQgPSAkcGFyYW1zWydjb2VmZmljaWVudCddOwp9CmVsc2UKewoJJGVycm9yKys7Cn0KaWYoJGVycm9yPjApCnsKCSR0aGlzLT5TZXRNZXNzYWdlKCdQYXJhbcOodHJlcyBtYW5xdWFudHMnKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2NhbGVuZHJpZXInKTsKfQovL29uIGZhaXQgbGEgcmVxdWV0ZSBwb3VyIHJldGlyZXIgdG91dGVzIGxlcyBsaWNlbmNlcyBpbnNjcml0ZXMgw6AgY2V0dGUgY29tcGV0CiRxdWVyeSA9ICJTRUxFQ1QgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWNpcGUgV0hFUkUgdHlwZV9jb21wZXQgPSA/IjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHR5cGVfY29tcGV0KSk7CgppZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCnsKCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgl7CgkJJGxpY2VuY2UgPSAkcm93WydsaWNlbmNlJ107CgkJcGluZ19hZG1pbl9vcHM6OnJldHJpZXZlX3BhcnRpZXNfc3BpZCgkbGljZW5jZSk7Cgl9Cn0KCiR0aGlzLT5TZXRNZXNzYWdlKCdSZXRyb3V2ZXogbGVzIGluZm9zIGRhbnMgbGUgam91cm5hbCcpOwokdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdjYWxlbmRyaWVyJyk7CiMKI0VPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_parties.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgVXNlJykpCnsKCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJykpOwoJcmV0dXJuOwp9Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwovL3JlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmNhbGN1bHMucGhwJyk7Cgokbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CiRtb2lzX2NvdXJhbnQgPSBkYXRlKCduJyk7CiRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJGxpY2VuY2UgPSAkcGFyYW1zWydsaWNlbmNlJ107CiRkZXNpZ25hdGlvbiA9ICcnOwokcXVlcnkgPSAiU0VMRUNUIENPTkNBVF9XUygnICcsIG5vbSwgcHJlbm9tKSBBUyBwbGF5ZXIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSBsaWNlbmNlID0gPyI7CiRkYnJldG91ciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlKSk7CgoJaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQogIAl7CiAgICAJCXdoaWxlICgkcm93PSAkZGJyZXRvdXItPkZldGNoUm93KCkpCiAgICAgIAkJewoJCQkkcGxheWVyID0gJHJvd1sncGxheWVyJ107CgkJCS8vcmV0dXJuICRwbGF5ZXI7CgkJfQoJCgl9CgllbHNlCgl7CgkJJHRoaXMtPlNldE1lc3NhZ2UoIkpvdWV1ciBpbnRyb3V2YWJsZSIpOwoJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3JlY3VwJyk7Cgl9CgoKJHNlcnZpY2UgPSBuZXcgU2VydmljZSgpOwoKLy8kcmVzdWx0ID0gJHNlcnZpY2UtPmdldEpvdWV1clBhcnRpZXMoIjA3MjkwMjI5Iik7CiRyZXN1bHQgPSAkc2VydmljZS0+Z2V0Sm91ZXVyUGFydGllcygiJGxpY2VuY2UiKTsKCgoJaWYgKCFpc19hcnJheSgkcmVzdWx0KXx8IGNvdW50KCRyZXN1bHQpPT0wKQoJewoJCS8vCgkJJHRoaXMtPlNldE1lc3NhZ2UoJ1BiIGFjY8OocyByw6lzdWx0YXQnKTsKCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZWN1cCcpOwoJfQoJCi8vdmFyX2R1bXAoJHJlc3VsdCk7ICAKLyoqLwokaSA9IDA7CiRjb21wdGV1ciA9IDA7CmZvcmVhY2goJHJlc3VsdCBhcyAkY2xlID0+JHRhYikKewoJJGNvbXB0ZXVyKys7CgkKCSRsaWNlbmNlID0gJHRhYltsaWNlbmNlXTsKCSRhZHZsaWMgPSAkdGFiW2FkdmxpY107CgkkdmQgPSAkdGFiW3ZkXTsKCQoJCWlmICgkdmQgPT0nVicpCgkJewoJCQkkdmQgPSAxOwoJCX0KCQllbHNlIAoJCXsKCQkJJHZkID0gMDsKCQl9CgkJCgkkbnVtam91cm4gPSAkdGFiW251bWpvdXJuXTsKCQoJCWlmKGlzX2FycmF5KCRudW1qb3VybikpCgkJewoJCQkkbnVtam91cm4gPSAnMCc7CgkJfQoJCQoJJGNvZGVjaGFtcCA9ICR0YWJbY29kZWNoYW1wXTsKCQoJLy9vbiBlc3NhaWUgZGUgZMOpdGVybWluZXIgbGUgbm9tIGRlIGNldHRlIGNvbXBldCA/CgkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbiBXSEVSRSBjb2RlX2NvbXBldCA9ID8iOwoJCgkkZGF0ZWV2ZW50ID0gJHRhYltkYXRlXTsKCSRjaGd0ID0gZXhwbG9kZSgiLyIsJGRhdGVldmVudCk7CgkkZGF0ZV9ldmVudCA9ICRjaGd0WzJdLiItIi4kY2hndFsxXS4iLSIuJGNoZ3RbMF07CgkvL2VjaG8gImxhIGRhdGUgZXN0Ii4kZGF0ZV9ldmVudDsKCQovLwkkZGF0ZV9ldmVudCA9IGNvbnZfZGF0ZV92ZXJzX215c3FsKCRkYXRlZXZlbnQpOwoJJGFkdnNleGUgPSAkdGFiW2FkdnNleGVdOwoJJGFkdm5vbXByZSA9ICR0YWJbYWR2bm9tcHJlXTsKCSRwb2ludHJlcyA9ICR0YWJbcG9pbnRyZXNdOwoJJGNvZWZjaGFtcCA9ICR0YWJbY29lZmNoYW1wXTsKCSRhZHZjbGFvZiA9ICR0YWJbYWR2Y2xhb2ZdOwoJCi8qKi8JJHF1ZXJ5ID0gIlNFTEVDVCBsaWNlbmNlLGFkdmxpYywgbnVtam91cm4sIGNvZGVjaGFtcCwgZGF0ZV9ldmVudCwgY29lZmNoYW1wIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXMgV0hFUkUgbGljZW5jZSA9ID8gQU5EIGFkdmxpYyA9ID8gQU5EIG51bWpvdXJuID0gPyBBTkQgY29kZWNoYW1wID0gPyBBTkQgZGF0ZV9ldmVudCA9ID8gQU5EIGNvZWZjaGFtcCA9ID8iOwoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UsICRhZHZsaWMsICRudW1qb3VybiwgJGNvZGVjaGFtcCwgJGRhdGVfZXZlbnQsICRjb2VmY2hhbXApKTsKCQoJaWYoJGRicmVzdWx0ICAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkgCgl7CgkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIChpZCwgc2Fpc29uLCBsaWNlbmNlLCBhZHZsaWMsIHZkLCBudW1qb3VybiwgY29kZWNoYW1wLCBkYXRlX2V2ZW50LCBhZHZzZXhlLCBhZHZub21wcmUsIHBvaW50cmVzLCBjb2VmY2hhbXAsIGFkdmNsYW9mKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkJJGkrKzsKCQkvL2VjaG8gJHF1ZXJ5OwoJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkc2Fpc29uLCRsaWNlbmNlLCAkYWR2bGljLCAkdmQsICRudW1qb3VybiwgJGNvZGVjaGFtcCwgJGRhdGVfZXZlbnQsICRhZHZzZXhlLCAkYWR2bm9tcHJlLCAkcG9pbnRyZXMsICRjb2VmY2hhbXAsICRhZHZjbGFvZikpOwoJCQoJCQlpZighJGRicmVzdWx0YXQpCgkJCXsKCQkJCSRkZXNpZ25hdGlvbi49JGRiLT5FcnJvck1zZygpOyAKCQkJfQoJfQp9CiRjb21wdGFnZSA9ICRpOwokc3RhdHVzID0gJ1BhcnRpZXMgRkZUVCc7CiRkZXNpZ25hdGlvbi49ICJSw6ljdXDDqXJhdGlvbiBkZSAiLiRjb21wdGFnZS4iIHBhcnRpZXMgc3VyICIuJGNvbXB0ZXVyLiIgZGUgIi4kcGxheWVyOwokcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwIChpZCwgZGF0ZWNyZWF0ZWQsIHN0YXR1cywgZGVzaWduYXRpb24sIGFjdGlvbikgVkFMVUVTICgnJywgPywgPywgPywgPykiOwokYWN0aW9uID0gInJldHJpZXZlX3BhcnRpZXMiOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbm93LCAkc3RhdHVzLCRkZXNpZ25hdGlvbiwkYWN0aW9uKSk7CgoJaWYoISRkYnJlc3VsdCkKCXsKCQkJJGRlc2lnbmF0aW9uLj0kZGItPkVycm9yTXNnKCk7IAoJfQoJCiRxdWVyeSA9ICJTRUxFQ1QgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIFdIRVJFIGxpY2VuY2UgPSA/IjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UpKTsKJGxpZ25lcyA9ICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKTsKCSRhdWpvdXJkaHVpID0gZGF0ZSgnWS1tLWQnKTsKCWlmKCRsaWduZXM+MCkKCXsKCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIFNFVCBmZnR0ID0gPywgbWFqX2ZmdHQgPSA/IFdIRVJFIGxpY2VuY2UgPSA/IjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkY29tcHRldXIsJGF1am91cmRodWksJGxpY2VuY2UpKTsKCX0KCWVsc2UKCXsKCSRzaXRfbWVucyA9ICdKYW52aWVyIDIwMDAnOwoJJGZmdHQgPSAkY29tcHRldXI7Cgkkc3BpZCA9ICcwJzsKCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyAoaWQsIHNhaXNvbiwgZGF0ZW1haiwgbGljZW5jZSwgc2l0X21lbnMsIGZmdHQsIHNwaWQpIFZBTFVFUyAoJycsID8sID8sID8sID8sID8sID8pIjsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRzYWlzb24sICRub3csICRsaWNlbmNlLCAkc2l0X21lbnMsJGZmdHQsJHNwaWQpKTsKCX0KCgoKCWlmKCEkZGJyZXN1bHQpCgl7CgkJJGRlc2lnbmF0aW9uLj0kZGItPkVycm9yTXNnKCk7IAoJfQoJCgkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZWN1cCcpOwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_parties_spid.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyAgICAgICAgICAgUkVDVVBFUkFUSU9OIERFUyBQQVJUSUVTIFNQSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKJG5vdyA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpLCAiJyIpOwokZXJyb3IgPSAwOwoKJGxpY2VuY2UgPSAkcGFyYW1zWydsaWNlbmNlJ107CiRkZXNpZ25hdGlvbiA9ICcnOwoKCiRxdWVyeSA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJywgbm9tLCBwcmVub20pIEFTIHBsYXllciBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIGxpY2VuY2UgPSA/IEFORCBhY3RpZiA9ICcxJyI7CiRkYnJldG91ciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlKSk7CmlmICgkZGJyZXRvdXIgJiYgJGRicmV0b3VyLT5SZWNvcmRDb3VudCgpID4gMCkKewogICAgd2hpbGUgKCRyb3c9ICRkYnJldG91ci0+RmV0Y2hSb3coKSkKICAgICAgCXsKCQkkcGxheWVyID0gJHJvd1sncGxheWVyJ107CgkJLy9yZXR1cm4gJHBsYXllcjsKCQkkcmVzdWx0YXRzID0gcGluZ19hZG1pbl9vcHM6OnJldHJpZXZlX3BhcnRpZXNfc3BpZCgkbGljZW5jZSk7CgkJdmFyX2R1bXAoJHJlc3VsdGF0cyk7Cgl9CgkKfQplbHNlCnsKCSRkZXNpZ25hdGlvbi49IkpvdWV1ciBpbnRyb3V2YWJsZSI7CgkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdqb3VldXJzJyk7Cn0KCQoJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncmVjdXAnKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_poule.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwpkZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmNhbGN1bHMucGhwJyk7CiRzZXJ2aWNlID0gbmV3IFNlcnZpY2UoKTsKJHJlc3VsdCA9ICRzZXJ2aWNlLT5nZXRQb3VsZXMoIjIxMDciKTsKLy8kcmVzdWx0ID0gJHNlcnZpY2UtPmdldEVxdWlwZXNCeUNsdWIoIjA3MjkwMjI5IiwiTSIpOwovLyRyZXN1bHQgPSAkc2VydmljZS0+Z2V0Sm91ZXVyUGFydGllcygiMjkyMjcxIik7Cgp2YXJfZHVtcCgkcmVzdWx0KTsKICAgICAKLyoKZm9yZWFjaCgkcmVzdWx0IGFzICRjbGUgPT4kdGFiKQp7CgkKCSRjbGVfYXBwZWwgPSAnQVAnOwoJZWNobyAiJGNsZV9hcHBlbCA8YnIgLz4iOwoJJGxpYmVxdWlwZSA9ICR0YWJbbGliZXF1aXBlXTsKCSRsaWJkaXZpc2lvbiA9ICR0YWJbYWR2bGljXTsKCSRsaWVuZGl2aXNpb24gPSAkdGFiW2xpZW5kaXZpc2lvbl07CgkkaWRwb3VsZSA9ICR0YWJbaWRwb3VsZV07CgkkaWRkaXYgPSAkdGFiW2lkZGl2XTsKCQoJCgkkcXVlcnkgPSAiU0VMRUNUIGFkdmxpYywgY2xlX2FwcGVsIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgV0hFUkUgYWR2bGljID0gPyBBTkQgY2xlX2FwcGVsID0gPyI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkYWR2bGljLCAkY2xlX2FwcGVsKSk7CglpZigkZGJyZXN1bHQgICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKSB7CgkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIChpZCxjbGVfYXBwZWwsIGxpY2VuY2UsIGFkdmxpYywgdmQsIG51bWpvdXJuLCBjb2RlY2hhbXAsIGRhdGVfZXZlbnQsIGFkdnNleGUsIGFkdm5vbXByZSwgcG9pbnRyZXMsIGNvZWZjaGFtcCwgYWR2Y2xhb2YpIFZBTFVFUyAoJycsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIjsKCQllY2hvICRxdWVyeTsKCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGNsZV9hcHBlbCwgJGxpY2VuY2UsICRhZHZsaWMsICR2ZCwgJG51bWpvdXJuLCAkY29kZWNoYW1wLCAkZGF0ZV9ldmVudCwgJGFkdnNleGUsICRhZHZub21wcmUsICRwb2ludHJlcywgJGNvZWZjaGFtcCwgJGFkdmNsYW9mKSk7CgkJCgkJaWYoISRkYnJlc3VsdGF0KQoJCXsKCQkJJGVycm9yID0gJGRiLT5FcnJvck1zZygpLicgLS0gJy4kZGItPnNxbDsKCQkJYnJlYWs7CgkJfQovLwl9Cn0KLyoqLwovKgkKCSR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdzYXZlZF9yZWNvcmQnKSk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZW5jb250cmVzJyk7CiovCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_poule_rencontres.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5jYWxjdWxzLnBocCcpOwokaWRkaXYgPSAkcGFyYW1zWydpZGRpdiddOwokaWRwb3VsZSA9ICRwYXJhbXNbJ2lkcG91bGUnXTsKJHR5cGVfY29tcGV0ID0gJHBhcmFtc1sndHlwZV9jb21wZXQnXTsKJG1lc3NhZ2UgPSAnJzsKaWYoIWlzc2V0KCRpZGRpdikgJiYgZW1wdHkoJGlkZGl2KSl7CgkkbWVzc2FnZS49IlBhcmFtw6h0cmVzIG1hbnF1YW50cyI7CgkkdGhpcy0+U2V0bWVzc2FnZSgiJG1lc3NhZ2UiKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2VxdWlwZXMnKTsKCX0KLy9MZXMgcHLDqWbDqXJlbmNlcwokbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CiRub21fZXF1aXBlcyA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdub21fZXF1aXBlcycpOwokc2Fpc29uID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwokdXBkYXRlID0gJzAnOy8vdmFsZXVyIHBhciBkw6lmYXV0CiRzZXJ2aWNlID0gbmV3IFNlcnZpY2UoKTsKJHJlc3VsdCA9ICRzZXJ2aWNlLT5nZXRQb3VsZVJlbmNvbnRyZXMoJGlkZGl2LCRpZHBvdWxlKTsKCiRkZXNpZ25hdGlvbiA9ICcnOwovL3Zhcl9kdW1wKCRyZXN1bHQpOwovKiovCi8vb24gdmEgdGVzdGVyIGxhIHZhbGV1ciBkZSBsYSB2YXJpYWJsZSAkcmVzdWx0Ci8vY2VsYSBwZXJtZXQgZCfDqXZpdGVyIGRlIGJvdWNsZXIgcydpbCBuJ3kgYSByaWVuIGRhbnMgbGUgdGFibGVhdQppZighaXNfYXJyYXkoJHJlc3VsdCkpCnsgCgkKCQkvL2xlIHRhYmxlYXUgZXN0IHZpZGUsIGlsIGZhdXQgZW52b3llciB1biBtZXNzYWdlIHBvdXIgbGUgc2lnbmFsZXIKCQkkZGVzaWduYXRpb24uPSAibGUgc2VydmljZSBlc3QgY291cMOpIjsKCQkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncG91bGVzJyk7Cn0gICAKZWxzZXsKJGk9MDsKZm9yZWFjaCgkcmVzdWx0IGFzICRjbGUgPT4kdGFiKQp7CgkKCQoJJGxpYmVsbGUgPSAkdGFiW2xpYmVsbGVdOwoJJGVxdWEgPSAkdGFiW2VxdWFdOwoJJGVxdWIgPSAkdGFiW2VxdWJdOwoJCgkvL29uIGZhaXQgcXVlbHF1ZSB0cmFuc2Zvcm1hdGlvbnMgZGVzIGluZm9zIHJlY3VlaWxsaWVzCglwcmVnX21hdGNoX2FsbCgnI1swLTldKyMnLCRsaWJlbGxlLCRleHRyYWN0KTsKCSR0b3VyID0gJGV4dHJhY3RbMF1bMF07CgkKCSRleHRyYWN0aW9uID0gc3Vic3RyKCRsaWJlbGxlLC04KTsKCSRkYXRlX2V4dHJhY3QgPSBleHBsb2RlKCcvJywgJGV4dHJhY3Rpb24pOwoJJGFubmVlX2RhdGUgPSAkZGF0ZV9leHRyYWN0WzJdICsgMjAwMDsKCSRkYXRlX2V2ZW50ID0gJGFubmVlX2RhdGUuIi0iLiRkYXRlX2V4dHJhY3RbMV0uIi0iLiRkYXRlX2V4dHJhY3RbMF07CgkkdXBsb2FkZWQgPSAwOy8vaW5pdGlhbGVtZW50IG1pcyDDoCAwLCBpbmRpcXVlIHNpIGxlIGTDqXRhaWwgZGVzIG1hdGNocyBhIMOpdMOpIHVwbG9hZMOpIG91IG5vbi4KCS8vb24gcmVnYXJkZSBzJ2lsIHMnYWdpdCBkJ3VuZSDDqXF1aXBlIGRlIG1vbiBjbHViIG91IG5vbgoJJGNsdWJhID0gc3RycG9zKCRlcXVhLCRub21fZXF1aXBlcyk7CgkkY2x1YmIgPSBzdHJwb3MoJGVxdWIsJG5vbV9lcXVpcGVzKTsKCQoJCWlmICgkY2x1YmEgIT09IGZhbHNlIHx8ICRjbHViYiAhPT0gZmFsc2UpCgkJewoJCQkkY2x1YiA9IDE7Ly9lcXVpcGUgZGUgbW9uIGNsdWIgb24gYWZmaWNoZQoJCQkkYWZmaWNoYWdlID0gMTsKCQl9CgkJZWxzZQoJCXsKCQkJJGNsdWIgPSAwOwoJCQkvL29uIGFmZmljaGUgb3UgcGFzID8KCQkJLy9PbiByZWdhcmRlIGNlIHF1ZSBsJ2FkbWluIGEgZMOpY2lkw6kgZHMgbGEgY29uZmlndXJhdGlvbgoJCQoJCX0KCQkKCSRzY29yZWEgPSAkdGFiW3Njb3JlYV07Cgkkc2NvcmViID0gJHRhYltzY29yZWJdOwoJLy9lY2hvIGdldHR5cGUoJHNjb3JlYSk7CgkkbGllbiA9ICR0YWJbbGllbl07CgkKCS8vCgkvL29uIHbDqXJpZmllIHF1ZSBsZSBzY29yZSBhIGJpZW4gw6l0w6kgc2Fpc2kKCS8vc2kgbGUgc2NvcmUgZXN0IHNhaXNpIG9uIG9idGllbnQgdW4gc3RyaW5nIHBvdXIgbGVzIHZhcmlhYmxlcyBzY29yZWEgZXQgc2NvcmViCgkvL3Npbm9uIGlsIHMnYWdpdCBkJ3VuIGFycmF5CQoJCgkJaWYoaXNfYXJyYXkoJHNjb3JlYSkgJiYgaXNfYXJyYXkoJHNjb3JlYikpCgkJewoJCQkvL2xlIHNjb3JlIG4nZXN0IHBhcyBwYXJ2ZW51IG91IGxlIG1hdGNoIG4nYSBwYXMgw6l0w6kgam91w6kKCQkJLy9PbiBsJ2VucmVnaXN0cmUgcWQgbcOqbWUKCQkJJHNjb3JlYSA9IDA7CgkJCSRzY29yZWIgPSAwOwoJCQkkdXBkYXRlID0gMDsJCQoJCX0KCQkKCS8vb24gdsOpcmlmaWUgc2kgbCdlbnJlZ2lzdHJlbWVudCBlc3QgZMOpasOgIGzDoAoJJHF1ZXJ5ID0gIlNFTEVDVCBpZCxsaWVuLCBzY29yZWEsIHNjb3JlYiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBXSEVSRSBpZGRpdiA9PyBBTkQgaWRwb3VsZSA9ID8gQU5EIGRhdGVfZXZlbnQgPSA/IEFORCBlcXVhID0gPyBBTkQgZXF1YiA9ID8iOwoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGlkZGl2LCRpZHBvdWxlLCAkZGF0ZV9ldmVudCwkZXF1YSwkZXF1YikpOwoJCgkvL2lsIG4neSBhIHBhcyBkJ2VucmVnaXN0cmVtZW50IGF1cGFyYXZhbnQsIG9uIHBldXQgY29udGludWVyCgkJCQoJCWlmKCRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKSAKCQl7CgkJCSRxdWVyeTEgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzIChpZCxzYWlzb24saWRwb3VsZSwgaWRkaXYsIGNsdWIsIHRvdXIsIGRhdGVfZXZlbnQsIHVwbG9hZGVkLCBsaWJlbGxlLCBlcXVhLCBlcXViLCBzY29yZWEsIHNjb3JlYiwgbGllbikgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkvL2VjaG8gJHF1ZXJ5OwoJCQkkaSsrOwoJCQkkdXBsb2FkZWQgPSAwOwoJCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkxLGFycmF5KCRzYWlzb24sJGlkcG91bGUsICRpZGRpdiwgJGNsdWIsICR0b3VyLCAkZGF0ZV9ldmVudCwgJHVwbG9hZGVkLCAkbGliZWxsZSwgJGVxdWEsICRlcXViLCAkc2NvcmVhLCAkc2NvcmViLCAkbGllbikpOwoJCQoJCQkJaWYoISRkYnJlc3VsdGF0KQoJCQkJewoJCQkJCSRkZXNpZ25hdGlvbi49ICRkYi0+RXJyb3JNc2coKTsKCQkJCQkJCQkKCgkJCQl9CgkJfQoJCWVsc2VpZigkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPjApCgkJewoJCQkvL2lsIHkgYSBkw6lqw6AgdW4gZW5yZWdpc3RyZW1lbnQsIGxlIHNjb3JlIGVzdC1pbCDDoCBqb3VyID8KCQkJJHVwZGF0ZSA9IDE7CgkJCSRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkJCSRpZCA9ICRyb3dbJ2lkJ107CgkJCSRzY29yZUEgPSAkcm93WydzY29yZWEnXTsKCQkJJHNjb3JlQiA9ICRyb3dbJ3Njb3JlYiddOwoJCQkJCgkJCQlpZigkc2NvcmVBID09MCAmJiAkc2NvcmVCID09MCkKCQkJCXsKCQkJCQkkcXVlcnkzID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG91bGVzX3JlbmNvbnRyZXMgU0VUIHNjb3JlYSA9ID8sIHNjb3JlYiA9ID8gV0hFUkUgaWQgPSA/IjsKCQkJCQkkZGJyZXN1bHRBID0gJGRiLT5FeGVjdXRlKCRxdWVyeTMsIGFycmF5KCRzY29yZWEsICRzY29yZWIsICRpZCkpOwoJCQkJCSRpKys7CgkJCQkJaWYoISRkYnJlc3VsdEEpCgkJCQkJewoJCQkJCQkkZGVzaWduYXRpb24uPSAkZGItPkVycm9yTXNnKCk7CgkJCQkJfQoJCQkJfQoJCX0KCQkKCQoJCgkvL29uIHJlbXBsaXQgbGUgY2FsZW5kcmllciA/CglpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgncG9wdWxhdGVfY2FsZW5kYXInKT09J091aScpCgl7CgkJCgkJCS8vT24gZmFpdCBsJ2luY2x1c2lvbiBkcyBsYSBiZGQKCQkJLy8gb24gdsOpcmlmaWUgZCdhYm9yZCBxdWUgbCdlbnJlZ2lzdHJlbWVudCBuJ2VzdCBwYXMgZMOpasOgIGVuIGJkZAoJCQkkcXVlcnkgPSAiU0VMRUNUIG51bWpvdXJuLCBkYXRlX2RlYnV0LCBkYXRlX2ZpbiwgdHlwZV9jb21wZXQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2FsZW5kcmllciBXSEVSRSAgbnVtam91cm4gPSA/IEFORCBkYXRlX2RlYnV0ID0gPyBBTkQgZGF0ZV9maW4gPT8gQU5EIHR5cGVfY29tcGV0ID0gPyAiOy8vQU5EIHNjb3JlYSAhPTAgQU5EIHNjb3JlYiAhPTAiOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdG91ciwgJGRhdGVfZXZlbnQsICRkYXRlX2V2ZW50LCR0eXBlX2NvbXBldCkpOwoKCQkJCWlmICgkZGJyZXN1bHQtPlJlY29yZENvdW50KCk9PTApCgkJCQl7CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2FsZW5kcmllciAoaWQsZGF0ZV9kZWJ1dCxkYXRlX2Zpbix0eXBlX2NvbXBldCwgbnVtam91cm4pIFZBTFVFUyAoICcnLCA/LCA/LCA/LCA/KSI7CgkJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRkYXRlX2V2ZW50LCRkYXRlX2V2ZW50LCR0eXBlX2NvbXBldCwkdG91cikpOwoJCQkJCQkKCQkJCQkJaWYoJGRicmVzdWx0KQoJCQkJCQl7CgkJCQkJCQkkZGVzaWduYXRpb24uPSAkZGItPkVycm9yTXNnKCk7CgkJCQkJCX0KCQkJCX0KCQkJCQoKCQkKCX0KfS8vZmluIGR1IGZvcmVhY2gKfS8vZmluIGR1IGlmIGlzX2FycmF5KCRyZXN1bHQpCgokY29tcHRhZ2UgPSAkaTsKJHN0YXR1cyA9ICdQb3VsZXMnOwokZGVzaWduYXRpb24uPSAiTWlzZSDDoCBqb3VyIGRlICIuJGNvbXB0YWdlLiIgcmVuY29udHJlcyBkZSBsYSBwb3VsZSAiLiRpZHBvdWxlOwokcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwIChpZCwgZGF0ZWNyZWF0ZWQsIHN0YXR1cywgZGVzaWduYXRpb24sIGFjdGlvbikgVkFMVUVTICgnJywgPywgPywgPywgPykiOwokYWN0aW9uID0gInJldHJpZXZlX3BvdWxlc19yZW5jb250cmVzIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5vdywkc3RhdHVzLCAkZGVzaWduYXRpb24sJGFjdGlvbikpOwppZighJGRicmVzdWx0KQp7CgkkZGVzaWduYXRpb24uPSAkZGItPkVycm9yTXNnKCk7IAp9CgkKCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3BvdWxlcycpOwovKgkqLwojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_sit_mens.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMjIyAgICAgICAgICAgICAgICAgICBSw6ljdXDDqXJhdGlvbiBkZSBsYSBzaXR1YXRpb24gbWVuc3VlbGxlICAgICAgICAgICAgICAgICAgIyMjCiMjIyAgICAgICAgICAgICAgICAgICBBdXRldXIgQ2xhdWRlIFNJT0hBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9vbiB2w6lyaWZpZSBsZXMgcGVybWlzc2lvbnMKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFVzZScpKQp7CgllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCXJldHVybjsKfQovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5jYWxjdWxzLnBocCcpOwokZGI9JGdDbXMtPkdldERiKCk7CgovL2xlcyBwcsOpZsOpcmVuY2VzCiRtb2lzX2NvdXJhbnQgPSBkYXRlKCduJyk7CiRtb2lzX2ZyYW5jYWlzID0gYXJyYXkoJ0phbnZpZXInLCAnRsOpdnJpZXInLCdNYXJzJywgJ0F2cmlsJywgJ01haScsICdKdWluJywgJ0p1aWxsZXQnLCdBb8O7dCcsICdTZXB0ZW1icmUnLCAnT2N0b2JyZScsJ05vdmVtYnJlJywnRMOpY2VtYnJlJyk7CiRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKJG1vaXNfcmVlbCA9ICRtb2lzX2NvdXJhbnQgLSAxOwokbW9pc19zbSA9ICRtb2lzX2ZyYW5jYWlzWyIkbW9pc19yZWVsIl07CiRtb2lzX3NpdF9tZW5zID0gJG1vaXNfc20uIiAiLiRhbm5lZV9jb3VyYW50ZTsKCiRkZXNpZ25hdGlvbiA9ICcnOyAvL2luc3RhbmNpYXRpb24gZHUgbWVzc2FnZSBkZSBzb3J0aWUKCi8vZWNobyAibGUgbW9pcyBkZSBsYSBzaXR1YXRpb24gbWVuc3VlbGxlIGVzdCA6ICIuJG1vaXNfc2l0X21lbnM7CiRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKCiRsaWNlbmNlID0gJyc7CgoJaWYoIWlzc2V0KCRwYXJhbXNbJ2xpY2VuY2UnXSkgJiYgJHBhcmFtc1snbGljZW5jZSddID09JycpCgl7CgkJJGRlc2lnbmF0aW9uIC49ICdQYXMgZGUgbsKwIGRlIGxpY2VuY2UnOwoJCSR0aGlzLT5TZXRNZXNzYWdlKCRkZXNpZ25hdGlvbik7CgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncmVjdXAnKTsKCX0KCWVsc2UKCXsKCQkkbGljZW5jZSA9ICRwYXJhbXNbJ2xpY2VuY2UnXTsKCX0KCi8vb24gdsOpcmlmaWUgcXVlIGxlIGpvdWV1ciBlbiBxdWVzdGlvbiBlc3QgYmllbiBhY3RpZgokcXVlcnkgPSAiU0VMRUNUIENPTkNBVF9XUygnICcsbm9tLHByZW5vbSkgYXMgcGxheWVyLCBsaWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgV0hFUkUgbGljZW5jZSA9ID8gQU5EIGFjdGlmID0gJzEnIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UpKTsKLy9sZSBqb3VldXIgbmUgcmVtcGxpdCBwYXMgbGVzIGNvbmRpdGlvbnMgZGUgbGEgcmVxdWV0ZSwgb24gcmVudm9pdCBhdmVjIHVuIG1lc3NhZ2UKaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkKewoJJHRoaXMtPlNldE1lc3NhZ2UoIkpvdWV1ciBkw6lzYWN0aXbDqSIpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignc2l0dWF0aW9uJyk7Cn0KZWxzZQp7Ci8vbGUgam91ZXVyIGVzdCBhY3RpZiwgb24gdmEgdsOpcmlmaWVyIHNpIHNhIHNpdHVhdGlvbiBtZW5zdWVsbGUgZXN0IGTDqWrDoCBlbnJlZ2lzdHLDqWUKJHF1ZXJ5ID0gIlNFTEVDVCBsaWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIFdIRVJFIGxpY2VuY2UgPSA/IEFORCBtb2lzID0gPyBBTkQgYW5uZWUgPSA/IjsKJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSwkbW9pc19jb3VyYW50LCRhbm5lZV9jb3VyYW50ZSkpOwoJCglpZigkZGJyZXN1bHRhdCAmJiAkZGJyZXN1bHRhdC0+UmVjb3JkQ291bnQoKT4wKXsKCQkvL2xhIHNpdHVhdGlvbiBtZW5zdWVsbGUgZXN0IGTDqWrDoCDDoCBqb3VyLCBvbiBwYXNzZQoJCSR0aGlzLT5TZXRNZXNzYWdlKCdTaXR1YXRpb24gbWVuc3VlbGxlIGTDqWrDoCDDoCBqb3VyICEnKTsKCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdqb3VldXJzJyk7CgkJCgl9CgllbHNlCgl7CgovL2VjaG8gJ2xhIGxpY2VuY2UgZXN0IDogJy4kbGljZW5jZTsKLy9lY2hvICJsZSBtb2lzIGNvdXJhbnQgZXN0IGxlIDogIi4kbW9pc19jb3VyYW50LiIgYW5uZWUgY291cmFudGUgOiAgIi4kYW5uZWVfY291cmFudGU7CgoJJHNlcnZpY2UgPSBuZXcgU2VydmljZSgpOwoJJHJlc3VsdCA9ICRzZXJ2aWNlLT5nZXRKb3VldXIoIiRsaWNlbmNlIik7Cgkkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJJHBsYXllciA9ICRyb3dbJ3BsYXllciddOwovL3Zhcl9kdW1wKCRyZXN1bHQpOwovL2VjaG8gImxhIGxpY2VuY2UgZXN0ICRyZXN1bHRbbGljZW5jZV0iOwoJCQkKCQkkbGljZW5jZTIgPSAkcmVzdWx0W2xpY2VuY2VdOwoJLy8JZWNobyAibGEgbGljZW5jZSBlc3QgJGxpY2VuY2UgPGJyIC8+IjsKCQkkbm9tID0gJHJlc3VsdFtub21dOwoJCSRwcmVub20gPSAkcmVzdWx0W3ByZW5vbV07CgkJJG5hdGlvID0gJHJlc3VsdFtuYXRpb107CgkJJGNsZ2xvYiA9ICRyZXN1bHRbY2xnbG9iXTsKCQkkcG9pbnQgPSAkcmVzdWx0W3BvaW50XTsKCQkkYWNsZ2xvYiA9ICRyZXN1bHRbYWNsZ2xvYl07CgkJJGFwb2ludCA9ICRyZXN1bHRbYXBvaW50XTsKCQkkY2xuYXQgPSAkcmVzdWx0W2NsbmF0XTsKCQkkY2F0ZWcgPSAkcmVzdWx0W2NhdGVnXTsKCQkkcmFuZ3JlZyA9ICRyZXN1bHRbcmFuZ3JlZ107CgkJJHJhbmdkZXAgPSAkcmVzdWx0W3JhbmdkZXBdOwoJCSR2YWxjbGEgPSAkcmVzdWx0W3ZhbGNsYV07CgkJJGNscHJvID0gJHJlc3VsdFtjbHByb107CgkJJHZhbGluaXQgPSAkdGFyZXN1bHRiW3ZhbGluaXRdOwoJCSRwcm9nbW9pcyA9ICRyZXN1bHRbcHJvZ21vaXNdOwoJCSRwcm9nYW5uID0gJHJlc3VsdFtwcm9nYW5uXTsKCQkKCQlpZiggJGxpY2VuY2UyID09ICcnKQoJCXsKCQkJLy8gaWwgbid5IGEgcGFzIGRlIGNvcnJlc3BvbmRhbmNlCgkJCS8vb3UgbGUgam91ZXVyIGVzdCBkw6lzYWN0aXbDqQoJCQkvL291IGxlIHNlcnZpY2UgZXN0IEguUwoJCQkvL29uIGxlIHJlcG9ydGUgZGFucyBsZSBqb3VybmFsIGTDqWRpw6kKCQkJJHN0YXR1cyA9ICJlcnJvciI7CgkJCSRkZXNpZ25hdGlvbiA9ICJMaWNlbmNlIGFic2VudGUgcG91ciAiLiRwbGF5ZXIuIiBvdSBjb3VwdXJlIGR1IHNlcnZpY2UiOwoJCQkkYWN0aW9uID0gInJldHJpZXZlX3NpdF9tZW5zIjsKCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cCAoaWQsIGRhdGVtYWosIHN0YXR1cywgZGVzaWduYXRpb24sIGFjdGlvbikgVkFMVUVTICgnJywgPywgPywgPywgPykiOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbm93LCAkc3RhdHVzLCAkZGVzaWduYXRpb24sICRhY3Rpb24pKTsKCQkJJHRoaXMtPlNldE1lc3NhZ2UoImxpY2VuY2UgYWJzZW50ZSDDoCBsYSBGRlRUIG91IGNvdXB1cmUgZHUgc2VydmljZSIpOwoJCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignc2l0dWF0aW9uJyk7CgkJCQoJCX0KCQllbHNlCgkJewoJCQkKCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyAoaWQsZGF0ZWNyZWF0ZWQsIGRhdGVtYWosIG1vaXMsIGFubmVlLCBwaGFzZSwgbGljZW5jZSwgbm9tLCBwcmVub20sIHBvaW50cywgY2xuYXQsIHJhbmdyZWcscmFuZ2RlcCwgcHJvZ21vaXMpIFZBTFVFUyAoJycsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIjsKCQkJLy9lY2hvICRxdWVyeTsKCQkJJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRub3csJG5vdywkbW9pc19jb3VyYW50LCAkYW5uZWVfY291cmFudGUsICRwaGFzZSwgJGxpY2VuY2UyLCAkbm9tLCAkcHJlbm9tLCAkcG9pbnQsICRjbG5hdCwgJHJhbmdyZWcsICRyYW5nZGVwLCAkcHJvZ21vaXMpKTsKCQkJCS8vT24gdsOpcmlmaWUgcXVlIGwnaW5zZXJ0aW9uIHNlIHBhc3NlIGJpZW4KCQkJCQoJCQkJaWYoISRkYnJlc3VsdGF0KQoJCQkJewoJCQkJCSRtZXNzYWdlLj0gJGRiLT5FcnJvck1zZygpOyAKCQkJCQkkdGhpcy0+U2V0TWVzc2FnZSgiJG1lc3NhZ2UiKTsKCQkJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdqb3VldXJzJyk7CgkJCQkvL2JyZWFrOwoJCQkJfQoJCQkJZWxzZSAKCQkJCXsKCQkJCQoJCQkKCQkJCQkvL29uIGluc8OocmUgYXVzc2kgbCdlbmVnaXN0cmVtZW50IGRhbnMgbGUgam91cm5hbAoJCQkJCSRkZXNpZ25hdGlvbiA9ICJSw6ljdXDDqXJhdGlvbiBzaXR1YXRpb24gbWVuc3VlbGxlIGRlICAiLiRtb2lzX3NtLiIgIi4kYW5uZWVfY291cmFudGUuIiBkZSAiLiRub20uIiAiLiRwcmVub207CgkJCQkJJHN0YXR1cyA9ICdTaXRfbWVucyc7CgkJCQkJLyoKCQkJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwIChpZCwgZGF0ZW1haiwgc3RhdHVzLGRlc2lnbmF0aW9uLCBhY3Rpb24pIFZBTFVFUyAoJycsID8sID8sID8sID8pIjsKCQkJCQkkYWN0aW9uID0gInJldHJpZXZlX3NpdF9tZW5zIjsKCQkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbm93LCAkc3RhdHVzLCAkZGVzaWduYXRpb24sJGFjdGlvbikpOwoJCQkJCSovCgkJCQkJLy9vbiDDqWNyaXQgZGFucyBsZSBqb3VybmFsCgkJCQkJcGluZ19hZG1pbl9vcHM6OmVjcmlyZWpvdXJuYWwoJG5vdywkc3RhdHVzLCRkZXNpZ25hdGlvbiwgJGFjdGlvbik7CgkJCQkJLyoKCQkJCQkKCQkJCQkJaWYoISRkYnJlc3VsdCkKCQkJCQkJewoJCQkJCQkJZWNobyAkZGItPnNxbC4nPGJyLz4nLiRkYi0+RXJyb3JNc2coKTsgCgkJCQkJCX0KCQkJCgkJCQkJKi8KCQkJCQkkcXVlcnkgPSAiU0VMRUNUIGxpY2VuY2UgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyBXSEVSRSBsaWNlbmNlID0gPyI7CgkJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UyKSk7CgkJCQoJCQkJCQlpZigkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkgCgkJCQkJCXsKCQkJCQkJCSRmZnR0ID0gMDsKCQkJCQkJCSRzcGlkID0gMDsKCQkJCQkJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyAoaWQsIHNhaXNvbiwgZGF0ZW1haiwgbGljZW5jZSwgc2l0X21lbnMsIGZmdHQsIHNwaWQpIFZBTFVFUyAoJycsID8sID8sID8sID8sID8sID8pIjsKCQkJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRzYWlzb24sICRub3csICRsaWNlbmNlMiwgJG1vaXNfc2l0X21lbnMsICRmZnR0LCAkc3BpZCkpOwoJCQkJCgkJCQkJCQkkdGhpcy0+U2V0TWVzc2FnZSgiU2l0dWF0aW9uIG1lbnN1ZWxsZSBham91dMOpZSIpOwoJCQkJCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignc2l0dWF0aW9uJyk7CgkJCQkJCX0KCQkJCQkJZWxzZSAKCQkJCQkJewoJCQkJCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyBTRVQgZGF0ZW1haiA9ID8gLCBzaXRfbWVucyA9ID8gV0hFUkUgbGljZW5jZSA9ID8iOwoJCQkJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5vdywgJG1vaXNfc2l0X21lbnMsICRsaWNlbmNlMikpOwoKCQkJCQkJCQlpZighJGRicmVzdWx0KQoJCQkJCQkJCXsKCQkJCQkJCQkJJG1lc3NhZ2UgPSAkZGItPkVycm9yTXNnKCk7CgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgoJCQkJCQkJCQkkbWVzc2FnZSA9ICJTaXR1YXRpb24gbWVuc3VlbGxlIG1pc2Ugw6Agam91ciI7CgkJCQkJCQkJfQoJCQkJCQoJCQkJCQkJCSR0aGlzLT5TZXRNZXNzYWdlKCIkbWVzc2FnZSIpOwoJCQkJCQkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3NpdHVhdGlvbicpOwoJCQkJCQl9CgkJCQl9Ly9maW4gZHUgaWYgc2kgbCdpbnNlcnRpb24gc2UgcGFzc2UgYmllbgoJCX0vL2ZpbiBkdSBpZiAkbGljZW5jZQkJCQkKCX0vL2ZpbiBkZSBsYSB2w6lyaWZpY2F0aW9uIGRlIGxhIHNpdF9tZW5zIGVuIGJkZAoJfS8vZmluIGR1IHRlc3Qgc2kgbGUgam91ZXVyIGVzdCBhY3RpZiBlbiBiZGQKCgovKgkKCSR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdzYXZlZF9yZWNvcmQnKSk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzaXR1YXRpb24nKTsKKi8KIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_teams.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAgICBQcmVtacOocmUgw6l0YXBlIGRlIHLDqWN1cMOpcmF0aW9uIGRlcyDDqXF1aXBlcyAgICAgICAgICAgICAgICAgIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKCgppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmRlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5jYWxjdWxzLnBocCcpOwoKJGNsdWJfbnVtYmVyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NsdWJfbnVtYmVyJyk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CiRkZXNpZ25hdGlvbiA9ICcnOwppZighaXNzZXQoJGNsdWJfbnVtYmVyKSAmJiAkY2x1Yl9udW1iZXIgPT0nJykKewoJJG1lc3NhZ2UgPSAiVm90cmUgbnVtw6lybyBkZSBjbHViIG4nZXN0IHBhcyBjb25maWd1csOpICEhIjsKCSR0aGlzLT5TZXRNZXNzYWdlKCIkbWVzc2FnZSIpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignY29uZmlndXJhdGlvbicpOwp9CiRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKLy9vbiBpbnN0YW5jaWUgbGEgY2xhc3NlIHNlcnZpY2UKJHNlcnZpY2UgPSBuZXcgU2VydmljZSgpOwokdHlwZSA9ICRwYXJhbXNbJ3R5cGUnXTsKCglpZiAoIWlzc2V0KCR0eXBlKSB8fCAkdHlwZSAhPSAnJykKCXsKCQkkcmVzdWx0ID0gJHNlcnZpY2UtPmdldEVxdWlwZXNCeUNsdWIoIiRjbHViX251bWJlciIpOwoJCSRjaHB0ID0gIkEiOyAvL3BvdXIgYXV0cmVzIGNoYW1waW9ubmF0CgkJJHR5cGVfY29tcGV0ID0gJ1UnOy8vcG91ciB1bmRlZmluZWQKCX0KCWVsc2VpZigkdHlwZT09J00nKQoJewoJCSRyZXN1bHQgPSAkc2VydmljZS0+Z2V0RXF1aXBlc0J5Q2x1YigiJGNsdWJfbnVtYmVyIiwgIiR0eXBlIik7CgkJJGNocHQgPSAiUyI7IC8vcG91ciBjaGFtcGlvbm5hdCBzZW5pb3JzCgkJJHR5cGVfY29tcGV0ID0gJzEnOwoJfQoKLy92YXJfZHVtcCgkcmVzdWx0KTsKLyoqLwovL29uIHZhIHRlc3RlciBzaSBsYSB2YXJpYWJsZSBlc3QgYmllbiB1biB0YWJsZWF1ICAgCglpZighaXNfYXJyYXkoJHJlc3VsdCkpICB7CgkJCgkJJHRoaXMtPlNldE1lc3NhZ2UoIkxlIHNlcnZpY2UgZXN0IGNvdXDDqSIpOwoJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2VxdWlwZXMnKTsKCX0KCi8vL29uIGluaXRpYWxpc2UgdW4gY29tcHRldXIgZ8OpbsOpcmFsICRpCiRpPTA7Ci8vb24gaW5pdGlhbGlzZSB1biBkZXV4acOobWUgY29tcHRldXIKJGNvbXB0ZXVyPTA7CmZvcmVhY2goJHJlc3VsdCBhcyAkY2xlID0+JHRhYikKewoJCgkkaSsrOwoJJGxpYmVxdWlwZSA9ICR0YWJbbGliZXF1aXBlXTsKCSRuZXdwaGFzZSA9IGV4cGxvZGUgKCItIiwkbGliZXF1aXBlKTsKCS8vZWNobyAibGEgcGhhc2UgZXN0ICIuJG5ld3BoYXNlWzFdOwoJJHBoYXNlID0gc3Vic3RyKCRuZXdwaGFzZVsxXSwgLTEpOwoJJG5ld19lcXVpcGUgPSAkbmV3cGhhc2VbMF07CgkvL2VjaG8gImxhIHBoYXNlIGVzdCAiLiRwaGFzZTsKCQoJJGxpYmRpdmlzaW9uID0gJHRhYltsaWJkaXZpc2lvbl07CgkkbGllbmRpdmlzaW9uID0gJHRhYltsaWVuZGl2aXNpb25dOwoJJGlkcG91bGUgPSAkdGFiW2lkcG91bGVdOwoJJGlkZGl2ID0gJHRhYltpZGRpdl07CgkKCS8vJHR5cGVfY29tcGV0ID0gJHR5cGU7CgkKCQoJJHF1ZXJ5ID0gIlNFTEVDVCBwaGFzZSwgc2Fpc29uLCBsaWVuZGl2aXNpb24gRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcyBXSEVSRSBsaWVuZGl2aXNpb24gPSA/IEFORCBzYWlzb24gPSA/IjsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWVuZGl2aXNpb24sICRzYWlzb24pKTsKCQoJCWlmKCRkYnJlc3VsdCAgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID09IDApIAoJCXsKCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIChpZCwgc2Fpc29uLCBwaGFzZSwgbGliZXF1aXBlLCBsaWJkaXZpc2lvbiwgbGllbmRpdmlzaW9uLCBpZHBvdWxlLCBpZGRpdiwgdHlwZV9jb21wZXQpIFZBTFVFUyAoJycsID8sID8sID8sID8sID8sID8sID8sID8pIjsKCQkJLy9lY2hvICRxdWVyeTsKCQkJJGNvbXB0ZXVyKys7CgkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkc2Fpc29uLCAkcGhhc2UsICRuZXdfZXF1aXBlLCAkbGliZGl2aXNpb24sICRsaWVuZGl2aXNpb24sICRpZHBvdWxlLCAkaWRkaXYsICR0eXBlX2NvbXBldCkpOwoJCQoJCQlpZighJGRicmVzdWx0YXQpCgkJCXsKCQkJCSRkZXNpZ25hdGlvbiAuPSAkZGItPkVycm9yTXNnKCk7CQkJCgkJCX0KCgkJfS8vZmluIGR1IGlmICRkYnJlc3VsdAoJCgkKfS8vIGZpbiBkdSBmb3JlYWNoCgokZGVzaWduYXRpb24gLj0gIlLDqWN1cMOpcmF0aW9uIGRlICIuJGNvbXB0ZXVyLiIgw6lxdWlwZXMiOwoKCWlmKCRjb21wdGV1ciA+MCkKCXsKCQkkZGVzaWduYXRpb24uPSI8YnIgLz5JbmRpcXVleiBsZSB0eXBlIGRlIGNvbXDDqXRpdGlvbiBkZXMgw6lxdWlwZXMgcsOpY3Vww6lyw6llcy4iOwoJfQoJCiRzdGF0dXMgPSAnT2snOwokYWN0aW9uID0gJ3JldHJpZXZlX3RlYW1zJzsKLy9waW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsJGRlc2lnbmF0aW9uLCRhY3Rpb24pOwoJCgkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdlcXVpcGVzJyk7CgojCiMgRU9GCiMKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_users.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKaWYoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgVXNlJykpCnsKCSR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKfQokbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CiRjbHViX251bWJlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjbHViX251bWJlcicpOwovLwokbW9pc19jb3VyYW50ID0gZGF0ZSgnbicpOy8vTW9pcyBhdSBmb3JtYXQgMSwgMiwgMyBldGMuLi4uCiRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsvL2wnYW5uw6llIGF1IGZvcm1hdCAwMDAwCiRtb2lzX2ZyYW5jYWlzID0gYXJyYXkoJ0phbnZpZXInLCAnRsOpdnJpZXInLCdNYXJzJywgJ0F2cmlsJywgJ01haScsICdKdWluJywgJ0p1aWxsZXQnLCdBb8O7dCcsICdTZXB0ZW1icmUnLCAnT2N0b2JyZScsJ05vdmVtYnJlJywnRMOpY2VtYnJlJyk7CiRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKJG1vaXNfcmVlbCA9ICRtb2lzX2NvdXJhbnQgLSAxOy8vcG91ciBhZmZpY2hlciBsZSBtb2lzIGF1IGZvcm1hdCBmcmFuw6dhaXMKJG1vaXNfc20gPSAkbW9pc19mcmFuY2Fpc1siJG1vaXNfcmVlbCJdOwokbW9pc19zaXRfbWVucyA9ICRtb2lzX3NtLiIgIi4kYW5uZWVfY291cmFudGU7Ci8vCiRkZXNpZ25hdGlvbiA9ICcnOwoKaWYoIWlzc2V0KCRjbHViX251bWJlcikgfHwgJGNsdWJfbnVtYmVyID09JycpCnsKCSR0aGlzLT5TZXRNZXNzYWdlKCdMZSBudW3DqXJvIGRlIGNsdWIgblwnZXN0IHBhcyBkw6lmaW5pICEnKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2NvbmZpZ3VyYXRpb24nKTsKfQokc2VydmljZSA9IG5ldyBTZXJ2aWNlKCk7CiRyZXN1bHQgPSAkc2VydmljZS0+Z2V0Sm91ZXVyc0J5Q2x1YigiJGNsdWJfbnVtYmVyIik7CgovL3Zhcl9kdW1wKCRyZXN1bHQpOwppZiAoIWlzX2FycmF5KCRyZXN1bHQpKQp7CgkkdGhpcy0+U2V0TWVzc2FnZSgnU2VydmljZSBjb3Vww6knKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKfQovKiovCiRpID0wOwpmb3JlYWNoKCRyZXN1bHQgYXMgJGNsZSA9PiR0YWIpCnsKCSRsaWNlbmNlID0gJHRhYltsaWNlbmNlXTsKCSRub20gPSAkdGFiW25vbV07CgkkcHJlbm9tID0gJHRhYltwcmVub21dOwoJJGFjdGlmID0gMTsJCgkvLyRkZXNpZ25hdGlvbiA9ICdyw6ljdXDDqXJhdGlvbiBkZXMgam91ZXVycyc7CgkKCSRxdWVyeSA9ICJTRUxFQ1QgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIGxpY2VuY2UgPSA/IjsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlKSk7CgkKCWlmKCRkYnJlc3VsdCAgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID09IDApIAoJewoJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyAoaWQsIGxpY2VuY2UsIG5vbSwgcHJlbm9tLGFjdGlmKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/KSI7CgkJJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRsaWNlbmNlLCRub20sICRwcmVub20sJGFjdGlmKSk7CgkJJGkrKzsKCQkKCQlpZighJGRicmVzdWx0YXQpCgkJewoJCQkkZGVzaWduYXRpb24uPSAkZGItPkVycm9yTXNnKCk7CgkJfQoJCWVsc2UKCQl7CgkJCS8vb24gw6ljcml0IGRhbnMgbGUgam91cm5hbAoJCQkkc3RhdHVzID0gJ09rJzsKCQkJJG1lc3NhZ2UgPSAiSW5jbHVzaW9uIGRlICIuJG5vbS4iICIuJHByZW5vbTsKCQkJJGFjdGlvbiA9ICJyZXRyaWV2ZV91c2VycyI7CgkJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywkbWVzc2FnZSwkYWN0aW9uKTsKCQl9CgkJCgkJLy9vbiB2YSBjaGVyY2hlciBsYSBzaXR1YXRpb24gbWVuc3VlbGxlIHNpIGVsbGUgZXN0IGFjY2Vzc2libGUKCQkKCQkkc2l0X21lbnMgPSAnJzsJCgkJLy9vbiByw6lhbGlzZSBhdXNzaSB1bmUgaW5jbHVzaW9uIGRhbnMgbGEgdGFibGUgZGVzIHNpdHVhdGlvbnMgbWVuc3VlbGxlcwoJCS8vc2kgbCdhY2PDqHMgZXN0IGxpYnJlIGNhZCBhcHLDqHMgbGUgMTAgZGUgY2hxIG1vaXMKCQlpZihkYXRlKCduJyk+PTEwKQoJCXsKCQkJJHF1ZXJ5ID0gIlNFTEVDVCBsaWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgV0hFUkUgbGljZW5jZSA9ID8gQU5EIHNhaXNvbiA9ID8iOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSwkc2Fpc29uKSk7CgoJCQlpZigkZGJyZXN1bHQtPlJlY29yZENvdW50KCk9PTApCgkJCXsKCQkJCXBpbmdfYWRtaW5fb3BzOjpyZXRyaWV2ZV9zaXRfbWVucygkbGljZW5jZSk7CgkJCQkkc2l0X21lbnMgPSAkbW9pc19zaXRfbWVuczsKCgkJCX0KCgoJCX0KCQllbHNlCgkJewoJCQkkc2l0X21lbnMgPSAkbW9pc19zaXRfbWVuczsKCQl9CgkJCgkJLy9vbiBmYWl0IGwnYWpvdXQgZGFucyBsYSB0YWJsZSB0YWJsZV9yZWN1cAoJCS8vIG9uIHBhcnQgZHUgcHJpbmNpcGUgcXVlIHNpIGxlIGpvdWV1ciBuJ2V4aXN0ZSBwYXMgZGFucyBsYSB0YWJsZSBqb3VldXJzIGFsb3JzIGlsIG4nZXhpc3RlIHBhcyBub24gcGx1cyBhaWxsZXVycwoJCSRmZnR0ID0gMDsKCQkkc3BpZCA9IDA7CgkJJHF1ZXJ5MiA9IklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIChpZCxzYWlzb24sZGF0ZW1haixsaWNlbmNlLCBzaXRfbWVucywgZmZ0dCwgc3BpZCkgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPykiOwoJCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MiwgYXJyYXkoJHNhaXNvbiwgJG5vdywgJGxpY2VuY2UsICRzaXRfbWVucywgJGZmdHQsICRzcGlkKSk7CgkJCgl9CQkKCQoJCgkJCn0vLyBmaW4gZHUgZm9yZWFjaAoKCgkkZGVzaWduYXRpb24uPSAiSW5jbHVzaW9uIGRlICAiLiRpLiIgam91ZXVycyAodm9pciBqb3VybmFsKSI7CgkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdqb3VldXJzJyk7Ci8qKi8KIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.sit_mens.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwokbW9pc19jb3VyYW50ID0gZGF0ZSgnbicpOwokYW5uZWVfY2hvaXNpZSA9IGRhdGUoJ1knKTsKJG1vaXNfY2hvaXNpID0gJyc7CiRwaGFzZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwaGFzZV9lbl9jb3VycycpOwoKaWYoaXNzZXQoJHBhcmFtc1snbW9pcyddKSAmJiAkcGFyYW1zWydtb2lzJ10gIT0nJykKewoJJG1vaXNfY2hvaXNpID0gJHBhcmFtc1snbW9pcyddOwp9CmVsc2UKewoJJG1vaXNfY2hvaXNpID0gJG1vaXNfY291cmFudDsKfQoKaWYoJG1vaXNfY2hvaXNpID09MSkKewoJJG1vaXNfcHJlY2VkZW50ID0gMTI7CgkkYW5uZWVfY2hvaXNpZSA9ICRhbm5lZV9jaG9pc2llOwp9CmVsc2UKewoJJG1vaXNfcHJlY2VkZW50ID0gJG1vaXNfY2hvaXNpIC0xOwp9CmlmKCRtb2lzX2Nob2lzaT09MTIpCnsKCSRtb2lzX3N1aXZhbnQgPSAxOwoJJGFubmVlX2Nob2lzaWUgPSAkYW5uZWVfY2hvaXNpZSAtIDE7Cn0KZWxzZQp7CgkkbW9pc19zdWl2YW50ID0gJG1vaXNfY2hvaXNpICsgMTsKfQoKJHNtYXJ0eS0+YXNzaWduKCdtb2lzX3ByZWNlZGVudCcsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdzaXRfbWVuczInLCRyZXR1cm5pZCwgJzw8IFByw6ljw6lkZW50JyxhcnJheSgibW9pcyI9PiIkbW9pc19wcmVjZWRlbnQiKSkpOwovKgokc21hcnR5LT5hc3NpZ24oJ21vaXNfc3VpdmFudCcsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0YWRtaW4nLCRyZXR1cm5pZCwgJ1N1aXZhbnQgPj4nLCBhcnJheSgiYWN0aXZlX3RhYiI9PiJjYWxlbmRyaWVyIiwibW9pcyI9PiIkbW9pc19zdWl2YW50IikgKSk7CiovCiRzbWFydHktPmFzc2lnbignbW9pc19zdWl2YW50JywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ3NpdF9tZW5zMicsJHJldHVybmlkLCAnU3VpdmFudCA+PicsIGFycmF5KCJtb2lzIj0+IiRtb2lzX3N1aXZhbnQiKSApKTsKCgoKCiRqb3VyID0gZGF0ZSgnaicpOwovL0ZhaXJlIHVuZSBwcsOpZsOpcmVuY2UgcG91ciBuZSBwYXMgYWZmaWNoZXIgbGUgbW9pcyBwYXMgZW5jb3JlIGVuIGFjY8OocyBsaWJyZSA/CgokcGhhc2VfY291cmFudGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2UnKTsKCiRxdWVyeSA9ICJTRUxFQ1QgbGljZW5jZSxtb2lzLCBwb2ludHMsIGNsbmF0LCByYW5ncmVnLCByYW5nZGVwLCBwcm9nbW9pcywgQ09OQ0FUX1dTKCcgJywgbm9tLCBwcmVub20pIEFTIGpvdWV1ciBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyI7Ly8iIFdIRVJFIGFubmVlID0gPyBBTkQgbW9pcyA9ID8iOwppZihpc3NldCgkcGFyYW1zWydtb2lzJ10pICYmICRwYXJhbXNbJ21vaXMnXSAhPScnKQp7CgkkcXVlcnkuPSIgV0hFUkUgbW9pcyA9ID8iOwoJJHBhcm1zWydtb2lzJ10gPSAkbW9pc19jaG9pc2k7CgkKfQplbHNlCnsKCSRxdWVyeS49IiBXSEVSRSBtb2lzID0gPyI7CgkkcGFybXNbJ21vaXMnXSA9ICRtb2lzX2Nob2lzaTsKfQokcXVlcnkuPSIgQU5EIGFubmVlID0gPyI7CiRwYXJtc1snYW5uZWUnXSA9ICRhbm5lZV9jaG9pc2llOwovL2VjaG8gJHF1ZXJ5OwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkcGFybXMpOwoKJHJvd2NsYXNzPSAncm93MSc7CiRyb3dhcnJheT0gYXJyYXkgKCk7CgppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCnsKICAgIAl3aGlsZSAoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJewoJCgkJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7CgkJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCQkkb25lcm93LT5qb3VldXI9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwndXNlcl9yZXN1bHRzJywkcmV0dXJuaWQsICRyb3dbJ2pvdWV1ciddLCBhcnJheSgibGljZW5jZSI9PiRyb3dbJ2xpY2VuY2UnXSwibW9udGgiPT4kbW9pc19jaG9pc2ktMSkpOwoJCSRvbmVyb3ctPnBvaW50cyA9ICRyb3dbJ3BvaW50cyddOwoJCSRvbmVyb3ctPmNsbmF0PSAkcm93WydjbG5hdCddOwoJCSRvbmVyb3ctPnJhbmdyZWc9ICRyb3dbJ3JhbmdyZWcnXTsKCQkkb25lcm93LT5yYW5nZGVwPSAkcm93WydyYW5nZGVwJ107CgkJJG9uZXJvdy0+cHJvZ21vaXM9ICRyb3dbJ3Byb2dtb2lzJ107CgkJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCQkkcm93YXJyYXlbXT0gJG9uZXJvdzsKCX0KfQplbHNlCnsKCWVjaG8gIjxwPlBhcyBkZSByw6lzdWx0YXRzIGRpc3BvbmlibGVzLjwvcD4iOwp9CgkKCiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnc2l0bWVucy50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.sit_mens_provisoire.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKZ2xvYmFsICR0aGVtZU9iamVjdDsKCiRzYWlzb25fY291cmFudGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CiRwaGFzZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwaGFzZV9lbl9jb3VycycpOwoKJG1vaXNfY291cmFudCA9IGRhdGUoJ24nKTsKJGpvdXJfY291cmFudCA9IGRhdGUoJ2onKTsKCmlmKCRqb3VyX2NvdXJhbnQgPD0xMCkKewoJJG1vaXNfY291cmFudCA9ICRtb2lzX2NvdXJhbnQtMTsKfQoKLy8kbW9pc19jb3VyYW50ID0gMzsKCiRxdWVyeT0iU0VMRUNUIENPTkNBVF9XUygnICcsIGoubm9tLCBqLnByZW5vbSkgQVMgam91ZXVyLCBTVU0oc3AucG9pbnRyZXMpIEFTIFRvdGFsLCBzcC5saWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBBUyBzcCwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgQVMgaiBXSEVSRSBzcC5saWNlbmNlID0gai5saWNlbmNlIEFORCBzcC5zYWlzb24gPSA/IEFORCBNT05USChkYXRlX2V2ZW50KSA9ID8gIjsJCi8qCmlmKCRwaGFzZSA9PSAxKQp7CgkKCSRxdWVyeS49IiBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPiA4IEFORCBNT05USChkYXRlX2V2ZW50KTw9MTIiOwp9CmVsc2UKewoJCgkJJHF1ZXJ5Lj0iICBBTkQgTU9OVEgoZGF0ZV9ldmVudCk8PTciOwoJCn0KKi8KJHF1ZXJ5Lj0iIEdST1VQIEJZIGpvdWV1ciBPUkRFUiBCWSBUb3RhbCBERVNDIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHNhaXNvbl9jb3VyYW50ZSwkbW9pc19jb3VyYW50KSk7Ci8vZWNobyAkcXVlcnk7CiRyb3djbGFzcz0gJ3JvdzEnOwokcm93YXJyYXk9IGFycmF5ICgpOwoKaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk+MCkJCgl7CgkJd2hpbGUoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJJGxpY2VuY2UgPSAkcm93WydsaWNlbmNlJ107CgkJCSRqb3VldXIgPSAkcm93Wydqb3VldXInXTsKCQkJJHBvaW50cmVzID0gJHJvd1snVG90YWwnXTsJCgkJCSRxdWVyeTIgPSAiU0VMRUNUIHBvaW50cyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyBXSEVSRSBsaWNlbmNlID0gPyBBTkQgbW9pcyA9ID8iOwoJCQkkZGJyZXN1bHQyID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsYXJyYXkoJGxpY2VuY2UsJG1vaXNfY291cmFudCkpOwoJCQkkcm93MiA9ICRkYnJlc3VsdDItPkZldGNoUm93KCk7CgkJCQkJCQoJCQkkcG9pbnRzX3JlZiA9ICRyb3cyWydwb2ludHMnXTsKCQkJJHNvbW1lID0gJHBvaW50c19yZWYrJHBvaW50cmVzOwoJCQkKCQkJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7CgkJCSRvbmVyb3ctPnJvd2NsYXNzPSAkcm93Y2xhc3M7CgkJCSRvbmVyb3ctPmpvdWV1cj0gJHJvd1snam91ZXVyJ107CgkJCSRvbmVyb3ctPmNsdD0gJHBvaW50c19yZWY7CgkJCSRvbmVyb3ctPnNvbW1lPSAkc29tbWU7CgkJCSRvbmVyb3ctPmJpbGFuPSAkcG9pbnRyZXM7CgkJCSRvbmVyb3ctPmRldGFpbHM9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3VzZXJfcmVzdWx0c19wcm92JywgJHJldHVybmlkLCAnRMOpdGFpbHMnLGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddLCdtb250aCc9PiRtb2lzX2NvdXJhbnQpKTsKCQkJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCQkJJHJvd2FycmF5W109ICRvbmVyb3c7CgkJfQoJfQoJCiRzbWFydHktPmFzc2lnbigncmV0dXJubGluaycsIAoJCSR0aGlzLT5DcmVhdGVGcm9udGVuZExpbmsoJGlkLCRyZXR1cm5pZCwgJ3NpdF9tZW5zX3Byb3Zpc29pcmUnLCRhZGR0ZXh0PSdSZXRvdXInKSk7CiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnc2l0bWVuc19wcm92LnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.topFlop.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCAkZ0NtcykgKSBleGl0OwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgICAgICAgICAgIFRvcCBvdSBmbG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3ByZWZzLnBocCcpOwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywnUGFyYW1ldGVycycpOwokc2Fpc29uX2NvdXJhbnRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwovL29uIGNvbW1lbmNlIGRpcmVjdCBwYXIgbGEgcmVxdWV0ZQokZGIgPSYgJHRoaXMtPkdldERiKCk7CiRxdWVyeTEgPSAiU0VMRUNUIENPTkNBVF9XUygnICcsai5ub20sIGoucHJlbm9tKSBBUyBqb3VldXIsc3Aubm9tLHNwLnZpY3RvaXJlLCBzcC5wb2ludHJlcyxzcC5lY2FydCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgQVMgc3AsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogV0hFUkUgai5saWNlbmNlID0gc3AubGljZW5jZSBBTkQgc3Auc2Fpc29uID0gPyAiOy8vCgovL09uIHJlZ2FyZGUgc2kgb24gYSBtaXMgZGVzIHBhcmFtZXRyZXMKLy8gZMOpasOgIGxhIHNhaXNvbgokcGFybXNbJ3NhaXNvbiddID0gJHNhaXNvbl9jb3VyYW50ZTsKCi8vdG9wIG91IGZsb3AgPwovL29uIGVzc2FpZSBsZSB0b3AgZCdhYm9yZAokcXVlcnkxLj0gIiBBTkQgc3AudmljdG9pcmUgPSA/IjsKJHBhcm1zWyd2aWN0b2lyZSddID0gMTsKCglpZihpc3NldCgkcGFyYW1zWydsaWNlbmNlJ10pICYmICRwYXJhbXNbJ2xpY2VuY2UnXSAhPScnKQoJewoJCSRxdWVyeTEuPSIgQU5EIGoubGljZW5jZSA9ID8iOwoJCSRwYXJtc1snbGljZW5jZSddID0gJHBhcmFtc1snbGljZW5jZSddOwoJfQoJCiRxdWVyeTEuPSAiIE9SREVSIEJZIHNwLmVjYXJ0IEFTQyxzcC5wb2ludHJlcyI7CQoKCWlmKGlzc2V0KCRwYXJhbXNbJ2xpbWl0J10pICYmICRwYXJhbXNbJ2xpbWl0J10+MCkKCXsKCQkkcXVlcnkxLj0gIiBMSU1JVCAwLCA/IjsKCQkkcGFybXNbJ2xpbWl0J10gPSAkcGFyYW1zWydsaW1pdCddOwoJfQoJCgkKLy9lY2hvICRxdWVyeTE7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkxLCRwYXJtcyk7CiRyb3dhcnJheSA9IGFycmF5KCk7CiRyb3djbGFzcz0gJ3JvdzEnOwppZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApCnsKCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgl7CgkJJG9uZXJvdyA9IG5ldyBTdGRDbGFzcygpOwoJCSRvbmVyb3ctPnJvd2NsYXNzID0gJHJvd2NsYXNzOwoJCSRvbmVyb3ctPmpvdWV1ciA9ICRyb3dbJ2pvdWV1ciddOwoJCSRvbmVyb3ctPmFkdiA9ICRyb3dbJ25vbSddOwoJCSRvbmVyb3ctPmVjYXJ0ID0gJHJvd1snZWNhcnQnXTsKCQkkb25lcm93LT5wb2ludHJlcyA9ICRyb3dbJ3BvaW50cmVzJ107CgkJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCQkkcm93YXJyYXlbXT0gJG9uZXJvdzsKCX0KfQplbHNlCnsKCWVjaG8gJGRiLT5FcnJvck1zZygpOwp9CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3RvcGZsb3AudHBsJyk7CgojCiNFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.updateoptions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oICdQaW5nIFNldCBQcmVmcycgKSApCnsKICByZXR1cm47Cn0KLy8kbm9tX2VxdWlwZXMgPSBzdHJ0b3VwcGVyKCRwYXJhbXNbJ25vbV9lcXVpcGVzJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnY2x1Yl9udW1iZXInLCAkcGFyYW1zWydjbHViX251bWJlciddKTsKLy9wb3VyIGxhIHZlcnNpb24gMC4xIGJldGEyIG9uIHByb3Bvc2VyYSBkZSBkw6lkdWlyZSBsYSBsaWd1ZSBldCBsZSBkw6lwYXJ0ZW1lbnQgYXV4cXVlbHMgbGUgY2x1YiBhcHBhcnRpZW50Ci8vZXQgb24gbGVzIG1ldHRyYSBkYW5zIGxlcyBwcsOpZsOpcmVuY2VzIMOgIGNyw6llciDDqWdhbGVtZW50CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwaGFzZV9lbl9jb3VycycsICRwYXJhbXNbJ3BoYXNlX2VuX2NvdXJzJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJywgJHBhcmFtc1snc2Fpc29uX2VuX2NvdXJzJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbm9tX2VxdWlwZXMnLCBzdHJ0b3VwcGVyKCRwYXJhbXNbJ25vbV9lcXVpcGVzJ10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BvcHVsYXRlX2NhbGVuZGFyJywgJHBhcmFtc1sncG9wdWxhdGVfY2FsZW5kYXInXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhZmZpY2hlX2NsdWJfdW5pcXVlbWVudCcsICRwYXJhbXNbJ2FmZmljaGVfY2x1Yl91bmlxdWVtZW50J10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnc3BpZF9ub21icmVzJywgJHBhcmFtc1snc3BpZF9ub21icmVzJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZmZ0dF9ub21icmVzJywgJHBhcmFtc1snZmZ0dF9ub21icmVzJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnc3BpZF9pbnRlcnZhbCcsICRwYXJhbXNbJ3NwaWRfaW50ZXJ2YWwnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmZnR0X2ludGVydmFsJywgJHBhcmFtc1snZmZ0dF9pbnRlcnZhbCddKTsKCi8qCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmb3Jtc3VibWl0X2VtYWlsYWRkcmVzcycsICRwYXJhbXNbJ2Zvcm1zdWJtaXRfZW1haWxhZGRyZXNzJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZW1haWxfc3ViamVjdCcsJHBhcmFtc1snZW1haWxfc3ViamVjdCddKTsKJHRoaXMtPlNldFRlbXBsYXRlKCdlbWFpbF90ZW1wbGF0ZScsJHBhcmFtc1snZW1haWxfdGVtcGxhdGUnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhbGxvd2VkX3VwbG9hZF90eXBlcycsCgkJICAgICAkcGFyYW1zWydhbGxvd2VkX3VwbG9hZF90eXBlcyddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2hpZGVfc3VtbWFyeV9maWVsZCcsCgkJICAgICAoaXNzZXQoJHBhcmFtc1snaGlkZV9zdW1tYXJ5X2ZpZWxkJ10pPycxJzonMCcpKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2FsbG93X3N1bW1hcnlfd3lzaXd5ZycsCgkJICAgICAoaXNzZXQoJHBhcmFtc1snYWxsb3dfc3VtbWFyeV93eXNpd3lnJ10pPycxJzonMCcpKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2V4cGlyZWRfc2VhcmNoYWJsZScsCgkJICAgICAoaXNzZXQoJHBhcmFtc1snZXhwaXJlZF9zZWFyY2hhYmxlJ10pPycxJzonMCcpKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2V4cGlyeV9pbnRlcnZhbCcsICRwYXJhbXNbJ2V4cGlyeV9pbnRlcnZhbCddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Zlc3VibWl0X3N0YXR1cycsICRwYXJhbXNbJ2Zlc3VibWl0X3N0YXR1cyddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Zlc3VibWl0X3JlZGlyZWN0JywgdHJpbSgkcGFyYW1zWydmZXN1Ym1pdF9yZWRpcmVjdCddKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZXRhaWxfcmV0dXJuaWQnLChpbnQpJHBhcmFtc1snZGV0YWlsX3JldHVybmlkJ10pOwoqLwoKJHRoaXMtPlNldE1lc3NhZ2UoJ1ZvcyBvcHRpb25zIG9udCDDqXTDqSBtaXNlcyDDoCBqb3VycycpOwokdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdjb25maWd1cmF0aW9uJyk7Ci8qCiRwYXJhbXMgPSBhcnJheSgndGFiX21lc3NhZ2UnPT4gJ29wdGlvbnN1cGRhdGVkJywgJ2FjdGl2ZV90YWInID0+ICdvcHRpb25zJyk7CiR0aGlzLT5SZWRpcmVjdCgkaWQsICdvcHRpb25zJywgJycsICRwYXJhbXMpOwoqLwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.user_results.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwovL2dsb2JhbCAkdGhlbWVPYmplY3Q7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7CiRsaWNlbmNlID0gJyc7CiRkYXRlX2V2ZW50ID0gJyc7CiRhZmZpY2hlID0gMTsKCglpZighaXNzZXQoJHBhcmFtc1snbGljZW5jZSddKSAmJiAkcGFyYW1zWydsaWNlbmNlJ10gPT0nJyApCgl7CgkJZWNobyAibGEgbGljZW5jZSBlc3QgYWJzZW50ZSAhIjsKCQkKCX0KCWVsc2UKCXsKCQkkbGljZW5jZSA9ICRwYXJhbXNbJ2xpY2VuY2UnXTsKCQkKCQkvL3NpIHVuZSBkYXRlIGVzdCBwcsOpY2lzw6llIGFsb3JzIG9uIGFmZmljaGUgcXVlIGxlcyByw6lzdWx0YXRzIGRlIGNldHRlIGRhdGUKCQlpZihpc3NldCgkcGFyYW1zWydkYXRlX2RlYnV0J10pICYmICRwYXJhbXNbJ2RhdGVfZGVidXQnXSAhPScnKQoJCXsKCQkJLy9vbiB2YSBhbG9ycyBjYWNoZXIgY2VydGFpbnMgw6lsw6ltZW50cyBkZSBsYSBwYWdlCgkJCSRhZmZpY2hlID0gMDsKCQkJJGRhdGVfZGVidXQgPSAkcGFyYW1zWydkYXRlX2RlYnV0J107CgkJCSRkYXRlX2ZpbiA9ICRwYXJhbXNbJ2RhdGVfZmluJ107CgkJfQoJCQoJCWlmKGlzc2V0KCRwYXJhbXNbJ21vbnRoJ10pICYmICRwYXJhbXNbJ21vbnRoJ10gIT0nJykKCQl7CgkJCSRhZmZpY2hlID0gMDsKCQkJJG9rID0gMTsKCQkJJG1vbnRoID0gJHBhcmFtc1snbW9udGgnXTsKCQl9CgkJaWYoJGFmZmljaGUgPT0xKQoJCXsKCQkJJHNtYXJ0eS0+YXNzaWduKCdwaGFzZTInLAoJCQkJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwndXNlcl9yZXN1bHRzJywkcmV0dXJuaWQsICdQaGFzZSAyJywgYXJyYXkoInBoYXNlIj0+IjIiLCJsaWNlbmNlIj0+JGxpY2VuY2UpICkpOwoJCQkkc21hcnR5LT5hc3NpZ24oJ3BoYXNlMScsCgkJCQkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCd1c2VyX3Jlc3VsdHMnLCRyZXR1cm5pZCwgJ1BoYXNlIDEnLCBhcnJheSgicGhhc2UiPT4iMSIsImxpY2VuY2UiPT4kbGljZW5jZSkgKSk7CgkJfQoJCQoJCSRyb3dhcnJheTEgPSBhcnJheSgpOwoJCSRxdWVyeSA9ICJTRUxFQ1QgU1VNKHZkKSBBUyB2aWMsIGNvdW50KHZkKSBBUyB0b3RhbCwgU1VNKHBvaW50cmVzKSBBUyBwdHMgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyBXSEVSRSBzYWlzb24gPSA/IEFORCBsaWNlbmNlID0gPyI7CgkJLy9xcXMgcGFyYW3DqHRyZXMKCQkkcGFybXNbJ3NhaXNvbiddID0gJHNhaXNvbl9jb3VyYW50ZTsKCQkkcGFybXNbJ2xpY2VuY2UnXSA9ICRsaWNlbmNlOwoJCS8vb24gcHJlc2VudGUgcGhhc2UgcGFyIHBoYXNlID8KCQlpZigkYWZmaWNoZSA9PTEpCgkJewoJCQlpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKSA9PScxJyApCgkJCXsKCQkJCWlmKCRwYXJhbXNbJ3BoYXNlJ10gPT0yKQoJCQkJewoJCQkJCSRxdWVyeS49ICIgQU5EIE1PTlRIKGRhdGVfZXZlbnQpID49IDEgQU5EIE1PTlRIKGRhdGVfZXZlbnQpIDw9NyI7IAoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRxdWVyeS49ICIgQU5EIE1PTlRIKGRhdGVfZXZlbnQpID4gNyBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPD0xMiI7ICAvLy8vQkVUV0VFTiBOT1coKSBBTkQgKE5PVygpICsgSU5URVJWQUwgNyBEQVkpIjsKCQkJCX0KCQkJfQoJCQllbHNlaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwaGFzZV9lbl9jb3VycycpID09ICcyJykKCQkJewoJCQkJaWYoJHBhcmFtc1sncGhhc2UnXSA9PTEpCgkJCQl7CgkJCQkJJHF1ZXJ5Lj0gIiBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPiA3IEFORCBNT05USChkYXRlX2V2ZW50KSA8PTEyIjsgIC8vLy9CRVRXRUVOIE5PVygpIEFORCAoTk9XKCkgKyBJTlRFUlZBTCA3IERBWSkiOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRxdWVyeS49ICIgQU5EIE1PTlRIKGRhdGVfZXZlbnQpID49IDEgQU5EIE1PTlRIKGRhdGVfZXZlbnQpIDw9NyI7ICAvLy8vQkVUV0VFTiBOT1coKSBBTkQgKE5PVygpICsgSU5URVJWQUwgNyBEQVkpIjsJCgkJCQl9CgkJCX0KCQl9CgkJZWxzZWlmKCRvayA9PScxJykKCQl7CgkJCSRxdWVyeS49IiBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPSA/IjsKCQkJJHBhcm1zWydtb250aCddID0gJG1vbnRoOwoJCX0KCQkKCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgJHBhcm1zKTsKCgkJCWlmKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk+MCkKCQkJewoJCQkJd2hpbGUoJHJvdzEgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJCQl7CgkJCQkJJG9uZXJvdzE9IG5ldyBTdGRDbGFzcygpOwoJCQkJCSRvbmVyb3cxLT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJCQkJCSRvbmVyb3cxLT52aWM9ICRyb3cxWyd2aWMnXTsKCQkJCQkkb25lcm93MS0+dG90YWw9ICRyb3cxWyd0b3RhbCddOwoJCQkJCSRvbmVyb3cxLT5wdHM9ICRyb3cxWydwdHMnXTsKCQkJCQkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJCQkJCSRyb3dhcnJheTFbXT0gJG9uZXJvdzE7CgkJCQl9CgkJCX0KCQkkc21hcnR5LT5hc3NpZ24oJ2l0ZW1zMScsICRyb3dhcnJheTEpOwoKCgkJJHF1ZXJ5MSA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJywgbm9tLCBwcmVub20pIEFTIGpvdWV1ciBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIGxpY2VuY2UgPSA/IjsKCgoJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTEsIGFycmF5KCRsaWNlbmNlKSk7CgkJCgkJLy9mYXVkcmFpdCB0ZXN0ZXIgc2kgw6dhIG1hcmNoZSBvdSBub24KCQlpZighJGRicmVzdWx0YXQpCgkJewoJCQkkZGVzaWduYXRpb24gPSAkZGItPkVycm9yTXNnKCk7CgkJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCcnLCdLTycsJGRlc2lnbmF0aW9uLCcnKTsKCQl9CgkJCgkJJHJvdzEgPSAkZGJyZXN1bHRhdC0+RmV0Y2hSb3coKTsKCQkkam91ZXVyID0gJHJvdzFbJ2pvdWV1ciddOwoJCSRzbWFydHktPmFzc2lnbignam91ZXVyJywgJGpvdWV1cik7CgkJJHJlc3VsdD0gYXJyYXkgKCk7CgkJJHF1ZXJ5Mz0gIlNFTEVDVCBhZHZub21wcmUsIGFkdmNsYW9mLHBvaW50cmVzLCB2ZCxkYXRlX2V2ZW50IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXMgV0hFUkUgc2Fpc29uID0gPyBBTkQgbGljZW5jZSA9ID8iOy8vIiBPUkRFUiBCWSBkYXRlX2V2ZW50IEFTQyI7CgkJJHBhcm1zWydsaWNlbmNlJ10gPSAkbGljZW5jZTsKCQkkcGFybXNbJ3NhaXNvbiddID0gJHNhaXNvbl9jb3VyYW50ZTsKCQlpZigkYWZmaWNoZSA9PScxJykKCQl7CgkJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwaGFzZV9lbl9jb3VycycpID09JzEnICkKCQkJewoJCQkJaWYoJHBhcmFtc1sncGhhc2UnXSA9PTIpCgkJCQl7CgkJCQkJJHF1ZXJ5My49ICIgQU5EIE1PTlRIKGRhdGVfZXZlbnQpID49IDEgQU5EIE1PTlRIKGRhdGVfZXZlbnQpIDw9NyI7IAoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSRxdWVyeTMuPSAiIEFORCBNT05USChkYXRlX2V2ZW50KSA+IDcgQU5EIE1PTlRIKGRhdGVfZXZlbnQpIDw9MTIiOyAgLy8vL0JFVFdFRU4gTk9XKCkgQU5EIChOT1coKSArIElOVEVSVkFMIDcgREFZKSI7CgkJCQl9CgkJCX0KCQkJZWxzZWlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncGhhc2VfZW5fY291cnMnKSA9PSAnMicpCgkJCXsKCQkJCWlmKCRwYXJhbXNbJ3BoYXNlJ10gPT0xKQoJCQkJewoJCQkJCSRxdWVyeTMuPSAiIEFORCBNT05USChkYXRlX2V2ZW50KSA+IDcgQU5EIE1PTlRIKGRhdGVfZXZlbnQpIDw9MTIiOyAgLy8vL0JFVFdFRU4gTk9XKCkgQU5EIChOT1coKSArIElOVEVSVkFMIDcgREFZKSI7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJHF1ZXJ5My49ICIgQU5EIE1PTlRIKGRhdGVfZXZlbnQpID49IDEgQU5EIE1PTlRIKGRhdGVfZXZlbnQpIDw9NyI7ICAvLy8vQkVUV0VFTiBOT1coKSBBTkQgKE5PVygpICsgSU5URVJWQUwgNyBEQVkpIjsJCgkJCQl9CgkJCX0KCQkJJHF1ZXJ5My49ICIgT1JERVIgQlkgZGF0ZV9ldmVudCBERVNDIjsKCQl9CgkJZWxzZWlmKCRhZmZpY2hlID09JzAnKQoJCXsKCQkJaWYoJG9rPT0nMScpCgkJCXsKCQkJCSRxdWVyeTMuPSIgQU5EIE1PTlRIKGRhdGVfZXZlbnQpID0gPyI7CgkJCQkkcGFybXNbJ21vbnRoJ10gPSAkbW9udGg7CgkJCQkkcXVlcnkzLj0iIE9SREVSIEJZIGRhdGVfZXZlbnQgREVTQyI7CgkJCQkKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRxdWVyeTMuPSIgQU5EIGRhdGVfZXZlbnQgQkVUV0VFTiA/IEFORCA/IjsKCQkJCSRwYXJtc1snZGF0ZV9kZWJ1dCddID0gJGRhdGVfZGVidXQ7CgkJCQkkcGFybXNbJ2RhdGVfZmluJ10gPSAkZGF0ZV9maW47CgkJCQkkcXVlcnkzLj0iIE9SREVSIEJZIGRhdGVfZXZlbnQgREVTQyI7CgkJCQkKCQkJfQoJCX0KCQkKCQllbHNlCgkJewoJCQkkcXVlcnkzLj0iIE9SREVSIEJZIGRhdGVfZXZlbnQgREVTQyI7CgkJCQoJCX0KCQkKCQkkZGJyZXN1bHQzID0gJGRiLT5FeGVjdXRlKCRxdWVyeTMsICRwYXJtcyk7CgkJLyoKCQkJaWYoJGRicmVzdWx0MyAmJiAkZGJyZXN1bHQzLT5SZWNvcmRDb3VudCgpPjApCgkJCXsKCQkJCXdoaWxlKCRyb3cxID0gJGRicmVzdWx0My0+RmV0Y2hSb3coKSkKCQkJCXsKCQkJCQkkb25lcm93MT0gbmV3IFN0ZENsYXNzKCk7CgkJCQkJJG9uZXJvdzEtPnJvd2NsYXNzPSAkcm93Y2xhc3M7CgkJCQkJJG9uZXJvdzEtPnZpYz0gJHJvdzFbJ3ZpYyddOwoJCQkJCSRvbmVyb3cxLT50b3RhbD0gJHJvdzFbJ3RvdGFsJ107CgkJCQkJJG9uZXJvdzEtPnB0cz0gJHJvdzFbJ3B0cyddOwoJCQkKCQkJCQkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJCQkJCSRyb3dhcnJheTFbXT0gJG9uZXJvdzE7CgkJCQl9CgkJCX0vL2VjaG8gJHF1ZXJ5OwoJCSovCgkJLyoKCQlpZigkYWZmaWNoZSA9PTEpCgkJewoJCQkvL09uIG1ldCB1biBvcmRyZSBwYXJ0aWN1bGllciBvdSBwYXMgPwoJCQkkcXVlcnkzLj0iIE9SREVSIEJZIGRhdGVfZXZlbnQgREVTQyI7CgkJCSRkYnJlc3VsdDM9ICRkYi0+RXhlY3V0ZSgkcXVlcnkzLCBhcnJheSgkbGljZW5jZSwgJHNhaXNvbl9jb3VyYW50ZSkpOwoJCX0KCQllbHNlCgkJewoJCQkkZGJyZXN1bHQzPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MywgYXJyYXkoJGxpY2VuY2UsICRzYWlzb25fY291cmFudGUsJGRhdGVfZGVidXQsICRkYXRlX2ZpbikpOwoJCX0KCQkqLwoJCSRyb3dhcnJheT0gYXJyYXkgKCk7CgoJCWlmICgkZGJyZXN1bHQzICYmICRkYnJlc3VsdDMtPlJlY29yZENvdW50KCkgPiAwKQoJCSAgewoJCSAgICB3aGlsZSAoJHJvdz0gJGRicmVzdWx0My0+RmV0Y2hSb3coKSkKCQkgICAgICB7CgkKCQkJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7CgkJCSRvbmVyb3ctPnJvd2NsYXNzPSAkcm93Y2xhc3M7CgkJCSRvbmVyb3ctPmRhdGVfZXZlbnQ9ICRyb3dbJ2RhdGVfZXZlbnQnXTsKCQkJJG9uZXJvdy0+YWR2bm9tcHJlPSAkcm93WydhZHZub21wcmUnXTsKCQkJLy8kb25lcm93LT5ub209ICRyb3dbJ25vbSddOwoJCQkkb25lcm93LT5hZHZjbGFvZj0gJHJvd1snYWR2Y2xhb2YnXTsKCQkJJG9uZXJvdy0+dmQ9ICRyb3dbJ3ZkJ107CgkJCS8vJG9uZXJvdy0+Y29lZmY9ICRyb3dbJ2NvZWZmJ107CgkJCSRvbmVyb3ctPnBvaW50cmVzPSAkcm93Wydwb2ludHJlcyddOwoJCQkkcm93YXJyYXlbXT0gJG9uZXJvdzsKCQkgICAgICB9CgkJICB9CgkJJHNtYXJ0eS0+YXNzaWduKCdyZXN1bHRhdHMnLAoJCQkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCd1c2VyX3Jlc3VsdHMnLCRyZXR1cm5pZCwkY29udGVudHMgPSAnVG91cyBzZXMgcsOpc3VsdGF0cycsIGFycmF5KCdsaWNlbmNlJz0+JGxpY2VuY2UpKSk7Cgl9Ly9maW4gZHUgZWxzZSAoaWYgJGxpY2VuY2UgaXNzZXQpCgokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdvaycsJG9rKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdyZXRvdXInLAogCQkkdGhpcy0+Q3JlYXRlUmV0dXJuTGluaygkaWQsICRyZXR1cm5pZCwnUmV0b3VyJykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKJHNtYXJ0eS0+YXNzaWduKCdhZmZpY2hlJywkYWZmaWNoZSk7Ci8qCiRzbWFydHktPmFzc2lnbigncmVzdWx0YXRzJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ3VzZXJfcmVzdWx0cycsJHJldHVybmlkLCBhcnJheSgnbGljZW5jZSc9PiRsaWNlbmNlKSkpOwoqLwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3VzZXJfcmVzdWx0cy50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.user_results_prov.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwovL2dsb2JhbCAkdGhlbWVPYmplY3Q7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7CiRsaWNlbmNlID0gJyc7CiRkYXRlX2V2ZW50ID0gJyc7CiRhZmZpY2hlID0gMTsKCglpZighaXNzZXQoJHBhcmFtc1snbGljZW5jZSddKSAmJiAkcGFyYW1zWydsaWNlbmNlJ10gPT0nJyApCgl7CgkJZWNobyAibGEgbGljZW5jZSBlc3QgYWJzZW50ZSAhIjsKCQkKCX0KCWVsc2UKCXsKCQkkbGljZW5jZSA9ICRwYXJhbXNbJ2xpY2VuY2UnXTsKCQkKCQkvL3NpIHVuZSBkYXRlIGVzdCBwcsOpY2lzw6llIGFsb3JzIG9uIGFmZmljaGUgcXVlIGxlcyByw6lzdWx0YXRzIGRlIGNldHRlIGRhdGUKCQlpZihpc3NldCgkcGFyYW1zWydkYXRlX2RlYnV0J10pICYmICRwYXJhbXNbJ2RhdGVfZGVidXQnXSAhPScnKQoJCXsKCQkJLy9vbiB2YSBhbG9ycyBjYWNoZXIgY2VydGFpbnMgw6lsw6ltZW50cyBkZSBsYSBwYWdlCgkJCSRhZmZpY2hlID0gMDsKCQkJJGRhdGVfZGVidXQgPSAkcGFyYW1zWydkYXRlX2RlYnV0J107CgkJCSRkYXRlX2ZpbiA9ICRwYXJhbXNbJ2RhdGVfZmluJ107CgkJfQoJCQoJCWlmKGlzc2V0KCRwYXJhbXNbJ21vbnRoJ10pICYmICRwYXJhbXNbJ21vbnRoJ10gIT0nJykKCQl7CgkJCSRhZmZpY2hlID0gMDsKCQkJJG9rID0gMTsKCQkJJG1vbnRoID0gJHBhcmFtc1snbW9udGgnXTsKCQl9CgkJaWYoJGFmZmljaGUgPT0xKQoJCXsKCQkJJHNtYXJ0eS0+YXNzaWduKCdwaGFzZTInLAoJCQkJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwndXNlcl9yZXN1bHRzJywkcmV0dXJuaWQsICdQaGFzZSAyJywgYXJyYXkoInBoYXNlIj0+IjIiLCJsaWNlbmNlIj0+JGxpY2VuY2UpICkpOwoJCQkkc21hcnR5LT5hc3NpZ24oJ3BoYXNlMScsCgkJCQkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCd1c2VyX3Jlc3VsdHMnLCRyZXR1cm5pZCwgJ1BoYXNlIDEnLCBhcnJheSgicGhhc2UiPT4iMSIsImxpY2VuY2UiPT4kbGljZW5jZSkgKSk7CgkJfQoJCQoJCSRyb3dhcnJheTEgPSBhcnJheSgpOwoJCSRxdWVyeSA9ICJTRUxFQ1QgU1VNKHZpY3RvaXJlKSBBUyB2aWMsIGNvdW50KHZpY3RvaXJlKSBBUyB0b3RhbCwgU1VNKHBvaW50cmVzKSBBUyBwdHMgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIFdIRVJFIHNhaXNvbiA9ID8gQU5EIGxpY2VuY2UgPSA/IjsKCQkvL3FxcyBwYXJhbcOodHJlcwoJCSRwYXJtc1snc2Fpc29uJ10gPSAkc2Fpc29uX2NvdXJhbnRlOwoJCSRwYXJtc1snbGljZW5jZSddID0gJGxpY2VuY2U7CgkJLy9vbiBwcmVzZW50ZSBwaGFzZSBwYXIgcGhhc2UgPwoJCWlmKCRhZmZpY2hlID09MSkKCQl7CgkJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwaGFzZV9lbl9jb3VycycpID09JzEnICkKCQkJewoJCQkJaWYoJHBhcmFtc1sncGhhc2UnXSA9PTIpCgkJCQl7CgkJCQkJJHF1ZXJ5Lj0gIiBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPj0gMSBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPD03IjsgCgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJHF1ZXJ5Lj0gIiBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPiA3IEFORCBNT05USChkYXRlX2V2ZW50KSA8PTEyIjsgIC8vLy9CRVRXRUVOIE5PVygpIEFORCAoTk9XKCkgKyBJTlRFUlZBTCA3IERBWSkiOwoJCQkJfQoJCQl9CgkJCWVsc2VpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BoYXNlX2VuX2NvdXJzJykgPT0gJzInKQoJCQl7CgkJCQlpZigkcGFyYW1zWydwaGFzZSddID09MSkKCQkJCXsKCQkJCQkkcXVlcnkuPSAiIEFORCBNT05USChkYXRlX2V2ZW50KSA+IDcgQU5EIE1PTlRIKGRhdGVfZXZlbnQpIDw9MTIiOyAgLy8vL0JFVFdFRU4gTk9XKCkgQU5EIChOT1coKSArIElOVEVSVkFMIDcgREFZKSI7CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJHF1ZXJ5Lj0gIiBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPj0gMSBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPD03IjsgIC8vLy9CRVRXRUVOIE5PVygpIEFORCAoTk9XKCkgKyBJTlRFUlZBTCA3IERBWSkiOwkKCQkJCX0KCQkJfQoJCX0KCQllbHNlaWYoJG9rID09JzEnKQoJCXsKCQkJJHF1ZXJ5Lj0iIEFORCBNT05USChkYXRlX2V2ZW50KSA9ID8iOwoJCQkkcGFybXNbJ21vbnRoJ10gPSAkbW9udGg7CgkJfQoJCQoKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkcGFybXMpOwoKCQkJaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKT4wKQoJCQl7CgkJCQl3aGlsZSgkcm93MSA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCQkJCXsKCQkJCQkkb25lcm93MT0gbmV3IFN0ZENsYXNzKCk7CgkJCQkJJG9uZXJvdzEtPnJvd2NsYXNzPSAkcm93Y2xhc3M7CgkJCQkJJG9uZXJvdzEtPnZpYz0gJHJvdzFbJ3ZpYyddOwoJCQkJCSRvbmVyb3cxLT50b3RhbD0gJHJvdzFbJ3RvdGFsJ107CgkJCQkJJG9uZXJvdzEtPnB0cz0gJHJvdzFbJ3B0cyddOwoJCQkJCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzPSAicm93MiIgOiAkcm93Y2xhc3M9ICJyb3cxIik7CgkJCQkJJHJvd2FycmF5MVtdPSAkb25lcm93MTsKCQkJCX0KCQkJfQoJCSRzbWFydHktPmFzc2lnbignaXRlbXMxJywgJHJvd2FycmF5MSk7CgoKCQkkcXVlcnkxID0gIlNFTEVDVCBDT05DQVRfV1MoJyAnLCBub20sIHByZW5vbSkgQVMgam91ZXVyIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgV0hFUkUgbGljZW5jZSA9ID8iOwoKCgkJJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MSwgYXJyYXkoJGxpY2VuY2UpKTsKCQkKCQkvL2ZhdWRyYWl0IHRlc3RlciBzaSDDp2EgbWFyY2hlIG91IG5vbgoJCWlmKCEkZGJyZXN1bHRhdCkKCQl7CgkJCSRkZXNpZ25hdGlvbiA9ICRkYi0+RXJyb3JNc2coKTsKCQkJcGluZ19hZG1pbl9vcHM6OmVjcmlyZWpvdXJuYWwoJycsJ0tPJywkZGVzaWduYXRpb24sJycpOwoJCX0KCQkKCQkkcm93MSA9ICRkYnJlc3VsdGF0LT5GZXRjaFJvdygpOwoJCSRqb3VldXIgPSAkcm93MVsnam91ZXVyJ107CgkJJHNtYXJ0eS0+YXNzaWduKCdqb3VldXInLCAkam91ZXVyKTsKCQkkcmVzdWx0PSBhcnJheSAoKTsKCQkkcXVlcnkzPSAiU0VMRUNUIG5vbSwgY2xhc3NlbWVudCxwb2ludHJlcywgdmljdG9pcmUsZGF0ZV9ldmVudCxlcHJldXZlLG51bWpvdXJuIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBXSEVSRSBzYWlzb24gPSA/IEFORCBsaWNlbmNlID0gPyI7Ly8iIE9SREVSIEJZIGRhdGVfZXZlbnQgQVNDIjsKCQkkcGFybXNbJ2xpY2VuY2UnXSA9ICRsaWNlbmNlOwoJCSRwYXJtc1snc2Fpc29uJ10gPSAkc2Fpc29uX2NvdXJhbnRlOwoJCWlmKCRhZmZpY2hlID09JzEnKQoJCXsKCQkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BoYXNlX2VuX2NvdXJzJykgPT0nMScgKQoJCQl7CgkJCQlpZigkcGFyYW1zWydwaGFzZSddID09MikKCQkJCXsKCQkJCQkkcXVlcnkzLj0gIiBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPj0gMSBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPD03IjsgCgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJJHF1ZXJ5My49ICIgQU5EIE1PTlRIKGRhdGVfZXZlbnQpID4gNyBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPD0xMiI7ICAvLy8vQkVUV0VFTiBOT1coKSBBTkQgKE5PVygpICsgSU5URVJWQUwgNyBEQVkpIjsKCQkJCX0KCQkJfQoJCQllbHNlaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwaGFzZV9lbl9jb3VycycpID09ICcyJykKCQkJewoJCQkJaWYoJHBhcmFtc1sncGhhc2UnXSA9PTEpCgkJCQl7CgkJCQkJJHF1ZXJ5My49ICIgQU5EIE1PTlRIKGRhdGVfZXZlbnQpID4gNyBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPD0xMiI7ICAvLy8vQkVUV0VFTiBOT1coKSBBTkQgKE5PVygpICsgSU5URVJWQUwgNyBEQVkpIjsKCQkJCX0KCQkJCWVsc2UKCQkJCXsKCQkJCQkkcXVlcnkzLj0gIiBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPj0gMSBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPD03IjsgIC8vLy9CRVRXRUVOIE5PVygpIEFORCAoTk9XKCkgKyBJTlRFUlZBTCA3IERBWSkiOwkKCQkJCX0KCQkJfQoJCX0KCQllbHNlaWYoJGFmZmljaGUgPT0nMCcpCgkJewoJCQlpZigkb2s9PScxJykKCQkJewoJCQkJJHF1ZXJ5My49IiBBTkQgTU9OVEgoZGF0ZV9ldmVudCkgPSA/IjsKCQkJCSRwYXJtc1snbW9udGgnXSA9ICRtb250aDsKCQkJCSRxdWVyeTMuPSIgT1JERVIgQlkgZGF0ZV9ldmVudCBERVNDIjsKCQkJCQoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJHF1ZXJ5My49IiBBTkQgZGF0ZV9ldmVudCBCRVRXRUVOID8gQU5EID8iOwoJCQkJJHBhcm1zWydkYXRlX2RlYnV0J10gPSAkZGF0ZV9kZWJ1dDsKCQkJCSRwYXJtc1snZGF0ZV9maW4nXSA9ICRkYXRlX2ZpbjsKCQkJCSRxdWVyeTMuPSIgT1JERVIgQlkgZGF0ZV9ldmVudCBERVNDIjsKCQkJCQoJCQl9CgkJfQoJCQoJCWVsc2UKCQl7CgkJCSRxdWVyeTMuPSIgT1JERVIgQlkgZGF0ZV9ldmVudCBERVNDIjsKCQkJCgkJfQoJCQoJCSRkYnJlc3VsdDMgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MywgJHBhcm1zKTsKCQkvKgoJCQlpZigkZGJyZXN1bHQzICYmICRkYnJlc3VsdDMtPlJlY29yZENvdW50KCk+MCkKCQkJewoJCQkJd2hpbGUoJHJvdzEgPSAkZGJyZXN1bHQzLT5GZXRjaFJvdygpKQoJCQkJewoJCQkJCSRvbmVyb3cxPSBuZXcgU3RkQ2xhc3MoKTsKCQkJCQkkb25lcm93MS0+cm93Y2xhc3M9ICRyb3djbGFzczsKCQkJCQkkb25lcm93MS0+dmljPSAkcm93MVsndmljJ107CgkJCQkJJG9uZXJvdzEtPnRvdGFsPSAkcm93MVsndG90YWwnXTsKCQkJCQkkb25lcm93MS0+cHRzPSAkcm93MVsncHRzJ107CgkJCQoJCQkJCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzPSAicm93MiIgOiAkcm93Y2xhc3M9ICJyb3cxIik7CgkJCQkJJHJvd2FycmF5MVtdPSAkb25lcm93MTsKCQkJCX0KCQkJfS8vZWNobyAkcXVlcnk7CgkJKi8KCQkvKgoJCWlmKCRhZmZpY2hlID09MSkKCQl7CgkJCS8vT24gbWV0IHVuIG9yZHJlIHBhcnRpY3VsaWVyIG91IHBhcyA/CgkJCSRxdWVyeTMuPSIgT1JERVIgQlkgZGF0ZV9ldmVudCBERVNDIjsKCQkJJGRicmVzdWx0Mz0gJGRiLT5FeGVjdXRlKCRxdWVyeTMsIGFycmF5KCRsaWNlbmNlLCAkc2Fpc29uX2NvdXJhbnRlKSk7CgkJfQoJCWVsc2UKCQl7CgkJCSRkYnJlc3VsdDM9ICRkYi0+RXhlY3V0ZSgkcXVlcnkzLCBhcnJheSgkbGljZW5jZSwgJHNhaXNvbl9jb3VyYW50ZSwkZGF0ZV9kZWJ1dCwgJGRhdGVfZmluKSk7CgkJfQoJCSovCgkJJHJvd2FycmF5PSBhcnJheSAoKTsKCgkJaWYgKCRkYnJlc3VsdDMgJiYgJGRicmVzdWx0My0+UmVjb3JkQ291bnQoKSA+IDApCgkJICB7CgkJICAgIHdoaWxlICgkcm93PSAkZGJyZXN1bHQzLT5GZXRjaFJvdygpKQoJCSAgICAgIHsKCQoJCQkkb25lcm93PSBuZXcgU3RkQ2xhc3MoKTsKCQkJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCQkJJG9uZXJvdy0+ZGF0ZV9ldmVudD0gJHJvd1snZGF0ZV9ldmVudCddOwoJCQkkb25lcm93LT5lcHJldXZlPSAkcm93WydlcHJldXZlJ107CgkJCSRvbmVyb3ctPm5vbT0gJHJvd1snbm9tJ107CgkJCSRvbmVyb3ctPmNsYXNzZW1lbnQ9ICRyb3dbJ2NsYXNzZW1lbnQnXTsKCQkJJG9uZXJvdy0+dmljdG9pcmU9ICRyb3dbJ3ZpY3RvaXJlJ107CgkJCS8vJG9uZXJvdy0+Y29lZmY9ICRyb3dbJ2NvZWZmJ107CgkJCSRvbmVyb3ctPnBvaW50cmVzPSAkcm93Wydwb2ludHJlcyddOwoJCQkkcm93YXJyYXlbXT0gJG9uZXJvdzsKCQkgICAgICB9CgkJICB9CgkJJHNtYXJ0eS0+YXNzaWduKCdyZXN1bHRhdHMnLAoJCQkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCd1c2VyX3Jlc3VsdHMnLCRyZXR1cm5pZCwkY29udGVudHMgPSAnVG91cyBzZXMgcsOpc3VsdGF0cycsIGFycmF5KCdsaWNlbmNlJz0+JGxpY2VuY2UpKSk7Cgl9Ly9maW4gZHUgZWxzZSAoaWYgJGxpY2VuY2UgaXNzZXQpCgokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdvaycsJG9rKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdyZXRvdXInLAogCQkkdGhpcy0+Q3JlYXRlUmV0dXJuTGluaygkaWQsICRyZXR1cm5pZCwnUmV0b3VyJykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKJHNtYXJ0eS0+YXNzaWduKCdhZmZpY2hlJywkYWZmaWNoZSk7Ci8qCiRzbWFydHktPmFzc2lnbigncmVzdWx0YXRzJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ3VzZXJfcmVzdWx0cycsJHJldHVybmlkLCBhcnJheSgnbGljZW5jZSc9PiRsaWNlbmNlKSkpOwoqLwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3VzZXJfcmVzdWx0c19wcm92LnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.verif_spid_fftt.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwokZGVzaWduYXRpb24gPSAnJzsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKLy8kcXVlcnkgPSAiU0VMIjsKJHF1ZXJ5ID0gIlNFTEVDVCBESVNUSU5DVCBzcC5pZCBBUyByZWNvcmRfaWQscC5kYXRlX2V2ZW50IEFTIGRhdGVfZmZ0dCxzcC5kYXRlX2V2ZW50IEFTIGRhdGVfc3BpZCxzcC5saWNlbmNlIGFzIGxpY2VuY2Vfc3BpZCwgcC5saWNlbmNlIGFzIGxpY2VuY2VfZmZ0dCxzcC5ub20gYXMgbm9tX3NwaWQsIHAuYWR2bm9tcHJlIEFTIG5vbV9mZnR0LCBzcC5udW1qb3VybiBBUyBudW1qb3Vybl9zcGlkLCBwLm51bWpvdXJuIEFTIG51bWpvdXJuX2ZmdHQsIHNwLnZpY3RvaXJlIEFTIHZpY3RvaXJlX3NwaWQsIHAudmQgQVMgdmljdG9pcmVfZmZ0dCwgc3AuY29lZmYgQVMgY29lZmZfc3BpZCwgcC5jb2VmY2hhbXAgQVMgY29lZmZfZmZ0dCwgc3AucG9pbnRyZXMgQVMgcG9pbnRzX3NwaWQsIHAucG9pbnRyZXMgQVMgcG9pbnRzX2ZmdHQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIEFTIHNwLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyBBUyBwIFdIRVJFIHNwLmxpY2VuY2UgPSBwLmxpY2VuY2UgQU5EIHNwLm5vbSA9IHAuYWR2bm9tcHJlIEFORCBzcC5kYXRlX2V2ZW50ID0gcC5kYXRlX2V2ZW50IEFORCBzcC52aWN0b2lyZSA9IHAudmQgQU5EIHNwLnNhaXNvbiA9ID8gQU5EICgoc3AucG9pbnRyZXMgIT1wLnBvaW50cmVzKSAgT1IgKHNwLmNvZWZmICE9IHAuY29lZmNoYW1wKSkgT1JERVIgQlkgcC5kYXRlX2V2ZW50IEFTQyI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRzYWlzb25fY291cmFudGUpKTsKJHJvd2FycmF5ID0gYXJyYXkoKTsKCWlmKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk+MCkKCXsKCQl3aGlsZSgkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJJG9uZXJvdyA9IG5ldyBTdGRDbGFzcygpOwoJCQkkb25lcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsKCQkJJG9uZXJvdy0+cmVjb3JkX2lkID0gJHJvd1sncmVjb3JkX2lkJ107CgkJCSRvbmVyb3ctPmRhdGVfc3BpZCA9ICRyb3dbJ2RhdGVfc3BpZCddOwoJCQkkb25lcm93LT5kYXRlX2ZmdHQgPSAkcm93WydkYXRlX2ZmdHQnXTsKCQkJJG9uZXJvdy0+bGljZW5jZV9zcGlkID0gJHJvd1snbGljZW5jZV9zcGlkJ107CgkJCSRvbmVyb3ctPmxpY2VuY2VfZmZ0dCA9ICRyb3dbJ2xpY2VuY2VfZmZ0dCddOwoJCQkkb25lcm93LT5ub21fc3BpZCA9ICRyb3dbJ25vbV9zcGlkJ107CgkJCSRvbmVyb3ctPm5vbV9mZnR0ID0gJHJvd1snbm9tX2ZmdHQnXTsKCQkJJG9uZXJvdy0+bnVtam91cm5fc3BpZCA9ICRyb3dbJ251bWpvdXJuX3NwaWQnXTsKCQkJJG9uZXJvdy0+bnVtam91cm5fZmZ0dCA9ICRyb3dbJ251bWpvdXJuX2ZmdHQnXTsKCQkJJG9uZXJvdy0+dmljdG9pcmVfc3BpZCA9ICRyb3dbJ3ZpY3RvaXJlX3NwaWQnXTsKCQkJJG9uZXJvdy0+dmljdG9pcmVfZmZ0dCA9ICRyb3dbJ3ZpY3RvaXJlX2ZmdHQnXTsKCQkJJG9uZXJvdy0+Y29lZmZfc3BpZCA9ICRyb3dbJ2NvZWZmX3NwaWQnXTsKCQkJJG9uZXJvdy0+Y29lZmZfZmZ0dCA9ICRyb3dbJ2NvZWZmX2ZmdHQnXTsKCQkJJG9uZXJvdy0+cG9pbnRzX3NwaWQgPSAkcm93Wydwb2ludHNfc3BpZCddOwoJCQkkb25lcm93LT5wb2ludHNfZmZ0dCA9ICRyb3dbJ3BvaW50c19mZnR0J107CgkJCS8vJG9uZXJvdy0+ZXJhc2VsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZXJhc2Vfc3BpZCcsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoInJlY29yZF9pZCI9PiRyb3dbJ2lkJ10sICJjb2VmY2hhbXAiPT4kcm93Wydjb2VmZl9mZnR0J10sIm51bWpvdXJuIj0+JHJvd1snbnVtam91cm5fZmZ0dCddLCAidmQiPT4kcm93Wyd2aWN0b2lyZV9mZnR0J10sICJwb2ludHJlcyI9PiRyb3dbJ3BvaW50c19mZnR0J10pKTsKCQkJKCRyb3djbGFzcyA9PSJyb3cxIiA/JHJvd2NsYXNzPSJyb3cyIjokcm93Y2xhc3M9InJvdzEiKTsKCQkJJHJvd2FycmF5W10gPSAkb25lcm93OwoJCQkKCQl9Cgl9CgllbHNlCgl7CgkJJGRlc2lnbmF0aW9uLj0gInBhcyBkJ2VycmV1cnMgw6AgY29ycmlnZXIiOwoJCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzcGlkJyk7Cgl9CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCRyb3dhcnJheSk7CiRzbWFydHktPmFzc2lnbignaXRlbXNjb3VudCcsY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZHRleHQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdyZXR1cm5saW5rJywKCQkkdGhpcy0+Q3JlYXRlUmV0dXJuTGluaygkaWQsJHJldHVybmlkLCRjb250ZW50cyA9ICdSZXRvdXInKSk7CiRzbWFydHktPmFzc2lnbignQ29ycmlnZXInLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnY3Jvbl9zcGlkX2ZmdHQnICwgJHJldHVybmlkLCRjb250ZW50cyA9ICdDb3JyaWdlciB0b3V0JykpOwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUgKCd2ZXJpZi50cGwnKTsKIwojRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.view_contacts.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKICB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCXJldHVybjsKICAgCiAgfQoKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ2pvdWV1cnMnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwovLyRyZWNvcmRfaWQgPSAkcGFyYW1zWydyZWNvcmRfaWQnXTsKaWYoIGlzc2V0KCAkcGFyYW1zWydtZXNzYWdlJ10gKSApCiAgewogICAgJHNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJyxodG1sX2VudGl0eV9kZWNvZGUoJHBhcmFtc1snbWVzc2FnZSddKSk7CiAgfQppZiggaXNzZXQoICRwYXJhbXNbJ2Vycm9yJ10gKSApCiAgewogICAgJHNtYXJ0eS0+YXNzaWduKCdlcnJvcicsaHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbJ2Vycm9yJ10pKTsKICB9CgoKCiRsaWNlbmNlID0gJyc7CmlmKCAhaXNzZXQoICRwYXJhbXNbJ2xpY2VuY2UnXSApIHx8ICRwYXJhbXNbJ2xpY2VuY2UnXSA9PSAnJykgICAgCnsKCQoJJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwoJICAgICRwYXJhbXNbJ2Vycm9yJ10gPSAxOwoJICAgICR0aGlzLT5SZWRpcmVjdCggJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zICk7CgkgICAgcmV0dXJuOwp9CgogICAgLy8gZmluZCB0aGUgdXNlcgogICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbW0gV0hFUkUgbGljZW5jZSA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoICRwYXJhbXNbJ2xpY2VuY2UnXSApKTsKICAgICRyb3djbGFzcz0gJ3JvdzEnOwokcm93YXJyYXk9IGFycmF5ICgpOwppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewoJJGFjdGlmID0gJHJvd1snYWN0aWYnXTsKCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCSRvbmVyb3ctPmlkPSAkcm93WydpZCddOwoJJG9uZXJvdy0+dHlwZV9jb250YWN0PSAkcm93Wyd0eXBlX2NvbnRhY3QnXTsKCSRvbmVyb3ctPmNvbnRhY3Q9ICRyb3dbJ2NvbnRhY3QnXTsKCSRvbmVyb3ctPmRlc2NyaXB0aW9uPSAkcm93WydkZXNjcmlwdGlvbiddOwoJJG9uZXJvdy0+Y3JlYXRlX2NvbnRhY3Q9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZWRpdF9jb250YWN0JywgJHJldHVybmlkLCR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnY3JlYXRlX2NvbnRhY3QnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdpZF9yZWNvcmQnPT4kcm93WydpZCddKSk7Cgkkb25lcm93LT5kb2VkaXQ9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRfam91ZXVyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgJHRoaXMtPkxhbmcoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgkkb25lcm93LT5kZWxldGVsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWxldGVfY29udGFjdCcsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSwgJHRoaXMtPkxhbmcoJ2RlbGV0ZV9yZXN1bHRfY29uZmlybScpKTsKCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzPSAicm93MiIgOiAkcm93Y2xhc3M9ICJyb3cxIik7Cgkkcm93YXJyYXlbXT0gJG9uZXJvdzsKICAgICAgfQogIH0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Jlc3VsdHNmb3VuZHRleHQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwokc21hcnR5LT5hc3NpZ24oJ2NyZWF0ZV9uZXdfY29udGFjdCcsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdjcmVhdGVfY29udGFjdCcsJHJldHVybmlkLCdDcsOpZXIgdW4gbm91dmVhdSBjb250YWN0JywgYXJyYXkoJ2xpY2VuY2UnPT4kcGFyYW1zWydsaWNlbmNlJ10pKSk7CiRzbWFydHktPmFzc2lnbignY3JlYXRlbGluaycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2NyZWF0ZV9jb250YWN0JywgJHJldHVybmlkLAoJCQkJICAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+TGFuZygnY3JlYXRlX2NvbnRhY3QnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpKS4KCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdjcmVhdGVfY29udGFjdCcsICRyZXR1cm5pZCwgCgkJCQkgICR0aGlzLT5MYW5nKCdjcmVhdGVfY29udGFjdCcpLCAKCQkJCSAgYXJyYXkoKSkpOwoKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnY29udGFjdHMudHBsJyk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/bootstrap-table.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dGFibGUgewogIGJvcmRlci1zcGFjaW5nOiAwOwogIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7Cn0KdGQsCnRoIHsKICBwYWRkaW5nOiAwOwp9CnRoZWFkIHsKICAgZGlzcGxheTogdGFibGUtaGVhZGVyLWdyb3VwOwogfQogdHIsCiBpbWcgewogICBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7CiB9Ci50YWJsZSB7CiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlICFpbXBvcnRhbnQ7CiAgfQogIC50YWJsZSB0ZCwKICAudGFibGUgdGggewogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZiAhaW1wb3J0YW50OwogIH0KICAudGFibGUtYm9yZGVyZWQgdGgsCiAgLnRhYmxlLWJvcmRlcmVkIHRkIHsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQgIWltcG9ydGFudDsKICB9CnRhYmxlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsKfQpjYXB0aW9uIHsKICBwYWRkaW5nLXRvcDogOHB4OwogIHBhZGRpbmctYm90dG9tOiA4cHg7CiAgY29sb3I6ICM3Nzc7CiAgdGV4dC1hbGlnbjogbGVmdDsKfQp0aCB7CiAgdGV4dC1hbGlnbjogbGVmdDsKfQoudGFibGUgewogIHdpZHRoOiAxMDAlOwogIG1heC13aWR0aDogMTAwJTsKICBtYXJnaW4tYm90dG9tOiAyMHB4Owp9Ci50YWJsZSA+IHRoZWFkID4gdHIgPiB0aCwKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRoLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGgsCi50YWJsZSA+IHRoZWFkID4gdHIgPiB0ZCwKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRkLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGQgewogIHBhZGRpbmc6IDhweDsKICBsaW5lLWhlaWdodDogMS40Mjg1NzE0MzsKICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwogIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGRkOwp9Ci50YWJsZSA+IHRoZWFkID4gdHIgPiB0aCB7CiAgdmVydGljYWwtYWxpZ246IGJvdHRvbTsKICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2RkZDsKfQoudGFibGUgPiBjYXB0aW9uICsgdGhlYWQgPiB0cjpmaXJzdC1jaGlsZCA+IHRoLAoudGFibGUgPiBjb2xncm91cCArIHRoZWFkID4gdHI6Zmlyc3QtY2hpbGQgPiB0aCwKLnRhYmxlID4gdGhlYWQ6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCA+IHRoLAoudGFibGUgPiBjYXB0aW9uICsgdGhlYWQgPiB0cjpmaXJzdC1jaGlsZCA+IHRkLAoudGFibGUgPiBjb2xncm91cCArIHRoZWFkID4gdHI6Zmlyc3QtY2hpbGQgPiB0ZCwKLnRhYmxlID4gdGhlYWQ6Zmlyc3QtY2hpbGQgPiB0cjpmaXJzdC1jaGlsZCA+IHRkIHsKICBib3JkZXItdG9wOiAwOwp9Ci50YWJsZSA+IHRib2R5ICsgdGJvZHkgewogIGJvcmRlci10b3A6IDJweCBzb2xpZCAjZGRkOwp9Ci50YWJsZSAudGFibGUgewogIGJhY2tncm91bmQtY29sb3I6ICNmZmY7Cn0KLnRhYmxlLWNvbmRlbnNlZCA+IHRoZWFkID4gdHIgPiB0aCwKLnRhYmxlLWNvbmRlbnNlZCA+IHRib2R5ID4gdHIgPiB0aCwKLnRhYmxlLWNvbmRlbnNlZCA+IHRmb290ID4gdHIgPiB0aCwKLnRhYmxlLWNvbmRlbnNlZCA+IHRoZWFkID4gdHIgPiB0ZCwKLnRhYmxlLWNvbmRlbnNlZCA+IHRib2R5ID4gdHIgPiB0ZCwKLnRhYmxlLWNvbmRlbnNlZCA+IHRmb290ID4gdHIgPiB0ZCB7CiAgcGFkZGluZzogNXB4Owp9Ci50YWJsZS1ib3JkZXJlZCB7CiAgYm9yZGVyOiAxcHggc29saWQgI2RkZDsKfQoudGFibGUtYm9yZGVyZWQgPiB0aGVhZCA+IHRyID4gdGgsCi50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0aCwKLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0ciA+IHRoLAoudGFibGUtYm9yZGVyZWQgPiB0aGVhZCA+IHRyID4gdGQsCi50YWJsZS1ib3JkZXJlZCA+IHRib2R5ID4gdHIgPiB0ZCwKLnRhYmxlLWJvcmRlcmVkID4gdGZvb3QgPiB0ciA+IHRkIHsKICBib3JkZXI6IDFweCBzb2xpZCAjZGRkOwp9Ci50YWJsZS1ib3JkZXJlZCA+IHRoZWFkID4gdHIgPiB0aCwKLnRhYmxlLWJvcmRlcmVkID4gdGhlYWQgPiB0ciA+IHRkIHsKICBib3JkZXItYm90dG9tLXdpZHRoOiAycHg7Cn0KLnRhYmxlLXN0cmlwZWQgPiB0Ym9keSA+IHRyOm50aC1jaGlsZChvZGQpIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjlmOWY5Owp9Ci50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHI6aG92ZXIgewogIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7Cn0KdGFibGUgY29sW2NsYXNzKj0iY29sLSJdIHsKICBwb3NpdGlvbjogc3RhdGljOwogIGRpc3BsYXk6IHRhYmxlLWNvbHVtbjsKICBmbG9hdDogbm9uZTsKfQp0YWJsZSB0ZFtjbGFzcyo9ImNvbC0iXSwKdGFibGUgdGhbY2xhc3MqPSJjb2wtIl0gewogIHBvc2l0aW9uOiBzdGF0aWM7CiAgZGlzcGxheTogdGFibGUtY2VsbDsKICBmbG9hdDogbm9uZTsKfQoudGFibGUgPiB0aGVhZCA+IHRyID4gdGQuYWN0aXZlLAoudGFibGUgPiB0Ym9keSA+IHRyID4gdGQuYWN0aXZlLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGQuYWN0aXZlLAoudGFibGUgPiB0aGVhZCA+IHRyID4gdGguYWN0aXZlLAoudGFibGUgPiB0Ym9keSA+IHRyID4gdGguYWN0aXZlLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGguYWN0aXZlLAoudGFibGUgPiB0aGVhZCA+IHRyLmFjdGl2ZSA+IHRkLAoudGFibGUgPiB0Ym9keSA+IHRyLmFjdGl2ZSA+IHRkLAoudGFibGUgPiB0Zm9vdCA+IHRyLmFjdGl2ZSA+IHRkLAoudGFibGUgPiB0aGVhZCA+IHRyLmFjdGl2ZSA+IHRoLAoudGFibGUgPiB0Ym9keSA+IHRyLmFjdGl2ZSA+IHRoLAoudGFibGUgPiB0Zm9vdCA+IHRyLmFjdGl2ZSA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1Owp9Ci50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIgPiB0ZC5hY3RpdmU6aG92ZXIsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIgPiB0aC5hY3RpdmU6aG92ZXIsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIuYWN0aXZlOmhvdmVyID4gdGQsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHI6aG92ZXIgPiAuYWN0aXZlLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyLmFjdGl2ZTpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZThlOGU4Owp9Ci50YWJsZSA+IHRoZWFkID4gdHIgPiB0ZC5zdWNjZXNzLAoudGFibGUgPiB0Ym9keSA+IHRyID4gdGQuc3VjY2VzcywKLnRhYmxlID4gdGZvb3QgPiB0ciA+IHRkLnN1Y2Nlc3MsCi50YWJsZSA+IHRoZWFkID4gdHIgPiB0aC5zdWNjZXNzLAoudGFibGUgPiB0Ym9keSA+IHRyID4gdGguc3VjY2VzcywKLnRhYmxlID4gdGZvb3QgPiB0ciA+IHRoLnN1Y2Nlc3MsCi50YWJsZSA+IHRoZWFkID4gdHIuc3VjY2VzcyA+IHRkLAoudGFibGUgPiB0Ym9keSA+IHRyLnN1Y2Nlc3MgPiB0ZCwKLnRhYmxlID4gdGZvb3QgPiB0ci5zdWNjZXNzID4gdGQsCi50YWJsZSA+IHRoZWFkID4gdHIuc3VjY2VzcyA+IHRoLAoudGFibGUgPiB0Ym9keSA+IHRyLnN1Y2Nlc3MgPiB0aCwKLnRhYmxlID4gdGZvb3QgPiB0ci5zdWNjZXNzID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNkZmYwZDg7Cn0KLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ciA+IHRkLnN1Y2Nlc3M6aG92ZXIsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIgPiB0aC5zdWNjZXNzOmhvdmVyLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyLnN1Y2Nlc3M6aG92ZXIgPiB0ZCwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0cjpob3ZlciA+IC5zdWNjZXNzLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyLnN1Y2Nlc3M6aG92ZXIgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2QwZTljNjsKfQoudGFibGUgPiB0aGVhZCA+IHRyID4gdGQuaW5mbywKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRkLmluZm8sCi50YWJsZSA+IHRmb290ID4gdHIgPiB0ZC5pbmZvLAoudGFibGUgPiB0aGVhZCA+IHRyID4gdGguaW5mbywKLnRhYmxlID4gdGJvZHkgPiB0ciA+IHRoLmluZm8sCi50YWJsZSA+IHRmb290ID4gdHIgPiB0aC5pbmZvLAoudGFibGUgPiB0aGVhZCA+IHRyLmluZm8gPiB0ZCwKLnRhYmxlID4gdGJvZHkgPiB0ci5pbmZvID4gdGQsCi50YWJsZSA+IHRmb290ID4gdHIuaW5mbyA+IHRkLAoudGFibGUgPiB0aGVhZCA+IHRyLmluZm8gPiB0aCwKLnRhYmxlID4gdGJvZHkgPiB0ci5pbmZvID4gdGgsCi50YWJsZSA+IHRmb290ID4gdHIuaW5mbyA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZDllZGY3Owp9Ci50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIgPiB0ZC5pbmZvOmhvdmVyLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyID4gdGguaW5mbzpob3ZlciwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ci5pbmZvOmhvdmVyID4gdGQsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHI6aG92ZXIgPiAuaW5mbywKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ci5pbmZvOmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNjNGUzZjM7Cn0KLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRkLndhcm5pbmcsCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0ZC53YXJuaW5nLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGQud2FybmluZywKLnRhYmxlID4gdGhlYWQgPiB0ciA+IHRoLndhcm5pbmcsCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0aC53YXJuaW5nLAoudGFibGUgPiB0Zm9vdCA+IHRyID4gdGgud2FybmluZywKLnRhYmxlID4gdGhlYWQgPiB0ci53YXJuaW5nID4gdGQsCi50YWJsZSA+IHRib2R5ID4gdHIud2FybmluZyA+IHRkLAoudGFibGUgPiB0Zm9vdCA+IHRyLndhcm5pbmcgPiB0ZCwKLnRhYmxlID4gdGhlYWQgPiB0ci53YXJuaW5nID4gdGgsCi50YWJsZSA+IHRib2R5ID4gdHIud2FybmluZyA+IHRoLAoudGFibGUgPiB0Zm9vdCA+IHRyLndhcm5pbmcgPiB0aCB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2ZjZjhlMzsKfQoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyID4gdGQud2FybmluZzpob3ZlciwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ciA+IHRoLndhcm5pbmc6aG92ZXIsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIud2FybmluZzpob3ZlciA+IHRkLAoudGFibGUtaG92ZXIgPiB0Ym9keSA+IHRyOmhvdmVyID4gLndhcm5pbmcsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIud2FybmluZzpob3ZlciA+IHRoIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmFmMmNjOwp9Ci50YWJsZSA+IHRoZWFkID4gdHIgPiB0ZC5kYW5nZXIsCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0ZC5kYW5nZXIsCi50YWJsZSA+IHRmb290ID4gdHIgPiB0ZC5kYW5nZXIsCi50YWJsZSA+IHRoZWFkID4gdHIgPiB0aC5kYW5nZXIsCi50YWJsZSA+IHRib2R5ID4gdHIgPiB0aC5kYW5nZXIsCi50YWJsZSA+IHRmb290ID4gdHIgPiB0aC5kYW5nZXIsCi50YWJsZSA+IHRoZWFkID4gdHIuZGFuZ2VyID4gdGQsCi50YWJsZSA+IHRib2R5ID4gdHIuZGFuZ2VyID4gdGQsCi50YWJsZSA+IHRmb290ID4gdHIuZGFuZ2VyID4gdGQsCi50YWJsZSA+IHRoZWFkID4gdHIuZGFuZ2VyID4gdGgsCi50YWJsZSA+IHRib2R5ID4gdHIuZGFuZ2VyID4gdGgsCi50YWJsZSA+IHRmb290ID4gdHIuZGFuZ2VyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNmMmRlZGU7Cn0KLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ciA+IHRkLmRhbmdlcjpob3ZlciwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ciA+IHRoLmRhbmdlcjpob3ZlciwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0ci5kYW5nZXI6aG92ZXIgPiB0ZCwKLnRhYmxlLWhvdmVyID4gdGJvZHkgPiB0cjpob3ZlciA+IC5kYW5nZXIsCi50YWJsZS1ob3ZlciA+IHRib2R5ID4gdHIuZGFuZ2VyOmhvdmVyID4gdGggewogIGJhY2tncm91bmQtY29sb3I6ICNlYmNjY2M7Cn0KLnRhYmxlLXJlc3BvbnNpdmUgewogIG1pbi1oZWlnaHQ6IC4wMSU7CiAgb3ZlcmZsb3cteDogYXV0bzsKfQ==]]></data>
	</file>
	<file>
	  <filename>/cron/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/cron/action.cron_retrieve_all_parties.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy9pZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5jYWxjdWxzLnBocCcpOwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3ByZWZzLnBocCcpOwokc2Fpc29uID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwokbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CiRxdWVyeSA9ICJTRUxFQ1QgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIFdIRVJFIG1hal9mZnR0IDwgTk9XKCktSU5URVJWQUwgMyBEQVkgQU5EIHNhaXNvbiA9ID8gT1JERVIgQlkgbWFqX2ZmdHQgREVTQyBMSU1JVCAyNSAiOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkc2Fpc29uKSk7Ci8vb24gYSBkb25jIGxlcyBuIGxpY2VuY2VzIHBvdXIgZmFpcmUgbGEgZGV1eGnDqG1lIHJlcXVldGUKLy9vbiBjb21tZW5jZSDDoCBib3VjbGVyCgokcm93Y2xhc3M9ICdyb3cxJzsKJHJvd2FycmF5PSBhcnJheSAoKTsKCgppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogIC8vIG9uIGluc3RhbmNpZSBsYSBjbGFzc2UgCgogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewoJJHNlcnZpY2UgPSBuZXcgU2VydmljZSgpOwoJJGxpY2VuY2UgPSAkcm93WydsaWNlbmNlJ107Cgkkam91ZXVyID0gJHJvd1snam91ZXVyJ107CiAgICAgCi8qKi8KCSRyZXN1bHQgPSAkc2VydmljZS0+Z2V0Sm91ZXVyUGFydGllcygiJGxpY2VuY2UiKTsKCSRpID0gMDsKCSRjb21wdGFnZSA9IDA7CgkJZm9yZWFjaCgkcmVzdWx0IGFzICRjbGUgPT4kdGFiKQoJCXsKCQkJJGNvbXB0YWdlKys7CgkJCQoJCQkvL29uIHbDqXJpZmllIHF1ZSBsZSBzZXJ2aWNlIGVzdCBvayBzaW5vbiBvbiBwYXNzZSBhdSBzdWl2YW50CgkJCWlmKCFpc19hcnJheSgkcmVzdWx0KSAmJiBjb3VudCgkcmVzdWx0KT09MCkKCQkJewoJCQkJLy9sZSBzZXJ2aWNlIGVzdCBkb3duCgkJCQkkZGVzaWduYXRpb24gPSAiU2VydmljZSBjb3Vww6kgb3UgbGljZW5jZSBpbmRpc3BvbmlibGUgcG91ciAiLiRqb3VldXI7CgkJCQkkc3RhdHVzID0gJ0VjaGVjJzsKCQkJCSRhY3Rpb24gPSdyZXRyaWV2ZV9hbGxfcGFydGllcyc7CgkJCQkKCQkJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csICRzdGF0dXMsICRkZXNpZ25hdGlvbiwgJGFjdGlvbik7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkvLyBsZSBzZXJ2aWNlIGVzdCBPaywgb24gY29udGludWUKCQkJCgkJCQkkbGljZW5jZTIgPSAkdGFiW2xpY2VuY2VdOwoJCQkJJGFkdmxpYyA9ICR0YWJbYWR2bGljXTsKCQkJCSR2ZCA9ICR0YWJbdmRdOwoJCgkJCQkJaWYgKCR2ZCA9PSdWJyl7CgkJCQkJCSR2ZCA9IDE7CgkJCQkJCX0KCQkJCQllbHNlIAoJCQkJCQl7JHZkID0gMDsKCQkJCQl9CgkJCgkJCQkkbnVtam91cm4gPSAkdGFiW251bWpvdXJuXTsKCQkJCgkJCQkJaWYoaXNfYXJyYXkoJG51bWpvdXJuKSkKCQkJCQl7CgkJCQkJCSRudW1qb3VybiA9ICcwJzsKCQkJCQl9CgkJCQkKCQkJCSRjb2RlY2hhbXAgPSAkdGFiW2NvZGVjaGFtcF07CgkJCQkkZGF0ZWV2ZW50ID0gJHRhYltkYXRlXTsKCQkJCSRjaGd0ID0gZXhwbG9kZSgiLyIsJGRhdGVldmVudCk7CgkJCQkkZGF0ZV9ldmVudCA9ICRjaGd0WzJdLiItIi4kY2hndFsxXS4iLSIuJGNoZ3RbMF07CgkJCQkvL2VjaG8gImxhIGRhdGUgZXN0Ii4kZGF0ZV9ldmVudDsKCQoJCQkJLy8JJGRhdGVfZXZlbnQgPSBjb252X2RhdGVfdmVyc19teXNxbCgkZGF0ZWV2ZW50KTsKCQkJCSRhZHZzZXhlID0gJHRhYlthZHZzZXhlXTsKCQkJCSRhZHZub21wcmUgPSAkdGFiW2Fkdm5vbXByZV07CgkJCQkkcG9pbnRyZXMgPSAkdGFiW3BvaW50cmVzXTsKCQkJCSRjb2VmY2hhbXAgPSAkdGFiW2NvZWZjaGFtcF07CgkJCQkkYWR2Y2xhb2YgPSAkdGFiW2FkdmNsYW9mXTsKCQoJLyoqLwkJCSRxdWVyeTIgPSAiU0VMRUNUIGxpY2VuY2UsYWR2bGljLCBudW1qb3VybiwgY29kZWNoYW1wLCBkYXRlX2V2ZW50LCBjb2VmY2hhbXAgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyBXSEVSRSBsaWNlbmNlID0gPyBBTkQgYWR2bGljID0gPyBBTkQgbnVtam91cm4gPSA/IEFORCBjb2RlY2hhbXAgPSA/IEFORCBkYXRlX2V2ZW50ID0gPyBBTkQgY29lZmNoYW1wID0gPyI7CgkJCQkkZGJyZXN1bHQyID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsIGFycmF5KCRsaWNlbmNlMiwgJGFkdmxpYywgJG51bWpvdXJuLCAkY29kZWNoYW1wLCAkZGF0ZV9ldmVudCwgJGNvZWZjaGFtcCkpOwoJCQkKCQkJCQlpZigkZGJyZXN1bHQyICAmJiAkZGJyZXN1bHQyLT5SZWNvcmRDb3VudCgpID09IDApIAoJCQkJCXsKCQkJCQkJJHF1ZXJ5MyA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyAoaWQsc2Fpc29uLCBsaWNlbmNlLCBhZHZsaWMsIHZkLCBudW1qb3VybiwgY29kZWNoYW1wLCBkYXRlX2V2ZW50LCBhZHZzZXhlLCBhZHZub21wcmUsIHBvaW50cmVzLCBjb2VmY2hhbXAsIGFkdmNsYW9mKSBWQUxVRVMgKCcnLD8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIjsKCQkJCQkJJGkrKzsKCQkJCQkJLy9lY2hvICRxdWVyeTsKCQkJCQkJJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MyxhcnJheSggJHNhaXNvbl9jb3VyYW50ZSwgJGxpY2VuY2UyLCAkYWR2bGljLCAkdmQsICRudW1qb3VybiwgJGNvZGVjaGFtcCwgJGRhdGVfZXZlbnQsICRhZHZzZXhlLCAkYWR2bm9tcHJlLCAkcG9pbnRyZXMsICRjb2VmY2hhbXAsICRhZHZjbGFvZikpOwoJCQoJCQkJCQkJaWYoISRkYnJlc3VsdGF0KQoJCQkJCQkJewoJCQkJCQkJCSRkZXNpZ25hdGlvbiA9ICRkYi0+RXJyb3JNc2coKTsgCgkJCQkJCQkJJHN0YXR1cyA9ICdFY2hlYyc7CgkJCQkJCQkJJGFjdGlvbiA9ICdyZXRyaWV2ZV9hbGxfcGFydGllcyc7CgkJCQkJCQkJcGluZ19hZG1pbl9vcHM6OmVjcmlyZWpvdXJuYWwoJG5vdywgJHN0YXR1cywgJGRlc2lnbmF0aW9uLCAkYWN0aW9uKTsKCQkJCQkJCX0KCQkJCQoJCQkJCX0KCQkJCgkJCX0vL2ZpbiBkdSBlbHNlICFpc19hcnJheQoJCX0vL2ZpbiBkdSBmb3JlYWNoCgkKCQkvL29uIHBldXQgZmFpcmUgbGEgbWFqX2ZmdHQgaWNpCgkJCgkJCgkJJGRlc2lnbmF0aW9uID0gIkluY2x1c2lvbiBkZSAiLiRpLiIgcsOpc3VsdGF0cyBwb3VyICIuJGpvdWV1cjsKCQlpZigkaT09MCkKCQl7CgkJCSRkZXNpZ25hdGlvbi49IiBTZXJ2aWNlIGNvdXDDqSA/IExpY2VuY2UgYWJzZW50ZSA/IjsKCQl9CgkJZWxzZQoJCXsKCQkJJGRhdGVfbWFqID0gZGF0ZSgnWS1tLWQnKTsKCQkJJHF1ZXJ5NCA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgU0VUIG1hal9mZnR0ID0gPywgZmZ0dCA9ID8gV0hFUkUgbGljZW5jZSA9ID8gQU5EIHNhaXNvbiA9ID8iOwoJCQkkcmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkZGF0ZV9tYWosICRjb21wdGFnZSwgJGxpY2VuY2UyLCAkc2Fpc29uX2NvdXJhbnRlKSk7CgkJfQoJCQoJCSRzdGF0dXMgPSAnT2snOwoJCSRhY3Rpb24gPSAncmV0cmlldmVfYWxsX3BhcnRpZXMnOwoJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywkZGVzaWduYXRpb24sJGFjdGlvbik7CgkJdW5zZXQoJGxpY2VuY2UyKTsKCQl1bnNldCgkaSk7CgkJCgkJCgl9Ly9maW4gZHUgd2hpbGUKfS8vZmluIGR1IGlmICRkYnJlc3VsdAoKLyoqLwovKgkKCSR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdzYXZlZF9yZWNvcmQnKSk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZW5jb250cmVzJyk7CiovCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/cron/action.cron_retrieve_users.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyEvdXNyL2xvY2FsL2Jpbi9waHANCjw/cGhwDQovKioNCiAqIEdlbmVyYXRlcyBhIGJhY2t1cCBvZiB0aGUgZGF0YWJhc2UgYW5kIHNlbmRzIGl0IGluIGFuIGVtYWlsDQogKg0KICogQGF1dGhvciBFbGlqYWggTG9mZ3JlbiA8IGVsaWphaGxvZmdyZW4gW2F0XSBlbGlqYWhsb2ZncmVuLmNvbT4NCiAqIEB2ZXJzaW9uICRJZDogYmFja3VwLWRhdGFiYXNlLWNyb24ucGhwIDIxMzUgMjAwNS0wOC0wNyAxMzo0MzoyOVogZWxpamFobG9mZ3JlbiAkDQogKi8NCnJlcXVpcmVfb25jZSBkaXJuYW1lKF9fRklMRV9fKS4nLy4uLy4uLy4uL2NvbmZpZy5waHAnOw0KZWNobyAnQ291Y291ICEgJzsNCi8qKg0KJG91dHB1dCA9ICdDcmVhdGluZyBEYXRhYmFzZSBiYWNrdXAuJzsNCiRlbWFpbCA9ICdjb250YWN0QGFnaS13ZWJjb25zZWlsLmZyJzsNCiRvdXRwdXQgLj0gYmFja3VwKCRjb25maWcsICRlbWFpbCk7DQplY2hvICRvdXRwdXQ7DQovLyAkb3V0cHV0IC49ICRQYWdlLT5zaG93Rm9vdGVyKCk7DQovLyBlY2hvICRvdXRwdXQ7DQoNCiAgICAvKiBEYXRhYmFzZSBCYWNrdXAgVXRpbGl0eSAxLjAgQnkgRXJpYyBSb3NlYnJvY2ssIGh0dHA6Ly93d3cucGhwZnJlYWtzLmNvbQ0KICAgIFdyaXR0ZW46IEp1bHkgN3RoLCAyMDAyIDEyOjU5IEFNDQoNCiAgICBJZiBydW5uaW5nIGZyb20gc2hlbGwsIHB1dCB0aGlzIGFib3ZlIHRoZSA8P3BocCAgIiMhIC91c3IvYmluL3BocCAtcSIgIHdpdGhvdXQgdGhlIHF1b3RlcyEhIQ0KDQogICAgVGhpcyBzY3JpcHQgaXMgZGVkaWNhdGVkIHRvICJTYWxrIi4gWW91IGtub3cgd2hvIHlvdSBhcmUgOikNCg0KICAgIFRoaXMgc2NyaXB0IHJ1bnMgYSBiYWNrdXAgb2YgeW91ciBkYXRhYmFzZSB0aGF0IHlvdSBkZWZpbmUgYmVsb3cuIEl0IHRoZW4gZ3ppcHMgdGhlIC5zcWwgZmlsZQ0KICAgIGFuZCBlbWFpbHMgaXQgdG8geW91IG9yIGZ0cCdzIHRoZSBmaWxlIHRvIGEgbG9jYXRpb24gb2YgeW91ciBjaG9pY2UuDQoNCiAgICBJdCBpcyBoaWdobHkgcmVjb21tZW5kZWQgdGhhdCB5b3UgbGVhdmUgZ3ppcCBvbiB0byByZWR1Y2UgdGhlIGZpbGUgc2l6ZS4NCg0KICAgIFlvdSBtdXN0IGNob3duIHRoZSBkaXJlY3RvcnkgdGhpcyBzY3JpcHQgcmVzaWRlcyBpbiB0byB0aGUgc2FtZSB1c2VyIG9yIGdyb3VwIHlvdXIgd2Vic2VydmVyIHJ1bnMNCiAgICBpbiwgb3IgQ0hNT0QgaXQgdG8gd3JpdGFibGUuIEkgZG8gbm90IHJlY29tbWVuZCBjaG1vZCA3NzcgYnV0IGl0J3MgYSBxdWljayBzb2x1dGlvbi4gSWYgeW91IGNhbiBzZXR1cA0KICAgIGEgY3JvbiwgeW91IGNhbiBwcm9iYWJseSBjaG93biB5b3VyIGRpcmVjdG9yeSENCg0KICAgIElNUE9SVEFOVCEhISBJIHJlY29tbWVuZCB0aGF0IHlvdSBydW4gdGhpcyBvdXRzaWRlIG9mIHlvdXINCiAgICB3ZWIgZGlyZWN0b3J5LCB1bmxlc3MgeW91IG1hbnVhbGx5IHdhbnQgdG8gcnVuIHRoaXMgc2NyaXB0LiBJZiB5b3UgZG8gdXBsb2FkIGl0IGluc2lkZSB5b3VyIHdlYg0KICAgIGRpcmVjdG9yeSBzb3VyY2UgVHJlZSgkc2V0dGluZ3MpLCBJIHdvdWxkIGF0IGxlYXN0IGFwcGx5IEFwYWNoZSBhY2Nlc3MgY29udHJvbCBvbiB0aGF0IGRpcmVjdG9yeS4gWW91IGRvbid0DQogICAgd2FudCBwZW9wbGUgZG93bmxvYWRpbmcgeW91ciByYXcgZGF0YWJhc2VzIQ0KDQogICAgVGhpcyBzY3JpcHQgaXMgbWVhbnQgdG8gYmUgc2V0dXAgb24gYSBjcm9udGFiIGFuZCBydW4gb24gYSB3ZWVrbHkgYmFzaXMNCiAgICBZb3Ugd2lsbCBoYXZlIHRvIGNvbnRhY3QgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciB0byBzZXR1cCBhIGNyb24gdGFiIGZvciB0aGlzIHNjcmlwdA0KICAgIEhlcmUncyBhbiBleGFtcGxlIGNyb250YWI6DQoNCiAgICAwIDAtMjMgKiAqICogcGhwIC9wYXRoL3RvL3RoaXNkaXJlY3RvcnkvZGJzZW5kZXIucGhwID4gL2Rldi9udWxsDQoNCiAgICANCiAgICBmdW5jdGlvbiBiYWNrdXAoJGNvbmZpZywgJGVtYWlsKQ0KICAgIHsNCiAgICAgICAgLy8gT3B0aW9uYWwgT3B0aW9ucyBZb3UgTWF5IE9wdGlvbmFsbHkgQ29uZmlndXJlDQoNCiAgICAgICAgJHVzZV9nemlwID0gVFJVRTsgIC8vIFNldCB0byBGQUxTRSBpZiB5b3UgZG9uJ3Qgd2FudCB0aGUgZmlsZXMgc2VudCBpbiAuZ3ogZm9ybWF0DQogICAgICAgICRyZW1vdmVfc3FsX2ZpbGUgPSBUUlVFOyAvLyBTZXQgdGhpcyB0byBUUlVFIGlmIHlvdSB3YW50IHRvIHJlbW92ZSB0aGUgLnNxbCBmaWxlIGFmdGVyIGd6aXBwaW5nLiBZZXMgaXMgcmVjb21tZW5kZWQuDQogICAgICAgICRyZW1vdmVfZ3ppcF9maWxlID0gVFJVRTsgLy8gU2V0IHRoaXMgdG8gVFJVRSBpZiB5b3Ugd2FudCB0byBkZWxldGUgdGhlIGd6aXAgZmlsZSBhbHNvLiBJIHJlY29tbWVuZCBsZWF2aW5nIGl0IHRvICJubyINCg0KICAgICAgICAvLyBGdWxsIHBhdGggdG8gdGhlIGJhY2t1cCBkaXJlY3RvcnkuIERvIG5vdCB1c2UgdHJhaWxpbmcgc2xhc2ghDQogICAgICAgICRzYXZlcGF0aCA9IGRpcm5hbWUoX19GSUxFX18pOw0KICAgICAgICAkc2VuZF9lbWFpbCA9IFRSVUU7ICAvLyBEbyB5b3Ugd2FudCB0aGlzIGRhdGFiYXNlIGJhY2t1cCBzZW50IHRvIHlvdXIgZW1haWw/IEZpbGwgb3V0IHRoZSBuZXh0IDIgbGluZXMNCg0KICAgICAgICAvLyAkc2VuZGRhdGUgPSBkYXRlKCJqIEYgWSIpOw0KICAgICAgICAkc2VuZGRhdGUgPSBkYXRlKCdZLW0tZC1IaScpOw0KDQogICAgICAgIC8vIFN1YmplY3QgaW4gdGhlIGVtYWlsIHRvIGJlIHNlbnQuDQogICAgICAgICRzdWJqZWN0ID0gJ015U1FMIERCIE1haXJpZSBGb3Vlc25hbnQgOiAnLiRjb25maWdbJ2RiX25hbWUnXS4nIEJhY2t1cCAtICcuJHNlbmRkYXRlOw0KICAgICAgICAkbWVzc2FnZSA9ICdZb3VyIE15U1FMIGRhdGFiYXNlIGhhcyBiZWVuIGJhY2tlZCB1cCBhbmQgaXMgYXR0YWNoZWQgdG8gdGhpcyBlbWFpbCc7IC8vIEJyaWVmIE1lc3NhZ2UuDQoNCi8qDQogICAgICAgICR1c2VfZnRwID0gIm5vIjsgLy8gRG8geW91IHdhbnQgdGhpcyBkYXRhYmFzZSBiYWNrdXAgdXBsb2FkZWQgdG8gYW4gZnRwIHNlcnZlcj8gRmlsbCBvdXQgdGhlIG5leHQgNCBsaW5lcw0KICAgICAgICAkZnRwX3NlcnZlciA9ICIiOyAvLyBGVFAgaG9zdG5hbWUNCiAgICAgICAgJGZ0cF91c2VyX25hbWUgPSAiIjsgLy8gRlRQIHVzZXJuYW1lDQogICAgICAgICRmdHBfdXNlcl9wYXNzID0gIiI7IC8vIEZUUCBwYXNzd29yZA0KICAgICAgICAkZnRwX3BhdGggPSAiL3B1YmxpY19odG1sL2JhY2t1cHMvIjsgLy8gVGhpcyBpcyB0aGUgcGF0aCB0byB1cGxvYWQgb24geW91ciBmdHAgc2VydmVyIQ0KDQogICAgICAgIC8vIERvIG5vdCBNb2RpZnkgYmVsb3cgdGhpcyBsaW5lISBJdCB3aWxsIHZvaWQgeW91ciB3YXJyYW50eSENCg0KICAgICAgICAkZGF0ZSA9IGRhdGUoJ1ktbS1kLUhpJyk7DQogICAgICAgICRmaWxlbmFtZSA9ICRzYXZlcGF0aC4nLycuJGNvbmZpZ1snZGJfbmFtZSddLictJy4kZGF0ZS4nLnNxbCc7DQogICAgICAgIC8vIHBhc3N0aHJ1KCJteXNxbGR1bXAgLS1vcHQgLWgkZGJob3N0IC11JGRidXNlciAtcCRkYnBhc3MgJGRibmFtZSA+JGZpbGVuYW1lIik7DQogICAgICAgIC8vIHBhc3N0aHJ1KCJteXNxbGR1bXAgLS1vcHQgLWgkZGJob3N0IC11JGRidXNlciAtcCRkYnBhc3MgJGRibmFtZSA+JGZpbGVuYW1lIik7DQogICAgICAgIC8vICRwYXNzdGhydSA9ICJteXNxbGR1bXAgLWggJHNlcnZlciAtdSAkdXNlcm5hbWUgLXAkcGFzc3dvcmQgLS1hZGQtZHJvcC10YWJsZSAtLWFsbCAtLXF1aWNrIC0tbG9jay10YWJsZXMgLS1kaXNhYmxlLWtleXMgLS1leHRlbmRlZC1pbnNlcnQgLWQgJGRhdGFiYXNlID4kZmlsZW5hbWUiOw0KICAgICAgICAkcGFzc3RocnUgPSAnbXlzcWxkdW1wIC0tb3B0Jw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuJyAtaCAnLiRjb25maWdbJ2RiX2hvc3RuYW1lJ10NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLicgLXUgJy4kY29uZmlnWydkYl91c2VybmFtZSddDQogICAgICAgICAgICAgICAgICAgICAgLy8gVGhlcmUgbXVzdCBub3QgYmUgYSBzcGFjZSBiZXR3ZWVuIC1wIGFuZCB0aGUgcGFzc3dvcmQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLicgLXAnLiRjb25maWdbJ2RiX3Bhc3N3b3JkJ10NCiAgICAgICAgICAgICAgICAgICAgICAvLyBUaGVyZSBNVVNUIGJlIGEgc3BhY2UgYmV0d2VlbiB0aGUgcGFzc3dvcmQgYW5kIERCIG5hbWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLicgJy4kY29uZmlnWydkYl9uYW1lJ10uJyA+ICcuJGZpbGVuYW1lOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlY2hvICRwYXNzdGhydTsNCiAgICAgICAgLy8gICRwYXNzdGhydSA9ICJteXNxbGR1bXAgLWggJHNlcnZlciAtdSAkdXNlcm5hbWUgLXAkcGFzc3dvcmQgLS1vcHQgLS10YWJsZXMgLWQgJGRhdGFiYXNlID4kZmlsZW5hbWUiOw0KICAgICAgICAvLyBlY2hvICRwYXNzdGhydTsNCiAgICAgICAgcGFzc3RocnUoJHBhc3N0aHJ1KTsNCg0KICAgICAgICBpZiAoRkFMU0UgIT0gJHVzZV9nemlwKSB7DQogICAgICAgICAgICAkcmVhbF9wYXRoID0gcmVhbHBhdGgoJHNhdmVwYXRoKTsNCiAgICAgICAgICAgIC8vIGVjaG8gJzxiciAvPmRmICcuJHJlYWxfcGF0aC4nPC9icj4nOw0KICAgICAgICAgICAgJHppcGxpbmUgPSAidGFyIC1jemYgIi4kcmVhbF9wYXRoLicvJy4kY29uZmlnWydkYl9uYW1lJ10uJy0nLiRkYXRlLidfc3FsLnRhci5neiAnLiRyZWFsX3BhdGguJy8nLiRjb25maWdbJ2RiX25hbWUnXS4nLScuJGRhdGUuJy5zcWwnOw0KICAgICAgICAgICAgLy8gJHppcGxpbmUgPSAidGFyIC1jemYgLS1kaXJlY3Rvcnk9Ii4kcmVhbF9wYXRoLicgICcuJGRhdGFiYXNlLiItIi4kZGF0ZS4iX3NxbC50YXIuZ3ogIi4iJGRhdGFiYXNlLSRkYXRlLnNxbCI7DQogICAgICAgICAgICAvLyAgIGVjaG8gJzxiciAvPicuJHppcGxpbmUuJzxiciAvPic7DQogICAgICAgICAgICBzaGVsbF9leGVjKCR6aXBsaW5lKTsNCiAgICAgICAgfQ0KICAgICAgICAvLyBSZW1vdmUgdGhlIFNRTCBmaWxlIGlmIG5lZWRlZA0KICAgICAgICBpZiAoRkFMU0UgIT0gJHJlbW92ZV9zcWxfZmlsZSkgew0KICAgICAgICAgICAgZXhlYygncm0gLXIgLWYgJy4kZmlsZW5hbWUpOw0KICAgICAgICB9DQogICAgICAgIC8vIElmIHN1cHBvc2VkIHRvIGd6aXAgdGhlIGZpbGUNCiAgICAgICAgaWYgKEZBTFNFICE9ICR1c2VfZ3ppcCkgew0KICAgICAgICAgICAgJGZpbGVuYW1lMiA9ICRzYXZlcGF0aC4nLycuJGNvbmZpZ1snZGJfbmFtZSddLictJy4kZGF0ZS4nX3NxbC50YXIuZ3onOw0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgJGZpbGVuYW1lMiA9ICRzYXZlcGF0aC4nLycuJGNvbmZpZ1snZGJfbmFtZSddLictJy4kZGF0ZS4nLnNxbCc7DQogICAgICAgIH0NCiAgICAgICAgLy8gSWYgYmFja2luZyB1cCB0byBlbWFpbCBhZGRyZXNzDQogICAgICAgIGlmIChGQUxTRSAhPSAkc2VuZF9lbWFpbCkgew0KICAgICAgICAgICAgJGZpbGVhdHRfdHlwZSA9IGZpbGV0eXBlKCRmaWxlbmFtZTIpOw0KICAgICAgICAgICAgLy8gIGVjaG8gJGZpbGVuYW1lMjsNCiAgICAgICAgICAgICRmaWxlYXR0X25hbWUgPSAiIi4kY29uZmlnWydkYl9uYW1lJ10uIi0iLiRkYXRlLiJfc3FsLnRhci5neiI7DQogICAgICAgICAgICAkaGVhZGVycyA9ICdGcm9tOiAnLiRlbWFpbDsNCiAgICAgICAgICAgIC8vIFJlYWQgdGhlIGZpbGUgdG8gYmUgYXR0YWNoZWQgKCdyYicgPSByZWFkIGJpbmFyeSkNCiAgICAgICAgICAgICRmaWxlID0gZm9wZW4oJGZpbGVuYW1lMiwgJ3JiJyk7DQogICAgICAgICAgICAkZGF0YSA9IGZyZWFkKCRmaWxlLCBmaWxlc2l6ZSgkZmlsZW5hbWUyKSk7DQogICAgICAgICAgICBmY2xvc2UoJGZpbGUpOw0KDQogICAgICAgICAgICAvLyBHZW5lcmF0ZSBhIGJvdW5kYXJ5IHN0cmluZw0KICAgICAgICAgICAgJHNlbWlfcmFuZCA9IG1kNSh0aW1lKCkpOw0KICAgICAgICAgICAgJG1pbWVfYm91bmRhcnkgPSAiPT1NdWx0aXBhcnRfQm91bmRhcnlfeHskc2VtaV9yYW5kfXgiOw0KDQogICAgICAgICAgICAvLyBBZGQgdGhlIGhlYWRlcnMgZm9yIGEgZmlsZSBhdHRhY2htZW50DQogICAgICAgICAgICAkaGVhZGVycyAuPSAiXG5NSU1FLVZlcnNpb246IDEuMFxuIiAuIkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L21peGVkO1xuIiAuIiBib3VuZGFyeT1cInskbWltZV9ib3VuZGFyeX1cIiI7DQoNCiAgICAgICAgICAgIC8vIEFkZCBhIG11bHRpcGFydCBib3VuZGFyeSBhYm92ZSB0aGUgcGxhaW4gbWVzc2FnZQ0KICAgICAgICAgICAgJG1lc3NhZ2UgPSAiVGhpcyBpcyBhIG11bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1hdC5cblxuIiAuIi0teyRtaW1lX2JvdW5kYXJ5fVxuIiAuIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1cImlzby04ODU5LTFcIlxuIiAuIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDdiaXRcblxuIiAuDQogICAgICAgICAgICAkbWVzc2FnZSAuICJcblxuIjsNCg0KICAgICAgICAgICAgLy8gQmFzZTY0IGVuY29kZSB0aGUgZmlsZSBkYXRhDQogICAgICAgICAgICAkZGF0YSA9IGNodW5rX3NwbGl0KGJhc2U2NF9lbmNvZGUoJGRhdGEpKTsNCg0KICAgICAgICAgICAgLy8gQWRkIGZpbGUgYXR0YWNobWVudCB0byB0aGUgbWVzc2FnZQ0KICAgICAgICAgICAgJG1lc3NhZ2UgLj0gIi0teyRtaW1lX2JvdW5kYXJ5fVxuIiAuIkNvbnRlbnQtVHlwZTogeyRmaWxlYXR0X3R5cGV9O1xuIiAuIiBuYW1lPVwieyRmaWxlYXR0X25hbWV9XCJcbiIgLiJDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50O1xuIiAuIiBmaWxlbmFtZT1cInskZmlsZWF0dF9uYW1lfVwiXG4iIC4iQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogYmFzZTY0XG5cbiIgLg0KICAgICAgICAgICAgJGRhdGEgLiAiXG5cbiIgLiItLXskbWltZV9ib3VuZGFyeX0tLVxuIjsNCg0KICAgICAgICAgICAgLy8gU2VuZCB0aGUgbWVzc2FnZQ0KICAgICAgICAgICAgJG9rID0gbWFpbCgkZW1haWwsICRzdWJqZWN0LCAkbWVzc2FnZSwgJGhlYWRlcnMpOw0KICAgICAgICAgICAgaWYgKEZBTFNFICE9ICRvaykgew0KICAgICAgICAgICAgICAgICRvdXRwdXQgID0gJzxwPkRhdGFiYXNlIGJhY2t1cCBjcmVhdGVkIGFuZCBzZW50ISAnOw0KICAgICAgICAgICAgICAgICRvdXRwdXQgLj0gJ0ZpbGUgbmFtZSAnLiRmaWxlbmFtZTIuJzwvcD4nOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkb3V0cHV0ID0gJzxwPk1haWwgY291bGQgbm90IGJlIHNlbnQuIFNvcnJ5ITwvcD4nOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIC8qDQogICAgICAgIGlmKCR1c2VfZnRwID09ICJ5ZXMiKXsNCiAgICAgICAgICAgICRmdHBjb25uZWN0ID0gIm5jZnRwcHV0IC11ICRmdHBfdXNlcl9uYW1lIC1wICRmdHBfdXNlcl9wYXNzIC1kIGRlYnNlbmRlcl9mdHBsb2cubG9nIC1lIGRic2VuZGVyX2Z0cGxvZzIubG9nIC1hIC1FIC1WICRmdHBfc2VydmVyICRmdHBfcGF0aCAkZmlsZW5hbWUyIjsNCiAgICAgICAgICAgIHNoZWxsX2V4ZWMoJGZ0cGNvbm5lY3QpOw0KICAgICAgICAgICAgZWNobyAiPGg0PjxjZW50ZXI+JGZpbGVuYW1lMiBXYXMgY3JlYXRlZCBhbmQgdXBsb2FkZWQgdG8geW91ciBGVFAgc2VydmVyITwvY2VudGVyPjwvaDQ+IjsNCg0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICBpZiAoJ3llcycgPT0gJHJlbW92ZV9nemlwX2ZpbGUpIHsNCiAgICAgICAgICAgIGV4ZWMoInJtIC1yIC1mICRmaWxlbmFtZTIiKTsNCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gJG91dHB1dDsNCiAgICB9DQoqLw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/cron/action.cron_spid_fftt.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIyMgICAgICAgICAgVsOpcmlmaWNhdGlvbiBlbnRyZSBTcGlkIGV0IEZGVFQgICAgICAgICAgICAgICMjIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmlmKCFpc3NldCgkZ0NtcykpIGV4aXQ7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKZ2xvYmFsICR0aGVtZU9iamVjdDsKCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7CiRkZXNpZ25hdGlvbiA9ICcnOwovLyRxdWVyeSA9ICJTRUwiOwovLyRxdWVyeSA9ICJTRUxFQ1Qgc3AuaWQscC5kYXRlX2V2ZW50LHNwLmxpY2VuY2UgYXMgbGljZW5jZV9zcGlkLCBwLmxpY2VuY2UgYXMgbGljZW5jZV9mZnR0LHNwLm5vbSBhcyBub21fc3BpZCwgcC5hZHZub21wcmUgQVMgbm9tX2ZmdHQsIHNwLm51bWpvdXJuIEFTIG51bWpvdXJuX3NwaWQsIHAubnVtam91cm4gQVMgbnVtam91cm5fZmZ0dCwgc3AudmljdG9pcmUgQVMgdmljdG9pcmVfc3BpZCwgcC52ZCBBUyB2aWN0b2lyZV9mZnR0LCBzcC5jb2VmZiBBUyBjb2VmZl9zcGlkLCBwLmNvZWZjaGFtcCBBUyBjb2VmZl9mZnR0LCBzcC5wb2ludHJlcyBBUyBwb2ludHNfc3BpZCwgcC5wb2ludHJlcyBBUyBwb2ludHNfZmZ0dCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgQVMgc3AsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIEFTIHAgV0hFUkUgc3AubGljZW5jZSA9IHAubGljZW5jZSBBTkQgc3Aubm9tID0gcC5hZHZub21wcmUgQU5EIHNwLmRhdGVfZXZlbnQgPSBwLmRhdGVfZXZlbnQgQU5EIHNwLnNhaXNvbiA9ID8gQU5EIChzcC5wb2ludHJlcyAhPXAucG9pbnRyZXMpIE9SREVSIEJZIHNwLmlkIERFU0MiOwokcXVlcnkgPSAiU0VMRUNUIHNwLmlkIEFTIHJlY29yZF9pZCxwLmRhdGVfZXZlbnQsc3AubGljZW5jZSBhcyBsaWNlbmNlX3NwaWQsIHAubGljZW5jZSBhcyBsaWNlbmNlX2ZmdHQsc3Aubm9tIGFzIG5vbV9zcGlkLCBwLmFkdm5vbXByZSBBUyBub21fZmZ0dCwgc3AubnVtam91cm4gQVMgbnVtam91cm5fc3BpZCwgcC5udW1qb3VybiBBUyBudW1qb3Vybl9mZnR0LCBzcC52aWN0b2lyZSBBUyB2aWN0b2lyZV9zcGlkLCBwLnZkIEFTIHZpY3RvaXJlX2ZmdHQsIHNwLmNvZWZmIEFTIGNvZWZmX3NwaWQsIHAuY29lZmNoYW1wIEFTIGNvZWZmX2ZmdHQsIHNwLnBvaW50cmVzIEFTIHBvaW50c19zcGlkLCBwLnBvaW50cmVzIEFTIHBvaW50c19mZnR0IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBBUyBzcCwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXMgQVMgcCBXSEVSRSBzcC5saWNlbmNlID0gcC5saWNlbmNlIEFORCBzcC5ub20gPSBwLmFkdm5vbXByZSBBTkQgc3AuZGF0ZV9ldmVudCA9IHAuZGF0ZV9ldmVudCBBTkQgc3Auc2Fpc29uID0gPyBBTkQgKChzcC5wb2ludHJlcyAhPXAucG9pbnRyZXMpIE9SIChzcC5udW1qb3VybiAhPXAubnVtam91cm4pIE9SIChzcC5jb2VmZiAhPSBwLmNvZWZjaGFtcCkpIE9SREVSIEJZIHNwLmlkIEFTQyI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRzYWlzb25fY291cmFudGUpKTsKLy8kcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwokbGljID0gYXJyYXkoKTsKLy8kbGljID0gJHJvd1swXVsnbGljZW5jZSddOwovL2VjaG8gIkxhIHZhbGV1ciBlc3QgOiAiLiRsaWM7CiRsaWduZXMgPSAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk7CmZvcigkaT0wOyRpPD0kbGlnbmVzOyRpKyspCnsKCS8vYXJyYXlfcHVzaCgkbGljLCRyb3dbJGldWydpZCddLCAkcm93WyRpXVsnbnVtam91cm5fZmZ0dCddKTsKCS8vYXJyYXlfcHVzaCgkbGljWyRpXSxhcnJheSgkcm93WydpZCddLCAkcm93WydudW1qb3Vybl9mZnR0J10pKTsKCS8vJGxpY2VuID0gc3Vic3RyKGltcGxvZGUoIiwgIiwgJGxpYyksIDAsIC0zKTsKfQoKLy92YXJfZHVtcCgkZGJyZXN1bHQpOwoKLyoqLwoKJHJvd2FycmF5ID0gYXJyYXkoKTsKJGkgPSAwOwoJaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKT4wKQoJewoJCXdoaWxlKCRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkvL3BiIHNpIGRvdWJsb25zIG91IHRyaXBsb25zICAhISEKCQkJLy9mYXV0IGRvbmMgdsOpcmlmaWVyIGQnYWJvcmQgZGFucyBsYSB0YWJsZSBmZnR0LCBiZW4gb3VpICEKCQkJLy9vbiBwcmVuZCBkb25jIGxlcyDDqWzDqW1lbnRzIHBvdXIgdsOpcmlmaWVyCgkJCS8vb24gaW5zdGFuY2llIHVuZSB2YXJpYWJsZSBwb3VyIGRpcmUgc2kgYydlc3Qgb2sgb3Uga28gCgkJCSRkb3VibG9ucyA9IDA7CgkJCSRsaWNlbmNlX2pvdWV1ciA9ICRyb3dbJ2xpY2VuY2Vfc3BpZCddOwoJCQkkZGF0ZV9ldmVudCAgPSAkcm93WydkYXRlX2V2ZW50J107CgkJCQoJCQkKCQkJJHF1ZXJ5MyA9ICJTRUxFQ1QgY291bnQoKSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIFdIRVJFIGxpY2VuY2UgPSA/IEFORCBkYXRlX2V2ZW50ID0gPyBBTkQgYSA9ID8iOwoJCQkKCQkJCgkJCSRyZWNvcmRfaWQgPSAkcm93WydyZWNvcmRfaWQnXTsKCQkJJG51bWpvdXJuX2ZmdHQgPSAkcm93WydudW1qb3Vybl9mZnR0J107CgkJCS8vZWNobyAibGUgbsKwIEZGVFQgZXN0IDogIi4kbnVtam91cm5fZmZ0dC4iIHBvdXIgbGUgTsKwICIuJHJlY29yZF9pZC4iPGJyIC8+IjsKCQkJJGNvZWZjaGFtcCA9ICRyb3dbJ2NvZWZmX2ZmdHQnXTsKCQkJJHBvaW50cmVzID0gJHJvd1sncG9pbnRzX2ZmdHQnXTsKCQkJJHZkID0gJHJvd1sndmljdG9pcmVfZmZ0dCddOwoJCQlpZigkcG9pbnRyZXMgIT0nJykKCQkJewoJCQkJCgkJCQoJCQkJJHF1ZXJ5MiA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBTRVQgbnVtam91cm4gPSA/LCBjb2VmZiA9ID8sIHBvaW50cmVzID0gPywgdmljdG9pcmUgPSA/IFdIRVJFIGlkID0gPyI7CgkJCQkvL2VjaG8gJHF1ZXJ5MjsKCQkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTIsIGFycmF5KCRudW1qb3Vybl9mZnR0LCAkY29lZmNoYW1wLCRwb2ludHJlcywkdmQsICRyZWNvcmRfaWQpKTsKCQkJCSRpKys7CgkJCQkJaWYoISRkYnJlc3VsdGF0KQoJCQkJCXsKCQkJCQkJJGRlc2lnbmF0aW9uLj0gJGRiLT5FcnJvck1zZygpOwoKCQkJCQl9CgkJCX0KCQl9CgkJCgkJJGRlc2lnbmF0aW9uLj0iUmVjdGlmaWNhdGlvbiBkZSAiLiRpLiIgcGFydGllKHMpIjsKCQkKCQkKCX0KCWVsc2UKCXsKCQkkZGVzaWduYXRpb24uPSJQYXMgZGUgcsOpc3VsdGF0cyDDoCBtb2RpZmllciI7Cgl9CgkvL2VjaG8gJGRlc2lnbmF0aW9uOwoKJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwokdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzcGlkJyk7CgkKCiNFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/cron/cron_retrieve_users.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCi8qKg0KICogR2VuZXJhdGVzIGEgYmFja3VwIG9mIHRoZSBkYXRhYmFzZSBhbmQgc2VuZHMgaXQgaW4gYW4gZW1haWwNCiAqDQogKiBAYXV0aG9yIEVsaWphaCBMb2ZncmVuIDwgZWxpamFobG9mZ3JlbiBbYXRdIGVsaWphaGxvZmdyZW4uY29tPg0KICogQHZlcnNpb24gJElkOiBiYWNrdXAtZGF0YWJhc2UtY3Jvbi5waHAgMjEzNSAyMDA1LTA4LTA3IDEzOjQzOjI5WiBlbGlqYWhsb2ZncmVuICQNCiAqLw0KcmVxdWlyZV9vbmNlKCcuLi8uLi8uLi9jb25maWcucGhwJyk7DQokbGluayA9IG15c3FsaV9jb25uZWN0KCRjb25maWdbJ2RiX2hvc3RuYW1lJ10sJGNvbmZpZ1snZGJfdXNlcm5hbWUnXSwkY29uZmlnWydkYl9wYXNzd29yZCddLCRjb25maWdbJ2RiX25hbWUnXSkgb3IgZGllKCJFcnJvciAiIC4gbXlzcWxpX2Vycm9yKCRsaW5rKSk7DQoNCg0KJHF1ZXJ5ID0gIlRSVU5DQVRFIGRlbW9fbW9kdWxlX3Bpbmdfam91ZXVycyI7DQokcmVzdWx0ID0gJGxpbmstPnF1ZXJ5KCRxdWVyeSk7IA0KaWYoJHJlc3VsdCkNCnsNCgllY2hvICI8cD50YWJsZSB2aWTDqWUuPC9wPiI7DQp9DQplbHNlDQp7DQoJZWNobyAiPHA+RXJyZXVyPC9wPiI7DQoJLy9lY2hvICRkYi0+RXJyb3JNc2coKTsNCn0NCg0KU0VUIGZvcmVpZ25fa2V5X2NoZWNrcyA9IDA7DQpUUlVOQ0FURSBUQUJMRSBgZGVtb19tb2R1bGVfcGluZ19hZHZlcnNhaXJlc2A7DQpUUlVOQ0FURSBUQUJMRSBgZGVtb19tb2R1bGVfcGluZ19jYWxlbmRyaWVyYDsNClRSVU5DQVRFIFRBQkxFIGBkZW1vX21vZHVsZV9waW5nX2NsYXNzZW1lbnRgOw0KVFJVTkNBVEUgVEFCTEUgYGRlbW9fbW9kdWxlX3BpbmdfY29tbWA7DQpUUlVOQ0FURSBUQUJMRSBgZGVtb19tb2R1bGVfcGluZ19lcXVpcGVzYDsNClRSVU5DQVRFIFRBQkxFIGBkZW1vX21vZHVsZV9waW5nX2pvdWV1cnNgOw0KVFJVTkNBVEUgVEFCTEUgYGRlbW9fbW9kdWxlX3BpbmdfcGFydGljaXBlYDsNClRSVU5DQVRFIFRBQkxFIGBkZW1vX21vZHVsZV9waW5nX3BhcnRpZXNgOw0KVFJVTkNBVEUgVEFCTEUgYGRlbW9fbW9kdWxlX3BpbmdfcGFydGllc19zcGlkYDsNClRSVU5DQVRFIFRBQkxFIGBkZW1vX21vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzYDsNClRSVU5DQVRFIFRBQkxFIGBkZW1vX21vZHVsZV9waW5nX3JlY3VwYDsNClRSVU5DQVRFIFRBQkxFIGBkZW1vX21vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXNgOw0KVFJVTkNBVEUgVEFCTEUgYGRlbW9fbW9kdWxlX3Bpbmdfc2VxYDsNClRSVU5DQVRFIFRBQkxFIGBkZW1vX21vZHVsZV9waW5nX3NpdF9tZW5zYDsNCg0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/cron/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/function.calculs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNrZWxldG9uIChjKSAyMDA4IAojICAgICAgYnkgUm9iZXJ0IEFsbGVuIChha3JhYmF0KSBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgpmdW5jdGlvbiBDYWxjdWxFY2FydCgkZWNhcnQpCnsKCWlmKCRlY2FydCA+PTAgJiYgJGVjYXJ0IDwgMjUpIHsgJGVjYXJ0ID0gMTsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTI1ICYmICRlY2FydCA8IDUwKXsgJGVjYXJ0ID0gMjsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTUwICYmICRlY2FydCA8IDEwMCl7ICRlY2FydCA9IDM7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPj0xMDAgJiYgJGVjYXJ0IDwgMTUwKXsgJGVjYXJ0ID0gNDsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTE1MCAmJiAkZWNhcnQgPCAyMDApeyAkZWNhcnQgPSA1OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0ID49MjAwICYmICRlY2FydCA8IDMwMCl7ICRlY2FydCA9IDY7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPj0zMDAgJiYgJGVjYXJ0IDwgNDAwKXsgJGVjYXJ0ID0gNzsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTQwMCAmJiAkZWNhcnQgPCA1MDApeyAkZWNhcnQgPSA4OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0ID49NTAwKXsgJGVjYXJ0ID0gOTsgcmV0dXJuICRlY2FydDsgfQoJCQoJZWxzZWlmKCRlY2FydCA+IC0yNSAmJiAkZWNhcnQgPCAwKXskZWNhcnQgPSAtMTsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA8PSAtMjUgJiYgJGVjYXJ0ID4gLTUwKXskZWNhcnQgPSAtMjsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA8PSAtNTAgJiYgJGVjYXJ0ID4gLTEwMCl7JGVjYXJ0ID0gLTM7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPD0gLTEwMCAmJiAkZWNhcnQgPiAtMTUwKXskZWNhcnQgPSAtNDsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA8PSAtMTUwICYmICRlY2FydCA+IC0yMDApeyRlY2FydCA9IC01OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0IDw9IC0yMDAgJiYgJGVjYXJ0ID4gLTMwMCl7JGVjYXJ0ID0gLTY7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPD0gLTMwMCAmJiAkZWNhcnQgPiAtNDAwKXskZWNhcnQgPSAtNzsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA8PSAtNDAwICYmICRlY2FydCA+IC01MDApeyRlY2FydCA9IC04OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0IDw9IC01MDApeyRlY2FydCA9IC05OyByZXR1cm4gJGVjYXJ0OyB9Cn0KCmZ1bmN0aW9uIENhbGN1bFBvaW50cygkZWNhcnQsJHZpY3RvaXJlLCRsb2NhdXgpIHsKJGdDbXMgPSBjbXNtcygpOwkKaWYoJGxvY2F1eD09J0EnKSB7CgkKCWlmKCRlY2FydCA9PTEpCgl7CgkJaWYoJHZpY3RvaXJlID09ICdBQkNEJykKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkkcmVzdWx0WzBdID0gNjsKCQkgICAgICAgIC8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ3ZpY05vcm0wXzI0Jyk7CgkJCSRyZXN1bHRbMV0gPSAxOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJCSAKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ2RlZkFub3JtMF8yNCcpOwoJCQkkcmVzdWx0WzBdID0gLTU7CgkJCSRyZXN1bHRbMV0gPSAwOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTIpCgl7CgkJaWYoJHZpY3RvaXJlID09ICdBQkNEJykKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCd2aWNOb3JtMjVfNDknKTsKCQkJJHJlc3VsdFswXSA9IDUuNTsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQkJCgkJfQoJCWVsc2UKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTI1XzQ5Jyk7CgkJCSRyZXN1bHRbMF0gPSAtNjsKCQkJJHJlc3VsdFsxXSA9IDA7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09MykKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ3ZpY05vcm01MF85OScpOwoJCQkkcmVzdWx0WzBdID0gNTsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ2RlZkFub3JtNTBfOTknKTsKCQkJJHJlc3VsdFswXSA9IC03OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT00KQoJewoJCWlmKCR2aWN0b2lyZSA9PSAnQUJDRCcpCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkvLwkkcmVzdWx0WzBdID0gR2V0UHJlZmVyZW5jZSgndmljTm9ybTEwMF8xNDknKTsKCQkJJHJlc3VsdFswXSA9IDQ7CgkJCSRyZXN1bHRbMV0gPSAxOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTEwMF8xNDknKTsKCQkJJHJlc3VsdFswXSA9IC04OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT01KQoJewoJCWlmKCR2aWN0b2lyZSA9PSAnQUJDRCcpCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJLy8kcmVzdWx0WzBdID0gR2V0UHJlZmVyZW5jZSgndmljTm9ybTE1MF8xOTknKTsKCQkJJHJlc3VsdFswXSA9IDM7CgkJCSRyZXN1bHRbMV0gPSAxOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTE1MF8xOTknKTsKCQkJJHJlc3VsdFswXSA9IC0xMDsKCQkJJHJlc3VsdFsxXSA9IDA7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09NikKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ3ZpY05vcm0yMDBfMjk5Jyk7CgkJCSRyZXN1bHRbMF0gPSAyOwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJLy8kcmVzdWx0WzBdID0gR2V0UHJlZmVyZW5jZSgnZGVmQW5vcm0yMDBfMjk5Jyk7CgkJCSRyZXN1bHRbMF0gPSAtMTIuNTsKCQkJJHJlc3VsdFsxXSA9IDA7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09NykKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ3ZpY05vcm0zMDBfMzk5Jyk7CgkJCSRyZXN1bHRbMF0gPSAxOwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJLy8kcmVzdWx0WzBdID0gR2V0UHJlZmVyZW5jZSgnZGVmQW5vcm0zMDBfMzk5Jyk7CgkJCSRyZXN1bHRbMF0gPSAtMTY7CgkJCSRyZXN1bHRbMV0gPSAwOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTgpCgl7CgkJaWYoJHZpY3RvaXJlID09ICdBQkNEJykKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCd2aWNOb3JtNDAwXzQ5OScpOwoJCQkkcmVzdWx0WzBdID0gMC41OwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJLy8kcmVzdWx0WzBdID0gR2V0UHJlZmVyZW5jZSgnZGVmQW5vcm00MDBfNDk5Jyk7CgkJCSRyZXN1bHRbMF0gPSAtMjA7CgkJCSRyZXN1bHRbMV0gPSAwOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTkpCgl7CgkJaWYoJHZpY3RvaXJlID09ICdBQkNEJykKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCd2aWNOb3JtUGx1czUwMCcpOwoJCQkkcmVzdWx0WzBdID0gMDsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ2RlZkFub3JtUGx1czUwMCcpOwoJCQkkcmVzdWx0WzBdID0gLTI5OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tMSkKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSA2OwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJJHJlc3VsdFswXSA9IC01OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tMikKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSA3OwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQkKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAtNC41OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tMykKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSA4OwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJJHJlc3VsdFswXSA9IC00OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tNCkKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAxMDsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAtMzsKCQkJJHJlc3VsdFsxXSA9IDA7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09LTUpCgl7CgkJaWYoJHZpY3RvaXJlID09ICdBQkNEJykKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkkcmVzdWx0WzBdID0gMTM7CgkJCSRyZXN1bHRbMV0gPSAxOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkkcmVzdWx0WzBdID0gLTI7CgkJCSRyZXN1bHRbMV0gPSAwOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS02KQoJewoJCWlmKCR2aWN0b2lyZSA9PSAnQUJDRCcpCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJJHJlc3VsdFswXSA9IDE3OwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJJHJlc3VsdFswXSA9IC0xOwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tNykKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAyMjsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAtMC41OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tOCkKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAyODsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAwOwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tOSkKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSA0MDsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAwOwoJCQkkcmVzdWx0WzFdID0gMDsKCQl9Cgl9Cn0KZWxzZWlmKCRsb2NhdXg9PSdCJyl7CglpZigkZWNhcnQgPT0xKQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSA2OwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJCSAKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTU7CgkJJHJlc3VsdFsxXSA9IDE7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PTIpCnsKCWlmKCR2aWN0b2lyZSA9PSAnV1hZWicpCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IDUuNTsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCQkKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTY7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PTMpCnsKCWlmKCR2aWN0b2lyZSA9PSAnV1hZWicpCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IDU7CgkJJHJlc3VsdFsxXSA9IDE7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9CgllbHNlCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IC03OwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT00KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSA0OwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQoJZWxzZQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAtODsKCQkkcmVzdWx0WzFdID0gMDsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KfQplbHNlaWYoJGVjYXJ0ID09NSkKewoJaWYoJHZpY3RvaXJlID09ICdXWFlaJykKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gMzsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTEwOwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT02KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAyOwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQoJZWxzZQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAtMTIuNTsKCQkkcmVzdWx0WzFdID0gMDsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KfQplbHNlaWYoJGVjYXJ0ID09NykKewoJaWYoJHZpY3RvaXJlID09ICdXWFlaJykKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gMTsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTE2OwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT04KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAwLjU7CgkJJHJlc3VsdFsxXSA9IDE7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9CgllbHNlCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IC0yMDsKCQkkcmVzdWx0WzFdID0gMDsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KfQplbHNlaWYoJGVjYXJ0ID09OSkKewoJaWYoJHZpY3RvaXJlID09ICdXWFlaJykKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gMDsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCQkKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTI5OwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT0tMSkKewoJaWYoJHZpY3RvaXJlID09ICdXWFlaJykKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gNjsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTU7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PS0yKQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSA3OwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJCQoJfQoJZWxzZQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAtNC41OwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT0tMykKewoJaWYoJHZpY3RvaXJlID09ICdXWFlaJykKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gODsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTQ7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PS00KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAxMDsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTM7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PS01KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAxMzsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTI7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PS02KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAxNzsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTE7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PS03KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAyMjsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTAuNTsKCQkkcmVzdWx0WzFdID0gMDsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KfQplbHNlaWYoJGVjYXJ0ID09LTgpCnsKCWlmKCR2aWN0b2lyZSA9PSAnV1hZWicpCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IDI4OwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQoJZWxzZQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAwOwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT0tOSkKewoJaWYoJHZpY3RvaXJlID09ICdXWFladycpCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IDQwOwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQoJZWxzZQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAwOwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CgkKfQp9CQoKCgpmdW5jdGlvbiBDYWxjdWxQb2ludHNJbmRpdnMoJGVjYXJ0LCR2aWN0b2lyZSkgewoKCQoJCWlmKCRlY2FydCA9PTEpCgl7CgkJaWYoICR2aWN0b2lyZSA9PSAxKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSA2OwkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQkgCgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTU7CgkJCQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTIpCgl7CgkJaWYoICR2aWN0b2lyZSA9PTEpCgkJewoJCQkKCQkJJHJlc3VsdCA9IDUuNTsKCQkJCgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQkJCgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTY7CgkJCQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTMpCgl7CgkJaWYoJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gNTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTc7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT00KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSA0OwoJCQkKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkKCQkJJHJlc3VsdCA9IC04OwoJCQkKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT01KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAzOwoJCQkKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkKCQkJJHJlc3VsdCA9IC0xMDsKCQkJCgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09NikKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMjsKCQkJCgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtMTIuNTsKCQkJCgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09NykKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTE2OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09OCkKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMC41OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtMjA7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT05KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAwOwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtMjk7CQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS0xKQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSA2OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtNTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydD09LTIpCgl7CgkJaWYoICR2aWN0b2lyZSA9PTEpCgkJewoJCQkKCQkJJHJlc3VsdCA9IDc7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQkKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtNC41OwkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tMykKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gODsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTQ7CgkJCQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS00KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAxMDsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTM7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tNSkKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMTM7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkKCQkJJHJlc3VsdCA9IC0yOwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09LTYpCgl7CgkJaWYoICR2aWN0b2lyZSA9PTEpCgkJewoJCQkKCQkJJHJlc3VsdCA9IDE3OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtMTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS03KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAyMjsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTAuNTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS04KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAyODsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMDsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS05KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSA0MDsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMDsKCQkJCgkJfQoJfQoKfQpmdW5jdGlvbiBwbGF5ZXJFeGlzdHMgKCR1c2VybmFtZSwkcHRzKXsKCSAkZGIgID0gY21zbXMoKS0+R2V0RGIoKTsKCSRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLgoJJ21vZHVsZV9waW5nX2pvdWV1cnMgV0hFUkUgdXNlcm5hbWUgPSA/JzsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoICR1c2VybmFtZSApKTsKCQoJLy8xZXJlIGNvbmRpdGlvbiA6IHBhcyBkZSBjb3JyZXNwb25kYW5jZSA6IGxlIGpvdWV1ciBuJ2V4aXN0ZSBwYXMgOiBvbiBsJ2luc8OocmUgCglpZigkZGJyZXN1bHQgICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKSB7CgkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIChpZCwgdXNlcm5hbWUsIHB0cykgVkFMVUVTICgnJywgPywgPykiOwoJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdXNlcm5hbWUsJHB0cykpOwoJfQoJLyogTGUgam91ZXVyIGV4aXN0ZSBkw6lqw6AgKi8KCS8qIG9uIHZhIHbDqXJpZmllciBzaSBsZSBub21icmUgZGUgcG9pbnRzIGNvcnJlc3BvbmQgb3UgcGFzICovCglpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkgewoJCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIHVzZXJuYW1lID0gPyBBTkQgcHRzID0/IjsKCQkkZGJyZXRvdXIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdXNlcm5hbWUsJHB0cykpOwoJLyogTGUgam91ZXVyIGV4aXN0ZSBldCBsZXMgcG9pbnRzIGNvcnJlc3BvbmRlbnQgb24gbmUgZmFpdCByaWVuKi8JCgkJaWYoJGRicmV0b3VyICYmICRkYnJldG91ci0+UmVjb3JkQ291bnQoKSA+IDApewoJCQl9CgkJCWVsc2V7CgkJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFNFVCBwdHMgPSA/IFdIRVJFIHVzZXJuYW1lID0gPyI7CgkJCQkkcmVzdWx0MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRwdHMsICR1c2VybmFtZSkpOwoJCQl9CgkJCS8vIGluc2NyaXB0aW9uIGRzIGxhIHRhYmxlIGRlcyBjbGFzc2VtZW50cyAKCQkJJG1vaXNfY291cmFudCA9IGRhdGUoIm4iKTsKCQkJJHNhaXNvbiA9ICcyMDEzLTIwMTQnOwoJCS8vCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2x0cyAoaWQsIHVzZXJuYW1lLCBwdHMsIG1vaXMsc2Fpc29uKSBWQUxVRVMgKCcnLD8sPyw/LD8pIjsKCQkvLwkkcmVzdWx0MyA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR1c2VybmFtZSwkcHRzLCRtb2lzX2NvdXJhbnQsICRzYWlzb24pKTsKCQl9Cgl9CgoKZnVuY3Rpb24gY29tcGV0ICgkY29tcGV0aXRpb24pewoJJGRiICA9IGNtc21zKCktPkdldERiKCk7CiRxdWVyeSA9IlNFTEVDVCBjb2VmZmljaWVudCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jb21wZXRpdGlvbnMgV0hFUkUgY29kZV9jb21wZXQgPSA/IjsKJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNvbXBldGl0aW9uKSk7CmlmICgkZGJyZXRvdXIgJiYgJGRicmV0b3VyLT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmV0b3VyLT5GZXRjaFJvdygpKQogICAgICB7CgkkY29lZmYgPSAkcm93Wydjb2VmZmljaWVudCddOwoJcmV0dXJuICRjb2VmZjsKCX0KCQp9Cn0KCmZ1bmN0aW9uIENoZXJjaGVQdHMgKCRqb3VldXIpewoJJGRiICA9IGNtc21zKCktPkdldERiKCk7CgkkcXVlcnkgPSAiU0VMRUNUIHB0cyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIHVzZXJuYW1lID0gPyI7CQoJJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGpvdWV1cikpOwoJaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQogIAkJewogICAgCQkJd2hpbGUgKCRyb3c9ICRkYnJldG91ci0+RmV0Y2hSb3coKSkKICAgICAgCQkJewoJCQkJJHB0cyA9ICRyb3dbJ3B0cyddOwoJCQkJcmV0dXJuICRwdHM7CgkJCX0KCQoJCX0KfQoKZnVuY3Rpb24gbmJqb3VldXJzICgkY29tcGV0aXRpb24pewoJJGRiICA9IGNtc21zKCktPkdldERiKCk7CiRxdWVyeSA9IlNFTEVDVCBqb3VldXJzLCBwYXJ0aWVzIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbXBldGl0aW9ucyBXSEVSRSBjb2RlX2NvbXBldCA9ID8iOwokZGJyZXRvdXIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkY29tcGV0aXRpb24pKTsKaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXRvdXItPkZldGNoUm93KCkpCiAgICAgIHsKCSRyZXN1bHRbXSA9ICRyb3dbJ2pvdWV1cnMnXTsKCSRyZXN1bHRbXSA9ICRyb3dbJ3BhcnRpZXMnXTsKCXJldHVybiAkcmVzdWx0OwoJCgl9CgkKfQp9CgpmdW5jdGlvbiBkcm9wZG93biAoJGNvbXBldGl0aW9uKXsKCSRkYiAgPSBjbXNtcygpLT5HZXREYigpOwokcXVlcnkgPSJTRUxFQ1Qgam91ZXVycyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jb21wZXRpdGlvbnMgV0hFUkUgY29kZV9jb21wZXQgPSA/IjsKJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNvbXBldGl0aW9uKSk7CmlmICgkZGJyZXRvdXIgJiYgJGRicmV0b3VyLT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmV0b3VyLT5GZXRjaFJvdygpKQogICAgICB7Cgkkam91ZXVycyA9ICRyb3dbJ2pvdWV1cnMnXTsKCXJldHVybiAkam91ZXVyczsKCX0KCQp9Cn0KCmZ1bmN0aW9uIHJhbmRvbSgkY2FyKSB7CiRzdHJpbmcgPSAiIjsKJGNoYWluZSA9ICJhYmNkZWZnaGlqa2xtbnBxcnN0dXZ3eHkiOwpzcmFuZCgoZG91YmxlKW1pY3JvdGltZSgpKjEwMDAwMDApOwpmb3IoJGk9MDsgJGk8JGNhcjsgJGkrKykgewokc3RyaW5nIC49ICRjaGFpbmVbcmFuZCgpJXN0cmxlbigkY2hhaW5lKV07Cn0KcmV0dXJuICRzdHJpbmc7Cn0KCmZ1bmN0aW9uIGNvZWZmICgkdHlwZUNvbXBldGl0aW9uKQp7CgkkZGIgID0gY21zbXMoKS0+R2V0RGIoKTsKCS8qCglpZihzdWJzdHJfY291bnQoJHR5cGVDb21wZXRpdGlvbiwnLScpPjApCgl7CgkJJHR5cGVfaW50ZXIgPSBleHBsb2RlKCctJywkdHlwZUNvbXBldGl0aW9uLDIpOwoJCSR0eXBlID0gJHR5cGVfaW50ZXJbMF07Cgl9CgkqLwoJCS8vCSR0eXBlID0gJHR5cGVDb21wZXRpdGlvbjsKCQoKJHF1ZXJ5ID0iU0VMRUNUIGNvZWZmaWNpZW50IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIFdIRVJFIG5hbWUgPSA/IjsKJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHR5cGVDb21wZXRpdGlvbikpOwoKCWlmICgkZGJyZXRvdXIgJiYgJGRicmV0b3VyLT5SZWNvcmRDb3VudCgpID4gMCkKICAJewogICAgCQl3aGlsZSAoJHJvdz0gJGRicmV0b3VyLT5GZXRjaFJvdygpKQogICAgICAJCXsKCQkJJGNvZWZmID0gJHJvd1snY29lZmZpY2llbnQnXTsKCQkJcmV0dXJuICRjb2VmZjsKCQl9CgkKCX0KCWVsc2UKCXsKCQkkY29lZmYgPSAwOwoJCXJldHVybiAkY29lZmY7CgkJLy9lY2hvICJjb2VmZmljaWVudCBpbnRyb3V2YWJsZSAhIjsKCX0KfQoKZnVuY3Rpb24gY29lZmZfb2xkICgkY2xlKXsKCSRkYiAgPSBjbXNtcygpLT5HZXREYigpOwokcXVlcnkgPSJTRUxFQ1QgY29lZmZpY2llbnQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY29tcGV0aXRpb25zIEFTIGNvbXAsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZW5jb250cmVzIEFTIHJlbiBXSEVSRSBjb21wLmNvZGVfY29tcGV0ID0gcmVuLnR5cGVfY29tcGV0IEFORCByZW4uY2xlID0gID8iOwokZGJyZXRvdXIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkY2xlKSk7CmlmICgkZGJyZXRvdXIgJiYgJGRicmV0b3VyLT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmV0b3VyLT5GZXRjaFJvdygpKQogICAgICB7CgkkY29lZmYgPSAkcm93Wydjb2VmZmljaWVudCddOwoJcmV0dXJuICRjb2VmZjsKCX0KCQp9CmVsc2V7CgllY2hvICJjb2VmZmljaWVudCBpbnRyb3V2YWJsZSAhIjsKfQkJCmZ1bmN0aW9uIGRhdGV2ZXJzZnIgKCRkYXRlLCRkZWxpbWl0ZXIpewkgICAKCQoJJGRhdGVhcnIgPSBleHBsb2RlKCRkZWxpbWl0ZXIsICRkYXRlKTsKCSRkYXRlZnIgPSAkZGF0ZWFyclsyXSAuICctJyAuICRkYXRlYXJyWzFdIC4gJy0nIC4gJGRhdGVhcnJbMF07CglyZXR1cm4gJGRhdGVmcjsKCX0KfQpmdW5jdGlvbiBtb2lzX2ZyYW5jYWlzKCRtb2lzLCRsb25ndWV1cil7CglpZighaXNzZXQoJGxvbmd1ZXVyKSB8fCAkbG9uZ3VldXIgPT0nJyl7CgkJJG1vbnRocyA9IGFycmF5KCJKYW52aWVyIiwgIkbDqXZyaWVyIiwgIk1hcnMiLCAiQXZyaWwiLCAiTWFpIiwgIkp1aW4iLCAianVpbGxldCIsICJBb3V0IiwgIlNlcHRlbWJyZSIsICJPY3RvYnJlIiwgIk5vdmVtYnJlIiwgImTDqWNlbWJyZSIpOwoJfQoJZWxzZQoJewoJCSRtb250aHMgPSBhcnJheSgiSmFuIiwgIkbDqXYiLCAiTWFyIiwgIkF2ciIsICJNYWkiLCAiSnVpbiIsICJqdWlsIiwgIkFvdSIsICJTZXAiLCAiT2N0IiwgIk5vdiIsICJkw6ljIik7Cgl9CgkkbW9udGhfdG9fZGlzcGxheSA9ICRtb2lzLTE7CgkkbW9udGhfZnJhbmNhaXMgPSAkbW9udGhzWyIkbW9udGhfdG9fZGlzcGxheSJdOwoJcmV0dXJuICRtb250aF9mcmFuY2FpczsKfQpmdW5jdGlvbiBnZXRfbmFtZSgkbm9tKXsKCSRleHBsb3Npb24gPSBleHBsb2RlKCcgJywkbm9tKTsKCSRjb21wdGV1ciA9IGNvdW50KCRleHBsb3Npb24pOwoJJG5hbWUgPSBhcnJheSgpOwoJJHByZW5vbSA9IGFycmF5KCk7CgkKCSRpID0wOwoJZm9yZWFjaCAoJGV4cGxvc2lvbiBhcyAkdGVzdGNhc2UpIHsKCSRpKys7CQoJICBpZiAoY3R5cGVfdXBwZXIoJHRlc3RjYXNlKSkgewoJICAgICRuYW1lWyRpXSA9ICR0ZXN0Y2FzZTsKCQkvL2VjaG8gIkxhIGNoYcOubmUiLiRpLiIgJHRlc3RjYXNlIG5lIGNvbnRpZW50IHF1ZSBkZXMgbWFqdXNjdWxlcy5cbiI7CgkgIH0gZWxzZSB7CgkgICAvLyBlY2hvICJMYSBjaGHDrm5lIi4kaS4iICR0ZXN0Y2FzZSBuZSBjb250aWVudCBwYXMgcXVlIGRlcyBtYWp1c2N1bGVzLlxuIjsKCQkkcHJlbm9tWyRpXSA9ICR0ZXN0Y2FzZTsKCSAgfQoJfQoJCgkkbm9tX2ZpbmFsID0gaW1wbG9kZSgnICcsJG5hbWUpOwoJJHByZW5vbV9maW5hbCA9IGltcGxvZGUoJyAnLCRwcmVub20pOwoJJHJlc3VsdFswXSA9ICRub21fZmluYWw7CgkkcmVzdWx0WzFdID0gJHByZW5vbV9maW5hbDsKCXJldHVybiAkcmVzdWx0OwoJCn0KCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAAAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAYAAAAAAAAAABAAAAgAAAAAEAAAEAAAAAAQAAAgAAAAABAAAEAAAAAAIAAAgAAAAYAAAAAAAAAAABAAAgAAAAAAEAAEAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/images/calendrier.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4QCARXhpZgAATU0AKgAAAAgABAESAAMAAAABAAEAAAEaAAUAAAABAAAAPgEbAAUAAAABAAAARodpAAQAAAABAAAATgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAABCgAwAEAAAAAQAAABAAAAAA/+0AOFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAAAAOEJJTQQlAAAAAAAQ1B2M2Y8AsgTpgAmY7PhCfv/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23////AABEIABAAEAMBEgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/3QAEAAL/2gAMAwEAAhEDEQA/APoT4x/Fv4/2Hjzxlf8Ag/wfPqGi+F7qaz0WVL3T7bSb8y21vk6j59yk2YZTIUMYUNuAPTdXonimXW7TWfElhDpGumCW9vpCYLW68icyLaGBgY7aVHHySjdkFCMbW3ZUA8s+EXxs/aC1Txz4dn8ZeE4rJ769t9K1+K1v9Pl0rT7dbm4jFxBFFey3AnkkaGB9wKqYm+g9T0KbVLzXFjl0PW4/tOq27xM9jdeWqLqjXG52e1iWMCHaTljg5QbsB2AP/9k=]]></data>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQAAAQABAAD/2wCEAAkGBxIHEhQTBxQWFhQXGBkbGRgYGBkcGhsdGhsaHiAaFxkaHCggIxslIBwdIjEiJikrLi4uHB81ODQsNyouMCsBCgoKDg0OGxAQGzUkICQtNCwuLDc0LCw0NDcsLCwsLDQtOCw0LzQ3NCwsLCwsNC80Lyw0LCwsNiw0LCw2LCwvLP/AABEIANcA6wMBEQACEQEDEQH/xAAcAAEAAwADAQEAAAAAAAAAAAAABQYHAQMEAgj/xABHEAABAwIEAwUDCQQIBQUAAAABAAIDBBEFBiExEkFRBxMiYXEyQoEUFSNSYnKRobEWM0OCJDRTorLB0eEXY5Kz8AglNZOj/8QAGwEBAAMBAQEBAAAAAAAAAAAAAAQFBgMCBwH/xAA1EQEAAQMBAwkJAAICAwAAAAAAAQIDBBEFITESEyJBUWGhsdEGFDJxgZHB4fAz8UJSI0Ny/9oADAMBAAIRAxEAPwDcUBAQEBAQEBAQEBBXsyZ2oMtaYvUMa/8Asx4pP+htyPU2CDMsb7fWgluAUpPR8zrf/my/+JH7Ea7oVKu7Ssdxa/dSd008o42MHwc8F35rjVkW6eMrGzsfNvfDbn67vPRDTzYpXf1usmPk6eQ/kDZcZzrcdqxo9l82rjNMfWfxEvC/AppTeWW56kuP5lePf6exIj2Tv9dyPF30+H1dH/UqlzPuve39F+xn0dkvyr2TyNOjXT4+kpihzpjmA2MdS+Vo3D7Sg+R4xx29CF2oyrde7XRXZWwc3HjlTTyo7Y3+HHwXnK/bwyUhmaIODl3sNy31dGfEB6F3opCmbBhmJQ4tG2XDJGyRu2cwgj09RzG4QepAQEBAQEBAQEBAQEBAQEBAQEBBCZqzXSZUi7zGZA29+Fg1e+3Jjdz67DmQgwfNna5X5mcYsABp4T9Q/SuHV0nu+jbW6lea66aI1ql3x8a7kV8i1TrKp0uXuM8Ve4knUgf5uKr7md1UQ1uF7KxuqyavpH5n0+6ZpqOOl/cNA8+f47qFXdrr+KWnxsHHxo0tURHf1/fi714SxAQEBB4MQwqOu1cLO+sN/j1XezkV2/l2KjaOxsfMiZmOTV/2j89v9vfeQs2T5AqwJyTTvIErLnhLTp3jB9dv52sre1dpuU6w+eZ2Ddw7s27kfKeqY7n6oikEzQ6IgtIBBGxB2I8l0Q32gICAgICAgICAgICAgICAgIMz7TO1eLK/FT4PwzVWodr4Ivv23f8AYG3MjYhhjoanMspqMcke5zt3O9o+TRs1vQAW6BQ7+XFG6nfLR7K9n7mVpcvdGjxn5d3em6amZSjhgAA/83VXXXVXOtUt3jYtnGo5FqnSP7i7V5SBAQEBAQEBBGZgpRURE82aj/P8v0UnEuTTciO1R+0GHTfw6qv+VG+Pz4eT9AdkGIHEsIpHSbtYY/hE5zG/3WhXL5quSAgICAgICAgICAgICAgICDFe1ztWNMX0WVn+PVss7T7PVkRHv8i7ly11B+xGu6GWYPgvD9JX6u3DTy83efkqzJy9ejR9232N7PxRpfyY39VPZ8+/u6vnwnlAa4QEBAQEBAQEBB5sSNoZL/Ud+hXSz/kp+cIO05iMO7r/ANKvKWydgoIwiLi/tJbenF/rdXz5O0RAQEBAQEBAQEBAQEBAQEGN9tHaUcP4qDLz/pTpNK06xg/w2Ee+eZ90abnwiI13QyrA8H+TWfUjx8h9X/dVWTk8vo08G+2HsOMeIv346fVHZ+/JNKE1AgICAgICAgICAgjMee57GxU4JfK4Na0bnUaD42HxUvCo5VzXsZ32lyotYnNxxrnT6Rvn8R9W50eYsO7NaeloMXnDZGxAuDWPdqblzncANgXFxHNW752umF4nBi8YlwuVksZ95jg4ehtsfJB60BAQEBAQEBAQEBAQEGfdr+e/2Rp+7oCPlcwIZz4G7GQj8m33PWxCDAcBw4yHv6y5cTcX3JPvG+5P+6rcvI/9dP1bT2d2PGkZd6P/AJj8+n37FgVe2QgICAgICAgICAgIJDs6p46iqnxLFB/RcPYXDo6XXhDb6E7ka7931V1i2ubo38ZfMtuZ/veVM0z0ad0fmfrPho8op/n3vajG2h0tQ8yOv7oPstadwGtsB+C2eBs637tpdp1mrf6MBm59fvGtudIp3eqOpaatyjL8oyvK8fWaOYHJ7dnjflfp1VfmbGrt9K10o7Ov9p+LtWivo3d09vV+mx9nXatBmjhgxQCCr24dmSH/AJZJuHfYOvQnW1JwW7R0BAQEBAQEBAQEBB0V1WzD43y1Z4WRtc5x6NaLk/gEH5NxXEpM7V8tTW34Sbht9GsGjIx8N+p4jzUfJvc3Ru4yuNibO98yNKvhp3z+I+vlqmQLbKlfTYiIjSHKP0QEBAQEBAQEBAQR+Kzu8MNEC6aUhjGje7jbTzJNh6qViWeXVrPCFBt/aXutjm6J6de6O6OufxH6WfMULcMjp8Ew4gthtNXPGz5TYiO/MDQa8gzm0rTbOxfeL0RPCN8/3e+V5+TzFmZjjO6P7ufS2zIiCFxzL7MR8cHgl5OGx+9b9d1V52zKMjpU7qu3t+fqscPaFdjo1b6fL5ei59mfam+ke2hzq4hws2Odx/BszuY6Sfj1WTu2q7VU0VxpMNPbuU3KYqonWG2rm9iAgICAgICAgIM27fsVOH4WY4jYzyMjNvqi7z8PCB8UGL5fpvk8LTzd4j8dvyVNl3OVcnu3Ppfs/iRYwqZ66ulP14eCSUZdiAgICAgICAgICDpqqhtK0vl2H/lgvVFE11RTCPlZNvGtVXbnCP7T6pDKo/ZyB2M4w28z7x0EJ14nkEGXh+o0aDrrzLSr2za5ERRS+V52bXlXqr1z/Udn0/bjB6J1K1zqs8U0ri+Vx3LnEk3PxPxutxs/DjGtaT8U75/u5h87K94uaxwjh/d6QU9CEBBG43hDMWZZ2jx7LunkfJQs3CoyaNJ3THCUvDy6sevWOHXC1dj/AGgvontwzM7rEENgkcdukTj0Pun4dFjLtqq1XNFcaTDWWrlNymK6Z3S25c3QQEBAQEBAQEGOf+pRpNNSEbCVwPqWafoUGfwCzW8O1h+iz1XxS+wWIiLVMRw0jydi/HYQEBAQEBAQEBBw5waLu0ASI13PNVUUxNUzpEO/KmXBmx76rGXGLDKa7pHm47wt14W87nnbUA2GpVzjWObp1njL5ttra05t3k0fBTw7++fx2R85c41jjcam+XV7e6pomiOkg0HAwaAho04j5foAVpdn2KLFHvV/dH/GP7w+7F516u9X7tZ39v8Aef2ejC8uY3mXxYbAKeI+y+azbj0cC436htlzv7av1z/4+jH3nxdLOybNMdPpT9nONZOx7LzDLM1lQwC7u6s+3q0Na+3mAbLlRtfKpnfOvziPxo6V7Lxqo3Rp9fXVHYFmBmK+F44JByvofun/ACV9g7SoyejMaVdnopczZ9eP0o309vqmlZq8QQmZsH+cWccA+lYNPMfV/wBP91V7TwYyKOVT8UePd6LHZ2ZNivk1fDPh3ta7Gc9HNFOYMSdeqgADr7yM2EnqNnedj7yx7VNHQEBAQEBAQEFD7bMFOM4VMYhd8BEw9GXDv7jnH4IITs+ytTZswmmmxBnBNwuZ3kfhJEb3MBcNWl1mi5Iueqj3MW3Xv00lcYe3czGiKYq5VPZO/wDfihK7INVHM+KjY93DctLm8LXtBGrJASy+vsuc129mlQq8GuPh3tNi+1GPc3XqZont4x6+CuYhh02GO4cQjfGftAi/pfceiiVUVUzpMNDZybN6nlW6omO6XlXl3EBAQEBAQEE1gGTXZgBnxp3yfDo/E+Rx4TLb3Y77M6v57C/KzxMfk9Orj1MJ7QbZ52ZxrM9GPintns+UeM+Pzj+PDNnBT4QzucKgNo4wOHvi33nDfgG9uup19nT7M2dz885X8MeP6/0wG0c7mY5uj4p8P21nKGToMOjilrYmOqLcQc5oJjuPZZf2SBuRv6WXDaWXz93SPhp3R6/V2wMXmLe/4p3ytyrk4QYd21ZCGH/+6ZfbwFrgZ2NGlyf3rR66OHO9/rX927lVuqK6eMPNdEV0zTVwlB0VQKuNj27OaD+PJbyxdi7bprjrjVir1ubdc0T1S711cxBXjWvybXw11APDxeNo2IOj2n7zbkeYvyWU2xic3c52nhV5/vi0uysrnLfN1cafL9P1DR1LK2NklK4OY9oc1w2LXC4I9QVTLZ3ICAgICAgIPl7BICJACCLEHYg8igofZ9GcsVFRhM9+BpdPSu18UL3eJl/rMebHmbk7IL8g8eL4XDjUL4MUYJInizmn9QRqCDqCNQUGbV3YhTDiODVVRCd2hxa9g8uGwJHqSvFVuir4oSrGbkWP8dcx9d324M6zFl7EspOPzxD3sA/jxAlturrez6OA52uodzBpnfRuaHC9qL1MxTkRyo7Y3T6T4PDTV0dV+4cD5c/wOqgV2a6PihrsbaONk/4q4nu6/tO96VzTRAQSWC4BU4262GxOcObtmD1cdPhuulu1XX8MIeXn4+LTrdqiO7r+y2VOGYbkBglzdI2eci7Kdg4r/wAh3G/ifZvldWNnDpp31b5YvaXtJdvxNFjo09vXPp9PupuNY3V5+e1+LfQ0jf3dOwkA9C7a58yBp7IFytNs/ZVV3S5d3U9nb+mDztpU2taLe+rt7P29tPLFQFjqmzYmFpdYaBoIvYDy5BaS9NNqzVMboiPwoLMTcvU675mW/wBBWR4jGyWicHRyNDmuF9WuFwddVgm1d6Agg89OY3Dq35T7Pyaa/wD9btvO6D8/ZTJNLHxfa/xFbPZWvulGvf5yyW09PeatO7yhLqxQRB4cZovnCF7OZF2+o1H+nxUXNx+fs1UdfV8+pIxL/M3qa/v8mo9hOLHE8KjbIbuge+LXoLOb8A14HwWFbNoaAgICAgICAg8VRJTieJtQWd+Q/ugbcfDYcfDz4dBfloPJB7UBAQEFZxrs/wAMxsl1fSR8Z1L2AxuJ6l0ZBJ9boIFnZBRxOvBPUhv1C9jgPQuZxfmo9zFt19Wi3w9uZmNO6rlR2Tv/AH4ulvZNEwkzVTuDpwAEDzcXEfko8YEa/EuKva25yd1qNfn+vy8dQcvZWNqmQVMw2Y0984noWR+AfzWUi1hUa6RGs/dVZXtHmXInWuKI7t3jO/xQ+N9oeIYmO6y3E2ih2D38LpbfZYPCz01PQhXmPse/Xxjkx3+n+mUyNr2YmZ1mqf7rn9qjS4ExjzLXOdPMTcvkJJJ66319bq8xtk2LPSnpT3+n+1NkbTvXd0dGO71/0llaK51VUAqWOZJs4EH4rndtxcomieExo9265t1xXHGN6W7Ke0EZbPzbml3DG0nuZney0E+y88mHcO5XsbDbC5FiqxcmirqbOxepvURXT1t0a4OF26g7FcXVygyTt3zC58bMMwvWWaz5be7GDoCeXE4X9G+YXWzZrvVxRRG9zvXqLVE11zuU2hphRxsjZs0Aevmt1YtRat00R1Qxl65N25Nc9cu9dXMQEFr7AX2GIsb7LagEfEOB/wAIWDy4iL9cR2z5tpizM2aJnsjya2o7uICAgICAgh815hiyzAZqoFxJDY426vlkd7MbBuST+Vygi8mZdlpHPrcxEPrpx4zu2Fm7YIujW87bnmdyFsQEBBWszZ8w/LB4cWqGiT+zaC9/xa0G381kGeY72+wsaRgFM9zuTpiGtHnwMJJHldqCiU+bsUzdK/5VXSxNbrwwkxjU7AMI0HU3KsNn4UZVcxM6RCDnZnu1MTEa6vU/CPlX/wAnPPOOksriPwur21sXHp31az/dymubXv1bqdI/u97aalZSi1M1rR5ABWduzbtxpREQrrl2u5Otc6u5dHgQEBBHYzhDMWbaXRw9lw3H+o8lDzMK3k06Vbp6pSsTLrx6taeHXD4y3j2NZStHhjxLCNo5CHRj04iHNHk0gLN17HyqZ0iNe/WPy0FG1ceqNZnT6T+Gjv7S6qaMcMMcTyPF4i+x+zsP1Vjj7Do0ibszr2QgX9sVazFuN3aps7jUSyTT+KWQ3e87usLC/kBoBsOSuLGNasRpbp0VV7IuXp1rnVwu7iICDqqZxTMc+XZoJPwXi7ci3RNdXCN73bom5VFMcZXT/wBO1O75FUzyjWWoOvXha3X0u4j4FYCuqaqpqnr3ttTTFNMUx1NXXl6EBAQEBB01lUyhjfLWODGMaXOcdgALklBScq0j821AxXF2lsTQRQwu91h3qHj677adBbfQoL4gICDOu1jPT8Aayky+C+un0aGjiMbTpxBvN5OjR6nlYhE5A7H46W1TnL6eoceIxOPExpOp7w/xH9b+G9/a3QaPiuX6bFad1NVxM7lzbcIaBw9Cyw0cORGyD8r1tBLkbEHwV/uO4SbaPjds8DoRZ1uospmBk+73or6uE/L+3oubj8/Zmnr4x8/7cuoN9luInVjuDlAQEBAQEBAQEBAQeesrY6EcVU4NHnufQblcb1+3ZjlXJ0dbVm5dnSiNUK2hrs8OEWAU8hhJ1kIIZod3vPhAG/DqdNidFl9o7TnI6FG6nzaPB2fFjp176vJ+kMoYAzLFHDS05uI26u+s4kuc63K7iTbkLDkqlZphAQEBAQEGdVcv/EarNPT64ZSyDv3DapmbqIWnnG02Ljz0+yUGiNaGizdAEHKAg8mLVT6KF76WN0rwPBG3dzjoBc6AXIuToBcnZBV8k5K+aJJK3HHCbEJiXSSe7Hf+HFfZoHhv0FtBoguaAgzLtwyScxUwqcObeopwdANZI9y0dS32gPvAalBj+TsX79vcTnxNHg829PUfp6LT7HzeXTzNfGOHy/Xl8md2ricirnqeE8fn+/NZ1eqYQEBAQEBAQfEsrYReYho6kgD8SvNddNEa1TpD1TRVVOlMay8tHWuxR3BgMMtS/Y9208I+886Aeaq7+2Me3up6U9396rGzsq/Xvq6MLbhPZpiOJ2djE0dIw28EY7yXzBcfAD5i6qL+2b9zdR0Y8VpZ2TYo31dKV1wLszw3ByHdz38un0lQe8dcc7O8IPmAFVVV1VzrVOsrKmmmmNKY0hboXNcPoSLC402HDoRp0It8F5en2gICAgICDO88Y7NjtR80ZUdaVw/pU42gi5gEfxCDbyuBubtC64Fg8OAwR0+Gt4Y4xYdT1c483E6k9Sg96AgICAgICAgwntb7MZKOR2IZUabX45YmbsO5kjA3bzLeW409n1RXVRVFVM6TDzVTFUTTVG6VRwDMbcQsyps2T8nenn5LWYG1KL/Qr3Vefy9GZzdnVWenRvp8v7tTytlYICAgIPuCF1QQ2Bpc47BoJJ9AF5qqppjWqdIeqaaqp0pjVNUuRazFH922WGmIaHO4vHMGuJDXCEEWBsdXEbHRUWdteKejYnXv9P6Vzh7K16V6Pp/fpasH7I8Po3B+J95VyDW87rtHpG2zbeRus9cu13Z1rnVeW7VFuNKI0XVsTMMitRxBrGDRkbQLAfVY0chyHw6Lm6O6CZtQ1r4CHNcAQ4G4IOxB6IITFat+Iz/I8OJbZodUStNjGx1+GOMjaV9jr7rQToS1BN08LaZrWU4DWtADQNAANgAg7EBAQEBBRs+5rmp3tw/KYElfMN/dgYd5ZDsD0B9TfQOCVyLlCLKMBZETJNIeKeZ3tSP11JOvCLmw8ydSSSFkQEBAQEBAQEBAQZV2kdkEWPcVRl3hhqDcuZtHIeunsvPUaE77koMhbi1VlyQ0+Y4nhzeThZ4HUHZzehvr1KusPbFdvo3elHb1/tUZeyqLnStbp7Or9LJRV0de3ipHBw/Meo3C0ljIt3qeVbnVQXrFyzOlcaPSuzk8800l+Cggmnk+rFG52/VwFgFXZW07OPM08auyPyn42zr16OVwjtTmDdnuLYyQcRMdFFzGkkpHoPCPiQR0VHe2zfr+Dox9/NcWdk2KPi6Xh5LjjOQvm3DZossyTfKgWytldITI98ZuGgggC4u0AWFyLqsuXrl2da6pn5rC3aotxpREQpVTi1RmikixjATw4lQju6lgHtxi5uW827u4fN43aFzdGqZEzbFnGlbPS+Fw8Mkd7ljxuPMHcHmDyNwAsSCtYlx5Zc6oo2ufSuJdPC0XdGTqZ4W9Du+Mb6vHi4g8Ocg1LcTpnVcWvymaaS/MtDzHGD5iONg+BQWRAQEBAQVnNuYJaMtpcvsEtdKLsafYiZexnnPKMcubjoLoOzJ2VI8tMcXOMtTKeKed3tyOP6MHJvL11QWJAQEBAQEBAQEBAQEEVmDLtLmOPu8ahbI3kSPE2/Njh4mn0KDKMc7CTC4yZUqiw8mTX09JWC9vItPqvVFdVE8qmdJea6Ka40qjWHRgtBi+T3E4vhbK5o2fG4OePutF/wDtg+amXNpZNynkzX+PJFt4GPRVyop/PmucXa1QwWGNxVVG7a00DwPhw3P5BQUxM0faHhVZ+5roB99/d/8AcsgnqSvhrRejljkHVj2u/QoKpDlB2DYp8twKwiqA5tVFsLm5EzOV+IC4+04jcoKZmDCZOyuvGI4I0nD5nBtRE3aPiO4G1r6tPI3boHC4bFSVLKxjJKVwcx7Q5rhsWuFwR5EIO1BW8uRNwaoqKNg4WEmogGw4JD9Ixo+xLckDQCWMILIgICAgIIfLcdM9r5sKe2UyvJklBDnOcNLOPLhHhDNOEaWQTCAgICAgICAgICAgICAgICD5ewPFngEHkUEDiWSMNxS/y2jgJO7gwNd/1Ms780FMxnsOoKnxYLJNTP5WdxsB9HHi/vIKhi1HmPs5vJBUPqKZupdcysA+2x93MHUjQdUGkdn2d6ftEp5I62NrZQ3hmhOrXNdpxNvuw7Ebg6HkSHGU5jlGp+asQJML+J9DI434mbup3E+/He46tI20CC9oILNdO9rI6rDwXS0zi8NG8kZFpYh5ubq0fXZH0QS9HVMro2S0jg5j2hzXDYtcLgj4IO5AQEBBl2dssVeW534pkL23a1NNa7JeZeGDc7kga6kjUm4T+Qe0Wkzk0NhPdVAHihcdfMxn3m+mo5gILM7FIWTimkfaZzONrSCOJoJB4CRZxHMAkgEE6EIPYgICAgICAgICAgICAgICAgIOCOLRyDA+0HAZOzOvixPLDeGne7xRjRjXH2oiOUbxcjoQbWs1BpmK00PaNhscuFP4Xnhmp5PeimZte17EOBa7425FBIZHzAcwUwdWN4KiNxiqI9iyVmjtOh9oeRQWFBV8LP7N1RpJP6vUOfJTHkx/tSU9+V7mRg6d4PdCC0ICAgICDMu0Dsnjxx/yrLbhTVYPEbXax7t+K7dWSX14hvzFzdBD4RnDE8ulkXaHQSzMjN2VLIw9zCLjiLm+A6G1wQ6173JQadl/M1JmNvFg07JLbtBs9v3mGzh8Qgl0BAQEBAQEBAQEBAQEBAQEBB4MewiLHqeSnxFvFHI2x6jo4faBsQeoCDFey7FpchYlNhOOm0cj7RuOjeM+w9v2ZG2HrwjTVBomYGDKtazEYvDTz8ENZsADe0NQfuk8BPRwQXVBH47hLMahdFOS3UOY9vtRvaQ5kjDyc1wBH4bIPFlfGH14fDioDKuA8MrRs4G/DNH/AMuQC46HiadWoJ1AQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBlvbrk/54phW0A+nphd1t3RA3PxZq4eXF1QTPZxmGPP2G8OJ2fIGmGoafe0txfzt1058QGyCVyVUviZJRYg4umpHBnEd5IiLwynqSzwuP12PQWRBAZmwmSVzKvBgPlcAIaCbCWM2LoJD0dYEH3XAHa9w9+BYvHjkLZqS4BuHMcLPY4aOjkbye03BHkgkEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQcOaHCztQeSDAo79kuOW2oKr8Axx/C8Tz5ng+8g2GuwVzq2CtoHAODDDM07SRElzSPtsfqOoLggnUBBV8apn4BMa7DWl0bv63C0XLmgaVEbR/FYNHD32ebWoLHTVDKtjZKZwcx4Dmuabggi4II3BCDtQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBBSO13Kn7U0DxTtvPDeSLqbDxMH3hy6hqDw9i+Z/2nw/uatx76nAifrZxYR4H33vYFt97tJ5oLJkvFn10ckOJG9TSvMMx24rexLbpIyz/AFJHJBYUBBV4ojlOW0Y/oMz725U0jz+UEjj/ACOP1XeALQgICAgICAgICAgICAgICAgICAgICAgICAgwjF2/8MMfZPH4aOrvxdAHkcY/kfwv+6QEF6zQ85YxKmxCM2p6nhpqroCbmGU+hu0uOwsOaC+oCD5ljbM0tlAc0gggi4IOhBB3BQeKCikpWhlLIOBujeNpc4DkC7jF7bAnWwFyTckPegICAgICAgICAgICAgICAgICAgICAgICCn9quVf2roJI4ReaP6SHqXNB8H8wu3pcg8kFV7McWiz/AIVLhuMm8sbO7df2iz+HIL+8wgD1a0ndBoWUvlDaWNmNC08YMbzuH8B4RIDzD2gO8uIjcIIzNHaBRZdd3T3OmqSbNp4BxyE9CBo0+RN+gKDvyxPiOJHvseZHTRkHgpmnjk196aXbzDWgb69EFkQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEH577UsBqckYiMRyy7u2TOvdpb4ZHe0wtOhY72tQRqdrBBZcNwjMOc2N+fqttJTO3EPD3jx5GM6Ai41d/KUF8yjkiiyk22ExeMizpX+KR3q7kPJoA8kFjQEH/2Q==]]></data>
	</file>
	<file>
	  <filename>/images/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/images/podium.jpg</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[/9j/4AAQSkZJRgABAQEASABIAAD/4QCMRXhpZgAATU0AKgAAAAgABQESAAMAAAABAAEAAAEaAAUAAAABAAAASgEbAAUAAAABAAAAUgEoAAMAAAABAAIAAIdpAAQAAAABAAAAWgAAAAAAAABIAAAAAQAAAEgAAAABAAOgAQADAAAAAQABAACgAgAEAAAAAQAAABCgAwAEAAAAAQAAAA0AAAAA/+0AOFBob3Rvc2hvcCAzLjAAOEJJTQQEAAAAAAAAOEJJTQQlAAAAAAAQ1B2M2Y8AsgTpgAmY7PhCfv/iDFhJQ0NfUFJPRklMRQABAQAADEhMaW5vAhAAAG1udHJSR0IgWFlaIAfOAAIACQAGADEAAGFjc3BNU0ZUAAAAAElFQyBzUkdCAAAAAAAAAAAAAAAAAAD21gABAAAAANMtSFAgIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWNwcnQAAAFQAAAAM2Rlc2MAAAGEAAAAbHd0cHQAAAHwAAAAFGJrcHQAAAIEAAAAFHJYWVoAAAIYAAAAFGdYWVoAAAIsAAAAFGJYWVoAAAJAAAAAFGRtbmQAAAJUAAAAcGRtZGQAAALEAAAAiHZ1ZWQAAANMAAAAhnZpZXcAAAPUAAAAJGx1bWkAAAP4AAAAFG1lYXMAAAQMAAAAJHRlY2gAAAQwAAAADHJUUkMAAAQ8AAAIDGdUUkMAAAQ8AAAIDGJUUkMAAAQ8AAAIDHRleHQAAAAAQ29weXJpZ2h0IChjKSAxOTk4IEhld2xldHQtUGFja2FyZCBDb21wYW55AABkZXNjAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAEnNSR0IgSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABYWVogAAAAAAAA81EAAQAAAAEWzFhZWiAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAG+iAAA49QAAA5BYWVogAAAAAAAAYpkAALeFAAAY2lhZWiAAAAAAAAAkoAAAD4QAALbPZGVzYwAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAWSUVDIGh0dHA6Ly93d3cuaWVjLmNoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGRlc2MAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAALklFQyA2MTk2Ni0yLjEgRGVmYXVsdCBSR0IgY29sb3VyIHNwYWNlIC0gc1JHQgAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAACxSZWZlcmVuY2UgVmlld2luZyBDb25kaXRpb24gaW4gSUVDNjE5NjYtMi4xAAAAAAAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAdmlldwAAAAAAE6T+ABRfLgAQzxQAA+3MAAQTCwADXJ4AAAABWFlaIAAAAAAATAlWAFAAAABXH+dtZWFzAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAACjwAAAAJzaWcgAAAAAENSVCBjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADcAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8ApACpAK4AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23////AABEIAA0AEAMBEgACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/3QAEAAL/2gAMAwEAAhEDEQA/AP0Kk1O/8TeJ/FWhi5vY7FLRoY1khMKvKQMGGVRnaMkMSSSScABcnOj+L/lKF/sgFl+Ut9owTj/gFeI4UZVKkqlRuMlbl1svlt+B9AlWjTpxp0kpRd73V3+v4/odF/wks/hi68KaHItrK88cdtcDzj5qMEI3KuOV3LjPv261yVx8RbK+1CC7k0CM30ZxFcmfLxZ4O07ePw61bklOmqVW0Y7q26ta23+WxKozlCo6tK8pap3WnXuf/9k=]]></data>
	</file>
	<file>
	  <filename>/images/warning.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhEAAQAN0AAP///+Xl5d3MVdnUON7WMvDosgAAAPPicNTRPOPZLfvqgffmeauZM869SuzcJNbFT+jbKNDPQubeq//2p/Png/DfacGwQerbYce2Rf//zNLJRf/+xdTMSNTU1P76u7iyjGZmZrSjOXV1dfTtetDKptXUUPz2rOjgSOrdMejjYvnwmhgYGN7YY9fURunhaPbsj/TpiNrUTeXZVu7dZjMzMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEHAAAALAEAAQAOAA8AAAaMQICwICgaC8IkMTNpTjYC5FCQUVivniiAuFl4RSLvwhR9eA7oAwiUPqgej1dlfqGtOBoNhwWHzS4xEQYGEYURJQ8NFDIIjYONjS0NDS4DlgMUFJeWkykEnwSDoJ8NEhgnCamDqakYEgASFigQECMjtBAWr0IkIQ6/wCEkSQEdHwzIyR8dAcQBz9DQQkEAOw==]]></data>
	</file>
	<file>
	  <filename>/include/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/include/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/include/prefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0Owokbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CiRtb2lzX2NvdXJhbnQgPSBkYXRlKCduJyk7CiRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKJHNhaXNvbl9jb3VyYW50ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJG1vZHVsZV9kaXIgPSAkdGhpcy0+R2V0TW9kdWxlVVJMUGF0aCgpOwokdGFibGVhdSA9IGFycmF5KCIxIj0+IkphbnZpZXIiLCIyIj0+IkbDqXZyaWVyIiwiMyI9PiJNYXJzIiwiNCI9PiJBdnJpbCIsIjUiPT4iTWFpIiwiNiI9PiJKdWluIiwiNyI9PiJKdWlsbGV0IiwiOSI9PiJTZXB0ZW1icmUiLCIxMCI9PiJPY3RvYnJlIiwiMTEiPT4iTm92ZW1icmUiLCIxMiI9PiJEw6ljZW1icmUiKTsKJGxpc3RlX21vaXMgPSBhcnJheSgiSmFudmllciI9PiIxIiwgIkbDqXZyaWVyIj0+IjIiLCJNYXJzIj0+IjMiLCJBdnJpbCI9PiI0IiwiTWFpIj0+IjUiLCJKdWluIj0+IjYiLCJKdWlsbGV0Ij0+IjciLCJTZXB0ZW1icmUiPT4iOSIsIk9jdG9icmUiPT4iMTAiLCJOb3ZlbWJyZSI9PiIxMSIsICJEw6ljZW1icmUiPT4iMTIiKTsKCiMKI0VPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/include/travaux.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwokdHJhdmF1eCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0cmF2YXV4Jyk7CmlmKCR0cmF2YXV4ID09J3RydWUnKQp7CglkZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7Cn0KIwojRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/jqplot/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqplot/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAACHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAABAAAQAABpAG4Ac2RzY2xibwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAHAHAAbAB1AGcAaQBuAHNkc2NsYm9vbAEAAAARAHMAeQBuAHQAYQB4AGgAaQBnAGgAbABpAGcAaAB0AGUAcmRzY2xib29sAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAAAhwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAIAAAAGAAAAAAAAAAAAAAAAEAAAEAAAAAAQAAAgAAAAABAAAEAAAAAAIAAAgAAAAYAAAAAAAAAAABAAAgAAAAAAEAAEAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/jqplot/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.barRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgCiAgICAvLyBDbGFzczogJC5qcXBsb3QuQmFyUmVuZGVyZXIKICAgIC8vIEEgcGx1Z2luIHJlbmRlcmVyIGZvciBqcVBsb3QgdG8gZHJhdyBhIGJhciBwbG90LgogICAgLy8gRHJhd3Mgc2VyaWVzIGFzIGEgbGluZS4KICAgIAogICAgJC5qcXBsb3QuQmFyUmVuZGVyZXIgPSBmdW5jdGlvbigpewogICAgICAgICQuanFwbG90LkxpbmVSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQmFyUmVuZGVyZXIucHJvdG90eXBlID0gbmV3ICQuanFwbG90LkxpbmVSZW5kZXJlcigpOwogICAgJC5qcXBsb3QuQmFyUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuQmFyUmVuZGVyZXI7CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHNlcmllcy4KICAgICQuanFwbG90LkJhclJlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucywgcGxvdCkgewogICAgICAgIC8vIEdyb3VwOiBQcm9wZXJ0aWVzCiAgICAgICAgLy8KICAgICAgICAvLyBwcm9wOiBiYXJQYWRkaW5nCiAgICAgICAgLy8gTnVtYmVyIG9mIHBpeGVscyBiZXR3ZWVuIGFkamFjZW50IGJhcnMgYXQgdGhlIHNhbWUgYXhpcyB2YWx1ZS4KICAgICAgICB0aGlzLmJhclBhZGRpbmcgPSA4OwogICAgICAgIC8vIHByb3A6IGJhck1hcmdpbgogICAgICAgIC8vIE51bWJlciBvZiBwaXhlbHMgYmV0d2VlbiBncm91cHMgb2YgYmFycyBhdCBhZGphY2VudCBheGlzIHZhbHVlcy4KICAgICAgICB0aGlzLmJhck1hcmdpbiA9IDEwOwogICAgICAgIC8vIHByb3A6IGJhckRpcmVjdGlvbgogICAgICAgIC8vICd2ZXJ0aWNhbCcgPSB1cCBhbmQgZG93biBiYXJzLCAnaG9yaXpvbnRhbCcgPSBzaWRlIHRvIHNpZGUgYmFycwogICAgICAgIHRoaXMuYmFyRGlyZWN0aW9uID0gJ3ZlcnRpY2FsJzsKICAgICAgICAvLyBwcm9wOiBiYXJXaWR0aAogICAgICAgIC8vIFdpZHRoIG9mIHRoZSBiYXIgaW4gcGl4ZWxzIChhdXRvIGJ5IGRldmF1bCkuICBudWxsID0gY2FsY3VsYXRlZCBhdXRvbWF0aWNhbGx5LgogICAgICAgIHRoaXMuYmFyV2lkdGggPSBudWxsOwogICAgICAgIC8vIHByb3A6IHNoYWRvd09mZnNldAogICAgICAgIC8vIG9mZnNldCBvZiB0aGUgc2hhZG93IGZyb20gdGhlIHNsaWNlIGFuZCBvZmZzZXQgb2YgCiAgICAgICAgLy8gZWFjaCBzdWNjZXNpdmUgc3Ryb2tlIG9mIHRoZSBzaGFkb3cgZnJvbSB0aGUgbGFzdC4KICAgICAgICB0aGlzLnNoYWRvd09mZnNldCA9IDI7CiAgICAgICAgLy8gcHJvcDogc2hhZG93RGVwdGgKICAgICAgICAvLyBudW1iZXIgb2Ygc3Ryb2tlcyB0byBhcHBseSB0byB0aGUgc2hhZG93LCAKICAgICAgICAvLyBlYWNoIHN0cm9rZSBvZmZzZXQgc2hhZG93T2Zmc2V0IGZyb20gdGhlIGxhc3QuCiAgICAgICAgdGhpcy5zaGFkb3dEZXB0aCA9IDU7CiAgICAgICAgLy8gcHJvcDogc2hhZG93QWxwaGEKICAgICAgICAvLyB0cmFuc3BhcmVuY3kgb2YgdGhlIHNoYWRvdyAoMCA9IHRyYW5zcGFyZW50LCAxID0gb3BhcXVlKQogICAgICAgIHRoaXMuc2hhZG93QWxwaGEgPSAwLjA4OwogICAgICAgIC8vIHByb3A6IHdhdGVyZmFsbAogICAgICAgIC8vIHRydWUgdG8gZW5hYmxlIHdhdGVyZmFsbCBwbG90LgogICAgICAgIHRoaXMud2F0ZXJmYWxsID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogZ3JvdXBzCiAgICAgICAgLy8gZ3JvdXAgYmFycyBpbnRvIHRoaXMgbWFueSBncm91cHMKICAgICAgICB0aGlzLmdyb3VwcyA9IDE7CiAgICAgICAgLy8gcHJvcDogdmFyeUJhckNvbG9yCiAgICAgICAgLy8gdHJ1ZSB0byBjb2xvciBlYWNoIGJhciBvZiBhIHNlcmllcyBzZXBhcmF0ZWx5IHJhdGhlciB0aGFuCiAgICAgICAgLy8gaGF2ZSBldmVyeSBiYXIgb2YgYSBnaXZlbiBzZXJpZXMgdGhlIHNhbWUgY29sb3IuCiAgICAgICAgLy8gSWYgdXNlZCBmb3Igbm9uLXN0YWNrZWQgbXVsdGlwbGUgc2VyaWVzIGJhciBwbG90cywgdXNlciBzaG91bGQKICAgICAgICAvLyBzcGVjaWZ5IGEgc2VwYXJhdGUgJ3Nlcmllc0NvbG9ycycgYXJyYXkgZm9yIGVhY2ggc2VyaWVzLgogICAgICAgIC8vIE90aGVyd2lzZSwgZWFjaCBzZXJpZXMgd2lsbCBzZXQgdGhlaXIgYmFycyB0byB0aGUgc2FtZSBjb2xvciBhcnJheS4KICAgICAgICAvLyBUaGlzIG9wdGlvbiBoYXMgbm8gRWZmZWN0IGZvciBzdGFja2VkIGJhciBjaGFydHMgYW5kIGlzIGRpc2FibGVkLgogICAgICAgIHRoaXMudmFyeUJhckNvbG9yID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogaGlnaGxpZ2h0TW91c2VPdmVyCiAgICAgICAgLy8gVHJ1ZSB0byBoaWdobGlnaHQgc2xpY2Ugd2hlbiBtb3VzZWQgb3Zlci4KICAgICAgICAvLyBUaGlzIG11c3QgYmUgZmFsc2UgdG8gZW5hYmxlIGhpZ2hsaWdodE1vdXNlRG93biB0byBoaWdobGlnaHQgd2hlbiBjbGlja2luZyBvbiBhIHNsaWNlLgogICAgICAgIHRoaXMuaGlnaGxpZ2h0TW91c2VPdmVyID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBoaWdobGlnaHRNb3VzZURvd24KICAgICAgICAvLyBUcnVlIHRvIGhpZ2hsaWdodCB3aGVuIGEgbW91c2UgYnV0dG9uIGlzIHByZXNzZWQgb3ZlciBhIHNsaWNlLgogICAgICAgIC8vIFRoaXMgd2lsbCBiZSBkaXNhYmxlZCBpZiBoaWdobGlnaHRNb3VzZU92ZXIgaXMgdHJ1ZS4KICAgICAgICB0aGlzLmhpZ2hsaWdodE1vdXNlRG93biA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGhpZ2hsaWdodENvbG9ycwogICAgICAgIC8vIGFuIGFycmF5IG9mIGNvbG9ycyB0byB1c2Ugd2hlbiBoaWdobGlnaHRpbmcgYSBiYXIuCiAgICAgICAgdGhpcy5oaWdobGlnaHRDb2xvcnMgPSBbXTsKICAgICAgICAvLyBwcm9wOiB0cmFuc3Bvc2VkRGF0YQogICAgICAgIC8vIE5PVCBJTVBMRU1FTlRFRCBZRVQuICBUcnVlIGlmIHRoaXMgaXMgYSBob3Jpem9udGFsIGJhciBwbG90IGFuZCAKICAgICAgICAvLyB4IGFuZCB5IHZhbHVlcyBhcmUgInRyYW5zcG9zZWQiLiAgVHJhbnBvc2VkLCBvciAic3dhcHBlZCIsIGRhdGEgaXMgCiAgICAgICAgLy8gcmVxdWlyZWQgcHJpb3IgdG8gcmV2LiA4OTQgYnVpbGRzIG9mIGpxUGxvdCB3aXRoIGhvcml6b250YWwgYmFycy4gCiAgICAgICAgLy8gQWxsb3dzIGJhY2t3YXJkIGNvbXBhdGFiaWxpdHkgb2YgYmFyIHJlbmRlcmVyIGhvcml6b250YWwgYmFycyB3aXRoIAogICAgICAgIC8vIG9sZCBzdHlsZSBkYXRhIHNldHMuCiAgICAgICAgdGhpcy50cmFuc3Bvc2VkRGF0YSA9IHRydWU7CiAgICAgICAgdGhpcy5yZW5kZXJlci5hbmltYXRpb24gPSB7CiAgICAgICAgICAgIHNob3c6IGZhbHNlLAogICAgICAgICAgICBkaXJlY3Rpb246ICdkb3duJywKICAgICAgICAgICAgc3BlZWQ6IDMwMDAsCiAgICAgICAgICAgIF9zdXBwb3J0ZWQ6IHRydWUKICAgICAgICB9OwogICAgICAgIHRoaXMuX3R5cGUgPSAnYmFyJzsKICAgICAgICAKICAgICAgICAvLyBpZiB1c2VyIGhhcyBwYXNzZWQgaW4gaGlnaGxpZ2h0TW91c2VEb3duIG9wdGlvbiBhbmQgbm90IHNldCBoaWdobGlnaHRNb3VzZU92ZXIsIGRpc2FibGUgaGlnaGxpZ2h0TW91c2VPdmVyCiAgICAgICAgaWYgKG9wdGlvbnMuaGlnaGxpZ2h0TW91c2VEb3duICYmIG9wdGlvbnMuaGlnaGxpZ2h0TW91c2VPdmVyID09IG51bGwpIHsKICAgICAgICAgICAgb3B0aW9ucy5oaWdobGlnaHRNb3VzZU92ZXIgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8vLy8vCiAgICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSB3cm9uZyBoZXJlLgogICAgICAgIC8vIEFmdGVyIGdvaW5nIGJhY2sgYW5kIGZvcnRoIG9uIHdoZXRoZXIgcmVuZGVyZXIgc2hvdWxkIGJlIHRoZSB0aGluZwogICAgICAgIC8vIG9yIGV4dGVuZCB0aGUgdGhpbmcsIGl0IHNlZW1zIHRoYXQgaXQgaXQgYmVzdCBpZiBpdCBpcyBhIHByb3BlcnR5CiAgICAgICAgLy8gb24gdGhlIHRoaW5nLiAgVGhpcyBzaG91bGQgYmUgc29tZXRoaW5nIHRoYXQgaXMgY29tbW9uaXplZCAKICAgICAgICAvLyBhbW9uZyBzZXJpZXMgcmVuZGVyZXJzIGluIHRoZSBmdXR1cmUuCiAgICAgICAgLy8vLy8vCiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CgogICAgICAgIC8vIHJlYWxseSBzaG91bGQgcHJvYmFibHkgZG8gdGhpcwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMucmVuZGVyZXIsIG9wdGlvbnMpOwogICAgICAgIC8vIGZpbGwgaXMgc3RpbGwgbmVlZGVkIHRvIHByb3Blcmx5IGRyYXcgdGhlIGxlZ2VuZC4KICAgICAgICAvLyBiYXJzIGhhdmUgdG8gYmUgZmlsbGVkLgogICAgICAgIHRoaXMuZmlsbCA9IHRydWU7CgogICAgICAgIC8vIGlmIGhvcml6b250YWwgYmFyIGFuZCBhbmltYXRpbmcsIHJlc2V0IHRoZSBkZWZhdWx0IGRpcmVjdGlvbgogICAgICAgIGlmICh0aGlzLmJhckRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnICYmIHRoaXMucmVuZGVyZXJPcHRpb25zLmFuaW1hdGlvbiAmJiB0aGlzLnJlbmRlcmVyT3B0aW9ucy5hbmltYXRpb24uZGlyZWN0aW9uID09IG51bGwpIHsKICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5hbmltYXRpb24uZGlyZWN0aW9uID0gJ2xlZnQnOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAodGhpcy53YXRlcmZhbGwpIHsKICAgICAgICAgICAgdGhpcy5maWxsVG9aZXJvID0gZmFsc2U7CiAgICAgICAgICAgIHRoaXMuZGlzYWJsZVN0YWNrID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKHRoaXMuYmFyRGlyZWN0aW9uID09ICd2ZXJ0aWNhbCcgKSB7CiAgICAgICAgICAgIHRoaXMuX3ByaW1hcnlBeGlzID0gJ194YXhpcyc7CiAgICAgICAgICAgIHRoaXMuX3N0YWNrQXhpcyA9ICd5JzsKICAgICAgICAgICAgdGhpcy5maWxsQXhpcyA9ICd5JzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHRoaXMuX3ByaW1hcnlBeGlzID0gJ195YXhpcyc7CiAgICAgICAgICAgIHRoaXMuX3N0YWNrQXhpcyA9ICd4JzsKICAgICAgICAgICAgdGhpcy5maWxsQXhpcyA9ICd4JzsKICAgICAgICB9CiAgICAgICAgLy8gaW5kZXggb2YgdGhlIGN1cnJlbnR5IGhpZ2hsaWdodGVkIHBvaW50LCBpZiBhbnkKICAgICAgICB0aGlzLl9oaWdobGlnaHRlZFBvaW50ID0gbnVsbDsKICAgICAgICAvLyB0b3RhbCBudW1iZXIgb2YgdmFsdWVzIGZvciBhbGwgYmFyIHNlcmllcywgdG90YWwgbnVtYmVyIG9mIGJhciBzZXJpZXMsIGFuZCBwb3NpdGlvbiBvZiB0aGlzIHNlcmllcwogICAgICAgIHRoaXMuX3Bsb3RTZXJpZXNJbmZvID0gbnVsbDsKICAgICAgICAvLyBBcnJheSBvZiBhY3R1YWwgZGF0YSBjb2xvcnMgdXNlZCBmb3IgZWFjaCBkYXRhIHBvaW50LgogICAgICAgIHRoaXMuX2RhdGFDb2xvcnMgPSBbXTsKICAgICAgICB0aGlzLl9iYXJQb2ludHMgPSBbXTsKICAgICAgICAKICAgICAgICAvLyBzZXQgdGhlIHNoYXBlIHJlbmRlcmVyIG9wdGlvbnMKICAgICAgICB2YXIgb3B0cyA9IHtsaW5lSm9pbjonbWl0ZXInLCBsaW5lQ2FwOidyb3VuZCcsIGZpbGw6dHJ1ZSwgaXNhcmM6ZmFsc2UsIHN0cm9rZVN0eWxlOnRoaXMuY29sb3IsIGZpbGxTdHlsZTp0aGlzLmNvbG9yLCBjbG9zZVBhdGg6dGhpcy5maWxsfTsKICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuaW5pdChvcHRzKTsKICAgICAgICAvLyBzZXQgdGhlIHNoYWRvdyByZW5kZXJlciBvcHRpb25zCiAgICAgICAgdmFyIHNvcHRzID0ge2xpbmVKb2luOidtaXRlcicsIGxpbmVDYXA6J3JvdW5kJywgZmlsbDp0cnVlLCBpc2FyYzpmYWxzZSwgYW5nbGU6dGhpcy5zaGFkb3dBbmdsZSwgb2Zmc2V0OnRoaXMuc2hhZG93T2Zmc2V0LCBhbHBoYTp0aGlzLnNoYWRvd0FscGhhLCBkZXB0aDp0aGlzLnNoYWRvd0RlcHRoLCBjbG9zZVBhdGg6dGhpcy5maWxsfTsKICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmluaXQoc29wdHMpOwogICAgICAgIAogICAgICAgIHBsb3QucG9zdEluaXRIb29rcy5hZGRPbmNlKHBvc3RJbml0KTsKICAgICAgICBwbG90LnBvc3REcmF3SG9va3MuYWRkT25jZShwb3N0UGxvdERyYXcpOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdE1vdXNlTW92ZScsIGhhbmRsZU1vdmUpOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdE1vdXNlRG93bicsIGhhbmRsZU1vdXNlRG93bik7CiAgICAgICAgcGxvdC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgnanFwbG90TW91c2VVcCcsIGhhbmRsZU1vdXNlVXApOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdENsaWNrJywgaGFuZGxlQ2xpY2spOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdFJpZ2h0Q2xpY2snLCBoYW5kbGVSaWdodENsaWNrKTsgCiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBzZXJpZXMKICAgIGZ1bmN0aW9uIGJhclByZUluaXQodGFyZ2V0LCBkYXRhLCBzZXJpZXNEZWZhdWx0cywgb3B0aW9ucykgewogICAgICAgIGlmICh0aGlzLnJlbmRlcmVyT3B0aW9ucy5iYXJEaXJlY3Rpb24gPT0gJ2hvcml6b250YWwnKSB7CiAgICAgICAgICAgIHRoaXMuX3N0YWNrQXhpcyA9ICd4JzsKICAgICAgICAgICAgdGhpcy5fcHJpbWFyeUF4aXMgPSAnX3lheGlzJzsKICAgICAgICB9CiAgICAgICAgaWYgKHRoaXMucmVuZGVyZXJPcHRpb25zLndhdGVyZmFsbCA9PSB0cnVlKSB7CiAgICAgICAgICAgIHRoaXMuX2RhdGEgPSAkLmV4dGVuZCh0cnVlLCBbXSwgdGhpcy5kYXRhKTsKICAgICAgICAgICAgdmFyIHN1bSA9IDA7CiAgICAgICAgICAgIHZhciBwb3MgPSAoIXRoaXMucmVuZGVyZXJPcHRpb25zLmJhckRpcmVjdGlvbiB8fCB0aGlzLnJlbmRlcmVyT3B0aW9ucy5iYXJEaXJlY3Rpb24gPT09ICd2ZXJ0aWNhbCcgfHwgdGhpcy50cmFuc3Bvc2VkRGF0YSA9PT0gZmFsc2UpID8gMSA6IDA7CiAgICAgICAgICAgIGZvcih2YXIgaT0wOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgc3VtICs9IHRoaXMuZGF0YVtpXVtwb3NdOwogICAgICAgICAgICAgICAgaWYgKGk+MCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YVtpXVtwb3NdICs9IHRoaXMuZGF0YVtpLTFdW3Bvc107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5kYXRhW3RoaXMuZGF0YS5sZW5ndGhdID0gKHBvcyA9PSAxKSA/IFt0aGlzLmRhdGEubGVuZ3RoKzEsIHN1bV0gOiBbc3VtLCB0aGlzLmRhdGEubGVuZ3RoKzFdOwogICAgICAgICAgICB0aGlzLl9kYXRhW3RoaXMuX2RhdGEubGVuZ3RoXSA9IChwb3MgPT0gMSkgPyBbdGhpcy5fZGF0YS5sZW5ndGgrMSwgc3VtXSA6IFtzdW0sIHRoaXMuX2RhdGEubGVuZ3RoKzFdOwogICAgICAgIH0KICAgICAgICBpZiAodGhpcy5yZW5kZXJlck9wdGlvbnMuZ3JvdXBzID4gMSkgewogICAgICAgICAgICB0aGlzLmJyZWFrT25OdWxsID0gdHJ1ZTsKICAgICAgICAgICAgdmFyIGwgPSB0aGlzLmRhdGEubGVuZ3RoOwogICAgICAgICAgICB2YXIgc2tpcCA9IHBhcnNlSW50KGwvdGhpcy5yZW5kZXJlck9wdGlvbnMuZ3JvdXBzLCAxMCk7CiAgICAgICAgICAgIHZhciBjb3VudCA9IDA7CiAgICAgICAgICAgIGZvciAodmFyIGk9c2tpcDsgaTxsOyBpKz1za2lwKSB7CiAgICAgICAgICAgICAgICB0aGlzLmRhdGEuc3BsaWNlKGkrY291bnQsIDAsIFtudWxsLCBudWxsXSk7CiAgICAgICAgICAgICAgICB0aGlzLl9wbG90RGF0YS5zcGxpY2UoaStjb3VudCwgMCwgW251bGwsIG51bGxdKTsKICAgICAgICAgICAgICAgIHRoaXMuX3N0YWNrRGF0YS5zcGxpY2UoaStjb3VudCwgMCwgW251bGwsIG51bGxdKTsKICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yIChpPTA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5fcHJpbWFyeUF4aXMgPT0gJ194YXhpcycpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFbaV1bMF0gPSBpKzE7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fcGxvdERhdGFbaV1bMF0gPSBpKzE7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc3RhY2tEYXRhW2ldWzBdID0gaSsxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhW2ldWzFdID0gaSsxOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3Bsb3REYXRhW2ldWzFdID0gaSsxOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3N0YWNrRGF0YVtpXVsxXSA9IGkrMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgJC5qcXBsb3QucHJlU2VyaWVzSW5pdEhvb2tzLnB1c2goYmFyUHJlSW5pdCk7CiAgICAKICAgIC8vIG5lZWRzIHRvIGJlIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHNlcmllcywgbm90IHJlbmRlcmVyLgogICAgJC5qcXBsb3QuQmFyUmVuZGVyZXIucHJvdG90eXBlLmNhbGNTZXJpZXNOdW1iZXJzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIG52YWxzID0gMDsKICAgICAgICB2YXIgbnNlcmllcyA9IDA7CiAgICAgICAgdmFyIHBheGlzID0gdGhpc1t0aGlzLl9wcmltYXJ5QXhpc107CiAgICAgICAgdmFyIHMsIHNlcmllcywgcG9zOwogICAgICAgIC8vIGxvb3AgdGhyb3VnaCBhbGwgc2VyaWVzIG9uIHRoaXMgYXhpcwogICAgICAgIGZvciAodmFyIGk9MDsgaSA8IHBheGlzLl9zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgc2VyaWVzID0gcGF4aXMuX3Nlcmllc1tpXTsKICAgICAgICAgICAgaWYgKHNlcmllcyA9PT0gdGhpcykgewogICAgICAgICAgICAgICAgcG9zID0gaTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBpcyB0aGUgc2VyaWVzIHJlbmRlcmVkIGFzIGEgYmFyPwogICAgICAgICAgICBpZiAoc2VyaWVzLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09ICQuanFwbG90LkJhclJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAvLyBncmlkRGF0YSBtYXkgbm90IGJlIGNvbXB1dGVkIHlldCwgdXNlIGRhdGEgbGVuZ3RoIGluc3RlZAogICAgICAgICAgICAgICAgbnZhbHMgKz0gc2VyaWVzLmRhdGEubGVuZ3RoOwogICAgICAgICAgICAgICAgbnNlcmllcyArPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIHJldHVybiB0b3RhbCBudW1iZXIgb2YgdmFsdWVzIGZvciBhbGwgYmFyIHNlcmllcywgdG90YWwgbnVtYmVyIG9mIGJhciBzZXJpZXMsIGFuZCBwb3NpdGlvbiBvZiB0aGlzIHNlcmllcwogICAgICAgIHJldHVybiBbbnZhbHMsIG5zZXJpZXMsIHBvc107CiAgICB9OwoKICAgICQuanFwbG90LkJhclJlbmRlcmVyLnByb3RvdHlwZS5zZXRCYXJXaWR0aCA9IGZ1bmN0aW9uKCkgewogICAgICAgIC8vIG5lZWQgdG8ga25vdyBob3cgbWFueSBkYXRhIHZhbHVlcyB3ZSBoYXZlIG9uIHRoZSBhcHByb3ByYXRlIGF4aXMgYW5kIGZpZ3VyZSBpdCBvdXQuCiAgICAgICAgdmFyIGk7CiAgICAgICAgdmFyIG52YWxzID0gMDsKICAgICAgICB2YXIgbnNlcmllcyA9IDA7CiAgICAgICAgdmFyIHBheGlzID0gdGhpc1t0aGlzLl9wcmltYXJ5QXhpc107CiAgICAgICAgdmFyIHMsIHNlcmllcywgcG9zOwogICAgICAgIHZhciB0ZW1wID0gdGhpcy5fcGxvdFNlcmllc0luZm8gPSB0aGlzLnJlbmRlcmVyLmNhbGNTZXJpZXNOdW1iZXJzLmNhbGwodGhpcyk7CiAgICAgICAgbnZhbHMgPSB0ZW1wWzBdOwogICAgICAgIG5zZXJpZXMgPSB0ZW1wWzFdOwogICAgICAgIHZhciBudGlja3MgPSBwYXhpcy5udW1iZXJUaWNrczsKICAgICAgICB2YXIgbmJpbnMgPSAobnRpY2tzLTEpLzI7CiAgICAgICAgLy8gc28sIG5vdyB3ZSBoYXZlIHRvdGFsIG51bWJlciBvZiBheGlzIHZhbHVlcy4KICAgICAgICBpZiAocGF4aXMubmFtZSA9PSAneGF4aXMnIHx8IHBheGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgaWYgKHRoaXMuX3N0YWNrKSB7CiAgICAgICAgICAgICAgICB0aGlzLmJhcldpZHRoID0gKHBheGlzLl9vZmZzZXRzLm1heCAtIHBheGlzLl9vZmZzZXRzLm1pbikgLyBudmFscyAqIG5zZXJpZXMgLSB0aGlzLmJhck1hcmdpbjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMuYmFyV2lkdGggPSAoKHBheGlzLl9vZmZzZXRzLm1heCAtIHBheGlzLl9vZmZzZXRzLm1pbikvbmJpbnMgIC0gdGhpcy5iYXJQYWRkaW5nICogKG5zZXJpZXMtMSkgLSB0aGlzLmJhck1hcmdpbioyKS9uc2VyaWVzOwogICAgICAgICAgICAgICAgLy8gdGhpcy5iYXJXaWR0aCA9IChwYXhpcy5fb2Zmc2V0cy5tYXggLSBwYXhpcy5fb2Zmc2V0cy5taW4pIC8gbnZhbHMgLSB0aGlzLmJhclBhZGRpbmcgLSB0aGlzLmJhck1hcmdpbi9uc2VyaWVzOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBpZiAodGhpcy5fc3RhY2spIHsKICAgICAgICAgICAgICAgIHRoaXMuYmFyV2lkdGggPSAocGF4aXMuX29mZnNldHMubWluIC0gcGF4aXMuX29mZnNldHMubWF4KSAvIG52YWxzICogbnNlcmllcyAtIHRoaXMuYmFyTWFyZ2luOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5iYXJXaWR0aCA9ICgocGF4aXMuX29mZnNldHMubWluIC0gcGF4aXMuX29mZnNldHMubWF4KS9uYmlucyAgLSB0aGlzLmJhclBhZGRpbmcgKiAobnNlcmllcy0xKSAtIHRoaXMuYmFyTWFyZ2luKjIpL25zZXJpZXM7CiAgICAgICAgICAgICAgICAvLyB0aGlzLmJhcldpZHRoID0gKHBheGlzLl9vZmZzZXRzLm1pbiAtIHBheGlzLl9vZmZzZXRzLm1heCkgLyBudmFscyAtIHRoaXMuYmFyUGFkZGluZyAtIHRoaXMuYmFyTWFyZ2luL25zZXJpZXM7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIFtudmFscywgbnNlcmllc107CiAgICB9OwoKICAgIGZ1bmN0aW9uIGNvbXB1dGVIaWdobGlnaHRDb2xvcnMgKGNvbG9ycykgewogICAgICAgIHZhciByZXQgPSBbXTsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8Y29sb3JzLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgdmFyIHJnYmEgPSAkLmpxcGxvdC5nZXRDb2xvckNvbXBvbmVudHMoY29sb3JzW2ldKTsKICAgICAgICAgICAgdmFyIG5ld3JnYiA9IFtyZ2JhWzBdLCByZ2JhWzFdLCByZ2JhWzJdXTsKICAgICAgICAgICAgdmFyIHN1bSA9IG5ld3JnYlswXSArIG5ld3JnYlsxXSArIG5ld3JnYlsyXTsKICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPDM7IGorKykgewogICAgICAgICAgICAgICAgLy8gd2hlbiBkYXJrZW5pbmcsIGxvd2VzdCBjb2xvciBjb21wb25lbnQgY2FuIGJlIGlzIDYwLgogICAgICAgICAgICAgICAgbmV3cmdiW2pdID0gKHN1bSA+IDU3MCkgPyAgbmV3cmdiW2pdICogMC44IDogbmV3cmdiW2pdICsgMC4zICogKDI1NSAtIG5ld3JnYltqXSk7CiAgICAgICAgICAgICAgICBuZXdyZ2Jbal0gPSBwYXJzZUludChuZXdyZ2Jbal0sIDEwKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXQucHVzaCgncmdiKCcrbmV3cmdiWzBdKycsJytuZXdyZ2JbMV0rJywnK25ld3JnYlsyXSsnKScpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmV0OwogICAgfQoKICAgIGZ1bmN0aW9uIGdldFN0YXJ0KHNpZHgsIGRpZHgsIGNvbXAsIHBsb3QsIGF4aXMpIHsKICAgICAgICAvLyBjaGVjayBpZiBzaWduIGNoYW5nZQogICAgICAgIHZhciBzZXJpZXNJbmRleCA9IHNpZHgsCiAgICAgICAgICAgIHByZXZTZXJpZXNJbmRleCA9IHNpZHggLSAxLAogICAgICAgICAgICBzdGFydCwKICAgICAgICAgICAgcHJldlZhbCwKICAgICAgICAgICAgYWlkeCA9IChheGlzID09PSAneCcpID8gMCA6IDE7CgogICAgICAgIC8vIGlzIHRoaXMgbm90IHRoZSBmaXJzdCBzZXJpZXM/CiAgICAgICAgaWYgKHNlcmllc0luZGV4ID4gMCkgewogICAgICAgICAgICBwcmV2VmFsID0gcGxvdC5zZXJpZXNbcHJldlNlcmllc0luZGV4XS5fcGxvdERhdGFbZGlkeF1bYWlkeF07CgogICAgICAgICAgICAvLyBpcyB0aGVyZSBhIHNpZ24gY2hhbmdlCiAgICAgICAgICAgIGlmICgoY29tcCAqIHByZXZWYWwpIDwgMCkgewogICAgICAgICAgICAgICAgc3RhcnQgPSBnZXRTdGFydChwcmV2U2VyaWVzSW5kZXgsIGRpZHgsIGNvbXAsIHBsb3QsIGF4aXMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBubyBzaWduIGNoYW5nZS4KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBzdGFydCA9IHBsb3Quc2VyaWVzW3ByZXZTZXJpZXNJbmRleF0uZ3JpZERhdGFbZGlkeF1bYWlkeF07CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICAvLyBpZiBmaXJzdCBzZXJpZXMsIHJldHVybiB2YWx1ZSBhdCAwCiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICBzdGFydCA9IChhaWR4ID09PSAwKSA/IHBsb3Quc2VyaWVzW3Nlcmllc0luZGV4XS5feGF4aXMuc2VyaWVzX3UycCgwKSA6IHBsb3Quc2VyaWVzW3Nlcmllc0luZGV4XS5feWF4aXMuc2VyaWVzX3UycCgwKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzdGFydDsKICAgIH0KCiAgICAKICAgICQuanFwbG90LkJhclJlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24oY3R4LCBncmlkRGF0YSwgb3B0aW9ucywgcGxvdCkgewogICAgICAgIHZhciBpOwogICAgICAgIC8vIFVnaGhoLCBoYXZlIHRvIG1ha2UgYSBjb3B5IG9mIG9wdGlvbnMgYi9jIGl0IG1heSBiZSBtb2RpZmllZCBsYXRlci4KICAgICAgICB2YXIgb3B0cyA9ICQuZXh0ZW5kKHt9LCBvcHRpb25zKTsKICAgICAgICB2YXIgc2hhZG93ID0gKG9wdHMuc2hhZG93ICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNoYWRvdyA6IHRoaXMuc2hhZG93OwogICAgICAgIHZhciBzaG93TGluZSA9IChvcHRzLnNob3dMaW5lICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNob3dMaW5lIDogdGhpcy5zaG93TGluZTsKICAgICAgICB2YXIgZmlsbCA9IChvcHRzLmZpbGwgIT0gdW5kZWZpbmVkKSA/IG9wdHMuZmlsbCA6IHRoaXMuZmlsbDsKICAgICAgICB2YXIgeGF4aXMgPSB0aGlzLnhheGlzOwogICAgICAgIHZhciB5YXhpcyA9IHRoaXMueWF4aXM7CiAgICAgICAgdmFyIHhwID0gdGhpcy5feGF4aXMuc2VyaWVzX3UycDsKICAgICAgICB2YXIgeXAgPSB0aGlzLl95YXhpcy5zZXJpZXNfdTJwOwogICAgICAgIHZhciBwb2ludHgsIHBvaW50eTsKICAgICAgICAvLyBjbGVhciBvdXQgZGF0YSBjb2xvcnMuCiAgICAgICAgdGhpcy5fZGF0YUNvbG9ycyA9IFtdOwogICAgICAgIHRoaXMuX2JhclBvaW50cyA9IFtdOwogICAgICAgIAogICAgICAgIGlmICh0aGlzLmJhcldpZHRoID09IG51bGwpIHsKICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRCYXJXaWR0aC5jYWxsKHRoaXMpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB2YXIgdGVtcCA9IHRoaXMuX3Bsb3RTZXJpZXNJbmZvID0gdGhpcy5yZW5kZXJlci5jYWxjU2VyaWVzTnVtYmVycy5jYWxsKHRoaXMpOwogICAgICAgIHZhciBudmFscyA9IHRlbXBbMF07CiAgICAgICAgdmFyIG5zZXJpZXMgPSB0ZW1wWzFdOwogICAgICAgIHZhciBwb3MgPSB0ZW1wWzJdOwogICAgICAgIHZhciBwb2ludHMgPSBbXTsKICAgICAgICAKICAgICAgICBpZiAodGhpcy5fc3RhY2spIHsKICAgICAgICAgICAgdGhpcy5fYmFyTnVkZ2UgPSAwOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdGhpcy5fYmFyTnVkZ2UgPSAoLU1hdGguYWJzKG5zZXJpZXMvMiAtIDAuNSkgKyBwb3MpICogKHRoaXMuYmFyV2lkdGggKyB0aGlzLmJhclBhZGRpbmcpOwogICAgICAgIH0KICAgICAgICBpZiAoc2hvd0xpbmUpIHsKICAgICAgICAgICAgdmFyIG5lZ2F0aXZlQ29sb3JzID0gbmV3ICQuanFwbG90LkNvbG9yR2VuZXJhdG9yKHRoaXMubmVnYXRpdmVTZXJpZXNDb2xvcnMpOwogICAgICAgICAgICB2YXIgcG9zaXRpdmVDb2xvcnMgPSBuZXcgJC5qcXBsb3QuQ29sb3JHZW5lcmF0b3IodGhpcy5zZXJpZXNDb2xvcnMpOwogICAgICAgICAgICB2YXIgbmVnYXRpdmVDb2xvciA9IG5lZ2F0aXZlQ29sb3JzLmdldCh0aGlzLmluZGV4KTsKICAgICAgICAgICAgaWYgKCEgdGhpcy51c2VOZWdhdGl2ZUNvbG9ycykgewogICAgICAgICAgICAgICAgbmVnYXRpdmVDb2xvciA9IG9wdHMuZmlsbFN0eWxlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBwb3NpdGl2ZUNvbG9yID0gb3B0cy5maWxsU3R5bGU7CiAgICAgICAgICAgIHZhciBiYXNlOwogICAgICAgICAgICB2YXIgeHN0YXJ0OyAKICAgICAgICAgICAgdmFyIHlzdGFydDsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLmJhckRpcmVjdGlvbiA9PSAndmVydGljYWwnKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8Z3JpZERhdGEubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX3N0YWNrICYmIHRoaXMuZGF0YVtpXVsxXSA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbXTsKICAgICAgICAgICAgICAgICAgICBiYXNlID0gZ3JpZERhdGFbaV1bMF0gKyB0aGlzLl9iYXJOdWRnZTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBzdGFja2VkCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3N0YWNrICYmIHRoaXMuX3ByZXZHcmlkRGF0YS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgeXN0YXJ0ID0gZ2V0U3RhcnQodGhpcy5pbmRleCwgaSwgdGhpcy5fcGxvdERhdGFbaV1bMV0sIHBsb3QsICd5Jyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAvLyBub3Qgc3RhY2tlZAogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5maWxsVG9aZXJvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RhcnQgPSB0aGlzLl95YXhpcy5zZXJpZXNfdTJwKDApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMud2F0ZXJmYWxsICYmIGkgPiAwICYmIGkgPCB0aGlzLmdyaWREYXRhLmxlbmd0aC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RhcnQgPSB0aGlzLmdyaWREYXRhW2ktMV1bMV07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy53YXRlcmZhbGwgJiYgaSA9PSAwICYmIGkgPCB0aGlzLmdyaWREYXRhLmxlbmd0aC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5feWF4aXMubWluIDw9IDAgJiYgdGhpcy5feWF4aXMubWF4ID49IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RhcnQgPSB0aGlzLl95YXhpcy5zZXJpZXNfdTJwKDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5feWF4aXMubWluID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdGFydCA9IGN0eC5jYW52YXMuaGVpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0YXJ0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLndhdGVyZmFsbCAmJiBpID09IHRoaXMuZ3JpZERhdGEubGVuZ3RoIC0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3lheGlzLm1pbiA8PSAwICYmIHRoaXMuX3lheGlzLm1heCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0YXJ0ID0gdGhpcy5feWF4aXMuc2VyaWVzX3UycCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX3lheGlzLm1pbiA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RhcnQgPSBjdHguY2FudmFzLmhlaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdGFydCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RhcnQgPSBjdHguY2FudmFzLmhlaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoKHRoaXMuZmlsbFRvWmVybyAmJiB0aGlzLl9wbG90RGF0YVtpXVsxXSA8IDApIHx8ICh0aGlzLndhdGVyZmFsbCAmJiB0aGlzLl9kYXRhW2ldWzFdIDwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmFyeUJhckNvbG9yICYmICF0aGlzLl9zdGFjaykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudXNlTmVnYXRpdmVDb2xvcnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmZpbGxTdHlsZSA9IG5lZ2F0aXZlQ29sb3JzLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuZmlsbFN0eWxlID0gcG9zaXRpdmVDb2xvcnMubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0cy5maWxsU3R5bGUgPSBuZWdhdGl2ZUNvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52YXJ5QmFyQ29sb3IgJiYgIXRoaXMuX3N0YWNrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmZpbGxTdHlsZSA9IHBvc2l0aXZlQ29sb3JzLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuZmlsbFN0eWxlID0gcG9zaXRpdmVDb2xvcjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZmlsbFRvWmVybyB8fCB0aGlzLl9wbG90RGF0YVtpXVsxXSA+PSAwKSB7IAogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbYmFzZS10aGlzLmJhcldpZHRoLzIsIHlzdGFydF0pOwogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbYmFzZS10aGlzLmJhcldpZHRoLzIsIGdyaWREYXRhW2ldWzFdXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cy5wdXNoKFtiYXNlK3RoaXMuYmFyV2lkdGgvMiwgZ3JpZERhdGFbaV1bMV1dKTsKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnB1c2goW2Jhc2UrdGhpcy5iYXJXaWR0aC8yLCB5c3RhcnRdKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gZm9yIG5lZ2F0aXZlIGJhcnMgbWFrZSBzdXJlIHBvaW50cyBhcmUgYWx3YXlzIG9yZGVyZWQgY2xvY2t3aXNlCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnB1c2goW2Jhc2UtdGhpcy5iYXJXaWR0aC8yLCBncmlkRGF0YVtpXVsxXV0pOwogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbYmFzZS10aGlzLmJhcldpZHRoLzIsIHlzdGFydF0pOwogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbYmFzZSt0aGlzLmJhcldpZHRoLzIsIHlzdGFydF0pOwogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbYmFzZSt0aGlzLmJhcldpZHRoLzIsIGdyaWREYXRhW2ldWzFdXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuX2JhclBvaW50cy5wdXNoKHBvaW50cyk7CiAgICAgICAgICAgICAgICAgICAgLy8gbm93IGRyYXcgdGhlIHNoYWRvd3MgaWYgbm90IHN0YWNrZWQuCiAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHN0YWNrZWQgcGxvdHMsIHRoZXkgYXJlIHByZWRyYXduIGJ5IGRyYXdTaGFkb3cKICAgICAgICAgICAgICAgICAgICBpZiAoc2hhZG93ICYmICF0aGlzLl9zdGFjaykgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc29wdHMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgb3B0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gZ2V0IHJpZCBvZiBmaWxsU3R5bGUgb24gc2hhZG93LgogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgc29wdHMuZmlsbFN0eWxlOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoY3R4LCBwb2ludHMsIHNvcHRzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGNsciA9IG9wdHMuZmlsbFN0eWxlIHx8IHRoaXMuY29sb3I7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YUNvbG9ycy5wdXNoKGNscik7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmRyYXcoY3R4LCBwb2ludHMsIG9wdHMpOyAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5iYXJEaXJlY3Rpb24gPT0gJ2hvcml6b250YWwnKXsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxncmlkRGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5fc3RhY2sgJiYgdGhpcy5kYXRhW2ldWzBdID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IFtdOwogICAgICAgICAgICAgICAgICAgIGJhc2UgPSBncmlkRGF0YVtpXVsxXSAtIHRoaXMuX2Jhck51ZGdlOwogICAgICAgICAgICAgICAgICAgIHhzdGFydDsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fc3RhY2sgJiYgdGhpcy5fcHJldkdyaWREYXRhLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICB4c3RhcnQgPSBnZXRTdGFydCh0aGlzLmluZGV4LCBpLCB0aGlzLl9wbG90RGF0YVtpXVswXSwgcGxvdCwgJ3gnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gbm90IHN0YWNrZWQKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsbFRvWmVybykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0gdGhpcy5feGF4aXMuc2VyaWVzX3UycCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLndhdGVyZmFsbCAmJiBpID4gMCAmJiBpIDwgdGhpcy5ncmlkRGF0YS5sZW5ndGgtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0gdGhpcy5ncmlkRGF0YVtpLTFdWzBdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMud2F0ZXJmYWxsICYmIGkgPT0gMCAmJiBpIDwgdGhpcy5ncmlkRGF0YS5sZW5ndGgtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3hheGlzLm1pbiA8PSAwICYmIHRoaXMuX3hheGlzLm1heCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0gdGhpcy5feGF4aXMuc2VyaWVzX3UycCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX3hheGlzLm1pbiA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RhcnQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLndhdGVyZmFsbCAmJiBpID09IHRoaXMuZ3JpZERhdGEubGVuZ3RoIC0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3hheGlzLm1pbiA8PSAwICYmIHRoaXMuX3hheGlzLm1heCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0gdGhpcy5feGF4aXMuc2VyaWVzX3UycCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuX3hheGlzLm1pbiA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RhcnQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0gY3R4LmNhbnZhcy53aWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdGFydCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCh0aGlzLmZpbGxUb1plcm8gJiYgdGhpcy5fcGxvdERhdGFbaV1bMF0gPCAwKSB8fCAodGhpcy53YXRlcmZhbGwgJiYgdGhpcy5fZGF0YVtpXVswXSA8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhcnlCYXJDb2xvciAmJiAhdGhpcy5fc3RhY2spIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVzZU5lZ2F0aXZlQ29sb3JzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0cy5maWxsU3R5bGUgPSBuZWdhdGl2ZUNvbG9ycy5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmZpbGxTdHlsZSA9IHBvc2l0aXZlQ29sb3JzLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuZmlsbFN0eWxlID0gbmVnYXRpdmVDb2xvcjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmFyeUJhckNvbG9yICYmICF0aGlzLl9zdGFjaykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0cy5maWxsU3R5bGUgPSBwb3NpdGl2ZUNvbG9ycy5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmZpbGxTdHlsZSA9IHBvc2l0aXZlQ29sb3I7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmZpbGxUb1plcm8gfHwgdGhpcy5fcGxvdERhdGFbaV1bMF0gPj0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbeHN0YXJ0LCBiYXNlICsgdGhpcy5iYXJXaWR0aCAvIDJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnB1c2goW3hzdGFydCwgYmFzZSAtIHRoaXMuYmFyV2lkdGggLyAyXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cy5wdXNoKFtncmlkRGF0YVtpXVswXSwgYmFzZSAtIHRoaXMuYmFyV2lkdGggLyAyXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cy5wdXNoKFtncmlkRGF0YVtpXVswXSwgYmFzZSArIHRoaXMuYmFyV2lkdGggLyAyXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbZ3JpZERhdGFbaV1bMF0sIGJhc2UgKyB0aGlzLmJhcldpZHRoIC8gMl0pOwogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbZ3JpZERhdGFbaV1bMF0sIGJhc2UgLSB0aGlzLmJhcldpZHRoIC8gMl0pOwogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbeHN0YXJ0LCBiYXNlIC0gdGhpcy5iYXJXaWR0aCAvIDJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnB1c2goW3hzdGFydCwgYmFzZSArIHRoaXMuYmFyV2lkdGggLyAyXSk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB0aGlzLl9iYXJQb2ludHMucHVzaChwb2ludHMpOwogICAgICAgICAgICAgICAgICAgIC8vIG5vdyBkcmF3IHRoZSBzaGFkb3dzIGlmIG5vdCBzdGFja2VkLgogICAgICAgICAgICAgICAgICAgIC8vIGZvciBzdGFja2VkIHBsb3RzLCB0aGV5IGFyZSBwcmVkcmF3biBieSBkcmF3U2hhZG93CiAgICAgICAgICAgICAgICAgICAgaWYgKHNoYWRvdyAmJiAhdGhpcy5fc3RhY2spIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNvcHRzID0gJC5leHRlbmQodHJ1ZSwge30sIG9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgc29wdHMuZmlsbFN0eWxlOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoY3R4LCBwb2ludHMsIHNvcHRzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGNsciA9IG9wdHMuZmlsbFN0eWxlIHx8IHRoaXMuY29sb3I7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YUNvbG9ycy5wdXNoKGNscik7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmRyYXcoY3R4LCBwb2ludHMsIG9wdHMpOwogICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgfQogICAgICAgIH0gICAgICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgaWYgKHRoaXMuaGlnaGxpZ2h0Q29sb3JzLmxlbmd0aCA9PSAwKSB7CiAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0Q29sb3JzID0gJC5qcXBsb3QuY29tcHV0ZUhpZ2hsaWdodENvbG9ycyh0aGlzLl9kYXRhQ29sb3JzKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZWxzZSBpZiAodHlwZW9mKHRoaXMuaGlnaGxpZ2h0Q29sb3JzKSA9PSAnc3RyaW5nJykgewogICAgICAgICAgICB2YXIgdGVtcCA9IHRoaXMuaGlnaGxpZ2h0Q29sb3JzOwogICAgICAgICAgICB0aGlzLmhpZ2hsaWdodENvbG9ycyA9IFtdOwogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5fZGF0YUNvbG9ycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRDb2xvcnMucHVzaCh0ZW1wKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgIH07CiAgICAKICAgICAKICAgIC8vIGZvciBzdGFja2VkIHBsb3RzLCBzaGFkb3dzIHdpbGwgYmUgcHJlIGRyYXduIGJ5IGRyYXdTaGFkb3cuCiAgICAkLmpxcGxvdC5CYXJSZW5kZXJlci5wcm90b3R5cGUuZHJhd1NoYWRvdyA9IGZ1bmN0aW9uKGN0eCwgZ3JpZERhdGEsIG9wdGlvbnMsIHBsb3QpIHsKICAgICAgICB2YXIgaTsKICAgICAgICB2YXIgb3B0cyA9IChvcHRpb25zICE9IHVuZGVmaW5lZCkgPyBvcHRpb25zIDoge307CiAgICAgICAgdmFyIHNoYWRvdyA9IChvcHRzLnNoYWRvdyAhPSB1bmRlZmluZWQpID8gb3B0cy5zaGFkb3cgOiB0aGlzLnNoYWRvdzsKICAgICAgICB2YXIgc2hvd0xpbmUgPSAob3B0cy5zaG93TGluZSAhPSB1bmRlZmluZWQpID8gb3B0cy5zaG93TGluZSA6IHRoaXMuc2hvd0xpbmU7CiAgICAgICAgdmFyIGZpbGwgPSAob3B0cy5maWxsICE9IHVuZGVmaW5lZCkgPyBvcHRzLmZpbGwgOiB0aGlzLmZpbGw7CiAgICAgICAgdmFyIHhheGlzID0gdGhpcy54YXhpczsKICAgICAgICB2YXIgeWF4aXMgPSB0aGlzLnlheGlzOwogICAgICAgIHZhciB4cCA9IHRoaXMuX3hheGlzLnNlcmllc191MnA7CiAgICAgICAgdmFyIHlwID0gdGhpcy5feWF4aXMuc2VyaWVzX3UycDsKICAgICAgICB2YXIgcG9pbnR4LCBwb2ludHMsIHBvaW50eSwgbnZhbHMsIG5zZXJpZXMsIHBvczsKICAgICAgICAKICAgICAgICBpZiAodGhpcy5fc3RhY2sgJiYgdGhpcy5zaGFkb3cpIHsKICAgICAgICAgICAgaWYgKHRoaXMuYmFyV2lkdGggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRCYXJXaWR0aC5jYWxsKHRoaXMpOwogICAgICAgICAgICB9CiAgICAgICAgCiAgICAgICAgICAgIHZhciB0ZW1wID0gdGhpcy5fcGxvdFNlcmllc0luZm8gPSB0aGlzLnJlbmRlcmVyLmNhbGNTZXJpZXNOdW1iZXJzLmNhbGwodGhpcyk7CiAgICAgICAgICAgIG52YWxzID0gdGVtcFswXTsKICAgICAgICAgICAgbnNlcmllcyA9IHRlbXBbMV07CiAgICAgICAgICAgIHBvcyA9IHRlbXBbMl07CiAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLl9zdGFjaykgewogICAgICAgICAgICAgICAgdGhpcy5fYmFyTnVkZ2UgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5fYmFyTnVkZ2UgPSAoLU1hdGguYWJzKG5zZXJpZXMvMiAtIDAuNSkgKyBwb3MpICogKHRoaXMuYmFyV2lkdGggKyB0aGlzLmJhclBhZGRpbmcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChzaG93TGluZSkgewogICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmICh0aGlzLmJhckRpcmVjdGlvbiA9PSAndmVydGljYWwnKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPGdyaWREYXRhLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFbaV1bMV0gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiYXNlID0gZ3JpZERhdGFbaV1bMF0gKyB0aGlzLl9iYXJOdWRnZTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHlzdGFydDsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3N0YWNrICYmIHRoaXMuX3ByZXZHcmlkRGF0YS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdGFydCA9IGdldFN0YXJ0KHRoaXMuaW5kZXgsIGksIHRoaXMuX3Bsb3REYXRhW2ldWzFdLCBwbG90LCAneScpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsbFRvWmVybykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdGFydCA9IHRoaXMuX3lheGlzLnNlcmllc191MnAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RhcnQgPSBjdHguY2FudmFzLmhlaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbYmFzZS10aGlzLmJhcldpZHRoLzIsIHlzdGFydF0pOwogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbYmFzZS10aGlzLmJhcldpZHRoLzIsIGdyaWREYXRhW2ldWzFdXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cy5wdXNoKFtiYXNlK3RoaXMuYmFyV2lkdGgvMiwgZ3JpZERhdGFbaV1bMV1dKTsKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnB1c2goW2Jhc2UrdGhpcy5iYXJXaWR0aC8yLCB5c3RhcnRdKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KGN0eCwgcG9pbnRzLCBvcHRzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5iYXJEaXJlY3Rpb24gPT0gJ2hvcml6b250YWwnKXsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8Z3JpZERhdGEubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVtpXVswXSA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbXTsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGJhc2UgPSBncmlkRGF0YVtpXVsxXSAtIHRoaXMuX2Jhck51ZGdlOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgeHN0YXJ0OwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fc3RhY2sgJiYgdGhpcy5fcHJldkdyaWREYXRhLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0gZ2V0U3RhcnQodGhpcy5pbmRleCwgaSwgdGhpcy5fcGxvdERhdGFbaV1bMF0sIHBsb3QsICd4Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5maWxsVG9aZXJvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0gdGhpcy5feGF4aXMuc2VyaWVzX3UycCgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdGFydCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnB1c2goW3hzdGFydCwgYmFzZSt0aGlzLmJhcldpZHRoLzJdKTsKICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRzLnB1c2goW2dyaWREYXRhW2ldWzBdLCBiYXNlK3RoaXMuYmFyV2lkdGgvMl0pOwogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMucHVzaChbZ3JpZERhdGFbaV1bMF0sIGJhc2UtdGhpcy5iYXJXaWR0aC8yXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cy5wdXNoKFt4c3RhcnQsIGJhc2UtdGhpcy5iYXJXaWR0aC8yXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIHBvaW50cywgb3B0cyk7CiAgICAgICAgICAgICAgICAgICAgfSAgCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gICAKICAgICAgICAgICAgCiAgICAgICAgfQogICAgfTsKICAgIAogICAgZnVuY3Rpb24gcG9zdEluaXQodGFyZ2V0LCBkYXRhLCBvcHRpb25zKSB7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMuc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmICh0aGlzLnNlcmllc1tpXS5yZW5kZXJlci5jb25zdHJ1Y3RvciA9PSAkLmpxcGxvdC5CYXJSZW5kZXJlcikgewogICAgICAgICAgICAgICAgLy8gZG9uJ3QgYWxsb3cgbW91c2VvdmVyIGFuZCBtb3VzZWRvd24gYXQgc2FtZSB0aW1lLgogICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VyaWVzW2ldLmhpZ2hsaWdodE1vdXNlT3ZlcikgewogICAgICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzW2ldLmhpZ2hsaWdodE1vdXNlRG93biA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgCiAgICAvLyBjYWxsZWQgd2l0aGluIGNvbnRleHQgb2YgcGxvdAogICAgLy8gY3JlYXRlIGEgY2FudmFzIHdoaWNoIHdlIGNhbiBkcmF3IG9uLgogICAgLy8gaW5zZXJ0IGl0IGJlZm9yZSB0aGUgZXZlbnRDYW52YXMsIHNvIGV2ZW50Q2FudmFzIHdpbGwgc3RpbGwgY2FwdHVyZSBldmVudHMuCiAgICBmdW5jdGlvbiBwb3N0UGxvdERyYXcoKSB7CiAgICAgICAgLy8gTWVtb3J5IExlYWtzIHBhdGNoICAgIAogICAgICAgIGlmICh0aGlzLnBsdWdpbnMuYmFyUmVuZGVyZXIgJiYgdGhpcy5wbHVnaW5zLmJhclJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcykgewoKICAgICAgICAgICAgdGhpcy5wbHVnaW5zLmJhclJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5yZXNldENhbnZhcygpOwogICAgICAgICAgICB0aGlzLnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzID0gbnVsbDsKICAgICAgICB9CiAgICAgICAgIAogICAgICAgIHRoaXMucGx1Z2lucy5iYXJSZW5kZXJlciA9IHtoaWdobGlnaHRlZFNlcmllc0luZGV4Om51bGx9OwogICAgICAgIHRoaXMucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRDYW52YXMgPSBuZXcgJC5qcXBsb3QuR2VuZXJpY0NhbnZhcygpOwogICAgICAgIAogICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKHRoaXMucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywgJ2pxcGxvdC1iYXJSZW5kZXJlci1oaWdobGlnaHQtY2FudmFzJywgdGhpcy5fcGxvdERpbWVuc2lvbnMsIHRoaXMpKTsKICAgICAgICB0aGlzLnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnNldENvbnRleHQoKTsKICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJ21vdXNlbGVhdmUnLCB7cGxvdDp0aGlzfSwgZnVuY3Rpb24gKGV2KSB7IHVuaGlnaGxpZ2h0KGV2LmRhdGEucGxvdCk7IH0pOwogICAgfSAgIAogICAgCiAgICBmdW5jdGlvbiBoaWdobGlnaHQgKHBsb3QsIHNpZHgsIHBpZHgsIHBvaW50cykgewogICAgICAgIHZhciBzID0gcGxvdC5zZXJpZXNbc2lkeF07CiAgICAgICAgdmFyIGNhbnZhcyA9IHBsb3QucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7CiAgICAgICAgY2FudmFzLl9jdHguY2xlYXJSZWN0KDAsMCxjYW52YXMuX2N0eC5jYW52YXMud2lkdGgsIGNhbnZhcy5fY3R4LmNhbnZhcy5oZWlnaHQpOwogICAgICAgIHMuX2hpZ2hsaWdodGVkUG9pbnQgPSBwaWR4OwogICAgICAgIHBsb3QucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ID0gc2lkeDsKICAgICAgICB2YXIgb3B0cyA9IHtmaWxsU3R5bGU6IHMuaGlnaGxpZ2h0Q29sb3JzW3BpZHhdfTsKICAgICAgICBzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhjYW52YXMuX2N0eCwgcG9pbnRzLCBvcHRzKTsKICAgICAgICBjYW52YXMgPSBudWxsOwogICAgfQogICAgCiAgICBmdW5jdGlvbiB1bmhpZ2hsaWdodCAocGxvdCkgewogICAgICAgIHZhciBjYW52YXMgPSBwbG90LnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzOwogICAgICAgIGNhbnZhcy5fY3R4LmNsZWFyUmVjdCgwLDAsIGNhbnZhcy5fY3R4LmNhbnZhcy53aWR0aCwgY2FudmFzLl9jdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHBsb3Quc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHBsb3Quc2VyaWVzW2ldLl9oaWdobGlnaHRlZFBvaW50ID0gbnVsbDsKICAgICAgICB9CiAgICAgICAgcGxvdC5wbHVnaW5zLmJhclJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXggPSBudWxsOwogICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoJ2pxcGxvdERhdGFVbmhpZ2hsaWdodCcpOwogICAgICAgIGNhbnZhcyA9ICBudWxsOwogICAgfQogICAgCiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdmUoZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgaWYgKG5laWdoYm9yKSB7CiAgICAgICAgICAgIHZhciBpbnMgPSBbbmVpZ2hib3Iuc2VyaWVzSW5kZXgsIG5laWdoYm9yLnBvaW50SW5kZXgsIG5laWdoYm9yLmRhdGFdOwogICAgICAgICAgICB2YXIgZXZ0MSA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YU1vdXNlT3ZlcicpOwogICAgICAgICAgICBldnQxLnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgIGV2dDEucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQxLCBpbnMpOwogICAgICAgICAgICBpZiAocGxvdC5zZXJpZXNbaW5zWzBdXS5zaG93ICYmIHBsb3Quc2VyaWVzW2luc1swXV0uaGlnaGxpZ2h0TW91c2VPdmVyICYmCiAgICAgICAgICAgICAgICAhKGluc1swXSA9PSBwbG90LnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCAmJiBpbnNbMV0gPT0gcGxvdC5zZXJpZXNbaW5zWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpIHsKICAgICAgICAgICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ2pxcGxvdERhdGFIaWdobGlnaHQnKTsKICAgICAgICAgICAgICAgIGV2dC53aGljaCA9IGV2LndoaWNoOwogICAgICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoZXZ0LCBpbnMpOwogICAgICAgICAgICAgICAgaGlnaGxpZ2h0IChwbG90LCBuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IucG9pbnRzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChuZWlnaGJvciA9PSBudWxsKSB7CiAgICAgICAgICAgIHVuaGlnaGxpZ2h0IChwbG90KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlRG93bihldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAobmVpZ2hib3IpIHsKICAgICAgICAgICAgdmFyIGlucyA9IFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IuZGF0YV07CiAgICAgICAgICAgIGlmIChwbG90LnNlcmllc1tpbnNbMF1dLmhpZ2hsaWdodE1vdXNlRG93biAmJiAhKGluc1swXSA9PSBwbG90LnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCAmJiBpbnNbMV0gPT0gcGxvdC5zZXJpZXNbaW5zWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpIHsKICAgICAgICAgICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ2pxcGxvdERhdGFIaWdobGlnaHQnKTsKICAgICAgICAgICAgICAgIGV2dC53aGljaCA9IGV2LndoaWNoOwogICAgICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoZXZ0LCBpbnMpOwogICAgICAgICAgICAgICAgaGlnaGxpZ2h0IChwbG90LCBuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IucG9pbnRzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChuZWlnaGJvciA9PSBudWxsKSB7CiAgICAgICAgICAgIHVuaGlnaGxpZ2h0IChwbG90KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlVXAoZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgdmFyIGlkeCA9IHBsb3QucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4OwogICAgICAgIGlmIChpZHggIT0gbnVsbCAmJiBwbG90LnNlcmllc1tpZHhdLmhpZ2hsaWdodE1vdXNlRG93bikgewogICAgICAgICAgICB1bmhpZ2hsaWdodChwbG90KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIGlmIChuZWlnaGJvcikgewogICAgICAgICAgICB2YXIgaW5zID0gW25laWdoYm9yLnNlcmllc0luZGV4LCBuZWlnaGJvci5wb2ludEluZGV4LCBuZWlnaGJvci5kYXRhXTsKICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YUNsaWNrJyk7CiAgICAgICAgICAgIGV2dC53aGljaCA9IGV2LndoaWNoOwogICAgICAgICAgICBldnQucGFnZVggPSBldi5wYWdlWDsKICAgICAgICAgICAgZXZ0LnBhZ2VZID0gZXYucGFnZVk7CiAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoZXZ0LCBpbnMpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgZnVuY3Rpb24gaGFuZGxlUmlnaHRDbGljayhldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAobmVpZ2hib3IpIHsKICAgICAgICAgICAgdmFyIGlucyA9IFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IuZGF0YV07CiAgICAgICAgICAgIHZhciBpZHggPSBwbG90LnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDsKICAgICAgICAgICAgaWYgKGlkeCAhPSBudWxsICYmIHBsb3Quc2VyaWVzW2lkeF0uaGlnaGxpZ2h0TW91c2VEb3duKSB7CiAgICAgICAgICAgICAgICB1bmhpZ2hsaWdodChwbG90KTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgZXZ0ID0galF1ZXJ5LkV2ZW50KCdqcXBsb3REYXRhUmlnaHRDbGljaycpOwogICAgICAgICAgICBldnQud2hpY2ggPSBldi53aGljaDsKICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKGV2dCwgaW5zKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIAp9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.barRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGQpe2QuanFwbG90LkJhclJlbmRlcmVyPWZ1bmN0aW9uKCl7ZC5qcXBsb3QuTGluZVJlbmRlcmVyLmNhbGwodGhpcyl9O2QuanFwbG90LkJhclJlbmRlcmVyLnByb3RvdHlwZT1uZXcgZC5qcXBsb3QuTGluZVJlbmRlcmVyKCk7ZC5qcXBsb3QuQmFyUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWQuanFwbG90LkJhclJlbmRlcmVyO2QuanFwbG90LkJhclJlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKG8scSl7dGhpcy5iYXJQYWRkaW5nPTg7dGhpcy5iYXJNYXJnaW49MTA7dGhpcy5iYXJEaXJlY3Rpb249InZlcnRpY2FsIjt0aGlzLmJhcldpZHRoPW51bGw7dGhpcy5zaGFkb3dPZmZzZXQ9Mjt0aGlzLnNoYWRvd0RlcHRoPTU7dGhpcy5zaGFkb3dBbHBoYT0wLjA4O3RoaXMud2F0ZXJmYWxsPWZhbHNlO3RoaXMuZ3JvdXBzPTE7dGhpcy52YXJ5QmFyQ29sb3I9ZmFsc2U7dGhpcy5oaWdobGlnaHRNb3VzZU92ZXI9dHJ1ZTt0aGlzLmhpZ2hsaWdodE1vdXNlRG93bj1mYWxzZTt0aGlzLmhpZ2hsaWdodENvbG9ycz1bXTt0aGlzLnRyYW5zcG9zZWREYXRhPXRydWU7dGhpcy5yZW5kZXJlci5hbmltYXRpb249e3Nob3c6ZmFsc2UsZGlyZWN0aW9uOiJkb3duIixzcGVlZDozMDAwLF9zdXBwb3J0ZWQ6dHJ1ZX07dGhpcy5fdHlwZT0iYmFyIjtpZihvLmhpZ2hsaWdodE1vdXNlRG93biYmby5oaWdobGlnaHRNb3VzZU92ZXI9PW51bGwpe28uaGlnaGxpZ2h0TW91c2VPdmVyPWZhbHNlfWQuZXh0ZW5kKHRydWUsdGhpcyxvKTtkLmV4dGVuZCh0cnVlLHRoaXMucmVuZGVyZXIsbyk7dGhpcy5maWxsPXRydWU7aWYodGhpcy5iYXJEaXJlY3Rpb249PT0iaG9yaXpvbnRhbCImJnRoaXMucmVuZGVyZXJPcHRpb25zLmFuaW1hdGlvbiYmdGhpcy5yZW5kZXJlck9wdGlvbnMuYW5pbWF0aW9uLmRpcmVjdGlvbj09bnVsbCl7dGhpcy5yZW5kZXJlci5hbmltYXRpb24uZGlyZWN0aW9uPSJsZWZ0In1pZih0aGlzLndhdGVyZmFsbCl7dGhpcy5maWxsVG9aZXJvPWZhbHNlO3RoaXMuZGlzYWJsZVN0YWNrPXRydWV9aWYodGhpcy5iYXJEaXJlY3Rpb249PSJ2ZXJ0aWNhbCIpe3RoaXMuX3ByaW1hcnlBeGlzPSJfeGF4aXMiO3RoaXMuX3N0YWNrQXhpcz0ieSI7dGhpcy5maWxsQXhpcz0ieSJ9ZWxzZXt0aGlzLl9wcmltYXJ5QXhpcz0iX3lheGlzIjt0aGlzLl9zdGFja0F4aXM9IngiO3RoaXMuZmlsbEF4aXM9IngifXRoaXMuX2hpZ2hsaWdodGVkUG9pbnQ9bnVsbDt0aGlzLl9wbG90U2VyaWVzSW5mbz1udWxsO3RoaXMuX2RhdGFDb2xvcnM9W107dGhpcy5fYmFyUG9pbnRzPVtdO3ZhciBwPXtsaW5lSm9pbjoibWl0ZXIiLGxpbmVDYXA6InJvdW5kIixmaWxsOnRydWUsaXNhcmM6ZmFsc2Usc3Ryb2tlU3R5bGU6dGhpcy5jb2xvcixmaWxsU3R5bGU6dGhpcy5jb2xvcixjbG9zZVBhdGg6dGhpcy5maWxsfTt0aGlzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuaW5pdChwKTt2YXIgbj17bGluZUpvaW46Im1pdGVyIixsaW5lQ2FwOiJyb3VuZCIsZmlsbDp0cnVlLGlzYXJjOmZhbHNlLGFuZ2xlOnRoaXMuc2hhZG93QW5nbGUsb2Zmc2V0OnRoaXMuc2hhZG93T2Zmc2V0LGFscGhhOnRoaXMuc2hhZG93QWxwaGEsZGVwdGg6dGhpcy5zaGFkb3dEZXB0aCxjbG9zZVBhdGg6dGhpcy5maWxsfTt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmluaXQobik7cS5wb3N0SW5pdEhvb2tzLmFkZE9uY2UoaCk7cS5wb3N0RHJhd0hvb2tzLmFkZE9uY2Uoaik7cS5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90TW91c2VNb3ZlIixiKTtxLmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RNb3VzZURvd24iLGEpO3EuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdE1vdXNlVXAiLGwpO3EuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdENsaWNrIixlKTtxLmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RSaWdodENsaWNrIixtKX07ZnVuY3Rpb24gZyh0LHAsbyx3KXtpZih0aGlzLnJlbmRlcmVyT3B0aW9ucy5iYXJEaXJlY3Rpb249PSJob3Jpem9udGFsIil7dGhpcy5fc3RhY2tBeGlzPSJ4Ijt0aGlzLl9wcmltYXJ5QXhpcz0iX3lheGlzIn1pZih0aGlzLnJlbmRlcmVyT3B0aW9ucy53YXRlcmZhbGw9PXRydWUpe3RoaXMuX2RhdGE9ZC5leHRlbmQodHJ1ZSxbXSx0aGlzLmRhdGEpO3ZhciBzPTA7dmFyIHU9KCF0aGlzLnJlbmRlcmVyT3B0aW9ucy5iYXJEaXJlY3Rpb258fHRoaXMucmVuZGVyZXJPcHRpb25zLmJhckRpcmVjdGlvbj09PSJ2ZXJ0aWNhbCJ8fHRoaXMudHJhbnNwb3NlZERhdGE9PT1mYWxzZSk/MTowO2Zvcih2YXIgcT0wO3E8dGhpcy5kYXRhLmxlbmd0aDtxKyspe3MrPXRoaXMuZGF0YVtxXVt1XTtpZihxPjApe3RoaXMuZGF0YVtxXVt1XSs9dGhpcy5kYXRhW3EtMV1bdV19fXRoaXMuZGF0YVt0aGlzLmRhdGEubGVuZ3RoXT0odT09MSk/W3RoaXMuZGF0YS5sZW5ndGgrMSxzXTpbcyx0aGlzLmRhdGEubGVuZ3RoKzFdO3RoaXMuX2RhdGFbdGhpcy5fZGF0YS5sZW5ndGhdPSh1PT0xKT9bdGhpcy5fZGF0YS5sZW5ndGgrMSxzXTpbcyx0aGlzLl9kYXRhLmxlbmd0aCsxXX1pZih0aGlzLnJlbmRlcmVyT3B0aW9ucy5ncm91cHM+MSl7dGhpcy5icmVha09uTnVsbD10cnVlO3ZhciBuPXRoaXMuZGF0YS5sZW5ndGg7dmFyIHY9cGFyc2VJbnQobi90aGlzLnJlbmRlcmVyT3B0aW9ucy5ncm91cHMsMTApO3ZhciByPTA7Zm9yKHZhciBxPXY7cTxuO3ErPXYpe3RoaXMuZGF0YS5zcGxpY2UocStyLDAsW251bGwsbnVsbF0pO3RoaXMuX3Bsb3REYXRhLnNwbGljZShxK3IsMCxbbnVsbCxudWxsXSk7dGhpcy5fc3RhY2tEYXRhLnNwbGljZShxK3IsMCxbbnVsbCxudWxsXSk7cisrfWZvcihxPTA7cTx0aGlzLmRhdGEubGVuZ3RoO3ErKyl7aWYodGhpcy5fcHJpbWFyeUF4aXM9PSJfeGF4aXMiKXt0aGlzLmRhdGFbcV1bMF09cSsxO3RoaXMuX3Bsb3REYXRhW3FdWzBdPXErMTt0aGlzLl9zdGFja0RhdGFbcV1bMF09cSsxfWVsc2V7dGhpcy5kYXRhW3FdWzFdPXErMTt0aGlzLl9wbG90RGF0YVtxXVsxXT1xKzE7dGhpcy5fc3RhY2tEYXRhW3FdWzFdPXErMX19fX1kLmpxcGxvdC5wcmVTZXJpZXNJbml0SG9va3MucHVzaChnKTtkLmpxcGxvdC5CYXJSZW5kZXJlci5wcm90b3R5cGUuY2FsY1Nlcmllc051bWJlcnM9ZnVuY3Rpb24oKXt2YXIgcj0wO3ZhciB0PTA7dmFyIHE9dGhpc1t0aGlzLl9wcmltYXJ5QXhpc107dmFyIHAsbyx1O2Zvcih2YXIgbj0wO248cS5fc2VyaWVzLmxlbmd0aDtuKyspe289cS5fc2VyaWVzW25dO2lmKG89PT10aGlzKXt1PW59aWYoby5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09ZC5qcXBsb3QuQmFyUmVuZGVyZXIpe3IrPW8uZGF0YS5sZW5ndGg7dCs9MX19cmV0dXJuW3IsdCx1XX07ZC5qcXBsb3QuQmFyUmVuZGVyZXIucHJvdG90eXBlLnNldEJhcldpZHRoPWZ1bmN0aW9uKCl7dmFyIHE7dmFyIG49MDt2YXIgbz0wO3ZhciB0PXRoaXNbdGhpcy5fcHJpbWFyeUF4aXNdO3ZhciB4LHIsdjt2YXIgdz10aGlzLl9wbG90U2VyaWVzSW5mbz10aGlzLnJlbmRlcmVyLmNhbGNTZXJpZXNOdW1iZXJzLmNhbGwodGhpcyk7bj13WzBdO289d1sxXTt2YXIgdT10Lm51bWJlclRpY2tzO3ZhciBwPSh1LTEpLzI7aWYodC5uYW1lPT0ieGF4aXMifHx0Lm5hbWU9PSJ4MmF4aXMiKXtpZih0aGlzLl9zdGFjayl7dGhpcy5iYXJXaWR0aD0odC5fb2Zmc2V0cy5tYXgtdC5fb2Zmc2V0cy5taW4pL24qby10aGlzLmJhck1hcmdpbn1lbHNle3RoaXMuYmFyV2lkdGg9KCh0Ll9vZmZzZXRzLm1heC10Ll9vZmZzZXRzLm1pbikvcC10aGlzLmJhclBhZGRpbmcqKG8tMSktdGhpcy5iYXJNYXJnaW4qMikvb319ZWxzZXtpZih0aGlzLl9zdGFjayl7dGhpcy5iYXJXaWR0aD0odC5fb2Zmc2V0cy5taW4tdC5fb2Zmc2V0cy5tYXgpL24qby10aGlzLmJhck1hcmdpbn1lbHNle3RoaXMuYmFyV2lkdGg9KCh0Ll9vZmZzZXRzLm1pbi10Ll9vZmZzZXRzLm1heCkvcC10aGlzLmJhclBhZGRpbmcqKG8tMSktdGhpcy5iYXJNYXJnaW4qMikvb319cmV0dXJuW24sb119O2Z1bmN0aW9uIGYobyl7dmFyIHE9W107Zm9yKHZhciBzPTA7czxvLmxlbmd0aDtzKyspe3ZhciByPWQuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyhvW3NdKTt2YXIgbj1bclswXSxyWzFdLHJbMl1dO3ZhciB0PW5bMF0rblsxXStuWzJdO2Zvcih2YXIgcD0wO3A8MztwKyspe25bcF09KHQ+NTcwKT9uW3BdKjAuODpuW3BdKzAuMyooMjU1LW5bcF0pO25bcF09cGFyc2VJbnQobltwXSwxMCl9cS5wdXNoKCJyZ2IoIituWzBdKyIsIituWzFdKyIsIituWzJdKyIpIil9cmV0dXJuIHF9ZnVuY3Rpb24gaSh2LHUscyx0LG8pe3ZhciBxPXYsdz12LTEsbixwLHI9KG89PT0ieCIpPzA6MTtpZihxPjApe3A9dC5zZXJpZXNbd10uX3Bsb3REYXRhW3VdW3JdO2lmKChzKnApPDApe249aSh3LHUscyx0LG8pfWVsc2V7bj10LnNlcmllc1t3XS5ncmlkRGF0YVt1XVtyXX19ZWxzZXtuPShyPT09MCk/dC5zZXJpZXNbcV0uX3hheGlzLnNlcmllc191MnAoMCk6dC5zZXJpZXNbcV0uX3lheGlzLnNlcmllc191MnAoMCl9cmV0dXJuIG59ZC5qcXBsb3QuQmFyUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oRSxMLHEsRyl7dmFyIEk7dmFyIEE9ZC5leHRlbmQoe30scSk7dmFyIHc9KEEuc2hhZG93IT11bmRlZmluZWQpP0Euc2hhZG93OnRoaXMuc2hhZG93O3ZhciBPPShBLnNob3dMaW5lIT11bmRlZmluZWQpP0Euc2hvd0xpbmU6dGhpcy5zaG93TGluZTt2YXIgRj0oQS5maWxsIT11bmRlZmluZWQpP0EuZmlsbDp0aGlzLmZpbGw7dmFyIHA9dGhpcy54YXhpczt2YXIgSj10aGlzLnlheGlzO3ZhciB5PXRoaXMuX3hheGlzLnNlcmllc191MnA7dmFyIEs9dGhpcy5feWF4aXMuc2VyaWVzX3UycDt2YXIgRCxDO3RoaXMuX2RhdGFDb2xvcnM9W107dGhpcy5fYmFyUG9pbnRzPVtdO2lmKHRoaXMuYmFyV2lkdGg9PW51bGwpe3RoaXMucmVuZGVyZXIuc2V0QmFyV2lkdGguY2FsbCh0aGlzKX12YXIgTj10aGlzLl9wbG90U2VyaWVzSW5mbz10aGlzLnJlbmRlcmVyLmNhbGNTZXJpZXNOdW1iZXJzLmNhbGwodGhpcyk7dmFyIHg9TlswXTt2YXIgdj1OWzFdO3ZhciBzPU5bMl07dmFyIEg9W107aWYodGhpcy5fc3RhY2spe3RoaXMuX2Jhck51ZGdlPTB9ZWxzZXt0aGlzLl9iYXJOdWRnZT0oLU1hdGguYWJzKHYvMi0wLjUpK3MpKih0aGlzLmJhcldpZHRoK3RoaXMuYmFyUGFkZGluZyl9aWYoTyl7dmFyIHU9bmV3IGQuanFwbG90LkNvbG9yR2VuZXJhdG9yKHRoaXMubmVnYXRpdmVTZXJpZXNDb2xvcnMpO3ZhciBCPW5ldyBkLmpxcGxvdC5Db2xvckdlbmVyYXRvcih0aGlzLnNlcmllc0NvbG9ycyk7dmFyIE09dS5nZXQodGhpcy5pbmRleCk7aWYoIXRoaXMudXNlTmVnYXRpdmVDb2xvcnMpe009QS5maWxsU3R5bGV9dmFyIHQ9QS5maWxsU3R5bGU7dmFyIHI7dmFyIFA7dmFyIG87aWYodGhpcy5iYXJEaXJlY3Rpb249PSJ2ZXJ0aWNhbCIpe2Zvcih2YXIgST0wO0k8TC5sZW5ndGg7SSsrKXtpZighdGhpcy5fc3RhY2smJnRoaXMuZGF0YVtJXVsxXT09bnVsbCl7Y29udGludWV9SD1bXTtyPUxbSV1bMF0rdGhpcy5fYmFyTnVkZ2U7aWYodGhpcy5fc3RhY2smJnRoaXMuX3ByZXZHcmlkRGF0YS5sZW5ndGgpe289aSh0aGlzLmluZGV4LEksdGhpcy5fcGxvdERhdGFbSV1bMV0sRywieSIpfWVsc2V7aWYodGhpcy5maWxsVG9aZXJvKXtvPXRoaXMuX3lheGlzLnNlcmllc191MnAoMCl9ZWxzZXtpZih0aGlzLndhdGVyZmFsbCYmST4wJiZJPHRoaXMuZ3JpZERhdGEubGVuZ3RoLTEpe289dGhpcy5ncmlkRGF0YVtJLTFdWzFdfWVsc2V7aWYodGhpcy53YXRlcmZhbGwmJkk9PTAmJkk8dGhpcy5ncmlkRGF0YS5sZW5ndGgtMSl7aWYodGhpcy5feWF4aXMubWluPD0wJiZ0aGlzLl95YXhpcy5tYXg+PTApe289dGhpcy5feWF4aXMuc2VyaWVzX3UycCgwKX1lbHNle2lmKHRoaXMuX3lheGlzLm1pbj4wKXtvPUUuY2FudmFzLmhlaWdodH1lbHNle289MH19fWVsc2V7aWYodGhpcy53YXRlcmZhbGwmJkk9PXRoaXMuZ3JpZERhdGEubGVuZ3RoLTEpe2lmKHRoaXMuX3lheGlzLm1pbjw9MCYmdGhpcy5feWF4aXMubWF4Pj0wKXtvPXRoaXMuX3lheGlzLnNlcmllc191MnAoMCl9ZWxzZXtpZih0aGlzLl95YXhpcy5taW4+MCl7bz1FLmNhbnZhcy5oZWlnaHR9ZWxzZXtvPTB9fX1lbHNle289RS5jYW52YXMuaGVpZ2h0fX19fX1pZigodGhpcy5maWxsVG9aZXJvJiZ0aGlzLl9wbG90RGF0YVtJXVsxXTwwKXx8KHRoaXMud2F0ZXJmYWxsJiZ0aGlzLl9kYXRhW0ldWzFdPDApKXtpZih0aGlzLnZhcnlCYXJDb2xvciYmIXRoaXMuX3N0YWNrKXtpZih0aGlzLnVzZU5lZ2F0aXZlQ29sb3JzKXtBLmZpbGxTdHlsZT11Lm5leHQoKX1lbHNle0EuZmlsbFN0eWxlPUIubmV4dCgpfX1lbHNle0EuZmlsbFN0eWxlPU19fWVsc2V7aWYodGhpcy52YXJ5QmFyQ29sb3ImJiF0aGlzLl9zdGFjayl7QS5maWxsU3R5bGU9Qi5uZXh0KCl9ZWxzZXtBLmZpbGxTdHlsZT10fX1pZighdGhpcy5maWxsVG9aZXJvfHx0aGlzLl9wbG90RGF0YVtJXVsxXT49MCl7SC5wdXNoKFtyLXRoaXMuYmFyV2lkdGgvMixvXSk7SC5wdXNoKFtyLXRoaXMuYmFyV2lkdGgvMixMW0ldWzFdXSk7SC5wdXNoKFtyK3RoaXMuYmFyV2lkdGgvMixMW0ldWzFdXSk7SC5wdXNoKFtyK3RoaXMuYmFyV2lkdGgvMixvXSl9ZWxzZXtILnB1c2goW3ItdGhpcy5iYXJXaWR0aC8yLExbSV1bMV1dKTtILnB1c2goW3ItdGhpcy5iYXJXaWR0aC8yLG9dKTtILnB1c2goW3IrdGhpcy5iYXJXaWR0aC8yLG9dKTtILnB1c2goW3IrdGhpcy5iYXJXaWR0aC8yLExbSV1bMV1dKX10aGlzLl9iYXJQb2ludHMucHVzaChIKTtpZih3JiYhdGhpcy5fc3RhY2spe3ZhciB6PWQuZXh0ZW5kKHRydWUse30sQSk7ZGVsZXRlIHouZmlsbFN0eWxlO3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhFLEgseil9dmFyIG49QS5maWxsU3R5bGV8fHRoaXMuY29sb3I7dGhpcy5fZGF0YUNvbG9ycy5wdXNoKG4pO3RoaXMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5kcmF3KEUsSCxBKX19ZWxzZXtpZih0aGlzLmJhckRpcmVjdGlvbj09Imhvcml6b250YWwiKXtmb3IodmFyIEk9MDtJPEwubGVuZ3RoO0krKyl7aWYoIXRoaXMuX3N0YWNrJiZ0aGlzLmRhdGFbSV1bMF09PW51bGwpe2NvbnRpbnVlfUg9W107cj1MW0ldWzFdLXRoaXMuX2Jhck51ZGdlO1A7aWYodGhpcy5fc3RhY2smJnRoaXMuX3ByZXZHcmlkRGF0YS5sZW5ndGgpe1A9aSh0aGlzLmluZGV4LEksdGhpcy5fcGxvdERhdGFbSV1bMF0sRywieCIpfWVsc2V7aWYodGhpcy5maWxsVG9aZXJvKXtQPXRoaXMuX3hheGlzLnNlcmllc191MnAoMCl9ZWxzZXtpZih0aGlzLndhdGVyZmFsbCYmST4wJiZJPHRoaXMuZ3JpZERhdGEubGVuZ3RoLTEpe1A9dGhpcy5ncmlkRGF0YVtJLTFdWzBdfWVsc2V7aWYodGhpcy53YXRlcmZhbGwmJkk9PTAmJkk8dGhpcy5ncmlkRGF0YS5sZW5ndGgtMSl7aWYodGhpcy5feGF4aXMubWluPD0wJiZ0aGlzLl94YXhpcy5tYXg+PTApe1A9dGhpcy5feGF4aXMuc2VyaWVzX3UycCgwKX1lbHNle2lmKHRoaXMuX3hheGlzLm1pbj4wKXtQPTB9ZWxzZXtQPTB9fX1lbHNle2lmKHRoaXMud2F0ZXJmYWxsJiZJPT10aGlzLmdyaWREYXRhLmxlbmd0aC0xKXtpZih0aGlzLl94YXhpcy5taW48PTAmJnRoaXMuX3hheGlzLm1heD49MCl7UD10aGlzLl94YXhpcy5zZXJpZXNfdTJwKDApfWVsc2V7aWYodGhpcy5feGF4aXMubWluPjApe1A9MH1lbHNle1A9RS5jYW52YXMud2lkdGh9fX1lbHNle1A9MH19fX19aWYoKHRoaXMuZmlsbFRvWmVybyYmdGhpcy5fcGxvdERhdGFbSV1bMF08MCl8fCh0aGlzLndhdGVyZmFsbCYmdGhpcy5fZGF0YVtJXVswXTwwKSl7aWYodGhpcy52YXJ5QmFyQ29sb3ImJiF0aGlzLl9zdGFjayl7aWYodGhpcy51c2VOZWdhdGl2ZUNvbG9ycyl7QS5maWxsU3R5bGU9dS5uZXh0KCl9ZWxzZXtBLmZpbGxTdHlsZT1CLm5leHQoKX19ZWxzZXtBLmZpbGxTdHlsZT1NfX1lbHNle2lmKHRoaXMudmFyeUJhckNvbG9yJiYhdGhpcy5fc3RhY2spe0EuZmlsbFN0eWxlPUIubmV4dCgpfWVsc2V7QS5maWxsU3R5bGU9dH19aWYoIXRoaXMuZmlsbFRvWmVyb3x8dGhpcy5fcGxvdERhdGFbSV1bMF0+PTApe0gucHVzaChbUCxyK3RoaXMuYmFyV2lkdGgvMl0pO0gucHVzaChbUCxyLXRoaXMuYmFyV2lkdGgvMl0pO0gucHVzaChbTFtJXVswXSxyLXRoaXMuYmFyV2lkdGgvMl0pO0gucHVzaChbTFtJXVswXSxyK3RoaXMuYmFyV2lkdGgvMl0pfWVsc2V7SC5wdXNoKFtMW0ldWzBdLHIrdGhpcy5iYXJXaWR0aC8yXSk7SC5wdXNoKFtMW0ldWzBdLHItdGhpcy5iYXJXaWR0aC8yXSk7SC5wdXNoKFtQLHItdGhpcy5iYXJXaWR0aC8yXSk7SC5wdXNoKFtQLHIrdGhpcy5iYXJXaWR0aC8yXSl9dGhpcy5fYmFyUG9pbnRzLnB1c2goSCk7aWYodyYmIXRoaXMuX3N0YWNrKXt2YXIgej1kLmV4dGVuZCh0cnVlLHt9LEEpO2RlbGV0ZSB6LmZpbGxTdHlsZTt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoRSxILHopfXZhciBuPUEuZmlsbFN0eWxlfHx0aGlzLmNvbG9yO3RoaXMuX2RhdGFDb2xvcnMucHVzaChuKTt0aGlzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhFLEgsQSl9fX19aWYodGhpcy5oaWdobGlnaHRDb2xvcnMubGVuZ3RoPT0wKXt0aGlzLmhpZ2hsaWdodENvbG9ycz1kLmpxcGxvdC5jb21wdXRlSGlnaGxpZ2h0Q29sb3JzKHRoaXMuX2RhdGFDb2xvcnMpfWVsc2V7aWYodHlwZW9mKHRoaXMuaGlnaGxpZ2h0Q29sb3JzKT09InN0cmluZyIpe3ZhciBOPXRoaXMuaGlnaGxpZ2h0Q29sb3JzO3RoaXMuaGlnaGxpZ2h0Q29sb3JzPVtdO2Zvcih2YXIgST0wO0k8dGhpcy5fZGF0YUNvbG9ycy5sZW5ndGg7SSsrKXt0aGlzLmhpZ2hsaWdodENvbG9ycy5wdXNoKE4pfX19fTtkLmpxcGxvdC5CYXJSZW5kZXJlci5wcm90b3R5cGUuZHJhd1NoYWRvdz1mdW5jdGlvbih6LEcscCxCKXt2YXIgRDt2YXIgdz0ocCE9dW5kZWZpbmVkKT9wOnt9O3ZhciB0PSh3LnNoYWRvdyE9dW5kZWZpbmVkKT93LnNoYWRvdzp0aGlzLnNoYWRvdzt2YXIgST0ody5zaG93TGluZSE9dW5kZWZpbmVkKT93LnNob3dMaW5lOnRoaXMuc2hvd0xpbmU7dmFyIEE9KHcuZmlsbCE9dW5kZWZpbmVkKT93LmZpbGw6dGhpcy5maWxsO3ZhciBvPXRoaXMueGF4aXM7dmFyIEU9dGhpcy55YXhpczt2YXIgdj10aGlzLl94YXhpcy5zZXJpZXNfdTJwO3ZhciBGPXRoaXMuX3lheGlzLnNlcmllc191MnA7dmFyIHksQyx4LHUscyxyO2lmKHRoaXMuX3N0YWNrJiZ0aGlzLnNoYWRvdyl7aWYodGhpcy5iYXJXaWR0aD09bnVsbCl7dGhpcy5yZW5kZXJlci5zZXRCYXJXaWR0aC5jYWxsKHRoaXMpfXZhciBIPXRoaXMuX3Bsb3RTZXJpZXNJbmZvPXRoaXMucmVuZGVyZXIuY2FsY1Nlcmllc051bWJlcnMuY2FsbCh0aGlzKTt1PUhbMF07cz1IWzFdO3I9SFsyXTtpZih0aGlzLl9zdGFjayl7dGhpcy5fYmFyTnVkZ2U9MH1lbHNle3RoaXMuX2Jhck51ZGdlPSgtTWF0aC5hYnMocy8yLTAuNSkrcikqKHRoaXMuYmFyV2lkdGgrdGhpcy5iYXJQYWRkaW5nKX1pZihJKXtpZih0aGlzLmJhckRpcmVjdGlvbj09InZlcnRpY2FsIil7Zm9yKHZhciBEPTA7RDxHLmxlbmd0aDtEKyspe2lmKHRoaXMuZGF0YVtEXVsxXT09bnVsbCl7Y29udGludWV9Qz1bXTt2YXIgcT1HW0RdWzBdK3RoaXMuX2Jhck51ZGdlO3ZhciBuO2lmKHRoaXMuX3N0YWNrJiZ0aGlzLl9wcmV2R3JpZERhdGEubGVuZ3RoKXtuPWkodGhpcy5pbmRleCxELHRoaXMuX3Bsb3REYXRhW0RdWzFdLEIsInkiKX1lbHNle2lmKHRoaXMuZmlsbFRvWmVybyl7bj10aGlzLl95YXhpcy5zZXJpZXNfdTJwKDApfWVsc2V7bj16LmNhbnZhcy5oZWlnaHR9fUMucHVzaChbcS10aGlzLmJhcldpZHRoLzIsbl0pO0MucHVzaChbcS10aGlzLmJhcldpZHRoLzIsR1tEXVsxXV0pO0MucHVzaChbcSt0aGlzLmJhcldpZHRoLzIsR1tEXVsxXV0pO0MucHVzaChbcSt0aGlzLmJhcldpZHRoLzIsbl0pO3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyh6LEMsdyl9fWVsc2V7aWYodGhpcy5iYXJEaXJlY3Rpb249PSJob3Jpem9udGFsIil7Zm9yKHZhciBEPTA7RDxHLmxlbmd0aDtEKyspe2lmKHRoaXMuZGF0YVtEXVswXT09bnVsbCl7Y29udGludWV9Qz1bXTt2YXIgcT1HW0RdWzFdLXRoaXMuX2Jhck51ZGdlO3ZhciBKO2lmKHRoaXMuX3N0YWNrJiZ0aGlzLl9wcmV2R3JpZERhdGEubGVuZ3RoKXtKPWkodGhpcy5pbmRleCxELHRoaXMuX3Bsb3REYXRhW0RdWzBdLEIsIngiKX1lbHNle2lmKHRoaXMuZmlsbFRvWmVybyl7Sj10aGlzLl94YXhpcy5zZXJpZXNfdTJwKDApfWVsc2V7Sj0wfX1DLnB1c2goW0oscSt0aGlzLmJhcldpZHRoLzJdKTtDLnB1c2goW0dbRF1bMF0scSt0aGlzLmJhcldpZHRoLzJdKTtDLnB1c2goW0dbRF1bMF0scS10aGlzLmJhcldpZHRoLzJdKTtDLnB1c2goW0oscS10aGlzLmJhcldpZHRoLzJdKTt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoeixDLHcpfX19fX19O2Z1bmN0aW9uIGgocSxwLG4pe2Zvcih2YXIgbz0wO288dGhpcy5zZXJpZXMubGVuZ3RoO28rKyl7aWYodGhpcy5zZXJpZXNbb10ucmVuZGVyZXIuY29uc3RydWN0b3I9PWQuanFwbG90LkJhclJlbmRlcmVyKXtpZih0aGlzLnNlcmllc1tvXS5oaWdobGlnaHRNb3VzZU92ZXIpe3RoaXMuc2VyaWVzW29dLmhpZ2hsaWdodE1vdXNlRG93bj1mYWxzZX19fX1mdW5jdGlvbiBqKCl7aWYodGhpcy5wbHVnaW5zLmJhclJlbmRlcmVyJiZ0aGlzLnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzKXt0aGlzLnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnJlc2V0Q2FudmFzKCk7dGhpcy5wbHVnaW5zLmJhclJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcz1udWxsfXRoaXMucGx1Z2lucy5iYXJSZW5kZXJlcj17aGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDpudWxsfTt0aGlzLnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzPW5ldyBkLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUodGhpcy5wbHVnaW5zLmJhclJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCJqcXBsb3QtYmFyUmVuZGVyZXItaGlnaGxpZ2h0LWNhbnZhcyIsdGhpcy5fcGxvdERpbWVuc2lvbnMsdGhpcykpO3RoaXMucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuc2V0Q29udGV4dCgpO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgibW91c2VsZWF2ZSIse3Bsb3Q6dGhpc30sZnVuY3Rpb24obil7ayhuLmRhdGEucGxvdCl9KX1mdW5jdGlvbiBjKHUsdCxxLHApe3ZhciBvPXUuc2VyaWVzW3RdO3ZhciBuPXUucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7bi5fY3R4LmNsZWFyUmVjdCgwLDAsbi5fY3R4LmNhbnZhcy53aWR0aCxuLl9jdHguY2FudmFzLmhlaWdodCk7by5faGlnaGxpZ2h0ZWRQb2ludD1xO3UucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4PXQ7dmFyIHI9e2ZpbGxTdHlsZTpvLmhpZ2hsaWdodENvbG9yc1txXX07by5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmRyYXcobi5fY3R4LHAscik7bj1udWxsfWZ1bmN0aW9uIGsocCl7dmFyIG49cC5wbHVnaW5zLmJhclJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcztuLl9jdHguY2xlYXJSZWN0KDAsMCxuLl9jdHguY2FudmFzLndpZHRoLG4uX2N0eC5jYW52YXMuaGVpZ2h0KTtmb3IodmFyIG89MDtvPHAuc2VyaWVzLmxlbmd0aDtvKyspe3Auc2VyaWVzW29dLl9oaWdobGlnaHRlZFBvaW50PW51bGx9cC5wbHVnaW5zLmJhclJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg9bnVsbDtwLnRhcmdldC50cmlnZ2VyKCJqcXBsb3REYXRhVW5oaWdobGlnaHQiKTtuPW51bGx9ZnVuY3Rpb24gYihyLHEsdSx0LHMpe2lmKHQpe3ZhciBwPVt0LnNlcmllc0luZGV4LHQucG9pbnRJbmRleCx0LmRhdGFdO3ZhciBvPWpRdWVyeS5FdmVudCgianFwbG90RGF0YU1vdXNlT3ZlciIpO28ucGFnZVg9ci5wYWdlWDtvLnBhZ2VZPXIucGFnZVk7cy50YXJnZXQudHJpZ2dlcihvLHApO2lmKHMuc2VyaWVzW3BbMF1dLnNob3cmJnMuc2VyaWVzW3BbMF1dLmhpZ2hsaWdodE1vdXNlT3ZlciYmIShwWzBdPT1zLnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCYmcFsxXT09cy5zZXJpZXNbcFswXV0uX2hpZ2hsaWdodGVkUG9pbnQpKXt2YXIgbj1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFIaWdobGlnaHQiKTtuLndoaWNoPXIud2hpY2g7bi5wYWdlWD1yLnBhZ2VYO24ucGFnZVk9ci5wYWdlWTtzLnRhcmdldC50cmlnZ2VyKG4scCk7YyhzLHQuc2VyaWVzSW5kZXgsdC5wb2ludEluZGV4LHQucG9pbnRzKX19ZWxzZXtpZih0PT1udWxsKXtrKHMpfX19ZnVuY3Rpb24gYShxLHAsdCxzLHIpe2lmKHMpe3ZhciBvPVtzLnNlcmllc0luZGV4LHMucG9pbnRJbmRleCxzLmRhdGFdO2lmKHIuc2VyaWVzW29bMF1dLmhpZ2hsaWdodE1vdXNlRG93biYmIShvWzBdPT1yLnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCYmb1sxXT09ci5zZXJpZXNbb1swXV0uX2hpZ2hsaWdodGVkUG9pbnQpKXt2YXIgbj1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFIaWdobGlnaHQiKTtuLndoaWNoPXEud2hpY2g7bi5wYWdlWD1xLnBhZ2VYO24ucGFnZVk9cS5wYWdlWTtyLnRhcmdldC50cmlnZ2VyKG4sbyk7YyhyLHMuc2VyaWVzSW5kZXgscy5wb2ludEluZGV4LHMucG9pbnRzKX19ZWxzZXtpZihzPT1udWxsKXtrKHIpfX19ZnVuY3Rpb24gbChwLG8scyxyLHEpe3ZhciBuPXEucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4O2lmKG4hPW51bGwmJnEuc2VyaWVzW25dLmhpZ2hsaWdodE1vdXNlRG93bil7ayhxKX19ZnVuY3Rpb24gZShxLHAsdCxzLHIpe2lmKHMpe3ZhciBvPVtzLnNlcmllc0luZGV4LHMucG9pbnRJbmRleCxzLmRhdGFdO3ZhciBuPWpRdWVyeS5FdmVudCgianFwbG90RGF0YUNsaWNrIik7bi53aGljaD1xLndoaWNoO24ucGFnZVg9cS5wYWdlWDtuLnBhZ2VZPXEucGFnZVk7ci50YXJnZXQudHJpZ2dlcihuLG8pfX1mdW5jdGlvbiBtKHIscSx1LHQscyl7aWYodCl7dmFyIHA9W3Quc2VyaWVzSW5kZXgsdC5wb2ludEluZGV4LHQuZGF0YV07dmFyIG49cy5wbHVnaW5zLmJhclJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg7aWYobiE9bnVsbCYmcy5zZXJpZXNbbl0uaGlnaGxpZ2h0TW91c2VEb3duKXtrKHMpfXZhciBvPWpRdWVyeS5FdmVudCgianFwbG90RGF0YVJpZ2h0Q2xpY2siKTtvLndoaWNoPXIud2hpY2g7by5wYWdlWD1yLnBhZ2VYO28ucGFnZVk9ci5wYWdlWTtzLnRhcmdldC50cmlnZ2VyKG8scCl9fX0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.BezierCurveRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLy8gQ2xhc3M6ICQuanFwbG90LkJlemllckN1cnZlUmVuZGVyZXIuanMKICAgIC8vIFJlbmRlcmVyIHdoaWNoIGRyYXdzIGxpbmVzIGFzIHN0YWNrZWQgYmV6aWVyIGN1cnZlcy4KICAgIC8vIERhdGEgZm9yIHRoZSBsaW5lIHdpbGwgbm90IGJlIHNwZWNpZmllZCBhcyBhbiBhcnJheSBvZgogICAgLy8gW3gsIHldIGRhdGEgcG9pbnQgdmFsdWVzLCBidXQgYXMgYSBhbiBhcnJheSBvZiBbc3RhcnQgcGlvbnQsIGJlemllciBjdXJ2ZV0KICAgIC8vIFNvLCB0aGUgbGluZSBpcyBzcGVjaWZpZWQgYXM6IFtbeHN0YXJ0LCB5c3RhcnRdLCBbY3AxeCwgY3AxeSwgY3AyeCwgY3AyeSwgeGVuZCwgeWVuZF1dLgogICAgJC5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlciA9IGZ1bmN0aW9uKCl7CiAgICAgICAgJC5qcXBsb3QuTGluZVJlbmRlcmVyLmNhbGwodGhpcyk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5CZXppZXJDdXJ2ZVJlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTsKICAgICQuanFwbG90LkJlemllckN1cnZlUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlcjsKCiAgICAKICAgIC8vIE1ldGhvZDogc2V0R3JpZERhdGEKICAgIC8vIGNvbnZlcnRzIHRoZSB1c2VyIGRhdGEgdmFsdWVzIHRvIGdyaWQgY29vcmRpbmF0ZXMgYW5kIHN0b3JlcyB0aGVtCiAgICAvLyBpbiB0aGUgZ3JpZERhdGEgYXJyYXkuCiAgICAvLyBDYWxsZWQgd2l0aCBzY29wZSBvZiBhIHNlcmllcy4KICAgICQuanFwbG90LkJlemllckN1cnZlUmVuZGVyZXIucHJvdG90eXBlLnNldEdyaWREYXRhID0gZnVuY3Rpb24ocGxvdCkgewogICAgICAgIC8vIHJlY2FsY3VsYXRlIHRoZSBncmlkIGRhdGEKICAgICAgICB2YXIgeHAgPSB0aGlzLl94YXhpcy5zZXJpZXNfdTJwOwogICAgICAgIHZhciB5cCA9IHRoaXMuX3lheGlzLnNlcmllc191MnA7CiAgICAgICAgLy8gdGhpcy5fcGxvdERhdGEgc2hvdWxkIGJlIHNhbWUgYXMgdGhpcy5kYXRhCiAgICAgICAgdmFyIGRhdGEgPSB0aGlzLmRhdGE7CiAgICAgICAgdGhpcy5ncmlkRGF0YSA9IFtdOwogICAgICAgIHRoaXMuX3ByZXZHcmlkRGF0YSA9IFtdOwogICAgICAgIC8vIGlmIHNlcmllc0luZGV4ID0gMCwgZmlsbCB0byB4IGF4aXMuCiAgICAgICAgLy8gaWYgc2VyaWVzSW5kZXggPiAwLCBmaWxsIHRvIHByZXZpb3VzIHNlcmllcyBkYXRhLgogICAgICAgIHZhciBpZHggPSB0aGlzLmluZGV4OwogICAgICAgIGlmIChkYXRhLmxlbmd0aCA9PSAyKSB7CiAgICAgICAgICAgIGlmIChpZHggPT0gMCkgewogICAgICAgICAgICAgICAgdGhpcy5ncmlkRGF0YSA9IFsKICAgICAgICAgICAgICAgICAgICBbeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVswXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbMF1bMV0pXSwgCiAgICAgICAgICAgICAgICAgICAgW3hwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMV1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzFdWzFdKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIHhwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMV1bMl0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzFdWzNdKSwgIAogICAgICAgICAgICAgICAgICAgICAgICB4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzFdWzRdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVsxXVs1XSldLAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzFdWzRdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgdGhpcy5feWF4aXMubWluKV0sCiAgICAgICAgICAgICAgICAgICAgW3hwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMF1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCB0aGlzLl95YXhpcy5taW4pXQogICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBwc2QgPSBwbG90LnNlcmllc1tpZHgtMV0uZGF0YTsKICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEgPSBbCiAgICAgICAgICAgICAgICAgICAgW3hwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMF1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzBdWzFdKV0sIAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzFdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVsxXVsxXSksIAogICAgICAgICAgICAgICAgICAgICAgICB4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzFdWzJdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVsxXVszXSksICAKICAgICAgICAgICAgICAgICAgICAgICAgeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVsxXVs0XSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbMV1bNV0pXSwKICAgICAgICAgICAgICAgICAgICBbeHAuY2FsbCh0aGlzLl94YXhpcywgcHNkWzFdWzRdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgcHNkWzFdWzVdKV0sCiAgICAgICAgICAgICAgICAgICAgW3hwLmNhbGwodGhpcy5feGF4aXMsIHBzZFsxXVsyXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIHBzZFsxXVszXSksIAogICAgICAgICAgICAgICAgICAgICAgICB4cC5jYWxsKHRoaXMuX3hheGlzLCBwc2RbMV1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBwc2RbMV1bMV0pLCAgCiAgICAgICAgICAgICAgICAgICAgICAgIHhwLmNhbGwodGhpcy5feGF4aXMsIHBzZFswXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIHBzZFswXVsxXSldCiAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBpZiAoaWR4ID09IDApIHsKICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEgPSBbCiAgICAgICAgICAgICAgICAgICAgW3hwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMF1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzBdWzFdKV0sIAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzFdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVsxXVsxXSksIAogICAgICAgICAgICAgICAgICAgICAgICB4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzJdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVsyXVsxXSksICAKICAgICAgICAgICAgICAgICAgICAgICAgeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVszXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbM11bMV0pXSwKICAgICAgICAgICAgICAgICAgICBbeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVszXVsxXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIHRoaXMuX3lheGlzLm1pbildLAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzBdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgdGhpcy5feWF4aXMubWluKV0KICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgcHNkID0gcGxvdC5zZXJpZXNbaWR4LTFdLmRhdGE7CiAgICAgICAgICAgICAgICB0aGlzLmdyaWREYXRhID0gWwogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzBdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVswXVsxXSldLCAKICAgICAgICAgICAgICAgICAgICBbeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVsxXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbMV1bMV0pLCAKICAgICAgICAgICAgICAgICAgICAgICAgeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVsyXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbMl1bMV0pLCAgCiAgICAgICAgICAgICAgICAgICAgICAgIHhwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbM11bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzNdWzFdKV0sCiAgICAgICAgICAgICAgICAgICAgW3hwLmNhbGwodGhpcy5feGF4aXMsIHBzZFszXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIHBzZFszXVsxXSldLAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBwc2RbMl1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBwc2RbMl1bMV0pLCAKICAgICAgICAgICAgICAgICAgICAgICAgeHAuY2FsbCh0aGlzLl94YXhpcywgcHNkWzFdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgcHNkWzFdWzFdKSwgIAogICAgICAgICAgICAgICAgICAgICAgICB4cC5jYWxsKHRoaXMuX3hheGlzLCBwc2RbMF1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBwc2RbMF1bMV0pXQogICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CiAgICAKICAgIC8vIE1ldGhvZDogbWFrZUdyaWREYXRhCiAgICAvLyBjb252ZXJ0cyBhbnkgYXJiaXRyYXJ5IGRhdGEgdmFsdWVzIHRvIGdyaWQgY29vcmRpbmF0ZXMgYW5kCiAgICAvLyByZXR1cm5zIHRoZW0uICBUaGlzIG1ldGhvZCBleGlzdHMgc28gdGhhdCBwbHVnaW5zIGNhbiB1c2UgYSBzZXJpZXMnCiAgICAvLyBsaW5lcmVuZGVyZXIgdG8gZ2VuZXJhdGUgZ3JpZCBkYXRhIHBvaW50cyB3aXRob3V0IG92ZXJ3cml0aW5nIHRoZQogICAgLy8gZ3JpZCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGF0IHNlcmllcy4KICAgIC8vIENhbGxlZCB3aXRoIHNjb3BlIG9mIGEgc2VyaWVzLgogICAgJC5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlci5wcm90b3R5cGUubWFrZUdyaWREYXRhID0gZnVuY3Rpb24oZGF0YSwgcGxvdCkgewogICAgICAgIC8vIHJlY2FsY3VsYXRlIHRoZSBncmlkIGRhdGEKICAgICAgICB2YXIgeHAgPSB0aGlzLl94YXhpcy5zZXJpZXNfdTJwOwogICAgICAgIHZhciB5cCA9IHRoaXMuX3lheGlzLnNlcmllc191MnA7CiAgICAgICAgdmFyIGdkID0gW107CiAgICAgICAgdmFyIHBnZCA9IFtdOwogICAgICAgIC8vIGlmIHNlcmllc0luZGV4ID0gMCwgZmlsbCB0byB4IGF4aXMuCiAgICAgICAgLy8gaWYgc2VyaWVzSW5kZXggPiAwLCBmaWxsIHRvIHByZXZpb3VzIHNlcmllcyBkYXRhLgogICAgICAgIHZhciBpZHggPSB0aGlzLmluZGV4OwogICAgICAgIGlmIChkYXRhLmxlbmd0aCA9PSAyKSB7CiAgICAgICAgICAgIGlmIChpZHggPT0gMCkgewogICAgICAgICAgICAgICAgZ2QgPSBbCiAgICAgICAgICAgICAgICAgICAgW3hwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMF1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzBdWzFdKV0sIAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzFdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVsxXVsxXSksIAogICAgICAgICAgICAgICAgICAgICAgICB4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzFdWzJdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVsxXVszXSksICAKICAgICAgICAgICAgICAgICAgICAgICAgeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVsxXVs0XSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbMV1bNV0pXSwKICAgICAgICAgICAgICAgICAgICBbeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVsxXVs0XSksIHlwLmNhbGwodGhpcy5feWF4aXMsIHRoaXMuX3lheGlzLm1pbildLAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzBdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgdGhpcy5feWF4aXMubWluKV0KICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgcHNkID0gcGxvdC5zZXJpZXNbaWR4LTFdLmRhdGE7CiAgICAgICAgICAgICAgICBnZCA9IFsKICAgICAgICAgICAgICAgICAgICBbeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVswXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbMF1bMV0pXSwgCiAgICAgICAgICAgICAgICAgICAgW3hwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMV1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzFdWzFdKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIHhwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMV1bMl0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzFdWzNdKSwgIAogICAgICAgICAgICAgICAgICAgICAgICB4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzFdWzRdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVsxXVs1XSldLAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBwc2RbMV1bNF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBwc2RbMV1bNV0pXSwKICAgICAgICAgICAgICAgICAgICBbeHAuY2FsbCh0aGlzLl94YXhpcywgcHNkWzFdWzJdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgcHNkWzFdWzNdKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIHhwLmNhbGwodGhpcy5feGF4aXMsIHBzZFsxXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIHBzZFsxXVsxXSksICAKICAgICAgICAgICAgICAgICAgICAgICAgeHAuY2FsbCh0aGlzLl94YXhpcywgcHNkWzBdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgcHNkWzBdWzFdKV0KICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmIChpZHggPT0gMCkgewogICAgICAgICAgICAgICAgZ2QgPSBbCiAgICAgICAgICAgICAgICAgICAgW3hwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMF1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzBdWzFdKV0sIAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzFdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVsxXVsxXSksIAogICAgICAgICAgICAgICAgICAgICAgICB4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzJdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVsyXVsxXSksICAKICAgICAgICAgICAgICAgICAgICAgICAgeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVszXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbM11bMV0pXSwKICAgICAgICAgICAgICAgICAgICBbeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVszXVsxXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIHRoaXMuX3lheGlzLm1pbildLAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzBdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgdGhpcy5feWF4aXMubWluKV0KICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB2YXIgcHNkID0gcGxvdC5zZXJpZXNbaWR4LTFdLmRhdGE7CiAgICAgICAgICAgICAgICBnZCA9IFsKICAgICAgICAgICAgICAgICAgICBbeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVswXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbMF1bMV0pXSwgCiAgICAgICAgICAgICAgICAgICAgW3hwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMV1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzFdWzFdKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIHhwLmNhbGwodGhpcy5feGF4aXMsIGRhdGFbMl1bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBkYXRhWzJdWzFdKSwgIAogICAgICAgICAgICAgICAgICAgICAgICB4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhWzNdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVszXVsxXSldLAogICAgICAgICAgICAgICAgICAgIFt4cC5jYWxsKHRoaXMuX3hheGlzLCBwc2RbM11bMF0pLCB5cC5jYWxsKHRoaXMuX3lheGlzLCBwc2RbM11bMV0pXSwKICAgICAgICAgICAgICAgICAgICBbeHAuY2FsbCh0aGlzLl94YXhpcywgcHNkWzJdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgcHNkWzJdWzFdKSwgCiAgICAgICAgICAgICAgICAgICAgICAgIHhwLmNhbGwodGhpcy5feGF4aXMsIHBzZFsxXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIHBzZFsxXVsxXSksICAKICAgICAgICAgICAgICAgICAgICAgICAgeHAuY2FsbCh0aGlzLl94YXhpcywgcHNkWzBdWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgcHNkWzBdWzFdKV0KICAgICAgICAgICAgICAgIF07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGdkOwogICAgfTsKICAgIAoKICAgIC8vIGNhbGxlZCB3aXRoaW4gc2NvcGUgb2Ygc2VyaWVzLgogICAgJC5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlci5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGN0eCwgZ2QsIG9wdGlvbnMpIHsKICAgICAgICB2YXIgaTsKICAgICAgICBjdHguc2F2ZSgpOwogICAgICAgIGlmIChnZC5sZW5ndGgpIHsKICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0xpbmUpIHsKICAgICAgICAgICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgICAgICAgICB2YXIgb3B0cyA9IChvcHRpb25zICE9IG51bGwpID8gb3B0aW9ucyA6IHt9OwogICAgICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IG9wdHMuZmlsbFN0eWxlIHx8IHRoaXMuY29sb3I7CiAgICAgICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7CiAgICAgICAgICAgICAgICBjdHgubW92ZVRvKGdkWzBdWzBdLCBnZFswXVsxXSk7CiAgICAgICAgICAgICAgICBjdHguYmV6aWVyQ3VydmVUbyhnZFsxXVswXSwgZ2RbMV1bMV0sIGdkWzFdWzJdLCBnZFsxXVszXSwgZ2RbMV1bNF0sIGdkWzFdWzVdKTsKICAgICAgICAgICAgICAgIGN0eC5saW5lVG8oZ2RbMl1bMF0sIGdkWzJdWzFdKTsKICAgICAgICAgICAgICAgIGlmIChnZFszXS5sZW5ndGggPT0gMikgewogICAgICAgICAgICAgICAgICAgIGN0eC5saW5lVG8oZ2RbM11bMF0sIGdkWzNdWzFdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGN0eC5iZXppZXJDdXJ2ZVRvKGdkWzNdWzBdLCBnZFszXVsxXSwgZ2RbM11bMl0sIGdkWzNdWzNdLCBnZFszXVs0XSwgZ2RbM11bNV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpOwogICAgICAgICAgICAgICAgY3R4LmZpbGwoKTsKICAgICAgICAgICAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgIH07ICAKICAgIAogICAgJC5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlci5wcm90b3R5cGUuZHJhd1NoYWRvdyA9IGZ1bmN0aW9uKGN0eCwgZ2QsIG9wdGlvbnMpIHsKICAgICAgICAvLyBUaGlzIGlzIGEgbm8tb3AsIHNoYWRvd3MgZHJhd24gd2l0aCBsaW5lcy4KICAgIH07CiAgICAKICAgICQuanFwbG90LkJlemllckF4aXNSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQmV6aWVyQXhpc1JlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIoKTsKICAgICQuanFwbG90LkJlemllckF4aXNSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5CZXppZXJBeGlzUmVuZGVyZXI7CiAgICAgICAgCiAgICAKICAgIC8vIEF4ZXMgb24gYSBwbG90IHdpdGggQmV6aWVyIEN1cnZlcwogICAgJC5qcXBsb3QuQmV6aWVyQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucyl7CiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CiAgICAgICAgdmFyIGRiID0gdGhpcy5fZGF0YUJvdW5kczsKICAgICAgICAvLyBHbyB0aHJvdWdoIGFsbCB0aGUgc2VyaWVzIGF0dGFjaGVkIHRvIHRoaXMgYXhpcyBhbmQgZmluZAogICAgICAgIC8vIHRoZSBtaW4vbWF4IGJvdW5kcyBmb3IgdGhpcyBheGlzLgogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHMgPSB0aGlzLl9zZXJpZXNbaV07CiAgICAgICAgICAgIHZhciBkID0gcy5kYXRhOyAgCiAgICAgICAgICAgIGlmIChkLmxlbmd0aCA9PSA0KSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8ZC5sZW5ndGg7IGorKykgeyAKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lID09ICd4YXhpcycgfHwgdGhpcy5uYW1lID09ICd4MmF4aXMnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkW2pdWzBdIDwgZGIubWluIHx8IGRiLm1pbiA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYi5taW4gPSBkW2pdWzBdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkW2pdWzBdID4gZGIubWF4IHx8IGRiLm1heCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYi5tYXggPSBkW2pdWzBdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkW2pdWzFdIDwgZGIubWluIHx8IGRiLm1pbiA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYi5taW4gPSBkW2pdWzFdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkW2pdWzFdID4gZGIubWF4IHx8IGRiLm1heCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYi5tYXggPSBkW2pdWzFdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gICAgICAgICAgCiAgICAgICAgICAgIGVsc2UgeyAgICAKICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZFswXVswXSA8IGRiLm1pbiB8fCBkYi5taW4gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBkYi5taW4gPSBkWzBdWzBdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZFswXVswXSA+IGRiLm1heCB8fCBkYi5tYXggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBkYi5tYXggPSBkWzBdWzBdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8NTsgais9MikgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZFsxXVtqXSA8IGRiLm1pbiB8fCBkYi5taW4gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGIubWluID0gZFsxXVtqXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZFsxXVtqXSA+IGRiLm1heCB8fCBkYi5tYXggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGIubWF4ID0gZFsxXVtqXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGRbMF1bMV0gPCBkYi5taW4gfHwgZGIubWluID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGIubWluID0gZFswXVsxXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGRbMF1bMV0gPiBkYi5tYXggfHwgZGIubWF4ID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGIubWF4ID0gZFswXVsxXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0xOyBqPDY7IGorPTIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRbMV1bal0gPCBkYi5taW4gfHwgZGIubWluID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiLm1pbiA9IGRbMV1bal07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRbMV1bal0gPiBkYi5tYXggfHwgZGIubWF4ID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiLm1heCA9IGRbMV1bal07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CiAgICAKICAgIC8vIHNldHVwIGRlZmF1bHQgcmVuZGVyZXJzIGZvciBheGVzIGFuZCBsZWdlbmQgc28gdXNlciBkb2Vzbid0IGhhdmUgdG8KICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHBsb3QKICAgIGZ1bmN0aW9uIHByZUluaXQodGFyZ2V0LCBkYXRhLCBvcHRpb25zKSB7CiAgICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307CiAgICAgICAgb3B0aW9ucy5heGVzRGVmYXVsdHMgPSAkLmV4dGVuZCh0cnVlLCB7cGFkOjB9LCBvcHRpb25zLmF4ZXNEZWZhdWx0cyk7CiAgICAgICAgb3B0aW9ucy5zZXJpZXNEZWZhdWx0cyA9IG9wdGlvbnMuc2VyaWVzRGVmYXVsdHMgfHwge307CiAgICAgICAgb3B0aW9ucy5sZWdlbmQgPSAkLmV4dGVuZCh0cnVlLCB7cGxhY2VtZW50OidvdXRzaWRlJ30sIG9wdGlvbnMubGVnZW5kKTsKICAgICAgICAvLyBvbmx5IHNldCB0aGVzZSBpZiB0aGVyZSBpcyBhIHBpZSBzZXJpZXMKICAgICAgICB2YXIgc2V0b3B0cyA9IGZhbHNlOwogICAgICAgIGlmIChvcHRpb25zLnNlcmllc0RlZmF1bHRzLnJlbmRlcmVyID09ICQuanFwbG90LkJlemllckN1cnZlUmVuZGVyZXIpIHsKICAgICAgICAgICAgc2V0b3B0cyA9IHRydWU7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuc2VyaWVzKSB7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaSA8IG9wdGlvbnMuc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5zZXJpZXNbaV0ucmVuZGVyZXIgPT0gJC5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlcikgewogICAgICAgICAgICAgICAgICAgIHNldG9wdHMgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChzZXRvcHRzKSB7CiAgICAgICAgICAgIG9wdGlvbnMuYXhlc0RlZmF1bHRzLnJlbmRlcmVyID0gJC5qcXBsb3QuQmV6aWVyQXhpc1JlbmRlcmVyOwogICAgICAgIH0KICAgIH0KICAgIAogICAgJC5qcXBsb3QucHJlSW5pdEhvb2tzLnB1c2gocHJlSW5pdCk7CiAgICAKfSkoalF1ZXJ5KTsgICAg]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.BezierCurveRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGIpe2IuanFwbG90LkJlemllckN1cnZlUmVuZGVyZXI9ZnVuY3Rpb24oKXtiLmpxcGxvdC5MaW5lUmVuZGVyZXIuY2FsbCh0aGlzKX07Yi5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlci5wcm90b3R5cGU9bmV3IGIuanFwbG90LkxpbmVSZW5kZXJlcigpO2IuanFwbG90LkJlemllckN1cnZlUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWIuanFwbG90LkJlemllckN1cnZlUmVuZGVyZXI7Yi5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlci5wcm90b3R5cGUuc2V0R3JpZERhdGE9ZnVuY3Rpb24oaCl7dmFyIGU9dGhpcy5feGF4aXMuc2VyaWVzX3UycDt2YXIgZz10aGlzLl95YXhpcy5zZXJpZXNfdTJwO3ZhciBmPXRoaXMuZGF0YTt0aGlzLmdyaWREYXRhPVtdO3RoaXMuX3ByZXZHcmlkRGF0YT1bXTt2YXIgZD10aGlzLmluZGV4O2lmKGYubGVuZ3RoPT0yKXtpZihkPT0wKXt0aGlzLmdyaWREYXRhPVtbZS5jYWxsKHRoaXMuX3hheGlzLGZbMF1bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyxmWzBdWzFdKV0sW2UuY2FsbCh0aGlzLl94YXhpcyxmWzFdWzBdKSxnLmNhbGwodGhpcy5feWF4aXMsZlsxXVsxXSksZS5jYWxsKHRoaXMuX3hheGlzLGZbMV1bMl0pLGcuY2FsbCh0aGlzLl95YXhpcyxmWzFdWzNdKSxlLmNhbGwodGhpcy5feGF4aXMsZlsxXVs0XSksZy5jYWxsKHRoaXMuX3lheGlzLGZbMV1bNV0pXSxbZS5jYWxsKHRoaXMuX3hheGlzLGZbMV1bNF0pLGcuY2FsbCh0aGlzLl95YXhpcyx0aGlzLl95YXhpcy5taW4pXSxbZS5jYWxsKHRoaXMuX3hheGlzLGZbMF1bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyx0aGlzLl95YXhpcy5taW4pXV19ZWxzZXt2YXIgYz1oLnNlcmllc1tkLTFdLmRhdGE7dGhpcy5ncmlkRGF0YT1bW2UuY2FsbCh0aGlzLl94YXhpcyxmWzBdWzBdKSxnLmNhbGwodGhpcy5feWF4aXMsZlswXVsxXSldLFtlLmNhbGwodGhpcy5feGF4aXMsZlsxXVswXSksZy5jYWxsKHRoaXMuX3lheGlzLGZbMV1bMV0pLGUuY2FsbCh0aGlzLl94YXhpcyxmWzFdWzJdKSxnLmNhbGwodGhpcy5feWF4aXMsZlsxXVszXSksZS5jYWxsKHRoaXMuX3hheGlzLGZbMV1bNF0pLGcuY2FsbCh0aGlzLl95YXhpcyxmWzFdWzVdKV0sW2UuY2FsbCh0aGlzLl94YXhpcyxjWzFdWzRdKSxnLmNhbGwodGhpcy5feWF4aXMsY1sxXVs1XSldLFtlLmNhbGwodGhpcy5feGF4aXMsY1sxXVsyXSksZy5jYWxsKHRoaXMuX3lheGlzLGNbMV1bM10pLGUuY2FsbCh0aGlzLl94YXhpcyxjWzFdWzBdKSxnLmNhbGwodGhpcy5feWF4aXMsY1sxXVsxXSksZS5jYWxsKHRoaXMuX3hheGlzLGNbMF1bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyxjWzBdWzFdKV1dfX1lbHNle2lmKGQ9PTApe3RoaXMuZ3JpZERhdGE9W1tlLmNhbGwodGhpcy5feGF4aXMsZlswXVswXSksZy5jYWxsKHRoaXMuX3lheGlzLGZbMF1bMV0pXSxbZS5jYWxsKHRoaXMuX3hheGlzLGZbMV1bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyxmWzFdWzFdKSxlLmNhbGwodGhpcy5feGF4aXMsZlsyXVswXSksZy5jYWxsKHRoaXMuX3lheGlzLGZbMl1bMV0pLGUuY2FsbCh0aGlzLl94YXhpcyxmWzNdWzBdKSxnLmNhbGwodGhpcy5feWF4aXMsZlszXVsxXSldLFtlLmNhbGwodGhpcy5feGF4aXMsZlszXVsxXSksZy5jYWxsKHRoaXMuX3lheGlzLHRoaXMuX3lheGlzLm1pbildLFtlLmNhbGwodGhpcy5feGF4aXMsZlswXVswXSksZy5jYWxsKHRoaXMuX3lheGlzLHRoaXMuX3lheGlzLm1pbildXX1lbHNle3ZhciBjPWguc2VyaWVzW2QtMV0uZGF0YTt0aGlzLmdyaWREYXRhPVtbZS5jYWxsKHRoaXMuX3hheGlzLGZbMF1bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyxmWzBdWzFdKV0sW2UuY2FsbCh0aGlzLl94YXhpcyxmWzFdWzBdKSxnLmNhbGwodGhpcy5feWF4aXMsZlsxXVsxXSksZS5jYWxsKHRoaXMuX3hheGlzLGZbMl1bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyxmWzJdWzFdKSxlLmNhbGwodGhpcy5feGF4aXMsZlszXVswXSksZy5jYWxsKHRoaXMuX3lheGlzLGZbM11bMV0pXSxbZS5jYWxsKHRoaXMuX3hheGlzLGNbM11bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyxjWzNdWzFdKV0sW2UuY2FsbCh0aGlzLl94YXhpcyxjWzJdWzBdKSxnLmNhbGwodGhpcy5feWF4aXMsY1syXVsxXSksZS5jYWxsKHRoaXMuX3hheGlzLGNbMV1bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyxjWzFdWzFdKSxlLmNhbGwodGhpcy5feGF4aXMsY1swXVswXSksZy5jYWxsKHRoaXMuX3lheGlzLGNbMF1bMV0pXV19fX07Yi5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlci5wcm90b3R5cGUubWFrZUdyaWREYXRhPWZ1bmN0aW9uKGcsaSl7dmFyIGY9dGhpcy5feGF4aXMuc2VyaWVzX3UycDt2YXIgaD10aGlzLl95YXhpcy5zZXJpZXNfdTJwO3ZhciBlPVtdO3ZhciBqPVtdO3ZhciBkPXRoaXMuaW5kZXg7aWYoZy5sZW5ndGg9PTIpe2lmKGQ9PTApe2U9W1tmLmNhbGwodGhpcy5feGF4aXMsZ1swXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLGdbMF1bMV0pXSxbZi5jYWxsKHRoaXMuX3hheGlzLGdbMV1bMF0pLGguY2FsbCh0aGlzLl95YXhpcyxnWzFdWzFdKSxmLmNhbGwodGhpcy5feGF4aXMsZ1sxXVsyXSksaC5jYWxsKHRoaXMuX3lheGlzLGdbMV1bM10pLGYuY2FsbCh0aGlzLl94YXhpcyxnWzFdWzRdKSxoLmNhbGwodGhpcy5feWF4aXMsZ1sxXVs1XSldLFtmLmNhbGwodGhpcy5feGF4aXMsZ1sxXVs0XSksaC5jYWxsKHRoaXMuX3lheGlzLHRoaXMuX3lheGlzLm1pbildLFtmLmNhbGwodGhpcy5feGF4aXMsZ1swXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLHRoaXMuX3lheGlzLm1pbildXX1lbHNle3ZhciBjPWkuc2VyaWVzW2QtMV0uZGF0YTtlPVtbZi5jYWxsKHRoaXMuX3hheGlzLGdbMF1bMF0pLGguY2FsbCh0aGlzLl95YXhpcyxnWzBdWzFdKV0sW2YuY2FsbCh0aGlzLl94YXhpcyxnWzFdWzBdKSxoLmNhbGwodGhpcy5feWF4aXMsZ1sxXVsxXSksZi5jYWxsKHRoaXMuX3hheGlzLGdbMV1bMl0pLGguY2FsbCh0aGlzLl95YXhpcyxnWzFdWzNdKSxmLmNhbGwodGhpcy5feGF4aXMsZ1sxXVs0XSksaC5jYWxsKHRoaXMuX3lheGlzLGdbMV1bNV0pXSxbZi5jYWxsKHRoaXMuX3hheGlzLGNbMV1bNF0pLGguY2FsbCh0aGlzLl95YXhpcyxjWzFdWzVdKV0sW2YuY2FsbCh0aGlzLl94YXhpcyxjWzFdWzJdKSxoLmNhbGwodGhpcy5feWF4aXMsY1sxXVszXSksZi5jYWxsKHRoaXMuX3hheGlzLGNbMV1bMF0pLGguY2FsbCh0aGlzLl95YXhpcyxjWzFdWzFdKSxmLmNhbGwodGhpcy5feGF4aXMsY1swXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLGNbMF1bMV0pXV19fWVsc2V7aWYoZD09MCl7ZT1bW2YuY2FsbCh0aGlzLl94YXhpcyxnWzBdWzBdKSxoLmNhbGwodGhpcy5feWF4aXMsZ1swXVsxXSldLFtmLmNhbGwodGhpcy5feGF4aXMsZ1sxXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLGdbMV1bMV0pLGYuY2FsbCh0aGlzLl94YXhpcyxnWzJdWzBdKSxoLmNhbGwodGhpcy5feWF4aXMsZ1syXVsxXSksZi5jYWxsKHRoaXMuX3hheGlzLGdbM11bMF0pLGguY2FsbCh0aGlzLl95YXhpcyxnWzNdWzFdKV0sW2YuY2FsbCh0aGlzLl94YXhpcyxnWzNdWzFdKSxoLmNhbGwodGhpcy5feWF4aXMsdGhpcy5feWF4aXMubWluKV0sW2YuY2FsbCh0aGlzLl94YXhpcyxnWzBdWzBdKSxoLmNhbGwodGhpcy5feWF4aXMsdGhpcy5feWF4aXMubWluKV1dfWVsc2V7dmFyIGM9aS5zZXJpZXNbZC0xXS5kYXRhO2U9W1tmLmNhbGwodGhpcy5feGF4aXMsZ1swXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLGdbMF1bMV0pXSxbZi5jYWxsKHRoaXMuX3hheGlzLGdbMV1bMF0pLGguY2FsbCh0aGlzLl95YXhpcyxnWzFdWzFdKSxmLmNhbGwodGhpcy5feGF4aXMsZ1syXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLGdbMl1bMV0pLGYuY2FsbCh0aGlzLl94YXhpcyxnWzNdWzBdKSxoLmNhbGwodGhpcy5feWF4aXMsZ1szXVsxXSldLFtmLmNhbGwodGhpcy5feGF4aXMsY1szXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLGNbM11bMV0pXSxbZi5jYWxsKHRoaXMuX3hheGlzLGNbMl1bMF0pLGguY2FsbCh0aGlzLl95YXhpcyxjWzJdWzFdKSxmLmNhbGwodGhpcy5feGF4aXMsY1sxXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLGNbMV1bMV0pLGYuY2FsbCh0aGlzLl94YXhpcyxjWzBdWzBdKSxoLmNhbGwodGhpcy5feWF4aXMsY1swXVsxXSldXX19cmV0dXJuIGV9O2IuanFwbG90LkJlemllckN1cnZlUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oYyxnLGQpe3ZhciBlO2Muc2F2ZSgpO2lmKGcubGVuZ3RoKXtpZih0aGlzLnNob3dMaW5lKXtjLnNhdmUoKTt2YXIgZj0oZCE9bnVsbCk/ZDp7fTtjLmZpbGxTdHlsZT1mLmZpbGxTdHlsZXx8dGhpcy5jb2xvcjtjLmJlZ2luUGF0aCgpO2MubW92ZVRvKGdbMF1bMF0sZ1swXVsxXSk7Yy5iZXppZXJDdXJ2ZVRvKGdbMV1bMF0sZ1sxXVsxXSxnWzFdWzJdLGdbMV1bM10sZ1sxXVs0XSxnWzFdWzVdKTtjLmxpbmVUbyhnWzJdWzBdLGdbMl1bMV0pO2lmKGdbM10ubGVuZ3RoPT0yKXtjLmxpbmVUbyhnWzNdWzBdLGdbM11bMV0pfWVsc2V7Yy5iZXppZXJDdXJ2ZVRvKGdbM11bMF0sZ1szXVsxXSxnWzNdWzJdLGdbM11bM10sZ1szXVs0XSxnWzNdWzVdKX1jLmNsb3NlUGF0aCgpO2MuZmlsbCgpO2MucmVzdG9yZSgpfX1jLnJlc3RvcmUoKX07Yi5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlci5wcm90b3R5cGUuZHJhd1NoYWRvdz1mdW5jdGlvbihjLGUsZCl7fTtiLmpxcGxvdC5CZXppZXJBeGlzUmVuZGVyZXI9ZnVuY3Rpb24oKXtiLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIuY2FsbCh0aGlzKX07Yi5qcXBsb3QuQmV6aWVyQXhpc1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgYi5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7Yi5qcXBsb3QuQmV6aWVyQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1iLmpxcGxvdC5CZXppZXJBeGlzUmVuZGVyZXI7Yi5qcXBsb3QuQmV6aWVyQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGYpe2IuZXh0ZW5kKHRydWUsdGhpcyxmKTt2YXIgYz10aGlzLl9kYXRhQm91bmRzO2Zvcih2YXIgZz0wO2c8dGhpcy5fc2VyaWVzLmxlbmd0aDtnKyspe3ZhciBoPXRoaXMuX3Nlcmllc1tnXTt2YXIgaz1oLmRhdGE7aWYoay5sZW5ndGg9PTQpe2Zvcih2YXIgZT0wO2U8ay5sZW5ndGg7ZSsrKXtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe2lmKGtbZV1bMF08Yy5taW58fGMubWluPT1udWxsKXtjLm1pbj1rW2VdWzBdfWlmKGtbZV1bMF0+Yy5tYXh8fGMubWF4PT1udWxsKXtjLm1heD1rW2VdWzBdfX1lbHNle2lmKGtbZV1bMV08Yy5taW58fGMubWluPT1udWxsKXtjLm1pbj1rW2VdWzFdfWlmKGtbZV1bMV0+Yy5tYXh8fGMubWF4PT1udWxsKXtjLm1heD1rW2VdWzFdfX19fWVsc2V7aWYodGhpcy5uYW1lPT0ieGF4aXMifHx0aGlzLm5hbWU9PSJ4MmF4aXMiKXtpZihrWzBdWzBdPGMubWlufHxjLm1pbj09bnVsbCl7Yy5taW49a1swXVswXX1pZihrWzBdWzBdPmMubWF4fHxjLm1heD09bnVsbCl7Yy5tYXg9a1swXVswXX1mb3IodmFyIGU9MDtlPDU7ZSs9Mil7aWYoa1sxXVtlXTxjLm1pbnx8Yy5taW49PW51bGwpe2MubWluPWtbMV1bZV19aWYoa1sxXVtlXT5jLm1heHx8Yy5tYXg9PW51bGwpe2MubWF4PWtbMV1bZV19fX1lbHNle2lmKGtbMF1bMV08Yy5taW58fGMubWluPT1udWxsKXtjLm1pbj1rWzBdWzFdfWlmKGtbMF1bMV0+Yy5tYXh8fGMubWF4PT1udWxsKXtjLm1heD1rWzBdWzFdfWZvcih2YXIgZT0xO2U8NjtlKz0yKXtpZihrWzFdW2VdPGMubWlufHxjLm1pbj09bnVsbCl7Yy5taW49a1sxXVtlXX1pZihrWzFdW2VdPmMubWF4fHxjLm1heD09bnVsbCl7Yy5tYXg9a1sxXVtlXX19fX19fTtmdW5jdGlvbiBhKGcsZixkKXtkPWR8fHt9O2QuYXhlc0RlZmF1bHRzPWIuZXh0ZW5kKHRydWUse3BhZDowfSxkLmF4ZXNEZWZhdWx0cyk7ZC5zZXJpZXNEZWZhdWx0cz1kLnNlcmllc0RlZmF1bHRzfHx7fTtkLmxlZ2VuZD1iLmV4dGVuZCh0cnVlLHtwbGFjZW1lbnQ6Im91dHNpZGUifSxkLmxlZ2VuZCk7dmFyIGM9ZmFsc2U7aWYoZC5zZXJpZXNEZWZhdWx0cy5yZW5kZXJlcj09Yi5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlcil7Yz10cnVlfWVsc2V7aWYoZC5zZXJpZXMpe2Zvcih2YXIgZT0wO2U8ZC5zZXJpZXMubGVuZ3RoO2UrKyl7aWYoZC5zZXJpZXNbZV0ucmVuZGVyZXI9PWIuanFwbG90LkJlemllckN1cnZlUmVuZGVyZXIpe2M9dHJ1ZX19fX1pZihjKXtkLmF4ZXNEZWZhdWx0cy5yZW5kZXJlcj1iLmpxcGxvdC5CZXppZXJBeGlzUmVuZGVyZXJ9fWIuanFwbG90LnByZUluaXRIb29rcy5wdXNoKGEpfSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.blockRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuQmxvY2tSZW5kZXJlcgogICAgICogUGx1Z2luIHJlbmRlcmVyIHRvIGRyYXcgYSB4LXkgYmxvY2sgY2hhcnQuICBBIEJsb2NrIGNoYXJ0IGhhcyBkYXRhIHBvaW50cyBkaXNwbGF5ZWQgYXMKICAgICAqIGNvbG9yZWQgc3F1YXJlcyB3aXRoIGEgdGV4dCBsYWJlbCBpbnNpZGUuICBEYXRhIG11c3QgYmUgc3VwcGxpZWQgaW4gdGhlIGZvcm06CiAgICAgKiAKICAgICAqID4gW1t4MSwgeTEsICJsYWJlbCAxIiwge2Nzc31dLCBbeDIsIHkyLCAibGFiZWwgMiIsIHtjc3N9XSwgLi4uXQogICAgICogCiAgICAgKiBUaGUgbGFiZWwgYW5kIGNzcyBvYmplY3QgYXJlIG9wdGlvbmFsLiAgSWYgdGhlIGxhYmVsIGlzIG9tbWl0dGVkLCB0aGUKICAgICAqIGJveCB3aWxsIGNvbGxhcHNlIHVubGVzcyBhIGNzcyBoZWlnaHQgYW5kL29yIHdpZHRoIGlzIHNwZWNpZmllZC4KICAgICAqIAogICAgICogVGhlIGNzcyBvYmplY3QgaXMgYW4gb2JqZWN0IHNwZWNpZnlpbmcgY3NzIHByb3BlcnRpZXMgCiAgICAgKiBzdWNoIGFzOgogICAgICogCiAgICAgKiA+IHtiYWNrZ3JvdW5kOicjNGY5OGE1JywgYm9yZGVyOiczcHggc29saWQgZ3JheScsIHBhZGRpbmc6JzFweCd9CiAgICAgKiAKICAgICAqIE5vdGUgdGhhdCBjc3MgcHJvcGVydGllcyBzcGVjaWZpZWQgd2l0aCB0aGUgZGF0YSBwb2ludCBvdmVycmlkZSBkZWZhdWx0cwogICAgICogc3BlY2lmaWVkIHdpdGggdGhlIHNlcmllcy4KICAgICAqIAogICAgICovCiAgICAkLmpxcGxvdC5CbG9ja1JlbmRlcmVyID0gZnVuY3Rpb24oKXsKICAgICAgICAkLmpxcGxvdC5MaW5lUmVuZGVyZXIuY2FsbCh0aGlzKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkJsb2NrUmVuZGVyZXIucHJvdG90eXBlID0gbmV3ICQuanFwbG90LkxpbmVSZW5kZXJlcigpOwogICAgJC5qcXBsb3QuQmxvY2tSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5CbG9ja1JlbmRlcmVyOwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBhIHNlcmllcwogICAgJC5qcXBsb3QuQmxvY2tSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAvLyBHcm91cDogUHJvcGVydGllcwogICAgICAgIC8vCiAgICAgICAgLy8gcHJvcDogY3NzCiAgICAgICAgLy8gZGVmYXVsdCBjc3Mgc3R5bGVzIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHRvIGFsbCBkYXRhIGJsb2Nrcy4KICAgICAgICAvLyB0aGVzZSB2YWx1ZXMgd2lsbCBiZSBvdmVycmlkZGVuIGJ5IGNzcyBzdHlsZXMgc3VwcGxpZWQgd2l0aCB0aGUKICAgICAgICAvLyBpbmRpdmlkdWxhbCBkYXRhIHBvaW50cy4KICAgICAgICB0aGlzLmNzcyA9IHtwYWRkaW5nOicycHgnLCBib3JkZXI6JzFweCBzb2xpZCAjOTk5JywgdGV4dEFsaWduOidjZW50ZXInfTsKICAgICAgICAvLyBwcm9wOiBlc2NhcGVIdG1sCiAgICAgICAgLy8gdHJ1ZSB0byBlc2NhcGUgaHRtbCBpbiB0aGUgYm94IGxhYmVsLgogICAgICAgIHRoaXMuZXNjYXBlSHRtbCA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGluc2VydEJyZWFrcwogICAgICAgIC8vIHRydWUgdG8gdHVybiBzcGFjZXMgaW4gZGF0YSBibG9jayBsYWJlbCBpbnRvIGh0bWwgYnJlYWtzIDxiciAvPi4KICAgICAgICB0aGlzLmluc2VydEJyZWFrcyA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogdmFyeUJsb2NrQ29sb3JzCiAgICAgICAgLy8gdHJ1ZSB0byB2YXJ5IHRoZSBjb2xvciBvZiBlYWNoIGJsb2NrIGluIHRoaXMgc2VyaWVzIGFjY29yZGluZyB0bwogICAgICAgIC8vIHRoZSBzZXJpZXNDb2xvcnMgYXJyYXkuICBGYWxzZSB0byBzZXQgZWFjaCBibG9jayB0byB0aGUgY29sb3IKICAgICAgICAvLyBzcGVjaWZpZWQgb24gdGhpcyBzZXJpZXMuICBUaGlzIGhhcyBubyBlZmZlY3QgaWYgYSBjc3MgYmFja2dyb3VuZCBjb2xvcgogICAgICAgIC8vIG9wdGlvbiBpcyBzcGVjaWZpZWQgaW4gdGhlIHJlbmRlcmVyIGNzcyBvcHRpb25zLgogICAgICAgIHRoaXMudmFyeUJsb2NrQ29sb3JzID0gZmFsc2U7CiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CiAgICAgICAgaWYgKHRoaXMuY3NzLmJhY2tncm91bmRDb2xvcikgewogICAgICAgICAgICB0aGlzLmNvbG9yID0gdGhpcy5jc3MuYmFja2dyb3VuZENvbG9yOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICh0aGlzLmNzcy5iYWNrZ3JvdW5kKSB7CiAgICAgICAgICAgIHRoaXMuY29sb3IgPSB0aGlzLmNzcy5iYWNrZ3JvdW5kOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICghdGhpcy52YXJ5QmxvY2tDb2xvcnMpIHsKICAgICAgICAgICAgdGhpcy5jc3MuYmFja2dyb3VuZCA9IHRoaXMuY29sb3I7CiAgICAgICAgfQogICAgICAgIHRoaXMuY2FudmFzID0gbmV3ICQuanFwbG90LkJsb2NrQ2FudmFzKCk7CiAgICAgICAgdGhpcy5zaGFkb3dDYW52YXMgPSAgbmV3ICQuanFwbG90LkJsb2NrQ2FudmFzKCk7CiAgICAgICAgdGhpcy5jYW52YXMuX3Bsb3REaW1lbnNpb25zID0gdGhpcy5fcGxvdERpbWVuc2lvbnM7CiAgICAgICAgdGhpcy5zaGFkb3dDYW52YXMuX3Bsb3REaW1lbnNpb25zID0gdGhpcy5fcGxvdERpbWVuc2lvbnM7CiAgICAgICAgdGhpcy5fdHlwZSA9ICdibG9jayc7CiAgICAgICAgCiAgICAgICAgLy8gZ3JvdXA6IE1ldGhvZHMgCiAgICAgICAgLy8KICAgICAgICAvLyBNZXRob2Q6IG1vdmVCbG9jawogICAgICAgIC8vIE1vdmVzIGFuIGluZGl2aWR1YWwgYmxvY2suICBNb3JlIGVmZmljaWVudCB0aGFuIHJlZHJhd2luZwogICAgICAgIC8vIHRoZSB3aG9sZSBzZXJpZXMgYnkgY2FsbGluZyBwbG90LmRyYXdTZXJpZXMoKS4KICAgICAgICAvLyBQcm9wZXJ0aWVzOgogICAgICAgIC8vIGlkeCAtIHRoZSAwIGJhc2VkIGluZGV4IG9mIHRoZSBibG9jayBvciBwb2ludCBpbiB0aGlzIHNlcmllcy4KICAgICAgICAvLyB4IC0gdGhlIHggY29vcmRpbmF0ZSBpbiBkYXRhIHVuaXRzICh2YWx1ZSBvbiB4IGF4aXMpIHRvIG1vdmUgdGhlIGJsb2NrIHRvLgogICAgICAgIC8vIHkgLSB0aGUgeSBjb29yZGluYXRlIGluIGRhdGEgdW5pdHMgKHZhbHVlIG9uIHRoZSB5IGF4aXMpIHRvIG1vdmUgdGhlIGJsb2NrIHRvLgogICAgICAgIC8vIGR1cmF0aW9uIC0gb3B0aW9uYWwgcGFyYW1ldGVyIHRvIGNyZWF0ZSBhbiBhbmltYXRlZCBtb3ZlbWVudC4gIENhbiBiZSBhCiAgICAgICAgLy8gbnVtYmVyIChoaWdoZXIgaXMgc2xvd2VyIGFuaW1hdGlvbikgb3IgJ2Zhc3QnLCAnbm9ybWFsJyBvciAnc2xvdycuICBJZiBub3QKICAgICAgICAvLyBwcm92aWRlZCwgdGhlIGVsZW1lbnQgaXMgbW92ZWQgd2l0aG91dCBhbnkgYW5pbWF0aW9uLgogICAgICAgIHRoaXMubW92ZUJsb2NrID0gZnVuY3Rpb24gKGlkeCwgeCwgeSwgZHVyYXRpb24pIHsKICAgICAgICAgICAgLy8gdXBkYXRlIHBsb3REYXRhLCBzdGFja0RhdGEsIGRhdGEgYW5kIGdyaWREYXRhCiAgICAgICAgICAgIC8vIHggYW5kIHkgYXJlIGluIGRhdGEgY29vcmRpbmF0ZXMuCiAgICAgICAgICAgIHZhciBlbCA9IHRoaXMuY2FudmFzLl9lbGVtLmNoaWxkcmVuKCc6ZXEoJytpZHgrJyknKTsKICAgICAgICAgICAgdGhpcy5kYXRhW2lkeF1bMF0gPSB4OwogICAgICAgICAgICB0aGlzLmRhdGFbaWR4XVsxXSA9IHk7CiAgICAgICAgICAgIHRoaXMuX3Bsb3REYXRhW2lkeF1bMF0gPSB4OwogICAgICAgICAgICB0aGlzLl9wbG90RGF0YVtpZHhdWzFdID0geTsKICAgICAgICAgICAgdGhpcy5fc3RhY2tEYXRhW2lkeF1bMF0gPSB4OwogICAgICAgICAgICB0aGlzLl9zdGFja0RhdGFbaWR4XVsxXSA9IHk7CiAgICAgICAgICAgIHRoaXMuZ3JpZERhdGFbaWR4XVswXSA9IHRoaXMuX3hheGlzLnNlcmllc191MnAoeCk7CiAgICAgICAgICAgIHRoaXMuZ3JpZERhdGFbaWR4XVsxXSA9IHRoaXMuX3lheGlzLnNlcmllc191MnAoeSk7CiAgICAgICAgICAgIHZhciB3ID0gZWwub3V0ZXJXaWR0aCgpOwogICAgICAgICAgICB2YXIgaCA9IGVsLm91dGVySGVpZ2h0KCk7CiAgICAgICAgICAgIHZhciBsZWZ0ID0gdGhpcy5ncmlkRGF0YVtpZHhdWzBdIC0gdy8yICsgJ3B4JzsKICAgICAgICAgICAgdmFyIHRvcCA9IHRoaXMuZ3JpZERhdGFbaWR4XVsxXSAtIGgvMiArICdweCc7CiAgICAgICAgICAgIGlmIChkdXJhdGlvbikgewogICAgICAgICAgICAgICAgaWYgKHBhcnNlSW50KGR1cmF0aW9uLCAxMCkpIHsKICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbiA9IHBhcnNlSW50KGR1cmF0aW9uLCAxMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbC5hbmltYXRlKHtsZWZ0OmxlZnQsIHRvcDp0b3B9LCBkdXJhdGlvbik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBlbC5jc3Moe2xlZnQ6bGVmdCwgdG9wOnRvcH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsID0gbnVsbDsKICAgICAgICB9OwogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2Ygc2VyaWVzCiAgICAkLmpxcGxvdC5CbG9ja1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24gKGN0eCwgZ2QsIG9wdGlvbnMpIHsKICAgICAgICBpZiAodGhpcy5wbHVnaW5zLnBvaW50TGFiZWxzKSB7CiAgICAgICAgICAgIHRoaXMucGx1Z2lucy5wb2ludExhYmVscy5zaG93ID0gZmFsc2U7CiAgICAgICAgfQogICAgICAgIHZhciBpLCBlbCwgZCwgZ2QsIHQsIGNzcywgdywgaCwgbGVmdCwgdG9wOwogICAgICAgIHZhciBvcHRzID0gKG9wdGlvbnMgIT0gdW5kZWZpbmVkKSA/IG9wdGlvbnMgOiB7fTsKICAgICAgICB2YXIgY29sb3JHZW5lcmF0b3IgPSBuZXcgJC5qcXBsb3QuQ29sb3JHZW5lcmF0b3IodGhpcy5zZXJpZXNDb2xvcnMpOwogICAgICAgIHRoaXMuY2FudmFzLl9lbGVtLmVtcHR5KCk7CiAgICAgICAgZm9yIChpPTA7IGk8dGhpcy5ncmlkRGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBkID0gdGhpcy5kYXRhW2ldOwogICAgICAgICAgICBnZCA9IHRoaXMuZ3JpZERhdGFbaV07CiAgICAgICAgICAgIHQgPSAnJzsKICAgICAgICAgICAgY3NzID0ge307CiAgICAgICAgICAgIGlmICh0eXBlb2YgZFsyXSA9PSAnc3RyaW5nJykgewogICAgICAgICAgICAgICAgdCA9IGRbMl07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIGRbMl0gPT0gJ29iamVjdCcpIHsKICAgICAgICAgICAgICAgIGNzcyA9IGRbMl07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHR5cGVvZiBkWzNdID09ICAnb2JqZWN0JykgewogICAgICAgICAgICAgICAgY3NzID0gZFszXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodGhpcy5pbnNlcnRCcmVha3MpeyAKICAgICAgICAgICAgICAgIHQgPSB0LnJlcGxhY2UoLyAvZywgJzxiciAvPicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNzcyA9ICQuZXh0ZW5kKHRydWUsIHt9LCB0aGlzLmNzcywgY3NzKTsKICAgICAgICAgICAgLy8gY3JlYXRlIGEgZGl2CiAgICAgICAgICAgIGVsID0gJCgnPGRpdiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bzsiPjwvZGl2PicpOwogICAgICAgICAgICB0aGlzLmNhbnZhcy5fZWxlbS5hcHBlbmQoZWwpOwogICAgICAgICAgICAvLyBzZXQgdGV4dAogICAgICAgICAgICB0aGlzLmVzY2FwZUh0bWwgPyBlbC50ZXh0KHQpIDogZWwuaHRtbCh0KTsKICAgICAgICAgICAgLy8gc3R5bGUgaXQKICAgICAgICAgICAgLy8gcmVtb3ZlIHN0eWxlcyB3ZSBkb24ndCB3YW50IG92ZXJyaWRkZW4uCiAgICAgICAgICAgIGRlbGV0ZSBjc3MucG9zaXRpb247CiAgICAgICAgICAgIGRlbGV0ZSBjc3MubWFyZ2luUmlnaHQ7CiAgICAgICAgICAgIGRlbGV0ZSBjc3MubWFyZ2luTGVmdDsKICAgICAgICAgICAgaWYgKCFjc3MuYmFja2dyb3VuZCAmJiAhY3NzLmJhY2tncm91bmRDb2xvciAmJiAhY3NzLmJhY2tncm91bmRJbWFnZSl7IAogICAgICAgICAgICAgICAgY3NzLmJhY2tncm91bmQgPSBjb2xvckdlbmVyYXRvci5uZXh0KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWwuY3NzKGNzcyk7CiAgICAgICAgICAgIHcgPSBlbC5vdXRlcldpZHRoKCk7CiAgICAgICAgICAgIGggPSBlbC5vdXRlckhlaWdodCgpOwogICAgICAgICAgICBsZWZ0ID0gZ2RbMF0gLSB3LzIgKyAncHgnOwogICAgICAgICAgICB0b3AgPSBnZFsxXSAtIGgvMiArICdweCc7CiAgICAgICAgICAgIGVsLmNzcyh7bGVmdDpsZWZ0LCB0b3A6dG9wfSk7CiAgICAgICAgICAgIGVsID0gbnVsbDsKICAgICAgICB9CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5CbG9ja0NhbnZhcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkVsZW1Db250YWluZXIuY2FsbCh0aGlzKTsKICAgICAgICB0aGlzLl9jdHg7ICAKICAgIH07CiAgICAKICAgICQuanFwbG90LkJsb2NrQ2FudmFzLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5FbGVtQ29udGFpbmVyKCk7CiAgICAkLmpxcGxvdC5CbG9ja0NhbnZhcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5CbG9ja0NhbnZhczsKICAgIAogICAgJC5qcXBsb3QuQmxvY2tDYW52YXMucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbihvZmZzZXRzLCBjbHNzLCBwbG90RGltZW5zaW9ucykgewogICAgICAgIHRoaXMuX29mZnNldHMgPSBvZmZzZXRzOwogICAgICAgIHZhciBrbGFzcyA9ICdqcXBsb3QtYmxvY2tDYW52YXMnOwogICAgICAgIGlmIChjbHNzICE9IHVuZGVmaW5lZCkgewogICAgICAgICAgICBrbGFzcyA9IGNsc3M7CiAgICAgICAgfQogICAgICAgIHZhciBlbGVtOwogICAgICAgIC8vIGlmIHRoaXMgY2FudmFzIGFscmVhZHkgaGFzIGEgZG9tIGVsZW1lbnQsIGRvbid0IG1ha2UgYSBuZXcgb25lLgogICAgICAgIGlmICh0aGlzLl9lbGVtKSB7CiAgICAgICAgICAgIGVsZW0gPSB0aGlzLl9lbGVtLmdldCgwKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKICAgICAgICB9CiAgICAgICAgLy8gaWYgbmV3IHBsb3REaW1lbnNpb25zIHN1cHBsaWVkLCB1c2UgdGhlbS4KICAgICAgICBpZiAocGxvdERpbWVuc2lvbnMgIT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIHRoaXMuX3Bsb3REaW1lbnNpb25zID0gcGxvdERpbWVuc2lvbnM7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHZhciB3ID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSB0aGlzLl9vZmZzZXRzLmxlZnQgLSB0aGlzLl9vZmZzZXRzLnJpZ2h0ICsgJ3B4JzsKICAgICAgICB2YXIgaCA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIHRoaXMuX29mZnNldHMudG9wIC0gdGhpcy5fb2Zmc2V0cy5ib3R0b20gKyAncHgnOwogICAgICAgIHRoaXMuX2VsZW0gPSAkKGVsZW0pOwogICAgICAgIHRoaXMuX2VsZW0uY3NzKHsgcG9zaXRpb246ICdhYnNvbHV0ZScsIHdpZHRoOncsIGhlaWdodDpoLCBsZWZ0OiB0aGlzLl9vZmZzZXRzLmxlZnQsIHRvcDogdGhpcy5fb2Zmc2V0cy50b3AgfSk7CiAgICAgICAgCiAgICAgICAgdGhpcy5fZWxlbS5hZGRDbGFzcyhrbGFzcyk7CiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW07CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5CbG9ja0NhbnZhcy5wcm90b3R5cGUuc2V0Q29udGV4dCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuX2N0eCA9IHsKICAgICAgICAgICAgY2FudmFzOnsKICAgICAgICAgICAgICAgIHdpZHRoOjAsCiAgICAgICAgICAgICAgICBoZWlnaHQ6MAogICAgICAgICAgICB9LAogICAgICAgICAgICBjbGVhclJlY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbDt9CiAgICAgICAgfTsKICAgICAgICByZXR1cm4gdGhpcy5fY3R4OwogICAgfTsKICAgIAp9KShqUXVlcnkpOwogICAgCiAgICA=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.blockRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGEpe2EuanFwbG90LkJsb2NrUmVuZGVyZXI9ZnVuY3Rpb24oKXthLmpxcGxvdC5MaW5lUmVuZGVyZXIuY2FsbCh0aGlzKX07YS5qcXBsb3QuQmxvY2tSZW5kZXJlci5wcm90b3R5cGU9bmV3IGEuanFwbG90LkxpbmVSZW5kZXJlcigpO2EuanFwbG90LkJsb2NrUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWEuanFwbG90LkJsb2NrUmVuZGVyZXI7YS5qcXBsb3QuQmxvY2tSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihiKXt0aGlzLmNzcz17cGFkZGluZzoiMnB4Iixib3JkZXI6IjFweCBzb2xpZCAjOTk5Iix0ZXh0QWxpZ246ImNlbnRlciJ9O3RoaXMuZXNjYXBlSHRtbD1mYWxzZTt0aGlzLmluc2VydEJyZWFrcz10cnVlO3RoaXMudmFyeUJsb2NrQ29sb3JzPWZhbHNlO2EuZXh0ZW5kKHRydWUsdGhpcyxiKTtpZih0aGlzLmNzcy5iYWNrZ3JvdW5kQ29sb3Ipe3RoaXMuY29sb3I9dGhpcy5jc3MuYmFja2dyb3VuZENvbG9yfWVsc2V7aWYodGhpcy5jc3MuYmFja2dyb3VuZCl7dGhpcy5jb2xvcj10aGlzLmNzcy5iYWNrZ3JvdW5kfWVsc2V7aWYoIXRoaXMudmFyeUJsb2NrQ29sb3JzKXt0aGlzLmNzcy5iYWNrZ3JvdW5kPXRoaXMuY29sb3J9fX10aGlzLmNhbnZhcz1uZXcgYS5qcXBsb3QuQmxvY2tDYW52YXMoKTt0aGlzLnNoYWRvd0NhbnZhcz1uZXcgYS5qcXBsb3QuQmxvY2tDYW52YXMoKTt0aGlzLmNhbnZhcy5fcGxvdERpbWVuc2lvbnM9dGhpcy5fcGxvdERpbWVuc2lvbnM7dGhpcy5zaGFkb3dDYW52YXMuX3Bsb3REaW1lbnNpb25zPXRoaXMuX3Bsb3REaW1lbnNpb25zO3RoaXMuX3R5cGU9ImJsb2NrIjt0aGlzLm1vdmVCbG9jaz1mdW5jdGlvbihsLGosaSxlKXt2YXIgYz10aGlzLmNhbnZhcy5fZWxlbS5jaGlsZHJlbigiOmVxKCIrbCsiKSIpO3RoaXMuZGF0YVtsXVswXT1qO3RoaXMuZGF0YVtsXVsxXT1pO3RoaXMuX3Bsb3REYXRhW2xdWzBdPWo7dGhpcy5fcGxvdERhdGFbbF1bMV09aTt0aGlzLl9zdGFja0RhdGFbbF1bMF09ajt0aGlzLl9zdGFja0RhdGFbbF1bMV09aTt0aGlzLmdyaWREYXRhW2xdWzBdPXRoaXMuX3hheGlzLnNlcmllc191MnAoaik7dGhpcy5ncmlkRGF0YVtsXVsxXT10aGlzLl95YXhpcy5zZXJpZXNfdTJwKGkpO3ZhciBrPWMub3V0ZXJXaWR0aCgpO3ZhciBmPWMub3V0ZXJIZWlnaHQoKTt2YXIgZD10aGlzLmdyaWREYXRhW2xdWzBdLWsvMisicHgiO3ZhciBnPXRoaXMuZ3JpZERhdGFbbF1bMV0tZi8yKyJweCI7aWYoZSl7aWYocGFyc2VJbnQoZSwxMCkpe2U9cGFyc2VJbnQoZSwxMCl9Yy5hbmltYXRlKHtsZWZ0OmQsdG9wOmd9LGUpfWVsc2V7Yy5jc3Moe2xlZnQ6ZCx0b3A6Z30pfWM9bnVsbH19O2EuanFwbG90LkJsb2NrUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24ocSxvLHIpe2lmKHRoaXMucGx1Z2lucy5wb2ludExhYmVscyl7dGhpcy5wbHVnaW5zLnBvaW50TGFiZWxzLnNob3c9ZmFsc2V9dmFyIGYsYyxsLG8scCxrLG4sZyxlLG07dmFyIGI9KHIhPXVuZGVmaW5lZCk/cjp7fTt2YXIgaj1uZXcgYS5qcXBsb3QuQ29sb3JHZW5lcmF0b3IodGhpcy5zZXJpZXNDb2xvcnMpO3RoaXMuY2FudmFzLl9lbGVtLmVtcHR5KCk7Zm9yKGY9MDtmPHRoaXMuZ3JpZERhdGEubGVuZ3RoO2YrKyl7bD10aGlzLmRhdGFbZl07bz10aGlzLmdyaWREYXRhW2ZdO3A9IiI7az17fTtpZih0eXBlb2YgbFsyXT09InN0cmluZyIpe3A9bFsyXX1lbHNle2lmKHR5cGVvZiBsWzJdPT0ib2JqZWN0Iil7az1sWzJdfX1pZih0eXBlb2YgbFszXT09Im9iamVjdCIpe2s9bFszXX1pZih0aGlzLmluc2VydEJyZWFrcyl7cD1wLnJlcGxhY2UoLyAvZywiPGJyIC8+Iil9az1hLmV4dGVuZCh0cnVlLHt9LHRoaXMuY3NzLGspO2M9YSgnPGRpdiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7bWFyZ2luLWxlZnQ6YXV0bzttYXJnaW4tcmlnaHQ6YXV0bzsiPjwvZGl2PicpO3RoaXMuY2FudmFzLl9lbGVtLmFwcGVuZChjKTt0aGlzLmVzY2FwZUh0bWw/Yy50ZXh0KHApOmMuaHRtbChwKTtkZWxldGUgay5wb3NpdGlvbjtkZWxldGUgay5tYXJnaW5SaWdodDtkZWxldGUgay5tYXJnaW5MZWZ0O2lmKCFrLmJhY2tncm91bmQmJiFrLmJhY2tncm91bmRDb2xvciYmIWsuYmFja2dyb3VuZEltYWdlKXtrLmJhY2tncm91bmQ9ai5uZXh0KCl9Yy5jc3Moayk7bj1jLm91dGVyV2lkdGgoKTtnPWMub3V0ZXJIZWlnaHQoKTtlPW9bMF0tbi8yKyJweCI7bT1vWzFdLWcvMisicHgiO2MuY3NzKHtsZWZ0OmUsdG9wOm19KTtjPW51bGx9fTthLmpxcGxvdC5CbG9ja0NhbnZhcz1mdW5jdGlvbigpe2EuanFwbG90LkVsZW1Db250YWluZXIuY2FsbCh0aGlzKTt0aGlzLl9jdHh9O2EuanFwbG90LkJsb2NrQ2FudmFzLnByb3RvdHlwZT1uZXcgYS5qcXBsb3QuRWxlbUNvbnRhaW5lcigpO2EuanFwbG90LkJsb2NrQ2FudmFzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hLmpxcGxvdC5CbG9ja0NhbnZhczthLmpxcGxvdC5CbG9ja0NhbnZhcy5wcm90b3R5cGUuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihpLGUsYyl7dGhpcy5fb2Zmc2V0cz1pO3ZhciBiPSJqcXBsb3QtYmxvY2tDYW52YXMiO2lmKGUhPXVuZGVmaW5lZCl7Yj1lfXZhciBnO2lmKHRoaXMuX2VsZW0pe2c9dGhpcy5fZWxlbS5nZXQoMCl9ZWxzZXtnPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpfWlmKGMhPXVuZGVmaW5lZCl7dGhpcy5fcGxvdERpbWVuc2lvbnM9Y312YXIgZD10aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC10aGlzLl9vZmZzZXRzLmxlZnQtdGhpcy5fb2Zmc2V0cy5yaWdodCsicHgiO3ZhciBmPXRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodC10aGlzLl9vZmZzZXRzLnRvcC10aGlzLl9vZmZzZXRzLmJvdHRvbSsicHgiO3RoaXMuX2VsZW09YShnKTt0aGlzLl9lbGVtLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix3aWR0aDpkLGhlaWdodDpmLGxlZnQ6dGhpcy5fb2Zmc2V0cy5sZWZ0LHRvcDp0aGlzLl9vZmZzZXRzLnRvcH0pO3RoaXMuX2VsZW0uYWRkQ2xhc3MoYik7cmV0dXJuIHRoaXMuX2VsZW19O2EuanFwbG90LkJsb2NrQ2FudmFzLnByb3RvdHlwZS5zZXRDb250ZXh0PWZ1bmN0aW9uKCl7dGhpcy5fY3R4PXtjYW52YXM6e3dpZHRoOjAsaGVpZ2h0OjB9LGNsZWFyUmVjdDpmdW5jdGlvbigpe3JldHVybiBudWxsfX07cmV0dXJuIHRoaXMuX2N0eH19KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.bubbleRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgdmFyIGFycmF5TWF4ID0gZnVuY3Rpb24oIGFycmF5ICl7CiAgICAgICAgcmV0dXJuIE1hdGgubWF4LmFwcGx5KCBNYXRoLCBhcnJheSApOwogICAgfTsKICAgIHZhciBhcnJheU1pbiA9IGZ1bmN0aW9uKCBhcnJheSApewogICAgICAgIHJldHVybiBNYXRoLm1pbi5hcHBseSggTWF0aCwgYXJyYXkgKTsKICAgIH07CgogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuQnViYmxlUmVuZGVyZXIKICAgICAqIFBsdWdpbiByZW5kZXJlciB0byBkcmF3IGEgYnViYmxlIGNoYXJ0LiAgQSBCdWJibGUgY2hhcnQgaGFzIGRhdGEgcG9pbnRzIGRpc3BsYXllZCBhcwogICAgICogY29sb3JlZCBjaXJjbGVzIHdpdGggYW4gb3B0aW9uYWwgdGV4dCBsYWJlbCBpbnNpZGUuICBUbyB1c2UKICAgICAqIHRoZSBidWJibGUgcmVuZGVyZXIsIHlvdSBtdXN0IGluY2x1ZGUgdGhlIGJ1YmJsZSByZW5kZXJlciBsaWtlOgogICAgICogCiAgICAgKiA+IDxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi9zcmMvcGx1Z2lucy9qcXBsb3QuYnViYmxlUmVuZGVyZXIuanMiPjwvc2NyaXB0PgogICAgICogCiAgICAgKiBEYXRhIG11c3QgYmUgc3VwcGxpZWQgaW4gCiAgICAgKiB0aGUgZm9ybToKICAgICAqIAogICAgICogPiBbW3gxLCB5MSwgcjEsIDxsYWJlbCBvciB7bGFiZWw6J3RleHQnLCBjb2xvcjpjb2xvcn0+XSwgLi4uXQogICAgICogCiAgICAgKiB3aGVyZSB0aGUgbGFiZWwgb3Igb3B0aW9ucyAKICAgICAqIG9iamVjdCBpcyBvcHRpb25hbC4gIAogICAgICogCiAgICAgKiBOb3RlIHRoYXQgYWxsIGJ1YmJsZSBjb2xvcnMgd2lsbCBiZSB0aGUgc2FtZQogICAgICogdW5sZXNzIHRoZSAidmFyeUJ1YmJsZUNvbG9ycyIgb3B0aW9uIGlzIHNldCB0byB0cnVlLiAgQ29sb3JzIGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlIGRhdGEgYXJyYXkKICAgICAqIG9yIGluIHRoZSBzZXJpZXNDb2xvcnMgYXJyYXkgb3B0aW9uIG9uIHRoZSBzZXJpZXMuICBJZiBubyBjb2xvcnMgYXJlIGRlZmluZWQsIHRoZSBkZWZhdWx0IGpxUGxvdAogICAgICogc2VyaWVzIG9mIDE2IGNvbG9ycyBhcmUgdXNlZC4gIENvbG9ycyBhcmUgYXV0b21hdGljYWxseSBjeWNsZWQgYXJvdW5kIGFnYWluIGlmIHRoZXJlIGFyZSBtb3JlCiAgICAgKiBidWJibGVzIHRoYW4gY29sb3JzLgogICAgICogCiAgICAgKiBCdWJibGVzIGFyZSBhdXRvc2NhbGVkIGJ5IGRlZmF1bHQgdG8gZml0IHdpdGhpbiB0aGUgY2hhcnQgYXJlYSB3aGlsZSBtYWludGFpbmluZyAKICAgICAqIHJlbGF0aXZlIHNpemVzLiAgSWYgdGhlICJhdXRvc2NhbGVCdWJibGVzIiBvcHRpb24gaXMgc2V0IHRvIGZhbHNlLCB0aGUgcihhZGl1cykgdmFsdWVzCiAgICAgKiBpbiB0aGUgZGF0YSBhcnJheSBhIHRyZWF0ZWQgYXMgbGl0ZXJhbCBwaXhlbCB2YWx1ZXMgZm9yIHRoZSByYWRpaSBvZiB0aGUgYnViYmxlcy4KICAgICAqIAogICAgICogUHJvcGVydGllcyBhcmUgcGFzc2VkIGludG8gdGhlIGJ1YmJsZSByZW5kZXJlciBpbiB0aGUgcmVuZGVyZXJPcHRpb25zIG9iamVjdCBvZgogICAgICogdGhlIHNlcmllcyBvcHRpb25zIGxpa2U6CiAgICAgKiAKICAgICAqID4gc2VyaWVzRGVmYXVsdHM6IHsKICAgICAqID4gICAgIHJlbmRlcmVyOiAkLmpxcGxvdC5CdWJibGVSZW5kZXJlciwKICAgICAqID4gICAgIHJlbmRlcmVyT3B0aW9uczogewogICAgICogPiAgICAgICAgIGJ1YmJsZUFscGhhOiAwLjcsCiAgICAgKiA+ICAgICAgICAgdmFyeUJ1YmJsZUNvbG9yczogZmFsc2UKICAgICAqID4gICAgIH0KICAgICAqID4gfQogICAgICogCiAgICAgKi8KICAgICQuanFwbG90LkJ1YmJsZVJlbmRlcmVyID0gZnVuY3Rpb24oKXsKICAgICAgICAkLmpxcGxvdC5MaW5lUmVuZGVyZXIuY2FsbCh0aGlzKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkJ1YmJsZVJlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTsKICAgICQuanFwbG90LkJ1YmJsZVJlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LkJ1YmJsZVJlbmRlcmVyOwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBhIHNlcmllcwogICAgJC5qcXBsb3QuQnViYmxlUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zLCBwbG90KSB7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAvLwogICAgICAgIC8vIHByb3A6IHZhcnlCdWJibGVDb2xvcnMKICAgICAgICAvLyBUcnVlIHRvIHZhcnkgdGhlIGNvbG9yIG9mIGVhY2ggYnViYmxlIGluIHRoaXMgc2VyaWVzIGFjY29yZGluZyB0bwogICAgICAgIC8vIHRoZSBzZXJpZXNDb2xvcnMgYXJyYXkuICBGYWxzZSB0byBzZXQgZWFjaCBidWJibGUgdG8gdGhlIGNvbG9yCiAgICAgICAgLy8gc3BlY2lmaWVkIG9uIHRoaXMgc2VyaWVzLiAgVGhpcyBoYXMgbm8gZWZmZWN0IGlmIGEgY3NzIGJhY2tncm91bmQgY29sb3IKICAgICAgICAvLyBvcHRpb24gaXMgc3BlY2lmaWVkIGluIHRoZSByZW5kZXJlciBjc3Mgb3B0aW9ucy4KICAgICAgICB0aGlzLnZhcnlCdWJibGVDb2xvcnMgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IGF1dG9zY2FsZUJ1YmJsZXMKICAgICAgICAvLyBUcnVlIHRvIHNjYWxlIHRoZSBidWJibGUgcmFkaXVzIGJhc2VkIG9uIHBsb3Qgc2l6ZS4KICAgICAgICAvLyBGYWxzZSB3aWxsIHVzZSB0aGUgcmFkaXVzIHZhbHVlIGFzIHByb3ZpZGVkIGFzIGEgcmF3IHBpeGVsIHZhbHVlIGZvcgogICAgICAgIC8vIGJ1YmJsZSByYWRpdXMuCiAgICAgICAgdGhpcy5hdXRvc2NhbGVCdWJibGVzID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBhdXRvc2NhbGVNdWx0aXBsaWVyCiAgICAgICAgLy8gTXVsdGlwbGllciB0aGUgYnViYmxlIHNpemUgaWYgYXV0b3NjYWxlQnViYmxlcyBpcyB0cnVlLgogICAgICAgIHRoaXMuYXV0b3NjYWxlTXVsdGlwbGllciA9IDEuMDsKICAgICAgICAvLyBwcm9wOiBhdXRvc2NhbGVQb2ludHNGYWN0b3IKICAgICAgICAvLyBGYWN0b3Igd2hpY2ggZGVjcmVhc2VzIGJ1YmJsZSBzaXplIGJhc2VkIG9uIGhvdyBtYW55IGJ1YmJsZXMgb24gb24gdGhlIGNoYXJ0LgogICAgICAgIC8vIDAgbWVhbnMgbm8gYWRqdXN0bWVudCBmb3IgbnVtYmVyIG9mIGJ1YmJsZXMuICBOZWdhdGl2ZSB2YWx1ZXMgd2lsbCBkZWNyZWFzZQogICAgICAgIC8vIHNpemUgb2YgYnViYmxlcyBhcyBtb3JlIGJ1YmJsZXMgYXJlIGFkZGVkLiAgVmFsdWVzIGJldHdlZW4gMCBhbmQgLTAuMgogICAgICAgIC8vIHNob3VsZCB3b3JrIHdlbGwuCiAgICAgICAgdGhpcy5hdXRvc2NhbGVQb2ludHNGYWN0b3IgPSAtMC4wNzsKICAgICAgICAvLyBwcm9wOiBlc2NhcGVIdG1sCiAgICAgICAgLy8gVHJ1ZSB0byBlc2NhcGUgaHRtbCBpbiBidWJibGUgbGFiZWwgdGV4dC4KICAgICAgICB0aGlzLmVzY2FwZUh0bWwgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IGhpZ2hsaWdodE1vdXNlT3ZlcgogICAgICAgIC8vIFRydWUgdG8gaGlnaGxpZ2h0IGJ1YmJsZXMgd2hlbiBtb3VzZWQgb3Zlci4KICAgICAgICAvLyBUaGlzIG11c3QgYmUgZmFsc2UgdG8gZW5hYmxlIGhpZ2hsaWdodE1vdXNlRG93biB0byBoaWdobGlnaHQgd2hlbiBjbGlja2luZyBvbiBhIHNsaWNlLgogICAgICAgIHRoaXMuaGlnaGxpZ2h0TW91c2VPdmVyID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBoaWdobGlnaHRNb3VzZURvd24KICAgICAgICAvLyBUcnVlIHRvIGhpZ2hsaWdodCB3aGVuIGEgbW91c2UgYnV0dG9uIGlzIHByZXNzZWQgb3ZlciBhIGJ1YmJsZS4KICAgICAgICAvLyBUaGlzIHdpbGwgYmUgZGlzYWJsZWQgaWYgaGlnaGxpZ2h0TW91c2VPdmVyIGlzIHRydWUuCiAgICAgICAgdGhpcy5oaWdobGlnaHRNb3VzZURvd24gPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiBoaWdobGlnaHRDb2xvcnMKICAgICAgICAvLyBBbiBhcnJheSBvZiBjb2xvcnMgdG8gdXNlIHdoZW4gaGlnaGxpZ2h0aW5nIGEgc2xpY2UuICBDYWxjdWxhdGVkIGF1dG9tYXRpY2FsbHkKICAgICAgICAvLyBpZiBub3Qgc3VwcGxpZWQuCiAgICAgICAgdGhpcy5oaWdobGlnaHRDb2xvcnMgPSBbXTsKICAgICAgICAvLyBwcm9wOiBidWJibGVBbHBoYQogICAgICAgIC8vIEFscGhhIHRyYW5zcGFyZW5jeSB0byBhcHBseSB0byBhbGwgYnViYmxlcyBpbiB0aGlzIHNlcmllcy4KICAgICAgICB0aGlzLmJ1YmJsZUFscGhhID0gMS4wOwogICAgICAgIC8vIHByb3A6IGhpZ2hsaWdodEFscGhhCiAgICAgICAgLy8gQWxwaGEgdHJhbnNwYXJlbmN5IHRvIGFwcGx5IHdoZW4gaGlnaGxpZ2h0aW5nIGJ1YmJsZS4KICAgICAgICAvLyBTZXQgdG8gdmFsdWUgb2YgYnViYmxlQWxwaGEgYnkgZGVmYXVsdC4KICAgICAgICB0aGlzLmhpZ2hsaWdodEFscGhhID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBidWJibGVHcmFkaWVudHMKICAgICAgICAvLyBUcnVlIHRvIGNvbG9yIHRoZSBidWJibGVzIHdpdGggZ3JhZGllbnQgZmlsbHMgaW5zdGVhZCBvZiBmbGF0IGNvbG9ycy4KICAgICAgICAvLyBOT1QgQVZBSUxBQkxFIElOIElFIGR1ZSB0byBsYWNrIG9mIGV4Y2FudmFzIHN1cHBvcnQgZm9yIHJhZGlhbCBncmFkaWVudCBmaWxscy4KICAgICAgICAvLyB3aWxsIGJlIGlnbm9yZWQgaW4gSUUuCiAgICAgICAgdGhpcy5idWJibGVHcmFkaWVudHMgPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiBzaG93TGFiZWxzCiAgICAgICAgLy8gVHJ1ZSB0byBzaG93IGxhYmVscyBvbiBidWJibGVzIChpZiBhbnkpLCBmYWxzZSB0byBub3Qgc2hvdy4KICAgICAgICB0aGlzLnNob3dMYWJlbHMgPSB0cnVlOwogICAgICAgIC8vIGFycmF5IG9mIFtwb2ludCBpbmRleCwgcmFkaXVzXSB3aGljaCB3aWxsIGJlIHNvcnRlZCBpbiBkZXNjZW5kaW5nIG9yZGVyIHRvIHBsb3QgCiAgICAgICAgLy8gbGFyZ2VzdCBwb2ludHMgYmVsb3cgc21hbGxlciBwb2ludHMuCiAgICAgICAgdGhpcy5yYWRpaSA9IFtdOwogICAgICAgIHRoaXMubWF4UmFkaXVzID0gMDsKICAgICAgICAvLyBpbmRleCBvZiB0aGUgY3VycmVudHkgaGlnaGxpZ2h0ZWQgcG9pbnQsIGlmIGFueQogICAgICAgIHRoaXMuX2hpZ2hsaWdodGVkUG9pbnQgPSBudWxsOwogICAgICAgIC8vIGFycmF5IG9mIGpRdWVyeSBsYWJlbHMuCiAgICAgICAgdGhpcy5sYWJlbHMgPSBbXTsKICAgICAgICB0aGlzLmJ1YmJsZUNhbnZhc2VzID0gW107CiAgICAgICAgdGhpcy5fdHlwZSA9ICdidWJibGUnOwogICAgICAgIAogICAgICAgIC8vIGlmIHVzZXIgaGFzIHBhc3NlZCBpbiBoaWdobGlnaHRNb3VzZURvd24gb3B0aW9uIGFuZCBub3Qgc2V0IGhpZ2hsaWdodE1vdXNlT3ZlciwgZGlzYWJsZSBoaWdobGlnaHRNb3VzZU92ZXIKICAgICAgICBpZiAob3B0aW9ucy5oaWdobGlnaHRNb3VzZURvd24gJiYgb3B0aW9ucy5oaWdobGlnaHRNb3VzZU92ZXIgPT0gbnVsbCkgewogICAgICAgICAgICBvcHRpb25zLmhpZ2hsaWdodE1vdXNlT3ZlciA9IGZhbHNlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgICAgICAKICAgICAgICBpZiAodGhpcy5oaWdobGlnaHRBbHBoYSA9PSBudWxsKSB7CiAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0QWxwaGEgPSB0aGlzLmJ1YmJsZUFscGhhOwogICAgICAgICAgICBpZiAodGhpcy5idWJibGVHcmFkaWVudHMpIHsKICAgICAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0QWxwaGEgPSAwLjM1OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHRoaXMuYXV0b3NjYWxlTXVsdGlwbGllciA9IHRoaXMuYXV0b3NjYWxlTXVsdGlwbGllciAqIE1hdGgucG93KHRoaXMuZGF0YS5sZW5ndGgsIHRoaXMuYXV0b3NjYWxlUG9pbnRzRmFjdG9yKTsKICAgICAgICAKICAgICAgICAvLyBpbmRleCBvZiB0aGUgY3VycmVudHkgaGlnaGxpZ2h0ZWQgcG9pbnQsIGlmIGFueQogICAgICAgIHRoaXMuX2hpZ2hsaWdodGVkUG9pbnQgPSBudWxsOwogICAgICAgIAogICAgICAgIC8vIGFkanVzdCB0aGUgc2VyaWVzIGNvbG9ycyBmb3Igb3B0aW9ucyBjb2xvcnMgcGFzc2VkIGluIHdpdGggZGF0YSBvciBmb3IgYWxwaGEuCiAgICAgICAgLy8gbm90ZSwgdGhpcyBjYW4gbGVhdmUgdW5kZWZpbmVkIGhvbGVzIGluIHRoZSBzZXJpZXNDb2xvcnMgYXJyYXkuCiAgICAgICAgdmFyIGNvbXBzOwogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIGNvbG9yID0gbnVsbDsKICAgICAgICAgICAgdmFyIGQgPSB0aGlzLmRhdGFbaV07CiAgICAgICAgICAgIHRoaXMubWF4UmFkaXVzID0gTWF0aC5tYXgodGhpcy5tYXhSYWRpdXMsIGRbMl0pOwogICAgICAgICAgICBpZiAoZFszXSkgewogICAgICAgICAgICAgICAgaWYgKHR5cGVvZihkWzNdKSA9PSAnb2JqZWN0JykgewogICAgICAgICAgICAgICAgICAgIGNvbG9yID0gZFszXVsnY29sb3InXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGNvbG9yID09IG51bGwpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlcmllc0NvbG9yc1tpXSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgY29sb3IgPSB0aGlzLnNlcmllc0NvbG9yc1tpXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGNvbG9yICYmIHRoaXMuYnViYmxlQWxwaGEgPCAxLjApIHsKICAgICAgICAgICAgICAgIGNvbXBzID0gJC5qcXBsb3QuZ2V0Q29sb3JDb21wb25lbnRzKGNvbG9yKTsKICAgICAgICAgICAgICAgIGNvbG9yID0gJ3JnYmEoJytjb21wc1swXSsnLCAnK2NvbXBzWzFdKycsICcrY29tcHNbMl0rJywgJyt0aGlzLmJ1YmJsZUFscGhhKycpJzsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGNvbG9yKSB7CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc0NvbG9yc1tpXSA9IGNvbG9yOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICghdGhpcy52YXJ5QnViYmxlQ29sb3JzKSB7CiAgICAgICAgICAgIHRoaXMuc2VyaWVzQ29sb3JzID0gW3RoaXMuY29sb3JdOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB0aGlzLmNvbG9yR2VuZXJhdG9yID0gbmV3ICQuanFwbG90LkNvbG9yR2VuZXJhdG9yKHRoaXMuc2VyaWVzQ29sb3JzKTsKICAgICAgICAKICAgICAgICAvLyBzZXQgaGlnaGxpZ2h0IGNvbG9ycyBpZiBub25lIHByb3ZpZGVkCiAgICAgICAgaWYgKHRoaXMuaGlnaGxpZ2h0Q29sb3JzLmxlbmd0aCA9PSAwKSB7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLnNlcmllc0NvbG9ycy5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAgICAgICB2YXIgcmdiYSA9ICQuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyh0aGlzLnNlcmllc0NvbG9yc1tpXSk7CiAgICAgICAgICAgICAgICB2YXIgbmV3cmdiID0gW3JnYmFbMF0sIHJnYmFbMV0sIHJnYmFbMl1dOwogICAgICAgICAgICAgICAgdmFyIHN1bSA9IG5ld3JnYlswXSArIG5ld3JnYlsxXSArIG5ld3JnYlsyXTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MDsgajwzOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIGRhcmtlbmluZywgbG93ZXN0IGNvbG9yIGNvbXBvbmVudCBjYW4gYmUgaXMgNjAuCiAgICAgICAgICAgICAgICAgICAgbmV3cmdiW2pdID0gKHN1bSA+IDU3MCkgPyAgbmV3cmdiW2pdICogMC44IDogbmV3cmdiW2pdICsgMC4zICogKDI1NSAtIG5ld3JnYltqXSk7CiAgICAgICAgICAgICAgICAgICAgbmV3cmdiW2pdID0gcGFyc2VJbnQobmV3cmdiW2pdLCAxMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLmhpZ2hsaWdodENvbG9ycy5wdXNoKCdyZ2JhKCcrbmV3cmdiWzBdKycsJytuZXdyZ2JbMV0rJywnK25ld3JnYlsyXSsnLCAnK3RoaXMuaGlnaGxpZ2h0QWxwaGErJyknKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICB0aGlzLmhpZ2hsaWdodENvbG9yR2VuZXJhdG9yID0gbmV3ICQuanFwbG90LkNvbG9yR2VuZXJhdG9yKHRoaXMuaGlnaGxpZ2h0Q29sb3JzKTsKICAgICAgICAKICAgICAgICB2YXIgc29wdHMgPSB7ZmlsbDp0cnVlLCBpc2FyYzp0cnVlLCBhbmdsZTp0aGlzLnNoYWRvd0FuZ2xlLCBhbHBoYTp0aGlzLnNoYWRvd0FscGhhLCBjbG9zZVBhdGg6dHJ1ZX07CiAgICAgICAgCiAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5pbml0KHNvcHRzKTsKICAgICAgICAKICAgICAgICB0aGlzLmNhbnZhcyA9IG5ldyAkLmpxcGxvdC5EaXZDYW52YXMoKTsKICAgICAgICB0aGlzLmNhbnZhcy5fcGxvdERpbWVuc2lvbnMgPSB0aGlzLl9wbG90RGltZW5zaW9uczsKICAgICAgICAKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RNb3VzZU1vdmUnLCBoYW5kbGVNb3ZlKTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RNb3VzZURvd24nLCBoYW5kbGVNb3VzZURvd24pOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdE1vdXNlVXAnLCBoYW5kbGVNb3VzZVVwKTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RDbGljaycsIGhhbmRsZUNsaWNrKTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RSaWdodENsaWNrJywgaGFuZGxlUmlnaHRDbGljayk7CiAgICAgICAgcGxvdC5wb3N0RHJhd0hvb2tzLmFkZE9uY2UocG9zdFBsb3REcmF3KTsKICAgICAgICAKICAgIH07CiAgICAKCiAgICAvLyBjb252ZXJ0cyB0aGUgdXNlciBkYXRhIHZhbHVlcyB0byBncmlkIGNvb3JkaW5hdGVzIGFuZCBzdG9yZXMgdGhlbQogICAgLy8gaW4gdGhlIGdyaWREYXRhIGFycmF5LgogICAgLy8gQ2FsbGVkIHdpdGggc2NvcGUgb2YgYSBzZXJpZXMuCiAgICAkLmpxcGxvdC5CdWJibGVSZW5kZXJlci5wcm90b3R5cGUuc2V0R3JpZERhdGEgPSBmdW5jdGlvbihwbG90KSB7CiAgICAgICAgLy8gcmVjYWxjdWxhdGUgdGhlIGdyaWQgZGF0YQogICAgICAgIHZhciB4cCA9IHRoaXMuX3hheGlzLnNlcmllc191MnA7CiAgICAgICAgdmFyIHlwID0gdGhpcy5feWF4aXMuc2VyaWVzX3UycDsKICAgICAgICB2YXIgZGF0YSA9IHRoaXMuX3Bsb3REYXRhOwogICAgICAgIHRoaXMuZ3JpZERhdGEgPSBbXTsKICAgICAgICB2YXIgcmFkaWkgPSBbXTsKICAgICAgICB0aGlzLnJhZGlpID0gW107CiAgICAgICAgdmFyIGRpbSA9IE1hdGgubWluKHBsb3QuX2hlaWdodCwgcGxvdC5fd2lkdGgpOwogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKGRhdGFbaV0gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgdGhpcy5ncmlkRGF0YS5wdXNoKFt4cC5jYWxsKHRoaXMuX3hheGlzLCBkYXRhW2ldWzBdKSwgeXAuY2FsbCh0aGlzLl95YXhpcywgZGF0YVtpXVsxXSksIGRhdGFbaV1bMl1dKTsKICAgICAgICAgICAgICAgIHRoaXMucmFkaWkucHVzaChbaSwgZGF0YVtpXVsyXV0pOwogICAgICAgICAgICAgICAgcmFkaWkucHVzaChkYXRhW2ldWzJdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB2YXIgciwgdmFsLCBtYXhyID0gdGhpcy5tYXhSYWRpdXMgPSBhcnJheU1heChyYWRpaSk7CiAgICAgICAgdmFyIGwgPSB0aGlzLmdyaWREYXRhLmxlbmd0aDsKICAgICAgICBpZiAodGhpcy5hdXRvc2NhbGVCdWJibGVzKSB7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgICAgIHZhbCA9IHJhZGlpW2ldL21heHI7CiAgICAgICAgICAgICAgICByID0gdGhpcy5hdXRvc2NhbGVNdWx0aXBsaWVyICogZGltIC8gNjsKICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGFbaV1bMl0gPSByICogdmFsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHRoaXMucmFkaWkuc29ydChmdW5jdGlvbihhLCBiKSB7IHJldHVybiBiWzFdIC0gYVsxXTsgfSk7CiAgICB9OwogICAgCiAgICAvLyBjb252ZXJ0cyBhbnkgYXJiaXRyYXJ5IGRhdGEgdmFsdWVzIHRvIGdyaWQgY29vcmRpbmF0ZXMgYW5kCiAgICAvLyByZXR1cm5zIHRoZW0uICBUaGlzIG1ldGhvZCBleGlzdHMgc28gdGhhdCBwbHVnaW5zIGNhbiB1c2UgYSBzZXJpZXMnCiAgICAvLyBsaW5lcmVuZGVyZXIgdG8gZ2VuZXJhdGUgZ3JpZCBkYXRhIHBvaW50cyB3aXRob3V0IG92ZXJ3cml0aW5nIHRoZQogICAgLy8gZ3JpZCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGF0IHNlcmllcy4KICAgIC8vIENhbGxlZCB3aXRoIHNjb3BlIG9mIGEgc2VyaWVzLgogICAgJC5qcXBsb3QuQnViYmxlUmVuZGVyZXIucHJvdG90eXBlLm1ha2VHcmlkRGF0YSA9IGZ1bmN0aW9uKGRhdGEsIHBsb3QpIHsKICAgICAgICAvLyByZWNhbGN1bGF0ZSB0aGUgZ3JpZCBkYXRhCiAgICAgICAgdmFyIHhwID0gdGhpcy5feGF4aXMuc2VyaWVzX3UycDsKICAgICAgICB2YXIgeXAgPSB0aGlzLl95YXhpcy5zZXJpZXNfdTJwOwogICAgICAgIHZhciBnZCA9IFtdOwogICAgICAgIHZhciByYWRpaSA9IFtdOwogICAgICAgIHRoaXMucmFkaWkgPSBbXTsKICAgICAgICB2YXIgZGltID0gTWF0aC5taW4ocGxvdC5faGVpZ2h0LCBwbG90Ll93aWR0aCk7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPGRhdGEubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKGRhdGFbaV0gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgZ2QucHVzaChbeHAuY2FsbCh0aGlzLl94YXhpcywgZGF0YVtpXVswXSksIHlwLmNhbGwodGhpcy5feWF4aXMsIGRhdGFbaV1bMV0pLCBkYXRhW2ldWzJdXSk7CiAgICAgICAgICAgICAgICByYWRpaS5wdXNoKGRhdGFbaV1bMl0pOwogICAgICAgICAgICAgICAgdGhpcy5yYWRpaS5wdXNoKFtpLCBkYXRhW2ldWzJdXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdmFyIHIsIHZhbCwgbWF4ciA9IHRoaXMubWF4UmFkaXVzID0gYXJyYXlNYXgocmFkaWkpOwogICAgICAgIHZhciBsID0gdGhpcy5ncmlkRGF0YS5sZW5ndGg7CiAgICAgICAgaWYgKHRoaXMuYXV0b3NjYWxlQnViYmxlcykgewogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8bDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YWwgPSByYWRpaVtpXS9tYXhyOwogICAgICAgICAgICAgICAgciA9IHRoaXMuYXV0b3NjYWxlTXVsdGlwbGllciAqIGRpbSAvIDY7CiAgICAgICAgICAgICAgICBnZFtpXVsyXSA9IHIgKiB2YWw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdGhpcy5yYWRpaS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHsgcmV0dXJuIGJbMV0gLSBhWzFdOyB9KTsKICAgICAgICByZXR1cm4gZ2Q7CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBzZXJpZXMKICAgICQuanFwbG90LkJ1YmJsZVJlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24gKGN0eCwgZ2QsIG9wdGlvbnMpIHsKICAgICAgICBpZiAodGhpcy5wbHVnaW5zLnBvaW50TGFiZWxzKSB7CiAgICAgICAgICAgIHRoaXMucGx1Z2lucy5wb2ludExhYmVscy5zaG93ID0gZmFsc2U7CiAgICAgICAgfQogICAgICAgIHZhciBvcHRzID0gKG9wdGlvbnMgIT0gdW5kZWZpbmVkKSA/IG9wdGlvbnMgOiB7fTsKICAgICAgICB2YXIgc2hhZG93ID0gKG9wdHMuc2hhZG93ICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNoYWRvdyA6IHRoaXMuc2hhZG93OwogICAgICAgIHRoaXMuY2FudmFzLl9lbGVtLmVtcHR5KCk7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMucmFkaWkubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIGlkeCA9IHRoaXMucmFkaWlbaV1bMF07CiAgICAgICAgICAgIHZhciB0PW51bGw7CiAgICAgICAgICAgIHZhciBjb2xvciA9IG51bGw7CiAgICAgICAgICAgIHZhciBlbCA9IG51bGw7CiAgICAgICAgICAgIHZhciB0ZWwgPSBudWxsOwogICAgICAgICAgICB2YXIgZCA9IHRoaXMuZGF0YVtpZHhdOwogICAgICAgICAgICB2YXIgZ2QgPSB0aGlzLmdyaWREYXRhW2lkeF07CiAgICAgICAgICAgIGlmIChkWzNdKSB7CiAgICAgICAgICAgICAgICBpZiAodHlwZW9mKGRbM10pID09ICdvYmplY3QnKSB7CiAgICAgICAgICAgICAgICAgICAgdCA9IGRbM11bJ2xhYmVsJ107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YoZFszXSkgPT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgICAgICB0ID0gZFszXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gY29sb3IgPSAodGhpcy52YXJ5QnViYmxlQ29sb3JzKSA/IHRoaXMuY29sb3JHZW5lcmF0b3IuZ2V0KGlkeCkgOiB0aGlzLmNvbG9yOwogICAgICAgICAgICBjb2xvciA9IHRoaXMuY29sb3JHZW5lcmF0b3IuZ2V0KGlkeCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBJZiB3ZSdyZSBkcmF3aW5nIGEgc2hhZG93LCBleHBhbmQgdGhlIGNhbnZhcyBkaW1lbnNpb25zIHRvIGFjY29tb2RhdGUuCiAgICAgICAgICAgIHZhciBjYW52YXNSYWRpdXMgPSBnZFsyXTsKICAgICAgICAgICAgdmFyIG9mZnNldCwgZGVwdGg7CiAgICAgICAgICAgIGlmICh0aGlzLnNoYWRvdykgewogICAgICAgICAgICAgICAgb2Zmc2V0ID0gKDAuNyArIGdkWzJdLzQwKS50b0ZpeGVkKDEpOwogICAgICAgICAgICAgICAgZGVwdGggPSAxICsgTWF0aC5jZWlsKGdkWzJdLzE1KTsKICAgICAgICAgICAgICAgIGNhbnZhc1JhZGl1cyArPSBvZmZzZXQqZGVwdGg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5idWJibGVDYW52YXNlc1tpZHhdID0gbmV3ICQuanFwbG90LkJ1YmJsZUNhbnZhcygpOwogICAgICAgICAgICB0aGlzLmNhbnZhcy5fZWxlbS5hcHBlbmQodGhpcy5idWJibGVDYW52YXNlc1tpZHhdLmNyZWF0ZUVsZW1lbnQoZ2RbMF0sIGdkWzFdLCBjYW52YXNSYWRpdXMpKTsKICAgICAgICAgICAgdGhpcy5idWJibGVDYW52YXNlc1tpZHhdLnNldENvbnRleHQoKTsKICAgICAgICAgICAgdmFyIGN0eCA9IHRoaXMuYnViYmxlQ2FudmFzZXNbaWR4XS5fY3R4OwogICAgICAgICAgICB2YXIgeCA9IGN0eC5jYW52YXMud2lkdGgvMjsKICAgICAgICAgICAgdmFyIHkgPSBjdHguY2FudmFzLmhlaWdodC8yOwogICAgICAgICAgICBpZiAodGhpcy5zaGFkb3cpIHsKICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIFt4LCB5LCBnZFsyXSwgMCwgMipNYXRoLlBJXSwge29mZnNldDogb2Zmc2V0LCBkZXB0aDogZGVwdGh9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLmJ1YmJsZUNhbnZhc2VzW2lkeF0uZHJhdyhnZFsyXSwgY29sb3IsIHRoaXMuYnViYmxlR3JhZGllbnRzLCB0aGlzLnNoYWRvd0FuZ2xlLzE4MCpNYXRoLlBJKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIG5vdyBkcmF3IGxhYmVsLgogICAgICAgICAgICBpZiAodCAmJiB0aGlzLnNob3dMYWJlbHMpIHsKICAgICAgICAgICAgICAgIHRlbCA9ICQoJzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyIgY2xhc3M9ImpxcGxvdC1idWJibGUtbGFiZWwiPjwvZGl2PicpOwogICAgICAgICAgICAgICAgaWYgKHRoaXMuZXNjYXBlSHRtbCkgewogICAgICAgICAgICAgICAgICAgIHRlbC50ZXh0KHQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdGVsLmh0bWwodCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLmNhbnZhcy5fZWxlbS5hcHBlbmQodGVsKTsKICAgICAgICAgICAgICAgIHZhciBoID0gJCh0ZWwpLm91dGVySGVpZ2h0KCk7CiAgICAgICAgICAgICAgICB2YXIgdyA9ICQodGVsKS5vdXRlcldpZHRoKCk7CiAgICAgICAgICAgICAgICB2YXIgdG9wID0gZ2RbMV0gLSAwLjUqaDsKICAgICAgICAgICAgICAgIHZhciBsZWZ0ID0gZ2RbMF0gLSAwLjUqdzsKICAgICAgICAgICAgICAgIHRlbC5jc3Moe3RvcDogdG9wLCBsZWZ0OiBsZWZ0fSk7CiAgICAgICAgICAgICAgICB0aGlzLmxhYmVsc1tpZHhdID0gJCh0ZWwpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICAKICAgICQuanFwbG90LkRpdkNhbnZhcyA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkVsZW1Db250YWluZXIuY2FsbCh0aGlzKTsKICAgICAgICB0aGlzLl9jdHg7ICAKICAgIH07CiAgICAKICAgICQuanFwbG90LkRpdkNhbnZhcy5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuRWxlbUNvbnRhaW5lcigpOwogICAgJC5qcXBsb3QuRGl2Q2FudmFzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LkRpdkNhbnZhczsKICAgIAogICAgJC5qcXBsb3QuRGl2Q2FudmFzLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24ob2Zmc2V0cywgY2xzcywgcGxvdERpbWVuc2lvbnMpIHsKICAgICAgICB0aGlzLl9vZmZzZXRzID0gb2Zmc2V0czsKICAgICAgICB2YXIga2xhc3MgPSAnanFwbG90LURpdkNhbnZhcyc7CiAgICAgICAgaWYgKGNsc3MgIT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIGtsYXNzID0gY2xzczsKICAgICAgICB9CiAgICAgICAgdmFyIGVsZW07CiAgICAgICAgLy8gaWYgdGhpcyBjYW52YXMgYWxyZWFkeSBoYXMgYSBkb20gZWxlbWVudCwgZG9uJ3QgbWFrZSBhIG5ldyBvbmUuCiAgICAgICAgaWYgKHRoaXMuX2VsZW0pIHsKICAgICAgICAgICAgZWxlbSA9IHRoaXMuX2VsZW0uZ2V0KDApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIH0KICAgICAgICAvLyBpZiBuZXcgcGxvdERpbWVuc2lvbnMgc3VwcGxpZWQsIHVzZSB0aGVtLgogICAgICAgIGlmIChwbG90RGltZW5zaW9ucyAhPSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgdGhpcy5fcGxvdERpbWVuc2lvbnMgPSBwbG90RGltZW5zaW9uczsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgdmFyIHcgPSB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIHRoaXMuX29mZnNldHMubGVmdCAtIHRoaXMuX29mZnNldHMucmlnaHQgKyAncHgnOwogICAgICAgIHZhciBoID0gdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0IC0gdGhpcy5fb2Zmc2V0cy50b3AgLSB0aGlzLl9vZmZzZXRzLmJvdHRvbSArICdweCc7CiAgICAgICAgdGhpcy5fZWxlbSA9ICQoZWxlbSk7CiAgICAgICAgdGhpcy5fZWxlbS5jc3MoeyBwb3NpdGlvbjogJ2Fic29sdXRlJywgd2lkdGg6dywgaGVpZ2h0OmgsIGxlZnQ6IHRoaXMuX29mZnNldHMubGVmdCwgdG9wOiB0aGlzLl9vZmZzZXRzLnRvcCB9KTsKICAgICAgICAKICAgICAgICB0aGlzLl9lbGVtLmFkZENsYXNzKGtsYXNzKTsKICAgICAgICByZXR1cm4gdGhpcy5fZWxlbTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkRpdkNhbnZhcy5wcm90b3R5cGUuc2V0Q29udGV4dCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuX2N0eCA9IHsKICAgICAgICAgICAgY2FudmFzOnsKICAgICAgICAgICAgICAgIHdpZHRoOjAsCiAgICAgICAgICAgICAgICBoZWlnaHQ6MAogICAgICAgICAgICB9LAogICAgICAgICAgICBjbGVhclJlY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbDt9CiAgICAgICAgfTsKICAgICAgICByZXR1cm4gdGhpcy5fY3R4OwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQnViYmxlQ2FudmFzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgJC5qcXBsb3QuRWxlbUNvbnRhaW5lci5jYWxsKHRoaXMpOwogICAgICAgIHRoaXMuX2N0eDsKICAgIH07CiAgICAKICAgICQuanFwbG90LkJ1YmJsZUNhbnZhcy5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuRWxlbUNvbnRhaW5lcigpOwogICAgJC5qcXBsb3QuQnViYmxlQ2FudmFzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LkJ1YmJsZUNhbnZhczsKICAgIAogICAgLy8gaW5pdGlhbGl6ZSB3aXRoIHRoZSB4LHkgcG9udCBvZiBidWJibGUgY2VudGVyIGFuZCB0aGUgYnViYmxlIHJhZGl1cy4KICAgICQuanFwbG90LkJ1YmJsZUNhbnZhcy5wcm90b3R5cGUuY3JlYXRlRWxlbWVudCA9IGZ1bmN0aW9uKHgsIHksIHIpIHsgICAgIAogICAgICAgIHZhciBrbGFzcyA9ICdqcXBsb3QtYnViYmxlLXBvaW50JzsKCiAgICAgICAgdmFyIGVsZW07CiAgICAgICAgLy8gaWYgdGhpcyBjYW52YXMgYWxyZWFkeSBoYXMgYSBkb20gZWxlbWVudCwgZG9uJ3QgbWFrZSBhIG5ldyBvbmUuCiAgICAgICAgaWYgKHRoaXMuX2VsZW0pIHsKICAgICAgICAgICAgZWxlbSA9IHRoaXMuX2VsZW0uZ2V0KDApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBlbGVtLndpZHRoID0gKHIgIT0gbnVsbCkgPyAyKnIgOiBlbGVtLndpZHRoOwogICAgICAgIGVsZW0uaGVpZ2h0ID0gKHIgIT0gbnVsbCkgPyAyKnIgOiBlbGVtLmhlaWdodDsKICAgICAgICB0aGlzLl9lbGVtID0gJChlbGVtKTsKICAgICAgICB2YXIgbCA9ICh4ICE9IG51bGwgJiYgciAhPSBudWxsKSA/IHggLSByIDogdGhpcy5fZWxlbS5jc3MoJ2xlZnQnKTsKICAgICAgICB2YXIgdCA9ICh5ICE9IG51bGwgJiYgciAhPSBudWxsKSA/IHkgLSByIDogdGhpcy5fZWxlbS5jc3MoJ3RvcCcpOwogICAgICAgIHRoaXMuX2VsZW0uY3NzKHsgcG9zaXRpb246ICdhYnNvbHV0ZScsIGxlZnQ6IGwsIHRvcDogdCB9KTsKICAgICAgICAKICAgICAgICB0aGlzLl9lbGVtLmFkZENsYXNzKGtsYXNzKTsKICAgICAgICBpZiAoJC5qcXBsb3QudXNlX2V4Y2FudmFzKSB7CiAgICAgICAgICAgIHdpbmRvdy5HX3ZtbENhbnZhc01hbmFnZXIuaW5pdF8oZG9jdW1lbnQpOwogICAgICAgICAgICBlbGVtID0gd2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci5pbml0RWxlbWVudChlbGVtKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW07CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5CdWJibGVDYW52YXMucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihyLCBjb2xvciwgZ3JhZGllbnRzLCBhbmdsZSkgewogICAgICAgIHZhciBjdHggPSB0aGlzLl9jdHg7CiAgICAgICAgLy8gciA9IE1hdGguZmxvb3IocioxLjA0KTsKICAgICAgICAvLyB2YXIgeCA9IE1hdGgucm91bmQoY3R4LmNhbnZhcy53aWR0aC8yKTsKICAgICAgICAvLyB2YXIgeSA9IE1hdGgucm91bmQoY3R4LmNhbnZhcy5oZWlnaHQvMik7CiAgICAgICAgdmFyIHggPSBjdHguY2FudmFzLndpZHRoLzI7CiAgICAgICAgdmFyIHkgPSBjdHguY2FudmFzLmhlaWdodC8yOwogICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgaWYgKGdyYWRpZW50cyAmJiAhJC5qcXBsb3QudXNlX2V4Y2FudmFzKSB7CiAgICAgICAgICAgIHIgPSByKjEuMDQ7CiAgICAgICAgICAgIHZhciBjb21wcyA9ICQuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyhjb2xvcik7CiAgICAgICAgICAgIHZhciBjb2xvcmlubmVyID0gJ3JnYmEoJytNYXRoLnJvdW5kKGNvbXBzWzBdKzAuOCooMjU1LWNvbXBzWzBdKSkrJywgJytNYXRoLnJvdW5kKGNvbXBzWzFdKzAuOCooMjU1LWNvbXBzWzFdKSkrJywgJytNYXRoLnJvdW5kKGNvbXBzWzJdKzAuOCooMjU1LWNvbXBzWzJdKSkrJywgJytjb21wc1szXSsnKSc7CiAgICAgICAgICAgIHZhciBjb2xvcmVuZCA9ICdyZ2JhKCcrY29tcHNbMF0rJywgJytjb21wc1sxXSsnLCAnK2NvbXBzWzJdKycsIDApJzsKICAgICAgICAgICAgLy8gdmFyIHJpbm5lciA9IE1hdGgucm91bmQoMC4zNSAqIHIpOwogICAgICAgICAgICAvLyB2YXIgeGlubmVyID0gTWF0aC5yb3VuZCh4IC0gTWF0aC5jb3MoYW5nbGUpICogMC4zMyAqIHIpOwogICAgICAgICAgICAvLyB2YXIgeWlubmVyID0gTWF0aC5yb3VuZCh5IC0gTWF0aC5zaW4oYW5nbGUpICogMC4zMyAqIHIpOwogICAgICAgICAgICB2YXIgcmlubmVyID0gMC4zNSAqIHI7CiAgICAgICAgICAgIHZhciB4aW5uZXIgPSB4IC0gTWF0aC5jb3MoYW5nbGUpICogMC4zMyAqIHI7CiAgICAgICAgICAgIHZhciB5aW5uZXIgPSB5IC0gTWF0aC5zaW4oYW5nbGUpICogMC4zMyAqIHI7CiAgICAgICAgICAgIHZhciByYWRncmFkID0gY3R4LmNyZWF0ZVJhZGlhbEdyYWRpZW50KHhpbm5lciwgeWlubmVyLCByaW5uZXIsIHgsIHksIHIpOwogICAgICAgICAgICByYWRncmFkLmFkZENvbG9yU3RvcCgwLCBjb2xvcmlubmVyKTsKICAgICAgICAgICAgcmFkZ3JhZC5hZGRDb2xvclN0b3AoMC45MywgY29sb3IpOwogICAgICAgICAgICByYWRncmFkLmFkZENvbG9yU3RvcCgwLjk2LCBjb2xvcmVuZCk7CiAgICAgICAgICAgIHJhZGdyYWQuYWRkQ29sb3JTdG9wKDEsIGNvbG9yZW5kKTsKICAgICAgICAgICAgLy8gcmFkZ3JhZC5hZGRDb2xvclN0b3AoLjk4LCBjb2xvcmVuZCk7CiAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSByYWRncmFkOwogICAgICAgICAgICBjdHguZmlsbFJlY3QoMCwwLCBjdHguY2FudmFzLndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gY29sb3I7CiAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IGNvbG9yOwogICAgICAgICAgICBjdHgubGluZVdpZHRoID0gMTsKICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwogICAgICAgICAgICB2YXIgYW5nID0gMipNYXRoLlBJOwogICAgICAgICAgICBjdHguYXJjKHgsIHksIHIsIDAsIGFuZywgMCk7CiAgICAgICAgICAgIGN0eC5jbG9zZVBhdGgoKTsKICAgICAgICAgICAgY3R4LmZpbGwoKTsKICAgICAgICB9CiAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkJ1YmJsZUNhbnZhcy5wcm90b3R5cGUuc2V0Q29udGV4dCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuX2N0eCA9IHRoaXMuX2VsZW0uZ2V0KDApLmdldENvbnRleHQoIjJkIik7CiAgICAgICAgcmV0dXJuIHRoaXMuX2N0eDsKICAgIH07CiAgICAKICAgICQuanFwbG90LkJ1YmJsZUF4aXNSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQnViYmxlQXhpc1JlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIoKTsKICAgICQuanFwbG90LkJ1YmJsZUF4aXNSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5CdWJibGVBeGlzUmVuZGVyZXI7CiAgICAgICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBheGlzIG9iamVjdC4KICAgICQuanFwbG90LkJ1YmJsZUF4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpewogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgIHZhciBkYiA9IHRoaXMuX2RhdGFCb3VuZHM7CiAgICAgICAgdmFyIG1pbnNpZHggPSAwLAogICAgICAgICAgICBtaW5waWR4ID0gMCwKICAgICAgICAgICAgbWF4c2lkeCA9IDAsCiAgICAgICAgICAgIG1heHBpZHggPSAwLAogICAgICAgICAgICBtYXhyID0gMCwKICAgICAgICAgICAgbWluciA9IDAsCiAgICAgICAgICAgIG1pbk1heFJhZGl1cyA9IDAsCiAgICAgICAgICAgIG1heE1heFJhZGl1cyA9IDAsCiAgICAgICAgICAgIG1heE11bHQgPSAwLAogICAgICAgICAgICBtaW5NdWx0ID0gMDsKICAgICAgICAvLyBHbyB0aHJvdWdoIGFsbCB0aGUgc2VyaWVzIGF0dGFjaGVkIHRvIHRoaXMgYXhpcyBhbmQgZmluZAogICAgICAgIC8vIHRoZSBtaW4vbWF4IGJvdW5kcyBmb3IgdGhpcyBheGlzLgogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHMgPSB0aGlzLl9zZXJpZXNbaV07CiAgICAgICAgICAgIHZhciBkID0gcy5fcGxvdERhdGE7CiAgICAgICAgICAgIAogICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8ZC5sZW5ndGg7IGorKykgeyAKICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZFtqXVswXSA8IGRiLm1pbiB8fCBkYi5taW4gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBkYi5taW4gPSBkW2pdWzBdOwogICAgICAgICAgICAgICAgICAgICAgICBtaW5zaWR4PWk7CiAgICAgICAgICAgICAgICAgICAgICAgIG1pbnBpZHg9ajsKICAgICAgICAgICAgICAgICAgICAgICAgbWluciA9IGRbal1bMl07CiAgICAgICAgICAgICAgICAgICAgICAgIG1pbk1heFJhZGl1cyA9IHMubWF4UmFkaXVzOwogICAgICAgICAgICAgICAgICAgICAgICBtaW5NdWx0ID0gcy5hdXRvc2NhbGVNdWx0aXBsaWVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZFtqXVswXSA+IGRiLm1heCB8fCBkYi5tYXggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBkYi5tYXggPSBkW2pdWzBdOwogICAgICAgICAgICAgICAgICAgICAgICBtYXhzaWR4PWk7CiAgICAgICAgICAgICAgICAgICAgICAgIG1heHBpZHg9ajsKICAgICAgICAgICAgICAgICAgICAgICAgbWF4ciA9IGRbal1bMl07CiAgICAgICAgICAgICAgICAgICAgICAgIG1heE1heFJhZGl1cyA9IHMubWF4UmFkaXVzOwogICAgICAgICAgICAgICAgICAgICAgICBtYXhNdWx0ID0gcy5hdXRvc2NhbGVNdWx0aXBsaWVyOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGRbal1bMV0gPCBkYi5taW4gfHwgZGIubWluID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGIubWluID0gZFtqXVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgbWluc2lkeD1pOwogICAgICAgICAgICAgICAgICAgICAgICBtaW5waWR4PWo7CiAgICAgICAgICAgICAgICAgICAgICAgIG1pbnIgPSBkW2pdWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBtaW5NYXhSYWRpdXMgPSBzLm1heFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgICAgbWluTXVsdCA9IHMuYXV0b3NjYWxlTXVsdGlwbGllcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGRbal1bMV0gPiBkYi5tYXggfHwgZGIubWF4ID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGIubWF4ID0gZFtqXVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgbWF4c2lkeD1pOwogICAgICAgICAgICAgICAgICAgICAgICBtYXhwaWR4PWo7CiAgICAgICAgICAgICAgICAgICAgICAgIG1heHIgPSBkW2pdWzJdOwogICAgICAgICAgICAgICAgICAgICAgICBtYXhNYXhSYWRpdXMgPSBzLm1heFJhZGl1czsKICAgICAgICAgICAgICAgICAgICAgICAgbWF4TXVsdCA9IHMuYXV0b3NjYWxlTXVsdGlwbGllcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICB2YXIgbWluUmF0aW8gPSBtaW5yL21pbk1heFJhZGl1czsKICAgICAgICB2YXIgbWF4UmF0aW8gPSBtYXhyL21heE1heFJhZGl1czsKICAgICAgICAKICAgICAgICAvLyBuZWVkIHRvIGVzdGltYXRlIHRoZSBlZmZlY3Qgb2YgdGhlIHJhZGl1cyBvbiB0b3RhbCBheGlzIHNwYW4gYW5kIGFkanVzdCBheGlzIGFjY29yZGluZ2x5LgogICAgICAgIHZhciBzcGFuID0gZGIubWF4IC0gZGIubWluOwogICAgICAgIC8vIHZhciBkaW0gPSAodGhpcy5uYW1lID09ICd4YXhpcycgfHwgdGhpcy5uYW1lID09ICd4MmF4aXMnKSA/IHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoIDogdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0OwogICAgICAgIHZhciBkaW0gPSBNYXRoLm1pbih0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCwgdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0KTsKICAgICAgICAKICAgICAgICB2YXIgbWluZmFjdCA9IG1pblJhdGlvICogbWluTXVsdC8zICogc3BhbjsKICAgICAgICB2YXIgbWF4ZmFjdCA9IG1heFJhdGlvICogbWF4TXVsdC8zICogc3BhbjsKICAgICAgICBkYi5tYXggKz0gbWF4ZmFjdDsKICAgICAgICBkYi5taW4gLT0gbWluZmFjdDsKICAgIH07CiAgICAKICAgIGZ1bmN0aW9uIGhpZ2hsaWdodCAocGxvdCwgc2lkeCwgcGlkeCkgewogICAgICAgIHBsb3QucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRMYWJlbENhbnZhcy5lbXB0eSgpOwogICAgICAgIHZhciBzID0gcGxvdC5zZXJpZXNbc2lkeF07CiAgICAgICAgdmFyIGNhbnZhcyA9IHBsb3QucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7CiAgICAgICAgdmFyIGN0eCA9IGNhbnZhcy5fY3R4OwogICAgICAgIGN0eC5jbGVhclJlY3QoMCwwLGN0eC5jYW52YXMud2lkdGgsIGN0eC5jYW52YXMuaGVpZ2h0KTsKICAgICAgICBzLl9oaWdobGlnaHRlZFBvaW50ID0gcGlkeDsKICAgICAgICBwbG90LnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCA9IHNpZHg7CiAgICAgICAgCiAgICAgICAgdmFyIGNvbG9yID0gcy5oaWdobGlnaHRDb2xvckdlbmVyYXRvci5nZXQocGlkeCk7CiAgICAgICAgdmFyIHggPSBzLmdyaWREYXRhW3BpZHhdWzBdLAogICAgICAgICAgICB5ID0gcy5ncmlkRGF0YVtwaWR4XVsxXSwKICAgICAgICAgICAgciA9IHMuZ3JpZERhdGFbcGlkeF1bMl07CiAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICBjdHguZmlsbFN0eWxlID0gY29sb3I7CiAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gY29sb3I7CiAgICAgICAgY3R4LmxpbmVXaWR0aCA9IDE7CiAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwogICAgICAgIGN0eC5hcmMoeCwgeSwgciwgMCwgMipNYXRoLlBJLCAwKTsKICAgICAgICBjdHguY2xvc2VQYXRoKCk7CiAgICAgICAgY3R4LmZpbGwoKTsKICAgICAgICBjdHgucmVzdG9yZSgpOyAgICAgICAgCiAgICAgICAgLy8gYnJpbmcgbGFiZWwgdG8gZnJvbnQKICAgICAgICBpZiAocy5sYWJlbHNbcGlkeF0pIHsKICAgICAgICAgICAgcGxvdC5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodExhYmVsID0gcy5sYWJlbHNbcGlkeF0uY2xvbmUoKTsKICAgICAgICAgICAgcGxvdC5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodExhYmVsLmFwcGVuZFRvKHBsb3QucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRMYWJlbENhbnZhcyk7CiAgICAgICAgICAgIHBsb3QucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRMYWJlbC5hZGRDbGFzcygnanFwbG90LWJ1YmJsZS1sYWJlbC1oaWdobGlnaHQnKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIHVuaGlnaGxpZ2h0IChwbG90KSB7CiAgICAgICAgdmFyIGNhbnZhcyA9IHBsb3QucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7CiAgICAgICAgdmFyIHNpZHggPSBwbG90LnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDsKICAgICAgICBwbG90LnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0TGFiZWxDYW52YXMuZW1wdHkoKTsKICAgICAgICBjYW52YXMuX2N0eC5jbGVhclJlY3QoMCwwLCBjYW52YXMuX2N0eC5jYW52YXMud2lkdGgsIGNhbnZhcy5fY3R4LmNhbnZhcy5oZWlnaHQpOwogICAgICAgIGZvciAodmFyIGk9MDsgaTxwbG90LnNlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBwbG90LnNlcmllc1tpXS5faGlnaGxpZ2h0ZWRQb2ludCA9IG51bGw7CiAgICAgICAgfQogICAgICAgIHBsb3QucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ID0gbnVsbDsKICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKCdqcXBsb3REYXRhVW5oaWdobGlnaHQnKTsKICAgIH0KICAgIAogCiAgICBmdW5jdGlvbiBoYW5kbGVNb3ZlKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIGlmIChuZWlnaGJvcikgewogICAgICAgICAgICB2YXIgc2kgPSBuZWlnaGJvci5zZXJpZXNJbmRleDsKICAgICAgICAgICAgdmFyIHBpID0gbmVpZ2hib3IucG9pbnRJbmRleDsKICAgICAgICAgICAgdmFyIGlucyA9IFtzaSwgcGksIG5laWdoYm9yLmRhdGEsIHBsb3Quc2VyaWVzW3NpXS5ncmlkRGF0YVtwaV1bMl1dOwogICAgICAgICAgICB2YXIgZXZ0MSA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YU1vdXNlT3ZlcicpOwogICAgICAgICAgICBldnQxLnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgIGV2dDEucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQxLCBpbnMpOwogICAgICAgICAgICBpZiAocGxvdC5zZXJpZXNbaW5zWzBdXS5oaWdobGlnaHRNb3VzZU92ZXIgJiYgIShpbnNbMF0gPT0gcGxvdC5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXggJiYgaW5zWzFdID09IHBsb3Quc2VyaWVzW2luc1swXV0uX2hpZ2hsaWdodGVkUG9pbnQpKSB7CiAgICAgICAgICAgICAgICB2YXIgZXZ0ID0galF1ZXJ5LkV2ZW50KCdqcXBsb3REYXRhSGlnaGxpZ2h0Jyk7CiAgICAgICAgICAgICAgICBldnQud2hpY2ggPSBldi53aGljaDsKICAgICAgICAgICAgICAgIGV2dC5wYWdlWCA9IGV2LnBhZ2VYOwogICAgICAgICAgICAgICAgZXZ0LnBhZ2VZID0gZXYucGFnZVk7CiAgICAgICAgICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKGV2dCwgaW5zKTsKICAgICAgICAgICAgICAgIGhpZ2hsaWdodCAocGxvdCwgaW5zWzBdLCBpbnNbMV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG5laWdoYm9yID09IG51bGwpIHsKICAgICAgICAgICAgdW5oaWdobGlnaHQgKHBsb3QpOwogICAgICAgIH0KICAgIH0gCiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlRG93bihldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAobmVpZ2hib3IpIHsKICAgICAgICAgICAgdmFyIHNpID0gbmVpZ2hib3Iuc2VyaWVzSW5kZXg7CiAgICAgICAgICAgIHZhciBwaSA9IG5laWdoYm9yLnBvaW50SW5kZXg7CiAgICAgICAgICAgIHZhciBpbnMgPSBbc2ksIHBpLCBuZWlnaGJvci5kYXRhLCBwbG90LnNlcmllc1tzaV0uZ3JpZERhdGFbcGldWzJdXTsKICAgICAgICAgICAgaWYgKHBsb3Quc2VyaWVzW2luc1swXV0uaGlnaGxpZ2h0TW91c2VEb3duICYmICEoaW5zWzBdID09IHBsb3QucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ICYmIGluc1sxXSA9PSBwbG90LnNlcmllc1tpbnNbMF1dLl9oaWdobGlnaHRlZFBvaW50KSkgewogICAgICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YUhpZ2hsaWdodCcpOwogICAgICAgICAgICAgICAgZXZ0LndoaWNoID0gZXYud2hpY2g7CiAgICAgICAgICAgICAgICBldnQucGFnZVggPSBldi5wYWdlWDsKICAgICAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQsIGlucyk7CiAgICAgICAgICAgICAgICBoaWdobGlnaHQgKHBsb3QsIGluc1swXSwgaW5zWzFdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChuZWlnaGJvciA9PSBudWxsKSB7CiAgICAgICAgICAgIHVuaGlnaGxpZ2h0IChwbG90KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlVXAoZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgdmFyIGlkeCA9IHBsb3QucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4OwogICAgICAgIGlmIChpZHggIT0gbnVsbCAmJiBwbG90LnNlcmllc1tpZHhdLmhpZ2hsaWdodE1vdXNlRG93bikgewogICAgICAgICAgICB1bmhpZ2hsaWdodChwbG90KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIGlmIChuZWlnaGJvcikgewogICAgICAgICAgICB2YXIgc2kgPSBuZWlnaGJvci5zZXJpZXNJbmRleDsKICAgICAgICAgICAgdmFyIHBpID0gbmVpZ2hib3IucG9pbnRJbmRleDsKICAgICAgICAgICAgdmFyIGlucyA9IFtzaSwgcGksIG5laWdoYm9yLmRhdGEsIHBsb3Quc2VyaWVzW3NpXS5ncmlkRGF0YVtwaV1bMl1dOwogICAgICAgICAgICB2YXIgZXZ0ID0galF1ZXJ5LkV2ZW50KCdqcXBsb3REYXRhQ2xpY2snKTsKICAgICAgICAgICAgZXZ0LndoaWNoID0gZXYud2hpY2g7CiAgICAgICAgICAgIGV2dC5wYWdlWCA9IGV2LnBhZ2VYOwogICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQsIGlucyk7CiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVSaWdodENsaWNrKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIGlmIChuZWlnaGJvcikgewogICAgICAgICAgICB2YXIgc2kgPSBuZWlnaGJvci5zZXJpZXNJbmRleDsKICAgICAgICAgICAgdmFyIHBpID0gbmVpZ2hib3IucG9pbnRJbmRleDsKICAgICAgICAgICAgdmFyIGlucyA9IFtzaSwgcGksIG5laWdoYm9yLmRhdGEsIHBsb3Quc2VyaWVzW3NpXS5ncmlkRGF0YVtwaV1bMl1dOwogICAgICAgICAgICB2YXIgaWR4ID0gcGxvdC5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg7CiAgICAgICAgICAgIGlmIChpZHggIT0gbnVsbCAmJiBwbG90LnNlcmllc1tpZHhdLmhpZ2hsaWdodE1vdXNlRG93bikgewogICAgICAgICAgICAgICAgdW5oaWdobGlnaHQocGxvdCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YVJpZ2h0Q2xpY2snKTsKICAgICAgICAgICAgZXZ0LndoaWNoID0gZXYud2hpY2g7CiAgICAgICAgICAgIGV2dC5wYWdlWCA9IGV2LnBhZ2VYOwogICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQsIGlucyk7CiAgICAgICAgfQogICAgfQogICAgCiAgICAvLyBjYWxsZWQgd2l0aGluIGNvbnRleHQgb2YgcGxvdAogICAgLy8gY3JlYXRlIGEgY2FudmFzIHdoaWNoIHdlIGNhbiBkcmF3IG9uLgogICAgLy8gaW5zZXJ0IGl0IGJlZm9yZSB0aGUgZXZlbnRDYW52YXMsIHNvIGV2ZW50Q2FudmFzIHdpbGwgc3RpbGwgY2FwdHVyZSBldmVudHMuCiAgICBmdW5jdGlvbiBwb3N0UGxvdERyYXcoKSB7CiAgICAgICAgLy8gTWVtb3J5IExlYWtzIHBhdGNoICAgIAogICAgICAgIGlmICh0aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIgJiYgdGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcykgewogICAgICAgICAgICB0aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnJlc2V0Q2FudmFzKCk7CiAgICAgICAgICAgIHRoaXMucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMgPSBudWxsOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB0aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIgPSB7aGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDpudWxsfTsKICAgICAgICB0aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzID0gbmV3ICQuanFwbG90LkdlbmVyaWNDYW52YXMoKTsKICAgICAgICB0aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0TGFiZWwgPSBudWxsOwogICAgICAgIHRoaXMucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRMYWJlbENhbnZhcyA9ICQoJzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyI+PC9kaXY+Jyk7CiAgICAgICAgdmFyIHRvcCA9IHRoaXMuX2dyaWRQYWRkaW5nLnRvcDsKICAgICAgICB2YXIgbGVmdCA9IHRoaXMuX2dyaWRQYWRkaW5nLmxlZnQ7CiAgICAgICAgdmFyIHdpZHRoID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSB0aGlzLl9ncmlkUGFkZGluZy5sZWZ0IC0gdGhpcy5fZ3JpZFBhZGRpbmcucmlnaHQ7CiAgICAgICAgdmFyIGhlaWdodCA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIHRoaXMuX2dyaWRQYWRkaW5nLnRvcCAtIHRoaXMuX2dyaWRQYWRkaW5nLmJvdHRvbTsKICAgICAgICB0aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0TGFiZWxDYW52YXMuY3NzKHt0b3A6dG9wLCBsZWZ0OmxlZnQsIHdpZHRoOndpZHRoKydweCcsIGhlaWdodDpoZWlnaHQrJ3B4J30pOwoKICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZSh0aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsICdqcXBsb3QtYnViYmxlUmVuZGVyZXItaGlnaGxpZ2h0LWNhbnZhcycsIHRoaXMuX3Bsb3REaW1lbnNpb25zLCB0aGlzKSk7CiAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUodGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodExhYmVsQ2FudmFzKTsKICAgICAgICAKICAgICAgICB2YXIgaGN0eCA9IHRoaXMucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuc2V0Q29udGV4dCgpOwogICAgfQoKICAgIAogICAgLy8gc2V0dXAgZGVmYXVsdCByZW5kZXJlcnMgZm9yIGF4ZXMgYW5kIGxlZ2VuZCBzbyB1c2VyIGRvZXNuJ3QgaGF2ZSB0bwogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgcGxvdAogICAgZnVuY3Rpb24gcHJlSW5pdCh0YXJnZXQsIGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgICAgICBvcHRpb25zLmF4ZXNEZWZhdWx0cyA9IG9wdGlvbnMuYXhlc0RlZmF1bHRzIHx8IHt9OwogICAgICAgIG9wdGlvbnMuc2VyaWVzRGVmYXVsdHMgPSBvcHRpb25zLnNlcmllc0RlZmF1bHRzIHx8IHt9OwogICAgICAgIC8vIG9ubHkgc2V0IHRoZXNlIGlmIHRoZXJlIGlzIGEgQnViYmxlIHNlcmllcwogICAgICAgIHZhciBzZXRvcHRzID0gZmFsc2U7CiAgICAgICAgaWYgKG9wdGlvbnMuc2VyaWVzRGVmYXVsdHMucmVuZGVyZXIgPT0gJC5qcXBsb3QuQnViYmxlUmVuZGVyZXIpIHsKICAgICAgICAgICAgc2V0b3B0cyA9IHRydWU7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuc2VyaWVzKSB7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaSA8IG9wdGlvbnMuc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5zZXJpZXNbaV0ucmVuZGVyZXIgPT0gJC5qcXBsb3QuQnViYmxlUmVuZGVyZXIpIHsKICAgICAgICAgICAgICAgICAgICBzZXRvcHRzID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoc2V0b3B0cykgewogICAgICAgICAgICBvcHRpb25zLmF4ZXNEZWZhdWx0cy5yZW5kZXJlciA9ICQuanFwbG90LkJ1YmJsZUF4aXNSZW5kZXJlcjsKICAgICAgICAgICAgb3B0aW9ucy5zb3J0RGF0YSA9IGZhbHNlOwogICAgICAgIH0KICAgIH0KICAgIAogICAgJC5qcXBsb3QucHJlSW5pdEhvb2tzLnB1c2gocHJlSW5pdCk7CiAgICAKfSkoalF1ZXJ5KTsKICAgIAogICAg]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.bubbleRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGYpe3ZhciBkPWZ1bmN0aW9uKG0pe3JldHVybiBNYXRoLm1heC5hcHBseShNYXRoLG0pfTt2YXIgaj1mdW5jdGlvbihtKXtyZXR1cm4gTWF0aC5taW4uYXBwbHkoTWF0aCxtKX07Zi5qcXBsb3QuQnViYmxlUmVuZGVyZXI9ZnVuY3Rpb24oKXtmLmpxcGxvdC5MaW5lUmVuZGVyZXIuY2FsbCh0aGlzKX07Zi5qcXBsb3QuQnViYmxlUmVuZGVyZXIucHJvdG90eXBlPW5ldyBmLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTtmLmpxcGxvdC5CdWJibGVSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9Zi5qcXBsb3QuQnViYmxlUmVuZGVyZXI7Zi5qcXBsb3QuQnViYmxlUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24odyx0KXt0aGlzLnZhcnlCdWJibGVDb2xvcnM9dHJ1ZTt0aGlzLmF1dG9zY2FsZUJ1YmJsZXM9dHJ1ZTt0aGlzLmF1dG9zY2FsZU11bHRpcGxpZXI9MTt0aGlzLmF1dG9zY2FsZVBvaW50c0ZhY3Rvcj0tMC4wNzt0aGlzLmVzY2FwZUh0bWw9dHJ1ZTt0aGlzLmhpZ2hsaWdodE1vdXNlT3Zlcj10cnVlO3RoaXMuaGlnaGxpZ2h0TW91c2VEb3duPWZhbHNlO3RoaXMuaGlnaGxpZ2h0Q29sb3JzPVtdO3RoaXMuYnViYmxlQWxwaGE9MTt0aGlzLmhpZ2hsaWdodEFscGhhPW51bGw7dGhpcy5idWJibGVHcmFkaWVudHM9ZmFsc2U7dGhpcy5zaG93TGFiZWxzPXRydWU7dGhpcy5yYWRpaT1bXTt0aGlzLm1heFJhZGl1cz0wO3RoaXMuX2hpZ2hsaWdodGVkUG9pbnQ9bnVsbDt0aGlzLmxhYmVscz1bXTt0aGlzLmJ1YmJsZUNhbnZhc2VzPVtdO3RoaXMuX3R5cGU9ImJ1YmJsZSI7aWYody5oaWdobGlnaHRNb3VzZURvd24mJncuaGlnaGxpZ2h0TW91c2VPdmVyPT1udWxsKXt3LmhpZ2hsaWdodE1vdXNlT3Zlcj1mYWxzZX1mLmV4dGVuZCh0cnVlLHRoaXMsdyk7aWYodGhpcy5oaWdobGlnaHRBbHBoYT09bnVsbCl7dGhpcy5oaWdobGlnaHRBbHBoYT10aGlzLmJ1YmJsZUFscGhhO2lmKHRoaXMuYnViYmxlR3JhZGllbnRzKXt0aGlzLmhpZ2hsaWdodEFscGhhPTAuMzV9fXRoaXMuYXV0b3NjYWxlTXVsdGlwbGllcj10aGlzLmF1dG9zY2FsZU11bHRpcGxpZXIqTWF0aC5wb3codGhpcy5kYXRhLmxlbmd0aCx0aGlzLmF1dG9zY2FsZVBvaW50c0ZhY3Rvcik7dGhpcy5faGlnaGxpZ2h0ZWRQb2ludD1udWxsO3ZhciBuO2Zvcih2YXIgcj0wO3I8dGhpcy5kYXRhLmxlbmd0aDtyKyspe3ZhciBwPW51bGw7dmFyIHY9dGhpcy5kYXRhW3JdO3RoaXMubWF4UmFkaXVzPU1hdGgubWF4KHRoaXMubWF4UmFkaXVzLHZbMl0pO2lmKHZbM10pe2lmKHR5cGVvZih2WzNdKT09Im9iamVjdCIpe3A9dlszXVsiY29sb3IiXX19aWYocD09bnVsbCl7aWYodGhpcy5zZXJpZXNDb2xvcnNbcl0hPW51bGwpe3A9dGhpcy5zZXJpZXNDb2xvcnNbcl19fWlmKHAmJnRoaXMuYnViYmxlQWxwaGE8MSl7bj1mLmpxcGxvdC5nZXRDb2xvckNvbXBvbmVudHMocCk7cD0icmdiYSgiK25bMF0rIiwgIituWzFdKyIsICIrblsyXSsiLCAiK3RoaXMuYnViYmxlQWxwaGErIikifWlmKHApe3RoaXMuc2VyaWVzQ29sb3JzW3JdPXB9fWlmKCF0aGlzLnZhcnlCdWJibGVDb2xvcnMpe3RoaXMuc2VyaWVzQ29sb3JzPVt0aGlzLmNvbG9yXX10aGlzLmNvbG9yR2VuZXJhdG9yPW5ldyBmLmpxcGxvdC5Db2xvckdlbmVyYXRvcih0aGlzLnNlcmllc0NvbG9ycyk7aWYodGhpcy5oaWdobGlnaHRDb2xvcnMubGVuZ3RoPT0wKXtmb3IodmFyIHI9MDtyPHRoaXMuc2VyaWVzQ29sb3JzLmxlbmd0aDtyKyspe3ZhciBvPWYuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyh0aGlzLnNlcmllc0NvbG9yc1tyXSk7dmFyIHU9W29bMF0sb1sxXSxvWzJdXTt2YXIgcz11WzBdK3VbMV0rdVsyXTtmb3IodmFyIHE9MDtxPDM7cSsrKXt1W3FdPShzPjU3MCk/dVtxXSowLjg6dVtxXSswLjMqKDI1NS11W3FdKTt1W3FdPXBhcnNlSW50KHVbcV0sMTApfXRoaXMuaGlnaGxpZ2h0Q29sb3JzLnB1c2goInJnYmEoIit1WzBdKyIsIit1WzFdKyIsIit1WzJdKyIsICIrdGhpcy5oaWdobGlnaHRBbHBoYSsiKSIpfX10aGlzLmhpZ2hsaWdodENvbG9yR2VuZXJhdG9yPW5ldyBmLmpxcGxvdC5Db2xvckdlbmVyYXRvcih0aGlzLmhpZ2hsaWdodENvbG9ycyk7dmFyIG09e2ZpbGw6dHJ1ZSxpc2FyYzp0cnVlLGFuZ2xlOnRoaXMuc2hhZG93QW5nbGUsYWxwaGE6dGhpcy5zaGFkb3dBbHBoYSxjbG9zZVBhdGg6dHJ1ZX07dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5pbml0KG0pO3RoaXMuY2FudmFzPW5ldyBmLmpxcGxvdC5EaXZDYW52YXMoKTt0aGlzLmNhbnZhcy5fcGxvdERpbWVuc2lvbnM9dGhpcy5fcGxvdERpbWVuc2lvbnM7dC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90TW91c2VNb3ZlIixhKTt0LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RNb3VzZURvd24iLGIpO3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdE1vdXNlVXAiLGspO3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdENsaWNrIixnKTt0LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RSaWdodENsaWNrIixsKTt0LnBvc3REcmF3SG9va3MuYWRkT25jZShoKX07Zi5qcXBsb3QuQnViYmxlUmVuZGVyZXIucHJvdG90eXBlLnNldEdyaWREYXRhPWZ1bmN0aW9uKHcpe3ZhciBxPXRoaXMuX3hheGlzLnNlcmllc191MnA7dmFyIG09dGhpcy5feWF4aXMuc2VyaWVzX3UycDt2YXIgdD10aGlzLl9wbG90RGF0YTt0aGlzLmdyaWREYXRhPVtdO3ZhciBzPVtdO3RoaXMucmFkaWk9W107dmFyIHY9TWF0aC5taW4ody5faGVpZ2h0LHcuX3dpZHRoKTtmb3IodmFyIHU9MDt1PHRoaXMuZGF0YS5sZW5ndGg7dSsrKXtpZih0W3VdIT1udWxsKXt0aGlzLmdyaWREYXRhLnB1c2goW3EuY2FsbCh0aGlzLl94YXhpcyx0W3VdWzBdKSxtLmNhbGwodGhpcy5feWF4aXMsdFt1XVsxXSksdFt1XVsyXV0pO3RoaXMucmFkaWkucHVzaChbdSx0W3VdWzJdXSk7cy5wdXNoKHRbdV1bMl0pfX12YXIgbixvLHg9dGhpcy5tYXhSYWRpdXM9ZChzKTt2YXIgcD10aGlzLmdyaWREYXRhLmxlbmd0aDtpZih0aGlzLmF1dG9zY2FsZUJ1YmJsZXMpe2Zvcih2YXIgdT0wO3U8cDt1Kyspe289c1t1XS94O249dGhpcy5hdXRvc2NhbGVNdWx0aXBsaWVyKnYvNjt0aGlzLmdyaWREYXRhW3VdWzJdPW4qb319dGhpcy5yYWRpaS5zb3J0KGZ1bmN0aW9uKHkscil7cmV0dXJuIHJbMV0teVsxXX0pfTtmLmpxcGxvdC5CdWJibGVSZW5kZXJlci5wcm90b3R5cGUubWFrZUdyaWREYXRhPWZ1bmN0aW9uKHQsdyl7dmFyIHE9dGhpcy5feGF4aXMuc2VyaWVzX3UycDt2YXIgbj10aGlzLl95YXhpcy5zZXJpZXNfdTJwO3ZhciB4PVtdO3ZhciBzPVtdO3RoaXMucmFkaWk9W107dmFyIHY9TWF0aC5taW4ody5faGVpZ2h0LHcuX3dpZHRoKTtmb3IodmFyIHU9MDt1PHQubGVuZ3RoO3UrKyl7aWYodFt1XSE9bnVsbCl7eC5wdXNoKFtxLmNhbGwodGhpcy5feGF4aXMsdFt1XVswXSksbi5jYWxsKHRoaXMuX3lheGlzLHRbdV1bMV0pLHRbdV1bMl1dKTtzLnB1c2godFt1XVsyXSk7dGhpcy5yYWRpaS5wdXNoKFt1LHRbdV1bMl1dKX19dmFyIG0sbyx5PXRoaXMubWF4UmFkaXVzPWQocyk7dmFyIHA9dGhpcy5ncmlkRGF0YS5sZW5ndGg7aWYodGhpcy5hdXRvc2NhbGVCdWJibGVzKXtmb3IodmFyIHU9MDt1PHA7dSsrKXtvPXNbdV0veTttPXRoaXMuYXV0b3NjYWxlTXVsdGlwbGllcip2LzY7eFt1XVsyXT1tKm99fXRoaXMucmFkaWkuc29ydChmdW5jdGlvbih6LHIpe3JldHVybiByWzFdLXpbMV19KTtyZXR1cm4geH07Zi5qcXBsb3QuQnViYmxlUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oRCxKLG4pe2lmKHRoaXMucGx1Z2lucy5wb2ludExhYmVscyl7dGhpcy5wbHVnaW5zLnBvaW50TGFiZWxzLnNob3c9ZmFsc2V9dmFyIEE9KG4hPXVuZGVmaW5lZCk/bjp7fTt2YXIgcj0oQS5zaGFkb3chPXVuZGVmaW5lZCk/QS5zaGFkb3c6dGhpcy5zaGFkb3c7dGhpcy5jYW52YXMuX2VsZW0uZW1wdHkoKTtmb3IodmFyIEc9MDtHPHRoaXMucmFkaWkubGVuZ3RoO0crKyl7dmFyIEM9dGhpcy5yYWRpaVtHXVswXTt2YXIgej1udWxsO3ZhciBGPW51bGw7dmFyIG09bnVsbDt2YXIgcD1udWxsO3ZhciBJPXRoaXMuZGF0YVtDXTt2YXIgSj10aGlzLmdyaWREYXRhW0NdO2lmKElbM10pe2lmKHR5cGVvZihJWzNdKT09Im9iamVjdCIpe3o9SVszXVsibGFiZWwiXX1lbHNle2lmKHR5cGVvZihJWzNdKT09InN0cmluZyIpe3o9SVszXX19fUY9dGhpcy5jb2xvckdlbmVyYXRvci5nZXQoQyk7dmFyIEU9SlsyXTt2YXIgcSxLO2lmKHRoaXMuc2hhZG93KXtxPSgwLjcrSlsyXS80MCkudG9GaXhlZCgxKTtLPTErTWF0aC5jZWlsKEpbMl0vMTUpO0UrPXEqS310aGlzLmJ1YmJsZUNhbnZhc2VzW0NdPW5ldyBmLmpxcGxvdC5CdWJibGVDYW52YXMoKTt0aGlzLmNhbnZhcy5fZWxlbS5hcHBlbmQodGhpcy5idWJibGVDYW52YXNlc1tDXS5jcmVhdGVFbGVtZW50KEpbMF0sSlsxXSxFKSk7dGhpcy5idWJibGVDYW52YXNlc1tDXS5zZXRDb250ZXh0KCk7dmFyIEQ9dGhpcy5idWJibGVDYW52YXNlc1tDXS5fY3R4O3ZhciB1PUQuY2FudmFzLndpZHRoLzI7dmFyIHM9RC5jYW52YXMuaGVpZ2h0LzI7aWYodGhpcy5zaGFkb3cpe3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhELFt1LHMsSlsyXSwwLDIqTWF0aC5QSV0se29mZnNldDpxLGRlcHRoOkt9KX10aGlzLmJ1YmJsZUNhbnZhc2VzW0NdLmRyYXcoSlsyXSxGLHRoaXMuYnViYmxlR3JhZGllbnRzLHRoaXMuc2hhZG93QW5nbGUvMTgwKk1hdGguUEkpO2lmKHomJnRoaXMuc2hvd0xhYmVscyl7cD1mKCc8ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsiIGNsYXNzPSJqcXBsb3QtYnViYmxlLWxhYmVsIj48L2Rpdj4nKTtpZih0aGlzLmVzY2FwZUh0bWwpe3AudGV4dCh6KX1lbHNle3AuaHRtbCh6KX10aGlzLmNhbnZhcy5fZWxlbS5hcHBlbmQocCk7dmFyIEg9ZihwKS5vdXRlckhlaWdodCgpO3ZhciB2PWYocCkub3V0ZXJXaWR0aCgpO3ZhciBCPUpbMV0tMC41Kkg7dmFyIG89SlswXS0wLjUqdjtwLmNzcyh7dG9wOkIsbGVmdDpvfSk7dGhpcy5sYWJlbHNbQ109ZihwKX19fTtmLmpxcGxvdC5EaXZDYW52YXM9ZnVuY3Rpb24oKXtmLmpxcGxvdC5FbGVtQ29udGFpbmVyLmNhbGwodGhpcyk7dGhpcy5fY3R4fTtmLmpxcGxvdC5EaXZDYW52YXMucHJvdG90eXBlPW5ldyBmLmpxcGxvdC5FbGVtQ29udGFpbmVyKCk7Zi5qcXBsb3QuRGl2Q2FudmFzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1mLmpxcGxvdC5EaXZDYW52YXM7Zi5qcXBsb3QuRGl2Q2FudmFzLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKHMscCxuKXt0aGlzLl9vZmZzZXRzPXM7dmFyIG09ImpxcGxvdC1EaXZDYW52YXMiO2lmKHAhPXVuZGVmaW5lZCl7bT1wfXZhciByO2lmKHRoaXMuX2VsZW0pe3I9dGhpcy5fZWxlbS5nZXQoMCl9ZWxzZXtyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpfWlmKG4hPXVuZGVmaW5lZCl7dGhpcy5fcGxvdERpbWVuc2lvbnM9bn12YXIgbz10aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC10aGlzLl9vZmZzZXRzLmxlZnQtdGhpcy5fb2Zmc2V0cy5yaWdodCsicHgiO3ZhciBxPXRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodC10aGlzLl9vZmZzZXRzLnRvcC10aGlzLl9vZmZzZXRzLmJvdHRvbSsicHgiO3RoaXMuX2VsZW09ZihyKTt0aGlzLl9lbGVtLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix3aWR0aDpvLGhlaWdodDpxLGxlZnQ6dGhpcy5fb2Zmc2V0cy5sZWZ0LHRvcDp0aGlzLl9vZmZzZXRzLnRvcH0pO3RoaXMuX2VsZW0uYWRkQ2xhc3MobSk7cmV0dXJuIHRoaXMuX2VsZW19O2YuanFwbG90LkRpdkNhbnZhcy5wcm90b3R5cGUuc2V0Q29udGV4dD1mdW5jdGlvbigpe3RoaXMuX2N0eD17Y2FudmFzOnt3aWR0aDowLGhlaWdodDowfSxjbGVhclJlY3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbnVsbH19O3JldHVybiB0aGlzLl9jdHh9O2YuanFwbG90LkJ1YmJsZUNhbnZhcz1mdW5jdGlvbigpe2YuanFwbG90LkVsZW1Db250YWluZXIuY2FsbCh0aGlzKTt0aGlzLl9jdHh9O2YuanFwbG90LkJ1YmJsZUNhbnZhcy5wcm90b3R5cGU9bmV3IGYuanFwbG90LkVsZW1Db250YWluZXIoKTtmLmpxcGxvdC5CdWJibGVDYW52YXMucHJvdG90eXBlLmNvbnN0cnVjdG9yPWYuanFwbG90LkJ1YmJsZUNhbnZhcztmLmpxcGxvdC5CdWJibGVDYW52YXMucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24obix1LHMpe3ZhciBtPSJqcXBsb3QtYnViYmxlLXBvaW50Ijt2YXIgcTtpZih0aGlzLl9lbGVtKXtxPXRoaXMuX2VsZW0uZ2V0KDApfWVsc2V7cT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJjYW52YXMiKX1xLndpZHRoPShzIT1udWxsKT8yKnM6cS53aWR0aDtxLmhlaWdodD0ocyE9bnVsbCk/MipzOnEuaGVpZ2h0O3RoaXMuX2VsZW09ZihxKTt2YXIgbz0obiE9bnVsbCYmcyE9bnVsbCk/bi1zOnRoaXMuX2VsZW0uY3NzKCJsZWZ0Iik7dmFyIHA9KHUhPW51bGwmJnMhPW51bGwpP3Utczp0aGlzLl9lbGVtLmNzcygidG9wIik7dGhpcy5fZWxlbS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDpvLHRvcDpwfSk7dGhpcy5fZWxlbS5hZGRDbGFzcyhtKTtpZihmLmpxcGxvdC51c2VfZXhjYW52YXMpe3dpbmRvdy5HX3ZtbENhbnZhc01hbmFnZXIuaW5pdF8oZG9jdW1lbnQpO3E9d2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci5pbml0RWxlbWVudChxKX1yZXR1cm4gdGhpcy5fZWxlbX07Zi5qcXBsb3QuQnViYmxlQ2FudmFzLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKG0scyx2LHApe3ZhciBEPXRoaXMuX2N0eDt2YXIgQj1ELmNhbnZhcy53aWR0aC8yO3ZhciB6PUQuY2FudmFzLmhlaWdodC8yO0Quc2F2ZSgpO2lmKHYmJiFmLmpxcGxvdC51c2VfZXhjYW52YXMpe209bSoxLjA0O3ZhciBvPWYuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyhzKTt2YXIgdT0icmdiYSgiK01hdGgucm91bmQob1swXSswLjgqKDI1NS1vWzBdKSkrIiwgIitNYXRoLnJvdW5kKG9bMV0rMC44KigyNTUtb1sxXSkpKyIsICIrTWF0aC5yb3VuZChvWzJdKzAuOCooMjU1LW9bMl0pKSsiLCAiK29bM10rIikiO3ZhciB0PSJyZ2JhKCIrb1swXSsiLCAiK29bMV0rIiwgIitvWzJdKyIsIDApIjt2YXIgQz0wLjM1Km07dmFyIEE9Qi1NYXRoLmNvcyhwKSowLjMzKm07dmFyIG49ei1NYXRoLnNpbihwKSowLjMzKm07dmFyIHc9RC5jcmVhdGVSYWRpYWxHcmFkaWVudChBLG4sQyxCLHosbSk7dy5hZGRDb2xvclN0b3AoMCx1KTt3LmFkZENvbG9yU3RvcCgwLjkzLHMpO3cuYWRkQ29sb3JTdG9wKDAuOTYsdCk7dy5hZGRDb2xvclN0b3AoMSx0KTtELmZpbGxTdHlsZT13O0QuZmlsbFJlY3QoMCwwLEQuY2FudmFzLndpZHRoLEQuY2FudmFzLmhlaWdodCl9ZWxzZXtELmZpbGxTdHlsZT1zO0Quc3Ryb2tlU3R5bGU9cztELmxpbmVXaWR0aD0xO0QuYmVnaW5QYXRoKCk7dmFyIHE9MipNYXRoLlBJO0QuYXJjKEIseixtLDAscSwwKTtELmNsb3NlUGF0aCgpO0QuZmlsbCgpfUQucmVzdG9yZSgpfTtmLmpxcGxvdC5CdWJibGVDYW52YXMucHJvdG90eXBlLnNldENvbnRleHQ9ZnVuY3Rpb24oKXt0aGlzLl9jdHg9dGhpcy5fZWxlbS5nZXQoMCkuZ2V0Q29udGV4dCgiMmQiKTtyZXR1cm4gdGhpcy5fY3R4fTtmLmpxcGxvdC5CdWJibGVBeGlzUmVuZGVyZXI9ZnVuY3Rpb24oKXtmLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIuY2FsbCh0aGlzKX07Zi5qcXBsb3QuQnViYmxlQXhpc1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgZi5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7Zi5qcXBsb3QuQnViYmxlQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1mLmpxcGxvdC5CdWJibGVBeGlzUmVuZGVyZXI7Zi5qcXBsb3QuQnViYmxlQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKG4pe2YuZXh0ZW5kKHRydWUsdGhpcyxuKTt2YXIgST10aGlzLl9kYXRhQm91bmRzO3ZhciBIPTAsdj0wLG09MCx5PTAscT0wLHI9MCxEPTAsdD0wLEY9MCx6PTA7Zm9yKHZhciBFPTA7RTx0aGlzLl9zZXJpZXMubGVuZ3RoO0UrKyl7dmFyIHg9dGhpcy5fc2VyaWVzW0VdO3ZhciBHPXguX3Bsb3REYXRhO2Zvcih2YXIgQj0wO0I8Ry5sZW5ndGg7QisrKXtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe2lmKEdbQl1bMF08SS5taW58fEkubWluPT1udWxsKXtJLm1pbj1HW0JdWzBdO0g9RTt2PUI7cj1HW0JdWzJdO0Q9eC5tYXhSYWRpdXM7ej14LmF1dG9zY2FsZU11bHRpcGxpZXJ9aWYoR1tCXVswXT5JLm1heHx8SS5tYXg9PW51bGwpe0kubWF4PUdbQl1bMF07bT1FO3k9QjtxPUdbQl1bMl07dD14Lm1heFJhZGl1cztGPXguYXV0b3NjYWxlTXVsdGlwbGllcn19ZWxzZXtpZihHW0JdWzFdPEkubWlufHxJLm1pbj09bnVsbCl7SS5taW49R1tCXVsxXTtIPUU7dj1CO3I9R1tCXVsyXTtEPXgubWF4UmFkaXVzO3o9eC5hdXRvc2NhbGVNdWx0aXBsaWVyfWlmKEdbQl1bMV0+SS5tYXh8fEkubWF4PT1udWxsKXtJLm1heD1HW0JdWzFdO209RTt5PUI7cT1HW0JdWzJdO3Q9eC5tYXhSYWRpdXM7Rj14LmF1dG9zY2FsZU11bHRpcGxpZXJ9fX19dmFyIG89ci9EO3ZhciB3PXEvdDt2YXIgQz1JLm1heC1JLm1pbjt2YXIgQT1NYXRoLm1pbih0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCx0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQpO3ZhciBwPW8qei8zKkM7dmFyIHU9dypGLzMqQztJLm1heCs9dTtJLm1pbi09cH07ZnVuY3Rpb24gZShwLHYscSl7cC5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodExhYmVsQ2FudmFzLmVtcHR5KCk7dmFyIHo9cC5zZXJpZXNbdl07dmFyIG49cC5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhczt2YXIgdz1uLl9jdHg7dy5jbGVhclJlY3QoMCwwLHcuY2FudmFzLndpZHRoLHcuY2FudmFzLmhlaWdodCk7ei5faGlnaGxpZ2h0ZWRQb2ludD1xO3AucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4PXY7dmFyIG89ei5oaWdobGlnaHRDb2xvckdlbmVyYXRvci5nZXQocSk7dmFyIHU9ei5ncmlkRGF0YVtxXVswXSx0PXouZ3JpZERhdGFbcV1bMV0sbT16LmdyaWREYXRhW3FdWzJdO3cuc2F2ZSgpO3cuZmlsbFN0eWxlPW87dy5zdHJva2VTdHlsZT1vO3cubGluZVdpZHRoPTE7dy5iZWdpblBhdGgoKTt3LmFyYyh1LHQsbSwwLDIqTWF0aC5QSSwwKTt3LmNsb3NlUGF0aCgpO3cuZmlsbCgpO3cucmVzdG9yZSgpO2lmKHoubGFiZWxzW3FdKXtwLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0TGFiZWw9ei5sYWJlbHNbcV0uY2xvbmUoKTtwLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0TGFiZWwuYXBwZW5kVG8ocC5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodExhYmVsQ2FudmFzKTtwLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0TGFiZWwuYWRkQ2xhc3MoImpxcGxvdC1idWJibGUtbGFiZWwtaGlnaGxpZ2h0Iil9fWZ1bmN0aW9uIGkocCl7dmFyIG09cC5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhczt2YXIgbz1wLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDtwLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0TGFiZWxDYW52YXMuZW1wdHkoKTttLl9jdHguY2xlYXJSZWN0KDAsMCxtLl9jdHguY2FudmFzLndpZHRoLG0uX2N0eC5jYW52YXMuaGVpZ2h0KTtmb3IodmFyIG49MDtuPHAuc2VyaWVzLmxlbmd0aDtuKyspe3Auc2VyaWVzW25dLl9oaWdobGlnaHRlZFBvaW50PW51bGx9cC5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg9bnVsbDtwLnRhcmdldC50cmlnZ2VyKCJqcXBsb3REYXRhVW5oaWdobGlnaHQiKX1mdW5jdGlvbiBhKHMscCxtLHYscil7aWYodil7dmFyIG49di5zZXJpZXNJbmRleDt2YXIgbz12LnBvaW50SW5kZXg7dmFyIHE9W24sbyx2LmRhdGEsci5zZXJpZXNbbl0uZ3JpZERhdGFbb11bMl1dO3ZhciB0PWpRdWVyeS5FdmVudCgianFwbG90RGF0YU1vdXNlT3ZlciIpO3QucGFnZVg9cy5wYWdlWDt0LnBhZ2VZPXMucGFnZVk7ci50YXJnZXQudHJpZ2dlcih0LHEpO2lmKHIuc2VyaWVzW3FbMF1dLmhpZ2hsaWdodE1vdXNlT3ZlciYmIShxWzBdPT1yLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCYmcVsxXT09ci5zZXJpZXNbcVswXV0uX2hpZ2hsaWdodGVkUG9pbnQpKXt2YXIgdT1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFIaWdobGlnaHQiKTt1LndoaWNoPXMud2hpY2g7dS5wYWdlWD1zLnBhZ2VYO3UucGFnZVk9cy5wYWdlWTtyLnRhcmdldC50cmlnZ2VyKHUscSk7ZShyLHFbMF0scVsxXSl9fWVsc2V7aWYodj09bnVsbCl7aShyKX19fWZ1bmN0aW9uIGIocyxwLG0sdSxyKXtpZih1KXt2YXIgbj11LnNlcmllc0luZGV4O3ZhciBvPXUucG9pbnRJbmRleDt2YXIgcT1bbixvLHUuZGF0YSxyLnNlcmllc1tuXS5ncmlkRGF0YVtvXVsyXV07aWYoci5zZXJpZXNbcVswXV0uaGlnaGxpZ2h0TW91c2VEb3duJiYhKHFbMF09PXIucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4JiZxWzFdPT1yLnNlcmllc1txWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpe3ZhciB0PWpRdWVyeS5FdmVudCgianFwbG90RGF0YUhpZ2hsaWdodCIpO3Qud2hpY2g9cy53aGljaDt0LnBhZ2VYPXMucGFnZVg7dC5wYWdlWT1zLnBhZ2VZO3IudGFyZ2V0LnRyaWdnZXIodCxxKTtlKHIscVswXSxxWzFdKX19ZWxzZXtpZih1PT1udWxsKXtpKHIpfX19ZnVuY3Rpb24gayhvLG4scixxLHApe3ZhciBtPXAucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4O2lmKG0hPW51bGwmJnAuc2VyaWVzW21dLmhpZ2hsaWdodE1vdXNlRG93bil7aShwKX19ZnVuY3Rpb24gZyhzLHAsbSx1LHIpe2lmKHUpe3ZhciBuPXUuc2VyaWVzSW5kZXg7dmFyIG89dS5wb2ludEluZGV4O3ZhciBxPVtuLG8sdS5kYXRhLHIuc2VyaWVzW25dLmdyaWREYXRhW29dWzJdXTt2YXIgdD1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFDbGljayIpO3Qud2hpY2g9cy53aGljaDt0LnBhZ2VYPXMucGFnZVg7dC5wYWdlWT1zLnBhZ2VZO3IudGFyZ2V0LnRyaWdnZXIodCxxKX19ZnVuY3Rpb24gbChzLHAsbSx2LHIpe2lmKHYpe3ZhciBuPXYuc2VyaWVzSW5kZXg7dmFyIG89di5wb2ludEluZGV4O3ZhciBxPVtuLG8sdi5kYXRhLHIuc2VyaWVzW25dLmdyaWREYXRhW29dWzJdXTt2YXIgdD1yLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDtpZih0IT1udWxsJiZyLnNlcmllc1t0XS5oaWdobGlnaHRNb3VzZURvd24pe2kocil9dmFyIHU9alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhUmlnaHRDbGljayIpO3Uud2hpY2g9cy53aGljaDt1LnBhZ2VYPXMucGFnZVg7dS5wYWdlWT1zLnBhZ2VZO3IudGFyZ2V0LnRyaWdnZXIodSxxKX19ZnVuY3Rpb24gaCgpe2lmKHRoaXMucGx1Z2lucy5idWJibGVSZW5kZXJlciYmdGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcyl7dGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5yZXNldENhbnZhcygpO3RoaXMucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRDYW52YXM9bnVsbH10aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXI9e2hpZ2hsaWdodGVkU2VyaWVzSW5kZXg6bnVsbH07dGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcz1uZXcgZi5qcXBsb3QuR2VuZXJpY0NhbnZhcygpO3RoaXMucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRMYWJlbD1udWxsO3RoaXMucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRMYWJlbENhbnZhcz1mKCc8ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsiPjwvZGl2PicpO3ZhciBxPXRoaXMuX2dyaWRQYWRkaW5nLnRvcDt2YXIgcD10aGlzLl9ncmlkUGFkZGluZy5sZWZ0O3ZhciBuPXRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoLXRoaXMuX2dyaWRQYWRkaW5nLmxlZnQtdGhpcy5fZ3JpZFBhZGRpbmcucmlnaHQ7dmFyIG09dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0LXRoaXMuX2dyaWRQYWRkaW5nLnRvcC10aGlzLl9ncmlkUGFkZGluZy5ib3R0b207dGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodExhYmVsQ2FudmFzLmNzcyh7dG9wOnEsbGVmdDpwLHdpZHRoOm4rInB4IixoZWlnaHQ6bSsicHgifSk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUodGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCJqcXBsb3QtYnViYmxlUmVuZGVyZXItaGlnaGxpZ2h0LWNhbnZhcyIsdGhpcy5fcGxvdERpbWVuc2lvbnMsdGhpcykpO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKHRoaXMucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRMYWJlbENhbnZhcyk7dmFyIG89dGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5zZXRDb250ZXh0KCl9ZnVuY3Rpb24gYyhxLHAsbil7bj1ufHx7fTtuLmF4ZXNEZWZhdWx0cz1uLmF4ZXNEZWZhdWx0c3x8e307bi5zZXJpZXNEZWZhdWx0cz1uLnNlcmllc0RlZmF1bHRzfHx7fTt2YXIgbT1mYWxzZTtpZihuLnNlcmllc0RlZmF1bHRzLnJlbmRlcmVyPT1mLmpxcGxvdC5CdWJibGVSZW5kZXJlcil7bT10cnVlfWVsc2V7aWYobi5zZXJpZXMpe2Zvcih2YXIgbz0wO288bi5zZXJpZXMubGVuZ3RoO28rKyl7aWYobi5zZXJpZXNbb10ucmVuZGVyZXI9PWYuanFwbG90LkJ1YmJsZVJlbmRlcmVyKXttPXRydWV9fX19aWYobSl7bi5heGVzRGVmYXVsdHMucmVuZGVyZXI9Zi5qcXBsb3QuQnViYmxlQXhpc1JlbmRlcmVyO24uc29ydERhdGE9ZmFsc2V9fWYuanFwbG90LnByZUluaXRIb29rcy5wdXNoKGMpfSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.canvasAxisLabelRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAqIENsYXNzOiAkLmpxcGxvdC5DYW52YXNBeGlzTGFiZWxSZW5kZXJlcgogICAgKiBSZW5kZXJlciB0byBkcmF3IGF4aXMgbGFiZWxzIHdpdGggYSBjYW52YXMgZWxlbWVudCB0byBzdXBwb3J0IGFkdmFuY2VkCiAgICAqIGZlYXRydWVzIHN1Y2ggYXMgcm90YXRlZCB0ZXh0LiAgVGhpcyByZW5kZXJlciB1c2VzIGEgc2VwYXJhdGUgcmVuZGVyaW5nIGVuZ2luZQogICAgKiB0byBkcmF3IHRoZSB0ZXh0IG9uIHRoZSBjYW52YXMuICBUd28gbW9kZXMgb2YgcmVuZGVyaW5nIHRoZSB0ZXh0IGFyZSBhdmFpbGFibGUuCiAgICAqIElmIHRoZSBicm93c2VyIGhhcyBuYXRpdmUgZm9udCBzdXBwb3J0IGZvciBjYW52YXMgZm9udHMgKGN1cnJlbnRseSBNb3ppbGEgMy41CiAgICAqIGFuZCBTYWZhcmkgNCksIHlvdSBjYW4gZW5hYmxlIHRleHQgcmVuZGVyaW5nIHdpdGggdGhlIGNhbnZhcyBmaWxsVGV4dCBtZXRob2QuCiAgICAqIFlvdSBkbyBzbyBieSBzZXR0aW5nIHRoZSAiZW5hYmxlRm9udFN1cHBvcnQiIG9wdGlvbiB0byB0cnVlLiAKICAgICogCiAgICAqIEJyb3dzZXJzIGxhY2tpbmcgbmF0aXZlIGZvbnQgc3VwcG9ydCB3aWxsIGhhdmUgdGhlIHRleHQgZHJhd24gb24gdGhlIGNhbnZhcwogICAgKiB1c2luZyB0aGUgSGVyc2hleSBmb250IG1ldHJpY3MuICBFdmVuIGlmIHRoZSAiZW5hYmxlRm9udFN1cHBvcnQiIG9wdGlvbiBpcyB0cnVlCiAgICAqIG5vbi1zdXBwb3J0aW5nIGJyb3dzZXJzIHdpbGwgc3RpbGwgcmVuZGVyIHdpdGggdGhlIEhlcnNoZXkgZm9udC4KICAgICogCiAgICAqLwogICAgJC5qcXBsb3QuQ2FudmFzQXhpc0xhYmVsUmVuZGVyZXIgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAKICAgICAgICAvLyBwcm9wOiBhbmdsZQogICAgICAgIC8vIGFuZ2xlIG9mIHRleHQsIG1lYXN1cmVkIGNsb2Nrd2lzZSBmcm9tIHggYXhpcy4KICAgICAgICB0aGlzLmFuZ2xlID0gMDsKICAgICAgICAvLyBuYW1lIG9mIHRoZSBheGlzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRpY2sKICAgICAgICB0aGlzLmF4aXM7CiAgICAgICAgLy8gcHJvcDogc2hvdwogICAgICAgIC8vIHdoZXRoZXIgb3Igbm90IHRvIHNob3cgdGhlIHRpY2sgKG1hcmsgYW5kIGxhYmVsKS4KICAgICAgICB0aGlzLnNob3cgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IHNob3dMYWJlbAogICAgICAgIC8vIHdoZXRoZXIgb3Igbm90IHRvIHNob3cgdGhlIGxhYmVsLgogICAgICAgIHRoaXMuc2hvd0xhYmVsID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBsYWJlbAogICAgICAgIC8vIGxhYmVsIGZvciB0aGUgYXhpcy4KICAgICAgICB0aGlzLmxhYmVsID0gJyc7CiAgICAgICAgLy8gcHJvcDogZm9udEZhbWlseQogICAgICAgIC8vIENTUyBzcGVjIGZvciB0aGUgZm9udC1mYW1pbHkgY3NzIGF0dHJpYnV0ZS4KICAgICAgICAvLyBBcHBsaWVzIG9ubHkgdG8gYnJvd3NlcnMgc3VwcG9ydGluZyBuYXRpdmUgZm9udCByZW5kZXJpbmcgaW4gdGhlCiAgICAgICAgLy8gY2FudmFzIHRhZy4gIEN1cnJlbnRseSBNb3ppbGxhIDMuNSBhbmQgU2FmYXJpIDQuCiAgICAgICAgdGhpcy5mb250RmFtaWx5ID0gJyJUcmVidWNoZXQgTVMiLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJzsKICAgICAgICAvLyBwcm9wOiBmb250U2l6ZQogICAgICAgIC8vIENTUyBzcGVjIGZvciBmb250IHNpemUuCiAgICAgICAgdGhpcy5mb250U2l6ZSA9ICcxMXB0JzsKICAgICAgICAvLyBwcm9wOiBmb250V2VpZ2h0CiAgICAgICAgLy8gQ1NTIHNwZWMgZm9yIGZvbnRXZWlnaHQ6ICBub3JtYWwsIGJvbGQsIGJvbGRlciwgbGlnaHRlciBvciBhIG51bWJlciAxMDAgLSA5MDAKICAgICAgICB0aGlzLmZvbnRXZWlnaHQgPSAnbm9ybWFsJzsKICAgICAgICAvLyBwcm9wOiBmb250U3RyZXRjaAogICAgICAgIC8vIE11bHRpcGxpZXIgdG8gY29uZGVuc2Ugb3IgZXhwYW5kIGZvbnQgd2lkdGguICAKICAgICAgICAvLyBBcHBsaWVzIG9ubHkgdG8gYnJvd3NlcnMgd2hpY2ggZG9uJ3Qgc3VwcG9ydCBjYW52YXMgbmF0aXZlIGZvbnQgcmVuZGVyaW5nLgogICAgICAgIHRoaXMuZm9udFN0cmV0Y2ggPSAxLjA7CiAgICAgICAgLy8gcHJvcDogdGV4dENvbG9yCiAgICAgICAgLy8gY3NzIHNwZWMgZm9yIHRoZSBjb2xvciBhdHRyaWJ1dGUuCiAgICAgICAgdGhpcy50ZXh0Q29sb3IgPSAnIzY2NjY2Nic7CiAgICAgICAgLy8gcHJvcDogZW5hYmxlRm9udFN1cHBvcnQKICAgICAgICAvLyB0cnVlIHRvIHR1cm4gb24gbmF0aXZlIGNhbnZhcyBmb250IHN1cHBvcnQgaW4gTW96aWxsYSAzLjUrIGFuZCBTYWZhcmkgNCsuCiAgICAgICAgLy8gSWYgdHJ1ZSwgbGFiZWwgd2lsbCBiZSBkcmF3biB3aXRoIGNhbnZhcyB0YWcgbmF0aXZlIHN1cHBvcnQgZm9yIGZvbnRzLgogICAgICAgIC8vIElmIGZhbHNlLCBsYWJlbCB3aWxsIGJlIGRyYXduIHdpdGggSGVyc2hleSBmb250IG1ldHJpY3MuCiAgICAgICAgdGhpcy5lbmFibGVGb250U3VwcG9ydCA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogcHQycHgKICAgICAgICAvLyBQb2ludCB0byBwaXhlbCBzY2FsaW5nIGZhY3RvciwgdXNlZCBmb3IgY29tcHV0aW5nIGhlaWdodCBvZiBib3VuZGluZyBib3gKICAgICAgICAvLyBhcm91bmQgYSBsYWJlbC4gIFRoZSBsYWJlbHMgdGV4dCByZW5kZXJlciBoYXMgYSBkZWZhdWx0IHNldHRpbmcgb2YgMS40LCB3aGljaCAKICAgICAgICAvLyBzaG91bGQgYmUgc3VpdGFibGUgZm9yIG1vc3QgZm9udHMuICBMZWF2ZSBhcyBudWxsIHRvIHVzZSBkZWZhdWx0LiAgSWYgdG9wcyBvZgogICAgICAgIC8vIGxldHRlcnMgYXBwZWFyIGNsaXBwZWQsIGluY3JlYXNlIHRoaXMuICBJZiBib3VuZGluZyBib3ggc2VlbXMgdG9vIGJpZywgZGVjcmVhc2UuCiAgICAgICAgLy8gVGhpcyBpcyBhbiBpc3N1ZSBvbmx5IHdpdGggdGhlIG5hdGl2ZSBmb250IHJlbmRlcmVyaW5nIGNhcGFiaWxpdGllcyBvZiBNb3ppbGxhCiAgICAgICAgLy8gMy41IGFuZCBTYWZhcmkgNCBzaW5jZSB0aGV5IGRvIG5vdCBwcm92aWRlIGEgbWV0aG9kIHRvIGRldGVybWluZSB0aGUgZm9udCBoZWlnaHQuCiAgICAgICAgdGhpcy5wdDJweCA9IG51bGw7CiAgICAgICAgCiAgICAgICAgdGhpcy5fZWxlbTsKICAgICAgICB0aGlzLl9jdHg7CiAgICAgICAgdGhpcy5fcGxvdFdpZHRoOwogICAgICAgIHRoaXMuX3Bsb3RIZWlnaHQ7CiAgICAgICAgdGhpcy5fcGxvdERpbWVuc2lvbnMgPSB7aGVpZ2h0Om51bGwsIHdpZHRoOm51bGx9OwogICAgICAgIAogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgIAogICAgICAgIGlmIChvcHRpb25zLmFuZ2xlID09IG51bGwgJiYgdGhpcy5heGlzICE9ICd4YXhpcycgJiYgdGhpcy5heGlzICE9ICd4MmF4aXMnKSB7CiAgICAgICAgICAgIHRoaXMuYW5nbGUgPSAtOTA7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHZhciByb3B0cyA9IHtmb250U2l6ZTp0aGlzLmZvbnRTaXplLCBmb250V2VpZ2h0OnRoaXMuZm9udFdlaWdodCwgZm9udFN0cmV0Y2g6dGhpcy5mb250U3RyZXRjaCwgZmlsbFN0eWxlOnRoaXMudGV4dENvbG9yLCBhbmdsZTp0aGlzLmdldEFuZ2xlUmFkKCksIGZvbnRGYW1pbHk6dGhpcy5mb250RmFtaWx5fTsKICAgICAgICBpZiAodGhpcy5wdDJweCkgewogICAgICAgICAgICByb3B0cy5wdDJweCA9IHRoaXMucHQycHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICh0aGlzLmVuYWJsZUZvbnRTdXBwb3J0KSB7CiAgICAgICAgICAgIGlmICgkLmpxcGxvdC5zdXBwb3J0X2NhbnZhc190ZXh0KCkpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3RleHRSZW5kZXJlciA9IG5ldyAkLmpxcGxvdC5DYW52YXNGb250UmVuZGVyZXIocm9wdHMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMuX3RleHRSZW5kZXJlciA9IG5ldyAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIocm9wdHMpOyAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdGhpcy5fdGV4dFJlbmRlcmVyID0gbmV3ICQuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlcihyb3B0cyk7IAogICAgICAgIH0KICAgIH07CiAgICAKICAgICQuanFwbG90LkNhbnZhc0F4aXNMYWJlbFJlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgIHRoaXMuX3RleHRSZW5kZXJlci5pbml0KHtmb250U2l6ZTp0aGlzLmZvbnRTaXplLCBmb250V2VpZ2h0OnRoaXMuZm9udFdlaWdodCwgZm9udFN0cmV0Y2g6dGhpcy5mb250U3RyZXRjaCwgZmlsbFN0eWxlOnRoaXMudGV4dENvbG9yLCBhbmdsZTp0aGlzLmdldEFuZ2xlUmFkKCksIGZvbnRGYW1pbHk6dGhpcy5mb250RmFtaWx5fSk7CiAgICB9OwogICAgCiAgICAvLyByZXR1cm4gd2lkdGggYWxvbmcgdGhlIHggYXhpcwogICAgLy8gd2lsbCBjaGVjayBmaXJzdCB0byBzZWUgaWYgYW4gZWxlbWVudCBleGlzdHMuCiAgICAvLyBpZiBub3QsIHdpbGwgcmV0dXJuIHRoZSBjb21wdXRlZCB0ZXh0IGJveCB3aWR0aC4KICAgICQuanFwbG90LkNhbnZhc0F4aXNMYWJlbFJlbmRlcmVyLnByb3RvdHlwZS5nZXRXaWR0aCA9IGZ1bmN0aW9uKGN0eCkgewogICAgICAgIGlmICh0aGlzLl9lbGVtKSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICB2YXIgdHIgPSB0aGlzLl90ZXh0UmVuZGVyZXI7CiAgICAgICAgICAgIHZhciBsID0gdHIuZ2V0V2lkdGgoY3R4KTsKICAgICAgICAgICAgdmFyIGggPSB0ci5nZXRIZWlnaHQoY3R4KTsKICAgICAgICAgICAgdmFyIHcgPSBNYXRoLmFicyhNYXRoLnNpbih0ci5hbmdsZSkqaCkgKyBNYXRoLmFicyhNYXRoLmNvcyh0ci5hbmdsZSkqbCk7CiAgICAgICAgICAgIHJldHVybiB3OwogICAgICAgIH0KICAgIH07CiAgICAKICAgIC8vIHJldHVybiBoZWlnaHQgYWxvbmcgdGhlIHkgYXhpcy4KICAgICQuanFwbG90LkNhbnZhc0F4aXNMYWJlbFJlbmRlcmVyLnByb3RvdHlwZS5nZXRIZWlnaHQgPSBmdW5jdGlvbihjdHgpIHsKICAgICAgICBpZiAodGhpcy5fZWxlbSkgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHZhciB0ciA9IHRoaXMuX3RleHRSZW5kZXJlcjsKICAgICAgICAgICAgdmFyIGwgPSB0ci5nZXRXaWR0aChjdHgpOwogICAgICAgICAgICB2YXIgaCA9IHRyLmdldEhlaWdodChjdHgpOwogICAgICAgICAgICB2YXIgdyA9IE1hdGguYWJzKE1hdGguY29zKHRyLmFuZ2xlKSpoKSArIE1hdGguYWJzKE1hdGguc2luKHRyLmFuZ2xlKSpsKTsKICAgICAgICAgICAgcmV0dXJuIHc7CiAgICAgICAgfQogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQ2FudmFzQXhpc0xhYmVsUmVuZGVyZXIucHJvdG90eXBlLmdldEFuZ2xlUmFkID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGEgPSB0aGlzLmFuZ2xlICogTWF0aC5QSS8xODA7CiAgICAgICAgcmV0dXJuIGE7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNBeGlzTGFiZWxSZW5kZXJlci5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGN0eCwgcGxvdCkgewogICAgICAgICAgLy8gTWVtb3J5IExlYWtzIHBhdGNoCiAgICAgICAgICBpZiAodGhpcy5fZWxlbSkgewogICAgICAgICAgICAgIGlmICgkLmpxcGxvdC51c2VfZXhjYW52YXMgJiYgd2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci51bmluaXRFbGVtZW50ICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgd2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci51bmluaXRFbGVtZW50KHRoaXMuX2VsZW0uZ2V0KDApKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAgIHRoaXMuX2VsZW0uZW1wdHlGb3JjZSgpOwogICAgICAgICAgICAgIHRoaXMuX2VsZW0gPSBudWxsOwogICAgICAgICAgfQoKICAgICAgICAvLyBjcmVhdGUgYSBjYW52YXMgaGVyZSwgYnV0IGNhbid0IGRyYXcgb24gaXQgdW50aWxsIGl0IGlzIGFwcGVuZGVkCiAgICAgICAgLy8gdG8gZG9tIGZvciBJRSBjb21wYXRhYmlsaXR5LgogICAgICAgIHZhciBlbGVtID0gcGxvdC5jYW52YXNNYW5hZ2VyLmdldENhbnZhcygpOwoKICAgICAgICB0aGlzLl90ZXh0UmVuZGVyZXIuc2V0VGV4dCh0aGlzLmxhYmVsLCBjdHgpOwogICAgICAgIHZhciB3ID0gdGhpcy5nZXRXaWR0aChjdHgpOwogICAgICAgIHZhciBoID0gdGhpcy5nZXRIZWlnaHQoY3R4KTsKICAgICAgICBlbGVtLndpZHRoID0gdzsKICAgICAgICBlbGVtLmhlaWdodCA9IGg7CiAgICAgICAgZWxlbS5zdHlsZS53aWR0aCA9IHc7CiAgICAgICAgZWxlbS5zdHlsZS5oZWlnaHQgPSBoOwogICAgICAgIAogICAgICAgIGVsZW0gPSBwbG90LmNhbnZhc01hbmFnZXIuaW5pdENhbnZhcyhlbGVtKTsKCiAgICAgICAgdGhpcy5fZWxlbSA9ICQoZWxlbSk7CiAgICAgICAgdGhpcy5fZWxlbS5jc3MoeyBwb3NpdGlvbjogJ2Fic29sdXRlJ30pOwogICAgICAgIHRoaXMuX2VsZW0uYWRkQ2xhc3MoJ2pxcGxvdC0nK3RoaXMuYXhpcysnLWxhYmVsJyk7CiAgICAgICAgCiAgICAgICAgZWxlbSA9IG51bGw7CiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW07CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNBeGlzTGFiZWxSZW5kZXJlci5wcm90b3R5cGUucGFjayA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuX3RleHRSZW5kZXJlci5kcmF3KHRoaXMuX2VsZW0uZ2V0KDApLmdldENvbnRleHQoIjJkIiksIHRoaXMubGFiZWwpOwogICAgfTsKICAgIAp9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.canvasAxisLabelRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGEpe2EuanFwbG90LkNhbnZhc0F4aXNMYWJlbFJlbmRlcmVyPWZ1bmN0aW9uKGIpe3RoaXMuYW5nbGU9MDt0aGlzLmF4aXM7dGhpcy5zaG93PXRydWU7dGhpcy5zaG93TGFiZWw9dHJ1ZTt0aGlzLmxhYmVsPSIiO3RoaXMuZm9udEZhbWlseT0nIlRyZWJ1Y2hldCBNUyIsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYnO3RoaXMuZm9udFNpemU9IjExcHQiO3RoaXMuZm9udFdlaWdodD0ibm9ybWFsIjt0aGlzLmZvbnRTdHJldGNoPTE7dGhpcy50ZXh0Q29sb3I9IiM2NjY2NjYiO3RoaXMuZW5hYmxlRm9udFN1cHBvcnQ9dHJ1ZTt0aGlzLnB0MnB4PW51bGw7dGhpcy5fZWxlbTt0aGlzLl9jdHg7dGhpcy5fcGxvdFdpZHRoO3RoaXMuX3Bsb3RIZWlnaHQ7dGhpcy5fcGxvdERpbWVuc2lvbnM9e2hlaWdodDpudWxsLHdpZHRoOm51bGx9O2EuZXh0ZW5kKHRydWUsdGhpcyxiKTtpZihiLmFuZ2xlPT1udWxsJiZ0aGlzLmF4aXMhPSJ4YXhpcyImJnRoaXMuYXhpcyE9IngyYXhpcyIpe3RoaXMuYW5nbGU9LTkwfXZhciBjPXtmb250U2l6ZTp0aGlzLmZvbnRTaXplLGZvbnRXZWlnaHQ6dGhpcy5mb250V2VpZ2h0LGZvbnRTdHJldGNoOnRoaXMuZm9udFN0cmV0Y2gsZmlsbFN0eWxlOnRoaXMudGV4dENvbG9yLGFuZ2xlOnRoaXMuZ2V0QW5nbGVSYWQoKSxmb250RmFtaWx5OnRoaXMuZm9udEZhbWlseX07aWYodGhpcy5wdDJweCl7Yy5wdDJweD10aGlzLnB0MnB4fWlmKHRoaXMuZW5hYmxlRm9udFN1cHBvcnQpe2lmKGEuanFwbG90LnN1cHBvcnRfY2FudmFzX3RleHQoKSl7dGhpcy5fdGV4dFJlbmRlcmVyPW5ldyBhLmpxcGxvdC5DYW52YXNGb250UmVuZGVyZXIoYyl9ZWxzZXt0aGlzLl90ZXh0UmVuZGVyZXI9bmV3IGEuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlcihjKX19ZWxzZXt0aGlzLl90ZXh0UmVuZGVyZXI9bmV3IGEuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlcihjKX19O2EuanFwbG90LkNhbnZhc0F4aXNMYWJlbFJlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGIpe2EuZXh0ZW5kKHRydWUsdGhpcyxiKTt0aGlzLl90ZXh0UmVuZGVyZXIuaW5pdCh7Zm9udFNpemU6dGhpcy5mb250U2l6ZSxmb250V2VpZ2h0OnRoaXMuZm9udFdlaWdodCxmb250U3RyZXRjaDp0aGlzLmZvbnRTdHJldGNoLGZpbGxTdHlsZTp0aGlzLnRleHRDb2xvcixhbmdsZTp0aGlzLmdldEFuZ2xlUmFkKCksZm9udEZhbWlseTp0aGlzLmZvbnRGYW1pbHl9KX07YS5qcXBsb3QuQ2FudmFzQXhpc0xhYmVsUmVuZGVyZXIucHJvdG90eXBlLmdldFdpZHRoPWZ1bmN0aW9uKGQpe2lmKHRoaXMuX2VsZW0pe3JldHVybiB0aGlzLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSl9ZWxzZXt2YXIgZj10aGlzLl90ZXh0UmVuZGVyZXI7dmFyIGM9Zi5nZXRXaWR0aChkKTt2YXIgZT1mLmdldEhlaWdodChkKTt2YXIgYj1NYXRoLmFicyhNYXRoLnNpbihmLmFuZ2xlKSplKStNYXRoLmFicyhNYXRoLmNvcyhmLmFuZ2xlKSpjKTtyZXR1cm4gYn19O2EuanFwbG90LkNhbnZhc0F4aXNMYWJlbFJlbmRlcmVyLnByb3RvdHlwZS5nZXRIZWlnaHQ9ZnVuY3Rpb24oZCl7aWYodGhpcy5fZWxlbSl7cmV0dXJuIHRoaXMuX2VsZW0ub3V0ZXJIZWlnaHQodHJ1ZSl9ZWxzZXt2YXIgZj10aGlzLl90ZXh0UmVuZGVyZXI7dmFyIGM9Zi5nZXRXaWR0aChkKTt2YXIgZT1mLmdldEhlaWdodChkKTt2YXIgYj1NYXRoLmFicyhNYXRoLmNvcyhmLmFuZ2xlKSplKStNYXRoLmFicyhNYXRoLnNpbihmLmFuZ2xlKSpjKTtyZXR1cm4gYn19O2EuanFwbG90LkNhbnZhc0F4aXNMYWJlbFJlbmRlcmVyLnByb3RvdHlwZS5nZXRBbmdsZVJhZD1mdW5jdGlvbigpe3ZhciBiPXRoaXMuYW5nbGUqTWF0aC5QSS8xODA7cmV0dXJuIGJ9O2EuanFwbG90LkNhbnZhc0F4aXNMYWJlbFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKGMsZil7aWYodGhpcy5fZWxlbSl7aWYoYS5qcXBsb3QudXNlX2V4Y2FudmFzJiZ3aW5kb3cuR192bWxDYW52YXNNYW5hZ2VyLnVuaW5pdEVsZW1lbnQhPT11bmRlZmluZWQpe3dpbmRvdy5HX3ZtbENhbnZhc01hbmFnZXIudW5pbml0RWxlbWVudCh0aGlzLl9lbGVtLmdldCgwKSl9dGhpcy5fZWxlbS5lbXB0eUZvcmNlKCk7dGhpcy5fZWxlbT1udWxsfXZhciBlPWYuY2FudmFzTWFuYWdlci5nZXRDYW52YXMoKTt0aGlzLl90ZXh0UmVuZGVyZXIuc2V0VGV4dCh0aGlzLmxhYmVsLGMpO3ZhciBiPXRoaXMuZ2V0V2lkdGgoYyk7dmFyIGQ9dGhpcy5nZXRIZWlnaHQoYyk7ZS53aWR0aD1iO2UuaGVpZ2h0PWQ7ZS5zdHlsZS53aWR0aD1iO2Uuc3R5bGUuaGVpZ2h0PWQ7ZT1mLmNhbnZhc01hbmFnZXIuaW5pdENhbnZhcyhlKTt0aGlzLl9lbGVtPWEoZSk7dGhpcy5fZWxlbS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSJ9KTt0aGlzLl9lbGVtLmFkZENsYXNzKCJqcXBsb3QtIit0aGlzLmF4aXMrIi1sYWJlbCIpO2U9bnVsbDtyZXR1cm4gdGhpcy5fZWxlbX07YS5qcXBsb3QuQ2FudmFzQXhpc0xhYmVsUmVuZGVyZXIucHJvdG90eXBlLnBhY2s9ZnVuY3Rpb24oKXt0aGlzLl90ZXh0UmVuZGVyZXIuZHJhdyh0aGlzLl9lbGVtLmdldCgwKS5nZXRDb250ZXh0KCIyZCIpLHRoaXMubGFiZWwpfX0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.canvasAxisTickRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAqICBDbGFzczogJC5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlcgogICAgKiBSZW5kZXJlciB0byBkcmF3IGF4aXMgdGlja3Mgd2l0aCBhIGNhbnZhcyBlbGVtZW50IHRvIHN1cHBvcnQgYWR2YW5jZWQKICAgICogZmVhdHJ1ZXMgc3VjaCBhcyByb3RhdGVkIHRleHQuICBUaGlzIHJlbmRlcmVyIHVzZXMgYSBzZXBhcmF0ZSByZW5kZXJpbmcgZW5naW5lCiAgICAqIHRvIGRyYXcgdGhlIHRleHQgb24gdGhlIGNhbnZhcy4gIFR3byBtb2RlcyBvZiByZW5kZXJpbmcgdGhlIHRleHQgYXJlIGF2YWlsYWJsZS4KICAgICogSWYgdGhlIGJyb3dzZXIgaGFzIG5hdGl2ZSBmb250IHN1cHBvcnQgZm9yIGNhbnZhcyBmb250cyAoY3VycmVudGx5IE1vemlsYSAzLjUKICAgICogYW5kIFNhZmFyaSA0KSwgeW91IGNhbiBlbmFibGUgdGV4dCByZW5kZXJpbmcgd2l0aCB0aGUgY2FudmFzIGZpbGxUZXh0IG1ldGhvZC4KICAgICogWW91IGRvIHNvIGJ5IHNldHRpbmcgdGhlICJlbmFibGVGb250U3VwcG9ydCIgb3B0aW9uIHRvIHRydWUuIAogICAgKiAKICAgICogQnJvd3NlcnMgbGFja2luZyBuYXRpdmUgZm9udCBzdXBwb3J0IHdpbGwgaGF2ZSB0aGUgdGV4dCBkcmF3biBvbiB0aGUgY2FudmFzCiAgICAqIHVzaW5nIHRoZSBIZXJzaGV5IGZvbnQgbWV0cmljcy4gIEV2ZW4gaWYgdGhlICJlbmFibGVGb250U3VwcG9ydCIgb3B0aW9uIGlzIHRydWUKICAgICogbm9uLXN1cHBvcnRpbmcgYnJvd3NlcnMgd2lsbCBzdGlsbCByZW5kZXIgd2l0aCB0aGUgSGVyc2hleSBmb250LgogICAgKi8KICAgICQuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAKICAgICAgICAvLyBwcm9wOiBtYXJrCiAgICAgICAgLy8gdGljayBtYXJrIG9uIHRoZSBheGlzLiAgT25lIG9mICdpbnNpZGUnLCAnb3V0c2lkZScsICdjcm9zcycsICcnIG9yIG51bGwuCiAgICAgICAgdGhpcy5tYXJrID0gJ291dHNpZGUnOwogICAgICAgIC8vIHByb3A6IHNob3dNYXJrCiAgICAgICAgLy8gd2hldGhlciBvciBub3QgdG8gc2hvdyB0aGUgbWFyayBvbiB0aGUgYXhpcy4KICAgICAgICB0aGlzLnNob3dNYXJrID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBzaG93R3JpZGxpbmUKICAgICAgICAvLyB3aGV0aGVyIG9yIG5vdCB0byBkcmF3IHRoZSBncmlkbGluZSBvbiB0aGUgZ3JpZCBhdCB0aGlzIHRpY2suCiAgICAgICAgdGhpcy5zaG93R3JpZGxpbmUgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IGlzTWlub3JUaWNrCiAgICAgICAgLy8gaWYgdGhpcyBpcyBhIG1pbm9yIHRpY2suCiAgICAgICAgdGhpcy5pc01pbm9yVGljayA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGFuZ2xlCiAgICAgICAgLy8gYW5nbGUgb2YgdGV4dCwgbWVhc3VyZWQgY2xvY2t3aXNlIGZyb20geCBheGlzLgogICAgICAgIHRoaXMuYW5nbGUgPSAwOwogICAgICAgIC8vIHByb3A6ICBtYXJrU2l6ZQogICAgICAgIC8vIExlbmd0aCBvZiB0aGUgdGljayBtYXJrcyBpbiBwaXhlbHMuICBGb3IgJ2Nyb3NzJyBzdHlsZSwgbGVuZ3RoCiAgICAgICAgLy8gd2lsbCBiZSBzdG9rZWQgYWJvdmUgYW5kIGJlbG93IGF4aXMsIHNvIHRvdGFsIGxlbmd0aCB3aWxsIGJlIHR3aWNlIHRoaXMuCiAgICAgICAgdGhpcy5tYXJrU2l6ZSA9IDQ7CiAgICAgICAgLy8gcHJvcDogc2hvdwogICAgICAgIC8vIHdoZXRoZXIgb3Igbm90IHRvIHNob3cgdGhlIHRpY2sgKG1hcmsgYW5kIGxhYmVsKS4KICAgICAgICB0aGlzLnNob3cgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IHNob3dMYWJlbAogICAgICAgIC8vIHdoZXRoZXIgb3Igbm90IHRvIHNob3cgdGhlIGxhYmVsLgogICAgICAgIHRoaXMuc2hvd0xhYmVsID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBsYWJlbFBvc2l0aW9uCiAgICAgICAgLy8gJ2F1dG8nLCAnc3RhcnQnLCAnbWlkZGxlJyBvciAnZW5kJy4KICAgICAgICAvLyBXaGV0aGVyIHRpY2sgbGFiZWwgc2hvdWxkIGJlIHBvc2l0aW9uZWQgc28gdGhlIHN0YXJ0LCBtaWRkbGUsIG9yIGVuZAogICAgICAgIC8vIG9mIHRoZSB0aWNrIG1hcmsuCiAgICAgICAgdGhpcy5sYWJlbFBvc2l0aW9uID0gJ2F1dG8nOwogICAgICAgIHRoaXMubGFiZWwgPSAnJzsKICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDsKICAgICAgICB0aGlzLl9zdHlsZXMgPSB7fTsKICAgICAgICAvLyBwcm9wOiBmb3JtYXR0ZXIKICAgICAgICAvLyBBIGNsYXNzIG9mIGEgZm9ybWF0dGVyIGZvciB0aGUgdGljayB0ZXh0LgogICAgICAgIC8vIFRoZSBkZWZhdWx0ICQuanFwbG90LkRlZmF1bHRUaWNrRm9ybWF0dGVyIHVzZXMgc3ByaW50Zi4KICAgICAgICB0aGlzLmZvcm1hdHRlciA9ICQuanFwbG90LkRlZmF1bHRUaWNrRm9ybWF0dGVyOwogICAgICAgIC8vIHByb3A6IGZvcm1hdFN0cmluZwogICAgICAgIC8vIHN0cmluZyBwYXNzZWQgdG8gdGhlIGZvcm1hdHRlci4KICAgICAgICB0aGlzLmZvcm1hdFN0cmluZyA9ICcnOwogICAgICAgIC8vIHByb3A6IHByZWZpeAogICAgICAgIC8vIFN0cmluZyB0byBwcmVwZW5kIHRvIHRoZSB0aWNrIGxhYmVsLgogICAgICAgIC8vIFByZWZpeCBpcyBwcmVwZW5kZWQgdG8gdGhlIGZvcm1hdHRlZCB0aWNrIGxhYmVsLgogICAgICAgIHRoaXMucHJlZml4ID0gJyc7CiAgICAgICAgLy8gcHJvcDogZm9udEZhbWlseQogICAgICAgIC8vIGNzcyBzcGVjIGZvciB0aGUgZm9udC1mYW1pbHkgY3NzIGF0dHJpYnV0ZS4KICAgICAgICB0aGlzLmZvbnRGYW1pbHkgPSAnIlRyZWJ1Y2hldCBNUyIsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYnOwogICAgICAgIC8vIHByb3A6IGZvbnRTaXplCiAgICAgICAgLy8gQ1NTIHNwZWMgZm9yIGZvbnQgc2l6ZS4KICAgICAgICB0aGlzLmZvbnRTaXplID0gJzEwcHQnOwogICAgICAgIC8vIHByb3A6IGZvbnRXZWlnaHQKICAgICAgICAvLyBDU1Mgc3BlYyBmb3IgZm9udFdlaWdodAogICAgICAgIHRoaXMuZm9udFdlaWdodCA9ICdub3JtYWwnOwogICAgICAgIC8vIHByb3A6IGZvbnRTdHJldGNoCiAgICAgICAgLy8gTXVsdGlwbGllciB0byBjb25kZW5zZSBvciBleHBhbmQgZm9udCB3aWR0aC4gIAogICAgICAgIC8vIEFwcGxpZXMgb25seSB0byBicm93c2VycyB3aGljaCBkb24ndCBzdXBwb3J0IGNhbnZhcyBuYXRpdmUgZm9udCByZW5kZXJpbmcuCiAgICAgICAgdGhpcy5mb250U3RyZXRjaCA9IDEuMDsKICAgICAgICAvLyBwcm9wOiB0ZXh0Q29sb3IKICAgICAgICAvLyBjc3Mgc3BlYyBmb3IgdGhlIGNvbG9yIGF0dHJpYnV0ZS4KICAgICAgICB0aGlzLnRleHRDb2xvciA9ICcjNjY2NjY2JzsKICAgICAgICAvLyBwcm9wOiBlbmFibGVGb250U3VwcG9ydAogICAgICAgIC8vIHRydWUgdG8gdHVybiBvbiBuYXRpdmUgY2FudmFzIGZvbnQgc3VwcG9ydCBpbiBNb3ppbGxhIDMuNSsgYW5kIFNhZmFyaSA0Ky4KICAgICAgICAvLyBJZiB0cnVlLCB0aWNrIGxhYmVsIHdpbGwgYmUgZHJhd24gd2l0aCBjYW52YXMgdGFnIG5hdGl2ZSBzdXBwb3J0IGZvciBmb250cy4KICAgICAgICAvLyBJZiBmYWxzZSwgdGljayBsYWJlbCB3aWxsIGJlIGRyYXduIHdpdGggSGVyc2hleSBmb250IG1ldHJpY3MuCiAgICAgICAgdGhpcy5lbmFibGVGb250U3VwcG9ydCA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogcHQycHgKICAgICAgICAvLyBQb2ludCB0byBwaXhlbCBzY2FsaW5nIGZhY3RvciwgdXNlZCBmb3IgY29tcHV0aW5nIGhlaWdodCBvZiBib3VuZGluZyBib3gKICAgICAgICAvLyBhcm91bmQgYSBsYWJlbC4gIFRoZSBsYWJlbHMgdGV4dCByZW5kZXJlciBoYXMgYSBkZWZhdWx0IHNldHRpbmcgb2YgMS40LCB3aGljaCAKICAgICAgICAvLyBzaG91bGQgYmUgc3VpdGFibGUgZm9yIG1vc3QgZm9udHMuICBMZWF2ZSBhcyBudWxsIHRvIHVzZSBkZWZhdWx0LiAgSWYgdG9wcyBvZgogICAgICAgIC8vIGxldHRlcnMgYXBwZWFyIGNsaXBwZWQsIGluY3JlYXNlIHRoaXMuICBJZiBib3VuZGluZyBib3ggc2VlbXMgdG9vIGJpZywgZGVjcmVhc2UuCiAgICAgICAgLy8gVGhpcyBpcyBhbiBpc3N1ZSBvbmx5IHdpdGggdGhlIG5hdGl2ZSBmb250IHJlbmRlcmVyaW5nIGNhcGFiaWxpdGllcyBvZiBNb3ppbGxhCiAgICAgICAgLy8gMy41IGFuZCBTYWZhcmkgNCBzaW5jZSB0aGV5IGRvIG5vdCBwcm92aWRlIGEgbWV0aG9kIHRvIGRldGVybWluZSB0aGUgZm9udCBoZWlnaHQuCiAgICAgICAgdGhpcy5wdDJweCA9IG51bGw7CiAgICAgICAgCiAgICAgICAgdGhpcy5fZWxlbTsKICAgICAgICB0aGlzLl9jdHg7CiAgICAgICAgdGhpcy5fcGxvdFdpZHRoOwogICAgICAgIHRoaXMuX3Bsb3RIZWlnaHQ7CiAgICAgICAgdGhpcy5fcGxvdERpbWVuc2lvbnMgPSB7aGVpZ2h0Om51bGwsIHdpZHRoOm51bGx9OwogICAgICAgIAogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgIAogICAgICAgIHZhciByb3B0cyA9IHtmb250U2l6ZTp0aGlzLmZvbnRTaXplLCBmb250V2VpZ2h0OnRoaXMuZm9udFdlaWdodCwgZm9udFN0cmV0Y2g6dGhpcy5mb250U3RyZXRjaCwgZmlsbFN0eWxlOnRoaXMudGV4dENvbG9yLCBhbmdsZTp0aGlzLmdldEFuZ2xlUmFkKCksIGZvbnRGYW1pbHk6dGhpcy5mb250RmFtaWx5fTsKICAgICAgICBpZiAodGhpcy5wdDJweCkgewogICAgICAgICAgICByb3B0cy5wdDJweCA9IHRoaXMucHQycHg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICh0aGlzLmVuYWJsZUZvbnRTdXBwb3J0KSB7CiAgICAgICAgICAgIGlmICgkLmpxcGxvdC5zdXBwb3J0X2NhbnZhc190ZXh0KCkpIHsKICAgICAgICAgICAgICAgIHRoaXMuX3RleHRSZW5kZXJlciA9IG5ldyAkLmpxcGxvdC5DYW52YXNGb250UmVuZGVyZXIocm9wdHMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMuX3RleHRSZW5kZXJlciA9IG5ldyAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIocm9wdHMpOyAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdGhpcy5fdGV4dFJlbmRlcmVyID0gbmV3ICQuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlcihyb3B0cyk7IAogICAgICAgIH0KICAgIH07CiAgICAKICAgICQuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CiAgICAgICAgdGhpcy5fdGV4dFJlbmRlcmVyLmluaXQoe2ZvbnRTaXplOnRoaXMuZm9udFNpemUsIGZvbnRXZWlnaHQ6dGhpcy5mb250V2VpZ2h0LCBmb250U3RyZXRjaDp0aGlzLmZvbnRTdHJldGNoLCBmaWxsU3R5bGU6dGhpcy50ZXh0Q29sb3IsIGFuZ2xlOnRoaXMuZ2V0QW5nbGVSYWQoKSwgZm9udEZhbWlseTp0aGlzLmZvbnRGYW1pbHl9KTsKICAgIH07CiAgICAKICAgIC8vIHJldHVybiB3aWR0aCBhbG9uZyB0aGUgeCBheGlzCiAgICAvLyB3aWxsIGNoZWNrIGZpcnN0IHRvIHNlZSBpZiBhbiBlbGVtZW50IGV4aXN0cy4KICAgIC8vIGlmIG5vdCwgd2lsbCByZXR1cm4gdGhlIGNvbXB1dGVkIHRleHQgYm94IHdpZHRoLgogICAgJC5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUuZ2V0V2lkdGggPSBmdW5jdGlvbihjdHgpIHsKICAgICAgICBpZiAodGhpcy5fZWxlbSkgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbS5vdXRlcldpZHRoKHRydWUpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdmFyIHRyID0gdGhpcy5fdGV4dFJlbmRlcmVyOwogICAgICAgICAgICB2YXIgbCA9IHRyLmdldFdpZHRoKGN0eCk7CiAgICAgICAgICAgIHZhciBoID0gdHIuZ2V0SGVpZ2h0KGN0eCk7CiAgICAgICAgICAgIHZhciB3ID0gTWF0aC5hYnMoTWF0aC5zaW4odHIuYW5nbGUpKmgpICsgTWF0aC5hYnMoTWF0aC5jb3ModHIuYW5nbGUpKmwpOwogICAgICAgICAgICByZXR1cm4gdzsKICAgICAgICB9CiAgICB9OwogICAgCiAgICAvLyByZXR1cm4gaGVpZ2h0IGFsb25nIHRoZSB5IGF4aXMuCiAgICAkLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyLnByb3RvdHlwZS5nZXRIZWlnaHQgPSBmdW5jdGlvbihjdHgpIHsKICAgICAgICBpZiAodGhpcy5fZWxlbSkgewogICAgICAgICByZXR1cm4gdGhpcy5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHZhciB0ciA9IHRoaXMuX3RleHRSZW5kZXJlcjsKICAgICAgICAgICAgdmFyIGwgPSB0ci5nZXRXaWR0aChjdHgpOwogICAgICAgICAgICB2YXIgaCA9IHRyLmdldEhlaWdodChjdHgpOwogICAgICAgICAgICB2YXIgdyA9IE1hdGguYWJzKE1hdGguY29zKHRyLmFuZ2xlKSpoKSArIE1hdGguYWJzKE1hdGguc2luKHRyLmFuZ2xlKSpsKTsKICAgICAgICAgICAgcmV0dXJuIHc7CiAgICAgICAgfQogICAgfTsKCiAgICAvLyByZXR1cm4gdG9wLgogICAgJC5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUuZ2V0VG9wID0gZnVuY3Rpb24oY3R4KSB7CiAgICAgICAgaWYgKHRoaXMuX2VsZW0pIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW0ucG9zaXRpb24oKS50b3A7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyLnByb3RvdHlwZS5nZXRBbmdsZVJhZCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBhID0gdGhpcy5hbmdsZSAqIE1hdGguUEkvMTgwOwogICAgICAgIHJldHVybiBhOwogICAgfTsKICAgIAogICAgCiAgICAkLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyLnByb3RvdHlwZS5zZXRUaWNrID0gZnVuY3Rpb24odmFsdWUsIGF4aXNOYW1lLCBpc01pbm9yKSB7CiAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlOwogICAgICAgIGlmIChpc01pbm9yKSB7CiAgICAgICAgICAgIHRoaXMuaXNNaW5vclRpY2sgPSB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpczsKICAgIH07CiAgICAKICAgICQuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjdHgsIHBsb3QpIHsKICAgICAgICBpZiAoIXRoaXMubGFiZWwpIHsKICAgICAgICAgICAgdGhpcy5sYWJlbCA9IHRoaXMucHJlZml4ICsgdGhpcy5mb3JtYXR0ZXIodGhpcy5mb3JtYXRTdHJpbmcsIHRoaXMudmFsdWUpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBNZW1vcnkgTGVha3MgcGF0Y2gKICAgICAgICBpZiAodGhpcy5fZWxlbSkgewogICAgICAgICAgICBpZiAoJC5qcXBsb3QudXNlX2V4Y2FudmFzICYmIHdpbmRvdy5HX3ZtbENhbnZhc01hbmFnZXIudW5pbml0RWxlbWVudCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cuR192bWxDYW52YXNNYW5hZ2VyLnVuaW5pdEVsZW1lbnQodGhpcy5fZWxlbS5nZXQoMCkpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICB0aGlzLl9lbGVtLmVtcHR5Rm9yY2UoKTsKICAgICAgICAgICAgdGhpcy5fZWxlbSA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICAvLyBjcmVhdGUgYSBjYW52YXMgaGVyZSwgYnV0IGNhbid0IGRyYXcgb24gaXQgdW50aWxsIGl0IGlzIGFwcGVuZGVkCiAgICAgICAgLy8gdG8gZG9tIGZvciBJRSBjb21wYXRhYmlsaXR5LgoKICAgICAgICB2YXIgZWxlbSA9IHBsb3QuY2FudmFzTWFuYWdlci5nZXRDYW52YXMoKTsKCiAgICAgICAgdGhpcy5fdGV4dFJlbmRlcmVyLnNldFRleHQodGhpcy5sYWJlbCwgY3R4KTsKICAgICAgICB2YXIgdyA9IHRoaXMuZ2V0V2lkdGgoY3R4KTsKICAgICAgICB2YXIgaCA9IHRoaXMuZ2V0SGVpZ2h0KGN0eCk7CiAgICAgICAgLy8gY2FudmFzZXMgc2VlbSB0byBuZWVkIHRvIGhhdmUgd2lkdGggYW5kIGhlaWdoIGF0dHJpYnV0ZXMgZGlyZWN0bHkgc2V0LgogICAgICAgIGVsZW0ud2lkdGggPSB3OwogICAgICAgIGVsZW0uaGVpZ2h0ID0gaDsKICAgICAgICBlbGVtLnN0eWxlLndpZHRoID0gdzsKICAgICAgICBlbGVtLnN0eWxlLmhlaWdodCA9IGg7CiAgICAgICAgZWxlbS5zdHlsZS50ZXh0QWxpZ24gPSAnbGVmdCc7CiAgICAgICAgZWxlbS5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7CgogICAgICAgIGVsZW0gPSBwbG90LmNhbnZhc01hbmFnZXIuaW5pdENhbnZhcyhlbGVtKTsKCiAgICAgICAgdGhpcy5fZWxlbSA9ICQoZWxlbSk7CiAgICAgICAgdGhpcy5fZWxlbS5jc3ModGhpcy5fc3R5bGVzKTsKICAgICAgICB0aGlzLl9lbGVtLmFkZENsYXNzKCdqcXBsb3QtJyt0aGlzLmF4aXMrJy10aWNrJyk7CgogICAgICAgIGVsZW0gPSBudWxsOwogICAgICAgIHJldHVybiB0aGlzLl9lbGVtOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUucGFjayA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMuX3RleHRSZW5kZXJlci5kcmF3KHRoaXMuX2VsZW0uZ2V0KDApLmdldENvbnRleHQoIjJkIiksIHRoaXMubGFiZWwpOwogICAgfTsKICAgIAp9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.canvasAxisTickRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGEpe2EuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXI9ZnVuY3Rpb24oYil7dGhpcy5tYXJrPSJvdXRzaWRlIjt0aGlzLnNob3dNYXJrPXRydWU7dGhpcy5zaG93R3JpZGxpbmU9dHJ1ZTt0aGlzLmlzTWlub3JUaWNrPWZhbHNlO3RoaXMuYW5nbGU9MDt0aGlzLm1hcmtTaXplPTQ7dGhpcy5zaG93PXRydWU7dGhpcy5zaG93TGFiZWw9dHJ1ZTt0aGlzLmxhYmVsUG9zaXRpb249ImF1dG8iO3RoaXMubGFiZWw9IiI7dGhpcy52YWx1ZT1udWxsO3RoaXMuX3N0eWxlcz17fTt0aGlzLmZvcm1hdHRlcj1hLmpxcGxvdC5EZWZhdWx0VGlja0Zvcm1hdHRlcjt0aGlzLmZvcm1hdFN0cmluZz0iIjt0aGlzLnByZWZpeD0iIjt0aGlzLmZvbnRGYW1pbHk9JyJUcmVidWNoZXQgTVMiLCBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmJzt0aGlzLmZvbnRTaXplPSIxMHB0Ijt0aGlzLmZvbnRXZWlnaHQ9Im5vcm1hbCI7dGhpcy5mb250U3RyZXRjaD0xO3RoaXMudGV4dENvbG9yPSIjNjY2NjY2Ijt0aGlzLmVuYWJsZUZvbnRTdXBwb3J0PXRydWU7dGhpcy5wdDJweD1udWxsO3RoaXMuX2VsZW07dGhpcy5fY3R4O3RoaXMuX3Bsb3RXaWR0aDt0aGlzLl9wbG90SGVpZ2h0O3RoaXMuX3Bsb3REaW1lbnNpb25zPXtoZWlnaHQ6bnVsbCx3aWR0aDpudWxsfTthLmV4dGVuZCh0cnVlLHRoaXMsYik7dmFyIGM9e2ZvbnRTaXplOnRoaXMuZm9udFNpemUsZm9udFdlaWdodDp0aGlzLmZvbnRXZWlnaHQsZm9udFN0cmV0Y2g6dGhpcy5mb250U3RyZXRjaCxmaWxsU3R5bGU6dGhpcy50ZXh0Q29sb3IsYW5nbGU6dGhpcy5nZXRBbmdsZVJhZCgpLGZvbnRGYW1pbHk6dGhpcy5mb250RmFtaWx5fTtpZih0aGlzLnB0MnB4KXtjLnB0MnB4PXRoaXMucHQycHh9aWYodGhpcy5lbmFibGVGb250U3VwcG9ydCl7aWYoYS5qcXBsb3Quc3VwcG9ydF9jYW52YXNfdGV4dCgpKXt0aGlzLl90ZXh0UmVuZGVyZXI9bmV3IGEuanFwbG90LkNhbnZhc0ZvbnRSZW5kZXJlcihjKX1lbHNle3RoaXMuX3RleHRSZW5kZXJlcj1uZXcgYS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyKGMpfX1lbHNle3RoaXMuX3RleHRSZW5kZXJlcj1uZXcgYS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyKGMpfX07YS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihiKXthLmV4dGVuZCh0cnVlLHRoaXMsYik7dGhpcy5fdGV4dFJlbmRlcmVyLmluaXQoe2ZvbnRTaXplOnRoaXMuZm9udFNpemUsZm9udFdlaWdodDp0aGlzLmZvbnRXZWlnaHQsZm9udFN0cmV0Y2g6dGhpcy5mb250U3RyZXRjaCxmaWxsU3R5bGU6dGhpcy50ZXh0Q29sb3IsYW5nbGU6dGhpcy5nZXRBbmdsZVJhZCgpLGZvbnRGYW1pbHk6dGhpcy5mb250RmFtaWx5fSl9O2EuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIucHJvdG90eXBlLmdldFdpZHRoPWZ1bmN0aW9uKGQpe2lmKHRoaXMuX2VsZW0pe3JldHVybiB0aGlzLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSl9ZWxzZXt2YXIgZj10aGlzLl90ZXh0UmVuZGVyZXI7dmFyIGM9Zi5nZXRXaWR0aChkKTt2YXIgZT1mLmdldEhlaWdodChkKTt2YXIgYj1NYXRoLmFicyhNYXRoLnNpbihmLmFuZ2xlKSplKStNYXRoLmFicyhNYXRoLmNvcyhmLmFuZ2xlKSpjKTtyZXR1cm4gYn19O2EuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIucHJvdG90eXBlLmdldEhlaWdodD1mdW5jdGlvbihkKXtpZih0aGlzLl9lbGVtKXtyZXR1cm4gdGhpcy5fZWxlbS5vdXRlckhlaWdodCh0cnVlKX1lbHNle3ZhciBmPXRoaXMuX3RleHRSZW5kZXJlcjt2YXIgYz1mLmdldFdpZHRoKGQpO3ZhciBlPWYuZ2V0SGVpZ2h0KGQpO3ZhciBiPU1hdGguYWJzKE1hdGguY29zKGYuYW5nbGUpKmUpK01hdGguYWJzKE1hdGguc2luKGYuYW5nbGUpKmMpO3JldHVybiBifX07YS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUuZ2V0VG9wPWZ1bmN0aW9uKGIpe2lmKHRoaXMuX2VsZW0pe3JldHVybiB0aGlzLl9lbGVtLnBvc2l0aW9uKCkudG9wfWVsc2V7cmV0dXJuIG51bGx9fTthLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyLnByb3RvdHlwZS5nZXRBbmdsZVJhZD1mdW5jdGlvbigpe3ZhciBiPXRoaXMuYW5nbGUqTWF0aC5QSS8xODA7cmV0dXJuIGJ9O2EuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIucHJvdG90eXBlLnNldFRpY2s9ZnVuY3Rpb24oYixkLGMpe3RoaXMudmFsdWU9YjtpZihjKXt0aGlzLmlzTWlub3JUaWNrPXRydWV9cmV0dXJuIHRoaXN9O2EuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oYyxmKXtpZighdGhpcy5sYWJlbCl7dGhpcy5sYWJlbD10aGlzLnByZWZpeCt0aGlzLmZvcm1hdHRlcih0aGlzLmZvcm1hdFN0cmluZyx0aGlzLnZhbHVlKX1pZih0aGlzLl9lbGVtKXtpZihhLmpxcGxvdC51c2VfZXhjYW52YXMmJndpbmRvdy5HX3ZtbENhbnZhc01hbmFnZXIudW5pbml0RWxlbWVudCE9PXVuZGVmaW5lZCl7d2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci51bmluaXRFbGVtZW50KHRoaXMuX2VsZW0uZ2V0KDApKX10aGlzLl9lbGVtLmVtcHR5Rm9yY2UoKTt0aGlzLl9lbGVtPW51bGx9dmFyIGU9Zi5jYW52YXNNYW5hZ2VyLmdldENhbnZhcygpO3RoaXMuX3RleHRSZW5kZXJlci5zZXRUZXh0KHRoaXMubGFiZWwsYyk7dmFyIGI9dGhpcy5nZXRXaWR0aChjKTt2YXIgZD10aGlzLmdldEhlaWdodChjKTtlLndpZHRoPWI7ZS5oZWlnaHQ9ZDtlLnN0eWxlLndpZHRoPWI7ZS5zdHlsZS5oZWlnaHQ9ZDtlLnN0eWxlLnRleHRBbGlnbj0ibGVmdCI7ZS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiO2U9Zi5jYW52YXNNYW5hZ2VyLmluaXRDYW52YXMoZSk7dGhpcy5fZWxlbT1hKGUpO3RoaXMuX2VsZW0uY3NzKHRoaXMuX3N0eWxlcyk7dGhpcy5fZWxlbS5hZGRDbGFzcygianFwbG90LSIrdGhpcy5heGlzKyItdGljayIpO2U9bnVsbDtyZXR1cm4gdGhpcy5fZWxlbX07YS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUucGFjaz1mdW5jdGlvbigpe3RoaXMuX3RleHRSZW5kZXJlci5kcmF3KHRoaXMuX2VsZW0uZ2V0KDApLmdldENvbnRleHQoIjJkIiksdGhpcy5sYWJlbCl9fSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.canvasOverlay.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgdmFyIG9iakNvdW50ZXIgPSAwOwogICAgLy8gY2xhc3M6ICQuanFwbG90LkNhbnZhc092ZXJsYXkKICAgICQuanFwbG90LkNhbnZhc092ZXJsYXkgPSBmdW5jdGlvbihvcHRzKXsKICAgICAgICB2YXIgb3B0aW9ucyA9IG9wdHMgfHwge307CiAgICAgICAgdGhpcy5vcHRpb25zID0gewogICAgICAgICAgICBzaG93OiAkLmpxcGxvdC5jb25maWcuZW5hYmxlUGx1Z2lucywKICAgICAgICAgICAgZGVmZXJEcmF3OiBmYWxzZQogICAgICAgIH07CiAgICAgICAgLy8gcHJvcDogb2JqZWN0cwogICAgICAgIHRoaXMub2JqZWN0cyA9IFtdOwogICAgICAgIHRoaXMub2JqZWN0TmFtZXMgPSBbXTsKICAgICAgICB0aGlzLmNhbnZhcyA9IG51bGw7CiAgICAgICAgdGhpcy5tYXJrZXJSZW5kZXJlciA9IG5ldyAkLmpxcGxvdC5NYXJrZXJSZW5kZXJlcih7c3R5bGU6J2xpbmUnfSk7CiAgICAgICAgdGhpcy5tYXJrZXJSZW5kZXJlci5pbml0KCk7CiAgICAgICAgdGhpcy5oaWdobGlnaHRPYmplY3RJbmRleCA9IG51bGw7CiAgICAgICAgaWYgKG9wdGlvbnMub2JqZWN0cykgewogICAgICAgICAgICB2YXIgb2JqcyA9IG9wdGlvbnMub2JqZWN0cywKICAgICAgICAgICAgICAgIG9iajsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPG9ianMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIG9iaiA9IG9ianNbaV07CiAgICAgICAgICAgICAgICBmb3IgKHZhciBuIGluIG9iaikgewogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobikgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdsaW5lJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkTGluZShvYmpbbl0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2hvcml6b250YWxMaW5lJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkSG9yaXpvbnRhbExpbmUob2JqW25dKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXNoZWRIb3Jpem9udGFsTGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZERhc2hlZEhvcml6b250YWxMaW5lKG9ialtuXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndmVydGljYWxMaW5lJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkVmVydGljYWxMaW5lKG9ialtuXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZGFzaGVkVmVydGljYWxMaW5lJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRGFzaGVkVmVydGljYWxMaW5lKG9ialtuXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVjdGFuZ2xlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkUmVjdGFuZ2xlKG9ialtuXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gICAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLm9wdGlvbnMsIG9wdGlvbnMpOwogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYSBwbG90IG9iamVjdAogICAgJC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wb3N0UGxvdEluaXQgPSBmdW5jdGlvbiAodGFyZ2V0LCBkYXRhLCBvcHRzKSB7CiAgICAgICAgdmFyIG9wdGlvbnMgPSBvcHRzIHx8IHt9OwogICAgICAgIC8vIGFkZCBhIGNhbnZhc092ZXJsYXkgYXR0cmlidXRlIHRvIHRoZSBwbG90CiAgICAgICAgdGhpcy5wbHVnaW5zLmNhbnZhc092ZXJsYXkgPSBuZXcgJC5qcXBsb3QuQ2FudmFzT3ZlcmxheShvcHRpb25zLmNhbnZhc092ZXJsYXkpOyAgICAgCiAgICB9OwoKCiAgICBmdW5jdGlvbiBMaW5lQmFzZSgpIHsKICAgICAgICB0aGlzLnVpZCA9IG51bGw7CiAgICAgICAgdGhpcy50eXBlID0gbnVsbDsKICAgICAgICB0aGlzLmdyaWRTdGFydCA9IG51bGw7CiAgICAgICAgdGhpcy5ncmlkU3RvcCA9IG51bGw7CiAgICAgICAgdGhpcy50b29sdGlwV2lkdGhGYWN0b3IgPSAwOwogICAgICAgIHRoaXMub3B0aW9ucyA9IHsgICAgICAgICAgIAogICAgICAgICAgICAvLyBwcm9wOiBuYW1lCiAgICAgICAgICAgIC8vIE9wdGlvbmFsIG5hbWUgZm9yIHRoZSBvdmVybGF5IG9iamVjdC4KICAgICAgICAgICAgLy8gQ2FuIGJlIGxhdGVyIHVzZWQgdG8gcmV0cmlldmUgdGhlIG9iamVjdCBieSBuYW1lLgogICAgICAgICAgICBuYW1lOiBudWxsLAogICAgICAgICAgICAvLyBwcm9wOiBzaG93CiAgICAgICAgICAgIC8vIHRydWUgdG8gc2hvdyAoZHJhdyksIGZhbHNlIHRvIG5vdCBkcmF3LgogICAgICAgICAgICBzaG93OiB0cnVlLAogICAgICAgICAgICAvLyBwcm9wOiBsaW5lV2lkdGgKICAgICAgICAgICAgLy8gV2lkdGggb2YgdGhlIGxpbmUuCiAgICAgICAgICAgIGxpbmVXaWR0aDogMiwKICAgICAgICAgICAgLy8gcHJvcDogbGluZUNhcAogICAgICAgICAgICAvLyBUeXBlIG9mIGVuZGluZyBwbGFjZWQgb24gdGhlIGxpbmUgWydyb3VuZCcsICdidXR0JywgJ3NxdWFyZSddCiAgICAgICAgICAgIGxpbmVDYXA6ICdyb3VuZCcsCiAgICAgICAgICAgIC8vIHByb3A6IGNvbG9yCiAgICAgICAgICAgIC8vIGNvbG9yIG9mIHRoZSBsaW5lCiAgICAgICAgICAgIGNvbG9yOiAnIzY2NjY2NicsCiAgICAgICAgICAgIC8vIHByb3A6IHNoYWRvdwogICAgICAgICAgICAvLyB3aGV0aGVyIG9yIG5vdCB0byBkcmF3IGEgc2hhZG93IG9uIHRoZSBsaW5lCiAgICAgICAgICAgIHNoYWRvdzogdHJ1ZSwKICAgICAgICAgICAgLy8gcHJvcDogc2hhZG93QW5nbGUKICAgICAgICAgICAgLy8gU2hhZG93IGFuZ2xlIGluIGRlZ3JlZXMKICAgICAgICAgICAgc2hhZG93QW5nbGU6IDQ1LAogICAgICAgICAgICAvLyBwcm9wOiBzaGFkb3dPZmZzZXQKICAgICAgICAgICAgLy8gU2hhZG93IG9mZnNldCBmcm9tIGxpbmUgaW4gcGl4ZWxzCiAgICAgICAgICAgIHNoYWRvd09mZnNldDogMSwKICAgICAgICAgICAgLy8gcHJvcDogc2hhZG93RGVwdGgKICAgICAgICAgICAgLy8gTnVtYmVyIG9mIHRpbWVzIHNoYWRvdyBpcyBzdHJva2VkLCBlYWNoIHN0cm9rZSBvZmZzZXQgc2hhZG93T2Zmc2V0IGZyb20gdGhlIGxhc3QuCiAgICAgICAgICAgIHNoYWRvd0RlcHRoOiAzLAogICAgICAgICAgICAvLyBwcm9wOiBzaGFkb3dBbHBoYQogICAgICAgICAgICAvLyBBbHBoYSBjaGFubmVsIHRyYW5zcGFyZW5jeSBvZiBzaGFkb3cuICAwID0gdHJhbnNwYXJlbnQuCiAgICAgICAgICAgIHNoYWRvd0FscGhhOiAnMC4wNycsCiAgICAgICAgICAgIC8vIHByb3A6IHhheGlzCiAgICAgICAgICAgIC8vIFggYXhpcyB0byB1c2UgZm9yIHBvc2l0aW9uaW5nL3NjYWxpbmcgdGhlIGxpbmUuCiAgICAgICAgICAgIHhheGlzOiAneGF4aXMnLAogICAgICAgICAgICAvLyBwcm9wOiB5YXhpcwogICAgICAgICAgICAvLyBZIGF4aXMgdG8gdXNlIGZvciBwb3NpdGlvbmluZy9zY2FsaW5nIHRoZSBsaW5lLgogICAgICAgICAgICB5YXhpczogJ3lheGlzJywKICAgICAgICAgICAgLy8gcHJvcDogc2hvd1Rvb2x0aXAKICAgICAgICAgICAgLy8gU2hvdyBhIHRvb2x0aXAgd2l0aCBkYXRhIHBvaW50IHZhbHVlcy4KICAgICAgICAgICAgc2hvd1Rvb2x0aXA6IGZhbHNlLAogICAgICAgICAgICAvLyBwcm9wOiBzaG93VG9vbHRpcFByZWNpc2lvbgogICAgICAgICAgICAvLyBDb250cm9scyBob3cgY2xvc2UgdG8gbGluZSBjdXJzb3IgbXVzdCBiZSB0byBzaG93IHRvb2x0aXAuCiAgICAgICAgICAgIC8vIEhpZ2hlciBudW1iZXIgPSBjbG9zZXIgdG8gbGluZSwgbG93ZXIgbnVtYmVyID0gZmFydGhlciBmcm9tIGxpbmUuCiAgICAgICAgICAgIC8vIDEuMCA9IGN1cnNvciBtdXN0IGJlIG92ZXIgbGluZS4KICAgICAgICAgICAgc2hvd1Rvb2x0aXBQcmVjaXNpb246IDAuNiwKICAgICAgICAgICAgLy8gcHJvcDogdG9vbHRpcExvY2F0aW9uCiAgICAgICAgICAgIC8vIFdoZXJlIHRvIHBvc2l0aW9uIHRvb2x0aXAsICduJywgJ25lJywgJ2UnLCAnc2UnLCAncycsICdzdycsICd3JywgJ253JwogICAgICAgICAgICB0b29sdGlwTG9jYXRpb246ICdudycsCiAgICAgICAgICAgIC8vIHByb3A6IGZhZGVUb29sdGlwCiAgICAgICAgICAgIC8vIHRydWUgPSBmYWRlIGluL291dCB0b29sdGlwLCBmbGFzZSA9IHNob3cvaGlkZSB0b29sdGlwCiAgICAgICAgICAgIGZhZGVUb29sdGlwOiB0cnVlLAogICAgICAgICAgICAvLyBwcm9wOiB0b29sdGlwRmFkZVNwZWVkCiAgICAgICAgICAgIC8vICdzbG93JywgJ2RlZicsICdmYXN0Jywgb3IgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcy4KICAgICAgICAgICAgdG9vbHRpcEZhZGVTcGVlZDogImZhc3QiLAogICAgICAgICAgICAvLyBwcm9wOiB0b29sdGlwT2Zmc2V0CiAgICAgICAgICAgIC8vIFBpeGVsIG9mZnNldCBvZiB0b29sdGlwIGZyb20gdGhlIGhpZ2hsaWdodC4KICAgICAgICAgICAgdG9vbHRpcE9mZnNldDogNCwKICAgICAgICAgICAgLy8gcHJvcDogdG9vbHRpcEZvcm1hdFN0cmluZwogICAgICAgICAgICAvLyBGb3JtYXQgc3RyaW5nIHBhc3NlZCB0aGUgeCBhbmQgeSB2YWx1ZXMgb2YgdGhlIGN1cnNvciBvbiB0aGUgbGluZS4KICAgICAgICAgICAgLy8gZS5nLiwgJ0RvZ3M6ICUuMmYsIENhdHM6ICVkJy4KICAgICAgICAgICAgdG9vbHRpcEZvcm1hdFN0cmluZzogJyVkLCAlZCcKICAgICAgICB9OwogICAgfQogICAgCiAgICAKICAgIGZ1bmN0aW9uIFJlY3RhbmdsZShvcHRpb25zKSB7CiAgICAgICAgTGluZUJhc2UuY2FsbCh0aGlzKTsKICAgICAgICB0aGlzLnR5cGUgPSAncmVjdGFuZ2xlJzsKICAgICAgICB2YXIgb3B0cyA9IHsKICAgICAgICAgLy8gcHJvcDogeG1pbgogICAgICAgICAgICAgICAgLy8geCB2YWx1ZSBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLCBudWxsIHRvIHNjYWxlIHRvIGF4aXMgbWluLgogICAgICAgICAgICAgICAgeG1pbjogbnVsbCwKICAgICAgICAgICAgICAgIC8vIHByb3A6IHhtYXgKICAgICAgICAgICAgICAgIC8vIHggdmFsdWUgZm9yIHRoZSBlbmQgb2YgdGhlIGxpbmUsIG51bGwgdG8gc2NhbGUgdG8gYXhpcyBtYXguCiAgICAgICAgICAgICAgICB4bWF4OiBudWxsLAogICAgICAgICAgICAgICAgLy8gcHJvcCB4T2Zmc2V0CiAgICAgICAgICAgICAgICAvLyBvZmZzZXQgZW5kcyBvZiB0aGUgbGluZSBpbnNpZGUgdGhlIGdyaWQuIE51bWJlcgogICAgICAgICAgICAgICAgeE9mZnNldDogJzZweCcsIC8vIG51bWJlciBvciBzdHJpbmcuIE51bWJlciBpbnRlcnByZXRlZCBhcyB1bml0cywgc3RyaW5nIGFzIHBpeGVscy4KICAgICAgICAgICAgICAgIHhtaW5PZmZzZXQ6IG51bGwsCiAgICAgICAgICAgICAgICB4bWF4T2Zmc2V0OiBudWxsLAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB5bWluOiBudWxsLAogICAgICAgICAgICAgICAgeW1heDogbnVsbCwKICAgICAgICAgICAgICAgIHlPZmZzZXQ6ICc2cHgnLCAvLyBudW1iZXIgb3Igc3RyaW5nLiBOdW1iZXIgaW50ZXJwcmV0ZWQgYXMgdW5pdHMsIHN0cmluZyBhcyBwaXhlbHMuCiAgICAgICAgICAgICAgICB5bWluT2Zmc2V0OiBudWxsLAogICAgICAgICAgICAgICAgeW1heE9mZnNldDogbnVsbAogICAgICAgIH07CiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcy5vcHRpb25zLCBvcHRzLCBvcHRpb25zKTsKCiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbiA8IDAuMDEpIHsKICAgICAgICAgICAgdGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uID0gMC4wMTsKICAgICAgICB9CiAgICB9CgogICAgUmVjdGFuZ2xlLnByb3RvdHlwZSA9IG5ldyBMaW5lQmFzZSgpOwogICAgUmVjdGFuZ2xlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFJlY3RhbmdsZTsKCiAgICAKICAgIC8qKgogICAgICogQ2xhc3M6IExpbmUKICAgICAqIEEgc3RyYWlnaHQgbGluZS4KICAgICAqLwogICAgZnVuY3Rpb24gTGluZShvcHRpb25zKSB7CiAgICAgICAgTGluZUJhc2UuY2FsbCh0aGlzKTsKICAgICAgICB0aGlzLnR5cGUgPSAnbGluZSc7CiAgICAgICAgdmFyIG9wdHMgPSB7CiAgICAgICAgICAgIC8vIHByb3A6IHN0YXJ0CiAgICAgICAgICAgIC8vIFt4LCB5XSBjb29yZGluYXRlcyBmb3IgdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLgogICAgICAgICAgICBzdGFydDogW10sCiAgICAgICAgICAgIC8vIHByb3A6IHN0b3AKICAgICAgICAgICAgLy8gW3gsIHldIGNvb3JkaW5hdGVzIGZvciB0aGUgZW5kIG9mIHRoZSBsaW5lLgogICAgICAgICAgICBzdG9wOiBbXQogICAgICAgIH07CiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcy5vcHRpb25zLCBvcHRzLCBvcHRpb25zKTsKCiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbiA8IDAuMDEpIHsKICAgICAgICAgICAgdGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uID0gMC4wMTsKICAgICAgICB9CiAgICB9CgogICAgTGluZS5wcm90b3R5cGUgPSBuZXcgTGluZUJhc2UoKTsKICAgIExpbmUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gTGluZTsKCgogICAgLyoqCiAgICAgKiBDbGFzczogSG9yaXpvbnRhbExpbmUKICAgICAqIEEgc3RyYWlnaHQgaG9yaXpvbnRhbCBsaW5lLgogICAgICovCiAgICBmdW5jdGlvbiBIb3Jpem9udGFsTGluZShvcHRpb25zKSB7CiAgICAgICAgTGluZUJhc2UuY2FsbCh0aGlzKTsKICAgICAgICB0aGlzLnR5cGUgPSAnaG9yaXpvbnRhbExpbmUnOwogICAgICAgIHZhciBvcHRzID0gewogICAgICAgICAgICAvLyBwcm9wOiB5CiAgICAgICAgICAgIC8vIHkgdmFsdWUgdG8gcG9zaXRpb24gdGhlIGxpbmUKICAgICAgICAgICAgeTogbnVsbCwKICAgICAgICAgICAgLy8gcHJvcDogeG1pbgogICAgICAgICAgICAvLyB4IHZhbHVlIGZvciB0aGUgc3RhcnQgb2YgdGhlIGxpbmUsIG51bGwgdG8gc2NhbGUgdG8gYXhpcyBtaW4uCiAgICAgICAgICAgIHhtaW46IG51bGwsCiAgICAgICAgICAgIC8vIHByb3A6IHhtYXgKICAgICAgICAgICAgLy8geCB2YWx1ZSBmb3IgdGhlIGVuZCBvZiB0aGUgbGluZSwgbnVsbCB0byBzY2FsZSB0byBheGlzIG1heC4KICAgICAgICAgICAgeG1heDogbnVsbCwKICAgICAgICAgICAgLy8gcHJvcCB4T2Zmc2V0CiAgICAgICAgICAgIC8vIG9mZnNldCBlbmRzIG9mIHRoZSBsaW5lIGluc2lkZSB0aGUgZ3JpZC4gIE51bWJlciAKICAgICAgICAgICAgeE9mZnNldDogJzZweCcsIC8vIG51bWJlciBvciBzdHJpbmcuICBOdW1iZXIgaW50ZXJwcmV0ZWQgYXMgdW5pdHMsIHN0cmluZyBhcyBwaXhlbHMuCiAgICAgICAgICAgIHhtaW5PZmZzZXQ6IG51bGwsCiAgICAgICAgICAgIHhtYXhPZmZzZXQ6IG51bGwKICAgICAgICB9OwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMub3B0aW9ucywgb3B0cywgb3B0aW9ucyk7CgogICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb24gPCAwLjAxKSB7CiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbiA9IDAuMDE7CiAgICAgICAgfQogICAgfQoKICAgIEhvcml6b250YWxMaW5lLnByb3RvdHlwZSA9IG5ldyBMaW5lQmFzZSgpOwogICAgSG9yaXpvbnRhbExpbmUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gSG9yaXpvbnRhbExpbmU7CiAgICAKCiAgICAvKioKICAgICAqIENsYXNzOiBEYXNoZWRIb3Jpem9udGFsTGluZQogICAgICogQSBzdHJhaWdodCBkYXNoZWQgaG9yaXpvbnRhbCBsaW5lLgogICAgICovCiAgICBmdW5jdGlvbiBEYXNoZWRIb3Jpem9udGFsTGluZShvcHRpb25zKSB7CiAgICAgICAgTGluZUJhc2UuY2FsbCh0aGlzKTsKICAgICAgICB0aGlzLnR5cGUgPSAnZGFzaGVkSG9yaXpvbnRhbExpbmUnOwogICAgICAgIHZhciBvcHRzID0gewogICAgICAgICAgICB5OiBudWxsLAogICAgICAgICAgICB4bWluOiBudWxsLAogICAgICAgICAgICB4bWF4OiBudWxsLAogICAgICAgICAgICB4T2Zmc2V0OiAnNnB4JywgLy8gbnVtYmVyIG9yIHN0cmluZy4gIE51bWJlciBpbnRlcnByZXRlZCBhcyB1bml0cywgc3RyaW5nIGFzIHBpeGVscy4KICAgICAgICAgICAgeG1pbk9mZnNldDogbnVsbCwKICAgICAgICAgICAgeG1heE9mZnNldDogbnVsbCwKICAgICAgICAgICAgLy8gcHJvcDogZGFzaFBhdHRlcm4KICAgICAgICAgICAgLy8gQXJyYXkgb2YgbGluZSwgc3BhY2Ugc2V0dGluZ3MgaW4gcGl4ZWxzLgogICAgICAgICAgICAvLyBEZWZhdWx0IGlzIDggcGl4ZWwgb2YgbGluZSwgOCBwaXhlbCBvZiBzcGFjZS4KICAgICAgICAgICAgLy8gTm90ZSwgbGltaXQgdG8gYSAyIGVsZW1lbnQgYXJyYXkgYi9jIG9mIGJ1ZyB3aXRoIGhpZ2hlciBvcmRlciBhcnJheXMuCiAgICAgICAgICAgIGRhc2hQYXR0ZXJuOiBbOCw4XQogICAgICAgIH07CiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcy5vcHRpb25zLCBvcHRzLCBvcHRpb25zKTsKCiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbiA8IDAuMDEpIHsKICAgICAgICAgICAgdGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uID0gMC4wMTsKICAgICAgICB9CiAgICB9CgogICAgRGFzaGVkSG9yaXpvbnRhbExpbmUucHJvdG90eXBlID0gbmV3IExpbmVCYXNlKCk7CiAgICBEYXNoZWRIb3Jpem9udGFsTGluZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBEYXNoZWRIb3Jpem9udGFsTGluZTsKICAgIAoKICAgIC8qKgogICAgICogQ2xhc3M6IFZlcnRpY2FsTGluZQogICAgICogQSBzdHJhaWdodCB2ZXJ0aWNhbCBsaW5lLgogICAgICovCiAgICBmdW5jdGlvbiBWZXJ0aWNhbExpbmUob3B0aW9ucykgewogICAgICAgIExpbmVCYXNlLmNhbGwodGhpcyk7CiAgICAgICAgdGhpcy50eXBlID0gJ3ZlcnRpY2FsTGluZSc7CiAgICAgICAgdmFyIG9wdHMgPSB7CiAgICAgICAgICAgIHg6IG51bGwsCiAgICAgICAgICAgIHltaW46IG51bGwsCiAgICAgICAgICAgIHltYXg6IG51bGwsCiAgICAgICAgICAgIHlPZmZzZXQ6ICc2cHgnLCAvLyBudW1iZXIgb3Igc3RyaW5nLiAgTnVtYmVyIGludGVycHJldGVkIGFzIHVuaXRzLCBzdHJpbmcgYXMgcGl4ZWxzLgogICAgICAgICAgICB5bWluT2Zmc2V0OiBudWxsLAogICAgICAgICAgICB5bWF4T2Zmc2V0OiBudWxsCiAgICAgICAgfTsKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLm9wdGlvbnMsIG9wdHMsIG9wdGlvbnMpOwoKICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uIDwgMC4wMSkgewogICAgICAgICAgICB0aGlzLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb24gPSAwLjAxOwogICAgICAgIH0KICAgIH0KCiAgICBWZXJ0aWNhbExpbmUucHJvdG90eXBlID0gbmV3IExpbmVCYXNlKCk7CiAgICBWZXJ0aWNhbExpbmUucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gVmVydGljYWxMaW5lOwogICAgCgogICAgLyoqCiAgICAgKiBDbGFzczogRGFzaGVkVmVydGljYWxMaW5lCiAgICAgKiBBIHN0cmFpZ2h0IGRhc2hlZCB2ZXJ0aWNhbCBsaW5lLgogICAgICovCiAgICBmdW5jdGlvbiBEYXNoZWRWZXJ0aWNhbExpbmUob3B0aW9ucykgewogICAgICAgIExpbmVCYXNlLmNhbGwodGhpcyk7CiAgICAgICAgdGhpcy50eXBlID0gJ2Rhc2hlZFZlcnRpY2FsTGluZSc7CiAgICAgICAgdGhpcy5zdGFydCA9IG51bGw7CiAgICAgICAgdGhpcy5zdG9wID0gbnVsbDsKICAgICAgICB2YXIgb3B0cyA9IHsKICAgICAgICAgICAgeDogbnVsbCwKICAgICAgICAgICAgeW1pbjogbnVsbCwKICAgICAgICAgICAgeW1heDogbnVsbCwKICAgICAgICAgICAgeU9mZnNldDogJzZweCcsIC8vIG51bWJlciBvciBzdHJpbmcuICBOdW1iZXIgaW50ZXJwcmV0ZWQgYXMgdW5pdHMsIHN0cmluZyBhcyBwaXhlbHMuCiAgICAgICAgICAgIHltaW5PZmZzZXQ6IG51bGwsCiAgICAgICAgICAgIHltYXhPZmZzZXQ6IG51bGwsCiAgICAgICAgICAgIC8vIHByb3A6IGRhc2hQYXR0ZXJuCiAgICAgICAgICAgIC8vIEFycmF5IG9mIGxpbmUsIHNwYWNlIHNldHRpbmdzIGluIHBpeGVscy4KICAgICAgICAgICAgLy8gRGVmYXVsdCBpcyA4IHBpeGVsIG9mIGxpbmUsIDggcGl4ZWwgb2Ygc3BhY2UuCiAgICAgICAgICAgIC8vIE5vdGUsIGxpbWl0IHRvIGEgMiBlbGVtZW50IGFycmF5IGIvYyBvZiBidWcgd2l0aCBoaWdoZXIgb3JkZXIgYXJyYXlzLgogICAgICAgICAgICBkYXNoUGF0dGVybjogWzgsOF0KICAgICAgICB9OwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMub3B0aW9ucywgb3B0cywgb3B0aW9ucyk7CgogICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb24gPCAwLjAxKSB7CiAgICAgICAgICAgIHRoaXMub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbiA9IDAuMDE7CiAgICAgICAgfQogICAgfQoKICAgIERhc2hlZFZlcnRpY2FsTGluZS5wcm90b3R5cGUgPSBuZXcgTGluZUJhc2UoKTsKICAgIERhc2hlZFZlcnRpY2FsTGluZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBEYXNoZWRWZXJ0aWNhbExpbmU7CiAgICAKICAgICQuanFwbG90LkNhbnZhc092ZXJsYXkucHJvdG90eXBlLmFkZExpbmUgPSBmdW5jdGlvbihvcHRzKSB7CiAgICAgICAgdmFyIGxpbmUgPSBuZXcgTGluZShvcHRzKTsKICAgICAgICBsaW5lLnVpZCA9IG9iakNvdW50ZXIrKzsKICAgICAgICB0aGlzLm9iamVjdHMucHVzaChsaW5lKTsKICAgICAgICB0aGlzLm9iamVjdE5hbWVzLnB1c2gobGluZS5vcHRpb25zLm5hbWUpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuYWRkSG9yaXpvbnRhbExpbmUgPSBmdW5jdGlvbihvcHRzKSB7CiAgICAgICAgdmFyIGxpbmUgPSBuZXcgSG9yaXpvbnRhbExpbmUob3B0cyk7CiAgICAgICAgbGluZS51aWQgPSBvYmpDb3VudGVyKys7CiAgICAgICAgdGhpcy5vYmplY3RzLnB1c2gobGluZSk7CiAgICAgICAgdGhpcy5vYmplY3ROYW1lcy5wdXNoKGxpbmUub3B0aW9ucy5uYW1lKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkNhbnZhc092ZXJsYXkucHJvdG90eXBlLmFkZERhc2hlZEhvcml6b250YWxMaW5lID0gZnVuY3Rpb24ob3B0cykgewogICAgICAgIHZhciBsaW5lID0gbmV3IERhc2hlZEhvcml6b250YWxMaW5lKG9wdHMpOwogICAgICAgIGxpbmUudWlkID0gb2JqQ291bnRlcisrOwogICAgICAgIHRoaXMub2JqZWN0cy5wdXNoKGxpbmUpOwogICAgICAgIHRoaXMub2JqZWN0TmFtZXMucHVzaChsaW5lLm9wdGlvbnMubmFtZSk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNPdmVybGF5LnByb3RvdHlwZS5hZGRWZXJ0aWNhbExpbmUgPSBmdW5jdGlvbihvcHRzKSB7CiAgICAgICAgdmFyIGxpbmUgPSBuZXcgVmVydGljYWxMaW5lKG9wdHMpOwogICAgICAgIGxpbmUudWlkID0gb2JqQ291bnRlcisrOwogICAgICAgIHRoaXMub2JqZWN0cy5wdXNoKGxpbmUpOwogICAgICAgIHRoaXMub2JqZWN0TmFtZXMucHVzaChsaW5lLm9wdGlvbnMubmFtZSk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNPdmVybGF5LnByb3RvdHlwZS5hZGREYXNoZWRWZXJ0aWNhbExpbmUgPSBmdW5jdGlvbihvcHRzKSB7CiAgICAgICAgdmFyIGxpbmUgPSBuZXcgRGFzaGVkVmVydGljYWxMaW5lKG9wdHMpOwogICAgICAgIGxpbmUudWlkID0gb2JqQ291bnRlcisrOwogICAgICAgIHRoaXMub2JqZWN0cy5wdXNoKGxpbmUpOwogICAgICAgIHRoaXMub2JqZWN0TmFtZXMucHVzaChsaW5lLm9wdGlvbnMubmFtZSk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNPdmVybGF5LnByb3RvdHlwZS5hZGRSZWN0YW5nbGUgPSBmdW5jdGlvbihvcHRzKSB7CiAgICAgICAgdmFyIGxpbmUgPSBuZXcgUmVjdGFuZ2xlKG9wdHMpOwogICAgICAgIGxpbmUudWlkID0gb2JqQ291bnRlcisrOwogICAgICAgIHRoaXMub2JqZWN0cy5wdXNoKGxpbmUpOwogICAgICAgIHRoaXMub2JqZWN0TmFtZXMucHVzaChsaW5lLm9wdGlvbnMubmFtZSk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNPdmVybGF5LnByb3RvdHlwZS5yZW1vdmVPYmplY3QgPSBmdW5jdGlvbihpZHgpIHsKICAgICAgICAvLyBjaGVjayBpZiBpbnRlZ2VyLCByZW1vdmUgYnkgaW5kZXgKICAgICAgICBpZiAoJC50eXBlKGlkeCkgPT0gJ251bWJlcicpIHsKICAgICAgICAgICAgdGhpcy5vYmplY3RzLnNwbGljZShpZHgsIDEpOwogICAgICAgICAgICB0aGlzLm9iamVjdE5hbWVzLnNwbGljZShpZHgsIDEpOwogICAgICAgIH0KICAgICAgICAvLyBpZiBzdHJpbmcsIHJlbW92ZSBieSBuYW1lCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHZhciBpZCA9ICQuaW5BcnJheShpZHgsIHRoaXMub2JqZWN0TmFtZXMpOwogICAgICAgICAgICBpZiAoaWQgIT0gLTEpIHsKICAgICAgICAgICAgICAgIHRoaXMub2JqZWN0cy5zcGxpY2UoaWQsIDEpOwogICAgICAgICAgICAgICAgdGhpcy5vYmplY3ROYW1lcy5zcGxpY2UoaWQsIDEpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuZ2V0T2JqZWN0ID0gZnVuY3Rpb24oaWR4KSB7CiAgICAgICAgLy8gY2hlY2sgaWYgaW50ZWdlciwgcmVtb3ZlIGJ5IGluZGV4CiAgICAgICAgaWYgKCQudHlwZShpZHgpID09ICdudW1iZXInKSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLm9iamVjdHNbaWR4XTsKICAgICAgICB9CiAgICAgICAgLy8gaWYgc3RyaW5nLCByZW1vdmUgYnkgbmFtZQogICAgICAgIGVsc2UgewogICAgICAgICAgICB2YXIgaWQgPSAkLmluQXJyYXkoaWR4LCB0aGlzLm9iamVjdE5hbWVzKTsKICAgICAgICAgICAgaWYgKGlkICE9IC0xKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5vYmplY3RzW2lkXTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CiAgICAKICAgIC8vIFNldCBnZXQgYXMgYWxpYXMgZm9yIGdldE9iamVjdC4KICAgICQuanFwbG90LkNhbnZhc092ZXJsYXkucHJvdG90eXBlLmdldCA9ICQuanFwbG90LkNhbnZhc092ZXJsYXkucHJvdG90eXBlLmdldE9iamVjdDsKICAgIAogICAgJC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbihwbG90KSB7CiAgICAgICAgdGhpcy5jYW52YXMuX2N0eC5jbGVhclJlY3QoMCwwLHRoaXMuY2FudmFzLmdldFdpZHRoKCksIHRoaXMuY2FudmFzLmdldEhlaWdodCgpKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkNhbnZhc092ZXJsYXkucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihwbG90KSB7CiAgICAgICAgdmFyIG9iaiwgCiAgICAgICAgICAgIG9ianMgPSB0aGlzLm9iamVjdHMsCiAgICAgICAgICAgIG1yID0gdGhpcy5tYXJrZXJSZW5kZXJlciwKICAgICAgICAgICAgc3RhcnQsCiAgICAgICAgICAgIHN0b3A7CiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zaG93KSB7CiAgICAgICAgICAgIHRoaXMuY2FudmFzLl9jdHguY2xlYXJSZWN0KDAsMCx0aGlzLmNhbnZhcy5nZXRXaWR0aCgpLCB0aGlzLmNhbnZhcy5nZXRIZWlnaHQoKSk7CiAgICAgICAgICAgIGZvciAodmFyIGs9MDsgazxvYmpzLmxlbmd0aDsgaysrKSB7CiAgICAgICAgICAgICAgICBvYmogPSBvYmpzW2tdOwogICAgICAgICAgICAgICAgdmFyIG9wdHMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgb2JqLm9wdGlvbnMpOwogICAgICAgICAgICAgICAgaWYgKG9iai5vcHRpb25zLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICAvLyBzdHlsZSBhbmQgc2hhZG93IHByb3BlcnRpZXMgc2hvdWxkIGJlIHNldCBiZWZvcmUKICAgICAgICAgICAgICAgICAgICAvLyBldmVyeSBkcmF3IG9mIG1hcmtlciByZW5kZXJlci4KICAgICAgICAgICAgICAgICAgICBtci5zaGFkb3cgPSBvYmoub3B0aW9ucy5zaGFkb3c7CiAgICAgICAgICAgICAgICAgICAgb2JqLnRvb2x0aXBXaWR0aEZhY3RvciA9IG9iai5vcHRpb25zLmxpbmVXaWR0aCAvIG9iai5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uOwogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAob2JqLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHlsZSBhbmQgc2hhZG93IHByb3BlcnRpZXMgc2hvdWxkIGJlIHNldCBiZWZvcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV2ZXJ5IGRyYXcgb2YgbWFya2VyIHJlbmRlcmVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXIuc3R5bGUgPSAnbGluZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmNsb3NlUGF0aCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBbcGxvdC5heGVzW29iai5vcHRpb25zLnhheGlzXS5zZXJpZXNfdTJwKG9iai5vcHRpb25zLnN0YXJ0WzBdKSwgcGxvdC5heGVzW29iai5vcHRpb25zLnlheGlzXS5zZXJpZXNfdTJwKG9iai5vcHRpb25zLnN0YXJ0WzFdKV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wID0gW3Bsb3QuYXhlc1tvYmoub3B0aW9ucy54YXhpc10uc2VyaWVzX3UycChvYmoub3B0aW9ucy5zdG9wWzBdKSwgcGxvdC5heGVzW29iai5vcHRpb25zLnlheGlzXS5zZXJpZXNfdTJwKG9iai5vcHRpb25zLnN0b3BbMV0pXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5ncmlkU3RhcnQgPSBzdGFydDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5ncmlkU3RvcCA9IHN0b3A7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtci5kcmF3KHN0YXJ0LCBzdG9wLCB0aGlzLmNhbnZhcy5fY3R4LCBvcHRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdob3Jpem9udGFsTGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0eWxlIGFuZCBzaGFkb3cgcHJvcGVydGllcyBzaG91bGQgYmUgc2V0IGJlZm9yZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXZlcnkgZHJhdyBvZiBtYXJrZXIgcmVuZGVyZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm9wdGlvbnMueSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXIuc3R5bGUgPSAnbGluZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0cy5jbG9zZVBhdGggPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeGF4aXMgPSBwbG90LmF4ZXNbb2JqLm9wdGlvbnMueGF4aXNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gcGxvdC5heGVzW29iai5vcHRpb25zLnlheGlzXS5zZXJpZXNfdTJwKG9iai5vcHRpb25zLnkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWlub2ZmID0gb2JqLm9wdGlvbnMueG1pbk9mZnNldCB8fCBvYmoub3B0aW9ucy54T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWF4b2ZmID0gb2JqLm9wdGlvbnMueG1heE9mZnNldCB8fCBvYmoub3B0aW9ucy54T2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoub3B0aW9ucy54bWluICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0geGF4aXMuc2VyaWVzX3UycChvYmoub3B0aW9ucy54bWluKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoeG1pbm9mZiAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLnR5cGUoeG1pbm9mZikgPT0gIm51bWJlciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdGFydCA9IHhheGlzLnNlcmllc191MnAoeGF4aXMubWluICsgeG1pbm9mZik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJC50eXBlKHhtaW5vZmYpID09ICJzdHJpbmciKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RhcnQgPSB4YXhpcy5zZXJpZXNfdTJwKHhheGlzLm1pbikgKyBwYXJzZUZsb2F0KHhtaW5vZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoub3B0aW9ucy54bWF4ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0b3AgPSB4YXhpcy5zZXJpZXNfdTJwKG9iai5vcHRpb25zLnhtYXgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh4bWF4b2ZmICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQudHlwZSh4bWF4b2ZmKSA9PSAibnVtYmVyIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0b3AgPSB4YXhpcy5zZXJpZXNfdTJwKHhheGlzLm1heCAtIHhtYXhvZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCQudHlwZSh4bWF4b2ZmKSA9PSAic3RyaW5nIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0b3AgPSB4YXhpcy5zZXJpZXNfdTJwKHhheGlzLm1heCkgLSBwYXJzZUZsb2F0KHhtYXhvZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4c3RvcCAhPSBudWxsICYmIHhzdGFydCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5ncmlkU3RhcnQgPSBbeHN0YXJ0LCB5XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLmdyaWRTdG9wID0gW3hzdG9wLCB5XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXIuZHJhdyhbeHN0YXJ0LCB5XSwgW3hzdG9wLCB5XSwgdGhpcy5jYW52YXMuX2N0eCwgb3B0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXNoZWRIb3Jpem9udGFsTGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXNoUGF0ID0gb2JqLm9wdGlvbnMuZGFzaFBhdHRlcm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGFzaFBhdExlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8ZGFzaFBhdC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hQYXRMZW4gKz0gZGFzaFBhdFtpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHlsZSBhbmQgc2hhZG93IHByb3BlcnRpZXMgc2hvdWxkIGJlIHNldCBiZWZvcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV2ZXJ5IGRyYXcgb2YgbWFya2VyIHJlbmRlcmVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5vcHRpb25zLnkgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1yLnN0eWxlID0gJ2xpbmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuY2xvc2VQYXRoID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHhheGlzID0gcGxvdC5heGVzW29iai5vcHRpb25zLnhheGlzXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHBsb3QuYXhlc1tvYmoub3B0aW9ucy55YXhpc10uc2VyaWVzX3UycChvYmoub3B0aW9ucy55KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1pbm9mZiA9IG9iai5vcHRpb25zLnhtaW5PZmZzZXQgfHwgb2JqLm9wdGlvbnMueE9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeG1heG9mZiA9IG9iai5vcHRpb25zLnhtYXhPZmZzZXQgfHwgb2JqLm9wdGlvbnMueE9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm9wdGlvbnMueG1pbiAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdGFydCA9IHhheGlzLnNlcmllc191MnAob2JqLm9wdGlvbnMueG1pbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhtaW5vZmYgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJC50eXBlKHhtaW5vZmYpID09ICJudW1iZXIiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4c3RhcnQgPSB4YXhpcy5zZXJpZXNfdTJwKHhheGlzLm1pbiArIHhtaW5vZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCQudHlwZSh4bWlub2ZmKSA9PSAic3RyaW5nIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0geGF4aXMuc2VyaWVzX3UycCh4YXhpcy5taW4pICsgcGFyc2VGbG9hdCh4bWlub2ZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm9wdGlvbnMueG1heCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdG9wID0geGF4aXMuc2VyaWVzX3UycChvYmoub3B0aW9ucy54bWF4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoeG1heG9mZiAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLnR5cGUoeG1heG9mZikgPT0gIm51bWJlciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdG9wID0geGF4aXMuc2VyaWVzX3UycCh4YXhpcy5tYXggLSB4bWF4b2ZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkLnR5cGUoeG1heG9mZikgPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdG9wID0geGF4aXMuc2VyaWVzX3UycCh4YXhpcy5tYXgpIC0gcGFyc2VGbG9hdCh4bWF4b2ZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoeHN0b3AgIT0gbnVsbCAmJiB4c3RhcnQgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouZ3JpZFN0YXJ0ID0gW3hzdGFydCwgeV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5ncmlkU3RvcCA9IFt4c3RvcCwgeV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBudW1EYXNoID0gTWF0aC5jZWlsKCh4c3RvcCAtIHhzdGFydCkvZGFzaFBhdExlbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiPXhzdGFydCwgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPG51bURhc2g7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPGRhc2hQYXQubGVuZ3RoOyBqKz0yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGIrZGFzaFBhdFtqXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtci5kcmF3KFtiLCB5XSwgW2UsIHldLCB0aGlzLmNhbnZhcy5fY3R4LCBvcHRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiICs9IGRhc2hQYXRbal07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogPCBkYXNoUGF0Lmxlbmd0aC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgKz0gZGFzaFBhdFtqKzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAndmVydGljYWxMaW5lJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3R5bGUgYW5kIHNoYWRvdyBwcm9wZXJ0aWVzIHNob3VsZCBiZSBzZXQgYmVmb3JlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVyeSBkcmF3IG9mIG1hcmtlciByZW5kZXJlci4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvYmoub3B0aW9ucy54ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtci5zdHlsZSA9ICdsaW5lJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmNsb3NlUGF0aCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5YXhpcyA9IHBsb3QuYXhlc1tvYmoub3B0aW9ucy55YXhpc10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPSBwbG90LmF4ZXNbb2JqLm9wdGlvbnMueGF4aXNdLnNlcmllc191MnAob2JqLm9wdGlvbnMueCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHltaW5vZmYgPSBvYmoub3B0aW9ucy55bWluT2Zmc2V0IHx8IG9iai5vcHRpb25zLnlPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHltYXhvZmYgPSBvYmoub3B0aW9ucy55bWF4T2Zmc2V0IHx8IG9iai5vcHRpb25zLnlPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5vcHRpb25zLnltaW4gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RhcnQgPSB5YXhpcy5zZXJpZXNfdTJwKG9iai5vcHRpb25zLnltaW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh5bWlub2ZmICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCQudHlwZSh5bWlub2ZmKSA9PSAibnVtYmVyIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0YXJ0ID0geWF4aXMuc2VyaWVzX3UycCh5YXhpcy5taW4gLSB5bWlub2ZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkLnR5cGUoeW1pbm9mZikgPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdGFydCA9IHlheGlzLnNlcmllc191MnAoeWF4aXMubWluKSAtIHBhcnNlRmxvYXQoeW1pbm9mZik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5vcHRpb25zLnltYXggIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RvcCA9IHlheGlzLnNlcmllc191MnAob2JqLm9wdGlvbnMueW1heCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHltYXhvZmYgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJC50eXBlKHltYXhvZmYpID09ICJudW1iZXIiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RvcCA9IHlheGlzLnNlcmllc191MnAoeWF4aXMubWF4ICsgeW1heG9mZik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJC50eXBlKHltYXhvZmYpID09ICJzdHJpbmciKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RvcCA9IHlheGlzLnNlcmllc191MnAoeWF4aXMubWF4KSArIHBhcnNlRmxvYXQoeW1heG9mZik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHlzdG9wICE9IG51bGwgJiYgeXN0YXJ0ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLmdyaWRTdGFydCA9IFt4LCB5c3RhcnRdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouZ3JpZFN0b3AgPSBbeCwgeXN0b3BdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtci5kcmF3KFt4LCB5c3RhcnRdLCBbeCwgeXN0b3BdLCB0aGlzLmNhbnZhcy5fY3R4LCBvcHRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Rhc2hlZFZlcnRpY2FsTGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkYXNoUGF0ID0gb2JqLm9wdGlvbnMuZGFzaFBhdHRlcm47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGFzaFBhdExlbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8ZGFzaFBhdC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhc2hQYXRMZW4gKz0gZGFzaFBhdFtpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHlsZSBhbmQgc2hhZG93IHByb3BlcnRpZXMgc2hvdWxkIGJlIHNldCBiZWZvcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV2ZXJ5IGRyYXcgb2YgbWFya2VyIHJlbmRlcmVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5vcHRpb25zLnggIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1yLnN0eWxlID0gJ2xpbmUnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuY2xvc2VQYXRoID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHlheGlzID0gcGxvdC5heGVzW29iai5vcHRpb25zLnlheGlzXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RvcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHBsb3QuYXhlc1tvYmoub3B0aW9ucy54YXhpc10uc2VyaWVzX3UycChvYmoub3B0aW9ucy54KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW1pbm9mZiA9IG9iai5vcHRpb25zLnltaW5PZmZzZXQgfHwgb2JqLm9wdGlvbnMueU9mZnNldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeW1heG9mZiA9IG9iai5vcHRpb25zLnltYXhPZmZzZXQgfHwgb2JqLm9wdGlvbnMueU9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm9wdGlvbnMueW1pbiAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdGFydCA9IHlheGlzLnNlcmllc191MnAob2JqLm9wdGlvbnMueW1pbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHltaW5vZmYgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJC50eXBlKHltaW5vZmYpID09ICJudW1iZXIiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RhcnQgPSB5YXhpcy5zZXJpZXNfdTJwKHlheGlzLm1pbiAtIHltaW5vZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCQudHlwZSh5bWlub2ZmKSA9PSAic3RyaW5nIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0YXJ0ID0geWF4aXMuc2VyaWVzX3UycCh5YXhpcy5taW4pIC0gcGFyc2VGbG9hdCh5bWlub2ZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm9wdGlvbnMueW1heCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdG9wID0geWF4aXMuc2VyaWVzX3UycChvYmoub3B0aW9ucy55bWF4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoeW1heG9mZiAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLnR5cGUoeW1heG9mZikgPT0gIm51bWJlciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdG9wID0geWF4aXMuc2VyaWVzX3UycCh5YXhpcy5tYXggKyB5bWF4b2ZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkLnR5cGUoeW1heG9mZikgPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdG9wID0geWF4aXMuc2VyaWVzX3UycCh5YXhpcy5tYXgpICsgcGFyc2VGbG9hdCh5bWF4b2ZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh5c3RvcCAhPSBudWxsICYmIHlzdGFydCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iai5ncmlkU3RhcnQgPSBbeCwgeXN0YXJ0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLmdyaWRTdG9wID0gW3gsIHlzdG9wXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG51bURhc2ggPSBNYXRoLmNlaWwoKHlzdGFydCAtIHlzdG9wKS9kYXNoUGF0TGVuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGZpcnN0RGFzaEFkanVzdCA9ICgobnVtRGFzaCAqIGRhc2hQYXRMZW4pIC0gKHlzdGFydCAtIHlzdG9wKSkvMi4wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgYj15c3RhcnQsIGUsIGJzLCBlczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPG51bURhc2g7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPGRhc2hQYXQubGVuZ3RoOyBqKz0yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGIgLSBkYXNoUGF0W2pdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlIDwgeXN0b3ApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHlzdG9wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYiA8IHlzdG9wKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB5c3RvcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXMgPSBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIChpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgZXMgKz0gZmlyc3REYXNoQWRqdXN0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtci5kcmF3KFt4LCBiXSwgW3gsIGVdLCB0aGlzLmNhbnZhcy5fY3R4LCBvcHRzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIC09IGRhc2hQYXRbal07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogPCBkYXNoUGF0Lmxlbmd0aC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgLT0gZGFzaFBhdFtqKzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlY3RhbmdsZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdHlsZSBhbmQgc2hhZG93IHByb3BlcnRpZXMgc2hvdWxkIGJlIHNldCBiZWZvcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGV2ZXJ5IGRyYXcgb2YgbWFya2VyIHJlbmRlcmVyLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXIuc3R5bGUgPSAnbGluZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmNsb3NlUGF0aCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4YXhpcyA9IHBsb3QuYXhlc1tvYmoub3B0aW9ucy54YXhpc10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSBwbG90LmF4ZXNbb2JqLm9wdGlvbnMueWF4aXNdLnNlcmllc191MnAob2JqLm9wdGlvbnMueSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtaW5vZmYgPSBvYmoub3B0aW9ucy54bWluT2Zmc2V0IHx8IG9iai5vcHRpb25zLnhPZmZzZXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtYXhvZmYgPSBvYmoub3B0aW9ucy54bWF4T2Zmc2V0IHx8IG9iai5vcHRpb25zLnhPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm9wdGlvbnMueG1pbiAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0geGF4aXMuc2VyaWVzX3UycChvYmoub3B0aW9ucy54bWluKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhtaW5vZmYgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLnR5cGUoeG1pbm9mZikgPT0gIm51bWJlciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0YXJ0ID0geGF4aXMuc2VyaWVzX3UycCh4YXhpcy5taW4gKyB4bWlub2ZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJC50eXBlKHhtaW5vZmYpID09ICJzdHJpbmciKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdGFydCA9IHhheGlzLnNlcmllc191MnAoeGF4aXMubWluKSArIHBhcnNlRmxvYXQoeG1pbm9mZik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5vcHRpb25zLnhtYXggIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhzdG9wID0geGF4aXMuc2VyaWVzX3UycChvYmoub3B0aW9ucy54bWF4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhtYXhvZmYgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLnR5cGUoeG1heG9mZikgPT0gIm51bWJlciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0b3AgPSB4YXhpcy5zZXJpZXNfdTJwKHhheGlzLm1heCAtIHhtYXhvZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkLnR5cGUoeG1heG9mZikgPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHN0b3AgPSB4YXhpcy5zZXJpZXNfdTJwKHhheGlzLm1heCkgLSBwYXJzZUZsb2F0KHhtYXhvZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHlheGlzID0gcGxvdC5heGVzW29iai5vcHRpb25zLnlheGlzXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5c3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0b3AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHBsb3QuYXhlc1tvYmoub3B0aW9ucy54YXhpc10uc2VyaWVzX3UycChvYmoub3B0aW9ucy54KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5bWlub2ZmID0gb2JqLm9wdGlvbnMueW1pbk9mZnNldCB8fCBvYmoub3B0aW9ucy55T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHltYXhvZmYgPSBvYmoub3B0aW9ucy55bWF4T2Zmc2V0IHx8IG9iai5vcHRpb25zLnlPZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqLm9wdGlvbnMueW1pbiAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0YXJ0ID0geWF4aXMuc2VyaWVzX3UycChvYmoub3B0aW9ucy55bWluKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHltaW5vZmYgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLnR5cGUoeW1pbm9mZikgPT0gIm51bWJlciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0YXJ0ID0geWF4aXMuc2VyaWVzX3UycCh5YXhpcy5taW4gLSB5bWlub2ZmKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoJC50eXBlKHltaW5vZmYpID09ICJzdHJpbmciKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdGFydCA9IHlheGlzLnNlcmllc191MnAoeWF4aXMubWluKSAtIHBhcnNlRmxvYXQoeW1pbm9mZik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9iai5vcHRpb25zLnltYXggIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlzdG9wID0geWF4aXMuc2VyaWVzX3UycChvYmoub3B0aW9ucy55bWF4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHltYXhvZmYgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkLnR5cGUoeW1heG9mZikgPT0gIm51bWJlciIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0b3AgPSB5YXhpcy5zZXJpZXNfdTJwKHlheGlzLm1heCArIHltYXhvZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgkLnR5cGUoeW1heG9mZikgPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXN0b3AgPSB5YXhpcy5zZXJpZXNfdTJwKHlheGlzLm1heCkgKyBwYXJzZUZsb2F0KHltYXhvZmYpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh4c3RvcCAhPSBudWxsICYmIHhzdGFydCAhPSBudWxsICYmIHlzdG9wICE9IG51bGwgJiYgeXN0YXJ0ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouZ3JpZFN0YXJ0ID0gW3hzdGFydCwgeXN0YXJ0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmouZ3JpZFN0b3AgPSBbeHN0b3AsIHlzdG9wXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbnZhcy5fY3R4LmZpbGxTdHlsZSA9IG9iai5vcHRpb25zLmNvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FudmFzLl9jdHguZmlsbFJlY3QoeHN0YXJ0LCB5c3RhcnQsIHhzdG9wIC0geHN0YXJ0LCB5c3RvcCAtIHlzdGFydCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aGluIGNvbnRleHQgb2YgcGxvdAogICAgLy8gY3JlYXRlIGEgY2FudmFzIHdoaWNoIHdlIGNhbiBkcmF3IG9uLgogICAgLy8gaW5zZXJ0IGl0IGJlZm9yZSB0aGUgZXZlbnRDYW52YXMsIHNvIGV2ZW50Q2FudmFzIHdpbGwgc3RpbGwgY2FwdHVyZSBldmVudHMuCiAgICAkLmpxcGxvdC5DYW52YXNPdmVybGF5LnBvc3RQbG90RHJhdyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBjbyA9IHRoaXMucGx1Z2lucy5jYW52YXNPdmVybGF5OwogICAgICAgIC8vIE1lbW9yeSBMZWFrcyBwYXRjaCAgICAKICAgICAgICBpZiAoY28gJiYgY28uaGlnaGxpZ2h0Q2FudmFzKSB7CiAgICAgICAgICAgIGNvLmhpZ2hsaWdodENhbnZhcy5yZXNldENhbnZhcygpOwogICAgICAgICAgICBjby5oaWdobGlnaHRDYW52YXMgPSBudWxsOwogICAgICAgIH0KICAgICAgICBjby5jYW52YXMgPSBuZXcgJC5qcXBsb3QuR2VuZXJpY0NhbnZhcygpOwogICAgICAgIAogICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKGNvLmNhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCAnanFwbG90LW92ZXJsYXlDYW52YXMtY2FudmFzJywgdGhpcy5fcGxvdERpbWVuc2lvbnMsIHRoaXMpKTsKICAgICAgICBjby5jYW52YXMuc2V0Q29udGV4dCgpOwogICAgICAgIGlmICghY28uZGVmZXJEcmF3KSB7CiAgICAgICAgICAgIGNvLmRyYXcodGhpcyk7CiAgICAgICAgfQoKICAgICAgICB2YXIgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgIGNvLl90b29sdGlwRWxlbSA9ICQoZWxlbSk7CiAgICAgICAgZWxlbSA9IG51bGw7CiAgICAgICAgY28uX3Rvb2x0aXBFbGVtLmFkZENsYXNzKCdqcXBsb3QtY2FudmFzT3ZlcmxheS10b29sdGlwJyk7CiAgICAgICAgY28uX3Rvb2x0aXBFbGVtLmNzcyh7cG9zaXRpb246J2Fic29sdXRlJywgZGlzcGxheTonbm9uZSd9KTsKICAgICAgICAKICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZShjby5fdG9vbHRpcEVsZW0pOwogICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgnbW91c2VsZWF2ZScsIHsgZWxlbTogY28uX3Rvb2x0aXBFbGVtIH0sIGZ1bmN0aW9uIChldikgeyBldi5kYXRhLmVsZW0uaGlkZSgpOyB9KTsKCiAgICAgICAgdmFyIGNvID0gbnVsbDsKICAgIH07CgoKICAgIGZ1bmN0aW9uIHNob3dUb29sdGlwKHBsb3QsIG9iaiwgZ3JpZHBvcywgZGF0YXBvcykgewogICAgICAgIHZhciBjbyA9IHBsb3QucGx1Z2lucy5jYW52YXNPdmVybGF5OwogICAgICAgIHZhciBlbGVtID0gY28uX3Rvb2x0aXBFbGVtOwoKICAgICAgICB2YXIgb3B0cyA9IG9iai5vcHRpb25zLCB4LCB5OwoKICAgICAgICBlbGVtLmh0bWwoJC5qcXBsb3Quc3ByaW50ZihvcHRzLnRvb2x0aXBGb3JtYXRTdHJpbmcsIGRhdGFwb3NbMF0sIGRhdGFwb3NbMV0pKTsKICAgICAgICAKICAgICAgICBzd2l0Y2ggKG9wdHMudG9vbHRpcExvY2F0aW9uKSB7CiAgICAgICAgICAgIGNhc2UgJ253JzoKICAgICAgICAgICAgICAgIHggPSBncmlkcG9zWzBdICsgcGxvdC5fZ3JpZFBhZGRpbmcubGVmdCAtIGVsZW0ub3V0ZXJXaWR0aCh0cnVlKSAtIG9wdHMudG9vbHRpcE9mZnNldDsKICAgICAgICAgICAgICAgIHkgPSBncmlkcG9zWzFdICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wIC0gb3B0cy50b29sdGlwT2Zmc2V0IC0gZWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICduJzoKICAgICAgICAgICAgICAgIHggPSBncmlkcG9zWzBdICsgcGxvdC5fZ3JpZFBhZGRpbmcubGVmdCAtIGVsZW0ub3V0ZXJXaWR0aCh0cnVlKS8yOwogICAgICAgICAgICAgICAgeSA9IGdyaWRwb3NbMV0gKyBwbG90Ll9ncmlkUGFkZGluZy50b3AgLSBvcHRzLnRvb2x0aXBPZmZzZXQgLSBlbGVtLm91dGVySGVpZ2h0KHRydWUpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ25lJzoKICAgICAgICAgICAgICAgIHggPSBncmlkcG9zWzBdICsgcGxvdC5fZ3JpZFBhZGRpbmcubGVmdCArIG9wdHMudG9vbHRpcE9mZnNldDsKICAgICAgICAgICAgICAgIHkgPSBncmlkcG9zWzFdICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wIC0gb3B0cy50b29sdGlwT2Zmc2V0IC0gZWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdlJzoKICAgICAgICAgICAgICAgIHggPSBncmlkcG9zWzBdICsgcGxvdC5fZ3JpZFBhZGRpbmcubGVmdCArIG9wdHMudG9vbHRpcE9mZnNldDsKICAgICAgICAgICAgICAgIHkgPSBncmlkcG9zWzFdICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wIC0gZWxlbS5vdXRlckhlaWdodCh0cnVlKS8yOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3NlJzoKICAgICAgICAgICAgICAgIHggPSBncmlkcG9zWzBdICsgcGxvdC5fZ3JpZFBhZGRpbmcubGVmdCArIG9wdHMudG9vbHRpcE9mZnNldDsKICAgICAgICAgICAgICAgIHkgPSBncmlkcG9zWzFdICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wICsgb3B0cy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgICAgeCA9IGdyaWRwb3NbMF0gKyBwbG90Ll9ncmlkUGFkZGluZy5sZWZ0IC0gZWxlbS5vdXRlcldpZHRoKHRydWUpLzI7CiAgICAgICAgICAgICAgICB5ID0gZ3JpZHBvc1sxXSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCArIG9wdHMudG9vbHRpcE9mZnNldDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzdyc6CiAgICAgICAgICAgICAgICB4ID0gZ3JpZHBvc1swXSArIHBsb3QuX2dyaWRQYWRkaW5nLmxlZnQgLSBlbGVtLm91dGVyV2lkdGgodHJ1ZSkgLSBvcHRzLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB5ID0gZ3JpZHBvc1sxXSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCArIG9wdHMudG9vbHRpcE9mZnNldDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICd3JzoKICAgICAgICAgICAgICAgIHggPSBncmlkcG9zWzBdICsgcGxvdC5fZ3JpZFBhZGRpbmcubGVmdCAtIGVsZW0ub3V0ZXJXaWR0aCh0cnVlKSAtIG9wdHMudG9vbHRpcE9mZnNldDsKICAgICAgICAgICAgICAgIHkgPSBncmlkcG9zWzFdICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wIC0gZWxlbS5vdXRlckhlaWdodCh0cnVlKS8yOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6IC8vIHNhbWUgYXMgJ253JwogICAgICAgICAgICAgICAgeCA9IGdyaWRwb3NbMF0gKyBwbG90Ll9ncmlkUGFkZGluZy5sZWZ0IC0gZWxlbS5vdXRlcldpZHRoKHRydWUpIC0gb3B0cy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgeSA9IGdyaWRwb3NbMV0gKyBwbG90Ll9ncmlkUGFkZGluZy50b3AgLSBvcHRzLnRvb2x0aXBPZmZzZXQgLSBlbGVtLm91dGVySGVpZ2h0KHRydWUpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBlbGVtLmNzcygnbGVmdCcsIHgpOwogICAgICAgIGVsZW0uY3NzKCd0b3AnLCB5KTsKICAgICAgICBpZiAob3B0cy5mYWRlVG9vbHRpcCkgewogICAgICAgICAgICAvLyBGaXggZm9yIHN0YWNrZWQgdXAgYW5pbWF0aW9ucy4gIFRobmFua3MgVHJldm9yIQogICAgICAgICAgICBlbGVtLnN0b3AodHJ1ZSx0cnVlKS5mYWRlSW4ob3B0cy50b29sdGlwRmFkZVNwZWVkKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGVsZW0uc2hvdygpOwogICAgICAgIH0KICAgICAgICBlbGVtID0gbnVsbDsKICAgIH0KCgogICAgZnVuY3Rpb24gaXNOZWFyTGluZShwb2ludCwgbHN0YXJ0LCBsc3RvcCwgd2lkdGgpIHsKICAgICAgICAvLyByIGlzIHBvaW50IHRvIHRlc3QsIHAgYW5kIHEgYXJlIGVuZCBwb2ludHMuCiAgICAgICAgdmFyIHJ4ID0gcG9pbnRbMF07CiAgICAgICAgdmFyIHJ5ID0gcG9pbnRbMV07CiAgICAgICAgdmFyIHB4ID0gTWF0aC5yb3VuZChsc3RvcFswXSk7CiAgICAgICAgdmFyIHB5ID0gTWF0aC5yb3VuZChsc3RvcFsxXSk7CiAgICAgICAgdmFyIHF4ID0gTWF0aC5yb3VuZChsc3RhcnRbMF0pOwogICAgICAgIHZhciBxeSA9IE1hdGgucm91bmQobHN0YXJ0WzFdKTsKCiAgICAgICAgdmFyIGwgPSBNYXRoLnNxcnQoTWF0aC5wb3cocHgtcXgsIDIpICsgTWF0aC5wb3cocHktcXksIDIpKTsKCiAgICAgICAgLy8gc2NhbGUgZXJyb3IgdGVybSBieSBsZW5ndGggb2YgbGluZS4KICAgICAgICB2YXIgZXBzID0gd2lkdGgqbDsKICAgICAgICB2YXIgcmVzID0gTWF0aC5hYnMoKHF4LXB4KSAqIChyeS1weSkgLSAocXktcHkpICogKHJ4LXB4KSk7CiAgICAgICAgdmFyIHJldCA9IChyZXMgPCBlcHMpID8gdHJ1ZSA6IGZhbHNlOwogICAgICAgIHJldHVybiByZXQ7CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGlzTmVhclJlY3RhbmdsZShwb2ludCwgbHN0YXJ0LCBsc3RvcCwgd2lkdGgpIHsKICAgICAgICAvLyByIGlzIHBvaW50IHRvIHRlc3QsIHAgYW5kIHEgYXJlIGVuZCBwb2ludHMuCiAgICAgICAgdmFyIHJ4ID0gcG9pbnRbMF07CiAgICAgICAgdmFyIHJ5ID0gcG9pbnRbMV07CiAgICAgICAgdmFyIHB4ID0gTWF0aC5yb3VuZChsc3RvcFswXSk7CiAgICAgICAgdmFyIHB5ID0gTWF0aC5yb3VuZChsc3RvcFsxXSk7CiAgICAgICAgdmFyIHF4ID0gTWF0aC5yb3VuZChsc3RhcnRbMF0pOwogICAgICAgIHZhciBxeSA9IE1hdGgucm91bmQobHN0YXJ0WzFdKTsKICAgICAgICAKICAgICAgICB2YXIgdGVtcDsKICAgICAgICBpZiAocHggPiBxeCkgeyB0ZW1wID0gcHg7IHB4ID0gcXg7IHF4ID0gdGVtcDsgfQogICAgICAgIGlmIChweSA+IHF5KSB7IHRlbXAgPSBweTsgcHkgPSBxeTsgcXkgPSB0ZW1wOyB9CiAgICAgICAgCiAgICAgICAgdmFyIHJldCA9IChyeCA+PSBweCAmJiByeCA8PSBxeCAmJiByeSA+PSBweSAmJiByeSA8PSBxeSk7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHJldDsKICAgIH0KCgogICAgZnVuY3Rpb24gaGFuZGxlTW92ZShldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICB2YXIgY28gPSBwbG90LnBsdWdpbnMuY2FudmFzT3ZlcmxheTsKICAgICAgICB2YXIgb2JqcyA9IGNvLm9iamVjdHM7CiAgICAgICAgdmFyIGwgPSBvYmpzLmxlbmd0aDsKICAgICAgICB2YXIgb2JqLCBoYXZlSGlnaGxpZ2h0PWZhbHNlOwogICAgICAgIHZhciBlbGVtOwogICAgICAgIGZvciAodmFyIGk9MDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgb2JqID0gb2Jqc1tpXTsKICAgICAgICAgICAgaWYgKG9iai5vcHRpb25zLnNob3dUb29sdGlwKSB7CiAgICAgICAgICAgIAl2YXIgbjsKICAgICAgICAgICAgICAgIGlmIChvYmoudHlwZSA9PT0gJ3JlY3RhbmdsZScpIHsKICAgICAgICAgICAgICAgICBuID0gaXNOZWFyUmVjdGFuZ2xlKFtncmlkcG9zLngsIGdyaWRwb3MueV0sIG9iai5ncmlkU3RhcnQsIG9iai5ncmlkU3RvcCwgb2JqLnRvb2x0aXBXaWR0aEZhY3Rvcik7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIG4gPSBpc05lYXJMaW5lKFtncmlkcG9zLngsIGdyaWRwb3MueV0sIG9iai5ncmlkU3RhcnQsIG9iai5ncmlkU3RvcCwgb2JqLnRvb2x0aXBXaWR0aEZhY3Rvcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkYXRhcG9zID0gW3Bsb3QuYXhlc1tvYmoub3B0aW9ucy54YXhpc10uc2VyaWVzX3AydShncmlkcG9zLngpLCBwbG90LmF4ZXNbb2JqLm9wdGlvbnMueWF4aXNdLnNlcmllc19wMnUoZ3JpZHBvcy55KV07CgogICAgICAgICAgICAgICAgLy8gY2FzZXM6CiAgICAgICAgICAgICAgICAvLyAgICBuZWFyIGxpbmUsIG5vIGhpZ2hsaWdodGluZwogICAgICAgICAgICAgICAgLy8gICAgbmVhciBsaW5lLCBoaWdobGl0aW5nIG9uIHRoaXMgbGluZQogICAgICAgICAgICAgICAgLy8gICAgbmVhciBsaW5lLCBoaWdobGlnaHRpbmcgYW5vdGhlciBsaW5lCiAgICAgICAgICAgICAgICAvLyAgICBub3QgbmVhciBhbnkgbGluZSwgaGlnaGxpZ2h0aW5nCiAgICAgICAgICAgICAgICAvLyAgICBub3QgbmVhciBhbnkgbGluZSwgbm8gaGlnaGxpZ2h0aW5nCgogICAgICAgICAgICAgICAgLy8gbmVhciBsaW5lLCBub3QgY3VycmVudGx5IGhpZ2hsaWdodGluZwogICAgICAgICAgICAgICAgaWYgKG4gJiYgY28uaGlnaGxpZ2h0T2JqZWN0SW5kZXggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAob2JqLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VG9vbHRpcChwbG90LCBvYmosIFtncmlkcG9zLngsIGdyaWRwb3MueV0sIGRhdGFwb3MpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdob3Jpem9udGFsTGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Rhc2hlZEhvcml6b250YWxMaW5lJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUb29sdGlwKHBsb3QsIG9iaiwgW2dyaWRwb3MueCwgb2JqLmdyaWRTdGFydFsxXV0sIFtkYXRhcG9zWzBdLCBvYmoub3B0aW9ucy55XSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3ZlcnRpY2FsTGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Rhc2hlZFZlcnRpY2FsTGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VG9vbHRpcChwbG90LCBvYmosIFtvYmouZ3JpZFN0YXJ0WzBdLCBncmlkcG9zLnldLCBbb2JqLm9wdGlvbnMueCwgZGF0YXBvc1sxXV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAncmVjdGFuZ2xlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dUb29sdGlwKHBsb3QsIG9iaiwgW29iai5ncmlkU3RhcnRbMF0sIGdyaWRwb3MueV0sIFtvYmoub3B0aW9ucy54LCBkYXRhcG9zWzFdXSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgICAgICAgICBjby5oaWdobGlnaHRPYmplY3RJbmRleCA9IGk7CiAgICAgICAgICAgICAgICAgICAgaGF2ZUhpZ2hsaWdodCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gbmVhciBsaW5lLCBoaWdobGlnaHRpbmcgYW5vdGhlciBsaW5lLgogICAgICAgICAgICAgICAgZWxzZSBpZiAobiAmJiBjby5oaWdobGlnaHRPYmplY3RJbmRleCAhPT0gaSkgewogICAgICAgICAgICAgICAgICAgIC8vIHR1cm4gb2ZmIHRvb2x0aXAuCiAgICAgICAgICAgICAgICAgICAgZWxlbSA9IGNvLl90b29sdGlwRWxlbTsKICAgICAgICAgICAgICAgICAgICBpZiAob2JqLmZhZGVUb29sdGlwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0uZmFkZU91dChvYmoudG9vbHRpcEZhZGVTcGVlZCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBlbGVtLmhpZGUoKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vIHR1cm4gb24gcmlnaHQgdG9vbHRpcC4KICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9iai50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpbmUnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1Rvb2x0aXAocGxvdCwgb2JqLCBbZ3JpZHBvcy54LCBncmlkcG9zLnldLCBkYXRhcG9zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaG9yaXpvbnRhbExpbmUnOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXNoZWRIb3Jpem9udGFsTGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VG9vbHRpcChwbG90LCBvYmosIFtncmlkcG9zLngsIG9iai5ncmlkU3RhcnRbMV1dLCBbZGF0YXBvc1swXSwgb2JqLm9wdGlvbnMueV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd2ZXJ0aWNhbExpbmUnOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXNoZWRWZXJ0aWNhbExpbmUnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1Rvb2x0aXAocGxvdCwgb2JqLCBbb2JqLmdyaWRTdGFydFswXSwgZ3JpZHBvcy55XSwgW29iai5vcHRpb25zLngsIGRhdGFwb3NbMV1dKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlY3RhbmdsZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VG9vbHRpcChwbG90LCBvYmosIFtvYmouZ3JpZFN0YXJ0WzBdLCBncmlkcG9zLnldLCBbb2JqLm9wdGlvbnMueCwgZGF0YXBvc1sxXV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgY28uaGlnaGxpZ2h0T2JqZWN0SW5kZXggPSBpOwogICAgICAgICAgICAgICAgICAgIGhhdmVIaWdobGlnaHQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIG5lYXIgbGluZSwgYWxyZWFkeSBoaWdobGlnaHRpbmcgdGhpcyBsaW5lLCB1cGRhdGUKICAgICAgICAgICAgICAgIGVsc2UgaWYgKG4pIHsKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9iai50eXBlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2xpbmUnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1Rvb2x0aXAocGxvdCwgb2JqLCBbZ3JpZHBvcy54LCBncmlkcG9zLnldLCBkYXRhcG9zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaG9yaXpvbnRhbExpbmUnOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXNoZWRIb3Jpem9udGFsTGluZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VG9vbHRpcChwbG90LCBvYmosIFtncmlkcG9zLngsIG9iai5ncmlkU3RhcnRbMV1dLCBbZGF0YXBvc1swXSwgb2JqLm9wdGlvbnMueV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd2ZXJ0aWNhbExpbmUnOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdkYXNoZWRWZXJ0aWNhbExpbmUnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1Rvb2x0aXAocGxvdCwgb2JqLCBbb2JqLmdyaWRTdGFydFswXSwgZ3JpZHBvcy55XSwgW29iai5vcHRpb25zLngsIGRhdGFwb3NbMV1dKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3JlY3RhbmdsZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VG9vbHRpcChwbG90LCBvYmosIFtvYmouZ3JpZFN0YXJ0WzBdLCBncmlkcG9zLnldLCBbb2JqLm9wdGlvbnMueCwgZGF0YXBvc1sxXV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgaGF2ZUhpZ2hsaWdodCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIGNoZWNrIGlmIHdlIGFyZSBoaWdobGlnaHRpbmcgYW5kIG5vdCBuZWFyIGEgbGluZSwgdHVybiBpdCBvZmYuCiAgICAgICAgaWYgKCFoYXZlSGlnaGxpZ2h0ICYmIGNvLmhpZ2hsaWdodE9iamVjdEluZGV4ICE9PSBudWxsKSB7CiAgICAgICAgICAgIGVsZW0gPSBjby5fdG9vbHRpcEVsZW07CiAgICAgICAgICAgIG9iaiA9IGNvLmdldE9iamVjdChjby5oaWdobGlnaHRPYmplY3RJbmRleCk7CiAgICAgICAgICAgIGlmIChvYmouZmFkZVRvb2x0aXApIHsKICAgICAgICAgICAgICAgIGVsZW0uZmFkZU91dChvYmoudG9vbHRpcEZhZGVTcGVlZCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBlbGVtLmhpZGUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjby5oaWdobGlnaHRPYmplY3RJbmRleCA9IG51bGw7CiAgICAgICAgfQogICAgfQogICAgCiAgICAkLmpxcGxvdC5wb3N0SW5pdEhvb2tzLnB1c2goJC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wb3N0UGxvdEluaXQpOwogICAgJC5qcXBsb3QucG9zdERyYXdIb29rcy5wdXNoKCQuanFwbG90LkNhbnZhc092ZXJsYXkucG9zdFBsb3REcmF3KTsKICAgICQuanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsnanFwbG90TW91c2VNb3ZlJywgaGFuZGxlTW92ZV0pOwoKfSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.canvasOverlay.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGQpe3ZhciBmPTA7ZC5qcXBsb3QuQ2FudmFzT3ZlcmxheT1mdW5jdGlvbihxKXt2YXIgbz1xfHx7fTt0aGlzLm9wdGlvbnM9e3Nob3c6ZC5qcXBsb3QuY29uZmlnLmVuYWJsZVBsdWdpbnMsZGVmZXJEcmF3OmZhbHNlfTt0aGlzLm9iamVjdHM9W107dGhpcy5vYmplY3ROYW1lcz1bXTt0aGlzLmNhbnZhcz1udWxsO3RoaXMubWFya2VyUmVuZGVyZXI9bmV3IGQuanFwbG90Lk1hcmtlclJlbmRlcmVyKHtzdHlsZToibGluZSJ9KTt0aGlzLm1hcmtlclJlbmRlcmVyLmluaXQoKTt0aGlzLmhpZ2hsaWdodE9iamVjdEluZGV4PW51bGw7aWYoby5vYmplY3RzKXt2YXIgcz1vLm9iamVjdHMscjtmb3IodmFyIHA9MDtwPHMubGVuZ3RoO3ArKyl7cj1zW3BdO2Zvcih2YXIgdCBpbiByKXtzd2l0Y2godCl7Y2FzZSJsaW5lIjp0aGlzLmFkZExpbmUoclt0XSk7YnJlYWs7Y2FzZSJob3Jpem9udGFsTGluZSI6dGhpcy5hZGRIb3Jpem9udGFsTGluZShyW3RdKTticmVhaztjYXNlImRhc2hlZEhvcml6b250YWxMaW5lIjp0aGlzLmFkZERhc2hlZEhvcml6b250YWxMaW5lKHJbdF0pO2JyZWFrO2Nhc2UidmVydGljYWxMaW5lIjp0aGlzLmFkZFZlcnRpY2FsTGluZShyW3RdKTticmVhaztjYXNlImRhc2hlZFZlcnRpY2FsTGluZSI6dGhpcy5hZGREYXNoZWRWZXJ0aWNhbExpbmUoclt0XSk7YnJlYWs7Y2FzZSJyZWN0YW5nbGUiOnRoaXMuYWRkUmVjdGFuZ2xlKHJbdF0pO2JyZWFrO2RlZmF1bHQ6YnJlYWt9fX19ZC5leHRlbmQodHJ1ZSx0aGlzLm9wdGlvbnMsbyl9O2QuanFwbG90LkNhbnZhc092ZXJsYXkucG9zdFBsb3RJbml0PWZ1bmN0aW9uKHEscCxvKXt2YXIgbj1vfHx7fTt0aGlzLnBsdWdpbnMuY2FudmFzT3ZlcmxheT1uZXcgZC5qcXBsb3QuQ2FudmFzT3ZlcmxheShuLmNhbnZhc092ZXJsYXkpfTtmdW5jdGlvbiBpKCl7dGhpcy51aWQ9bnVsbDt0aGlzLnR5cGU9bnVsbDt0aGlzLmdyaWRTdGFydD1udWxsO3RoaXMuZ3JpZFN0b3A9bnVsbDt0aGlzLnRvb2x0aXBXaWR0aEZhY3Rvcj0wO3RoaXMub3B0aW9ucz17bmFtZTpudWxsLHNob3c6dHJ1ZSxsaW5lV2lkdGg6MixsaW5lQ2FwOiJyb3VuZCIsY29sb3I6IiM2NjY2NjYiLHNoYWRvdzp0cnVlLHNoYWRvd0FuZ2xlOjQ1LHNoYWRvd09mZnNldDoxLHNoYWRvd0RlcHRoOjMsc2hhZG93QWxwaGE6IjAuMDciLHhheGlzOiJ4YXhpcyIseWF4aXM6InlheGlzIixzaG93VG9vbHRpcDpmYWxzZSxzaG93VG9vbHRpcFByZWNpc2lvbjowLjYsdG9vbHRpcExvY2F0aW9uOiJudyIsZmFkZVRvb2x0aXA6dHJ1ZSx0b29sdGlwRmFkZVNwZWVkOiJmYXN0Iix0b29sdGlwT2Zmc2V0OjQsdG9vbHRpcEZvcm1hdFN0cmluZzoiJWQsICVkIn19ZnVuY3Rpb24gbShuKXtpLmNhbGwodGhpcyk7dGhpcy50eXBlPSJyZWN0YW5nbGUiO3ZhciBvPXt4bWluOm51bGwseG1heDpudWxsLHhPZmZzZXQ6IjZweCIseG1pbk9mZnNldDpudWxsLHhtYXhPZmZzZXQ6bnVsbCx5bWluOm51bGwseW1heDpudWxsLHlPZmZzZXQ6IjZweCIseW1pbk9mZnNldDpudWxsLHltYXhPZmZzZXQ6bnVsbH07ZC5leHRlbmQodHJ1ZSx0aGlzLm9wdGlvbnMsbyxuKTtpZih0aGlzLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb248MC4wMSl7dGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uPTAuMDF9fW0ucHJvdG90eXBlPW5ldyBpKCk7bS5wcm90b3R5cGUuY29uc3RydWN0b3I9bTtmdW5jdGlvbiBiKG4pe2kuY2FsbCh0aGlzKTt0aGlzLnR5cGU9ImxpbmUiO3ZhciBvPXtzdGFydDpbXSxzdG9wOltdfTtkLmV4dGVuZCh0cnVlLHRoaXMub3B0aW9ucyxvLG4pO2lmKHRoaXMub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbjwwLjAxKXt0aGlzLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb249MC4wMX19Yi5wcm90b3R5cGU9bmV3IGkoKTtiLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1iO2Z1bmN0aW9uIGUobil7aS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iaG9yaXpvbnRhbExpbmUiO3ZhciBvPXt5Om51bGwseG1pbjpudWxsLHhtYXg6bnVsbCx4T2Zmc2V0OiI2cHgiLHhtaW5PZmZzZXQ6bnVsbCx4bWF4T2Zmc2V0Om51bGx9O2QuZXh0ZW5kKHRydWUsdGhpcy5vcHRpb25zLG8sbik7aWYodGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uPDAuMDEpe3RoaXMub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbj0wLjAxfX1lLnByb3RvdHlwZT1uZXcgaSgpO2UucHJvdG90eXBlLmNvbnN0cnVjdG9yPWU7ZnVuY3Rpb24gaihuKXtpLmNhbGwodGhpcyk7dGhpcy50eXBlPSJkYXNoZWRIb3Jpem9udGFsTGluZSI7dmFyIG89e3k6bnVsbCx4bWluOm51bGwseG1heDpudWxsLHhPZmZzZXQ6IjZweCIseG1pbk9mZnNldDpudWxsLHhtYXhPZmZzZXQ6bnVsbCxkYXNoUGF0dGVybjpbOCw4XX07ZC5leHRlbmQodHJ1ZSx0aGlzLm9wdGlvbnMsbyxuKTtpZih0aGlzLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb248MC4wMSl7dGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uPTAuMDF9fWoucHJvdG90eXBlPW5ldyBpKCk7ai5wcm90b3R5cGUuY29uc3RydWN0b3I9ajtmdW5jdGlvbiBjKG4pe2kuY2FsbCh0aGlzKTt0aGlzLnR5cGU9InZlcnRpY2FsTGluZSI7dmFyIG89e3g6bnVsbCx5bWluOm51bGwseW1heDpudWxsLHlPZmZzZXQ6IjZweCIseW1pbk9mZnNldDpudWxsLHltYXhPZmZzZXQ6bnVsbH07ZC5leHRlbmQodHJ1ZSx0aGlzLm9wdGlvbnMsbyxuKTtpZih0aGlzLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb248MC4wMSl7dGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uPTAuMDF9fWMucHJvdG90eXBlPW5ldyBpKCk7Yy5wcm90b3R5cGUuY29uc3RydWN0b3I9YztmdW5jdGlvbiBsKG4pe2kuY2FsbCh0aGlzKTt0aGlzLnR5cGU9ImRhc2hlZFZlcnRpY2FsTGluZSI7dGhpcy5zdGFydD1udWxsO3RoaXMuc3RvcD1udWxsO3ZhciBvPXt4Om51bGwseW1pbjpudWxsLHltYXg6bnVsbCx5T2Zmc2V0OiI2cHgiLHltaW5PZmZzZXQ6bnVsbCx5bWF4T2Zmc2V0Om51bGwsZGFzaFBhdHRlcm46WzgsOF19O2QuZXh0ZW5kKHRydWUsdGhpcy5vcHRpb25zLG8sbik7aWYodGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uPDAuMDEpe3RoaXMub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbj0wLjAxfX1sLnByb3RvdHlwZT1uZXcgaSgpO2wucHJvdG90eXBlLmNvbnN0cnVjdG9yPWw7ZC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuYWRkTGluZT1mdW5jdGlvbihvKXt2YXIgbj1uZXcgYihvKTtuLnVpZD1mKys7dGhpcy5vYmplY3RzLnB1c2gobik7dGhpcy5vYmplY3ROYW1lcy5wdXNoKG4ub3B0aW9ucy5uYW1lKX07ZC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuYWRkSG9yaXpvbnRhbExpbmU9ZnVuY3Rpb24obyl7dmFyIG49bmV3IGUobyk7bi51aWQ9ZisrO3RoaXMub2JqZWN0cy5wdXNoKG4pO3RoaXMub2JqZWN0TmFtZXMucHVzaChuLm9wdGlvbnMubmFtZSl9O2QuanFwbG90LkNhbnZhc092ZXJsYXkucHJvdG90eXBlLmFkZERhc2hlZEhvcml6b250YWxMaW5lPWZ1bmN0aW9uKG8pe3ZhciBuPW5ldyBqKG8pO24udWlkPWYrKzt0aGlzLm9iamVjdHMucHVzaChuKTt0aGlzLm9iamVjdE5hbWVzLnB1c2gobi5vcHRpb25zLm5hbWUpfTtkLmpxcGxvdC5DYW52YXNPdmVybGF5LnByb3RvdHlwZS5hZGRWZXJ0aWNhbExpbmU9ZnVuY3Rpb24obyl7dmFyIG49bmV3IGMobyk7bi51aWQ9ZisrO3RoaXMub2JqZWN0cy5wdXNoKG4pO3RoaXMub2JqZWN0TmFtZXMucHVzaChuLm9wdGlvbnMubmFtZSl9O2QuanFwbG90LkNhbnZhc092ZXJsYXkucHJvdG90eXBlLmFkZERhc2hlZFZlcnRpY2FsTGluZT1mdW5jdGlvbihvKXt2YXIgbj1uZXcgbChvKTtuLnVpZD1mKys7dGhpcy5vYmplY3RzLnB1c2gobik7dGhpcy5vYmplY3ROYW1lcy5wdXNoKG4ub3B0aW9ucy5uYW1lKX07ZC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuYWRkUmVjdGFuZ2xlPWZ1bmN0aW9uKG8pe3ZhciBuPW5ldyBtKG8pO24udWlkPWYrKzt0aGlzLm9iamVjdHMucHVzaChuKTt0aGlzLm9iamVjdE5hbWVzLnB1c2gobi5vcHRpb25zLm5hbWUpfTtkLmpxcGxvdC5DYW52YXNPdmVybGF5LnByb3RvdHlwZS5yZW1vdmVPYmplY3Q9ZnVuY3Rpb24obil7aWYoZC50eXBlKG4pPT0ibnVtYmVyIil7dGhpcy5vYmplY3RzLnNwbGljZShuLDEpO3RoaXMub2JqZWN0TmFtZXMuc3BsaWNlKG4sMSl9ZWxzZXt2YXIgbz1kLmluQXJyYXkobix0aGlzLm9iamVjdE5hbWVzKTtpZihvIT0tMSl7dGhpcy5vYmplY3RzLnNwbGljZShvLDEpO3RoaXMub2JqZWN0TmFtZXMuc3BsaWNlKG8sMSl9fX07ZC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuZ2V0T2JqZWN0PWZ1bmN0aW9uKG4pe2lmKGQudHlwZShuKT09Im51bWJlciIpe3JldHVybiB0aGlzLm9iamVjdHNbbl19ZWxzZXt2YXIgbz1kLmluQXJyYXkobix0aGlzLm9iamVjdE5hbWVzKTtpZihvIT0tMSl7cmV0dXJuIHRoaXMub2JqZWN0c1tvXX19fTtkLmpxcGxvdC5DYW52YXNPdmVybGF5LnByb3RvdHlwZS5nZXQ9ZC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuZ2V0T2JqZWN0O2QuanFwbG90LkNhbnZhc092ZXJsYXkucHJvdG90eXBlLmNsZWFyPWZ1bmN0aW9uKG4pe3RoaXMuY2FudmFzLl9jdHguY2xlYXJSZWN0KDAsMCx0aGlzLmNhbnZhcy5nZXRXaWR0aCgpLHRoaXMuY2FudmFzLmdldEhlaWdodCgpKX07ZC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbihLKXt2YXIgQSx2PXRoaXMub2JqZWN0cyxGPXRoaXMubWFya2VyUmVuZGVyZXIscyxHO2lmKHRoaXMub3B0aW9ucy5zaG93KXt0aGlzLmNhbnZhcy5fY3R4LmNsZWFyUmVjdCgwLDAsdGhpcy5jYW52YXMuZ2V0V2lkdGgoKSx0aGlzLmNhbnZhcy5nZXRIZWlnaHQoKSk7Zm9yKHZhciBIPTA7SDx2Lmxlbmd0aDtIKyspe0E9dltIXTt2YXIgQj1kLmV4dGVuZCh0cnVlLHt9LEEub3B0aW9ucyk7aWYoQS5vcHRpb25zLnNob3cpe0Yuc2hhZG93PUEub3B0aW9ucy5zaGFkb3c7QS50b29sdGlwV2lkdGhGYWN0b3I9QS5vcHRpb25zLmxpbmVXaWR0aC9BLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb247c3dpdGNoKEEudHlwZSl7Y2FzZSJsaW5lIjpGLnN0eWxlPSJsaW5lIjtCLmNsb3NlUGF0aD1mYWxzZTtzPVtLLmF4ZXNbQS5vcHRpb25zLnhheGlzXS5zZXJpZXNfdTJwKEEub3B0aW9ucy5zdGFydFswXSksSy5heGVzW0Eub3B0aW9ucy55YXhpc10uc2VyaWVzX3UycChBLm9wdGlvbnMuc3RhcnRbMV0pXTtHPVtLLmF4ZXNbQS5vcHRpb25zLnhheGlzXS5zZXJpZXNfdTJwKEEub3B0aW9ucy5zdG9wWzBdKSxLLmF4ZXNbQS5vcHRpb25zLnlheGlzXS5zZXJpZXNfdTJwKEEub3B0aW9ucy5zdG9wWzFdKV07QS5ncmlkU3RhcnQ9cztBLmdyaWRTdG9wPUc7Ri5kcmF3KHMsRyx0aGlzLmNhbnZhcy5fY3R4LEIpO2JyZWFrO2Nhc2UiaG9yaXpvbnRhbExpbmUiOmlmKEEub3B0aW9ucy55IT1udWxsKXtGLnN0eWxlPSJsaW5lIjtCLmNsb3NlUGF0aD1mYWxzZTt2YXIgcD1LLmF4ZXNbQS5vcHRpb25zLnhheGlzXSxTLEwsdz1LLmF4ZXNbQS5vcHRpb25zLnlheGlzXS5zZXJpZXNfdTJwKEEub3B0aW9ucy55KSxJPUEub3B0aW9ucy54bWluT2Zmc2V0fHxBLm9wdGlvbnMueE9mZnNldCx0PUEub3B0aW9ucy54bWF4T2Zmc2V0fHxBLm9wdGlvbnMueE9mZnNldDtpZihBLm9wdGlvbnMueG1pbiE9bnVsbCl7Uz1wLnNlcmllc191MnAoQS5vcHRpb25zLnhtaW4pfWVsc2V7aWYoSSE9bnVsbCl7aWYoZC50eXBlKEkpPT0ibnVtYmVyIil7Uz1wLnNlcmllc191MnAocC5taW4rSSl9ZWxzZXtpZihkLnR5cGUoSSk9PSJzdHJpbmciKXtTPXAuc2VyaWVzX3UycChwLm1pbikrcGFyc2VGbG9hdChJKX19fX1pZihBLm9wdGlvbnMueG1heCE9bnVsbCl7TD1wLnNlcmllc191MnAoQS5vcHRpb25zLnhtYXgpfWVsc2V7aWYodCE9bnVsbCl7aWYoZC50eXBlKHQpPT0ibnVtYmVyIil7TD1wLnNlcmllc191MnAocC5tYXgtdCl9ZWxzZXtpZihkLnR5cGUodCk9PSJzdHJpbmciKXtMPXAuc2VyaWVzX3UycChwLm1heCktcGFyc2VGbG9hdCh0KX19fX1pZihMIT1udWxsJiZTIT1udWxsKXtBLmdyaWRTdGFydD1bUyx3XTtBLmdyaWRTdG9wPVtMLHddO0YuZHJhdyhbUyx3XSxbTCx3XSx0aGlzLmNhbnZhcy5fY3R4LEIpfX1icmVhaztjYXNlImRhc2hlZEhvcml6b250YWxMaW5lIjp2YXIgbz1BLm9wdGlvbnMuZGFzaFBhdHRlcm47dmFyIEU9MDtmb3IodmFyIE09MDtNPG8ubGVuZ3RoO00rKyl7RSs9b1tNXX1pZihBLm9wdGlvbnMueSE9bnVsbCl7Ri5zdHlsZT0ibGluZSI7Qi5jbG9zZVBhdGg9ZmFsc2U7dmFyIHA9Sy5heGVzW0Eub3B0aW9ucy54YXhpc10sUyxMLHc9Sy5heGVzW0Eub3B0aW9ucy55YXhpc10uc2VyaWVzX3UycChBLm9wdGlvbnMueSksST1BLm9wdGlvbnMueG1pbk9mZnNldHx8QS5vcHRpb25zLnhPZmZzZXQsdD1BLm9wdGlvbnMueG1heE9mZnNldHx8QS5vcHRpb25zLnhPZmZzZXQ7aWYoQS5vcHRpb25zLnhtaW4hPW51bGwpe1M9cC5zZXJpZXNfdTJwKEEub3B0aW9ucy54bWluKX1lbHNle2lmKEkhPW51bGwpe2lmKGQudHlwZShJKT09Im51bWJlciIpe1M9cC5zZXJpZXNfdTJwKHAubWluK0kpfWVsc2V7aWYoZC50eXBlKEkpPT0ic3RyaW5nIil7Uz1wLnNlcmllc191MnAocC5taW4pK3BhcnNlRmxvYXQoSSl9fX19aWYoQS5vcHRpb25zLnhtYXghPW51bGwpe0w9cC5zZXJpZXNfdTJwKEEub3B0aW9ucy54bWF4KX1lbHNle2lmKHQhPW51bGwpe2lmKGQudHlwZSh0KT09Im51bWJlciIpe0w9cC5zZXJpZXNfdTJwKHAubWF4LXQpfWVsc2V7aWYoZC50eXBlKHQpPT0ic3RyaW5nIil7TD1wLnNlcmllc191MnAocC5tYXgpLXBhcnNlRmxvYXQodCl9fX19aWYoTCE9bnVsbCYmUyE9bnVsbCl7QS5ncmlkU3RhcnQ9W1Msd107QS5ncmlkU3RvcD1bTCx3XTt2YXIgcj1NYXRoLmNlaWwoKEwtUykvRSk7dmFyIFE9UyxPO2Zvcih2YXIgTT0wO008cjtNKyspe2Zvcih2YXIgSj0wO0o8by5sZW5ndGg7Sis9Mil7Tz1RK29bSl07Ri5kcmF3KFtRLHddLFtPLHddLHRoaXMuY2FudmFzLl9jdHgsQik7USs9b1tKXTtpZihKPG8ubGVuZ3RoLTEpe1ErPW9bSisxXX19fX19YnJlYWs7Y2FzZSJ2ZXJ0aWNhbExpbmUiOmlmKEEub3B0aW9ucy54IT1udWxsKXtGLnN0eWxlPSJsaW5lIjtCLmNsb3NlUGF0aD1mYWxzZTt2YXIgTj1LLmF4ZXNbQS5vcHRpb25zLnlheGlzXSxuLHUsej1LLmF4ZXNbQS5vcHRpb25zLnhheGlzXS5zZXJpZXNfdTJwKEEub3B0aW9ucy54KSxEPUEub3B0aW9ucy55bWluT2Zmc2V0fHxBLm9wdGlvbnMueU9mZnNldCxxPUEub3B0aW9ucy55bWF4T2Zmc2V0fHxBLm9wdGlvbnMueU9mZnNldDtpZihBLm9wdGlvbnMueW1pbiE9bnVsbCl7bj1OLnNlcmllc191MnAoQS5vcHRpb25zLnltaW4pfWVsc2V7aWYoRCE9bnVsbCl7aWYoZC50eXBlKEQpPT0ibnVtYmVyIil7bj1OLnNlcmllc191MnAoTi5taW4tRCl9ZWxzZXtpZihkLnR5cGUoRCk9PSJzdHJpbmciKXtuPU4uc2VyaWVzX3UycChOLm1pbiktcGFyc2VGbG9hdChEKX19fX1pZihBLm9wdGlvbnMueW1heCE9bnVsbCl7dT1OLnNlcmllc191MnAoQS5vcHRpb25zLnltYXgpfWVsc2V7aWYocSE9bnVsbCl7aWYoZC50eXBlKHEpPT0ibnVtYmVyIil7dT1OLnNlcmllc191MnAoTi5tYXgrcSl9ZWxzZXtpZihkLnR5cGUocSk9PSJzdHJpbmciKXt1PU4uc2VyaWVzX3UycChOLm1heCkrcGFyc2VGbG9hdChxKX19fX1pZih1IT1udWxsJiZuIT1udWxsKXtBLmdyaWRTdGFydD1beixuXTtBLmdyaWRTdG9wPVt6LHVdO0YuZHJhdyhbeixuXSxbeix1XSx0aGlzLmNhbnZhcy5fY3R4LEIpfX1icmVhaztjYXNlImRhc2hlZFZlcnRpY2FsTGluZSI6dmFyIG89QS5vcHRpb25zLmRhc2hQYXR0ZXJuO3ZhciBFPTA7Zm9yKHZhciBNPTA7TTxvLmxlbmd0aDtNKyspe0UrPW9bTV19aWYoQS5vcHRpb25zLnghPW51bGwpe0Yuc3R5bGU9ImxpbmUiO0IuY2xvc2VQYXRoPWZhbHNlO3ZhciBOPUsuYXhlc1tBLm9wdGlvbnMueWF4aXNdLG4sdSx6PUsuYXhlc1tBLm9wdGlvbnMueGF4aXNdLnNlcmllc191MnAoQS5vcHRpb25zLngpLEQ9QS5vcHRpb25zLnltaW5PZmZzZXR8fEEub3B0aW9ucy55T2Zmc2V0LHE9QS5vcHRpb25zLnltYXhPZmZzZXR8fEEub3B0aW9ucy55T2Zmc2V0O2lmKEEub3B0aW9ucy55bWluIT1udWxsKXtuPU4uc2VyaWVzX3UycChBLm9wdGlvbnMueW1pbil9ZWxzZXtpZihEIT1udWxsKXtpZihkLnR5cGUoRCk9PSJudW1iZXIiKXtuPU4uc2VyaWVzX3UycChOLm1pbi1EKX1lbHNle2lmKGQudHlwZShEKT09InN0cmluZyIpe249Ti5zZXJpZXNfdTJwKE4ubWluKS1wYXJzZUZsb2F0KEQpfX19fWlmKEEub3B0aW9ucy55bWF4IT1udWxsKXt1PU4uc2VyaWVzX3UycChBLm9wdGlvbnMueW1heCl9ZWxzZXtpZihxIT1udWxsKXtpZihkLnR5cGUocSk9PSJudW1iZXIiKXt1PU4uc2VyaWVzX3UycChOLm1heCtxKX1lbHNle2lmKGQudHlwZShxKT09InN0cmluZyIpe3U9Ti5zZXJpZXNfdTJwKE4ubWF4KStwYXJzZUZsb2F0KHEpfX19fWlmKHUhPW51bGwmJm4hPW51bGwpe0EuZ3JpZFN0YXJ0PVt6LG5dO0EuZ3JpZFN0b3A9W3osdV07dmFyIHI9TWF0aC5jZWlsKChuLXUpL0UpO3ZhciBDPSgocipFKS0obi11KSkvMjt2YXIgUT1uLE8sUCxSO2Zvcih2YXIgTT0wO008cjtNKyspe2Zvcih2YXIgSj0wO0o8by5sZW5ndGg7Sis9Mil7Tz1RLW9bSl07aWYoTzx1KXtPPXV9aWYoUTx1KXtRPXV9Ri5kcmF3KFt6LFFdLFt6LE9dLHRoaXMuY2FudmFzLl9jdHgsQik7US09b1tKXTtpZihKPG8ubGVuZ3RoLTEpe1EtPW9bSisxXX19fX19YnJlYWs7Y2FzZSJyZWN0YW5nbGUiOkYuc3R5bGU9ImxpbmUiO0IuY2xvc2VQYXRoPXRydWU7dmFyIHA9Sy5heGVzW0Eub3B0aW9ucy54YXhpc10sUyxMLHc9Sy5heGVzW0Eub3B0aW9ucy55YXhpc10uc2VyaWVzX3UycChBLm9wdGlvbnMueSksST1BLm9wdGlvbnMueG1pbk9mZnNldHx8QS5vcHRpb25zLnhPZmZzZXQsdD1BLm9wdGlvbnMueG1heE9mZnNldHx8QS5vcHRpb25zLnhPZmZzZXQ7aWYoQS5vcHRpb25zLnhtaW4hPW51bGwpe1M9cC5zZXJpZXNfdTJwKEEub3B0aW9ucy54bWluKX1lbHNle2lmKEkhPW51bGwpe2lmKGQudHlwZShJKT09Im51bWJlciIpe1M9cC5zZXJpZXNfdTJwKHAubWluK0kpfWVsc2V7aWYoZC50eXBlKEkpPT0ic3RyaW5nIil7Uz1wLnNlcmllc191MnAocC5taW4pK3BhcnNlRmxvYXQoSSl9fX19aWYoQS5vcHRpb25zLnhtYXghPW51bGwpe0w9cC5zZXJpZXNfdTJwKEEub3B0aW9ucy54bWF4KX1lbHNle2lmKHQhPW51bGwpe2lmKGQudHlwZSh0KT09Im51bWJlciIpe0w9cC5zZXJpZXNfdTJwKHAubWF4LXQpfWVsc2V7aWYoZC50eXBlKHQpPT0ic3RyaW5nIil7TD1wLnNlcmllc191MnAocC5tYXgpLXBhcnNlRmxvYXQodCl9fX19dmFyIE49Sy5heGVzW0Eub3B0aW9ucy55YXhpc10sbix1LHo9Sy5heGVzW0Eub3B0aW9ucy54YXhpc10uc2VyaWVzX3UycChBLm9wdGlvbnMueCksRD1BLm9wdGlvbnMueW1pbk9mZnNldHx8QS5vcHRpb25zLnlPZmZzZXQscT1BLm9wdGlvbnMueW1heE9mZnNldHx8QS5vcHRpb25zLnlPZmZzZXQ7aWYoQS5vcHRpb25zLnltaW4hPW51bGwpe249Ti5zZXJpZXNfdTJwKEEub3B0aW9ucy55bWluKX1lbHNle2lmKEQhPW51bGwpe2lmKGQudHlwZShEKT09Im51bWJlciIpe249Ti5zZXJpZXNfdTJwKE4ubWluLUQpfWVsc2V7aWYoZC50eXBlKEQpPT0ic3RyaW5nIil7bj1OLnNlcmllc191MnAoTi5taW4pLXBhcnNlRmxvYXQoRCl9fX19aWYoQS5vcHRpb25zLnltYXghPW51bGwpe3U9Ti5zZXJpZXNfdTJwKEEub3B0aW9ucy55bWF4KX1lbHNle2lmKHEhPW51bGwpe2lmKGQudHlwZShxKT09Im51bWJlciIpe3U9Ti5zZXJpZXNfdTJwKE4ubWF4K3EpfWVsc2V7aWYoZC50eXBlKHEpPT0ic3RyaW5nIil7dT1OLnNlcmllc191MnAoTi5tYXgpK3BhcnNlRmxvYXQocSl9fX19aWYoTCE9bnVsbCYmUyE9bnVsbCYmdSE9bnVsbCYmbiE9bnVsbCl7QS5ncmlkU3RhcnQ9W1Msbl07QS5ncmlkU3RvcD1bTCx1XTt0aGlzLmNhbnZhcy5fY3R4LmZpbGxTdHlsZT1BLm9wdGlvbnMuY29sb3I7dGhpcy5jYW52YXMuX2N0eC5maWxsUmVjdChTLG4sTC1TLHUtbil9YnJlYWs7ZGVmYXVsdDpicmVha319fX19O2QuanFwbG90LkNhbnZhc092ZXJsYXkucG9zdFBsb3REcmF3PWZ1bmN0aW9uKCl7dmFyIG89dGhpcy5wbHVnaW5zLmNhbnZhc092ZXJsYXk7aWYobyYmby5oaWdobGlnaHRDYW52YXMpe28uaGlnaGxpZ2h0Q2FudmFzLnJlc2V0Q2FudmFzKCk7by5oaWdobGlnaHRDYW52YXM9bnVsbH1vLmNhbnZhcz1uZXcgZC5qcXBsb3QuR2VuZXJpY0NhbnZhcygpO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKG8uY2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsImpxcGxvdC1vdmVybGF5Q2FudmFzLWNhbnZhcyIsdGhpcy5fcGxvdERpbWVuc2lvbnMsdGhpcykpO28uY2FudmFzLnNldENvbnRleHQoKTtpZighby5kZWZlckRyYXcpe28uZHJhdyh0aGlzKX12YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtvLl90b29sdGlwRWxlbT1kKG4pO249bnVsbDtvLl90b29sdGlwRWxlbS5hZGRDbGFzcygianFwbG90LWNhbnZhc092ZXJsYXktdG9vbHRpcCIpO28uX3Rvb2x0aXBFbGVtLmNzcyh7cG9zaXRpb246ImFic29sdXRlIixkaXNwbGF5OiJub25lIn0pO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKG8uX3Rvb2x0aXBFbGVtKTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoIm1vdXNlbGVhdmUiLHtlbGVtOm8uX3Rvb2x0aXBFbGVtfSxmdW5jdGlvbihwKXtwLmRhdGEuZWxlbS5oaWRlKCl9KTt2YXIgbz1udWxsfTtmdW5jdGlvbiBrKHMscSxyLHApe3ZhciB1PXMucGx1Z2lucy5jYW52YXNPdmVybGF5O3ZhciBvPXUuX3Rvb2x0aXBFbGVtO3ZhciBuPXEub3B0aW9ucyx2LHQ7by5odG1sKGQuanFwbG90LnNwcmludGYobi50b29sdGlwRm9ybWF0U3RyaW5nLHBbMF0scFsxXSkpO3N3aXRjaChuLnRvb2x0aXBMb2NhdGlvbil7Y2FzZSJudyI6dj1yWzBdK3MuX2dyaWRQYWRkaW5nLmxlZnQtby5vdXRlcldpZHRoKHRydWUpLW4udG9vbHRpcE9mZnNldDt0PXJbMV0rcy5fZ3JpZFBhZGRpbmcudG9wLW4udG9vbHRpcE9mZnNldC1vLm91dGVySGVpZ2h0KHRydWUpO2JyZWFrO2Nhc2UibiI6dj1yWzBdK3MuX2dyaWRQYWRkaW5nLmxlZnQtby5vdXRlcldpZHRoKHRydWUpLzI7dD1yWzFdK3MuX2dyaWRQYWRkaW5nLnRvcC1uLnRvb2x0aXBPZmZzZXQtby5vdXRlckhlaWdodCh0cnVlKTticmVhaztjYXNlIm5lIjp2PXJbMF0rcy5fZ3JpZFBhZGRpbmcubGVmdCtuLnRvb2x0aXBPZmZzZXQ7dD1yWzFdK3MuX2dyaWRQYWRkaW5nLnRvcC1uLnRvb2x0aXBPZmZzZXQtby5vdXRlckhlaWdodCh0cnVlKTticmVhaztjYXNlImUiOnY9clswXStzLl9ncmlkUGFkZGluZy5sZWZ0K24udG9vbHRpcE9mZnNldDt0PXJbMV0rcy5fZ3JpZFBhZGRpbmcudG9wLW8ub3V0ZXJIZWlnaHQodHJ1ZSkvMjticmVhaztjYXNlInNlIjp2PXJbMF0rcy5fZ3JpZFBhZGRpbmcubGVmdCtuLnRvb2x0aXBPZmZzZXQ7dD1yWzFdK3MuX2dyaWRQYWRkaW5nLnRvcCtuLnRvb2x0aXBPZmZzZXQ7YnJlYWs7Y2FzZSJzIjp2PXJbMF0rcy5fZ3JpZFBhZGRpbmcubGVmdC1vLm91dGVyV2lkdGgodHJ1ZSkvMjt0PXJbMV0rcy5fZ3JpZFBhZGRpbmcudG9wK24udG9vbHRpcE9mZnNldDticmVhaztjYXNlInN3Ijp2PXJbMF0rcy5fZ3JpZFBhZGRpbmcubGVmdC1vLm91dGVyV2lkdGgodHJ1ZSktbi50b29sdGlwT2Zmc2V0O3Q9clsxXStzLl9ncmlkUGFkZGluZy50b3Arbi50b29sdGlwT2Zmc2V0O2JyZWFrO2Nhc2UidyI6dj1yWzBdK3MuX2dyaWRQYWRkaW5nLmxlZnQtby5vdXRlcldpZHRoKHRydWUpLW4udG9vbHRpcE9mZnNldDt0PXJbMV0rcy5fZ3JpZFBhZGRpbmcudG9wLW8ub3V0ZXJIZWlnaHQodHJ1ZSkvMjticmVhaztkZWZhdWx0OnY9clswXStzLl9ncmlkUGFkZGluZy5sZWZ0LW8ub3V0ZXJXaWR0aCh0cnVlKS1uLnRvb2x0aXBPZmZzZXQ7dD1yWzFdK3MuX2dyaWRQYWRkaW5nLnRvcC1uLnRvb2x0aXBPZmZzZXQtby5vdXRlckhlaWdodCh0cnVlKTticmVha31vLmNzcygibGVmdCIsdik7by5jc3MoInRvcCIsdCk7aWYobi5mYWRlVG9vbHRpcCl7by5zdG9wKHRydWUsdHJ1ZSkuZmFkZUluKG4udG9vbHRpcEZhZGVTcGVlZCl9ZWxzZXtvLnNob3coKX1vPW51bGx9ZnVuY3Rpb24gaCh6LHEscyxwKXt2YXIgbz16WzBdO3ZhciBuPXpbMV07dmFyIHk9TWF0aC5yb3VuZChzWzBdKTt2YXIgeD1NYXRoLnJvdW5kKHNbMV0pO3ZhciB1PU1hdGgucm91bmQocVswXSk7dmFyIHQ9TWF0aC5yb3VuZChxWzFdKTt2YXIgcj1NYXRoLnNxcnQoTWF0aC5wb3coeS11LDIpK01hdGgucG93KHgtdCwyKSk7dmFyIEE9cCpyO3ZhciB3PU1hdGguYWJzKCh1LXkpKihuLXgpLSh0LXgpKihvLXkpKTt2YXIgdj0odzxBKT90cnVlOmZhbHNlO3JldHVybiB2fWZ1bmN0aW9uIGcoeCxxLHIscCl7dmFyIG89eFswXTt2YXIgbj14WzFdO3ZhciB3PU1hdGgucm91bmQoclswXSk7dmFyIHY9TWF0aC5yb3VuZChyWzFdKTt2YXIgdD1NYXRoLnJvdW5kKHFbMF0pO3ZhciBzPU1hdGgucm91bmQocVsxXSk7dmFyIHk7aWYodz50KXt5PXc7dz10O3Q9eX1pZih2PnMpe3k9djt2PXM7cz15fXZhciB1PShvPj13JiZvPD10JiZuPj12JiZuPD1zKTtyZXR1cm4gdX1mdW5jdGlvbiBhKHosdyxyLEEseCl7dmFyIHk9eC5wbHVnaW5zLmNhbnZhc092ZXJsYXk7dmFyIHY9eS5vYmplY3RzO3ZhciBzPXYubGVuZ3RoO3ZhciB1LG89ZmFsc2U7dmFyIHE7Zm9yKHZhciB0PTA7dDxzO3QrKyl7dT12W3RdO2lmKHUub3B0aW9ucy5zaG93VG9vbHRpcCl7dmFyIHA7aWYodS50eXBlPT09InJlY3RhbmdsZSIpe3A9Zyhbdy54LHcueV0sdS5ncmlkU3RhcnQsdS5ncmlkU3RvcCx1LnRvb2x0aXBXaWR0aEZhY3Rvcil9ZWxzZXtwPWgoW3cueCx3LnldLHUuZ3JpZFN0YXJ0LHUuZ3JpZFN0b3AsdS50b29sdGlwV2lkdGhGYWN0b3IpfXI9W3guYXhlc1t1Lm9wdGlvbnMueGF4aXNdLnNlcmllc19wMnUody54KSx4LmF4ZXNbdS5vcHRpb25zLnlheGlzXS5zZXJpZXNfcDJ1KHcueSldO2lmKHAmJnkuaGlnaGxpZ2h0T2JqZWN0SW5kZXg9PW51bGwpe3N3aXRjaCh1LnR5cGUpe2Nhc2UibGluZSI6ayh4LHUsW3cueCx3LnldLHIpO2JyZWFrO2Nhc2UiaG9yaXpvbnRhbExpbmUiOmNhc2UiZGFzaGVkSG9yaXpvbnRhbExpbmUiOmsoeCx1LFt3LngsdS5ncmlkU3RhcnRbMV1dLFtyWzBdLHUub3B0aW9ucy55XSk7YnJlYWs7Y2FzZSJ2ZXJ0aWNhbExpbmUiOmNhc2UiZGFzaGVkVmVydGljYWxMaW5lIjprKHgsdSxbdS5ncmlkU3RhcnRbMF0sdy55XSxbdS5vcHRpb25zLngsclsxXV0pO2JyZWFrO2Nhc2UicmVjdGFuZ2xlIjprKHgsdSxbdS5ncmlkU3RhcnRbMF0sdy55XSxbdS5vcHRpb25zLngsclsxXV0pO2JyZWFrO2RlZmF1bHQ6YnJlYWt9eS5oaWdobGlnaHRPYmplY3RJbmRleD10O289dHJ1ZTticmVha31lbHNle2lmKHAmJnkuaGlnaGxpZ2h0T2JqZWN0SW5kZXghPT10KXtxPXkuX3Rvb2x0aXBFbGVtO2lmKHUuZmFkZVRvb2x0aXApe3EuZmFkZU91dCh1LnRvb2x0aXBGYWRlU3BlZWQpfWVsc2V7cS5oaWRlKCl9c3dpdGNoKHUudHlwZSl7Y2FzZSJsaW5lIjprKHgsdSxbdy54LHcueV0scik7YnJlYWs7Y2FzZSJob3Jpem9udGFsTGluZSI6Y2FzZSJkYXNoZWRIb3Jpem9udGFsTGluZSI6ayh4LHUsW3cueCx1LmdyaWRTdGFydFsxXV0sW3JbMF0sdS5vcHRpb25zLnldKTticmVhaztjYXNlInZlcnRpY2FsTGluZSI6Y2FzZSJkYXNoZWRWZXJ0aWNhbExpbmUiOmsoeCx1LFt1LmdyaWRTdGFydFswXSx3LnldLFt1Lm9wdGlvbnMueCxyWzFdXSk7YnJlYWs7Y2FzZSJyZWN0YW5nbGUiOmsoeCx1LFt1LmdyaWRTdGFydFswXSx3LnldLFt1Lm9wdGlvbnMueCxyWzFdXSk7YnJlYWs7ZGVmYXVsdDpicmVha315LmhpZ2hsaWdodE9iamVjdEluZGV4PXQ7bz10cnVlO2JyZWFrfWVsc2V7aWYocCl7c3dpdGNoKHUudHlwZSl7Y2FzZSJsaW5lIjprKHgsdSxbdy54LHcueV0scik7YnJlYWs7Y2FzZSJob3Jpem9udGFsTGluZSI6Y2FzZSJkYXNoZWRIb3Jpem9udGFsTGluZSI6ayh4LHUsW3cueCx1LmdyaWRTdGFydFsxXV0sW3JbMF0sdS5vcHRpb25zLnldKTticmVhaztjYXNlInZlcnRpY2FsTGluZSI6Y2FzZSJkYXNoZWRWZXJ0aWNhbExpbmUiOmsoeCx1LFt1LmdyaWRTdGFydFswXSx3LnldLFt1Lm9wdGlvbnMueCxyWzFdXSk7YnJlYWs7Y2FzZSJyZWN0YW5nbGUiOmsoeCx1LFt1LmdyaWRTdGFydFswXSx3LnldLFt1Lm9wdGlvbnMueCxyWzFdXSk7YnJlYWs7ZGVmYXVsdDpicmVha31vPXRydWU7YnJlYWt9fX19fWlmKCFvJiZ5LmhpZ2hsaWdodE9iamVjdEluZGV4IT09bnVsbCl7cT15Ll90b29sdGlwRWxlbTt1PXkuZ2V0T2JqZWN0KHkuaGlnaGxpZ2h0T2JqZWN0SW5kZXgpO2lmKHUuZmFkZVRvb2x0aXApe3EuZmFkZU91dCh1LnRvb2x0aXBGYWRlU3BlZWQpfWVsc2V7cS5oaWRlKCl9eS5oaWdobGlnaHRPYmplY3RJbmRleD1udWxsfX1kLmpxcGxvdC5wb3N0SW5pdEhvb2tzLnB1c2goZC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wb3N0UGxvdEluaXQpO2QuanFwbG90LnBvc3REcmF3SG9va3MucHVzaChkLmpxcGxvdC5DYW52YXNPdmVybGF5LnBvc3RQbG90RHJhdyk7ZC5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLnB1c2goWyJqcXBsb3RNb3VzZU1vdmUiLGFdKX0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.canvasTextRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICoKICogaW5jbHVkZWQganNEYXRlIGxpYnJhcnkgYnkgQ2hyaXMgTGVvbmVsbG86CiAqCiAqIENvcHlyaWdodCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvCiAqCiAqIGpzRGF0ZSBpcyBjdXJyZW50bHkgYXZhaWxhYmxlIGZvciB1c2UgaW4gYWxsIHBlcnNvbmFsIG9yIGNvbW1lcmNpYWwgcHJvamVjdHMgCiAqIHVuZGVyIGJvdGggdGhlIE1JVCBhbmQgR1BMIHZlcnNpb24gMi4wIGxpY2Vuc2VzLiBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiAKICogY2hvb3NlIHRoZSBsaWNlbnNlIHRoYXQgYmVzdCBzdWl0cyB5b3VyIHByb2plY3QgYW5kIHVzZSBpdCBhY2NvcmRpbmdseS4KICoKICoganNEYXRlIGJvcnJvd3MgbWFueSBjb25jZXB0cyBhbmQgaWRlYXMgZnJvbSB0aGUgRGF0ZSBJbnN0YW5jZSAKICogTWV0aG9kcyBieSBLZW4gU255ZGVyIGFsb25nIHdpdGggc29tZSBwYXJ0cyBvZiBLZW4ncyBhY3R1YWwgY29kZS4KICogCiAqIEtlbidzIG9yaWdpbmFsIERhdGUgSW5zdGFuY2UgTWV0aG9kcyBhbmQgY29weXJpZ2h0IG5vdGljZToKICogCiAqIEtlbiBTbnlkZXIgKGtlbiBkIHNueWRlciBhdCBnbWFpbCBkb3QgY29tKQogKiAyMDA4LTA5LTEwCiAqIHZlcnNpb24gMi4wLjIgKGh0dHA6Ly9rZW5kc255ZGVyLmNvbS9zYW5kYm94L2RhdGUvKSAgICAgCiAqIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24gTGljZW5zZSAzLjAgKGh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzMuMC8pCiAqCiAqIGpxcGxvdFRvSW1hZ2UgZnVuY3Rpb24gYmFzZWQgb24gTGFycnkgU2lkZW4ncyBleHBvcnQtanFwbG90LXRvLXBuZy5qcy4KICogTGFycnkgaGFzIGdlbmVyb3VzbHkgZ2l2ZW4gcGVybWlzc2lvbiB0byBhZGFwdCBoaXMgY29kZSBmb3IgaW5jbHVzaW9uCiAqIGludG8ganFQbG90LgogKgogKiBMYXJyeSdzIG9yaWdpbmFsIGNvZGUgY2FuIGJlIGZvdW5kIGhlcmU6CiAqCiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9sc2lkZW4vZXhwb3J0LWpxcGxvdC10by1wbmcKICogCiAqIAogKi8KCihmdW5jdGlvbigkKSB7ICAgIAogICAgLy8gVGhpcyBjb2RlIGlzIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgY2FudmFzdGV4dC5qcyBjb2RlLCBjb3B5cmlnaHQgYmVsb3c6CiAgICAvLwogICAgLy8gVGhpcyBjb2RlIGlzIHJlbGVhc2VkIHRvIHRoZSBwdWJsaWMgZG9tYWluIGJ5IEppbSBTdHVkdCwgMjAwNy4KICAgIC8vIEhlIG1heSBrZWVwIHNvbWUgc29ydCBvZiB1cCB0byBkYXRlIGNvcHkgYXQgaHR0cDovL3d3dy5mZWRlcmF0ZWQuY29tL35qaW0vY2FudmFzdGV4dC8KICAgIC8vCiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIgPSBmdW5jdGlvbihvcHRpb25zKXsKICAgICAgICB0aGlzLmZvbnRTdHlsZSA9ICdub3JtYWwnOyAgLy8gbm9ybWFsLCBpdGFsaWMsIG9ibGlxdWUgW25vdCBpbXBsZW1lbnRlZF0KICAgICAgICB0aGlzLmZvbnRWYXJpYW50ID0gJ25vcm1hbCc7ICAgIC8vIG5vcm1hbCwgc21hbGwgY2FwcyBbbm90IGltcGxlbWVudGVkXQogICAgICAgIHRoaXMuZm9udFdlaWdodCA9ICdub3JtYWwnOyAvLyBub3JtYWwsIGJvbGQsIGJvbGRlciwgbGlnaHRlciwgMTAwIC0gOTAwCiAgICAgICAgdGhpcy5mb250U2l6ZSA9ICcxMHB4JzsgCiAgICAgICAgdGhpcy5mb250RmFtaWx5ID0gJ3NhbnMtc2VyaWYnOwogICAgICAgIHRoaXMuZm9udFN0cmV0Y2ggPSAxLjA7CiAgICAgICAgdGhpcy5maWxsU3R5bGUgPSAnIzY2NjY2Nic7CiAgICAgICAgdGhpcy5hbmdsZSA9IDA7CiAgICAgICAgdGhpcy50ZXh0QWxpZ24gPSAnc3RhcnQnOwogICAgICAgIHRoaXMudGV4dEJhc2VsaW5lID0gJ2FscGhhYmV0aWMnOwogICAgICAgIHRoaXMudGV4dDsKICAgICAgICB0aGlzLndpZHRoOwogICAgICAgIHRoaXMuaGVpZ2h0OwogICAgICAgIHRoaXMucHQycHggPSAxLjI4OwoKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgICAgICB0aGlzLm5vcm1hbGl6ZWRGb250U2l6ZSA9IHRoaXMubm9ybWFsaXplRm9udFNpemUodGhpcy5mb250U2l6ZSk7CiAgICAgICAgdGhpcy5zZXRIZWlnaHQoKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgICAgICB0aGlzLm5vcm1hbGl6ZWRGb250U2l6ZSA9IHRoaXMubm9ybWFsaXplRm9udFNpemUodGhpcy5mb250U2l6ZSk7CiAgICAgICAgdGhpcy5zZXRIZWlnaHQoKTsKICAgIH07CiAgICAKICAgIC8vIGNvbnZlcnQgY3NzIHNwZWMgaW50byBwb2ludCBzaXplCiAgICAvLyByZXR1cm5zIGZsb2F0CiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLm5vcm1hbGl6ZUZvbnRTaXplID0gZnVuY3Rpb24oc3opIHsKICAgICAgICBzeiA9IFN0cmluZyhzeik7CiAgICAgICAgdmFyIG4gPSBwYXJzZUZsb2F0KHN6KTsKICAgICAgICBpZiAoc3ouaW5kZXhPZigncHgnKSA+IC0xKSB7CiAgICAgICAgICAgIHJldHVybiBuL3RoaXMucHQycHg7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHN6LmluZGV4T2YoJ3B0JykgPiAtMSkgewogICAgICAgICAgICByZXR1cm4gbjsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoc3ouaW5kZXhPZignZW0nKSA+IC0xKSB7CiAgICAgICAgICAgIHJldHVybiBuKjEyOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChzei5pbmRleE9mKCclJykgPiAtMSkgewogICAgICAgICAgICByZXR1cm4gbioxMi8xMDA7CiAgICAgICAgfQogICAgICAgIC8vIGRlZmF1bHQgdG8gcGl4ZWxzOwogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gbi90aGlzLnB0MnB4OwogICAgICAgIH0KICAgIH07CiAgICAKICAgIAogICAgJC5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLnByb3RvdHlwZS5mb250V2VpZ2h0MkZsb2F0ID0gZnVuY3Rpb24odykgewogICAgICAgIC8vIHcgPSBub3JtYWwgfCBib2xkIHwgYm9sZGVyIHwgbGlnaHRlciB8IDEwMCB8IDIwMCB8IDMwMCB8IDQwMCB8IDUwMCB8IDYwMCB8IDcwMCB8IDgwMCB8IDkwMAogICAgICAgIC8vIHJldHVybiB2YWx1ZXMgYWRqdXN0ZWQgZm9yIEhlcnNoZXkgZm9udC4KICAgICAgICBpZiAoTnVtYmVyKHcpKSB7CiAgICAgICAgICAgIHJldHVybiB3LzQwMDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHN3aXRjaCAodykgewogICAgICAgICAgICAgICAgY2FzZSAnbm9ybWFsJzoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2JvbGQnOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAxLjc1OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnYm9sZGVyJzoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMi4yNTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2xpZ2h0ZXInOgogICAgICAgICAgICAgICAgICAgIHJldHVybiAwLjc1OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0gICAKICAgICAgICB9CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmdldFRleHQgPSBmdW5jdGlvbigpIHsKICAgICAgICByZXR1cm4gdGhpcy50ZXh0OwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLnByb3RvdHlwZS5zZXRUZXh0ID0gZnVuY3Rpb24odCwgY3R4KSB7CiAgICAgICAgdGhpcy50ZXh0ID0gdDsKICAgICAgICB0aGlzLnNldFdpZHRoKGN0eCk7CiAgICAgICAgcmV0dXJuIHRoaXM7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmdldFdpZHRoID0gZnVuY3Rpb24oY3R4KSB7CiAgICAgICAgcmV0dXJuIHRoaXMud2lkdGg7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLnNldFdpZHRoID0gZnVuY3Rpb24oY3R4LCB3KSB7CiAgICAgICAgaWYgKCF3KSB7CiAgICAgICAgICAgIHRoaXMud2lkdGggPSB0aGlzLm1lYXN1cmUoY3R4LCB0aGlzLnRleHQpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdGhpcy53aWR0aCA9IHc7ICAgCiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzOwogICAgfTsKICAgIAogICAgLy8gcmV0dXJuIGhlaWdodCBpbiBwaXhlbHMuCiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmdldEhlaWdodCA9IGZ1bmN0aW9uKGN0eCkgewogICAgICAgIHJldHVybiB0aGlzLmhlaWdodDsKICAgIH07CiAgICAKICAgIC8vIHcgLSBoZWlnaHQgaW4gcHQKICAgIC8vIHNldCBoZWlnaCBpbiBweAogICAgJC5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLnByb3RvdHlwZS5zZXRIZWlnaHQgPSBmdW5jdGlvbih3KSB7CiAgICAgICAgaWYgKCF3KSB7CiAgICAgICAgICAgIC8vaGVpZ2h0ID0gdGhpcy5mb250U2l6ZSAvMC43NTsKICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSB0aGlzLm5vcm1hbGl6ZWRGb250U2l6ZSAqIHRoaXMucHQycHg7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICB0aGlzLmhlaWdodCA9IHc7ICAgCiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzOwogICAgfTsKCiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmxldHRlciA9IGZ1bmN0aW9uIChjaCkKICAgIHsKICAgICAgICByZXR1cm4gdGhpcy5sZXR0ZXJzW2NoXTsKICAgIH07CgogICAgJC5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLnByb3RvdHlwZS5hc2NlbnQgPSBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuIHRoaXMubm9ybWFsaXplZEZvbnRTaXplOwogICAgfTsKCiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmRlc2NlbnQgPSBmdW5jdGlvbigpCiAgICB7CiAgICAgICAgcmV0dXJuIDcuMCp0aGlzLm5vcm1hbGl6ZWRGb250U2l6ZS8yNS4wOwogICAgfTsKCiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLm1lYXN1cmUgPSBmdW5jdGlvbihjdHgsIHN0cikKICAgIHsKICAgICAgICB2YXIgdG90YWwgPSAwOwogICAgICAgIHZhciBsZW4gPSBzdHIubGVuZ3RoOwogCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICAgICAgICB2YXIgYyA9IHRoaXMubGV0dGVyKHN0ci5jaGFyQXQoaSkpOwogICAgICAgICAgICBpZiAoYykgewogICAgICAgICAgICAgICAgdG90YWwgKz0gYy53aWR0aCAqIHRoaXMubm9ybWFsaXplZEZvbnRTaXplIC8gMjUuMCAqIHRoaXMuZm9udFN0cmV0Y2g7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRvdGFsOwogICAgfTsKCiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjdHgsc3RyKQogICAgewogICAgICAgIHZhciB4ID0gMDsKICAgICAgICAvLyBsZWF2ZSByb29tIGF0IGJvdHRvbSBmb3IgZGVzY2VuZGVycy4KICAgICAgICB2YXIgeSA9IHRoaXMuaGVpZ2h0KjAuNzI7CiAgICAgICAgIHZhciB0b3RhbCA9IDA7CiAgICAgICAgIHZhciBsZW4gPSBzdHIubGVuZ3RoOwogICAgICAgICB2YXIgbWFnID0gdGhpcy5ub3JtYWxpemVkRm9udFNpemUgLyAyNS4wOwoKICAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICAgdmFyIHR4LCB0eTsKICAgICAgICAgCiAgICAgICAgIC8vIDFzdCBxdWFkcmFudAogICAgICAgICBpZiAoKC1NYXRoLlBJLzIgPD0gdGhpcy5hbmdsZSAmJiB0aGlzLmFuZ2xlIDw9IDApIHx8IChNYXRoLlBJKjMvMiA8PSB0aGlzLmFuZ2xlICYmIHRoaXMuYW5nbGUgPD0gTWF0aC5QSSoyKSkgewogICAgICAgICAgICAgdHggPSAwOwogICAgICAgICAgICAgdHkgPSAtTWF0aC5zaW4odGhpcy5hbmdsZSkgKiB0aGlzLndpZHRoOwogICAgICAgICB9CiAgICAgICAgIC8vIDR0aCBxdWFkcmFudAogICAgICAgICBlbHNlIGlmICgoMCA8IHRoaXMuYW5nbGUgJiYgdGhpcy5hbmdsZSA8PSBNYXRoLlBJLzIpIHx8ICgtTWF0aC5QSSoyIDw9IHRoaXMuYW5nbGUgJiYgdGhpcy5hbmdsZSA8PSAtTWF0aC5QSSozLzIpKSB7CiAgICAgICAgICAgICB0eCA9IE1hdGguc2luKHRoaXMuYW5nbGUpICogdGhpcy5oZWlnaHQ7CiAgICAgICAgICAgICB0eSA9IDA7CiAgICAgICAgIH0KICAgICAgICAgLy8gMm5kIHF1YWRyYW50CiAgICAgICAgIGVsc2UgaWYgKCgtTWF0aC5QSSA8IHRoaXMuYW5nbGUgJiYgdGhpcy5hbmdsZSA8IC1NYXRoLlBJLzIpIHx8IChNYXRoLlBJIDw9IHRoaXMuYW5nbGUgJiYgdGhpcy5hbmdsZSA8PSBNYXRoLlBJKjMvMikpIHsKICAgICAgICAgICAgIHR4ID0gLU1hdGguY29zKHRoaXMuYW5nbGUpICogdGhpcy53aWR0aDsKICAgICAgICAgICAgIHR5ID0gLU1hdGguc2luKHRoaXMuYW5nbGUpICogdGhpcy53aWR0aCAtIE1hdGguY29zKHRoaXMuYW5nbGUpICogdGhpcy5oZWlnaHQ7CiAgICAgICAgIH0KICAgICAgICAgLy8gM3JkIHF1YWRyYW50CiAgICAgICAgIGVsc2UgaWYgKCgtTWF0aC5QSSozLzIgPCB0aGlzLmFuZ2xlICYmIHRoaXMuYW5nbGUgPCBNYXRoLlBJKSB8fCAoTWF0aC5QSS8yIDwgdGhpcy5hbmdsZSAmJiB0aGlzLmFuZ2xlIDwgTWF0aC5QSSkpIHsKICAgICAgICAgICAgIHR4ID0gTWF0aC5zaW4odGhpcy5hbmdsZSkgKiB0aGlzLmhlaWdodCAtIE1hdGguY29zKHRoaXMuYW5nbGUpKnRoaXMud2lkdGg7CiAgICAgICAgICAgICB0eSA9IC1NYXRoLmNvcyh0aGlzLmFuZ2xlKSAqIHRoaXMuaGVpZ2h0OwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSB0aGlzLmZpbGxTdHlsZTsKICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IHRoaXMuZmlsbFN0eWxlOwogICAgICAgICBjdHgudHJhbnNsYXRlKHR4LCB0eSk7CiAgICAgICAgIGN0eC5yb3RhdGUodGhpcy5hbmdsZSk7CiAgICAgICAgIGN0eC5saW5lQ2FwID0gInJvdW5kIjsKICAgICAgICAgLy8gbXVsdGlwbGllciB3YXMgMi4wCiAgICAgICAgIHZhciBmYWN0ID0gKHRoaXMubm9ybWFsaXplZEZvbnRTaXplID4gMzApID8gMi4wIDogMiArICgzMCAtIHRoaXMubm9ybWFsaXplZEZvbnRTaXplKS8yMDsKICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IGZhY3QgKiBtYWcgKiB0aGlzLmZvbnRXZWlnaHQyRmxvYXQodGhpcy5mb250V2VpZ2h0KTsKICAgICAgICAgCiAgICAgICAgIGZvciAoIHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgICAgIHZhciBjID0gdGhpcy5sZXR0ZXIoIHN0ci5jaGFyQXQoaSkpOwogICAgICAgICAgICBpZiAoICFjKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwoKICAgICAgICAgICAgdmFyIHBlblVwID0gMTsKICAgICAgICAgICAgdmFyIG5lZWRTdHJva2UgPSAwOwogICAgICAgICAgICBmb3IgKCB2YXIgaiA9IDA7IGogPCBjLnBvaW50cy5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgIHZhciBhID0gYy5wb2ludHNbal07CiAgICAgICAgICAgICAgaWYgKCBhWzBdID09IC0xICYmIGFbMV0gPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgcGVuVXAgPSAxOwogICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgaWYgKCBwZW5VcCkgewogICAgICAgICAgICAgICAgICBjdHgubW92ZVRvKCB4ICsgYVswXSptYWcqdGhpcy5mb250U3RyZXRjaCwgeSAtIGFbMV0qbWFnKTsKICAgICAgICAgICAgICAgICAgcGVuVXAgPSBmYWxzZTsKICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICBjdHgubGluZVRvKCB4ICsgYVswXSptYWcqdGhpcy5mb250U3RyZXRjaCwgeSAtIGFbMV0qbWFnKTsKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY3R4LnN0cm9rZSgpOwogICAgICAgICAgICB4ICs9IGMud2lkdGgqbWFnKnRoaXMuZm9udFN0cmV0Y2g7CiAgICAgICAgIH0KICAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgICAgICAgcmV0dXJuIHRvdGFsOwogICAgfTsKCiAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmxldHRlcnMgPSB7CiAgICAgICAgICcgJzogeyB3aWR0aDogMTYsIHBvaW50czogW10gfSwKICAgICAgICAgJyEnOiB7IHdpZHRoOiAxMCwgcG9pbnRzOiBbWzUsMjFdLFs1LDddLFstMSwtMV0sWzUsMl0sWzQsMV0sWzUsMF0sWzYsMV0sWzUsMl1dIH0sCiAgICAgICAgICciJzogeyB3aWR0aDogMTYsIHBvaW50czogW1s0LDIxXSxbNCwxNF0sWy0xLC0xXSxbMTIsMjFdLFsxMiwxNF1dIH0sCiAgICAgICAgICcjJzogeyB3aWR0aDogMjEsIHBvaW50czogW1sxMSwyNV0sWzQsLTddLFstMSwtMV0sWzE3LDI1XSxbMTAsLTddLFstMSwtMV0sWzQsMTJdLFsxOCwxMl0sWy0xLC0xXSxbMyw2XSxbMTcsNl1dIH0sCiAgICAgICAgICckJzogeyB3aWR0aDogMjAsIHBvaW50czogW1s4LDI1XSxbOCwtNF0sWy0xLC0xXSxbMTIsMjVdLFsxMiwtNF0sWy0xLC0xXSxbMTcsMThdLFsxNSwyMF0sWzEyLDIxXSxbOCwyMV0sWzUsMjBdLFszLDE4XSxbMywxNl0sWzQsMTRdLFs1LDEzXSxbNywxMl0sWzEzLDEwXSxbMTUsOV0sWzE2LDhdLFsxNyw2XSxbMTcsM10sWzE1LDFdLFsxMiwwXSxbOCwwXSxbNSwxXSxbMywzXV0gfSwKICAgICAgICAgJyUnOiB7IHdpZHRoOiAyNCwgcG9pbnRzOiBbWzIxLDIxXSxbMywwXSxbLTEsLTFdLFs4LDIxXSxbMTAsMTldLFsxMCwxN10sWzksMTVdLFs3LDE0XSxbNSwxNF0sWzMsMTZdLFszLDE4XSxbNCwyMF0sWzYsMjFdLFs4LDIxXSxbMTAsMjBdLFsxMywxOV0sWzE2LDE5XSxbMTksMjBdLFsyMSwyMV0sWy0xLC0xXSxbMTcsN10sWzE1LDZdLFsxNCw0XSxbMTQsMl0sWzE2LDBdLFsxOCwwXSxbMjAsMV0sWzIxLDNdLFsyMSw1XSxbMTksN10sWzE3LDddXSB9LAogICAgICAgICAnJic6IHsgd2lkdGg6IDI2LCBwb2ludHM6IFtbMjMsMTJdLFsyMywxM10sWzIyLDE0XSxbMjEsMTRdLFsyMCwxM10sWzE5LDExXSxbMTcsNl0sWzE1LDNdLFsxMywxXSxbMTEsMF0sWzcsMF0sWzUsMV0sWzQsMl0sWzMsNF0sWzMsNl0sWzQsOF0sWzUsOV0sWzEyLDEzXSxbMTMsMTRdLFsxNCwxNl0sWzE0LDE4XSxbMTMsMjBdLFsxMSwyMV0sWzksMjBdLFs4LDE4XSxbOCwxNl0sWzksMTNdLFsxMSwxMF0sWzE2LDNdLFsxOCwxXSxbMjAsMF0sWzIyLDBdLFsyMywxXSxbMjMsMl1dIH0sCiAgICAgICAgICdcJyc6IHsgd2lkdGg6IDEwLCBwb2ludHM6IFtbNSwxOV0sWzQsMjBdLFs1LDIxXSxbNiwyMF0sWzYsMThdLFs1LDE2XSxbNCwxNV1dIH0sCiAgICAgICAgICcoJzogeyB3aWR0aDogMTQsIHBvaW50czogW1sxMSwyNV0sWzksMjNdLFs3LDIwXSxbNSwxNl0sWzQsMTFdLFs0LDddLFs1LDJdLFs3LC0yXSxbOSwtNV0sWzExLC03XV0gfSwKICAgICAgICAgJyknOiB7IHdpZHRoOiAxNCwgcG9pbnRzOiBbWzMsMjVdLFs1LDIzXSxbNywyMF0sWzksMTZdLFsxMCwxMV0sWzEwLDddLFs5LDJdLFs3LC0yXSxbNSwtNV0sWzMsLTddXSB9LAogICAgICAgICAnKic6IHsgd2lkdGg6IDE2LCBwb2ludHM6IFtbOCwyMV0sWzgsOV0sWy0xLC0xXSxbMywxOF0sWzEzLDEyXSxbLTEsLTFdLFsxMywxOF0sWzMsMTJdXSB9LAogICAgICAgICAnKyc6IHsgd2lkdGg6IDI2LCBwb2ludHM6IFtbMTMsMThdLFsxMywwXSxbLTEsLTFdLFs0LDldLFsyMiw5XV0gfSwKICAgICAgICAgJywnOiB7IHdpZHRoOiAxMCwgcG9pbnRzOiBbWzYsMV0sWzUsMF0sWzQsMV0sWzUsMl0sWzYsMV0sWzYsLTFdLFs1LC0zXSxbNCwtNF1dIH0sCiAgICAgICAgICctJzogeyB3aWR0aDogMTgsIHBvaW50czogW1s2LDldLFsxMiw5XV0gfSwKICAgICAgICAgJy4nOiB7IHdpZHRoOiAxMCwgcG9pbnRzOiBbWzUsMl0sWzQsMV0sWzUsMF0sWzYsMV0sWzUsMl1dIH0sCiAgICAgICAgICcvJzogeyB3aWR0aDogMjIsIHBvaW50czogW1syMCwyNV0sWzIsLTddXSB9LAogICAgICAgICAnMCc6IHsgd2lkdGg6IDIwLCBwb2ludHM6IFtbOSwyMV0sWzYsMjBdLFs0LDE3XSxbMywxMl0sWzMsOV0sWzQsNF0sWzYsMV0sWzksMF0sWzExLDBdLFsxNCwxXSxbMTYsNF0sWzE3LDldLFsxNywxMl0sWzE2LDE3XSxbMTQsMjBdLFsxMSwyMV0sWzksMjFdXSB9LAogICAgICAgICAnMSc6IHsgd2lkdGg6IDIwLCBwb2ludHM6IFtbNiwxN10sWzgsMThdLFsxMSwyMV0sWzExLDBdXSB9LAogICAgICAgICAnMic6IHsgd2lkdGg6IDIwLCBwb2ludHM6IFtbNCwxNl0sWzQsMTddLFs1LDE5XSxbNiwyMF0sWzgsMjFdLFsxMiwyMV0sWzE0LDIwXSxbMTUsMTldLFsxNiwxN10sWzE2LDE1XSxbMTUsMTNdLFsxMywxMF0sWzMsMF0sWzE3LDBdXSB9LAogICAgICAgICAnMyc6IHsgd2lkdGg6IDIwLCBwb2ludHM6IFtbNSwyMV0sWzE2LDIxXSxbMTAsMTNdLFsxMywxM10sWzE1LDEyXSxbMTYsMTFdLFsxNyw4XSxbMTcsNl0sWzE2LDNdLFsxNCwxXSxbMTEsMF0sWzgsMF0sWzUsMV0sWzQsMl0sWzMsNF1dIH0sCiAgICAgICAgICc0JzogeyB3aWR0aDogMjAsIHBvaW50czogW1sxMywyMV0sWzMsN10sWzE4LDddLFstMSwtMV0sWzEzLDIxXSxbMTMsMF1dIH0sCiAgICAgICAgICc1JzogeyB3aWR0aDogMjAsIHBvaW50czogW1sxNSwyMV0sWzUsMjFdLFs0LDEyXSxbNSwxM10sWzgsMTRdLFsxMSwxNF0sWzE0LDEzXSxbMTYsMTFdLFsxNyw4XSxbMTcsNl0sWzE2LDNdLFsxNCwxXSxbMTEsMF0sWzgsMF0sWzUsMV0sWzQsMl0sWzMsNF1dIH0sCiAgICAgICAgICc2JzogeyB3aWR0aDogMjAsIHBvaW50czogW1sxNiwxOF0sWzE1LDIwXSxbMTIsMjFdLFsxMCwyMV0sWzcsMjBdLFs1LDE3XSxbNCwxMl0sWzQsN10sWzUsM10sWzcsMV0sWzEwLDBdLFsxMSwwXSxbMTQsMV0sWzE2LDNdLFsxNyw2XSxbMTcsN10sWzE2LDEwXSxbMTQsMTJdLFsxMSwxM10sWzEwLDEzXSxbNywxMl0sWzUsMTBdLFs0LDddXSB9LAogICAgICAgICAnNyc6IHsgd2lkdGg6IDIwLCBwb2ludHM6IFtbMTcsMjFdLFs3LDBdLFstMSwtMV0sWzMsMjFdLFsxNywyMV1dIH0sCiAgICAgICAgICc4JzogeyB3aWR0aDogMjAsIHBvaW50czogW1s4LDIxXSxbNSwyMF0sWzQsMThdLFs0LDE2XSxbNSwxNF0sWzcsMTNdLFsxMSwxMl0sWzE0LDExXSxbMTYsOV0sWzE3LDddLFsxNyw0XSxbMTYsMl0sWzE1LDFdLFsxMiwwXSxbOCwwXSxbNSwxXSxbNCwyXSxbMyw0XSxbMyw3XSxbNCw5XSxbNiwxMV0sWzksMTJdLFsxMywxM10sWzE1LDE0XSxbMTYsMTZdLFsxNiwxOF0sWzE1LDIwXSxbMTIsMjFdLFs4LDIxXV0gfSwKICAgICAgICAgJzknOiB7IHdpZHRoOiAyMCwgcG9pbnRzOiBbWzE2LDE0XSxbMTUsMTFdLFsxMyw5XSxbMTAsOF0sWzksOF0sWzYsOV0sWzQsMTFdLFszLDE0XSxbMywxNV0sWzQsMThdLFs2LDIwXSxbOSwyMV0sWzEwLDIxXSxbMTMsMjBdLFsxNSwxOF0sWzE2LDE0XSxbMTYsOV0sWzE1LDRdLFsxMywxXSxbMTAsMF0sWzgsMF0sWzUsMV0sWzQsM11dIH0sCiAgICAgICAgICc6JzogeyB3aWR0aDogMTAsIHBvaW50czogW1s1LDE0XSxbNCwxM10sWzUsMTJdLFs2LDEzXSxbNSwxNF0sWy0xLC0xXSxbNSwyXSxbNCwxXSxbNSwwXSxbNiwxXSxbNSwyXV0gfSwKICAgICAgICAgJzsnOiB7IHdpZHRoOiAxMCwgcG9pbnRzOiBbWzUsMTRdLFs0LDEzXSxbNSwxMl0sWzYsMTNdLFs1LDE0XSxbLTEsLTFdLFs2LDFdLFs1LDBdLFs0LDFdLFs1LDJdLFs2LDFdLFs2LC0xXSxbNSwtM10sWzQsLTRdXSB9LAogICAgICAgICAnPCc6IHsgd2lkdGg6IDI0LCBwb2ludHM6IFtbMjAsMThdLFs0LDldLFsyMCwwXV0gfSwKICAgICAgICAgJz0nOiB7IHdpZHRoOiAyNiwgcG9pbnRzOiBbWzQsMTJdLFsyMiwxMl0sWy0xLC0xXSxbNCw2XSxbMjIsNl1dIH0sCiAgICAgICAgICc+JzogeyB3aWR0aDogMjQsIHBvaW50czogW1s0LDE4XSxbMjAsOV0sWzQsMF1dIH0sCiAgICAgICAgICc/JzogeyB3aWR0aDogMTgsIHBvaW50czogW1szLDE2XSxbMywxN10sWzQsMTldLFs1LDIwXSxbNywyMV0sWzExLDIxXSxbMTMsMjBdLFsxNCwxOV0sWzE1LDE3XSxbMTUsMTVdLFsxNCwxM10sWzEzLDEyXSxbOSwxMF0sWzksN10sWy0xLC0xXSxbOSwyXSxbOCwxXSxbOSwwXSxbMTAsMV0sWzksMl1dIH0sCiAgICAgICAgICdAJzogeyB3aWR0aDogMjcsIHBvaW50czogW1sxOCwxM10sWzE3LDE1XSxbMTUsMTZdLFsxMiwxNl0sWzEwLDE1XSxbOSwxNF0sWzgsMTFdLFs4LDhdLFs5LDZdLFsxMSw1XSxbMTQsNV0sWzE2LDZdLFsxNyw4XSxbLTEsLTFdLFsxMiwxNl0sWzEwLDE0XSxbOSwxMV0sWzksOF0sWzEwLDZdLFsxMSw1XSxbLTEsLTFdLFsxOCwxNl0sWzE3LDhdLFsxNyw2XSxbMTksNV0sWzIxLDVdLFsyMyw3XSxbMjQsMTBdLFsyNCwxMl0sWzIzLDE1XSxbMjIsMTddLFsyMCwxOV0sWzE4LDIwXSxbMTUsMjFdLFsxMiwyMV0sWzksMjBdLFs3LDE5XSxbNSwxN10sWzQsMTVdLFszLDEyXSxbMyw5XSxbNCw2XSxbNSw0XSxbNywyXSxbOSwxXSxbMTIsMF0sWzE1LDBdLFsxOCwxXSxbMjAsMl0sWzIxLDNdLFstMSwtMV0sWzE5LDE2XSxbMTgsOF0sWzE4LDZdLFsxOSw1XV0gfSwKICAgICAgICAgJ0EnOiB7IHdpZHRoOiAxOCwgcG9pbnRzOiBbWzksMjFdLFsxLDBdLFstMSwtMV0sWzksMjFdLFsxNywwXSxbLTEsLTFdLFs0LDddLFsxNCw3XV0gfSwKICAgICAgICAgJ0InOiB7IHdpZHRoOiAyMSwgcG9pbnRzOiBbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzQsMjFdLFsxMywyMV0sWzE2LDIwXSxbMTcsMTldLFsxOCwxN10sWzE4LDE1XSxbMTcsMTNdLFsxNiwxMl0sWzEzLDExXSxbLTEsLTFdLFs0LDExXSxbMTMsMTFdLFsxNiwxMF0sWzE3LDldLFsxOCw3XSxbMTgsNF0sWzE3LDJdLFsxNiwxXSxbMTMsMF0sWzQsMF1dIH0sCiAgICAgICAgICdDJzogeyB3aWR0aDogMjEsIHBvaW50czogW1sxOCwxNl0sWzE3LDE4XSxbMTUsMjBdLFsxMywyMV0sWzksMjFdLFs3LDIwXSxbNSwxOF0sWzQsMTZdLFszLDEzXSxbMyw4XSxbNCw1XSxbNSwzXSxbNywxXSxbOSwwXSxbMTMsMF0sWzE1LDFdLFsxNywzXSxbMTgsNV1dIH0sCiAgICAgICAgICdEJzogeyB3aWR0aDogMjEsIHBvaW50czogW1s0LDIxXSxbNCwwXSxbLTEsLTFdLFs0LDIxXSxbMTEsMjFdLFsxNCwyMF0sWzE2LDE4XSxbMTcsMTZdLFsxOCwxM10sWzE4LDhdLFsxNyw1XSxbMTYsM10sWzE0LDFdLFsxMSwwXSxbNCwwXV0gfSwKICAgICAgICAgJ0UnOiB7IHdpZHRoOiAxOSwgcG9pbnRzOiBbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzQsMjFdLFsxNywyMV0sWy0xLC0xXSxbNCwxMV0sWzEyLDExXSxbLTEsLTFdLFs0LDBdLFsxNywwXV0gfSwKICAgICAgICAgJ0YnOiB7IHdpZHRoOiAxOCwgcG9pbnRzOiBbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzQsMjFdLFsxNywyMV0sWy0xLC0xXSxbNCwxMV0sWzEyLDExXV0gfSwKICAgICAgICAgJ0cnOiB7IHdpZHRoOiAyMSwgcG9pbnRzOiBbWzE4LDE2XSxbMTcsMThdLFsxNSwyMF0sWzEzLDIxXSxbOSwyMV0sWzcsMjBdLFs1LDE4XSxbNCwxNl0sWzMsMTNdLFszLDhdLFs0LDVdLFs1LDNdLFs3LDFdLFs5LDBdLFsxMywwXSxbMTUsMV0sWzE3LDNdLFsxOCw1XSxbMTgsOF0sWy0xLC0xXSxbMTMsOF0sWzE4LDhdXSB9LAogICAgICAgICAnSCc6IHsgd2lkdGg6IDIyLCBwb2ludHM6IFtbNCwyMV0sWzQsMF0sWy0xLC0xXSxbMTgsMjFdLFsxOCwwXSxbLTEsLTFdLFs0LDExXSxbMTgsMTFdXSB9LAogICAgICAgICAnSSc6IHsgd2lkdGg6IDgsIHBvaW50czogW1s0LDIxXSxbNCwwXV0gfSwKICAgICAgICAgJ0onOiB7IHdpZHRoOiAxNiwgcG9pbnRzOiBbWzEyLDIxXSxbMTIsNV0sWzExLDJdLFsxMCwxXSxbOCwwXSxbNiwwXSxbNCwxXSxbMywyXSxbMiw1XSxbMiw3XV0gfSwKICAgICAgICAgJ0snOiB7IHdpZHRoOiAyMSwgcG9pbnRzOiBbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzE4LDIxXSxbNCw3XSxbLTEsLTFdLFs5LDEyXSxbMTgsMF1dIH0sCiAgICAgICAgICdMJzogeyB3aWR0aDogMTcsIHBvaW50czogW1s0LDIxXSxbNCwwXSxbLTEsLTFdLFs0LDBdLFsxNiwwXV0gfSwKICAgICAgICAgJ00nOiB7IHdpZHRoOiAyNCwgcG9pbnRzOiBbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzQsMjFdLFsxMiwwXSxbLTEsLTFdLFsyMCwyMV0sWzEyLDBdLFstMSwtMV0sWzIwLDIxXSxbMjAsMF1dIH0sCiAgICAgICAgICdOJzogeyB3aWR0aDogMjIsIHBvaW50czogW1s0LDIxXSxbNCwwXSxbLTEsLTFdLFs0LDIxXSxbMTgsMF0sWy0xLC0xXSxbMTgsMjFdLFsxOCwwXV0gfSwKICAgICAgICAgJ08nOiB7IHdpZHRoOiAyMiwgcG9pbnRzOiBbWzksMjFdLFs3LDIwXSxbNSwxOF0sWzQsMTZdLFszLDEzXSxbMyw4XSxbNCw1XSxbNSwzXSxbNywxXSxbOSwwXSxbMTMsMF0sWzE1LDFdLFsxNywzXSxbMTgsNV0sWzE5LDhdLFsxOSwxM10sWzE4LDE2XSxbMTcsMThdLFsxNSwyMF0sWzEzLDIxXSxbOSwyMV1dIH0sCiAgICAgICAgICdQJzogeyB3aWR0aDogMjEsIHBvaW50czogW1s0LDIxXSxbNCwwXSxbLTEsLTFdLFs0LDIxXSxbMTMsMjFdLFsxNiwyMF0sWzE3LDE5XSxbMTgsMTddLFsxOCwxNF0sWzE3LDEyXSxbMTYsMTFdLFsxMywxMF0sWzQsMTBdXSB9LAogICAgICAgICAnUSc6IHsgd2lkdGg6IDIyLCBwb2ludHM6IFtbOSwyMV0sWzcsMjBdLFs1LDE4XSxbNCwxNl0sWzMsMTNdLFszLDhdLFs0LDVdLFs1LDNdLFs3LDFdLFs5LDBdLFsxMywwXSxbMTUsMV0sWzE3LDNdLFsxOCw1XSxbMTksOF0sWzE5LDEzXSxbMTgsMTZdLFsxNywxOF0sWzE1LDIwXSxbMTMsMjFdLFs5LDIxXSxbLTEsLTFdLFsxMiw0XSxbMTgsLTJdXSB9LAogICAgICAgICAnUic6IHsgd2lkdGg6IDIxLCBwb2ludHM6IFtbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwyMV0sWzEzLDIxXSxbMTYsMjBdLFsxNywxOV0sWzE4LDE3XSxbMTgsMTVdLFsxNywxM10sWzE2LDEyXSxbMTMsMTFdLFs0LDExXSxbLTEsLTFdLFsxMSwxMV0sWzE4LDBdXSB9LAogICAgICAgICAnUyc6IHsgd2lkdGg6IDIwLCBwb2ludHM6IFtbMTcsMThdLFsxNSwyMF0sWzEyLDIxXSxbOCwyMV0sWzUsMjBdLFszLDE4XSxbMywxNl0sWzQsMTRdLFs1LDEzXSxbNywxMl0sWzEzLDEwXSxbMTUsOV0sWzE2LDhdLFsxNyw2XSxbMTcsM10sWzE1LDFdLFsxMiwwXSxbOCwwXSxbNSwxXSxbMywzXV0gfSwKICAgICAgICAgJ1QnOiB7IHdpZHRoOiAxNiwgcG9pbnRzOiBbWzgsMjFdLFs4LDBdLFstMSwtMV0sWzEsMjFdLFsxNSwyMV1dIH0sCiAgICAgICAgICdVJzogeyB3aWR0aDogMjIsIHBvaW50czogW1s0LDIxXSxbNCw2XSxbNSwzXSxbNywxXSxbMTAsMF0sWzEyLDBdLFsxNSwxXSxbMTcsM10sWzE4LDZdLFsxOCwyMV1dIH0sCiAgICAgICAgICdWJzogeyB3aWR0aDogMTgsIHBvaW50czogW1sxLDIxXSxbOSwwXSxbLTEsLTFdLFsxNywyMV0sWzksMF1dIH0sCiAgICAgICAgICdXJzogeyB3aWR0aDogMjQsIHBvaW50czogW1syLDIxXSxbNywwXSxbLTEsLTFdLFsxMiwyMV0sWzcsMF0sWy0xLC0xXSxbMTIsMjFdLFsxNywwXSxbLTEsLTFdLFsyMiwyMV0sWzE3LDBdXSB9LAogICAgICAgICAnWCc6IHsgd2lkdGg6IDIwLCBwb2ludHM6IFtbMywyMV0sWzE3LDBdLFstMSwtMV0sWzE3LDIxXSxbMywwXV0gfSwKICAgICAgICAgJ1knOiB7IHdpZHRoOiAxOCwgcG9pbnRzOiBbWzEsMjFdLFs5LDExXSxbOSwwXSxbLTEsLTFdLFsxNywyMV0sWzksMTFdXSB9LAogICAgICAgICAnWic6IHsgd2lkdGg6IDIwLCBwb2ludHM6IFtbMTcsMjFdLFszLDBdLFstMSwtMV0sWzMsMjFdLFsxNywyMV0sWy0xLC0xXSxbMywwXSxbMTcsMF1dIH0sCiAgICAgICAgICdbJzogeyB3aWR0aDogMTQsIHBvaW50czogW1s0LDI1XSxbNCwtN10sWy0xLC0xXSxbNSwyNV0sWzUsLTddLFstMSwtMV0sWzQsMjVdLFsxMSwyNV0sWy0xLC0xXSxbNCwtN10sWzExLC03XV0gfSwKICAgICAgICAgJ1xcJzogeyB3aWR0aDogMTQsIHBvaW50czogW1swLDIxXSxbMTQsLTNdXSB9LAogICAgICAgICAnXSc6IHsgd2lkdGg6IDE0LCBwb2ludHM6IFtbOSwyNV0sWzksLTddLFstMSwtMV0sWzEwLDI1XSxbMTAsLTddLFstMSwtMV0sWzMsMjVdLFsxMCwyNV0sWy0xLC0xXSxbMywtN10sWzEwLC03XV0gfSwKICAgICAgICAgJ14nOiB7IHdpZHRoOiAxNiwgcG9pbnRzOiBbWzYsMTVdLFs4LDE4XSxbMTAsMTVdLFstMSwtMV0sWzMsMTJdLFs4LDE3XSxbMTMsMTJdLFstMSwtMV0sWzgsMTddLFs4LDBdXSB9LAogICAgICAgICAnXyc6IHsgd2lkdGg6IDE2LCBwb2ludHM6IFtbMCwtMl0sWzE2LC0yXV0gfSwKICAgICAgICAgJ2AnOiB7IHdpZHRoOiAxMCwgcG9pbnRzOiBbWzYsMjFdLFs1LDIwXSxbNCwxOF0sWzQsMTZdLFs1LDE1XSxbNiwxNl0sWzUsMTddXSB9LAogICAgICAgICAnYSc6IHsgd2lkdGg6IDE5LCBwb2ludHM6IFtbMTUsMTRdLFsxNSwwXSxbLTEsLTFdLFsxNSwxMV0sWzEzLDEzXSxbMTEsMTRdLFs4LDE0XSxbNiwxM10sWzQsMTFdLFszLDhdLFszLDZdLFs0LDNdLFs2LDFdLFs4LDBdLFsxMSwwXSxbMTMsMV0sWzE1LDNdXSB9LAogICAgICAgICAnYic6IHsgd2lkdGg6IDE5LCBwb2ludHM6IFtbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwxMV0sWzYsMTNdLFs4LDE0XSxbMTEsMTRdLFsxMywxM10sWzE1LDExXSxbMTYsOF0sWzE2LDZdLFsxNSwzXSxbMTMsMV0sWzExLDBdLFs4LDBdLFs2LDFdLFs0LDNdXSB9LAogICAgICAgICAnYyc6IHsgd2lkdGg6IDE4LCBwb2ludHM6IFtbMTUsMTFdLFsxMywxM10sWzExLDE0XSxbOCwxNF0sWzYsMTNdLFs0LDExXSxbMyw4XSxbMyw2XSxbNCwzXSxbNiwxXSxbOCwwXSxbMTEsMF0sWzEzLDFdLFsxNSwzXV0gfSwKICAgICAgICAgJ2QnOiB7IHdpZHRoOiAxOSwgcG9pbnRzOiBbWzE1LDIxXSxbMTUsMF0sWy0xLC0xXSxbMTUsMTFdLFsxMywxM10sWzExLDE0XSxbOCwxNF0sWzYsMTNdLFs0LDExXSxbMyw4XSxbMyw2XSxbNCwzXSxbNiwxXSxbOCwwXSxbMTEsMF0sWzEzLDFdLFsxNSwzXV0gfSwKICAgICAgICAgJ2UnOiB7IHdpZHRoOiAxOCwgcG9pbnRzOiBbWzMsOF0sWzE1LDhdLFsxNSwxMF0sWzE0LDEyXSxbMTMsMTNdLFsxMSwxNF0sWzgsMTRdLFs2LDEzXSxbNCwxMV0sWzMsOF0sWzMsNl0sWzQsM10sWzYsMV0sWzgsMF0sWzExLDBdLFsxMywxXSxbMTUsM11dIH0sCiAgICAgICAgICdmJzogeyB3aWR0aDogMTIsIHBvaW50czogW1sxMCwyMV0sWzgsMjFdLFs2LDIwXSxbNSwxN10sWzUsMF0sWy0xLC0xXSxbMiwxNF0sWzksMTRdXSB9LAogICAgICAgICAnZyc6IHsgd2lkdGg6IDE5LCBwb2ludHM6IFtbMTUsMTRdLFsxNSwtMl0sWzE0LC01XSxbMTMsLTZdLFsxMSwtN10sWzgsLTddLFs2LC02XSxbLTEsLTFdLFsxNSwxMV0sWzEzLDEzXSxbMTEsMTRdLFs4LDE0XSxbNiwxM10sWzQsMTFdLFszLDhdLFszLDZdLFs0LDNdLFs2LDFdLFs4LDBdLFsxMSwwXSxbMTMsMV0sWzE1LDNdXSB9LAogICAgICAgICAnaCc6IHsgd2lkdGg6IDE5LCBwb2ludHM6IFtbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwxMF0sWzcsMTNdLFs5LDE0XSxbMTIsMTRdLFsxNCwxM10sWzE1LDEwXSxbMTUsMF1dIH0sCiAgICAgICAgICdpJzogeyB3aWR0aDogOCwgcG9pbnRzOiBbWzMsMjFdLFs0LDIwXSxbNSwyMV0sWzQsMjJdLFszLDIxXSxbLTEsLTFdLFs0LDE0XSxbNCwwXV0gfSwKICAgICAgICAgJ2onOiB7IHdpZHRoOiAxMCwgcG9pbnRzOiBbWzUsMjFdLFs2LDIwXSxbNywyMV0sWzYsMjJdLFs1LDIxXSxbLTEsLTFdLFs2LDE0XSxbNiwtM10sWzUsLTZdLFszLC03XSxbMSwtN11dIH0sCiAgICAgICAgICdrJzogeyB3aWR0aDogMTcsIHBvaW50czogW1s0LDIxXSxbNCwwXSxbLTEsLTFdLFsxNCwxNF0sWzQsNF0sWy0xLC0xXSxbOCw4XSxbMTUsMF1dIH0sCiAgICAgICAgICdsJzogeyB3aWR0aDogOCwgcG9pbnRzOiBbWzQsMjFdLFs0LDBdXSB9LAogICAgICAgICAnbSc6IHsgd2lkdGg6IDMwLCBwb2ludHM6IFtbNCwxNF0sWzQsMF0sWy0xLC0xXSxbNCwxMF0sWzcsMTNdLFs5LDE0XSxbMTIsMTRdLFsxNCwxM10sWzE1LDEwXSxbMTUsMF0sWy0xLC0xXSxbMTUsMTBdLFsxOCwxM10sWzIwLDE0XSxbMjMsMTRdLFsyNSwxM10sWzI2LDEwXSxbMjYsMF1dIH0sCiAgICAgICAgICduJzogeyB3aWR0aDogMTksIHBvaW50czogW1s0LDE0XSxbNCwwXSxbLTEsLTFdLFs0LDEwXSxbNywxM10sWzksMTRdLFsxMiwxNF0sWzE0LDEzXSxbMTUsMTBdLFsxNSwwXV0gfSwKICAgICAgICAgJ28nOiB7IHdpZHRoOiAxOSwgcG9pbnRzOiBbWzgsMTRdLFs2LDEzXSxbNCwxMV0sWzMsOF0sWzMsNl0sWzQsM10sWzYsMV0sWzgsMF0sWzExLDBdLFsxMywxXSxbMTUsM10sWzE2LDZdLFsxNiw4XSxbMTUsMTFdLFsxMywxM10sWzExLDE0XSxbOCwxNF1dIH0sCiAgICAgICAgICdwJzogeyB3aWR0aDogMTksIHBvaW50czogW1s0LDE0XSxbNCwtN10sWy0xLC0xXSxbNCwxMV0sWzYsMTNdLFs4LDE0XSxbMTEsMTRdLFsxMywxM10sWzE1LDExXSxbMTYsOF0sWzE2LDZdLFsxNSwzXSxbMTMsMV0sWzExLDBdLFs4LDBdLFs2LDFdLFs0LDNdXSB9LAogICAgICAgICAncSc6IHsgd2lkdGg6IDE5LCBwb2ludHM6IFtbMTUsMTRdLFsxNSwtN10sWy0xLC0xXSxbMTUsMTFdLFsxMywxM10sWzExLDE0XSxbOCwxNF0sWzYsMTNdLFs0LDExXSxbMyw4XSxbMyw2XSxbNCwzXSxbNiwxXSxbOCwwXSxbMTEsMF0sWzEzLDFdLFsxNSwzXV0gfSwKICAgICAgICAgJ3InOiB7IHdpZHRoOiAxMywgcG9pbnRzOiBbWzQsMTRdLFs0LDBdLFstMSwtMV0sWzQsOF0sWzUsMTFdLFs3LDEzXSxbOSwxNF0sWzEyLDE0XV0gfSwKICAgICAgICAgJ3MnOiB7IHdpZHRoOiAxNywgcG9pbnRzOiBbWzE0LDExXSxbMTMsMTNdLFsxMCwxNF0sWzcsMTRdLFs0LDEzXSxbMywxMV0sWzQsOV0sWzYsOF0sWzExLDddLFsxMyw2XSxbMTQsNF0sWzE0LDNdLFsxMywxXSxbMTAsMF0sWzcsMF0sWzQsMV0sWzMsM11dIH0sCiAgICAgICAgICd0JzogeyB3aWR0aDogMTIsIHBvaW50czogW1s1LDIxXSxbNSw0XSxbNiwxXSxbOCwwXSxbMTAsMF0sWy0xLC0xXSxbMiwxNF0sWzksMTRdXSB9LAogICAgICAgICAndSc6IHsgd2lkdGg6IDE5LCBwb2ludHM6IFtbNCwxNF0sWzQsNF0sWzUsMV0sWzcsMF0sWzEwLDBdLFsxMiwxXSxbMTUsNF0sWy0xLC0xXSxbMTUsMTRdLFsxNSwwXV0gfSwKICAgICAgICAgJ3YnOiB7IHdpZHRoOiAxNiwgcG9pbnRzOiBbWzIsMTRdLFs4LDBdLFstMSwtMV0sWzE0LDE0XSxbOCwwXV0gfSwKICAgICAgICAgJ3cnOiB7IHdpZHRoOiAyMiwgcG9pbnRzOiBbWzMsMTRdLFs3LDBdLFstMSwtMV0sWzExLDE0XSxbNywwXSxbLTEsLTFdLFsxMSwxNF0sWzE1LDBdLFstMSwtMV0sWzE5LDE0XSxbMTUsMF1dIH0sCiAgICAgICAgICd4JzogeyB3aWR0aDogMTcsIHBvaW50czogW1szLDE0XSxbMTQsMF0sWy0xLC0xXSxbMTQsMTRdLFszLDBdXSB9LAogICAgICAgICAneSc6IHsgd2lkdGg6IDE2LCBwb2ludHM6IFtbMiwxNF0sWzgsMF0sWy0xLC0xXSxbMTQsMTRdLFs4LDBdLFs2LC00XSxbNCwtNl0sWzIsLTddLFsxLC03XV0gfSwKICAgICAgICAgJ3onOiB7IHdpZHRoOiAxNywgcG9pbnRzOiBbWzE0LDE0XSxbMywwXSxbLTEsLTFdLFszLDE0XSxbMTQsMTRdLFstMSwtMV0sWzMsMF0sWzE0LDBdXSB9LAogICAgICAgICAneyc6IHsgd2lkdGg6IDE0LCBwb2ludHM6IFtbOSwyNV0sWzcsMjRdLFs2LDIzXSxbNSwyMV0sWzUsMTldLFs2LDE3XSxbNywxNl0sWzgsMTRdLFs4LDEyXSxbNiwxMF0sWy0xLC0xXSxbNywyNF0sWzYsMjJdLFs2LDIwXSxbNywxOF0sWzgsMTddLFs5LDE1XSxbOSwxM10sWzgsMTFdLFs0LDldLFs4LDddLFs5LDVdLFs5LDNdLFs4LDFdLFs3LDBdLFs2LC0yXSxbNiwtNF0sWzcsLTZdLFstMSwtMV0sWzYsOF0sWzgsNl0sWzgsNF0sWzcsMl0sWzYsMV0sWzUsLTFdLFs1LC0zXSxbNiwtNV0sWzcsLTZdLFs5LC03XV0gfSwKICAgICAgICAgJ3wnOiB7IHdpZHRoOiA4LCBwb2ludHM6IFtbNCwyNV0sWzQsLTddXSB9LAogICAgICAgICAnfSc6IHsgd2lkdGg6IDE0LCBwb2ludHM6IFtbNSwyNV0sWzcsMjRdLFs4LDIzXSxbOSwyMV0sWzksMTldLFs4LDE3XSxbNywxNl0sWzYsMTRdLFs2LDEyXSxbOCwxMF0sWy0xLC0xXSxbNywyNF0sWzgsMjJdLFs4LDIwXSxbNywxOF0sWzYsMTddLFs1LDE1XSxbNSwxM10sWzYsMTFdLFsxMCw5XSxbNiw3XSxbNSw1XSxbNSwzXSxbNiwxXSxbNywwXSxbOCwtMl0sWzgsLTRdLFs3LC02XSxbLTEsLTFdLFs4LDhdLFs2LDZdLFs2LDRdLFs3LDJdLFs4LDFdLFs5LC0xXSxbOSwtM10sWzgsLTVdLFs3LC02XSxbNSwtN11dIH0sCiAgICAgICAgICd+JzogeyB3aWR0aDogMjQsIHBvaW50czogW1szLDZdLFszLDhdLFs0LDExXSxbNiwxMl0sWzgsMTJdLFsxMCwxMV0sWzE0LDhdLFsxNiw3XSxbMTgsN10sWzIwLDhdLFsyMSwxMF0sWy0xLC0xXSxbMyw4XSxbNCwxMF0sWzYsMTFdLFs4LDExXSxbMTAsMTBdLFsxNCw3XSxbMTYsNl0sWzE4LDZdLFsyMCw3XSxbMjEsMTBdLFsyMSwxMl1dIH0KICAgICB9OwogICAgIAogICAgJC5qcXBsb3QuQ2FudmFzRm9udFJlbmRlcmVyID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogICAgICAgIGlmICghb3B0aW9ucy5wdDJweCkgewogICAgICAgICAgICBvcHRpb25zLnB0MnB4ID0gMS41OwogICAgICAgIH0KICAgICAgICAkLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIuY2FsbCh0aGlzLCBvcHRpb25zKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkNhbnZhc0ZvbnRSZW5kZXJlci5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyKHt9KTsKICAgICQuanFwbG90LkNhbnZhc0ZvbnRSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5DYW52YXNGb250UmVuZGVyZXI7CgogICAgJC5qcXBsb3QuQ2FudmFzRm9udFJlbmRlcmVyLnByb3RvdHlwZS5tZWFzdXJlID0gZnVuY3Rpb24oY3R4LCBzdHIpCiAgICB7CiAgICAgICAgLy8gdmFyIGZzdHlsZSA9IHRoaXMuZm9udFN0eWxlKycgJyt0aGlzLmZvbnRWYXJpYW50KycgJyt0aGlzLmZvbnRXZWlnaHQrJyAnK3RoaXMuZm9udFNpemUrJyAnK3RoaXMuZm9udEZhbWlseTsKICAgICAgICB2YXIgZnN0eWxlID0gdGhpcy5mb250U2l6ZSsnICcrdGhpcy5mb250RmFtaWx5OwogICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgY3R4LmZvbnQgPSBmc3R5bGU7CiAgICAgICAgdmFyIHcgPSBjdHgubWVhc3VyZVRleHQoc3RyKS53aWR0aDsKICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICAgIHJldHVybiB3OwogICAgfTsKCiAgICAkLmpxcGxvdC5DYW52YXNGb250UmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjdHgsIHN0cikKICAgIHsKICAgICAgICB2YXIgeCA9IDA7CiAgICAgICAgLy8gbGVhdmUgcm9vbSBhdCBib3R0b20gZm9yIGRlc2NlbmRlcnMuCiAgICAgICAgdmFyIHkgPSB0aGlzLmhlaWdodCowLjcyOwogICAgICAgIC8vdmFyIHkgPSAxMjsKCiAgICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgIHZhciB0eCwgdHk7CiAgICAgICAgIAogICAgICAgICAvLyAxc3QgcXVhZHJhbnQKICAgICAgICAgaWYgKCgtTWF0aC5QSS8yIDw9IHRoaXMuYW5nbGUgJiYgdGhpcy5hbmdsZSA8PSAwKSB8fCAoTWF0aC5QSSozLzIgPD0gdGhpcy5hbmdsZSAmJiB0aGlzLmFuZ2xlIDw9IE1hdGguUEkqMikpIHsKICAgICAgICAgICAgIHR4ID0gMDsKICAgICAgICAgICAgIHR5ID0gLU1hdGguc2luKHRoaXMuYW5nbGUpICogdGhpcy53aWR0aDsKICAgICAgICAgfQogICAgICAgICAvLyA0dGggcXVhZHJhbnQKICAgICAgICAgZWxzZSBpZiAoKDAgPCB0aGlzLmFuZ2xlICYmIHRoaXMuYW5nbGUgPD0gTWF0aC5QSS8yKSB8fCAoLU1hdGguUEkqMiA8PSB0aGlzLmFuZ2xlICYmIHRoaXMuYW5nbGUgPD0gLU1hdGguUEkqMy8yKSkgewogICAgICAgICAgICAgdHggPSBNYXRoLnNpbih0aGlzLmFuZ2xlKSAqIHRoaXMuaGVpZ2h0OwogICAgICAgICAgICAgdHkgPSAwOwogICAgICAgICB9CiAgICAgICAgIC8vIDJuZCBxdWFkcmFudAogICAgICAgICBlbHNlIGlmICgoLU1hdGguUEkgPCB0aGlzLmFuZ2xlICYmIHRoaXMuYW5nbGUgPCAtTWF0aC5QSS8yKSB8fCAoTWF0aC5QSSA8PSB0aGlzLmFuZ2xlICYmIHRoaXMuYW5nbGUgPD0gTWF0aC5QSSozLzIpKSB7CiAgICAgICAgICAgICB0eCA9IC1NYXRoLmNvcyh0aGlzLmFuZ2xlKSAqIHRoaXMud2lkdGg7CiAgICAgICAgICAgICB0eSA9IC1NYXRoLnNpbih0aGlzLmFuZ2xlKSAqIHRoaXMud2lkdGggLSBNYXRoLmNvcyh0aGlzLmFuZ2xlKSAqIHRoaXMuaGVpZ2h0OwogICAgICAgICB9CiAgICAgICAgIC8vIDNyZCBxdWFkcmFudAogICAgICAgICBlbHNlIGlmICgoLU1hdGguUEkqMy8yIDwgdGhpcy5hbmdsZSAmJiB0aGlzLmFuZ2xlIDwgTWF0aC5QSSkgfHwgKE1hdGguUEkvMiA8IHRoaXMuYW5nbGUgJiYgdGhpcy5hbmdsZSA8IE1hdGguUEkpKSB7CiAgICAgICAgICAgICB0eCA9IE1hdGguc2luKHRoaXMuYW5nbGUpICogdGhpcy5oZWlnaHQgLSBNYXRoLmNvcyh0aGlzLmFuZ2xlKSp0aGlzLndpZHRoOwogICAgICAgICAgICAgdHkgPSAtTWF0aC5jb3ModGhpcy5hbmdsZSkgKiB0aGlzLmhlaWdodDsKICAgICAgICAgfQogICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSB0aGlzLmZpbGxTdHlsZTsKICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IHRoaXMuZmlsbFN0eWxlOwogICAgICAgIC8vIHZhciBmc3R5bGUgPSB0aGlzLmZvbnRTdHlsZSsnICcrdGhpcy5mb250VmFyaWFudCsnICcrdGhpcy5mb250V2VpZ2h0KycgJyt0aGlzLmZvbnRTaXplKycgJyt0aGlzLmZvbnRGYW1pbHk7CiAgICAgICAgdmFyIGZzdHlsZSA9IHRoaXMuZm9udFNpemUrJyAnK3RoaXMuZm9udEZhbWlseTsKICAgICAgICAgY3R4LmZvbnQgPSBmc3R5bGU7CiAgICAgICAgIGN0eC50cmFuc2xhdGUodHgsIHR5KTsKICAgICAgICAgY3R4LnJvdGF0ZSh0aGlzLmFuZ2xlKTsKICAgICAgICAgY3R4LmZpbGxUZXh0KHN0ciwgeCwgeSk7CiAgICAgICAgIC8vIGN0eC5zdHJva2VUZXh0KHN0ciwgeCwgeSk7CgogICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgfTsKICAgIAp9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.canvasTextRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGEpe2EuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlcj1mdW5jdGlvbihiKXt0aGlzLmZvbnRTdHlsZT0ibm9ybWFsIjt0aGlzLmZvbnRWYXJpYW50PSJub3JtYWwiO3RoaXMuZm9udFdlaWdodD0ibm9ybWFsIjt0aGlzLmZvbnRTaXplPSIxMHB4Ijt0aGlzLmZvbnRGYW1pbHk9InNhbnMtc2VyaWYiO3RoaXMuZm9udFN0cmV0Y2g9MTt0aGlzLmZpbGxTdHlsZT0iIzY2NjY2NiI7dGhpcy5hbmdsZT0wO3RoaXMudGV4dEFsaWduPSJzdGFydCI7dGhpcy50ZXh0QmFzZWxpbmU9ImFscGhhYmV0aWMiO3RoaXMudGV4dDt0aGlzLndpZHRoO3RoaXMuaGVpZ2h0O3RoaXMucHQycHg9MS4yODthLmV4dGVuZCh0cnVlLHRoaXMsYik7dGhpcy5ub3JtYWxpemVkRm9udFNpemU9dGhpcy5ub3JtYWxpemVGb250U2l6ZSh0aGlzLmZvbnRTaXplKTt0aGlzLnNldEhlaWdodCgpfTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oYil7YS5leHRlbmQodHJ1ZSx0aGlzLGIpO3RoaXMubm9ybWFsaXplZEZvbnRTaXplPXRoaXMubm9ybWFsaXplRm9udFNpemUodGhpcy5mb250U2l6ZSk7dGhpcy5zZXRIZWlnaHQoKX07YS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLnByb3RvdHlwZS5ub3JtYWxpemVGb250U2l6ZT1mdW5jdGlvbihiKXtiPVN0cmluZyhiKTt2YXIgYz1wYXJzZUZsb2F0KGIpO2lmKGIuaW5kZXhPZigicHgiKT4tMSl7cmV0dXJuIGMvdGhpcy5wdDJweH1lbHNle2lmKGIuaW5kZXhPZigicHQiKT4tMSl7cmV0dXJuIGN9ZWxzZXtpZihiLmluZGV4T2YoImVtIik+LTEpe3JldHVybiBjKjEyfWVsc2V7aWYoYi5pbmRleE9mKCIlIik+LTEpe3JldHVybiBjKjEyLzEwMH1lbHNle3JldHVybiBjL3RoaXMucHQycHh9fX19fTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmZvbnRXZWlnaHQyRmxvYXQ9ZnVuY3Rpb24oYil7aWYoTnVtYmVyKGIpKXtyZXR1cm4gYi80MDB9ZWxzZXtzd2l0Y2goYil7Y2FzZSJub3JtYWwiOnJldHVybiAxO2JyZWFrO2Nhc2UiYm9sZCI6cmV0dXJuIDEuNzU7YnJlYWs7Y2FzZSJib2xkZXIiOnJldHVybiAyLjI1O2JyZWFrO2Nhc2UibGlnaHRlciI6cmV0dXJuIDAuNzU7YnJlYWs7ZGVmYXVsdDpyZXR1cm4gMTticmVha319fTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmdldFRleHQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0fTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLnNldFRleHQ9ZnVuY3Rpb24oYyxiKXt0aGlzLnRleHQ9Yzt0aGlzLnNldFdpZHRoKGIpO3JldHVybiB0aGlzfTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmdldFdpZHRoPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLndpZHRofTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLnNldFdpZHRoPWZ1bmN0aW9uKGMsYil7aWYoIWIpe3RoaXMud2lkdGg9dGhpcy5tZWFzdXJlKGMsdGhpcy50ZXh0KX1lbHNle3RoaXMud2lkdGg9Yn1yZXR1cm4gdGhpc307YS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLnByb3RvdHlwZS5nZXRIZWlnaHQ9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMuaGVpZ2h0fTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLnNldEhlaWdodD1mdW5jdGlvbihiKXtpZighYil7dGhpcy5oZWlnaHQ9dGhpcy5ub3JtYWxpemVkRm9udFNpemUqdGhpcy5wdDJweH1lbHNle3RoaXMuaGVpZ2h0PWJ9cmV0dXJuIHRoaXN9O2EuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlci5wcm90b3R5cGUubGV0dGVyPWZ1bmN0aW9uKGIpe3JldHVybiB0aGlzLmxldHRlcnNbYl19O2EuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlci5wcm90b3R5cGUuYXNjZW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubm9ybWFsaXplZEZvbnRTaXplfTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmRlc2NlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gNyp0aGlzLm5vcm1hbGl6ZWRGb250U2l6ZS8yNX07YS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLnByb3RvdHlwZS5tZWFzdXJlPWZ1bmN0aW9uKGQsZyl7dmFyIGY9MDt2YXIgYj1nLmxlbmd0aDtmb3IodmFyIGU9MDtlPGI7ZSsrKXt2YXIgaD10aGlzLmxldHRlcihnLmNoYXJBdChlKSk7aWYoaCl7Zis9aC53aWR0aCp0aGlzLm5vcm1hbGl6ZWRGb250U2l6ZS8yNSp0aGlzLmZvbnRTdHJldGNofX1yZXR1cm4gZn07YS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKHMsbil7dmFyIHI9MDt2YXIgbz10aGlzLmhlaWdodCowLjcyO3ZhciBwPTA7dmFyIGw9bi5sZW5ndGg7dmFyIGs9dGhpcy5ub3JtYWxpemVkRm9udFNpemUvMjU7cy5zYXZlKCk7dmFyIGgsZjtpZigoLU1hdGguUEkvMjw9dGhpcy5hbmdsZSYmdGhpcy5hbmdsZTw9MCl8fChNYXRoLlBJKjMvMjw9dGhpcy5hbmdsZSYmdGhpcy5hbmdsZTw9TWF0aC5QSSoyKSl7aD0wO2Y9LU1hdGguc2luKHRoaXMuYW5nbGUpKnRoaXMud2lkdGh9ZWxzZXtpZigoMDx0aGlzLmFuZ2xlJiZ0aGlzLmFuZ2xlPD1NYXRoLlBJLzIpfHwoLU1hdGguUEkqMjw9dGhpcy5hbmdsZSYmdGhpcy5hbmdsZTw9LU1hdGguUEkqMy8yKSl7aD1NYXRoLnNpbih0aGlzLmFuZ2xlKSp0aGlzLmhlaWdodDtmPTB9ZWxzZXtpZigoLU1hdGguUEk8dGhpcy5hbmdsZSYmdGhpcy5hbmdsZTwtTWF0aC5QSS8yKXx8KE1hdGguUEk8PXRoaXMuYW5nbGUmJnRoaXMuYW5nbGU8PU1hdGguUEkqMy8yKSl7aD0tTWF0aC5jb3ModGhpcy5hbmdsZSkqdGhpcy53aWR0aDtmPS1NYXRoLnNpbih0aGlzLmFuZ2xlKSp0aGlzLndpZHRoLU1hdGguY29zKHRoaXMuYW5nbGUpKnRoaXMuaGVpZ2h0fWVsc2V7aWYoKC1NYXRoLlBJKjMvMjx0aGlzLmFuZ2xlJiZ0aGlzLmFuZ2xlPE1hdGguUEkpfHwoTWF0aC5QSS8yPHRoaXMuYW5nbGUmJnRoaXMuYW5nbGU8TWF0aC5QSSkpe2g9TWF0aC5zaW4odGhpcy5hbmdsZSkqdGhpcy5oZWlnaHQtTWF0aC5jb3ModGhpcy5hbmdsZSkqdGhpcy53aWR0aDtmPS1NYXRoLmNvcyh0aGlzLmFuZ2xlKSp0aGlzLmhlaWdodH19fX1zLnN0cm9rZVN0eWxlPXRoaXMuZmlsbFN0eWxlO3MuZmlsbFN0eWxlPXRoaXMuZmlsbFN0eWxlO3MudHJhbnNsYXRlKGgsZik7cy5yb3RhdGUodGhpcy5hbmdsZSk7cy5saW5lQ2FwPSJyb3VuZCI7dmFyIHQ9KHRoaXMubm9ybWFsaXplZEZvbnRTaXplPjMwKT8yOjIrKDMwLXRoaXMubm9ybWFsaXplZEZvbnRTaXplKS8yMDtzLmxpbmVXaWR0aD10KmsqdGhpcy5mb250V2VpZ2h0MkZsb2F0KHRoaXMuZm9udFdlaWdodCk7Zm9yKHZhciBnPTA7ZzxsO2crKyl7dmFyIG09dGhpcy5sZXR0ZXIobi5jaGFyQXQoZykpO2lmKCFtKXtjb250aW51ZX1zLmJlZ2luUGF0aCgpO3ZhciBlPTE7dmFyIGI9MDtmb3IodmFyIGQ9MDtkPG0ucG9pbnRzLmxlbmd0aDtkKyspe3ZhciBxPW0ucG9pbnRzW2RdO2lmKHFbMF09PS0xJiZxWzFdPT0tMSl7ZT0xO2NvbnRpbnVlfWlmKGUpe3MubW92ZVRvKHIrcVswXSprKnRoaXMuZm9udFN0cmV0Y2gsby1xWzFdKmspO2U9ZmFsc2V9ZWxzZXtzLmxpbmVUbyhyK3FbMF0qayp0aGlzLmZvbnRTdHJldGNoLG8tcVsxXSprKX19cy5zdHJva2UoKTtyKz1tLndpZHRoKmsqdGhpcy5mb250U3RyZXRjaH1zLnJlc3RvcmUoKTtyZXR1cm4gcH07YS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLnByb3RvdHlwZS5sZXR0ZXJzPXsiICI6e3dpZHRoOjE2LHBvaW50czpbXX0sIiEiOnt3aWR0aDoxMCxwb2ludHM6W1s1LDIxXSxbNSw3XSxbLTEsLTFdLFs1LDJdLFs0LDFdLFs1LDBdLFs2LDFdLFs1LDJdXX0sJyInOnt3aWR0aDoxNixwb2ludHM6W1s0LDIxXSxbNCwxNF0sWy0xLC0xXSxbMTIsMjFdLFsxMiwxNF1dfSwiIyI6e3dpZHRoOjIxLHBvaW50czpbWzExLDI1XSxbNCwtN10sWy0xLC0xXSxbMTcsMjVdLFsxMCwtN10sWy0xLC0xXSxbNCwxMl0sWzE4LDEyXSxbLTEsLTFdLFszLDZdLFsxNyw2XV19LCIkIjp7d2lkdGg6MjAscG9pbnRzOltbOCwyNV0sWzgsLTRdLFstMSwtMV0sWzEyLDI1XSxbMTIsLTRdLFstMSwtMV0sWzE3LDE4XSxbMTUsMjBdLFsxMiwyMV0sWzgsMjFdLFs1LDIwXSxbMywxOF0sWzMsMTZdLFs0LDE0XSxbNSwxM10sWzcsMTJdLFsxMywxMF0sWzE1LDldLFsxNiw4XSxbMTcsNl0sWzE3LDNdLFsxNSwxXSxbMTIsMF0sWzgsMF0sWzUsMV0sWzMsM11dfSwiJSI6e3dpZHRoOjI0LHBvaW50czpbWzIxLDIxXSxbMywwXSxbLTEsLTFdLFs4LDIxXSxbMTAsMTldLFsxMCwxN10sWzksMTVdLFs3LDE0XSxbNSwxNF0sWzMsMTZdLFszLDE4XSxbNCwyMF0sWzYsMjFdLFs4LDIxXSxbMTAsMjBdLFsxMywxOV0sWzE2LDE5XSxbMTksMjBdLFsyMSwyMV0sWy0xLC0xXSxbMTcsN10sWzE1LDZdLFsxNCw0XSxbMTQsMl0sWzE2LDBdLFsxOCwwXSxbMjAsMV0sWzIxLDNdLFsyMSw1XSxbMTksN10sWzE3LDddXX0sIiYiOnt3aWR0aDoyNixwb2ludHM6W1syMywxMl0sWzIzLDEzXSxbMjIsMTRdLFsyMSwxNF0sWzIwLDEzXSxbMTksMTFdLFsxNyw2XSxbMTUsM10sWzEzLDFdLFsxMSwwXSxbNywwXSxbNSwxXSxbNCwyXSxbMyw0XSxbMyw2XSxbNCw4XSxbNSw5XSxbMTIsMTNdLFsxMywxNF0sWzE0LDE2XSxbMTQsMThdLFsxMywyMF0sWzExLDIxXSxbOSwyMF0sWzgsMThdLFs4LDE2XSxbOSwxM10sWzExLDEwXSxbMTYsM10sWzE4LDFdLFsyMCwwXSxbMjIsMF0sWzIzLDFdLFsyMywyXV19LCInIjp7d2lkdGg6MTAscG9pbnRzOltbNSwxOV0sWzQsMjBdLFs1LDIxXSxbNiwyMF0sWzYsMThdLFs1LDE2XSxbNCwxNV1dfSwiKCI6e3dpZHRoOjE0LHBvaW50czpbWzExLDI1XSxbOSwyM10sWzcsMjBdLFs1LDE2XSxbNCwxMV0sWzQsN10sWzUsMl0sWzcsLTJdLFs5LC01XSxbMTEsLTddXX0sIikiOnt3aWR0aDoxNCxwb2ludHM6W1szLDI1XSxbNSwyM10sWzcsMjBdLFs5LDE2XSxbMTAsMTFdLFsxMCw3XSxbOSwyXSxbNywtMl0sWzUsLTVdLFszLC03XV19LCIqIjp7d2lkdGg6MTYscG9pbnRzOltbOCwyMV0sWzgsOV0sWy0xLC0xXSxbMywxOF0sWzEzLDEyXSxbLTEsLTFdLFsxMywxOF0sWzMsMTJdXX0sIisiOnt3aWR0aDoyNixwb2ludHM6W1sxMywxOF0sWzEzLDBdLFstMSwtMV0sWzQsOV0sWzIyLDldXX0sIiwiOnt3aWR0aDoxMCxwb2ludHM6W1s2LDFdLFs1LDBdLFs0LDFdLFs1LDJdLFs2LDFdLFs2LC0xXSxbNSwtM10sWzQsLTRdXX0sIi0iOnt3aWR0aDoxOCxwb2ludHM6W1s2LDldLFsxMiw5XV19LCIuIjp7d2lkdGg6MTAscG9pbnRzOltbNSwyXSxbNCwxXSxbNSwwXSxbNiwxXSxbNSwyXV19LCIvIjp7d2lkdGg6MjIscG9pbnRzOltbMjAsMjVdLFsyLC03XV19LCIwIjp7d2lkdGg6MjAscG9pbnRzOltbOSwyMV0sWzYsMjBdLFs0LDE3XSxbMywxMl0sWzMsOV0sWzQsNF0sWzYsMV0sWzksMF0sWzExLDBdLFsxNCwxXSxbMTYsNF0sWzE3LDldLFsxNywxMl0sWzE2LDE3XSxbMTQsMjBdLFsxMSwyMV0sWzksMjFdXX0sIjEiOnt3aWR0aDoyMCxwb2ludHM6W1s2LDE3XSxbOCwxOF0sWzExLDIxXSxbMTEsMF1dfSwiMiI6e3dpZHRoOjIwLHBvaW50czpbWzQsMTZdLFs0LDE3XSxbNSwxOV0sWzYsMjBdLFs4LDIxXSxbMTIsMjFdLFsxNCwyMF0sWzE1LDE5XSxbMTYsMTddLFsxNiwxNV0sWzE1LDEzXSxbMTMsMTBdLFszLDBdLFsxNywwXV19LCIzIjp7d2lkdGg6MjAscG9pbnRzOltbNSwyMV0sWzE2LDIxXSxbMTAsMTNdLFsxMywxM10sWzE1LDEyXSxbMTYsMTFdLFsxNyw4XSxbMTcsNl0sWzE2LDNdLFsxNCwxXSxbMTEsMF0sWzgsMF0sWzUsMV0sWzQsMl0sWzMsNF1dfSwiNCI6e3dpZHRoOjIwLHBvaW50czpbWzEzLDIxXSxbMyw3XSxbMTgsN10sWy0xLC0xXSxbMTMsMjFdLFsxMywwXV19LCI1Ijp7d2lkdGg6MjAscG9pbnRzOltbMTUsMjFdLFs1LDIxXSxbNCwxMl0sWzUsMTNdLFs4LDE0XSxbMTEsMTRdLFsxNCwxM10sWzE2LDExXSxbMTcsOF0sWzE3LDZdLFsxNiwzXSxbMTQsMV0sWzExLDBdLFs4LDBdLFs1LDFdLFs0LDJdLFszLDRdXX0sIjYiOnt3aWR0aDoyMCxwb2ludHM6W1sxNiwxOF0sWzE1LDIwXSxbMTIsMjFdLFsxMCwyMV0sWzcsMjBdLFs1LDE3XSxbNCwxMl0sWzQsN10sWzUsM10sWzcsMV0sWzEwLDBdLFsxMSwwXSxbMTQsMV0sWzE2LDNdLFsxNyw2XSxbMTcsN10sWzE2LDEwXSxbMTQsMTJdLFsxMSwxM10sWzEwLDEzXSxbNywxMl0sWzUsMTBdLFs0LDddXX0sIjciOnt3aWR0aDoyMCxwb2ludHM6W1sxNywyMV0sWzcsMF0sWy0xLC0xXSxbMywyMV0sWzE3LDIxXV19LCI4Ijp7d2lkdGg6MjAscG9pbnRzOltbOCwyMV0sWzUsMjBdLFs0LDE4XSxbNCwxNl0sWzUsMTRdLFs3LDEzXSxbMTEsMTJdLFsxNCwxMV0sWzE2LDldLFsxNyw3XSxbMTcsNF0sWzE2LDJdLFsxNSwxXSxbMTIsMF0sWzgsMF0sWzUsMV0sWzQsMl0sWzMsNF0sWzMsN10sWzQsOV0sWzYsMTFdLFs5LDEyXSxbMTMsMTNdLFsxNSwxNF0sWzE2LDE2XSxbMTYsMThdLFsxNSwyMF0sWzEyLDIxXSxbOCwyMV1dfSwiOSI6e3dpZHRoOjIwLHBvaW50czpbWzE2LDE0XSxbMTUsMTFdLFsxMyw5XSxbMTAsOF0sWzksOF0sWzYsOV0sWzQsMTFdLFszLDE0XSxbMywxNV0sWzQsMThdLFs2LDIwXSxbOSwyMV0sWzEwLDIxXSxbMTMsMjBdLFsxNSwxOF0sWzE2LDE0XSxbMTYsOV0sWzE1LDRdLFsxMywxXSxbMTAsMF0sWzgsMF0sWzUsMV0sWzQsM11dfSwiOiI6e3dpZHRoOjEwLHBvaW50czpbWzUsMTRdLFs0LDEzXSxbNSwxMl0sWzYsMTNdLFs1LDE0XSxbLTEsLTFdLFs1LDJdLFs0LDFdLFs1LDBdLFs2LDFdLFs1LDJdXX0sIjsiOnt3aWR0aDoxMCxwb2ludHM6W1s1LDE0XSxbNCwxM10sWzUsMTJdLFs2LDEzXSxbNSwxNF0sWy0xLC0xXSxbNiwxXSxbNSwwXSxbNCwxXSxbNSwyXSxbNiwxXSxbNiwtMV0sWzUsLTNdLFs0LC00XV19LCI8Ijp7d2lkdGg6MjQscG9pbnRzOltbMjAsMThdLFs0LDldLFsyMCwwXV19LCI9Ijp7d2lkdGg6MjYscG9pbnRzOltbNCwxMl0sWzIyLDEyXSxbLTEsLTFdLFs0LDZdLFsyMiw2XV19LCI+Ijp7d2lkdGg6MjQscG9pbnRzOltbNCwxOF0sWzIwLDldLFs0LDBdXX0sIj8iOnt3aWR0aDoxOCxwb2ludHM6W1szLDE2XSxbMywxN10sWzQsMTldLFs1LDIwXSxbNywyMV0sWzExLDIxXSxbMTMsMjBdLFsxNCwxOV0sWzE1LDE3XSxbMTUsMTVdLFsxNCwxM10sWzEzLDEyXSxbOSwxMF0sWzksN10sWy0xLC0xXSxbOSwyXSxbOCwxXSxbOSwwXSxbMTAsMV0sWzksMl1dfSwiQCI6e3dpZHRoOjI3LHBvaW50czpbWzE4LDEzXSxbMTcsMTVdLFsxNSwxNl0sWzEyLDE2XSxbMTAsMTVdLFs5LDE0XSxbOCwxMV0sWzgsOF0sWzksNl0sWzExLDVdLFsxNCw1XSxbMTYsNl0sWzE3LDhdLFstMSwtMV0sWzEyLDE2XSxbMTAsMTRdLFs5LDExXSxbOSw4XSxbMTAsNl0sWzExLDVdLFstMSwtMV0sWzE4LDE2XSxbMTcsOF0sWzE3LDZdLFsxOSw1XSxbMjEsNV0sWzIzLDddLFsyNCwxMF0sWzI0LDEyXSxbMjMsMTVdLFsyMiwxN10sWzIwLDE5XSxbMTgsMjBdLFsxNSwyMV0sWzEyLDIxXSxbOSwyMF0sWzcsMTldLFs1LDE3XSxbNCwxNV0sWzMsMTJdLFszLDldLFs0LDZdLFs1LDRdLFs3LDJdLFs5LDFdLFsxMiwwXSxbMTUsMF0sWzE4LDFdLFsyMCwyXSxbMjEsM10sWy0xLC0xXSxbMTksMTZdLFsxOCw4XSxbMTgsNl0sWzE5LDVdXX0sQTp7d2lkdGg6MTgscG9pbnRzOltbOSwyMV0sWzEsMF0sWy0xLC0xXSxbOSwyMV0sWzE3LDBdLFstMSwtMV0sWzQsN10sWzE0LDddXX0sQjp7d2lkdGg6MjEscG9pbnRzOltbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwyMV0sWzEzLDIxXSxbMTYsMjBdLFsxNywxOV0sWzE4LDE3XSxbMTgsMTVdLFsxNywxM10sWzE2LDEyXSxbMTMsMTFdLFstMSwtMV0sWzQsMTFdLFsxMywxMV0sWzE2LDEwXSxbMTcsOV0sWzE4LDddLFsxOCw0XSxbMTcsMl0sWzE2LDFdLFsxMywwXSxbNCwwXV19LEM6e3dpZHRoOjIxLHBvaW50czpbWzE4LDE2XSxbMTcsMThdLFsxNSwyMF0sWzEzLDIxXSxbOSwyMV0sWzcsMjBdLFs1LDE4XSxbNCwxNl0sWzMsMTNdLFszLDhdLFs0LDVdLFs1LDNdLFs3LDFdLFs5LDBdLFsxMywwXSxbMTUsMV0sWzE3LDNdLFsxOCw1XV19LEQ6e3dpZHRoOjIxLHBvaW50czpbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzQsMjFdLFsxMSwyMV0sWzE0LDIwXSxbMTYsMThdLFsxNywxNl0sWzE4LDEzXSxbMTgsOF0sWzE3LDVdLFsxNiwzXSxbMTQsMV0sWzExLDBdLFs0LDBdXX0sRTp7d2lkdGg6MTkscG9pbnRzOltbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwyMV0sWzE3LDIxXSxbLTEsLTFdLFs0LDExXSxbMTIsMTFdLFstMSwtMV0sWzQsMF0sWzE3LDBdXX0sRjp7d2lkdGg6MTgscG9pbnRzOltbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwyMV0sWzE3LDIxXSxbLTEsLTFdLFs0LDExXSxbMTIsMTFdXX0sRzp7d2lkdGg6MjEscG9pbnRzOltbMTgsMTZdLFsxNywxOF0sWzE1LDIwXSxbMTMsMjFdLFs5LDIxXSxbNywyMF0sWzUsMThdLFs0LDE2XSxbMywxM10sWzMsOF0sWzQsNV0sWzUsM10sWzcsMV0sWzksMF0sWzEzLDBdLFsxNSwxXSxbMTcsM10sWzE4LDVdLFsxOCw4XSxbLTEsLTFdLFsxMyw4XSxbMTgsOF1dfSxIOnt3aWR0aDoyMixwb2ludHM6W1s0LDIxXSxbNCwwXSxbLTEsLTFdLFsxOCwyMV0sWzE4LDBdLFstMSwtMV0sWzQsMTFdLFsxOCwxMV1dfSxJOnt3aWR0aDo4LHBvaW50czpbWzQsMjFdLFs0LDBdXX0sSjp7d2lkdGg6MTYscG9pbnRzOltbMTIsMjFdLFsxMiw1XSxbMTEsMl0sWzEwLDFdLFs4LDBdLFs2LDBdLFs0LDFdLFszLDJdLFsyLDVdLFsyLDddXX0sSzp7d2lkdGg6MjEscG9pbnRzOltbNCwyMV0sWzQsMF0sWy0xLC0xXSxbMTgsMjFdLFs0LDddLFstMSwtMV0sWzksMTJdLFsxOCwwXV19LEw6e3dpZHRoOjE3LHBvaW50czpbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzQsMF0sWzE2LDBdXX0sTTp7d2lkdGg6MjQscG9pbnRzOltbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwyMV0sWzEyLDBdLFstMSwtMV0sWzIwLDIxXSxbMTIsMF0sWy0xLC0xXSxbMjAsMjFdLFsyMCwwXV19LE46e3dpZHRoOjIyLHBvaW50czpbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzQsMjFdLFsxOCwwXSxbLTEsLTFdLFsxOCwyMV0sWzE4LDBdXX0sTzp7d2lkdGg6MjIscG9pbnRzOltbOSwyMV0sWzcsMjBdLFs1LDE4XSxbNCwxNl0sWzMsMTNdLFszLDhdLFs0LDVdLFs1LDNdLFs3LDFdLFs5LDBdLFsxMywwXSxbMTUsMV0sWzE3LDNdLFsxOCw1XSxbMTksOF0sWzE5LDEzXSxbMTgsMTZdLFsxNywxOF0sWzE1LDIwXSxbMTMsMjFdLFs5LDIxXV19LFA6e3dpZHRoOjIxLHBvaW50czpbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzQsMjFdLFsxMywyMV0sWzE2LDIwXSxbMTcsMTldLFsxOCwxN10sWzE4LDE0XSxbMTcsMTJdLFsxNiwxMV0sWzEzLDEwXSxbNCwxMF1dfSxROnt3aWR0aDoyMixwb2ludHM6W1s5LDIxXSxbNywyMF0sWzUsMThdLFs0LDE2XSxbMywxM10sWzMsOF0sWzQsNV0sWzUsM10sWzcsMV0sWzksMF0sWzEzLDBdLFsxNSwxXSxbMTcsM10sWzE4LDVdLFsxOSw4XSxbMTksMTNdLFsxOCwxNl0sWzE3LDE4XSxbMTUsMjBdLFsxMywyMV0sWzksMjFdLFstMSwtMV0sWzEyLDRdLFsxOCwtMl1dfSxSOnt3aWR0aDoyMSxwb2ludHM6W1s0LDIxXSxbNCwwXSxbLTEsLTFdLFs0LDIxXSxbMTMsMjFdLFsxNiwyMF0sWzE3LDE5XSxbMTgsMTddLFsxOCwxNV0sWzE3LDEzXSxbMTYsMTJdLFsxMywxMV0sWzQsMTFdLFstMSwtMV0sWzExLDExXSxbMTgsMF1dfSxTOnt3aWR0aDoyMCxwb2ludHM6W1sxNywxOF0sWzE1LDIwXSxbMTIsMjFdLFs4LDIxXSxbNSwyMF0sWzMsMThdLFszLDE2XSxbNCwxNF0sWzUsMTNdLFs3LDEyXSxbMTMsMTBdLFsxNSw5XSxbMTYsOF0sWzE3LDZdLFsxNywzXSxbMTUsMV0sWzEyLDBdLFs4LDBdLFs1LDFdLFszLDNdXX0sVDp7d2lkdGg6MTYscG9pbnRzOltbOCwyMV0sWzgsMF0sWy0xLC0xXSxbMSwyMV0sWzE1LDIxXV19LFU6e3dpZHRoOjIyLHBvaW50czpbWzQsMjFdLFs0LDZdLFs1LDNdLFs3LDFdLFsxMCwwXSxbMTIsMF0sWzE1LDFdLFsxNywzXSxbMTgsNl0sWzE4LDIxXV19LFY6e3dpZHRoOjE4LHBvaW50czpbWzEsMjFdLFs5LDBdLFstMSwtMV0sWzE3LDIxXSxbOSwwXV19LFc6e3dpZHRoOjI0LHBvaW50czpbWzIsMjFdLFs3LDBdLFstMSwtMV0sWzEyLDIxXSxbNywwXSxbLTEsLTFdLFsxMiwyMV0sWzE3LDBdLFstMSwtMV0sWzIyLDIxXSxbMTcsMF1dfSxYOnt3aWR0aDoyMCxwb2ludHM6W1szLDIxXSxbMTcsMF0sWy0xLC0xXSxbMTcsMjFdLFszLDBdXX0sWTp7d2lkdGg6MTgscG9pbnRzOltbMSwyMV0sWzksMTFdLFs5LDBdLFstMSwtMV0sWzE3LDIxXSxbOSwxMV1dfSxaOnt3aWR0aDoyMCxwb2ludHM6W1sxNywyMV0sWzMsMF0sWy0xLC0xXSxbMywyMV0sWzE3LDIxXSxbLTEsLTFdLFszLDBdLFsxNywwXV19LCJbIjp7d2lkdGg6MTQscG9pbnRzOltbNCwyNV0sWzQsLTddLFstMSwtMV0sWzUsMjVdLFs1LC03XSxbLTEsLTFdLFs0LDI1XSxbMTEsMjVdLFstMSwtMV0sWzQsLTddLFsxMSwtN11dfSwiXFwiOnt3aWR0aDoxNCxwb2ludHM6W1swLDIxXSxbMTQsLTNdXX0sIl0iOnt3aWR0aDoxNCxwb2ludHM6W1s5LDI1XSxbOSwtN10sWy0xLC0xXSxbMTAsMjVdLFsxMCwtN10sWy0xLC0xXSxbMywyNV0sWzEwLDI1XSxbLTEsLTFdLFszLC03XSxbMTAsLTddXX0sIl4iOnt3aWR0aDoxNixwb2ludHM6W1s2LDE1XSxbOCwxOF0sWzEwLDE1XSxbLTEsLTFdLFszLDEyXSxbOCwxN10sWzEzLDEyXSxbLTEsLTFdLFs4LDE3XSxbOCwwXV19LF86e3dpZHRoOjE2LHBvaW50czpbWzAsLTJdLFsxNiwtMl1dfSwiYCI6e3dpZHRoOjEwLHBvaW50czpbWzYsMjFdLFs1LDIwXSxbNCwxOF0sWzQsMTZdLFs1LDE1XSxbNiwxNl0sWzUsMTddXX0sYTp7d2lkdGg6MTkscG9pbnRzOltbMTUsMTRdLFsxNSwwXSxbLTEsLTFdLFsxNSwxMV0sWzEzLDEzXSxbMTEsMTRdLFs4LDE0XSxbNiwxM10sWzQsMTFdLFszLDhdLFszLDZdLFs0LDNdLFs2LDFdLFs4LDBdLFsxMSwwXSxbMTMsMV0sWzE1LDNdXX0sYjp7d2lkdGg6MTkscG9pbnRzOltbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwxMV0sWzYsMTNdLFs4LDE0XSxbMTEsMTRdLFsxMywxM10sWzE1LDExXSxbMTYsOF0sWzE2LDZdLFsxNSwzXSxbMTMsMV0sWzExLDBdLFs4LDBdLFs2LDFdLFs0LDNdXX0sYzp7d2lkdGg6MTgscG9pbnRzOltbMTUsMTFdLFsxMywxM10sWzExLDE0XSxbOCwxNF0sWzYsMTNdLFs0LDExXSxbMyw4XSxbMyw2XSxbNCwzXSxbNiwxXSxbOCwwXSxbMTEsMF0sWzEzLDFdLFsxNSwzXV19LGQ6e3dpZHRoOjE5LHBvaW50czpbWzE1LDIxXSxbMTUsMF0sWy0xLC0xXSxbMTUsMTFdLFsxMywxM10sWzExLDE0XSxbOCwxNF0sWzYsMTNdLFs0LDExXSxbMyw4XSxbMyw2XSxbNCwzXSxbNiwxXSxbOCwwXSxbMTEsMF0sWzEzLDFdLFsxNSwzXV19LGU6e3dpZHRoOjE4LHBvaW50czpbWzMsOF0sWzE1LDhdLFsxNSwxMF0sWzE0LDEyXSxbMTMsMTNdLFsxMSwxNF0sWzgsMTRdLFs2LDEzXSxbNCwxMV0sWzMsOF0sWzMsNl0sWzQsM10sWzYsMV0sWzgsMF0sWzExLDBdLFsxMywxXSxbMTUsM11dfSxmOnt3aWR0aDoxMixwb2ludHM6W1sxMCwyMV0sWzgsMjFdLFs2LDIwXSxbNSwxN10sWzUsMF0sWy0xLC0xXSxbMiwxNF0sWzksMTRdXX0sZzp7d2lkdGg6MTkscG9pbnRzOltbMTUsMTRdLFsxNSwtMl0sWzE0LC01XSxbMTMsLTZdLFsxMSwtN10sWzgsLTddLFs2LC02XSxbLTEsLTFdLFsxNSwxMV0sWzEzLDEzXSxbMTEsMTRdLFs4LDE0XSxbNiwxM10sWzQsMTFdLFszLDhdLFszLDZdLFs0LDNdLFs2LDFdLFs4LDBdLFsxMSwwXSxbMTMsMV0sWzE1LDNdXX0saDp7d2lkdGg6MTkscG9pbnRzOltbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwxMF0sWzcsMTNdLFs5LDE0XSxbMTIsMTRdLFsxNCwxM10sWzE1LDEwXSxbMTUsMF1dfSxpOnt3aWR0aDo4LHBvaW50czpbWzMsMjFdLFs0LDIwXSxbNSwyMV0sWzQsMjJdLFszLDIxXSxbLTEsLTFdLFs0LDE0XSxbNCwwXV19LGo6e3dpZHRoOjEwLHBvaW50czpbWzUsMjFdLFs2LDIwXSxbNywyMV0sWzYsMjJdLFs1LDIxXSxbLTEsLTFdLFs2LDE0XSxbNiwtM10sWzUsLTZdLFszLC03XSxbMSwtN11dfSxrOnt3aWR0aDoxNyxwb2ludHM6W1s0LDIxXSxbNCwwXSxbLTEsLTFdLFsxNCwxNF0sWzQsNF0sWy0xLC0xXSxbOCw4XSxbMTUsMF1dfSxsOnt3aWR0aDo4LHBvaW50czpbWzQsMjFdLFs0LDBdXX0sbTp7d2lkdGg6MzAscG9pbnRzOltbNCwxNF0sWzQsMF0sWy0xLC0xXSxbNCwxMF0sWzcsMTNdLFs5LDE0XSxbMTIsMTRdLFsxNCwxM10sWzE1LDEwXSxbMTUsMF0sWy0xLC0xXSxbMTUsMTBdLFsxOCwxM10sWzIwLDE0XSxbMjMsMTRdLFsyNSwxM10sWzI2LDEwXSxbMjYsMF1dfSxuOnt3aWR0aDoxOSxwb2ludHM6W1s0LDE0XSxbNCwwXSxbLTEsLTFdLFs0LDEwXSxbNywxM10sWzksMTRdLFsxMiwxNF0sWzE0LDEzXSxbMTUsMTBdLFsxNSwwXV19LG86e3dpZHRoOjE5LHBvaW50czpbWzgsMTRdLFs2LDEzXSxbNCwxMV0sWzMsOF0sWzMsNl0sWzQsM10sWzYsMV0sWzgsMF0sWzExLDBdLFsxMywxXSxbMTUsM10sWzE2LDZdLFsxNiw4XSxbMTUsMTFdLFsxMywxM10sWzExLDE0XSxbOCwxNF1dfSxwOnt3aWR0aDoxOSxwb2ludHM6W1s0LDE0XSxbNCwtN10sWy0xLC0xXSxbNCwxMV0sWzYsMTNdLFs4LDE0XSxbMTEsMTRdLFsxMywxM10sWzE1LDExXSxbMTYsOF0sWzE2LDZdLFsxNSwzXSxbMTMsMV0sWzExLDBdLFs4LDBdLFs2LDFdLFs0LDNdXX0scTp7d2lkdGg6MTkscG9pbnRzOltbMTUsMTRdLFsxNSwtN10sWy0xLC0xXSxbMTUsMTFdLFsxMywxM10sWzExLDE0XSxbOCwxNF0sWzYsMTNdLFs0LDExXSxbMyw4XSxbMyw2XSxbNCwzXSxbNiwxXSxbOCwwXSxbMTEsMF0sWzEzLDFdLFsxNSwzXV19LHI6e3dpZHRoOjEzLHBvaW50czpbWzQsMTRdLFs0LDBdLFstMSwtMV0sWzQsOF0sWzUsMTFdLFs3LDEzXSxbOSwxNF0sWzEyLDE0XV19LHM6e3dpZHRoOjE3LHBvaW50czpbWzE0LDExXSxbMTMsMTNdLFsxMCwxNF0sWzcsMTRdLFs0LDEzXSxbMywxMV0sWzQsOV0sWzYsOF0sWzExLDddLFsxMyw2XSxbMTQsNF0sWzE0LDNdLFsxMywxXSxbMTAsMF0sWzcsMF0sWzQsMV0sWzMsM11dfSx0Ont3aWR0aDoxMixwb2ludHM6W1s1LDIxXSxbNSw0XSxbNiwxXSxbOCwwXSxbMTAsMF0sWy0xLC0xXSxbMiwxNF0sWzksMTRdXX0sdTp7d2lkdGg6MTkscG9pbnRzOltbNCwxNF0sWzQsNF0sWzUsMV0sWzcsMF0sWzEwLDBdLFsxMiwxXSxbMTUsNF0sWy0xLC0xXSxbMTUsMTRdLFsxNSwwXV19LHY6e3dpZHRoOjE2LHBvaW50czpbWzIsMTRdLFs4LDBdLFstMSwtMV0sWzE0LDE0XSxbOCwwXV19LHc6e3dpZHRoOjIyLHBvaW50czpbWzMsMTRdLFs3LDBdLFstMSwtMV0sWzExLDE0XSxbNywwXSxbLTEsLTFdLFsxMSwxNF0sWzE1LDBdLFstMSwtMV0sWzE5LDE0XSxbMTUsMF1dfSx4Ont3aWR0aDoxNyxwb2ludHM6W1szLDE0XSxbMTQsMF0sWy0xLC0xXSxbMTQsMTRdLFszLDBdXX0seTp7d2lkdGg6MTYscG9pbnRzOltbMiwxNF0sWzgsMF0sWy0xLC0xXSxbMTQsMTRdLFs4LDBdLFs2LC00XSxbNCwtNl0sWzIsLTddLFsxLC03XV19LHo6e3dpZHRoOjE3LHBvaW50czpbWzE0LDE0XSxbMywwXSxbLTEsLTFdLFszLDE0XSxbMTQsMTRdLFstMSwtMV0sWzMsMF0sWzE0LDBdXX0sInsiOnt3aWR0aDoxNCxwb2ludHM6W1s5LDI1XSxbNywyNF0sWzYsMjNdLFs1LDIxXSxbNSwxOV0sWzYsMTddLFs3LDE2XSxbOCwxNF0sWzgsMTJdLFs2LDEwXSxbLTEsLTFdLFs3LDI0XSxbNiwyMl0sWzYsMjBdLFs3LDE4XSxbOCwxN10sWzksMTVdLFs5LDEzXSxbOCwxMV0sWzQsOV0sWzgsN10sWzksNV0sWzksM10sWzgsMV0sWzcsMF0sWzYsLTJdLFs2LC00XSxbNywtNl0sWy0xLC0xXSxbNiw4XSxbOCw2XSxbOCw0XSxbNywyXSxbNiwxXSxbNSwtMV0sWzUsLTNdLFs2LC01XSxbNywtNl0sWzksLTddXX0sInwiOnt3aWR0aDo4LHBvaW50czpbWzQsMjVdLFs0LC03XV19LCJ9Ijp7d2lkdGg6MTQscG9pbnRzOltbNSwyNV0sWzcsMjRdLFs4LDIzXSxbOSwyMV0sWzksMTldLFs4LDE3XSxbNywxNl0sWzYsMTRdLFs2LDEyXSxbOCwxMF0sWy0xLC0xXSxbNywyNF0sWzgsMjJdLFs4LDIwXSxbNywxOF0sWzYsMTddLFs1LDE1XSxbNSwxM10sWzYsMTFdLFsxMCw5XSxbNiw3XSxbNSw1XSxbNSwzXSxbNiwxXSxbNywwXSxbOCwtMl0sWzgsLTRdLFs3LC02XSxbLTEsLTFdLFs4LDhdLFs2LDZdLFs2LDRdLFs3LDJdLFs4LDFdLFs5LC0xXSxbOSwtM10sWzgsLTVdLFs3LC02XSxbNSwtN11dfSwifiI6e3dpZHRoOjI0LHBvaW50czpbWzMsNl0sWzMsOF0sWzQsMTFdLFs2LDEyXSxbOCwxMl0sWzEwLDExXSxbMTQsOF0sWzE2LDddLFsxOCw3XSxbMjAsOF0sWzIxLDEwXSxbLTEsLTFdLFszLDhdLFs0LDEwXSxbNiwxMV0sWzgsMTFdLFsxMCwxMF0sWzE0LDddLFsxNiw2XSxbMTgsNl0sWzIwLDddLFsyMSwxMF0sWzIxLDEyXV19fTthLmpxcGxvdC5DYW52YXNGb250UmVuZGVyZXI9ZnVuY3Rpb24oYil7Yj1ifHx7fTtpZighYi5wdDJweCl7Yi5wdDJweD0xLjV9YS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLmNhbGwodGhpcyxiKX07YS5qcXBsb3QuQ2FudmFzRm9udFJlbmRlcmVyLnByb3RvdHlwZT1uZXcgYS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyKHt9KTthLmpxcGxvdC5DYW52YXNGb250UmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWEuanFwbG90LkNhbnZhc0ZvbnRSZW5kZXJlcjthLmpxcGxvdC5DYW52YXNGb250UmVuZGVyZXIucHJvdG90eXBlLm1lYXN1cmU9ZnVuY3Rpb24oYyxlKXt2YXIgZD10aGlzLmZvbnRTaXplKyIgIit0aGlzLmZvbnRGYW1pbHk7Yy5zYXZlKCk7Yy5mb250PWQ7dmFyIGI9Yy5tZWFzdXJlVGV4dChlKS53aWR0aDtjLnJlc3RvcmUoKTtyZXR1cm4gYn07YS5qcXBsb3QuQ2FudmFzRm9udFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKGUsZyl7dmFyIGM9MDt2YXIgaD10aGlzLmhlaWdodCowLjcyO2Uuc2F2ZSgpO3ZhciBkLGI7aWYoKC1NYXRoLlBJLzI8PXRoaXMuYW5nbGUmJnRoaXMuYW5nbGU8PTApfHwoTWF0aC5QSSozLzI8PXRoaXMuYW5nbGUmJnRoaXMuYW5nbGU8PU1hdGguUEkqMikpe2Q9MDtiPS1NYXRoLnNpbih0aGlzLmFuZ2xlKSp0aGlzLndpZHRofWVsc2V7aWYoKDA8dGhpcy5hbmdsZSYmdGhpcy5hbmdsZTw9TWF0aC5QSS8yKXx8KC1NYXRoLlBJKjI8PXRoaXMuYW5nbGUmJnRoaXMuYW5nbGU8PS1NYXRoLlBJKjMvMikpe2Q9TWF0aC5zaW4odGhpcy5hbmdsZSkqdGhpcy5oZWlnaHQ7Yj0wfWVsc2V7aWYoKC1NYXRoLlBJPHRoaXMuYW5nbGUmJnRoaXMuYW5nbGU8LU1hdGguUEkvMil8fChNYXRoLlBJPD10aGlzLmFuZ2xlJiZ0aGlzLmFuZ2xlPD1NYXRoLlBJKjMvMikpe2Q9LU1hdGguY29zKHRoaXMuYW5nbGUpKnRoaXMud2lkdGg7Yj0tTWF0aC5zaW4odGhpcy5hbmdsZSkqdGhpcy53aWR0aC1NYXRoLmNvcyh0aGlzLmFuZ2xlKSp0aGlzLmhlaWdodH1lbHNle2lmKCgtTWF0aC5QSSozLzI8dGhpcy5hbmdsZSYmdGhpcy5hbmdsZTxNYXRoLlBJKXx8KE1hdGguUEkvMjx0aGlzLmFuZ2xlJiZ0aGlzLmFuZ2xlPE1hdGguUEkpKXtkPU1hdGguc2luKHRoaXMuYW5nbGUpKnRoaXMuaGVpZ2h0LU1hdGguY29zKHRoaXMuYW5nbGUpKnRoaXMud2lkdGg7Yj0tTWF0aC5jb3ModGhpcy5hbmdsZSkqdGhpcy5oZWlnaHR9fX19ZS5zdHJva2VTdHlsZT10aGlzLmZpbGxTdHlsZTtlLmZpbGxTdHlsZT10aGlzLmZpbGxTdHlsZTt2YXIgZj10aGlzLmZvbnRTaXplKyIgIit0aGlzLmZvbnRGYW1pbHk7ZS5mb250PWY7ZS50cmFuc2xhdGUoZCxiKTtlLnJvdGF0ZSh0aGlzLmFuZ2xlKTtlLmZpbGxUZXh0KGcsYyxoKTtlLnJlc3RvcmUoKX19KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.categoryAxisRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgeyAgIAogICAgLyoqCiAgICAqICBjbGFzczogJC5qcXBsb3QuQ2F0ZWdvcnlBeGlzUmVuZGVyZXIKICAgICogIEEgcGx1Z2luIGZvciBqcVBsb3QgdG8gcmVuZGVyIGEgY2F0ZWdvcnkgc3R5bGUgYXhpcywgd2l0aCBlcXVhbCBwaXhlbCBzcGFjaW5nIGJldHdlZW4geSBkYXRhIHZhbHVlcyBvZiBhIHNlcmllcy4KICAgICogIAogICAgKiAgVG8gdXNlIHRoaXMgcmVuZGVyZXIsIGluY2x1ZGUgdGhlIHBsdWdpbiBpbiB5b3VyIHNvdXJjZQogICAgKiAgPiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHNyYz0icGx1Z2lucy9qcXBsb3QuY2F0ZWdvcnlBeGlzUmVuZGVyZXIuanMiPjwvc2NyaXB0PgogICAgKiAgCiAgICAqICBhbmQgc3VwcGx5IHRoZSBhcHByb3ByaWF0ZSBvcHRpb25zIHRvIHlvdXIgcGxvdAogICAgKiAgCiAgICAqICA+IHtheGVzOnt4YXhpczp7cmVuZGVyZXI6JC5qcXBsb3QuQ2F0ZWdvcnlBeGlzUmVuZGVyZXJ9fX0KICAgICoqLwogICAgJC5qcXBsb3QuQ2F0ZWdvcnlBeGlzUmVuZGVyZXIgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgJC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyLmNhbGwodGhpcyk7CiAgICAgICAgLy8gcHJvcDogc29ydE1lcmdlZExhYmVscwogICAgICAgIC8vIFRydWUgdG8gc29ydCB0aWNrIGxhYmVscyB3aGVuIGxhYmVscyBhcmUgY3JlYXRlZCBieSBtZXJnaW5nCiAgICAgICAgLy8geCBheGlzIHZhbHVlcyBmcm9tIG11bHRpcGxlIHNlcmllcy4gIFRoYXQgaXMsIHNheSB5b3UgaGF2ZQogICAgICAgIC8vIHR3byBzZXJpZXMgbGlrZToKICAgICAgICAvLyA+IGxpbmUxID0gW1syMDA2LCA0XSwgICAgICAgICAgICBbMjAwOCwgOV0sIFsyMDA5LCAxNl1dOwogICAgICAgIC8vID4gbGluZTIgPSBbWzIwMDYsIDNdLCBbMjAwNywgN10sIFsyMDA4LCA2XV07CiAgICAgICAgLy8gSWYgbm8gbGFiZWwgYXJyYXkgaXMgc3BlY2lmaWVkLCB0aWNrIGxhYmVscyB3aWxsIGJlIGNvbGxlY3RlZAogICAgICAgIC8vIGZyb20gdGhlIHggdmFsdWVzIG9mIHRoZSBzZXJpZXMuICBXaXRoIHNvcnRNZXJnZWRMYWJlbHMKICAgICAgICAvLyBzZXQgdG8gdHJ1ZSwgdGljayBsYWJlbHMgd2lsbCBiZToKICAgICAgICAvLyA+IFsyMDA2LCAyMDA3LCAyMDA4LCAyMDA5XQogICAgICAgIC8vIFdpdGggc29ydE1lcmdlZExhYmVscyBzZXQgdG8gZmFsc2UsIHRpY2sgbGFiZWxzIHdpbGwgYmU6CiAgICAgICAgLy8gPiBbMjAwNiwgMjAwOCwgMjAwOSwgMjAwN10KICAgICAgICAvLwogICAgICAgIC8vIE5vdGUsIHRoaXMgcHJvcGVydHkgaXMgc3BlY2lmaWVkIG9uIHRoZSByZW5kZXJPcHRpb25zIGZvciB0aGUgCiAgICAgICAgLy8gYXhlcyB3aGVuIGNyZWF0aW5nIGEgcGxvdDoKICAgICAgICAvLyA+IGF4ZXM6e3hheGlzOntyZW5kZXJlcjokLmpxcGxvdC5DYXRlZ29yeUF4aXNSZW5kZXJlciwgcmVuZGVyZXJPcHRpb25zOntzb3J0TWVyZ2VkTGFiZWxzOnRydWV9fX0KICAgICAgICB0aGlzLnNvcnRNZXJnZWRMYWJlbHMgPSBmYWxzZTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkNhdGVnb3J5QXhpc1JlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIoKTsKICAgICQuanFwbG90LkNhdGVnb3J5QXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LkNhdGVnb3J5QXhpc1JlbmRlcmVyOwogICAgCiAgICAkLmpxcGxvdC5DYXRlZ29yeUF4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpewogICAgICAgIHRoaXMuZ3JvdXBzID0gMTsKICAgICAgICB0aGlzLmdyb3VwTGFiZWxzID0gW107CiAgICAgICAgdGhpcy5fZ3JvdXBMYWJlbHMgPSBbXTsKICAgICAgICB0aGlzLl9ncm91cGVkID0gZmFsc2U7CiAgICAgICAgdGhpcy5fYmFyc1Blckdyb3VwID0gbnVsbDsKICAgICAgICB0aGlzLnJldmVyc2UgPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiB0aWNrUmVuZGVyZXIKICAgICAgICAvLyBBIGNsYXNzIG9mIGEgcmVuZGVyaW5nIGVuZ2luZSBmb3IgY3JlYXRpbmcgdGhlIHRpY2tzIGxhYmVscyBkaXNwbGF5ZWQgb24gdGhlIHBsb3QsIAogICAgICAgIC8vIFNlZSA8JC5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlcj4uCiAgICAgICAgLy8gdGhpcy50aWNrUmVuZGVyZXIgPSAkLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyOwogICAgICAgIC8vIHRoaXMubGFiZWxSZW5kZXJlciA9ICQuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyOwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIHt0aWNrT3B0aW9uczp7Zm9ybWF0U3RyaW5nOiclZCd9fSwgb3B0aW9ucyk7CiAgICAgICAgdmFyIGRiID0gdGhpcy5fZGF0YUJvdW5kczsKICAgICAgICAvLyBHbyB0aHJvdWdoIGFsbCB0aGUgc2VyaWVzIGF0dGFjaGVkIHRvIHRoaXMgYXhpcyBhbmQgZmluZAogICAgICAgIC8vIHRoZSBtaW4vbWF4IGJvdW5kcyBmb3IgdGhpcyBheGlzLgogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHMgPSB0aGlzLl9zZXJpZXNbaV07CiAgICAgICAgICAgIGlmIChzLmdyb3VwcykgewogICAgICAgICAgICAgICAgdGhpcy5ncm91cHMgPSBzLmdyb3VwczsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgZCA9IHMuZGF0YTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGZvciAodmFyIGo9MDsgajxkLmxlbmd0aDsgaisrKSB7IAogICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnIHx8IHRoaXMubmFtZSA9PSAneDJheGlzJykgewogICAgICAgICAgICAgICAgICAgIGlmIChkW2pdWzBdIDwgZGIubWluIHx8IGRiLm1pbiA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRiLm1pbiA9IGRbal1bMF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChkW2pdWzBdID4gZGIubWF4IHx8IGRiLm1heCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRiLm1heCA9IGRbal1bMF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZFtqXVsxXSA8IGRiLm1pbiB8fCBkYi5taW4gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBkYi5taW4gPSBkW2pdWzFdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZFtqXVsxXSA+IGRiLm1heCB8fCBkYi5tYXggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBkYi5tYXggPSBkW2pdWzFdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmICh0aGlzLmdyb3VwTGFiZWxzLmxlbmd0aCkgewogICAgICAgICAgICB0aGlzLmdyb3VwcyA9IHRoaXMuZ3JvdXBMYWJlbHMubGVuZ3RoOwogICAgICAgIH0KICAgIH07CiAKCiAgICAkLmpxcGxvdC5DYXRlZ29yeUF4aXNSZW5kZXJlci5wcm90b3R5cGUuY3JlYXRlVGlja3MgPSBmdW5jdGlvbigpIHsKICAgICAgICAvLyB3ZSdyZSBhcmUgb3BlcmF0aW5nIG9uIGFuIGF4aXMgaGVyZQogICAgICAgIHZhciB0aWNrcyA9IHRoaXMuX3RpY2tzOwogICAgICAgIHZhciB1c2VyVGlja3MgPSB0aGlzLnRpY2tzOwogICAgICAgIHZhciBuYW1lID0gdGhpcy5uYW1lOwogICAgICAgIC8vIGRhdGFib3VuZHMgd2VyZSBzZXQgb24gYXhpcyBpbml0aWFsaXphdGlvbi4KICAgICAgICB2YXIgZGIgPSB0aGlzLl9kYXRhQm91bmRzOwogICAgICAgIHZhciBkaW0sIGludGVydmFsOwogICAgICAgIHZhciBtaW4sIG1heDsKICAgICAgICB2YXIgcG9zMSwgcG9zMjsKICAgICAgICB2YXIgdHQsIGk7CgogICAgICAgIC8vIGlmIHdlIGFscmVhZHkgaGF2ZSB0aWNrcywgdXNlIHRoZW0uCiAgICAgICAgaWYgKHVzZXJUaWNrcy5sZW5ndGgpIHsKICAgICAgICAgICAgLy8gYWRqdXN0IHdpdGggYmxhbmtzIGlmIHdlIGhhdmUgZ3JvdXBzCiAgICAgICAgICAgIGlmICh0aGlzLmdyb3VwcyA+IDEgJiYgIXRoaXMuX2dyb3VwZWQpIHsKICAgICAgICAgICAgICAgIHZhciBsID0gdXNlclRpY2tzLmxlbmd0aDsKICAgICAgICAgICAgICAgIHZhciBza2lwID0gcGFyc2VJbnQobC90aGlzLmdyb3VwcywgMTApOwogICAgICAgICAgICAgICAgdmFyIGNvdW50ID0gMDsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9c2tpcDsgaTxsOyBpKz1za2lwKSB7CiAgICAgICAgICAgICAgICAgICAgdXNlclRpY2tzLnNwbGljZShpK2NvdW50LCAwLCAnICcpOwogICAgICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLl9ncm91cGVkID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLm1pbiA9IDAuNTsKICAgICAgICAgICAgdGhpcy5tYXggPSB1c2VyVGlja3MubGVuZ3RoICsgMC41OwogICAgICAgICAgICB2YXIgcmFuZ2UgPSB0aGlzLm1heCAtIHRoaXMubWluOwogICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gMip1c2VyVGlja3MubGVuZ3RoICsgMTsKICAgICAgICAgICAgZm9yIChpPTA7IGk8dXNlclRpY2tzLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgICAgIHR0ID0gdGhpcy5taW4gKyAyICogaSAqIHJhbmdlIC8gKHRoaXMubnVtYmVyVGlja3MtMSk7CiAgICAgICAgICAgICAgICAvLyBuZWVkIGEgbWFya2VyIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIHRpY2sKICAgICAgICAgICAgICAgIHZhciB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwogICAgICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgICAgIC8vIHQuc2hvd01hcmsgPSB0cnVlOwogICAgICAgICAgICAgICAgdC5zZXRUaWNrKHR0LCB0aGlzLm5hbWUpOwogICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgICAgIHZhciB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwogICAgICAgICAgICAgICAgdC5sYWJlbCA9IHVzZXJUaWNrc1tpXTsKICAgICAgICAgICAgICAgIC8vIHQuc2hvd0xhYmVsID0gdHJ1ZTsKICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHQuc2hvd0dyaWRsaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICB0LnNldFRpY2sodHQrMC41LCB0aGlzLm5hbWUpOwogICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBub3cgYWRkIHRoZSBsYXN0IHRpY2sgYXQgdGhlIGVuZAogICAgICAgICAgICB2YXIgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTsKICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgLy8gdC5zaG93TWFyayA9IHRydWU7CiAgICAgICAgICAgIHQuc2V0VGljayh0dCsxLCB0aGlzLm5hbWUpOwogICAgICAgICAgICB0aGlzLl90aWNrcy5wdXNoKHQpOwogICAgICAgIH0KCiAgICAgICAgLy8gd2UgZG9uJ3QgaGF2ZSBhbnkgdGlja3MgeWV0LCBsZXQncyBtYWtlIHNvbWUhCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmIChuYW1lID09ICd4YXhpcycgfHwgbmFtZSA9PSAneDJheGlzJykgewogICAgICAgICAgICAgICAgZGltID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGg7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBkaW0gPSB0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIGlmIG1pbiwgbWF4IGFuZCBudW1iZXIgb2YgdGlja3Mgc3BlY2lmaWVkLCB1c2VyIGNhbid0IHNwZWNpZnkgaW50ZXJ2YWwuCiAgICAgICAgICAgIGlmICh0aGlzLm1pbiAhPSBudWxsICYmIHRoaXMubWF4ICE9IG51bGwgJiYgdGhpcy5udW1iZXJUaWNrcyAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9IG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIGlmIG1heCwgbWluLCBhbmQgaW50ZXJ2YWwgc3BlY2lmaWVkIGFuZCBpbnRlcnZhbCB3b24ndCBmaXQsIGlnbm9yZSBpbnRlcnZhbC4KICAgICAgICAgICAgaWYgKHRoaXMubWluICE9IG51bGwgJiYgdGhpcy5tYXggIT0gbnVsbCAmJiB0aGlzLnRpY2tJbnRlcnZhbCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQoKHRoaXMubWF4LXRoaXMubWluKS90aGlzLnRpY2tJbnRlcnZhbCwgMTApICE9ICh0aGlzLm1heC10aGlzLm1pbikvdGhpcy50aWNrSW50ZXJ2YWwpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9IG51bGw7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAKICAgICAgICAgICAgLy8gZmluZCBvdXQgaG93IG1hbnkgY2F0ZWdvcmllcyBhcmUgaW4gdGhlIGxpbmVzIGFuZCBjb2xsZWN0IGxhYmVscwogICAgICAgICAgICB2YXIgbGFiZWxzID0gW107CiAgICAgICAgICAgIHZhciBudW1jYXRzID0gMDsKICAgICAgICAgICAgdmFyIG1pbiA9IDAuNTsKICAgICAgICAgICAgdmFyIG1heCwgdmFsOwogICAgICAgICAgICB2YXIgaXNNZXJnZWQgPSBmYWxzZTsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMuX3Nlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgdmFyIHMgPSB0aGlzLl9zZXJpZXNbaV07CiAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8cy5kYXRhLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnIHx8IHRoaXMubmFtZSA9PSAneDJheGlzJykgewogICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBzLmRhdGFbal1bMF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBzLmRhdGFbal1bMV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICgkLmluQXJyYXkodmFsLCBsYWJlbHMpID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlzTWVyZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgbnVtY2F0cyArPSAxOyAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMucHVzaCh2YWwpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGlzTWVyZ2VkICYmIHRoaXMuc29ydE1lcmdlZExhYmVscykgewogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBsYWJlbHNbMF0gPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgICAgICAgICBsYWJlbHMuc29ydCgpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBsYWJlbHMuc29ydChmdW5jdGlvbihhLGIpIHsgcmV0dXJuIGEgLSBiOyB9KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGVzZSB0aWNrIGxhYmVscyB0byB1c2UgZm9yIHJlZHJhd2luZyBwbG90IChzZWUgYnVnICM1NykKICAgICAgICAgICAgdGhpcy50aWNrcyA9IGxhYmVsczsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIG5vdyBiaW4gdGhlIGRhdGEgdmFsdWVzIHRvIHRoZSByaWdodCBsYWJsZXMuCiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHZhciBzID0gdGhpcy5fc2VyaWVzW2ldOwogICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPHMuZGF0YS5sZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gcy5kYXRhW2pdWzBdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gcy5kYXRhW2pdWzFdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAvLyBmb3IgY2F0ZWdvcnkgYXhpcywgZm9yY2UgdGhlIHZhbHVlcyBpbnRvIGNhdGVnb3J5IGJpbnMuCiAgICAgICAgICAgICAgICAgICAgLy8gd2Ugc2hvdWxkIGhhdmUgdGhlIHZhbHVlIGluIHRoZSBsYWJlbCBhcnJheSBub3cuCiAgICAgICAgICAgICAgICAgICAgdmFyIGlkeCA9ICQuaW5BcnJheSh2YWwsIGxhYmVscykrMTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lID09ICd4YXhpcycgfHwgdGhpcy5uYW1lID09ICd4MmF4aXMnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHMuZGF0YVtqXVswXSA9IGlkeDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHMuZGF0YVtqXVsxXSA9IGlkeDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIGFkanVzdCB3aXRoIGJsYW5rcyBpZiB3ZSBoYXZlIGdyb3VwcwogICAgICAgICAgICBpZiAodGhpcy5ncm91cHMgPiAxICYmICF0aGlzLl9ncm91cGVkKSB7CiAgICAgICAgICAgICAgICB2YXIgbCA9IGxhYmVscy5sZW5ndGg7CiAgICAgICAgICAgICAgICB2YXIgc2tpcCA9IHBhcnNlSW50KGwvdGhpcy5ncm91cHMsIDEwKTsKICAgICAgICAgICAgICAgIHZhciBjb3VudCA9IDA7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPXNraXA7IGk8bDsgaSs9c2tpcCsxKSB7CiAgICAgICAgICAgICAgICAgICAgbGFiZWxzW2ldID0gJyAnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5fZ3JvdXBlZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAKICAgICAgICAgICAgbWF4ID0gbnVtY2F0cyArIDAuNTsKICAgICAgICAgICAgaWYgKHRoaXMubnVtYmVyVGlja3MgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IDIqbnVtY2F0cyArIDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciByYW5nZSA9IG1heCAtIG1pbjsKICAgICAgICAgICAgdGhpcy5taW4gPSBtaW47CiAgICAgICAgICAgIHRoaXMubWF4ID0gbWF4OwogICAgICAgICAgICB2YXIgdHJhY2sgPSAwOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gdG9kbzogYWRqdXN0IHRoaXMgc28gbW9yZSB0aWNrcyBkaXNwbGF5ZWQuCiAgICAgICAgICAgIHZhciBtYXhWaXNpYmxlVGlja3MgPSBwYXJzZUludCgzK2RpbS8xMCwgMTApOwogICAgICAgICAgICB2YXIgc2tpcCA9IHBhcnNlSW50KG51bWNhdHMvbWF4VmlzaWJsZVRpY2tzLCAxMCk7CgogICAgICAgICAgICBpZiAodGhpcy50aWNrSW50ZXJ2YWwgPT0gbnVsbCkgewoKICAgICAgICAgICAgICAgIHRoaXMudGlja0ludGVydmFsID0gcmFuZ2UgLyAodGhpcy5udW1iZXJUaWNrcy0xKTsKCiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gaWYgdGlja0ludGVydmFsIGlzIHNwZWNpZmllZCwgd2Ugd2lsbCBpZ25vcmUgYW55IGNvbXB1dGVkIG1heGltdW0uCiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLm51bWJlclRpY2tzOyBpKyspewogICAgICAgICAgICAgICAgdHQgPSB0aGlzLm1pbiArIGkgKiB0aGlzLnRpY2tJbnRlcnZhbDsKICAgICAgICAgICAgICAgIHZhciB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwogICAgICAgICAgICAgICAgLy8gaWYgZXZlbiB0aWNrLCBpdCBpc24ndCBhIGNhdGVnb3J5LCBpdCdzIGEgZGl2aWRlcgogICAgICAgICAgICAgICAgaWYgKGkvMiA9PSBwYXJzZUludChpLzIsIDEwKSkgewogICAgICAgICAgICAgICAgICAgIHQuc2hvd0xhYmVsID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoc2tpcD4wICYmIHRyYWNrPHNraXApIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgKz0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd0xhYmVsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgPSAwOwogICAgICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICAgICAgICAgdC5sYWJlbCA9IHQuZm9ybWF0dGVyKHQuZm9ybWF0U3RyaW5nLCBsYWJlbHNbKGktMSkvMl0pOwogICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB0LnNob3dHcmlkbGluZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdC5zZXRUaWNrKHR0LCB0aGlzLm5hbWUpOwogICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgIH07CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIGF4aXMKICAgICQuanFwbG90LkNhdGVnb3J5QXhpc1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24oY3R4LCBwbG90KSB7CiAgICAgICAgaWYgKHRoaXMuc2hvdykgewogICAgICAgICAgICAvLyBwb3B1bGF0ZSB0aGUgYXhpcyBsYWJlbCBhbmQgdmFsdWUgcHJvcGVydGllcy4KICAgICAgICAgICAgLy8gY3JlYXRlVGlja3MgaXMgYSBtZXRob2Qgb24gdGhlIHJlbmRlcmVyLCBidXQKICAgICAgICAgICAgLy8gY2FsbCBpdCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBheGlzLgogICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRpY2tzLmNhbGwodGhpcyk7CiAgICAgICAgICAgIC8vIGZpbGwgYSBkaXYgd2l0aCBheGVzIGxhYmVscyBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLgogICAgICAgICAgICAvLyBOZWVkIHRvIHByZWdlbmVyYXRlIGVhY2ggYXhpcyB0byBnZXQgaXRzIGJvdW5kcyBhbmQKICAgICAgICAgICAgLy8gcG9zaXRpb24gaXQgYW5kIHRoZSBsYWJlbHMgY29ycmVjdGx5IG9uIHRoZSBwbG90LgogICAgICAgICAgICB2YXIgZGltPTA7CiAgICAgICAgICAgIHZhciB0ZW1wOwogICAgICAgICAgICAvLyBBZGRlZCBmb3IgdGhlbWluZy4KICAgICAgICAgICAgaWYgKHRoaXMuX2VsZW0pIHsKICAgICAgICAgICAgICAgIC8vIHRoaXMuX2VsZW0uZW1wdHkoKTsKICAgICAgICAgICAgICAgIC8vIE1lbW9yeSBMZWFrcyBwYXRjaAogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5lbXB0eUZvcmNlKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHRoaXMuX2VsZW0gPSB0aGlzLl9lbGVtIHx8ICQoJzxkaXYgY2xhc3M9ImpxcGxvdC1heGlzIGpxcGxvdC0nK3RoaXMubmFtZSsnIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7Ij48L2Rpdj4nKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0ud2lkdGgodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5oZWlnaHQodGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gY3JlYXRlIGEgX2xhYmVsIG9iamVjdC4KICAgICAgICAgICAgdGhpcy5sYWJlbE9wdGlvbnMuYXhpcyA9IHRoaXMubmFtZTsKICAgICAgICAgICAgdGhpcy5fbGFiZWwgPSBuZXcgdGhpcy5sYWJlbFJlbmRlcmVyKHRoaXMubGFiZWxPcHRpb25zKTsKICAgICAgICAgICAgaWYgKHRoaXMuX2xhYmVsLnNob3cpIHsKICAgICAgICAgICAgICAgIHZhciBlbGVtID0gdGhpcy5fbGFiZWwuZHJhdyhjdHgsIHBsb3QpOwogICAgICAgICAgICAgICAgZWxlbS5hcHBlbmRUbyh0aGlzLl9lbGVtKTsKICAgICAgICAgICAgfQogICAgCiAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fdGlja3M7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgdGljayA9IHRbaV07CiAgICAgICAgICAgICAgICBpZiAodGljay5zaG93TGFiZWwgJiYgKCF0aWNrLmlzTWlub3JUaWNrIHx8IHRoaXMuc2hvd01pbm9yVGlja3MpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW0gPSB0aWNrLmRyYXcoY3R4LCBwbG90KTsKICAgICAgICAgICAgICAgICAgICBlbGVtLmFwcGVuZFRvKHRoaXMuX2VsZW0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgCiAgICAgICAgICAgIHRoaXMuX2dyb3VwTGFiZWxzID0gW107CiAgICAgICAgICAgIC8vIG5vdyBtYWtlIGdyb3VwIGxhYmVscwogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5ncm91cExhYmVscy5sZW5ndGg7IGkrKykKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIGVsZW0gPSAkKCc8ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsiIGNsYXNzPSJqcXBsb3QtJyt0aGlzLm5hbWUrJy1ncm91cExhYmVsIj48L2Rpdj4nKTsKICAgICAgICAgICAgICAgIGVsZW0uaHRtbCh0aGlzLmdyb3VwTGFiZWxzW2ldKTsKICAgICAgICAgICAgICAgIHRoaXMuX2dyb3VwTGFiZWxzLnB1c2goZWxlbSk7CiAgICAgICAgICAgICAgICBlbGVtLmFwcGVuZFRvKHRoaXMuX2VsZW0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLl9lbGVtOwogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYXhpcwogICAgJC5qcXBsb3QuQ2F0ZWdvcnlBeGlzUmVuZGVyZXIucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKCkgeyAKICAgICAgICB2YXIgZGltID0gMDsKICAgICAgICB2YXIgdGVtcDsKICAgICAgICB2YXIgdyA9IDA7CiAgICAgICAgdmFyIGggPSAwOwogICAgICAgIHZhciBsc2hvdyA9ICh0aGlzLl9sYWJlbCA9PSBudWxsKSA/IGZhbHNlIDogdGhpcy5fbGFiZWwuc2hvdzsKICAgICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAgICAgICAgIHZhciB0ID0gdGhpcy5fdGlja3M7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgdGljayA9IHRbaV07CiAgICAgICAgICAgICAgICBpZiAodGljay5zaG93TGFiZWwgJiYgKCF0aWNrLmlzTWlub3JUaWNrIHx8IHRoaXMuc2hvd01pbm9yVGlja3MpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnIHx8IHRoaXMubmFtZSA9PSAneDJheGlzJykgewogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gdGljay5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSB0aWNrLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wID4gZGltKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRpbSA9IHRlbXA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICB2YXIgZGltMiA9IDA7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9ncm91cExhYmVscy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgdmFyIGwgPSB0aGlzLl9ncm91cExhYmVsc1tpXTsKICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgICAgICB0ZW1wID0gbC5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHRlbXAgPSBsLm91dGVyV2lkdGgodHJ1ZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAodGVtcCA+IGRpbTIpIHsKICAgICAgICAgICAgICAgICAgICBkaW0yID0gdGVtcDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGxzaG93KSB7CiAgICAgICAgICAgICAgICB3ID0gdGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTsKICAgICAgICAgICAgICAgIGggPSB0aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTsgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnKSB7CiAgICAgICAgICAgICAgICBkaW0gKz0gZGltMiArIGg7CiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7J2hlaWdodCc6ZGltKydweCcsIGxlZnQ6JzBweCcsIGJvdHRvbTonMHB4J30pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PSAneDJheGlzJykgewogICAgICAgICAgICAgICAgZGltICs9IGRpbTIgKyBoOwogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoeydoZWlnaHQnOmRpbSsncHgnLCBsZWZ0OicwcHgnLCB0b3A6JzBweCd9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmICh0aGlzLm5hbWUgPT0gJ3lheGlzJykgewogICAgICAgICAgICAgICAgZGltICs9IGRpbTIgKyB3OwogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moeyd3aWR0aCc6ZGltKydweCcsIGxlZnQ6JzBweCcsIHRvcDonMHB4J30pOwogICAgICAgICAgICAgICAgaWYgKGxzaG93ICYmIHRoaXMuX2xhYmVsLmNvbnN0cnVjdG9yID09ICQuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCd3aWR0aCcsIHcrJ3B4Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBkaW0gKz0gZGltMiArIHc7CiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7J3dpZHRoJzpkaW0rJ3B4JywgcmlnaHQ6JzBweCcsIHRvcDonMHB4J30pOwogICAgICAgICAgICAgICAgaWYgKGxzaG93ICYmIHRoaXMuX2xhYmVsLmNvbnN0cnVjdG9yID09ICQuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCd3aWR0aCcsIHcrJ3B4Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9ICAKICAgIH07CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIGF4aXMKICAgICQuanFwbG90LkNhdGVnb3J5QXhpc1JlbmRlcmVyLnByb3RvdHlwZS5wYWNrID0gZnVuY3Rpb24ocG9zLCBvZmZzZXRzKSB7CiAgICAgICAgdmFyIHRpY2tzID0gdGhpcy5fdGlja3M7CiAgICAgICAgdmFyIG1heCA9IHRoaXMubWF4OwogICAgICAgIHZhciBtaW4gPSB0aGlzLm1pbjsKICAgICAgICB2YXIgb2ZmbWF4ID0gb2Zmc2V0cy5tYXg7CiAgICAgICAgdmFyIG9mZm1pbiA9IG9mZnNldHMubWluOwogICAgICAgIHZhciBsc2hvdyA9ICh0aGlzLl9sYWJlbCA9PSBudWxsKSA/IGZhbHNlIDogdGhpcy5fbGFiZWwuc2hvdzsKICAgICAgICB2YXIgaTsKCiAgICAgICAgZm9yICh2YXIgcCBpbiBwb3MpIHsKICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MocCwgcG9zW3BdKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgdGhpcy5fb2Zmc2V0cyA9IG9mZnNldHM7CiAgICAgICAgLy8gcGl4ZWxsZW5ndGggd2lsbCBiZSArIGZvciB4IGF4ZXMgYW5kIC0gZm9yIHkgYXhlcyBiZWNhc3VlIHBpeGVscyBhbHdheXMgbWVhc3VyZWQgZnJvbSB0b3AgbGVmdC4KICAgICAgICB2YXIgcGl4ZWxsZW5ndGggPSBvZmZtYXggLSBvZmZtaW47CiAgICAgICAgdmFyIHVuaXRsZW5ndGggPSBtYXggLSBtaW47CiAgICAgICAgCiAgICAgICAgaWYgKCF0aGlzLnJldmVyc2UpIHsKICAgICAgICAgICAgLy8gcG9pbnQgdG8gdW5pdCBhbmQgdW5pdCB0byBwb2ludCBjb252ZXJzaW9ucyByZWZlcmVuY2VzIHRvIFBsb3QgRE9NIGVsZW1lbnQgdG9wIGxlZnQgY29ybmVyLgogICAgICAgICAgICAKICAgICAgICAgICAgdGhpcy51MnAgPSBmdW5jdGlvbih1KXsKICAgICAgICAgICAgICAgIHJldHVybiAodSAtIG1pbikgKiBwaXhlbGxlbmd0aCAvIHVuaXRsZW5ndGggKyBvZmZtaW47CiAgICAgICAgICAgIH07CgogICAgICAgICAgICB0aGlzLnAydSA9IGZ1bmN0aW9uKHApewogICAgICAgICAgICAgICAgcmV0dXJuIChwIC0gb2ZmbWluKSAqIHVuaXRsZW5ndGggLyBwaXhlbGxlbmd0aCArIG1pbjsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnIHx8IHRoaXMubmFtZSA9PSAneDJheGlzJyl7CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc191MnAgPSBmdW5jdGlvbih1KXsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHUgLSBtaW4pICogcGl4ZWxsZW5ndGggLyB1bml0bGVuZ3RoOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzX3AydSA9IGZ1bmN0aW9uKHApewogICAgICAgICAgICAgICAgICAgIHJldHVybiBwICogdW5pdGxlbmd0aCAvIHBpeGVsbGVuZ3RoICsgbWluOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc191MnAgPSBmdW5jdGlvbih1KXsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHUgLSBtYXgpICogcGl4ZWxsZW5ndGggLyB1bml0bGVuZ3RoOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzX3AydSA9IGZ1bmN0aW9uKHApewogICAgICAgICAgICAgICAgICAgIHJldHVybiBwICogdW5pdGxlbmd0aCAvIHBpeGVsbGVuZ3RoICsgbWF4OwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIC8vIHBvaW50IHRvIHVuaXQgYW5kIHVuaXQgdG8gcG9pbnQgY29udmVyc2lvbnMgcmVmZXJlbmNlcyB0byBQbG90IERPTSBlbGVtZW50IHRvcCBsZWZ0IGNvcm5lci4KICAgICAgICAgICAgCiAgICAgICAgICAgIHRoaXMudTJwID0gZnVuY3Rpb24odSl7CiAgICAgICAgICAgICAgICByZXR1cm4gb2ZmbWluICsgKG1heCAtIHUpICogcGl4ZWxsZW5ndGggLyB1bml0bGVuZ3RoOwogICAgICAgICAgICB9OwoKICAgICAgICAgICAgdGhpcy5wMnUgPSBmdW5jdGlvbihwKXsKICAgICAgICAgICAgICAgIHJldHVybiBtaW4gKyAocCAtIG9mZm1pbikgKiB1bml0bGVuZ3RoIC8gcGl4ZWxsZW5ndGg7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpewogICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNfdTJwID0gZnVuY3Rpb24odSl7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChtYXggLSB1KSAqIHBpeGVsbGVuZ3RoIC8gdW5pdGxlbmd0aDsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc19wMnUgPSBmdW5jdGlvbihwKXsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcCAqIHVuaXRsZW5ndGggLyBwaXhlbGxlbmd0aCArIG1heDsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNfdTJwID0gZnVuY3Rpb24odSl7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChtaW4gLSB1KSAqIHBpeGVsbGVuZ3RoIC8gdW5pdGxlbmd0aDsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc19wMnUgPSBmdW5jdGlvbihwKXsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcCAqIHVuaXRsZW5ndGggLyBwaXhlbGxlbmd0aCArIG1pbjsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAKICAgICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPHRpY2tzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aWNrc1tpXTsKICAgICAgICAgICAgICAgICAgICBpZiAodC5zaG93ICYmIHQuc2hvd0xhYmVsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaGltOwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuY29uc3RydWN0b3IgPT0gJC5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciAmJiB0LmFuZ2xlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIG5lZWQgdG8gYWRqdXN0IGF1dG8gcG9zaXRpb25pbmcgYmFzZWQgb24gd2hpY2ggYXhpcyB0aGlzIGlzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXAgPSAodGhpcy5uYW1lID09ICd4YXhpcycpID8gMSA6IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LmxhYmVsUG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhdXRvJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9zaXRpb24gYXQgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wICogdC5hbmdsZSA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5nZXRXaWR0aCgpICsgdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKC10Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3NpdGlvbiBhdCBzdGFydAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKHQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2VuZCc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5nZXRXaWR0aCgpICsgdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKC10Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3RhcnQnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbih0Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWlkZGxlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldFdpZHRoKCkvMiArIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbigtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5nZXRXaWR0aCgpLzIgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5zaW4oLXQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5nZXRXaWR0aCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IHRoaXMudTJwKHQudmFsdWUpICsgc2hpbSArICdweCc7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuX2VsZW0uY3NzKCdsZWZ0JywgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5wYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgbGFiZWxlZGdlPVsnYm90dG9tJywgMF07CiAgICAgICAgICAgICAgICBpZiAobHNob3cpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IHRoaXMuX2xhYmVsLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCdsZWZ0Jywgb2ZmbWluICsgcGl4ZWxsZW5ndGgvMiAtIHcvMiArICdweCcpOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJykgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5fZWxlbS5jc3MoJ2JvdHRvbScsICcwcHgnKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxlZGdlID0gWydib3R0b20nLCB0aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5fZWxlbS5jc3MoJ3RvcCcsICcwcHgnKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxlZGdlID0gWyd0b3AnLCB0aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLnBhY2soKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gZHJhdyB0aGUgZ3JvdXAgbGFiZWxzCiAgICAgICAgICAgICAgICB2YXIgc3RlcCA9IHBhcnNlSW50KHRoaXMuX3RpY2tzLmxlbmd0aC90aGlzLmdyb3VwcywgMTApICsgMTsKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPHRoaXMuX2dyb3VwTGFiZWxzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG1pZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgdmFyIGNvdW50ID0gMDsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqPWkqc3RlcDsgajwoaSsxKSpzdGVwOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogPj0gdGhpcy5fdGlja3MubGVuZ3RoLTEpIGNvbnRpbnVlOyAvLyB0aGUgbGFzdCB0aWNrIGRvZXMgbm90IGV4aXN0IGFzIHRoZXJlIGlzIG5vIG90aGVyIGdyb3VwIGluIG9yZGVyIHRvIGhhdmUgYW4gZW1wdHkgb25lLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGlja3Nbal0uX2VsZW0gJiYgdGhpcy5fdGlja3Nbal0ubGFiZWwgIT0gIiAiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX3RpY2tzW2pdLl9lbGVtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSB0LnBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWQgKz0gcC5sZWZ0ICsgdC5vdXRlcldpZHRoKHRydWUpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG1pZCA9IG1pZC9jb3VudDsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9ncm91cExhYmVsc1tpXS5jc3MoeydsZWZ0JzoobWlkIC0gdGhpcy5fZ3JvdXBMYWJlbHNbaV0ub3V0ZXJXaWR0aCh0cnVlKS8yKX0pOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2dyb3VwTGFiZWxzW2ldLmNzcyhsYWJlbGVkZ2VbMF0sIGxhYmVsZWRnZVsxXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTx0aWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGlja3NbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvdyAmJiB0LnNob3dMYWJlbCkgeyAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2hpbTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuY29uc3RydWN0b3IgPT0gJC5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciAmJiB0LmFuZ2xlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIG5lZWQgdG8gYWRqdXN0IGF1dG8gcG9zaXRpb25pbmcgYmFzZWQgb24gd2hpY2ggYXhpcyB0aGlzIGlzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXAgPSAodGhpcy5uYW1lID09ICd5YXhpcycpID8gMSA6IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LmxhYmVsUG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhdXRvJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9zaXRpb24gYXQgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZW5kJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAgKiB0LmFuZ2xlIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5jb3MoLXQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldEhlaWdodCgpICsgdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguY29zKHQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuYW5nbGUgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLmNvcygtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5jb3ModC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWlkZGxlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHQuYW5nbGUgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkvMiArIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbigtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkvMiAtIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbih0Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldEhlaWdodCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldEhlaWdodCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSB0aGlzLnUycCh0LnZhbHVlKSArIHNoaW0gKyAncHgnOwogICAgICAgICAgICAgICAgICAgICAgICB0Ll9lbGVtLmNzcygndG9wJywgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5wYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgbGFiZWxlZGdlPVsnbGVmdCcsIDBdOwogICAgICAgICAgICAgICAgaWYgKGxzaG93KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGggPSB0aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5fZWxlbS5jc3MoJ3RvcCcsIG9mZm1heCAtIHBpeGVsbGVuZ3RoLzIgLSBoLzIgKyAncHgnKTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lID09ICd5YXhpcycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCdsZWZ0JywgJzBweCcpOwogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbGVkZ2UgPSBbJ2xlZnQnLCB0aGlzLl9sYWJlbC5fZWxlbS5vdXRlcldpZHRoKHRydWUpXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygncmlnaHQnLCAnMHB4Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsZWRnZSA9IFsncmlnaHQnLCB0aGlzLl9sYWJlbC5fZWxlbS5vdXRlcldpZHRoKHRydWUpXTsKICAgICAgICAgICAgICAgICAgICB9ICAgCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwucGFjaygpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSBncm91cCBsYWJlbHMsIHBvc2l0aW9uIHRvcCBoZXJlLCBkbyBsZWZ0IGFmdGVyIGxhYmVsIHBvc2l0aW9uLgogICAgICAgICAgICAgICAgdmFyIHN0ZXAgPSBwYXJzZUludCh0aGlzLl90aWNrcy5sZW5ndGgvdGhpcy5ncm91cHMsIDEwKSArIDE7IC8vIHN0ZXAgaXMgb25lIG1vcmUgdGhhbiBiZWZvcmUgYXMgd2UgZG9uJ3Qgd2FudCB0byBoYXZlIG92ZXJsYXBzIGluIGxvb3BzCiAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTx0aGlzLl9ncm91cExhYmVscy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciBtaWQgPSAwOwogICAgICAgICAgICAgICAgICAgIHZhciBjb3VudCA9IDA7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj1pKnN0ZXA7IGo8KGkrMSkqc3RlcDsgaisrKSB7IC8vIGogbXVzdCBuZXZlciByZWFjaCAoaSsxKSpzdGVwIGFzIHdlIGRvbid0IHdhbnQgdG8gaGF2ZSBvdmVybGFwIGJldHdlZW4gbG9vcHMKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogPj0gdGhpcy5fdGlja3MubGVuZ3RoLTEpIGNvbnRpbnVlOyAvLyB0aGUgbGFzdCB0aWNrIGRvZXMgbm90IGV4aXN0IGFzIHRoZXJlIGlzIG5vIG90aGVyIGdyb3VwIGluIG9yZGVyIHRvIGhhdmUgYW4gZW1wdHkgb25lLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fdGlja3Nbal0uX2VsZW0gJiYgdGhpcy5fdGlja3Nbal0ubGFiZWwgIT0gIiAiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMuX3RpY2tzW2pdLl9lbGVtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHAgPSB0LnBvc2l0aW9uKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWQgKz0gcC50b3AgKyB0Lm91dGVySGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbWlkID0gbWlkL2NvdW50OwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2dyb3VwTGFiZWxzW2ldLmNzcyh7J3RvcCc6bWlkIC0gdGhpcy5fZ3JvdXBMYWJlbHNbaV0ub3V0ZXJIZWlnaHQoKS8yfSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZ3JvdXBMYWJlbHNbaV0uY3NzKGxhYmVsZWRnZVswXSwgbGFiZWxlZGdlWzFdKTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07ICAgIAogICAgCiAgICAKfSkoalF1ZXJ5KTsK]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.categoryAxisRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGEpe2EuanFwbG90LkNhdGVnb3J5QXhpc1JlbmRlcmVyPWZ1bmN0aW9uKGIpe2EuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpO3RoaXMuc29ydE1lcmdlZExhYmVscz1mYWxzZX07YS5qcXBsb3QuQ2F0ZWdvcnlBeGlzUmVuZGVyZXIucHJvdG90eXBlPW5ldyBhLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIoKTthLmpxcGxvdC5DYXRlZ29yeUF4aXNSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9YS5qcXBsb3QuQ2F0ZWdvcnlBeGlzUmVuZGVyZXI7YS5qcXBsb3QuQ2F0ZWdvcnlBeGlzUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZSl7dGhpcy5ncm91cHM9MTt0aGlzLmdyb3VwTGFiZWxzPVtdO3RoaXMuX2dyb3VwTGFiZWxzPVtdO3RoaXMuX2dyb3VwZWQ9ZmFsc2U7dGhpcy5fYmFyc1Blckdyb3VwPW51bGw7dGhpcy5yZXZlcnNlPWZhbHNlO2EuZXh0ZW5kKHRydWUsdGhpcyx7dGlja09wdGlvbnM6e2Zvcm1hdFN0cmluZzoiJWQifX0sZSk7dmFyIGI9dGhpcy5fZGF0YUJvdW5kcztmb3IodmFyIGY9MDtmPHRoaXMuX3Nlcmllcy5sZW5ndGg7ZisrKXt2YXIgZz10aGlzLl9zZXJpZXNbZl07aWYoZy5ncm91cHMpe3RoaXMuZ3JvdXBzPWcuZ3JvdXBzfXZhciBoPWcuZGF0YTtmb3IodmFyIGM9MDtjPGgubGVuZ3RoO2MrKyl7aWYodGhpcy5uYW1lPT0ieGF4aXMifHx0aGlzLm5hbWU9PSJ4MmF4aXMiKXtpZihoW2NdWzBdPGIubWlufHxiLm1pbj09bnVsbCl7Yi5taW49aFtjXVswXX1pZihoW2NdWzBdPmIubWF4fHxiLm1heD09bnVsbCl7Yi5tYXg9aFtjXVswXX19ZWxzZXtpZihoW2NdWzFdPGIubWlufHxiLm1pbj09bnVsbCl7Yi5taW49aFtjXVsxXX1pZihoW2NdWzFdPmIubWF4fHxiLm1heD09bnVsbCl7Yi5tYXg9aFtjXVsxXX19fX1pZih0aGlzLmdyb3VwTGFiZWxzLmxlbmd0aCl7dGhpcy5ncm91cHM9dGhpcy5ncm91cExhYmVscy5sZW5ndGh9fTthLmpxcGxvdC5DYXRlZ29yeUF4aXNSZW5kZXJlci5wcm90b3R5cGUuY3JlYXRlVGlja3M9ZnVuY3Rpb24oKXt2YXIgRD10aGlzLl90aWNrczt2YXIgej10aGlzLnRpY2tzO3ZhciBGPXRoaXMubmFtZTt2YXIgQz10aGlzLl9kYXRhQm91bmRzO3ZhciB2LEE7dmFyIHEsdzt2YXIgZCxjO3ZhciBiLHg7aWYoei5sZW5ndGgpe2lmKHRoaXMuZ3JvdXBzPjEmJiF0aGlzLl9ncm91cGVkKXt2YXIgcj16Lmxlbmd0aDt2YXIgcD1wYXJzZUludChyL3RoaXMuZ3JvdXBzLDEwKTt2YXIgZT0wO2Zvcih2YXIgeD1wO3g8cjt4Kz1wKXt6LnNwbGljZSh4K2UsMCwiICIpO2UrK310aGlzLl9ncm91cGVkPXRydWV9dGhpcy5taW49MC41O3RoaXMubWF4PXoubGVuZ3RoKzAuNTt2YXIgbT10aGlzLm1heC10aGlzLm1pbjt0aGlzLm51bWJlclRpY2tzPTIqei5sZW5ndGgrMTtmb3IoeD0wO3g8ei5sZW5ndGg7eCsrKXtiPXRoaXMubWluKzIqeCptLyh0aGlzLm51bWJlclRpY2tzLTEpO3ZhciBoPW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTtoLnNob3dMYWJlbD1mYWxzZTtoLnNldFRpY2soYix0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goaCk7dmFyIGg9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2gubGFiZWw9elt4XTtoLnNob3dNYXJrPWZhbHNlO2guc2hvd0dyaWRsaW5lPWZhbHNlO2guc2V0VGljayhiKzAuNSx0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goaCl9dmFyIGg9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2guc2hvd0xhYmVsPWZhbHNlO2guc2V0VGljayhiKzEsdGhpcy5uYW1lKTt0aGlzLl90aWNrcy5wdXNoKGgpfWVsc2V7aWYoRj09InhheGlzInx8Rj09IngyYXhpcyIpe3Y9dGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGh9ZWxzZXt2PXRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodH1pZih0aGlzLm1pbiE9bnVsbCYmdGhpcy5tYXghPW51bGwmJnRoaXMubnVtYmVyVGlja3MhPW51bGwpe3RoaXMudGlja0ludGVydmFsPW51bGx9aWYodGhpcy5taW4hPW51bGwmJnRoaXMubWF4IT1udWxsJiZ0aGlzLnRpY2tJbnRlcnZhbCE9bnVsbCl7aWYocGFyc2VJbnQoKHRoaXMubWF4LXRoaXMubWluKS90aGlzLnRpY2tJbnRlcnZhbCwxMCkhPSh0aGlzLm1heC10aGlzLm1pbikvdGhpcy50aWNrSW50ZXJ2YWwpe3RoaXMudGlja0ludGVydmFsPW51bGx9fXZhciB5PVtdO3ZhciBCPTA7dmFyIHE9MC41O3ZhciB3LEU7dmFyIGY9ZmFsc2U7Zm9yKHZhciB4PTA7eDx0aGlzLl9zZXJpZXMubGVuZ3RoO3grKyl7dmFyIGs9dGhpcy5fc2VyaWVzW3hdO2Zvcih2YXIgdT0wO3U8ay5kYXRhLmxlbmd0aDt1Kyspe2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7RT1rLmRhdGFbdV1bMF19ZWxzZXtFPWsuZGF0YVt1XVsxXX1pZihhLmluQXJyYXkoRSx5KT09LTEpe2Y9dHJ1ZTtCKz0xO3kucHVzaChFKX19fWlmKGYmJnRoaXMuc29ydE1lcmdlZExhYmVscyl7aWYodHlwZW9mIHlbMF09PSJzdHJpbmciKXt5LnNvcnQoKX1lbHNle3kuc29ydChmdW5jdGlvbihqLGkpe3JldHVybiBqLWl9KX19dGhpcy50aWNrcz15O2Zvcih2YXIgeD0wO3g8dGhpcy5fc2VyaWVzLmxlbmd0aDt4Kyspe3ZhciBrPXRoaXMuX3Nlcmllc1t4XTtmb3IodmFyIHU9MDt1PGsuZGF0YS5sZW5ndGg7dSsrKXtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe0U9ay5kYXRhW3VdWzBdfWVsc2V7RT1rLmRhdGFbdV1bMV19dmFyIG49YS5pbkFycmF5KEUseSkrMTtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe2suZGF0YVt1XVswXT1ufWVsc2V7ay5kYXRhW3VdWzFdPW59fX1pZih0aGlzLmdyb3Vwcz4xJiYhdGhpcy5fZ3JvdXBlZCl7dmFyIHI9eS5sZW5ndGg7dmFyIHA9cGFyc2VJbnQoci90aGlzLmdyb3VwcywxMCk7dmFyIGU9MDtmb3IodmFyIHg9cDt4PHI7eCs9cCsxKXt5W3hdPSIgIn10aGlzLl9ncm91cGVkPXRydWV9dz1CKzAuNTtpZih0aGlzLm51bWJlclRpY2tzPT1udWxsKXt0aGlzLm51bWJlclRpY2tzPTIqQisxfXZhciBtPXctcTt0aGlzLm1pbj1xO3RoaXMubWF4PXc7dmFyIG89MDt2YXIgZz1wYXJzZUludCgzK3YvMTAsMTApO3ZhciBwPXBhcnNlSW50KEIvZywxMCk7aWYodGhpcy50aWNrSW50ZXJ2YWw9PW51bGwpe3RoaXMudGlja0ludGVydmFsPW0vKHRoaXMubnVtYmVyVGlja3MtMSl9Zm9yKHZhciB4PTA7eDx0aGlzLm51bWJlclRpY2tzO3grKyl7Yj10aGlzLm1pbit4KnRoaXMudGlja0ludGVydmFsO3ZhciBoPW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTtpZih4LzI9PXBhcnNlSW50KHgvMiwxMCkpe2guc2hvd0xhYmVsPWZhbHNlO2guc2hvd01hcms9dHJ1ZX1lbHNle2lmKHA+MCYmbzxwKXtoLnNob3dMYWJlbD1mYWxzZTtvKz0xfWVsc2V7aC5zaG93TGFiZWw9dHJ1ZTtvPTB9aC5sYWJlbD1oLmZvcm1hdHRlcihoLmZvcm1hdFN0cmluZyx5Wyh4LTEpLzJdKTtoLnNob3dNYXJrPWZhbHNlO2guc2hvd0dyaWRsaW5lPWZhbHNlfWguc2V0VGljayhiLHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChoKX19fTthLmpxcGxvdC5DYXRlZ29yeUF4aXNSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbihiLGope2lmKHRoaXMuc2hvdyl7dGhpcy5yZW5kZXJlci5jcmVhdGVUaWNrcy5jYWxsKHRoaXMpO3ZhciBoPTA7dmFyIGM7aWYodGhpcy5fZWxlbSl7dGhpcy5fZWxlbS5lbXB0eUZvcmNlKCl9dGhpcy5fZWxlbT10aGlzLl9lbGVtfHxhKCc8ZGl2IGNsYXNzPSJqcXBsb3QtYXhpcyBqcXBsb3QtJyt0aGlzLm5hbWUrJyIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyI+PC9kaXY+Jyk7aWYodGhpcy5uYW1lPT0ieGF4aXMifHx0aGlzLm5hbWU9PSJ4MmF4aXMiKXt0aGlzLl9lbGVtLndpZHRoKHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoKX1lbHNle3RoaXMuX2VsZW0uaGVpZ2h0KHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCl9dGhpcy5sYWJlbE9wdGlvbnMuYXhpcz10aGlzLm5hbWU7dGhpcy5fbGFiZWw9bmV3IHRoaXMubGFiZWxSZW5kZXJlcih0aGlzLmxhYmVsT3B0aW9ucyk7aWYodGhpcy5fbGFiZWwuc2hvdyl7dmFyIGc9dGhpcy5fbGFiZWwuZHJhdyhiLGopO2cuYXBwZW5kVG8odGhpcy5fZWxlbSl9dmFyIGY9dGhpcy5fdGlja3M7Zm9yKHZhciBlPTA7ZTxmLmxlbmd0aDtlKyspe3ZhciBkPWZbZV07aWYoZC5zaG93TGFiZWwmJighZC5pc01pbm9yVGlja3x8dGhpcy5zaG93TWlub3JUaWNrcykpe3ZhciBnPWQuZHJhdyhiLGopO2cuYXBwZW5kVG8odGhpcy5fZWxlbSl9fXRoaXMuX2dyb3VwTGFiZWxzPVtdO2Zvcih2YXIgZT0wO2U8dGhpcy5ncm91cExhYmVscy5sZW5ndGg7ZSsrKXt2YXIgZz1hKCc8ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsiIGNsYXNzPSJqcXBsb3QtJyt0aGlzLm5hbWUrJy1ncm91cExhYmVsIj48L2Rpdj4nKTtnLmh0bWwodGhpcy5ncm91cExhYmVsc1tlXSk7dGhpcy5fZ3JvdXBMYWJlbHMucHVzaChnKTtnLmFwcGVuZFRvKHRoaXMuX2VsZW0pfX1yZXR1cm4gdGhpcy5fZWxlbX07YS5qcXBsb3QuQ2F0ZWdvcnlBeGlzUmVuZGVyZXIucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe3ZhciBlPTA7dmFyIG07dmFyIGs9MDt2YXIgZj0wO3ZhciBkPSh0aGlzLl9sYWJlbD09bnVsbCk/ZmFsc2U6dGhpcy5fbGFiZWwuc2hvdztpZih0aGlzLnNob3cpe3ZhciBuPXRoaXMuX3RpY2tzO2Zvcih2YXIgYz0wO2M8bi5sZW5ndGg7YysrKXt2YXIgZz1uW2NdO2lmKGcuc2hvd0xhYmVsJiYoIWcuaXNNaW5vclRpY2t8fHRoaXMuc2hvd01pbm9yVGlja3MpKXtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe209Zy5fZWxlbS5vdXRlckhlaWdodCh0cnVlKX1lbHNle209Zy5fZWxlbS5vdXRlcldpZHRoKHRydWUpfWlmKG0+ZSl7ZT1tfX19dmFyIGo9MDtmb3IodmFyIGM9MDtjPHRoaXMuX2dyb3VwTGFiZWxzLmxlbmd0aDtjKyspe3ZhciBiPXRoaXMuX2dyb3VwTGFiZWxzW2NdO2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7bT1iLm91dGVySGVpZ2h0KHRydWUpfWVsc2V7bT1iLm91dGVyV2lkdGgodHJ1ZSl9aWYobT5qKXtqPW19fWlmKGQpe2s9dGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTtmPXRoaXMuX2xhYmVsLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpfWlmKHRoaXMubmFtZT09InhheGlzIil7ZSs9aitmO3RoaXMuX2VsZW0uY3NzKHtoZWlnaHQ6ZSsicHgiLGxlZnQ6IjBweCIsYm90dG9tOiIwcHgifSl9ZWxzZXtpZih0aGlzLm5hbWU9PSJ4MmF4aXMiKXtlKz1qK2Y7dGhpcy5fZWxlbS5jc3Moe2hlaWdodDplKyJweCIsbGVmdDoiMHB4Iix0b3A6IjBweCJ9KX1lbHNle2lmKHRoaXMubmFtZT09InlheGlzIil7ZSs9aitrO3RoaXMuX2VsZW0uY3NzKHt3aWR0aDplKyJweCIsbGVmdDoiMHB4Iix0b3A6IjBweCJ9KTtpZihkJiZ0aGlzLl9sYWJlbC5jb25zdHJ1Y3Rvcj09YS5qcXBsb3QuQXhpc0xhYmVsUmVuZGVyZXIpe3RoaXMuX2xhYmVsLl9lbGVtLmNzcygid2lkdGgiLGsrInB4Iil9fWVsc2V7ZSs9aitrO3RoaXMuX2VsZW0uY3NzKHt3aWR0aDplKyJweCIscmlnaHQ6IjBweCIsdG9wOiIwcHgifSk7aWYoZCYmdGhpcy5fbGFiZWwuY29uc3RydWN0b3I9PWEuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoIndpZHRoIixrKyJweCIpfX19fX19O2EuanFwbG90LkNhdGVnb3J5QXhpc1JlbmRlcmVyLnByb3RvdHlwZS5wYWNrPWZ1bmN0aW9uKGUsYyl7dmFyIEM9dGhpcy5fdGlja3M7dmFyIHY9dGhpcy5tYXg7dmFyIHM9dGhpcy5taW47dmFyIG49Yy5tYXg7dmFyIGw9Yy5taW47dmFyIHE9KHRoaXMuX2xhYmVsPT1udWxsKT9mYWxzZTp0aGlzLl9sYWJlbC5zaG93O3ZhciB4O2Zvcih2YXIgciBpbiBlKXt0aGlzLl9lbGVtLmNzcyhyLGVbcl0pfXRoaXMuX29mZnNldHM9Yzt2YXIgZz1uLWw7dmFyIGs9di1zO2lmKCF0aGlzLnJldmVyc2Upe3RoaXMudTJwPWZ1bmN0aW9uKGgpe3JldHVybihoLXMpKmcvaytsfTt0aGlzLnAydT1mdW5jdGlvbihoKXtyZXR1cm4oaC1sKSprL2crc307aWYodGhpcy5uYW1lPT0ieGF4aXMifHx0aGlzLm5hbWU9PSJ4MmF4aXMiKXt0aGlzLnNlcmllc191MnA9ZnVuY3Rpb24oaCl7cmV0dXJuKGgtcykqZy9rfTt0aGlzLnNlcmllc19wMnU9ZnVuY3Rpb24oaCl7cmV0dXJuIGgqay9nK3N9fWVsc2V7dGhpcy5zZXJpZXNfdTJwPWZ1bmN0aW9uKGgpe3JldHVybihoLXYpKmcva307dGhpcy5zZXJpZXNfcDJ1PWZ1bmN0aW9uKGgpe3JldHVybiBoKmsvZyt2fX19ZWxzZXt0aGlzLnUycD1mdW5jdGlvbihoKXtyZXR1cm4gbCsodi1oKSpnL2t9O3RoaXMucDJ1PWZ1bmN0aW9uKGgpe3JldHVybiBzKyhoLWwpKmsvZ307aWYodGhpcy5uYW1lPT0ieGF4aXMifHx0aGlzLm5hbWU9PSJ4MmF4aXMiKXt0aGlzLnNlcmllc191MnA9ZnVuY3Rpb24oaCl7cmV0dXJuKHYtaCkqZy9rfTt0aGlzLnNlcmllc19wMnU9ZnVuY3Rpb24oaCl7cmV0dXJuIGgqay9nK3Z9fWVsc2V7dGhpcy5zZXJpZXNfdTJwPWZ1bmN0aW9uKGgpe3JldHVybihzLWgpKmcva307dGhpcy5zZXJpZXNfcDJ1PWZ1bmN0aW9uKGgpe3JldHVybiBoKmsvZytzfX19aWYodGhpcy5zaG93KXtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe2Zvcih4PTA7eDxDLmxlbmd0aDt4Kyspe3ZhciBvPUNbeF07aWYoby5zaG93JiZvLnNob3dMYWJlbCl7dmFyIGI7aWYoby5jb25zdHJ1Y3Rvcj09YS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciYmby5hbmdsZSl7dmFyIEE9KHRoaXMubmFtZT09InhheGlzIik/MTotMTtzd2l0Y2goby5sYWJlbFBvc2l0aW9uKXtjYXNlImF1dG8iOmlmKEEqby5hbmdsZTwwKXtiPS1vLmdldFdpZHRoKCkrby5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbigtby5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWVsc2V7Yj0tby5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbihvLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9YnJlYWs7Y2FzZSJlbmQiOmI9LW8uZ2V0V2lkdGgoKStvLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKC1vLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzI7YnJlYWs7Y2FzZSJzdGFydCI6Yj0tby5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbihvLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzI7YnJlYWs7Y2FzZSJtaWRkbGUiOmI9LW8uZ2V0V2lkdGgoKS8yK28uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4oLW8uX3RleHRSZW5kZXJlci5hbmdsZSkvMjticmVhaztkZWZhdWx0OmI9LW8uZ2V0V2lkdGgoKS8yK28uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4oLW8uX3RleHRSZW5kZXJlci5hbmdsZSkvMjticmVha319ZWxzZXtiPS1vLmdldFdpZHRoKCkvMn12YXIgRD10aGlzLnUycChvLnZhbHVlKStiKyJweCI7by5fZWxlbS5jc3MoImxlZnQiLEQpO28ucGFjaygpfX12YXIgej1bImJvdHRvbSIsMF07aWYocSl7dmFyIG09dGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoImxlZnQiLGwrZy8yLW0vMisicHgiKTtpZih0aGlzLm5hbWU9PSJ4YXhpcyIpe3RoaXMuX2xhYmVsLl9lbGVtLmNzcygiYm90dG9tIiwiMHB4Iik7ej1bImJvdHRvbSIsdGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJIZWlnaHQodHJ1ZSldfWVsc2V7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJ0b3AiLCIwcHgiKTt6PVsidG9wIix0aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKV19dGhpcy5fbGFiZWwucGFjaygpfXZhciBkPXBhcnNlSW50KHRoaXMuX3RpY2tzLmxlbmd0aC90aGlzLmdyb3VwcywxMCkrMTtmb3IoeD0wO3g8dGhpcy5fZ3JvdXBMYWJlbHMubGVuZ3RoO3grKyl7dmFyIEI9MDt2YXIgZj0wO2Zvcih2YXIgdT14KmQ7dTwoeCsxKSpkO3UrKyl7aWYodT49dGhpcy5fdGlja3MubGVuZ3RoLTEpe2NvbnRpbnVlfWlmKHRoaXMuX3RpY2tzW3VdLl9lbGVtJiZ0aGlzLl90aWNrc1t1XS5sYWJlbCE9IiAiKXt2YXIgbz10aGlzLl90aWNrc1t1XS5fZWxlbTt2YXIgcj1vLnBvc2l0aW9uKCk7Qis9ci5sZWZ0K28ub3V0ZXJXaWR0aCh0cnVlKS8yO2YrK319Qj1CL2Y7dGhpcy5fZ3JvdXBMYWJlbHNbeF0uY3NzKHtsZWZ0OihCLXRoaXMuX2dyb3VwTGFiZWxzW3hdLm91dGVyV2lkdGgodHJ1ZSkvMil9KTt0aGlzLl9ncm91cExhYmVsc1t4XS5jc3MoelswXSx6WzFdKX19ZWxzZXtmb3IoeD0wO3g8Qy5sZW5ndGg7eCsrKXt2YXIgbz1DW3hdO2lmKG8uc2hvdyYmby5zaG93TGFiZWwpe3ZhciBiO2lmKG8uY29uc3RydWN0b3I9PWEuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXImJm8uYW5nbGUpe3ZhciBBPSh0aGlzLm5hbWU9PSJ5YXhpcyIpPzE6LTE7c3dpdGNoKG8ubGFiZWxQb3NpdGlvbil7Y2FzZSJhdXRvIjpjYXNlImVuZCI6aWYoQSpvLmFuZ2xlPDApe2I9LW8uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5jb3MoLW8uX3RleHRSZW5kZXJlci5hbmdsZSkvMn1lbHNle2I9LW8uZ2V0SGVpZ2h0KCkrby5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLmNvcyhvLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9YnJlYWs7Y2FzZSJzdGFydCI6aWYoby5hbmdsZT4wKXtiPS1vLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguY29zKC1vLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9ZWxzZXtiPS1vLmdldEhlaWdodCgpK28uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5jb3Moby5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWJyZWFrO2Nhc2UibWlkZGxlIjpiPS1vLmdldEhlaWdodCgpLzI7YnJlYWs7ZGVmYXVsdDpiPS1vLmdldEhlaWdodCgpLzI7YnJlYWt9fWVsc2V7Yj0tby5nZXRIZWlnaHQoKS8yfXZhciBEPXRoaXMudTJwKG8udmFsdWUpK2IrInB4IjtvLl9lbGVtLmNzcygidG9wIixEKTtvLnBhY2soKX19dmFyIHo9WyJsZWZ0IiwwXTtpZihxKXt2YXIgeT10aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoInRvcCIsbi1nLzIteS8yKyJweCIpO2lmKHRoaXMubmFtZT09InlheGlzIil7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJsZWZ0IiwiMHB4Iik7ej1bImxlZnQiLHRoaXMuX2xhYmVsLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSldfWVsc2V7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJyaWdodCIsIjBweCIpO3o9WyJyaWdodCIsdGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKV19dGhpcy5fbGFiZWwucGFjaygpfXZhciBkPXBhcnNlSW50KHRoaXMuX3RpY2tzLmxlbmd0aC90aGlzLmdyb3VwcywxMCkrMTtmb3IoeD0wO3g8dGhpcy5fZ3JvdXBMYWJlbHMubGVuZ3RoO3grKyl7dmFyIEI9MDt2YXIgZj0wO2Zvcih2YXIgdT14KmQ7dTwoeCsxKSpkO3UrKyl7aWYodT49dGhpcy5fdGlja3MubGVuZ3RoLTEpe2NvbnRpbnVlfWlmKHRoaXMuX3RpY2tzW3VdLl9lbGVtJiZ0aGlzLl90aWNrc1t1XS5sYWJlbCE9IiAiKXt2YXIgbz10aGlzLl90aWNrc1t1XS5fZWxlbTt2YXIgcj1vLnBvc2l0aW9uKCk7Qis9ci50b3Arby5vdXRlckhlaWdodCgpLzI7ZisrfX1CPUIvZjt0aGlzLl9ncm91cExhYmVsc1t4XS5jc3Moe3RvcDpCLXRoaXMuX2dyb3VwTGFiZWxzW3hdLm91dGVySGVpZ2h0KCkvMn0pO3RoaXMuX2dyb3VwTGFiZWxzW3hdLmNzcyh6WzBdLHpbMV0pfX19fX0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.ciParser.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuY2lQYXJzZXIKICAgICAqIERhdGEgUmVuZGVyZXIgZnVuY3Rpb24gd2hpY2ggY29udmVydHMgYSBjdXN0b20gSlNPTiBkYXRhIG9iamVjdCBpbnRvIGpxUGxvdCBkYXRhIGZvcm1hdC4KICAgICAqIFNldCB0aGlzIGFzIGEgY2FsbGFibGUgb24gdGhlIGpxcGxvdCBkYXRhUmVuZGVyZXIgcGxvdCBvcHRpb246CiAgICAgKiAKICAgICAqID4gcGxvdCA9ICQuanFwbG90KCdteWNoYXJ0JywgW2RhdGFdLCB7IGRhdGFSZW5kZXJlcjogJC5qcXBsb3QuY2lQYXJzZXIsIC4uLiB9KTsKICAgICAqIAogICAgICogV2hlcmUgZGF0YSBpcyBhbiBvYmplY3QgaW4gSlNPTiBmb3JtYXQgb3IgYSBKU09OIGVuY29kZWQgc3RyaW5nIGNvbmZvcm1pbmcgdG8gdGhlCiAgICAgKiBDaXR5IEluZGV4IEFQSSBzcGVjLgogICAgICogCiAgICAgKiBOb3RlIHRoYXQgY2FsbGluZyB0aGUgcmVuZGVyZXIgZnVuY3Rpb24gaXMgaGFuZGxlZCBpbnRlcm5hbGx5IGJ5IGpxUGxvdC4gIFRoZQogICAgICogdXNlciBkb2VzIG5vdCBoYXZlIHRvIGNhbGwgdGhlIGZ1bmN0aW9uLiAgVGhlIHBhcmFtZXRlcnMgZGVzY3JpYmVkIGJlbG93IHdpbGwKICAgICAqIGF1dG9tYXRpY2FsbHkgYmUgcGFzc2VkIHRvIHRoZSBjaVBhcnNlciBmdW5jdGlvbi4KICAgICAqIAogICAgICogUGFyYW1ldGVyczoKICAgICAqIGRhdGEgLSBKU09OIGVuY29kZWQgc3RyaW5nIG9yIG9iamVjdC4KICAgICAqIHBsb3QgLSByZWZlcmVuY2UgdG8ganFQbG90IFBsb3Qgb2JqZWN0LgogICAgICogCiAgICAgKiBSZXR1cm5zOgogICAgICogZGF0YSBhcnJheSBpbiBqcVBsb3QgZm9ybWF0LgogICAgICogCiAgICAgKi8KICAgICQuanFwbG90LmNpUGFyc2VyID0gZnVuY3Rpb24gKGRhdGEsIHBsb3QpIHsKICAgICAgICB2YXIgcmV0ID0gW10sCiAgICAgICAgICAgIGxpbmUsCiAgICAgICAgICAgIHRlbXAsCiAgICAgICAgICAgIGksIGosIGssIGtrOwogICAgCiAgICAgICAgIGlmICh0eXBlb2YoZGF0YSkgPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgIGRhdGEgPSAgJC5qcXBsb3QuSlNPTi5wYXJzZShkYXRhLCBoYW5kbGVTdHJpbmdzKTsKICAgICAgICAgfQogCiAgICAgICAgIGVsc2UgaWYgKHR5cGVvZihkYXRhKSA9PSAib2JqZWN0IikgewogICAgICAgICAgICAgZm9yIChrIGluIGRhdGEpIHsKICAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTxkYXRhW2tdLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIGZvciAoa2sgaW4gZGF0YVtrXVtpXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVtrXVtpXVtra10gPSBoYW5kbGVTdHJpbmdzKGtrLCBkYXRhW2tdW2ldW2trXSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9CiAKICAgICAgICAgLy8gZnVuY3Rpb24gaGFuZGxlU3RyaW5ncwogICAgICAgICAvLyBDaGVja3MgYW55IEpTT04gZW5jb2RlZCBzdHJpbmdzIHRvIHNlZSBpZiB0aGV5IGFyZQogICAgICAgICAvLyBlbmNvZGVkIGRhdGVzLiAgSWYgc28sIHB1bGwgb3V0IHRoZSB0aW1lc3RhbXAuCiAgICAgICAgIC8vIEV4cGVjdHMgZGF0ZXMgdG8gYmUgcmVwcmVzZW50ZWQgYnkganMgdGltZXN0YW1wcy4KIAogICAgICAgICBmdW5jdGlvbiBoYW5kbGVTdHJpbmdzKGtleSwgdmFsdWUpIHsKICAgICAgICAgICAgdmFyIGE7CiAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBpZiAodmFsdWUudG9TdHJpbmcoKS5pbmRleE9mKCdEYXRlJykgPj0gMCkgewogICAgICAgICAgICAgICAgICAgIC8vaGVyZSB3ZSB3aWxsIHRyeSB0byBleHRyYWN0IHRoZSB0aWNrcyBmcm9tIHRoZSBEYXRlIHN0cmluZyBpbiB0aGUgInZhbHVlIiBmaWVsZHMgb2YgSlNPTiByZXR1cm5lZCBkYXRhCiAgICAgICAgICAgICAgICAgICAgYSA9IC9eXC9EYXRlXCgoLT9bMC05XSspXClcLyQvLmV4ZWModmFsdWUpOwogICAgICAgICAgICAgICAgICAgIGlmIChhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUludChhWzFdLCAxMCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgIGZvciAodmFyIHByb3AgaW4gZGF0YSkgewogICAgICAgICAgICBsaW5lID0gW107CiAgICAgICAgICAgIHRlbXAgPSBkYXRhW3Byb3BdOwogICAgICAgICAgICBzd2l0Y2ggKHByb3ApIHsKICAgICAgICAgICAgICAgIGNhc2UgIlByaWNlVGlja3MiOgogICAgICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPHRlbXAubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgbGluZS5wdXNoKFt0ZW1wW2ldWydUaWNrRGF0ZSddLCB0ZW1wW2ldWydQcmljZSddXSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAiUHJpY2VCYXJzIjoKICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTx0ZW1wLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUucHVzaChbdGVtcFtpXVsnQmFyRGF0ZSddLCB0ZW1wW2ldWydPcGVuJ10sIHRlbXBbaV1bJ0hpZ2gnXSwgdGVtcFtpXVsnTG93J10sIHRlbXBbaV1bJ0Nsb3NlJ11dKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0LnB1c2gobGluZSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXQ7CiAgICB9Owp9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.ciParser.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGEpe2EuanFwbG90LmNpUGFyc2VyPWZ1bmN0aW9uKGcsbCl7dmFyIG09W10sbyxuLGgsZixlLGM7aWYodHlwZW9mKGcpPT0ic3RyaW5nIil7Zz1hLmpxcGxvdC5KU09OLnBhcnNlKGcsZCl9ZWxzZXtpZih0eXBlb2YoZyk9PSJvYmplY3QiKXtmb3IoZSBpbiBnKXtmb3IoaD0wO2g8Z1tlXS5sZW5ndGg7aCsrKXtmb3IoYyBpbiBnW2VdW2hdKXtnW2VdW2hdW2NdPWQoYyxnW2VdW2hdW2NdKX19fX1lbHNle3JldHVybiBudWxsfX1mdW5jdGlvbiBkKGosayl7dmFyIGk7aWYoayE9bnVsbCl7aWYoay50b1N0cmluZygpLmluZGV4T2YoIkRhdGUiKT49MCl7aT0vXlwvRGF0ZVwoKC0/WzAtOV0rKVwpXC8kLy5leGVjKGspO2lmKGkpe3JldHVybiBwYXJzZUludChpWzFdLDEwKX19cmV0dXJuIGt9fWZvcih2YXIgYiBpbiBnKXtvPVtdO249Z1tiXTtzd2l0Y2goYil7Y2FzZSJQcmljZVRpY2tzIjpmb3IoaD0wO2g8bi5sZW5ndGg7aCsrKXtvLnB1c2goW25baF1bIlRpY2tEYXRlIl0sbltoXVsiUHJpY2UiXV0pfWJyZWFrO2Nhc2UiUHJpY2VCYXJzIjpmb3IoaD0wO2g8bi5sZW5ndGg7aCsrKXtvLnB1c2goW25baF1bIkJhckRhdGUiXSxuW2hdWyJPcGVuIl0sbltoXVsiSGlnaCJdLG5baF1bIkxvdyJdLG5baF1bIkNsb3NlIl1dKX1icmVha31tLnB1c2gobyl9cmV0dXJuIG19fSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.cursor.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgCiAgICAvKioKICAgICAqIENsYXNzOiAkLmpxcGxvdC5DdXJzb3IKICAgICAqIFBsdWdpbiBjbGFzcyByZXByZXNlbnRpbmcgdGhlIGN1cnNvciBhcyBkaXNwbGF5ZWQgb24gdGhlIHBsb3QuCiAgICAgKi8KICAgICQuanFwbG90LkN1cnNvciA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAvLyBHcm91cDogUHJvcGVydGllcwogICAgICAgIC8vCiAgICAgICAgLy8gcHJvcDogc3R5bGUKICAgICAgICAvLyBDU1Mgc3BlYyBmb3IgY3Vyc29yIHN0eWxlCiAgICAgICAgdGhpcy5zdHlsZSA9ICdjcm9zc2hhaXInOwogICAgICAgIHRoaXMucHJldmlvdXNDdXJzb3IgPSAnYXV0byc7CiAgICAgICAgLy8gcHJvcDogc2hvdwogICAgICAgIC8vIHdoZXRoZXIgdG8gc2hvdyB0aGUgY3Vyc29yIG9yIG5vdC4KICAgICAgICB0aGlzLnNob3cgPSAkLmpxcGxvdC5jb25maWcuZW5hYmxlUGx1Z2luczsKICAgICAgICAvLyBwcm9wOiBzaG93VG9vbHRpcAogICAgICAgIC8vIHNob3cgYSBjdXJzb3IgcG9zaXRpb24gdG9vbHRpcC4gIExvY2F0aW9uIG9mIHRoZSB0b29sdGlwCiAgICAgICAgLy8gd2lsbCBiZSBjb250cm9sbGVkIGJ5IGZvbGxvd01vdXNlIGFuZCB0b29sdGlwTG9jYXRpb24uCiAgICAgICAgdGhpcy5zaG93VG9vbHRpcCA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogZm9sbG93TW91c2UKICAgICAgICAvLyBUb29sdGlwIGZvbGxvd3MgdGhlIG1vdXNlLCBpdCBpcyBub3QgYXQgYSBmaXhlZCBsb2NhdGlvbi4KICAgICAgICAvLyBUb29sdGlwIHdpbGwgc2hvdyBvbiB0aGUgZ3JpZCBhdCB0aGUgbG9jYXRpb24gZ2l2ZW4gYnkKICAgICAgICAvLyB0b29sdGlwTG9jYXRpb24sIG9mZnNldCBmcm9tIHRoZSBncmlkIGVkZ2UgYnkgdG9vbHRpcE9mZnNldC4KICAgICAgICB0aGlzLmZvbGxvd01vdXNlID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogdG9vbHRpcExvY2F0aW9uCiAgICAgICAgLy8gV2hlcmUgdG8gcG9zaXRpb24gdG9vbHRpcC4gIElmIGZvbGxvd01vdXNlIGlzIHRydWUsIHRoaXMgaXMKICAgICAgICAvLyByZWxhdGl2ZSB0byB0aGUgY3Vyc29yLCBvdGhlcndpc2UsIGl0IGlzIHJlbGF0aXZlIHRvIHRoZSBncmlkLgogICAgICAgIC8vIE9uZSBvZiAnbicsICduZScsICdlJywgJ3NlJywgJ3MnLCAnc3cnLCAndycsICdudycKICAgICAgICB0aGlzLnRvb2x0aXBMb2NhdGlvbiA9ICdzZSc7CiAgICAgICAgLy8gcHJvcDogdG9vbHRpcE9mZnNldAogICAgICAgIC8vIFBpeGVsIG9mZnNldCBvZiB0b29sdGlwIGZyb20gdGhlIGdyaWQgYm91ZGFyaWVzIG9yIGN1cnNvciBjZW50ZXIuCiAgICAgICAgdGhpcy50b29sdGlwT2Zmc2V0ID0gNjsKICAgICAgICAvLyBwcm9wOiBzaG93VG9vbHRpcEdyaWRQb3NpdGlvbgogICAgICAgIC8vIHNob3cgdGhlIGdyaWQgcGl4ZWwgY29vcmRpbmF0ZXMgb2YgdGhlIG1vdXNlLgogICAgICAgIHRoaXMuc2hvd1Rvb2x0aXBHcmlkUG9zaXRpb24gPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiBzaG93VG9vbHRpcFVuaXRQb3NpdGlvbgogICAgICAgIC8vIHNob3cgdGhlIHVuaXQgKGRhdGEpIGNvb3JkaW5hdGVzIG9mIHRoZSBtb3VzZS4KICAgICAgICB0aGlzLnNob3dUb29sdGlwVW5pdFBvc2l0aW9uID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBzaG93VG9vbHRpcERhdGFQb3NpdGlvbgogICAgICAgIC8vIFVzZWQgd2l0aCBzaG93VmVydGljYWxMaW5lIHRvIHNob3cgaW50ZXJzZWN0aW5nIGRhdGEgcG9pbnRzIGluIHRoZSB0b29sdGlwLgogICAgICAgIHRoaXMuc2hvd1Rvb2x0aXBEYXRhUG9zaXRpb24gPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiB0b29sdGlwRm9ybWF0U3RyaW5nCiAgICAgICAgLy8gc3ByaW50ZiBmb3JtYXQgc3RyaW5nIGZvciB0aGUgdG9vbHRpcC4KICAgICAgICAvLyBVc2VzIEFzaCBTZWFybGUncyBqYXZhc2NyaXB0IHNwcmludGYgaW1wbGVtZW50YXRpb24KICAgICAgICAvLyBmb3VuZCBoZXJlOiBodHRwOi8vaGV4bWVuLmNvbS9ibG9nLzIwMDcvMDMvcHJpbnRmLXNwcmludGYvCiAgICAgICAgLy8gU2VlIGh0dHA6Ly9wZXJsZG9jLnBlcmwub3JnL2Z1bmN0aW9ucy9zcHJpbnRmLmh0bWwgZm9yIHJlZmVyZW5jZQogICAgICAgIC8vIE5vdGUsIGlmIHNob3dUb29sdGlwRGF0YVBvc2l0aW9uIGlzIHRydWUsIHRoZSBkZWZhdWx0IHRvb2x0aXBGb3JtYXRTdHJpbmcKICAgICAgICAvLyB3aWxsIGJlIHNldCB0byB0aGUgY3Vyc29yTGVnZW5kRm9ybWF0U3RyaW5nLCBub3QgdGhlIGRlZmF1bHQgZ2l2ZW4gaGVyZS4KICAgICAgICB0aGlzLnRvb2x0aXBGb3JtYXRTdHJpbmcgPSAnJS40UCwgJS40UCc7CiAgICAgICAgLy8gcHJvcDogdXNlQXhlc0Zvcm1hdHRlcnMKICAgICAgICAvLyBVc2UgdGhlIHggYW5kIHkgYXhlcyBmb3JtYXR0ZXJzIHRvIGZvcm1hdCB0aGUgdGV4dCBpbiB0aGUgdG9vbHRpcC4KICAgICAgICB0aGlzLnVzZUF4ZXNGb3JtYXR0ZXJzID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiB0b29sdGlwQXhpc0dyb3VwcwogICAgICAgIC8vIFNob3cgcG9zaXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgYXhlcy4KICAgICAgICAvLyBUaGlzIGlzIGFuIGFycmF5IGxpa2UgW1sneGF4aXMnLCAneWF4aXMnXSwgWyd4YXhpcycsICd5MmF4aXMnXV0KICAgICAgICAvLyBEZWZhdWx0IGlzIHRvIGNvbXB1dGUgYXV0b21hdGljYWxseSBmb3IgYWxsIHZpc2libGUgYXhlcy4KICAgICAgICB0aGlzLnRvb2x0aXBBeGlzR3JvdXBzID0gW107CiAgICAgICAgLy8gcHJvcDogem9vbQogICAgICAgIC8vIEVuYWJsZSBwbG90IHpvb21pbmcuCiAgICAgICAgdGhpcy56b29tID0gZmFsc2U7CiAgICAgICAgLy8gem9vbVByb3h5IGFuZCB6b29tVGFyZ2V0IHByb3BlcnRpZXMgYXJlIG5vdCBkaXJlY3RseSBzZXQgYnkgdXNlci4gIAogICAgICAgIC8vIFRoZXkgV2lsbCBiZSBzZXQgdGhyb3VnaCBjYWxsIHRvIHpvb21Qcm94eSBtZXRob2QuCiAgICAgICAgdGhpcy56b29tUHJveHkgPSBmYWxzZTsKICAgICAgICB0aGlzLnpvb21UYXJnZXQgPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiBsb29zZVpvb20KICAgICAgICAvLyBXaWxsIGV4cGFuZCB6b29tIHJhbmdlIHRvIHByb3ZpZGUgbW9yZSByb3VuZGVkIHRpY2sgdmFsdWVzLgogICAgICAgIC8vIFdvcmtzIG9ubHkgd2l0aCBsaW5lYXIsIGxvZyBhbmQgZGF0ZSBheGVzLgogICAgICAgIHRoaXMubG9vc2Vab29tID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBjbGlja1Jlc2V0CiAgICAgICAgLy8gV2lsbCByZXNldCBwbG90IHpvb20gaWYgc2luZ2xlIGNsaWNrIG9uIHBsb3Qgd2l0aG91dCBkcmFnLgogICAgICAgIHRoaXMuY2xpY2tSZXNldCA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGRibENsaWNrUmVzZXQKICAgICAgICAvLyBXaWxsIHJlc2V0IHBsb3Qgem9vbSBpZiBkb3VibGUgY2xpY2sgb24gcGxvdCB3aXRob3V0IGRyYWcuCiAgICAgICAgdGhpcy5kYmxDbGlja1Jlc2V0ID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBzaG93VmVydGljYWxMaW5lCiAgICAgICAgLy8gZHJhdyBhIHZlcnRpY2FsIGxpbmUgYWNyb3NzIHRoZSBwbG90IHdoaWNoIGZvbGxvd3MgdGhlIGN1cnNvci4KICAgICAgICAvLyBXaGVuIHRoZSBsaW5lIGlzIG5lYXIgYSBkYXRhIHBvaW50LCBhIHNwZWNpYWwgbGVnZW5kIGFuZC9vciB0b29sdGlwIGNhbgogICAgICAgIC8vIGJlIHVwZGF0ZWQgd2l0aCB0aGUgZGF0YSB2YWx1ZXMuCiAgICAgICAgdGhpcy5zaG93VmVydGljYWxMaW5lID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogc2hvd0hvcml6b250YWxMaW5lCiAgICAgICAgLy8gZHJhdyBhIGhvcml6b250YWwgbGluZSBhY3Jvc3MgdGhlIHBsb3Qgd2hpY2ggZm9sbG93cyB0aGUgY3Vyc29yLgogICAgICAgIHRoaXMuc2hvd0hvcml6b250YWxMaW5lID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogY29uc3RyYWluWm9vbVRvCiAgICAgICAgLy8gJ25vbmUnLCAneCcgb3IgJ3knCiAgICAgICAgdGhpcy5jb25zdHJhaW5ab29tVG8gPSAnbm9uZSc7CiAgICAgICAgLy8gLy8gcHJvcDogYXV0b3NjYWxlQ29uc3RyYWludAogICAgICAgIC8vIC8vIHdoZW4gYSBjb25zdHJhaW5lZCBheGlzIGlzIHNwZWNpZmllZCwgdHJ1ZSB3aWxsCiAgICAgICAgLy8gLy8gYXVhdG9zY2FsZSB0aGUgYWRqYWNlbnQgYXhpcy4KICAgICAgICAvLyB0aGlzLmF1dG9zY2FsZUNvbnN0cmFpbnQgPSB0cnVlOwogICAgICAgIHRoaXMuc2hhcGVSZW5kZXJlciA9IG5ldyAkLmpxcGxvdC5TaGFwZVJlbmRlcmVyKCk7CiAgICAgICAgdGhpcy5fem9vbSA9IHtzdGFydDpbXSwgZW5kOltdLCBzdGFydGVkOiBmYWxzZSwgem9vbWluZzpmYWxzZSwgaXNab29tZWQ6ZmFsc2UsIGF4ZXM6e3N0YXJ0Ont9LCBlbmQ6e319LCBncmlkcG9zOnt9LCBkYXRhcG9zOnt9fTsKICAgICAgICB0aGlzLl90b29sdGlwRWxlbTsKICAgICAgICB0aGlzLnpvb21DYW52YXM7CiAgICAgICAgdGhpcy5jdXJzb3JDYW52YXM7CiAgICAgICAgLy8gcHJvcDogaW50ZXJzZWN0aW9uVGhyZXNob2xkCiAgICAgICAgLy8gcGl4ZWwgZGlzdGFuY2UgZnJvbSBkYXRhIHBvaW50IG9yIG1hcmtlciB0byBjb25zaWRlciBjdXJzb3IgbGluZXMgaW50ZXJzZWN0aW5nIHdpdGggcG9pbnQuCiAgICAgICAgLy8gSWYgZGF0YSBwb2ludCBtYXJrZXJzIGFyZSBub3Qgc2hvd24sIHRoaXMgc2hvdWxkIGJlID49IDEgb3Igd2lsbCBvZnRlbiBtaXNzIHBvaW50IGludGVyc2VjdGlvbnMuCiAgICAgICAgdGhpcy5pbnRlcnNlY3Rpb25UaHJlc2hvbGQgPSAyOwogICAgICAgIC8vIHByb3A6IHNob3dDdXJzb3JMZWdlbmQKICAgICAgICAvLyBSZXBsYWNlIHRoZSBwbG90IGxlZ2VuZCB3aXRoIGFuIGVuaGFuY2VkIGxlZ2VuZCBkaXNwbGF5aW5nIGludGVyc2VjdGlvbiBpbmZvcm1hdGlvbi4KICAgICAgICB0aGlzLnNob3dDdXJzb3JMZWdlbmQgPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiBjdXJzb3JMZWdlbmRGb3JtYXRTdHJpbmcKICAgICAgICAvLyBGb3JtYXQgc3RyaW5nIHVzZWQgaW4gdGhlIGN1cnNvciBsZWdlbmQuICBJZiBzaG93VG9vbHRpcERhdGFQb3NpdGlvbiBpcyB0cnVlLAogICAgICAgIC8vIHRoaXMgd2lsbCBhbHNvIGJlIHRoZSBkZWZhdWx0IGZvcm1hdCBzdHJpbmcgdXNlZCBieSB0b29sdGlwRm9ybWF0U3RyaW5nLgogICAgICAgIHRoaXMuY3Vyc29yTGVnZW5kRm9ybWF0U3RyaW5nID0gJC5qcXBsb3QuQ3Vyc29yLmN1cnNvckxlZ2VuZEZvcm1hdFN0cmluZzsKICAgICAgICAvLyB3aGV0aGVyIHRoZSBjdXJzb3IgaXMgb3ZlciB0aGUgZ3JpZCBvciBub3QuCiAgICAgICAgdGhpcy5fb2xkSGFuZGxlcnMgPSB7b25zZWxlY3RzdGFydDogbnVsbCwgb25kcmFnOiBudWxsLCBvbm1vdXNlZG93bjogbnVsbH07CiAgICAgICAgLy8gcHJvcDogY29uc3RyYWluT3V0c2lkZVpvb20KICAgICAgICAvLyBUcnVlIHRvIGxpbWl0IGFjdHVhbCB6b29tIGFyZWEgdG8gZWRnZXMgb2YgZ3JpZCwgZXZlbiB3aGVuIHpvb21pbmcKICAgICAgICAvLyBvdXRzaWRlIG9mIHBsb3QgYXJlYS4gIFRoYXQgaXMsIGNhbid0IHpvb20gb3V0IGJ5IG1vdXNpbmcgb3V0c2lkZSBwbG90LgogICAgICAgIHRoaXMuY29uc3RyYWluT3V0c2lkZVpvb20gPSB0cnVlOwogICAgICAgIC8vIHByb3A6IHNob3dUb29sdGlwT3V0c2lkZVpvb20KICAgICAgICAvLyBUcnVlIHdpbGwga2VlcCB1cGRhdGluZyB0aGUgdG9vbHRpcCB3aGVuIHpvb21pbmcgb2YgdGhlIGdyaWQuCiAgICAgICAgdGhpcy5zaG93VG9vbHRpcE91dHNpZGVab29tID0gZmFsc2U7CiAgICAgICAgLy8gdHJ1ZSBpZiBtb3VzZSBpcyBvdmVyIGdyaWQsIGZhbHNlIGlmIG5vdC4KICAgICAgICB0aGlzLm9uR3JpZCA9IGZhbHNlOwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQ3Vyc29yLmN1cnNvckxlZ2VuZEZvcm1hdFN0cmluZyA9ICclcyB4OiVzLCB5OiVzJzsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgcGxvdAogICAgJC5qcXBsb3QuQ3Vyc29yLmluaXQgPSBmdW5jdGlvbiAodGFyZ2V0LCBkYXRhLCBvcHRzKXsKICAgICAgICAvLyBhZGQgYSBjdXJzb3IgYXR0cmlidXRlIHRvIHRoZSBwbG90CiAgICAgICAgdmFyIG9wdGlvbnMgPSBvcHRzIHx8IHt9OwogICAgICAgIHRoaXMucGx1Z2lucy5jdXJzb3IgPSBuZXcgJC5qcXBsb3QuQ3Vyc29yKG9wdGlvbnMuY3Vyc29yKTsKICAgICAgICB2YXIgYyA9IHRoaXMucGx1Z2lucy5jdXJzb3I7CgogICAgICAgIGlmIChjLnNob3cpIHsKICAgICAgICAgICAgJC5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLnB1c2goWydqcXBsb3RNb3VzZUVudGVyJywgaGFuZGxlTW91c2VFbnRlcl0pOwogICAgICAgICAgICAkLmpxcGxvdC5ldmVudExpc3RlbmVySG9va3MucHVzaChbJ2pxcGxvdE1vdXNlTGVhdmUnLCBoYW5kbGVNb3VzZUxlYXZlXSk7CiAgICAgICAgICAgICQuanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsnanFwbG90TW91c2VNb3ZlJywgaGFuZGxlTW91c2VNb3ZlXSk7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoYy5zaG93Q3Vyc29yTGVnZW5kKSB7ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIG9wdHMubGVnZW5kID0gb3B0cy5sZWdlbmQgfHwge307CiAgICAgICAgICAgICAgICBvcHRzLmxlZ2VuZC5yZW5kZXJlciA9ICAkLmpxcGxvdC5DdXJzb3JMZWdlbmRSZW5kZXJlcjsKICAgICAgICAgICAgICAgIG9wdHMubGVnZW5kLmZvcm1hdFN0cmluZyA9IHRoaXMucGx1Z2lucy5jdXJzb3IuY3Vyc29yTGVnZW5kRm9ybWF0U3RyaW5nOwogICAgICAgICAgICAgICAgb3B0cy5sZWdlbmQuc2hvdyA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChjLnpvb20pIHsKICAgICAgICAgICAgICAgICQuanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsnanFwbG90TW91c2VEb3duJywgaGFuZGxlTW91c2VEb3duXSk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmIChjLmNsaWNrUmVzZXQpIHsKICAgICAgICAgICAgICAgICAgICAkLmpxcGxvdC5ldmVudExpc3RlbmVySG9va3MucHVzaChbJ2pxcGxvdENsaWNrJywgaGFuZGxlQ2xpY2tdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYgKGMuZGJsQ2xpY2tSZXNldCkgewogICAgICAgICAgICAgICAgICAgICQuanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsnanFwbG90RGJsQ2xpY2snLCBoYW5kbGVEYmxDbGlja10pOwogICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgCiAgICAgICAgICAgIHRoaXMucmVzZXRab29tID0gZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgYXhlcyA9IHRoaXMuYXhlczsKICAgICAgICAgICAgICAgIGlmICghYy56b29tUHJveHkpIHsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBheCBpbiBheGVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGF4ZXNbYXhdLnJlc2V0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGF4ZXNbYXhdLl90aWNrcyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBmYWtlIG91dCB0aWNrIGNyZWF0aW9uIGFsZ29yaXRobSB0byBtYWtlIHN1cmUgb3JpZ2luYWwgYXV0bwogICAgICAgICAgICAgICAgICAgICAgICAvLyBjb21wdXRlZCBmb3JtYXQgc3RyaW5nIGlzIHVzZWQgaWYgX292ZXJyaWRlRm9ybWF0U3RyaW5nIGlzIHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMuX3pvb20uYXhlc1theF0gIT09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXhlc1theF0uX2F1dG9Gb3JtYXRTdHJpbmcgPSBjLl96b29tLmF4ZXNbYXhdLnRpY2tGb3JtYXRTdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWRyYXcoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHZhciBjdHggPSB0aGlzLnBsdWdpbnMuY3Vyc29yLnpvb21DYW52YXMuX2N0eDsKICAgICAgICAgICAgICAgICAgICBjdHguY2xlYXJSZWN0KDAsMCxjdHguY2FudmFzLndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgICAgICAgICAgICAgY3R4ID0gbnVsbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRoaXMucGx1Z2lucy5jdXJzb3IuX3pvb20uaXNab29tZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHRoaXMudGFyZ2V0LnRyaWdnZXIoJ2pxcGxvdFJlc2V0Wm9vbScsIFt0aGlzLCB0aGlzLnBsdWdpbnMuY3Vyc29yXSk7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIAoKICAgICAgICAgICAgaWYgKGMuc2hvd1Rvb2x0aXBEYXRhUG9zaXRpb24pIHsKICAgICAgICAgICAgICAgIGMuc2hvd1Rvb2x0aXBVbml0UG9zaXRpb24gPSBmYWxzZTsKICAgICAgICAgICAgICAgIGMuc2hvd1Rvb2x0aXBHcmlkUG9zaXRpb24gPSBmYWxzZTsKICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLmN1cnNvci50b29sdGlwRm9ybWF0U3RyaW5nID09IHVuZGVmaW5lZCkgewogICAgICAgICAgICAgICAgICAgIGMudG9vbHRpcEZvcm1hdFN0cmluZyA9ICQuanFwbG90LkN1cnNvci5jdXJzb3JMZWdlbmRGb3JtYXRTdHJpbmc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBjb250ZXh0IG9mIHBsb3QKICAgICQuanFwbG90LkN1cnNvci5wb3N0RHJhdyA9IGZ1bmN0aW9uKCkgewogICAgICAgIHZhciBjID0gdGhpcy5wbHVnaW5zLmN1cnNvcjsKICAgICAgICAKICAgICAgICAvLyBNZW1vcnkgTGVha3MgcGF0Y2gKICAgICAgICBpZiAoYy56b29tQ2FudmFzKSB7CiAgICAgICAgICAgIGMuem9vbUNhbnZhcy5yZXNldENhbnZhcygpOwogICAgICAgICAgICBjLnpvb21DYW52YXMgPSBudWxsOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoYy5jdXJzb3JDYW52YXMpIHsKICAgICAgICAgICAgYy5jdXJzb3JDYW52YXMucmVzZXRDYW52YXMoKTsKICAgICAgICAgICAgYy5jdXJzb3JDYW52YXMgPSBudWxsOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoYy5fdG9vbHRpcEVsZW0pIHsKICAgICAgICAgICAgYy5fdG9vbHRpcEVsZW0uZW1wdHlGb3JjZSgpOwogICAgICAgICAgICBjLl90b29sdGlwRWxlbSA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICAKICAgICAgICBpZiAoYy56b29tKSB7CiAgICAgICAgICAgIGMuem9vbUNhbnZhcyA9IG5ldyAkLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7CiAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKGMuem9vbUNhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCAnanFwbG90LXpvb20tY2FudmFzJywgdGhpcy5fcGxvdERpbWVuc2lvbnMsIHRoaXMpKTsKICAgICAgICAgICAgYy56b29tQ2FudmFzLnNldENvbnRleHQoKTsKICAgICAgICB9CgogICAgICAgIHZhciBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgYy5fdG9vbHRpcEVsZW0gPSAkKGVsZW0pOwogICAgICAgIGVsZW0gPSBudWxsOwogICAgICAgIGMuX3Rvb2x0aXBFbGVtLmFkZENsYXNzKCdqcXBsb3QtY3Vyc29yLXRvb2x0aXAnKTsKICAgICAgICBjLl90b29sdGlwRWxlbS5jc3Moe3Bvc2l0aW9uOidhYnNvbHV0ZScsIGRpc3BsYXk6J25vbmUnfSk7CiAgICAgICAgCiAgICAgICAgCiAgICAgICAgaWYgKGMuem9vbUNhbnZhcykgewogICAgICAgICAgICBjLnpvb21DYW52YXMuX2VsZW0uYmVmb3JlKGMuX3Rvb2x0aXBFbGVtKTsKICAgICAgICB9CgogICAgICAgIGVsc2UgewogICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZShjLl90b29sdGlwRWxlbSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoYy5zaG93VmVydGljYWxMaW5lIHx8IGMuc2hvd0hvcml6b250YWxMaW5lKSB7CiAgICAgICAgICAgIGMuY3Vyc29yQ2FudmFzID0gbmV3ICQuanFwbG90LkdlbmVyaWNDYW52YXMoKTsKICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUoYy5jdXJzb3JDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywgJ2pxcGxvdC1jdXJzb3ItY2FudmFzJywgdGhpcy5fcGxvdERpbWVuc2lvbnMsIHRoaXMpKTsKICAgICAgICAgICAgYy5jdXJzb3JDYW52YXMuc2V0Q29udGV4dCgpOwogICAgICAgIH0KCiAgICAgICAgLy8gaWYgd2UgYXJlIHNob3dpbmcgdGhlIHBvc2l0aW9ucyBpbiB1bml0IGNvb3JkaW5hdGVzLCBhbmQgbm8gYXhlcyBncm91cHMKICAgICAgICAvLyB3ZXJlIHNwZWNpZmllZCwgY3JlYXRlIGEgZGVmYXVsdCBzZXQuCiAgICAgICAgaWYgKGMuc2hvd1Rvb2x0aXBVbml0UG9zaXRpb24pewogICAgICAgICAgICBpZiAoYy50b29sdGlwQXhpc0dyb3Vwcy5sZW5ndGggPT09IDApIHsKICAgICAgICAgICAgICAgIHZhciBzZXJpZXMgPSB0aGlzLnNlcmllczsKICAgICAgICAgICAgICAgIHZhciBzOwogICAgICAgICAgICAgICAgdmFyIHRlbXAgPSBbXTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxzZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBzID0gc2VyaWVzW2ldOwogICAgICAgICAgICAgICAgICAgIHZhciBheCA9IHMueGF4aXMrJywnK3MueWF4aXM7CiAgICAgICAgICAgICAgICAgICAgaWYgKCQuaW5BcnJheShheCwgdGVtcCkgPT0gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcC5wdXNoKGF4KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGVtcC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIGMudG9vbHRpcEF4aXNHcm91cHMucHVzaCh0ZW1wW2ldLnNwbGl0KCcsJykpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKICAgIAogICAgLy8gR3JvdXA6IG1ldGhvZHMKICAgIC8vCiAgICAvLyBtZXRob2Q6ICQuanFwbG90LkN1cnNvci56b29tUHJveHkKICAgIC8vIGxpbmtzIHRhcmdldFBsb3QgdG8gY29udHJvbGxlclBsb3Qgc28gdGhhdCBwbG90IHpvb21pbmcgb2YKICAgIC8vIHRhcmdldFBsb3Qgd2lsbCBiZSBjb250cm9sbGVkIGJ5IHpvb21pbmcgb24gdGhlIGNvbnRyb2xsZXJQbG90LgogICAgLy8gY29udHJvbGxlclBsb3Qgd2lsbCBub3QgYWN0dWFsbHkgem9vbSwgYnV0IGFjdHMgYXMgYW4KICAgIC8vIG92ZXJ2aWV3IHBsb3QuICBOb3RlLCB0aGUgem9vbSBvcHRpb25zIG11c3QgYmUgc2V0IHRvIHRydWUgZm9yCiAgICAvLyB6b29tUHJveHkgdG8gd29yay4KICAgICQuanFwbG90LkN1cnNvci56b29tUHJveHkgPSBmdW5jdGlvbih0YXJnZXRQbG90LCBjb250cm9sbGVyUGxvdCkgewogICAgICAgIHZhciB0YyA9IHRhcmdldFBsb3QucGx1Z2lucy5jdXJzb3I7CiAgICAgICAgdmFyIGNjID0gY29udHJvbGxlclBsb3QucGx1Z2lucy5jdXJzb3I7CiAgICAgICAgdGMuem9vbVRhcmdldCA9IHRydWU7CiAgICAgICAgdGMuem9vbSA9IHRydWU7CiAgICAgICAgdGMuc3R5bGUgPSAnYXV0byc7CiAgICAgICAgdGMuZGJsQ2xpY2tSZXNldCA9IGZhbHNlOwogICAgICAgIGNjLnpvb20gPSB0cnVlOwogICAgICAgIGNjLnpvb21Qcm94eSA9IHRydWU7CiAgICAgICAgICAgICAgCiAgICAgICAgY29udHJvbGxlclBsb3QudGFyZ2V0LmJpbmQoJ2pxcGxvdFpvb20nLCBwbG90Wm9vbSk7CiAgICAgICAgY29udHJvbGxlclBsb3QudGFyZ2V0LmJpbmQoJ2pxcGxvdFJlc2V0Wm9vbScsIHBsb3RSZXNldCk7CgogICAgICAgIGZ1bmN0aW9uIHBsb3Rab29tKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBwbG90LCBjdXJzb3IpIHsKICAgICAgICAgICAgdGMuZG9ab29tKGdyaWRwb3MsIGRhdGFwb3MsIHRhcmdldFBsb3QsIGN1cnNvcik7CiAgICAgICAgfSAKCiAgICAgICAgZnVuY3Rpb24gcGxvdFJlc2V0KGV2LCBwbG90LCBjdXJzb3IpIHsKICAgICAgICAgICAgdGFyZ2V0UGxvdC5yZXNldFpvb20oKTsKICAgICAgICB9CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5DdXJzb3IucHJvdG90eXBlLnJlc2V0Wm9vbSA9IGZ1bmN0aW9uKHBsb3QsIGN1cnNvcikgewogICAgICAgIHZhciBheGVzID0gcGxvdC5heGVzOwogICAgICAgIHZhciBjYXggPSBjdXJzb3IuX3pvb20uYXhlczsKICAgICAgICBpZiAoIXBsb3QucGx1Z2lucy5jdXJzb3Iuem9vbVByb3h5ICYmIGN1cnNvci5fem9vbS5pc1pvb21lZCkgewogICAgICAgICAgICBmb3IgKHZhciBheCBpbiBheGVzKSB7CiAgICAgICAgICAgICAgICAvLyBheGVzW2F4XS5fdGlja3MgPSBbXTsKICAgICAgICAgICAgICAgIC8vIGF4ZXNbYXhdLm1pbiA9IGNheFtheF0ubWluOwogICAgICAgICAgICAgICAgLy8gYXhlc1theF0ubWF4ID0gY2F4W2F4XS5tYXg7CiAgICAgICAgICAgICAgICAvLyBheGVzW2F4XS5udW1iZXJUaWNrcyA9IGNheFtheF0ubnVtYmVyVGlja3M7IAogICAgICAgICAgICAgICAgLy8gYXhlc1theF0udGlja0ludGVydmFsID0gY2F4W2F4XS50aWNrSW50ZXJ2YWw7CiAgICAgICAgICAgICAgICAvLyAvLyBmb3IgZGF0ZSBheGVzCiAgICAgICAgICAgICAgICAvLyBheGVzW2F4XS5kYVRpY2tJbnRlcnZhbCA9IGNheFtheF0uZGFUaWNrSW50ZXJ2YWw7CiAgICAgICAgICAgICAgICBheGVzW2F4XS5yZXNldCgpOwogICAgICAgICAgICAgICAgYXhlc1theF0uX3RpY2tzID0gW107CiAgICAgICAgICAgICAgICAvLyBmYWtlIG91dCB0aWNrIGNyZWF0aW9uIGFsZ29yaXRobSB0byBtYWtlIHN1cmUgb3JpZ2luYWwgYXV0bwogICAgICAgICAgICAgICAgLy8gY29tcHV0ZWQgZm9ybWF0IHN0cmluZyBpcyB1c2VkIGlmIF9vdmVycmlkZUZvcm1hdFN0cmluZyBpcyB0cnVlCiAgICAgICAgICAgICAgICBheGVzW2F4XS5fYXV0b0Zvcm1hdFN0cmluZyA9IGNheFtheF0udGlja0Zvcm1hdFN0cmluZzsKICAgICAgICAgICAgfQogICAgICAgICAgICBwbG90LnJlZHJhdygpOwogICAgICAgICAgICBjdXJzb3IuX3pvb20uaXNab29tZWQgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHZhciBjdHggPSBjdXJzb3Iuem9vbUNhbnZhcy5fY3R4OwogICAgICAgICAgICBjdHguY2xlYXJSZWN0KDAsMCxjdHguY2FudmFzLndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgICAgIGN0eCA9IG51bGw7CiAgICAgICAgfQogICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoJ2pxcGxvdFJlc2V0Wm9vbScsIFtwbG90LCBjdXJzb3JdKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkN1cnNvci5yZXNldFpvb20gPSBmdW5jdGlvbihwbG90KSB7CiAgICAgICAgcGxvdC5yZXNldFpvb20oKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkN1cnNvci5wcm90b3R5cGUuZG9ab29tID0gZnVuY3Rpb24gKGdyaWRwb3MsIGRhdGFwb3MsIHBsb3QsIGN1cnNvcikgewogICAgICAgIHZhciBjID0gY3Vyc29yOwogICAgICAgIHZhciBheGVzID0gcGxvdC5heGVzOwogICAgICAgIHZhciB6YXhlcyA9IGMuX3pvb20uYXhlczsKICAgICAgICB2YXIgc3RhcnQgPSB6YXhlcy5zdGFydDsKICAgICAgICB2YXIgZW5kID0gemF4ZXMuZW5kOwogICAgICAgIHZhciBtaW4sIG1heCwgZHAsIHNwYW4sCiAgICAgICAgICAgIG5ld21pbiwgbmV3bWF4LCBjdXJheCwgX251bWJlclRpY2tzLCByZXQ7CiAgICAgICAgdmFyIGN0eCA9IHBsb3QucGx1Z2lucy5jdXJzb3Iuem9vbUNhbnZhcy5fY3R4OwogICAgICAgIC8vIGRvbid0IHpvb20gaWYgem9vbSBhcmVhIGlzIHRvbyBzbWFsbCAoaW4gcGl4ZWxzKQogICAgICAgIGlmICgoYy5jb25zdHJhaW5ab29tVG8gPT0gJ25vbmUnICYmIE1hdGguYWJzKGdyaWRwb3MueCAtIGMuX3pvb20uc3RhcnRbMF0pID4gNiAmJiBNYXRoLmFicyhncmlkcG9zLnkgLSBjLl96b29tLnN0YXJ0WzFdKSA+IDYpIHx8IChjLmNvbnN0cmFpblpvb21UbyA9PSAneCcgJiYgTWF0aC5hYnMoZ3JpZHBvcy54IC0gYy5fem9vbS5zdGFydFswXSkgPiA2KSB8fCAgKGMuY29uc3RyYWluWm9vbVRvID09ICd5JyAmJiBNYXRoLmFicyhncmlkcG9zLnkgLSBjLl96b29tLnN0YXJ0WzFdKSA+IDYpKSB7CiAgICAgICAgICAgIGlmICghcGxvdC5wbHVnaW5zLmN1cnNvci56b29tUHJveHkpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGF4IGluIGRhdGFwb3MpIHsKICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgYXhlcyB0byByZXZlcnQgYmFjay4KICAgICAgICAgICAgICAgICAgICBpZiAoYy5fem9vbS5heGVzW2F4XSA9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYy5fem9vbS5heGVzW2F4XSA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICBjLl96b29tLmF4ZXNbYXhdLm51bWJlclRpY2tzID0gYXhlc1theF0ubnVtYmVyVGlja3M7CiAgICAgICAgICAgICAgICAgICAgICAgIGMuX3pvb20uYXhlc1theF0udGlja0ludGVydmFsID0gYXhlc1theF0udGlja0ludGVydmFsOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgZGF0ZSBheGVzLi4uCiAgICAgICAgICAgICAgICAgICAgICAgIGMuX3pvb20uYXhlc1theF0uZGFUaWNrSW50ZXJ2YWwgPSBheGVzW2F4XS5kYVRpY2tJbnRlcnZhbDsKICAgICAgICAgICAgICAgICAgICAgICAgYy5fem9vbS5heGVzW2F4XS5taW4gPSBheGVzW2F4XS5taW47CiAgICAgICAgICAgICAgICAgICAgICAgIGMuX3pvb20uYXhlc1theF0ubWF4ID0gYXhlc1theF0ubWF4OwogICAgICAgICAgICAgICAgICAgICAgICBjLl96b29tLmF4ZXNbYXhdLnRpY2tGb3JtYXRTdHJpbmcgPSAoYXhlc1theF0udGlja09wdGlvbnMgIT0gbnVsbCkgPyBheGVzW2F4XS50aWNrT3B0aW9ucy5mb3JtYXRTdHJpbmcgOiAgJyc7CiAgICAgICAgICAgICAgICAgICAgfQoKCiAgICAgICAgICAgICAgICAgICAgaWYgKChjLmNvbnN0cmFpblpvb21UbyA9PSAnbm9uZScpIHx8IChjLmNvbnN0cmFpblpvb21UbyA9PSAneCcgJiYgYXguY2hhckF0KDApID09ICd4JykgfHwgKGMuY29uc3RyYWluWm9vbVRvID09ICd5JyAmJiBheC5jaGFyQXQoMCkgPT0gJ3knKSkgeyAgIAogICAgICAgICAgICAgICAgICAgICAgICBkcCA9IGRhdGFwb3NbYXhdOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZHAgIT0gbnVsbCkgeyAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZHAgPiBzdGFydFtheF0pIHsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3bWluID0gc3RhcnRbYXhdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld21heCA9IGRwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhbiA9IHN0YXJ0W2F4XSAtIGRwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld21pbiA9IGRwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld21heCA9IHN0YXJ0W2F4XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJheCA9IGF4ZXNbYXhdOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9udW1iZXJUaWNrcyA9IG51bGw7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgYWxpZ25pbmcgdGhpcyBheGlzLCB1c2UgbnVtYmVyIG9mIHRpY2tzIGZyb20gcHJldmlvdXMgYXhpcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvIEkgbmVlZCB0byByZXNldCBzb21laG93IGlmIGFsaWduVGlja3MgaXMgY2hhbmdlZCBhbmQgdGhlbiBncmFwaCBpcyByZXBsb3R0ZWQ/PwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cmF4LmFsaWduVGlja3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyYXgubmFtZSA9PT0gJ3gyYXhpcycgJiYgcGxvdC5heGVzLnhheGlzLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX251bWJlclRpY2tzID0gcGxvdC5heGVzLnhheGlzLm51bWJlclRpY2tzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJheC5uYW1lLmNoYXJBdCgwKSA9PT0gJ3knICYmIGN1cmF4Lm5hbWUgIT09ICd5YXhpcycgJiYgY3VyYXgubmFtZSAhPT0gJ3lNaWRBeGlzJyAmJiBwbG90LmF4ZXMueWF4aXMuc2hvdykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbnVtYmVyVGlja3MgPSBwbG90LmF4ZXMueWF4aXMubnVtYmVyVGlja3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5sb29zZVpvb20gJiYgKGF4ZXNbYXhdLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09PSAkLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIgfHwgYXhlc1theF0ucmVuZGVyZXIuY29uc3RydWN0b3IgPT09ICQuanFwbG90LkxvZ0F4aXNSZW5kZXJlciApKSB7IC8vfSB8fCBheGVzW2F4XS5yZW5kZXJlci5jb25zdHJ1Y3RvciA9PT0gJC5qcXBsb3QuRGF0ZUF4aXNSZW5kZXJlcikpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gJC5qcXBsb3QuTGluZWFyVGlja0dlbmVyYXRvcihuZXdtaW4sIG5ld21heCwgY3VyYXguX3NjYWxlZmFjdCwgX251bWJlclRpY2tzKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgbmV3IG1pbmltdW0gaXMgbGVzcyB0aGFuICJ0cnVlIiBtaW5pbXVtIG9mIGF4aXMgZGlzcGxheSwgYWRqdXN0IGl0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF4ZXNbYXhdLnRpY2tJbnNldCAmJiByZXRbMF0gPCBheGVzW2F4XS5taW4gKyBheGVzW2F4XS50aWNrSW5zZXQgKiBheGVzW2F4XS50aWNrSW50ZXJ2YWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0WzBdICs9IHJldFs0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0WzJdIC09IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBuZXcgbWF4aW11bSBpcyBncmVhdGVyIHRoYW4gInRydWUiIG1heCBvZiBheGlzIGRpc3BsYXksIGFkanVzdCBpdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChheGVzW2F4XS50aWNrSW5zZXQgJiYgcmV0WzFdID4gYXhlc1theF0ubWF4IC0gYXhlc1theF0udGlja0luc2V0ICogYXhlc1theF0udGlja0ludGVydmFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldFsxXSAtPSByZXRbNF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldFsyXSAtPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIGxvZyBheGVzLCBkb24ndCBmYWxsIGJlbG93IGN1cnJlbnQgbWluaW11bSwgdGhpcyB3aWxsIGxvb2sgYmFkIGFuZCBjYW4ndCBoYXZlIDAgaW4gcmFuZ2UgYW55d2F5LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChheGVzW2F4XS5yZW5kZXJlci5jb25zdHJ1Y3RvciA9PT0gJC5qcXBsb3QuTG9nQXhpc1JlbmRlcmVyICYmIHJldFswXSA8IGF4ZXNbYXhdLm1pbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgYSB0aWNrIGFuZCBzaGlmdCBtaW4gdXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0WzBdICs9IHJldFs0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0WzJdIC09IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheGVzW2F4XS5taW4gPSByZXRbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXhlc1theF0ubWF4ID0gcmV0WzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF4ZXNbYXhdLl9hdXRvRm9ybWF0U3RyaW5nID0gcmV0WzNdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF4ZXNbYXhdLm51bWJlclRpY2tzID0gcmV0WzJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF4ZXNbYXhdLnRpY2tJbnRlcnZhbCA9IHJldFs0XTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgZGF0ZSBheGVzLi4uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXhlc1theF0uZGFUaWNrSW50ZXJ2YWwgPSBbcmV0WzRdLzEwMDAsICdzZWNvbmRzJ107CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheGVzW2F4XS5taW4gPSBuZXdtaW47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXhlc1theF0ubWF4ID0gbmV3bWF4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF4ZXNbYXhdLnRpY2tJbnRlcnZhbCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXhlc1theF0ubnVtYmVyVGlja3MgPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBkYXRlIGF4ZXMuLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBheGVzW2F4XS5kYVRpY2tJbnRlcnZhbCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXhlc1theF0uX3RpY2tzID0gW107CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBpZiAoKGMuY29uc3RyYWluWm9vbVRvID09ICd4JyAmJiBheC5jaGFyQXQoMCkgPT0gJ3knICYmIGMuYXV0b3NjYWxlQ29uc3RyYWludCkgfHwgKGMuY29uc3RyYWluWm9vbVRvID09ICd5JyAmJiBheC5jaGFyQXQoMCkgPT0gJ3gnICYmIGMuYXV0b3NjYWxlQ29uc3RyYWludCkpIHsKICAgICAgICAgICAgICAgICAgICAvLyAgICAgZHAgPSBkYXRhcG9zW2F4XTsKICAgICAgICAgICAgICAgICAgICAvLyAgICAgaWYgKGRwICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgIGF4ZXNbYXhdLm1heCA9PSBudWxsOwogICAgICAgICAgICAgICAgICAgIC8vICAgICAgICAgYXhlc1theF0ubWluID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAvLyAgICAgfQogICAgICAgICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGN0eC5jbGVhclJlY3QoMCwwLGN0eC5jYW52YXMud2lkdGgsIGN0eC5jYW52YXMuaGVpZ2h0KTsKICAgICAgICAgICAgICAgIHBsb3QucmVkcmF3KCk7CiAgICAgICAgICAgICAgICBjLl96b29tLmlzWm9vbWVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGN0eCA9IG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcignanFwbG90Wm9vbScsIFtncmlkcG9zLCBkYXRhcG9zLCBwbG90LCBjdXJzb3JdKTsKICAgICAgICB9CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5wcmVJbml0SG9va3MucHVzaCgkLmpxcGxvdC5DdXJzb3IuaW5pdCk7CiAgICAkLmpxcGxvdC5wb3N0RHJhd0hvb2tzLnB1c2goJC5qcXBsb3QuQ3Vyc29yLnBvc3REcmF3KTsKICAgIAogICAgZnVuY3Rpb24gdXBkYXRlVG9vbHRpcChncmlkcG9zLCBkYXRhcG9zLCBwbG90KSB7CiAgICAgICAgdmFyIGMgPSBwbG90LnBsdWdpbnMuY3Vyc29yOwogICAgICAgIHZhciBzID0gJyc7CiAgICAgICAgdmFyIGFkZGJyID0gZmFsc2U7CiAgICAgICAgaWYgKGMuc2hvd1Rvb2x0aXBHcmlkUG9zaXRpb24pIHsKICAgICAgICAgICAgcyA9IGdyaWRwb3MueCsnLCAnK2dyaWRwb3MueTsKICAgICAgICAgICAgYWRkYnIgPSB0cnVlOwogICAgICAgIH0KICAgICAgICBpZiAoYy5zaG93VG9vbHRpcFVuaXRQb3NpdGlvbikgewogICAgICAgICAgICB2YXIgZzsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPGMudG9vbHRpcEF4aXNHcm91cHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGcgPSBjLnRvb2x0aXBBeGlzR3JvdXBzW2ldOwogICAgICAgICAgICAgICAgaWYgKGFkZGJyKSB7CiAgICAgICAgICAgICAgICAgICAgcyArPSAnPGJyIC8+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChjLnVzZUF4ZXNGb3JtYXR0ZXJzKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPGcubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGopIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gJywgJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYWYgPSBwbG90LmF4ZXNbZ1tqXV0uX3RpY2tzWzBdLmZvcm1hdHRlcjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFmc3RyID0gcGxvdC5heGVzW2dbal1dLl90aWNrc1swXS5mb3JtYXRTdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gYWYoYWZzdHIsIGRhdGFwb3NbZ1tqXV0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHMgKz0gJC5qcXBsb3Quc3ByaW50ZihjLnRvb2x0aXBGb3JtYXRTdHJpbmcsIGRhdGFwb3NbZ1swXV0sIGRhdGFwb3NbZ1sxXV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYWRkYnIgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChjLnNob3dUb29sdGlwRGF0YVBvc2l0aW9uKSB7CiAgICAgICAgICAgIHZhciBzZXJpZXMgPSBwbG90LnNlcmllczsgCiAgICAgICAgICAgIHZhciByZXQgPSBnZXRJbnRlcnNlY3RpbmdQb2ludHMocGxvdCwgZ3JpZHBvcy54LCBncmlkcG9zLnkpOwogICAgICAgICAgICB2YXIgYWRkYnIgPSBmYWxzZTsKICAgICAgICAKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGk8IHNlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKHNlcmllc1tpXS5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGlkeCA9IHNlcmllc1tpXS5pbmRleDsKICAgICAgICAgICAgICAgICAgICB2YXIgbGFiZWwgPSBzZXJpZXNbaV0ubGFiZWwudG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICB2YXIgY2VsbGlkID0gJC5pbkFycmF5KGlkeCwgcmV0LmluZGljZXMpOwogICAgICAgICAgICAgICAgICAgIHZhciBzeCA9IHVuZGVmaW5lZDsKICAgICAgICAgICAgICAgICAgICB2YXIgc3kgPSB1bmRlZmluZWQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxpZCAhPSAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHJldC5kYXRhW2NlbGxpZF0uZGF0YTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMudXNlQXhlc0Zvcm1hdHRlcnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ZiA9IHNlcmllc1tpXS5feGF4aXMuX3RpY2tzWzBdLmZvcm1hdHRlcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ZiA9IHNlcmllc1tpXS5feWF4aXMuX3RpY2tzWzBdLmZvcm1hdHRlcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ZnN0ciA9IHNlcmllc1tpXS5feGF4aXMuX3RpY2tzWzBdLmZvcm1hdFN0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ZnN0ciA9IHNlcmllc1tpXS5feWF4aXMuX3RpY2tzWzBdLmZvcm1hdFN0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN4ID0geGYoeGZzdHIsIGRhdGFbMF0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3kgPSB5Zih5ZnN0ciwgZGF0YVsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeCA9IGRhdGFbMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeSA9IGRhdGFbMV07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFkZGJyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzICs9ICc8YnIgLz4nOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHMgKz0gJC5qcXBsb3Quc3ByaW50ZihjLnRvb2x0aXBGb3JtYXRTdHJpbmcsIGxhYmVsLCBzeCwgc3kpOwogICAgICAgICAgICAgICAgICAgICAgICBhZGRiciA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICBjLl90b29sdGlwRWxlbS5odG1sKHMpOwogICAgfQogICAgCiAgICBmdW5jdGlvbiBtb3ZlTGluZShncmlkcG9zLCBwbG90KSB7CiAgICAgICAgdmFyIGMgPSBwbG90LnBsdWdpbnMuY3Vyc29yOwogICAgICAgIHZhciBjdHggPSBjLmN1cnNvckNhbnZhcy5fY3R4OwogICAgICAgIGN0eC5jbGVhclJlY3QoMCwwLGN0eC5jYW52YXMud2lkdGgsIGN0eC5jYW52YXMuaGVpZ2h0KTsKICAgICAgICBpZiAoYy5zaG93VmVydGljYWxMaW5lKSB7CiAgICAgICAgICAgIGMuc2hhcGVSZW5kZXJlci5kcmF3KGN0eCwgW1tncmlkcG9zLngsIDBdLCBbZ3JpZHBvcy54LCBjdHguY2FudmFzLmhlaWdodF1dKTsKICAgICAgICB9CiAgICAgICAgaWYgKGMuc2hvd0hvcml6b250YWxMaW5lKSB7CiAgICAgICAgICAgIGMuc2hhcGVSZW5kZXJlci5kcmF3KGN0eCwgW1swLCBncmlkcG9zLnldLCBbY3R4LmNhbnZhcy53aWR0aCwgZ3JpZHBvcy55XV0pOwogICAgICAgIH0KICAgICAgICB2YXIgcmV0ID0gZ2V0SW50ZXJzZWN0aW5nUG9pbnRzKHBsb3QsIGdyaWRwb3MueCwgZ3JpZHBvcy55KTsKICAgICAgICBpZiAoYy5zaG93Q3Vyc29yTGVnZW5kKSB7CiAgICAgICAgICAgIHZhciBjZWxscyA9ICQocGxvdC50YXJnZXRJZCArICcgdGQuanFwbG90LWN1cnNvci1sZWdlbmQtbGFiZWwnKTsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPGNlbGxzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgaWR4ID0gJChjZWxsc1tpXSkuZGF0YSgnc2VyaWVzSW5kZXgnKTsKICAgICAgICAgICAgICAgIHZhciBzZXJpZXMgPSBwbG90LnNlcmllc1tpZHhdOwogICAgICAgICAgICAgICAgdmFyIGxhYmVsID0gc2VyaWVzLmxhYmVsLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICB2YXIgY2VsbGlkID0gJC5pbkFycmF5KGlkeCwgcmV0LmluZGljZXMpOwogICAgICAgICAgICAgICAgdmFyIHN4ID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgdmFyIHN5ID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgaWYgKGNlbGxpZCAhPSAtMSkgewogICAgICAgICAgICAgICAgICAgIHZhciBkYXRhID0gcmV0LmRhdGFbY2VsbGlkXS5kYXRhOwogICAgICAgICAgICAgICAgICAgIGlmIChjLnVzZUF4ZXNGb3JtYXR0ZXJzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ZiA9IHNlcmllcy5feGF4aXMuX3RpY2tzWzBdLmZvcm1hdHRlcjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHlmID0gc2VyaWVzLl95YXhpcy5fdGlja3NbMF0uZm9ybWF0dGVyOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgeGZzdHIgPSBzZXJpZXMuX3hheGlzLl90aWNrc1swXS5mb3JtYXRTdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ZnN0ciA9IHNlcmllcy5feWF4aXMuX3RpY2tzWzBdLmZvcm1hdFN0cmluZzsKICAgICAgICAgICAgICAgICAgICAgICAgc3ggPSB4Zih4ZnN0ciwgZGF0YVswXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHN5ID0geWYoeWZzdHIsIGRhdGFbMV0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgc3ggPSBkYXRhWzBdOwogICAgICAgICAgICAgICAgICAgICAgICBzeSA9IGRhdGFbMV07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHBsb3QubGVnZW5kLmVzY2FwZUh0bWwpIHsKICAgICAgICAgICAgICAgICAgICAkKGNlbGxzW2ldKS50ZXh0KCQuanFwbG90LnNwcmludGYoYy5jdXJzb3JMZWdlbmRGb3JtYXRTdHJpbmcsIGxhYmVsLCBzeCwgc3kpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICQoY2VsbHNbaV0pLmh0bWwoJC5qcXBsb3Quc3ByaW50ZihjLmN1cnNvckxlZ2VuZEZvcm1hdFN0cmluZywgbGFiZWwsIHN4LCBzeSkpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9ICAgICAgICAKICAgICAgICB9CiAgICAgICAgY3R4ID0gbnVsbDsKICAgIH0KICAgICAgICAKICAgIGZ1bmN0aW9uIGdldEludGVyc2VjdGluZ1BvaW50cyhwbG90LCB4LCB5KSB7CiAgICAgICAgdmFyIHJldCA9IHtpbmRpY2VzOltdLCBkYXRhOltdfTsKICAgICAgICB2YXIgcywgaSwgZDAsIGQsIGosIHIsIHA7CiAgICAgICAgdmFyIHRocmVzaG9sZDsKICAgICAgICB2YXIgYyA9IHBsb3QucGx1Z2lucy5jdXJzb3I7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHBsb3Quc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHMgPSBwbG90LnNlcmllc1tpXTsKICAgICAgICAgICAgciA9IHMucmVuZGVyZXI7CiAgICAgICAgICAgIGlmIChzLnNob3cpIHsKICAgICAgICAgICAgICAgIHRocmVzaG9sZCA9IGMuaW50ZXJzZWN0aW9uVGhyZXNob2xkOwogICAgICAgICAgICAgICAgaWYgKHMuc2hvd01hcmtlcikgewogICAgICAgICAgICAgICAgICAgIHRocmVzaG9sZCArPSBzLm1hcmtlclJlbmRlcmVyLnNpemUvMjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MDsgajxzLmdyaWREYXRhLmxlbmd0aDsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgcCA9IHMuZ3JpZERhdGFbal07CiAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgdmVydGljYWwgbGluZQogICAgICAgICAgICAgICAgICAgIGlmIChjLnNob3dWZXJ0aWNhbExpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguYWJzKHgtcFswXSkgPD0gdGhyZXNob2xkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQuaW5kaWNlcy5wdXNoKGkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0LmRhdGEucHVzaCh7c2VyaWVzSW5kZXg6IGksIHBvaW50SW5kZXg6aiwgZ3JpZERhdGE6cCwgZGF0YTpzLmRhdGFbal19KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJldDsKICAgIH0KICAgIAogICAgZnVuY3Rpb24gbW92ZVRvb2x0aXAoZ3JpZHBvcywgcGxvdCkgewogICAgICAgIHZhciBjID0gcGxvdC5wbHVnaW5zLmN1cnNvcjsgIAogICAgICAgIHZhciBlbGVtID0gYy5fdG9vbHRpcEVsZW07CiAgICAgICAgc3dpdGNoIChjLnRvb2x0aXBMb2NhdGlvbikgewogICAgICAgICAgICBjYXNlICdudyc6CiAgICAgICAgICAgICAgICB2YXIgeCA9IGdyaWRwb3MueCArIHBsb3QuX2dyaWRQYWRkaW5nLmxlZnQgLSBlbGVtLm91dGVyV2lkdGgodHJ1ZSkgLSBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgeSA9IGdyaWRwb3MueSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCAtIGMudG9vbHRpcE9mZnNldCAtIGVsZW0ub3V0ZXJIZWlnaHQodHJ1ZSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnbic6CiAgICAgICAgICAgICAgICB2YXIgeCA9IGdyaWRwb3MueCArIHBsb3QuX2dyaWRQYWRkaW5nLmxlZnQgLSBlbGVtLm91dGVyV2lkdGgodHJ1ZSkvMjsKICAgICAgICAgICAgICAgIHZhciB5ID0gZ3JpZHBvcy55ICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wIC0gYy50b29sdGlwT2Zmc2V0IC0gZWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICduZSc6CiAgICAgICAgICAgICAgICB2YXIgeCA9IGdyaWRwb3MueCArIHBsb3QuX2dyaWRQYWRkaW5nLmxlZnQgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgeSA9IGdyaWRwb3MueSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCAtIGMudG9vbHRpcE9mZnNldCAtIGVsZW0ub3V0ZXJIZWlnaHQodHJ1ZSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnZSc6CiAgICAgICAgICAgICAgICB2YXIgeCA9IGdyaWRwb3MueCArIHBsb3QuX2dyaWRQYWRkaW5nLmxlZnQgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgeSA9IGdyaWRwb3MueSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCAtIGVsZW0ub3V0ZXJIZWlnaHQodHJ1ZSkvMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZSc6CiAgICAgICAgICAgICAgICB2YXIgeCA9IGdyaWRwb3MueCArIHBsb3QuX2dyaWRQYWRkaW5nLmxlZnQgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgeSA9IGdyaWRwb3MueSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCArIGMudG9vbHRpcE9mZnNldDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgICAgIHZhciB4ID0gZ3JpZHBvcy54ICsgcGxvdC5fZ3JpZFBhZGRpbmcubGVmdCAtIGVsZW0ub3V0ZXJXaWR0aCh0cnVlKS8yOwogICAgICAgICAgICAgICAgdmFyIHkgPSBncmlkcG9zLnkgKyBwbG90Ll9ncmlkUGFkZGluZy50b3AgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc3cnOgogICAgICAgICAgICAgICAgdmFyIHggPSBncmlkcG9zLnggKyBwbG90Ll9ncmlkUGFkZGluZy5sZWZ0IC0gZWxlbS5vdXRlcldpZHRoKHRydWUpIC0gYy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgdmFyIHkgPSBncmlkcG9zLnkgKyBwbG90Ll9ncmlkUGFkZGluZy50b3AgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAndyc6CiAgICAgICAgICAgICAgICB2YXIgeCA9IGdyaWRwb3MueCArIHBsb3QuX2dyaWRQYWRkaW5nLmxlZnQgLSBlbGVtLm91dGVyV2lkdGgodHJ1ZSkgLSBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgeSA9IGdyaWRwb3MueSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCAtIGVsZW0ub3V0ZXJIZWlnaHQodHJ1ZSkvMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgdmFyIHggPSBncmlkcG9zLnggKyBwbG90Ll9ncmlkUGFkZGluZy5sZWZ0ICsgYy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgdmFyIHkgPSBncmlkcG9zLnkgKyBwbG90Ll9ncmlkUGFkZGluZy50b3AgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgIGVsZW0uY3NzKCdsZWZ0JywgeCk7CiAgICAgICAgZWxlbS5jc3MoJ3RvcCcsIHkpOwogICAgICAgIGVsZW0gPSBudWxsOwogICAgfQogICAgCiAgICBmdW5jdGlvbiBwb3NpdGlvblRvb2x0aXAocGxvdCkgeyAKICAgICAgICAvLyBmYWtlIGEgZ3JpZCBmb3IgcG9zaXRpb25pbmcKICAgICAgICB2YXIgZ3JpZCA9IHBsb3QuX2dyaWRQYWRkaW5nOyAKICAgICAgICB2YXIgYyA9IHBsb3QucGx1Z2lucy5jdXJzb3I7CiAgICAgICAgdmFyIGVsZW0gPSBjLl90b29sdGlwRWxlbTsgIAogICAgICAgIHN3aXRjaCAoYy50b29sdGlwTG9jYXRpb24pIHsKICAgICAgICAgICAgY2FzZSAnbncnOgogICAgICAgICAgICAgICAgdmFyIGEgPSBncmlkLmxlZnQgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQudG9wICsgYy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgZWxlbS5jc3MoJ2xlZnQnLCBhKTsKICAgICAgICAgICAgICAgIGVsZW0uY3NzKCd0b3AnLCBiKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICduJzoKICAgICAgICAgICAgICAgIHZhciBhID0gKGdyaWQubGVmdCArIChwbG90Ll9wbG90RGltZW5zaW9ucy53aWR0aCAtIGdyaWQucmlnaHQpKS8yIC0gZWxlbS5vdXRlcldpZHRoKHRydWUpLzI7CiAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQudG9wICsgYy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgZWxlbS5jc3MoJ2xlZnQnLCBhKTsKICAgICAgICAgICAgICAgIGVsZW0uY3NzKCd0b3AnLCBiKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICduZSc6CiAgICAgICAgICAgICAgICB2YXIgYSA9IGdyaWQucmlnaHQgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQudG9wICsgYy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgZWxlbS5jc3Moe3JpZ2h0OmEsIHRvcDpifSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnZSc6CiAgICAgICAgICAgICAgICB2YXIgYSA9IGdyaWQucmlnaHQgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgYiA9IChncmlkLnRvcCArIChwbG90Ll9wbG90RGltZW5zaW9ucy5oZWlnaHQgLSBncmlkLmJvdHRvbSkpLzIgLSBlbGVtLm91dGVySGVpZ2h0KHRydWUpLzI7CiAgICAgICAgICAgICAgICBlbGVtLmNzcyh7cmlnaHQ6YSwgdG9wOmJ9KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzZSc6CiAgICAgICAgICAgICAgICB2YXIgYSA9IGdyaWQucmlnaHQgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQuYm90dG9tICsgYy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgZWxlbS5jc3Moe3JpZ2h0OmEsIGJvdHRvbTpifSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICAgICB2YXIgYSA9IChncmlkLmxlZnQgKyAocGxvdC5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBncmlkLnJpZ2h0KSkvMiAtIGVsZW0ub3V0ZXJXaWR0aCh0cnVlKS8yOwogICAgICAgICAgICAgICAgdmFyIGIgPSBncmlkLmJvdHRvbSArIGMudG9vbHRpcE9mZnNldDsKICAgICAgICAgICAgICAgIGVsZW0uY3NzKHtsZWZ0OmEsIGJvdHRvbTpifSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc3cnOgogICAgICAgICAgICAgICAgdmFyIGEgPSBncmlkLmxlZnQgKyBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQuYm90dG9tICsgYy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgZWxlbS5jc3Moe2xlZnQ6YSwgYm90dG9tOmJ9KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICd3JzoKICAgICAgICAgICAgICAgIHZhciBhID0gZ3JpZC5sZWZ0ICsgYy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgdmFyIGIgPSAoZ3JpZC50b3AgKyAocGxvdC5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0IC0gZ3JpZC5ib3R0b20pKS8yIC0gZWxlbS5vdXRlckhlaWdodCh0cnVlKS8yOwogICAgICAgICAgICAgICAgZWxlbS5jc3Moe2xlZnQ6YSwgdG9wOmJ9KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OiAgLy8gc2FtZSBhcyAnc2UnCiAgICAgICAgICAgICAgICB2YXIgYSA9IGdyaWQucmlnaHQgLSBjLnRvb2x0aXBPZmZzZXQ7CiAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQuYm90dG9tICsgYy50b29sdGlwT2Zmc2V0OwogICAgICAgICAgICAgICAgZWxlbS5jc3Moe3JpZ2h0OmEsIGJvdHRvbTpifSk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgZWxlbSA9IG51bGw7CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrIChldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgIGV2LnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOwogICAgICAgIHZhciBjID0gcGxvdC5wbHVnaW5zLmN1cnNvcjsKICAgICAgICBpZiAoYy5jbGlja1Jlc2V0KSB7CiAgICAgICAgICAgIGMucmVzZXRab29tKHBsb3QsIGMpOwogICAgICAgIH0KICAgICAgICB2YXIgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbjsKICAgICAgICBpZiAoZG9jdW1lbnQuc2VsZWN0aW9uICYmIGRvY3VtZW50LnNlbGVjdGlvbi5lbXB0eSkKICAgICAgICB7CiAgICAgICAgICAgIGRvY3VtZW50LnNlbGVjdGlvbi5lbXB0eSgpOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChzZWwgJiYgIXNlbCgpLmlzQ29sbGFwc2VkKSB7CiAgICAgICAgICAgIHNlbCgpLmNvbGxhcHNlKCk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIAogICAgZnVuY3Rpb24gaGFuZGxlRGJsQ2xpY2sgKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgZXYuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7CiAgICAgICAgdmFyIGMgPSBwbG90LnBsdWdpbnMuY3Vyc29yOwogICAgICAgIGlmIChjLmRibENsaWNrUmVzZXQpIHsKICAgICAgICAgICAgYy5yZXNldFpvb20ocGxvdCwgYyk7CiAgICAgICAgfQogICAgICAgIHZhciBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uOwogICAgICAgIGlmIChkb2N1bWVudC5zZWxlY3Rpb24gJiYgZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KQogICAgICAgIHsKICAgICAgICAgICAgZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHNlbCAmJiAhc2VsKCkuaXNDb2xsYXBzZWQpIHsKICAgICAgICAgICAgc2VsKCkuY29sbGFwc2UoKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZUxlYXZlKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIHZhciBjID0gcGxvdC5wbHVnaW5zLmN1cnNvcjsKICAgICAgICBjLm9uR3JpZCA9IGZhbHNlOwogICAgICAgIGlmIChjLnNob3cpIHsKICAgICAgICAgICAgJChldi50YXJnZXQpLmNzcygnY3Vyc29yJywgYy5wcmV2aW91c0N1cnNvcik7CiAgICAgICAgICAgIGlmIChjLnNob3dUb29sdGlwICYmICEoYy5fem9vbS56b29taW5nICYmIGMuc2hvd1Rvb2x0aXBPdXRzaWRlWm9vbSAmJiAhYy5jb25zdHJhaW5PdXRzaWRlWm9vbSkpIHsKICAgICAgICAgICAgICAgIGMuX3Rvb2x0aXBFbGVtLmVtcHR5KCk7CiAgICAgICAgICAgICAgICBjLl90b29sdGlwRWxlbS5oaWRlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGMuem9vbSkgewogICAgICAgICAgICAgICAgYy5fem9vbS5ncmlkcG9zID0gZ3JpZHBvczsKICAgICAgICAgICAgICAgIGMuX3pvb20uZGF0YXBvcyA9IGRhdGFwb3M7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGMuc2hvd1ZlcnRpY2FsTGluZSB8fCBjLnNob3dIb3Jpem9udGFsTGluZSkgewogICAgICAgICAgICAgICAgdmFyIGN0eCA9IGMuY3Vyc29yQ2FudmFzLl9jdHg7CiAgICAgICAgICAgICAgICBjdHguY2xlYXJSZWN0KDAsMCxjdHguY2FudmFzLndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgICAgICAgICBjdHggPSBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChjLnNob3dDdXJzb3JMZWdlbmQpIHsKICAgICAgICAgICAgICAgIHZhciBjZWxscyA9ICQocGxvdC50YXJnZXRJZCArICcgdGQuanFwbG90LWN1cnNvci1sZWdlbmQtbGFiZWwnKTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxjZWxscy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciBpZHggPSAkKGNlbGxzW2ldKS5kYXRhKCdzZXJpZXNJbmRleCcpOwogICAgICAgICAgICAgICAgICAgIHZhciBzZXJpZXMgPSBwbG90LnNlcmllc1tpZHhdOwogICAgICAgICAgICAgICAgICAgIHZhciBsYWJlbCA9IHNlcmllcy5sYWJlbC50b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgIGlmIChwbG90LmxlZ2VuZC5lc2NhcGVIdG1sKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoY2VsbHNbaV0pLnRleHQoJC5qcXBsb3Quc3ByaW50ZihjLmN1cnNvckxlZ2VuZEZvcm1hdFN0cmluZywgbGFiZWwsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkKGNlbGxzW2ldKS5odG1sKCQuanFwbG90LnNwcmludGYoYy5jdXJzb3JMZWdlbmRGb3JtYXRTdHJpbmcsIGxhYmVsLCB1bmRlZmluZWQsIHVuZGVmaW5lZCkpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfSAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlRW50ZXIoZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgdmFyIGMgPSBwbG90LnBsdWdpbnMuY3Vyc29yOwogICAgICAgIGMub25HcmlkID0gdHJ1ZTsKICAgICAgICBpZiAoYy5zaG93KSB7CiAgICAgICAgICAgIGMucHJldmlvdXNDdXJzb3IgPSBldi50YXJnZXQuc3R5bGUuY3Vyc29yOwogICAgICAgICAgICBldi50YXJnZXQuc3R5bGUuY3Vyc29yID0gYy5zdHlsZTsKICAgICAgICAgICAgaWYgKGMuc2hvd1Rvb2x0aXApIHsKICAgICAgICAgICAgICAgIHVwZGF0ZVRvb2x0aXAoZ3JpZHBvcywgZGF0YXBvcywgcGxvdCk7CiAgICAgICAgICAgICAgICBpZiAoYy5mb2xsb3dNb3VzZSkgewogICAgICAgICAgICAgICAgICAgIG1vdmVUb29sdGlwKGdyaWRwb3MsIHBsb3QpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcG9zaXRpb25Ub29sdGlwKHBsb3QpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYy5fdG9vbHRpcEVsZW0uc2hvdygpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChjLnNob3dWZXJ0aWNhbExpbmUgfHwgYy5zaG93SG9yaXpvbnRhbExpbmUpIHsKICAgICAgICAgICAgICAgIG1vdmVMaW5lKGdyaWRwb3MsIHBsb3QpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgIH0gICAgCiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlTW92ZShldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICB2YXIgYyA9IHBsb3QucGx1Z2lucy5jdXJzb3I7CiAgICAgICAgaWYgKGMuc2hvdykgewogICAgICAgICAgICBpZiAoYy5zaG93VG9vbHRpcCkgewogICAgICAgICAgICAgICAgdXBkYXRlVG9vbHRpcChncmlkcG9zLCBkYXRhcG9zLCBwbG90KTsKICAgICAgICAgICAgICAgIGlmIChjLmZvbGxvd01vdXNlKSB7CiAgICAgICAgICAgICAgICAgICAgbW92ZVRvb2x0aXAoZ3JpZHBvcywgcGxvdCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGMuc2hvd1ZlcnRpY2FsTGluZSB8fCBjLnNob3dIb3Jpem9udGFsTGluZSkgewogICAgICAgICAgICAgICAgbW92ZUxpbmUoZ3JpZHBvcywgcGxvdCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAgICAgICAgIAogICAgZnVuY3Rpb24gZ2V0RXZlbnRQb3NpdGlvbihldikgewogICAgICAgIHZhciBwbG90ID0gZXYuZGF0YS5wbG90OwogICAgICAgIHZhciBnbyA9IHBsb3QuZXZlbnRDYW52YXMuX2VsZW0ub2Zmc2V0KCk7CiAgICAgICAgdmFyIGdyaWRQb3MgPSB7eDpldi5wYWdlWCAtIGdvLmxlZnQsIHk6ZXYucGFnZVkgLSBnby50b3B9OwogICAgICAgIC8vLy8vLwogICAgICAgIC8vIFRPIERPOiBoYW5kbGUgeU1pZEF4aXMKICAgICAgICAvLy8vLy8KICAgICAgICB2YXIgZGF0YVBvcyA9IHt4YXhpczpudWxsLCB5YXhpczpudWxsLCB4MmF4aXM6bnVsbCwgeTJheGlzOm51bGwsIHkzYXhpczpudWxsLCB5NGF4aXM6bnVsbCwgeTVheGlzOm51bGwsIHk2YXhpczpudWxsLCB5N2F4aXM6bnVsbCwgeThheGlzOm51bGwsIHk5YXhpczpudWxsLCB5TWlkQXhpczpudWxsfTsKICAgICAgICB2YXIgYW4gPSBbJ3hheGlzJywgJ3lheGlzJywgJ3gyYXhpcycsICd5MmF4aXMnLCAneTNheGlzJywgJ3k0YXhpcycsICd5NWF4aXMnLCAneTZheGlzJywgJ3k3YXhpcycsICd5OGF4aXMnLCAneTlheGlzJywgJ3lNaWRBeGlzJ107CiAgICAgICAgdmFyIGF4ID0gcGxvdC5heGVzOwogICAgICAgIHZhciBuLCBheGlzOwogICAgICAgIGZvciAobj0xMTsgbj4wOyBuLS0pIHsKICAgICAgICAgICAgYXhpcyA9IGFuW24tMV07CiAgICAgICAgICAgIGlmIChheFtheGlzXS5zaG93KSB7CiAgICAgICAgICAgICAgICBkYXRhUG9zW2F4aXNdID0gYXhbYXhpc10uc2VyaWVzX3AydShncmlkUG9zW2F4aXMuY2hhckF0KDApXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiB7b2Zmc2V0czpnbywgZ3JpZFBvczpncmlkUG9zLCBkYXRhUG9zOmRhdGFQb3N9OwogICAgfSAgICAKICAgIAogICAgZnVuY3Rpb24gaGFuZGxlWm9vbU1vdmUoZXYpIHsKICAgICAgICB2YXIgcGxvdCA9IGV2LmRhdGEucGxvdDsKICAgICAgICB2YXIgYyA9IHBsb3QucGx1Z2lucy5jdXJzb3I7CiAgICAgICAgLy8gZG9uJ3QgZG8gYW55dGhpbmcgaWYgbm90IG9uIGdyaWQuCiAgICAgICAgaWYgKGMuc2hvdyAmJiBjLnpvb20gJiYgYy5fem9vbS5zdGFydGVkICYmICFjLnpvb21UYXJnZXQpIHsKICAgICAgICAgICAgZXYucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgdmFyIGN0eCA9IGMuem9vbUNhbnZhcy5fY3R4OwogICAgICAgICAgICB2YXIgcG9zaXRpb25zID0gZ2V0RXZlbnRQb3NpdGlvbihldik7CiAgICAgICAgICAgIHZhciBncmlkcG9zID0gcG9zaXRpb25zLmdyaWRQb3M7CiAgICAgICAgICAgIHZhciBkYXRhcG9zID0gcG9zaXRpb25zLmRhdGFQb3M7CiAgICAgICAgICAgIGMuX3pvb20uZ3JpZHBvcyA9IGdyaWRwb3M7CiAgICAgICAgICAgIGMuX3pvb20uZGF0YXBvcyA9IGRhdGFwb3M7CiAgICAgICAgICAgIGMuX3pvb20uem9vbWluZyA9IHRydWU7CiAgICAgICAgICAgIHZhciB4cG9zID0gZ3JpZHBvcy54OwogICAgICAgICAgICB2YXIgeXBvcyA9IGdyaWRwb3MueTsKICAgICAgICAgICAgdmFyIGhlaWdodCA9IGN0eC5jYW52YXMuaGVpZ2h0OwogICAgICAgICAgICB2YXIgd2lkdGggPSBjdHguY2FudmFzLndpZHRoOwogICAgICAgICAgICBpZiAoYy5zaG93VG9vbHRpcCAmJiAhYy5vbkdyaWQgJiYgYy5zaG93VG9vbHRpcE91dHNpZGVab29tKSB7CiAgICAgICAgICAgICAgICB1cGRhdGVUb29sdGlwKGdyaWRwb3MsIGRhdGFwb3MsIHBsb3QpOwogICAgICAgICAgICAgICAgaWYgKGMuZm9sbG93TW91c2UpIHsKICAgICAgICAgICAgICAgICAgICBtb3ZlVG9vbHRpcChncmlkcG9zLCBwbG90KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYy5jb25zdHJhaW5ab29tVG8gPT0gJ3gnKSB7CiAgICAgICAgICAgICAgICBjLl96b29tLmVuZCA9IFt4cG9zLCBoZWlnaHRdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGMuY29uc3RyYWluWm9vbVRvID09ICd5JykgewogICAgICAgICAgICAgICAgYy5fem9vbS5lbmQgPSBbd2lkdGgsIHlwb3NdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgYy5fem9vbS5lbmQgPSBbeHBvcywgeXBvc107CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb247CiAgICAgICAgICAgIGlmIChkb2N1bWVudC5zZWxlY3Rpb24gJiYgZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkb2N1bWVudC5zZWxlY3Rpb24uZW1wdHkoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChzZWwgJiYgIXNlbCgpLmlzQ29sbGFwc2VkKSB7CiAgICAgICAgICAgICAgICBzZWwoKS5jb2xsYXBzZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRyYXdab29tQm94LmNhbGwoYyk7CiAgICAgICAgICAgIGN0eCA9IG51bGw7CiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZURvd24oZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgdmFyIGMgPSBwbG90LnBsdWdpbnMuY3Vyc29yOwogICAgICAgIGlmKHBsb3QucGx1Z2lucy5tb2JpbGUpewogICAgICAgICAgICAkKGRvY3VtZW50KS5vbmUoJ3Ztb3VzZXVwLmpxcGxvdF9jdXJzb3InLCB7cGxvdDpwbG90fSwgaGFuZGxlTW91c2VVcCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJChkb2N1bWVudCkub25lKCdtb3VzZXVwLmpxcGxvdF9jdXJzb3InLCB7cGxvdDpwbG90fSwgaGFuZGxlTW91c2VVcCk7CiAgICAgICAgfQogICAgICAgIHZhciBheGVzID0gcGxvdC5heGVzOwogICAgICAgIGlmIChkb2N1bWVudC5vbnNlbGVjdHN0YXJ0ICE9IHVuZGVmaW5lZCkgewogICAgICAgICAgICBjLl9vbGRIYW5kbGVycy5vbnNlbGVjdHN0YXJ0ID0gZG9jdW1lbnQub25zZWxlY3RzdGFydDsKICAgICAgICAgICAgZG9jdW1lbnQub25zZWxlY3RzdGFydCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9OwogICAgICAgIH0KICAgICAgICBpZiAoZG9jdW1lbnQub25kcmFnICE9IHVuZGVmaW5lZCkgewogICAgICAgICAgICBjLl9vbGRIYW5kbGVycy5vbmRyYWcgPSBkb2N1bWVudC5vbmRyYWc7CiAgICAgICAgICAgIGRvY3VtZW50Lm9uZHJhZyA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGZhbHNlOyB9OwogICAgICAgIH0KICAgICAgICBpZiAoZG9jdW1lbnQub25tb3VzZWRvd24gIT0gdW5kZWZpbmVkKSB7CiAgICAgICAgICAgIGMuX29sZEhhbmRsZXJzLm9ubW91c2Vkb3duID0gZG9jdW1lbnQub25tb3VzZWRvd247CiAgICAgICAgICAgIGRvY3VtZW50Lm9ubW91c2Vkb3duID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gZmFsc2U7IH07CiAgICAgICAgfQogICAgICAgIGlmIChjLnpvb20pIHsKICAgICAgICAgICAgaWYgKCFjLnpvb21Qcm94eSkgewogICAgICAgICAgICAgICAgdmFyIGN0eCA9IGMuem9vbUNhbnZhcy5fY3R4OwogICAgICAgICAgICAgICAgY3R4LmNsZWFyUmVjdCgwLDAsY3R4LmNhbnZhcy53aWR0aCwgY3R4LmNhbnZhcy5oZWlnaHQpOwogICAgICAgICAgICAgICAgY3R4ID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoYy5jb25zdHJhaW5ab29tVG8gPT0gJ3gnKSB7CiAgICAgICAgICAgICAgICBjLl96b29tLnN0YXJ0ID0gW2dyaWRwb3MueCwgMF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoYy5jb25zdHJhaW5ab29tVG8gPT0gJ3knKSB7CiAgICAgICAgICAgICAgICBjLl96b29tLnN0YXJ0ID0gWzAsIGdyaWRwb3MueV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBjLl96b29tLnN0YXJ0ID0gW2dyaWRwb3MueCwgZ3JpZHBvcy55XTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjLl96b29tLnN0YXJ0ZWQgPSB0cnVlOwogICAgICAgICAgICBmb3IgKHZhciBheCBpbiBkYXRhcG9zKSB7CiAgICAgICAgICAgICAgICAvLyBnZXQgem9vbSBzdGFydGluZyBwb3NpdGlvbi4KICAgICAgICAgICAgICAgIGMuX3pvb20uYXhlcy5zdGFydFtheF0gPSBkYXRhcG9zW2F4XTsKICAgICAgICAgICAgfSAgCiAgICAgICAgICAgaWYocGxvdC5wbHVnaW5zLm1vYmlsZSl7CiAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5iaW5kKCd2bW91c2Vtb3ZlLmpxcGxvdEN1cnNvcicsIHtwbG90OnBsb3R9LCBoYW5kbGVab29tTW92ZSk7ICAgICAgICAgICAgICAKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICQoZG9jdW1lbnQpLmJpbmQoJ21vdXNlbW92ZS5qcXBsb3RDdXJzb3InLCB7cGxvdDpwbG90fSwgaGFuZGxlWm9vbU1vdmUpOyAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KCiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZVVwKGV2KSB7CiAgICAgICAgdmFyIHBsb3QgPSBldi5kYXRhLnBsb3Q7CiAgICAgICAgdmFyIGMgPSBwbG90LnBsdWdpbnMuY3Vyc29yOwogICAgICAgIGlmIChjLnpvb20gJiYgYy5fem9vbS56b29taW5nICYmICFjLnpvb21UYXJnZXQpIHsKICAgICAgICAgICAgdmFyIHhwb3MgPSBjLl96b29tLmdyaWRwb3MueDsKICAgICAgICAgICAgdmFyIHlwb3MgPSBjLl96b29tLmdyaWRwb3MueTsKICAgICAgICAgICAgdmFyIGRhdGFwb3MgPSBjLl96b29tLmRhdGFwb3M7CiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBjLnpvb21DYW52YXMuX2N0eC5jYW52YXMuaGVpZ2h0OwogICAgICAgICAgICB2YXIgd2lkdGggPSBjLnpvb21DYW52YXMuX2N0eC5jYW52YXMud2lkdGg7CiAgICAgICAgICAgIHZhciBheGVzID0gcGxvdC5heGVzOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGMuY29uc3RyYWluT3V0c2lkZVpvb20gJiYgIWMub25HcmlkKSB7CiAgICAgICAgICAgICAgICBpZiAoeHBvcyA8IDApIHsgeHBvcyA9IDA7IH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHhwb3MgPiB3aWR0aCkgeyB4cG9zID0gd2lkdGg7IH0KICAgICAgICAgICAgICAgIGlmICh5cG9zIDwgMCkgeyB5cG9zID0gMDsgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoeXBvcyA+IGhlaWdodCkgeyB5cG9zID0gaGVpZ2h0OyB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGZvciAodmFyIGF4aXMgaW4gZGF0YXBvcykgewogICAgICAgICAgICAgICAgICAgIGlmIChkYXRhcG9zW2F4aXNdKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChheGlzLmNoYXJBdCgwKSA9PSAneCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFwb3NbYXhpc10gPSBheGVzW2F4aXNdLnNlcmllc19wMnUoeHBvcyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhcG9zW2F4aXNdID0gYXhlc1theGlzXS5zZXJpZXNfcDJ1KHlwb3MpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAoYy5jb25zdHJhaW5ab29tVG8gPT0gJ3gnKSB7CiAgICAgICAgICAgICAgICB5cG9zID0gaGVpZ2h0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGMuY29uc3RyYWluWm9vbVRvID09ICd5JykgewogICAgICAgICAgICAgICAgeHBvcyA9IHdpZHRoOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGMuX3pvb20uZW5kID0gW3hwb3MsIHlwb3NdOwogICAgICAgICAgICBjLl96b29tLmdyaWRwb3MgPSB7eDp4cG9zLCB5Onlwb3N9OwogICAgICAgICAgICAKICAgICAgICAgICAgYy5kb1pvb20oYy5fem9vbS5ncmlkcG9zLCBkYXRhcG9zLCBwbG90LCBjKTsKICAgICAgICB9CiAgICAgICAgYy5fem9vbS5zdGFydGVkID0gZmFsc2U7CiAgICAgICAgYy5fem9vbS56b29taW5nID0gZmFsc2U7CiAgICAgICAgCiAgICAgICAgJChkb2N1bWVudCkudW5iaW5kKCdtb3VzZW1vdmUuanFwbG90Q3Vyc29yJywgaGFuZGxlWm9vbU1vdmUpOwogICAgICAgIAogICAgICAgIGlmIChkb2N1bWVudC5vbnNlbGVjdHN0YXJ0ICE9IHVuZGVmaW5lZCAmJiBjLl9vbGRIYW5kbGVycy5vbnNlbGVjdHN0YXJ0ICE9IG51bGwpewogICAgICAgICAgICBkb2N1bWVudC5vbnNlbGVjdHN0YXJ0ID0gYy5fb2xkSGFuZGxlcnMub25zZWxlY3RzdGFydDsKICAgICAgICAgICAgYy5fb2xkSGFuZGxlcnMub25zZWxlY3RzdGFydCA9IG51bGw7CiAgICAgICAgfQogICAgICAgIGlmIChkb2N1bWVudC5vbmRyYWcgIT0gdW5kZWZpbmVkICYmIGMuX29sZEhhbmRsZXJzLm9uZHJhZyAhPSBudWxsKXsKICAgICAgICAgICAgZG9jdW1lbnQub25kcmFnID0gYy5fb2xkSGFuZGxlcnMub25kcmFnOwogICAgICAgICAgICBjLl9vbGRIYW5kbGVycy5vbmRyYWcgPSBudWxsOwogICAgICAgIH0KICAgICAgICBpZiAoZG9jdW1lbnQub25tb3VzZWRvd24gIT0gdW5kZWZpbmVkICYmIGMuX29sZEhhbmRsZXJzLm9ubW91c2Vkb3duICE9IG51bGwpewogICAgICAgICAgICBkb2N1bWVudC5vbm1vdXNlZG93biA9IGMuX29sZEhhbmRsZXJzLm9ubW91c2Vkb3duOwogICAgICAgICAgICBjLl9vbGRIYW5kbGVycy5vbm1vdXNlZG93biA9IG51bGw7CiAgICAgICAgfQoKICAgIH0KICAgIAogICAgZnVuY3Rpb24gZHJhd1pvb21Cb3goKSB7CiAgICAgICAgdmFyIHN0YXJ0ID0gdGhpcy5fem9vbS5zdGFydDsKICAgICAgICB2YXIgZW5kID0gdGhpcy5fem9vbS5lbmQ7CiAgICAgICAgdmFyIGN0eCA9IHRoaXMuem9vbUNhbnZhcy5fY3R4OwogICAgICAgIHZhciBsLCB0LCBoLCB3OwogICAgICAgIGlmIChlbmRbMF0gPiBzdGFydFswXSkgewogICAgICAgICAgICBsID0gc3RhcnRbMF07CiAgICAgICAgICAgIHcgPSBlbmRbMF0gLSBzdGFydFswXTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGwgPSBlbmRbMF07CiAgICAgICAgICAgIHcgPSBzdGFydFswXSAtIGVuZFswXTsKICAgICAgICB9CiAgICAgICAgaWYgKGVuZFsxXSA+IHN0YXJ0WzFdKSB7CiAgICAgICAgICAgIHQgPSBzdGFydFsxXTsKICAgICAgICAgICAgaCA9IGVuZFsxXSAtIHN0YXJ0WzFdOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdCA9IGVuZFsxXTsKICAgICAgICAgICAgaCA9IHN0YXJ0WzFdIC0gZW5kWzFdOwogICAgICAgIH0KICAgICAgICBjdHguZmlsbFN0eWxlID0gJ3JnYmEoMCwwLDAsMC4yKSc7CiAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gJyM5OTk5OTknOwogICAgICAgIGN0eC5saW5lV2lkdGggPSAxLjA7CiAgICAgICAgY3R4LmNsZWFyUmVjdCgwLDAsY3R4LmNhbnZhcy53aWR0aCwgY3R4LmNhbnZhcy5oZWlnaHQpOwogICAgICAgIGN0eC5maWxsUmVjdCgwLDAsY3R4LmNhbnZhcy53aWR0aCwgY3R4LmNhbnZhcy5oZWlnaHQpOwogICAgICAgIGN0eC5jbGVhclJlY3QobCwgdCwgdywgaCk7CiAgICAgICAgLy8gSUUgd29uJ3Qgc2hvdyB0cmFuc3BhcmVudCBmaWxsIHJlY3QsIHNvIHN0cm9rZSBhIHJlY3QgYWxzby4KICAgICAgICBjdHguc3Ryb2tlUmVjdChsLHQsdyxoKTsKICAgICAgICBjdHggPSBudWxsOwogICAgfQogICAgCiAgICAkLmpxcGxvdC5DdXJzb3JMZWdlbmRSZW5kZXJlciA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAkLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyLmNhbGwodGhpcywgb3B0aW9ucyk7CiAgICAgICAgdGhpcy5mb3JtYXRTdHJpbmcgPSAnJXMnOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuQ3Vyc29yTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlID0gbmV3ICQuanFwbG90LlRhYmxlTGVnZW5kUmVuZGVyZXIoKTsKICAgICQuanFwbG90LkN1cnNvckxlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LkN1cnNvckxlZ2VuZFJlbmRlcmVyOwogICAgCiAgICAvLyBjYWxsZWQgaW4gY29udGV4dCBvZiBhIExlZ2VuZAogICAgJC5qcXBsb3QuQ3Vyc29yTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbigpIHsKICAgICAgICBpZiAodGhpcy5fZWxlbSkgewogICAgICAgICAgICB0aGlzLl9lbGVtLmVtcHR5Rm9yY2UoKTsKICAgICAgICAgICAgdGhpcy5fZWxlbSA9IG51bGw7CiAgICAgICAgfQogICAgICAgIGlmICh0aGlzLnNob3cpIHsKICAgICAgICAgICAgdmFyIHNlcmllcyA9IHRoaXMuX3NlcmllcywgczsKICAgICAgICAgICAgLy8gbWFrZSBhIHRhYmxlLiAgb25lIGxpbmUgbGFiZWwgcGVyIHJvdy4KICAgICAgICAgICAgdmFyIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0YWJsZScpOwogICAgICAgICAgICB0aGlzLl9lbGVtID0gJChlbGVtKTsKICAgICAgICAgICAgZWxlbSA9IG51bGw7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uYWRkQ2xhc3MoJ2pxcGxvdC1sZWdlbmQganFwbG90LWN1cnNvci1sZWdlbmQnKTsKICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7CiAgICAgICAgCiAgICAgICAgICAgIHZhciBwYWQgPSBmYWxzZTsKICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGk8IHNlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgcyA9IHNlcmllc1tpXTsKICAgICAgICAgICAgICAgIGlmIChzLnNob3cgJiYgcy5zaG93TGFiZWwpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgbHQgPSAkLmpxcGxvdC5zcHJpbnRmKHRoaXMuZm9ybWF0U3RyaW5nLCBzLmxhYmVsLnRvU3RyaW5nKCkpOwogICAgICAgICAgICAgICAgICAgIGlmIChsdCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY29sb3IgPSBzLmNvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAocy5fc3RhY2sgJiYgIXMuZmlsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBhZGRyb3cuY2FsbCh0aGlzLCBsdCwgY29sb3IsIHBhZCwgaSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIC8vIGxldCBwbHVnaW5zIGFkZCBtb3JlIHJvd3MgdG8gbGVnZW5kLiAgVXNlZCBieSB0cmVuZCBsaW5lIHBsdWdpbi4KICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8JC5qcXBsb3QuYWRkTGVnZW5kUm93SG9va3MubGVuZ3RoOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSAkLmpxcGxvdC5hZGRMZWdlbmRSb3dIb29rc1tqXS5jYWxsKHRoaXMsIHMpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXRlbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkcm93LmNhbGwodGhpcywgaXRlbS5sYWJlbCwgaXRlbS5jb2xvciwgcGFkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNlcmllcyA9IHMgPSBudWxsOwogICAgICAgICAgICBkZWxldGUgc2VyaWVzOwogICAgICAgICAgICBkZWxldGUgczsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gYWRkcm93KGxhYmVsLCBjb2xvciwgcGFkLCBpZHgpIHsKICAgICAgICAgICAgdmFyIHJzID0gKHBhZCkgPyB0aGlzLnJvd1NwYWNpbmcgOiAnMCc7CiAgICAgICAgICAgIHZhciB0ciA9ICQoJzx0ciBjbGFzcz0ianFwbG90LWxlZ2VuZCBqcXBsb3QtY3Vyc29yLWxlZ2VuZCI+PC90cj4nKS5hcHBlbmRUbyh0aGlzLl9lbGVtKTsKICAgICAgICAgICAgdHIuZGF0YSgnc2VyaWVzSW5kZXgnLCBpZHgpOwogICAgICAgICAgICAkKCc8dGQgY2xhc3M9ImpxcGxvdC1sZWdlbmQganFwbG90LWN1cnNvci1sZWdlbmQtc3dhdGNoIiBzdHlsZT0icGFkZGluZy10b3A6JytycysnOyI+JysKICAgICAgICAgICAgICAgICc8ZGl2IHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICNjY2NjY2M7cGFkZGluZzowLjJlbTsiPicrCiAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0ianFwbG90LWN1cnNvci1sZWdlbmQtc3dhdGNoIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjonK2NvbG9yKyc7Ij48L2Rpdj4nKwogICAgICAgICAgICAgICAgJzwvZGl2PjwvdGQ+JykuYXBwZW5kVG8odHIpOwogICAgICAgICAgICB2YXIgdGQgPSAkKCc8dGQgY2xhc3M9ImpxcGxvdC1sZWdlbmQganFwbG90LWN1cnNvci1sZWdlbmQtbGFiZWwiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7cGFkZGluZy10b3A6JytycysnOyI+PC90ZD4nKTsKICAgICAgICAgICAgdGQuYXBwZW5kVG8odHIpOwogICAgICAgICAgICB0ZC5kYXRhKCdzZXJpZXNJbmRleCcsIGlkeCk7CiAgICAgICAgICAgIGlmICh0aGlzLmVzY2FwZUh0bWwpIHsKICAgICAgICAgICAgICAgIHRkLnRleHQobGFiZWwpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGQuaHRtbChsYWJlbCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdHIgPSBudWxsOwogICAgICAgICAgICB0ZCA9IG51bGw7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLl9lbGVtOwogICAgfTsKICAgIAp9KShqUXVlcnkpOwo=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.cursor.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGope2ouanFwbG90LkN1cnNvcj1mdW5jdGlvbihxKXt0aGlzLnN0eWxlPSJjcm9zc2hhaXIiO3RoaXMucHJldmlvdXNDdXJzb3I9ImF1dG8iO3RoaXMuc2hvdz1qLmpxcGxvdC5jb25maWcuZW5hYmxlUGx1Z2luczt0aGlzLnNob3dUb29sdGlwPXRydWU7dGhpcy5mb2xsb3dNb3VzZT1mYWxzZTt0aGlzLnRvb2x0aXBMb2NhdGlvbj0ic2UiO3RoaXMudG9vbHRpcE9mZnNldD02O3RoaXMuc2hvd1Rvb2x0aXBHcmlkUG9zaXRpb249ZmFsc2U7dGhpcy5zaG93VG9vbHRpcFVuaXRQb3NpdGlvbj10cnVlO3RoaXMuc2hvd1Rvb2x0aXBEYXRhUG9zaXRpb249ZmFsc2U7dGhpcy50b29sdGlwRm9ybWF0U3RyaW5nPSIlLjRQLCAlLjRQIjt0aGlzLnVzZUF4ZXNGb3JtYXR0ZXJzPXRydWU7dGhpcy50b29sdGlwQXhpc0dyb3Vwcz1bXTt0aGlzLnpvb209ZmFsc2U7dGhpcy56b29tUHJveHk9ZmFsc2U7dGhpcy56b29tVGFyZ2V0PWZhbHNlO3RoaXMubG9vc2Vab29tPXRydWU7dGhpcy5jbGlja1Jlc2V0PWZhbHNlO3RoaXMuZGJsQ2xpY2tSZXNldD10cnVlO3RoaXMuc2hvd1ZlcnRpY2FsTGluZT1mYWxzZTt0aGlzLnNob3dIb3Jpem9udGFsTGluZT1mYWxzZTt0aGlzLmNvbnN0cmFpblpvb21Ubz0ibm9uZSI7dGhpcy5zaGFwZVJlbmRlcmVyPW5ldyBqLmpxcGxvdC5TaGFwZVJlbmRlcmVyKCk7dGhpcy5fem9vbT17c3RhcnQ6W10sZW5kOltdLHN0YXJ0ZWQ6ZmFsc2Usem9vbWluZzpmYWxzZSxpc1pvb21lZDpmYWxzZSxheGVzOntzdGFydDp7fSxlbmQ6e319LGdyaWRwb3M6e30sZGF0YXBvczp7fX07dGhpcy5fdG9vbHRpcEVsZW07dGhpcy56b29tQ2FudmFzO3RoaXMuY3Vyc29yQ2FudmFzO3RoaXMuaW50ZXJzZWN0aW9uVGhyZXNob2xkPTI7dGhpcy5zaG93Q3Vyc29yTGVnZW5kPWZhbHNlO3RoaXMuY3Vyc29yTGVnZW5kRm9ybWF0U3RyaW5nPWouanFwbG90LkN1cnNvci5jdXJzb3JMZWdlbmRGb3JtYXRTdHJpbmc7dGhpcy5fb2xkSGFuZGxlcnM9e29uc2VsZWN0c3RhcnQ6bnVsbCxvbmRyYWc6bnVsbCxvbm1vdXNlZG93bjpudWxsfTt0aGlzLmNvbnN0cmFpbk91dHNpZGVab29tPXRydWU7dGhpcy5zaG93VG9vbHRpcE91dHNpZGVab29tPWZhbHNlO3RoaXMub25HcmlkPWZhbHNlO2ouZXh0ZW5kKHRydWUsdGhpcyxxKX07ai5qcXBsb3QuQ3Vyc29yLmN1cnNvckxlZ2VuZEZvcm1hdFN0cmluZz0iJXMgeDolcywgeTolcyI7ai5qcXBsb3QuQ3Vyc29yLmluaXQ9ZnVuY3Rpb24odCxzLHIpe3ZhciBxPXJ8fHt9O3RoaXMucGx1Z2lucy5jdXJzb3I9bmV3IGouanFwbG90LkN1cnNvcihxLmN1cnNvcik7dmFyIHU9dGhpcy5wbHVnaW5zLmN1cnNvcjtpZih1LnNob3cpe2ouanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsianFwbG90TW91c2VFbnRlciIsYl0pO2ouanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsianFwbG90TW91c2VMZWF2ZSIsZl0pO2ouanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsianFwbG90TW91c2VNb3ZlIixpXSk7aWYodS5zaG93Q3Vyc29yTGVnZW5kKXtyLmxlZ2VuZD1yLmxlZ2VuZHx8e307ci5sZWdlbmQucmVuZGVyZXI9ai5qcXBsb3QuQ3Vyc29yTGVnZW5kUmVuZGVyZXI7ci5sZWdlbmQuZm9ybWF0U3RyaW5nPXRoaXMucGx1Z2lucy5jdXJzb3IuY3Vyc29yTGVnZW5kRm9ybWF0U3RyaW5nO3IubGVnZW5kLnNob3c9dHJ1ZX1pZih1Lnpvb20pe2ouanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsianFwbG90TW91c2VEb3duIixhXSk7aWYodS5jbGlja1Jlc2V0KXtqLmpxcGxvdC5ldmVudExpc3RlbmVySG9va3MucHVzaChbImpxcGxvdENsaWNrIixrXSl9aWYodS5kYmxDbGlja1Jlc2V0KXtqLmpxcGxvdC5ldmVudExpc3RlbmVySG9va3MucHVzaChbImpxcGxvdERibENsaWNrIixjXSl9fXRoaXMucmVzZXRab29tPWZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5heGVzO2lmKCF1Lnpvb21Qcm94eSl7Zm9yKHZhciB3IGluIHgpe3hbd10ucmVzZXQoKTt4W3ddLl90aWNrcz1bXTtpZih1Ll96b29tLmF4ZXNbd10hPT11bmRlZmluZWQpe3hbd10uX2F1dG9Gb3JtYXRTdHJpbmc9dS5fem9vbS5heGVzW3ddLnRpY2tGb3JtYXRTdHJpbmd9fXRoaXMucmVkcmF3KCl9ZWxzZXt2YXIgdj10aGlzLnBsdWdpbnMuY3Vyc29yLnpvb21DYW52YXMuX2N0eDt2LmNsZWFyUmVjdCgwLDAsdi5jYW52YXMud2lkdGgsdi5jYW52YXMuaGVpZ2h0KTt2PW51bGx9dGhpcy5wbHVnaW5zLmN1cnNvci5fem9vbS5pc1pvb21lZD1mYWxzZTt0aGlzLnRhcmdldC50cmlnZ2VyKCJqcXBsb3RSZXNldFpvb20iLFt0aGlzLHRoaXMucGx1Z2lucy5jdXJzb3JdKX07aWYodS5zaG93VG9vbHRpcERhdGFQb3NpdGlvbil7dS5zaG93VG9vbHRpcFVuaXRQb3NpdGlvbj1mYWxzZTt1LnNob3dUb29sdGlwR3JpZFBvc2l0aW9uPWZhbHNlO2lmKHEuY3Vyc29yLnRvb2x0aXBGb3JtYXRTdHJpbmc9PXVuZGVmaW5lZCl7dS50b29sdGlwRm9ybWF0U3RyaW5nPWouanFwbG90LkN1cnNvci5jdXJzb3JMZWdlbmRGb3JtYXRTdHJpbmd9fX19O2ouanFwbG90LkN1cnNvci5wb3N0RHJhdz1mdW5jdGlvbigpe3ZhciB4PXRoaXMucGx1Z2lucy5jdXJzb3I7aWYoeC56b29tQ2FudmFzKXt4Lnpvb21DYW52YXMucmVzZXRDYW52YXMoKTt4Lnpvb21DYW52YXM9bnVsbH1pZih4LmN1cnNvckNhbnZhcyl7eC5jdXJzb3JDYW52YXMucmVzZXRDYW52YXMoKTt4LmN1cnNvckNhbnZhcz1udWxsfWlmKHguX3Rvb2x0aXBFbGVtKXt4Ll90b29sdGlwRWxlbS5lbXB0eUZvcmNlKCk7eC5fdG9vbHRpcEVsZW09bnVsbH1pZih4Lnpvb20pe3guem9vbUNhbnZhcz1uZXcgai5qcXBsb3QuR2VuZXJpY0NhbnZhcygpO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKHguem9vbUNhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCJqcXBsb3Qtem9vbS1jYW52YXMiLHRoaXMuX3Bsb3REaW1lbnNpb25zLHRoaXMpKTt4Lnpvb21DYW52YXMuc2V0Q29udGV4dCgpfXZhciB2PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3guX3Rvb2x0aXBFbGVtPWoodik7dj1udWxsO3guX3Rvb2x0aXBFbGVtLmFkZENsYXNzKCJqcXBsb3QtY3Vyc29yLXRvb2x0aXAiKTt4Ll90b29sdGlwRWxlbS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsZGlzcGxheToibm9uZSJ9KTtpZih4Lnpvb21DYW52YXMpe3guem9vbUNhbnZhcy5fZWxlbS5iZWZvcmUoeC5fdG9vbHRpcEVsZW0pfWVsc2V7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUoeC5fdG9vbHRpcEVsZW0pfWlmKHguc2hvd1ZlcnRpY2FsTGluZXx8eC5zaG93SG9yaXpvbnRhbExpbmUpe3guY3Vyc29yQ2FudmFzPW5ldyBqLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUoeC5jdXJzb3JDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywianFwbG90LWN1cnNvci1jYW52YXMiLHRoaXMuX3Bsb3REaW1lbnNpb25zLHRoaXMpKTt4LmN1cnNvckNhbnZhcy5zZXRDb250ZXh0KCl9aWYoeC5zaG93VG9vbHRpcFVuaXRQb3NpdGlvbil7aWYoeC50b29sdGlwQXhpc0dyb3Vwcy5sZW5ndGg9PT0wKXt2YXIgdD10aGlzLnNlcmllczt2YXIgdTt2YXIgcT1bXTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dT10W3JdO3ZhciB3PXUueGF4aXMrIiwiK3UueWF4aXM7aWYoai5pbkFycmF5KHcscSk9PS0xKXtxLnB1c2godyl9fWZvcih2YXIgcj0wO3I8cS5sZW5ndGg7cisrKXt4LnRvb2x0aXBBeGlzR3JvdXBzLnB1c2gocVtyXS5zcGxpdCgiLCIpKX19fX07ai5qcXBsb3QuQ3Vyc29yLnpvb21Qcm94eT1mdW5jdGlvbih2LHIpe3ZhciBxPXYucGx1Z2lucy5jdXJzb3I7dmFyIHU9ci5wbHVnaW5zLmN1cnNvcjtxLnpvb21UYXJnZXQ9dHJ1ZTtxLnpvb209dHJ1ZTtxLnN0eWxlPSJhdXRvIjtxLmRibENsaWNrUmVzZXQ9ZmFsc2U7dS56b29tPXRydWU7dS56b29tUHJveHk9dHJ1ZTtyLnRhcmdldC5iaW5kKCJqcXBsb3Rab29tIix0KTtyLnRhcmdldC5iaW5kKCJqcXBsb3RSZXNldFpvb20iLHMpO2Z1bmN0aW9uIHQoeCx3LHoseSxBKXtxLmRvWm9vbSh3LHosdixBKX1mdW5jdGlvbiBzKHcseCx5KXt2LnJlc2V0Wm9vbSgpfX07ai5qcXBsb3QuQ3Vyc29yLnByb3RvdHlwZS5yZXNldFpvb209ZnVuY3Rpb24odSx2KXt2YXIgdD11LmF4ZXM7dmFyIHM9di5fem9vbS5heGVzO2lmKCF1LnBsdWdpbnMuY3Vyc29yLnpvb21Qcm94eSYmdi5fem9vbS5pc1pvb21lZCl7Zm9yKHZhciByIGluIHQpe3Rbcl0ucmVzZXQoKTt0W3JdLl90aWNrcz1bXTt0W3JdLl9hdXRvRm9ybWF0U3RyaW5nPXNbcl0udGlja0Zvcm1hdFN0cmluZ311LnJlZHJhdygpO3YuX3pvb20uaXNab29tZWQ9ZmFsc2V9ZWxzZXt2YXIgcT12Lnpvb21DYW52YXMuX2N0eDtxLmNsZWFyUmVjdCgwLDAscS5jYW52YXMud2lkdGgscS5jYW52YXMuaGVpZ2h0KTtxPW51bGx9dS50YXJnZXQudHJpZ2dlcigianFwbG90UmVzZXRab29tIixbdSx2XSl9O2ouanFwbG90LkN1cnNvci5yZXNldFpvb209ZnVuY3Rpb24ocSl7cS5yZXNldFpvb20oKX07ai5qcXBsb3QuQ3Vyc29yLnByb3RvdHlwZS5kb1pvb209ZnVuY3Rpb24oRyx0LEMsdSl7dmFyIEk9dTt2YXIgRj1DLmF4ZXM7dmFyIHI9SS5fem9vbS5heGVzO3ZhciB3PXIuc3RhcnQ7dmFyIHM9ci5lbmQ7dmFyIEIsRSx6LEQsdix4LHEsSCxKO3ZhciBBPUMucGx1Z2lucy5jdXJzb3Iuem9vbUNhbnZhcy5fY3R4O2lmKChJLmNvbnN0cmFpblpvb21Ubz09Im5vbmUiJiZNYXRoLmFicyhHLngtSS5fem9vbS5zdGFydFswXSk+NiYmTWF0aC5hYnMoRy55LUkuX3pvb20uc3RhcnRbMV0pPjYpfHwoSS5jb25zdHJhaW5ab29tVG89PSJ4IiYmTWF0aC5hYnMoRy54LUkuX3pvb20uc3RhcnRbMF0pPjYpfHwoSS5jb25zdHJhaW5ab29tVG89PSJ5IiYmTWF0aC5hYnMoRy55LUkuX3pvb20uc3RhcnRbMV0pPjYpKXtpZighQy5wbHVnaW5zLmN1cnNvci56b29tUHJveHkpe2Zvcih2YXIgeSBpbiB0KXtpZihJLl96b29tLmF4ZXNbeV09PXVuZGVmaW5lZCl7SS5fem9vbS5heGVzW3ldPXt9O0kuX3pvb20uYXhlc1t5XS5udW1iZXJUaWNrcz1GW3ldLm51bWJlclRpY2tzO0kuX3pvb20uYXhlc1t5XS50aWNrSW50ZXJ2YWw9Rlt5XS50aWNrSW50ZXJ2YWw7SS5fem9vbS5heGVzW3ldLmRhVGlja0ludGVydmFsPUZbeV0uZGFUaWNrSW50ZXJ2YWw7SS5fem9vbS5heGVzW3ldLm1pbj1GW3ldLm1pbjtJLl96b29tLmF4ZXNbeV0ubWF4PUZbeV0ubWF4O0kuX3pvb20uYXhlc1t5XS50aWNrRm9ybWF0U3RyaW5nPShGW3ldLnRpY2tPcHRpb25zIT1udWxsKT9GW3ldLnRpY2tPcHRpb25zLmZvcm1hdFN0cmluZzoiIn1pZigoSS5jb25zdHJhaW5ab29tVG89PSJub25lIil8fChJLmNvbnN0cmFpblpvb21Ubz09IngiJiZ5LmNoYXJBdCgwKT09IngiKXx8KEkuY29uc3RyYWluWm9vbVRvPT0ieSImJnkuY2hhckF0KDApPT0ieSIpKXt6PXRbeV07aWYoeiE9bnVsbCl7aWYoej53W3ldKXt2PXdbeV07eD16fWVsc2V7RD13W3ldLXo7dj16O3g9d1t5XX1xPUZbeV07SD1udWxsO2lmKHEuYWxpZ25UaWNrcyl7aWYocS5uYW1lPT09IngyYXhpcyImJkMuYXhlcy54YXhpcy5zaG93KXtIPUMuYXhlcy54YXhpcy5udW1iZXJUaWNrc31lbHNle2lmKHEubmFtZS5jaGFyQXQoMCk9PT0ieSImJnEubmFtZSE9PSJ5YXhpcyImJnEubmFtZSE9PSJ5TWlkQXhpcyImJkMuYXhlcy55YXhpcy5zaG93KXtIPUMuYXhlcy55YXhpcy5udW1iZXJUaWNrc319fWlmKHRoaXMubG9vc2Vab29tJiYoRlt5XS5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09PWouanFwbG90LkxpbmVhckF4aXNSZW5kZXJlcnx8Rlt5XS5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09PWouanFwbG90LkxvZ0F4aXNSZW5kZXJlcikpe0o9ai5qcXBsb3QuTGluZWFyVGlja0dlbmVyYXRvcih2LHgscS5fc2NhbGVmYWN0LEgpO2lmKEZbeV0udGlja0luc2V0JiZKWzBdPEZbeV0ubWluK0ZbeV0udGlja0luc2V0KkZbeV0udGlja0ludGVydmFsKXtKWzBdKz1KWzRdO0pbMl0tPTF9aWYoRlt5XS50aWNrSW5zZXQmJkpbMV0+Rlt5XS5tYXgtRlt5XS50aWNrSW5zZXQqRlt5XS50aWNrSW50ZXJ2YWwpe0pbMV0tPUpbNF07SlsyXS09MX1pZihGW3ldLnJlbmRlcmVyLmNvbnN0cnVjdG9yPT09ai5qcXBsb3QuTG9nQXhpc1JlbmRlcmVyJiZKWzBdPEZbeV0ubWluKXtKWzBdKz1KWzRdO0pbMl0tPTF9Rlt5XS5taW49SlswXTtGW3ldLm1heD1KWzFdO0ZbeV0uX2F1dG9Gb3JtYXRTdHJpbmc9SlszXTtGW3ldLm51bWJlclRpY2tzPUpbMl07Rlt5XS50aWNrSW50ZXJ2YWw9Sls0XTtGW3ldLmRhVGlja0ludGVydmFsPVtKWzRdLzEwMDAsInNlY29uZHMiXX1lbHNle0ZbeV0ubWluPXY7Rlt5XS5tYXg9eDtGW3ldLnRpY2tJbnRlcnZhbD1udWxsO0ZbeV0ubnVtYmVyVGlja3M9bnVsbDtGW3ldLmRhVGlja0ludGVydmFsPW51bGx9Rlt5XS5fdGlja3M9W119fX1BLmNsZWFyUmVjdCgwLDAsQS5jYW52YXMud2lkdGgsQS5jYW52YXMuaGVpZ2h0KTtDLnJlZHJhdygpO0kuX3pvb20uaXNab29tZWQ9dHJ1ZTtBPW51bGx9Qy50YXJnZXQudHJpZ2dlcigianFwbG90Wm9vbSIsW0csdCxDLHVdKX19O2ouanFwbG90LnByZUluaXRIb29rcy5wdXNoKGouanFwbG90LkN1cnNvci5pbml0KTtqLmpxcGxvdC5wb3N0RHJhd0hvb2tzLnB1c2goai5qcXBsb3QuQ3Vyc29yLnBvc3REcmF3KTtmdW5jdGlvbiBlKEcscixDKXt2YXIgSj1DLnBsdWdpbnMuY3Vyc29yO3ZhciB3PSIiO3ZhciBOPWZhbHNlO2lmKEouc2hvd1Rvb2x0aXBHcmlkUG9zaXRpb24pe3c9Ry54KyIsICIrRy55O049dHJ1ZX1pZihKLnNob3dUb29sdGlwVW5pdFBvc2l0aW9uKXt2YXIgRjtmb3IodmFyIEU9MDtFPEoudG9vbHRpcEF4aXNHcm91cHMubGVuZ3RoO0UrKyl7Rj1KLnRvb2x0aXBBeGlzR3JvdXBzW0VdO2lmKE4pe3crPSI8YnIgLz4ifWlmKEoudXNlQXhlc0Zvcm1hdHRlcnMpe2Zvcih2YXIgRD0wO0Q8Ri5sZW5ndGg7RCsrKXtpZihEKXt3Kz0iLCAifXZhciBIPUMuYXhlc1tGW0RdXS5fdGlja3NbMF0uZm9ybWF0dGVyO3ZhciBCPUMuYXhlc1tGW0RdXS5fdGlja3NbMF0uZm9ybWF0U3RyaW5nO3crPUgoQixyW0ZbRF1dKX19ZWxzZXt3Kz1qLmpxcGxvdC5zcHJpbnRmKEoudG9vbHRpcEZvcm1hdFN0cmluZyxyW0ZbMF1dLHJbRlsxXV0pfU49dHJ1ZX19aWYoSi5zaG93VG9vbHRpcERhdGFQb3NpdGlvbil7dmFyIHU9Qy5zZXJpZXM7dmFyIE09ZChDLEcueCxHLnkpO3ZhciBOPWZhbHNlO2Zvcih2YXIgRT0wO0U8dS5sZW5ndGg7RSsrKXtpZih1W0VdLnNob3cpe3ZhciB5PXVbRV0uaW5kZXg7dmFyIHQ9dVtFXS5sYWJlbC50b1N0cmluZygpO3ZhciBJPWouaW5BcnJheSh5LE0uaW5kaWNlcyk7dmFyIHo9dW5kZWZpbmVkO3ZhciB4PXVuZGVmaW5lZDtpZihJIT0tMSl7dmFyIEw9TS5kYXRhW0ldLmRhdGE7aWYoSi51c2VBeGVzRm9ybWF0dGVycyl7dmFyIEE9dVtFXS5feGF4aXMuX3RpY2tzWzBdLmZvcm1hdHRlcjt2YXIgcT11W0VdLl95YXhpcy5fdGlja3NbMF0uZm9ybWF0dGVyO3ZhciBLPXVbRV0uX3hheGlzLl90aWNrc1swXS5mb3JtYXRTdHJpbmc7dmFyIHY9dVtFXS5feWF4aXMuX3RpY2tzWzBdLmZvcm1hdFN0cmluZzt6PUEoSyxMWzBdKTt4PXEodixMWzFdKX1lbHNle3o9TFswXTt4PUxbMV19aWYoTil7dys9IjxiciAvPiJ9dys9ai5qcXBsb3Quc3ByaW50ZihKLnRvb2x0aXBGb3JtYXRTdHJpbmcsdCx6LHgpO049dHJ1ZX19fX1KLl90b29sdGlwRWxlbS5odG1sKHcpfWZ1bmN0aW9uIGcoQyxBKXt2YXIgRT1BLnBsdWdpbnMuY3Vyc29yO3ZhciB6PUUuY3Vyc29yQ2FudmFzLl9jdHg7ei5jbGVhclJlY3QoMCwwLHouY2FudmFzLndpZHRoLHouY2FudmFzLmhlaWdodCk7aWYoRS5zaG93VmVydGljYWxMaW5lKXtFLnNoYXBlUmVuZGVyZXIuZHJhdyh6LFtbQy54LDBdLFtDLngsei5jYW52YXMuaGVpZ2h0XV0pfWlmKEUuc2hvd0hvcml6b250YWxMaW5lKXtFLnNoYXBlUmVuZGVyZXIuZHJhdyh6LFtbMCxDLnldLFt6LmNhbnZhcy53aWR0aCxDLnldXSl9dmFyIEc9ZChBLEMueCxDLnkpO2lmKEUuc2hvd0N1cnNvckxlZ2VuZCl7dmFyIHI9aihBLnRhcmdldElkKyIgdGQuanFwbG90LWN1cnNvci1sZWdlbmQtbGFiZWwiKTtmb3IodmFyIEI9MDtCPHIubGVuZ3RoO0IrKyl7dmFyIHY9aihyW0JdKS5kYXRhKCJzZXJpZXNJbmRleCIpO3ZhciB0PUEuc2VyaWVzW3ZdO3ZhciBzPXQubGFiZWwudG9TdHJpbmcoKTt2YXIgRD1qLmluQXJyYXkodixHLmluZGljZXMpO3ZhciB4PXVuZGVmaW5lZDt2YXIgdz11bmRlZmluZWQ7aWYoRCE9LTEpe3ZhciBIPUcuZGF0YVtEXS5kYXRhO2lmKEUudXNlQXhlc0Zvcm1hdHRlcnMpe3ZhciB5PXQuX3hheGlzLl90aWNrc1swXS5mb3JtYXR0ZXI7dmFyIHE9dC5feWF4aXMuX3RpY2tzWzBdLmZvcm1hdHRlcjt2YXIgRj10Ll94YXhpcy5fdGlja3NbMF0uZm9ybWF0U3RyaW5nO3ZhciB1PXQuX3lheGlzLl90aWNrc1swXS5mb3JtYXRTdHJpbmc7eD15KEYsSFswXSk7dz1xKHUsSFsxXSl9ZWxzZXt4PUhbMF07dz1IWzFdfX1pZihBLmxlZ2VuZC5lc2NhcGVIdG1sKXtqKHJbQl0pLnRleHQoai5qcXBsb3Quc3ByaW50ZihFLmN1cnNvckxlZ2VuZEZvcm1hdFN0cmluZyxzLHgsdykpfWVsc2V7aihyW0JdKS5odG1sKGouanFwbG90LnNwcmludGYoRS5jdXJzb3JMZWdlbmRGb3JtYXRTdHJpbmcscyx4LHcpKX19fXo9bnVsbH1mdW5jdGlvbiBkKEEsRixFKXt2YXIgQj17aW5kaWNlczpbXSxkYXRhOltdfTt2YXIgRyx3LHUsQyx2LHEsdDt2YXIgejt2YXIgRD1BLnBsdWdpbnMuY3Vyc29yO2Zvcih2YXIgdz0wO3c8QS5zZXJpZXMubGVuZ3RoO3crKyl7Rz1BLnNlcmllc1t3XTtxPUcucmVuZGVyZXI7aWYoRy5zaG93KXt6PUQuaW50ZXJzZWN0aW9uVGhyZXNob2xkO2lmKEcuc2hvd01hcmtlcil7eis9Ry5tYXJrZXJSZW5kZXJlci5zaXplLzJ9Zm9yKHZhciB2PTA7djxHLmdyaWREYXRhLmxlbmd0aDt2Kyspe3Q9Ry5ncmlkRGF0YVt2XTtpZihELnNob3dWZXJ0aWNhbExpbmUpe2lmKE1hdGguYWJzKEYtdFswXSk8PXope0IuaW5kaWNlcy5wdXNoKHcpO0IuZGF0YS5wdXNoKHtzZXJpZXNJbmRleDp3LHBvaW50SW5kZXg6dixncmlkRGF0YTp0LGRhdGE6Ry5kYXRhW3ZdfSl9fX19fXJldHVybiBCfWZ1bmN0aW9uIG4ocix0KXt2YXIgdj10LnBsdWdpbnMuY3Vyc29yO3ZhciBzPXYuX3Rvb2x0aXBFbGVtO3N3aXRjaCh2LnRvb2x0aXBMb2NhdGlvbil7Y2FzZSJudyI6dmFyIHE9ci54K3QuX2dyaWRQYWRkaW5nLmxlZnQtcy5vdXRlcldpZHRoKHRydWUpLXYudG9vbHRpcE9mZnNldDt2YXIgdT1yLnkrdC5fZ3JpZFBhZGRpbmcudG9wLXYudG9vbHRpcE9mZnNldC1zLm91dGVySGVpZ2h0KHRydWUpO2JyZWFrO2Nhc2UibiI6dmFyIHE9ci54K3QuX2dyaWRQYWRkaW5nLmxlZnQtcy5vdXRlcldpZHRoKHRydWUpLzI7dmFyIHU9ci55K3QuX2dyaWRQYWRkaW5nLnRvcC12LnRvb2x0aXBPZmZzZXQtcy5vdXRlckhlaWdodCh0cnVlKTticmVhaztjYXNlIm5lIjp2YXIgcT1yLngrdC5fZ3JpZFBhZGRpbmcubGVmdCt2LnRvb2x0aXBPZmZzZXQ7dmFyIHU9ci55K3QuX2dyaWRQYWRkaW5nLnRvcC12LnRvb2x0aXBPZmZzZXQtcy5vdXRlckhlaWdodCh0cnVlKTticmVhaztjYXNlImUiOnZhciBxPXIueCt0Ll9ncmlkUGFkZGluZy5sZWZ0K3YudG9vbHRpcE9mZnNldDt2YXIgdT1yLnkrdC5fZ3JpZFBhZGRpbmcudG9wLXMub3V0ZXJIZWlnaHQodHJ1ZSkvMjticmVhaztjYXNlInNlIjp2YXIgcT1yLngrdC5fZ3JpZFBhZGRpbmcubGVmdCt2LnRvb2x0aXBPZmZzZXQ7dmFyIHU9ci55K3QuX2dyaWRQYWRkaW5nLnRvcCt2LnRvb2x0aXBPZmZzZXQ7YnJlYWs7Y2FzZSJzIjp2YXIgcT1yLngrdC5fZ3JpZFBhZGRpbmcubGVmdC1zLm91dGVyV2lkdGgodHJ1ZSkvMjt2YXIgdT1yLnkrdC5fZ3JpZFBhZGRpbmcudG9wK3YudG9vbHRpcE9mZnNldDticmVhaztjYXNlInN3Ijp2YXIgcT1yLngrdC5fZ3JpZFBhZGRpbmcubGVmdC1zLm91dGVyV2lkdGgodHJ1ZSktdi50b29sdGlwT2Zmc2V0O3ZhciB1PXIueSt0Ll9ncmlkUGFkZGluZy50b3Ardi50b29sdGlwT2Zmc2V0O2JyZWFrO2Nhc2UidyI6dmFyIHE9ci54K3QuX2dyaWRQYWRkaW5nLmxlZnQtcy5vdXRlcldpZHRoKHRydWUpLXYudG9vbHRpcE9mZnNldDt2YXIgdT1yLnkrdC5fZ3JpZFBhZGRpbmcudG9wLXMub3V0ZXJIZWlnaHQodHJ1ZSkvMjticmVhaztkZWZhdWx0OnZhciBxPXIueCt0Ll9ncmlkUGFkZGluZy5sZWZ0K3YudG9vbHRpcE9mZnNldDt2YXIgdT1yLnkrdC5fZ3JpZFBhZGRpbmcudG9wK3YudG9vbHRpcE9mZnNldDticmVha31zLmNzcygibGVmdCIscSk7cy5jc3MoInRvcCIsdSk7cz1udWxsfWZ1bmN0aW9uIG0odSl7dmFyIHM9dS5fZ3JpZFBhZGRpbmc7dmFyIHY9dS5wbHVnaW5zLmN1cnNvcjt2YXIgdD12Ll90b29sdGlwRWxlbTtzd2l0Y2godi50b29sdGlwTG9jYXRpb24pe2Nhc2UibnciOnZhciByPXMubGVmdCt2LnRvb2x0aXBPZmZzZXQ7dmFyIHE9cy50b3Ardi50b29sdGlwT2Zmc2V0O3QuY3NzKCJsZWZ0IixyKTt0LmNzcygidG9wIixxKTticmVhaztjYXNlIm4iOnZhciByPShzLmxlZnQrKHUuX3Bsb3REaW1lbnNpb25zLndpZHRoLXMucmlnaHQpKS8yLXQub3V0ZXJXaWR0aCh0cnVlKS8yO3ZhciBxPXMudG9wK3YudG9vbHRpcE9mZnNldDt0LmNzcygibGVmdCIscik7dC5jc3MoInRvcCIscSk7YnJlYWs7Y2FzZSJuZSI6dmFyIHI9cy5yaWdodCt2LnRvb2x0aXBPZmZzZXQ7dmFyIHE9cy50b3Ardi50b29sdGlwT2Zmc2V0O3QuY3NzKHtyaWdodDpyLHRvcDpxfSk7YnJlYWs7Y2FzZSJlIjp2YXIgcj1zLnJpZ2h0K3YudG9vbHRpcE9mZnNldDt2YXIgcT0ocy50b3ArKHUuX3Bsb3REaW1lbnNpb25zLmhlaWdodC1zLmJvdHRvbSkpLzItdC5vdXRlckhlaWdodCh0cnVlKS8yO3QuY3NzKHtyaWdodDpyLHRvcDpxfSk7YnJlYWs7Y2FzZSJzZSI6dmFyIHI9cy5yaWdodCt2LnRvb2x0aXBPZmZzZXQ7dmFyIHE9cy5ib3R0b20rdi50b29sdGlwT2Zmc2V0O3QuY3NzKHtyaWdodDpyLGJvdHRvbTpxfSk7YnJlYWs7Y2FzZSJzIjp2YXIgcj0ocy5sZWZ0Kyh1Ll9wbG90RGltZW5zaW9ucy53aWR0aC1zLnJpZ2h0KSkvMi10Lm91dGVyV2lkdGgodHJ1ZSkvMjt2YXIgcT1zLmJvdHRvbSt2LnRvb2x0aXBPZmZzZXQ7dC5jc3Moe2xlZnQ6cixib3R0b206cX0pO2JyZWFrO2Nhc2Uic3ciOnZhciByPXMubGVmdCt2LnRvb2x0aXBPZmZzZXQ7dmFyIHE9cy5ib3R0b20rdi50b29sdGlwT2Zmc2V0O3QuY3NzKHtsZWZ0OnIsYm90dG9tOnF9KTticmVhaztjYXNlInciOnZhciByPXMubGVmdCt2LnRvb2x0aXBPZmZzZXQ7dmFyIHE9KHMudG9wKyh1Ll9wbG90RGltZW5zaW9ucy5oZWlnaHQtcy5ib3R0b20pKS8yLXQub3V0ZXJIZWlnaHQodHJ1ZSkvMjt0LmNzcyh7bGVmdDpyLHRvcDpxfSk7YnJlYWs7ZGVmYXVsdDp2YXIgcj1zLnJpZ2h0LXYudG9vbHRpcE9mZnNldDt2YXIgcT1zLmJvdHRvbSt2LnRvb2x0aXBPZmZzZXQ7dC5jc3Moe3JpZ2h0OnIsYm90dG9tOnF9KTticmVha310PW51bGx9ZnVuY3Rpb24gayhyLHEsdix1LHQpe3IucHJldmVudERlZmF1bHQoKTtyLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO3ZhciB3PXQucGx1Z2lucy5jdXJzb3I7aWYody5jbGlja1Jlc2V0KXt3LnJlc2V0Wm9vbSh0LHcpfXZhciBzPXdpbmRvdy5nZXRTZWxlY3Rpb247aWYoZG9jdW1lbnQuc2VsZWN0aW9uJiZkb2N1bWVudC5zZWxlY3Rpb24uZW1wdHkpe2RvY3VtZW50LnNlbGVjdGlvbi5lbXB0eSgpfWVsc2V7aWYocyYmIXMoKS5pc0NvbGxhcHNlZCl7cygpLmNvbGxhcHNlKCl9fXJldHVybiBmYWxzZX1mdW5jdGlvbiBjKHIscSx2LHUsdCl7ci5wcmV2ZW50RGVmYXVsdCgpO3Iuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7dmFyIHc9dC5wbHVnaW5zLmN1cnNvcjtpZih3LmRibENsaWNrUmVzZXQpe3cucmVzZXRab29tKHQsdyl9dmFyIHM9d2luZG93LmdldFNlbGVjdGlvbjtpZihkb2N1bWVudC5zZWxlY3Rpb24mJmRvY3VtZW50LnNlbGVjdGlvbi5lbXB0eSl7ZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KCl9ZWxzZXtpZihzJiYhcygpLmlzQ29sbGFwc2VkKXtzKCkuY29sbGFwc2UoKX19cmV0dXJuIGZhbHNlfWZ1bmN0aW9uIGYodyx0LHEseix1KXt2YXIgdj11LnBsdWdpbnMuY3Vyc29yO3Yub25HcmlkPWZhbHNlO2lmKHYuc2hvdyl7aih3LnRhcmdldCkuY3NzKCJjdXJzb3IiLHYucHJldmlvdXNDdXJzb3IpO2lmKHYuc2hvd1Rvb2x0aXAmJiEodi5fem9vbS56b29taW5nJiZ2LnNob3dUb29sdGlwT3V0c2lkZVpvb20mJiF2LmNvbnN0cmFpbk91dHNpZGVab29tKSl7di5fdG9vbHRpcEVsZW0uZW1wdHkoKTt2Ll90b29sdGlwRWxlbS5oaWRlKCl9aWYodi56b29tKXt2Ll96b29tLmdyaWRwb3M9dDt2Ll96b29tLmRhdGFwb3M9cX1pZih2LnNob3dWZXJ0aWNhbExpbmV8fHYuc2hvd0hvcml6b250YWxMaW5lKXt2YXIgQj12LmN1cnNvckNhbnZhcy5fY3R4O0IuY2xlYXJSZWN0KDAsMCxCLmNhbnZhcy53aWR0aCxCLmNhbnZhcy5oZWlnaHQpO0I9bnVsbH1pZih2LnNob3dDdXJzb3JMZWdlbmQpe3ZhciBBPWoodS50YXJnZXRJZCsiIHRkLmpxcGxvdC1jdXJzb3ItbGVnZW5kLWxhYmVsIik7Zm9yKHZhciBzPTA7czxBLmxlbmd0aDtzKyspe3ZhciB5PWooQVtzXSkuZGF0YSgic2VyaWVzSW5kZXgiKTt2YXIgcj11LnNlcmllc1t5XTt2YXIgeD1yLmxhYmVsLnRvU3RyaW5nKCk7aWYodS5sZWdlbmQuZXNjYXBlSHRtbCl7aihBW3NdKS50ZXh0KGouanFwbG90LnNwcmludGYodi5jdXJzb3JMZWdlbmRGb3JtYXRTdHJpbmcseCx1bmRlZmluZWQsdW5kZWZpbmVkKSl9ZWxzZXtqKEFbc10pLmh0bWwoai5qcXBsb3Quc3ByaW50Zih2LmN1cnNvckxlZ2VuZEZvcm1hdFN0cmluZyx4LHVuZGVmaW5lZCx1bmRlZmluZWQpKX19fX19ZnVuY3Rpb24gYihyLHEsdSx0LHMpe3ZhciB2PXMucGx1Z2lucy5jdXJzb3I7di5vbkdyaWQ9dHJ1ZTtpZih2LnNob3cpe3YucHJldmlvdXNDdXJzb3I9ci50YXJnZXQuc3R5bGUuY3Vyc29yO3IudGFyZ2V0LnN0eWxlLmN1cnNvcj12LnN0eWxlO2lmKHYuc2hvd1Rvb2x0aXApe2UocSx1LHMpO2lmKHYuZm9sbG93TW91c2Upe24ocSxzKX1lbHNle20ocyl9di5fdG9vbHRpcEVsZW0uc2hvdygpfWlmKHYuc2hvd1ZlcnRpY2FsTGluZXx8di5zaG93SG9yaXpvbnRhbExpbmUpe2cocSxzKX19fWZ1bmN0aW9uIGkocixxLHUsdCxzKXt2YXIgdj1zLnBsdWdpbnMuY3Vyc29yO2lmKHYuc2hvdyl7aWYodi5zaG93VG9vbHRpcCl7ZShxLHUscyk7aWYodi5mb2xsb3dNb3VzZSl7bihxLHMpfX1pZih2LnNob3dWZXJ0aWNhbExpbmV8fHYuc2hvd0hvcml6b250YWxMaW5lKXtnKHEscyl9fX1mdW5jdGlvbiBvKHkpe3ZhciB4PXkuZGF0YS5wbG90O3ZhciB0PXguZXZlbnRDYW52YXMuX2VsZW0ub2Zmc2V0KCk7dmFyIHc9e3g6eS5wYWdlWC10LmxlZnQseTp5LnBhZ2VZLXQudG9wfTt2YXIgdT17eGF4aXM6bnVsbCx5YXhpczpudWxsLHgyYXhpczpudWxsLHkyYXhpczpudWxsLHkzYXhpczpudWxsLHk0YXhpczpudWxsLHk1YXhpczpudWxsLHk2YXhpczpudWxsLHk3YXhpczpudWxsLHk4YXhpczpudWxsLHk5YXhpczpudWxsLHlNaWRBeGlzOm51bGx9O3ZhciB2PVsieGF4aXMiLCJ5YXhpcyIsIngyYXhpcyIsInkyYXhpcyIsInkzYXhpcyIsInk0YXhpcyIsInk1YXhpcyIsInk2YXhpcyIsInk3YXhpcyIsInk4YXhpcyIsInk5YXhpcyIsInlNaWRBeGlzIl07dmFyIHE9eC5heGVzO3ZhciByLHM7Zm9yKHI9MTE7cj4wO3ItLSl7cz12W3ItMV07aWYocVtzXS5zaG93KXt1W3NdPXFbc10uc2VyaWVzX3AydSh3W3MuY2hhckF0KDApXSl9fXJldHVybntvZmZzZXRzOnQsZ3JpZFBvczp3LGRhdGFQb3M6dX19ZnVuY3Rpb24gaCh6KXt2YXIgeD16LmRhdGEucGxvdDt2YXIgeT14LnBsdWdpbnMuY3Vyc29yO2lmKHkuc2hvdyYmeS56b29tJiZ5Ll96b29tLnN0YXJ0ZWQmJiF5Lnpvb21UYXJnZXQpe3oucHJldmVudERlZmF1bHQoKTt2YXIgQj15Lnpvb21DYW52YXMuX2N0eDt2YXIgdj1vKHopO3ZhciB3PXYuZ3JpZFBvczt2YXIgdD12LmRhdGFQb3M7eS5fem9vbS5ncmlkcG9zPXc7eS5fem9vbS5kYXRhcG9zPXQ7eS5fem9vbS56b29taW5nPXRydWU7dmFyIHU9dy54O3ZhciBzPXcueTt2YXIgQT1CLmNhbnZhcy5oZWlnaHQ7dmFyIHE9Qi5jYW52YXMud2lkdGg7aWYoeS5zaG93VG9vbHRpcCYmIXkub25HcmlkJiZ5LnNob3dUb29sdGlwT3V0c2lkZVpvb20pe2Uodyx0LHgpO2lmKHkuZm9sbG93TW91c2Upe24odyx4KX19aWYoeS5jb25zdHJhaW5ab29tVG89PSJ4Iil7eS5fem9vbS5lbmQ9W3UsQV19ZWxzZXtpZih5LmNvbnN0cmFpblpvb21Ubz09InkiKXt5Ll96b29tLmVuZD1bcSxzXX1lbHNle3kuX3pvb20uZW5kPVt1LHNdfX12YXIgcj13aW5kb3cuZ2V0U2VsZWN0aW9uO2lmKGRvY3VtZW50LnNlbGVjdGlvbiYmZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KXtkb2N1bWVudC5zZWxlY3Rpb24uZW1wdHkoKX1lbHNle2lmKHImJiFyKCkuaXNDb2xsYXBzZWQpe3IoKS5jb2xsYXBzZSgpfX1sLmNhbGwoeSk7Qj1udWxsfX1mdW5jdGlvbiBhKHcscyxyLHgsdCl7dmFyIHY9dC5wbHVnaW5zLmN1cnNvcjtpZih0LnBsdWdpbnMubW9iaWxlKXtqKGRvY3VtZW50KS5vbmUoInZtb3VzZXVwLmpxcGxvdF9jdXJzb3IiLHtwbG90OnR9LHApfWVsc2V7aihkb2N1bWVudCkub25lKCJtb3VzZXVwLmpxcGxvdF9jdXJzb3IiLHtwbG90OnR9LHApfXZhciB1PXQuYXhlcztpZihkb2N1bWVudC5vbnNlbGVjdHN0YXJ0IT11bmRlZmluZWQpe3YuX29sZEhhbmRsZXJzLm9uc2VsZWN0c3RhcnQ9ZG9jdW1lbnQub25zZWxlY3RzdGFydDtkb2N1bWVudC5vbnNlbGVjdHN0YXJ0PWZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlfX1pZihkb2N1bWVudC5vbmRyYWchPXVuZGVmaW5lZCl7di5fb2xkSGFuZGxlcnMub25kcmFnPWRvY3VtZW50Lm9uZHJhZztkb2N1bWVudC5vbmRyYWc9ZnVuY3Rpb24oKXtyZXR1cm4gZmFsc2V9fWlmKGRvY3VtZW50Lm9ubW91c2Vkb3duIT11bmRlZmluZWQpe3YuX29sZEhhbmRsZXJzLm9ubW91c2Vkb3duPWRvY3VtZW50Lm9ubW91c2Vkb3duO2RvY3VtZW50Lm9ubW91c2Vkb3duPWZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlfX1pZih2Lnpvb20pe2lmKCF2Lnpvb21Qcm94eSl7dmFyIHk9di56b29tQ2FudmFzLl9jdHg7eS5jbGVhclJlY3QoMCwwLHkuY2FudmFzLndpZHRoLHkuY2FudmFzLmhlaWdodCk7eT1udWxsfWlmKHYuY29uc3RyYWluWm9vbVRvPT0ieCIpe3YuX3pvb20uc3RhcnQ9W3MueCwwXX1lbHNle2lmKHYuY29uc3RyYWluWm9vbVRvPT0ieSIpe3YuX3pvb20uc3RhcnQ9WzAscy55XX1lbHNle3YuX3pvb20uc3RhcnQ9W3MueCxzLnldfX12Ll96b29tLnN0YXJ0ZWQ9dHJ1ZTtmb3IodmFyIHEgaW4gcil7di5fem9vbS5heGVzLnN0YXJ0W3FdPXJbcV19aWYodC5wbHVnaW5zLm1vYmlsZSl7aihkb2N1bWVudCkuYmluZCgidm1vdXNlbW92ZS5qcXBsb3RDdXJzb3IiLHtwbG90OnR9LGgpfWVsc2V7aihkb2N1bWVudCkuYmluZCgibW91c2Vtb3ZlLmpxcGxvdEN1cnNvciIse3Bsb3Q6dH0saCl9fX1mdW5jdGlvbiBwKHkpe3ZhciB2PXkuZGF0YS5wbG90O3ZhciB4PXYucGx1Z2lucy5jdXJzb3I7aWYoeC56b29tJiZ4Ll96b29tLnpvb21pbmcmJiF4Lnpvb21UYXJnZXQpe3ZhciB1PXguX3pvb20uZ3JpZHBvcy54O3ZhciByPXguX3pvb20uZ3JpZHBvcy55O3ZhciB0PXguX3pvb20uZGF0YXBvczt2YXIgej14Lnpvb21DYW52YXMuX2N0eC5jYW52YXMuaGVpZ2h0O3ZhciBxPXguem9vbUNhbnZhcy5fY3R4LmNhbnZhcy53aWR0aDt2YXIgdz12LmF4ZXM7aWYoeC5jb25zdHJhaW5PdXRzaWRlWm9vbSYmIXgub25HcmlkKXtpZih1PDApe3U9MH1lbHNle2lmKHU+cSl7dT1xfX1pZihyPDApe3I9MH1lbHNle2lmKHI+eil7cj16fX1mb3IodmFyIHMgaW4gdCl7aWYodFtzXSl7aWYocy5jaGFyQXQoMCk9PSJ4Iil7dFtzXT13W3NdLnNlcmllc19wMnUodSl9ZWxzZXt0W3NdPXdbc10uc2VyaWVzX3AydShyKX19fX1pZih4LmNvbnN0cmFpblpvb21Ubz09IngiKXtyPXp9ZWxzZXtpZih4LmNvbnN0cmFpblpvb21Ubz09InkiKXt1PXF9fXguX3pvb20uZW5kPVt1LHJdO3guX3pvb20uZ3JpZHBvcz17eDp1LHk6cn07eC5kb1pvb20oeC5fem9vbS5ncmlkcG9zLHQsdix4KX14Ll96b29tLnN0YXJ0ZWQ9ZmFsc2U7eC5fem9vbS56b29taW5nPWZhbHNlO2ooZG9jdW1lbnQpLnVuYmluZCgibW91c2Vtb3ZlLmpxcGxvdEN1cnNvciIsaCk7aWYoZG9jdW1lbnQub25zZWxlY3RzdGFydCE9dW5kZWZpbmVkJiZ4Ll9vbGRIYW5kbGVycy5vbnNlbGVjdHN0YXJ0IT1udWxsKXtkb2N1bWVudC5vbnNlbGVjdHN0YXJ0PXguX29sZEhhbmRsZXJzLm9uc2VsZWN0c3RhcnQ7eC5fb2xkSGFuZGxlcnMub25zZWxlY3RzdGFydD1udWxsfWlmKGRvY3VtZW50Lm9uZHJhZyE9dW5kZWZpbmVkJiZ4Ll9vbGRIYW5kbGVycy5vbmRyYWchPW51bGwpe2RvY3VtZW50Lm9uZHJhZz14Ll9vbGRIYW5kbGVycy5vbmRyYWc7eC5fb2xkSGFuZGxlcnMub25kcmFnPW51bGx9aWYoZG9jdW1lbnQub25tb3VzZWRvd24hPXVuZGVmaW5lZCYmeC5fb2xkSGFuZGxlcnMub25tb3VzZWRvd24hPW51bGwpe2RvY3VtZW50Lm9ubW91c2Vkb3duPXguX29sZEhhbmRsZXJzLm9ubW91c2Vkb3duO3guX29sZEhhbmRsZXJzLm9ubW91c2Vkb3duPW51bGx9fWZ1bmN0aW9uIGwoKXt2YXIgeT10aGlzLl96b29tLnN0YXJ0O3ZhciB1PXRoaXMuX3pvb20uZW5kO3ZhciBzPXRoaXMuem9vbUNhbnZhcy5fY3R4O3ZhciByLHYseCxxO2lmKHVbMF0+eVswXSl7cj15WzBdO3E9dVswXS15WzBdfWVsc2V7cj11WzBdO3E9eVswXS11WzBdfWlmKHVbMV0+eVsxXSl7dj15WzFdO3g9dVsxXS15WzFdfWVsc2V7dj11WzFdO3g9eVsxXS11WzFdfXMuZmlsbFN0eWxlPSJyZ2JhKDAsMCwwLDAuMikiO3Muc3Ryb2tlU3R5bGU9IiM5OTk5OTkiO3MubGluZVdpZHRoPTE7cy5jbGVhclJlY3QoMCwwLHMuY2FudmFzLndpZHRoLHMuY2FudmFzLmhlaWdodCk7cy5maWxsUmVjdCgwLDAscy5jYW52YXMud2lkdGgscy5jYW52YXMuaGVpZ2h0KTtzLmNsZWFyUmVjdChyLHYscSx4KTtzLnN0cm9rZVJlY3Qocix2LHEseCk7cz1udWxsfWouanFwbG90LkN1cnNvckxlZ2VuZFJlbmRlcmVyPWZ1bmN0aW9uKHEpe2ouanFwbG90LlRhYmxlTGVnZW5kUmVuZGVyZXIuY2FsbCh0aGlzLHEpO3RoaXMuZm9ybWF0U3RyaW5nPSIlcyJ9O2ouanFwbG90LkN1cnNvckxlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZT1uZXcgai5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlcigpO2ouanFwbG90LkN1cnNvckxlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1qLmpxcGxvdC5DdXJzb3JMZWdlbmRSZW5kZXJlcjtqLmpxcGxvdC5DdXJzb3JMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbigpe2lmKHRoaXMuX2VsZW0pe3RoaXMuX2VsZW0uZW1wdHlGb3JjZSgpO3RoaXMuX2VsZW09bnVsbH1pZih0aGlzLnNob3cpe3ZhciB3PXRoaXMuX3NlcmllcyxBO3ZhciByPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxlIik7dGhpcy5fZWxlbT1qKHIpO3I9bnVsbDt0aGlzLl9lbGVtLmFkZENsYXNzKCJqcXBsb3QtbGVnZW5kIGpxcGxvdC1jdXJzb3ItbGVnZW5kIik7dGhpcy5fZWxlbS5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKTt2YXIgcT1mYWxzZTtmb3IodmFyIHg9MDt4PHcubGVuZ3RoO3grKyl7QT13W3hdO2lmKEEuc2hvdyYmQS5zaG93TGFiZWwpe3ZhciB2PWouanFwbG90LnNwcmludGYodGhpcy5mb3JtYXRTdHJpbmcsQS5sYWJlbC50b1N0cmluZygpKTtpZih2KXt2YXIgdD1BLmNvbG9yO2lmKEEuX3N0YWNrJiYhQS5maWxsKXt0PSIifXouY2FsbCh0aGlzLHYsdCxxLHgpO3E9dHJ1ZX1mb3IodmFyIHU9MDt1PGouanFwbG90LmFkZExlZ2VuZFJvd0hvb2tzLmxlbmd0aDt1Kyspe3ZhciB5PWouanFwbG90LmFkZExlZ2VuZFJvd0hvb2tzW3VdLmNhbGwodGhpcyxBKTtpZih5KXt6LmNhbGwodGhpcyx5LmxhYmVsLHkuY29sb3IscSk7cT10cnVlfX19fXc9QT1udWxsO2RlbGV0ZSB3O2RlbGV0ZSBBfWZ1bmN0aW9uIHooRCxDLEYscyl7dmFyIEI9KEYpP3RoaXMucm93U3BhY2luZzoiMCI7dmFyIEU9aignPHRyIGNsYXNzPSJqcXBsb3QtbGVnZW5kIGpxcGxvdC1jdXJzb3ItbGVnZW5kIj48L3RyPicpLmFwcGVuZFRvKHRoaXMuX2VsZW0pO0UuZGF0YSgic2VyaWVzSW5kZXgiLHMpO2ooJzx0ZCBjbGFzcz0ianFwbG90LWxlZ2VuZCBqcXBsb3QtY3Vyc29yLWxlZ2VuZC1zd2F0Y2giIHN0eWxlPSJwYWRkaW5nLXRvcDonK0IrJzsiPjxkaXYgc3R5bGU9ImJvcmRlcjoxcHggc29saWQgI2NjY2NjYztwYWRkaW5nOjAuMmVtOyI+PGRpdiBjbGFzcz0ianFwbG90LWN1cnNvci1sZWdlbmQtc3dhdGNoIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjonK0MrJzsiPjwvZGl2PjwvZGl2PjwvdGQ+JykuYXBwZW5kVG8oRSk7dmFyIEc9aignPHRkIGNsYXNzPSJqcXBsb3QtbGVnZW5kIGpxcGxvdC1jdXJzb3ItbGVnZW5kLWxhYmVsIiBzdHlsZT0idmVydGljYWwtYWxpZ246bWlkZGxlO3BhZGRpbmctdG9wOicrQisnOyI+PC90ZD4nKTtHLmFwcGVuZFRvKEUpO0cuZGF0YSgic2VyaWVzSW5kZXgiLHMpO2lmKHRoaXMuZXNjYXBlSHRtbCl7Ry50ZXh0KEQpfWVsc2V7Ry5odG1sKEQpfUU9bnVsbDtHPW51bGx9cmV0dXJuIHRoaXMuX2VsZW19fSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.dateAxisRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgeyAgCiAgICAvKioKICAgICAqIENsYXNzOiAkLmpxcGxvdC5EYXRlQXhpc1JlbmRlcmVyCiAgICAgKiBBIHBsdWdpbiBmb3IgYSBqcVBsb3QgdG8gcmVuZGVyIGFuIGF4aXMgYXMgYSBzZXJpZXMgb2YgZGF0ZSB2YWx1ZXMuCiAgICAgKiBUaGlzIHJlbmRlcmVyIGhhcyBubyBvcHRpb25zIGJleW9uZCB0aG9zZSBzdXBwbGllZCBieSB0aGUgPEF4aXM+IGNsYXNzLgogICAgICogSXQgc3VwcGxpZXMgaXRzIG93biB0aWNrIGZvcm1hdHRlciwgc28gdGhlIHRpY2tPcHRpb25zLmZvcm1hdHRlciBvcHRpb24KICAgICAqIHNob3VsZCBub3QgYmUgb3ZlcnJpZGRlbi4KICAgICAqIAogICAgICogVGhhbmtzIHRvIEtlbiBTeW5kZXIgZm9yIGhpcyBlbmhhbmNlZCBEYXRlIGluc3RhbmNlIG1ldGhvZHMgd2hpY2ggYXJlCiAgICAgKiBpbmNsdWRlZCB3aXRoIHRoaXMgY29kZSA8aHR0cDovL2tlbmRzbnlkZXIuY29tL3NhbmRib3gvZGF0ZS8+LgogICAgICogCiAgICAgKiBUbyB1c2UgdGhpcyByZW5kZXJlciwgaW5jbHVkZSB0aGUgcGx1Z2luIGluIHlvdXIgc291cmNlCiAgICAgKiA+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSJwbHVnaW5zL2pxcGxvdC5kYXRlQXhpc1JlbmRlcmVyLmpzIj48L3NjcmlwdD4KICAgICAqIAogICAgICogYW5kIHN1cHBseSB0aGUgYXBwcm9wcmlhdGUgb3B0aW9ucyB0byB5b3VyIHBsb3QKICAgICAqIAogICAgICogPiB7YXhlczp7eGF4aXM6e3JlbmRlcmVyOiQuanFwbG90LkRhdGVBeGlzUmVuZGVyZXJ9fX0KICAgICAqIAogICAgICogRGF0ZXMgY2FuIGJlIHBhc3NlZCBpbnRvIHRoZSBheGlzIGluIGFsbW9zdCBhbnkgcmVjb2duaXphYmxlIHZhbHVlIGFuZCAKICAgICAqIHdpbGwgYmUgcGFyc2VkLiAgVGhleSB3aWxsIGJlIHJlbmRlcmVkIG9uIHRoZSBheGlzIGluIHRoZSBmb3JtYXQKICAgICAqIHNwZWNpZmllZCBieSB0aWNrT3B0aW9ucy5mb3JtYXRTdHJpbmcuICBlLmcuIHRpY2tPcHRpb25zLmZvcm1hdFN0cmluZyA9ICclWS0lbS0lZCcuCiAgICAgKiAKICAgICAqIEFjY2VjcHRhYmxlIGZvcm1hdCBjb2RlcyAKICAgICAqIGFyZToKICAgICAqIAogICAgICogPiBDb2RlICAgIFJlc3VsdCAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uCiAgICAgKiA+ICAgICAgICAgICAgID09IFllYXJzID09CiAgICAgKiA+ICVZICAgICAgMjAwOCAgICAgICAgICAgICAgICBGb3VyLWRpZ2l0IHllYXIKICAgICAqID4gJXkgICAgICAwOCAgICAgICAgICAgICAgICAgIFR3by1kaWdpdCB5ZWFyCiAgICAgKiA+ICAgICAgICAgICAgID09IE1vbnRocyA9PQogICAgICogPiAlbSAgICAgIDA5ICAgICAgICAgICAgICAgICAgVHdvLWRpZ2l0IG1vbnRoCiAgICAgKiA+ICUjbSAgICAgOSAgICAgICAgICAgICAgICAgICBPbmUgb3IgdHdvLWRpZ2l0IG1vbnRoCiAgICAgKiA+ICVCICAgICAgU2VwdGVtYmVyICAgICAgICAgICBGdWxsIG1vbnRoIG5hbWUKICAgICAqID4gJWIgICAgICBTZXAgICAgICAgICAgICAgICAgIEFiYnJldmlhdGVkIG1vbnRoIG5hbWUKICAgICAqID4gICAgICAgICAgICAgPT0gRGF5cyA9PQogICAgICogPiAlZCAgICAgIDA1ICAgICAgICAgICAgICAgICAgVHdvLWRpZ2l0IGRheSBvZiBtb250aAogICAgICogPiAlI2QgICAgIDUgICAgICAgICAgICAgICAgICAgT25lIG9yIHR3by1kaWdpdCBkYXkgb2YgbW9udGgKICAgICAqID4gJWUgICAgICA1ICAgICAgICAgICAgICAgICAgIE9uZSBvciB0d28tZGlnaXQgZGF5IG9mIG1vbnRoCiAgICAgKiA+ICVBICAgICAgU3VuZGF5ICAgICAgICAgICAgICBGdWxsIG5hbWUgb2YgdGhlIGRheSBvZiB0aGUgd2VlawogICAgICogPiAlYSAgICAgIFN1biAgICAgICAgICAgICAgICAgQWJicmV2aWF0ZWQgbmFtZSBvZiB0aGUgZGF5IG9mIHRoZSB3ZWVrCiAgICAgKiA+ICV3ICAgICAgMCAgICAgICAgICAgICAgICAgICBOdW1iZXIgb2YgdGhlIGRheSBvZiB0aGUgd2VlayAoMCA9IFN1bmRheSwgNiA9IFNhdHVyZGF5KQogICAgICogPiAlbyAgICAgIHRoICAgICAgICAgICAgICAgICAgVGhlIG9yZGluYWwgc3VmZml4IHN0cmluZyBmb2xsb3dpbmcgdGhlIGRheSBvZiB0aGUgbW9udGgKICAgICAqID4gICAgICAgICAgICAgPT0gSG91cnMgPT0KICAgICAqID4gJUggICAgICAyMyAgICAgICAgICAgICAgICAgIEhvdXJzIGluIDI0LWhvdXIgZm9ybWF0ICh0d28gZGlnaXRzKQogICAgICogPiAlI0ggICAgIDMgICAgICAgICAgICAgICAgICAgSG91cnMgaW4gMjQtaG91ciBpbnRlZ2VyIGZvcm1hdCAob25lIG9yIHR3byBkaWdpdHMpCiAgICAgKiA+ICVJICAgICAgMTEgICAgICAgICAgICAgICAgICBIb3VycyBpbiAxMi1ob3VyIGZvcm1hdCAodHdvIGRpZ2l0cykKICAgICAqID4gJSNJICAgICAzICAgICAgICAgICAgICAgICAgIEhvdXJzIGluIDEyLWhvdXIgaW50ZWdlciBmb3JtYXQgKG9uZSBvciB0d28gZGlnaXRzKQogICAgICogPiAlcCAgICAgIFBNICAgICAgICAgICAgICAgICAgQU0gb3IgUE0KICAgICAqID4gICAgICAgICAgICAgPT0gTWludXRlcyA9PQogICAgICogPiAlTSAgICAgIDA5ICAgICAgICAgICAgICAgICAgTWludXRlcyAodHdvIGRpZ2l0cykKICAgICAqID4gJSNNICAgICA5ICAgICAgICAgICAgICAgICAgIE1pbnV0ZXMgKG9uZSBvciB0d28gZGlnaXRzKQogICAgICogPiAgICAgICAgICAgICA9PSBTZWNvbmRzID09CiAgICAgKiA+ICVTICAgICAgMDIgICAgICAgICAgICAgICAgICBTZWNvbmRzICh0d28gZGlnaXRzKQogICAgICogPiAlI1MgICAgIDIgICAgICAgICAgICAgICAgICAgU2Vjb25kcyAob25lIG9yIHR3byBkaWdpdHMpCiAgICAgKiA+ICVzICAgICAgMTIwNjU2NzYyNTcyMyAgICAgICBVbml4IHRpbWVzdGFtcCAoU2Vjb25kcyBwYXN0IDE5NzAtMDEtMDEgMDA6MDA6MDApCiAgICAgKiA+ICAgICAgICAgICAgID09IE1pbGxpc2Vjb25kcyA9PQogICAgICogPiAlTiAgICAgIDAwOCAgICAgICAgICAgICAgICAgTWlsbGlzZWNvbmRzICh0aHJlZSBkaWdpdHMpCiAgICAgKiA+ICUjTiAgICAgOCAgICAgICAgICAgICAgICAgICBNaWxsaXNlY29uZHMgKG9uZSB0byB0aHJlZSBkaWdpdHMpCiAgICAgKiA+ICAgICAgICAgICAgID09IFRpbWV6b25lID09CiAgICAgKiA+ICVPICAgICAgMzYwICAgICAgICAgICAgICAgICBkaWZmZXJlbmNlIGluIG1pbnV0ZXMgYmV0d2VlbiBsb2NhbCB0aW1lIGFuZCBHTVQKICAgICAqID4gJVogICAgICBNb3VudGFpbiBTdGFuZGFyZCBUaW1lICBOYW1lIG9mIHRpbWV6b25lIGFzIHJlcG9ydGVkIGJ5IGJyb3dzZXIKICAgICAqID4gJUcgICAgICAtMDY6MDAgICAgICAgICAgICAgIEhvdXJzIGFuZCBtaW51dGVzIGJldHdlZW4gR01UCiAgICAgKiA+ICAgICAgICAgICAgID09IFNob3J0Y3V0cyA9PQogICAgICogPiAlRiAgICAgIDIwMDgtMDMtMjYgICAgICAgICAgJVktJW0tJWQKICAgICAqID4gJVQgICAgICAwNTowNjozMCAgICAgICAgICAgICVIOiVNOiVTCiAgICAgKiA+ICVYICAgICAgMDU6MDY6MzAgICAgICAgICAgICAlSDolTTolUwogICAgICogPiAleCAgICAgIDAzLzI2LzA4ICAgICAgICAgICAgJW0vJWQvJXkKICAgICAqID4gJUQgICAgICAwMy8yNi8wOCAgICAgICAgICAgICVtLyVkLyV5CiAgICAgKiA+ICUjYyAgICAgV2VkIE1hciAyNiAxNTozMTowMCAyMDA4ICAlYSAlYiAlZSAlSDolTTolUyAlWQogICAgICogPiAldiAgICAgIDMtU2VwLTIwMDggICAgICAgICAgJWUtJWItJVkKICAgICAqID4gJVIgICAgICAxNTozMSAgICAgICAgICAgICAgICVIOiVNCiAgICAgKiA+ICVyICAgICAgMzozMTowMCBQTSAgICAgICAgICAlSTolTTolUyAlcAogICAgICogPiAgICAgICAgICAgICA9PSBDaGFyYWN0ZXJzID09CiAgICAgKiA+ICVuICAgICAgXG4gICAgICAgICAgICAgICAgICBOZXdsaW5lCiAgICAgKiA+ICV0ICAgICAgXHQgICAgICAgICAgICAgICAgICBUYWIKICAgICAqID4gJSUgICAgICAlICAgICAgICAgICAgICAgICAgIFBlcmNlbnQgU3ltYm9sIAogICAgICovCiAgICAkLmpxcGxvdC5EYXRlQXhpc1JlbmRlcmVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgJC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyLmNhbGwodGhpcyk7CiAgICAgICAgdGhpcy5kYXRlID0gbmV3ICQuanNEYXRlKCk7CiAgICB9OwoKICAgIHZhciBzZWNvbmQgPSAxMDAwOwogICAgdmFyIG1pbnV0ZSA9IDYwICogc2Vjb25kOwogICAgdmFyIGhvdXIgPSA2MCAqIG1pbnV0ZTsKICAgIHZhciBkYXkgPSAyNCAqIGhvdXI7CiAgICB2YXIgd2VlayA9IDcgKiBkYXk7CgogICAgLy8gdGhlc2UgYXJlIGxlc3MgZGVmaW5pdGl2ZQogICAgdmFyIG1vbnRoID0gMzAuNDM2ODQ5OSAqIGRheTsKICAgIHZhciB5ZWFyID0gMzY1LjI0MjE5OSAqIGRheTsKCiAgICB2YXIgZGF5c0luTW9udGhzID0gWzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMwLDMxLDMwLDMxLDMwXTsKICAgIC8vIGFycmF5IG9mIGNvbnNpc3RlbnQgbmljZSBpbnRlcnZhbHMuICBMb25nZXIgaW50ZXJ2YWxzCiAgICAvLyB3aWxsIGRlcGVuZCBvbiBkYXlzIGluIG1vbnRoLCBkYXlzIGluIHllYXIsIGV0Yy4KICAgIHZhciBuaWNlRm9ybWF0U3RyaW5ncyA9IFsnJU06JVMuJSNOJywgJyVNOiVTLiUjTicsICclTTolUy4lI04nLCAnJU06JVMnLCAnJU06JVMnLCAnJU06JVMnLCAnJU06JVMnLCAnJUg6JU06JVMnLCAnJUg6JU06JVMnLCAnJUg6JU0nLCAnJUg6JU0nLCAnJUg6JU0nLCAnJUg6JU0nLCAnJUg6JU0nLCAnJUg6JU0nLCAnJWEgJUg6JU0nLCAnJWEgJUg6JU0nLCAnJWIgJWUgJUg6JU0nLCAnJWIgJWUgJUg6JU0nLCAnJWIgJWUgJUg6JU0nLCAnJWIgJWUgJUg6JU0nLCAnJXYnLCAnJXYnLCAnJXYnLCAnJXYnLCAnJXYnLCAnJXYnLCAnJXYnXTsKICAgIHZhciBuaWNlSW50ZXJ2YWxzID0gWzAuMSpzZWNvbmQsIDAuMipzZWNvbmQsIDAuNSpzZWNvbmQsIHNlY29uZCwgMipzZWNvbmQsIDUqc2Vjb25kLCAxMCpzZWNvbmQsIDE1KnNlY29uZCwgMzAqc2Vjb25kLCBtaW51dGUsIDIqbWludXRlLCA1Km1pbnV0ZSwgMTAqbWludXRlLCAxNSptaW51dGUsIDMwKm1pbnV0ZSwgaG91ciwgMipob3VyLCA0KmhvdXIsIDYqaG91ciwgOCpob3VyLCAxMipob3VyLCBkYXksIDIqZGF5LCAzKmRheSwgNCpkYXksIDUqZGF5LCB3ZWVrLCAyKndlZWtdOwoKICAgIHZhciBuaWNlTW9udGhseUludGVydmFscyA9IFtdOwoKICAgIGZ1bmN0aW9uIGJlc3REYXRlSW50ZXJ2YWwobWluLCBtYXgsIHRpdGFyZ2V0KSB7CiAgICAgICAgLy8gaXRlcmF0ZSB0aHJvdWdoIG5pY2VJbnRlcnZhbHMgdG8gZmluZCBvbmUgY2xvc2VzdCB0byB0aXRhcmdldAogICAgICAgIHZhciBiYWRuZXNzID0gTnVtYmVyLk1BWF9WQUxVRTsKICAgICAgICB2YXIgdGVtcCwgYmVzdFRpLCBiZXN0Zm10OwogICAgICAgIGZvciAodmFyIGk9MCwgbD1uaWNlSW50ZXJ2YWxzLmxlbmd0aDsgaSA8IGw7IGkrKykgewogICAgICAgICAgICB0ZW1wID0gTWF0aC5hYnModGl0YXJnZXQgLSBuaWNlSW50ZXJ2YWxzW2ldKTsKICAgICAgICAgICAgaWYgKHRlbXAgPCBiYWRuZXNzKSB7CiAgICAgICAgICAgICAgICBiYWRuZXNzID0gdGVtcDsKICAgICAgICAgICAgICAgIGJlc3RUaSA9IG5pY2VJbnRlcnZhbHNbaV07CiAgICAgICAgICAgICAgICBiZXN0Zm10ID0gbmljZUZvcm1hdFN0cmluZ3NbaV07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBbYmVzdFRpLCBiZXN0Zm10XTsKICAgIH0KICAgIAogICAgJC5qcXBsb3QuRGF0ZUF4aXNSZW5kZXJlci5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7CiAgICAkLmpxcGxvdC5EYXRlQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LkRhdGVBeGlzUmVuZGVyZXI7CiAgICAKICAgICQuanFwbG90LkRhdGVUaWNrRm9ybWF0dGVyID0gZnVuY3Rpb24oZm9ybWF0LCB2YWwpIHsKICAgICAgICBpZiAoIWZvcm1hdCkgewogICAgICAgICAgICBmb3JtYXQgPSAnJVkvJW0vJWQnOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJC5qc0RhdGUuc3RyZnRpbWUodmFsLCBmb3JtYXQpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRGF0ZUF4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpewogICAgICAgIC8vIHByb3A6IHRpY2tSZW5kZXJlcgogICAgICAgIC8vIEEgY2xhc3Mgb2YgYSByZW5kZXJpbmcgZW5naW5lIGZvciBjcmVhdGluZyB0aGUgdGlja3MgbGFiZWxzIGRpc3BsYXllZCBvbiB0aGUgcGxvdCwgCiAgICAgICAgLy8gU2VlIDwkLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyPi4KICAgICAgICAvLyB0aGlzLnRpY2tSZW5kZXJlciA9ICQuanFwbG90LkF4aXNUaWNrUmVuZGVyZXI7CiAgICAgICAgLy8gdGhpcy5sYWJlbFJlbmRlcmVyID0gJC5qcXBsb3QuQXhpc0xhYmVsUmVuZGVyZXI7CiAgICAgICAgdGhpcy50aWNrT3B0aW9ucy5mb3JtYXR0ZXIgPSAkLmpxcGxvdC5EYXRlVGlja0Zvcm1hdHRlcjsKICAgICAgICAvLyBwcm9wOiB0aWNrSW5zZXQKICAgICAgICAvLyBDb250cm9scyB0aGUgYW1vdW50IHRvIGluc2V0IHRoZSBmaXJzdCBhbmQgbGFzdCB0aWNrcyBmcm9tIAogICAgICAgIC8vIHRoZSBlZGdlcyBvZiB0aGUgZ3JpZCwgaW4gbXVsdGlwbGVzIG9mIHRoZSB0aWNrIGludGVydmFsLgogICAgICAgIC8vIDAgaXMgbm8gaW5zZXQsIDAuNSBpcyBvbmUgaGFsZiBhIHRpY2sgaW50ZXJ2YWwsIDEgaXMgYSBmdWxsCiAgICAgICAgLy8gdGljayBpbnRlcnZhbCwgZXRjLgogICAgICAgIHRoaXMudGlja0luc2V0ID0gMDsKICAgICAgICAvLyBwcm9wOiBkcmF3QmFzZWxpbmUKICAgICAgICAvLyBUcnVlIHRvIGRyYXcgdGhlIGF4aXMgYmFzZWxpbmUuCiAgICAgICAgdGhpcy5kcmF3QmFzZWxpbmUgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IGJhc2VsaW5lV2lkdGgKICAgICAgICAvLyB3aWR0aCBvZiB0aGUgYmFzZWxpbmUgaW4gcGl4ZWxzLgogICAgICAgIHRoaXMuYmFzZWxpbmVXaWR0aCA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogYmFzZWxpbmVDb2xvcgogICAgICAgIC8vIENTUyBjb2xvciBzcGVjIGZvciB0aGUgYmFzZWxpbmUuCiAgICAgICAgdGhpcy5iYXNlbGluZUNvbG9yID0gbnVsbDsKICAgICAgICB0aGlzLmRhVGlja0ludGVydmFsID0gbnVsbDsKICAgICAgICB0aGlzLl9kYVRpY2tJbnRlcnZhbCA9IG51bGw7CiAgICAgICAgCiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CiAgICAgICAgCiAgICAgICAgdmFyIGRiID0gdGhpcy5fZGF0YUJvdW5kcywKICAgICAgICAgICAgc3RhdHMsIAogICAgICAgICAgICBzdW0sCiAgICAgICAgICAgIHMsCiAgICAgICAgICAgIGQsCiAgICAgICAgICAgIHBkLAogICAgICAgICAgICBzZCwKICAgICAgICAgICAgaW50djsKICAgICAgICAKICAgICAgICAvLyBHbyB0aHJvdWdoIGFsbCB0aGUgc2VyaWVzIGF0dGFjaGVkIHRvIHRoaXMgYXhpcyBhbmQgZmluZAogICAgICAgIC8vIHRoZSBtaW4vbWF4IGJvdW5kcyBmb3IgdGhpcyBheGlzLgogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgc3RhdHMgPSB7aW50ZXJ2YWxzOltdLCBmcmVxdWVuY2llczp7fSwgc29ydGVkSW50ZXJ2YWxzOltdLCBtaW46bnVsbCwgbWF4Om51bGwsIG1lYW46bnVsbH07CiAgICAgICAgICAgIHN1bSA9IDA7CiAgICAgICAgICAgIHMgPSB0aGlzLl9zZXJpZXNbaV07CiAgICAgICAgICAgIGQgPSBzLmRhdGE7CiAgICAgICAgICAgIHBkID0gcy5fcGxvdERhdGE7CiAgICAgICAgICAgIHNkID0gcy5fc3RhY2tEYXRhOwogICAgICAgICAgICBpbnR2ID0gMDsKICAgICAgICAgICAgCiAgICAgICAgICAgIGZvciAodmFyIGo9MDsgajxkLmxlbmd0aDsgaisrKSB7IAogICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnIHx8IHRoaXMubmFtZSA9PSAneDJheGlzJykgewogICAgICAgICAgICAgICAgICAgIGRbal1bMF0gPSBuZXcgJC5qc0RhdGUoZFtqXVswXSkuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgICAgIHBkW2pdWzBdID0gbmV3ICQuanNEYXRlKGRbal1bMF0pLmdldFRpbWUoKTsKICAgICAgICAgICAgICAgICAgICBzZFtqXVswXSA9IG5ldyAkLmpzRGF0ZShkW2pdWzBdKS5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKChkW2pdWzBdICE9IG51bGwgJiYgZFtqXVswXSA8IGRiLm1pbikgfHwgZGIubWluID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGIubWluID0gZFtqXVswXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKChkW2pdWzBdICE9IG51bGwgJiYgZFtqXVswXSA+IGRiLm1heCkgfHwgZGIubWF4ID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGIubWF4ID0gZFtqXVswXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGo+MCkgewogICAgICAgICAgICAgICAgICAgICAgICBpbnR2ID0gTWF0aC5hYnMoZFtqXVswXSAtIGRbai0xXVswXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRzLmludGVydmFscy5wdXNoKGludHYpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHMuZnJlcXVlbmNpZXMuaGFzT3duUHJvcGVydHkoaW50dikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRzLmZyZXF1ZW5jaWVzW2ludHZdICs9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0cy5mcmVxdWVuY2llc1tpbnR2XSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgc3VtICs9IGludHY7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGRbal1bMV0gPSBuZXcgJC5qc0RhdGUoZFtqXVsxXSkuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgICAgIHBkW2pdWzFdID0gbmV3ICQuanNEYXRlKGRbal1bMV0pLmdldFRpbWUoKTsKICAgICAgICAgICAgICAgICAgICBzZFtqXVsxXSA9IG5ldyAkLmpzRGF0ZShkW2pdWzFdKS5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKChkW2pdWzFdICE9IG51bGwgJiYgZFtqXVsxXSA8IGRiLm1pbikgfHwgZGIubWluID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGIubWluID0gZFtqXVsxXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKChkW2pdWzFdICE9IG51bGwgJiYgZFtqXVsxXSA+IGRiLm1heCkgfHwgZGIubWF4ID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGIubWF4ID0gZFtqXVsxXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGo+MCkgewogICAgICAgICAgICAgICAgICAgICAgICBpbnR2ID0gTWF0aC5hYnMoZFtqXVsxXSAtIGRbai0xXVsxXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRzLmludGVydmFscy5wdXNoKGludHYpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdHMuZnJlcXVlbmNpZXMuaGFzT3duUHJvcGVydHkoaW50dikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRzLmZyZXF1ZW5jaWVzW2ludHZdICs9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0cy5mcmVxdWVuY2llc1tpbnR2XSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzdW0gKz0gaW50djsgICAgICAgICAgICAgIAogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAocy5yZW5kZXJlci5iYW5kcykgewogICAgICAgICAgICAgICAgaWYgKHMucmVuZGVyZXIuYmFuZHMuaGlEYXRhLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIHZhciBiZCA9IHMucmVuZGVyZXIuYmFuZHMuaGlEYXRhOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGo9MCwgbD1iZC5sZW5ndGg7IGogPCBsOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT09ICd4MmF4aXMnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZFtqXVswXSA9IG5ldyAkLmpzRGF0ZShiZFtqXVswXSkuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChiZFtqXVswXSAhPSBudWxsICYmIGJkW2pdWzBdID4gZGIubWF4KSB8fCBkYi5tYXggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiLm1heCA9IGJkW2pdWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZFtqXVsxXSA9IG5ldyAkLmpzRGF0ZShiZFtqXVsxXSkuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChiZFtqXVsxXSAhPSBudWxsICYmIGJkW2pdWzFdID4gZGIubWF4KSB8fCBkYi5tYXggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRiLm1heCA9IGJkW2pdWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHMucmVuZGVyZXIuYmFuZHMubG93RGF0YS5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYmQgPSBzLnJlbmRlcmVyLmJhbmRzLmxvd0RhdGE7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wLCBsPWJkLmxlbmd0aDsgaiA8IGw7IGorKykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lID09PSAneGF4aXMnIHx8IHRoaXMubmFtZSA9PT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJkW2pdWzBdID0gbmV3ICQuanNEYXRlKGJkW2pdWzBdKS5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGJkW2pdWzBdICE9IG51bGwgJiYgYmRbal1bMF0gPCBkYi5taW4pIHx8IGRiLm1pbiA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGIubWluID0gYmRbal1bMF07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmRbal1bMV0gPSBuZXcgJC5qc0RhdGUoYmRbal1bMV0pLmdldFRpbWUoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYmRbal1bMV0gIT0gbnVsbCAmJiBiZFtqXVsxXSA8IGRiLm1pbikgfHwgZGIubWluID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYi5taW4gPSBiZFtqXVsxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIHRlbXBmID0gMCwKICAgICAgICAgICAgICAgIHRlbXBuPTA7CiAgICAgICAgICAgIGZvciAodmFyIG4gaW4gc3RhdHMuZnJlcXVlbmNpZXMpIHsKICAgICAgICAgICAgICAgIHN0YXRzLnNvcnRlZEludGVydmFscy5wdXNoKHtpbnRlcnZhbDpuLCBmcmVxdWVuY3k6c3RhdHMuZnJlcXVlbmNpZXNbbl19KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGF0cy5zb3J0ZWRJbnRlcnZhbHMuc29ydChmdW5jdGlvbihhLCBiKXsKICAgICAgICAgICAgICAgIHJldHVybiBiLmZyZXF1ZW5jeSAtIGEuZnJlcXVlbmN5OwogICAgICAgICAgICB9KTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHN0YXRzLm1pbiA9ICQuanFwbG90LmFycmF5TWluKHN0YXRzLmludGVydmFscyk7CiAgICAgICAgICAgIHN0YXRzLm1heCA9ICQuanFwbG90LmFycmF5TWF4KHN0YXRzLmludGVydmFscyk7CiAgICAgICAgICAgIHN0YXRzLm1lYW4gPSBzdW0vZC5sZW5ndGg7CiAgICAgICAgICAgIHRoaXMuX2ludGVydmFsU3RhdHMucHVzaChzdGF0cyk7CiAgICAgICAgICAgIHN0YXRzID0gc3VtID0gcyA9IGQgPSBwZCA9IHNkID0gbnVsbDsKICAgICAgICB9CiAgICAgICAgZGIgPSBudWxsOwogICAgICAgIAogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYW4gYXhpcwogICAgJC5qcXBsb3QuRGF0ZUF4aXNSZW5kZXJlci5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbigpIHsKICAgICAgICB0aGlzLm1pbiA9IHRoaXMuX29wdGlvbnMubWluOwogICAgICAgIHRoaXMubWF4ID0gdGhpcy5fb3B0aW9ucy5tYXg7CiAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSB0aGlzLl9vcHRpb25zLnRpY2tJbnRlcnZhbDsKICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gdGhpcy5fb3B0aW9ucy5udW1iZXJUaWNrczsKICAgICAgICB0aGlzLl9hdXRvRm9ybWF0U3RyaW5nID0gJyc7CiAgICAgICAgaWYgKHRoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nICYmIHRoaXMudGlja09wdGlvbnMgJiYgdGhpcy50aWNrT3B0aW9ucy5mb3JtYXRTdHJpbmcpIHsKICAgICAgICAgICAgdGhpcy50aWNrT3B0aW9ucy5mb3JtYXRTdHJpbmcgPSAnJzsKICAgICAgICB9CiAgICAgICAgdGhpcy5kYVRpY2tJbnRlcnZhbCA9IHRoaXMuX2RhVGlja0ludGVydmFsOwogICAgICAgIC8vIHRoaXMuX3RpY2tzID0gdGhpcy5fX3RpY2tzOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRGF0ZUF4aXNSZW5kZXJlci5wcm90b3R5cGUuY3JlYXRlVGlja3MgPSBmdW5jdGlvbihwbG90KSB7CiAgICAgICAgLy8gd2UncmUgYXJlIG9wZXJhdGluZyBvbiBhbiBheGlzIGhlcmUKICAgICAgICB2YXIgdGlja3MgPSB0aGlzLl90aWNrczsKICAgICAgICB2YXIgdXNlclRpY2tzID0gdGhpcy50aWNrczsKICAgICAgICB2YXIgbmFtZSA9IHRoaXMubmFtZTsKICAgICAgICAvLyBkYXRhYm91bmRzIHdlcmUgc2V0IG9uIGF4aXMgaW5pdGlhbGl6YXRpb24uCiAgICAgICAgdmFyIGRiID0gdGhpcy5fZGF0YUJvdW5kczsKICAgICAgICB2YXIgaXYgPSB0aGlzLl9pbnRlcnZhbFN0YXRzOwogICAgICAgIHZhciBkaW0gPSAodGhpcy5uYW1lLmNoYXJBdCgwKSA9PT0gJ3gnKSA/IHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoIDogdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0OwogICAgICAgIHZhciBpbnRlcnZhbDsKICAgICAgICB2YXIgbWluLCBtYXg7CiAgICAgICAgdmFyIHBvczEsIHBvczI7CiAgICAgICAgdmFyIHR0LCBpOwogICAgICAgIHZhciB0aHJlc2hvbGQgPSAzMDsKICAgICAgICB2YXIgaW5zZXRNdWx0ID0gMTsKICAgICAgICB2YXIgZGFUaWNrSW50ZXJ2YWwgPSBudWxsOwogICAgICAgIAogICAgICAgIC8vIGlmIHVzZXIgc3BlY2lmaWVkIGEgdGljayBpbnRlcnZhbCwgY29udmVydCB0byB1c2FibGUuCiAgICAgICAgaWYgKHRoaXMudGlja0ludGVydmFsICE9IG51bGwpCiAgICAgICAgewogICAgICAgICAgICAvLyBpZiBpbnRlcnZhbCBpcyBhIG51bWJlciBvciBjYW4gYmUgY29udmVydGVkIHRvIG9uZSwgdXNlIGl0LgogICAgICAgICAgICAvLyBBc3N1bWUgaXQgaXMgaW4gU0VDT05EUyEhIQogICAgICAgICAgICBpZiAoTnVtYmVyKHRoaXMudGlja0ludGVydmFsKSkgewogICAgICAgICAgICAgICAgZGFUaWNrSW50ZXJ2YWwgPSBbTnVtYmVyKHRoaXMudGlja0ludGVydmFsKSwgJ3NlY29uZHMnXTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBlbHNlLCBwYXJzZSBvdXQgc29tZXRoaW5nIHdlIGNhbiBidWlsZCBmcm9tLgogICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdGhpcy50aWNrSW50ZXJ2YWwgPT0gInN0cmluZyIpIHsKICAgICAgICAgICAgICAgIHZhciBwYXJ0cyA9IHRoaXMudGlja0ludGVydmFsLnNwbGl0KCcgJyk7CiAgICAgICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID09IDEpIHsKICAgICAgICAgICAgICAgICAgICBkYVRpY2tJbnRlcnZhbCA9IFsxLCBwYXJ0c1swXV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChwYXJ0cy5sZW5ndGggPT0gMikgewogICAgICAgICAgICAgICAgICAgIGRhVGlja0ludGVydmFsID0gW3BhcnRzWzBdLCBwYXJ0c1sxXV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHZhciB0aWNrSW50ZXJ2YWwgPSB0aGlzLnRpY2tJbnRlcnZhbDsKICAgICAgICAKICAgICAgICAvLyBpZiB3ZSBhbHJlYWR5IGhhdmUgdGlja3MsIHVzZSB0aGVtLgogICAgICAgIC8vIHRpY2tzIG11c3QgYmUgaW4gb3JkZXIgb2YgaW5jcmVhc2luZyB2YWx1ZS4KICAgICAgICAKICAgICAgICBtaW4gPSBuZXcgJC5qc0RhdGUoKHRoaXMubWluICE9IG51bGwpID8gdGhpcy5taW4gOiBkYi5taW4pLmdldFRpbWUoKTsKICAgICAgICBtYXggPSBuZXcgJC5qc0RhdGUoKHRoaXMubWF4ICE9IG51bGwpID8gdGhpcy5tYXggOiBkYi5tYXgpLmdldFRpbWUoKTsKCiAgICAgICAgLy8gc2VlIGlmIHdlJ3JlIHpvb21pbmcuICBpZiB3ZSBhcmUsIGRvbid0IHVzZSB0aGUgbWluIGFuZCBtYXggd2UncmUgZ2l2ZW4sCiAgICAgICAgLy8gYnV0IGNvbXB1dGUgc29tZSBuaWNlIG9uZXMuICBUaGV5IHdpbGwgYmUgcmVzZXQgbGF0ZXIuCgogICAgICAgIHZhciBjdXJzb3IgPSBwbG90LnBsdWdpbnMuY3Vyc29yOwoKICAgICAgICBpZiAoY3Vyc29yICYmIGN1cnNvci5fem9vbSAmJiBjdXJzb3IuX3pvb20uem9vbWluZykgewogICAgICAgICAgICB0aGlzLm1pbiA9IG51bGw7CiAgICAgICAgICAgIHRoaXMubWF4ID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIHZhciByYW5nZSA9IG1heCAtIG1pbjsKCiAgICAgICAgaWYgKHRoaXMudGlja09wdGlvbnMgPT0gbnVsbCB8fCAhdGhpcy50aWNrT3B0aW9ucy5mb3JtYXRTdHJpbmcpIHsKICAgICAgICAgICAgdGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcgPSB0cnVlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAodXNlclRpY2tzLmxlbmd0aCkgewogICAgICAgICAgICAvLyB0aWNrcyBjb3VsZCBiZSAxRCBvciAyRCBhcnJheSBvZiBbdmFsLCB2YWwsICwsLF0gb3IgW1t2YWwsIGxhYmVsXSwgW3ZhbCwgbGFiZWxdLCAuLi5dIG9yIG1peGVkCiAgICAgICAgICAgIGZvciAoaT0wOyBpPHVzZXJUaWNrcy5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAgICAgICB2YXIgdXQgPSB1c2VyVGlja3NbaV07CiAgICAgICAgICAgICAgICB2YXIgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTsKICAgICAgICAgICAgICAgIGlmICh1dC5jb25zdHJ1Y3RvciA9PSBBcnJheSkgewogICAgICAgICAgICAgICAgICAgIHQudmFsdWUgPSBuZXcgJC5qc0RhdGUodXRbMF0pLmdldFRpbWUoKTsKICAgICAgICAgICAgICAgICAgICB0LmxhYmVsID0gdXRbMV07CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dUaWNrcykgewogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dMYWJlbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLnNob3dUaWNrTWFya3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0LnNldFRpY2sodC52YWx1ZSwgdGhpcy5uYW1lKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90aWNrcy5wdXNoKHQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0LnZhbHVlID0gbmV3ICQuanNEYXRlKHV0KS5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dUaWNrcykgewogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dMYWJlbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLnNob3dUaWNrTWFya3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0LnNldFRpY2sodC52YWx1ZSwgdGhpcy5uYW1lKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90aWNrcy5wdXNoKHQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSB1c2VyVGlja3MubGVuZ3RoOwogICAgICAgICAgICB0aGlzLm1pbiA9IHRoaXMuX3RpY2tzWzBdLnZhbHVlOwogICAgICAgICAgICB0aGlzLm1heCA9IHRoaXMuX3RpY2tzW3RoaXMubnVtYmVyVGlja3MtMV0udmFsdWU7CiAgICAgICAgICAgIHRoaXMuZGFUaWNrSW50ZXJ2YWwgPSBbKHRoaXMubWF4IC0gdGhpcy5taW4pIC8gKHRoaXMubnVtYmVyVGlja3MgLSAxKS8xMDAwLCAnc2Vjb25kcyddOwogICAgICAgIH0KCiAgICAgICAgLy8vLy8vLy8KICAgICAgICAvLyBXZSBkb24ndCBoYXZlIGFueSB0aWNrcyB5ZXQsIGxldCdzIG1ha2Ugc29tZSEKICAgICAgICAvLy8vLy8vLwoKICAgICAgICAvLyBzcGVjaWFsIGNhc2Ugd2hlbiB0aGVyZSBpcyBvbmx5IG9uZSBwb2ludCwgbWFrZSB0aHJlZSB0aWNrIG1hcmtzIHRvIGNlbnRlciB0aGUgcG9pbnQKICAgICAgICBlbHNlIGlmICh0aGlzLm1pbiA9PSBudWxsICYmIHRoaXMubWF4ID09IG51bGwgJiYgZGIubWluID09IGRiLm1heCkKICAgICAgICB7CiAgICAgICAgICAgICB2YXIgb25lUG9pbnRPcHRzID0gJC5leHRlbmQodHJ1ZSwge30sIHRoaXMudGlja09wdGlvbnMsIHtuYW1lOiB0aGlzLm5hbWUsIHZhbHVlOiBudWxsfSk7CiAgICAgICAgICAgICB2YXIgZGVsdGEgPSAzMDAwMDA7CiAgICAgICAgICAgICB0aGlzLm1pbiA9IGRiLm1pbiAtIGRlbHRhOwogICAgICAgICAgICAgdGhpcy5tYXggPSBkYi5tYXggKyBkZWx0YTsKICAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSAzOwoKICAgICAgICAgICAgIGZvcih2YXIgaT10aGlzLm1pbjtpPD10aGlzLm1heDtpKz0gZGVsdGEpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgb25lUG9pbnRPcHRzLnZhbHVlID0gaTsKCiAgICAgICAgICAgICAgICAgdmFyIHQgPSBuZXcgdGhpcy50aWNrUmVuZGVyZXIob25lUG9pbnRPcHRzKTsKCiAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nICYmIHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmcgIT0gJycpIHsKICAgICAgICAgICAgICAgICAgICB0LmZvcm1hdFN0cmluZyA9IHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmc7CiAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICB0LnNob3dMYWJlbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKCiAgICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICBpZih0aGlzLnNob3dUaWNrcykgewogICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzWzFdLnNob3dMYWJlbCA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZih0aGlzLnNob3dUaWNrTWFya3MpIHsKICAgICAgICAgICAgICAgICB0aGlzLl90aWNrc1sxXS5zaG93VGlja01hcmtzID0gdHJ1ZTsKICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgCiAgICAgICAgfQogICAgICAgIC8vIGlmIHVzZXIgc3BlY2lmaWVkIG1pbiBhbmQgbWF4IGFyZSBudWxsLCB3ZSBzZXQgdGhvc2UgdG8gbWFrZSBiZXN0IHRpY2tzLgogICAgICAgIGVsc2UgaWYgKHRoaXMubWluID09IG51bGwgJiYgdGhpcy5tYXggPT0gbnVsbCkgewoKICAgICAgICAgICAgdmFyIG9wdHMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgdGhpcy50aWNrT3B0aW9ucywge25hbWU6IHRoaXMubmFtZSwgdmFsdWU6IG51bGx9KTsKCiAgICAgICAgICAgIC8vIHdhbnQgdG8gZmluZCBhIG5pY2UgaW50ZXJ2YWwgCiAgICAgICAgICAgIHZhciBudHRhcmdldCwKICAgICAgICAgICAgICAgIHRpdGFyZ2V0OwoKICAgICAgICAgICAgLy8gaWYgbm8gdGlja0ludGVydmFsIG9yIG51bWJlclRpY2tzIG9wdGlvbnMgc3BlY2lmaWVkLCAgbWFrZSBhIGdvb2QgZ3Vlc3MuCiAgICAgICAgICAgIGlmICghdGhpcy50aWNrSW50ZXJ2YWwgJiYgIXRoaXMubnVtYmVyVGlja3MpIHsKICAgICAgICAgICAgICAgIHZhciB0ZGltID0gTWF0aC5tYXgoZGltLCB0aHJlc2hvbGQrMSk7CiAgICAgICAgICAgICAgICAvLyBob3cgbWFueSB0aWNrcyB0byBwdXQgb24gdGhlIGF4aXM/CiAgICAgICAgICAgICAgICAvLyBkYXRlIGxhYmVscyB0ZW5kIHRvIGJlIGxvbmcuICBJZiB0aWNrcyBub3Qgcm90YXRlZCwKICAgICAgICAgICAgICAgIC8vIGRvbid0IHVzZSB0b28gbWFueSBhbmQgaGF2ZSBhIGhpZ2ggc3BhY2luZyBmYWN0b3IuCiAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgcm90YXRpbmcgdGlja3MsIHVzZSBhIGxvd2VyIGZhY3Rvci4KICAgICAgICAgICAgICAgIHZhciBzcGFjaW5nRmFjdG9yID0gMTE1OwogICAgICAgICAgICAgICAgaWYgKHRoaXMudGlja1JlbmRlcmVyID09PSAkLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyICYmIHRoaXMudGlja09wdGlvbnMuYW5nbGUpIHsKICAgICAgICAgICAgICAgICAgICBzcGFjaW5nRmFjdG9yID0gMTE1IC0gNDAgKiBNYXRoLmFicyhNYXRoLnNpbih0aGlzLnRpY2tPcHRpb25zLmFuZ2xlLzE4MCpNYXRoLlBJKSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbnR0YXJnZXQgPSAgTWF0aC5jZWlsKCh0ZGltLXRocmVzaG9sZCkvc3BhY2luZ0ZhY3RvciArIDEpOwogICAgICAgICAgICAgICAgdGl0YXJnZXQgPSAobWF4IC0gbWluKSAvIChudHRhcmdldCAtIDEpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJZiB0aWNrSW50ZXJ2YWwgaXMgc3BlY2lmaWVkLCB3ZSdsbCB0cnkgdG8gaG9ub3IgaXQuCiAgICAgICAgICAgIC8vIE5vdCBndWFyYW50ZWVkIHRvIGdldCB0aGlzIGludGVydmFsLCBidXQgd2UnbGwgZ2V0IGFzIGNsb3NlIGFzCiAgICAgICAgICAgIC8vIHdlIGNhbi4KICAgICAgICAgICAgLy8gdGlja0ludGVydmFsIHdpbGwgYmUgdXNlZCBiZWZvcmUgbnVtYmVyVGlja3MsIHRoYXQgaXMgaWYKICAgICAgICAgICAgLy8gYm90aCBhcmUgc3BlY2lmaWVkLCBudW1iZXJUaWNrcyB3aWxsIGJlIGlnbm9yZWQuCiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMudGlja0ludGVydmFsKSB7CiAgICAgICAgICAgICAgICB0aXRhcmdldCA9IG5ldyAkLmpzRGF0ZSgwKS5hZGQoZGFUaWNrSW50ZXJ2YWxbMF0sIGRhVGlja0ludGVydmFsWzFdKS5nZXRUaW1lKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGlmIG51bWJlclRpY2tzIHNwZWNpZmllZCwgdHJ5IHRvIGhvbm9yIGl0LgogICAgICAgICAgICAvLyBOb3QgZ3VhcmFudGVlZCwgYnV0IHdpbGwgdHJ5IHRvIGdldCBjbG9zZS4KICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5udW1iZXJUaWNrcykgewogICAgICAgICAgICAgICAgbnR0YXJnZXQgPSB0aGlzLm51bWJlclRpY2tzOwogICAgICAgICAgICAgICAgdGl0YXJnZXQgPSAobWF4IC0gbWluKSAvIChudHRhcmdldCAtIDEpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBJZiB3ZSBjYW4gdXNlIGFuIGludGVydmFsIG9mIDIgd2Vla3Mgb3IgbGVzcywgcGljayBiZXN0IG9uZQogICAgICAgICAgICBpZiAodGl0YXJnZXQgPD0gMTkqZGF5KSB7CiAgICAgICAgICAgICAgICB2YXIgcmV0ID0gYmVzdERhdGVJbnRlcnZhbChtaW4sIG1heCwgdGl0YXJnZXQpOwogICAgICAgICAgICAgICAgdmFyIHRlbXB0aSA9IHJldFswXTsKICAgICAgICAgICAgICAgIHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmcgPSByZXRbMV07CgogICAgICAgICAgICAgICAgbWluID0gbmV3ICQuanNEYXRlKG1pbik7CiAgICAgICAgICAgICAgICBtaW4gPSBNYXRoLmZsb29yKChtaW4uZ2V0VGltZSgpIC0gbWluLmdldFV0Y09mZnNldCgpKS90ZW1wdGkpICogdGVtcHRpICsgbWluLmdldFV0Y09mZnNldCgpOwoKICAgICAgICAgICAgICAgIG50dGFyZ2V0ID0gTWF0aC5jZWlsKChtYXggLSBtaW4pIC8gdGVtcHRpKSArIDE7CiAgICAgICAgICAgICAgICB0aGlzLm1pbiA9IG1pbjsKICAgICAgICAgICAgICAgIHRoaXMubWF4ID0gbWluICsgKG50dGFyZ2V0IC0gMSkgKiB0ZW1wdGk7CgogICAgICAgICAgICAgICAgLy8gaWYgbWF4IGlzIGxlc3MgdGhhbiBtYXgsIGFkZCBhbiBpbnRlcnZhbAogICAgICAgICAgICAgICAgaWYgKHRoaXMubWF4IDwgbWF4KSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXggKz0gdGVtcHRpOwogICAgICAgICAgICAgICAgICAgIG50dGFyZ2V0ICs9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9IHRlbXB0aTsKICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSBudHRhcmdldDsKCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8bnR0YXJnZXQ7IGkrKykgewogICAgICAgICAgICAgICAgICAgIG9wdHMudmFsdWUgPSB0aGlzLm1pbiArIGkgKiB0ZW1wdGk7CiAgICAgICAgICAgICAgICAgICAgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcihvcHRzKTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcgJiYgdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyAhPSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICB0LmZvcm1hdFN0cmluZyA9IHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaG93VGlja3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghdGhpcy5zaG93VGlja01hcmtzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpbnNldE11bHQgPSB0aGlzLnRpY2tJbnRlcnZhbDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gc2hvdWxkIHdlIHVzZSBhIG1vbnRobHkgaW50ZXJ2YWw/CiAgICAgICAgICAgIGVsc2UgaWYgKHRpdGFyZ2V0IDw9IDkgKiBtb250aCkgewoKICAgICAgICAgICAgICAgIHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmcgPSAnJXYnOwoKICAgICAgICAgICAgICAgIC8vIGhvdyBtYW55IG1vbnRocyBpbiBhbiBpbnRlcnZhbD8KICAgICAgICAgICAgICAgIHZhciBpbnR2ID0gTWF0aC5yb3VuZCh0aXRhcmdldC9tb250aCk7CiAgICAgICAgICAgICAgICBpZiAoaW50diA8IDEpIHsKICAgICAgICAgICAgICAgICAgICBpbnR2ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKGludHYgPiA2KSB7CiAgICAgICAgICAgICAgICAgICAgaW50diA9IDY7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gZmlndXJlIG91dCB0aGUgc3RhcnRpbmcgbW9udGggYW5kIGVuZGluZyBtb250aC4KICAgICAgICAgICAgICAgIHZhciBtc3RhcnQgPSBuZXcgJC5qc0RhdGUobWluKS5zZXREYXRlKDEpLnNldEhvdXJzKDAsMCwwLDApOwoKICAgICAgICAgICAgICAgIC8vIFNlZSBpZiBtYXggZW5kcyBleGFjdGx5IG9uIGEgbW9udGgKICAgICAgICAgICAgICAgIHZhciB0ZW1wbWVuZCA9IG5ldyAkLmpzRGF0ZShtYXgpOwogICAgICAgICAgICAgICAgdmFyIG1lbmQgPSBuZXcgJC5qc0RhdGUobWF4KS5zZXREYXRlKDEpLnNldEhvdXJzKDAsMCwwLDApOwoKICAgICAgICAgICAgICAgIGlmICh0ZW1wbWVuZC5nZXRUaW1lKCkgIT09IG1lbmQuZ2V0VGltZSgpKSB7CiAgICAgICAgICAgICAgICAgICAgbWVuZCA9IG1lbmQuYWRkKDEsICdtb250aCcpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHZhciBubW9udGhzID0gbWVuZC5kaWZmKG1zdGFydCwgJ21vbnRoJyk7CgogICAgICAgICAgICAgICAgbnR0YXJnZXQgPSBNYXRoLmNlaWwobm1vbnRocy9pbnR2KSArIDE7CgogICAgICAgICAgICAgICAgdGhpcy5taW4gPSBtc3RhcnQuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgdGhpcy5tYXggPSBtc3RhcnQuY2xvbmUoKS5hZGQoKG50dGFyZ2V0IC0gMSkgKiBpbnR2LCAnbW9udGgnKS5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gbnR0YXJnZXQ7CgogICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPG50dGFyZ2V0OyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBvcHRzLnZhbHVlID0gbXN0YXJ0LmdldFRpbWUoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMudmFsdWUgPSBtc3RhcnQuYWRkKGludHYsICdtb250aCcpLmdldFRpbWUoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcihvcHRzKTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcgJiYgdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyAhPSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICB0LmZvcm1hdFN0cmluZyA9IHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaG93VGlja3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghdGhpcy5zaG93VGlja01hcmtzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpbnNldE11bHQgPSBpbnR2ICogbW9udGg7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHVzZSB5ZWFybHkgaW50ZXJ2YWxzCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgIHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmcgPSAnJXYnOwoKICAgICAgICAgICAgICAgIC8vIGhvdyBtYW55IHllYXJzIGluIGFuIGludGVydmFsPwogICAgICAgICAgICAgICAgdmFyIGludHYgPSBNYXRoLnJvdW5kKHRpdGFyZ2V0L3llYXIpOwogICAgICAgICAgICAgICAgaWYgKGludHYgPCAxKSB7CiAgICAgICAgICAgICAgICAgICAgaW50diA9IDE7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gZmlndXJlIG91dCB0aGUgc3RhcnRpbmcgYW5kIGVuZGluZyB5ZWFycy4KICAgICAgICAgICAgICAgIHZhciBtc3RhcnQgPSBuZXcgJC5qc0RhdGUobWluKS5zZXRNb250aCgwLCAxKS5zZXRIb3VycygwLDAsMCwwKTsKICAgICAgICAgICAgICAgIHZhciBtZW5kID0gbmV3ICQuanNEYXRlKG1heCkuYWRkKDEsICd5ZWFyJykuc2V0TW9udGgoMCwgMSkuc2V0SG91cnMoMCwwLDAsMCk7CgogICAgICAgICAgICAgICAgdmFyIG55ZWFycyA9IG1lbmQuZGlmZihtc3RhcnQsICd5ZWFyJyk7CgogICAgICAgICAgICAgICAgbnR0YXJnZXQgPSBNYXRoLmNlaWwobnllYXJzL2ludHYpICsgMTsKCiAgICAgICAgICAgICAgICB0aGlzLm1pbiA9IG1zdGFydC5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICB0aGlzLm1heCA9IG1zdGFydC5jbG9uZSgpLmFkZCgobnR0YXJnZXQgLSAxKSAqIGludHYsICd5ZWFyJykuZ2V0VGltZSgpOwogICAgICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IG50dGFyZ2V0OwoKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxudHRhcmdldDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgb3B0cy52YWx1ZSA9IG1zdGFydC5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBvcHRzLnZhbHVlID0gbXN0YXJ0LmFkZChpbnR2LCAneWVhcicpLmdldFRpbWUoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcihvcHRzKTsKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcgJiYgdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyAhPSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICB0LmZvcm1hdFN0cmluZyA9IHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaG93VGlja3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghdGhpcy5zaG93VGlja01hcmtzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpbnNldE11bHQgPSBpbnR2ICogeWVhcjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8vLy8vLy8KICAgICAgICAvLyBTb21lIG9wdGlvbihzKSBzcGVjaWZpZWQsIHdvcmsgYXJvdW5kIHRoYXQuCiAgICAgICAgLy8vLy8vLy8KICAgICAgICAKICAgICAgICBlbHNlIHsgICAgICAKICAgICAgICAgICAgaWYgKG5hbWUgPT0gJ3hheGlzJyB8fCBuYW1lID09ICd4MmF4aXMnKSB7CiAgICAgICAgICAgICAgICBkaW0gPSB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGRpbSA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gaWYgbWluLCBtYXggYW5kIG51bWJlciBvZiB0aWNrcyBzcGVjaWZpZWQsIHVzZXIgY2FuJ3Qgc3BlY2lmeSBpbnRlcnZhbC4KICAgICAgICAgICAgaWYgKHRoaXMubWluICE9IG51bGwgJiYgdGhpcy5tYXggIT0gbnVsbCAmJiB0aGlzLm51bWJlclRpY2tzICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHRoaXMudGlja0ludGVydmFsID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHRoaXMudGlja0ludGVydmFsICE9IG51bGwgJiYgZGFUaWNrSW50ZXJ2YWwgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgdGhpcy5kYVRpY2tJbnRlcnZhbCA9IGRhVGlja0ludGVydmFsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBpZiBtaW4gYW5kIG1heCBhcmUgc2FtZSwgc3BhY2UgdGhlbSBvdXQgYSBiaXQKICAgICAgICAgICAgaWYgKG1pbiA9PSBtYXgpIHsKICAgICAgICAgICAgICAgIHZhciBhZGogPSAyNCo2MCo2MCo1MDA7ICAvLyAxLzIgZGF5CiAgICAgICAgICAgICAgICBtaW4gLT0gYWRqOwogICAgICAgICAgICAgICAgbWF4ICs9IGFkajsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmFuZ2UgPSBtYXggLSBtaW47CiAgICAgICAgICAgIAogICAgICAgICAgICB2YXIgb3B0TnVtVGlja3MgPSAyICsgcGFyc2VJbnQoTWF0aC5tYXgoMCwgZGltLTEwMCkvMTAwLCAxMCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIHJtaW4sIHJtYXg7CiAgICAgICAgICAgIAogICAgICAgICAgICBybWluID0gKHRoaXMubWluICE9IG51bGwpID8gbmV3ICQuanNEYXRlKHRoaXMubWluKS5nZXRUaW1lKCkgOiBtaW4gLSByYW5nZS8yKih0aGlzLnBhZE1pbiAtIDEpOwogICAgICAgICAgICBybWF4ID0gKHRoaXMubWF4ICE9IG51bGwpID8gbmV3ICQuanNEYXRlKHRoaXMubWF4KS5nZXRUaW1lKCkgOiBtYXggKyByYW5nZS8yKih0aGlzLnBhZE1heCAtIDEpOwogICAgICAgICAgICB0aGlzLm1pbiA9IHJtaW47CiAgICAgICAgICAgIHRoaXMubWF4ID0gcm1heDsKICAgICAgICAgICAgcmFuZ2UgPSB0aGlzLm1heCAtIHRoaXMubWluOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHRoaXMubnVtYmVyVGlja3MgPT0gbnVsbCl7CiAgICAgICAgICAgICAgICAvLyBpZiB0aWNrSW50ZXJ2YWwgaXMgc3BlY2lmaWVkIGJ5IHVzZXIsIHdlIHdpbGwgaWdub3JlIGNvbXB1dGVkIG1heGltdW0uCiAgICAgICAgICAgICAgICAvLyBtYXggd2lsbCBiZSBlcXVhbCBvciBncmVhdGVyIHRvIGZpdCBldmVuICMgb2YgdGlja3MuCiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYVRpY2tJbnRlcnZhbCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG5jID0gbmV3ICQuanNEYXRlKHRoaXMubWF4KS5kaWZmKHRoaXMubWluLCB0aGlzLmRhVGlja0ludGVydmFsWzFdLCB0cnVlKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gTWF0aC5jZWlsKG5jL3RoaXMuZGFUaWNrSW50ZXJ2YWxbMF0pICsxOwogICAgICAgICAgICAgICAgICAgIC8vIHRoaXMubWF4ID0gbmV3ICQuanNEYXRlKHRoaXMubWluKS5hZGQodGhpcy5udW1iZXJUaWNrcy0xLCB0aGlzLmRhVGlja0ludGVydmFsWzFdKS5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXggPSBuZXcgJC5qc0RhdGUodGhpcy5taW4pLmFkZCgodGhpcy5udW1iZXJUaWNrcy0xKSAqIHRoaXMuZGFUaWNrSW50ZXJ2YWxbMF0sIHRoaXMuZGFUaWNrSW50ZXJ2YWxbMV0pLmdldFRpbWUoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKGRpbSA+IDIwMCkgewogICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSBwYXJzZUludCgzKyhkaW0tMjAwKS8xMDAsIDEwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSAyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBpbnNldE11bHQgPSByYW5nZSAvICh0aGlzLm51bWJlclRpY2tzLTEpLzEwMDA7CgogICAgICAgICAgICBpZiAodGhpcy5kYVRpY2tJbnRlcnZhbCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICB0aGlzLmRhVGlja0ludGVydmFsID0gW2luc2V0TXVsdCwgJ3NlY29uZHMnXTsKICAgICAgICAgICAgfQoKCiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLm51bWJlclRpY2tzOyBpKyspewogICAgICAgICAgICAgICAgdmFyIG1pbiA9IG5ldyAkLmpzRGF0ZSh0aGlzLm1pbik7CiAgICAgICAgICAgICAgICB0dCA9IG1pbi5hZGQoaSp0aGlzLmRhVGlja0ludGVydmFsWzBdLCB0aGlzLmRhVGlja0ludGVydmFsWzFdKS5nZXRUaW1lKCk7CiAgICAgICAgICAgICAgICB2YXIgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTsKICAgICAgICAgICAgICAgIC8vIHZhciB0ID0gbmV3ICQuanFwbG90LkF4aXNUaWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2hvd1RpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICghdGhpcy5zaG93VGlja01hcmtzKSB7CiAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdC5zZXRUaWNrKHR0LCB0aGlzLm5hbWUpOwogICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMudGlja0luc2V0KSB7CiAgICAgICAgICAgIHRoaXMubWluID0gdGhpcy5taW4gLSB0aGlzLnRpY2tJbnNldCAqIGluc2V0TXVsdDsKICAgICAgICAgICAgdGhpcy5tYXggPSB0aGlzLm1heCArIHRoaXMudGlja0luc2V0ICogaW5zZXRNdWx0OwogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMuX2RhVGlja0ludGVydmFsID09IG51bGwpIHsKICAgICAgICAgICAgdGhpcy5fZGFUaWNrSW50ZXJ2YWwgPSB0aGlzLmRhVGlja0ludGVydmFsOyAgICAKICAgICAgICB9CgogICAgICAgIHRpY2tzID0gbnVsbDsKICAgIH07CiAgIAp9KShqUXVlcnkpOwoK]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.dateAxisRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGgpe2guanFwbG90LkRhdGVBeGlzUmVuZGVyZXI9ZnVuY3Rpb24oKXtoLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIuY2FsbCh0aGlzKTt0aGlzLmRhdGU9bmV3IGguanNEYXRlKCl9O3ZhciBjPTEwMDA7dmFyIGU9NjAqYzt2YXIgZj02MCplO3ZhciBsPTI0KmY7dmFyIGI9NypsO3ZhciBqPTMwLjQzNjg0OTkqbDt2YXIgaz0zNjUuMjQyMTk5Kmw7dmFyIGc9WzMxLDI4LDMxLDMwLDMxLDMwLDMxLDMwLDMxLDMwLDMxLDMwXTt2YXIgaT1bIiVNOiVTLiUjTiIsIiVNOiVTLiUjTiIsIiVNOiVTLiUjTiIsIiVNOiVTIiwiJU06JVMiLCIlTTolUyIsIiVNOiVTIiwiJUg6JU06JVMiLCIlSDolTTolUyIsIiVIOiVNIiwiJUg6JU0iLCIlSDolTSIsIiVIOiVNIiwiJUg6JU0iLCIlSDolTSIsIiVhICVIOiVNIiwiJWEgJUg6JU0iLCIlYiAlZSAlSDolTSIsIiViICVlICVIOiVNIiwiJWIgJWUgJUg6JU0iLCIlYiAlZSAlSDolTSIsIiV2IiwiJXYiLCIldiIsIiV2IiwiJXYiLCIldiIsIiV2Il07dmFyIG09WzAuMSpjLDAuMipjLDAuNSpjLGMsMipjLDUqYywxMCpjLDE1KmMsMzAqYyxlLDIqZSw1KmUsMTAqZSwxNSplLDMwKmUsZiwyKmYsNCpmLDYqZiw4KmYsMTIqZixsLDIqbCwzKmwsNCpsLDUqbCxiLDIqYl07dmFyIGQ9W107ZnVuY3Rpb24gYShwLHMsdCl7dmFyIG89TnVtYmVyLk1BWF9WQUxVRTt2YXIgdSxyLHY7Zm9yKHZhciBxPTAsbj1tLmxlbmd0aDtxPG47cSsrKXt1PU1hdGguYWJzKHQtbVtxXSk7aWYodTxvKXtvPXU7cj1tW3FdO3Y9aVtxXX19cmV0dXJuW3Isdl19aC5qcXBsb3QuRGF0ZUF4aXNSZW5kZXJlci5wcm90b3R5cGU9bmV3IGguanFwbG90LkxpbmVhckF4aXNSZW5kZXJlcigpO2guanFwbG90LkRhdGVBeGlzUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWguanFwbG90LkRhdGVBeGlzUmVuZGVyZXI7aC5qcXBsb3QuRGF0ZVRpY2tGb3JtYXR0ZXI9ZnVuY3Rpb24obixvKXtpZighbil7bj0iJVkvJW0vJWQifXJldHVybiBoLmpzRGF0ZS5zdHJmdGltZShvLG4pfTtoLmpxcGxvdC5EYXRlQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKEUpe3RoaXMudGlja09wdGlvbnMuZm9ybWF0dGVyPWguanFwbG90LkRhdGVUaWNrRm9ybWF0dGVyO3RoaXMudGlja0luc2V0PTA7dGhpcy5kcmF3QmFzZWxpbmU9dHJ1ZTt0aGlzLmJhc2VsaW5lV2lkdGg9bnVsbDt0aGlzLmJhc2VsaW5lQ29sb3I9bnVsbDt0aGlzLmRhVGlja0ludGVydmFsPW51bGw7dGhpcy5fZGFUaWNrSW50ZXJ2YWw9bnVsbDtoLmV4dGVuZCh0cnVlLHRoaXMsRSk7dmFyIEM9dGhpcy5fZGF0YUJvdW5kcyx1LHgsRCx5LEEseixvO2Zvcih2YXIgdD0wO3Q8dGhpcy5fc2VyaWVzLmxlbmd0aDt0Kyspe3U9e2ludGVydmFsczpbXSxmcmVxdWVuY2llczp7fSxzb3J0ZWRJbnRlcnZhbHM6W10sbWluOm51bGwsbWF4Om51bGwsbWVhbjpudWxsfTt4PTA7RD10aGlzLl9zZXJpZXNbdF07eT1ELmRhdGE7QT1ELl9wbG90RGF0YTt6PUQuX3N0YWNrRGF0YTtvPTA7Zm9yKHZhciByPTA7cjx5Lmxlbmd0aDtyKyspe2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7eVtyXVswXT1uZXcgaC5qc0RhdGUoeVtyXVswXSkuZ2V0VGltZSgpO0Fbcl1bMF09bmV3IGguanNEYXRlKHlbcl1bMF0pLmdldFRpbWUoKTt6W3JdWzBdPW5ldyBoLmpzRGF0ZSh5W3JdWzBdKS5nZXRUaW1lKCk7aWYoKHlbcl1bMF0hPW51bGwmJnlbcl1bMF08Qy5taW4pfHxDLm1pbj09bnVsbCl7Qy5taW49eVtyXVswXX1pZigoeVtyXVswXSE9bnVsbCYmeVtyXVswXT5DLm1heCl8fEMubWF4PT1udWxsKXtDLm1heD15W3JdWzBdfWlmKHI+MCl7bz1NYXRoLmFicyh5W3JdWzBdLXlbci0xXVswXSk7dS5pbnRlcnZhbHMucHVzaChvKTtpZih1LmZyZXF1ZW5jaWVzLmhhc093blByb3BlcnR5KG8pKXt1LmZyZXF1ZW5jaWVzW29dKz0xfWVsc2V7dS5mcmVxdWVuY2llc1tvXT0xfX14Kz1vfWVsc2V7eVtyXVsxXT1uZXcgaC5qc0RhdGUoeVtyXVsxXSkuZ2V0VGltZSgpO0Fbcl1bMV09bmV3IGguanNEYXRlKHlbcl1bMV0pLmdldFRpbWUoKTt6W3JdWzFdPW5ldyBoLmpzRGF0ZSh5W3JdWzFdKS5nZXRUaW1lKCk7aWYoKHlbcl1bMV0hPW51bGwmJnlbcl1bMV08Qy5taW4pfHxDLm1pbj09bnVsbCl7Qy5taW49eVtyXVsxXX1pZigoeVtyXVsxXSE9bnVsbCYmeVtyXVsxXT5DLm1heCl8fEMubWF4PT1udWxsKXtDLm1heD15W3JdWzFdfWlmKHI+MCl7bz1NYXRoLmFicyh5W3JdWzFdLXlbci0xXVsxXSk7dS5pbnRlcnZhbHMucHVzaChvKTtpZih1LmZyZXF1ZW5jaWVzLmhhc093blByb3BlcnR5KG8pKXt1LmZyZXF1ZW5jaWVzW29dKz0xfWVsc2V7dS5mcmVxdWVuY2llc1tvXT0xfX19eCs9b31pZihELnJlbmRlcmVyLmJhbmRzKXtpZihELnJlbmRlcmVyLmJhbmRzLmhpRGF0YS5sZW5ndGgpe3ZhciB3PUQucmVuZGVyZXIuYmFuZHMuaGlEYXRhO2Zvcih2YXIgcj0wLHE9dy5sZW5ndGg7cjxxO3IrKyl7aWYodGhpcy5uYW1lPT09InhheGlzInx8dGhpcy5uYW1lPT09IngyYXhpcyIpe3dbcl1bMF09bmV3IGguanNEYXRlKHdbcl1bMF0pLmdldFRpbWUoKTtpZigod1tyXVswXSE9bnVsbCYmd1tyXVswXT5DLm1heCl8fEMubWF4PT1udWxsKXtDLm1heD13W3JdWzBdfX1lbHNle3dbcl1bMV09bmV3IGguanNEYXRlKHdbcl1bMV0pLmdldFRpbWUoKTtpZigod1tyXVsxXSE9bnVsbCYmd1tyXVsxXT5DLm1heCl8fEMubWF4PT1udWxsKXtDLm1heD13W3JdWzFdfX19fWlmKEQucmVuZGVyZXIuYmFuZHMubG93RGF0YS5sZW5ndGgpe3ZhciB3PUQucmVuZGVyZXIuYmFuZHMubG93RGF0YTtmb3IodmFyIHI9MCxxPXcubGVuZ3RoO3I8cTtyKyspe2lmKHRoaXMubmFtZT09PSJ4YXhpcyJ8fHRoaXMubmFtZT09PSJ4MmF4aXMiKXt3W3JdWzBdPW5ldyBoLmpzRGF0ZSh3W3JdWzBdKS5nZXRUaW1lKCk7aWYoKHdbcl1bMF0hPW51bGwmJndbcl1bMF08Qy5taW4pfHxDLm1pbj09bnVsbCl7Qy5taW49d1tyXVswXX19ZWxzZXt3W3JdWzFdPW5ldyBoLmpzRGF0ZSh3W3JdWzFdKS5nZXRUaW1lKCk7aWYoKHdbcl1bMV0hPW51bGwmJndbcl1bMV08Qy5taW4pfHxDLm1pbj09bnVsbCl7Qy5taW49d1tyXVsxXX19fX19dmFyIEI9MCx2PTA7Zm9yKHZhciBwIGluIHUuZnJlcXVlbmNpZXMpe3Uuc29ydGVkSW50ZXJ2YWxzLnB1c2goe2ludGVydmFsOnAsZnJlcXVlbmN5OnUuZnJlcXVlbmNpZXNbcF19KX11LnNvcnRlZEludGVydmFscy5zb3J0KGZ1bmN0aW9uKHMsbil7cmV0dXJuIG4uZnJlcXVlbmN5LXMuZnJlcXVlbmN5fSk7dS5taW49aC5qcXBsb3QuYXJyYXlNaW4odS5pbnRlcnZhbHMpO3UubWF4PWguanFwbG90LmFycmF5TWF4KHUuaW50ZXJ2YWxzKTt1Lm1lYW49eC95Lmxlbmd0aDt0aGlzLl9pbnRlcnZhbFN0YXRzLnB1c2godSk7dT14PUQ9eT1BPXo9bnVsbH1DPW51bGx9O2guanFwbG90LkRhdGVBeGlzUmVuZGVyZXIucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5taW49dGhpcy5fb3B0aW9ucy5taW47dGhpcy5tYXg9dGhpcy5fb3B0aW9ucy5tYXg7dGhpcy50aWNrSW50ZXJ2YWw9dGhpcy5fb3B0aW9ucy50aWNrSW50ZXJ2YWw7dGhpcy5udW1iZXJUaWNrcz10aGlzLl9vcHRpb25zLm51bWJlclRpY2tzO3RoaXMuX2F1dG9Gb3JtYXRTdHJpbmc9IiI7aWYodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcmJnRoaXMudGlja09wdGlvbnMmJnRoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nKXt0aGlzLnRpY2tPcHRpb25zLmZvcm1hdFN0cmluZz0iIn10aGlzLmRhVGlja0ludGVydmFsPXRoaXMuX2RhVGlja0ludGVydmFsfTtoLmpxcGxvdC5EYXRlQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jcmVhdGVUaWNrcz1mdW5jdGlvbihwKXt2YXIgWD10aGlzLl90aWNrczt2YXIgTD10aGlzLnRpY2tzO3ZhciBGPXRoaXMubmFtZTt2YXIgSD10aGlzLl9kYXRhQm91bmRzO3ZhciBNPXRoaXMuX2ludGVydmFsU3RhdHM7dmFyIG49KHRoaXMubmFtZS5jaGFyQXQoMCk9PT0ieCIpP3RoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoOnRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodDt2YXIgdzt2YXIgYWUsSjt2YXIgeSx4O3ZhciBhZCxhYTt2YXIgcz0zMDt2YXIgTz0xO3ZhciBVPW51bGw7aWYodGhpcy50aWNrSW50ZXJ2YWwhPW51bGwpe2lmKE51bWJlcih0aGlzLnRpY2tJbnRlcnZhbCkpe1U9W051bWJlcih0aGlzLnRpY2tJbnRlcnZhbCksInNlY29uZHMiXX1lbHNle2lmKHR5cGVvZiB0aGlzLnRpY2tJbnRlcnZhbD09InN0cmluZyIpe3ZhciBhYz10aGlzLnRpY2tJbnRlcnZhbC5zcGxpdCgiICIpO2lmKGFjLmxlbmd0aD09MSl7VT1bMSxhY1swXV19ZWxzZXtpZihhYy5sZW5ndGg9PTIpe1U9W2FjWzBdLGFjWzFdXX19fX19dmFyIHY9dGhpcy50aWNrSW50ZXJ2YWw7YWU9bmV3IGguanNEYXRlKCh0aGlzLm1pbiE9bnVsbCk/dGhpcy5taW46SC5taW4pLmdldFRpbWUoKTtKPW5ldyBoLmpzRGF0ZSgodGhpcy5tYXghPW51bGwpP3RoaXMubWF4OkgubWF4KS5nZXRUaW1lKCk7dmFyIEE9cC5wbHVnaW5zLmN1cnNvcjtpZihBJiZBLl96b29tJiZBLl96b29tLnpvb21pbmcpe3RoaXMubWluPW51bGw7dGhpcy5tYXg9bnVsbH12YXIgQj1KLWFlO2lmKHRoaXMudGlja09wdGlvbnM9PW51bGx8fCF0aGlzLnRpY2tPcHRpb25zLmZvcm1hdFN0cmluZyl7dGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmc9dHJ1ZX1pZihMLmxlbmd0aCl7Zm9yKGFhPTA7YWE8TC5sZW5ndGg7YWErKyl7dmFyIFA9TFthYV07dmFyIFk9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2lmKFAuY29uc3RydWN0b3I9PUFycmF5KXtZLnZhbHVlPW5ldyBoLmpzRGF0ZShQWzBdKS5nZXRUaW1lKCk7WS5sYWJlbD1QWzFdO2lmKCF0aGlzLnNob3dUaWNrcyl7WS5zaG93TGFiZWw9ZmFsc2U7WS5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe1kuc2hvd01hcms9ZmFsc2V9fVkuc2V0VGljayhZLnZhbHVlLHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChZKX1lbHNle1kudmFsdWU9bmV3IGguanNEYXRlKFApLmdldFRpbWUoKTtpZighdGhpcy5zaG93VGlja3Mpe1kuc2hvd0xhYmVsPWZhbHNlO1kuc2hvd01hcms9ZmFsc2V9ZWxzZXtpZighdGhpcy5zaG93VGlja01hcmtzKXtZLnNob3dNYXJrPWZhbHNlfX1ZLnNldFRpY2soWS52YWx1ZSx0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goWSl9fXRoaXMubnVtYmVyVGlja3M9TC5sZW5ndGg7dGhpcy5taW49dGhpcy5fdGlja3NbMF0udmFsdWU7dGhpcy5tYXg9dGhpcy5fdGlja3NbdGhpcy5udW1iZXJUaWNrcy0xXS52YWx1ZTt0aGlzLmRhVGlja0ludGVydmFsPVsodGhpcy5tYXgtdGhpcy5taW4pLyh0aGlzLm51bWJlclRpY2tzLTEpLzEwMDAsInNlY29uZHMiXX1lbHNle2lmKHRoaXMubWluPT1udWxsJiZ0aGlzLm1heD09bnVsbCYmSC5taW49PUgubWF4KXt2YXIgRT1oLmV4dGVuZCh0cnVlLHt9LHRoaXMudGlja09wdGlvbnMse25hbWU6dGhpcy5uYW1lLHZhbHVlOm51bGx9KTt2YXIgVD0zMDAwMDA7dGhpcy5taW49SC5taW4tVDt0aGlzLm1heD1ILm1heCtUO3RoaXMubnVtYmVyVGlja3M9Mztmb3IodmFyIGFhPXRoaXMubWluO2FhPD10aGlzLm1heDthYSs9VCl7RS52YWx1ZT1hYTt2YXIgWT1uZXcgdGhpcy50aWNrUmVuZGVyZXIoRSk7aWYodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcmJnRoaXMuX2F1dG9Gb3JtYXRTdHJpbmchPSIiKXtZLmZvcm1hdFN0cmluZz10aGlzLl9hdXRvRm9ybWF0U3RyaW5nfVkuc2hvd0xhYmVsPWZhbHNlO1kuc2hvd01hcms9ZmFsc2U7dGhpcy5fdGlja3MucHVzaChZKX1pZih0aGlzLnNob3dUaWNrcyl7dGhpcy5fdGlja3NbMV0uc2hvd0xhYmVsPXRydWV9aWYodGhpcy5zaG93VGlja01hcmtzKXt0aGlzLl90aWNrc1sxXS5zaG93VGlja01hcmtzPXRydWV9fWVsc2V7aWYodGhpcy5taW49PW51bGwmJnRoaXMubWF4PT1udWxsKXt2YXIgTj1oLmV4dGVuZCh0cnVlLHt9LHRoaXMudGlja09wdGlvbnMse25hbWU6dGhpcy5uYW1lLHZhbHVlOm51bGx9KTt2YXIgYWIsSTtpZighdGhpcy50aWNrSW50ZXJ2YWwmJiF0aGlzLm51bWJlclRpY2tzKXt2YXIgUj1NYXRoLm1heChuLHMrMSk7dmFyIFo9MTE1O2lmKHRoaXMudGlja1JlbmRlcmVyPT09aC5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciYmdGhpcy50aWNrT3B0aW9ucy5hbmdsZSl7Wj0xMTUtNDAqTWF0aC5hYnMoTWF0aC5zaW4odGhpcy50aWNrT3B0aW9ucy5hbmdsZS8xODAqTWF0aC5QSSkpfWFiPU1hdGguY2VpbCgoUi1zKS9aKzEpO0k9KEotYWUpLyhhYi0xKX1lbHNle2lmKHRoaXMudGlja0ludGVydmFsKXtJPW5ldyBoLmpzRGF0ZSgwKS5hZGQoVVswXSxVWzFdKS5nZXRUaW1lKCl9ZWxzZXtpZih0aGlzLm51bWJlclRpY2tzKXthYj10aGlzLm51bWJlclRpY2tzO0k9KEotYWUpLyhhYi0xKX19fWlmKEk8PTE5Kmwpe3ZhciBRPWEoYWUsSixJKTt2YXIgcj1RWzBdO3RoaXMuX2F1dG9Gb3JtYXRTdHJpbmc9UVsxXTthZT1uZXcgaC5qc0RhdGUoYWUpO2FlPU1hdGguZmxvb3IoKGFlLmdldFRpbWUoKS1hZS5nZXRVdGNPZmZzZXQoKSkvcikqcithZS5nZXRVdGNPZmZzZXQoKTthYj1NYXRoLmNlaWwoKEotYWUpL3IpKzE7dGhpcy5taW49YWU7dGhpcy5tYXg9YWUrKGFiLTEpKnI7aWYodGhpcy5tYXg8Sil7dGhpcy5tYXgrPXI7YWIrPTF9dGhpcy50aWNrSW50ZXJ2YWw9cjt0aGlzLm51bWJlclRpY2tzPWFiO2Zvcih2YXIgYWE9MDthYTxhYjthYSsrKXtOLnZhbHVlPXRoaXMubWluK2FhKnI7WT1uZXcgdGhpcy50aWNrUmVuZGVyZXIoTik7aWYodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcmJnRoaXMuX2F1dG9Gb3JtYXRTdHJpbmchPSIiKXtZLmZvcm1hdFN0cmluZz10aGlzLl9hdXRvRm9ybWF0U3RyaW5nfWlmKCF0aGlzLnNob3dUaWNrcyl7WS5zaG93TGFiZWw9ZmFsc2U7WS5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe1kuc2hvd01hcms9ZmFsc2V9fXRoaXMuX3RpY2tzLnB1c2goWSl9Tz10aGlzLnRpY2tJbnRlcnZhbH1lbHNle2lmKEk8PTkqail7dGhpcy5fYXV0b0Zvcm1hdFN0cmluZz0iJXYiO3ZhciBEPU1hdGgucm91bmQoSS9qKTtpZihEPDEpe0Q9MX1lbHNle2lmKEQ+Nil7RD02fX12YXIgVj1uZXcgaC5qc0RhdGUoYWUpLnNldERhdGUoMSkuc2V0SG91cnMoMCwwLDAsMCk7dmFyIHE9bmV3IGguanNEYXRlKEopO3ZhciB6PW5ldyBoLmpzRGF0ZShKKS5zZXREYXRlKDEpLnNldEhvdXJzKDAsMCwwLDApO2lmKHEuZ2V0VGltZSgpIT09ei5nZXRUaW1lKCkpe3o9ei5hZGQoMSwibW9udGgiKX12YXIgUz16LmRpZmYoViwibW9udGgiKTthYj1NYXRoLmNlaWwoUy9EKSsxO3RoaXMubWluPVYuZ2V0VGltZSgpO3RoaXMubWF4PVYuY2xvbmUoKS5hZGQoKGFiLTEpKkQsIm1vbnRoIikuZ2V0VGltZSgpO3RoaXMubnVtYmVyVGlja3M9YWI7Zm9yKHZhciBhYT0wO2FhPGFiO2FhKyspe2lmKGFhPT09MCl7Ti52YWx1ZT1WLmdldFRpbWUoKX1lbHNle04udmFsdWU9Vi5hZGQoRCwibW9udGgiKS5nZXRUaW1lKCl9WT1uZXcgdGhpcy50aWNrUmVuZGVyZXIoTik7aWYodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcmJnRoaXMuX2F1dG9Gb3JtYXRTdHJpbmchPSIiKXtZLmZvcm1hdFN0cmluZz10aGlzLl9hdXRvRm9ybWF0U3RyaW5nfWlmKCF0aGlzLnNob3dUaWNrcyl7WS5zaG93TGFiZWw9ZmFsc2U7WS5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe1kuc2hvd01hcms9ZmFsc2V9fXRoaXMuX3RpY2tzLnB1c2goWSl9Tz1EKmp9ZWxzZXt0aGlzLl9hdXRvRm9ybWF0U3RyaW5nPSIldiI7dmFyIEQ9TWF0aC5yb3VuZChJL2spO2lmKEQ8MSl7RD0xfXZhciBWPW5ldyBoLmpzRGF0ZShhZSkuc2V0TW9udGgoMCwxKS5zZXRIb3VycygwLDAsMCwwKTt2YXIgej1uZXcgaC5qc0RhdGUoSikuYWRkKDEsInllYXIiKS5zZXRNb250aCgwLDEpLnNldEhvdXJzKDAsMCwwLDApO3ZhciBLPXouZGlmZihWLCJ5ZWFyIik7YWI9TWF0aC5jZWlsKEsvRCkrMTt0aGlzLm1pbj1WLmdldFRpbWUoKTt0aGlzLm1heD1WLmNsb25lKCkuYWRkKChhYi0xKSpELCJ5ZWFyIikuZ2V0VGltZSgpO3RoaXMubnVtYmVyVGlja3M9YWI7Zm9yKHZhciBhYT0wO2FhPGFiO2FhKyspe2lmKGFhPT09MCl7Ti52YWx1ZT1WLmdldFRpbWUoKX1lbHNle04udmFsdWU9Vi5hZGQoRCwieWVhciIpLmdldFRpbWUoKX1ZPW5ldyB0aGlzLnRpY2tSZW5kZXJlcihOKTtpZih0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZyYmdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyE9IiIpe1kuZm9ybWF0U3RyaW5nPXRoaXMuX2F1dG9Gb3JtYXRTdHJpbmd9aWYoIXRoaXMuc2hvd1RpY2tzKXtZLnNob3dMYWJlbD1mYWxzZTtZLnNob3dNYXJrPWZhbHNlfWVsc2V7aWYoIXRoaXMuc2hvd1RpY2tNYXJrcyl7WS5zaG93TWFyaz1mYWxzZX19dGhpcy5fdGlja3MucHVzaChZKX1PPUQqa319fWVsc2V7aWYoRj09InhheGlzInx8Rj09IngyYXhpcyIpe249dGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGh9ZWxzZXtuPXRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodH1pZih0aGlzLm1pbiE9bnVsbCYmdGhpcy5tYXghPW51bGwmJnRoaXMubnVtYmVyVGlja3MhPW51bGwpe3RoaXMudGlja0ludGVydmFsPW51bGx9aWYodGhpcy50aWNrSW50ZXJ2YWwhPW51bGwmJlUhPW51bGwpe3RoaXMuZGFUaWNrSW50ZXJ2YWw9VX1pZihhZT09Sil7dmFyIG89MjQqNjAqNjAqNTAwO2FlLT1vO0orPW99Qj1KLWFlO3ZhciBHPTIrcGFyc2VJbnQoTWF0aC5tYXgoMCxuLTEwMCkvMTAwLDEwKTt2YXIgVyxDO1c9KHRoaXMubWluIT1udWxsKT9uZXcgaC5qc0RhdGUodGhpcy5taW4pLmdldFRpbWUoKTphZS1CLzIqKHRoaXMucGFkTWluLTEpO0M9KHRoaXMubWF4IT1udWxsKT9uZXcgaC5qc0RhdGUodGhpcy5tYXgpLmdldFRpbWUoKTpKK0IvMioodGhpcy5wYWRNYXgtMSk7dGhpcy5taW49Vzt0aGlzLm1heD1DO0I9dGhpcy5tYXgtdGhpcy5taW47aWYodGhpcy5udW1iZXJUaWNrcz09bnVsbCl7aWYodGhpcy5kYVRpY2tJbnRlcnZhbCE9bnVsbCl7dmFyIHU9bmV3IGguanNEYXRlKHRoaXMubWF4KS5kaWZmKHRoaXMubWluLHRoaXMuZGFUaWNrSW50ZXJ2YWxbMV0sdHJ1ZSk7dGhpcy5udW1iZXJUaWNrcz1NYXRoLmNlaWwodS90aGlzLmRhVGlja0ludGVydmFsWzBdKSsxO3RoaXMubWF4PW5ldyBoLmpzRGF0ZSh0aGlzLm1pbikuYWRkKCh0aGlzLm51bWJlclRpY2tzLTEpKnRoaXMuZGFUaWNrSW50ZXJ2YWxbMF0sdGhpcy5kYVRpY2tJbnRlcnZhbFsxXSkuZ2V0VGltZSgpfWVsc2V7aWYobj4yMDApe3RoaXMubnVtYmVyVGlja3M9cGFyc2VJbnQoMysobi0yMDApLzEwMCwxMCl9ZWxzZXt0aGlzLm51bWJlclRpY2tzPTJ9fX1PPUIvKHRoaXMubnVtYmVyVGlja3MtMSkvMTAwMDtpZih0aGlzLmRhVGlja0ludGVydmFsPT1udWxsKXt0aGlzLmRhVGlja0ludGVydmFsPVtPLCJzZWNvbmRzIl19Zm9yKHZhciBhYT0wO2FhPHRoaXMubnVtYmVyVGlja3M7YWErKyl7dmFyIGFlPW5ldyBoLmpzRGF0ZSh0aGlzLm1pbik7YWQ9YWUuYWRkKGFhKnRoaXMuZGFUaWNrSW50ZXJ2YWxbMF0sdGhpcy5kYVRpY2tJbnRlcnZhbFsxXSkuZ2V0VGltZSgpO3ZhciBZPW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTtpZighdGhpcy5zaG93VGlja3Mpe1kuc2hvd0xhYmVsPWZhbHNlO1kuc2hvd01hcms9ZmFsc2V9ZWxzZXtpZighdGhpcy5zaG93VGlja01hcmtzKXtZLnNob3dNYXJrPWZhbHNlfX1ZLnNldFRpY2soYWQsdGhpcy5uYW1lKTt0aGlzLl90aWNrcy5wdXNoKFkpfX19fWlmKHRoaXMudGlja0luc2V0KXt0aGlzLm1pbj10aGlzLm1pbi10aGlzLnRpY2tJbnNldCpPO3RoaXMubWF4PXRoaXMubWF4K3RoaXMudGlja0luc2V0Kk99aWYodGhpcy5fZGFUaWNrSW50ZXJ2YWw9PW51bGwpe3RoaXMuX2RhVGlja0ludGVydmFsPXRoaXMuZGFUaWNrSW50ZXJ2YWx9WD1udWxsfX0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.donutRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuRG9udXRSZW5kZXJlcgogICAgICogUGx1Z2luIHJlbmRlcmVyIHRvIGRyYXcgYSBkb251dCBjaGFydC4KICAgICAqIHggdmFsdWVzLCBpZiBwcmVzZW50LCB3aWxsIGJlIHVzZWQgYXMgc2xpY2UgbGFiZWxzLgogICAgICogeSB2YWx1ZXMgZ2l2ZSBzbGljZSBzaXplLgogICAgICogCiAgICAgKiBUbyB1c2UgdGhpcyByZW5kZXJlciwgeW91IG5lZWQgdG8gaW5jbHVkZSB0aGUgCiAgICAgKiBkb251dCByZW5kZXJlciBwbHVnaW4sIGZvciBleGFtcGxlOgogICAgICogCiAgICAgKiA+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InBsdWdpbnMvanFwbG90LmRvbnV0UmVuZGVyZXIuanMiPjwvc2NyaXB0PgogICAgICogCiAgICAgKiBQcm9wZXJ0aWVzIGRlc2NyaWJlZCBoZXJlIGFyZSBwYXNzZWQgaW50byB0aGUgJC5qcXBsb3QgZnVuY3Rpb24KICAgICAqIGFzIG9wdGlvbnMgb24gdGhlIHNlcmllcyByZW5kZXJlci4gIEZvciBleGFtcGxlOgogICAgICogCiAgICAgKiA+IHBsb3QyID0gJC5qcXBsb3QoJ2NoYXJ0MicsIFtzMSwgczJdLCB7CiAgICAgKiA+ICAgICBzZXJpZXNEZWZhdWx0czogewogICAgICogPiAgICAgICAgIHJlbmRlcmVyOiQuanFwbG90LkRvbnV0UmVuZGVyZXIsCiAgICAgKiA+ICAgICAgICAgcmVuZGVyZXJPcHRpb25zOnsKICAgICAqID4gICAgICAgICAgICAgIHNsaWNlTWFyZ2luOiAyLAogICAgICogPiAgICAgICAgICAgICAgaW5uZXJEaWFtZXRlcjogMTEwLAogICAgICogPiAgICAgICAgICAgICAgc3RhcnRBbmdsZTogLTkwCiAgICAgKiA+ICAgICAgICAgIH0KICAgICAqID4gICAgICB9CiAgICAgKiA+IH0pOwogICAgICogCiAgICAgKiBBIGRvbnV0IHBsb3Qgd2lsbCB0cmlnZ2VyIGV2ZW50cyBvbiB0aGUgcGxvdCB0YXJnZXQKICAgICAqIGFjY29yZGluZyB0byB1c2VyIGludGVyYWN0aW9uLiAgQWxsIGV2ZW50cyByZXR1cm4gdGhlIGV2ZW50IG9iamVjdCwKICAgICAqIHRoZSBzZXJpZXMgaW5kZXgsIHRoZSBwb2ludCAoc2xpY2UpIGluZGV4LCBhbmQgdGhlIHBvaW50IGRhdGEgZm9yIAogICAgICogdGhlIGFwcHJvcHJpYXRlIHNsaWNlLgogICAgICogCiAgICAgKiAnanFwbG90RGF0YU1vdXNlT3ZlcicgLSB0cmlnZ2VyZWQgd2hlbiB1c2VyIG1vdXNlaW5nIG92ZXIgYSBzbGljZS4KICAgICAqICdqcXBsb3REYXRhSGlnaGxpZ2h0JyAtIHRyaWdnZXJlZCB0aGUgZmlyc3QgdGltZSB1c2VyIG1vdXNlcyBvdmVyIGEgc2xpY2UsCiAgICAgKiBpZiBoaWdobGlnaHRpbmcgaXMgZW5hYmxlZC4KICAgICAqICdqcXBsb3REYXRhVW5oaWdobGlnaHQnIC0gdHJpZ2dlcmVkIHdoZW4gYSB1c2VyIG1vdmVzIHRoZSBtb3VzZSBvdXQgb2YKICAgICAqIGEgaGlnaGxpZ2h0ZWQgc2xpY2UuCiAgICAgKiAnanFwbG90RGF0YUNsaWNrJyAtIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiBhIHNsaWNlLgogICAgICogJ2pxcGxvdERhdGFSaWdodENsaWNrJyAtIHRpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgcmlnaHQgY2xpY2tzIG9uIGEgc2xpY2UgaWYKICAgICAqIHRoZSAiY2FwdHVyZVJpZ2h0Q2xpY2siIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZSBvbiB0aGUgcGxvdC4KICAgICAqLwogICAgJC5qcXBsb3QuRG9udXRSZW5kZXJlciA9IGZ1bmN0aW9uKCl7CiAgICAgICAgJC5qcXBsb3QuTGluZVJlbmRlcmVyLmNhbGwodGhpcyk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5Eb251dFJlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTsKICAgICQuanFwbG90LkRvbnV0UmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuRG9udXRSZW5kZXJlcjsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYSBzZXJpZXMKICAgICQuanFwbG90LkRvbnV0UmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zLCBwbG90KSB7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAvLwogICAgICAgIC8vIHByb3A6IGRpYW1ldGVyCiAgICAgICAgLy8gT3V0ZXIgZGlhbWV0ZXIgb2YgdGhlIGRvbnV0LCBhdXRvIGNvbXB1dGVkIGJ5IGRlZmF1bHQKICAgICAgICB0aGlzLmRpYW1ldGVyID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBpbm5lckRpYW1ldGVyCiAgICAgICAgLy8gSW5uZXIgZGlhbWV0ZXIgb2YgdGhlIGRvbnV0LCBhdXRvIGNhbGN1bGF0ZWQgYnkgZGVmYXVsdC4KICAgICAgICAvLyBJZiBzcGVjaWZpZWQgd2lsbCBvdmVycmlkZSB0aGlja25lc3MgdmFsdWUuCiAgICAgICAgdGhpcy5pbm5lckRpYW1ldGVyID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiB0aGlja25lc3MKICAgICAgICAvLyB0aGlja25lc3Mgb2YgdGhlIGRvbnV0LCBhdXRvIGNvbXB1dGVkIGJ5IGRlZmF1bHQKICAgICAgICAvLyBPdmVycmlkZGVuIGJ5IGlmIGlubmVyRGlhbWV0ZXIgaXMgc3BlY2lmaWVkLgogICAgICAgIHRoaXMudGhpY2tuZXNzID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBwYWRkaW5nCiAgICAgICAgLy8gcGFkZGluZyBiZXR3ZWVuIHRoZSBkb251dCBhbmQgcGxvdCBlZGdlcywgbGVnZW5kLCBldGMuCiAgICAgICAgdGhpcy5wYWRkaW5nID0gMjA7CiAgICAgICAgLy8gcHJvcDogc2xpY2VNYXJnaW4KICAgICAgICAvLyBhbmd1bGFyIHNwYWNpbmcgYmV0d2VlbiBkb251dCBzbGljZXMgaW4gZGVncmVlcy4KICAgICAgICB0aGlzLnNsaWNlTWFyZ2luID0gMDsKICAgICAgICAvLyBwcm9wOiByaW5nTWFyZ2luCiAgICAgICAgLy8gcGl4ZWwgZGlzdGFuY2UgYmV0d2VlbiByaW5ncywgb3IgbXVsdGlwbGUgc2VyaWVzIGluIGEgZG9udXQgcGxvdC4KICAgICAgICAvLyBudWxsIHdpbGwgY29tcHV0ZSByaW5nTWFyZ2luIGJhc2VkIG9uIHNsaWNlTWFyZ2luLgogICAgICAgIHRoaXMucmluZ01hcmdpbiA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogZmlsbAogICAgICAgIC8vIHRydWUgb3IgZmFsc2UsIHdoZXRoZXIgdG8gZmlsIHRoZSBzbGljZXMuCiAgICAgICAgdGhpcy5maWxsID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBzaGFkb3dPZmZzZXQKICAgICAgICAvLyBvZmZzZXQgb2YgdGhlIHNoYWRvdyBmcm9tIHRoZSBzbGljZSBhbmQgb2Zmc2V0IG9mIAogICAgICAgIC8vIGVhY2ggc3VjY2VzaXZlIHN0cm9rZSBvZiB0aGUgc2hhZG93IGZyb20gdGhlIGxhc3QuCiAgICAgICAgdGhpcy5zaGFkb3dPZmZzZXQgPSAyOwogICAgICAgIC8vIHByb3A6IHNoYWRvd0FscGhhCiAgICAgICAgLy8gdHJhbnNwYXJlbmN5IG9mIHRoZSBzaGFkb3cgKDAgPSB0cmFuc3BhcmVudCwgMSA9IG9wYXF1ZSkKICAgICAgICB0aGlzLnNoYWRvd0FscGhhID0gMC4wNzsKICAgICAgICAvLyBwcm9wOiBzaGFkb3dEZXB0aAogICAgICAgIC8vIG51bWJlciBvZiBzdHJva2VzIHRvIGFwcGx5IHRvIHRoZSBzaGFkb3csIAogICAgICAgIC8vIGVhY2ggc3Ryb2tlIG9mZnNldCBzaGFkb3dPZmZzZXQgZnJvbSB0aGUgbGFzdC4KICAgICAgICB0aGlzLnNoYWRvd0RlcHRoID0gNTsKICAgICAgICAvLyBwcm9wOiBoaWdobGlnaHRNb3VzZU92ZXIKICAgICAgICAvLyBUcnVlIHRvIGhpZ2hsaWdodCBzbGljZSB3aGVuIG1vdXNlZCBvdmVyLgogICAgICAgIC8vIFRoaXMgbXVzdCBiZSBmYWxzZSB0byBlbmFibGUgaGlnaGxpZ2h0TW91c2VEb3duIHRvIGhpZ2hsaWdodCB3aGVuIGNsaWNraW5nIG9uIGEgc2xpY2UuCiAgICAgICAgdGhpcy5oaWdobGlnaHRNb3VzZU92ZXIgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IGhpZ2hsaWdodE1vdXNlRG93bgogICAgICAgIC8vIFRydWUgdG8gaGlnaGxpZ2h0IHdoZW4gYSBtb3VzZSBidXR0b24gaXMgcHJlc3NlZCBvdmVyIGEgc2xpY2UuCiAgICAgICAgLy8gVGhpcyB3aWxsIGJlIGRpc2FibGVkIGlmIGhpZ2hsaWdodE1vdXNlT3ZlciBpcyB0cnVlLgogICAgICAgIHRoaXMuaGlnaGxpZ2h0TW91c2VEb3duID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogaGlnaGxpZ2h0Q29sb3JzCiAgICAgICAgLy8gYW4gYXJyYXkgb2YgY29sb3JzIHRvIHVzZSB3aGVuIGhpZ2hsaWdodGluZyBhIHNsaWNlLgogICAgICAgIHRoaXMuaGlnaGxpZ2h0Q29sb3JzID0gW107CiAgICAgICAgLy8gcHJvcDogZGF0YUxhYmVscwogICAgICAgIC8vIEVpdGhlciAnbGFiZWwnLCAndmFsdWUnLCAncGVyY2VudCcgb3IgYW4gYXJyYXkgb2YgbGFiZWxzIHRvIHBsYWNlIG9uIHRoZSBwaWUgc2xpY2VzLgogICAgICAgIC8vIERlZmF1bHRzIHRvIHBlcmNlbnRhZ2Ugb2YgZWFjaCBwaWUgc2xpY2UuCiAgICAgICAgdGhpcy5kYXRhTGFiZWxzID0gJ3BlcmNlbnQnOwogICAgICAgIC8vIHByb3A6IHNob3dEYXRhTGFiZWxzCiAgICAgICAgLy8gdHJ1ZSB0byBzaG93IGRhdGEgbGFiZWxzIG9uIHNsaWNlcy4KICAgICAgICB0aGlzLnNob3dEYXRhTGFiZWxzID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogZGF0YUxhYmVsRm9ybWF0U3RyaW5nCiAgICAgICAgLy8gRm9ybWF0IHN0cmluZyBmb3IgZGF0YSBsYWJlbHMuICBJZiBub25lLCAnJXMnIGlzIHVzZWQgZm9yICJsYWJlbCIgYW5kIGZvciBhcnJheXMsICclZCcgZm9yIHZhbHVlIGFuZCAnJWQlJScgZm9yIHBlcmNlbnRhZ2UuCiAgICAgICAgdGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmcgPSBudWxsOwogICAgICAgIC8vIHByb3A6IGRhdGFMYWJlbFRocmVzaG9sZAogICAgICAgIC8vIFRocmVzaGhvbGQgaW4gcGVyY2VudGFnZSAoMCAtIDEwMCkgb2YgcGllIGFyZWEsIGJlbG93IHdoaWNoIG5vIGxhYmVsIHdpbGwgYmUgZGlzcGxheWVkLgogICAgICAgIC8vIFRoaXMgYXBwbGllcyB0byBhbGwgbGFiZWwgdHlwZXMsIG5vdCBqdXN0IHRvIHBlcmNlbnRhZ2UgbGFiZWxzLgogICAgICAgIHRoaXMuZGF0YUxhYmVsVGhyZXNob2xkID0gMzsKICAgICAgICAvLyBwcm9wOiBkYXRhTGFiZWxQb3NpdGlvbkZhY3RvcgogICAgICAgIC8vIEEgTXVsdGlwbGllciAoMC0xKSBvZiB0aGUgcGllIHJhZGl1cyB3aGljaCBjb250cm9scyBwb3NpdGlvbiBvZiBsYWJlbCBvbiBzbGljZS4KICAgICAgICAvLyBJbmNyZWFzaW5nIHdpbGwgc2xpZGUgbGFiZWwgdG93YXJkIGVkZ2Ugb2YgcGllLCBkZWNyZWFzaW5nIHdpbGwgc2xpZGUgbGFiZWwgdG93YXJkIGNlbnRlciBvZiBwaWUuCiAgICAgICAgdGhpcy5kYXRhTGFiZWxQb3NpdGlvbkZhY3RvciA9IDAuNDsKICAgICAgICAvLyBwcm9wOiBkYXRhTGFiZWxOdWRnZQogICAgICAgIC8vIE51bWJlciBvZiBwaXhlbHMgdG8gc2xpZGUgdGhlIGxhYmVsIGF3YXkgZnJvbSAoKykgb3IgdG93YXJkICgtKSB0aGUgY2VudGVyIG9mIHRoZSBwaWUuCiAgICAgICAgdGhpcy5kYXRhTGFiZWxOdWRnZSA9IDA7CiAgICAgICAgLy8gcHJvcDogc3RhcnRBbmdsZQogICAgICAgIC8vIEFuZ2xlIHRvIHN0YXJ0IGRyYXdpbmcgZG9udXQgaW4gZGVncmVlcy4gIAogICAgICAgIC8vIEFjY29yZGluZyB0byBvcmllbnRhdGlvbiBvZiBjYW52YXMgY29vcmRpbmF0ZSBzeXN0ZW06CiAgICAgICAgLy8gMCA9IG9uIHRoZSBwb3NpdGl2ZSB4IGF4aXMKICAgICAgICAvLyAtOTAgPSBvbiB0aGUgcG9zaXRpdmUgeSBheGlzLgogICAgICAgIC8vIDkwID0gb24gdGhlIG5lZ2FpdmUgeSBheGlzLgogICAgICAgIC8vIDE4MCBvciAtIDE4MCA9IG9uIHRoZSBuZWdhdGl2ZSB4IGF4aXMuCiAgICAgICAgdGhpcy5zdGFydEFuZ2xlID0gMDsKICAgICAgICB0aGlzLnRpY2tSZW5kZXJlciA9ICQuanFwbG90LkRvbnV0VGlja1JlbmRlcmVyOwogICAgICAgIC8vIFVzZWQgYXMgY2hlY2sgZm9yIGNvbmRpdGlvbnMgd2hlcmUgZG9udXQgc2hvdWxkbid0IGJlIGRyYXduLgogICAgICAgIHRoaXMuX2RyYXdEYXRhID0gdHJ1ZTsKICAgICAgICB0aGlzLl90eXBlID0gJ2RvbnV0JzsKICAgICAgICAKICAgICAgICAvLyBpZiB1c2VyIGhhcyBwYXNzZWQgaW4gaGlnaGxpZ2h0TW91c2VEb3duIG9wdGlvbiBhbmQgbm90IHNldCBoaWdobGlnaHRNb3VzZU92ZXIsIGRpc2FibGUgaGlnaGxpZ2h0TW91c2VPdmVyCiAgICAgICAgaWYgKG9wdGlvbnMuaGlnaGxpZ2h0TW91c2VEb3duICYmIG9wdGlvbnMuaGlnaGxpZ2h0TW91c2VPdmVyID09IG51bGwpIHsKICAgICAgICAgICAgb3B0aW9ucy5oaWdobGlnaHRNb3VzZU92ZXIgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CiAgICAgICAgaWYgKHRoaXMuZGlhbWV0ZXIgIT0gbnVsbCkgewogICAgICAgICAgICB0aGlzLmRpYW1ldGVyID0gdGhpcy5kaWFtZXRlciAtIHRoaXMuc2xpY2VNYXJnaW47CiAgICAgICAgfQogICAgICAgIHRoaXMuX2RpYW1ldGVyID0gbnVsbDsKICAgICAgICB0aGlzLl9pbm5lckRpYW1ldGVyID0gbnVsbDsKICAgICAgICB0aGlzLl9yYWRpdXMgPSBudWxsOwogICAgICAgIHRoaXMuX2lubmVyUmFkaXVzID0gbnVsbDsKICAgICAgICB0aGlzLl90aGlja25lc3MgPSBudWxsOwogICAgICAgIC8vIHJlZmVyZW5jZXMgdG8gdGhlIHByZXZpb3VzIHNlcmllcyBpbiB0aGUgcGxvdCB0byBwcm9wZXJseSBjYWxjdWxhdGUgZGlhbWV0ZXJzCiAgICAgICAgLy8gYW5kIHRoaWNrbmVzc2VzIG9mIG5lc3RlZCByaW5ncy4KICAgICAgICB0aGlzLl9wcmV2aW91c1NlcmllcyA9IFtdOwogICAgICAgIHRoaXMuX251bWJlclNlcmllcyA9IDE7CiAgICAgICAgLy8gYXJyYXkgb2YgW3N0YXJ0LGVuZF0gYW5nbGVzIGFycmF5cywgb25lIGZvciBlYWNoIHNsaWNlLiAgSW4gcmFkaWFucy4KICAgICAgICB0aGlzLl9zbGljZUFuZ2xlcyA9IFtdOwogICAgICAgIC8vIGluZGV4IG9mIHRoZSBjdXJyZW50eSBoaWdobGlnaHRlZCBwb2ludCwgaWYgYW55CiAgICAgICAgdGhpcy5faGlnaGxpZ2h0ZWRQb2ludCA9IG51bGw7CiAgICAgICAgCiAgICAgICAgLy8gc2V0IGhpZ2hsaWdodCBjb2xvcnMgaWYgbm9uZSBwcm92aWRlZAogICAgICAgIGlmICh0aGlzLmhpZ2hsaWdodENvbG9ycy5sZW5ndGggPT0gMCkgewogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5zZXJpZXNDb2xvcnMubGVuZ3RoOyBpKyspewogICAgICAgICAgICAgICAgdmFyIHJnYmEgPSAkLmpxcGxvdC5nZXRDb2xvckNvbXBvbmVudHModGhpcy5zZXJpZXNDb2xvcnNbaV0pOwogICAgICAgICAgICAgICAgdmFyIG5ld3JnYiA9IFtyZ2JhWzBdLCByZ2JhWzFdLCByZ2JhWzJdXTsKICAgICAgICAgICAgICAgIHZhciBzdW0gPSBuZXdyZ2JbMF0gKyBuZXdyZ2JbMV0gKyBuZXdyZ2JbMl07CiAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8MzsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBkYXJrZW5pbmcsIGxvd2VzdCBjb2xvciBjb21wb25lbnQgY2FuIGJlIGlzIDYwLgogICAgICAgICAgICAgICAgICAgIG5ld3JnYltqXSA9IChzdW0gPiA1NzApID8gIG5ld3JnYltqXSAqIDAuOCA6IG5ld3JnYltqXSArIDAuMyAqICgyNTUgLSBuZXdyZ2Jbal0pOwogICAgICAgICAgICAgICAgICAgIG5ld3JnYltqXSA9IHBhcnNlSW50KG5ld3JnYltqXSwgMTApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRDb2xvcnMucHVzaCgncmdiKCcrbmV3cmdiWzBdKycsJytuZXdyZ2JbMV0rJywnK25ld3JnYlsyXSsnKScpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHBsb3QucG9zdFBhcnNlT3B0aW9uc0hvb2tzLmFkZE9uY2UocG9zdFBhcnNlT3B0aW9ucyk7CiAgICAgICAgcGxvdC5wb3N0SW5pdEhvb2tzLmFkZE9uY2UocG9zdEluaXQpOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdE1vdXNlTW92ZScsIGhhbmRsZU1vdmUpOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdE1vdXNlRG93bicsIGhhbmRsZU1vdXNlRG93bik7CiAgICAgICAgcGxvdC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgnanFwbG90TW91c2VVcCcsIGhhbmRsZU1vdXNlVXApOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdENsaWNrJywgaGFuZGxlQ2xpY2spOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdFJpZ2h0Q2xpY2snLCBoYW5kbGVSaWdodENsaWNrKTsKICAgICAgICBwbG90LnBvc3REcmF3SG9va3MuYWRkT25jZShwb3N0UGxvdERyYXcpOwogICAgICAgIAogICAgICAgIAogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRG9udXRSZW5kZXJlci5wcm90b3R5cGUuc2V0R3JpZERhdGEgPSBmdW5jdGlvbihwbG90KSB7CiAgICAgICAgLy8gc2V0IGdyaWREYXRhIHByb3BlcnR5LiAgVGhpcyB3aWxsIGhvbGQgYW5nbGUgaW4gcmFkaWFucyBvZiBlYWNoIGRhdGEgcG9pbnQuCiAgICAgICAgdmFyIHN0YWNrID0gW107CiAgICAgICAgdmFyIHRkID0gW107CiAgICAgICAgdmFyIHNhID0gdGhpcy5zdGFydEFuZ2xlLzE4MCpNYXRoLlBJOwogICAgICAgIHZhciB0b3QgPSAwOwogICAgICAgIC8vIGRvbid0IGtub3cgaWYgd2UgaGF2ZSBhbnkgdmFsaWQgZGF0YSB5ZXQsIHNvIHNldCBwbG90IHRvIG5vdCBkcmF3LgogICAgICAgIHRoaXMuX2RyYXdEYXRhID0gZmFsc2U7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAgIGlmICh0aGlzLmRhdGFbaV1bMV0gIT0gMCkgewogICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSBkYXRhLCBPLksuIHRvIGRyYXcuCiAgICAgICAgICAgICAgICB0aGlzLl9kcmF3RGF0YSA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc3RhY2sucHVzaCh0aGlzLmRhdGFbaV1bMV0pOwogICAgICAgICAgICB0ZC5wdXNoKFt0aGlzLmRhdGFbaV1bMF1dKTsKICAgICAgICAgICAgaWYgKGk+MCkgewogICAgICAgICAgICAgICAgc3RhY2tbaV0gKz0gc3RhY2tbaS0xXTsKICAgICAgICAgICAgfQogICAgICAgICAgICB0b3QgKz0gdGhpcy5kYXRhW2ldWzFdOwogICAgICAgIH0KICAgICAgICB2YXIgZmFjdCA9IE1hdGguUEkqMi9zdGFja1tzdGFjay5sZW5ndGggLSAxXTsKICAgICAgICAKICAgICAgICBmb3IgKHZhciBpPTA7IGk8c3RhY2subGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdGRbaV1bMV0gPSBzdGFja1tpXSAqIGZhY3Q7CiAgICAgICAgICAgIHRkW2ldWzJdID0gdGhpcy5kYXRhW2ldWzFdL3RvdDsKICAgICAgICB9CiAgICAgICAgdGhpcy5ncmlkRGF0YSA9IHRkOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRG9udXRSZW5kZXJlci5wcm90b3R5cGUubWFrZUdyaWREYXRhID0gZnVuY3Rpb24oZGF0YSwgcGxvdCkgewogICAgICAgIHZhciBzdGFjayA9IFtdOwogICAgICAgIHZhciB0ZCA9IFtdOwogICAgICAgIHZhciB0b3QgPSAwOwogICAgICAgIHZhciBzYSA9IHRoaXMuc3RhcnRBbmdsZS8xODAqTWF0aC5QSTsKICAgICAgICAvLyBkb24ndCBrbm93IGlmIHdlIGhhdmUgYW55IHZhbGlkIGRhdGEgeWV0LCBzbyBzZXQgcGxvdCB0byBub3QgZHJhdy4KICAgICAgICB0aGlzLl9kcmF3RGF0YSA9IGZhbHNlOwogICAgICAgIGZvciAodmFyIGk9MDsgaTxkYXRhLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVtpXVsxXSAhPSAwKSB7CiAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIGRhdGEsIE8uSy4gdG8gZHJhdy4KICAgICAgICAgICAgICAgIHRoaXMuX2RyYXdEYXRhID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGFjay5wdXNoKGRhdGFbaV1bMV0pOwogICAgICAgICAgICB0ZC5wdXNoKFtkYXRhW2ldWzBdXSk7CiAgICAgICAgICAgIGlmIChpPjApIHsKICAgICAgICAgICAgICAgIHN0YWNrW2ldICs9IHN0YWNrW2ktMV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdG90ICs9IGRhdGFbaV1bMV07CiAgICAgICAgfQogICAgICAgIHZhciBmYWN0ID0gTWF0aC5QSSoyL3N0YWNrW3N0YWNrLmxlbmd0aCAtIDFdOwogICAgICAgIAogICAgICAgIGZvciAodmFyIGk9MDsgaTxzdGFjay5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB0ZFtpXVsxXSA9IHN0YWNrW2ldICogZmFjdDsKICAgICAgICAgICAgdGRbaV1bMl0gPSBkYXRhW2ldWzFdL3RvdDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRkOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRG9udXRSZW5kZXJlci5wcm90b3R5cGUuZHJhd1NsaWNlID0gZnVuY3Rpb24gKGN0eCwgYW5nMSwgYW5nMiwgY29sb3IsIGlzU2hhZG93KSB7CiAgICAgICAgdmFyIHIgPSB0aGlzLl9kaWFtZXRlciAvIDI7CiAgICAgICAgdmFyIHJpID0gciAtIHRoaXMuX3RoaWNrbmVzczsKICAgICAgICB2YXIgZmlsbCA9IHRoaXMuZmlsbDsKICAgICAgICAvLyB2YXIgbGluZVdpZHRoID0gdGhpcy5saW5lV2lkdGg7CiAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICBjdHgudHJhbnNsYXRlKHRoaXMuX2NlbnRlclswXSwgdGhpcy5fY2VudGVyWzFdKTsKICAgICAgICAvLyBjdHgudHJhbnNsYXRlKHRoaXMuc2xpY2VNYXJnaW4qTWF0aC5jb3MoKGFuZzErYW5nMikvMiksIHRoaXMuc2xpY2VNYXJnaW4qTWF0aC5zaW4oKGFuZzErYW5nMikvMikpOwogICAgICAgIAogICAgICAgIGlmIChpc1NoYWRvdykgewogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5zaGFkb3dEZXB0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBjdHguc2F2ZSgpOwogICAgICAgICAgICAgICAgY3R4LnRyYW5zbGF0ZSh0aGlzLnNoYWRvd09mZnNldCpNYXRoLmNvcyh0aGlzLnNoYWRvd0FuZ2xlLzE4MCpNYXRoLlBJKSwgdGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5zaW4odGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSkpOwogICAgICAgICAgICAgICAgZG9EcmF3KCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGRvRHJhdygpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBmdW5jdGlvbiBkb0RyYXcgKCkgewogICAgICAgICAgICAvLyBGaXggZm9yIElFIGFuZCBDaHJvbWUgdGhhdCBjYW4ndCBzZWVtIHRvIGRyYXcgY2lyY2xlcyBjb3JyZWN0bHkuCiAgICAgICAgICAgIC8vIGFuZzIgc2hvdWxkIGFsd2F5cyBiZSA8PSAyIHBpIHNpbmNlIHRoYXQgaXMgdGhlIHdheSB0aGUgZGF0YSBpcyBjb252ZXJ0ZWQuCiAgICAgICAgICAgICBpZiAoYW5nMiA+IDYuMjgyICsgdGhpcy5zdGFydEFuZ2xlKSB7CiAgICAgICAgICAgICAgICBhbmcyID0gNi4yODIgKyB0aGlzLnN0YXJ0QW5nbGU7CiAgICAgICAgICAgICAgICBpZiAoYW5nMSA+IGFuZzIpIHsKICAgICAgICAgICAgICAgICAgICBhbmcxID0gNi4yODEgKyB0aGlzLnN0YXJ0QW5nbGU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gRml4IGZvciBJRSwgd2hlcmUgaXQgY2FuJ3Qgc2VlbSB0byBoYW5kbGUgMCBkZWdyZWUgYW5nbGVzLiAgQWxzbyBhdm9pZHMKICAgICAgICAgICAgLy8gdWdseSBsaW5lIG9uIHVuZmlsbGVkIGRvbnV0cy4KICAgICAgICAgICAgaWYgKGFuZzEgPj0gYW5nMikgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTsgIAogICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gY29sb3I7CiAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IGNvbG9yOwogICAgICAgICAgICAvLyBjdHgubGluZVdpZHRoID0gbGluZVdpZHRoOwogICAgICAgICAgICBjdHguYXJjKDAsIDAsIHIsIGFuZzEsIGFuZzIsIGZhbHNlKTsKICAgICAgICAgICAgY3R4LmxpbmVUbyhyaSpNYXRoLmNvcyhhbmcyKSwgcmkqTWF0aC5zaW4oYW5nMikpOwogICAgICAgICAgICBjdHguYXJjKDAsMCwgcmksIGFuZzIsIGFuZzEsIHRydWUpOwogICAgICAgICAgICBjdHguY2xvc2VQYXRoKCk7CiAgICAgICAgICAgIGlmIChmaWxsKSB7CiAgICAgICAgICAgICAgICBjdHguZmlsbCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgY3R4LnN0cm9rZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChpc1NoYWRvdykgewogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5zaGFkb3dEZXB0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBzZXJpZXMKICAgICQuanFwbG90LkRvbnV0UmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbiAoY3R4LCBnZCwgb3B0aW9ucywgcGxvdCkgewogICAgICAgIHZhciBpOwogICAgICAgIHZhciBvcHRzID0gKG9wdGlvbnMgIT0gdW5kZWZpbmVkKSA/IG9wdGlvbnMgOiB7fTsKICAgICAgICAvLyBvZmZzZXQgYW5kIGRpcmVjdGlvbiBvZiBvZmZzZXQgZHVlIHRvIGxlZ2VuZCBwbGFjZW1lbnQKICAgICAgICB2YXIgb2ZmeCA9IDA7CiAgICAgICAgdmFyIG9mZnkgPSAwOwogICAgICAgIHZhciB0cmFucyA9IDE7CiAgICAgICAgLy8gdmFyIGNvbG9yR2VuZXJhdG9yID0gbmV3IHRoaXMuY29sb3JHZW5lcmF0b3IodGhpcy5zZXJpZXNDb2xvcnMpOwogICAgICAgIGlmIChvcHRpb25zLmxlZ2VuZEluZm8gJiYgb3B0aW9ucy5sZWdlbmRJbmZvLnBsYWNlbWVudCA9PSAnaW5zaWRlR3JpZCcpIHsKICAgICAgICAgICAgdmFyIGxpID0gb3B0aW9ucy5sZWdlbmRJbmZvOwogICAgICAgICAgICBzd2l0Y2ggKGxpLmxvY2F0aW9uKSB7CiAgICAgICAgICAgICAgICBjYXNlICdudyc6CiAgICAgICAgICAgICAgICAgICAgb2ZmeCA9IGxpLndpZHRoICsgbGkueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3cnOgogICAgICAgICAgICAgICAgICAgIG9mZnggPSBsaS53aWR0aCArIGxpLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdzdyc6CiAgICAgICAgICAgICAgICAgICAgb2ZmeCA9IGxpLndpZHRoICsgbGkueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ25lJzoKICAgICAgICAgICAgICAgICAgICBvZmZ4ID0gbGkud2lkdGggKyBsaS54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIHRyYW5zID0gLTE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdlJzoKICAgICAgICAgICAgICAgICAgICBvZmZ4ID0gbGkud2lkdGggKyBsaS54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIHRyYW5zID0gLTE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdzZSc6CiAgICAgICAgICAgICAgICAgICAgb2ZmeCA9IGxpLndpZHRoICsgbGkueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICB0cmFucyA9IC0xOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnbic6CiAgICAgICAgICAgICAgICAgICAgb2ZmeSA9IGxpLmhlaWdodCArIGxpLnlvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgICAgICAgICBvZmZ5ID0gbGkuaGVpZ2h0ICsgbGkueW9mZnNldDsKICAgICAgICAgICAgICAgICAgICB0cmFucyA9IC0xOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICB2YXIgc2hhZG93ID0gKG9wdHMuc2hhZG93ICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNoYWRvdyA6IHRoaXMuc2hhZG93OwogICAgICAgIHZhciBzaG93TGluZSA9IChvcHRzLnNob3dMaW5lICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNob3dMaW5lIDogdGhpcy5zaG93TGluZTsKICAgICAgICB2YXIgZmlsbCA9IChvcHRzLmZpbGwgIT0gdW5kZWZpbmVkKSA/IG9wdHMuZmlsbCA6IHRoaXMuZmlsbDsKICAgICAgICB2YXIgY3cgPSBjdHguY2FudmFzLndpZHRoOwogICAgICAgIHZhciBjaCA9IGN0eC5jYW52YXMuaGVpZ2h0OwogICAgICAgIHZhciB3ID0gY3cgLSBvZmZ4IC0gMiAqIHRoaXMucGFkZGluZzsKICAgICAgICB2YXIgaCA9IGNoIC0gb2ZmeSAtIDIgKiB0aGlzLnBhZGRpbmc7CiAgICAgICAgdmFyIG1pbmRpbSA9IE1hdGgubWluKHcsaCk7CiAgICAgICAgdmFyIGQgPSBtaW5kaW07CiAgICAgICAgdmFyIHJpbmdtYXJnaW4gPSAgKHRoaXMucmluZ01hcmdpbiA9PSBudWxsKSA/IHRoaXMuc2xpY2VNYXJnaW4gKiAyLjAgOiB0aGlzLnJpbmdNYXJnaW47CiAgICAgICAgCiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMuX3ByZXZpb3VzU2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGQgLT0gMi4wICogdGhpcy5fcHJldmlvdXNTZXJpZXNbaV0uX3RoaWNrbmVzcyArIDIuMCAqIHJpbmdtYXJnaW47CiAgICAgICAgfQogICAgICAgIHRoaXMuX2RpYW1ldGVyID0gdGhpcy5kaWFtZXRlciB8fCBkOwogICAgICAgIGlmICh0aGlzLmlubmVyRGlhbWV0ZXIgIT0gbnVsbCkgewogICAgICAgICAgICB2YXIgb2QgPSAodGhpcy5fbnVtYmVyU2VyaWVzID4gMSAmJiB0aGlzLmluZGV4ID4gMCkgPyB0aGlzLl9wcmV2aW91c1Nlcmllc1swXS5fZGlhbWV0ZXIgOiB0aGlzLl9kaWFtZXRlcjsKICAgICAgICAgICAgdGhpcy5fdGhpY2tuZXNzID0gdGhpcy50aGlja25lc3MgfHwgKG9kIC0gdGhpcy5pbm5lckRpYW1ldGVyIC0gMi4wKnJpbmdtYXJnaW4qdGhpcy5fbnVtYmVyU2VyaWVzKSAvIHRoaXMuX251bWJlclNlcmllcy8yLjA7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICB0aGlzLl90aGlja25lc3MgPSB0aGlzLnRoaWNrbmVzcyB8fCBtaW5kaW0gLyAyIC8gKHRoaXMuX251bWJlclNlcmllcyArIDEpICogMC44NTsKICAgICAgICB9CgogICAgICAgIHZhciByID0gdGhpcy5fcmFkaXVzID0gdGhpcy5fZGlhbWV0ZXIvMjsKICAgICAgICB0aGlzLl9pbm5lclJhZGl1cyA9IHRoaXMuX3JhZGl1cyAtIHRoaXMuX3RoaWNrbmVzczsKICAgICAgICB2YXIgc2EgPSB0aGlzLnN0YXJ0QW5nbGUgLyAxODAgKiBNYXRoLlBJOwogICAgICAgIHRoaXMuX2NlbnRlciA9IFsoY3cgLSB0cmFucyAqIG9mZngpLzIgKyB0cmFucyAqIG9mZngsIChjaCAtIHRyYW5zKm9mZnkpLzIgKyB0cmFucyAqIG9mZnldOwogICAgICAgIAogICAgICAgIGlmICh0aGlzLnNoYWRvdykgewogICAgICAgICAgICB2YXIgc2hhZG93Q29sb3IgPSAncmdiYSgwLDAsMCwnK3RoaXMuc2hhZG93QWxwaGErJyknOwogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8Z2QubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHZhciBhbmcxID0gKGkgPT0gMCkgPyBzYSA6IGdkW2ktMV1bMV0gKyBzYTsKICAgICAgICAgICAgICAgIC8vIEFkanVzdCBhbmcxIGFuZCBhbmcyIGZvciBzbGljZU1hcmdpbgogICAgICAgICAgICAgICAgYW5nMSArPSB0aGlzLnNsaWNlTWFyZ2luLzE4MCpNYXRoLlBJOwogICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5kcmF3U2xpY2UuY2FsbCAodGhpcywgY3R4LCBhbmcxLCBnZFtpXVsxXStzYSwgc2hhZG93Q29sb3IsIHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICBmb3IgKHZhciBpPTA7IGk8Z2QubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIGFuZzEgPSAoaSA9PSAwKSA/IHNhIDogZ2RbaS0xXVsxXSArIHNhOwogICAgICAgICAgICAvLyBBZGp1c3QgYW5nMSBhbmQgYW5nMiBmb3Igc2xpY2VNYXJnaW4KICAgICAgICAgICAgYW5nMSArPSB0aGlzLnNsaWNlTWFyZ2luLzE4MCpNYXRoLlBJOwogICAgICAgICAgICB2YXIgYW5nMiA9IGdkW2ldWzFdICsgc2E7CiAgICAgICAgICAgIHRoaXMuX3NsaWNlQW5nbGVzLnB1c2goW2FuZzEsIGFuZzJdKTsKICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5kcmF3U2xpY2UuY2FsbCAodGhpcywgY3R4LCBhbmcxLCBhbmcyLCB0aGlzLnNlcmllc0NvbG9yc1tpXSwgZmFsc2UpOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0RhdGFMYWJlbHMgJiYgZ2RbaV1bMl0qMTAwID49IHRoaXMuZGF0YUxhYmVsVGhyZXNob2xkKSB7CiAgICAgICAgICAgICAgICB2YXIgZnN0ciwgYXZnYW5nID0gKGFuZzErYW5nMikvMiwgbGFiZWw7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFMYWJlbHMgPT0gJ2xhYmVsJykgewogICAgICAgICAgICAgICAgICAgIGZzdHIgPSB0aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZyB8fCAnJXMnOwogICAgICAgICAgICAgICAgICAgIGxhYmVsID0gJC5qcXBsb3Quc3ByaW50Zihmc3RyLCBnZFtpXVswXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmRhdGFMYWJlbHMgPT0gJ3ZhbHVlJykgewogICAgICAgICAgICAgICAgICAgIGZzdHIgPSB0aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZyB8fCAnJWQnOwogICAgICAgICAgICAgICAgICAgIGxhYmVsID0gJC5qcXBsb3Quc3ByaW50Zihmc3RyLCB0aGlzLmRhdGFbaV1bMV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5kYXRhTGFiZWxzID09ICdwZXJjZW50JykgewogICAgICAgICAgICAgICAgICAgIGZzdHIgPSB0aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZyB8fCAnJWQlJSc7CiAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSAkLmpxcGxvdC5zcHJpbnRmKGZzdHIsIGdkW2ldWzJdKjEwMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmRhdGFMYWJlbHMuY29uc3RydWN0b3IgPT0gQXJyYXkpIHsKICAgICAgICAgICAgICAgICAgICBmc3RyID0gdGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmcgfHwgJyVzJzsKICAgICAgICAgICAgICAgICAgICBsYWJlbCA9ICQuanFwbG90LnNwcmludGYoZnN0ciwgdGhpcy5kYXRhTGFiZWxzW2ldKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGZhY3QgPSB0aGlzLl9pbm5lclJhZGl1cyArIHRoaXMuX3RoaWNrbmVzcyAqIHRoaXMuZGF0YUxhYmVsUG9zaXRpb25GYWN0b3IgKyB0aGlzLnNsaWNlTWFyZ2luICsgdGhpcy5kYXRhTGFiZWxOdWRnZTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIHggPSB0aGlzLl9jZW50ZXJbMF0gKyBNYXRoLmNvcyhhdmdhbmcpICogZmFjdCArIHRoaXMuY2FudmFzLl9vZmZzZXRzLmxlZnQ7CiAgICAgICAgICAgICAgICB2YXIgeSA9IHRoaXMuX2NlbnRlclsxXSArIE1hdGguc2luKGF2Z2FuZykgKiBmYWN0ICsgdGhpcy5jYW52YXMuX29mZnNldHMudG9wOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgbGFiZWxlbGVtID0gJCgnPHNwYW4gY2xhc3M9ImpxcGxvdC1kb251dC1zZXJpZXMganFwbG90LWRhdGEtbGFiZWwiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsiPicgKyBsYWJlbCArICc8L3NwYW4+JykuaW5zZXJ0QmVmb3JlKHBsb3QuZXZlbnRDYW52YXMuX2VsZW0pOwogICAgICAgICAgICAgICAgeCAtPSBsYWJlbGVsZW0ud2lkdGgoKS8yOwogICAgICAgICAgICAgICAgeSAtPSBsYWJlbGVsZW0uaGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgIHggPSBNYXRoLnJvdW5kKHgpOwogICAgICAgICAgICAgICAgeSA9IE1hdGgucm91bmQoeSk7CiAgICAgICAgICAgICAgICBsYWJlbGVsZW0uY3NzKHtsZWZ0OiB4LCB0b3A6IHl9KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAgICAgICAgCiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5Eb251dEF4aXNSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRG9udXRBeGlzUmVuZGVyZXIucHJvdG90eXBlID0gbmV3ICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlcigpOwogICAgJC5qcXBsb3QuRG9udXRBeGlzUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuRG9udXRBeGlzUmVuZGVyZXI7CiAgICAgICAgCiAgICAKICAgIC8vIFRoZXJlIGFyZSBubyB0cmFkaXRpb25hbCBheGVzIG9uIGEgZG9udXQgY2hhcnQuICBXZSBqdXN0IG5lZWQgdG8gcHJvdmlkZQogICAgLy8gZHVtbXkgb2JqZWN0cyB3aXRoIHByb3BlcnRpZXMgc28gdGhlIHBsb3Qgd2lsbCByZW5kZXIuCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBheGlzIG9iamVjdC4KICAgICQuanFwbG90LkRvbnV0QXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucyl7CiAgICAgICAgLy8KICAgICAgICB0aGlzLnRpY2tSZW5kZXJlciA9ICQuanFwbG90LkRvbnV0VGlja1JlbmRlcmVyOwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgIC8vIEkgZG9uJ3QgdGhpbmsgSSdtIGdvaW5nIHRvIG5lZWQgX2RhdGFCb3VuZHMgaGVyZS4KICAgICAgICAvLyBoYXZlIHRvIGdvIEF4aXMgc2NhbGluZyBpbiBhIHdheSB0byBmaXQgY2hhcnQgb250byBwbG90IGFyZWEKICAgICAgICAvLyBhbmQgcHJvdmlkZSB1MnAgYW5kIHAydSBmdW5jdGlvbmFsaXR5IGZvciBtb3VzZSBjdXJzb3IsIGV0Yy4KICAgICAgICAvLyBmb3IgY29udmllbmVuY2Ugc2V0IF9kYXRhQm91bmRzIHRvIDAgYW5kIDEwMCBhbmQKICAgICAgICAvLyBzZXQgbWluL21heCB0byAwIGFuZCAxMDAuCiAgICAgICAgdGhpcy5fZGF0YUJvdW5kcyA9IHttaW46MCwgbWF4OjEwMH07CiAgICAgICAgdGhpcy5taW4gPSAwOwogICAgICAgIHRoaXMubWF4ID0gMTAwOwogICAgICAgIHRoaXMuc2hvd1RpY2tzID0gZmFsc2U7CiAgICAgICAgdGhpcy50aWNrcyA9IFtdOwogICAgICAgIHRoaXMuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICB0aGlzLnNob3cgPSBmYWxzZTsgCiAgICB9OwogICAgCiAgICAKICAgIAogICAgCiAgICAkLmpxcGxvdC5Eb251dExlZ2VuZFJlbmRlcmVyID0gZnVuY3Rpb24oKXsKICAgICAgICAkLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyLmNhbGwodGhpcyk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5Eb251dExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyKCk7CiAgICAkLmpxcGxvdC5Eb251dExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LkRvbnV0TGVnZW5kUmVuZGVyZXI7CiAgICAKICAgIC8qKgogICAgICogQ2xhc3M6ICQuanFwbG90LkRvbnV0TGVnZW5kUmVuZGVyZXIKICAgICAqIExlZ2VuZCBSZW5kZXJlciBzcGVjaWZpYyB0byBkb251dCBwbG90cy4gIFNldCBieSBkZWZhdWx0CiAgICAgKiB3aGVuIHVzZXIgY3JlYXRlcyBhIGRvbnV0IHBsb3QuCiAgICAgKi8KICAgICQuanFwbG90LkRvbnV0TGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAvLwogICAgICAgIC8vIHByb3A6IG51bWJlclJvd3MKICAgICAgICAvLyBNYXhpbXVtIG51bWJlciBvZiByb3dzIGluIHRoZSBsZWdlbmQuICAwIG9yIG51bGwgZm9yIHVubGltaXRlZC4KICAgICAgICB0aGlzLm51bWJlclJvd3MgPSBudWxsOwogICAgICAgIC8vIHByb3A6IG51bWJlckNvbHVtbnMKICAgICAgICAvLyBNYXhpbXVtIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBsZWdlbmQuICAwIG9yIG51bGwgZm9yIHVubGltaXRlZC4KICAgICAgICB0aGlzLm51bWJlckNvbHVtbnMgPSBudWxsOwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggY29udGV4dCBvZiBsZWdlbmQKICAgICQuanFwbG90LkRvbnV0TGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgbGVnZW5kID0gdGhpczsKICAgICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAgICAgICAgIHZhciBzZXJpZXMgPSB0aGlzLl9zZXJpZXM7CiAgICAgICAgICAgIHZhciBzcyA9ICdwb3NpdGlvbjphYnNvbHV0ZTsnOwogICAgICAgICAgICBzcyArPSAodGhpcy5iYWNrZ3JvdW5kKSA/ICdiYWNrZ3JvdW5kOicrdGhpcy5iYWNrZ3JvdW5kKyc7JyA6ICcnOwogICAgICAgICAgICBzcyArPSAodGhpcy5ib3JkZXIpID8gJ2JvcmRlcjonK3RoaXMuYm9yZGVyKyc7JyA6ICcnOwogICAgICAgICAgICBzcyArPSAodGhpcy5mb250U2l6ZSkgPyAnZm9udC1zaXplOicrdGhpcy5mb250U2l6ZSsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMuZm9udEZhbWlseSkgPyAnZm9udC1mYW1pbHk6Jyt0aGlzLmZvbnRGYW1pbHkrJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLnRleHRDb2xvcikgPyAnY29sb3I6Jyt0aGlzLnRleHRDb2xvcisnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMubWFyZ2luVG9wICE9IG51bGwpID8gJ21hcmdpbi10b3A6Jyt0aGlzLm1hcmdpblRvcCsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMubWFyZ2luQm90dG9tICE9IG51bGwpID8gJ21hcmdpbi1ib3R0b206Jyt0aGlzLm1hcmdpbkJvdHRvbSsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMubWFyZ2luTGVmdCAhPSBudWxsKSA/ICdtYXJnaW4tbGVmdDonK3RoaXMubWFyZ2luTGVmdCsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMubWFyZ2luUmlnaHQgIT0gbnVsbCkgPyAnbWFyZ2luLXJpZ2h0OicrdGhpcy5tYXJnaW5SaWdodCsnOycgOiAnJzsKICAgICAgICAgICAgdGhpcy5fZWxlbSA9ICQoJzx0YWJsZSBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9Iicrc3MrJyI+PC90YWJsZT4nKTsKICAgICAgICAgICAgLy8gRG9udXQgY2hhcnRzIGxlZ2VuZHMgZG9uJ3QgZ28gYnkgbnVtYmVyIG9mIHNlcmllcywgYnV0IGJ5IG51bWJlciBvZiBkYXRhIHBvaW50cwogICAgICAgICAgICAvLyBpbiB0aGUgc2VyaWVzLiAgUmVmYWN0b3IgdGhpbmdzIGhlcmUgZm9yIHRoYXQuCiAgICAgICAgICAgIAogICAgICAgICAgICB2YXIgcGFkID0gZmFsc2UsIAogICAgICAgICAgICAgICAgcmV2ZXJzZSA9IGZhbHNlLAogICAgICAgICAgICAgICAgbnIsIG5jOwogICAgICAgICAgICB2YXIgcyA9IHNlcmllc1swXTsKICAgICAgICAgICAgdmFyIGNvbG9yR2VuZXJhdG9yID0gbmV3ICQuanFwbG90LkNvbG9yR2VuZXJhdG9yKHMuc2VyaWVzQ29sb3JzKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChzLnNob3cpIHsKICAgICAgICAgICAgICAgIHZhciBwZCA9IHMuZGF0YTsKICAgICAgICAgICAgICAgIGlmICh0aGlzLm51bWJlclJvd3MpIHsKICAgICAgICAgICAgICAgICAgICBuciA9IHRoaXMubnVtYmVyUm93czsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMubnVtYmVyQ29sdW1ucyl7CiAgICAgICAgICAgICAgICAgICAgICAgIG5jID0gTWF0aC5jZWlsKHBkLmxlbmd0aC9ucik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgIG5jID0gdGhpcy5udW1iZXJDb2x1bW5zOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubnVtYmVyQ29sdW1ucykgewogICAgICAgICAgICAgICAgICAgIG5jID0gdGhpcy5udW1iZXJDb2x1bW5zOwogICAgICAgICAgICAgICAgICAgIG5yID0gTWF0aC5jZWlsKHBkLmxlbmd0aC90aGlzLm51bWJlckNvbHVtbnMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbnIgPSBwZC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgbmMgPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaSwgaiwgdHIsIHRkMSwgdGQyLCBsdCwgcnMsIGNvbG9yOwogICAgICAgICAgICAgICAgdmFyIGlkeCA9IDA7ICAgIAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTxucjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHJldmVyc2UpewogICAgICAgICAgICAgICAgICAgICAgICB0ciA9ICQoJzx0ciBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCI+PC90cj4nKS5wcmVwZW5kVG8odGhpcy5fZWxlbSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyID0gJCgnPHRyIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIj48L3RyPicpLmFwcGVuZFRvKHRoaXMuX2VsZW0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmb3IgKGo9MDsgajxuYzsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZHggPCBwZC5sZW5ndGgpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbHQgPSB0aGlzLmxhYmVsc1tpZHhdIHx8IHBkW2lkeF1bMF0udG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gY29sb3JHZW5lcmF0b3IubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXZlcnNlKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaT4wKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSBuciAtMSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzID0gKHBhZCkgPyB0aGlzLnJvd1NwYWNpbmcgOiAnMCc7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMSA9ICQoJzx0ZCBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3BhZGRpbmctdG9wOicrcnMrJzsiPicrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXY+PGRpdiBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2giIHN0eWxlPSJib3JkZXItY29sb3I6Jytjb2xvcisnOyI+PC9kaXY+JysKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+PC90ZD4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMiA9ICQoJzx0ZCBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9InBhZGRpbmctdG9wOicrcnMrJzsiPjwvdGQ+Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5lc2NhcGVIdG1sKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDIudGV4dChsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDIuaHRtbChsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV2ZXJzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5wcmVwZW5kVG8odHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMS5wcmVwZW5kVG8odHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxLmFwcGVuZFRvKHRyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDIuYXBwZW5kVG8odHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZHgrKzsKICAgICAgICAgICAgICAgICAgICB9ICAgCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW07ICAgICAgICAgICAgICAgIAogICAgfTsKICAgIAogICAgLy8gc2V0dXAgZGVmYXVsdCByZW5kZXJlcnMgZm9yIGF4ZXMgYW5kIGxlZ2VuZCBzbyB1c2VyIGRvZXNuJ3QgaGF2ZSB0bwogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgcGxvdAogICAgZnVuY3Rpb24gcHJlSW5pdCh0YXJnZXQsIGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgICAgICBvcHRpb25zLmF4ZXNEZWZhdWx0cyA9IG9wdGlvbnMuYXhlc0RlZmF1bHRzIHx8IHt9OwogICAgICAgIG9wdGlvbnMubGVnZW5kID0gb3B0aW9ucy5sZWdlbmQgfHwge307CiAgICAgICAgb3B0aW9ucy5zZXJpZXNEZWZhdWx0cyA9IG9wdGlvbnMuc2VyaWVzRGVmYXVsdHMgfHwge307CiAgICAgICAgLy8gb25seSBzZXQgdGhlc2UgaWYgdGhlcmUgaXMgYSBkb251dCBzZXJpZXMKICAgICAgICB2YXIgc2V0b3B0cyA9IGZhbHNlOwogICAgICAgIGlmIChvcHRpb25zLnNlcmllc0RlZmF1bHRzLnJlbmRlcmVyID09ICQuanFwbG90LkRvbnV0UmVuZGVyZXIpIHsKICAgICAgICAgICAgc2V0b3B0cyA9IHRydWU7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuc2VyaWVzKSB7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaSA8IG9wdGlvbnMuc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5zZXJpZXNbaV0ucmVuZGVyZXIgPT0gJC5qcXBsb3QuRG9udXRSZW5kZXJlcikgewogICAgICAgICAgICAgICAgICAgIHNldG9wdHMgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChzZXRvcHRzKSB7CiAgICAgICAgICAgIG9wdGlvbnMuYXhlc0RlZmF1bHRzLnJlbmRlcmVyID0gJC5qcXBsb3QuRG9udXRBeGlzUmVuZGVyZXI7CiAgICAgICAgICAgIG9wdGlvbnMubGVnZW5kLnJlbmRlcmVyID0gJC5qcXBsb3QuRG9udXRMZWdlbmRSZW5kZXJlcjsKICAgICAgICAgICAgb3B0aW9ucy5sZWdlbmQucHJlRHJhdyA9IHRydWU7CiAgICAgICAgICAgIG9wdGlvbnMuc2VyaWVzRGVmYXVsdHMucG9pbnRMYWJlbHMgPSB7c2hvdzogZmFsc2V9OwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgcGxvdC4KICAgIGZ1bmN0aW9uIHBvc3RJbml0KHRhcmdldCwgZGF0YSwgb3B0aW9ucykgewogICAgICAgIC8vIGlmIG11bHRpcGxlIHNlcmllcywgYWRkIGEgcmVmZXJlbmNlIHRvIHRoZSBwcmV2aW91cyBvbmUgc28gdGhhdAogICAgICAgIC8vIGRvbnV0IHJpbmdzIGNhbiBuZXN0LgogICAgICAgIGZvciAodmFyIGk9MTsgaTx0aGlzLnNlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoIXRoaXMuc2VyaWVzW2ldLl9wcmV2aW91c1Nlcmllcy5sZW5ndGgpewogICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPGk7IGorKykgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlcmllc1tpXS5yZW5kZXJlci5jb25zdHJ1Y3RvciA9PSAkLmpxcGxvdC5Eb251dFJlbmRlcmVyICYmIHRoaXMuc2VyaWVzW2pdLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09ICQuanFwbG90LkRvbnV0UmVuZGVyZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNbaV0uX3ByZXZpb3VzU2VyaWVzLnB1c2godGhpcy5zZXJpZXNbal0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBmb3IgKGk9MDsgaTx0aGlzLnNlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAodGhpcy5zZXJpZXNbaV0ucmVuZGVyZXIuY29uc3RydWN0b3IgPT0gJC5qcXBsb3QuRG9udXRSZW5kZXJlcikgewogICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNbaV0uX251bWJlclNlcmllcyA9IHRoaXMuc2VyaWVzLmxlbmd0aDsKICAgICAgICAgICAgICAgIC8vIGRvbid0IGFsbG93IG1vdXNlb3ZlciBhbmQgbW91c2Vkb3duIGF0IHNhbWUgdGltZS4KICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlcmllc1tpXS5oaWdobGlnaHRNb3VzZU92ZXIpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNlcmllc1tpXS5oaWdobGlnaHRNb3VzZURvd24gPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgdmFyIHBvc3RQYXJzZU9wdGlvbnNSdW4gPSBmYWxzZTsKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHBsb3QKICAgIGZ1bmN0aW9uIHBvc3RQYXJzZU9wdGlvbnMob3B0aW9ucykgewogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLnNlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB0aGlzLnNlcmllc1tpXS5zZXJpZXNDb2xvcnMgPSB0aGlzLnNlcmllc0NvbG9yczsKICAgICAgICAgICAgdGhpcy5zZXJpZXNbaV0uY29sb3JHZW5lcmF0b3IgPSAkLmpxcGxvdC5jb2xvckdlbmVyYXRvcjsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhpZ2hsaWdodCAocGxvdCwgc2lkeCwgcGlkeCkgewogICAgICAgIHZhciBzID0gcGxvdC5zZXJpZXNbc2lkeF07CiAgICAgICAgdmFyIGNhbnZhcyA9IHBsb3QucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhczsKICAgICAgICBjYW52YXMuX2N0eC5jbGVhclJlY3QoMCwwLGNhbnZhcy5fY3R4LmNhbnZhcy53aWR0aCwgY2FudmFzLl9jdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgcy5faGlnaGxpZ2h0ZWRQb2ludCA9IHBpZHg7CiAgICAgICAgcGxvdC5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCA9IHNpZHg7CiAgICAgICAgcy5yZW5kZXJlci5kcmF3U2xpY2UuY2FsbChzLCBjYW52YXMuX2N0eCwgcy5fc2xpY2VBbmdsZXNbcGlkeF1bMF0sIHMuX3NsaWNlQW5nbGVzW3BpZHhdWzFdLCBzLmhpZ2hsaWdodENvbG9yc1twaWR4XSwgZmFsc2UpOwogICAgfQogICAgCiAgICBmdW5jdGlvbiB1bmhpZ2hsaWdodCAocGxvdCkgewogICAgICAgIHZhciBjYW52YXMgPSBwbG90LnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7CiAgICAgICAgY2FudmFzLl9jdHguY2xlYXJSZWN0KDAsMCwgY2FudmFzLl9jdHguY2FudmFzLndpZHRoLCBjYW52YXMuX2N0eC5jYW52YXMuaGVpZ2h0KTsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8cGxvdC5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgcGxvdC5zZXJpZXNbaV0uX2hpZ2hsaWdodGVkUG9pbnQgPSBudWxsOwogICAgICAgIH0KICAgICAgICBwbG90LnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ID0gbnVsbDsKICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKCdqcXBsb3REYXRhVW5oaWdobGlnaHQnKTsKICAgIH0KIAogICAgZnVuY3Rpb24gaGFuZGxlTW92ZShldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAobmVpZ2hib3IpIHsKICAgICAgICAgICAgdmFyIGlucyA9IFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IuZGF0YV07CiAgICAgICAgICAgIHZhciBldnQxID0galF1ZXJ5LkV2ZW50KCdqcXBsb3REYXRhTW91c2VPdmVyJyk7CiAgICAgICAgICAgIGV2dDEucGFnZVggPSBldi5wYWdlWDsKICAgICAgICAgICAgZXZ0MS5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKGV2dDEsIGlucyk7CiAgICAgICAgICAgIGlmIChwbG90LnNlcmllc1tpbnNbMF1dLmhpZ2hsaWdodE1vdXNlT3ZlciAmJiAhKGluc1swXSA9PSBwbG90LnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ICYmIGluc1sxXSA9PSBwbG90LnNlcmllc1tpbnNbMF1dLl9oaWdobGlnaHRlZFBvaW50KSkgewogICAgICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YUhpZ2hsaWdodCcpOwogICAgICAgICAgICAgICAgZXZ0LndoaWNoID0gZXYud2hpY2g7CiAgICAgICAgICAgICAgICBldnQucGFnZVggPSBldi5wYWdlWDsKICAgICAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQsIGlucyk7CiAgICAgICAgICAgICAgICBoaWdobGlnaHQgKHBsb3QsIGluc1swXSwgaW5zWzFdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChuZWlnaGJvciA9PSBudWxsKSB7CiAgICAgICAgICAgIHVuaGlnaGxpZ2h0IChwbG90KTsKICAgICAgICB9CiAgICB9IAogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZURvd24oZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgaWYgKG5laWdoYm9yKSB7CiAgICAgICAgICAgIHZhciBpbnMgPSBbbmVpZ2hib3Iuc2VyaWVzSW5kZXgsIG5laWdoYm9yLnBvaW50SW5kZXgsIG5laWdoYm9yLmRhdGFdOwogICAgICAgICAgICBpZiAocGxvdC5zZXJpZXNbaW5zWzBdXS5oaWdobGlnaHRNb3VzZURvd24gJiYgIShpbnNbMF0gPT0gcGxvdC5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCAmJiBpbnNbMV0gPT0gcGxvdC5zZXJpZXNbaW5zWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpIHsKICAgICAgICAgICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ2pxcGxvdERhdGFIaWdobGlnaHQnKTsKICAgICAgICAgICAgICAgIGV2dC53aGljaCA9IGV2LndoaWNoOwogICAgICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoZXZ0LCBpbnMpOwogICAgICAgICAgICAgICAgaGlnaGxpZ2h0IChwbG90LCBpbnNbMF0sIGluc1sxXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAobmVpZ2hib3IgPT0gbnVsbCkgewogICAgICAgICAgICB1bmhpZ2hsaWdodCAocGxvdCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZVVwKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIHZhciBpZHggPSBwbG90LnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4OwogICAgICAgIGlmIChpZHggIT0gbnVsbCAmJiBwbG90LnNlcmllc1tpZHhdLmhpZ2hsaWdodE1vdXNlRG93bikgewogICAgICAgICAgICB1bmhpZ2hsaWdodChwbG90KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZUNsaWNrKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIGlmIChuZWlnaGJvcikgewogICAgICAgICAgICB2YXIgaW5zID0gW25laWdoYm9yLnNlcmllc0luZGV4LCBuZWlnaGJvci5wb2ludEluZGV4LCBuZWlnaGJvci5kYXRhXTsKICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YUNsaWNrJyk7CiAgICAgICAgICAgIGV2dC53aGljaCA9IGV2LndoaWNoOwogICAgICAgICAgICBldnQucGFnZVggPSBldi5wYWdlWDsKICAgICAgICAgICAgZXZ0LnBhZ2VZID0gZXYucGFnZVk7CiAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoZXZ0LCBpbnMpOwogICAgICAgIH0KICAgIH0KICAgIAogICAgZnVuY3Rpb24gaGFuZGxlUmlnaHRDbGljayhldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAobmVpZ2hib3IpIHsKICAgICAgICAgICAgdmFyIGlucyA9IFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IuZGF0YV07CiAgICAgICAgICAgIHZhciBpZHggPSBwbG90LnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4OwogICAgICAgICAgICBpZiAoaWR4ICE9IG51bGwgJiYgcGxvdC5zZXJpZXNbaWR4XS5oaWdobGlnaHRNb3VzZURvd24pIHsKICAgICAgICAgICAgICAgIHVuaGlnaGxpZ2h0KHBsb3QpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ2pxcGxvdERhdGFSaWdodENsaWNrJyk7CiAgICAgICAgICAgIGV2dC53aGljaCA9IGV2LndoaWNoOwogICAgICAgICAgICBldnQucGFnZVggPSBldi5wYWdlWDsKICAgICAgICAgICAgZXZ0LnBhZ2VZID0gZXYucGFnZVk7CiAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoZXZ0LCBpbnMpOwogICAgICAgIH0KICAgIH0gICAgCiAgICAKICAgIC8vIGNhbGxlZCB3aXRoaW4gY29udGV4dCBvZiBwbG90CiAgICAvLyBjcmVhdGUgYSBjYW52YXMgd2hpY2ggd2UgY2FuIGRyYXcgb24uCiAgICAvLyBpbnNlcnQgaXQgYmVmb3JlIHRoZSBldmVudENhbnZhcywgc28gZXZlbnRDYW52YXMgd2lsbCBzdGlsbCBjYXB0dXJlIGV2ZW50cy4KICAgIGZ1bmN0aW9uIHBvc3RQbG90RHJhdygpIHsKICAgICAgICAvLyBNZW1vcnkgTGVha3MgcGF0Y2ggICAgCiAgICAgICAgaWYgKHRoaXMucGx1Z2lucy5kb251dFJlbmRlcmVyICYmIHRoaXMucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcykgewogICAgICAgICAgICB0aGlzLnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRDYW52YXMucmVzZXRDYW52YXMoKTsKICAgICAgICAgICAgdGhpcy5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIHRoaXMucGx1Z2lucy5kb251dFJlbmRlcmVyID0ge2hpZ2hsaWdodGVkU2VyaWVzSW5kZXg6bnVsbH07CiAgICAgICAgdGhpcy5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzID0gbmV3ICQuanFwbG90LkdlbmVyaWNDYW52YXMoKTsKICAgICAgICAvLyBkbyB3ZSBoYXZlIGFueSBkYXRhIGxhYmVscz8gIGlmIHNvLCBwdXQgaGlnaGxpZ2h0IGNhbnZhcyBiZWZvcmUgdGhvc2UKICAgICAgICAvLyBGaXggZm9yIGJyb2tlbiBqcXVlcnkgOmZpcnN0IHNlbGVjdG9yIHdpdGggY2FudmFzIChWTUwpIGVsZW1lbnRzLgogICAgICAgIHZhciBsYWJlbHMgPSAkKHRoaXMudGFyZ2V0SWQrJyAuanFwbG90LWRhdGEtbGFiZWwnKTsKICAgICAgICBpZiAobGFiZWxzLmxlbmd0aCkgewogICAgICAgICAgICAkKGxhYmVsc1swXSkuYmVmb3JlKHRoaXMucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCAnanFwbG90LWRvbnV0UmVuZGVyZXItaGlnaGxpZ2h0LWNhbnZhcycsIHRoaXMuX3Bsb3REaW1lbnNpb25zLCB0aGlzKSk7CiAgICAgICAgfQogICAgICAgIC8vIGVsc2UgcHV0IGhpZ2hsaWdodCBjYW52YXMgYmVmb3JlIGV2ZW50IGNhbnZhcy4KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUodGhpcy5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsICdqcXBsb3QtZG9udXRSZW5kZXJlci1oaWdobGlnaHQtY2FudmFzJywgdGhpcy5fcGxvdERpbWVuc2lvbnMsIHRoaXMpKTsKICAgICAgICB9CiAgICAgICAgdmFyIGhjdHggPSB0aGlzLnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuc2V0Q29udGV4dCgpOwogICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgnbW91c2VsZWF2ZScsIHtwbG90OnRoaXN9LCBmdW5jdGlvbiAoZXYpIHsgdW5oaWdobGlnaHQoZXYuZGF0YS5wbG90KTsgfSk7CiAgICB9CiAgICAKICAgICQuanFwbG90LnByZUluaXRIb29rcy5wdXNoKHByZUluaXQpOwogICAgCiAgICAkLmpxcGxvdC5Eb251dFRpY2tSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkF4aXNUaWNrUmVuZGVyZXIuY2FsbCh0aGlzKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkRvbnV0VGlja1JlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyKCk7CiAgICAkLmpxcGxvdC5Eb251dFRpY2tSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5Eb251dFRpY2tSZW5kZXJlcjsKICAgIAp9KShqUXVlcnkpOwogICAgCiAgICA=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.donutRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGUpe2UuanFwbG90LkRvbnV0UmVuZGVyZXI9ZnVuY3Rpb24oKXtlLmpxcGxvdC5MaW5lUmVuZGVyZXIuY2FsbCh0aGlzKX07ZS5qcXBsb3QuRG9udXRSZW5kZXJlci5wcm90b3R5cGU9bmV3IGUuanFwbG90LkxpbmVSZW5kZXJlcigpO2UuanFwbG90LkRvbnV0UmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUuanFwbG90LkRvbnV0UmVuZGVyZXI7ZS5qcXBsb3QuRG9udXRSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihwLHQpe3RoaXMuZGlhbWV0ZXI9bnVsbDt0aGlzLmlubmVyRGlhbWV0ZXI9bnVsbDt0aGlzLnRoaWNrbmVzcz1udWxsO3RoaXMucGFkZGluZz0yMDt0aGlzLnNsaWNlTWFyZ2luPTA7dGhpcy5yaW5nTWFyZ2luPW51bGw7dGhpcy5maWxsPXRydWU7dGhpcy5zaGFkb3dPZmZzZXQ9Mjt0aGlzLnNoYWRvd0FscGhhPTAuMDc7dGhpcy5zaGFkb3dEZXB0aD01O3RoaXMuaGlnaGxpZ2h0TW91c2VPdmVyPXRydWU7dGhpcy5oaWdobGlnaHRNb3VzZURvd249ZmFsc2U7dGhpcy5oaWdobGlnaHRDb2xvcnM9W107dGhpcy5kYXRhTGFiZWxzPSJwZXJjZW50Ijt0aGlzLnNob3dEYXRhTGFiZWxzPWZhbHNlO3RoaXMuZGF0YUxhYmVsRm9ybWF0U3RyaW5nPW51bGw7dGhpcy5kYXRhTGFiZWxUaHJlc2hvbGQ9Mzt0aGlzLmRhdGFMYWJlbFBvc2l0aW9uRmFjdG9yPTAuNDt0aGlzLmRhdGFMYWJlbE51ZGdlPTA7dGhpcy5zdGFydEFuZ2xlPTA7dGhpcy50aWNrUmVuZGVyZXI9ZS5qcXBsb3QuRG9udXRUaWNrUmVuZGVyZXI7dGhpcy5fZHJhd0RhdGE9dHJ1ZTt0aGlzLl90eXBlPSJkb251dCI7aWYocC5oaWdobGlnaHRNb3VzZURvd24mJnAuaGlnaGxpZ2h0TW91c2VPdmVyPT1udWxsKXtwLmhpZ2hsaWdodE1vdXNlT3Zlcj1mYWxzZX1lLmV4dGVuZCh0cnVlLHRoaXMscCk7aWYodGhpcy5kaWFtZXRlciE9bnVsbCl7dGhpcy5kaWFtZXRlcj10aGlzLmRpYW1ldGVyLXRoaXMuc2xpY2VNYXJnaW59dGhpcy5fZGlhbWV0ZXI9bnVsbDt0aGlzLl9pbm5lckRpYW1ldGVyPW51bGw7dGhpcy5fcmFkaXVzPW51bGw7dGhpcy5faW5uZXJSYWRpdXM9bnVsbDt0aGlzLl90aGlja25lc3M9bnVsbDt0aGlzLl9wcmV2aW91c1Nlcmllcz1bXTt0aGlzLl9udW1iZXJTZXJpZXM9MTt0aGlzLl9zbGljZUFuZ2xlcz1bXTt0aGlzLl9oaWdobGlnaHRlZFBvaW50PW51bGw7aWYodGhpcy5oaWdobGlnaHRDb2xvcnMubGVuZ3RoPT0wKXtmb3IodmFyIHI9MDtyPHRoaXMuc2VyaWVzQ29sb3JzLmxlbmd0aDtyKyspe3ZhciBxPWUuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyh0aGlzLnNlcmllc0NvbG9yc1tyXSk7dmFyIG49W3FbMF0scVsxXSxxWzJdXTt2YXIgcz1uWzBdK25bMV0rblsyXTtmb3IodmFyIG89MDtvPDM7bysrKXtuW29dPShzPjU3MCk/bltvXSowLjg6bltvXSswLjMqKDI1NS1uW29dKTtuW29dPXBhcnNlSW50KG5bb10sMTApfXRoaXMuaGlnaGxpZ2h0Q29sb3JzLnB1c2goInJnYigiK25bMF0rIiwiK25bMV0rIiwiK25bMl0rIikiKX19dC5wb3N0UGFyc2VPcHRpb25zSG9va3MuYWRkT25jZShsKTt0LnBvc3RJbml0SG9va3MuYWRkT25jZShnKTt0LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RNb3VzZU1vdmUiLGIpO3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdE1vdXNlRG93biIsYSk7dC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90TW91c2VVcCIsaik7dC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90Q2xpY2siLGYpO3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdFJpZ2h0Q2xpY2siLG0pO3QucG9zdERyYXdIb29rcy5hZGRPbmNlKGgpfTtlLmpxcGxvdC5Eb251dFJlbmRlcmVyLnByb3RvdHlwZS5zZXRHcmlkRGF0YT1mdW5jdGlvbihzKXt2YXIgbz1bXTt2YXIgdD1bXTt2YXIgbj10aGlzLnN0YXJ0QW5nbGUvMTgwKk1hdGguUEk7dmFyIHI9MDt0aGlzLl9kcmF3RGF0YT1mYWxzZTtmb3IodmFyIHE9MDtxPHRoaXMuZGF0YS5sZW5ndGg7cSsrKXtpZih0aGlzLmRhdGFbcV1bMV0hPTApe3RoaXMuX2RyYXdEYXRhPXRydWV9by5wdXNoKHRoaXMuZGF0YVtxXVsxXSk7dC5wdXNoKFt0aGlzLmRhdGFbcV1bMF1dKTtpZihxPjApe29bcV0rPW9bcS0xXX1yKz10aGlzLmRhdGFbcV1bMV19dmFyIHA9TWF0aC5QSSoyL29bby5sZW5ndGgtMV07Zm9yKHZhciBxPTA7cTxvLmxlbmd0aDtxKyspe3RbcV1bMV09b1txXSpwO3RbcV1bMl09dGhpcy5kYXRhW3FdWzFdL3J9dGhpcy5ncmlkRGF0YT10fTtlLmpxcGxvdC5Eb251dFJlbmRlcmVyLnByb3RvdHlwZS5tYWtlR3JpZERhdGE9ZnVuY3Rpb24ocyx0KXt2YXIgbz1bXTt2YXIgdT1bXTt2YXIgcj0wO3ZhciBuPXRoaXMuc3RhcnRBbmdsZS8xODAqTWF0aC5QSTt0aGlzLl9kcmF3RGF0YT1mYWxzZTtmb3IodmFyIHE9MDtxPHMubGVuZ3RoO3ErKyl7aWYodGhpcy5kYXRhW3FdWzFdIT0wKXt0aGlzLl9kcmF3RGF0YT10cnVlfW8ucHVzaChzW3FdWzFdKTt1LnB1c2goW3NbcV1bMF1dKTtpZihxPjApe29bcV0rPW9bcS0xXX1yKz1zW3FdWzFdfXZhciBwPU1hdGguUEkqMi9vW28ubGVuZ3RoLTFdO2Zvcih2YXIgcT0wO3E8by5sZW5ndGg7cSsrKXt1W3FdWzFdPW9bcV0qcDt1W3FdWzJdPXNbcV1bMV0vcn1yZXR1cm4gdX07ZS5qcXBsb3QuRG9udXRSZW5kZXJlci5wcm90b3R5cGUuZHJhd1NsaWNlPWZ1bmN0aW9uKHgsdSx0LHAscyl7dmFyIG49dGhpcy5fZGlhbWV0ZXIvMjt2YXIgdj1uLXRoaXMuX3RoaWNrbmVzczt2YXIgdz10aGlzLmZpbGw7eC5zYXZlKCk7eC50cmFuc2xhdGUodGhpcy5fY2VudGVyWzBdLHRoaXMuX2NlbnRlclsxXSk7aWYocyl7Zm9yKHZhciBxPTA7cTx0aGlzLnNoYWRvd0RlcHRoO3ErKyl7eC5zYXZlKCk7eC50cmFuc2xhdGUodGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5jb3ModGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSksdGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5zaW4odGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSkpO28oKX19ZWxzZXtvKCl9ZnVuY3Rpb24gbygpe2lmKHQ+Ni4yODIrdGhpcy5zdGFydEFuZ2xlKXt0PTYuMjgyK3RoaXMuc3RhcnRBbmdsZTtpZih1PnQpe3U9Ni4yODErdGhpcy5zdGFydEFuZ2xlfX1pZih1Pj10KXtyZXR1cm59eC5iZWdpblBhdGgoKTt4LmZpbGxTdHlsZT1wO3guc3Ryb2tlU3R5bGU9cDt4LmFyYygwLDAsbix1LHQsZmFsc2UpO3gubGluZVRvKHYqTWF0aC5jb3ModCksdipNYXRoLnNpbih0KSk7eC5hcmMoMCwwLHYsdCx1LHRydWUpO3guY2xvc2VQYXRoKCk7aWYodyl7eC5maWxsKCl9ZWxzZXt4LnN0cm9rZSgpfX1pZihzKXtmb3IodmFyIHE9MDtxPHRoaXMuc2hhZG93RGVwdGg7cSsrKXt4LnJlc3RvcmUoKX19eC5yZXN0b3JlKCl9O2UuanFwbG90LkRvbnV0UmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oTixWLHQsUCl7dmFyIFE7dmFyIEo9KHQhPXVuZGVmaW5lZCk/dDp7fTt2YXIgcT0wO3ZhciBwPTA7dmFyIHU9MTtpZih0LmxlZ2VuZEluZm8mJnQubGVnZW5kSW5mby5wbGFjZW1lbnQ9PSJpbnNpZGVHcmlkIil7dmFyIEk9dC5sZWdlbmRJbmZvO3N3aXRjaChJLmxvY2F0aW9uKXtjYXNlIm53IjpxPUkud2lkdGgrSS54b2Zmc2V0O2JyZWFrO2Nhc2UidyI6cT1JLndpZHRoK0kueG9mZnNldDticmVhaztjYXNlInN3IjpxPUkud2lkdGgrSS54b2Zmc2V0O2JyZWFrO2Nhc2UibmUiOnE9SS53aWR0aCtJLnhvZmZzZXQ7dT0tMTticmVhaztjYXNlImUiOnE9SS53aWR0aCtJLnhvZmZzZXQ7dT0tMTticmVhaztjYXNlInNlIjpxPUkud2lkdGgrSS54b2Zmc2V0O3U9LTE7YnJlYWs7Y2FzZSJuIjpwPUkuaGVpZ2h0K0kueW9mZnNldDticmVhaztjYXNlInMiOnA9SS5oZWlnaHQrSS55b2Zmc2V0O3U9LTE7YnJlYWs7ZGVmYXVsdDpicmVha319dmFyIEI9KEouc2hhZG93IT11bmRlZmluZWQpP0ouc2hhZG93OnRoaXMuc2hhZG93O3ZhciBXPShKLnNob3dMaW5lIT11bmRlZmluZWQpP0ouc2hvd0xpbmU6dGhpcy5zaG93TGluZTt2YXIgTz0oSi5maWxsIT11bmRlZmluZWQpP0ouZmlsbDp0aGlzLmZpbGw7dmFyIHM9Ti5jYW52YXMud2lkdGg7dmFyIEg9Ti5jYW52YXMuaGVpZ2h0O3ZhciBHPXMtcS0yKnRoaXMucGFkZGluZzt2YXIgUj1ILXAtMip0aGlzLnBhZGRpbmc7dmFyIHY9TWF0aC5taW4oRyxSKTt2YXIgVD12O3ZhciBYPSh0aGlzLnJpbmdNYXJnaW49PW51bGwpP3RoaXMuc2xpY2VNYXJnaW4qMjp0aGlzLnJpbmdNYXJnaW47Zm9yKHZhciBRPTA7UTx0aGlzLl9wcmV2aW91c1Nlcmllcy5sZW5ndGg7USsrKXtULT0yKnRoaXMuX3ByZXZpb3VzU2VyaWVzW1FdLl90aGlja25lc3MrMipYfXRoaXMuX2RpYW1ldGVyPXRoaXMuZGlhbWV0ZXJ8fFQ7aWYodGhpcy5pbm5lckRpYW1ldGVyIT1udWxsKXt2YXIgTT0odGhpcy5fbnVtYmVyU2VyaWVzPjEmJnRoaXMuaW5kZXg+MCk/dGhpcy5fcHJldmlvdXNTZXJpZXNbMF0uX2RpYW1ldGVyOnRoaXMuX2RpYW1ldGVyO3RoaXMuX3RoaWNrbmVzcz10aGlzLnRoaWNrbmVzc3x8KE0tdGhpcy5pbm5lckRpYW1ldGVyLTIqWCp0aGlzLl9udW1iZXJTZXJpZXMpL3RoaXMuX251bWJlclNlcmllcy8yfWVsc2V7dGhpcy5fdGhpY2tuZXNzPXRoaXMudGhpY2tuZXNzfHx2LzIvKHRoaXMuX251bWJlclNlcmllcysxKSowLjg1fXZhciBLPXRoaXMuX3JhZGl1cz10aGlzLl9kaWFtZXRlci8yO3RoaXMuX2lubmVyUmFkaXVzPXRoaXMuX3JhZGl1cy10aGlzLl90aGlja25lc3M7dmFyIG89dGhpcy5zdGFydEFuZ2xlLzE4MCpNYXRoLlBJO3RoaXMuX2NlbnRlcj1bKHMtdSpxKS8yK3UqcSwoSC11KnApLzIrdSpwXTtpZih0aGlzLnNoYWRvdyl7dmFyIEw9InJnYmEoMCwwLDAsIit0aGlzLnNoYWRvd0FscGhhKyIpIjtmb3IodmFyIFE9MDtRPFYubGVuZ3RoO1ErKyl7dmFyIEE9KFE9PTApP286VltRLTFdWzFdK287QSs9dGhpcy5zbGljZU1hcmdpbi8xODAqTWF0aC5QSTt0aGlzLnJlbmRlcmVyLmRyYXdTbGljZS5jYWxsKHRoaXMsTixBLFZbUV1bMV0rbyxMLHRydWUpfX1mb3IodmFyIFE9MDtRPFYubGVuZ3RoO1ErKyl7dmFyIEE9KFE9PTApP286VltRLTFdWzFdK287QSs9dGhpcy5zbGljZU1hcmdpbi8xODAqTWF0aC5QSTt2YXIgej1WW1FdWzFdK287dGhpcy5fc2xpY2VBbmdsZXMucHVzaChbQSx6XSk7dGhpcy5yZW5kZXJlci5kcmF3U2xpY2UuY2FsbCh0aGlzLE4sQSx6LHRoaXMuc2VyaWVzQ29sb3JzW1FdLGZhbHNlKTtpZih0aGlzLnNob3dEYXRhTGFiZWxzJiZWW1FdWzJdKjEwMD49dGhpcy5kYXRhTGFiZWxUaHJlc2hvbGQpe3ZhciBTLFU9KEEreikvMixDO2lmKHRoaXMuZGF0YUxhYmVscz09ImxhYmVsIil7Uz10aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZ3x8IiVzIjtDPWUuanFwbG90LnNwcmludGYoUyxWW1FdWzBdKX1lbHNle2lmKHRoaXMuZGF0YUxhYmVscz09InZhbHVlIil7Uz10aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZ3x8IiVkIjtDPWUuanFwbG90LnNwcmludGYoUyx0aGlzLmRhdGFbUV1bMV0pfWVsc2V7aWYodGhpcy5kYXRhTGFiZWxzPT0icGVyY2VudCIpe1M9dGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmd8fCIlZCUlIjtDPWUuanFwbG90LnNwcmludGYoUyxWW1FdWzJdKjEwMCl9ZWxzZXtpZih0aGlzLmRhdGFMYWJlbHMuY29uc3RydWN0b3I9PUFycmF5KXtTPXRoaXMuZGF0YUxhYmVsRm9ybWF0U3RyaW5nfHwiJXMiO0M9ZS5qcXBsb3Quc3ByaW50ZihTLHRoaXMuZGF0YUxhYmVsc1tRXSl9fX19dmFyIG49dGhpcy5faW5uZXJSYWRpdXMrdGhpcy5fdGhpY2tuZXNzKnRoaXMuZGF0YUxhYmVsUG9zaXRpb25GYWN0b3IrdGhpcy5zbGljZU1hcmdpbit0aGlzLmRhdGFMYWJlbE51ZGdlO3ZhciBGPXRoaXMuX2NlbnRlclswXStNYXRoLmNvcyhVKSpuK3RoaXMuY2FudmFzLl9vZmZzZXRzLmxlZnQ7dmFyIEU9dGhpcy5fY2VudGVyWzFdK01hdGguc2luKFUpKm4rdGhpcy5jYW52YXMuX29mZnNldHMudG9wO3ZhciBEPWUoJzxzcGFuIGNsYXNzPSJqcXBsb3QtZG9udXQtc2VyaWVzIGpxcGxvdC1kYXRhLWxhYmVsIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7Ij4nK0MrIjwvc3Bhbj4iKS5pbnNlcnRCZWZvcmUoUC5ldmVudENhbnZhcy5fZWxlbSk7Ri09RC53aWR0aCgpLzI7RS09RC5oZWlnaHQoKS8yO0Y9TWF0aC5yb3VuZChGKTtFPU1hdGgucm91bmQoRSk7RC5jc3Moe2xlZnQ6Rix0b3A6RX0pfX19O2UuanFwbG90LkRvbnV0QXhpc1JlbmRlcmVyPWZ1bmN0aW9uKCl7ZS5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyLmNhbGwodGhpcyl9O2UuanFwbG90LkRvbnV0QXhpc1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgZS5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7ZS5qcXBsb3QuRG9udXRBeGlzUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUuanFwbG90LkRvbnV0QXhpc1JlbmRlcmVyO2UuanFwbG90LkRvbnV0QXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKG4pe3RoaXMudGlja1JlbmRlcmVyPWUuanFwbG90LkRvbnV0VGlja1JlbmRlcmVyO2UuZXh0ZW5kKHRydWUsdGhpcyxuKTt0aGlzLl9kYXRhQm91bmRzPXttaW46MCxtYXg6MTAwfTt0aGlzLm1pbj0wO3RoaXMubWF4PTEwMDt0aGlzLnNob3dUaWNrcz1mYWxzZTt0aGlzLnRpY2tzPVtdO3RoaXMuc2hvd01hcms9ZmFsc2U7dGhpcy5zaG93PWZhbHNlfTtlLmpxcGxvdC5Eb251dExlZ2VuZFJlbmRlcmVyPWZ1bmN0aW9uKCl7ZS5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlci5jYWxsKHRoaXMpfTtlLmpxcGxvdC5Eb251dExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZT1uZXcgZS5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlcigpO2UuanFwbG90LkRvbnV0TGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUuanFwbG90LkRvbnV0TGVnZW5kUmVuZGVyZXI7ZS5qcXBsb3QuRG9udXRMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihuKXt0aGlzLm51bWJlclJvd3M9bnVsbDt0aGlzLm51bWJlckNvbHVtbnM9bnVsbDtlLmV4dGVuZCh0cnVlLHRoaXMsbil9O2UuanFwbG90LkRvbnV0TGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oKXt2YXIgcT10aGlzO2lmKHRoaXMuc2hvdyl7dmFyIHk9dGhpcy5fc2VyaWVzO3ZhciBCPSJwb3NpdGlvbjphYnNvbHV0ZTsiO0IrPSh0aGlzLmJhY2tncm91bmQpPyJiYWNrZ3JvdW5kOiIrdGhpcy5iYWNrZ3JvdW5kKyI7IjoiIjtCKz0odGhpcy5ib3JkZXIpPyJib3JkZXI6Iit0aGlzLmJvcmRlcisiOyI6IiI7Qis9KHRoaXMuZm9udFNpemUpPyJmb250LXNpemU6Iit0aGlzLmZvbnRTaXplKyI7IjoiIjtCKz0odGhpcy5mb250RmFtaWx5KT8iZm9udC1mYW1pbHk6Iit0aGlzLmZvbnRGYW1pbHkrIjsiOiIiO0IrPSh0aGlzLnRleHRDb2xvcik/ImNvbG9yOiIrdGhpcy50ZXh0Q29sb3IrIjsiOiIiO0IrPSh0aGlzLm1hcmdpblRvcCE9bnVsbCk/Im1hcmdpbi10b3A6Iit0aGlzLm1hcmdpblRvcCsiOyI6IiI7Qis9KHRoaXMubWFyZ2luQm90dG9tIT1udWxsKT8ibWFyZ2luLWJvdHRvbToiK3RoaXMubWFyZ2luQm90dG9tKyI7IjoiIjtCKz0odGhpcy5tYXJnaW5MZWZ0IT1udWxsKT8ibWFyZ2luLWxlZnQ6Iit0aGlzLm1hcmdpbkxlZnQrIjsiOiIiO0IrPSh0aGlzLm1hcmdpblJpZ2h0IT1udWxsKT8ibWFyZ2luLXJpZ2h0OiIrdGhpcy5tYXJnaW5SaWdodCsiOyI6IiI7dGhpcy5fZWxlbT1lKCc8dGFibGUgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSInK0IrJyI+PC90YWJsZT4nKTt2YXIgRj1mYWxzZSx4PWZhbHNlLG4sdjt2YXIgej15WzBdO3ZhciBvPW5ldyBlLmpxcGxvdC5Db2xvckdlbmVyYXRvcih6LnNlcmllc0NvbG9ycyk7aWYoei5zaG93KXt2YXIgRz16LmRhdGE7aWYodGhpcy5udW1iZXJSb3dzKXtuPXRoaXMubnVtYmVyUm93cztpZighdGhpcy5udW1iZXJDb2x1bW5zKXt2PU1hdGguY2VpbChHLmxlbmd0aC9uKX1lbHNle3Y9dGhpcy5udW1iZXJDb2x1bW5zfX1lbHNle2lmKHRoaXMubnVtYmVyQ29sdW1ucyl7dj10aGlzLm51bWJlckNvbHVtbnM7bj1NYXRoLmNlaWwoRy5sZW5ndGgvdGhpcy5udW1iZXJDb2x1bW5zKX1lbHNle249Ry5sZW5ndGg7dj0xfX12YXIgRSxELHAsdCxyLHUsdyxDO3ZhciBBPTA7Zm9yKEU9MDtFPG47RSsrKXtpZih4KXtwPWUoJzx0ciBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCI+PC90cj4nKS5wcmVwZW5kVG8odGhpcy5fZWxlbSl9ZWxzZXtwPWUoJzx0ciBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCI+PC90cj4nKS5hcHBlbmRUbyh0aGlzLl9lbGVtKX1mb3IoRD0wO0Q8djtEKyspe2lmKEE8Ry5sZW5ndGgpe3U9dGhpcy5sYWJlbHNbQV18fEdbQV1bMF0udG9TdHJpbmcoKTtDPW8ubmV4dCgpO2lmKCF4KXtpZihFPjApe0Y9dHJ1ZX1lbHNle0Y9ZmFsc2V9fWVsc2V7aWYoRT09bi0xKXtGPWZhbHNlfWVsc2V7Rj10cnVlfX13PShGKT90aGlzLnJvd1NwYWNpbmc6IjAiO3Q9ZSgnPHRkIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6Jyt3Kyc7Ij48ZGl2PjxkaXYgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQtc3dhdGNoIiBzdHlsZT0iYm9yZGVyLWNvbG9yOicrQysnOyI+PC9kaXY+PC9kaXY+PC90ZD4nKTtyPWUoJzx0ZCBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9InBhZGRpbmctdG9wOicrdysnOyI+PC90ZD4nKTtpZih0aGlzLmVzY2FwZUh0bWwpe3IudGV4dCh1KX1lbHNle3IuaHRtbCh1KX1pZih4KXtyLnByZXBlbmRUbyhwKTt0LnByZXBlbmRUbyhwKX1lbHNle3QuYXBwZW5kVG8ocCk7ci5hcHBlbmRUbyhwKX1GPXRydWV9QSsrfX19fXJldHVybiB0aGlzLl9lbGVtfTtmdW5jdGlvbiBjKHIscSxvKXtvPW98fHt9O28uYXhlc0RlZmF1bHRzPW8uYXhlc0RlZmF1bHRzfHx7fTtvLmxlZ2VuZD1vLmxlZ2VuZHx8e307by5zZXJpZXNEZWZhdWx0cz1vLnNlcmllc0RlZmF1bHRzfHx7fTt2YXIgbj1mYWxzZTtpZihvLnNlcmllc0RlZmF1bHRzLnJlbmRlcmVyPT1lLmpxcGxvdC5Eb251dFJlbmRlcmVyKXtuPXRydWV9ZWxzZXtpZihvLnNlcmllcyl7Zm9yKHZhciBwPTA7cDxvLnNlcmllcy5sZW5ndGg7cCsrKXtpZihvLnNlcmllc1twXS5yZW5kZXJlcj09ZS5qcXBsb3QuRG9udXRSZW5kZXJlcil7bj10cnVlfX19fWlmKG4pe28uYXhlc0RlZmF1bHRzLnJlbmRlcmVyPWUuanFwbG90LkRvbnV0QXhpc1JlbmRlcmVyO28ubGVnZW5kLnJlbmRlcmVyPWUuanFwbG90LkRvbnV0TGVnZW5kUmVuZGVyZXI7by5sZWdlbmQucHJlRHJhdz10cnVlO28uc2VyaWVzRGVmYXVsdHMucG9pbnRMYWJlbHM9e3Nob3c6ZmFsc2V9fX1mdW5jdGlvbiBnKHIscSxvKXtmb3IodmFyIHA9MTtwPHRoaXMuc2VyaWVzLmxlbmd0aDtwKyspe2lmKCF0aGlzLnNlcmllc1twXS5fcHJldmlvdXNTZXJpZXMubGVuZ3RoKXtmb3IodmFyIG49MDtuPHA7bisrKXtpZih0aGlzLnNlcmllc1twXS5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09ZS5qcXBsb3QuRG9udXRSZW5kZXJlciYmdGhpcy5zZXJpZXNbbl0ucmVuZGVyZXIuY29uc3RydWN0b3I9PWUuanFwbG90LkRvbnV0UmVuZGVyZXIpe3RoaXMuc2VyaWVzW3BdLl9wcmV2aW91c1Nlcmllcy5wdXNoKHRoaXMuc2VyaWVzW25dKX19fX1mb3IocD0wO3A8dGhpcy5zZXJpZXMubGVuZ3RoO3ArKyl7aWYodGhpcy5zZXJpZXNbcF0ucmVuZGVyZXIuY29uc3RydWN0b3I9PWUuanFwbG90LkRvbnV0UmVuZGVyZXIpe3RoaXMuc2VyaWVzW3BdLl9udW1iZXJTZXJpZXM9dGhpcy5zZXJpZXMubGVuZ3RoO2lmKHRoaXMuc2VyaWVzW3BdLmhpZ2hsaWdodE1vdXNlT3Zlcil7dGhpcy5zZXJpZXNbcF0uaGlnaGxpZ2h0TW91c2VEb3duPWZhbHNlfX19fXZhciBrPWZhbHNlO2Z1bmN0aW9uIGwobil7Zm9yKHZhciBvPTA7bzx0aGlzLnNlcmllcy5sZW5ndGg7bysrKXt0aGlzLnNlcmllc1tvXS5zZXJpZXNDb2xvcnM9dGhpcy5zZXJpZXNDb2xvcnM7dGhpcy5zZXJpZXNbb10uY29sb3JHZW5lcmF0b3I9ZS5qcXBsb3QuY29sb3JHZW5lcmF0b3J9fWZ1bmN0aW9uIGQocixxLHApe3ZhciBvPXIuc2VyaWVzW3FdO3ZhciBuPXIucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcztuLl9jdHguY2xlYXJSZWN0KDAsMCxuLl9jdHguY2FudmFzLndpZHRoLG4uX2N0eC5jYW52YXMuaGVpZ2h0KTtvLl9oaWdobGlnaHRlZFBvaW50PXA7ci5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleD1xO28ucmVuZGVyZXIuZHJhd1NsaWNlLmNhbGwobyxuLl9jdHgsby5fc2xpY2VBbmdsZXNbcF1bMF0sby5fc2xpY2VBbmdsZXNbcF1bMV0sby5oaWdobGlnaHRDb2xvcnNbcF0sZmFsc2UpfWZ1bmN0aW9uIGkocCl7dmFyIG49cC5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzO24uX2N0eC5jbGVhclJlY3QoMCwwLG4uX2N0eC5jYW52YXMud2lkdGgsbi5fY3R4LmNhbnZhcy5oZWlnaHQpO2Zvcih2YXIgbz0wO288cC5zZXJpZXMubGVuZ3RoO28rKyl7cC5zZXJpZXNbb10uX2hpZ2hsaWdodGVkUG9pbnQ9bnVsbH1wLnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4PW51bGw7cC50YXJnZXQudHJpZ2dlcigianFwbG90RGF0YVVuaGlnaGxpZ2h0Iil9ZnVuY3Rpb24gYihyLHEsdSx0LHMpe2lmKHQpe3ZhciBwPVt0LnNlcmllc0luZGV4LHQucG9pbnRJbmRleCx0LmRhdGFdO3ZhciBvPWpRdWVyeS5FdmVudCgianFwbG90RGF0YU1vdXNlT3ZlciIpO28ucGFnZVg9ci5wYWdlWDtvLnBhZ2VZPXIucGFnZVk7cy50YXJnZXQudHJpZ2dlcihvLHApO2lmKHMuc2VyaWVzW3BbMF1dLmhpZ2hsaWdodE1vdXNlT3ZlciYmIShwWzBdPT1zLnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4JiZwWzFdPT1zLnNlcmllc1twWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpe3ZhciBuPWpRdWVyeS5FdmVudCgianFwbG90RGF0YUhpZ2hsaWdodCIpO24ud2hpY2g9ci53aGljaDtuLnBhZ2VYPXIucGFnZVg7bi5wYWdlWT1yLnBhZ2VZO3MudGFyZ2V0LnRyaWdnZXIobixwKTtkKHMscFswXSxwWzFdKX19ZWxzZXtpZih0PT1udWxsKXtpKHMpfX19ZnVuY3Rpb24gYShxLHAsdCxzLHIpe2lmKHMpe3ZhciBvPVtzLnNlcmllc0luZGV4LHMucG9pbnRJbmRleCxzLmRhdGFdO2lmKHIuc2VyaWVzW29bMF1dLmhpZ2hsaWdodE1vdXNlRG93biYmIShvWzBdPT1yLnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4JiZvWzFdPT1yLnNlcmllc1tvWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpe3ZhciBuPWpRdWVyeS5FdmVudCgianFwbG90RGF0YUhpZ2hsaWdodCIpO24ud2hpY2g9cS53aGljaDtuLnBhZ2VYPXEucGFnZVg7bi5wYWdlWT1xLnBhZ2VZO3IudGFyZ2V0LnRyaWdnZXIobixvKTtkKHIsb1swXSxvWzFdKX19ZWxzZXtpZihzPT1udWxsKXtpKHIpfX19ZnVuY3Rpb24gaihwLG8scyxyLHEpe3ZhciBuPXEucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg7aWYobiE9bnVsbCYmcS5zZXJpZXNbbl0uaGlnaGxpZ2h0TW91c2VEb3duKXtpKHEpfX1mdW5jdGlvbiBmKHEscCx0LHMscil7aWYocyl7dmFyIG89W3Muc2VyaWVzSW5kZXgscy5wb2ludEluZGV4LHMuZGF0YV07dmFyIG49alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhQ2xpY2siKTtuLndoaWNoPXEud2hpY2g7bi5wYWdlWD1xLnBhZ2VYO24ucGFnZVk9cS5wYWdlWTtyLnRhcmdldC50cmlnZ2VyKG4sbyl9fWZ1bmN0aW9uIG0ocixxLHUsdCxzKXtpZih0KXt2YXIgcD1bdC5zZXJpZXNJbmRleCx0LnBvaW50SW5kZXgsdC5kYXRhXTt2YXIgbj1zLnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4O2lmKG4hPW51bGwmJnMuc2VyaWVzW25dLmhpZ2hsaWdodE1vdXNlRG93bil7aShzKX12YXIgbz1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFSaWdodENsaWNrIik7by53aGljaD1yLndoaWNoO28ucGFnZVg9ci5wYWdlWDtvLnBhZ2VZPXIucGFnZVk7cy50YXJnZXQudHJpZ2dlcihvLHApfX1mdW5jdGlvbiBoKCl7aWYodGhpcy5wbHVnaW5zLmRvbnV0UmVuZGVyZXImJnRoaXMucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcyl7dGhpcy5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnJlc2V0Q2FudmFzKCk7dGhpcy5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzPW51bGx9dGhpcy5wbHVnaW5zLmRvbnV0UmVuZGVyZXI9e2hpZ2hsaWdodGVkU2VyaWVzSW5kZXg6bnVsbH07dGhpcy5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzPW5ldyBlLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7dmFyIG89ZSh0aGlzLnRhcmdldElkKyIgLmpxcGxvdC1kYXRhLWxhYmVsIik7aWYoby5sZW5ndGgpe2Uob1swXSkuYmVmb3JlKHRoaXMucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCJqcXBsb3QtZG9udXRSZW5kZXJlci1oaWdobGlnaHQtY2FudmFzIix0aGlzLl9wbG90RGltZW5zaW9ucyx0aGlzKSl9ZWxzZXt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZSh0aGlzLnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywianFwbG90LWRvbnV0UmVuZGVyZXItaGlnaGxpZ2h0LWNhbnZhcyIsdGhpcy5fcGxvdERpbWVuc2lvbnMsdGhpcykpfXZhciBuPXRoaXMucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5zZXRDb250ZXh0KCk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCJtb3VzZWxlYXZlIix7cGxvdDp0aGlzfSxmdW5jdGlvbihwKXtpKHAuZGF0YS5wbG90KX0pfWUuanFwbG90LnByZUluaXRIb29rcy5wdXNoKGMpO2UuanFwbG90LkRvbnV0VGlja1JlbmRlcmVyPWZ1bmN0aW9uKCl7ZS5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlci5jYWxsKHRoaXMpfTtlLmpxcGxvdC5Eb251dFRpY2tSZW5kZXJlci5wcm90b3R5cGU9bmV3IGUuanFwbG90LkF4aXNUaWNrUmVuZGVyZXIoKTtlLmpxcGxvdC5Eb251dFRpY2tSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9ZS5qcXBsb3QuRG9udXRUaWNrUmVuZGVyZXJ9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.dragable.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgCiAgICAvKioKICAgICAqIENsYXNzOiAkLmpxcGxvdC5EcmFnYWJsZQogICAgICogUGx1Z2luIHRvIG1ha2UgcGxvdHRlZCBwb2ludHMgZHJhZ2FibGUgYnkgdGhlIHVzZXIuCiAgICAgKi8KICAgICQuanFwbG90LkRyYWdhYmxlID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgIC8vIEdyb3VwOiBQcm9wZXJ0aWVzCiAgICAgICAgdGhpcy5tYXJrZXJSZW5kZXJlciA9IG5ldyAkLmpxcGxvdC5NYXJrZXJSZW5kZXJlcih7c2hhZG93OmZhbHNlfSk7CiAgICAgICAgdGhpcy5zaGFwZVJlbmRlcmVyID0gbmV3ICQuanFwbG90LlNoYXBlUmVuZGVyZXIoKTsKICAgICAgICB0aGlzLmlzRHJhZ2dpbmcgPSBmYWxzZTsKICAgICAgICB0aGlzLmlzT3ZlciA9IGZhbHNlOwogICAgICAgIHRoaXMuX2N0eDsKICAgICAgICB0aGlzLl9lbGVtOwogICAgICAgIHRoaXMuX3BvaW50OwogICAgICAgIHRoaXMuX2dyaWREYXRhOwogICAgICAgIC8vIHByb3A6IGNvbG9yCiAgICAgICAgLy8gQ1NTIGNvbG9yIHNwZWMgZm9yIHRoZSBkcmFnZ2VkIHBvaW50IChhbmQgYWRqYWNlbnQgbGluZSBzZWdtZW50IG9yIGJhcikuCiAgICAgICAgdGhpcy5jb2xvcjsKICAgICAgICAvLyBwcm9wOiBjb25zdHJhaW5UbwogICAgICAgIC8vIENvbnN0cmFpbiBkcmFnZ2luZyBtb3Rpb24gdG8gYW4gYXhpcyBvciB0byBub25lLgogICAgICAgIC8vIEFsbG93YWJsZSB2YWx1ZXMgYXJlICdub25lJywgJ3gnLCAneScKICAgICAgICB0aGlzLmNvbnN0cmFpblRvID0gJ25vbmUnOyAgLy8gJ3gnLCAneScsIG9yICdub25lJzsKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgIH07CiAgICAKICAgIGZ1bmN0aW9uIERyYWdDYW52YXMoKSB7CiAgICAgICAgJC5qcXBsb3QuR2VuZXJpY0NhbnZhcy5jYWxsKHRoaXMpOwogICAgICAgIHRoaXMuaXNEcmFnZ2luZyA9IGZhbHNlOwogICAgICAgIHRoaXMuaXNPdmVyID0gZmFsc2U7CiAgICAgICAgdGhpcy5fbmVpZ2hib3I7CiAgICAgICAgdGhpcy5fY3Vyc29ycyA9IFtdOwogICAgfQogICAgCiAgICBEcmFnQ2FudmFzLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7CiAgICBEcmFnQ2FudmFzLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IERyYWdDYW52YXM7CiAgICAKICAgIAogICAgLy8gY2FsbGVkIHdpdGhpbiBzY29wZSBvZiBzZXJpZXMKICAgICQuanFwbG90LkRyYWdhYmxlLnBhcnNlT3B0aW9ucyA9IGZ1bmN0aW9uIChkZWZhdWx0cywgb3B0cykgewogICAgICAgIHZhciBvcHRpb25zID0gb3B0cyB8fCB7fTsKICAgICAgICB0aGlzLnBsdWdpbnMuZHJhZ2FibGUgPSBuZXcgJC5qcXBsb3QuRHJhZ2FibGUob3B0aW9ucy5kcmFnYWJsZSk7CiAgICAgICAgLy8gc2luY2UgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb3JlIHNlcmllcyBvcHRpb25zIGFyZSBwYXJzZWQsCiAgICAgICAgLy8gd2UgY2FuIHNldCB0aGlzIGhlcmUgYW5kIGl0IHdpbGwgYmUgb3ZlcnJpZGRlbiBpZiBuZWVkZWQuCiAgICAgICAgdGhpcy5pc0RyYWdhYmxlID0gJC5qcXBsb3QuY29uZmlnLmVuYWJsZVBsdWdpbnM7CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aGluIGNvbnRleHQgb2YgcGxvdAogICAgLy8gY3JlYXRlIGEgY2FudmFzIHdoaWNoIHdlIGNhbiBkcmF3IG9uLgogICAgLy8gaW5zZXJ0IGl0IGJlZm9yZSB0aGUgZXZlbnRDYW52YXMsIHNvIGV2ZW50Q2FudmFzIHdpbGwgc3RpbGwgY2FwdHVyZSBldmVudHMuCiAgICAvLyBhZGQgYSBuZXcgRHJhZ0NhbnZhcyBvYmplY3QgdG8gdGhlIHBsb3QgcGx1Z2lucyB0byBoYW5kbGUgZHJhd2luZyBvbiB0aGlzIG5ldyBjYW52YXMuCiAgICAkLmpxcGxvdC5EcmFnYWJsZS5wb3N0UGxvdERyYXcgPSBmdW5jdGlvbigpIHsKICAgICAgICAvLyBNZW1vcnkgTGVha3MgcGF0Y2ggICAgCiAgICAgICAgaWYgKHRoaXMucGx1Z2lucy5kcmFnYWJsZSAmJiB0aGlzLnBsdWdpbnMuZHJhZ2FibGUuaGlnaGxpZ2h0Q2FudmFzKSB7CiAgICAgICAgICAgIHRoaXMucGx1Z2lucy5kcmFnYWJsZS5oaWdobGlnaHRDYW52YXMucmVzZXRDYW52YXMoKTsKICAgICAgICAgICAgdGhpcy5wbHVnaW5zLmRyYWdhYmxlLmhpZ2hsaWdodENhbnZhcyA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICB0aGlzLnBsdWdpbnMuZHJhZ2FibGUgPSB7cHJldmlvdXNDdXJzb3I6J2F1dG8nLCBpc092ZXI6ZmFsc2V9OwogICAgICAgIHRoaXMucGx1Z2lucy5kcmFnYWJsZS5kcmFnQ2FudmFzID0gbmV3IERyYWdDYW52YXMoKTsKICAgICAgICAKICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZSh0aGlzLnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCAnanFwbG90LWRyYWdhYmxlLWNhbnZhcycsIHRoaXMuX3Bsb3REaW1lbnNpb25zLCB0aGlzKSk7CiAgICAgICAgdmFyIGRjdHggPSB0aGlzLnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhcy5zZXRDb250ZXh0KCk7CiAgICB9OwogICAgCiAgICAvLyQuanFwbG90LnByZUluaXRIb29rcy5wdXNoKCQuanFwbG90LkRyYWdhYmxlLmluaXQpOwogICAgJC5qcXBsb3QucHJlUGFyc2VTZXJpZXNPcHRpb25zSG9va3MucHVzaCgkLmpxcGxvdC5EcmFnYWJsZS5wYXJzZU9wdGlvbnMpOwogICAgJC5qcXBsb3QucG9zdERyYXdIb29rcy5wdXNoKCQuanFwbG90LkRyYWdhYmxlLnBvc3RQbG90RHJhdyk7CiAgICAkLmpxcGxvdC5ldmVudExpc3RlbmVySG9va3MucHVzaChbJ2pxcGxvdE1vdXNlTW92ZScsIGhhbmRsZU1vdmVdKTsKICAgICQuanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsnanFwbG90TW91c2VEb3duJywgaGFuZGxlRG93bl0pOwogICAgJC5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLnB1c2goWydqcXBsb3RNb3VzZVVwJywgaGFuZGxlVXBdKTsKCiAgICAKICAgIGZ1bmN0aW9uIGluaXREcmFnUG9pbnQocGxvdCwgbmVpZ2hib3IpIHsKICAgICAgICB2YXIgcyA9IHBsb3Quc2VyaWVzW25laWdoYm9yLnNlcmllc0luZGV4XTsKICAgICAgICB2YXIgZHJhZyA9IHMucGx1Z2lucy5kcmFnYWJsZTsKICAgICAgICAKICAgICAgICAvLyBmaXJzdCwgaW5pdCB0aGUgbWFyayByZW5kZXJlciBmb3IgdGhlIGRyYWdnZWQgcG9pbnQKICAgICAgICB2YXIgc21yID0gcy5tYXJrZXJSZW5kZXJlcjsKICAgICAgICB2YXIgbXIgPSBkcmFnLm1hcmtlclJlbmRlcmVyOwogICAgICAgIG1yLnN0eWxlID0gc21yLnN0eWxlOwogICAgICAgIG1yLmxpbmVXaWR0aCA9IHNtci5saW5lV2lkdGggKyAyLjU7CiAgICAgICAgbXIuc2l6ZSA9IHNtci5zaXplICsgNTsKICAgICAgICBpZiAoIWRyYWcuY29sb3IpIHsKICAgICAgICAgICAgdmFyIHJnYmEgPSAkLmpxcGxvdC5nZXRDb2xvckNvbXBvbmVudHMoc21yLmNvbG9yKTsKICAgICAgICAgICAgdmFyIG5ld3JnYiA9IFtyZ2JhWzBdLCByZ2JhWzFdLCByZ2JhWzJdXTsKICAgICAgICAgICAgdmFyIGFscGhhID0gKHJnYmFbM10gPj0gMC42KSA/IHJnYmFbM10qMC42IDogcmdiYVszXSooMi1yZ2JhWzNdKTsKICAgICAgICAgICAgZHJhZy5jb2xvciA9ICdyZ2JhKCcrbmV3cmdiWzBdKycsJytuZXdyZ2JbMV0rJywnK25ld3JnYlsyXSsnLCcrYWxwaGErJyknOwogICAgICAgIH0KICAgICAgICBtci5jb2xvciA9IGRyYWcuY29sb3I7CiAgICAgICAgbXIuaW5pdCgpOwoKICAgICAgICB2YXIgc3RhcnQgPSAobmVpZ2hib3IucG9pbnRJbmRleCA+IDApID8gbmVpZ2hib3IucG9pbnRJbmRleCAtIDEgOiAwOwogICAgICAgIHZhciBlbmQgPSBuZWlnaGJvci5wb2ludEluZGV4KzI7CiAgICAgICAgZHJhZy5fZ3JpZERhdGEgPSBzLmdyaWREYXRhLnNsaWNlKHN0YXJ0LCBlbmQpOwogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVNb3ZlKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIGlmIChwbG90LnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhcy5pc0RyYWdnaW5nKSB7CiAgICAgICAgICAgIHZhciBkYyA9IHBsb3QucGx1Z2lucy5kcmFnYWJsZS5kcmFnQ2FudmFzOwogICAgICAgICAgICB2YXIgZHAgPSBkYy5fbmVpZ2hib3I7CiAgICAgICAgICAgIHZhciBzID0gcGxvdC5zZXJpZXNbZHAuc2VyaWVzSW5kZXhdOwogICAgICAgICAgICB2YXIgZHJhZyA9IHMucGx1Z2lucy5kcmFnYWJsZTsKICAgICAgICAgICAgdmFyIGdkID0gcy5ncmlkRGF0YTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIGNvbXB1dGUgdGhlIG5ldyBncmlkIHBvc2l0aW9uIHdpdGggYW55IGNvbnN0cmFpbnRzLgogICAgICAgICAgICB2YXIgeCA9IChkcmFnLmNvbnN0cmFpblRvID09ICd5JykgPyBkcC5ncmlkRGF0YVswXSA6IGdyaWRwb3MueDsKICAgICAgICAgICAgdmFyIHkgPSAoZHJhZy5jb25zdHJhaW5UbyA9PSAneCcpID8gZHAuZ3JpZERhdGFbMV0gOiBncmlkcG9zLnk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBjb21wdXRlIGRhdGEgdmFsdWVzIGZvciBhbnkgbGlzdGVuZXJzLgogICAgICAgICAgICB2YXIgeHUgPSBzLl94YXhpcy5zZXJpZXNfcDJ1KHgpOwogICAgICAgICAgICB2YXIgeXUgPSBzLl95YXhpcy5zZXJpZXNfcDJ1KHkpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gY2xlYXIgdGhlIGNhbnZhcyB0aGVuIHJlZHJhdyBlZmZlY3QgYXQgbmV3IHBvc2l0aW9uLgogICAgICAgICAgICB2YXIgY3R4ID0gZGMuX2N0eDsKICAgICAgICAgICAgY3R4LmNsZWFyUmVjdCgwLCAwLCBjdHguY2FudmFzLndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBhZGp1c3Qgb3VyIGdyaWREYXRhIGZvciB0aGUgbmV3IG1vdXNlIHBvc2l0aW9uCiAgICAgICAgICAgIGlmIChkcC5wb2ludEluZGV4ID4gMCkgewogICAgICAgICAgICAgICAgZHJhZy5fZ3JpZERhdGFbMV0gPSBbeCwgeV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBkcmFnLl9ncmlkRGF0YVswXSA9IFt4LCB5XTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwbG90LnNlcmllc1tkcC5zZXJpZXNJbmRleF0uZHJhdyhkYy5fY3R4LCB7Z3JpZERhdGE6ZHJhZy5fZ3JpZERhdGEsIHNoYWRvdzpmYWxzZSwgcHJldmVudEpxUGxvdFNlcmllc0RyYXdUcmlnZ2VyOnRydWUsIGNvbG9yOmRyYWcuY29sb3IsIG1hcmtlck9wdGlvbnM6e2NvbG9yOmRyYWcuY29sb3IsIHNoYWRvdzpmYWxzZX0sIHRyZW5kbGluZTp7c2hvdzpmYWxzZX19KTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcignanFwbG90U2VyaWVzUG9pbnRDaGFuZ2UnLCBbZHAuc2VyaWVzSW5kZXgsIGRwLnBvaW50SW5kZXgsIFt4dSx5dV0sIFt4LHldXSk7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG5laWdoYm9yICE9IG51bGwpIHsKICAgICAgICAgICAgdmFyIHNlcmllcyA9IHBsb3Quc2VyaWVzW25laWdoYm9yLnNlcmllc0luZGV4XTsKICAgICAgICAgICAgaWYgKHNlcmllcy5pc0RyYWdhYmxlKSB7CiAgICAgICAgICAgICAgICB2YXIgZGMgPSBwbG90LnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhczsKICAgICAgICAgICAgICAgIGlmICghZGMuaXNPdmVyKSB7CiAgICAgICAgICAgICAgICAgICAgZGMuX2N1cnNvcnMucHVzaChldi50YXJnZXQuc3R5bGUuY3Vyc29yKTsKICAgICAgICAgICAgICAgICAgICBldi50YXJnZXQuc3R5bGUuY3Vyc29yID0gInBvaW50ZXIiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGMuaXNPdmVyID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChuZWlnaGJvciA9PSBudWxsKSB7CiAgICAgICAgICAgIHZhciBkYyA9IHBsb3QucGx1Z2lucy5kcmFnYWJsZS5kcmFnQ2FudmFzOwogICAgICAgICAgICBpZiAoZGMuaXNPdmVyKSB7CiAgICAgICAgICAgICAgICBldi50YXJnZXQuc3R5bGUuY3Vyc29yID0gZGMuX2N1cnNvcnMucG9wKCk7CiAgICAgICAgICAgICAgICBkYy5pc092ZXIgPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgZnVuY3Rpb24gaGFuZGxlRG93bihldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICB2YXIgZGMgPSBwbG90LnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhczsKICAgICAgICBkYy5fY3Vyc29ycy5wdXNoKGV2LnRhcmdldC5zdHlsZS5jdXJzb3IpOwogICAgICAgIGlmIChuZWlnaGJvciAhPSBudWxsKSB7CiAgICAgICAgICAgIHZhciBzID0gcGxvdC5zZXJpZXNbbmVpZ2hib3Iuc2VyaWVzSW5kZXhdOwogICAgICAgICAgICB2YXIgZHJhZyA9IHMucGx1Z2lucy5kcmFnYWJsZTsKICAgICAgICAgICAgaWYgKHMuaXNEcmFnYWJsZSAmJiAhZGMuaXNEcmFnZ2luZykgewogICAgICAgICAgICAgICAgZGMuX25laWdoYm9yID0gbmVpZ2hib3I7CiAgICAgICAgICAgICAgICBkYy5pc0RyYWdnaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGluaXREcmFnUG9pbnQocGxvdCwgbmVpZ2hib3IpOwogICAgICAgICAgICAgICAgZHJhZy5tYXJrZXJSZW5kZXJlci5kcmF3KHMuZ3JpZERhdGFbbmVpZ2hib3IucG9pbnRJbmRleF1bMF0sIHMuZ3JpZERhdGFbbmVpZ2hib3IucG9pbnRJbmRleF1bMV0sIGRjLl9jdHgpOwogICAgICAgICAgICAgICAgZXYudGFyZ2V0LnN0eWxlLmN1cnNvciA9ICJtb3ZlIjsKICAgICAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoJ2pxcGxvdERyYWdTdGFydCcsIFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgZ3JpZHBvcywgZGF0YXBvc10pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIC8vIEp1c3QgaW4gY2FzZSBvZiBhIGhpY2t1cCwgd2UnbGwgY2xlYXIgdGhlIGRyYWcgY2FudmFzIGFuZCByZXNldC4KICAgICAgICBlbHNlIHsKICAgICAgICAgICB2YXIgY3R4ID0gZGMuX2N0eDsKICAgICAgICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIGN0eC5jYW52YXMud2lkdGgsIGN0eC5jYW52YXMuaGVpZ2h0KTsKICAgICAgICAgICBkYy5pc0RyYWdnaW5nID0gZmFsc2U7CiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVVcChldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAocGxvdC5wbHVnaW5zLmRyYWdhYmxlLmRyYWdDYW52YXMuaXNEcmFnZ2luZykgewogICAgICAgICAgICB2YXIgZGMgPSBwbG90LnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhczsKICAgICAgICAgICAgLy8gY2xlYXIgdGhlIGNhbnZhcwogICAgICAgICAgICB2YXIgY3R4ID0gZGMuX2N0eDsKICAgICAgICAgICAgY3R4LmNsZWFyUmVjdCgwLCAwLCBjdHguY2FudmFzLndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgICAgIGRjLmlzRHJhZ2dpbmcgPSBmYWxzZTsKICAgICAgICAgICAgLy8gcmVkcmF3IHRoZSBzZXJpZXMgY2FudmFzIGF0IHRoZSBuZXcgcG9pbnQuCiAgICAgICAgICAgIHZhciBkcCA9IGRjLl9uZWlnaGJvcjsKICAgICAgICAgICAgdmFyIHMgPSBwbG90LnNlcmllc1tkcC5zZXJpZXNJbmRleF07CiAgICAgICAgICAgIHZhciBkcmFnID0gcy5wbHVnaW5zLmRyYWdhYmxlOwogICAgICAgICAgICAvLyBjb21wdXRlIHRoZSBuZXcgZ3JpZCBwb3NpdGlvbiB3aXRoIGFueSBjb25zdHJhaW50cy4KICAgICAgICAgICAgdmFyIHggPSAoZHJhZy5jb25zdHJhaW5UbyA9PSAneScpID8gZHAuZGF0YVswXSA6IGRhdGFwb3Nbcy54YXhpc107CiAgICAgICAgICAgIHZhciB5ID0gKGRyYWcuY29uc3RyYWluVG8gPT0gJ3gnKSA/IGRwLmRhdGFbMV0gOiBkYXRhcG9zW3MueWF4aXNdOwogICAgICAgICAgICAvLyB2YXIgeCA9IGRhdGFwb3Nbcy54YXhpc107CiAgICAgICAgICAgIC8vIHZhciB5ID0gZGF0YXBvc1tzLnlheGlzXTsKICAgICAgICAgICAgcy5kYXRhW2RwLnBvaW50SW5kZXhdWzBdID0geDsKICAgICAgICAgICAgcy5kYXRhW2RwLnBvaW50SW5kZXhdWzFdID0geTsKICAgICAgICAgICAgcGxvdC5kcmF3U2VyaWVzKHtwcmV2ZW50SnFQbG90U2VyaWVzRHJhd1RyaWdnZXI6dHJ1ZX0sIGRwLnNlcmllc0luZGV4KTsKICAgICAgICAgICAgZGMuX25laWdoYm9yID0gbnVsbDsKICAgICAgICAgICAgZXYudGFyZ2V0LnN0eWxlLmN1cnNvciA9IGRjLl9jdXJzb3JzLnBvcCgpOwogICAgICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKCdqcXBsb3REcmFnU3RvcCcsIFtncmlkcG9zLCBkYXRhcG9zXSk7CiAgICAgICAgfQogICAgfQp9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.dragable.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGQpe2QuanFwbG90LkRyYWdhYmxlPWZ1bmN0aW9uKGcpe3RoaXMubWFya2VyUmVuZGVyZXI9bmV3IGQuanFwbG90Lk1hcmtlclJlbmRlcmVyKHtzaGFkb3c6ZmFsc2V9KTt0aGlzLnNoYXBlUmVuZGVyZXI9bmV3IGQuanFwbG90LlNoYXBlUmVuZGVyZXIoKTt0aGlzLmlzRHJhZ2dpbmc9ZmFsc2U7dGhpcy5pc092ZXI9ZmFsc2U7dGhpcy5fY3R4O3RoaXMuX2VsZW07dGhpcy5fcG9pbnQ7dGhpcy5fZ3JpZERhdGE7dGhpcy5jb2xvcjt0aGlzLmNvbnN0cmFpblRvPSJub25lIjtkLmV4dGVuZCh0cnVlLHRoaXMsZyl9O2Z1bmN0aW9uIGIoKXtkLmpxcGxvdC5HZW5lcmljQ2FudmFzLmNhbGwodGhpcyk7dGhpcy5pc0RyYWdnaW5nPWZhbHNlO3RoaXMuaXNPdmVyPWZhbHNlO3RoaXMuX25laWdoYm9yO3RoaXMuX2N1cnNvcnM9W119Yi5wcm90b3R5cGU9bmV3IGQuanFwbG90LkdlbmVyaWNDYW52YXMoKTtiLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1iO2QuanFwbG90LkRyYWdhYmxlLnBhcnNlT3B0aW9ucz1mdW5jdGlvbihpLGgpe3ZhciBnPWh8fHt9O3RoaXMucGx1Z2lucy5kcmFnYWJsZT1uZXcgZC5qcXBsb3QuRHJhZ2FibGUoZy5kcmFnYWJsZSk7dGhpcy5pc0RyYWdhYmxlPWQuanFwbG90LmNvbmZpZy5lbmFibGVQbHVnaW5zfTtkLmpxcGxvdC5EcmFnYWJsZS5wb3N0UGxvdERyYXc9ZnVuY3Rpb24oKXtpZih0aGlzLnBsdWdpbnMuZHJhZ2FibGUmJnRoaXMucGx1Z2lucy5kcmFnYWJsZS5oaWdobGlnaHRDYW52YXMpe3RoaXMucGx1Z2lucy5kcmFnYWJsZS5oaWdobGlnaHRDYW52YXMucmVzZXRDYW52YXMoKTt0aGlzLnBsdWdpbnMuZHJhZ2FibGUuaGlnaGxpZ2h0Q2FudmFzPW51bGx9dGhpcy5wbHVnaW5zLmRyYWdhYmxlPXtwcmV2aW91c0N1cnNvcjoiYXV0byIsaXNPdmVyOmZhbHNlfTt0aGlzLnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhcz1uZXcgYigpO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKHRoaXMucGx1Z2lucy5kcmFnYWJsZS5kcmFnQ2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsImpxcGxvdC1kcmFnYWJsZS1jYW52YXMiLHRoaXMuX3Bsb3REaW1lbnNpb25zLHRoaXMpKTt2YXIgZz10aGlzLnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhcy5zZXRDb250ZXh0KCl9O2QuanFwbG90LnByZVBhcnNlU2VyaWVzT3B0aW9uc0hvb2tzLnB1c2goZC5qcXBsb3QuRHJhZ2FibGUucGFyc2VPcHRpb25zKTtkLmpxcGxvdC5wb3N0RHJhd0hvb2tzLnB1c2goZC5qcXBsb3QuRHJhZ2FibGUucG9zdFBsb3REcmF3KTtkLmpxcGxvdC5ldmVudExpc3RlbmVySG9va3MucHVzaChbImpxcGxvdE1vdXNlTW92ZSIsZV0pO2QuanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsianFwbG90TW91c2VEb3duIixjXSk7ZC5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLnB1c2goWyJqcXBsb3RNb3VzZVVwIixhXSk7ZnVuY3Rpb24gZihuLHApe3ZhciBxPW4uc2VyaWVzW3Auc2VyaWVzSW5kZXhdO3ZhciBtPXEucGx1Z2lucy5kcmFnYWJsZTt2YXIgaD1xLm1hcmtlclJlbmRlcmVyO3ZhciBpPW0ubWFya2VyUmVuZGVyZXI7aS5zdHlsZT1oLnN0eWxlO2kubGluZVdpZHRoPWgubGluZVdpZHRoKzIuNTtpLnNpemU9aC5zaXplKzU7aWYoIW0uY29sb3Ipe3ZhciBsPWQuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyhoLmNvbG9yKTt2YXIgbz1bbFswXSxsWzFdLGxbMl1dO3ZhciBrPShsWzNdPj0wLjYpP2xbM10qMC42OmxbM10qKDItbFszXSk7bS5jb2xvcj0icmdiYSgiK29bMF0rIiwiK29bMV0rIiwiK29bMl0rIiwiK2srIikifWkuY29sb3I9bS5jb2xvcjtpLmluaXQoKTt2YXIgZz0ocC5wb2ludEluZGV4PjApP3AucG9pbnRJbmRleC0xOjA7dmFyIGo9cC5wb2ludEluZGV4KzI7bS5fZ3JpZERhdGE9cS5ncmlkRGF0YS5zbGljZShnLGopfWZ1bmN0aW9uIGUobyxsLGgsdCxtKXtpZihtLnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhcy5pc0RyYWdnaW5nKXt2YXIgdT1tLnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhczt2YXIgaT11Ll9uZWlnaGJvcjt2YXIgdz1tLnNlcmllc1tpLnNlcmllc0luZGV4XTt2YXIgaz13LnBsdWdpbnMuZHJhZ2FibGU7dmFyIHI9dy5ncmlkRGF0YTt2YXIgcD0oay5jb25zdHJhaW5Ubz09InkiKT9pLmdyaWREYXRhWzBdOmwueDt2YXIgbj0oay5jb25zdHJhaW5Ubz09IngiKT9pLmdyaWREYXRhWzFdOmwueTt2YXIgZz13Ll94YXhpcy5zZXJpZXNfcDJ1KHApO3ZhciBxPXcuX3lheGlzLnNlcmllc19wMnUobik7dmFyIHY9dS5fY3R4O3YuY2xlYXJSZWN0KDAsMCx2LmNhbnZhcy53aWR0aCx2LmNhbnZhcy5oZWlnaHQpO2lmKGkucG9pbnRJbmRleD4wKXtrLl9ncmlkRGF0YVsxXT1bcCxuXX1lbHNle2suX2dyaWREYXRhWzBdPVtwLG5dfW0uc2VyaWVzW2kuc2VyaWVzSW5kZXhdLmRyYXcodS5fY3R4LHtncmlkRGF0YTprLl9ncmlkRGF0YSxzaGFkb3c6ZmFsc2UscHJldmVudEpxUGxvdFNlcmllc0RyYXdUcmlnZ2VyOnRydWUsY29sb3I6ay5jb2xvcixtYXJrZXJPcHRpb25zOntjb2xvcjprLmNvbG9yLHNoYWRvdzpmYWxzZX0sdHJlbmRsaW5lOntzaG93OmZhbHNlfX0pO20udGFyZ2V0LnRyaWdnZXIoImpxcGxvdFNlcmllc1BvaW50Q2hhbmdlIixbaS5zZXJpZXNJbmRleCxpLnBvaW50SW5kZXgsW2cscV0sW3Asbl1dKX1lbHNle2lmKHQhPW51bGwpe3ZhciBqPW0uc2VyaWVzW3Quc2VyaWVzSW5kZXhdO2lmKGouaXNEcmFnYWJsZSl7dmFyIHU9bS5wbHVnaW5zLmRyYWdhYmxlLmRyYWdDYW52YXM7aWYoIXUuaXNPdmVyKXt1Ll9jdXJzb3JzLnB1c2goby50YXJnZXQuc3R5bGUuY3Vyc29yKTtvLnRhcmdldC5zdHlsZS5jdXJzb3I9InBvaW50ZXIifXUuaXNPdmVyPXRydWV9fWVsc2V7aWYodD09bnVsbCl7dmFyIHU9bS5wbHVnaW5zLmRyYWdhYmxlLmRyYWdDYW52YXM7aWYodS5pc092ZXIpe28udGFyZ2V0LnN0eWxlLmN1cnNvcj11Ll9jdXJzb3JzLnBvcCgpO3UuaXNPdmVyPWZhbHNlfX19fX1mdW5jdGlvbiBjKGssaSxnLGwsail7dmFyIG09ai5wbHVnaW5zLmRyYWdhYmxlLmRyYWdDYW52YXM7bS5fY3Vyc29ycy5wdXNoKGsudGFyZ2V0LnN0eWxlLmN1cnNvcik7aWYobCE9bnVsbCl7dmFyIG89ai5zZXJpZXNbbC5zZXJpZXNJbmRleF07dmFyIGg9by5wbHVnaW5zLmRyYWdhYmxlO2lmKG8uaXNEcmFnYWJsZSYmIW0uaXNEcmFnZ2luZyl7bS5fbmVpZ2hib3I9bDttLmlzRHJhZ2dpbmc9dHJ1ZTtmKGosbCk7aC5tYXJrZXJSZW5kZXJlci5kcmF3KG8uZ3JpZERhdGFbbC5wb2ludEluZGV4XVswXSxvLmdyaWREYXRhW2wucG9pbnRJbmRleF1bMV0sbS5fY3R4KTtrLnRhcmdldC5zdHlsZS5jdXJzb3I9Im1vdmUiO2oudGFyZ2V0LnRyaWdnZXIoImpxcGxvdERyYWdTdGFydCIsW2wuc2VyaWVzSW5kZXgsbC5wb2ludEluZGV4LGksZ10pfX1lbHNle3ZhciBuPW0uX2N0eDtuLmNsZWFyUmVjdCgwLDAsbi5jYW52YXMud2lkdGgsbi5jYW52YXMuaGVpZ2h0KTttLmlzRHJhZ2dpbmc9ZmFsc2V9fWZ1bmN0aW9uIGEobSxqLGcsbyxrKXtpZihrLnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhcy5pc0RyYWdnaW5nKXt2YXIgcD1rLnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhczt2YXIgcT1wLl9jdHg7cS5jbGVhclJlY3QoMCwwLHEuY2FudmFzLndpZHRoLHEuY2FudmFzLmhlaWdodCk7cC5pc0RyYWdnaW5nPWZhbHNlO3ZhciBoPXAuX25laWdoYm9yO3ZhciByPWsuc2VyaWVzW2guc2VyaWVzSW5kZXhdO3ZhciBpPXIucGx1Z2lucy5kcmFnYWJsZTt2YXIgbj0oaS5jb25zdHJhaW5Ubz09InkiKT9oLmRhdGFbMF06Z1tyLnhheGlzXTt2YXIgbD0oaS5jb25zdHJhaW5Ubz09IngiKT9oLmRhdGFbMV06Z1tyLnlheGlzXTtyLmRhdGFbaC5wb2ludEluZGV4XVswXT1uO3IuZGF0YVtoLnBvaW50SW5kZXhdWzFdPWw7ay5kcmF3U2VyaWVzKHtwcmV2ZW50SnFQbG90U2VyaWVzRHJhd1RyaWdnZXI6dHJ1ZX0saC5zZXJpZXNJbmRleCk7cC5fbmVpZ2hib3I9bnVsbDttLnRhcmdldC5zdHlsZS5jdXJzb3I9cC5fY3Vyc29ycy5wb3AoKTtrLnRhcmdldC50cmlnZ2VyKCJqcXBsb3REcmFnU3RvcCIsW2osZ10pfX19KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.enhancedLegendRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLy8gY2xhc3MgJC5qcXBsb3QuRW5oYW5jZWRMZWdlbmRSZW5kZXJlcgogICAgLy8gTGVnZW5kIHJlbmRlcmVyIHdoaWNoIGNhbiBzcGVjaWZ5IHRoZSBudW1iZXIgb2Ygcm93cyBhbmQvb3IgY29sdW1ucyBpbiB0aGUgbGVnZW5kLgogICAgJC5qcXBsb3QuRW5oYW5jZWRMZWdlbmRSZW5kZXJlciA9IGZ1bmN0aW9uKCl7CiAgICAgICAgJC5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRW5oYW5jZWRMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlcigpOwogICAgJC5qcXBsb3QuRW5oYW5jZWRMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5FbmhhbmNlZExlZ2VuZFJlbmRlcmVyOwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBsZWdlbmQuCiAgICAkLmpxcGxvdC5FbmhhbmNlZExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgIC8vIHByb3A6IG51bWJlclJvd3MKICAgICAgICAvLyBNYXhpbXVtIG51bWJlciBvZiByb3dzIGluIHRoZSBsZWdlbmQuICAwIG9yIG51bGwgZm9yIHVubGltaXRlZC4KICAgICAgICB0aGlzLm51bWJlclJvd3MgPSBudWxsOwogICAgICAgIC8vIHByb3A6IG51bWJlckNvbHVtbnMKICAgICAgICAvLyBNYXhpbXVtIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBsZWdlbmQuICAwIG9yIG51bGwgZm9yIHVubGltaXRlZC4KICAgICAgICB0aGlzLm51bWJlckNvbHVtbnMgPSBudWxsOwogICAgICAgIC8vIHByb3A6IHNlcmllc1RvZ2dsZQogICAgICAgIC8vIGZhbHNlIHRvIG5vdCBlbmFibGUgc2VyaWVzIG9uL29mZiB0b2dnbGluZyBvbiB0aGUgbGVnZW5kLgogICAgICAgIC8vIHRydWUgb3IgYSBmYWRlaW4vZmFkZW91dCBzcGVlZCAobnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBvciAnZmFzdCcsICdub3JtYWwnLCAnc2xvdycpIAogICAgICAgIC8vIHRvIGVuYWJsZSBzaG93L2hpZGUgb2Ygc2VyaWVzIG9uIGNsaWNrIG9mIGxlZ2VuZCBpdGVtLgogICAgICAgIHRoaXMuc2VyaWVzVG9nZ2xlID0gJ25vcm1hbCc7CiAgICAgICAgLy8gcHJvcDogc2VyaWVzVG9nZ2xlUmVwbG90CiAgICAgICAgLy8gVHJ1ZSB0byByZXBsb3QgdGhlIGNoYXJ0IGFmdGVyIHRvZ2dsaW5nIHNlcmllcyBvbi9vZmYuCiAgICAgICAgLy8gVGhpcyB3aWxsIHNldCB0aGUgc2VyaWVzIHNob3cgcHJvcGVydHkgdG8gZmFsc2UuCiAgICAgICAgLy8gVGhpcyBhbGxvd3MgZm9yIHJlc2NhbGluZyBvciBvdGhlciBtYW5pcGxhdGlvbiBvZiBjaGFydC4KICAgICAgICAvLyBTZXQgdG8gYW4gb3B0aW9ucyBvYmplY3QgKGUuZy4ge3Jlc2V0QXhlczogdHJ1ZX0pIGZvciByZXBsb3Qgb3B0aW9ucy4KICAgICAgICB0aGlzLnNlcmllc1RvZ2dsZVJlcGxvdCA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGRpc2FibGVJRUZhZGluZwogICAgICAgIC8vIHRydWUgdG8gdG9nZ2xlIHNlcmllcyB3aXRoIGEgc2hvdy9oaWRlIG1ldGhvZCBvbmx5IGFuZCBub3QgYWxsb3cgZmFkaW5nIGluL291dC4gIAogICAgICAgIC8vIFRoaXMgaXMgdG8gb3ZlcmNvbWUgcG9vciBwZXJmb3JtYW5jZSBvZiBmYWRlIGluIHNvbWUgdmVyc2lvbnMgb2YgSUUuCiAgICAgICAgdGhpcy5kaXNhYmxlSUVGYWRpbmcgPSB0cnVlOwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgIAogICAgICAgIGlmICh0aGlzLnNlcmllc1RvZ2dsZSkgewogICAgICAgICAgICAkLmpxcGxvdC5wb3N0RHJhd0hvb2tzLnB1c2gocG9zdERyYXcpOwogICAgICAgIH0KICAgIH07CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIGxlZ2VuZAogICAgJC5qcXBsb3QuRW5oYW5jZWRMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKG9mZnNldHMsIHBsb3QpIHsKICAgICAgICB2YXIgbGVnZW5kID0gdGhpczsKICAgICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAgICAgICAgIHZhciBzZXJpZXMgPSB0aGlzLl9zZXJpZXM7CiAgICAgICAgICAgIHZhciBzOwogICAgICAgICAgICB2YXIgc3MgPSAncG9zaXRpb246YWJzb2x1dGU7JzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMuYmFja2dyb3VuZCkgPyAnYmFja2dyb3VuZDonK3RoaXMuYmFja2dyb3VuZCsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMuYm9yZGVyKSA/ICdib3JkZXI6Jyt0aGlzLmJvcmRlcisnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMuZm9udFNpemUpID8gJ2ZvbnQtc2l6ZTonK3RoaXMuZm9udFNpemUrJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLmZvbnRGYW1pbHkpID8gJ2ZvbnQtZmFtaWx5OicrdGhpcy5mb250RmFtaWx5Kyc7JyA6ICcnOwogICAgICAgICAgICBzcyArPSAodGhpcy50ZXh0Q29sb3IpID8gJ2NvbG9yOicrdGhpcy50ZXh0Q29sb3IrJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLm1hcmdpblRvcCAhPSBudWxsKSA/ICdtYXJnaW4tdG9wOicrdGhpcy5tYXJnaW5Ub3ArJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLm1hcmdpbkJvdHRvbSAhPSBudWxsKSA/ICdtYXJnaW4tYm90dG9tOicrdGhpcy5tYXJnaW5Cb3R0b20rJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLm1hcmdpbkxlZnQgIT0gbnVsbCkgPyAnbWFyZ2luLWxlZnQ6Jyt0aGlzLm1hcmdpbkxlZnQrJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLm1hcmdpblJpZ2h0ICE9IG51bGwpID8gJ21hcmdpbi1yaWdodDonK3RoaXMubWFyZ2luUmlnaHQrJzsnIDogJyc7CiAgICAgICAgICAgIHRoaXMuX2VsZW0gPSAkKCc8dGFibGUgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSInK3NzKyciPjwvdGFibGU+Jyk7CiAgICAgICAgICAgIGlmICh0aGlzLnNlcmllc1RvZ2dsZSkgewogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoJ3otaW5kZXgnLCAnMycpOwogICAgICAgICAgICB9CiAgICAgICAgCiAgICAgICAgICAgIHZhciBwYWQgPSBmYWxzZSwgCiAgICAgICAgICAgICAgICByZXZlcnNlID0gZmFsc2UsCiAgICAgICAgICAgICAgICBuciwgbmM7CiAgICAgICAgICAgIGlmICh0aGlzLm51bWJlclJvd3MpIHsKICAgICAgICAgICAgICAgIG5yID0gdGhpcy5udW1iZXJSb3dzOwogICAgICAgICAgICAgICAgaWYgKCF0aGlzLm51bWJlckNvbHVtbnMpewogICAgICAgICAgICAgICAgICAgIG5jID0gTWF0aC5jZWlsKHNlcmllcy5sZW5ndGgvbnIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICBuYyA9IHRoaXMubnVtYmVyQ29sdW1uczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmICh0aGlzLm51bWJlckNvbHVtbnMpIHsKICAgICAgICAgICAgICAgIG5jID0gdGhpcy5udW1iZXJDb2x1bW5zOwogICAgICAgICAgICAgICAgbnIgPSBNYXRoLmNlaWwoc2VyaWVzLmxlbmd0aC90aGlzLm51bWJlckNvbHVtbnMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbnIgPSBzZXJpZXMubGVuZ3RoOwogICAgICAgICAgICAgICAgbmMgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgdmFyIGksIGosIHRyLCB0ZDEsIHRkMiwgbHQsIHJzLCBkaXYsIGRpdjAsIGRpdjE7CiAgICAgICAgICAgIHZhciBpZHggPSAwOwogICAgICAgICAgICAvLyBjaGVjayB0byBzZWUgaWYgd2UgbmVlZCB0byByZXZlcnNlCiAgICAgICAgICAgIGZvciAoaT1zZXJpZXMubGVuZ3RoLTE7IGk+PTA7IGktLSkgewogICAgICAgICAgICAgICAgaWYgKG5jID09IDEgJiYgc2VyaWVzW2ldLl9zdGFjayB8fCBzZXJpZXNbaV0ucmVuZGVyZXIuY29uc3RydWN0b3IgPT0gJC5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlcil7CiAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZSA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgZm9yIChpPTA7IGk8bnI7IGkrKykgewogICAgICAgICAgICAgICAgdHIgPSAkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJykpOwogICAgICAgICAgICAgICAgdHIuYWRkQ2xhc3MoJ2pxcGxvdC10YWJsZS1sZWdlbmQnKTsKICAgICAgICAgICAgICAgIGlmIChyZXZlcnNlKXsKICAgICAgICAgICAgICAgICAgICB0ci5wcmVwZW5kVG8odGhpcy5fZWxlbSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgIHRyLmFwcGVuZFRvKHRoaXMuX2VsZW0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm9yIChqPTA7IGo8bmM7IGorKykgewogICAgICAgICAgICAgICAgICAgIGlmIChpZHggPCBzZXJpZXMubGVuZ3RoICYmIChzZXJpZXNbaWR4XS5zaG93IHx8IHNlcmllc1tpZHhdLnNob3dMYWJlbCkpewogICAgICAgICAgICAgICAgICAgICAgICBzID0gc2VyaWVzW2lkeF07CiAgICAgICAgICAgICAgICAgICAgICAgIGx0ID0gdGhpcy5sYWJlbHNbaWR4XSB8fCBzLmxhYmVsLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNvbG9yID0gcy5jb2xvcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmV2ZXJzZSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGk+MCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gbnIgLTEpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBycyA9IChwYWQpID8gdGhpcy5yb3dTcGFjaW5nIDogJzAnOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMSA9ICQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDEuYWRkQ2xhc3MoJ2pxcGxvdC10YWJsZS1sZWdlbmQganFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2gnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMS5jc3Moe3RleHRBbGlnbjogJ2NlbnRlcicsIHBhZGRpbmdUb3A6IHJzfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2MCA9ICQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2MC5hZGRDbGFzcygnanFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2gtb3V0bGluZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2MSA9ICQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2MS5hZGRDbGFzcygnanFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2gnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpdjEuY3NzKHtiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLCBib3JkZXJDb2xvcjogY29sb3J9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDEuYXBwZW5kKGRpdjAuYXBwZW5kKGRpdjEpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDIgPSAkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQyLmFkZENsYXNzKCdqcXBsb3QtdGFibGUtbGVnZW5kIGpxcGxvdC10YWJsZS1sZWdlbmQtbGFiZWwnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5jc3MoJ3BhZGRpbmdUb3AnLCBycyk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0ZDEgPSAkKCc8dGQgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nLXRvcDonK3JzKyc7Ij4nKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgICc8ZGl2PjxkaXYgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQtc3dhdGNoIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjonK2NvbG9yKyc7Ym9yZGVyLWNvbG9yOicrY29sb3IrJzsiPjwvZGl2PicrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgJzwvZGl2PjwvdGQ+Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0ZDIgPSAkKCc8dGQgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSJwYWRkaW5nLXRvcDonK3JzKyc7Ij48L3RkPicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZXNjYXBlSHRtbCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQyLnRleHQobHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQyLmh0bWwobHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldmVyc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zaG93TGFiZWxzKSB7dGQyLnByZXBlbmRUbyh0cik7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3dTd2F0Y2hlcykge3RkMS5wcmVwZW5kVG8odHIpO30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3dTd2F0Y2hlcykge3RkMS5hcHBlbmRUbyh0cik7fQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3dMYWJlbHMpIHt0ZDIuYXBwZW5kVG8odHIpO30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VyaWVzVG9nZ2xlKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZCBhbiBvdmVybGF5IGZvciBjbGlja2luZyBzZXJpZXMgb24vb2ZmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGl2MCA9ICQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpdjAuYWRkQ2xhc3MoJ2pxcGxvdC10YWJsZS1sZWdlbmQtb3ZlcmxheScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpdjAuY3NzKHtwb3NpdGlvbjoncmVsYXRpdmUnLCBsZWZ0OjAsIHRvcDowLCBoZWlnaHQ6JzEwMCUnLCB3aWR0aDonMTAwJSd9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0ci5hcHBlbmQoZGl2MCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzcGVlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mKHRoaXMuc2VyaWVzVG9nZ2xlKSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mKHRoaXMuc2VyaWVzVG9nZ2xlKSA9PT0gJ251bWJlcicpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkLmpxcGxvdC51c2VfZXhjYW52YXMgfHwgIXRoaXMuZGlzYWJsZUlFRmFkaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVlZCA9IHRoaXMuc2VyaWVzVG9nZ2xlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zaG93U3dhdGNoZXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxLmJpbmQoJ2NsaWNrJywge3NlcmllczpzLCBzcGVlZDpzcGVlZCwgcGxvdDogcGxvdCwgcmVwbG90OnRoaXMuc2VyaWVzVG9nZ2xlUmVwbG90fSwgaGFuZGxlVG9nZ2xlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxLmFkZENsYXNzKCdqcXBsb3Qtc2VyaWVzVG9nZ2xlJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3dMYWJlbHMpICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5iaW5kKCdjbGljaycsIHtzZXJpZXM6cywgc3BlZWQ6c3BlZWQsIHBsb3Q6IHBsb3QsIHJlcGxvdDp0aGlzLnNlcmllc1RvZ2dsZVJlcGxvdH0sIGhhbmRsZVRvZ2dsZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5hZGRDbGFzcygnanFwbG90LXNlcmllc1RvZ2dsZScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIHNlcmllcyB0aGF0IGFyZSBhbHJlYWR5IGhpZGRlbiwgYWRkIHRoZSBoaWRkZW4gY2xhc3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXMuc2hvdyAmJiBzLnNob3dMYWJlbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDEuYWRkQ2xhc3MoJ2pxcGxvdC1zZXJpZXMtaGlkZGVuJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5hZGRDbGFzcygnanFwbG90LXNlcmllcy1oaWRkZW4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWR4Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHRkMSA9IHRkMiA9IGRpdjAgPSBkaXYxID0gbnVsbDsgICAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy5fZWxlbTsKICAgIH07CgogICAgdmFyIGhhbmRsZVRvZ2dsZSA9IGZ1bmN0aW9uIChldikgewogICAgICAgIHZhciBkID0gZXYuZGF0YSwKICAgICAgICAgICAgcyA9IGQuc2VyaWVzLAogICAgICAgICAgICByZXBsb3QgPSBkLnJlcGxvdCwKICAgICAgICAgICAgcGxvdCA9IGQucGxvdCwKICAgICAgICAgICAgc3BlZWQgPSBkLnNwZWVkLAogICAgICAgICAgICBzaWR4ID0gcy5pbmRleCwKICAgICAgICAgICAgc2hvd2luZyA9IGZhbHNlOwoKICAgICAgICBpZiAocy5jYW52YXMuX2VsZW0uaXMoJzpoaWRkZW4nKSB8fCAhcy5zaG93KSB7CiAgICAgICAgICAgIHNob3dpbmcgPSB0cnVlOwogICAgICAgIH0KCiAgICAgICAgdmFyIGRvTGVnZW5kVG9nZ2xlID0gZnVuY3Rpb24oKSB7CgogICAgICAgICAgICBpZiAocmVwbG90KSB7CiAgICAgICAgICAgICAgICB2YXIgb3B0cyA9IHt9OwoKICAgICAgICAgICAgICAgIGlmICgkLmlzUGxhaW5PYmplY3QocmVwbG90KSkgewogICAgICAgICAgICAgICAgICAgICQuZXh0ZW5kKHRydWUsIG9wdHMsIHJlcGxvdCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgcGxvdC5yZXBsb3Qob3B0cyk7CiAgICAgICAgICAgICAgICAvLyBpZiBzaG93aW5nLCB0aGVyZSB3YXMgbm8gY2FudmFzIGVsZW1lbnQgdG8gZmFkZSBpbiwgc28gaGlkZSBoZXJlCiAgICAgICAgICAgICAgICAvLyBhbmQgdGhlbiBkbyBhIGZhZGUgaW4uCiAgICAgICAgICAgICAgICBpZiAoc2hvd2luZyAmJiBzcGVlZCkgewogICAgICAgICAgICAgICAgICAgIHZhciBzID0gcGxvdC5zZXJpZXNbc2lkeF07CgogICAgICAgICAgICAgICAgICAgIGlmIChzLnNoYWRvd0NhbnZhcy5fZWxlbSkgewogICAgICAgICAgICAgICAgICAgICAgICBzLnNoYWRvd0NhbnZhcy5fZWxlbS5oaWRlKCkuZmFkZUluKHNwZWVkKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcy5jYW52YXMuX2VsZW0uaGlkZSgpLmZhZGVJbihzcGVlZCk7CiAgICAgICAgICAgICAgICAgICAgcy5jYW52YXMuX2VsZW0ubmV4dEFsbCgnLmpxcGxvdC1wb2ludC1sYWJlbC5qcXBsb3Qtc2VyaWVzLScrcy5pbmRleCkuaGlkZSgpLmZhZGVJbihzcGVlZCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBzID0gcGxvdC5zZXJpZXNbc2lkeF07CgogICAgICAgICAgICAgICAgaWYgKHMuY2FudmFzLl9lbGVtLmlzKCc6aGlkZGVuJykgfHwgIXMuc2hvdykgewogICAgICAgICAgICAgICAgICAgIC8vIE5vdCBzdXJlIGlmIHRoZXJlIGlzIGEgYmV0dGVyIHdheSB0byBjaGVjayBmb3Igc2hvd1N3YXRjaGVzIGFuZCBzaG93TGFiZWxzID09PSB0cnVlLgogICAgICAgICAgICAgICAgICAgIC8vIFRlc3QgZm9yICJ1bmRlZmluZWQiIHNpbmNlIGRlZmF1bHQgdmFsdWVzIGZvciBib3RoIHNob3dTd2F0Y2hlcyBhbmQgc2hvd0xhYmxlcyBpcyB0cnVlLgogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGxvdC5vcHRpb25zLmxlZ2VuZC5zaG93U3dhdGNoZXMgPT09ICd1bmRlZmluZWQnIHx8IHBsb3Qub3B0aW9ucy5sZWdlbmQuc2hvd1N3YXRjaGVzID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBsb3QubGVnZW5kLl9lbGVtLmZpbmQoJ3RkJykuZXEoc2lkeCAqIDIpLmFkZENsYXNzKCdqcXBsb3Qtc2VyaWVzLWhpZGRlbicpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHBsb3Qub3B0aW9ucy5sZWdlbmQuc2hvd0xhYmVscyA9PT0gJ3VuZGVmaW5lZCcgfHwgcGxvdC5vcHRpb25zLmxlZ2VuZC5zaG93TGFiZWxzID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBsb3QubGVnZW5kLl9lbGVtLmZpbmQoJ3RkJykuZXEoKHNpZHggKiAyKSArIDEpLmFkZENsYXNzKCdqcXBsb3Qtc2VyaWVzLWhpZGRlbicpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcGxvdC5vcHRpb25zLmxlZ2VuZC5zaG93U3dhdGNoZXMgPT09ICd1bmRlZmluZWQnIHx8IHBsb3Qub3B0aW9ucy5sZWdlbmQuc2hvd1N3YXRjaGVzID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBsb3QubGVnZW5kLl9lbGVtLmZpbmQoJ3RkJykuZXEoc2lkeCAqIDIpLnJlbW92ZUNsYXNzKCdqcXBsb3Qtc2VyaWVzLWhpZGRlbicpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHBsb3Qub3B0aW9ucy5sZWdlbmQuc2hvd0xhYmVscyA9PT0gJ3VuZGVmaW5lZCcgfHwgcGxvdC5vcHRpb25zLmxlZ2VuZC5zaG93TGFiZWxzID09PSB0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBsb3QubGVnZW5kLl9lbGVtLmZpbmQoJ3RkJykuZXEoKHNpZHggKiAyKSArIDEpLnJlbW92ZUNsYXNzKCdqcXBsb3Qtc2VyaWVzLWhpZGRlbicpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgIH0KCiAgICAgICAgfTsKCiAgICAgICAgcy50b2dnbGVEaXNwbGF5KGV2LCBkb0xlZ2VuZFRvZ2dsZSk7CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBwbG90LgogICAgdmFyIHBvc3REcmF3ID0gZnVuY3Rpb24gKCkgewogICAgICAgIGlmICh0aGlzLmxlZ2VuZC5yZW5kZXJlci5jb25zdHJ1Y3RvciA9PSAkLmpxcGxvdC5FbmhhbmNlZExlZ2VuZFJlbmRlcmVyICYmIHRoaXMubGVnZW5kLnNlcmllc1RvZ2dsZSl7CiAgICAgICAgICAgIHZhciBlID0gdGhpcy5sZWdlbmQuX2VsZW0uZGV0YWNoKCk7CiAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYWZ0ZXIoZSk7CiAgICAgICAgfQogICAgfTsKfSkoalF1ZXJ5KTsK]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.enhancedLegendRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGMpe2MuanFwbG90LkVuaGFuY2VkTGVnZW5kUmVuZGVyZXI9ZnVuY3Rpb24oKXtjLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyLmNhbGwodGhpcyl9O2MuanFwbG90LkVuaGFuY2VkTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlPW5ldyBjLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyKCk7Yy5qcXBsb3QuRW5oYW5jZWRMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9Yy5qcXBsb3QuRW5oYW5jZWRMZWdlbmRSZW5kZXJlcjtjLmpxcGxvdC5FbmhhbmNlZExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGQpe3RoaXMubnVtYmVyUm93cz1udWxsO3RoaXMubnVtYmVyQ29sdW1ucz1udWxsO3RoaXMuc2VyaWVzVG9nZ2xlPSJub3JtYWwiO3RoaXMuc2VyaWVzVG9nZ2xlUmVwbG90PWZhbHNlO3RoaXMuZGlzYWJsZUlFRmFkaW5nPXRydWU7Yy5leHRlbmQodHJ1ZSx0aGlzLGQpO2lmKHRoaXMuc2VyaWVzVG9nZ2xlKXtjLmpxcGxvdC5wb3N0RHJhd0hvb2tzLnB1c2goYil9fTtjLmpxcGxvdC5FbmhhbmNlZExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKG0seSl7dmFyIGY9dGhpcztpZih0aGlzLnNob3cpe3ZhciByPXRoaXMuX3Nlcmllczt2YXIgdTt2YXIgdz0icG9zaXRpb246YWJzb2x1dGU7Ijt3Kz0odGhpcy5iYWNrZ3JvdW5kKT8iYmFja2dyb3VuZDoiK3RoaXMuYmFja2dyb3VuZCsiOyI6IiI7dys9KHRoaXMuYm9yZGVyKT8iYm9yZGVyOiIrdGhpcy5ib3JkZXIrIjsiOiIiO3crPSh0aGlzLmZvbnRTaXplKT8iZm9udC1zaXplOiIrdGhpcy5mb250U2l6ZSsiOyI6IiI7dys9KHRoaXMuZm9udEZhbWlseSk/ImZvbnQtZmFtaWx5OiIrdGhpcy5mb250RmFtaWx5KyI7IjoiIjt3Kz0odGhpcy50ZXh0Q29sb3IpPyJjb2xvcjoiK3RoaXMudGV4dENvbG9yKyI7IjoiIjt3Kz0odGhpcy5tYXJnaW5Ub3AhPW51bGwpPyJtYXJnaW4tdG9wOiIrdGhpcy5tYXJnaW5Ub3ArIjsiOiIiO3crPSh0aGlzLm1hcmdpbkJvdHRvbSE9bnVsbCk/Im1hcmdpbi1ib3R0b206Iit0aGlzLm1hcmdpbkJvdHRvbSsiOyI6IiI7dys9KHRoaXMubWFyZ2luTGVmdCE9bnVsbCk/Im1hcmdpbi1sZWZ0OiIrdGhpcy5tYXJnaW5MZWZ0KyI7IjoiIjt3Kz0odGhpcy5tYXJnaW5SaWdodCE9bnVsbCk/Im1hcmdpbi1yaWdodDoiK3RoaXMubWFyZ2luUmlnaHQrIjsiOiIiO3RoaXMuX2VsZW09YygnPHRhYmxlIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIiBzdHlsZT0iJyt3KyciPjwvdGFibGU+Jyk7aWYodGhpcy5zZXJpZXNUb2dnbGUpe3RoaXMuX2VsZW0uY3NzKCJ6LWluZGV4IiwiMyIpfXZhciBDPWZhbHNlLHE9ZmFsc2UsZCxvO2lmKHRoaXMubnVtYmVyUm93cyl7ZD10aGlzLm51bWJlclJvd3M7aWYoIXRoaXMubnVtYmVyQ29sdW1ucyl7bz1NYXRoLmNlaWwoci5sZW5ndGgvZCl9ZWxzZXtvPXRoaXMubnVtYmVyQ29sdW1uc319ZWxzZXtpZih0aGlzLm51bWJlckNvbHVtbnMpe289dGhpcy5udW1iZXJDb2x1bW5zO2Q9TWF0aC5jZWlsKHIubGVuZ3RoL3RoaXMubnVtYmVyQ29sdW1ucyl9ZWxzZXtkPXIubGVuZ3RoO289MX19dmFyIEIseixlLGwsayxuLHAsdCxoLGc7dmFyIHY9MDtmb3IoQj1yLmxlbmd0aC0xO0I+PTA7Qi0tKXtpZihvPT0xJiZyW0JdLl9zdGFja3x8cltCXS5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09Yy5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlcil7cT10cnVlfX1mb3IoQj0wO0I8ZDtCKyspe2U9Yyhkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpKTtlLmFkZENsYXNzKCJqcXBsb3QtdGFibGUtbGVnZW5kIik7aWYocSl7ZS5wcmVwZW5kVG8odGhpcy5fZWxlbSl9ZWxzZXtlLmFwcGVuZFRvKHRoaXMuX2VsZW0pfWZvcih6PTA7ejxvO3orKyl7aWYodjxyLmxlbmd0aCYmKHJbdl0uc2hvd3x8clt2XS5zaG93TGFiZWwpKXt1PXJbdl07bj10aGlzLmxhYmVsc1t2XXx8dS5sYWJlbC50b1N0cmluZygpO2lmKG4pe3ZhciB4PXUuY29sb3I7aWYoIXEpe2lmKEI+MCl7Qz10cnVlfWVsc2V7Qz1mYWxzZX19ZWxzZXtpZihCPT1kLTEpe0M9ZmFsc2V9ZWxzZXtDPXRydWV9fXA9KEMpP3RoaXMucm93U3BhY2luZzoiMCI7bD1jKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIikpO2wuYWRkQ2xhc3MoImpxcGxvdC10YWJsZS1sZWdlbmQganFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2giKTtsLmNzcyh7dGV4dEFsaWduOiJjZW50ZXIiLHBhZGRpbmdUb3A6cH0pO2g9Yyhkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7aC5hZGRDbGFzcygianFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2gtb3V0bGluZSIpO2c9Yyhkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7Zy5hZGRDbGFzcygianFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2giKTtnLmNzcyh7YmFja2dyb3VuZENvbG9yOngsYm9yZGVyQ29sb3I6eH0pO2wuYXBwZW5kKGguYXBwZW5kKGcpKTtrPWMoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKSk7ay5hZGRDbGFzcygianFwbG90LXRhYmxlLWxlZ2VuZCBqcXBsb3QtdGFibGUtbGVnZW5kLWxhYmVsIik7ay5jc3MoInBhZGRpbmdUb3AiLHApO2lmKHRoaXMuZXNjYXBlSHRtbCl7ay50ZXh0KG4pfWVsc2V7ay5odG1sKG4pfWlmKHEpe2lmKHRoaXMuc2hvd0xhYmVscyl7ay5wcmVwZW5kVG8oZSl9aWYodGhpcy5zaG93U3dhdGNoZXMpe2wucHJlcGVuZFRvKGUpfX1lbHNle2lmKHRoaXMuc2hvd1N3YXRjaGVzKXtsLmFwcGVuZFRvKGUpfWlmKHRoaXMuc2hvd0xhYmVscyl7ay5hcHBlbmRUbyhlKX19aWYodGhpcy5zZXJpZXNUb2dnbGUpe3ZhciBBO2lmKHR5cGVvZih0aGlzLnNlcmllc1RvZ2dsZSk9PT0ic3RyaW5nInx8dHlwZW9mKHRoaXMuc2VyaWVzVG9nZ2xlKT09PSJudW1iZXIiKXtpZighYy5qcXBsb3QudXNlX2V4Y2FudmFzfHwhdGhpcy5kaXNhYmxlSUVGYWRpbmcpe0E9dGhpcy5zZXJpZXNUb2dnbGV9fWlmKHRoaXMuc2hvd1N3YXRjaGVzKXtsLmJpbmQoImNsaWNrIix7c2VyaWVzOnUsc3BlZWQ6QSxwbG90OnkscmVwbG90OnRoaXMuc2VyaWVzVG9nZ2xlUmVwbG90fSxhKTtsLmFkZENsYXNzKCJqcXBsb3Qtc2VyaWVzVG9nZ2xlIil9aWYodGhpcy5zaG93TGFiZWxzKXtrLmJpbmQoImNsaWNrIix7c2VyaWVzOnUsc3BlZWQ6QSxwbG90OnkscmVwbG90OnRoaXMuc2VyaWVzVG9nZ2xlUmVwbG90fSxhKTtrLmFkZENsYXNzKCJqcXBsb3Qtc2VyaWVzVG9nZ2xlIil9aWYoIXUuc2hvdyYmdS5zaG93TGFiZWwpe2wuYWRkQ2xhc3MoImpxcGxvdC1zZXJpZXMtaGlkZGVuIik7ay5hZGRDbGFzcygianFwbG90LXNlcmllcy1oaWRkZW4iKX19Qz10cnVlfX12Kyt9bD1rPWg9Zz1udWxsfX1yZXR1cm4gdGhpcy5fZWxlbX07dmFyIGE9ZnVuY3Rpb24oail7dmFyIGk9ai5kYXRhLG09aS5zZXJpZXMsaz1pLnJlcGxvdCxoPWkucGxvdCxmPWkuc3BlZWQsbD1tLmluZGV4LGc9ZmFsc2U7aWYobS5jYW52YXMuX2VsZW0uaXMoIjpoaWRkZW4iKXx8IW0uc2hvdyl7Zz10cnVlfXZhciBlPWZ1bmN0aW9uKCl7aWYoayl7dmFyIG49e307aWYoYy5pc1BsYWluT2JqZWN0KGspKXtjLmV4dGVuZCh0cnVlLG4sayl9aC5yZXBsb3Qobik7aWYoZyYmZil7dmFyIGQ9aC5zZXJpZXNbbF07aWYoZC5zaGFkb3dDYW52YXMuX2VsZW0pe2Quc2hhZG93Q2FudmFzLl9lbGVtLmhpZGUoKS5mYWRlSW4oZil9ZC5jYW52YXMuX2VsZW0uaGlkZSgpLmZhZGVJbihmKTtkLmNhbnZhcy5fZWxlbS5uZXh0QWxsKCIuanFwbG90LXBvaW50LWxhYmVsLmpxcGxvdC1zZXJpZXMtIitkLmluZGV4KS5oaWRlKCkuZmFkZUluKGYpfX1lbHNle3ZhciBkPWguc2VyaWVzW2xdO2lmKGQuY2FudmFzLl9lbGVtLmlzKCI6aGlkZGVuIil8fCFkLnNob3cpe2lmKHR5cGVvZiBoLm9wdGlvbnMubGVnZW5kLnNob3dTd2F0Y2hlcz09PSJ1bmRlZmluZWQifHxoLm9wdGlvbnMubGVnZW5kLnNob3dTd2F0Y2hlcz09PXRydWUpe2gubGVnZW5kLl9lbGVtLmZpbmQoInRkIikuZXEobCoyKS5hZGRDbGFzcygianFwbG90LXNlcmllcy1oaWRkZW4iKX1pZih0eXBlb2YgaC5vcHRpb25zLmxlZ2VuZC5zaG93TGFiZWxzPT09InVuZGVmaW5lZCJ8fGgub3B0aW9ucy5sZWdlbmQuc2hvd0xhYmVscz09PXRydWUpe2gubGVnZW5kLl9lbGVtLmZpbmQoInRkIikuZXEoKGwqMikrMSkuYWRkQ2xhc3MoImpxcGxvdC1zZXJpZXMtaGlkZGVuIil9fWVsc2V7aWYodHlwZW9mIGgub3B0aW9ucy5sZWdlbmQuc2hvd1N3YXRjaGVzPT09InVuZGVmaW5lZCJ8fGgub3B0aW9ucy5sZWdlbmQuc2hvd1N3YXRjaGVzPT09dHJ1ZSl7aC5sZWdlbmQuX2VsZW0uZmluZCgidGQiKS5lcShsKjIpLnJlbW92ZUNsYXNzKCJqcXBsb3Qtc2VyaWVzLWhpZGRlbiIpfWlmKHR5cGVvZiBoLm9wdGlvbnMubGVnZW5kLnNob3dMYWJlbHM9PT0idW5kZWZpbmVkInx8aC5vcHRpb25zLmxlZ2VuZC5zaG93TGFiZWxzPT09dHJ1ZSl7aC5sZWdlbmQuX2VsZW0uZmluZCgidGQiKS5lcSgobCoyKSsxKS5yZW1vdmVDbGFzcygianFwbG90LXNlcmllcy1oaWRkZW4iKX19fX07bS50b2dnbGVEaXNwbGF5KGosZSl9O3ZhciBiPWZ1bmN0aW9uKCl7aWYodGhpcy5sZWdlbmQucmVuZGVyZXIuY29uc3RydWN0b3I9PWMuanFwbG90LkVuaGFuY2VkTGVnZW5kUmVuZGVyZXImJnRoaXMubGVnZW5kLnNlcmllc1RvZ2dsZSl7dmFyIGQ9dGhpcy5sZWdlbmQuX2VsZW0uZGV0YWNoKCk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5hZnRlcihkKX19fSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.funnelRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuRnVubmVsUmVuZGVyZXIKICAgICAqIFBsdWdpbiByZW5kZXJlciB0byBkcmF3IGEgZnVubmVsIGNoYXJ0LgogICAgICogeCB2YWx1ZXMsIGlmIHByZXNlbnQsIHdpbGwgYmUgdXNlZCBhcyBsYWJlbHMuCiAgICAgKiB5IHZhbHVlcyBnaXZlIGFyZWEgc2l6ZS4KICAgICAqIAogICAgICogRnVubmVsIGNoYXJ0cyB3aWxsIGRyYXcgYSBzaW5nbGUgc2VyaWVzCiAgICAgKiBvbmx5LgogICAgICogCiAgICAgKiBUbyB1c2UgdGhpcyByZW5kZXJlciwgeW91IG5lZWQgdG8gaW5jbHVkZSB0aGUgCiAgICAgKiBmdW5uZWwgcmVuZGVyZXIgcGx1Z2luLCBmb3IgZXhhbXBsZToKICAgICAqIAogICAgICogPiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJwbHVnaW5zL2pxcGxvdC5mdW5uZWxSZW5kZXJlci5qcyI+PC9zY3JpcHQ+CiAgICAgKiAKICAgICAqIFByb3BlcnRpZXMgZGVzY3JpYmVkIGhlcmUgYXJlIHBhc3NlZCBpbnRvIHRoZSAkLmpxcGxvdCBmdW5jdGlvbgogICAgICogYXMgb3B0aW9ucyBvbiB0aGUgc2VyaWVzIHJlbmRlcmVyLiAgRm9yIGV4YW1wbGU6CiAgICAgKiAKICAgICAqID4gcGxvdDIgPSAkLmpxcGxvdCgnY2hhcnQyJywgW3MxLCBzMl0sIHsKICAgICAqID4gICAgIHNlcmllc0RlZmF1bHRzOiB7CiAgICAgKiA+ICAgICAgICAgcmVuZGVyZXI6JC5qcXBsb3QuRnVubmVsUmVuZGVyZXIsCiAgICAgKiA+ICAgICAgICAgcmVuZGVyZXJPcHRpb25zOnsKICAgICAqID4gICAgICAgICAgICAgIHNlY3Rpb25NYXJnaW46IDEyLAogICAgICogPiAgICAgICAgICAgICAgd2lkdGhSYXRpbzogMC4zCiAgICAgKiA+ICAgICAgICAgIH0KICAgICAqID4gICAgICB9CiAgICAgKiA+IH0pOwogICAgICogCiAgICAgKiBJTVBPUlRBTlQKICAgICAqIAogICAgICogKlRoZSBmdW5uZWwgcmVuZGVyZXIgd2lsbCByZW9yZGVyIGRhdGEgaW4gZGVzY2VuZGluZyBvcmRlciogc28gdGhlIGxhcmdlc3QgdmFsdWUgaW4KICAgICAqIHRoZSBkYXRhIHNldCBpcyBmaXJzdCBhbmQgZGlzcGxheWVkIG9uIHRvcCBvZiB0aGUgZnVubmVsLiAgRGF0YSB3aWxsIHRoZW4KICAgICAqIGJlIGRpc3BsYXllZCBpbiBkZXNjZW5kaW5nIG9yZGVyIGRvd24gdGhlIGZ1bm5lbC4gIFRoZSBhcmVhIG9mIGVhY2ggZnVubmVsCiAgICAgKiBzZWN0aW9uIHdpbGwgY29ycmVzcG9uZCB0byB0aGUgdmFsdWUgb2YgZWFjaCBkYXRhIHBvaW50IHJlbGF0aXZlIHRvIHRoZSBzdW0KICAgICAqIG9mIGFsbCB2YWx1ZXMuICBUaGF0IGlzIHNlY3Rpb24gYXJlYSBpcyBwcm9wb3J0aW9uYWwgdG8gc2VjdGlvbiB2YWx1ZSBkaXZpZGVkIGJ5IAogICAgICogc3VtIG9mIGFsbCBzZWN0aW9uIHZhbHVlcy4KICAgICAqIAogICAgICogSWYgeW91ciBkYXRhIGlzIG5vdCBpbiBkZXNjZW5kaW5nIG9yZGVyIHdoZW4gcGFzc2VkIGludG8gdGhlIHBsb3QsICppdCB3aWxsIGJlCiAgICAgKiByZW9yZGVyZWQqIHdoZW4gc3RvcmVkIGluIHRoZSBzZXJpZXMuZGF0YSBwcm9wZXJ0eS4gIEEgY29weSBvZiB0aGUgdW5vcmRlcmVkCiAgICAgKiBkYXRhIGlzIGtlcHQgaW4gdGhlIHNlcmllcy5fdW5vcmRlcmVkRGF0YSBwcm9wZXJ0eS4KICAgICAqIAogICAgICogQSBmdW5uZWwgcGxvdCB3aWxsIHRyaWdnZXIgZXZlbnRzIG9uIHRoZSBwbG90IHRhcmdldAogICAgICogYWNjb3JkaW5nIHRvIHVzZXIgaW50ZXJhY3Rpb24uICBBbGwgZXZlbnRzIHJldHVybiB0aGUgZXZlbnQgb2JqZWN0LAogICAgICogdGhlIHNlcmllcyBpbmRleCwgdGhlIHBvaW50IChzZWN0aW9uKSBpbmRleCwgYW5kIHRoZSBwb2ludCBkYXRhIGZvciAKICAgICAqIHRoZSBhcHByb3ByaWF0ZSBzZWN0aW9uLiAqTm90ZSogdGhlIHBvaW50IGluZGV4IHdpbGwgcmVmZXJyIHRvIHRoZSBvcmRlcmVkCiAgICAgKiBkYXRhLCBub3QgdGhlIG9yaWdpbmFsIHVub3JkZXJlZCBkYXRhLgogICAgICogCiAgICAgKiAnanFwbG90RGF0YU1vdXNlT3ZlcicgLSB0cmlnZ2VyZWQgd2hlbiBtb3VzaW5nIG92ZXIgYSBzZWN0aW9uLgogICAgICogJ2pxcGxvdERhdGFIaWdobGlnaHQnIC0gdHJpZ2dlcmVkIHRoZSBmaXJzdCB0aW1lIHVzZXIgbW91c2VzIG92ZXIgYSBzZWN0aW9uLAogICAgICogaWYgaGlnaGxpZ2h0aW5nIGlzIGVuYWJsZWQuCiAgICAgKiAnanFwbG90RGF0YVVuaGlnaGxpZ2h0JyAtIHRyaWdnZXJlZCB3aGVuIGEgdXNlciBtb3ZlcyB0aGUgbW91c2Ugb3V0IG9mCiAgICAgKiBhIGhpZ2hsaWdodGVkIHNlY3Rpb24uCiAgICAgKiAnanFwbG90RGF0YUNsaWNrJyAtIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiBhIHNlY3Rpb24uCiAgICAgKiAnanFwbG90RGF0YVJpZ2h0Q2xpY2snIC0gdGlnZ2VyZWQgd2hlbiB0aGUgdXNlciByaWdodCBjbGlja3Mgb24gYSBzZWN0aW9uIGlmCiAgICAgKiB0aGUgImNhcHR1cmVSaWdodENsaWNrIiBvcHRpb24gaXMgc2V0IHRvIHRydWUgb24gdGhlIHBsb3QuCiAgICAgKi8KICAgICQuanFwbG90LkZ1bm5lbFJlbmRlcmVyID0gZnVuY3Rpb24oKXsKICAgICAgICAkLmpxcGxvdC5MaW5lUmVuZGVyZXIuY2FsbCh0aGlzKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkZ1bm5lbFJlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTsKICAgICQuanFwbG90LkZ1bm5lbFJlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LkZ1bm5lbFJlbmRlcmVyOwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBhIHNlcmllcwogICAgJC5qcXBsb3QuRnVubmVsUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zLCBwbG90KSB7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAvLwogICAgICAgIC8vIHByb3A6IHBhZGRpbmcKICAgICAgICAvLyBwYWRkaW5nIGJldHdlZW4gdGhlIGZ1bm5lbCBhbmQgcGxvdCBlZGdlcywgbGVnZW5kLCBldGMuCiAgICAgICAgdGhpcy5wYWRkaW5nID0ge3RvcDogMjAsIHJpZ2h0OiAyMCwgYm90dG9tOiAyMCwgbGVmdDogMjB9OwogICAgICAgIC8vIHByb3A6IHNlY3Rpb25NYXJnaW4KICAgICAgICAvLyBzcGFjaW5nIGJldHdlZW4gZnVubmVsIHNlY3Rpb25zIGluIHBpeGVscy4KICAgICAgICB0aGlzLnNlY3Rpb25NYXJnaW4gPSA2OwogICAgICAgIC8vIHByb3A6IGZpbGwKICAgICAgICAvLyB0cnVlIG9yIGZhbHNlLCB3aGV0aGVyIHRvIGZpbGwgdGhlIGFyZWFzLgogICAgICAgIHRoaXMuZmlsbCA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogc2hhZG93T2Zmc2V0CiAgICAgICAgLy8gb2Zmc2V0IG9mIHRoZSBzaGFkb3cgZnJvbSB0aGUgYXJlYSBhbmQgb2Zmc2V0IG9mIAogICAgICAgIC8vIGVhY2ggc3VjY2VzaXZlIHN0cm9rZSBvZiB0aGUgc2hhZG93IGZyb20gdGhlIGxhc3QuCiAgICAgICAgdGhpcy5zaGFkb3dPZmZzZXQgPSAyOwogICAgICAgIC8vIHByb3A6IHNoYWRvd0FscGhhCiAgICAgICAgLy8gdHJhbnNwYXJlbmN5IG9mIHRoZSBzaGFkb3cgKDAgPSB0cmFuc3BhcmVudCwgMSA9IG9wYXF1ZSkKICAgICAgICB0aGlzLnNoYWRvd0FscGhhID0gMC4wNzsKICAgICAgICAvLyBwcm9wOiBzaGFkb3dEZXB0aAogICAgICAgIC8vIG51bWJlciBvZiBzdHJva2VzIHRvIGFwcGx5IHRvIHRoZSBzaGFkb3csIAogICAgICAgIC8vIGVhY2ggc3Ryb2tlIG9mZnNldCBzaGFkb3dPZmZzZXQgZnJvbSB0aGUgbGFzdC4KICAgICAgICB0aGlzLnNoYWRvd0RlcHRoID0gNTsKICAgICAgICAvLyBwcm9wOiBoaWdobGlnaHRNb3VzZU92ZXIKICAgICAgICAvLyBUcnVlIHRvIGhpZ2hsaWdodCBhcmVhIHdoZW4gbW91c2VkIG92ZXIuCiAgICAgICAgLy8gVGhpcyBtdXN0IGJlIGZhbHNlIHRvIGVuYWJsZSBoaWdobGlnaHRNb3VzZURvd24gdG8gaGlnaGxpZ2h0IHdoZW4gY2xpY2tpbmcgb24gYSBhcmVhLgogICAgICAgIHRoaXMuaGlnaGxpZ2h0TW91c2VPdmVyID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBoaWdobGlnaHRNb3VzZURvd24KICAgICAgICAvLyBUcnVlIHRvIGhpZ2hsaWdodCB3aGVuIGEgbW91c2UgYnV0dG9uIGlzIHByZXNzZWQgb3ZlciBhIGFyZWEuCiAgICAgICAgLy8gVGhpcyB3aWxsIGJlIGRpc2FibGVkIGlmIGhpZ2hsaWdodE1vdXNlT3ZlciBpcyB0cnVlLgogICAgICAgIHRoaXMuaGlnaGxpZ2h0TW91c2VEb3duID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogaGlnaGxpZ2h0Q29sb3JzCiAgICAgICAgLy8gYXJyYXkgb2YgY29sb3JzIHRvIHVzZSB3aGVuIGhpZ2hsaWdodGluZyBhbiBhcmVhLgogICAgICAgIHRoaXMuaGlnaGxpZ2h0Q29sb3JzID0gW107CiAgICAgICAgLy8gcHJvcDogd2lkdGhSYXRpbwogICAgICAgIC8vIFRoZSByYXRpbyBvZiB0aGUgd2lkdGggb2YgdGhlIHRvcCBvZiB0aGUgZnVubmVsIHRvIHRoZSBib3R0b20uCiAgICAgICAgLy8gYSByYXRpbyBvZiAwIHdpbGwgbWFrZSBhbiB1cHNpZGUgZG93biBweXJhbWlkLiAKICAgICAgICB0aGlzLndpZHRoUmF0aW8gPSAwLjI7CiAgICAgICAgLy8gcHJvcDogbGluZVdpZHRoCiAgICAgICAgLy8gd2lkdGggb2YgbGluZSBpZiBhcmVhcyBhcmUgc3Ryb2tlZCBhbmQgbm90IGZpbGxlZC4KICAgICAgICB0aGlzLmxpbmVXaWR0aCA9IDI7CiAgICAgICAgLy8gcHJvcDogZGF0YUxhYmVscwogICAgICAgIC8vIEVpdGhlciAnbGFiZWwnLCAndmFsdWUnLCAncGVyY2VudCcgb3IgYW4gYXJyYXkgb2YgbGFiZWxzIHRvIHBsYWNlIG9uIHRoZSBwaWUgc2xpY2VzLgogICAgICAgIC8vIERlZmF1bHRzIHRvIHBlcmNlbnRhZ2Ugb2YgZWFjaCBwaWUgc2xpY2UuCiAgICAgICAgdGhpcy5kYXRhTGFiZWxzID0gJ3BlcmNlbnQnOwogICAgICAgIC8vIHByb3A6IHNob3dEYXRhTGFiZWxzCiAgICAgICAgLy8gdHJ1ZSB0byBzaG93IGRhdGEgbGFiZWxzIG9uIHNsaWNlcy4KICAgICAgICB0aGlzLnNob3dEYXRhTGFiZWxzID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogZGF0YUxhYmVsRm9ybWF0U3RyaW5nCiAgICAgICAgLy8gRm9ybWF0IHN0cmluZyBmb3IgZGF0YSBsYWJlbHMuICBJZiBub25lLCAnJXMnIGlzIHVzZWQgZm9yICJsYWJlbCIgYW5kIGZvciBhcnJheXMsICclZCcgZm9yIHZhbHVlIGFuZCAnJWQlJScgZm9yIHBlcmNlbnRhZ2UuCiAgICAgICAgdGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmcgPSBudWxsOwogICAgICAgIC8vIHByb3A6IGRhdGFMYWJlbFRocmVzaG9sZAogICAgICAgIC8vIFRocmVzaGhvbGQgaW4gcGVyY2VudGFnZSAoMCAtIDEwMCkgb2YgcGllIGFyZWEsIGJlbG93IHdoaWNoIG5vIGxhYmVsIHdpbGwgYmUgZGlzcGxheWVkLgogICAgICAgIC8vIFRoaXMgYXBwbGllcyB0byBhbGwgbGFiZWwgdHlwZXMsIG5vdCBqdXN0IHRvIHBlcmNlbnRhZ2UgbGFiZWxzLgogICAgICAgIHRoaXMuZGF0YUxhYmVsVGhyZXNob2xkID0gMzsKICAgICAgICB0aGlzLl90eXBlID0gJ2Z1bm5lbCc7CiAgICAgICAgCiAgICAgICAgdGhpcy50aWNrUmVuZGVyZXIgPSAkLmpxcGxvdC5GdW5uZWxUaWNrUmVuZGVyZXI7CiAgICAgICAgCiAgICAgICAgLy8gaWYgdXNlciBoYXMgcGFzc2VkIGluIGhpZ2hsaWdodE1vdXNlRG93biBvcHRpb24gYW5kIG5vdCBzZXQgaGlnaGxpZ2h0TW91c2VPdmVyLCBkaXNhYmxlIGhpZ2hsaWdodE1vdXNlT3ZlcgogICAgICAgIGlmIChvcHRpb25zLmhpZ2hsaWdodE1vdXNlRG93biAmJiBvcHRpb25zLmhpZ2hsaWdodE1vdXNlT3ZlciA9PSBudWxsKSB7CiAgICAgICAgICAgIG9wdGlvbnMuaGlnaGxpZ2h0TW91c2VPdmVyID0gZmFsc2U7CiAgICAgICAgfQogICAgICAgIAogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgIAogICAgICAgIC8vIGluZGV4IG9mIHRoZSBjdXJyZW50eSBoaWdobGlnaHRlZCBwb2ludCwgaWYgYW55CiAgICAgICAgdGhpcy5faGlnaGxpZ2h0ZWRQb2ludCA9IG51bGw7CiAgICAgICAgCiAgICAgICAgLy8gbGVuZ3RocyBvZiBiYXNlcywgb3IgaG9yaXpvbnRhbCBzaWRlcyBvZiBhcmVhcyBvZiB0cmFwZXpvaWQuCiAgICAgICAgdGhpcy5fYmFzZXMgPSBbXTsKICAgICAgICAvLyB0b3RhbCBhcmVhCiAgICAgICAgdGhpcy5fYXRvdDsKICAgICAgICAvLyBhcmVhcyBvZiBzZWdtZW50cy4KICAgICAgICB0aGlzLl9hcmVhcyA9IFtdOwogICAgICAgIC8vIHZlcnRpY2FsIGxlbmd0aHMgb2Ygc2VnbWVudHMuCiAgICAgICAgdGhpcy5fbGVuZ3RocyA9IFtdOwogICAgICAgIC8vIGFuZ2xlIG9mIHRoZSBmdW5uZWwgdG8gdmVydGljYWwuCiAgICAgICAgdGhpcy5fYW5nbGU7CiAgICAgICAgdGhpcy5fZGF0YUluZGljZXMgPSBbXTsKICAgICAgICAKICAgICAgICAvLyBzb3J0IGRhdGEKICAgICAgICB0aGlzLl91bm9yZGVyZWREYXRhID0gJC5leHRlbmQodHJ1ZSwgW10sIHRoaXMuZGF0YSk7CiAgICAgICAgdmFyIGlkeHMgPSAkLmV4dGVuZCh0cnVlLCBbXSwgdGhpcy5kYXRhKTsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8aWR4cy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZHhzW2ldLnB1c2goaSk7CiAgICAgICAgfQogICAgICAgIHRoaXMuZGF0YS5zb3J0KCBmdW5jdGlvbiAoYSwgYikgeyByZXR1cm4gYlsxXSAtIGFbMV07IH0gKTsKICAgICAgICBpZHhzLnNvcnQoIGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBiWzFdIC0gYVsxXTsgfSk7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPGlkeHMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdGhpcy5fZGF0YUluZGljZXMucHVzaChpZHhzW2ldWzJdKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gc2V0IGhpZ2hsaWdodCBjb2xvcnMgaWYgbm9uZSBwcm92aWRlZAogICAgICAgIGlmICh0aGlzLmhpZ2hsaWdodENvbG9ycy5sZW5ndGggPT0gMCkgewogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5zZXJpZXNDb2xvcnMubGVuZ3RoOyBpKyspewogICAgICAgICAgICAgICAgdmFyIHJnYmEgPSAkLmpxcGxvdC5nZXRDb2xvckNvbXBvbmVudHModGhpcy5zZXJpZXNDb2xvcnNbaV0pOwogICAgICAgICAgICAgICAgdmFyIG5ld3JnYiA9IFtyZ2JhWzBdLCByZ2JhWzFdLCByZ2JhWzJdXTsKICAgICAgICAgICAgICAgIHZhciBzdW0gPSBuZXdyZ2JbMF0gKyBuZXdyZ2JbMV0gKyBuZXdyZ2JbMl07CiAgICAgICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8MzsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiBkYXJrZW5pbmcsIGxvd2VzdCBjb2xvciBjb21wb25lbnQgY2FuIGJlIGlzIDYwLgogICAgICAgICAgICAgICAgICAgIG5ld3JnYltqXSA9IChzdW0gPiA1NzApID8gIG5ld3JnYltqXSAqIDAuOCA6IG5ld3JnYltqXSArIDAuNCAqICgyNTUgLSBuZXdyZ2Jbal0pOwogICAgICAgICAgICAgICAgICAgIG5ld3JnYltqXSA9IHBhcnNlSW50KG5ld3JnYltqXSwgMTApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRDb2xvcnMucHVzaCgncmdiKCcrbmV3cmdiWzBdKycsJytuZXdyZ2JbMV0rJywnK25ld3JnYlsyXSsnKScpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwbG90LnBvc3RQYXJzZU9wdGlvbnNIb29rcy5hZGRPbmNlKHBvc3RQYXJzZU9wdGlvbnMpOwogICAgICAgIHBsb3QucG9zdEluaXRIb29rcy5hZGRPbmNlKHBvc3RJbml0KTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RNb3VzZU1vdmUnLCBoYW5kbGVNb3ZlKTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RNb3VzZURvd24nLCBoYW5kbGVNb3VzZURvd24pOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdE1vdXNlVXAnLCBoYW5kbGVNb3VzZVVwKTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RDbGljaycsIGhhbmRsZUNsaWNrKTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RSaWdodENsaWNrJywgaGFuZGxlUmlnaHRDbGljayk7CiAgICAgICAgcGxvdC5wb3N0RHJhd0hvb2tzLmFkZE9uY2UocG9zdFBsb3REcmF3KTsgICAgICAgIAogICAgICAgIAogICAgfTsKICAgIAogICAgLy8gZ3JpZERhdGEgd2lsbCBiZSBvZiBmb3JtIFtsYWJlbCwgcGVyY2VudGFnZSBvZiB0b3RhbF0KICAgICQuanFwbG90LkZ1bm5lbFJlbmRlcmVyLnByb3RvdHlwZS5zZXRHcmlkRGF0YSA9IGZ1bmN0aW9uKHBsb3QpIHsKICAgICAgICAvLyBzZXQgZ3JpZERhdGEgcHJvcGVydHkuICBUaGlzIHdpbGwgaG9sZCBhbmdsZSBpbiByYWRpYW5zIG9mIGVhY2ggZGF0YSBwb2ludC4KICAgICAgICB2YXIgc3VtID0gMDsKICAgICAgICB2YXIgdGQgPSBbXTsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgc3VtICs9IHRoaXMuZGF0YVtpXVsxXTsKICAgICAgICAgICAgdGQucHVzaChbdGhpcy5kYXRhW2ldWzBdLCB0aGlzLmRhdGFbaV1bMV1dKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gbm9ybWFsaXplIHkgdmFsdWVzLCBzbyBhcmVhcyBhcmUgcHJvcG9ydGlvbmFsLgogICAgICAgIGZvciAodmFyIGk9MDsgaTx0ZC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB0ZFtpXVsxXSA9IHRkW2ldWzFdL3N1bTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgdGhpcy5fYmFzZXMgPSBuZXcgQXJyYXkodGQubGVuZ3RoICsgMSk7CiAgICAgICAgdGhpcy5fbGVuZ3RocyA9IG5ldyBBcnJheSh0ZC5sZW5ndGgpOwogICAgICAgIAogICAgICAgIHRoaXMuZ3JpZERhdGEgPSB0ZDsKICAgIH07CiAgICAKICAgICQuanFwbG90LkZ1bm5lbFJlbmRlcmVyLnByb3RvdHlwZS5tYWtlR3JpZERhdGEgPSBmdW5jdGlvbihkYXRhLCBwbG90KSB7CiAgICAgICAgLy8gc2V0IGdyaWREYXRhIHByb3BlcnR5LiAgVGhpcyB3aWxsIGhvbGQgYW5nbGUgaW4gcmFkaWFucyBvZiBlYWNoIGRhdGEgcG9pbnQuCiAgICAgICAgdmFyIHN1bSA9IDA7CiAgICAgICAgdmFyIHRkID0gW107CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAgIHN1bSArPSB0aGlzLmRhdGFbaV1bMV07CiAgICAgICAgICAgIHRkLnB1c2goW3RoaXMuZGF0YVtpXVswXSwgdGhpcy5kYXRhW2ldWzFdXSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIG5vcm1hbGl6ZSB5IHZhbHVlcywgc28gYXJlYXMgYXJlIHByb3BvcnRpb25hbC4KICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGQubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdGRbaV1bMV0gPSB0ZFtpXVsxXS9zdW07CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHRoaXMuX2Jhc2VzID0gbmV3IEFycmF5KHRkLmxlbmd0aCArIDEpOwogICAgICAgIHRoaXMuX2xlbmd0aHMgPSBuZXcgQXJyYXkodGQubGVuZ3RoKTsKICAgICAgICAKICAgICAgICByZXR1cm4gdGQ7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5GdW5uZWxSZW5kZXJlci5wcm90b3R5cGUuZHJhd1NlY3Rpb24gPSBmdW5jdGlvbiAoY3R4LCB2ZXJ0aWNlcywgY29sb3IsIGlzU2hhZG93KSB7CiAgICAgICAgdmFyIGZpbGwgPSB0aGlzLmZpbGw7CiAgICAgICAgdmFyIGxpbmVXaWR0aCA9IHRoaXMubGluZVdpZHRoOwogICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgCiAgICAgICAgaWYgKGlzU2hhZG93KSB7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLnNoYWRvd0RlcHRoOyBpKyspIHsKICAgICAgICAgICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgICAgICAgICBjdHgudHJhbnNsYXRlKHRoaXMuc2hhZG93T2Zmc2V0Kk1hdGguY29zKHRoaXMuc2hhZG93QW5nbGUvMTgwKk1hdGguUEkpLCB0aGlzLnNoYWRvd09mZnNldCpNYXRoLnNpbih0aGlzLnNoYWRvd0FuZ2xlLzE4MCpNYXRoLlBJKSk7CiAgICAgICAgICAgICAgICBkb0RyYXcoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZG9EcmF3KCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGZ1bmN0aW9uIGRvRHJhdyAoKSB7CiAgICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTsgIAogICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gY29sb3I7CiAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IGNvbG9yOwogICAgICAgICAgICBjdHgubGluZVdpZHRoID0gbGluZVdpZHRoOwogICAgICAgICAgICBjdHgubW92ZVRvKHZlcnRpY2VzWzBdWzBdLCB2ZXJ0aWNlc1swXVsxXSk7CiAgICAgICAgICAgIGZvciAodmFyIGk9MTsgaTw0OyBpKyspIHsKICAgICAgICAgICAgICAgIGN0eC5saW5lVG8odmVydGljZXNbaV1bMF0sIHZlcnRpY2VzW2ldWzFdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjdHguY2xvc2VQYXRoKCk7CiAgICAgICAgICAgIGlmIChmaWxsKSB7CiAgICAgICAgICAgICAgICBjdHguZmlsbCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgY3R4LnN0cm9rZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChpc1NoYWRvdykgewogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5zaGFkb3dEZXB0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBzZXJpZXMKICAgICQuanFwbG90LkZ1bm5lbFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24gKGN0eCwgZ2QsIG9wdGlvbnMsIHBsb3QpIHsKICAgICAgICB2YXIgaTsKICAgICAgICB2YXIgb3B0cyA9IChvcHRpb25zICE9IHVuZGVmaW5lZCkgPyBvcHRpb25zIDoge307CiAgICAgICAgLy8gb2Zmc2V0IGFuZCBkaXJlY3Rpb24gb2Ygb2Zmc2V0IGR1ZSB0byBsZWdlbmQgcGxhY2VtZW50CiAgICAgICAgdmFyIG9mZnggPSAwOwogICAgICAgIHZhciBvZmZ5ID0gMDsKICAgICAgICB2YXIgdHJhbnMgPSAxOwogICAgICAgIHRoaXMuX2FyZWFzID0gW107CiAgICAgICAgLy8gdmFyIGNvbG9yR2VuZXJhdG9yID0gbmV3IHRoaXMuY29sb3JHZW5lcmF0b3IodGhpcy5zZXJpZXNDb2xvcnMpOwogICAgICAgIGlmIChvcHRpb25zLmxlZ2VuZEluZm8gJiYgb3B0aW9ucy5sZWdlbmRJbmZvLnBsYWNlbWVudCA9PSAnaW5zaWRlR3JpZCcpIHsKICAgICAgICAgICAgdmFyIGxpID0gb3B0aW9ucy5sZWdlbmRJbmZvOwogICAgICAgICAgICBzd2l0Y2ggKGxpLmxvY2F0aW9uKSB7CiAgICAgICAgICAgICAgICBjYXNlICdudyc6CiAgICAgICAgICAgICAgICAgICAgb2ZmeCA9IGxpLndpZHRoICsgbGkueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3cnOgogICAgICAgICAgICAgICAgICAgIG9mZnggPSBsaS53aWR0aCArIGxpLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdzdyc6CiAgICAgICAgICAgICAgICAgICAgb2ZmeCA9IGxpLndpZHRoICsgbGkueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ25lJzoKICAgICAgICAgICAgICAgICAgICBvZmZ4ID0gbGkud2lkdGggKyBsaS54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIHRyYW5zID0gLTE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdlJzoKICAgICAgICAgICAgICAgICAgICBvZmZ4ID0gbGkud2lkdGggKyBsaS54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIHRyYW5zID0gLTE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdzZSc6CiAgICAgICAgICAgICAgICAgICAgb2ZmeCA9IGxpLndpZHRoICsgbGkueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICB0cmFucyA9IC0xOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnbic6CiAgICAgICAgICAgICAgICAgICAgb2ZmeSA9IGxpLmhlaWdodCArIGxpLnlvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgICAgICAgICBvZmZ5ID0gbGkuaGVpZ2h0ICsgbGkueW9mZnNldDsKICAgICAgICAgICAgICAgICAgICB0cmFucyA9IC0xOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICB2YXIgbG9mZiA9ICh0cmFucz09MSkgPyB0aGlzLnBhZGRpbmcubGVmdCArIG9mZnggOiB0aGlzLnBhZGRpbmcubGVmdDsKICAgICAgICB2YXIgdG9mZiA9ICh0cmFucz09MSkgPyB0aGlzLnBhZGRpbmcudG9wICsgb2ZmeSA6IHRoaXMucGFkZGluZy50b3A7CiAgICAgICAgdmFyIHJvZmYgPSAodHJhbnM9PS0xKSA/IHRoaXMucGFkZGluZy5yaWdodCArIG9mZnggOiB0aGlzLnBhZGRpbmcucmlnaHQ7CiAgICAgICAgdmFyIGJvZmYgPSAodHJhbnM9PS0xKSA/IHRoaXMucGFkZGluZy5ib3R0b20gKyBvZmZ5IDogdGhpcy5wYWRkaW5nLmJvdHRvbTsKICAgICAgICAKICAgICAgICB2YXIgc2hhZG93ID0gKG9wdHMuc2hhZG93ICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNoYWRvdyA6IHRoaXMuc2hhZG93OwogICAgICAgIHZhciBzaG93TGluZSA9IChvcHRzLnNob3dMaW5lICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNob3dMaW5lIDogdGhpcy5zaG93TGluZTsKICAgICAgICB2YXIgZmlsbCA9IChvcHRzLmZpbGwgIT0gdW5kZWZpbmVkKSA/IG9wdHMuZmlsbCA6IHRoaXMuZmlsbDsKICAgICAgICB2YXIgY3cgPSBjdHguY2FudmFzLndpZHRoOwogICAgICAgIHZhciBjaCA9IGN0eC5jYW52YXMuaGVpZ2h0OwogICAgICAgIHRoaXMuX2Jhc2VzWzBdID0gY3cgLSBsb2ZmIC0gcm9mZjsKICAgICAgICB2YXIgbHRvdCA9IHRoaXMuX2xlbmd0aCA9IGNoIC0gdG9mZiAtIGJvZmY7CgogICAgICAgIHZhciBoZW5kID0gdGhpcy5fYmFzZXNbMF0qdGhpcy53aWR0aFJhdGlvOwogICAgICAgIHRoaXMuX2F0b3QgPSBsdG90LzIgKiAodGhpcy5fYmFzZXNbMF0gKyB0aGlzLl9iYXNlc1swXSp0aGlzLndpZHRoUmF0aW8pOwoKICAgICAgICB0aGlzLl9hbmdsZSA9IE1hdGguYXRhbigodGhpcy5fYmFzZXNbMF0gLSBoZW5kKS8yL2x0b3QpOwoKICAgICAgICBmb3IgKGk9MDsgaTxnZC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB0aGlzLl9hcmVhcy5wdXNoKGdkW2ldWzFdICogdGhpcy5fYXRvdCk7CiAgICAgICAgfQoKICAgICAgICAKICAgICAgICB2YXIgZ3Vlc3MsIGVyciwgY291bnQsIGxzdW09MDsKICAgICAgICB2YXIgdG9sZXJhbmNlID0gMC4wMDAxOwoKICAgICAgICBmb3IgKGk9MDsgaTx0aGlzLl9hcmVhcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBndWVzcyA9IHRoaXMuX2FyZWFzW2ldL3RoaXMuX2Jhc2VzW2ldOwogICAgICAgICAgICBlcnIgPSA5OTk5OTk7CiAgICAgICAgICAgIHRoaXMuX2xlbmd0aHNbaV0gPSBndWVzczsKICAgICAgICAgICAgY291bnQgPSAwOwogICAgICAgICAgICB3aGlsZSAoZXJyID4gdGhpcy5fbGVuZ3Roc1tpXSp0b2xlcmFuY2UgJiYgY291bnQgPCAxMDApIHsKICAgICAgICAgICAgICAgIHRoaXMuX2xlbmd0aHNbaV0gPSB0aGlzLl9hcmVhc1tpXS8odGhpcy5fYmFzZXNbaV0gLSB0aGlzLl9sZW5ndGhzW2ldICogTWF0aC50YW4odGhpcy5fYW5nbGUpKTsKICAgICAgICAgICAgICAgIGVyciA9IE1hdGguYWJzKHRoaXMuX2xlbmd0aHNbaV0gLSBndWVzcyk7CiAgICAgICAgICAgICAgICB0aGlzLl9iYXNlc1tpKzFdID0gdGhpcy5fYmFzZXNbaV0gLSAoMip0aGlzLl9sZW5ndGhzW2ldKk1hdGgudGFuKHRoaXMuX2FuZ2xlKSk7CiAgICAgICAgICAgICAgICBndWVzcyA9IHRoaXMuX2xlbmd0aHNbaV07CiAgICAgICAgICAgICAgICBjb3VudCsrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxzdW0gKz0gdGhpcy5fbGVuZ3Roc1tpXTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gZmlndXJlIG91dCB2ZXJ0aWNlcyBvZiBlYWNoIHNlY3Rpb24KICAgICAgICB0aGlzLl92ZXJ0aWNlcyA9IG5ldyBBcnJheShnZC5sZW5ndGgpOwogICAgICAgIAogICAgICAgIC8vIHRoZXNlIGFyZSA0IGNvbmVycyBvZiBlbnRpcmUgdHJhcGV6b2lkCiAgICAgICAgdmFyIHAwID0gW2xvZmYsIHRvZmZdLAogICAgICAgICAgICBwMSA9IFtsb2ZmK3RoaXMuX2Jhc2VzWzBdLCB0b2ZmXSwKICAgICAgICAgICAgcDIgPSBbbG9mZiArICh0aGlzLl9iYXNlc1swXSAtIHRoaXMuX2Jhc2VzW3RoaXMuX2Jhc2VzLmxlbmd0aC0xXSkvMiwgdG9mZiArIHRoaXMuX2xlbmd0aF0sCiAgICAgICAgICAgIHAzID0gW3AyWzBdICsgdGhpcy5fYmFzZXNbdGhpcy5fYmFzZXMubGVuZ3RoLTFdLCBwMlsxXV07CiAgICAgICAgICAgIAogICAgICAgIC8vIGVxdWF0aW9ucyBvZiByaWdodCBhbmQgbGVmdCBzaWRlcywgcmV0dXJucyB4LCB5IHZhbHVlcyBnaXZlbiBoZWlnaHQgb2Ygc2VjdGlvbiAoeSB2YWx1ZSkKICAgICAgICBmdW5jdGlvbiBmaW5kbGVmdCAobCkgewogICAgICAgICAgICB2YXIgbSA9IChwMFsxXSAtIHAyWzFdKS8ocDBbMF0gLSBwMlswXSk7CiAgICAgICAgICAgIHZhciBiID0gcDBbMV0gLSBtKnAwWzBdOwogICAgICAgICAgICB2YXIgeSA9IGwgKyBwMFsxXTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHJldHVybiBbKHkgLSBiKS9tLCB5XTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZnVuY3Rpb24gZmluZHJpZ2h0IChsKSB7CiAgICAgICAgICAgIHZhciBtID0gKHAxWzFdIC0gcDNbMV0pLyhwMVswXSAtIHAzWzBdKTsKICAgICAgICAgICAgdmFyIGIgPSBwMVsxXSAtIG0qcDFbMF07CiAgICAgICAgICAgIHZhciB5ID0gbCArIHAxWzFdOwogICAgICAgICAgICAKICAgICAgICAgICAgcmV0dXJuIFsoeSAtIGIpL20sIHldOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB2YXIgeCA9IG9mZngsIHkgPSBvZmZ5OwogICAgICAgIHZhciBoPTAsIGFkaj0wOwogICAgICAgIAogICAgICAgIGZvciAoaT0wOyBpPGdkLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHRoaXMuX3ZlcnRpY2VzW2ldID0gbmV3IEFycmF5KCk7CiAgICAgICAgICAgIHZhciB2ID0gdGhpcy5fdmVydGljZXNbaV07CiAgICAgICAgICAgIHZhciBzbSA9IHRoaXMuc2VjdGlvbk1hcmdpbjsKICAgICAgICAgICAgaWYgKGkgPT0gMCkgewogICAgICAgICAgICAgICAgYWRqID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaSA9PSAxKSB7CiAgICAgICAgICAgICAgICBhZGogPSBzbS8zOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGkgPiAwICYmIGkgPCBnZC5sZW5ndGgtMSkgewogICAgICAgICAgICAgICAgYWRqID0gc20vMjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChpID09IGdkLmxlbmd0aCAtMSkgewogICAgICAgICAgICAgICAgYWRqID0gMipzbS8zOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHYucHVzaChmaW5kbGVmdChoK2FkaikpOwogICAgICAgICAgICB2LnB1c2goZmluZHJpZ2h0KGgrYWRqKSk7CiAgICAgICAgICAgIGggKz0gdGhpcy5fbGVuZ3Roc1tpXTsKICAgICAgICAgICAgaWYgKGkgPT0gMCkgewogICAgICAgICAgICAgICAgYWRqID0gLTIqc20vMzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChpID4gMCAmJiBpIDwgZ2QubGVuZ3RoLTEpIHsKICAgICAgICAgICAgICAgIGFkaiA9IC1zbS8yOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGkgPT0gZ2QubGVuZ3RoIC0gMSkgewogICAgICAgICAgICAgICAgYWRqID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICB2LnB1c2goZmluZHJpZ2h0KGgrYWRqKSk7CiAgICAgICAgICAgIHYucHVzaChmaW5kbGVmdChoK2FkaikpOwogICAgICAgICAgICAKICAgICAgICB9CgogICAgICAgIGlmICh0aGlzLnNoYWRvdykgewogICAgICAgICAgICB2YXIgc2hhZG93Q29sb3IgPSAncmdiYSgwLDAsMCwnK3RoaXMuc2hhZG93QWxwaGErJyknOwogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8Z2QubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuZHJhd1NlY3Rpb24uY2FsbCAodGhpcywgY3R4LCB0aGlzLl92ZXJ0aWNlc1tpXSwgc2hhZG93Q29sb3IsIHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICBmb3IgKHZhciBpPTA7IGk8Z2QubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHYgPSB0aGlzLl92ZXJ0aWNlc1tpXTsKICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5kcmF3U2VjdGlvbi5jYWxsICh0aGlzLCBjdHgsIHYsIHRoaXMuc2VyaWVzQ29sb3JzW2ldKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLnNob3dEYXRhTGFiZWxzICYmIGdkW2ldWzFdKjEwMCA+PSB0aGlzLmRhdGFMYWJlbFRocmVzaG9sZCkgewogICAgICAgICAgICAgICAgdmFyIGZzdHIsIGxhYmVsOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAodGhpcy5kYXRhTGFiZWxzID09ICdsYWJlbCcpIHsKICAgICAgICAgICAgICAgICAgICBmc3RyID0gdGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmcgfHwgJyVzJzsKICAgICAgICAgICAgICAgICAgICBsYWJlbCA9ICQuanFwbG90LnNwcmludGYoZnN0ciwgZ2RbaV1bMF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5kYXRhTGFiZWxzID09ICd2YWx1ZScpIHsKICAgICAgICAgICAgICAgICAgICBmc3RyID0gdGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmcgfHwgJyVkJzsKICAgICAgICAgICAgICAgICAgICBsYWJlbCA9ICQuanFwbG90LnNwcmludGYoZnN0ciwgdGhpcy5kYXRhW2ldWzFdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMuZGF0YUxhYmVscyA9PSAncGVyY2VudCcpIHsKICAgICAgICAgICAgICAgICAgICBmc3RyID0gdGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmcgfHwgJyVkJSUnOwogICAgICAgICAgICAgICAgICAgIGxhYmVsID0gJC5qcXBsb3Quc3ByaW50Zihmc3RyLCBnZFtpXVsxXSoxMDApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5kYXRhTGFiZWxzLmNvbnN0cnVjdG9yID09IEFycmF5KSB7CiAgICAgICAgICAgICAgICAgICAgZnN0ciA9IHRoaXMuZGF0YUxhYmVsRm9ybWF0U3RyaW5nIHx8ICclcyc7CiAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSAkLmpxcGxvdC5zcHJpbnRmKGZzdHIsIHRoaXMuZGF0YUxhYmVsc1t0aGlzLl9kYXRhSW5kaWNlc1tpXV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgZmFjdCA9ICh0aGlzLl9yYWRpdXMgKSAqIHRoaXMuZGF0YUxhYmVsUG9zaXRpb25GYWN0b3IgKyB0aGlzLnNsaWNlTWFyZ2luICsgdGhpcy5kYXRhTGFiZWxOdWRnZTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIHggPSAodlswXVswXSArIHZbMV1bMF0pLzIgKyB0aGlzLmNhbnZhcy5fb2Zmc2V0cy5sZWZ0OwogICAgICAgICAgICAgICAgdmFyIHkgPSAodlsxXVsxXSArIHZbMl1bMV0pLzIgKyB0aGlzLmNhbnZhcy5fb2Zmc2V0cy50b3A7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBsYWJlbGVsZW0gPSAkKCc8c3BhbiBjbGFzcz0ianFwbG90LWZ1bm5lbC1zZXJpZXMganFwbG90LWRhdGEtbGFiZWwiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsiPicgKyBsYWJlbCArICc8L3NwYW4+JykuaW5zZXJ0QmVmb3JlKHBsb3QuZXZlbnRDYW52YXMuX2VsZW0pOwogICAgICAgICAgICAgICAgeCAtPSBsYWJlbGVsZW0ud2lkdGgoKS8yOwogICAgICAgICAgICAgICAgeSAtPSBsYWJlbGVsZW0uaGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgIHggPSBNYXRoLnJvdW5kKHgpOwogICAgICAgICAgICAgICAgeSA9IE1hdGgucm91bmQoeSk7CiAgICAgICAgICAgICAgICBsYWJlbGVsZW0uY3NzKHtsZWZ0OiB4LCB0b3A6IHl9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICB9CiAgICAgICAgICAgICAgIAogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRnVubmVsQXhpc1JlbmRlcmVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgJC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyLmNhbGwodGhpcyk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5GdW5uZWxBeGlzUmVuZGVyZXIucHJvdG90eXBlID0gbmV3ICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlcigpOwogICAgJC5qcXBsb3QuRnVubmVsQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LkZ1bm5lbEF4aXNSZW5kZXJlcjsKICAgICAgICAKICAgIAogICAgLy8gVGhlcmUgYXJlIG5vIHRyYWRpdGlvbmFsIGF4ZXMgb24gYSBmdW5uZWwgY2hhcnQuICBXZSBqdXN0IG5lZWQgdG8gcHJvdmlkZQogICAgLy8gZHVtbXkgb2JqZWN0cyB3aXRoIHByb3BlcnRpZXMgc28gdGhlIHBsb3Qgd2lsbCByZW5kZXIuCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBheGlzIG9iamVjdC4KICAgICQuanFwbG90LkZ1bm5lbEF4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpewogICAgICAgIC8vCiAgICAgICAgdGhpcy50aWNrUmVuZGVyZXIgPSAkLmpxcGxvdC5GdW5uZWxUaWNrUmVuZGVyZXI7CiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CiAgICAgICAgLy8gSSBkb24ndCB0aGluayBJJ20gZ29pbmcgdG8gbmVlZCBfZGF0YUJvdW5kcyBoZXJlLgogICAgICAgIC8vIGhhdmUgdG8gZ28gQXhpcyBzY2FsaW5nIGluIGEgd2F5IHRvIGZpdCBjaGFydCBvbnRvIHBsb3QgYXJlYQogICAgICAgIC8vIGFuZCBwcm92aWRlIHUycCBhbmQgcDJ1IGZ1bmN0aW9uYWxpdHkgZm9yIG1vdXNlIGN1cnNvciwgZXRjLgogICAgICAgIC8vIGZvciBjb252aWVuZW5jZSBzZXQgX2RhdGFCb3VuZHMgdG8gMCBhbmQgMTAwIGFuZAogICAgICAgIC8vIHNldCBtaW4vbWF4IHRvIDAgYW5kIDEwMC4KICAgICAgICB0aGlzLl9kYXRhQm91bmRzID0ge21pbjowLCBtYXg6MTAwfTsKICAgICAgICB0aGlzLm1pbiA9IDA7CiAgICAgICAgdGhpcy5tYXggPSAxMDA7CiAgICAgICAgdGhpcy5zaG93VGlja3MgPSBmYWxzZTsKICAgICAgICB0aGlzLnRpY2tzID0gW107CiAgICAgICAgdGhpcy5zaG93TWFyayA9IGZhbHNlOwogICAgICAgIHRoaXMuc2hvdyA9IGZhbHNlOyAKICAgIH07CiAgICAKICAgIAogICAgCiAgICAvKioKICAgICAqIENsYXNzOiAkLmpxcGxvdC5GdW5uZWxMZWdlbmRSZW5kZXJlcgogICAgICogTGVnZW5kIFJlbmRlcmVyIHNwZWNpZmljIHRvIGZ1bm5lbCBwbG90cy4gIFNldCBieSBkZWZhdWx0CiAgICAgKiB3aGVuIHRoZSB1c2VyIGNyZWF0ZXMgYSBmdW5uZWwgcGxvdC4KICAgICAqLwogICAgJC5qcXBsb3QuRnVubmVsTGVnZW5kUmVuZGVyZXIgPSBmdW5jdGlvbigpewogICAgICAgICQuanFwbG90LlRhYmxlTGVnZW5kUmVuZGVyZXIuY2FsbCh0aGlzKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkZ1bm5lbExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyKCk7CiAgICAkLmpxcGxvdC5GdW5uZWxMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5GdW5uZWxMZWdlbmRSZW5kZXJlcjsKICAgIAogICAgJC5qcXBsb3QuRnVubmVsTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAvLwogICAgICAgIC8vIHByb3A6IG51bWJlclJvd3MKICAgICAgICAvLyBNYXhpbXVtIG51bWJlciBvZiByb3dzIGluIHRoZSBsZWdlbmQuICAwIG9yIG51bGwgZm9yIHVubGltaXRlZC4KICAgICAgICB0aGlzLm51bWJlclJvd3MgPSBudWxsOwogICAgICAgIC8vIHByb3A6IG51bWJlckNvbHVtbnMKICAgICAgICAvLyBNYXhpbXVtIG51bWJlciBvZiBjb2x1bW5zIGluIHRoZSBsZWdlbmQuICAwIG9yIG51bGwgZm9yIHVubGltaXRlZC4KICAgICAgICB0aGlzLm51bWJlckNvbHVtbnMgPSBudWxsOwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggY29udGV4dCBvZiBsZWdlbmQKICAgICQuanFwbG90LkZ1bm5lbExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGxlZ2VuZCA9IHRoaXM7CiAgICAgICAgaWYgKHRoaXMuc2hvdykgewogICAgICAgICAgICB2YXIgc2VyaWVzID0gdGhpcy5fc2VyaWVzOwogICAgICAgICAgICB2YXIgc3MgPSAncG9zaXRpb246YWJzb2x1dGU7JzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMuYmFja2dyb3VuZCkgPyAnYmFja2dyb3VuZDonK3RoaXMuYmFja2dyb3VuZCsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMuYm9yZGVyKSA/ICdib3JkZXI6Jyt0aGlzLmJvcmRlcisnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMuZm9udFNpemUpID8gJ2ZvbnQtc2l6ZTonK3RoaXMuZm9udFNpemUrJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLmZvbnRGYW1pbHkpID8gJ2ZvbnQtZmFtaWx5OicrdGhpcy5mb250RmFtaWx5Kyc7JyA6ICcnOwogICAgICAgICAgICBzcyArPSAodGhpcy50ZXh0Q29sb3IpID8gJ2NvbG9yOicrdGhpcy50ZXh0Q29sb3IrJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLm1hcmdpblRvcCAhPSBudWxsKSA/ICdtYXJnaW4tdG9wOicrdGhpcy5tYXJnaW5Ub3ArJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLm1hcmdpbkJvdHRvbSAhPSBudWxsKSA/ICdtYXJnaW4tYm90dG9tOicrdGhpcy5tYXJnaW5Cb3R0b20rJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLm1hcmdpbkxlZnQgIT0gbnVsbCkgPyAnbWFyZ2luLWxlZnQ6Jyt0aGlzLm1hcmdpbkxlZnQrJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLm1hcmdpblJpZ2h0ICE9IG51bGwpID8gJ21hcmdpbi1yaWdodDonK3RoaXMubWFyZ2luUmlnaHQrJzsnIDogJyc7CiAgICAgICAgICAgIHRoaXMuX2VsZW0gPSAkKCc8dGFibGUgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSInK3NzKyciPjwvdGFibGU+Jyk7CiAgICAgICAgICAgIC8vIEZ1bm5lbCBjaGFydHMgbGVnZW5kcyBkb24ndCBnbyBieSBudW1iZXIgb2Ygc2VyaWVzLCBidXQgYnkgbnVtYmVyIG9mIGRhdGEgcG9pbnRzCiAgICAgICAgICAgIC8vIGluIHRoZSBzZXJpZXMuICBSZWZhY3RvciB0aGluZ3MgaGVyZSBmb3IgdGhhdC4KICAgICAgICAgICAgCiAgICAgICAgICAgIHZhciBwYWQgPSBmYWxzZSwgCiAgICAgICAgICAgICAgICByZXZlcnNlID0gZmFsc2UsCiAgICAgICAgICAgICAgICBuciwgbmM7CiAgICAgICAgICAgIHZhciBzID0gc2VyaWVzWzBdOwogICAgICAgICAgICB2YXIgY29sb3JHZW5lcmF0b3IgPSBuZXcgJC5qcXBsb3QuQ29sb3JHZW5lcmF0b3Iocy5zZXJpZXNDb2xvcnMpOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHMuc2hvdykgewogICAgICAgICAgICAgICAgdmFyIHBkID0gcy5kYXRhOwogICAgICAgICAgICAgICAgaWYgKHRoaXMubnVtYmVyUm93cykgewogICAgICAgICAgICAgICAgICAgIG5yID0gdGhpcy5udW1iZXJSb3dzOwogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5udW1iZXJDb2x1bW5zKXsKICAgICAgICAgICAgICAgICAgICAgICAgbmMgPSBNYXRoLmNlaWwocGQubGVuZ3RoL25yKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgbmMgPSB0aGlzLm51bWJlckNvbHVtbnM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5udW1iZXJDb2x1bW5zKSB7CiAgICAgICAgICAgICAgICAgICAgbmMgPSB0aGlzLm51bWJlckNvbHVtbnM7CiAgICAgICAgICAgICAgICAgICAgbnIgPSBNYXRoLmNlaWwocGQubGVuZ3RoL3RoaXMubnVtYmVyQ29sdW1ucyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBuciA9IHBkLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBuYyA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBpLCBqLCB0ciwgdGQxLCB0ZDIsIGx0LCBycywgY29sb3I7CiAgICAgICAgICAgICAgICB2YXIgaWR4ID0gMDsgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPG5yOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAocmV2ZXJzZSl7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyID0gJCgnPHRyIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIj48L3RyPicpLnByZXBlbmRUbyh0aGlzLl9lbGVtKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgdHIgPSAkKCc8dHIgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiPjwvdHI+JykuYXBwZW5kVG8odGhpcy5fZWxlbSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZvciAoaj0wOyBqPG5jOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA8IHBkLmxlbmd0aCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsdCA9IHRoaXMubGFiZWxzW2lkeF0gfHwgcGRbaWR4XVswXS50b1N0cmluZygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3IgPSBjb2xvckdlbmVyYXRvci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJldmVyc2UpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpPjApewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09IG5yIC0xKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcnMgPSAocGFkKSA/IHRoaXMucm93U3BhY2luZyA6ICcwJzsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxID0gJCgnPHRkIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6JytycysnOyI+JysKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPGRpdj48ZGl2IGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaCIgc3R5bGU9ImJvcmRlci1jb2xvcjonK2NvbG9yKyc7Ij48L2Rpdj4nKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj48L3RkPicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQyID0gJCgnPHRkIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIiBzdHlsZT0icGFkZGluZy10b3A6JytycysnOyI+PC90ZD4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVzY2FwZUh0bWwpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi50ZXh0KGx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5odG1sKGx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXZlcnNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQyLnByZXBlbmRUbyh0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxLnByZXBlbmRUbyh0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDEuYXBwZW5kVG8odHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5hcHBlbmRUbyh0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlkeCsrOwogICAgICAgICAgICAgICAgICAgIH0gICAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy5fZWxlbTsgICAgICAgICAgICAgICAgCiAgICB9OwogICAgCiAgICAvLyAkLmpxcGxvdC5GdW5uZWxMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUucGFjayA9IGZ1bmN0aW9uKG9mZnNldHMpIHsKICAgIC8vICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAvLyAgICAgICAgIC8vIGZha2UgYSBncmlkIGZvciBwb3NpdGlvbmluZwogICAgLy8gICAgICAgICB2YXIgZ3JpZCA9IHtfdG9wOm9mZnNldHMudG9wLCBfbGVmdDpvZmZzZXRzLmxlZnQsIF9yaWdodDpvZmZzZXRzLnJpZ2h0LCBfYm90dG9tOnRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIG9mZnNldHMuYm90dG9tfTsgICAgICAgIAogICAgLy8gICAgICAgICBpZiAodGhpcy5wbGFjZW1lbnQgPT0gJ2luc2lkZUdyaWQnKSB7CiAgICAvLyAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubG9jYXRpb24pIHsKICAgIC8vICAgICAgICAgICAgICAgICBjYXNlICdudyc6CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZ3JpZC5fbGVmdCArIHRoaXMueG9mZnNldDsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBncmlkLl90b3AgKyB0aGlzLnlvZmZzZXQ7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCdsZWZ0JywgYSk7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCd0b3AnLCBiKTsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAvLyAgICAgICAgICAgICAgICAgY2FzZSAnbic6CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gKG9mZnNldHMubGVmdCArICh0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIG9mZnNldHMucmlnaHQpKS8yIC0gdGhpcy5nZXRXaWR0aCgpLzI7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gZ3JpZC5fdG9wICsgdGhpcy55b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcygnbGVmdCcsIGEpOwogICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcygndG9wJywgYik7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgLy8gICAgICAgICAgICAgICAgIGNhc2UgJ25lJzoKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBvZmZzZXRzLnJpZ2h0ICsgdGhpcy54b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQuX3RvcCArIHRoaXMueW9mZnNldDsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe3JpZ2h0OmEsIHRvcDpifSk7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgLy8gICAgICAgICAgICAgICAgIGNhc2UgJ2UnOgogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG9mZnNldHMucmlnaHQgKyB0aGlzLnhvZmZzZXQ7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gKG9mZnNldHMudG9wICsgKHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIG9mZnNldHMuYm90dG9tKSkvMiAtIHRoaXMuZ2V0SGVpZ2h0KCkvMjsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe3JpZ2h0OmEsIHRvcDpifSk7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgLy8gICAgICAgICAgICAgICAgIGNhc2UgJ3NlJzoKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBvZmZzZXRzLnJpZ2h0ICsgdGhpcy54b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IG9mZnNldHMuYm90dG9tICsgdGhpcy55b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6YSwgYm90dG9tOmJ9KTsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAvLyAgICAgICAgICAgICAgICAgY2FzZSAncyc6CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gKG9mZnNldHMubGVmdCArICh0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIG9mZnNldHMucmlnaHQpKS8yIC0gdGhpcy5nZXRXaWR0aCgpLzI7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gb2Zmc2V0cy5ib3R0b20gKyB0aGlzLnlvZmZzZXQ7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtsZWZ0OmEsIGJvdHRvbTpifSk7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgLy8gICAgICAgICAgICAgICAgIGNhc2UgJ3N3JzoKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBncmlkLl9sZWZ0ICsgdGhpcy54b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IG9mZnNldHMuYm90dG9tICsgdGhpcy55b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7bGVmdDphLCBib3R0b206Yn0pOwogICAgLy8gICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgIC8vICAgICAgICAgICAgICAgICBjYXNlICd3JzoKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBncmlkLl9sZWZ0ICsgdGhpcy54b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IChvZmZzZXRzLnRvcCArICh0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQgLSBvZmZzZXRzLmJvdHRvbSkpLzIgLSB0aGlzLmdldEhlaWdodCgpLzI7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtsZWZ0OmEsIHRvcDpifSk7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgLy8gICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICAvLyBzYW1lIGFzICdzZScKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBncmlkLl9yaWdodCAtIHRoaXMueG9mZnNldDsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBncmlkLl9ib3R0b20gKyB0aGlzLnlvZmZzZXQ7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtyaWdodDphLCBib3R0b206Yn0pOwogICAgLy8gICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgIC8vICAgICAgICAgICAgIH0KICAgIC8vICAgICAgICAgICAgIAogICAgLy8gICAgICAgICB9CiAgICAvLyAgICAgICAgIGVsc2UgewogICAgLy8gICAgICAgICAgICAgc3dpdGNoICh0aGlzLmxvY2F0aW9uKSB7CiAgICAvLyAgICAgICAgICAgICAgICAgY2FzZSAnbncnOgogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoIC0gZ3JpZC5fbGVmdCArIHRoaXMueG9mZnNldDsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBncmlkLl90b3AgKyB0aGlzLnlvZmZzZXQ7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCdyaWdodCcsIGEpOwogICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcygndG9wJywgYik7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgLy8gICAgICAgICAgICAgICAgIGNhc2UgJ24nOgogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IChvZmZzZXRzLmxlZnQgKyAodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBvZmZzZXRzLnJpZ2h0KSkvMiAtIHRoaXMuZ2V0V2lkdGgoKS8yOwogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIGdyaWQuX3RvcCArIHRoaXMueW9mZnNldDsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoJ2xlZnQnLCBhKTsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoJ2JvdHRvbScsIGIpOwogICAgLy8gICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgIC8vICAgICAgICAgICAgICAgICBjYXNlICduZSc6CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBvZmZzZXRzLnJpZ2h0ICsgdGhpcy54b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQuX3RvcCArIHRoaXMueW9mZnNldDsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe2xlZnQ6YSwgdG9wOmJ9KTsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAvLyAgICAgICAgICAgICAgICAgY2FzZSAnZSc6CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBvZmZzZXRzLnJpZ2h0ICsgdGhpcy54b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IChvZmZzZXRzLnRvcCArICh0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQgLSBvZmZzZXRzLmJvdHRvbSkpLzIgLSB0aGlzLmdldEhlaWdodCgpLzI7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtsZWZ0OmEsIHRvcDpifSk7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgLy8gICAgICAgICAgICAgICAgIGNhc2UgJ3NlJzoKICAgIC8vICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIG9mZnNldHMucmlnaHQgKyB0aGlzLnhvZmZzZXQ7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gb2Zmc2V0cy5ib3R0b20gKyB0aGlzLnlvZmZzZXQ7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtsZWZ0OmEsIGJvdHRvbTpifSk7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgLy8gICAgICAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IChvZmZzZXRzLmxlZnQgKyAodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBvZmZzZXRzLnJpZ2h0KSkvMiAtIHRoaXMuZ2V0V2lkdGgoKS8yOwogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIG9mZnNldHMuYm90dG9tICsgdGhpcy55b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7bGVmdDphLCB0b3A6Yn0pOwogICAgLy8gICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgIC8vICAgICAgICAgICAgICAgICBjYXNlICdzdyc6CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBncmlkLl9sZWZ0ICsgdGhpcy54b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IG9mZnNldHMuYm90dG9tICsgdGhpcy55b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6YSwgYm90dG9tOmJ9KTsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAvLyAgICAgICAgICAgICAgICAgY2FzZSAndyc6CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBncmlkLl9sZWZ0ICsgdGhpcy54b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IChvZmZzZXRzLnRvcCArICh0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQgLSBvZmZzZXRzLmJvdHRvbSkpLzIgLSB0aGlzLmdldEhlaWdodCgpLzI7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtyaWdodDphLCB0b3A6Yn0pOwogICAgLy8gICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgIC8vICAgICAgICAgICAgICAgICBkZWZhdWx0OiAgLy8gc2FtZSBhcyAnc2UnCiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gZ3JpZC5fcmlnaHQgLSB0aGlzLnhvZmZzZXQ7CiAgICAvLyAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gZ3JpZC5fYm90dG9tICsgdGhpcy55b2Zmc2V0OwogICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6YSwgYm90dG9tOmJ9KTsKICAgIC8vICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAvLyAgICAgICAgICAgICB9CiAgICAvLyAgICAgICAgIH0KICAgIC8vICAgICB9IAogICAgLy8gfTsKICAgIAogICAgLy8gc2V0dXAgZGVmYXVsdCByZW5kZXJlcnMgZm9yIGF4ZXMgYW5kIGxlZ2VuZCBzbyB1c2VyIGRvZXNuJ3QgaGF2ZSB0bwogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgcGxvdAogICAgZnVuY3Rpb24gcHJlSW5pdCh0YXJnZXQsIGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgICAgICBvcHRpb25zLmF4ZXNEZWZhdWx0cyA9IG9wdGlvbnMuYXhlc0RlZmF1bHRzIHx8IHt9OwogICAgICAgIG9wdGlvbnMubGVnZW5kID0gb3B0aW9ucy5sZWdlbmQgfHwge307CiAgICAgICAgb3B0aW9ucy5zZXJpZXNEZWZhdWx0cyA9IG9wdGlvbnMuc2VyaWVzRGVmYXVsdHMgfHwge307CiAgICAgICAgLy8gb25seSBzZXQgdGhlc2UgaWYgdGhlcmUgaXMgYSBmdW5uZWwgc2VyaWVzCiAgICAgICAgdmFyIHNldG9wdHMgPSBmYWxzZTsKICAgICAgICBpZiAob3B0aW9ucy5zZXJpZXNEZWZhdWx0cy5yZW5kZXJlciA9PSAkLmpxcGxvdC5GdW5uZWxSZW5kZXJlcikgewogICAgICAgICAgICBzZXRvcHRzID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAob3B0aW9ucy5zZXJpZXMpIHsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpIDwgb3B0aW9ucy5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnNlcmllc1tpXS5yZW5kZXJlciA9PSAkLmpxcGxvdC5GdW5uZWxSZW5kZXJlcikgewogICAgICAgICAgICAgICAgICAgIHNldG9wdHMgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChzZXRvcHRzKSB7CiAgICAgICAgICAgIG9wdGlvbnMuYXhlc0RlZmF1bHRzLnJlbmRlcmVyID0gJC5qcXBsb3QuRnVubmVsQXhpc1JlbmRlcmVyOwogICAgICAgICAgICBvcHRpb25zLmxlZ2VuZC5yZW5kZXJlciA9ICQuanFwbG90LkZ1bm5lbExlZ2VuZFJlbmRlcmVyOwogICAgICAgICAgICBvcHRpb25zLmxlZ2VuZC5wcmVEcmF3ID0gdHJ1ZTsKICAgICAgICAgICAgb3B0aW9ucy5zb3J0RGF0YSA9IGZhbHNlOwogICAgICAgICAgICBvcHRpb25zLnNlcmllc0RlZmF1bHRzLnBvaW50TGFiZWxzID0ge3Nob3c6IGZhbHNlfTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIHBvc3RJbml0KHRhcmdldCwgZGF0YSwgb3B0aW9ucykgewogICAgICAgIC8vIGlmIG11bHRpcGxlIHNlcmllcywgYWRkIGEgcmVmZXJlbmNlIHRvIHRoZSBwcmV2aW91cyBvbmUgc28gdGhhdAogICAgICAgIC8vIGZ1bm5lbCByaW5ncyBjYW4gbmVzdC4KICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKHRoaXMuc2VyaWVzW2ldLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09ICQuanFwbG90LkZ1bm5lbFJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAvLyBkb24ndCBhbGxvdyBtb3VzZW92ZXIgYW5kIG1vdXNlZG93biBhdCBzYW1lIHRpbWUuCiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZXJpZXNbaV0uaGlnaGxpZ2h0TW91c2VPdmVyKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNbaV0uaGlnaGxpZ2h0TW91c2VEb3duID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHBsb3QKICAgIGZ1bmN0aW9uIHBvc3RQYXJzZU9wdGlvbnMob3B0aW9ucykgewogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLnNlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB0aGlzLnNlcmllc1tpXS5zZXJpZXNDb2xvcnMgPSB0aGlzLnNlcmllc0NvbG9yczsKICAgICAgICAgICAgdGhpcy5zZXJpZXNbaV0uY29sb3JHZW5lcmF0b3IgPSAkLmpxcGxvdC5jb2xvckdlbmVyYXRvcjsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhpZ2hsaWdodCAocGxvdCwgc2lkeCwgcGlkeCkgewogICAgICAgIHZhciBzID0gcGxvdC5zZXJpZXNbc2lkeF07CiAgICAgICAgdmFyIGNhbnZhcyA9IHBsb3QucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7CiAgICAgICAgY2FudmFzLl9jdHguY2xlYXJSZWN0KDAsMCxjYW52YXMuX2N0eC5jYW52YXMud2lkdGgsIGNhbnZhcy5fY3R4LmNhbnZhcy5oZWlnaHQpOwogICAgICAgIHMuX2hpZ2hsaWdodGVkUG9pbnQgPSBwaWR4OwogICAgICAgIHBsb3QucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ID0gc2lkeDsKICAgICAgICBzLnJlbmRlcmVyLmRyYXdTZWN0aW9uLmNhbGwocywgY2FudmFzLl9jdHgsIHMuX3ZlcnRpY2VzW3BpZHhdLCBzLmhpZ2hsaWdodENvbG9yc1twaWR4XSwgZmFsc2UpOwogICAgfQogICAgCiAgICBmdW5jdGlvbiB1bmhpZ2hsaWdodCAocGxvdCkgewogICAgICAgIHZhciBjYW52YXMgPSBwbG90LnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzOwogICAgICAgIGNhbnZhcy5fY3R4LmNsZWFyUmVjdCgwLDAsIGNhbnZhcy5fY3R4LmNhbnZhcy53aWR0aCwgY2FudmFzLl9jdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHBsb3Quc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHBsb3Quc2VyaWVzW2ldLl9oaWdobGlnaHRlZFBvaW50ID0gbnVsbDsKICAgICAgICB9CiAgICAgICAgcGxvdC5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXggPSBudWxsOwogICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoJ2pxcGxvdERhdGFVbmhpZ2hsaWdodCcpOwogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVNb3ZlKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIGlmIChuZWlnaGJvcikgewogICAgICAgICAgICB2YXIgaW5zID0gW25laWdoYm9yLnNlcmllc0luZGV4LCBuZWlnaGJvci5wb2ludEluZGV4LCBuZWlnaGJvci5kYXRhXTsKICAgICAgICAgICAgdmFyIGV2dDEgPSBqUXVlcnkuRXZlbnQoJ2pxcGxvdERhdGFNb3VzZU92ZXInKTsKICAgICAgICAgICAgZXZ0MS5wYWdlWCA9IGV2LnBhZ2VYOwogICAgICAgICAgICBldnQxLnBhZ2VZID0gZXYucGFnZVk7CiAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoZXZ0MSwgaW5zKTsKICAgICAgICAgICAgaWYgKHBsb3Quc2VyaWVzW2luc1swXV0uaGlnaGxpZ2h0TW91c2VPdmVyICYmICEoaW5zWzBdID09IHBsb3QucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ICYmIGluc1sxXSA9PSBwbG90LnNlcmllc1tpbnNbMF1dLl9oaWdobGlnaHRlZFBvaW50KSkgewogICAgICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YUhpZ2hsaWdodCcpOwogICAgICAgICAgICAgICAgZXZ0LndoaWNoID0gZXYud2hpY2g7CiAgICAgICAgICAgICAgICBldnQucGFnZVggPSBldi5wYWdlWDsKICAgICAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQsIGlucyk7CiAgICAgICAgICAgICAgICBoaWdobGlnaHQgKHBsb3QsIGluc1swXSwgaW5zWzFdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChuZWlnaGJvciA9PSBudWxsKSB7CiAgICAgICAgICAgIHVuaGlnaGxpZ2h0IChwbG90KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlRG93bihldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAobmVpZ2hib3IpIHsKICAgICAgICAgICAgdmFyIGlucyA9IFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IuZGF0YV07CiAgICAgICAgICAgIGlmIChwbG90LnNlcmllc1tpbnNbMF1dLmhpZ2hsaWdodE1vdXNlRG93biAmJiAhKGluc1swXSA9PSBwbG90LnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCAmJiBpbnNbMV0gPT0gcGxvdC5zZXJpZXNbaW5zWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpIHsKICAgICAgICAgICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ2pxcGxvdERhdGFIaWdobGlnaHQnKTsKICAgICAgICAgICAgICAgIGV2dC53aGljaCA9IGV2LndoaWNoOwogICAgICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoZXZ0LCBpbnMpOwogICAgICAgICAgICAgICAgaGlnaGxpZ2h0IChwbG90LCBpbnNbMF0sIGluc1sxXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAobmVpZ2hib3IgPT0gbnVsbCkgewogICAgICAgICAgICB1bmhpZ2hsaWdodCAocGxvdCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZVVwKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIHZhciBpZHggPSBwbG90LnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDsKICAgICAgICBpZiAoaWR4ICE9IG51bGwgJiYgcGxvdC5zZXJpZXNbaWR4XS5oaWdobGlnaHRNb3VzZURvd24pIHsKICAgICAgICAgICAgdW5oaWdobGlnaHQocGxvdCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAobmVpZ2hib3IpIHsKICAgICAgICAgICAgdmFyIGlucyA9IFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IuZGF0YV07CiAgICAgICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ2pxcGxvdERhdGFDbGljaycpOwogICAgICAgICAgICBldnQud2hpY2ggPSBldi53aGljaDsKICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKGV2dCwgaW5zKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZVJpZ2h0Q2xpY2soZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgaWYgKG5laWdoYm9yKSB7CiAgICAgICAgICAgIHZhciBpbnMgPSBbbmVpZ2hib3Iuc2VyaWVzSW5kZXgsIG5laWdoYm9yLnBvaW50SW5kZXgsIG5laWdoYm9yLmRhdGFdOwogICAgICAgICAgICB2YXIgaWR4ID0gcGxvdC5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg7CiAgICAgICAgICAgIGlmIChpZHggIT0gbnVsbCAmJiBwbG90LnNlcmllc1tpZHhdLmhpZ2hsaWdodE1vdXNlRG93bikgewogICAgICAgICAgICAgICAgdW5oaWdobGlnaHQocGxvdCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YVJpZ2h0Q2xpY2snKTsKICAgICAgICAgICAgZXZ0LndoaWNoID0gZXYud2hpY2g7CiAgICAgICAgICAgIGV2dC5wYWdlWCA9IGV2LnBhZ2VYOwogICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQsIGlucyk7CiAgICAgICAgfQogICAgfQogICAgCiAgICAvLyBjYWxsZWQgd2l0aGluIGNvbnRleHQgb2YgcGxvdAogICAgLy8gY3JlYXRlIGEgY2FudmFzIHdoaWNoIHdlIGNhbiBkcmF3IG9uLgogICAgLy8gaW5zZXJ0IGl0IGJlZm9yZSB0aGUgZXZlbnRDYW52YXMsIHNvIGV2ZW50Q2FudmFzIHdpbGwgc3RpbGwgY2FwdHVyZSBldmVudHMuCiAgICBmdW5jdGlvbiBwb3N0UGxvdERyYXcoKSB7CiAgICAgICAgLy8gTWVtb3J5IExlYWtzIHBhdGNoICAgIAogICAgICAgIGlmICh0aGlzLnBsdWdpbnMuZnVubmVsUmVuZGVyZXIgJiYgdGhpcy5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcykgewogICAgICAgICAgICB0aGlzLnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnJlc2V0Q2FudmFzKCk7CiAgICAgICAgICAgIHRoaXMucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRDYW52YXMgPSBudWxsOwogICAgICAgIH0KCiAgICAgICAgdGhpcy5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyID0ge307CiAgICAgICAgdGhpcy5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcyA9IG5ldyAkLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7CiAgICAgICAgCiAgICAgICAgLy8gZG8gd2UgaGF2ZSBhbnkgZGF0YSBsYWJlbHM/ICBpZiBzbywgcHV0IGhpZ2hsaWdodCBjYW52YXMgYmVmb3JlIHRob3NlCiAgICAgICAgdmFyIGxhYmVscyA9ICQodGhpcy50YXJnZXRJZCsnIC5qcXBsb3QtZGF0YS1sYWJlbCcpOwogICAgICAgIGlmIChsYWJlbHMubGVuZ3RoKSB7CiAgICAgICAgICAgICQobGFiZWxzWzBdKS5iZWZvcmUodGhpcy5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCAnanFwbG90LWZ1bm5lbFJlbmRlcmVyLWhpZ2hsaWdodC1jYW52YXMnLCB0aGlzLl9wbG90RGltZW5zaW9ucywgdGhpcykpOwogICAgICAgIH0KICAgICAgICAvLyBlbHNlIHB1dCBoaWdobGlnaHQgY2FudmFzIGJlZm9yZSBldmVudCBjYW52YXMuCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKHRoaXMucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywgJ2pxcGxvdC1mdW5uZWxSZW5kZXJlci1oaWdobGlnaHQtY2FudmFzJywgdGhpcy5fcGxvdERpbWVuc2lvbnMsIHRoaXMpKTsKICAgICAgICB9CiAgICAgICAgdmFyIGhjdHggPSB0aGlzLnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnNldENvbnRleHQoKTsKICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJ21vdXNlbGVhdmUnLCB7cGxvdDp0aGlzfSwgZnVuY3Rpb24gKGV2KSB7IHVuaGlnaGxpZ2h0KGV2LmRhdGEucGxvdCk7IH0pOwogICAgfQogICAgCiAgICAkLmpxcGxvdC5wcmVJbml0SG9va3MucHVzaChwcmVJbml0KTsKICAgIAogICAgJC5qcXBsb3QuRnVubmVsVGlja1JlbmRlcmVyID0gZnVuY3Rpb24oKSB7CiAgICAgICAgJC5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuRnVubmVsVGlja1JlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyKCk7CiAgICAkLmpxcGxvdC5GdW5uZWxUaWNrUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuRnVubmVsVGlja1JlbmRlcmVyOwogICAgCn0pKGpRdWVyeSk7CiAgICAKICAgIA==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.funnelRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGUpe2UuanFwbG90LkZ1bm5lbFJlbmRlcmVyPWZ1bmN0aW9uKCl7ZS5qcXBsb3QuTGluZVJlbmRlcmVyLmNhbGwodGhpcyl9O2UuanFwbG90LkZ1bm5lbFJlbmRlcmVyLnByb3RvdHlwZT1uZXcgZS5qcXBsb3QuTGluZVJlbmRlcmVyKCk7ZS5qcXBsb3QuRnVubmVsUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUuanFwbG90LkZ1bm5lbFJlbmRlcmVyO2UuanFwbG90LkZ1bm5lbFJlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKHAsdCl7dGhpcy5wYWRkaW5nPXt0b3A6MjAscmlnaHQ6MjAsYm90dG9tOjIwLGxlZnQ6MjB9O3RoaXMuc2VjdGlvbk1hcmdpbj02O3RoaXMuZmlsbD10cnVlO3RoaXMuc2hhZG93T2Zmc2V0PTI7dGhpcy5zaGFkb3dBbHBoYT0wLjA3O3RoaXMuc2hhZG93RGVwdGg9NTt0aGlzLmhpZ2hsaWdodE1vdXNlT3Zlcj10cnVlO3RoaXMuaGlnaGxpZ2h0TW91c2VEb3duPWZhbHNlO3RoaXMuaGlnaGxpZ2h0Q29sb3JzPVtdO3RoaXMud2lkdGhSYXRpbz0wLjI7dGhpcy5saW5lV2lkdGg9Mjt0aGlzLmRhdGFMYWJlbHM9InBlcmNlbnQiO3RoaXMuc2hvd0RhdGFMYWJlbHM9ZmFsc2U7dGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmc9bnVsbDt0aGlzLmRhdGFMYWJlbFRocmVzaG9sZD0zO3RoaXMuX3R5cGU9ImZ1bm5lbCI7dGhpcy50aWNrUmVuZGVyZXI9ZS5qcXBsb3QuRnVubmVsVGlja1JlbmRlcmVyO2lmKHAuaGlnaGxpZ2h0TW91c2VEb3duJiZwLmhpZ2hsaWdodE1vdXNlT3Zlcj09bnVsbCl7cC5oaWdobGlnaHRNb3VzZU92ZXI9ZmFsc2V9ZS5leHRlbmQodHJ1ZSx0aGlzLHApO3RoaXMuX2hpZ2hsaWdodGVkUG9pbnQ9bnVsbDt0aGlzLl9iYXNlcz1bXTt0aGlzLl9hdG90O3RoaXMuX2FyZWFzPVtdO3RoaXMuX2xlbmd0aHM9W107dGhpcy5fYW5nbGU7dGhpcy5fZGF0YUluZGljZXM9W107dGhpcy5fdW5vcmRlcmVkRGF0YT1lLmV4dGVuZCh0cnVlLFtdLHRoaXMuZGF0YSk7dmFyIG89ZS5leHRlbmQodHJ1ZSxbXSx0aGlzLmRhdGEpO2Zvcih2YXIgcj0wO3I8by5sZW5ndGg7cisrKXtvW3JdLnB1c2gocil9dGhpcy5kYXRhLnNvcnQoZnVuY3Rpb24odix1KXtyZXR1cm4gdVsxXS12WzFdfSk7by5zb3J0KGZ1bmN0aW9uKHYsdSl7cmV0dXJuIHVbMV0tdlsxXX0pO2Zvcih2YXIgcj0wO3I8by5sZW5ndGg7cisrKXt0aGlzLl9kYXRhSW5kaWNlcy5wdXNoKG9bcl1bMl0pfWlmKHRoaXMuaGlnaGxpZ2h0Q29sb3JzLmxlbmd0aD09MCl7Zm9yKHZhciByPTA7cjx0aGlzLnNlcmllc0NvbG9ycy5sZW5ndGg7cisrKXt2YXIgcT1lLmpxcGxvdC5nZXRDb2xvckNvbXBvbmVudHModGhpcy5zZXJpZXNDb2xvcnNbcl0pO3ZhciBtPVtxWzBdLHFbMV0scVsyXV07dmFyIHM9bVswXSttWzFdK21bMl07Zm9yKHZhciBuPTA7bjwzO24rKyl7bVtuXT0ocz41NzApP21bbl0qMC44Om1bbl0rMC40KigyNTUtbVtuXSk7bVtuXT1wYXJzZUludChtW25dLDEwKX10aGlzLmhpZ2hsaWdodENvbG9ycy5wdXNoKCJyZ2IoIittWzBdKyIsIittWzFdKyIsIittWzJdKyIpIil9fXQucG9zdFBhcnNlT3B0aW9uc0hvb2tzLmFkZE9uY2Uoayk7dC5wb3N0SW5pdEhvb2tzLmFkZE9uY2UoZyk7dC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90TW91c2VNb3ZlIixhKTt0LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RNb3VzZURvd24iLGIpO3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdE1vdXNlVXAiLGopO3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdENsaWNrIixmKTt0LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RSaWdodENsaWNrIixsKTt0LnBvc3REcmF3SG9va3MuYWRkT25jZShoKX07ZS5qcXBsb3QuRnVubmVsUmVuZGVyZXIucHJvdG90eXBlLnNldEdyaWREYXRhPWZ1bmN0aW9uKG8pe3ZhciBuPTA7dmFyIHA9W107Zm9yKHZhciBtPTA7bTx0aGlzLmRhdGEubGVuZ3RoO20rKyl7bis9dGhpcy5kYXRhW21dWzFdO3AucHVzaChbdGhpcy5kYXRhW21dWzBdLHRoaXMuZGF0YVttXVsxXV0pfWZvcih2YXIgbT0wO208cC5sZW5ndGg7bSsrKXtwW21dWzFdPXBbbV1bMV0vbn10aGlzLl9iYXNlcz1uZXcgQXJyYXkocC5sZW5ndGgrMSk7dGhpcy5fbGVuZ3Rocz1uZXcgQXJyYXkocC5sZW5ndGgpO3RoaXMuZ3JpZERhdGE9cH07ZS5qcXBsb3QuRnVubmVsUmVuZGVyZXIucHJvdG90eXBlLm1ha2VHcmlkRGF0YT1mdW5jdGlvbihvLHApe3ZhciBuPTA7dmFyIHE9W107Zm9yKHZhciBtPTA7bTx0aGlzLmRhdGEubGVuZ3RoO20rKyl7bis9dGhpcy5kYXRhW21dWzFdO3EucHVzaChbdGhpcy5kYXRhW21dWzBdLHRoaXMuZGF0YVttXVsxXV0pfWZvcih2YXIgbT0wO208cS5sZW5ndGg7bSsrKXtxW21dWzFdPXFbbV1bMV0vbn10aGlzLl9iYXNlcz1uZXcgQXJyYXkocS5sZW5ndGgrMSk7dGhpcy5fbGVuZ3Rocz1uZXcgQXJyYXkocS5sZW5ndGgpO3JldHVybiBxfTtlLmpxcGxvdC5GdW5uZWxSZW5kZXJlci5wcm90b3R5cGUuZHJhd1NlY3Rpb249ZnVuY3Rpb24obixwLG8scyl7dmFyIHQ9dGhpcy5maWxsO3ZhciBtPXRoaXMubGluZVdpZHRoO24uc2F2ZSgpO2lmKHMpe2Zvcih2YXIgcj0wO3I8dGhpcy5zaGFkb3dEZXB0aDtyKyspe24uc2F2ZSgpO24udHJhbnNsYXRlKHRoaXMuc2hhZG93T2Zmc2V0Kk1hdGguY29zKHRoaXMuc2hhZG93QW5nbGUvMTgwKk1hdGguUEkpLHRoaXMuc2hhZG93T2Zmc2V0Kk1hdGguc2luKHRoaXMuc2hhZG93QW5nbGUvMTgwKk1hdGguUEkpKTtxKCl9fWVsc2V7cSgpfWZ1bmN0aW9uIHEoKXtuLmJlZ2luUGF0aCgpO24uZmlsbFN0eWxlPW87bi5zdHJva2VTdHlsZT1vO24ubGluZVdpZHRoPW07bi5tb3ZlVG8ocFswXVswXSxwWzBdWzFdKTtmb3IodmFyIHU9MTt1PDQ7dSsrKXtuLmxpbmVUbyhwW3VdWzBdLHBbdV1bMV0pfW4uY2xvc2VQYXRoKCk7aWYodCl7bi5maWxsKCl9ZWxzZXtuLnN0cm9rZSgpfX1pZihzKXtmb3IodmFyIHI9MDtyPHRoaXMuc2hhZG93RGVwdGg7cisrKXtuLnJlc3RvcmUoKX19bi5yZXN0b3JlKCl9O2UuanFwbG90LkZ1bm5lbFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKEcsQixKLHApe3ZhciBZO3ZhciBMPShKIT11bmRlZmluZWQpP0o6e307dmFyIHc9MDt2YXIgdT0wO3ZhciBSPTE7dGhpcy5fYXJlYXM9W107aWYoSi5sZWdlbmRJbmZvJiZKLmxlZ2VuZEluZm8ucGxhY2VtZW50PT0iaW5zaWRlR3JpZCIpe3ZhciBPPUoubGVnZW5kSW5mbztzd2l0Y2goTy5sb2NhdGlvbil7Y2FzZSJudyI6dz1PLndpZHRoK08ueG9mZnNldDticmVhaztjYXNlInciOnc9Ty53aWR0aCtPLnhvZmZzZXQ7YnJlYWs7Y2FzZSJzdyI6dz1PLndpZHRoK08ueG9mZnNldDticmVhaztjYXNlIm5lIjp3PU8ud2lkdGgrTy54b2Zmc2V0O1I9LTE7YnJlYWs7Y2FzZSJlIjp3PU8ud2lkdGgrTy54b2Zmc2V0O1I9LTE7YnJlYWs7Y2FzZSJzZSI6dz1PLndpZHRoK08ueG9mZnNldDtSPS0xO2JyZWFrO2Nhc2UibiI6dT1PLmhlaWdodCtPLnlvZmZzZXQ7YnJlYWs7Y2FzZSJzIjp1PU8uaGVpZ2h0K08ueW9mZnNldDtSPS0xO2JyZWFrO2RlZmF1bHQ6YnJlYWt9fXZhciB0PShSPT0xKT90aGlzLnBhZGRpbmcubGVmdCt3OnRoaXMucGFkZGluZy5sZWZ0O3ZhciBGPShSPT0xKT90aGlzLnBhZGRpbmcudG9wK3U6dGhpcy5wYWRkaW5nLnRvcDt2YXIgTT0oUj09LTEpP3RoaXMucGFkZGluZy5yaWdodCt3OnRoaXMucGFkZGluZy5yaWdodDt2YXIgbz0oUj09LTEpP3RoaXMucGFkZGluZy5ib3R0b20rdTp0aGlzLnBhZGRpbmcuYm90dG9tO3ZhciBQPShMLnNoYWRvdyE9dW5kZWZpbmVkKT9MLnNoYWRvdzp0aGlzLnNoYWRvdzt2YXIgcT0oTC5zaG93TGluZSE9dW5kZWZpbmVkKT9MLnNob3dMaW5lOnRoaXMuc2hvd0xpbmU7dmFyIEM9KEwuZmlsbCE9dW5kZWZpbmVkKT9MLmZpbGw6dGhpcy5maWxsO3ZhciBIPUcuY2FudmFzLndpZHRoO3ZhciBOPUcuY2FudmFzLmhlaWdodDt0aGlzLl9iYXNlc1swXT1ILXQtTTt2YXIgST10aGlzLl9sZW5ndGg9Ti1GLW87dmFyIHI9dGhpcy5fYmFzZXNbMF0qdGhpcy53aWR0aFJhdGlvO3RoaXMuX2F0b3Q9SS8yKih0aGlzLl9iYXNlc1swXSt0aGlzLl9iYXNlc1swXSp0aGlzLndpZHRoUmF0aW8pO3RoaXMuX2FuZ2xlPU1hdGguYXRhbigodGhpcy5fYmFzZXNbMF0tcikvMi9JKTtmb3IoWT0wO1k8Qi5sZW5ndGg7WSsrKXt0aGlzLl9hcmVhcy5wdXNoKEJbWV1bMV0qdGhpcy5fYXRvdCl9dmFyIEUsYWEsVyxRPTA7dmFyIG49MC4wMDAxO2ZvcihZPTA7WTx0aGlzLl9hcmVhcy5sZW5ndGg7WSsrKXtFPXRoaXMuX2FyZWFzW1ldL3RoaXMuX2Jhc2VzW1ldO2FhPTk5OTk5OTt0aGlzLl9sZW5ndGhzW1ldPUU7Vz0wO3doaWxlKGFhPnRoaXMuX2xlbmd0aHNbWV0qbiYmVzwxMDApe3RoaXMuX2xlbmd0aHNbWV09dGhpcy5fYXJlYXNbWV0vKHRoaXMuX2Jhc2VzW1ldLXRoaXMuX2xlbmd0aHNbWV0qTWF0aC50YW4odGhpcy5fYW5nbGUpKTthYT1NYXRoLmFicyh0aGlzLl9sZW5ndGhzW1ldLUUpO3RoaXMuX2Jhc2VzW1krMV09dGhpcy5fYmFzZXNbWV0tKDIqdGhpcy5fbGVuZ3Roc1tZXSpNYXRoLnRhbih0aGlzLl9hbmdsZSkpO0U9dGhpcy5fbGVuZ3Roc1tZXTtXKyt9USs9dGhpcy5fbGVuZ3Roc1tZXX10aGlzLl92ZXJ0aWNlcz1uZXcgQXJyYXkoQi5sZW5ndGgpO3ZhciBhZT1bdCxGXSxhZD1bdCt0aGlzLl9iYXNlc1swXSxGXSxhYz1bdCsodGhpcy5fYmFzZXNbMF0tdGhpcy5fYmFzZXNbdGhpcy5fYmFzZXMubGVuZ3RoLTFdKS8yLEYrdGhpcy5fbGVuZ3RoXSxhYj1bYWNbMF0rdGhpcy5fYmFzZXNbdGhpcy5fYmFzZXMubGVuZ3RoLTFdLGFjWzFdXTtmdW5jdGlvbiBWKGFnKXt2YXIgeD0oYWVbMV0tYWNbMV0pLyhhZVswXS1hY1swXSk7dmFyIHY9YWVbMV0teCphZVswXTt2YXIgYWg9YWcrYWVbMV07cmV0dXJuWyhhaC12KS94LGFoXX1mdW5jdGlvbiBEKGFnKXt2YXIgeD0oYWRbMV0tYWJbMV0pLyhhZFswXS1hYlswXSk7dmFyIHY9YWRbMV0teCphZFswXTt2YXIgYWg9YWcrYWRbMV07cmV0dXJuWyhhaC12KS94LGFoXX12YXIgVD13LFM9dTt2YXIgWj0wLG09MDtmb3IoWT0wO1k8Qi5sZW5ndGg7WSsrKXt0aGlzLl92ZXJ0aWNlc1tZXT1uZXcgQXJyYXkoKTt2YXIgVT10aGlzLl92ZXJ0aWNlc1tZXTt2YXIgQT10aGlzLnNlY3Rpb25NYXJnaW47aWYoWT09MCl7bT0wfWlmKFk9PTEpe209QS8zfWVsc2V7aWYoWT4wJiZZPEIubGVuZ3RoLTEpe209QS8yfWVsc2V7aWYoWT09Qi5sZW5ndGgtMSl7bT0yKkEvM319fVUucHVzaChWKForbSkpO1UucHVzaChEKForbSkpO1orPXRoaXMuX2xlbmd0aHNbWV07aWYoWT09MCl7bT0tMipBLzN9ZWxzZXtpZihZPjAmJlk8Qi5sZW5ndGgtMSl7bT0tQS8yfWVsc2V7aWYoWT09Qi5sZW5ndGgtMSl7bT0wfX19VS5wdXNoKEQoWittKSk7VS5wdXNoKFYoWittKSl9aWYodGhpcy5zaGFkb3cpe3ZhciBhZj0icmdiYSgwLDAsMCwiK3RoaXMuc2hhZG93QWxwaGErIikiO2Zvcih2YXIgWT0wO1k8Qi5sZW5ndGg7WSsrKXt0aGlzLnJlbmRlcmVyLmRyYXdTZWN0aW9uLmNhbGwodGhpcyxHLHRoaXMuX3ZlcnRpY2VzW1ldLGFmLHRydWUpfX1mb3IodmFyIFk9MDtZPEIubGVuZ3RoO1krKyl7dmFyIFU9dGhpcy5fdmVydGljZXNbWV07dGhpcy5yZW5kZXJlci5kcmF3U2VjdGlvbi5jYWxsKHRoaXMsRyxVLHRoaXMuc2VyaWVzQ29sb3JzW1ldKTtpZih0aGlzLnNob3dEYXRhTGFiZWxzJiZCW1ldWzFdKjEwMD49dGhpcy5kYXRhTGFiZWxUaHJlc2hvbGQpe3ZhciBLLFg7aWYodGhpcy5kYXRhTGFiZWxzPT0ibGFiZWwiKXtLPXRoaXMuZGF0YUxhYmVsRm9ybWF0U3RyaW5nfHwiJXMiO1g9ZS5qcXBsb3Quc3ByaW50ZihLLEJbWV1bMF0pfWVsc2V7aWYodGhpcy5kYXRhTGFiZWxzPT0idmFsdWUiKXtLPXRoaXMuZGF0YUxhYmVsRm9ybWF0U3RyaW5nfHwiJWQiO1g9ZS5qcXBsb3Quc3ByaW50ZihLLHRoaXMuZGF0YVtZXVsxXSl9ZWxzZXtpZih0aGlzLmRhdGFMYWJlbHM9PSJwZXJjZW50Iil7Sz10aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZ3x8IiVkJSUiO1g9ZS5qcXBsb3Quc3ByaW50ZihLLEJbWV1bMV0qMTAwKX1lbHNle2lmKHRoaXMuZGF0YUxhYmVscy5jb25zdHJ1Y3Rvcj09QXJyYXkpe0s9dGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmd8fCIlcyI7WD1lLmpxcGxvdC5zcHJpbnRmKEssdGhpcy5kYXRhTGFiZWxzW3RoaXMuX2RhdGFJbmRpY2VzW1ldXSl9fX19dmFyIHM9KHRoaXMuX3JhZGl1cykqdGhpcy5kYXRhTGFiZWxQb3NpdGlvbkZhY3Rvcit0aGlzLnNsaWNlTWFyZ2luK3RoaXMuZGF0YUxhYmVsTnVkZ2U7dmFyIFQ9KFVbMF1bMF0rVVsxXVswXSkvMit0aGlzLmNhbnZhcy5fb2Zmc2V0cy5sZWZ0O3ZhciBTPShVWzFdWzFdK1VbMl1bMV0pLzIrdGhpcy5jYW52YXMuX29mZnNldHMudG9wO3ZhciB6PWUoJzxzcGFuIGNsYXNzPSJqcXBsb3QtZnVubmVsLXNlcmllcyBqcXBsb3QtZGF0YS1sYWJlbCIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyI+JytYKyI8L3NwYW4+IikuaW5zZXJ0QmVmb3JlKHAuZXZlbnRDYW52YXMuX2VsZW0pO1QtPXoud2lkdGgoKS8yO1MtPXouaGVpZ2h0KCkvMjtUPU1hdGgucm91bmQoVCk7Uz1NYXRoLnJvdW5kKFMpO3ouY3NzKHtsZWZ0OlQsdG9wOlN9KX19fTtlLmpxcGxvdC5GdW5uZWxBeGlzUmVuZGVyZXI9ZnVuY3Rpb24oKXtlLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIuY2FsbCh0aGlzKX07ZS5qcXBsb3QuRnVubmVsQXhpc1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgZS5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7ZS5qcXBsb3QuRnVubmVsQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLmpxcGxvdC5GdW5uZWxBeGlzUmVuZGVyZXI7ZS5qcXBsb3QuRnVubmVsQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKG0pe3RoaXMudGlja1JlbmRlcmVyPWUuanFwbG90LkZ1bm5lbFRpY2tSZW5kZXJlcjtlLmV4dGVuZCh0cnVlLHRoaXMsbSk7dGhpcy5fZGF0YUJvdW5kcz17bWluOjAsbWF4OjEwMH07dGhpcy5taW49MDt0aGlzLm1heD0xMDA7dGhpcy5zaG93VGlja3M9ZmFsc2U7dGhpcy50aWNrcz1bXTt0aGlzLnNob3dNYXJrPWZhbHNlO3RoaXMuc2hvdz1mYWxzZX07ZS5qcXBsb3QuRnVubmVsTGVnZW5kUmVuZGVyZXI9ZnVuY3Rpb24oKXtlLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyLmNhbGwodGhpcyl9O2UuanFwbG90LkZ1bm5lbExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZT1uZXcgZS5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlcigpO2UuanFwbG90LkZ1bm5lbExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLmpxcGxvdC5GdW5uZWxMZWdlbmRSZW5kZXJlcjtlLmpxcGxvdC5GdW5uZWxMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihtKXt0aGlzLm51bWJlclJvd3M9bnVsbDt0aGlzLm51bWJlckNvbHVtbnM9bnVsbDtlLmV4dGVuZCh0cnVlLHRoaXMsbSl9O2UuanFwbG90LkZ1bm5lbExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKCl7dmFyIHA9dGhpcztpZih0aGlzLnNob3cpe3ZhciB4PXRoaXMuX3Nlcmllczt2YXIgQT0icG9zaXRpb246YWJzb2x1dGU7IjtBKz0odGhpcy5iYWNrZ3JvdW5kKT8iYmFja2dyb3VuZDoiK3RoaXMuYmFja2dyb3VuZCsiOyI6IiI7QSs9KHRoaXMuYm9yZGVyKT8iYm9yZGVyOiIrdGhpcy5ib3JkZXIrIjsiOiIiO0ErPSh0aGlzLmZvbnRTaXplKT8iZm9udC1zaXplOiIrdGhpcy5mb250U2l6ZSsiOyI6IiI7QSs9KHRoaXMuZm9udEZhbWlseSk/ImZvbnQtZmFtaWx5OiIrdGhpcy5mb250RmFtaWx5KyI7IjoiIjtBKz0odGhpcy50ZXh0Q29sb3IpPyJjb2xvcjoiK3RoaXMudGV4dENvbG9yKyI7IjoiIjtBKz0odGhpcy5tYXJnaW5Ub3AhPW51bGwpPyJtYXJnaW4tdG9wOiIrdGhpcy5tYXJnaW5Ub3ArIjsiOiIiO0ErPSh0aGlzLm1hcmdpbkJvdHRvbSE9bnVsbCk/Im1hcmdpbi1ib3R0b206Iit0aGlzLm1hcmdpbkJvdHRvbSsiOyI6IiI7QSs9KHRoaXMubWFyZ2luTGVmdCE9bnVsbCk/Im1hcmdpbi1sZWZ0OiIrdGhpcy5tYXJnaW5MZWZ0KyI7IjoiIjtBKz0odGhpcy5tYXJnaW5SaWdodCE9bnVsbCk/Im1hcmdpbi1yaWdodDoiK3RoaXMubWFyZ2luUmlnaHQrIjsiOiIiO3RoaXMuX2VsZW09ZSgnPHRhYmxlIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIiBzdHlsZT0iJytBKyciPjwvdGFibGU+Jyk7dmFyIEU9ZmFsc2Usdz1mYWxzZSxtLHU7dmFyIHk9eFswXTt2YXIgbj1uZXcgZS5qcXBsb3QuQ29sb3JHZW5lcmF0b3IoeS5zZXJpZXNDb2xvcnMpO2lmKHkuc2hvdyl7dmFyIEY9eS5kYXRhO2lmKHRoaXMubnVtYmVyUm93cyl7bT10aGlzLm51bWJlclJvd3M7aWYoIXRoaXMubnVtYmVyQ29sdW1ucyl7dT1NYXRoLmNlaWwoRi5sZW5ndGgvbSl9ZWxzZXt1PXRoaXMubnVtYmVyQ29sdW1uc319ZWxzZXtpZih0aGlzLm51bWJlckNvbHVtbnMpe3U9dGhpcy5udW1iZXJDb2x1bW5zO209TWF0aC5jZWlsKEYubGVuZ3RoL3RoaXMubnVtYmVyQ29sdW1ucyl9ZWxzZXttPUYubGVuZ3RoO3U9MX19dmFyIEQsQyxvLHIscSx0LHYsQjt2YXIgej0wO2ZvcihEPTA7RDxtO0QrKyl7aWYodyl7bz1lKCc8dHIgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiPjwvdHI+JykucHJlcGVuZFRvKHRoaXMuX2VsZW0pfWVsc2V7bz1lKCc8dHIgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiPjwvdHI+JykuYXBwZW5kVG8odGhpcy5fZWxlbSl9Zm9yKEM9MDtDPHU7QysrKXtpZih6PEYubGVuZ3RoKXt0PXRoaXMubGFiZWxzW3pdfHxGW3pdWzBdLnRvU3RyaW5nKCk7Qj1uLm5leHQoKTtpZighdyl7aWYoRD4wKXtFPXRydWV9ZWxzZXtFPWZhbHNlfX1lbHNle2lmKEQ9PW0tMSl7RT1mYWxzZX1lbHNle0U9dHJ1ZX19dj0oRSk/dGhpcy5yb3dTcGFjaW5nOiIwIjtyPWUoJzx0ZCBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3BhZGRpbmctdG9wOicrdisnOyI+PGRpdj48ZGl2IGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaCIgc3R5bGU9ImJvcmRlci1jb2xvcjonK0IrJzsiPjwvZGl2PjwvZGl2PjwvdGQ+Jyk7cT1lKCc8dGQgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSJwYWRkaW5nLXRvcDonK3YrJzsiPjwvdGQ+Jyk7aWYodGhpcy5lc2NhcGVIdG1sKXtxLnRleHQodCl9ZWxzZXtxLmh0bWwodCl9aWYodyl7cS5wcmVwZW5kVG8obyk7ci5wcmVwZW5kVG8obyl9ZWxzZXtyLmFwcGVuZFRvKG8pO3EuYXBwZW5kVG8obyl9RT10cnVlfXorK319fX1yZXR1cm4gdGhpcy5fZWxlbX07ZnVuY3Rpb24gYyhxLHAsbil7bj1ufHx7fTtuLmF4ZXNEZWZhdWx0cz1uLmF4ZXNEZWZhdWx0c3x8e307bi5sZWdlbmQ9bi5sZWdlbmR8fHt9O24uc2VyaWVzRGVmYXVsdHM9bi5zZXJpZXNEZWZhdWx0c3x8e307dmFyIG09ZmFsc2U7aWYobi5zZXJpZXNEZWZhdWx0cy5yZW5kZXJlcj09ZS5qcXBsb3QuRnVubmVsUmVuZGVyZXIpe209dHJ1ZX1lbHNle2lmKG4uc2VyaWVzKXtmb3IodmFyIG89MDtvPG4uc2VyaWVzLmxlbmd0aDtvKyspe2lmKG4uc2VyaWVzW29dLnJlbmRlcmVyPT1lLmpxcGxvdC5GdW5uZWxSZW5kZXJlcil7bT10cnVlfX19fWlmKG0pe24uYXhlc0RlZmF1bHRzLnJlbmRlcmVyPWUuanFwbG90LkZ1bm5lbEF4aXNSZW5kZXJlcjtuLmxlZ2VuZC5yZW5kZXJlcj1lLmpxcGxvdC5GdW5uZWxMZWdlbmRSZW5kZXJlcjtuLmxlZ2VuZC5wcmVEcmF3PXRydWU7bi5zb3J0RGF0YT1mYWxzZTtuLnNlcmllc0RlZmF1bHRzLnBvaW50TGFiZWxzPXtzaG93OmZhbHNlfX19ZnVuY3Rpb24gZyhwLG8sbSl7Zm9yKHZhciBuPTA7bjx0aGlzLnNlcmllcy5sZW5ndGg7bisrKXtpZih0aGlzLnNlcmllc1tuXS5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09ZS5qcXBsb3QuRnVubmVsUmVuZGVyZXIpe2lmKHRoaXMuc2VyaWVzW25dLmhpZ2hsaWdodE1vdXNlT3Zlcil7dGhpcy5zZXJpZXNbbl0uaGlnaGxpZ2h0TW91c2VEb3duPWZhbHNlfX19fWZ1bmN0aW9uIGsobSl7Zm9yKHZhciBuPTA7bjx0aGlzLnNlcmllcy5sZW5ndGg7bisrKXt0aGlzLnNlcmllc1tuXS5zZXJpZXNDb2xvcnM9dGhpcy5zZXJpZXNDb2xvcnM7dGhpcy5zZXJpZXNbbl0uY29sb3JHZW5lcmF0b3I9ZS5qcXBsb3QuY29sb3JHZW5lcmF0b3J9fWZ1bmN0aW9uIGQocSxwLG8pe3ZhciBuPXEuc2VyaWVzW3BdO3ZhciBtPXEucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7bS5fY3R4LmNsZWFyUmVjdCgwLDAsbS5fY3R4LmNhbnZhcy53aWR0aCxtLl9jdHguY2FudmFzLmhlaWdodCk7bi5faGlnaGxpZ2h0ZWRQb2ludD1vO3EucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4PXA7bi5yZW5kZXJlci5kcmF3U2VjdGlvbi5jYWxsKG4sbS5fY3R4LG4uX3ZlcnRpY2VzW29dLG4uaGlnaGxpZ2h0Q29sb3JzW29dLGZhbHNlKX1mdW5jdGlvbiBpKG8pe3ZhciBtPW8ucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7bS5fY3R4LmNsZWFyUmVjdCgwLDAsbS5fY3R4LmNhbnZhcy53aWR0aCxtLl9jdHguY2FudmFzLmhlaWdodCk7Zm9yKHZhciBuPTA7bjxvLnNlcmllcy5sZW5ndGg7bisrKXtvLnNlcmllc1tuXS5faGlnaGxpZ2h0ZWRQb2ludD1udWxsfW8ucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4PW51bGw7by50YXJnZXQudHJpZ2dlcigianFwbG90RGF0YVVuaGlnaGxpZ2h0Iil9ZnVuY3Rpb24gYShxLHAsdCxzLHIpe2lmKHMpe3ZhciBvPVtzLnNlcmllc0luZGV4LHMucG9pbnRJbmRleCxzLmRhdGFdO3ZhciBuPWpRdWVyeS5FdmVudCgianFwbG90RGF0YU1vdXNlT3ZlciIpO24ucGFnZVg9cS5wYWdlWDtuLnBhZ2VZPXEucGFnZVk7ci50YXJnZXQudHJpZ2dlcihuLG8pO2lmKHIuc2VyaWVzW29bMF1dLmhpZ2hsaWdodE1vdXNlT3ZlciYmIShvWzBdPT1yLnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCYmb1sxXT09ci5zZXJpZXNbb1swXV0uX2hpZ2hsaWdodGVkUG9pbnQpKXt2YXIgbT1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFIaWdobGlnaHQiKTttLndoaWNoPXEud2hpY2g7bS5wYWdlWD1xLnBhZ2VYO20ucGFnZVk9cS5wYWdlWTtyLnRhcmdldC50cmlnZ2VyKG0sbyk7ZChyLG9bMF0sb1sxXSl9fWVsc2V7aWYocz09bnVsbCl7aShyKX19fWZ1bmN0aW9uIGIocCxvLHMscixxKXtpZihyKXt2YXIgbj1bci5zZXJpZXNJbmRleCxyLnBvaW50SW5kZXgsci5kYXRhXTtpZihxLnNlcmllc1tuWzBdXS5oaWdobGlnaHRNb3VzZURvd24mJiEoblswXT09cS5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXgmJm5bMV09PXEuc2VyaWVzW25bMF1dLl9oaWdobGlnaHRlZFBvaW50KSl7dmFyIG09alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhSGlnaGxpZ2h0Iik7bS53aGljaD1wLndoaWNoO20ucGFnZVg9cC5wYWdlWDttLnBhZ2VZPXAucGFnZVk7cS50YXJnZXQudHJpZ2dlcihtLG4pO2QocSxuWzBdLG5bMV0pfX1lbHNle2lmKHI9PW51bGwpe2kocSl9fX1mdW5jdGlvbiBqKG8sbixyLHEscCl7dmFyIG09cC5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg7aWYobSE9bnVsbCYmcC5zZXJpZXNbbV0uaGlnaGxpZ2h0TW91c2VEb3duKXtpKHApfX1mdW5jdGlvbiBmKHAsbyxzLHIscSl7aWYocil7dmFyIG49W3Iuc2VyaWVzSW5kZXgsci5wb2ludEluZGV4LHIuZGF0YV07dmFyIG09alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhQ2xpY2siKTttLndoaWNoPXAud2hpY2g7bS5wYWdlWD1wLnBhZ2VYO20ucGFnZVk9cC5wYWdlWTtxLnRhcmdldC50cmlnZ2VyKG0sbil9fWZ1bmN0aW9uIGwocSxwLHQscyxyKXtpZihzKXt2YXIgbz1bcy5zZXJpZXNJbmRleCxzLnBvaW50SW5kZXgscy5kYXRhXTt2YXIgbT1yLnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDtpZihtIT1udWxsJiZyLnNlcmllc1ttXS5oaWdobGlnaHRNb3VzZURvd24pe2kocil9dmFyIG49alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhUmlnaHRDbGljayIpO24ud2hpY2g9cS53aGljaDtuLnBhZ2VYPXEucGFnZVg7bi5wYWdlWT1xLnBhZ2VZO3IudGFyZ2V0LnRyaWdnZXIobixvKX19ZnVuY3Rpb24gaCgpe2lmKHRoaXMucGx1Z2lucy5mdW5uZWxSZW5kZXJlciYmdGhpcy5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcyl7dGhpcy5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5yZXNldENhbnZhcygpO3RoaXMucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRDYW52YXM9bnVsbH10aGlzLnBsdWdpbnMuZnVubmVsUmVuZGVyZXI9e307dGhpcy5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcz1uZXcgZS5qcXBsb3QuR2VuZXJpY0NhbnZhcygpO3ZhciBuPWUodGhpcy50YXJnZXRJZCsiIC5qcXBsb3QtZGF0YS1sYWJlbCIpO2lmKG4ubGVuZ3RoKXtlKG5bMF0pLmJlZm9yZSh0aGlzLnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsImpxcGxvdC1mdW5uZWxSZW5kZXJlci1oaWdobGlnaHQtY2FudmFzIix0aGlzLl9wbG90RGltZW5zaW9ucyx0aGlzKSl9ZWxzZXt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZSh0aGlzLnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsImpxcGxvdC1mdW5uZWxSZW5kZXJlci1oaWdobGlnaHQtY2FudmFzIix0aGlzLl9wbG90RGltZW5zaW9ucyx0aGlzKSl9dmFyIG09dGhpcy5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5zZXRDb250ZXh0KCk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCJtb3VzZWxlYXZlIix7cGxvdDp0aGlzfSxmdW5jdGlvbihvKXtpKG8uZGF0YS5wbG90KX0pfWUuanFwbG90LnByZUluaXRIb29rcy5wdXNoKGMpO2UuanFwbG90LkZ1bm5lbFRpY2tSZW5kZXJlcj1mdW5jdGlvbigpe2UuanFwbG90LkF4aXNUaWNrUmVuZGVyZXIuY2FsbCh0aGlzKX07ZS5qcXBsb3QuRnVubmVsVGlja1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgZS5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlcigpO2UuanFwbG90LkZ1bm5lbFRpY2tSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9ZS5qcXBsb3QuRnVubmVsVGlja1JlbmRlcmVyfSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.highlighter.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgJC5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLnB1c2goWydqcXBsb3RNb3VzZU1vdmUnLCBoYW5kbGVNb3ZlXSk7CiAgICAKICAgIC8qKgogICAgICogQ2xhc3M6ICQuanFwbG90LkhpZ2hsaWdodGVyCiAgICAgKiBQbHVnaW4gd2hpY2ggd2lsbCBoaWdobGlnaHQgZGF0YSBwb2ludHMgd2hlbiB0aGV5IGFyZSBtb3VzZWQgb3Zlci4KICAgICAqIAogICAgICogVG8gdXNlIHRoaXMgcGx1Z2luLCBpbmNsdWRlIHRoZSBqcwogICAgICogZmlsZSBpbiB5b3VyIHNvdXJjZToKICAgICAqIAogICAgICogPiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJwbHVnaW5zL2pxcGxvdC5oaWdobGlnaHRlci5qcyI+PC9zY3JpcHQ+CiAgICAgKiAKICAgICAqIEEgdG9vbHRpcCBwcm92aWRpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRhdGEgcG9pbnQgaXMgZW5hYmxlZCBieSBkZWZhdWx0LgogICAgICogVG8gZGlzYWJsZSB0aGUgdG9vbHRpcCwgc2V0ICJzaG93VG9vbHRpcCIgdG8gZmFsc2UuCiAgICAgKiAKICAgICAqIFlvdSBjYW4gY29udHJvbCB3aGF0IGRhdGEgaXMgZGlzcGxheWVkIGluIHRoZSB0b29sdGlwIHdpdGggdmFyaW91cwogICAgICogb3B0aW9ucy4gIFRoZSAidG9vbHRpcEF4ZXMiIG9wdGlvbiBjb250cm9scyB3aGV0aGVyIHRoZSB4LCB5IG9yIGJvdGgKICAgICAqIGRhdGEgdmFsdWVzIGFyZSBkaXNwbGF5ZWQuCiAgICAgKiAKICAgICAqIFNvbWUgY2hhcnQgdHlwZXMgKGUuZy4gaGktbG93LWNsb3NlKSBoYXZlIG1vcmUgdGhhbiBvbmUgeSB2YWx1ZSBwZXIKICAgICAqIGRhdGEgcG9pbnQuIFRvIGRpc3BsYXkgdGhlIGFkZGl0aW9uYWwgdmFsdWVzIGluIHRoZSB0b29sdGlwLCBzZXQgdGhlCiAgICAgKiAieXZhbHVlcyIgb3B0aW9uIHRvIHRoZSBkZXNpcmVkIG51bWJlciBvZiB5IHZhbHVlcyBwcmVzZW50ICgzIGZvciBhIGhsYyBjaGFydCkuCiAgICAgKiAKICAgICAqIEJ5IGRlZmF1bHQsIGRhdGEgdmFsdWVzIHdpbGwgYmUgZm9ybWF0dGVkIHdpdGggdGhlIHNhbWUgZm9ybWF0dGluZwogICAgICogc3BlY2lmaWVycyBhcyB1c2VkIHRvIGZvcm1hdCB0aGUgYXhpcyB0aWNrcy4gIEEgY3VzdG9tIGZvcm1hdCBjb2RlCiAgICAgKiBjYW4gYmUgc3VwcGxpZWQgd2l0aCB0aGUgdG9vbHRpcEZvcm1hdFN0cmluZyBvcHRpb24uICBUaGlzIHdpbGwgYXBwbHkgCiAgICAgKiB0byBhbGwgdmFsdWVzIGluIHRoZSB0b29sdGlwLiAgCiAgICAgKiAKICAgICAqIEZvciBtb3JlIGNvbXBsZXRlIGNvbnRyb2wsIHRoZSAiZm9ybWF0U3RyaW5nIiBvcHRpb24gY2FuIGJlIHNldC4gIFRoaXMKICAgICAqIEFsbG93cyBjb25wbGV0ZSBjb250cm9sIG92ZXIgdG9vbHRpcCBmb3JtYXR0aW5nLiAgVmFsdWVzIGFyZSBwYXNzZWQgdG8KICAgICAqIHRoZSBmb3JtYXQgc3RyaW5nIGluIGFuIG9yZGVyIGRldGVybWluZWQgYnkgdGhlICJ0b29sdGlwQXhlcyIgYW5kICJ5dmFsdWVzIgogICAgICogb3B0aW9ucy4gIFNvLCBpZiB5b3UgaGF2ZSBhIGhpLWxvdy1jbG9zZSBjaGFydCBhbmQgeW91IGp1c3Qgd2FudCB0byBkaXNwbGF5IAogICAgICogdGhlIGhpLWxvdy1jbG9zZSB2YWx1ZXMgaW4gdGhlIHRvb2x0aXAsIHlvdSBjb3VsZCBzZXQgYSBmb3JtYXRTdHJpbmcgbGlrZToKICAgICAqIAogICAgICogPiBoaWdobGlnaHRlcjogewogICAgICogPiAgICAgdG9vbHRpcEF4ZXM6ICd5JywKICAgICAqID4gICAgIHl2YWx1ZXM6IDMsCiAgICAgKiA+ICAgICBmb3JtYXRTdHJpbmc6Jzx0YWJsZSBjbGFzcz0ianFwbG90LWhpZ2hsaWdodGVyIj4KICAgICAqID4gICAgICAgICA8dHI+PHRkPmhpOjwvdGQ+PHRkPiVzPC90ZD48L3RyPgogICAgICogPiAgICAgICAgIDx0cj48dGQ+bG93OjwvdGQ+PHRkPiVzPC90ZD48L3RyPgogICAgICogPiAgICAgICAgIDx0cj48dGQ+Y2xvc2U6PC90ZD48dGQ+JXM8L3RkPjwvdHI+PC90YWJsZT4nCiAgICAgKiA+IH0KICAgICAqIAogICAgICovCiAgICAkLmpxcGxvdC5IaWdobGlnaHRlciA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAvLyBHcm91cDogUHJvcGVydGllcwogICAgICAgIC8vCiAgICAgICAgLy9wcm9wOiBzaG93CiAgICAgICAgLy8gdHJ1ZSB0byBzaG93IHRoZSBoaWdobGlnaHQuCiAgICAgICAgdGhpcy5zaG93ID0gJC5qcXBsb3QuY29uZmlnLmVuYWJsZVBsdWdpbnM7CiAgICAgICAgLy8gcHJvcDogbWFya2VyUmVuZGVyZXIKICAgICAgICAvLyBSZW5kZXJlciB1c2VkIHRvIGRyYXcgdGhlIG1hcmtlciBvZiB0aGUgaGlnaGxpZ2h0ZWQgcG9pbnQuCiAgICAgICAgLy8gUmVuZGVyZXIgd2lsbCBhc3NpbWlsYXRlIGF0dHJpYnV0ZXMgZnJvbSB0aGUgZGF0YSBwb2ludCBiZWluZyBoaWdobGlnaHRlZCwKICAgICAgICAvLyBzbyBubyBhdHRyaWJ1dGVzIG5lZWQgc2V0IG9uIHRoZSByZW5kZXJlciBkaXJlY3RseS4KICAgICAgICAvLyBEZWZhdWx0IGlzIHRvIHR1cm4gb2ZmIHNoYWRvdyBkcmF3aW5nIG9uIHRoZSBoaWdobGlnaHRlZCBwb2ludC4KICAgICAgICB0aGlzLm1hcmtlclJlbmRlcmVyID0gbmV3ICQuanFwbG90Lk1hcmtlclJlbmRlcmVyKHtzaGFkb3c6ZmFsc2V9KTsKICAgICAgICAvLyBwcm9wOiBzaG93TWFya2VyCiAgICAgICAgLy8gdHJ1ZSB0byBzaG93IHRoZSBtYXJrZXIKICAgICAgICB0aGlzLnNob3dNYXJrZXIgID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBsaW5lV2lkdGhBZGp1c3QKICAgICAgICAvLyBQaXhlbHMgdG8gYWRkIHRvIHRoZSBsaW5lV2lkdGggb2YgdGhlIGhpZ2hsaWdodC4KICAgICAgICB0aGlzLmxpbmVXaWR0aEFkanVzdCA9IDIuNTsKICAgICAgICAvLyBwcm9wOiBzaXplQWRqdXN0CiAgICAgICAgLy8gUGl4ZWxzIHRvIGFkZCB0byB0aGUgb3ZlcmFsbCBzaXplIG9mIHRoZSBoaWdobGlnaHQuCiAgICAgICAgdGhpcy5zaXplQWRqdXN0ID0gNTsKICAgICAgICAvLyBwcm9wOiBzaG93VG9vbHRpcAogICAgICAgIC8vIFNob3cgYSB0b29sdGlwIHdpdGggZGF0YSBwb2ludCB2YWx1ZXMuCiAgICAgICAgdGhpcy5zaG93VG9vbHRpcCA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogdG9vbHRpcExvY2F0aW9uCiAgICAgICAgLy8gV2hlcmUgdG8gcG9zaXRpb24gdG9vbHRpcCwgJ24nLCAnbmUnLCAnZScsICdzZScsICdzJywgJ3N3JywgJ3cnLCAnbncnCiAgICAgICAgdGhpcy50b29sdGlwTG9jYXRpb24gPSAnbncnOwogICAgICAgIC8vIHByb3A6IGZhZGVUb29sdGlwCiAgICAgICAgLy8gdHJ1ZSA9IGZhZGUgaW4vb3V0IHRvb2x0aXAsIGZsYXNlID0gc2hvdy9oaWRlIHRvb2x0aXAKICAgICAgICB0aGlzLmZhZGVUb29sdGlwID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiB0b29sdGlwRmFkZVNwZWVkCiAgICAgICAgLy8gJ3Nsb3cnLCAnZGVmJywgJ2Zhc3QnLCBvciBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLgogICAgICAgIHRoaXMudG9vbHRpcEZhZGVTcGVlZCA9ICJmYXN0IjsKICAgICAgICAvLyBwcm9wOiB0b29sdGlwT2Zmc2V0CiAgICAgICAgLy8gUGl4ZWwgb2Zmc2V0IG9mIHRvb2x0aXAgZnJvbSB0aGUgaGlnaGxpZ2h0LgogICAgICAgIHRoaXMudG9vbHRpcE9mZnNldCA9IDI7CiAgICAgICAgLy8gcHJvcDogdG9vbHRpcEF4ZXMKICAgICAgICAvLyBXaGljaCBheGVzIHRvIGRpc3BsYXkgaW4gdG9vbHRpcCwgJ3gnLCAneScgb3IgJ2JvdGgnLCAneHknIG9yICd5eCcKICAgICAgICAvLyAnYm90aCcgYW5kICd4eScgYXJlIGVxdWl2YWxlbnQsICd5eCcgcmV2ZXJzZXMgb3JkZXIgb2YgbGFiZWxzLgogICAgICAgIHRoaXMudG9vbHRpcEF4ZXMgPSAnYm90aCc7CiAgICAgICAgLy8gcHJvcDsgdG9vbHRpcFNlcGFyYXRvcgogICAgICAgIC8vIFN0cmluZyB0byB1c2UgdG8gc2VwYXJhdGUgeCBhbmQgeSBheGVzIGluIHRvb2x0aXAuCiAgICAgICAgdGhpcy50b29sdGlwU2VwYXJhdG9yID0gJywgJzsKICAgICAgICAvLyBwcm9wOyB0b29sdGlwQ29udGVudEVkaXRvcgogICAgICAgIC8vIEZ1bmN0aW9uIHVzZWQgdG8gZWRpdC9hdWdtZW50L3JlcGxhY2UgdGhlIGZvcm1hdHRlZCB0b29sdGlwIGNvbnRlbnRzLgogICAgICAgIC8vIENhbGxlZCBhcyBzdHIgPSB0b29sdGlwQ29udGVudEVkaXRvcihzdHIsIHNlcmllc0luZGV4LCBwb2ludEluZGV4KQogICAgICAgIC8vIHdoZXJlIHN0ciBpcyB0aGUgZ2VuZXJhdGVkIHRvb2x0aXAgaHRtbCBhbmQgc2VyaWVzSW5kZXggYW5kIHBvaW50SW5kZXggaWRlbnRpZnkKICAgICAgICAvLyB0aGUgZGF0YSBwb2ludCBiZWluZyBoaWdobGlnaHRlZC4gU2hvdWxkIHJldHVybiB0aGUgaHRtbCBmb3IgdGhlIHRvb2x0aXAgY29udGVudHMuCiAgICAgICAgdGhpcy50b29sdGlwQ29udGVudEVkaXRvciA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogdXNlQXhlc0Zvcm1hdHRlcnMKICAgICAgICAvLyBVc2UgdGhlIHggYW5kIHkgYXhlcyBmb3JtYXR0ZXJzIHRvIGZvcm1hdCB0aGUgdGV4dCBpbiB0aGUgdG9vbHRpcC4KICAgICAgICB0aGlzLnVzZUF4ZXNGb3JtYXR0ZXJzID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiB0b29sdGlwRm9ybWF0U3RyaW5nCiAgICAgICAgLy8gc3ByaW50ZiBmb3JtYXQgc3RyaW5nIGZvciB0aGUgdG9vbHRpcC4KICAgICAgICAvLyBVc2VzIEFzaCBTZWFybGUncyBqYXZhc2NyaXB0IHNwcmludGYgaW1wbGVtZW50YXRpb24KICAgICAgICAvLyBmb3VuZCBoZXJlOiBodHRwOi8vaGV4bWVuLmNvbS9ibG9nLzIwMDcvMDMvcHJpbnRmLXNwcmludGYvCiAgICAgICAgLy8gU2VlIGh0dHA6Ly9wZXJsZG9jLnBlcmwub3JnL2Z1bmN0aW9ucy9zcHJpbnRmLmh0bWwgZm9yIHJlZmVyZW5jZS4KICAgICAgICAvLyBBZGRpdGlvbmFsICJwIiBhbmQgIlAiIGZvcm1hdCBzcGVjaWZpZXJzIGFkZGVkIGJ5IENocmlzIExlb25lbGxvLgogICAgICAgIHRoaXMudG9vbHRpcEZvcm1hdFN0cmluZyA9ICclLjVQJzsKICAgICAgICAvLyBwcm9wOiBmb3JtYXRTdHJpbmcKICAgICAgICAvLyBhbHRlcm5hdGl2ZSB0byB0b29sdGlwRm9ybWF0U3RyaW5nCiAgICAgICAgLy8gd2lsbCBmb3JtYXQgdGhlIHdob2xlIHRvb2x0aXAgdGV4dCwgcG9wdWxhdGluZyB3aXRoIHgsIHkgdmFsdWVzIGFzCiAgICAgICAgLy8gaW5kaWNhdGVkIGJ5IHRvb2x0aXBBeGVzIG9wdGlvbi4gIFNvLCB5b3UgY291bGQgaGF2ZSBhIHRvb2x0aXAgbGlrZToKICAgICAgICAvLyAnRGF0ZTogJXMsIG51bWJlciBvZiBjYXRzOiAlZCcgdG8gZm9ybWF0IHRoZSB3aG9sZSB0b29sdGlwIGF0IG9uZSBnby4KICAgICAgICAvLyBJZiB1c2VBeGVzRm9ybWF0dGVycyBpcyB0cnVlLCB2YWx1ZXMgd2lsbCBiZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvCiAgICAgICAgLy8gQXhlcyBmb3JtYXR0ZXJzIGFuZCB5b3UgY2FuIHBvcHVsYXRlIHlvdXIgdG9vbHRpcCBzdHJpbmcgd2l0aCAKICAgICAgICAvLyAlcyBwbGFjZWhvbGRlcnMuCiAgICAgICAgdGhpcy5mb3JtYXRTdHJpbmcgPSBudWxsOwogICAgICAgIC8vIHByb3A6IHl2YWx1ZXMKICAgICAgICAvLyBOdW1iZXIgb2YgeSB2YWx1ZXMgdG8gZXhwZWN0IGluIHRoZSBkYXRhIHBvaW50IGFycmF5LgogICAgICAgIC8vIFR5cGljYWxseSB0aGlzIGlzIDEuICBDZXJ0YWluIHBsb3RzLCBsaWtlIE9ITEMsIHdpbGwKICAgICAgICAvLyBoYXZlIG1vcmUgeSB2YWx1ZXMgaW4gZWFjaCBkYXRhIHBvaW50IGFycmF5LgogICAgICAgIHRoaXMueXZhbHVlcyA9IDE7CiAgICAgICAgLy8gcHJvcDogYnJpbmdTZXJpZXNUb0Zyb250CiAgICAgICAgLy8gVGhpcyBvcHRpb24gcmVxdWlyZXMgalF1ZXJ5IDEuNCsKICAgICAgICAvLyBUcnVlIHRvIGJyaW5nIHRoZSBzZXJpZXMgb2YgdGhlIGhpZ2hsaWdodGVkIHBvaW50IHRvIHRoZSBmcm9udAogICAgICAgIC8vIG9mIG90aGVyIHNlcmllcy4KICAgICAgICB0aGlzLmJyaW5nU2VyaWVzVG9Gcm9udCA9IGZhbHNlOwogICAgICAgIHRoaXMuX3Rvb2x0aXBFbGVtOwogICAgICAgIHRoaXMuaXNIaWdobGlnaHRpbmcgPSBmYWxzZTsKICAgICAgICB0aGlzLmN1cnJlbnROZWlnaGJvciA9IG51bGw7CgogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgfTsKICAgIAogICAgdmFyIGxvY2F0aW9ucyA9IFsnbncnLCAnbicsICduZScsICdlJywgJ3NlJywgJ3MnLCAnc3cnLCAndyddOwogICAgdmFyIGxvY2F0aW9uSW5kaWNpZXMgPSB7J253JzowLCAnbic6MSwgJ25lJzoyLCAnZSc6MywgJ3NlJzo0LCAncyc6NSwgJ3N3Jzo2LCAndyc6N307CiAgICB2YXIgb3Bwb3NpdGVMb2NhdGlvbnMgPSBbJ3NlJywgJ3MnLCAnc3cnLCAndycsICdudycsICduJywgJ25lJywgJ2UnXTsKICAgIAogICAgLy8gYXhpcy5yZW5kZXJlci50aWNrcmVuZGVyZXIuZm9ybWF0dGVyCiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHBsb3QKICAgICQuanFwbG90LkhpZ2hsaWdodGVyLmluaXQgPSBmdW5jdGlvbiAodGFyZ2V0LCBkYXRhLCBvcHRzKXsKICAgICAgICB2YXIgb3B0aW9ucyA9IG9wdHMgfHwge307CiAgICAgICAgLy8gYWRkIGEgaGlnaGxpZ2h0ZXIgYXR0cmlidXRlIHRvIHRoZSBwbG90CiAgICAgICAgdGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyID0gbmV3ICQuanFwbG90LkhpZ2hsaWdodGVyKG9wdGlvbnMuaGlnaGxpZ2h0ZXIpOwogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGhpbiBzY29wZSBvZiBzZXJpZXMKICAgICQuanFwbG90LkhpZ2hsaWdodGVyLnBhcnNlT3B0aW9ucyA9IGZ1bmN0aW9uIChkZWZhdWx0cywgb3B0aW9ucykgewogICAgICAgIC8vIEFkZCBhIHNob3dIaWdobGlnaHQgb3B0aW9uIHRvIHRoZSBzZXJpZXMgCiAgICAgICAgLy8gYW5kIHNldCBpdCB0byB0cnVlIGJ5IGRlZmF1bHQuCiAgICAgICAgdGhpcy5zaG93SGlnaGxpZ2h0ID0gdHJ1ZTsKICAgIH07CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoaW4gY29udGV4dCBvZiBwbG90CiAgICAvLyBjcmVhdGUgYSBjYW52YXMgd2hpY2ggd2UgY2FuIGRyYXcgb24uCiAgICAvLyBpbnNlcnQgaXQgYmVmb3JlIHRoZSBldmVudENhbnZhcywgc28gZXZlbnRDYW52YXMgd2lsbCBzdGlsbCBjYXB0dXJlIGV2ZW50cy4KICAgICQuanFwbG90LkhpZ2hsaWdodGVyLnBvc3RQbG90RHJhdyA9IGZ1bmN0aW9uKCkgewogICAgICAgIC8vIE1lbW9yeSBMZWFrcyBwYXRjaCAgICAKICAgICAgICBpZiAodGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyICYmIHRoaXMucGx1Z2lucy5oaWdobGlnaHRlci5oaWdobGlnaHRDYW52YXMpIHsKICAgICAgICAgICAgdGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLmhpZ2hsaWdodENhbnZhcy5yZXNldENhbnZhcygpOwogICAgICAgICAgICB0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuaGlnaGxpZ2h0Q2FudmFzID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIGlmICh0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIgJiYgdGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLl90b29sdGlwRWxlbSkgewogICAgICAgICAgICB0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuX3Rvb2x0aXBFbGVtLmVtcHR5Rm9yY2UoKTsKICAgICAgICAgICAgdGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLl90b29sdGlwRWxlbSA9IG51bGw7CiAgICAgICAgfQoKICAgICAgICB0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuaGlnaGxpZ2h0Q2FudmFzID0gbmV3ICQuanFwbG90LkdlbmVyaWNDYW52YXMoKTsKICAgICAgICAKICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZSh0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuaGlnaGxpZ2h0Q2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsICdqcXBsb3QtaGlnaGxpZ2h0LWNhbnZhcycsIHRoaXMuX3Bsb3REaW1lbnNpb25zLCB0aGlzKSk7CiAgICAgICAgdGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLmhpZ2hsaWdodENhbnZhcy5zZXRDb250ZXh0KCk7CgogICAgICAgIHZhciBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgdGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLl90b29sdGlwRWxlbSA9ICQoZWxlbSk7CiAgICAgICAgZWxlbSA9IG51bGw7CiAgICAgICAgdGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLl90b29sdGlwRWxlbS5hZGRDbGFzcygnanFwbG90LWhpZ2hsaWdodGVyLXRvb2x0aXAnKTsKICAgICAgICB0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuX3Rvb2x0aXBFbGVtLmNzcyh7cG9zaXRpb246J2Fic29sdXRlJywgZGlzcGxheTonbm9uZSd9KTsKICAgICAgICAKICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZSh0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuX3Rvb2x0aXBFbGVtKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LnByZUluaXRIb29rcy5wdXNoKCQuanFwbG90LkhpZ2hsaWdodGVyLmluaXQpOwogICAgJC5qcXBsb3QucHJlUGFyc2VTZXJpZXNPcHRpb25zSG9va3MucHVzaCgkLmpxcGxvdC5IaWdobGlnaHRlci5wYXJzZU9wdGlvbnMpOwogICAgJC5qcXBsb3QucG9zdERyYXdIb29rcy5wdXNoKCQuanFwbG90LkhpZ2hsaWdodGVyLnBvc3RQbG90RHJhdyk7CiAgICAKICAgIGZ1bmN0aW9uIGRyYXcocGxvdCwgbmVpZ2hib3IpIHsKICAgICAgICB2YXIgaGwgPSBwbG90LnBsdWdpbnMuaGlnaGxpZ2h0ZXI7CiAgICAgICAgdmFyIHMgPSBwbG90LnNlcmllc1tuZWlnaGJvci5zZXJpZXNJbmRleF07CiAgICAgICAgdmFyIHNtciA9IHMubWFya2VyUmVuZGVyZXI7CiAgICAgICAgdmFyIG1yID0gaGwubWFya2VyUmVuZGVyZXI7CiAgICAgICAgbXIuc3R5bGUgPSBzbXIuc3R5bGU7CiAgICAgICAgbXIubGluZVdpZHRoID0gc21yLmxpbmVXaWR0aCArIGhsLmxpbmVXaWR0aEFkanVzdDsKICAgICAgICBtci5zaXplID0gc21yLnNpemUgKyBobC5zaXplQWRqdXN0OwogICAgICAgIHZhciByZ2JhID0gJC5qcXBsb3QuZ2V0Q29sb3JDb21wb25lbnRzKHNtci5jb2xvcik7CiAgICAgICAgdmFyIG5ld3JnYiA9IFtyZ2JhWzBdLCByZ2JhWzFdLCByZ2JhWzJdXTsKICAgICAgICB2YXIgYWxwaGEgPSAocmdiYVszXSA+PSAwLjYpID8gcmdiYVszXSowLjYgOiByZ2JhWzNdKigyLXJnYmFbM10pOwogICAgICAgIG1yLmNvbG9yID0gJ3JnYmEoJytuZXdyZ2JbMF0rJywnK25ld3JnYlsxXSsnLCcrbmV3cmdiWzJdKycsJythbHBoYSsnKSc7CiAgICAgICAgbXIuaW5pdCgpOwogICAgICAgIG1yLmRyYXcocy5ncmlkRGF0YVtuZWlnaGJvci5wb2ludEluZGV4XVswXSwgcy5ncmlkRGF0YVtuZWlnaGJvci5wb2ludEluZGV4XVsxXSwgaGwuaGlnaGxpZ2h0Q2FudmFzLl9jdHgpOwogICAgfQogICAgCiAgICBmdW5jdGlvbiBzaG93VG9vbHRpcChwbG90LCBzZXJpZXMsIG5laWdoYm9yKSB7CiAgICAgICAgLy8gbmVpZ2hib3IgbG9va3MgbGlrZToge3Nlcmllc0luZGV4OiBpLCBwb2ludEluZGV4OmosIGdyaWREYXRhOnAsIGRhdGE6cy5kYXRhW2pdfQogICAgICAgIC8vIGdyaWREYXRhIHNob3VsZCBiZSB4LHkgcGl4ZWwgY29vcmRzIG9uIHRoZSBncmlkLgogICAgICAgIC8vIGFkZCB0aGUgcGxvdC5fZ3JpZFBhZGRpbmcgdG8gdGhhdCB0byBnZXQgeCx5IGluIHRoZSB0YXJnZXQuCiAgICAgICAgdmFyIGhsID0gcGxvdC5wbHVnaW5zLmhpZ2hsaWdodGVyOwogICAgICAgIHZhciBlbGVtID0gaGwuX3Rvb2x0aXBFbGVtOwogICAgICAgIHZhciBzZXJpZXNobCA9IHNlcmllcy5oaWdobGlnaHRlciB8fCB7fTsKCiAgICAgICAgdmFyIG9wdHMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgaGwsIHNlcmllc2hsKTsKCiAgICAgICAgaWYgKG9wdHMudXNlQXhlc0Zvcm1hdHRlcnMpIHsKICAgICAgICAgICAgdmFyIHhmID0gc2VyaWVzLl94YXhpcy5fdGlja3NbMF0uZm9ybWF0dGVyOwogICAgICAgICAgICB2YXIgeWYgPSBzZXJpZXMuX3lheGlzLl90aWNrc1swXS5mb3JtYXR0ZXI7CiAgICAgICAgICAgIHZhciB4ZnN0ciA9IHNlcmllcy5feGF4aXMuX3RpY2tzWzBdLmZvcm1hdFN0cmluZzsKICAgICAgICAgICAgdmFyIHlmc3RyID0gc2VyaWVzLl95YXhpcy5fdGlja3NbMF0uZm9ybWF0U3RyaW5nOwogICAgICAgICAgICB2YXIgc3RyOwogICAgICAgICAgICB2YXIgeHN0ciA9IHhmKHhmc3RyLCBuZWlnaGJvci5kYXRhWzBdKTsKICAgICAgICAgICAgdmFyIHlzdHJzID0gW107CiAgICAgICAgICAgIGZvciAodmFyIGk9MTsgaTxvcHRzLnl2YWx1ZXMrMTsgaSsrKSB7CiAgICAgICAgICAgICAgICB5c3Rycy5wdXNoKHlmKHlmc3RyLCBuZWlnaGJvci5kYXRhW2ldKSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRzLmZvcm1hdFN0cmluZyA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgICAgIHN3aXRjaCAob3B0cy50b29sdGlwQXhlcykgewogICAgICAgICAgICAgICAgICAgIGNhc2UgJ2JvdGgnOgogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3h5JzoKICAgICAgICAgICAgICAgICAgICAgICAgeXN0cnMudW5zaGlmdCh4c3RyKTsKICAgICAgICAgICAgICAgICAgICAgICAgeXN0cnMudW5zaGlmdChvcHRzLmZvcm1hdFN0cmluZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9ICQuanFwbG90LnNwcmludGYuYXBwbHkoJC5qcXBsb3Quc3ByaW50ZiwgeXN0cnMpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICd5eCc6CiAgICAgICAgICAgICAgICAgICAgICAgIHlzdHJzLnB1c2goeHN0cik7CiAgICAgICAgICAgICAgICAgICAgICAgIHlzdHJzLnVuc2hpZnQob3B0cy5mb3JtYXRTdHJpbmcpOwogICAgICAgICAgICAgICAgICAgICAgICBzdHIgPSAkLmpxcGxvdC5zcHJpbnRmLmFwcGx5KCQuanFwbG90LnNwcmludGYsIHlzdHJzKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAneCc6CiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9ICQuanFwbG90LnNwcmludGYuYXBwbHkoJC5qcXBsb3Quc3ByaW50ZiwgW29wdHMuZm9ybWF0U3RyaW5nLCB4c3RyXSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3knOgogICAgICAgICAgICAgICAgICAgICAgICB5c3Rycy51bnNoaWZ0KG9wdHMuZm9ybWF0U3RyaW5nKTsKICAgICAgICAgICAgICAgICAgICAgICAgc3RyID0gJC5qcXBsb3Quc3ByaW50Zi5hcHBseSgkLmpxcGxvdC5zcHJpbnRmLCB5c3Rycyk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IC8vIHNhbWUgYXMgeHkKICAgICAgICAgICAgICAgICAgICAgICAgeXN0cnMudW5zaGlmdCh4c3RyKTsKICAgICAgICAgICAgICAgICAgICAgICAgeXN0cnMudW5zaGlmdChvcHRzLmZvcm1hdFN0cmluZyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9ICQuanFwbG90LnNwcmludGYuYXBwbHkoJC5qcXBsb3Quc3ByaW50ZiwgeXN0cnMpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wdHMudG9vbHRpcEF4ZXMpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICdib3RoJzoKICAgICAgICAgICAgICAgICAgICBjYXNlICd4eSc6CiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IHhzdHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx5c3Rycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9IG9wdHMudG9vbHRpcFNlcGFyYXRvciArIHlzdHJzW2ldOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3l4JzoKICAgICAgICAgICAgICAgICAgICAgICAgc3RyID0gJyc7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx5c3Rycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9IHlzdHJzW2ldICsgb3B0cy50b29sdGlwU2VwYXJhdG9yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSB4c3RyOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICd4JzoKICAgICAgICAgICAgICAgICAgICAgICAgc3RyID0geHN0cjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAneSc6CiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IHlzdHJzLmpvaW4ob3B0cy50b29sdGlwU2VwYXJhdG9yKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogLy8gc2FtZSBhcyAneHknCiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IHhzdHI7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx5c3Rycy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9IG9wdHMudG9vbHRpcFNlcGFyYXRvciArIHlzdHJzW2ldOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdmFyIHN0cjsKICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRzLmZvcm1hdFN0cmluZyA9PT0gICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICBzdHIgPSAkLmpxcGxvdC5zcHJpbnRmLmFwcGx5KCQuanFwbG90LnNwcmludGYsIFtvcHRzLmZvcm1hdFN0cmluZ10uY29uY2F0KG5laWdoYm9yLmRhdGEpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAob3B0cy50b29sdGlwQXhlcyA9PSAnYm90aCcgfHwgb3B0cy50b29sdGlwQXhlcyA9PSAneHknKSB7CiAgICAgICAgICAgICAgICAgICAgc3RyID0gJC5qcXBsb3Quc3ByaW50ZihvcHRzLnRvb2x0aXBGb3JtYXRTdHJpbmcsIG5laWdoYm9yLmRhdGFbMF0pICsgb3B0cy50b29sdGlwU2VwYXJhdG9yICsgJC5qcXBsb3Quc3ByaW50ZihvcHRzLnRvb2x0aXBGb3JtYXRTdHJpbmcsIG5laWdoYm9yLmRhdGFbMV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAob3B0cy50b29sdGlwQXhlcyA9PSAneXgnKSB7CiAgICAgICAgICAgICAgICAgICAgc3RyID0gJC5qcXBsb3Quc3ByaW50ZihvcHRzLnRvb2x0aXBGb3JtYXRTdHJpbmcsIG5laWdoYm9yLmRhdGFbMV0pICsgb3B0cy50b29sdGlwU2VwYXJhdG9yICsgJC5qcXBsb3Quc3ByaW50ZihvcHRzLnRvb2x0aXBGb3JtYXRTdHJpbmcsIG5laWdoYm9yLmRhdGFbMF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAob3B0cy50b29sdGlwQXhlcyA9PSAneCcpIHsKICAgICAgICAgICAgICAgICAgICBzdHIgPSAkLmpxcGxvdC5zcHJpbnRmKG9wdHMudG9vbHRpcEZvcm1hdFN0cmluZywgbmVpZ2hib3IuZGF0YVswXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChvcHRzLnRvb2x0aXBBeGVzID09ICd5JykgewogICAgICAgICAgICAgICAgICAgIHN0ciA9ICQuanFwbG90LnNwcmludGYob3B0cy50b29sdGlwRm9ybWF0U3RyaW5nLCBuZWlnaGJvci5kYXRhWzFdKTsKICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCQuaXNGdW5jdGlvbihvcHRzLnRvb2x0aXBDb250ZW50RWRpdG9yKSkgewogICAgICAgICAgICAvLyBhcmdzIHN0ciwgc2VyaWVzSW5kZXgsIHBvaW50SW5kZXggYXJlIGVzc2VudGlhbCBzbyB0aGUgaG9vayBjYW4gbG9vayB1cAogICAgICAgICAgICAvLyBleHRyYSBkYXRhIGZvciB0aGUgcG9pbnQuCiAgICAgICAgICAgIHN0ciA9IG9wdHMudG9vbHRpcENvbnRlbnRFZGl0b3Ioc3RyLCBuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgcGxvdCk7CiAgICAgICAgfQogICAgICAgIGVsZW0uaHRtbChzdHIpOwogICAgICAgIHZhciBncmlkcG9zID0ge3g6bmVpZ2hib3IuZ3JpZERhdGFbMF0sIHk6bmVpZ2hib3IuZ3JpZERhdGFbMV19OwogICAgICAgIHZhciBtcyA9IDA7CiAgICAgICAgdmFyIGZhY3QgPSAwLjcwNzsKICAgICAgICBpZiAoc2VyaWVzLm1hcmtlclJlbmRlcmVyLnNob3cgPT0gdHJ1ZSkgeyAKICAgICAgICAgICAgbXMgPSAoc2VyaWVzLm1hcmtlclJlbmRlcmVyLnNpemUgKyBvcHRzLnNpemVBZGp1c3QpLzI7CiAgICAgICAgfQoKICAgICAgICB2YXIgbG9jID0gbG9jYXRpb25zOwogICAgICAgIGlmIChzZXJpZXMuZmlsbFRvWmVybyAmJiBzZXJpZXMuZmlsbCAmJiBuZWlnaGJvci5kYXRhWzFdIDwgMCkgewogICAgICAgICAgbG9jID0gb3Bwb3NpdGVMb2NhdGlvbnM7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKGxvY1tsb2NhdGlvbkluZGljaWVzW29wdHMudG9vbHRpcExvY2F0aW9uXV0pIHsKICAgICAgICAgICAgY2FzZSAnbncnOgogICAgICAgICAgICAgICAgdmFyIHggPSBncmlkcG9zLnggKyBwbG90Ll9ncmlkUGFkZGluZy5sZWZ0IC0gZWxlbS5vdXRlcldpZHRoKHRydWUpIC0gb3B0cy50b29sdGlwT2Zmc2V0IC0gZmFjdCAqIG1zOwogICAgICAgICAgICAgICAgdmFyIHkgPSBncmlkcG9zLnkgKyBwbG90Ll9ncmlkUGFkZGluZy50b3AgLSBvcHRzLnRvb2x0aXBPZmZzZXQgLSBlbGVtLm91dGVySGVpZ2h0KHRydWUpIC0gZmFjdCAqIG1zOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ24nOgogICAgICAgICAgICAgICAgdmFyIHggPSBncmlkcG9zLnggKyBwbG90Ll9ncmlkUGFkZGluZy5sZWZ0IC0gZWxlbS5vdXRlcldpZHRoKHRydWUpLzI7CiAgICAgICAgICAgICAgICB2YXIgeSA9IGdyaWRwb3MueSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCAtIG9wdHMudG9vbHRpcE9mZnNldCAtIGVsZW0ub3V0ZXJIZWlnaHQodHJ1ZSkgLSBtczsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICduZSc6CiAgICAgICAgICAgICAgICB2YXIgeCA9IGdyaWRwb3MueCArIHBsb3QuX2dyaWRQYWRkaW5nLmxlZnQgKyBvcHRzLnRvb2x0aXBPZmZzZXQgKyBmYWN0ICogbXM7CiAgICAgICAgICAgICAgICB2YXIgeSA9IGdyaWRwb3MueSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCAtIG9wdHMudG9vbHRpcE9mZnNldCAtIGVsZW0ub3V0ZXJIZWlnaHQodHJ1ZSkgLSBmYWN0ICogbXM7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnZSc6CiAgICAgICAgICAgICAgICB2YXIgeCA9IGdyaWRwb3MueCArIHBsb3QuX2dyaWRQYWRkaW5nLmxlZnQgKyBvcHRzLnRvb2x0aXBPZmZzZXQgKyBtczsKICAgICAgICAgICAgICAgIHZhciB5ID0gZ3JpZHBvcy55ICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wIC0gZWxlbS5vdXRlckhlaWdodCh0cnVlKS8yOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3NlJzoKICAgICAgICAgICAgICAgIHZhciB4ID0gZ3JpZHBvcy54ICsgcGxvdC5fZ3JpZFBhZGRpbmcubGVmdCArIG9wdHMudG9vbHRpcE9mZnNldCArIGZhY3QgKiBtczsKICAgICAgICAgICAgICAgIHZhciB5ID0gZ3JpZHBvcy55ICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wICsgb3B0cy50b29sdGlwT2Zmc2V0ICsgZmFjdCAqIG1zOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgICAgdmFyIHggPSBncmlkcG9zLnggKyBwbG90Ll9ncmlkUGFkZGluZy5sZWZ0IC0gZWxlbS5vdXRlcldpZHRoKHRydWUpLzI7CiAgICAgICAgICAgICAgICB2YXIgeSA9IGdyaWRwb3MueSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCArIG9wdHMudG9vbHRpcE9mZnNldCArIG1zOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3N3JzoKICAgICAgICAgICAgICAgIHZhciB4ID0gZ3JpZHBvcy54ICsgcGxvdC5fZ3JpZFBhZGRpbmcubGVmdCAtIGVsZW0ub3V0ZXJXaWR0aCh0cnVlKSAtIG9wdHMudG9vbHRpcE9mZnNldCAtIGZhY3QgKiBtczsKICAgICAgICAgICAgICAgIHZhciB5ID0gZ3JpZHBvcy55ICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wICsgb3B0cy50b29sdGlwT2Zmc2V0ICsgZmFjdCAqIG1zOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3cnOgogICAgICAgICAgICAgICAgdmFyIHggPSBncmlkcG9zLnggKyBwbG90Ll9ncmlkUGFkZGluZy5sZWZ0IC0gZWxlbS5vdXRlcldpZHRoKHRydWUpIC0gb3B0cy50b29sdGlwT2Zmc2V0IC0gbXM7CiAgICAgICAgICAgICAgICB2YXIgeSA9IGdyaWRwb3MueSArIHBsb3QuX2dyaWRQYWRkaW5nLnRvcCAtIGVsZW0ub3V0ZXJIZWlnaHQodHJ1ZSkvMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBkZWZhdWx0OiAvLyBzYW1lIGFzICdudycKICAgICAgICAgICAgICAgIHZhciB4ID0gZ3JpZHBvcy54ICsgcGxvdC5fZ3JpZFBhZGRpbmcubGVmdCAtIGVsZW0ub3V0ZXJXaWR0aCh0cnVlKSAtIG9wdHMudG9vbHRpcE9mZnNldCAtIGZhY3QgKiBtczsKICAgICAgICAgICAgICAgIHZhciB5ID0gZ3JpZHBvcy55ICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wIC0gb3B0cy50b29sdGlwT2Zmc2V0IC0gZWxlbS5vdXRlckhlaWdodCh0cnVlKSAtIGZhY3QgKiBtczsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KICAgICAgICBlbGVtLmNzcygnbGVmdCcsIHgpOwogICAgICAgIGVsZW0uY3NzKCd0b3AnLCB5KTsKICAgICAgICBpZiAob3B0cy5mYWRlVG9vbHRpcCkgewogICAgICAgICAgICAvLyBGaXggZm9yIHN0YWNrZWQgdXAgYW5pbWF0aW9ucy4gIFRobmFua3MgVHJldm9yIQogICAgICAgICAgICBlbGVtLnN0b3AodHJ1ZSx0cnVlKS5mYWRlSW4ob3B0cy50b29sdGlwRmFkZVNwZWVkKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGVsZW0uc2hvdygpOwogICAgICAgIH0KICAgICAgICBlbGVtID0gbnVsbDsKICAgICAgICAKICAgIH0KICAgIAogICAgZnVuY3Rpb24gaGFuZGxlTW92ZShldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICB2YXIgaGwgPSBwbG90LnBsdWdpbnMuaGlnaGxpZ2h0ZXI7CiAgICAgICAgdmFyIGMgPSBwbG90LnBsdWdpbnMuY3Vyc29yOwogICAgICAgIGlmIChobC5zaG93KSB7CiAgICAgICAgICAgIGlmIChuZWlnaGJvciA9PSBudWxsICYmIGhsLmlzSGlnaGxpZ2h0aW5nKSB7CiAgICAgICAgICAgICAgICB2YXIgZXZ0ID0galF1ZXJ5LkV2ZW50KCdqcXBsb3RIaWdobGlnaHRlclVuaGlnaGxpZ2h0Jyk7CiAgICAgICAgICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKGV2dCk7CgogICAgICAgICAgICAgICAgdmFyIGN0eCA9IGhsLmhpZ2hsaWdodENhbnZhcy5fY3R4OwogICAgICAgICAgICAgICAgY3R4LmNsZWFyUmVjdCgwLCAwLCBjdHguY2FudmFzLndpZHRoLCBjdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgICAgICAgICBpZiAoaGwuZmFkZVRvb2x0aXApIHsKICAgICAgICAgICAgICAgICAgICBobC5fdG9vbHRpcEVsZW0uZmFkZU91dChobC50b29sdGlwRmFkZVNwZWVkKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGhsLl90b29sdGlwRWxlbS5oaWRlKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaGwuYnJpbmdTZXJpZXNUb0Zyb250KSB7CiAgICAgICAgICAgICAgICAgICAgcGxvdC5yZXN0b3JlUHJldmlvdXNTZXJpZXNPcmRlcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaGwuaXNIaWdobGlnaHRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGhsLmN1cnJlbnROZWlnaGJvciA9IG51bGw7CiAgICAgICAgICAgICAgICBjdHggPSBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKG5laWdoYm9yICE9IG51bGwgJiYgcGxvdC5zZXJpZXNbbmVpZ2hib3Iuc2VyaWVzSW5kZXhdLnNob3dIaWdobGlnaHQgJiYgIWhsLmlzSGlnaGxpZ2h0aW5nKSB7CiAgICAgICAgICAgICAgICB2YXIgZXZ0ID0galF1ZXJ5LkV2ZW50KCdqcXBsb3RIaWdobGlnaHRlckhpZ2hsaWdodCcpOwogICAgICAgICAgICAgICAgZXZ0LndoaWNoID0gZXYud2hpY2g7CiAgICAgICAgICAgICAgICBldnQucGFnZVggPSBldi5wYWdlWDsKICAgICAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICAgICAgdmFyIGlucyA9IFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IuZGF0YSwgcGxvdF07CiAgICAgICAgICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKGV2dCwgaW5zKTsKCiAgICAgICAgICAgICAgICBobC5pc0hpZ2hsaWdodGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICBobC5jdXJyZW50TmVpZ2hib3IgPSBuZWlnaGJvcjsKICAgICAgICAgICAgICAgIGlmIChobC5zaG93TWFya2VyKSB7CiAgICAgICAgICAgICAgICAgICAgZHJhdyhwbG90LCBuZWlnaGJvcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAocGxvdC5zZXJpZXNbbmVpZ2hib3Iuc2VyaWVzSW5kZXhdLnNob3cgJiYgaGwuc2hvd1Rvb2x0aXAgJiYgKCFjIHx8ICFjLl96b29tLnN0YXJ0ZWQpKSB7CiAgICAgICAgICAgICAgICAgICAgc2hvd1Rvb2x0aXAocGxvdCwgcGxvdC5zZXJpZXNbbmVpZ2hib3Iuc2VyaWVzSW5kZXhdLCBuZWlnaGJvcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaGwuYnJpbmdTZXJpZXNUb0Zyb250KSB7CiAgICAgICAgICAgICAgICAgICAgcGxvdC5tb3ZlU2VyaWVzVG9Gcm9udChuZWlnaGJvci5zZXJpZXNJbmRleCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gY2hlY2sgdG8gc2VlIGlmIHdlJ3JlIGhpZ2hsaWdodGluZyB0aGUgd3JvbmcgcG9pbnQuCiAgICAgICAgICAgIGVsc2UgaWYgKG5laWdoYm9yICE9IG51bGwgJiYgaGwuaXNIaWdobGlnaHRpbmcgJiYgaGwuY3VycmVudE5laWdoYm9yICE9IG5laWdoYm9yKSB7CiAgICAgICAgICAgICAgICAvLyBoaWdobGlnaHRpbmcgdGhlIHdyb25nIHBvaW50LgoKICAgICAgICAgICAgICAgIC8vIGlmIG5ldyBzZXJpZXMgYWxsb3dzIGhpZ2hsaWdodGluZywgaGlnaGxpZ2h0IG5ldyBwb2ludC4KICAgICAgICAgICAgICAgIGlmIChwbG90LnNlcmllc1tuZWlnaGJvci5zZXJpZXNJbmRleF0uc2hvd0hpZ2hsaWdodCkgewogICAgICAgICAgICAgICAgICAgIHZhciBjdHggPSBobC5oaWdobGlnaHRDYW52YXMuX2N0eDsKICAgICAgICAgICAgICAgICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIGN0eC5jYW52YXMud2lkdGgsIGN0eC5jYW52YXMuaGVpZ2h0KTsKICAgICAgICAgICAgICAgICAgICBobC5pc0hpZ2hsaWdodGluZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgaGwuY3VycmVudE5laWdoYm9yID0gbmVpZ2hib3I7CiAgICAgICAgICAgICAgICAgICAgaWYgKGhsLnNob3dNYXJrZXIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZHJhdyhwbG90LCBuZWlnaGJvcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChwbG90LnNlcmllc1tuZWlnaGJvci5zZXJpZXNJbmRleF0uc2hvdyAmJiBobC5zaG93VG9vbHRpcCAmJiAoIWMgfHwgIWMuX3pvb20uc3RhcnRlZCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1Rvb2x0aXAocGxvdCwgcGxvdC5zZXJpZXNbbmVpZ2hib3Iuc2VyaWVzSW5kZXhdLCBuZWlnaGJvcik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChobC5icmluZ1Nlcmllc1RvRnJvbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcGxvdC5tb3ZlU2VyaWVzVG9Gcm9udChuZWlnaGJvci5zZXJpZXNJbmRleCk7CiAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.highlighter.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGQpe2QuanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsianFwbG90TW91c2VNb3ZlIixmXSk7ZC5qcXBsb3QuSGlnaGxpZ2h0ZXI9ZnVuY3Rpb24oaCl7dGhpcy5zaG93PWQuanFwbG90LmNvbmZpZy5lbmFibGVQbHVnaW5zO3RoaXMubWFya2VyUmVuZGVyZXI9bmV3IGQuanFwbG90Lk1hcmtlclJlbmRlcmVyKHtzaGFkb3c6ZmFsc2V9KTt0aGlzLnNob3dNYXJrZXI9dHJ1ZTt0aGlzLmxpbmVXaWR0aEFkanVzdD0yLjU7dGhpcy5zaXplQWRqdXN0PTU7dGhpcy5zaG93VG9vbHRpcD10cnVlO3RoaXMudG9vbHRpcExvY2F0aW9uPSJudyI7dGhpcy5mYWRlVG9vbHRpcD10cnVlO3RoaXMudG9vbHRpcEZhZGVTcGVlZD0iZmFzdCI7dGhpcy50b29sdGlwT2Zmc2V0PTI7dGhpcy50b29sdGlwQXhlcz0iYm90aCI7dGhpcy50b29sdGlwU2VwYXJhdG9yPSIsICI7dGhpcy50b29sdGlwQ29udGVudEVkaXRvcj1udWxsO3RoaXMudXNlQXhlc0Zvcm1hdHRlcnM9dHJ1ZTt0aGlzLnRvb2x0aXBGb3JtYXRTdHJpbmc9IiUuNVAiO3RoaXMuZm9ybWF0U3RyaW5nPW51bGw7dGhpcy55dmFsdWVzPTE7dGhpcy5icmluZ1Nlcmllc1RvRnJvbnQ9ZmFsc2U7dGhpcy5fdG9vbHRpcEVsZW07dGhpcy5pc0hpZ2hsaWdodGluZz1mYWxzZTt0aGlzLmN1cnJlbnROZWlnaGJvcj1udWxsO2QuZXh0ZW5kKHRydWUsdGhpcyxoKX07dmFyIGI9WyJudyIsIm4iLCJuZSIsImUiLCJzZSIsInMiLCJzdyIsInciXTt2YXIgZT17bnc6MCxuOjEsbmU6MixlOjMsc2U6NCxzOjUsc3c6Nix3Ojd9O3ZhciBjPVsic2UiLCJzIiwic3ciLCJ3IiwibnciLCJuIiwibmUiLCJlIl07ZC5qcXBsb3QuSGlnaGxpZ2h0ZXIuaW5pdD1mdW5jdGlvbihrLGosaSl7dmFyIGg9aXx8e307dGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyPW5ldyBkLmpxcGxvdC5IaWdobGlnaHRlcihoLmhpZ2hsaWdodGVyKX07ZC5qcXBsb3QuSGlnaGxpZ2h0ZXIucGFyc2VPcHRpb25zPWZ1bmN0aW9uKGksaCl7dGhpcy5zaG93SGlnaGxpZ2h0PXRydWV9O2QuanFwbG90LkhpZ2hsaWdodGVyLnBvc3RQbG90RHJhdz1mdW5jdGlvbigpe2lmKHRoaXMucGx1Z2lucy5oaWdobGlnaHRlciYmdGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLmhpZ2hsaWdodENhbnZhcyl7dGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLmhpZ2hsaWdodENhbnZhcy5yZXNldENhbnZhcygpO3RoaXMucGx1Z2lucy5oaWdobGlnaHRlci5oaWdobGlnaHRDYW52YXM9bnVsbH1pZih0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXImJnRoaXMucGx1Z2lucy5oaWdobGlnaHRlci5fdG9vbHRpcEVsZW0pe3RoaXMucGx1Z2lucy5oaWdobGlnaHRlci5fdG9vbHRpcEVsZW0uZW1wdHlGb3JjZSgpO3RoaXMucGx1Z2lucy5oaWdobGlnaHRlci5fdG9vbHRpcEVsZW09bnVsbH10aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuaGlnaGxpZ2h0Q2FudmFzPW5ldyBkLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUodGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLmhpZ2hsaWdodENhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCJqcXBsb3QtaGlnaGxpZ2h0LWNhbnZhcyIsdGhpcy5fcGxvdERpbWVuc2lvbnMsdGhpcykpO3RoaXMucGx1Z2lucy5oaWdobGlnaHRlci5oaWdobGlnaHRDYW52YXMuc2V0Q29udGV4dCgpO3ZhciBoPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RoaXMucGx1Z2lucy5oaWdobGlnaHRlci5fdG9vbHRpcEVsZW09ZChoKTtoPW51bGw7dGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLl90b29sdGlwRWxlbS5hZGRDbGFzcygianFwbG90LWhpZ2hsaWdodGVyLXRvb2x0aXAiKTt0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuX3Rvb2x0aXBFbGVtLmNzcyh7cG9zaXRpb246ImFic29sdXRlIixkaXNwbGF5OiJub25lIn0pO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKHRoaXMucGx1Z2lucy5oaWdobGlnaHRlci5fdG9vbHRpcEVsZW0pfTtkLmpxcGxvdC5wcmVJbml0SG9va3MucHVzaChkLmpxcGxvdC5IaWdobGlnaHRlci5pbml0KTtkLmpxcGxvdC5wcmVQYXJzZVNlcmllc09wdGlvbnNIb29rcy5wdXNoKGQuanFwbG90LkhpZ2hsaWdodGVyLnBhcnNlT3B0aW9ucyk7ZC5qcXBsb3QucG9zdERyYXdIb29rcy5wdXNoKGQuanFwbG90LkhpZ2hsaWdodGVyLnBvc3RQbG90RHJhdyk7ZnVuY3Rpb24gYShtLG8pe3ZhciBqPW0ucGx1Z2lucy5oaWdobGlnaHRlcjt2YXIgcD1tLnNlcmllc1tvLnNlcmllc0luZGV4XTt2YXIgaD1wLm1hcmtlclJlbmRlcmVyO3ZhciBpPWoubWFya2VyUmVuZGVyZXI7aS5zdHlsZT1oLnN0eWxlO2kubGluZVdpZHRoPWgubGluZVdpZHRoK2oubGluZVdpZHRoQWRqdXN0O2kuc2l6ZT1oLnNpemUrai5zaXplQWRqdXN0O3ZhciBsPWQuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyhoLmNvbG9yKTt2YXIgbj1bbFswXSxsWzFdLGxbMl1dO3ZhciBrPShsWzNdPj0wLjYpP2xbM10qMC42OmxbM10qKDItbFszXSk7aS5jb2xvcj0icmdiYSgiK25bMF0rIiwiK25bMV0rIiwiK25bMl0rIiwiK2srIikiO2kuaW5pdCgpO2kuZHJhdyhwLmdyaWREYXRhW28ucG9pbnRJbmRleF1bMF0scC5ncmlkRGF0YVtvLnBvaW50SW5kZXhdWzFdLGouaGlnaGxpZ2h0Q2FudmFzLl9jdHgpfWZ1bmN0aW9uIGcoQSxxLG0pe3ZhciBrPUEucGx1Z2lucy5oaWdobGlnaHRlcjt2YXIgRD1rLl90b29sdGlwRWxlbTt2YXIgcj1xLmhpZ2hsaWdodGVyfHx7fTt2YXIgdD1kLmV4dGVuZCh0cnVlLHt9LGsscik7aWYodC51c2VBeGVzRm9ybWF0dGVycyl7dmFyIHc9cS5feGF4aXMuX3RpY2tzWzBdLmZvcm1hdHRlcjt2YXIgaD1xLl95YXhpcy5fdGlja3NbMF0uZm9ybWF0dGVyO3ZhciBFPXEuX3hheGlzLl90aWNrc1swXS5mb3JtYXRTdHJpbmc7dmFyIHM9cS5feWF4aXMuX3RpY2tzWzBdLmZvcm1hdFN0cmluZzt2YXIgejt2YXIgdT13KEUsbS5kYXRhWzBdKTt2YXIgbD1bXTtmb3IodmFyIEI9MTtCPHQueXZhbHVlcysxO0IrKyl7bC5wdXNoKGgocyxtLmRhdGFbQl0pKX1pZih0eXBlb2YgdC5mb3JtYXRTdHJpbmc9PT0ic3RyaW5nIil7c3dpdGNoKHQudG9vbHRpcEF4ZXMpe2Nhc2UiYm90aCI6Y2FzZSJ4eSI6bC51bnNoaWZ0KHUpO2wudW5zaGlmdCh0LmZvcm1hdFN0cmluZyk7ej1kLmpxcGxvdC5zcHJpbnRmLmFwcGx5KGQuanFwbG90LnNwcmludGYsbCk7YnJlYWs7Y2FzZSJ5eCI6bC5wdXNoKHUpO2wudW5zaGlmdCh0LmZvcm1hdFN0cmluZyk7ej1kLmpxcGxvdC5zcHJpbnRmLmFwcGx5KGQuanFwbG90LnNwcmludGYsbCk7YnJlYWs7Y2FzZSJ4Ijp6PWQuanFwbG90LnNwcmludGYuYXBwbHkoZC5qcXBsb3Quc3ByaW50ZixbdC5mb3JtYXRTdHJpbmcsdV0pO2JyZWFrO2Nhc2UieSI6bC51bnNoaWZ0KHQuZm9ybWF0U3RyaW5nKTt6PWQuanFwbG90LnNwcmludGYuYXBwbHkoZC5qcXBsb3Quc3ByaW50ZixsKTticmVhaztkZWZhdWx0OmwudW5zaGlmdCh1KTtsLnVuc2hpZnQodC5mb3JtYXRTdHJpbmcpO3o9ZC5qcXBsb3Quc3ByaW50Zi5hcHBseShkLmpxcGxvdC5zcHJpbnRmLGwpO2JyZWFrfX1lbHNle3N3aXRjaCh0LnRvb2x0aXBBeGVzKXtjYXNlImJvdGgiOmNhc2UieHkiOno9dTtmb3IodmFyIEI9MDtCPGwubGVuZ3RoO0IrKyl7eis9dC50b29sdGlwU2VwYXJhdG9yK2xbQl19YnJlYWs7Y2FzZSJ5eCI6ej0iIjtmb3IodmFyIEI9MDtCPGwubGVuZ3RoO0IrKyl7eis9bFtCXSt0LnRvb2x0aXBTZXBhcmF0b3J9eis9dTticmVhaztjYXNlIngiOno9dTticmVhaztjYXNlInkiOno9bC5qb2luKHQudG9vbHRpcFNlcGFyYXRvcik7YnJlYWs7ZGVmYXVsdDp6PXU7Zm9yKHZhciBCPTA7QjxsLmxlbmd0aDtCKyspe3orPXQudG9vbHRpcFNlcGFyYXRvcitsW0JdfWJyZWFrfX19ZWxzZXt2YXIgejtpZih0eXBlb2YgdC5mb3JtYXRTdHJpbmc9PT0ic3RyaW5nIil7ej1kLmpxcGxvdC5zcHJpbnRmLmFwcGx5KGQuanFwbG90LnNwcmludGYsW3QuZm9ybWF0U3RyaW5nXS5jb25jYXQobS5kYXRhKSl9ZWxzZXtpZih0LnRvb2x0aXBBeGVzPT0iYm90aCJ8fHQudG9vbHRpcEF4ZXM9PSJ4eSIpe3o9ZC5qcXBsb3Quc3ByaW50Zih0LnRvb2x0aXBGb3JtYXRTdHJpbmcsbS5kYXRhWzBdKSt0LnRvb2x0aXBTZXBhcmF0b3IrZC5qcXBsb3Quc3ByaW50Zih0LnRvb2x0aXBGb3JtYXRTdHJpbmcsbS5kYXRhWzFdKX1lbHNle2lmKHQudG9vbHRpcEF4ZXM9PSJ5eCIpe3o9ZC5qcXBsb3Quc3ByaW50Zih0LnRvb2x0aXBGb3JtYXRTdHJpbmcsbS5kYXRhWzFdKSt0LnRvb2x0aXBTZXBhcmF0b3IrZC5qcXBsb3Quc3ByaW50Zih0LnRvb2x0aXBGb3JtYXRTdHJpbmcsbS5kYXRhWzBdKX1lbHNle2lmKHQudG9vbHRpcEF4ZXM9PSJ4Iil7ej1kLmpxcGxvdC5zcHJpbnRmKHQudG9vbHRpcEZvcm1hdFN0cmluZyxtLmRhdGFbMF0pfWVsc2V7aWYodC50b29sdGlwQXhlcz09InkiKXt6PWQuanFwbG90LnNwcmludGYodC50b29sdGlwRm9ybWF0U3RyaW5nLG0uZGF0YVsxXSl9fX19fX1pZihkLmlzRnVuY3Rpb24odC50b29sdGlwQ29udGVudEVkaXRvcikpe3o9dC50b29sdGlwQ29udGVudEVkaXRvcih6LG0uc2VyaWVzSW5kZXgsbS5wb2ludEluZGV4LEEpfUQuaHRtbCh6KTt2YXIgQz17eDptLmdyaWREYXRhWzBdLHk6bS5ncmlkRGF0YVsxXX07dmFyIHY9MDt2YXIgaj0wLjcwNztpZihxLm1hcmtlclJlbmRlcmVyLnNob3c9PXRydWUpe3Y9KHEubWFya2VyUmVuZGVyZXIuc2l6ZSt0LnNpemVBZGp1c3QpLzJ9dmFyIG89YjtpZihxLmZpbGxUb1plcm8mJnEuZmlsbCYmbS5kYXRhWzFdPDApe289Y31zd2l0Y2gob1tlW3QudG9vbHRpcExvY2F0aW9uXV0pe2Nhc2UibnciOnZhciBwPUMueCtBLl9ncmlkUGFkZGluZy5sZWZ0LUQub3V0ZXJXaWR0aCh0cnVlKS10LnRvb2x0aXBPZmZzZXQtaip2O3ZhciBuPUMueStBLl9ncmlkUGFkZGluZy50b3AtdC50b29sdGlwT2Zmc2V0LUQub3V0ZXJIZWlnaHQodHJ1ZSktaip2O2JyZWFrO2Nhc2UibiI6dmFyIHA9Qy54K0EuX2dyaWRQYWRkaW5nLmxlZnQtRC5vdXRlcldpZHRoKHRydWUpLzI7dmFyIG49Qy55K0EuX2dyaWRQYWRkaW5nLnRvcC10LnRvb2x0aXBPZmZzZXQtRC5vdXRlckhlaWdodCh0cnVlKS12O2JyZWFrO2Nhc2UibmUiOnZhciBwPUMueCtBLl9ncmlkUGFkZGluZy5sZWZ0K3QudG9vbHRpcE9mZnNldCtqKnY7dmFyIG49Qy55K0EuX2dyaWRQYWRkaW5nLnRvcC10LnRvb2x0aXBPZmZzZXQtRC5vdXRlckhlaWdodCh0cnVlKS1qKnY7YnJlYWs7Y2FzZSJlIjp2YXIgcD1DLngrQS5fZ3JpZFBhZGRpbmcubGVmdCt0LnRvb2x0aXBPZmZzZXQrdjt2YXIgbj1DLnkrQS5fZ3JpZFBhZGRpbmcudG9wLUQub3V0ZXJIZWlnaHQodHJ1ZSkvMjticmVhaztjYXNlInNlIjp2YXIgcD1DLngrQS5fZ3JpZFBhZGRpbmcubGVmdCt0LnRvb2x0aXBPZmZzZXQraip2O3ZhciBuPUMueStBLl9ncmlkUGFkZGluZy50b3ArdC50b29sdGlwT2Zmc2V0K2oqdjticmVhaztjYXNlInMiOnZhciBwPUMueCtBLl9ncmlkUGFkZGluZy5sZWZ0LUQub3V0ZXJXaWR0aCh0cnVlKS8yO3ZhciBuPUMueStBLl9ncmlkUGFkZGluZy50b3ArdC50b29sdGlwT2Zmc2V0K3Y7YnJlYWs7Y2FzZSJzdyI6dmFyIHA9Qy54K0EuX2dyaWRQYWRkaW5nLmxlZnQtRC5vdXRlcldpZHRoKHRydWUpLXQudG9vbHRpcE9mZnNldC1qKnY7dmFyIG49Qy55K0EuX2dyaWRQYWRkaW5nLnRvcCt0LnRvb2x0aXBPZmZzZXQraip2O2JyZWFrO2Nhc2UidyI6dmFyIHA9Qy54K0EuX2dyaWRQYWRkaW5nLmxlZnQtRC5vdXRlcldpZHRoKHRydWUpLXQudG9vbHRpcE9mZnNldC12O3ZhciBuPUMueStBLl9ncmlkUGFkZGluZy50b3AtRC5vdXRlckhlaWdodCh0cnVlKS8yO2JyZWFrO2RlZmF1bHQ6dmFyIHA9Qy54K0EuX2dyaWRQYWRkaW5nLmxlZnQtRC5vdXRlcldpZHRoKHRydWUpLXQudG9vbHRpcE9mZnNldC1qKnY7dmFyIG49Qy55K0EuX2dyaWRQYWRkaW5nLnRvcC10LnRvb2x0aXBPZmZzZXQtRC5vdXRlckhlaWdodCh0cnVlKS1qKnY7YnJlYWt9RC5jc3MoImxlZnQiLHApO0QuY3NzKCJ0b3AiLG4pO2lmKHQuZmFkZVRvb2x0aXApe0Quc3RvcCh0cnVlLHRydWUpLmZhZGVJbih0LnRvb2x0aXBGYWRlU3BlZWQpfWVsc2V7RC5zaG93KCl9RD1udWxsfWZ1bmN0aW9uIGYobixqLGkscCxsKXt2YXIgaD1sLnBsdWdpbnMuaGlnaGxpZ2h0ZXI7dmFyIG09bC5wbHVnaW5zLmN1cnNvcjtpZihoLnNob3cpe2lmKHA9PW51bGwmJmguaXNIaWdobGlnaHRpbmcpe3ZhciBvPWpRdWVyeS5FdmVudCgianFwbG90SGlnaGxpZ2h0ZXJVbmhpZ2hsaWdodCIpO2wudGFyZ2V0LnRyaWdnZXIobyk7dmFyIHE9aC5oaWdobGlnaHRDYW52YXMuX2N0eDtxLmNsZWFyUmVjdCgwLDAscS5jYW52YXMud2lkdGgscS5jYW52YXMuaGVpZ2h0KTtpZihoLmZhZGVUb29sdGlwKXtoLl90b29sdGlwRWxlbS5mYWRlT3V0KGgudG9vbHRpcEZhZGVTcGVlZCl9ZWxzZXtoLl90b29sdGlwRWxlbS5oaWRlKCl9aWYoaC5icmluZ1Nlcmllc1RvRnJvbnQpe2wucmVzdG9yZVByZXZpb3VzU2VyaWVzT3JkZXIoKX1oLmlzSGlnaGxpZ2h0aW5nPWZhbHNlO2guY3VycmVudE5laWdoYm9yPW51bGw7cT1udWxsfWVsc2V7aWYocCE9bnVsbCYmbC5zZXJpZXNbcC5zZXJpZXNJbmRleF0uc2hvd0hpZ2hsaWdodCYmIWguaXNIaWdobGlnaHRpbmcpe3ZhciBvPWpRdWVyeS5FdmVudCgianFwbG90SGlnaGxpZ2h0ZXJIaWdobGlnaHQiKTtvLndoaWNoPW4ud2hpY2g7by5wYWdlWD1uLnBhZ2VYO28ucGFnZVk9bi5wYWdlWTt2YXIgaz1bcC5zZXJpZXNJbmRleCxwLnBvaW50SW5kZXgscC5kYXRhLGxdO2wudGFyZ2V0LnRyaWdnZXIobyxrKTtoLmlzSGlnaGxpZ2h0aW5nPXRydWU7aC5jdXJyZW50TmVpZ2hib3I9cDtpZihoLnNob3dNYXJrZXIpe2EobCxwKX1pZihsLnNlcmllc1twLnNlcmllc0luZGV4XS5zaG93JiZoLnNob3dUb29sdGlwJiYoIW18fCFtLl96b29tLnN0YXJ0ZWQpKXtnKGwsbC5zZXJpZXNbcC5zZXJpZXNJbmRleF0scCl9aWYoaC5icmluZ1Nlcmllc1RvRnJvbnQpe2wubW92ZVNlcmllc1RvRnJvbnQocC5zZXJpZXNJbmRleCl9fWVsc2V7aWYocCE9bnVsbCYmaC5pc0hpZ2hsaWdodGluZyYmaC5jdXJyZW50TmVpZ2hib3IhPXApe2lmKGwuc2VyaWVzW3Auc2VyaWVzSW5kZXhdLnNob3dIaWdobGlnaHQpe3ZhciBxPWguaGlnaGxpZ2h0Q2FudmFzLl9jdHg7cS5jbGVhclJlY3QoMCwwLHEuY2FudmFzLndpZHRoLHEuY2FudmFzLmhlaWdodCk7aC5pc0hpZ2hsaWdodGluZz10cnVlO2guY3VycmVudE5laWdoYm9yPXA7aWYoaC5zaG93TWFya2VyKXthKGwscCl9aWYobC5zZXJpZXNbcC5zZXJpZXNJbmRleF0uc2hvdyYmaC5zaG93VG9vbHRpcCYmKCFtfHwhbS5fem9vbS5zdGFydGVkKSl7ZyhsLGwuc2VyaWVzW3Auc2VyaWVzSW5kZXhdLHApfWlmKGguYnJpbmdTZXJpZXNUb0Zyb250KXtsLm1vdmVTZXJpZXNUb0Zyb250KHAuc2VyaWVzSW5kZXgpfX19fX19fX0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.json2.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICAgIDIwMTAtMTEtMDEgQ2hyaXMgTGVvbmVsbG8KICAgIAogICAgU2xpZ2h0bHkgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgb3JpZ2luYWwganNvbjIuanMgdG8gcHV0IEpTT04KICAgIGZ1bmN0aW9ucyB1bmRlciB0aGUgJC5qcXBsb3QgbmFtZXNwYWNlLgogICAgCiAgICBsaWNlbnNpbmcgYW5kIG9yaWduYWwgY29tbWVudHMgZm9sbG93OgogICAgCiAgICBodHRwOi8vd3d3LkpTT04ub3JnL2pzb24yLmpzCiAgICAyMDEwLTA4LTI1CiAgICAKICAgIFB1YmxpYyBEb21haW4uCgogICAgTk8gV0FSUkFOVFkgRVhQUkVTU0VEIE9SIElNUExJRUQuIFVTRSBBVCBZT1VSIE9XTiBSSVNLLgoKICAgIFNlZSBodHRwOi8vd3d3LkpTT04ub3JnL2pzLmh0bWwKCgogICAgVGhpcyBjb2RlIHNob3VsZCBiZSBtaW5pZmllZCBiZWZvcmUgZGVwbG95bWVudC4KICAgIFNlZSBodHRwOi8vamF2YXNjcmlwdC5jcm9ja2ZvcmQuY29tL2pzbWluLmh0bWwKCiAgICBVU0UgWU9VUiBPV04gQ09QWS4gSVQgSVMgRVhUUkVNRUxZIFVOV0lTRSBUTyBMT0FEIENPREUgRlJPTSBTRVJWRVJTIFlPVSBETwogICAgTk9UIENPTlRST0wuCgoKICAgIFRoaXMgZmlsZSBjcmVhdGVzIGEgZ2xvYmFsIEpTT04gb2JqZWN0IGNvbnRhaW5pbmcgdHdvIG1ldGhvZHM6IHN0cmluZ2lmeQogICAgYW5kIHBhcnNlLgoKICAgICAgICAkLmpxcGxvdC5KU09OLnN0cmluZ2lmeSh2YWx1ZSwgcmVwbGFjZXIsIHNwYWNlKQogICAgICAgICAgICB2YWx1ZSAgICAgICBhbnkgSmF2YVNjcmlwdCB2YWx1ZSwgdXN1YWxseSBhbiBvYmplY3Qgb3IgYXJyYXkuCgogICAgICAgICAgICByZXBsYWNlciAgICBhbiBvcHRpb25hbCBwYXJhbWV0ZXIgdGhhdCBkZXRlcm1pbmVzIGhvdyBvYmplY3QKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzIGFyZSBzdHJpbmdpZmllZCBmb3Igb2JqZWN0cy4gSXQgY2FuIGJlIGEKICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncy4KCiAgICAgICAgICAgIHNwYWNlICAgICAgIGFuIG9wdGlvbmFsIHBhcmFtZXRlciB0aGF0IHNwZWNpZmllcyB0aGUgaW5kZW50YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgb2YgbmVzdGVkIHN0cnVjdHVyZXMuIElmIGl0IGlzIG9taXR0ZWQsIHRoZSB0ZXh0IHdpbGwKICAgICAgICAgICAgICAgICAgICAgICAgYmUgcGFja2VkIHdpdGhvdXQgZXh0cmEgd2hpdGVzcGFjZS4gSWYgaXQgaXMgYSBudW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgIGl0IHdpbGwgc3BlY2lmeSB0aGUgbnVtYmVyIG9mIHNwYWNlcyB0byBpbmRlbnQgYXQgZWFjaAogICAgICAgICAgICAgICAgICAgICAgICBsZXZlbC4gSWYgaXQgaXMgYSBzdHJpbmcgKHN1Y2ggYXMgJ1x0JyBvciAnJm5ic3A7JyksCiAgICAgICAgICAgICAgICAgICAgICAgIGl0IGNvbnRhaW5zIHRoZSBjaGFyYWN0ZXJzIHVzZWQgdG8gaW5kZW50IGF0IGVhY2ggbGV2ZWwuCgogICAgICAgICAgICBUaGlzIG1ldGhvZCBwcm9kdWNlcyBhIEpTT04gdGV4dCBmcm9tIGEgSmF2YVNjcmlwdCB2YWx1ZS4KCiAgICAgICAgICAgIFdoZW4gYW4gb2JqZWN0IHZhbHVlIGlzIGZvdW5kLCBpZiB0aGUgb2JqZWN0IGNvbnRhaW5zIGEgdG9KU09OCiAgICAgICAgICAgIG1ldGhvZCwgaXRzIHRvSlNPTiBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYW5kIHRoZSByZXN1bHQgd2lsbCBiZQogICAgICAgICAgICBzdHJpbmdpZmllZC4gQSB0b0pTT04gbWV0aG9kIGRvZXMgbm90IHNlcmlhbGl6ZTogaXQgcmV0dXJucyB0aGUKICAgICAgICAgICAgdmFsdWUgcmVwcmVzZW50ZWQgYnkgdGhlIG5hbWUvdmFsdWUgcGFpciB0aGF0IHNob3VsZCBiZSBzZXJpYWxpemVkLAogICAgICAgICAgICBvciB1bmRlZmluZWQgaWYgbm90aGluZyBzaG91bGQgYmUgc2VyaWFsaXplZC4gVGhlIHRvSlNPTiBtZXRob2QKICAgICAgICAgICAgd2lsbCBiZSBwYXNzZWQgdGhlIGtleSBhc3NvY2lhdGVkIHdpdGggdGhlIHZhbHVlLCBhbmQgdGhpcyB3aWxsIGJlCiAgICAgICAgICAgIGJvdW5kIHRvIHRoZSB2YWx1ZQoKICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoaXMgd291bGQgc2VyaWFsaXplIERhdGVzIGFzIElTTyBzdHJpbmdzLgoKICAgICAgICAgICAgICAgIERhdGUucHJvdG90eXBlLnRvSlNPTiA9IGZ1bmN0aW9uIChrZXkpIHsKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBmKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9ybWF0IGludGVnZXJzIHRvIGhhdmUgYXQgbGVhc3QgdHdvIGRpZ2l0cy4KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gPCAxMCA/ICcwJyArIG4gOiBuOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VVRDRnVsbFllYXIoKSAgICsgJy0nICsKICAgICAgICAgICAgICAgICAgICAgICAgIGYodGhpcy5nZXRVVENNb250aCgpICsgMSkgKyAnLScgKwogICAgICAgICAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVUQ0RhdGUoKSkgICAgICArICdUJyArCiAgICAgICAgICAgICAgICAgICAgICAgICBmKHRoaXMuZ2V0VVRDSG91cnMoKSkgICAgICsgJzonICsKICAgICAgICAgICAgICAgICAgICAgICAgIGYodGhpcy5nZXRVVENNaW51dGVzKCkpICAgKyAnOicgKwogICAgICAgICAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVUQ1NlY29uZHMoKSkgICArICdaJzsKICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICBZb3UgY2FuIHByb3ZpZGUgYW4gb3B0aW9uYWwgcmVwbGFjZXIgbWV0aG9kLiBJdCB3aWxsIGJlIHBhc3NlZCB0aGUKICAgICAgICAgICAga2V5IGFuZCB2YWx1ZSBvZiBlYWNoIG1lbWJlciwgd2l0aCB0aGlzIGJvdW5kIHRvIHRoZSBjb250YWluaW5nCiAgICAgICAgICAgIG9iamVjdC4gVGhlIHZhbHVlIHRoYXQgaXMgcmV0dXJuZWQgZnJvbSB5b3VyIG1ldGhvZCB3aWxsIGJlCiAgICAgICAgICAgIHNlcmlhbGl6ZWQuIElmIHlvdXIgbWV0aG9kIHJldHVybnMgdW5kZWZpbmVkLCB0aGVuIHRoZSBtZW1iZXIgd2lsbAogICAgICAgICAgICBiZSBleGNsdWRlZCBmcm9tIHRoZSBzZXJpYWxpemF0aW9uLgoKICAgICAgICAgICAgSWYgdGhlIHJlcGxhY2VyIHBhcmFtZXRlciBpcyBhbiBhcnJheSBvZiBzdHJpbmdzLCB0aGVuIGl0IHdpbGwgYmUKICAgICAgICAgICAgdXNlZCB0byBzZWxlY3QgdGhlIG1lbWJlcnMgdG8gYmUgc2VyaWFsaXplZC4gSXQgZmlsdGVycyB0aGUgcmVzdWx0cwogICAgICAgICAgICBzdWNoIHRoYXQgb25seSBtZW1iZXJzIHdpdGgga2V5cyBsaXN0ZWQgaW4gdGhlIHJlcGxhY2VyIGFycmF5IGFyZQogICAgICAgICAgICBzdHJpbmdpZmllZC4KCiAgICAgICAgICAgIFZhbHVlcyB0aGF0IGRvIG5vdCBoYXZlIEpTT04gcmVwcmVzZW50YXRpb25zLCBzdWNoIGFzIHVuZGVmaW5lZCBvcgogICAgICAgICAgICBmdW5jdGlvbnMsIHdpbGwgbm90IGJlIHNlcmlhbGl6ZWQuIFN1Y2ggdmFsdWVzIGluIG9iamVjdHMgd2lsbCBiZQogICAgICAgICAgICBkcm9wcGVkOyBpbiBhcnJheXMgdGhleSB3aWxsIGJlIHJlcGxhY2VkIHdpdGggbnVsbC4gWW91IGNhbiB1c2UKICAgICAgICAgICAgYSByZXBsYWNlciBmdW5jdGlvbiB0byByZXBsYWNlIHRob3NlIHdpdGggSlNPTiB2YWx1ZXMuCiAgICAgICAgICAgICQuanFwbG90LkpTT04uc3RyaW5naWZ5KHVuZGVmaW5lZCkgcmV0dXJucyB1bmRlZmluZWQuCgogICAgICAgICAgICBUaGUgb3B0aW9uYWwgc3BhY2UgcGFyYW1ldGVyIHByb2R1Y2VzIGEgc3RyaW5naWZpY2F0aW9uIG9mIHRoZQogICAgICAgICAgICB2YWx1ZSB0aGF0IGlzIGZpbGxlZCB3aXRoIGxpbmUgYnJlYWtzIGFuZCBpbmRlbnRhdGlvbiB0byBtYWtlIGl0CiAgICAgICAgICAgIGVhc2llciB0byByZWFkLgoKICAgICAgICAgICAgSWYgdGhlIHNwYWNlIHBhcmFtZXRlciBpcyBhIG5vbi1lbXB0eSBzdHJpbmcsIHRoZW4gdGhhdCBzdHJpbmcgd2lsbAogICAgICAgICAgICBiZSB1c2VkIGZvciBpbmRlbnRhdGlvbi4gSWYgdGhlIHNwYWNlIHBhcmFtZXRlciBpcyBhIG51bWJlciwgdGhlbgogICAgICAgICAgICB0aGUgaW5kZW50YXRpb24gd2lsbCBiZSB0aGF0IG1hbnkgc3BhY2VzLgoKICAgICAgICAgICAgRXhhbXBsZToKCiAgICAgICAgICAgIHRleHQgPSAkLmpxcGxvdC5KU09OLnN0cmluZ2lmeShbJ2UnLCB7cGx1cmlidXM6ICd1bnVtJ31dKTsKICAgICAgICAgICAgLy8gdGV4dCBpcyAnWyJlIix7InBsdXJpYnVzIjoidW51bSJ9XScKCgogICAgICAgICAgICB0ZXh0ID0gJC5qcXBsb3QuSlNPTi5zdHJpbmdpZnkoWydlJywge3BsdXJpYnVzOiAndW51bSd9XSwgbnVsbCwgJ1x0Jyk7CiAgICAgICAgICAgIC8vIHRleHQgaXMgJ1tcblx0ImUiLFxuXHR7XG5cdFx0InBsdXJpYnVzIjogInVudW0iXG5cdH1cbl0nCgogICAgICAgICAgICB0ZXh0ID0gJC5qcXBsb3QuSlNPTi5zdHJpbmdpZnkoW25ldyBEYXRlKCldLCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHRoaXNba2V5XSBpbnN0YW5jZW9mIERhdGUgPwogICAgICAgICAgICAgICAgICAgICdEYXRlKCcgKyB0aGlzW2tleV0gKyAnKScgOiB2YWx1ZTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIC8vIHRleHQgaXMgJ1siRGF0ZSgtLS1jdXJyZW50IHRpbWUtLS0pIl0nCgoKICAgICAgICAkLmpxcGxvdC5KU09OLnBhcnNlKHRleHQsIHJldml2ZXIpCiAgICAgICAgICAgIFRoaXMgbWV0aG9kIHBhcnNlcyBhIEpTT04gdGV4dCB0byBwcm9kdWNlIGFuIG9iamVjdCBvciBhcnJheS4KICAgICAgICAgICAgSXQgY2FuIHRocm93IGEgU3ludGF4RXJyb3IgZXhjZXB0aW9uLgoKICAgICAgICAgICAgVGhlIG9wdGlvbmFsIHJldml2ZXIgcGFyYW1ldGVyIGlzIGEgZnVuY3Rpb24gdGhhdCBjYW4gZmlsdGVyIGFuZAogICAgICAgICAgICB0cmFuc2Zvcm0gdGhlIHJlc3VsdHMuIEl0IHJlY2VpdmVzIGVhY2ggb2YgdGhlIGtleXMgYW5kIHZhbHVlcywKICAgICAgICAgICAgYW5kIGl0cyByZXR1cm4gdmFsdWUgaXMgdXNlZCBpbnN0ZWFkIG9mIHRoZSBvcmlnaW5hbCB2YWx1ZS4KICAgICAgICAgICAgSWYgaXQgcmV0dXJucyB3aGF0IGl0IHJlY2VpdmVkLCB0aGVuIHRoZSBzdHJ1Y3R1cmUgaXMgbm90IG1vZGlmaWVkLgogICAgICAgICAgICBJZiBpdCByZXR1cm5zIHVuZGVmaW5lZCB0aGVuIHRoZSBtZW1iZXIgaXMgZGVsZXRlZC4KCiAgICAgICAgICAgIEV4YW1wbGU6CgogICAgICAgICAgICAvLyBQYXJzZSB0aGUgdGV4dC4gVmFsdWVzIHRoYXQgbG9vayBsaWtlIElTTyBkYXRlIHN0cmluZ3Mgd2lsbAogICAgICAgICAgICAvLyBiZSBjb252ZXJ0ZWQgdG8gRGF0ZSBvYmplY3RzLgoKICAgICAgICAgICAgbXlEYXRhID0gJC5qcXBsb3QuSlNPTi5wYXJzZSh0ZXh0LCBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkgewogICAgICAgICAgICAgICAgdmFyIGE7CiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgewogICAgICAgICAgICAgICAgICAgIGEgPQovXihcZHs0fSktKFxkezJ9KS0oXGR7Mn0pVChcZHsyfSk6KFxkezJ9KTooXGR7Mn0oPzpcLlxkKik/KVokLy5leGVjKHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICBpZiAoYSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoRGF0ZS5VVEMoK2FbMV0sICthWzJdIC0gMSwgK2FbM10sICthWzRdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgK2FbNV0sICthWzZdKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIG15RGF0YSA9ICQuanFwbG90LkpTT04ucGFyc2UoJ1siRGF0ZSgwOS8wOS8yMDAxKSJdJywgZnVuY3Rpb24gKGtleSwgdmFsdWUpIHsKICAgICAgICAgICAgICAgIHZhciBkOwogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuc2xpY2UoMCwgNSkgPT09ICdEYXRlKCcgJiYKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUuc2xpY2UoLTEpID09PSAnKScpIHsKICAgICAgICAgICAgICAgICAgICBkID0gbmV3IERhdGUodmFsdWUuc2xpY2UoNSwgLTEpKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZCkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7CiAgICAgICAgICAgIH0pOwoKCiAgICBUaGlzIGlzIGEgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uLiBZb3UgYXJlIGZyZWUgdG8gY29weSwgbW9kaWZ5LCBvcgogICAgcmVkaXN0cmlidXRlLgoqLwoKKGZ1bmN0aW9uKCQpIHsKCiAgICAkLmpxcGxvdC5KU09OID0gd2luZG93LkpTT047CgogICAgaWYgKCF3aW5kb3cuSlNPTikgewogICAgICAgICQuanFwbG90LkpTT04gPSB7fTsKICAgIH0KICAgIAogICAgZnVuY3Rpb24gZihuKSB7CiAgICAgICAgLy8gRm9ybWF0IGludGVnZXJzIHRvIGhhdmUgYXQgbGVhc3QgdHdvIGRpZ2l0cy4KICAgICAgICByZXR1cm4gbiA8IDEwID8gJzAnICsgbiA6IG47CiAgICB9CgogICAgaWYgKHR5cGVvZiBEYXRlLnByb3RvdHlwZS50b0pTT04gIT09ICdmdW5jdGlvbicpIHsKCiAgICAgICAgRGF0ZS5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gKGtleSkgewoKICAgICAgICAgICAgcmV0dXJuIGlzRmluaXRlKHRoaXMudmFsdWVPZigpKSA/CiAgICAgICAgICAgICAgICAgICB0aGlzLmdldFVUQ0Z1bGxZZWFyKCkgICArICctJyArCiAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVUQ01vbnRoKCkgKyAxKSArICctJyArCiAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVUQ0RhdGUoKSkgICAgICArICdUJyArCiAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVUQ0hvdXJzKCkpICAgICArICc6JyArCiAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVUQ01pbnV0ZXMoKSkgICArICc6JyArCiAgICAgICAgICAgICAgICAgZih0aGlzLmdldFVUQ1NlY29uZHMoKSkgICArICdaJyA6IG51bGw7CiAgICAgICAgfTsKCiAgICAgICAgU3RyaW5nLnByb3RvdHlwZS50b0pTT04gPQogICAgICAgIE51bWJlci5wcm90b3R5cGUudG9KU09OID0KICAgICAgICBCb29sZWFuLnByb3RvdHlwZS50b0pTT04gPSBmdW5jdGlvbiAoa2V5KSB7CiAgICAgICAgICAgIHJldHVybiB0aGlzLnZhbHVlT2YoKTsKICAgICAgICB9OwogICAgfQoKICAgIHZhciBjeCA9IC9bXHUwMDAwXHUwMGFkXHUwNjAwLVx1MDYwNFx1MDcwZlx1MTdiNFx1MTdiNVx1MjAwYy1cdTIwMGZcdTIwMjgtXHUyMDJmXHUyMDYwLVx1MjA2Zlx1ZmVmZlx1ZmZmMC1cdWZmZmZdL2csCiAgICAgICAgZXNjYXBhYmxlID0gL1tcXFwiXHgwMC1ceDFmXHg3Zi1ceDlmXHUwMGFkXHUwNjAwLVx1MDYwNFx1MDcwZlx1MTdiNFx1MTdiNVx1MjAwYy1cdTIwMGZcdTIwMjgtXHUyMDJmXHUyMDYwLVx1MjA2Zlx1ZmVmZlx1ZmZmMC1cdWZmZmZdL2csCiAgICAgICAgZ2FwLAogICAgICAgIGluZGVudCwKICAgICAgICBtZXRhID0geyAgICAvLyB0YWJsZSBvZiBjaGFyYWN0ZXIgc3Vic3RpdHV0aW9ucwogICAgICAgICAgICAnXGInOiAnXFxiJywKICAgICAgICAgICAgJ1x0JzogJ1xcdCcsCiAgICAgICAgICAgICdcbic6ICdcXG4nLAogICAgICAgICAgICAnXGYnOiAnXFxmJywKICAgICAgICAgICAgJ1xyJzogJ1xccicsCiAgICAgICAgICAgICciJyA6ICdcXCInLAogICAgICAgICAgICAnXFwnOiAnXFxcXCcKICAgICAgICB9LAogICAgICAgIHJlcDsKCgogICAgZnVuY3Rpb24gcXVvdGUoc3RyaW5nKSB7CgovLyBJZiB0aGUgc3RyaW5nIGNvbnRhaW5zIG5vIGNvbnRyb2wgY2hhcmFjdGVycywgbm8gcXVvdGUgY2hhcmFjdGVycywgYW5kIG5vCi8vIGJhY2tzbGFzaCBjaGFyYWN0ZXJzLCB0aGVuIHdlIGNhbiBzYWZlbHkgc2xhcCBzb21lIHF1b3RlcyBhcm91bmQgaXQuCi8vIE90aGVyd2lzZSB3ZSBtdXN0IGFsc28gcmVwbGFjZSB0aGUgb2ZmZW5kaW5nIGNoYXJhY3RlcnMgd2l0aCBzYWZlIGVzY2FwZQovLyBzZXF1ZW5jZXMuCgogICAgICAgIGVzY2FwYWJsZS5sYXN0SW5kZXggPSAwOwogICAgICAgIHJldHVybiBlc2NhcGFibGUudGVzdChzdHJpbmcpID8KICAgICAgICAgICAgJyInICsgc3RyaW5nLnJlcGxhY2UoZXNjYXBhYmxlLCBmdW5jdGlvbiAoYSkgewogICAgICAgICAgICAgICAgdmFyIGMgPSBtZXRhW2FdOwogICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVvZiBjID09PSAnc3RyaW5nJyA/IGMgOgogICAgICAgICAgICAgICAgICAgICdcXHUnICsgKCcwMDAwJyArIGEuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KTsKICAgICAgICAgICAgfSkgKyAnIicgOgogICAgICAgICAgICAnIicgKyBzdHJpbmcgKyAnIic7CiAgICB9CgoKICAgIGZ1bmN0aW9uIHN0cihrZXksIGhvbGRlcikgewoKLy8gUHJvZHVjZSBhIHN0cmluZyBmcm9tIGhvbGRlcltrZXldLgoKICAgICAgICB2YXIgaSwgICAgICAgICAgLy8gVGhlIGxvb3AgY291bnRlci4KICAgICAgICAgICAgaywgICAgICAgICAgLy8gVGhlIG1lbWJlciBrZXkuCiAgICAgICAgICAgIHYsICAgICAgICAgIC8vIFRoZSBtZW1iZXIgdmFsdWUuCiAgICAgICAgICAgIGxlbmd0aCwKICAgICAgICAgICAgbWluZCA9IGdhcCwKICAgICAgICAgICAgcGFydGlhbCwKICAgICAgICAgICAgdmFsdWUgPSBob2xkZXJba2V5XTsKCi8vIElmIHRoZSB2YWx1ZSBoYXMgYSB0b0pTT04gbWV0aG9kLCBjYWxsIGl0IHRvIG9idGFpbiBhIHJlcGxhY2VtZW50IHZhbHVlLgoKICAgICAgICBpZiAodmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJgogICAgICAgICAgICAgICAgdHlwZW9mIHZhbHVlLnRvSlNPTiA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnRvSlNPTihrZXkpOwogICAgICAgIH0KCi8vIElmIHdlIHdlcmUgY2FsbGVkIHdpdGggYSByZXBsYWNlciBmdW5jdGlvbiwgdGhlbiBjYWxsIHRoZSByZXBsYWNlciB0bwovLyBvYnRhaW4gYSByZXBsYWNlbWVudCB2YWx1ZS4KCiAgICAgICAgaWYgKHR5cGVvZiByZXAgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgdmFsdWUgPSByZXAuY2FsbChob2xkZXIsIGtleSwgdmFsdWUpOwogICAgICAgIH0KCi8vIFdoYXQgaGFwcGVucyBuZXh0IGRlcGVuZHMgb24gdGhlIHZhbHVlJ3MgdHlwZS4KCiAgICAgICAgc3dpdGNoICh0eXBlb2YgdmFsdWUpIHsKICAgICAgICBjYXNlICdzdHJpbmcnOgogICAgICAgICAgICByZXR1cm4gcXVvdGUodmFsdWUpOwoKICAgICAgICBjYXNlICdudW1iZXInOgoKLy8gSlNPTiBudW1iZXJzIG11c3QgYmUgZmluaXRlLiBFbmNvZGUgbm9uLWZpbml0ZSBudW1iZXJzIGFzIG51bGwuCgogICAgICAgICAgICByZXR1cm4gaXNGaW5pdGUodmFsdWUpID8gU3RyaW5nKHZhbHVlKSA6ICdudWxsJzsKCiAgICAgICAgY2FzZSAnYm9vbGVhbic6CiAgICAgICAgY2FzZSAnbnVsbCc6CgovLyBJZiB0aGUgdmFsdWUgaXMgYSBib29sZWFuIG9yIG51bGwsIGNvbnZlcnQgaXQgdG8gYSBzdHJpbmcuIE5vdGU6Ci8vIHR5cGVvZiBudWxsIGRvZXMgbm90IHByb2R1Y2UgJ251bGwnLiBUaGUgY2FzZSBpcyBpbmNsdWRlZCBoZXJlIGluCi8vIHRoZSByZW1vdGUgY2hhbmNlIHRoYXQgdGhpcyBnZXRzIGZpeGVkIHNvbWVkYXkuCgogICAgICAgICAgICByZXR1cm4gU3RyaW5nKHZhbHVlKTsKCi8vIElmIHRoZSB0eXBlIGlzICdvYmplY3QnLCB3ZSBtaWdodCBiZSBkZWFsaW5nIHdpdGggYW4gb2JqZWN0IG9yIGFuIGFycmF5IG9yCi8vIG51bGwuCgogICAgICAgIGNhc2UgJ29iamVjdCc6CgovLyBEdWUgdG8gYSBzcGVjaWZpY2F0aW9uIGJsdW5kZXIgaW4gRUNNQVNjcmlwdCwgdHlwZW9mIG51bGwgaXMgJ29iamVjdCcsCi8vIHNvIHdhdGNoIG91dCBmb3IgdGhhdCBjYXNlLgoKICAgICAgICAgICAgaWYgKCF2YWx1ZSkgewogICAgICAgICAgICAgICAgcmV0dXJuICdudWxsJzsKICAgICAgICAgICAgfQoKLy8gTWFrZSBhbiBhcnJheSB0byBob2xkIHRoZSBwYXJ0aWFsIHJlc3VsdHMgb2Ygc3RyaW5naWZ5aW5nIHRoaXMgb2JqZWN0IHZhbHVlLgoKICAgICAgICAgICAgZ2FwICs9IGluZGVudDsKICAgICAgICAgICAgcGFydGlhbCA9IFtdOwoKLy8gSXMgdGhlIHZhbHVlIGFuIGFycmF5PwoKICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkodmFsdWUpID09PSAnW29iamVjdCBBcnJheV0nKSB7CgovLyBUaGUgdmFsdWUgaXMgYW4gYXJyYXkuIFN0cmluZ2lmeSBldmVyeSBlbGVtZW50LiBVc2UgbnVsbCBhcyBhIHBsYWNlaG9sZGVyCi8vIGZvciBub24tSlNPTiB2YWx1ZXMuCgogICAgICAgICAgICAgICAgbGVuZ3RoID0gdmFsdWUubGVuZ3RoOwogICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgcGFydGlhbFtpXSA9IHN0cihpLCB2YWx1ZSkgfHwgJ251bGwnOwogICAgICAgICAgICAgICAgfQoKLy8gSm9pbiBhbGwgb2YgdGhlIGVsZW1lbnRzIHRvZ2V0aGVyLCBzZXBhcmF0ZWQgd2l0aCBjb21tYXMsIGFuZCB3cmFwIHRoZW0gaW4KLy8gYnJhY2tldHMuCgogICAgICAgICAgICAgICAgdiA9IHBhcnRpYWwubGVuZ3RoID09PSAwID8gJ1tdJyA6CiAgICAgICAgICAgICAgICAgICAgZ2FwID8gJ1tcbicgKyBnYXAgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbC5qb2luKCcsXG4nICsgZ2FwKSArICdcbicgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmQgKyAnXScgOgogICAgICAgICAgICAgICAgICAgICAgICAgICdbJyArIHBhcnRpYWwuam9pbignLCcpICsgJ10nOwogICAgICAgICAgICAgICAgZ2FwID0gbWluZDsKICAgICAgICAgICAgICAgIHJldHVybiB2OwogICAgICAgICAgICB9CgovLyBJZiB0aGUgcmVwbGFjZXIgaXMgYW4gYXJyYXksIHVzZSBpdCB0byBzZWxlY3QgdGhlIG1lbWJlcnMgdG8gYmUgc3RyaW5naWZpZWQuCgogICAgICAgICAgICBpZiAocmVwICYmIHR5cGVvZiByZXAgPT09ICdvYmplY3QnKSB7CiAgICAgICAgICAgICAgICBsZW5ndGggPSByZXAubGVuZ3RoOwogICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSArPSAxKSB7CiAgICAgICAgICAgICAgICAgICAgayA9IHJlcFtpXTsKICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGsgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBzdHIoaywgdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbC5wdXNoKHF1b3RlKGspICsgKGdhcCA/ICc6ICcgOiAnOicpICsgdik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CgovLyBPdGhlcndpc2UsIGl0ZXJhdGUgdGhyb3VnaCBhbGwgb2YgdGhlIGtleXMgaW4gdGhlIG9iamVjdC4KCiAgICAgICAgICAgICAgICBmb3IgKGsgaW4gdmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIGspKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHYgPSBzdHIoaywgdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydGlhbC5wdXNoKHF1b3RlKGspICsgKGdhcCA/ICc6ICcgOiAnOicpICsgdik7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCi8vIEpvaW4gYWxsIG9mIHRoZSBtZW1iZXIgdGV4dHMgdG9nZXRoZXIsIHNlcGFyYXRlZCB3aXRoIGNvbW1hcywKLy8gYW5kIHdyYXAgdGhlbSBpbiBicmFjZXMuCgogICAgICAgICAgICB2ID0gcGFydGlhbC5sZW5ndGggPT09IDAgPyAne30nIDoKICAgICAgICAgICAgICAgIGdhcCA/ICd7XG4nICsgZ2FwICsgcGFydGlhbC5qb2luKCcsXG4nICsgZ2FwKSArICdcbicgKwogICAgICAgICAgICAgICAgICAgICAgICBtaW5kICsgJ30nIDogJ3snICsgcGFydGlhbC5qb2luKCcsJykgKyAnfSc7CiAgICAgICAgICAgIGdhcCA9IG1pbmQ7CiAgICAgICAgICAgIHJldHVybiB2OwogICAgICAgIH0KICAgIH0KCi8vIElmIHRoZSBKU09OIG9iamVjdCBkb2VzIG5vdCB5ZXQgaGF2ZSBhIHN0cmluZ2lmeSBtZXRob2QsIGdpdmUgaXQgb25lLgoKICAgIGlmICh0eXBlb2YgJC5qcXBsb3QuSlNPTi5zdHJpbmdpZnkgIT09ICdmdW5jdGlvbicpIHsKICAgICAgICAkLmpxcGxvdC5KU09OLnN0cmluZ2lmeSA9IGZ1bmN0aW9uICh2YWx1ZSwgcmVwbGFjZXIsIHNwYWNlKSB7CgovLyBUaGUgc3RyaW5naWZ5IG1ldGhvZCB0YWtlcyBhIHZhbHVlIGFuZCBhbiBvcHRpb25hbCByZXBsYWNlciwgYW5kIGFuIG9wdGlvbmFsCi8vIHNwYWNlIHBhcmFtZXRlciwgYW5kIHJldHVybnMgYSBKU09OIHRleHQuIFRoZSByZXBsYWNlciBjYW4gYmUgYSBmdW5jdGlvbgovLyB0aGF0IGNhbiByZXBsYWNlIHZhbHVlcywgb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncyB0aGF0IHdpbGwgc2VsZWN0IHRoZSBrZXlzLgovLyBBIGRlZmF1bHQgcmVwbGFjZXIgbWV0aG9kIGNhbiBiZSBwcm92aWRlZC4gVXNlIG9mIHRoZSBzcGFjZSBwYXJhbWV0ZXIgY2FuCi8vIHByb2R1Y2UgdGV4dCB0aGF0IGlzIG1vcmUgZWFzaWx5IHJlYWRhYmxlLgoKICAgICAgICAgICAgdmFyIGk7CiAgICAgICAgICAgIGdhcCA9ICcnOwogICAgICAgICAgICBpbmRlbnQgPSAnJzsKCi8vIElmIHRoZSBzcGFjZSBwYXJhbWV0ZXIgaXMgYSBudW1iZXIsIG1ha2UgYW4gaW5kZW50IHN0cmluZyBjb250YWluaW5nIHRoYXQKLy8gbWFueSBzcGFjZXMuCgogICAgICAgICAgICBpZiAodHlwZW9mIHNwYWNlID09PSAnbnVtYmVyJykgewogICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNwYWNlOyBpICs9IDEpIHsKICAgICAgICAgICAgICAgICAgICBpbmRlbnQgKz0gJyAnOwogICAgICAgICAgICAgICAgfQoKLy8gSWYgdGhlIHNwYWNlIHBhcmFtZXRlciBpcyBhIHN0cmluZywgaXQgd2lsbCBiZSB1c2VkIGFzIHRoZSBpbmRlbnQgc3RyaW5nLgoKICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2Ygc3BhY2UgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICBpbmRlbnQgPSBzcGFjZTsKICAgICAgICAgICAgfQoKLy8gSWYgdGhlcmUgaXMgYSByZXBsYWNlciwgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uIG9yIGFuIGFycmF5LgovLyBPdGhlcndpc2UsIHRocm93IGFuIGVycm9yLgoKICAgICAgICAgICAgcmVwID0gcmVwbGFjZXI7CiAgICAgICAgICAgIGlmIChyZXBsYWNlciAmJiB0eXBlb2YgcmVwbGFjZXIgIT09ICdmdW5jdGlvbicgJiYKICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHJlcGxhY2VyICE9PSAnb2JqZWN0JyB8fAogICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcmVwbGFjZXIubGVuZ3RoICE9PSAnbnVtYmVyJykpIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignJC5qcXBsb3QuSlNPTi5zdHJpbmdpZnknKTsKICAgICAgICAgICAgfQoKLy8gTWFrZSBhIGZha2Ugcm9vdCBvYmplY3QgY29udGFpbmluZyBvdXIgdmFsdWUgdW5kZXIgdGhlIGtleSBvZiAnJy4KLy8gUmV0dXJuIHRoZSByZXN1bHQgb2Ygc3RyaW5naWZ5aW5nIHRoZSB2YWx1ZS4KCiAgICAgICAgICAgIHJldHVybiBzdHIoJycsIHsnJzogdmFsdWV9KTsKICAgICAgICB9OwogICAgfQoKCi8vIElmIHRoZSBKU09OIG9iamVjdCBkb2VzIG5vdCB5ZXQgaGF2ZSBhIHBhcnNlIG1ldGhvZCwgZ2l2ZSBpdCBvbmUuCgogICAgaWYgKHR5cGVvZiAkLmpxcGxvdC5KU09OLnBhcnNlICE9PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgJC5qcXBsb3QuSlNPTi5wYXJzZSA9IGZ1bmN0aW9uICh0ZXh0LCByZXZpdmVyKSB7CgovLyBUaGUgcGFyc2UgbWV0aG9kIHRha2VzIGEgdGV4dCBhbmQgYW4gb3B0aW9uYWwgcmV2aXZlciBmdW5jdGlvbiwgYW5kIHJldHVybnMKLy8gYSBKYXZhU2NyaXB0IHZhbHVlIGlmIHRoZSB0ZXh0IGlzIGEgdmFsaWQgSlNPTiB0ZXh0LgoKICAgICAgICAgICAgdmFyIGo7CgogICAgICAgICAgICBmdW5jdGlvbiB3YWxrKGhvbGRlciwga2V5KSB7CgovLyBUaGUgd2FsayBtZXRob2QgaXMgdXNlZCB0byByZWN1cnNpdmVseSB3YWxrIHRoZSByZXN1bHRpbmcgc3RydWN0dXJlIHNvCi8vIHRoYXQgbW9kaWZpY2F0aW9ucyBjYW4gYmUgbWFkZS4KCiAgICAgICAgICAgICAgICB2YXIgaywgdiwgdmFsdWUgPSBob2xkZXJba2V5XTsKICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIChrIGluIHZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgPSB3YWxrKHZhbHVlLCBrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVtrXSA9IHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSB2YWx1ZVtrXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiByZXZpdmVyLmNhbGwoaG9sZGVyLCBrZXksIHZhbHVlKTsKICAgICAgICAgICAgfQoKCi8vIFBhcnNpbmcgaGFwcGVucyBpbiBmb3VyIHN0YWdlcy4gSW4gdGhlIGZpcnN0IHN0YWdlLCB3ZSByZXBsYWNlIGNlcnRhaW4KLy8gVW5pY29kZSBjaGFyYWN0ZXJzIHdpdGggZXNjYXBlIHNlcXVlbmNlcy4gSmF2YVNjcmlwdCBoYW5kbGVzIG1hbnkgY2hhcmFjdGVycwovLyBpbmNvcnJlY3RseSwgZWl0aGVyIHNpbGVudGx5IGRlbGV0aW5nIHRoZW0sIG9yIHRyZWF0aW5nIHRoZW0gYXMgbGluZSBlbmRpbmdzLgoKICAgICAgICAgICAgdGV4dCA9IFN0cmluZyh0ZXh0KTsKICAgICAgICAgICAgY3gubGFzdEluZGV4ID0gMDsKICAgICAgICAgICAgaWYgKGN4LnRlc3QodGV4dCkpIHsKICAgICAgICAgICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UoY3gsIGZ1bmN0aW9uIChhKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdcXHUnICsKICAgICAgICAgICAgICAgICAgICAgICAgKCcwMDAwJyArIGEuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgovLyBJbiB0aGUgc2Vjb25kIHN0YWdlLCB3ZSBydW4gdGhlIHRleHQgYWdhaW5zdCByZWd1bGFyIGV4cHJlc3Npb25zIHRoYXQgbG9vawovLyBmb3Igbm9uLUpTT04gcGF0dGVybnMuIFdlIGFyZSBlc3BlY2lhbGx5IGNvbmNlcm5lZCB3aXRoICcoKScgYW5kICduZXcnCi8vIGJlY2F1c2UgdGhleSBjYW4gY2F1c2UgaW52b2NhdGlvbiwgYW5kICc9JyBiZWNhdXNlIGl0IGNhbiBjYXVzZSBtdXRhdGlvbi4KLy8gQnV0IGp1c3QgdG8gYmUgc2FmZSwgd2Ugd2FudCB0byByZWplY3QgYWxsIHVuZXhwZWN0ZWQgZm9ybXMuCgovLyBXZSBzcGxpdCB0aGUgc2Vjb25kIHN0YWdlIGludG8gNCByZWdleHAgb3BlcmF0aW9ucyBpbiBvcmRlciB0byB3b3JrIGFyb3VuZAovLyBjcmlwcGxpbmcgaW5lZmZpY2llbmNpZXMgaW4gSUUncyBhbmQgU2FmYXJpJ3MgcmVnZXhwIGVuZ2luZXMuIEZpcnN0IHdlCi8vIHJlcGxhY2UgdGhlIEpTT04gYmFja3NsYXNoIHBhaXJzIHdpdGggJ0AnIChhIG5vbi1KU09OIGNoYXJhY3RlcikuIFNlY29uZCwgd2UKLy8gcmVwbGFjZSBhbGwgc2ltcGxlIHZhbHVlIHRva2VucyB3aXRoICddJyBjaGFyYWN0ZXJzLiBUaGlyZCwgd2UgZGVsZXRlIGFsbAovLyBvcGVuIGJyYWNrZXRzIHRoYXQgZm9sbG93IGEgY29sb24gb3IgY29tbWEgb3IgdGhhdCBiZWdpbiB0aGUgdGV4dC4gRmluYWxseSwKLy8gd2UgbG9vayB0byBzZWUgdGhhdCB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG9ubHkgd2hpdGVzcGFjZSBvciAnXScgb3IKLy8gJywnIG9yICc6JyBvciAneycgb3IgJ30nLiBJZiB0aGF0IGlzIHNvLCB0aGVuIHRoZSB0ZXh0IGlzIHNhZmUgZm9yIGV2YWwuCgogICAgICAgICAgICBpZiAoL15bXF0sOnt9XHNdKiQvLnRlc3QodGV4dC5yZXBsYWNlKC9cXCg/OlsiXFxcL2JmbnJ0XXx1WzAtOWEtZkEtRl17NH0pL2csICdAJykucmVwbGFjZSgvIlteIlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/L2csICddJykucmVwbGFjZSgvKD86Xnw6fCwpKD86XHMqXFspKy9nLCAnJykpKSB7CgovLyBJbiB0aGUgdGhpcmQgc3RhZ2Ugd2UgdXNlIHRoZSBldmFsIGZ1bmN0aW9uIHRvIGNvbXBpbGUgdGhlIHRleHQgaW50byBhCi8vIEphdmFTY3JpcHQgc3RydWN0dXJlLiBUaGUgJ3snIG9wZXJhdG9yIGlzIHN1YmplY3QgdG8gYSBzeW50YWN0aWMgYW1iaWd1aXR5Ci8vIGluIEphdmFTY3JpcHQ6IGl0IGNhbiBiZWdpbiBhIGJsb2NrIG9yIGFuIG9iamVjdCBsaXRlcmFsLiBXZSB3cmFwIHRoZSB0ZXh0Ci8vIGluIHBhcmVucyB0byBlbGltaW5hdGUgdGhlIGFtYmlndWl0eS4KCiAgICAgICAgICAgICAgICBqID0gZXZhbCgnKCcgKyB0ZXh0ICsgJyknKTsKCi8vIEluIHRoZSBvcHRpb25hbCBmb3VydGggc3RhZ2UsIHdlIHJlY3Vyc2l2ZWx5IHdhbGsgdGhlIG5ldyBzdHJ1Y3R1cmUsIHBhc3NpbmcKLy8gZWFjaCBuYW1lL3ZhbHVlIHBhaXIgdG8gYSByZXZpdmVyIGZ1bmN0aW9uIGZvciBwb3NzaWJsZSB0cmFuc2Zvcm1hdGlvbi4KCiAgICAgICAgICAgICAgICByZXR1cm4gdHlwZW9mIHJldml2ZXIgPT09ICdmdW5jdGlvbicgPwogICAgICAgICAgICAgICAgICAgIHdhbGsoeycnOiBqfSwgJycpIDogajsKICAgICAgICAgICAgfQoKLy8gSWYgdGhlIHRleHQgaXMgbm90IEpTT04gcGFyc2VhYmxlLCB0aGVuIGEgU3ludGF4RXJyb3IgaXMgdGhyb3duLgoKICAgICAgICAgICAgdGhyb3cgbmV3IFN5bnRheEVycm9yKCckLmpxcGxvdC5KU09OLnBhcnNlJyk7CiAgICAgICAgfTsKICAgIH0KfSkoalF1ZXJ5KTsK]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.json2.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKCQpeyQuanFwbG90LkpTT049d2luZG93LkpTT047aWYoIXdpbmRvdy5KU09OKXskLmpxcGxvdC5KU09OPXt9fWZ1bmN0aW9uIGYobil7cmV0dXJuIG48MTA/IjAiK246bn1pZih0eXBlb2YgRGF0ZS5wcm90b3R5cGUudG9KU09OIT09ImZ1bmN0aW9uIil7RGF0ZS5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKGtleSl7cmV0dXJuIGlzRmluaXRlKHRoaXMudmFsdWVPZigpKT90aGlzLmdldFVUQ0Z1bGxZZWFyKCkrIi0iK2YodGhpcy5nZXRVVENNb250aCgpKzEpKyItIitmKHRoaXMuZ2V0VVRDRGF0ZSgpKSsiVCIrZih0aGlzLmdldFVUQ0hvdXJzKCkpKyI6IitmKHRoaXMuZ2V0VVRDTWludXRlcygpKSsiOiIrZih0aGlzLmdldFVUQ1NlY29uZHMoKSkrIloiOm51bGx9O1N0cmluZy5wcm90b3R5cGUudG9KU09OPU51bWJlci5wcm90b3R5cGUudG9KU09OPUJvb2xlYW4ucHJvdG90eXBlLnRvSlNPTj1mdW5jdGlvbihrZXkpe3JldHVybiB0aGlzLnZhbHVlT2YoKX19dmFyIGN4PS9bXHUwMDAwXHUwMGFkXHUwNjAwLVx1MDYwNFx1MDcwZlx1MTdiNFx1MTdiNVx1MjAwYy1cdTIwMGZcdTIwMjgtXHUyMDJmXHUyMDYwLVx1MjA2Zlx1ZmVmZlx1ZmZmMC1cdWZmZmZdL2csZXNjYXBhYmxlPS9bXFxcIlx4MDAtXHgxZlx4N2YtXHg5Zlx1MDBhZFx1MDYwMC1cdTA2MDRcdTA3MGZcdTE3YjRcdTE3YjVcdTIwMGMtXHUyMDBmXHUyMDI4LVx1MjAyZlx1MjA2MC1cdTIwNmZcdWZlZmZcdWZmZjAtXHVmZmZmXS9nLGdhcCxpbmRlbnQsbWV0YT17IlxiIjoiXFxiIiwiXHQiOiJcXHQiLCJcbiI6IlxcbiIsIlxmIjoiXFxmIiwiXHIiOiJcXHIiLCciJzonXFwiJywiXFwiOiJcXFxcIn0scmVwO2Z1bmN0aW9uIHF1b3RlKHN0cmluZyl7ZXNjYXBhYmxlLmxhc3RJbmRleD0wO3JldHVybiBlc2NhcGFibGUudGVzdChzdHJpbmcpPyciJytzdHJpbmcucmVwbGFjZShlc2NhcGFibGUsZnVuY3Rpb24oYSl7dmFyIGM9bWV0YVthXTtyZXR1cm4gdHlwZW9mIGM9PT0ic3RyaW5nIj9jOiJcXHUiKygiMDAwMCIrYS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpfSkrJyInOiciJytzdHJpbmcrJyInfWZ1bmN0aW9uIHN0cihrZXksaG9sZGVyKXt2YXIgaSxrLHYsbGVuZ3RoLG1pbmQ9Z2FwLHBhcnRpYWwsdmFsdWU9aG9sZGVyW2tleV07aWYodmFsdWUmJnR5cGVvZiB2YWx1ZT09PSJvYmplY3QiJiZ0eXBlb2YgdmFsdWUudG9KU09OPT09ImZ1bmN0aW9uIil7dmFsdWU9dmFsdWUudG9KU09OKGtleSl9aWYodHlwZW9mIHJlcD09PSJmdW5jdGlvbiIpe3ZhbHVlPXJlcC5jYWxsKGhvbGRlcixrZXksdmFsdWUpfXN3aXRjaCh0eXBlb2YgdmFsdWUpe2Nhc2Uic3RyaW5nIjpyZXR1cm4gcXVvdGUodmFsdWUpO2Nhc2UibnVtYmVyIjpyZXR1cm4gaXNGaW5pdGUodmFsdWUpP1N0cmluZyh2YWx1ZSk6Im51bGwiO2Nhc2UiYm9vbGVhbiI6Y2FzZSJudWxsIjpyZXR1cm4gU3RyaW5nKHZhbHVlKTtjYXNlIm9iamVjdCI6aWYoIXZhbHVlKXtyZXR1cm4ibnVsbCJ9Z2FwKz1pbmRlbnQ7cGFydGlhbD1bXTtpZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGx5KHZhbHVlKT09PSJbb2JqZWN0IEFycmF5XSIpe2xlbmd0aD12YWx1ZS5sZW5ndGg7Zm9yKGk9MDtpPGxlbmd0aDtpKz0xKXtwYXJ0aWFsW2ldPXN0cihpLHZhbHVlKXx8Im51bGwifXY9cGFydGlhbC5sZW5ndGg9PT0wPyJbXSI6Z2FwPyJbXG4iK2dhcCtwYXJ0aWFsLmpvaW4oIixcbiIrZ2FwKSsiXG4iK21pbmQrIl0iOiJbIitwYXJ0aWFsLmpvaW4oIiwiKSsiXSI7Z2FwPW1pbmQ7cmV0dXJuIHZ9aWYocmVwJiZ0eXBlb2YgcmVwPT09Im9iamVjdCIpe2xlbmd0aD1yZXAubGVuZ3RoO2ZvcihpPTA7aTxsZW5ndGg7aSs9MSl7az1yZXBbaV07aWYodHlwZW9mIGs9PT0ic3RyaW5nIil7dj1zdHIoayx2YWx1ZSk7aWYodil7cGFydGlhbC5wdXNoKHF1b3RlKGspKyhnYXA/IjogIjoiOiIpK3YpfX19fWVsc2V7Zm9yKGsgaW4gdmFsdWUpe2lmKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLGspKXt2PXN0cihrLHZhbHVlKTtpZih2KXtwYXJ0aWFsLnB1c2gocXVvdGUoaykrKGdhcD8iOiAiOiI6Iikrdil9fX19dj1wYXJ0aWFsLmxlbmd0aD09PTA/Int9IjpnYXA/IntcbiIrZ2FwK3BhcnRpYWwuam9pbigiLFxuIitnYXApKyJcbiIrbWluZCsifSI6InsiK3BhcnRpYWwuam9pbigiLCIpKyJ9IjtnYXA9bWluZDtyZXR1cm4gdn19aWYodHlwZW9mICQuanFwbG90LkpTT04uc3RyaW5naWZ5IT09ImZ1bmN0aW9uIil7JC5qcXBsb3QuSlNPTi5zdHJpbmdpZnk9ZnVuY3Rpb24odmFsdWUscmVwbGFjZXIsc3BhY2Upe3ZhciBpO2dhcD0iIjtpbmRlbnQ9IiI7aWYodHlwZW9mIHNwYWNlPT09Im51bWJlciIpe2ZvcihpPTA7aTxzcGFjZTtpKz0xKXtpbmRlbnQrPSIgIn19ZWxzZXtpZih0eXBlb2Ygc3BhY2U9PT0ic3RyaW5nIil7aW5kZW50PXNwYWNlfX1yZXA9cmVwbGFjZXI7aWYocmVwbGFjZXImJnR5cGVvZiByZXBsYWNlciE9PSJmdW5jdGlvbiImJih0eXBlb2YgcmVwbGFjZXIhPT0ib2JqZWN0Inx8dHlwZW9mIHJlcGxhY2VyLmxlbmd0aCE9PSJudW1iZXIiKSl7dGhyb3cgbmV3IEVycm9yKCIkLmpxcGxvdC5KU09OLnN0cmluZ2lmeSIpfXJldHVybiBzdHIoIiIseyIiOnZhbHVlfSl9fWlmKHR5cGVvZiAkLmpxcGxvdC5KU09OLnBhcnNlIT09ImZ1bmN0aW9uIil7JC5qcXBsb3QuSlNPTi5wYXJzZT1mdW5jdGlvbih0ZXh0LHJldml2ZXIpe3ZhciBqO2Z1bmN0aW9uIHdhbGsoaG9sZGVyLGtleSl7dmFyIGssdix2YWx1ZT1ob2xkZXJba2V5XTtpZih2YWx1ZSYmdHlwZW9mIHZhbHVlPT09Im9iamVjdCIpe2ZvcihrIGluIHZhbHVlKXtpZihPYmplY3QuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSxrKSl7dj13YWxrKHZhbHVlLGspO2lmKHYhPT11bmRlZmluZWQpe3ZhbHVlW2tdPXZ9ZWxzZXtkZWxldGUgdmFsdWVba119fX19cmV0dXJuIHJldml2ZXIuY2FsbChob2xkZXIsa2V5LHZhbHVlKX10ZXh0PVN0cmluZyh0ZXh0KTtjeC5sYXN0SW5kZXg9MDtpZihjeC50ZXN0KHRleHQpKXt0ZXh0PXRleHQucmVwbGFjZShjeCxmdW5jdGlvbihhKXtyZXR1cm4iXFx1IisoIjAwMDAiK2EuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC00KX0pfWlmKC9eW1xdLDp7fVxzXSokLy50ZXN0KHRleHQucmVwbGFjZSgvXFwoPzpbIlxcXC9iZm5ydF18dVswLTlhLWZBLUZdezR9KS9nLCJAIikucmVwbGFjZSgvIlteIlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/L2csIl0iKS5yZXBsYWNlKC8oPzpefDp8LCkoPzpccypcWykrL2csIiIpKSl7aj1ldmFsKCIoIit0ZXh0KyIpIik7cmV0dXJuIHR5cGVvZiByZXZpdmVyPT09ImZ1bmN0aW9uIj93YWxrKHsiIjpqfSwiIik6an10aHJvdyBuZXcgU3ludGF4RXJyb3IoIiQuanFwbG90LkpTT04ucGFyc2UiKX19fSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.logAxisRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAqICBjbGFzczogJC5qcXBsb3QuTG9nQXhpc1JlbmRlcmVyCiAgICAqICBBIHBsdWdpbiBmb3IgYSBqcVBsb3QgdG8gcmVuZGVyIGEgbG9nYXJpdGhtaWMgYXhpcy4KICAgICogCiAgICAqICBUbyB1c2UgdGhpcyByZW5kZXJlciwgaW5jbHVkZSB0aGUgcGx1Z2luIGluIHlvdXIgc291cmNlCiAgICAqICA+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBsYW5ndWFnZT0iamF2YXNjcmlwdCIgc3JjPSJwbHVnaW5zL2pxcGxvdC5sb2dBeGlzUmVuZGVyZXIuanMiPjwvc2NyaXB0PgogICAgKiAgCiAgICAqICBhbmQgc3VwcGx5IHRoZSBhcHByb3ByaWF0ZSBvcHRpb25zIHRvIHlvdXIgcGxvdAogICAgKiAgCiAgICAqICA+IHtheGVzOnt4YXhpczp7cmVuZGVyZXI6JC5qcXBsb3QuTG9nQXhpc1JlbmRlcmVyfX19CiAgICAqKi8gCiAgICAkLmpxcGxvdC5Mb2dBeGlzUmVuZGVyZXIgPSBmdW5jdGlvbigpIHsKICAgICAgICAkLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIuY2FsbCh0aGlzKTsKICAgICAgICAvLyBwcm9wOiBheGlzRGVmYXVsdHMKICAgICAgICAvLyBEZWZhdWx0IHByb3BlcnRpZXMgd2hpY2ggd2lsbCBiZSBhcHBsaWVkIGRpcmVjdGx5IHRvIHRoZSBzZXJpZXMuCiAgICAgICAgLy8KICAgICAgICAvLyBHcm91cDogUHJvcGVydGllcwogICAgICAgIC8vCiAgICAgICAgLy8gUHJvcGVydGllcwogICAgICAgIC8vCiAgICAgICAgLy8gYmFzZSAtIHRoZSBsb2dhcml0aG1pYyBiYXNlLCBjb21tb25seSAyLCAxMCBvciBNYXRoLkUKICAgICAgICAvLyB0aWNrRGlzdHJpYnV0aW9uIC0gRGVwcmVjYXRlZC4gICJwb3dlciIgZGlzdHJpYnV0aW9uIG9mIHRpY2tzCiAgICAgICAgLy8gYWx3YXlzIHVzZWQuICBPcHRpb24gaGFzIG5vIGVmZmVjdC4KICAgICAgICB0aGlzLmF4aXNEZWZhdWx0cyA9IHsKICAgICAgICAgICAgYmFzZSA6IDEwLAogICAgICAgICAgICB0aWNrRGlzdHJpYnV0aW9uIDoncG93ZXInCiAgICAgICAgfTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkxvZ0F4aXNSZW5kZXJlci5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7CiAgICAkLmpxcGxvdC5Mb2dBeGlzUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuTG9nQXhpc1JlbmRlcmVyOwogICAgCiAgICAkLmpxcGxvdC5Mb2dBeGlzUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgLy8gcHJvcDogZHJhd0Jhc2VsaW5lCiAgICAgICAgLy8gVHJ1ZSB0byBkcmF3IHRoZSBheGlzIGJhc2VsaW5lLgogICAgICAgIHRoaXMuZHJhd0Jhc2VsaW5lID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBtaW5vclRpY2tzCiAgICAgICAgLy8gTnVtYmVyIG9mIHRpY2tzIHRvIGFkZCBiZXR3ZWVuICJtYWpvciIgdGlja3MuCiAgICAgICAgLy8gTWFqb3IgdGlja3MgYXJlIHRpY2tzIHN1cHBsaWVkIGJ5IHVzZXIgb3IgYXV0byBjb21wdXRlZC4KICAgICAgICAvLyBNaW5vciB0aWNrcyBjYW5ub3QgYmUgY3JlYXRlZCBieSB1c2VyLgogICAgICAgIHRoaXMubWlub3JUaWNrcyA9ICdhdXRvJzsKICAgICAgICB0aGlzLl9zY2FsZWZhY3QgPSAxLjA7CgogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwoKICAgICAgICB0aGlzLl9hdXRvRm9ybWF0U3RyaW5nID0gJyVkJzsKICAgICAgICB0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZyA9IGZhbHNlOwoKICAgICAgICBmb3IgKHZhciBkIGluIHRoaXMucmVuZGVyZXIuYXhpc0RlZmF1bHRzKSB7CiAgICAgICAgICAgIGlmICh0aGlzW2RdID09IG51bGwpIHsKICAgICAgICAgICAgICAgIHRoaXNbZF0gPSB0aGlzLnJlbmRlcmVyLmF4aXNEZWZhdWx0c1tkXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdGhpcy5yZXNldERhdGFCb3VuZHMoKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LkxvZ0F4aXNSZW5kZXJlci5wcm90b3R5cGUuY3JlYXRlVGlja3MgPSBmdW5jdGlvbihwbG90KSB7CiAgICAgICAgLy8gd2UncmUgYXJlIG9wZXJhdGluZyBvbiBhbiBheGlzIGhlcmUKICAgICAgICB2YXIgdGlja3MgPSB0aGlzLl90aWNrczsKICAgICAgICB2YXIgdXNlclRpY2tzID0gdGhpcy50aWNrczsKICAgICAgICB2YXIgbmFtZSA9IHRoaXMubmFtZTsKICAgICAgICB2YXIgZGIgPSB0aGlzLl9kYXRhQm91bmRzOwogICAgICAgIHZhciBkaW0gPSAodGhpcy5uYW1lLmNoYXJBdCgwKSA9PT0gJ3gnKSA/IHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoIDogdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0OwogICAgICAgIHZhciBpbnRlcnZhbDsKICAgICAgICB2YXIgbWluLCBtYXg7CiAgICAgICAgdmFyIHBvczEsIHBvczI7CiAgICAgICAgdmFyIHR0LCBpOwoKICAgICAgICB2YXIgdGhyZXNob2xkID0gMzA7CiAgICAgICAgLy8gRm9yIHNvbWUgcmVhc29uIHNjYWxlZmFjdG9yIGlzIHNjcmV3aW5nIHVwIHRpY2tzLgogICAgICAgIHRoaXMuX3NjYWxlZmFjdCA9ICAoTWF0aC5tYXgoZGltLCB0aHJlc2hvbGQrMSkgLSB0aHJlc2hvbGQpLzMwMDsKCiAgICAgICAgLy8gaWYgd2UgYWxyZWFkeSBoYXZlIHRpY2tzLCB1c2UgdGhlbS4KICAgICAgICAvLyB0aWNrcyBtdXN0IGJlIGluIG9yZGVyIG9mIGluY3JlYXNpbmcgdmFsdWUuCiAgICAgICAgaWYgKHVzZXJUaWNrcy5sZW5ndGgpIHsKICAgICAgICAgICAgLy8gdGlja3MgY291bGQgYmUgMUQgb3IgMkQgYXJyYXkgb2YgW3ZhbCwgdmFsLCAsLCxdIG9yIFtbdmFsLCBsYWJlbF0sIFt2YWwsIGxhYmVsXSwgLi4uXSBvciBtaXhlZAogICAgICAgICAgICBmb3IgKGk9MDsgaTx1c2VyVGlja3MubGVuZ3RoOyBpKyspewogICAgICAgICAgICAgICAgdmFyIHV0ID0gdXNlclRpY2tzW2ldOwogICAgICAgICAgICAgICAgdmFyIHQgPSBuZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7CiAgICAgICAgICAgICAgICBpZiAodXQuY29uc3RydWN0b3IgPT0gQXJyYXkpIHsKICAgICAgICAgICAgICAgICAgICB0LnZhbHVlID0gdXRbMF07CiAgICAgICAgICAgICAgICAgICAgdC5sYWJlbCA9IHV0WzFdOwogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaG93VGlja3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghdGhpcy5zaG93VGlja01hcmtzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdC5zZXRUaWNrKHV0WzBdLCB0aGlzLm5hbWUpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzZSBpZiAoJC5pc1BsYWluT2JqZWN0KHV0KSkgewogICAgICAgICAgICAgICAgICAgICQuZXh0ZW5kKHRydWUsIHQsIHV0KTsKICAgICAgICAgICAgICAgICAgICB0LmF4aXMgPSB0aGlzLm5hbWU7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdC52YWx1ZSA9IHV0OwogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaG93VGlja3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghdGhpcy5zaG93VGlja01hcmtzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdC5zZXRUaWNrKHV0LCB0aGlzLm5hbWUpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IHVzZXJUaWNrcy5sZW5ndGg7CiAgICAgICAgICAgIHRoaXMubWluID0gdGhpcy5fdGlja3NbMF0udmFsdWU7CiAgICAgICAgICAgIHRoaXMubWF4ID0gdGhpcy5fdGlja3NbdGhpcy5udW1iZXJUaWNrcy0xXS52YWx1ZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gd2UgZG9uJ3QgaGF2ZSBhbnkgdGlja3MgeWV0LCBsZXQncyBtYWtlIHNvbWUhCiAgICAgICAgZWxzZSBpZiAodGhpcy5taW4gPT0gbnVsbCAmJiB0aGlzLm1heCA9PSBudWxsKSB7CiAgICAgICAgICAgIG1pbiA9IGRiLm1pbiAqICgyIC0gdGhpcy5wYWRNaW4pOwogICAgICAgICAgICBtYXggPSBkYi5tYXggKiB0aGlzLnBhZE1heDsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIGlmIG1pbiBhbmQgbWF4IGFyZSBzYW1lLCBzcGFjZSB0aGVtIG91dCBhIGJpdAogICAgICAgICAgICBpZiAobWluID09IG1heCkgewogICAgICAgICAgICAgICAgdmFyIGFkaiA9IDAuMDU7CiAgICAgICAgICAgICAgICBtaW4gPSBtaW4qKDEtYWRqKTsKICAgICAgICAgICAgICAgIG1heCA9IG1heCooMSthZGopOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBwZXJmb3JtIHNvbWUgY2hlY2tzCiAgICAgICAgICAgIGlmICh0aGlzLm1pbiAhPSBudWxsICYmIHRoaXMubWluIDw9IDApIHsKICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTG9nIGF4aXMgbWluaW11bSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMubWF4ICE9IG51bGwgJiYgdGhpcy5tYXggPD0gMCkgewogICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJMb2cgYXhpcyBtYXhpbXVtIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAiKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZnVuY3Rpb24gZmluZENlaWwgKHZhbCkgewogICAgICAgICAgICAgICAgdmFyIG9yZGVyID0gTWF0aC5wb3coMTAsIE1hdGguZmxvb3IoTWF0aC5sb2codmFsKS9NYXRoLkxOMTApKTsKICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLmNlaWwodmFsL29yZGVyKSAqIG9yZGVyOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmdW5jdGlvbiBmaW5kRmxvb3IodmFsKSB7CiAgICAgICAgICAgICAgICB2YXIgb3JkZXIgPSBNYXRoLnBvdygxMCwgTWF0aC5mbG9vcihNYXRoLmxvZyh2YWwpL01hdGguTE4xMCkpOwogICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IodmFsL29yZGVyKSAqIG9yZGVyOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyB2YXIgcmFuZ2UgPSBtYXggLSBtaW47CiAgICAgICAgICAgIHZhciBybWluLCBybWF4OwoKICAgICAgICAgICAgLy8gZm9yIHBvd2VyIGRpc3RyaWJ1dGlvbiwgb3BlbiB1cCByYW5nZSB0byBnZXQgYSBuaWNlIHBvd2VyIG9mIGF4aXMucmVuZGVyZXIuYmFzZS4KICAgICAgICAgICAgLy8gcG93ZXIgZGlzdHJpYnV0aW9uIHdvbid0IHJlc3BlY3QgdGhlIHVzZXIncyBtaW4vbWF4IHNldHRpbmdzLgogICAgICAgICAgICBybWluID0gTWF0aC5wb3codGhpcy5iYXNlLCBNYXRoLmZsb29yKE1hdGgubG9nKG1pbikvTWF0aC5sb2codGhpcy5iYXNlKSkpOwogICAgICAgICAgICBybWF4ID0gTWF0aC5wb3codGhpcy5iYXNlLCBNYXRoLmNlaWwoTWF0aC5sb2cobWF4KS9NYXRoLmxvZyh0aGlzLmJhc2UpKSk7CgogICAgICAgICAgICAvLyAvLyBpZiBtaW4gYW5kIG1heCBhcmUgc2FtZSwgc3BhY2UgdGhlbSBvdXQgYSBiaXQKICAgICAgICAgICAgLy8gaWYgKHJtaW4gPT09IHJtYXgpIHsKICAgICAgICAgICAgLy8gICAgIHZhciBhZGogPSAwLjA1OwogICAgICAgICAgICAvLyAgICAgcm1pbiA9IHJtaW4qKDEtYWRqKTsKICAgICAgICAgICAgLy8gICAgIHJtYXggPSBybWF4KigxK2Fkaik7CiAgICAgICAgICAgIC8vIH0KCiAgICAgICAgICAgIC8vIEhhbmRsZSBjYXNlIHdoZXJlIGEgZGF0YSB2YWx1ZSB3YXMgemVybwogICAgICAgICAgICBpZiAocm1pbiA9PT0gMCkgewogICAgICAgICAgICAgIHJtaW4gPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgb3JkZXIgPSBNYXRoLnJvdW5kKE1hdGgubG9nKHJtaW4pL01hdGguTE4xMCk7CgogICAgICAgICAgICBpZiAodGhpcy50aWNrT3B0aW9ucyA9PSBudWxsIHx8ICF0aGlzLnRpY2tPcHRpb25zLmZvcm1hdFN0cmluZykgewogICAgICAgICAgICAgICAgdGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcgPSB0cnVlOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0aGlzLm1pbiA9IHJtaW47CiAgICAgICAgICAgIHRoaXMubWF4ID0gcm1heDsKICAgICAgICAgICAgdmFyIHJhbmdlID0gdGhpcy5tYXggLSB0aGlzLm1pbjsgICAgICAgICAgICAKCiAgICAgICAgICAgIHZhciBtaW5vclRpY2tzID0gKHRoaXMubWlub3JUaWNrcyA9PT0gJ2F1dG8nKSA/IDAgOiB0aGlzLm1pbm9yVGlja3M7CiAgICAgICAgICAgIHZhciBudW1iZXJUaWNrczsKICAgICAgICAgICAgaWYgKHRoaXMubnVtYmVyVGlja3MgPT0gbnVsbCl7CiAgICAgICAgICAgICAgICBpZiAoZGltID4gMTQwKSB7CiAgICAgICAgICAgICAgICAgICAgbnVtYmVyVGlja3MgPSBNYXRoLnJvdW5kKE1hdGgubG9nKHRoaXMubWF4L3RoaXMubWluKS9NYXRoLmxvZyh0aGlzLmJhc2UpICsgMSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlclRpY2tzIDwgMikgewogICAgICAgICAgICAgICAgICAgICAgICBudW1iZXJUaWNrcyA9IDI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChtaW5vclRpY2tzID09PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZW1wID0gZGltLyhudW1iZXJUaWNrcyAtIDEpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVtcCA8IDEwMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3JUaWNrcyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGVtcCA8IDE5MCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3JUaWNrcyA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGVtcCA8IDI1MCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3JUaWNrcyA9IDM7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGVtcCA8IDYwMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlub3JUaWNrcyA9IDQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5vclRpY2tzID0gOTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIG51bWJlclRpY2tzID0gMjsKICAgICAgICAgICAgICAgICAgICBpZiAobWlub3JUaWNrcyA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBtaW5vclRpY2tzID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbWlub3JUaWNrcyA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBudW1iZXJUaWNrcyA9IHRoaXMubnVtYmVyVGlja3M7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChvcmRlciA+PSAwICYmIG1pbm9yVGlja3MgIT09IDMpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmcgPSAnJWQnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIEFkanVzdCBmb3JtYXQgc3RyaW5nIGZvciBjYXNlIHdpdGggMyB0aWNrcyB3aGVyZSB3ZSdsbCBoYXZlIGxpa2UgMSwgMi41LCA1LCA3LjUsIDEwCiAgICAgICAgICAgIGVsc2UgaWYgKG9yZGVyIDw9IDAgJiYgbWlub3JUaWNrcyA9PT0gMykgewogICAgICAgICAgICAgICAgdmFyIHRlbXAgPSAtKG9yZGVyIC0gMSk7CiAgICAgICAgICAgICAgICB0aGlzLl9hdXRvRm9ybWF0U3RyaW5nID0gJyUuJysgTWF0aC5hYnMob3JkZXItMSkgKyAnZic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIEFkanVzdCBmb3JtYXQgc3RyaW5nIGZvciB2YWx1ZXMgbGVzcyB0aGFuIDEuCiAgICAgICAgICAgIGVsc2UgaWYgKG9yZGVyIDwgMCkgewogICAgICAgICAgICAgICAgdmFyIHRlbXAgPSAtb3JkZXI7CiAgICAgICAgICAgICAgICB0aGlzLl9hdXRvRm9ybWF0U3RyaW5nID0gJyUuJysgTWF0aC5hYnMob3JkZXIpICsgJ2YnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmcgPSAnJWQnOwogICAgICAgICAgICB9CgogICAgICAgICAgICB2YXIgdG8sIHQsIHZhbCwgdHQxLCBzcHJlYWQsIGludGVydmFsOwogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8bnVtYmVyVGlja3M7IGkrKyl7CiAgICAgICAgICAgICAgICB0dCA9IE1hdGgucG93KHRoaXMuYmFzZSwgaSAtIG51bWJlclRpY2tzICsgMSkgKiB0aGlzLm1heDsKCiAgICAgICAgICAgICAgICB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwogICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmICh0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZykgewogICAgICAgICAgICAgICAgICAgIHQuZm9ybWF0U3RyaW5nID0gdGhpcy5fYXV0b0Zvcm1hdFN0cmluZzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dUaWNrcykgewogICAgICAgICAgICAgICAgICAgIHQuc2hvd0xhYmVsID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuc2hvd1RpY2tNYXJrcykgewogICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHQuc2V0VGljayh0dCwgdGhpcy5uYW1lKTsKICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CgogICAgICAgICAgICAgICAgaWYgKG1pbm9yVGlja3MgJiYgaTxudW1iZXJUaWNrcy0xKSB7CiAgICAgICAgICAgICAgICAgICAgdHQxID0gTWF0aC5wb3codGhpcy5iYXNlLCBpIC0gbnVtYmVyVGlja3MgKyAyKSAqIHRoaXMubWF4OwogICAgICAgICAgICAgICAgICAgIHNwcmVhZCA9IHR0MSAtIHR0OwogICAgICAgICAgICAgICAgICAgIGludGVydmFsID0gdHQxIC8gKG1pbm9yVGlja3MrMSk7CiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj1taW5vclRpY2tzLTE7IGo+PTA7IGotLSkgewogICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSB0dDEtaW50ZXJ2YWwqKGorMSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSBuZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcgJiYgdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyAhPSAnJykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5mb3JtYXRTdHJpbmcgPSB0aGlzLl9hdXRvRm9ybWF0U3RyaW5nOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaG93VGlja3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd0xhYmVsID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuc2hvd1RpY2tNYXJrcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2V0VGljayh2YWwsIHRoaXMubmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSAgICAgICAKICAgICAgICAgICAgfSAgICAgCiAgICAgICAgfQoKICAgICAgICAvLyBtaW4gYW5kIG1heCBhcmUgc2V0IGFzIHdvdWxkIGJlIHRoZSBjYXNlIHdpdGggem9vbWluZwogICAgICAgIGVsc2UgaWYgKHRoaXMubWluICE9IG51bGwgJiYgdGhpcy5tYXggIT0gbnVsbCkgewogICAgICAgICAgICB2YXIgb3B0cyA9ICQuZXh0ZW5kKHRydWUsIHt9LCB0aGlzLnRpY2tPcHRpb25zLCB7bmFtZTogdGhpcy5uYW1lLCB2YWx1ZTogbnVsbH0pOwogICAgICAgICAgICB2YXIgbnQsIHRpOwogICAgICAgICAgICAvLyBkb24ndCBoYXZlIGFuIGludGVydmFsIHlldCwgcGljayBvbmUgdGhhdCBnaXZlcyB0aGUgbW9zdAogICAgICAgICAgICAvLyAicm91bmQiIHRpY2tzIHdlIGNhbiBnZXQuCiAgICAgICAgICAgIGlmICh0aGlzLm51bWJlclRpY2tzID09IG51bGwgJiYgdGhpcy50aWNrSW50ZXJ2YWwgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgLy8gdmFyIHRocmVzaG9sZCA9IDMwOwogICAgICAgICAgICAgICAgdmFyIHRkaW0gPSBNYXRoLm1heChkaW0sIHRocmVzaG9sZCsxKTsKICAgICAgICAgICAgICAgIHZhciBudHRhcmdldCA9ICBNYXRoLmNlaWwoKHRkaW0tdGhyZXNob2xkKS8zNSArIDEpOwoKICAgICAgICAgICAgICAgIHZhciByZXQgPSAkLmpxcGxvdC5MaW5lYXJUaWNrR2VuZXJhdG9yLmJlc3RDb25zdHJhaW5lZEludGVydmFsKHRoaXMubWluLCB0aGlzLm1heCwgbnR0YXJnZXQpOwoKICAgICAgICAgICAgICAgIHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmcgPSByZXRbM107CiAgICAgICAgICAgICAgICBudCA9IHJldFsyXTsKICAgICAgICAgICAgICAgIHRpID0gcmV0WzRdOwoKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxudDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgb3B0cy52YWx1ZSA9IHRoaXMubWluICsgaSAqIHRpOwogICAgICAgICAgICAgICAgICAgIHQgPSBuZXcgdGhpcy50aWNrUmVuZGVyZXIob3B0cyk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nICYmIHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmcgIT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5mb3JtYXRTdHJpbmcgPSB0aGlzLl9hdXRvRm9ybWF0U3RyaW5nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2hvd1RpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd0xhYmVsID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuc2hvd1RpY2tNYXJrcykgewogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGZvciBsb29zZSB6b29tLCBudW1iZXIgdGlja3MgYW5kIGludGVydmFsIGFyZSBhbHNvIHNldC4KICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5udW1iZXJUaWNrcyAhPSBudWxsICYmIHRoaXMudGlja0ludGVydmFsICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIG50ID0gdGhpcy5udW1iZXJUaWNrczsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxudDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgb3B0cy52YWx1ZSA9IHRoaXMubWluICsgaSAqIHRoaXMudGlja0ludGVydmFsOwogICAgICAgICAgICAgICAgICAgIHQgPSBuZXcgdGhpcy50aWNrUmVuZGVyZXIob3B0cyk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nICYmIHRoaXMuX2F1dG9Gb3JtYXRTdHJpbmcgIT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5mb3JtYXRTdHJpbmcgPSB0aGlzLl9hdXRvRm9ybWF0U3RyaW5nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2hvd1RpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd0xhYmVsID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuc2hvd1RpY2tNYXJrcykgewogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5Mb2dBeGlzUmVuZGVyZXIucHJvdG90eXBlLnBhY2sgPSBmdW5jdGlvbihwb3MsIG9mZnNldHMpIHsKICAgICAgICB2YXIgbGIgPSBwYXJzZUludCh0aGlzLmJhc2UsIDEwKTsKICAgICAgICB2YXIgdGlja3MgPSB0aGlzLl90aWNrczsKICAgICAgICB2YXIgdHJhbnMgPSBmdW5jdGlvbiAodikgeyByZXR1cm4gTWF0aC5sb2codikvTWF0aC5sb2cobGIpOyB9OwogICAgICAgIHZhciBpbnZ0cmFucyA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBNYXRoLnBvdyhNYXRoLkUsIChNYXRoLmxvZyhsYikqdikpOyB9OwogICAgICAgIHZhciBtYXggPSB0cmFucyh0aGlzLm1heCk7CiAgICAgICAgdmFyIG1pbiA9IHRyYW5zKHRoaXMubWluKTsKICAgICAgICB2YXIgb2ZmbWF4ID0gb2Zmc2V0cy5tYXg7CiAgICAgICAgdmFyIG9mZm1pbiA9IG9mZnNldHMubWluOwogICAgICAgIHZhciBsc2hvdyA9ICh0aGlzLl9sYWJlbCA9PSBudWxsKSA/IGZhbHNlIDogdGhpcy5fbGFiZWwuc2hvdzsKICAgICAgICAKICAgICAgICBmb3IgKHZhciBwIGluIHBvcykgewogICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyhwLCBwb3NbcF0pOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB0aGlzLl9vZmZzZXRzID0gb2Zmc2V0czsKICAgICAgICAvLyBwaXhlbGxlbmd0aCB3aWxsIGJlICsgZm9yIHggYXhlcyBhbmQgLSBmb3IgeSBheGVzIGJlY2FzdWUgcGl4ZWxzIGFsd2F5cyBtZWFzdXJlZCBmcm9tIHRvcCBsZWZ0LgogICAgICAgIHZhciBwaXhlbGxlbmd0aCA9IG9mZm1heCAtIG9mZm1pbjsKICAgICAgICB2YXIgdW5pdGxlbmd0aCA9IG1heCAtIG1pbjsKICAgICAgICAKICAgICAgICAvLyBwb2ludCB0byB1bml0IGFuZCB1bml0IHRvIHBvaW50IGNvbnZlcnNpb25zIHJlZmVyZW5jZXMgdG8gUGxvdCBET00gZWxlbWVudCB0b3AgbGVmdCBjb3JuZXIuCiAgICAgICAgdGhpcy5wMnUgPSBmdW5jdGlvbihwKXsKICAgICAgICAgICAgcmV0dXJuIGludnRyYW5zKChwIC0gb2ZmbWluKSAqIHVuaXRsZW5ndGggLyBwaXhlbGxlbmd0aCArIG1pbik7CiAgICAgICAgfTsKICAgICAgICAKICAgICAgICB0aGlzLnUycCA9IGZ1bmN0aW9uKHUpewogICAgICAgICAgICByZXR1cm4gKHRyYW5zKHUpIC0gbWluKSAqIHBpeGVsbGVuZ3RoIC8gdW5pdGxlbmd0aCArIG9mZm1pbjsKICAgICAgICB9OwogICAgICAgIAogICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpewogICAgICAgICAgICB0aGlzLnNlcmllc191MnAgPSBmdW5jdGlvbih1KXsKICAgICAgICAgICAgICAgIHJldHVybiAodHJhbnModSkgLSBtaW4pICogcGl4ZWxsZW5ndGggLyB1bml0bGVuZ3RoOwogICAgICAgICAgICB9OwogICAgICAgICAgICB0aGlzLnNlcmllc19wMnUgPSBmdW5jdGlvbihwKXsKICAgICAgICAgICAgICAgIHJldHVybiBpbnZ0cmFucyhwICogdW5pdGxlbmd0aCAvIHBpeGVsbGVuZ3RoICsgbWluKTsKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgLy8geWF4aXMgaXMgbWF4IGF0IHRvcCBvZiBjYW52YXMuCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHRoaXMuc2VyaWVzX3UycCA9IGZ1bmN0aW9uKHUpewogICAgICAgICAgICAgICAgcmV0dXJuICh0cmFucyh1KSAtIG1heCkgKiBwaXhlbGxlbmd0aCAvIHVuaXRsZW5ndGg7CiAgICAgICAgICAgIH07CiAgICAgICAgICAgIHRoaXMuc2VyaWVzX3AydSA9IGZ1bmN0aW9uKHApewogICAgICAgICAgICAgICAgcmV0dXJuIGludnRyYW5zKHAgKiB1bml0bGVuZ3RoIC8gcGl4ZWxsZW5ndGggKyBtYXgpOwogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGlja3NbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvdyAmJiB0LnNob3dMYWJlbCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2hpbTsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmNvbnN0cnVjdG9yID09ICQuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIgJiYgdC5hbmdsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LmxhYmVsUG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhdXRvJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9zaXRpb24gYXQgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmFuZ2xlIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldFdpZHRoKCkgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5zaW4oLXQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvc2l0aW9uIGF0IHN0YXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5zaW4odC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZW5kJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldFdpZHRoKCkgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5zaW4oLXQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdGFydCc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKHQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtaWRkbGUnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0V2lkdGgoKS8yICsgdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKC10Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldFdpZHRoKCkvMiArIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbigtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldFdpZHRoKCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAvLyB2YXIgc2hpbSA9IHQuZ2V0V2lkdGgoKS8yOwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsID0gdGhpcy51MnAodC52YWx1ZSkgKyBzaGltICsgJ3B4JzsKICAgICAgICAgICAgICAgICAgICAgICAgdC5fZWxlbS5jc3MoJ2xlZnQnLCB2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICB0LnBhY2soKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobHNob3cpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdyA9IHRoaXMuX2xhYmVsLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCdsZWZ0Jywgb2ZmbWluICsgcGl4ZWxsZW5ndGgvMiAtIHcvMiArICdweCcpOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJykgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5fZWxlbS5jc3MoJ2JvdHRvbScsICcwcHgnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygndG9wJywgJzBweCcpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5wYWNrKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGlja3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRpY2tzW2ldOwogICAgICAgICAgICAgICAgICAgIGlmICh0LnNob3cgJiYgdC5zaG93TGFiZWwpIHsgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNoaW07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmNvbnN0cnVjdG9yID09ICQuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIgJiYgdC5hbmdsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LmxhYmVsUG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhdXRvJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9zaXRpb24gYXQgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZW5kJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuYW5nbGUgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLmNvcygtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5jb3ModC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3RhcnQnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5hbmdsZSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguY29zKC10Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5nZXRIZWlnaHQoKSArIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLmNvcyh0Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtaWRkbGUnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiAodC5hbmdsZSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHNoaW0gPSAtdC5nZXRIZWlnaHQoKS8yICsgdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKC10Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHNoaW0gPSAtdC5nZXRIZWlnaHQoKS8yIC0gdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKHQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5nZXRIZWlnaHQoKS8yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbCA9IHRoaXMudTJwKHQudmFsdWUpICsgc2hpbSArICdweCc7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuX2VsZW0uY3NzKCd0b3AnLCB2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICB0LnBhY2soKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobHNob3cpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgaCA9IHRoaXMuX2xhYmVsLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygndG9wJywgb2ZmbWF4IC0gcGl4ZWxsZW5ndGgvMiAtIGgvMiArICdweCcpOwogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3lheGlzJykgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5fZWxlbS5jc3MoJ2xlZnQnLCAnMHB4Jyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5fZWxlbS5jc3MoJ3JpZ2h0JywgJzBweCcpOwogICAgICAgICAgICAgICAgICAgIH0gICAKICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5wYWNrKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9ICAgICAgICAKICAgIH07Cn0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.logAxisRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGEpe2EuanFwbG90LkxvZ0F4aXNSZW5kZXJlcj1mdW5jdGlvbigpe2EuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpO3RoaXMuYXhpc0RlZmF1bHRzPXtiYXNlOjEwLHRpY2tEaXN0cmlidXRpb246InBvd2VyIn19O2EuanFwbG90LkxvZ0F4aXNSZW5kZXJlci5wcm90b3R5cGU9bmV3IGEuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlcigpO2EuanFwbG90LkxvZ0F4aXNSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9YS5qcXBsb3QuTG9nQXhpc1JlbmRlcmVyO2EuanFwbG90LkxvZ0F4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihiKXt0aGlzLmRyYXdCYXNlbGluZT10cnVlO3RoaXMubWlub3JUaWNrcz0iYXV0byI7dGhpcy5fc2NhbGVmYWN0PTE7YS5leHRlbmQodHJ1ZSx0aGlzLGIpO3RoaXMuX2F1dG9Gb3JtYXRTdHJpbmc9IiVkIjt0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZz1mYWxzZTtmb3IodmFyIGMgaW4gdGhpcy5yZW5kZXJlci5heGlzRGVmYXVsdHMpe2lmKHRoaXNbY109PW51bGwpe3RoaXNbY109dGhpcy5yZW5kZXJlci5heGlzRGVmYXVsdHNbY119fXRoaXMucmVzZXREYXRhQm91bmRzKCl9O2EuanFwbG90LkxvZ0F4aXNSZW5kZXJlci5wcm90b3R5cGUuY3JlYXRlVGlja3M9ZnVuY3Rpb24oZCl7dmFyIEc9dGhpcy5fdGlja3M7dmFyIHc9dGhpcy50aWNrczt2YXIgcz10aGlzLm5hbWU7dmFyIHU9dGhpcy5fZGF0YUJvdW5kczt2YXIgYj0odGhpcy5uYW1lLmNoYXJBdCgwKT09PSJ4Iik/dGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGg6dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0O3ZhciBrO3ZhciBOLHY7dmFyIG0sbDt2YXIgTSxLO3ZhciBnPTMwO3RoaXMuX3NjYWxlZmFjdD0oTWF0aC5tYXgoYixnKzEpLWcpLzMwMDtpZih3Lmxlbmd0aCl7Zm9yKEs9MDtLPHcubGVuZ3RoO0srKyl7dmFyIEE9d1tLXTt2YXIgSD1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7aWYoQS5jb25zdHJ1Y3Rvcj09QXJyYXkpe0gudmFsdWU9QVswXTtILmxhYmVsPUFbMV07aWYoIXRoaXMuc2hvd1RpY2tzKXtILnNob3dMYWJlbD1mYWxzZTtILnNob3dNYXJrPWZhbHNlfWVsc2V7aWYoIXRoaXMuc2hvd1RpY2tNYXJrcyl7SC5zaG93TWFyaz1mYWxzZX19SC5zZXRUaWNrKEFbMF0sdGhpcy5uYW1lKTt0aGlzLl90aWNrcy5wdXNoKEgpfWVsc2V7aWYoYS5pc1BsYWluT2JqZWN0KEEpKXthLmV4dGVuZCh0cnVlLEgsQSk7SC5heGlzPXRoaXMubmFtZTt0aGlzLl90aWNrcy5wdXNoKEgpfWVsc2V7SC52YWx1ZT1BO2lmKCF0aGlzLnNob3dUaWNrcyl7SC5zaG93TGFiZWw9ZmFsc2U7SC5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe0guc2hvd01hcms9ZmFsc2V9fUguc2V0VGljayhBLHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChIKX19fXRoaXMubnVtYmVyVGlja3M9dy5sZW5ndGg7dGhpcy5taW49dGhpcy5fdGlja3NbMF0udmFsdWU7dGhpcy5tYXg9dGhpcy5fdGlja3NbdGhpcy5udW1iZXJUaWNrcy0xXS52YWx1ZX1lbHNle2lmKHRoaXMubWluPT1udWxsJiZ0aGlzLm1heD09bnVsbCl7Tj11Lm1pbiooMi10aGlzLnBhZE1pbik7dj11Lm1heCp0aGlzLnBhZE1heDtpZihOPT12KXt2YXIgYz0wLjA1O049TiooMS1jKTt2PXYqKDErYyl9aWYodGhpcy5taW4hPW51bGwmJnRoaXMubWluPD0wKXt0aHJvdyBuZXcgRXJyb3IoIkxvZyBheGlzIG1pbmltdW0gbXVzdCBiZSBncmVhdGVyIHRoYW4gMCIpfWlmKHRoaXMubWF4IT1udWxsJiZ0aGlzLm1heDw9MCl7dGhyb3cgbmV3IEVycm9yKCJMb2cgYXhpcyBtYXhpbXVtIG11c3QgYmUgZ3JlYXRlciB0aGFuIDAiKX1mdW5jdGlvbiBmKGope3ZhciBpPU1hdGgucG93KDEwLE1hdGguZmxvb3IoTWF0aC5sb2coaikvTWF0aC5MTjEwKSk7cmV0dXJuIE1hdGguY2VpbChqL2kpKml9ZnVuY3Rpb24geChqKXt2YXIgaT1NYXRoLnBvdygxMCxNYXRoLmZsb29yKE1hdGgubG9nKGopL01hdGguTE4xMCkpO3JldHVybiBNYXRoLmZsb29yKGovaSkqaX12YXIgRixyO0Y9TWF0aC5wb3codGhpcy5iYXNlLE1hdGguZmxvb3IoTWF0aC5sb2coTikvTWF0aC5sb2codGhpcy5iYXNlKSkpO3I9TWF0aC5wb3codGhpcy5iYXNlLE1hdGguY2VpbChNYXRoLmxvZyh2KS9NYXRoLmxvZyh0aGlzLmJhc2UpKSk7aWYoRj09PTApe0Y9MX12YXIgRT1NYXRoLnJvdW5kKE1hdGgubG9nKEYpL01hdGguTE4xMCk7aWYodGhpcy50aWNrT3B0aW9ucz09bnVsbHx8IXRoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nKXt0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZz10cnVlfXRoaXMubWluPUY7dGhpcy5tYXg9cjt2YXIgcT10aGlzLm1heC10aGlzLm1pbjt2YXIgQz0odGhpcy5taW5vclRpY2tzPT09ImF1dG8iKT8wOnRoaXMubWlub3JUaWNrczt2YXIgaDtpZih0aGlzLm51bWJlclRpY2tzPT1udWxsKXtpZihiPjE0MCl7aD1NYXRoLnJvdW5kKE1hdGgubG9nKHRoaXMubWF4L3RoaXMubWluKS9NYXRoLmxvZyh0aGlzLmJhc2UpKzEpO2lmKGg8Mil7aD0yfWlmKEM9PT0wKXt2YXIgbz1iLyhoLTEpO2lmKG88MTAwKXtDPTB9ZWxzZXtpZihvPDE5MCl7Qz0xfWVsc2V7aWYobzwyNTApe0M9M31lbHNle2lmKG88NjAwKXtDPTR9ZWxzZXtDPTl9fX19fX1lbHNle2g9MjtpZihDPT09MCl7Qz0xfUM9MH19ZWxzZXtoPXRoaXMubnVtYmVyVGlja3N9aWYoRT49MCYmQyE9PTMpe3RoaXMuX2F1dG9Gb3JtYXRTdHJpbmc9IiVkIn1lbHNle2lmKEU8PTAmJkM9PT0zKXt2YXIgbz0tKEUtMSk7dGhpcy5fYXV0b0Zvcm1hdFN0cmluZz0iJS4iK01hdGguYWJzKEUtMSkrImYifWVsc2V7aWYoRTwwKXt2YXIgbz0tRTt0aGlzLl9hdXRvRm9ybWF0U3RyaW5nPSIlLiIrTWF0aC5hYnMoRSkrImYifWVsc2V7dGhpcy5fYXV0b0Zvcm1hdFN0cmluZz0iJWQifX19dmFyIE8sSCx6LHAsbixrO2Zvcih2YXIgSz0wO0s8aDtLKyspe009TWF0aC5wb3codGhpcy5iYXNlLEstaCsxKSp0aGlzLm1heDtIPW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTtpZih0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZyl7SC5mb3JtYXRTdHJpbmc9dGhpcy5fYXV0b0Zvcm1hdFN0cmluZ31pZighdGhpcy5zaG93VGlja3Mpe0guc2hvd0xhYmVsPWZhbHNlO0guc2hvd01hcms9ZmFsc2V9ZWxzZXtpZighdGhpcy5zaG93VGlja01hcmtzKXtILnNob3dNYXJrPWZhbHNlfX1ILnNldFRpY2soTSx0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goSCk7aWYoQyYmSzxoLTEpe3A9TWF0aC5wb3codGhpcy5iYXNlLEstaCsyKSp0aGlzLm1heDtuPXAtTTtrPXAvKEMrMSk7Zm9yKHZhciBKPUMtMTtKPj0wO0otLSl7ej1wLWsqKEorMSk7SD1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7aWYodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcmJnRoaXMuX2F1dG9Gb3JtYXRTdHJpbmchPSIiKXtILmZvcm1hdFN0cmluZz10aGlzLl9hdXRvRm9ybWF0U3RyaW5nfWlmKCF0aGlzLnNob3dUaWNrcyl7SC5zaG93TGFiZWw9ZmFsc2U7SC5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe0guc2hvd01hcms9ZmFsc2V9fUguc2V0VGljayh6LHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChIKX19fX1lbHNle2lmKHRoaXMubWluIT1udWxsJiZ0aGlzLm1heCE9bnVsbCl7dmFyIHk9YS5leHRlbmQodHJ1ZSx7fSx0aGlzLnRpY2tPcHRpb25zLHtuYW1lOnRoaXMubmFtZSx2YWx1ZTpudWxsfSk7dmFyIEksZTtpZih0aGlzLm51bWJlclRpY2tzPT1udWxsJiZ0aGlzLnRpY2tJbnRlcnZhbD09bnVsbCl7dmFyIEQ9TWF0aC5tYXgoYixnKzEpO3ZhciBMPU1hdGguY2VpbCgoRC1nKS8zNSsxKTt2YXIgQj1hLmpxcGxvdC5MaW5lYXJUaWNrR2VuZXJhdG9yLmJlc3RDb25zdHJhaW5lZEludGVydmFsKHRoaXMubWluLHRoaXMubWF4LEwpO3RoaXMuX2F1dG9Gb3JtYXRTdHJpbmc9QlszXTtJPUJbMl07ZT1CWzRdO2Zvcih2YXIgSz0wO0s8STtLKyspe3kudmFsdWU9dGhpcy5taW4rSyplO0g9bmV3IHRoaXMudGlja1JlbmRlcmVyKHkpO2lmKHRoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nJiZ0aGlzLl9hdXRvRm9ybWF0U3RyaW5nIT0iIil7SC5mb3JtYXRTdHJpbmc9dGhpcy5fYXV0b0Zvcm1hdFN0cmluZ31pZighdGhpcy5zaG93VGlja3Mpe0guc2hvd0xhYmVsPWZhbHNlO0guc2hvd01hcms9ZmFsc2V9ZWxzZXtpZighdGhpcy5zaG93VGlja01hcmtzKXtILnNob3dNYXJrPWZhbHNlfX10aGlzLl90aWNrcy5wdXNoKEgpfX1lbHNle2lmKHRoaXMubnVtYmVyVGlja3MhPW51bGwmJnRoaXMudGlja0ludGVydmFsIT1udWxsKXtJPXRoaXMubnVtYmVyVGlja3M7Zm9yKHZhciBLPTA7SzxJO0srKyl7eS52YWx1ZT10aGlzLm1pbitLKnRoaXMudGlja0ludGVydmFsO0g9bmV3IHRoaXMudGlja1JlbmRlcmVyKHkpO2lmKHRoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nJiZ0aGlzLl9hdXRvRm9ybWF0U3RyaW5nIT0iIil7SC5mb3JtYXRTdHJpbmc9dGhpcy5fYXV0b0Zvcm1hdFN0cmluZ31pZighdGhpcy5zaG93VGlja3Mpe0guc2hvd0xhYmVsPWZhbHNlO0guc2hvd01hcms9ZmFsc2V9ZWxzZXtpZighdGhpcy5zaG93VGlja01hcmtzKXtILnNob3dNYXJrPWZhbHNlfX10aGlzLl90aWNrcy5wdXNoKEgpfX19fX19fTthLmpxcGxvdC5Mb2dBeGlzUmVuZGVyZXIucHJvdG90eXBlLnBhY2s9ZnVuY3Rpb24oZixlKXt2YXIgcj1wYXJzZUludCh0aGlzLmJhc2UsMTApO3ZhciB5PXRoaXMuX3RpY2tzO3ZhciBkPWZ1bmN0aW9uKGgpe3JldHVybiBNYXRoLmxvZyhoKS9NYXRoLmxvZyhyKX07dmFyIGI9ZnVuY3Rpb24oaCl7cmV0dXJuIE1hdGgucG93KE1hdGguRSwoTWF0aC5sb2cocikqaCkpfTt2YXIgdT1kKHRoaXMubWF4KTt2YXIgcz1kKHRoaXMubWluKTt2YXIgbT1lLm1heDt2YXIgaz1lLm1pbjt2YXIgbz0odGhpcy5fbGFiZWw9PW51bGwpP2ZhbHNlOnRoaXMuX2xhYmVsLnNob3c7Zm9yKHZhciBxIGluIGYpe3RoaXMuX2VsZW0uY3NzKHEsZltxXSl9dGhpcy5fb2Zmc2V0cz1lO3ZhciBnPW0tazt2YXIgaj11LXM7dGhpcy5wMnU9ZnVuY3Rpb24oaCl7cmV0dXJuIGIoKGgtaykqai9nK3MpfTt0aGlzLnUycD1mdW5jdGlvbihoKXtyZXR1cm4oZChoKS1zKSpnL2ora307aWYodGhpcy5uYW1lPT0ieGF4aXMifHx0aGlzLm5hbWU9PSJ4MmF4aXMiKXt0aGlzLnNlcmllc191MnA9ZnVuY3Rpb24oaCl7cmV0dXJuKGQoaCktcykqZy9qfTt0aGlzLnNlcmllc19wMnU9ZnVuY3Rpb24oaCl7cmV0dXJuIGIoaCpqL2crcyl9fWVsc2V7dGhpcy5zZXJpZXNfdTJwPWZ1bmN0aW9uKGgpe3JldHVybihkKGgpLXUpKmcvan07dGhpcy5zZXJpZXNfcDJ1PWZ1bmN0aW9uKGgpe3JldHVybiBiKGgqai9nK3UpfX1pZih0aGlzLnNob3cpe2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7Zm9yKHZhciB2PTA7djx5Lmxlbmd0aDt2Kyspe3ZhciBuPXlbdl07aWYobi5zaG93JiZuLnNob3dMYWJlbCl7dmFyIGM7aWYobi5jb25zdHJ1Y3Rvcj09YS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciYmbi5hbmdsZSl7c3dpdGNoKG4ubGFiZWxQb3NpdGlvbil7Y2FzZSJhdXRvIjppZihuLmFuZ2xlPDApe2M9LW4uZ2V0V2lkdGgoKStuLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKC1uLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9ZWxzZXtjPS1uLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKG4uX3RleHRSZW5kZXJlci5hbmdsZSkvMn1icmVhaztjYXNlImVuZCI6Yz0tbi5nZXRXaWR0aCgpK24uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4oLW4uX3RleHRSZW5kZXJlci5hbmdsZSkvMjticmVhaztjYXNlInN0YXJ0IjpjPS1uLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKG4uX3RleHRSZW5kZXJlci5hbmdsZSkvMjticmVhaztjYXNlIm1pZGRsZSI6Yz0tbi5nZXRXaWR0aCgpLzIrbi5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbigtbi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yO2JyZWFrO2RlZmF1bHQ6Yz0tbi5nZXRXaWR0aCgpLzIrbi5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbigtbi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yO2JyZWFrfX1lbHNle2M9LW4uZ2V0V2lkdGgoKS8yfXZhciB6PXRoaXMudTJwKG4udmFsdWUpK2MrInB4IjtuLl9lbGVtLmNzcygibGVmdCIseik7bi5wYWNrKCl9fWlmKG8pe3ZhciBsPXRoaXMuX2xhYmVsLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSk7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJsZWZ0IixrK2cvMi1sLzIrInB4Iik7aWYodGhpcy5uYW1lPT0ieGF4aXMiKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoImJvdHRvbSIsIjBweCIpfWVsc2V7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJ0b3AiLCIwcHgiKX10aGlzLl9sYWJlbC5wYWNrKCl9fWVsc2V7Zm9yKHZhciB2PTA7djx5Lmxlbmd0aDt2Kyspe3ZhciBuPXlbdl07aWYobi5zaG93JiZuLnNob3dMYWJlbCl7dmFyIGM7aWYobi5jb25zdHJ1Y3Rvcj09YS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciYmbi5hbmdsZSl7c3dpdGNoKG4ubGFiZWxQb3NpdGlvbil7Y2FzZSJhdXRvIjpjYXNlImVuZCI6aWYobi5hbmdsZTwwKXtjPS1uLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguY29zKC1uLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9ZWxzZXtjPS1uLmdldEhlaWdodCgpK24uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5jb3Mobi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWJyZWFrO2Nhc2Uic3RhcnQiOmlmKG4uYW5nbGU+MCl7Yz0tbi5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLmNvcygtbi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWVsc2V7Yz0tbi5nZXRIZWlnaHQoKStuLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguY29zKG4uX3RleHRSZW5kZXJlci5hbmdsZSkvMn1icmVhaztjYXNlIm1pZGRsZSI6Yz0tbi5nZXRIZWlnaHQoKS8yO2JyZWFrO2RlZmF1bHQ6Yz0tbi5nZXRIZWlnaHQoKS8yO2JyZWFrfX1lbHNle2M9LW4uZ2V0SGVpZ2h0KCkvMn12YXIgej10aGlzLnUycChuLnZhbHVlKStjKyJweCI7bi5fZWxlbS5jc3MoInRvcCIseik7bi5wYWNrKCl9fWlmKG8pe3ZhciB4PXRoaXMuX2xhYmVsLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpO3RoaXMuX2xhYmVsLl9lbGVtLmNzcygidG9wIixtLWcvMi14LzIrInB4Iik7aWYodGhpcy5uYW1lPT0ieWF4aXMiKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoImxlZnQiLCIwcHgiKX1lbHNle3RoaXMuX2xhYmVsLl9lbGVtLmNzcygicmlnaHQiLCIwcHgiKX10aGlzLl9sYWJlbC5wYWNrKCl9fX19fSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.mekkoAxisRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLy8gY2xhc3M6ICQuanFwbG90Lk1la2tvQXhpc1JlbmRlcmVyCiAgICAvLyBBbiBheGlzIHJlbmRlcmVyIGZvciBhIE1la2tvIGNoYXJ0LgogICAgLy8gU2hvdWxkIGJlIHVzZWQgd2l0aCBhIE1la2tvIGNoYXJ0IHdoZXJlIHRoZSBtZWtrb1JlbmRlcmVyIGlzIHVzZWQgb24gdGhlIHNlcmllcy4KICAgIC8vIERpc3BsYXlzIHRoZSBZIGF4aXMgYXMgYSByYW5nZSBmcm9tIDAgdG8gMSAoMCB0byAxMDAlKSBhbmQgdGhlIHggYXhpcyB3aXRoIGEgdGljawogICAgLy8gZm9yIGVhY2ggc2VyaWVzIHNjYWxlZCB0byB0aGUgc3VtIG9mIGFsbCB0aGUgeSB2YWx1ZXMuCiAgICAkLmpxcGxvdC5NZWtrb0F4aXNSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYXhpcyBvYmplY3QuCiAgICAkLmpxcGxvdC5NZWtrb0F4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpewogICAgICAgIC8vIHByb3A6IHRpY2tNb2RlCiAgICAgICAgLy8gSG93IHRvIHNwYWNlIHRoZSB0aWNrcyBvbiB0aGUgYXhpcy4KICAgICAgICAvLyAnYmFyJyB3aWxsIHBsYWNlIGEgdGljayBhdCB0aGUgd2lkdGggb2YgZWFjaCBiYXIuICAKICAgICAgICAvLyBUaGlzIGlzIHRoZSBkZWZhdWx0IGZvciB0aGUgeCBheGlzLgogICAgICAgIC8vICdldmVuJyB3aWxsIHBsYWNlIHRpY2tzIGF0IGV2ZW4gaW50ZXJ2YWxzLiAgVGhpcyBpcwogICAgICAgIC8vIHRoZSBkZWZhdWx0IGZvciB4MiBheGlzIGFuZCB5IGF4aXMuICB5IGF4aXMgY2Fubm90IGJlIGNoYW5nZWQuCiAgICAgICAgdGhpcy50aWNrTW9kZTsKICAgICAgICAvLyBwcm9wOiBiYXJMYWJlbFJlbmRlcmVyCiAgICAgICAgLy8gcmVuZGVyZXIgdG8gdXNlIHRvIGRyYXcgbGFiZWxzIHVuZGVyIGVhY2ggYmFyLgogICAgICAgIHRoaXMuYmFyTGFiZWxSZW5kZXJlciA9ICQuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyOwogICAgICAgIC8vIHByb3A6IGJhckxhYmVscwogICAgICAgIC8vIGFycmF5IG9mIGxhYmVscyB0byBwdXQgdW5kZXIgZWFjaCBiYXIuCiAgICAgICAgdGhpcy5iYXJMYWJlbHMgPSB0aGlzLmJhckxhYmVscyB8fCBbXTsKICAgICAgICAvLyBwcm9wOiBiYXJMYWJlbE9wdGlvbnMKICAgICAgICAvLyBvcHRpb25zIG9iamVjdCB0byBwYXNzIHRvIHRoZSBiYXIgbGFiZWwgcmVuZGVyZXIuCiAgICAgICAgdGhpcy5iYXJMYWJlbE9wdGlvbnMgPSB7fTsKICAgICAgICB0aGlzLnRpY2tPcHRpb25zID0gJC5leHRlbmQodHJ1ZSwge3Nob3dHcmlkbGluZTpmYWxzZX0sIHRoaXMudGlja09wdGlvbnMpOwogICAgICAgIHRoaXMuX2JhckxhYmVscyA9IFtdOwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3lheGlzJykgewogICAgICAgICAgICB0aGlzLnRpY2tPcHRpb25zLmZvcm1hdFN0cmluZyA9IHRoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nIHx8ICIlZFwlIjsKICAgICAgICB9CiAgICAgICAgdmFyIGRiID0gdGhpcy5fZGF0YUJvdW5kczsKICAgICAgICBkYi5taW4gPSAwOwogICAgICAgIC8vIGZvciB5IGF4ZXMsIHNjYWxlIGFsd2F5cyBnbyBmcm9tIDAgdG8gMSAoMCB0byAxMDAlKQogICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3lheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3kyYXhpcycpIHsKICAgICAgICAgICAgZGIubWF4ID0gMTAwOwogICAgICAgICAgICB0aGlzLnRpY2tNb2RlID0gJ2V2ZW4nOwogICAgICAgIH0KICAgICAgICAvLyBGb3IgeCBheGVzLCBzY2FsZSBnb2VzIGZyb20gMCB0byBzdW0gb2YgYWxsIHkgdmFsdWVzLgogICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnKXsKICAgICAgICAgICAgdGhpcy50aWNrTW9kZSA9ICh0aGlzLnRpY2tNb2RlID09IG51bGwpID8gJ2JhcicgOiB0aGlzLnRpY2tNb2RlOwogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5fc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBkYi5tYXggKz0gdGhpcy5fc2VyaWVzW2ldLl9zdW15OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PSAneDJheGlzJyl7CiAgICAgICAgICAgIHRoaXMudGlja01vZGUgPSAodGhpcy50aWNrTW9kZSA9PSBudWxsKSA/ICdldmVuJyA6IHRoaXMudGlja01vZGU7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGRiLm1heCArPSB0aGlzLl9zZXJpZXNbaV0uX3N1bXk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBheGlzCiAgICAkLmpxcGxvdC5NZWtrb0F4aXNSZW5kZXJlci5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGN0eCwgcGxvdCkgewogICAgICAgIGlmICh0aGlzLnNob3cpIHsKICAgICAgICAgICAgLy8gcG9wdWxhdGUgdGhlIGF4aXMgbGFiZWwgYW5kIHZhbHVlIHByb3BlcnRpZXMuCiAgICAgICAgICAgIC8vIGNyZWF0ZVRpY2tzIGlzIGEgbWV0aG9kIG9uIHRoZSByZW5kZXJlciwgYnV0CiAgICAgICAgICAgIC8vIGNhbGwgaXQgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgYXhpcy4KICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5jcmVhdGVUaWNrcy5jYWxsKHRoaXMpOwogICAgICAgICAgICAvLyBmaWxsIGEgZGl2IHdpdGggYXhlcyBsYWJlbHMgaW4gdGhlIHJpZ2h0IGRpcmVjdGlvbi4KICAgICAgICAgICAgLy8gTmVlZCB0byBwcmVnZW5lcmF0ZSBlYWNoIGF4aXMgdG8gZ2V0IGl0cyBib3VuZHMgYW5kCiAgICAgICAgICAgIC8vIHBvc2l0aW9uIGl0IGFuZCB0aGUgbGFiZWxzIGNvcnJlY3RseSBvbiB0aGUgcGxvdC4KICAgICAgICAgICAgdmFyIGRpbT0wOwogICAgICAgICAgICB2YXIgdGVtcDsKICAgICAgICAgICAgCiAgICAgICAgICAgIHZhciBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiAgICAgICAgICAgIHRoaXMuX2VsZW0gPSAkKGVsZW0pOwogICAgICAgICAgICB0aGlzLl9lbGVtLmFkZENsYXNzKCdqcXBsb3QtYXhpcyBqcXBsb3QtJyt0aGlzLm5hbWUpOwogICAgICAgICAgICB0aGlzLl9lbGVtLmNzcygncG9zaXRpb24nLCAnYWJzb2x1dGUnKTsKICAgICAgICAgICAgZWxlbSA9IG51bGw7CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiAodGhpcy5uYW1lID09ICd4YXhpcycgfHwgdGhpcy5uYW1lID09ICd4MmF4aXMnKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLndpZHRoKHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uaGVpZ2h0KHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIGRyYXcgdGhlIGF4aXMgbGFiZWwKICAgICAgICAgICAgLy8gY3JlYXRlIGEgX2xhYmVsIG9iamVjdC4KICAgICAgICAgICAgdGhpcy5sYWJlbE9wdGlvbnMuYXhpcyA9IHRoaXMubmFtZTsKICAgICAgICAgICAgdGhpcy5fbGFiZWwgPSBuZXcgdGhpcy5sYWJlbFJlbmRlcmVyKHRoaXMubGFiZWxPcHRpb25zKTsKICAgICAgICAgICAgaWYgKHRoaXMuX2xhYmVsLnNob3cpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uYXBwZW5kKHRoaXMuX2xhYmVsLmRyYXcoY3R4KSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIHZhciB0LCB0aWNrLCBlbGVtOwogICAgICAgICAgICBpZiAodGhpcy5zaG93VGlja3MpIHsKICAgICAgICAgICAgICAgIHQgPSB0aGlzLl90aWNrczsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdGljayA9IHRbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHRpY2suc2hvd0xhYmVsICYmICghdGljay5pc01pbm9yVGljayB8fCB0aGlzLnNob3dNaW5vclRpY2tzKSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmFwcGVuZCh0aWNrLmRyYXcoY3R4KSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBkcmF3IHRoZSBzZXJpZXMgbGFiZWxzCiAgICAgICAgICAgIGZvciAoaT0wOyBpPHRoaXMuYmFyTGFiZWxzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB0aGlzLmJhckxhYmVsT3B0aW9ucy5heGlzID0gdGhpcy5uYW1lOwogICAgICAgICAgICAgICAgdGhpcy5iYXJMYWJlbE9wdGlvbnMubGFiZWwgPSB0aGlzLmJhckxhYmVsc1tpXTsKICAgICAgICAgICAgICAgIHRoaXMuX2JhckxhYmVscy5wdXNoKG5ldyB0aGlzLmJhckxhYmVsUmVuZGVyZXIodGhpcy5iYXJMYWJlbE9wdGlvbnMpKTsKICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpY2tNb2RlICE9ICdiYXInKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYmFyTGFiZWxzW2ldLnNob3cgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICh0aGlzLl9iYXJMYWJlbHNbaV0uc2hvdykgewogICAgICAgICAgICAgICAgICAgIHZhciBlbGVtID0gdGhpcy5fYmFyTGFiZWxzW2ldLmRyYXcoY3R4LCBwbG90KTsKICAgICAgICAgICAgICAgICAgICBlbGVtLnJlbW92ZUNsYXNzKCdqcXBsb3QtJyt0aGlzLm5hbWUrJy1sYWJlbCcpOwogICAgICAgICAgICAgICAgICAgIGVsZW0uYWRkQ2xhc3MoJ2pxcGxvdC0nK3RoaXMubmFtZSsnLXRpY2snKTsKICAgICAgICAgICAgICAgICAgICBlbGVtLmFkZENsYXNzKCdqcXBsb3QtbWVra28tYmFyTGFiZWwnKTsKICAgICAgICAgICAgICAgICAgICBlbGVtLmFwcGVuZFRvKHRoaXMuX2VsZW0pOwogICAgICAgICAgICAgICAgICAgIGVsZW0gPSBudWxsOwogICAgICAgICAgICAgICAgfSAgIAogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy5fZWxlbTsKICAgIH07CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIGFuIGF4aXMKICAgICQuanFwbG90Lk1la2tvQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uKCkgewogICAgICAgIHRoaXMubWluID0gdGhpcy5fbWluOwogICAgICAgIHRoaXMubWF4ID0gdGhpcy5fbWF4OwogICAgICAgIHRoaXMudGlja0ludGVydmFsID0gdGhpcy5fdGlja0ludGVydmFsOwogICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSB0aGlzLl9udW1iZXJUaWNrczsKICAgICAgICAvLyB0aGlzLl90aWNrcyA9IHRoaXMuX190aWNrczsKICAgIH07CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIGF4aXMKICAgICQuanFwbG90Lk1la2tvQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbigpIHsgCiAgICAgICAgdmFyIGRpbSA9IDA7CiAgICAgICAgdmFyIHRlbXA7CiAgICAgICAgdmFyIHcgPSAwOwogICAgICAgIHZhciBoID0gMDsKICAgICAgICB2YXIgbHNob3cgPSAodGhpcy5fbGFiZWwgPT0gbnVsbCkgPyBmYWxzZSA6IHRoaXMuX2xhYmVsLnNob3c7CiAgICAgICAgaWYgKHRoaXMuc2hvdyAmJiB0aGlzLnNob3dUaWNrcykgewogICAgICAgICAgICB2YXIgdCA9IHRoaXMuX3RpY2tzOwogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgdmFyIHRpY2sgPSB0W2ldOwogICAgICAgICAgICAgICAgaWYgKHRpY2suc2hvd0xhYmVsICYmICghdGljay5pc01pbm9yVGljayB8fCB0aGlzLnNob3dNaW5vclRpY2tzKSkgewogICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IHRpY2suX2VsZW0ub3V0ZXJIZWlnaHQodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gdGljay5fZWxlbS5vdXRlcldpZHRoKHRydWUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodGVtcCA+IGRpbSkgewogICAgICAgICAgICAgICAgICAgICAgICBkaW0gPSB0ZW1wOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGxzaG93KSB7CiAgICAgICAgICAgICAgICB3ID0gdGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTsKICAgICAgICAgICAgICAgIGggPSB0aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTsgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnKSB7CiAgICAgICAgICAgICAgICBkaW0gPSBkaW0gKyBoOwogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoeydoZWlnaHQnOmRpbSsncHgnLCBsZWZ0OicwcHgnLCBib3R0b206JzBweCd9KTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmICh0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgIGRpbSA9IGRpbSArIGg7CiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7J2hlaWdodCc6ZGltKydweCcsIGxlZnQ6JzBweCcsIHRvcDonMHB4J30pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PSAneWF4aXMnKSB7CiAgICAgICAgICAgICAgICBkaW0gPSBkaW0gKyB3OwogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moeyd3aWR0aCc6ZGltKydweCcsIGxlZnQ6JzBweCcsIHRvcDonMHB4J30pOwogICAgICAgICAgICAgICAgaWYgKGxzaG93ICYmIHRoaXMuX2xhYmVsLmNvbnN0cnVjdG9yID09ICQuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCd3aWR0aCcsIHcrJ3B4Jyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBkaW0gPSBkaW0gKyB3OwogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moeyd3aWR0aCc6ZGltKydweCcsIHJpZ2h0OicwcHgnLCB0b3A6JzBweCd9KTsKICAgICAgICAgICAgICAgIGlmIChsc2hvdyAmJiB0aGlzLl9sYWJlbC5jb25zdHJ1Y3RvciA9PSAkLmpxcGxvdC5BeGlzTGFiZWxSZW5kZXJlcikgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygnd2lkdGgnLCB3KydweCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSAgCiAgICB9OyAgICAKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYXhpcwogICAgJC5qcXBsb3QuTWVra29BeGlzUmVuZGVyZXIucHJvdG90eXBlLmNyZWF0ZVRpY2tzID0gZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gd2UncmUgYXJlIG9wZXJhdGluZyBvbiBhbiBheGlzIGhlcmUKICAgICAgICB2YXIgdGlja3MgPSB0aGlzLl90aWNrczsKICAgICAgICB2YXIgdXNlclRpY2tzID0gdGhpcy50aWNrczsKICAgICAgICB2YXIgbmFtZSA9IHRoaXMubmFtZTsKICAgICAgICAvLyBkYXRhYm91bmRzIHdlcmUgc2V0IG9uIGF4aXMgaW5pdGlhbGl6YXRpb24uCiAgICAgICAgdmFyIGRiID0gdGhpcy5fZGF0YUJvdW5kczsKICAgICAgICB2YXIgZGltLCBpbnRlcnZhbDsKICAgICAgICB2YXIgbWluLCBtYXg7CiAgICAgICAgdmFyIHBvczEsIHBvczI7CiAgICAgICAgdmFyIHQsIHR0LCBpLCBqOwogICAgICAgIAogICAgICAgIC8vIGlmIHdlIGFscmVhZHkgaGF2ZSB0aWNrcywgdXNlIHRoZW0uCiAgICAgICAgLy8gdGlja3MgbXVzdCBiZSBpbiBvcmRlciBvZiBpbmNyZWFzaW5nIHZhbHVlLgogICAgICAgIAogICAgICAgIGlmICh1c2VyVGlja3MubGVuZ3RoKSB7CiAgICAgICAgICAgIC8vIHRpY2tzIGNvdWxkIGJlIDFEIG9yIDJEIGFycmF5IG9mIFt2YWwsIHZhbCwgLCwsXSBvciBbW3ZhbCwgbGFiZWxdLCBbdmFsLCBsYWJlbF0sIC4uLl0gb3IgbWl4ZWQKICAgICAgICAgICAgZm9yIChpPTA7IGk8dXNlclRpY2tzLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgICAgIHZhciB1dCA9IHVzZXJUaWNrc1tpXTsKICAgICAgICAgICAgICAgIHZhciB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwogICAgICAgICAgICAgICAgaWYgKHV0LmNvbnN0cnVjdG9yID09IEFycmF5KSB7CiAgICAgICAgICAgICAgICAgICAgdC52YWx1ZSA9IHV0WzBdOwogICAgICAgICAgICAgICAgICAgIHQubGFiZWwgPSB1dFsxXTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2hvd1RpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd0xhYmVsID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuc2hvd1RpY2tNYXJrcykgewogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHQuc2V0VGljayh1dFswXSwgdGhpcy5uYW1lKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90aWNrcy5wdXNoKHQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0LnZhbHVlID0gdXQ7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dUaWNrcykgewogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dMYWJlbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLnNob3dUaWNrTWFya3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0LnNldFRpY2sodXQsIHRoaXMubmFtZSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gdXNlclRpY2tzLmxlbmd0aDsKICAgICAgICAgICAgdGhpcy5taW4gPSB0aGlzLl90aWNrc1swXS52YWx1ZTsKICAgICAgICAgICAgdGhpcy5tYXggPSB0aGlzLl90aWNrc1t0aGlzLm51bWJlclRpY2tzLTFdLnZhbHVlOwogICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9ICh0aGlzLm1heCAtIHRoaXMubWluKSAvICh0aGlzLm51bWJlclRpY2tzIC0gMSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIHdlIGRvbid0IGhhdmUgYW55IHRpY2tzIHlldCwgbGV0J3MgbWFrZSBzb21lIQogICAgICAgIGVsc2UgewogICAgICAgICAgICBpZiAobmFtZSA9PSAneGF4aXMnIHx8IG5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgIGRpbSA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgZGltID0gdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBpZiBtaW4sIG1heCBhbmQgbnVtYmVyIG9mIHRpY2tzIHNwZWNpZmllZCwgdXNlciBjYW4ndCBzcGVjaWZ5IGludGVydmFsLgogICAgICAgICAgICBpZiAodGhpcy5taW4gIT0gbnVsbCAmJiB0aGlzLm1heCAhPSBudWxsICYmIHRoaXMubnVtYmVyVGlja3MgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgCiAgICAgICAgICAgIG1pbiA9ICh0aGlzLm1pbiAhPSBudWxsKSA/IHRoaXMubWluIDogZGIubWluOwogICAgICAgICAgICBtYXggPSAodGhpcy5tYXggIT0gbnVsbCkgPyB0aGlzLm1heCA6IGRiLm1heDsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIGlmIG1pbiBhbmQgbWF4IGFyZSBzYW1lLCBzcGFjZSB0aGVtIG91dCBhIGJpdC4rCiAgICAgICAgICAgIGlmIChtaW4gPT0gbWF4KSB7CiAgICAgICAgICAgICAgICB2YXIgYWRqID0gMC4wNTsKICAgICAgICAgICAgICAgIGlmIChtaW4gPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgYWRqID0gTWF0aC5tYXgoTWF0aC5sb2cobWluKS9NYXRoLkxOMTAsIDAuMDUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbWluIC09IGFkajsKICAgICAgICAgICAgICAgIG1heCArPSBhZGo7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciByYW5nZSA9IG1heCAtIG1pbjsKICAgICAgICAgICAgdmFyIHJtaW4sIHJtYXg7CiAgICAgICAgICAgIHZhciB0ZW1wLCBwcmV2LCBjdXJyOwogICAgICAgICAgICB2YXIgeW51bXRpY2tzID0gWzMsNSw2LDExLDIxXTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIHlheGlzIGRpdmlkZSB0aWNrcyBpbiBuaWNlIGludGVydmFscyBmcm9tIDAgdG8gMS4KICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneWF4aXMnIHx8IHRoaXMubmFtZSA9PSAneTJheGlzJykgeyAKICAgICAgICAgICAgICAgIHRoaXMubWluID0gMDsKICAgICAgICAgICAgICAgIHRoaXMubWF4ID0gMTAwOyAKICAgICAgICAgICAgICAgIC8vIHVzZXIgZGlkbid0IHNwZWNpZnkgbnVtYmVyIG9mIHRpY2tzLgogICAgICAgICAgICAgICAgaWYgKCF0aGlzLm51bWJlclRpY2tzKXsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy50aWNrSW50ZXJ2YWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IDMgKyBNYXRoLmNlaWwocmFuZ2UgLyB0aGlzLnRpY2tJbnRlcnZhbCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB0ZW1wID0gMiArIE1hdGguY2VpbCgoZGltLSh0aGlzLnRpY2tTcGFjaW5nLTEpKS90aGlzLnRpY2tTcGFjaW5nKTsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpPTA7IGk8eW51bXRpY2tzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyID0gdGVtcC95bnVtdGlja3NbaV07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyciA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IHludW10aWNrc1tpXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnIgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldiA9IGN1cnI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyIDwgMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdhcyBwcmV2IG9yIGlzIGN1cnIgY2xvc2VyIHRvIG9uZT8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoTWF0aC5hYnMocHJldiAtIDEpIDwgTWF0aC5hYnMoY3VyciAtIDEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSB5bnVtdGlja3NbaS0xXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0geW51bXRpY2tzW2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpID09IHludW10aWNrcy5sZW5ndGggLTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0geW51bXRpY2tzW2ldOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGlja0ludGVydmFsID0gcmFuZ2UgLyAodGhpcy5udW1iZXJUaWNrcyAtIDEpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gdXNlciBkaWQgc3BlY2lmeSBudW1iZXIgb2YgdGlja3MuCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9IHJhbmdlIC8gKHRoaXMubnVtYmVyVGlja3MgLSAxKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5udW1iZXJUaWNrczsgaSsrKXsKICAgICAgICAgICAgICAgICAgICB0dCA9IHRoaXMubWluICsgaSAqIHRoaXMudGlja0ludGVydmFsOwogICAgICAgICAgICAgICAgICAgIHQgPSBuZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgLy8gdmFyIHQgPSBuZXcgJC5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2hvd1RpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd0xhYmVsID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuc2hvd1RpY2tNYXJrcykgewogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHQuc2V0VGljayh0dCwgdGhpcy5uYW1lKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90aWNrcy5wdXNoKHQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBmb3IgeCBheGVzLCBoYXZlIG51bWJlciBvdCB0aWNrcyBlcXVhbCB0byBudW1iZXIgb2Ygc2VyaWVzIGFuZCB0aWNrcyBwbGFjZWQKICAgICAgICAgICAgLy8gYXQgc3VtIG9mIHkgdmFsdWVzIGZvciBlYWNoIHNlcmllcy4KICAgICAgICAgICAgZWxzZSBpZiAodGhpcy50aWNrTW9kZSA9PSAnYmFyJykgewogICAgICAgICAgICAgICAgdGhpcy5taW4gPSAwOwogICAgICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IHRoaXMuX3Nlcmllcy5sZW5ndGggKyAxOwogICAgICAgICAgICAgICAgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTsKICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaG93VGlja3MpIHsKICAgICAgICAgICAgICAgICAgICB0LnNob3dMYWJlbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLnNob3dUaWNrTWFya3MpIHsKICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0LnNldFRpY2soMCwgdGhpcy5uYW1lKTsKICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHRlbXAgPSAwOwoKICAgICAgICAgICAgICAgIGZvciAoaT0xOyBpPHRoaXMubnVtYmVyVGlja3M7IGkrKyl7CiAgICAgICAgICAgICAgICAgICAgdGVtcCArPSB0aGlzLl9zZXJpZXNbaS0xXS5fc3VteTsKICAgICAgICAgICAgICAgICAgICB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5zaG93VGlja3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICghdGhpcy5zaG93VGlja01hcmtzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdC5zZXRUaWNrKHRlbXAsIHRoaXMubmFtZSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRoaXMubWF4ID0gdGhpcy5tYXggfHwgdGVtcDsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gaWYgdXNlciBzcGVjaWZpZWQgYSBtYXggYW5kIGl0IGlzIGdyZWF0ZXIgdGhhbiBzdW0sIGFkZCBhIHRpY2sKICAgICAgICAgICAgICAgIGlmICh0aGlzLm1heCA+IHRlbXApIHsKICAgICAgICAgICAgICAgICAgICAgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuc2hvd1RpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd0xhYmVsID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIHQuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXRoaXMuc2hvd1RpY2tNYXJrcykgewogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHQuc2V0VGljayh0aGlzLm1heCwgdGhpcy5uYW1lKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90aWNrcy5wdXNoKHQpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBlbHNlIGlmICh0aGlzLnRpY2tNb2RlID09ICdldmVuJykgewogICAgICAgICAgICAgICAgdGhpcy5taW4gPSAwOwogICAgICAgICAgICAgICAgdGhpcy5tYXggPSB0aGlzLm1heCB8fCBkYi5tYXg7CiAgICAgICAgICAgICAgICAvLyBnZXQgYSBkZXNpcmVkIG51bWJlciBvZiB0aWNrcwogICAgICAgICAgICAgICAgdmFyIG50ID0gMiArIE1hdGguY2VpbCgoZGltLSh0aGlzLnRpY2tTcGFjaW5nLTEpKS90aGlzLnRpY2tTcGFjaW5nKTsKICAgICAgICAgICAgICAgIHJhbmdlID0gdGhpcy5tYXggLSB0aGlzLm1pbjsKICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSBudDsKICAgICAgICAgICAgICAgIHRoaXMudGlja0ludGVydmFsID0gcmFuZ2UgLyAodGhpcy5udW1iZXJUaWNrcyAtIDEpOwoKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPHRoaXMubnVtYmVyVGlja3M7IGkrKyl7CiAgICAgICAgICAgICAgICAgICAgdHQgPSB0aGlzLm1pbiArIGkgKiB0aGlzLnRpY2tJbnRlcnZhbDsKICAgICAgICAgICAgICAgICAgICB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgIC8vIHZhciB0ID0gbmV3ICQuanFwbG90LkF4aXNUaWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dUaWNrcykgewogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dMYWJlbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICB0LnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCF0aGlzLnNob3dUaWNrTWFya3MpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdC5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0LnNldFRpY2sodHQsIHRoaXMubmFtZSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYXhpcwogICAgJC5qcXBsb3QuTWVra29BeGlzUmVuZGVyZXIucHJvdG90eXBlLnBhY2sgPSBmdW5jdGlvbihwb3MsIG9mZnNldHMpIHsKICAgICAgICB2YXIgdGlja3MgPSB0aGlzLl90aWNrczsKICAgICAgICB2YXIgbWF4ID0gdGhpcy5tYXg7CiAgICAgICAgdmFyIG1pbiA9IHRoaXMubWluOwogICAgICAgIHZhciBvZmZtYXggPSBvZmZzZXRzLm1heDsKICAgICAgICB2YXIgb2ZmbWluID0gb2Zmc2V0cy5taW47CiAgICAgICAgdmFyIGxzaG93ID0gKHRoaXMuX2xhYmVsID09IG51bGwpID8gZmFsc2UgOiB0aGlzLl9sYWJlbC5zaG93OwogICAgICAgIAogICAgICAgIGZvciAodmFyIHAgaW4gcG9zKSB7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHAsIHBvc1twXSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHRoaXMuX29mZnNldHMgPSBvZmZzZXRzOwogICAgICAgIC8vIHBpeGVsbGVuZ3RoIHdpbGwgYmUgKyBmb3IgeCBheGVzIGFuZCAtIGZvciB5IGF4ZXMgYmVjYXN1ZSBwaXhlbHMgYWx3YXlzIG1lYXN1cmVkIGZyb20gdG9wIGxlZnQuCiAgICAgICAgdmFyIHBpeGVsbGVuZ3RoID0gb2ZmbWF4IC0gb2ZmbWluOwogICAgICAgIHZhciB1bml0bGVuZ3RoID0gbWF4IC0gbWluOwogICAgICAgIAogICAgICAgIC8vIHBvaW50IHRvIHVuaXQgYW5kIHVuaXQgdG8gcG9pbnQgY29udmVyc2lvbnMgcmVmZXJlbmNlcyB0byBQbG90IERPTSBlbGVtZW50IHRvcCBsZWZ0IGNvcm5lci4KICAgICAgICB0aGlzLnAydSA9IGZ1bmN0aW9uKHApewogICAgICAgICAgICByZXR1cm4gKHAgLSBvZmZtaW4pICogdW5pdGxlbmd0aCAvIHBpeGVsbGVuZ3RoICsgbWluOwogICAgICAgIH07CiAgICAgICAgCiAgICAgICAgdGhpcy51MnAgPSBmdW5jdGlvbih1KXsKICAgICAgICAgICAgcmV0dXJuICh1IC0gbWluKSAqIHBpeGVsbGVuZ3RoIC8gdW5pdGxlbmd0aCArIG9mZm1pbjsKICAgICAgICB9OwogICAgICAgICAgICAgICAgCiAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnIHx8IHRoaXMubmFtZSA9PSAneDJheGlzJyl7CiAgICAgICAgICAgIHRoaXMuc2VyaWVzX3UycCA9IGZ1bmN0aW9uKHUpewogICAgICAgICAgICAgICAgcmV0dXJuICh1IC0gbWluKSAqIHBpeGVsbGVuZ3RoIC8gdW5pdGxlbmd0aDsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgdGhpcy5zZXJpZXNfcDJ1ID0gZnVuY3Rpb24ocCl7CiAgICAgICAgICAgICAgICByZXR1cm4gcCAqIHVuaXRsZW5ndGggLyBwaXhlbGxlbmd0aCArIG1pbjsKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHRoaXMuc2VyaWVzX3UycCA9IGZ1bmN0aW9uKHUpewogICAgICAgICAgICAgICAgcmV0dXJuICh1IC0gbWF4KSAqIHBpeGVsbGVuZ3RoIC8gdW5pdGxlbmd0aDsKICAgICAgICAgICAgfTsKICAgICAgICAgICAgdGhpcy5zZXJpZXNfcDJ1ID0gZnVuY3Rpb24ocCl7CiAgICAgICAgICAgICAgICByZXR1cm4gcCAqIHVuaXRsZW5ndGggLyBwaXhlbGxlbmd0aCArIG1heDsKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKHRoaXMuc2hvdykgewogICAgICAgICAgICBpZiAodGhpcy5uYW1lID09ICd4YXhpcycgfHwgdGhpcy5uYW1lID09ICd4MmF4aXMnKSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGlja3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRpY2tzW2ldOwogICAgICAgICAgICAgICAgICAgIGlmICh0LnNob3cgJiYgdC5zaG93TGFiZWwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNoaW07CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5jb25zdHJ1Y3RvciA9PSAkLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyICYmIHQuYW5nbGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgbmVlZCB0byBhZGp1c3QgYXV0byBwb3NpdGlvbmluZyBiYXNlZCBvbiB3aGljaCBheGlzIHRoaXMgaXMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGVtcCA9ICh0aGlzLm5hbWUgPT0gJ3hheGlzJykgPyAxIDogLTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHQubGFiZWxQb3NpdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2F1dG8nOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3NpdGlvbiBhdCBlbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAgKiB0LmFuZ2xlIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldFdpZHRoKCkgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5zaW4oLXQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvc2l0aW9uIGF0IHN0YXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5zaW4odC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZW5kJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldFdpZHRoKCkgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5zaW4oLXQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdzdGFydCc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKHQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdtaWRkbGUnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0V2lkdGgoKS8yICsgdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKC10Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldFdpZHRoKCkvMiArIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbigtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldFdpZHRoKCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsID0gdGhpcy51MnAodC52YWx1ZSkgKyBzaGltICsgJ3B4JzsKICAgICAgICAgICAgICAgICAgICAgICAgdC5fZWxlbS5jc3MoJ2xlZnQnLCB2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICB0LnBhY2soKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgdzsKICAgICAgICAgICAgICAgIGlmIChsc2hvdykgewogICAgICAgICAgICAgICAgICAgIHcgPSB0aGlzLl9sYWJlbC5fZWxlbS5vdXRlcldpZHRoKHRydWUpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygnbGVmdCcsIG9mZm1pbiArIHBpeGVsbGVuZ3RoLzIgLSB3LzIgKyAncHgnKTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lID09ICd4YXhpcycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCdib3R0b20nLCAnMHB4Jyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5fZWxlbS5jc3MoJ3RvcCcsICcwcHgnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwucGFjaygpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gbm93IHNob3cgdGhlIGxhYmVscyB1bmRlciB0aGUgYmFycy4KICAgICAgICAgICAgICAgIHZhciBiLCBsLCByOwogICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMuYmFyTGFiZWxzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX2JhckxhYmVsc1tpXTsKICAgICAgICAgICAgICAgICAgICBpZiAoYi5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBiLmdldFdpZHRoKCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSB0aGlzLl90aWNrc1tpXS5nZXRMZWZ0KCkgKyB0aGlzLl90aWNrc1tpXS5nZXRXaWR0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICByID0gdGhpcy5fdGlja3NbaSsxXS5nZXRMZWZ0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGIuX2VsZW0uY3NzKCdsZWZ0JywgKHIrbC13KS8yKydweCcpOwogICAgICAgICAgICAgICAgICAgICAgICBiLl9lbGVtLmNzcygndG9wJywgdGhpcy5fdGlja3NbaV0uX2VsZW0uY3NzKCd0b3AnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGIucGFjaygpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGlja3NbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvdyAmJiB0LnNob3dMYWJlbCkgeyAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2hpbTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuY29uc3RydWN0b3IgPT0gJC5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciAmJiB0LmFuZ2xlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIG5lZWQgdG8gYWRqdXN0IGF1dG8gcG9zaXRpb25pbmcgYmFzZWQgb24gd2hpY2ggYXhpcyB0aGlzIGlzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXAgPSAodGhpcy5uYW1lID09ICd5YXhpcycpID8gMSA6IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LmxhYmVsUG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhdXRvJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9zaXRpb24gYXQgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZW5kJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAgKiB0LmFuZ2xlIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5jb3MoLXQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldEhlaWdodCgpICsgdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguY29zKHQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuYW5nbGUgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLmNvcygtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5jb3ModC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWlkZGxlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldEhlaWdodCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5nZXRIZWlnaHQoKS8yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5nZXRIZWlnaHQoKS8yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICB2YXIgdmFsID0gdGhpcy51MnAodC52YWx1ZSkgKyBzaGltICsgJ3B4JzsKICAgICAgICAgICAgICAgICAgICAgICAgdC5fZWxlbS5jc3MoJ3RvcCcsIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQucGFjaygpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChsc2hvdykgewogICAgICAgICAgICAgICAgICAgIHZhciBoID0gdGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJIZWlnaHQodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCd0b3AnLCBvZmZtYXggLSBwaXhlbGxlbmd0aC8yIC0gaC8yICsgJ3B4Jyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneWF4aXMnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygnbGVmdCcsICcwcHgnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygncmlnaHQnLCAnMHB4Jyk7CiAgICAgICAgICAgICAgICAgICAgfSAgIAogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLnBhY2soKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07Cn0pKGpRdWVyeSk7Cg==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.mekkoAxisRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGEpe2EuanFwbG90Lk1la2tvQXhpc1JlbmRlcmVyPWZ1bmN0aW9uKCl7fTthLmpxcGxvdC5NZWtrb0F4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihjKXt0aGlzLnRpY2tNb2RlO3RoaXMuYmFyTGFiZWxSZW5kZXJlcj1hLmpxcGxvdC5BeGlzTGFiZWxSZW5kZXJlcjt0aGlzLmJhckxhYmVscz10aGlzLmJhckxhYmVsc3x8W107dGhpcy5iYXJMYWJlbE9wdGlvbnM9e307dGhpcy50aWNrT3B0aW9ucz1hLmV4dGVuZCh0cnVlLHtzaG93R3JpZGxpbmU6ZmFsc2V9LHRoaXMudGlja09wdGlvbnMpO3RoaXMuX2JhckxhYmVscz1bXTthLmV4dGVuZCh0cnVlLHRoaXMsYyk7aWYodGhpcy5uYW1lPT0ieWF4aXMiKXt0aGlzLnRpY2tPcHRpb25zLmZvcm1hdFN0cmluZz10aGlzLnRpY2tPcHRpb25zLmZvcm1hdFN0cmluZ3x8IiVkJSJ9dmFyIGI9dGhpcy5fZGF0YUJvdW5kcztiLm1pbj0wO2lmKHRoaXMubmFtZT09InlheGlzInx8dGhpcy5uYW1lPT0ieTJheGlzIil7Yi5tYXg9MTAwO3RoaXMudGlja01vZGU9ImV2ZW4ifWVsc2V7aWYodGhpcy5uYW1lPT0ieGF4aXMiKXt0aGlzLnRpY2tNb2RlPSh0aGlzLnRpY2tNb2RlPT1udWxsKT8iYmFyIjp0aGlzLnRpY2tNb2RlO2Zvcih2YXIgZD0wO2Q8dGhpcy5fc2VyaWVzLmxlbmd0aDtkKyspe2IubWF4Kz10aGlzLl9zZXJpZXNbZF0uX3N1bXl9fWVsc2V7aWYodGhpcy5uYW1lPT0ieDJheGlzIil7dGhpcy50aWNrTW9kZT0odGhpcy50aWNrTW9kZT09bnVsbCk/ImV2ZW4iOnRoaXMudGlja01vZGU7Zm9yKHZhciBkPTA7ZDx0aGlzLl9zZXJpZXMubGVuZ3RoO2QrKyl7Yi5tYXgrPXRoaXMuX3Nlcmllc1tkXS5fc3VteX19fX19O2EuanFwbG90Lk1la2tvQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKGIsail7aWYodGhpcy5zaG93KXt0aGlzLnJlbmRlcmVyLmNyZWF0ZVRpY2tzLmNhbGwodGhpcyk7dmFyIGg9MDt2YXIgYzt2YXIgZz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0aGlzLl9lbGVtPWEoZyk7dGhpcy5fZWxlbS5hZGRDbGFzcygianFwbG90LWF4aXMganFwbG90LSIrdGhpcy5uYW1lKTt0aGlzLl9lbGVtLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIpO2c9bnVsbDtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe3RoaXMuX2VsZW0ud2lkdGgodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgpfWVsc2V7dGhpcy5fZWxlbS5oZWlnaHQodGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0KX10aGlzLmxhYmVsT3B0aW9ucy5heGlzPXRoaXMubmFtZTt0aGlzLl9sYWJlbD1uZXcgdGhpcy5sYWJlbFJlbmRlcmVyKHRoaXMubGFiZWxPcHRpb25zKTtpZih0aGlzLl9sYWJlbC5zaG93KXt0aGlzLl9lbGVtLmFwcGVuZCh0aGlzLl9sYWJlbC5kcmF3KGIpKX12YXIgZixlLGc7aWYodGhpcy5zaG93VGlja3Mpe2Y9dGhpcy5fdGlja3M7Zm9yKHZhciBkPTA7ZDxmLmxlbmd0aDtkKyspe2U9ZltkXTtpZihlLnNob3dMYWJlbCYmKCFlLmlzTWlub3JUaWNrfHx0aGlzLnNob3dNaW5vclRpY2tzKSl7dGhpcy5fZWxlbS5hcHBlbmQoZS5kcmF3KGIpKX19fWZvcihkPTA7ZDx0aGlzLmJhckxhYmVscy5sZW5ndGg7ZCsrKXt0aGlzLmJhckxhYmVsT3B0aW9ucy5heGlzPXRoaXMubmFtZTt0aGlzLmJhckxhYmVsT3B0aW9ucy5sYWJlbD10aGlzLmJhckxhYmVsc1tkXTt0aGlzLl9iYXJMYWJlbHMucHVzaChuZXcgdGhpcy5iYXJMYWJlbFJlbmRlcmVyKHRoaXMuYmFyTGFiZWxPcHRpb25zKSk7aWYodGhpcy50aWNrTW9kZSE9ImJhciIpe3RoaXMuX2JhckxhYmVsc1tkXS5zaG93PWZhbHNlfWlmKHRoaXMuX2JhckxhYmVsc1tkXS5zaG93KXt2YXIgZz10aGlzLl9iYXJMYWJlbHNbZF0uZHJhdyhiLGopO2cucmVtb3ZlQ2xhc3MoImpxcGxvdC0iK3RoaXMubmFtZSsiLWxhYmVsIik7Zy5hZGRDbGFzcygianFwbG90LSIrdGhpcy5uYW1lKyItdGljayIpO2cuYWRkQ2xhc3MoImpxcGxvdC1tZWtrby1iYXJMYWJlbCIpO2cuYXBwZW5kVG8odGhpcy5fZWxlbSk7Zz1udWxsfX19cmV0dXJuIHRoaXMuX2VsZW19O2EuanFwbG90Lk1la2tvQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMubWluPXRoaXMuX21pbjt0aGlzLm1heD10aGlzLl9tYXg7dGhpcy50aWNrSW50ZXJ2YWw9dGhpcy5fdGlja0ludGVydmFsO3RoaXMubnVtYmVyVGlja3M9dGhpcy5fbnVtYmVyVGlja3N9O2EuanFwbG90Lk1la2tvQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5zZXQ9ZnVuY3Rpb24oKXt2YXIgaz0wO3ZhciBkO3ZhciBjPTA7dmFyIGo9MDt2YXIgYj0odGhpcy5fbGFiZWw9PW51bGwpP2ZhbHNlOnRoaXMuX2xhYmVsLnNob3c7aWYodGhpcy5zaG93JiZ0aGlzLnNob3dUaWNrcyl7dmFyIGc9dGhpcy5fdGlja3M7Zm9yKHZhciBmPTA7ZjxnLmxlbmd0aDtmKyspe3ZhciBlPWdbZl07aWYoZS5zaG93TGFiZWwmJighZS5pc01pbm9yVGlja3x8dGhpcy5zaG93TWlub3JUaWNrcykpe2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7ZD1lLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpfWVsc2V7ZD1lLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSl9aWYoZD5rKXtrPWR9fX1pZihiKXtjPXRoaXMuX2xhYmVsLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSk7aj10aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKX1pZih0aGlzLm5hbWU9PSJ4YXhpcyIpe2s9aytqO3RoaXMuX2VsZW0uY3NzKHtoZWlnaHQ6aysicHgiLGxlZnQ6IjBweCIsYm90dG9tOiIwcHgifSl9ZWxzZXtpZih0aGlzLm5hbWU9PSJ4MmF4aXMiKXtrPWsrajt0aGlzLl9lbGVtLmNzcyh7aGVpZ2h0OmsrInB4IixsZWZ0OiIwcHgiLHRvcDoiMHB4In0pfWVsc2V7aWYodGhpcy5uYW1lPT0ieWF4aXMiKXtrPWsrYzt0aGlzLl9lbGVtLmNzcyh7d2lkdGg6aysicHgiLGxlZnQ6IjBweCIsdG9wOiIwcHgifSk7aWYoYiYmdGhpcy5fbGFiZWwuY29uc3RydWN0b3I9PWEuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoIndpZHRoIixjKyJweCIpfX1lbHNle2s9aytjO3RoaXMuX2VsZW0uY3NzKHt3aWR0aDprKyJweCIscmlnaHQ6IjBweCIsdG9wOiIwcHgifSk7aWYoYiYmdGhpcy5fbGFiZWwuY29uc3RydWN0b3I9PWEuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoIndpZHRoIixjKyJweCIpfX19fX19O2EuanFwbG90Lk1la2tvQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jcmVhdGVUaWNrcz1mdW5jdGlvbigpe3ZhciB6PXRoaXMuX3RpY2tzO3ZhciB3PXRoaXMudGlja3M7dmFyIEI9dGhpcy5uYW1lO3ZhciB5PXRoaXMuX2RhdGFCb3VuZHM7dmFyIHAseDt2YXIgbixyO3ZhciBkLGM7dmFyIGgsYixzLHE7aWYody5sZW5ndGgpe2ZvcihzPTA7czx3Lmxlbmd0aDtzKyspe3ZhciBlPXdbc107dmFyIGg9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2lmKGUuY29uc3RydWN0b3I9PUFycmF5KXtoLnZhbHVlPWVbMF07aC5sYWJlbD1lWzFdO2lmKCF0aGlzLnNob3dUaWNrcyl7aC5zaG93TGFiZWw9ZmFsc2U7aC5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe2guc2hvd01hcms9ZmFsc2V9fWguc2V0VGljayhlWzBdLHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChoKX1lbHNle2gudmFsdWU9ZTtpZighdGhpcy5zaG93VGlja3Mpe2guc2hvd0xhYmVsPWZhbHNlO2guc2hvd01hcms9ZmFsc2V9ZWxzZXtpZighdGhpcy5zaG93VGlja01hcmtzKXtoLnNob3dNYXJrPWZhbHNlfX1oLnNldFRpY2soZSx0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goaCl9fXRoaXMubnVtYmVyVGlja3M9dy5sZW5ndGg7dGhpcy5taW49dGhpcy5fdGlja3NbMF0udmFsdWU7dGhpcy5tYXg9dGhpcy5fdGlja3NbdGhpcy5udW1iZXJUaWNrcy0xXS52YWx1ZTt0aGlzLnRpY2tJbnRlcnZhbD0odGhpcy5tYXgtdGhpcy5taW4pLyh0aGlzLm51bWJlclRpY2tzLTEpfWVsc2V7aWYoQj09InhheGlzInx8Qj09IngyYXhpcyIpe3A9dGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGh9ZWxzZXtwPXRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodH1pZih0aGlzLm1pbiE9bnVsbCYmdGhpcy5tYXghPW51bGwmJnRoaXMubnVtYmVyVGlja3MhPW51bGwpe3RoaXMudGlja0ludGVydmFsPW51bGx9bj0odGhpcy5taW4hPW51bGwpP3RoaXMubWluOnkubWluO3I9KHRoaXMubWF4IT1udWxsKT90aGlzLm1heDp5Lm1heDtpZihuPT1yKXt2YXIgZz0wLjA1O2lmKG4+MCl7Zz1NYXRoLm1heChNYXRoLmxvZyhuKS9NYXRoLkxOMTAsMC4wNSl9bi09ZztyKz1nfXZhciBrPXItbjt2YXIgbSxvO3ZhciB2LGwsdTt2YXIgZj1bMyw1LDYsMTEsMjFdO2lmKHRoaXMubmFtZT09InlheGlzInx8dGhpcy5uYW1lPT0ieTJheGlzIil7dGhpcy5taW49MDt0aGlzLm1heD0xMDA7aWYoIXRoaXMubnVtYmVyVGlja3Mpe2lmKHRoaXMudGlja0ludGVydmFsKXt0aGlzLm51bWJlclRpY2tzPTMrTWF0aC5jZWlsKGsvdGhpcy50aWNrSW50ZXJ2YWwpfWVsc2V7dj0yK01hdGguY2VpbCgocC0odGhpcy50aWNrU3BhY2luZy0xKSkvdGhpcy50aWNrU3BhY2luZyk7Zm9yKHM9MDtzPGYubGVuZ3RoO3MrKyl7dT12L2Zbc107aWYodT09MSl7dGhpcy5udW1iZXJUaWNrcz1mW3NdO2JyZWFrfWVsc2V7aWYodT4xKXtsPXU7Y29udGludWV9ZWxzZXtpZih1PDEpe2lmKE1hdGguYWJzKGwtMSk8TWF0aC5hYnModS0xKSl7dGhpcy5udW1iZXJUaWNrcz1mW3MtMV07YnJlYWt9ZWxzZXt0aGlzLm51bWJlclRpY2tzPWZbc107YnJlYWt9fWVsc2V7aWYocz09Zi5sZW5ndGgtMSl7dGhpcy5udW1iZXJUaWNrcz1mW3NdfX19fX10aGlzLnRpY2tJbnRlcnZhbD1rLyh0aGlzLm51bWJlclRpY2tzLTEpfX1lbHNle3RoaXMudGlja0ludGVydmFsPWsvKHRoaXMubnVtYmVyVGlja3MtMSl9Zm9yKHZhciBzPTA7czx0aGlzLm51bWJlclRpY2tzO3MrKyl7Yj10aGlzLm1pbitzKnRoaXMudGlja0ludGVydmFsO2g9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2lmKCF0aGlzLnNob3dUaWNrcyl7aC5zaG93TGFiZWw9ZmFsc2U7aC5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe2guc2hvd01hcms9ZmFsc2V9fWguc2V0VGljayhiLHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChoKX19ZWxzZXtpZih0aGlzLnRpY2tNb2RlPT0iYmFyIil7dGhpcy5taW49MDt0aGlzLm51bWJlclRpY2tzPXRoaXMuX3Nlcmllcy5sZW5ndGgrMTtoPW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTtpZighdGhpcy5zaG93VGlja3Mpe2guc2hvd0xhYmVsPWZhbHNlO2guc2hvd01hcms9ZmFsc2V9ZWxzZXtpZighdGhpcy5zaG93VGlja01hcmtzKXtoLnNob3dNYXJrPWZhbHNlfX1oLnNldFRpY2soMCx0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goaCk7dj0wO2ZvcihzPTE7czx0aGlzLm51bWJlclRpY2tzO3MrKyl7dis9dGhpcy5fc2VyaWVzW3MtMV0uX3N1bXk7aD1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7aWYoIXRoaXMuc2hvd1RpY2tzKXtoLnNob3dMYWJlbD1mYWxzZTtoLnNob3dNYXJrPWZhbHNlfWVsc2V7aWYoIXRoaXMuc2hvd1RpY2tNYXJrcyl7aC5zaG93TWFyaz1mYWxzZX19aC5zZXRUaWNrKHYsdGhpcy5uYW1lKTt0aGlzLl90aWNrcy5wdXNoKGgpfXRoaXMubWF4PXRoaXMubWF4fHx2O2lmKHRoaXMubWF4PnYpe2g9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2lmKCF0aGlzLnNob3dUaWNrcyl7aC5zaG93TGFiZWw9ZmFsc2U7aC5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe2guc2hvd01hcms9ZmFsc2V9fWguc2V0VGljayh0aGlzLm1heCx0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goaCl9fWVsc2V7aWYodGhpcy50aWNrTW9kZT09ImV2ZW4iKXt0aGlzLm1pbj0wO3RoaXMubWF4PXRoaXMubWF4fHx5Lm1heDt2YXIgQT0yK01hdGguY2VpbCgocC0odGhpcy50aWNrU3BhY2luZy0xKSkvdGhpcy50aWNrU3BhY2luZyk7az10aGlzLm1heC10aGlzLm1pbjt0aGlzLm51bWJlclRpY2tzPUE7dGhpcy50aWNrSW50ZXJ2YWw9ay8odGhpcy5udW1iZXJUaWNrcy0xKTtmb3Iocz0wO3M8dGhpcy5udW1iZXJUaWNrcztzKyspe2I9dGhpcy5taW4rcyp0aGlzLnRpY2tJbnRlcnZhbDtoPW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTtpZighdGhpcy5zaG93VGlja3Mpe2guc2hvd0xhYmVsPWZhbHNlO2guc2hvd01hcms9ZmFsc2V9ZWxzZXtpZighdGhpcy5zaG93VGlja01hcmtzKXtoLnNob3dNYXJrPWZhbHNlfX1oLnNldFRpY2soYix0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goaCl9fX19fX07YS5qcXBsb3QuTWVra29BeGlzUmVuZGVyZXIucHJvdG90eXBlLnBhY2s9ZnVuY3Rpb24oZSxkKXt2YXIgQz10aGlzLl90aWNrczt2YXIgeD10aGlzLm1heDt2YXIgdj10aGlzLm1pbjt2YXIgbT1kLm1heDt2YXIgaj1kLm1pbjt2YXIgbz0odGhpcy5fbGFiZWw9PW51bGwpP2ZhbHNlOnRoaXMuX2xhYmVsLnNob3c7Zm9yKHZhciBzIGluIGUpe3RoaXMuX2VsZW0uY3NzKHMsZVtzXSl9dGhpcy5fb2Zmc2V0cz1kO3ZhciBmPW0tajt2YXIgZz14LXY7dGhpcy5wMnU9ZnVuY3Rpb24oYil7cmV0dXJuKGItaikqZy9mK3Z9O3RoaXMudTJwPWZ1bmN0aW9uKGIpe3JldHVybihiLXYpKmYvZytqfTtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe3RoaXMuc2VyaWVzX3UycD1mdW5jdGlvbihiKXtyZXR1cm4oYi12KSpmL2d9O3RoaXMuc2VyaWVzX3AydT1mdW5jdGlvbihiKXtyZXR1cm4gYipnL2Yrdn19ZWxzZXt0aGlzLnNlcmllc191MnA9ZnVuY3Rpb24oYil7cmV0dXJuKGIteCkqZi9nfTt0aGlzLnNlcmllc19wMnU9ZnVuY3Rpb24oYil7cmV0dXJuIGIqZy9mK3h9fWlmKHRoaXMuc2hvdyl7aWYodGhpcy5uYW1lPT0ieGF4aXMifHx0aGlzLm5hbWU9PSJ4MmF4aXMiKXtmb3IodmFyIHk9MDt5PEMubGVuZ3RoO3krKyl7dmFyIG49Q1t5XTtpZihuLnNob3cmJm4uc2hvd0xhYmVsKXt2YXIgYztpZihuLmNvbnN0cnVjdG9yPT1hLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyJiZuLmFuZ2xlKXt2YXIgQT0odGhpcy5uYW1lPT0ieGF4aXMiKT8xOi0xO3N3aXRjaChuLmxhYmVsUG9zaXRpb24pe2Nhc2UiYXV0byI6aWYoQSpuLmFuZ2xlPDApe2M9LW4uZ2V0V2lkdGgoKStuLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKC1uLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9ZWxzZXtjPS1uLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKG4uX3RleHRSZW5kZXJlci5hbmdsZSkvMn1icmVhaztjYXNlImVuZCI6Yz0tbi5nZXRXaWR0aCgpK24uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4oLW4uX3RleHRSZW5kZXJlci5hbmdsZSkvMjticmVhaztjYXNlInN0YXJ0IjpjPS1uLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKG4uX3RleHRSZW5kZXJlci5hbmdsZSkvMjticmVhaztjYXNlIm1pZGRsZSI6Yz0tbi5nZXRXaWR0aCgpLzIrbi5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbigtbi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yO2JyZWFrO2RlZmF1bHQ6Yz0tbi5nZXRXaWR0aCgpLzIrbi5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbigtbi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yO2JyZWFrfX1lbHNle2M9LW4uZ2V0V2lkdGgoKS8yfXZhciBEPXRoaXMudTJwKG4udmFsdWUpK2MrInB4IjtuLl9lbGVtLmNzcygibGVmdCIsRCk7bi5wYWNrKCl9fXZhciBrO2lmKG8pe2s9dGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoImxlZnQiLGorZi8yLWsvMisicHgiKTtpZih0aGlzLm5hbWU9PSJ4YXhpcyIpe3RoaXMuX2xhYmVsLl9lbGVtLmNzcygiYm90dG9tIiwiMHB4Iil9ZWxzZXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoInRvcCIsIjBweCIpfXRoaXMuX2xhYmVsLnBhY2soKX12YXIgQix1LHE7Zm9yKHZhciB5PTA7eTx0aGlzLmJhckxhYmVscy5sZW5ndGg7eSsrKXtCPXRoaXMuX2JhckxhYmVsc1t5XTtpZihCLnNob3cpe2s9Qi5nZXRXaWR0aCgpO3U9dGhpcy5fdGlja3NbeV0uZ2V0TGVmdCgpK3RoaXMuX3RpY2tzW3ldLmdldFdpZHRoKCk7cT10aGlzLl90aWNrc1t5KzFdLmdldExlZnQoKTtCLl9lbGVtLmNzcygibGVmdCIsKHErdS1rKS8yKyJweCIpO0IuX2VsZW0uY3NzKCJ0b3AiLHRoaXMuX3RpY2tzW3ldLl9lbGVtLmNzcygidG9wIikpO0IucGFjaygpfX19ZWxzZXtmb3IodmFyIHk9MDt5PEMubGVuZ3RoO3krKyl7dmFyIG49Q1t5XTtpZihuLnNob3cmJm4uc2hvd0xhYmVsKXt2YXIgYztpZihuLmNvbnN0cnVjdG9yPT1hLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyJiZuLmFuZ2xlKXt2YXIgQT0odGhpcy5uYW1lPT0ieWF4aXMiKT8xOi0xO3N3aXRjaChuLmxhYmVsUG9zaXRpb24pe2Nhc2UiYXV0byI6Y2FzZSJlbmQiOmlmKEEqbi5hbmdsZTwwKXtjPS1uLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguY29zKC1uLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9ZWxzZXtjPS1uLmdldEhlaWdodCgpK24uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5jb3Mobi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWJyZWFrO2Nhc2Uic3RhcnQiOmlmKG4uYW5nbGU+MCl7Yz0tbi5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLmNvcygtbi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWVsc2V7Yz0tbi5nZXRIZWlnaHQoKStuLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguY29zKG4uX3RleHRSZW5kZXJlci5hbmdsZSkvMn1icmVhaztjYXNlIm1pZGRsZSI6Yz0tbi5nZXRIZWlnaHQoKS8yO2JyZWFrO2RlZmF1bHQ6Yz0tbi5nZXRIZWlnaHQoKS8yO2JyZWFrfX1lbHNle2M9LW4uZ2V0SGVpZ2h0KCkvMn12YXIgRD10aGlzLnUycChuLnZhbHVlKStjKyJweCI7bi5fZWxlbS5jc3MoInRvcCIsRCk7bi5wYWNrKCl9fWlmKG8pe3ZhciB6PXRoaXMuX2xhYmVsLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpO3RoaXMuX2xhYmVsLl9lbGVtLmNzcygidG9wIixtLWYvMi16LzIrInB4Iik7aWYodGhpcy5uYW1lPT0ieWF4aXMiKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoImxlZnQiLCIwcHgiKX1lbHNle3RoaXMuX2xhYmVsLl9lbGVtLmNzcygicmlnaHQiLCIwcHgiKX10aGlzLl9sYWJlbC5wYWNrKCl9fX19fSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.mekkoRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuTWVra29SZW5kZXJlcgogICAgICogRHJhd3MgYSBNZWtrbyBzdHlsZSBjaGFydCB3aGljaCBzaG93cyAzIGRpbWVuc2lvbmFsIGRhdGEgb24gYSAyIGRpbWVuc2lvbmFsIGdyYXBoLgogICAgICogdGhlIDwkLmpxcGxvdC5NZWtrb0F4aXNSZW5kZXJlcj4gc2hvdWxkIGJlIHVzZWQgd2l0aCBtZWtrbyBjaGFydHMuICBUaGUgbWVra28gcmVuZGVyZXIKICAgICAqIG92ZXJyaWRlcyB0aGUgZGVmYXVsdCBsZWdlbmQgcmVuZGVyZXIgd2l0aCBpdHMgb3duICQuanFwbG90Lk1la2tvTGVnZW5kUmVuZGVyZXIKICAgICAqIHdoaWNoIGFsbG93cyBtb3JlIGZsZXhpYmlsaXR5IHRvIHNwZWNpZnkgbnVtYmVyIG9mIHJvd3MgYW5kIGNvbHVtbnMgaW4gdGhlIGxlZ2VuZC4KICAgICAqIAogICAgICogRGF0YSBpcyBzcGVjaWZpZWQgcGVyIGJhciBpbiB0aGUgY2hhcnQuICBZb3UgY2FuIHNwZWNpZnkgZGF0YSBhcyBhbiBhcnJheSBvZiB5IHZhbHVlcywgb3IgYXMgCiAgICAgKiBhbiBhcnJheSBvZiBbbGFiZWwsIHZhbHVlXSBwYWlycy4gIE5vdGUgdGhhdCBsYWJlbHMgYXJlIHVzZWQgb25seSBvbiB0aGUgZmlyc3Qgc2VyaWVzLiAgCiAgICAgKiBMYWJlbHMgb24gc3Vic2VxdWVudCBzZXJpZXMgYXJlIGlnbm9yZWQ6CiAgICAgKiAKICAgICAqID4gYmFyMSA9IFtbJ3NoaXJ0cycsIDhdLFsnaGF0cycsIDE0XSxbJ3Nob2VzJywgNl0sWydnbG92ZXMnLCAxNl0sWydkb2xscycsIDEyXV07CiAgICAgKiA+IGJhcjIgPSBbMTUsNiw5LDEzLDZdOwogICAgICogPiBiYXIzID0gW1snZ3J1bXB5Jyw0XSxbJ3NuZWV6eScsMl0sWydoYXBweScsN10sWydzbGVlcHknLDldLFsnZG9jJyw3XV07CiAgICAgKiAKICAgICAqIElmIHlvdSB3YW50IHRvIHBsYWNlIGxhYmVscyBmb3IgZWFjaCBiYXIgdW5kZXIgdGhlIGF4aXMsIHlvdSB1c2UgdGhlIGJhckxhYmVscyBvcHRpb24gb24gCiAgICAgKiB0aGUgYXhlcy4gIFRoZSBiYXIgbGFiZWxzIGNhbiBiZSBzdHlsZWQgd2l0aCB0aGUgIi5qcXBsb3QtbWVra28tYmFyTGFiZWwiIGNzcyBjbGFzcy4KICAgICAqIAogICAgICogPiBiYXJMYWJlbHMgPSBbJ01pY2tleSBNb3VzZScsICdEb25hbGQgRHVjaycsICdHb29meSddOwogICAgICogPiBheGVzOnt4YXhpczp7YmFyTGFiZWxzOmJhckxhYmVsc319CiAgICAgKiAKICAgICAqLwogICAgCiAgICAKICAgICQuanFwbG90Lk1la2tvUmVuZGVyZXIgPSBmdW5jdGlvbigpewogICAgICAgIHRoaXMuc2hhcGVSZW5kZXJlciA9IG5ldyAkLmpxcGxvdC5TaGFwZVJlbmRlcmVyKCk7CiAgICAgICAgLy8gcHJvcDogYm9yZGVyQ29sb3IKICAgICAgICAvLyBjb2xvciBvZiB0aGUgYm9yZGVycyBiZXR3ZWVuIGFyZWFzIG9uIHRoZSBjaGFydAogICAgICAgIHRoaXMuYm9yZGVyQ29sb3IgPSBudWxsOwogICAgICAgIC8vIHByb3A6IHNob3dCb3JkZXJzCiAgICAgICAgLy8gVHJ1ZSB0byBkcmF3IGJvcmRlcnMgbGluZXMgYmV0d2VlbiBhcmVhcyBvbiB0aGUgY2hhcnQuCiAgICAgICAgLy8gRmFsc2Ugd2lsbCBkcmF3IGJvcmRlcnMgbGluZXMgd2l0aCB0aGUgc2FtZSBjb2xvciBhcyB0aGUgYXJlYS4KICAgICAgICB0aGlzLnNob3dCb3JkZXJzID0gdHJ1ZTsKICAgIH07CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHNlcmllcy4KICAgICQuanFwbG90Lk1la2tvUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zLCBwbG90KSB7CiAgICAgICAgdGhpcy5maWxsID0gZmFsc2U7CiAgICAgICAgdGhpcy5maWxsUmVjdCA9IHRydWU7CiAgICAgICAgdGhpcy5zdHJva2VSZWN0ID0gdHJ1ZTsKICAgICAgICB0aGlzLnNoYWRvdyA9IGZhbHNlOwogICAgICAgIC8vIHdpZHRoIG9mIGJhciBvbiB4IGF4aXMuCiAgICAgICAgdGhpcy5feHdpZHRoID0gMDsKICAgICAgICB0aGlzLl94c3RhcnQgPSAwOwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMucmVuZGVyZXIsIG9wdGlvbnMpOwogICAgICAgIC8vIHNldCB0aGUgc2hhcGUgcmVuZGVyZXIgb3B0aW9ucwogICAgICAgIHZhciBvcHRzID0ge2xpbmVKb2luOidtaXRlcicsIGxpbmVDYXA6J2J1dHQnLCBpc2FyYzpmYWxzZSwgZmlsbFJlY3Q6dGhpcy5maWxsUmVjdCwgc3Ryb2tlUmVjdDp0aGlzLnN0cm9rZVJlY3R9OwogICAgICAgIHRoaXMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5pbml0KG9wdHMpOwogICAgICAgIHBsb3QuYXhlcy54MmF4aXMuX3Nlcmllcy5wdXNoKHRoaXMpOwogICAgICAgIHRoaXMuX3R5cGUgPSAnbWVra28nOwogICAgfTsKICAgIAogICAgLy8gTWV0aG9kOiBzZXRHcmlkRGF0YQogICAgLy8gY29udmVydHMgdGhlIHVzZXIgZGF0YSB2YWx1ZXMgdG8gZ3JpZCBjb29yZGluYXRlcyBhbmQgc3RvcmVzIHRoZW0KICAgIC8vIGluIHRoZSBncmlkRGF0YSBhcnJheS4gIFdpbGwgY29udmVydCB1c2VyIGRhdGEgaW50byBhcHByb3ByaWF0ZQogICAgLy8gcmVjdGFuZ2xlcy4KICAgIC8vIENhbGxlZCB3aXRoIHNjb3BlIG9mIGEgc2VyaWVzLgogICAgJC5qcXBsb3QuTWVra29SZW5kZXJlci5wcm90b3R5cGUuc2V0R3JpZERhdGEgPSBmdW5jdGlvbihwbG90KSB7CiAgICAgICAgLy8gcmVjYWxjdWxhdGUgdGhlIGdyaWQgZGF0YQogICAgICAgIHZhciB4cCA9IHRoaXMuX3hheGlzLnNlcmllc191MnA7CiAgICAgICAgdmFyIHlwID0gdGhpcy5feWF4aXMuc2VyaWVzX3UycDsKICAgICAgICB2YXIgZGF0YSA9IHRoaXMuX3Bsb3REYXRhOwogICAgICAgIHRoaXMuZ3JpZERhdGEgPSBbXTsKICAgICAgICAvLyBmaWd1cmUgb3V0IHdpZHRoIG9uIHggYXhpcy4KICAgICAgICAvLyB0aGlzLl94d2lkdGggPSB0aGlzLl9zdW15IC8gcGxvdC5fc3VteSAqIHRoaXMuY2FudmFzLmdldFdpZHRoKCk7CiAgICAgICAgdGhpcy5feHdpZHRoID0geHAodGhpcy5fc3VteSkgLSB4cCgwKTsKICAgICAgICBpZiAodGhpcy5pbmRleD4wKSB7CiAgICAgICAgICAgIHRoaXMuX3hzdGFydCA9IHBsb3Quc2VyaWVzW3RoaXMuaW5kZXgtMV0uX3hzdGFydCArIHBsb3Quc2VyaWVzW3RoaXMuaW5kZXgtMV0uX3h3aWR0aDsKICAgICAgICB9CiAgICAgICAgdmFyIHRvdGhlaWdodCA9IHRoaXMuY2FudmFzLmdldEhlaWdodCgpOwogICAgICAgIHZhciBzdW15ID0gMDsKICAgICAgICB2YXIgY3VyeTsKICAgICAgICB2YXIgY3VyaGVpZ2h0OwogICAgICAgIGZvciAodmFyIGk9MDsgaTxkYXRhLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIGlmIChkYXRhW2ldICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHN1bXkgKz0gZGF0YVtpXVsxXTsKICAgICAgICAgICAgICAgIGN1cnkgPSB0b3RoZWlnaHQgLSAoc3VteSAvIHRoaXMuX3N1bXkgKiB0b3RoZWlnaHQpOwogICAgICAgICAgICAgICAgY3VyaGVpZ2h0ID0gZGF0YVtpXVsxXSAvIHRoaXMuX3N1bXkgKiB0b3RoZWlnaHQ7CiAgICAgICAgICAgICAgICB0aGlzLmdyaWREYXRhLnB1c2goW3RoaXMuX3hzdGFydCwgY3VyeSwgdGhpcy5feHdpZHRoLCBjdXJoZWlnaHRdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CiAgICAKICAgIC8vIE1ldGhvZDogbWFrZUdyaWREYXRhCiAgICAvLyBjb252ZXJ0cyBhbnkgYXJiaXRyYXJ5IGRhdGEgdmFsdWVzIHRvIGdyaWQgY29vcmRpbmF0ZXMgYW5kCiAgICAvLyByZXR1cm5zIHRoZW0uICBUaGlzIG1ldGhvZCBleGlzdHMgc28gdGhhdCBwbHVnaW5zIGNhbiB1c2UgYSBzZXJpZXMnCiAgICAvLyBsaW5lcmVuZGVyZXIgdG8gZ2VuZXJhdGUgZ3JpZCBkYXRhIHBvaW50cyB3aXRob3V0IG92ZXJ3cml0aW5nIHRoZQogICAgLy8gZ3JpZCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGF0IHNlcmllcy4KICAgIC8vIENhbGxlZCB3aXRoIHNjb3BlIG9mIGEgc2VyaWVzLgogICAgJC5qcXBsb3QuTWVra29SZW5kZXJlci5wcm90b3R5cGUubWFrZUdyaWREYXRhID0gZnVuY3Rpb24oZGF0YSwgcGxvdCkgewogICAgICAgIC8vIHJlY2FsY3VsYXRlIHRoZSBncmlkIGRhdGEKICAgICAgICAvLyBmaWd1cmUgb3V0IHdpZHRoIG9uIHggYXhpcy4KICAgICAgICB2YXIgeHAgPSB0aGlzLl94YXhpcy5zZXJpZXNfdTJwOwogICAgICAgIHZhciB0b3RoZWlnaHQgPSB0aGlzLmNhbnZhcy5nZXRIZWlnaHQoKTsKICAgICAgICB2YXIgc3VteSA9IDA7CiAgICAgICAgdmFyIGN1cnk7CiAgICAgICAgdmFyIGN1cmhlaWdodDsKICAgICAgICB2YXIgZ2QgPSBbXTsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8ZGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICBpZiAoZGF0YVtpXSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBzdW15ICs9IGRhdGFbaV1bMV07CiAgICAgICAgICAgICAgICBjdXJ5ID0gdG90aGVpZ2h0IC0gKHN1bXkgLyB0aGlzLl9zdW15ICogdG90aGVpZ2h0KTsKICAgICAgICAgICAgICAgIGN1cmhlaWdodCA9IGRhdGFbaV1bMV0gLyB0aGlzLl9zdW15ICogdG90aGVpZ2h0OwogICAgICAgICAgICAgICAgZ2QucHVzaChbdGhpcy5feHN0YXJ0LCBjdXJ5LCB0aGlzLl94d2lkdGgsIGN1cmhlaWdodF0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiBnZDsKICAgIH07CiAgICAKCiAgICAvLyBjYWxsZWQgd2l0aGluIHNjb3BlIG9mIHNlcmllcy4KICAgICQuanFwbG90Lk1la2tvUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbihjdHgsIGdkLCBvcHRpb25zKSB7CiAgICAgICAgdmFyIGk7CiAgICAgICAgdmFyIG9wdHMgPSAob3B0aW9ucyAhPSB1bmRlZmluZWQpID8gb3B0aW9ucyA6IHt9OwogICAgICAgIHZhciBzaG93TGluZSA9IChvcHRzLnNob3dMaW5lICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNob3dMaW5lIDogdGhpcy5zaG93TGluZTsKICAgICAgICB2YXIgY29sb3JHZW5lcmF0b3IgPSBuZXcgJC5qcXBsb3QuQ29sb3JHZW5lcmF0b3IodGhpcy5zZXJpZXNDb2xvcnMpOwogICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgaWYgKGdkLmxlbmd0aCkgewogICAgICAgICAgICBpZiAoc2hvd0xpbmUpIHsKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPGdkLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgICAgICAgICBvcHRzLmZpbGxTdHlsZSA9IGNvbG9yR2VuZXJhdG9yLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZW5kZXJlci5zaG93Qm9yZGVycykgewogICAgICAgICAgICAgICAgICAgICAgICBvcHRzLnN0cm9rZVN0eWxlID0gdGhpcy5yZW5kZXJlci5ib3JkZXJDb2xvcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuc3Ryb2tlU3R5bGUgPSBvcHRzLmZpbGxTdHlsZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmRyYXcoY3R4LCBnZFtpXSwgb3B0cyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgIH07ICAKICAgIAogICAgJC5qcXBsb3QuTWVra29SZW5kZXJlci5wcm90b3R5cGUuZHJhd1NoYWRvdyA9IGZ1bmN0aW9uKGN0eCwgZ2QsIG9wdGlvbnMpIHsKICAgICAgICAvLyBUaGlzIGlzIGEgbm8tb3AsIG5vIHNoYWRvd3Mgb24gbWVra28gY2hhcnRzLgogICAgfTsKICAgIAogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuTWVra29MZWdlbmRSZW5kZXJlcgogICAgICogTGVnZW5kIHJlbmRlcmVyIHVzZWQgYnkgbWVra28gY2hhcnRzIHdpdGggb3B0aW9ucyBmb3IgCiAgICAgKiBjb250cm9sbGluZyBudW1iZXIgb3Igcm93cyBhbmQgY29sdW1ucyBhcyB3ZWxsIGFzIHBsYWNlbWVudAogICAgICogb3V0c2lkZSBvZiBwbG90IGFyZWEuCiAgICAgKiAKICAgICAqLwogICAgJC5qcXBsb3QuTWVra29MZWdlbmRSZW5kZXJlciA9IGZ1bmN0aW9uKCl7CiAgICAgICAgLy8KICAgIH07CiAgICAKICAgICQuanFwbG90Lk1la2tvTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgLy8gcHJvcDogbnVtYmVyUm93cwogICAgICAgIC8vIE1heGltdW0gbnVtYmVyIG9mIHJvd3MgaW4gdGhlIGxlZ2VuZC4gIDAgb3IgbnVsbCBmb3IgdW5saW1pdGVkLgogICAgICAgIHRoaXMubnVtYmVyUm93cyA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogbnVtYmVyQ29sdW1ucwogICAgICAgIC8vIE1heGltdW0gbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGxlZ2VuZC4gIDAgb3IgbnVsbCBmb3IgdW5saW1pdGVkLgogICAgICAgIHRoaXMubnVtYmVyQ29sdW1ucyA9IG51bGw7CiAgICAgICAgLy8gdGhpcyB3aWxsIG92ZXJyaWRlIHRoZSBwbGFjZW1lbnQgb3B0aW9uIG9uIHRoZSBMZWdlbmQgb2JqZWN0CiAgICAgICAgdGhpcy5wbGFjZW1lbnQgPSAib3V0c2lkZSI7CiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBsZWdlbmQKICAgICQuanFwbG90Lk1la2tvTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgbGVnZW5kID0gdGhpczsKICAgICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAgICAgICAgIHZhciBzZXJpZXMgPSB0aGlzLl9zZXJpZXM7CiAgICAgICAgICAgIHZhciBzcyA9ICdwb3NpdGlvbjphYnNvbHV0ZTsnOwogICAgICAgICAgICBzcyArPSAodGhpcy5iYWNrZ3JvdW5kKSA/ICdiYWNrZ3JvdW5kOicrdGhpcy5iYWNrZ3JvdW5kKyc7JyA6ICcnOwogICAgICAgICAgICBzcyArPSAodGhpcy5ib3JkZXIpID8gJ2JvcmRlcjonK3RoaXMuYm9yZGVyKyc7JyA6ICcnOwogICAgICAgICAgICBzcyArPSAodGhpcy5mb250U2l6ZSkgPyAnZm9udC1zaXplOicrdGhpcy5mb250U2l6ZSsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMuZm9udEZhbWlseSkgPyAnZm9udC1mYW1pbHk6Jyt0aGlzLmZvbnRGYW1pbHkrJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLnRleHRDb2xvcikgPyAnY29sb3I6Jyt0aGlzLnRleHRDb2xvcisnOycgOiAnJzsKICAgICAgICAgICAgdGhpcy5fZWxlbSA9ICQoJzx0YWJsZSBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9Iicrc3MrJyI+PC90YWJsZT4nKTsKICAgICAgICAgICAgLy8gTWVra28gY2hhcnRzICBsZWdlbmRzIGRvbid0IGdvIGJ5IG51bWJlciBvZiBzZXJpZXMsIGJ1dCBieSBudW1iZXIgb2YgZGF0YSBwb2ludHMKICAgICAgICAgICAgLy8gaW4gdGhlIHNlcmllcy4gIFJlZmFjdG9yIHRoaW5ncyBoZXJlIGZvciB0aGF0LgogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIHBhZCA9IGZhbHNlLCAKICAgICAgICAgICAgICAgIHJldmVyc2UgPSB0cnVlLCAgICAvLyBtZWtrbyBjaGFydHMgYXJlIGFsd2F5cyBzdGFja2VkLCBzbyByZXZlcnNlCiAgICAgICAgICAgICAgICBuciwgbmM7CiAgICAgICAgICAgIHZhciBzID0gc2VyaWVzWzBdOwogICAgICAgICAgICB2YXIgY29sb3JHZW5lcmF0b3IgPSBuZXcgJC5qcXBsb3QuQ29sb3JHZW5lcmF0b3Iocy5zZXJpZXNDb2xvcnMpOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHMuc2hvdykgewogICAgICAgICAgICAgICAgdmFyIHBkID0gcy5kYXRhOwogICAgICAgICAgICAgICAgaWYgKHRoaXMubnVtYmVyUm93cykgewogICAgICAgICAgICAgICAgICAgIG5yID0gdGhpcy5udW1iZXJSb3dzOwogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5udW1iZXJDb2x1bW5zKXsKICAgICAgICAgICAgICAgICAgICAgICAgbmMgPSBNYXRoLmNlaWwocGQubGVuZ3RoL25yKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgbmMgPSB0aGlzLm51bWJlckNvbHVtbnM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5udW1iZXJDb2x1bW5zKSB7CiAgICAgICAgICAgICAgICAgICAgbmMgPSB0aGlzLm51bWJlckNvbHVtbnM7CiAgICAgICAgICAgICAgICAgICAgbnIgPSBNYXRoLmNlaWwocGQubGVuZ3RoL3RoaXMubnVtYmVyQ29sdW1ucyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBuciA9IHBkLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBuYyA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBpLCBqLCB0ciwgdGQxLCB0ZDIsIGx0LCBycywgY29sb3I7CiAgICAgICAgICAgICAgICB2YXIgaWR4ID0gMDsgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPG5yOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAocmV2ZXJzZSl7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyID0gJCgnPHRyIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIj48L3RyPicpLnByZXBlbmRUbyh0aGlzLl9lbGVtKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgdHIgPSAkKCc8dHIgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiPjwvdHI+JykuYXBwZW5kVG8odGhpcy5fZWxlbSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZvciAoaj0wOyBqPG5jOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA8IHBkLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbHQgPSB0aGlzLmxhYmVsc1tpZHhdIHx8IHBkW2lkeF1bMF0udG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gY29sb3JHZW5lcmF0b3IubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXZlcnNlKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaT4wKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSBuciAtMSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzID0gKHBhZCkgPyB0aGlzLnJvd1NwYWNpbmcgOiAnMCc7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMSA9ICQoJzx0ZCBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3BhZGRpbmctdG9wOicrcnMrJzsiPicrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXY+PGRpdiBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2giIHN0eWxlPSJib3JkZXItY29sb3I6Jytjb2xvcisnOyI+PC9kaXY+JysKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPC9kaXY+PC90ZD4nKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMiA9ICQoJzx0ZCBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9InBhZGRpbmctdG9wOicrcnMrJzsiPjwvdGQ+Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5lc2NhcGVIdG1sKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDIudGV4dChsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDIuaHRtbChsdCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV2ZXJzZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5wcmVwZW5kVG8odHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMS5wcmVwZW5kVG8odHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxLmFwcGVuZFRvKHRyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDIuYXBwZW5kVG8odHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZHgrKzsKICAgICAgICAgICAgICAgICAgICB9ICAgCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgdHIgPSBudWxsOwogICAgICAgICAgICAgICAgdGQxID0gbnVsbDsKICAgICAgICAgICAgICAgIHRkMiA9IG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW07CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5NZWtrb0xlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5wYWNrID0gZnVuY3Rpb24ob2Zmc2V0cykgewogICAgICAgIGlmICh0aGlzLnNob3cpIHsKICAgICAgICAgICAgLy8gZmFrZSBhIGdyaWQgZm9yIHBvc2l0aW9uaW5nCiAgICAgICAgICAgIHZhciBncmlkID0ge190b3A6b2Zmc2V0cy50b3AsIF9sZWZ0Om9mZnNldHMubGVmdCwgX3JpZ2h0Om9mZnNldHMucmlnaHQsIF9ib3R0b206dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0IC0gb2Zmc2V0cy5ib3R0b219OyAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLnBsYWNlbWVudCA9PSAnaW5zaWRlR3JpZCcpIHsKICAgICAgICAgICAgICAgIHN3aXRjaCAodGhpcy5sb2NhdGlvbikgewogICAgICAgICAgICAgICAgICAgIGNhc2UgJ253JzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBncmlkLl9sZWZ0ICsgdGhpcy54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQuX3RvcCArIHRoaXMueW9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoJ2xlZnQnLCBhKTsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoJ3RvcCcsIGIpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICduJzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSAob2Zmc2V0cy5sZWZ0ICsgKHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoIC0gb2Zmc2V0cy5yaWdodCkpLzIgLSB0aGlzLmdldFdpZHRoKCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBncmlkLl90b3AgKyB0aGlzLnlvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCdsZWZ0JywgYSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCd0b3AnLCBiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbmUnOgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG9mZnNldHMucmlnaHQgKyB0aGlzLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gZ3JpZC5fdG9wICsgdGhpcy55b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6YSwgdG9wOmJ9KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnZSc6CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gb2Zmc2V0cy5yaWdodCArIHRoaXMueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSAob2Zmc2V0cy50b3AgKyAodGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0IC0gb2Zmc2V0cy5ib3R0b20pKS8yIC0gdGhpcy5nZXRIZWlnaHQoKS8yOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6YSwgdG9wOmJ9KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2UnOgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IG9mZnNldHMucmlnaHQgKyB0aGlzLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gb2Zmc2V0cy5ib3R0b20gKyB0aGlzLnlvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtyaWdodDphLCBib3R0b206Yn0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSAob2Zmc2V0cy5sZWZ0ICsgKHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoIC0gb2Zmc2V0cy5yaWdodCkpLzIgLSB0aGlzLmdldFdpZHRoKCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBvZmZzZXRzLmJvdHRvbSArIHRoaXMueW9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe2xlZnQ6YSwgYm90dG9tOmJ9KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc3cnOgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGdyaWQuX2xlZnQgKyB0aGlzLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gb2Zmc2V0cy5ib3R0b20gKyB0aGlzLnlvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtsZWZ0OmEsIGJvdHRvbTpifSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3cnOgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGdyaWQuX2xlZnQgKyB0aGlzLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gKG9mZnNldHMudG9wICsgKHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIG9mZnNldHMuYm90dG9tKSkvMiAtIHRoaXMuZ2V0SGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe2xlZnQ6YSwgdG9wOmJ9KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogIC8vIHNhbWUgYXMgJ3NlJwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IGdyaWQuX3JpZ2h0IC0gdGhpcy54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQuX2JvdHRvbSArIHRoaXMueW9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe3JpZ2h0OmEsIGJvdHRvbTpifSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKHRoaXMubG9jYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICBjYXNlICdudyc6CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gdGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGggLSBncmlkLl9sZWZ0ICsgdGhpcy54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYiA9IGdyaWQuX3RvcCArIHRoaXMueW9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3MoJ3JpZ2h0JywgYSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCd0b3AnLCBiKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnbic6CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gKG9mZnNldHMubGVmdCArICh0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIG9mZnNldHMucmlnaHQpKS8yIC0gdGhpcy5nZXRXaWR0aCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0IC0gZ3JpZC5fdG9wICsgdGhpcy55b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcygnbGVmdCcsIGEpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcygnYm90dG9tJywgYik7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ25lJzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIG9mZnNldHMucmlnaHQgKyB0aGlzLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gZ3JpZC5fdG9wICsgdGhpcy55b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7bGVmdDphLCB0b3A6Yn0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICdlJzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIG9mZnNldHMucmlnaHQgKyB0aGlzLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gKG9mZnNldHMudG9wICsgKHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIG9mZnNldHMuYm90dG9tKSkvMiAtIHRoaXMuZ2V0SGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe2xlZnQ6YSwgdG9wOmJ9KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAnc2UnOgogICAgICAgICAgICAgICAgICAgICAgICB2YXIgYSA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoIC0gb2Zmc2V0cy5yaWdodCArIHRoaXMueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBvZmZzZXRzLmJvdHRvbSArIHRoaXMueW9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe2xlZnQ6YSwgYm90dG9tOmJ9KTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBhID0gKG9mZnNldHMubGVmdCArICh0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIG9mZnNldHMucmlnaHQpKS8yIC0gdGhpcy5nZXRXaWR0aCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0IC0gb2Zmc2V0cy5ib3R0b20gKyB0aGlzLnlvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtsZWZ0OmEsIHRvcDpifSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N3JzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIGdyaWQuX2xlZnQgKyB0aGlzLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gb2Zmc2V0cy5ib3R0b20gKyB0aGlzLnlvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtyaWdodDphLCBib3R0b206Yn0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICd3JzoKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCAtIGdyaWQuX2xlZnQgKyB0aGlzLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBiID0gKG9mZnNldHMudG9wICsgKHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCAtIG9mZnNldHMuYm90dG9tKSkvMiAtIHRoaXMuZ2V0SGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moe3JpZ2h0OmEsIHRvcDpifSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6ICAvLyBzYW1lIGFzICdzZScKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGEgPSBncmlkLl9yaWdodCAtIHRoaXMueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGIgPSBncmlkLl9ib3R0b20gKyB0aGlzLnlvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHtyaWdodDphLCBib3R0b206Yn0pOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0gCiAgICB9OwogICAgCiAgICAvLyBzZXR1cCBkZWZhdWx0IHJlbmRlcmVycyBmb3IgYXhlcyBhbmQgbGVnZW5kIHNvIHVzZXIgZG9lc24ndCBoYXZlIHRvCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBwbG90CiAgICBmdW5jdGlvbiBwcmVJbml0KHRhcmdldCwgZGF0YSwgb3B0aW9ucykgewogICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogICAgICAgIG9wdGlvbnMuYXhlc0RlZmF1bHRzID0gb3B0aW9ucy5heGVzRGVmYXVsdHMgfHwge307CiAgICAgICAgb3B0aW9ucy5sZWdlbmQgPSBvcHRpb25zLmxlZ2VuZCB8fCB7fTsKICAgICAgICBvcHRpb25zLnNlcmllc0RlZmF1bHRzID0gb3B0aW9ucy5zZXJpZXNEZWZhdWx0cyB8fCB7fTsKICAgICAgICB2YXIgc2V0b3B0cyA9IGZhbHNlOwogICAgICAgIGlmIChvcHRpb25zLnNlcmllc0RlZmF1bHRzLnJlbmRlcmVyID09ICQuanFwbG90Lk1la2tvUmVuZGVyZXIpIHsKICAgICAgICAgICAgc2V0b3B0cyA9IHRydWU7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG9wdGlvbnMuc2VyaWVzKSB7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaSA8IG9wdGlvbnMuc2VyaWVzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAob3B0aW9ucy5zZXJpZXNbaV0ucmVuZGVyZXIgPT0gJC5qcXBsb3QuTWVra29SZW5kZXJlcikgewogICAgICAgICAgICAgICAgICAgIHNldG9wdHMgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChzZXRvcHRzKSB7CiAgICAgICAgICAgIG9wdGlvbnMuYXhlc0RlZmF1bHRzLnJlbmRlcmVyID0gJC5qcXBsb3QuTWVra29BeGlzUmVuZGVyZXI7CiAgICAgICAgICAgIG9wdGlvbnMubGVnZW5kLnJlbmRlcmVyID0gJC5qcXBsb3QuTWVra29MZWdlbmRSZW5kZXJlcjsKICAgICAgICAgICAgb3B0aW9ucy5sZWdlbmQucHJlRHJhdyA9IHRydWU7CiAgICAgICAgfQogICAgfQogICAgCiAgICAkLmpxcGxvdC5wcmVJbml0SG9va3MucHVzaChwcmVJbml0KTsKICAgIAp9KShqUXVlcnkpOyAgICAK]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.mekkoRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGIpe2IuanFwbG90Lk1la2tvUmVuZGVyZXI9ZnVuY3Rpb24oKXt0aGlzLnNoYXBlUmVuZGVyZXI9bmV3IGIuanFwbG90LlNoYXBlUmVuZGVyZXIoKTt0aGlzLmJvcmRlckNvbG9yPW51bGw7dGhpcy5zaG93Qm9yZGVycz10cnVlfTtiLmpxcGxvdC5NZWtrb1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGMsZSl7dGhpcy5maWxsPWZhbHNlO3RoaXMuZmlsbFJlY3Q9dHJ1ZTt0aGlzLnN0cm9rZVJlY3Q9dHJ1ZTt0aGlzLnNoYWRvdz1mYWxzZTt0aGlzLl94d2lkdGg9MDt0aGlzLl94c3RhcnQ9MDtiLmV4dGVuZCh0cnVlLHRoaXMucmVuZGVyZXIsYyk7dmFyIGQ9e2xpbmVKb2luOiJtaXRlciIsbGluZUNhcDoiYnV0dCIsaXNhcmM6ZmFsc2UsZmlsbFJlY3Q6dGhpcy5maWxsUmVjdCxzdHJva2VSZWN0OnRoaXMuc3Ryb2tlUmVjdH07dGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmluaXQoZCk7ZS5heGVzLngyYXhpcy5fc2VyaWVzLnB1c2godGhpcyk7dGhpcy5fdHlwZT0ibWVra28ifTtiLmpxcGxvdC5NZWtrb1JlbmRlcmVyLnByb3RvdHlwZS5zZXRHcmlkRGF0YT1mdW5jdGlvbihoKXt2YXIgZT10aGlzLl94YXhpcy5zZXJpZXNfdTJwO3ZhciBjPXRoaXMuX3lheGlzLnNlcmllc191MnA7dmFyIGc9dGhpcy5fcGxvdERhdGE7dGhpcy5ncmlkRGF0YT1bXTt0aGlzLl94d2lkdGg9ZSh0aGlzLl9zdW15KS1lKDApO2lmKHRoaXMuaW5kZXg+MCl7dGhpcy5feHN0YXJ0PWguc2VyaWVzW3RoaXMuaW5kZXgtMV0uX3hzdGFydCtoLnNlcmllc1t0aGlzLmluZGV4LTFdLl94d2lkdGh9dmFyIGw9dGhpcy5jYW52YXMuZ2V0SGVpZ2h0KCk7dmFyIGQ9MDt2YXIgazt2YXIgajtmb3IodmFyIGY9MDtmPGcubGVuZ3RoO2YrKyl7aWYoZ1tmXSE9bnVsbCl7ZCs9Z1tmXVsxXTtrPWwtKGQvdGhpcy5fc3VteSpsKTtqPWdbZl1bMV0vdGhpcy5fc3VteSpsO3RoaXMuZ3JpZERhdGEucHVzaChbdGhpcy5feHN0YXJ0LGssdGhpcy5feHdpZHRoLGpdKX19fTtiLmpxcGxvdC5NZWtrb1JlbmRlcmVyLnByb3RvdHlwZS5tYWtlR3JpZERhdGE9ZnVuY3Rpb24oZixnKXt2YXIgZD10aGlzLl94YXhpcy5zZXJpZXNfdTJwO3ZhciBsPXRoaXMuY2FudmFzLmdldEhlaWdodCgpO3ZhciBjPTA7dmFyIGo7dmFyIGg7dmFyIGs9W107Zm9yKHZhciBlPTA7ZTxmLmxlbmd0aDtlKyspe2lmKGZbZV0hPW51bGwpe2MrPWZbZV1bMV07aj1sLShjL3RoaXMuX3N1bXkqbCk7aD1mW2VdWzFdL3RoaXMuX3N1bXkqbDtrLnB1c2goW3RoaXMuX3hzdGFydCxqLHRoaXMuX3h3aWR0aCxoXSl9fXJldHVybiBrfTtiLmpxcGxvdC5NZWtrb1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKGMsaCxkKXt2YXIgZTt2YXIgZz0oZCE9dW5kZWZpbmVkKT9kOnt9O3ZhciBmPShnLnNob3dMaW5lIT11bmRlZmluZWQpP2cuc2hvd0xpbmU6dGhpcy5zaG93TGluZTt2YXIgaj1uZXcgYi5qcXBsb3QuQ29sb3JHZW5lcmF0b3IodGhpcy5zZXJpZXNDb2xvcnMpO2Muc2F2ZSgpO2lmKGgubGVuZ3RoKXtpZihmKXtmb3IoZT0wO2U8aC5sZW5ndGg7ZSsrKXtnLmZpbGxTdHlsZT1qLm5leHQoKTtpZih0aGlzLnJlbmRlcmVyLnNob3dCb3JkZXJzKXtnLnN0cm9rZVN0eWxlPXRoaXMucmVuZGVyZXIuYm9yZGVyQ29sb3J9ZWxzZXtnLnN0cm9rZVN0eWxlPWcuZmlsbFN0eWxlfXRoaXMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5kcmF3KGMsaFtlXSxnKX19fWMucmVzdG9yZSgpfTtiLmpxcGxvdC5NZWtrb1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3U2hhZG93PWZ1bmN0aW9uKGMsZSxkKXt9O2IuanFwbG90Lk1la2tvTGVnZW5kUmVuZGVyZXI9ZnVuY3Rpb24oKXt9O2IuanFwbG90Lk1la2tvTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oYyl7dGhpcy5udW1iZXJSb3dzPW51bGw7dGhpcy5udW1iZXJDb2x1bW5zPW51bGw7dGhpcy5wbGFjZW1lbnQ9Im91dHNpZGUiO2IuZXh0ZW5kKHRydWUsdGhpcyxjKX07Yi5qcXBsb3QuTWVra29MZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbigpe3ZhciBmPXRoaXM7aWYodGhpcy5zaG93KXt2YXIgbz10aGlzLl9zZXJpZXM7dmFyIHI9InBvc2l0aW9uOmFic29sdXRlOyI7cis9KHRoaXMuYmFja2dyb3VuZCk/ImJhY2tncm91bmQ6Iit0aGlzLmJhY2tncm91bmQrIjsiOiIiO3IrPSh0aGlzLmJvcmRlcik/ImJvcmRlcjoiK3RoaXMuYm9yZGVyKyI7IjoiIjtyKz0odGhpcy5mb250U2l6ZSk/ImZvbnQtc2l6ZToiK3RoaXMuZm9udFNpemUrIjsiOiIiO3IrPSh0aGlzLmZvbnRGYW1pbHkpPyJmb250LWZhbWlseToiK3RoaXMuZm9udEZhbWlseSsiOyI6IiI7cis9KHRoaXMudGV4dENvbG9yKT8iY29sb3I6Iit0aGlzLnRleHRDb2xvcisiOyI6IiI7dGhpcy5fZWxlbT1iKCc8dGFibGUgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSInK3IrJyI+PC90YWJsZT4nKTt2YXIgdz1mYWxzZSxuPXRydWUsYyxsO3ZhciBwPW9bMF07dmFyIGQ9bmV3IGIuanFwbG90LkNvbG9yR2VuZXJhdG9yKHAuc2VyaWVzQ29sb3JzKTtpZihwLnNob3cpe3ZhciB4PXAuZGF0YTtpZih0aGlzLm51bWJlclJvd3Mpe2M9dGhpcy5udW1iZXJSb3dzO2lmKCF0aGlzLm51bWJlckNvbHVtbnMpe2w9TWF0aC5jZWlsKHgubGVuZ3RoL2MpfWVsc2V7bD10aGlzLm51bWJlckNvbHVtbnN9fWVsc2V7aWYodGhpcy5udW1iZXJDb2x1bW5zKXtsPXRoaXMubnVtYmVyQ29sdW1ucztjPU1hdGguY2VpbCh4Lmxlbmd0aC90aGlzLm51bWJlckNvbHVtbnMpfWVsc2V7Yz14Lmxlbmd0aDtsPTF9fXZhciB2LHUsZSxoLGcsayxtLHQ7dmFyIHE9MDtmb3Iodj0wO3Y8Yzt2Kyspe2lmKG4pe2U9YignPHRyIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIj48L3RyPicpLnByZXBlbmRUbyh0aGlzLl9lbGVtKX1lbHNle2U9YignPHRyIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIj48L3RyPicpLmFwcGVuZFRvKHRoaXMuX2VsZW0pfWZvcih1PTA7dTxsO3UrKyl7aWYocTx4Lmxlbmd0aCl7az10aGlzLmxhYmVsc1txXXx8eFtxXVswXS50b1N0cmluZygpO3Q9ZC5uZXh0KCk7aWYoIW4pe2lmKHY+MCl7dz10cnVlfWVsc2V7dz1mYWxzZX19ZWxzZXtpZih2PT1jLTEpe3c9ZmFsc2V9ZWxzZXt3PXRydWV9fW09KHcpP3RoaXMucm93U3BhY2luZzoiMCI7aD1iKCc8dGQgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nLXRvcDonK20rJzsiPjxkaXY+PGRpdiBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2giIHN0eWxlPSJib3JkZXItY29sb3I6Jyt0Kyc7Ij48L2Rpdj48L2Rpdj48L3RkPicpO2c9YignPHRkIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIiBzdHlsZT0icGFkZGluZy10b3A6JyttKyc7Ij48L3RkPicpO2lmKHRoaXMuZXNjYXBlSHRtbCl7Zy50ZXh0KGspfWVsc2V7Zy5odG1sKGspfWlmKG4pe2cucHJlcGVuZFRvKGUpO2gucHJlcGVuZFRvKGUpfWVsc2V7aC5hcHBlbmRUbyhlKTtnLmFwcGVuZFRvKGUpfXc9dHJ1ZX1xKyt9fWU9bnVsbDtoPW51bGw7Zz1udWxsfX1yZXR1cm4gdGhpcy5fZWxlbX07Yi5qcXBsb3QuTWVra29MZWdlbmRSZW5kZXJlci5wcm90b3R5cGUucGFjaz1mdW5jdGlvbihmKXtpZih0aGlzLnNob3cpe3ZhciBlPXtfdG9wOmYudG9wLF9sZWZ0OmYubGVmdCxfcmlnaHQ6Zi5yaWdodCxfYm90dG9tOnRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodC1mLmJvdHRvbX07aWYodGhpcy5wbGFjZW1lbnQ9PSJpbnNpZGVHcmlkIil7c3dpdGNoKHRoaXMubG9jYXRpb24pe2Nhc2UibnciOnZhciBkPWUuX2xlZnQrdGhpcy54b2Zmc2V0O3ZhciBjPWUuX3RvcCt0aGlzLnlvZmZzZXQ7dGhpcy5fZWxlbS5jc3MoImxlZnQiLGQpO3RoaXMuX2VsZW0uY3NzKCJ0b3AiLGMpO2JyZWFrO2Nhc2UibiI6dmFyIGQ9KGYubGVmdCsodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgtZi5yaWdodCkpLzItdGhpcy5nZXRXaWR0aCgpLzI7dmFyIGM9ZS5fdG9wK3RoaXMueW9mZnNldDt0aGlzLl9lbGVtLmNzcygibGVmdCIsZCk7dGhpcy5fZWxlbS5jc3MoInRvcCIsYyk7YnJlYWs7Y2FzZSJuZSI6dmFyIGQ9Zi5yaWdodCt0aGlzLnhvZmZzZXQ7dmFyIGM9ZS5fdG9wK3RoaXMueW9mZnNldDt0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6ZCx0b3A6Y30pO2JyZWFrO2Nhc2UiZSI6dmFyIGQ9Zi5yaWdodCt0aGlzLnhvZmZzZXQ7dmFyIGM9KGYudG9wKyh0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQtZi5ib3R0b20pKS8yLXRoaXMuZ2V0SGVpZ2h0KCkvMjt0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6ZCx0b3A6Y30pO2JyZWFrO2Nhc2Uic2UiOnZhciBkPWYucmlnaHQrdGhpcy54b2Zmc2V0O3ZhciBjPWYuYm90dG9tK3RoaXMueW9mZnNldDt0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6ZCxib3R0b206Y30pO2JyZWFrO2Nhc2UicyI6dmFyIGQ9KGYubGVmdCsodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgtZi5yaWdodCkpLzItdGhpcy5nZXRXaWR0aCgpLzI7dmFyIGM9Zi5ib3R0b20rdGhpcy55b2Zmc2V0O3RoaXMuX2VsZW0uY3NzKHtsZWZ0OmQsYm90dG9tOmN9KTticmVhaztjYXNlInN3Ijp2YXIgZD1lLl9sZWZ0K3RoaXMueG9mZnNldDt2YXIgYz1mLmJvdHRvbSt0aGlzLnlvZmZzZXQ7dGhpcy5fZWxlbS5jc3Moe2xlZnQ6ZCxib3R0b206Y30pO2JyZWFrO2Nhc2UidyI6dmFyIGQ9ZS5fbGVmdCt0aGlzLnhvZmZzZXQ7dmFyIGM9KGYudG9wKyh0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQtZi5ib3R0b20pKS8yLXRoaXMuZ2V0SGVpZ2h0KCkvMjt0aGlzLl9lbGVtLmNzcyh7bGVmdDpkLHRvcDpjfSk7YnJlYWs7ZGVmYXVsdDp2YXIgZD1lLl9yaWdodC10aGlzLnhvZmZzZXQ7dmFyIGM9ZS5fYm90dG9tK3RoaXMueW9mZnNldDt0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6ZCxib3R0b206Y30pO2JyZWFrfX1lbHNle3N3aXRjaCh0aGlzLmxvY2F0aW9uKXtjYXNlIm53Ijp2YXIgZD10aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC1lLl9sZWZ0K3RoaXMueG9mZnNldDt2YXIgYz1lLl90b3ArdGhpcy55b2Zmc2V0O3RoaXMuX2VsZW0uY3NzKCJyaWdodCIsZCk7dGhpcy5fZWxlbS5jc3MoInRvcCIsYyk7YnJlYWs7Y2FzZSJuIjp2YXIgZD0oZi5sZWZ0Kyh0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC1mLnJpZ2h0KSkvMi10aGlzLmdldFdpZHRoKCkvMjt2YXIgYz10aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQtZS5fdG9wK3RoaXMueW9mZnNldDt0aGlzLl9lbGVtLmNzcygibGVmdCIsZCk7dGhpcy5fZWxlbS5jc3MoImJvdHRvbSIsYyk7YnJlYWs7Y2FzZSJuZSI6dmFyIGQ9dGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgtZi5yaWdodCt0aGlzLnhvZmZzZXQ7dmFyIGM9ZS5fdG9wK3RoaXMueW9mZnNldDt0aGlzLl9lbGVtLmNzcyh7bGVmdDpkLHRvcDpjfSk7YnJlYWs7Y2FzZSJlIjp2YXIgZD10aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC1mLnJpZ2h0K3RoaXMueG9mZnNldDt2YXIgYz0oZi50b3ArKHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodC1mLmJvdHRvbSkpLzItdGhpcy5nZXRIZWlnaHQoKS8yO3RoaXMuX2VsZW0uY3NzKHtsZWZ0OmQsdG9wOmN9KTticmVhaztjYXNlInNlIjp2YXIgZD10aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC1mLnJpZ2h0K3RoaXMueG9mZnNldDt2YXIgYz1mLmJvdHRvbSt0aGlzLnlvZmZzZXQ7dGhpcy5fZWxlbS5jc3Moe2xlZnQ6ZCxib3R0b206Y30pO2JyZWFrO2Nhc2UicyI6dmFyIGQ9KGYubGVmdCsodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgtZi5yaWdodCkpLzItdGhpcy5nZXRXaWR0aCgpLzI7dmFyIGM9dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0LWYuYm90dG9tK3RoaXMueW9mZnNldDt0aGlzLl9lbGVtLmNzcyh7bGVmdDpkLHRvcDpjfSk7YnJlYWs7Y2FzZSJzdyI6dmFyIGQ9dGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgtZS5fbGVmdCt0aGlzLnhvZmZzZXQ7dmFyIGM9Zi5ib3R0b20rdGhpcy55b2Zmc2V0O3RoaXMuX2VsZW0uY3NzKHtyaWdodDpkLGJvdHRvbTpjfSk7YnJlYWs7Y2FzZSJ3Ijp2YXIgZD10aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC1lLl9sZWZ0K3RoaXMueG9mZnNldDt2YXIgYz0oZi50b3ArKHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodC1mLmJvdHRvbSkpLzItdGhpcy5nZXRIZWlnaHQoKS8yO3RoaXMuX2VsZW0uY3NzKHtyaWdodDpkLHRvcDpjfSk7YnJlYWs7ZGVmYXVsdDp2YXIgZD1lLl9yaWdodC10aGlzLnhvZmZzZXQ7dmFyIGM9ZS5fYm90dG9tK3RoaXMueW9mZnNldDt0aGlzLl9lbGVtLmNzcyh7cmlnaHQ6ZCxib3R0b206Y30pO2JyZWFrfX19fTtmdW5jdGlvbiBhKGcsZixkKXtkPWR8fHt9O2QuYXhlc0RlZmF1bHRzPWQuYXhlc0RlZmF1bHRzfHx7fTtkLmxlZ2VuZD1kLmxlZ2VuZHx8e307ZC5zZXJpZXNEZWZhdWx0cz1kLnNlcmllc0RlZmF1bHRzfHx7fTt2YXIgYz1mYWxzZTtpZihkLnNlcmllc0RlZmF1bHRzLnJlbmRlcmVyPT1iLmpxcGxvdC5NZWtrb1JlbmRlcmVyKXtjPXRydWV9ZWxzZXtpZihkLnNlcmllcyl7Zm9yKHZhciBlPTA7ZTxkLnNlcmllcy5sZW5ndGg7ZSsrKXtpZihkLnNlcmllc1tlXS5yZW5kZXJlcj09Yi5qcXBsb3QuTWVra29SZW5kZXJlcil7Yz10cnVlfX19fWlmKGMpe2QuYXhlc0RlZmF1bHRzLnJlbmRlcmVyPWIuanFwbG90Lk1la2tvQXhpc1JlbmRlcmVyO2QubGVnZW5kLnJlbmRlcmVyPWIuanFwbG90Lk1la2tvTGVnZW5kUmVuZGVyZXI7ZC5sZWdlbmQucHJlRHJhdz10cnVlfX1iLmpxcGxvdC5wcmVJbml0SG9va3MucHVzaChhKX0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.meterGaugeRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuTWV0ZXJHYXVnZVJlbmRlcmVyCiAgICAgKiBQbHVnaW4gcmVuZGVyZXIgdG8gZHJhdyBhIG1ldGVyIGdhdWdlIGNoYXJ0LgogICAgICogCiAgICAgKiBEYXRhIGNvbnNpc3RzIG9mIGEgc2luZ2xlIHNlcmllcyB3aXRoIDEgZGF0YSBwb2ludCB0byBwb3NpdGlvbiB0aGUgZ2F1Z2UgbmVlZGxlLgogICAgICogCiAgICAgKiBUbyB1c2UgdGhpcyByZW5kZXJlciwgeW91IG5lZWQgdG8gaW5jbHVkZSB0aGUgCiAgICAgKiBtZXRlciBnYXVnZSByZW5kZXJlciBwbHVnaW4sIGZvciBleGFtcGxlOgogICAgICogCiAgICAgKiA+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InBsdWdpbnMvanFwbG90Lm1ldGVyR2F1Z2VSZW5kZXJlci5qcyI+PC9zY3JpcHQ+CiAgICAgKiAKICAgICAqIFByb3BlcnRpZXMgZGVzY3JpYmVkIGhlcmUgYXJlIHBhc3NlZCBpbnRvIHRoZSAkLmpxcGxvdCBmdW5jdGlvbgogICAgICogYXMgb3B0aW9ucyBvbiB0aGUgc2VyaWVzIHJlbmRlcmVyLiAgRm9yIGV4YW1wbGU6CiAgICAgKiAKICAgICAqID4gcGxvdDAgPSAkLmpxcGxvdCgnY2hhcnQwJyxbWzE4XV0sewogICAgICogPiAgICAgdGl0bGU6ICdOZXR3b3JrIFNwZWVkJywKICAgICAqID4gICAgIHNlcmllc0RlZmF1bHRzOiB7CiAgICAgKiA+ICAgICAgICAgcmVuZGVyZXI6ICQuanFwbG90Lk1ldGVyR2F1Z2VSZW5kZXJlciwKICAgICAqID4gICAgICAgICByZW5kZXJlck9wdGlvbnM6IHsKICAgICAqID4gICAgICAgICAgICAgbGFiZWw6ICdNQi9zJwogICAgICogPiAgICAgICAgIH0KICAgICAqID4gICAgIH0KICAgICAqID4gfSk7CiAgICAgKiAKICAgICAqIEEgbWV0ZXJHYXVnZSBwbG90IGRvZXMgbm90IHN1cHBvcnQgZXZlbnRzLgogICAgICovCiAgICAkLmpxcGxvdC5NZXRlckdhdWdlUmVuZGVyZXIgPSBmdW5jdGlvbigpewogICAgICAgICQuanFwbG90LkxpbmVSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuTWV0ZXJHYXVnZVJlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTsKICAgICQuanFwbG90Lk1ldGVyR2F1Z2VSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5NZXRlckdhdWdlUmVuZGVyZXI7CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIGEgc2VyaWVzCiAgICAkLmpxcGxvdC5NZXRlckdhdWdlUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zKSB7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAvLwogICAgICAgIC8vIHByb3A6IGRpYW1ldGVyCiAgICAgICAgLy8gT3V0ZXIgZGlhbWV0ZXIgb2YgdGhlIG1ldGVyR2F1Z2UsIGF1dG8gY29tcHV0ZWQgYnkgZGVmYXVsdAogICAgICAgIHRoaXMuZGlhbWV0ZXIgPSBudWxsOwogICAgICAgIC8vIHByb3A6IHBhZGRpbmcKICAgICAgICAvLyBwYWRkaW5nIGJldHdlZW4gdGhlIG1ldGVyR2F1Z2UgYW5kIHBsb3QgZWRnZXMsIGF1dG8KICAgICAgICAvLyBjYWxjdWxhdGVkIGJ5IGRlZmF1bHQuCiAgICAgICAgdGhpcy5wYWRkaW5nID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBzaGFkb3dPZmZzZXQKICAgICAgICAvLyBvZmZzZXQgb2YgdGhlIHNoYWRvdyBmcm9tIHRoZSBnYXVnZSByaW5nIGFuZCBvZmZzZXQgb2YgCiAgICAgICAgLy8gZWFjaCBzdWNjZXNpdmUgc3Ryb2tlIG9mIHRoZSBzaGFkb3cgZnJvbSB0aGUgbGFzdC4KICAgICAgICB0aGlzLnNoYWRvd09mZnNldCA9IDI7CiAgICAgICAgLy8gcHJvcDogc2hhZG93QWxwaGEKICAgICAgICAvLyB0cmFuc3BhcmVuY3kgb2YgdGhlIHNoYWRvdyAoMCA9IHRyYW5zcGFyZW50LCAxID0gb3BhcXVlKQogICAgICAgIHRoaXMuc2hhZG93QWxwaGEgPSAwLjA3OwogICAgICAgIC8vIHByb3A6IHNoYWRvd0RlcHRoCiAgICAgICAgLy8gbnVtYmVyIG9mIHN0cm9rZXMgdG8gYXBwbHkgdG8gdGhlIHNoYWRvdywgCiAgICAgICAgLy8gZWFjaCBzdHJva2Ugb2Zmc2V0IHNoYWRvd09mZnNldCBmcm9tIHRoZSBsYXN0LgogICAgICAgIHRoaXMuc2hhZG93RGVwdGggPSA0OwogICAgICAgIC8vIHByb3A6IGJhY2tncm91bmQKICAgICAgICAvLyBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBpbnNpZGUgb2YgdGhlIGdhdWdlLgogICAgICAgIHRoaXMuYmFja2dyb3VuZCA9ICIjZWZlZmVmIjsKICAgICAgICAvLyBwcm9wOiByaW5nQ29sb3IKICAgICAgICAvLyBjb2xvciBvZiB0aGUgb3V0ZXIgcmluZywgaHViLCBhbmQgbmVlZGxlIG9mIHRoZSBnYXVnZS4KICAgICAgICB0aGlzLnJpbmdDb2xvciA9ICIjQkJDNkQwIjsKICAgICAgICAvLyBuZWVkbGUgY29sb3Igbm90IGltcGxlbWVudGVkIHlldC4KICAgICAgICB0aGlzLm5lZWRsZUNvbG9yID0gIiNDM0QzRTUiOwogICAgICAgIC8vIHByb3A6IHRpY2tDb2xvcgogICAgICAgIC8vIGNvbG9yIG9mIHRoZSB0aWNrIG1hcmtzIGFyb3VuZCB0aGUgZ2F1Z2UuCiAgICAgICAgdGhpcy50aWNrQ29sb3IgPSAiIzk4OTg5OCI7CiAgICAgICAgLy8gcHJvcDogcmluZ1dpZHRoCiAgICAgICAgLy8gd2lkdGggb2YgdGhlIHJpbmcgYXJvdW5kIHRoZSBnYXVnZS4gIEF1dG8gY29tcHV0ZWQgYnkgZGVmYXVsdC4KICAgICAgICB0aGlzLnJpbmdXaWR0aCA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogbWluCiAgICAgICAgLy8gTWluaW11bSB2YWx1ZSBvbiB0aGUgZ2F1Z2UuICBBdXRvIGNvbXB1dGVkIGJ5IGRlZmF1bHQKICAgICAgICB0aGlzLm1pbjsKICAgICAgICAvLyBwcm9wOiBtYXgKICAgICAgICAvLyBNYXhpbXVtIHZhbHVlIG9uIHRoZSBnYXVnZS4gQXV0byBjb21wdXRlZCBieSBkZWZhdWx0CiAgICAgICAgdGhpcy5tYXg7CiAgICAgICAgLy8gcHJvcDogdGlja3MKICAgICAgICAvLyBBcnJheSBvZiB0aWNrIHZhbHVlcy4gQXV0byBjb21wdXRlZCBieSBkZWZhdWx0LgogICAgICAgIHRoaXMudGlja3MgPSBbXTsKICAgICAgICAvLyBwcm9wOiBzaG93VGlja3MKICAgICAgICAvLyB0cnVlIHRvIHNob3cgdGlja3MgYXJvdW5kIGdhdWdlLgogICAgICAgIHRoaXMuc2hvd1RpY2tzID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBzaG93VGlja0xhYmVscwogICAgICAgIC8vIHRydWUgdG8gc2hvdyB0aWNrIGxhYmVscyBuZXh0IHRvIHRpY2tzLgogICAgICAgIHRoaXMuc2hvd1RpY2tMYWJlbHMgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IGxhYmVsCiAgICAgICAgLy8gQSBnYXVnZSBsYWJlbCBsaWtlICdrcGgnIG9yICdWb2x0cycKICAgICAgICB0aGlzLmxhYmVsID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBsYWJlbEhlaWdodEFkanVzdAogICAgICAgIC8vIE51bWJlciBvZiBQaXhlbHMgdG8gb2Zmc2V0IHRoZSBsYWJlbCB1cCAoLSkgb3IgZG93biAoKykgZnJvbSBpdHMgZGVmYXVsdCBwb3NpdGlvbi4KICAgICAgICB0aGlzLmxhYmVsSGVpZ2h0QWRqdXN0ID0gMDsKICAgICAgICAvLyBwcm9wOiBsYWJlbFBvc2l0aW9uCiAgICAgICAgLy8gV2hlcmUgdG8gcG9zaXRpb24gdGhlIGxhYmVsLCBlaXRoZXIgJ2luc2lkZScgb3IgJ2JvdHRvbScuCiAgICAgICAgdGhpcy5sYWJlbFBvc2l0aW9uID0gJ2luc2lkZSc7CiAgICAgICAgLy8gcHJvcDogaW50ZXJ2YWxzCiAgICAgICAgLy8gQXJyYXkgb2YgcmFuZ2VzIHRvIGJlIGRyYXduIGFyb3VuZCB0aGUgZ2F1Z2UuCiAgICAgICAgLy8gQXJyYXkgb2YgZm9ybToKICAgICAgICAvLyA+IFt2YWx1ZTEsIHZhbHVlMiwgLi4uXQogICAgICAgIC8vIGluZGljYXRpbmcgdGhlIHZhbHVlcyBmb3IgdGhlIGZpcnN0LCBzZWNvbmQsIC4uLiBpbnRlcnZhbHMuCiAgICAgICAgdGhpcy5pbnRlcnZhbHMgPSBbXTsKICAgICAgICAvLyBwcm9wOiBpbnRlcnZhbENvbG9ycwogICAgICAgIC8vIEFycmF5IG9mIGNvbG9ycyB0byB1c2UgZm9yIHRoZSBpbnRlcnZhbHMuCiAgICAgICAgdGhpcy5pbnRlcnZhbENvbG9ycyA9IFsgIiM0YmIyYzUiLCAiI0VBQTIyOCIsICIjYzViNDdmIiwgIiM1Nzk1NzUiLCAiIzgzOTU1NyIsICIjOTU4YzEyIiwgIiM5NTM1NzkiLCAiIzRiNWRlNCIsICIjZDhiODNmIiwgIiNmZjU4MDAiLCAiIzAwODVjYyIsICIjYzc0N2EzIiwgIiNjZGRmNTQiLCAiI0ZCRDE3OCIsICIjMjZCNEUzIiwgIiNiZDcwYzciXTsKICAgICAgICAvLyBwcm9wOiBpbnRlcnZhbElubmVyUmFkaXVzCiAgICAgICAgLy8gUmFkaXVzIG9mIHRoZSBpbm5lciBjaXJjbGUgb2YgdGhlIGludGVydmFsIHJpbmcuCiAgICAgICAgdGhpcy5pbnRlcnZhbElubmVyUmFkaXVzID0gIG51bGw7CiAgICAgICAgLy8gcHJvcDogaW50ZXJ2YWxPdXRlclJhZGl1cwogICAgICAgIC8vIFJhZGl1cyBvZiB0aGUgb3V0ZXIgY2lyY2xlIG9mIHRoZSBpbnRlcnZhbCByaW5nLgogICAgICAgIHRoaXMuaW50ZXJ2YWxPdXRlclJhZGl1cyA9IG51bGw7CiAgICAgICAgdGhpcy50aWNrUmVuZGVyZXIgPSAkLmpxcGxvdC5NZXRlckdhdWdlVGlja1JlbmRlcmVyOwogICAgICAgIC8vIHRpY2tzIHNwYWNlZCBldmVyeSAxLCAyLCAyLjUsIDUsIDEwLCAyMCwgLjEsIC4yLCAuMjUsIC41LCBldGMuCiAgICAgICAgdGhpcy50aWNrUG9zaXRpb25zID0gWzEsIDIsIDIuNSwgNSwgMTBdOwogICAgICAgIC8vIHByb3A6IHRpY2tTcGFjaW5nCiAgICAgICAgLy8gRGVncmVlcyBiZXR3ZWVuIHRpY2tzLiAgVGhpcyBpcyBhIHRhcmdldCBudW1iZXIsIGlmIAogICAgICAgIC8vIGluY29tcGF0aWJsZSBzcGFuIGFuZCB0aWNrcyBhcmUgc3VwcGxpZWQsIGEgc3VpdGFibGUKICAgICAgICAvLyBzcGFjaW5nIGNsb3NlIHRvIHRoaXMgdmFsdWUgd2lsbCBiZSBjb21wdXRlZC4KICAgICAgICB0aGlzLnRpY2tTcGFjaW5nID0gMzA7CiAgICAgICAgdGhpcy5udW1iZXJNaW5vclRpY2tzID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBodWJSYWRpdXMKICAgICAgICAvLyBSYWRpdXMgb2YgdGhlIGh1YiBhdCB0aGUgYm90dG9tIGNlbnRlciBvZiBnYXVnZSB3aGljaCB0aGUgbmVlZGxlIGF0dGFjaGVzIHRvLgogICAgICAgIC8vIEF1dG8gY29tcHV0ZWQgYnkgZGVmYXVsdAogICAgICAgIHRoaXMuaHViUmFkaXVzID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiB0aWNrUGFkZGluZwogICAgICAgIC8vIHBhZGRpbmcgb2YgdGhlIHRpY2sgbWFya3MgdG8gdGhlIG91dGVyIHJpbmcgYW5kIHRoZSB0aWNrIGxhYmVscyB0byBtYXJrcy4KICAgICAgICAvLyBBdXRvIGNvbXB1dGVkIGJ5IGRlZmF1bHQuCiAgICAgICAgdGhpcy50aWNrUGFkZGluZyA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogbmVlZGxlVGhpY2tuZXNzCiAgICAgICAgLy8gTWF4aW11bSB0aGlja25lc3MgdGhlIG5lZWRsZS4gIEF1dG8gY29tcHV0ZWQgYnkgZGVmYXVsdC4KICAgICAgICB0aGlzLm5lZWRsZVRoaWNrbmVzcyA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogbmVlZGxlUGFkCiAgICAgICAgLy8gUGFkZGluZyBiZXR3ZWVuIG5lZWRsZSBhbmQgaW5uZXIgZWRnZSBvZiB0aGUgcmluZyB3aGVuIHRoZSBuZWVkbGUgaXMgYXQgdGhlIG1pbiBvciBtYXggZ2F1Z2UgdmFsdWUuCiAgICAgICAgdGhpcy5uZWVkbGVQYWQgPSA2OwogICAgICAgIC8vIHByb3A6IHBlZ05lZWRsZQogICAgICAgIC8vIFRydWUgd2lsbCBzdG9wIG5lZWRsZSBqdXN0IGJlbG93L2Fib3ZlIHRoZSAgbWluL21heCB2YWx1ZXMgaWYgZGF0YSBpcyBiZWxvdy9hYm92ZSBtaW4vbWF4LAogICAgICAgIC8vIGFzIGlmIHRoZSBtZXRlciBpcyAicGVnZ2VkIi4KICAgICAgICB0aGlzLnBlZ05lZWRsZSA9IHRydWU7CiAgICAgICAgdGhpcy5fdHlwZSA9ICdtZXRlckdhdWdlJzsKICAgICAgICAKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgICAgICB0aGlzLnR5cGUgPSBudWxsOwogICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSBudWxsOwogICAgICAgIHRoaXMudGlja0ludGVydmFsID0gbnVsbDsKICAgICAgICAvLyBzcGFuLCB0aGUgc3dlZXAgKGluIGRlZ3JlZXMpIGZyb20gbWluIHRvIG1heC4gIFRoaXMgZ2F1Z2UgaXMgCiAgICAgICAgLy8gYSBzZW1pLWNpcmNsZS4KICAgICAgICB0aGlzLnNwYW4gPSAxODA7CiAgICAgICAgLy8gZ2V0IHJpZCBvZiB0aGlzIG5vbnNlbnNlCiAgICAgICAgLy8gdGhpcy5pbm5lclNwYW4gPSB0aGlzLnNwYW47CiAgICAgICAgaWYgKHRoaXMudHlwZSA9PSAnY2lyY3VsYXInKSB7CiAgICAgICAgICAgIHRoaXMuc2VtaUNpcmN1bGFyID0gZmFsc2U7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHRoaXMudHlwZSAhPSAnY2lyY3VsYXInKSB7CiAgICAgICAgICAgIHRoaXMuc2VtaUNpcmN1bGFyID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHRoaXMuc2VtaUNpcmN1bGFyID0gKHRoaXMuc3BhbiA8PSAxODApID8gdHJ1ZSA6IGZhbHNlOwogICAgICAgIH0KICAgICAgICB0aGlzLl90aWNrUG9pbnRzID0gW107CiAgICAgICAgLy8gcmVmZXJlbmNlIHRvIGxhYmVsIGVsZW1lbnQuCiAgICAgICAgdGhpcy5fbGFiZWxFbGVtID0gbnVsbDsKICAgICAgICAKICAgICAgICAvLyBzdGFydCB0aGUgZ2F1Z2UgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3BhbgogICAgICAgIHRoaXMuc3RhcnRBbmdsZSA9ICg5MCArICgzNjAgLSB0aGlzLnNwYW4pLzIpICogTWF0aC5QSS8xODA7CiAgICAgICAgdGhpcy5lbmRBbmdsZSA9ICg5MCAtICgzNjAgLSB0aGlzLnNwYW4pLzIpICogTWF0aC5QSS8xODA7CiAgICAgICAgCiAgICAgICAgdGhpcy5zZXRtaW4gPSAhISh0aGlzLm1pbiA9PSBudWxsKTsKICAgICAgICB0aGlzLnNldG1heCA9ICEhKHRoaXMubWF4ID09IG51bGwpOwogICAgICAgIAogICAgICAgIC8vIGlmIGdpdmVuIGludGVydmFscyBhbmQgaXMgYW4gYXJyYXkgb2YgdmFsdWVzLCBjcmVhdGUgbGFiZWxzIGFuZCBjb2xvcnMuCiAgICAgICAgaWYgKHRoaXMuaW50ZXJ2YWxzLmxlbmd0aCkgewogICAgICAgICAgICBpZiAodGhpcy5pbnRlcnZhbHNbMF0ubGVuZ3RoID09IG51bGwgfHwgdGhpcy5pbnRlcnZhbHMubGVuZ3RoID09IDEpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLmludGVydmFscy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHRoaXMuaW50ZXJ2YWxzW2ldID0gW3RoaXMuaW50ZXJ2YWxzW2ldLCB0aGlzLmludGVydmFsc1tpXSwgdGhpcy5pbnRlcnZhbENvbG9yc1tpXV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5pbnRlcnZhbHNbMF0ubGVuZ3RoID09IDIpIHsKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPHRoaXMuaW50ZXJ2YWxzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnRlcnZhbHNbaV0gPSBbdGhpcy5pbnRlcnZhbHNbaV1bMF0sIHRoaXMuaW50ZXJ2YWxzW2ldWzFdLCB0aGlzLmludGVydmFsQ29sb3JzW2ldXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBjb21wdXRlIG1pbiwgbWF4IGFuZCB0aWNrcyBpZiBub3Qgc3VwcGxpZWQ6CiAgICAgICAgaWYgKHRoaXMudGlja3MubGVuZ3RoKSB7CiAgICAgICAgICAgIGlmICh0aGlzLnRpY2tzWzBdLmxlbmd0aCA9PSBudWxsIHx8IHRoaXMudGlja3NbMF0ubGVuZ3RoID09IDEpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLnRpY2tzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50aWNrc1tpXSA9IFt0aGlzLnRpY2tzW2ldLCB0aGlzLnRpY2tzW2ldXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0aGlzLm1pbiA9ICh0aGlzLm1pbiA9PSBudWxsKSA/IHRoaXMudGlja3NbMF1bMF0gOiB0aGlzLm1pbjsKICAgICAgICAgICAgdGhpcy5tYXggPSAodGhpcy5tYXggPT0gbnVsbCkgPyB0aGlzLnRpY2tzW3RoaXMudGlja3MubGVuZ3RoLTFdWzBdIDogdGhpcy5tYXg7CiAgICAgICAgICAgIHRoaXMuc2V0bWluID0gZmFsc2U7CiAgICAgICAgICAgIHRoaXMuc2V0bWF4ID0gZmFsc2U7CiAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSB0aGlzLnRpY2tzLmxlbmd0aDsKICAgICAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSB0aGlzLnRpY2tzWzFdWzBdIC0gdGhpcy50aWNrc1swXVswXTsKICAgICAgICAgICAgdGhpcy50aWNrRmFjdG9yID0gTWF0aC5mbG9vcihwYXJzZUZsb2F0KChNYXRoLmxvZyh0aGlzLnRpY2tJbnRlcnZhbCkvTWF0aC5sb2coMTApKS50b0ZpeGVkKDExKSkpOwogICAgICAgICAgICAvLyB1c2UgdGhlIGZpcnN0IGludGVyYWwgdG8gY2FsY3VsYXRlIG1pbm9yIHRpY2tzOwogICAgICAgICAgICB0aGlzLm51bWJlck1pbm9yVGlja3MgPSBnZXRubXQodGhpcy50aWNrUG9zaXRpb25zLCB0aGlzLnRpY2tJbnRlcnZhbCwgdGhpcy50aWNrRmFjdG9yKTsKICAgICAgICAgICAgaWYgKCF0aGlzLm51bWJlck1pbm9yVGlja3MpIHsKICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyTWlub3JUaWNrcyA9IGdldG5tdCh0aGlzLnRpY2tQb3NpdGlvbnMsIHRoaXMudGlja0ludGVydmFsLCB0aGlzLnRpY2tGYWN0b3ItMSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCF0aGlzLm51bWJlck1pbm9yVGlja3MpIHsKICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyTWlub3JUaWNrcyA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZWxzZSBpZiAodGhpcy5pbnRlcnZhbHMubGVuZ3RoKSB7CiAgICAgICAgICAgIHRoaXMubWluID0gKHRoaXMubWluID09IG51bGwpID8gMCA6IHRoaXMubWluOwogICAgICAgICAgICB0aGlzLnNldG1pbiA9IGZhbHNlOwogICAgICAgICAgICBpZiAodGhpcy5tYXggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMuaW50ZXJ2YWxzW3RoaXMuaW50ZXJ2YWxzLmxlbmd0aC0xXVswXSA+PSB0aGlzLmRhdGFbMF1bMV0pIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLm1heCA9IHRoaXMuaW50ZXJ2YWxzW3RoaXMuaW50ZXJ2YWxzLmxlbmd0aC0xXVswXTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnNldG1heCA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5zZXRtYXggPSBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBlbHNlIHsKICAgICAgICAgICAgLy8gbm8gdGlja3MgYW5kIG5vIGludGVydmFscyBzdXBwbGllZCwgcHV0IG5lZWRsZSBpbiBtaWRkbGUKICAgICAgICAgICAgdGhpcy5taW4gPSAodGhpcy5taW4gPT0gbnVsbCkgPyAwIDogdGhpcy5taW47CiAgICAgICAgICAgIHRoaXMuc2V0bWluID0gZmFsc2U7CiAgICAgICAgICAgIGlmICh0aGlzLm1heCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICB0aGlzLm1heCA9IHRoaXMuZGF0YVswXVsxXSAqIDEuMjU7CiAgICAgICAgICAgICAgICB0aGlzLnNldG1heCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB0aGlzLnNldG1heCA9IGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKICAgIAogICAgJC5qcXBsb3QuTWV0ZXJHYXVnZVJlbmRlcmVyLnByb3RvdHlwZS5zZXRHcmlkRGF0YSA9IGZ1bmN0aW9uKHBsb3QpIHsKICAgICAgICAvLyBzZXQgZ3JpZERhdGEgcHJvcGVydHkuICBUaGlzIHdpbGwgaG9sZCBhbmdsZSBpbiByYWRpYW5zIG9mIGVhY2ggZGF0YSBwb2ludC4KICAgICAgICB2YXIgc3RhY2sgPSBbXTsKICAgICAgICB2YXIgdGQgPSBbXTsKICAgICAgICB2YXIgc2EgPSB0aGlzLnN0YXJ0QW5nbGU7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAgIHN0YWNrLnB1c2godGhpcy5kYXRhW2ldWzFdKTsKICAgICAgICAgICAgdGQucHVzaChbdGhpcy5kYXRhW2ldWzBdXSk7CiAgICAgICAgICAgIGlmIChpPjApIHsKICAgICAgICAgICAgICAgIHN0YWNrW2ldICs9IHN0YWNrW2ktMV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdmFyIGZhY3QgPSBNYXRoLlBJKjIvc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07CiAgICAgICAgCiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHN0YWNrLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHRkW2ldWzFdID0gc3RhY2tbaV0gKiBmYWN0OwogICAgICAgIH0KICAgICAgICB0aGlzLmdyaWREYXRhID0gdGQ7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5NZXRlckdhdWdlUmVuZGVyZXIucHJvdG90eXBlLm1ha2VHcmlkRGF0YSA9IGZ1bmN0aW9uKGRhdGEsIHBsb3QpIHsKICAgICAgICB2YXIgc3RhY2sgPSBbXTsKICAgICAgICB2YXIgdGQgPSBbXTsKICAgICAgICB2YXIgc2EgPSB0aGlzLnN0YXJ0QW5nbGU7CiAgICAgICAgZm9yICh2YXIgaT0wOyBpPGRhdGEubGVuZ3RoOyBpKyspewogICAgICAgICAgICBzdGFjay5wdXNoKGRhdGFbaV1bMV0pOwogICAgICAgICAgICB0ZC5wdXNoKFtkYXRhW2ldWzBdXSk7CiAgICAgICAgICAgIGlmIChpPjApIHsKICAgICAgICAgICAgICAgIHN0YWNrW2ldICs9IHN0YWNrW2ktMV07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdmFyIGZhY3QgPSBNYXRoLlBJKjIvc3RhY2tbc3RhY2subGVuZ3RoIC0gMV07CiAgICAgICAgCiAgICAgICAgZm9yICh2YXIgaT0wOyBpPHN0YWNrLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHRkW2ldWzFdID0gc3RhY2tbaV0gKiBmYWN0OwogICAgICAgIH0KICAgICAgICByZXR1cm4gdGQ7CiAgICB9OwoKICAgICAgICAKICAgIGZ1bmN0aW9uIGdldG5tdChwb3MsIGludGVydmFsLCBmYWN0KSB7CiAgICAgICAgdmFyIHRlbXA7CiAgICAgICAgZm9yICh2YXIgaT1wb3MubGVuZ3RoLTE7IGk+PTA7IGktLSkgewogICAgICAgICAgICB0ZW1wID0gaW50ZXJ2YWwvKHBvc1tpXSAqIE1hdGgucG93KDEwLCBmYWN0KSk7CiAgICAgICAgICAgIGlmICh0ZW1wID09IDQgfHwgdGVtcCA9PSA1KSB7CiAgICAgICAgICAgICAgICByZXR1cm4gdGVtcCAtIDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHNlcmllcwogICAgJC5qcXBsb3QuTWV0ZXJHYXVnZVJlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24gKGN0eCwgZ2QsIG9wdGlvbnMpIHsKICAgICAgICB2YXIgaTsKICAgICAgICB2YXIgb3B0cyA9IChvcHRpb25zICE9IHVuZGVmaW5lZCkgPyBvcHRpb25zIDoge307CiAgICAgICAgLy8gb2Zmc2V0IGFuZCBkaXJlY3Rpb24gb2Ygb2Zmc2V0IGR1ZSB0byBsZWdlbmQgcGxhY2VtZW50CiAgICAgICAgdmFyIG9mZnggPSAwOwogICAgICAgIHZhciBvZmZ5ID0gMDsKICAgICAgICB2YXIgdHJhbnMgPSAxOwogICAgICAgIGlmIChvcHRpb25zLmxlZ2VuZEluZm8gJiYgb3B0aW9ucy5sZWdlbmRJbmZvLnBsYWNlbWVudCA9PSAnaW5zaWRlJykgewogICAgICAgICAgICB2YXIgbGkgPSBvcHRpb25zLmxlZ2VuZEluZm87CiAgICAgICAgICAgIHN3aXRjaCAobGkubG9jYXRpb24pIHsKICAgICAgICAgICAgICAgIGNhc2UgJ253JzoKICAgICAgICAgICAgICAgICAgICBvZmZ4ID0gbGkud2lkdGggKyBsaS54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAndyc6CiAgICAgICAgICAgICAgICAgICAgb2ZmeCA9IGxpLndpZHRoICsgbGkueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3N3JzoKICAgICAgICAgICAgICAgICAgICBvZmZ4ID0gbGkud2lkdGggKyBsaS54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnbmUnOgogICAgICAgICAgICAgICAgICAgIG9mZnggPSBsaS53aWR0aCArIGxpLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgdHJhbnMgPSAtMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2UnOgogICAgICAgICAgICAgICAgICAgIG9mZnggPSBsaS53aWR0aCArIGxpLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgdHJhbnMgPSAtMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3NlJzoKICAgICAgICAgICAgICAgICAgICBvZmZ4ID0gbGkud2lkdGggKyBsaS54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIHRyYW5zID0gLTE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICduJzoKICAgICAgICAgICAgICAgICAgICBvZmZ5ID0gbGkuaGVpZ2h0ICsgbGkueW9mZnNldDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgICAgICAgIG9mZnkgPSBsaS5oZWlnaHQgKyBsaS55b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIHRyYW5zID0gLTE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIAogICAgICAgICAgICAKICAgICAgICAvLyBwcmUtZHJhdyBzbyBjYW4gZ2V0IGl0cyBkaW1lbnNpb25zLgogICAgICAgIGlmICh0aGlzLmxhYmVsKSB7CiAgICAgICAgICAgIHRoaXMuX2xhYmVsRWxlbSA9ICQoJzxkaXYgY2xhc3M9ImpxcGxvdC1tZXRlckdhdWdlLWxhYmVsIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7Ij4nK3RoaXMubGFiZWwrJzwvZGl2PicpOwogICAgICAgICAgICB0aGlzLmNhbnZhcy5fZWxlbS5hZnRlcih0aGlzLl9sYWJlbEVsZW0pOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB2YXIgc2hhZG93ID0gKG9wdHMuc2hhZG93ICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNoYWRvdyA6IHRoaXMuc2hhZG93OwogICAgICAgIHZhciBzaG93TGluZSA9IChvcHRzLnNob3dMaW5lICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNob3dMaW5lIDogdGhpcy5zaG93TGluZTsKICAgICAgICB2YXIgZmlsbCA9IChvcHRzLmZpbGwgIT0gdW5kZWZpbmVkKSA/IG9wdHMuZmlsbCA6IHRoaXMuZmlsbDsKICAgICAgICB2YXIgY3cgPSBjdHguY2FudmFzLndpZHRoOwogICAgICAgIHZhciBjaCA9IGN0eC5jYW52YXMuaGVpZ2h0OwogICAgICAgIGlmICh0aGlzLnBhZGRpbmcgPT0gbnVsbCkgewogICAgICAgICAgICB0aGlzLnBhZGRpbmcgPSBNYXRoLnJvdW5kKE1hdGgubWluKGN3LCBjaCkvMzApOwogICAgICAgIH0KICAgICAgICB2YXIgdyA9IGN3IC0gb2ZmeCAtIDIgKiB0aGlzLnBhZGRpbmc7CiAgICAgICAgdmFyIGggPSBjaCAtIG9mZnkgLSAyICogdGhpcy5wYWRkaW5nOwogICAgICAgIGlmICh0aGlzLmxhYmVsUG9zaXRpb24gPT0gJ2JvdHRvbScgJiYgdGhpcy5sYWJlbCkgewogICAgICAgICAgICBoIC09IHRoaXMuX2xhYmVsRWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICB9CiAgICAgICAgdmFyIG1pbmRpbSA9IE1hdGgubWluKHcsaCk7CiAgICAgICAgdmFyIGQgPSBtaW5kaW07CiAgICAgICAgICAgIAogICAgICAgIGlmICghdGhpcy5kaWFtZXRlcikgewogICAgICAgICAgICBpZiAodGhpcy5zZW1pQ2lyY3VsYXIpIHsKICAgICAgICAgICAgICAgIGlmICggdyA+PSAyKmgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMucmluZ1dpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmluZ1dpZHRoID0gMipoLzM1OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB0aGlzLm5lZWRsZVRoaWNrbmVzcyA9IHRoaXMubmVlZGxlVGhpY2tuZXNzIHx8IDIrTWF0aC5wb3codGhpcy5yaW5nV2lkdGgsIDAuOCk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbm5lclBhZCA9IHRoaXMucmluZ1dpZHRoLzIgKyB0aGlzLm5lZWRsZVRoaWNrbmVzcy8yICsgdGhpcy5uZWVkbGVQYWQ7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaWFtZXRlciA9IDIgKiAoaCAtIDIqdGhpcy5pbm5lclBhZCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMucmluZ1dpZHRoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmluZ1dpZHRoID0gdy8zNTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhpcy5uZWVkbGVUaGlja25lc3MgPSB0aGlzLm5lZWRsZVRoaWNrbmVzcyB8fCAyK01hdGgucG93KHRoaXMucmluZ1dpZHRoLCAwLjgpOwogICAgICAgICAgICAgICAgICAgIHRoaXMuaW5uZXJQYWQgPSB0aGlzLnJpbmdXaWR0aC8yICsgdGhpcy5uZWVkbGVUaGlja25lc3MvMiArIHRoaXMubmVlZGxlUGFkOwogICAgICAgICAgICAgICAgICAgIHRoaXMuZGlhbWV0ZXIgPSB3IC0gMip0aGlzLmlubmVyUGFkIC0gdGhpcy5yaW5nV2lkdGggLSB0aGlzLnBhZGRpbmc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyBjZW50ZXIgdGFraW5nIGludG8gYWNjb3VudCBsZWdlbmQgYW5kIG92ZXIgZHJhdyBmb3IgZ2F1Z2UgYm90dG9tIGJlbG93IGh1Yi4KICAgICAgICAgICAgICAgIC8vIHRoaXMgd2lsbCBiZSBjZW50ZXIgb2YgaHViLgogICAgICAgICAgICAgICAgdGhpcy5fY2VudGVyID0gWyhjdyAtIHRyYW5zICogb2ZmeCkvMiArIHRyYW5zICogb2ZmeCwgIChjaCArIHRyYW5zKm9mZnkgLSB0aGlzLnBhZGRpbmcgLSB0aGlzLnJpbmdXaWR0aCAtIHRoaXMuaW5uZXJQYWQpXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICghdGhpcy5yaW5nV2lkdGgpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLnJpbmdXaWR0aCA9IGQvMzU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLm5lZWRsZVRoaWNrbmVzcyA9IHRoaXMubmVlZGxlVGhpY2tuZXNzIHx8IDIrTWF0aC5wb3codGhpcy5yaW5nV2lkdGgsIDAuOCk7CiAgICAgICAgICAgICAgICB0aGlzLmlubmVyUGFkID0gMDsKICAgICAgICAgICAgICAgIHRoaXMuZGlhbWV0ZXIgPSBkIC0gdGhpcy5yaW5nV2lkdGg7CiAgICAgICAgICAgICAgICAvLyBjZW50ZXIgaW4gbWlkZGxlIG9mIGNhbnZhcyB0YWtpbmcgaW50byBhY2NvdW50IGxlZ2VuZC4KICAgICAgICAgICAgICAgIC8vIHdpbGwgYmUgY2VudGVyIG9mIGh1Yi4KICAgICAgICAgICAgICAgIHRoaXMuX2NlbnRlciA9IFsoY3ctdHJhbnMqb2ZmeCkvMiArIHRyYW5zICogb2ZmeCwgKGNoLXRyYW5zKm9mZnkpLzIgKyB0cmFucyAqIG9mZnldOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0aGlzLl9sYWJlbEVsZW0gJiYgdGhpcy5sYWJlbFBvc2l0aW9uID09ICdib3R0b20nKSB7CiAgICAgICAgICAgICAgICB0aGlzLl9jZW50ZXJbMV0gLT0gdGhpcy5fbGFiZWxFbGVtLm91dGVySGVpZ2h0KHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgIH0KCiAgICAgICAgdGhpcy5fcmFkaXVzID0gdGhpcy5kaWFtZXRlci8yOwogICAgICAgIAogICAgICAgIHRoaXMudGlja1NwYWNpbmcgPSA2MDAwL3RoaXMuZGlhbWV0ZXI7CiAgICAgICAgCiAgICAgICAgaWYgKCF0aGlzLmh1YlJhZGl1cykgewogICAgICAgICAgICB0aGlzLmh1YlJhZGl1cyA9IHRoaXMuZGlhbWV0ZXIvMTg7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHRoaXMuc2hhZG93T2Zmc2V0ID0gMC41ICsgdGhpcy5yaW5nV2lkdGgvOTsKICAgICAgICB0aGlzLnNoYWRvd1dpZHRoID0gdGhpcy5yaW5nV2lkdGgqMTsKICAgICAgICAKICAgICAgICB0aGlzLnRpY2tQYWRkaW5nID0gMyArIE1hdGgucG93KHRoaXMuZGlhbWV0ZXIvMjAsIDAuNyk7CiAgICAgICAgdGhpcy50aWNrT3V0ZXJSYWRpdXMgPSB0aGlzLl9yYWRpdXMgLSB0aGlzLnJpbmdXaWR0aC8yIC0gdGhpcy50aWNrUGFkZGluZzsKICAgICAgICB0aGlzLnRpY2tMZW5ndGggPSAodGhpcy5zaG93VGlja3MpID8gdGhpcy5fcmFkaXVzLzEzIDogMDsKICAgICAgICAKICAgICAgICBpZiAodGhpcy50aWNrcy5sZW5ndGggPT0gMCkgewogICAgICAgICAgICAvLyBubyB0aWNrcywgbGV0cyBtYWtlIHNvbWUuCiAgICAgICAgICAgIHZhciBtYXggPSB0aGlzLm1heCwKICAgICAgICAgICAgICAgIG1pbiA9IHRoaXMubWluLAogICAgICAgICAgICAgICAgc2V0bWF4ID0gdGhpcy5zZXRtYXgsCiAgICAgICAgICAgICAgICBzZXRtaW4gPSB0aGlzLnNldG1pbiwKICAgICAgICAgICAgICAgIHRpID0gKG1heCAtIG1pbikgKiB0aGlzLnRpY2tTcGFjaW5nIC8gdGhpcy5zcGFuOwogICAgICAgICAgICB2YXIgdGYgPSBNYXRoLmZsb29yKHBhcnNlRmxvYXQoKE1hdGgubG9nKHRpKS9NYXRoLmxvZygxMCkpLnRvRml4ZWQoMTEpKSk7CiAgICAgICAgICAgIHZhciB0cCA9ICh0aS9NYXRoLnBvdygxMCwgdGYpKTsKICAgICAgICAgICAgKHRwID4gMiAmJiB0cCA8PSAyLjUpID8gdHAgPSAyLjUgOiB0cCA9IE1hdGguY2VpbCh0cCk7CiAgICAgICAgICAgIHZhciB0ID0gdGhpcy50aWNrUG9zaXRpb25zOwogICAgICAgICAgICB2YXIgdHBpbmRleCwgbnQ7CiAgICAKICAgICAgICAgICAgZm9yIChpPTA7IGk8dC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKHRwID09IHRbaV0gfHwgaSAmJiB0W2ktMV0gPCB0cCAmJiB0cCA8IHRbaV0pIHsgCiAgICAgICAgICAgICAgICAgICAgdGkgPSB0W2ldKk1hdGgucG93KDEwLCB0Zik7CiAgICAgICAgICAgICAgICAgICAgdHBpbmRleCA9IGk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAKICAgICAgICAgICAgZm9yIChpPTA7IGk8dC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKHRwID09IHRbaV0gfHwgaSAmJiB0W2ktMV0gPCB0cCAmJiB0cCA8IHRbaV0pIHsgCiAgICAgICAgICAgICAgICAgICAgdGkgPSB0W2ldKk1hdGgucG93KDEwLCB0Zik7CiAgICAgICAgICAgICAgICAgICAgbnQgPSBNYXRoLmNlaWwoKG1heCAtIG1pbikgLyB0aSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAKICAgICAgICAgICAgLy8gYm90aCBtYXggYW5kIG1pbiBhcmUgZnJlZQogICAgICAgICAgICBpZiAoc2V0bWF4ICYmIHNldG1pbikgewogICAgICAgICAgICAgICAgdmFyIHRtaW4gPSAobWluID4gMCkgPyBtaW4gLSBtaW4gJSB0aSA6IG1pbiAtIG1pbiAlIHRpIC0gdGk7CiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZm9yY2VaZXJvKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGRpZmYgPSBNYXRoLm1pbihtaW4gLSB0bWluLCAwLjgqdGkpOwogICAgICAgICAgICAgICAgICAgIHZhciBudHAgPSBNYXRoLmZsb29yKGRpZmYvdFt0cGluZGV4XSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKG50cCA+IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdG1pbiA9IHRtaW4gKyB0W3RwaW5kZXhdICogKG50cC0xKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlSW50KHRtaW4sIDEwKSAhPSB0bWluICYmIHBhcnNlSW50KHRtaW4tdFt0cGluZGV4XSwgMTApID09IHRtaW4tdFt0cGluZGV4XSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1pbiA9IHRtaW4gLSB0W3RwaW5kZXhdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKG1pbiA9PSB0bWluKSB7CiAgICAgICAgICAgICAgICAgICAgbWluIC09IHRpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gdG1pbiBzaG91bGQgYWx3YXlzIGJlIGxvd2VyIHRoYW4gZGF0YU1pbgogICAgICAgICAgICAgICAgICAgIGlmIChtaW4gLSB0bWluID4gMC4yMyp0aSkgewogICAgICAgICAgICAgICAgICAgICAgICBtaW4gPSB0bWluOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgbWluID0gdG1pbiAtdGk7CiAgICAgICAgICAgICAgICAgICAgICAgIG50ICs9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbnQgKz0gMTsKICAgICAgICAgICAgICAgIHZhciB0bWF4ID0gbWluICsgKG50IC0gMSkgKiB0aTsKICAgICAgICAgICAgICAgIGlmIChtYXggPj0gdG1heCkgeyAKICAgICAgICAgICAgICAgICAgICB0bWF4ICs9IHRpOwogICAgICAgICAgICAgICAgICAgIG50ICs9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyBub3cgdG1heCBzaG91bGQgYWx3YXlzIGJlIG1yb2UgdGhhbiBkYXRhTWF4CiAgICAgICAgICAgICAgICBpZiAodG1heCAtIG1heCA8IDAuMjMqdGkpIHsgCiAgICAgICAgICAgICAgICAgICAgdG1heCArPSB0aTsKICAgICAgICAgICAgICAgICAgICBudCArPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5tYXggPSBtYXggPSB0bWF4OwogICAgICAgICAgICAgICAgdGhpcy5taW4gPSBtaW47ICAgIAoKICAgICAgICAgICAgICAgIHRoaXMudGlja0ludGVydmFsID0gdGk7CiAgICAgICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gbnQ7CiAgICAgICAgICAgICAgICB2YXIgaXQ7CiAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTxudDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgaXQgPSBwYXJzZUZsb2F0KChtaW4raSp0aSkudG9GaXhlZCgxMSkpOwogICAgICAgICAgICAgICAgICAgIHRoaXMudGlja3MucHVzaChbaXQsIGl0XSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0aGlzLm1heCA9IHRoaXMudGlja3NbbnQtMV1bMV07CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdGhpcy50aWNrRmFjdG9yID0gdGY7ICAgICAgCiAgICAgICAgICAgICAgICAvLyBkZXRlcm1pbmUgbnVtYmVyIG9mIG1pbm9yIHRpY2tzCgogICAgICAgICAgICAgICAgdGhpcy5udW1iZXJNaW5vclRpY2tzID0gZ2V0bm10KHRoaXMudGlja1Bvc2l0aW9ucywgdGhpcy50aWNrSW50ZXJ2YWwsIHRoaXMudGlja0ZhY3Rvcik7ICAgICAKICAgICAgICAKICAgICAgICAgICAgICAgIGlmICghdGhpcy5udW1iZXJNaW5vclRpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJNaW5vclRpY2tzID0gZ2V0bm10KHRoaXMudGlja1Bvc2l0aW9ucywgdGhpcy50aWNrSW50ZXJ2YWwsIHRoaXMudGlja0ZhY3Rvci0xKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBtYXggaXMgZnJlZSwgbWluIGlzIGZpeGVkCiAgICAgICAgICAgIGVsc2UgaWYgKHNldG1heCkgewogICAgICAgICAgICAgICAgdmFyIHRtYXggPSBtaW4gKyAobnQgLSAxKSAqIHRpOwogICAgICAgICAgICAgICAgaWYgKG1heCA+PSB0bWF4KSB7CiAgICAgICAgICAgICAgICAgICAgbWF4ID0gdG1heCArIHRpOwogICAgICAgICAgICAgICAgICAgIG50ICs9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBtYXggPSB0bWF4OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHRoaXMudGlja0ludGVydmFsID0gdGhpcy50aWNrSW50ZXJ2YWwgfHwgdGk7CiAgICAgICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gdGhpcy5udW1iZXJUaWNrcyB8fCBudDsKICAgICAgICAgICAgICAgIHZhciBpdDsKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPHRoaXMubnVtYmVyVGlja3M7IGkrKykgewogICAgICAgICAgICAgICAgICAgIGl0ID0gcGFyc2VGbG9hdCgobWluK2kqdGhpcy50aWNrSW50ZXJ2YWwpLnRvRml4ZWQoMTEpKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRpY2tzLnB1c2goW2l0LCBpdF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhpcy5tYXggPSB0aGlzLnRpY2tzW3RoaXMubnVtYmVyVGlja3MtMV1bMV07CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdGhpcy50aWNrRmFjdG9yID0gdGY7CiAgICAgICAgICAgICAgICAvLyBkZXRlcm1pbmUgbnVtYmVyIG9mIG1pbm9yIHRpY2tzCiAgICAgICAgICAgICAgICB0aGlzLm51bWJlck1pbm9yVGlja3MgPSBnZXRubXQodGhpcy50aWNrUG9zaXRpb25zLCB0aGlzLnRpY2tJbnRlcnZhbCwgdGhpcy50aWNrRmFjdG9yKTsKICAgICAgICAKICAgICAgICAgICAgICAgIGlmICghdGhpcy5udW1iZXJNaW5vclRpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJNaW5vclRpY2tzID0gZ2V0bm10KHRoaXMudGlja1Bvc2l0aW9ucywgdGhpcy50aWNrSW50ZXJ2YWwsIHRoaXMudGlja0ZhY3Rvci0xKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gbm90IHNldHRpbmcgbWF4IG9yIG1pbgogICAgICAgICAgICBpZiAoIXNldG1heCAmJiAhc2V0bWluKSB7CiAgICAgICAgICAgICAgICB2YXIgcmFuZ2UgPSB0aGlzLm1heCAtIHRoaXMubWluOwogICAgICAgICAgICAgICAgdGYgPSBNYXRoLmZsb29yKHBhcnNlRmxvYXQoKE1hdGgubG9nKHJhbmdlKS9NYXRoLmxvZygxMCkpLnRvRml4ZWQoMTEpKSkgLSAxOwogICAgICAgICAgICAgICAgdmFyIG50aWNrcyA9IFs1LDYsNCw3LDMsOCw5LDEwLDJdLCByZXMsIG51bXRpY2tzLCBub25TaWdEaWdpdHM9MCwgc2lnUmFuZ2U7CiAgICAgICAgICAgICAgICAvLyBjaGVjayB0byBzZWUgaG93IG1hbnkgemVyb3MgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIHJhbmdlCiAgICAgICAgICAgICAgICBpZiAocmFuZ2UgPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHJzdHIgPSBTdHJpbmcocmFuZ2UpOwogICAgICAgICAgICAgICAgICAgIGlmIChyc3RyLnNlYXJjaCgvXC4vKSA9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9IHJzdHIuc2VhcmNoKC8wKyQvKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG5vblNpZ0RpZ2l0cyA9IChwb3MgPiAwKSA/IHJzdHIubGVuZ3RoIC0gcG9zIC0gMSA6IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2lnUmFuZ2UgPSByYW5nZS9NYXRoLnBvdygxMCwgbm9uU2lnRGlnaXRzKTsKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPG50aWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHJlcyA9IHNpZ1JhbmdlLyhudGlja3NbaV0tMSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBwYXJzZUludChyZXMsIDEwKSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gbnRpY2tzW2ldOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9IHJhbmdlLyh0aGlzLm51bWJlclRpY2tzLTEpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRpY2tGYWN0b3IgPSB0ZisxOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgaXQ7CiAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTx0aGlzLm51bWJlclRpY2tzOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBpdCA9IHBhcnNlRmxvYXQoKHRoaXMubWluK2kqdGhpcy50aWNrSW50ZXJ2YWwpLnRvRml4ZWQoMTEpKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLnRpY2tzLnB1c2goW2l0LCBpdF0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gZGV0ZXJtaW5lIG51bWJlciBvZiBtaW5vciB0aWNrcwogICAgICAgICAgICAgICAgdGhpcy5udW1iZXJNaW5vclRpY2tzID0gZ2V0bm10KHRoaXMudGlja1Bvc2l0aW9ucywgdGhpcy50aWNrSW50ZXJ2YWwsIHRoaXMudGlja0ZhY3Rvcik7CiAgICAgICAgCiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubnVtYmVyTWlub3JUaWNrcykgewogICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyTWlub3JUaWNrcyA9IGdldG5tdCh0aGlzLnRpY2tQb3NpdGlvbnMsIHRoaXMudGlja0ludGVydmFsLCB0aGlzLnRpY2tGYWN0b3ItMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmICghdGhpcy5udW1iZXJNaW5vclRpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJNaW5vclRpY2tzID0gMTsKICAgICAgICAgICAgICAgICAgICB2YXIgbnVtcyA9IFs0LCA1LCAzLCA2LCAyXTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTw1OyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXAgPSB0aGlzLnRpY2tJbnRlcnZhbC9udW1zW2ldOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVtcCA9PSBwYXJzZUludCh0ZW1wLCAxMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyTWlub3JUaWNrcyA9IG51bXNbaV0tMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAoKICAgICAgICB2YXIgciA9IHRoaXMuX3JhZGl1cywKICAgICAgICAgICAgc2EgPSB0aGlzLnN0YXJ0QW5nbGUsCiAgICAgICAgICAgIGVhID0gdGhpcy5lbmRBbmdsZSwgICAgICAgCiAgICAgICAgICAgIHBpID0gTWF0aC5QSSwKICAgICAgICAgICAgaHBpID0gTWF0aC5QSS8yOwogICAgICAgICAgICAKICAgICAgICBpZiAodGhpcy5zZW1pQ2lyY3VsYXIpIHsKICAgICAgICAgICAgdmFyIG92ZXJBbmdsZSA9IE1hdGguYXRhbih0aGlzLmlubmVyUGFkL3IpLAogICAgICAgICAgICAgICAgb3V0ZXJzYSA9IHRoaXMub3V0ZXJTdGFydEFuZ2xlID0gc2EgLSBvdmVyQW5nbGUsCiAgICAgICAgICAgICAgICBvdXRlcmVhID0gdGhpcy5vdXRlckVuZEFuZ2xlID0gZWEgKyBvdmVyQW5nbGUsCiAgICAgICAgICAgICAgICBodWJzYSA9IHRoaXMuaHViU3RhcnRBbmdsZSA9IHNhIC0gTWF0aC5hdGFuKHRoaXMuaW5uZXJQYWQvdGhpcy5odWJSYWRpdXMqMiksCiAgICAgICAgICAgICAgICBodWJlYSA9IHRoaXMuaHViRW5kQW5nbGUgPSBlYSArIE1hdGguYXRhbih0aGlzLmlubmVyUGFkL3RoaXMuaHViUmFkaXVzKjIpOwoKICAgICAgICAgICAgY3R4LnNhdmUoKTsgICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIGN0eC50cmFuc2xhdGUodGhpcy5fY2VudGVyWzBdLCB0aGlzLl9jZW50ZXJbMV0pOwogICAgICAgICAgICBjdHgubGluZUpvaW4gPSAicm91bmQiOwogICAgICAgICAgICBjdHgubGluZUNhcCA9ICJyb3VuZCI7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBkcmF3IHRoZSBpbm5lcmJhY2tncm91bmQKICAgICAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOyAgCiAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSB0aGlzLmJhY2tncm91bmQ7CiAgICAgICAgICAgIGN0eC5hcmMoMCwgMCwgciwgb3V0ZXJzYSwgb3V0ZXJlYSwgZmFsc2UpOwogICAgICAgICAgICBjdHguY2xvc2VQYXRoKCk7CiAgICAgICAgICAgIGN0eC5maWxsKCk7CiAgICAgICAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBkcmF3IHRoZSBzaGFkb3cKICAgICAgICAgICAgLy8gdGhlIG91dGVyIHJpbmcuCiAgICAgICAgICAgIHZhciBzaGFkb3dDb2xvciA9ICdyZ2JhKDAsMCwwLCcrdGhpcy5zaGFkb3dBbHBoYSsnKSc7CiAgICAgICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLnNoYWRvd0RlcHRoOyBpKyspIHsKICAgICAgICAgICAgICAgIGN0eC50cmFuc2xhdGUodGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5jb3ModGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSksIHRoaXMuc2hhZG93T2Zmc2V0Kk1hdGguc2luKHRoaXMuc2hhZG93QW5nbGUvMTgwKk1hdGguUEkpKTsKICAgICAgICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTsgIAogICAgICAgICAgICAgICAgY3R4LnN0cm9rZVN0eWxlID0gc2hhZG93Q29sb3I7CiAgICAgICAgICAgICAgICBjdHgubGluZVdpZHRoID0gdGhpcy5zaGFkb3dXaWR0aDsKICAgICAgICAgICAgICAgIGN0eC5hcmMoMCAsMCwgciwgb3V0ZXJzYSwgb3V0ZXJlYSwgZmFsc2UpOwogICAgICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpOwogICAgICAgICAgICAgICAgY3R4LnN0cm9rZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyB0aGUgaW5uZXIgaHViLgogICAgICAgICAgICBjdHguc2F2ZSgpOwogICAgICAgICAgICB2YXIgdGVtcGQgPSBwYXJzZUludCgodGhpcy5zaGFkb3dEZXB0aCsxKS8yLCAxMCk7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0ZW1wZDsgaSsrKSB7CiAgICAgICAgICAgICAgICBjdHgudHJhbnNsYXRlKHRoaXMuc2hhZG93T2Zmc2V0Kk1hdGguY29zKHRoaXMuc2hhZG93QW5nbGUvMTgwKk1hdGguUEkpLCB0aGlzLnNoYWRvd09mZnNldCpNYXRoLnNpbih0aGlzLnNoYWRvd0FuZ2xlLzE4MCpNYXRoLlBJKSk7CiAgICAgICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7ICAKICAgICAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSBzaGFkb3dDb2xvcjsKICAgICAgICAgICAgICAgIGN0eC5hcmMoMCAsMCwgdGhpcy5odWJSYWRpdXMsIGh1YnNhLCBodWJlYSwgZmFsc2UpOwogICAgICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpOwogICAgICAgICAgICAgICAgY3R4LmZpbGwoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gZHJhdyB0aGUgb3V0ZXIgcmluZy4KICAgICAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOyAgCiAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IHRoaXMucmluZ0NvbG9yOwogICAgICAgICAgICBjdHgubGluZVdpZHRoID0gdGhpcy5yaW5nV2lkdGg7CiAgICAgICAgICAgIGN0eC5hcmMoMCAsMCwgciwgb3V0ZXJzYSwgb3V0ZXJlYSwgZmFsc2UpOwogICAgICAgICAgICBjdHguY2xvc2VQYXRoKCk7CiAgICAgICAgICAgIGN0eC5zdHJva2UoKTsKICAgICAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIGRyYXcgdGhlIGh1YgogICAgICAgICAgICAKICAgICAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOyAgCiAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSB0aGlzLnJpbmdDb2xvcjsKICAgICAgICAgICAgY3R4LmFyYygwICwwLCB0aGlzLmh1YlJhZGl1cyxodWJzYSwgaHViZWEsIGZhbHNlKTsKICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpOwogICAgICAgICAgICBjdHguZmlsbCgpOwogICAgICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gZHJhdyB0aGUgdGlja3MKICAgICAgICAgICAgaWYgKHRoaXMuc2hvd1RpY2tzKSB7CiAgICAgICAgICAgICAgICBjdHguc2F2ZSgpOwogICAgICAgICAgICAgICAgdmFyIG9yYWQgPSB0aGlzLnRpY2tPdXRlclJhZGl1cywKICAgICAgICAgICAgICAgICAgICB0bCA9IHRoaXMudGlja0xlbmd0aCwKICAgICAgICAgICAgICAgICAgICBtdGwgPSB0bC8yLAogICAgICAgICAgICAgICAgICAgIG5tdCA9IHRoaXMubnVtYmVyTWlub3JUaWNrcywKICAgICAgICAgICAgICAgICAgICB0cyA9IHRoaXMuc3BhbiAqIE1hdGguUEkgLyAxODAgLyAodGhpcy50aWNrcy5sZW5ndGgtMSksCiAgICAgICAgICAgICAgICAgICAgbXRzID0gdHMvKG5tdCArIDEpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpPHRoaXMudGlja3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7CiAgICAgICAgICAgICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IDEuNSArIHRoaXMuZGlhbWV0ZXIvMzYwOwogICAgICAgICAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IHRoaXMucmluZ0NvbG9yOwogICAgICAgICAgICAgICAgICAgIHZhciB3cHMgPSB0cyppK3NhOwogICAgICAgICAgICAgICAgICAgIGN0eC5tb3ZlVG8oLW9yYWQgKiBNYXRoLmNvcyh0cyppK3NhKSwgb3JhZCAqIE1hdGguc2luKHRzKmkrc2EpKTsKICAgICAgICAgICAgICAgICAgICBjdHgubGluZVRvKC0ob3JhZC10bCkgKiBNYXRoLmNvcyh0cyppK3NhKSwgKG9yYWQgLSB0bCkgKiBNYXRoLnNpbih0cyppK3NhKSk7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGlja1BvaW50cy5wdXNoKFsob3JhZC10bCkgKiBNYXRoLmNvcyh0cyppK3NhKSArIHRoaXMuX2NlbnRlclswXSArIHRoaXMuY2FudmFzLl9vZmZzZXRzLmxlZnQsIChvcmFkIC0gdGwpICogTWF0aC5zaW4odHMqaStzYSkgKyB0aGlzLl9jZW50ZXJbMV0gKyB0aGlzLmNhbnZhcy5fb2Zmc2V0cy50b3AsIHRzKmkrc2FdKTsKICAgICAgICAgICAgICAgICAgICBjdHguc3Ryb2tlKCk7CiAgICAgICAgICAgICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IDEuMCArIHRoaXMuZGlhbWV0ZXIvNDQwOwogICAgICAgICAgICAgICAgICAgIGlmIChpPHRoaXMudGlja3MubGVuZ3RoLTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaj0xOyBqPD1ubXQ7IGorKykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LmJlZ2luUGF0aCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4Lm1vdmVUbygtb3JhZCAqIE1hdGguY29zKHRzKmkrbXRzKmorc2EpLCBvcmFkICogTWF0aC5zaW4odHMqaSttdHMqaitzYSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LmxpbmVUbygtKG9yYWQtbXRsKSAqIE1hdGguY29zKHRzKmkrbXRzKmorc2EpLCAob3JhZC1tdGwpICogTWF0aC5zaW4odHMqaSttdHMqaitzYSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4LnN0cm9rZSgpOwogICAgICAgICAgICAgICAgICAgICAgICB9ICAgCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gZHJhdyB0aGUgdGljayBsYWJlbHMKICAgICAgICAgICAgaWYgKHRoaXMuc2hvd1RpY2tMYWJlbHMpIHsKICAgICAgICAgICAgICAgIHZhciBlbGVtLCBsLCB0LCBldywgZWgsIGRpbSwgbWF4ZGltPTA7CiAgICAgICAgICAgICAgICB2YXIgdHAgPSB0aGlzLnRpY2tQYWRkaW5nICogKDEgLSAxLyh0aGlzLmRpYW1ldGVyLzgwKzEpKTsKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPHRoaXMudGlja3MubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBlbGVtID0gJCgnPGRpdiBjbGFzcz0ianFwbG90LW1ldGVyR2F1Z2UtdGljayIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyI+Jyt0aGlzLnRpY2tzW2ldWzFdKyc8L2Rpdj4nKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbnZhcy5fZWxlbS5hZnRlcihlbGVtKTsKICAgICAgICAgICAgICAgICAgICBldyA9IGVsZW0ub3V0ZXJXaWR0aCh0cnVlKTsKICAgICAgICAgICAgICAgICAgICBlaCA9IGVsZW0ub3V0ZXJIZWlnaHQodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgbCA9IHRoaXMuX3RpY2tQb2ludHNbaV1bMF0gLSBldyAqICh0aGlzLl90aWNrUG9pbnRzW2ldWzJdLU1hdGguUEkpL01hdGguUEkgLSB0cCAqIE1hdGguY29zKHRoaXMuX3RpY2tQb2ludHNbaV1bMl0pOwogICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLl90aWNrUG9pbnRzW2ldWzFdIC0gZWgvMiArIGVoLzIgKiBNYXRoLnBvdyhNYXRoLmFicygoTWF0aC5zaW4odGhpcy5fdGlja1BvaW50c1tpXVsyXSkpKSwgMC41KSArIHRwLzMgKiBNYXRoLnBvdyhNYXRoLmFicygoTWF0aC5zaW4odGhpcy5fdGlja1BvaW50c1tpXVsyXSkpKSwgMC41KSA7CiAgICAgICAgICAgICAgICAgICAgLy8gdCA9IHRoaXMuX3RpY2tQb2ludHNbaV1bMV0gLSBlaC8yIC0gZWgvMiAqIE1hdGguc2luKHRoaXMuX3RpY2tQb2ludHNbaV1bMl0pIC0gdHAvMiAqIE1hdGguc2luKHRoaXMuX3RpY2tQb2ludHNbaV1bMl0pOwogICAgICAgICAgICAgICAgICAgIGVsZW0uY3NzKHtsZWZ0OmwsIHRvcDp0LCBjb2xvcjogdGhpcy50aWNrQ29sb3J9KTsKICAgICAgICAgICAgICAgICAgICBkaW0gID0gZXcqTWF0aC5jb3ModGhpcy5fdGlja1BvaW50c1tpXVsyXSkgKyBlaCpNYXRoLnNpbihNYXRoLlBJLzIrdGhpcy5fdGlja1BvaW50c1tpXVsyXS8yKTsKICAgICAgICAgICAgICAgICAgICBtYXhkaW0gPSAoZGltID4gbWF4ZGltKSA/IGRpbSA6IG1heGRpbTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gZHJhdyB0aGUgZ2F1Z2UgbGFiZWwKICAgICAgICAgICAgaWYgKHRoaXMubGFiZWwgJiYgdGhpcy5sYWJlbFBvc2l0aW9uID09ICdpbnNpZGUnKSB7CiAgICAgICAgICAgICAgICB2YXIgbCA9IHRoaXMuX2NlbnRlclswXSArIHRoaXMuY2FudmFzLl9vZmZzZXRzLmxlZnQ7CiAgICAgICAgICAgICAgICB2YXIgdHAgPSB0aGlzLnRpY2tQYWRkaW5nICogKDEgLSAxLyh0aGlzLmRpYW1ldGVyLzgwKzEpKTsKICAgICAgICAgICAgICAgIHZhciB0ID0gMC41Kih0aGlzLl9jZW50ZXJbMV0gKyB0aGlzLmNhbnZhcy5fb2Zmc2V0cy50b3AgLSB0aGlzLmh1YlJhZGl1cykgKyAwLjUqKHRoaXMuX2NlbnRlclsxXSArIHRoaXMuY2FudmFzLl9vZmZzZXRzLnRvcCAtIHRoaXMudGlja091dGVyUmFkaXVzICsgdGhpcy50aWNrTGVuZ3RoICsgdHApICsgdGhpcy5sYWJlbEhlaWdodEFkanVzdDsKICAgICAgICAgICAgICAgIC8vIHRoaXMuX2xhYmVsRWxlbSA9ICQoJzxkaXYgY2xhc3M9ImpxcGxvdC1tZXRlckdhdWdlLWxhYmVsIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7Ij4nK3RoaXMubGFiZWwrJzwvZGl2PicpOwogICAgICAgICAgICAgICAgLy8gdGhpcy5jYW52YXMuX2VsZW0uYWZ0ZXIodGhpcy5fbGFiZWxFbGVtKTsKICAgICAgICAgICAgICAgIGwgLT0gdGhpcy5fbGFiZWxFbGVtLm91dGVyV2lkdGgodHJ1ZSkvMjsKICAgICAgICAgICAgICAgIHQgLT0gdGhpcy5fbGFiZWxFbGVtLm91dGVySGVpZ2h0KHRydWUpLzI7CiAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbEVsZW0uY3NzKHtsZWZ0OmwsIHRvcDp0fSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubGFiZWwgJiYgdGhpcy5sYWJlbFBvc2l0aW9uID09ICdib3R0b20nKSB7CiAgICAgICAgICAgICAgICB2YXIgbCA9IHRoaXMuX2NlbnRlclswXSArIHRoaXMuY2FudmFzLl9vZmZzZXRzLmxlZnQgLSB0aGlzLl9sYWJlbEVsZW0ub3V0ZXJXaWR0aCh0cnVlKS8yOwogICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl9jZW50ZXJbMV0gKyB0aGlzLmNhbnZhcy5fb2Zmc2V0cy50b3AgKyB0aGlzLmlubmVyUGFkICsgdGhpcy5yaW5nV2lkdGggKyB0aGlzLnBhZGRpbmcgKyB0aGlzLmxhYmVsSGVpZ2h0QWRqdXN0OwogICAgICAgICAgICAgICAgdGhpcy5fbGFiZWxFbGVtLmNzcyh7bGVmdDpsLCB0b3A6dH0pOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIGRyYXcgdGhlIGludGVydmFscwogICAgICAgICAgICAKICAgICAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICAgICAgdmFyIGlubmVyID0gdGhpcy5pbnRlcnZhbElubmVyUmFkaXVzIHx8IHRoaXMuaHViUmFkaXVzICogMS41OwogICAgICAgICAgICBpZiAodGhpcy5pbnRlcnZhbE91dGVyUmFkaXVzID09IG51bGwpIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3dUaWNrTGFiZWxzKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIG91dGVyID0gKHRoaXMudGlja091dGVyUmFkaXVzIC0gdGhpcy50aWNrTGVuZ3RoIC0gdGhpcy50aWNrUGFkZGluZyAtIHRoaXMuZGlhbWV0ZXIvOCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICB2YXIgb3V0ZXIgPSAodGhpcy50aWNrT3V0ZXJSYWRpdXMgLSB0aGlzLnRpY2tMZW5ndGggLSB0aGlzLmRpYW1ldGVyLzE2KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBvdXRlciA9IHRoaXMuaW50ZXJ2YWxPdXRlclJhZGl1czsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgcmFuZ2UgPSB0aGlzLm1heCAtIHRoaXMubWluOwogICAgICAgICAgICB2YXIgaW50cmFuZ2UgPSB0aGlzLmludGVydmFsc1t0aGlzLmludGVydmFscy5sZW5ndGgtMV0gLSB0aGlzLm1pbjsKICAgICAgICAgICAgdmFyIHN0YXJ0LCBlbmQsIHNwYW4gPSB0aGlzLnNwYW4qTWF0aC5QSS8xODA7CiAgICAgICAgICAgIGZvciAoaT0wOyBpPHRoaXMuaW50ZXJ2YWxzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICBzdGFydCA9IChpID09IDApID8gc2EgOiBzYSArICh0aGlzLmludGVydmFsc1tpLTFdWzBdIC0gdGhpcy5taW4pKnNwYW4vcmFuZ2U7CiAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZW5kID0gc2EgKyAodGhpcy5pbnRlcnZhbHNbaV1bMF0gLSB0aGlzLm1pbikqc3Bhbi9yYW5nZTsKICAgICAgICAgICAgICAgIGlmIChlbmQgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgZW5kID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTsKICAgICAgICAgICAgICAgIGN0eC5maWxsU3R5bGUgPSB0aGlzLmludGVydmFsc1tpXVsyXTsKICAgICAgICAgICAgICAgIGN0eC5hcmMoMCwgMCwgaW5uZXIsIHN0YXJ0LCBlbmQsIGZhbHNlKTsKICAgICAgICAgICAgICAgIGN0eC5saW5lVG8ob3V0ZXIqTWF0aC5jb3MoZW5kKSwgb3V0ZXIqTWF0aC5zaW4oZW5kKSk7CiAgICAgICAgICAgICAgICBjdHguYXJjKDAsIDAsIG91dGVyLCBlbmQsIHN0YXJ0LCB0cnVlKTsKICAgICAgICAgICAgICAgIGN0eC5saW5lVG8oaW5uZXIqTWF0aC5jb3Moc3RhcnQpLCBpbm5lcipNYXRoLnNpbihzdGFydCkpOwogICAgICAgICAgICAgICAgY3R4LmNsb3NlUGF0aCgpOwogICAgICAgICAgICAgICAgY3R4LmZpbGwoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gZHJhdyB0aGUgbmVlZGxlCiAgICAgICAgICAgIHZhciBkYXRhcG9pbnQgPSB0aGlzLmRhdGFbMF1bMV07CiAgICAgICAgICAgIHZhciBkYXRhc3BhbiA9IHRoaXMubWF4IC0gdGhpcy5taW47CiAgICAgICAgICAgIGlmICh0aGlzLnBlZ05lZWRsZSkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVswXVsxXSA+IHRoaXMubWF4ICsgZGF0YXNwYW4qMy90aGlzLnNwYW4pIHsKICAgICAgICAgICAgICAgICAgICBkYXRhcG9pbnQgPSB0aGlzLm1heCArIGRhdGFzcGFuKjMvdGhpcy5zcGFuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVswXVsxXSA8IHRoaXMubWluIC0gZGF0YXNwYW4qMy90aGlzLnNwYW4pIHsKICAgICAgICAgICAgICAgICAgICBkYXRhcG9pbnQgPSB0aGlzLm1pbiAtIGRhdGFzcGFuKjMvdGhpcy5zcGFuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciBkYXRhYW5nID0gKGRhdGFwb2ludCAtIHRoaXMubWluKS9kYXRhc3BhbiAqIHRoaXMuc3BhbiAqIE1hdGguUEkvMTgwICsgdGhpcy5zdGFydEFuZ2xlOwogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTsKICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IHRoaXMucmluZ0NvbG9yOwogICAgICAgICAgICBjdHguc3Ryb2tlU3R5bGUgPSB0aGlzLnJpbmdDb2xvcjsKICAgICAgICAgICAgdGhpcy5uZWVkbGVMZW5ndGggPSAodGhpcy50aWNrT3V0ZXJSYWRpdXMgLSB0aGlzLnRpY2tMZW5ndGgpICogMC44NTsKICAgICAgICAgICAgdGhpcy5uZWVkbGVUaGlja25lc3MgPSAodGhpcy5uZWVkbGVUaGlja25lc3MgPCAyKSA/IDIgOiB0aGlzLm5lZWRsZVRoaWNrbmVzczsKICAgICAgICAgICAgdmFyIGVuZHdpZHRoID0gdGhpcy5uZWVkbGVUaGlja25lc3MgKiAwLjQ7CgogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIGRsID0gdGhpcy5uZWVkbGVMZW5ndGgvMTA7CiAgICAgICAgICAgIHZhciBkdCA9ICh0aGlzLm5lZWRsZVRoaWNrbmVzcyAtIGVuZHdpZHRoKS8xMDsKICAgICAgICAgICAgdmFyIHRlbXBsOwogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8MTA7IGkrKykgewogICAgICAgICAgICAgICAgdGVtcGwgPSB0aGlzLm5lZWRsZVRoaWNrbmVzcyAtIGkqZHQ7CiAgICAgICAgICAgICAgICBjdHgubW92ZVRvKGRsKmkqTWF0aC5jb3MoZGF0YWFuZyksIGRsKmkqTWF0aC5zaW4oZGF0YWFuZykpOwogICAgICAgICAgICAgICAgY3R4LmxpbmVXaWR0aCA9IHRlbXBsOwogICAgICAgICAgICAgICAgY3R4LmxpbmVUbyhkbCooaSsxKSpNYXRoLmNvcyhkYXRhYW5nKSwgZGwqKGkrMSkqTWF0aC5zaW4oZGF0YWFuZykpOwogICAgICAgICAgICAgICAgY3R4LnN0cm9rZSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdGhpcy5fY2VudGVyID0gWyhjdyAtIHRyYW5zICogb2ZmeCkvMiArIHRyYW5zICogb2ZmeCwgKGNoIC0gdHJhbnMqb2ZmeSkvMiArIHRyYW5zICogb2ZmeV07CiAgICAgICAgfSAgICAgICAgICAgICAgIAogICAgfTsKICAgIAogICAgJC5qcXBsb3QuTWV0ZXJHYXVnZUF4aXNSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuTWV0ZXJHYXVnZUF4aXNSZW5kZXJlci5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7CiAgICAkLmpxcGxvdC5NZXRlckdhdWdlQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90Lk1ldGVyR2F1Z2VBeGlzUmVuZGVyZXI7CiAgICAgICAgCiAgICAKICAgIC8vIFRoZXJlIGFyZSBubyB0cmFkaXRpb25hbCBheGVzIG9uIGEgZ2F1Z2UgY2hhcnQuICBXZSBqdXN0IG5lZWQgdG8gcHJvdmlkZQogICAgLy8gZHVtbXkgb2JqZWN0cyB3aXRoIHByb3BlcnRpZXMgc28gdGhlIHBsb3Qgd2lsbCByZW5kZXIuCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBheGlzIG9iamVjdC4KICAgICQuanFwbG90Lk1ldGVyR2F1Z2VBeGlzUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zKXsKICAgICAgICAvLwogICAgICAgIHRoaXMudGlja1JlbmRlcmVyID0gJC5qcXBsb3QuTWV0ZXJHYXVnZVRpY2tSZW5kZXJlcjsKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgICAgICAvLyBJIGRvbid0IHRoaW5rIEknbSBnb2luZyB0byBuZWVkIF9kYXRhQm91bmRzIGhlcmUuCiAgICAgICAgLy8gaGF2ZSB0byBnbyBBeGlzIHNjYWxpbmcgaW4gYSB3YXkgdG8gZml0IGNoYXJ0IG9udG8gcGxvdCBhcmVhCiAgICAgICAgLy8gYW5kIHByb3ZpZGUgdTJwIGFuZCBwMnUgZnVuY3Rpb25hbGl0eSBmb3IgbW91c2UgY3Vyc29yLCBldGMuCiAgICAgICAgLy8gZm9yIGNvbnZpZW5lbmNlIHNldCBfZGF0YUJvdW5kcyB0byAwIGFuZCAxMDAgYW5kCiAgICAgICAgLy8gc2V0IG1pbi9tYXggdG8gMCBhbmQgMTAwLgogICAgICAgIHRoaXMuX2RhdGFCb3VuZHMgPSB7bWluOjAsIG1heDoxMDB9OwogICAgICAgIHRoaXMubWluID0gMDsKICAgICAgICB0aGlzLm1heCA9IDEwMDsKICAgICAgICB0aGlzLnNob3dUaWNrcyA9IGZhbHNlOwogICAgICAgIHRoaXMudGlja3MgPSBbXTsKICAgICAgICB0aGlzLnNob3dNYXJrID0gZmFsc2U7CiAgICAgICAgdGhpcy5zaG93ID0gZmFsc2U7IAogICAgfTsKICAgIAogICAgJC5qcXBsb3QuTWV0ZXJHYXVnZUxlZ2VuZFJlbmRlcmVyID0gZnVuY3Rpb24oKXsKICAgICAgICAkLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyLmNhbGwodGhpcyk7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5NZXRlckdhdWdlTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlID0gbmV3ICQuanFwbG90LlRhYmxlTGVnZW5kUmVuZGVyZXIoKTsKICAgICQuanFwbG90Lk1ldGVyR2F1Z2VMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5NZXRlckdhdWdlTGVnZW5kUmVuZGVyZXI7CiAgICAKICAgIC8qKgogICAgICogQ2xhc3M6ICQuanFwbG90Lk1ldGVyR2F1Z2VMZWdlbmRSZW5kZXJlcgogICAgICpNZXRlciBnYXVnZXMgZG9uJ3QgdHlwaWNhbGx5IGhhdmUgYSBsZWdlbmQsIHRoaXMgb3ZlcnJpZGVzIHRoZSBkZWZhdWx0IGxlZ2VuZCByZW5kZXJlci4KICAgICAqLwogICAgJC5qcXBsb3QuTWV0ZXJHYXVnZUxlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgIC8vIE1heGltdW0gbnVtYmVyIG9mIHJvd3MgaW4gdGhlIGxlZ2VuZC4gIDAgb3IgbnVsbCBmb3IgdW5saW1pdGVkLgogICAgICAgIHRoaXMubnVtYmVyUm93cyA9IG51bGw7CiAgICAgICAgLy8gTWF4aW11bSBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgbGVnZW5kLiAgMCBvciBudWxsIGZvciB1bmxpbWl0ZWQuCiAgICAgICAgdGhpcy5udW1iZXJDb2x1bW5zID0gbnVsbDsKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgIH07CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIGNvbnRleHQgb2YgbGVnZW5kCiAgICAkLmpxcGxvdC5NZXRlckdhdWdlTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbigpIHsKICAgICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAgICAgICAgIHZhciBzZXJpZXMgPSB0aGlzLl9zZXJpZXM7CiAgICAgICAgICAgIHZhciBzcyA9ICdwb3NpdGlvbjphYnNvbHV0ZTsnOwogICAgICAgICAgICBzcyArPSAodGhpcy5iYWNrZ3JvdW5kKSA/ICdiYWNrZ3JvdW5kOicrdGhpcy5iYWNrZ3JvdW5kKyc7JyA6ICcnOwogICAgICAgICAgICBzcyArPSAodGhpcy5ib3JkZXIpID8gJ2JvcmRlcjonK3RoaXMuYm9yZGVyKyc7JyA6ICcnOwogICAgICAgICAgICBzcyArPSAodGhpcy5mb250U2l6ZSkgPyAnZm9udC1zaXplOicrdGhpcy5mb250U2l6ZSsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMuZm9udEZhbWlseSkgPyAnZm9udC1mYW1pbHk6Jyt0aGlzLmZvbnRGYW1pbHkrJzsnIDogJyc7CiAgICAgICAgICAgIHNzICs9ICh0aGlzLnRleHRDb2xvcikgPyAnY29sb3I6Jyt0aGlzLnRleHRDb2xvcisnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMubWFyZ2luVG9wICE9IG51bGwpID8gJ21hcmdpbi10b3A6Jyt0aGlzLm1hcmdpblRvcCsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMubWFyZ2luQm90dG9tICE9IG51bGwpID8gJ21hcmdpbi1ib3R0b206Jyt0aGlzLm1hcmdpbkJvdHRvbSsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMubWFyZ2luTGVmdCAhPSBudWxsKSA/ICdtYXJnaW4tbGVmdDonK3RoaXMubWFyZ2luTGVmdCsnOycgOiAnJzsKICAgICAgICAgICAgc3MgKz0gKHRoaXMubWFyZ2luUmlnaHQgIT0gbnVsbCkgPyAnbWFyZ2luLXJpZ2h0OicrdGhpcy5tYXJnaW5SaWdodCsnOycgOiAnJzsKICAgICAgICAgICAgdGhpcy5fZWxlbSA9ICQoJzx0YWJsZSBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9Iicrc3MrJyI+PC90YWJsZT4nKTsKICAgICAgICAgICAgLy8gTWV0ZXJHYXVnZSBjaGFydHMgbGVnZW5kcyBkb24ndCBnbyBieSBudW1iZXIgb2Ygc2VyaWVzLCBidXQgYnkgbnVtYmVyIG9mIGRhdGEgcG9pbnRzCiAgICAgICAgICAgIC8vIGluIHRoZSBzZXJpZXMuICBSZWZhY3RvciB0aGluZ3MgaGVyZSBmb3IgdGhhdC4KICAgICAgICAgICAgCiAgICAgICAgICAgIHZhciBwYWQgPSBmYWxzZSwgCiAgICAgICAgICAgICAgICByZXZlcnNlID0gZmFsc2UsCiAgICAgICAgICAgICAgICBuciwgbmM7CiAgICAgICAgICAgIHZhciBzID0gc2VyaWVzWzBdOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHMuc2hvdykgewogICAgICAgICAgICAgICAgdmFyIHBkID0gcy5kYXRhOwogICAgICAgICAgICAgICAgaWYgKHRoaXMubnVtYmVyUm93cykgewogICAgICAgICAgICAgICAgICAgIG5yID0gdGhpcy5udW1iZXJSb3dzOwogICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5udW1iZXJDb2x1bW5zKXsKICAgICAgICAgICAgICAgICAgICAgICAgbmMgPSBNYXRoLmNlaWwocGQubGVuZ3RoL25yKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgbmMgPSB0aGlzLm51bWJlckNvbHVtbnM7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5udW1iZXJDb2x1bW5zKSB7CiAgICAgICAgICAgICAgICAgICAgbmMgPSB0aGlzLm51bWJlckNvbHVtbnM7CiAgICAgICAgICAgICAgICAgICAgbnIgPSBNYXRoLmNlaWwocGQubGVuZ3RoL3RoaXMubnVtYmVyQ29sdW1ucyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBuciA9IHBkLmxlbmd0aDsKICAgICAgICAgICAgICAgICAgICBuYyA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHZhciBpLCBqLCB0ciwgdGQxLCB0ZDIsIGx0LCBycywgY29sb3I7CiAgICAgICAgICAgICAgICB2YXIgaWR4ID0gMDsgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPG5yOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAocmV2ZXJzZSl7CiAgICAgICAgICAgICAgICAgICAgICAgIHRyID0gJCgnPHRyIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIj48L3RyPicpLnByZXBlbmRUbyh0aGlzLl9lbGVtKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgdHIgPSAkKCc8dHIgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiPjwvdHI+JykuYXBwZW5kVG8odGhpcy5fZWxlbSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZvciAoaj0wOyBqPG5jOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA8IHBkLmxlbmd0aCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZWJ1Z2dlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbHQgPSB0aGlzLmxhYmVsc1tpZHhdIHx8IHBkW2lkeF1bMF0udG9TdHJpbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yID0gcy5jb2xvcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmV2ZXJzZSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGk+MCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gbnIgLTEpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBycyA9IChwYWQpID8gdGhpcy5yb3dTcGFjaW5nIDogJzAnOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDEgPSAkKCc8dGQgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nLXRvcDonK3JzKyc7Ij4nKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8ZGl2PjxkaXYgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQtc3dhdGNoIiBzdHlsZT0iYm9yZGVyLWNvbG9yOicrY29sb3IrJzsiPjwvZGl2PicrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2PjwvdGQ+Jyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDIgPSAkKCc8dGQgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSJwYWRkaW5nLXRvcDonK3JzKyc7Ij48L3RkPicpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuZXNjYXBlSHRtbCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQyLnRleHQobHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQyLmh0bWwobHQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldmVyc2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDIucHJlcGVuZFRvKHRyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDEucHJlcGVuZFRvKHRyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMS5hcHBlbmRUbyh0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQyLmFwcGVuZFRvKHRyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWR4Kys7CiAgICAgICAgICAgICAgICAgICAgfSAgIAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLl9lbGVtOyAgICAgICAgICAgICAgICAKICAgIH07CiAgICAKICAgIAogICAgLy8gc2V0dXAgZGVmYXVsdCByZW5kZXJlcnMgZm9yIGF4ZXMgYW5kIGxlZ2VuZCBzbyB1c2VyIGRvZXNuJ3QgaGF2ZSB0bwogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgcGxvdAogICAgZnVuY3Rpb24gcHJlSW5pdCh0YXJnZXQsIGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICAvLyBkZWJ1Z2dlcgogICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogICAgICAgIG9wdGlvbnMuYXhlc0RlZmF1bHRzID0gb3B0aW9ucy5heGVzRGVmYXVsdHMgfHwge307CiAgICAgICAgb3B0aW9ucy5sZWdlbmQgPSBvcHRpb25zLmxlZ2VuZCB8fCB7fTsKICAgICAgICBvcHRpb25zLnNlcmllc0RlZmF1bHRzID0gb3B0aW9ucy5zZXJpZXNEZWZhdWx0cyB8fCB7fTsKICAgICAgICBvcHRpb25zLmdyaWQgPSBvcHRpb25zLmdyaWQgfHwge307CiAgICAgICAgICAgCiAgICAgICAgLy8gb25seSBzZXQgdGhlc2UgaWYgdGhlcmUgaXMgYSBnYXVnZSBzZXJpZXMKICAgICAgICB2YXIgc2V0b3B0cyA9IGZhbHNlOwogICAgICAgIGlmIChvcHRpb25zLnNlcmllc0RlZmF1bHRzLnJlbmRlcmVyID09ICQuanFwbG90Lk1ldGVyR2F1Z2VSZW5kZXJlcikgewogICAgICAgICAgICBzZXRvcHRzID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAob3B0aW9ucy5zZXJpZXMpIHsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpIDwgb3B0aW9ucy5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnNlcmllc1tpXS5yZW5kZXJlciA9PSAkLmpxcGxvdC5NZXRlckdhdWdlUmVuZGVyZXIpIHsKICAgICAgICAgICAgICAgICAgICBzZXRvcHRzID0gdHJ1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAoc2V0b3B0cykgewogICAgICAgICAgICBvcHRpb25zLmF4ZXNEZWZhdWx0cy5yZW5kZXJlciA9ICQuanFwbG90Lk1ldGVyR2F1Z2VBeGlzUmVuZGVyZXI7CiAgICAgICAgICAgIG9wdGlvbnMubGVnZW5kLnJlbmRlcmVyID0gJC5qcXBsb3QuTWV0ZXJHYXVnZUxlZ2VuZFJlbmRlcmVyOwogICAgICAgICAgICBvcHRpb25zLmxlZ2VuZC5wcmVEcmF3ID0gdHJ1ZTsKICAgICAgICAgICAgb3B0aW9ucy5ncmlkLmJhY2tncm91bmQgPSBvcHRpb25zLmdyaWQuYmFja2dyb3VuZCB8fCAnd2hpdGUnOwogICAgICAgICAgICBvcHRpb25zLmdyaWQuZHJhd0dyaWRsaW5lcyA9IGZhbHNlOwogICAgICAgICAgICBvcHRpb25zLmdyaWQuYm9yZGVyV2lkdGggPSAob3B0aW9ucy5ncmlkLmJvcmRlcldpZHRoICE9IG51bGwpID8gb3B0aW9ucy5ncmlkLmJvcmRlcldpZHRoIDogMDsKICAgICAgICAgICAgb3B0aW9ucy5ncmlkLnNoYWRvdyA9IChvcHRpb25zLmdyaWQuc2hhZG93ICE9IG51bGwpID8gb3B0aW9ucy5ncmlkLnNoYWRvdyA6IGZhbHNlOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgcGxvdAogICAgZnVuY3Rpb24gcG9zdFBhcnNlT3B0aW9ucyhvcHRpb25zKSB7CiAgICAgICAgLy8KICAgIH0KICAgIAogICAgJC5qcXBsb3QucHJlSW5pdEhvb2tzLnB1c2gocHJlSW5pdCk7CiAgICAkLmpxcGxvdC5wb3N0UGFyc2VPcHRpb25zSG9va3MucHVzaChwb3N0UGFyc2VPcHRpb25zKTsKICAgIAogICAgJC5qcXBsb3QuTWV0ZXJHYXVnZVRpY2tSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkF4aXNUaWNrUmVuZGVyZXIuY2FsbCh0aGlzKTsKICAgIH07CiAgICAKICAgICQuanFwbG90Lk1ldGVyR2F1Z2VUaWNrUmVuZGVyZXIucHJvdG90eXBlID0gbmV3ICQuanFwbG90LkF4aXNUaWNrUmVuZGVyZXIoKTsKICAgICQuanFwbG90Lk1ldGVyR2F1Z2VUaWNrUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuTWV0ZXJHYXVnZVRpY2tSZW5kZXJlcjsKICAgIAp9KShqUXVlcnkpOwogICAgCiAgICAK]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.meterGaugeRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGMpe2MuanFwbG90Lk1ldGVyR2F1Z2VSZW5kZXJlcj1mdW5jdGlvbigpe2MuanFwbG90LkxpbmVSZW5kZXJlci5jYWxsKHRoaXMpfTtjLmpxcGxvdC5NZXRlckdhdWdlUmVuZGVyZXIucHJvdG90eXBlPW5ldyBjLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTtjLmpxcGxvdC5NZXRlckdhdWdlUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWMuanFwbG90Lk1ldGVyR2F1Z2VSZW5kZXJlcjtjLmpxcGxvdC5NZXRlckdhdWdlUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZSl7dGhpcy5kaWFtZXRlcj1udWxsO3RoaXMucGFkZGluZz1udWxsO3RoaXMuc2hhZG93T2Zmc2V0PTI7dGhpcy5zaGFkb3dBbHBoYT0wLjA3O3RoaXMuc2hhZG93RGVwdGg9NDt0aGlzLmJhY2tncm91bmQ9IiNlZmVmZWYiO3RoaXMucmluZ0NvbG9yPSIjQkJDNkQwIjt0aGlzLm5lZWRsZUNvbG9yPSIjQzNEM0U1Ijt0aGlzLnRpY2tDb2xvcj0iIzk4OTg5OCI7dGhpcy5yaW5nV2lkdGg9bnVsbDt0aGlzLm1pbjt0aGlzLm1heDt0aGlzLnRpY2tzPVtdO3RoaXMuc2hvd1RpY2tzPXRydWU7dGhpcy5zaG93VGlja0xhYmVscz10cnVlO3RoaXMubGFiZWw9bnVsbDt0aGlzLmxhYmVsSGVpZ2h0QWRqdXN0PTA7dGhpcy5sYWJlbFBvc2l0aW9uPSJpbnNpZGUiO3RoaXMuaW50ZXJ2YWxzPVtdO3RoaXMuaW50ZXJ2YWxDb2xvcnM9WyIjNGJiMmM1IiwiI0VBQTIyOCIsIiNjNWI0N2YiLCIjNTc5NTc1IiwiIzgzOTU1NyIsIiM5NThjMTIiLCIjOTUzNTc5IiwiIzRiNWRlNCIsIiNkOGI4M2YiLCIjZmY1ODAwIiwiIzAwODVjYyIsIiNjNzQ3YTMiLCIjY2RkZjU0IiwiI0ZCRDE3OCIsIiMyNkI0RTMiLCIjYmQ3MGM3Il07dGhpcy5pbnRlcnZhbElubmVyUmFkaXVzPW51bGw7dGhpcy5pbnRlcnZhbE91dGVyUmFkaXVzPW51bGw7dGhpcy50aWNrUmVuZGVyZXI9Yy5qcXBsb3QuTWV0ZXJHYXVnZVRpY2tSZW5kZXJlcjt0aGlzLnRpY2tQb3NpdGlvbnM9WzEsMiwyLjUsNSwxMF07dGhpcy50aWNrU3BhY2luZz0zMDt0aGlzLm51bWJlck1pbm9yVGlja3M9bnVsbDt0aGlzLmh1YlJhZGl1cz1udWxsO3RoaXMudGlja1BhZGRpbmc9bnVsbDt0aGlzLm5lZWRsZVRoaWNrbmVzcz1udWxsO3RoaXMubmVlZGxlUGFkPTY7dGhpcy5wZWdOZWVkbGU9dHJ1ZTt0aGlzLl90eXBlPSJtZXRlckdhdWdlIjtjLmV4dGVuZCh0cnVlLHRoaXMsZSk7dGhpcy50eXBlPW51bGw7dGhpcy5udW1iZXJUaWNrcz1udWxsO3RoaXMudGlja0ludGVydmFsPW51bGw7dGhpcy5zcGFuPTE4MDtpZih0aGlzLnR5cGU9PSJjaXJjdWxhciIpe3RoaXMuc2VtaUNpcmN1bGFyPWZhbHNlfWVsc2V7aWYodGhpcy50eXBlIT0iY2lyY3VsYXIiKXt0aGlzLnNlbWlDaXJjdWxhcj10cnVlfWVsc2V7dGhpcy5zZW1pQ2lyY3VsYXI9KHRoaXMuc3Bhbjw9MTgwKT90cnVlOmZhbHNlfX10aGlzLl90aWNrUG9pbnRzPVtdO3RoaXMuX2xhYmVsRWxlbT1udWxsO3RoaXMuc3RhcnRBbmdsZT0oOTArKDM2MC10aGlzLnNwYW4pLzIpKk1hdGguUEkvMTgwO3RoaXMuZW5kQW5nbGU9KDkwLSgzNjAtdGhpcy5zcGFuKS8yKSpNYXRoLlBJLzE4MDt0aGlzLnNldG1pbj0hISh0aGlzLm1pbj09bnVsbCk7dGhpcy5zZXRtYXg9ISEodGhpcy5tYXg9PW51bGwpO2lmKHRoaXMuaW50ZXJ2YWxzLmxlbmd0aCl7aWYodGhpcy5pbnRlcnZhbHNbMF0ubGVuZ3RoPT1udWxsfHx0aGlzLmludGVydmFscy5sZW5ndGg9PTEpe2Zvcih2YXIgZj0wO2Y8dGhpcy5pbnRlcnZhbHMubGVuZ3RoO2YrKyl7dGhpcy5pbnRlcnZhbHNbZl09W3RoaXMuaW50ZXJ2YWxzW2ZdLHRoaXMuaW50ZXJ2YWxzW2ZdLHRoaXMuaW50ZXJ2YWxDb2xvcnNbZl1dfX1lbHNle2lmKHRoaXMuaW50ZXJ2YWxzWzBdLmxlbmd0aD09Mil7Zm9yKGY9MDtmPHRoaXMuaW50ZXJ2YWxzLmxlbmd0aDtmKyspe3RoaXMuaW50ZXJ2YWxzW2ZdPVt0aGlzLmludGVydmFsc1tmXVswXSx0aGlzLmludGVydmFsc1tmXVsxXSx0aGlzLmludGVydmFsQ29sb3JzW2ZdXX19fX1pZih0aGlzLnRpY2tzLmxlbmd0aCl7aWYodGhpcy50aWNrc1swXS5sZW5ndGg9PW51bGx8fHRoaXMudGlja3NbMF0ubGVuZ3RoPT0xKXtmb3IodmFyIGY9MDtmPHRoaXMudGlja3MubGVuZ3RoO2YrKyl7dGhpcy50aWNrc1tmXT1bdGhpcy50aWNrc1tmXSx0aGlzLnRpY2tzW2ZdXX19dGhpcy5taW49KHRoaXMubWluPT1udWxsKT90aGlzLnRpY2tzWzBdWzBdOnRoaXMubWluO3RoaXMubWF4PSh0aGlzLm1heD09bnVsbCk/dGhpcy50aWNrc1t0aGlzLnRpY2tzLmxlbmd0aC0xXVswXTp0aGlzLm1heDt0aGlzLnNldG1pbj1mYWxzZTt0aGlzLnNldG1heD1mYWxzZTt0aGlzLm51bWJlclRpY2tzPXRoaXMudGlja3MubGVuZ3RoO3RoaXMudGlja0ludGVydmFsPXRoaXMudGlja3NbMV1bMF0tdGhpcy50aWNrc1swXVswXTt0aGlzLnRpY2tGYWN0b3I9TWF0aC5mbG9vcihwYXJzZUZsb2F0KChNYXRoLmxvZyh0aGlzLnRpY2tJbnRlcnZhbCkvTWF0aC5sb2coMTApKS50b0ZpeGVkKDExKSkpO3RoaXMubnVtYmVyTWlub3JUaWNrcz1iKHRoaXMudGlja1Bvc2l0aW9ucyx0aGlzLnRpY2tJbnRlcnZhbCx0aGlzLnRpY2tGYWN0b3IpO2lmKCF0aGlzLm51bWJlck1pbm9yVGlja3Mpe3RoaXMubnVtYmVyTWlub3JUaWNrcz1iKHRoaXMudGlja1Bvc2l0aW9ucyx0aGlzLnRpY2tJbnRlcnZhbCx0aGlzLnRpY2tGYWN0b3ItMSl9aWYoIXRoaXMubnVtYmVyTWlub3JUaWNrcyl7dGhpcy5udW1iZXJNaW5vclRpY2tzPTF9fWVsc2V7aWYodGhpcy5pbnRlcnZhbHMubGVuZ3RoKXt0aGlzLm1pbj0odGhpcy5taW49PW51bGwpPzA6dGhpcy5taW47dGhpcy5zZXRtaW49ZmFsc2U7aWYodGhpcy5tYXg9PW51bGwpe2lmKHRoaXMuaW50ZXJ2YWxzW3RoaXMuaW50ZXJ2YWxzLmxlbmd0aC0xXVswXT49dGhpcy5kYXRhWzBdWzFdKXt0aGlzLm1heD10aGlzLmludGVydmFsc1t0aGlzLmludGVydmFscy5sZW5ndGgtMV1bMF07dGhpcy5zZXRtYXg9ZmFsc2V9fWVsc2V7dGhpcy5zZXRtYXg9ZmFsc2V9fWVsc2V7dGhpcy5taW49KHRoaXMubWluPT1udWxsKT8wOnRoaXMubWluO3RoaXMuc2V0bWluPWZhbHNlO2lmKHRoaXMubWF4PT1udWxsKXt0aGlzLm1heD10aGlzLmRhdGFbMF1bMV0qMS4yNTt0aGlzLnNldG1heD10cnVlfWVsc2V7dGhpcy5zZXRtYXg9ZmFsc2V9fX19O2MuanFwbG90Lk1ldGVyR2F1Z2VSZW5kZXJlci5wcm90b3R5cGUuc2V0R3JpZERhdGE9ZnVuY3Rpb24oail7dmFyIGY9W107dmFyIGs9W107dmFyIGU9dGhpcy5zdGFydEFuZ2xlO2Zvcih2YXIgaD0wO2g8dGhpcy5kYXRhLmxlbmd0aDtoKyspe2YucHVzaCh0aGlzLmRhdGFbaF1bMV0pO2sucHVzaChbdGhpcy5kYXRhW2hdWzBdXSk7aWYoaD4wKXtmW2hdKz1mW2gtMV19fXZhciBnPU1hdGguUEkqMi9mW2YubGVuZ3RoLTFdO2Zvcih2YXIgaD0wO2g8Zi5sZW5ndGg7aCsrKXtrW2hdWzFdPWZbaF0qZ310aGlzLmdyaWREYXRhPWt9O2MuanFwbG90Lk1ldGVyR2F1Z2VSZW5kZXJlci5wcm90b3R5cGUubWFrZUdyaWREYXRhPWZ1bmN0aW9uKGosayl7dmFyIGY9W107dmFyIGw9W107dmFyIGU9dGhpcy5zdGFydEFuZ2xlO2Zvcih2YXIgaD0wO2g8ai5sZW5ndGg7aCsrKXtmLnB1c2goaltoXVsxXSk7bC5wdXNoKFtqW2hdWzBdXSk7aWYoaD4wKXtmW2hdKz1mW2gtMV19fXZhciBnPU1hdGguUEkqMi9mW2YubGVuZ3RoLTFdO2Zvcih2YXIgaD0wO2g8Zi5sZW5ndGg7aCsrKXtsW2hdWzFdPWZbaF0qZ31yZXR1cm4gbH07ZnVuY3Rpb24gYihqLGYsZyl7dmFyIGU7Zm9yKHZhciBoPWoubGVuZ3RoLTE7aD49MDtoLS0pe2U9Zi8oaltoXSpNYXRoLnBvdygxMCxnKSk7aWYoZT09NHx8ZT09NSl7cmV0dXJuIGUtMX19cmV0dXJuIG51bGx9Yy5qcXBsb3QuTWV0ZXJHYXVnZVJlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKFgsYUMsYXApe3ZhciBhYTt2YXIgYU09KGFwIT11bmRlZmluZWQpP2FwOnt9O3ZhciBhaT0wO3ZhciBhaD0wO3ZhciBhdD0xO2lmKGFwLmxlZ2VuZEluZm8mJmFwLmxlZ2VuZEluZm8ucGxhY2VtZW50PT0iaW5zaWRlIil7dmFyIGFJPWFwLmxlZ2VuZEluZm87c3dpdGNoKGFJLmxvY2F0aW9uKXtjYXNlIm53IjphaT1hSS53aWR0aCthSS54b2Zmc2V0O2JyZWFrO2Nhc2UidyI6YWk9YUkud2lkdGgrYUkueG9mZnNldDticmVhaztjYXNlInN3IjphaT1hSS53aWR0aCthSS54b2Zmc2V0O2JyZWFrO2Nhc2UibmUiOmFpPWFJLndpZHRoK2FJLnhvZmZzZXQ7YXQ9LTE7YnJlYWs7Y2FzZSJlIjphaT1hSS53aWR0aCthSS54b2Zmc2V0O2F0PS0xO2JyZWFrO2Nhc2Uic2UiOmFpPWFJLndpZHRoK2FJLnhvZmZzZXQ7YXQ9LTE7YnJlYWs7Y2FzZSJuIjphaD1hSS5oZWlnaHQrYUkueW9mZnNldDticmVhaztjYXNlInMiOmFoPWFJLmhlaWdodCthSS55b2Zmc2V0O2F0PS0xO2JyZWFrO2RlZmF1bHQ6YnJlYWt9fWlmKHRoaXMubGFiZWwpe3RoaXMuX2xhYmVsRWxlbT1jKCc8ZGl2IGNsYXNzPSJqcXBsb3QtbWV0ZXJHYXVnZS1sYWJlbCIgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyI+Jyt0aGlzLmxhYmVsKyI8L2Rpdj4iKTt0aGlzLmNhbnZhcy5fZWxlbS5hZnRlcih0aGlzLl9sYWJlbEVsZW0pfXZhciBtPShhTS5zaGFkb3chPXVuZGVmaW5lZCk/YU0uc2hhZG93OnRoaXMuc2hhZG93O3ZhciBOPShhTS5zaG93TGluZSE9dW5kZWZpbmVkKT9hTS5zaG93TGluZTp0aGlzLnNob3dMaW5lO3ZhciBJPShhTS5maWxsIT11bmRlZmluZWQpP2FNLmZpbGw6dGhpcy5maWxsO3ZhciBLPVguY2FudmFzLndpZHRoO3ZhciBTPVguY2FudmFzLmhlaWdodDtpZih0aGlzLnBhZGRpbmc9PW51bGwpe3RoaXMucGFkZGluZz1NYXRoLnJvdW5kKE1hdGgubWluKEssUykvMzApfXZhciBRPUstYWktMip0aGlzLnBhZGRpbmc7dmFyIGFiPVMtYWgtMip0aGlzLnBhZGRpbmc7aWYodGhpcy5sYWJlbFBvc2l0aW9uPT0iYm90dG9tIiYmdGhpcy5sYWJlbCl7YWItPXRoaXMuX2xhYmVsRWxlbS5vdXRlckhlaWdodCh0cnVlKX12YXIgTD1NYXRoLm1pbihRLGFiKTt2YXIgYWQ9TDtpZighdGhpcy5kaWFtZXRlcil7aWYodGhpcy5zZW1pQ2lyY3VsYXIpe2lmKFE+PTIqYWIpe2lmKCF0aGlzLnJpbmdXaWR0aCl7dGhpcy5yaW5nV2lkdGg9MiphYi8zNX10aGlzLm5lZWRsZVRoaWNrbmVzcz10aGlzLm5lZWRsZVRoaWNrbmVzc3x8MitNYXRoLnBvdyh0aGlzLnJpbmdXaWR0aCwwLjgpO3RoaXMuaW5uZXJQYWQ9dGhpcy5yaW5nV2lkdGgvMit0aGlzLm5lZWRsZVRoaWNrbmVzcy8yK3RoaXMubmVlZGxlUGFkO3RoaXMuZGlhbWV0ZXI9MiooYWItMip0aGlzLmlubmVyUGFkKX1lbHNle2lmKCF0aGlzLnJpbmdXaWR0aCl7dGhpcy5yaW5nV2lkdGg9US8zNX10aGlzLm5lZWRsZVRoaWNrbmVzcz10aGlzLm5lZWRsZVRoaWNrbmVzc3x8MitNYXRoLnBvdyh0aGlzLnJpbmdXaWR0aCwwLjgpO3RoaXMuaW5uZXJQYWQ9dGhpcy5yaW5nV2lkdGgvMit0aGlzLm5lZWRsZVRoaWNrbmVzcy8yK3RoaXMubmVlZGxlUGFkO3RoaXMuZGlhbWV0ZXI9US0yKnRoaXMuaW5uZXJQYWQtdGhpcy5yaW5nV2lkdGgtdGhpcy5wYWRkaW5nfXRoaXMuX2NlbnRlcj1bKEstYXQqYWkpLzIrYXQqYWksKFMrYXQqYWgtdGhpcy5wYWRkaW5nLXRoaXMucmluZ1dpZHRoLXRoaXMuaW5uZXJQYWQpXX1lbHNle2lmKCF0aGlzLnJpbmdXaWR0aCl7dGhpcy5yaW5nV2lkdGg9YWQvMzV9dGhpcy5uZWVkbGVUaGlja25lc3M9dGhpcy5uZWVkbGVUaGlja25lc3N8fDIrTWF0aC5wb3codGhpcy5yaW5nV2lkdGgsMC44KTt0aGlzLmlubmVyUGFkPTA7dGhpcy5kaWFtZXRlcj1hZC10aGlzLnJpbmdXaWR0aDt0aGlzLl9jZW50ZXI9WyhLLWF0KmFpKS8yK2F0KmFpLChTLWF0KmFoKS8yK2F0KmFoXX1pZih0aGlzLl9sYWJlbEVsZW0mJnRoaXMubGFiZWxQb3NpdGlvbj09ImJvdHRvbSIpe3RoaXMuX2NlbnRlclsxXS09dGhpcy5fbGFiZWxFbGVtLm91dGVySGVpZ2h0KHRydWUpfX10aGlzLl9yYWRpdXM9dGhpcy5kaWFtZXRlci8yO3RoaXMudGlja1NwYWNpbmc9NjAwMC90aGlzLmRpYW1ldGVyO2lmKCF0aGlzLmh1YlJhZGl1cyl7dGhpcy5odWJSYWRpdXM9dGhpcy5kaWFtZXRlci8xOH10aGlzLnNoYWRvd09mZnNldD0wLjUrdGhpcy5yaW5nV2lkdGgvOTt0aGlzLnNoYWRvd1dpZHRoPXRoaXMucmluZ1dpZHRoKjE7dGhpcy50aWNrUGFkZGluZz0zK01hdGgucG93KHRoaXMuZGlhbWV0ZXIvMjAsMC43KTt0aGlzLnRpY2tPdXRlclJhZGl1cz10aGlzLl9yYWRpdXMtdGhpcy5yaW5nV2lkdGgvMi10aGlzLnRpY2tQYWRkaW5nO3RoaXMudGlja0xlbmd0aD0odGhpcy5zaG93VGlja3MpP3RoaXMuX3JhZGl1cy8xMzowO2lmKHRoaXMudGlja3MubGVuZ3RoPT0wKXt2YXIgQT10aGlzLm1heCxhTD10aGlzLm1pbixxPXRoaXMuc2V0bWF4LGFHPXRoaXMuc2V0bWluLGF1PShBLWFMKSp0aGlzLnRpY2tTcGFjaW5nL3RoaXMuc3Bhbjt2YXIgYXc9TWF0aC5mbG9vcihwYXJzZUZsb2F0KChNYXRoLmxvZyhhdSkvTWF0aC5sb2coMTApKS50b0ZpeGVkKDExKSkpO3ZhciBhbj0oYXUvTWF0aC5wb3coMTAsYXcpKTsoYW4+MiYmYW48PTIuNSk/YW49Mi41OmFuPU1hdGguY2VpbChhbik7dmFyIFQ9dGhpcy50aWNrUG9zaXRpb25zO3ZhciBhQSxhaztmb3IoYWE9MDthYTxULmxlbmd0aDthYSsrKXtpZihhbj09VFthYV18fGFhJiZUW2FhLTFdPGFuJiZhbjxUW2FhXSl7YXU9VFthYV0qTWF0aC5wb3coMTAsYXcpO2FBPWFhfX1mb3IoYWE9MDthYTxULmxlbmd0aDthYSsrKXtpZihhbj09VFthYV18fGFhJiZUW2FhLTFdPGFuJiZhbjxUW2FhXSl7YXU9VFthYV0qTWF0aC5wb3coMTAsYXcpO2FrPU1hdGguY2VpbCgoQS1hTCkvYXUpfX1pZihxJiZhRyl7dmFyIGFQPShhTD4wKT9hTC1hTCVhdTphTC1hTCVhdS1hdTtpZighdGhpcy5mb3JjZVplcm8pe3ZhciBEPU1hdGgubWluKGFMLWFQLDAuOCphdSk7dmFyIG89TWF0aC5mbG9vcihEL1RbYUFdKTtpZihvPjEpe2FQPWFQK1RbYUFdKihvLTEpO2lmKHBhcnNlSW50KGFQLDEwKSE9YVAmJnBhcnNlSW50KGFQLVRbYUFdLDEwKT09YVAtVFthQV0pe2FQPWFQLVRbYUFdfX19aWYoYUw9PWFQKXthTC09YXV9ZWxzZXtpZihhTC1hUD4wLjIzKmF1KXthTD1hUH1lbHNle2FMPWFQLWF1O2FrKz0xfX1hays9MTt2YXIgRT1hTCsoYWstMSkqYXU7aWYoQT49RSl7RSs9YXU7YWsrPTF9aWYoRS1BPDAuMjMqYXUpe0UrPWF1O2FrKz0xfXRoaXMubWF4PUE9RTt0aGlzLm1pbj1hTDt0aGlzLnRpY2tJbnRlcnZhbD1hdTt0aGlzLm51bWJlclRpY2tzPWFrO3ZhciBPO2ZvcihhYT0wO2FhPGFrO2FhKyspe089cGFyc2VGbG9hdCgoYUwrYWEqYXUpLnRvRml4ZWQoMTEpKTt0aGlzLnRpY2tzLnB1c2goW08sT10pfXRoaXMubWF4PXRoaXMudGlja3NbYWstMV1bMV07dGhpcy50aWNrRmFjdG9yPWF3O3RoaXMubnVtYmVyTWlub3JUaWNrcz1iKHRoaXMudGlja1Bvc2l0aW9ucyx0aGlzLnRpY2tJbnRlcnZhbCx0aGlzLnRpY2tGYWN0b3IpO2lmKCF0aGlzLm51bWJlck1pbm9yVGlja3Mpe3RoaXMubnVtYmVyTWlub3JUaWNrcz1iKHRoaXMudGlja1Bvc2l0aW9ucyx0aGlzLnRpY2tJbnRlcnZhbCx0aGlzLnRpY2tGYWN0b3ItMSl9fWVsc2V7aWYocSl7dmFyIEU9YUwrKGFrLTEpKmF1O2lmKEE+PUUpe0E9RSthdTthays9MX1lbHNle0E9RX10aGlzLnRpY2tJbnRlcnZhbD10aGlzLnRpY2tJbnRlcnZhbHx8YXU7dGhpcy5udW1iZXJUaWNrcz10aGlzLm51bWJlclRpY2tzfHxhazt2YXIgTztmb3IoYWE9MDthYTx0aGlzLm51bWJlclRpY2tzO2FhKyspe089cGFyc2VGbG9hdCgoYUwrYWEqdGhpcy50aWNrSW50ZXJ2YWwpLnRvRml4ZWQoMTEpKTt0aGlzLnRpY2tzLnB1c2goW08sT10pfXRoaXMubWF4PXRoaXMudGlja3NbdGhpcy5udW1iZXJUaWNrcy0xXVsxXTt0aGlzLnRpY2tGYWN0b3I9YXc7dGhpcy5udW1iZXJNaW5vclRpY2tzPWIodGhpcy50aWNrUG9zaXRpb25zLHRoaXMudGlja0ludGVydmFsLHRoaXMudGlja0ZhY3Rvcik7aWYoIXRoaXMubnVtYmVyTWlub3JUaWNrcyl7dGhpcy5udW1iZXJNaW5vclRpY2tzPWIodGhpcy50aWNrUG9zaXRpb25zLHRoaXMudGlja0ludGVydmFsLHRoaXMudGlja0ZhY3Rvci0xKX19fWlmKCFxJiYhYUcpe3ZhciBQPXRoaXMubWF4LXRoaXMubWluO2F3PU1hdGguZmxvb3IocGFyc2VGbG9hdCgoTWF0aC5sb2coUCkvTWF0aC5sb2coMTApKS50b0ZpeGVkKDExKSkpLTE7dmFyIGFOPVs1LDYsNCw3LDMsOCw5LDEwLDJdLFYsQyxhdj0wLE07aWYoUD4xKXt2YXIgYUo9U3RyaW5nKFApO2lmKGFKLnNlYXJjaCgvXC4vKT09LTEpe3ZhciBhRj1hSi5zZWFyY2goLzArJC8pO2F2PShhRj4wKT9hSi5sZW5ndGgtYUYtMTowfX1NPVAvTWF0aC5wb3coMTAsYXYpO2ZvcihhYT0wO2FhPGFOLmxlbmd0aDthYSsrKXtWPU0vKGFOW2FhXS0xKTtpZihWPT1wYXJzZUludChWLDEwKSl7dGhpcy5udW1iZXJUaWNrcz1hTlthYV07dGhpcy50aWNrSW50ZXJ2YWw9UC8odGhpcy5udW1iZXJUaWNrcy0xKTt0aGlzLnRpY2tGYWN0b3I9YXcrMTticmVha319dmFyIE87Zm9yKGFhPTA7YWE8dGhpcy5udW1iZXJUaWNrczthYSsrKXtPPXBhcnNlRmxvYXQoKHRoaXMubWluK2FhKnRoaXMudGlja0ludGVydmFsKS50b0ZpeGVkKDExKSk7dGhpcy50aWNrcy5wdXNoKFtPLE9dKX10aGlzLm51bWJlck1pbm9yVGlja3M9Yih0aGlzLnRpY2tQb3NpdGlvbnMsdGhpcy50aWNrSW50ZXJ2YWwsdGhpcy50aWNrRmFjdG9yKTtpZighdGhpcy5udW1iZXJNaW5vclRpY2tzKXt0aGlzLm51bWJlck1pbm9yVGlja3M9Yih0aGlzLnRpY2tQb3NpdGlvbnMsdGhpcy50aWNrSW50ZXJ2YWwsdGhpcy50aWNrRmFjdG9yLTEpfWlmKCF0aGlzLm51bWJlck1pbm9yVGlja3Mpe3RoaXMubnVtYmVyTWlub3JUaWNrcz0xO3ZhciBhSD1bNCw1LDMsNiwyXTtmb3IoYWE9MDthYTw1O2FhKyspe3ZhciBhbz10aGlzLnRpY2tJbnRlcnZhbC9hSFthYV07aWYoYW89PXBhcnNlSW50KGFvLDEwKSl7dGhpcy5udW1iZXJNaW5vclRpY2tzPWFIW2FhXS0xO2JyZWFrfX19fX12YXIgVT10aGlzLl9yYWRpdXMsYUU9dGhpcy5zdGFydEFuZ2xlLGs9dGhpcy5lbmRBbmdsZSxIPU1hdGguUEksZT1NYXRoLlBJLzI7aWYodGhpcy5zZW1pQ2lyY3VsYXIpe3ZhciB6PU1hdGguYXRhbih0aGlzLmlubmVyUGFkL1UpLGFjPXRoaXMub3V0ZXJTdGFydEFuZ2xlPWFFLXosYUI9dGhpcy5vdXRlckVuZEFuZ2xlPWsreixCPXRoaXMuaHViU3RhcnRBbmdsZT1hRS1NYXRoLmF0YW4odGhpcy5pbm5lclBhZC90aGlzLmh1YlJhZGl1cyoyKSxhZj10aGlzLmh1YkVuZEFuZ2xlPWsrTWF0aC5hdGFuKHRoaXMuaW5uZXJQYWQvdGhpcy5odWJSYWRpdXMqMik7WC5zYXZlKCk7WC50cmFuc2xhdGUodGhpcy5fY2VudGVyWzBdLHRoaXMuX2NlbnRlclsxXSk7WC5saW5lSm9pbj0icm91bmQiO1gubGluZUNhcD0icm91bmQiO1guc2F2ZSgpO1guYmVnaW5QYXRoKCk7WC5maWxsU3R5bGU9dGhpcy5iYWNrZ3JvdW5kO1guYXJjKDAsMCxVLGFjLGFCLGZhbHNlKTtYLmNsb3NlUGF0aCgpO1guZmlsbCgpO1gucmVzdG9yZSgpO3ZhciBhaj0icmdiYSgwLDAsMCwiK3RoaXMuc2hhZG93QWxwaGErIikiO1guc2F2ZSgpO2Zvcih2YXIgYWE9MDthYTx0aGlzLnNoYWRvd0RlcHRoO2FhKyspe1gudHJhbnNsYXRlKHRoaXMuc2hhZG93T2Zmc2V0Kk1hdGguY29zKHRoaXMuc2hhZG93QW5nbGUvMTgwKk1hdGguUEkpLHRoaXMuc2hhZG93T2Zmc2V0Kk1hdGguc2luKHRoaXMuc2hhZG93QW5nbGUvMTgwKk1hdGguUEkpKTtYLmJlZ2luUGF0aCgpO1guc3Ryb2tlU3R5bGU9YWo7WC5saW5lV2lkdGg9dGhpcy5zaGFkb3dXaWR0aDtYLmFyYygwLDAsVSxhYyxhQixmYWxzZSk7WC5jbG9zZVBhdGgoKTtYLnN0cm9rZSgpfVgucmVzdG9yZSgpO1guc2F2ZSgpO3ZhciBhej1wYXJzZUludCgodGhpcy5zaGFkb3dEZXB0aCsxKS8yLDEwKTtmb3IodmFyIGFhPTA7YWE8YXo7YWErKyl7WC50cmFuc2xhdGUodGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5jb3ModGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSksdGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5zaW4odGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSkpO1guYmVnaW5QYXRoKCk7WC5maWxsU3R5bGU9YWo7WC5hcmMoMCwwLHRoaXMuaHViUmFkaXVzLEIsYWYsZmFsc2UpO1guY2xvc2VQYXRoKCk7WC5maWxsKCl9WC5yZXN0b3JlKCk7WC5zYXZlKCk7WC5iZWdpblBhdGgoKTtYLnN0cm9rZVN0eWxlPXRoaXMucmluZ0NvbG9yO1gubGluZVdpZHRoPXRoaXMucmluZ1dpZHRoO1guYXJjKDAsMCxVLGFjLGFCLGZhbHNlKTtYLmNsb3NlUGF0aCgpO1guc3Ryb2tlKCk7WC5yZXN0b3JlKCk7WC5zYXZlKCk7WC5iZWdpblBhdGgoKTtYLmZpbGxTdHlsZT10aGlzLnJpbmdDb2xvcjtYLmFyYygwLDAsdGhpcy5odWJSYWRpdXMsQixhZixmYWxzZSk7WC5jbG9zZVBhdGgoKTtYLmZpbGwoKTtYLnJlc3RvcmUoKTtpZih0aGlzLnNob3dUaWNrcyl7WC5zYXZlKCk7dmFyIGY9dGhpcy50aWNrT3V0ZXJSYWRpdXMsYXE9dGhpcy50aWNrTGVuZ3RoLHY9YXEvMixGPXRoaXMubnVtYmVyTWlub3JUaWNrcyxhbT10aGlzLnNwYW4qTWF0aC5QSS8xODAvKHRoaXMudGlja3MubGVuZ3RoLTEpLHA9YW0vKEYrMSk7Zm9yKGFhPTA7YWE8dGhpcy50aWNrcy5sZW5ndGg7YWErKyl7WC5iZWdpblBhdGgoKTtYLmxpbmVXaWR0aD0xLjUrdGhpcy5kaWFtZXRlci8zNjA7WC5zdHJva2VTdHlsZT10aGlzLnJpbmdDb2xvcjt2YXIgYWU9YW0qYWErYUU7WC5tb3ZlVG8oLWYqTWF0aC5jb3MoYW0qYWErYUUpLGYqTWF0aC5zaW4oYW0qYWErYUUpKTtYLmxpbmVUbygtKGYtYXEpKk1hdGguY29zKGFtKmFhK2FFKSwoZi1hcSkqTWF0aC5zaW4oYW0qYWErYUUpKTt0aGlzLl90aWNrUG9pbnRzLnB1c2goWyhmLWFxKSpNYXRoLmNvcyhhbSphYSthRSkrdGhpcy5fY2VudGVyWzBdK3RoaXMuY2FudmFzLl9vZmZzZXRzLmxlZnQsKGYtYXEpKk1hdGguc2luKGFtKmFhK2FFKSt0aGlzLl9jZW50ZXJbMV0rdGhpcy5jYW52YXMuX29mZnNldHMudG9wLGFtKmFhK2FFXSk7WC5zdHJva2UoKTtYLmxpbmVXaWR0aD0xK3RoaXMuZGlhbWV0ZXIvNDQwO2lmKGFhPHRoaXMudGlja3MubGVuZ3RoLTEpe2Zvcih2YXIgWT0xO1k8PUY7WSsrKXtYLmJlZ2luUGF0aCgpO1gubW92ZVRvKC1mKk1hdGguY29zKGFtKmFhK3AqWSthRSksZipNYXRoLnNpbihhbSphYStwKlkrYUUpKTtYLmxpbmVUbygtKGYtdikqTWF0aC5jb3MoYW0qYWErcCpZK2FFKSwoZi12KSpNYXRoLnNpbihhbSphYStwKlkrYUUpKTtYLnN0cm9rZSgpfX19WC5yZXN0b3JlKCl9aWYodGhpcy5zaG93VGlja0xhYmVscyl7dmFyIEosVyxULGFPLGcsRyxuPTA7dmFyIGFuPXRoaXMudGlja1BhZGRpbmcqKDEtMS8odGhpcy5kaWFtZXRlci84MCsxKSk7Zm9yKGFhPTA7YWE8dGhpcy50aWNrcy5sZW5ndGg7YWErKyl7Sj1jKCc8ZGl2IGNsYXNzPSJqcXBsb3QtbWV0ZXJHYXVnZS10aWNrIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7Ij4nK3RoaXMudGlja3NbYWFdWzFdKyI8L2Rpdj4iKTt0aGlzLmNhbnZhcy5fZWxlbS5hZnRlcihKKTthTz1KLm91dGVyV2lkdGgodHJ1ZSk7Zz1KLm91dGVySGVpZ2h0KHRydWUpO1c9dGhpcy5fdGlja1BvaW50c1thYV1bMF0tYU8qKHRoaXMuX3RpY2tQb2ludHNbYWFdWzJdLU1hdGguUEkpL01hdGguUEktYW4qTWF0aC5jb3ModGhpcy5fdGlja1BvaW50c1thYV1bMl0pO1Q9dGhpcy5fdGlja1BvaW50c1thYV1bMV0tZy8yK2cvMipNYXRoLnBvdyhNYXRoLmFicygoTWF0aC5zaW4odGhpcy5fdGlja1BvaW50c1thYV1bMl0pKSksMC41KSthbi8zKk1hdGgucG93KE1hdGguYWJzKChNYXRoLnNpbih0aGlzLl90aWNrUG9pbnRzW2FhXVsyXSkpKSwwLjUpO0ouY3NzKHtsZWZ0OlcsdG9wOlQsY29sb3I6dGhpcy50aWNrQ29sb3J9KTtHPWFPKk1hdGguY29zKHRoaXMuX3RpY2tQb2ludHNbYWFdWzJdKStnKk1hdGguc2luKE1hdGguUEkvMit0aGlzLl90aWNrUG9pbnRzW2FhXVsyXS8yKTtuPShHPm4pP0c6bn19aWYodGhpcy5sYWJlbCYmdGhpcy5sYWJlbFBvc2l0aW9uPT0iaW5zaWRlIil7dmFyIFc9dGhpcy5fY2VudGVyWzBdK3RoaXMuY2FudmFzLl9vZmZzZXRzLmxlZnQ7dmFyIGFuPXRoaXMudGlja1BhZGRpbmcqKDEtMS8odGhpcy5kaWFtZXRlci84MCsxKSk7dmFyIFQ9MC41Kih0aGlzLl9jZW50ZXJbMV0rdGhpcy5jYW52YXMuX29mZnNldHMudG9wLXRoaXMuaHViUmFkaXVzKSswLjUqKHRoaXMuX2NlbnRlclsxXSt0aGlzLmNhbnZhcy5fb2Zmc2V0cy50b3AtdGhpcy50aWNrT3V0ZXJSYWRpdXMrdGhpcy50aWNrTGVuZ3RoK2FuKSt0aGlzLmxhYmVsSGVpZ2h0QWRqdXN0O1ctPXRoaXMuX2xhYmVsRWxlbS5vdXRlcldpZHRoKHRydWUpLzI7VC09dGhpcy5fbGFiZWxFbGVtLm91dGVySGVpZ2h0KHRydWUpLzI7dGhpcy5fbGFiZWxFbGVtLmNzcyh7bGVmdDpXLHRvcDpUfSl9ZWxzZXtpZih0aGlzLmxhYmVsJiZ0aGlzLmxhYmVsUG9zaXRpb249PSJib3R0b20iKXt2YXIgVz10aGlzLl9jZW50ZXJbMF0rdGhpcy5jYW52YXMuX29mZnNldHMubGVmdC10aGlzLl9sYWJlbEVsZW0ub3V0ZXJXaWR0aCh0cnVlKS8yO3ZhciBUPXRoaXMuX2NlbnRlclsxXSt0aGlzLmNhbnZhcy5fb2Zmc2V0cy50b3ArdGhpcy5pbm5lclBhZCt0aGlzLnJpbmdXaWR0aCt0aGlzLnBhZGRpbmcrdGhpcy5sYWJlbEhlaWdodEFkanVzdDt0aGlzLl9sYWJlbEVsZW0uY3NzKHtsZWZ0OlcsdG9wOlR9KX19WC5zYXZlKCk7dmFyIGF4PXRoaXMuaW50ZXJ2YWxJbm5lclJhZGl1c3x8dGhpcy5odWJSYWRpdXMqMS41O2lmKHRoaXMuaW50ZXJ2YWxPdXRlclJhZGl1cz09bnVsbCl7aWYodGhpcy5zaG93VGlja0xhYmVscyl7dmFyIGFnPSh0aGlzLnRpY2tPdXRlclJhZGl1cy10aGlzLnRpY2tMZW5ndGgtdGhpcy50aWNrUGFkZGluZy10aGlzLmRpYW1ldGVyLzgpfWVsc2V7dmFyIGFnPSh0aGlzLnRpY2tPdXRlclJhZGl1cy10aGlzLnRpY2tMZW5ndGgtdGhpcy5kaWFtZXRlci8xNil9fWVsc2V7dmFyIGFnPXRoaXMuaW50ZXJ2YWxPdXRlclJhZGl1c312YXIgUD10aGlzLm1heC10aGlzLm1pbjt2YXIgYUQ9dGhpcy5pbnRlcnZhbHNbdGhpcy5pbnRlcnZhbHMubGVuZ3RoLTFdLXRoaXMubWluO3ZhciB5LFosdT10aGlzLnNwYW4qTWF0aC5QSS8xODA7Zm9yKGFhPTA7YWE8dGhpcy5pbnRlcnZhbHMubGVuZ3RoO2FhKyspe3k9KGFhPT0wKT9hRTphRSsodGhpcy5pbnRlcnZhbHNbYWEtMV1bMF0tdGhpcy5taW4pKnUvUDtpZih5PDApe3k9MH1aPWFFKyh0aGlzLmludGVydmFsc1thYV1bMF0tdGhpcy5taW4pKnUvUDtpZihaPDApe1o9MH1YLmJlZ2luUGF0aCgpO1guZmlsbFN0eWxlPXRoaXMuaW50ZXJ2YWxzW2FhXVsyXTtYLmFyYygwLDAsYXgseSxaLGZhbHNlKTtYLmxpbmVUbyhhZypNYXRoLmNvcyhaKSxhZypNYXRoLnNpbihaKSk7WC5hcmMoMCwwLGFnLFoseSx0cnVlKTtYLmxpbmVUbyhheCpNYXRoLmNvcyh5KSxheCpNYXRoLnNpbih5KSk7WC5jbG9zZVBhdGgoKTtYLmZpbGwoKX1YLnJlc3RvcmUoKTt2YXIgYXk9dGhpcy5kYXRhWzBdWzFdO3ZhciBSPXRoaXMubWF4LXRoaXMubWluO2lmKHRoaXMucGVnTmVlZGxlKXtpZih0aGlzLmRhdGFbMF1bMV0+dGhpcy5tYXgrUiozL3RoaXMuc3Bhbil7YXk9dGhpcy5tYXgrUiozL3RoaXMuc3Bhbn1pZih0aGlzLmRhdGFbMF1bMV08dGhpcy5taW4tUiozL3RoaXMuc3Bhbil7YXk9dGhpcy5taW4tUiozL3RoaXMuc3Bhbn19dmFyIGFsPShheS10aGlzLm1pbikvUip0aGlzLnNwYW4qTWF0aC5QSS8xODArdGhpcy5zdGFydEFuZ2xlO1guc2F2ZSgpO1guYmVnaW5QYXRoKCk7WC5maWxsU3R5bGU9dGhpcy5yaW5nQ29sb3I7WC5zdHJva2VTdHlsZT10aGlzLnJpbmdDb2xvcjt0aGlzLm5lZWRsZUxlbmd0aD0odGhpcy50aWNrT3V0ZXJSYWRpdXMtdGhpcy50aWNrTGVuZ3RoKSowLjg1O3RoaXMubmVlZGxlVGhpY2tuZXNzPSh0aGlzLm5lZWRsZVRoaWNrbmVzczwyKT8yOnRoaXMubmVlZGxlVGhpY2tuZXNzO3ZhciBhSz10aGlzLm5lZWRsZVRoaWNrbmVzcyowLjQ7dmFyIHg9dGhpcy5uZWVkbGVMZW5ndGgvMTA7dmFyIHM9KHRoaXMubmVlZGxlVGhpY2tuZXNzLWFLKS8xMDt2YXIgYXI7Zm9yKHZhciBhYT0wO2FhPDEwO2FhKyspe2FyPXRoaXMubmVlZGxlVGhpY2tuZXNzLWFhKnM7WC5tb3ZlVG8oeCphYSpNYXRoLmNvcyhhbCkseCphYSpNYXRoLnNpbihhbCkpO1gubGluZVdpZHRoPWFyO1gubGluZVRvKHgqKGFhKzEpKk1hdGguY29zKGFsKSx4KihhYSsxKSpNYXRoLnNpbihhbCkpO1guc3Ryb2tlKCl9WC5yZXN0b3JlKCl9ZWxzZXt0aGlzLl9jZW50ZXI9WyhLLWF0KmFpKS8yK2F0KmFpLChTLWF0KmFoKS8yK2F0KmFoXX19O2MuanFwbG90Lk1ldGVyR2F1Z2VBeGlzUmVuZGVyZXI9ZnVuY3Rpb24oKXtjLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIuY2FsbCh0aGlzKX07Yy5qcXBsb3QuTWV0ZXJHYXVnZUF4aXNSZW5kZXJlci5wcm90b3R5cGU9bmV3IGMuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlcigpO2MuanFwbG90Lk1ldGVyR2F1Z2VBeGlzUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWMuanFwbG90Lk1ldGVyR2F1Z2VBeGlzUmVuZGVyZXI7Yy5qcXBsb3QuTWV0ZXJHYXVnZUF4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihlKXt0aGlzLnRpY2tSZW5kZXJlcj1jLmpxcGxvdC5NZXRlckdhdWdlVGlja1JlbmRlcmVyO2MuZXh0ZW5kKHRydWUsdGhpcyxlKTt0aGlzLl9kYXRhQm91bmRzPXttaW46MCxtYXg6MTAwfTt0aGlzLm1pbj0wO3RoaXMubWF4PTEwMDt0aGlzLnNob3dUaWNrcz1mYWxzZTt0aGlzLnRpY2tzPVtdO3RoaXMuc2hvd01hcms9ZmFsc2U7dGhpcy5zaG93PWZhbHNlfTtjLmpxcGxvdC5NZXRlckdhdWdlTGVnZW5kUmVuZGVyZXI9ZnVuY3Rpb24oKXtjLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyLmNhbGwodGhpcyl9O2MuanFwbG90Lk1ldGVyR2F1Z2VMZWdlbmRSZW5kZXJlci5wcm90b3R5cGU9bmV3IGMuanFwbG90LlRhYmxlTGVnZW5kUmVuZGVyZXIoKTtjLmpxcGxvdC5NZXRlckdhdWdlTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWMuanFwbG90Lk1ldGVyR2F1Z2VMZWdlbmRSZW5kZXJlcjtjLmpxcGxvdC5NZXRlckdhdWdlTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZSl7dGhpcy5udW1iZXJSb3dzPW51bGw7dGhpcy5udW1iZXJDb2x1bW5zPW51bGw7Yy5leHRlbmQodHJ1ZSx0aGlzLGUpfTtjLmpxcGxvdC5NZXRlckdhdWdlTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oKXtpZih0aGlzLnNob3cpe3ZhciBwPXRoaXMuX3Nlcmllczt2YXIgeD0icG9zaXRpb246YWJzb2x1dGU7Ijt4Kz0odGhpcy5iYWNrZ3JvdW5kKT8iYmFja2dyb3VuZDoiK3RoaXMuYmFja2dyb3VuZCsiOyI6IiI7eCs9KHRoaXMuYm9yZGVyKT8iYm9yZGVyOiIrdGhpcy5ib3JkZXIrIjsiOiIiO3grPSh0aGlzLmZvbnRTaXplKT8iZm9udC1zaXplOiIrdGhpcy5mb250U2l6ZSsiOyI6IiI7eCs9KHRoaXMuZm9udEZhbWlseSk/ImZvbnQtZmFtaWx5OiIrdGhpcy5mb250RmFtaWx5KyI7IjoiIjt4Kz0odGhpcy50ZXh0Q29sb3IpPyJjb2xvcjoiK3RoaXMudGV4dENvbG9yKyI7IjoiIjt4Kz0odGhpcy5tYXJnaW5Ub3AhPW51bGwpPyJtYXJnaW4tdG9wOiIrdGhpcy5tYXJnaW5Ub3ArIjsiOiIiO3grPSh0aGlzLm1hcmdpbkJvdHRvbSE9bnVsbCk/Im1hcmdpbi1ib3R0b206Iit0aGlzLm1hcmdpbkJvdHRvbSsiOyI6IiI7eCs9KHRoaXMubWFyZ2luTGVmdCE9bnVsbCk/Im1hcmdpbi1sZWZ0OiIrdGhpcy5tYXJnaW5MZWZ0KyI7IjoiIjt4Kz0odGhpcy5tYXJnaW5SaWdodCE9bnVsbCk/Im1hcmdpbi1yaWdodDoiK3RoaXMubWFyZ2luUmlnaHQrIjsiOiIiO3RoaXMuX2VsZW09YygnPHRhYmxlIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIiBzdHlsZT0iJyt4KyciPjwvdGFibGU+Jyk7dmFyIGY9ZmFsc2UscT1mYWxzZSx1LG87dmFyIHc9cFswXTtpZih3LnNob3cpe3ZhciB0PXcuZGF0YTtpZih0aGlzLm51bWJlclJvd3Mpe3U9dGhpcy5udW1iZXJSb3dzO2lmKCF0aGlzLm51bWJlckNvbHVtbnMpe289TWF0aC5jZWlsKHQubGVuZ3RoL3UpfWVsc2V7bz10aGlzLm51bWJlckNvbHVtbnN9fWVsc2V7aWYodGhpcy5udW1iZXJDb2x1bW5zKXtvPXRoaXMubnVtYmVyQ29sdW1uczt1PU1hdGguY2VpbCh0Lmxlbmd0aC90aGlzLm51bWJlckNvbHVtbnMpfWVsc2V7dT10Lmxlbmd0aDtvPTF9fXZhciBuLG0scixnLGUsbCxrLGg7dmFyIHY9MDtmb3Iobj0wO248dTtuKyspe2lmKHEpe3I9YygnPHRyIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIj48L3RyPicpLnByZXBlbmRUbyh0aGlzLl9lbGVtKX1lbHNle3I9YygnPHRyIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIj48L3RyPicpLmFwcGVuZFRvKHRoaXMuX2VsZW0pfWZvcihtPTA7bTxvO20rKyl7aWYodjx0Lmxlbmd0aCl7bD10aGlzLmxhYmVsc1t2XXx8dFt2XVswXS50b1N0cmluZygpO2g9dy5jb2xvcjtpZighcSl7aWYobj4wKXtmPXRydWV9ZWxzZXtmPWZhbHNlfX1lbHNle2lmKG49PXUtMSl7Zj1mYWxzZX1lbHNle2Y9dHJ1ZX19az0oZik/dGhpcy5yb3dTcGFjaW5nOiIwIjtnPWMoJzx0ZCBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3BhZGRpbmctdG9wOicraysnOyI+PGRpdj48ZGl2IGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaCIgc3R5bGU9ImJvcmRlci1jb2xvcjonK2grJzsiPjwvZGl2PjwvZGl2PjwvdGQ+Jyk7ZT1jKCc8dGQgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSJwYWRkaW5nLXRvcDonK2srJzsiPjwvdGQ+Jyk7aWYodGhpcy5lc2NhcGVIdG1sKXtlLnRleHQobCl9ZWxzZXtlLmh0bWwobCl9aWYocSl7ZS5wcmVwZW5kVG8ocik7Zy5wcmVwZW5kVG8ocil9ZWxzZXtnLmFwcGVuZFRvKHIpO2UuYXBwZW5kVG8ocil9Zj10cnVlfXYrK319fX1yZXR1cm4gdGhpcy5fZWxlbX07ZnVuY3Rpb24gYShqLGgsZil7Zj1mfHx7fTtmLmF4ZXNEZWZhdWx0cz1mLmF4ZXNEZWZhdWx0c3x8e307Zi5sZWdlbmQ9Zi5sZWdlbmR8fHt9O2Yuc2VyaWVzRGVmYXVsdHM9Zi5zZXJpZXNEZWZhdWx0c3x8e307Zi5ncmlkPWYuZ3JpZHx8e307dmFyIGU9ZmFsc2U7aWYoZi5zZXJpZXNEZWZhdWx0cy5yZW5kZXJlcj09Yy5qcXBsb3QuTWV0ZXJHYXVnZVJlbmRlcmVyKXtlPXRydWV9ZWxzZXtpZihmLnNlcmllcyl7Zm9yKHZhciBnPTA7ZzxmLnNlcmllcy5sZW5ndGg7ZysrKXtpZihmLnNlcmllc1tnXS5yZW5kZXJlcj09Yy5qcXBsb3QuTWV0ZXJHYXVnZVJlbmRlcmVyKXtlPXRydWV9fX19aWYoZSl7Zi5heGVzRGVmYXVsdHMucmVuZGVyZXI9Yy5qcXBsb3QuTWV0ZXJHYXVnZUF4aXNSZW5kZXJlcjtmLmxlZ2VuZC5yZW5kZXJlcj1jLmpxcGxvdC5NZXRlckdhdWdlTGVnZW5kUmVuZGVyZXI7Zi5sZWdlbmQucHJlRHJhdz10cnVlO2YuZ3JpZC5iYWNrZ3JvdW5kPWYuZ3JpZC5iYWNrZ3JvdW5kfHwid2hpdGUiO2YuZ3JpZC5kcmF3R3JpZGxpbmVzPWZhbHNlO2YuZ3JpZC5ib3JkZXJXaWR0aD0oZi5ncmlkLmJvcmRlcldpZHRoIT1udWxsKT9mLmdyaWQuYm9yZGVyV2lkdGg6MDtmLmdyaWQuc2hhZG93PShmLmdyaWQuc2hhZG93IT1udWxsKT9mLmdyaWQuc2hhZG93OmZhbHNlfX1mdW5jdGlvbiBkKGUpe31jLmpxcGxvdC5wcmVJbml0SG9va3MucHVzaChhKTtjLmpxcGxvdC5wb3N0UGFyc2VPcHRpb25zSG9va3MucHVzaChkKTtjLmpxcGxvdC5NZXRlckdhdWdlVGlja1JlbmRlcmVyPWZ1bmN0aW9uKCl7Yy5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlci5jYWxsKHRoaXMpfTtjLmpxcGxvdC5NZXRlckdhdWdlVGlja1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgYy5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlcigpO2MuanFwbG90Lk1ldGVyR2F1Z2VUaWNrUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWMuanFwbG90Lk1ldGVyR2F1Z2VUaWNrUmVuZGVyZXJ9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.mobile.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxcGxvdC5qcXVlcnltb2JpbGUgcGx1Z2luCiAqIGpRdWVyeSBNb2JpbGUgdmlydHVhbCBldmVudCBzdXBwb3J0LgogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMTEgVGFrYXNoaSBPa2Ftb3RvCiAqIGpxUGxvdCBpcyBjdXJyZW50bHkgYXZhaWxhYmxlIGZvciB1c2UgaW4gYWxsIHBlcnNvbmFsIG9yIGNvbW1lcmNpYWwgcHJvamVjdHMgCiAqIHVuZGVyIGJvdGggdGhlIE1JVCAoaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHApIGFuZCBHUEwgCiAqIHZlcnNpb24gMi4wIChodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTIuMC5odG1sKSBsaWNlbnNlcy4gVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gCiAqIGNob29zZSB0aGUgbGljZW5zZSB0aGF0IGJlc3Qgc3VpdHMgeW91ciBwcm9qZWN0IGFuZCB1c2UgaXQgYWNjb3JkaW5nbHkuIAogKgogKiBBbHRob3VnaCBub3QgcmVxdWlyZWQsIHRoZSBhdXRob3Igd291bGQgYXBwcmVjaWF0ZSBhbiBlbWFpbCBsZXR0aW5nIGhpbSAKICoga25vdyBvZiBhbnkgc3Vic3RhbnRpYWwgdXNlIG9mIGpxUGxvdC4gIFlvdSBjYW4gcmVhY2ggdGhlIGF1dGhvciBhdDogCiAqIGNocmlzIGF0IGpxcGxvdCBkb3QgY29tIG9yIHNlZSBodHRwOi8vd3d3LmpxcGxvdC5jb20vaW5mby5waHAgLgogKgogKiBJZiB5b3UgYXJlIGZlZWxpbmcga2luZCBhbmQgZ2VuZXJvdXMsIGNvbnNpZGVyIHN1cHBvcnRpbmcgdGhlIHByb2plY3QgYnkKICogbWFraW5nIGEgZG9uYXRpb24gYXQ6IGh0dHA6Ly93d3cuanFwbG90LmNvbS9kb25hdGUucGhwIC4KICoKICovCihmdW5jdGlvbigkKSB7CiAgICBmdW5jdGlvbiBwb3N0SW5pdCh0YXJnZXQsIGRhdGEsIG9wdGlvbnMpewogICAgICAgIHRoaXMuYmluZEN1c3RvbUV2ZW50cyA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJ3ZjbGljaycsIHtwbG90OnRoaXN9LCB0aGlzLm9uQ2xpY2spOwogICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJ2RibGNsaWNrJywge3Bsb3Q6dGhpc30sIHRoaXMub25EYmxDbGljayk7CiAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgndGFwaG9sZCcsIHtwbG90OnRoaXN9LCB0aGlzLm9uRGJsQ2xpY2spOwogICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJ3Ztb3VzZWRvd24nLCB7cGxvdDp0aGlzfSwgdGhpcy5vbk1vdXNlRG93bik7CiAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgndm1vdXNlbW92ZScsIHtwbG90OnRoaXN9LCB0aGlzLm9uTW91c2VNb3ZlKTsKICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCdtb3VzZWVudGVyJywge3Bsb3Q6dGhpc30sIHRoaXMub25Nb3VzZUVudGVyKTsKICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCdtb3VzZWxlYXZlJywge3Bsb3Q6dGhpc30sIHRoaXMub25Nb3VzZUxlYXZlKTsKICAgICAgICAgICAgaWYgKHRoaXMuY2FwdHVyZVJpZ2h0Q2xpY2spIHsKICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgndm1vdXNldXAnLCB7cGxvdDp0aGlzfSwgdGhpcy5vblJpZ2h0Q2xpY2spOwogICAgICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5nZXQoMCkub25jb250ZXh0bWVudSA9IGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJ3Ztb3VzZXVwJywge3Bsb3Q6dGhpc30sIHRoaXMub25Nb3VzZVVwKTsKICAgICAgICAgICAgfQogICAgICAgIH07CiAgICAgICAgdGhpcy5wbHVnaW5zLm1vYmlsZSA9IHRydWU7CiAgICB9CiAgICAkLmpxcGxvdC5wb3N0SW5pdEhvb2tzLnB1c2gocG9zdEluaXQpOwp9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.mobile.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGEoZSxkLGMpe3RoaXMuYmluZEN1c3RvbUV2ZW50cz1mdW5jdGlvbigpe3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgidmNsaWNrIix7cGxvdDp0aGlzfSx0aGlzLm9uQ2xpY2spO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgiZGJsY2xpY2siLHtwbG90OnRoaXN9LHRoaXMub25EYmxDbGljayk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCJ0YXBob2xkIix7cGxvdDp0aGlzfSx0aGlzLm9uRGJsQ2xpY2spO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgidm1vdXNlZG93biIse3Bsb3Q6dGhpc30sdGhpcy5vbk1vdXNlRG93bik7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCJ2bW91c2Vtb3ZlIix7cGxvdDp0aGlzfSx0aGlzLm9uTW91c2VNb3ZlKTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoIm1vdXNlZW50ZXIiLHtwbG90OnRoaXN9LHRoaXMub25Nb3VzZUVudGVyKTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoIm1vdXNlbGVhdmUiLHtwbG90OnRoaXN9LHRoaXMub25Nb3VzZUxlYXZlKTtpZih0aGlzLmNhcHR1cmVSaWdodENsaWNrKXt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoInZtb3VzZXVwIix7cGxvdDp0aGlzfSx0aGlzLm9uUmlnaHRDbGljayk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5nZXQoMCkub25jb250ZXh0bWVudT1mdW5jdGlvbigpe3JldHVybiBmYWxzZX19ZWxzZXt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoInZtb3VzZXVwIix7cGxvdDp0aGlzfSx0aGlzLm9uTW91c2VVcCl9fTt0aGlzLnBsdWdpbnMubW9iaWxlPXRydWV9Yi5qcXBsb3QucG9zdEluaXRIb29rcy5wdXNoKGEpfSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.ohlcRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuT0hMQ1JlbmRlcmVyCiAgICAgKiBqcVBsb3QgUGx1Z2luIHRvIGRyYXcgT3BlbiBIaSBMb3cgQ2xvc2UsIENhbmRsZXN0aWNrIGFuZCBIaSBMb3cgQ2xvc2UgY2hhcnRzLgogICAgICogCiAgICAgKiBUbyB1c2UgdGhpcyBwbHVnaW4sIGluY2x1ZGUgdGhlIHJlbmRlcmVyIGpzIGZpbGUgaW4gCiAgICAgKiB5b3VyIHNvdXJjZToKICAgICAqIAogICAgICogPiA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJwbHVnaW5zL2pxcGxvdC5vaGxjUmVuZGVyZXIuanMiPjwvc2NyaXB0PgogICAgICogCiAgICAgKiBZb3Ugd2lsbCBtb3N0IGxpa2VseSB3YW50IHRvIHVzZSBhIGRhdGUgYXhpcyByZW5kZXJlcgogICAgICogZm9yIHRoZSB4IGF4aXMgYWxzbywgc28gaW5jbHVkZSB0aGUgZGF0ZSBheGlzIHJlbmRlciBqcyBmaWxlIGFsc286CiAgICAgKiAKICAgICAqID4gPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icGx1Z2lucy9qcXBsb3QuZGF0ZUF4aXNSZW5kZXJlci5qcyI+PC9zY3JpcHQ+CiAgICAgKiAKICAgICAqIFRoZW4geW91IHNldCB0aGUgcmVuZGVyZXIgaW4gdGhlIHNlcmllcyBvcHRpb25zIG9uIHlvdXIgcGxvdDoKICAgICAqIAogICAgICogPiBzZXJpZXM6IFt7cmVuZGVyZXI6JC5qcXBsb3QuT0hMQ1JlbmRlcmVyfV0KICAgICAqIAogICAgICogRm9yIE9ITEMgYW5kIGNhbmRsZXN0aWNrIGNoYXJ0cywgZGF0YSBzaG91bGQgYmUgc3BlY2lmaWVkCiAgICAgKiBsaWtlIHNvOgogICAgICogCiAgICAgKiA+IGRhdCA9IFtbJzA3LzA2LzIwMDknLDEzOC43LDEzOS42OCwxMzUuMTgsMTM1LjRdLCBbJzA2LzI5LzIwMDknLDE0My40NiwxNDQuNjYsMTM5Ljc5LDE0MC4wMl0sIC4uLl0KICAgICAqIAogICAgICogSWYgdGhlIGRhdGEgYXJyYXkgaGFzIG9ubHkgNCB2YWx1ZXMgcGVyIHBvaW50IGluc3RlYWQgb2YgNSwKICAgICAqIHRoZSByZW5kZXJlciB3aWxsIGNyZWF0ZSBhIEhpIExvdyBDbG9zZSBjaGFydCBpbnN0ZWFkLiAgSW4gdGhhdCBjYXNlLAogICAgICogZGF0YSBzaG91bGQgYmUgc3VwcGxpZWQgbGlrZToKICAgICAqIAogICAgICogPiBkYXQgPSBbWycwNy8wNi8yMDA5JywxMzkuNjgsMTM1LjE4LDEzNS40XSwgWycwNi8yOS8yMDA5JywxNDQuNjYsMTM5Ljc5LDE0MC4wMl0sIC4uLl0KICAgICAqIAogICAgICogVG8gZ2VuZXJhdGUgYSBjYW5kbGVzdGljayBjaGFydCBpbnN0ZWFkIG9mIGFuIE9ITEMgY2hhcnQsCiAgICAgKiBzZXQgdGhlICJjYW5kbGVzdGljayIgb3B0aW9uIHRvIHRydWU6CiAgICAgKiAKICAgICAqID4gc2VyaWVzOiBbe3JlbmRlcmVyOiQuanFwbG90Lk9ITENSZW5kZXJlciwgcmVuZGVyZXJPcHRpb25zOntjYW5kbGVTdGljazp0cnVlfX1dLAogICAgICogCiAgICAgKi8KICAgICQuanFwbG90Lk9ITENSZW5kZXJlciA9IGZ1bmN0aW9uKCl7CiAgICAgICAgLy8gc3ViY2xhc3MgbGluZSByZW5kZXJlciB0byBtYWtlIHVzZSBvZiBzb21lIG9mIGl0cyBtZXRob2RzLgogICAgICAgICQuanFwbG90LkxpbmVSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgICAgIC8vIHByb3A6IGNhbmRsZVN0aWNrCiAgICAgICAgLy8gdHJ1ZSB0byByZW5kZXIgY2hhcnQgYXMgY2FuZGxlU3RpY2suCiAgICAgICAgLy8gTXVzdCBoYXZlIGFuIG9wZW4gcHJpY2UsIGNhbm5vdCBiZSBhIGhsYyBjaGFydC4KICAgICAgICB0aGlzLmNhbmRsZVN0aWNrID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogdGlja0xlbmd0aAogICAgICAgIC8vIGxlbmd0aCBvZiB0aGUgbGluZSBpbiBwaXhlbHMgaW5kaWNhdGluZyBvcGVuIGFuZCBjbG9zZSBwcmljZS4KICAgICAgICAvLyBEZWZhdWx0IHdpbGwgYXV0byBjYWxjdWxhdGUgYmFzZWQgb24gcGxvdCB3aWR0aCBhbmQgCiAgICAgICAgLy8gbnVtYmVyIG9mIHBvaW50cyBkaXNwbGF5ZWQuCiAgICAgICAgdGhpcy50aWNrTGVuZ3RoID0gJ2F1dG8nOwogICAgICAgIC8vIHByb3A6IGJvZHlXaWR0aAogICAgICAgIC8vIHdpZHRoIG9mIHRoZSBjYW5kbGVzdGljayBib2R5IGluIHBpeGVscy4gIERlZmF1bHQgd2lsbCBhdXRvIGNhbGN1bGF0ZQogICAgICAgIC8vIGJhc2VkIG9uIHBsb3Qgd2lkdGggYW5kIG51bWJlciBvZiBjYW5kbGVzdGlja3MgZGlzcGxheWVkLgogICAgICAgIHRoaXMuYm9keVdpZHRoID0gJ2F1dG8nOwogICAgICAgIC8vIHByb3A6IG9wZW5Db2xvcgogICAgICAgIC8vIGNvbG9yIG9mIHRoZSBvcGVuIHByaWNlIHRpY2sgbWFyay4gIERlZmF1bHQgaXMgc2VyaWVzIGNvbG9yLgogICAgICAgIHRoaXMub3BlbkNvbG9yID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBjbG9zZUNvbG9yCiAgICAgICAgLy8gY29sb3Igb2YgdGhlIGNsb3NlIHByaWNlIHRpY2sgbWFyay4gIERlZmF1bHQgaXMgc2VyaWVzIGNvbG9yLgogICAgICAgIHRoaXMuY2xvc2VDb2xvciA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogd2lja0NvbG9yCiAgICAgICAgLy8gY29sb3Igb2YgdGhlIGhpLWxvIGxpbmUgdGhvcnVnaCB0aGUgY2FuZGxlc3RpY2sgYm9keS4KICAgICAgICAvLyBEZWZhdWx0IGlzIHRoZSBzZXJpZXMgY29sb3IuCiAgICAgICAgdGhpcy53aWNrQ29sb3IgPSBudWxsOwogICAgICAgIC8vIHByb3A6IGZpbGxVcEJvZHkKICAgICAgICAvLyB0cnVlIHRvIHJlbmRlciBhbiAidXAiIGRheSAoY2xvc2UgcHJpY2UgZ3JlYXRlciB0aGFuIG9wZW4gcHJpY2UpCiAgICAgICAgLy8gd2l0aCBhIGZpbGxlZCBjYW5kbGVzdGljayBib2R5LgogICAgICAgIHRoaXMuZmlsbFVwQm9keSA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGZpbGxEb3duQm9keQogICAgICAgIC8vIHRydWUgdG8gcmVuZGVyIGEgImRvd24iIGRheSAoY2xvc2UgcHJpY2UgbG93ZXIgdGhhbiBvcGVuIHByaWNlKQogICAgICAgIC8vIHdpdGggYSBmaWxsZWQgY2FuZGxlc3RpY2sgYm9keS4KICAgICAgICB0aGlzLmZpbGxEb3duQm9keSA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogdXBCb2R5Q29sb3IKICAgICAgICAvLyBDb2xvciBvZiBjYW5kbGVzdGljayBib2R5IG9mIGFuICJ1cCIgZGF5LiAgRGVmYXVsdCBpcyBzZXJpZXMgY29sb3IuCiAgICAgICAgdGhpcy51cEJvZHlDb2xvciA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogZG93bkJvZHlDb2xvcgogICAgICAgIC8vIENvbG9yIG9mIGNhbmRsZXN0aWNrIGJvZHkgb24gYSAiZG93biIgZGF5LiAgRGVmYXVsdCBpcyBzZXJpZXMgY29sb3IuCiAgICAgICAgdGhpcy5kb3duQm9keUNvbG9yID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBobGMKICAgICAgICAvLyB0cnVlIGlmIGlzIGEgaGktbG93LWNsb3NlIGNoYXJ0IChubyBvcGVuIHByaWNlKS4KICAgICAgICAvLyBUaGlzIGlzIGRldGVybWluZWQgYXV0b21hdGljYWxseSBmcm9tIHRoZSBzZXJpZXMgZGF0YS4KICAgICAgICB0aGlzLmhsYyA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGxpbmVXaWR0aAogICAgICAgIC8vIFdpZHRoIG9mIHRoZSBoaS1sb3cgbGluZSBhbmQgb3Blbi9jbG9zZSB0aWNrcy4KICAgICAgICAvLyBNdXN0IGJlIHNldCBpbiB0aGUgcmVuZGVyZXJPcHRpb25zIGZvciB0aGUgc2VyaWVzLgogICAgICAgIHRoaXMubGluZVdpZHRoID0gMS41OwogICAgICAgIHRoaXMuX3RpY2tMZW5ndGg7CiAgICAgICAgdGhpcy5fYm9keVdpZHRoOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuT0hMQ1JlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTsKICAgICQuanFwbG90Lk9ITENSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5PSExDUmVuZGVyZXI7CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHNlcmllcy4KICAgICQuanFwbG90Lk9ITENSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgICAgICAvLyBsaW5lV2lkdGggaGFzIHRvIGJlIHNldCBvbiB0aGUgc2VyaWVzLCBjaGFuZ2VzIGluIHJlbmRlcmVyCiAgICAgICAgLy8gY29uc3RydWN0b3IgaGF2ZSBubyBlZmZlY3QuICBzZXQgdGhlIGRlZmF1bHQgaGVyZQogICAgICAgIC8vIGlmIG5vIHJlbmRlcmVyIG9wdGlvbiBmb3IgbGluZVdpZHRoIGlzIHNwZWNpZmllZC4KICAgICAgICB0aGlzLmxpbmVXaWR0aCA9IG9wdGlvbnMubGluZVdpZHRoIHx8IDEuNTsKICAgICAgICAkLmpxcGxvdC5MaW5lUmVuZGVyZXIucHJvdG90eXBlLmluaXQuY2FsbCh0aGlzLCBvcHRpb25zKTsKICAgICAgICB0aGlzLl90eXBlID0gJ29obGMnOwogICAgICAgIC8vIHNldCB0aGUgeWF4aXMgZGF0YSBib3VuZHMgaGVyZSB0byBhY2NvdW50IGZvciBoaSBhbmQgbG93IHZhbHVlcwogICAgICAgIHZhciBkYiA9IHRoaXMuX3lheGlzLl9kYXRhQm91bmRzOwogICAgICAgIHZhciBkID0gdGhpcy5fcGxvdERhdGE7CiAgICAgICAgLy8gaWYgZGF0YSBwb2ludHMgaGF2ZSBsZXNzIHRoYW4gNSB2YWx1ZXMsIGZvcmNlIGEgaGxjIGNoYXJ0LgogICAgICAgIGlmIChkWzBdLmxlbmd0aCA8IDUpIHsKICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5obGMgPSB0cnVlOwoKICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPGQubGVuZ3RoOyBqKyspIHsgCiAgICAgICAgICAgICAgICBpZiAoZFtqXVsyXSA8IGRiLm1pbiB8fCBkYi5taW4gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIGRiLm1pbiA9IGRbal1bMl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoZFtqXVsxXSA+IGRiLm1heCB8fCBkYi5tYXggPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIGRiLm1heCA9IGRbal1bMV07CiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBmb3IgKHZhciBqPTA7IGo8ZC5sZW5ndGg7IGorKykgeyAKICAgICAgICAgICAgICAgIGlmIChkW2pdWzNdIDwgZGIubWluIHx8IGRiLm1pbiA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgZGIubWluID0gZFtqXVszXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChkW2pdWzJdID4gZGIubWF4IHx8IGRiLm1heCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgZGIubWF4ID0gZFtqXVsyXTsKICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aGluIHNjb3BlIG9mIHNlcmllcy4KICAgICQuanFwbG90Lk9ITENSZW5kZXJlci5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGN0eCwgZ2QsIG9wdGlvbnMpIHsKICAgICAgICB2YXIgZCA9IHRoaXMuZGF0YTsKICAgICAgICB2YXIgeG1pbiA9IHRoaXMuX3hheGlzLm1pbjsKICAgICAgICB2YXIgeG1heCA9IHRoaXMuX3hheGlzLm1heDsKICAgICAgICAvLyBpbmRleCBvZiBsYXN0IHZhbHVlIGJlbG93IHJhbmdlIG9mIHBsb3QuCiAgICAgICAgdmFyIHhtaW5pZHggPSAwOwogICAgICAgIC8vIGluZGV4IG9mIGZpcnN0IHZhbHVlIGFib3ZlIHJhbmdlIG9mIHBsb3QuCiAgICAgICAgdmFyIHhtYXhpZHggPSBkLmxlbmd0aDsKICAgICAgICB2YXIgeHAgPSB0aGlzLl94YXhpcy5zZXJpZXNfdTJwOwogICAgICAgIHZhciB5cCA9IHRoaXMuX3lheGlzLnNlcmllc191MnA7CiAgICAgICAgdmFyIGksIHByZXZDb2xvciwgb3BzLCBiLCBoLCB3LCBhLCBwb2ludHM7CiAgICAgICAgdmFyIG87CiAgICAgICAgdmFyIHIgPSB0aGlzLnJlbmRlcmVyOwogICAgICAgIHZhciBvcHRzID0gKG9wdGlvbnMgIT0gdW5kZWZpbmVkKSA/IG9wdGlvbnMgOiB7fTsKICAgICAgICB2YXIgc2hhZG93ID0gKG9wdHMuc2hhZG93ICE9IHVuZGVmaW5lZCkgPyBvcHRzLnNoYWRvdyA6IHRoaXMuc2hhZG93OwogICAgICAgIHZhciBmaWxsID0gKG9wdHMuZmlsbCAhPSB1bmRlZmluZWQpID8gb3B0cy5maWxsIDogdGhpcy5maWxsOwogICAgICAgIHZhciBmaWxsQW5kU3Ryb2tlID0gKG9wdHMuZmlsbEFuZFN0cm9rZSAhPSB1bmRlZmluZWQpID8gb3B0cy5maWxsQW5kU3Ryb2tlIDogdGhpcy5maWxsQW5kU3Ryb2tlOwogICAgICAgIHIuYm9keVdpZHRoID0gKG9wdHMuYm9keVdpZHRoICE9IHVuZGVmaW5lZCkgPyBvcHRzLmJvZHlXaWR0aCA6IHIuYm9keVdpZHRoOwogICAgICAgIHIudGlja0xlbmd0aCA9IChvcHRzLnRpY2tMZW5ndGggIT0gdW5kZWZpbmVkKSA/IG9wdHMudGlja0xlbmd0aCA6IHIudGlja0xlbmd0aDsKICAgICAgICBjdHguc2F2ZSgpOwogICAgICAgIGlmICh0aGlzLnNob3cpIHsKICAgICAgICAgICAgdmFyIHgsIG9wZW4sIGhpLCBsb3csIGNsb3NlOwogICAgICAgICAgICAvLyBuZWVkIHRvIGdldCB3aWR0aHMgYmFzZWQgb24gbnVtYmVyIG9mIHBvaW50cyBzaG93biwKICAgICAgICAgICAgLy8gbm90IG9uIHRvdGFsIG51bWJlciBvZiBwb2ludHMuICBVc2UgdGhlIHJlc3VsdHMgCiAgICAgICAgICAgIC8vIHRvIHNwZWVkIHVwIGRyYXdpbmcgaW4gbmV4dCBzdGVwLgogICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8ZC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgaWYgKGRbaV1bMF0gPCB4bWluKSB7CiAgICAgICAgICAgICAgICAgICAgeG1pbmlkeCA9IGk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChkW2ldWzBdIDwgeG1heCkgewogICAgICAgICAgICAgICAgICAgIHhtYXhpZHggPSBpKzE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHZhciBkd2lkdGggPSB0aGlzLmdyaWREYXRhW3htYXhpZHgtMV1bMF0gLSB0aGlzLmdyaWREYXRhW3htaW5pZHhdWzBdOwogICAgICAgICAgICB2YXIgbnZpc2libGVQb2ludHMgPSB4bWF4aWR4IC0geG1pbmlkeDsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHZhciBkaW50ZXJ2YWwgPSBNYXRoLmFicyh0aGlzLl94YXhpcy5zZXJpZXNfdTJwKHBhcnNlSW50KHRoaXMuX3hheGlzLl9pbnRlcnZhbFN0YXRzWzBdLnNvcnRlZEludGVydmFsc1swXS5pbnRlcnZhbCwgMTApKSAtIHRoaXMuX3hheGlzLnNlcmllc191MnAoMCkpOyAKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY2F0Y2ggKGUpIHsKICAgICAgICAgICAgICAgIHZhciBkaW50ZXJ2YWwgPSBkd2lkdGggLyBudmlzaWJsZVBvaW50czsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHIuY2FuZGxlU3RpY2spIHsKICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yoci5ib2R5V2lkdGgpID09ICdudW1iZXInKSB7CiAgICAgICAgICAgICAgICAgICAgci5fYm9keVdpZHRoID0gci5ib2R5V2lkdGg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByLl9ib2R5V2lkdGggPSBNYXRoLm1pbigyMCwgZGludGVydmFsLzEuNjUpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKHR5cGVvZihyLnRpY2tMZW5ndGgpID09ICdudW1iZXInKSB7CiAgICAgICAgICAgICAgICAgICAgci5fdGlja0xlbmd0aCA9IHIudGlja0xlbmd0aDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHIuX3RpY2tMZW5ndGggPSBNYXRoLm1pbigxMCwgZGludGVydmFsLzMuNSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGZvciAodmFyIGk9eG1pbmlkeDsgaTx4bWF4aWR4OyBpKyspIHsKICAgICAgICAgICAgICAgIHggPSB4cChkW2ldWzBdKTsKICAgICAgICAgICAgICAgIGlmIChyLmhsYykgewogICAgICAgICAgICAgICAgICAgIG9wZW4gPSBudWxsOwogICAgICAgICAgICAgICAgICAgIGhpID0geXAoZFtpXVsxXSk7CiAgICAgICAgICAgICAgICAgICAgbG93ID0geXAoZFtpXVsyXSk7CiAgICAgICAgICAgICAgICAgICAgY2xvc2UgPSB5cChkW2ldWzNdKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIG9wZW4gPSB5cChkW2ldWzFdKTsKICAgICAgICAgICAgICAgICAgICBoaSA9IHlwKGRbaV1bMl0pOwogICAgICAgICAgICAgICAgICAgIGxvdyA9IHlwKGRbaV1bM10pOwogICAgICAgICAgICAgICAgICAgIGNsb3NlID0geXAoZFtpXVs0XSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBvID0ge307CiAgICAgICAgICAgICAgICBpZiAoci5jYW5kbGVTdGljayAmJiAhci5obGMpIHsKICAgICAgICAgICAgICAgICAgICB3ID0gci5fYm9keVdpZHRoOwogICAgICAgICAgICAgICAgICAgIGEgPSB4IC0gdy8yOwogICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgY2FuZGxlCiAgICAgICAgICAgICAgICAgICAgLy8gZGV0ZXJtaW5lIGlmIGNhbmRsZSB1cCBvciBkb3duCiAgICAgICAgICAgICAgICAgICAgLy8gdXAsIHJlbWVtYmVyIGdyaWQgY29vcmRpbmF0ZXMgaW5jcmVhc2UgZG93bndhcmQKICAgICAgICAgICAgICAgICAgICBpZiAoY2xvc2UgPCBvcGVuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgd2ljawogICAgICAgICAgICAgICAgICAgICAgICBpZiAoci53aWNrQ29sb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uY29sb3IgPSByLndpY2tDb2xvcjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyLmRvd25Cb2R5Q29sb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uY29sb3IgPSByLnVwQm9keUNvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG9wcyA9ICQuZXh0ZW5kKHRydWUsIHt9LCBvcHRzLCBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgci5zaGFwZVJlbmRlcmVyLmRyYXcoY3R4LCBbW3gsIGhpXSwgW3gsIGNsb3NlXV0sIG9wcyk7IAogICAgICAgICAgICAgICAgICAgICAgICByLnNoYXBlUmVuZGVyZXIuZHJhdyhjdHgsIFtbeCwgb3Blbl0sIFt4LCBsb3ddXSwgb3BzKTsgCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB7fTsKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGNsb3NlOwogICAgICAgICAgICAgICAgICAgICAgICBoID0gb3BlbiAtIGNsb3NlOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBjb2xvciBzcGVjaWZpZWQsIHVzZSBpdAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoci5maWxsVXBCb2R5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmZpbGxSZWN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uc3Ryb2tlUmVjdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ID0gdyAtIHRoaXMubGluZVdpZHRoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IHggLSB3LzI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIudXBCb2R5Q29sb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uY29sb3IgPSByLnVwQm9keUNvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5maWxsU3R5bGUgPSByLnVwQm9keUNvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IFthLCBiLCB3LCBoXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gZG93bgogICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNsb3NlID4gIG9wZW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB3aWNrCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLndpY2tDb2xvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5jb2xvciA9IHIud2lja0NvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHIuZG93bkJvZHlDb2xvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5jb2xvciA9IHIuZG93bkJvZHlDb2xvcjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBvcHMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgb3B0cywgbyk7CiAgICAgICAgICAgICAgICAgICAgICAgIHIuc2hhcGVSZW5kZXJlci5kcmF3KGN0eCwgW1t4LCBoaV0sIFt4LCBvcGVuXV0sIG9wcyk7IAogICAgICAgICAgICAgICAgICAgICAgICByLnNoYXBlUmVuZGVyZXIuZHJhdyhjdHgsIFtbeCwgY2xvc2VdLCBbeCwgbG93XV0sIG9wcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IG9wZW47CiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBjbG9zZSAtIG9wZW47CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIGNvbG9yIHNwZWNpZmllZCwgdXNlIGl0CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLmZpbGxEb3duQm9keSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5maWxsUmVjdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLnN0cm9rZVJlY3QgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdyA9IHcgLSB0aGlzLmxpbmVXaWR0aDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSB4IC0gdy8yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLmRvd25Cb2R5Q29sb3IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8uY29sb3IgPSByLmRvd25Cb2R5Q29sb3I7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvLmZpbGxTdHlsZSA9IHIuZG93bkJvZHlDb2xvcjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbYSwgYiwgdywgaF07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIC8vIGV2ZW4sIG9wZW4gPSBjbG9zZQogICAgICAgICAgICAgICAgICAgIGVsc2UgIHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB3aWNrCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLndpY2tDb2xvcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgby5jb2xvciA9IHIud2lja0NvbG9yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIG9wcyA9ICQuZXh0ZW5kKHRydWUsIHt9LCBvcHRzLCBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgci5zaGFwZVJlbmRlcmVyLmRyYXcoY3R4LCBbW3gsIGhpXSwgW3gsIGxvd11dLCBvcHMpOyAKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHt9OwogICAgICAgICAgICAgICAgICAgICAgICBvLmZpbGxSZWN0ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIG8uc3Ryb2tlUmVjdCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICBhID0gW3ggLSB3LzIsIG9wZW5dOwogICAgICAgICAgICAgICAgICAgICAgICBiID0gW3ggKyB3LzIsIGNsb3NlXTsKICAgICAgICAgICAgICAgICAgICAgICAgdyA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBudWxsOwogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBbYSwgYl07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG9wcyA9ICQuZXh0ZW5kKHRydWUsIHt9LCBvcHRzLCBvKTsKICAgICAgICAgICAgICAgICAgICByLnNoYXBlUmVuZGVyZXIuZHJhdyhjdHgsIHBvaW50cywgb3BzKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHByZXZDb2xvciA9IG9wdHMuY29sb3I7CiAgICAgICAgICAgICAgICAgICAgaWYgKHIub3BlbkNvbG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuY29sb3IgPSByLm9wZW5Db2xvcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyBvcGVuIHRpY2sKICAgICAgICAgICAgICAgICAgICBpZiAoIXIuaGxjKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHIuc2hhcGVSZW5kZXJlci5kcmF3KGN0eCwgW1t4LXIuX3RpY2tMZW5ndGgsIG9wZW5dLCBbeCwgb3Blbl1dLCBvcHRzKTsgICAgCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG9wdHMuY29sb3IgPSBwcmV2Q29sb3I7CiAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB3aWNrCiAgICAgICAgICAgICAgICAgICAgaWYgKHIud2lja0NvbG9yKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuY29sb3IgPSByLndpY2tDb2xvcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgci5zaGFwZVJlbmRlcmVyLmRyYXcoY3R4LCBbW3gsIGhpXSwgW3gsIGxvd11dLCBvcHRzKTsgCiAgICAgICAgICAgICAgICAgICAgb3B0cy5jb2xvciAgPSBwcmV2Q29sb3I7CiAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyBjbG9zZSB0aWNrCiAgICAgICAgICAgICAgICAgICAgaWYgKHIuY2xvc2VDb2xvcikgewogICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmNvbG9yID0gci5jbG9zZUNvbG9yOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByLnNoYXBlUmVuZGVyZXIuZHJhdyhjdHgsIFtbeCwgY2xvc2VdLCBbeCtyLl90aWNrTGVuZ3RoLCBjbG9zZV1dLCBvcHRzKTsgCiAgICAgICAgICAgICAgICAgICAgb3B0cy5jb2xvciA9IHByZXZDb2xvcjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgfTsgIAogICAgCiAgICAkLmpxcGxvdC5PSExDUmVuZGVyZXIucHJvdG90eXBlLmRyYXdTaGFkb3cgPSBmdW5jdGlvbihjdHgsIGdkLCBvcHRpb25zKSB7CiAgICAgICAgLy8gVGhpcyBpcyBhIG5vLW9wLCBzaGFkb3dzIGRyYXduIHdpdGggbGluZXMuCiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBwbG90LgogICAgJC5qcXBsb3QuT0hMQ1JlbmRlcmVyLmNoZWNrT3B0aW9ucyA9IGZ1bmN0aW9uKHRhcmdldCwgZGF0YSwgb3B0aW9ucykgewogICAgICAgIC8vIHByb3ZpZGUgc29tZSBzZW5zaWJsZSBoaWdobGlnaHRlciBvcHRpb25zIGJ5IGRlZmF1bHQKICAgICAgICAvLyBUaGVzZSBhcmVuJ3QgZ29vZCBmb3IgaGxjLCBvbmx5IGZvciBvaGxjIG9yIGNhbmRsZXN0aWNrCiAgICAgICAgaWYgKCFvcHRpb25zLmhpZ2hsaWdodGVyKSB7CiAgICAgICAgICAgIG9wdGlvbnMuaGlnaGxpZ2h0ZXIgPSB7CiAgICAgICAgICAgICAgICBzaG93TWFya2VyOmZhbHNlLAogICAgICAgICAgICAgICAgdG9vbHRpcEF4ZXM6ICd5JywKICAgICAgICAgICAgICAgIHl2YWx1ZXM6IDQsCiAgICAgICAgICAgICAgICBmb3JtYXRTdHJpbmc6Jzx0YWJsZSBjbGFzcz0ianFwbG90LWhpZ2hsaWdodGVyIj48dHI+PHRkPmRhdGU6PC90ZD48dGQ+JXM8L3RkPjwvdHI+PHRyPjx0ZD5vcGVuOjwvdGQ+PHRkPiVzPC90ZD48L3RyPjx0cj48dGQ+aGk6PC90ZD48dGQ+JXM8L3RkPjwvdHI+PHRyPjx0ZD5sb3c6PC90ZD48dGQ+JXM8L3RkPjwvdHI+PHRyPjx0ZD5jbG9zZTo8L3RkPjx0ZD4lczwvdGQ+PC90cj48L3RhYmxlPicKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9OwogICAgCiAgICAvLyQuanFwbG90LnByZUluaXRIb29rcy5wdXNoKCQuanFwbG90Lk9ITENSZW5kZXJlci5jaGVja09wdGlvbnMpOwogICAgCn0pKGpRdWVyeSk7ICAgIAo=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.ohlcRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGEpe2EuanFwbG90Lk9ITENSZW5kZXJlcj1mdW5jdGlvbigpe2EuanFwbG90LkxpbmVSZW5kZXJlci5jYWxsKHRoaXMpO3RoaXMuY2FuZGxlU3RpY2s9ZmFsc2U7dGhpcy50aWNrTGVuZ3RoPSJhdXRvIjt0aGlzLmJvZHlXaWR0aD0iYXV0byI7dGhpcy5vcGVuQ29sb3I9bnVsbDt0aGlzLmNsb3NlQ29sb3I9bnVsbDt0aGlzLndpY2tDb2xvcj1udWxsO3RoaXMuZmlsbFVwQm9keT1mYWxzZTt0aGlzLmZpbGxEb3duQm9keT10cnVlO3RoaXMudXBCb2R5Q29sb3I9bnVsbDt0aGlzLmRvd25Cb2R5Q29sb3I9bnVsbDt0aGlzLmhsYz1mYWxzZTt0aGlzLmxpbmVXaWR0aD0xLjU7dGhpcy5fdGlja0xlbmd0aDt0aGlzLl9ib2R5V2lkdGh9O2EuanFwbG90Lk9ITENSZW5kZXJlci5wcm90b3R5cGU9bmV3IGEuanFwbG90LkxpbmVSZW5kZXJlcigpO2EuanFwbG90Lk9ITENSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9YS5qcXBsb3QuT0hMQ1JlbmRlcmVyO2EuanFwbG90Lk9ITENSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihlKXtlPWV8fHt9O3RoaXMubGluZVdpZHRoPWUubGluZVdpZHRofHwxLjU7YS5qcXBsb3QuTGluZVJlbmRlcmVyLnByb3RvdHlwZS5pbml0LmNhbGwodGhpcyxlKTt0aGlzLl90eXBlPSJvaGxjIjt2YXIgYj10aGlzLl95YXhpcy5fZGF0YUJvdW5kczt2YXIgZj10aGlzLl9wbG90RGF0YTtpZihmWzBdLmxlbmd0aDw1KXt0aGlzLnJlbmRlcmVyLmhsYz10cnVlO2Zvcih2YXIgYz0wO2M8Zi5sZW5ndGg7YysrKXtpZihmW2NdWzJdPGIubWlufHxiLm1pbj09bnVsbCl7Yi5taW49ZltjXVsyXX1pZihmW2NdWzFdPmIubWF4fHxiLm1heD09bnVsbCl7Yi5tYXg9ZltjXVsxXX19fWVsc2V7Zm9yKHZhciBjPTA7YzxmLmxlbmd0aDtjKyspe2lmKGZbY11bM108Yi5taW58fGIubWluPT1udWxsKXtiLm1pbj1mW2NdWzNdfWlmKGZbY11bMl0+Yi5tYXh8fGIubWF4PT1udWxsKXtiLm1heD1mW2NdWzJdfX19fTthLmpxcGxvdC5PSExDUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oQSxOLGope3ZhciBKPXRoaXMuZGF0YTt2YXIgdj10aGlzLl94YXhpcy5taW47dmFyIHo9dGhpcy5feGF4aXMubWF4O3ZhciBsPTA7dmFyIEs9Si5sZW5ndGg7dmFyIHA9dGhpcy5feGF4aXMuc2VyaWVzX3UycDt2YXIgRz10aGlzLl95YXhpcy5zZXJpZXNfdTJwO3ZhciBELEUsZixNLEYsbixPLEM7dmFyIHk7dmFyIHU9dGhpcy5yZW5kZXJlcjt2YXIgcz0oaiE9dW5kZWZpbmVkKT9qOnt9O3ZhciBrPShzLnNoYWRvdyE9dW5kZWZpbmVkKT9zLnNoYWRvdzp0aGlzLnNoYWRvdzt2YXIgQj0ocy5maWxsIT11bmRlZmluZWQpP3MuZmlsbDp0aGlzLmZpbGw7dmFyIGM9KHMuZmlsbEFuZFN0cm9rZSE9dW5kZWZpbmVkKT9zLmZpbGxBbmRTdHJva2U6dGhpcy5maWxsQW5kU3Ryb2tlO3UuYm9keVdpZHRoPShzLmJvZHlXaWR0aCE9dW5kZWZpbmVkKT9zLmJvZHlXaWR0aDp1LmJvZHlXaWR0aDt1LnRpY2tMZW5ndGg9KHMudGlja0xlbmd0aCE9dW5kZWZpbmVkKT9zLnRpY2tMZW5ndGg6dS50aWNrTGVuZ3RoO0Euc2F2ZSgpO2lmKHRoaXMuc2hvdyl7dmFyIG0scSxnLFEsdDtmb3IodmFyIEQ9MDtEPEoubGVuZ3RoO0QrKyl7aWYoSltEXVswXTx2KXtsPUR9ZWxzZXtpZihKW0RdWzBdPHope0s9RCsxfX19dmFyIEk9dGhpcy5ncmlkRGF0YVtLLTFdWzBdLXRoaXMuZ3JpZERhdGFbbF1bMF07dmFyIEw9Sy1sO3RyeXt2YXIgUD1NYXRoLmFicyh0aGlzLl94YXhpcy5zZXJpZXNfdTJwKHBhcnNlSW50KHRoaXMuX3hheGlzLl9pbnRlcnZhbFN0YXRzWzBdLnNvcnRlZEludGVydmFsc1swXS5pbnRlcnZhbCwxMCkpLXRoaXMuX3hheGlzLnNlcmllc191MnAoMCkpfWNhdGNoKEgpe3ZhciBQPUkvTH1pZih1LmNhbmRsZVN0aWNrKXtpZih0eXBlb2YodS5ib2R5V2lkdGgpPT0ibnVtYmVyIil7dS5fYm9keVdpZHRoPXUuYm9keVdpZHRofWVsc2V7dS5fYm9keVdpZHRoPU1hdGgubWluKDIwLFAvMS42NSl9fWVsc2V7aWYodHlwZW9mKHUudGlja0xlbmd0aCk9PSJudW1iZXIiKXt1Ll90aWNrTGVuZ3RoPXUudGlja0xlbmd0aH1lbHNle3UuX3RpY2tMZW5ndGg9TWF0aC5taW4oMTAsUC8zLjUpfX1mb3IodmFyIEQ9bDtEPEs7RCsrKXttPXAoSltEXVswXSk7aWYodS5obGMpe3E9bnVsbDtnPUcoSltEXVsxXSk7UT1HKEpbRF1bMl0pO3Q9RyhKW0RdWzNdKX1lbHNle3E9RyhKW0RdWzFdKTtnPUcoSltEXVsyXSk7UT1HKEpbRF1bM10pO3Q9RyhKW0RdWzRdKX15PXt9O2lmKHUuY2FuZGxlU3RpY2smJiF1LmhsYyl7bj11Ll9ib2R5V2lkdGg7Tz1tLW4vMjtpZih0PHEpe2lmKHUud2lja0NvbG9yKXt5LmNvbG9yPXUud2lja0NvbG9yfWVsc2V7aWYodS5kb3duQm9keUNvbG9yKXt5LmNvbG9yPXUudXBCb2R5Q29sb3J9fWY9YS5leHRlbmQodHJ1ZSx7fSxzLHkpO3Uuc2hhcGVSZW5kZXJlci5kcmF3KEEsW1ttLGddLFttLHRdXSxmKTt1LnNoYXBlUmVuZGVyZXIuZHJhdyhBLFtbbSxxXSxbbSxRXV0sZik7eT17fTtNPXQ7Rj1xLXQ7aWYodS5maWxsVXBCb2R5KXt5LmZpbGxSZWN0PXRydWV9ZWxzZXt5LnN0cm9rZVJlY3Q9dHJ1ZTtuPW4tdGhpcy5saW5lV2lkdGg7Tz1tLW4vMn1pZih1LnVwQm9keUNvbG9yKXt5LmNvbG9yPXUudXBCb2R5Q29sb3I7eS5maWxsU3R5bGU9dS51cEJvZHlDb2xvcn1DPVtPLE0sbixGXX1lbHNle2lmKHQ+cSl7aWYodS53aWNrQ29sb3Ipe3kuY29sb3I9dS53aWNrQ29sb3J9ZWxzZXtpZih1LmRvd25Cb2R5Q29sb3Ipe3kuY29sb3I9dS5kb3duQm9keUNvbG9yfX1mPWEuZXh0ZW5kKHRydWUse30scyx5KTt1LnNoYXBlUmVuZGVyZXIuZHJhdyhBLFtbbSxnXSxbbSxxXV0sZik7dS5zaGFwZVJlbmRlcmVyLmRyYXcoQSxbW20sdF0sW20sUV1dLGYpO3k9e307TT1xO0Y9dC1xO2lmKHUuZmlsbERvd25Cb2R5KXt5LmZpbGxSZWN0PXRydWV9ZWxzZXt5LnN0cm9rZVJlY3Q9dHJ1ZTtuPW4tdGhpcy5saW5lV2lkdGg7Tz1tLW4vMn1pZih1LmRvd25Cb2R5Q29sb3Ipe3kuY29sb3I9dS5kb3duQm9keUNvbG9yO3kuZmlsbFN0eWxlPXUuZG93bkJvZHlDb2xvcn1DPVtPLE0sbixGXX1lbHNle2lmKHUud2lja0NvbG9yKXt5LmNvbG9yPXUud2lja0NvbG9yfWY9YS5leHRlbmQodHJ1ZSx7fSxzLHkpO3Uuc2hhcGVSZW5kZXJlci5kcmF3KEEsW1ttLGddLFttLFFdXSxmKTt5PXt9O3kuZmlsbFJlY3Q9ZmFsc2U7eS5zdHJva2VSZWN0PWZhbHNlO089W20tbi8yLHFdO009W20rbi8yLHRdO249bnVsbDtGPW51bGw7Qz1bTyxNXX19Zj1hLmV4dGVuZCh0cnVlLHt9LHMseSk7dS5zaGFwZVJlbmRlcmVyLmRyYXcoQSxDLGYpfWVsc2V7RT1zLmNvbG9yO2lmKHUub3BlbkNvbG9yKXtzLmNvbG9yPXUub3BlbkNvbG9yfWlmKCF1LmhsYyl7dS5zaGFwZVJlbmRlcmVyLmRyYXcoQSxbW20tdS5fdGlja0xlbmd0aCxxXSxbbSxxXV0scyl9cy5jb2xvcj1FO2lmKHUud2lja0NvbG9yKXtzLmNvbG9yPXUud2lja0NvbG9yfXUuc2hhcGVSZW5kZXJlci5kcmF3KEEsW1ttLGddLFttLFFdXSxzKTtzLmNvbG9yPUU7aWYodS5jbG9zZUNvbG9yKXtzLmNvbG9yPXUuY2xvc2VDb2xvcn11LnNoYXBlUmVuZGVyZXIuZHJhdyhBLFtbbSx0XSxbbSt1Ll90aWNrTGVuZ3RoLHRdXSxzKTtzLmNvbG9yPUV9fX1BLnJlc3RvcmUoKX07YS5qcXBsb3QuT0hMQ1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3U2hhZG93PWZ1bmN0aW9uKGIsZCxjKXt9O2EuanFwbG90Lk9ITENSZW5kZXJlci5jaGVja09wdGlvbnM9ZnVuY3Rpb24oZCxjLGIpe2lmKCFiLmhpZ2hsaWdodGVyKXtiLmhpZ2hsaWdodGVyPXtzaG93TWFya2VyOmZhbHNlLHRvb2x0aXBBeGVzOiJ5Iix5dmFsdWVzOjQsZm9ybWF0U3RyaW5nOic8dGFibGUgY2xhc3M9ImpxcGxvdC1oaWdobGlnaHRlciI+PHRyPjx0ZD5kYXRlOjwvdGQ+PHRkPiVzPC90ZD48L3RyPjx0cj48dGQ+b3Blbjo8L3RkPjx0ZD4lczwvdGQ+PC90cj48dHI+PHRkPmhpOjwvdGQ+PHRkPiVzPC90ZD48L3RyPjx0cj48dGQ+bG93OjwvdGQ+PHRkPiVzPC90ZD48L3RyPjx0cj48dGQ+Y2xvc2U6PC90ZD48dGQ+JXM8L3RkPjwvdHI+PC90YWJsZT4nfX19fSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.pieRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgLyoqCiAgICAgKiBDbGFzczogJC5qcXBsb3QuUGllUmVuZGVyZXIKICAgICAqIFBsdWdpbiByZW5kZXJlciB0byBkcmF3IGEgcGllIGNoYXJ0LgogICAgICogeCB2YWx1ZXMsIGlmIHByZXNlbnQsIHdpbGwgYmUgdXNlZCBhcyBzbGljZSBsYWJlbHMuCiAgICAgKiB5IHZhbHVlcyBnaXZlIHNsaWNlIHNpemUuCiAgICAgKiAKICAgICAqIFRvIHVzZSB0aGlzIHJlbmRlcmVyLCB5b3UgbmVlZCB0byBpbmNsdWRlIHRoZSAKICAgICAqIHBpZSByZW5kZXJlciBwbHVnaW4sIGZvciBleGFtcGxlOgogICAgICogCiAgICAgKiA+IDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InBsdWdpbnMvanFwbG90LnBpZVJlbmRlcmVyLmpzIj48L3NjcmlwdD4KICAgICAqIAogICAgICogUHJvcGVydGllcyBkZXNjcmliZWQgaGVyZSBhcmUgcGFzc2VkIGludG8gdGhlICQuanFwbG90IGZ1bmN0aW9uCiAgICAgKiBhcyBvcHRpb25zIG9uIHRoZSBzZXJpZXMgcmVuZGVyZXIuICBGb3IgZXhhbXBsZToKICAgICAqIAogICAgICogPiBwbG90MiA9ICQuanFwbG90KCdjaGFydDInLCBbczEsIHMyXSwgewogICAgICogPiAgICAgc2VyaWVzRGVmYXVsdHM6IHsKICAgICAqID4gICAgICAgICByZW5kZXJlcjokLmpxcGxvdC5QaWVSZW5kZXJlciwKICAgICAqID4gICAgICAgICByZW5kZXJlck9wdGlvbnM6ewogICAgICogPiAgICAgICAgICAgICAgc2xpY2VNYXJnaW46IDIsCiAgICAgKiA+ICAgICAgICAgICAgICBzdGFydEFuZ2xlOiAtOTAKICAgICAqID4gICAgICAgICAgfQogICAgICogPiAgICAgIH0KICAgICAqID4gfSk7CiAgICAgKiAKICAgICAqIEEgcGllIHBsb3Qgd2lsbCB0cmlnZ2VyIGV2ZW50cyBvbiB0aGUgcGxvdCB0YXJnZXQKICAgICAqIGFjY29yZGluZyB0byB1c2VyIGludGVyYWN0aW9uLiAgQWxsIGV2ZW50cyByZXR1cm4gdGhlIGV2ZW50IG9iamVjdCwKICAgICAqIHRoZSBzZXJpZXMgaW5kZXgsIHRoZSBwb2ludCAoc2xpY2UpIGluZGV4LCBhbmQgdGhlIHBvaW50IGRhdGEgZm9yIAogICAgICogdGhlIGFwcHJvcHJpYXRlIHNsaWNlLgogICAgICogCiAgICAgKiAnanFwbG90RGF0YU1vdXNlT3ZlcicgLSB0cmlnZ2VyZWQgd2hlbiB1c2VyIG1vdXNlaW5nIG92ZXIgYSBzbGljZS4KICAgICAqICdqcXBsb3REYXRhSGlnaGxpZ2h0JyAtIHRyaWdnZXJlZCB0aGUgZmlyc3QgdGltZSB1c2VyIG1vdXNlcyBvdmVyIGEgc2xpY2UsCiAgICAgKiBpZiBoaWdobGlnaHRpbmcgaXMgZW5hYmxlZC4KICAgICAqICdqcXBsb3REYXRhVW5oaWdobGlnaHQnIC0gdHJpZ2dlcmVkIHdoZW4gYSB1c2VyIG1vdmVzIHRoZSBtb3VzZSBvdXQgb2YKICAgICAqIGEgaGlnaGxpZ2h0ZWQgc2xpY2UuCiAgICAgKiAnanFwbG90RGF0YUNsaWNrJyAtIHRyaWdnZXJlZCB3aGVuIHRoZSB1c2VyIGNsaWNrcyBvbiBhIHNsaWNlLgogICAgICogJ2pxcGxvdERhdGFSaWdodENsaWNrJyAtIHRpZ2dlcmVkIHdoZW4gdGhlIHVzZXIgcmlnaHQgY2xpY2tzIG9uIGEgc2xpY2UgaWYKICAgICAqIHRoZSAiY2FwdHVyZVJpZ2h0Q2xpY2siIG9wdGlvbiBpcyBzZXQgdG8gdHJ1ZSBvbiB0aGUgcGxvdC4KICAgICAqLwogICAgJC5qcXBsb3QuUGllUmVuZGVyZXIgPSBmdW5jdGlvbigpewogICAgICAgICQuanFwbG90LkxpbmVSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuUGllUmVuZGVyZXIucHJvdG90eXBlID0gbmV3ICQuanFwbG90LkxpbmVSZW5kZXJlcigpOwogICAgJC5qcXBsb3QuUGllUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuUGllUmVuZGVyZXI7CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIGEgc2VyaWVzCiAgICAkLmpxcGxvdC5QaWVSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMsIHBsb3QpIHsKICAgICAgICAvLyBHcm91cDogUHJvcGVydGllcwogICAgICAgIC8vCiAgICAgICAgLy8gcHJvcDogZGlhbWV0ZXIKICAgICAgICAvLyBPdXRlciBkaWFtZXRlciBvZiB0aGUgcGllLCBhdXRvIGNvbXB1dGVkIGJ5IGRlZmF1bHQKICAgICAgICB0aGlzLmRpYW1ldGVyID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBwYWRkaW5nCiAgICAgICAgLy8gcGFkZGluZyBiZXR3ZWVuIHRoZSBwaWUgYW5kIHBsb3QgZWRnZXMsIGxlZ2VuZCwgZXRjLgogICAgICAgIHRoaXMucGFkZGluZyA9IDIwOwogICAgICAgIC8vIHByb3A6IHNsaWNlTWFyZ2luCiAgICAgICAgLy8gYW5ndWxhciBzcGFjaW5nIGJldHdlZW4gcGllIHNsaWNlcyBpbiBkZWdyZWVzLgogICAgICAgIHRoaXMuc2xpY2VNYXJnaW4gPSAwOwogICAgICAgIC8vIHByb3A6IGZpbGwKICAgICAgICAvLyB0cnVlIG9yIGZhbHNlLCB3aGV0aGVyIHRvIGZpbCB0aGUgc2xpY2VzLgogICAgICAgIHRoaXMuZmlsbCA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogc2hhZG93T2Zmc2V0CiAgICAgICAgLy8gb2Zmc2V0IG9mIHRoZSBzaGFkb3cgZnJvbSB0aGUgc2xpY2UgYW5kIG9mZnNldCBvZiAKICAgICAgICAvLyBlYWNoIHN1Y2Nlc2l2ZSBzdHJva2Ugb2YgdGhlIHNoYWRvdyBmcm9tIHRoZSBsYXN0LgogICAgICAgIHRoaXMuc2hhZG93T2Zmc2V0ID0gMjsKICAgICAgICAvLyBwcm9wOiBzaGFkb3dBbHBoYQogICAgICAgIC8vIHRyYW5zcGFyZW5jeSBvZiB0aGUgc2hhZG93ICgwID0gdHJhbnNwYXJlbnQsIDEgPSBvcGFxdWUpCiAgICAgICAgdGhpcy5zaGFkb3dBbHBoYSA9IDAuMDc7CiAgICAgICAgLy8gcHJvcDogc2hhZG93RGVwdGgKICAgICAgICAvLyBudW1iZXIgb2Ygc3Ryb2tlcyB0byBhcHBseSB0byB0aGUgc2hhZG93LCAKICAgICAgICAvLyBlYWNoIHN0cm9rZSBvZmZzZXQgc2hhZG93T2Zmc2V0IGZyb20gdGhlIGxhc3QuCiAgICAgICAgdGhpcy5zaGFkb3dEZXB0aCA9IDU7CiAgICAgICAgLy8gcHJvcDogaGlnaGxpZ2h0TW91c2VPdmVyCiAgICAgICAgLy8gVHJ1ZSB0byBoaWdobGlnaHQgc2xpY2Ugd2hlbiBtb3VzZWQgb3Zlci4KICAgICAgICAvLyBUaGlzIG11c3QgYmUgZmFsc2UgdG8gZW5hYmxlIGhpZ2hsaWdodE1vdXNlRG93biB0byBoaWdobGlnaHQgd2hlbiBjbGlja2luZyBvbiBhIHNsaWNlLgogICAgICAgIHRoaXMuaGlnaGxpZ2h0TW91c2VPdmVyID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBoaWdobGlnaHRNb3VzZURvd24KICAgICAgICAvLyBUcnVlIHRvIGhpZ2hsaWdodCB3aGVuIGEgbW91c2UgYnV0dG9uIGlzIHByZXNzZWQgb3ZlciBhIHNsaWNlLgogICAgICAgIC8vIFRoaXMgd2lsbCBiZSBkaXNhYmxlZCBpZiBoaWdobGlnaHRNb3VzZU92ZXIgaXMgdHJ1ZS4KICAgICAgICB0aGlzLmhpZ2hsaWdodE1vdXNlRG93biA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGhpZ2hsaWdodENvbG9ycwogICAgICAgIC8vIGFuIGFycmF5IG9mIGNvbG9ycyB0byB1c2Ugd2hlbiBoaWdobGlnaHRpbmcgYSBzbGljZS4KICAgICAgICB0aGlzLmhpZ2hsaWdodENvbG9ycyA9IFtdOwogICAgICAgIC8vIHByb3A6IGRhdGFMYWJlbHMKICAgICAgICAvLyBFaXRoZXIgJ2xhYmVsJywgJ3ZhbHVlJywgJ3BlcmNlbnQnIG9yIGFuIGFycmF5IG9mIGxhYmVscyB0byBwbGFjZSBvbiB0aGUgcGllIHNsaWNlcy4KICAgICAgICAvLyBEZWZhdWx0cyB0byBwZXJjZW50YWdlIG9mIGVhY2ggcGllIHNsaWNlLgogICAgICAgIHRoaXMuZGF0YUxhYmVscyA9ICdwZXJjZW50JzsKICAgICAgICAvLyBwcm9wOiBzaG93RGF0YUxhYmVscwogICAgICAgIC8vIHRydWUgdG8gc2hvdyBkYXRhIGxhYmVscyBvbiBzbGljZXMuCiAgICAgICAgdGhpcy5zaG93RGF0YUxhYmVscyA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGRhdGFMYWJlbEZvcm1hdFN0cmluZwogICAgICAgIC8vIEZvcm1hdCBzdHJpbmcgZm9yIGRhdGEgbGFiZWxzLiAgSWYgbm9uZSwgJyVzJyBpcyB1c2VkIGZvciAibGFiZWwiIGFuZCBmb3IgYXJyYXlzLCAnJWQnIGZvciB2YWx1ZSBhbmQgJyVkJSUnIGZvciBwZXJjZW50YWdlLgogICAgICAgIHRoaXMuZGF0YUxhYmVsRm9ybWF0U3RyaW5nID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBkYXRhTGFiZWxUaHJlc2hvbGQKICAgICAgICAvLyBUaHJlc2hob2xkIGluIHBlcmNlbnRhZ2UgKDAtMTAwKSBvZiBwaWUgYXJlYSwgYmVsb3cgd2hpY2ggbm8gbGFiZWwgd2lsbCBiZSBkaXNwbGF5ZWQuCiAgICAgICAgLy8gVGhpcyBhcHBsaWVzIHRvIGFsbCBsYWJlbCB0eXBlcywgbm90IGp1c3QgdG8gcGVyY2VudGFnZSBsYWJlbHMuCiAgICAgICAgdGhpcy5kYXRhTGFiZWxUaHJlc2hvbGQgPSAzOwogICAgICAgIC8vIHByb3A6IGRhdGFMYWJlbFBvc2l0aW9uRmFjdG9yCiAgICAgICAgLy8gQSBNdWx0aXBsaWVyICgwLTEpIG9mIHRoZSBwaWUgcmFkaXVzIHdoaWNoIGNvbnRyb2xzIHBvc2l0aW9uIG9mIGxhYmVsIG9uIHNsaWNlLgogICAgICAgIC8vIEluY3JlYXNpbmcgd2lsbCBzbGlkZSBsYWJlbCB0b3dhcmQgZWRnZSBvZiBwaWUsIGRlY3JlYXNpbmcgd2lsbCBzbGlkZSBsYWJlbCB0b3dhcmQgY2VudGVyIG9mIHBpZS4KICAgICAgICB0aGlzLmRhdGFMYWJlbFBvc2l0aW9uRmFjdG9yID0gMC41MjsKICAgICAgICAvLyBwcm9wOiBkYXRhTGFiZWxOdWRnZQogICAgICAgIC8vIE51bWJlciBvZiBwaXhlbHMgdG8gc2xpZGUgdGhlIGxhYmVsIGF3YXkgZnJvbSAoKykgb3IgdG93YXJkICgtKSB0aGUgY2VudGVyIG9mIHRoZSBwaWUuCiAgICAgICAgdGhpcy5kYXRhTGFiZWxOdWRnZSA9IDI7CiAgICAgICAgLy8gcHJvcDogZGF0YUxhYmVsQ2VudGVyT24KICAgICAgICAvLyBUcnVlIHRvIGNlbnRlciB0aGUgZGF0YSBsYWJlbCBhdCBpdHMgcG9zaXRpb24uCiAgICAgICAgLy8gRmFsc2UgdG8gc2V0IHRoZSBpbnNpZGUgZmFjaW5nIGVkZ2Ugb2YgdGhlIGxhYmVsIGF0IGl0cyBwb3NpdGlvbi4KICAgICAgICB0aGlzLmRhdGFMYWJlbENlbnRlck9uID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBzdGFydEFuZ2xlCiAgICAgICAgLy8gQW5nbGUgdG8gc3RhcnQgZHJhd2luZyBwaWUgaW4gZGVncmVlcy4gIAogICAgICAgIC8vIEFjY29yZGluZyB0byBvcmllbnRhdGlvbiBvZiBjYW52YXMgY29vcmRpbmF0ZSBzeXN0ZW06CiAgICAgICAgLy8gMCA9IG9uIHRoZSBwb3NpdGl2ZSB4IGF4aXMKICAgICAgICAvLyAtOTAgPSBvbiB0aGUgcG9zaXRpdmUgeSBheGlzLgogICAgICAgIC8vIDkwID0gb24gdGhlIG5lZ2FpdmUgeSBheGlzLgogICAgICAgIC8vIDE4MCBvciAtIDE4MCA9IG9uIHRoZSBuZWdhdGl2ZSB4IGF4aXMuCiAgICAgICAgdGhpcy5zdGFydEFuZ2xlID0gMDsKICAgICAgICB0aGlzLnRpY2tSZW5kZXJlciA9ICQuanFwbG90LlBpZVRpY2tSZW5kZXJlcjsKICAgICAgICAvLyBVc2VkIGFzIGNoZWNrIGZvciBjb25kaXRpb25zIHdoZXJlIHBpZSBzaG91bGRuJ3QgYmUgZHJhd24uCiAgICAgICAgdGhpcy5fZHJhd0RhdGEgPSB0cnVlOwogICAgICAgIHRoaXMuX3R5cGUgPSAncGllJzsKICAgICAgICAKICAgICAgICAvLyBpZiB1c2VyIGhhcyBwYXNzZWQgaW4gaGlnaGxpZ2h0TW91c2VEb3duIG9wdGlvbiBhbmQgbm90IHNldCBoaWdobGlnaHRNb3VzZU92ZXIsIGRpc2FibGUgaGlnaGxpZ2h0TW91c2VPdmVyCiAgICAgICAgaWYgKG9wdGlvbnMuaGlnaGxpZ2h0TW91c2VEb3duICYmIG9wdGlvbnMuaGlnaGxpZ2h0TW91c2VPdmVyID09IG51bGwpIHsKICAgICAgICAgICAgb3B0aW9ucy5oaWdobGlnaHRNb3VzZU92ZXIgPSBmYWxzZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CgogICAgICAgIGlmICh0aGlzLnNsaWNlTWFyZ2luIDwgMCkgewogICAgICAgICAgICB0aGlzLnNsaWNlTWFyZ2luID0gMDsKICAgICAgICB9CgogICAgICAgIHRoaXMuX2RpYW1ldGVyID0gbnVsbDsKICAgICAgICB0aGlzLl9yYWRpdXMgPSBudWxsOwogICAgICAgIC8vIGFycmF5IG9mIFtzdGFydCxlbmRdIGFuZ2xlcyBhcnJheXMsIG9uZSBmb3IgZWFjaCBzbGljZS4gIEluIHJhZGlhbnMuCiAgICAgICAgdGhpcy5fc2xpY2VBbmdsZXMgPSBbXTsKICAgICAgICAvLyBpbmRleCBvZiB0aGUgY3VycmVudHkgaGlnaGxpZ2h0ZWQgcG9pbnQsIGlmIGFueQogICAgICAgIHRoaXMuX2hpZ2hsaWdodGVkUG9pbnQgPSBudWxsOwogICAgICAgIAogICAgICAgIC8vIHNldCBoaWdobGlnaHQgY29sb3JzIGlmIG5vbmUgcHJvdmlkZWQKICAgICAgICBpZiAodGhpcy5oaWdobGlnaHRDb2xvcnMubGVuZ3RoID09IDApIHsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPHRoaXMuc2VyaWVzQ29sb3JzLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgICAgIHZhciByZ2JhID0gJC5qcXBsb3QuZ2V0Q29sb3JDb21wb25lbnRzKHRoaXMuc2VyaWVzQ29sb3JzW2ldKTsKICAgICAgICAgICAgICAgIHZhciBuZXdyZ2IgPSBbcmdiYVswXSwgcmdiYVsxXSwgcmdiYVsyXV07CiAgICAgICAgICAgICAgICB2YXIgc3VtID0gbmV3cmdiWzBdICsgbmV3cmdiWzFdICsgbmV3cmdiWzJdOwogICAgICAgICAgICAgICAgZm9yICh2YXIgaj0wOyBqPDM7IGorKykgewogICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gZGFya2VuaW5nLCBsb3dlc3QgY29sb3IgY29tcG9uZW50IGNhbiBiZSBpcyA2MC4KICAgICAgICAgICAgICAgICAgICBuZXdyZ2Jbal0gPSAoc3VtID4gNTcwKSA/ICBuZXdyZ2Jbal0gKiAwLjggOiBuZXdyZ2Jbal0gKyAwLjMgKiAoMjU1IC0gbmV3cmdiW2pdKTsKICAgICAgICAgICAgICAgICAgICBuZXdyZ2Jbal0gPSBwYXJzZUludChuZXdyZ2Jbal0sIDEwKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0Q29sb3JzLnB1c2goJ3JnYignK25ld3JnYlswXSsnLCcrbmV3cmdiWzFdKycsJytuZXdyZ2JbMl0rJyknKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICB0aGlzLmhpZ2hsaWdodENvbG9yR2VuZXJhdG9yID0gbmV3ICQuanFwbG90LkNvbG9yR2VuZXJhdG9yKHRoaXMuaGlnaGxpZ2h0Q29sb3JzKTsKICAgICAgICAKICAgICAgICBwbG90LnBvc3RQYXJzZU9wdGlvbnNIb29rcy5hZGRPbmNlKHBvc3RQYXJzZU9wdGlvbnMpOwogICAgICAgIHBsb3QucG9zdEluaXRIb29rcy5hZGRPbmNlKHBvc3RJbml0KTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RNb3VzZU1vdmUnLCBoYW5kbGVNb3ZlKTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RNb3VzZURvd24nLCBoYW5kbGVNb3VzZURvd24pOwogICAgICAgIHBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoJ2pxcGxvdE1vdXNlVXAnLCBoYW5kbGVNb3VzZVVwKTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RDbGljaycsIGhhbmRsZUNsaWNrKTsKICAgICAgICBwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCdqcXBsb3RSaWdodENsaWNrJywgaGFuZGxlUmlnaHRDbGljayk7CiAgICAgICAgcGxvdC5wb3N0RHJhd0hvb2tzLmFkZE9uY2UocG9zdFBsb3REcmF3KTsKICAgIH07CiAgICAKICAgICQuanFwbG90LlBpZVJlbmRlcmVyLnByb3RvdHlwZS5zZXRHcmlkRGF0YSA9IGZ1bmN0aW9uKHBsb3QpIHsKICAgICAgICAvLyBzZXQgZ3JpZERhdGEgcHJvcGVydHkuICBUaGlzIHdpbGwgaG9sZCBhbmdsZSBpbiByYWRpYW5zIG9mIGVhY2ggZGF0YSBwb2ludC4KICAgICAgICB2YXIgc3RhY2sgPSBbXTsKICAgICAgICB2YXIgdGQgPSBbXTsKICAgICAgICB2YXIgc2EgPSB0aGlzLnN0YXJ0QW5nbGUvMTgwKk1hdGguUEk7CiAgICAgICAgdmFyIHRvdCA9IDA7CiAgICAgICAgLy8gZG9uJ3Qga25vdyBpZiB3ZSBoYXZlIGFueSB2YWxpZCBkYXRhIHlldCwgc28gc2V0IHBsb3QgdG8gbm90IGRyYXcuCiAgICAgICAgdGhpcy5fZHJhd0RhdGEgPSBmYWxzZTsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5kYXRhLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVtpXVsxXSAhPSAwKSB7CiAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIGRhdGEsIE8uSy4gdG8gZHJhdy4KICAgICAgICAgICAgICAgIHRoaXMuX2RyYXdEYXRhID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGFjay5wdXNoKHRoaXMuZGF0YVtpXVsxXSk7CiAgICAgICAgICAgIHRkLnB1c2goW3RoaXMuZGF0YVtpXVswXV0pOwogICAgICAgICAgICBpZiAoaT4wKSB7CiAgICAgICAgICAgICAgICBzdGFja1tpXSArPSBzdGFja1tpLTFdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRvdCArPSB0aGlzLmRhdGFbaV1bMV07CiAgICAgICAgfQogICAgICAgIHZhciBmYWN0ID0gTWF0aC5QSSoyL3N0YWNrW3N0YWNrLmxlbmd0aCAtIDFdOwogICAgICAgIAogICAgICAgIGZvciAodmFyIGk9MDsgaTxzdGFjay5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB0ZFtpXVsxXSA9IHN0YWNrW2ldICogZmFjdDsKICAgICAgICAgICAgdGRbaV1bMl0gPSB0aGlzLmRhdGFbaV1bMV0vdG90OwogICAgICAgIH0KICAgICAgICB0aGlzLmdyaWREYXRhID0gdGQ7CiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5QaWVSZW5kZXJlci5wcm90b3R5cGUubWFrZUdyaWREYXRhID0gZnVuY3Rpb24oZGF0YSwgcGxvdCkgewogICAgICAgIHZhciBzdGFjayA9IFtdOwogICAgICAgIHZhciB0ZCA9IFtdOwogICAgICAgIHZhciB0b3QgPSAwOwogICAgICAgIHZhciBzYSA9IHRoaXMuc3RhcnRBbmdsZS8xODAqTWF0aC5QSTsKICAgICAgICAvLyBkb24ndCBrbm93IGlmIHdlIGhhdmUgYW55IHZhbGlkIGRhdGEgeWV0LCBzbyBzZXQgcGxvdCB0byBub3QgZHJhdy4KICAgICAgICB0aGlzLl9kcmF3RGF0YSA9IGZhbHNlOwogICAgICAgIGZvciAodmFyIGk9MDsgaTxkYXRhLmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVtpXVsxXSAhPSAwKSB7CiAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIGRhdGEsIE8uSy4gdG8gZHJhdy4KICAgICAgICAgICAgICAgIHRoaXMuX2RyYXdEYXRhID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzdGFjay5wdXNoKGRhdGFbaV1bMV0pOwogICAgICAgICAgICB0ZC5wdXNoKFtkYXRhW2ldWzBdXSk7CiAgICAgICAgICAgIGlmIChpPjApIHsKICAgICAgICAgICAgICAgIHN0YWNrW2ldICs9IHN0YWNrW2ktMV07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdG90ICs9IGRhdGFbaV1bMV07CiAgICAgICAgfQogICAgICAgIHZhciBmYWN0ID0gTWF0aC5QSSoyL3N0YWNrW3N0YWNrLmxlbmd0aCAtIDFdOwogICAgICAgIAogICAgICAgIGZvciAodmFyIGk9MDsgaTxzdGFjay5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB0ZFtpXVsxXSA9IHN0YWNrW2ldICogZmFjdDsKICAgICAgICAgICAgdGRbaV1bMl0gPSBkYXRhW2ldWzFdL3RvdDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRkOwogICAgfTsKCiAgICBmdW5jdGlvbiBjYWxjUmFkaXVzQWRqdXN0bWVudChhbmcpIHsKICAgICAgICByZXR1cm4gTWF0aC5zaW4oKGFuZyAtIChhbmctTWF0aC5QSSkgLyA4IC8gTWF0aC5QSSApLzIuMCk7CiAgICB9CgogICAgZnVuY3Rpb24gY2FsY1JQcmltZShhbmcxLCBhbmcyLCBzbGljZU1hcmdpbiwgZmlsbCwgbGluZVdpZHRoKSB7CiAgICAgICAgdmFyIHJwcmltZSA9IDA7CiAgICAgICAgdmFyIGFuZyA9IGFuZzIgLSBhbmcxOwogICAgICAgIHZhciBhYnNhbmcgPSBNYXRoLmFicyhhbmcpOwogICAgICAgIHZhciBzbSA9IHNsaWNlTWFyZ2luOwogICAgICAgIGlmIChmaWxsID09IGZhbHNlKSB7CiAgICAgICAgICAgIHNtICs9IGxpbmVXaWR0aDsKICAgICAgICB9CgogICAgICAgIGlmIChzbSA+IDAgJiYgYWJzYW5nID4gMC4wMSAmJiBhYnNhbmcgPCA2LjI4MikgewogICAgICAgICAgICBycHJpbWUgPSBwYXJzZUZsb2F0KHNtKSAvIDIuMCAvIGNhbGNSYWRpdXNBZGp1c3RtZW50KGFuZyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcnByaW1lOwogICAgfQogICAgCiAgICAkLmpxcGxvdC5QaWVSZW5kZXJlci5wcm90b3R5cGUuZHJhd1NsaWNlID0gZnVuY3Rpb24gKGN0eCwgYW5nMSwgYW5nMiwgY29sb3IsIGlzU2hhZG93KSB7CiAgICAgICAgaWYgKHRoaXMuX2RyYXdEYXRhKSB7CiAgICAgICAgICAgIHZhciByID0gdGhpcy5fcmFkaXVzOwogICAgICAgICAgICB2YXIgZmlsbCA9IHRoaXMuZmlsbDsKICAgICAgICAgICAgdmFyIGxpbmVXaWR0aCA9IHRoaXMubGluZVdpZHRoOwogICAgICAgICAgICB2YXIgc20gPSB0aGlzLnNsaWNlTWFyZ2luOwogICAgICAgICAgICBpZiAodGhpcy5maWxsID09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICBzbSArPSB0aGlzLmxpbmVXaWR0aDsKICAgICAgICAgICAgfQogICAgICAgICAgICBjdHguc2F2ZSgpOwogICAgICAgICAgICBjdHgudHJhbnNsYXRlKHRoaXMuX2NlbnRlclswXSwgdGhpcy5fY2VudGVyWzFdKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIHZhciBycHJpbWUgPSBjYWxjUlByaW1lKGFuZzEsIGFuZzIsIHRoaXMuc2xpY2VNYXJnaW4sIHRoaXMuZmlsbCwgdGhpcy5saW5lV2lkdGgpOwoKICAgICAgICAgICAgdmFyIHRyYW5zeCA9IHJwcmltZSAqIE1hdGguY29zKChhbmcxICsgYW5nMikgLyAyLjApOwogICAgICAgICAgICB2YXIgdHJhbnN5ID0gcnByaW1lICogTWF0aC5zaW4oKGFuZzEgKyBhbmcyKSAvIDIuMCk7CgogICAgICAgICAgICBpZiAoKGFuZzIgLSBhbmcxKSA8PSBNYXRoLlBJKSB7CiAgICAgICAgICAgICAgICByIC09IHJwcmltZTsgIAogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgciArPSBycHJpbWU7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGN0eC50cmFuc2xhdGUodHJhbnN4LCB0cmFuc3kpOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKGlzU2hhZG93KSB7CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTAsIGw9dGhpcy5zaGFkb3dEZXB0aDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBjdHguc2F2ZSgpOwogICAgICAgICAgICAgICAgICAgIGN0eC50cmFuc2xhdGUodGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5jb3ModGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSksIHRoaXMuc2hhZG93T2Zmc2V0Kk1hdGguc2luKHRoaXMuc2hhZG93QW5nbGUvMTgwKk1hdGguUEkpKTsKICAgICAgICAgICAgICAgICAgICBkb0RyYXcocik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTAsIGw9dGhpcy5zaGFkb3dEZXB0aDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBkb0RyYXcocik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgICAgICB9CiAgICAKICAgICAgICBmdW5jdGlvbiBkb0RyYXcgKHJhZCkgewogICAgICAgICAgICAvLyBGaXggZm9yIElFIGFuZCBDaHJvbWUgdGhhdCBjYW4ndCBzZWVtIHRvIGRyYXcgY2lyY2xlcyBjb3JyZWN0bHkuCiAgICAgICAgICAgIC8vIGFuZzIgc2hvdWxkIGFsd2F5cyBiZSA8PSAyIHBpIHNpbmNlIHRoYXQgaXMgdGhlIHdheSB0aGUgZGF0YSBpcyBjb252ZXJ0ZWQuCiAgICAgICAgICAgIC8vIDJQaSA9IDYuMjgzMTg1MywgUGkgPSAzLjE0MTU5MjcKICAgICAgICAgICAgIGlmIChhbmcyID4gNi4yODIgKyB0aGlzLnN0YXJ0QW5nbGUpIHsKICAgICAgICAgICAgICAgIGFuZzIgPSA2LjI4MiArIHRoaXMuc3RhcnRBbmdsZTsKICAgICAgICAgICAgICAgIGlmIChhbmcxID4gYW5nMikgewogICAgICAgICAgICAgICAgICAgIGFuZzEgPSA2LjI4MSArIHRoaXMuc3RhcnRBbmdsZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBGaXggZm9yIElFLCB3aGVyZSBpdCBjYW4ndCBzZWVtIHRvIGhhbmRsZSAwIGRlZ3JlZSBhbmdsZXMuICBBbHNvIGF2b2lkcwogICAgICAgICAgICAvLyB1Z2x5IGxpbmUgb24gdW5maWxsZWQgcGllcy4KICAgICAgICAgICAgaWYgKGFuZzEgPj0gYW5nMikgewogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9ICAgICAgICAgICAgCiAgICAgICAgCiAgICAgICAgICAgIGN0eC5iZWdpblBhdGgoKTsgIAogICAgICAgICAgICBjdHguZmlsbFN0eWxlID0gY29sb3I7CiAgICAgICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IGNvbG9yOwogICAgICAgICAgICBjdHgubGluZVdpZHRoID0gbGluZVdpZHRoOwogICAgICAgICAgICBjdHguYXJjKDAsIDAsIHJhZCwgYW5nMSwgYW5nMiwgZmFsc2UpOwogICAgICAgICAgICBjdHgubGluZVRvKDAsMCk7CiAgICAgICAgICAgIGN0eC5jbG9zZVBhdGgoKTsKICAgICAgICAKICAgICAgICAgICAgaWYgKGZpbGwpIHsKICAgICAgICAgICAgICAgIGN0eC5maWxsKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBjdHguc3Ryb2tlKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBzZXJpZXMKICAgICQuanFwbG90LlBpZVJlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24gKGN0eCwgZ2QsIG9wdGlvbnMsIHBsb3QpIHsKICAgICAgICB2YXIgaTsKICAgICAgICB2YXIgb3B0cyA9IChvcHRpb25zICE9IHVuZGVmaW5lZCkgPyBvcHRpb25zIDoge307CiAgICAgICAgLy8gb2Zmc2V0IGFuZCBkaXJlY3Rpb24gb2Ygb2Zmc2V0IGR1ZSB0byBsZWdlbmQgcGxhY2VtZW50CiAgICAgICAgdmFyIG9mZnggPSAwOwogICAgICAgIHZhciBvZmZ5ID0gMDsKICAgICAgICB2YXIgdHJhbnMgPSAxOwogICAgICAgIHZhciBjb2xvckdlbmVyYXRvciA9IG5ldyAkLmpxcGxvdC5Db2xvckdlbmVyYXRvcih0aGlzLnNlcmllc0NvbG9ycyk7CiAgICAgICAgaWYgKG9wdGlvbnMubGVnZW5kSW5mbyAmJiBvcHRpb25zLmxlZ2VuZEluZm8ucGxhY2VtZW50ID09ICdpbnNpZGVHcmlkJykgewogICAgICAgICAgICB2YXIgbGkgPSBvcHRpb25zLmxlZ2VuZEluZm87CiAgICAgICAgICAgIHN3aXRjaCAobGkubG9jYXRpb24pIHsKICAgICAgICAgICAgICAgIGNhc2UgJ253JzoKICAgICAgICAgICAgICAgICAgICBvZmZ4ID0gbGkud2lkdGggKyBsaS54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAndyc6CiAgICAgICAgICAgICAgICAgICAgb2ZmeCA9IGxpLndpZHRoICsgbGkueG9mZnNldDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3N3JzoKICAgICAgICAgICAgICAgICAgICBvZmZ4ID0gbGkud2lkdGggKyBsaS54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgY2FzZSAnbmUnOgogICAgICAgICAgICAgICAgICAgIG9mZnggPSBsaS53aWR0aCArIGxpLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgdHJhbnMgPSAtMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ2UnOgogICAgICAgICAgICAgICAgICAgIG9mZnggPSBsaS53aWR0aCArIGxpLnhvZmZzZXQ7CiAgICAgICAgICAgICAgICAgICAgdHJhbnMgPSAtMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3NlJzoKICAgICAgICAgICAgICAgICAgICBvZmZ4ID0gbGkud2lkdGggKyBsaS54b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIHRyYW5zID0gLTE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBjYXNlICduJzoKICAgICAgICAgICAgICAgICAgICBvZmZ5ID0gbGkuaGVpZ2h0ICsgbGkueW9mZnNldDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGNhc2UgJ3MnOgogICAgICAgICAgICAgICAgICAgIG9mZnkgPSBsaS5oZWlnaHQgKyBsaS55b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgIHRyYW5zID0gLTE7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHZhciBzaGFkb3cgPSAob3B0cy5zaGFkb3cgIT0gdW5kZWZpbmVkKSA/IG9wdHMuc2hhZG93IDogdGhpcy5zaGFkb3c7CiAgICAgICAgdmFyIGZpbGwgPSAob3B0cy5maWxsICE9IHVuZGVmaW5lZCkgPyBvcHRzLmZpbGwgOiB0aGlzLmZpbGw7CiAgICAgICAgdmFyIGN3ID0gY3R4LmNhbnZhcy53aWR0aDsKICAgICAgICB2YXIgY2ggPSBjdHguY2FudmFzLmhlaWdodDsKICAgICAgICB2YXIgdyA9IGN3IC0gb2ZmeCAtIDIgKiB0aGlzLnBhZGRpbmc7CiAgICAgICAgdmFyIGggPSBjaCAtIG9mZnkgLSAyICogdGhpcy5wYWRkaW5nOwogICAgICAgIHZhciBtaW5kaW0gPSBNYXRoLm1pbih3LGgpOwogICAgICAgIHZhciBkID0gbWluZGltOwogICAgICAgIAogICAgICAgIC8vIEZpeGVzIGlzc3VlICMyNzIuICBUaGFua3MgaHVnd2lqc3QhCiAgICAgICAgLy8gcmVzZXQgc2xpY2UgYW5nbGVzIGFycmF5LgogICAgICAgIHRoaXMuX3NsaWNlQW5nbGVzID0gW107CgogICAgICAgIHZhciBzbSA9IHRoaXMuc2xpY2VNYXJnaW47CiAgICAgICAgaWYgKHRoaXMuZmlsbCA9PSBmYWxzZSkgewogICAgICAgICAgICBzbSArPSB0aGlzLmxpbmVXaWR0aDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgdmFyIHJwcmltZTsKICAgICAgICB2YXIgbWF4cnByaW1lID0gMDsKCiAgICAgICAgdmFyIGFuZywgYW5nMSwgYW5nMiwgc2hhZG93Q29sb3I7CiAgICAgICAgdmFyIHNhID0gdGhpcy5zdGFydEFuZ2xlIC8gMTgwICogTWF0aC5QSTsKCiAgICAgICAgLy8gaGF2ZSB0byBwcmUtZHJhdyBzaGFkb3dzLCBzbyBsb29wIHRocm9naCBoZXJlIGFuZCBjYWxjdWxhdGUgc29tZSB2YWx1ZXMgYWxzby4KICAgICAgICBmb3IgKHZhciBpPTAsIGw9Z2QubGVuZ3RoOyBpPGw7IGkrKykgewogICAgICAgICAgICBhbmcxID0gKGkgPT0gMCkgPyBzYSA6IGdkW2ktMV1bMV0gKyBzYTsKICAgICAgICAgICAgYW5nMiA9IGdkW2ldWzFdICsgc2E7CgogICAgICAgICAgICB0aGlzLl9zbGljZUFuZ2xlcy5wdXNoKFthbmcxLCBhbmcyXSk7CgogICAgICAgICAgICBycHJpbWUgPSBjYWxjUlByaW1lKGFuZzEsIGFuZzIsIHRoaXMuc2xpY2VNYXJnaW4sIHRoaXMuZmlsbCwgdGhpcy5saW5lV2lkdGgpOwoKICAgICAgICAgICAgaWYgKE1hdGguYWJzKGFuZzItYW5nMSkgPiBNYXRoLlBJKSB7CiAgICAgICAgICAgICAgICBtYXhycHJpbWUgPSBNYXRoLm1heChycHJpbWUsIG1heHJwcmltZSk7ICAKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMuZGlhbWV0ZXIgIT0gbnVsbCAmJiB0aGlzLmRpYW1ldGVyID4gMCkgewogICAgICAgICAgICB0aGlzLl9kaWFtZXRlciA9IHRoaXMuZGlhbWV0ZXIgLSAyKm1heHJwcmltZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHRoaXMuX2RpYW1ldGVyID0gZCAtIDIqbWF4cnByaW1lOwogICAgICAgIH0KCiAgICAgICAgLy8gTmVlZCB0byBjaGVjayBmb3IgdW5kZXJzaXplZCBwaWUuICBUaGlzIGNhbiBoYXBwZW4gaWYKICAgICAgICAvLyBwbG90IGFyZWEgdG9vIHNtYWxsIGFuZCBsZWdlbmQgaXMgdG9vIGJpZy4KICAgICAgICBpZiAodGhpcy5fZGlhbWV0ZXIgPCA2KSB7CiAgICAgICAgICAgICQuanFwbG90LmxvZygnRGlhbWV0ZXIgb2YgcGllIHRvbyBzbWFsbCwgbm90IHJlbmRlcmluZy4nKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgdmFyIHIgPSB0aGlzLl9yYWRpdXMgPSB0aGlzLl9kaWFtZXRlci8yOwoKICAgICAgICB0aGlzLl9jZW50ZXIgPSBbKGN3IC0gdHJhbnMgKiBvZmZ4KS8yICsgdHJhbnMgKiBvZmZ4ICsgbWF4cnByaW1lICogTWF0aC5jb3Moc2EpLCAoY2ggLSB0cmFucypvZmZ5KS8yICsgdHJhbnMgKiBvZmZ5ICsgbWF4cnByaW1lICogTWF0aC5zaW4oc2EpXTsKCiAgICAgICAgaWYgKHRoaXMuc2hhZG93KSB7CiAgICAgICAgICAgIGZvciAodmFyIGk9MCwgbD1nZC5sZW5ndGg7IGk8bDsgaSsrKSB7CiAgICAgICAgICAgICAgICBzaGFkb3dDb2xvciA9ICdyZ2JhKDAsMCwwLCcrdGhpcy5zaGFkb3dBbHBoYSsnKSc7CiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmRyYXdTbGljZS5jYWxsICh0aGlzLCBjdHgsIHRoaXMuX3NsaWNlQW5nbGVzW2ldWzBdLCB0aGlzLl9zbGljZUFuZ2xlc1tpXVsxXSwgc2hhZG93Q29sb3IsIHRydWUpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGZvciAodmFyIGk9MDsgaTxnZC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuZHJhd1NsaWNlLmNhbGwgKHRoaXMsIGN0eCwgdGhpcy5fc2xpY2VBbmdsZXNbaV1bMF0sIHRoaXMuX3NsaWNlQW5nbGVzW2ldWzFdLCBjb2xvckdlbmVyYXRvci5uZXh0KCksIGZhbHNlKTsKICAgICAgICAKICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0RhdGFMYWJlbHMgJiYgZ2RbaV1bMl0qMTAwID49IHRoaXMuZGF0YUxhYmVsVGhyZXNob2xkKSB7CiAgICAgICAgICAgICAgICB2YXIgZnN0ciwgYXZnYW5nID0gKHRoaXMuX3NsaWNlQW5nbGVzW2ldWzBdICsgdGhpcy5fc2xpY2VBbmdsZXNbaV1bMV0pLzIsIGxhYmVsOwogICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFMYWJlbHMgPT0gJ2xhYmVsJykgewogICAgICAgICAgICAgICAgICAgIGZzdHIgPSB0aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZyB8fCAnJXMnOwogICAgICAgICAgICAgICAgICAgIGxhYmVsID0gJC5qcXBsb3Quc3ByaW50Zihmc3RyLCBnZFtpXVswXSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmRhdGFMYWJlbHMgPT0gJ3ZhbHVlJykgewogICAgICAgICAgICAgICAgICAgIGZzdHIgPSB0aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZyB8fCAnJWQnOwogICAgICAgICAgICAgICAgICAgIGxhYmVsID0gJC5qcXBsb3Quc3ByaW50Zihmc3RyLCB0aGlzLmRhdGFbaV1bMV0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5kYXRhTGFiZWxzID09ICdwZXJjZW50JykgewogICAgICAgICAgICAgICAgICAgIGZzdHIgPSB0aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZyB8fCAnJWQlJSc7CiAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSAkLmpxcGxvdC5zcHJpbnRmKGZzdHIsIGdkW2ldWzJdKjEwMCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLmRhdGFMYWJlbHMuY29uc3RydWN0b3IgPT0gQXJyYXkpIHsKICAgICAgICAgICAgICAgICAgICBmc3RyID0gdGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmcgfHwgJyVzJzsKICAgICAgICAgICAgICAgICAgICBsYWJlbCA9ICQuanFwbG90LnNwcmludGYoZnN0ciwgdGhpcy5kYXRhTGFiZWxzW2ldKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgZmFjdCA9ICh0aGlzLl9yYWRpdXMgKSAqIHRoaXMuZGF0YUxhYmVsUG9zaXRpb25GYWN0b3IgKyB0aGlzLnNsaWNlTWFyZ2luICsgdGhpcy5kYXRhTGFiZWxOdWRnZTsKICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgeCA9IHRoaXMuX2NlbnRlclswXSArIE1hdGguY29zKGF2Z2FuZykgKiBmYWN0ICsgdGhpcy5jYW52YXMuX29mZnNldHMubGVmdDsKICAgICAgICAgICAgICAgIHZhciB5ID0gdGhpcy5fY2VudGVyWzFdICsgTWF0aC5zaW4oYXZnYW5nKSAqIGZhY3QgKyB0aGlzLmNhbnZhcy5fb2Zmc2V0cy50b3A7CiAgICAgICAgICAgIAogICAgICAgICAgICAgICAgdmFyIGxhYmVsZWxlbSA9ICQoJzxkaXYgY2xhc3M9ImpxcGxvdC1waWUtc2VyaWVzIGpxcGxvdC1kYXRhLWxhYmVsIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7Ij4nICsgbGFiZWwgKyAnPC9kaXY+JykuaW5zZXJ0QmVmb3JlKHBsb3QuZXZlbnRDYW52YXMuX2VsZW0pOwogICAgICAgICAgICAgICAgaWYgKHRoaXMuZGF0YUxhYmVsQ2VudGVyT24pIHsKICAgICAgICAgICAgICAgICAgICB4IC09IGxhYmVsZWxlbS53aWR0aCgpLzI7CiAgICAgICAgICAgICAgICAgICAgeSAtPSBsYWJlbGVsZW0uaGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHggLT0gbGFiZWxlbGVtLndpZHRoKCkgKiBNYXRoLnNpbihhdmdhbmcvMik7CiAgICAgICAgICAgICAgICAgICAgeSAtPSBsYWJlbGVsZW0uaGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHggPSBNYXRoLnJvdW5kKHgpOwogICAgICAgICAgICAgICAgeSA9IE1hdGgucm91bmQoeSk7CiAgICAgICAgICAgICAgICBsYWJlbGVsZW0uY3NzKHtsZWZ0OiB4LCB0b3A6IHl9KTsKICAgICAgICAgICAgfQogICAgICAgIH0gICAgICAgICAgICAKICAgIH07CiAgICAKICAgICQuanFwbG90LlBpZUF4aXNSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuUGllQXhpc1JlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIoKTsKICAgICQuanFwbG90LlBpZUF4aXNSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSAkLmpxcGxvdC5QaWVBeGlzUmVuZGVyZXI7CiAgICAgICAgCiAgICAKICAgIC8vIFRoZXJlIGFyZSBubyB0cmFkaXRpb25hbCBheGVzIG9uIGEgcGllIGNoYXJ0LiAgV2UganVzdCBuZWVkIHRvIHByb3ZpZGUKICAgIC8vIGR1bW15IG9iamVjdHMgd2l0aCBwcm9wZXJ0aWVzIHNvIHRoZSBwbG90IHdpbGwgcmVuZGVyLgogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYXhpcyBvYmplY3QuCiAgICAkLmpxcGxvdC5QaWVBeGlzUmVuZGVyZXIucHJvdG90eXBlLmluaXQgPSBmdW5jdGlvbihvcHRpb25zKXsKICAgICAgICAvLwogICAgICAgIHRoaXMudGlja1JlbmRlcmVyID0gJC5qcXBsb3QuUGllVGlja1JlbmRlcmVyOwogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgICAgIC8vIEkgZG9uJ3QgdGhpbmsgSSdtIGdvaW5nIHRvIG5lZWQgX2RhdGFCb3VuZHMgaGVyZS4KICAgICAgICAvLyBoYXZlIHRvIGdvIEF4aXMgc2NhbGluZyBpbiBhIHdheSB0byBmaXQgY2hhcnQgb250byBwbG90IGFyZWEKICAgICAgICAvLyBhbmQgcHJvdmlkZSB1MnAgYW5kIHAydSBmdW5jdGlvbmFsaXR5IGZvciBtb3VzZSBjdXJzb3IsIGV0Yy4KICAgICAgICAvLyBmb3IgY29udmllbmVuY2Ugc2V0IF9kYXRhQm91bmRzIHRvIDAgYW5kIDEwMCBhbmQKICAgICAgICAvLyBzZXQgbWluL21heCB0byAwIGFuZCAxMDAuCiAgICAgICAgdGhpcy5fZGF0YUJvdW5kcyA9IHttaW46MCwgbWF4OjEwMH07CiAgICAgICAgdGhpcy5taW4gPSAwOwogICAgICAgIHRoaXMubWF4ID0gMTAwOwogICAgICAgIHRoaXMuc2hvd1RpY2tzID0gZmFsc2U7CiAgICAgICAgdGhpcy50aWNrcyA9IFtdOwogICAgICAgIHRoaXMuc2hvd01hcmsgPSBmYWxzZTsKICAgICAgICB0aGlzLnNob3cgPSBmYWxzZTsgCiAgICB9OwogICAgCiAgICAKICAgIAogICAgCiAgICAkLmpxcGxvdC5QaWVMZWdlbmRSZW5kZXJlciA9IGZ1bmN0aW9uKCl7CiAgICAgICAgJC5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuUGllTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlID0gbmV3ICQuanFwbG90LlRhYmxlTGVnZW5kUmVuZGVyZXIoKTsKICAgICQuanFwbG90LlBpZUxlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LlBpZUxlZ2VuZFJlbmRlcmVyOwogICAgCiAgICAvKioKICAgICAqIENsYXNzOiAkLmpxcGxvdC5QaWVMZWdlbmRSZW5kZXJlcgogICAgICogTGVnZW5kIFJlbmRlcmVyIHNwZWNpZmljIHRvIHBpZSBwbG90cy4gIFNldCBieSBkZWZhdWx0CiAgICAgKiB3aGVuIHVzZXIgY3JlYXRlcyBhIHBpZSBwbG90LgogICAgICovCiAgICAkLmpxcGxvdC5QaWVMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuaW5pdCA9IGZ1bmN0aW9uKG9wdGlvbnMpIHsKICAgICAgICAvLyBHcm91cDogUHJvcGVydGllcwogICAgICAgIC8vCiAgICAgICAgLy8gcHJvcDogbnVtYmVyUm93cwogICAgICAgIC8vIE1heGltdW0gbnVtYmVyIG9mIHJvd3MgaW4gdGhlIGxlZ2VuZC4gIDAgb3IgbnVsbCBmb3IgdW5saW1pdGVkLgogICAgICAgIHRoaXMubnVtYmVyUm93cyA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogbnVtYmVyQ29sdW1ucwogICAgICAgIC8vIE1heGltdW0gbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIGxlZ2VuZC4gIDAgb3IgbnVsbCBmb3IgdW5saW1pdGVkLgogICAgICAgIHRoaXMubnVtYmVyQ29sdW1ucyA9IG51bGw7CiAgICAgICAgJC5leHRlbmQodHJ1ZSwgdGhpcywgb3B0aW9ucyk7CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBjb250ZXh0IG9mIGxlZ2VuZAogICAgJC5qcXBsb3QuUGllTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbigpIHsKICAgICAgICB2YXIgbGVnZW5kID0gdGhpczsKICAgICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAgICAgICAgIHZhciBzZXJpZXMgPSB0aGlzLl9zZXJpZXM7CgoKICAgICAgICAgICAgdGhpcy5fZWxlbSA9ICQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKSk7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uYWRkQ2xhc3MoJ2pxcGxvdC10YWJsZS1sZWdlbmQnKTsKCiAgICAgICAgICAgIHZhciBzcyA9IHtwb3NpdGlvbjonYWJzb2x1dGUnfTsKICAgICAgICAgICAgaWYgKHRoaXMuYmFja2dyb3VuZCkgewogICAgICAgICAgICAgICAgc3NbJ2JhY2tncm91bmQnXSA9IHRoaXMuYmFja2dyb3VuZDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodGhpcy5ib3JkZXIpIHsKICAgICAgICAgICAgICAgIHNzWydib3JkZXInXSA9IHRoaXMuYm9yZGVyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0aGlzLmZvbnRTaXplKSB7CiAgICAgICAgICAgICAgICBzc1snZm9udFNpemUnXSA9IHRoaXMuZm9udFNpemU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMuZm9udEZhbWlseSkgewogICAgICAgICAgICAgICAgc3NbJ2ZvbnRGYW1pbHknXSA9IHRoaXMuZm9udEZhbWlseTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodGhpcy50ZXh0Q29sb3IpIHsKICAgICAgICAgICAgICAgIHNzWyd0ZXh0Q29sb3InXSA9IHRoaXMudGV4dENvbG9yOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0aGlzLm1hcmdpblRvcCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBzc1snbWFyZ2luVG9wJ10gPSB0aGlzLm1hcmdpblRvcDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodGhpcy5tYXJnaW5Cb3R0b20gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgc3NbJ21hcmdpbkJvdHRvbSddID0gdGhpcy5tYXJnaW5Cb3R0b207CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHRoaXMubWFyZ2luTGVmdCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICBzc1snbWFyZ2luTGVmdCddID0gdGhpcy5tYXJnaW5MZWZ0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0aGlzLm1hcmdpblJpZ2h0ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHNzWydtYXJnaW5SaWdodCddID0gdGhpcy5tYXJnaW5SaWdodDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdGhpcy5fZWxlbS5jc3Moc3MpOwoKICAgICAgICAgICAgLy8gUGllIGNoYXJ0cyBsZWdlbmRzIGRvbid0IGdvIGJ5IG51bWJlciBvZiBzZXJpZXMsIGJ1dCBieSBudW1iZXIgb2YgZGF0YSBwb2ludHMKICAgICAgICAgICAgLy8gaW4gdGhlIHNlcmllcy4gIFJlZmFjdG9yIHRoaW5ncyBoZXJlIGZvciB0aGF0LgogICAgICAgICAgICAKICAgICAgICAgICAgdmFyIHBhZCA9IGZhbHNlLCAKICAgICAgICAgICAgICAgIHJldmVyc2UgPSBmYWxzZSwKICAgICAgICAgICAgICAgIG5yLCAKICAgICAgICAgICAgICAgIG5jOwogICAgICAgICAgICB2YXIgcyA9IHNlcmllc1swXTsKICAgICAgICAgICAgdmFyIGNvbG9yR2VuZXJhdG9yID0gbmV3ICQuanFwbG90LkNvbG9yR2VuZXJhdG9yKHMuc2VyaWVzQ29sb3JzKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChzLnNob3cpIHsKICAgICAgICAgICAgICAgIHZhciBwZCA9IHMuZGF0YTsKICAgICAgICAgICAgICAgIGlmICh0aGlzLm51bWJlclJvd3MpIHsKICAgICAgICAgICAgICAgICAgICBuciA9IHRoaXMubnVtYmVyUm93czsKICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMubnVtYmVyQ29sdW1ucyl7CiAgICAgICAgICAgICAgICAgICAgICAgIG5jID0gTWF0aC5jZWlsKHBkLmxlbmd0aC9ucik7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgIG5jID0gdGhpcy5udW1iZXJDb2x1bW5zOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubnVtYmVyQ29sdW1ucykgewogICAgICAgICAgICAgICAgICAgIG5jID0gdGhpcy5udW1iZXJDb2x1bW5zOwogICAgICAgICAgICAgICAgICAgIG5yID0gTWF0aC5jZWlsKHBkLmxlbmd0aC90aGlzLm51bWJlckNvbHVtbnMpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbnIgPSBwZC5sZW5ndGg7CiAgICAgICAgICAgICAgICAgICAgbmMgPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICB2YXIgaSwgajsKICAgICAgICAgICAgICAgIHZhciB0ciwgdGQxLCB0ZDI7IAogICAgICAgICAgICAgICAgdmFyIGx0LCBycywgY29sb3I7CiAgICAgICAgICAgICAgICB2YXIgaWR4ID0gMDsgCiAgICAgICAgICAgICAgICB2YXIgZGl2MCwgZGl2MTsgICAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZm9yIChpPTA7IGk8bnI7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHRyID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpKTsKICAgICAgICAgICAgICAgICAgICB0ci5hZGRDbGFzcygnanFwbG90LXRhYmxlLWxlZ2VuZCcpOwogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGlmIChyZXZlcnNlKXsKICAgICAgICAgICAgICAgICAgICAgICAgdHIucHJlcGVuZFRvKHRoaXMuX2VsZW0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgICAgICAgICB0ci5hcHBlbmRUbyh0aGlzLl9lbGVtKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgZm9yIChqPTA7IGo8bmM7IGorKykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaWR4IDwgcGQubGVuZ3RoKXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx0ID0gdGhpcy5sYWJlbHNbaWR4XSB8fCBwZFtpZHhdWzBdLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvciA9IGNvbG9yR2VuZXJhdG9yLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmV2ZXJzZSl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGk+MCl7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2V7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gbnIgLTEpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBycyA9IChwYWQpID8gdGhpcy5yb3dTcGFjaW5nIDogJzAnOwoKCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMS5hZGRDbGFzcygnanFwbG90LXRhYmxlLWxlZ2VuZCBqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxLmNzcyh7dGV4dEFsaWduOiAnY2VudGVyJywgcGFkZGluZ1RvcDogcnN9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXYwID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXYwLmFkZENsYXNzKCdqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaC1vdXRsaW5lJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXYxID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXYxLmFkZENsYXNzKCdqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2MS5jc3Moe2JhY2tncm91bmRDb2xvcjogY29sb3IsIGJvcmRlckNvbG9yOiBjb2xvcn0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxLmFwcGVuZChkaXYwLmFwcGVuZChkaXYxKSk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQyID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5hZGRDbGFzcygnanFwbG90LXRhYmxlLWxlZ2VuZCBqcXBsb3QtdGFibGUtbGVnZW5kLWxhYmVsJyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDIuY3NzKCdwYWRkaW5nVG9wJywgcnMpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmVzY2FwZUh0bWwpewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi50ZXh0KGx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5odG1sKGx0KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXZlcnNlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQyLnByZXBlbmRUbyh0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGQxLnByZXBlbmRUbyh0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZDEuYXBwZW5kVG8odHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRkMi5hcHBlbmRUbyh0cik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlkeCsrOwogICAgICAgICAgICAgICAgICAgIH0gICAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdGhpcy5fZWxlbTsgICAgICAgICAgICAgICAgCiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5QaWVSZW5kZXJlci5wcm90b3R5cGUuaGFuZGxlTW92ZSA9IGZ1bmN0aW9uKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIGlmIChuZWlnaGJvcikgewogICAgICAgICAgICB2YXIgaW5zID0gW25laWdoYm9yLnNlcmllc0luZGV4LCBuZWlnaGJvci5wb2ludEluZGV4LCBuZWlnaGJvci5kYXRhXTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcignanFwbG90RGF0YU1vdXNlT3ZlcicsIGlucyk7CiAgICAgICAgICAgIGlmIChwbG90LnNlcmllc1tpbnNbMF1dLmhpZ2hsaWdodE1vdXNlT3ZlciAmJiAhKGluc1swXSA9PSBwbG90LnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCAmJiBpbnNbMV0gPT0gcGxvdC5zZXJpZXNbaW5zWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpIHsKICAgICAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoJ2pxcGxvdERhdGFIaWdobGlnaHQnLCBpbnMpOwogICAgICAgICAgICAgICAgaGlnaGxpZ2h0IChwbG90LCBpbnNbMF0sIGluc1sxXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAobmVpZ2hib3IgPT0gbnVsbCkgewogICAgICAgICAgICB1bmhpZ2hsaWdodCAocGxvdCk7CiAgICAgICAgfQogICAgfTsKICAgIAogICAgCiAgICAvLyB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJC5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzW2ldWzBdLCB7cGxvdDp0aGlzfSwgJC5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzW2ldWzFdKTsKICAgIAogICAgLy8gc2V0dXAgZGVmYXVsdCByZW5kZXJlcnMgZm9yIGF4ZXMgYW5kIGxlZ2VuZCBzbyB1c2VyIGRvZXNuJ3QgaGF2ZSB0bwogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgcGxvdAogICAgZnVuY3Rpb24gcHJlSW5pdCh0YXJnZXQsIGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgICAgICBvcHRpb25zLmF4ZXNEZWZhdWx0cyA9IG9wdGlvbnMuYXhlc0RlZmF1bHRzIHx8IHt9OwogICAgICAgIG9wdGlvbnMubGVnZW5kID0gb3B0aW9ucy5sZWdlbmQgfHwge307CiAgICAgICAgb3B0aW9ucy5zZXJpZXNEZWZhdWx0cyA9IG9wdGlvbnMuc2VyaWVzRGVmYXVsdHMgfHwge307CiAgICAgICAgLy8gb25seSBzZXQgdGhlc2UgaWYgdGhlcmUgaXMgYSBwaWUgc2VyaWVzCiAgICAgICAgdmFyIHNldG9wdHMgPSBmYWxzZTsKICAgICAgICBpZiAob3B0aW9ucy5zZXJpZXNEZWZhdWx0cy5yZW5kZXJlciA9PSAkLmpxcGxvdC5QaWVSZW5kZXJlcikgewogICAgICAgICAgICBzZXRvcHRzID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAob3B0aW9ucy5zZXJpZXMpIHsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpIDwgb3B0aW9ucy5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnNlcmllc1tpXS5yZW5kZXJlciA9PSAkLmpxcGxvdC5QaWVSZW5kZXJlcikgewogICAgICAgICAgICAgICAgICAgIHNldG9wdHMgPSB0cnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGlmIChzZXRvcHRzKSB7CiAgICAgICAgICAgIG9wdGlvbnMuYXhlc0RlZmF1bHRzLnJlbmRlcmVyID0gJC5qcXBsb3QuUGllQXhpc1JlbmRlcmVyOwogICAgICAgICAgICBvcHRpb25zLmxlZ2VuZC5yZW5kZXJlciA9ICQuanFwbG90LlBpZUxlZ2VuZFJlbmRlcmVyOwogICAgICAgICAgICBvcHRpb25zLmxlZ2VuZC5wcmVEcmF3ID0gdHJ1ZTsKICAgICAgICAgICAgb3B0aW9ucy5zZXJpZXNEZWZhdWx0cy5wb2ludExhYmVscyA9IHtzaG93OiBmYWxzZX07CiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBwb3N0SW5pdCh0YXJnZXQsIGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8dGhpcy5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKHRoaXMuc2VyaWVzW2ldLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09ICQuanFwbG90LlBpZVJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAvLyBkb24ndCBhbGxvdyBtb3VzZW92ZXIgYW5kIG1vdXNlZG93biBhdCBzYW1lIHRpbWUuCiAgICAgICAgICAgICAgICBpZiAodGhpcy5zZXJpZXNbaV0uaGlnaGxpZ2h0TW91c2VPdmVyKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNbaV0uaGlnaGxpZ2h0TW91c2VEb3duID0gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIHBsb3QKICAgIGZ1bmN0aW9uIHBvc3RQYXJzZU9wdGlvbnMob3B0aW9ucykgewogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLnNlcmllcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICB0aGlzLnNlcmllc1tpXS5zZXJpZXNDb2xvcnMgPSB0aGlzLnNlcmllc0NvbG9yczsKICAgICAgICAgICAgdGhpcy5zZXJpZXNbaV0uY29sb3JHZW5lcmF0b3IgPSAkLmpxcGxvdC5jb2xvckdlbmVyYXRvcjsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhpZ2hsaWdodCAocGxvdCwgc2lkeCwgcGlkeCkgewogICAgICAgIHZhciBzID0gcGxvdC5zZXJpZXNbc2lkeF07CiAgICAgICAgdmFyIGNhbnZhcyA9IHBsb3QucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7CiAgICAgICAgY2FudmFzLl9jdHguY2xlYXJSZWN0KDAsMCxjYW52YXMuX2N0eC5jYW52YXMud2lkdGgsIGNhbnZhcy5fY3R4LmNhbnZhcy5oZWlnaHQpOwogICAgICAgIHMuX2hpZ2hsaWdodGVkUG9pbnQgPSBwaWR4OwogICAgICAgIHBsb3QucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ID0gc2lkeDsKICAgICAgICBzLnJlbmRlcmVyLmRyYXdTbGljZS5jYWxsKHMsIGNhbnZhcy5fY3R4LCBzLl9zbGljZUFuZ2xlc1twaWR4XVswXSwgcy5fc2xpY2VBbmdsZXNbcGlkeF1bMV0sIHMuaGlnaGxpZ2h0Q29sb3JHZW5lcmF0b3IuZ2V0KHBpZHgpLCBmYWxzZSk7CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIHVuaGlnaGxpZ2h0IChwbG90KSB7CiAgICAgICAgdmFyIGNhbnZhcyA9IHBsb3QucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7CiAgICAgICAgY2FudmFzLl9jdHguY2xlYXJSZWN0KDAsMCwgY2FudmFzLl9jdHguY2FudmFzLndpZHRoLCBjYW52YXMuX2N0eC5jYW52YXMuaGVpZ2h0KTsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8cGxvdC5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgcGxvdC5zZXJpZXNbaV0uX2hpZ2hsaWdodGVkUG9pbnQgPSBudWxsOwogICAgICAgIH0KICAgICAgICBwbG90LnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCA9IG51bGw7CiAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcignanFwbG90RGF0YVVuaGlnaGxpZ2h0Jyk7CiAgICB9CiAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdmUoZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgaWYgKG5laWdoYm9yKSB7CiAgICAgICAgICAgIHZhciBpbnMgPSBbbmVpZ2hib3Iuc2VyaWVzSW5kZXgsIG5laWdoYm9yLnBvaW50SW5kZXgsIG5laWdoYm9yLmRhdGFdOwogICAgICAgICAgICB2YXIgZXZ0MSA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YU1vdXNlT3ZlcicpOwogICAgICAgICAgICBldnQxLnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgIGV2dDEucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQxLCBpbnMpOwogICAgICAgICAgICBpZiAocGxvdC5zZXJpZXNbaW5zWzBdXS5oaWdobGlnaHRNb3VzZU92ZXIgJiYgIShpbnNbMF0gPT0gcGxvdC5wbHVnaW5zLnBpZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXggJiYgaW5zWzFdID09IHBsb3Quc2VyaWVzW2luc1swXV0uX2hpZ2hsaWdodGVkUG9pbnQpKSB7CiAgICAgICAgICAgICAgICB2YXIgZXZ0ID0galF1ZXJ5LkV2ZW50KCdqcXBsb3REYXRhSGlnaGxpZ2h0Jyk7CiAgICAgICAgICAgICAgICBldnQud2hpY2ggPSBldi53aGljaDsKICAgICAgICAgICAgICAgIGV2dC5wYWdlWCA9IGV2LnBhZ2VYOwogICAgICAgICAgICAgICAgZXZ0LnBhZ2VZID0gZXYucGFnZVk7CiAgICAgICAgICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKGV2dCwgaW5zKTsKICAgICAgICAgICAgICAgIGhpZ2hsaWdodCAocGxvdCwgaW5zWzBdLCBpbnNbMV0pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG5laWdoYm9yID09IG51bGwpIHsKICAgICAgICAgICAgdW5oaWdobGlnaHQgKHBsb3QpOwogICAgICAgIH0KICAgIH0gCiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdXNlRG93bihldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAobmVpZ2hib3IpIHsKICAgICAgICAgICAgdmFyIGlucyA9IFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IuZGF0YV07CiAgICAgICAgICAgIGlmIChwbG90LnNlcmllc1tpbnNbMF1dLmhpZ2hsaWdodE1vdXNlRG93biAmJiAhKGluc1swXSA9PSBwbG90LnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCAmJiBpbnNbMV0gPT0gcGxvdC5zZXJpZXNbaW5zWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpIHsKICAgICAgICAgICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ2pxcGxvdERhdGFIaWdobGlnaHQnKTsKICAgICAgICAgICAgICAgIGV2dC53aGljaCA9IGV2LndoaWNoOwogICAgICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoZXZ0LCBpbnMpOwogICAgICAgICAgICAgICAgaGlnaGxpZ2h0IChwbG90LCBpbnNbMF0sIGluc1sxXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAobmVpZ2hib3IgPT0gbnVsbCkgewogICAgICAgICAgICB1bmhpZ2hsaWdodCAocGxvdCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVNb3VzZVVwKGV2LCBncmlkcG9zLCBkYXRhcG9zLCBuZWlnaGJvciwgcGxvdCkgewogICAgICAgIHZhciBpZHggPSBwbG90LnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDsKICAgICAgICBpZiAoaWR4ICE9IG51bGwgJiYgcGxvdC5zZXJpZXNbaWR4XS5oaWdobGlnaHRNb3VzZURvd24pIHsKICAgICAgICAgICAgdW5oaWdobGlnaHQocGxvdCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICBmdW5jdGlvbiBoYW5kbGVDbGljayhldiwgZ3JpZHBvcywgZGF0YXBvcywgbmVpZ2hib3IsIHBsb3QpIHsKICAgICAgICBpZiAobmVpZ2hib3IpIHsKICAgICAgICAgICAgdmFyIGlucyA9IFtuZWlnaGJvci5zZXJpZXNJbmRleCwgbmVpZ2hib3IucG9pbnRJbmRleCwgbmVpZ2hib3IuZGF0YV07CiAgICAgICAgICAgIHZhciBldnQgPSBqUXVlcnkuRXZlbnQoJ2pxcGxvdERhdGFDbGljaycpOwogICAgICAgICAgICBldnQud2hpY2ggPSBldi53aGljaDsKICAgICAgICAgICAgZXZ0LnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICBwbG90LnRhcmdldC50cmlnZ2VyKGV2dCwgaW5zKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZVJpZ2h0Q2xpY2soZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgaWYgKG5laWdoYm9yKSB7CiAgICAgICAgICAgIHZhciBpbnMgPSBbbmVpZ2hib3Iuc2VyaWVzSW5kZXgsIG5laWdoYm9yLnBvaW50SW5kZXgsIG5laWdoYm9yLmRhdGFdOwogICAgICAgICAgICB2YXIgaWR4ID0gcGxvdC5wbHVnaW5zLnBpZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg7CiAgICAgICAgICAgIGlmIChpZHggIT0gbnVsbCAmJiBwbG90LnNlcmllc1tpZHhdLmhpZ2hsaWdodE1vdXNlRG93bikgewogICAgICAgICAgICAgICAgdW5oaWdobGlnaHQocGxvdCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YVJpZ2h0Q2xpY2snKTsKICAgICAgICAgICAgZXZ0LndoaWNoID0gZXYud2hpY2g7CiAgICAgICAgICAgIGV2dC5wYWdlWCA9IGV2LnBhZ2VYOwogICAgICAgICAgICBldnQucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQsIGlucyk7CiAgICAgICAgfQogICAgfSAgICAKICAgIAogICAgLy8gY2FsbGVkIHdpdGhpbiBjb250ZXh0IG9mIHBsb3QKICAgIC8vIGNyZWF0ZSBhIGNhbnZhcyB3aGljaCB3ZSBjYW4gZHJhdyBvbi4KICAgIC8vIGluc2VydCBpdCBiZWZvcmUgdGhlIGV2ZW50Q2FudmFzLCBzbyBldmVudENhbnZhcyB3aWxsIHN0aWxsIGNhcHR1cmUgZXZlbnRzLgogICAgZnVuY3Rpb24gcG9zdFBsb3REcmF3KCkgewogICAgICAgIC8vIE1lbW9yeSBMZWFrcyBwYXRjaCAgICAKICAgICAgICBpZiAodGhpcy5wbHVnaW5zLnBpZVJlbmRlcmVyICYmIHRoaXMucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMpIHsKICAgICAgICAgICAgdGhpcy5wbHVnaW5zLnBpZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5yZXNldENhbnZhcygpOwogICAgICAgICAgICB0aGlzLnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzID0gbnVsbDsKICAgICAgICB9CgogICAgICAgIHRoaXMucGx1Z2lucy5waWVSZW5kZXJlciA9IHtoaWdobGlnaHRlZFNlcmllc0luZGV4Om51bGx9OwogICAgICAgIHRoaXMucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMgPSBuZXcgJC5qcXBsb3QuR2VuZXJpY0NhbnZhcygpOwogICAgICAgIAogICAgICAgIC8vIGRvIHdlIGhhdmUgYW55IGRhdGEgbGFiZWxzPyAgaWYgc28sIHB1dCBoaWdobGlnaHQgY2FudmFzIGJlZm9yZSB0aG9zZQogICAgICAgIHZhciBsYWJlbHMgPSAkKHRoaXMudGFyZ2V0SWQrJyAuanFwbG90LWRhdGEtbGFiZWwnKTsKICAgICAgICBpZiAobGFiZWxzLmxlbmd0aCkgewogICAgICAgICAgICAkKGxhYmVsc1swXSkuYmVmb3JlKHRoaXMucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywgJ2pxcGxvdC1waWVSZW5kZXJlci1oaWdobGlnaHQtY2FudmFzJywgdGhpcy5fcGxvdERpbWVuc2lvbnMsIHRoaXMpKTsKICAgICAgICB9CiAgICAgICAgLy8gZWxzZSBwdXQgaGlnaGxpZ2h0IGNhbnZhcyBiZWZvcmUgZXZlbnQgY2FudmFzLgogICAgICAgIGVsc2UgewogICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZSh0aGlzLnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsICdqcXBsb3QtcGllUmVuZGVyZXItaGlnaGxpZ2h0LWNhbnZhcycsIHRoaXMuX3Bsb3REaW1lbnNpb25zLCB0aGlzKSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHZhciBoY3R4ID0gdGhpcy5wbHVnaW5zLnBpZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5zZXRDb250ZXh0KCk7CiAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCdtb3VzZWxlYXZlJywge3Bsb3Q6dGhpc30sIGZ1bmN0aW9uIChldikgeyB1bmhpZ2hsaWdodChldi5kYXRhLnBsb3QpOyB9KTsKICAgIH0KICAgIAogICAgJC5qcXBsb3QucHJlSW5pdEhvb2tzLnB1c2gocHJlSW5pdCk7CiAgICAKICAgICQuanFwbG90LlBpZVRpY2tSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkF4aXNUaWNrUmVuZGVyZXIuY2FsbCh0aGlzKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LlBpZVRpY2tSZW5kZXJlci5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlcigpOwogICAgJC5qcXBsb3QuUGllVGlja1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LlBpZVRpY2tSZW5kZXJlcjsKICAgIAp9KShqUXVlcnkpOwogICAgCiAgICA=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.pieRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGUpe2UuanFwbG90LlBpZVJlbmRlcmVyPWZ1bmN0aW9uKCl7ZS5qcXBsb3QuTGluZVJlbmRlcmVyLmNhbGwodGhpcyl9O2UuanFwbG90LlBpZVJlbmRlcmVyLnByb3RvdHlwZT1uZXcgZS5qcXBsb3QuTGluZVJlbmRlcmVyKCk7ZS5qcXBsb3QuUGllUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUuanFwbG90LlBpZVJlbmRlcmVyO2UuanFwbG90LlBpZVJlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKHEsdSl7dGhpcy5kaWFtZXRlcj1udWxsO3RoaXMucGFkZGluZz0yMDt0aGlzLnNsaWNlTWFyZ2luPTA7dGhpcy5maWxsPXRydWU7dGhpcy5zaGFkb3dPZmZzZXQ9Mjt0aGlzLnNoYWRvd0FscGhhPTAuMDc7dGhpcy5zaGFkb3dEZXB0aD01O3RoaXMuaGlnaGxpZ2h0TW91c2VPdmVyPXRydWU7dGhpcy5oaWdobGlnaHRNb3VzZURvd249ZmFsc2U7dGhpcy5oaWdobGlnaHRDb2xvcnM9W107dGhpcy5kYXRhTGFiZWxzPSJwZXJjZW50Ijt0aGlzLnNob3dEYXRhTGFiZWxzPWZhbHNlO3RoaXMuZGF0YUxhYmVsRm9ybWF0U3RyaW5nPW51bGw7dGhpcy5kYXRhTGFiZWxUaHJlc2hvbGQ9Mzt0aGlzLmRhdGFMYWJlbFBvc2l0aW9uRmFjdG9yPTAuNTI7dGhpcy5kYXRhTGFiZWxOdWRnZT0yO3RoaXMuZGF0YUxhYmVsQ2VudGVyT249dHJ1ZTt0aGlzLnN0YXJ0QW5nbGU9MDt0aGlzLnRpY2tSZW5kZXJlcj1lLmpxcGxvdC5QaWVUaWNrUmVuZGVyZXI7dGhpcy5fZHJhd0RhdGE9dHJ1ZTt0aGlzLl90eXBlPSJwaWUiO2lmKHEuaGlnaGxpZ2h0TW91c2VEb3duJiZxLmhpZ2hsaWdodE1vdXNlT3Zlcj09bnVsbCl7cS5oaWdobGlnaHRNb3VzZU92ZXI9ZmFsc2V9ZS5leHRlbmQodHJ1ZSx0aGlzLHEpO2lmKHRoaXMuc2xpY2VNYXJnaW48MCl7dGhpcy5zbGljZU1hcmdpbj0wfXRoaXMuX2RpYW1ldGVyPW51bGw7dGhpcy5fcmFkaXVzPW51bGw7dGhpcy5fc2xpY2VBbmdsZXM9W107dGhpcy5faGlnaGxpZ2h0ZWRQb2ludD1udWxsO2lmKHRoaXMuaGlnaGxpZ2h0Q29sb3JzLmxlbmd0aD09MCl7Zm9yKHZhciBzPTA7czx0aGlzLnNlcmllc0NvbG9ycy5sZW5ndGg7cysrKXt2YXIgcj1lLmpxcGxvdC5nZXRDb2xvckNvbXBvbmVudHModGhpcy5zZXJpZXNDb2xvcnNbc10pO3ZhciBvPVtyWzBdLHJbMV0sclsyXV07dmFyIHQ9b1swXStvWzFdK29bMl07Zm9yKHZhciBwPTA7cDwzO3ArKyl7b1twXT0odD41NzApP29bcF0qMC44Om9bcF0rMC4zKigyNTUtb1twXSk7b1twXT1wYXJzZUludChvW3BdLDEwKX10aGlzLmhpZ2hsaWdodENvbG9ycy5wdXNoKCJyZ2IoIitvWzBdKyIsIitvWzFdKyIsIitvWzJdKyIpIil9fXRoaXMuaGlnaGxpZ2h0Q29sb3JHZW5lcmF0b3I9bmV3IGUuanFwbG90LkNvbG9yR2VuZXJhdG9yKHRoaXMuaGlnaGxpZ2h0Q29sb3JzKTt1LnBvc3RQYXJzZU9wdGlvbnNIb29rcy5hZGRPbmNlKG0pO3UucG9zdEluaXRIb29rcy5hZGRPbmNlKGcpO3UuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdE1vdXNlTW92ZSIsYik7dS5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90TW91c2VEb3duIixhKTt1LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RNb3VzZVVwIixsKTt1LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RDbGljayIsZik7dS5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90UmlnaHRDbGljayIsbik7dS5wb3N0RHJhd0hvb2tzLmFkZE9uY2UoaSl9O2UuanFwbG90LlBpZVJlbmRlcmVyLnByb3RvdHlwZS5zZXRHcmlkRGF0YT1mdW5jdGlvbih0KXt2YXIgcD1bXTt2YXIgdT1bXTt2YXIgbz10aGlzLnN0YXJ0QW5nbGUvMTgwKk1hdGguUEk7dmFyIHM9MDt0aGlzLl9kcmF3RGF0YT1mYWxzZTtmb3IodmFyIHI9MDtyPHRoaXMuZGF0YS5sZW5ndGg7cisrKXtpZih0aGlzLmRhdGFbcl1bMV0hPTApe3RoaXMuX2RyYXdEYXRhPXRydWV9cC5wdXNoKHRoaXMuZGF0YVtyXVsxXSk7dS5wdXNoKFt0aGlzLmRhdGFbcl1bMF1dKTtpZihyPjApe3Bbcl0rPXBbci0xXX1zKz10aGlzLmRhdGFbcl1bMV19dmFyIHE9TWF0aC5QSSoyL3BbcC5sZW5ndGgtMV07Zm9yKHZhciByPTA7cjxwLmxlbmd0aDtyKyspe3Vbcl1bMV09cFtyXSpxO3Vbcl1bMl09dGhpcy5kYXRhW3JdWzFdL3N9dGhpcy5ncmlkRGF0YT11fTtlLmpxcGxvdC5QaWVSZW5kZXJlci5wcm90b3R5cGUubWFrZUdyaWREYXRhPWZ1bmN0aW9uKHQsdSl7dmFyIHA9W107dmFyIHY9W107dmFyIHM9MDt2YXIgbz10aGlzLnN0YXJ0QW5nbGUvMTgwKk1hdGguUEk7dGhpcy5fZHJhd0RhdGE9ZmFsc2U7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDtyKyspe2lmKHRoaXMuZGF0YVtyXVsxXSE9MCl7dGhpcy5fZHJhd0RhdGE9dHJ1ZX1wLnB1c2godFtyXVsxXSk7di5wdXNoKFt0W3JdWzBdXSk7aWYocj4wKXtwW3JdKz1wW3ItMV19cys9dFtyXVsxXX12YXIgcT1NYXRoLlBJKjIvcFtwLmxlbmd0aC0xXTtmb3IodmFyIHI9MDtyPHAubGVuZ3RoO3IrKyl7dltyXVsxXT1wW3JdKnE7dltyXVsyXT10W3JdWzFdL3N9cmV0dXJuIHZ9O2Z1bmN0aW9uIGgobyl7cmV0dXJuIE1hdGguc2luKChvLShvLU1hdGguUEkpLzgvTWF0aC5QSSkvMil9ZnVuY3Rpb24gaih1LHQsbyx2LHIpe3ZhciB3PTA7dmFyIHE9dC11O3ZhciBzPU1hdGguYWJzKHEpO3ZhciBwPW87aWYodj09ZmFsc2Upe3ArPXJ9aWYocD4wJiZzPjAuMDEmJnM8Ni4yODIpe3c9cGFyc2VGbG9hdChwKS8yL2gocSl9cmV0dXJuIHd9ZS5qcXBsb3QuUGllUmVuZGVyZXIucHJvdG90eXBlLmRyYXdTbGljZT1mdW5jdGlvbihCLHoseSx1LHcpe2lmKHRoaXMuX2RyYXdEYXRhKXt2YXIgcD10aGlzLl9yYWRpdXM7dmFyIEE9dGhpcy5maWxsO3ZhciB4PXRoaXMubGluZVdpZHRoO3ZhciBzPXRoaXMuc2xpY2VNYXJnaW47aWYodGhpcy5maWxsPT1mYWxzZSl7cys9dGhpcy5saW5lV2lkdGh9Qi5zYXZlKCk7Qi50cmFuc2xhdGUodGhpcy5fY2VudGVyWzBdLHRoaXMuX2NlbnRlclsxXSk7dmFyIEQ9aih6LHksdGhpcy5zbGljZU1hcmdpbix0aGlzLmZpbGwsdGhpcy5saW5lV2lkdGgpO3ZhciBvPUQqTWF0aC5jb3MoKHoreSkvMik7dmFyIEM9RCpNYXRoLnNpbigoeit5KS8yKTtpZigoeS16KTw9TWF0aC5QSSl7cC09RH1lbHNle3ArPUR9Qi50cmFuc2xhdGUobyxDKTtpZih3KXtmb3IodmFyIHY9MCx0PXRoaXMuc2hhZG93RGVwdGg7djx0O3YrKyl7Qi5zYXZlKCk7Qi50cmFuc2xhdGUodGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5jb3ModGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSksdGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5zaW4odGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSkpO3EocCl9Zm9yKHZhciB2PTAsdD10aGlzLnNoYWRvd0RlcHRoO3Y8dDt2Kyspe0IucmVzdG9yZSgpfX1lbHNle3EocCl9Qi5yZXN0b3JlKCl9ZnVuY3Rpb24gcShyKXtpZih5PjYuMjgyK3RoaXMuc3RhcnRBbmdsZSl7eT02LjI4Mit0aGlzLnN0YXJ0QW5nbGU7aWYoej55KXt6PTYuMjgxK3RoaXMuc3RhcnRBbmdsZX19aWYoej49eSl7cmV0dXJufUIuYmVnaW5QYXRoKCk7Qi5maWxsU3R5bGU9dTtCLnN0cm9rZVN0eWxlPXU7Qi5saW5lV2lkdGg9eDtCLmFyYygwLDAscix6LHksZmFsc2UpO0IubGluZVRvKDAsMCk7Qi5jbG9zZVBhdGgoKTtpZihBKXtCLmZpbGwoKX1lbHNle0Iuc3Ryb2tlKCl9fX07ZS5qcXBsb3QuUGllUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oQix6LEUsbyl7dmFyIFc7dmFyIEg9KEUhPXVuZGVmaW5lZCk/RTp7fTt2YXIgdD0wO3ZhciBzPTA7dmFyIE49MTt2YXIgTD1uZXcgZS5qcXBsb3QuQ29sb3JHZW5lcmF0b3IodGhpcy5zZXJpZXNDb2xvcnMpO2lmKEUubGVnZW5kSW5mbyYmRS5sZWdlbmRJbmZvLnBsYWNlbWVudD09Imluc2lkZUdyaWQiKXt2YXIgSj1FLmxlZ2VuZEluZm87c3dpdGNoKEoubG9jYXRpb24pe2Nhc2UibnciOnQ9Si53aWR0aCtKLnhvZmZzZXQ7YnJlYWs7Y2FzZSJ3Ijp0PUoud2lkdGgrSi54b2Zmc2V0O2JyZWFrO2Nhc2Uic3ciOnQ9Si53aWR0aCtKLnhvZmZzZXQ7YnJlYWs7Y2FzZSJuZSI6dD1KLndpZHRoK0oueG9mZnNldDtOPS0xO2JyZWFrO2Nhc2UiZSI6dD1KLndpZHRoK0oueG9mZnNldDtOPS0xO2JyZWFrO2Nhc2Uic2UiOnQ9Si53aWR0aCtKLnhvZmZzZXQ7Tj0tMTticmVhaztjYXNlIm4iOnM9Si5oZWlnaHQrSi55b2Zmc2V0O2JyZWFrO2Nhc2UicyI6cz1KLmhlaWdodCtKLnlvZmZzZXQ7Tj0tMTticmVhaztkZWZhdWx0OmJyZWFrfX12YXIgSz0oSC5zaGFkb3chPXVuZGVmaW5lZCk/SC5zaGFkb3c6dGhpcy5zaGFkb3c7dmFyIEE9KEguZmlsbCE9dW5kZWZpbmVkKT9ILmZpbGw6dGhpcy5maWxsO3ZhciBDPUIuY2FudmFzLndpZHRoO3ZhciBJPUIuY2FudmFzLmhlaWdodDt2YXIgUT1DLXQtMip0aGlzLnBhZGRpbmc7dmFyIFg9SS1zLTIqdGhpcy5wYWRkaW5nO3ZhciBNPU1hdGgubWluKFEsWCk7dmFyIFk9TTt0aGlzLl9zbGljZUFuZ2xlcz1bXTt2YXIgdj10aGlzLnNsaWNlTWFyZ2luO2lmKHRoaXMuZmlsbD09ZmFsc2Upe3YrPXRoaXMubGluZVdpZHRofXZhciBxO3ZhciBHPTA7dmFyIFIsYWEsWixhYjt2YXIgRD10aGlzLnN0YXJ0QW5nbGUvMTgwKk1hdGguUEk7Zm9yKHZhciBXPTAsVj16Lmxlbmd0aDtXPFY7VysrKXthYT0oVz09MCk/RDp6W1ctMV1bMV0rRDtaPXpbV11bMV0rRDt0aGlzLl9zbGljZUFuZ2xlcy5wdXNoKFthYSxaXSk7cT1qKGFhLFosdGhpcy5zbGljZU1hcmdpbix0aGlzLmZpbGwsdGhpcy5saW5lV2lkdGgpO2lmKE1hdGguYWJzKFotYWEpPk1hdGguUEkpe0c9TWF0aC5tYXgocSxHKX19aWYodGhpcy5kaWFtZXRlciE9bnVsbCYmdGhpcy5kaWFtZXRlcj4wKXt0aGlzLl9kaWFtZXRlcj10aGlzLmRpYW1ldGVyLTIqR31lbHNle3RoaXMuX2RpYW1ldGVyPVktMipHfWlmKHRoaXMuX2RpYW1ldGVyPDYpe2UuanFwbG90LmxvZygiRGlhbWV0ZXIgb2YgcGllIHRvbyBzbWFsbCwgbm90IHJlbmRlcmluZy4iKTtyZXR1cm59dmFyIFM9dGhpcy5fcmFkaXVzPXRoaXMuX2RpYW1ldGVyLzI7dGhpcy5fY2VudGVyPVsoQy1OKnQpLzIrTip0K0cqTWF0aC5jb3MoRCksKEktTipzKS8yK04qcytHKk1hdGguc2luKEQpXTtpZih0aGlzLnNoYWRvdyl7Zm9yKHZhciBXPTAsVj16Lmxlbmd0aDtXPFY7VysrKXthYj0icmdiYSgwLDAsMCwiK3RoaXMuc2hhZG93QWxwaGErIikiO3RoaXMucmVuZGVyZXIuZHJhd1NsaWNlLmNhbGwodGhpcyxCLHRoaXMuX3NsaWNlQW5nbGVzW1ddWzBdLHRoaXMuX3NsaWNlQW5nbGVzW1ddWzFdLGFiLHRydWUpfX1mb3IodmFyIFc9MDtXPHoubGVuZ3RoO1crKyl7dGhpcy5yZW5kZXJlci5kcmF3U2xpY2UuY2FsbCh0aGlzLEIsdGhpcy5fc2xpY2VBbmdsZXNbV11bMF0sdGhpcy5fc2xpY2VBbmdsZXNbV11bMV0sTC5uZXh0KCksZmFsc2UpO2lmKHRoaXMuc2hvd0RhdGFMYWJlbHMmJnpbV11bMl0qMTAwPj10aGlzLmRhdGFMYWJlbFRocmVzaG9sZCl7dmFyIEYsVT0odGhpcy5fc2xpY2VBbmdsZXNbV11bMF0rdGhpcy5fc2xpY2VBbmdsZXNbV11bMV0pLzIsVDtpZih0aGlzLmRhdGFMYWJlbHM9PSJsYWJlbCIpe0Y9dGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmd8fCIlcyI7VD1lLmpxcGxvdC5zcHJpbnRmKEYseltXXVswXSl9ZWxzZXtpZih0aGlzLmRhdGFMYWJlbHM9PSJ2YWx1ZSIpe0Y9dGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmd8fCIlZCI7VD1lLmpxcGxvdC5zcHJpbnRmKEYsdGhpcy5kYXRhW1ddWzFdKX1lbHNle2lmKHRoaXMuZGF0YUxhYmVscz09InBlcmNlbnQiKXtGPXRoaXMuZGF0YUxhYmVsRm9ybWF0U3RyaW5nfHwiJWQlJSI7VD1lLmpxcGxvdC5zcHJpbnRmKEYseltXXVsyXSoxMDApfWVsc2V7aWYodGhpcy5kYXRhTGFiZWxzLmNvbnN0cnVjdG9yPT1BcnJheSl7Rj10aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZ3x8IiVzIjtUPWUuanFwbG90LnNwcmludGYoRix0aGlzLmRhdGFMYWJlbHNbV10pfX19fXZhciBwPSh0aGlzLl9yYWRpdXMpKnRoaXMuZGF0YUxhYmVsUG9zaXRpb25GYWN0b3IrdGhpcy5zbGljZU1hcmdpbit0aGlzLmRhdGFMYWJlbE51ZGdlO3ZhciBQPXRoaXMuX2NlbnRlclswXStNYXRoLmNvcyhVKSpwK3RoaXMuY2FudmFzLl9vZmZzZXRzLmxlZnQ7dmFyIE89dGhpcy5fY2VudGVyWzFdK01hdGguc2luKFUpKnArdGhpcy5jYW52YXMuX29mZnNldHMudG9wO3ZhciB1PWUoJzxkaXYgY2xhc3M9ImpxcGxvdC1waWUtc2VyaWVzIGpxcGxvdC1kYXRhLWxhYmVsIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7Ij4nK1QrIjwvZGl2PiIpLmluc2VydEJlZm9yZShvLmV2ZW50Q2FudmFzLl9lbGVtKTtpZih0aGlzLmRhdGFMYWJlbENlbnRlck9uKXtQLT11LndpZHRoKCkvMjtPLT11LmhlaWdodCgpLzJ9ZWxzZXtQLT11LndpZHRoKCkqTWF0aC5zaW4oVS8yKTtPLT11LmhlaWdodCgpLzJ9UD1NYXRoLnJvdW5kKFApO089TWF0aC5yb3VuZChPKTt1LmNzcyh7bGVmdDpQLHRvcDpPfSl9fX07ZS5qcXBsb3QuUGllQXhpc1JlbmRlcmVyPWZ1bmN0aW9uKCl7ZS5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyLmNhbGwodGhpcyl9O2UuanFwbG90LlBpZUF4aXNSZW5kZXJlci5wcm90b3R5cGU9bmV3IGUuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlcigpO2UuanFwbG90LlBpZUF4aXNSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9ZS5qcXBsb3QuUGllQXhpc1JlbmRlcmVyO2UuanFwbG90LlBpZUF4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihvKXt0aGlzLnRpY2tSZW5kZXJlcj1lLmpxcGxvdC5QaWVUaWNrUmVuZGVyZXI7ZS5leHRlbmQodHJ1ZSx0aGlzLG8pO3RoaXMuX2RhdGFCb3VuZHM9e21pbjowLG1heDoxMDB9O3RoaXMubWluPTA7dGhpcy5tYXg9MTAwO3RoaXMuc2hvd1RpY2tzPWZhbHNlO3RoaXMudGlja3M9W107dGhpcy5zaG93TWFyaz1mYWxzZTt0aGlzLnNob3c9ZmFsc2V9O2UuanFwbG90LlBpZUxlZ2VuZFJlbmRlcmVyPWZ1bmN0aW9uKCl7ZS5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlci5jYWxsKHRoaXMpfTtlLmpxcGxvdC5QaWVMZWdlbmRSZW5kZXJlci5wcm90b3R5cGU9bmV3IGUuanFwbG90LlRhYmxlTGVnZW5kUmVuZGVyZXIoKTtlLmpxcGxvdC5QaWVMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9ZS5qcXBsb3QuUGllTGVnZW5kUmVuZGVyZXI7ZS5qcXBsb3QuUGllTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24obyl7dGhpcy5udW1iZXJSb3dzPW51bGw7dGhpcy5udW1iZXJDb2x1bW5zPW51bGw7ZS5leHRlbmQodHJ1ZSx0aGlzLG8pfTtlLmpxcGxvdC5QaWVMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbigpe3ZhciByPXRoaXM7aWYodGhpcy5zaG93KXt2YXIgQj10aGlzLl9zZXJpZXM7dGhpcy5fZWxlbT1lKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxlIikpO3RoaXMuX2VsZW0uYWRkQ2xhc3MoImpxcGxvdC10YWJsZS1sZWdlbmQiKTt2YXIgRT17cG9zaXRpb246ImFic29sdXRlIn07aWYodGhpcy5iYWNrZ3JvdW5kKXtFLmJhY2tncm91bmQ9dGhpcy5iYWNrZ3JvdW5kfWlmKHRoaXMuYm9yZGVyKXtFLmJvcmRlcj10aGlzLmJvcmRlcn1pZih0aGlzLmZvbnRTaXplKXtFLmZvbnRTaXplPXRoaXMuZm9udFNpemV9aWYodGhpcy5mb250RmFtaWx5KXtFLmZvbnRGYW1pbHk9dGhpcy5mb250RmFtaWx5fWlmKHRoaXMudGV4dENvbG9yKXtFLnRleHRDb2xvcj10aGlzLnRleHRDb2xvcn1pZih0aGlzLm1hcmdpblRvcCE9bnVsbCl7RS5tYXJnaW5Ub3A9dGhpcy5tYXJnaW5Ub3B9aWYodGhpcy5tYXJnaW5Cb3R0b20hPW51bGwpe0UubWFyZ2luQm90dG9tPXRoaXMubWFyZ2luQm90dG9tfWlmKHRoaXMubWFyZ2luTGVmdCE9bnVsbCl7RS5tYXJnaW5MZWZ0PXRoaXMubWFyZ2luTGVmdH1pZih0aGlzLm1hcmdpblJpZ2h0IT1udWxsKXtFLm1hcmdpblJpZ2h0PXRoaXMubWFyZ2luUmlnaHR9dGhpcy5fZWxlbS5jc3MoRSk7dmFyIEk9ZmFsc2UsQT1mYWxzZSxvLHk7dmFyIEM9QlswXTt2YXIgcD1uZXcgZS5qcXBsb3QuQ29sb3JHZW5lcmF0b3IoQy5zZXJpZXNDb2xvcnMpO2lmKEMuc2hvdyl7dmFyIEo9Qy5kYXRhO2lmKHRoaXMubnVtYmVyUm93cyl7bz10aGlzLm51bWJlclJvd3M7aWYoIXRoaXMubnVtYmVyQ29sdW1ucyl7eT1NYXRoLmNlaWwoSi5sZW5ndGgvbyl9ZWxzZXt5PXRoaXMubnVtYmVyQ29sdW1uc319ZWxzZXtpZih0aGlzLm51bWJlckNvbHVtbnMpe3k9dGhpcy5udW1iZXJDb2x1bW5zO289TWF0aC5jZWlsKEoubGVuZ3RoL3RoaXMubnVtYmVyQ29sdW1ucyl9ZWxzZXtvPUoubGVuZ3RoO3k9MX19dmFyIEgsRzt2YXIgcSx3LHY7dmFyIHgseixGO3ZhciBEPTA7dmFyIHUsdDtmb3IoSD0wO0g8bztIKyspe3E9ZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ciIpKTtxLmFkZENsYXNzKCJqcXBsb3QtdGFibGUtbGVnZW5kIik7aWYoQSl7cS5wcmVwZW5kVG8odGhpcy5fZWxlbSl9ZWxzZXtxLmFwcGVuZFRvKHRoaXMuX2VsZW0pfWZvcihHPTA7Rzx5O0crKyl7aWYoRDxKLmxlbmd0aCl7eD10aGlzLmxhYmVsc1tEXXx8SltEXVswXS50b1N0cmluZygpO0Y9cC5uZXh0KCk7aWYoIUEpe2lmKEg+MCl7ST10cnVlfWVsc2V7ST1mYWxzZX19ZWxzZXtpZihIPT1vLTEpe0k9ZmFsc2V9ZWxzZXtJPXRydWV9fXo9KEkpP3RoaXMucm93U3BhY2luZzoiMCI7dz1lKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRkIikpO3cuYWRkQ2xhc3MoImpxcGxvdC10YWJsZS1sZWdlbmQganFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2giKTt3LmNzcyh7dGV4dEFsaWduOiJjZW50ZXIiLHBhZGRpbmdUb3A6en0pO3U9ZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7dS5hZGRDbGFzcygianFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2gtb3V0bGluZSIpO3Q9ZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7dC5hZGRDbGFzcygianFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2giKTt0LmNzcyh7YmFja2dyb3VuZENvbG9yOkYsYm9yZGVyQ29sb3I6Rn0pO3cuYXBwZW5kKHUuYXBwZW5kKHQpKTt2PWUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKSk7di5hZGRDbGFzcygianFwbG90LXRhYmxlLWxlZ2VuZCBqcXBsb3QtdGFibGUtbGVnZW5kLWxhYmVsIik7di5jc3MoInBhZGRpbmdUb3AiLHopO2lmKHRoaXMuZXNjYXBlSHRtbCl7di50ZXh0KHgpfWVsc2V7di5odG1sKHgpfWlmKEEpe3YucHJlcGVuZFRvKHEpO3cucHJlcGVuZFRvKHEpfWVsc2V7dy5hcHBlbmRUbyhxKTt2LmFwcGVuZFRvKHEpfUk9dHJ1ZX1EKyt9fX19cmV0dXJuIHRoaXMuX2VsZW19O2UuanFwbG90LlBpZVJlbmRlcmVyLnByb3RvdHlwZS5oYW5kbGVNb3ZlPWZ1bmN0aW9uKHEscCx0LHMscil7aWYocyl7dmFyIG89W3Muc2VyaWVzSW5kZXgscy5wb2ludEluZGV4LHMuZGF0YV07ci50YXJnZXQudHJpZ2dlcigianFwbG90RGF0YU1vdXNlT3ZlciIsbyk7aWYoci5zZXJpZXNbb1swXV0uaGlnaGxpZ2h0TW91c2VPdmVyJiYhKG9bMF09PXIucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4JiZvWzFdPT1yLnNlcmllc1tvWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpe3IudGFyZ2V0LnRyaWdnZXIoImpxcGxvdERhdGFIaWdobGlnaHQiLG8pO2QocixvWzBdLG9bMV0pfX1lbHNle2lmKHM9PW51bGwpe2socil9fX07ZnVuY3Rpb24gYyhzLHIscCl7cD1wfHx7fTtwLmF4ZXNEZWZhdWx0cz1wLmF4ZXNEZWZhdWx0c3x8e307cC5sZWdlbmQ9cC5sZWdlbmR8fHt9O3Auc2VyaWVzRGVmYXVsdHM9cC5zZXJpZXNEZWZhdWx0c3x8e307dmFyIG89ZmFsc2U7aWYocC5zZXJpZXNEZWZhdWx0cy5yZW5kZXJlcj09ZS5qcXBsb3QuUGllUmVuZGVyZXIpe289dHJ1ZX1lbHNle2lmKHAuc2VyaWVzKXtmb3IodmFyIHE9MDtxPHAuc2VyaWVzLmxlbmd0aDtxKyspe2lmKHAuc2VyaWVzW3FdLnJlbmRlcmVyPT1lLmpxcGxvdC5QaWVSZW5kZXJlcil7bz10cnVlfX19fWlmKG8pe3AuYXhlc0RlZmF1bHRzLnJlbmRlcmVyPWUuanFwbG90LlBpZUF4aXNSZW5kZXJlcjtwLmxlZ2VuZC5yZW5kZXJlcj1lLmpxcGxvdC5QaWVMZWdlbmRSZW5kZXJlcjtwLmxlZ2VuZC5wcmVEcmF3PXRydWU7cC5zZXJpZXNEZWZhdWx0cy5wb2ludExhYmVscz17c2hvdzpmYWxzZX19fWZ1bmN0aW9uIGcocixxLG8pe2Zvcih2YXIgcD0wO3A8dGhpcy5zZXJpZXMubGVuZ3RoO3ArKyl7aWYodGhpcy5zZXJpZXNbcF0ucmVuZGVyZXIuY29uc3RydWN0b3I9PWUuanFwbG90LlBpZVJlbmRlcmVyKXtpZih0aGlzLnNlcmllc1twXS5oaWdobGlnaHRNb3VzZU92ZXIpe3RoaXMuc2VyaWVzW3BdLmhpZ2hsaWdodE1vdXNlRG93bj1mYWxzZX19fX1mdW5jdGlvbiBtKG8pe2Zvcih2YXIgcD0wO3A8dGhpcy5zZXJpZXMubGVuZ3RoO3ArKyl7dGhpcy5zZXJpZXNbcF0uc2VyaWVzQ29sb3JzPXRoaXMuc2VyaWVzQ29sb3JzO3RoaXMuc2VyaWVzW3BdLmNvbG9yR2VuZXJhdG9yPWUuanFwbG90LmNvbG9yR2VuZXJhdG9yfX1mdW5jdGlvbiBkKHQscixxKXt2YXIgcD10LnNlcmllc1tyXTt2YXIgbz10LnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzO28uX2N0eC5jbGVhclJlY3QoMCwwLG8uX2N0eC5jYW52YXMud2lkdGgsby5fY3R4LmNhbnZhcy5oZWlnaHQpO3AuX2hpZ2hsaWdodGVkUG9pbnQ9cTt0LnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleD1yO3AucmVuZGVyZXIuZHJhd1NsaWNlLmNhbGwocCxvLl9jdHgscC5fc2xpY2VBbmdsZXNbcV1bMF0scC5fc2xpY2VBbmdsZXNbcV1bMV0scC5oaWdobGlnaHRDb2xvckdlbmVyYXRvci5nZXQocSksZmFsc2UpfWZ1bmN0aW9uIGsocSl7dmFyIG89cS5wbHVnaW5zLnBpZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcztvLl9jdHguY2xlYXJSZWN0KDAsMCxvLl9jdHguY2FudmFzLndpZHRoLG8uX2N0eC5jYW52YXMuaGVpZ2h0KTtmb3IodmFyIHA9MDtwPHEuc2VyaWVzLmxlbmd0aDtwKyspe3Euc2VyaWVzW3BdLl9oaWdobGlnaHRlZFBvaW50PW51bGx9cS5wbHVnaW5zLnBpZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg9bnVsbDtxLnRhcmdldC50cmlnZ2VyKCJqcXBsb3REYXRhVW5oaWdobGlnaHQiKX1mdW5jdGlvbiBiKHMscix2LHUsdCl7aWYodSl7dmFyIHE9W3Uuc2VyaWVzSW5kZXgsdS5wb2ludEluZGV4LHUuZGF0YV07dmFyIHA9alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhTW91c2VPdmVyIik7cC5wYWdlWD1zLnBhZ2VYO3AucGFnZVk9cy5wYWdlWTt0LnRhcmdldC50cmlnZ2VyKHAscSk7aWYodC5zZXJpZXNbcVswXV0uaGlnaGxpZ2h0TW91c2VPdmVyJiYhKHFbMF09PXQucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4JiZxWzFdPT10LnNlcmllc1txWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpe3ZhciBvPWpRdWVyeS5FdmVudCgianFwbG90RGF0YUhpZ2hsaWdodCIpO28ud2hpY2g9cy53aGljaDtvLnBhZ2VYPXMucGFnZVg7by5wYWdlWT1zLnBhZ2VZO3QudGFyZ2V0LnRyaWdnZXIobyxxKTtkKHQscVswXSxxWzFdKX19ZWxzZXtpZih1PT1udWxsKXtrKHQpfX19ZnVuY3Rpb24gYShyLHEsdSx0LHMpe2lmKHQpe3ZhciBwPVt0LnNlcmllc0luZGV4LHQucG9pbnRJbmRleCx0LmRhdGFdO2lmKHMuc2VyaWVzW3BbMF1dLmhpZ2hsaWdodE1vdXNlRG93biYmIShwWzBdPT1zLnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCYmcFsxXT09cy5zZXJpZXNbcFswXV0uX2hpZ2hsaWdodGVkUG9pbnQpKXt2YXIgbz1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFIaWdobGlnaHQiKTtvLndoaWNoPXIud2hpY2g7by5wYWdlWD1yLnBhZ2VYO28ucGFnZVk9ci5wYWdlWTtzLnRhcmdldC50cmlnZ2VyKG8scCk7ZChzLHBbMF0scFsxXSl9fWVsc2V7aWYodD09bnVsbCl7ayhzKX19fWZ1bmN0aW9uIGwocSxwLHQscyxyKXt2YXIgbz1yLnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDtpZihvIT1udWxsJiZyLnNlcmllc1tvXS5oaWdobGlnaHRNb3VzZURvd24pe2socil9fWZ1bmN0aW9uIGYocixxLHUsdCxzKXtpZih0KXt2YXIgcD1bdC5zZXJpZXNJbmRleCx0LnBvaW50SW5kZXgsdC5kYXRhXTt2YXIgbz1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFDbGljayIpO28ud2hpY2g9ci53aGljaDtvLnBhZ2VYPXIucGFnZVg7by5wYWdlWT1yLnBhZ2VZO3MudGFyZ2V0LnRyaWdnZXIobyxwKX19ZnVuY3Rpb24gbihzLHIsdix1LHQpe2lmKHUpe3ZhciBxPVt1LnNlcmllc0luZGV4LHUucG9pbnRJbmRleCx1LmRhdGFdO3ZhciBvPXQucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4O2lmKG8hPW51bGwmJnQuc2VyaWVzW29dLmhpZ2hsaWdodE1vdXNlRG93bil7ayh0KX12YXIgcD1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFSaWdodENsaWNrIik7cC53aGljaD1zLndoaWNoO3AucGFnZVg9cy5wYWdlWDtwLnBhZ2VZPXMucGFnZVk7dC50YXJnZXQudHJpZ2dlcihwLHEpfX1mdW5jdGlvbiBpKCl7aWYodGhpcy5wbHVnaW5zLnBpZVJlbmRlcmVyJiZ0aGlzLnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzKXt0aGlzLnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnJlc2V0Q2FudmFzKCk7dGhpcy5wbHVnaW5zLnBpZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcz1udWxsfXRoaXMucGx1Z2lucy5waWVSZW5kZXJlcj17aGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDpudWxsfTt0aGlzLnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzPW5ldyBlLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7dmFyIHA9ZSh0aGlzLnRhcmdldElkKyIgLmpxcGxvdC1kYXRhLWxhYmVsIik7aWYocC5sZW5ndGgpe2UocFswXSkuYmVmb3JlKHRoaXMucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywianFwbG90LXBpZVJlbmRlcmVyLWhpZ2hsaWdodC1jYW52YXMiLHRoaXMuX3Bsb3REaW1lbnNpb25zLHRoaXMpKX1lbHNle3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKHRoaXMucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywianFwbG90LXBpZVJlbmRlcmVyLWhpZ2hsaWdodC1jYW52YXMiLHRoaXMuX3Bsb3REaW1lbnNpb25zLHRoaXMpKX12YXIgbz10aGlzLnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnNldENvbnRleHQoKTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoIm1vdXNlbGVhdmUiLHtwbG90OnRoaXN9LGZ1bmN0aW9uKHEpe2socS5kYXRhLnBsb3QpfSl9ZS5qcXBsb3QucHJlSW5pdEhvb2tzLnB1c2goYyk7ZS5qcXBsb3QuUGllVGlja1JlbmRlcmVyPWZ1bmN0aW9uKCl7ZS5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlci5jYWxsKHRoaXMpfTtlLmpxcGxvdC5QaWVUaWNrUmVuZGVyZXIucHJvdG90eXBlPW5ldyBlLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyKCk7ZS5qcXBsb3QuUGllVGlja1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLmpxcGxvdC5QaWVUaWNrUmVuZGVyZXJ9KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.pointLabels.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgCiAgICAvKioKICAgICAqIENsYXNzOiAkLmpxcGxvdC5Qb2ludExhYmVscwogICAgICogUGx1Z2luIGZvciBwdXR0aW5nIGxhYmVscyBhdCB0aGUgZGF0YSBwb2ludHMuCiAgICAgKiAKICAgICAqIFRvIHVzZSB0aGlzIHBsdWdpbiwgaW5jbHVkZSB0aGUganMKICAgICAqIGZpbGUgaW4geW91ciBzb3VyY2U6CiAgICAgKiAKICAgICAqID4gPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0icGx1Z2lucy9qcXBsb3QucG9pbnRMYWJlbHMuanMiPjwvc2NyaXB0PgogICAgICogCiAgICAgKiBCeSBkZWZhdWx0LCB0aGUgbGFzdCB2YWx1ZSBpbiB0aGUgZGF0YSBwb25pdCBhcnJheSBpbiB0aGUgZGF0YSBzZXJpZXMgaXMgdXNlZAogICAgICogZm9yIHRoZSBsYWJlbC4gIEZvciBtb3N0IHNlcmllcyByZW5kZXJlcnMsIGV4dHJhIGRhdGEgY2FuIGJlIGFkZGVkIHRvIHRoZSAKICAgICAqIGRhdGEgcG9pbnQgYXJyYXlzIGFuZCB0aGUgbGFzdCB2YWx1ZSB3aWxsIGJlIHVzZWQgYXMgdGhlIGxhYmVsLgogICAgICogCiAgICAgKiBGb3IgaW5zdGFuY2UsIAogICAgICogdGhpcyBzZXJpZXM6CiAgICAgKiAKICAgICAqID4gW1sxLDRdLCBbMyw1XSwgWzcsMl1dCiAgICAgKiAKICAgICAqIFdvdWxkLCBieSBkZWZhdWx0LCB1c2UgdGhlIHkgdmFsdWVzIGluIHRoZSBsYWJlbHMuCiAgICAgKiBFeHRyYSBkYXRhIGNhbiBiZSBhZGRlZCB0byB0aGUgc2VyaWVzIGxpa2Ugc286CiAgICAgKiAKICAgICAqID4gW1sxLDQsJ21pZCddLCBbMyA1LCdoaSddLCBbNywyLCdsb3cnXV0KICAgICAqIAogICAgICogQW5kIG5vdyB0aGUgcG9pbnQgbGFiZWxzIHdvdWxkIGJlICdtaWQnLCAnbG93JywgYW5kICdoaScuCiAgICAgKiAKICAgICAqIE9wdGlvbnMgdG8gdGhlIHBvaW50IGxhYmVscyBhbmQgYSBjdXN0b20gbGFiZWxzIGFycmF5IGNhbiBiZSBwYXNzZWQgaW50byB0aGUKICAgICAqICJwb2ludExhYmVscyIgb3B0aW9uIG9uIHRoZSBzZXJpZXMgb3B0aW9uIGxpa2Ugc286CiAgICAgKiAKICAgICAqID4gc2VyaWVzOlt7cG9pbnRMYWJlbHM6ewogICAgICogPiAgICBsYWJlbHM6WydtaWQnLCAnaGknLCAnbG93J10sCiAgICAgKiA+ICAgIGxvY2F0aW9uOidzZScsCiAgICAgKiA+ICAgIHlwYWRkaW5nOiAxMgogICAgICogPiAgICB9CiAgICAgKiA+IH1dCiAgICAgKiAKICAgICAqIEEgY3VzdG9tIGxhYmVscyBhcnJheSBpbiB0aGUgb3B0aW9ucyB0YWtlcyBwcmVjZW5kZW5jZSBvdmVyIGFueSBsYWJlbHMKICAgICAqIGluIHRoZSBzZXJpZXMgZGF0YS4gIElmIHlvdSBoYXZlIGEgY3VzdG9tIGxhYmVscyBhcnJheSBpbiB0aGUgb3B0aW9ucywKICAgICAqIGJ1dCBzdGlsbCB3YW50IHRvIHVzZSB2YWx1ZXMgZnJvbSB0aGUgc2VyaWVzIGFycmF5IGFzIGxhYmVscywgc2V0IHRoZQogICAgICogImxhYmVsc0Zyb21TZXJpZXMiIG9wdGlvbiB0byB0cnVlLgogICAgICogCiAgICAgKiBCeSBkZWZhdWx0LCBodG1sIGVudGl0aWVzICg8LCA+LCBldGMuKSBhcmUgZXNjYXBlZCBpbiBwb2ludCBsYWJlbHMuICAKICAgICAqIElmIHlvdSB3YW50IHRvIGluY2x1ZGUgYWN0dWFsIGh0bWwgbWFya3VwIGluIHRoZSBsYWJlbHMsIAogICAgICogc2V0IHRoZSAiZXNjYXBlSFRNTCIgb3B0aW9uIHRvIGZhbHNlLgogICAgICogCiAgICAgKi8KICAgICQuanFwbG90LlBvaW50TGFiZWxzID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgIC8vIEdyb3VwOiBQcm9wZXJ0aWVzCiAgICAgICAgLy8KICAgICAgICAvLyBwcm9wOiBzaG93CiAgICAgICAgLy8gc2hvdyB0aGUgbGFiZWxzIG9yIG5vdC4KICAgICAgICB0aGlzLnNob3cgPSAkLmpxcGxvdC5jb25maWcuZW5hYmxlUGx1Z2luczsKICAgICAgICAvLyBwcm9wOiBsb2NhdGlvbgogICAgICAgIC8vIGNvbXBhc3MgbG9jYXRpb24gd2hlcmUgdG8gcG9zaXRpb24gdGhlIGxhYmVsIGFyb3VuZCB0aGUgcG9pbnQuCiAgICAgICAgLy8gJ24nLCAnbmUnLCAnZScsICdzZScsICdzJywgJ3N3JywgJ3cnLCAnbncnCiAgICAgICAgdGhpcy5sb2NhdGlvbiA9ICduJzsKICAgICAgICAvLyBwcm9wOiBsYWJlbHNGcm9tU2VyaWVzCiAgICAgICAgLy8gdHJ1ZSB0byB1c2UgbGFiZWxzIHdpdGhpbiBkYXRhIHBvaW50IGFycmF5cy4KICAgICAgICB0aGlzLmxhYmVsc0Zyb21TZXJpZXMgPSBmYWxzZTsKICAgICAgICAvLyBwcm9wOiBzZXJpZXNMYWJlbEluZGV4CiAgICAgICAgLy8gYXJyYXkgaW5kZXggZm9yIGxvY2F0aW9uIG9mIGxhYmVscyB3aXRoaW4gZGF0YSBwb2ludCBhcnJheXMuCiAgICAgICAgLy8gaWYgbnVsbCwgd2lsbCB1c2UgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgZGF0YSBwb2ludCBhcnJheS4KICAgICAgICB0aGlzLnNlcmllc0xhYmVsSW5kZXggPSBudWxsOwogICAgICAgIC8vIHByb3A6IGxhYmVscwogICAgICAgIC8vIGFycmF5IG9mIGFycmF5cyBvZiBsYWJlbHMsIG9uZSBhcnJheSBmb3IgZWFjaCBzZXJpZXMuCiAgICAgICAgdGhpcy5sYWJlbHMgPSBbXTsKICAgICAgICAvLyBhY3R1YWwgbGFiZWxzIHRoYXQgd2lsbCBnZXQgZGlzcGxheWVkLgogICAgICAgIC8vIG5lZWRlZCB0byBwcmVzZXJ2ZSB1c2VyIHNwZWNpZmllZCBsYWJlbHMgaW4gbGFiZWxzIGFycmF5LgogICAgICAgIHRoaXMuX2xhYmVscyA9IFtdOwogICAgICAgIC8vIHByb3A6IHN0YWNrZWRWYWx1ZQogICAgICAgIC8vIHRydWUgdG8gZGlzcGxheSB2YWx1ZSBhcyBzdGFja2VkIGluIGEgc3RhY2tlZCBwbG90LgogICAgICAgIC8vIG5vIGVmZmVjdCBpZiBsYWJlbHMgaXMgc3BlY2lmaWVkLgogICAgICAgIHRoaXMuc3RhY2tlZFZhbHVlID0gZmFsc2U7CiAgICAgICAgLy8gcHJvcDogeXBhZGRpbmcKICAgICAgICAvLyB2ZXJ0aWNhbCBwYWRkaW5nIGluIHBpeGVscyBiZXR3ZWVuIHBvaW50IGFuZCBsYWJlbAogICAgICAgIHRoaXMueXBhZGRpbmcgPSA2OwogICAgICAgIC8vIHByb3A6IHhwYWRkaW5nCiAgICAgICAgLy8gaG9yaXpvbnRhbCBwYWRkaW5nIGluIHBpeGVscyBiZXR3ZWVuIHBvaW50IGFuZCBsYWJlbAogICAgICAgIHRoaXMueHBhZGRpbmcgPSA2OwogICAgICAgIC8vIHByb3A6IGVzY2FwZUhUTUwKICAgICAgICAvLyB0cnVlIHRvIGVzY2FwZSBodG1sIGVudGl0aWVzIGluIHRoZSBsYWJlbHMuCiAgICAgICAgLy8gSWYgeW91IHdhbnQgdG8gaW5jbHVkZSBtYXJrdXAgaW4gdGhlIGxhYmVscywgc2V0IHRvIGZhbHNlLgogICAgICAgIHRoaXMuZXNjYXBlSFRNTCA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogZWRnZVRvbGVyYW5jZQogICAgICAgIC8vIE51bWJlciBvZiBwaXhlbHMgdGhhdCB0aGUgbGFiZWwgbXVzdCBiZSBhd2F5IGZyb20gYW4gYXhpcwogICAgICAgIC8vIGJvdW5kYXJ5IGluIG9yZGVyIHRvIGJlIGRyYXduLiAgTmVnYXRpdmUgdmFsdWVzIHdpbGwgYWxsb3cgb3ZlcmxhcAogICAgICAgIC8vIHdpdGggdGhlIGdyaWQgYm91bmRhcmllcy4KICAgICAgICB0aGlzLmVkZ2VUb2xlcmFuY2UgPSAtNTsKICAgICAgICAvLyBwcm9wOiBmb3JtYXR0ZXIKICAgICAgICAvLyBBIGNsYXNzIG9mIGEgZm9ybWF0dGVyIGZvciB0aGUgdGljayB0ZXh0LiAgc3ByaW50ZiBieSBkZWZhdWx0LgogICAgICAgIHRoaXMuZm9ybWF0dGVyID0gJC5qcXBsb3QuRGVmYXVsdFRpY2tGb3JtYXR0ZXI7CiAgICAgICAgLy8gcHJvcDogZm9ybWF0U3RyaW5nCiAgICAgICAgLy8gc3RyaW5nIHBhc3NlZCB0byB0aGUgZm9ybWF0dGVyLgogICAgICAgIHRoaXMuZm9ybWF0U3RyaW5nID0gJyc7CiAgICAgICAgLy8gcHJvcDogaGlkZVplcm9zCiAgICAgICAgLy8gdHJ1ZSB0byBub3Qgc2hvdyBhIGxhYmVsIGZvciBhIHZhbHVlIHdoaWNoIGlzIDAuCiAgICAgICAgdGhpcy5oaWRlWmVyb3MgPSBmYWxzZTsKICAgICAgICB0aGlzLl9lbGVtcyA9IFtdOwogICAgICAgIAogICAgICAgICQuZXh0ZW5kKHRydWUsIHRoaXMsIG9wdGlvbnMpOwogICAgfTsKICAgIAogICAgdmFyIGxvY2F0aW9ucyA9IFsnbncnLCAnbicsICduZScsICdlJywgJ3NlJywgJ3MnLCAnc3cnLCAndyddOwogICAgdmFyIGxvY2F0aW9uSW5kaWNpZXMgPSB7J253JzowLCAnbic6MSwgJ25lJzoyLCAnZSc6MywgJ3NlJzo0LCAncyc6NSwgJ3N3Jzo2LCAndyc6N307CiAgICB2YXIgb3Bwb3NpdGVMb2NhdGlvbnMgPSBbJ3NlJywgJ3MnLCAnc3cnLCAndycsICdudycsICduJywgJ25lJywgJ2UnXTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYSBzZXJpZXMKICAgICQuanFwbG90LlBvaW50TGFiZWxzLmluaXQgPSBmdW5jdGlvbiAodGFyZ2V0LCBkYXRhLCBzZXJpZXNEZWZhdWx0cywgb3B0cywgcGxvdCl7CiAgICAgICAgdmFyIG9wdGlvbnMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgc2VyaWVzRGVmYXVsdHMsIG9wdHMpOwogICAgICAgIG9wdGlvbnMucG9pbnRMYWJlbHMgPSBvcHRpb25zLnBvaW50TGFiZWxzIHx8IHt9OwogICAgICAgIGlmICh0aGlzLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09PSAkLmpxcGxvdC5CYXJSZW5kZXJlciAmJiB0aGlzLmJhckRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnICYmICFvcHRpb25zLnBvaW50TGFiZWxzLmxvY2F0aW9uKSB7CiAgICAgICAgICAgIG9wdGlvbnMucG9pbnRMYWJlbHMubG9jYXRpb24gPSAnZSc7CiAgICAgICAgfQogICAgICAgIC8vIGFkZCBhIHBvaW50TGFiZWxzIGF0dHJpYnV0ZSB0byB0aGUgc2VyaWVzIHBsdWdpbnMKICAgICAgICB0aGlzLnBsdWdpbnMucG9pbnRMYWJlbHMgPSBuZXcgJC5qcXBsb3QuUG9pbnRMYWJlbHMob3B0aW9ucy5wb2ludExhYmVscyk7CiAgICAgICAgdGhpcy5wbHVnaW5zLnBvaW50TGFiZWxzLnNldExhYmVscy5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2Ygc2VyaWVzCiAgICAkLmpxcGxvdC5Qb2ludExhYmVscy5wcm90b3R5cGUuc2V0TGFiZWxzID0gZnVuY3Rpb24oKSB7ICAgCiAgICAgICAgdmFyIHAgPSB0aGlzLnBsdWdpbnMucG9pbnRMYWJlbHM7IAogICAgICAgIHZhciBsYWJlbElkeDsKICAgICAgICBpZiAocC5zZXJpZXNMYWJlbEluZGV4ICE9IG51bGwpIHsKICAgICAgICAgICAgbGFiZWxJZHggPSBwLnNlcmllc0xhYmVsSW5kZXg7CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHRoaXMucmVuZGVyZXIuY29uc3RydWN0b3IgPT09ICQuanFwbG90LkJhclJlbmRlcmVyICYmIHRoaXMuYmFyRGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcpIHsKICAgICAgICAgICBsYWJlbElkeCA9ICh0aGlzLl9wbG90RGF0YVswXS5sZW5ndGggPCAzKSA/IDAgOiB0aGlzLl9wbG90RGF0YVswXS5sZW5ndGggLTE7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBsYWJlbElkeCA9ICh0aGlzLl9wbG90RGF0YS5sZW5ndGggPT09IDApID8gMCA6IHRoaXMuX3Bsb3REYXRhWzBdLmxlbmd0aCAtMTsKICAgICAgICB9CiAgICAgICAgcC5fbGFiZWxzID0gW107CiAgICAgICAgaWYgKHAubGFiZWxzLmxlbmd0aCA9PT0gMCB8fCBwLmxhYmVsc0Zyb21TZXJpZXMpIHsgICAgCiAgICAgICAgICAgIGlmIChwLnN0YWNrZWRWYWx1ZSkgewogICAgICAgICAgICAgICAgaWYgKHRoaXMuX3Bsb3REYXRhLmxlbmd0aCAmJiB0aGlzLl9wbG90RGF0YVswXS5sZW5ndGgpewogICAgICAgICAgICAgICAgICAgIC8vIHZhciBpZHggPSBwLnNlcmllc0xhYmVsSW5kZXggfHwgdGhpcy5fcGxvdERhdGFbMF0ubGVuZ3RoIC0xOwogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9wbG90RGF0YS5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICBwLl9sYWJlbHMucHVzaCh0aGlzLl9wbG90RGF0YVtpXVtsYWJlbElkeF0pOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIHZhciBkID0gdGhpcy5fcGxvdERhdGE7CiAgICAgICAgICAgICAgICB2YXIgZCA9IHRoaXMuZGF0YTsKICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09PSAkLmpxcGxvdC5CYXJSZW5kZXJlciAmJiB0aGlzLndhdGVyZmFsbCkgewogICAgICAgICAgICAgICAgICAgIGQgPSB0aGlzLl9kYXRhOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGQubGVuZ3RoICYmIGRbMF0ubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gdmFyIGlkeCA9IHAuc2VyaWVzTGFiZWxJbmRleCB8fCBkWzBdLmxlbmd0aCAtMTsKICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7IGk8ZC5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICBwLl9sYWJlbHMucHVzaChkW2ldW2xhYmVsSWR4XSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZCA9IG51bGw7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAocC5sYWJlbHMubGVuZ3RoKXsKICAgICAgICAgICAgcC5fbGFiZWxzID0gcC5sYWJlbHM7CiAgICAgICAgfQogICAgfTsKICAgIAogICAgJC5qcXBsb3QuUG9pbnRMYWJlbHMucHJvdG90eXBlLnhPZmZzZXQgPSBmdW5jdGlvbihlbGVtLCBsb2NhdGlvbiwgcGFkZGluZykgewogICAgICAgIGxvY2F0aW9uID0gbG9jYXRpb24gfHwgdGhpcy5sb2NhdGlvbjsKICAgICAgICBwYWRkaW5nID0gcGFkZGluZyB8fCB0aGlzLnhwYWRkaW5nOwogICAgICAgIHZhciBvZmZzZXQ7CiAgICAgICAgCiAgICAgICAgc3dpdGNoIChsb2NhdGlvbikgewogICAgICAgICAgICBjYXNlICdudyc6CiAgICAgICAgICAgICAgICBvZmZzZXQgPSAtZWxlbS5vdXRlcldpZHRoKHRydWUpIC0gdGhpcy54cGFkZGluZzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICduJzoKICAgICAgICAgICAgICAgIG9mZnNldCA9IC1lbGVtLm91dGVyV2lkdGgodHJ1ZSkvMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICduZSc6CiAgICAgICAgICAgICAgICBvZmZzZXQgPSAgdGhpcy54cGFkZGluZzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdlJzoKICAgICAgICAgICAgICAgIG9mZnNldCA9IHRoaXMueHBhZGRpbmc7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnc2UnOgogICAgICAgICAgICAgICAgb2Zmc2V0ID0gdGhpcy54cGFkZGluZzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgICAgIG9mZnNldCA9IC1lbGVtLm91dGVyV2lkdGgodHJ1ZSkvMjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICdzdyc6CiAgICAgICAgICAgICAgICBvZmZzZXQgPSAtZWxlbS5vdXRlcldpZHRoKHRydWUpIC0gdGhpcy54cGFkZGluZzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICd3JzoKICAgICAgICAgICAgICAgIG9mZnNldCA9IC1lbGVtLm91dGVyV2lkdGgodHJ1ZSkgLSB0aGlzLnhwYWRkaW5nOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6IC8vIHNhbWUgYXMgJ253JwogICAgICAgICAgICAgICAgb2Zmc2V0ID0gLWVsZW0ub3V0ZXJXaWR0aCh0cnVlKSAtIHRoaXMueHBhZGRpbmc7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIG9mZnNldDsgCiAgICB9OwogICAgCiAgICAkLmpxcGxvdC5Qb2ludExhYmVscy5wcm90b3R5cGUueU9mZnNldCA9IGZ1bmN0aW9uKGVsZW0sIGxvY2F0aW9uLCBwYWRkaW5nKSB7CiAgICAgICAgbG9jYXRpb24gPSBsb2NhdGlvbiB8fCB0aGlzLmxvY2F0aW9uOwogICAgICAgIHBhZGRpbmcgPSBwYWRkaW5nIHx8IHRoaXMueHBhZGRpbmc7CiAgICAgICAgdmFyIG9mZnNldDsKICAgICAgICAKICAgICAgICBzd2l0Y2ggKGxvY2F0aW9uKSB7CiAgICAgICAgICAgIGNhc2UgJ253JzoKICAgICAgICAgICAgICAgIG9mZnNldCA9IC1lbGVtLm91dGVySGVpZ2h0KHRydWUpIC0gdGhpcy55cGFkZGluZzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICduJzoKICAgICAgICAgICAgICAgIG9mZnNldCA9IC1lbGVtLm91dGVySGVpZ2h0KHRydWUpIC0gdGhpcy55cGFkZGluZzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlICduZSc6CiAgICAgICAgICAgICAgICBvZmZzZXQgPSAtZWxlbS5vdXRlckhlaWdodCh0cnVlKSAtIHRoaXMueXBhZGRpbmc7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAnZSc6CiAgICAgICAgICAgICAgICBvZmZzZXQgPSAtZWxlbS5vdXRlckhlaWdodCh0cnVlKS8yOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3NlJzoKICAgICAgICAgICAgICAgIG9mZnNldCA9IHRoaXMueXBhZGRpbmc7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAncyc6CiAgICAgICAgICAgICAgICBvZmZzZXQgPSB0aGlzLnlwYWRkaW5nOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgJ3N3JzoKICAgICAgICAgICAgICAgIG9mZnNldCA9IHRoaXMueXBhZGRpbmc7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAndyc6CiAgICAgICAgICAgICAgICBvZmZzZXQgPSAtZWxlbS5vdXRlckhlaWdodCh0cnVlKS8yOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6IC8vIHNhbWUgYXMgJ253JwogICAgICAgICAgICAgICAgb2Zmc2V0ID0gLWVsZW0ub3V0ZXJIZWlnaHQodHJ1ZSkgLSB0aGlzLnlwYWRkaW5nOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIHJldHVybiBvZmZzZXQ7IAogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2Ygc2VyaWVzCiAgICAkLmpxcGxvdC5Qb2ludExhYmVscy5kcmF3ID0gZnVuY3Rpb24gKHNjdHgsIG9wdGlvbnMsIHBsb3QpIHsKICAgICAgICB2YXIgcCA9IHRoaXMucGx1Z2lucy5wb2ludExhYmVsczsKICAgICAgICAvLyBzZXQgbGFiZWxzIGFnYWluIGluIGNhc2UgdGhleSBoYXZlIGNoYW5nZWQuCiAgICAgICAgcC5zZXRMYWJlbHMuY2FsbCh0aGlzKTsKICAgICAgICAvLyByZW1vdmUgYW55IHByZXZpb3VzIGxhYmVscwogICAgICAgIGZvciAodmFyIGk9MDsgaTxwLl9lbGVtcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAvLyBNZW1vcnkgTGVha3MgcGF0Y2gKICAgICAgICAgICAgLy8gcC5fZWxlbXNbaV0ucmVtb3ZlKCk7CiAgICAgICAgICAgIHAuX2VsZW1zW2ldLmVtcHR5Rm9yY2UoKTsKICAgICAgICB9CiAgICAgICAgcC5fZWxlbXMuc3BsaWNlKDAsIHAuX2VsZW1zLmxlbmd0aCk7CgogICAgICAgIGlmIChwLnNob3cpIHsKICAgICAgICAgICAgdmFyIGF4ID0gJ18nK3RoaXMuX3N0YWNrQXhpcysnYXhpcyc7CiAgICAgICAgCiAgICAgICAgICAgIGlmICghcC5mb3JtYXRTdHJpbmcpIHsKICAgICAgICAgICAgICAgIHAuZm9ybWF0U3RyaW5nID0gdGhpc1theF0uX3RpY2tzWzBdLmZvcm1hdFN0cmluZzsKICAgICAgICAgICAgICAgIHAuZm9ybWF0dGVyID0gdGhpc1theF0uX3RpY2tzWzBdLmZvcm1hdHRlcjsKICAgICAgICAgICAgfQogICAgICAgIAogICAgICAgICAgICB2YXIgcGQgPSB0aGlzLl9wbG90RGF0YTsKICAgICAgICAgICAgdmFyIHBwZCA9IHRoaXMuX3ByZXZQbG90RGF0YTsKICAgICAgICAgICAgdmFyIHhheCA9IHRoaXMuX3hheGlzOwogICAgICAgICAgICB2YXIgeWF4ID0gdGhpcy5feWF4aXM7CiAgICAgICAgICAgIHZhciBlbGVtLCBoZWxlbTsKCiAgICAgICAgICAgIGZvciAodmFyIGk9MCwgbD1wLl9sYWJlbHMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CiAgICAgICAgICAgICAgICB2YXIgbGFiZWwgPSBwLl9sYWJlbHNbaV07CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGlmIChsYWJlbCA9PSBudWxsIHx8IChwLmhpZGVaZXJvcyAmJiBwYXJzZUludChsYWJlbCwgMTApID09IDApKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGxhYmVsID0gcC5mb3JtYXR0ZXIocC5mb3JtYXRTdHJpbmcsIGxhYmVsKTsKCiAgICAgICAgICAgICAgICBoZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOwogICAgICAgICAgICAgICAgcC5fZWxlbXNbaV0gPSAkKGhlbGVtKTsKCiAgICAgICAgICAgICAgICBlbGVtID0gcC5fZWxlbXNbaV07CgoKICAgICAgICAgICAgICAgIGVsZW0uYWRkQ2xhc3MoJ2pxcGxvdC1wb2ludC1sYWJlbCBqcXBsb3Qtc2VyaWVzLScrdGhpcy5pbmRleCsnIGpxcGxvdC1wb2ludC0nK2kpOwogICAgICAgICAgICAgICAgZWxlbS5jc3MoJ3Bvc2l0aW9uJywgJ2Fic29sdXRlJyk7CiAgICAgICAgICAgICAgICBlbGVtLmluc2VydEFmdGVyKHNjdHguY2FudmFzKTsKCiAgICAgICAgICAgICAgICBpZiAocC5lc2NhcGVIVE1MKSB7CiAgICAgICAgICAgICAgICAgICAgZWxlbS50ZXh0KGxhYmVsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGVsZW0uaHRtbChsYWJlbCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB2YXIgbG9jYXRpb24gPSBwLmxvY2F0aW9uOwogICAgICAgICAgICAgICAgaWYgKCh0aGlzLmZpbGxUb1plcm8gJiYgcGRbaV1bMV0gPCAwKSB8fCAodGhpcy5maWxsVG9aZXJvICYmIHRoaXMuX3R5cGUgPT09ICdiYXInICYmIHRoaXMuYmFyRGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcgJiYgcGRbaV1bMF0gPCAwKSB8fCAodGhpcy53YXRlcmZhbGwgJiYgcGFyc2VJbnQobGFiZWwsIDEwKSkgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gPSBvcHBvc2l0ZUxvY2F0aW9uc1tsb2NhdGlvbkluZGljaWVzW2xvY2F0aW9uXV07CiAgICAgICAgICAgICAgICB9CgoKICAgICAgICAgICAgICAgIHZhciBlbGwgPSB4YXgudTJwKHBkW2ldWzBdKSArIHAueE9mZnNldChlbGVtLCBsb2NhdGlvbik7CiAgICAgICAgICAgICAgICB2YXIgZWx0ID0geWF4LnUycChwZFtpXVsxXSkgKyBwLnlPZmZzZXQoZWxlbSwgbG9jYXRpb24pOwoKICAgICAgICAgICAgICAgIC8vIHdlIGhhdmUgc3RhY2tlZCBjaGFydCBidXQgYXJlIG5vdCBzaG93aW5nIHN0YWNrZWQgdmFsdWVzLAogICAgICAgICAgICAgICAgLy8gcGxhY2UgbGFiZWxzIGluIGNlbnRlci4KICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zdGFjayAmJiAhcC5zdGFja2VkVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5iYXJEaXJlY3Rpb24gPT09ICJ2ZXJ0aWNhbCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWx0ID0gKHRoaXMuX2JhclBvaW50c1tpXVswXVsxXSArIHRoaXMuX2JhclBvaW50c1tpXVsxXVsxXSkgLyAyICsgcGxvdC5fZ3JpZFBhZGRpbmcudG9wIC0gMC41ICogZWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsbCA9ICh0aGlzLl9iYXJQb2ludHNbaV1bMl1bMF0gKyB0aGlzLl9iYXJQb2ludHNbaV1bMF1bMF0pIC8gMiArIHBsb3QuX2dyaWRQYWRkaW5nLmxlZnQgLSAwLjUgKiBlbGVtLm91dGVyV2lkdGgodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbmRlcmVyLmNvbnN0cnVjdG9yID09ICQuanFwbG90LkJhclJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYmFyRGlyZWN0aW9uID09ICJ2ZXJ0aWNhbCIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWxsICs9IHRoaXMuX2Jhck51ZGdlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgZWx0IC09IHRoaXMuX2Jhck51ZGdlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsZW0uY3NzKCdsZWZ0JywgZWxsKTsKICAgICAgICAgICAgICAgIGVsZW0uY3NzKCd0b3AnLCBlbHQpOwogICAgICAgICAgICAgICAgdmFyIGVsciA9IGVsbCArIGVsZW0ud2lkdGgoKTsKICAgICAgICAgICAgICAgIHZhciBlbGIgPSBlbHQgKyBlbGVtLmhlaWdodCgpOwogICAgICAgICAgICAgICAgdmFyIGV0ID0gcC5lZGdlVG9sZXJhbmNlOwogICAgICAgICAgICAgICAgdmFyIHNjbCA9ICQoc2N0eC5jYW52YXMpLnBvc2l0aW9uKCkubGVmdDsKICAgICAgICAgICAgICAgIHZhciBzY3QgPSAkKHNjdHguY2FudmFzKS5wb3NpdGlvbigpLnRvcDsKICAgICAgICAgICAgICAgIHZhciBzY3IgPSBzY3R4LmNhbnZhcy53aWR0aCArIHNjbDsKICAgICAgICAgICAgICAgIHZhciBzY2IgPSBzY3R4LmNhbnZhcy5oZWlnaHQgKyBzY3Q7CiAgICAgICAgICAgICAgICAvLyBpZiBsYWJlbCBpcyBvdXRzaWRlIG9mIGFsbG93ZWQgYXJlYSwgcmVtb3ZlIGl0CiAgICAgICAgICAgICAgICBpZiAoZWxsIC0gZXQgPCBzY2wgfHwgZWx0IC0gZXQgPCBzY3QgfHwgZWxyICsgZXQgPiBzY3IgfHwgZWxiICsgZXQgPiBzY2IpIHsKICAgICAgICAgICAgICAgICAgICBlbGVtLnJlbW92ZSgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsZW0gPSBudWxsOwogICAgICAgICAgICAgICAgaGVsZW0gPSBudWxsOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBmaW5hbGx5LCBhbmltYXRlIHRoZW0gaWYgdGhlIHNlcmllcyBpcyBhbmltYXRlZAogICAgICAgICAgICAvLyBpZiAodGhpcy5yZW5kZXJlci5hbmltYXRpb24gJiYgdGhpcy5yZW5kZXJlci5hbmltYXRpb24uX3N1cHBvcnRlZCAmJiB0aGlzLnJlbmRlcmVyLmFuaW1hdGlvbi5zaG93ICYmIHBsb3QuX2RyYXdDb3VudCA8IDIpIHsKICAgICAgICAgICAgLy8gICAgIHZhciBzZWwgPSAnLmpxcGxvdC1wb2ludC1sYWJlbC5qcXBsb3Qtc2VyaWVzLScrdGhpcy5pbmRleDsKICAgICAgICAgICAgLy8gICAgICQoc2VsKS5oaWRlKCk7CiAgICAgICAgICAgIC8vICAgICAkKHNlbCkuZmFkZUluKDEwMDApOwogICAgICAgICAgICAvLyB9CgogICAgICAgIH0KICAgIH07CiAgICAKICAgICQuanFwbG90LnBvc3RTZXJpZXNJbml0SG9va3MucHVzaCgkLmpxcGxvdC5Qb2ludExhYmVscy5pbml0KTsKICAgICQuanFwbG90LnBvc3REcmF3U2VyaWVzSG9va3MucHVzaCgkLmpxcGxvdC5Qb2ludExhYmVscy5kcmF3KTsKfSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.pointLabels.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGMpe2MuanFwbG90LlBvaW50TGFiZWxzPWZ1bmN0aW9uKGUpe3RoaXMuc2hvdz1jLmpxcGxvdC5jb25maWcuZW5hYmxlUGx1Z2luczt0aGlzLmxvY2F0aW9uPSJuIjt0aGlzLmxhYmVsc0Zyb21TZXJpZXM9ZmFsc2U7dGhpcy5zZXJpZXNMYWJlbEluZGV4PW51bGw7dGhpcy5sYWJlbHM9W107dGhpcy5fbGFiZWxzPVtdO3RoaXMuc3RhY2tlZFZhbHVlPWZhbHNlO3RoaXMueXBhZGRpbmc9Njt0aGlzLnhwYWRkaW5nPTY7dGhpcy5lc2NhcGVIVE1MPXRydWU7dGhpcy5lZGdlVG9sZXJhbmNlPS01O3RoaXMuZm9ybWF0dGVyPWMuanFwbG90LkRlZmF1bHRUaWNrRm9ybWF0dGVyO3RoaXMuZm9ybWF0U3RyaW5nPSIiO3RoaXMuaGlkZVplcm9zPWZhbHNlO3RoaXMuX2VsZW1zPVtdO2MuZXh0ZW5kKHRydWUsdGhpcyxlKX07dmFyIGE9WyJudyIsIm4iLCJuZSIsImUiLCJzZSIsInMiLCJzdyIsInciXTt2YXIgZD17bnc6MCxuOjEsbmU6MixlOjMsc2U6NCxzOjUsc3c6Nix3Ojd9O3ZhciBiPVsic2UiLCJzIiwic3ciLCJ3IiwibnciLCJuIiwibmUiLCJlIl07Yy5qcXBsb3QuUG9pbnRMYWJlbHMuaW5pdD1mdW5jdGlvbihqLGgsZixnLGkpe3ZhciBlPWMuZXh0ZW5kKHRydWUse30sZixnKTtlLnBvaW50TGFiZWxzPWUucG9pbnRMYWJlbHN8fHt9O2lmKHRoaXMucmVuZGVyZXIuY29uc3RydWN0b3I9PT1jLmpxcGxvdC5CYXJSZW5kZXJlciYmdGhpcy5iYXJEaXJlY3Rpb249PT0iaG9yaXpvbnRhbCImJiFlLnBvaW50TGFiZWxzLmxvY2F0aW9uKXtlLnBvaW50TGFiZWxzLmxvY2F0aW9uPSJlIn10aGlzLnBsdWdpbnMucG9pbnRMYWJlbHM9bmV3IGMuanFwbG90LlBvaW50TGFiZWxzKGUucG9pbnRMYWJlbHMpO3RoaXMucGx1Z2lucy5wb2ludExhYmVscy5zZXRMYWJlbHMuY2FsbCh0aGlzKX07Yy5qcXBsb3QuUG9pbnRMYWJlbHMucHJvdG90eXBlLnNldExhYmVscz1mdW5jdGlvbigpe3ZhciBmPXRoaXMucGx1Z2lucy5wb2ludExhYmVsczt2YXIgaDtpZihmLnNlcmllc0xhYmVsSW5kZXghPW51bGwpe2g9Zi5zZXJpZXNMYWJlbEluZGV4fWVsc2V7aWYodGhpcy5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09PWMuanFwbG90LkJhclJlbmRlcmVyJiZ0aGlzLmJhckRpcmVjdGlvbj09PSJob3Jpem9udGFsIil7aD0odGhpcy5fcGxvdERhdGFbMF0ubGVuZ3RoPDMpPzA6dGhpcy5fcGxvdERhdGFbMF0ubGVuZ3RoLTF9ZWxzZXtoPSh0aGlzLl9wbG90RGF0YS5sZW5ndGg9PT0wKT8wOnRoaXMuX3Bsb3REYXRhWzBdLmxlbmd0aC0xfX1mLl9sYWJlbHM9W107aWYoZi5sYWJlbHMubGVuZ3RoPT09MHx8Zi5sYWJlbHNGcm9tU2VyaWVzKXtpZihmLnN0YWNrZWRWYWx1ZSl7aWYodGhpcy5fcGxvdERhdGEubGVuZ3RoJiZ0aGlzLl9wbG90RGF0YVswXS5sZW5ndGgpe2Zvcih2YXIgZT0wO2U8dGhpcy5fcGxvdERhdGEubGVuZ3RoO2UrKyl7Zi5fbGFiZWxzLnB1c2godGhpcy5fcGxvdERhdGFbZV1baF0pfX19ZWxzZXt2YXIgZz10aGlzLmRhdGE7aWYodGhpcy5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09PWMuanFwbG90LkJhclJlbmRlcmVyJiZ0aGlzLndhdGVyZmFsbCl7Zz10aGlzLl9kYXRhfWlmKGcubGVuZ3RoJiZnWzBdLmxlbmd0aCl7Zm9yKHZhciBlPTA7ZTxnLmxlbmd0aDtlKyspe2YuX2xhYmVscy5wdXNoKGdbZV1baF0pfX1nPW51bGx9fWVsc2V7aWYoZi5sYWJlbHMubGVuZ3RoKXtmLl9sYWJlbHM9Zi5sYWJlbHN9fX07Yy5qcXBsb3QuUG9pbnRMYWJlbHMucHJvdG90eXBlLnhPZmZzZXQ9ZnVuY3Rpb24oZixlLGcpe2U9ZXx8dGhpcy5sb2NhdGlvbjtnPWd8fHRoaXMueHBhZGRpbmc7dmFyIGg7c3dpdGNoKGUpe2Nhc2UibnciOmg9LWYub3V0ZXJXaWR0aCh0cnVlKS10aGlzLnhwYWRkaW5nO2JyZWFrO2Nhc2UibiI6aD0tZi5vdXRlcldpZHRoKHRydWUpLzI7YnJlYWs7Y2FzZSJuZSI6aD10aGlzLnhwYWRkaW5nO2JyZWFrO2Nhc2UiZSI6aD10aGlzLnhwYWRkaW5nO2JyZWFrO2Nhc2Uic2UiOmg9dGhpcy54cGFkZGluZzticmVhaztjYXNlInMiOmg9LWYub3V0ZXJXaWR0aCh0cnVlKS8yO2JyZWFrO2Nhc2Uic3ciOmg9LWYub3V0ZXJXaWR0aCh0cnVlKS10aGlzLnhwYWRkaW5nO2JyZWFrO2Nhc2UidyI6aD0tZi5vdXRlcldpZHRoKHRydWUpLXRoaXMueHBhZGRpbmc7YnJlYWs7ZGVmYXVsdDpoPS1mLm91dGVyV2lkdGgodHJ1ZSktdGhpcy54cGFkZGluZzticmVha31yZXR1cm4gaH07Yy5qcXBsb3QuUG9pbnRMYWJlbHMucHJvdG90eXBlLnlPZmZzZXQ9ZnVuY3Rpb24oZixlLGcpe2U9ZXx8dGhpcy5sb2NhdGlvbjtnPWd8fHRoaXMueHBhZGRpbmc7dmFyIGg7c3dpdGNoKGUpe2Nhc2UibnciOmg9LWYub3V0ZXJIZWlnaHQodHJ1ZSktdGhpcy55cGFkZGluZzticmVhaztjYXNlIm4iOmg9LWYub3V0ZXJIZWlnaHQodHJ1ZSktdGhpcy55cGFkZGluZzticmVhaztjYXNlIm5lIjpoPS1mLm91dGVySGVpZ2h0KHRydWUpLXRoaXMueXBhZGRpbmc7YnJlYWs7Y2FzZSJlIjpoPS1mLm91dGVySGVpZ2h0KHRydWUpLzI7YnJlYWs7Y2FzZSJzZSI6aD10aGlzLnlwYWRkaW5nO2JyZWFrO2Nhc2UicyI6aD10aGlzLnlwYWRkaW5nO2JyZWFrO2Nhc2Uic3ciOmg9dGhpcy55cGFkZGluZzticmVhaztjYXNlInciOmg9LWYub3V0ZXJIZWlnaHQodHJ1ZSkvMjticmVhaztkZWZhdWx0Omg9LWYub3V0ZXJIZWlnaHQodHJ1ZSktdGhpcy55cGFkZGluZzticmVha31yZXR1cm4gaH07Yy5qcXBsb3QuUG9pbnRMYWJlbHMuZHJhdz1mdW5jdGlvbih4LGosdil7dmFyIHQ9dGhpcy5wbHVnaW5zLnBvaW50TGFiZWxzO3Quc2V0TGFiZWxzLmNhbGwodGhpcyk7Zm9yKHZhciB3PTA7dzx0Ll9lbGVtcy5sZW5ndGg7dysrKXt0Ll9lbGVtc1t3XS5lbXB0eUZvcmNlKCl9dC5fZWxlbXMuc3BsaWNlKDAsdC5fZWxlbXMubGVuZ3RoKTtpZih0LnNob3cpe3ZhciByPSJfIit0aGlzLl9zdGFja0F4aXMrImF4aXMiO2lmKCF0LmZvcm1hdFN0cmluZyl7dC5mb3JtYXRTdHJpbmc9dGhpc1tyXS5fdGlja3NbMF0uZm9ybWF0U3RyaW5nO3QuZm9ybWF0dGVyPXRoaXNbcl0uX3RpY2tzWzBdLmZvcm1hdHRlcn12YXIgRT10aGlzLl9wbG90RGF0YTt2YXIgRD10aGlzLl9wcmV2UGxvdERhdGE7dmFyIEE9dGhpcy5feGF4aXM7dmFyIHE9dGhpcy5feWF4aXM7dmFyIHosZjtmb3IodmFyIHc9MCx1PXQuX2xhYmVscy5sZW5ndGg7dzx1O3crKyl7dmFyIG89dC5fbGFiZWxzW3ddO2lmKG89PW51bGx8fCh0LmhpZGVaZXJvcyYmcGFyc2VJbnQobywxMCk9PTApKXtjb250aW51ZX1vPXQuZm9ybWF0dGVyKHQuZm9ybWF0U3RyaW5nLG8pO2Y9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dC5fZWxlbXNbd109YyhmKTt6PXQuX2VsZW1zW3ddO3ouYWRkQ2xhc3MoImpxcGxvdC1wb2ludC1sYWJlbCBqcXBsb3Qtc2VyaWVzLSIrdGhpcy5pbmRleCsiIGpxcGxvdC1wb2ludC0iK3cpO3ouY3NzKCJwb3NpdGlvbiIsImFic29sdXRlIik7ei5pbnNlcnRBZnRlcih4LmNhbnZhcyk7aWYodC5lc2NhcGVIVE1MKXt6LnRleHQobyl9ZWxzZXt6Lmh0bWwobyl9dmFyIGc9dC5sb2NhdGlvbjtpZigodGhpcy5maWxsVG9aZXJvJiZFW3ddWzFdPDApfHwodGhpcy5maWxsVG9aZXJvJiZ0aGlzLl90eXBlPT09ImJhciImJnRoaXMuYmFyRGlyZWN0aW9uPT09Imhvcml6b250YWwiJiZFW3ddWzBdPDApfHwodGhpcy53YXRlcmZhbGwmJnBhcnNlSW50KG8sMTApKTwwKXtnPWJbZFtnXV19dmFyIG49QS51MnAoRVt3XVswXSkrdC54T2Zmc2V0KHosZyk7dmFyIGg9cS51MnAoRVt3XVsxXSkrdC55T2Zmc2V0KHosZyk7aWYodGhpcy5fc3RhY2smJiF0LnN0YWNrZWRWYWx1ZSl7aWYodGhpcy5iYXJEaXJlY3Rpb249PT0idmVydGljYWwiKXtoPSh0aGlzLl9iYXJQb2ludHNbd11bMF1bMV0rdGhpcy5fYmFyUG9pbnRzW3ddWzFdWzFdKS8yK3YuX2dyaWRQYWRkaW5nLnRvcC0wLjUqei5vdXRlckhlaWdodCh0cnVlKX1lbHNle249KHRoaXMuX2JhclBvaW50c1t3XVsyXVswXSt0aGlzLl9iYXJQb2ludHNbd11bMF1bMF0pLzIrdi5fZ3JpZFBhZGRpbmcubGVmdC0wLjUqei5vdXRlcldpZHRoKHRydWUpfX1pZih0aGlzLnJlbmRlcmVyLmNvbnN0cnVjdG9yPT1jLmpxcGxvdC5CYXJSZW5kZXJlcil7aWYodGhpcy5iYXJEaXJlY3Rpb249PSJ2ZXJ0aWNhbCIpe24rPXRoaXMuX2Jhck51ZGdlfWVsc2V7aC09dGhpcy5fYmFyTnVkZ2V9fXouY3NzKCJsZWZ0IixuKTt6LmNzcygidG9wIixoKTt2YXIgaz1uK3oud2lkdGgoKTt2YXIgcz1oK3ouaGVpZ2h0KCk7dmFyIEM9dC5lZGdlVG9sZXJhbmNlO3ZhciBlPWMoeC5jYW52YXMpLnBvc2l0aW9uKCkubGVmdDt2YXIgeT1jKHguY2FudmFzKS5wb3NpdGlvbigpLnRvcDt2YXIgQj14LmNhbnZhcy53aWR0aCtlO3ZhciBtPXguY2FudmFzLmhlaWdodCt5O2lmKG4tQzxlfHxoLUM8eXx8aytDPkJ8fHMrQz5tKXt6LnJlbW92ZSgpfXo9bnVsbDtmPW51bGx9fX07Yy5qcXBsb3QucG9zdFNlcmllc0luaXRIb29rcy5wdXNoKGMuanFwbG90LlBvaW50TGFiZWxzLmluaXQpO2MuanFwbG90LnBvc3REcmF3U2VyaWVzSG9va3MucHVzaChjLmpxcGxvdC5Qb2ludExhYmVscy5kcmF3KX0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.pyramidAxisRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgJC5qcXBsb3QuUHlyYW1pZEF4aXNSZW5kZXJlciA9IGZ1bmN0aW9uKCkgewogICAgICAgICQuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKICAgIAogICAgJC5qcXBsb3QuUHlyYW1pZEF4aXNSZW5kZXJlci5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7CiAgICAkLmpxcGxvdC5QeXJhbWlkQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICQuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXI7CiAgICAgICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBheGlzCiAgICAkLmpxcGxvdC5QeXJhbWlkQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucyl7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAvLwogICAgICAgIC8vIHByb3A6IHBvc2l0aW9uCiAgICAgICAgLy8gUG9zaXRpb24gb2YgYXhpcy4gIFZhbHVlcyBhcmU6IHRvcCwgYm90dG9tICwgbGVmdCwgY2VudGVyLCByaWdodC4KICAgICAgICAvLyBCeSBkZWZhdWx0LCB4IGFuZCB4MiBheGVzIGFyZSBib3R0b20sIHkgYXhpcyBpcyBjZW50ZXIuCiAgICAgICAgdGhpcy5wb3NpdGlvbiA9IG51bGw7CiAgICAgICAgLy8gcHJvcDogZHJhd0Jhc2VsaW5lCiAgICAgICAgLy8gVHJ1ZSB0byBkcmF3IHRoZSBheGlzIGJhc2VsaW5lLgogICAgICAgIHRoaXMuZHJhd0Jhc2VsaW5lID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBiYXNlbGluZVdpZHRoCiAgICAgICAgLy8gd2lkdGggb2YgdGhlIGJhc2VsaW5lIGluIHBpeGVscy4KICAgICAgICB0aGlzLmJhc2VsaW5lV2lkdGggPSBudWxsOwogICAgICAgIC8vIHByb3A6IGJhc2VsaW5lQ29sb3IKICAgICAgICAvLyBDU1MgY29sb3Igc3BlYyBmb3IgdGhlIGJhc2VsaW5lLgogICAgICAgIHRoaXMuYmFzZWxpbmVDb2xvciA9IG51bGw7CiAgICAgICAgdGhpcy50aWNrU3BhY2luZ0ZhY3RvciA9IDI1OwogICAgICAgIHRoaXMuX3R5cGUgPSAncHlyYW1pZCc7CiAgICAgICAgdGhpcy5fc3BsaXRBeGlzID0gZmFsc2U7CiAgICAgICAgdGhpcy5fc3BsaXRMZW5ndGggPSBudWxsOwogICAgICAgIHRoaXMuY2F0ZWdvcnkgPSBmYWxzZTsKICAgICAgICB0aGlzLl9hdXRvRm9ybWF0U3RyaW5nID0gJyc7CiAgICAgICAgdGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcgPSBmYWxzZTsKICAgICAgICAKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgICAgICB0aGlzLnJlbmRlcmVyLm9wdGlvbnMgPSBvcHRpb25zOwoKICAgICAgICB0aGlzLnJlc2V0RGF0YUJvdW5kcyA9IHRoaXMucmVuZGVyZXIucmVzZXREYXRhQm91bmRzOwogICAgICAgIHRoaXMucmVzZXREYXRhQm91bmRzKCk7CgogICAgfTsKCiAgICAkLmpxcGxvdC5QeXJhbWlkQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5yZXNldERhdGFCb3VuZHMgPSBmdW5jdGlvbigpIHsKICAgICAgICAvLyBHbyB0aHJvdWdoIGFsbCB0aGUgc2VyaWVzIGF0dGFjaGVkIHRvIHRoaXMgYXhpcyBhbmQgZmluZAogICAgICAgIC8vIHRoZSBtaW4vbWF4IGJvdW5kcyBmb3IgdGhpcyBheGlzLgogICAgICAgIHZhciBkYiA9IHRoaXMuX2RhdGFCb3VuZHM7CiAgICAgICAgZGIubWluID0gbnVsbDsKICAgICAgICBkYi5tYXggPSBudWxsOwogICAgICAgIHZhciB0ZW1wOwogICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgdmFyIHMgPSB0aGlzLl9zZXJpZXNbaV07CiAgICAgICAgICAgIHZhciBkID0gcy5fcGxvdERhdGE7CiAgICAgICAgICAgIAogICAgICAgICAgICBmb3IgKHZhciBqPTAsIGw9ZC5sZW5ndGg7IGo8bDsgaisrKSB7IAogICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZS5jaGFyQXQoMCkgPT09ICd4JykgewogICAgICAgICAgICAgICAgICAgIHRlbXAgPSBkW2pdWzFdOwogICAgICAgICAgICAgICAgICAgIGlmICgodGVtcCAhPT0gbnVsbCAmJiB0ZW1wIDwgZGIubWluKSB8fCBkYi5taW4gPT09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGIubWluID0gdGVtcDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCh0ZW1wICE9PSBudWxsICYmIHRlbXAgPiBkYi5tYXgpIHx8IGRiLm1heCA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBkYi5tYXggPSB0ZW1wOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgdGVtcCA9IGRbal1bMF07CiAgICAgICAgICAgICAgICAgICAgaWYgKCh0ZW1wICE9PSBudWxsICYmIHRlbXAgPCBkYi5taW4pIHx8IGRiLm1pbiA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBkYi5taW4gPSB0ZW1wOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoKHRlbXAgIT09IG51bGwgJiYgdGVtcCA+IGRiLm1heCkgfHwgZGIubWF4ID09PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGRiLm1heCA9IHRlbXA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBheGlzCiAgICAkLmpxcGxvdC5QeXJhbWlkQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3ID0gZnVuY3Rpb24oY3R4LCBwbG90KSB7CiAgICAgICAgaWYgKHRoaXMuc2hvdykgewogICAgICAgICAgICAvLyBwb3B1bGF0ZSB0aGUgYXhpcyBsYWJlbCBhbmQgdmFsdWUgcHJvcGVydGllcy4KICAgICAgICAgICAgLy8gY3JlYXRlVGlja3MgaXMgYSBtZXRob2Qgb24gdGhlIHJlbmRlcmVyLCBidXQKICAgICAgICAgICAgLy8gY2FsbCBpdCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBheGlzLgogICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmNyZWF0ZVRpY2tzLmNhbGwodGhpcywgcGxvdCk7CiAgICAgICAgICAgIC8vIGZpbGwgYSBkaXYgd2l0aCBheGVzIGxhYmVscyBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uLgogICAgICAgICAgICAvLyBOZWVkIHRvIHByZWdlbmVyYXRlIGVhY2ggYXhpcyB0byBnZXQgaXRzIGJvdW5kcyBhbmQKICAgICAgICAgICAgLy8gcG9zaXRpb24gaXQgYW5kIHRoZSBsYWJlbHMgY29ycmVjdGx5IG9uIHRoZSBwbG90LgogICAgICAgICAgICB2YXIgZGltPTA7CiAgICAgICAgICAgIHZhciB0ZW1wOwogICAgICAgICAgICAvLyBBZGRlZCBmb3IgdGhlbWluZy4KICAgICAgICAgICAgaWYgKHRoaXMuX2VsZW0pIHsKICAgICAgICAgICAgICAgIC8vIE1lbW9yeSBMZWFrcyBwYXRjaAogICAgICAgICAgICAgICAgLy90aGlzLl9lbGVtLmVtcHR5KCk7CiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmVtcHR5Rm9yY2UoKTsKICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0gPSBudWxsOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICB0aGlzLl9lbGVtID0gJChkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uYWRkQ2xhc3MoJ2pxcGxvdC1heGlzIGpxcGxvdC0nK3RoaXMubmFtZSk7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKCdwb3NpdGlvbicsICdhYnNvbHV0ZScpOwoKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT0gJ3hheGlzJyB8fCB0aGlzLm5hbWUgPT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0ud2lkdGgodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdGhpcy5fZWxlbS5oZWlnaHQodGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0KTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gY3JlYXRlIGEgX2xhYmVsIG9iamVjdC4KICAgICAgICAgICAgdGhpcy5sYWJlbE9wdGlvbnMuYXhpcyA9IHRoaXMubmFtZTsKICAgICAgICAgICAgdGhpcy5fbGFiZWwgPSBuZXcgdGhpcy5sYWJlbFJlbmRlcmVyKHRoaXMubGFiZWxPcHRpb25zKTsKICAgICAgICAgICAgaWYgKHRoaXMuX2xhYmVsLnNob3cpIHsKICAgICAgICAgICAgICAgIHZhciBlbGVtID0gdGhpcy5fbGFiZWwuZHJhdyhjdHgsIHBsb3QpOwogICAgICAgICAgICAgICAgZWxlbS5hcHBlbmRUbyh0aGlzLl9lbGVtKTsKICAgICAgICAgICAgICAgIGVsZW0gPSBudWxsOwogICAgICAgICAgICB9CiAgICAKICAgICAgICAgICAgdmFyIHQgPSB0aGlzLl90aWNrczsKICAgICAgICAgICAgdmFyIHRpY2s7CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB0aWNrID0gdFtpXTsKICAgICAgICAgICAgICAgIGlmICh0aWNrLnNob3cgJiYgdGljay5zaG93TGFiZWwgJiYgKCF0aWNrLmlzTWlub3JUaWNrKSkgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uYXBwZW5kKHRpY2suZHJhdyhjdHgsIHBsb3QpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICB0aWNrID0gbnVsbDsKICAgICAgICAgICAgdCA9IG51bGw7CiAgICAgICAgfQogICAgICAgIHJldHVybiB0aGlzLl9lbGVtOwogICAgfTsgICAKCiAgICAvLyBOb3RlLCBwcmltZXMgY2FuIGJlIGZvdW5kIG9uIGh0dHA6Ly9wcmltZXMudXRtLmVkdS8KICAgIHZhciBfcHJpbWVzID0gWzIsIDMsIDUsIDcsIDExLCAxMywgMTcsIDE5LCAyMywgMjksIDMxLCAzNywgNDEsIDQzLCA0NywgNTMsIDU5LCA2MSwgNjcsIDcxLCA3MywgNzksIDgzLCA4OSwgOTcsIDEwMSwgMTAzLCAxMDcsIDEwOSwgMTEzLCAxMjcsIDEzMSwgMTM3LCAxMzksIDE0OSwgMTUxLCAxNTcsIDE2MywgMTY3LCAxNzMsIDE3OSwgMTgxLCAxOTEsIDE5MywgMTk3LCAxOTksIDIxMSwgMjIzLCAyMjcsIDIyOSwgMjMzLCAyMzksIDI0MSwgMjUxLCAyNTcsIDI2MywgMjY5LCAyNzEsIDI3NywgMjgxLCAyODMsIDI5MywgMzA3LCAzMTEsIDMxMywgMzE3LCAzMzEsIDMzNywgMzQ3LCAzNDksIDM1MywgMzU5LCAzNjcsIDM3MywgMzc5LCAzODMsIDM4OSwgMzk3LCA0MDEsIDQwOSwgNDE5LCA0MjEsIDQzMSwgNDMzLCA0MzksIDQ0MywgNDQ5LCA0NTcsIDQ2MSwgNDYzLCA0NjcsIDQ3OSwgNDg3LCA0OTEsIDQ5OSwgNTAzLCA1MDksIDUyMSwgNTIzLCA1NDEsIDU0NywgNTU3LCA1NjMsIDU2OSwgNTcxLCA1NzcsIDU4NywgNTkzLCA1OTksIDYwMSwgNjA3LCA2MTMsIDYxNywgNjE5LCA2MzEsIDY0MSwgNjQzLCA2NDcsIDY1MywgNjU5LCA2NjEsIDY3MywgNjc3LCA2ODMsIDY5MSwgNzAxLCA3MDksIDcxOSwgNzI3LCA3MzMsIDczOSwgNzQzLCA3NTEsIDc1NywgNzYxLCA3NjksIDc3MywgNzg3LCA3OTcsIDgwOSwgODExLCA4MjEsIDgyMywgODI3LCA4MjksIDgzOSwgODUzLCA4NTcsIDg1OSwgODYzLCA4NzcsIDg4MSwgODgzLCA4ODcsIDkwNywgOTExLCA5MTksIDkyOSwgOTM3LCA5NDEsIDk0NywgOTUzLCA5NjcsIDk3MSwgOTc3LCA5ODMsIDk5MSwgOTk3XTsKCgogICAgdmFyIF9wcmltZXNIYXNoID0ge307CgogICAgZm9yICh2YXIgaSA9MCwgbCA9IF9wcmltZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7CiAgICAgICAgX3ByaW1lc0hhc2hbX3ByaW1lc1tpXV0gPSBfcHJpbWVzW2ldOwogICAgfQoKICAgIC8vIGNhbGxlZCB3aXRoIHNjb3BlIG9mIGF4aXMKICAgICQuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXIucHJvdG90eXBlLmNyZWF0ZVRpY2tzID0gZnVuY3Rpb24ocGxvdCkgewogICAgICAgIC8vIHdlJ3JlIGFyZSBvcGVyYXRpbmcgb24gYW4gYXhpcyBoZXJlCiAgICAgICAgdmFyIHVzZXJUaWNrcyA9IHRoaXMudGlja3M7CiAgICAgICAgLy8gZGF0YWJvdW5kcyB3ZXJlIHNldCBvbiBheGlzIGluaXRpYWxpemF0aW9uLgogICAgICAgIHZhciBkYiA9IHRoaXMuX2RhdGFCb3VuZHM7CiAgICAgICAgdmFyIGRpbTsKICAgICAgICB2YXIgaW50ZXJ2YWw7CiAgICAgICAgdmFyIG1pbjsKICAgICAgICB2YXIgbWF4OwogICAgICAgIHZhciByYW5nZTsKICAgICAgICB2YXIgcG9zMTsKICAgICAgICB2YXIgcG9zMjsKICAgICAgICB2YXIgdHQ7CiAgICAgICAgdmFyIGk7CiAgICAgICAgdmFyIGw7CiAgICAgICAgdmFyIHM7CiAgICAgICAgLy8gZ2V0IGEgY29weSBvZiB1c2VyJ3Mgc2V0dGluZ3MgZm9yIG1pbi9tYXguCiAgICAgICAgdmFyIHVzZXJNaW4gPSB0aGlzLm1pbjsKICAgICAgICB2YXIgdXNlck1heCA9IHRoaXMubWF4OwogICAgICAgIHZhciB1dDsKICAgICAgICB2YXIgdDsKICAgICAgICB2YXIgdGhyZXNob2xkOwogICAgICAgIHZhciB0ZGltOwogICAgICAgIHZhciBzY2FsZWZhY3Q7CiAgICAgICAgdmFyIHJldDsKICAgICAgICB2YXIgdHVtaW47CiAgICAgICAgdmFyIHR1bWF4OwogICAgICAgIHZhciBtYXhWaXNpYmxlVGlja3M7CiAgICAgICAgdmFyIHZhbDsKICAgICAgICB2YXIgc2tpcCA9IG51bGw7CiAgICAgICAgdmFyIHRlbXA7CiAgICAgICAgCiAgICAgICAgLy8gaWYgd2UgYWxyZWFkeSBoYXZlIHRpY2tzLCB1c2UgdGhlbS4KICAgICAgICAvLyB0aWNrcyBtdXN0IGJlIGluIG9yZGVyIG9mIGluY3JlYXNpbmcgdmFsdWUuCgogICAgICAgIGlmICh1c2VyVGlja3MubGVuZ3RoKSB7CiAgICAgICAgICAgIC8vIHRpY2tzIGNvdWxkIGJlIDFEIG9yIDJEIGFycmF5IG9mIFt2YWwsIHZhbCwgLCwsXSBvciBbW3ZhbCwgbGFiZWxdLCBbdmFsLCBsYWJlbF0sIC4uLl0gb3IgbWl4ZWQKICAgICAgICAgICAgZm9yIChpPTAsIGw9dXNlclRpY2tzLmxlbmd0aDsgaTxsOyBpKyspewogICAgICAgICAgICAgICAgdXQgPSB1c2VyVGlja3NbaV07CiAgICAgICAgICAgICAgICB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwogICAgICAgICAgICAgICAgaWYgKCQuaXNBcnJheSh1dCkpIHsKICAgICAgICAgICAgICAgICAgICB0LnZhbHVlID0gdXRbMF07CiAgICAgICAgICAgICAgICAgICAgdC5sYWJlbCA9IHV0WzFdOwogICAgICAgICAgICAgICAgICAgIHQuc2V0VGljayh1dFswXSwgdGhpcy5uYW1lKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90aWNrcy5wdXNoKHQpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2UgaWYgKCQuaXNQbGFpbk9iamVjdCh1dCkpIHsKICAgICAgICAgICAgICAgICAgICAkLmV4dGVuZCh0cnVlLCB0LCB1dCk7CiAgICAgICAgICAgICAgICAgICAgdC5heGlzID0gdGhpcy5uYW1lOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdXQgPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGkgKyBwbG90LmRlZmF1bHRBeGlzU3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSB1dDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdC52YWx1ZSA9IHZhbDsKICAgICAgICAgICAgICAgICAgICB0LmxhYmVsID0gdXQ7CiAgICAgICAgICAgICAgICAgICAgdC5heGlzID0gdGhpcy5uYW1lOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnB1c2godCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IHVzZXJUaWNrcy5sZW5ndGg7CiAgICAgICAgICAgIHRoaXMubWluID0gdGhpcy5fdGlja3NbMF0udmFsdWU7CiAgICAgICAgICAgIHRoaXMubWF4ID0gdGhpcy5fdGlja3NbdGhpcy5udW1iZXJUaWNrcy0xXS52YWx1ZTsKICAgICAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSAodGhpcy5tYXggLSB0aGlzLm1pbikgLyAodGhpcy5udW1iZXJUaWNrcyAtIDEpOwoKICAgICAgICAgICAgLy8gdXNlIHVzZXIgc3BlY2lmaWVkIHRpY2tJbnRlcnZhbCBpZiB0aGVyZSBpcyBvbmUKICAgICAgICAgICAgaWYgKHRoaXMuX29wdGlvbnMudGlja0ludGVydmFsKSB7CiAgICAgICAgICAgICAgICAvLyBoaWRlIGV2ZXJ5IHRpY2sgZXhjZXB0IGZvciB0aWNrcyBvbiBpbnRlcnZhbAogICAgICAgICAgICAgICAgdmFyIHRpID0gdGhpcy5fb3B0aW9ucy50aWNrSW50ZXJ2YWw7CiAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTx0aGlzLm51bWJlclRpY2tzOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaSV0aSAhPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzLl90aWNrc1tpXS5zaG93ID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzW2ldLmlzTWlub3JUaWNrID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgd2UgaGF2ZSB0b28gbWFueSB0aWNrcwogICAgICAgICAgICAgICAgZGltID0gKHRoaXMubmFtZS5jaGFyQXQoMCkgPT09ICd4JykgPyB0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCA6IHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodDsKICAgICAgICAgICAgICAgIG1heFZpc2libGVUaWNrcyA9IE1hdGgucm91bmQoMi4wICsgZGltL3RoaXMudGlja1NwYWNpbmdGYWN0b3IpOwoKICAgICAgICAgICAgICAgIGlmICh0aGlzLm51bWJlclRpY2tzID4gbWF4VmlzaWJsZVRpY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgZm9yIG51bWJlciBvZiB0aWNrcyB3ZSBjYW4gc2tpcAogICAgICAgICAgICAgICAgICAgIHRlbXAgPSB0aGlzLm51bWJlclRpY2tzIC0gMTsKICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MjsgaTx0ZW1wOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAgJSBpID09PSAwICYmIHRlbXAvaSA8IG1heFZpc2libGVUaWNrcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcCA9IGktMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoc2tpcCAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY291bnQgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MSwgbD10aGlzLl90aWNrcy5sZW5ndGg7IGk8bDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgPD0gc2tpcCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzW2ldLnNob3cgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCArPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBpZiBjYXRlZ29yeSBzdHlsZSwgYWRkIG1pbm9yIHRpY2tzIGluIGJldHdlZW4KICAgICAgICAgICAgdGVtcCA9IFtdOwogICAgICAgICAgICBpZiAodGhpcy5jYXRlZ29yeSkgewogICAgICAgICAgICAgICAgLy8gdHVybiBvZmYgZ3JpZGxpbmUgYW5kIG1hcmsgb24gZmlyc3QgdGljawogICAgICAgICAgICAgICAgdGhpcy5fdGlja3NbMF0uc2hvd0dyaWRsaW5lID0gZmFsc2U7CiAgICAgICAgICAgICAgICB0aGlzLl90aWNrc1swXS5zaG93TWFyayA9IGZhbHNlOwoKICAgICAgICAgICAgICAgIGZvciAoaT10aGlzLl90aWNrcy5sZW5ndGgtMTsgaT4wOyBpLS0pIHsKICAgICAgICAgICAgICAgICAgICB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwogICAgICAgICAgICAgICAgICAgIHQudmFsdWUgPSB0aGlzLl90aWNrc1tpLTFdLnZhbHVlICsgdGhpcy50aWNrSW50ZXJ2YWwvMi4wOwogICAgICAgICAgICAgICAgICAgIHQubGFiZWwgPSAnJzsKICAgICAgICAgICAgICAgICAgICB0LnNob3dMYWJlbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIHQuYXhpcyA9IHRoaXMubmFtZTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90aWNrc1tpXS5zaG93R3JpZGxpbmUgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90aWNrc1tpXS5zaG93TWFyayA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnNwbGljZShpLCAwLCB0KTsKICAgICAgICAgICAgICAgICAgICAvLyB0ZW1wLnB1c2godCk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gbWVyZ2UgaW4gdGhlIG5ldyB0aWNrcwogICAgICAgICAgICAgICAgLy8gZm9yIChpPTEsIGw9dGVtcC5sZW5ndGg7IGk8bDsgaSsrKSB7CiAgICAgICAgICAgICAgICAvLyAgICAgdGhpcy5fdGlja3Muc3BsaWNlKGksIDAsIHRlbXBbaV0pOwogICAgICAgICAgICAgICAgLy8gfQoKICAgICAgICAgICAgICAgIC8vIG5vdyBhZGQgYSB0aWNrIGF0IGJlZ2lubmluZyBhbmQgZW5kCiAgICAgICAgICAgICAgICB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwogICAgICAgICAgICAgICAgdC52YWx1ZSA9IHRoaXMuX3RpY2tzWzBdLnZhbHVlIC0gdGhpcy50aWNrSW50ZXJ2YWwvMi4wOwogICAgICAgICAgICAgICAgdC5sYWJlbCA9ICcnOwogICAgICAgICAgICAgICAgdC5zaG93TGFiZWwgPSBmYWxzZTsKICAgICAgICAgICAgICAgIHQuYXhpcyA9IHRoaXMubmFtZTsKICAgICAgICAgICAgICAgIHRoaXMuX3RpY2tzLnVuc2hpZnQodCk7CgogICAgICAgICAgICAgICAgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTsKICAgICAgICAgICAgICAgIHQudmFsdWUgPSB0aGlzLl90aWNrc1t0aGlzLl90aWNrcy5sZW5ndGgtMV0udmFsdWUgKyB0aGlzLnRpY2tJbnRlcnZhbC8yLjA7CiAgICAgICAgICAgICAgICB0LmxhYmVsID0gJyc7CiAgICAgICAgICAgICAgICB0LnNob3dMYWJlbCA9IGZhbHNlOwogICAgICAgICAgICAgICAgdC5heGlzID0gdGhpcy5uYW1lOwogICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKCiAgICAgICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9IHRoaXMudGlja0ludGVydmFsIC8gMi4wOwogICAgICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IHRoaXMuX3RpY2tzLmxlbmd0aDsKICAgICAgICAgICAgICAgIHRoaXMubWluID0gdGhpcy5fdGlja3NbMF0udmFsdWU7CiAgICAgICAgICAgICAgICB0aGlzLm1heCA9IHRoaXMuX3RpY2tzW3RoaXMuX3RpY2tzLmxlbmd0aC0xXS52YWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgLy8gd2UgZG9uJ3QgaGF2ZSBhbnkgdGlja3MgeWV0LCBsZXQncyBtYWtlIHNvbWUhCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUuY2hhckF0KDApID09PSAneCcpIHsKICAgICAgICAgICAgICAgIGRpbSA9IHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoOwogICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHggYXhpcyBpcyBzeW1ldHJpYyBhYm91dCAwLgogICAgICAgICAgICAgICAgdmFyIHRlbXBtYXggPSBNYXRoLm1heChkYi5tYXgsIE1hdGguYWJzKGRiLm1pbikpOwogICAgICAgICAgICAgICAgdmFyIHRlbXBtaW4gPSBNYXRoLm1pbihkYi5taW4sIC10ZW1wbWF4KTsKICAgICAgICAgICAgICAgIC8vIG1pbiA9ICgodGhpcy5taW4gIT0gbnVsbCkgPyB0aGlzLm1pbiA6IHRlbXBtaW4pOwogICAgICAgICAgICAgICAgLy8gbWF4ID0gKCh0aGlzLm1heCAhPSBudWxsKSA/IHRoaXMubWF4IDogdGVtcG1heCk7CiAgICAgICAgICAgICAgICBtaW4gPSB0ZW1wbWluOwogICAgICAgICAgICAgICAgbWF4ID0gdGVtcG1heDsKICAgICAgICAgICAgICAgIHJhbmdlID0gbWF4IC0gbWluOwoKICAgICAgICAgICAgICAgIGlmICh0aGlzLnRpY2tPcHRpb25zID09IG51bGwgfHwgIXRoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nKSB7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcgPSB0cnVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHRocmVzaG9sZCA9IDMwOwogICAgICAgICAgICAgICAgdGRpbSA9IE1hdGgubWF4KGRpbSwgdGhyZXNob2xkKzEpOwogICAgICAgICAgICAgICAgc2NhbGVmYWN0ID0gICh0ZGltLXRocmVzaG9sZCkvMzAwLjA7CiAgICAgICAgICAgICAgICByZXQgPSAkLmpxcGxvdC5MaW5lYXJUaWNrR2VuZXJhdG9yKG1pbiwgbWF4LCBzY2FsZWZhY3QpOyAKICAgICAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSBhIHBhZGRlZCBtYXggYW5kIG1pbiwgcG9pbnRzIHNob3VsZCBiZSBsZXNzIHRoYW4gdGhlc2UKICAgICAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhleSBhcmVuJ3QgdG9vIGNsb3NlIHRvIHRoZSBlZGdlcyBvZiB0aGUgcGxvdC4KICAgICAgICAgICAgICAgIC8vIFVzZXIgY2FuIGFkanVzdCBob3cgbXVjaCBwYWRkaW5nIGlzIGFsbG93ZWQgd2l0aCBwYWQsIHBhZE1pbiBhbmQgUGFkTWF4IG9wdGlvbnMuIAogICAgICAgICAgICAgICAgdHVtaW4gPSBtaW4gKyByYW5nZSoodGhpcy5wYWRNaW4gLSAxKTsKICAgICAgICAgICAgICAgIHR1bWF4ID0gbWF4IC0gcmFuZ2UqKHRoaXMucGFkTWF4IC0gMSk7CgogICAgICAgICAgICAgICAgaWYgKG1pbiA8IHR1bWluIHx8IG1heCA+IHR1bWF4KSB7CiAgICAgICAgICAgICAgICAgICAgdHVtaW4gPSBtaW4gLSByYW5nZSoodGhpcy5wYWRNaW4gLSAxKTsKICAgICAgICAgICAgICAgICAgICB0dW1heCA9IG1heCArIHJhbmdlKih0aGlzLnBhZE1heCAtIDEpOwogICAgICAgICAgICAgICAgICAgIHJldCA9ICQuanFwbG90LkxpbmVhclRpY2tHZW5lcmF0b3IodHVtaW4sIHR1bWF4LCBzY2FsZWZhY3QpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHRoaXMubWluID0gcmV0WzBdOwogICAgICAgICAgICAgICAgdGhpcy5tYXggPSByZXRbMV07CiAgICAgICAgICAgICAgICB0aGlzLm51bWJlclRpY2tzID0gcmV0WzJdOwogICAgICAgICAgICAgICAgdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyA9IHJldFszXTsKICAgICAgICAgICAgICAgIHRoaXMudGlja0ludGVydmFsID0gcmV0WzRdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgZGltID0gdGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0OwoKICAgICAgICAgICAgICAgIC8vIHRpY2tzIHdpbGwgYmUgb24gd2hvbGUgaW50ZWdlcnMgbGlrZSAxLCAyLCAzLCAuLi4gb3IgMSwgNCwgNywgLi4uCiAgICAgICAgICAgICAgICBtaW4gPSBkYi5taW47CiAgICAgICAgICAgICAgICBtYXggPSBkYi5tYXg7CiAgICAgICAgICAgICAgICBzID0gdGhpcy5fc2VyaWVzWzBdOwogICAgICAgICAgICAgICAgdGhpcy5fdGlja3MgPSBbXTsKCiAgICAgICAgICAgICAgICByYW5nZSA9IG1heCAtIG1pbjsKCiAgICAgICAgICAgICAgICAvLyBpZiByYW5nZSBpcyBhIHByaW1lLCB3aWxsIGdldCBvbmx5IDIgdGlja3MsIGV4cGFuZCByYW5nZSBpbiB0aGF0IGNhc2UuCiAgICAgICAgICAgICAgICBpZiAoX3ByaW1lc0hhc2hbcmFuZ2VdKSB7CiAgICAgICAgICAgICAgICAgICAgcmFuZ2UgKz0gMTsKICAgICAgICAgICAgICAgICAgICBtYXggKz0gMTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB0aGlzLm1heCA9IG1heDsKICAgICAgICAgICAgICAgIHRoaXMubWluID0gbWluOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBtYXhWaXNpYmxlVGlja3MgPSBNYXRoLnJvdW5kKDIuMCArIGRpbS90aGlzLnRpY2tTcGFjaW5nRmFjdG9yKTsKCiAgICAgICAgICAgICAgICBpZiAocmFuZ2UgKyAxIDw9IG1heFZpc2libGVUaWNrcykgewogICAgICAgICAgICAgICAgICAgIHRoaXMubnVtYmVyVGlja3MgPSByYW5nZSArIDE7CiAgICAgICAgICAgICAgICAgICAgdGhpcy50aWNrSW50ZXJ2YWwgPSAxLjA7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gZmlndXJlIG91dCBhIHJvdW5kIG51bWJlciBvZiB0aWNrcyB0byBza2lwIGluIGV2ZXJ5IGludGVydmFsCiAgICAgICAgICAgICAgICAgICAgLy8gcmFuZ2UgLyB0aSArIDEgPSBudAogICAgICAgICAgICAgICAgICAgIC8vIHRpID0gcmFuZ2UgLyAobnQgLSAxKQogICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9bWF4VmlzaWJsZVRpY2tzOyBpPjE7IGktLSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAocmFuZ2UvKGkgLSAxKSA9PT0gTWF0aC5yb3VuZChyYW5nZS8oaSAtIDEpKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5udW1iZXJUaWNrcyA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRpY2tJbnRlcnZhbCA9IHJhbmdlLyhpIC0gMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZyAmJiB0aGlzLl9hdXRvRm9ybWF0U3RyaW5nICE9ICcnKSB7CiAgICAgICAgICAgICAgICB0aGlzLnRpY2tPcHRpb25zID0gdGhpcy50aWNrT3B0aW9ucyB8fCB7fTsKICAgICAgICAgICAgICAgIHRoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nID0gdGhpcy5fYXV0b0Zvcm1hdFN0cmluZzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgdmFyIGxhYmVsdmFsOwogICAgICAgICAgICBmb3IgKGk9MDsgaTx0aGlzLm51bWJlclRpY2tzOyBpKyspIHsKICAgICAgICAgICAgICAgIHRoaXMudGlja09wdGlvbnMuYXhpcyA9IHRoaXMubmFtZTsKICAgICAgICAgICAgICAgIGxhYmVsdmFsID0gdGhpcy5taW4gKyB0aGlzLnRpY2tJbnRlcnZhbCAqIGk7CiAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lLmNoYXJBdCgwKSA9PT0gJ3gnKSB7CiAgICAgICAgICAgICAgICAgICAgbGFiZWx2YWwgPSBNYXRoLmFicyhsYWJlbHZhbCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAvLyB0aGlzLnRpY2tPcHRpb25zLmxhYmVsID0gU3RyaW5nIChsYWJlbHZhbCk7CiAgICAgICAgICAgICAgICB0aGlzLnRpY2tPcHRpb25zLnZhbHVlID0gdGhpcy5taW4gKyB0aGlzLnRpY2tJbnRlcnZhbCAqIGk7CiAgICAgICAgICAgICAgICB0ID0gbmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpOwoKICAgICAgICAgICAgICAgIHQubGFiZWwgPSB0LnByZWZpeCArIHQuZm9ybWF0dGVyKHQuZm9ybWF0U3RyaW5nLCBsYWJlbHZhbCk7CgogICAgICAgICAgICAgICAgdGhpcy5fdGlja3MucHVzaCh0KTsKICAgICAgICAgICAgICAgIC8vIGZvciB4IGF4aXMsIGlmIHkgYXhpcyBpcyBpbiBtaWRkbGUsIGFkZCBhIHN5bWV0cmljYWwgMCB0aWNrCiAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lLmNoYXJBdCgwKSA9PT0gJ3gnICYmIHBsb3QuYXhlcy55TWlkQXhpcy5zaG93ICYmIHRoaXMudGlja09wdGlvbnMudmFsdWUgPT09IDApIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9zcGxpdEF4aXMgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIHRoaXMuX3NwbGl0TGVuZ3RoID0gcGxvdC5heGVzLnlNaWRBeGlzLmdldFdpZHRoKCk7CiAgICAgICAgICAgICAgICAgICAgLy8gdC52YWx1ZSA9IC10aGlzLm1heC8yMDAwLjA7CiAgICAgICAgICAgICAgICAgICAgdCA9IG5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl90aWNrcy5wdXNoKHQpOwogICAgICAgICAgICAgICAgICAgIHQudmFsdWUgPSB0aGlzLm1heC8yMDAwLjA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdCA9IG51bGw7CiAgICAgICAgfQogICAgfTsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgYXhpcwogICAgJC5qcXBsb3QuUHlyYW1pZEF4aXNSZW5kZXJlci5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24oKSB7IAogICAgICAgIHZhciBkaW0gPSAwOwogICAgICAgIHZhciB0ZW1wOwogICAgICAgIHZhciB3ID0gMDsKICAgICAgICB2YXIgaCA9IDA7CiAgICAgICAgdmFyIGk7CiAgICAgICAgdmFyIHQ7CiAgICAgICAgdmFyIHRpY2s7CiAgICAgICAgdmFyIGxzaG93ID0gKHRoaXMuX2xhYmVsID09IG51bGwpID8gZmFsc2UgOiB0aGlzLl9sYWJlbC5zaG93OwogICAgICAgIGlmICh0aGlzLnNob3cpIHsKICAgICAgICAgICAgdCA9IHRoaXMuX3RpY2tzOwogICAgICAgICAgICBsID0gdC5sZW5ndGg7CiAgICAgICAgICAgIGZvciAoaT0wOyBpPGw7IGkrKykgewogICAgICAgICAgICAgICAgdGljayA9IHRbaV07CiAgICAgICAgICAgICAgICBpZiAoIXRpY2suX2JyZWFrVGljayAmJiB0aWNrLnNob3cgJiYgdGljay5zaG93TGFiZWwgJiYgIXRpY2suaXNNaW5vclRpY2spIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lLmNoYXJBdCgwKSA9PT0gJ3gnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSB0aWNrLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGVtcCA9IHRpY2suX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAgPiBkaW0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgZGltID0gdGVtcDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT09ICd5TWlkQXhpcycpIHsKICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpPGw7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHRpY2sgPSB0W2ldOwogICAgICAgICAgICAgICAgICAgIGlmICh0aWNrLl9lbGVtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSAoZGltIC0gdGljay5fZWxlbS5vdXRlcldpZHRoKHRydWUpKS8yLjA7CiAgICAgICAgICAgICAgICAgICAgICAgIHRpY2suX2VsZW0uY3NzKCdsZWZ0JywgdGVtcCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIHRpY2sgPSBudWxsOwogICAgICAgICAgICB0ID0gbnVsbDsKICAgICAgICAgICAgCiAgICAgICAgICAgIGlmIChsc2hvdykgewogICAgICAgICAgICAgICAgdyA9IHRoaXMuX2xhYmVsLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSk7CiAgICAgICAgICAgICAgICBoID0gdGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJIZWlnaHQodHJ1ZSk7IAogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUgPT09ICd4YXhpcycpIHsKICAgICAgICAgICAgICAgIGRpbSA9IGRpbSArIGg7CiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7J2hlaWdodCc6ZGltKydweCcsIGxlZnQ6JzBweCcsIGJvdHRvbTonMHB4J30pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ3gyYXhpcycpIHsKICAgICAgICAgICAgICAgIGRpbSA9IGRpbSArIGg7CiAgICAgICAgICAgICAgICB0aGlzLl9lbGVtLmNzcyh7J2hlaWdodCc6ZGltKydweCcsIGxlZnQ6JzBweCcsIHRvcDonMHB4J30pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ3lheGlzJykgewogICAgICAgICAgICAgICAgZGltID0gZGltICsgdzsKICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHsnd2lkdGgnOmRpbSsncHgnLCBsZWZ0OicwcHgnLCB0b3A6JzBweCd9KTsKICAgICAgICAgICAgICAgIGlmIChsc2hvdyAmJiB0aGlzLl9sYWJlbC5jb25zdHJ1Y3RvciA9PSAkLmpxcGxvdC5BeGlzTGFiZWxSZW5kZXJlcikgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygnd2lkdGgnLCB3KydweCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKHRoaXMubmFtZSA9PT0gJ3lNaWRBeGlzJykgewogICAgICAgICAgICAgICAgLy8gZG9uJ3QgaW5jbHVkZSB3aWR0aCBvZiBsYWJlbCBhdCBhbGwgaW4gd2lkdGggb2YgYXhpcz8KICAgICAgICAgICAgICAgIC8vIGRpbSA9IChkaW0gPiB3KSA/IGRpbSA6IHc7CiAgICAgICAgICAgICAgICB2YXIgdGVtcCA9IGRpbS8yLjAgLSB3LzIuMDsKICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHsnd2lkdGgnOmRpbSsncHgnLCB0b3A6JzBweCd9KTsKICAgICAgICAgICAgICAgIGlmIChsc2hvdyAmJiB0aGlzLl9sYWJlbC5jb25zdHJ1Y3RvciA9PSAkLmpxcGxvdC5BeGlzTGFiZWxSZW5kZXJlcikgewogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcyh7d2lkdGg6IHcsIGxlZnQ6IHRlbXAsIHRvcDogMH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgZGltID0gZGltICsgdzsKICAgICAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHsnd2lkdGgnOmRpbSsncHgnLCByaWdodDonMHB4JywgdG9wOicwcHgnfSk7CiAgICAgICAgICAgICAgICBpZiAobHNob3cgJiYgdGhpcy5fbGFiZWwuY29uc3RydWN0b3IgPT0gJC5qcXBsb3QuQXhpc0xhYmVsUmVuZGVyZXIpIHsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5fZWxlbS5jc3MoJ3dpZHRoJywgdysncHgnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0gIAogICAgfTsKICAgIAogICAgJC5qcXBsb3QuUHlyYW1pZEF4aXNSZW5kZXJlci5wcm90b3R5cGUucGFjayA9IGZ1bmN0aW9uKHBvcywgb2Zmc2V0cykgeyAKICAgICAgICAvLyBBZGQgZGVmYXVsdHMgZm9yIHJlcGFja2luZyBmcm9tIHJlc2V0VGlja1ZhbHVlcyBmdW5jdGlvbi4KICAgICAgICBwb3MgPSBwb3MgfHwge307CiAgICAgICAgb2Zmc2V0cyA9IG9mZnNldHMgfHwgdGhpcy5fb2Zmc2V0czsKICAgICAgICAKICAgICAgICB2YXIgdGlja3MgPSB0aGlzLl90aWNrczsKICAgICAgICB2YXIgbWF4ID0gdGhpcy5tYXg7CiAgICAgICAgdmFyIG1pbiA9IHRoaXMubWluOwogICAgICAgIHZhciBvZmZtYXggPSBvZmZzZXRzLm1heDsKICAgICAgICB2YXIgb2ZmbWluID0gb2Zmc2V0cy5taW47CiAgICAgICAgdmFyIGxzaG93ID0gKHRoaXMuX2xhYmVsID09IG51bGwpID8gZmFsc2UgOiB0aGlzLl9sYWJlbC5zaG93OwogICAgICAgIAogICAgICAgIGZvciAodmFyIHAgaW4gcG9zKSB7CiAgICAgICAgICAgIHRoaXMuX2VsZW0uY3NzKHAsIHBvc1twXSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHRoaXMuX29mZnNldHMgPSBvZmZzZXRzOwogICAgICAgIC8vIHBpeGVsbGVuZ3RoIHdpbGwgYmUgKyBmb3IgeCBheGVzIGFuZCAtIGZvciB5IGF4ZXMgYmVjYXN1ZSBwaXhlbHMgYWx3YXlzIG1lYXN1cmVkIGZyb20gdG9wIGxlZnQuCiAgICAgICAgdmFyIHBpeGVsbGVuZ3RoID0gb2ZmbWF4IC0gb2ZmbWluOwogICAgICAgIHZhciB1bml0bGVuZ3RoID0gbWF4IC0gbWluOwogICAgICAgIHZhciBzbCA9IHRoaXMuX3NwbGl0TGVuZ3RoOwogICAgICAgIAogICAgICAgIC8vIHBvaW50IHRvIHVuaXQgYW5kIHVuaXQgdG8gcG9pbnQgY29udmVyc2lvbnMgcmVmZXJlbmNlcyB0byBQbG90IERPTSBlbGVtZW50IHRvcCBsZWZ0IGNvcm5lci4KICAgICAgICBpZiAodGhpcy5fc3BsaXRBeGlzKSB7CiAgICAgICAgICAgIHBpeGVsbGVuZ3RoIC09IHRoaXMuX3NwbGl0TGVuZ3RoOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gZG9uJ3Qga25vdyB0aGF0IHRoaXMgb25lIGlzIGNvcnJlY3QuCiAgICAgICAgICAgIHRoaXMucDJ1ID0gZnVuY3Rpb24ocCl7CiAgICAgICAgICAgICAgICByZXR1cm4gKHAgLSBvZmZtaW4pICogdW5pdGxlbmd0aCAvIHBpeGVsbGVuZ3RoICsgbWluOwogICAgICAgICAgICB9OwogICAgICAgIAogICAgICAgICAgICB0aGlzLnUycCA9IGZ1bmN0aW9uKHUpewogICAgICAgICAgICAgICAgaWYgKHUgPD0gMCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAodSAtIG1pbikgKiBwaXhlbGxlbmd0aCAvIHVuaXRsZW5ndGggKyBvZmZtaW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHUgLSBtaW4pICogcGl4ZWxsZW5ndGggLyB1bml0bGVuZ3RoICsgb2ZmbWluICsgc2w7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgdGhpcy5zZXJpZXNfdTJwID0gZnVuY3Rpb24odSl7CiAgICAgICAgICAgICAgICBpZiAodSA8PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh1IC0gbWluKSAqIHBpeGVsbGVuZ3RoIC8gdW5pdGxlbmd0aDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAodSAtIG1pbikgKiBwaXhlbGxlbmd0aCAvIHVuaXRsZW5ndGggKyBzbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIC8vIGRvbid0IGtub3cgdGhhdCB0aGlzIG9uZSBpcyBjb3JyZWN0LgogICAgICAgICAgICB0aGlzLnNlcmllc19wMnUgPSBmdW5jdGlvbihwKXsKICAgICAgICAgICAgICAgIHJldHVybiBwICogdW5pdGxlbmd0aCAvIHBpeGVsbGVuZ3RoICsgbWluOwogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgdGhpcy5wMnUgPSBmdW5jdGlvbihwKXsKICAgICAgICAgICAgICAgIHJldHVybiAocCAtIG9mZm1pbikgKiB1bml0bGVuZ3RoIC8gcGl4ZWxsZW5ndGggKyBtaW47CiAgICAgICAgICAgIH07CiAgICAgICAgCiAgICAgICAgICAgIHRoaXMudTJwID0gZnVuY3Rpb24odSl7CiAgICAgICAgICAgICAgICByZXR1cm4gKHUgLSBtaW4pICogcGl4ZWxsZW5ndGggLyB1bml0bGVuZ3RoICsgb2ZmbWluOwogICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUuY2hhckF0KDApID09PSAneCcpewogICAgICAgICAgICAgICAgdGhpcy5zZXJpZXNfdTJwID0gZnVuY3Rpb24odSl7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICh1IC0gbWluKSAqIHBpeGVsbGVuZ3RoIC8gdW5pdGxlbmd0aDsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc19wMnUgPSBmdW5jdGlvbihwKXsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gcCAqIHVuaXRsZW5ndGggLyBwaXhlbGxlbmd0aCArIG1pbjsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB0aGlzLnNlcmllc191MnAgPSBmdW5jdGlvbih1KXsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gKHUgLSBtYXgpICogcGl4ZWxsZW5ndGggLyB1bml0bGVuZ3RoOwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIHRoaXMuc2VyaWVzX3AydSA9IGZ1bmN0aW9uKHApewogICAgICAgICAgICAgICAgICAgIHJldHVybiBwICogdW5pdGxlbmd0aCAvIHBpeGVsbGVuZ3RoICsgbWF4OwogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAodGhpcy5zaG93KSB7CiAgICAgICAgICAgIGlmICh0aGlzLm5hbWUuY2hhckF0KDApID09PSAneCcpIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGlja3NbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvdyAmJiB0LnNob3dMYWJlbCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2hpbTsKICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LmNvbnN0cnVjdG9yID09ICQuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIgJiYgdC5hbmdsZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2lsbCBuZWVkIHRvIGFkanVzdCBhdXRvIHBvc2l0aW9uaW5nIGJhc2VkIG9uIHdoaWNoIGF4aXMgdGhpcyBpcy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ZW1wID0gKHRoaXMubmFtZSA9PSAneGF4aXMnKSA/IDEgOiAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodC5sYWJlbFBvc2l0aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnYXV0byc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBvc2l0aW9uIGF0IGVuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVtcCAqIHQuYW5nbGUgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0V2lkdGgoKSArIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbigtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9zaXRpb24gYXQgc3RhcnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbih0Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdlbmQnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0V2lkdGgoKSArIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbigtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5zaW4odC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ21pZGRsZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoaW0gPSAtdC5nZXRXaWR0aCgpLzIgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5zaW4oLXQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0V2lkdGgoKS8yICsgdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguc2luKC10Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0V2lkdGgoKS8yOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSB0aGlzLnUycCh0LnZhbHVlKSArIHNoaW0gKyAncHgnOwogICAgICAgICAgICAgICAgICAgICAgICB0Ll9lbGVtLmNzcygnbGVmdCcsIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHQucGFjaygpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChsc2hvdykgewogICAgICAgICAgICAgICAgICAgIHZhciB3ID0gdGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTsKICAgICAgICAgICAgICAgICAgICB0aGlzLl9sYWJlbC5fZWxlbS5jc3MoJ2xlZnQnLCBvZmZtaW4gKyBwaXhlbGxlbmd0aC8yIC0gdy8yICsgJ3B4Jyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubmFtZSA9PSAneGF4aXMnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygnYm90dG9tJywgJzBweCcpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCd0b3AnLCAnMHB4Jyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLnBhY2soKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aWNrcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGlja3NbaV07CiAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvdyAmJiB0LnNob3dMYWJlbCAmJiAhdC5pc01pbm9yVGljaykgeyAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2hpbTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuY29uc3RydWN0b3IgPT0gJC5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciAmJiB0LmFuZ2xlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aWxsIG5lZWQgdG8gYWRqdXN0IGF1dG8gcG9zaXRpb25pbmcgYmFzZWQgb24gd2hpY2ggYXhpcyB0aGlzIGlzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRlbXAgPSAodGhpcy5uYW1lID09ICd5YXhpcycpID8gMSA6IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh0LmxhYmVsUG9zaXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdhdXRvJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcG9zaXRpb24gYXQgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZW5kJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXAgKiB0LmFuZ2xlIDwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5jb3MoLXQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldEhlaWdodCgpICsgdC5fdGV4dFJlbmRlcmVyLmhlaWdodCAqIE1hdGguY29zKHQuX3RleHRSZW5kZXJlci5hbmdsZSkgLyAyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3N0YXJ0JzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuYW5nbGUgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLmNvcygtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkgKyB0Ll90ZXh0UmVuZGVyZXIuaGVpZ2h0ICogTWF0aC5jb3ModC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnbWlkZGxlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgKHQuYW5nbGUgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkvMiArIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbigtdC5fdGV4dFJlbmRlcmVyLmFuZ2xlKSAvIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkvMiAtIHQuX3RleHRSZW5kZXJlci5oZWlnaHQgKiBNYXRoLnNpbih0Ll90ZXh0UmVuZGVyZXIuYW5nbGUpIC8gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGltID0gLXQuZ2V0SGVpZ2h0KCkvMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldEhlaWdodCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hpbSA9IC10LmdldEhlaWdodCgpLzI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSB0aGlzLnUycCh0LnZhbHVlKSArIHNoaW0gKyAncHgnOwogICAgICAgICAgICAgICAgICAgICAgICB0Ll9lbGVtLmNzcygndG9wJywgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgdC5wYWNrKCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKGxzaG93KSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGggPSB0aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lICE9PSAneU1pZEF4aXMnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2xhYmVsLl9lbGVtLmNzcygndG9wJywgb2ZmbWF4IC0gcGl4ZWxsZW5ndGgvMiAtIGgvMiArICdweCcpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5uYW1lID09ICd5YXhpcycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCdsZWZ0JywgJzBweCcpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICh0aGlzLm5hbWUgIT09ICd5TWlkQXhpcycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwuX2VsZW0uY3NzKCdyaWdodCcsICcwcHgnKTsKICAgICAgICAgICAgICAgICAgICB9ICAgCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fbGFiZWwucGFjaygpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB0aWNrcyA9IG51bGw7CiAgICB9Owp9KShqUXVlcnkpOwo=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.pyramidAxisRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGUpe2UuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXI9ZnVuY3Rpb24oKXtlLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIuY2FsbCh0aGlzKX07ZS5qcXBsb3QuUHlyYW1pZEF4aXNSZW5kZXJlci5wcm90b3R5cGU9bmV3IGUuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlcigpO2UuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXI7ZS5qcXBsb3QuUHlyYW1pZEF4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihmKXt0aGlzLnBvc2l0aW9uPW51bGw7dGhpcy5kcmF3QmFzZWxpbmU9dHJ1ZTt0aGlzLmJhc2VsaW5lV2lkdGg9bnVsbDt0aGlzLmJhc2VsaW5lQ29sb3I9bnVsbDt0aGlzLnRpY2tTcGFjaW5nRmFjdG9yPTI1O3RoaXMuX3R5cGU9InB5cmFtaWQiO3RoaXMuX3NwbGl0QXhpcz1mYWxzZTt0aGlzLl9zcGxpdExlbmd0aD1udWxsO3RoaXMuY2F0ZWdvcnk9ZmFsc2U7dGhpcy5fYXV0b0Zvcm1hdFN0cmluZz0iIjt0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZz1mYWxzZTtlLmV4dGVuZCh0cnVlLHRoaXMsZik7dGhpcy5yZW5kZXJlci5vcHRpb25zPWY7dGhpcy5yZXNldERhdGFCb3VuZHM9dGhpcy5yZW5kZXJlci5yZXNldERhdGFCb3VuZHM7dGhpcy5yZXNldERhdGFCb3VuZHMoKX07ZS5qcXBsb3QuUHlyYW1pZEF4aXNSZW5kZXJlci5wcm90b3R5cGUucmVzZXREYXRhQm91bmRzPWZ1bmN0aW9uKCl7dmFyIGg9dGhpcy5fZGF0YUJvdW5kcztoLm1pbj1udWxsO2gubWF4PW51bGw7dmFyIGc7Zm9yKHZhciBtPTA7bTx0aGlzLl9zZXJpZXMubGVuZ3RoO20rKyl7dmFyIG49dGhpcy5fc2VyaWVzW21dO3ZhciBvPW4uX3Bsb3REYXRhO2Zvcih2YXIgaz0wLGY9by5sZW5ndGg7azxmO2srKyl7aWYodGhpcy5uYW1lLmNoYXJBdCgwKT09PSJ4Iil7Zz1vW2tdWzFdO2lmKChnIT09bnVsbCYmZzxoLm1pbil8fGgubWluPT09bnVsbCl7aC5taW49Z31pZigoZyE9PW51bGwmJmc+aC5tYXgpfHxoLm1heD09PW51bGwpe2gubWF4PWd9fWVsc2V7Zz1vW2tdWzBdO2lmKChnIT09bnVsbCYmZzxoLm1pbil8fGgubWluPT09bnVsbCl7aC5taW49Z31pZigoZyE9PW51bGwmJmc+aC5tYXgpfHxoLm1heD09PW51bGwpe2gubWF4PWd9fX19fTtlLmpxcGxvdC5QeXJhbWlkQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKGYsbil7aWYodGhpcy5zaG93KXt0aGlzLnJlbmRlcmVyLmNyZWF0ZVRpY2tzLmNhbGwodGhpcyxuKTt2YXIgbT0wO3ZhciBnO2lmKHRoaXMuX2VsZW0pe3RoaXMuX2VsZW0uZW1wdHlGb3JjZSgpO3RoaXMuX2VsZW09bnVsbH10aGlzLl9lbGVtPWUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpO3RoaXMuX2VsZW0uYWRkQ2xhc3MoImpxcGxvdC1heGlzIGpxcGxvdC0iK3RoaXMubmFtZSk7dGhpcy5fZWxlbS5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKTtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe3RoaXMuX2VsZW0ud2lkdGgodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgpfWVsc2V7dGhpcy5fZWxlbS5oZWlnaHQodGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0KX10aGlzLmxhYmVsT3B0aW9ucy5heGlzPXRoaXMubmFtZTt0aGlzLl9sYWJlbD1uZXcgdGhpcy5sYWJlbFJlbmRlcmVyKHRoaXMubGFiZWxPcHRpb25zKTtpZih0aGlzLl9sYWJlbC5zaG93KXt2YXIgbD10aGlzLl9sYWJlbC5kcmF3KGYsbik7bC5hcHBlbmRUbyh0aGlzLl9lbGVtKTtsPW51bGx9dmFyIGs9dGhpcy5fdGlja3M7dmFyIGo7Zm9yKHZhciBoPTA7aDxrLmxlbmd0aDtoKyspe2o9a1toXTtpZihqLnNob3cmJmouc2hvd0xhYmVsJiYoIWouaXNNaW5vclRpY2spKXt0aGlzLl9lbGVtLmFwcGVuZChqLmRyYXcoZixuKSl9fWo9bnVsbDtrPW51bGx9cmV0dXJuIHRoaXMuX2VsZW19O3ZhciBiPVsyLDMsNSw3LDExLDEzLDE3LDE5LDIzLDI5LDMxLDM3LDQxLDQzLDQ3LDUzLDU5LDYxLDY3LDcxLDczLDc5LDgzLDg5LDk3LDEwMSwxMDMsMTA3LDEwOSwxMTMsMTI3LDEzMSwxMzcsMTM5LDE0OSwxNTEsMTU3LDE2MywxNjcsMTczLDE3OSwxODEsMTkxLDE5MywxOTcsMTk5LDIxMSwyMjMsMjI3LDIyOSwyMzMsMjM5LDI0MSwyNTEsMjU3LDI2MywyNjksMjcxLDI3NywyODEsMjgzLDI5MywzMDcsMzExLDMxMywzMTcsMzMxLDMzNywzNDcsMzQ5LDM1MywzNTksMzY3LDM3MywzNzksMzgzLDM4OSwzOTcsNDAxLDQwOSw0MTksNDIxLDQzMSw0MzMsNDM5LDQ0Myw0NDksNDU3LDQ2MSw0NjMsNDY3LDQ3OSw0ODcsNDkxLDQ5OSw1MDMsNTA5LDUyMSw1MjMsNTQxLDU0Nyw1NTcsNTYzLDU2OSw1NzEsNTc3LDU4Nyw1OTMsNTk5LDYwMSw2MDcsNjEzLDYxNyw2MTksNjMxLDY0MSw2NDMsNjQ3LDY1Myw2NTksNjYxLDY3Myw2NzcsNjgzLDY5MSw3MDEsNzA5LDcxOSw3MjcsNzMzLDczOSw3NDMsNzUxLDc1Nyw3NjEsNzY5LDc3Myw3ODcsNzk3LDgwOSw4MTEsODIxLDgyMyw4MjcsODI5LDgzOSw4NTMsODU3LDg1OSw4NjMsODc3LDg4MSw4ODMsODg3LDkwNyw5MTEsOTE5LDkyOSw5MzcsOTQxLDk0Nyw5NTMsOTY3LDk3MSw5NzcsOTgzLDk5MSw5OTddO3ZhciBkPXt9O2Zvcih2YXIgYz0wLGE9Yi5sZW5ndGg7YzxhO2MrKyl7ZFtiW2NdXT1iW2NdfWUuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXIucHJvdG90eXBlLmNyZWF0ZVRpY2tzPWZ1bmN0aW9uKEQpe3ZhciBKPXRoaXMudGlja3M7dmFyIE09dGhpcy5fZGF0YUJvdW5kczt2YXIgRTt2YXIgSzt2YXIgQjt2YXIgRzt2YXIgeTt2YXIgbjt2YXIgazt2YXIgaDt2YXIgSDt2YXIgQzt2YXIgeDt2YXIgTD10aGlzLm1pbjt2YXIgTj10aGlzLm1heDt2YXIgcTt2YXIgdjt2YXIgbTt2YXIgZzt2YXIgajt2YXIgTzt2YXIgQTt2YXIgRjt2YXIgcjt2YXIgUDt2YXIgej1udWxsO3ZhciBJO2lmKEoubGVuZ3RoKXtmb3IoSD0wLEM9Si5sZW5ndGg7SDxDO0grKyl7cT1KW0hdO3Y9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2lmKGUuaXNBcnJheShxKSl7di52YWx1ZT1xWzBdO3YubGFiZWw9cVsxXTt2LnNldFRpY2socVswXSx0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2godil9ZWxzZXtpZihlLmlzUGxhaW5PYmplY3QocSkpe2UuZXh0ZW5kKHRydWUsdixxKTt2LmF4aXM9dGhpcy5uYW1lO3RoaXMuX3RpY2tzLnB1c2godil9ZWxzZXtpZih0eXBlb2YgcT09PSJzdHJpbmciKXtQPUgrRC5kZWZhdWx0QXhpc1N0YXJ0fWVsc2V7UD1xfXYudmFsdWU9UDt2LmxhYmVsPXE7di5heGlzPXRoaXMubmFtZTt0aGlzLl90aWNrcy5wdXNoKHYpfX19dGhpcy5udW1iZXJUaWNrcz1KLmxlbmd0aDt0aGlzLm1pbj10aGlzLl90aWNrc1swXS52YWx1ZTt0aGlzLm1heD10aGlzLl90aWNrc1t0aGlzLm51bWJlclRpY2tzLTFdLnZhbHVlO3RoaXMudGlja0ludGVydmFsPSh0aGlzLm1heC10aGlzLm1pbikvKHRoaXMubnVtYmVyVGlja3MtMSk7aWYodGhpcy5fb3B0aW9ucy50aWNrSW50ZXJ2YWwpe3ZhciBvPXRoaXMuX29wdGlvbnMudGlja0ludGVydmFsO2ZvcihIPTA7SDx0aGlzLm51bWJlclRpY2tzO0grKyl7aWYoSCVvIT09MCl7dGhpcy5fdGlja3NbSF0uaXNNaW5vclRpY2s9dHJ1ZX19fWVsc2V7RT0odGhpcy5uYW1lLmNoYXJBdCgwKT09PSJ4Iik/dGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGg6dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0O3I9TWF0aC5yb3VuZCgyK0UvdGhpcy50aWNrU3BhY2luZ0ZhY3Rvcik7aWYodGhpcy5udW1iZXJUaWNrcz5yKXtJPXRoaXMubnVtYmVyVGlja3MtMTtmb3IoSD0yO0g8STtIKyspe2lmKEklSD09PTAmJkkvSDxyKXt6PUgtMTticmVha319aWYoeiE9PW51bGwpe3ZhciBwPTE7Zm9yKEg9MSxDPXRoaXMuX3RpY2tzLmxlbmd0aDtIPEM7SCsrKXtpZihwPD16KXt0aGlzLl90aWNrc1tIXS5zaG93PWZhbHNlO3ArPTF9ZWxzZXtwPTF9fX19fUk9W107aWYodGhpcy5jYXRlZ29yeSl7dGhpcy5fdGlja3NbMF0uc2hvd0dyaWRsaW5lPWZhbHNlO3RoaXMuX3RpY2tzWzBdLnNob3dNYXJrPWZhbHNlO2ZvcihIPXRoaXMuX3RpY2tzLmxlbmd0aC0xO0g+MDtILS0pe3Y9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO3YudmFsdWU9dGhpcy5fdGlja3NbSC0xXS52YWx1ZSt0aGlzLnRpY2tJbnRlcnZhbC8yO3YubGFiZWw9IiI7di5zaG93TGFiZWw9ZmFsc2U7di5heGlzPXRoaXMubmFtZTt0aGlzLl90aWNrc1tIXS5zaG93R3JpZGxpbmU9ZmFsc2U7dGhpcy5fdGlja3NbSF0uc2hvd01hcms9ZmFsc2U7dGhpcy5fdGlja3Muc3BsaWNlKEgsMCx2KX12PW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTt2LnZhbHVlPXRoaXMuX3RpY2tzWzBdLnZhbHVlLXRoaXMudGlja0ludGVydmFsLzI7di5sYWJlbD0iIjt2LnNob3dMYWJlbD1mYWxzZTt2LmF4aXM9dGhpcy5uYW1lO3RoaXMuX3RpY2tzLnVuc2hpZnQodik7dj1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7di52YWx1ZT10aGlzLl90aWNrc1t0aGlzLl90aWNrcy5sZW5ndGgtMV0udmFsdWUrdGhpcy50aWNrSW50ZXJ2YWwvMjt2LmxhYmVsPSIiO3Yuc2hvd0xhYmVsPWZhbHNlO3YuYXhpcz10aGlzLm5hbWU7dGhpcy5fdGlja3MucHVzaCh2KTt0aGlzLnRpY2tJbnRlcnZhbD10aGlzLnRpY2tJbnRlcnZhbC8yO3RoaXMubnVtYmVyVGlja3M9dGhpcy5fdGlja3MubGVuZ3RoO3RoaXMubWluPXRoaXMuX3RpY2tzWzBdLnZhbHVlO3RoaXMubWF4PXRoaXMuX3RpY2tzW3RoaXMuX3RpY2tzLmxlbmd0aC0xXS52YWx1ZX19ZWxzZXtpZih0aGlzLm5hbWUuY2hhckF0KDApPT09IngiKXtFPXRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoO3ZhciB3PU1hdGgubWF4KE0ubWF4LE1hdGguYWJzKE0ubWluKSk7dmFyIHU9TWF0aC5taW4oTS5taW4sLXcpO0I9dTtHPXc7eT1HLUI7aWYodGhpcy50aWNrT3B0aW9ucz09bnVsbHx8IXRoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nKXt0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZz10cnVlfW09MzA7Zz1NYXRoLm1heChFLG0rMSk7aj0oZy1tKS8zMDA7Tz1lLmpxcGxvdC5MaW5lYXJUaWNrR2VuZXJhdG9yKEIsRyxqKTtBPUIreSoodGhpcy5wYWRNaW4tMSk7Rj1HLXkqKHRoaXMucGFkTWF4LTEpO2lmKEI8QXx8Rz5GKXtBPUIteSoodGhpcy5wYWRNaW4tMSk7Rj1HK3kqKHRoaXMucGFkTWF4LTEpO089ZS5qcXBsb3QuTGluZWFyVGlja0dlbmVyYXRvcihBLEYsail9dGhpcy5taW49T1swXTt0aGlzLm1heD1PWzFdO3RoaXMubnVtYmVyVGlja3M9T1syXTt0aGlzLl9hdXRvRm9ybWF0U3RyaW5nPU9bM107dGhpcy50aWNrSW50ZXJ2YWw9T1s0XX1lbHNle0U9dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0O0I9TS5taW47Rz1NLm1heDt4PXRoaXMuX3Nlcmllc1swXTt0aGlzLl90aWNrcz1bXTt5PUctQjtpZihkW3ldKXt5Kz0xO0crPTF9dGhpcy5tYXg9Rzt0aGlzLm1pbj1CO3I9TWF0aC5yb3VuZCgyK0UvdGhpcy50aWNrU3BhY2luZ0ZhY3Rvcik7aWYoeSsxPD1yKXt0aGlzLm51bWJlclRpY2tzPXkrMTt0aGlzLnRpY2tJbnRlcnZhbD0xfWVsc2V7Zm9yKHZhciBIPXI7SD4xO0gtLSl7aWYoeS8oSC0xKT09PU1hdGgucm91bmQoeS8oSC0xKSkpe3RoaXMubnVtYmVyVGlja3M9SDt0aGlzLnRpY2tJbnRlcnZhbD15LyhILTEpO2JyZWFrfX19fWlmKHRoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nJiZ0aGlzLl9hdXRvRm9ybWF0U3RyaW5nIT0iIil7dGhpcy50aWNrT3B0aW9ucz10aGlzLnRpY2tPcHRpb25zfHx7fTt0aGlzLnRpY2tPcHRpb25zLmZvcm1hdFN0cmluZz10aGlzLl9hdXRvRm9ybWF0U3RyaW5nfXZhciBmO2ZvcihIPTA7SDx0aGlzLm51bWJlclRpY2tzO0grKyl7dGhpcy50aWNrT3B0aW9ucy5heGlzPXRoaXMubmFtZTtmPXRoaXMubWluK3RoaXMudGlja0ludGVydmFsKkg7aWYodGhpcy5uYW1lLmNoYXJBdCgwKT09PSJ4Iil7Zj1NYXRoLmFicyhmKX10aGlzLnRpY2tPcHRpb25zLnZhbHVlPXRoaXMubWluK3RoaXMudGlja0ludGVydmFsKkg7dj1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7di5sYWJlbD12LnByZWZpeCt2LmZvcm1hdHRlcih2LmZvcm1hdFN0cmluZyxmKTt0aGlzLl90aWNrcy5wdXNoKHYpO2lmKHRoaXMubmFtZS5jaGFyQXQoMCk9PT0ieCImJkQuYXhlcy55TWlkQXhpcy5zaG93JiZ0aGlzLnRpY2tPcHRpb25zLnZhbHVlPT09MCl7dGhpcy5fc3BsaXRBeGlzPXRydWU7dGhpcy5fc3BsaXRMZW5ndGg9RC5heGVzLnlNaWRBeGlzLmdldFdpZHRoKCk7dj1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7dGhpcy5fdGlja3MucHVzaCh2KTt2LnZhbHVlPXRoaXMubWF4LzIwMDB9fXY9bnVsbH19O2UuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXIucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe3ZhciBvPTA7dmFyIGo7dmFyIGc9MDt2YXIgbj0wO3ZhciBtO3ZhciBsO3ZhciBrO3ZhciBmPSh0aGlzLl9sYWJlbD09bnVsbCk/ZmFsc2U6dGhpcy5fbGFiZWwuc2hvdztpZih0aGlzLnNob3cpe2w9dGhpcy5fdGlja3M7YT1sLmxlbmd0aDtmb3IobT0wO208YTttKyspe2s9bFttXTtpZighay5fYnJlYWtUaWNrJiZrLnNob3cmJmsuc2hvd0xhYmVsJiYhay5pc01pbm9yVGljayl7aWYodGhpcy5uYW1lLmNoYXJBdCgwKT09PSJ4Iil7aj1rLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpfWVsc2V7aj1rLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSl9aWYoaj5vKXtvPWp9fX1pZih0aGlzLm5hbWU9PT0ieU1pZEF4aXMiKXtmb3IobT0wO208YTttKyspe2s9bFttXTtpZihrLl9lbGVtKXtqPShvLWsuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKSkvMjtrLl9lbGVtLmNzcygibGVmdCIsail9fX1rPW51bGw7bD1udWxsO2lmKGYpe2c9dGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTtuPXRoaXMuX2xhYmVsLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpfWlmKHRoaXMubmFtZT09PSJ4YXhpcyIpe289bytuO3RoaXMuX2VsZW0uY3NzKHtoZWlnaHQ6bysicHgiLGxlZnQ6IjBweCIsYm90dG9tOiIwcHgifSl9ZWxzZXtpZih0aGlzLm5hbWU9PT0ieDJheGlzIil7bz1vK247dGhpcy5fZWxlbS5jc3Moe2hlaWdodDpvKyJweCIsbGVmdDoiMHB4Iix0b3A6IjBweCJ9KX1lbHNle2lmKHRoaXMubmFtZT09PSJ5YXhpcyIpe289bytnO3RoaXMuX2VsZW0uY3NzKHt3aWR0aDpvKyJweCIsbGVmdDoiMHB4Iix0b3A6IjBweCJ9KTtpZihmJiZ0aGlzLl9sYWJlbC5jb25zdHJ1Y3Rvcj09ZS5qcXBsb3QuQXhpc0xhYmVsUmVuZGVyZXIpe3RoaXMuX2xhYmVsLl9lbGVtLmNzcygid2lkdGgiLGcrInB4Iil9fWVsc2V7aWYodGhpcy5uYW1lPT09InlNaWRBeGlzIil7dmFyIGo9by8yLWcvMjt0aGlzLl9lbGVtLmNzcyh7d2lkdGg6bysicHgiLHRvcDoiMHB4In0pO2lmKGYmJnRoaXMuX2xhYmVsLmNvbnN0cnVjdG9yPT1lLmpxcGxvdC5BeGlzTGFiZWxSZW5kZXJlcil7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKHt3aWR0aDpnLGxlZnQ6aix0b3A6MH0pfX1lbHNle289bytnO3RoaXMuX2VsZW0uY3NzKHt3aWR0aDpvKyJweCIscmlnaHQ6IjBweCIsdG9wOiIwcHgifSk7aWYoZiYmdGhpcy5fbGFiZWwuY29uc3RydWN0b3I9PWUuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoIndpZHRoIixnKyJweCIpfX19fX19fTtlLmpxcGxvdC5QeXJhbWlkQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5wYWNrPWZ1bmN0aW9uKGosZyl7aj1qfHx7fTtnPWd8fHRoaXMuX29mZnNldHM7dmFyIEI9dGhpcy5fdGlja3M7dmFyIHY9dGhpcy5tYXg7dmFyIHU9dGhpcy5taW47dmFyIG89Zy5tYXg7dmFyIG09Zy5taW47dmFyIHI9KHRoaXMuX2xhYmVsPT1udWxsKT9mYWxzZTp0aGlzLl9sYWJlbC5zaG93O2Zvcih2YXIgcyBpbiBqKXt0aGlzLl9lbGVtLmNzcyhzLGpbc10pfXRoaXMuX29mZnNldHM9Zzt2YXIgaz1vLW07dmFyIGw9di11O3ZhciB6PXRoaXMuX3NwbGl0TGVuZ3RoO2lmKHRoaXMuX3NwbGl0QXhpcyl7ay09dGhpcy5fc3BsaXRMZW5ndGg7dGhpcy5wMnU9ZnVuY3Rpb24oaCl7cmV0dXJuKGgtbSkqbC9rK3V9O3RoaXMudTJwPWZ1bmN0aW9uKGgpe2lmKGg8PTApe3JldHVybihoLXUpKmsvbCttfWVsc2V7cmV0dXJuKGgtdSkqay9sK20ren19O3RoaXMuc2VyaWVzX3UycD1mdW5jdGlvbihoKXtpZihoPD0wKXtyZXR1cm4oaC11KSprL2x9ZWxzZXtyZXR1cm4oaC11KSprL2wren19O3RoaXMuc2VyaWVzX3AydT1mdW5jdGlvbihoKXtyZXR1cm4gaCpsL2srdX19ZWxzZXt0aGlzLnAydT1mdW5jdGlvbihoKXtyZXR1cm4oaC1tKSpsL2srdX07dGhpcy51MnA9ZnVuY3Rpb24oaCl7cmV0dXJuKGgtdSkqay9sK219O2lmKHRoaXMubmFtZS5jaGFyQXQoMCk9PT0ieCIpe3RoaXMuc2VyaWVzX3UycD1mdW5jdGlvbihoKXtyZXR1cm4oaC11KSprL2x9O3RoaXMuc2VyaWVzX3AydT1mdW5jdGlvbihoKXtyZXR1cm4gaCpsL2srdX19ZWxzZXt0aGlzLnNlcmllc191MnA9ZnVuY3Rpb24oaCl7cmV0dXJuKGgtdikqay9sfTt0aGlzLnNlcmllc19wMnU9ZnVuY3Rpb24oaCl7cmV0dXJuIGgqbC9rK3Z9fX1pZih0aGlzLnNob3cpe2lmKHRoaXMubmFtZS5jaGFyQXQoMCk9PT0ieCIpe2Zvcih2YXIgeD0wO3g8Qi5sZW5ndGg7eCsrKXt2YXIgcT1CW3hdO2lmKHEuc2hvdyYmcS5zaG93TGFiZWwpe3ZhciBmO2lmKHEuY29uc3RydWN0b3I9PWUuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXImJnEuYW5nbGUpe3ZhciBBPSh0aGlzLm5hbWU9PSJ4YXhpcyIpPzE6LTE7c3dpdGNoKHEubGFiZWxQb3NpdGlvbil7Y2FzZSJhdXRvIjppZihBKnEuYW5nbGU8MCl7Zj0tcS5nZXRXaWR0aCgpK3EuX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4oLXEuX3RleHRSZW5kZXJlci5hbmdsZSkvMn1lbHNle2Y9LXEuX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4ocS5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWJyZWFrO2Nhc2UiZW5kIjpmPS1xLmdldFdpZHRoKCkrcS5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbigtcS5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yO2JyZWFrO2Nhc2Uic3RhcnQiOmY9LXEuX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4ocS5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yO2JyZWFrO2Nhc2UibWlkZGxlIjpmPS1xLmdldFdpZHRoKCkvMitxLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKC1xLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzI7YnJlYWs7ZGVmYXVsdDpmPS1xLmdldFdpZHRoKCkvMitxLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKC1xLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzI7YnJlYWt9fWVsc2V7Zj0tcS5nZXRXaWR0aCgpLzJ9dmFyIEM9dGhpcy51MnAocS52YWx1ZSkrZisicHgiO3EuX2VsZW0uY3NzKCJsZWZ0IixDKTtxLnBhY2soKX19aWYocil7dmFyIG49dGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoImxlZnQiLG0ray8yLW4vMisicHgiKTtpZih0aGlzLm5hbWU9PSJ4YXhpcyIpe3RoaXMuX2xhYmVsLl9lbGVtLmNzcygiYm90dG9tIiwiMHB4Iil9ZWxzZXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoInRvcCIsIjBweCIpfXRoaXMuX2xhYmVsLnBhY2soKX19ZWxzZXtmb3IodmFyIHg9MDt4PEIubGVuZ3RoO3grKyl7dmFyIHE9Qlt4XTtpZihxLnNob3cmJnEuc2hvd0xhYmVsJiYhcS5pc01pbm9yVGljayl7dmFyIGY7aWYocS5jb25zdHJ1Y3Rvcj09ZS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciYmcS5hbmdsZSl7dmFyIEE9KHRoaXMubmFtZT09InlheGlzIik/MTotMTtzd2l0Y2gocS5sYWJlbFBvc2l0aW9uKXtjYXNlImF1dG8iOmNhc2UiZW5kIjppZihBKnEuYW5nbGU8MCl7Zj0tcS5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLmNvcygtcS5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWVsc2V7Zj0tcS5nZXRIZWlnaHQoKStxLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguY29zKHEuX3RleHRSZW5kZXJlci5hbmdsZSkvMn1icmVhaztjYXNlInN0YXJ0IjppZihxLmFuZ2xlPjApe2Y9LXEuX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5jb3MoLXEuX3RleHRSZW5kZXJlci5hbmdsZSkvMn1lbHNle2Y9LXEuZ2V0SGVpZ2h0KCkrcS5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLmNvcyhxLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9YnJlYWs7Y2FzZSJtaWRkbGUiOmY9LXEuZ2V0SGVpZ2h0KCkvMjticmVhaztkZWZhdWx0OmY9LXEuZ2V0SGVpZ2h0KCkvMjticmVha319ZWxzZXtmPS1xLmdldEhlaWdodCgpLzJ9dmFyIEM9dGhpcy51MnAocS52YWx1ZSkrZisicHgiO3EuX2VsZW0uY3NzKCJ0b3AiLEMpO3EucGFjaygpfX1pZihyKXt2YXIgeT10aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKTtpZih0aGlzLm5hbWUhPT0ieU1pZEF4aXMiKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoInRvcCIsby1rLzIteS8yKyJweCIpfWlmKHRoaXMubmFtZT09InlheGlzIil7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJsZWZ0IiwiMHB4Iil9ZWxzZXtpZih0aGlzLm5hbWUhPT0ieU1pZEF4aXMiKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoInJpZ2h0IiwiMHB4Iil9fXRoaXMuX2xhYmVsLnBhY2soKX19fUI9bnVsbH19KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.pyramidGridRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgeyAgICAgCiAgICAvLyBDbGFzczogJC5qcXBsb3QuQ2FudmFzR3JpZFJlbmRlcmVyCiAgICAvLyBUaGUgZGVmYXVsdCBqcVBsb3QgZ3JpZCByZW5kZXJlciwgY3JlYXRpbmcgYSBncmlkIG9uIGEgY2FudmFzIGVsZW1lbnQuCiAgICAvLyBUaGUgcmVuZGVyZXIgaGFzIG5vIGFkZGl0aW9uYWwgb3B0aW9ucyBiZXlvbmQgdGhlIDxHcmlkPiBjbGFzcy4KICAgICQuanFwbG90LlB5cmFtaWRHcmlkUmVuZGVyZXIgPSBmdW5jdGlvbigpewogICAgICAgICQuanFwbG90LkNhbnZhc0dyaWRSZW5kZXJlci5jYWxsKHRoaXMpOwogICAgfTsKCiAgICAkLmpxcGxvdC5QeXJhbWlkR3JpZFJlbmRlcmVyLnByb3RvdHlwZSA9IG5ldyAkLmpxcGxvdC5DYW52YXNHcmlkUmVuZGVyZXIoKTsKICAgICQuanFwbG90LlB5cmFtaWRHcmlkUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuUHlyYW1pZEdyaWRSZW5kZXJlcjsKICAgIAogICAgLy8gY2FsbGVkIHdpdGggY29udGV4dCBvZiBHcmlkIG9iamVjdAogICAgJC5qcXBsb3QuQ2FudmFzR3JpZFJlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucykgewogICAgICAgIHRoaXMuX2N0eDsKICAgICAgICB0aGlzLnBsb3RCYW5kcyA9IHsKICAgICAgICAgICAgc2hvdzogZmFsc2UsCiAgICAgICAgICAgIGNvbG9yOiAncmdiKDIzMCwgMjE5LCAxNzkpJywKICAgICAgICAgICAgYXhpczogJ3knLAogICAgICAgICAgICBzdGFydDogbnVsbCwKICAgICAgICAgICAgaW50ZXJ2YWw6IDEwCiAgICAgICAgfTsKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKICAgICAgICAvLyBzZXQgdGhlIHNoYWRvdyByZW5kZXJlciBvcHRpb25zCiAgICAgICAgdmFyIHNvcHRzID0ge2xpbmVKb2luOidtaXRlcicsIGxpbmVDYXA6J3JvdW5kJywgZmlsbDpmYWxzZSwgaXNhcmM6ZmFsc2UsIGFuZ2xlOnRoaXMuc2hhZG93QW5nbGUsIG9mZnNldDp0aGlzLnNoYWRvd09mZnNldCwgYWxwaGE6dGhpcy5zaGFkb3dBbHBoYSwgZGVwdGg6dGhpcy5zaGFkb3dEZXB0aCwgbGluZVdpZHRoOnRoaXMuc2hhZG93V2lkdGgsIGNsb3NlUGF0aDpmYWxzZSwgc3Ryb2tlU3R5bGU6dGhpcy5zaGFkb3dDb2xvcn07CiAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5pbml0KHNvcHRzKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LlB5cmFtaWRHcmlkUmVuZGVyZXIucHJvdG90eXBlLmRyYXcgPSBmdW5jdGlvbigpIHsKICAgICAgICB0aGlzLl9jdHggPSB0aGlzLl9lbGVtLmdldCgwKS5nZXRDb250ZXh0KCIyZCIpOwogICAgICAgIHZhciBjdHggPSB0aGlzLl9jdHg7CiAgICAgICAgdmFyIGF4ZXMgPSB0aGlzLl9heGVzOwogICAgICAgIHZhciB4cCA9IGF4ZXMueGF4aXMudTJwOwogICAgICAgIHZhciB5cCA9IGF4ZXMueU1pZEF4aXMudTJwOwogICAgICAgIHZhciB4bnVkZ2UgPSBheGVzLnhheGlzLm1heC8xMDAwLjA7CiAgICAgICAgdmFyIHhwMCA9IHhwKDApOwogICAgICAgIHZhciB4cG4gPSB4cCh4bnVkZ2UpOwogICAgICAgIHZhciBheCA9IFsneGF4aXMnLCAneWF4aXMnLCAneDJheGlzJywgJ3kyYXhpcycsJ3lNaWRBeGlzJ107CiAgICAgICAgLy8gQWRkIHRoZSBncmlkIG9udG8gdGhlIGdyaWQgY2FudmFzLiAgVGhpcyBpcyB0aGUgYm90dG9tIG1vc3QgbGF5ZXIuCiAgICAgICAgY3R4LnNhdmUoKTsKICAgICAgICBjdHguY2xlYXJSZWN0KDAsIDAsIHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoLCB0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQpOwogICAgICAgIGN0eC5maWxsU3R5bGUgPSB0aGlzLmJhY2tncm91bmRDb2xvciB8fCB0aGlzLmJhY2tncm91bmQ7CgogICAgICAgIGN0eC5maWxsUmVjdCh0aGlzLl9sZWZ0LCB0aGlzLl90b3AsIHRoaXMuX3dpZHRoLCB0aGlzLl9oZWlnaHQpOwoKICAgICAgICBpZiAodGhpcy5wbG90QmFuZHMuc2hvdykgewogICAgICAgICAgICBjdHguc2F2ZSgpOwogICAgICAgICAgICB2YXIgcGIgPSB0aGlzLnBsb3RCYW5kczsKICAgICAgICAgICAgY3R4LmZpbGxTdHlsZSA9IHBiLmNvbG9yOwogICAgICAgICAgICB2YXIgYXhpczsKICAgICAgICAgICAgdmFyIHgsIHksIHcsIGg7CiAgICAgICAgICAgIC8vIGZpbmQgYXhpcyB0byB3b3JrIHdpdGgKICAgICAgICAgICAgaWYgKHBiLmF4aXMuY2hhckF0KDApID09PSAneCcpIHsKICAgICAgICAgICAgICAgIGlmIChheGVzLnhheGlzLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICBheGlzID0gYXhlcy54YXhpczsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChwYi5heGlzLmNoYXJBdCgwKSA9PT0gJ3knKSB7CiAgICAgICAgICAgICAgICBpZiAoYXhlcy55YXhpcy5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgYXhpcyA9IGF4ZXMueWF4aXM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmIChheGVzLnkyYXhpcy5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgYXhpcyA9IGF4ZXMueTJheGlzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSBpZiAoYXhlcy55TWlkQXhpcy5zaG93KSB7CiAgICAgICAgICAgICAgICAgICAgYXhpcyA9IGF4ZXMueU1pZEF4aXM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIChheGlzICE9PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIC8vIGRyYXcgc29tZSByZWN0YW5nbGVzCiAgICAgICAgICAgICAgICB2YXIgc3RhcnQgPSBwYi5zdGFydDsKICAgICAgICAgICAgICAgIGlmIChzdGFydCA9PT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gYXhpcy5taW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBheGlzLm1heDsgaSArPSAyICogcGIuaW50ZXJ2YWwpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoYXhpcy5uYW1lLmNoYXJBdCgwKSA9PT0gJ3knKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHggPSB0aGlzLl9sZWZ0OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGkgKyBwYi5pbnRlcnZhbCkgPCBheGlzLm1heCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGF4aXMuc2VyaWVzX3UycChpICsgcGIuaW50ZXJ2YWwpICsgdGhpcy5fdG9wOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IGF4aXMuc2VyaWVzX3UycChheGlzLm1heCkgKyB0aGlzLl90b3A7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdyA9IHRoaXMuX3JpZ2h0IC0gdGhpcy5fbGVmdDsKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGF4aXMuc2VyaWVzX3UycChzdGFydCkgLSBheGlzLnNlcmllc191MnAoc3RhcnQgKyBwYi5pbnRlcnZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGN0eC5maWxsUmVjdCh4LCB5LCB3LCBoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgLy8gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgLy8gICAgIHkgPSAwOwogICAgICAgICAgICAgICAgICAgIC8vICAgICB4ID0gYXhpcy5zZXJpZXNfdTJwKGkpOwogICAgICAgICAgICAgICAgICAgIC8vICAgICBoID0gdGhpcy5faGVpZ2h0OwogICAgICAgICAgICAgICAgICAgIC8vICAgICB3ID0gYXhpcy5zZXJpZXNfdTJwKHN0YXJ0ICsgcGIuaW50ZXJ2YWwpIC0gYXhpcy5zZXJpZXNfdTJwKHN0YXJ0KTsKICAgICAgICAgICAgICAgICAgICAvLyB9CgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgY3R4LmxpbmVKb2luID0gJ21pdGVyJzsKICAgICAgICBjdHgubGluZUNhcCA9ICdidXR0JzsKICAgICAgICBjdHgubGluZVdpZHRoID0gdGhpcy5ncmlkTGluZVdpZHRoOwogICAgICAgIGN0eC5zdHJva2VTdHlsZSA9IHRoaXMuZ3JpZExpbmVDb2xvcjsKICAgICAgICB2YXIgYiwgZSwgcywgbTsKICAgICAgICBmb3IgKHZhciBpPTU7IGk+MDsgaS0tKSB7CiAgICAgICAgICAgIHZhciBuYW1lID0gYXhbaS0xXTsKICAgICAgICAgICAgdmFyIGF4aXMgPSBheGVzW25hbWVdOwogICAgICAgICAgICB2YXIgdGlja3MgPSBheGlzLl90aWNrczsKICAgICAgICAgICAgdmFyIG51bXRpY2tzID0gdGlja3MubGVuZ3RoOwogICAgICAgICAgICBpZiAoYXhpcy5zaG93KSB7CiAgICAgICAgICAgICAgICBpZiAoYXhpcy5kcmF3QmFzZWxpbmUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgYm9wdHMgPSB7fTsKICAgICAgICAgICAgICAgICAgICBpZiAoYXhpcy5iYXNlbGluZVdpZHRoICE9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJvcHRzLmxpbmVXaWR0aCA9IGF4aXMuYmFzZWxpbmVXaWR0aDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKGF4aXMuYmFzZWxpbmVDb2xvciAhPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICBib3B0cy5zdHJva2VTdHlsZSA9IGF4aXMuYmFzZWxpbmVDb2xvcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChuYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3hheGlzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChheGVzLnlNaWRBeGlzLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZSAodGhpcy5fbGVmdCwgdGhpcy5fYm90dG9tLCB4cDAsIHRoaXMuX2JvdHRvbSwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lICh4cG4sIHRoaXMuX2JvdHRvbSwgdGhpcy5fcmlnaHQsIHRoaXMuX2JvdHRvbSwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmUgKHRoaXMuX2xlZnQsIHRoaXMuX2JvdHRvbSwgdGhpcy5fcmlnaHQsIHRoaXMuX2JvdHRvbSwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3lheGlzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lICh0aGlzLl9sZWZ0LCB0aGlzLl9ib3R0b20sIHRoaXMuX2xlZnQsIHRoaXMuX3RvcCwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3lNaWRBeGlzJzogICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lKHhwMCwgdGhpcy5fYm90dG9tLCB4cDAsIHRoaXMuX3RvcCwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmUoeHBuLCB0aGlzLl9ib3R0b20sIHhwbiwgdGhpcy5fdG9wLCBib3B0cyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAneDJheGlzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChheGVzLnlNaWRBeGlzLnNob3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZSAodGhpcy5fbGVmdCwgdGhpcy5fdG9wLCB4cDAsIHRoaXMuX3RvcCwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lICh4cG4sIHRoaXMuX3RvcCwgdGhpcy5fcmlnaHQsIHRoaXMuX3RvcCwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmUgKHRoaXMuX2xlZnQsIHRoaXMuX2JvdHRvbSwgdGhpcy5fcmlnaHQsIHRoaXMuX2JvdHRvbSwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3kyYXhpcyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZSAodGhpcy5fcmlnaHQsIHRoaXMuX2JvdHRvbSwgdGhpcy5fcmlnaHQsIHRoaXMuX3RvcCwgYm9wdHMpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvciAodmFyIGo9bnVtdGlja3M7IGo+MDsgai0tKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIHQgPSB0aWNrc1tqLTFdOwogICAgICAgICAgICAgICAgICAgIGlmICh0LnNob3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9IE1hdGgucm91bmQoYXhpcy51MnAodC52YWx1ZSkpICsgMC41OwogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5hbWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3hheGlzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSBncmlkIGxpbmUgaWYgd2Ugc2hvdWxkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvd0dyaWRsaW5lICYmIHRoaXMuZHJhd0dyaWRsaW5lcyAmJiAoIXQuaXNNaW5vclRpY2sgfHwgYXhpcy5zaG93TWlub3JUaWNrcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmUocG9zLCB0aGlzLl90b3AsIHBvcywgdGhpcy5fYm90dG9tKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB0aGUgbWFyawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LnNob3dNYXJrICYmIHQubWFyayAmJiAoIXQuaXNNaW5vclRpY2sgfHwgYXhpcy5zaG93TWlub3JUaWNrcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQubWFya1NpemU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSB0Lm1hcms7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSBNYXRoLnJvdW5kKGF4aXMudTJwKHQudmFsdWUpKSArIDAuNTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChtKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdvdXRzaWRlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy5fYm90dG9tOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9ib3R0b20rczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luc2lkZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX2JvdHRvbS1zOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9ib3R0b207CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjcm9zcyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX2JvdHRvbS1zOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9ib3R0b20rczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX2JvdHRvbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fYm90dG9tK3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB0aGUgc2hhZG93CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNoYWRvdykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KGN0eCwgW1twb3MsYl0sW3BvcyxlXV0sIHtsaW5lQ2FwOididXR0JywgbGluZVdpZHRoOnRoaXMuZ3JpZExpbmVXaWR0aCwgb2Zmc2V0OnRoaXMuZ3JpZExpbmVXaWR0aCowLjc1LCBkZXB0aDoyLCBmaWxsOmZhbHNlLCBjbG9zZVBhdGg6ZmFsc2V9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lKHBvcywgYiwgcG9zLCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd5YXhpcyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB0aGUgZ3JpZCBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvd0dyaWRsaW5lICYmIHRoaXMuZHJhd0dyaWRsaW5lcyAmJiAoIXQuaXNNaW5vclRpY2sgfHwgYXhpcy5zaG93TWlub3JUaWNrcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmUodGhpcy5fcmlnaHQsIHBvcywgdGhpcy5fbGVmdCwgcG9zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgdGhlIG1hcmsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5zaG93TWFyayAmJiB0Lm1hcmsgJiYgKCF0LmlzTWlub3JUaWNrIHx8IGF4aXMuc2hvd01pbm9yVGlja3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0Lm1hcmtTaXplOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gdC5tYXJrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9zID0gTWF0aC5yb3VuZChheGlzLnUycCh0LnZhbHVlKSkgKyAwLjU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb3V0c2lkZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX2xlZnQtczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fbGVmdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2luc2lkZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX2xlZnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX2xlZnQrczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Nyb3NzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy5fbGVmdC1zOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9sZWZ0K3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB0aGlzLl9sZWZ0LXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX2xlZnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSBzaGFkb3cKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hhZG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoY3R4LCBbW2IsIHBvc10sIFtlLCBwb3NdXSwge2xpbmVDYXA6J2J1dHQnLCBsaW5lV2lkdGg6dGhpcy5ncmlkTGluZVdpZHRoKjEuNSwgb2Zmc2V0OnRoaXMuZ3JpZExpbmVXaWR0aCowLjc1LCBmaWxsOmZhbHNlLCBjbG9zZVBhdGg6ZmFsc2V9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZShiLCBwb3MsIGUsIHBvcywge3N0cm9rZVN0eWxlOmF4aXMuYm9yZGVyQ29sb3J9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd5TWlkQXhpcyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB0aGUgZ3JpZCBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvd0dyaWRsaW5lICYmIHRoaXMuZHJhd0dyaWRsaW5lcyAmJiAoIXQuaXNNaW5vclRpY2sgfHwgYXhpcy5zaG93TWlub3JUaWNrcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmUodGhpcy5fbGVmdCwgcG9zLCB4cDAsIHBvcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lKHhwbiwgcG9zLCB0aGlzLl9yaWdodCwgcG9zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB0aGUgbWFyawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LnNob3dNYXJrICYmIHQubWFyayAmJiAoIXQuaXNNaW5vclRpY2sgfHwgYXhpcy5zaG93TWlub3JUaWNrcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHQubWFya1NpemU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSB0Lm1hcms7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwb3MgPSBNYXRoLnJvdW5kKGF4aXMudTJwKHQudmFsdWUpKSArIDAuNTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB4cDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB4cDAgKyBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSBzaGFkb3cKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hhZG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoY3R4LCBbW2IsIHBvc10sIFtlLCBwb3NdXSwge2xpbmVDYXA6J2J1dHQnLCBsaW5lV2lkdGg6dGhpcy5ncmlkTGluZVdpZHRoKjEuNSwgb2Zmc2V0OnRoaXMuZ3JpZExpbmVXaWR0aCowLjc1LCBmaWxsOmZhbHNlLCBjbG9zZVBhdGg6ZmFsc2V9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZShiLCBwb3MsIGUsIHBvcywge3N0cm9rZVN0eWxlOmF4aXMuYm9yZGVyQ29sb3J9KTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB4cG4gLSBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0geHBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSBzaGFkb3cKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hhZG93KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoY3R4LCBbW2IsIHBvc10sIFtlLCBwb3NdXSwge2xpbmVDYXA6J2J1dHQnLCBsaW5lV2lkdGg6dGhpcy5ncmlkTGluZVdpZHRoKjEuNSwgb2Zmc2V0OnRoaXMuZ3JpZExpbmVXaWR0aCowLjc1LCBmaWxsOmZhbHNlLCBjbG9zZVBhdGg6ZmFsc2V9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3TGluZShiLCBwb3MsIGUsIHBvcywge3N0cm9rZVN0eWxlOmF4aXMuYm9yZGVyQ29sb3J9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd4MmF4aXMnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgdGhlIGdyaWQgbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0LnNob3dHcmlkbGluZSAmJiB0aGlzLmRyYXdHcmlkbGluZXMgJiYgKCF0LmlzTWlub3JUaWNrIHx8IGF4aXMuc2hvd01pbm9yVGlja3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lKHBvcywgdGhpcy5fYm90dG9tLCBwb3MsIHRoaXMuX3RvcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBkcmF3IHRoZSBtYXJrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvd01hcmsgJiYgdC5tYXJrICYmICghdC5pc01pbm9yVGljayB8fCBheGlzLnNob3dNaW5vclRpY2tzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gdC5tYXJrU2l6ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHQubWFyazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBvcyA9IE1hdGgucm91bmQoYXhpcy51MnAodC52YWx1ZSkpICsgMC41OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG0pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ291dHNpZGUnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB0aGlzLl90b3AtczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fdG9wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5zaWRlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy5fdG9wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl90b3ArczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2Nyb3NzJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy5fdG9wLXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX3RvcCtzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy5fdG9wLXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX3RvcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgdGhlIHNoYWRvdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zaGFkb3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIFtbcG9zLGJdLFtwb3MsZV1dLCB7bGluZUNhcDonYnV0dCcsIGxpbmVXaWR0aDp0aGlzLmdyaWRMaW5lV2lkdGgsIG9mZnNldDp0aGlzLmdyaWRMaW5lV2lkdGgqMC43NSwgZGVwdGg6MiwgZmlsbDpmYWxzZSwgY2xvc2VQYXRoOmZhbHNlfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmUocG9zLCBiLCBwb3MsIGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3kyYXhpcyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJhdyB0aGUgZ3JpZCBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuc2hvd0dyaWRsaW5lICYmIHRoaXMuZHJhd0dyaWRsaW5lcyAmJiAoIXQuaXNNaW5vclRpY2sgfHwgYXhpcy5zaG93TWlub3JUaWNrcykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhd0xpbmUodGhpcy5fbGVmdCwgcG9zLCB0aGlzLl9yaWdodCwgcG9zKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgdGhlIG1hcmsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodC5zaG93TWFyayAmJiB0Lm1hcmsgJiYgKCF0LmlzTWlub3JUaWNrIHx8IGF4aXMuc2hvd01pbm9yVGlja3MpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSB0Lm1hcmtTaXplOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gdC5tYXJrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9zID0gTWF0aC5yb3VuZChheGlzLnUycCh0LnZhbHVlKSkgKyAwLjU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnb3V0c2lkZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX3JpZ2h0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSB0aGlzLl9yaWdodCtzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnaW5zaWRlJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gdGhpcy5fcmlnaHQtczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fcmlnaHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdjcm9zcyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IHRoaXMuX3JpZ2h0LXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IHRoaXMuX3JpZ2h0K3M7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSB0aGlzLl9yaWdodDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gdGhpcy5fcmlnaHQrczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRyYXcgdGhlIHNoYWRvdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zaGFkb3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIFtbYiwgcG9zXSwgW2UsIHBvc11dLCB7bGluZUNhcDonYnV0dCcsIGxpbmVXaWR0aDp0aGlzLmdyaWRMaW5lV2lkdGgqMS41LCBvZmZzZXQ6dGhpcy5ncmlkTGluZVdpZHRoKjAuNzUsIGZpbGw6ZmFsc2UsIGNsb3NlUGF0aDpmYWxzZX0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyYXdMaW5lKGIsIHBvcywgZSwgcG9zLCB7c3Ryb2tlU3R5bGU6YXhpcy5ib3JkZXJDb2xvcn0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB0ID0gbnVsbDsKICAgICAgICAgICAgfQogICAgICAgICAgICBheGlzID0gbnVsbDsKICAgICAgICAgICAgdGlja3MgPSBudWxsOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBjdHgucmVzdG9yZSgpOwogICAgICAgIAogICAgICAgIGZ1bmN0aW9uIGRyYXdMaW5lKGJ4LCBieSwgZXgsIGV5LCBvcHRzKSB7CiAgICAgICAgICAgIGN0eC5zYXZlKCk7CiAgICAgICAgICAgIG9wdHMgPSBvcHRzIHx8IHt9OwogICAgICAgICAgICBpZiAob3B0cy5saW5lV2lkdGggPT0gbnVsbCB8fCBvcHRzLmxpbmVXaWR0aCAhPSAwKXsKICAgICAgICAgICAgICAgICQuZXh0ZW5kKHRydWUsIGN0eCwgb3B0cyk7CiAgICAgICAgICAgICAgICBjdHguYmVnaW5QYXRoKCk7CiAgICAgICAgICAgICAgICBjdHgubW92ZVRvKGJ4LCBieSk7CiAgICAgICAgICAgICAgICBjdHgubGluZVRvKGV4LCBleSk7CiAgICAgICAgICAgICAgICBjdHguc3Ryb2tlKCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY3R4LnJlc3RvcmUoKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKHRoaXMuc2hhZG93KSB7CiAgICAgICAgICAgIGlmIChheGVzLnlNaWRBeGlzLnNob3cpIHsKICAgICAgICAgICAgICAgIHZhciBwb2ludHMgPSBbW3RoaXMuX2xlZnQsIHRoaXMuX2JvdHRvbV0sIFt4cDAsIHRoaXMuX2JvdHRvbV1dOwogICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KGN0eCwgcG9pbnRzKTsKICAgICAgICAgICAgICAgIHZhciBwb2ludHMgPSBbW3hwbiwgdGhpcy5fYm90dG9tXSwgW3RoaXMuX3JpZ2h0LCB0aGlzLl9ib3R0b21dLCBbdGhpcy5fcmlnaHQsIHRoaXMuX3RvcF1dOwogICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KGN0eCwgcG9pbnRzKTsKICAgICAgICAgICAgICAgIHZhciBwb2ludHMgPSBbW3hwMCwgdGhpcy5fYm90dG9tXSwgW3hwMCwgdGhpcy5fdG9wXV07CiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoY3R4LCBwb2ludHMpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgdmFyIHBvaW50cyA9IFtbdGhpcy5fbGVmdCwgdGhpcy5fYm90dG9tXSwgW3RoaXMuX3JpZ2h0LCB0aGlzLl9ib3R0b21dLCBbdGhpcy5fcmlnaHQsIHRoaXMuX3RvcF1dOwogICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KGN0eCwgcG9pbnRzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAvLyBOb3cgZHJhdyBib3JkZXIgYXJvdW5kIGdyaWQuICBVc2UgYXhpcyBib3JkZXIgZGVmaW5pdGlvbnMuIHN0YXJ0IGF0CiAgICAgICAgLy8gdXBwZXIgbGVmdCBhbmQgZ28gY2xvY2t3aXNlLgogICAgICAgIGlmICh0aGlzLmJvcmRlcldpZHRoICE9IDAgJiYgdGhpcy5kcmF3Qm9yZGVyKSB7CiAgICAgICAgICAgIGlmIChheGVzLnlNaWRBeGlzLnNob3cpIHsKICAgICAgICAgICAgICAgIGRyYXdMaW5lICh0aGlzLl9sZWZ0LCB0aGlzLl90b3AsIHhwMCwgdGhpcy5fdG9wLCB7bGluZUNhcDoncm91bmQnLCBzdHJva2VTdHlsZTpheGVzLngyYXhpcy5ib3JkZXJDb2xvciwgbGluZVdpZHRoOmF4ZXMueDJheGlzLmJvcmRlcldpZHRofSk7CiAgICAgICAgICAgICAgICBkcmF3TGluZSAoeHBuLCB0aGlzLl90b3AsIHRoaXMuX3JpZ2h0LCB0aGlzLl90b3AsIHtsaW5lQ2FwOidyb3VuZCcsIHN0cm9rZVN0eWxlOmF4ZXMueDJheGlzLmJvcmRlckNvbG9yLCBsaW5lV2lkdGg6YXhlcy54MmF4aXMuYm9yZGVyV2lkdGh9KTsKICAgICAgICAgICAgICAgIGRyYXdMaW5lICh0aGlzLl9yaWdodCwgdGhpcy5fdG9wLCB0aGlzLl9yaWdodCwgdGhpcy5fYm90dG9tLCB7bGluZUNhcDoncm91bmQnLCBzdHJva2VTdHlsZTpheGVzLnkyYXhpcy5ib3JkZXJDb2xvciwgbGluZVdpZHRoOmF4ZXMueTJheGlzLmJvcmRlcldpZHRofSk7CiAgICAgICAgICAgICAgICBkcmF3TGluZSAodGhpcy5fcmlnaHQsIHRoaXMuX2JvdHRvbSwgeHBuLCB0aGlzLl9ib3R0b20sIHtsaW5lQ2FwOidyb3VuZCcsIHN0cm9rZVN0eWxlOmF4ZXMueGF4aXMuYm9yZGVyQ29sb3IsIGxpbmVXaWR0aDpheGVzLnhheGlzLmJvcmRlcldpZHRofSk7CiAgICAgICAgICAgICAgICBkcmF3TGluZSAoeHAwLCB0aGlzLl9ib3R0b20sIHRoaXMuX2xlZnQsIHRoaXMuX2JvdHRvbSwge2xpbmVDYXA6J3JvdW5kJywgc3Ryb2tlU3R5bGU6YXhlcy54YXhpcy5ib3JkZXJDb2xvciwgbGluZVdpZHRoOmF4ZXMueGF4aXMuYm9yZGVyV2lkdGh9KTsKICAgICAgICAgICAgICAgIGRyYXdMaW5lICh0aGlzLl9sZWZ0LCB0aGlzLl9ib3R0b20sIHRoaXMuX2xlZnQsIHRoaXMuX3RvcCwge2xpbmVDYXA6J3JvdW5kJywgc3Ryb2tlU3R5bGU6YXhlcy55YXhpcy5ib3JkZXJDb2xvciwgbGluZVdpZHRoOmF4ZXMueWF4aXMuYm9yZGVyV2lkdGh9KTsKICAgICAgICAgICAgICAgIGRyYXdMaW5lICh4cDAsIHRoaXMuX2JvdHRvbSwgeHAwLCB0aGlzLl90b3AsIHtsaW5lQ2FwOidyb3VuZCcsIHN0cm9rZVN0eWxlOmF4ZXMueWF4aXMuYm9yZGVyQ29sb3IsIGxpbmVXaWR0aDpheGVzLnlheGlzLmJvcmRlcldpZHRofSk7CiAgICAgICAgICAgICAgICBkcmF3TGluZSAoeHBuLCB0aGlzLl9ib3R0b20sIHhwbiwgdGhpcy5fdG9wLCB7bGluZUNhcDoncm91bmQnLCBzdHJva2VTdHlsZTpheGVzLnlheGlzLmJvcmRlckNvbG9yLCBsaW5lV2lkdGg6YXhlcy55YXhpcy5ib3JkZXJXaWR0aH0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgZHJhd0xpbmUgKHRoaXMuX2xlZnQsIHRoaXMuX3RvcCwgdGhpcy5fcmlnaHQsIHRoaXMuX3RvcCwge2xpbmVDYXA6J3JvdW5kJywgc3Ryb2tlU3R5bGU6YXhlcy54MmF4aXMuYm9yZGVyQ29sb3IsIGxpbmVXaWR0aDpheGVzLngyYXhpcy5ib3JkZXJXaWR0aH0pOwogICAgICAgICAgICAgICAgZHJhd0xpbmUgKHRoaXMuX3JpZ2h0LCB0aGlzLl90b3AsIHRoaXMuX3JpZ2h0LCB0aGlzLl9ib3R0b20sIHtsaW5lQ2FwOidyb3VuZCcsIHN0cm9rZVN0eWxlOmF4ZXMueTJheGlzLmJvcmRlckNvbG9yLCBsaW5lV2lkdGg6YXhlcy55MmF4aXMuYm9yZGVyV2lkdGh9KTsKICAgICAgICAgICAgICAgIGRyYXdMaW5lICh0aGlzLl9yaWdodCwgdGhpcy5fYm90dG9tLCB0aGlzLl9sZWZ0LCB0aGlzLl9ib3R0b20sIHtsaW5lQ2FwOidyb3VuZCcsIHN0cm9rZVN0eWxlOmF4ZXMueGF4aXMuYm9yZGVyQ29sb3IsIGxpbmVXaWR0aDpheGVzLnhheGlzLmJvcmRlcldpZHRofSk7CiAgICAgICAgICAgICAgICBkcmF3TGluZSAodGhpcy5fbGVmdCwgdGhpcy5fYm90dG9tLCB0aGlzLl9sZWZ0LCB0aGlzLl90b3AsIHtsaW5lQ2FwOidyb3VuZCcsIHN0cm9rZVN0eWxlOmF4ZXMueWF4aXMuYm9yZGVyQ29sb3IsIGxpbmVXaWR0aDpheGVzLnlheGlzLmJvcmRlcldpZHRofSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgLy8gY3R4LmxpbmVXaWR0aCA9IHRoaXMuYm9yZGVyV2lkdGg7CiAgICAgICAgLy8gY3R4LnN0cm9rZVN0eWxlID0gdGhpcy5ib3JkZXJDb2xvcjsKICAgICAgICAvLyBjdHguc3Ryb2tlUmVjdCh0aGlzLl9sZWZ0LCB0aGlzLl90b3AsIHRoaXMuX3dpZHRoLCB0aGlzLl9oZWlnaHQpOwogICAgICAgIAogICAgICAgIGN0eC5yZXN0b3JlKCk7CiAgICAgICAgY3R4ID0gIG51bGw7CiAgICAgICAgYXhlcyA9IG51bGw7CiAgICB9Owp9KShqUXVlcnkpOyA=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.pyramidGridRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGEpe2EuanFwbG90LlB5cmFtaWRHcmlkUmVuZGVyZXI9ZnVuY3Rpb24oKXthLmpxcGxvdC5DYW52YXNHcmlkUmVuZGVyZXIuY2FsbCh0aGlzKX07YS5qcXBsb3QuUHlyYW1pZEdyaWRSZW5kZXJlci5wcm90b3R5cGU9bmV3IGEuanFwbG90LkNhbnZhc0dyaWRSZW5kZXJlcigpO2EuanFwbG90LlB5cmFtaWRHcmlkUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWEuanFwbG90LlB5cmFtaWRHcmlkUmVuZGVyZXI7YS5qcXBsb3QuQ2FudmFzR3JpZFJlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGMpe3RoaXMuX2N0eDt0aGlzLnBsb3RCYW5kcz17c2hvdzpmYWxzZSxjb2xvcjoicmdiKDIzMCwgMjE5LCAxNzkpIixheGlzOiJ5IixzdGFydDpudWxsLGludGVydmFsOjEwfTthLmV4dGVuZCh0cnVlLHRoaXMsYyk7dmFyIGI9e2xpbmVKb2luOiJtaXRlciIsbGluZUNhcDoicm91bmQiLGZpbGw6ZmFsc2UsaXNhcmM6ZmFsc2UsYW5nbGU6dGhpcy5zaGFkb3dBbmdsZSxvZmZzZXQ6dGhpcy5zaGFkb3dPZmZzZXQsYWxwaGE6dGhpcy5zaGFkb3dBbHBoYSxkZXB0aDp0aGlzLnNoYWRvd0RlcHRoLGxpbmVXaWR0aDp0aGlzLnNoYWRvd1dpZHRoLGNsb3NlUGF0aDpmYWxzZSxzdHJva2VTdHlsZTp0aGlzLnNoYWRvd0NvbG9yfTt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmluaXQoYil9O2EuanFwbG90LlB5cmFtaWRHcmlkUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oKXt0aGlzLl9jdHg9dGhpcy5fZWxlbS5nZXQoMCkuZ2V0Q29udGV4dCgiMmQiKTt2YXIgRD10aGlzLl9jdHg7dmFyIEc9dGhpcy5fYXhlczt2YXIgcT1HLnhheGlzLnUycDt2YXIgSj1HLnlNaWRBeGlzLnUycDt2YXIgbD1HLnhheGlzLm1heC8xMDAwO3ZhciB1PXEoMCk7dmFyIGY9cShsKTt2YXIgcj1bInhheGlzIiwieWF4aXMiLCJ4MmF4aXMiLCJ5MmF4aXMiLCJ5TWlkQXhpcyJdO0Quc2F2ZSgpO0QuY2xlYXJSZWN0KDAsMCx0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCx0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQpO0QuZmlsbFN0eWxlPXRoaXMuYmFja2dyb3VuZENvbG9yfHx0aGlzLmJhY2tncm91bmQ7RC5maWxsUmVjdCh0aGlzLl9sZWZ0LHRoaXMuX3RvcCx0aGlzLl93aWR0aCx0aGlzLl9oZWlnaHQpO2lmKHRoaXMucGxvdEJhbmRzLnNob3cpe0Quc2F2ZSgpO3ZhciBjPXRoaXMucGxvdEJhbmRzO0QuZmlsbFN0eWxlPWMuY29sb3I7dmFyIGQ7dmFyIG8sbixwLEk7aWYoYy5heGlzLmNoYXJBdCgwKT09PSJ4Iil7aWYoRy54YXhpcy5zaG93KXtkPUcueGF4aXN9fWVsc2V7aWYoYy5heGlzLmNoYXJBdCgwKT09PSJ5Iil7aWYoRy55YXhpcy5zaG93KXtkPUcueWF4aXN9ZWxzZXtpZihHLnkyYXhpcy5zaG93KXtkPUcueTJheGlzfWVsc2V7aWYoRy55TWlkQXhpcy5zaG93KXtkPUcueU1pZEF4aXN9fX19fWlmKGQhPT11bmRlZmluZWQpe3ZhciBnPWMuc3RhcnQ7aWYoZz09PW51bGwpe2c9ZC5taW59Zm9yKHZhciBIPWc7SDxkLm1heDtIKz0yKmMuaW50ZXJ2YWwpe2lmKGQubmFtZS5jaGFyQXQoMCk9PT0ieSIpe289dGhpcy5fbGVmdDtpZigoSCtjLmludGVydmFsKTxkLm1heCl7bj1kLnNlcmllc191MnAoSCtjLmludGVydmFsKSt0aGlzLl90b3B9ZWxzZXtuPWQuc2VyaWVzX3UycChkLm1heCkrdGhpcy5fdG9wfXA9dGhpcy5fcmlnaHQtdGhpcy5fbGVmdDtJPWQuc2VyaWVzX3UycChnKS1kLnNlcmllc191MnAoZytjLmludGVydmFsKTtELmZpbGxSZWN0KG8sbixwLEkpfX19RC5yZXN0b3JlKCl9RC5zYXZlKCk7RC5saW5lSm9pbj0ibWl0ZXIiO0QubGluZUNhcD0iYnV0dCI7RC5saW5lV2lkdGg9dGhpcy5ncmlkTGluZVdpZHRoO0Quc3Ryb2tlU3R5bGU9dGhpcy5ncmlkTGluZUNvbG9yO3ZhciBMLEssQSxDO2Zvcih2YXIgSD01O0g+MDtILS0pe3ZhciBPPXJbSC0xXTt2YXIgZD1HW09dO3ZhciBNPWQuX3RpY2tzO3ZhciBCPU0ubGVuZ3RoO2lmKGQuc2hvdyl7aWYoZC5kcmF3QmFzZWxpbmUpe3ZhciBOPXt9O2lmKGQuYmFzZWxpbmVXaWR0aCE9PW51bGwpe04ubGluZVdpZHRoPWQuYmFzZWxpbmVXaWR0aH1pZihkLmJhc2VsaW5lQ29sb3IhPT1udWxsKXtOLnN0cm9rZVN0eWxlPWQuYmFzZWxpbmVDb2xvcn1zd2l0Y2goTyl7Y2FzZSJ4YXhpcyI6aWYoRy55TWlkQXhpcy5zaG93KXt6KHRoaXMuX2xlZnQsdGhpcy5fYm90dG9tLHUsdGhpcy5fYm90dG9tLE4pO3ooZix0aGlzLl9ib3R0b20sdGhpcy5fcmlnaHQsdGhpcy5fYm90dG9tLE4pfWVsc2V7eih0aGlzLl9sZWZ0LHRoaXMuX2JvdHRvbSx0aGlzLl9yaWdodCx0aGlzLl9ib3R0b20sTil9YnJlYWs7Y2FzZSJ5YXhpcyI6eih0aGlzLl9sZWZ0LHRoaXMuX2JvdHRvbSx0aGlzLl9sZWZ0LHRoaXMuX3RvcCxOKTticmVhaztjYXNlInlNaWRBeGlzIjp6KHUsdGhpcy5fYm90dG9tLHUsdGhpcy5fdG9wLE4pO3ooZix0aGlzLl9ib3R0b20sZix0aGlzLl90b3AsTik7YnJlYWs7Y2FzZSJ4MmF4aXMiOmlmKEcueU1pZEF4aXMuc2hvdyl7eih0aGlzLl9sZWZ0LHRoaXMuX3RvcCx1LHRoaXMuX3RvcCxOKTt6KGYsdGhpcy5fdG9wLHRoaXMuX3JpZ2h0LHRoaXMuX3RvcCxOKX1lbHNle3oodGhpcy5fbGVmdCx0aGlzLl9ib3R0b20sdGhpcy5fcmlnaHQsdGhpcy5fYm90dG9tLE4pfWJyZWFrO2Nhc2UieTJheGlzIjp6KHRoaXMuX3JpZ2h0LHRoaXMuX2JvdHRvbSx0aGlzLl9yaWdodCx0aGlzLl90b3AsTik7YnJlYWt9fWZvcih2YXIgRT1CO0U+MDtFLS0pe3ZhciB2PU1bRS0xXTtpZih2LnNob3cpe3ZhciBrPU1hdGgucm91bmQoZC51MnAodi52YWx1ZSkpKzAuNTtzd2l0Y2goTyl7Y2FzZSJ4YXhpcyI6aWYodi5zaG93R3JpZGxpbmUmJnRoaXMuZHJhd0dyaWRsaW5lcyYmKCF2LmlzTWlub3JUaWNrfHxkLnNob3dNaW5vclRpY2tzKSl7eihrLHRoaXMuX3RvcCxrLHRoaXMuX2JvdHRvbSl9aWYodi5zaG93TWFyayYmdi5tYXJrJiYoIXYuaXNNaW5vclRpY2t8fGQuc2hvd01pbm9yVGlja3MpKXtBPXYubWFya1NpemU7Qz12Lm1hcms7dmFyIGs9TWF0aC5yb3VuZChkLnUycCh2LnZhbHVlKSkrMC41O3N3aXRjaChDKXtjYXNlIm91dHNpZGUiOkw9dGhpcy5fYm90dG9tO0s9dGhpcy5fYm90dG9tK0E7YnJlYWs7Y2FzZSJpbnNpZGUiOkw9dGhpcy5fYm90dG9tLUE7Sz10aGlzLl9ib3R0b207YnJlYWs7Y2FzZSJjcm9zcyI6TD10aGlzLl9ib3R0b20tQTtLPXRoaXMuX2JvdHRvbStBO2JyZWFrO2RlZmF1bHQ6TD10aGlzLl9ib3R0b207Sz10aGlzLl9ib3R0b20rQTticmVha31pZih0aGlzLnNoYWRvdyl7dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KEQsW1trLExdLFtrLEtdXSx7bGluZUNhcDoiYnV0dCIsbGluZVdpZHRoOnRoaXMuZ3JpZExpbmVXaWR0aCxvZmZzZXQ6dGhpcy5ncmlkTGluZVdpZHRoKjAuNzUsZGVwdGg6MixmaWxsOmZhbHNlLGNsb3NlUGF0aDpmYWxzZX0pfXooayxMLGssSyl9YnJlYWs7Y2FzZSJ5YXhpcyI6aWYodi5zaG93R3JpZGxpbmUmJnRoaXMuZHJhd0dyaWRsaW5lcyYmKCF2LmlzTWlub3JUaWNrfHxkLnNob3dNaW5vclRpY2tzKSl7eih0aGlzLl9yaWdodCxrLHRoaXMuX2xlZnQsayl9aWYodi5zaG93TWFyayYmdi5tYXJrJiYoIXYuaXNNaW5vclRpY2t8fGQuc2hvd01pbm9yVGlja3MpKXtBPXYubWFya1NpemU7Qz12Lm1hcms7dmFyIGs9TWF0aC5yb3VuZChkLnUycCh2LnZhbHVlKSkrMC41O3N3aXRjaChDKXtjYXNlIm91dHNpZGUiOkw9dGhpcy5fbGVmdC1BO0s9dGhpcy5fbGVmdDticmVhaztjYXNlImluc2lkZSI6TD10aGlzLl9sZWZ0O0s9dGhpcy5fbGVmdCtBO2JyZWFrO2Nhc2UiY3Jvc3MiOkw9dGhpcy5fbGVmdC1BO0s9dGhpcy5fbGVmdCtBO2JyZWFrO2RlZmF1bHQ6TD10aGlzLl9sZWZ0LUE7Sz10aGlzLl9sZWZ0O2JyZWFrfWlmKHRoaXMuc2hhZG93KXt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoRCxbW0wsa10sW0ssa11dLHtsaW5lQ2FwOiJidXR0IixsaW5lV2lkdGg6dGhpcy5ncmlkTGluZVdpZHRoKjEuNSxvZmZzZXQ6dGhpcy5ncmlkTGluZVdpZHRoKjAuNzUsZmlsbDpmYWxzZSxjbG9zZVBhdGg6ZmFsc2V9KX16KEwsayxLLGsse3N0cm9rZVN0eWxlOmQuYm9yZGVyQ29sb3J9KX1icmVhaztjYXNlInlNaWRBeGlzIjppZih2LnNob3dHcmlkbGluZSYmdGhpcy5kcmF3R3JpZGxpbmVzJiYoIXYuaXNNaW5vclRpY2t8fGQuc2hvd01pbm9yVGlja3MpKXt6KHRoaXMuX2xlZnQsayx1LGspO3ooZixrLHRoaXMuX3JpZ2h0LGspfWlmKHYuc2hvd01hcmsmJnYubWFyayYmKCF2LmlzTWlub3JUaWNrfHxkLnNob3dNaW5vclRpY2tzKSl7QT12Lm1hcmtTaXplO0M9di5tYXJrO3ZhciBrPU1hdGgucm91bmQoZC51MnAodi52YWx1ZSkpKzAuNTtMPXU7Sz11K0E7aWYodGhpcy5zaGFkb3cpe3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhELFtbTCxrXSxbSyxrXV0se2xpbmVDYXA6ImJ1dHQiLGxpbmVXaWR0aDp0aGlzLmdyaWRMaW5lV2lkdGgqMS41LG9mZnNldDp0aGlzLmdyaWRMaW5lV2lkdGgqMC43NSxmaWxsOmZhbHNlLGNsb3NlUGF0aDpmYWxzZX0pfXooTCxrLEssayx7c3Ryb2tlU3R5bGU6ZC5ib3JkZXJDb2xvcn0pO0w9Zi1BO0s9ZjtpZih0aGlzLnNoYWRvdyl7dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KEQsW1tMLGtdLFtLLGtdXSx7bGluZUNhcDoiYnV0dCIsbGluZVdpZHRoOnRoaXMuZ3JpZExpbmVXaWR0aCoxLjUsb2Zmc2V0OnRoaXMuZ3JpZExpbmVXaWR0aCowLjc1LGZpbGw6ZmFsc2UsY2xvc2VQYXRoOmZhbHNlfSl9eihMLGssSyxrLHtzdHJva2VTdHlsZTpkLmJvcmRlckNvbG9yfSl9YnJlYWs7Y2FzZSJ4MmF4aXMiOmlmKHYuc2hvd0dyaWRsaW5lJiZ0aGlzLmRyYXdHcmlkbGluZXMmJighdi5pc01pbm9yVGlja3x8ZC5zaG93TWlub3JUaWNrcykpe3ooayx0aGlzLl9ib3R0b20sayx0aGlzLl90b3ApfWlmKHYuc2hvd01hcmsmJnYubWFyayYmKCF2LmlzTWlub3JUaWNrfHxkLnNob3dNaW5vclRpY2tzKSl7QT12Lm1hcmtTaXplO0M9di5tYXJrO3ZhciBrPU1hdGgucm91bmQoZC51MnAodi52YWx1ZSkpKzAuNTtzd2l0Y2goQyl7Y2FzZSJvdXRzaWRlIjpMPXRoaXMuX3RvcC1BO0s9dGhpcy5fdG9wO2JyZWFrO2Nhc2UiaW5zaWRlIjpMPXRoaXMuX3RvcDtLPXRoaXMuX3RvcCtBO2JyZWFrO2Nhc2UiY3Jvc3MiOkw9dGhpcy5fdG9wLUE7Sz10aGlzLl90b3ArQTticmVhaztkZWZhdWx0Okw9dGhpcy5fdG9wLUE7Sz10aGlzLl90b3A7YnJlYWt9aWYodGhpcy5zaGFkb3cpe3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhELFtbayxMXSxbayxLXV0se2xpbmVDYXA6ImJ1dHQiLGxpbmVXaWR0aDp0aGlzLmdyaWRMaW5lV2lkdGgsb2Zmc2V0OnRoaXMuZ3JpZExpbmVXaWR0aCowLjc1LGRlcHRoOjIsZmlsbDpmYWxzZSxjbG9zZVBhdGg6ZmFsc2V9KX16KGssTCxrLEspfWJyZWFrO2Nhc2UieTJheGlzIjppZih2LnNob3dHcmlkbGluZSYmdGhpcy5kcmF3R3JpZGxpbmVzJiYoIXYuaXNNaW5vclRpY2t8fGQuc2hvd01pbm9yVGlja3MpKXt6KHRoaXMuX2xlZnQsayx0aGlzLl9yaWdodCxrKX1pZih2LnNob3dNYXJrJiZ2Lm1hcmsmJighdi5pc01pbm9yVGlja3x8ZC5zaG93TWlub3JUaWNrcykpe0E9di5tYXJrU2l6ZTtDPXYubWFyazt2YXIgaz1NYXRoLnJvdW5kKGQudTJwKHYudmFsdWUpKSswLjU7c3dpdGNoKEMpe2Nhc2Uib3V0c2lkZSI6TD10aGlzLl9yaWdodDtLPXRoaXMuX3JpZ2h0K0E7YnJlYWs7Y2FzZSJpbnNpZGUiOkw9dGhpcy5fcmlnaHQtQTtLPXRoaXMuX3JpZ2h0O2JyZWFrO2Nhc2UiY3Jvc3MiOkw9dGhpcy5fcmlnaHQtQTtLPXRoaXMuX3JpZ2h0K0E7YnJlYWs7ZGVmYXVsdDpMPXRoaXMuX3JpZ2h0O0s9dGhpcy5fcmlnaHQrQTticmVha31pZih0aGlzLnNoYWRvdyl7dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KEQsW1tMLGtdLFtLLGtdXSx7bGluZUNhcDoiYnV0dCIsbGluZVdpZHRoOnRoaXMuZ3JpZExpbmVXaWR0aCoxLjUsb2Zmc2V0OnRoaXMuZ3JpZExpbmVXaWR0aCowLjc1LGZpbGw6ZmFsc2UsY2xvc2VQYXRoOmZhbHNlfSl9eihMLGssSyxrLHtzdHJva2VTdHlsZTpkLmJvcmRlckNvbG9yfSl9YnJlYWs7ZGVmYXVsdDpicmVha319fXY9bnVsbH1kPW51bGw7TT1udWxsfUQucmVzdG9yZSgpO2Z1bmN0aW9uIHooaixpLGUsYixoKXtELnNhdmUoKTtoPWh8fHt9O2lmKGgubGluZVdpZHRoPT1udWxsfHxoLmxpbmVXaWR0aCE9MCl7YS5leHRlbmQodHJ1ZSxELGgpO0QuYmVnaW5QYXRoKCk7RC5tb3ZlVG8oaixpKTtELmxpbmVUbyhlLGIpO0Quc3Ryb2tlKCl9RC5yZXN0b3JlKCl9aWYodGhpcy5zaGFkb3cpe2lmKEcueU1pZEF4aXMuc2hvdyl7dmFyIEY9W1t0aGlzLl9sZWZ0LHRoaXMuX2JvdHRvbV0sW3UsdGhpcy5fYm90dG9tXV07dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KEQsRik7dmFyIEY9W1tmLHRoaXMuX2JvdHRvbV0sW3RoaXMuX3JpZ2h0LHRoaXMuX2JvdHRvbV0sW3RoaXMuX3JpZ2h0LHRoaXMuX3RvcF1dO3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhELEYpO3ZhciBGPVtbdSx0aGlzLl9ib3R0b21dLFt1LHRoaXMuX3RvcF1dO3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhELEYpfWVsc2V7dmFyIEY9W1t0aGlzLl9sZWZ0LHRoaXMuX2JvdHRvbV0sW3RoaXMuX3JpZ2h0LHRoaXMuX2JvdHRvbV0sW3RoaXMuX3JpZ2h0LHRoaXMuX3RvcF1dO3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhELEYpfX1pZih0aGlzLmJvcmRlcldpZHRoIT0wJiZ0aGlzLmRyYXdCb3JkZXIpe2lmKEcueU1pZEF4aXMuc2hvdyl7eih0aGlzLl9sZWZ0LHRoaXMuX3RvcCx1LHRoaXMuX3RvcCx7bGluZUNhcDoicm91bmQiLHN0cm9rZVN0eWxlOkcueDJheGlzLmJvcmRlckNvbG9yLGxpbmVXaWR0aDpHLngyYXhpcy5ib3JkZXJXaWR0aH0pO3ooZix0aGlzLl90b3AsdGhpcy5fcmlnaHQsdGhpcy5fdG9wLHtsaW5lQ2FwOiJyb3VuZCIsc3Ryb2tlU3R5bGU6Ry54MmF4aXMuYm9yZGVyQ29sb3IsbGluZVdpZHRoOkcueDJheGlzLmJvcmRlcldpZHRofSk7eih0aGlzLl9yaWdodCx0aGlzLl90b3AsdGhpcy5fcmlnaHQsdGhpcy5fYm90dG9tLHtsaW5lQ2FwOiJyb3VuZCIsc3Ryb2tlU3R5bGU6Ry55MmF4aXMuYm9yZGVyQ29sb3IsbGluZVdpZHRoOkcueTJheGlzLmJvcmRlcldpZHRofSk7eih0aGlzLl9yaWdodCx0aGlzLl9ib3R0b20sZix0aGlzLl9ib3R0b20se2xpbmVDYXA6InJvdW5kIixzdHJva2VTdHlsZTpHLnhheGlzLmJvcmRlckNvbG9yLGxpbmVXaWR0aDpHLnhheGlzLmJvcmRlcldpZHRofSk7eih1LHRoaXMuX2JvdHRvbSx0aGlzLl9sZWZ0LHRoaXMuX2JvdHRvbSx7bGluZUNhcDoicm91bmQiLHN0cm9rZVN0eWxlOkcueGF4aXMuYm9yZGVyQ29sb3IsbGluZVdpZHRoOkcueGF4aXMuYm9yZGVyV2lkdGh9KTt6KHRoaXMuX2xlZnQsdGhpcy5fYm90dG9tLHRoaXMuX2xlZnQsdGhpcy5fdG9wLHtsaW5lQ2FwOiJyb3VuZCIsc3Ryb2tlU3R5bGU6Ry55YXhpcy5ib3JkZXJDb2xvcixsaW5lV2lkdGg6Ry55YXhpcy5ib3JkZXJXaWR0aH0pO3oodSx0aGlzLl9ib3R0b20sdSx0aGlzLl90b3Ase2xpbmVDYXA6InJvdW5kIixzdHJva2VTdHlsZTpHLnlheGlzLmJvcmRlckNvbG9yLGxpbmVXaWR0aDpHLnlheGlzLmJvcmRlcldpZHRofSk7eihmLHRoaXMuX2JvdHRvbSxmLHRoaXMuX3RvcCx7bGluZUNhcDoicm91bmQiLHN0cm9rZVN0eWxlOkcueWF4aXMuYm9yZGVyQ29sb3IsbGluZVdpZHRoOkcueWF4aXMuYm9yZGVyV2lkdGh9KX1lbHNle3oodGhpcy5fbGVmdCx0aGlzLl90b3AsdGhpcy5fcmlnaHQsdGhpcy5fdG9wLHtsaW5lQ2FwOiJyb3VuZCIsc3Ryb2tlU3R5bGU6Ry54MmF4aXMuYm9yZGVyQ29sb3IsbGluZVdpZHRoOkcueDJheGlzLmJvcmRlcldpZHRofSk7eih0aGlzLl9yaWdodCx0aGlzLl90b3AsdGhpcy5fcmlnaHQsdGhpcy5fYm90dG9tLHtsaW5lQ2FwOiJyb3VuZCIsc3Ryb2tlU3R5bGU6Ry55MmF4aXMuYm9yZGVyQ29sb3IsbGluZVdpZHRoOkcueTJheGlzLmJvcmRlcldpZHRofSk7eih0aGlzLl9yaWdodCx0aGlzLl9ib3R0b20sdGhpcy5fbGVmdCx0aGlzLl9ib3R0b20se2xpbmVDYXA6InJvdW5kIixzdHJva2VTdHlsZTpHLnhheGlzLmJvcmRlckNvbG9yLGxpbmVXaWR0aDpHLnhheGlzLmJvcmRlcldpZHRofSk7eih0aGlzLl9sZWZ0LHRoaXMuX2JvdHRvbSx0aGlzLl9sZWZ0LHRoaXMuX3RvcCx7bGluZUNhcDoicm91bmQiLHN0cm9rZVN0eWxlOkcueWF4aXMuYm9yZGVyQ29sb3IsbGluZVdpZHRoOkcueWF4aXMuYm9yZGVyV2lkdGh9KX19RC5yZXN0b3JlKCk7RD1udWxsO0c9bnVsbH19KShqUXVlcnkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.pyramidRenderer.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewoKICAgIC8vIE5lZWQgdG8gZW5zdXJlIHB5cmFtaWQgYXhpcyBhbmQgZ3JpZCByZW5kZXJlcnMgYXJlIGxvYWRlZC4KICAgIC8vIFlvdSBzaG91bGQgbG9hZCB0aGVzZSB3aXRoIHNjcmlwdCB0YWdzIGluIHRoZSBodG1sIGhlYWQsIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQKICAgIC8vIGFzIHRoZSBicm93c2VyIHdpbGwgY2FjaGUgdGhlIHJlcXVlc3QuCiAgICAvLyBOb3RlLCBoYXZlIHRvIGJsb2NrIHdpdGggc3luY2hyb25vdXMgcmVxdWVzdCBpbiBvcmRlciB0byBleGVjdXRlIGJhciByZW5kZXJlciBjb2RlLgogICAgaWYgKCQuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXIgPT09IHVuZGVmaW5lZCkgewogICAgICAgICQuYWpheCh7CiAgICAgICAgICAgIHVybDogJC5qcXBsb3QucGx1Z2luTG9jYXRpb24gKyAnanFwbG90LnB5cmFtaWRBeGlzUmVuZGVyZXIuanMnLAogICAgICAgICAgICBkYXRhVHlwZTogInNjcmlwdCIsCiAgICAgICAgICAgIGFzeW5jOiBmYWxzZQogICAgICAgIH0pOwogICAgfQogICAgCiAgICBpZiAoJC5qcXBsb3QuUHlyYW1pZEdyaWRSZW5kZXJlciA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgJC5hamF4KHsKICAgICAgICAgICAgdXJsOiAkLmpxcGxvdC5wbHVnaW5Mb2NhdGlvbiArICdqcXBsb3QucHlyYW1pZEdyaWRSZW5kZXJlci5qcycsCiAgICAgICAgICAgIGRhdGFUeXBlOiAic2NyaXB0IiwKICAgICAgICAgICAgYXN5bmM6IGZhbHNlCiAgICAgICAgfSk7CiAgICB9CgogICAgJC5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyID0gZnVuY3Rpb24oKXsKICAgICAgICAkLmpxcGxvdC5MaW5lUmVuZGVyZXIuY2FsbCh0aGlzKTsKICAgIH07CiAgICAKICAgICQuanFwbG90LlB5cmFtaWRSZW5kZXJlci5wcm90b3R5cGUgPSBuZXcgJC5qcXBsb3QuTGluZVJlbmRlcmVyKCk7CiAgICAkLmpxcGxvdC5QeXJhbWlkUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gJC5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyOwogICAgCiAgICAvLyBjYWxsZWQgd2l0aCBzY29wZSBvZiBhIHNlcmllcwogICAgJC5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyLnByb3RvdHlwZS5pbml0ID0gZnVuY3Rpb24ob3B0aW9ucywgcGxvdCkgewogICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogICAgICAgIHRoaXMuX3R5cGUgPSAncHlyYW1pZCc7CiAgICAgICAgLy8gR3JvdXA6IFByb3BlcnRpZXMKICAgICAgICAvLwogICAgICAgIC8vIHByb3A6IGJhclBhZGRpbmcKICAgICAgICB0aGlzLmJhclBhZGRpbmcgPSAxMDsKICAgICAgICB0aGlzLmJhcldpZHRoID0gbnVsbDsKICAgICAgICAvLyBwcm9wOiBmaWxsCiAgICAgICAgLy8gVHJ1ZSB0byBmaWxsIHRoZSBiYXJzLgogICAgICAgIHRoaXMuZmlsbCA9IHRydWU7CiAgICAgICAgLy8gcHJvcDogaGlnaGxpZ2h0TW91c2VPdmVyCiAgICAgICAgLy8gVHJ1ZSB0byBoaWdobGlnaHQgc2xpY2Ugd2hlbiBtb3VzZWQgb3Zlci4KICAgICAgICAvLyBUaGlzIG11c3QgYmUgZmFsc2UgdG8gZW5hYmxlIGhpZ2hsaWdodE1vdXNlRG93biB0byBoaWdobGlnaHQgd2hlbiBjbGlja2luZyBvbiBhIHNsaWNlLgogICAgICAgIHRoaXMuaGlnaGxpZ2h0TW91c2VPdmVyID0gdHJ1ZTsKICAgICAgICAvLyBwcm9wOiBoaWdobGlnaHRNb3VzZURvd24KICAgICAgICAvLyBUcnVlIHRvIGhpZ2hsaWdodCB3aGVuIGEgbW91c2UgYnV0dG9uIGlzIHByZXNzZWQgb3ZlciBhIHNsaWNlLgogICAgICAgIC8vIFRoaXMgd2lsbCBiZSBkaXNhYmxlZCBpZiBoaWdobGlnaHRNb3VzZU92ZXIgaXMgdHJ1ZS4KICAgICAgICB0aGlzLmhpZ2hsaWdodE1vdXNlRG93biA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IGhpZ2hsaWdodENvbG9ycwogICAgICAgIC8vIGFuIGFycmF5IG9mIGNvbG9ycyB0byB1c2Ugd2hlbiBoaWdobGlnaHRpbmcgYSBzbGljZS4KICAgICAgICB0aGlzLmhpZ2hsaWdodENvbG9ycyA9IFtdOwogICAgICAgIC8vIHByb3AgaGlnaGxpZ2h0VGhyZXNob2xkCiAgICAgICAgLy8gRXhwYW5kIHRoZSBoaWdobGlnaHRhYmxlIHJlZ2lvbiBpbiB0aGUgeCBkaXJlY3Rpb24uCiAgICAgICAgLy8gRS5nLiBhIHZhbHVlIG9mIDMgd2lsbCBoaWdobGlnaHQgYSBiYXIgd2hlbiB0aGUgbW91c2UgaXMKICAgICAgICAvLyB3aXRoaW4gMyBwaXhlbHMgb2YgdGhlIGJhciBpbiB0aGUgeCBkaXJlY3Rpb24uCiAgICAgICAgdGhpcy5oaWdobGlnaHRUaHJlc2hvbGQgPSAyOwogICAgICAgIC8vIHByb3A6IHN5bmNocm9uaXplSGlnaGxpZ2h0CiAgICAgICAgLy8gSW5kZXggb2YgYW5vdGhlciBzZXJpZXMgdG8gaGlnaGxpZ2h0IHdoZW4gdGhpcyBzZXJpZXMgaXMgaGlnaGxpZ2h0ZWQuCiAgICAgICAgLy8gbnVsbCBvciBmYWxzZSB0byBub3Qgc3luY2hyb25pemUuCiAgICAgICAgdGhpcy5zeW5jaHJvbml6ZUhpZ2hsaWdodCA9IGZhbHNlOwogICAgICAgIC8vIHByb3A6IG9mZnNldEJhcnMKICAgICAgICAvLyBGYWxzZSB3aWxsIGNlbnRlciBiYXJzIG9uIHRoZWlyIHkgdmFsdWUuCiAgICAgICAgLy8gVHJ1ZSB3aWxsIHB1c2ggYmFycyB1cCBieSAxLzIgYmFyIHdpZHRoIHRvIGZpbGwgYmV0d2VlbiB0aGVpciB5IHZhbHVlcy4KICAgICAgICAvLyBJZiB0cnVlLCB0aGVyZSBuZWVkcyB0byBiZSAxIG1vcmUgdGljayB0aGFuIHRoZXJlIGFyZSBiYXJzLgogICAgICAgIHRoaXMub2Zmc2V0QmFycyA9IGZhbHNlOwogICAgICAgIAogICAgICAgIC8vIGlmIHVzZXIgaGFzIHBhc3NlZCBpbiBoaWdobGlnaHRNb3VzZURvd24gb3B0aW9uIGFuZCBub3Qgc2V0IGhpZ2hsaWdodE1vdXNlT3ZlciwgZGlzYWJsZSBoaWdobGlnaHRNb3VzZU92ZXIKICAgICAgICBpZiAob3B0aW9ucy5oaWdobGlnaHRNb3VzZURvd24gJiYgb3B0aW9ucy5oaWdobGlnaHRNb3VzZU92ZXIgPT0gbnVsbCkgewogICAgICAgICAgICBvcHRpb25zLmhpZ2hsaWdodE1vdXNlT3ZlciA9IGZhbHNlOwogICAgICAgIH0KCiAgICAgICAgdGhpcy5zaWRlID0gJ3JpZ2h0JzsKICAgICAgICAKICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLCBvcHRpb25zKTsKCiAgICAgICAgLy8gaWYgKHRoaXMuZmlsbCA9PT0gZmFsc2UpIHsKICAgICAgICAvLyAgICAgdGhpcy5zaGFkb3cgPSBmYWxzZTsKICAgICAgICAvLyB9CgogICAgICAgIGlmICh0aGlzLnNpZGUgPT09ICdsZWZ0JykgewogICAgICAgICAgICB0aGlzLl9oaWdobGlnaHRUaHJlc2hvbGQgPSBbWy10aGlzLmhpZ2hsaWdodFRocmVzaG9sZCwgMF0sIFstdGhpcy5oaWdobGlnaHRUaHJlc2hvbGQsIDBdLCBbMCwwXSwgWzAsMF1dOwogICAgICAgIH0KCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHRoaXMuX2hpZ2hsaWdodFRocmVzaG9sZCA9IFtbMCwwXSwgWzAsMF0sIFt0aGlzLmhpZ2hsaWdodFRocmVzaG9sZCwgMF0sIFt0aGlzLmhpZ2hsaWdodFRocmVzaG9sZCwgMF1dOwogICAgICAgIH0KICAgICAgICAKICAgICAgICB0aGlzLnJlbmRlcmVyLm9wdGlvbnMgPSBvcHRpb25zOwogICAgICAgIC8vIGluZGV4IG9mIHRoZSBjdXJyZW50eSBoaWdobGlnaHRlZCBwb2ludCwgaWYgYW55CiAgICAgICAgdGhpcy5faGlnaGxpZ2h0ZWRQb2ludCA9IG51bGw7CiAgICAgICAgLy8gQXJyYXkgb2YgYWN0dWFsIGRhdGEgY29sb3JzIHVzZWQgZm9yIGVhY2ggZGF0YSBwb2ludC4KICAgICAgICB0aGlzLl9kYXRhQ29sb3JzID0gW107CiAgICAgICAgdGhpcy5fYmFyUG9pbnRzID0gW107CiAgICAgICAgdGhpcy5maWxsQXhpcyA9ICd5JzsKICAgICAgICB0aGlzLl9wcmltYXJ5QXhpcyA9ICdfeWF4aXMnOwogICAgICAgIHRoaXMuX3hudWRnZSA9IDA7CiAgICAgICAgCiAgICAgICAgLy8gc2V0IHRoZSBzaGFwZSByZW5kZXJlciBvcHRpb25zCiAgICAgICAgdmFyIG9wdHMgPSB7bGluZUpvaW46J21pdGVyJywgbGluZUNhcDonYnV0dCcsIGZpbGw6dGhpcy5maWxsLCBmaWxsUmVjdDp0aGlzLmZpbGwsIGlzYXJjOmZhbHNlLCBzdHJva2VTdHlsZTp0aGlzLmNvbG9yLCBmaWxsU3R5bGU6dGhpcy5jb2xvciwgY2xvc2VQYXRoOnRoaXMuZmlsbCwgbGluZVdpZHRoOiB0aGlzLmxpbmVXaWR0aH07CiAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmluaXQob3B0cyk7CiAgICAgICAgLy8gc2V0IHRoZSBzaGFkb3cgcmVuZGVyZXIgb3B0aW9ucwogICAgICAgIHZhciBzaGFkb3dfb2Zmc2V0ID0gb3B0aW9ucy5zaGFkb3dPZmZzZXQ7CiAgICAgICAgLy8gc2V0IHRoZSBzaGFkb3cgcmVuZGVyZXIgb3B0aW9ucwogICAgICAgIGlmIChzaGFkb3dfb2Zmc2V0ID09IG51bGwpIHsKICAgICAgICAgICAgLy8gc2NhbGUgdGhlIHNoYWRvd09mZnNldCB0byB0aGUgd2lkdGggb2YgdGhlIGxpbmUuCiAgICAgICAgICAgIGlmICh0aGlzLmxpbmVXaWR0aCA+IDIuNSkgewogICAgICAgICAgICAgICAgc2hhZG93X29mZnNldCA9IDEuMjUgKiAoMSArIChNYXRoLmF0YW4oKHRoaXMubGluZVdpZHRoLzIuNSkpLzAuNzg1Mzk4MTYzIC0gMSkqMC42KTsKICAgICAgICAgICAgICAgIC8vIHZhciBzaGFkb3dfb2Zmc2V0ID0gdGhpcy5zaGFkb3dPZmZzZXQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gZm9yIHNraW5ueSBsaW5lcywgZG9uJ3QgbWFrZSBzdWNoIGEgYmlnIHNoYWRvdy4KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBzaGFkb3dfb2Zmc2V0ID0gMS4yNSAqIE1hdGguYXRhbigodGhpcy5saW5lV2lkdGgvMi41KSkvMC43ODUzOTgxNjM7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgdmFyIHNvcHRzID0ge2xpbmVKb2luOidtaXRlcicsIGxpbmVDYXA6J2J1dHQnLCBmaWxsOnRoaXMuZmlsbCwgZmlsbFJlY3Q6dGhpcy5maWxsLCBpc2FyYzpmYWxzZSwgYW5nbGU6dGhpcy5zaGFkb3dBbmdsZSwgb2Zmc2V0OnNoYWRvd19vZmZzZXQsIGFscGhhOnRoaXMuc2hhZG93QWxwaGEsIGRlcHRoOnRoaXMuc2hhZG93RGVwdGgsIGNsb3NlUGF0aDp0aGlzLmZpbGwsIGxpbmVXaWR0aDogdGhpcy5saW5lV2lkdGh9OwogICAgICAgIHRoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuaW5pdChzb3B0cyk7CgogICAgICAgIHBsb3QucG9zdERyYXdIb29rcy5hZGRPbmNlKHBvc3RQbG90RHJhdyk7CiAgICAgICAgcGxvdC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgnanFwbG90TW91c2VNb3ZlJywgaGFuZGxlTW92ZSk7CgogICAgICAgIC8vIGlmIHRoaXMgaXMgdGhlIGxlZnQgc2lkZSBvZiBweXJhbWlkLCBzZXQgeSB2YWx1ZXMgdG8gbmVnYXRpdmUuCiAgICAgICAgaWYgKHRoaXMuc2lkZSA9PT0gJ2xlZnQnKSB7CiAgICAgICAgICAgIGZvciAodmFyIGk9MCwgbD10aGlzLmRhdGEubGVuZ3RoOyBpPGw7IGkrKykgewogICAgICAgICAgICAgICAgdGhpcy5kYXRhW2ldWzFdID0gLU1hdGguYWJzKHRoaXMuZGF0YVtpXVsxXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwogICAgCiAgICAvLyBzZXRHcmlkRGF0YQogICAgLy8gY29udmVydHMgdGhlIHVzZXIgZGF0YSB2YWx1ZXMgdG8gZ3JpZCBjb29yZGluYXRlcyBhbmQgc3RvcmVzIHRoZW0KICAgIC8vIGluIHRoZSBncmlkRGF0YSBhcnJheS4KICAgIC8vIENhbGxlZCB3aXRoIHNjb3BlIG9mIGEgc2VyaWVzLgogICAgJC5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyLnByb3RvdHlwZS5zZXRHcmlkRGF0YSA9IGZ1bmN0aW9uKHBsb3QpIHsKICAgICAgICAvLyByZWNhbGN1bGF0ZSB0aGUgZ3JpZCBkYXRhCiAgICAgICAgdmFyIHhwID0gdGhpcy5feGF4aXMuc2VyaWVzX3UycDsKICAgICAgICB2YXIgeXAgPSB0aGlzLl95YXhpcy5zZXJpZXNfdTJwOwogICAgICAgIHZhciBkYXRhID0gdGhpcy5fcGxvdERhdGE7CiAgICAgICAgdmFyIHBkYXRhID0gdGhpcy5fcHJldlBsb3REYXRhOwogICAgICAgIHRoaXMuZ3JpZERhdGEgPSBbXTsKICAgICAgICB0aGlzLl9wcmV2R3JpZERhdGEgPSBbXTsKICAgICAgICB2YXIgbCA9IGRhdGEubGVuZ3RoOwogICAgICAgIHZhciBhZGp1c3QgPSBmYWxzZTsKICAgICAgICB2YXIgaTsKCiAgICAgICAgLy8gaWYgYW55IGRhdGEgdmFsdWVzIGFyZSA8IDAsICBjb25zaWRlciB0aGlzIGEgbmVnYXRpdmUgc2VyaWVzCiAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykgewogICAgICAgICAgICBpZiAoZGF0YVtpXVsxXSA8IDApIHsKICAgICAgICAgICAgICAgIHRoaXMuc2lkZSA9ICdsZWZ0JzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMuX3lheGlzLm5hbWUgPT09ICd5TWlkQXhpcycgJiYgdGhpcy5zaWRlID09PSAncmlnaHQnKSB7CiAgICAgICAgICAgIHRoaXMuX3hudWRnZSA9IHRoaXMuX3hheGlzLm1heC8yMDAwLjA7CiAgICAgICAgICAgIGFkanVzdCA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7CiAgICAgICAgICAgIC8vIGlmIG5vdCBhIGxpbmUgc2VyaWVzIG9yIGlmIG5vIG51bGxzIGluIGRhdGEsIHB1c2ggdGhlIGNvbnZlcnRlZCBwb2ludCBvbnRvIHRoZSBhcnJheS4KICAgICAgICAgICAgaWYgKGRhdGFbaV1bMF0gIT0gbnVsbCAmJiBkYXRhW2ldWzFdICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEucHVzaChbeHAoZGF0YVtpXVsxXSksIHlwKGRhdGFbaV1bMF0pXSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gZWxzZSBpZiB0aGVyZSBpcyBhIG51bGwsIHByZXNlcnZlIGl0LgogICAgICAgICAgICBlbHNlIGlmIChkYXRhW2ldWzBdID09IG51bGwpIHsKICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEucHVzaChbeHAoZGF0YVtpXVsxXSksIG51bGxdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChkYXRhW2ldWzFdID09IG51bGwpIHsKICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGEucHVzaChudWxsLCBbeXAoZGF0YVtpXVswXSldKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBmaW5hbGx5LCBhZGp1c3QgeCBncmlkIGRhdGEgaWYgaGF2ZSB0bwogICAgICAgICAgICBpZiAoZGF0YVtpXVsxXSA9PT0gMCAmJiBhZGp1c3QpIHsKICAgICAgICAgICAgICAgIHRoaXMuZ3JpZERhdGFbaV1bMF0gPSB4cCh0aGlzLl94bnVkZ2UpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKICAgIAogICAgLy8gbWFrZUdyaWREYXRhCiAgICAvLyBjb252ZXJ0cyBhbnkgYXJiaXRyYXJ5IGRhdGEgdmFsdWVzIHRvIGdyaWQgY29vcmRpbmF0ZXMgYW5kCiAgICAvLyByZXR1cm5zIHRoZW0uICBUaGlzIG1ldGhvZCBleGlzdHMgc28gdGhhdCBwbHVnaW5zIGNhbiB1c2UgYSBzZXJpZXMnCiAgICAvLyBsaW5lcmVuZGVyZXIgdG8gZ2VuZXJhdGUgZ3JpZCBkYXRhIHBvaW50cyB3aXRob3V0IG92ZXJ3cml0aW5nIHRoZQogICAgLy8gZ3JpZCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGF0IHNlcmllcy4KICAgIC8vIENhbGxlZCB3aXRoIHNjb3BlIG9mIGEgc2VyaWVzLgogICAgJC5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyLnByb3RvdHlwZS5tYWtlR3JpZERhdGEgPSBmdW5jdGlvbihkYXRhLCBwbG90KSB7CiAgICAgICAgLy8gcmVjYWxjdWxhdGUgdGhlIGdyaWQgZGF0YQogICAgICAgIHZhciB4cCA9IHRoaXMuX3hheGlzLnNlcmllc191MnA7CiAgICAgICAgdmFyIHlwID0gdGhpcy5feWF4aXMuc2VyaWVzX3UycDsKICAgICAgICB2YXIgZ2QgPSBbXTsKICAgICAgICB2YXIgbCA9IGRhdGEubGVuZ3RoOwogICAgICAgIHZhciBhZGp1c3QgPSBmYWxzZTsKICAgICAgICB2YXIgaTsKCiAgICAgICAgLy8gaWYgYW55IGRhdGEgdmFsdWVzIGFyZSA8IDAsICBjb25zaWRlciB0aGlzIGEgbmVnYXRpdmUgc2VyaWVzCiAgICAgICAgZm9yIChpID0gMDsgaSA8IGw7IGkrKykgewogICAgICAgICAgICBpZiAoZGF0YVtpXVsxXSA8IDApIHsKICAgICAgICAgICAgICAgIHRoaXMuc2lkZSA9ICdsZWZ0JzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHRoaXMuX3lheGlzLm5hbWUgPT09ICd5TWlkQXhpcycgJiYgdGhpcy5zaWRlID09PSAncmlnaHQnKSB7CiAgICAgICAgICAgIHRoaXMuX3hudWRnZSA9IHRoaXMuX3hheGlzLm1heC8yMDAwLjA7CiAgICAgICAgICAgIGFkanVzdCA9IHRydWU7CiAgICAgICAgfQoKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbDsgaSsrKSB7CiAgICAgICAgICAgIC8vIGlmIG5vdCBhIGxpbmUgc2VyaWVzIG9yIGlmIG5vIG51bGxzIGluIGRhdGEsIHB1c2ggdGhlIGNvbnZlcnRlZCBwb2ludCBvbnRvIHRoZSBhcnJheS4KICAgICAgICAgICAgaWYgKGRhdGFbaV1bMF0gIT0gbnVsbCAmJiBkYXRhW2ldWzFdICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIGdkLnB1c2goW3hwKGRhdGFbaV1bMV0pLCB5cChkYXRhW2ldWzBdKV0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIGVsc2UgaWYgdGhlcmUgaXMgYSBudWxsLCBwcmVzZXJ2ZSBpdC4KICAgICAgICAgICAgZWxzZSBpZiAoZGF0YVtpXVswXSA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICBnZC5wdXNoKFt4cChkYXRhW2ldWzFdKSwgbnVsbF0pOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYgKGRhdGFbaV1bMV0gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgZ2QucHVzaChbbnVsbCwgeXAoZGF0YVtpXVswXSldKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBmaW5hbGx5LCBhZGp1c3QgeCBncmlkIGRhdGEgaWYgaGF2ZSB0bwogICAgICAgICAgICBpZiAoZGF0YVtpXVsxXSA9PT0gMCAmJiBhZGp1c3QpIHsKICAgICAgICAgICAgICAgIGdkW2ldWzBdID0geHAodGhpcy5feG51ZGdlKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGdkOwogICAgfTsKCiAgICAkLmpxcGxvdC5QeXJhbWlkUmVuZGVyZXIucHJvdG90eXBlLnNldEJhcldpZHRoID0gZnVuY3Rpb24oKSB7CiAgICAgICAgLy8gbmVlZCB0byBrbm93IGhvdyBtYW55IGRhdGEgdmFsdWVzIHdlIGhhdmUgb24gdGhlIGFwcHJvcHJhdGUgYXhpcyBhbmQgZmlndXJlIGl0IG91dC4KICAgICAgICB2YXIgaTsKICAgICAgICB2YXIgbnZhbHMgPSAwOwogICAgICAgIHZhciBuc2VyaWVzID0gMDsKICAgICAgICB2YXIgcGF4aXMgPSB0aGlzW3RoaXMuX3ByaW1hcnlBeGlzXTsKICAgICAgICB2YXIgcywgc2VyaWVzLCBwb3M7CiAgICAgICAgbnZhbHMgPSBwYXhpcy5tYXggLSBwYXhpcy5taW47CiAgICAgICAgdmFyIG50aWNrcyA9IHBheGlzLm51bWJlclRpY2tzOwogICAgICAgIHZhciBuYmlucyA9IChudGlja3MtMSkvMjsKICAgICAgICAvLyBzbywgbm93IHdlIGhhdmUgdG90YWwgbnVtYmVyIG9mIGF4aXMgdmFsdWVzLgogICAgICAgIHZhciB0ZW1wID0gKHRoaXMuYmFyUGFkZGluZyA9PT0gMCkgPyAxLjAgOiAwOwogICAgICAgIGlmIChwYXhpcy5uYW1lID09ICd4YXhpcycgfHwgcGF4aXMubmFtZSA9PSAneDJheGlzJykgewogICAgICAgICAgICB0aGlzLmJhcldpZHRoID0gKHBheGlzLl9vZmZzZXRzLm1heCAtIHBheGlzLl9vZmZzZXRzLm1pbikgLyBudmFscyAtIHRoaXMuYmFyUGFkZGluZyArIHRlbXA7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBpZiAodGhpcy5maWxsKSB7CiAgICAgICAgICAgICAgICB0aGlzLmJhcldpZHRoID0gKHBheGlzLl9vZmZzZXRzLm1pbiAtIHBheGlzLl9vZmZzZXRzLm1heCkgLyBudmFscyAtIHRoaXMuYmFyUGFkZGluZyArIHRlbXA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICB0aGlzLmJhcldpZHRoID0gKHBheGlzLl9vZmZzZXRzLm1pbiAtIHBheGlzLl9vZmZzZXRzLm1heCkgLyBudmFsczsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH07CiAgICAKICAgICQuanFwbG90LlB5cmFtaWRSZW5kZXJlci5wcm90b3R5cGUuZHJhdyA9IGZ1bmN0aW9uKGN0eCwgZ3JpZERhdGEsIG9wdGlvbnMpIHsKICAgICAgICB2YXIgaTsKICAgICAgICAvLyBVZ2hoaCwgaGF2ZSB0byBtYWtlIGEgY29weSBvZiBvcHRpb25zIGIvYyBpdCBtYXkgYmUgbW9kaWZpZWQgbGF0ZXIuCiAgICAgICAgdmFyIG9wdHMgPSAkLmV4dGVuZCh7fSwgb3B0aW9ucyk7CiAgICAgICAgdmFyIHNoYWRvdyA9IChvcHRzLnNoYWRvdyAhPSB1bmRlZmluZWQpID8gb3B0cy5zaGFkb3cgOiB0aGlzLnNoYWRvdzsKICAgICAgICB2YXIgc2hvd0xpbmUgPSAob3B0cy5zaG93TGluZSAhPSB1bmRlZmluZWQpID8gb3B0cy5zaG93TGluZSA6IHRoaXMuc2hvd0xpbmU7CiAgICAgICAgdmFyIGZpbGwgPSAob3B0cy5maWxsICE9IHVuZGVmaW5lZCkgPyBvcHRzLmZpbGwgOiB0aGlzLmZpbGw7CiAgICAgICAgdmFyIHhwID0gdGhpcy5feGF4aXMuc2VyaWVzX3UycDsKICAgICAgICB2YXIgeXAgPSB0aGlzLl95YXhpcy5zZXJpZXNfdTJwOwogICAgICAgIHZhciBwb2ludHgsIHBvaW50eTsKICAgICAgICAvLyBjbGVhciBvdXQgZGF0YSBjb2xvcnMuCiAgICAgICAgdGhpcy5fZGF0YUNvbG9ycyA9IFtdOwogICAgICAgIHRoaXMuX2JhclBvaW50cyA9IFtdOwogICAgICAgIAogICAgICAgIGlmICh0aGlzLnJlbmRlcmVyLm9wdGlvbnMuYmFyV2lkdGggPT0gbnVsbCkgewogICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEJhcldpZHRoLmNhbGwodGhpcyk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIHZhciB0ZW1wID0gdGhpcy5fcGxvdFNlcmllc0luZm8gPSB0aGlzLnJlbmRlcmVyLmNhbGNTZXJpZXNOdW1iZXJzLmNhbGwodGhpcyk7CiAgICAgICAgLy8gdmFyIG52YWxzID0gdGVtcFswXTsKICAgICAgICAvLyB2YXIgbnNlcmllcyA9IHRlbXBbMV07CiAgICAgICAgLy8gdmFyIHBvcyA9IHRlbXBbMl07CiAgICAgICAgdmFyIHBvaW50cyA9IFtdLAogICAgICAgICAgICB3LAogICAgICAgICAgICBoOwogICAgICAgIAogICAgICAgIC8vIHRoaXMuX2Jhck51ZGdlID0gMDsKCiAgICAgICAgaWYgKHNob3dMaW5lKSB7CiAgICAgICAgICAgIHZhciBuZWdhdGl2ZUNvbG9ycyA9IG5ldyAkLmpxcGxvdC5Db2xvckdlbmVyYXRvcih0aGlzLm5lZ2F0aXZlU2VyaWVzQ29sb3JzKTsKICAgICAgICAgICAgdmFyIHBvc2l0aXZlQ29sb3JzID0gbmV3ICQuanFwbG90LkNvbG9yR2VuZXJhdG9yKHRoaXMuc2VyaWVzQ29sb3JzKTsKICAgICAgICAgICAgdmFyIG5lZ2F0aXZlQ29sb3IgPSBuZWdhdGl2ZUNvbG9ycy5nZXQodGhpcy5pbmRleCk7CiAgICAgICAgICAgIGlmICghIHRoaXMudXNlTmVnYXRpdmVDb2xvcnMpIHsKICAgICAgICAgICAgICAgIG5lZ2F0aXZlQ29sb3IgPSBvcHRzLmZpbGxTdHlsZTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgcG9zaXRpdmVDb2xvciA9IG9wdHMuZmlsbFN0eWxlOwogICAgICAgICAgICB2YXIgYmFzZTsKICAgICAgICAgICAgdmFyIHhzdGFydCA9IHRoaXMuX3hheGlzLnNlcmllc191MnAodGhpcy5feG51ZGdlKTsKICAgICAgICAgICAgdmFyIHlzdGFydCA9IHRoaXMuX3lheGlzLnNlcmllc191MnAodGhpcy5feWF4aXMubWluKTsKICAgICAgICAgICAgdmFyIHllbmQgPSB0aGlzLl95YXhpcy5zZXJpZXNfdTJwKHRoaXMuX3lheGlzLm1heCk7CiAgICAgICAgICAgIHZhciBidyA9IHRoaXMuYmFyV2lkdGg7CiAgICAgICAgICAgIHZhciBidzIgPSBidy8yLjA7CiAgICAgICAgICAgIHZhciBwb2ludHMgPSBbXTsKICAgICAgICAgICAgdmFyIHlhZGogPSB0aGlzLm9mZnNldEJhcnMgPyBidzIgOiAwOwogICAgICAgICAgICAKICAgICAgICAgICAgZm9yICh2YXIgaT0wLCBsPWdyaWREYXRhLmxlbmd0aDsgaTxsOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmICh0aGlzLmRhdGFbaV1bMF0gPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYmFzZSA9IGdyaWREYXRhW2ldWzFdOwogICAgICAgICAgICAgICAgLy8gbm90IHN0YWNrZWQgYW5kIGZpcnN0IHNlcmllcyBpbiBzdGFjawoKICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wbG90RGF0YVtpXVsxXSA8IDApIHsKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy52YXJ5QmFyQ29sb3IgJiYgIXRoaXMuX3N0YWNrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnVzZU5lZ2F0aXZlQ29sb3JzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmZpbGxTdHlsZSA9IG5lZ2F0aXZlQ29sb3JzLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuZmlsbFN0eWxlID0gcG9zaXRpdmVDb2xvcnMubmV4dCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmFyeUJhckNvbG9yICYmICF0aGlzLl9zdGFjaykgewogICAgICAgICAgICAgICAgICAgICAgICBvcHRzLmZpbGxTdHlsZSA9IHBvc2l0aXZlQ29sb3JzLm5leHQoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG9wdHMuZmlsbFN0eWxlID0gcG9zaXRpdmVDb2xvcjsKICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgaWYgKHRoaXMuZmlsbCkgewoKICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5fcGxvdERhdGFbaV1bMV0gPj0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAvLyB4c3RhcnQgPSB0aGlzLl94YXhpcy5zZXJpZXNfdTJwKHRoaXMuX3hudWRnZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHcgPSBncmlkRGF0YVtpXVswXSAtIHhzdGFydDsKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHRoaXMuYmFyV2lkdGg7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IFt4c3RhcnQsIGJhc2UgLSBidzIgLSB5YWRqLCB3LCBoXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHhzdGFydCA9IHRoaXMuX3hheGlzLnNlcmllc191MnAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHcgPSB4c3RhcnQgLSBncmlkRGF0YVtpXVswXTsKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IHRoaXMuYmFyV2lkdGg7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IFtncmlkRGF0YVtpXVswXSwgYmFzZSAtIGJ3MiAtIHlhZGosIHcsIGhdOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgdGhpcy5fYmFyUG9pbnRzLnB1c2goW1twb2ludHNbMF0sIHBvaW50c1sxXSArIGhdLCBbcG9pbnRzWzBdLCBwb2ludHNbMV1dLCBbcG9pbnRzWzBdICsgdywgcG9pbnRzWzFdXSwgW3BvaW50c1swXSArIHcsIHBvaW50c1sxXSArIGhdXSk7CgogICAgICAgICAgICAgICAgICAgIGlmIChzaGFkb3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KGN0eCwgcG9pbnRzKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgdmFyIGNsciA9IG9wdHMuZmlsbFN0eWxlIHx8IHRoaXMuY29sb3I7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGF0YUNvbG9ycy5wdXNoKGNscik7CiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmRyYXcoY3R4LCBwb2ludHMsIG9wdHMpOyAKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPVtbeHN0YXJ0LCB5c3RhcnRdLCBbZ3JpZERhdGFbaV1bMF0sIHlzdGFydF0sIFtncmlkRGF0YVtpXVswXSwgZ3JpZERhdGFbaV1bMV0gLSBidzIgLSB5YWRqXV07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChpIDwgbC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyA9IHBvaW50cy5jb25jYXQoW1tncmlkRGF0YVtpLTFdWzBdLCBncmlkRGF0YVtpLTFdWzFdIC0gYncyIC0geWFkal0sIFtncmlkRGF0YVtpXVswXSwgZ3JpZERhdGFbaV1bMV0gKyBidzIgLSB5YWRqXSwgW2dyaWREYXRhW2ldWzBdLCBncmlkRGF0YVtpXVsxXSAtIGJ3MiAtIHlhZGpdXSk7CiAgICAgICAgICAgICAgICAgICAgfSAKCiAgICAgICAgICAgICAgICAgICAgLy8gZmluYWxseSwgZHJhdyB0aGUgbGluZQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBwb2ludHMgPSBwb2ludHMuY29uY2F0KFtbZ3JpZERhdGFbaS0xXVswXSwgZ3JpZERhdGFbaS0xXVsxXSAtIGJ3MiAtIHlhZGpdLCBbZ3JpZERhdGFbaV1bMF0sIGdyaWREYXRhW2ldWzFdICsgYncyIC0geWFkal0sIFtncmlkRGF0YVtpXVswXSwgeWVuZF0sIFt4c3RhcnQsIHllbmRdXSk7CiAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaGFkb3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhjdHgsIHBvaW50cyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNsciA9IG9wdHMuZmlsbFN0eWxlIHx8IHRoaXMuY29sb3I7CiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFDb2xvcnMucHVzaChjbHIpOwogICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhjdHgsIHBvaW50cywgb3B0cyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9ICAKICAgICAgICB9ICAgICAgICAKICAgICAgICAKICAgICAgICBpZiAodGhpcy5oaWdobGlnaHRDb2xvcnMubGVuZ3RoID09IDApIHsKICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRDb2xvcnMgPSAkLmpxcGxvdC5jb21wdXRlSGlnaGxpZ2h0Q29sb3JzKHRoaXMuX2RhdGFDb2xvcnMpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBlbHNlIGlmICh0eXBlb2YodGhpcy5oaWdobGlnaHRDb2xvcnMpID09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0Q29sb3JzID0gW107CiAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTx0aGlzLl9kYXRhQ29sb3JzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICB0aGlzLmhpZ2hsaWdodENvbG9ycy5wdXNoKHRoaXMuaGlnaGxpZ2h0Q29sb3JzKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgIH07CgogICAgICAgIAogICAgLy8gc2V0dXAgZGVmYXVsdCByZW5kZXJlcnMgZm9yIGF4ZXMgYW5kIGxlZ2VuZCBzbyB1c2VyIGRvZXNuJ3QgaGF2ZSB0bwogICAgLy8gY2FsbGVkIHdpdGggc2NvcGUgb2YgcGxvdAogICAgZnVuY3Rpb24gcHJlSW5pdCh0YXJnZXQsIGRhdGEsIG9wdGlvbnMpIHsKICAgICAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKICAgICAgICBvcHRpb25zLmF4ZXNEZWZhdWx0cyA9IG9wdGlvbnMuYXhlc0RlZmF1bHRzIHx8IHt9OwogICAgICAgIG9wdGlvbnMuZ3JpZCA9IG9wdGlvbnMuZ3JpZCB8fCB7fTsKICAgICAgICBvcHRpb25zLmxlZ2VuZCA9IG9wdGlvbnMubGVnZW5kIHx8IHt9OwogICAgICAgIG9wdGlvbnMuc2VyaWVzRGVmYXVsdHMgPSBvcHRpb25zLnNlcmllc0RlZmF1bHRzIHx8IHt9OwogICAgICAgIC8vIG9ubHkgc2V0IHRoZXNlIGlmIHRoZXJlIGlzIGEgcGllIHNlcmllcwogICAgICAgIHZhciBzZXRvcHRzID0gZmFsc2U7CiAgICAgICAgaWYgKG9wdGlvbnMuc2VyaWVzRGVmYXVsdHMucmVuZGVyZXIgPT09ICQuanFwbG90LlB5cmFtaWRSZW5kZXJlcikgewogICAgICAgICAgICBzZXRvcHRzID0gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAob3B0aW9ucy5zZXJpZXMpIHsKICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpIDwgb3B0aW9ucy5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIGlmIChvcHRpb25zLnNlcmllc1tpXS5yZW5kZXJlciA9PT0gJC5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyKSB7CiAgICAgICAgICAgICAgICAgICAgc2V0b3B0cyA9IHRydWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKHNldG9wdHMpIHsKICAgICAgICAgICAgb3B0aW9ucy5heGVzRGVmYXVsdHMucmVuZGVyZXIgPSAkLmpxcGxvdC5QeXJhbWlkQXhpc1JlbmRlcmVyOwogICAgICAgICAgICBvcHRpb25zLmdyaWQucmVuZGVyZXIgPSAkLmpxcGxvdC5QeXJhbWlkR3JpZFJlbmRlcmVyOwogICAgICAgICAgICBvcHRpb25zLnNlcmllc0RlZmF1bHRzLnBvaW50TGFiZWxzID0ge3Nob3c6IGZhbHNlfTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoaW4gY29udGV4dCBvZiBwbG90CiAgICAvLyBjcmVhdGUgYSBjYW52YXMgd2hpY2ggd2UgY2FuIGRyYXcgb24uCiAgICAvLyBpbnNlcnQgaXQgYmVmb3JlIHRoZSBldmVudENhbnZhcywgc28gZXZlbnRDYW52YXMgd2lsbCBzdGlsbCBjYXB0dXJlIGV2ZW50cy4KICAgIGZ1bmN0aW9uIHBvc3RQbG90RHJhdygpIHsKICAgICAgICAvLyBNZW1vcnkgTGVha3MgcGF0Y2ggICAgCiAgICAgICAgaWYgKHRoaXMucGx1Z2lucy5weXJhbWlkUmVuZGVyZXIgJiYgdGhpcy5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRDYW52YXMpIHsKCiAgICAgICAgICAgIHRoaXMucGx1Z2lucy5weXJhbWlkUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnJlc2V0Q2FudmFzKCk7CiAgICAgICAgICAgIHRoaXMucGx1Z2lucy5weXJhbWlkUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzID0gbnVsbDsKICAgICAgICB9CiAgICAgICAgIAogICAgICAgIHRoaXMucGx1Z2lucy5weXJhbWlkUmVuZGVyZXIgPSB7aGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDpudWxsfTsKICAgICAgICB0aGlzLnBsdWdpbnMucHlyYW1pZFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcyA9IG5ldyAkLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7CiAgICAgICAgCiAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUodGhpcy5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywgJ2pxcGxvdC1weXJhbWlkUmVuZGVyZXItaGlnaGxpZ2h0LWNhbnZhcycsIHRoaXMuX3Bsb3REaW1lbnNpb25zLCB0aGlzKSk7CiAgICAgICAgdGhpcy5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuc2V0Q29udGV4dCgpOwogICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgnbW91c2VsZWF2ZScsIHtwbG90OnRoaXN9LCBmdW5jdGlvbiAoZXYpIHsgdW5oaWdobGlnaHQoZXYuZGF0YS5wbG90KTsgfSk7CiAgICB9ICAKICAgIAogICAgZnVuY3Rpb24gaGlnaGxpZ2h0IChwbG90LCBzaWR4LCBwaWR4LCBwb2ludHMpIHsKICAgICAgICB2YXIgcyA9IHBsb3Quc2VyaWVzW3NpZHhdOwogICAgICAgIHZhciBjYW52YXMgPSBwbG90LnBsdWdpbnMucHlyYW1pZFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhczsKICAgICAgICBjYW52YXMuX2N0eC5jbGVhclJlY3QoMCwwLGNhbnZhcy5fY3R4LmNhbnZhcy53aWR0aCwgY2FudmFzLl9jdHguY2FudmFzLmhlaWdodCk7CiAgICAgICAgcy5faGlnaGxpZ2h0ZWRQb2ludCA9IHBpZHg7CiAgICAgICAgcGxvdC5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ID0gc2lkeDsKICAgICAgICB2YXIgb3B0cyA9IHtmaWxsU3R5bGU6IHMuaGlnaGxpZ2h0Q29sb3JzW3BpZHhdLCBmaWxsUmVjdDogZmFsc2V9OwogICAgICAgIHMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5kcmF3KGNhbnZhcy5fY3R4LCBwb2ludHMsIG9wdHMpOwogICAgICAgIGlmIChzLnN5bmNocm9uaXplSGlnaGxpZ2h0ICE9PSBmYWxzZSAmJiBwbG90LnNlcmllcy5sZW5ndGggPj0gcy5zeW5jaHJvbml6ZUhpZ2hsaWdodCAmJiBzLnN5bmNocm9uaXplSGlnaGxpZ2h0ICE9PSBzaWR4KSB7CiAgICAgICAgICAgIHMgPSBwbG90LnNlcmllc1tzLnN5bmNocm9uaXplSGlnaGxpZ2h0XTsKICAgICAgICAgICAgb3B0cyA9IHtmaWxsU3R5bGU6IHMuaGlnaGxpZ2h0Q29sb3JzW3BpZHhdLCBmaWxsUmVjdDogZmFsc2V9OwogICAgICAgICAgICBzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhjYW52YXMuX2N0eCwgcy5fYmFyUG9pbnRzW3BpZHhdLCBvcHRzKTsKICAgICAgICB9CiAgICAgICAgY2FudmFzID0gbnVsbDsKICAgIH0KICAgIAogICAgZnVuY3Rpb24gdW5oaWdobGlnaHQgKHBsb3QpIHsKICAgICAgICB2YXIgY2FudmFzID0gcGxvdC5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7CiAgICAgICAgY2FudmFzLl9jdHguY2xlYXJSZWN0KDAsMCwgY2FudmFzLl9jdHguY2FudmFzLndpZHRoLCBjYW52YXMuX2N0eC5jYW52YXMuaGVpZ2h0KTsKICAgICAgICBmb3IgKHZhciBpPTA7IGk8cGxvdC5zZXJpZXMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgcGxvdC5zZXJpZXNbaV0uX2hpZ2hsaWdodGVkUG9pbnQgPSBudWxsOwogICAgICAgIH0KICAgICAgICBwbG90LnBsdWdpbnMucHlyYW1pZFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXggPSBudWxsOwogICAgICAgIHBsb3QudGFyZ2V0LnRyaWdnZXIoJ2pxcGxvdERhdGFVbmhpZ2hsaWdodCcpOwogICAgICAgIGNhbnZhcyA9ICBudWxsOwogICAgfQogICAgCiAgICAKICAgIGZ1bmN0aW9uIGhhbmRsZU1vdmUoZXYsIGdyaWRwb3MsIGRhdGFwb3MsIG5laWdoYm9yLCBwbG90KSB7CiAgICAgICAgaWYgKG5laWdoYm9yKSB7CiAgICAgICAgICAgIHZhciBpbnMgPSBbbmVpZ2hib3Iuc2VyaWVzSW5kZXgsIG5laWdoYm9yLnBvaW50SW5kZXgsIG5laWdoYm9yLmRhdGFdOwogICAgICAgICAgICB2YXIgZXZ0MSA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YU1vdXNlT3ZlcicpOwogICAgICAgICAgICBldnQxLnBhZ2VYID0gZXYucGFnZVg7CiAgICAgICAgICAgIGV2dDEucGFnZVkgPSBldi5wYWdlWTsKICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQxLCBpbnMpOwogICAgICAgICAgICBpZiAocGxvdC5zZXJpZXNbaW5zWzBdXS5oaWdobGlnaHRNb3VzZU92ZXIgJiYgIShpbnNbMF0gPT0gcGxvdC5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4ICYmIGluc1sxXSA9PSBwbG90LnNlcmllc1tpbnNbMF1dLl9oaWdobGlnaHRlZFBvaW50KSkgewogICAgICAgICAgICAgICAgdmFyIGV2dCA9IGpRdWVyeS5FdmVudCgnanFwbG90RGF0YUhpZ2hsaWdodCcpOwogICAgICAgICAgICAgICAgZXZ0LndoaWNoID0gZXYud2hpY2g7CiAgICAgICAgICAgICAgICBldnQucGFnZVggPSBldi5wYWdlWDsKICAgICAgICAgICAgICAgIGV2dC5wYWdlWSA9IGV2LnBhZ2VZOwogICAgICAgICAgICAgICAgcGxvdC50YXJnZXQudHJpZ2dlcihldnQsIGlucyk7CiAgICAgICAgICAgICAgICBoaWdobGlnaHQgKHBsb3QsIG5laWdoYm9yLnNlcmllc0luZGV4LCBuZWlnaGJvci5wb2ludEluZGV4LCBuZWlnaGJvci5wb2ludHMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKG5laWdoYm9yID09IG51bGwpIHsKICAgICAgICAgICAgdW5oaWdobGlnaHQgKHBsb3QpOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBIYXZlIHRvIGFkZCBob29rIGhlcmUsIGJlY3Vhc2UgaXQgbmVlZHMgY2FsbGVkIGJlZm9yZSBzZXJpZXMgaXMgaW5pdGVkLgogICAgJC5qcXBsb3QucHJlSW5pdEhvb2tzLnB1c2gocHJlSW5pdCk7CiAgICAKCn0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.pyramidRenderer.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGMpe2lmKGMuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXI9PT11bmRlZmluZWQpe2MuYWpheCh7dXJsOmMuanFwbG90LnBsdWdpbkxvY2F0aW9uKyJqcXBsb3QucHlyYW1pZEF4aXNSZW5kZXJlci5qcyIsZGF0YVR5cGU6InNjcmlwdCIsYXN5bmM6ZmFsc2V9KX1pZihjLmpxcGxvdC5QeXJhbWlkR3JpZFJlbmRlcmVyPT09dW5kZWZpbmVkKXtjLmFqYXgoe3VybDpjLmpxcGxvdC5wbHVnaW5Mb2NhdGlvbisianFwbG90LnB5cmFtaWRHcmlkUmVuZGVyZXIuanMiLGRhdGFUeXBlOiJzY3JpcHQiLGFzeW5jOmZhbHNlfSl9Yy5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyPWZ1bmN0aW9uKCl7Yy5qcXBsb3QuTGluZVJlbmRlcmVyLmNhbGwodGhpcyl9O2MuanFwbG90LlB5cmFtaWRSZW5kZXJlci5wcm90b3R5cGU9bmV3IGMuanFwbG90LkxpbmVSZW5kZXJlcigpO2MuanFwbG90LlB5cmFtaWRSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9Yy5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyO2MuanFwbG90LlB5cmFtaWRSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihqLG8pe2o9anx8e307dGhpcy5fdHlwZT0icHlyYW1pZCI7dGhpcy5iYXJQYWRkaW5nPTEwO3RoaXMuYmFyV2lkdGg9bnVsbDt0aGlzLmZpbGw9dHJ1ZTt0aGlzLmhpZ2hsaWdodE1vdXNlT3Zlcj10cnVlO3RoaXMuaGlnaGxpZ2h0TW91c2VEb3duPWZhbHNlO3RoaXMuaGlnaGxpZ2h0Q29sb3JzPVtdO3RoaXMuaGlnaGxpZ2h0VGhyZXNob2xkPTI7dGhpcy5zeW5jaHJvbml6ZUhpZ2hsaWdodD1mYWxzZTt0aGlzLm9mZnNldEJhcnM9ZmFsc2U7aWYoai5oaWdobGlnaHRNb3VzZURvd24mJmouaGlnaGxpZ2h0TW91c2VPdmVyPT1udWxsKXtqLmhpZ2hsaWdodE1vdXNlT3Zlcj1mYWxzZX10aGlzLnNpZGU9InJpZ2h0IjtjLmV4dGVuZCh0cnVlLHRoaXMsaik7aWYodGhpcy5zaWRlPT09ImxlZnQiKXt0aGlzLl9oaWdobGlnaHRUaHJlc2hvbGQ9W1stdGhpcy5oaWdobGlnaHRUaHJlc2hvbGQsMF0sWy10aGlzLmhpZ2hsaWdodFRocmVzaG9sZCwwXSxbMCwwXSxbMCwwXV19ZWxzZXt0aGlzLl9oaWdobGlnaHRUaHJlc2hvbGQ9W1swLDBdLFswLDBdLFt0aGlzLmhpZ2hsaWdodFRocmVzaG9sZCwwXSxbdGhpcy5oaWdobGlnaHRUaHJlc2hvbGQsMF1dfXRoaXMucmVuZGVyZXIub3B0aW9ucz1qO3RoaXMuX2hpZ2hsaWdodGVkUG9pbnQ9bnVsbDt0aGlzLl9kYXRhQ29sb3JzPVtdO3RoaXMuX2JhclBvaW50cz1bXTt0aGlzLmZpbGxBeGlzPSJ5Ijt0aGlzLl9wcmltYXJ5QXhpcz0iX3lheGlzIjt0aGlzLl94bnVkZ2U9MDt2YXIgbj17bGluZUpvaW46Im1pdGVyIixsaW5lQ2FwOiJidXR0IixmaWxsOnRoaXMuZmlsbCxmaWxsUmVjdDp0aGlzLmZpbGwsaXNhcmM6ZmFsc2Usc3Ryb2tlU3R5bGU6dGhpcy5jb2xvcixmaWxsU3R5bGU6dGhpcy5jb2xvcixjbG9zZVBhdGg6dGhpcy5maWxsLGxpbmVXaWR0aDp0aGlzLmxpbmVXaWR0aH07dGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmluaXQobik7dmFyIG09ai5zaGFkb3dPZmZzZXQ7aWYobT09bnVsbCl7aWYodGhpcy5saW5lV2lkdGg+Mi41KXttPTEuMjUqKDErKE1hdGguYXRhbigodGhpcy5saW5lV2lkdGgvMi41KSkvMC43ODUzOTgxNjMtMSkqMC42KX1lbHNle209MS4yNSpNYXRoLmF0YW4oKHRoaXMubGluZVdpZHRoLzIuNSkpLzAuNzg1Mzk4MTYzfX12YXIgaD17bGluZUpvaW46Im1pdGVyIixsaW5lQ2FwOiJidXR0IixmaWxsOnRoaXMuZmlsbCxmaWxsUmVjdDp0aGlzLmZpbGwsaXNhcmM6ZmFsc2UsYW5nbGU6dGhpcy5zaGFkb3dBbmdsZSxvZmZzZXQ6bSxhbHBoYTp0aGlzLnNoYWRvd0FscGhhLGRlcHRoOnRoaXMuc2hhZG93RGVwdGgsY2xvc2VQYXRoOnRoaXMuZmlsbCxsaW5lV2lkdGg6dGhpcy5saW5lV2lkdGh9O3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuaW5pdChoKTtvLnBvc3REcmF3SG9va3MuYWRkT25jZShmKTtvLmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RNb3VzZU1vdmUiLGUpO2lmKHRoaXMuc2lkZT09PSJsZWZ0Iil7Zm9yKHZhciBrPTAsZz10aGlzLmRhdGEubGVuZ3RoO2s8ZztrKyspe3RoaXMuZGF0YVtrXVsxXT0tTWF0aC5hYnModGhpcy5kYXRhW2tdWzFdKX19fTtjLmpxcGxvdC5QeXJhbWlkUmVuZGVyZXIucHJvdG90eXBlLnNldEdyaWREYXRhPWZ1bmN0aW9uKHApe3ZhciBqPXRoaXMuX3hheGlzLnNlcmllc191MnA7dmFyIG89dGhpcy5feWF4aXMuc2VyaWVzX3UycDt2YXIgaz10aGlzLl9wbG90RGF0YTt2YXIgbj10aGlzLl9wcmV2UGxvdERhdGE7dGhpcy5ncmlkRGF0YT1bXTt0aGlzLl9wcmV2R3JpZERhdGE9W107dmFyIGc9ay5sZW5ndGg7dmFyIG09ZmFsc2U7dmFyIGg7Zm9yKGg9MDtoPGc7aCsrKXtpZihrW2hdWzFdPDApe3RoaXMuc2lkZT0ibGVmdCJ9fWlmKHRoaXMuX3lheGlzLm5hbWU9PT0ieU1pZEF4aXMiJiZ0aGlzLnNpZGU9PT0icmlnaHQiKXt0aGlzLl94bnVkZ2U9dGhpcy5feGF4aXMubWF4LzIwMDA7bT10cnVlfWZvcihoPTA7aDxnO2grKyl7aWYoa1toXVswXSE9bnVsbCYma1toXVsxXSE9bnVsbCl7dGhpcy5ncmlkRGF0YS5wdXNoKFtqKGtbaF1bMV0pLG8oa1toXVswXSldKX1lbHNle2lmKGtbaF1bMF09PW51bGwpe3RoaXMuZ3JpZERhdGEucHVzaChbaihrW2hdWzFdKSxudWxsXSl9ZWxzZXtpZihrW2hdWzFdPT1udWxsKXt0aGlzLmdyaWREYXRhLnB1c2gobnVsbCxbbyhrW2hdWzBdKV0pfX19aWYoa1toXVsxXT09PTAmJm0pe3RoaXMuZ3JpZERhdGFbaF1bMF09aih0aGlzLl94bnVkZ2UpfX19O2MuanFwbG90LlB5cmFtaWRSZW5kZXJlci5wcm90b3R5cGUubWFrZUdyaWREYXRhPWZ1bmN0aW9uKG0scCl7dmFyIGs9dGhpcy5feGF4aXMuc2VyaWVzX3UycDt2YXIgbz10aGlzLl95YXhpcy5zZXJpZXNfdTJwO3ZhciBqPVtdO3ZhciBnPW0ubGVuZ3RoO3ZhciBuPWZhbHNlO3ZhciBoO2ZvcihoPTA7aDxnO2grKyl7aWYobVtoXVsxXTwwKXt0aGlzLnNpZGU9ImxlZnQifX1pZih0aGlzLl95YXhpcy5uYW1lPT09InlNaWRBeGlzIiYmdGhpcy5zaWRlPT09InJpZ2h0Iil7dGhpcy5feG51ZGdlPXRoaXMuX3hheGlzLm1heC8yMDAwO249dHJ1ZX1mb3IoaD0wO2g8ZztoKyspe2lmKG1baF1bMF0hPW51bGwmJm1baF1bMV0hPW51bGwpe2oucHVzaChbayhtW2hdWzFdKSxvKG1baF1bMF0pXSl9ZWxzZXtpZihtW2hdWzBdPT1udWxsKXtqLnB1c2goW2sobVtoXVsxXSksbnVsbF0pfWVsc2V7aWYobVtoXVsxXT09bnVsbCl7ai5wdXNoKFtudWxsLG8obVtoXVswXSldKX19fWlmKG1baF1bMV09PT0wJiZuKXtqW2hdWzBdPWsodGhpcy5feG51ZGdlKX19cmV0dXJuIGp9O2MuanFwbG90LlB5cmFtaWRSZW5kZXJlci5wcm90b3R5cGUuc2V0QmFyV2lkdGg9ZnVuY3Rpb24oKXt2YXIgazt2YXIgZz0wO3ZhciBoPTA7dmFyIG09dGhpc1t0aGlzLl9wcmltYXJ5QXhpc107dmFyIHEsbCxvO2c9bS5tYXgtbS5taW47dmFyIG49bS5udW1iZXJUaWNrczt2YXIgaj0obi0xKS8yO3ZhciBwPSh0aGlzLmJhclBhZGRpbmc9PT0wKT8xOjA7aWYobS5uYW1lPT0ieGF4aXMifHxtLm5hbWU9PSJ4MmF4aXMiKXt0aGlzLmJhcldpZHRoPShtLl9vZmZzZXRzLm1heC1tLl9vZmZzZXRzLm1pbikvZy10aGlzLmJhclBhZGRpbmcrcH1lbHNle2lmKHRoaXMuZmlsbCl7dGhpcy5iYXJXaWR0aD0obS5fb2Zmc2V0cy5taW4tbS5fb2Zmc2V0cy5tYXgpL2ctdGhpcy5iYXJQYWRkaW5nK3B9ZWxzZXt0aGlzLmJhcldpZHRoPShtLl9vZmZzZXRzLm1pbi1tLl9vZmZzZXRzLm1heCkvZ319fTtjLmpxcGxvdC5QeXJhbWlkUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oQixJLGspe3ZhciBFO3ZhciB1PWMuZXh0ZW5kKHt9LGspO3ZhciBwPSh1LnNoYWRvdyE9dW5kZWZpbmVkKT91LnNoYWRvdzp0aGlzLnNoYWRvdzt2YXIgSz0odS5zaG93TGluZSE9dW5kZWZpbmVkKT91LnNob3dMaW5lOnRoaXMuc2hvd0xpbmU7dmFyIEM9KHUuZmlsbCE9dW5kZWZpbmVkKT91LmZpbGw6dGhpcy5maWxsO3ZhciB0PXRoaXMuX3hheGlzLnNlcmllc191MnA7dmFyIEc9dGhpcy5feWF4aXMuc2VyaWVzX3UycDt2YXIgeix4O3RoaXMuX2RhdGFDb2xvcnM9W107dGhpcy5fYmFyUG9pbnRzPVtdO2lmKHRoaXMucmVuZGVyZXIub3B0aW9ucy5iYXJXaWR0aD09bnVsbCl7dGhpcy5yZW5kZXJlci5zZXRCYXJXaWR0aC5jYWxsKHRoaXMpfXZhciBEPVtdLHMsRjtpZihLKXt2YXIgcT1uZXcgYy5qcXBsb3QuQ29sb3JHZW5lcmF0b3IodGhpcy5uZWdhdGl2ZVNlcmllc0NvbG9ycyk7dmFyIHY9bmV3IGMuanFwbG90LkNvbG9yR2VuZXJhdG9yKHRoaXMuc2VyaWVzQ29sb3JzKTt2YXIgSj1xLmdldCh0aGlzLmluZGV4KTtpZighdGhpcy51c2VOZWdhdGl2ZUNvbG9ycyl7Sj11LmZpbGxTdHlsZX12YXIgbz11LmZpbGxTdHlsZTt2YXIgbjt2YXIgTD10aGlzLl94YXhpcy5zZXJpZXNfdTJwKHRoaXMuX3hudWRnZSk7dmFyIGo9dGhpcy5feWF4aXMuc2VyaWVzX3UycCh0aGlzLl95YXhpcy5taW4pO3ZhciBtPXRoaXMuX3lheGlzLnNlcmllc191MnAodGhpcy5feWF4aXMubWF4KTt2YXIgSD10aGlzLmJhcldpZHRoO3ZhciB5PUgvMjt2YXIgRD1bXTt2YXIgcj10aGlzLm9mZnNldEJhcnM/eTowO2Zvcih2YXIgRT0wLEE9SS5sZW5ndGg7RTxBO0UrKyl7aWYodGhpcy5kYXRhW0VdWzBdPT1udWxsKXtjb250aW51ZX1uPUlbRV1bMV07aWYodGhpcy5fcGxvdERhdGFbRV1bMV08MCl7aWYodGhpcy52YXJ5QmFyQ29sb3ImJiF0aGlzLl9zdGFjayl7aWYodGhpcy51c2VOZWdhdGl2ZUNvbG9ycyl7dS5maWxsU3R5bGU9cS5uZXh0KCl9ZWxzZXt1LmZpbGxTdHlsZT12Lm5leHQoKX19fWVsc2V7aWYodGhpcy52YXJ5QmFyQ29sb3ImJiF0aGlzLl9zdGFjayl7dS5maWxsU3R5bGU9di5uZXh0KCl9ZWxzZXt1LmZpbGxTdHlsZT1vfX1pZih0aGlzLmZpbGwpe2lmKHRoaXMuX3Bsb3REYXRhW0VdWzFdPj0wKXtzPUlbRV1bMF0tTDtGPXRoaXMuYmFyV2lkdGg7RD1bTCxuLXktcixzLEZdfWVsc2V7cz1MLUlbRV1bMF07Rj10aGlzLmJhcldpZHRoO0Q9W0lbRV1bMF0sbi15LXIscyxGXX10aGlzLl9iYXJQb2ludHMucHVzaChbW0RbMF0sRFsxXStGXSxbRFswXSxEWzFdXSxbRFswXStzLERbMV1dLFtEWzBdK3MsRFsxXStGXV0pO2lmKHApe3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhCLEQpfXZhciBnPXUuZmlsbFN0eWxlfHx0aGlzLmNvbG9yO3RoaXMuX2RhdGFDb2xvcnMucHVzaChnKTt0aGlzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhCLEQsdSl9ZWxzZXtpZihFPT09MCl7RD1bW0wsal0sW0lbRV1bMF0sal0sW0lbRV1bMF0sSVtFXVsxXS15LXJdXX1lbHNle2lmKEU8QS0xKXtEPUQuY29uY2F0KFtbSVtFLTFdWzBdLElbRS0xXVsxXS15LXJdLFtJW0VdWzBdLElbRV1bMV0reS1yXSxbSVtFXVswXSxJW0VdWzFdLXktcl1dKX1lbHNle0Q9RC5jb25jYXQoW1tJW0UtMV1bMF0sSVtFLTFdWzFdLXktcl0sW0lbRV1bMF0sSVtFXVsxXSt5LXJdLFtJW0VdWzBdLG1dLFtMLG1dXSk7aWYocCl7dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KEIsRCl9dmFyIGc9dS5maWxsU3R5bGV8fHRoaXMuY29sb3I7dGhpcy5fZGF0YUNvbG9ycy5wdXNoKGcpO3RoaXMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5kcmF3KEIsRCx1KX19fX19aWYodGhpcy5oaWdobGlnaHRDb2xvcnMubGVuZ3RoPT0wKXt0aGlzLmhpZ2hsaWdodENvbG9ycz1jLmpxcGxvdC5jb21wdXRlSGlnaGxpZ2h0Q29sb3JzKHRoaXMuX2RhdGFDb2xvcnMpfWVsc2V7aWYodHlwZW9mKHRoaXMuaGlnaGxpZ2h0Q29sb3JzKT09InN0cmluZyIpe3RoaXMuaGlnaGxpZ2h0Q29sb3JzPVtdO2Zvcih2YXIgRT0wO0U8dGhpcy5fZGF0YUNvbG9ycy5sZW5ndGg7RSsrKXt0aGlzLmhpZ2hsaWdodENvbG9ycy5wdXNoKHRoaXMuaGlnaGxpZ2h0Q29sb3JzKX19fX07ZnVuY3Rpb24gYihsLGssaCl7aD1ofHx7fTtoLmF4ZXNEZWZhdWx0cz1oLmF4ZXNEZWZhdWx0c3x8e307aC5ncmlkPWguZ3JpZHx8e307aC5sZWdlbmQ9aC5sZWdlbmR8fHt9O2guc2VyaWVzRGVmYXVsdHM9aC5zZXJpZXNEZWZhdWx0c3x8e307dmFyIGc9ZmFsc2U7aWYoaC5zZXJpZXNEZWZhdWx0cy5yZW5kZXJlcj09PWMuanFwbG90LlB5cmFtaWRSZW5kZXJlcil7Zz10cnVlfWVsc2V7aWYoaC5zZXJpZXMpe2Zvcih2YXIgaj0wO2o8aC5zZXJpZXMubGVuZ3RoO2orKyl7aWYoaC5zZXJpZXNbal0ucmVuZGVyZXI9PT1jLmpxcGxvdC5QeXJhbWlkUmVuZGVyZXIpe2c9dHJ1ZX19fX1pZihnKXtoLmF4ZXNEZWZhdWx0cy5yZW5kZXJlcj1jLmpxcGxvdC5QeXJhbWlkQXhpc1JlbmRlcmVyO2guZ3JpZC5yZW5kZXJlcj1jLmpxcGxvdC5QeXJhbWlkR3JpZFJlbmRlcmVyO2guc2VyaWVzRGVmYXVsdHMucG9pbnRMYWJlbHM9e3Nob3c6ZmFsc2V9fX1mdW5jdGlvbiBmKCl7aWYodGhpcy5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlciYmdGhpcy5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRDYW52YXMpe3RoaXMucGx1Z2lucy5weXJhbWlkUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnJlc2V0Q2FudmFzKCk7dGhpcy5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRDYW52YXM9bnVsbH10aGlzLnBsdWdpbnMucHlyYW1pZFJlbmRlcmVyPXtoaWdobGlnaHRlZFNlcmllc0luZGV4Om51bGx9O3RoaXMucGx1Z2lucy5weXJhbWlkUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzPW5ldyBjLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUodGhpcy5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywianFwbG90LXB5cmFtaWRSZW5kZXJlci1oaWdobGlnaHQtY2FudmFzIix0aGlzLl9wbG90RGltZW5zaW9ucyx0aGlzKSk7dGhpcy5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuc2V0Q29udGV4dCgpO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgibW91c2VsZWF2ZSIse3Bsb3Q6dGhpc30sZnVuY3Rpb24oZyl7ZChnLmRhdGEucGxvdCl9KX1mdW5jdGlvbiBhKG0sbCxqLGkpe3ZhciBoPW0uc2VyaWVzW2xdO3ZhciBnPW0ucGx1Z2lucy5weXJhbWlkUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzO2cuX2N0eC5jbGVhclJlY3QoMCwwLGcuX2N0eC5jYW52YXMud2lkdGgsZy5fY3R4LmNhbnZhcy5oZWlnaHQpO2guX2hpZ2hsaWdodGVkUG9pbnQ9ajttLnBsdWdpbnMucHlyYW1pZFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg9bDt2YXIgaz17ZmlsbFN0eWxlOmguaGlnaGxpZ2h0Q29sb3JzW2pdLGZpbGxSZWN0OmZhbHNlfTtoLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhnLl9jdHgsaSxrKTtpZihoLnN5bmNocm9uaXplSGlnaGxpZ2h0IT09ZmFsc2UmJm0uc2VyaWVzLmxlbmd0aD49aC5zeW5jaHJvbml6ZUhpZ2hsaWdodCYmaC5zeW5jaHJvbml6ZUhpZ2hsaWdodCE9PWwpe2g9bS5zZXJpZXNbaC5zeW5jaHJvbml6ZUhpZ2hsaWdodF07az17ZmlsbFN0eWxlOmguaGlnaGxpZ2h0Q29sb3JzW2pdLGZpbGxSZWN0OmZhbHNlfTtoLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhnLl9jdHgsaC5fYmFyUG9pbnRzW2pdLGspfWc9bnVsbH1mdW5jdGlvbiBkKGope3ZhciBnPWoucGx1Z2lucy5weXJhbWlkUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzO2cuX2N0eC5jbGVhclJlY3QoMCwwLGcuX2N0eC5jYW52YXMud2lkdGgsZy5fY3R4LmNhbnZhcy5oZWlnaHQpO2Zvcih2YXIgaD0wO2g8ai5zZXJpZXMubGVuZ3RoO2grKyl7ai5zZXJpZXNbaF0uX2hpZ2hsaWdodGVkUG9pbnQ9bnVsbH1qLnBsdWdpbnMucHlyYW1pZFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg9bnVsbDtqLnRhcmdldC50cmlnZ2VyKCJqcXBsb3REYXRhVW5oaWdobGlnaHQiKTtnPW51bGx9ZnVuY3Rpb24gZShrLGosbixtLGwpe2lmKG0pe3ZhciBpPVttLnNlcmllc0luZGV4LG0ucG9pbnRJbmRleCxtLmRhdGFdO3ZhciBoPWpRdWVyeS5FdmVudCgianFwbG90RGF0YU1vdXNlT3ZlciIpO2gucGFnZVg9ay5wYWdlWDtoLnBhZ2VZPWsucGFnZVk7bC50YXJnZXQudHJpZ2dlcihoLGkpO2lmKGwuc2VyaWVzW2lbMF1dLmhpZ2hsaWdodE1vdXNlT3ZlciYmIShpWzBdPT1sLnBsdWdpbnMucHlyYW1pZFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXgmJmlbMV09PWwuc2VyaWVzW2lbMF1dLl9oaWdobGlnaHRlZFBvaW50KSl7dmFyIGc9alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhSGlnaGxpZ2h0Iik7Zy53aGljaD1rLndoaWNoO2cucGFnZVg9ay5wYWdlWDtnLnBhZ2VZPWsucGFnZVk7bC50YXJnZXQudHJpZ2dlcihnLGkpO2EobCxtLnNlcmllc0luZGV4LG0ucG9pbnRJbmRleCxtLnBvaW50cyl9fWVsc2V7aWYobT09bnVsbCl7ZChsKX19fWMuanFwbG90LnByZUluaXRIb29rcy5wdXNoKGIpfSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.trendline.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIGpxUGxvdAogKiBQdXJlIEphdmFTY3JpcHQgcGxvdHRpbmcgcGx1Z2luIHVzaW5nIGpRdWVyeQogKgogKiBWZXJzaW9uOiAxLjAuOAogKiBSZXZpc2lvbjogMTI1MAogKgogKiBDb3B5cmlnaHQgKGMpIDIwMDktMjAxMyBDaHJpcyBMZW9uZWxsbwogKiBqcVBsb3QgaXMgY3VycmVudGx5IGF2YWlsYWJsZSBmb3IgdXNlIGluIGFsbCBwZXJzb25hbCBvciBjb21tZXJjaWFsIHByb2plY3RzIAogKiB1bmRlciBib3RoIHRoZSBNSVQgKGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwKSBhbmQgR1BMIAogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIAogKiBjaG9vc2UgdGhlIGxpY2Vuc2UgdGhhdCBiZXN0IHN1aXRzIHlvdXIgcHJvamVjdCBhbmQgdXNlIGl0IGFjY29yZGluZ2x5LiAKICoKICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gCiAqIGtub3cgb2YgYW55IHN1YnN0YW50aWFsIHVzZSBvZiBqcVBsb3QuICBZb3UgY2FuIHJlYWNoIHRoZSBhdXRob3IgYXQ6IAogKiBjaHJpcyBhdCBqcXBsb3QgZG90IGNvbSBvciBzZWUgaHR0cDovL3d3dy5qcXBsb3QuY29tL2luZm8ucGhwIC4KICoKICogSWYgeW91IGFyZSBmZWVsaW5nIGtpbmQgYW5kIGdlbmVyb3VzLCBjb25zaWRlciBzdXBwb3J0aW5nIHRoZSBwcm9qZWN0IGJ5CiAqIG1ha2luZyBhIGRvbmF0aW9uIGF0OiBodHRwOi8vd3d3LmpxcGxvdC5jb20vZG9uYXRlLnBocCAuCiAqCiAqIHNwcmludGYgZnVuY3Rpb25zIGNvbnRhaW5lZCBpbiBqcXBsb3Quc3ByaW50Zi5qcyBieSBBc2ggU2VhcmxlOgogKgogKiAgICAgdmVyc2lvbiAyMDA3LjA0LjI3CiAqICAgICBhdXRob3IgQXNoIFNlYXJsZQogKiAgICAgaHR0cDovL2hleG1lbi5jb20vYmxvZy8yMDA3LzAzL3ByaW50Zi1zcHJpbnRmLwogKiAgICAgaHR0cDovL2hleG1lbi5jb20vanMvc3ByaW50Zi5qcwogKiAgICAgVGhlIGF1dGhvciAoQXNoIFNlYXJsZSkgaGFzIHBsYWNlZCB0aGlzIGNvZGUgaW4gdGhlIHB1YmxpYyBkb21haW46CiAqICAgICAiVGhpcyBjb2RlIGlzIHVucmVzdHJpY3RlZDogeW91IGFyZSBmcmVlIHRvIHVzZSBpdCBob3dldmVyIHlvdSBsaWtlLiIKICogCiAqLwooZnVuY3Rpb24oJCkgewogICAgCiAgICAvKioKICAgICAqIENsYXNzOiAkLmpxcGxvdC5UcmVuZGxpbmUKICAgICAqIFBsdWdpbiB3aGljaCB3aWxsIGF1dG9tYXRpY2FsbHkgY29tcHV0ZSBhbmQgZHJhdyB0cmVuZGxpbmVzIGZvciBwbG90dGVkIGRhdGEuCiAgICAgKi8KICAgICQuanFwbG90LlRyZW5kbGluZSA9IGZ1bmN0aW9uKCkgewogICAgICAgIC8vIEdyb3VwOiBQcm9wZXJ0aWVzCiAgICAgICAgCiAgICAgICAgLy8gcHJvcDogc2hvdwogICAgICAgIC8vIFdldGhlciBvciBub3QgdG8gc2hvdyB0aGUgdHJlbmQgbGluZS4KICAgICAgICB0aGlzLnNob3cgPSAkLmpxcGxvdC5jb25maWcuZW5hYmxlUGx1Z2luczsKICAgICAgICAvLyBwcm9wOiBjb2xvcgogICAgICAgIC8vIENTUyBjb2xvciBzcGVjIGZvciB0aGUgdHJlbmQgbGluZS4KICAgICAgICAvLyBCeSBkZWZhdWx0IHRoaXMgd2lsIGJlIHRoZSBzYW1lIGNvbG9yIGFzIHRoZSBwcmltYXJ5IGxpbmUuCiAgICAgICAgdGhpcy5jb2xvciA9ICcjNjY2NjY2JzsKICAgICAgICAvLyBwcm9wOiByZW5kZXJlcgogICAgICAgIC8vIFJlbmRlcmVyIHRvIHVzZSB0byBkcmF3IHRoZSB0cmVuZCBsaW5lLgogICAgICAgIC8vIFRoZSBkYXRhIHNlcmllcyB0aGF0IGlzIHBsb3R0ZWQgbWF5IG5vdCBiZSByZW5kZXJlZCBhcyBhIGxpbmUuCiAgICAgICAgLy8gVGhlcmVmb3JlLCB3ZSB1c2Ugb3VyIG93biBsaW5lIHJlbmRlcmVyIGhlcmUgdG8gZHJhdyBhIHRyZW5kIGxpbmUuCiAgICAgICAgdGhpcy5yZW5kZXJlciA9IG5ldyAkLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTsKICAgICAgICAvLyBwcm9wOiByZW5kZXJlck9wdGlvbnMKICAgICAgICAvLyBPcHRpb25zIHRvIHBhc3MgdG8gdGhlIGxpbmUgcmVuZGVyZXIuCiAgICAgICAgLy8gQnkgZGVmYXVsdCwgbWFya2VycyBhcmUgbm90IHNob3duIG9uIHRyZW5kIGxpbmVzLgogICAgICAgIHRoaXMucmVuZGVyZXJPcHRpb25zID0ge21hcmtlcjp7c2hvdzpmYWxzZX19OwogICAgICAgIC8vIHByb3A6IGxhYmVsCiAgICAgICAgLy8gTGFiZWwgZm9yIHRoZSB0cmVuZCBsaW5lIHRvIHVzZSBpbiB0aGUgbGVnZW5kLgogICAgICAgIHRoaXMubGFiZWwgPSAnJzsKICAgICAgICAvLyBwcm9wOiB0eXBlCiAgICAgICAgLy8gRWl0aGVyICdleHBvbmVudGlhbCcsICdleHAnLCBvciAnbGluZWFyJy4KICAgICAgICB0aGlzLnR5cGUgPSAnbGluZWFyJzsKICAgICAgICAvLyBwcm9wOiBzaGFkb3cKICAgICAgICAvLyB0cnVlIG9yIGZhbHNlLCB3aGV0aGVyIG9yIG5vdCB0byBzaG93IHRoZSBzaGFkb3cuCiAgICAgICAgdGhpcy5zaGFkb3cgPSB0cnVlOwogICAgICAgIC8vIHByb3A6IG1hcmtlclJlbmRlcmVyCiAgICAgICAgLy8gUmVuZGVyZXIgdG8gdXNlIHRvIGRyYXcgbWFya2VycyBvbiB0aGUgbGluZS4KICAgICAgICAvLyBJIHRoaW5rIHRoaXMgaXMgd3JvbmcuCiAgICAgICAgdGhpcy5tYXJrZXJSZW5kZXJlciA9IHtzaG93OmZhbHNlfTsKICAgICAgICAvLyBwcm9wOiBsaW5lV2lkdGgKICAgICAgICAvLyBXaWR0aCBvZiB0aGUgdHJlbmQgbGluZS4KICAgICAgICB0aGlzLmxpbmVXaWR0aCA9IDEuNTsKICAgICAgICAvLyBwcm9wOiBzaGFkb3dBbmdsZQogICAgICAgIC8vIEFuZ2xlIG9mIHRoZSBzaGFkb3cgb24gdGhlIHRyZW5kIGxpbmUuCiAgICAgICAgdGhpcy5zaGFkb3dBbmdsZSA9IDQ1OwogICAgICAgIC8vIHByb3A6IHNoYWRvd09mZnNldAogICAgICAgIC8vIHBpeGVsIG9mZnNldCBmb3IgZWFjaCBzdHJva2Ugb2YgdGhlIHNoYWRvdy4KICAgICAgICB0aGlzLnNoYWRvd09mZnNldCA9IDEuMDsKICAgICAgICAvLyBwcm9wOiBzaGFkb3dBbHBoYQogICAgICAgIC8vIEFscGhhIHRyYW5zcGFyZW5jeSBvZiB0aGUgc2hhZG93LgogICAgICAgIHRoaXMuc2hhZG93QWxwaGEgPSAwLjA3OwogICAgICAgIC8vIHByb3A6IHNoYWRvd0RlcHRoCiAgICAgICAgLy8gbnVtYmVyIG9mIHN0cm9rZXMgdG8gbWFrZSBvZiB0aGUgc2hhZG93LgogICAgICAgIHRoaXMuc2hhZG93RGVwdGggPSAzOwogICAgICAgIHRoaXMuaXNUcmVuZGxpbmUgPSB0cnVlOwogICAgICAgIAogICAgfTsKICAgIAogICAgJC5qcXBsb3QucG9zdFNlcmllc0luaXRIb29rcy5wdXNoKHBhcnNlVHJlbmRMaW5lT3B0aW9ucyk7CiAgICAkLmpxcGxvdC5wb3N0RHJhd1Nlcmllc0hvb2tzLnB1c2goZHJhd1RyZW5kbGluZSk7CiAgICAkLmpxcGxvdC5hZGRMZWdlbmRSb3dIb29rcy5wdXNoKGFkZFRyZW5kbGluZUxlZ2VuZCk7CiAgICAKICAgIC8vIGNhbGxlZCB3aXRpbiBzY29wZSBvZiB0aGUgbGVnZW5kIG9iamVjdAogICAgLy8gY3VycmVudCBzZXJpZXMgcGFzc2VkIGluCiAgICAvLyBtdXN0IHJldHVybiBudWxsIG9yIGFuIG9iamVjdCB7bGFiZWw6bGFiZWwsIGNvbG9yOmNvbG9yfQogICAgZnVuY3Rpb24gYWRkVHJlbmRsaW5lTGVnZW5kKHNlcmllcykgewogICAgICAgIHZhciByZXQgPSBudWxsOwogICAgICAgIGlmIChzZXJpZXMudHJlbmRsaW5lICYmIHNlcmllcy50cmVuZGxpbmUuc2hvdykgewogICAgICAgICAgICB2YXIgbHQgPSBzZXJpZXMudHJlbmRsaW5lLmxhYmVsLnRvU3RyaW5nKCk7CiAgICAgICAgICAgIGlmIChsdCkgewogICAgICAgICAgICAgICAgcmV0ID0ge2xhYmVsOmx0LCBjb2xvcjpzZXJpZXMudHJlbmRsaW5lLmNvbG9yfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gcmV0OwogICAgfQoKICAgIC8vIGNhbGxlZCB3aXRoaW4gc2NvcGUgb2YgYSBzZXJpZXMKICAgIGZ1bmN0aW9uIHBhcnNlVHJlbmRMaW5lT3B0aW9ucyAodGFyZ2V0LCBkYXRhLCBzZXJpZXNEZWZhdWx0cywgb3B0aW9ucywgcGxvdCkgewogICAgICAgIGlmICh0aGlzLl90eXBlICYmICh0aGlzLl90eXBlID09PSAnbGluZScgfHwgdGhpcy5fdHlwZSA9PSAnYmFyJykpIHsKICAgICAgICAgICAgdGhpcy50cmVuZGxpbmUgPSBuZXcgJC5qcXBsb3QuVHJlbmRsaW5lKCk7CiAgICAgICAgICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OwogICAgICAgICAgICAkLmV4dGVuZCh0cnVlLCB0aGlzLnRyZW5kbGluZSwge2NvbG9yOnRoaXMuY29sb3J9LCBzZXJpZXNEZWZhdWx0cy50cmVuZGxpbmUsIG9wdGlvbnMudHJlbmRsaW5lKTsKICAgICAgICAgICAgdGhpcy50cmVuZGxpbmUucmVuZGVyZXIuaW5pdC5jYWxsKHRoaXMudHJlbmRsaW5lLCBudWxsKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8vIGNhbGxlZCB3aXRoaW4gc2NvcGUgb2Ygc2VyaWVzIG9iamVjdAogICAgZnVuY3Rpb24gZHJhd1RyZW5kbGluZShzY3R4LCBvcHRpb25zKSB7CiAgICAgICAgLy8gaWYgd2UgaGF2ZSBvcHRpb25zLCBtZXJnZSB0cmVuZGxpbmUgb3B0aW9ucyBpbiB3aXRoIHByZWNlZGVuY2UKICAgICAgICBvcHRpb25zID0gJC5leHRlbmQodHJ1ZSwge30sIHRoaXMudHJlbmRsaW5lLCBvcHRpb25zKTsKCiAgICAgICAgaWYgKHRoaXMudHJlbmRsaW5lICYmIG9wdGlvbnMuc2hvdykgewogICAgICAgICAgICB2YXIgZml0OwogICAgICAgICAgICAvLyB0aGlzLnJlbmRlcmVyLnNldEdyaWREYXRhLmNhbGwodGhpcyk7CiAgICAgICAgICAgIHZhciBkYXRhID0gb3B0aW9ucy5kYXRhIHx8IHRoaXMuZGF0YTsKICAgICAgICAgICAgZml0ID0gZml0RGF0YShkYXRhLCB0aGlzLnRyZW5kbGluZS50eXBlKTsKICAgICAgICAgICAgdmFyIGdyaWREYXRhID0gb3B0aW9ucy5ncmlkRGF0YSB8fCB0aGlzLnJlbmRlcmVyLm1ha2VHcmlkRGF0YS5jYWxsKHRoaXMsIGZpdC5kYXRhKTsKICAgICAgICAgICAgdGhpcy50cmVuZGxpbmUucmVuZGVyZXIuZHJhdy5jYWxsKHRoaXMudHJlbmRsaW5lLCBzY3R4LCBncmlkRGF0YSwge3Nob3dMaW5lOnRydWUsIHNoYWRvdzp0aGlzLnRyZW5kbGluZS5zaGFkb3d9KTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIHJlZ3Jlc3Npb24oeCwgeSwgdHlwKSAgewogICAgICAgIHZhciB0eXBlID0gKHR5cCA9PSBudWxsKSA/ICdsaW5lYXInIDogdHlwOwogICAgICAgIHZhciBOID0geC5sZW5ndGg7CiAgICAgICAgdmFyIHNsb3BlOwogICAgICAgIHZhciBpbnRlcmNlcHQ7ICAKICAgICAgICB2YXIgU1ggPSAwOwogICAgICAgIHZhciBTWSA9IDA7CiAgICAgICAgdmFyIFNYWCA9IDA7CiAgICAgICAgdmFyIFNYWSA9IDA7CiAgICAgICAgdmFyIFNZWSA9IDA7CiAgICAgICAgdmFyIFkgPSBbXTsKICAgICAgICB2YXIgWCA9IFtdOwogICAgCiAgICAgICAgaWYgKHR5cGUgPT0gJ2xpbmVhcicpIHsKICAgICAgICAgICAgWCA9IHg7CiAgICAgICAgICAgIFkgPSB5OwogICAgICAgIH0KICAgICAgICBlbHNlIGlmICh0eXBlID09ICdleHAnIHx8IHR5cGUgPT0gJ2V4cG9uZW50aWFsJykgewogICAgICAgICAgICBmb3IgKCB2YXIgaT0wOyBpPHkubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgIC8vIGlnbm9yZSBwb2ludHMgPD0gMCwgbG9nIHVuZGVmaW5lZC4KICAgICAgICAgICAgICAgIGlmICh5W2ldIDw9IDApIHsKICAgICAgICAgICAgICAgICAgICBOLS07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBYLnB1c2goeFtpXSk7CiAgICAgICAgICAgICAgICAgICAgWS5wdXNoKE1hdGgubG9nKHlbaV0pKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZm9yICggdmFyIGkgPSAwOyBpIDwgTjsgaSsrKSB7CiAgICAgICAgICAgIFNYID0gU1ggKyBYW2ldOwogICAgICAgICAgICBTWSA9IFNZICsgWVtpXTsKICAgICAgICAgICAgU1hZID0gU1hZICsgWFtpXSogWVtpXTsKICAgICAgICAgICAgU1hYID0gU1hYICsgWFtpXSogWFtpXTsKICAgICAgICAgICAgU1lZID0gU1lZICsgWVtpXSogWVtpXTsKICAgICAgICB9CgogICAgICAgIHNsb3BlID0gKE4qU1hZIC0gU1gqU1kpLyhOKlNYWCAtIFNYKlNYKTsKICAgICAgICBpbnRlcmNlcHQgPSAoU1kgLSBzbG9wZSpTWCkvTjsKCiAgICAgICAgcmV0dXJuIFtzbG9wZSwgaW50ZXJjZXB0XTsKICAgIH0KCiAgICBmdW5jdGlvbiBsaW5lYXJSZWdyZXNzaW9uKFgsWSkgewogICAgICAgIHZhciByZXQ7CiAgICAgICAgcmV0ID0gcmVncmVzc2lvbihYLFksJ2xpbmVhcicpOwogICAgICAgIHJldHVybiBbcmV0WzBdLHJldFsxXV07CiAgICB9CgogICAgZnVuY3Rpb24gZXhwUmVncmVzc2lvbihYLFkpIHsKICAgICAgICB2YXIgcmV0OwogICAgICAgIHZhciB4ID0gWDsKICAgICAgICB2YXIgeSA9IFk7CiAgICAgICAgcmV0ID0gcmVncmVzc2lvbih4LCB5LCdleHAnKTsKICAgICAgICB2YXIgYmFzZSA9IE1hdGguZXhwKHJldFswXSk7CiAgICAgICAgdmFyIGNvZWZmID0gTWF0aC5leHAocmV0WzFdKTsKICAgICAgICByZXR1cm4gW2Jhc2UsIGNvZWZmXTsKICAgIH0KCiAgICBmdW5jdGlvbiBmaXREYXRhKGRhdGEsIHR5cCkgewogICAgICAgIHZhciB0eXBlID0gKHR5cCA9PSBudWxsKSA/ICAnbGluZWFyJyA6IHR5cDsKICAgICAgICB2YXIgcmV0OwogICAgICAgIHZhciByZXM7CiAgICAgICAgdmFyIHggPSBbXTsKICAgICAgICB2YXIgeSA9IFtdOwogICAgICAgIHZhciB5cHJlZCA9IFtdOwogICAgICAgIAogICAgICAgIGZvciAoaT0wOyBpPGRhdGEubGVuZ3RoOyBpKyspewogICAgICAgICAgICBpZiAoZGF0YVtpXSAhPSBudWxsICYmIGRhdGFbaV1bMF0gIT0gbnVsbCAmJiBkYXRhW2ldWzFdICE9IG51bGwpIHsKICAgICAgICAgICAgICAgIHgucHVzaChkYXRhW2ldWzBdKTsKICAgICAgICAgICAgICAgIHkucHVzaChkYXRhW2ldWzFdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICBpZiAodHlwZSA9PSAnbGluZWFyJykgewogICAgICAgICAgICByZXQgPSBsaW5lYXJSZWdyZXNzaW9uKHgseSk7CiAgICAgICAgICAgIGZvciAoIHZhciBpPTA7IGk8eC5sZW5ndGg7IGkrKyl7CiAgICAgICAgICAgICAgICByZXMgPSByZXRbMF0qeFtpXSArIHJldFsxXTsKICAgICAgICAgICAgICAgIHlwcmVkLnB1c2goW3hbaV0sIHJlc10pOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gJ2V4cCcgfHwgdHlwZSA9PSAnZXhwb25lbnRpYWwnKSB7CiAgICAgICAgICAgIHJldCA9IGV4cFJlZ3Jlc3Npb24oeCx5KTsKICAgICAgICAgICAgZm9yICggdmFyIGk9MDsgaTx4Lmxlbmd0aDsgaSsrKXsKICAgICAgICAgICAgICAgIHJlcyA9IHJldFsxXSpNYXRoLnBvdyhyZXRbMF0seFtpXSk7CiAgICAgICAgICAgICAgICB5cHJlZC5wdXNoKFt4W2ldLCByZXNdKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4ge2RhdGE6IHlwcmVkLCBzbG9wZTogcmV0WzBdLCBpbnRlcmNlcHQ6IHJldFsxXX07CiAgICB9IAoKfSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.trendline.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tCiAgIGpzRGF0ZSB8IChjKSAyMDEwLTIwMTMgQ2hyaXMgTGVvbmVsbG8KICovKGZ1bmN0aW9uKGYpe2YuanFwbG90LlRyZW5kbGluZT1mdW5jdGlvbigpe3RoaXMuc2hvdz1mLmpxcGxvdC5jb25maWcuZW5hYmxlUGx1Z2luczt0aGlzLmNvbG9yPSIjNjY2NjY2Ijt0aGlzLnJlbmRlcmVyPW5ldyBmLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTt0aGlzLnJlbmRlcmVyT3B0aW9ucz17bWFya2VyOntzaG93OmZhbHNlfX07dGhpcy5sYWJlbD0iIjt0aGlzLnR5cGU9ImxpbmVhciI7dGhpcy5zaGFkb3c9dHJ1ZTt0aGlzLm1hcmtlclJlbmRlcmVyPXtzaG93OmZhbHNlfTt0aGlzLmxpbmVXaWR0aD0xLjU7dGhpcy5zaGFkb3dBbmdsZT00NTt0aGlzLnNoYWRvd09mZnNldD0xO3RoaXMuc2hhZG93QWxwaGE9MC4wNzt0aGlzLnNoYWRvd0RlcHRoPTM7dGhpcy5pc1RyZW5kbGluZT10cnVlfTtmLmpxcGxvdC5wb3N0U2VyaWVzSW5pdEhvb2tzLnB1c2goZSk7Zi5qcXBsb3QucG9zdERyYXdTZXJpZXNIb29rcy5wdXNoKGcpO2YuanFwbG90LmFkZExlZ2VuZFJvd0hvb2tzLnB1c2goYSk7ZnVuY3Rpb24gYShrKXt2YXIgaj1udWxsO2lmKGsudHJlbmRsaW5lJiZrLnRyZW5kbGluZS5zaG93KXt2YXIgaT1rLnRyZW5kbGluZS5sYWJlbC50b1N0cmluZygpO2lmKGkpe2o9e2xhYmVsOmksY29sb3I6ay50cmVuZGxpbmUuY29sb3J9fX1yZXR1cm4gan1mdW5jdGlvbiBlKG0sayxqLGksbCl7aWYodGhpcy5fdHlwZSYmKHRoaXMuX3R5cGU9PT0ibGluZSJ8fHRoaXMuX3R5cGU9PSJiYXIiKSl7dGhpcy50cmVuZGxpbmU9bmV3IGYuanFwbG90LlRyZW5kbGluZSgpO2k9aXx8e307Zi5leHRlbmQodHJ1ZSx0aGlzLnRyZW5kbGluZSx7Y29sb3I6dGhpcy5jb2xvcn0sai50cmVuZGxpbmUsaS50cmVuZGxpbmUpO3RoaXMudHJlbmRsaW5lLnJlbmRlcmVyLmluaXQuY2FsbCh0aGlzLnRyZW5kbGluZSxudWxsKX19ZnVuY3Rpb24gZyhtLGkpe2k9Zi5leHRlbmQodHJ1ZSx7fSx0aGlzLnRyZW5kbGluZSxpKTtpZih0aGlzLnRyZW5kbGluZSYmaS5zaG93KXt2YXIgazt2YXIgbD1pLmRhdGF8fHRoaXMuZGF0YTtrPWMobCx0aGlzLnRyZW5kbGluZS50eXBlKTt2YXIgaj1pLmdyaWREYXRhfHx0aGlzLnJlbmRlcmVyLm1ha2VHcmlkRGF0YS5jYWxsKHRoaXMsay5kYXRhKTt0aGlzLnRyZW5kbGluZS5yZW5kZXJlci5kcmF3LmNhbGwodGhpcy50cmVuZGxpbmUsbSxqLHtzaG93TGluZTp0cnVlLHNoYWRvdzp0aGlzLnRyZW5kbGluZS5zaGFkb3d9KX19ZnVuY3Rpb24gYih3LHYsbil7dmFyIHU9KG49PW51bGwpPyJsaW5lYXIiOm47dmFyIHM9dy5sZW5ndGg7dmFyIHQ7dmFyIHo7dmFyIG89MDt2YXIgbT0wO3ZhciByPTA7dmFyIHE9MDt2YXIgbD0wO3ZhciBqPVtdO3ZhciBrPVtdO2lmKHU9PSJsaW5lYXIiKXtrPXc7aj12fWVsc2V7aWYodT09ImV4cCJ8fHU9PSJleHBvbmVudGlhbCIpe2Zvcih2YXIgcD0wO3A8di5sZW5ndGg7cCsrKXtpZih2W3BdPD0wKXtzLS19ZWxzZXtrLnB1c2god1twXSk7ai5wdXNoKE1hdGgubG9nKHZbcF0pKX19fX1mb3IodmFyIHA9MDtwPHM7cCsrKXtvPW8ra1twXTttPW0raltwXTtxPXEra1twXSpqW3BdO3I9citrW3BdKmtbcF07bD1sK2pbcF0qaltwXX10PShzKnEtbyptKS8ocypyLW8qbyk7ej0obS10Km8pL3M7cmV0dXJuW3Qsel19ZnVuY3Rpb24gaChrLGope3ZhciBpO2k9YihrLGosImxpbmVhciIpO3JldHVybltpWzBdLGlbMV1dfWZ1bmN0aW9uIGQobyxtKXt2YXIgazt2YXIgaT1vO3ZhciBuPW07az1iKGksbiwiZXhwIik7dmFyIGw9TWF0aC5leHAoa1swXSk7dmFyIGo9TWF0aC5leHAoa1sxXSk7cmV0dXJuW2wsal19ZnVuY3Rpb24gYyhsLGope3ZhciBwPShqPT1udWxsKT8ibGluZWFyIjpqO3ZhciBuO3ZhciBvO3ZhciByPVtdO3ZhciBxPVtdO3ZhciBtPVtdO2ZvcihrPTA7azxsLmxlbmd0aDtrKyspe2lmKGxba10hPW51bGwmJmxba11bMF0hPW51bGwmJmxba11bMV0hPW51bGwpe3IucHVzaChsW2tdWzBdKTtxLnB1c2gobFtrXVsxXSl9fWlmKHA9PSJsaW5lYXIiKXtuPWgocixxKTtmb3IodmFyIGs9MDtrPHIubGVuZ3RoO2srKyl7bz1uWzBdKnJba10rblsxXTttLnB1c2goW3Jba10sb10pfX1lbHNle2lmKHA9PSJleHAifHxwPT0iZXhwb25lbnRpYWwiKXtuPWQocixxKTtmb3IodmFyIGs9MDtrPHIubGVuZ3RoO2srKyl7bz1uWzFdKk1hdGgucG93KG5bMF0scltrXSk7bS5wdXNoKFtyW2tdLG9dKX19fXJldHVybntkYXRhOm0sc2xvcGU6blswXSxpbnRlcmNlcHQ6blsxXX19fSkoalF1ZXJ5KTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAACGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAABAAAQAABwAHQAc2RzY2xibwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAHAHMAYwByAGkAcAB0AHNkc2NsYm9vbAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAAAhgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAIAAAAGAAAAABAAAAwAAAAAAAAAABAAABAAAAAAEAAAIAAAAAAQAABAAAAAACAAAIAAAAGAAAAAAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/LGPL-LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CQkgICBHTlUgTEVTU0VSIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UKICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNwoKIENvcHlyaWdodCAoQykgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gPGh0dHA6Ly9mc2Yub3JnLz4KIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcwogb2YgdGhpcyBsaWNlbnNlIGRvY3VtZW50LCBidXQgY2hhbmdpbmcgaXQgaXMgbm90IGFsbG93ZWQuCgoKICBUaGlzIHZlcnNpb24gb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpbmNvcnBvcmF0ZXMKdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHZlcnNpb24gMyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCkxpY2Vuc2UsIHN1cHBsZW1lbnRlZCBieSB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBsaXN0ZWQgYmVsb3cuCgogIDAuIEFkZGl0aW9uYWwgRGVmaW5pdGlvbnMuIAoKICBBcyB1c2VkIGhlcmVpbiwgInRoaXMgTGljZW5zZSIgcmVmZXJzIHRvIHZlcnNpb24gMyBvZiB0aGUgR05VIExlc3NlcgpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhbmQgdGhlICJHTlUgR1BMIiByZWZlcnMgdG8gdmVyc2lvbiAzIG9mIHRoZSBHTlUKR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgIlRoZSBMaWJyYXJ5IiByZWZlcnMgdG8gYSBjb3ZlcmVkIHdvcmsgZ292ZXJuZWQgYnkgdGhpcyBMaWNlbnNlLApvdGhlciB0aGFuIGFuIEFwcGxpY2F0aW9uIG9yIGEgQ29tYmluZWQgV29yayBhcyBkZWZpbmVkIGJlbG93LgoKICBBbiAiQXBwbGljYXRpb24iIGlzIGFueSB3b3JrIHRoYXQgbWFrZXMgdXNlIG9mIGFuIGludGVyZmFjZSBwcm92aWRlZApieSB0aGUgTGlicmFyeSwgYnV0IHdoaWNoIGlzIG5vdCBvdGhlcndpc2UgYmFzZWQgb24gdGhlIExpYnJhcnkuCkRlZmluaW5nIGEgc3ViY2xhc3Mgb2YgYSBjbGFzcyBkZWZpbmVkIGJ5IHRoZSBMaWJyYXJ5IGlzIGRlZW1lZCBhIG1vZGUKb2YgdXNpbmcgYW4gaW50ZXJmYWNlIHByb3ZpZGVkIGJ5IHRoZSBMaWJyYXJ5LgoKICBBICJDb21iaW5lZCBXb3JrIiBpcyBhIHdvcmsgcHJvZHVjZWQgYnkgY29tYmluaW5nIG9yIGxpbmtpbmcgYW4KQXBwbGljYXRpb24gd2l0aCB0aGUgTGlicmFyeS4gIFRoZSBwYXJ0aWN1bGFyIHZlcnNpb24gb2YgdGhlIExpYnJhcnkKd2l0aCB3aGljaCB0aGUgQ29tYmluZWQgV29yayB3YXMgbWFkZSBpcyBhbHNvIGNhbGxlZCB0aGUgIkxpbmtlZApWZXJzaW9uIi4KCiAgVGhlICJNaW5pbWFsIENvcnJlc3BvbmRpbmcgU291cmNlIiBmb3IgYSBDb21iaW5lZCBXb3JrIG1lYW5zIHRoZQpDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgdGhlIENvbWJpbmVkIFdvcmssIGV4Y2x1ZGluZyBhbnkgc291cmNlIGNvZGUKZm9yIHBvcnRpb25zIG9mIHRoZSBDb21iaW5lZCBXb3JrIHRoYXQsIGNvbnNpZGVyZWQgaW4gaXNvbGF0aW9uLCBhcmUKYmFzZWQgb24gdGhlIEFwcGxpY2F0aW9uLCBhbmQgbm90IG9uIHRoZSBMaW5rZWQgVmVyc2lvbi4KCiAgVGhlICJDb3JyZXNwb25kaW5nIEFwcGxpY2F0aW9uIENvZGUiIGZvciBhIENvbWJpbmVkIFdvcmsgbWVhbnMgdGhlCm9iamVjdCBjb2RlIGFuZC9vciBzb3VyY2UgY29kZSBmb3IgdGhlIEFwcGxpY2F0aW9uLCBpbmNsdWRpbmcgYW55IGRhdGEKYW5kIHV0aWxpdHkgcHJvZ3JhbXMgbmVlZGVkIGZvciByZXByb2R1Y2luZyB0aGUgQ29tYmluZWQgV29yayBmcm9tIHRoZQpBcHBsaWNhdGlvbiwgYnV0IGV4Y2x1ZGluZyB0aGUgU3lzdGVtIExpYnJhcmllcyBvZiB0aGUgQ29tYmluZWQgV29yay4KCiAgMS4gRXhjZXB0aW9uIHRvIFNlY3Rpb24gMyBvZiB0aGUgR05VIEdQTC4KCiAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsgdW5kZXIgc2VjdGlvbnMgMyBhbmQgNCBvZiB0aGlzIExpY2Vuc2UKd2l0aG91dCBiZWluZyBib3VuZCBieSBzZWN0aW9uIDMgb2YgdGhlIEdOVSBHUEwuCgogIDIuIENvbnZleWluZyBNb2RpZmllZCBWZXJzaW9ucy4KCiAgSWYgeW91IG1vZGlmeSBhIGNvcHkgb2YgdGhlIExpYnJhcnksIGFuZCwgaW4geW91ciBtb2RpZmljYXRpb25zLCBhCmZhY2lsaXR5IHJlZmVycyB0byBhIGZ1bmN0aW9uIG9yIGRhdGEgdG8gYmUgc3VwcGxpZWQgYnkgYW4gQXBwbGljYXRpb24KdGhhdCB1c2VzIHRoZSBmYWNpbGl0eSAob3RoZXIgdGhhbiBhcyBhbiBhcmd1bWVudCBwYXNzZWQgd2hlbiB0aGUKZmFjaWxpdHkgaXMgaW52b2tlZCksIHRoZW4geW91IG1heSBjb252ZXkgYSBjb3B5IG9mIHRoZSBtb2RpZmllZAp2ZXJzaW9uOgoKICAgYSkgdW5kZXIgdGhpcyBMaWNlbnNlLCBwcm92aWRlZCB0aGF0IHlvdSBtYWtlIGEgZ29vZCBmYWl0aCBlZmZvcnQgdG8KICAgZW5zdXJlIHRoYXQsIGluIHRoZSBldmVudCBhbiBBcHBsaWNhdGlvbiBkb2VzIG5vdCBzdXBwbHkgdGhlCiAgIGZ1bmN0aW9uIG9yIGRhdGEsIHRoZSBmYWNpbGl0eSBzdGlsbCBvcGVyYXRlcywgYW5kIHBlcmZvcm1zCiAgIHdoYXRldmVyIHBhcnQgb2YgaXRzIHB1cnBvc2UgcmVtYWlucyBtZWFuaW5nZnVsLCBvcgoKICAgYikgdW5kZXIgdGhlIEdOVSBHUEwsIHdpdGggbm9uZSBvZiB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvZgogICB0aGlzIExpY2Vuc2UgYXBwbGljYWJsZSB0byB0aGF0IGNvcHkuCgogIDMuIE9iamVjdCBDb2RlIEluY29ycG9yYXRpbmcgTWF0ZXJpYWwgZnJvbSBMaWJyYXJ5IEhlYWRlciBGaWxlcy4KCiAgVGhlIG9iamVjdCBjb2RlIGZvcm0gb2YgYW4gQXBwbGljYXRpb24gbWF5IGluY29ycG9yYXRlIG1hdGVyaWFsIGZyb20KYSBoZWFkZXIgZmlsZSB0aGF0IGlzIHBhcnQgb2YgdGhlIExpYnJhcnkuICBZb3UgbWF5IGNvbnZleSBzdWNoIG9iamVjdApjb2RlIHVuZGVyIHRlcm1zIG9mIHlvdXIgY2hvaWNlLCBwcm92aWRlZCB0aGF0LCBpZiB0aGUgaW5jb3Jwb3JhdGVkCm1hdGVyaWFsIGlzIG5vdCBsaW1pdGVkIHRvIG51bWVyaWNhbCBwYXJhbWV0ZXJzLCBkYXRhIHN0cnVjdHVyZQpsYXlvdXRzIGFuZCBhY2Nlc3NvcnMsIG9yIHNtYWxsIG1hY3JvcywgaW5saW5lIGZ1bmN0aW9ucyBhbmQgdGVtcGxhdGVzCih0ZW4gb3IgZmV3ZXIgbGluZXMgaW4gbGVuZ3RoKSwgeW91IGRvIGJvdGggb2YgdGhlIGZvbGxvd2luZzoKCiAgIGEpIEdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBvZiB0aGUgb2JqZWN0IGNvZGUgdGhhdCB0aGUKICAgTGlicmFyeSBpcyB1c2VkIGluIGl0IGFuZCB0aGF0IHRoZSBMaWJyYXJ5IGFuZCBpdHMgdXNlIGFyZQogICBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZS4KCiAgIGIpIEFjY29tcGFueSB0aGUgb2JqZWN0IGNvZGUgd2l0aCBhIGNvcHkgb2YgdGhlIEdOVSBHUEwgYW5kIHRoaXMgbGljZW5zZQogICBkb2N1bWVudC4KCiAgNC4gQ29tYmluZWQgV29ya3MuCgogIFlvdSBtYXkgY29udmV5IGEgQ29tYmluZWQgV29yayB1bmRlciB0ZXJtcyBvZiB5b3VyIGNob2ljZSB0aGF0LAp0YWtlbiB0b2dldGhlciwgZWZmZWN0aXZlbHkgZG8gbm90IHJlc3RyaWN0IG1vZGlmaWNhdGlvbiBvZiB0aGUKcG9ydGlvbnMgb2YgdGhlIExpYnJhcnkgY29udGFpbmVkIGluIHRoZSBDb21iaW5lZCBXb3JrIGFuZCByZXZlcnNlCmVuZ2luZWVyaW5nIGZvciBkZWJ1Z2dpbmcgc3VjaCBtb2RpZmljYXRpb25zLCBpZiB5b3UgYWxzbyBkbyBlYWNoIG9mCnRoZSBmb2xsb3dpbmc6CgogICBhKSBHaXZlIHByb21pbmVudCBub3RpY2Ugd2l0aCBlYWNoIGNvcHkgb2YgdGhlIENvbWJpbmVkIFdvcmsgdGhhdAogICB0aGUgTGlicmFyeSBpcyB1c2VkIGluIGl0IGFuZCB0aGF0IHRoZSBMaWJyYXJ5IGFuZCBpdHMgdXNlIGFyZQogICBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZS4KCiAgIGIpIEFjY29tcGFueSB0aGUgQ29tYmluZWQgV29yayB3aXRoIGEgY29weSBvZiB0aGUgR05VIEdQTCBhbmQgdGhpcyBsaWNlbnNlCiAgIGRvY3VtZW50LgoKICAgYykgRm9yIGEgQ29tYmluZWQgV29yayB0aGF0IGRpc3BsYXlzIGNvcHlyaWdodCBub3RpY2VzIGR1cmluZwogICBleGVjdXRpb24sIGluY2x1ZGUgdGhlIGNvcHlyaWdodCBub3RpY2UgZm9yIHRoZSBMaWJyYXJ5IGFtb25nCiAgIHRoZXNlIG5vdGljZXMsIGFzIHdlbGwgYXMgYSByZWZlcmVuY2UgZGlyZWN0aW5nIHRoZSB1c2VyIHRvIHRoZQogICBjb3BpZXMgb2YgdGhlIEdOVSBHUEwgYW5kIHRoaXMgbGljZW5zZSBkb2N1bWVudC4KCiAgIGQpIERvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgoKICAgICAgIDApIENvbnZleSB0aGUgTWluaW1hbCBDb3JyZXNwb25kaW5nIFNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcwogICAgICAgTGljZW5zZSwgYW5kIHRoZSBDb3JyZXNwb25kaW5nIEFwcGxpY2F0aW9uIENvZGUgaW4gYSBmb3JtCiAgICAgICBzdWl0YWJsZSBmb3IsIGFuZCB1bmRlciB0ZXJtcyB0aGF0IHBlcm1pdCwgdGhlIHVzZXIgdG8KICAgICAgIHJlY29tYmluZSBvciByZWxpbmsgdGhlIEFwcGxpY2F0aW9uIHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mCiAgICAgICB0aGUgTGlua2VkIFZlcnNpb24gdG8gcHJvZHVjZSBhIG1vZGlmaWVkIENvbWJpbmVkIFdvcmssIGluIHRoZQogICAgICAgbWFubmVyIHNwZWNpZmllZCBieSBzZWN0aW9uIDYgb2YgdGhlIEdOVSBHUEwgZm9yIGNvbnZleWluZwogICAgICAgQ29ycmVzcG9uZGluZyBTb3VyY2UuCgogICAgICAgMSkgVXNlIGEgc3VpdGFibGUgc2hhcmVkIGxpYnJhcnkgbWVjaGFuaXNtIGZvciBsaW5raW5nIHdpdGggdGhlCiAgICAgICBMaWJyYXJ5LiAgQSBzdWl0YWJsZSBtZWNoYW5pc20gaXMgb25lIHRoYXQgKGEpIHVzZXMgYXQgcnVuIHRpbWUKICAgICAgIGEgY29weSBvZiB0aGUgTGlicmFyeSBhbHJlYWR5IHByZXNlbnQgb24gdGhlIHVzZXIncyBjb21wdXRlcgogICAgICAgc3lzdGVtLCBhbmQgKGIpIHdpbGwgb3BlcmF0ZSBwcm9wZXJseSB3aXRoIGEgbW9kaWZpZWQgdmVyc2lvbgogICAgICAgb2YgdGhlIExpYnJhcnkgdGhhdCBpcyBpbnRlcmZhY2UtY29tcGF0aWJsZSB3aXRoIHRoZSBMaW5rZWQKICAgICAgIFZlcnNpb24uIAoKICAgZSkgUHJvdmlkZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24sIGJ1dCBvbmx5IGlmIHlvdSB3b3VsZCBvdGhlcndpc2UKICAgYmUgcmVxdWlyZWQgdG8gcHJvdmlkZSBzdWNoIGluZm9ybWF0aW9uIHVuZGVyIHNlY3Rpb24gNiBvZiB0aGUKICAgR05VIEdQTCwgYW5kIG9ubHkgdG8gdGhlIGV4dGVudCB0aGF0IHN1Y2ggaW5mb3JtYXRpb24gaXMKICAgbmVjZXNzYXJ5IHRvIGluc3RhbGwgYW5kIGV4ZWN1dGUgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZQogICBDb21iaW5lZCBXb3JrIHByb2R1Y2VkIGJ5IHJlY29tYmluaW5nIG9yIHJlbGlua2luZyB0aGUKICAgQXBwbGljYXRpb24gd2l0aCBhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIExpbmtlZCBWZXJzaW9uLiAoSWYKICAgeW91IHVzZSBvcHRpb24gNGQwLCB0aGUgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIG11c3QgYWNjb21wYW55CiAgIHRoZSBNaW5pbWFsIENvcnJlc3BvbmRpbmcgU291cmNlIGFuZCBDb3JyZXNwb25kaW5nIEFwcGxpY2F0aW9uCiAgIENvZGUuIElmIHlvdSB1c2Ugb3B0aW9uIDRkMSwgeW91IG11c3QgcHJvdmlkZSB0aGUgSW5zdGFsbGF0aW9uCiAgIEluZm9ybWF0aW9uIGluIHRoZSBtYW5uZXIgc3BlY2lmaWVkIGJ5IHNlY3Rpb24gNiBvZiB0aGUgR05VIEdQTAogICBmb3IgY29udmV5aW5nIENvcnJlc3BvbmRpbmcgU291cmNlLikKCiAgNS4gQ29tYmluZWQgTGlicmFyaWVzLgoKICBZb3UgbWF5IHBsYWNlIGxpYnJhcnkgZmFjaWxpdGllcyB0aGF0IGFyZSBhIHdvcmsgYmFzZWQgb24gdGhlCkxpYnJhcnkgc2lkZSBieSBzaWRlIGluIGEgc2luZ2xlIGxpYnJhcnkgdG9nZXRoZXIgd2l0aCBvdGhlciBsaWJyYXJ5CmZhY2lsaXRpZXMgdGhhdCBhcmUgbm90IEFwcGxpY2F0aW9ucyBhbmQgYXJlIG5vdCBjb3ZlcmVkIGJ5IHRoaXMKTGljZW5zZSwgYW5kIGNvbnZleSBzdWNoIGEgY29tYmluZWQgbGlicmFyeSB1bmRlciB0ZXJtcyBvZiB5b3VyCmNob2ljZSwgaWYgeW91IGRvIGJvdGggb2YgdGhlIGZvbGxvd2luZzoKCiAgIGEpIEFjY29tcGFueSB0aGUgY29tYmluZWQgbGlicmFyeSB3aXRoIGEgY29weSBvZiB0aGUgc2FtZSB3b3JrIGJhc2VkCiAgIG9uIHRoZSBMaWJyYXJ5LCB1bmNvbWJpbmVkIHdpdGggYW55IG90aGVyIGxpYnJhcnkgZmFjaWxpdGllcywKICAgY29udmV5ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KCiAgIGIpIEdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIHRoZSBjb21iaW5lZCBsaWJyYXJ5IHRoYXQgcGFydCBvZiBpdAogICBpcyBhIHdvcmsgYmFzZWQgb24gdGhlIExpYnJhcnksIGFuZCBleHBsYWluaW5nIHdoZXJlIHRvIGZpbmQgdGhlCiAgIGFjY29tcGFueWluZyB1bmNvbWJpbmVkIGZvcm0gb2YgdGhlIHNhbWUgd29yay4KCiAgNi4gUmV2aXNlZCBWZXJzaW9ucyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgoKICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucwpvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiBTdWNoIG5ldwp2ZXJzaW9ucyB3aWxsIGJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkKZGlmZmVyIGluIGRldGFpbCB0byBhZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCiAgRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuIElmIHRoZQpMaWJyYXJ5IGFzIHlvdSByZWNlaXZlZCBpdCBzcGVjaWZpZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbgpvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICJvciBhbnkgbGF0ZXIgdmVyc2lvbiIKYXBwbGllcyB0byBpdCwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZApjb25kaXRpb25zIGVpdGhlciBvZiB0aGF0IHB1Ymxpc2hlZCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uCnB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBJZiB0aGUgTGlicmFyeSBhcyB5b3UKcmVjZWl2ZWQgaXQgZG9lcyBub3Qgc3BlY2lmeSBhIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBHTlUgTGVzc2VyCkdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIG9mIHRoZSBHTlUgTGVzc2VyCkdlbmVyYWwgUHVibGljIExpY2Vuc2UgZXZlciBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KCiAgSWYgdGhlIExpYnJhcnkgYXMgeW91IHJlY2VpdmVkIGl0IHNwZWNpZmllcyB0aGF0IGEgcHJveHkgY2FuIGRlY2lkZQp3aGV0aGVyIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHNoYWxsCmFwcGx5LCB0aGF0IHByb3h5J3MgcHVibGljIHN0YXRlbWVudCBvZiBhY2NlcHRhbmNlIG9mIGFueSB2ZXJzaW9uIGlzCnBlcm1hbmVudCBhdXRob3JpemF0aW9uIGZvciB5b3UgdG8gY2hvb3NlIHRoYXQgdmVyc2lvbiBmb3IgdGhlCkxpYnJhcnku]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/MIT-LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Q29weXJpZ2h0IChjKSAyMDAzLCAyMDA0IEppbSBXZWlyaWNoCgpQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcKYSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlCiJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLApkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8KcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCnRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKClRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCmluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgoKVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCkVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgpNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORApOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCkxJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCldJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgo=]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/scripts/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/scripts/shAutoloader.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFN5bnRheEhpZ2hsaWdodGVyCiAqIGh0dHA6Ly9hbGV4Z29yYmF0Y2hldi5jb20vU3ludGF4SGlnaGxpZ2h0ZXIKICoKICogU3ludGF4SGlnaGxpZ2h0ZXIgaXMgZG9uYXRpb253YXJlLiBJZiB5b3UgYXJlIHVzaW5nIGl0LCBwbGVhc2UgZG9uYXRlLgogKiBodHRwOi8vYWxleGdvcmJhdGNoZXYuY29tL1N5bnRheEhpZ2hsaWdodGVyL2RvbmF0ZS5odG1sCiAqCiAqIEB2ZXJzaW9uCiAqIDMuMC44MyAoSnVseSAwMiAyMDEwKQogKiAKICogQGNvcHlyaWdodAogKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMCBBbGV4IEdvcmJhdGNoZXYuCiAqCiAqIEBsaWNlbnNlCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgogKi8KZXZhbChmdW5jdGlvbihwLGEsYyxrLGUsZCl7ZT1mdW5jdGlvbihjKXtyZXR1cm4oYzxhPycnOmUocGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50b1N0cmluZygzNikpfTtpZighJycucmVwbGFjZSgvXi8sU3RyaW5nKSl7d2hpbGUoYy0tKXtkW2UoYyldPWtbY118fGUoYyl9az1bZnVuY3Rpb24oZSl7cmV0dXJuIGRbZV19XTtlPWZ1bmN0aW9uKCl7cmV0dXJuJ1xcdysnfTtjPTF9O3doaWxlKGMtLSl7aWYoa1tjXSl7cD1wLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxiJytlKGMpKydcXGInLCdnJyksa1tjXSl9fXJldHVybiBwfSgnKDIoKXsxIGg9NTtoLkk9MigpezIgbihjLGEpezQoMSBkPTA7ZDxjLjk7ZCsrKWlbY1tkXV09YX0yIG8oYyl7MSBhPXIuSCgiSiIpLGQ9MzthLks9YzthLk09IkwvdCI7YS5HPSJ0IjthLnU9YS52PTIoKXs2KCFkJiYoITguN3x8OC43PT0iRiJ8fDguNz09InoiKSl7ZD1xO2VbY109cTthOns0KDEgcCB5IGUpNihlW3BdPT0zKUIgYTtqJiY1LkMoayl9YS51PWEudj14O2EuRC5PKGEpfX07ci5OLlIoYSl9MSBmPVEsbD1oLlAoKSxpPXt9LGU9e30saj0zLGs9eCxiOzUuVD0yKGMpe2s9YztqPXF9OzQoYj0wO2I8Zi45O2IrKyl7MSBtPWZbYl0udz9mW2JdOmZbYl0uUygvXFxzKy8pLGc9bS53KCk7bihtLGcpfTQoYj0wO2I8bC45O2IrKyk2KGc9aVtsW2JdLkUuQV0pe2VbZ109MztvKGcpfX19KSgpOycsNTYsNTYsJ3x2YXJ8ZnVuY3Rpb258ZmFsc2V8Zm9yfFN5bnRheEhpZ2hsaWdodGVyfGlmfHJlYWR5U3RhdGV8dGhpc3xsZW5ndGh8fHx8fHx8fHx8fHx8fHx8fHRydWV8ZG9jdW1lbnR8fGphdmFzY3JpcHR8b25sb2FkfG9ucmVhZHlzdGF0ZWNoYW5nZXxwb3B8bnVsbHxpbnxjb21wbGV0ZXxicnVzaHxicmVha3xoaWdobGlnaHR8cGFyZW50Tm9kZXxwYXJhbXN8bG9hZGVkfGxhbmd1YWdlfGNyZWF0ZUVsZW1lbnR8YXV0b2xvYWRlcnxzY3JpcHR8c3JjfHRleHR8dHlwZXxib2R5fHJlbW92ZUNoaWxkfGZpbmRFbGVtZW50c3xhcmd1bWVudHN8YXBwZW5kQ2hpbGR8c3BsaXR8YWxsJy5zcGxpdCgnfCcpLDAse30pKQo=]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/scripts/shAutoloader.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZXZhbChmdW5jdGlvbihoLGIsaixmLGcsaSl7Zz1mdW5jdGlvbihhKXtyZXR1cm4oYTxiPyIiOmcocGFyc2VJbnQoYS9iKSkpKygoYT1hJWIpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYSsyOSk6YS50b1N0cmluZygzNikpfTtpZighIiIucmVwbGFjZSgvXi8sU3RyaW5nKSl7d2hpbGUoai0tKXtpW2coaildPWZbal18fGcoail9Zj1bZnVuY3Rpb24oYSl7cmV0dXJuIGlbYV19XTtnPWZ1bmN0aW9uKCl7cmV0dXJuIlxcdysifTtqPTF9d2hpbGUoai0tKXtpZihmW2pdKXtoPWgucmVwbGFjZShuZXcgUmVnRXhwKCJcXGIiK2coaikrIlxcYiIsImciKSxmW2pdKX19cmV0dXJuIGh9KCcoMigpezEgaD01O2guST0yKCl7MiBuKGMsYSl7NCgxIGQ9MDtkPGMuOTtkKyspaVtjW2RdXT1hfTIgbyhjKXsxIGE9ci5IKCJKIiksZD0zO2EuSz1jO2EuTT0iTC90IjthLkc9InQiO2EudT1hLnY9MigpezYoIWQmJighOC43fHw4Ljc9PSJGInx8OC43PT0ieiIpKXtkPXE7ZVtjXT1xO2E6ezQoMSBwIHkgZSk2KGVbcF09PTMpQiBhO2omJjUuQyhrKX1hLnU9YS52PXg7YS5ELk8oYSl9fTtyLk4uUihhKX0xIGY9USxsPWguUCgpLGk9e30sZT17fSxqPTMsaz14LGI7NS5UPTIoYyl7az1jO2o9cX07NChiPTA7YjxmLjk7YisrKXsxIG09ZltiXS53P2ZbYl06ZltiXS5TKC9cXHMrLyksZz1tLncoKTtuKG0sZyl9NChiPTA7YjxsLjk7YisrKTYoZz1pW2xbYl0uRS5BXSl7ZVtnXT0zO28oZyl9fX0pKCk7Jyw1Niw1NiwifHZhcnxmdW5jdGlvbnxmYWxzZXxmb3J8U3ludGF4SGlnaGxpZ2h0ZXJ8aWZ8cmVhZHlTdGF0ZXx0aGlzfGxlbmd0aHx8fHx8fHx8fHx8fHx8fHx8dHJ1ZXxkb2N1bWVudHx8amF2YXNjcmlwdHxvbmxvYWR8b25yZWFkeXN0YXRlY2hhbmdlfHBvcHxudWxsfGlufGNvbXBsZXRlfGJydXNofGJyZWFrfGhpZ2hsaWdodHxwYXJlbnROb2RlfHBhcmFtc3xsb2FkZWR8bGFuZ3VhZ2V8Y3JlYXRlRWxlbWVudHxhdXRvbG9hZGVyfHNjcmlwdHxzcmN8dGV4dHx0eXBlfGJvZHl8cmVtb3ZlQ2hpbGR8ZmluZEVsZW1lbnRzfGFyZ3VtZW50c3xhcHBlbmRDaGlsZHxzcGxpdHxhbGwiLnNwbGl0KCJ8IiksMCx7fSkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/scripts/shBrushJScript.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFN5bnRheEhpZ2hsaWdodGVyCiAqIGh0dHA6Ly9hbGV4Z29yYmF0Y2hldi5jb20vU3ludGF4SGlnaGxpZ2h0ZXIKICoKICogU3ludGF4SGlnaGxpZ2h0ZXIgaXMgZG9uYXRpb253YXJlLiBJZiB5b3UgYXJlIHVzaW5nIGl0LCBwbGVhc2UgZG9uYXRlLgogKiBodHRwOi8vYWxleGdvcmJhdGNoZXYuY29tL1N5bnRheEhpZ2hsaWdodGVyL2RvbmF0ZS5odG1sCiAqCiAqIEB2ZXJzaW9uCiAqIDMuMC44MyAoSnVseSAwMiAyMDEwKQogKiAKICogQGNvcHlyaWdodAogKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMCBBbGV4IEdvcmJhdGNoZXYuCiAqCiAqIEBsaWNlbnNlCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgogKi8KOyhmdW5jdGlvbigpCnsKCS8vIENvbW1vbkpTCgl0eXBlb2YocmVxdWlyZSkgIT0gJ3VuZGVmaW5lZCcgPyBTeW50YXhIaWdobGlnaHRlciA9IHJlcXVpcmUoJ3NoQ29yZScpLlN5bnRheEhpZ2hsaWdodGVyIDogbnVsbDsKCglmdW5jdGlvbiBCcnVzaCgpCgl7CgkJdmFyIGtleXdvcmRzID0JJ2JyZWFrIGNhc2UgY2F0Y2ggY29udGludWUgJyArCgkJCQkJCSdkZWZhdWx0IGRlbGV0ZSBkbyBlbHNlIGZhbHNlICAnICsKCQkJCQkJJ2ZvciBmdW5jdGlvbiBpZiBpbiBpbnN0YW5jZW9mICcgKwoJCQkJCQknbmV3IG51bGwgcmV0dXJuIHN1cGVyIHN3aXRjaCAnICsKCQkJCQkJJ3RoaXMgdGhyb3cgdHJ1ZSB0cnkgdHlwZW9mIHZhciB3aGlsZSB3aXRoJwoJCQkJCQk7CgoJCXZhciByID0gU3ludGF4SGlnaGxpZ2h0ZXIucmVnZXhMaWI7CgkJCgkJdGhpcy5yZWdleExpc3QgPSBbCgkJCXsgcmVnZXg6IHIubXVsdGlMaW5lRG91YmxlUXVvdGVkU3RyaW5nLAkJCQkJY3NzOiAnc3RyaW5nJyB9LAkJCS8vIGRvdWJsZSBxdW90ZWQgc3RyaW5ncwoJCQl7IHJlZ2V4OiByLm11bHRpTGluZVNpbmdsZVF1b3RlZFN0cmluZywJCQkJCWNzczogJ3N0cmluZycgfSwJCQkvLyBzaW5nbGUgcXVvdGVkIHN0cmluZ3MKCQkJeyByZWdleDogci5zaW5nbGVMaW5lQ0NvbW1lbnRzLAkJCQkJCQljc3M6ICdjb21tZW50cycgfSwJCQkvLyBvbmUgbGluZSBjb21tZW50cwoJCQl7IHJlZ2V4OiByLm11bHRpTGluZUNDb21tZW50cywJCQkJCQkJY3NzOiAnY29tbWVudHMnIH0sCQkJLy8gbXVsdGlsaW5lIGNvbW1lbnRzCgkJCXsgcmVnZXg6IC9ccyojLiovZ20sCQkJCQkJCQkJY3NzOiAncHJlcHJvY2Vzc29yJyB9LAkJLy8gcHJlcHJvY2Vzc29yIHRhZ3MgbGlrZSAjcmVnaW9uIGFuZCAjZW5kcmVnaW9uCgkJCXsgcmVnZXg6IG5ldyBSZWdFeHAodGhpcy5nZXRLZXl3b3JkcyhrZXl3b3JkcyksICdnbScpLAljc3M6ICdrZXl3b3JkJyB9CQkJLy8ga2V5d29yZHMKCQkJXTsKCQoJCXRoaXMuZm9ySHRtbFNjcmlwdChyLnNjcmlwdFNjcmlwdFRhZ3MpOwoJfTsKCglCcnVzaC5wcm90b3R5cGUJPSBuZXcgU3ludGF4SGlnaGxpZ2h0ZXIuSGlnaGxpZ2h0ZXIoKTsKCUJydXNoLmFsaWFzZXMJPSBbJ2pzJywgJ2pzY3JpcHQnLCAnamF2YXNjcmlwdCddOwoKCVN5bnRheEhpZ2hsaWdodGVyLmJydXNoZXMuSlNjcmlwdCA9IEJydXNoOwoKCS8vIENvbW1vbkpTCgl0eXBlb2YoZXhwb3J0cykgIT0gJ3VuZGVmaW5lZCcgPyBleHBvcnRzLkJydXNoID0gQnJ1c2ggOiBudWxsOwp9KSgpOwo=]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/scripts/shBrushJScript.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[KGZ1bmN0aW9uKCl7dHlwZW9mKHJlcXVpcmUpIT0idW5kZWZpbmVkIj9TeW50YXhIaWdobGlnaHRlcj1yZXF1aXJlKCJzaENvcmUiKS5TeW50YXhIaWdobGlnaHRlcjpudWxsO2Z1bmN0aW9uIGEoKXt2YXIgYj0iYnJlYWsgY2FzZSBjYXRjaCBjb250aW51ZSBkZWZhdWx0IGRlbGV0ZSBkbyBlbHNlIGZhbHNlICBmb3IgZnVuY3Rpb24gaWYgaW4gaW5zdGFuY2VvZiBuZXcgbnVsbCByZXR1cm4gc3VwZXIgc3dpdGNoIHRoaXMgdGhyb3cgdHJ1ZSB0cnkgdHlwZW9mIHZhciB3aGlsZSB3aXRoIjt2YXIgYz1TeW50YXhIaWdobGlnaHRlci5yZWdleExpYjt0aGlzLnJlZ2V4TGlzdD1be3JlZ2V4OmMubXVsdGlMaW5lRG91YmxlUXVvdGVkU3RyaW5nLGNzczoic3RyaW5nIn0se3JlZ2V4OmMubXVsdGlMaW5lU2luZ2xlUXVvdGVkU3RyaW5nLGNzczoic3RyaW5nIn0se3JlZ2V4OmMuc2luZ2xlTGluZUNDb21tZW50cyxjc3M6ImNvbW1lbnRzIn0se3JlZ2V4OmMubXVsdGlMaW5lQ0NvbW1lbnRzLGNzczoiY29tbWVudHMifSx7cmVnZXg6L1xzKiMuKi9nbSxjc3M6InByZXByb2Nlc3NvciJ9LHtyZWdleDpuZXcgUmVnRXhwKHRoaXMuZ2V0S2V5d29yZHMoYiksImdtIiksY3NzOiJrZXl3b3JkIn1dO3RoaXMuZm9ySHRtbFNjcmlwdChjLnNjcmlwdFNjcmlwdFRhZ3MpfWEucHJvdG90eXBlPW5ldyBTeW50YXhIaWdobGlnaHRlci5IaWdobGlnaHRlcigpO2EuYWxpYXNlcz1bImpzIiwianNjcmlwdCIsImphdmFzY3JpcHQiXTtTeW50YXhIaWdobGlnaHRlci5icnVzaGVzLkpTY3JpcHQ9YTt0eXBlb2YoZXhwb3J0cykhPSJ1bmRlZmluZWQiP2V4cG9ydHMuQnJ1c2g9YTpudWxsfSkoKTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/scripts/shBrushXml.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFN5bnRheEhpZ2hsaWdodGVyCiAqIGh0dHA6Ly9hbGV4Z29yYmF0Y2hldi5jb20vU3ludGF4SGlnaGxpZ2h0ZXIKICoKICogU3ludGF4SGlnaGxpZ2h0ZXIgaXMgZG9uYXRpb253YXJlLiBJZiB5b3UgYXJlIHVzaW5nIGl0LCBwbGVhc2UgZG9uYXRlLgogKiBodHRwOi8vYWxleGdvcmJhdGNoZXYuY29tL1N5bnRheEhpZ2hsaWdodGVyL2RvbmF0ZS5odG1sCiAqCiAqIEB2ZXJzaW9uCiAqIDMuMC44MyAoSnVseSAwMiAyMDEwKQogKiAKICogQGNvcHlyaWdodAogKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMCBBbGV4IEdvcmJhdGNoZXYuCiAqCiAqIEBsaWNlbnNlCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgogKi8KOyhmdW5jdGlvbigpCnsKCS8vIENvbW1vbkpTCgl0eXBlb2YocmVxdWlyZSkgIT0gJ3VuZGVmaW5lZCcgPyBTeW50YXhIaWdobGlnaHRlciA9IHJlcXVpcmUoJ3NoQ29yZScpLlN5bnRheEhpZ2hsaWdodGVyIDogbnVsbDsKCglmdW5jdGlvbiBCcnVzaCgpCgl7CgkJZnVuY3Rpb24gcHJvY2VzcyhtYXRjaCwgcmVnZXhJbmZvKQoJCXsKCQkJdmFyIGNvbnN0cnVjdG9yID0gU3ludGF4SGlnaGxpZ2h0ZXIuTWF0Y2gsCgkJCQljb2RlID0gbWF0Y2hbMF0sCgkJCQl0YWcgPSBuZXcgWFJlZ0V4cCgnKCZsdDt8PClbXFxzXFwvXFw/XSooPzxuYW1lPls6XFx3LVxcLl0rKScsICd4ZycpLmV4ZWMoY29kZSksCgkJCQlyZXN1bHQgPSBbXQoJCQkJOwoJCQoJCQlpZiAobWF0Y2guYXR0cmlidXRlcyAhPSBudWxsKSAKCQkJewoJCQkJdmFyIGF0dHJpYnV0ZXMsCgkJCQkJcmVnZXggPSBuZXcgWFJlZ0V4cCgnKD88bmFtZT4gW1xcdzpcXC1cXC5dKyknICsKCQkJCQkJCQkJCSdcXHMqPVxccyonICsKCQkJCQkJCQkJCScoPzx2YWx1ZT4gIi4qPyJ8XCcuKj9cJ3xcXHcrKScsCgkJCQkJCQkJCQkneGcnKTsKCgkJCQl3aGlsZSAoKGF0dHJpYnV0ZXMgPSByZWdleC5leGVjKGNvZGUpKSAhPSBudWxsKSAKCQkJCXsKCQkJCQlyZXN1bHQucHVzaChuZXcgY29uc3RydWN0b3IoYXR0cmlidXRlcy5uYW1lLCBtYXRjaC5pbmRleCArIGF0dHJpYnV0ZXMuaW5kZXgsICdjb2xvcjEnKSk7CgkJCQkJcmVzdWx0LnB1c2gobmV3IGNvbnN0cnVjdG9yKGF0dHJpYnV0ZXMudmFsdWUsIG1hdGNoLmluZGV4ICsgYXR0cmlidXRlcy5pbmRleCArIGF0dHJpYnV0ZXNbMF0uaW5kZXhPZihhdHRyaWJ1dGVzLnZhbHVlKSwgJ3N0cmluZycpKTsKCQkJCX0KCQkJfQoKCQkJaWYgKHRhZyAhPSBudWxsKQoJCQkJcmVzdWx0LnB1c2goCgkJCQkJbmV3IGNvbnN0cnVjdG9yKHRhZy5uYW1lLCBtYXRjaC5pbmRleCArIHRhZ1swXS5pbmRleE9mKHRhZy5uYW1lKSwgJ2tleXdvcmQnKQoJCQkJKTsKCgkJCXJldHVybiByZXN1bHQ7CgkJfQoJCgkJdGhpcy5yZWdleExpc3QgPSBbCgkJCXsgcmVnZXg6IG5ldyBYUmVnRXhwKCcoXFwmbHQ7fDwpXFwhXFxbW1xcd1xcc10qP1xcWygufFxccykqP1xcXVxcXShcXCZndDt8PiknLCAnZ20nKSwJCQljc3M6ICdjb2xvcjInIH0sCS8vIDwhWyAuLi4gWyAuLi4gXV0+CgkJCXsgcmVnZXg6IFN5bnRheEhpZ2hsaWdodGVyLnJlZ2V4TGliLnhtbENvbW1lbnRzLAkJCQkJCQkJCQkJCWNzczogJ2NvbW1lbnRzJyB9LAkvLyA8IS0tIC4uLiAtLT4KCQkJeyByZWdleDogbmV3IFhSZWdFeHAoJygmbHQ7fDwpW1xcc1xcL1xcP10qKFxcdyspKD88YXR0cmlidXRlcz4uKj8pW1xcc1xcL1xcP10qKCZndDt8PiknLCAnc2cnKSwgZnVuYzogcHJvY2VzcyB9CgkJXTsKCX07CgoJQnJ1c2gucHJvdG90eXBlCT0gbmV3IFN5bnRheEhpZ2hsaWdodGVyLkhpZ2hsaWdodGVyKCk7CglCcnVzaC5hbGlhc2VzCT0gWyd4bWwnLCAneGh0bWwnLCAneHNsdCcsICdodG1sJ107CgoJU3ludGF4SGlnaGxpZ2h0ZXIuYnJ1c2hlcy5YbWwgPSBCcnVzaDsKCgkvLyBDb21tb25KUwoJdHlwZW9mKGV4cG9ydHMpICE9ICd1bmRlZmluZWQnID8gZXhwb3J0cy5CcnVzaCA9IEJydXNoIDogbnVsbDsKfSkoKTsK]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/scripts/shBrushXml.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[KGZ1bmN0aW9uKCl7dHlwZW9mKHJlcXVpcmUpIT0idW5kZWZpbmVkIj9TeW50YXhIaWdobGlnaHRlcj1yZXF1aXJlKCJzaENvcmUiKS5TeW50YXhIaWdobGlnaHRlcjpudWxsO2Z1bmN0aW9uIGEoKXtmdW5jdGlvbiBiKGYsail7dmFyIGc9U3ludGF4SGlnaGxpZ2h0ZXIuTWF0Y2gsaT1mWzBdLGQ9bmV3IFhSZWdFeHAoIigmbHQ7fDwpW1xcc1xcL1xcP10qKD88bmFtZT5bOlxcdy1cXC5dKykiLCJ4ZyIpLmV4ZWMoaSksYz1bXTtpZihmLmF0dHJpYnV0ZXMhPW51bGwpe3ZhciBlLGg9bmV3IFhSZWdFeHAoIig/PG5hbWU+IFtcXHc6XFwtXFwuXSspXFxzKj1cXHMqKD88dmFsdWU+IFwiLio/XCJ8Jy4qPyd8XFx3KykiLCJ4ZyIpO3doaWxlKChlPWguZXhlYyhpKSkhPW51bGwpe2MucHVzaChuZXcgZyhlLm5hbWUsZi5pbmRleCtlLmluZGV4LCJjb2xvcjEiKSk7Yy5wdXNoKG5ldyBnKGUudmFsdWUsZi5pbmRleCtlLmluZGV4K2VbMF0uaW5kZXhPZihlLnZhbHVlKSwic3RyaW5nIikpfX1pZihkIT1udWxsKXtjLnB1c2gobmV3IGcoZC5uYW1lLGYuaW5kZXgrZFswXS5pbmRleE9mKGQubmFtZSksImtleXdvcmQiKSl9cmV0dXJuIGN9dGhpcy5yZWdleExpc3Q9W3tyZWdleDpuZXcgWFJlZ0V4cCgiKFxcJmx0O3w8KVxcIVxcW1tcXHdcXHNdKj9cXFsoLnxcXHMpKj9cXF1cXF0oXFwmZ3Q7fD4pIiwiZ20iKSxjc3M6ImNvbG9yMiJ9LHtyZWdleDpTeW50YXhIaWdobGlnaHRlci5yZWdleExpYi54bWxDb21tZW50cyxjc3M6ImNvbW1lbnRzIn0se3JlZ2V4Om5ldyBYUmVnRXhwKCIoJmx0O3w8KVtcXHNcXC9cXD9dKihcXHcrKSg/PGF0dHJpYnV0ZXM+Lio/KVtcXHNcXC9cXD9dKigmZ3Q7fD4pIiwic2ciKSxmdW5jOmJ9XX1hLnByb3RvdHlwZT1uZXcgU3ludGF4SGlnaGxpZ2h0ZXIuSGlnaGxpZ2h0ZXIoKTthLmFsaWFzZXM9WyJ4bWwiLCJ4aHRtbCIsInhzbHQiLCJodG1sIl07U3ludGF4SGlnaGxpZ2h0ZXIuYnJ1c2hlcy5YbWw9YTt0eXBlb2YoZXhwb3J0cykhPSJ1bmRlZmluZWQiP2V4cG9ydHMuQnJ1c2g9YTpudWxsfSkoKTs=]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/scripts/shCore.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFN5bnRheEhpZ2hsaWdodGVyCiAqIGh0dHA6Ly9hbGV4Z29yYmF0Y2hldi5jb20vU3ludGF4SGlnaGxpZ2h0ZXIKICoKICogU3ludGF4SGlnaGxpZ2h0ZXIgaXMgZG9uYXRpb253YXJlLiBJZiB5b3UgYXJlIHVzaW5nIGl0LCBwbGVhc2UgZG9uYXRlLgogKiBodHRwOi8vYWxleGdvcmJhdGNoZXYuY29tL1N5bnRheEhpZ2hsaWdodGVyL2RvbmF0ZS5odG1sCiAqCiAqIEB2ZXJzaW9uCiAqIDMuMC44MyAoSnVseSAwMiAyMDEwKQogKiAKICogQGNvcHlyaWdodAogKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMCBBbGV4IEdvcmJhdGNoZXYuCiAqCiAqIEBsaWNlbnNlCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgogKi8KZXZhbChmdW5jdGlvbihwLGEsYyxrLGUsZCl7ZT1mdW5jdGlvbihjKXtyZXR1cm4oYzxhPycnOmUocGFyc2VJbnQoYy9hKSkpKygoYz1jJWEpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYysyOSk6Yy50b1N0cmluZygzNikpfTtpZighJycucmVwbGFjZSgvXi8sU3RyaW5nKSl7d2hpbGUoYy0tKXtkW2UoYyldPWtbY118fGUoYyl9az1bZnVuY3Rpb24oZSl7cmV0dXJuIGRbZV19XTtlPWZ1bmN0aW9uKCl7cmV0dXJuJ1xcdysnfTtjPTF9O3doaWxlKGMtLSl7aWYoa1tjXSl7cD1wLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxiJytlKGMpKydcXGInLCdnJyksa1tjXSl9fXJldHVybiBwfSgnSyBNO0koTSkxUyAyVSgiMmFcJ3QgNGsgTSA0SyAyZyAzbCA0RyA0SCIpOyg2KCl7NiByKGYsZSl7SSghTS4xUihmKSkxUyAzbSgiM3MgMTUgNFIiKTtLIGE9Zi4xdztmPU0oZi4xbSx0KGYpKyhlfHwiIikpO0koYSlmLjF3PXsxbTphLjFtLDE5OmEuMTk/YS4xOS4xYSgwKTpOfTtIIGZ9NiB0KGYpe0goZi4xSj8iZyI6IiIpKyhmLjRzPyJpIjoiIikrKGYuNHA/Im0iOiIiKSsoZi40dj8ieCI6IiIpKyhmLjNuPyJ5IjoiIil9NiBCKGYsZSxhLGIpe0sgYz11LkwsZCxoLGc7dj1SOzVLe08oO2MtLTspe2c9dVtjXTtJKGEmZy4zciYmKCFnLjJwfHxnLjJwLlcoYikpKXtnLjJxLjEyPWU7SSgoaD1nLjJxLlgoZikpJiZoLlA9PT1lKXtkPXszazpnLjJiLlcoYixoLGEpLDFDOmh9OzFOfX19fTV2KGkpezFTIGl9NXF7dj0xMX1IIGR9NiBwKGYsZSxhKXtJKDNiLlouMWkpSCBmLjFpKGUsYSk7TyhhPWF8fDA7YTxmLkw7YSsrKUkoZlthXT09PWUpSCBhO0gtMX1NPTYoZixlKXtLIGE9W10sYj1NLjFCLGM9MCxkLGg7SShNLjFSKGYpKXtJKGUhPT0xZCkxUyAzbSgiMmFcJ3QgNXIgNUkgNUYgNUIgNUMgMTUgNUUgNXAiKTtIIHIoZil9SSh2KTFTIDJVKCIyYVwndCBXIDNsIE0gNTkgNW0gNWcgNXggNWkiKTtlPWV8fCIiO08oZD17Mk46MTEsMTk6W10sMks6NihnKXtIIGUuMWkoZyk+LTF9LDNkOjYoZyl7ZSs9Z319O2M8Zi5MOylJKGg9QihmLGMsYixkKSl7YS5VKGguM2spO2MrPWguMUNbMF0uTHx8MX1ZIEkoaD1uLlguVyh6W2JdLGYuMWEoYykpKXthLlUoaFswXSk7Yys9aFswXS5MfVl7aD1mLjNhKGMpO0koaD09PSJbIiliPU0uMkk7WSBJKGg9PT0iXSIpYj1NLjFCO2EuVShoKTtjKyt9YT0xNShhLjFLKCIiKSxuLlEuVyhlLHcsIiIpKTthLjF3PXsxbTpmLDE5OmQuMk4/ZC4xOTpOfTtIIGF9O00uM3Y9IjEuNS4wIjtNLjJJPTE7TS4xQj0yO0sgQz0vXFwkKD86KFxcZFxcZD98WyQmYFwnXSl8eyhbJFxcd10rKX0pL2csdz0vW141aF0rfChbXFxzXFxTXSkoPz1bXFxzXFxTXSpcXDEpL2csQT0vXig/Ols/KitdfHtcXGQrKD86LFxcZCopP30pXFw/Py8sdj0xMSx1PVtdLG49e1g6MTUuWi5YLDFBOjE1LlouMUEsMUM6MXIuWi4xQyxROjFyLlouUSwxZToxci5aLjFlfSx4PW4uWC5XKC8oKT8/LywiIilbMV09PT0xZCxEPTYoKXtLIGY9L14vZztuLjFBLlcoZiwiIik7SCFmLjEyfSgpLHk9Nigpe0sgZj0veC9nO24uUS5XKCJ4IixmLCIiKTtIIWYuMTJ9KCksRT0xNS5aLjNuIT09MWQsej17fTt6W00uMkldPS9eKD86XFxcXCg/OlswLTNdWzAtN117MCwyfXxbNC03XVswLTddP3x4W1xcMjktMjYtZl17Mn18dVtcXDI5LTI2LWZdezR9fGNbQS0zby16XXxbXFxzXFxTXSkpLzt6W00uMUJdPS9eKD86XFxcXCg/OjAoPzpbMC0zXVswLTddezAsMn18WzQtN11bMC03XT8pP3xbMS05XVxcZCp8eFtcXDI5LTI2LWZdezJ9fHVbXFwyOS0yNi1mXXs0fXxjW0EtM28tel18W1xcc1xcU10pfFxcKFxcP1s6PSFdfFs/KitdXFw/fHtcXGQrKD86LFxcZCopP31cXD8/KS87TS4xaD02KGYsZSxhLGIpe3UuVSh7MnE6cihmLCJnIisoRT8ieSI6IiIpKSwyYjplLDNyOmF8fE0uMUIsMnA6Ynx8Tn0pfTtNLjJuPTYoZixlKXtLIGE9ZisiLyIrKGV8fCIiKTtIIE0uMm5bYV18fChNLjJuW2FdPU0oZixlKSl9O00uM2M9NihmKXtIIHIoZiwiZyIpfTtNLjVsPTYoZil7SCBmLlEoL1stW1xcXXt9KCkqKz8uLFxcXFxeJHwjXFxzXS9nLCJcXFxcJCYiKX07TS41ZT02KGYsZSxhLGIpe2U9cihlLCJnIisoYiYmRT8ieSI6IiIpKTtlLjEyPWE9YXx8MDtmPWUuWChmKTtIIGI/ZiYmZi5QPT09YT9mOk46Zn07TS4zcT02KCl7TS4xaD02KCl7MVMgMlUoIjJhXCd0IDU1IDFoIDU0IDNxIil9fTtNLjFSPTYoZil7SCA1My5aLjFxLlcoZik9PT0iWzJtIDE1XSJ9O00uM3A9NihmLGUsYSxiKXtPKEsgYz1yKGUsImciKSxkPS0xLGg7aD1jLlgoZik7KXthLlcoYixoLCsrZCxmLGMpO2MuMTI9PT1oLlAmJmMuMTIrK31JKGUuMUopZS4xMj0wfTtNLjU3PTYoZixlKXtIIDYgYShiLGMpe0sgZD1lW2NdLjFJP2VbY106ezFJOmVbY119LGg9cihkLjFJLCJnIiksZz1bXSxpO08oaT0wO2k8Yi5MO2krKylNLjNwKGJbaV0saCw2KGspe2cuVShkLjNqP2tbZC4zal18fCIiOmtbMF0pfSk7SCBjPT09ZS5MLTF8fCFnLkw/ZzphKGcsYysxKX0oW2ZdLDApfTsxNS5aLjFwPTYoZixlKXtIIEouWChlWzBdKX07MTUuWi5XPTYoZixlKXtIIEouWChlKX07MTUuWi5YPTYoZil7SyBlPW4uWC4xcChKLDE0KSxhO0koZSl7SSgheCYmZS5MPjEmJnAoZSwiIik+LTEpe2E9MTUoSi4xbSxuLlEuVyh0KEopLCJnIiwiIikpO24uUS5XKGYuMWEoZS5QKSxhLDYoKXtPKEsgYz0xO2M8MTQuTC0yO2MrKylJKDE0W2NdPT09MWQpZVtjXT0xZH0pfUkoSi4xdyYmSi4xdy4xOSlPKEsgYj0xO2I8ZS5MO2IrKylJKGE9Si4xdy4xOVtiLTFdKWVbYV09ZVtiXTshRCYmSi4xSiYmIWVbMF0uTCYmSi4xMj5lLlAmJkouMTItLX1IIGV9O0koIUQpMTUuWi4xQT02KGYpeyhmPW4uWC5XKEosZikpJiZKLjFKJiYhZlswXS5MJiZKLjEyPmYuUCYmSi4xMi0tO0ghIWZ9OzFyLlouMUM9NihmKXtNLjFSKGYpfHwoZj0xNShmKSk7SShmLjFKKXtLIGU9bi4xQy4xcChKLDE0KTtmLjEyPTA7SCBlfUggZi5YKEopfTsxci5aLlE9NihmLGUpe0sgYT1NLjFSKGYpLGIsYztJKGEmJjFqIGUuNTgoKT09PSIzZiImJmUuMWkoIiR7Iik9PT0tMSYmeSlIIG4uUS4xcChKLDE0KTtJKGEpe0koZi4xdyliPWYuMXcuMTl9WSBmKz0iIjtJKDFqIGU9PT0iNiIpYz1uLlEuVyhKLGYsNigpe0koYil7MTRbMF09MWYgMXIoMTRbMF0pO08oSyBkPTA7ZDxiLkw7ZCsrKUkoYltkXSkxNFswXVtiW2RdXT0xNFtkKzFdfUkoYSYmZi4xSilmLjEyPTE0WzE0LkwtMl0rMTRbMF0uTDtIIGUuMXAoTiwxNCl9KTtZe2M9SisiIjtjPW4uUS5XKGMsZiw2KCl7SyBkPTE0O0ggbi5RLlcoZSxDLDYoaCxnLGkpe0koZyk1YihnKXsyNCIkIjpIIiQiOzI0IiYiOkggZFswXTsyNCJgIjpIIGRbZC5MLTFdLjFhKDAsZFtkLkwtMl0pOzI0IlwnIjpIIGRbZC5MLTFdLjFhKGRbZC5MLTJdK2RbMF0uTCk7NWE6aT0iIjtnPStnO0koIWcpSCBoO08oO2c+ZC5MLTM7KXtpPTFyLlouMWEuVyhnLC0xKStpO2c9MVEuM2koZy8xMCl9SChnP2RbZ118fCIiOiIkIikraX1Ze2c9K2k7SShnPD1kLkwtMylIIGRbZ107Zz1iP3AoYixpKTotMTtIIGc+LTE/ZFtnKzFdOmh9fSl9KX1JKGEmJmYuMUopZi4xMj0wO0ggY307MXIuWi4xZT02KGYsZSl7SSghTS4xUihmKSlIIG4uMWUuMXAoSiwxNCk7SyBhPUorIiIsYj1bXSxjPTAsZCxoO0koZT09PTFkfHwrZTwwKWU9NUQ7WXtlPTFRLjNpKCtlKTtJKCFlKUhbXX1PKGY9TS4zYyhmKTtkPWYuWChhKTspe0koZi4xMj5jKXtiLlUoYS4xYShjLGQuUCkpO2QuTD4xJiZkLlA8YS5MJiYzYi5aLlUuMXAoYixkLjFhKDEpKTtoPWRbMF0uTDtjPWYuMTI7SShiLkw+PWUpMU59Zi4xMj09PWQuUCYmZi4xMisrfUkoYz09PWEuTCl7SSghbi4xQS5XKGYsIiIpfHxoKWIuVSgiIil9WSBiLlUoYS4xYShjKSk7SCBiLkw+ZT9iLjFhKDAsZSk6Yn07TS4xaCgvXFwoXFw/I1teKV0qXFwpLyw2KGYpe0ggbi4xQS5XKEEsZi4yUy4xYShmLlArZlswXS5MKSk/IiI6Iig/OikifSk7TS4xaCgvXFwoKD8hXFw/KS8sNigpe0ouMTkuVShOKTtIIigifSk7TS4xaCgvXFwoXFw/PChbJFxcd10rKT4vLDYoZil7Si4xOS5VKGZbMV0pO0ouMk49UjtIIigifSk7TS4xaCgvXFxcXGs8KFtcXHckXSspPi8sNihmKXtLIGU9cChKLjE5LGZbMV0pO0ggZT4tMT8iXFxcXCIrKGUrMSkrKDNSKGYuMlMuM2EoZi5QK2ZbMF0uTCkpPyIiOiIoPzopIik6ZlswXX0pO00uMWgoL1xcW1xcXj9dLyw2KGYpe0ggZlswXT09PSJbXSI/IlxcXFxiXFxcXEIiOiJbXFxcXHNcXFxcU10ifSk7TS4xaCgvXlxcKFxcPyhbNUFdKylcXCkvLDYoZil7Si4zZChmWzFdKTtIIiJ9KTtNLjFoKC8oPzpcXHMrfCMuKikrLyw2KGYpe0ggbi4xQS5XKEEsZi4yUy4xYShmLlArZlswXS5MKSk/IiI6Iig/OikifSxNLjFCLDYoKXtIIEouMksoIngiKX0pO00uMWgoL1xcLi8sNigpe0giW1xcXFxzXFxcXFNdIn0sTS4xQiw2KCl7SCBKLjJLKCJzIil9KX0pKCk7MWogMmUhPSIxZCImJigyZS5NPU0pO0sgMXY9NigpezYgcihhLGIpe2EuMWwuMWkoYikhPS0xfHwoYS4xbCs9IiAiK2IpfTYgdChhKXtIIGEuMWkoIjNlIik9PTA/YToiM2UiK2F9NiBCKGEpe0ggZS4xWS4yQVt0KGEpXX02IHAoYSxiLGMpe0koYT09TilIIE47SyBkPWMhPVI/YS4zRzpbYS4yR10saD17IiMiOiIxYyIsIi4iOiIxbCJ9W2IuMW8oMCwxKV18fCIzaCIsZyxpO2c9aCE9IjNoIj9iLjFvKDEpOmIuNXUoKTtJKChhW2hdfHwiIikuMWkoZykhPS0xKUggYTtPKGE9MDtkJiZhPGQuTCYmaT09TjthKyspaT1wKGRbYV0sYixjKTtIIGl9NiBDKGEsYil7SyBjPXt9LGQ7TyhkIDJnIGEpY1tkXT1hW2RdO08oZCAyZyBiKWNbZF09YltkXTtIIGN9NiB3KGEsYixjLGQpezYgaChnKXtnPWd8fDFQLjV5O0koIWcuMUYpe2cuMUY9Zy41MjtnLjNOPTYoKXtKLjV3PTExfX1jLlcoZHx8MVAsZyl9YS4zZz9hLjNnKCI0VSIrYixoKTphLjR5KGIsaCwxMSl9NiBBKGEsYil7SyBjPWUuMVkuMmosZD1OO0koYz09Til7Yz17fTtPKEsgaCAyZyBlLjFVKXtLIGc9ZS4xVVtoXTtkPWcuNHg7SShkIT1OKXtnLjFWPWguNHcoKTtPKGc9MDtnPGQuTDtnKyspY1tkW2ddXT1ofX1lLjFZLjJqPWN9ZD1lLjFVW2NbYV1dO2Q9PU4mJmIhPTExJiYxUC4xWChlLjEzLjF4LjFYKyhlLjEzLjF4LjNFK2EpKTtIIGR9NiB2KGEsYil7TyhLIGM9YS4xZSgiXFxuIiksZD0wO2Q8Yy5MO2QrKyljW2RdPWIoY1tkXSxkKTtIIGMuMUsoIlxcbiIpfTYgdShhLGIpe0koYT09Tnx8YS5MPT0wfHxhPT0iXFxuIilIIGE7YT1hLlEoLzwvZywiJjF5OyIpO2E9YS5RKC8gezIsfS9nLDYoYyl7TyhLIGQ9IiIsaD0wO2g8Yy5MLTE7aCsrKWQrPWUuMTMuMVc7SCBkKyIgIn0pO0koYiE9TilhPXYoYSw2KGMpe0koYy5MPT0wKUgiIjtLIGQ9IiI7Yz1jLlEoL14oJjJzO3wgKSsvLDYoaCl7ZD1oO0giIn0pO0koYy5MPT0wKUggZDtIIGQrXCc8MTcgMWc9IlwnK2IrXCciPlwnK2MrIjwvMTc+In0pO0ggYX02IG4oYSxiKXthLjFlKCJcXG4iKTtPKEsgYz0iIixkPTA7ZDw1MDtkKyspYys9IiAgICAgICAgICAgICAgICAgICAgIjtIIGE9dihhLDYoaCl7SShoLjFpKCJcXHQiKT09LTEpSCBoO08oSyBnPTA7KGc9aC4xaSgiXFx0IikpIT0tMTspaD1oLjFvKDAsZykrYy4xbygwLGItZyViKStoLjFvKGcrMSxoLkwpO0ggaH0pfTYgeChhKXtIIGEuUSgvXlxccyt8XFxzKyQvZywiIil9NiBEKGEsYil7SShhLlA8Yi5QKUgtMTtZIEkoYS5QPmIuUClIIDE7WSBJKGEuTDxiLkwpSC0xO1kgSShhLkw+Yi5MKUggMTtIIDB9NiB5KGEsYil7NiBjKGspe0gga1swXX1PKEsgZD1OLGg9W10sZz1iLjJEP2IuMkQ6YzsoZD1iLjFJLlgoYSkpIT1OOyl7SyBpPWcoZCxiKTtJKDFqIGk9PSIzZiIpaT1bMWYgZS4yTChpLGQuUCxiLjIzKV07aD1oLjFPKGkpfUggaH02IEUoYSl7SyBiPS8oLiopKCgmMUc7fCYxeTspLiopLztIIGEuUShlLjNBLjNNLDYoYyl7SyBkPSIiLGg9TjtJKGg9Yi5YKGMpKXtjPWhbMV07ZD1oWzJdfUhcJzxhIDJoPSJcJytjK1wnIj5cJytjKyI8L2E+IitkfSl9NiB6KCl7TyhLIGE9MUUuMzYoIjFrIiksYj1bXSxjPTA7YzxhLkw7YysrKWFbY10uM3M9PSIyMCImJmIuVShhW2NdKTtIIGJ9NiBmKGEpe2E9YS4xRjtLIGI9cChhLCIuMjAiLFIpO2E9cChhLCIuM08iLFIpO0sgYz0xRS40aSgiM3QiKTtJKCEoIWF8fCFifHxwKGEsIjN0IikpKXtCKGIuMWMpO3IoYiwiMW0iKTtPKEsgZD1hLjNHLGg9W10sZz0wO2c8ZC5MO2crKyloLlUoZFtnXS40enx8ZFtnXS40QSk7aD1oLjFLKCJcXHIiKTtjLjM5KDFFLjREKGgpKTthLjM5KGMpO2MuMkMoKTtjLjRDKCk7dyhjLCI0dSIsNigpe2MuMkcuNEUoYyk7Yi4xbD1iLjFsLlEoIjFtIiwiIil9KX19SSgxaiAzRiE9IjFkIiYmMWogTT09IjFkIilNPTNGKCJNIikuTTtLIGU9ezJ2OnsiMWctMjciOiIiLCIyaS0xcyI6MSwiMnotMXMtMnQiOjExLDFNOk4sMXQ6TiwiNDItNDUiOlIsIjQzLTIyIjo0LDF1OlIsMTY6UiwiM1YtMTciOlIsMmw6MTEsIjQxLTQwIjpSLDJrOjExLCIxei0xayI6MTF9LDEzOnsxVzoiJjJzOyIsMk06Uiw0NjoxMSw0NDoxMSwzNDoiNG4iLDF4OnsyMToiNG8gMW0iLDJQOiI/IiwxWDoiMXZcXG5cXG4iLDNFOiI0clwndCA0dCAxRCBPOiAiLDRnOiI0bSA0QlwndCA1MSBPIDF6LTFrIDRGOiAiLDM3OlwnPCE0VCAxeiA0UyAiLS8vNFYvLzNIIDRXIDEuMCA0Wi8vNFkiICIxWjovLzJ5LjNMLjNLLzRYLzNJLzNILzNJLTRQLjRKIj48MXogNEk9IjFaOi8vMnkuM0wuM0svNEwvNUwiPjwzSj48NE4gMVotNE09IjVHLTVNIiA2Sz0iMk8vMXo7IDZKPTZJLTgiIC8+PDF0PjZMIDF2PC8xdD48LzNKPjwzQiAxTD0iMjUtNk06NlEsNlAsNk8sNk4tNkY7NnktMmY6IzZ4OzJmOiM2dzsyNS0yMjo2djsyTy0zRDozQzsiPjxUIDFMPSIyTy0zRDozQzszdy0zMjoxLjZ6OyI+PFQgMUw9IjI1LTIyOjZBLTZFOyI+MXY8L1Q+PFQgMUw9IjI1LTIyOi42Qzszdy02Qjo2UjsiPjxUPjN2IDMuMC43NiAoNzIgNzMgM3gpPC9UPjxUPjxhIDJoPSIxWjovLzN1LjJ3LzF2IiAxRj0iMzgiIDFMPSIyZjojM3kiPjFaOi8vM3UuMncvMXY8L2E+PC9UPjxUPjcwIDE3IDZVIDcxLjwvVD48VD42VCA2WC0zeCA2WSA2RC48L1Q+PC9UPjxUPjZ0IDYxIDYwIEogMWssIDVaIDxhIDJoPSI2dTovLzJ5LjYyLjJ3LzYzLTY2LzY1PzY0PTVYLTVXJjVQPTVPIiAxTD0iMmY6IzN5Ij41UjwvYT4gNVYgPDJSLz41VSA1VCA1UyE8L1Q+PC9UPjwvM0I+PC8xej5cJ319LDFZOnsyajpOLDJBOnt9fSwxVTp7fSwzQTp7Nm46L1xcL1xcKltcXHNcXFNdKj9cXCpcXC8vMmMsNm06L1xcL1xcLy4qJC8yYyw2bDovIy4qJC8yYyw2azovIihbXlxcXFwiXFxuXXxcXFxcLikqIi9nLDZvOi9cJyhbXlxcXFxcJ1xcbl18XFxcXC4pKlwnL2csNnA6MWYgTShcJyIoW15cXFxcXFxcXCJdfFxcXFxcXFxcLikqIlwnLCIzeiIpLDZzOjFmIE0oIlwnKFteXFxcXFxcXFxcJ118XFxcXFxcXFwuKSpcJyIsIjN6IiksNnE6LygmMXk7fDwpIS0tW1xcc1xcU10qPy0tKCYxRzt8PikvMmMsM006L1xcdys6XFwvXFwvW1xcdy0uXFwvPyUmPTpAO10qL2csNmE6ezE4Oi8oJjF5O3w8KVxcPz0/L2csMWI6L1xcPygmMUc7fD4pL2d9LDY5OnsxODovKCYxeTt8PCklPT8vZywxYjovJSgmMUc7fD4pL2d9LDZkOnsxODovKCYxeTt8PClcXHMqMWsuKj8oJjFHO3w+KS8yVCwxYjovKCYxeTt8PClcXC9cXHMqMWtcXHMqKCYxRzt8PikvMlR9fSwxNjp7MUg6NihhKXs2IGIoaSxrKXtIIGUuMTYuMm8oaSxrLGUuMTMuMXhba10pfU8oSyBjPVwnPFQgMWc9IjE2Ij5cJyxkPWUuMTYuMngsaD1kLjJYLGc9MDtnPGguTDtnKyspYys9KGRbaFtnXV0uMUh8fGIpKGEsaFtnXSk7Yys9IjwvVD4iO0ggY30sMm86NihhLGIsYyl7SFwnPDJXPjxhIDJoPSIjIiAxZz0iNmUgNmhcJytiKyIgIitiK1wnIj5cJytjKyI8L2E+PC8yVz4ifSwyYjo2KGEpe0sgYj1hLjFGLGM9Yi4xbHx8IiI7Yj1CKHAoYiwiLjIwIixSKS4xYyk7SyBkPTYoaCl7SChoPTE1KGgrIjZmKFxcXFx3KykiKS5YKGMpKT9oWzFdOk59KCI2ZyIpO2ImJmQmJmUuMTYuMnhbZF0uMkIoYik7YS4zTigpfSwyeDp7Mlg6WyIyMSIsIjJQIl0sMjE6ezFIOjYoYSl7SShhLlYoIjJsIikhPVIpSCIiO0sgYj1hLlYoIjF0Iik7SCBlLjE2LjJvKGEsIjIxIixiP2I6ZS4xMy4xeC4yMSl9LDJCOjYoYSl7YT0xRS42aih0KGEuMWMpKTthLjFsPWEuMWwuUSgiNDciLCIiKX19LDJQOnsyQjo2KCl7SyBhPSI2OD0wIjthKz0iLCAxOD0iKygzMS4zMC0zMykvMisiLCAzMj0iKygzMS4yWi0yWSkvMisiLCAzMD0zMywgMlo9MlkiO2E9YS5RKC9eLC8sIiIpO2E9MVAuNlooIiIsIjM4IixhKTthLjJDKCk7SyBiPWEuMUU7Yi42VyhlLjEzLjF4LjM3KTtiLjZWKCk7YS4yQygpfX19fSwzNTo2KGEsYil7SyBjO0koYiljPVtiXTtZe2M9MUUuMzYoZS4xMy4zNCk7TyhLIGQ9W10saD0wO2g8Yy5MO2grKylkLlUoY1toXSk7Yz1kfWM9YztkPVtdO0koZS4xMy4yTSljPWMuMU8oeigpKTtJKGMuTD09PTApSCBkO08oaD0wO2g8Yy5MO2grKyl7TyhLIGc9Y1toXSxpPWEsaz1jW2hdLjFsLGo9M1cgMCxsPXt9LG09MWYgTSgiXlxcXFxbKD88MlY+KC4qPykpXFxcXF0kIikscz0xZiBNKCIoPzwyNz5bXFxcXHctXSspXFxcXHMqOlxcXFxzKig/PDFUPltcXFxcdy0lI10rfFxcXFxbLio/XFxcXF18XFwiLio/XFwifFwnLio/XCcpXFxcXHMqOz8iLCJnIik7KGo9cy5YKGspKSE9Tjspe0sgbz1qLjFULlEoL15bXCciXXxbXCciXSQvZywiIik7SShvIT1OJiZtLjFBKG8pKXtvPW0uWChvKTtvPW8uMlYuTD4wP28uMlYuMWUoL1xccyosXFxzKi8pOltdfWxbai4yN109b31nPXsxRjpnLDFuOkMoaSxsKX07Zy4xbi4xRCE9TiYmZC5VKGcpfUggZH0sMU06NihhLGIpe0sgYz1KLjM1KGEsYiksZD1OLGg9ZS4xMztJKGMuTCE9PTApTyhLIGc9MDtnPGMuTDtnKyspe2I9Y1tnXTtLIGk9Yi4xRixrPWIuMW4saj1rLjFELGw7SShqIT1OKXtJKGtbIjF6LTFrIl09PSJSInx8ZS4ydlsiMXotMWsiXT09Uil7ZD0xZiBlLjRsKGopO2o9IjRPIn1ZIEkoZD1BKGopKWQ9MWYgZDtZIDZIO2w9aS4zWDtJKGguMk0pe2w9bDtLIG09eChsKSxzPTExO0kobS4xaSgiPCFbNkdbIik9PTApe209bS40aCg5KTtzPVJ9SyBvPW0uTDtJKG0uMWkoIl1dXFw+Iik9PW8tMyl7bT1tLjRoKDAsby0zKTtzPVJ9bD1zP206bH1JKChpLjF0fHwiIikhPSIiKWsuMXQ9aS4xdDtrLjFEPWo7ZC4yUShrKTtiPWQuMkYobCk7SSgoaS4xY3x8IiIpIT0iIiliLjFjPWkuMWM7aS4yRy43NChiLGkpfX19LDJFOjYoYSl7dygxUCwiNGsiLDYoKXtlLjFNKGEpfSl9fTtlLjJFPWUuMkU7ZS4xTT1lLjFNO2UuMkw9NihhLGIsYyl7Si4xVD1hO0ouUD1iO0ouTD1hLkw7Si4yMz1jO0ouMVY9Tn07ZS4yTC5aLjFxPTYoKXtIIEouMVR9O2UuNGw9NihhKXs2IGIoaixsKXtPKEsgbT0wO208ai5MO20rKylqW21dLlArPWx9SyBjPUEoYSksZCxoPTFmIGUuMVUuNVksZz1KLGk9IjJGIDFIIDJRIi4xZSgiICIpO0koYyE9Til7ZD0xZiBjO08oSyBrPTA7azxpLkw7aysrKSg2KCl7SyBqPWlba107Z1tqXT02KCl7SCBoW2pdLjFwKGgsMTQpfX0pKCk7ZC4yOD09Tj8xUC4xWChlLjEzLjF4LjFYKyhlLjEzLjF4LjRnK2EpKTpoLjJKLlUoezFJOmQuMjguMTcsMkQ6NihqKXtPKEsgbD1qLjE3LG09W10scz1kLjJKLG89ai5QK2ouMTguTCxGPWQuMjgscSxHPTA7RzxzLkw7RysrKXtxPXkobCxzW0ddKTtiKHEsbyk7bT1tLjFPKHEpfUkoRi4xOCE9TiYmai4xOCE9Til7cT15KGouMTgsRi4xOCk7YihxLGouUCk7bT1tLjFPKHEpfUkoRi4xYiE9TiYmai4xYiE9Til7cT15KGouMWIsRi4xYik7YihxLGouUCtqWzBdLjVRKGouMWIpKTttPW0uMU8ocSl9TyhqPTA7ajxtLkw7aisrKW1bal0uMVY9Yy4xVjtIIG19fSl9fTtlLjRqPTYoKXt9O2UuNGouWj17Vjo2KGEsYil7SyBjPUouMW5bYV07Yz1jPT1OP2I6YztLIGQ9eyJSIjpSLCIxMSI6MTF9W2NdO0ggZD09Tj9jOmR9LDNZOjYoYSl7SCAxRS40aShhKX0sNGM6NihhLGIpe0sgYz1bXTtJKGEhPU4pTyhLIGQ9MDtkPGEuTDtkKyspSSgxaiBhW2RdPT0iMm0iKWM9Yy4xTyh5KGIsYVtkXSkpO0ggSi40ZShjLjZiKEQpKX0sNGU6NihhKXtPKEsgYj0wO2I8YS5MO2IrKylJKGFbYl0hPT1OKU8oSyBjPWFbYl0sZD1jLlArYy5MLGg9YisxO2g8YS5MJiZhW2JdIT09TjtoKyspe0sgZz1hW2hdO0koZyE9PU4pSShnLlA+ZCkxTjtZIEkoZy5QPT1jLlAmJmcuTD5jLkwpYVtiXT1OO1kgSShnLlA+PWMuUCYmZy5QPGQpYVtoXT1OfUggYX0sNGQ6NihhKXtLIGI9W10sYz0ydShKLlYoIjJpLTFzIikpO3YoYSw2KGQsaCl7Yi5VKGgrYyl9KTtIIGJ9LDNVOjYoYSl7SyBiPUouVigiMU0iLFtdKTtJKDFqIGIhPSIybSImJmIuVT09TiliPVtiXTthOnthPWEuMXEoKTtLIGM9M1cgMDtPKGM9Yz0xUS42YyhjfHwwLDApO2M8Yi5MO2MrKylJKGJbY109PWEpe2I9YzsxTiBhfWI9LTF9SCBiIT0tMX0sMnI6NihhLGIsYyl7YT1bIjFzIiwiNmkiK2IsIlAiK2EsIjZyIisoYiUyPT0wPzE6MikuMXEoKV07Si4zVShiKSYmYS5VKCI2NyIpO2I9PTAmJmEuVSgiMU4iKTtIXCc8VCAxZz0iXCcrYS4xSygiICIpK1wnIj5cJytjKyI8L1Q+In0sM1E6NihhLGIpe0sgYz0iIixkPWEuMWUoIlxcbiIpLkwsaD0ydShKLlYoIjJpLTFzIikpLGc9Si5WKCIyei0xcy0ydCIpO0koZz09UilnPShoK2QtMSkuMXEoKS5MO1kgSSgzUihnKT09UilnPTA7TyhLIGk9MDtpPGQ7aSsrKXtLIGs9Yj9iW2ldOmgraSxqO0koaz09MClqPWUuMTMuMVc7WXtqPWc7TyhLIGw9ay4xcSgpO2wuTDxqOylsPSIwIitsO2o9bH1hPWo7Yys9Si4ycihpLGssYSl9SCBjfSw0OTo2KGEsYil7YT14KGEpO0sgYz1hLjFlKCJcXG4iKTtKLlYoIjJ6LTFzLTJ0Iik7SyBkPTJ1KEouVigiMmktMXMiKSk7YT0iIjtPKEsgaD1KLlYoIjFEIiksZz0wO2c8Yy5MO2crKyl7SyBpPWNbZ10saz0vXigmMnM7fFxccykrLy5YKGkpLGo9TixsPWI/YltnXTpkK2c7SShrIT1OKXtqPWtbMF0uMXEoKTtpPWkuMW8oai5MKTtqPWouUSgiICIsZS4xMy4xVyl9aT14KGkpO0koaS5MPT0wKWk9ZS4xMy4xVzthKz1KLjJyKGcsbCwoaiE9Tj9cJzwxNyAxZz0iXCcraCtcJyA1TiI+XCcraisiPC8xNz4iOiIiKStpKX1IIGF9LDRmOjYoYSl7SCBhPyI8NGE+IithKyI8LzRhPiI6IiJ9LDRiOjYoYSxiKXs2IGMobCl7SChsPWw/bC4xVnx8ZzpnKT9sKyIgIjoiIn1PKEsgZD0wLGg9IiIsZz1KLlYoIjFEIiwiIiksaT0wO2k8Yi5MO2krKyl7SyBrPWJbaV0sajtJKCEoaz09PU58fGsuTD09PTApKXtqPWMoayk7aCs9dShhLjFvKGQsay5QLWQpLGorIjQ4IikrdShrLjFULGoray4yMyk7ZD1rLlAray5MKyhrLjc1fHwwKX19aCs9dShhLjFvKGQpLGMoKSsiNDgiKTtIIGh9LDFIOjYoYSl7SyBiPSIiLGM9WyIyMCJdLGQ7SShKLlYoIjJrIik9PVIpSi4xbi4xNj1KLjFuLjF1PTExOzFsPSIyMCI7Si5WKCIybCIpPT1SJiZjLlUoIjQ3Iik7SSgoMXU9Si5WKCIxdSIpKT09MTEpYy5VKCI2UyIpO2MuVShKLlYoIjFnLTI3IikpO2MuVShKLlYoIjFEIikpO2E9YS5RKC9eWyBdKltcXG5dK3xbXFxuXSpbIF0qJC9nLCIiKS5RKC9cXHIvZywiICIpO2I9Si5WKCI0My0yMiIpO0koSi5WKCI0Mi00NSIpPT1SKWE9bihhLGIpO1l7TyhLIGg9IiIsZz0wO2c8YjtnKyspaCs9IiAiO2E9YS5RKC9cXHQvZyxoKX1hPWE7YTp7Yj1hPWE7aD0vPDJSXFxzKlxcLz8+fCYxeTsyUlxccypcXC8/JjFHOy8yVDtJKGUuMTMuNDY9PVIpYj1iLlEoaCwiXFxuIik7SShlLjEzLjQ0PT1SKWI9Yi5RKGgsIiIpO2I9Yi4xZSgiXFxuIik7aD0vXlxccyovO2c9NFE7TyhLIGk9MDtpPGIuTCYmZz4wO2krKyl7SyBrPWJbaV07SSh4KGspLkwhPTApe2s9aC5YKGspO0koaz09Til7YT1hOzFOIGF9Zz0xUS40cShrWzBdLkwsZyl9fUkoZz4wKU8oaT0wO2k8Yi5MO2krKyliW2ldPWJbaV0uMW8oZyk7YT1iLjFLKCJcXG4iKX1JKDF1KWQ9Si40ZChhKTtiPUouNGMoSi4ySixhKTtiPUouNGIoYSxiKTtiPUouNDkoYixkKTtJKEouVigiNDEtNDAiKSliPUUoYik7MWogMkghPSIxZCImJjJILjNTJiYySC4zUy4xQygvNXMvKSYmYy5VKCI1dCIpO0ggYj1cJzxUIDFjPSJcJyt0KEouMWMpK1wnIiAxZz0iXCcrYy4xSygiICIpK1wnIj5cJysoSi5WKCIxNiIpP2UuMTYuMUgoSik6IiIpK1wnPDNaIDV6PSIwIiA1SD0iMCIgNUo9IjAiPlwnK0ouNGYoSi5WKCIxdCIpKSsiPDNUPjwzUD4iKygxdT9cJzwyZCAxZz0iMXUiPlwnK0ouM1EoYSkrIjwvMmQ+IjoiIikrXCc8MmQgMWc9IjE3Ij48VCAxZz0iM08iPlwnK2IrIjwvVD48LzJkPjwvM1A+PC8zVD48LzNaPjwvVD4ifSwyRjo2KGEpe0koYT09PU4pYT0iIjtKLjE3PWE7SyBiPUouM1koIlQiKTtiLjNYPUouMUgoYSk7Si5WKCIxNiIpJiZ3KHAoYiwiLjE2IiksIjVjIixlLjE2LjJiKTtKLlYoIjNWLTE3IikmJncocChiLCIuMTciKSwiNTYiLGYpO0ggYn0sMlE6NihhKXtKLjFjPSIiKzFRLjVkKDFRLjVuKCkqNWspLjFxKCk7ZS4xWS4yQVt0KEouMWMpXT1KO0ouMW49QyhlLjJ2LGF8fHt9KTtJKEouVigiMmsiKT09UilKLjFuLjE2PUouMW4uMXU9MTF9LDVqOjYoYSl7YT1hLlEoL15cXHMrfFxccyskL2csIiIpLlEoL1xccysvZywifCIpO0giXFxcXGIoPzoiK2ErIilcXFxcYiJ9LDVmOjYoYSl7Si4yOD17MTg6ezFJOmEuMTgsMjM6IjFrIn0sMWI6ezFJOmEuMWIsMjM6IjFrIn0sMTc6MWYgTSgiKD88MTg+IithLjE4LjFtKyIpKD88MTc+Lio/KSg/PDFiPiIrYS4xYi4xbSsiKSIsIjVvIil9fX07SCBlfSgpOzFqIDJlIT0iMWQiJiYoMmUuMXY9MXYpOycsNjIsNDQxLCd8fHx8fHxmdW5jdGlvbnx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHxyZXR1cm58aWZ8dGhpc3x2YXJ8bGVuZ3RofFhSZWdFeHB8bnVsbHxmb3J8aW5kZXh8cmVwbGFjZXx0cnVlfHxkaXZ8cHVzaHxnZXRQYXJhbXxjYWxsfGV4ZWN8ZWxzZXxwcm90b3R5cGV8fGZhbHNlfGxhc3RJbmRleHxjb25maWd8YXJndW1lbnRzfFJlZ0V4cHx0b29sYmFyfGNvZGV8bGVmdHxjYXB0dXJlTmFtZXN8c2xpY2V8cmlnaHR8aWR8dW5kZWZpbmVkfHNwbGl0fG5ld3xjbGFzc3xhZGRUb2tlbnxpbmRleE9mfHR5cGVvZnxzY3JpcHR8Y2xhc3NOYW1lfHNvdXJjZXxwYXJhbXN8c3Vic3RyfGFwcGx5fHRvU3RyaW5nfFN0cmluZ3xsaW5lfHRpdGxlfGd1dHRlcnxTeW50YXhIaWdobGlnaHRlcnxfeHJlZ2V4cHxzdHJpbmdzfGx0fGh0bWx8dGVzdHxPVVRTSURFX0NMQVNTfG1hdGNofGJydXNofGRvY3VtZW50fHRhcmdldHxndHxnZXRIdG1sfHJlZ2V4fGdsb2JhbHxqb2lufHN0eWxlfGhpZ2hsaWdodHxicmVha3xjb25jYXR8d2luZG93fE1hdGh8aXNSZWdFeHB8dGhyb3d8dmFsdWV8YnJ1c2hlc3xicnVzaE5hbWV8c3BhY2V8YWxlcnR8dmFyc3xodHRwfHN5bnRheGhpZ2hsaWdodGVyfGV4cGFuZFNvdXJjZXxzaXplfGNzc3xjYXNlfGZvbnR8RmF8bmFtZXxodG1sU2NyaXB0fGRBfGNhbnxoYW5kbGVyfGdtfHRkfGV4cG9ydHN8Y29sb3J8aW58aHJlZnxmaXJzdHxkaXNjb3ZlcmVkQnJ1c2hlc3xsaWdodHxjb2xsYXBzZXxvYmplY3R8Y2FjaGV8Z2V0QnV0dG9uSHRtbHx0cmlnZ2VyfHBhdHRlcm58Z2V0TGluZUh0bWx8bmJzcHxudW1iZXJzfHBhcnNlSW50fGRlZmF1bHRzfGNvbXxpdGVtc3x3d3d8cGFkfGhpZ2hsaWdodGVyc3xleGVjdXRlfGZvY3VzfGZ1bmN8YWxsfGdldERpdnxwYXJlbnROb2RlfG5hdmlnYXRvcnxJTlNJREVfQ0xBU1N8cmVnZXhMaXN0fGhhc0ZsYWd8TWF0Y2h8dXNlU2NyaXB0VGFnc3xoYXNOYW1lZENhcHR1cmV8dGV4dHxoZWxwfGluaXR8YnJ8aW5wdXR8Z2l8RXJyb3J8dmFsdWVzfHNwYW58bGlzdHwyNTB8aGVpZ2h0fHdpZHRofHNjcmVlbnx0b3B8NTAwfHRhZ05hbWV8ZmluZEVsZW1lbnRzfGdldEVsZW1lbnRzQnlUYWdOYW1lfGFib3V0RGlhbG9nfF9ibGFua3xhcHBlbmRDaGlsZHxjaGFyQXR8QXJyYXl8Y29weUFzR2xvYmFsfHNldEZsYWd8aGlnaGxpZ2h0ZXJffHN0cmluZ3xhdHRhY2hFdmVudHxub2RlTmFtZXxmbG9vcnxiYWNrcmVmfG91dHB1dHx0aGV8VHlwZUVycm9yfHN0aWNreXxaYXxpdGVyYXRlfGZyZWV6ZVRva2Vuc3xzY29wZXx0eXBlfHRleHRhcmVhfGFsZXhnb3JiYXRjaGV2fHZlcnNpb258bWFyZ2lufDIwMTB8MDA1ODk2fGdzfHJlZ2V4TGlifGJvZHl8Y2VudGVyfGFsaWdufG5vQnJ1c2h8cmVxdWlyZXxjaGlsZE5vZGVzfERURHx4aHRtbDF8aGVhZHxvcmd8dzN8dXJsfHByZXZlbnREZWZhdWx0fGNvbnRhaW5lcnx0cnxnZXRMaW5lTnVtYmVyc0h0bWx8aXNOYU58dXNlckFnZW50fHRib2R5fGlzTGluZUhpZ2hsaWdodGVkfHF1aWNrfHZvaWR8aW5uZXJIVE1MfGNyZWF0ZXx0YWJsZXxsaW5rc3xhdXRvfHNtYXJ0fHRhYnxzdHJpcEJyc3x0YWJzfGJsb2dnZXJNb2RlfGNvbGxhcHNlZHxwbGFpbnxnZXRDb2RlTGluZXNIdG1sfGNhcHRpb258Z2V0TWF0Y2hlc0h0bWx8ZmluZE1hdGNoZXN8ZmlndXJlT3V0TGluZU51bWJlcnN8cmVtb3ZlTmVzdGVkTWF0Y2hlc3xnZXRUaXRsZUh0bWx8YnJ1c2hOb3RIdG1sU2NyaXB0fHN1YnN0cmluZ3xjcmVhdGVFbGVtZW50fEhpZ2hsaWdodGVyfGxvYWR8SHRtbFNjcmlwdHxCcnVzaHxwcmV8ZXhwYW5kfG11bHRpbGluZXxtaW58Q2FufGlnbm9yZUNhc2V8ZmluZHxibHVyfGV4dGVuZGVkfHRvTG93ZXJDYXNlfGFsaWFzZXN8YWRkRXZlbnRMaXN0ZW5lcnxpbm5lclRleHR8dGV4dENvbnRlbnR8d2FzbnxzZWxlY3R8Y3JlYXRlVGV4dE5vZGV8cmVtb3ZlQ2hpbGR8b3B0aW9ufHNhbWV8ZnJhbWV8eG1sbnN8ZHRkfHR3aWNlfDE5OTl8ZXF1aXZ8bWV0YXxodG1sc2NyaXB0fHRyYW5zaXRpb25hbHwxRTN8ZXhwZWN0ZWR8UFVCTElDfERPQ1RZUEV8b258VzNDfFhIVE1MfFRSfEVOfFRyYW5zaXRpb25hbHx8Y29uZmlndXJlZHxzcmNFbGVtZW50fE9iamVjdHxhZnRlcnxydW58ZGJsY2xpY2t8bWF0Y2hDaGFpbnx2YWx1ZU9mfGNvbnN0cnVjdG9yfGRlZmF1bHR8c3dpdGNofGNsaWNrfHJvdW5kfGV4ZWNBdHxmb3JIdG1sU2NyaXB0fHRva2VufGdpbXl8ZnVuY3Rpb25zfGdldEtleXdvcmRzfDFFNnxlc2NhcGV8d2l0aGlufHJhbmRvbXxzZ2l8YW5vdGhlcnxmaW5hbGx5fHN1cHBseXxNU0lFfGllfHRvVXBwZXJDYXNlfGNhdGNofHJldHVyblZhbHVlfGRlZmluaXRpb258ZXZlbnR8Ym9yZGVyfGltc3h8Y29uc3RydWN0aW5nfG9uZXxJbmZpbml0eXxmcm9tfHdoZW58Q29udGVudHxjZWxscGFkZGluZ3xmbGFnc3xjZWxsc3BhY2luZ3x0cnl8eGh0bWx8VHlwZXxzcGFjZXN8MjkzMDQwMnxob3N0ZWRfYnV0dG9uX2lkfGxhc3RJbmRleE9mfGRvbmF0ZXxhY3RpdmV8ZGV2ZWxvcG1lbnR8a2VlcHx0b3x4Y2xpY2t8X3N8WG1sfHBsZWFzZXxsaWtlfHlvdXxwYXlwYWx8Y2dpfGNtZHx3ZWJzY3J8YmlufGhpZ2hsaWdodGVkfHNjcm9sbGJhcnN8YXNwU2NyaXB0VGFnc3xwaHBTY3JpcHRUYWdzfHNvcnR8bWF4fHNjcmlwdFNjcmlwdFRhZ3N8dG9vbGJhcl9pdGVtfF98Y29tbWFuZHxjb21tYW5kX3xudW1iZXJ8Z2V0RWxlbWVudEJ5SWR8ZG91YmxlUXVvdGVkU3RyaW5nfHNpbmdsZUxpbmVQZXJsQ29tbWVudHN8c2luZ2xlTGluZUNDb21tZW50c3xtdWx0aUxpbmVDQ29tbWVudHN8c2luZ2xlUXVvdGVkU3RyaW5nfG11bHRpTGluZURvdWJsZVF1b3RlZFN0cmluZ3x4bWxDb21tZW50c3xhbHR8bXVsdGlMaW5lU2luZ2xlUXVvdGVkU3RyaW5nfElmfGh0dHBzfDFlbXwwMDB8ZmZmfGJhY2tncm91bmR8NWVtfHh4fGJvdHRvbXw3NWVtfEdvcmJhdGNoZXZ8bGFyZ2V8c2VyaWZ8Q0RBVEF8Y29udGludWV8dXRmfGNoYXJzZXR8Y29udGVudHxBYm91dHxmYW1pbHl8c2Fuc3xIZWx2ZXRpY2F8QXJpYWx8R2VuZXZhfDNlbXxub2d1dHRlcnxDb3B5cmlnaHR8c3ludGF4fGNsb3NlfHdyaXRlfDIwMDR8QWxleHxvcGVufEphdmFTY3JpcHR8aGlnaGxpZ2h0ZXJ8SnVseXwwMnxyZXBsYWNlQ2hpbGR8b2Zmc2V0fDgzJy5zcGxpdCgnfCcpLDAse30pKQo=]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/scripts/shCore.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ZXZhbChmdW5jdGlvbihoLGIsaixmLGcsaSl7Zz1mdW5jdGlvbihhKXtyZXR1cm4oYTxiPyIiOmcocGFyc2VJbnQoYS9iKSkpKygoYT1hJWIpPjM1P1N0cmluZy5mcm9tQ2hhckNvZGUoYSsyOSk6YS50b1N0cmluZygzNikpfTtpZighIiIucmVwbGFjZSgvXi8sU3RyaW5nKSl7d2hpbGUoai0tKXtpW2coaildPWZbal18fGcoail9Zj1bZnVuY3Rpb24oYSl7cmV0dXJuIGlbYV19XTtnPWZ1bmN0aW9uKCl7cmV0dXJuIlxcdysifTtqPTF9d2hpbGUoai0tKXtpZihmW2pdKXtoPWgucmVwbGFjZShuZXcgUmVnRXhwKCJcXGIiK2coaikrIlxcYiIsImciKSxmW2pdKX19cmV0dXJuIGh9KCdLIE07SShNKTFTIDJVKCIyYVwndCA0ayBNIDRLIDJnIDNsIDRHIDRIIik7KDYoKXs2IHIoZixlKXtJKCFNLjFSKGYpKTFTIDNtKCIzcyAxNSA0UiIpO0sgYT1mLjF3O2Y9TShmLjFtLHQoZikrKGV8fCIiKSk7SShhKWYuMXc9ezFtOmEuMW0sMTk6YS4xOT9hLjE5LjFhKDApOk59O0ggZn02IHQoZil7SChmLjFKPyJnIjoiIikrKGYuNHM/ImkiOiIiKSsoZi40cD8ibSI6IiIpKyhmLjR2PyJ4IjoiIikrKGYuM24/InkiOiIiKX02IEIoZixlLGEsYil7SyBjPXUuTCxkLGgsZzt2PVI7NUt7Tyg7Yy0tOyl7Zz11W2NdO0koYSZnLjNyJiYoIWcuMnB8fGcuMnAuVyhiKSkpe2cuMnEuMTI9ZTtJKChoPWcuMnEuWChmKSkmJmguUD09PWUpe2Q9ezNrOmcuMmIuVyhiLGgsYSksMUM6aH07MU59fX19NXYoaSl7MVMgaX01cXt2PTExfUggZH02IHAoZixlLGEpe0koM2IuWi4xaSlIIGYuMWkoZSxhKTtPKGE9YXx8MDthPGYuTDthKyspSShmW2FdPT09ZSlIIGE7SC0xfU09NihmLGUpe0sgYT1bXSxiPU0uMUIsYz0wLGQsaDtJKE0uMVIoZikpe0koZSE9PTFkKTFTIDNtKCIyYVwndCA1ciA1SSA1RiA1QiA1QyAxNSA1RSA1cCIpO0ggcihmKX1JKHYpMVMgMlUoIjJhXCd0IFcgM2wgTSA1OSA1bSA1ZyA1eCA1aSIpO2U9ZXx8IiI7TyhkPXsyTjoxMSwxOTpbXSwySzo2KGcpe0ggZS4xaShnKT4tMX0sM2Q6NihnKXtlKz1nfX07YzxmLkw7KUkoaD1CKGYsYyxiLGQpKXthLlUoaC4zayk7Yys9aC4xQ1swXS5MfHwxfVkgSShoPW4uWC5XKHpbYl0sZi4xYShjKSkpe2EuVShoWzBdKTtjKz1oWzBdLkx9WXtoPWYuM2EoYyk7SShoPT09IlsiKWI9TS4ySTtZIEkoaD09PSJdIiliPU0uMUI7YS5VKGgpO2MrK31hPTE1KGEuMUsoIiIpLG4uUS5XKGUsdywiIikpO2EuMXc9ezFtOmYsMTk6ZC4yTj9kLjE5Ok59O0ggYX07TS4zdj0iMS41LjAiO00uMkk9MTtNLjFCPTI7SyBDPS9cXCQoPzooXFxkXFxkP3xbJCZgXCddKXx7KFskXFx3XSspfSkvZyx3PS9bXjVoXSt8KFtcXHNcXFNdKSg/PVtcXHNcXFNdKlxcMSkvZyxBPS9eKD86Wz8qK118e1xcZCsoPzosXFxkKik/fSlcXD8/Lyx2PTExLHU9W10sbj17WDoxNS5aLlgsMUE6MTUuWi4xQSwxQzoxci5aLjFDLFE6MXIuWi5RLDFlOjFyLlouMWV9LHg9bi5YLlcoLygpPz8vLCIiKVsxXT09PTFkLEQ9Nigpe0sgZj0vXi9nO24uMUEuVyhmLCIiKTtIIWYuMTJ9KCkseT02KCl7SyBmPS94L2c7bi5RLlcoIngiLGYsIiIpO0ghZi4xMn0oKSxFPTE1LlouM24hPT0xZCx6PXt9O3pbTS4ySV09L14oPzpcXFxcKD86WzAtM11bMC03XXswLDJ9fFs0LTddWzAtN10/fHhbXFwyOS0yNi1mXXsyfXx1W1xcMjktMjYtZl17NH18Y1tBLTNvLXpdfFtcXHNcXFNdKSkvO3pbTS4xQl09L14oPzpcXFxcKD86MCg/OlswLTNdWzAtN117MCwyfXxbNC03XVswLTddPyk/fFsxLTldXFxkKnx4W1xcMjktMjYtZl17Mn18dVtcXDI5LTI2LWZdezR9fGNbQS0zby16XXxbXFxzXFxTXSl8XFwoXFw/Wzo9IV18Wz8qK11cXD98e1xcZCsoPzosXFxkKik/fVxcPz8pLztNLjFoPTYoZixlLGEsYil7dS5VKHsycTpyKGYsImciKyhFPyJ5IjoiIikpLDJiOmUsM3I6YXx8TS4xQiwycDpifHxOfSl9O00uMm49NihmLGUpe0sgYT1mKyIvIisoZXx8IiIpO0ggTS4yblthXXx8KE0uMm5bYV09TShmLGUpKX07TS4zYz02KGYpe0ggcihmLCJnIil9O00uNWw9NihmKXtIIGYuUSgvWy1bXFxde30oKSorPy4sXFxcXF4kfCNcXHNdL2csIlxcXFwkJiIpfTtNLjVlPTYoZixlLGEsYil7ZT1yKGUsImciKyhiJiZFPyJ5IjoiIikpO2UuMTI9YT1hfHwwO2Y9ZS5YKGYpO0ggYj9mJiZmLlA9PT1hP2Y6TjpmfTtNLjNxPTYoKXtNLjFoPTYoKXsxUyAyVSgiMmFcJ3QgNTUgMWggNTQgM3EiKX19O00uMVI9NihmKXtIIDUzLlouMXEuVyhmKT09PSJbMm0gMTVdIn07TS4zcD02KGYsZSxhLGIpe08oSyBjPXIoZSwiZyIpLGQ9LTEsaDtoPWMuWChmKTspe2EuVyhiLGgsKytkLGYsYyk7Yy4xMj09PWguUCYmYy4xMisrfUkoZS4xSillLjEyPTB9O00uNTc9NihmLGUpe0ggNiBhKGIsYyl7SyBkPWVbY10uMUk/ZVtjXTp7MUk6ZVtjXX0saD1yKGQuMUksImciKSxnPVtdLGk7TyhpPTA7aTxiLkw7aSsrKU0uM3AoYltpXSxoLDYoayl7Zy5VKGQuM2o/a1tkLjNqXXx8IiI6a1swXSl9KTtIIGM9PT1lLkwtMXx8IWcuTD9nOmEoZyxjKzEpfShbZl0sMCl9OzE1LlouMXA9NihmLGUpe0ggSi5YKGVbMF0pfTsxNS5aLlc9NihmLGUpe0ggSi5YKGUpfTsxNS5aLlg9NihmKXtLIGU9bi5YLjFwKEosMTQpLGE7SShlKXtJKCF4JiZlLkw+MSYmcChlLCIiKT4tMSl7YT0xNShKLjFtLG4uUS5XKHQoSiksImciLCIiKSk7bi5RLlcoZi4xYShlLlApLGEsNigpe08oSyBjPTE7YzwxNC5MLTI7YysrKUkoMTRbY109PT0xZCllW2NdPTFkfSl9SShKLjF3JiZKLjF3LjE5KU8oSyBiPTE7YjxlLkw7YisrKUkoYT1KLjF3LjE5W2ItMV0pZVthXT1lW2JdOyFEJiZKLjFKJiYhZVswXS5MJiZKLjEyPmUuUCYmSi4xMi0tfUggZX07SSghRCkxNS5aLjFBPTYoZil7KGY9bi5YLlcoSixmKSkmJkouMUomJiFmWzBdLkwmJkouMTI+Zi5QJiZKLjEyLS07SCEhZn07MXIuWi4xQz02KGYpe00uMVIoZil8fChmPTE1KGYpKTtJKGYuMUope0sgZT1uLjFDLjFwKEosMTQpO2YuMTI9MDtIIGV9SCBmLlgoSil9OzFyLlouUT02KGYsZSl7SyBhPU0uMVIoZiksYixjO0koYSYmMWogZS41OCgpPT09IjNmIiYmZS4xaSgiJHsiKT09PS0xJiZ5KUggbi5RLjFwKEosMTQpO0koYSl7SShmLjF3KWI9Zi4xdy4xOX1ZIGYrPSIiO0koMWogZT09PSI2IiljPW4uUS5XKEosZiw2KCl7SShiKXsxNFswXT0xZiAxcigxNFswXSk7TyhLIGQ9MDtkPGIuTDtkKyspSShiW2RdKTE0WzBdW2JbZF1dPTE0W2QrMV19SShhJiZmLjFKKWYuMTI9MTRbMTQuTC0yXSsxNFswXS5MO0ggZS4xcChOLDE0KX0pO1l7Yz1KKyIiO2M9bi5RLlcoYyxmLDYoKXtLIGQ9MTQ7SCBuLlEuVyhlLEMsNihoLGcsaSl7SShnKTViKGcpezI0IiQiOkgiJCI7MjQiJiI6SCBkWzBdOzI0ImAiOkggZFtkLkwtMV0uMWEoMCxkW2QuTC0yXSk7MjQiXCciOkggZFtkLkwtMV0uMWEoZFtkLkwtMl0rZFswXS5MKTs1YTppPSIiO2c9K2c7SSghZylIIGg7Tyg7Zz5kLkwtMzspe2k9MXIuWi4xYS5XKGcsLTEpK2k7Zz0xUS4zaShnLzEwKX1IKGc/ZFtnXXx8IiI6IiQiKStpfVl7Zz0raTtJKGc8PWQuTC0zKUggZFtnXTtnPWI/cChiLGkpOi0xO0ggZz4tMT9kW2crMV06aH19KX0pfUkoYSYmZi4xSilmLjEyPTA7SCBjfTsxci5aLjFlPTYoZixlKXtJKCFNLjFSKGYpKUggbi4xZS4xcChKLDE0KTtLIGE9SisiIixiPVtdLGM9MCxkLGg7SShlPT09MWR8fCtlPDApZT01RDtZe2U9MVEuM2koK2UpO0koIWUpSFtdfU8oZj1NLjNjKGYpO2Q9Zi5YKGEpOyl7SShmLjEyPmMpe2IuVShhLjFhKGMsZC5QKSk7ZC5MPjEmJmQuUDxhLkwmJjNiLlouVS4xcChiLGQuMWEoMSkpO2g9ZFswXS5MO2M9Zi4xMjtJKGIuTD49ZSkxTn1mLjEyPT09ZC5QJiZmLjEyKyt9SShjPT09YS5MKXtJKCFuLjFBLlcoZiwiIil8fGgpYi5VKCIiKX1ZIGIuVShhLjFhKGMpKTtIIGIuTD5lP2IuMWEoMCxlKTpifTtNLjFoKC9cXChcXD8jW14pXSpcXCkvLDYoZil7SCBuLjFBLlcoQSxmLjJTLjFhKGYuUCtmWzBdLkwpKT8iIjoiKD86KSJ9KTtNLjFoKC9cXCgoPyFcXD8pLyw2KCl7Si4xOS5VKE4pO0giKCJ9KTtNLjFoKC9cXChcXD88KFskXFx3XSspPi8sNihmKXtKLjE5LlUoZlsxXSk7Si4yTj1SO0giKCJ9KTtNLjFoKC9cXFxcazwoW1xcdyRdKyk+Lyw2KGYpe0sgZT1wKEouMTksZlsxXSk7SCBlPi0xPyJcXFxcIisoZSsxKSsoM1IoZi4yUy4zYShmLlArZlswXS5MKSk/IiI6Iig/OikiKTpmWzBdfSk7TS4xaCgvXFxbXFxeP10vLDYoZil7SCBmWzBdPT09IltdIj8iXFxcXGJcXFxcQiI6IltcXFxcc1xcXFxTXSJ9KTtNLjFoKC9eXFwoXFw/KFs1QV0rKVxcKS8sNihmKXtKLjNkKGZbMV0pO0giIn0pO00uMWgoLyg/Olxccyt8Iy4qKSsvLDYoZil7SCBuLjFBLlcoQSxmLjJTLjFhKGYuUCtmWzBdLkwpKT8iIjoiKD86KSJ9LE0uMUIsNigpe0ggSi4ySygieCIpfSk7TS4xaCgvXFwuLyw2KCl7SCJbXFxcXHNcXFxcU10ifSxNLjFCLDYoKXtIIEouMksoInMiKX0pfSkoKTsxaiAyZSE9IjFkIiYmKDJlLk09TSk7SyAxdj02KCl7NiByKGEsYil7YS4xbC4xaShiKSE9LTF8fChhLjFsKz0iICIrYil9NiB0KGEpe0ggYS4xaSgiM2UiKT09MD9hOiIzZSIrYX02IEIoYSl7SCBlLjFZLjJBW3QoYSldfTYgcChhLGIsYyl7SShhPT1OKUggTjtLIGQ9YyE9Uj9hLjNHOlthLjJHXSxoPXsiIyI6IjFjIiwiLiI6IjFsIn1bYi4xbygwLDEpXXx8IjNoIixnLGk7Zz1oIT0iM2giP2IuMW8oMSk6Yi41dSgpO0koKGFbaF18fCIiKS4xaShnKSE9LTEpSCBhO08oYT0wO2QmJmE8ZC5MJiZpPT1OO2ErKylpPXAoZFthXSxiLGMpO0ggaX02IEMoYSxiKXtLIGM9e30sZDtPKGQgMmcgYSljW2RdPWFbZF07TyhkIDJnIGIpY1tkXT1iW2RdO0ggY302IHcoYSxiLGMsZCl7NiBoKGcpe2c9Z3x8MVAuNXk7SSghZy4xRil7Zy4xRj1nLjUyO2cuM049Nigpe0ouNXc9MTF9fWMuVyhkfHwxUCxnKX1hLjNnP2EuM2coIjRVIitiLGgpOmEuNHkoYixoLDExKX02IEEoYSxiKXtLIGM9ZS4xWS4yaixkPU47SShjPT1OKXtjPXt9O08oSyBoIDJnIGUuMVUpe0sgZz1lLjFVW2hdO2Q9Zy40eDtJKGQhPU4pe2cuMVY9aC40dygpO08oZz0wO2c8ZC5MO2crKyljW2RbZ11dPWh9fWUuMVkuMmo9Y31kPWUuMVVbY1thXV07ZD09TiYmYiE9MTEmJjFQLjFYKGUuMTMuMXguMVgrKGUuMTMuMXguM0UrYSkpO0ggZH02IHYoYSxiKXtPKEsgYz1hLjFlKCJcXG4iKSxkPTA7ZDxjLkw7ZCsrKWNbZF09YihjW2RdLGQpO0ggYy4xSygiXFxuIil9NiB1KGEsYil7SShhPT1OfHxhLkw9PTB8fGE9PSJcXG4iKUggYTthPWEuUSgvPC9nLCImMXk7Iik7YT1hLlEoLyB7Mix9L2csNihjKXtPKEsgZD0iIixoPTA7aDxjLkwtMTtoKyspZCs9ZS4xMy4xVztIIGQrIiAifSk7SShiIT1OKWE9dihhLDYoYyl7SShjLkw9PTApSCIiO0sgZD0iIjtjPWMuUSgvXigmMnM7fCApKy8sNihoKXtkPWg7SCIifSk7SShjLkw9PTApSCBkO0ggZCtcJzwxNyAxZz0iXCcrYitcJyI+XCcrYysiPC8xNz4ifSk7SCBhfTYgbihhLGIpe2EuMWUoIlxcbiIpO08oSyBjPSIiLGQ9MDtkPDUwO2QrKyljKz0iICAgICAgICAgICAgICAgICAgICAiO0ggYT12KGEsNihoKXtJKGguMWkoIlxcdCIpPT0tMSlIIGg7TyhLIGc9MDsoZz1oLjFpKCJcXHQiKSkhPS0xOyloPWguMW8oMCxnKStjLjFvKDAsYi1nJWIpK2guMW8oZysxLGguTCk7SCBofSl9NiB4KGEpe0ggYS5RKC9eXFxzK3xcXHMrJC9nLCIiKX02IEQoYSxiKXtJKGEuUDxiLlApSC0xO1kgSShhLlA+Yi5QKUggMTtZIEkoYS5MPGIuTClILTE7WSBJKGEuTD5iLkwpSCAxO0ggMH02IHkoYSxiKXs2IGMoayl7SCBrWzBdfU8oSyBkPU4saD1bXSxnPWIuMkQ/Yi4yRDpjOyhkPWIuMUkuWChhKSkhPU47KXtLIGk9ZyhkLGIpO0koMWogaT09IjNmIilpPVsxZiBlLjJMKGksZC5QLGIuMjMpXTtoPWguMU8oaSl9SCBofTYgRShhKXtLIGI9LyguKikoKCYxRzt8JjF5OykuKikvO0ggYS5RKGUuM0EuM00sNihjKXtLIGQ9IiIsaD1OO0koaD1iLlgoYykpe2M9aFsxXTtkPWhbMl19SFwnPGEgMmg9IlwnK2MrXCciPlwnK2MrIjwvYT4iK2R9KX02IHooKXtPKEsgYT0xRS4zNigiMWsiKSxiPVtdLGM9MDtjPGEuTDtjKyspYVtjXS4zcz09IjIwIiYmYi5VKGFbY10pO0ggYn02IGYoYSl7YT1hLjFGO0sgYj1wKGEsIi4yMCIsUik7YT1wKGEsIi4zTyIsUik7SyBjPTFFLjRpKCIzdCIpO0koISghYXx8IWJ8fHAoYSwiM3QiKSkpe0IoYi4xYyk7cihiLCIxbSIpO08oSyBkPWEuM0csaD1bXSxnPTA7ZzxkLkw7ZysrKWguVShkW2ddLjR6fHxkW2ddLjRBKTtoPWguMUsoIlxcciIpO2MuMzkoMUUuNEQoaCkpO2EuMzkoYyk7Yy4yQygpO2MuNEMoKTt3KGMsIjR1Iiw2KCl7Yy4yRy40RShjKTtiLjFsPWIuMWwuUSgiMW0iLCIiKX0pfX1JKDFqIDNGIT0iMWQiJiYxaiBNPT0iMWQiKU09M0YoIk0iKS5NO0sgZT17MnY6eyIxZy0yNyI6IiIsIjJpLTFzIjoxLCIyei0xcy0ydCI6MTEsMU06TiwxdDpOLCI0Mi00NSI6UiwiNDMtMjIiOjQsMXU6UiwxNjpSLCIzVi0xNyI6UiwybDoxMSwiNDEtNDAiOlIsMms6MTEsIjF6LTFrIjoxMX0sMTM6ezFXOiImMnM7IiwyTTpSLDQ2OjExLDQ0OjExLDM0OiI0biIsMXg6ezIxOiI0byAxbSIsMlA6Ij8iLDFYOiIxdlxcblxcbiIsM0U6IjRyXCd0IDR0IDFEIE86ICIsNGc6IjRtIDRCXCd0IDUxIE8gMXotMWsgNEY6ICIsMzc6XCc8ITRUIDF6IDRTICItLy80Vi8vM0ggNFcgMS4wIDRaLy80WSIgIjFaOi8vMnkuM0wuM0svNFgvM0kvM0gvM0ktNFAuNEoiPjwxeiA0ST0iMVo6Ly8yeS4zTC4zSy80TC81TCI+PDNKPjw0TiAxWi00TT0iNUctNU0iIDZLPSIyTy8xejsgNko9NkktOCIgLz48MXQ+NkwgMXY8LzF0PjwvM0o+PDNCIDFMPSIyNS02TTo2USw2UCw2Tyw2Ti02Rjs2eS0yZjojNng7MmY6IzZ3OzI1LTIyOjZ2OzJPLTNEOjNDOyI+PFQgMUw9IjJPLTNEOjNDOzN3LTMyOjEuNno7Ij48VCAxTD0iMjUtMjI6NkEtNkU7Ij4xdjwvVD48VCAxTD0iMjUtMjI6LjZDOzN3LTZCOjZSOyI+PFQ+M3YgMy4wLjc2ICg3MiA3MyAzeCk8L1Q+PFQ+PGEgMmg9IjFaOi8vM3UuMncvMXYiIDFGPSIzOCIgMUw9IjJmOiMzeSI+MVo6Ly8zdS4ydy8xdjwvYT48L1Q+PFQ+NzAgMTcgNlUgNzEuPC9UPjxUPjZUIDZYLTN4IDZZIDZELjwvVD48L1Q+PFQ+NnQgNjEgNjAgSiAxaywgNVogPGEgMmg9IjZ1Oi8vMnkuNjIuMncvNjMtNjYvNjU/NjQ9NVgtNVcmNVA9NU8iIDFMPSIyZjojM3kiPjVSPC9hPiA1ViA8MlIvPjVVIDVUIDVTITwvVD48L1Q+PC8zQj48LzF6PlwnfX0sMVk6ezJqOk4sMkE6e319LDFVOnt9LDNBOns2bjovXFwvXFwqW1xcc1xcU10qP1xcKlxcLy8yYyw2bTovXFwvXFwvLiokLzJjLDZsOi8jLiokLzJjLDZrOi8iKFteXFxcXCJcXG5dfFxcXFwuKSoiL2csNm86L1wnKFteXFxcXFwnXFxuXXxcXFxcLikqXCcvZyw2cDoxZiBNKFwnIihbXlxcXFxcXFxcIl18XFxcXFxcXFwuKSoiXCcsIjN6IiksNnM6MWYgTSgiXCcoW15cXFxcXFxcXFwnXXxcXFxcXFxcXC4pKlwnIiwiM3oiKSw2cTovKCYxeTt8PCkhLS1bXFxzXFxTXSo/LS0oJjFHO3w+KS8yYywzTTovXFx3KzpcXC9cXC9bXFx3LS5cXC8/JSY9OkA7XSovZyw2YTp7MTg6LygmMXk7fDwpXFw/PT8vZywxYjovXFw/KCYxRzt8PikvZ30sNjk6ezE4Oi8oJjF5O3w8KSU9Py9nLDFiOi8lKCYxRzt8PikvZ30sNmQ6ezE4Oi8oJjF5O3w8KVxccyoxay4qPygmMUc7fD4pLzJULDFiOi8oJjF5O3w8KVxcL1xccyoxa1xccyooJjFHO3w+KS8yVH19LDE2OnsxSDo2KGEpezYgYihpLGspe0ggZS4xNi4ybyhpLGssZS4xMy4xeFtrXSl9TyhLIGM9XCc8VCAxZz0iMTYiPlwnLGQ9ZS4xNi4yeCxoPWQuMlgsZz0wO2c8aC5MO2crKyljKz0oZFtoW2ddXS4xSHx8YikoYSxoW2ddKTtjKz0iPC9UPiI7SCBjfSwybzo2KGEsYixjKXtIXCc8Mlc+PGEgMmg9IiMiIDFnPSI2ZSA2aFwnK2IrIiAiK2IrXCciPlwnK2MrIjwvYT48LzJXPiJ9LDJiOjYoYSl7SyBiPWEuMUYsYz1iLjFsfHwiIjtiPUIocChiLCIuMjAiLFIpLjFjKTtLIGQ9NihoKXtIKGg9MTUoaCsiNmYoXFxcXHcrKSIpLlgoYykpP2hbMV06Tn0oIjZnIik7YiYmZCYmZS4xNi4yeFtkXS4yQihiKTthLjNOKCl9LDJ4OnsyWDpbIjIxIiwiMlAiXSwyMTp7MUg6NihhKXtJKGEuVigiMmwiKSE9UilIIiI7SyBiPWEuVigiMXQiKTtIIGUuMTYuMm8oYSwiMjEiLGI/YjplLjEzLjF4LjIxKX0sMkI6NihhKXthPTFFLjZqKHQoYS4xYykpO2EuMWw9YS4xbC5RKCI0NyIsIiIpfX0sMlA6ezJCOjYoKXtLIGE9IjY4PTAiO2ErPSIsIDE4PSIrKDMxLjMwLTMzKS8yKyIsIDMyPSIrKDMxLjJaLTJZKS8yKyIsIDMwPTMzLCAyWj0yWSI7YT1hLlEoL14sLywiIik7YT0xUC42WigiIiwiMzgiLGEpO2EuMkMoKTtLIGI9YS4xRTtiLjZXKGUuMTMuMXguMzcpO2IuNlYoKTthLjJDKCl9fX19LDM1OjYoYSxiKXtLIGM7SShiKWM9W2JdO1l7Yz0xRS4zNihlLjEzLjM0KTtPKEsgZD1bXSxoPTA7aDxjLkw7aCsrKWQuVShjW2hdKTtjPWR9Yz1jO2Q9W107SShlLjEzLjJNKWM9Yy4xTyh6KCkpO0koYy5MPT09MClIIGQ7TyhoPTA7aDxjLkw7aCsrKXtPKEsgZz1jW2hdLGk9YSxrPWNbaF0uMWwsaj0zVyAwLGw9e30sbT0xZiBNKCJeXFxcXFsoPzwyVj4oLio/KSlcXFxcXSQiKSxzPTFmIE0oIig/PDI3PltcXFxcdy1dKylcXFxccyo6XFxcXHMqKD88MVQ+W1xcXFx3LSUjXSt8XFxcXFsuKj9cXFxcXXxcXCIuKj9cXCJ8XCcuKj9cJylcXFxccyo7PyIsImciKTsoaj1zLlgoaykpIT1OOyl7SyBvPWouMVQuUSgvXltcJyJdfFtcJyJdJC9nLCIiKTtJKG8hPU4mJm0uMUEobykpe289bS5YKG8pO289by4yVi5MPjA/by4yVi4xZSgvXFxzKixcXHMqLyk6W119bFtqLjI3XT1vfWc9ezFGOmcsMW46QyhpLGwpfTtnLjFuLjFEIT1OJiZkLlUoZyl9SCBkfSwxTTo2KGEsYil7SyBjPUouMzUoYSxiKSxkPU4saD1lLjEzO0koYy5MIT09MClPKEsgZz0wO2c8Yy5MO2crKyl7Yj1jW2ddO0sgaT1iLjFGLGs9Yi4xbixqPWsuMUQsbDtJKGohPU4pe0koa1siMXotMWsiXT09IlIifHxlLjJ2WyIxei0xayJdPT1SKXtkPTFmIGUuNGwoaik7aj0iNE8ifVkgSShkPUEoaikpZD0xZiBkO1kgNkg7bD1pLjNYO0koaC4yTSl7bD1sO0sgbT14KGwpLHM9MTE7SShtLjFpKCI8IVs2R1siKT09MCl7bT1tLjRoKDkpO3M9Un1LIG89bS5MO0kobS4xaSgiXV1cXD4iKT09by0zKXttPW0uNGgoMCxvLTMpO3M9Un1sPXM/bTpsfUkoKGkuMXR8fCIiKSE9IiIpay4xdD1pLjF0O2suMUQ9ajtkLjJRKGspO2I9ZC4yRihsKTtJKChpLjFjfHwiIikhPSIiKWIuMWM9aS4xYztpLjJHLjc0KGIsaSl9fX0sMkU6NihhKXt3KDFQLCI0ayIsNigpe2UuMU0oYSl9KX19O2UuMkU9ZS4yRTtlLjFNPWUuMU07ZS4yTD02KGEsYixjKXtKLjFUPWE7Si5QPWI7Si5MPWEuTDtKLjIzPWM7Si4xVj1OfTtlLjJMLlouMXE9Nigpe0ggSi4xVH07ZS40bD02KGEpezYgYihqLGwpe08oSyBtPTA7bTxqLkw7bSsrKWpbbV0uUCs9bH1LIGM9QShhKSxkLGg9MWYgZS4xVS41WSxnPUosaT0iMkYgMUggMlEiLjFlKCIgIik7SShjIT1OKXtkPTFmIGM7TyhLIGs9MDtrPGkuTDtrKyspKDYoKXtLIGo9aVtrXTtnW2pdPTYoKXtIIGhbal0uMXAoaCwxNCl9fSkoKTtkLjI4PT1OPzFQLjFYKGUuMTMuMXguMVgrKGUuMTMuMXguNGcrYSkpOmguMkouVSh7MUk6ZC4yOC4xNywyRDo2KGope08oSyBsPWouMTcsbT1bXSxzPWQuMkosbz1qLlArai4xOC5MLEY9ZC4yOCxxLEc9MDtHPHMuTDtHKyspe3E9eShsLHNbR10pO2IocSxvKTttPW0uMU8ocSl9SShGLjE4IT1OJiZqLjE4IT1OKXtxPXkoai4xOCxGLjE4KTtiKHEsai5QKTttPW0uMU8ocSl9SShGLjFiIT1OJiZqLjFiIT1OKXtxPXkoai4xYixGLjFiKTtiKHEsai5QK2pbMF0uNVEoai4xYikpO209bS4xTyhxKX1PKGo9MDtqPG0uTDtqKyspbVtqXS4xVj1jLjFWO0ggbX19KX19O2UuNGo9Nigpe307ZS40ai5aPXtWOjYoYSxiKXtLIGM9Si4xblthXTtjPWM9PU4/YjpjO0sgZD17IlIiOlIsIjExIjoxMX1bY107SCBkPT1OP2M6ZH0sM1k6NihhKXtIIDFFLjRpKGEpfSw0Yzo2KGEsYil7SyBjPVtdO0koYSE9TilPKEsgZD0wO2Q8YS5MO2QrKylJKDFqIGFbZF09PSIybSIpYz1jLjFPKHkoYixhW2RdKSk7SCBKLjRlKGMuNmIoRCkpfSw0ZTo2KGEpe08oSyBiPTA7YjxhLkw7YisrKUkoYVtiXSE9PU4pTyhLIGM9YVtiXSxkPWMuUCtjLkwsaD1iKzE7aDxhLkwmJmFbYl0hPT1OO2grKyl7SyBnPWFbaF07SShnIT09TilJKGcuUD5kKTFOO1kgSShnLlA9PWMuUCYmZy5MPmMuTClhW2JdPU47WSBJKGcuUD49Yy5QJiZnLlA8ZClhW2hdPU59SCBhfSw0ZDo2KGEpe0sgYj1bXSxjPTJ1KEouVigiMmktMXMiKSk7dihhLDYoZCxoKXtiLlUoaCtjKX0pO0ggYn0sM1U6NihhKXtLIGI9Si5WKCIxTSIsW10pO0koMWogYiE9IjJtIiYmYi5VPT1OKWI9W2JdO2E6e2E9YS4xcSgpO0sgYz0zVyAwO08oYz1jPTFRLjZjKGN8fDAsMCk7YzxiLkw7YysrKUkoYltjXT09YSl7Yj1jOzFOIGF9Yj0tMX1IIGIhPS0xfSwycjo2KGEsYixjKXthPVsiMXMiLCI2aSIrYiwiUCIrYSwiNnIiKyhiJTI9PTA/MToyKS4xcSgpXTtKLjNVKGIpJiZhLlUoIjY3Iik7Yj09MCYmYS5VKCIxTiIpO0hcJzxUIDFnPSJcJythLjFLKCIgIikrXCciPlwnK2MrIjwvVD4ifSwzUTo2KGEsYil7SyBjPSIiLGQ9YS4xZSgiXFxuIikuTCxoPTJ1KEouVigiMmktMXMiKSksZz1KLlYoIjJ6LTFzLTJ0Iik7SShnPT1SKWc9KGgrZC0xKS4xcSgpLkw7WSBJKDNSKGcpPT1SKWc9MDtPKEsgaT0wO2k8ZDtpKyspe0sgaz1iP2JbaV06aCtpLGo7SShrPT0wKWo9ZS4xMy4xVztZe2o9ZztPKEsgbD1rLjFxKCk7bC5MPGo7KWw9IjAiK2w7aj1sfWE9ajtjKz1KLjJyKGksayxhKX1IIGN9LDQ5OjYoYSxiKXthPXgoYSk7SyBjPWEuMWUoIlxcbiIpO0ouVigiMnotMXMtMnQiKTtLIGQ9MnUoSi5WKCIyaS0xcyIpKTthPSIiO08oSyBoPUouVigiMUQiKSxnPTA7ZzxjLkw7ZysrKXtLIGk9Y1tnXSxrPS9eKCYyczt8XFxzKSsvLlgoaSksaj1OLGw9Yj9iW2ddOmQrZztJKGshPU4pe2o9a1swXS4xcSgpO2k9aS4xbyhqLkwpO2o9ai5RKCIgIixlLjEzLjFXKX1pPXgoaSk7SShpLkw9PTApaT1lLjEzLjFXO2ErPUouMnIoZyxsLChqIT1OP1wnPDE3IDFnPSJcJytoK1wnIDVOIj5cJytqKyI8LzE3PiI6IiIpK2kpfUggYX0sNGY6NihhKXtIIGE/Ijw0YT4iK2ErIjwvNGE+IjoiIn0sNGI6NihhLGIpezYgYyhsKXtIKGw9bD9sLjFWfHxnOmcpP2wrIiAiOiIifU8oSyBkPTAsaD0iIixnPUouVigiMUQiLCIiKSxpPTA7aTxiLkw7aSsrKXtLIGs9YltpXSxqO0koIShrPT09Tnx8ay5MPT09MCkpe2o9YyhrKTtoKz11KGEuMW8oZCxrLlAtZCksaisiNDgiKSt1KGsuMVQsaitrLjIzKTtkPWsuUCtrLkwrKGsuNzV8fDApfX1oKz11KGEuMW8oZCksYygpKyI0OCIpO0ggaH0sMUg6NihhKXtLIGI9IiIsYz1bIjIwIl0sZDtJKEouVigiMmsiKT09UilKLjFuLjE2PUouMW4uMXU9MTE7MWw9IjIwIjtKLlYoIjJsIik9PVImJmMuVSgiNDciKTtJKCgxdT1KLlYoIjF1IikpPT0xMSljLlUoIjZTIik7Yy5VKEouVigiMWctMjciKSk7Yy5VKEouVigiMUQiKSk7YT1hLlEoL15bIF0qW1xcbl0rfFtcXG5dKlsgXSokL2csIiIpLlEoL1xcci9nLCIgIik7Yj1KLlYoIjQzLTIyIik7SShKLlYoIjQyLTQ1Iik9PVIpYT1uKGEsYik7WXtPKEsgaD0iIixnPTA7ZzxiO2crKyloKz0iICI7YT1hLlEoL1xcdC9nLGgpfWE9YTthOntiPWE9YTtoPS88MlJcXHMqXFwvPz58JjF5OzJSXFxzKlxcLz8mMUc7LzJUO0koZS4xMy40Nj09UiliPWIuUShoLCJcXG4iKTtJKGUuMTMuNDQ9PVIpYj1iLlEoaCwiIik7Yj1iLjFlKCJcXG4iKTtoPS9eXFxzKi87Zz00UTtPKEsgaT0wO2k8Yi5MJiZnPjA7aSsrKXtLIGs9YltpXTtJKHgoaykuTCE9MCl7az1oLlgoayk7SShrPT1OKXthPWE7MU4gYX1nPTFRLjRxKGtbMF0uTCxnKX19SShnPjApTyhpPTA7aTxiLkw7aSsrKWJbaV09YltpXS4xbyhnKTthPWIuMUsoIlxcbiIpfUkoMXUpZD1KLjRkKGEpO2I9Si40YyhKLjJKLGEpO2I9Si40YihhLGIpO2I9Si40OShiLGQpO0koSi5WKCI0MS00MCIpKWI9RShiKTsxaiAySCE9IjFkIiYmMkguM1MmJjJILjNTLjFDKC81cy8pJiZjLlUoIjV0Iik7SCBiPVwnPFQgMWM9IlwnK3QoSi4xYykrXCciIDFnPSJcJytjLjFLKCIgIikrXCciPlwnKyhKLlYoIjE2Iik/ZS4xNi4xSChKKToiIikrXCc8M1ogNXo9IjAiIDVIPSIwIiA1Sj0iMCI+XCcrSi40ZihKLlYoIjF0IikpKyI8M1Q+PDNQPiIrKDF1P1wnPDJkIDFnPSIxdSI+XCcrSi4zUShhKSsiPC8yZD4iOiIiKStcJzwyZCAxZz0iMTciPjxUIDFnPSIzTyI+XCcrYisiPC9UPjwvMmQ+PC8zUD48LzNUPjwvM1o+PC9UPiJ9LDJGOjYoYSl7SShhPT09TilhPSIiO0ouMTc9YTtLIGI9Si4zWSgiVCIpO2IuM1g9Si4xSChhKTtKLlYoIjE2IikmJncocChiLCIuMTYiKSwiNWMiLGUuMTYuMmIpO0ouVigiM1YtMTciKSYmdyhwKGIsIi4xNyIpLCI1NiIsZik7SCBifSwyUTo2KGEpe0ouMWM9IiIrMVEuNWQoMVEuNW4oKSo1aykuMXEoKTtlLjFZLjJBW3QoSi4xYyldPUo7Si4xbj1DKGUuMnYsYXx8e30pO0koSi5WKCIyayIpPT1SKUouMW4uMTY9Si4xbi4xdT0xMX0sNWo6NihhKXthPWEuUSgvXlxccyt8XFxzKyQvZywiIikuUSgvXFxzKy9nLCJ8Iik7SCJcXFxcYig/OiIrYSsiKVxcXFxiIn0sNWY6NihhKXtKLjI4PXsxODp7MUk6YS4xOCwyMzoiMWsifSwxYjp7MUk6YS4xYiwyMzoiMWsifSwxNzoxZiBNKCIoPzwxOD4iK2EuMTguMW0rIikoPzwxNz4uKj8pKD88MWI+IithLjFiLjFtKyIpIiwiNW8iKX19fTtIIGV9KCk7MWogMmUhPSIxZCImJigyZS4xdj0xdik7Jyw2Miw0NDEsInx8fHx8fGZ1bmN0aW9ufHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHJldHVybnxpZnx0aGlzfHZhcnxsZW5ndGh8WFJlZ0V4cHxudWxsfGZvcnxpbmRleHxyZXBsYWNlfHRydWV8fGRpdnxwdXNofGdldFBhcmFtfGNhbGx8ZXhlY3xlbHNlfHByb3RvdHlwZXx8ZmFsc2V8bGFzdEluZGV4fGNvbmZpZ3xhcmd1bWVudHN8UmVnRXhwfHRvb2xiYXJ8Y29kZXxsZWZ0fGNhcHR1cmVOYW1lc3xzbGljZXxyaWdodHxpZHx1bmRlZmluZWR8c3BsaXR8bmV3fGNsYXNzfGFkZFRva2VufGluZGV4T2Z8dHlwZW9mfHNjcmlwdHxjbGFzc05hbWV8c291cmNlfHBhcmFtc3xzdWJzdHJ8YXBwbHl8dG9TdHJpbmd8U3RyaW5nfGxpbmV8dGl0bGV8Z3V0dGVyfFN5bnRheEhpZ2hsaWdodGVyfF94cmVnZXhwfHN0cmluZ3N8bHR8aHRtbHx0ZXN0fE9VVFNJREVfQ0xBU1N8bWF0Y2h8YnJ1c2h8ZG9jdW1lbnR8dGFyZ2V0fGd0fGdldEh0bWx8cmVnZXh8Z2xvYmFsfGpvaW58c3R5bGV8aGlnaGxpZ2h0fGJyZWFrfGNvbmNhdHx3aW5kb3d8TWF0aHxpc1JlZ0V4cHx0aHJvd3x2YWx1ZXxicnVzaGVzfGJydXNoTmFtZXxzcGFjZXxhbGVydHx2YXJzfGh0dHB8c3ludGF4aGlnaGxpZ2h0ZXJ8ZXhwYW5kU291cmNlfHNpemV8Y3NzfGNhc2V8Zm9udHxGYXxuYW1lfGh0bWxTY3JpcHR8ZEF8Y2FufGhhbmRsZXJ8Z218dGR8ZXhwb3J0c3xjb2xvcnxpbnxocmVmfGZpcnN0fGRpc2NvdmVyZWRCcnVzaGVzfGxpZ2h0fGNvbGxhcHNlfG9iamVjdHxjYWNoZXxnZXRCdXR0b25IdG1sfHRyaWdnZXJ8cGF0dGVybnxnZXRMaW5lSHRtbHxuYnNwfG51bWJlcnN8cGFyc2VJbnR8ZGVmYXVsdHN8Y29tfGl0ZW1zfHd3d3xwYWR8aGlnaGxpZ2h0ZXJzfGV4ZWN1dGV8Zm9jdXN8ZnVuY3xhbGx8Z2V0RGl2fHBhcmVudE5vZGV8bmF2aWdhdG9yfElOU0lERV9DTEFTU3xyZWdleExpc3R8aGFzRmxhZ3xNYXRjaHx1c2VTY3JpcHRUYWdzfGhhc05hbWVkQ2FwdHVyZXx0ZXh0fGhlbHB8aW5pdHxicnxpbnB1dHxnaXxFcnJvcnx2YWx1ZXN8c3BhbnxsaXN0fDI1MHxoZWlnaHR8d2lkdGh8c2NyZWVufHRvcHw1MDB8dGFnTmFtZXxmaW5kRWxlbWVudHN8Z2V0RWxlbWVudHNCeVRhZ05hbWV8YWJvdXREaWFsb2d8X2JsYW5rfGFwcGVuZENoaWxkfGNoYXJBdHxBcnJheXxjb3B5QXNHbG9iYWx8c2V0RmxhZ3xoaWdobGlnaHRlcl98c3RyaW5nfGF0dGFjaEV2ZW50fG5vZGVOYW1lfGZsb29yfGJhY2tyZWZ8b3V0cHV0fHRoZXxUeXBlRXJyb3J8c3RpY2t5fFphfGl0ZXJhdGV8ZnJlZXplVG9rZW5zfHNjb3BlfHR5cGV8dGV4dGFyZWF8YWxleGdvcmJhdGNoZXZ8dmVyc2lvbnxtYXJnaW58MjAxMHwwMDU4OTZ8Z3N8cmVnZXhMaWJ8Ym9keXxjZW50ZXJ8YWxpZ258bm9CcnVzaHxyZXF1aXJlfGNoaWxkTm9kZXN8RFREfHhodG1sMXxoZWFkfG9yZ3x3M3x1cmx8cHJldmVudERlZmF1bHR8Y29udGFpbmVyfHRyfGdldExpbmVOdW1iZXJzSHRtbHxpc05hTnx1c2VyQWdlbnR8dGJvZHl8aXNMaW5lSGlnaGxpZ2h0ZWR8cXVpY2t8dm9pZHxpbm5lckhUTUx8Y3JlYXRlfHRhYmxlfGxpbmtzfGF1dG98c21hcnR8dGFifHN0cmlwQnJzfHRhYnN8YmxvZ2dlck1vZGV8Y29sbGFwc2VkfHBsYWlufGdldENvZGVMaW5lc0h0bWx8Y2FwdGlvbnxnZXRNYXRjaGVzSHRtbHxmaW5kTWF0Y2hlc3xmaWd1cmVPdXRMaW5lTnVtYmVyc3xyZW1vdmVOZXN0ZWRNYXRjaGVzfGdldFRpdGxlSHRtbHxicnVzaE5vdEh0bWxTY3JpcHR8c3Vic3RyaW5nfGNyZWF0ZUVsZW1lbnR8SGlnaGxpZ2h0ZXJ8bG9hZHxIdG1sU2NyaXB0fEJydXNofHByZXxleHBhbmR8bXVsdGlsaW5lfG1pbnxDYW58aWdub3JlQ2FzZXxmaW5kfGJsdXJ8ZXh0ZW5kZWR8dG9Mb3dlckNhc2V8YWxpYXNlc3xhZGRFdmVudExpc3RlbmVyfGlubmVyVGV4dHx0ZXh0Q29udGVudHx3YXNufHNlbGVjdHxjcmVhdGVUZXh0Tm9kZXxyZW1vdmVDaGlsZHxvcHRpb258c2FtZXxmcmFtZXx4bWxuc3xkdGR8dHdpY2V8MTk5OXxlcXVpdnxtZXRhfGh0bWxzY3JpcHR8dHJhbnNpdGlvbmFsfDFFM3xleHBlY3RlZHxQVUJMSUN8RE9DVFlQRXxvbnxXM0N8WEhUTUx8VFJ8RU58VHJhbnNpdGlvbmFsfHxjb25maWd1cmVkfHNyY0VsZW1lbnR8T2JqZWN0fGFmdGVyfHJ1bnxkYmxjbGlja3xtYXRjaENoYWlufHZhbHVlT2Z8Y29uc3RydWN0b3J8ZGVmYXVsdHxzd2l0Y2h8Y2xpY2t8cm91bmR8ZXhlY0F0fGZvckh0bWxTY3JpcHR8dG9rZW58Z2lteXxmdW5jdGlvbnN8Z2V0S2V5d29yZHN8MUU2fGVzY2FwZXx3aXRoaW58cmFuZG9tfHNnaXxhbm90aGVyfGZpbmFsbHl8c3VwcGx5fE1TSUV8aWV8dG9VcHBlckNhc2V8Y2F0Y2h8cmV0dXJuVmFsdWV8ZGVmaW5pdGlvbnxldmVudHxib3JkZXJ8aW1zeHxjb25zdHJ1Y3Rpbmd8b25lfEluZmluaXR5fGZyb218d2hlbnxDb250ZW50fGNlbGxwYWRkaW5nfGZsYWdzfGNlbGxzcGFjaW5nfHRyeXx4aHRtbHxUeXBlfHNwYWNlc3wyOTMwNDAyfGhvc3RlZF9idXR0b25faWR8bGFzdEluZGV4T2Z8ZG9uYXRlfGFjdGl2ZXxkZXZlbG9wbWVudHxrZWVwfHRvfHhjbGlja3xfc3xYbWx8cGxlYXNlfGxpa2V8eW91fHBheXBhbHxjZ2l8Y21kfHdlYnNjcnxiaW58aGlnaGxpZ2h0ZWR8c2Nyb2xsYmFyc3xhc3BTY3JpcHRUYWdzfHBocFNjcmlwdFRhZ3N8c29ydHxtYXh8c2NyaXB0U2NyaXB0VGFnc3x0b29sYmFyX2l0ZW18X3xjb21tYW5kfGNvbW1hbmRffG51bWJlcnxnZXRFbGVtZW50QnlJZHxkb3VibGVRdW90ZWRTdHJpbmd8c2luZ2xlTGluZVBlcmxDb21tZW50c3xzaW5nbGVMaW5lQ0NvbW1lbnRzfG11bHRpTGluZUNDb21tZW50c3xzaW5nbGVRdW90ZWRTdHJpbmd8bXVsdGlMaW5lRG91YmxlUXVvdGVkU3RyaW5nfHhtbENvbW1lbnRzfGFsdHxtdWx0aUxpbmVTaW5nbGVRdW90ZWRTdHJpbmd8SWZ8aHR0cHN8MWVtfDAwMHxmZmZ8YmFja2dyb3VuZHw1ZW18eHh8Ym90dG9tfDc1ZW18R29yYmF0Y2hldnxsYXJnZXxzZXJpZnxDREFUQXxjb250aW51ZXx1dGZ8Y2hhcnNldHxjb250ZW50fEFib3V0fGZhbWlseXxzYW5zfEhlbHZldGljYXxBcmlhbHxHZW5ldmF8M2VtfG5vZ3V0dGVyfENvcHlyaWdodHxzeW50YXh8Y2xvc2V8d3JpdGV8MjAwNHxBbGV4fG9wZW58SmF2YVNjcmlwdHxoaWdobGlnaHRlcnxKdWx5fDAyfHJlcGxhY2VDaGlsZHxvZmZzZXR8ODMiLnNwbGl0KCJ8IiksMCx7fSkpOw==]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/styles/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/styles/shCore.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFN5bnRheEhpZ2hsaWdodGVyCiAqIGh0dHA6Ly9hbGV4Z29yYmF0Y2hldi5jb20vU3ludGF4SGlnaGxpZ2h0ZXIKICoKICogU3ludGF4SGlnaGxpZ2h0ZXIgaXMgZG9uYXRpb253YXJlLiBJZiB5b3UgYXJlIHVzaW5nIGl0LCBwbGVhc2UgZG9uYXRlLgogKiBodHRwOi8vYWxleGdvcmJhdGNoZXYuY29tL1N5bnRheEhpZ2hsaWdodGVyL2RvbmF0ZS5odG1sCiAqCiAqIEB2ZXJzaW9uCiAqIDMuMC44MyAoSnVseSAwMiAyMDEwKQogKiAKICogQGNvcHlyaWdodAogKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMCBBbGV4IEdvcmJhdGNoZXYuCiAqCiAqIEBsaWNlbnNlCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgogKi8KLnN5bnRheGhpZ2hsaWdodGVyIGEsCi5zeW50YXhoaWdobGlnaHRlciBkaXYsCi5zeW50YXhoaWdobGlnaHRlciBjb2RlLAouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUsCi5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZCwKLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRyLAouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGJvZHksCi5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0aGVhZCwKLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIGNhcHRpb24sCi5zeW50YXhoaWdobGlnaHRlciB0ZXh0YXJlYSB7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAwIDAgMCAwICFpbXBvcnRhbnQ7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwIDAgMCAwICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50OwogIGJvcmRlcjogMCAhaW1wb3J0YW50OwogIGJvdHRvbTogYXV0byAhaW1wb3J0YW50OwogIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7CiAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgbGVmdDogYXV0byAhaW1wb3J0YW50OwogIGxpbmUtaGVpZ2h0OiAxLjFlbSAhaW1wb3J0YW50OwogIG1hcmdpbjogMCAhaW1wb3J0YW50OwogIG91dGxpbmU6IDAgIWltcG9ydGFudDsKICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OwogIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7CiAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgdG9wOiBhdXRvICFpbXBvcnRhbnQ7CiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICBib3gtc2l6aW5nOiBjb250ZW50LWJveCAhaW1wb3J0YW50OwogIGZvbnQtZmFtaWx5OiAiQ29uc29sYXMiLCAiQml0c3RyZWFtIFZlcmEgU2FucyBNb25vIiwgIkNvdXJpZXIgTmV3IiwgQ291cmllciwgbW9ub3NwYWNlICFpbXBvcnRhbnQ7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50OwogIGZvbnQtc3R5bGU6IG5vcm1hbCAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZTogMWVtICFpbXBvcnRhbnQ7CiAgbWluLWhlaWdodDogaW5oZXJpdCAhaW1wb3J0YW50OwogIG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQoKLnN5bnRheGhpZ2hsaWdodGVyIHsKICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogIG1hcmdpbjogMWVtIDAgMWVtIDAgIWltcG9ydGFudDsKICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKICBvdmVyZmxvdzogYXV0byAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZTogMWVtICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnNvdXJjZSB7CiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAuYm9sZCB7CiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLml0YWxpYyB7CiAgZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5saW5lIHsKICB3aGl0ZS1zcGFjZTogcHJlICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHsKICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciB0YWJsZSBjYXB0aW9uIHsKICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgcGFkZGluZzogLjVlbSAwIDAuNWVtIDFlbSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZC5jb2RlIHsKICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZC5jb2RlIC5jb250YWluZXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZC5jb2RlIC5jb250YWluZXIgdGV4dGFyZWEgewogIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsKICBsZWZ0OiAwICFpbXBvcnRhbnQ7CiAgdG9wOiAwICFpbXBvcnRhbnQ7CiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kOiB3aGl0ZSAhaW1wb3J0YW50OwogIHBhZGRpbmctbGVmdDogMWVtICFpbXBvcnRhbnQ7CiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OwogIHdoaXRlLXNwYWNlOiBwcmUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGQuZ3V0dGVyIC5saW5lIHsKICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OwogIHBhZGRpbmc6IDAgMC41ZW0gMCAxZW0gIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGQuY29kZSAubGluZSB7CiAgcGFkZGluZzogMCAxZW0gIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIubm9ndXR0ZXIgdGQuY29kZSAuY29udGFpbmVyIHRleHRhcmVhLCAuc3ludGF4aGlnaGxpZ2h0ZXIubm9ndXR0ZXIgdGQuY29kZSAubGluZSB7CiAgcGFkZGluZy1sZWZ0OiAwZW0gIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuc2hvdyB7CiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIHRhYmxlIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciB7CiAgcGFkZGluZzogMC4xZW0gMC44ZW0gMGVtIDAuOGVtICFpbXBvcnRhbnQ7CiAgZm9udC1zaXplOiAxZW0gIWltcG9ydGFudDsKICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7CiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIC50b29sYmFyIHNwYW4gewogIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIG1hcmdpbi1yaWdodDogMWVtICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciBzcGFuIGEgewogIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciBzcGFuIGEuZXhwYW5kU291cmNlIHsKICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OwogIHJpZ2h0OiAxcHggIWltcG9ydGFudDsKICB0b3A6IDFweCAhaW1wb3J0YW50OwogIHdpZHRoOiAxMXB4ICFpbXBvcnRhbnQ7CiAgaGVpZ2h0OiAxMXB4ICFpbXBvcnRhbnQ7CiAgZm9udC1zaXplOiAxMHB4ICFpbXBvcnRhbnQ7CiAgei1pbmRleDogMTAgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgc3Bhbi50aXRsZSB7CiAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC50b29sYmFyIGEgewogIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7CiAgcGFkZGluZy10b3A6IDFweCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAudG9vbGJhciBhLmV4cGFuZFNvdXJjZSB7CiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5pZSB7CiAgZm9udC1zaXplOiAuOWVtICFpbXBvcnRhbnQ7CiAgcGFkZGluZzogMXB4IDAgMXB4IDAgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuaWUgLnRvb2xiYXIgewogIGxpbmUtaGVpZ2h0OiA4cHggIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuaWUgLnRvb2xiYXIgYSB7CiAgcGFkZGluZy10b3A6IDBweCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAubGluZS5hbHQxIC5jb250ZW50LAouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuYWx0MiAuY29udGVudCwKLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5saW5lLmhpZ2hsaWdodGVkIC5udW1iZXIsCi5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAubGluZS5oaWdobGlnaHRlZC5hbHQxIC5jb250ZW50LAouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MiAuY29udGVudCB7CiAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAubGluZSAubnVtYmVyIHsKICBjb2xvcjogI2JiYmJiYiAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAubGluZSAuY29udGVudCB7CiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC50b29sYmFyIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIGEgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAucGxhaW4sIC5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAucGxhaW4gYSB7CiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb21tZW50cywgLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb21tZW50cyBhIHsKICBjb2xvcjogIzAwODIwMCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuc3RyaW5nLCAuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLnN0cmluZyBhIHsKICBjb2xvcjogYmx1ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAua2V5d29yZCB7CiAgY29sb3I6ICMwMDY2OTkgIWltcG9ydGFudDsKICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAucHJlcHJvY2Vzc29yIHsKICBjb2xvcjogZ3JheSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAudmFyaWFibGUgewogIGNvbG9yOiAjYWE3NzAwICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC52YWx1ZSB7CiAgY29sb3I6ICMwMDk5MDAgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmZ1bmN0aW9ucyB7CiAgY29sb3I6ICNmZjE0OTMgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmNvbnN0YW50cyB7CiAgY29sb3I6ICMwMDY2Y2MgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLnNjcmlwdCB7CiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmNvbG9yMSwgLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjEgYSB7CiAgY29sb3I6IGdyYXkgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmNvbG9yMiwgLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjIgYSB7CiAgY29sb3I6ICNmZjE0OTMgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmNvbG9yMywgLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjMgYSB7CiAgY29sb3I6IHJlZCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuYnJlYWssIC5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuYnJlYWsgYSB7CiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/styles/shCore.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnN5bnRheGhpZ2hsaWdodGVyIGEsLnN5bnRheGhpZ2hsaWdodGVyIGRpdiwuc3ludGF4aGlnaGxpZ2h0ZXIgY29kZSwuc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUsLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRkLC5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ciwuc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGJvZHksLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRoZWFkLC5zeW50YXhoaWdobGlnaHRlciB0YWJsZSBjYXB0aW9uLC5zeW50YXhoaWdobGlnaHRlciB0ZXh0YXJlYXstbW96LWJvcmRlci1yYWRpdXM6MCAwIDAgMCFpbXBvcnRhbnQ7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjAgMCAwIDAhaW1wb3J0YW50O2JhY2tncm91bmQ6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O2JvdHRvbTphdXRvIWltcG9ydGFudDtmbG9hdDpub25lIWltcG9ydGFudDtoZWlnaHQ6YXV0byFpbXBvcnRhbnQ7bGVmdDphdXRvIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjFlbSFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O291dGxpbmU6MCFpbXBvcnRhbnQ7b3ZlcmZsb3c6dmlzaWJsZSFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDtwb3NpdGlvbjpzdGF0aWMhaW1wb3J0YW50O3JpZ2h0OmF1dG8haW1wb3J0YW50O3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnQ7dG9wOmF1dG8haW1wb3J0YW50O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lIWltcG9ydGFudDt3aWR0aDphdXRvIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94IWltcG9ydGFudDtmb250LWZhbWlseToiQ29uc29sYXMiLCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm8iLCJDb3VyaWVyIE5ldyIsQ291cmllcixtb25vc3BhY2UhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0Om5vcm1hbCFpbXBvcnRhbnQ7Zm9udC1zdHlsZTpub3JtYWwhaW1wb3J0YW50O2ZvbnQtc2l6ZToxZW0haW1wb3J0YW50O21pbi1oZWlnaHQ6aW5oZXJpdCFpbXBvcnRhbnQ7bWluLWhlaWdodDphdXRvIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVye3dpZHRoOjEwMCUhaW1wb3J0YW50O21hcmdpbjoxZW0gMCAxZW0gMCFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O292ZXJmbG93OmF1dG8haW1wb3J0YW50O2ZvbnQtc2l6ZToxZW0haW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIuc291cmNle292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAuYm9sZHtmb250LXdlaWdodDpib2xkIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5pdGFsaWN7Zm9udC1zdHlsZTppdGFsaWMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmV7d2hpdGUtc3BhY2U6cHJlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIHRhYmxle3dpZHRoOjEwMCUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgY2FwdGlvbnt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50O3BhZGRpbmc6LjVlbSAwIC41ZW0gMWVtIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRkLmNvZGV7d2lkdGg6MTAwJSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZC5jb2RlIC5jb250YWluZXJ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGQuY29kZSAuY29udGFpbmVyIHRleHRhcmVhe2JveC1zaXppbmc6Ym9yZGVyLWJveCFpbXBvcnRhbnQ7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50O2xlZnQ6MCFpbXBvcnRhbnQ7dG9wOjAhaW1wb3J0YW50O3dpZHRoOjEwMCUhaW1wb3J0YW50O2hlaWdodDoxMDAlIWltcG9ydGFudDtib3JkZXI6bm9uZSFpbXBvcnRhbnQ7YmFja2dyb3VuZDp3aGl0ZSFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjFlbSFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDt3aGl0ZS1zcGFjZTpwcmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGQuZ3V0dGVyIC5saW5le3RleHQtYWxpZ246cmlnaHQhaW1wb3J0YW50O3BhZGRpbmc6MCAuNWVtIDAgMWVtIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRkLmNvZGUgLmxpbmV7cGFkZGluZzowIDFlbSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5ub2d1dHRlciB0ZC5jb2RlIC5jb250YWluZXIgdGV4dGFyZWEsLnN5bnRheGhpZ2hsaWdodGVyLm5vZ3V0dGVyIHRkLmNvZGUgLmxpbmV7cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIuc2hvd3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCB0YWJsZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIC50b29sYmFye3BhZGRpbmc6LjFlbSAuOGVtIDAgLjhlbSFpbXBvcnRhbnQ7Zm9udC1zaXplOjFlbSFpbXBvcnRhbnQ7cG9zaXRpb246c3RhdGljIWltcG9ydGFudDt3aWR0aDphdXRvIWltcG9ydGFudDtoZWlnaHQ6YXV0byFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgc3BhbntkaXNwbGF5OmlubGluZSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OjFlbSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgc3BhbiBhe3BhZGRpbmc6MCFpbXBvcnRhbnQ7ZGlzcGxheTpub25lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciBzcGFuIGEuZXhwYW5kU291cmNle2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC50b29sYmFye3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDtyaWdodDoxcHghaW1wb3J0YW50O3RvcDoxcHghaW1wb3J0YW50O3dpZHRoOjExcHghaW1wb3J0YW50O2hlaWdodDoxMXB4IWltcG9ydGFudDtmb250LXNpemU6MTBweCFpbXBvcnRhbnQ7ei1pbmRleDoxMCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAudG9vbGJhciBzcGFuLnRpdGxle2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC50b29sYmFyIGF7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7dGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDtwYWRkaW5nLXRvcDoxcHghaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgYS5leHBhbmRTb3VyY2V7ZGlzcGxheTpub25lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmlle2ZvbnQtc2l6ZTouOWVtIWltcG9ydGFudDtwYWRkaW5nOjFweCAwIDFweCAwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmllIC50b29sYmFye2xpbmUtaGVpZ2h0OjhweCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5pZSAudG9vbGJhciBhe3BhZGRpbmctdG9wOjAhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuYWx0MSAuY29udGVudCwuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuYWx0MiAuY29udGVudCwuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuaGlnaGxpZ2h0ZWQgLm51bWJlciwuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MSAuY29udGVudCwuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MiAuY29udGVudHtiYWNrZ3JvdW5kOm5vbmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUgLm51bWJlcntjb2xvcjojYmJiIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5saW5lIC5jb250ZW50e2NvbG9yOmJsYWNrIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC50b29sYmFye2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyBhe3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5wbGFpbiwuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLnBsYWluIGF7Y29sb3I6YmxhY2shaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmNvbW1lbnRzLC5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuY29tbWVudHMgYXtjb2xvcjojMDA4MjAwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5zdHJpbmcsLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5zdHJpbmcgYXtjb2xvcjpibHVlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5rZXl3b3Jke2NvbG9yOiMwNjkhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OmJvbGQhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLnByZXByb2Nlc3Nvcntjb2xvcjpncmF5IWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC52YXJpYWJsZXtjb2xvcjojYTcwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC52YWx1ZXtjb2xvcjojMDkwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5mdW5jdGlvbnN7Y29sb3I6I2ZmMTQ5MyFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuY29uc3RhbnRze2NvbG9yOiMwNmMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLnNjcmlwdHtmb250LXdlaWdodDpib2xkIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjEsLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjEgYXtjb2xvcjpncmF5IWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjIsLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjIgYXtjb2xvcjojZmYxNDkzIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjMsLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjMgYXtjb2xvcjpyZWQhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmJyZWFrLC5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuYnJlYWsgYXtjb2xvcjpibGFjayFpbXBvcnRhbnQ7fQ==]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/styles/shCoreDefault.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFN5bnRheEhpZ2hsaWdodGVyCiAqIGh0dHA6Ly9hbGV4Z29yYmF0Y2hldi5jb20vU3ludGF4SGlnaGxpZ2h0ZXIKICoKICogU3ludGF4SGlnaGxpZ2h0ZXIgaXMgZG9uYXRpb253YXJlLiBJZiB5b3UgYXJlIHVzaW5nIGl0LCBwbGVhc2UgZG9uYXRlLgogKiBodHRwOi8vYWxleGdvcmJhdGNoZXYuY29tL1N5bnRheEhpZ2hsaWdodGVyL2RvbmF0ZS5odG1sCiAqCiAqIEB2ZXJzaW9uCiAqIDMuMC44MyAoSnVseSAwMiAyMDEwKQogKiAKICogQGNvcHlyaWdodAogKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMCBBbGV4IEdvcmJhdGNoZXYuCiAqCiAqIEBsaWNlbnNlCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgogKi8KLnN5bnRheGhpZ2hsaWdodGVyIGEsCi5zeW50YXhoaWdobGlnaHRlciBkaXYsCi5zeW50YXhoaWdobGlnaHRlciBjb2RlLAouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUsCi5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZCwKLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRyLAouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGJvZHksCi5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0aGVhZCwKLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIGNhcHRpb24sCi5zeW50YXhoaWdobGlnaHRlciB0ZXh0YXJlYSB7CiAgLW1vei1ib3JkZXItcmFkaXVzOiAwIDAgMCAwICFpbXBvcnRhbnQ7CiAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwIDAgMCAwICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50OwogIGJvcmRlcjogMCAhaW1wb3J0YW50OwogIGJvdHRvbTogYXV0byAhaW1wb3J0YW50OwogIGZsb2F0OiBub25lICFpbXBvcnRhbnQ7CiAgaGVpZ2h0OiBhdXRvICFpbXBvcnRhbnQ7CiAgbGVmdDogYXV0byAhaW1wb3J0YW50OwogIGxpbmUtaGVpZ2h0OiAxLjFlbSAhaW1wb3J0YW50OwogIG1hcmdpbjogMCAhaW1wb3J0YW50OwogIG91dGxpbmU6IDAgIWltcG9ydGFudDsKICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50OwogIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7CiAgcmlnaHQ6IGF1dG8gIWltcG9ydGFudDsKICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgdG9wOiBhdXRvICFpbXBvcnRhbnQ7CiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lICFpbXBvcnRhbnQ7CiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICBib3gtc2l6aW5nOiBjb250ZW50LWJveCAhaW1wb3J0YW50OwogIGZvbnQtZmFtaWx5OiAiQ29uc29sYXMiLCAiQml0c3RyZWFtIFZlcmEgU2FucyBNb25vIiwgIkNvdXJpZXIgTmV3IiwgQ291cmllciwgbW9ub3NwYWNlICFpbXBvcnRhbnQ7CiAgZm9udC13ZWlnaHQ6IG5vcm1hbCAhaW1wb3J0YW50OwogIGZvbnQtc3R5bGU6IG5vcm1hbCAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZTogMWVtICFpbXBvcnRhbnQ7CiAgbWluLWhlaWdodDogaW5oZXJpdCAhaW1wb3J0YW50OwogIG1pbi1oZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQoKLnN5bnRheGhpZ2hsaWdodGVyIHsKICB3aWR0aDogMTAwJSAhaW1wb3J0YW50OwogIG1hcmdpbjogMWVtIDAgMWVtIDAgIWltcG9ydGFudDsKICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDsKICBvdmVyZmxvdzogYXV0byAhaW1wb3J0YW50OwogIGZvbnQtc2l6ZTogMWVtICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnNvdXJjZSB7CiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAuYm9sZCB7CiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLml0YWxpYyB7CiAgZm9udC1zdHlsZTogaXRhbGljICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5saW5lIHsKICB3aGl0ZS1zcGFjZTogcHJlICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHsKICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciB0YWJsZSBjYXB0aW9uIHsKICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7CiAgcGFkZGluZzogLjVlbSAwIDAuNWVtIDFlbSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZC5jb2RlIHsKICB3aWR0aDogMTAwJSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZC5jb2RlIC5jb250YWluZXIgewogIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZC5jb2RlIC5jb250YWluZXIgdGV4dGFyZWEgewogIGJveC1zaXppbmc6IGJvcmRlci1ib3ggIWltcG9ydGFudDsKICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsKICBsZWZ0OiAwICFpbXBvcnRhbnQ7CiAgdG9wOiAwICFpbXBvcnRhbnQ7CiAgd2lkdGg6IDEwMCUgIWltcG9ydGFudDsKICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kOiB3aGl0ZSAhaW1wb3J0YW50OwogIHBhZGRpbmctbGVmdDogMWVtICFpbXBvcnRhbnQ7CiAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50OwogIHdoaXRlLXNwYWNlOiBwcmUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGQuZ3V0dGVyIC5saW5lIHsKICB0ZXh0LWFsaWduOiByaWdodCAhaW1wb3J0YW50OwogIHBhZGRpbmc6IDAgMC41ZW0gMCAxZW0gIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGQuY29kZSAubGluZSB7CiAgcGFkZGluZzogMCAxZW0gIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIubm9ndXR0ZXIgdGQuY29kZSAuY29udGFpbmVyIHRleHRhcmVhLCAuc3ludGF4aGlnaGxpZ2h0ZXIubm9ndXR0ZXIgdGQuY29kZSAubGluZSB7CiAgcGFkZGluZy1sZWZ0OiAwZW0gIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuc2hvdyB7CiAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIHRhYmxlIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciB7CiAgcGFkZGluZzogMC4xZW0gMC44ZW0gMGVtIDAuOGVtICFpbXBvcnRhbnQ7CiAgZm9udC1zaXplOiAxZW0gIWltcG9ydGFudDsKICBwb3NpdGlvbjogc3RhdGljICFpbXBvcnRhbnQ7CiAgd2lkdGg6IGF1dG8gIWltcG9ydGFudDsKICBoZWlnaHQ6IGF1dG8gIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIC50b29sYmFyIHNwYW4gewogIGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwogIG1hcmdpbi1yaWdodDogMWVtICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciBzcGFuIGEgewogIHBhZGRpbmc6IDAgIWltcG9ydGFudDsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciBzcGFuIGEuZXhwYW5kU291cmNlIHsKICBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgewogIHBvc2l0aW9uOiBhYnNvbHV0ZSAhaW1wb3J0YW50OwogIHJpZ2h0OiAxcHggIWltcG9ydGFudDsKICB0b3A6IDFweCAhaW1wb3J0YW50OwogIHdpZHRoOiAxMXB4ICFpbXBvcnRhbnQ7CiAgaGVpZ2h0OiAxMXB4ICFpbXBvcnRhbnQ7CiAgZm9udC1zaXplOiAxMHB4ICFpbXBvcnRhbnQ7CiAgei1pbmRleDogMTAgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgc3Bhbi50aXRsZSB7CiAgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC50b29sYmFyIGEgewogIGRpc3BsYXk6IGJsb2NrICFpbXBvcnRhbnQ7CiAgdGV4dC1hbGlnbjogY2VudGVyICFpbXBvcnRhbnQ7CiAgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7CiAgcGFkZGluZy10b3A6IDFweCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAudG9vbGJhciBhLmV4cGFuZFNvdXJjZSB7CiAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5pZSB7CiAgZm9udC1zaXplOiAuOWVtICFpbXBvcnRhbnQ7CiAgcGFkZGluZzogMXB4IDAgMXB4IDAgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuaWUgLnRvb2xiYXIgewogIGxpbmUtaGVpZ2h0OiA4cHggIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuaWUgLnRvb2xiYXIgYSB7CiAgcGFkZGluZy10b3A6IDBweCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAubGluZS5hbHQxIC5jb250ZW50LAouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuYWx0MiAuY29udGVudCwKLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5saW5lLmhpZ2hsaWdodGVkIC5udW1iZXIsCi5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAubGluZS5oaWdobGlnaHRlZC5hbHQxIC5jb250ZW50LAouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MiAuY29udGVudCB7CiAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAubGluZSAubnVtYmVyIHsKICBjb2xvcjogI2JiYmJiYiAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAubGluZSAuY29udGVudCB7CiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC50b29sYmFyIHsKICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIGEgewogIHRleHQtZGVjb3JhdGlvbjogbm9uZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAucGxhaW4sIC5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAucGxhaW4gYSB7CiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb21tZW50cywgLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb21tZW50cyBhIHsKICBjb2xvcjogIzAwODIwMCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuc3RyaW5nLCAuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLnN0cmluZyBhIHsKICBjb2xvcjogYmx1ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAua2V5d29yZCB7CiAgY29sb3I6ICMwMDY2OTkgIWltcG9ydGFudDsKICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAucHJlcHJvY2Vzc29yIHsKICBjb2xvcjogZ3JheSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAudmFyaWFibGUgewogIGNvbG9yOiAjYWE3NzAwICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC52YWx1ZSB7CiAgY29sb3I6ICMwMDk5MDAgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmZ1bmN0aW9ucyB7CiAgY29sb3I6ICNmZjE0OTMgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmNvbnN0YW50cyB7CiAgY29sb3I6ICMwMDY2Y2MgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLnNjcmlwdCB7CiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmNvbG9yMSwgLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjEgYSB7CiAgY29sb3I6IGdyYXkgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmNvbG9yMiwgLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjIgYSB7CiAgY29sb3I6ICNmZjE0OTMgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmNvbG9yMywgLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjMgYSB7CiAgY29sb3I6IHJlZCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuYnJlYWssIC5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuYnJlYWsgYSB7CiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cn0KCi5zeW50YXhoaWdobGlnaHRlciB7CiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuYWx0MSB7CiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuYWx0MiB7CiAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MSwgLnN5bnRheGhpZ2hsaWdodGVyIC5saW5lLmhpZ2hsaWdodGVkLmFsdDIgewogIGJhY2tncm91bmQtY29sb3I6ICNlMGUwZTAgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuaGlnaGxpZ2h0ZWQubnVtYmVyIHsKICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgY2FwdGlvbiB7CiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5ndXR0ZXIgewogIGNvbG9yOiAjYWZhZmFmICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5ndXR0ZXIgLmxpbmUgewogIGJvcmRlci1yaWdodDogM3B4IHNvbGlkICM2Y2UyNmMgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmd1dHRlciAubGluZS5oaWdobGlnaHRlZCB7CiAgYmFja2dyb3VuZC1jb2xvcjogIzZjZTI2YyAhaW1wb3J0YW50OwogIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAubGluZSAuY29udGVudCB7CiAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCB7CiAgb3ZlcmZsb3c6IHZpc2libGUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIC50b29sYmFyIHsKICBjb2xvcjogYmx1ZSAhaW1wb3J0YW50OwogIGJhY2tncm91bmQ6IHdoaXRlICFpbXBvcnRhbnQ7CiAgYm9yZGVyOiAxcHggc29saWQgIzZjZTI2YyAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgYSB7CiAgY29sb3I6IGJsdWUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIC50b29sYmFyIGE6aG92ZXIgewogIGNvbG9yOiByZWQgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgewogIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OwogIGJhY2tncm91bmQ6ICM2Y2UyNmMgIWltcG9ydGFudDsKICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgYSB7CiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC50b29sYmFyIGE6aG92ZXIgewogIGNvbG9yOiBibGFjayAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAucGxhaW4sIC5zeW50YXhoaWdobGlnaHRlciAucGxhaW4gYSB7CiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5jb21tZW50cywgLnN5bnRheGhpZ2hsaWdodGVyIC5jb21tZW50cyBhIHsKICBjb2xvcjogIzAwODIwMCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAuc3RyaW5nLCAuc3ludGF4aGlnaGxpZ2h0ZXIgLnN0cmluZyBhIHsKICBjb2xvcjogYmx1ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAua2V5d29yZCB7CiAgY29sb3I6ICMwMDY2OTkgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnByZXByb2Nlc3NvciB7CiAgY29sb3I6IGdyYXkgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnZhcmlhYmxlIHsKICBjb2xvcjogI2FhNzcwMCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAudmFsdWUgewogIGNvbG9yOiAjMDA5OTAwICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5mdW5jdGlvbnMgewogIGNvbG9yOiAjZmYxNDkzICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5jb25zdGFudHMgewogIGNvbG9yOiAjMDA2NmNjICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5zY3JpcHQgewogIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7CiAgY29sb3I6ICMwMDY2OTkgIWltcG9ydGFudDsKICBiYWNrZ3JvdW5kLWNvbG9yOiBub25lICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjEsIC5zeW50YXhoaWdobGlnaHRlciAuY29sb3IxIGEgewogIGNvbG9yOiBncmF5ICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjIsIC5zeW50YXhoaWdobGlnaHRlciAuY29sb3IyIGEgewogIGNvbG9yOiAjZmYxNDkzICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjMsIC5zeW50YXhoaWdobGlnaHRlciAuY29sb3IzIGEgewogIGNvbG9yOiByZWQgIWltcG9ydGFudDsKfQoKLnN5bnRheGhpZ2hsaWdodGVyIC5rZXl3b3JkIHsKICBmb250LXdlaWdodDogYm9sZCAhaW1wb3J0YW50Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/styles/shCoreDefault.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnN5bnRheGhpZ2hsaWdodGVyIGEsLnN5bnRheGhpZ2hsaWdodGVyIGRpdiwuc3ludGF4aGlnaGxpZ2h0ZXIgY29kZSwuc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUsLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRkLC5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ciwuc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGJvZHksLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRoZWFkLC5zeW50YXhoaWdobGlnaHRlciB0YWJsZSBjYXB0aW9uLC5zeW50YXhoaWdobGlnaHRlciB0ZXh0YXJlYXstbW96LWJvcmRlci1yYWRpdXM6MCAwIDAgMCFpbXBvcnRhbnQ7LXdlYmtpdC1ib3JkZXItcmFkaXVzOjAgMCAwIDAhaW1wb3J0YW50O2JhY2tncm91bmQ6bm9uZSFpbXBvcnRhbnQ7Ym9yZGVyOjAhaW1wb3J0YW50O2JvdHRvbTphdXRvIWltcG9ydGFudDtmbG9hdDpub25lIWltcG9ydGFudDtoZWlnaHQ6YXV0byFpbXBvcnRhbnQ7bGVmdDphdXRvIWltcG9ydGFudDtsaW5lLWhlaWdodDoxLjFlbSFpbXBvcnRhbnQ7bWFyZ2luOjAhaW1wb3J0YW50O291dGxpbmU6MCFpbXBvcnRhbnQ7b3ZlcmZsb3c6dmlzaWJsZSFpbXBvcnRhbnQ7cGFkZGluZzowIWltcG9ydGFudDtwb3NpdGlvbjpzdGF0aWMhaW1wb3J0YW50O3JpZ2h0OmF1dG8haW1wb3J0YW50O3RleHQtYWxpZ246bGVmdCFpbXBvcnRhbnQ7dG9wOmF1dG8haW1wb3J0YW50O3ZlcnRpY2FsLWFsaWduOmJhc2VsaW5lIWltcG9ydGFudDt3aWR0aDphdXRvIWltcG9ydGFudDtib3gtc2l6aW5nOmNvbnRlbnQtYm94IWltcG9ydGFudDtmb250LWZhbWlseToiQ29uc29sYXMiLCJCaXRzdHJlYW0gVmVyYSBTYW5zIE1vbm8iLCJDb3VyaWVyIE5ldyIsQ291cmllcixtb25vc3BhY2UhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0Om5vcm1hbCFpbXBvcnRhbnQ7Zm9udC1zdHlsZTpub3JtYWwhaW1wb3J0YW50O2ZvbnQtc2l6ZToxZW0haW1wb3J0YW50O21pbi1oZWlnaHQ6aW5oZXJpdCFpbXBvcnRhbnQ7bWluLWhlaWdodDphdXRvIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVye3dpZHRoOjEwMCUhaW1wb3J0YW50O21hcmdpbjoxZW0gMCAxZW0gMCFpbXBvcnRhbnQ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O292ZXJmbG93OmF1dG8haW1wb3J0YW50O2ZvbnQtc2l6ZToxZW0haW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIuc291cmNle292ZXJmbG93OmhpZGRlbiFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAuYm9sZHtmb250LXdlaWdodDpib2xkIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5pdGFsaWN7Zm9udC1zdHlsZTppdGFsaWMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmV7d2hpdGUtc3BhY2U6cHJlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIHRhYmxle3dpZHRoOjEwMCUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgY2FwdGlvbnt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50O3BhZGRpbmc6LjVlbSAwIC41ZW0gMWVtIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRkLmNvZGV7d2lkdGg6MTAwJSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZC5jb2RlIC5jb250YWluZXJ7cG9zaXRpb246cmVsYXRpdmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGQuY29kZSAuY29udGFpbmVyIHRleHRhcmVhe2JveC1zaXppbmc6Ym9yZGVyLWJveCFpbXBvcnRhbnQ7cG9zaXRpb246YWJzb2x1dGUhaW1wb3J0YW50O2xlZnQ6MCFpbXBvcnRhbnQ7dG9wOjAhaW1wb3J0YW50O3dpZHRoOjEwMCUhaW1wb3J0YW50O2hlaWdodDoxMDAlIWltcG9ydGFudDtib3JkZXI6bm9uZSFpbXBvcnRhbnQ7YmFja2dyb3VuZDp3aGl0ZSFpbXBvcnRhbnQ7cGFkZGluZy1sZWZ0OjFlbSFpbXBvcnRhbnQ7b3ZlcmZsb3c6aGlkZGVuIWltcG9ydGFudDt3aGl0ZS1zcGFjZTpwcmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGQuZ3V0dGVyIC5saW5le3RleHQtYWxpZ246cmlnaHQhaW1wb3J0YW50O3BhZGRpbmc6MCAuNWVtIDAgMWVtIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRkLmNvZGUgLmxpbmV7cGFkZGluZzowIDFlbSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5ub2d1dHRlciB0ZC5jb2RlIC5jb250YWluZXIgdGV4dGFyZWEsLnN5bnRheGhpZ2hsaWdodGVyLm5vZ3V0dGVyIHRkLmNvZGUgLmxpbmV7cGFkZGluZy1sZWZ0OjAhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIuc2hvd3tkaXNwbGF5OmJsb2NrIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCB0YWJsZXtkaXNwbGF5Om5vbmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIC50b29sYmFye3BhZGRpbmc6LjFlbSAuOGVtIDAgLjhlbSFpbXBvcnRhbnQ7Zm9udC1zaXplOjFlbSFpbXBvcnRhbnQ7cG9zaXRpb246c3RhdGljIWltcG9ydGFudDt3aWR0aDphdXRvIWltcG9ydGFudDtoZWlnaHQ6YXV0byFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgc3BhbntkaXNwbGF5OmlubGluZSFpbXBvcnRhbnQ7bWFyZ2luLXJpZ2h0OjFlbSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgc3BhbiBhe3BhZGRpbmc6MCFpbXBvcnRhbnQ7ZGlzcGxheTpub25lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciBzcGFuIGEuZXhwYW5kU291cmNle2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC50b29sYmFye3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDtyaWdodDoxcHghaW1wb3J0YW50O3RvcDoxcHghaW1wb3J0YW50O3dpZHRoOjExcHghaW1wb3J0YW50O2hlaWdodDoxMXB4IWltcG9ydGFudDtmb250LXNpemU6MTBweCFpbXBvcnRhbnQ7ei1pbmRleDoxMCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAudG9vbGJhciBzcGFuLnRpdGxle2Rpc3BsYXk6aW5saW5lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC50b29sYmFyIGF7ZGlzcGxheTpibG9jayFpbXBvcnRhbnQ7dGV4dC1hbGlnbjpjZW50ZXIhaW1wb3J0YW50O3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDtwYWRkaW5nLXRvcDoxcHghaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgYS5leHBhbmRTb3VyY2V7ZGlzcGxheTpub25lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmlle2ZvbnQtc2l6ZTouOWVtIWltcG9ydGFudDtwYWRkaW5nOjFweCAwIDFweCAwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmllIC50b29sYmFye2xpbmUtaGVpZ2h0OjhweCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5pZSAudG9vbGJhciBhe3BhZGRpbmctdG9wOjAhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuYWx0MSAuY29udGVudCwuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuYWx0MiAuY29udGVudCwuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuaGlnaGxpZ2h0ZWQgLm51bWJlciwuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MSAuY29udGVudCwuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MiAuY29udGVudHtiYWNrZ3JvdW5kOm5vbmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmxpbmUgLm51bWJlcntjb2xvcjojYmJiIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5saW5lIC5jb250ZW50e2NvbG9yOmJsYWNrIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC50b29sYmFye2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyBhe3RleHQtZGVjb3JhdGlvbjpub25lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5wbGFpbiwuc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLnBsYWluIGF7Y29sb3I6YmxhY2shaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmNvbW1lbnRzLC5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuY29tbWVudHMgYXtjb2xvcjojMDA4MjAwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5zdHJpbmcsLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5zdHJpbmcgYXtjb2xvcjpibHVlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5rZXl3b3Jke2NvbG9yOiMwNjkhaW1wb3J0YW50O2ZvbnQtd2VpZ2h0OmJvbGQhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLnByZXByb2Nlc3Nvcntjb2xvcjpncmF5IWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC52YXJpYWJsZXtjb2xvcjojYTcwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC52YWx1ZXtjb2xvcjojMDkwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5mdW5jdGlvbnN7Y29sb3I6I2ZmMTQ5MyFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuY29uc3RhbnRze2NvbG9yOiMwNmMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLnNjcmlwdHtmb250LXdlaWdodDpib2xkIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjEsLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjEgYXtjb2xvcjpncmF5IWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjIsLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjIgYXtjb2xvcjojZmYxNDkzIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjMsLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5jb2xvcjMgYXtjb2xvcjpyZWQhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIucHJpbnRpbmcgLmJyZWFrLC5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAuYnJlYWsgYXtjb2xvcjpibGFjayFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlcntiYWNrZ3JvdW5kLWNvbG9yOndoaXRlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5saW5lLmFsdDF7YmFja2dyb3VuZC1jb2xvcjp3aGl0ZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAubGluZS5hbHQye2JhY2tncm91bmQtY29sb3I6d2hpdGUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MSwuc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MntiYWNrZ3JvdW5kLWNvbG9yOiNlMGUwZTAhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuaGlnaGxpZ2h0ZWQubnVtYmVye2NvbG9yOmJsYWNrIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIGNhcHRpb257Y29sb3I6YmxhY2shaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmd1dHRlcntjb2xvcjojYWZhZmFmIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5ndXR0ZXIgLmxpbmV7Ym9yZGVyLXJpZ2h0OjNweCBzb2xpZCAjNmNlMjZjIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5ndXR0ZXIgLmxpbmUuaGlnaGxpZ2h0ZWR7YmFja2dyb3VuZC1jb2xvcjojNmNlMjZjIWltcG9ydGFudDtjb2xvcjp3aGl0ZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5wcmludGluZyAubGluZSAuY29udGVudHtib3JkZXI6bm9uZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWR7b3ZlcmZsb3c6dmlzaWJsZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXJ7Y29sb3I6Ymx1ZSFpbXBvcnRhbnQ7YmFja2dyb3VuZDp3aGl0ZSFpbXBvcnRhbnQ7Ym9yZGVyOjFweCBzb2xpZCAjNmNlMjZjIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciBhe2NvbG9yOmJsdWUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIC50b29sYmFyIGE6aG92ZXJ7Y29sb3I6cmVkIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC50b29sYmFye2NvbG9yOndoaXRlIWltcG9ydGFudDtiYWNrZ3JvdW5kOiM2Y2UyNmMhaW1wb3J0YW50O2JvcmRlcjpub25lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC50b29sYmFyIGF7Y29sb3I6d2hpdGUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgYTpob3Zlcntjb2xvcjpibGFjayFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAucGxhaW4sLnN5bnRheGhpZ2hsaWdodGVyIC5wbGFpbiBhe2NvbG9yOmJsYWNrIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5jb21tZW50cywuc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbW1lbnRzIGF7Y29sb3I6IzAwODIwMCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAuc3RyaW5nLC5zeW50YXhoaWdobGlnaHRlciAuc3RyaW5nIGF7Y29sb3I6Ymx1ZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAua2V5d29yZHtjb2xvcjojMDY5IWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5wcmVwcm9jZXNzb3J7Y29sb3I6Z3JheSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAudmFyaWFibGV7Y29sb3I6I2E3MCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAudmFsdWV7Y29sb3I6IzA5MCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAuZnVuY3Rpb25ze2NvbG9yOiNmZjE0OTMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbnN0YW50c3tjb2xvcjojMDZjIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5zY3JpcHR7Zm9udC13ZWlnaHQ6Ym9sZCFpbXBvcnRhbnQ7Y29sb3I6IzA2OSFpbXBvcnRhbnQ7YmFja2dyb3VuZC1jb2xvcjpub25lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjEsLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjEgYXtjb2xvcjpncmF5IWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjIsLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjIgYXtjb2xvcjojZmYxNDkzIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjMsLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjMgYXtjb2xvcjpyZWQhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmtleXdvcmR7Zm9udC13ZWlnaHQ6Ym9sZCFpbXBvcnRhbnQ7fQ==]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/styles/shThemeDefault.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFN5bnRheEhpZ2hsaWdodGVyCiAqIGh0dHA6Ly9hbGV4Z29yYmF0Y2hldi5jb20vU3ludGF4SGlnaGxpZ2h0ZXIKICoKICogU3ludGF4SGlnaGxpZ2h0ZXIgaXMgZG9uYXRpb253YXJlLiBJZiB5b3UgYXJlIHVzaW5nIGl0LCBwbGVhc2UgZG9uYXRlLgogKiBodHRwOi8vYWxleGdvcmJhdGNoZXYuY29tL1N5bnRheEhpZ2hsaWdodGVyL2RvbmF0ZS5odG1sCiAqCiAqIEB2ZXJzaW9uCiAqIDMuMC44MyAoSnVseSAwMiAyMDEwKQogKiAKICogQGNvcHlyaWdodAogKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMCBBbGV4IEdvcmJhdGNoZXYuCiAqCiAqIEBsaWNlbnNlCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgogKi8KLnN5bnRheGhpZ2hsaWdodGVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAubGluZS5hbHQxIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAubGluZS5hbHQyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAubGluZS5oaWdobGlnaHRlZC5hbHQxLCAuc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MiB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAubGluZS5oaWdobGlnaHRlZC5udW1iZXIgewogIGNvbG9yOiBibGFjayAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciB0YWJsZSBjYXB0aW9uIHsKICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmd1dHRlciB7CiAgY29sb3I6ICNhZmFmYWYgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmd1dHRlciAubGluZSB7CiAgYm9yZGVyLXJpZ2h0OiAzcHggc29saWQgIzZjZTI2YyAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAuZ3V0dGVyIC5saW5lLmhpZ2hsaWdodGVkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmNlMjZjICFpbXBvcnRhbnQ7CiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5saW5lIC5jb250ZW50IHsKICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIHsKICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgewogIGNvbG9yOiBibHVlICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogd2hpdGUgIWltcG9ydGFudDsKICBib3JkZXI6IDFweCBzb2xpZCAjNmNlMjZjICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciBhIHsKICBjb2xvcjogYmx1ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgYTpob3ZlciB7CiAgY29sb3I6IHJlZCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAudG9vbGJhciB7CiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogIzZjZTI2YyAhaW1wb3J0YW50OwogIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAudG9vbGJhciBhIHsKICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgYTpob3ZlciB7CiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5wbGFpbiwgLnN5bnRheGhpZ2hsaWdodGVyIC5wbGFpbiBhIHsKICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbW1lbnRzLCAuc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbW1lbnRzIGEgewogIGNvbG9yOiAjMDA4MjAwICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5zdHJpbmcsIC5zeW50YXhoaWdobGlnaHRlciAuc3RyaW5nIGEgewogIGNvbG9yOiBibHVlICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5rZXl3b3JkIHsKICBjb2xvcjogIzAwNjY5OSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAucHJlcHJvY2Vzc29yIHsKICBjb2xvcjogZ3JheSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAudmFyaWFibGUgewogIGNvbG9yOiAjYWE3NzAwICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC52YWx1ZSB7CiAgY29sb3I6ICMwMDk5MDAgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmZ1bmN0aW9ucyB7CiAgY29sb3I6ICNmZjE0OTMgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbnN0YW50cyB7CiAgY29sb3I6ICMwMDY2Y2MgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnNjcmlwdCB7CiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDsKICBjb2xvcjogIzAwNjY5OSAhaW1wb3J0YW50OwogIGJhY2tncm91bmQtY29sb3I6IG5vbmUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMSwgLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjEgYSB7CiAgY29sb3I6IGdyYXkgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMiwgLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjIgYSB7CiAgY29sb3I6ICNmZjE0OTMgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMywgLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjMgYSB7CiAgY29sb3I6IHJlZCAhaW1wb3J0YW50Owp9Cgouc3ludGF4aGlnaGxpZ2h0ZXIgLmtleXdvcmQgewogIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7Cn0K]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/styles/shThemeDefault.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnN5bnRheGhpZ2hsaWdodGVye2JhY2tncm91bmQtY29sb3I6d2hpdGUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuYWx0MXtiYWNrZ3JvdW5kLWNvbG9yOndoaXRlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5saW5lLmFsdDJ7YmFja2dyb3VuZC1jb2xvcjp3aGl0ZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAubGluZS5oaWdobGlnaHRlZC5hbHQxLC5zeW50YXhoaWdobGlnaHRlciAubGluZS5oaWdobGlnaHRlZC5hbHQye2JhY2tncm91bmQtY29sb3I6I2UwZTBlMCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAubGluZS5oaWdobGlnaHRlZC5udW1iZXJ7Y29sb3I6YmxhY2shaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgY2FwdGlvbntjb2xvcjpibGFjayFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAuZ3V0dGVye2NvbG9yOiNhZmFmYWYhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmd1dHRlciAubGluZXtib3JkZXItcmlnaHQ6M3B4IHNvbGlkICM2Y2UyNmMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmd1dHRlciAubGluZS5oaWdobGlnaHRlZHtiYWNrZ3JvdW5kLWNvbG9yOiM2Y2UyNmMhaW1wb3J0YW50O2NvbG9yOndoaXRlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5saW5lIC5jb250ZW50e2JvcmRlcjpub25lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZHtvdmVyZmxvdzp2aXNpYmxlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhcntjb2xvcjpibHVlIWltcG9ydGFudDtiYWNrZ3JvdW5kOndoaXRlIWltcG9ydGFudDtib3JkZXI6MXB4IHNvbGlkICM2Y2UyNmMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIC50b29sYmFyIGF7Y29sb3I6Ymx1ZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgYTpob3Zlcntjb2xvcjpyZWQhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXJ7Y29sb3I6d2hpdGUhaW1wb3J0YW50O2JhY2tncm91bmQ6IzZjZTI2YyFpbXBvcnRhbnQ7Ym9yZGVyOm5vbmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgYXtjb2xvcjp3aGl0ZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAudG9vbGJhciBhOmhvdmVye2NvbG9yOmJsYWNrIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5wbGFpbiwuc3ludGF4aGlnaGxpZ2h0ZXIgLnBsYWluIGF7Y29sb3I6YmxhY2shaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbW1lbnRzLC5zeW50YXhoaWdobGlnaHRlciAuY29tbWVudHMgYXtjb2xvcjojMDA4MjAwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5zdHJpbmcsLnN5bnRheGhpZ2hsaWdodGVyIC5zdHJpbmcgYXtjb2xvcjpibHVlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5rZXl3b3Jke2NvbG9yOiMwNjkhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnByZXByb2Nlc3Nvcntjb2xvcjpncmF5IWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC52YXJpYWJsZXtjb2xvcjojYTcwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC52YWx1ZXtjb2xvcjojMDkwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5mdW5jdGlvbnN7Y29sb3I6I2ZmMTQ5MyFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAuY29uc3RhbnRze2NvbG9yOiMwNmMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnNjcmlwdHtmb250LXdlaWdodDpib2xkIWltcG9ydGFudDtjb2xvcjojMDY5IWltcG9ydGFudDtiYWNrZ3JvdW5kLWNvbG9yOm5vbmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMSwuc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMSBhe2NvbG9yOmdyYXkhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMiwuc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMiBhe2NvbG9yOiNmZjE0OTMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMywuc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMyBhe2NvbG9yOnJlZCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAua2V5d29yZHtmb250LXdlaWdodDpib2xkIWltcG9ydGFudDt9]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/styles/shThemejqPlot.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqCiAqIFN5bnRheEhpZ2hsaWdodGVyCiAqIGh0dHA6Ly9hbGV4Z29yYmF0Y2hldi5jb20vU3ludGF4SGlnaGxpZ2h0ZXIKICoKICogU3ludGF4SGlnaGxpZ2h0ZXIgaXMgZG9uYXRpb253YXJlLiBJZiB5b3UgYXJlIHVzaW5nIGl0LCBwbGVhc2UgZG9uYXRlLgogKiBodHRwOi8vYWxleGdvcmJhdGNoZXYuY29tL1N5bnRheEhpZ2hsaWdodGVyL2RvbmF0ZS5odG1sCiAqCiAqIEB2ZXJzaW9uCiAqIDMuMC44MyAoSnVseSAwMiAyMDEwKQogKiAKICogQGNvcHlyaWdodAogKiBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxMCBBbGV4IEdvcmJhdGNoZXYuCiAqCiAqIEBsaWNlbnNlCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgogKi8KLnN5bnRheGhpZ2hsaWdodGVyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAubGluZS5hbHQxIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAubGluZS5hbHQyIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAubGluZS5oaWdobGlnaHRlZC5hbHQxLCAuc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuaGlnaGxpZ2h0ZWQuYWx0MiB7CiAgYmFja2dyb3VuZC1jb2xvcjogI2UwZTBlMCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAubGluZS5oaWdobGlnaHRlZC5udW1iZXIgewogIGNvbG9yOiBibGFjayAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciB0YWJsZSBjYXB0aW9uIHsKICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmd1dHRlciB7CiAgY29sb3I6ICNhZmFmYWYgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmd1dHRlciAubGluZSB7CiAgYm9yZGVyLXJpZ2h0OiAzcHggc29saWQgIzZjZTI2YyAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAuZ3V0dGVyIC5saW5lLmhpZ2hsaWdodGVkIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiAjNmNlMjZjICFpbXBvcnRhbnQ7CiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5saW5lIC5jb250ZW50IHsKICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIHsKICBvdmVyZmxvdzogdmlzaWJsZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgewogIGNvbG9yOiBibHVlICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogd2hpdGUgIWltcG9ydGFudDsKICBib3JkZXI6IDFweCBzb2xpZCAjNmNlMjZjICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhciBhIHsKICBjb2xvcjogYmx1ZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgYTpob3ZlciB7CiAgY29sb3I6IHJlZCAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAudG9vbGJhciB7CiAgY29sb3I6IHdoaXRlICFpbXBvcnRhbnQ7CiAgYmFja2dyb3VuZDogIzZjZTI2YyAhaW1wb3J0YW50OwogIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAudG9vbGJhciBhIHsKICBjb2xvcjogd2hpdGUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgYTpob3ZlciB7CiAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5wbGFpbiwgLnN5bnRheGhpZ2hsaWdodGVyIC5wbGFpbiBhIHsKICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbW1lbnRzLCAuc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbW1lbnRzIGEgewogIGNvbG9yOiAjMDA4MjAwICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5zdHJpbmcsIC5zeW50YXhoaWdobGlnaHRlciAuc3RyaW5nIGEgewogIGNvbG9yOiBibHVlICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC5rZXl3b3JkIHsKICBjb2xvcjogIzAwNjY5OSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAucHJlcHJvY2Vzc29yIHsKICBjb2xvcjogZ3JheSAhaW1wb3J0YW50Owp9Ci5zeW50YXhoaWdobGlnaHRlciAudmFyaWFibGUgewogIGNvbG9yOiAjYWE3NzAwICFpbXBvcnRhbnQ7Cn0KLnN5bnRheGhpZ2hsaWdodGVyIC52YWx1ZSB7CiAgY29sb3I6ICMwMDk5MDAgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmZ1bmN0aW9ucyB7CiAgY29sb3I6ICNmZjE0OTMgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbnN0YW50cyB7CiAgY29sb3I6ICMwMDY2Y2MgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLnNjcmlwdCB7CiAgZm9udC13ZWlnaHQ6IGJvbGQgIWltcG9ydGFudDsKICBjb2xvcjogIzAwNjY5OSAhaW1wb3J0YW50OwogIGJhY2tncm91bmQtY29sb3I6IG5vbmUgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMSwgLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjEgYSB7CiAgY29sb3I6IGdyYXkgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMiwgLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjIgYSB7CiAgY29sb3I6ICNmZjE0OTMgIWltcG9ydGFudDsKfQouc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMywgLnN5bnRheGhpZ2hsaWdodGVyIC5jb2xvcjMgYSB7CiAgY29sb3I6IHJlZCAhaW1wb3J0YW50Owp9Cgouc3ludGF4aGlnaGxpZ2h0ZXIgLmtleXdvcmQgewogIGZvbnQtd2VpZ2h0OiBib2xkICFpbXBvcnRhbnQ7Cn0KCi5zeW50YXhoaWdobGlnaHRlciBhLAouc3ludGF4aGlnaGxpZ2h0ZXIgZGl2LAouc3ludGF4aGlnaGxpZ2h0ZXIgY29kZSwKLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlLAouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGQsCi5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ciwKLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRib2R5LAouc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGhlYWQsCi5zeW50YXhoaWdobGlnaHRlciB0YWJsZSBjYXB0aW9uLAouc3ludGF4aGlnaGxpZ2h0ZXIgdGV4dGFyZWEgewogIGxpbmUtaGVpZ2h0OiAxLjNlbSAhaW1wb3J0YW50Owp9CgpkaXYuc3ludGF4aGlnaGxpZ2h0ZXIgewogIGZvbnQtc2l6ZTogMC44NWVtICFpbXBvcnRhbnQ7Cn0KCmRpdi5pbmNsdWRlIGRpdi5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ZC5jb2RlIC5saW5lIHsKICBtYXJnaW4tdG9wOiAwLjFlbSAhaW1wb3J0YW50Owp9Cg==]]></data>
	</file>
	<file>
	  <filename>/jqplot/syntaxhighlighter/styles/shThemejqPlot.min.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LnN5bnRheGhpZ2hsaWdodGVye2JhY2tncm91bmQtY29sb3I6dHJhbnNwYXJlbnQhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmxpbmUuYWx0MXtiYWNrZ3JvdW5kLWNvbG9yOnRyYW5zcGFyZW50IWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5saW5lLmFsdDJ7YmFja2dyb3VuZC1jb2xvcjp0cmFuc3BhcmVudCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAubGluZS5oaWdobGlnaHRlZC5hbHQxLC5zeW50YXhoaWdobGlnaHRlciAubGluZS5oaWdobGlnaHRlZC5hbHQye2JhY2tncm91bmQtY29sb3I6I2UwZTBlMCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAubGluZS5oaWdobGlnaHRlZC5udW1iZXJ7Y29sb3I6YmxhY2shaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgY2FwdGlvbntjb2xvcjpibGFjayFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAuZ3V0dGVye2NvbG9yOiNhZmFmYWYhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmd1dHRlciAubGluZXtib3JkZXItcmlnaHQ6M3B4IHNvbGlkICM2Y2UyNmMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmd1dHRlciAubGluZS5oaWdobGlnaHRlZHtiYWNrZ3JvdW5kLWNvbG9yOiM2Y2UyNmMhaW1wb3J0YW50O2NvbG9yOndoaXRlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLnByaW50aW5nIC5saW5lIC5jb250ZW50e2JvcmRlcjpub25lIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZHtvdmVyZmxvdzp2aXNpYmxlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyLmNvbGxhcHNlZCAudG9vbGJhcntjb2xvcjpibHVlIWltcG9ydGFudDtiYWNrZ3JvdW5kOndoaXRlIWltcG9ydGFudDtib3JkZXI6MXB4IHNvbGlkICM2Y2UyNmMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIuY29sbGFwc2VkIC50b29sYmFyIGF7Y29sb3I6Ymx1ZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlci5jb2xsYXBzZWQgLnRvb2xiYXIgYTpob3Zlcntjb2xvcjpyZWQhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXJ7Y29sb3I6d2hpdGUhaW1wb3J0YW50O2JhY2tncm91bmQ6IzZjZTI2YyFpbXBvcnRhbnQ7Ym9yZGVyOm5vbmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnRvb2xiYXIgYXtjb2xvcjp3aGl0ZSFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAudG9vbGJhciBhOmhvdmVye2NvbG9yOmJsYWNrIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5wbGFpbiwuc3ludGF4aGlnaGxpZ2h0ZXIgLnBsYWluIGF7Y29sb3I6YmxhY2shaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbW1lbnRzLC5zeW50YXhoaWdobGlnaHRlciAuY29tbWVudHMgYXtjb2xvcjojMDA4MjAwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5zdHJpbmcsLnN5bnRheGhpZ2hsaWdodGVyIC5zdHJpbmcgYXtjb2xvcjpibHVlIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5rZXl3b3Jke2NvbG9yOiMwNjkhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnByZXByb2Nlc3Nvcntjb2xvcjpncmF5IWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC52YXJpYWJsZXtjb2xvcjojYTcwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC52YWx1ZXtjb2xvcjojMDkwIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIC5mdW5jdGlvbnN7Y29sb3I6I2ZmMTQ5MyFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAuY29uc3RhbnRze2NvbG9yOiMwNmMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLnNjcmlwdHtmb250LXdlaWdodDpib2xkIWltcG9ydGFudDtjb2xvcjojMDY5IWltcG9ydGFudDtiYWNrZ3JvdW5kLWNvbG9yOm5vbmUhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMSwuc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMSBhe2NvbG9yOmdyYXkhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMiwuc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMiBhe2NvbG9yOiNmZjE0OTMhaW1wb3J0YW50O30uc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMywuc3ludGF4aGlnaGxpZ2h0ZXIgLmNvbG9yMyBhe2NvbG9yOnJlZCFpbXBvcnRhbnQ7fS5zeW50YXhoaWdobGlnaHRlciAua2V5d29yZHtmb250LXdlaWdodDpib2xkIWltcG9ydGFudDt9LnN5bnRheGhpZ2hsaWdodGVyIGEsLnN5bnRheGhpZ2hsaWdodGVyIGRpdiwuc3ludGF4aGlnaGxpZ2h0ZXIgY29kZSwuc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUsLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRkLC5zeW50YXhoaWdobGlnaHRlciB0YWJsZSB0ciwuc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGJvZHksLnN5bnRheGhpZ2hsaWdodGVyIHRhYmxlIHRoZWFkLC5zeW50YXhoaWdobGlnaHRlciB0YWJsZSBjYXB0aW9uLC5zeW50YXhoaWdobGlnaHRlciB0ZXh0YXJlYXtsaW5lLWhlaWdodDoxLjNlbSFpbXBvcnRhbnQ7fWRpdi5zeW50YXhoaWdobGlnaHRlcntmb250LXNpemU6Ljg1ZW0haW1wb3J0YW50O31kaXYuaW5jbHVkZSBkaXYuc3ludGF4aGlnaGxpZ2h0ZXIgdGFibGUgdGQuY29kZSAubGluZXttYXJnaW4tdG9wOi4xZW0haW1wb3J0YW50O30=]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAAIJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAMAAAABAAAQAHNwYmxvYgAAANxicAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAADAGUAeAB0YndzcGJsb2IAAADcYnBsaXN0MDDYAQIDBAUGBwgJCQsJCw4PC11TaG93U3RhdHVzQmFyW1Nob3dQYXRoYmFyW1Nob3dUb29sYmFyW1Nob3dUYWJWaWV3XxAUQ29udGFpbmVyU2hvd1NpZGViYXJcV2luZG93Qm91bmRzXFNpZGViYXJXaWR0aFtTaG93U2lkZWJhcggICQgJXxAYe3szNTEsIDYzMX0sIHs3NzAsIDQ2MH19EIEJCBknMz9LYm98iImKi4yNqKoAAAAAAAABAQAAAAAAAAARAAAAAAAAAAAAAAAAAAAAqwAAAAMAZQB4AHRkc2NsYm9vbAEAAAADAGUAeAB0dlNybmxvbmcAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAACCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAIAAAAGAAAAAAAAAAAQAAAIAAAAABAAABAAAAAAAAAAABAAAEAAAAAAIAAAgAAAAYAAAAAAAAAAABAAAgAAAAAAEAAEAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RhYmxlIFRlbm5pcyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1Bvc3QgSW5zdGFsbCBNZXNzYWdlLCBlLmcuLCBCZSBzdXJlIHRvIHNldCAiVXNlIFNrZWxldG9ucyIgcGVybWlzc2lvbnMgdG8gdXNlIHRoaXMgbW9kdWxlISc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnUG9zdCBVbmluc3RhbGwgTWVzc2FnZSwgZS5nLiwgIkN1cnNlcyEgRm9pbGVkIEFnYWluISInOwokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ1JlYWxseT8gWW91XCdyZSBzdXJlIHlvdSB3YW50IHRvIHVuaW5zdGFsbCB0aGlzIGZpbmUgbW9kdWxlPyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBVbmluc3RhbGxlZC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHZlcnNpb24gJXMgaW5zdGFsbGVkLic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdNb2R1bGUgcHJlZmVyZW5jZXMgdXBkYXRlZC4nOwokbGFuZ1snc3VibWl0J10gPSAnRW52b3llcic7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc3MgRGVuaWVkLiBQbGVhc2UgY2hlY2sgeW91ciBwZXJtaXNzaW9ucy4nOwokbGFuZ1snZXJyb3InXSA9ICdFcnJvciEnOwokbGFuZ1sncmVzdWx0c2ZvdW5kdGV4dCddID0gJ3JlY29yZHMgZm91bmQnOwokbGFuZ1snbGlua192aWV3J10gPSAnVmlldyBSZWNvcmQnOwokbGFuZ1snZWRpdCddID0gJ0VkaXQgUmVjb3JkJzsKJGxhbmdbJ3RpdGxlX251bV9yZWNvcmRzJ10gPSAnJXMgcmVjb3JkcyBmb3VuZC4nOwokbGFuZ1snYWRkX3JlY29yZCddID0gJ0FkZCBhIFJlY29yZCc7CiRsYW5nWydzYXZlZF9yZWNvcmQnXSA9ICdBZGQgYSBSZWNvcmQnOwokbGFuZ1snYWRkZWRfcmVjb3JkJ10gPSAnQWRkZWQgcmVjb3JkLic7CiRsYW5nWyd1cGRhdGVkX3JlY29yZCddID0gJ1JlY29yZCB1cGRhdGVkLic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsZSB1cGdyYWRlZCB0byB2ZXJzaW9uICVzLic7CiRsYW5nWyd0aXRsZV9hbGxvd19hZGQnXSA9ICdVc2VycyBtYXkgYWRkIHJlY29yZHM/JzsKJGxhbmdbJ3RpdGxlX2FsbG93X2FkZF9oZWxwJ10gPSAnQ2xpY2sgaGVyZSB0byBhbGxvdyB1c2VycyB0byBhZGQgcmVjb3Jkcy4nOwokbGFuZ1sndGl0bGVfbW9kX3ByZWZzJ10gPSAnTW9kdWxlIFByZWZlcmVuY2VzJzsKJGxhbmdbJ3RpdGxlX2dlbmVyYWwnXSA9ICdHZW5lcmFsIEluZm8nOwokbGFuZ1sndGl0bGVfZGVzY3JpcHRpb24nXSA9ICdEZXNjcmlwdGlvbic7CiRsYW5nWyd0aXRsZV9leHBsYW5hdGlvbiddID0gJ0xvbmcgRGVzY3JpcHRpb24nOwokbGFuZ1sndGl0bGVfbW9kX2FkbWluJ10gPSAnTW9kdWxlIEFkbWluIFBhbmVsJzsKJGxhbmdbJ2Rhc2hfcmVjb3JkX2NvdW50J10gPSAnVGhpcyBtb2R1bGUgaGFuZGxlcyAlcyByZWNvcmRzJzsKJGxhbmdbJ2FsZXJ0X25vX3JlY29yZHMnXSA9ICdUaGVyZSBoYXZlIG5vdCBiZWVuIGFueSByZWNvcmRzIGFkZGVkIGluIHRoZSBTa2VsZXRvbiBtb2R1bGUhJzsKJGxhbmdbJ2hlbHBfc2tlbGV0b25faWQnXSA9ICdJbnRlcm5hbGx5IGlkZW50aWZpZXIgZm9yIHNlbGVjdGluZyByZWNvcmRzJzsKJGxhbmdbJ2hlbHBfY29kZV9jb21wZXQnXSA9ICdDZSBjb2RlIHNlIHRyb3V2ZSBkYW5zIGxlcyByw6lzdWx0YXRzIEZGVFQnOwokbGFuZ1snaGVscF9kZXNjcmlwdGlvbiddID0gJ0ludGVybmFsIHBhcmFtZXRlciB1c2VkIHRvIHBhc3MgZGVzY3JpcHRpb24gaW5mbyB3aGVuIGNyZWF0aW5nIG9yIGVkaXRpbmcgYSByZWNvcmQnOwokbGFuZ1snaGVscF9leHBsYW5hdGlvbiddID0gJ0ludGVybmFsIHBhcmFtZXRlciB1c2VkIHRvIHBhc3MgZXhwbGFuYXRpb24gaW5mbyB3aGVuIGNyZWF0aW5nIG9yIGVkaXRpbmcgYSByZWNvcmQnOwokbGFuZ1snaGVscF9tb2R1bGVfbWVzc2FnZSddID0gJ0ludGVybmFsbHkgdXNlZCBwYXJhbWV0ZXIgZm9yIHBhc3NpbmcgbWVzc2FnZXMgdG8gdXNlcic7CiRsYW5nWydldmVudF9pbmZvX09uU2tlbGV0b25QcmVmZXJlbmNlQ2hhbmdlJ10gPSAnQW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gIHRoZSBwcmVmZXJlbmNlcyB0byB0aGUgU2tlbGV0b24gTW9kdWxlIGdldCBjaGFuZ2VkJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25Ta2VsZXRvblByZWZlcmVuY2VDaGFuZ2UnXSA9ICc8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiB0aGUgcHJlZmVyZW5jZXMgdG8gdGhlIFNrZWxldG9uIE1vZHVsZSBnZXQgY2hhbmdlZDwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT48ZW0+YWxsb3dfYWRkPC9lbT4gLSBUaGUgbmV3IHNldHRpbmcgb2YgdGhlICJBbGxvdyBBZGQiIHByZWZlcmVuY2U7IGJvb2xlYW48L2xpPgo8L3VsPiAKJzsKCiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0NlIG1vZHVsZSBjYWxjdWxlIHZvcyBwb2ludHMgRkZUVC4nOwokbGFuZ1snd2VsY29tZV90ZXh0J10gPSAnPHA+QmllbnZlbnVlIGRhbnMgbGUgbW9kdWxlIFBpbmc8L3A+JzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4KPGxpPlZlcnNpb24gMC4xYmV0YTMsIE5vdiAyMDE0IFNjIEFtw6lsaW9yYXRpb25zIGR1IGZyb250LW9mZmljZSBldCBkw6lib2d1YWdlIGR1IGJhY2s8L2xpPgo8dWw+CiAgIDxsaT5NaXNlIG5lIHBsYWNlIGR1IGZyb250LW9mZmljZS48L2xpPgogICA8bGk+QW3DqWxpb3JhdGlvbnMgZHUgYmFjay1vZmZpY2UgZXQgY29ycmVjdGlvbnMgZGUgYnVncy48L2xpPgo8L3VsPic7CiRsYW5nWydoZWxwJ10gPSAnPGgzPlF1ZSBmYWl0IGNlIG1vZHVsZSA/PC9oMz4KPHA+Q2UgbW9kdWxlIHLDqWN1cMOocmUgbGVzIHLDqXN1bHRhdHMgZGUgdm90cmUgY2x1YiBldCByw6lhbGlzZSBkZXMgdHJhaXRlbWVudHMgYWZpbiBkZSBsZXMgZGlzcG9zZXIgc3VyIHZvdHJlIHNpdGUgaW50ZXJuZXQuPC9wPgo8aDM+Q29tbWVudCBsXCd1dGlsaXNlciA/PC9oMz4KPHA+TGUgdGFnIHBhciBkw6lmYXV0IGVzdCBjZWx1aS1jaSB7Y21zX21vZHVsZSBtb2R1bGU9XCdQaW5nXCd9PC9wPgo8aDM+U3VwcG9ydDwvaDM+Cjx1bD4KPGxpPlBvdXIgb2J0ZW5pciBsYSBkZXJuacOocmUgdmVyc2lvbiBvZmZpY2llbGxlLCBGQVFzLCBvdSBwb3VyIHNpZ25hbGVyIHVuIGJ1ZywgZmFpcmUgdW5lIGRlbWFuZGUgZFwnYW3DqWxpb3JhdGlvbnMsIG1lcmNpIGRlIGNvbnN1bHRlciBsYSBmb3JnZSBkdSBtb2R1bGUgw6AgY2V0dGUgYWRyZXNzZSA6IAo8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3BpbmcvIj5QaW5nPC9hPi48L2xpPgo8L3VsPgo8cD5DZSBtb2R1bGUgZXN0IGZvdXJuaSBzb3VzIGxpY2VuY2UgR1BMIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi5Qb3VyIHV0aWxpc2VyIGxlIGxvZ2ljaWVsLCB2b3VzIGRldmV6IGVuICBhY2NlcHRlciBsZXMgdGVybWVzPC9wPgoKPGgzPkNvcHlyaWdodCBldCBMaWNlbmNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDE0LCBDbGF1ZGUgU2lvaGFuIDxhIGhyZWY9Im1haWx0bzpjbGF1ZGVAYWdpLXdlYmNvbnNlaWwuZnIiPmNsYXVkZUBhZ2ktd2ViY29uc2VpbC5mcjwvYT4uIFRvdXMgZHJvaXRzIHLDqXNlcnbDqXMuPC9wPgonOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAAAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAYAAAAAAAAAABAAAAgAAAAAEAAAEAAAAAAQAAAgAAAAABAAAEAAAAAAIAAAgAAAAYAAAAAAAAAAABAAAgAAAAAAEAAEAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/fr_FR.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2FjdGl2ZSddID0gJ0FjdGlmJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjYyZlYWN1dGU7cyBJbnRlcmRpdC4gViZlYWN1dGU7cmlmaWVyIHZvcyBwZXJtaXNzaW9ucy4nOwokbGFuZ1snYWRkX3VzZXInXSA9ICdBam91dGVyIHVuIGpvdWV1cihldXNlKSc7CiRsYW5nWydhZGQtbWFudWFsbHknXSA9ICdBam91dGVyIG1hbnVlbGxlbWVudCc7CiRsYW5nWydhZGQnXSA9ICJBam91dGVyIjsKJGxhbmdbJ2FkcmVzc2UnXSA9ICdBZHJlc3NlJzsKJGxhbmdbJ2FsbHNlYXNvbnMnXSA9ICdUb3V0ZXMgbGVzIHNhaXNvbnMnOwokbGFuZ1snYWxsc3RhdHVzJ10gPSAiVG91cyBsZXMgc3RhdHV0cyI7CiRsYW5nWydhbGxkYXRlcyddID0gIlRvdXRlcyBsZXMgZGF0ZXMiOwokbGFuZ1snYWxsZXF1aXBlcyddID0gJ1RvdXRlcyBsZXMgZXF1aXBlcyc7CiRsYW5nWydhbGx0b3VycyddID0gJ1RvdXMnOwokbGFuZ1snYWxscG91bGVzJ10gPSAnVG91dGVzIGxlcyBwb3VsZXMnOwokbGFuZ1snYWxsbW9udGhzJ10gPSAnVG91cyBsZXMgbW9pcyc7CiRsYW5nWydhbGxjb21wZXQnXSA9ICdUb3V0ZXMgbGVzIGNvbXDDqXRpdGlvbnMnOwokbGFuZ1snYWRkX2NvbXBldCddID0gJ0Fqb3V0ZXIgdW5lIG5vdXZlbGxlIGNvbXDDqXRpdGlvbic7CiRsYW5nWydhZGRfdHlwZV9jb21wZXQnXSA9ICdBam91dGVyIHVuZSBub3V2ZWxsZSBjb21ww6l0aXRpb24nOwokbGFuZ1snYWRkbWFudWFsbHknXSA9ICJham91dGVyIG1hbnVlbGxlbWVudCI7CiRsYW5nWydhbGxwbGF5ZXJzJ10gPSAnVG91cyBsZXMgam91ZXVycyc7CiRsYW5nWydhZGRfY29udGFjdCddID0gJ0Fqb3V0ZXIgdW4gY29udGFjdCc7CiRsYW5nWydhZGRuZXdzaGVldCddID0gJ0Fqb3V0ZXIgdW5lIHJlbmNvbnRyZSc7CiRsYW5nWydhZHZlcnNhaXJlJ10gPSAnQWR2ZXJzYWlyZSc7CiRsYW5nWydhZHZlcnNhaXJlcyddID0gJ0FkdmVyc2FpcmVzJzsKJGxhbmdbJ2FyZXlvdXN1cmVfZGVsZXRlbXVsdGlwbGUnXSA9ICdFdGVzIHZvdXMgY2VydGFpbiBkZSBzdXBwcmltZXIgdG91dGUgbGEgc8OpbGVjdGlvbiA/JzsKJGxhbmdbJ2FyZXlvdXN1cmVfYWN0aW9ubXVsdGlwbGUnXSA9ICdFdGVzIHZvdXMgY2VydGFpbiBkZSBmYWlyZSBjZXR0ZSBhY3Rpb24gcG91ciB0b3V0ZSBsYSBzw6lsZWN0aW9uID8nOwokbGFuZ1snYXBwbHlfdG9fc2VsZWN0aW9uJ10gPSAnQXBwbGlxdWVyIMOgIGxhIHPDqWxlY3Rpb24gPyc7CiRsYW5nWydhZGRfcmVjb3JkJ10gPSAnQWpvdXRlciB1biBlbnJlZ2lzdHJlbWVudCc7CiRsYW5nWydhZGRlZF9yZWNvcmQnXSA9ICdFbnJlZ2lzdHJlbWVudCBham91dCZlYWN1dGU7JzsKJGxhbmdbJ2FsZXJ0X25vX3JlY29yZHMnXSA9ICdJbCBuJiMwMzk7eSBhIHBhcyBldSBkJiMwMzk7ZW5yZWdpc3RyZW1lbnRzIGFqb3V0JmVhY3V0ZTtzIGRhbnMgbGUgbW9kdWxlISc7CiRsYW5nWydiYWNrJ10gPSAnUmV0b3VyJzsKJGxhbmdbJ2NyZWF0ZV9jb250YWN0J10gPSAnQWpvdXRlciB1biBjb250YWN0JzsKJGxhbmdbJ2NyZWF0ZV9uZXdfdXNlciddID0gJ0Nyw6llciB1biBub3V2ZWwgdXRpbGlzYXRldXInOwokbGFuZ1snY3JlYXRlX25ld19saXN0J10gPSAnQ3ImZWFjdXRlO2VyIHVuZSBub3V2ZWxsZSBsaXN0ZSc7CiRsYW5nWydjb21tdW5lJ10gPSAnY29tbXVuZSc7CiRsYW5nWydjYW5jZWwnXSA9ICdBbm51bGVyJzsKJGxhbmdbJ2NvbmZpcm1fZW1haWwnXSA9ICdDb25maXJtZXogdm90cmUgZW1haWwnOwokbGFuZ1snZGFzaF9yZWNvcmRfY291bnQnXSA9ICdDZSBtb2R1bGUgZyZlZ3JhdmU7cmUgJXMgZW5yZWdpc3RyZW1lbnRzJzsKJGxhbmdbJ2RvX25vdF9kaXNwbGF5J10gPSAnTmUgcGx1cyBhZmZpY2hlciBzdXIgbGUgc2l0ZSc7CiRsYW5nWydkaXNwbGF5X29uX2Zyb250ZW5kJ10gPSAnQWZmaWNoZXIgc3VyIGxlIHNpdGUnOwokbGFuZ1snZGVsZXRlJ10gPSAnU3VwcHJpbWVyJzsKJGxhbmdbJ2RlbGV0ZV9zZWxlY3RlZCddID0gJ1N1cHByaW1lciBsYSBzw6lsZWN0aW9uJzsKJGxhbmdbJ2RlbGV0ZV9yZXN1bHRfY29uZmlybSddID0gJ1ZvdWxlei12b3VzIHZyYWltZW50IHN1cHByaW1lciBjZSByw6lzdWx0YXQgPyBUb3VzIGxlcyByw6lzdWx0YXRzIGluZGl2aWR1ZWxzIGxpw6lzIHNlcm9udCDDqWdhbGVtZW50IHN1cHByaW3DqXMnOwokbGFuZ1snZGVsZXRlX2NvbmZpcm0nXSA9ICdWb3VsZXogdm91cyBzdXBwcmltZXIgY2V0IGVucmVnaXN0cmVtZW50ID8nOwokbGFuZ1snZGVsZXRlX3VzZXJfY29uZmlybSddID0gJ1ZvdWxlei12b3VzIHZyYWltZW50IHN1cHByaW1lciBjZXQgdXRpbGlzYXRldXIgPyc7CiRsYW5nWydkb3dubG9hZF9wb3VsZV9yZXN1bHRzJ10gPSAnVMOpbMOpY2hhcmdlciBsZXMgcsOpc3VsdGF0cyBkZSBsYSBwb3VsZSc7CiRsYW5nWydkb3dubG9hZF9hbGxfcG91bGVfcmVzdWx0cyddID0gJ1TDqWzDqWNoYXJnZXIgbGVzIHLDqXN1bHRhdHMgZGUgdG91dGVzIGxlcyBwb3VsZXMnOwokbGFuZ1snZHVwbGljYXRlJ10gPSAnRHVwbGlxdWVyJzsKJGxhbmdbJ2VkaXQnXSA9ICdFZGl0ZXIgbCYjMDM5O2VucmVnaXN0cmVtZW50JzsKJGxhbmdbJ2VuYWJsZSddID0gJ2FjdGl2ZXInOwokbGFuZ1snZW1haWwnXSA9ICdlbWFpbCc7CiRsYW5nWydlcXVpcGUnXSA9ICdFcXVpcGUnOwokbGFuZ1snZXJyb3InXSA9ICdFcnJldXIgISc7CiRsYW5nWydlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnXSA9ICdQYXJhbWV0cmVzIG1hbnF1YW50cyc7CiRsYW5nWydlcnJvcl9pbnZhbGlkbnVtYmVyJ10gPSAnRXJyZXVyIDogcGFzIGRlIG51bSZlYWN1dGU7cm8gZm91cm5pICEnOwokbGFuZ1snZXJyb3JfbnVtYmVyZXhpc3RzJ10gPSAnQ2UgbnVtJmVhY3V0ZTtybyBleGlzdGUgZCZlYWN1dGU7aiZhZ3JhdmU7JzsKJGxhbmdbJ2ZpbHRyZXMnXSA9ICdBcHBsaXF1ZXIgbGUgZmlsdHJlJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1Rlbm5pcyBkZSB0YWJsZSc7CiRsYW5nWydpZCddID0gJ0lkJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsZSBpbnN0YWxsJmVhY3V0ZTsgZW4gdmVyc2lvbiAlcy4nOwokbGFuZ1snam91ZXVyJ10gPSAnSm91ZXVyJzsKJGxhbmdbJ2xvbmdfaW1wb3J0J10gPSAiQ2V0dGUgb3DDqXJhdGlvbiBwZXV0IGR1cmVyIHBsdXNpZXVycyBtaW51dGVzICEiOwokbGFuZ1snbGlua192aWV3J10gPSAnVm9pciBsJiMwMzk7ZW5yZWdpc3RyZW1lbnQnOwokbGFuZ1snbGlzdHMnXSA9ICdMaXN0ZXMnOwokbGFuZ1snbGlzdHNmb3VuZHRleHQnXSA9ICdsaXN0ZShzKSB0cm91diZlYWN1dGU7ZShzKSc7CiRsYW5nWydtZXNzYWdlcyddID0gJ21lc3NhZ2VzJzsKJGxhbmdbJ21pc3Npbmdfc2l0X21lbnMnXSA9ICdTaXR1YXRpb24gbWVuc3VlbGxlIG1hbnF1YW50ZSc7CiRsYW5nWydtaXNzaW5nX3BhcmFtZXRlcnMnXSA9ICdQYXJhbcOodHJlKHMpIG1hbnF1YW50KHMpJzsKJGxhbmdbJ25hbWUnXSA9ICdOb20nOwokbGFuZ1snbmVlZHBlcm1pc3Npb24nXSA9ICdWb3VzIG5cJ2F2ZXogcGFzIGxhIHBlcm1pc3Npb24gZFwnYWNjw6lkZXInOwokbGFuZ1snbm8nXSA9ICdOb24nOwokbGFuZ1snbm9fZmFtaWx5X25hbWUnXSA9ICdWb3VzIGRldmV6IHNhaXNpciB2b3RyZSBub20gZGUgZmFtaWxsZSc7CiRsYW5nWydub19hZHJlc3NlJ10gPSAnVm91cyBkZXZleiBzYWlzaXIgdm90cmUgYWRyZXNzZSc7CiRsYW5nWydvcHRpb25zJ10gPSAnT3B0aW9ucyc7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdQciZlYWN1dGU7ZmVyZW5jZXMgZHUgbW9kdWxlIG1pc2UgJmFncmF2ZTsgam91ci4nOwokbGFuZ1sncG9pbnRzJ10gPSAnUG9pbnRzJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnTWVzc2FnZSBwb3N0LWluc3RhbGxhdGlvbi4gY29uc2VpbCA6IHNveWV6IHN1ciBkJiMwMzk7YXR0cmlidWVyIGxlcyBwZXJtaXNzaW9ucyAmcXVvdFBpbmcmcXVvdDsgcG91ciB1dGlsaXNlciBjZSBtb2R1bGUgISc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnTWVzc2FnZSBwb3N0LWQmZWFjdXRlO3NpbnN0YWxsYXRpb24sIGUuZy4sICZxdW90O0N1cnNlcyEgRm9pbGVkIEFnYWluISZxdW90Oyc7CiRsYW5nWydwcm9tcHRfYWR2ZXJzYWlyZXMnXSA9ICdBZHZlcnNhaXJlcyc7CiRsYW5nWydwcm9tcHRfZXF1aXBlJ10gPSAnRXF1aXBlJzsKJGxhbmdbJ3Byb21wdF9qb3VldXInXSA9ICdOb20gZHUgam91ZXVyJzsKJGxhbmdbJ3Byb21wdF90eXBlQ29tcGV0aXRpb24nXSA9ICdUeXBlIGRlIGNvbXDDqXRpdGlvbic7CiRsYW5nWydwcm9tcHRfY29tcGV0aXRpb25GcmllbmRseU5hbWUnXSA9ICdOb20gZGUgbGEgY29tcMOpdGl0aW9uJzsKJGxhbmdbJ3Byb21wdF9kYXRlQ29tcGV0J10gPSAnRGF0ZSBkZSBsYSBjb21ww6l0aXRpb24nOwokbGFuZ1sncHJvbXB0X25vbWJyZVJlbmNvbnRyZXMnXSA9ICdOYiBkZSBwYXJ0aWVzIGRpc3B1dMOpZXMnOwokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ1wzMTJ0ZXMtdm91cyBzXDM3M3IgZGUgdm91bG9pciBkXDM1MXNpbnN0YWxsZXIgY2Ugc3VwZXIgbW9kdWxlID8nOwokbGFuZ1sncmVzdWx0c2ZvdW5kJ10gPSAncsOpc3VsdGF0KHMpJzsKJGxhbmdbJ3Jlc3VsdHNmb3VuZHRleHQnXSA9ICdyJmVhY3V0ZTtzdWx0YXQocykgdHJvdXYmZWFjdXRlOyhzKSc7CiRsYW5nWydyZXN1bHRmb3VuZHRleHQnXSA9ICdyJmVhY3V0ZTtzdWx0YXQocykgdHJvdXYmZWFjdXRlOyhzKSc7CiRsYW5nWydyZXRyaWV2ZWFsbHBhcnRpZXNzcGlkJ10gPSAnUsOpY3Vww6lyZXIgdG91dGVzIGxlcyBwYXJ0aWVzIFNwaWQnOwokbGFuZ1sncmV0cmlldmVfcGFydGllcyddID0gJ1BhcnRpZXMgRkZUVCc7CiRsYW5nWydyZXRyaWV2ZV9wYXJ0aWVzX3NwaWQnXSA9ICdQYXJ0aWVzIFNQSUQnOwokbGFuZ1sncmV0cmlldmVfc2l0X21lbnMnXSA9ICdTaXQgbWVuc3VlbGxlJzsKJGxhbmdbJ3JldHJpZXZlX3VzZXJzJ10gPSAiUsOpY3Vww6lyZXIgbGVzIGpvdWV1cnMiOwokbGFuZ1sncmV0cmlldmVfdXNlcnNfY29uZmlybSddID0gJ0NvbmZpcm1leiB2b3RyZSBkZW1hbmRlICEnOwokbGFuZ1snc2F2ZWRfcmVjb3JkJ10gPSAnRW5yZWdpc3RyZW1lbnRzIE9rJzsKJGxhbmdbJ3Njb3JlX2VxdWlwZSddID0gJ1Njb3JlIEVxdWlwZSc7CiRsYW5nWydzY29yZV9hZHYnXSA9ICdTY29yZSBBZHZlcnNhaXJlcyc7CiRsYW5nWydzaGVldHNmb3VuZHRleHQnXSA9ICdyZW5jb250cmUocykgdHJvdXYmZWFjdXRlO2UocyknOwokbGFuZ1snc3VibWl0J10gPSAnU2F1dmVnYXJkZXInOwokbGFuZ1snc3VibWl0YXNuZXcnXSA9ICdBam91dGVyIGNvbW1lIG5vdXZlYXUnOwokbGFuZ1sndGl0bGVfYWxsb3dfYWRkJ10gPSAnTGVzIHV0aWxpc2F0ZXVycyBwZXV2ZW50IGFqb3V0ZXIgZGVzIGVucmVnaXN0cmVtZW50cyA/JzsKJGxhbmdbJ3RpdGxlX2FsbG93X2FkZF9oZWxwJ10gPSAnQ2xpcXVleiBpY2kgcG91ciBwZXJtZXR0cmUgYXV4IHV0aWxpc2F0ZXVycyBkJiMwMzk7YWpvdXRlciBkZXMgZW5yZWdpc3RyZW1lbnRzLic7CiRsYW5nWyd0aXRsZV9jbHViX251bWJlciddID0gIk51bcOpcm8gZGUgdm90cmUgY2x1YiI7CiRsYW5nWyd0aXRsZV9tb2RfcHJlZnMnXSA9ICdQciZlYWN1dGU7ZmVyZW5jZXMgZHUgbW9kdWxlJzsKJGxhbmdbJ3RpdGxlX2dlbmVyYWwnXSA9ICdJbmZvcm1hdGlvbiBnJmVhY3V0ZTtuJmVhY3V0ZTtyYWxlcyc7CiRsYW5nWyd0aXRsZV9kZXNjcmlwdGlvbiddID0gJ0Rlc2NyaXB0aW9uICc7CiRsYW5nWyd0aXRsZV9leHBsYW5hdGlvbiddID0gJ0xvbmd1ZSBEZXNjcmlwdGlvbic7CiRsYW5nWyd0aXRsZV9tb2RfYWRtaW4nXSA9ICdQYW5uZWF1IGQmIzAzOTthZG1pbmlzdHJhdGlvbiBkdSBtb2R1bGUnOwokbGFuZ1sndGl0bGVfbnVtX3JlY29yZHMnXSA9ICclcyBlbnJlZ2lzdHJlbWVudHMgdHJvdXYmZWFjdXRlO3MuJzsKJGxhbmdbJ3RvdXInXSA9ICdUb3VyJzsKJGxhbmdbJ3VuYWJsZSddID0gJ0TDqXNhY3RpdmVyJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTGUgbW9kdWxlIGEgJmVhY3V0ZTt0JmVhY3V0ZTsgZCZlYWN1dGU7c2luc3RhbGwmZWFjdXRlOyBhdmVjIHN1Y2MmZWdyYXZlO3MuJzsKJGxhbmdbJ3VwZGF0ZWRfcmVjb3JkJ10gPSAnRW5yZWdpc3RyZW1lbnQgbWlzICZhZ3JhdmU7IGpvdXIuJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnbGUgbW9kdWxlIGEgJmVhY3V0ZTt0JmVhY3V0ZTsgbWlzICZhZ3JhdmU7IGpvdXIgJmFncmF2ZTsgbGEgJXMuJzsKJGxhbmdbJ3VwbG9hZF9yZXN1bHQnXSA9ICdUw6lsw6ljaGFyZ2VyIGxlIHLDqXN1bHRhdCc7CiRsYW5nWyd1c2VycyddID0gJ3V0aWxpc2F0ZXVycyc7CiRsYW5nWyd1c2Vyc2ZvdW5kdGV4dCddID0gJ3V0aWxpc2F0ZXVyKHMpIHRyb3V2JmVhY3V0ZTsocyknOwokbGFuZ1sndXNlcl9kZWxldGVkJ10gPSAnVXRpbGlzYXRldXIgc3VwcHJpbcOpJzsKJGxhbmdbJ3VzZXJfdXBkYXRlZCddID0gJ1V0aWxpc2F0ZXVyIG1vZGlmaSZlYWN1dGU7JzsKJGxhbmdbJ3ZpY19kZWYnXSA9ICdWaWN0b2lyZSBvdSBkw6lmYWl0ZSc7CiRsYW5nWyd2aWV3X2NvbnRhY3RzJ10gPSAnVm9pciBsZXMgY29udGFjdHMnOwokbGFuZ1sneWVzJ10gPSAnT3VpJzsKJGxhbmdbJ2hlbHBfdG91ciddID0gJ1V0aWxleiBsZSBOwrAgZGUgam91cm7DqWUgcG91ciBvYnRlbmlyIHNlcyByw6lzdWx0YXRzIHVuaXF1ZW1lbnQnOwokbGFuZ1snaGVscF9saWJlbGxlX2VxdWlwZSddID0gJ0V4IDogUlAgRk9VRVNOQU5UIDEnOwokbGFuZ1snaGVscF9saWJkaXZpc2lvbiddID0gJ0V4IDpOYXRpb25hbGUgMSBNZXNzaWV1cnMgUG91bGUgQyc7CiRsYW5nWydoZWxwX2ZyaWVuZGx5bmFtZSddID0gJ0NlIG5vbSBzZXJ2aXJhIMOgIGluZGVudGlmaWVyIHBsdXMgZmFjaWxlbWVudCB2b3Mgw6lxdWlwZXMgZXggOiBOYXRpb25hbGUgMSBNZXNzaWV1cnMgUG91bGUgQyBkZXZpZW50IE4xIG91IE4xKEMpJzsKJGxhbmdbJ2hlbHBfaWRkaXYnXSA9ICdDb25zdWx0ZXogbFwnYWlkZSBzdXIgbGUgbW9kdWxlJzsKJGxhbmdbJ2hlbHBfaWRwb3VsZSddID0gJ0NvbnN1bHRleiBsXCdhaWRlIHN1ciBsZSBtb2R1bGUnOwovLyRsYW5nWycnXSA9ICcnOwovLyRsYW5nWycnXSA9ICcnOwovLyRsYW5nWycnXSA9ICcnOwokbGFuZ1snaGVscF90eXBlX2NvbXBldCddID0gJ0ZpbHRyZXogbGVzIHLDqXN1bHRhdHMgZW4gcHLDqWNpc2FudCBsZSB0eXBlIGRlIGNvbXDDqXRpdGlvbic7CiRsYW5nWydoZWxwX2RhdGVfZGVidXQnXSA9ICdVdGlsaXNleiBsYSBkYXRlIGRlIGTDqWJ1dCBkZSBjb21ww6l0aXRpb24gYXUgZm9ybWF0IChhYWFhLW1tLWpqKSc7CiRsYW5nWydoZWxwX2RhdGVfZmluJ10gPSAnVXRpbGlzZXogbGEgZGF0ZSBkZSBmaW4gYXZlYyBsYSBkYXRlIGRlIGTDqWJ1dCBhdSBtw6ptZSBmb3JtYXQnOwokbGFuZ1snaGVscF9saW1pdCddID0gJ1BvdXIgbGltaXRlciBsZSBuYiDDoCB4IHLDqXN1bHRhdHMnOwokbGFuZ1snaGVscF9jb2RlX2NvbXBldCddID0gJ0NlIGNvZGUgc2UgdHJvdXZlIGRhbnMgbGVzIHLDqXN1bHRhdHMgRkZUVCc7CiRsYW5nWydoZWxwX2NvZWZmaWNpZW50J10gPSAnVXRpbGlzZXogbGUgcG9pbnQgKC4pIGV0IG5vbiBsYSB2aXJndWxlIGV4IDEuMjUgZXQgbm9uIHBhcyAxLDI1JzsKJGxhbmdbJ2hlbHBfZGVzY3JpcHRpb24nXSA9ICdQYXJhbSZlZ3JhdmU7dHJlcyBpbnRlcm5lcyB1dGlsaXMmZWFjdXRlO3MgbG9ycyBkZSBsYSBjciZlYWN1dGU7YXRpb24gZCYjMDM5O3VuIG5vdXZlbCBlbnJlZ2lzdHJlbWVudCc7CiRsYW5nWydoZWxwX2V4cGxhbmF0aW9uJ10gPSAnUGFyYW0mZWdyYXZlO3RyZSBpbnRlcm5lIHV0aWxpcyZlYWN1dGU7IHBvdXIgcGFzc2VyIGRlcyBpbmZvcm1hdGlvbnMgZXhwbGljYXRpdmVzIGxvcnNxdWUgbCYjMDM5O29uIGNyJmVhY3V0ZTsmZWFjdXRlOyBvdSBsJiMwMzk7b24gbWV0ICZhZ3JhdmU7IGpvdXIgdW4gZW5yZWdpc3RyZW1lbnQnOwokbGFuZ1snaGVscF9tb2R1bGVfbWVzc2FnZSddID0gJ1BhcmFtJmVncmF2ZTt0cmUgaW50ZXJuZSB1dGlsaXMmZWFjdXRlOyBwb3VyIGxhIHRyYW5zbWlzc2lvbiBkZXMgbWVzc2FnZXMgJmFncmF2ZTsgbCYjMDM5O3V0aWxpc2F0ZXVyJzsKJGxhbmdbJ2V2ZW50X2luZm9fT25Ta2VsZXRvblByZWZlcmVuY2VDaGFuZ2UnXSA9ICdVbiAmZWFjdXRlO3YmZWFjdXRlO25lbWVudCBnJmVhY3V0ZTtuJmVhY3V0ZTtyJmVhY3V0ZTsgbG9yc3F1ZSBsZXMgcHImZWFjdXRlO2YmZWFjdXRlO3JlbmNlcyBkdSBtb2R1bGUgIHNvbnQgY2hhbmcmZWFjdXRlO2VzJzsKJGxhbmdbJ2V2ZW50X2hlbHBfT25Ta2VsZXRvblByZWZlcmVuY2VDaGFuZ2UnXSA9ICc8cD5BbiBldmVudCBnZW5lcmF0ZWQgd2hlbiB0aGUgcHJlZmVyZW5jZXMgdG8gdGhlIFNrZWxldG9uIE1vZHVsZSBnZXQgY2hhbmdlZDwvcD4KPGg0PlBhcmFtZXRlcnM8L2g0Pgo8dWw+CjxsaT48ZW0+YWxsb3dfYWRkPC9lbT4gLSBUaGUgbmV3IHNldHRpbmcgb2YgdGhlICZxdW90O0FsbG93IEFkZCZxdW90OyBwcmVmZXJlbmNlOyBib29sZWFuPC9saT4KPC91bD4gCic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0VudHJleiB0b3VzIHZvcyByw6lzdWx0YXRzIGRlIHBpbmcgcG91ciBhbmFseXNlIHJhcGlkZS4nOwokbGFuZ1snd2VsY29tZV90ZXh0J10gPSAnPHA+QmllbnZlbnVlIGRhbnMgbGUgbW9kdWxlIGRlIGdlc3Rpb24gZGVzIHLDqXN1bHRhdHMgZGUgdm90cmUgY2x1YiBkZSBwaW5nPC9wPic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+CjxsaT5CZXRhIDMKPHVsPgo8bGk+QWpvdXRzIGRlIGxhIHByZW1pw6hyZSB2ZXJzaW9uIGR1IGZyb250LW9mZmljZTwvbGk+CjxsaT5Bam91dHMgZGUgcGFyYW3DqHRyZXMgcG91ciByZXF1ZXRlciBwbHVzIGZhY2lsZW1lbnQgc3VyIGxlIGZyb250LW9mZmljZTwvbGk+CjxsaT5Qb3NzaWJpbGl0w6kgZFwnYWpvdXRlciBtYW51ZWxsZW1lbnQgZGVzIHNpdHVhdGlvbnMgbWVuc3VlbGxlcyBhbnTDqXJpZXVyZXM8L2xpPgo8bGk+UsOpY3Vww6lyYXRpb24gZHUgc3BpZCBkZXB1aXMgbGVzIHLDqXN1bHRhdHMgZGVzIMOpcXVpcGVzPC9saT4KPGxpPkNyw6lhdGlvbiBkXCd1bmUgc2l0dWF0aW9uIG1lbnN1ZWxsZSAicHJvdmlzb2lyZSIgcmVjYWxjdWzDqWUgw6AgY2hhcXVlIG5vdXZlYXUgcsOpc3VsdGF0PC9saT4KPGxpPlBvc3NpYmlsaXTDqSBkZSB2w6lyaWZpZXIgbGUgc3BpZCBhdmVjIGxlcyBwYXJ0aWVzIEZGVFQgcXVhbmQgZGlzcG9uaWJsZXM8L2xpPgo8bGk+QWpvdXQsIHN1cHByZXNzaW9uLCBtb2RpZmljYXRpb25zIGRlIHR5cGUgZGUgY29tcMOpdGl0aW9uczwvbGk+CjxsaT5Sw6ljdXDDqXJhdGlvbiAiZW4gbWFzc2UiIGR1IHNwaWQsIGRlcyBwYXJ0aWVzIEZGVFQgZXQgZGVzIHNpdHVhdGlvbnMgbWVuc3VlbGxlczwvbGk+CjxsaT5Sw6ljdXDDqXJhdGlvbiBkZSB0b3VzIGxlcyBtYXRjaHMgcG91ciByZW1wbGlyIGxlIGNhbGVuZHJpZXI8L2xpPgo8bGk+Q29ycmVjdGlvbnMgZGUgYm9ndWVzIGV0IGFtw6lsaW9yYXRpb25zIGRpdmVyc2VzPC9saT4KPC91bD4KPGxpPlZlcnNpb24gMC4yPC9saT4KPHVsPjxsaT5JbXBsw6ltZW50YXRpb24gZGVzIHTDomNoZXMgcHNldWRvLWNyb24gKHNjcmlwdHMgc2VtaS1hdXRvbWF0aXF1ZXMpPC9saT4KPC91bD4KPGxpPlZlcnNpb24gMC4xYmV0YTIKPHVsPjxsaT5NaXNlIMOgIGpvdXIgZXNzZW50aWVsbGVtZW50IGNvcnJlY3RpdmU8L2xpPgo8L3VsPjwvbGk+CjxsaT5WZXJzaW9uIDAuMWJldGExIEFnaQo8dWw+CjxsaT5QcmVtacOocmUgcmVsZWFzZSBkdSBtb2R1bGUuPC9saT4KPC91bD4nOwokbGFuZ1snaGVscCddID0gJzxoMz5RdWUgZmFpdCBjZSBtb2R1bGUgPzwvaDM+CjxwPkNlIG1vZHVsZSB2b3VzIHBlcm1ldCBkZSByw6ljdXDDqXJlciBsZXMgcsOpc3VsdGF0cyBkZSB0b3V0ZXMgbGVzIGNvbXDDqXRpdGlvbnMgZGUgdm90cmUgY2x1YiBldCBkZSB2b3Mgam91ZXVycyBldCBwcm9jw6hkZSDDoCBkZXMgY2FsY3VscyBkZXMgcGVyZm9ybWFuY2VzIChWb2lyIGZldWlsbGUgZGUgcm91dGUgcGx1cyBiYXMpLjwvcD4KPGgzPkNvbW1lbnQgbFwndXRpbGlzZXIgPzwvaDM+CjxoMj5QcmVtacOocmUgdXRpbGlzYXRpb248L2gyPgo8b2w+PGxpPlJlbnNlaWduZXogbFwnb25nbGV0ICJDb25maWd1cmF0aW9uIiBhdmVjIGxlIE7CsCBkZSB2b3RyZSBjbHViLCBsYSBzYWlzb24sIGxhIHBoYXNlIGVuIGNvdXJzIGFpbnNpIHF1ZSBsZSBub20gZ8OpbsOpcmlxdWUgZGUgdm9zIMOpcXVpcGVzIChsZSBwbHVzIHNvdXZlbnQgbGUgbm9tIGRlIHZvdHJlIHZpbGxlKTwvbGk+CjxsaT5EYW5zIGxcJ29uZ2xldCAiRXF1aXBlcyIgLCBjbGlxdWV6IHN1ciBsZXMgbGllbnMgIlLDqWN1cMOpcmF0aW9uIGRlcyDDqXF1aXBlcyIuPGJyIC8+ClVuIGxpZW4gcG91ciBsZXMgw6lxdWlwZXMgZHUgY2hhbXBpb25uYXQgZGUgRnJhbmNlIHBhciDDqXF1aXBlcywgbFwnYXV0cmUgcG91ciBsZXMgYXV0cmVzIGNvbXDDqXRpdGlvbnMgZXQgaW5kaXF1ZXogbGUgdHlwZSBkZSBjb21ww6l0aXRpb25zIGF1eHF1ZWxsZXMgZWxsZXMgcGFydGljaXBlbnQuCjxiciAvPjxiciAvPlBvdXIgdW5lIHLDqWN1cMOpcmF0aW9uIG1hbnVlbGxlLCByZW5kZXotdm91cyBzdXIgbGUgc2l0ZSBGRlRULmNvbSBzdXIgbGEgcGFnZSBkZSByw6lzdWx0YXRzIGRlIHZvcyDDqXF1aXBlcy4gRW4gbWV0dGFudCB2b3RyZSBzb3VyaXMgc3VyIGxhIHBvdWxlIHZvdXMgb2J0aWVuZHJleiBlbiBiYXMgw6AgZ2F1Y2hlIGxcJ3VybCBjb21wbGV0ZSBzb3VzIGNldHRlIGZvcm1lIDogd3d3LmZmdHQuY29tL3Nwb3J0aWYvY2hwdF9lcXVpcGUvY2hwX2Rpdi5waHA/b3JnYW5pc21lX3BlcmU9WDEmY3hfcG91bGU9WDImRDE9WDMuPGJyIC8+WDEgcmVwcsOpc2VudGUgbFwnb3JnYW5pc21lIGRvbnQgZMOpcGVuZCBsYSBjb21ww6l0aXRpb24gKDEwMDAwMSBwb3VyIG5hdGlvbmFsLCAxMCArIG7CsCBkZSBsYSBsaWd1ZSBleCA6IDEwMDcgcG91ciBsYSBicmV0YWduZSBwb3VyIGxlIG5pdmVhdSByw6lnaW9uYWwgZXQgZMOpcGFydGVtZW50YWwgZXggMjkgcG91ciBsZSBmaW5pc3TDqHJlKTxiciAvPlgyIHBvdXIgbGUgIE7CsCBkZSBwb3VsZSBldCBYMyBwb3VyIGxlIE7CsCBkZSBkaXZpc2lvbiA8L2xpPgo8bGk+RGFucyBsXCdvbmdsZXQgIkpvdWV1cnMiLCByw6ljdXDDqXJleiBsZXMgam91ZXVycyBncsOiY2UgYXUgbGllbiBkdSBtw6ptZSBub20uIETDqXNhY3RpdmV6IGxlcyBqb3VldXJzIG5lIGZhaXNhbnQgcGFzIGxcJ29iamV0IGRcJ3VuZSBzaXR1YXRpb24gbWVuc3VlbGxlPC9saT4KPGxpPkRhbnMgbFwnb25nbGV0ICJTaXR1YXRpb24gbWVuc3VlbGxlIiByw6ljdXDDqXJleiBsYSBzaXR1YXRpb24gbWVuc3VlbGxlIGR1IG1vaXMgZW4gY291cnMgKHZvaXIgZMOpdGFpbHMgY2ktZGVzc291cykuPC9saT48L29sPgo8aDM+U3BpZDwvaDM+CjxwPlLDqWN1cMOpcmV6IGxlcyByw6lzdWx0YXRzIGR1IHNwaWQgZGUgZGlmZsOpcmVudGVzIG1hbmnDqHJlcy4gTGEgcsOpY3Vww6lyYXRpb24gZGUgdG91cyBsZXMgcsOpc3VsdGF0cyBlbiB1bmUgc2V1bGUgZm9pcyBwZXV0IHNcJ2F2w6lyZXIgdHLDqHMgbG9uZ3VlIChwbHVzaWV1cnMgbWludXRlcykuPGJyIC8+CkNvbnNlaWwgOiBOZSB0w6lsw6ljaGFyZ2V6IHBhcyBsZXMgcsOpc3VsdGF0cyBkXCd1biBqb3VldXIgc2kgc2Egc2l0dWF0aW9uIG1lbnN1ZWxsZSBkdSBtb2lzIGNvbmNlcm7DqSBuXCdlc3QgcGFzIHJlbnNlaWduw6llLjwvcD4KPGgzPlNpdHVhdGlvbiBtZW5zdWVsbGU8L2gzPgo8cD5Mb3JzIGR1IHByZW1pZXIgaW1wb3J0IGRlcyBqb3VldXJzLCBsYSBzaXR1YXRpb24gbWVuc3VlbGxlIHBhciBkw6lmYXV0IGVzdCBKYW52aWVyIDIwMDAuIExvcnNxdWUgbFwnYWNjw6hzIGVzdCBsaWJyZSwgdm91cyBwb3V2ZXogcsOpY3Vww6lyZXIgbGEgc2l0dWF0aW9uIG1lbnN1ZWxsZSBlbiBjb3VycyBkZSB0b3VzIGxlcyBqb3VldXJzIGRlIHZvdHJlIGNsdWI8L3A+CjxwPkFUVEVOVElPTiAhISBMYSBGRlRUIGxpbWl0ZSBsYSBzaXR1YXRpb24gbWVuc3VlbGxlIMOgIDEwMCBhY2PDqHMgcGFyIGpvdXIgZXQgcGFyIElQLjwvcD4KPGgyPkltcGzDqW1lbnRhdGlvbiBzdXIgbGVzIHBhZ2VzIGRlIHZvdHJlIHNpdGU8L2gyPgo8cD5VdGlsaXNleiBsYSBiYWxpc2Ugc3VpdmFudGUgOiB7Y21zX21vZHVsZSBtb2R1bGU9XCdQaW5nXCd9LiBDZWNpIGFmZmljaGVyYSBwYXIgZMOpZmF1dCBsZXMgcsOpc3VsdGF0cyBkZXMgw6lxdWlwZXMuPC9wPgo8aDQ+UGFyYW3DqHRyZXMgZGlzcG9uaWJsZXMgOiA8L2g0Pgo8dWw+CjxsaT5hY3Rpb24gLSBJbmRpcXVlIGxcJ2FjdGlvbiBhIGFmZmljaGVyCjx1bD4KPGxpPnBhci1lcXVpcGVzIC0gSW5kaXF1ZSB0b3V0ZXMgbGVzIGNvbXDDqXRpdGlvbnMgcGFyIMOpcXVpcGVzIGV4IDp7Y21zX21vZHVsZSBtb2R1bGU9XCdQaW5nXCcgYWN0aW9uPVwncGFyLWVxdWlwZXNcJ308L2xpPgo8bGk+aW5kaXZpZHVlbGxlcyAtIGxlcyBjb21ww6l0aXRpb25zIGluZGl2aWR1ZWxsZXM8L2xpPgo8bGk+c2l0X21lbnMgLSBwb3VyIGxhIHNpdHVhdGlvbiBtZW5zdWVsbGUgb2ZmaWNpZWxsZTwvbGk+CjxsaT5zaXRfbWVuc19wcm92aXNvaXJlIC0gcG91ciB1bmUgc2l0dWF0aW9uIG1lbnN1ZWxsZSByw6nDqXZhbHXDqWUgYXByw6hzIGNoYXF1ZSBjb21ww6l0aXRpb24gcsOpY3Vww6lyw6llLjwvbGk+CjwvdWw+CjwvbGk+CjxsaT4idHlwZV9jb21wZXQiIC0gbGUgdHlwZSBkZSBjb21ww6l0aXRpb24gw6AgYWZmaWNoZXIgZXggOiB7Y21zX21vZHVsZSBtb2R1bGU9XCdQaW5nXCcgYWN0aW9uPVwncGFyLWVxdWlwZXNcJyB0eXBlX2NvbXBldD1cJzFcJ30gKGRpc3BvbmlibGVzIGRzIGxcJ29uZ2xldCAiQ29tcMOpdGl0aW9ucyIpPC9saT4KPGxpPiJ0b3VyIiAtIEluZGlxdWUgbGUgTsKwIGRlIGpvdXJuw6llIG9mZmljaWVsIGV4IDoge2Ntc19tb2R1bGUgbW9kdWxlPVwnUGluZ1wnIGFjdGlvbj1cJ3Bhci1lcXVpcGVzXCcgdHlwZV9jb21wZXQ9XCcxXCcgdG91cj1cJzFcJ308L2xpPjwvdWw+CjxoMz5GZXVpbGxlIGRlIHJvdXRlPC9oMz4KPHVsPgo8bGk+VW4gZnJvbnQtb2ZmaWNlIGF2ZWMgZGVzIGdyYXBoaXF1ZXMgZHluYW1pcXVlcy48L2xpPgo8bGk+RGVzIHRlbXBsYXRlcyBwb3VyIHZvdXMgYWlkZXIgw6AgYsOidGlyIHZvcyBwcm9wcmVzIGdhYmFyaXRzIGRlcHVpcyBjZSBtb2R1bGU8L2xpPgo8L3VsPgo8aDM+U2NyaXB0cyBhdXRvbWF0aXF1ZXMgKHBzZXVkby1jcm9uKTwvaDM+CjxwPkxlcyB0w6JjaGVzIHBzZXVkby1jcm9uIHNcJ8OpeMOpY3V0ZW50IGF1dG9tYXRpcXVlbWVudCBlbiBmb25jdGlvbiBkZXMgdmlzaXRlcyBzdXIgdm90cmUgc2l0ZShpbnRlcm5hdXRlcyBldCBhZG1pbnMgZHUgc2l0ZSk8YnIgLz4KRGFucyBsYSB2ZXJzaW9uIDAuMiwgbGVzIHNjcmlwdHMgYXV0b21hdGlxdWVzIGNvbmNlcm5lbnQgbGVzIHLDqXN1bHRhdHMgZHUgU3BpZCBldCBkZSBsYSBGRlRULiBJbHMgc1wnw6l4w6ljdXRlbnQgdG91cyBsZXMgam91cnMgKHNpIHZpc2l0ZXMgZHUgc2l0ZSkuIElscyByw6ljdXDDqHJlbnQgbGVzIHLDqXN1bHRhdHMgZGUgeCBqb3VldXJzIGRvbnQgbGEgbWlzZSDDoCBqb3VyIGRhdGUgZGUgeCBqb3Vycy4gSWwgZXN0IGRvbmMgcG9zc2libGUgZGUgY29uZmlndXJlciBjZXMgeC48L3A+PHA+QXR0ZW50aW9uLCBkZXMgdGVtcHMgZGUgbGF0ZW5jZSBwZXV2ZW50IMOqdHJlIG9ic2VydsOpcyBkw7tzIMOgIGxcJ8OpeMOpY3V0aW9uIGRlcyBzY3JpcHRzLjwvcD4KPGgzPlN1cHBvcnQ8L2gzPgo8dWw+CjxsaT5Qb3VyIG9idGVuaXIgbGEgZGVybmnDqHJlIHZlcnNpb24gZW4gY291cnMgKGF2YW50IHJlbGVhc2Ugb2ZmaWNpZWxsZSkKPGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3Npb2hhbi9waW5nIj5WZXJzaW9uIGdpdGh1YjwvYT4uPC9saT4KPGxpPkxcJ2F1dGV1ciBwZXV0IGF1c3NpIMOqdHJlIGNvbnRhY3TDqSB2aWEgc2t5cGUgc291cyBsZSBwc2V1ZG8gYWdpd2ViY29uc2VpbC48L2xpPgo8bGk+RW5maW4sIHZvdXMgcG91dmV6IGF1c3NpIG1cJ2Vudm95ZXIgdW4gbWFpbC48L2xpPiAgCjwvdWw+CjxwPkVuIHRhbnQgcXVlIGxpY2VuY2UgR1BMLCBjZSBtb2R1bGUgZXN0IGxpdnLDqSB0ZWwgcXVlbC4gTWVyY2kgZGUgbGlyZSBsZSB0ZXh0ZSBjb21wbGV0IGRlIGxhIGxpY2Vuc2UgcG91ciB1bmUgaW5mb3JtYXRpb24gY29tcGzDqnRlLjwvcD4KPGgzPlJlbWVyY2llbWVudHM8L2gzPgo8cD5NZXJjaSDDoCBtYSBmZW1tZSBldCDDoCBtZXMgZW5mYW50cyBwb3VyIGxldXIgc291dGllbiB0b3Vqb3VycyBpbmTDqWZlY3RpYmxlLjwvcD4KPHA+VW4gcmVtZXJjaWVtZW50IHRvdXQgcGFydGljdWxpZXIgw6AgbW9uIGFtaSBFcmljIFBvbmNoYW50KGVyaWNmcmVlbGFuY2UpIHBvdXIgc29uIHNvdXRpZW4sIHNhIGJpZW52ZWlsbGFuY2UsIHNhIHBhdGllbmNlLCBzZXMgY29uc2VpbHMgdG91am91cnMgYXZpc8OpcyBldCBzb24gZXhwZXJ0aXNlIHBvdXIgbVwnYWlkZXIgw6AgY2hhcXVlIGZvaXMgw6AgbWUgc29ydGlyIGRlIGxcJ29ybmnDqHJlLi48L3A+CjxoMz5Db3B5cmlnaHQgZXQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmYW1wO2NvcHk7IDIwMTQsIENsYXVkZSBTaW9oYW4gPGEgaHJlZj0ibWFpbHRvOmNsYXVkZUBhZ2ktd2ViY29uc2VpbC5mciI+Y2xhdWRlQGFnaS13ZWJjb25zZWlsLmZyPC9hPi4gVG91cyBkcm9pdHMgcsOpc2VydsOpcy48L3A+CjxwPkNlIG1vZHVsZSBlc3Qgc291cyBsaWNlbmNlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gVm91cyBkZXZleiBhY2NlcHRlciBsYSBsaWNlbmNlIGF2YW50IGRcJ3V0aWxpc2VyIGNlIG1vZHVsZS48L3A+CjxwPkNlIG1vZHVsZSBhIMOpdMOpIGRpc3RyaWJ1w6kgZGFucyBsXCdlc3BvaXIgZFwnw6p0cmUgdXRpbGUsIG1haXMgc2FucwpBVUNVTkUgR0FSQU5USUUuIElsIHZvdXMgYXBwYXJ0aWVudCBkZSBsZSB0ZXN0ZXIgYXZhbnQgdG91dGUgbWlzZSBlbgpwcm9kdWN0aW9uLCBxdWUgY2Ugc29pdCBkYW5zIGxlIGNhZHJlIGRcJ3VuZSBub3V2ZWxsZSBpbnN0YWxsYXRpb24gb3UKZFwndW5lIG1pc2Ugw6Agam91ciBkdSBtb2R1bGUuIExcJ2F1dGV1ciBkdSBtb2R1bGUgbmUgcG91cnJhaXQgw6p0cmUgdGVudQpwb3VyIHJlc3BvbnNhYmxlIGRlIHRvdXQgZHlzZm9uY3Rpb25uZW1lbnQgZHUgc2l0ZSBwcm92ZW5hbnQgZGUgY2UKbW9kdWxlLiBQb3VyIHBsdXMgZFwnaW5mb3JtYXRpb25zLCA8YQpocmVmPVwiaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMXCIgdGFyZ2V0PVwiX2JsYW5rXCI+Y29uc3VsdGV6CmxhIGxpY2VuY2UgR05VIEdQTDwvYT4uPC9wPgonOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAAAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAYAAAAAAAAAABAAAAgAAAAAEAAAEAAAAAAQAAAgAAAAABAAAEAAAAAAIAAAgAAAAYAAAAAAAAAAABAAAgAAAAAAEAAEAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/lib/class.PingRecupCalResultsTask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKY2xhc3MgUGluZ1JlY3VwU3BpZFRhc2sgaW1wbGVtZW50cyBDbXNSZWd1bGFyVGFzawp7CgogICBwdWJsaWMgZnVuY3Rpb24gZ2V0X25hbWUoKQogICB7CiAgICAgIHJldHVybiBnZXRfY2xhc3MoKTsKICAgfQoKICAgcHVibGljIGZ1bmN0aW9uIGdldF9kZXNjcmlwdGlvbigpCiAgIHsKICAgICAgcmV0dXJuICdEZXNjcmlwdGlvbiBkZSBsYSB0w6JjaGUuJzsKICAgfQoKICAgcHVibGljIGZ1bmN0aW9uIHRlc3QoJHRpbWUgPSAnJykKICAgewoKICAgICAgLy8gSW5zdGFudGlhdGlvbiBkdSBtb2R1bGUKICAgICAgJHBpbmcgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ1BpbmcnKTsKCiAgICAgIC8vIFLDqWN1cMOpcmF0aW9uIGRlIGxhIGRlcm5pw6hyZSBkYXRlIGQnZXjDqWN1dGlvbiBkZSBsYSB0w6JjaGUKICAgICAgaWYgKCEkdGltZSkKICAgICAgewogICAgICAgICAkdGltZSA9IHRpbWUoKTsKICAgICAgfQoKICAgICAgJGxhc3RfZXhlY3V0ZSA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdMYXN0UmVjdXBTcGlkJyk7CiAgICAgIAogICAgICAvLyBEw6lmaW5pdGlvbiBkZSBsYSBww6lyaW9kaWNpdMOpIGRlIGxhIHTDomNoZSAoMjRoIGljaSkKICAgICAgaWYgKCAoJHRpbWUgLSAyNCo2MCo2MCApID49ICRsYXN0X2V4ZWN1dGUgKS8vdG91dGVzIGxlcyAyNCBoZXVyZXMgICEhCgogICAgICB7CiAgICAgICAgIHJldHVybiBUUlVFOwogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gRkFMU0U7CiAgICAgIAogICB9CgogICBwdWJsaWMgZnVuY3Rpb24gZXhlY3V0ZSgkdGltZSA9ICcnKQogICB7CgogICAgICBpZiAoISR0aW1lKQogICAgICB7CiAgICAgICAgICR0aW1lID0gdGltZSgpOwogICAgICB9CgogICAgICAkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwogICAgICAKICAgICAgLy8gQ2UgcXUnaWwgeSBhIMOgIGV4w6ljdXRlciBpY2kKCSRkYiA9ICRwaW5nLT5HZXREYigpOwoJJHNhaXNvbl9jb3VyYW50ZSA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKCSRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKCSRxdWVyeSA9ICJTRUxFQ1QgZGF0ZV9ldmVudCwgaWRwb3VsZSxpZGRpdiwgYWZmaWNoZSwgdXBsb2FkZWQsc2NvcmVhLCBzY29yZWIgIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzICBXSEVSRSBjYWwudHlwZV9jb21wID0gdGMuY29kZV9jb21wZXQgQU5EIGBkYXRlX2V2ZW50YCA8PSBOT1coKSBBTkQgYGRhdGVfZXZlbnRgID4gTk9XKCkgLSBJTlRFUlZBTCA3IERBWSAgQU5EIHNjb3JlYSA9IDAgQU5EIHNjb3JlQiA9IDBPUkRFUiBCWSBkYXRlX2V2ZW50IERFU0MgIjsKCSRpbnRlcnZhbCA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdzcGlkX2ludGVydmFsJyk7CgkKCS8vJHF1ZXJ5ID0gIlNFTEVDVCBDT05DQVRfV1MoJyAnLG5vbSxwcmVub20pIGFzIHBsYXllciwgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIGFjdGlmPScxJyBMSU1JVCAyIjsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHNhaXNvbl9jb3VyYW50ZSkpOwoJaWYoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCgl7CgoJCS8vb24gYSBkZXV4IGNhcwoJCS8vIDEgLSBpbCBzJ2FnaXQgZGUgY29tcMOpdGl0b25zIGluZGl2aWR1ZWxsZXMKCQkvLyAyIC0gSWwgcydhZ2l0IGRlIGNvbXDDqXRpdG9ucyBwYXIgw6lxdWlwZXMKCQkKCQkkc2VydmljZSA9IG5ldyBTZXJ2aWNlKCk7CgoJCXdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkkaW5kaXZzID0gJHJvd1snaW5kaXZzJ107CgkJCSR0eXBlX2NvbXBldCA9ICRyb3dbJ2NvZGVfY29tcGV0J107CgkJCQoJCQlpZigkaW5kaXZzID09IDEpCgkJCXsKCQkJCS8vaWwgcydhZ2l0IGQndW5lIGNvbXDDqXRpdGlvbiBpbmRpdmlkdWVsbGUKCQkJCS8vb24gcsOpY3Vww6hyZSBsYSBsaXN0ZSBkZXMgcGFydGljaXBhbnQgcyDDoCBjZXR0ZSDDqXByZXV2ZQoJCQl9CgkJCWVsc2UKCQkJewoJCQkJLy9pbCBzJ2FnaXQgZCd1bmUgY29tcMOpdGl0aW9uIHBhciDDqXF1aXBlcwoJCQl9CQkKCQkJLy8kcGxheWVyID0gJHJvd1sncGxheWVyJ107CgoKCQkJcGluZ19hZG1pbl9vcHM6OnJldHJpZXZlX3BhcnRpZXNfc3BpZCgkbGljZW5jZSk7CgoKCQl9Ly9maW4gZHUgd2hpbGUKCgl9CgkKLy9lY2hvICJjb3Vjb3UiOwogICAgICAKICAgICAgcmV0dXJuIHRydWU7IC8vIE91IGZhbHNlIHNpIMOnYSBwbGFudGUKCiAgIH0KCiAgIHB1YmxpYyBmdW5jdGlvbiBvbl9zdWNjZXNzKCR0aW1lID0gJycpCiAgIHsKCiAgICAgIGlmICghJHRpbWUpCiAgICAgIHsKICAgICAgICAgJHRpbWUgPSB0aW1lKCk7CiAgICAgIH0KICAgICAgCiAgICAgICRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7CiAgICAgICRwaW5nLT5TZXRQcmVmZXJlbmNlKCdMYXN0UmVjdXBTcGlkJywgJHRpbWUpOwogICAgICAkcGluZy0+QXVkaXQoJycsJ1BpbmcnLCdSw6ljdXAgU3BpZCBPaycpOwogICAgICAvLyRwb25nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlCiAgICAgIAogICB9CgogICBwdWJsaWMgZnVuY3Rpb24gb25fZmFpbHVyZSgkdGltZSA9ICcnKQogICB7CiAgICAgICRwaW5nLT5BdWRpdCgnJywnUGluZycsJ1BhcyBkZSByw6ljdXAgU1BJRCcpOwogICB9Cgp9Cj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.PingRecupFfttTask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKY2xhc3MgUGluZ1JlY3VwRmZ0dFRhc2sgaW1wbGVtZW50cyBDbXNSZWd1bGFyVGFzawp7CgogICBwdWJsaWMgZnVuY3Rpb24gZ2V0X25hbWUoKQogICB7CiAgICAgIHJldHVybiBnZXRfY2xhc3MoKTsKICAgfQoKICAgcHVibGljIGZ1bmN0aW9uIGdldF9kZXNjcmlwdGlvbigpCiAgIHsKICAgICAgcmV0dXJuICdSw6ljdXDDqXJhdGlvbiBkZXMgcGFydGllcyBGRlRULic7CiAgIH0KCiAgIHB1YmxpYyBmdW5jdGlvbiB0ZXN0KCR0aW1lID0gJycpCiAgIHsKCiAgICAgIC8vIEluc3RhbnRpYXRpb24gZHUgbW9kdWxlCiAgICAgICRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7CgogICAgICAvLyBSw6ljdXDDqXJhdGlvbiBkZSBsYSBkZXJuacOocmUgZGF0ZSBkJ2V4w6ljdXRpb24gZGUgbGEgdMOiY2hlCiAgICAgIGlmICghJHRpbWUpCiAgICAgIHsKICAgICAgICAgJHRpbWUgPSB0aW1lKCk7CiAgICAgIH0KCiAgICAgICRsYXN0X2V4ZWN1dGUgPSAkcGluZy0+R2V0UHJlZmVyZW5jZSgnTGFzdFJlY3VwRmZ0dCcpOwogICAgICAKICAgICAgLy8gRMOpZmluaXRpb24gZGUgbGEgcMOpcmlvZGljaXTDqSBkZSBsYSB0w6JjaGUgKDI0aCBpY2kpCiAgICAgIGlmICggKCR0aW1lIC0gMzAqNjAgKSA+PSAkbGFzdF9leGVjdXRlICkvL3RvdXRlcyBsZXMgZGl4IG1pbnV0ZXMKICAgICAgewogICAgICAgICByZXR1cm4gVFJVRTsKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAKICAgfQoKICAgcHVibGljIGZ1bmN0aW9uIGV4ZWN1dGUoJHRpbWUgPSAnJykKICAgewoKICAgICAgCWlmICghJHRpbWUpCiAgICAgIAl7CiAgICAgICAgIAkkdGltZSA9IHRpbWUoKTsKICAgICAgCX0KCiAgICAgIAkkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwogICAgICAKICAgICAgCS8vIENlIHF1J2lsIHkgYSDDoCBleMOpY3V0ZXIgaWNpCgkvL2VjaG8gImNvdWNvdSI7CgkvL29uIHLDqWN1cMOocmUgbGEgc2Fpc29uIGVuIGNvdXJzCgkkZGIgPSAkcGluZy0+R2V0RGIoKTsKCSRzYWlzb24gPSAkcGluZy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CgkkcXVlcnkgPSAiU0VMRUNUIGoubGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIEFTIHJwLCIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogV0hFUkUgai5saWNlbmNlID0gcnAubGljZW5jZSBBTkQgai5hY3RpZj0nMScgQU5EIHJwLm1hal9mZnR0IDwgTk9XKCktSU5URVJWQUwgMyBEQVkgQU5EIHJwLnNhaXNvbiA9ID8gT1JERVIgQlkgcnAubWFqX2ZmdHQgREVTQyBMSU1JVCAyNSAiOwogICAgICAJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHNhaXNvbikpOwoJLy9vbiBhIGRvbmMgbGVzIG4gbGljZW5jZXMgcG91ciBmYWlyZSBsYSBkZXV4acOobWUgcmVxdWV0ZQoJLy9vbiBjb21tZW5jZSDDoCBib3VjbGVyCglpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApICAvL2xhIHJlcXVldGUgZXN0IG9rIGV0IGlsIHkgYSBkZXMgcsOpc3VsdGF0cwoJewoJCS8vb24gaW5zdGFuY2llIGxhIGNsYXNzZSBTZXJ2aWNlCgkJCgkJCgkJJHNlcnZpY2UgPSBuZXcgU2VydmljZSgpOwoKCQl3aGlsZSgkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJJGxpY2VuY2UgPSAkcm93WydsaWNlbmNlJ107CgkJCXBpbmdfYWRtaW5fb3BzOjpyZXRyaWV2ZV9wYXJ0aWVzX2ZmdHQoJGxpY2VuY2UpOwoJCX0KCQkKCX0KCXJldHVybiB0cnVlOyAvLyBPdSBmYWxzZSBzaSDDp2EgcGxhbnRlCgkKCQoJCgogICAgICAKCiAgIH0KCiAgIHB1YmxpYyBmdW5jdGlvbiBvbl9zdWNjZXNzKCR0aW1lID0gJycpCiAgIHsKCiAgICAgIGlmICghJHRpbWUpCiAgICAgIHsKICAgICAgICAgJHRpbWUgPSB0aW1lKCk7CiAgICAgIH0KICAgICAgCiAgICAgICRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7CiAgICAgICRwaW5nLT5TZXRQcmVmZXJlbmNlKCdMYXN0UmVjdXBGZnR0JywgJHRpbWUpOwogICAgICAkcGluZy0+QXVkaXQoJycsJ1BpbmcnLCdSw6ljdXAgRkZUVCBPaycpOwogICAgICAKICAgfQoKICAgcHVibGljIGZ1bmN0aW9uIG9uX2ZhaWx1cmUoJHRpbWUgPSAnJykKICAgewogICAgICAkcGluZy0+QXVkaXQoJycsJ1BpbmcnLCdQYXMgZGUgcsOpY3VwIEZGVFQnKTsKICAgfQoKfQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.PingRecupSpidTask.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKY2xhc3MgUGluZ1JlY3VwU3BpZFRhc2sgaW1wbGVtZW50cyBDbXNSZWd1bGFyVGFzawp7CgogICBwdWJsaWMgZnVuY3Rpb24gZ2V0X25hbWUoKQogICB7CiAgICAgIHJldHVybiBnZXRfY2xhc3MoKTsKICAgfQoKICAgcHVibGljIGZ1bmN0aW9uIGdldF9kZXNjcmlwdGlvbigpCiAgIHsKICAgICAgcmV0dXJuICdEZXNjcmlwdGlvbiBkZSBsYSB0w6JjaGUuJzsKICAgfQoKICAgcHVibGljIGZ1bmN0aW9uIHRlc3QoJHRpbWUgPSAnJykKICAgewoKICAgICAgLy8gSW5zdGFudGlhdGlvbiBkdSBtb2R1bGUKICAgICAgJHBpbmcgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ1BpbmcnKTsKCiAgICAgIC8vIFLDqWN1cMOpcmF0aW9uIGRlIGxhIGRlcm5pw6hyZSBkYXRlIGQnZXjDqWN1dGlvbiBkZSBsYSB0w6JjaGUKICAgICAgaWYgKCEkdGltZSkKICAgICAgewogICAgICAgICAkdGltZSA9IHRpbWUoKTsKICAgICAgfQoKICAgICAgJGxhc3RfZXhlY3V0ZSA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdMYXN0UmVjdXBTcGlkJyk7CiAgICAgIAogICAgICAvLyBEw6lmaW5pdGlvbiBkZSBsYSBww6lyaW9kaWNpdMOpIGRlIGxhIHTDomNoZSAoMjRoIGljaSkKICAgICAgaWYgKCAoJHRpbWUgLSAzMCo2MCApID49ICRsYXN0X2V4ZWN1dGUgKS8vdG91dGVzIGxlcyAyNCBoZXVyZXMgICEhCgogICAgICB7CiAgICAgICAgIHJldHVybiBUUlVFOwogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gRkFMU0U7CiAgICAgIAogICB9CgogICBwdWJsaWMgZnVuY3Rpb24gZXhlY3V0ZSgkdGltZSA9ICcnKQogICB7CgogICAgICBpZiAoISR0aW1lKQogICAgICB7CiAgICAgICAgICR0aW1lID0gdGltZSgpOwogICAgICB9CgogICAgICAkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwogICAgICAKICAgICAgLy8gQ2UgcXUnaWwgeSBhIMOgIGV4w6ljdXRlciBpY2kKCSRkYiA9ICRwaW5nLT5HZXREYigpOwoJJHNhaXNvbl9jb3VyYW50ZSA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKCSRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKCSRxdWVyeSA9ICJTRUxFQ1Qgai5saWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgQVMgcnAsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogIFdIRVJFIGoubGljZW5jZSA9IHJwLmxpY2VuY2UgQU5EIGouYWN0aWYgPSAnMScgIjsKCSRpbnRlcnZhbCA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdzcGlkX2ludGVydmFsJyk7CgkkcXVlcnkuPSIgQU5EIG1hal9zcGlkIDwgTk9XKCktSU5URVJWQUwgIi4kaW50ZXJ2YWwuIiBEQVkgQU5EIHNhaXNvbiA9ID8gT1JERVIgQlkgbWFqX3NwaWQgREVTQyAiOwoJJGxpbWl0ID0gJHBpbmctPkdldFByZWZlcmVuY2UoJ3NwaWRfbm9tYnJlcycpOwoJJHF1ZXJ5Lj0gIkxJTUlUICIuJGxpbWl0OwoJLy8kcXVlcnkgPSAiU0VMRUNUIENPTkNBVF9XUygnICcsbm9tLHByZW5vbSkgYXMgcGxheWVyLCBsaWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgV0hFUkUgYWN0aWY9JzEnIExJTUlUIDIiOwoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkc2Fpc29uX2NvdXJhbnRlKSk7CglpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKCXsKCgkJLy9vbiBpbnN0YW5jaWUgbGEgY2xhc3NlIGV0IG9uIHZhIGNvbW1lbmNlciDDoCBib3VjbGVyCgkJJHNlcnZpY2UgPSBuZXcgU2VydmljZSgpOwoKCQl3aGlsZSAoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCXsKCQkJJGxpY2VuY2UgPSAkcm93WydsaWNlbmNlJ107CQkKCQkJLy8kcGxheWVyID0gJHJvd1sncGxheWVyJ107CgoKCQkJcGluZ19hZG1pbl9vcHM6OnJldHJpZXZlX3BhcnRpZXNfc3BpZCgkbGljZW5jZSk7CgoKCQl9Ly9maW4gZHUgd2hpbGUKCgl9CgkKLy9lY2hvICJjb3Vjb3UiOwogICAgICAKICAgICAgcmV0dXJuIHRydWU7IC8vIE91IGZhbHNlIHNpIMOnYSBwbGFudGUKCiAgIH0KCiAgIHB1YmxpYyBmdW5jdGlvbiBvbl9zdWNjZXNzKCR0aW1lID0gJycpCiAgIHsKCiAgICAgIGlmICghJHRpbWUpCiAgICAgIHsKICAgICAgICAgJHRpbWUgPSB0aW1lKCk7CiAgICAgIH0KICAgICAgCiAgICAgICRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7CiAgICAgICRwaW5nLT5TZXRQcmVmZXJlbmNlKCdMYXN0UmVjdXBTcGlkJywgJHRpbWUpOwogICAgICAkcGluZy0+QXVkaXQoJycsJ1BpbmcnLCdSw6ljdXAgU3BpZCBPaycpOwogICAgICAvLyRwb25nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlCiAgICAgIAogICB9CgogICBwdWJsaWMgZnVuY3Rpb24gb25fZmFpbHVyZSgkdGltZSA9ICcnKQogICB7CiAgICAgICRwaW5nLT5BdWRpdCgnJywnUGluZycsJ1BhcyBkZSByw6ljdXAgU1BJRCcpOwogICB9Cgp9Cj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.ping_admin_ops.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKI2l0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiN0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiNidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KI1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiNhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQojCiMkSWQ6IE5ld3MubW9kdWxlLnBocCAyMTE0IDIwMDUtMTEtMDQgMjE6NTE6MTNaIHdpc2h5ICQKCmNsYXNzIHBpbmdfYWRtaW5fb3BzCnsKICBwcm90ZWN0ZWQgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7fQoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVjcmlyZWpvdXJuYWwoJG5vdywkc3RhdHVzLCAkZGVzaWduYXRpb24sJGFjdGlvbikKICB7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwoJCiAgICAvL05vdyByZW1vdmUgdGhlIGFydGljbGUKICAgICRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXAgKGlkLCBkYXRlY3JlYXRlZCwgc3RhdHVzLGRlc2lnbmF0aW9uLCBhY3Rpb24pIFZBTFVFUyAoJycsID8sID8sID8sID8pIjsKICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRub3csICRzdGF0dXMsICRkZXNpZ25hdGlvbiwkYWN0aW9uKSk7CiAgICAKICAgIAogIH0KCnB1YmxpYyBmdW5jdGlvbiBDYWxjdWxQb2ludHNJbmRpdnMoJGVjYXJ0LCR2aWN0b2lyZSkgewoKCgkJaWYoJGVjYXJ0ID09MSkKCXsKCQlpZiggJHZpY3RvaXJlID09IDEpCgkJewoKCQkJJHJlc3VsdCA9IDY7CQkKCQkJcmV0dXJuICRyZXN1bHQ7CgoJCX0KCQllbHNlCgkJewoKCQkJJHJlc3VsdCA9IC01OwoKCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0yKQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCgkJCSRyZXN1bHQgPSA1LjU7CgoKCQkJcmV0dXJuICRyZXN1bHQ7CgoJCX0KCQllbHNlCgkJewoKCQkJJHJlc3VsdCA9IC02OwoKCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0zKQoJewoJCWlmKCR2aWN0b2lyZSA9PTEpCgkJewoKCQkJJHJlc3VsdCA9IDU7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoKCQkJJHJlc3VsdCA9IC03OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09NCkKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgoJCQkkcmVzdWx0ID0gNDsKCgoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCgkJCSRyZXN1bHQgPSAtODsKCgoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09NSkKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgoJCQkkcmVzdWx0ID0gMzsKCgoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCgkJCSRyZXN1bHQgPSAtMTA7CgoKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTYpCgl7CgkJaWYoICR2aWN0b2lyZSA9PTEpCgkJewoKCQkJJHJlc3VsdCA9IDI7CgoKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgoJCQkkcmVzdWx0ID0gLTEyLjU7CgoKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTcpCgl7CgkJaWYoICR2aWN0b2lyZSA9PTEpCgkJewoKCQkJJHJlc3VsdCA9IDE7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoKCQkJJHJlc3VsdCA9IC0xNjsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTgpCgl7CgkJaWYoICR2aWN0b2lyZSA9PTEpCgkJewoKCQkJJHJlc3VsdCA9IDAuNTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgoJCQkkcmVzdWx0ID0gLTIwOwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09OSkKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgoJCQkkcmVzdWx0ID0gMDsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgoJCQkkcmVzdWx0ID0gLTI5OwkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tMSkKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgoJCQkkcmVzdWx0ID0gNjsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgoJCQkkcmVzdWx0ID0gLTU7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQ9PS0yKQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCgkJCSRyZXN1bHQgPSA3OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCgkJfQoJCWVsc2UKCQl7CgoJCQkkcmVzdWx0ID0gLTQuNTsJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09LTMpCgl7CgkJaWYoICR2aWN0b2lyZSA9PTEpCgkJewoKCQkJJHJlc3VsdCA9IDg7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoKCQkJJHJlc3VsdCA9IC00OwoKCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tNCkKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgoJCQkkcmVzdWx0ID0gMTA7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoKCQkJJHJlc3VsdCA9IC0zOwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09LTUpCgl7CgkJaWYoICR2aWN0b2lyZSA9PTEpCgkJewoKCQkJJHJlc3VsdCA9IDEzOwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCgkJCSRyZXN1bHQgPSAtMjsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS02KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCgkJCSRyZXN1bHQgPSAxNzsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgoJCQkkcmVzdWx0ID0gLTE7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tNykKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgoJCQkkcmVzdWx0ID0gMjI7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoKCQkJJHJlc3VsdCA9IC0wLjU7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tOCkKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgoJCQkkcmVzdWx0ID0gMjg7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoKCQkJJHJlc3VsdCA9IDA7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tOSkKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgoJCQkkcmVzdWx0ID0gNDA7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoKCQkJJHJlc3VsdCA9IDA7CgoJCX0KCX0KCn0KCnB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdW5hYmxlX3BsYXllcigkbGljZW5jZSkKICB7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwoKICAgIC8vTm93IHJlbW92ZSB0aGUgZW50cnkKICAgICRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgU0VUIGFjdGlmID0nMCcgIFdIRVJFIGxpY2VuY2UgPSA/IjsKICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlKSk7CgoKICB9CgpwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHN1cHBfc3BpZCgkcmVjb3JkX2lkKQogIHsKICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CgkkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwoJJHNhaXNvbiA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKICAgIAkvL29uIGZhaXQgbGEgbWFqIGRhbnMgbGEgdGFibGUgcmVjdXBfcGFydGllcywgZG9uYyBvbiByw6ljdXDDqHJlIGxlIE7CsCBkZSBsaWNlbmNlCgkkcXVlcnkyID0gIlNFTEVDVCBsaWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBXSEVSRSBpZCA9ID8iOwoJJGRicmVzdWx0MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLGFycmF5KCRyZWNvcmRfaWQpKTsKCSRyb3cyID0gJGRicmVzdWx0Mi0+RmV0Y2hSb3coKTsKCSRsaWNlbmNlMiA9ICRyb3cyWydsaWNlbmNlJ107CiAgICAJLy9Ob3cgcmVtb3ZlIHRoZSBlbnRyeQogICAgCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIFdIRVJFIGlkID0gPyI7CiAgICAJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCQkvL3NpIGxhIHJlcXVldGUgZm9uY3Rpb25uZSBvbiBtZXQgbGEgdGFibGUgcmVjdXBfcGFydGllcyDDoCBqb3VyCgkJaWYoJHJlc3VsdCkKCQl7CgkJCSRxdWVyeTMgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIFNFVCBzcGlkID0gc3BpZC0xIFdIRVJFIGxpY2VuY2UgPSA/IEFORCBzYWlzb24gPSA/IjsKCQkJJGRiLT5FeGVjdXRlKCRxdWVyeTMsIGFycmF5KCRsaWNlbmNlMiwgJHNhaXNvbikpOwoJCX0KICAgIAoKCgogIH0KCnB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWFzY3VsaW4oJGxpY2VuY2UpCiAgewogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCiAgICAvL05vdyByZW1vdmUgdGhlIGVudHJ5CiAgICAkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFNFVCBzZXhlID0nTScgIFdIRVJFIGxpY2VuY2UgPSA/IjsKICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlKSk7CgoKICB9CgpwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZlbWluaW4oJGxpY2VuY2UpCiAgewogICAgCSRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgIAkKICAgIC8vTm93IHJlbW92ZSB0aGUgZW50cnkKICAgICRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgU0VUIHNleGUgPSdGJyAgV0hFUkUgbGljZW5jZSA9ID8iOwogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UpKTsKCgogIH0KcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb21wdGVfc3BpZCgkbGljZW5jZSkKewoJZ2xvYmFsICRnQ21zOwoJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCSRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7Cgkkc2Fpc29uID0gJHBpbmctPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwoJJHF1ZXJ5ID0gIlNFTEVDVCBjb3VudCgqKSBBUyBzcGlkIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBXSEVSRSBsaWNlbmNlID0gPyBBTkQgc2Fpc29uID0gPyI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSwkc2Fpc29uKSk7Cgkkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJJHNwaWQgPSAkcm93WydzcGlkJ107CglyZXR1cm4gJHNwaWQ7Cgp9CiMjCnB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29tcHRlX2ZmdHQoJGxpY2VuY2UpCnsKCWdsb2JhbCAkZ0NtczsKCSRkYiA9IGNtc21zKCktPkdldERiKCk7CgkkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwoJJHNhaXNvbiA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKCSRxdWVyeSA9ICJTRUxFQ1QgY291bnQoKikgQVMgZmZ0dCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIFdIRVJFIGxpY2VuY2UgPSA/IEFORCBzYWlzb24gPSA/IjsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlLCRzYWlzb24pKTsKCSRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkkZmZ0dCA9ICRyb3dbJ2ZmdHQnXTsKCXJldHVybiAkZmZ0dDsKCn0KIyMKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbWFqX3JlY3VwX3BhcnRpZXMoJGxpY2VuY2UsJHRhYmxlKQoJewoJCWdsb2JhbCAkZ0NtczsKCQkkZGIgPSBjbXNtcygpLT5HZXREYigpOwoJCSRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7CgkJJHNhaXNvbiA9ICRwaW5nLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIFNFVCBtYWpfc3BpZCA9ID8gV0hFUkUgbGljZW5jZT0gPyBBTkQgc2Fpc29uID0gPyI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UsJHNhaXNvbikpOwoJCSRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkJJGZmdHQgPSAkcm93WydmZnR0J107CgkJcmV0dXJuICRmZnR0OwoKCX0KIyMKcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZWFyY2hfcGxheWVyX2xpY2VuY2UoJG5hbWUpCnsKCQovL2VuZCBvZiBmdW5jdGlvbgp9CgpwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9uYW1lKCRub20pCnsKCQoJJGV4cGxvc2lvbiA9IGV4cGxvZGUoJyAnLCRub20pOwoJJGNvbXB0ZXVyID0gY291bnQoJGV4cGxvc2lvbik7CgkkbmFtZSA9IGFycmF5KCk7CgkkcHJlbm9tID0gYXJyYXkoKTsKCS8vb24gZmFpdCBxcXMgdHJhaXRlbWVudHMgcG91ciBsZXMgY2FyYWN0w6hyZXMgYWNjZW50dcOpcwoJCgkKCSRpID0wOwoJZm9yZWFjaCAoJGV4cGxvc2lvbiBhcyAkdGVzdGNhc2UpIHsKCSRpKys7CgkvL29uIG5ldHRvaWUgbGVzIGNhcmFjdMOocmVzIHF1aSBwb3NlbnQgcHJvYmzDqG1lCgkkdGVzdGNhc2UgPSBzdHJ0cigkdGVzdGNhc2UsIGFycmF5KAoJICAgICAgICAnxaAnPT4nUycsICfFoSc9PidzJywgJ8SQJz0+J0RqJywgJ8SRJz0+J2RqJywgJ8W9Jz0+J1onLCAnxb4nPT4neicsICfEjCc9PidDJywgJ8SNJz0+J2MnLCAnxIYnPT4nQycsICfEhyc9PidjJywKCSAgICAgICAgJ8OAJz0+J0EnLCAnw4EnPT4nQScsICfDgic9PidBJywgJ8ODJz0+J0EnLCAnw4QnPT4nQScsICfDhSc9PidBJywgJ8OGJz0+J0EnLCAnw4cnPT4nQycsICfDiCc9PidFJywgJ8OJJz0+J0UnLAoJICAgICAgICAnw4onPT4nRScsICfDiyc9PidFJywgJ8OMJz0+J0knLCAnw40nPT4nSScsICfDjic9PidJJywgJ8OPJz0+J0knLCAnw5EnPT4nTicsICfDkic9PidPJywgJ8OTJz0+J08nLCAnw5QnPT4nTycsCgkgICAgICAgICfDlSc9PidPJywgJ8OWJz0+J08nLCAnw5gnPT4nTycsICfDmSc9PidVJywgJ8OaJz0+J1UnLCAnw5snPT4nVScsICfDnCc9PidVJywgJ8OdJz0+J1knLCAnw54nPT4nQicsICfDnyc9PidTcycsCgkgICAgICAgICfDoCc9PidhJywgJ8OhJz0+J2EnLCAnw6InPT4nYScsICfDoyc9PidhJywgJ8OkJz0+J2EnLCAnw6UnPT4nYScsICfDpic9PidhJywgJ8OnJz0+J2MnLCAnw6gnPT4nZScsICfDqSc9PidlJywKCSAgICAgICAgJ8OqJz0+J2UnLCAnw6snPT4nZScsICfDrCc9PidpJywgJ8OtJz0+J2knLCAnw64nPT4naScsICfDryc9PidpJywgJ8OwJz0+J28nLCAnw7EnPT4nbicsICfDsic9PidvJywgJ8OzJz0+J28nLAoJICAgICAgICAnw7QnPT4nbycsICfDtSc9PidvJywgJ8O2Jz0+J28nLCAnw7gnPT4nbycsICfDuSc9Pid1JywgJ8O6Jz0+J3UnLCAnw7snPT4ndScsICfDvSc9Pid5JywgJ8O9Jz0+J3knLCAnw74nPT4nYicsCgkgICAgICAgICfDvyc9Pid5JywgJ8WUJz0+J1InLCAnxZUnPT4ncicsCgkgICAgKSk7CQoJICBpZiAoY3R5cGVfdXBwZXIoc3RyX3JlcGxhY2UoIiciLCIiLCR0ZXN0Y2FzZSkpIHx8ICR0ZXN0Y2FzZSA9PSItIiB8fCAkdGVzdGNhc2UgPT0iJyIpIHsKCSAgICAkbmFtZVskaV0gPSAkdGVzdGNhc2U7CgkJLy9lY2hvICJMYSBjaGHDrm5lIi4kaS4iICR0ZXN0Y2FzZSBuZSBjb250aWVudCBxdWUgZGVzIG1hanVzY3VsZXMuXG4iOwoJICB9IGVsc2UgewoJICAgLy8gZWNobyAiTGEgY2hhw65uZSIuJGkuIiAkdGVzdGNhc2UgbmUgY29udGllbnQgcGFzIHF1ZSBkZXMgbWFqdXNjdWxlcy5cbiI7CgkJJHByZW5vbVskaV0gPSAkdGVzdGNhc2U7CgkgIH0KCX0KCQoJJG5vbV9maW5hbCA9IGltcGxvZGUoJyAnLCRuYW1lKTsKCS8qCgkkbm9tX2ZpbmFsID0gc3RydHIoJG5vbV9maW5hbCwgYXJyYXkoCgkgICAgICAgICfFoCc9PidTJywgJ8WhJz0+J3MnLCAnxJAnPT4nRGonLCAnxJEnPT4nZGonLCAnxb0nPT4nWicsICfFvic9Pid6JywgJ8SMJz0+J0MnLCAnxI0nPT4nYycsICfEhic9PidDJywgJ8SHJz0+J2MnLAoJICAgICAgICAnw4AnPT4nQScsICfDgSc9PidBJywgJ8OCJz0+J0EnLCAnw4MnPT4nQScsICfDhCc9PidBJywgJ8OFJz0+J0EnLCAnw4YnPT4nQScsICfDhyc9PidDJywgJ8OIJz0+J0UnLCAnw4knPT4nRScsCgkgICAgICAgICfDiic9PidFJywgJ8OLJz0+J0UnLCAnw4wnPT4nSScsICfDjSc9PidJJywgJ8OOJz0+J0knLCAnw48nPT4nSScsICfDkSc9PidOJywgJ8OSJz0+J08nLCAnw5MnPT4nTycsICfDlCc9PidPJywKCSAgICAgICAgJ8OVJz0+J08nLCAnw5YnPT4nTycsICfDmCc9PidPJywgJ8OZJz0+J1UnLCAnw5onPT4nVScsICfDmyc9PidVJywgJ8OcJz0+J1UnLCAnw50nPT4nWScsICfDnic9PidCJywgJ8OfJz0+J1NzJywKCSAgICAgICAgJ8OgJz0+J2EnLCAnw6EnPT4nYScsICfDoic9PidhJywgJ8OjJz0+J2EnLCAnw6QnPT4nYScsICfDpSc9PidhJywgJ8OmJz0+J2EnLCAnw6cnPT4nYycsICfDqCc9PidlJywgJ8OpJz0+J2UnLAoJICAgICAgICAnw6onPT4nZScsICfDqyc9PidlJywgJ8OsJz0+J2knLCAnw60nPT4naScsICfDric9PidpJywgJ8OvJz0+J2knLCAnw7AnPT4nbycsICfDsSc9PiduJywgJ8OyJz0+J28nLCAnw7MnPT4nbycsCgkgICAgICAgICfDtCc9PidvJywgJ8O1Jz0+J28nLCAnw7YnPT4nbycsICfDuCc9PidvJywgJ8O5Jz0+J3UnLCAnw7onPT4ndScsICfDuyc9Pid1JywgJ8O9Jz0+J3knLCAnw70nPT4neScsICfDvic9PidiJywKCSAgICAgICAgJ8O/Jz0+J3knLCAnxZQnPT4nUicsICfFlSc9PidyJywKCSAgICApKTsKCSovCgkkcHJlbm9tX2ZpbmFsID0gaW1wbG9kZSgnICcsJHByZW5vbSk7CgkvKgoJJHByZW5vbV9maW5hbCA9IHN0cnRyKCRwcmVub21fZmluYWwsIGFycmF5KAoJICAgICAgICAnxaAnPT4nUycsICfFoSc9PidzJywgJ8SQJz0+J0RqJywgJ8SRJz0+J2RqJywgJ8W9Jz0+J1onLCAnxb4nPT4neicsICfEjCc9PidDJywgJ8SNJz0+J2MnLCAnxIYnPT4nQycsICfEhyc9PidjJywKCSAgICAgICAgJ8OAJz0+J0EnLCAnw4EnPT4nQScsICfDgic9PidBJywgJ8ODJz0+J0EnLCAnw4QnPT4nQScsICfDhSc9PidBJywgJ8OGJz0+J0EnLCAnw4cnPT4nQycsICfDiCc9PidFJywgJ8OJJz0+J0UnLAoJICAgICAgICAnw4onPT4nRScsICfDiyc9PidFJywgJ8OMJz0+J0knLCAnw40nPT4nSScsICfDjic9PidJJywgJ8OPJz0+J0knLCAnw5EnPT4nTicsICfDkic9PidPJywgJ8OTJz0+J08nLCAnw5QnPT4nTycsCgkgICAgICAgICfDlSc9PidPJywgJ8OWJz0+J08nLCAnw5gnPT4nTycsICfDmSc9PidVJywgJ8OaJz0+J1UnLCAnw5snPT4nVScsICfDnCc9PidVJywgJ8OdJz0+J1knLCAnw54nPT4nQicsICfDnyc9PidTcycsCgkgICAgICAgICfDoCc9PidhJywgJ8OhJz0+J2EnLCAnw6InPT4nYScsICfDoyc9PidhJywgJ8OkJz0+J2EnLCAnw6UnPT4nYScsICfDpic9PidhJywgJ8OnJz0+J2MnLCAnw6gnPT4nZScsICfDqSc9PidlJywKCSAgICAgICAgJ8OqJz0+J2UnLCAnw6snPT4nZScsICfDrCc9PidpJywgJ8OtJz0+J2knLCAnw64nPT4naScsICfDryc9PidpJywgJ8OwJz0+J28nLCAnw7EnPT4nbicsICfDsic9PidvJywgJ8OzJz0+J28nLAoJICAgICAgICAnw7QnPT4nbycsICfDtSc9PidvJywgJ8O2Jz0+J28nLCAnw7gnPT4nbycsICfDuSc9Pid1JywgJ8O6Jz0+J3UnLCAnw7snPT4ndScsICfDvSc9Pid5JywgJ8O9Jz0+J3knLCAnw74nPT4nYicsCgkgICAgICAgICfDvyc9Pid5JywgJ8WUJz0+J1InLCAnxZUnPT4ncicsCgkgICAgKSk7CgkqLwoJJHJlc3VsdFswXSA9ICRub21fZmluYWw7CgkkcmVzdWx0WzFdID0gJHByZW5vbV9maW5hbDsKCXJldHVybiAkcmVzdWx0OwkKLy9lbmQgb2YgZnVuY3Rpb24KfQovLyBjZXR0ZSBmb25jdGlvbiByZWNoZXJjaGUgbGEgc2l0dWF0aW9uIG1lbnN1ZWxsZSBkJ3VuIGpvdWV1ciBkdSBjbHViIGRzIGxhIGJkZApwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9zaXRfbWVucygkbGljZW5jZSwgJG1vaXNfZXZlbnQsICRhbm5lZSkKewoJZ2xvYmFsICRnQ21zOwoJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCSRwaW5nID0gY21zX3V0aWxzOjpnZXRfbW9kdWxlKCdQaW5nJyk7CgkkcXVlcnkgPSAiU0VMRUNUIHBvaW50cyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyBXSEVSRSBsaWNlbmNlID0gPyBBTkQgbW9pcyA9ID8gQU5EIGFubmVlID0gPyI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSwkbW9pc19ldmVudCwkYW5uZWUpKTsKCS8vc2kgbGEgc2l0dWF0aW9uIG1lbnN1ZWxsZSBkdSBqb3VldXIgZHUgY2x1YiBuJ2V4aXN0ZSBwYXMgPwoJLy9hbG9ycyBvbiBuJ2VucmVnaXN0cmUgcGFzIGxlIHLDqXN1bHRhdCBldCBvbiBsZSBzaWduYWxlCgkJaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkKCQl7CgkJCS8vJGRlc2lnbmF0aW9uLj0iRWNhcnQgbm9uIGNhbGN1bMOpIjsKCQkJJHJldG91cl9zaXRfbWVucyA9IDA7CgkJfQoJCWVsc2UKCQl7CgkJCSRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkJCSRyZXRvdXJfc2l0X21lbnMgPSAkcm93Wydwb2ludHMnXTsKCQl9CglyZXR1cm4gJHJldG91cl9zaXRfbWVuczsKLy9lbmQgb2YgZnVuY3Rpb24KfQoKcHVibGljIHN0YXRpYyBmdW5jdGlvbiBhcnJheV9jb2RlX2NvbXBldCgkdHlwZV9jb21wZXQpCnsKCWdsb2JhbCAkZ0NtczsKCSRkYiA9IGNtc21zKCktPkdldERiKCk7CgkkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwoJJHF1ZXJ5NCA9ICJTRUxFQ1QgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWNpcGUgV0hFUkUgdHlwZV9jb21wZXQgPSA/IjsKCSRkYnJlc3VsdGF0NCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnk0LGFycmF5KCR0eXBlX2NvbXBldCkpOwoJJHJvdzQgPSAkZGJyZXN1bHRhdDQtPkdldFJvd3MoKTsKCSRsaWduZXMgPSAkZGJyZXN1bHRhdDQtPlJlY29yZENvdW50KCk7CgkvL2VjaG8gJGxpZ25lcy4iPGJyIC8+IjsKCS8vZWNobyAkcm93NFsxXVtsaWNlbmNlXTsKCSRsaWMgPSBhcnJheSgpOwoJJGk9MDsKCglmb3IoJGk9MDskaTw9JGxpZ25lczskaSsrKQoJewoJCSR0YWJbJGldID0gJHJvdzRbJGldWydsaWNlbmNlJ107CgkJCgkJYXJyYXlfcHVzaCgkbGljLCR0YWJbJGldKTsKCQkvLyRsaWNlbiA9IGFycmF5KCk7CgkJLy8kbGljZW4gPSBzdWJzdHIoaW1wbG9kZSgiLCAiLCAkbGljKSwgMCwgLTMpOwoJCS8vJGxpY2VuID0gaW1wbG9kZSgiLCAiLCAkbGljKTsKCX0KCXJldHVybiAkbGljOwovL2VuZCBvZiBmdW5jdGlvbgp9CgpwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRlbGV0ZV90ZWFtcmVzdWx0KCRyZWNvcmRfaWQpCiAgewogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCiAgICAvL05vdyByZW1vdmUgdGhlIGVudHJ5CiAgICAJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBXSEVSRSBpZCA9ID8iOwoJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJlY29yZF9pZCkpOwoKCiAgfQoKcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkaXNwbGF5X29uX2Zyb250ZW5kKCRpZCkKICB7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwoKICAgIC8vTm93IHJlbW92ZSB0aGUgZW50cnkKICAgIAkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBTRVQgYWZmaWNoZSA9ICcxJyBXSEVSRSBpZCA9ID8iOwoJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGlkKSk7CgoKICB9CgpwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRvX25vdF9kaXNwbGF5KCRyZWNvcmRfaWQpCiAgewogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCiAgICAvL05vdyByZW1vdmUgdGhlIGVudHJ5CiAgICAJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG91bGVzX3JlbmNvbnRyZXMgU0VUIGFmZmljaGUgPSAnMCcgV0hFUkUgaWQgPSA/IjsKCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCgogIH0KCnB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gQ2FsY3VsRWNhcnQoJGVjYXJ0KQp7CglpZigkZWNhcnQgPj0wICYmICRlY2FydCA8IDI1KSB7ICRlY2FydCA9IDE7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPj0yNSAmJiAkZWNhcnQgPCA1MCl7ICRlY2FydCA9IDI7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPj01MCAmJiAkZWNhcnQgPCAxMDApeyAkZWNhcnQgPSAzOyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0ID49MTAwICYmICRlY2FydCA8IDE1MCl7ICRlY2FydCA9IDQ7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPj0xNTAgJiYgJGVjYXJ0IDwgMjAwKXsgJGVjYXJ0ID0gNTsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTIwMCAmJiAkZWNhcnQgPCAzMDApeyAkZWNhcnQgPSA2OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0ID49MzAwICYmICRlY2FydCA8IDQwMCl7ICRlY2FydCA9IDc7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPj00MDAgJiYgJGVjYXJ0IDwgNTAwKXsgJGVjYXJ0ID0gODsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTUwMCl7ICRlY2FydCA9IDk7IHJldHVybiAkZWNhcnQ7IH0KCgllbHNlaWYoJGVjYXJ0ID4gLTI1ICYmICRlY2FydCA8IDApeyRlY2FydCA9IC0xOyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0IDw9IC0yNSAmJiAkZWNhcnQgPiAtNTApeyRlY2FydCA9IC0yOyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0IDw9IC01MCAmJiAkZWNhcnQgPiAtMTAwKXskZWNhcnQgPSAtMzsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA8PSAtMTAwICYmICRlY2FydCA+IC0xNTApeyRlY2FydCA9IC00OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0IDw9IC0xNTAgJiYgJGVjYXJ0ID4gLTIwMCl7JGVjYXJ0ID0gLTU7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPD0gLTIwMCAmJiAkZWNhcnQgPiAtMzAwKXskZWNhcnQgPSAtNjsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA8PSAtMzAwICYmICRlY2FydCA+IC00MDApeyRlY2FydCA9IC03OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0IDw9IC00MDAgJiYgJGVjYXJ0ID4gLTUwMCl7JGVjYXJ0ID0gLTg7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPD0gLTUwMCl7JGVjYXJ0ID0gLTk7IHJldHVybiAkZWNhcnQ7IH0KfQoKcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb2VmZiAoJHR5cGVDb21wZXRpdGlvbiwkbGljZW5jZSkKewoJJGRiICA9IGNtc21zKCktPkdldERiKCk7CgkvL2F0dGVudGlvbiBhdSBjcml0w6lyaXVtIGbDqWTDqXJhbCAhIQoJLy9tw6ptZSBub20gZCfDqXByZXV2ZSBtYWlzIGNvZWZmIGRpZmbDqXJlbnQKCS8vaWwgZmF1dCBhdXNzaSByw6ljdXDDqXJlciBsYSBsaWNlbmNlIAoJaWYoJHR5cGVDb21wZXRpdGlvbiA9PSdDcml0w6lyaXVtIGbDqWTDqXJhbCcpCgl7CgkJJHF1ZXJ5NCA9ICJTRUxFQ1QgdHAuY29lZmZpY2llbnQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGljaXBlIEFTIHAsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyBBUyB0cCBXSEVSRSB0cC5jb2RlX2NvbXBldCA9IHAudHlwZV9jb21wZXQgQU5EIHAubGljZW5jZSA9ID8iOwoJCSRkYnJlc3VsdGF0NCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnk0LGFycmF5KCRsaWNlbmNlKSk7CgkJJHJvdzQgPSAkZGJyZXN1bHRhdDQtPkZldGNoUm93KCk7CgkJJGNvZWZmID0gJHJvdzRbJ2NvZWZmaWNpZW50J107CgkJcmV0dXJuICRjb2VmZjsKCX0KCWVsc2UKCXsKCQkKCQkkcXVlcnkgPSJTRUxFQ1QgY29lZmZpY2llbnQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgV0hFUkUgbmFtZSA9ID8iOwoJCSRkYnJldG91ciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR0eXBlQ29tcGV0aXRpb24pKTsKCgkJCWlmICgkZGJyZXRvdXIgJiYgJGRicmV0b3VyLT5SZWNvcmRDb3VudCgpID4gMCkKCQkgIAl7CgkJICAgIAkJd2hpbGUgKCRyb3c9ICRkYnJldG91ci0+RmV0Y2hSb3coKSkKCQkgICAgICAJCXsKCQkJCQkkY29lZmYgPSAkcm93Wydjb2VmZmljaWVudCddOwoJCQkJCXJldHVybiAkY29lZmY7CgkJCQl9CgkKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRjb2VmZiA9IDA7CgkJCQlyZXR1cm4gJGNvZWZmOwoJCQkJLy9lY2hvICJjb2VmZmljaWVudCBpbnRyb3V2YWJsZSAhIjsKCQkJfQoJfQp9CgpwdWJsaWMgZnVuY3Rpb24gY29lZmZfb3BzKCRyZWNvcmRfaWQsICRjb2VmZikKICB7CgkvL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKCQoJZ2xvYmFsICRnQ21zOwogICAgCSRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAJLy8kcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwoJLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5jYWxjdWxzLnBocCcpOwoJLy9lY2hvICRyZWNvcmRfaWQ7CgkvL2VjaG8gJGNvZWZmOwogICAgCS8vT24gcsOpY3Vww6hyZSBsZXMgaW5mb3MgZGUgbCdlbnJlZ2lzdHJlbWVudAogICAgCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgV0hFUkUgaWQgPSA/IjsKCWVjaG8gJHF1ZXJ5OwogICAgCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCgkJCgkKCQl3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgkJewoJCQkKCQkJJHZpY3RvaXJlID0gJHJvd1sndmljdG9pcmUnXTsKCQkJJGVjYXJ0ID0gJHJvd1sndHlwZV9lY2FydCddOwoJCQllY2hvICR2aWN0b2lyZTsKCQkJZWNobyAkZWNhcnQ7CgkJCSRwb2ludHMxID0gcGluZ19hZG1pbl9vcHM6OkNhbGN1bFBvaW50c0luZGl2cygkZWNhcnQsJHZpY3RvaXJlKTsKCQkJLy8kY29lZmYgPSAnMS4wMCc7CgkJCSRwb2ludHJlcyA9ICRwb2ludHMxKiRjb2VmZjsKCQkJZWNobyAkY29lZmY7CgkJCWVjaG8gJHBvaW50cmVzOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIAogICAgCQkJJHF1ZXJ5MyA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBTRVQgY29lZmYgPSA/LCBwb2ludHJlcyA9ID8gV0hFUkUgaWQgPSA/IjsKICAgIAkJCSRkYnJlc3VsdDIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5MywgYXJyYXkoJGNvZWZmLCAkcG9pbnRyZXMsICRyZWNvcmRfaWQpKTsKCSAgICAgICAgCgkJCQlpZighJGRicmVzdWx0MikKCQkJCXsKCQkJCQkkZGVzaWduYXRpb24gPSAkZGItPkVycm9yTXNnKCk7CgkJCQkJJHN0YXR1cyA9ICdFY2hlYyc7CgkJCQkJJGFjdGlvbiA9ICdtYXNzX2RlbGV0ZSB1cGRhdGUgcmVjdXAnOwoJCQkJCSRxdWVyeTQgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwIChpZCwgc3RhdHVzLCBkZXNpZ25hdGlvbiwgYWN0aW9uKSBWQUxVRVMgKCcnLCA/LCA/LCA/KSI7CgkJCQkJJGRicmVzdWx0MyA9ICRkYi0+RXhlY3V0ZSgkcXVlcnk0LCBhcnJheSgkc3RhdHVzLCAkZGVzaWduYXRpb24sICRhY3Rpb24pKTsKCQkJCX0KICAgICAgICAgICAgICAgIAoJCX0vL2ZpbiBkdSB3aGlsZQogIAkKCgogIH0vL2ZpbiBkZSBsYSBmb25jdGlvbgoKcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkdXBsaWNhdGUoJHJlY29yZF9pZCkKewoJZ2xvYmFsICRnQ21zOwoJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgV0hFUkUgaWQgPSA/IjsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCQp9CgpwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJldHJpZXZlX3NpdF9tZW5zKCRsaWNlbmNlKQogIHsKCS8vb24gdsOpcmlmaWUgc2kgbGEgc2l0dWF0aW9uIG1lbnN1ZWxsZSBhIGTDqWrDoCDDqXTDqSBwcmlzZSBlbiBjb21wdGUKCWdsb2JhbCAkZ0NtczsKCSRkYiA9IGNtc21zKCktPkdldERiKCk7Cgkkbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CgkkbW9pc19jb3VyYW50ID0gZGF0ZSgnbicpOy8vTW9pcyBhdSBmb3JtYXQgMSwgMiwgMyBldGMuLi4uCgkkYW5uZWVfY291cmFudGUgPSBkYXRlKCdZJyk7CgkkbW9pc19mcmFuY2FpcyA9IGFycmF5KCdKYW52aWVyJywgJ0bDqXZyaWVyJywnTWFycycsICdBdnJpbCcsICdNYWknLCAnSnVpbicsICdKdWlsbGV0JywnQW/Du3QnLCAnU2VwdGVtYnJlJywgJ09jdG9icmUnLCdOb3ZlbWJyZScsJ0TDqWNlbWJyZScpOwoJJG5vdyA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpLCAiJyIpOwoJJG1vaXNfcmVlbCA9ICRtb2lzX2NvdXJhbnQgLSAxOwoJJG1vaXNfc20gPSAkbW9pc19mcmFuY2Fpc1siJG1vaXNfcmVlbCJdOwoJJG1vaXNfc2l0X21lbnMgPSAkbW9pc19zbS4iICIuJGFubmVlX2NvdXJhbnRlOwoJCgkkcXVlcnkgPSAiU0VMRUNUIGxpY2VuY2UsIG5vbSwgcHJlbm9tIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgV0hFUkUgbGljZW5jZSA9ID8iOwoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UpKTsKCQoJCS8vaWwgZmF1dCBpbnN0YW5jaWVyIGxlIHNlcnZpY2UKCQkkc2VydmljZSA9IG5ldyBTZXJ2aWNlKCk7CgkJJHJlc3VsdCA9ICRzZXJ2aWNlLT5nZXRKb3VldXIoIiRsaWNlbmNlIik7CgkJLy92YXJfZHVtcCgkcmVzdWx0KTsKCQkKCQkJaWYoIWlzX2FycmF5KCRyZXN1bHQpKQoJCQl7CgkJCQkvL2xlIHNlcnZpY2UgZXN0IGNvdXDDqSBvdSBsYSBsaWNlbmNlIGVzdCBpbmFjdGl2ZQoJCQkJJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJCQkJJG5vbSA9ICRyb3dbJ25vbSddOwoJCQkJJHByZW5vbSA9ICRyb3dbJ3ByZW5vbSddOwoJCQkJJG1lc3NhZ2UuPSJMaWNlbmNlIGludHJvdXZhYmxlIG91IHNlcnZpY2UgY291cMOpIHBvdXIgIi4kbm9tLiIgIi4kcHJlbm9tOwoJCQkJJHN0YXR1cyA9ICdFY2hlYyc7CgkJCQkkZGVzaWduYXRpb24gPSAkbWVzc2FnZTsKCQkJCSRhY3Rpb24gPSAibWFzc19hY3Rpb24iOwoJCQkJcGluZ19hZG1pbl9vcHM6OmVjcmlyZWpvdXJuYWwoJG5vdywkc3RhdHVzLCAkZGVzaWduYXRpb24sJGFjdGlvbik7CgkJCX0KCQkJZWxzZXsKCQkJCS8vdG91dCB2YSBiaWVuIG9uIHBldXQgY29udGludWVyCgkJCQkkbGljZW5jZTIgPSAkcmVzdWx0W2xpY2VuY2VdOwoJCQkJLy8JZWNobyAibGEgbGljZW5jZSBlc3QgJGxpY2VuY2UgPGJyIC8+IjsKCQkJCSRub20gPSAkcmVzdWx0W25vbV07CgkJCQkkcHJlbm9tID0gJHJlc3VsdFtwcmVub21dOwoJCQkJLy9lY2hvICJsZSBkZXV4acOobWUgYXBwZWwgZXN0IDogIi4kbm9tLiIgIi4kcHJlbm9tLiAiPGJyIC8+IjsKCQkJCSRuYXRpbyA9ICRyZXN1bHRbbmF0aW9dOwoJCQkJJGNsZ2xvYiA9ICRyZXN1bHRbY2xnbG9iXTsKCQkJCSRwb2ludHMgPSAkcmVzdWx0W3BvaW50XTsKCQkJCSRhY2xnbG9iID0gJHJlc3VsdFthY2xnbG9iXTsKCQkJCSRhcG9pbnQgPSAkcmVzdWx0W2Fwb2ludF07CgkJCQkkY2xuYXQgPSAkcmVzdWx0W2NsbmF0XTsKCQkJCSRjYXRlZyA9ICRyZXN1bHRbY2F0ZWddOwoJCQkJJHJhbmdyZWcgPSAkcmVzdWx0W3JhbmdyZWddOwoJCQkJJHJhbmdkZXAgPSAkcmVzdWx0W3JhbmdkZXBdOwoJCQkJJHZhbGNsYSA9ICRyZXN1bHRbdmFsY2xhXTsKCQkJCSRjbHBybyA9ICRyZXN1bHRbY2xwcm9dOwoJCQkJJHZhbGluaXQgPSAkcmVzdWx0W3ZhbGluaXRdOwoJCQkJJHByb2dtb2lzID0gJHJlc3VsdFtwcm9nbW9pc107CgkJCQkkcHJvZ2FubiA9ICRyZXN1bHRbcHJvZ2Fubl07CgkJCQkKCQkJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2l0X21lbnMgKGlkLGRhdGVjcmVhdGVkLCBkYXRlbWFqLCBtb2lzLCBhbm5lZSwgcGhhc2UsIGxpY2VuY2UsIG5vbSwgcHJlbm9tLCBwb2ludHMsIGNsbmF0LCByYW5ncmVnLHJhbmdkZXAsIHByb2dtb2lzKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkJCQkvL2VjaG8gJHF1ZXJ5OwoJCQkJJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRub3csJG5vdywkbW9pc19jb3VyYW50LCAkYW5uZWVfY291cmFudGUsICRwaGFzZSwgJGxpY2VuY2UyLCAkbm9tLCAkcHJlbm9tLCAkcG9pbnRzLCAkY2xuYXQsICRyYW5ncmVnLCAkcmFuZ2RlcCwgJHByb2dtb2lzKSk7CgoJCQkJCWlmKCEkZGJyZXN1bHRhdCkKCQkJCQl7CgkJCQkJCSRtZXNzYWdlID0gJGRiLT5FcnJvck1zZygpOyAKCQkJCQkJJHN0YXR1cyA9ICdFY2hlYyc7CgkJCQkJCSRkZXNpZ25hdGlvbiA9ICRtZXNzYWdlOwoJCQkJCQkkYWN0aW9uID0gIm1hc3NfYWN0aW9uIjsKCQkJCQkJcGluZ19hZG1pbl9vcHM6OmVjcmlyZWpvdXJuYWwoJG5vdywkc3RhdHVzLCAkZGVzaWduYXRpb24sJGFjdGlvbik7CgkJCQkJCQoJCQkJCX0KCQkJCQllbHNlIHsKCQkJCQkJJHN0YXR1cyA9ICdPayc7CgkJCQkJCSRkZXNpZ25hdGlvbiA9ICJTaXR1YXRpb24gb2sgcG91ciAiLiRub20uIiAiLiRwcmVub207CgkJCQkJCSRhY3Rpb24gPSAnbWFzc19hY3Rpb24nOwoJCQkJCQlwaW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsICRkZXNpZ25hdGlvbiwkYWN0aW9uKTsKCQkJCQkJLy9vbiBtZXQgbGEgdGFibGUgcmVjdXAgw6Agam91ciBwb3VyIGxlIGpvdWV1cgoJCQkJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIFNFVCBkYXRlbWFqID0gPyAsIHNpdF9tZW5zID0gPyBXSEVSRSBsaWNlbmNlID0gPyI7CgkJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRub3csICRtb2lzX3NpdF9tZW5zLCAkbGljZW5jZTIpKTsKCQkJCQl9CgkJCQkKCQkJCQoJCQkJLy8kbWVzc2FnZS49IjxsaT5MYSBsaWNlbmNlIGVzdCBvazwvbGk+IjsKCQkJfS8vZmluIGR1IGVsc2UJIWlzX2FycmF5CgkKCS8vcGFzIGRlIGJvbCBsYSBzaXR1YXRpb24gbWVuc3VlbGxlIGVzdCBkw6lqw6AgcHLDqXNlbnRlCgkKLy8JcmV0dXJuICRkZXNpZ25hdGlvbjsKCQoJCiAgfQoKcHVibGljIGZ1bmN0aW9uIHJldHJpZXZlX3BhcnRpZXNfc3BpZCggJGxpY2VuY2UgKQogIHsKCWdsb2JhbCAkZ0NtczsKCSRkYiA9IGNtc21zKCktPkdldERiKCk7CgkvL2VjaG8gImNvb2wgISI7CgkkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwoJLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5jYWxjdWxzLnBocCcpOwoJLy9lY2hvICJnbG9wMiI7Cgkkc2Fpc29uX2NvdXJhbnRlID0gJHBpbmctPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwoJJG5vdyA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpLCAiJyIpOwoJJGF1am91cmRodWkgPSBkYXRlKCdZLW0tZCcpOwoJJHF1ZXJ5ID0gIlNFTEVDVCBDT05DQVRfV1MoJyAnLCBub20sIHByZW5vbSkgQVMgcGxheWVyIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgV0hFUkUgbGljZW5jZSA9ID8iOwoJJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UpKTsKCWlmICgkZGJyZXRvdXIgJiYgJGRicmV0b3VyLT5SZWNvcmRDb3VudCgpID4gMCkKCXsKCSAgICB3aGlsZSAoJHJvdz0gJGRicmV0b3VyLT5GZXRjaFJvdygpKQoJCXsKCQkkcGxheWVyID0gJHJvd1sncGxheWVyJ107CgkJJHNlcnZpY2UgPSBuZXcgU2VydmljZSgpOwoJCSRyZXN1bHQgPSAkc2VydmljZS0+Z2V0Sm91ZXVyUGFydGllc1NwaWQoIiRsaWNlbmNlIik7CgkJLy9lY2hvICJnbG9wMyI7CgkJLy92YXJfZHVtcCgkcmVzdWx0KTsKCQkvL2xlIHNlcnZpY2UgZXN0LWlsIG91dmVydCA/CgkJLyoqLwoJCS8vb24gdGVzdGUgbGUgcmVzdWx0YXQgcmV0b3VybsOpICAgICAKCQkvL29uIGNvbnRyb2xlIGxlIG5iIGQnZW50csOpZXMgZHUgdGFibGVhdSByZXRvdXJuw6kKCQkvL29uIGxlIGNvbXBhcmUgYXZlYyBsZSBjaGlmZnJlIGRzIGxhIGJhc2UgZGUgZG9ubsOpZXMKCQkkbGlnbmVzID0gY291bnQoJHJlc3VsdCk7Ly9vbiBjb21wdGUgbGUgbmIgZCfDqWzDqW1lbnRzIGR1IHRhYmxlYXUKCQkvL29uIGNvbXB0ZSBsZSBuYiBkZSByw6lzdWx0YXRzIGR1IHNwaWQgcHLDqXNlbnQgZHMgbGEgYmRkIHBvdXIgbGUgam91ZXVyCgkJJHNwaWQgPSBwaW5nX2FkbWluX29wczo6Y29tcHRlX3NwaWQoJGxpY2VuY2UpOwoJCQoJCQlpZighaXNfYXJyYXkoJHJlc3VsdCkpCgkJCXsKCgkJCQkkbWVzc2FnZSA9ICJTZXJ2aWNlIGNvdXDDqSI7IAoJCQkJJHN0YXR1cyA9ICdFY2hlYyc7CgkJCQkkZGVzaWduYXRpb24gPSAkbWVzc2FnZTsKCQkJCSRhY3Rpb24gPSAibWFzc19hY3Rpb24iOwoJCQkJcGluZ19hZG1pbl9vcHM6OmVjcmlyZWpvdXJuYWwoJG5vdywkc3RhdHVzLCAkZGVzaWduYXRpb24sJGFjdGlvbik7CgkJCQkKCQkJfQoJCQllbHNlaWYoJGxpZ25lcyA8PSAkbnVtYmVyKQoJCQl7CgkJCQkkbWVzc2FnZSA9ICJSw6lzdWx0YXRzIFNQSUQgw6Agam91ciBwb3VyICIuJHBsYXllci4iIDogIi4kc3BpZC4iIGVuIGJhc2UgZGUgZG9ubsOpZXMgIi4kbGlnbmVzLiIgZW4gbGlnbmUuIjsgCgkJCQkkc3RhdHVzID0gJ0VjaGVjJzsKCQkJCSRkZXNpZ25hdGlvbiA9ICRtZXNzYWdlOwoJCQkJJGFjdGlvbiA9ICJtYXNzX2FjdGlvbiI7CgkJCQlwaW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsICRkZXNpZ25hdGlvbiwkYWN0aW9uKTsKCQkJCQoJCQkJaWYoJGxpZ25lcyA9PSAkbnVtYmVyKQoJCQkJewoJCQkJCSRxdWVyeTQgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIFNFVCBtYWpfc3BpZCA9ID8gV0hFUkUgbGljZW5jZSA9ID8gQU5EIHNhaXNvbiA9ID8iOwoJCQkJCSRkYnJlc3VsdDQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5NCxhcnJheSgkYXVqb3VyZGh1aSwkbGljZW5jZSwkc2Fpc29uX2NvdXJhbnRlKSk7CgkJCQl9CgkJCQkKCQkJCQoJCQl9CgkJCWVsc2UKCQkJewoJCQkJJGkgPSAwOwoJCQkJJGNvbXB0ZXVyID0gMDsKCQkJCSRhID0gMDsvL2NlIGNvbXB0ZXVyIHNlcnQgYXUgcGFydGllcyBub24gcsOpY3Vww6lyw6llcyBwYXIgc2l0IG1lbnMgdmlkZQoJCQkJLy9vbiB2YSBjb21wdGVyIGxlcyBlcnJldXJzCgkJCQkkZXJyb3IgPSAwOy8vbGUgY29tcHRldXIgZCdlcnJldXJzCgkJCQkkcXVlcnkxID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgV0hFUkUgc2Fpc29uID0gPyBBTkQgbGljZW5jZSA9ID8iOwoJCQkJJGRicmVzdWx0MSA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkxLCBhcnJheSgkc2Fpc29uX2NvdXJhbnRlLCAkbGljZW5jZSkpOwoJCQkJZm9yZWFjaCgkcmVzdWx0IGFzICRjbGUgPT4kdGFiKQoJCQkJewoKCQkJCQkkY29tcHRldXIrKzsKCgkJCQkJJGRhdGVldmVudCA9ICR0YWJbZGF0ZV07CgkJCQkJJGNoZ3QgPSBleHBsb2RlKCIvIiwkZGF0ZWV2ZW50KTsKCQkJCQkkZGF0ZV9ldmVudCA9ICRjaGd0WzJdLiItIi4kY2hndFsxXS4iLSIuJGNoZ3RbMF07CgkJCQkJJGFubmVlID0gJzIwJy4kY2hndFsyXTsKCQkJCQkKCQkJCQkJaWYgKHN1YnN0cigkY2hndFsxXSwgMCwxKT09MCkKCQkJCQkJewoJCQkJCQkJJG1vaXNfZXZlbnQgPSBzdWJzdHIoJGNoZ3RbMV0sIDEsMSk7CgkJCQkJCQkvL2VjaG8gImxhIGRhdGUgZXN0Ii4kZGF0ZV9ldmVudDsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSRtb2lzX2V2ZW50ID0gJGNoZ3RbMV07CgkJCQkJCX0KCQkJCQkvL29uIHZhIHbDqXJpZmllciBzaSBvbiBhIGxhIHNpdHVhdGlvbiBtZW5zdWVsbGUgZHUgam91ZXVyIGR1IGNsdWIgw6Agam91ciBwb3VyIGxlIG1vaXMgZW4gcXVlc3Rpb24KCQkJCQkkcmV0b3VyX3NpdF9tZW5zID0gcGluZ19hZG1pbl9vcHM6OmdldF9zaXRfbWVucygkbGljZW5jZSwkbW9pc19ldmVudCwkYW5uZWUpOwoJCQkJCWlmKCRyZXRvdXJfc2l0X21lbnM9PTApCgkJCQkJewoJCQkJCQkkZGVzaWduYXRpb24uPSJTaXR1YXRpb24gZHUgbW9pcyAiLiRtb2lzX2V2ZW50LiIgbWFucXVhbnRlIHBvdXIgIi4kcGxheWVyOwoJCQkJCQkkYSsrOwoJCQkJCQkkZXJyb3IrKzsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJCgkJCQkJJG5vbSA9ICR0YWJbbm9tXTsKCQkJCQkvL29uIGFkYXB0ZSBzb24gbm9tIGQnYWJvcmQKCQkJCQkkbm9tX2dsb2JhbCA9IHBpbmdfYWRtaW5fb3BzOjpnZXRfbmFtZSgkbm9tKTsvL3VuZSBmb25jdGlvbiBxdWkgcGVybWV0IGQnZXh0cmFpcmUgbGUgbm9tIGV0IGxlIHByw6lub20KCQkJCQkkbm9tX3JlZWwxID0gJG5vbV9nbG9iYWxbMF07CgkJCQkJJG5vbV9yZWVsID0gYWRkc2xhc2hlcygkbm9tX2dsb2JhbFswXSk7Ly9sZSBub20JCQkJCQoJCQkJCSRwcmVub21fcmVlbCA9ICRub21fZ2xvYmFsWzFdOy8vbGUgcHLDqW5vbQoJCQkJCSRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKCQkJCQkKCQkJCQkkY2xhc3NlbWVudCA9ICR0YWJbY2xhc3NlbWVudF07Ly9jbGFzc2VtZW50IGZvdXJuaSBwYXIgbGUgc3BpZAoJCQkJCSRjbGEgPSBzdWJzdHIoJGNsYXNzZW1lbnQsIDAsMSk7CgkJCQkJCS8vQXZlYyBsZSBub20gb24gdmEgYWxsZXIgY2hlcmNoZXIgbGEgc2l0dWF0aW9uIG1lbnN1ZWxsZSBkZSBsJ2FkdmVyc2FpcmUKCQkJCQkJLy9vbiBwb3VycmEgbGEgc3RvY2tlciBwb3VyIHF1J2VsbGUgcmUtc2VydmUgZXQgbCd1dGlsaXNlciBwb3VyIGFmZmluZXIgbGUgY2FsY3VsIGRlcyBwb2ludHMKCQkJCQkJLy9kJ2Fib3JkIG9uIHZhIGNoZXJjaGVyIGRzIGxhIGJkZCBzaSBsJ2FkdmVyc2FpcmUgeSBlc3QgZMOpasOgIHBvdXIgbGUgbW9pcyBldCBsYSBzYWlzb24gZW4gcXVlc3Rpb24KCQkJCQkJJHF1ZXJ5NCA9ICJTRUxFQ1QgcG9pbnRzIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2FkdmVyc2FpcmVzIFdIRVJFIG5vbSA9ID8gQU5EIHByZW5vbSA9ID8gQU5EIG1vaXMgPSA/IEFORCBhbm5lZSA9ID8iOwoJCQkJCQkvL2VjaG8gJHF1ZXJ5NC4nPGJyIC8+JzsKCQkJCQkJJGRicmVzdWx0NCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnk0LCBhcnJheSgkbm9tX3JlZWwxLCAkcHJlbm9tX3JlZWwsJG1vaXNfZXZlbnQsJGFubmVlX2NvdXJhbnRlKSk7CgoJCQkJCQkJaWYoJGRicmVzdWx0NCAmJiAkZGJyZXN1bHQ0LT5SZWNvcmRDb3VudCgpPjAgJiYgJGRicmVzdWx0NC0+UmVjb3JkQ291bnQoKSA8MikvL29rIG9uIGEgdW4gZW5yZWdpc3RyZW1lbnQgcXVpIGNvcnJlc3BvbmQKCQkJCQkJCXsKCQkJCQkJCQkkcm93NCA9ICRkYnJlc3VsdDQtPkZldGNoUm93KCk7CgkJCQkJCQkJJG5ld2NsYXNzID0gJHJvdzRbJ3BvaW50cyddOwoJCQkJCQkJfQoJCQkJCQkJLy9kZXV4acOobWUgY2FzIDogCgkJCQkJCQkvL29uIG4nYSBwYXMgZCdlbnJlZ2lzdHJlbWVudCBldCBvbiBlc3QgZGFucyBsZSBtb2lzIGNvdXJhbnQgZXQgbCdhbm7DqWUgY291cmFudGUgOiBvbiB2YSBjaGVyY2hlciBsZXMgcG9pbnRzIGF2ZWMgbGEgY2xhc3NlIHBvdXIgZW5zdWl0ZSBsJ2luc8OpcmVyIGRzIGxhIGJkZAoJCQkJCQkJZWxzZWlmKCRkYnJlc3VsdDQtPlJlY29yZENvdW50KCk9PTAgJiYgJG1vaXNfZXZlbnQgPT0gZGF0ZSgnbicpICYmICRhbm5lZSA9PSBkYXRlKCdZJykpCgkJCQkJCQl7CgkJCQkJCQkJLy9vbiB2YSBjaGVyY2hlciBsYSBzaXQgbWVucyBkdSBwb25naXN0ZQoJCQkJCQkJCQoKCQkJCQkJCQkkc2VydmljZSA9IG5ldyBTZXJ2aWNlKCk7CgkJCQkJCQkJJHJlc3VsdGF0ID0gJHNlcnZpY2UtPmdldEpvdWV1cnNCeU5hbWUoIiRub21fcmVlbCIsICRwcmVub20gPSIkcHJlbm9tX3JlZWwiKTsKCQkJCQkJCQkvL3Zhcl9kdW1wKCRyZXN1bHRhdCk7CgkJCQkJCQkJaWYoaXNfYXJyYXkoJHJlc3VsdGF0KSAmJiBjb3VudCgkcmVzdWx0YXQpPjAgJiYgY291bnQoJHJlc3VsdGF0KTwyKQoJCQkJCQkJCXsvL29uIGEgYmllbiB1biB0YWJsZWF1IGF2ZWMgYXUgbW9pbnMgdW4gw6lsw6ltZW50IDogYydlc3Qgb2sgIQoKCQkJCQkJCQkJCS8vb24gYSB1biByw6lzdWx0YXQgPwoJCQkJCQkJCQkJLy9lY2hvICJHbG9wIjsKCQkJCQkJCQkJCS8vJGNvbXB0ZXVyKys7CgkJCQkJCQkJCQkkbGljZW4gPSAkcmVzdWx0YXRbMF1bbGljZW5jZV07Ly9vbiBhIGJpZW4gdW4gbnVtw6lybyBkZSBsaWNlbmNlLCBvbiBwZXV0IGRvbmMgcsOpY3Vww6lyZXIgbGEgc2l0dWF0aW9uIG1lbnN1ZWxsZSBlbiBjb3VycwoJCQkJCQkJCQkJLy9lY2hvICRsaWNlbi4nPGJyIC8+JzsKCQkJCQkJCQkJCSRzZXJ2aWNlID0gbmV3IFNlcnZpY2UoKTsKCQkJCQkJCQkJCSRyZXN1bHRhdDIgPSAkc2VydmljZS0+Z2V0Sm91ZXVyKCIkbGljZW4iKTsKCgkJCQkJCQkJCQlpZihpc19hcnJheSgkcmVzdWx0YXQyKSAmJiBjb3VudCgkcmVzdWx0YXQyKT4wKQoJCQkJCQkJCQkJewoJCQkJCQkJCQkJCSRsaWNlbmNlMiA9ICRyZXN1bHRhdDJbbGljZW5jZV07CgkJCQkJCQkJCQkJJG5vbSA9ICRyZXN1bHRhdDJbbm9tXTsKCQkJCQkJCQkJCQkvL2VjaG8gJ2F1dHJlIG5vbSA6ICcuJG5vbSAuJyAnLiRwcmVub207CgkJCQkJCQkJCQkJJHByZW5vbSA9ICRyZXN1bHRhdDJbcHJlbm9tXTsKCQkJCQkJCQkJCQkkbmF0aW8gPSAkcmVzdWx0YXQyW25hdGlvXTsKCQkJCQkJCQkJCQkkY2xnbG9iID0gJHJlc3VsdGF0MltjbGdsb2JdOwoJCQkJCQkJCQkJCSRwb2ludCA9ICRyZXN1bHRhdDJbcG9pbnRdOwoJCQkJCQkJCQkJCSRhY2xnbG9iID0gJHJlc3VsdGF0MlthY2xnbG9iXTsKCQkJCQkJCQkJCQkkYXBvaW50ID0gJHJlc3VsdGF0MlthcG9pbnRdOwoJCQkJCQkJCQkJCSRjbG5hdCA9ICRyZXN1bHRhdDJbY2xuYXRdOwoJCQkJCQkJCQkJCSRjYXRlZyA9ICRyZXN1bHRhdDJbY2F0ZWddOwoJCQkJCQkJCQkJCSRyYW5ncmVnID0gJHJlc3VsdGF0MltyYW5ncmVnXTsKCQkJCQkJCQkJCQkkcmFuZ2RlcCA9ICRyZXN1bHRhdDJbcmFuZ2RlcF07CgkJCQkJCQkJCQkJJHZhbGNsYSA9ICRyZXN1bHRhdDJbdmFsY2xhXTsKCQkJCQkJCQkJCQkkY2xwcm8gPSAkcmVzdWx0YXQyW2NscHJvXTsKCQkJCQkJCQkJCQkkdmFsaW5pdCA9ICRyZXN1bHRhdDJbdmFsaW5pdF07CgkJCQkJCQkJCQkJJHByb2dtb2lzID0gJHJlc3VsdGF0Mltwcm9nbW9pc107CgkJCQkJCQkJCQkJJHByb2dhbm4gPSAkcmVzdWx0YXQyW3Byb2dhbm5dOwoJCQkJCQkJCQkJCSRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKCQkJCQkJCQkJCQkvL29uIGluc8OocmUgbGUgdG91dCBkYW5zIGxhIGJkZAoJCQkJCQkJCQkJCSRxdWVyeTUgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2FkdmVyc2FpcmVzIChpZCxkYXRlY3JlYXRlZCwgZGF0ZW1haiwgbW9pcywgYW5uZWUsIHBoYXNlLCBsaWNlbmNlLCBub20sIHByZW5vbSwgcG9pbnRzLCBjbG5hdCwgcmFuZ3JlZyxyYW5nZGVwLCBwcm9nbW9pcykgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkJCQkJCQkJCS8vZWNobyAkcXVlcnk1OwoJCQkJCQkJCQkJCSRkYnJlc3VsdGF0NSA9ICRkYi0+RXhlY3V0ZSgkcXVlcnk1LGFycmF5KCRub3csJG5vdywkbW9pc19ldmVudCwgJGFubmVlX2NvdXJhbnRlLCAkcGhhc2UsICRsaWNlbmNlMiwgJG5vbSwgJHByZW5vbSwgJHBvaW50LCAkY2xuYXQsICRyYW5ncmVnLCAkcmFuZ2RlcCwgJHByb2dtb2lzKSk7CgkJCQkJCQkJCQkJCS8vT24gdsOpcmlmaWUgcXVlIGwnaW5zZXJ0aW9uIHNlIHBhc3NlIGJpZW4KCQkJCQkJCQkJCQkkbmV3Y2xhc3MgPSAkcG9pbnQ7CgkJCQkJCQkJCQl9CgkJCQkJCQkJCQllbHNlCgkJCQkJCQkJCQl7CgkJCQkJCQkJCQkJaWYoJGNsYSA9PSAnTicpewoJCQkJCQkJCQkJCQkkbmV3Y2xhc3NlbWVudCA9IGV4cGxvZGUoJy0nLCAkY2xhc3NlbWVudCk7CgkJCQkJCQkJCQkJCSRuZXdjbGFzcyA9ICRuZXdjbGFzc2VtZW50WzFdOwoJCQkJCQkJCQkJCX0KCQkJCQkJCQkJCQllbHNlIAoJCQkJCQkJCQkJCXsKCQkJCQkJCQkJCQkJJG5ld2NsYXNzID0gJGNsYXNzZW1lbnQ7CgkJCQkJCQkJCQkJfQoJCQkJCQkJCQkJfQoKCgkJCQkJCQkJfQoJCQkJCQkJCWVsc2UKCQkJCQkJCQl7CgkJCQkJCQkJCWlmKGNvdW50KCRyZXN1bHRhdCk+MSkvL2hvbW9ueW1pZSwgZXRjLi4uCgkJCQkJCQkJCXsKCQkJCQkJCQkJCSRkZXNpZ25hdGlvbi49IkhvbW9ueW1pZSBwb3VyICIuJHBsYXllcjsKCQkJCQkJCQkJCSRlcnJvcisrOwoJCQkJCQkJCQl9CgkJCQkJCQkJCS8vZWNobyAiUGFzIEdsb3AiOwoJCQkJCQkJCQlpZigkY2xhID09ICdOJyl7CgkJCQkJCQkJCQkkbmV3Y2xhc3NlbWVudCA9IGV4cGxvZGUoJy0nLCAkY2xhc3NlbWVudCk7CgkJCQkJCQkJCQkkbmV3Y2xhc3MgPSAkbmV3Y2xhc3NlbWVudFsxXTsKCQkJCQkJCQkJfQoJCQkJCQkJCQllbHNlIAoJCQkJCQkJCQl7CgkJCQkJCQkJCQkkbmV3Y2xhc3MgPSAkY2xhc3NlbWVudDsKCQkJCQkJCQkJfQoJCQkJCQkJCX0vL2ZpbiBkdSBpZiBpc19hcnJheSgkcmVzdWx0YXQpCgkJCQkJCQl9CgkJCQkJCQllbHNlCgkJCQkJCQl7CgkJCQkJCQkJLy90cm9pc2nDqG1lIGNhcyA6IAoJCQkJCQkJCS8vb24gbidhIHBhcyBsZXMgcG9pbnRzIGV0IG9uIG4nZXN0IHBhcyBkYW5zIGxlIG1vaXMgY291cmFudCwgb24gbidpbnPDqHJlIHBhcyBldCBvbiB1dGlsaXNlIGxlIGNsYXNzZW1lbnQgZm91cm5pCgkJCQkJCQkJaWYoJGNsYSA9PSAnTicpewoJCQkJCQkJCQkkbmV3Y2xhc3NlbWVudCA9IGV4cGxvZGUoJy0nLCAkY2xhc3NlbWVudCk7CgkJCQkJCQkJCSRuZXdjbGFzcyA9ICRuZXdjbGFzc2VtZW50WzFdOwoJCQkJCQkJCX0KCQkJCQkJCQllbHNlIAoJCQkJCQkJCXsKCQkJCQkJCQkJJG5ld2NsYXNzID0gJGNsYXNzZW1lbnQ7CgkJCQkJCQkJfQoJCQkJCQkJfQoJCQkJCS8vb24gdmEgY2FsY3VsZXIgbGEgZGlmZsOpcmVuY2UgZW50cmUgbGUgY2xhc3NlbWVudCBkZSBsJ2FkdmVyc2FpcmUgZXQgbGUgY2xhc3NlbWVudCBkdSBqb3VldXIgZHUgY2x1YgoJCQkJCSRxdWVyeSA9ICJTRUxFQ1QgcG9pbnRzIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIFdIRVJFIGxpY2VuY2UgPSA/IEFORCBtb2lzID0gPyBBTkQgYW5uZWUgPSA/IjsKCQkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSwkbW9pc19ldmVudCwkYW5uZWUpKTsKCQkJCQkvL3NpIGxhIHNpdHVhdGlvbiBtZW5zdWVsbGUgZHUgam91ZXVyIGR1IGNsdWIgbidleGlzdGUgcGFzID8KCQkJCQkvL2Fsb3JzIG9uIG4nZW5yZWdpc3RyZSBwYXMgbGUgcsOpc3VsdGF0IGV0IG9uIGxlIHNpZ25hbGUKCQkJCQkJaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkKCQkJCQkJewoJCQkJCQkJLy8kZGVzaWduYXRpb24uPSJFY2FydCBub24gY2FsY3Vsw6kiOwoJCQkJCQkJJGVjYXJ0ID0gMDsKCQkJCQkJCSRlcnJvcisrOwoJCQkJCQl9CgkJCQkJCQoKCQkJCQkkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJCQkJCSRwb2ludHMgPSAkcm93W3BvaW50c107CgkJCQkJJGVjYXJ0X3JlZWwgPSAkcG9pbnRzIC0gJG5ld2NsYXNzOwoJCQkJCQoJCQkJCS8vb24gY2FsY3VsZSBsJ8OpY2FydCBzZWxvbiBsYSBncmlsbGUgZGUgcG9pbnRzIGRlIGxhIEZGVFQKCQkJCQkkdHlwZV9lY2FydCA9IHBpbmdfYWRtaW5fb3BzOjpDYWxjdWxFY2FydCgkZWNhcnRfcmVlbCk7CgkJCQkJJGVwcmV1dmUgPSAkdGFiW2VwcmV1dmVdOwoJCQkJCS8vZWNobyAkZWNhcnRfcmVlbDsKCQkJCQkvLyBkZSBxdWVsbGUgY29tcMOpdGl0aW9uIHMnYWdpdC1pbCA/IAoJCQkJCS8vT24gYSBsYSBkYXRlIGV0IGxlIHR5cGUgZCfDqXByZXV2ZQoJCQkJCS8vb24gcGV1dCBkb25jIGVuIGTDqWR1aXJlIGxlIHRvdXIgdmlhIGxlIGNhbGVuZHJpZXIKCQkJCQkvL2V0IGxlIGNvZWZmaWNpZW50IHBvdXIgY2FsY3VsZXIgbGVzIHBvaW50cyB2aWEgbGEgdGFibGUgdHlwZV9jb21wZXRpdG9ucwoJCQkJCQoJCQkJCS8vMSAtIG9uIHLDqWN1cMOpcmUgbGUgdG91ciBzJ2lsIGV4aXN0ZQoJCQkJCS8vb24gdmEgZmRvbmMgY2hlcmNoZXIgZGFucyBsYSB0YWJsZSBjYWxlbmRyaWVyCgkJCQkJJHF1ZXJ5ID0gIlNFTEVDVCBudW1qb3VybiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jYWxlbmRyaWVyIFdIRVJFIGRhdGVfZGVidXQgPSA/IE9SIGRhdGVfZmluID0gPyI7CgkJCQkJJHJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGRhdGVfZXZlbnQsICRkYXRlX2V2ZW50KSk7CgoJCQkJCQlpZiAoJHJlc3VsdGF0ICYmICRyZXN1bHRhdC0+UmVjb3JkQ291bnQoKT4wKXsKCQkJCQkJCSRyb3cgPSAkcmVzdWx0YXQtPkZldGNoUm93KCk7CgkJCQkJCQkkbnVtam91cm4gPSAkcm93W251bWpvdXJuXTsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSRudW1qb3VybiA9IDA7CgkJCQkJCX0KCQkJCQkKCQkJCS8vCSRudW1qb3VybiA9IDA7CgkJCQkJLy8yIC0gb24gcsOpY3Vww6hyZSBsZSBjb2VmZmljaWVudCBkZSBsYSBjb21ww6l0aXRpb24KCQkJCQkkY29lZmYgPSBwaW5nX2FkbWluX29wczo6Y29lZmYoJGVwcmV1dmUsJGxpY2VuY2UpOwoJCQkJCWlmKCRjb2VmZiA9PSAnMCcpCgkJCQkJewoJCQkJCQkkZXJyb3IrKzsKCQkJCQl9CgkJCQkJCgkJCQkJLy8kcG9pbnRyZXMgPSAkcG9pbnRzKiRjb2VmZjsKCQkJCQkvL2ZpbiBkdSBwb2ludCAyCgoJCQkJCSR2aWN0b2lyZSA9ICR0YWJbdmljdG9pcmVdOwoKCQkJCQkJaWYgKCR2aWN0b2lyZSA9PSdWJyl7CgkJCQkJCQkkdmljdG9pcmUgPSAxOwoJCQkJCQl9CgkJCQkJCWVsc2UgCgkJCQkJCXsKCQkJCQkJCSR2aWN0b2lyZSA9IDA7CgkJCQkJCX0KCgkJCQkJLy9vbiBwZXV0IGTDqXNvcm1haXMgY2FsY3VsZXIgbGVzIHBvaW50cyAKCQkJCQkvL2VjaG8gImxhIHZpY3RvaXJlIGVzdCA6ICIuJHZpY3RvaXJlLiI8YnIgLz4iOwoJCQkJCSRwb2ludHMxID0gcGluZ19hZG1pbl9vcHM6OkNhbGN1bFBvaW50c0luZGl2cygkdHlwZV9lY2FydCwgJHZpY3RvaXJlKTsKCQkJCQkvL2VjaG8gImxlIGNvZWZmIGVzdCA6ICIuJGNvZWZmLiI8YnIgLz4iOwoJCQkJCS8vZWNobyAibGUgdHlwZSBlY2FydCBlc3QgOiAiLiR0eXBlX2VjYXJ0LiI8YnIgLz4iOwoJCQkJCS8vZWNobyAibGVzIHBvaW50cyAxIHNvbnQgOiAiLiRwb2ludHMxLiI8YnIgLz4iOwoJCQkJCSRwb2ludHJlcyA9ICRwb2ludHMxKiRjb2VmZjsKCQkJCQkkZm9yZmFpdCA9ICR0YWJbZm9yZmFpdF07CgoJCQkJCS8vb24gZMOpdHJ1aXQgdHRzIGxlcyBkb25uw6llcyBkZSBjZSBqb3VldXIKCQkJCQkvL29uIHRlc3RlIHVuIHRydWMgZGUgZ3VlZGluCgkJCQkJLy9vbiBzdXBwcmltZSB0b3VzIGxlcyBlbnJlZ2lzdHJlbWVudHMgY29uY2VybmFudCBsZSBqb3VldXIgZHMgbGEgYmFzZSBkZSBkb25uw6llcyBwb3VyIGxlcyByZW1wbGFjZXIgcGFyIGxlcyBub3V2ZWxsZXMKCQkJCQkKCQkJCQkKCQkJCQkkcXVlcnkzID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgKGlkLCBzYWlzb24sIGRhdGVtYWosIGxpY2VuY2UsIGRhdGVfZXZlbnQsIGVwcmV1dmUsIG5vbSwgbnVtam91cm4sY2xhc3NlbWVudCwgdmljdG9pcmUsZWNhcnQsdHlwZV9lY2FydCwgY29lZmYsIHBvaW50cmVzLCBmb3JmYWl0KSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkJCQkJJGkrKzsKCQkJCQkvL2VjaG8gJHF1ZXJ5OwoJCQkJCSRkYnJlc3VsdGF0MyA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkzLGFycmF5KCRzYWlzb25fY291cmFudGUsJG5vdywgJGxpY2VuY2UsICRkYXRlX2V2ZW50LCAkZXByZXV2ZSwgJG5vbSwgJG51bWpvdXJuLCAkbmV3Y2xhc3MsICR2aWN0b2lyZSwkZWNhcnRfcmVlbCwkdHlwZV9lY2FydCwgJGNvZWZmLCRwb2ludHJlcywgJGZvcmZhaXQpKTsKCgkJCQkJaWYoISRkYnJlc3VsdGF0MykKCQkJCQkJewoJCQkJCQkJJG1lc3NhZ2UgPSAkZGItPkVycm9yTXNnKCk7IAoJCQkJCQkJJHN0YXR1cyA9ICdFY2hlYyc7CgkJCQkJCQkkZGVzaWduYXRpb24gPSAkbWVzc2FnZTsKCQkJCQkJCSRhY3Rpb24gPSAibWFzc19hY3Rpb24iOwoJCQkJCQkJcGluZ19hZG1pbl9vcHM6OmVjcmlyZWpvdXJuYWwoJG5vdywkc3RhdHVzLCAkZGVzaWduYXRpb24sJGFjdGlvbik7CgkJCQkJCX0KCgkJCQkJLy9vbiBtZXQgw6Agam91ciBsYSBkYXRlIGRlIG1haiBkZXMgcsOpc3VsdGF0cyBTUElECgkJCQkJCgkJCQkJCgkJCQkJfS8vZmluIGR1IGlmIHNpIGxhIHNpdCBtZW5zIGR1IGpvdWV1ciBkdSBjbHViIGVzdCBkw7ttZW50IHJlbnNlaWduw6llCgoJCQkJfS8vZmluIGR1IGZvcmVhY2gKCQkJCQoJCQkJJGNvbXB0YWdlID0gJGk7CgkJCQkkcXVlcnk0ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyBTRVQgbWFqX3NwaWQgPSA/LCBzcGlkID0gPyxzcGlkX3RvdGFsID0gPyBXSEVSRSBsaWNlbmNlID0gPyBBTkQgc2Fpc29uID0gPyI7CgkJCQkkZGJyZXN1bHQ0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTQsYXJyYXkoJGF1am91cmRodWksJGNvbXB0YWdlLCRjb21wdGV1ciwkbGljZW5jZSwkc2Fpc29uX2NvdXJhbnRlKSk7CgkJCQkKCQkJCSRzdGF0dXMgPSAnUGFydGllcyBTUElEJzsKCQkJCSRkZXNpZ25hdGlvbiAuPSAkY29tcHRhZ2UuIiBwYXJ0aWVzIFNwaWQgc3VyICIuJGNvbXB0ZXVyLiIgIGRlICIuJHBsYXllcjsKCQkJCWlmKCRhID4wKQoJCQkJewoJCQkJCSRkZXNpZ25hdGlvbi49ICIgIi4kYS4iIHBhcnRpZXMgU3BpZCBub24gcsOpY3Vww6lyw6llcyAoc2l0dWF0aW9uIG1lbnN1ZWxsZSBtYW5xdWFudGUpIjsKCQkJCX0KCQkJCSRhY3Rpb24gPSAibWFzc19hY3Rpb24iOwoJCQkJcGluZ19hZG1pbl9vcHM6OmVjcmlyZWpvdXJuYWwoJG5vdywkc3RhdHVzLCAkZGVzaWduYXRpb24sJGFjdGlvbik7CgoJCQl9Ly9maW4gZHUgaWYgIWlzX2FycmF5CgkJfS8vZmluIGR1IHdoaWxlCgl9Ly9maW4gZHUgaWYgZGJyZXRvdXIgPjAKCgoKCgoKCgoKICB9Ly9maW4gZGUgbGEgZm9uY3Rpb24KIyMKIyMKIyMKIyMKIyAgIFJldHJpZXZlIHBhcnRpZXMgRkZUVAoKcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXRyaWV2ZV9wYXJ0aWVzX2ZmdHQoICRsaWNlbmNlICkKICB7CglnbG9iYWwgJGdDbXM7CgkkZGIgPSBjbXNtcygpLT5HZXREYigpOwoJJHBpbmcgPSBjbXNfdXRpbHM6OmdldF9tb2R1bGUoJ1BpbmcnKTsKCS8vcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKCSRzYWlzb25fY291cmFudGUgPSAkcGluZy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7Cgkkbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CgkkYXVqb3VyZGh1aSA9IGRhdGUoJ1ktbS1kJyk7CgkkcXVlcnkgPSAiU0VMRUNUIENPTkNBVF9XUygnICcsIG5vbSwgcHJlbm9tKSBBUyBwbGF5ZXIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSBsaWNlbmNlID0gPyI7CgkkZGJyZXRvdXIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSkpOwoJaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQoJewoJICAgIHdoaWxlICgkcm93PSAkZGJyZXRvdXItPkZldGNoUm93KCkpCgkJewoJCSRwbGF5ZXIgPSAkcm93WydwbGF5ZXInXTsKCQkkc2VydmljZSA9IG5ldyBTZXJ2aWNlKCk7CgkJJHJlc3VsdCA9ICRzZXJ2aWNlLT5nZXRKb3VldXJQYXJ0aWVzKCIkbGljZW5jZSIpOwoJCSRsaWduZXMgPSBjb3VudCgkcmVzdWx0KTsKCQkkZmZ0dCA9IHBpbmdfYWRtaW5fb3BzOjpjb21wdGVfZmZ0dCgkbGljZW5jZSk7CgkJLy92YXJfZHVtcCgkcmVzdWx0KTsKCQkvL2xlIHNlcnZpY2UgZXN0LWlsIG91dmVydCA/CgkJLyoqLwoJCS8vb24gdGVzdGUgbGUgcmVzdWx0YXQgcmV0b3VybsOpICAgICAKCgkJCWlmKCFpc19hcnJheSgkcmVzdWx0KSkKCQkJewoJCQkJJG1lc3NhZ2UgPSAiU2VydmljZSBjb3Vww6kiOyAKCQkJCSRzdGF0dXMgPSAnRWNoZWMnOwoJCQkJJGRlc2lnbmF0aW9uID0gJG1lc3NhZ2U7CgkJCQkkYWN0aW9uID0gIm1hc3NfYWN0aW9uIjsKCQkJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywgJGRlc2lnbmF0aW9uLCRhY3Rpb24pOwoJCQl9CgkJCWVsc2VpZigkbGlnbmVzIDw9ICRmZnR0KQoJCQl7CgkJCQkkbWVzc2FnZSA9ICJQYXJ0aWVzIEZGVFQgw6Agam91ciBwb3VyICIuJHBsYXllci4iIDogIi4kZmZ0dC4iIGVuIGJhc2UgZGUgZG9ubsOpZXMgIi4kbGlnbmVzLiIgZW4gbGlnbmUuIjsgCgkJCQkkc3RhdHVzID0gJ0VjaGVjJzsKCQkJCSRkZXNpZ25hdGlvbiA9ICRtZXNzYWdlOwoJCQkJJGFjdGlvbiA9ICJtYXNzX2FjdGlvbiI7CgkJCQlwaW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsICRkZXNpZ25hdGlvbiwkYWN0aW9uKTsKCQkJCSRhdWpvdXJkaHVpID0gZGF0ZSgnWS1tLWQnKTsKCQkJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgU0VUIG1hal9mZnR0ID0gPyBXSEVSRSBsaWNlbmNlID0gPyBBTkQgc2Fpc29uID0gPyI7CgkJCQkkZGJyZXN1bHQ0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGF1am91cmRodWksJGxpY2VuY2UsJHNhaXNvbl9jb3VyYW50ZSkpOwoJCQkJCgkJCQkKCQkJfQoJCQllbHNlCgkJCXsJCgkJCQkkaSA9IDA7CgkJCQkkY29tcHRldXIgPSAwOwoJCQkJZm9yZWFjaCgkcmVzdWx0IGFzICRjbGUgPT4kdGFiKQoJCQkJewoKCQkJCQkkY29tcHRldXIrKzsKCgkJCQkJCgkJCQkJJGxpY2VuY2UgPSAkdGFiW2xpY2VuY2VdOwoJCQkJCSRhZHZsaWMgPSAkdGFiW2FkdmxpY107CgkJCQkJJHZkID0gJHRhYlt2ZF07CgoJCQkJCQlpZiAoJHZkID09J1YnKXsKCQkJCQkJCSR2ZCA9IDE7CgkJCQkJCX0KCQkJCQkJZWxzZSAKCQkJCQkJewoJCQkJCQkJJHZkID0gMDsKCQkJCQkJfQoJCQkJCSRudW1qb3VybiA9ICR0YWJbbnVtam91cm5dOwoJCQkJCQoJCQkJCQlpZihpc19hcnJheSgkbnVtam91cm4pKQoJCQkJCQl7CgkJCQkJCQkkbnVtam91cm4gPSAnMCc7CgkJCQkJCX0KCQkJCQkJCgkJCQkJJGNvZGVjaGFtcCA9ICR0YWJbY29kZWNoYW1wXTsKCQkJCQkkZGF0ZWV2ZW50ID0gJHRhYltkYXRlXTsKCQkJCQkkY2hndCA9IGV4cGxvZGUoIi8iLCRkYXRlZXZlbnQpOwoJCQkJCSRkYXRlX2V2ZW50ID0gJGNoZ3RbMl0uIi0iLiRjaGd0WzFdLiItIi4kY2hndFswXTsKCQkJCQkvKgoJCQkJCQlpZiAoc3Vic3RyKCRjaGd0WzFdLCAwLDEpPT0wKQoJCQkJCQl7CgkJCQkJCQkkbW9pc19ldmVudCA9IHN1YnN0cigkY2hndFsxXSwgMSwxKTsKCQkJCQkJCQkvL2VjaG8gImxhIGRhdGUgZXN0Ii4kZGF0ZV9ldmVudDsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSRtb2lzX2V2ZW50ID0gJGNoZ3RbMV07CgkJCQkJCX0KCQkJCQkqLwkKCQkJCQkkYWR2c2V4ZSA9ICR0YWJbYWR2c2V4ZV07CgkJCQkJJGFkdm5vbXByZSA9ICR0YWJbYWR2bm9tcHJlXTsKCQkJCQkkcG9pbnRyZXMgPSAkdGFiW3BvaW50cmVzXTsKCQkJCQkkY29lZmNoYW1wID0gJHRhYltjb2VmY2hhbXBdOwkJCQkJCgkJCQkJJGFkdmNsYW9mID0gJHRhYlthZHZjbGFvZl07CQkJCQkKCQkJCQkKCQkJCQkkcXVlcnkgPSAiU0VMRUNUIGxpY2VuY2UsYWR2bGljLCBudW1qb3VybiwgY29kZWNoYW1wLCBkYXRlX2V2ZW50LCBjb2VmY2hhbXAgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyBXSEVSRSBsaWNlbmNlID0gPyBBTkQgYWR2bGljID0gPyBBTkQgbnVtam91cm4gPSA/IEFORCBjb2RlY2hhbXAgPSA/IEFORCBkYXRlX2V2ZW50ID0gPyBBTkQgY29lZmNoYW1wID0gPyI7CgkJCQkJLy9lY2hvICRxdWVyeTsKCQkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSwgJGFkdmxpYywgJG51bWpvdXJuLCAkY29kZWNoYW1wLCAkZGF0ZV9ldmVudCwgJGNvZWZjaGFtcCkpOwoKCQkJCQlpZigkZGJyZXN1bHQgICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKSB7CgkJCQkJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyAoaWQsIHNhaXNvbiwgbGljZW5jZSwgYWR2bGljLCB2ZCwgbnVtam91cm4sIGNvZGVjaGFtcCwgZGF0ZV9ldmVudCwgYWR2c2V4ZSwgYWR2bm9tcHJlLCBwb2ludHJlcywgY29lZmNoYW1wLCBhZHZjbGFvZikgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkJCQkkaSsrOwoJCQkJCQkvL2VjaG8gJHF1ZXJ5OwoJCQkJCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHNhaXNvbl9jb3VyYW50ZSwkbGljZW5jZSwgJGFkdmxpYywgJHZkLCAkbnVtam91cm4sICRjb2RlY2hhbXAsICRkYXRlX2V2ZW50LCAkYWR2c2V4ZSwgJGFkdm5vbXByZSwgJHBvaW50cmVzLCAkY29lZmNoYW1wLCAkYWR2Y2xhb2YpKTsKCgkJCQkJCWlmKCEkZGJyZXN1bHRhdCkKCQkJCQkJCXsKCQkJCQkJCQkkbWVzc2FnZSA9ICRkYi0+RXJyb3JNc2coKTsgCgkJCQkJCQkJJHN0YXR1cyA9ICdFY2hlYyc7CgkJCQkJCQkJJGRlc2lnbmF0aW9uID0gJG1lc3NhZ2U7CgkJCQkJCQkJJGFjdGlvbiA9ICJtYXNzX2FjdGlvbiI7CgkJCQkJCQkJcGluZ19hZG1pbl9vcHM6OmVjcmlyZWpvdXJuYWwoJG5vdywkc3RhdHVzLCAkZGVzaWduYXRpb24sJGFjdGlvbik7CgkJCQkJCQl9CgoKCQkJCQl9Ly9maW4gZHUgaWYgcmVjb3JkQ291bnQoKSBsaWduZSAyNDQKCgkJCQl9Ly9maW4gZHUgZm9yZWFjaAoJCQkJCgkJCQkkY29tcHRhZ2UgPSAkaTsKCQkJCSRxdWVyeTQgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIFNFVCBtYWpfZmZ0dCA9ID8sZmZ0dCA9ID8gV0hFUkUgbGljZW5jZSA9ID8gQU5EIHNhaXNvbiA9ID8iOwoJCQkJJGRicmVzdWx0NCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnk0LCBhcnJheSgkYXVqb3VyZGh1aSwkY29tcHRhZ2UsJGxpY2VuY2UsJHNhaXNvbl9jb3VyYW50ZSkpOwoJCQkJCgkJCQkkc3RhdHVzID0gJ1BhcnRpZXMgRkZUVCc7CgkJCQkkZGVzaWduYXRpb24gLj0gIlLDqWN1cMOpcmF0aW9uIEZGVFQgZGUgIi4kY29tcHRhZ2UuIiBwYXJ0aWVzIHN1ciAiLiRjb21wdGV1ci4iICBkZSAiLiRwbGF5ZXI7CgkJCQkkYWN0aW9uID0gIm1hc3NfYWN0aW9uIjsKCQkJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywgJGRlc2lnbmF0aW9uLCRhY3Rpb24pOwoKCQkJfS8vZmluIGR1IGlmICFpc19hcnJheQoJCX0vL2ZpbiBkdSB3aGlsZQoKCX0vL2ZpbiBkdSBpZiBkYnJldG91ciA+MAoKCgoKCgoKCgogIH0vL2ZpbiBkZSBsYSBmb25jdGlvbgoKcHVibGljIHN0YXRpYyBmdW5jdGlvbiBlcmFzZV9zcGlkICggJGlkLCAkY29lZmZfZmZ0dCwgJG51bWpvdXJuX2ZmdHQsICRwb2ludHNfZmZ0dCkKewoJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBTRVQgbnVtam91cm4gPSA/LCBjb2VmZiA9ID8sIHBvaW50cmVzID0gPyBXSEVSRSBpZCA9ID8iOwoJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG51bWpvdXJuX2ZmdHQsICRjb2VmZl9mZnR0LCRwb2ludHJlc19mZnR0KSk7Cn0KCnB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZGVsZXRlX2pvdXJuYWwoJGpvdXJuYWxpZCkKICB7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwoKICAgIC8vTm93IHJlbW92ZSB0aGUgZW50cnkKICAgICRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXAgV0hFUkUgaWQgPSA/IjsKICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRqb3VybmFsaWQpKTsKCiAgICAKICB9CgoKfSAvLyBlbmQgb2YgY2xhc3MKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.Service.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIAovL25hbWVzcGFjZSBNcGluZ1xDb3JlQnVuZGxlXEZmdHQ7CiAKLy91c2UgRG9jdHJpbmVcQ29tbW9uXENhY2hlXENhY2hlOwogCmNsYXNzIFNlcnZpY2UKewogICAgcHJpdmF0ZSAkY2FjaGU7CiAgICBwcml2YXRlICRsb2dnZXI7CiAgICBwcml2YXRlICRpcHNvdXJjZTsKICAgIHByaXZhdGUgJHNlcmlhbHM7CiAgICBwcml2YXRlICRhdXRvSW5pdGlhbGl6YXRpb247CiAKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdChDYWNoZSAkY2FjaGUgPSBudWxsLCAkbG9nZ2VyID0gbnVsbCwgJHNlcmlhbHMgPSBhcnJheSgpLCAkaXBzb3VyY2UgPSBudWxsKQogICAgewogICAgICAgICR0aGlzLT5jYWNoZSA9ICRjYWNoZTsKICAgICAgICAkdGhpcy0+bG9nZ2VyID0gJGxvZ2dlcjsgLy8gTXVzdCBoYXZlIGEgbWV0aG9kIGxvZygkdXJsLCAkZGF0YSkKICAgICAgICAkdGhpcy0+aXBzb3VyY2UgPSAkaXBzb3VyY2U7CiAKICAgICAgICAkdGhpcy0+c2VyaWFscyA9ICRzZXJpYWxzOwogCiAgICAgICAgLy8gR8OpbsOpcmF0aW9uIGQndW4gc2VyaWFsIHBhciBkw6lmYXV0ICgxNSBsZXR0cmVzIG1hanVzY3VsZXMpCiAgICAgICAgaWYgKGVtcHR5KCR0aGlzLT5zZXJpYWxzKSkgewogICAgICAgICAgICAkdGhpcy0+c2VyaWFscyA9IGFycmF5KCcnKTsKICAgICAgICAgICAgZm9yKCRpPTA7ICRpPDE1OyAkaSsrKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+c2VyaWFsc1swXSAuPSBjaHIobXRfcmFuZCg2NSwgOTApKTsgLy8oQS1aKQogICAgICAgICAgICB9CiAgICAgICAgfQogCiAgICAgICAgJHRoaXMtPmF1dG9Jbml0aWFsaXphdGlvbiA9IHRydWU7CiAKICAgICAgICBsaWJ4bWxfdXNlX2ludGVybmFsX2Vycm9ycyh0cnVlKTsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIHNldEF1dG9Jbml0aWFsaXNhdGlvbigkZmxhZykKICAgIHsKICAgICAgICAkdGhpcy0+YXV0b0luaXRpYWxpemF0aW9uID0gKGJvb2wpJGZsYWc7CiAgICB9CiAKICAgIHB1YmxpYyBmdW5jdGlvbiBpbml0aWFsaXphdGlvbigpCiAgICB7CiAgICAgICAgJHNlcmlhbCA9ICR0aGlzLT5zZXJpYWxzW210X3JhbmQoMCwgY291bnQoJHRoaXMtPnNlcmlhbHMpIC0gMSldOwogCiAgICAgICAgJHRoaXMtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfaW5pdGlhbGlzYXRpb24ucGhwJywgYXJyYXkoJ3NlcmllJyA9PiAkc2VyaWFsLCAnb3MnID0+ICdBbmRyb2lkJywgJ3ZlcnNpb24nID0+ICcwMDcnKSk7CiAgICAgICAgJGV2ZW50ID0gc2VsZjo6Z2V0T2JqZWN0KCR0aGlzLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS94bWwvZXZlbmVtZW50L3htbF9ldmVuZW1lbnQucGhwJyksICdldmVuZW1lbnQnKTsKICAgICAgICBpZiAoIWVtcHR5KCRldmVudFsnbG9nbyddKSkgewogICAgICAgICAgICAkdGhpcy0+Z2V0RGF0YSgkZXZlbnRbJ2xvZ28nXSk7CiAgICAgICAgfQogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2x1YnNCeURlcGFydGVtZW50KCRkZXBhcnRlbWVudCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldENhY2hlZERhdGEoImNsdWJzeyRkZXBhcnRlbWVudH0iLCAzNjAwKjI0KjMwLCBmdW5jdGlvbigkc2VydmljZSkgdXNlICgkZGVwYXJ0ZW1lbnQpIHsKICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2U6OmdldENvbGxlY3Rpb24oJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfY2x1Yl9kZXAyLnBocCcsIGFycmF5KCdkZXAnID0+ICRkZXBhcnRlbWVudCkpLCAnY2x1YicpOwogICAgICAgIH0pOwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Q2x1YigkbnVtZXJvKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgiY2x1Yl97JG51bWVyb30iLCAzNjAwKjI0KjIsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCRudW1lcm8pIHsKICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2U6OmdldE9iamVjdCgkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL3htbF9jbHViX2RldGFpbC5waHAnLCBhcnJheSgnY2x1YicgPT4gJG51bWVybykpLCAnY2x1YicpOwogICAgICAgIH0pOwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Sm91ZXVyKCRsaWNlbmNlKQogICAgewogICAgICAgICRqb3VldXIgPSAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgiam91ZXVyX3skbGljZW5jZX0iLCAzNjAwKjI0KjEsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCRsaWNlbmNlKSB7CiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlOjpnZXRPYmplY3QoJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfam91ZXVyLnBocCcsIGFycmF5KCdsaWNlbmNlJyA9PiAkbGljZW5jZSwgJ2F1dG8nID0+IDEpKSwgJ2pvdWV1cicpOwogICAgICAgIH0pOwogCiAgICAgICAgaWYgKCFpc3NldCgkam91ZXVyWydsaWNlbmNlJ10pKSB7CiAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgIH0KIAogICAgICAgIGlmIChlbXB0eSgkam91ZXVyWyduYXRpbyddKSkgewogICAgICAgICAgICAkam91ZXVyWyduYXRpbyddID0gJ0YnOwogICAgICAgIH0KIAogICAgICAgICRqb3VldXJbJ3Bob3RvJ10gPSAiaHR0cDovL3d3dy5mZnR0LmNvbS9lc3BhY2VsaWNlbmNpZS9waG90b2xpY2VuY2llL3skam91ZXVyWydsaWNlbmNlJ119Xy5qcGciOwogICAgICAgICRqb3VldXJbJ3Byb2dtb2lzJ10gPSByb3VuZCgkam91ZXVyWydwb2ludCddIC0gJGpvdWV1clsnYXBvaW50J10sIDIpOyAvLyBQcm9ncmVzc2lvbiBtZW5zdWVsbGUKICAgICAgICAkam91ZXVyWydwcm9nYW5uJ10gPSByb3VuZCgkam91ZXVyWydwb2ludCddIC0gJGpvdWV1clsndmFsaW5pdCddLCAyKTsgLy8gUHJvZ3Jlc3Npb24gYW5udWVsbGUKIAogICAgICAgIHJldHVybiAkam91ZXVyOwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Sm91ZXVyUGFydGllcygkbGljZW5jZSkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldENhY2hlZERhdGEoImpvdWV1cl9wYXJ0aWVzX3skbGljZW5jZX0iLCAzNjAwKjI0KjEsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCRsaWNlbmNlKSB7CiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlOjpnZXRDb2xsZWN0aW9uKCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS94bWwveG1sX3BhcnRpZV9teXNxbC5waHAnLCBhcnJheSgnbGljZW5jZScgPT4gJGxpY2VuY2UsICdhdXRvJyA9PiAxKSksICdwYXJ0aWUnKTsKICAgICAgICB9KTsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIGdldEpvdWV1clBhcnRpZXNTcGlkKCRsaWNlbmNlKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgiam91ZXVyX3NwaWRfeyRsaWNlbmNlfSIsIDM2MDAqMjQqMSwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJGxpY2VuY2UpIHsKICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2U6OmdldENvbGxlY3Rpb24oJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfcGFydGllLnBocCcsIGFycmF5KCdudW1saWMnID0+ICRsaWNlbmNlKSksICdyZXN1bHRhdCcpOwogICAgICAgIH0pOwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0Sm91ZXVyc0J5TmFtZSgkbm9tLCAkcHJlbm9tPSAnJykKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldENhY2hlZERhdGEoImpvdWV1cnNfeyRub219X3skcHJlbm9tfSIsIDM2MDAqMjQqMSwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJG5vbSwgJHByZW5vbSkgewogICAgICAgICAgICByZXR1cm4gU2VydmljZTo6Z2V0Q29sbGVjdGlvbigkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL3htbF9saXN0ZV9qb3VldXIucGhwJywgYXJyYXkoJ25vbScgPT4gJG5vbSwgJ3ByZW5vbScgPT4gJHByZW5vbSkpLCAnam91ZXVyJyk7CiAgICAgICAgfSk7CiAgICB9CiAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRKb3VldXJzQnlDbHViKCRjbHViKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgiam91ZXVyc2NsdWJ7JGNsdWJ9IiwgMzYwMCoyNCoxLCBmdW5jdGlvbigkc2VydmljZSkgdXNlICgkY2x1YikgewogICAgICAgICAgICByZXR1cm4gU2VydmljZTo6Z2V0Q29sbGVjdGlvbigkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL3htbF9saXN0ZV9qb3VldXIucGhwJywgYXJyYXkoJ2NsdWInID0+ICRjbHViKSksICdqb3VldXInKTsKICAgICAgICB9KTsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIGdldEVxdWlwZXNCeUNsdWIoJGNsdWIsICR0eXBlID0gbnVsbCkKICAgIHsKICAgICAgICBpZiAoJHR5cGUgJiYgIWluX2FycmF5KCR0eXBlLCBhcnJheSgnTScsICdGJykpKSB7CiAgICAgICAgICAgICR0eXBlID0gJ00nOwogICAgICAgIH0KIAogICAgICAgICR0ZWFtcyA9ICR0aGlzLT5nZXRDYWNoZWREYXRhKCJjbHViZXF1aXBlc197JGNsdWJ9X3skdHlwZX0iLCAzNjAwKjI0KjMsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCRjbHViLCAkdHlwZSkgewogICAgICAgICAgICByZXR1cm4gU2VydmljZTo6Z2V0Q29sbGVjdGlvbigkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL3htbF9lcXVpcGUucGhwJywgYXJyYXkoJ251bWNsdScgPT4gJGNsdWIsICd0eXBlJyA9PiAkdHlwZSkpLCAnZXF1aXBlJyk7CiAgICAgICAgfSk7CiAKICAgICAgICBmb3JlYWNoKCR0ZWFtcyBhcyAmJHRlYW0pIHsKICAgICAgICAgICAgJHBhcmFtcyA9IGFycmF5KCk7CiAgICAgICAgICAgIHBhcnNlX3N0cigkdGVhbVsnbGllbmRpdmlzaW9uJ10sICRwYXJhbXMpOwogCiAgICAgICAgICAgICR0ZWFtWydpZHBvdWxlJ10gPSAkcGFyYW1zWydjeF9wb3VsZSddOwogICAgICAgICAgICAkdGVhbVsnaWRkaXYnXSA9ICRwYXJhbXNbJ0QxJ107CgogICAgICAgIH0KIAogICAgICAgIHJldHVybiAkdGVhbXM7CiAgICB9CiAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQb3VsZXMoJGRpdmlzaW9uKQogICAgewogICAgICAgICRwb3VsZXMgPSAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgicG91bGVzX3skZGl2aXNpb259IiwgMzYwMCoyNCozMCwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJGRpdmlzaW9uKSB7CiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlOjpnZXRDb2xsZWN0aW9uKCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS94bWwveG1sX3Jlc3VsdF9lcXUucGhwJywgYXJyYXkoJ2FjdGlvbicgPT4gJ3BvdWxlJywgJ0QxJyA9PiAkZGl2aXNpb24pKSwgJ3BvdWxlJyk7CiAgICAgICAgfSk7CiAKICAgICAgICBmb3JlYWNoKCRwb3VsZXMgYXMgJiRwb3VsZSkgewogICAgICAgICAgICAkcGFyYW1zID0gYXJyYXkoKTsKICAgICAgICAgICAgcGFyc2Vfc3RyKCRwb3VsZVsnbGllbiddLCAkcGFyYW1zKTsKIAogICAgICAgICAgICAkcG91bGVbJ2lkcG91bGUnXSA9ICRwYXJhbXNbJ2N4X3BvdWxlJ107CiAgICAgICAgICAgICRwb3VsZVsnaWRkaXYnXSA9ICRwYXJhbXNbJ0QxJ107CiAgICAgICAgfQogCiAgICAgICAgcmV0dXJuICRwb3VsZXM7CiAgICB9CiAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRQb3VsZUNsYXNzZW1lbnQoJGRpdmlzaW9uLCAkcG91bGUgPSBudWxsKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgicG91bGVjbGFzc2VtZW50X3skZGl2aXNpb259X3skcG91bGV9IiwgMzYwMCoyNCoxLCBmdW5jdGlvbigkc2VydmljZSkgdXNlICgkZGl2aXNpb24sICRwb3VsZSkgewogICAgICAgICAgICByZXR1cm4gU2VydmljZTo6Z2V0Q29sbGVjdGlvbigkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL3htbF9yZXN1bHRfZXF1LnBocCcsIGFycmF5KCdhdXRvJyA9PiAxLCAnYWN0aW9uJyA9PiAnY2xhc3NlbWVudCcsICdEMScgPT4gJGRpdmlzaW9uLCAnY3hfcG91bGUnID0+ICRwb3VsZSkpLCAnY2xhc3NlbWVudCcpOwogICAgICAgIH0pOwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0UG91bGVSZW5jb250cmVzKCRkaXZpc2lvbiwgJHBvdWxlID0gbnVsbCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmdldENhY2hlZERhdGEoInBvdWxlcmVuY29udHJlc197JGRpdmlzaW9ufV97JHBvdWxlfSIsIDM2MDAqMjQqMSwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJGRpdmlzaW9uLCAkcG91bGUpIHsKICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2U6OmdldENvbGxlY3Rpb24oJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfcmVzdWx0X2VxdS5waHAnLCBhcnJheSgnYXV0bycgPT4gMSwgJ0QxJyA9PiAkZGl2aXNpb24sICdjeF9wb3VsZScgPT4gJHBvdWxlKSksICd0b3VyJyk7CiAgICAgICAgfSk7CiAgICB9CiAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRPcmdhbmlzbWVzKCR0eXBlKQogICAgewogICAgICAgIC8vIFpvbmUgLyBMaWd1ZSAvIERlcGFydGVtZW50CiAgICAgICAgaWYgKCFpbl9hcnJheSgkdHlwZSwgYXJyYXkoJ1onLCAnTCcsICdEJykpKSB7CiAgICAgICAgICAgICR0eXBlID0gJ0wnOwogICAgICAgIH0KIAogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgib3JnYW5pc21lc197JHR5cGV9IiwgMzYwMCoyNCozMCwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJHR5cGUpIHsKICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2U6OmdldENvbGxlY3Rpb24oJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfb3JnYW5pc21lLnBocCcsIGFycmF5KCd0eXBlJyA9PiAkdHlwZSkpLCAnb3JnYW5pc21lJyk7CiAgICAgICAgfSk7CiAgICB9CiAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFcHJldXZlcygkb3JnYW5pc21lLCAkdHlwZSkKICAgIHsKICAgICAgICAvLyBFcXVpcGUgLyBJbmRpdmlkdWVsbGUKICAgICAgICBpZiAoIWluX2FycmF5KCR0eXBlLCBhcnJheSgnRScsICdJJykpKSB7CiAgICAgICAgICAgICR0eXBlID0gJ0UnOwogICAgICAgIH0KIAogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgiZXByZXV2ZXNfeyRvcmdhbmlzbWV9X3skdHlwZX0iLCAzNjAwKjI0KjMwLCBmdW5jdGlvbigkc2VydmljZSkgdXNlICgkb3JnYW5pc21lLCAkdHlwZSkgewogICAgICAgICAgICByZXR1cm4gU2VydmljZTo6Z2V0Q29sbGVjdGlvbigkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL3htbF9lcHJldXZlLnBocCcsIGFycmF5KCd0eXBlJyA9PiAkdHlwZSwgJ29yZ2FuaXNtZScgPT4gJG9yZ2FuaXNtZSkpLCAnZXByZXV2ZScpOwogICAgICAgIH0pOwogICAgfQogCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0RGl2aXNpb25zKCRvcmdhbmlzbWUsICRlcHJldXZlKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgiZGl2aXNpb25zX3skb3JnYW5pc21lfV97JGVwcmV1dmV9IiwgMzYwMCoyNCozMCwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJG9yZ2FuaXNtZSwgJGVwcmV1dmUpIHsKICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2U6OmdldENvbGxlY3Rpb24oJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfZGl2aXNpb24ucGhwJywgYXJyYXkoJ29yZ2FuaXNtZScgPT4gJG9yZ2FuaXNtZSwgJ2VwcmV1dmUnID0+ICRlcHJldXZlLCApKSwgJ2RpdmlzaW9uJyk7CiAgICAgICAgfSk7CiAgICB9CiAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRSZW5jb250cmUoJGxpbmspCiAgICB7CiAgICAgICAgJHBhcmFtcyA9IGFycmF5KCk7CiAgICAgICAgcGFyc2Vfc3RyKCRsaW5rLCAkcGFyYW1zKTsKIAogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgicmVuY29udHJlXyIuc2hhMSgkbGluayksIDM2MDAqMjQqMSwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJHBhcmFtcykgewogICAgICAgICAgICByZXR1cm4gU2VydmljZTo6Z2V0T2JqZWN0KCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS94bWwveG1sX2NocF9yZW5jLnBocCcsICRwYXJhbXMpLCBudWxsKTsKICAgICAgICB9KTsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIGdldExpY2VuY2VzQnlOYW1lKCRub20sICRwcmVub209ICcnKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgibGljZW5jZXNfeyRub219X3skcHJlbm9tfSIsIDM2MDAqMjQqMiwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJG5vbSwgJHByZW5vbSkgewogICAgICAgICAgICByZXR1cm4gU2VydmljZTo6Z2V0Q29sbGVjdGlvbigkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL3htbF9saXN0ZV9qb3VldXJfby5waHAnLCBhcnJheSgnbm9tJyA9PiBzdHJ0b3VwcGVyKCRub20pLCAncHJlbm9tJyA9PiB1Y2ZpcnN0KCRwcmVub20pKSksICdqb3VldXInKTsKICAgICAgICB9KTsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIGdldExpY2VuY2VzQnlDbHViKCRjbHViKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgibGljZW5jZXNjbHViX3skY2x1Yn0iLCAzNjAwKjI0KjIsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCRjbHViKSB7CiAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlOjpnZXRDb2xsZWN0aW9uKCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS94bWwveG1sX2xpc3RlX2pvdWV1cl9vLnBocCcsIGFycmF5KCdjbHViJyA9PiAkY2x1YikpLCAnam91ZXVyJyk7CiAgICAgICAgfSk7CiAgICB9CiAKICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMaWNlbmNlKCRsaWNlbmNlKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgibGljZW5jZV97JGxpY2VuY2V9IiwgMzYwMCoyNCoxLCBmdW5jdGlvbigkc2VydmljZSkgdXNlICgkbGljZW5jZSkgewogICAgICAgICAgICByZXR1cm4gU2VydmljZTo6Z2V0T2JqZWN0KCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS94bWwveG1sX2xpY2VuY2UucGhwJywgYXJyYXkoJ2xpY2VuY2UnID0+ICRsaWNlbmNlKSksICdsaWNlbmNlJyk7CiAgICAgICAgfSk7CiAgICB9CiAKICAgIHByaXZhdGUgZnVuY3Rpb24gZ2V0Q2FjaGVkRGF0YSgka2V5LCAkbGlmZVRpbWUsICRjYWxsYmFjaykKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5jYWNoZSkgewogICAgICAgICAgICByZXR1cm4gJGNhbGxiYWNrKCR0aGlzKTsKICAgICAgICB9CiAKICAgICAgICBpZiAoZmFsc2UgPT09ICgkZGF0YSA9ICR0aGlzLT5jYWNoZS0+ZmV0Y2goJGtleSkpKSB7CiAgICAgICAgICAgIGlmICgkdGhpcy0+YXV0b0luaXRpYWxpemF0aW9uICYmIGZhbHNlID09ICR0aGlzLT5jYWNoZS0+ZmV0Y2goJGluaXRLZXkgPSAneG1sX2luaXRpYWxpc2F0aW9uJykpIHsKICAgICAgICAgICAgICAgICR0aGlzLT5pbml0aWFsaXphdGlvbigpOwogICAgICAgICAgICAgICAgJHRoaXMtPmNhY2hlLT5zYXZlKCRpbml0S2V5LCAnaW5pdCcsIDM2MDAqNCArIG10X3JhbmQoMCwgMzYwMCo0KSk7IC8vIEVudHJlIDQgZXQgOGgKICAgICAgICAgICAgfQogCiAgICAgICAgICAgICRkYXRhID0gJGNhbGxiYWNrKCR0aGlzKTsKICAgICAgICAgICAgJHRoaXMtPmNhY2hlLT5zYXZlKCRrZXksICRkYXRhLCAkbGlmZVRpbWUpOwogICAgICAgIH0KIAogICAgICAgIHJldHVybiAkZGF0YTsKICAgIH0KIAogICAgcHVibGljIGZ1bmN0aW9uIGdldERhdGEoJHVybCwgJHBhcmFtcyA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKCFlbXB0eSgkcGFyYW1zKSkgewogICAgICAgICAgICAkdXJsIC49ICc/JyAuIGh0dHBfYnVpbGRfcXVlcnkoJHBhcmFtcyk7CiAgICAgICAgfQogCiAgICAgICAgLyokY29udGV4dCA9IHN0cmVhbV9jb250ZXh0X2NyZWF0ZShhcnJheSgKICAgICAgICAgICAgJ3NvY2tldCcgPT4gYXJyYXkoJ2JpbmR0bycgPT4gKCR0aGlzLT5pcHNvdXJjZSA/OiAnMCcpLic6MCcpLAogICAgICAgICAgICAnaHR0cCcgPT4gYXJyYXkoCiAgICAgICAgICAgICAgICAncHJvdG9jb2xfdmVyc2lvbicgPT4gMS4xLAogICAgICAgICAgICAgICAgJ2hlYWRlcicgPT4gYXJyYXkoIlVzZXItYWdlbnQ6IE1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luMzIpIiwKICAgICAgICAgICAgICAgICAgICAiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiLAogICAgICAgICAgICAgICAgICAgICJBY2NlcHQtRW5jb2Rpbmc6IGd6aXAiLAogICAgICAgICAgICAgICAgICAgICJDb25uZWN0aW9uOiBDbG9zZSIsCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICApCiAgICAgICAgKSk7CiAKICAgICAgICAvLyRkYXRhID0gZmlsZV9nZXRfY29udGVudHMoJHVybCwgZmFsc2UsICRjb250ZXh0KTsKICAgICAgICAkc3RyZWFtID0gZm9wZW4oJHVybCwgJ3InLCBmYWxzZSwgJGNvbnRleHQpOwogICAgICAgICRkYXRhID0gc3RyZWFtX2dldF9jb250ZW50cygkc3RyZWFtKTsKICAgICAgICBmY2xvc2UoJHN0cmVhbSk7Ki8KIAogICAgICAgICRjdXJsID0gY3VybF9pbml0KCk7CiAgICAgICAgY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfVVJMLCAkdXJsKTsKICAgICAgICBpZiAoJHRoaXMtPmlwc291cmNlKSB7CiAgICAgICAgICAgIGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJMT1BUX0lOVEVSRkFDRSwgJHRoaXMtPmlwc291cmNlKTsKICAgICAgICB9CiAgICAgICAgY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIgLCB0cnVlKTsKICAgICAgICBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9IVFRQSEVBREVSLCBhcnJheSgKICAgICAgICAgICAgIkFjY2VwdDoiLCAvLyBTdXByaW1lIGxlIGhlYWRlciBwYXIgZGVmYXVsdCBkZSBjVXJsIChBY2NlcHQ6ICovKikKICAgICAgICAgICAgIlVzZXItYWdlbnQ6IE1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luMzIpIiwKICAgICAgICAgICAgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiwKICAgICAgICAgICAgIkFjY2VwdC1FbmNvZGluZzogZ3ppcCIsCiAgICAgICAgICAgICJDb25uZWN0aW9uOiBLZWVwLUFsaXZlIiwKICAgICAgICApKTsKICAgICAgICAkZGF0YSA9IGN1cmxfZXhlYygkY3VybCk7CiAgICAgICAgY3VybF9jbG9zZSgkY3VybCk7CiAKICAgICAgICBpZiAoJHRoaXMtPmxvZ2dlcikgewogICAgICAgICAgICAkdGhpcy0+bG9nZ2VyLT5sb2coJHVybCwgJGRhdGEpOwogICAgICAgIH0KIAogICAgICAgICR4bWwgPSBzaW1wbGV4bWxfbG9hZF9zdHJpbmcoJGRhdGEpOwogCiAgICAgICAgaWYgKCEkeG1sKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAKICAgICAgICAvLyBQZXRpdGUgYXN0dWNlIHBvdXIgdHJhbnNmb3JtZXIgc2ltcGxlbWVudCBsZSBYTUwgZW4gdGFibGVhdQogICAgICAgIHJldHVybiBqc29uX2RlY29kZShqc29uX2VuY29kZSgkeG1sKSwgdHJ1ZSk7CiAgICB9CiAKICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0Q29sbGVjdGlvbigkZGF0YSwgJGtleSA9IG51bGwpCiAgICB7CiAgICAgICAgaWYgKGVtcHR5KCRkYXRhKSkgewogICAgICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgICAgICB9CiAKICAgICAgICBpZiAoJGtleSkgewogICAgICAgICAgICBpZiAoIWFycmF5X2tleV9leGlzdHMoJGtleSwgJGRhdGEpKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkZGF0YSA9ICRkYXRhWyRrZXldOwogICAgICAgIH0KIAogICAgICAgIHJldHVybiBpc3NldCgkZGF0YVswXSkgPyAkZGF0YSA6IGFycmF5KCRkYXRhKTsKICAgIH0KIAogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRPYmplY3QoJGRhdGEsICRrZXkgPSBudWxsKQogICAgewogICAgICAgIGlmICgka2V5KSB7CiAgICAgICAgICAgIHJldHVybiBhcnJheV9rZXlfZXhpc3RzKCRrZXksICRkYXRhKSA/ICRkYXRhWyRrZXldIDogbnVsbDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICByZXR1cm4gZW1wdHkoJGRhdGEpID8gbnVsbCA6ICRkYXRhOwogICAgICAgIH0KICAgIH0KIAp9]]></data>
	</file>
	<file>
	  <filename>/lib/function.calculs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNrZWxldG9uIChjKSAyMDA4IAojICAgICAgYnkgUm9iZXJ0IEFsbGVuIChha3JhYmF0KSBhbmQKIyAgICAgICAgIFJvYmVydCBDYW1wYmVsbCAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gYWxsb3cgZGlzcGxheWluZyBjYWxlbmRhcnMsCiMgIGFuZCBtYW5hZ2VtZW50IGFuZCBkaXNwbGF5IG9mIHRpbWUgYmFzZWQgZXZlbnRzLgojIAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCiMgc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiNFTkRfTElDRU5TRQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgpmdW5jdGlvbiBDYWxjdWxFY2FydCgkZWNhcnQpCnsKCWlmKCRlY2FydCA+PTAgJiYgJGVjYXJ0IDwgMjUpIHsgJGVjYXJ0ID0gMTsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTI1ICYmICRlY2FydCA8IDUwKXsgJGVjYXJ0ID0gMjsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTUwICYmICRlY2FydCA8IDEwMCl7ICRlY2FydCA9IDM7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPj0xMDAgJiYgJGVjYXJ0IDwgMTUwKXsgJGVjYXJ0ID0gNDsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTE1MCAmJiAkZWNhcnQgPCAyMDApeyAkZWNhcnQgPSA1OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0ID49MjAwICYmICRlY2FydCA8IDMwMCl7ICRlY2FydCA9IDY7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPj0zMDAgJiYgJGVjYXJ0IDwgNDAwKXsgJGVjYXJ0ID0gNzsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA+PTQwMCAmJiAkZWNhcnQgPCA1MDApeyAkZWNhcnQgPSA4OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0ID49NTAwKXsgJGVjYXJ0ID0gOTsgcmV0dXJuICRlY2FydDsgfQoJCQoJZWxzZWlmKCRlY2FydCA+IC0yNSAmJiAkZWNhcnQgPCAwKXskZWNhcnQgPSAtMTsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA8PSAtMjUgJiYgJGVjYXJ0ID4gLTUwKXskZWNhcnQgPSAtMjsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA8PSAtNTAgJiYgJGVjYXJ0ID4gLTEwMCl7JGVjYXJ0ID0gLTM7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPD0gLTEwMCAmJiAkZWNhcnQgPiAtMTUwKXskZWNhcnQgPSAtNDsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA8PSAtMTUwICYmICRlY2FydCA+IC0yMDApeyRlY2FydCA9IC01OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0IDw9IC0yMDAgJiYgJGVjYXJ0ID4gLTMwMCl7JGVjYXJ0ID0gLTY7IHJldHVybiAkZWNhcnQ7IH0KCWVsc2VpZigkZWNhcnQgPD0gLTMwMCAmJiAkZWNhcnQgPiAtNDAwKXskZWNhcnQgPSAtNzsgcmV0dXJuICRlY2FydDsgfQoJZWxzZWlmKCRlY2FydCA8PSAtNDAwICYmICRlY2FydCA+IC01MDApeyRlY2FydCA9IC04OyByZXR1cm4gJGVjYXJ0OyB9CgllbHNlaWYoJGVjYXJ0IDw9IC01MDApeyRlY2FydCA9IC05OyByZXR1cm4gJGVjYXJ0OyB9Cn0KCmZ1bmN0aW9uIENhbGN1bFBvaW50cygkZWNhcnQsJHZpY3RvaXJlLCRsb2NhdXgpIHsKJGdDbXMgPSBjbXNtcygpOwkKaWYoJGxvY2F1eD09J0EnKSB7CgkKCWlmKCRlY2FydCA9PTEpCgl7CgkJaWYoJHZpY3RvaXJlID09ICdBQkNEJykKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkkcmVzdWx0WzBdID0gNjsKCQkgICAgICAgIC8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ3ZpY05vcm0wXzI0Jyk7CgkJCSRyZXN1bHRbMV0gPSAxOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJCSAKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ2RlZkFub3JtMF8yNCcpOwoJCQkkcmVzdWx0WzBdID0gLTU7CgkJCSRyZXN1bHRbMV0gPSAwOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTIpCgl7CgkJaWYoJHZpY3RvaXJlID09ICdBQkNEJykKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCd2aWNOb3JtMjVfNDknKTsKCQkJJHJlc3VsdFswXSA9IDUuNTsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQkJCgkJfQoJCWVsc2UKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTI1XzQ5Jyk7CgkJCSRyZXN1bHRbMF0gPSAtNjsKCQkJJHJlc3VsdFsxXSA9IDA7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09MykKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ3ZpY05vcm01MF85OScpOwoJCQkkcmVzdWx0WzBdID0gNTsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ2RlZkFub3JtNTBfOTknKTsKCQkJJHJlc3VsdFswXSA9IC03OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT00KQoJewoJCWlmKCR2aWN0b2lyZSA9PSAnQUJDRCcpCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkvLwkkcmVzdWx0WzBdID0gR2V0UHJlZmVyZW5jZSgndmljTm9ybTEwMF8xNDknKTsKCQkJJHJlc3VsdFswXSA9IDQ7CgkJCSRyZXN1bHRbMV0gPSAxOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTEwMF8xNDknKTsKCQkJJHJlc3VsdFswXSA9IC04OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT01KQoJewoJCWlmKCR2aWN0b2lyZSA9PSAnQUJDRCcpCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJLy8kcmVzdWx0WzBdID0gR2V0UHJlZmVyZW5jZSgndmljTm9ybTE1MF8xOTknKTsKCQkJJHJlc3VsdFswXSA9IDM7CgkJCSRyZXN1bHRbMV0gPSAxOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTE1MF8xOTknKTsKCQkJJHJlc3VsdFswXSA9IC0xMDsKCQkJJHJlc3VsdFsxXSA9IDA7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09NikKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ3ZpY05vcm0yMDBfMjk5Jyk7CgkJCSRyZXN1bHRbMF0gPSAyOwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJLy8kcmVzdWx0WzBdID0gR2V0UHJlZmVyZW5jZSgnZGVmQW5vcm0yMDBfMjk5Jyk7CgkJCSRyZXN1bHRbMF0gPSAtMTIuNTsKCQkJJHJlc3VsdFsxXSA9IDA7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09NykKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ3ZpY05vcm0zMDBfMzk5Jyk7CgkJCSRyZXN1bHRbMF0gPSAxOwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJLy8kcmVzdWx0WzBdID0gR2V0UHJlZmVyZW5jZSgnZGVmQW5vcm0zMDBfMzk5Jyk7CgkJCSRyZXN1bHRbMF0gPSAtMTY7CgkJCSRyZXN1bHRbMV0gPSAwOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTgpCgl7CgkJaWYoJHZpY3RvaXJlID09ICdBQkNEJykKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCd2aWNOb3JtNDAwXzQ5OScpOwoJCQkkcmVzdWx0WzBdID0gMC41OwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJLy8kcmVzdWx0WzBdID0gR2V0UHJlZmVyZW5jZSgnZGVmQW5vcm00MDBfNDk5Jyk7CgkJCSRyZXN1bHRbMF0gPSAtMjA7CgkJCSRyZXN1bHRbMV0gPSAwOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTkpCgl7CgkJaWYoJHZpY3RvaXJlID09ICdBQkNEJykKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkvLyRyZXN1bHRbMF0gPSBHZXRQcmVmZXJlbmNlKCd2aWNOb3JtUGx1czUwMCcpOwoJCQkkcmVzdWx0WzBdID0gMDsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCS8vJHJlc3VsdFswXSA9IEdldFByZWZlcmVuY2UoJ2RlZkFub3JtUGx1czUwMCcpOwoJCQkkcmVzdWx0WzBdID0gLTI5OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tMSkKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSA2OwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJJHJlc3VsdFswXSA9IC01OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tMikKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSA3OwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQkKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAtNC41OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tMykKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSA4OwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJJHJlc3VsdFswXSA9IC00OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tNCkKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAxMDsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAtMzsKCQkJJHJlc3VsdFsxXSA9IDA7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09LTUpCgl7CgkJaWYoJHZpY3RvaXJlID09ICdBQkNEJykKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkkcmVzdWx0WzBdID0gMTM7CgkJCSRyZXN1bHRbMV0gPSAxOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCSRyZXN1bHQgPSBhcnJheSgpOwoJCQkkcmVzdWx0WzBdID0gLTI7CgkJCSRyZXN1bHRbMV0gPSAwOwoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS02KQoJewoJCWlmKCR2aWN0b2lyZSA9PSAnQUJDRCcpCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJJHJlc3VsdFswXSA9IDE3OwoJCQkkcmVzdWx0WzFdID0gMTsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkJJHJlc3VsdFswXSA9IC0xOwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tNykKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAyMjsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAtMC41OwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tOCkKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAyODsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAwOwoJCQkkcmVzdWx0WzFdID0gMDsKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tOSkKCXsKCQlpZigkdmljdG9pcmUgPT0gJ0FCQ0QnKQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSA0MDsKCQkJJHJlc3VsdFsxXSA9IDE7CgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdCA9IGFycmF5KCk7CgkJCSRyZXN1bHRbMF0gPSAwOwoJCQkkcmVzdWx0WzFdID0gMDsKCQl9Cgl9Cn0KZWxzZWlmKCRsb2NhdXg9PSdCJyl7CglpZigkZWNhcnQgPT0xKQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSA2OwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJCSAKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTU7CgkJJHJlc3VsdFsxXSA9IDE7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PTIpCnsKCWlmKCR2aWN0b2lyZSA9PSAnV1hZWicpCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IDUuNTsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCQkKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTY7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PTMpCnsKCWlmKCR2aWN0b2lyZSA9PSAnV1hZWicpCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IDU7CgkJJHJlc3VsdFsxXSA9IDE7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9CgllbHNlCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IC03OwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT00KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSA0OwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQoJZWxzZQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAtODsKCQkkcmVzdWx0WzFdID0gMDsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KfQplbHNlaWYoJGVjYXJ0ID09NSkKewoJaWYoJHZpY3RvaXJlID09ICdXWFlaJykKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gMzsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTEwOwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT02KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAyOwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQoJZWxzZQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAtMTIuNTsKCQkkcmVzdWx0WzFdID0gMDsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KfQplbHNlaWYoJGVjYXJ0ID09NykKewoJaWYoJHZpY3RvaXJlID09ICdXWFlaJykKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gMTsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTE2OwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT04KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAwLjU7CgkJJHJlc3VsdFsxXSA9IDE7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9CgllbHNlCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IC0yMDsKCQkkcmVzdWx0WzFdID0gMDsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KfQplbHNlaWYoJGVjYXJ0ID09OSkKewoJaWYoJHZpY3RvaXJlID09ICdXWFlaJykKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gMDsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCQkKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTI5OwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT0tMSkKewoJaWYoJHZpY3RvaXJlID09ICdXWFlaJykKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gNjsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTU7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PS0yKQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSA3OwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJCQoJfQoJZWxzZQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAtNC41OwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT0tMykKewoJaWYoJHZpY3RvaXJlID09ICdXWFlaJykKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gODsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTQ7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PS00KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAxMDsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTM7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PS01KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAxMzsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTI7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PS02KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAxNzsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTE7CgkJJHJlc3VsdFsxXSA9IDA7CgkJCgkJcmV0dXJuICRyZXN1bHQ7Cgl9Cn0KZWxzZWlmKCRlY2FydCA9PS03KQp7CglpZigkdmljdG9pcmUgPT0gJ1dYWVonKQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAyMjsKCQkkcmVzdWx0WzFdID0gMTsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KCWVsc2UKCXsKCQkkcmVzdWx0ID0gYXJyYXkoKTsKCQkkcmVzdWx0WzBdID0gLTAuNTsKCQkkcmVzdWx0WzFdID0gMDsKCQkKCQlyZXR1cm4gJHJlc3VsdDsKCX0KfQplbHNlaWYoJGVjYXJ0ID09LTgpCnsKCWlmKCR2aWN0b2lyZSA9PSAnV1hZWicpCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IDI4OwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQoJZWxzZQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAwOwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CmVsc2VpZigkZWNhcnQgPT0tOSkKewoJaWYoJHZpY3RvaXJlID09ICdXWFladycpCgl7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJJHJlc3VsdFswXSA9IDQwOwoJCSRyZXN1bHRbMV0gPSAxOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQoJZWxzZQoJewoJCSRyZXN1bHQgPSBhcnJheSgpOwoJCSRyZXN1bHRbMF0gPSAwOwoJCSRyZXN1bHRbMV0gPSAwOwoJCQoJCXJldHVybiAkcmVzdWx0OwoJfQp9CgkKfQp9CQoKCgpmdW5jdGlvbiBDYWxjdWxQb2ludHNJbmRpdnMoJGVjYXJ0LCR2aWN0b2lyZSkgewoKCQoJCWlmKCRlY2FydCA9PTEpCgl7CgkJaWYoICR2aWN0b2lyZSA9PSAxKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSA2OwkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQkgCgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTU7CgkJCQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTIpCgl7CgkJaWYoICR2aWN0b2lyZSA9PTEpCgkJewoJCQkKCQkJJHJlc3VsdCA9IDUuNTsKCQkJCgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQkJCgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTY7CgkJCQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PTMpCgl7CgkJaWYoJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gNTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTc7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT00KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSA0OwoJCQkKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkKCQkJJHJlc3VsdCA9IC04OwoJCQkKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT01KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAzOwoJCQkKCQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkKCQkJJHJlc3VsdCA9IC0xMDsKCQkJCgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09NikKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMjsKCQkJCgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtMTIuNTsKCQkJCgkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09NykKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTE2OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09OCkKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMC41OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtMjA7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT05KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAwOwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtMjk7CQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS0xKQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSA2OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtNTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydD09LTIpCgl7CgkJaWYoICR2aWN0b2lyZSA9PTEpCgkJewoJCQkKCQkJJHJlc3VsdCA9IDc7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCQkKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtNC41OwkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tMykKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gODsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTQ7CgkJCQoJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS00KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAxMDsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTM7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCX0KCWVsc2VpZigkZWNhcnQgPT0tNSkKCXsKCQlpZiggJHZpY3RvaXJlID09MSkKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMTM7CQkJCgkJCXJldHVybiAkcmVzdWx0OwoJCX0KCQllbHNlCgkJewoJCQkKCQkJJHJlc3VsdCA9IC0yOwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9Cgl9CgllbHNlaWYoJGVjYXJ0ID09LTYpCgl7CgkJaWYoICR2aWN0b2lyZSA9PTEpCgkJewoJCQkKCQkJJHJlc3VsdCA9IDE3OwkJCQoJCQlyZXR1cm4gJHJlc3VsdDsKCQl9CgkJZWxzZQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAtMTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS03KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAyMjsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gLTAuNTsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS04KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSAyODsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMDsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJfQoJZWxzZWlmKCRlY2FydCA9PS05KQoJewoJCWlmKCAkdmljdG9pcmUgPT0xKQoJCXsKCQkJCgkJCSRyZXN1bHQgPSA0MDsJCQkKCQkJcmV0dXJuICRyZXN1bHQ7CgkJfQoJCWVsc2UKCQl7CgkJCQoJCQkkcmVzdWx0ID0gMDsKCQkJCgkJfQoJfQoKfQpmdW5jdGlvbiBwbGF5ZXJFeGlzdHMgKCR1c2VybmFtZSwkcHRzKXsKCSAkZGIgID0gY21zbXMoKS0+R2V0RGIoKTsKCSRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLgoJJ21vZHVsZV9waW5nX2pvdWV1cnMgV0hFUkUgdXNlcm5hbWUgPSA/JzsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoICR1c2VybmFtZSApKTsKCQoJLy8xZXJlIGNvbmRpdGlvbiA6IHBhcyBkZSBjb3JyZXNwb25kYW5jZSA6IGxlIGpvdWV1ciBuJ2V4aXN0ZSBwYXMgOiBvbiBsJ2luc8OocmUgCglpZigkZGJyZXN1bHQgICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKSB7CgkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIChpZCwgdXNlcm5hbWUsIHB0cykgVkFMVUVTICgnJywgPywgPykiOwoJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkdXNlcm5hbWUsJHB0cykpOwoJfQoJLyogTGUgam91ZXVyIGV4aXN0ZSBkw6lqw6AgKi8KCS8qIG9uIHZhIHbDqXJpZmllciBzaSBsZSBub21icmUgZGUgcG9pbnRzIGNvcnJlc3BvbmQgb3UgcGFzICovCglpZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkgewoJCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIHVzZXJuYW1lID0gPyBBTkQgcHRzID0/IjsKCQkkZGJyZXRvdXIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdXNlcm5hbWUsJHB0cykpOwoJLyogTGUgam91ZXVyIGV4aXN0ZSBldCBsZXMgcG9pbnRzIGNvcnJlc3BvbmRlbnQgb24gbmUgZmFpdCByaWVuKi8JCgkJaWYoJGRicmV0b3VyICYmICRkYnJldG91ci0+UmVjb3JkQ291bnQoKSA+IDApewoJCQl9CgkJCWVsc2V7CgkJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFNFVCBwdHMgPSA/IFdIRVJFIHVzZXJuYW1lID0gPyI7CgkJCQkkcmVzdWx0MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRwdHMsICR1c2VybmFtZSkpOwoJCQl9CgkJCS8vIGluc2NyaXB0aW9uIGRzIGxhIHRhYmxlIGRlcyBjbGFzc2VtZW50cyAKCQkJJG1vaXNfY291cmFudCA9IGRhdGUoIm4iKTsKCQkJJHNhaXNvbiA9ICcyMDEzLTIwMTQnOwoJCS8vCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2x0cyAoaWQsIHVzZXJuYW1lLCBwdHMsIG1vaXMsc2Fpc29uKSBWQUxVRVMgKCcnLD8sPyw/LD8pIjsKCQkvLwkkcmVzdWx0MyA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR1c2VybmFtZSwkcHRzLCRtb2lzX2NvdXJhbnQsICRzYWlzb24pKTsKCQl9Cgl9CgoKZnVuY3Rpb24gY29tcGV0ICgkY29tcGV0aXRpb24pewoJJGRiICA9IGNtc21zKCktPkdldERiKCk7CiRxdWVyeSA9IlNFTEVDVCBjb2VmZmljaWVudCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jb21wZXRpdGlvbnMgV0hFUkUgY29kZV9jb21wZXQgPSA/IjsKJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNvbXBldGl0aW9uKSk7CmlmICgkZGJyZXRvdXIgJiYgJGRicmV0b3VyLT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmV0b3VyLT5GZXRjaFJvdygpKQogICAgICB7CgkkY29lZmYgPSAkcm93Wydjb2VmZmljaWVudCddOwoJcmV0dXJuICRjb2VmZjsKCX0KCQp9Cn0KCmZ1bmN0aW9uIENoZXJjaGVQdHMgKCRqb3VldXIpewoJJGRiICA9IGNtc21zKCktPkdldERiKCk7CgkkcXVlcnkgPSAiU0VMRUNUIHB0cyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIHVzZXJuYW1lID0gPyI7CQoJJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGpvdWV1cikpOwoJaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQogIAkJewogICAgCQkJd2hpbGUgKCRyb3c9ICRkYnJldG91ci0+RmV0Y2hSb3coKSkKICAgICAgCQkJewoJCQkJJHB0cyA9ICRyb3dbJ3B0cyddOwoJCQkJcmV0dXJuICRwdHM7CgkJCX0KCQoJCX0KfQoKZnVuY3Rpb24gbmJqb3VldXJzICgkY29tcGV0aXRpb24pewoJJGRiICA9IGNtc21zKCktPkdldERiKCk7CiRxdWVyeSA9IlNFTEVDVCBqb3VldXJzLCBwYXJ0aWVzIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbXBldGl0aW9ucyBXSEVSRSBjb2RlX2NvbXBldCA9ID8iOwokZGJyZXRvdXIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkY29tcGV0aXRpb24pKTsKaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXRvdXItPkZldGNoUm93KCkpCiAgICAgIHsKCSRyZXN1bHRbXSA9ICRyb3dbJ2pvdWV1cnMnXTsKCSRyZXN1bHRbXSA9ICRyb3dbJ3BhcnRpZXMnXTsKCXJldHVybiAkcmVzdWx0OwoJCgl9CgkKfQp9CgpmdW5jdGlvbiBkcm9wZG93biAoJGNvbXBldGl0aW9uKXsKCSRkYiAgPSBjbXNtcygpLT5HZXREYigpOwokcXVlcnkgPSJTRUxFQ1Qgam91ZXVycyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jb21wZXRpdGlvbnMgV0hFUkUgY29kZV9jb21wZXQgPSA/IjsKJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNvbXBldGl0aW9uKSk7CmlmICgkZGJyZXRvdXIgJiYgJGRicmV0b3VyLT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmV0b3VyLT5GZXRjaFJvdygpKQogICAgICB7Cgkkam91ZXVycyA9ICRyb3dbJ2pvdWV1cnMnXTsKCXJldHVybiAkam91ZXVyczsKCX0KCQp9Cn0KCmZ1bmN0aW9uIHJhbmRvbSgkY2FyKSB7CiRzdHJpbmcgPSAiIjsKJGNoYWluZSA9ICJhYmNkZWZnaGlqa2xtbnBxcnN0dXZ3eHkiOwpzcmFuZCgoZG91YmxlKW1pY3JvdGltZSgpKjEwMDAwMDApOwpmb3IoJGk9MDsgJGk8JGNhcjsgJGkrKykgewokc3RyaW5nIC49ICRjaGFpbmVbcmFuZCgpJXN0cmxlbigkY2hhaW5lKV07Cn0KcmV0dXJuICRzdHJpbmc7Cn0KCmZ1bmN0aW9uIGNvZWZmICgkdHlwZUNvbXBldGl0aW9uKXsKCSRkYiAgPSBjbXNtcygpLT5HZXREYigpOwovKgkKCWlmKHN1YnN0cl9jb3VudCgkdHlwZUNvbXBldGl0aW9uLCctJyk+MCl7CgkJJHR5cGVfaW50ZXIgPSBleHBsb2RlKCctJywkdHlwZUNvbXBldGl0aW9uLDIpOwoJCSR0eXBlID0gJHR5cGVfaW50ZXJbMF07Cgl9CgllbHNlIHsKCQkkdHlwZSA9ICR0eXBlQ29tcGV0aXRpb247Cgl9CiovCiRxdWVyeSA9IlNFTEVDVCBjb2VmZmljaWVudCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyBXSEVSRSBuYW1lID0gPyI7CiRkYnJldG91ciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR0eXBlQ29tcGV0aXRpb24pKTsKaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXRvdXItPkZldGNoUm93KCkpCiAgICAgIHsKCSRjb2VmZiA9ICRyb3dbJ2NvZWZmaWNpZW50J107CglyZXR1cm4gJGNvZWZmOwoJfQoJCn0KZWxzZXsKCSRjb2VmZiA9IDA7CglyZXR1cm4gY29lZmY7CgkvL2VjaG8gImNvZWZmaWNpZW50IGludHJvdXZhYmxlICEiOwp9Cn0KCmZ1bmN0aW9uIGNvZWZmX29sZCAoJGNsZSl7CgkkZGIgID0gY21zbXMoKS0+R2V0RGIoKTsKJHF1ZXJ5ID0iU0VMRUNUIGNvZWZmaWNpZW50IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbXBldGl0aW9ucyBBUyBjb21wLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVuY29udHJlcyBBUyByZW4gV0hFUkUgY29tcC5jb2RlX2NvbXBldCA9IHJlbi50eXBlX2NvbXBldCBBTkQgcmVuLmNsZSA9ICA/IjsKJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNsZSkpOwppZiAoJGRicmV0b3VyICYmICRkYnJldG91ci0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJldG91ci0+RmV0Y2hSb3coKSkKICAgICAgewoJJGNvZWZmID0gJHJvd1snY29lZmZpY2llbnQnXTsKCXJldHVybiAkY29lZmY7Cgl9CgkKfQplbHNlewoJZWNobyAiY29lZmZpY2llbnQgaW50cm91dmFibGUgISI7Cn0JCQpmdW5jdGlvbiBkYXRldmVyc2ZyICgkZGF0ZSl7CSAgIAoJJGRhdGVhcnIgPSBleHBsb2RlKCcvJywgJGRhdGUpOwoJJGRhdGVmciA9ICRkYXRlYXJyWzJdIC4gJy0nIC4gJGRhdGVhcnJbMV0gLiAnLScgLiAkZGF0ZWFyclswXTsKCXJldHVybiAkZGF0ZWZyOwoJfQp9CmZ1bmN0aW9uIG1vaXNfZnJhbmNhaXMoJG1vaXMsJGxvbmd1ZXVyKXsKCWlmKCFpc3NldCgkbG9uZ3VldXIpIHx8ICRsb25ndWV1ciA9PScnKXsKCQkkbW9udGhzID0gYXJyYXkoIkphbnZpZXIiLCAiRsOpdnJpZXIiLCAiTWFycyIsICJBdnJpbCIsICJNYWkiLCAiSnVpbiIsICJqdWlsbGV0IiwgIkFvdXQiLCAiU2VwdGVtYnJlIiwgIk9jdG9icmUiLCAiTm92ZW1icmUiLCAiZMOpY2VtYnJlIik7Cgl9CgllbHNlCgl7CgkJJG1vbnRocyA9IGFycmF5KCJKYW4iLCAiRsOpdiIsICJNYXIiLCAiQXZyIiwgIk1haSIsICJKdWluIiwgImp1aWwiLCAiQW91IiwgIlNlcCIsICJPY3QiLCAiTm92IiwgImTDqWMiKTsKCX0KCSRtb250aF90b19kaXNwbGF5ID0gJG1vaXMtMTsKCSRtb250aF9mcmFuY2FpcyA9ICRtb250aHNbIiRtb250aF90b19kaXNwbGF5Il07CglyZXR1cm4gJG1vbnRoX2ZyYW5jYWlzOwp9CgpmdW5jdGlvbiBnZXRfbmFtZSgkbm9tKXsKCSRleHBsb3Npb24gPSBleHBsb2RlKCcgJywkbm9tKTsKCSRjb21wdGV1ciA9IGNvdW50KCRleHBsb3Npb24pOwoJJG5hbWUgPSBhcnJheSgpOwoJJHByZW5vbSA9IGFycmF5KCk7CgkKCSRpID0wOwoJZm9yZWFjaCAoJGV4cGxvc2lvbiBhcyAkdGVzdGNhc2UpIHsKCSRpKys7CQoJICBpZiAoY3R5cGVfdXBwZXIoJHRlc3RjYXNlKSkgewoJICAgICRuYW1lWyRpXSA9ICR0ZXN0Y2FzZTsKCQkvL2VjaG8gIkxhIGNoYcOubmUiLiRpLiIgJHRlc3RjYXNlIG5lIGNvbnRpZW50IHF1ZSBkZXMgbWFqdXNjdWxlcy5cbiI7CgkgIH0gZWxzZSB7CgkgICAvLyBlY2hvICJMYSBjaGHDrm5lIi4kaS4iICR0ZXN0Y2FzZSBuZSBjb250aWVudCBwYXMgcXVlIGRlcyBtYWp1c2N1bGVzLlxuIjsKCQkkcHJlbm9tWyRpXSA9ICR0ZXN0Y2FzZTsKCSAgfQoJfQoJCgkkbm9tX2ZpbmFsID0gaW1wbG9kZSggJyAnLCRuYW1lKTsKCSRwcmVub21fZmluYWwgPSBpbXBsb2RlKCcgJywkcHJlbm9tKTsKCSRyZXN1bHRbMF0gPSAkbm9tX2ZpbmFsOwoJJHJlc3VsdFsxXSA9ICRwcmVub21fZmluYWw7CglyZXR1cm4gJHJlc3VsdDsKCQp9Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFBpbmcKIyBWZXJzaW9uOiAwLjIsIENsYXVkZSBTSU9IQU4gQWdpIHdlYmNvbnNlaWwKIyBNZXRob2Q6IEluc3RhbGwKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDggYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NrZWxldG9uLwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgovKioKICogRm9yIHNlcGFyYXRlZCBtZXRob2RzLCB5b3UnbGwgYWx3YXlzIHdhbnQgdG8gc3RhcnQgd2l0aCB0aGUgZm9sbG93aW5nCiAqIGxpbmUgd2hpY2ggY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgbWV0aG9kIHdhcyBjYWxsZWQgZnJvbSB0aGUgbW9kdWxlCiAqIEFQSSwgYW5kIHRoYXQgZXZlcnl0aGluZydzIHNhZmUgdG8gY29udGludWU6CiAqLyAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoKLyoqIAogKiBBZnRlciB0aGlzLCB0aGUgY29kZSBpcyBpZGVudGljYWwgdG8gdGhlIGNvZGUgdGhhdCB3b3VsZCBvdGhlcndpc2UgYmUKICogd3JhcHBlZCBpbiB0aGUgSW5zdGFsbCgpIG1ldGhvZCBpbiB0aGUgbW9kdWxlIGJvZHkuCiAqLwoKJGRiID0gJGdDbXMtPkdldERiKCk7CgovLyBteXNxbC1zcGVjaWZpYywgYnV0IGlnbm9yZWQgYnkgb3RoZXIgZGF0YWJhc2UKJHRhYm9wdGFycmF5ID0gYXJyYXkoICdteXNxbCcgPT4gJ0VOR0lORT1NeUlTQU0nICk7CgokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgokZmxkcyA9ICIKCWlkIEkoMTEpIEFVVE8gS0VZLAoJYWN0aWYgSSgxKSwKCWxpY2VuY2UgSSgxMSksCglub20gQygyNTUpLAoJcHJlbm9tIEMoMjU1KSwKCXB0cyBJKDExKSwKCWJpcnRoZGF5IEQsCglzZXhlIEMoMSksCglhZHJlc3NlIEMoMjU1KSwKCXZpbGxlIEMoMjU1KSwKCWNvZGVwb3N0YWwgQyg1KSAiOwoJCQkKLy8gY3JlYXRlIGl0LiAKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMiLAoJCQkJICAgJGZsZHMsIAoJCQkJICAgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwojCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwokZmxkcz0gImlkIEkoMTEpIEtFWSBBVVRPLAogICAgICAgIHNhaXNvbiBDKDEwMCksCglwaGFzZSBJKDEpLAoJbGliZXF1aXBlIEMoMjU1KSwKCWxpYmRpdmlzaW9uIEMoMjU1KSwKCWZyaWVuZGx5bmFtZSBDKDI1NSksCglsaWVuZGl2aXNpb24gQygyNTUpLAoJaWRwb3VsZSBJKDExKSwKCWlkZGl2IEkoMTEpLAoJdHlwZV9jb21wZXQgQygzKSBERUZBVUxUICdVJyI7Cgokc3FsYXJyYXk9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIiwKCQkJCSAgJGZsZHMsCgkJCQkgICR0YWJvcHRhcnJheSk7CgkJCQkKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy91bmUgbm91dmVsbGUgdGFibGUgcG91ciBsZXMgdmljdG9pcmVzIGJydXRlcyAocGFzIGRlIHZpY3RvaXJlcyBkw6l0YWlsbMOpZXMgcG91ciBsJ2luc3RhbnQpCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwoKLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCiRmbGRzID0gIgoJaWQgSSgxMSkgQVVUTyBLRVksCglzYWlzb24gQygyNTUpLAoJZGF0ZW1haiAiLiBDTVNfQURPREJfRFQgLiIsCglsaWNlbmNlIEkoMTEpLAoJZGF0ZV9ldmVudCBELAoJZXByZXV2ZSBDKDI1NSksCglub20gQygyNTUpLAoJbnVtam91cm4gSSgxMSksCgljbGFzc2VtZW50IEkoNCksCgl2aWN0b2lyZSBJKDEpLAoJZWNhcnQgTig2LjIpLAoJdHlwZV9lY2FydCBJKDExKSwKCWNvZWZmIE4oMy4yKSwKCXBvaW50cmVzIE4oNS4zKSwKCWZvcmZhaXQgSSgxKSAiOwoJCQkKLy8gY3JlYXRlIGl0LiAKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCIsCgkJCQkgICAkZmxkcywgCgkJCQkgICAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovL3VuZSBub3V2ZWxsZSB0YWJsZSBwb3VyIGxlcyBwb2ludHMKCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwoKLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCiRmbGRzID0gIgoJaWQgSSgxMSkgIEFVVE8gS0VZLAoJc2Fpc29uIEMoMjU1KSwKCWxpY2VuY2UgSSgxMSksCglhZHZsaWMgSSgxMSksCgl2ZCBJLAoJbnVtam91cm4gSSgyKSwKCWNvZGVjaGFtcCBDKDMpLAoJZGF0ZV9ldmVudCBELAoJYWR2c2V4ZSBDKDMpLAoJYWR2bm9tcHJlIEMoMjU1KSwKCXBvaW50cmVzIE4oNi4zKSwKCWNvZWZjaGFtcCBOKDMuMiksCglhZHZjbGFvZiBDKDQpIjsKCQkJCi8vIAokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyIsCgkJCQkgICAkZmxkcywgCgkJCQkgICAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovLwokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgokZmxkcyA9ICIKCWlkIEkoMTEpIEFVVE8gS0VZLAoJc2Fpc29uIEMoMjU1KSwKCWRhdGVtYWogIi4gQ01TX0FET0RCX0RUIC4iLAoJbGljZW5jZSBJKDExKSwKCXNpdF9tZW5zIEMoMjAwKSwKCWZmdHQgSSgxMSksCgltYWpfZmZ0dCBELAoJc3BpZCBJKDExKSwKCW1hal9zcGlkIEQsCgltYWpfdG90YWwgSSgxMSkiOwoJCQkKLy8gY3JlYXRlIGl0LiAKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMiLAoJCQkJICAgJGZsZHMsIAoJCQkJICAgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwoKLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCiRmbGRzID0gIgogICAgIGlkIEkoMTEpIEFVVE8gS0VZLAoJc2Fpc29uIEMoMjU1KSwKCWlkcG91bGUgSSgxMSksCglpZGRpdiBJKDExKSwKCWNsdWIgSSgxKSwKCXRvdXIgSSgyKSwKCWRhdGVfZXZlbnQgRCwKCWFmZmljaGUgTCwgCgl1cGxvYWRlZCBJKDEpLAoJbGliZWxsZSBDKDI1NSksCgllcXVhIEMoMjU1KSwKCWVxdWIgQygyNTUpLAoJc2NvcmVhIEkoMiksCglzY29yZWIgSSgyKSwKCWxpZW4gQygyNTUpIjsKCQkJCi8vIGNyZWF0ZSBpdC4gCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyIsCgkJCQkgICAkZmxkcywgCgkJCQkgICAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgokdGFib3B0YXJyYXkgPSBhcnJheSggJ215c3FsJyA9PiAnRU5HSU5FPU15SVNBTScgKTsKCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwoKLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCiRmbGRzID0gIgoJaWQgSSgxMSkgQVVUTyBLRVksCglkYXRlY3JlYXRlZCAiLiBDTVNfQURPREJfRFQgLiIsCglkYXRlbWFqICIuIENNU19BRE9EQl9EVCAuIiwKCW1vaXMgSSgyKSwKCWFubmVlIEkoNCksCglwaGFzZSBJKDEpLAoJbGljZW5jZSBJKDExKSwKCWNhdGVnIEMoMTApLAoJbm9tIEMoMjU1KSwKCXByZW5vbSBDKDI1NSksCglwb2ludHMgTig2LjIpLAoJY2xuYXQgSSgxMSksCglyYW5ncmVnIEkoMTEpLAoJcmFuZ2RlcCBJKDExKSwKCXByb2dtb2lzIE4oNi4yKSI7CgkJCQovLyBjcmVhdGUgaXQuIAokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2l0X21lbnMiLAoJCQkJICAgJGZsZHMsIAoJCQkJICAgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8KJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgovLyB0YWJsZSBzY2hlbWEgZGVzY3JpcHRpb24KJGZsZHMgPSAiCglpZCBJKDExKSBBVVRPIEtFWSwKCWRhdGVjcmVhdGVkICIuIENNU19BRE9EQl9EVCAuIiwKCWRhdGVtYWogIi4gQ01TX0FET0RCX0RUIC4iLAoJbW9pcyBJKDIpLAoJYW5uZWUgSSg0KSwKCXBoYXNlIEkoMSksCglsaWNlbmNlIEkoMTEpLAoJY2F0ZWcgQygxMCksCglub20gQygyNTUpLAoJcHJlbm9tIEMoMjU1KSwKCXBvaW50cyBOKDYuMiksCgljbG5hdCBJKDExKSwKCXJhbmdyZWcgSSgxMSksCglyYW5nZGVwIEkoMTEpLAoJcHJvZ21vaXMgTig2LjIpIjsKCQkJCi8vIGNyZWF0ZSBpdC4gCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19hZHZlcnNhaXJlcyIsCgkJCQkgICAkZmxkcywgCgkJCQkgICAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgokZmxkcyA9ICIKCWlkIEkoMTEpIEFVVE8gS0VZLAoJdHlwZV9jb21wZXQgQygzKSwKCWRhdGVfZGVidXQgRCwKCWRhdGVfZmluIEQsCglpZGRpdiBJKDExKSwKCWlkcG91bGUgSSgxMSksCgludW1qb3VybiBJKDExKSI7CgkJCQovLyBjcmVhdGUgaXQuIAokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2FsZW5kcmllciIsCgkJCQkgICAkZmxkcywgCgkJCQkgICAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgoKLy9jcsOpYXRpb24gZCd1biBpbmRleCB1bmlxdWUgOiAKLy9DUkVBVEUgVU5JUVVFIElOREVYIG5vZG91YmxvbnMgT04gcGluZ19tb2R1bGVfcGluZ19zaXRfbWVucyAobGljZW5jZSwgbW9pcywgYW5uZWUpOwoKLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCiRmbGRzID0gIgoJaWQgSSgxMSkgQVVUTyBLRVksCglkYXRlY3JlYXRlZCAiLiBDTVNfQURPREJfRFQgLiIsCglkYXRlbWFqICIuIENNU19BRE9EQl9EVCAuIiwKCWxpY2VuY2UgSSgxMSksCgl0eXBlX2NvbnRhY3QgQygyNTUpLAoJY29udGFjdCBDKDI1NSksCglkZXNjcmlwdGlvbiBDKDI1NSkiOwoJCQkKLy8gY3JlYXRlIGl0LiAKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbW0iLAoJCQkJICAgJGZsZHMsIAoJCQkJICAgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCiRmbGRzID0gIgoJaWQgSSgxMSkgQVVUTyBLRVksCglkYXRlY3JlYXRlZCAiLiBDTVNfQURPREJfRFQgLiIsCglzdGF0dXMgQygyNTUpLAoJZGVzaWduYXRpb24gQygyNTUpLAoJYWN0aW9uIEMoMjU1KSI7CgkJCQovLyBjcmVhdGUgaXQuIAokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXAiLAoJCQkJICAgJGZsZHMsIAoJCQkJICAgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy90YWJsZSB0eXBlX2NvbXBldGl0aW9ucwokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKJGZsZHMgPSAiCglpZCBJKDExKSBBVVRPIEtFWSwKCW5hbWUgQygyNTUpLAoJY29kZV9jb21wZXQgQygzKSBVTklRVUUsCgljb2VmZmljaWVudCBOKDMuMiksCglpbmRpdnMgTCI7CgkJCQovLyBjcmVhdGUgaXQuIAokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMiLAoJCQkJICAgJGZsZHMsIAoJCQkJICAgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwojI29uIGluc8OocmUgbGVzIHZhbGV1cnMgcGFyIGTDqWZhdXQKCQoJJGluc2VydF9zcWwgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIChpZCwgbmFtZSwgY29kZV9jb21wZXQsIGNvZWZmaWNpZW50LGluZGl2cykgVkFMVUVTICgnJywgPywgPywgPywgPykiOwoJJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSgnQ3JpdMOpcml1bSBmw6lkw6lyYWwgU2VuaW9ycycsICdJJywgJzEuMjUnLCcxJykpOwoJJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSgnQ3JpdMOpcml1bSBmw6lkw6lyYWwgSmV1bmVzJywgJ0onLCAnMS4wMCcsJzEnKSk7CgkkZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCdDaHB0IEZyYW5jZSBwYXIgw6lxdWlwZXMgbWFzY3VsaW4nLCAnMScsICcxLjAwJywnMCcpKTsKCSRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoJ0NocHQgRnJhbmNlIHBhciDDqXF1aXBlcyBmw6ltaW5pbicsICcyJywgJzEuMDAnLCcwJykpOwoJJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSgnQ291cGUgTmF0aW9uYWxlIFbDqXTDqXJhbnMnLCAnSycsICcwLjc1JywnMCcpKTsKCSRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoJ0NoYW1waW9ubmF0cyBkZSBGcmFuY2UgVsOpdMOpcmFucycsICdWJywgJzEuMDAnLCcxJykpOwoJJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSgnQ2hhbXBpb25uYXQgSmV1bmVzJywgJysnLCAnMC43NScsJzAnKSk7CgkkZGItPmV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCdDaGFtcGlvbm5hdCBqZXVuZXMgcG91c3NpbnMgYmVuamFtaW5zJywgJ0VDUCcsICcxLjI1JywnMCcpKTsKCSRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoJ0ludGVyY2x1YnMgamV1bmVzJywgJ0VJSicsICcwLjUwJywnMCcpKTsKCSRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoJ1RvdXJub2kgUsOpZyAtIERlcCcsICdaJywgJzAuNTAnLCcxJykpOwoJJGRiLT5leGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSgnVG91cm5vaSBOYXRpb25hbCBldCBJbnRlcm5hdC4nLCAnVCcsICcwLjc1JywnMScpKTsKCSRkYi0+ZXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoJ0luZMOpdGVybWluw6kuJywgJ1UnLCAnMC4wMCcsJzAnKSk7CgkkZGItPkV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCdDaGFtcGlvbm5hdHMgZGUgRnJhbmNlIENvcnBvLicsJ0UnLCcxLjAwJywnMScpKTsKCSRkYi0+RXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoJ0ZpbmFsZXMgcGFyIGNsYXNzZW1lbnQnLCAnSCcsICcxLjI1JywnMScpKTsKCSRkYi0+RXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoJ0NoYW1waW9ubmF0IHBhciDDqXF1aXBlcyBjb3JwbycsJzMnLCcwLjc1JywnMCcpKTsKIyMjIyMjIyMKIwojCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwokZmxkcyA9ICIKCWxpY2VuY2UgSSgxMSksCgl0eXBlX2NvbXBldCBDKDMpIjsKCQkJCi8vIGNyZWF0ZSBpdC4gCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWNpcGUiLAoJCQkJICAgJGZsZHMsIAoJCQkJICAgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwovL3VuZSB0YWJsZSBwb3VyIGxlcyBjbGFzc2VtZW50cyBkZXMgcG91bGVzCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwoKLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCiRmbGRzID0gIgoJaWQgSSgxMSkgQVVUTyBLRVksCglpZGVxdWlwZSBJKDExKSwKCXNhaXNvbiBDKDI1NSksCgljb2RlX2NvbXBldCBDKDMpLAoJaWRkaXYgSSgxMSksCglpZHBvdWxlIEkoMTEpLAoJcG91bGUgQygyNTUpLAoJY2x0IEkoMiksCgllcXVpcGUgQygyNTUpLAoJam91ZSBJKDQpLAoJcHRzIEkoMykgIjsKCQkJCi8vIGNyZWF0ZSBpdC4gCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jbGFzc2VtZW50IiwKCQkJCSAgICRmbGRzLCAKCQkJCSAgICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKLy8kZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMnKTsKIwovLyBjcmVhdGUgYSBzZXF1ZW5jZQokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2VxIik7CiMKLy8gY3JlYXRlIGEgcGVybWlzc2lvbgokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignUGluZyBVc2UnLCAnUGluZyBVc2UnKTsKJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ1BpbmcgU2V0IFByZWZzJywnUGluZyBTZXQgUHJlZnMnKTsKJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ1BpbmcgTWFuYWdlIHVzZXInLCAnUGluZyBNYW5hZ2UgdXNlcicpOwokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignUGluZyBEZWxldGUnLCAnUGluZyBEZWxldGUnKTsKIwovLyBjcmVhdGUgYSBwcmVmZXJlbmNlCi8vJHRoaXMtPlNldFByZWZlcmVuY2UoIm1pbmlfdHJhbmNoZUEnLCAnMCcpOwovKiBsZXMgdmljdG9pcmVzIG5vcm1hbGVzICovCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd2aWNOb3JtMF8yNCcsICc2Jyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd2aWNOb3JtMjVfNDknLCAnNSw1Jyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd2aWNOb3JtNTBfOTknLCAnNScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndmljTm9ybTEwMF8xNDknLCAnNCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndmljTm9ybTE1MF8xOTknLCAnMycpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndmljTm9ybTIwMF8yOTknLCAnMicpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndmljTm9ybTMwMF8zOTknLCAnMScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndmljTm9ybTQwMF80OTknLCAnMCw1Jyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd2aWNOb3JtUGx1czUwMCcsICcwJyk7CiMKIyAgICBQb3VyIGxlcyB0w6JjaGVzIENST04KIwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnTGFzdFJlY3VwU3BpZCcsICcnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ0xhc3RSZWN1cEZmdHQnLCAnJyk7CiMKLyogbGVzIHZpY3RvaXJlcyBhbm9ybWFsZXMgKi8KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY0Fub3JtMF8yNCcsICc2Jyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd2aWNBbm9ybTI1XzQ5JywgJzcnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY0Fub3JtNTBfOTknLCAnOCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndmljQW5vcm0xMDBfMTQ5JywgJzEwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd2aWNBbm9ybTE1MF8xOTknLCAnMTMnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY0Fub3JtMjAwXzI5OScsICcxNycpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndmljQW5vcm0zMDBfMzk5JywgJzIyJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd2aWNBbm9ybTQwMF80OTknLCAnMjgnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY0Fub3JtUGx1czUwMCcsICc0MCcpOwojCi8qIGTDqWZhaXRlcyBub3JtYWxlcyAqLwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmTm9ybTBfMjQnLCAnLTUnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZk5vcm0yNV80OScsICctNCw1Jyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZOb3JtNTBfOTknLCAnLTQnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZk5vcm0xMDBfMTQ5JywgJy0zJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZOb3JtMTUwXzE5OScsICctMicpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmTm9ybTIwMF8yOTknLCAnLTEnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZk5vcm0zMDBfMzk5JywgJy0wLDUnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZk5vcm00MDBfNDk5JywgJzAnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZk5vcm1QbHVzNTAwJywgJzAnKTsKIwovKiBkw6lmYWl0ZXMgQW5vcm1hbGVzICovCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTBfMjQnLCAnLTUnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZkFub3JtMjVfNDknLCAnLTYnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZkFub3JtNTBfOTknLCAnLTcnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZkFub3JtMTAwXzE0OScsICctOCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmQW5vcm0xNTBfMTk5JywgJy0xMCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmQW5vcm0yMDBfMjk5JywgJy0xMiw1Jyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTMwMF8zOTknLCAnLTE2Jyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTQwMF80OTknLCAnLTIwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZBbm9ybVBsdXM1MDAnLCAnLTI5Jyk7CgoKLy8gY3JlYXRlIGEgcHJlZmVyZW5jZQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdE1vbnRoU2l0TWVucycsICc1Jyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwaGFzZScsICcxJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwb3B1bGF0ZV9jYWxlbmRhcicsICdPdWknKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2FmZmljaGVfY2x1Yl91bmlxdWVtZW50JywgJ091aScpOwojCiMKI1NldHVwIGV2ZW50cwokdGhpcy0+Q3JlYXRlRXZlbnQoJ09uVXNlckFkZGVkJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnT25Vc2VyRGVsZXRlZCcpOwojCi8vb24gaW5zw6hyZSBsZXMgw6lsw6ltZW50cyBwYXIgZMOpZmF1dAoKIwovLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKJHRoaXMtPkF1ZGl0KCAwLCAKCSAgICAgICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgCgkgICAgICAkdGhpcy0+TGFuZygnaW5zdGFsbGVkJywgJHRoaXMtPkdldFZlcnNpb24oKSkgKTsKCgkKCSAgICAgIAo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE5ld3NsZXR0ZXIgTWFkZSBTaW1wbGUgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBwcm92aWRlIGEgZmxleGlibGUKIyAgbWFpbGluZyBsaXN0IHNvbHV0aW9uLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFZpc2l0IHRoZSBDTVNNUyBIb21lcGFnZSBhdDogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbgojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKJGRiID0gJHRoaXMtPkdldERiKCk7CgovLyByZW1vdmUgdGhlIGRhdGFiYXNlIHRhYmxlcwokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWNpcGUiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoICBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoICBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG91bGVzX3JlbmNvbnRyZXMiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoICBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCAgY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jYWxlbmRyaWVyIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCAgY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jb21tIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2FkdmVyc2FpcmVzIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NsYXNzZW1lbnQiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCgovLyByZW1vdmUgdGhlIHNlcXVlbmNlCiRkYi0+RHJvcFNlcXVlbmNlKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NlcSIgKTsKCi8vIHJlbW92ZSB0aGUgcGVybWlzc2lvbnMKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ1BpbmcgVXNlJyk7CiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdQaW5nIFNldCBQcmVmcycpOwokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignUGluZyBNYW5hZ2UgdXNlcicpOwokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignUGluZyBEZWxldGUnKTsKCi8vIHJlbW92ZSB0aGUgcHJlZmVyZW5jZQokdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgpOwoKCi8vIEV2ZW50cwokdGhpcy0+UmVtb3ZlRXZlbnQoICdPblVzZXJBZGRlZCcgKTsKJHRoaXMtPlJlbW92ZUV2ZW50KCAnT25Vc2VyRGVsZXRlZCcgKTsKCgoKLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCiR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygndW5pbnN0YWxsZWQnKSk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNrZWxldG9uIC0gYSBwZWRhbnRpYyAic3RhcnRpbmcgcG9pbnQiIG1vZHVsZQojIFZlcnNpb246IDEuNSwgU2pHCiMgTWV0aG9kOiBVcGdyYWRlCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA4IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9za2VsZXRvbi8KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLyoqCiAqIEZvciBzZXBhcmF0ZWQgbWV0aG9kcywgeW91J2xsIGFsd2F5cyB3YW50IHRvIHN0YXJ0IHdpdGggdGhlIGZvbGxvd2luZwogKiBsaW5lIHdoaWNoIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG1ldGhvZCB3YXMgY2FsbGVkIGZyb20gdGhlIG1vZHVsZQogKiBBUEksIGFuZCB0aGF0IGV2ZXJ5dGhpbmcncyBzYWZlIHRvIGNvbnRpbnVlOgoqLyAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoKLyoqCiAqIEFmdGVyIHRoaXMsIHRoZSBjb2RlIGlzIGlkZW50aWNhbCB0byB0aGUgY29kZSB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZQogKiB3cmFwcGVkIGluIHRoZSBVcGdyYWRlKCkgbWV0aG9kIGluIHRoZSBtb2R1bGUgYm9keS4KICovCgokY3VycmVudF92ZXJzaW9uID0gJG9sZHZlcnNpb247CnN3aXRjaCgkY3VycmVudF92ZXJzaW9uKQp7CiAgLy8gd2UgYXJlIG5vdyAxLjAgYW5kIHdhbnQgdG8gdXBncmFkZSB0byBsYXRlc3QKIGNhc2UgIjAuMWJldGExIjoKCXsKCQkvL2RvIG1hZ2ljCgl9CiAgIAogY2FzZSAiMC4xYmV0YTIiOgoJewogICAJCS8vYW5kIHRoaXMgaXMgaGVyZSBmb3IgdGhlIG5leHQgdmVyc2lvbgoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIiwKCQkJCQkJICAgICAgInR5cGVfY29tcGV0IEMoMykgREVGQVVMVCAnVSciKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKCQkkc3FsID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcyBTRVQgdHlwZV9jb21wZXQgPSAnVSciOwoJCSRkYi0+RXhlY3V0ZSgkc3FsKTsKCQoJCgkJJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzIiwKCQkJCQkJICAgICAgImFmZmljaGUgTCIpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoJCgkKCQkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbXBldGl0aW9ucyIsCgkJCQkJCSAgICAgICJpbmRpdnMiKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKCQoJCSRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQiLAoJCQkJCQkgICAgICAidHlwZV9lY2FydCBJKDExKSIpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5BbHRlckNvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCIsCgkJCQkJCSAgICAgICJkYXRlbWFqICIuIENNU19BRE9EQl9EVC4gIiIpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoJCS8vcXFzIGNoYW5nZW1lbnRzIGRhbnMgbGEgdGFibGUgY2FsZW5kcmllcgoJCSRzcWxhcnJheSA9ICRkaWN0LT5SZW5hbWVDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jYWxlbmRyaWVyIiwKCQkJCQkJICAgICAgImRhdGVfY29tcGV0IiwgImRhdGVfZGVidXQiLCAiZGF0ZV9kZWJ1dCAiLiBDTVNfQURPREJfRFQgLiIiKTsKCSAJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSggJHNxbGFycmF5ICk7CgoJCSRzcWxhcnJheSA9ICRkaWN0LT5BbHRlckNvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIiLAoJCQkJCQkgICAgICJkYXRlX2RlYnV0IEQiKTsKCSAJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSggJHNxbGFycmF5ICk7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkFkZGNvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIiLAoJCQkJCQkgICAgICAiZGF0ZV9maW4gRCIpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoJCgkJJHNxbGFycmF5ID0gJGRpY3QtPkFsdGVyQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyIsCgkJCQkJCSAgICAgImRhdGVtYWogIi4gQ01TX0FET0RCX0RULiAiIik7CgkgCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoICRzcWxhcnJheSApOwoKCQkkc3FsYXJyYXkgPSAkZGljdC0+QWx0ZXJDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyIsCgkJCQkJCSAgICAgImRhdGVjcmVhdGVkICIuIENNU19BRE9EQl9EVC4gIiIpOwoJIAkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKCgkJJHNxbGFycmF5ID0gJGRpY3QtPkFsdGVyQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2l0X21lbnMiLAoJCQkJCQkgICAgICJkYXRlbWFqICIuIENNU19BRE9EQl9EVC4gIiIpOwoJIAkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKCgoJCSRzcWxhcnJheSA9ICRkaWN0LT5BbHRlckNvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbW0iLAoJCQkJCQkgICAgICJkYXRlY3JlYXRlZCAiLiBDTVNfQURPREJfRFQuICIiKTsKCSAJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSggJHNxbGFycmF5ICk7CgoJCSRzcWxhcnJheSA9ICRkaWN0LT5BbHRlckNvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbW0iLAoJCQkJCQkgICAgICJkYXRlbWFqICIuIENNU19BRE9EQl9EVC4gIiIpOwoJIAkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKCgkJJHNxbGFycmF5ID0gJGRpY3QtPkFsdGVyQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXAiLAoJCQkJCQkgICAgICJkYXRlY3JlYXRlZCAiLiBDTVNfQURPREJfRFQuICIiKTsKCSAJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSggJHNxbGFycmF5ICk7CgkKCQkkc3FsID0gIkFMVEVSIFRBQkxFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyBBREQgVU5JUVVFIGBpbmRfY29kZV9jb21wZXRgIChgY29kZV9jb21wZXRgKSI7CgkJJGRiLT5FeGVjdXRlKCRzcWwpOwoKCQkkc3FsID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyAoaWQsIG5hbWUsIGNvZGVfY29tcGV0LCBjb2VmZmljaWVudCkgVkFMVUVTICgnJywgPywgPywgPykiOwoJCSRkYi0+RXhlY3V0ZSgkc3FsLCBhcnJheSgnSW5kw6l0ZXJtaW7DqScsICdVJywgJzAuMDAnKSk7CgoJCWJyZWFrOwoJfQoKCgogY2FzZSAiMC4xYmV0YTMiIDogCiBjYXNlICIwLjFiZXRhMy4xIiA6CiBjYXNlICIwLjFiZXRhMy4yIiA6IAogY2FzZSAiMC4xcmMxIiA6CiBjYXNlICIwLjEiIDoKCgl7CgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgkJJGZsZHMgPSAiCgkJCWxpY2VuY2UgSSgxMSksCgkJCXR5cGVfY29tcGV0IEMoMykiOwoKCQkvLyBjcmVhdGUgaXQuIAoJCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWNpcGUiLAoJCQkJCQkgICAkZmxkcywgCgkJCQkJCSAgICR0YWJvcHRhcnJheSk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgoJCS8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgoJCSRmbGRzID0gIgoJCQlpZCBJKDExKSBBVVRPIEtFWSwKCQkJaWRlcXVpcGUgSSgxMSksCgkJCXNhaXNvbiBDKDI1NSksCgkJCWNvZGVfY29tcGV0IEMoMyksCgkJCWlkZGl2IEkoMTEpLAoJCQlpZHBvdWxlIEkoMTEpLAoJCQlwb3VsZSBDKDI1NSksCgkJCWNsdCBJKDIpLAoJCQllcXVpcGUgQygyNTUpLAoJCQlqb3VlIEkoNCksCgkJCXB0cyBJKDMpICI7CgoJCS8vIGNyZWF0ZSBpdC4gCgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NsYXNzZW1lbnQiLAoJCQkJCQkgICAkZmxkcywgCgkJCQkJCSAgICR0YWJvcHRhcnJheSk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCgkJJHNxbGFycmF5ID0gJGRpY3QtPkFsdGVyQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIiwKCQkJCQkJICAgICAicG9pbnRyZXMgTig2LjMpICIpOwoJIAkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCAkc3FsYXJyYXkgKTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMiLAoJCQkJCQkiaW5kaXZzIEwiKTsKCQkkc3FsYXJyYXkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9uc2AgU0VUIGBpbmRpdnNgID0gJzEnIFdIRVJFIGBpZGAgPSAxIjsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJJHNxbGFycmF5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnNgIFNFVCBgaW5kaXZzYCA9ICcxJyBXSEVSRSBgaWRgID0gMiI7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCSRzcWxhcnJheSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zYCBTRVQgYGluZGl2c2AgPSAnMScgV0hFUkUgYGlkYCA9IDYiOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkkc3FsYXJyYXkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9uc2AgU0VUIGBpbmRpdnNgID0gJzEnIFdIRVJFIGBpZGAgPSA3IjsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJJHNxbGFycmF5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnNgIFNFVCBgaW5kaXZzYCA9ICcxJyBXSEVSRSBgaWRgID0gOCI7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCSRzcWxhcnJheSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zYCBTRVQgYGluZGl2c2AgPSAnMScgV0hFUkUgYGlkYCA9IDEwIjsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJJHNxbGFycmF5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnNgIFNFVCBgaW5kaXZzYCA9ICcxJyBXSEVSRSBgaWRgID0gMTEiOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkkc3FsYXJyYXkgPSAiQUxURVIgVEFCTEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIEFERCBVTklRVUUgYGluZF9jb2RlX2NvbXBldGAgKGBjb2RlX2NvbXBldGApIjsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJCgl9CgkKY2FzZSAiMC4xLjEiIDogCQoJCgl7CgkJCgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgoJCS8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgoJCSRmbGRzID0gIgoJCQlpZCBJKDExKSBBVVRPIEtFWSwKCQkJZGF0ZWNyZWF0ZWQgIi4gQ01TX0FET0RCX0RUIC4iLAoJCQlkYXRlbWFqICIuIENNU19BRE9EQl9EVCAuIiwKCQkJbW9pcyBJKDIpLAoJCQlhbm5lZSBJKDQpLAoJCQlwaGFzZSBJKDEpLAoJCQlsaWNlbmNlIEkoMTEpLAoJCQljYXRlZyBDKDEwKSwKCQkJbm9tIEMoMjU1KSwKCQkJcHJlbm9tIEMoMjU1KSwKCQkJcG9pbnRzIE4oNi4yKSwKCQkJY2xuYXQgSSgxMSksCgkJCXJhbmdyZWcgSSgxMSksCgkJCXJhbmdkZXAgSSgxMSksCgkJCXByb2dtb2lzIE4oNi4yKSI7CgoJCS8vIGNyZWF0ZSBpdC4gCgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2FkdmVyc2FpcmVzIiwKCQkJCQkJICAgJGZsZHMsIAoJCQkJCQkgICAkdGFib3B0YXJyYXkpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkKCX0KCQpjYXNlICIwLjIiIDoKY2FzZSAiMC4yLjEiIDoKCXsKCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMiLCAibWFqX2ZmdHQgRCIpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyIsICJtYWpfc3BpZCBEIik7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCSRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIiwgInNwaWRfdG90YWwgSSgxMSkiKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZUluZGV4U1FMKGNtc19kYl9wcmVmaXgoKS4naW5kX2NvZGVfY29tcGV0JywKCQkgICAgICAgICBjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zJywgJ2NvZGVfY29tcGV0JywgJ1VOSVFVRScpOwoJCSAgICAgICAkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgl9CgkJCQkJCgoKfQoKCi8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZwokdGhpcy0+QXVkaXQoIDAsIAoJICAgICAgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAKCSAgICAgICR0aGlzLT5MYW5nKCd1cGdyYWRlZCcsICR0aGlzLT5HZXRWZXJzaW9uKCkpKTsKCi8vbm90ZTogbW9kdWxlIGFwaSBoYW5kbGVzIHNlbmRpbmcgZ2VuZXJpYyBldmVudCBvZiBtb2R1bGUgdXBncmFkZWQgaGVyZQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9IFBpbmcKdmVyc2lvbiA9IDAuMi4yCmRlc2NyaXB0aW9uID0gCmF1dGhvciA9IGFnaS13ZWJjb25zZWlsCmF1dGhvcmVtYWlsID0gY2xhdWRlQGFnaS13ZWJjb25zZWlsLmZyCm1pbmNtc3ZlcnNpb24gPSAyLjAtYmV0YTMKMTE=]]></data>
	</file>
	<file>
	  <filename>/Ping.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBQaW5nIC0gCiMgVmVyc2lvbjogMC4xLCBTYwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDEwIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9za2VsZXRvbi8KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLyoqCiAqCiAqIEBhdXRob3IgQ2xhdWRlIFNJT0hBTgogKiBAc2luY2UgMC4xLjEKICogQHZlcnNpb24gJFJldmlzaW9uOiAzODI3ICQKICogQG1vZGlmaWVkYnkgJExhc3RDaGFuZ2VkQnk6IHdpc2h5ICQKICogQGxhc3Rtb2RpZmllZCAkRGF0ZTogMjAwNy0wMy0xMiAxMTo1NjoxNiArMDIwMCAoTW9uLCAxMiBNYXIgMjAwNykgJAogKiBAbGljZW5zZSBHUEwKICoqLwpjbGFzcyBQaW5nIGV4dGVuZHMgQ01TTW9kdWxlCnsKICAKICBmdW5jdGlvbiBHZXROYW1lKCkgeyByZXR1cm4gJ1BpbmcnOyB9ICAgCiAgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOyB9ICAgCiAgZnVuY3Rpb24gR2V0VmVyc2lvbigpIHsgcmV0dXJuICcwLjIuMic7IH0gIAogIGZ1bmN0aW9uIEdldEhlbHAoKSB7IHJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOyB9ICAgCiAgZnVuY3Rpb24gR2V0QXV0aG9yKCkgeyByZXR1cm4gJ2FnaS13ZWJjb25zZWlsJzsgfSAKICBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpIHsgcmV0dXJuICdjbGF1ZGVAYWdpLXdlYmNvbnNlaWwuZnInOyB9CiAgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOyB9CiAgICAKICBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpIHsgcmV0dXJuIHRydWU7IH0KICBmdW5jdGlvbiBIYXNBZG1pbigpIHsgcmV0dXJuIHRydWU7IH0gICAKICBmdW5jdGlvbiBHZXRBZG1pblNlY3Rpb24oKSB7IHJldHVybiAnY29udGVudCc7IH0KICBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyk7IH0KIAogIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpCiAgewogICAgCXJldHVybiAKCQkkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFVzZScpOwoJCiAgfQogIAogIAogIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpCiAgewogICAgLy9yZXR1cm4gYXJyYXkoJ05NUyc9PicyLjknLCAnRnJvbnRFbmRVc2Vycyc9PicxLjI0Jyk7CiAgfQoKICAKCiAgZnVuY3Rpb24gTWF4aW11bUNNU1ZlcnNpb24oKQogIHsKICAgIHJldHVybiAiMi4wIjsKICB9CgogIAogIGZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKQogIHsgCiAgCSR0aGlzLT5SZWdpc3Rlck1vZHVsZVBsdWdpbigpOwoJJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOwoJCgkvL2Zvcm0gcGFyYW1ldGVycwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3N1Ym1pdCcsQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd0b3VybGlzdCcsQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdlcXVpcGVsaXN0JyxDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3R5cGVfY29tcGV0JyxDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3JlY29yZF9qb3VldXInLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NhbmNlbCcsQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdpZF91c2VyJyxDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ25vbV9jb21wbGV0JyxDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2FkcmVzc2UnLENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY29kZXBvc3RhbCcsQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjb21tdW5lJyxDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2VtYWlsJyxDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NvbmZpcm1fZW1haWwnLENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncmVjb3JkX2lkJywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd0eXBlX2NvbXBldGl0aW9uJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdkYXRlX2NvbXBldCcsIENMRUFOX05PTkUpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2FkdmVyc2FpcmVzJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd0b3VyJywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdlcXVpcGUnLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2xvY2F1eCcsIENMRUFOX1NUUklORyk7CgkkdGhpcy0+U0V0UGFyYW1ldGVyVHlwZSgnam91ZXVyJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdpZCcsIENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbnVtZXJvJywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdsaWNlbmNlJywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhZHZsaWMnLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3ZkJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdudW1qb3VybicsIENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY29kZWNoYW1wJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdkYXRlJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhZHZzZXhlJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhZHZub21wcmUnLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3BvaW50cmVzJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjb2VmY2hhbXAnLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2FkdmNsYW9mJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjbHViX3VuaXF1ZW1lbnQnLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3RlbXBsYXRlJywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdlZGl0JywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdsaW1pdCcsIENMRUFOX0lOVCk7CgkvLwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2RhdGVjcmVhdGVkJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdkYXRlbWFqJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdtb2lzJywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdtb250aCcsIENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbW9udGhzbGlzdCcsQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhbm5lZScsIENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncGhhc2UnLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2FubmVlJywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdub20nLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3ByZW5vbScsIENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnYWN0aWYnLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3BvaW50JywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjbG5hdCcsIENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncmFuZ3JlZycsIENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncmFuZ2RlcCcsIENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncHJvZ21vaXMnLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3NhaXNvbicsIENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZGF0ZV9kZWJ1dCcsIENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZGF0ZV9maW4nLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3R5cGUnLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2lkcG91bGUnLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2lkZGl2JywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdsaWVuJywgQ0xFQU5fU1RSSU5HKTsKLyoJKi8KCQoJLy8kdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdkaXNwbGF5JywnJyk7CgoKfQoKZnVuY3Rpb24gSW5pdGlhbGl6ZUFkbWluKCkKewogICR0aGlzLT5TZXRQYXJhbWV0ZXJzKCk7CgkvLyR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ3BhZ2VsaW1pdCcsIDEwMDAwMCwgJHRoaXMtPkxhbmcoJ2hlbHBfcGFnZWxpbWl0JykpOwoJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigndG91cicsIDEsICR0aGlzLT5MYW5nKCdoZWxwX3RvdXInKSk7CgkkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCd0eXBlX2NvbXBldCcsIDEsICR0aGlzLT5MYW5nKCdoZWxwX3R5cGVfY29tcGV0JykpOwoJJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignZGF0ZV9kZWJ1dCcsICcnLCAkdGhpcy0+TGFuZygnaGVscF9kYXRlX2RlYnV0JykgKTsKCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2RhdGVfZmluJywgJycsICR0aGlzLT5MYW5nKCdoZWxwX2RhdGVfZmluJykgKTsKCSR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2xpbWl0JywgMTAwMDAsICR0aGlzLT5MYW5nKCdoZWxwX2xpbWl0JykpOwp9CgpwdWJsaWMgZnVuY3Rpb24gSGFzQ2FwYWJpbGl0eSgkY2FwYWJpbGl0eSwgJHBhcmFtcyA9IGFycmF5KCkpCnsKICAgaWYoICRjYXBhYmlsaXR5ID09ICd0YXNrcycgKSByZXR1cm4gVFJVRTsKICAgcmV0dXJuIEZBTFNFOwp9CgpwdWJsaWMgZnVuY3Rpb24gZ2V0X3Rhc2tzKCkKewogICAkb2JqID0gYXJyYXkoKTsKCSRvYmpbMF0gPSBuZXcgUGluZ1JlY3VwRmZ0dFRhc2soKTsKICAgCSRvYmpbMV0gPSBuZXcgUGluZ1JlY3VwU3BpZFRhc2soKTsgIApyZXR1cm4gJG9iajsgCn0KICAgLyoKCgkKICAgJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOwogIAogICAvLyBzeW50YXggZm9yIGNyZWF0aW5nIGEgcGFyYW1ldGVyIGlzIHBhcmFtZXRlciBuYW1lLCBkZWZhdWx0IHZhbHVlLCBkZXNjcmlwdGlvbgogICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdlbnZvaXNtc19pZCcsIC0xLCAkdGhpcy0+TGFuZygnaGVscF9lbnZvaXNtc19pZCcpKTsKICAgLy8gc2tlbGV0b25faWQgbXVzdCBiZSBhbiBpbnRlZ2VyCiAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdlbnZvaXNtc19pZCcsQ0xFQU5fSU5UKTsKCiAgIC8vIG1vZHVsZV9tZXNzYWdlIG11c3QgYmUgYSBzdHJpbmcKICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignbW9kdWxlX21lc3NhZ2UnLCcnLCR0aGlzLT5MYW5nKCdoZWxwX21vZHVsZV9tZXNzYWdlJykpOwogICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbW9kdWxlX21lc3NhZ2UnLENMRUFOX1NUUklORyk7CgogICAvLyBkZXNjcmlwdGlvbiBtdXN0IGJlIGEgc3RyaW5nCiAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2Rlc2NyaXB0aW9uJywnJywkdGhpcy0+TGFuZygnaGVscF9kZXNjcmlwdGlvbicpKTsKICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2Rlc2NyaXB0aW9uJyxDTEVBTl9TVFJJTkcpOwoKICAgLy8gZXhwbGFuYXRpb24gbXVzdCBiZSBhIHN0cmluZwogICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdleHBsYW5hdGlvbicsJycsJHRoaXMtPkxhbmcoJ2hlbHBfZXhwbGFuYXRpb24nKSk7CiAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdleHBsYW5hdGlvbicsQ0xFQU5fU1RSSU5HKTsKCiAgIAogICAgKiA0LiBFdmVudCBIYW5kbGluZwogICAgKgogICAKICAgIFR5cGljYWwgZXhhbXBsZTogc3BlY2lmeSB0aGUgb3JpZ2luYXRvciwgdGhlIGV2ZW50IG5hbWUsIGFuZCB3aGV0aGVyIG9yIG5vdAogICAgdGhlIGV2ZW50IGlzIHJlbW92YWJsZSAodXNlZCBmb3Igb25lLXRpbWUgZXZlbnRzKQoKICAgICR0aGlzLT5BZGRFdmVudEhhbmRsZXIoICdDb3JlJywgJ0NvbnRlbnRQb3N0UmVuZGVyJywgdHJ1ZSApOwogIAogIH0KCiAqLyAgIAogIGZ1bmN0aW9uIEdldEV2ZW50RGVzY3JpcHRpb24gKCAkZXZlbnRuYW1lICkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2V2ZW50X2luZm9fJy4kZXZlbnRuYW1lICk7CiAgfQogICAgIAogIGZ1bmN0aW9uIEdldEV2ZW50SGVscCAoICRldmVudG5hbWUgKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnZXZlbnRfaGVscF8nLiRldmVudG5hbWUgKTsKICB9Ci8qCiAgICBmdW5jdGlvbiBEb0V2ZW50KCAkb3JpZ2luYXRvciwgJGV2ZW50bmFtZSwgJiRwYXJhbXMgKQoJewoJaWYgKCRvcmlnaW5hdG9yID09ICdDb3JlJyAmJiAkZXZlbnRuYW1lID09ICdDb250ZW50UG9zdFJlbmRlcicpCgkJewoJCS8vIHN0dXBpZCBleGFtcGxlIC0tIGxvd2VyY2FzZXMgZW50aXJlIG91dHB1dAoJCSRwYXJhbXNbJ2NvbnRlbnQnXSA9IHN0cnRvbG93ZXIoJHBhcmFtc1snY29udGVudCddKTsKCQl9Cgl9CiAgICovCgogIGZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0aW5zdGFsbCcpOyB9CiAgZnVuY3Rpb24gVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKSB7IHJldHVybiAkdGhpcy0+TGFuZygncG9zdHVuaW5zdGFsbCcpOyB9CiAgZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdyZWFsbHlfdW5pbnN0YWxsJyk7IH0KICAKICAKICBmdW5jdGlvbiBfU2V0U3RhdHVzKCRvaWQsICRzdGF0dXMpIHsKICAgIC8vLi4uCiAgfQoKIAlmdW5jdGlvbiBHZXRIZWFkZXJIVE1MKCkgewoJCSR0bXBsID0gPDw8RU9UCjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uL21vZHVsZXMvUGluZy9ib290c3RyYXAtdGFibGUuY3NzIiBtZWRpYT0ic2NyZWVuIiAvPiA8IS0tIGJvb3RzdHJhcC10YWJsZS5jc3MgLS0+CkVPVDsKCQlyZXR1cm4gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0bXBsKTsKCX0KCmZ1bmN0aW9uIGRyb3Bkb3duICgkY29tcGV0aXRpb24pewoJJGRiICA9IGNtc21zKCktPkdldERiKCk7CiRxdWVyeSA9IlNFTEVDVCBqb3VldXJzIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbXBldGl0aW9ucyBXSEVSRSBjb2RlX2NvbXBldCA9ID8iOwokZGJyZXRvdXIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkY29tcGV0aXRpb24pKTsKaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXRvdXItPkZldGNoUm93KCkpCiAgICAgIHsKCSRqb3VldXJzID0gJHJvd1snam91ZXVycyddOwoJcmV0dXJuICRqb3VldXJzOwoJfQoKfQp9CgpmdW5jdGlvbiByYW5kb20oJGNhcikgewokc3RyaW5nID0gIiI7CiRjaGFpbmUgPSAiYWJjZGVmZ2hpamtsbW5wcXJzdHV2d3h5IjsKc3JhbmQoKGRvdWJsZSltaWNyb3RpbWUoKSoxMDAwMDAwKTsKZm9yKCRpPTA7ICRpPCRjYXI7ICRpKyspIHsKJHN0cmluZyAuPSAkY2hhaW5lW3JhbmQoKSVzdHJsZW4oJGNoYWluZSldOwp9CnJldHVybiAkc3RyaW5nOwp9CgovKgpmdW5jdGlvbiBjb2VmZiAoJHR5cGVDb21wZXRpdGlvbikgewoJJGRiICA9IGNtc21zKCktPkdldERiKCk7CiRxdWVyeSA9IlNFTEVDVCBjb2VmZmljaWVudCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jb21wZXRpdGlvbnMgV0hFUkUgY29kZV9jb21wZXQgPSA/IjsKJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHR5cGVDb21wZXRpdGlvbikpOwppZiAoJGRicmV0b3VyICYmICRkYnJldG91ci0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJldG91ci0+RmV0Y2hSb3coKSkKICAgICAgewoJJGNvZWZmID0gJHJvd1snY29lZmZpY2llbnQnXTsKCXJldHVybiAkY29lZmY7Cgl9CgogIH0KfQoqLwpmdW5jdGlvbiBWZXJpZmllckVtYWlsKCRtb25lbWFpbCl7CiAgaWYgKHByZWdfbWF0Y2goIiNeW2EtejAtOS5fLV0rQFthLXowLTkuXy1dezIsfVwuW2Etel17Miw0fSQjIiwgJG1vbmVtYWlsKSkKICAgIHsgcmV0dXJuIHRydWU7fQp9CgpmdW5jdGlvbiBlbmNyeXB0SXQoICRxICkgewogICAgJGNyeXB0S2V5ICA9ICdxSkIwckd0SW41VUIxeEcwM2VmeUNwJzsKICAgICRxRW5jb2RlZCAgICAgID0gYmFzZTY0X2VuY29kZSggbWNyeXB0X2VuY3J5cHQoIE1DUllQVF9SSUpOREFFTF8yNTYsIG1kNSggJGNyeXB0S2V5ICksICRxLCBNQ1JZUFRfTU9ERV9DQkMsIG1kNSggbWQ1KCAkY3J5cHRLZXkgKSApICkgKTsKICAgIHJldHVybiggJHFFbmNvZGVkICk7Cn0KCmZ1bmN0aW9uIGRlY3J5cHRJdCggJHEgKSB7CiAgICAkY3J5cHRLZXkgID0gJ3FKQjByR3RJbjVVQjF4RzAzZWZ5Q3AnOwogICAgJHFEZWNvZGVkICAgICAgPSBydHJpbSggbWNyeXB0X2RlY3J5cHQoIE1DUllQVF9SSUpOREFFTF8yNTYsIG1kNSggJGNyeXB0S2V5ICksIGJhc2U2NF9kZWNvZGUoICRxICksIE1DUllQVF9NT0RFX0NCQywgbWQ1KCBtZDUoICRjcnlwdEtleSApICkgKSwgIlwwIik7CiAgICByZXR1cm4oICRxRGVjb2RlZCApOwp9CgoKCi8qCiAgZnVuY3Rpb24gRG9BY3Rpb24oJGFjdGlvbiwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQ9LTEpCiAgewogICAgc3dpdGNoICgkYWN0aW9uKSB7CiAgICBjYXNlICdkZWZhdWx0JzoKICAgICAgewovLwlyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5kaXNwbGF5dGVhbXMucGhwJyk7CgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3RlYW1zY29yZXMudHBsJyk7Ly8gdGhpcyBpcyB0aGUgcGx1Zy1pbiBzaWRlLCBpLmUuLCBub24tQWRtaW4KCS8vJHRoaXMtPkRpc3BsYXlNb2R1bGVPdXRwdXQoJGFjdGlvbiwgJGlkLCAkcGFyYW1zKTsKCWJyZWFrOwogICAgICB9CiAgICBjYXNlICd0ZWFtc190YWInOgoJewoJcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uZGlzcGxheXRlYW1zLnBocCcpOwoJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCd0ZWFtc2NvcmVzLnRwbCcpOwoJfQoJYnJlYWs7CiAgICBjYXNlICdsaXN0JzoKICAgICAgewoJLy8gb25seSBsZXQgcGVvcGxlIHNhdmUgbW9kdWxlIHByZWZlcmVuY2VzIGlmIHRoZXkgaGF2ZSBwZXJtaXNzaW9uCgkKCWlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgQ2FsY3VsVHJhbmNoZScpKQoJICB7CgkgICAgCWVjaG8gJ0Nvb2whJzsvLyB0aGlzIGlzIHRoZSBwbHVnLWluIHNpZGUsIGkuZS4sIG5vbi1BZG1pbgoJCSR0aGlzLT5EaXNwbGF5TW9kdWxlT3V0cHV0KCRhY3Rpb24sICRpZCwgJHBhcmFtcyk7CgkJYnJlYWs7CgkgIH0KCWJyZWFrOwogICAgICB9CiAgICB9CiAgfQogCiovCgpmdW5jdGlvbiBkYXRldmVyc2ZyICgkZGF0ZSl7CSAgIAoJJGRhdGVhcnIgPSBleHBsb2RlKCcvJywgJGRhdGUpOwoJJGRhdGVmciA9ICRkYXRlYXJyWzJdIC4gJy0nIC4gJGRhdGVhcnJbMV0gLiAnLScgLiAkZGF0ZWFyclswXTsKCXJldHVybiAkZGF0ZWZyOwoJfQoKZnVuY3Rpb24gY29udl9kYXRlX3ZlcnNfbXlzcWwoJHN0cl9kYXRlKSB7CgkkY2hndCA9IGV4cGxvZGUoIi8iLCRzdHJfZGF0ZSk7CgkkZGF5ID0gc3Vic3RyKCRjaGd0LDAsMik7CgkkbW9udGggPSBzdWJzdHIoJGNoZ3QsMiwyKTsKCSR5ZWFyID0gc3Vic3RyKCRjaGd0LDQsMik7CgkkZGF0ZSA9ICIkeWVhciIuIi0iLiIkbW9udGgiLiItIi4iJGRheSI7CgoKCSAvLyAkcmV0b3VyPWRhdGUoInktbS1kIiwgbWt0aW1lKDAsIDAsIDAsICRtb250aCwgJGRheSwgJHllYXIpKTsKCSByZXR1cm4gJGRhdGU7Cn0KZnVuY3Rpb24gbW9pc19mcmFuY2FpcygkbW9pcyl7CgkkbW9udGhzID0gYXJyYXkoIkphbnZpZXIiLCAiRsOpdnJpZXIiLCAiTWFycyIsICJBdnJpbCIsICJNYWkiLCAiSnVpbiIsICJqdWlsbGV0IiwgIkFvdXQiLCAiU2VwdGVtYnJlIiwgIk9jdG9icmUiLCAiTm92ZW1icmUiLCAiZMOpY2VtYnJlIik7CgkkbW9udGhfdG9fZGlzcGxheSA9ICRtb2lzLTE7CgkkbW9udGhfZnJhbmNhaXMgPSAkbW9udGhzWyIkbW9udGhfdG9fZGlzcGxheSJdOwoJcmV0dXJuICRtb250aF9mcmFuY2FpczsKfQoKfSAvL2VuZCBjbGFzcwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/add_all_sit_mens.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskcm93YXJyYXl8dmFyX2R1bXB9PC9wcmU+Kn0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwPlNldWxlcyBsZXMgc2l0dWF0aW9ucyByZW5zZWlnbsOpZXMgc2Vyb250IHByaXNlcyBlbiBjb21wdGUgKD4wKTwvcD4KeyRmb3Jtc3RhcnR9CnskbW9pc19jb3VyYW50fQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Nb2lzIDo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGNob2l4X21vaXN9IDwvcD4KICA8L2Rpdj4KCgp7Zm9yZWFjaCBmcm9tPSRyb3dhcnJheSBrZXk9a2V5IGl0ZW09ZW50cnl9CiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXskY250fSI+CiAgICAgICAgCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4geyRlbnRyeX0gOjwvcD4KCSAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImNtc190ZXh0ZmllbGQiIG5hbWU9InskYWN0aW9uaWR9bGljZW5jZVt7JGtleX1dIiBpZD0ieyRhY3Rpb25pZH17JGtleX0iIHZhbHVlPSIiPjwvcD4KICAgICAgICAKICAgIDwvZGl2PgogICAgey9mb3JlYWNofQoKCQogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fXskY2FuY2VsfTwvcD4KICA8L2Rpdj4KeyRmb3JtZW5kfQo8L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/add_compet.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzY3JpcHQ+CiAkKGZ1bmN0aW9uKCkgewogICAkKCAiI20xX2RhdGVfZGVidXQiICkuZGF0ZXBpY2tlcih7IGRhdGVGb3JtYXQ6ICJ5eS1tbS1kZCIgfSk7CiB9KTsKIDwvc2NyaXB0Pgp7L2xpdGVyYWx9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CnskZm9ybXN0YXJ0fQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Db21ww6l0aXRpb24gOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdHlwZV9jb21wZXR9IHsqJHRvb2x0aXAqfTwvcD4KICA8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkRhdGUgZMOpYnV0OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZGF0ZV9kZWJ1dH08L3A+CiAgPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+RGF0ZSBmaW46PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZGF0ZV9maW59PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Ub3VyIG91IE7CsCBKb3VybsOpZTo8L3A+CjxwIGNsYXNzPSJwYWdlaW5wdXQiPnskbnVtam91cm59PC9wPgo8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH17JGNhbmNlbH08L3A+CiAgPC9kaXY+CnskZm9ybWVuZH0KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/add_sit_mens.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskcm93YXJyYXl8dmFyX2R1bXB9PC9wcmU+Kn0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHA+TGVzIG1vaXMgbm9uIHJlbnNlaWduw6lzIG5lIHNlcm9udCBwYXMgcHJpcyBlbiBjb21wdGUuIExlIG5vbSBldCBsZSBwcsOpbm9tIHNvbnQgZmFjdWx0YXRpZnMuPC9wPgkKeyRmb3Jtc3RhcnR9CnsqJG1vbnRoKn0KeyokbW9pc19jb3VyYW50Kn0Ke2lmICRwaGFzZSA9PScxJ30Ke2Fzc2lnbiB2YXI9Y250IHZhbHVlPTl9CntlbHNlfQp7YXNzaWduIHZhcj1jbnQgdmFsdWU9MX0Key9pZn0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Sm91ZXVyIDo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JG5vbX0geyRwcmVub219PC9wPgogIDwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5MaWNlbmNlIDo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGxpY2VuY2V9PC9wPgogIDwvZGl2Pgp7aWYgJHBoYXNlPT0yfQo8ZGl2IGNsYXNzPSJzZWN0aW9uLTkiPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Nb2lzIDkgOiA8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImNtc190ZXh0ZmllbGQiIG5hbWU9InskYWN0aW9uaWR9bW9udGhbOV0iIGlkPSJ7JGFjdGlvbmlkfW1vbnRoW10iIHZhbHVlPSJ7aWYgaXNzZXQoJHJvd2FycmF5WzldKX17JHJvd2FycmF5WzldfXtlbHNlfXsvaWZ9Ij48L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uLTEwIj4KCTxwIGNsYXNzPSJwYWdldGV4dCI+TW9pcyAxMCA6IDwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iY21zX3RleHRmaWVsZCIgbmFtZT0ieyRhY3Rpb25pZH1tb250aFsxMF0iIGlkPSJ7JGFjdGlvbmlkfW1vbnRoWzEwXSIgdmFsdWU9IntpZiBpc3NldCgkcm93YXJyYXlbMTBdKX17JHJvd2FycmF5WzEwXX17ZWxzZX17L2lmfSI+PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbi0xMSI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPk1vaXMgMTEgOiA8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9ImNtc190ZXh0ZmllbGQiIG5hbWU9InskYWN0aW9uaWR9bW9udGhbMTFdIiBpZD0ieyRhY3Rpb25pZH1tb250aFsxMV0iIHZhbHVlPSJ7aWYgaXNzZXQoJHJvd2FycmF5WzExXSl9eyRyb3dhcnJheVsxMV19e2Vsc2V9ey9pZn0iPjwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24tMTIiPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Nb2lzIDEyIDogPC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJjbXNfdGV4dGZpZWxkIiBuYW1lPSJ7JGFjdGlvbmlkfW1vbnRoWzEyXSIgaWQ9InskYWN0aW9uaWR9bW9udGhbMTJdIiB2YWx1ZT0ie2lmIGlzc2V0KCRyb3dhcnJheVsxMl0pfXskcm93YXJyYXlbMTJdfXtlbHNlfXsvaWZ9Ij48L3A+CjwvZGl2PgoKCnsvaWZ9Cnt3aGlsZSAkY250IDw9ICRtb2lzX2NvdXJhbnR9Cgp7KmZvcmVhY2ggZnJvbT0kcm93YXJyYXlbJGNudF0gaXRlbT1lbnRyeSp9CiAgICA8ZGl2IGNsYXNzPSJzZWN0aW9uLXskY250fSI+CiAgICAgICAgCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Nb2lzIHskY250fTo8L3A+CgkgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGlucHV0IHR5cGU9InRleHQiIGNsYXNzPSJjbXNfdGV4dGZpZWxkIiBuYW1lPSJ7JGFjdGlvbmlkfW1vbnRoW3skY250fV0iIGlkPSJ7JGFjdGlvbmlkfW1vbnRoW3skY250fV0iIHZhbHVlPSJ7aWYgaXNzZXQoJHJvd2FycmF5WyRjbnRdKX17JHJvd2FycmF5WyRjbnRdfXtlbHNlfXsvaWZ9Ij48L3A+CiAgICAgICAgCiAgICA8L2Rpdj4KICAgIHsqL2ZvcmVhY2gqfQp7YXNzaWduIHZhcj1jbnQgdmFsdWU9JGNudCsxfQp7L3doaWxlfQoJCiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9eyRjYW5jZWx9PC9wPgogIDwvZGl2Pgp7JGZvcm1lbmR9CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/add_type_compet.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGxhYmVsPnskdGV4dH08L2xhYmVsPgp7aWYgJGVycm9yfQo8Zm9udCBjb2xvcj0icmVkIj4Key9pZn0Ke2lmICRtZXNzYWdlIG5lICIifQo8c3Ryb25nPnskbWVzc2FnZX08L3N0cm9uZz4Key9pZn0Ke2lmICRlcnJvcn0KPC9mb250Pgp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgp7JGZvcm1zdGFydH0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Tm9tIDo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JG5hbWV9PC9wPgogIDwvZGl2PiAgCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkNvZGUgOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskY29kZV9jb21wZXR9IHskdG9vbHRpcH08L3A+CiAgPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5jb2VmZmljaWVudDo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGNvZWZmaWNpZW50fTwvcD4KICA8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Db21ww6l0aXRpb24gaW5kaXZpZHVlbGxlczo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbmRpdnN9PC9wPgo8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH17JGNhbmNlbH08L3A+CiAgPC9kaXY+CnskZm9ybWVuZH0KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/adminprefs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CjxmaWVsZHNldD4KPGxlZ2VuZD5Db25maWd1cmF0aW9uIHByaW5jaXBhbGU8L2xlZ2VuZD4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5MZSBudW3DqXJvIGRlIHZvdHJlIGNsdWI8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9jbHViX251bWJlcn08L3A+Cgk8L2Rpdj4KCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+UGhhc2UgZW4gY291cnM6PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcGhhc2V9PC9wPgoJPC9kaXY+CgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPlNhaXNvbiBlbiBjb3VycyA6PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc2Fpc29uX2VuX2NvdXJzfTwvcD4KCQk8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQk8cCBjbGFzcz0icGFnZXRleHQiPk5vbSBnw6luw6lyaXF1ZSBkZSB2b3Mgw6lxdWlwZXMgOjwvcD4KCQkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9ub21fZXF1aXBlc308L3A+CgkJCTwvZGl2PgoKPC9maWVsZHNldD4KPGZpZWxkc2V0PgoJPGxlZ2VuZD5BdXRyZXMgb3B0aW9uczwvbGVnZW5kPgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPkxlIGNhbGVuZHJpZXIgc2UgcmVtcGxpdCBhdmVjIGxlIHLDqXN1bHRhdHMgZGVzIHBvdWxlcyAocmVjb21tYW5kw6kpPC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcG9wdWxhdGVfY2FsZW5kYXJ9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+QWZmaWNoZXIgbGVzIHLDqXN1bHRhdHMgZGUgbWVzIMOpcXVpcGVzIHVuaXF1ZW1lbnQ8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9hZmZpY2hlX2NsdWJfdW5pcXVlbWVudH08L3A+Cgk8L2Rpdj4KCTwhLS0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Sw6ljdXDDqXJhdGlvbiBzaSBzaXR1YXRpb24gbWVuc3VlbGxlIMOgIGpvdXIgPzwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHNpdG1lbnNfb2tfb25seX08L3A+Cgk8L2Rpdj4KCS0tPgoJPC9maWVsZHNldD4KCTxmaWVsZHNldD4KCQk8bGVnZW5kPlNjcmlwdHMgYXV0b21hdGlxdWVzPC9sZWdlbmQ+CgkJPGZpZWxkc2V0PgoJCQk8bGVnZW5kPlNwaWQ8L2xlZ2VuZD4KCQkJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQkJCTxwIGNsYXNzPSJwYWdldGV4dCI+UsOpY3Vww6lyYXRpb24gdG91cyBsZXMgeCBqb3VyczwvcD4KCQkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc3BpZF9pbnRlcnZhbH08L3A+CgkJCTwvZGl2PgoJCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Sw6lzdWx0YXRzIGRlIHggam91ZXVyczwvcD4KCQkJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc3BpZF9ub21icmVzfTwvcD4KCQkJPC9kaXY+CgkJPC9maWVsZHNldD4KCQk8ZmllbGRzZXQ+CgkJCTxsZWdlbmQ+RkZUVDwvbGVnZW5kPgoJCQk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCQkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Sw6ljdXDDqXJhdGlvbiB0b3VzIGxlcyB4IGpvdXJzPC9wPgoJCQkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9mZnR0X2ludGVydmFsfTwvcD4KCQkJPC9kaXY+CgkJCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJCQk8cCBjbGFzcz0icGFnZXRleHQiPlLDqXN1bHRhdHMgZGUgeCBqb3VldXJzPC9wPgoJCQkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9mZnR0X25vbWJyZXN9PC9wPgoJCQk8L2Rpdj4KCQk8L2ZpZWxkc2V0PgoJPC9maWVsZHNldD4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9PC9wPgoJPC9kaXY+CnskZW5kZm9ybX0=]]></data>
	</file>
	<file>
	  <filename>/templates/allsitmens.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskaXRlbXN8dmFyX2R1bXB9PC9wcmU+Kn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfSB8IHskcmV0cmlldmVhbGxzaXRtZW5zfSB8IHskYWRkYWxsc2l0bWVuc2xpbmt9PC9wPjwvZGl2Pgp7aWYgaXNzZXQoJGZvcm1zdGFydCkgfQo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD5GaWx0cmVzPC9sZWdlbmQ+CiAgeyRmb3Jtc3RhcnR9CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+TW9pczo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X21vbnRofSA8L3A+Cgk8cCBjbGFzcz0icGFnZXRleHQiPkpvdWV1ciA6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9wbGF5ZXJ9IDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXRmaWx0ZXJ9eyRoaWRkZW58ZGVmYXVsdDonJ308L3A+CiAgPC9kaXY+CiAgeyRmb3JtZW5kfQo8L2ZpZWxkc2V0Pgp7L2lmfQp7aWYgJGl0ZW1jb3VudCA+IDB9CnskZm9ybTJzdGFydH0KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KIDx0aGVhZD4KCTx0cj4KCQk8dGg+SUQ8L3RoPgoJCTx0aD5MaWNlbmNlPC90aD4KCQk8dGg+TW9pczwvdGg+CgkJPHRoPkpvdWV1cjwvdGg+CgkJPHRoPlBvaW50czwvdGg+CgkJPHRoPlJhbmcgbmF0PC90aD4KCQk8dGg+UmFuZyByZWc8L3RoPgoJCTx0aD5SYW5nIGTDqXA8L3RoPgoJCTx0aD5Qcm9ncmVzc2lvbiBtZW5zPC90aD4KCQk8dGggY29sc3Bhbj0iMiI+QWN0aW9uczwvdGg+CgkJPHRoPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InNlbGVjdGFsbCIgbmFtZT0ic2VsZWN0YWxsIj48L3RoPgoJPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgoJPHRkPnskZW50cnktPmlkfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+bGljZW5jZX08L3RkPgoJPHRkPnskZW50cnktPm1vaXN9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5qb3VldXJ9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5wb2ludHN9PC90ZD4KCTx0ZD57JGVudHJ5LT5jbG5hdH08L3RkPgoJPHRkPnskZW50cnktPnJhbmdyZWd9PC90ZD4KCTx0ZD57JGVudHJ5LT5yYW5nZGVwfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+cHJvZ21vaXN9PC90ZD4KCTx0ZD57JGVudHJ5LT5lZGl0bGlua308L3RkPgoJPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4KCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9c2VsW10iIHZhbHVlPSJ7JGVudHJ5LT5saWNlbmNlfSIgY2xhc3M9InNlbGVjdCI+PC90ZD4KICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgo8IS0tIFNFTEVDVCBEUk9QRE9XTiAtLT4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij4KPGJyLz57JGFjdGlvbmRlbWFzc2V9eyRzdWJtaXRfbWFzc2FjdGlvbn0KICA8L2Rpdj4KeyRmb3JtMmVuZH0Key9pZn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyokY3JlYXRlbGluayp9PC9wPjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/avenir.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskaXRlbXN8dmFyX2R1bXB9PC9wcmU+Kn0Ke2Fzc2lnbiB2YXI9Y29tcHRldXIgdmFsdWUgPSAwfQoKPHVsPgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQp7KjxwPjxwcmU+eyRwcm9kc197JGNvbXB0ZXVyKyt9fHZhcl9kdW1wfTwvcHJlPjwvcD4qfQo8bGk+eyokZW50cnktPnZhbGV1cip9e2lmICRlbnRyeS0+aW5kaXZzPT0wfXskZW50cnktPmRhdGV8ZGF0ZV9mb3JtYXQ6IiVkLyVtLyVZIn0geyRlbnRyeS0+Y29tcGV0fQoJPHVsPgoJCXtmb3JlYWNoIGZyb209JHByb2RzX3skZW50cnktPnZhbGV1cn0gaXRlbT1kb25uZWV9CgkJCTxsaT4geyRkb25uZWUtPmVxdWF9IC0geyRkb25uZWUtPmVxdWJ9PC9saT4KCQl7L2ZvcmVhY2h9Cgk8L3VsPgp7ZWxzZX17JGVudHJ5LT5kYXRlfGRhdGVfZm9ybWF0OiIlZC8lbS8lWSJ9IHskZW50cnktPmNvbXBldH17L2lmfTwvbGk+CnsvZm9yZWFjaH0KPC91bD4=]]></data>
	</file>
	<file>
	  <filename>/templates/calendar.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eypkZWJ1Zyp9CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLy88IVtDREFUQVsKJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAkKCcjc2VsZWN0YWxsJykuY2xpY2soZnVuY3Rpb24oKXsKICAgIHZhciB2ID0gJCh0aGlzKS5hdHRyKCdjaGVja2VkJyk7CiAgICBpZiggdiA9PSAnY2hlY2tlZCcgKSB7CiAgICAgICQoJy5zZWxlY3QnKS5hdHRyKCdjaGVja2VkJywnY2hlY2tlZCcpOwogICAgfSBlbHNlIHsKICAgICAgJCgnLnNlbGVjdCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICAgIH0KICB9KTsKICAkKCcuc2VsZWN0JykuY2xpY2soZnVuY3Rpb24oKXsKICAgICQoJyNzZWxlY3RhbGwnKS5yZW1vdmVBdHRyKCdjaGVja2VkJyk7CiAgfSk7CiAgJCgnI3RvZ2dsZV9maWx0ZXInKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI2ZpbHRlcl9mb3JtJykudG9nZ2xlKCk7CiAgfSk7CiAge2lmIGlzc2V0KCR0YWJsZXNvcnRlcil9CiAgJCgnI2FydGljbGVsaXN0JykudGFibGVzb3J0ZXIoeyBzb3J0TGlzdDp7JHRhYmxlc29ydGVyfSB9KTsKICB7L2lmfQp9KTsKLy9dXT4KPC9zY3JpcHQ+CnsqCntpZiBpc3NldCgkZm9ybXN0YXJ0KSB9CjxmaWVsZHNldD4KICA8bGVnZW5kPkZpbHRyZXM8L2xlZ2VuZD4KICB7JGZvcm1zdGFydH0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPCEtLTxwIGNsYXNzPSJwYWdldGV4dCI+VHlwZSBDb21ww6l0aXRpb246PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9jb21wZXR9IDwvcD4tLT4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+RGF0ZTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2RhdGV9IDwvcD4KCTxwIGNsYXNzPSJwYWdldGV4dCI+U3RhdHV0OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc3RhdHVzfSA8L3A+Cgk8IS0tPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Kb3VldXIgOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcGxheWVyfSA8L3A+LS0+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0ZmlsdGVyfXskaGlkZGVufGRlZmF1bHQ6Jyd9PC9wPgogIDwvZGl2PgogIHskZm9ybWVuZH0KPC9maWVsZHNldD4Key9pZn0KKn0Keyo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JHJldHJpZXZlX3VzZXJzfSB8IHskcmV0cmlldmVfdGVhbXN9IHwgeyRyZXRyaWV2ZV90ZWFtc19hdXRyZXN9IHwgeyRyZXRyaWV2ZV9hbGxfcGFydGllc30gfCB7JHJldHJpZXZlX2FsbF9zcGlkfSB8IHskcmV0cmlldmVfZGV0YWlsc19yZW5jb250cmVzfTwvcD48L2Rpdj4qfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGl0ZW1jb3VudH0mbmJzcDt7JGl0ZW1zZm91bmR9ICB8IHskY3JlYXRlbGlua30geyokbWFpbnRlbmFudCp9PC9wPjwvZGl2Pgp7aWYgJGl0ZW1jb3VudCA+IDB9CjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRtb2lzX3ByZWNlZGVudH0gfCB7JG1vaXNfc3VpdmFudH08L3A+CnskZm9ybTJzdGFydH0KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KIDx0aGVhZD4KCTx0cj4KCQk8dGg+SWQ8L3RoPgoJCTx0aD5Ob21fY29tcGV0PC90aD4KCQk8dGg+VHlwZV9jb21ww6l0aXRpb248L3RoPgoJCTx0aD5EYXRlIETDqWJ1dDwvdGg+CgkJPHRoPkRhdGUgRmluPC90aD4KCQk8dGg+TsKwIFRvdXI8L3RoPgoJCTx0aCBjb2xzcGFuPSIyIj5BY3Rpb25zPC90aD4KICAgIDwvdHI+CiA8L3RoZWFkPgogPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQp7aWYgJGVudHJ5LT5kYXRlX2ZpbiA8ICRtYWludGVuYW50fTx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9IHBhc3QiIHN0eWxlPSJiYWNrZ3JvdW5kOiBncmV5OyBmb250LWNvbG9yOiB3aGl0ZTsiPntlbHNlfQogIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij57L2lmfQogICAgPHRkPnskZW50cnktPmlkfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+bmFtZX08L3RkPgoJPHRkPnskZW50cnktPnR5cGVfY29tcGV0fTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZGF0ZV9kZWJ1dHxkYXRlX2Zvcm1hdDoiJWQtJW0tJVkifTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZGF0ZV9maW59PC90ZD4KCTx0ZD57JGVudHJ5LT5udW1qb3Vybn08L3RkPgoJPHRkPnskZW50cnktPnJldHJpZXZlbGlua308L3RkPgogICAgPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPgoJPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4Key9pZn0KPGRpdiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogbGVmdDsiPgoJPHAgY2xhc3M9InBhZ2VvcHRpb25zIj57KiRhZGRsaW5rKn08L3A+CjwvZGl2Pgp7aWYgJGl0ZW1jb3VudCA+IDB9CiAgPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogcmlnaHQ7IHRleHQtYWxpZ246IHJpZ2h0OyI+CiAgICB7JHN1Ym1pdF9tYXNzZGVsZXRlfQogIDwvZGl2Pgp7L2lmfQo8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8L2Rpdj4KeyRmb3JtMmVuZH0KCgoKCgoKCg==]]></data>
	</file>
	<file>
	  <filename>/templates/classement.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyoKCXtpZiBpc3NldCgkZm9ybXN0YXJ0KSB9CjxmaWVsZHNldD4KICA8bGVnZW5kPkZpbHRyZXM8L2xlZ2VuZD4KICB7JGZvcm1zdGFydH0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5UeXBlIENvbXDDqXRpdGlvbjo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NvbXBldH0gPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90b3VyfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RvdXJ9IDwvcD4KCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZXF1aXBlfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2VxdWlwZX0gPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdGZpbHRlcn17JGhpZGRlbnxkZWZhdWx0OicnfTwvcD4KICA8L2Rpdj4KICB7JGZvcm1lbmR9CjwvZmllbGRzZXQ+CnsvaWZ9Cip9CntpZiAkaXRlbWNvdW50ID4gMH0KPHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JHBoYXNlMX0gfCB7JHBoYXNlMn08L3A+Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiA8dGhlYWQ+Cgk8dHI+CgkJPHRoPnskaWR9PC90aD4KCQk8dGg+eyRlcXVpcGV9PC90aD4KCQk8dGg+Tml2ZWF1PC90aD4KCQk8dGg+Q29tcMOpdGl0aW9uPC90aD4KCQk8dGg+Tm9tIGNvdXJ0PC90aD4KCQk8dGggY29sc3Bhbj0iNCI+QWN0aW9uczwvdGg+Cgk8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+Cgk8dGQ+eyRlbnRyeS0+ZnJpZW5kbHluYW1lfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+bGliZXF1aXBlfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+Y2x0fTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZXF1aXBlfTwvdGQ+CgogIDwvdHI+CnsvZm9yZWFjaH0KIDwvdGJvZHk+CjwvdGFibGU+CntlbHNlfQo8cD5ObyByZXN1bHRzIHlldDwvcD4Key9pZn0KCg==]]></data>
	</file>
	<file>
	  <filename>/templates/contacts.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskaXRlbWNvdW50fSZuYnNwO3skaXRlbXNmb3VuZH08L3A+PC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskY3JlYXRlX25ld19jb250YWN0fTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgoJPHRyPgoJCTx0aD57JGlkfTwvdGg+CgkJPHRoPlR5cGUgZGUgY29udGFjdDwvdGg+CgkJPHRoPmNvbnRhY3Q8L3RoPgoJCTx0aD5kZXNjcmlwdGlvbjwvdGg+CgkJPHRoIGNvbHNwYW49JzMnPkFjdGlvbnM8L3RoPgoJPC90cj4KPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+Cgk8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KCTx0ZD57JGVudHJ5LT50eXBlX2NvbnRhY3R9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5jb250YWN0fTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZGVzY3JpcHRpb259PC90ZD4KCTx0ZD57JGVudHJ5LT5jcmVhdGVfY29udGFjdH08L3RkPgoJCTx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+CiAgICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgp7ZWxzZX0KPHA+eyRjcmVhdGVfbmV3X2NvbnRhY3R9PC9wPgp7L2lmfQoK]]></data>
	</file>
	<file>
	  <filename>/templates/create_contact.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KeyRmb3Jtc3RhcnR9CgogeyRsaWNlbmNlfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5UeXBlIGRlIGNvbnRhY3Q6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0eXBlX2NvbnRhY3R9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkNvbnRhY3Q8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGNvbnRhY3R9PC9wPgogIDwvZGl2PiAKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5EZXNjcmlwdGlvbjo8L3A+CiAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZGVzY3JpcHRpb259PC9wPgogPC9kaXY+ICAKIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fXskYmFja317JGNhbmNlbH08L3A+CiAgPC9kaXY+CnskZm9ybWVuZH0KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/details_rencontre.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskaXRlbXN8dmFyX2R1bXB9PC9wcmU+Kn0Keyo8cHJlPnskZW50cmVlc3x2YXJfZHVtcH08L3ByZT4qfQoKe2ZvcmVhY2ggZnJvbT0kaXRlbXMgIGl0ZW09ZW50cnl9CgoJPGgzPkxlcyByw6lzdWx0YXRzIGR1IHskZW50cnktPmRhdGVfZXZlbnR9PC9oMz4KCQk8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWJvcmRlcmVkIj4KCQkJe2ZvcmVhY2ggZnJvbT0kcHJvZHNfeyRlbnRyeS0+dmFsZXVyfSBpdGVtPWRvbm5lZX0KCQkJCTx0cj48dGQ+eyRkb25uZWUtPmVxdWF9PC90ZD48dGQ+eyRkb25uZWUtPnNjb3JlYX08L3RkPjx0ZD57JGRvbm5lZS0+c2NvcmVifTwvdGQ+PHRkPnskZG9ubmVlLT5lcXVifTwvdGQ+PHRkPnskZG9ubmVlLT5kZXRhaWxzfSB7KiRkb25uZWUtPmNsYXNzKn08L3RkPjwvdHI+CgkJCXsvZm9yZWFjaH0KCQk8L3RhYmxlPgoJCnsvZm9yZWFjaH0K]]></data>
	</file>
	<file>
	  <filename>/templates/editresult.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGxhYmVsPnskdGV4dH08L2xhYmVsPgp7aWYgJGVycm9yfQo8Zm9udCBjb2xvcj0icmVkIj4Key9pZn0Ke2lmICRtZXNzYWdlIG5lICIifQo8c3Ryb25nPnskbWVzc2FnZX08L3N0cm9uZz4Key9pZn0Ke2lmICRlcnJvcn0KPC9mb250Pgp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgp7JGZvcm1zdGFydH0KeyRyZWNvcmRfaWR9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPlR5cGUgQ29tcMOpdGl0aW9uOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZXByZXV2ZX08L3A+CiAgPC9kaXY+ICAKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+TsKwIEpvdXJuw6llIDo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JG51bWpvdXJufTwvcD4KICA8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkFkdmVyc2FpcmU6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRub219IC0geyRwdHNfam91ZXVyfTwvcD4KICA8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Q2xhc3NlbWVudCBhZHZlcnNhaXJlOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskY2xhc3NlbWVudH08L3A+CiAgPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPlZpY3RvaXJlIG91IGTDqWZhaXRlOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdmljdG9pcmV9PC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5FY2FydDo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGVjYXJ0fTwvcD4KICA8L2Rpdj4KIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkNvZWZmaWNpZW50IGRlIGwnw6lwcmV1dmU6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRjb2VmZn08L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9eyRkdXBsaXF1ZXJ9eyRjYW5jZWx9PC9wPgogIDwvZGl2Pgp7JGZvcm1lbmR9CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/editteam.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KeyRmb3Jtc3RhcnR9CnskcmVjb3JkX2lkfQogIAo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICA8cCBjbGFzcz0icGFnZXRleHQiPlNhaXNvbjo8L3A+CiAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc2Fpc29ufTwvcD4KIDwvZGl2PgogPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+UGhhc2U6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRwaGFzZX08L3A+CiAgPC9kaXY+IAo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5FcXVpcGU6IChFeCA6IFJQIEZPVUVTTkFOVDEpPC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRsaWJlcXVpcGV9IHsqJGhlbHBfbGliZWxsZV9lcXVpcGUqfXsqY21zX2hlbHAga2V5PSdoZWxwX2xpYmVsbGVfZXF1aXBlJyp9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkRpdmlzaW9uIChFeCA6IE5hdGlvbmFsZSAxIE1lc3NpZXVycyBQb3VsZSBDKTwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskbGliZGl2aXNpb259IHsqY21zX2hlbHAga2V5PSdoZWxwX2xpYmRpdmlzaW9uJyp9PC9wPgogIDwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Eb25uZXogdW4gbm9tIGNvdXJ0IDogKEV4IDogTjEgb3UgTjEoQSkpPC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRmcmllbmRseW5hbWV9IHsqY21zX2hlbHAga2V5PSdoZWxwX2ZyaWVuZGx5bmFtZScqfTwvcD4KICA8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+SWQgZGUgbGEgZGl2aXNpb24gOiAoVm9pciBhaWRlIGR1IG1vZHVsZSk8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlkZGl2fSB7KmNtc19oZWxwIGtleT0naGVscF9pZGRpdicqfTwvcD4KICA8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+SWQgZGUgbGEgcG91bGUgOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaWRwb3VsZX0geypjbXNfaGVscCBrZXk9J2hlbHBfaWRwb3VsZScqfTwvcD4KICA8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+T3JnYW5pc2F0ZXVyOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskb3JnYW5pc21lfTwvcD4KICA8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Q29tcMOpdGl0aW9uOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdHlwZV9jb21wZXR9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskQWpvdXRlcn17JHN1Ym1pdH17JGNhbmNlbH17JGJhY2t9PC9wPgogIDwvZGl2Pgp7JGZvcm1lbmR9CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/editteamresult.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzY3JpcHQ+CiAkKGZ1bmN0aW9uKCkgewogICAkKCAiI20xX2RhdGVfY29tcGV0IiApLmRhdGVwaWNrZXIoeyBkYXRlRm9ybWF0OiAieXktbW0tZGQiIH0pOwogfSk7CiA8L3NjcmlwdD4Key9saXRlcmFsfQo8bGFiZWw+eyR0ZXh0fTwvbGFiZWw+CntpZiAkZXJyb3J9Cjxmb250IGNvbG9yPSJyZWQiPgp7L2lmfQp7aWYgJG1lc3NhZ2UgbmUgIiJ9CjxzdHJvbmc+eyRtZXNzYWdlfTwvc3Ryb25nPgp7L2lmfQp7aWYgJGVycm9yfQo8L2ZvbnQ+CnsvaWZ9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CnskZm9ybXN0YXJ0fQp7JHJlY29yZF9pZH0KICAKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5DbMOpOjwvcD4KICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRjbGV9PC9wPgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5UeXBlIGNvbXDDqXRpdGlvbjo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHR5cGVfY29tcGV0fTwvcD4KICA8L2Rpdj4gCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkRhdGUgY29tcMOpdGl0aW9uOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZGF0ZV9jb21wZXR9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2VxdWlwZX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRlcXVpcGV9PC9wPgogIDwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9hZHZlcnNhaXJlc306PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRhZHZlcnNhaXJlc308L3A+CiAgPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3RvdXJ9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdG91cn08L3A+CiAgPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3Njb3JlX2VxdWlwZX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzY29yZV9lcXVpcGV9PC9wPgogIDwvZGl2PgoKICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9zY29yZV9hZHZ9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc2NvcmVfYWR2fTwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH17JGNhbmNlbH08L3A+CiAgPC9kaXY+CnskZm9ybWVuZH0KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/edit_contact.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KeyRmb3Jtc3RhcnR9CgogeyRsaWNlbmNlfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5UeXBlIGRlIGNvbnRhY3Q6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR0eXBlX2NvbnRhY3R9PC9wPgogIDwvZGl2PgogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkNvbnRhY3Q8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGNvbnRhY3R9PC9wPgogIDwvZGl2PiAKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5EZXNjcmlwdGlvbjo8L3A+CiAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskZGVzY3JpcHRpb259PC9wPgogPC9kaXY+ICAKIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0ZWRpdH17JGJhY2t9eyRjYW5jZWx9PC9wPgogIDwvZGl2Pgp7JGZvcm1lbmR9CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/edit_joueur.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzY3JpcHQ+CiAkKGZ1bmN0aW9uKCkgewogICAkKCAiI20xX2JpcnRoZGF5IiApLmRhdGVwaWNrZXIoeyBkYXRlRm9ybWF0OiAieXktbW0tZGQiIH0pOwogfSk7CiA8L3NjcmlwdD4Key9saXRlcmFsfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgp7JGZvcm1zdGFydH0KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkFjdGlmOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskYWN0aWZ9e2Ntc19oZWxwIGtleT0naGVscF9leHBsYW5hdGlvbicgdGl0bGU9JGFjdGlmdGV4dH08L3A+CiAgPC9kaXY+CiA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Ob206PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRub219PC9wPgogIDwvZGl2PiAKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+UHLDqW5vbTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHByZW5vbX08L3A+CiAgPC9kaXY+CntpZiAkbGljZW5jZSAhPSIifQogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkxpY2VuY2U8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGxpY2VuY2V9PC9wPgogIDwvZGl2PiAKe2Vsc2V9CnskbGljZW5jZX0Key9pZn0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5EYXRlIE5haXNzYW5jZTo8L3A+CiAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskYmlydGhkYXl9PC9wPgogPC9kaXY+ICAKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5TZXhlOjwvcD4KICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzZXhlfTwvcD4KIDwvZGl2PgogPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+YWRyZXNzZTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGFkcmVzc2V9PC9wPgogIDwvZGl2PiAKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+VmlsbGU6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyR2aWxsZX08L3A+CiAgPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkNvZGUgcG9zdGFsOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskY29kZXBvc3RhbH08L3A+CiAgPC9kaXY+CiA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH17JGNhbmNlbH08L3A+CiAgPC9kaXY+CnskZm9ybWVuZH0KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/edit_type_compet.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGxhYmVsPnskdGV4dH08L2xhYmVsPgp7aWYgJGVycm9yfQo8Zm9udCBjb2xvcj0icmVkIj4Key9pZn0Ke2lmICRtZXNzYWdlIG5lICIifQo8c3Ryb25nPnskbWVzc2FnZX08L3N0cm9uZz4Key9pZn0Ke2lmICRlcnJvcn0KPC9mb250Pgp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgp7JGZvcm1zdGFydH0KeyRyZWNvcmRfaWR9CnskZWRpdH0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+VHlwZSBDb21ww6l0aXRpb246PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRuYW1lfTwvcD4KICA8L2Rpdj4gIAo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Db2RlIGNvbXDDqXRpdGlvbiB7KmNtc19oZWxwIGtleT0iaGVscF9jb2RlX2NvbXBldCIqfTwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskY29kZV9jb21wZXR9PC9wPgogIDwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Q29lZmZpY2llbnQ6IHsqY21zX2hlbHAga2V5PSJoZWxwX2NvZWZmaWNpZW50Iip9PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRjb2VmZmljaWVudH08L3A+CiAgPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkNvbXDDqXRpb24gaW5kaXZpZHVlbGxlID88L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGluZGl2c308L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9eyRkdXBsaXF1ZXJ9eyRjYW5jZWx9PC9wPgogIDwvZGl2Pgp7JGZvcm1lbmR9CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/equipe.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQoKPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KIDx0aGVhZD4KCTx0cj4KCQk8dGg+Q2x0PC90aD4KCQk8dGg+RXF1aXBlPC90aD4KCQk8dGg+Sm91ZTwvdGg+CgkJPHRoPlB0czwvdGg+Cgk8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+Cgk8dGQ+eyRlbnRyeS0+Y2x0fTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZXF1aXBlfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+am91ZX08L3RkPgoJPHRkPnskZW50cnktPnB0c308L3RkPgogICAgCiAgPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4Key9pZn0KCg==]]></data>
	</file>
	<file>
	  <filename>/templates/equipes.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyoKCXtpZiBpc3NldCgkZm9ybXN0YXJ0KSB9CjxmaWVsZHNldD4KICA8bGVnZW5kPkZpbHRyZXM8L2xlZ2VuZD4KICB7JGZvcm1zdGFydH0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5UeXBlIENvbXDDqXRpdGlvbjo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NvbXBldH0gPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90b3VyfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RvdXJ9IDwvcD4KCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZXF1aXBlfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2VxdWlwZX0gPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdGZpbHRlcn17JGhpZGRlbnxkZWZhdWx0OicnfTwvcD4KICA8L2Rpdj4KICB7JGZvcm1lbmR9CjwvZmllbGRzZXQ+CnsvaWZ9Cip9CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskcmV0cmlldmVfdGVhbXN9IHwgeyRyZXRyaWV2ZV90ZWFtc19hdXRyZXN9PC9wPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGl0ZW1jb3VudH0mbmJzcDt7JGl0ZW1zZm91bmR9PC9wPjwvZGl2Pgp7aWYgJGl0ZW1jb3VudCA+IDB9Cgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgoJPHRyPgoJCTx0aD57JGlkfTwvdGg+CgkJPHRoPnskZXF1aXBlfTwvdGg+CgkJPHRoPk5pdmVhdTwvdGg+CgkJPHRoPkNvbXDDqXRpdGlvbjwvdGg+CgkJPHRoPk5vbSBjb3VydDwvdGg+CgkJPHRoIGNvbHNwYW49IjQiPkFjdGlvbnM8L3RoPgoJPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgoJPHRkPnskZW50cnktPmlkfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+bGliZXF1aXBlfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+bGliZGl2aXNpb259PC90ZD4KCTx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZnJpZW5kbHluYW1lfTwvdGQ+CjwhLS0JPHRkPnskZW50cnktPnZpZXd9PC90ZD4tLT4KCTx0ZD57JGVudHJ5LT5lZGl0bGlua308L3RkPgogICAgPHRkPnskZW50cnktPnJldHJpZXZlX3BvdWxlX3JlbmNvbnRyZXN9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+CiAgPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4Key9pZn0KCg==]]></data>
	</file>
	<file>
	  <filename>/templates/fepoulesRencontres.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskaXRlbXN8dmFyX2R1bXB9PC9wcmU+Kn0KPHRhYmxlIGNsYXNzPSJ0YWJsZSI+CiA8dGhlYWQ+Cgk8dHI+CQoJCTx0aD5EYXRlPC90aD4KCQk8dGg+RXF1aXBlIEE8L3RoPgoJCTx0aD5TY29yZSBBPC90aD4KCQk8dGg+U2NvcmUgQjwvdGg+CgkJPHRoPkVxdWlwZSBCPC90aD4KICA8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4KCXtmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9Cjx0cj4KCTx0ZD57JGVudHJ5LT5kYXRlX2V2ZW50fGRhdGVfZm9ybWF0OiIlZC8lbS8lWSJ9PC90ZD4KCTx0ZD57JGVudHJ5LT5lcXVhfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+c2NvcmVhfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+c2NvcmVifTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZXF1Yn08L3RkPgoJPHRkPnskZW50cnktPmRldGFpbHN9PC90ZD4KPC90cj4KCXsvZm9yZWFjaH0KCiA8L3Rib2R5Pgo8L3RhYmxlPg==]]></data>
	</file>
	<file>
	  <filename>/templates/fe_allsitmens.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskbW9udGhzbGlzdHx2YXJfZHVtcH08L3ByZT4qfQp7KjxwcmU+eyRpdGVtc3x2YXJfZHVtcH08L3ByZT4qfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JHJldHVybmxpbmt9PC9wPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGl0ZW1jb3VudH0mbmJzcDt7JGl0ZW1zZm91bmR9PC9wPjwvZGl2Pgp7aWYgJGl0ZW1jb3VudCA+IDB9Cjx0YWJsZSBjbGFzcz0idGFibGUgdGFibGUtYm9yZGVyZWQiPgoJPHRoZWFkPgoJCTx0aD5Kb3VldXI8L3RoPgoJCXtmb3JlYWNoIGZyb209JG1vbnRoc2xpc3QgaXRlbT1lbnRyZWV9CgkJCTx0aD57JG1vaXNbJGVudHJlZV19PC90aD4KCQl7L2ZvcmVhY2h9CgkJPCEtLTx0aD5Qcm9nIG1vaXM8L3RoPi0tPgoJCTx0aD5OYXQ8L3RoPgoJCTx0aD5SZWc8L3RoPgoJCTx0aD5Ew6lwPC90aD4KCTwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgPHRkPnskZW50cnktPmpvdWV1cn08L3RkPgogICAge2lmICRlbnRyeS0+c2VwdCAhPSBOVUxMfTx0ZD57JGVudHJ5LT5zZXB0fTwvdGQ+ey9pZn0KCXtpZiAkZW50cnktPm9jdCAhPSBOVUxMfTx0ZD57JGVudHJ5LT5vY3R9PC90ZD57L2lmfQoJe2lmICRlbnRyeS0+bm92ICE9IE5VTEx9PHRkPnskZW50cnktPm5vdn08L3RkPnsvaWZ9Cgl7aWYgJGVudHJ5LT5kZWMgIT0gTlVMTH08dGQ+eyRlbnRyeS0+ZGVjfTwvdGQ+ey9pZn0KCXtpZiAkZW50cnktPmphbiAhPSBOVUxMfTx0ZD57JGVudHJ5LT5qYW59PC90ZD57L2lmfQoJe2lmICRlbnRyeS0+ZmV2ICE9IE5VTEx9PHRkPnskZW50cnktPmZldn08L3RkPnsvaWZ9Cgl7aWYgJGVudHJ5LT5tYXIgIT0gTlVMTH08dGQ+eyRlbnRyeS0+bWFyfTwvdGQ+ey9pZn0KCXtpZiAkZW50cnktPmF2ciAhPSBOVUxMfTx0ZD57JGVudHJ5LT5hdnJ9PC90ZD57L2lmfQoJe2lmICRlbnRyeS0+bWFpICE9IE5VTEx9PHRkPnskZW50cnktPm1haX08L3RkPnsvaWZ9Cgl7aWYgJGVudHJ5LT5qdWluICE9IE5VTEx9PHRkPnskZW50cnktPmp1aW59PC90ZD57L2lmfQoJe2lmICRlbnRyeS0+anVpbCAhPSBOVUxMfTx0ZD57JGVudHJ5LT5qdWlsfTwvdGQ+ey9pZn0KCXsqPHRkPnskZW50cnktPnByb2dtb2lzfTwvdGQ+Kn0KCTx0ZD57JGVudHJ5LT5jbG5hdH08L3RkPgoJPHRkPnskZW50cnktPnJhbmdyZWd9PC90ZD4KCTx0ZD57JGVudHJ5LT5yYW5nZGVwfTwvdGQ+CiAgPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4Ke2Vsc2V9CjxwPkxlcyBzaXR1YXRpb25zIG1lbnN1ZWxsZXMgc29udCDDoCBqb3VyPC9wPgp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGNyZWF0ZWxpbmt9PC9wPjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/fftt.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS50b2dnbGUoKTsKICB9KTsKICB7aWYgaXNzZXQoJHRhYmxlc29ydGVyKX0KICAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4KCntpZiBpc3NldCgkZm9ybXN0YXJ0KSB9CjxmaWVsZHNldD4KICA8bGVnZW5kPkZpbHRyZXM8L2xlZ2VuZD4KICB7JGZvcm1zdGFydH0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5UeXBlIENvbXDDqXRpdGlvbjo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NvbXBldH0gPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5EYXRlOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZGF0ZX0gPC9wPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Kb3VldXIgOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcGxheWVyfSA8L3A+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0ZmlsdGVyfXskaGlkZGVufGRlZmF1bHQ6Jyd9PC9wPgogIDwvZGl2PgogIHskZm9ybWVuZH0KPC9maWVsZHNldD4Key9pZn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRyZXRyaWV2ZV9hbGxfcGFydGllc308L3A+PC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskaXRlbWNvdW50fSZuYnNwO3skaXRlbXNmb3VuZH08L3A+PC9kaXY+CntpZiAkaXRlbWNvdW50ID4gMH0KeyRmb3JtMnN0YXJ0fQo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgogIDx0cj4KCTx0aD5JZDwvdGg+Cgk8dGg+TsKwIEpvdXJuw6llPC90aD4KCTx0aD5EYXRlPC90aD4KCTx0aD5Kb3VldXI8L3RoPgoJPHRoPlZpYy9kZWY8L3RoPgoJPHRoPkFkdmVyc2FpcmU8L3RoPgoJPHRoPlBvaW50czwvdGg+Cgk8dGggY29sc3Bhbj0iMyI+QWN0aW9uczwvdGg+CiAgPHRoPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InNlbGVjdGFsbCIgbmFtZT0ic2VsZWN0YWxsIj48L3RoPgogIDwvdHI+CiA8L3RoZWFkPgogPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KICAgIDx0ZD57JGVudHJ5LT5pZH08L3RkPgoJPHRkPnskZW50cnktPm51bWpvdXJufTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZGF0ZV9ldmVudHxkYXRlX2Zvcm1hdDoiJWQvJW0ifQogICAgPHRkPnskZW50cnktPmpvdWV1cn08L3RkPgogICAgPHRkPnskZW50cnktPnZkfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+YWR2bm9tcHJlfSA8L3RkPgoJPHRkPnskZW50cnktPnBvaW50cmVzfSA8L3RkPgogICAgPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZHVwbGljYXRlbGlua308L3RkPgogICAgPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4KCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9c2VsW10iIHZhbHVlPSJ7JGVudHJ5LT5saWNlbmNlfSIgY2xhc3M9InNlbGVjdCI+PC90ZD4KICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgo8IS0tIFNFTEVDVCBEUk9QRE9XTiAtLT4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij4KPGJyLz57JGFjdGlvbmRlbWFzc2V9eyRzdWJtaXRfbWFzc2FjdGlvbn0KICA8L2Rpdj4KeyRmb3JtMmVuZH0Key9pZn0K]]></data>
	</file>
	<file>
	  <filename>/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/templates/individuelles.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eypkZWJ1Zyp9CnsqCntpZiBpc3NldCgkbWVzc2FnZSl9CiAge2lmICRlcnJvciAhPSAnJ30KICAgIDxwPjxmb250IGNvbG9yPSJyZWQiPnskbWVzc2FnZX08L2ZvbnQ+PC9wPgogIHtlbHNlfQogICAgPHA+eyRtZXNzYWdlfTwvcD4KICB7L2lmfQp7L2lmfQoqfQoKCTxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskcmV0dXJubGlua308L3A+PC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskaXRlbWNvdW50fSZuYnNwO3skaXRlbXNmb3VuZH08L3A+PC9kaXY+CntpZiAkaXRlbWNvdW50ID4gMH0KPHRhYmxlIGNsYXNzPSJwYWdldGFibGUgdGFibGUgdGFibGUtYm9yZGVyZWQiPgogPHRoZWFkPgoJPHRyPgkKCQk8dGg+Sm91ZXVyPC90aD4KCQk8dGg+VmljPC90aD4KCQk8dGg+U3VyPC90aD4KCQk8dGg+UG9pbnRzPC90aD4KICA8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICB7aWYgJGVudHJ5LT52aWN0b2lyZSA9PScxJ308dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSB2aWMiPntlbHNlfTx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9IGRlZiI+ey9pZn0KCTx0ZD57JGVudHJ5LT5kYXRlX2V2ZW50fGRhdGVfZm9ybWF0OiIlZC8lbSJ9PC90ZD4JCiAgICA8dGQ+eyRlbnRyeS0+am91ZXVyfTwvdGQ+CQogICAgPHRkPnskZW50cnktPm5vbX0oeyRlbnRyeS0+Y2xhc3NlbWVudH0pPC90ZD4KICAgIDx0ZD57JGVudHJ5LT52aWN0b2lyZX08L3RkPgoJPHRkPnskZW50cnktPnBvaW50cmVzfTwvdGQ+Cgk8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgooU291cmNlIFNwaWQpCnsvaWZ9Cgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57KiRjcmVhdGVsaW5rKn08L3A+PC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/individuelles3.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskaXRlbXN8dmFyX2R1bXB9PC9wcmU+Kn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRyZXR1cm5saW5rfTwvcD48L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQoKe2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICAKCTxoMz57JGVudHJ5LT5uYW1lfSBkdSB7JGVudHJ5LT5kYXRlX2V2ZW50fGRhdGVfZm9ybWF0OiIlZC8lbSJ9PC9oMz4JCgl7aWYgJGl0ZW1zY291bnRfeyRlbnRyeS0+dmFsZXVyfSA+MCB9CiAgICA8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWJvcmRlcmVkIj4KCQk8dHI+PHRoPkpvdWV1cjwvdGg+PHRoPlZpY3RvaXJlczwvdGg+PHRoPlNVUjwvdGg+PHRoPlBvaW50czwvdGg+PC90cj4KCQl7Zm9yZWFjaCBmcm9tPSRwcm9kc197JGVudHJ5LT52YWxldXJ9IGl0ZW09ZG9ubmVlfQoJCXsqPHByZT57JHByb2RzX3skZW50cnktPnZhbGV1cn18dmFyX2R1bXB9PC9wcmU+Kn0JPHRyPjx0ZD57JGRvbm5lZS0+am91ZXVyfTwvdGQ+PHRkPnskZG9ubmVlLT52aWN9PC90ZD48dGQ+eyRkb25uZWUtPnN1cn08L3RkPjx0ZD57JGRvbm5lZS0+cHRzfTwvdGQ+PHRkPnskZG9ubmVlLT5kZXRhaWxzfTwvdGQ+PC90cj4KCQl7L2ZvcmVhY2h9CgkJPC90YWJsZT4KCQl7ZWxzZX0KCQk8cD5QYXMgZW5jb3JlIGRlIHLDqXN1bHRhdHMgITwvcD4KCQl7L2lmfQp7L2ZvcmVhY2h9CiAKCnsvaWZ9Cgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57KiRjcmVhdGVsaW5rKn08L3A+PC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/joueurs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS50b2dnbGUoKTsKICB9KTsKICB7aWYgaXNzZXQoJHRhYmxlc29ydGVyKX0KICAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfSZuYnNwO3wmbmJzcDt7JHJldHJpZXZlX3VzZXJzfSZuYnNwO3wmbmJzcDt7JGNyZWF0ZWxpbmt9Jm5ic3A7fCAmbmJzcDt8IHskZGlzcGxheV91bmFibGVfcGxheWVyc30mbmJzcDt8Jm5ic3A7eyRjcmVhdGVfbmV3X3VzZXIzfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQp7JGZvcm0yc3RhcnR9Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiA8dGhlYWQ+Cgk8dHI+CgkJPHRoPnskaWR9PC90aD4KCQk8dGg+Sm91ZXVyPC90aD4KCQk8dGg+TGljZW5jZTwvdGg+CgkJPHRoPkFjdGlmPC90aD4KCQk8dGg+U2V4ZTwvdGg+CgkJPHRoPkRhdGUgbmFpc3NhbmNlPC90aD4KCQk8dGggY29sc3Bhbj0nMic+QWN0aW9uczwvdGg+CgkJPHRoPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InNlbGVjdGFsbCIgbmFtZT0ic2VsZWN0YWxsIj48L3RoPgoJPC90cj4KPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+Cgk8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KCTx0ZD57JGVudHJ5LT5qb3VldXJ9PC90ZD4KCTx0ZD57JGVudHJ5LT5saWNlbmNlfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+YWN0aWZ9PC90ZD4KCTx0ZD57JGVudHJ5LT5zZXhlfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+YmlydGhkYXl9PC90ZD4KCTx0ZD57JGVudHJ5LT5kb2VkaXR9PC90ZD4KCTx0ZD57JGVudHJ5LT52aWV3X2NvbnRhY3RzfTwvdGQ+Cgk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfXNlbFtdIiB2YWx1ZT0ieyRlbnRyeS0+bGljZW5jZX0iIGNsYXNzPSJzZWxlY3QiPjwvdGQ+CiAgICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgo8IS0tIFNFTEVDVCBEUk9QRE9XTiAtLT4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij4KPGJyLz57JGFjdGlvbmRlbWFzc2V9eyRzdWJtaXRfbWFzc2FjdGlvbn0KICA8L2Rpdj4KeyRmb3JtMmVuZH0Ke2Vsc2V9CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskcmV0cmlldmVfdXNlcnN9PC9wPjwvZGl2Pgp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGNyZWF0ZWxpbmt9PC9wPjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/journal.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eypkZWJ1Zyp9CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLy88IVtDREFUQVsKJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAkKCcjc2VsZWN0YWxsJykuY2xpY2soZnVuY3Rpb24oKXsKICAgIHZhciB2ID0gJCh0aGlzKS5hdHRyKCdjaGVja2VkJyk7CiAgICBpZiggdiA9PSAnY2hlY2tlZCcgKSB7CiAgICAgICQoJy5zZWxlY3QnKS5hdHRyKCdjaGVja2VkJywnY2hlY2tlZCcpOwogICAgfSBlbHNlIHsKICAgICAgJCgnLnNlbGVjdCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICAgIH0KICB9KTsKICAkKCcuc2VsZWN0JykuY2xpY2soZnVuY3Rpb24oKXsKICAgICQoJyNzZWxlY3RhbGwnKS5yZW1vdmVBdHRyKCdjaGVja2VkJyk7CiAgfSk7CiAgJCgnI3RvZ2dsZV9maWx0ZXInKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI2ZpbHRlcl9mb3JtJykudG9nZ2xlKCk7CiAgfSk7CiAge2lmIGlzc2V0KCR0YWJsZXNvcnRlcil9CiAgJCgnI2FydGljbGVsaXN0JykudGFibGVzb3J0ZXIoeyBzb3J0TGlzdDp7JHRhYmxlc29ydGVyfSB9KTsKICB7L2lmfQp9KTsKLy9dXT4KPC9zY3JpcHQ+Cgp7aWYgaXNzZXQoJGZvcm1zdGFydCkgfQo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD5GaWx0cmVzPC9sZWdlbmQ+CiAgeyRmb3Jtc3RhcnR9CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTwhLS08cCBjbGFzcz0icGFnZXRleHQiPlR5cGUgQ29tcMOpdGl0aW9uOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfY29tcGV0fSA8L3A+LS0+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkRhdGU6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9kYXRlfSA8L3A+Cgk8cCBjbGFzcz0icGFnZXRleHQiPlN0YXR1dDo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3N0YXR1c30gPC9wPgoJPCEtLTxwIGNsYXNzPSJwYWdldGV4dCI+Sm91ZXVyIDo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3BsYXllcn0gPC9wPi0tPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdGZpbHRlcn17JGhpZGRlbnxkZWZhdWx0OicnfTwvcD4KICA8L2Rpdj4KICB7JGZvcm1lbmR9CjwvZmllbGRzZXQ+CnsvaWZ9CntpZiBpc3NldCgkcGFnZXN0cmluZyl9PGRpdiBjbGFzcz0iZ3JpZF82IiBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7Ij57JHBhZ2VzdHJpbmd9PC9kaXY+ey9pZn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQp7JGZvcm0yc3RhcnR9Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiA8dGhlYWQ+Cgk8dHI+CgkJPHRoPklkPC90aD4KCQk8dGg+RGF0ZSBkZSBtaXNlIMOgIGpvdXI8L3RoPgoJCTx0aD5kZXNpZ25hdGlvbjwvdGg+CgkJPCEtLTx0aCBjb2xzcGFuPSIyIj5BY3Rpb25zPC90aD4tLT4KCQk8dGg+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0ic2VsZWN0YWxsIiBuYW1lPSJzZWxlY3RhbGwiLz48L3RoPgogICAgPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgPHRkPnskZW50cnktPmlkfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZGF0ZWNyZWF0ZWR8ZGF0ZV9mb3JtYXQ6IiVBICVlICVCICVZIMOgICVIOiVNOiVTIn08L3RkPgogICAgPHRkPnskZW50cnktPmRlc2lnbmF0aW9ufTwvdGQ+Cgk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfXNlbFtdIiB2YWx1ZT0ieyRlbnRyeS0+aWR9IiBjbGFzcz0ic2VsZWN0Ij48L3RkPgoJPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4Key9pZn0KPGRpdiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogbGVmdDsiPgoJPHAgY2xhc3M9InBhZ2VvcHRpb25zIj57KiRhZGRsaW5rKn08L3A+CjwvZGl2Pgp7aWYgJGl0ZW1jb3VudCA+IDB9CiAgPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogcmlnaHQ7IHRleHQtYWxpZ246IHJpZ2h0OyI+CiAgICB7JHN1Ym1pdF9tYXNzZGVsZXRlfQogIDwvZGl2Pgp7L2lmfQo8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8L2Rpdj4KeyRmb3JtMmVuZH0KCgoKCgoKCg==]]></data>
	</file>
	<file>
	  <filename>/templates/list_compet.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLQp7aWYgaXNzZXQoJGZvcm1zdGFydCkgfQo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD5GaWx0cmVzPC9sZWdlbmQ+CiAgeyRmb3Jtc3RhcnR9CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+SWQ6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+Tm9tIDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdG91cn06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90b3VyfSA8L3A+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2VxdWlwZX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9lcXVpcGV9IDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXRmaWx0ZXJ9eyRoaWRkZW58ZGVmYXVsdDonJ308L3A+CiAgPC9kaXY+CiAgeyRmb3JtZW5kfQo8L2ZpZWxkc2V0Pgp7L2lmfQotLT4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgogIDx0cj4JCiAgCTx0aD57JGlkfTwvdGg+CiAgCTx0aD5Ob208L3RoPgogIAk8dGg+Q29kZTwvdGg+CiAgCTx0aD5Db2VmZmljaWVudDwvdGg+Cgk8dGg+SW5kaXZzPC90aD4KCTx0aCBjb2xzcGFuPSIyIj5BY3Rpb25zPC90aD4KICA8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+CiAgICA8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+Y29kZV9jb21wZXR9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5jb2VmZmljaWVudH08L3RkPgoJPHRkPnskZW50cnktPmluZGl2c30KCXtpZiAkZW50cnktPmluZGl2cyA9PSAxfQoJfHskZW50cnktPnBhcnRpY2lwZX17L2lmfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KCTx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+CiAgPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4Key9pZn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRjcmVhdGVsaW5rfTwvcD48L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/participe.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHByZT57KiRyb3dhcnJheXx2YXJfZHVtcCp9PC9wcmU+CnsqKn08ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgp7JGZvcm1zdGFydH0KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPlR5cGUgQ29tcMOpdGl0aW9uOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdHlwZV9jb21wZXR9PC9wPgogIDwvZGl2Pgp7Zm9yZWFjaCBmcm9tPSRyb3dhcnJheSBrZXk9a2V5IGl0ZW09ZW50cnl9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij48aW5wdXQgdHlwZT0iY2hlY2tib3giICBuYW1lPSJtMV9saWNlbmNlW3ska2V5fV0iIGlkPSJtMV9saWNlbmNlW3ska2V5fV0iIHtpZiAkZW50cnlbJ3BhcnRpY2lwZSddID09MX1jaGVja2VkPSdjaGVja2VkJyB7L2lmfSB2YWx1ZSA9ICcxJz57JGVudHJ5WyduYW1lJ119PC9wPgogIDwvZGl2Pgp7L2ZvcmVhY2h9CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9eyRjYW5jZWx9PC9wPgogIDwvZGl2Pgp7JGZvcm1lbmR9CjwvZGl2Pgp7Kip9]]></data>
	</file>
	<file>
	  <filename>/templates/poulesRencontres.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS50b2dnbGUoKTsKICB9KTsKICB7aWYgaXNzZXQoJHRhYmxlc29ydGVyKX0KICAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4KeyoqfQoJe2lmIGlzc2V0KCRmb3Jtc3RhcnQpIH0KPGZpZWxkc2V0PgogIDxsZWdlbmQ+RmlsdHJlczwvbGVnZW5kPgogIHskZm9ybXN0YXJ0fQogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CnsqCTxwIGNsYXNzPSJwYWdldGV4dCI+VHlwZSBDb21ww6l0aXRpb246PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9jb21wZXR9IDwvcD4qfQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Qb3VsZTwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdG91cn0gPC9wPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Nb24gY2x1YiB1bmlxdWVtZW50OjwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfY2x1Yl91bmlxdWVtZW50fSA8L3A+Cgk8cCBjbGFzcz0icGFnZXRleHQiPkTDqWrDoCBqb3XDqXMgdW5pcXVlbWVudDo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2RlamFfam91ZXNfdW5pcXVlbWVudH0gPC9wPgp7Kgk8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2VxdWlwZX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9lcXVpcGV9IDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPip9CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdGZpbHRlcn17JGhpZGRlbnxkZWZhdWx0OicnfTwvcD4KICA8L2Rpdj4KICB7JGZvcm1lbmR9CjwvZmllbGRzZXQ+CnsvaWZ9Cgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGNyZWF0ZWxpbmt9PC9wPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGl0ZW1jb3VudH0mbmJzcDt7JGl0ZW1zZm91bmR9PC9wPjwvZGl2Pgp7aWYgJGl0ZW1jb3VudCA+IDB9Cgp7JGZvcm0yc3RhcnR9Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiA8dGhlYWQ+CiAgPHRyPgkKICA8dGg+SWQ8L3RoPgogIDx0aD5Qb3VsZTwvdGg+CiAgPHRoPkVxdWlwZSBBPC90aD4KICA8dGggY29sc3Bhbj0iMiI+U2NvcmU8L3RoPgogIDx0aD5FcXVpcGUgQjwvdGg+Cjx0aCBjb2xzcGFuPSIzIj5BY3Rpb25zPC90aD4KPHRoPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InNlbGVjdGFsbCIgbmFtZT0ic2VsZWN0YWxsIi8+PC90aD4JCiAKICA8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+CiAgICA8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5saWJlbGxlfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZXF1YX08L3RkPgogICAgPHRkPnskZW50cnktPnNjb3JlYX08L3RkPgoJPHRkPnskZW50cnktPnNjb3JlYn08L3RkPgoJPHRkPnskZW50cnktPmVxdWJ9PC90ZD4KICAgPHRkPnskZW50cnktPnJldHJpZXZlX2RldGFpbHN9PC90ZD4KCTx0ZD57JGVudHJ5LT5kaXNwbGF5fTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPgoJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1zZWxbXSIgdmFsdWU9InskZW50cnktPmlkfSIgY2xhc3M9InNlbGVjdCI+PC90ZD4KICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgo8IS0tIFNFTEVDVCBEUk9QRE9XTiAtLT4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij4KPGJyLz57JGFjdGlvbmRlbWFzc2V9eyRzdWJtaXRfbWFzc2FjdGlvbn0KICA8L2Rpdj4KeyRmb3JtMmVuZH0Key9pZn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRjcmVhdGVsaW5rfTwvcD48L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/recupJoueurs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eypkZWJ1Zyp9CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLy88IVtDREFUQVsKJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAkKCcjc2VsZWN0YWxsJykuY2xpY2soZnVuY3Rpb24oKXsKICAgIHZhciB2ID0gJCh0aGlzKS5hdHRyKCdjaGVja2VkJyk7CiAgICBpZiggdiA9PSAnY2hlY2tlZCcgKSB7CiAgICAgICQoJy5zZWxlY3QnKS5hdHRyKCdjaGVja2VkJywnY2hlY2tlZCcpOwogICAgfSBlbHNlIHsKICAgICAgJCgnLnNlbGVjdCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICAgIH0KICB9KTsKICAkKCcuc2VsZWN0JykuY2xpY2soZnVuY3Rpb24oKXsKICAgICQoJyNzZWxlY3RhbGwnKS5yZW1vdmVBdHRyKCdjaGVja2VkJyk7CiAgfSk7CiAgJCgnI3RvZ2dsZV9maWx0ZXInKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI2ZpbHRlcl9mb3JtJykudG9nZ2xlKCk7CiAgfSk7CiAge2lmIGlzc2V0KCR0YWJsZXNvcnRlcil9CiAgJCgnI2FydGljbGVsaXN0JykudGFibGVzb3J0ZXIoeyBzb3J0TGlzdDp7JHRhYmxlc29ydGVyfSB9KTsKICB7L2lmfQp9KTsKLy9dXT4KPC9zY3JpcHQ+CntpZiBpc3NldCgkbWVzc2FnZSl9CiAge2lmICRlcnJvciAhPSAnJ30KICAgIDxwPjxmb250IGNvbG9yPSJyZWQiPnskbWVzc2FnZX08L2ZvbnQ+PC9wPgogIHtlbHNlfQogICAgPHA+eyRtZXNzYWdlfTwvcD4KICB7L2lmfQp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JHJldHJpZXZlX3VzZXJzfSB8IHskcmV0cmlldmVfdGVhbXN9IHwgeyRyZXRyaWV2ZV90ZWFtc19hdXRyZXN9IHwgeyRyZXRyaWV2ZV9hbGxfcGFydGllc30gfCB7JHJldHJpZXZlX2FsbF9zcGlkfSB8IHskcmV0cmlldmVfZGV0YWlsc19yZW5jb250cmVzfTwvcD48L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQp7JGZvcm0yc3RhcnR9Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiA8dGhlYWQ+CiAgPHRyPgkKICA8dGg+SWQ8L3RoPgogIDx0aD5EYXRlIGRlIG1pc2Ugw6Agam91cjwvdGg+CiAgPHRoPmRlc2lnbmF0aW9uPC90aD4KICA8dGggY29sc3Bhbj0iMyI+QWN0aW9uczwvdGg+Cgk8dGg+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0ic2VsZWN0YWxsIiBuYW1lPSJzZWxlY3RhbGwiLz48L3RoPgogICAgPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgPHRkPnskZW50cnktPmlkfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZGF0ZW1han08L3RkPgogICAgPHRkPnskZW50cnktPmRlc2lnbmF0aW9ufTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KCTx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+c2VsZWN0fTwvdGQ+CiAgICAKICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgoKICA8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyIgc3R5bGU9ImZsb2F0OiByaWdodDsiPgp7aWYgaXNzZXQoJHN1Ym1pdF9tYXNzZGVsZXRlKX08YnIvPnskc3VibWl0X21hc3NkZWxldGV9ey9pZn0KICA8L2Rpdj4KeyRmb3JtMmVuZH0Key9pZn0KCgoKCgoK]]></data>
	</file>
	<file>
	  <filename>/templates/recupparties.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS50b2dnbGUoKTsKICB9KTsKICB7aWYgaXNzZXQoJHRhYmxlc29ydGVyKX0KICAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4KPGgyPkV0YXQgZGVzIHLDqWN1cMOpcmF0aW9ucyBkZXMgam91ZXVycyBhY3RpZnM8L2gyPgo8cD5Mw6lnZW5kZSA6IDxiciAvPgoJeyRhdHRlbnRpb25faW1nfSA6IFBhcnRpZXMgbm9uIHLDqWN1cMOpcsOpZXMgcGFyIHNpdHVhdGlvbihzKSBtZW5zdWVsbGUocykgbWFucXVhbnRlKHMpPC9wPgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGl0ZW1jb3VudH0mbmJzcDt7JGl0ZW1zZm91bmR9ICB7KiRiYXJjaGFydHMqfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQp7JGZvcm0yc3RhcnR9Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiA8dGhlYWQ+Cgk8dHI+CgkJPHRoPklkPC90aD4KCQk8dGg+Sm91ZXVyPC90aD4KCQk8dGg+RGVybmnDqHJlIFNpdHVhdGlvbjwvdGg+CgkJPHRoPlBhcnRpZXMgRkZUVDwvdGg+CgkJPHRoPlBhcnRpZXMgU3BpZDwvdGg+CgkJPHRoIGNvbHNwYW49JzMnPkFjdGlvbnM8L3RoPgoJCTx0aD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJzZWxlY3RhbGwiIG5hbWU9InNlbGVjdGFsbCI+PC90aD4KCTwvdHI+CiA8L3RoZWFkPgogPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KCTx0ZD57JGVudHJ5LT5pZH08L3RkPgoJPHRkPnskZW50cnktPmpvdWV1cn0gKHskZW50cnktPmxpY2VuY2V9KTwvdGQ+Cgk8dGQ+e2lmICRlbnRyeS0+c2l0X21lbnMgPT0nJ317JGVudHJ5LT5wdXNoX3BsYXllcn17ZWxzZX17JGVudHJ5LT5zaXRfbWVuc317L2lmfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZmZ0dH08YnIgLz4obWFqIGxlIHskZW50cnktPm1hal9mZnR0fGRhdGVfZm9ybWF0OiIlQSAlZSAlQiJ9KTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+c3BpZH0veyRlbnRyeS0+c3BpZF90b3RhbH17aWYgJGVudHJ5LT5zcGlkICE9ICRlbnRyeS0+c3BpZF90b3RhbH17JGF0dGVudGlvbl9pbWd9eyRlbnRyeS0+Y29ycmVjdGlvbn17L2lmfTxiciAvPihtYWogbGUgeyRlbnRyeS0+bWFqX3NwaWR8ZGF0ZV9mb3JtYXQ6IiVBICVlICVCIn0pPC90ZD4KICAgIDx0ZD57JGVudHJ5LT5zaXRtZW5zbGlua308L3RkPgoJPHRkPnskZW50cnktPmdldHBhcnRpZXNsaW5rfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+Z2V0cGFydGllc3NwaWR9PC90ZD4KCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9c2VsW10iIHZhbHVlPSJ7JGVudHJ5LT5saWNlbmNlfSIgY2xhc3M9InNlbGVjdCI+PC90ZD4KICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgo8IS0tIFNFTEVDVCBEUk9QRE9XTiAtLT4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogcmlnaHQ7Ij4KPGJyLz57JGFjdGlvbmRlbWFzc2V9eyRzdWJtaXRfbWFzc2FjdGlvbn0KICA8L2Rpdj4KeyRmb3JtMmVuZH0Key9pZn0K]]></data>
	</file>
	<file>
	  <filename>/templates/resultats.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskaXRlbXN8dmFyX2R1bXB9PC9wcmU+Kn0Ke2Fzc2lnbiB2YXI9Y29tcHRldXIgdmFsdWUgPSAwfQo8cCBzdHlsZT0id2lkdGg6IDEwMCUiPjxzcGFuIHN0eWxlPSJ0ZXh0LWFsaWduOiBsZWZ0Ij57JG1vaXNfcHJlY2VkZW50fSB8IHskbW9pc19zdWl2YW50fTwvc3Bhbj48c3BhbiBzdHlsZT0iZmxvYXQ6cmlnaHQiPnskYWxsX3Jlc3VsdHN9PC9zcGFuPjwvcD4KCntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CnsqPHA+PHByZT57JHByb2RzX3skY29tcHRldXIrK318dmFyX2R1bXB9PC9wcmU+PC9wPip9CgoJeyokZW50cnktPnZhbGV1cip9eyp7aWYgJGVudHJ5LT5hdHRlbnRpb24gPT0xfXskYXR0ZW50aW9uX2ltZ30gQVRURU5USU9OICEhICB7L2lmfSp9Cgl7aWYgJGVudHJ5LT5pbmRpdnM9PTB9Cgk8aDM+eyRlbnRyeS0+ZGF0ZXxkYXRlX2Zvcm1hdDoiJWQvJW0vJVkifSB7JGVudHJ5LT5jb21wZXR9PC9oMz4KCQoJCgkJPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KCQkJe2ZvcmVhY2ggZnJvbT0kcHJvZHNfeyRlbnRyeS0+dmFsZXVyfSBpdGVtPWRvbm5lZX0KCQkJCTx0cj4KCQkJCQk8dGQ+eyRkb25uZWUtPmVxdWF9PC90ZD4KCQkJCQk8dGQ+eyRkb25uZWUtPmVxdWJ9PC90ZD4KCQkJCQk8dGQ+eyRkb25uZWUtPnNjb3JlYX08L3RkPgoJCQkJCTx0ZD57JGRvbm5lZS0+c2NvcmVifTwvdGQ+CgkJCQkJPHRkPnskZG9ubmVlLT5kaXNwbGF5fTwvdGQ+CgkJCQkJPHRkPnskZG9ubmVlLT5yZXRyaWV2ZV9wb3VsZV9yZW5jb250cmVzfTwvdGQ+CgkJCQkJPHRkPnskZG9ubmVlLT5yZXRyaWV2ZV9kZXRhaWxzfTwvdGQ+CgkJCQkJPHRkPnskZG9ubmVlLT5kZWxldGVsaW5rfTwvdGQ+CgkJCQk8L3RyPgoJCQkJey9mb3JlYWNofQoJCQk8L3RhYmxlPgoJCntlbHNlfQo8aDM+eyRlbnRyeS0+ZGF0ZXxkYXRlX2Zvcm1hdDoiJWQvJW0vJVkifSB7JGVudHJ5LT5jb21wZXR9PC9oMz4KCgk8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgoJCTx0cj4KCQkJPHRkPnskZW50cnktPmRvd25sb2FkfTwvdGQ+CgkJPC90cj4KCTwvdGFibGU+Cgp7L2lmfQp7L2ZvcmVhY2h9Cgo=]]></data>
	</file>
	<file>
	  <filename>/templates/sitmens.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyo8cHJlPnskaXRlbXN8dmFyX2R1bXB9PC9wcmU+Kn0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS50b2dnbGUoKTsKICB9KTsKICB7aWYgaXNzZXQoJHRhYmxlc29ydGVyKX0KICAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRtb2lzX3ByZWNlZGVudH0mbmJzcDt7JG1vaXNfc3VpdmFudH0gPC9wPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGl0ZW1jb3VudH0mbmJzcDt7JGl0ZW1zZm91bmR9IDwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJ0YWJsZSB0YWJsZS1ob3ZlciIgaWQ9ImFydGljbGVsaXN0Ij4KIDx0aGVhZD4KCTx0cj4KCQk8dGg+Sm91ZXVyPC90aD4KCQk8dGg+UG9pbnRzPC90aD4KCQk8dGg+UmFuZyBuYXQ8L3RoPgoJCTx0aD5SYW5nIHJlZzwvdGg+CgkJPHRoPlJhbmcgZMOpcDwvdGg+CgkJPHRoPlByb2dyZXNzaW9uIG1lbnM8L3RoPgoJPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgPHRkPnskZW50cnktPmpvdWV1cn08L3RkPgogICAgPHRkPnskZW50cnktPnBvaW50c308L3RkPgoJPHRkPnskZW50cnktPmNsbmF0fTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+cmFuZ3JlZ308L3RkPgoJPHRkPnskZW50cnktPnJhbmdkZXB9PC90ZD4KCTx0ZD57JGVudHJ5LT5wcm9nbW9pc308L3RkPgogIDwvdHI+CnsvZm9yZWFjaH0KIDwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnsqJGNyZWF0ZWxpbmsqfTwvcD48L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/sitmens_prov.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRyZXR1cm5saW5rfTwvcD48L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgY2xhc3M9InRhYmxlIHRhYmxlLWJvcmRlcmVkIj4KCTx0aGVhZD4KCQk8dGg+Sm91ZXVyPC90aD4KCQk8IS0tPHRoPlByb2cgbW9pczwvdGg+LS0+CgkJPHRoPkNsdCByw6lmw6lyZW5jZTwvdGg+CgkJPHRoPlBvaW50cyBlbiBjb3VyczwvdGg+CgkJPHRoPkJpbGFuPC90aD4KCQkKCTwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgPHRkPnskZW50cnktPmpvdWV1cn08L3RkPgoJPHRkPnskZW50cnktPmNsdH08L3RkPgoJPHRkPnskZW50cnktPnNvbW1lfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+YmlsYW59PC90ZD4KCTx0ZD57JGVudHJ5LT5kZXRhaWxzfTwvdGQ+CiAgPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4Ke2Vsc2V9CjxwPkxlcyBzaXR1YXRpb25zIG1lbnN1ZWxsZXMgc29udCDDoCBqb3VyPC9wPgp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGNyZWF0ZWxpbmt9PC9wPjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/spid.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS50b2dnbGUoKTsKICB9KTsKICB7aWYgaXNzZXQoJHRhYmxlc29ydGVyKX0KICAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4Ke2lmIGlzc2V0KCRmb3Jtc3RhcnQpIH0KPGZpZWxkc2V0PgogIDxsZWdlbmQ+RmlsdHJlczwvbGVnZW5kPgogIHskZm9ybXN0YXJ0fQogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPlR5cGUgQ29tcMOpdGl0aW9uOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfY29tcGV0fSA8L3A+CiAgICA8IS0tPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90b3VyfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RvdXJ9IDwvcD4tLT4KCTxwIGNsYXNzPSJwYWdldGV4dCI+RGF0ZTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2RhdGV9IDwvcD4KCTxwIGNsYXNzPSJwYWdldGV4dCI+Sm91ZXVyIDo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3BsYXllcn0gPC9wPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5FcnJldXJzIHVuaXF1ZW1lbnQ6PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9lcnJvcl9vbmx5fSA8L3A+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0ZmlsdGVyfXskaGlkZGVufGRlZmF1bHQ6Jyd9PC9wPgogIDwvZGl2PgogIHskZm9ybWVuZH0KPC9maWVsZHNldD4Key9pZn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRyZXR1cm5saW5rfTwvcD48L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfSB8IHskdmVyaWZfc3BpZF9mZnR0fTwvcD48L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRyZXRyaWV2ZV9hbGx9PC9wPjwvZGl2Pgp7aWYgJGl0ZW1jb3VudCA+IDB9CnskZm9ybTJzdGFydH0KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KIDx0aGVhZD4KCTx0cj4JCgkJPHRoPklkPC90aD4KCQk8dGg+Sm91ZXVyPC90aD4KCQk8dGg+RGF0ZTwvdGg+CgkJPHRoPkVwcmV1dmU8L3RoPgoJCTx0aD5Ob20gYWR2ZXJzYWlyZTwvdGg+CgkJPHRoPkNsYXNzZW1lbnQ8L3RoPgoJCTx0aD5WaWN0b2lyZTwvdGg+CgkJPHRoPkVjYXJ0PC90aD4KCQk8dGg+Q29lZmY8L3RoPgoJCTx0aD5Qb2ludHM8L3RoPgoJCTx0aD5Gb3JmYWl0PC90aD4KCQk8dGggY29sc3Bhbj0iMiI+QWN0aW9uczwvdGg+CgkJPHRoPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InNlbGVjdGFsbCIgbmFtZT0ic2VsZWN0YWxsIj48L3RoPgogIDwvdHI+CiA8L3RoZWFkPgogPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KICAgIDx0ZD57JGVudHJ5LT5yZWNvcmRfaWR9PC90ZD4KCTx0ZD57JGVudHJ5LT5qb3VldXJ9PC90ZD4JCiAgICA8dGQ+eyRlbnRyeS0+ZGF0ZV9ldmVudHxkYXRlX2Zvcm1hdDoiJUEgJWUgJUIgJVkifTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZXByZXV2ZX08L3RkPgoJPHRkPnskZW50cnktPm5hbWV9PC90ZD4KCTx0ZD57JGVudHJ5LT5jbGFzc2VtZW50fTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+dmljdG9pcmV9PC90ZD4KCXtpZiAkZW50cnktPmVjYXJ0IGVxICIwLjAwIiB8fCAkZW50cnktPmVjYXJ0PT0tJGVudHJ5LT5jbGFzc2VtZW50fTx0ZCBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOyI+e2Vsc2V9PHRkPnsvaWZ9eyRlbnRyeS0+ZWNhcnR9PC90ZD4KCXtpZiAkZW50cnktPmNvZWZmICBlcSAiMC4wMCJ9PHRkIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Ij57ZWxzZX08dGQ+ey9pZn17JGVudHJ5LT5jb2VmZn08L3RkPgoJPHRkPnskZW50cnktPnBvaW50cmVzfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+Zm9yZmFpdH08L3RkPgoJPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZHVwbGljYXRlbGlua308L3RkPgoJPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4KCTx0ZD48aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskYWN0aW9uaWR9c2VsW10iIHZhbHVlPSJ7JGVudHJ5LT5yZWNvcmRfaWR9IiBjbGFzcz0ic2VsZWN0Ij48L3RkPgogIDwvdHI+CnsvZm9yZWFjaH0KIDwvdGJvZHk+CjwvdGFibGU+CjwhLS0gU0VMRUNUIERST1BET1dOIC0tPgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyIgc3R5bGU9ImZsb2F0OiByaWdodDsiPgo8YnIvPnskYWN0aW9uZGVtYXNzZX17JHN1Ym1pdF9tYXNzYWN0aW9ufQogIDwvZGl2Pgp7JGZvcm0yZW5kfQp7L2lmfQoKPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyokY3JlYXRlbGluayp9PC9wPjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/teamscores.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyoKCXtpZiBpc3NldCgkZm9ybXN0YXJ0KSB9CjxmaWVsZHNldD4KICA8bGVnZW5kPkZpbHRyZXM8L2xlZ2VuZD4KICB7JGZvcm1zdGFydH0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5UeXBlIENvbXDDqXRpdGlvbjo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NvbXBldH0gPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90b3VyfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RvdXJ9IDwvcD4KCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZXF1aXBlfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2VxdWlwZX0gPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdGZpbHRlcn17JGhpZGRlbnxkZWZhdWx0OicnfTwvcD4KICA8L2Rpdj4KICB7JGZvcm1lbmR9CjwvZmllbGRzZXQ+CnsvaWZ9Cip9CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskcmV0cmlldmVfdGVhbXN9IHwgeyRyZXRyaWV2ZV90ZWFtc19hdXRyZXN9IHwgeyRlZGl0X3RlYW19PC9wPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGl0ZW1jb3VudH0mbmJzcDt7JGl0ZW1zZm91bmR9PC9wPjwvZGl2Pgp7aWYgJGl0ZW1jb3VudCA+IDB9CjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRwaGFzZTF9IHwgeyRwaGFzZTJ9PC9wPgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgoJPHRyPgoJCTx0aD57JGlkfTwvdGg+CgkJPHRoPnskZXF1aXBlfTwvdGg+CgkJPHRoPk5pdmVhdTwvdGg+CgkJPHRoPkNvbXDDqXRpdGlvbjwvdGg+CgkJPHRoPk5vbSBjb3VydDwvdGg+CgkJPHRoIGNvbHNwYW49IjQiPkFjdGlvbnM8L3RoPgoJPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgoJPHRkPnskZW50cnktPmlkfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+bGliZXF1aXBlfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+bGliZGl2aXNpb259PC90ZD4KCTx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZnJpZW5kbHluYW1lfTwvdGQ+CjwhLS0JPHRkPnskZW50cnktPnZpZXd9PC90ZD4tLT4KCTx0ZD57JGVudHJ5LT5lZGl0bGlua308L3RkPgoJPHRkPnskZW50cnktPmFkZG5ld2xpbmt9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5yZXRyaWV2ZV9wb3VsZV9yZW5jb250cmVzfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+Y2xhc3NlbWVudH08L3RkPgogICAgPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4KICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQoK]]></data>
	</file>
	<file>
	  <filename>/templates/topflop.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSwgdGFibGUtYm9yZGVyZWQiPgogPHRoZWFkPgoJPHRyPgoJCTx0aD5Kb3VldXI8L3RoPgoJCTx0aD5FY2FydDwvdGg+CgkJPHRoPlBvaW50czwvdGg+Cgk8L3RyPgo8L3RoZWFkPgogPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KCTx0ZD57JGVudHJ5LT5qb3VldXJ9PC90ZD4KCTx0ZD57JGVudHJ5LT5hZHZ9PC90ZD4KCTx0ZD57JGVudHJ5LT5lY2FydH08L3RkPgogICAgPHRkPnskZW50cnktPnBvaW50cmVzfTwvdGQ+CiAgICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgp7ZWxzZX0KPHA+UGFzIGRlIHLDqXN1bHRhdHM8L3A+CnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/unable_players.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPkxpc3RlIGRlcyBqb3VldXJzIGluYWN0aWZzPC9oMj4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfSAgeyRkaXNwbGF5X2VuYWJsZV9wbGF5ZXJzfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgogIDx0cj4JCiAgPHRoPnskaWR9PC90aD4KICA8dGg+Sm91ZXVyPC90aD4KPHRoPkFjdGlvbnM8L3RoPgogIDwvdHI+CiA8L3RoZWFkPgogPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQoKICA8dHIgIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgPHRkPnskZW50cnktPmlkfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+am91ZXVyfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQoK]]></data>
	</file>
	<file>
	  <filename>/templates/user_results.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4KPHA+eyRyZXRvdXJ9PC9wPgp7aWYgJGFmZmljaGU9PScxJ30KPGgzPlLDqXN1bcOpIGRlcyByw6lzdWx0YXRzPC9oMz4KPHA+eyRwaGFzZTF9IHwgeyRwaGFzZTJ9PC9wPgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRib2R5PgoJPHRoZWFkPgoJCTx0cj4KCQkJPHRoPlZpYzwvdGg+CgkJCTx0aD5Ub3RhbDwvdGg+CgkJCTx0aD5QdHM8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgogPC90Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMxIGl0ZW09ZW50cmVlfQogIDx0ciBjbGFzcz0ieyRlbnRyZWUtPnJvd2NsYXNzfSI+CiAgICA8dGQ+eyRlbnRyZWUtPnZpY308L3RkPgoJPHRkPnskZW50cmVlLT50b3RhbH08L3RkPgoJPHRkPnskZW50cmVlLT5wdHN9PC90ZD4KICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQp7aWYgJGl0ZW1jb3VudCA+MH0KCXtpZiAkYWZmaWNoZT09JzAnfQoJCgkJPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ib3JkZXJlZCI+CgkJIDx0aGVhZD4KCQkgIDx0cj4KCQkJPHRoPkFkdjwvdGg+CgkJCTx0aD5WaWMvRGVmPC90aD4KCQkJPHRoPkNvZWZmPC90aD4KCQkJPHRoPlB0czwvdGg+CgkJICA8L3RyPgoJCSA8L3RoZWFkPgoJCSA8dGJvZHk+CgkJe2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KCQkgIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KCQkJPHRkPnskZW50cnktPmRhdGVfZXZlbnR8ZGF0ZV9mb3JtYXQ6IiVkLyVtIn08L3RkPgoJCQk8dGQ+eyRlbnRyeS0+YWR2bm9tcHJlfSh7JGVudHJ5LT5hZHZjbGFvZn0pPC90ZD4KCQkgICAgPHRkPnskZW50cnktPnZkfTwvdGQ+CQkKCQkJPHRkPnskZW50cnktPnBvaW50cmVzfTwvdGQ+CgkJICA8L3RyPgoJCXsvZm9yZWFjaH0KCQkgPC90Ym9keT4KCQk8L3RhYmxlPgoJPHA+eyRyZXN1bHRhdHN9PC9wPgoJe2Vsc2V9CgkJPGgzPkxlIGTDqXRhaWwgZGVzIHLDqXN1bHRhdHMgb2ZmaWNpZWxzIGRlIHskam91ZXVyfTwvaDM+CgkJPHRhYmxlICBjbGFzcz0idGFibGUgdGFibGUtYm9yZGVyZWQiPgoJCSA8dGhlYWQ+CgkJICA8dHI+CgkJCTx0aD5EYXRlPC90aD4KCQkJPHRoPkFkdjwvdGg+CgkJCTx0aD5WaWMvRGVmPC90aD4KCQkJPHRoPlB0czwvdGg+CgkJICA8L3RyPgoJCSA8L3RoZWFkPgoJCSA8dGJvZHk+CgkJe2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KCQkgIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KCQkgICAgPHRkPnskZW50cnktPmRhdGVfZXZlbnR8ZGF0ZV9mb3JtYXQ6IiVkLyVtIn08L3RkPgoJCSAgICA8dGQgY2xhc3M9Im5hbWUiPnskZW50cnktPmFkdm5vbXByZX0oeyRlbnRyeS0+YWR2Y2xhb2Z9KTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT52ZH08L3RkPgoJCQk8dGQ+eyRlbnRyeS0+cG9pbnRyZXN9PC90ZD4KCQkgIDwvdHI+CgkJey9mb3JlYWNofQoJCSA8L3Rib2R5PgoJCTwvdGFibGU+Cgl7L2lmfQkKe2Vsc2V9CgkJCTxwPkF1Y3VuIHLDqXN1bHRhdDwvcD4Key9pZn0KCQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGNyZWF0ZWxpbmt9PC9wPjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/user_results_prov.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4KPHA+eyRyZXRvdXJ9PC9wPgp7aWYgJGFmZmljaGU9PScxJ30KPGgzPlLDqXN1bcOpIGRlcyByw6lzdWx0YXRzPC9oMz4KPHA+eyRwaGFzZTF9IHwgeyRwaGFzZTJ9PC9wPgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRib2R5PgoJPHRoZWFkPgoJCTx0cj4KCQkJPHRoPlZpYzwvdGg+CgkJCTx0aD5Ub3RhbDwvdGg+CgkJCTx0aD5QdHM8L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgogPC90Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMxIGl0ZW09ZW50cmVlfQogIDx0ciBjbGFzcz0ieyRlbnRyZWUtPnJvd2NsYXNzfSI+CiAgICA8dGQ+eyRlbnRyZWUtPnZpY308L3RkPgoJPHRkPnskZW50cmVlLT50b3RhbH08L3RkPgoJPHRkPnskZW50cmVlLT5wdHN9PC90ZD4KICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgp7L2lmfQp7aWYgJGl0ZW1jb3VudCA+MH0KCXtpZiAkYWZmaWNoZT09JzAnfQoJPGgzPkxlcyByw6lzdWx0YXRzIGRlIHskam91ZXVyfTwvaDM+CgkJPHRhYmxlIGNsYXNzPSJ0YWJsZSB0YWJsZS1ib3JkZXJlZCI+CgkJIDx0aGVhZD4KCQkgIDx0cj4KCQkJPHRoPkRhdGU8L3RoPgoJCQk8dGg+RXByZXV2ZTwvdGg+CgkJCTx0aD5BZHY8L3RoPgoJCQk8dGg+VmljL0RlZjwvdGg+CgkJCQoJCQk8dGg+UHRzPC90aD4KCQkgIDwvdHI+CgkJIDwvdGhlYWQ+CgkJIDx0Ym9keT4KCQl7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQoJCSAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgoJCQk8dGQ+eyRlbnRyeS0+ZGF0ZV9ldmVudHxkYXRlX2Zvcm1hdDoiJWQvJW0ifTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5lcHJldXZlfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5ub219KHskZW50cnktPmNsYXNzZW1lbnR9KTwvdGQ+CgkJICAgIDx0ZD57JGVudHJ5LT52aWN0b2lyZX08L3RkPgkJCgkJCTx0ZD57JGVudHJ5LT5wb2ludHJlc308L3RkPgoJCSAgPC90cj4KCQl7L2ZvcmVhY2h9CgkJIDwvdGJvZHk+CgkJPC90YWJsZT4KCTxwPnskcmVzdWx0YXRzfTwvcD4KCXtlbHNlfQoJCTxoMz5MZSBkw6l0YWlsIGRlcyByw6lzdWx0YXRzIHNwaWQgZGUgeyRqb3VldXJ9PC9oMz4KCQk8dGFibGUgIGNsYXNzPSJ0YWJsZSB0YWJsZS1ib3JkZXJlZCI+CgkJIDx0aGVhZD4KCQkgIDx0cj4KCQkJPHRoPkRhdGU8L3RoPgoJCQk8dGg+RXByZXV2ZTwvdGg+CgkJCTx0aD5BZHY8L3RoPgoJCQk8dGg+VmljL0RlZjwvdGg+CgkJCTx0aD5Db2VmZjwvdGg+CgkJCTx0aD5QdHM8L3RoPgoJCSAgPC90cj4KCQkgPC90aGVhZD4KCQkgPHRib2R5PgoJCXtmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CgkJICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+CgkJICAgIDx0ZD57JGVudHJ5LT5kYXRlX2V2ZW50fGRhdGVfZm9ybWF0OiIlZC8lbSJ9PC90ZD4KCQkJPHRkPnskZW50cnktPmVwcmV1dmV9PC90ZD4KCQkgICAgPHRkIGNsYXNzPSJuYW1lIj57JGVudHJ5LT5ub219KHskZW50cnktPmNsYXNzZW1lbnR9KTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT52aWN0b2lyZX08L3RkPgoJCQk8dGQ+eyRlbnRyeS0+Y29lZmZ9PC90ZD4KCQkJPHRkPnskZW50cnktPnBvaW50cmVzfTwvdGQ+CgkJICA8L3RyPgoJCXsvZm9yZWFjaH0KCQkgPC90Ym9keT4KCQk8L3RhYmxlPgoJey9pZn0JCntlbHNlfQoJCQk8cD5BdWN1biByw6lzdWx0YXQ8L3A+CnsvaWZ9CgkKPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRjcmVhdGVsaW5rfTwvcD48L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/verif.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHA+eyRpdGVtc2NvdW50fSByw6lzdWx0YXQocykgdHJvdXbDqShzKTwvcD4Ke2lmICRpdGVtc2NvdW50PjB9CjxwPkxhIHByZW1pw6hyZSBjb2xvbm5lIGVzdCBjZWxsZSBkdSBzcGlkLCBsYSBkZXV4acOobWUgRkZUVCB8IHskQ29ycmlnZXJ9PC9wPgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgoJPHRoZWFkPgoJCTx0cj4KCQkJPHRoPklkPC90aD4KCQkJPHRoPkRhdGU8L3RoPgoJCQk8dGg+RGF0ZTwvdGg+CgkJCTx0aD5MaWNlbmNlIDwvdGg+CgkJCTx0aD5MaWNlbmNlPC90aD4KCQkJPHRoPk5vbTwvdGg+CgkJCTx0aD5Ob208L3RoPgoJCQk8dGg+TsKwIEpvdXJuw6llPC90aD4KCQkJPHRoPk7CsCBKb3VybsOpZTwvdGg+CgkJCTx0aD5WaWN0b2lyZTwvdGg+CgkJCTx0aD5WaWN0b2lyZTwvdGg+CgkJCTx0aD5Db2VmZjwvdGg+CgkJCTx0aD5Db2VmZjwvdGg+CgkJCTx0aD5Qb2ludHM8L3RoPgoJCQk8dGg+UG9pbnRzPC90aD4KCQk8L3RyPgoJPC90aGVhZD4KCTx0Ym9keT4KCXtmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CgkJPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgoJCQk8dGQ+eyRlbnRyeS0+cmVjb3JkX2lkfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5kYXRlX3NwaWR8ZGF0ZV9mb3JtYXQ6IiVkLyVtIn08L3RkPgoJCQk8dGQ+eyRlbnRyeS0+ZGF0ZV9mZnR0fGRhdGVfZm9ybWF0OiIlZC8lbSJ9PC90ZD4KCQkJPHRkPnskZW50cnktPmxpY2VuY2Vfc3BpZH08L3RkPgoJCQk8dGQ+eyRlbnRyeS0+bGljZW5jZV9mZnR0fTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5ub21fc3BpZH08L3RkPgoJCQk8dGQ+eyRlbnRyeS0+bm9tX2ZmdHR9PC90ZD4KCQkJPHRkPnskZW50cnktPm51bWpvdXJuX3NwaWR9PC90ZD4KCQkJPHRkPnskZW50cnktPm51bWpvdXJuX2ZmdHR9PC90ZD4KCQkJPHRke2lmICRlbnRyeS0+dmljdG9pcmVfc3BpZCAhPSAkZW50cnktPnZpY3RvaXJlX2ZmdHR9IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7In17L2lmfT4gCQkJCXskZW50cnktPnZpY3RvaXJlX3NwaWR9PC90ZD4KCQkJPHRkPnskZW50cnktPnZpY3RvaXJlX2ZmdHR9PC90ZD4KCQkJPHRke2lmICRlbnRyeS0+Y29lZmZfc3BpZCAhPSAkZW50cnktPmNvZWZmX2ZmdHR9IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7In17L2lmfT57JGVudHJ5LT5jb2VmZl9zcGlkfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5jb2VmZl9mZnR0fTwvdGQ+CgkJCTx0ZHtpZiAkZW50cnktPnBvaW50c19zcGlkICE9ICRlbnRyeS0+cG9pbnRzX2ZmdHR9IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7In17L2lmfT57JGVudHJ5LT5wb2ludHNfc3BpZH08L3RkPgoJCQk8dGQ+eyRlbnRyeS0+cG9pbnRzX2ZmdHR9PC90ZD4KCQkJPCEtLTx0ZD57JGVudHJ5LT5lcmFzZWxpbmt9PC90ZD4tLT4KCQkJCgkJPC90cj4KCXsvZm9yZWFjaH0KCTwvdGJvZHk+CgkJCQoJCQkKPC90YWJsZT4Ke2Vsc2V9CjxwPkF1Y3VuZSBlcnJldXIgPC9wPgp7L2lmfQo8cD57JHJldHVybmxpbmt9PC9wPg==]]></data>
	</file>
</module>
