<?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.1beta1</version>
  <mincmsversion>1.11.9</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPk5vdGhpbmcuIEl0J3MgZGVzaWduZWQgdG8gYmUgYSBzdGFydGluZyBwb2ludCBmb3IgeW91IHRvIGRldmVsb3AgeW91ciBvd24gbW9kdWxlcy48L3A+CjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPgo8cD5XZWxsLCB5b3UgY291bGQgYWN0dWFsbHkgaW5zdGFsbCBpdCBieSBwbGFjaW5nIHRoZSBtb2R1bGUgaW4gYSBwYWdlIG9yIHRlbXBsYXRlIHVzaW5nIHRoZQpzbWFydHkgdGFnICYjMTIzO1NrZWxldG9ufTwvcD4KPHA+WW91IHdvdWxkIGJlIHdpc2VyLCBob3dldmVyLCB0byB1c2UgdGhlIG1vZHVsZSBhcyBhIHN0YXJ0aW5nIHBvaW50LCBhbmQgZWRpdGluZyB0aGUgY29kZSB0byBkbwp3aGF0ZXZlciBpdCBpcyB5b3UgYXJlIHdhbnRpbmcgdG8gZG8uPC9wPgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQsIHBsZWFzZSB2aXNpdCB0aGUgTW9kdWxlIEZvcmdlCjxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vIj5Ta2VsZXRvbiBQYWdlPC9hPi48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+CjxsaT5UaGUgYXV0aG9yLCBTakcsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+CjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvciBkaXJlY3RseS48L2xpPiAgCjwvdWw+CjxwPkFzIHBlciB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkIGFzLWlzLiBQbGVhc2UgcmVhZCB0aGUgdGV4dApvZiB0aGUgbGljZW5zZSBmb3IgdGhlIGZ1bGwgZGlzY2xhaW1lci48L3A+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEwLCBTYW11ZWwgR29sZHN0ZWluIDxhIGhyZWY9Im1haWx0bzpzamdAY21zbW9kdWxlcy5jb20iPiZsdDtzamdAY21zbW9kdWxlcy5jb20mZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPgo8aDM+UGFyYW1ldGVyczwvaDM+PHVsPjxsaT48ZW0+KG9wdGlvbik8L2VtPiZuYnNwO2xhbmc9ImVuX1VTIiAtIG91IGZyX0ZSIChmcmFuJmNjZWRpbDthaXMpIFBhcmFtJmVncmF2ZTt0cmUgdXRpbGlzJmVhY3V0ZTsgcG91ciBzcCZlYWN1dGU7Y2lmaWVyIGRhbnMgcXVlbGxlIGxhbmd1ZSBhZmZpY2hlciBsZSBtb2R1bGUgZGFucyBsYSBwYXJ0aWUgcHVibGlxdWUuIENlIHBhcmFtJmVncmF2ZTt0cmUgbiYjMDM5O2VzdCBwYXMgc3VwcG9ydCZlYWN1dGU7IG91IHV0aWxlIHBvdXIgdG91cyBsZXMgbW9kdWxlcy4gQXR0ZW50aW9uIDxzdHJvbmc+b2Jzb2wmZWdyYXZlO3RlPC9zdHJvbmc+IGVuIHZlcnNpb24gMS4xMSBwb3VyIGxlcyB0cmFkdWN0aW9ucy48L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBhZ2ktd2ViY29uc2VpbCAmbHQ7Y2xhdWRlQGFnaS13ZWJjb25zZWlsLmZyJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDAuMWJldGExPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPgo8bGk+VmVyc2lvbiAxLjguMSwgRmViIDIwMTEsIFNqRy4gQ29tcGF0aWJpbGl0eSBmaXhlcyBmb3IgTXlTUUwgNS41PC9saT4KPGxpPlZlcnNpb24gMS44LCBTZXAgMjAxMCBTakcKPHVsPgo8bGk+QWRkZWQgYW4gYWRkaXRpb25hbCBmaWVsZCB0byBkYXRhYmFzZSByZWNvcmRzIHRvIG1ha2UgaXQgbW9yZSBpbnRlcmVzdGluZy48L2xpPgo8bGk+SW1wbGVtZW50ZWQgUHJldHR5VVJMczwvbGk+CjxsaT5VcGRhdGVkIGZvciBDTVNNUyAxLjkgYW5kIGZvciBpbmNsdXNpb24gaW4gPGVtPkNNUyBEZXZlbG9wZXIncyBDb29rYm9vazwvZW0+PC9saT4KPC91bD48L2xpPgo8bGk+VmVyc2lvbiAxLjcsIFNlcCAyMDA5IFNqRywgQ2xlYW5lZCB1cCwgYW5kIG1vZGVybml6ZWQgYSBiaXQuPC9saT4KPGxpPlZlcnNpb24gMS42LCBOb3YgMjAwOCBTakcsIGFkZGVkIHBhcmFtZXRlciBzYW5pdGl6aW5nIGZvciBOdW5vPC9saT4KPGxpPlZlcnNpb24gMS41LCBKdWx5IDIwMDcgU2pHCjx1bD4KICAgPGxpPkFkZGVkIGFjdHVhbCBkYXRhYmFzZSBhcHAuPC9saT4KICAgPGxpPk1hZGUgQWRtaW4gdGFiYmVkIGZvciBpbnRlcmVzdC48L2xpPgogICA8bGk+VXBkYXRlZCBNaW5pbXVtIGFuZCBNYXhpbXVtIENNUyB2ZXJzaW9ucy48L2xpPgo8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbiAxLjQsIEp1bmUgMjAwNiAoY2FsZ3V5MTAwMCkuIAogIDx1bD4KICAgIDxsaT5SZXBsYWNlZCBEaXNwbGF5QWRtaW5OYXYgd2l0aCBhIHNpbmdsZSB0YWI8L2xpPgogICAgPGxpPlJlcGxhY2VkIGNhbGwgdG8gRG9BY3Rpb24gd2l0aCBhIFJlZGlyZWN0PC9saT4KICAgIDxsaT5DaGFuZ2VkIG1pbmltdW0gY21zIHZlcnNpb24gdG8gMS4wLXN2bjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb24gMS4zLiBKdW5lIDIwMDYgKHNqZykuIAogIDx1bD4KICAgIDxsaT5TcGxpdCBvdXQgaW5zdGFsbCwgdXBncmFkZSwgYW5kIHVuaW5zdGFsbCBtZXRob2RzPC9saT4KICAgIDxsaT5BZGRlZCBFdmVudHM8L2xpPgogICAgPGxpPkFkZGVkIHJlZmVyZW5jZXMgdG8gcHJldHR5IHVybHMgYW5kIHJvdXRlIHJlZ2lzdHJhdGlvbjwvbGk+CiAgICA8bGk+Y29ycmVjdGVkIGxhbmd1YWdlIGZpbGUgZGlyZWN0b3J5IHN0cnVjdHVyZTwvbGk+CiAgICA8bGk+YWRkZWQgbW9yZSBjb21tZW50czwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb24gMS4yLiAyOSBEZWNlbWJlciAyMDA1LiBGaXhlcyB0byBidWdzIHBvaW50ZWQgb3V0IGJ5IFBhdHJpY2sgTG9zY2htaWR0LiBVcGRhdGVzIHRvIGJlIGNvcnJlY3QgZm9yIENNUyBNYWRlIFNpbXBsZSB2ZXJzaW9ucyAwLjExLnguPC9saT4KPGxpPlZlcnNpb24gMS4xLiAxMSBTZXB0ZW1iZXIgMjAwNS4gQ2xlYW5lZCB1cCByZWZlcmVuY2VzIHRoYXQgY2F1c2VkIHByb2JsZW1zIGZvciBQSFAgNC40Lnggb3IgNS4wLjUuPC9saT4KPGxpPlZlcnNpb24gMS4wLiA2IEF1Z3VzdCAyMDA1LiBJbml0aWFsIFJlbGVhc2UuPC9saT48L3VsPjxiciAvPg==]]></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[AAAAAUJ1ZDEAACAAAAAIAAAAIAAAABAMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAA4AAAABAAAQAABlAHNkc2NsYm9vbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAYAaQBtAGEAZwBlAHNkc2NsYm9vbAAAAAAHAGkAbgBjAGwAdQBkAGVkc2NsYm9vbAAAAAAGAGoAcQBwAGwAbwB0ZHNjbGJvb2wAAAAABABsAGEAbgBnZHNjbGJvb2wBAAAAAwBsAGkAYmJ3c3BibG9iAAAA3GJwbGlzdDAw2AECAwQFBgcICQkLCQsODwtdU2hvd1N0YXR1c0JhcltTaG93UGF0aGJhcltTaG93VG9vbGJhcltTaG93VGFiVmlld18QFENvbnRhaW5lclNob3dTaWRlYmFyXFdpbmRvd0JvdW5kc1xTaWRlYmFyV2lkdGhbU2hvd1NpZGViYXIICAkICV8QGHt7MjAsIDY5OH0sIHsxMTg0LCA0NjB9fRCjCQgZJzM/S2JvfIiJiouMjaiqAAAAAAAAAQEAAAAAAAAAEQAAAAAAAAAAAAAAAAAAAKsAAAADAGwAaQBiZHNjbGJvb2wAAAAAAwBsAGkAYmxzdlBibG9iAAACb2JwbGlzdDAw2AECAwQFBgcICQkLDEQVRUZfEBB1c2VSZWxhdGl2ZURhdGVzXxAPc2hvd0ljb25QcmV2aWV3XxARY2FsY3VsYXRlQWxsU2l6ZXNXY29sdW1uc1h0ZXh0U2l6ZVpzb3J0Q29sdW1uWGljb25TaXplXxASdmlld09wdGlvbnNWZXJzaW9uCQkIqg0WGx8kKS4zOD3UDg8QEQkTCRVXdmlzaWJsZVV3aWR0aFlhc2NlbmRpbmdaaWRlbnRpZmllcgkRAnMJVG5hbWXUDg8QEQkYCxoJELUIXGRhdGVNb2RpZmllZNQODxARCxgLHggIW2RhdGVDcmVhdGVk1A4PEBEJIQsjCRBhCFRzaXpl1A4PEBEJJgkoCRBzCVRraW5k1A4PEBELKwktCBBkCVVsYWJlbNQODxARCzAJMggQSwlXdmVyc2lvbtQODxARCzUJNwgRASwJWGNvbW1lbnRz1A4PEBELOgs8CBDICF5kYXRlTGFzdE9wZW5lZNQ+P0ARCxgLQ1d2aXNpYmxlVXdpZHRoWWFzY2VuZGluZwgIWWRhdGVBZGRlZCNAKAAAAAAAACNAMAAAAAAAABAAAAgAGQAsAD4AUgBaAGMAbgB3AIwAjQCOAI8AmgCjAKsAsQC7AMYAxwDKAMsA0ADZANoA3ADdAOoA8wD0APUBAQEKAQsBDQEOARMBHAEdAR8BIAElAS4BLwExATIBOAFBAUIBRAFFAU0BVgFXAVoBWwFkAW0BbgFwAXEBgAGJAZEBlwGhAaIBowGtAbYBvwAAAAAAAAIBAAAAAAAAAEcAAAAAAAAAAAAAAAAAAAHBAAAAAwBsAGkAYmxzdnBibG9iAAACV2JwbGlzdDAw2AECAwQFBgcICQkLDEYUR0FfEBB1c2VSZWxhdGl2ZURhdGVzXxAPc2hvd0ljb25QcmV2aWV3XxARY2FsY3VsYXRlQWxsU2l6ZXNXY29sdW1uc1h0ZXh0U2l6ZVpzb3J0Q29sdW1uWGljb25TaXplXxASdmlld09wdGlvbnNWZXJzaW9uCQkI2Q0ODxAREhMUFRYfJCkuMzg9Qlhjb21tZW50c15kYXRlTGFzdE9wZW5lZFtkYXRlQ3JlYXRlZFRzaXplVWxhYmVsVGtpbmRXdmVyc2lvblRuYW1lXGRhdGVNb2RpZmllZNQXGBkaCxwJHld2aXNpYmxlVXdpZHRoWWFzY2VuZGluZ1VpbmRleAgRASwJEAfUFxgZGgshCyMIEMgIEAjUFxgZGgsmCygIELUIEALUFxgZGgkrCy0JEGEIEAPUFxgZGgswCTIIEGQJEAXUFxgZGgk1CTcJEHMJEATUFxgZGgs6CTwIEEsJEAbUFxgZGgk/CUEJEQJzCRAA1BcYGRoJJgtFCQgQASNAKAAAAAAAACNAMAAAAAAAAAAIABkALAA+AFIAWgBjAG4AdwCMAI0AjgCPAKIAqwC6AMYAywDRANYA3gDjAPAA+QEBAQcBEQEXARgBGwEcAR4BJwEoASoBKwEtATYBNwE5AToBPAFFAUYBSAFJAUsBVAFVAVcBWAFaAWMBZAFmAWcBaQFyAXMBdQF2AXgBgQGCAYUBhgGIAZEBkgGTAZUBngAAAAAAAAIBAAAAAAAAAEgAAAAAAAAAAAAAAAAAAAGnAAAAAwBsAGkAYnZTcm5sb25nAAAAAQAAAAkAdABlAG0AcABsAGEAdABlAHNid3NwYmxvYgAAANxicGxpc3QwMNgBAgMEBQYHCAkJCwkLDg8LXVNob3dTdGF0dXNCYXJbU2hvd1BhdGhiYXJbU2hvd1Rvb2xiYXJbU2hvd1RhYlZpZXdfEBRDb250YWluZXJTaG93U2lkZWJhclxXaW5kb3dCb3VuZHNcU2lkZWJhcldpZHRoW1Nob3dTaWRlYmFyCAgJCAlfEBh7ezQwLCA2Nzh9LCB7MTE4NCwgNDYwfX0QowkIGSczP0tib3yIiYqLjI2oqgAAAAAAAAEBAAAAAAAAABEAAAAAAAAAAAAAAAAAAACrAAAACQB0AGUAbQBwAGwAYQB0AGUAc2RzY2xib29sAAAAAAkAdABlAG0AcABsAGEAdABlAHNsc3ZQYmxvYgAAA6FicGxpc3QwMNoBAgMEBQYHCAkKCwwNDl5fYBdhDF8QEnZpZXdPcHRpb25zVmVyc2lvbl8QD3Nob3dJY29uUHJldmlld18QEWNhbGN1bGF0ZUFsbFNpemVzV2NvbHVtbnNfEA9zY3JvbGxQb3NpdGlvbllYdGV4dFNpemVfEA9zY3JvbGxQb3NpdGlvblhac29ydENvbHVtblhpY29uU2l6ZV8QEHVzZVJlbGF0aXZlRGF0ZXMQAAkIqg8YICcvNz9HT1fUEBESEwwVDBdXdmlzaWJsZVV3aWR0aFlhc2NlbmRpbmdaaWRlbnRpZmllcgkRAnMJVG5hbWXUExkaGxwdDQxVd2lkdGhZYXNjZW5kaW5nV3Zpc2libGVcZGF0ZU1vZGlmaWVkELUICdQTISIjJB0NDVV3aWR0aFlhc2NlbmRpbmdXdmlzaWJsZVtkYXRlQ3JlYXRlZAgI1BMoKSorLA0MVXdpZHRoWWFzY2VuZGluZ1d2aXNpYmxlVHNpemUQYQgJ1BMwMTIzNAwMVXdpZHRoWWFzY2VuZGluZ1d2aXNpYmxlVGtpbmQQcwkJ1BM4OTo7PAwNVXdpZHRoWWFzY2VuZGluZ1d2aXNpYmxlVWxhYmVsEGQJCNQTQEFCQ0QMDVV3aWR0aFlhc2NlbmRpbmdXdmlzaWJsZVd2ZXJzaW9uEEsJCNQTSElKS0wMDVV3aWR0aFlhc2NlbmRpbmdXdmlzaWJsZVhjb21tZW50cxEBLAkI1BNQUVJTVA0NVXdpZHRoWWFzY2VuZGluZ1d2aXNpYmxlXmRhdGVMYXN0T3BlbmVkEMgICNRYWVoTDR0NXVd2aXNpYmxlVXdpZHRoWWFzY2VuZGluZwgIWWRhdGVBZGRlZCMAAAAAAAAAACNAKAAAAAAAACMAAAAAAAAAACNAMAAAAAAAAAkACAAdADIARABYAGAAcgB7AI0AmAChALQAtgC3ALgAwwDMANQA2gDkAO8A8ADzAPQA+QECAQgBEgEaAScBKQEqASsBNAE6AUQBTAFYAVkBWgFjAWkBcwF7AYABggGDAYQBjQGTAZ0BpQGqAawBrQGuAbcBvQHHAc8B1QHXAdgB2QHiAegB8gH6AgICBAIFAgYCDwIVAh8CJwIwAjMCNAI1Aj4CRAJOAlYCZQJnAmgCaQJyAnoCgAKKAosCjAKWAp8CqAKxAroAAAAAAAACAQAAAAAAAABjAAAAAAAAAAAAAAAAAAACuwAAAAkAdABlAG0AcABsAGEAdABlAHNsc3ZwYmxvYgAAA4licGxpc3QwMNoBAgMEBQYHCAkKCwwNDl9gYRBiDF8QEnZpZXdPcHRpb25zVmVyc2lvbl8QD3Nob3dJY29uUHJldmlld18QEWNhbGN1bGF0ZUFsbFNpemVzV2NvbHVtbnNfEA9zY3JvbGxQb3NpdGlvbllYdGV4dFNpemVfEA9zY3JvbGxQb3NpdGlvblhac29ydENvbHVtblhpY29uU2l6ZV8QEHVzZVJlbGF0aXZlRGF0ZXMQAAkI2Q8QERITFBUWFxghKDA4QEhQWFhjb21tZW50c1RuYW1lW2RhdGVDcmVhdGVkVHNpemVVbGFiZWxUa2luZFd2ZXJzaW9uXmRhdGVMYXN0T3BlbmVkXGRhdGVNb2RpZmllZNQZGhscHR4MDVVpbmRleFV3aWR0aFlhc2NlbmRpbmdXdmlzaWJsZRAHEQEsCQjUIiMkGQwmDAtXdmlzaWJsZVV3aWR0aFlhc2NlbmRpbmcJEQJzCdQZKSorLC0NDVV3aWR0aFlhc2NlbmRpbmdXdmlzaWJsZRACELUICNQZMTIzNDUNDFV3aWR0aFlhc2NlbmRpbmdXdmlzaWJsZRADEGEICdQZOTo7PD0MDVV3aWR0aFlhc2NlbmRpbmdXdmlzaWJsZRAFEGQJCNQZQUJDREUMDFV3aWR0aFlhc2NlbmRpbmdXdmlzaWJsZRAEEHMJCdQZSUpLTE0MDVV3aWR0aFlhc2NlbmRpbmdXdmlzaWJsZRAGEEsJCNQZUVJTVFUNDVV3aWR0aFlhc2NlbmRpbmdXdmlzaWJsZRAIEMgICNQZWVpbXC0NDFV3aWR0aFlhc2NlbmRpbmdXdmlzaWJsZRABCAkjAAAAAAAAAAAjQCgAAAAAAAAjAAAAAAAAAAAjQDAAAAAAAAAJAAgAHQAyAEQAWABgAHIAewCNAJgAoQC0ALYAtwC4AMsA1ADZAOUA6gDwAPUA/QEMARkBIgEoAS4BOAFAAUIBRQFGAUcBUAFYAV4BaAFpAWwBbQF2AXwBhgGOAZABkgGTAZQBnQGjAa0BtQG3AbkBugG7AcQBygHUAdwB3gHgAeEB4gHrAfEB+wIDAgUCBwIIAgkCEgIYAiICKgIsAi4CLwIwAjkCPwJJAlECUwJVAlYCVwJgAmYCcAJ4AnoCewJ8AoUCjgKXAqAAAAAAAAACAQAAAAAAAABkAAAAAAAAAAAAAAAAAAACoQAAAAkAdABlAG0AcABsAGEAdABlAHN2U3JubG9uZwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAACALAAAARQAAEAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQREU0RCAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAACAAAABgAAAAAAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAgAACAAAACgAAAAAAQAAMAAAAAAAAAAAAQAAQAAAAAABAACAAAAAAAEAAQAAAAAAAQACAAAAAAABAAQAAAAAAAEACAAAAAAAAQAQAAAAAAABACAAAAAAAAEAQAAAAAAAAQCAAAAAAAABAQAAAAAAAAECAAAAAAAAAQQAAAAAAAABCAAAAAAAAAEQAAAAAAAAASAAAAAAAAABQAAAAAAAAAAZGgscCR5XdmlzaWJsZVV3aWR0aFlhc2NlbmRpbmdVaW5kZXgIEQEsCRAH1BcYGRoLIQsjCBDICBAI1BcYGRoLJgsoCBC1CBAC1BcYGRoJKwstCRBhCBAD1BcYGRoLMAkyCBBkCRAF1BcYGRoJNQk3CRBzCRAE1BcYGRoLOgk8CBBLCRAG1BcYGRoJPwlBCRECcwkQANQXGBkaCSYLRQkIEAEjQCgAAAAAAAAjQDAAAAAAAAAACAAZACwAPgBSAFoAYwBuAHcAjACNAI4AjwCiAKsAugDGAMsA0QDWAN4A4wDwAPkBAQEHAREBFwEYARsBHAEeAScBKAEqASsBLQE2ATcBOQE6ATwBRQFGAUgBSQFLAVQBVQFXAVgBWgFjAWQBZgFnAWkBcgFzAXUBdgF4AYEBggGFAYYBiAGRAZIBkwGVAZ4AAAAAAAACAQAAAAAAAABIAAAAAAAAAAAAAAAAAAABpwAAAAMAbABpAGJ2U3JubG9uZwAAAAEAAAAJAHQAZQBtAHAAbABhAHQAZQBzYndzcGJsb2IAAADcYnBsaXN0MDDYAQIDBAUGBwgJCQsJCw4PC11TaG93U3RhdHVzQmFyW1Nob3dQYXRoYmFyW1Nob3dUb29sYmFyW1Nob3dUYWJWaWV3XxAUQ29udGFpbmVyU2hvd1NpZGViYXJcV2luZG93Qm91bmRzXFNpZGViYXJXaWR0aFtTaG93U2lkZWJhcggICQgJXxAYe3s0MCwgNjc4fSwgezExODQsIDQ2MH19EKMJCBknMz9LYm98iImKi4yNqKoAAAAAAAABAQAAAAAAAAARAAAAAAAAAAAAAAAAAAAAqwAAAAkAdABlAG0AcABsAGEAdABlAHNkc2NsYm9vbAAAAAAJAHQAZQBtAHAAbABhAHQAZQBzbHN2UGJsb2IAAAOhYnBsaXN0MDDaAQIDBAUGBwgJCgsMDQ5eX2AXYQxfEBJ2aWV3T3B0aW9uc1ZlcnNpb25fEA9zaG93SWNvblByZXZpZXdfEBFjYWwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></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.admin_data_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCmlmIChpc3NldCgkcGFyYW1zWydzdWJtaXRfbWFzc2RlbGV0ZSddKSApCiAgewogICAgIGlmKCBpc3NldCgkcGFyYW1zWydzZWwnXSkgJiYgaXNfYXJyYXkoJHBhcmFtc1snc2VsJ10pICYmCgljb3VudCgkcGFyYW1zWydzZWwnXSkgPiAwICkKICAgICAgewogICAgICAgIGZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRqb3VybmFsaWQgKQoJICB7CgkgICAgcGluZ19hZG1pbl9vcHM6OmRlbGV0ZV9qb3VybmFsKCAkam91cm5hbGlkICk7CgkgIH0KICAgICAgfQogIH0KCgokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7Ci8vbGlzdGUgZGVzIGxpZW5zIHBvdXIgcsOpY3Vww6lyZXIgbGVzIGRvbm7DqWVzIAokc21hcnR5LT5hc3NpZ24oJ3JldHJpZXZlX3VzZXJzJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9qb3VldXJzX2J5X2NsdWInLCAkcmV0dXJuaWQsICRjb250ZW50cyA9ICJSw6ljdXDDqXJhdGlvbiBkZXMgam91ZXVycyIsICR3YXJuX21lc3NhZ2UgPSAiRXRlcyB2b3VzIHPDu3IgPyBUcm9wIGQnYXBwZWxzIHZlcnMgbGEgYmFzZSBkZSBkb25uw6llcyBwZXV2ZW50IGF2b2lyIGRlcyBjb25zw6lxdWVuY2VzIGltcG9ydGFudGVzICEiKSk7CgkJCiRzbWFydHktPmFzc2lnbigncmV0cmlldmVfdGVhbXMnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3RlYW1zJywgJHJldHVybmlkLCAkY29udGVudHMgPSAiUsOpY3Vww6lyYXRpb24gZGVzIMOpcXVpcGVzIChjaGFtcGlvbm5hdCBzZW5pb3JzKSIsIGFycmF5KCd0eXBlJz0+J00nKSkpOwokc21hcnR5LT5hc3NpZ24oJ3JldHJpZXZlX3RlYW1zX2F1dHJlcycsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfdGVhbXMnLCAkcmV0dXJuaWQsICRjb250ZW50cyA9ICJSw6ljdXDDqXJhdGlvbiBkZXMgw6lxdWlwZXMiKSk7CiRzbWFydHktPmFzc2lnbigncmV0cmlldmVfYWxsX3BhcnRpZXMnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX2FsbF9wYXJ0aWVzJywgJHJldHVybmlkLCAkY29udGVudHMgPSAiUsOpY3Vww6lyYXRpb24gZGUgdG91dGVzIGxlcyBwYXJ0aWVzIEZGVFQiKSk7CiRzbWFydHktPmFzc2lnbigncmVjdXBfam91ZXVycycsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmVjdXBfam91ZXVycycsICRyZXR1cm5pZCkpOwoKJHNtYXJ0eS0+YXNzaWduKCdyZXRyaWV2ZV9hbGxfc3BpZCcsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfYWxsX3BhcnRpZXNfc3BpZCcsICRyZXR1cm5pZCwgJGNvbnRlbnRzID0gJ1LDqWN1cMOpcmF0aW9ucyBkZSB0b3V0ZXMgbGVzIHBhcnRpZXMgU1BJRCcsICR3YXJuX21lc3NhZ2UgPSAnRXRlcyB2b3VzIHPDu3IgPycpKTsKJHNtYXJ0eS0+YXNzaWduKCdyZXRyaWV2ZV9kZXRhaWxzX3JlbmNvbnRyZXMnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX2NsdWInLCAkcmV0dXJuaWQsICRjb250ZW50cyA9ICdSw6ljdXDDqXJhdGlvbnMgZHUgZMOpdGFpbCBkZXMgcmVuY29udHJlcycpKTsKCgkJLyogb24gZmFpdCB1biBmb3JtdWxhaXJlIGRlIGZpbHRyYWdlIGRlcyByw6lzdWx0YXRzKi8KCQkkc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX2RhdGFfdGFiJykpOyAKCQkkc3RhdHVzbGlzdFskdGhpcy0+bGFuZygnYWxsc3RhdHVzJyldID0nJzsKCQkkZGF0ZWxpc3RbJHRoaXMtPkxhbmcoJ2FsbGRhdGUnKV0gPSAnJzsKCQkvLyRhbGxlcXVpcGVzID0gICggaXNzZXQoICRwYXJhbXNbJ2FsbGVxdWlwZXMnXSApPyRwYXJhbXNbJ2FsbGVxdWlwZXMnXTonbm8nKTsKCgkJLy8kZXF1aXBlbGlzdFskdGhpcy0+TGFuZygnYWxsZXF1aXBlcycpXSA9ICcnOwoJCS8vJHBsYXllcnNsaXN0WyR0aGlzLT5MYW5nKCdhbGxwbGF5ZXJzJyldID0gJyc7CgkJJHR5cGVDb21wZXQgPSBhcnJheSgpOwoJCS8vJHR5cGVDb21wZXRbJHRoaXMtPkxhbmcoJ2FsbGNvbXBldCcpXSA9ICcnOwoJCSRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cCI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkJd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJCSAgewoJCSAgICBzZXRsb2NhbGUgKExDX1RJTUUsICdmcl9GUicpOyAKCQkvLyRkYXRlbGlzdFskcm93WydkYXRlY3JlYXRlZCddXSA9IHN0cmZ0aW1lKCIlQSAlZSAlQiAlWSDDoCAlSDolTTolUyIsc3RydG90aW1lKCRyb3dbJ2RhdGVjcmVhdGVkJ10pKTsKCQkkZGF0ZWxpc3RbJHJvd1snZGF0ZWNyZWF0ZWQnXV0gPSAkcm93WydkYXRlY3JlYXRlZCddOyAKCQkgICAvLyAkcGxheWVyc2xpc3RbJHJvd1sncGxheWVyJ11dID0gJHJvd1snbGljZW5jZSddOwoJCSRzdGF0dXNsaXN0WyRyb3dbJ3N0YXR1cyddXSA9ICRyb3dbJ3N0YXR1cyddOwoJCSAgICAvLyRlcXVpcGVsaXN0WyRyb3dbJ2VxdWlwZSddXSA9ICRyb3dbJ2VxdWlwZSddOwoJCSAgICAvLyR0eXBlQ29tcGV0WyRyb3dbJ2NvZGVjaGFtcCddXSA9ICRyb3dbJ2NvZGVjaGFtcCddOwoJCSAgfQoKCQlpZiggaXNzZXQoJHBhcmFtc1snc3VibWl0ZmlsdGVyJ10pICkKCQkgIHsKCQkgICAgCWlmKCBpc3NldCggJHBhcmFtc1snZGF0ZWxpc3QnXSkgKQoJCSAgICAgIAl7CgkJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkYXRlQ2hvaXNpJywgJHBhcmFtc1snZGF0ZWxpc3QnXSk7CgkJICAgICAgCX0KCQkKCQkJaWYoIGlzc2V0KCAkcGFyYW1zWydzdGF0dXNsaXN0J10pICkKCQkgICAgICAJewoJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc3RhdHVzQ2hvaXNpZScsICRwYXJhbXNbJ3N0YXR1c2xpc3QnXSk7CgkJICAgICAgCX0KCQkvKglpZiggaXNzZXQoICRwYXJhbXNbJ3BsYXllcnNsaXN0J10pICkKCQkgICAgICAJewoJCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgncGxheWVyQ2hvaXNpJywgJHBhcmFtc1sncGxheWVyc2xpc3QnXSk7CgkJICAgICAgCX0KCQkgICAgaWYoIGlzc2V0KCAkcGFyYW1zWydlcXVpcGVsaXN0J10pKQoJCQl7CgkJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCAnZXF1aXBlQ2hvaXNpZScsICRwYXJhbXNbJ2VxdWlwZWxpc3QnXSk7CgkJCX0KCQkJCgkJICAgIGlmKCBpc3NldCggJHBhcmFtc1sndHlwZUNvbXBldCddKSApCgkJCXsgCgkJCSR0aGlzLT5TZXRQcmVmZXJlbmNlICggJ2NvbXBldENob2lzaWUnLCAkcGFyYW1zWyd0eXBlQ29tcGV0J10pOwoJCQl9CgkJCSovCgkJfQoJCSRjdXJkYXRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoICdkYXRlQ2hvaXNpJyApOwoJCSRjdXJzdGF0dXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc3RhdHVzQ2hvaXNpZScpOwoJLy8JJGN1cnBsYXllciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCAncGxheWVyQ2hvaXNpJyk7CgkvLwkkY3VyZXF1aXBlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoICdlcXVpcGVDaG9pc2llJyApOwoJLy8JJGN1ckNvbXBldCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCAnY29tcGV0Q2hvaXNpZScpOwoJCSRzbWFydHktPmFzc2lnbigncHJvbXB0X3RvdXInLAoJCQkJJHRoaXMtPkxhbmcoJ3RvdXInKSk7CgkJJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9kYXRlJywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnZGF0ZWxpc3QnLCRkYXRlbGlzdCwtMSwkY3VyZGF0ZSkpOwoJCgkJJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zdGF0dXMnLAoJCQkJCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3N0YXR1c2xpc3QnLCRzdGF0dXNsaXN0LC0xLCRjdXJzdGF0dXMpKTsKCQkJCSRzbWFydHktPmFzc2lnbigncHJvbXB0X2VxdWlwZScsCgkJCQkJCSR0aGlzLT5MYW5nKCdlcXVpcGUnKSk7CgkJLyoKCQkkc21hcnR5LT5hc3NpZ24oJ2lucHV0X2VxdWlwZScsCgkJCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2VxdWlwZWxpc3QnLCRlcXVpcGVsaXN0LC0xLCRjdXJlcXVpcGUpKTsKCQkJCQoJCQkJJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jb21wZXQnLAoJCQkJCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3R5cGVDb21wZXQnLCR0eXBlQ29tcGV0LC0xLCRjdXJDb21wZXQpKTsKCgkJCQkkc21hcnR5LT5hc3NpZ24oJ2lucHV0X3BsYXllcicsCgkJCQkJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwncGxheWVyc2xpc3QnLCRwbGF5ZXJzbGlzdCwtMSwkY3VycGxheWVyKSk7CgkJKi8KCQkkc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdGZpbHRlcicsCgkJCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXRmaWx0ZXInLCR0aGlzLT5MYW5nKCdmaWx0cmVzJykpKTsKCQkkc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKCiRyZXN1bHQ9IGFycmF5ICgpOwokcXVlcnk9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cCBXSEVSRSBpZCA+PSAwIjsKCmlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXRmaWx0ZXInXSApKXsKCmlmICgkY3VyZGF0ZSAhPScnKQp7CgkkcXVlcnkgLj0iIEFORCBkYXRlY3JlYXRlZCA9ID8gIjsKCSRwYXJtc1snZGF0ZWNyZWF0ZWQnXSA9ICRjdXJkYXRlOwoJCQp9Ci8qCmVsc2UgewoJJHF1ZXJ5Lj0iIEFORCBwdHMubnVtam91cm4gPj0gMCAiOwoJJHBhcm1zID0nJzsKfQoKaWYgKCRjdXJwbGF5ZXIgIT0nJykKewoJJHF1ZXJ5IC49IiBBTkQgcHRzLmxpY2VuY2UgPSA/IjsKCSRwYXJtc1snbGljZW5jZSddID0gJGN1cnBsYXllcjsKCQkKfQplbHNlIHsKCSRxdWVyeS49IiBBTkQgcHRzLmxpY2VuY2UgPj0gMCAiOwoJJHBhcm1zID0nJzsKfQoqLwppZigkY3Vyc3RhdHVzICE9JycpCnsKCSRxdWVyeS49IiBBTkQgc3RhdHVzID0gPyI7CgkkcGFybXNbJ3N0YXR1cyddID0gJGN1cnN0YXR1czsKfQovKgplbHNlIHsKCSRxdWVyeS49IiBBTkQgcHRzLnNhaXNvbiA9ID8iOwoJJHBhcm1zWydzYWlzb24nXSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKfQoKaWYgKCRjdXJDb21wZXQgIT0nJykKewoJJHF1ZXJ5Lj0iIEFORCBwdHMuY29kZWNoYW1wID0gPyI7CgkkcGFybXNbJ2NvZGVjaGFtcCddID0gJGN1ckNvbXBldDsKfQoqLwokZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnksJHBhcm1zKTsKfQoKZWxzZSB7CgkkcXVlcnkgLj0iIE9SREVSIEJZIGlkIERFU0MiOwoJJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKfQovL2VjaG8gJHF1ZXJ5OwppZiAoISRkYnJlc3VsdCkKewoKCQlkaWUoJ0ZBVEFMIFNRTCBFUlJPUjogJy4kZGItPkVycm9yTXNnKCkuJzxici8+UVVFUlk6ICcuJGRiLT5zcWwpOwoKfQoKCgoKLy8kZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwokcm93Y2xhc3M9ICdyb3cxJzsKJHJvd2FycmF5PSBhcnJheSAoKTsKaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIHsKLy8JJGFjdGlmID0gJHJvd1snYWN0aWYnXTsKCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCSRvbmVyb3ctPmlkPSAkcm93WydpZCddOwoJJG9uZXJvdy0+ZGF0ZW1haj0gJHJvd1snZGF0ZWNyZWF0ZWQnXTsKCSRvbmVyb3ctPmRlc2lnbmF0aW9uPSAkcm93WydkZXNpZ25hdGlvbiddOwoJJG9uZXJvdy0+YWN0aW9uPSAkcm93WydhY3Rpb24nXTsKCWlmKCRhY3RpZiA9PSAxKQoJewoJCSRvbmVyb3ctPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZV91c2VyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL3RydWUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSwgJHRoaXMtPkxhbmcoJ2RlbGV0ZV9yZXN1bHRfY29uZmlybScpKTsKCX0KCWVsc2UgewoJCSRvbmVyb3ctPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZV91c2VyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSksICR0aGlzLT5MYW5nKCdkZWxldGVfcmVzdWx0X2NvbmZpcm0nKSk7Cgl9Cgkkb25lcm93LT5lZGl0bGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAkcm93WydhY3Rpb24nXSwgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgJHRoaXMtPkxhbmcoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCR0aGlzLT5MYW5nKCdyZXRyaWV2ZV91c2Vyc19jb25maXJtJykpOwoJJG9uZXJvdy0+ZGVsZXRlbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGVsZXRlX3VzZXInLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSksICR0aGlzLT5MYW5nKCdkZWxldGVfcmVzdWx0X2NvbmZpcm0nKSk7Cgkkb25lcm93LT5zZWxlY3QgPSAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ3NlbFtdJywkcm93WydpZCddKTsKCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzPSAicm93MiIgOiAkcm93Y2xhc3M9ICJyb3cxIik7Cgkkcm93YXJyYXlbXT0gJG9uZXJvdzsKICAgICAgfQogIH0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Jlc3VsdHNmb3VuZHRleHQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwokc21hcnR5LT5hc3NpZ24oJ2NyZWF0ZWxpbmsnLCAKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRfY29tcHRlJywgJHJldHVybmlkLAoJCQkJICAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+TGFuZygnYWRkJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSkuCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRkX2NvbXB0ZScsICRyZXR1cm5pZCwgCgkJCQkgICR0aGlzLT5MYW5nKCdhZGRuZXdzaGVldCcpLCAKCQkJCSAgYXJyYXkoKSkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm0yc3RhcnQnLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdhZG1pbl9kYXRhX3RhYicsJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbignZm9ybTJlbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF9tYXNzZGVsZXRlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXRfbWFzc2RlbGV0ZScsJHRoaXMtPkxhbmcoJ2RlbGV0ZV9zZWxlY3RlZCcpLAoJCQkJCQkJCQkgICAgICcnLCcnLCR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlX2RlbGV0ZW11bHRpcGxlJykpKTsKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdqb3VybmFsLnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_indivs_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwpyZXF1aXJlX29uY2UoZGlybmFtZShfX2ZpbGVfXykuJy9pbmNsdWRlL3RyYXZhdXgucGhwJyk7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fZmlsZV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7CgovKiBvbiBmYWl0IHVuIGZvcm11bGFpcmUgZGUgZmlsdHJhZ2UgZGVzIHLDqXN1bHRhdHMqLwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX2luZGl2c190YWInKSk7IAovLyRzYWlzb25zbGlzdFskdGhpcy0+bGFuZygnYWxsc2Vhc29ucycpXSA9Jyc7CiR0b3VybGlzdFskdGhpcy0+TGFuZygnYWxsdG91cnMnKV0gPSAnJzsKLy8kYWxsZXF1aXBlcyA9ICAoIGlzc2V0KCAkcGFyYW1zWydhbGxlcXVpcGVzJ10gKT8kcGFyYW1zWydhbGxlcXVpcGVzJ106J25vJyk7CgokZXF1aXBlbGlzdFskdGhpcy0+TGFuZygnYWxsZXF1aXBlcycpXSA9ICcnOwokcGxheWVyc2xpc3RbJHRoaXMtPkxhbmcoJ2FsbHBsYXllcnMnKV0gPSAnJzsKJHR5cGVDb21wZXQgPSBhcnJheSgpOwokdHlwZUNvbXBldFskdGhpcy0+TGFuZygnYWxsY29tcGV0JyldID0gJyc7CiRxdWVyeSA9ICJTRUxFQ1QgKiAsIENPTkNBVF9XUygnICcsai5ub20sIGoucHJlbm9tKSBBUyBwbGF5ZXIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyBBUyBwdHMgICwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgQVMgaiBXSEVSRSBwdHMubGljZW5jZSAgPSBqLmxpY2VuY2UgT1JERVIgQlkgai5ub20gQVNDLCBwdHMubnVtam91cm4gQVNDIjsvLyIiOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkc2Fpc29uX2NvdXJhbnRlKSk7CndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICB7CiAgICAkdG91cmxpc3RbJHJvd1snbnVtam91cm4nXV0gPSAkcm93WydudW1qb3VybiddOwogICAgJHBsYXllcnNsaXN0WyRyb3dbJ3BsYXllciddXSA9ICRyb3dbJ2xpY2VuY2UnXTsKLy8kc2Fpc29uc2xpc3RbJHJvd1snc2Fpc29uJ11dID0gJHJvd1snc2Fpc29uJ107CiAgICAvLyRlcXVpcGVsaXN0WyRyb3dbJ2VxdWlwZSddXSA9ICRyb3dbJ2VxdWlwZSddOwogICAgJHR5cGVDb21wZXRbJHJvd1snY29kZWNoYW1wJ11dID0gJHJvd1snY29kZWNoYW1wJ107CiAgfQoKaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdGZpbHRlciddKSApCiAgewogICAgCWlmKCBpc3NldCggJHBhcmFtc1sndG91cmxpc3QnXSkgKQogICAgICAJewoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3RvdXJDaG9pc2knLCAkcGFyYW1zWyd0b3VybGlzdCddKTsKICAgICAgCX0KLyoKCWlmKCBpc3NldCggJHBhcmFtc1snc2Fpc29uc2xpc3QnXSkgKQogICAgICAJewoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3NhaXNvbkNob2lzaWUnLCAkcGFyYW1zWydzYWlzb25zbGlzdCddKTsKICAgICAgCX0KKi8KCWlmKCBpc3NldCggJHBhcmFtc1sncGxheWVyc2xpc3QnXSkgKQogICAgICAJewoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BsYXllckNob2lzaScsICRwYXJhbXNbJ3BsYXllcnNsaXN0J10pOwogICAgICAJfQogICAgLyppZiggaXNzZXQoICRwYXJhbXNbJ2VxdWlwZWxpc3QnXSkpCgl7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSggJ2VxdWlwZUNob2lzaWUnLCAkcGFyYW1zWydlcXVpcGVsaXN0J10pOwoJfQoJKi8KICAgIGlmKCBpc3NldCggJHBhcmFtc1sndHlwZUNvbXBldCddKSApCgl7IAoJJHRoaXMtPlNldFByZWZlcmVuY2UgKCAnY29tcGV0Q2hvaXNpZScsICRwYXJhbXNbJ3R5cGVDb21wZXQnXSk7Cgl9Cn0KJGN1cnRvdXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ3RvdXJDaG9pc2knICk7Ci8vJGN1cnNlYXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25DaG9pc2llJyk7CiRjdXJwbGF5ZXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ3BsYXllckNob2lzaScpOwokY3VyZXF1aXBlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoICdlcXVpcGVDaG9pc2llJyApOwokY3VyQ29tcGV0ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoICdjb21wZXRDaG9pc2llJyk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0X3RvdXInLAoJCSR0aGlzLT5MYW5nKCd0b3VyJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3RvdXInLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwndG91cmxpc3QnLCR0b3VybGlzdCwtMSwkY3VydG91cikpOwovKgokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3NhaXNvbicsCgkJCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3NhaXNvbnNsaXN0Jywkc2Fpc29uc2xpc3QsLTEsJGN1cnNlYXNvbikpOwoqLwovKgkJJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZXF1aXBlJywKCQkJCSR0aGlzLT5MYW5nKCdlcXVpcGUnKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2VxdWlwZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdlcXVpcGVsaXN0JywkZXF1aXBlbGlzdCwtMSwkY3VyZXF1aXBlKSk7CiovCQkKCQkkc21hcnR5LT5hc3NpZ24oJ2lucHV0X2NvbXBldCcsCgkJCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3R5cGVDb21wZXQnLCR0eXBlQ29tcGV0LC0xLCRjdXJDb21wZXQpKTsKCQkJCQoJCSRzbWFydHktPmFzc2lnbignaW5wdXRfcGxheWVyJywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwncGxheWVyc2xpc3QnLCRwbGF5ZXJzbGlzdCwtMSwkY3VycGxheWVyKSk7CgkJCiRzbWFydHktPmFzc2lnbignc3VibWl0ZmlsdGVyJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXRmaWx0ZXInLCR0aGlzLT5MYW5nKCdmaWx0cmVzJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCgokc21hcnR5LT5hc3NpZ24oJ2lkJywgJHRoaXMtPkxhbmcoJ2lkJykpOwokc21hcnR5LT5hc3NpZ24oJ2pvdWV1cicsICdKb3VldXInKTsKJHNtYXJ0eS0+YXNzaWduKCd2aWN0b2lyZScsICdWaWN0b2lyZScpOwokc21hcnR5LT5hc3NpZ24oJ2FkdmVyc2FpcmUnLCAnQWR2ZXJzYWlyZScpOwokc21hcnR5LT5hc3NpZ24oJ3BvaW50cycsICdQb2ludHMnKTsKCiRyZXN1bHQ9IGFycmF5ICgpOwokcXVlcnkgPSAiU0VMRUNUIENPTkNBVF9XUygnICcsIGoubm9tLCBqLnByZW5vbSkgQVMgam91ZXVyLCBwdHMuaWQsIHB0cy52ZCwgcHRzLm51bWpvdXJuLHB0cy5kYXRlX2V2ZW50LCBwdHMuYWR2bm9tcHJlLHB0cy5wb2ludHJlcywgcHRzLmFkdmNsYW9mICBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIEFTIHB0cyAsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogV0hFUkUgcHRzLmxpY2VuY2UgPSBqLmxpY2VuY2UgQU5EIHB0cy5zYWlzb24gPSA/IjsKJHBhcm1zWydzYWlzb24nXSA9ICRzYWlzb25fY291cmFudGU7CmlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXRmaWx0ZXInXSApKXsKCWlmICgkY3VydG91ciAhPScnKQoJewoJCSRxdWVyeSAuPSIgQU5EIHB0cy5udW1qb3VybiA9ID8gIjsKCQkkcGFybXNbJ251bWpvdXJuJ10gPSAkY3VydG91cjsKCQkKCX0KCS8qCgllbHNlIHsKCQkkcXVlcnkuPSIgQU5EIHB0cy5udW1qb3VybiA+PSAwICI7CgkJJHBhcm1zID0nJzsKCX0KCSovCglpZiAoJGN1cnBsYXllciAhPScnKQoJewoJCSRxdWVyeSAuPSIgQU5EIHB0cy5saWNlbmNlID0gPyI7CgkJJHBhcm1zWydsaWNlbmNlJ10gPSAkY3VycGxheWVyOwoJCQoJfQoJLyoKCWVsc2UgewoJCSRxdWVyeS49IiBBTkQgcHRzLmxpY2VuY2UgPj0gMCAiOwoJCSRwYXJtcyA9Jyc7Cgl9CgkqLwppZiAoJGN1ckNvbXBldCAhPScnKQp7CgkkcXVlcnkuPSIgQU5EIHB0cy5jb2RlY2hhbXAgPSA/IjsKCSRwYXJtc1snY29kZWNoYW1wJ10gPSAkY3VyQ29tcGV0Owp9CgoKfQokZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnksJHBhcm1zKTsKLyoKZWxzZSB7CgkkcXVlcnkgLj0iIE9SREVSIEJZIHB0cy5udW1qb3VybiBERVNDIjsKCSRkYnJlc3VsdD0gJGRiLT5FeGVjdXRlKCRxdWVyeSwkcGFybXMpOwp9CiovCi8vZWNobyAkcXVlcnk7CmlmICghJGRicmVzdWx0KQp7CgoJCWRpZSgnRkFUQUwgU1FMIEVSUk9SOiAnLiRkYi0+RXJyb3JNc2coKS4nPGJyLz5RVUVSWTI6ICcuJGRiLT5zcWwpOwoKfQoKJHJvd2FycmF5PSBhcnJheSAoKTsKaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIHsKCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCSRvbmVyb3ctPmlkPSAkcm93WydpZCddOwoJJG9uZXJvdy0+bnVtam91cm49ICRyb3dbJ251bWpvdXJuJ107Cgkkb25lcm93LT5qb3VldXI9ICRyb3dbJ2pvdWV1ciddOwoJJG9uZXJvdy0+dmQ9ICRyb3dbJ3ZkJ107IAoJJG9uZXJvdy0+YWR2bm9tcHJlPSAkcm93WydhZHZub21wcmUnXTsKLy8JJG9uZXJvdy0+YWR2ZXJzYWlyZT0gJHJvd1snYWR2ZXJzYWlyZSddOwoJJG9uZXJvdy0+cG9pbnRyZXM9ICRyb3dbJ3BvaW50cmVzJ107CgkvLyRvbmVyb3ctPmVxdWlwZT0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnY3JlYXRlX25ld191c2VyJywgJHJldHVybmlkLCAkcm93WydlcXVpcGUnXSwgJHJvdyk7Cgkkb25lcm93LT5lZGl0bGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF9yZXN1bHRzJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgJHRoaXMtPkxhbmcoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSkpOwoJJG9uZXJvdy0+ZGVsZXRlbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGVsZXRlX3Jlc3VsdCcsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSwgJHRoaXMtPkxhbmcoJ2RlbGV0ZV91c2VyX2NvbmZpcm0nKSk7CgkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIH0KICB9Ci8vZGV1eGnDqG1tZSByZXF1ZXRlIHBvdXIgY29tcHRlciBsZXMgcG9pbnRzIGRlIGNldHRlIGpvdXJuw6llCiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdzaGVldHNmb3VuZHRleHQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwovKgokc21hcnR5LT5hc3NpZ24oJ2NyZWF0ZWxpbmsnLCAKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRfaW5kaXZzJywgJHJldHVybmlkLAoJCQkJICAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+TGFuZygnYWRkbmV3c2hlZXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpKS4KCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRfaW5kaXZzJywgJHJldHVybmlkLCAKCQkJCSAgJHRoaXMtPkxhbmcoJ2FkZG5ld3NoZWV0JyksIAoJCQkJICBhcnJheSgpKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3JldHJpZXZlX2FsbF9wYXJ0aWVzJywgCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfYWxsX3BhcnRpZXMnLCAkcmV0dXJuaWQsCgkJCQkkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ltcG9ydC5naWYnLCAkdGhpcy0+TGFuZygnaW1wb3J0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSkuCgkJCQkJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX2FsbF9wYXJ0aWVzJywgJHJldHVybmlkLCAKCQkJCQkJCQkgICR0aGlzLT5MYW5nKCdpbXBvcnQnKSwgCgkJCQkJCQkJICBhcnJheSgpKSk7CiovCiRzbWFydHktPmFzc2lnbignZm9ybTJzdGFydCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ21hc3NfYWN0aW9uJywkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtMmVuZCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRhcnRpY2xlcyA9IGFycmF5KCJEw6lzYWN0aXZlciI9PiJ1bmFibGUiLCJSw6ljdXDDqXJlciBzaXR1YXRpb24gbWVuc3VlbGxlIj0+InNpdHVhdGlvbiIpOwokc21hcnR5LT5hc3NpZ24oJ2FjdGlvbmRlbWFzc2UnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnYWN0aW9uZGVtYXNzZScsJGFydGljbGVzKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0X21hc3NhY3Rpb24nLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdF9tYXNzYWN0aW9uJywkdGhpcy0+TGFuZygnYXBwbHlfdG9fc2VsZWN0aW9uJyksJycsJycsJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmVfYWN0aW9ubXVsdGlwbGUnKSkpOwoKJHNtYXJ0eS0+YXNzaWduKCdyZXRvdXInLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnYWRtaW5faW5kaXZzX3RhYicsICRyZXR1cm5pZCwkY29udGVudHMgPSdSZXRvdXIgw6AgbGEgbGlzdGUnKSk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnaW5kaXZzY29yZXMudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_joueurs_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fZmlsZV9fKS4nL2luY2x1ZGUvdHJhdmF1eC5waHAnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwoKJHNtYXJ0eS0+YXNzaWduKCdpZCcsICR0aGlzLT5MYW5nKCdpZCcpKTsKJHNtYXJ0eS0+YXNzaWduKCd1c2VybmFtZScsICdKb3VldXInKTsKJHNtYXJ0eS0+YXNzaWduKCdwb2ludHMnLCAnUG9pbnRzJyk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CiRtb2lzX2NvdXJhbnQgPSBkYXRlKCduJyk7CiRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKLy8kbW9udGggPSBtb2lzX2ZyYW5jYWlzKCIkbW9pc19jb3VyYW50Iik7Ci8vZWNobyAibGUgbW9pcyBlbiBmcmFuw6dhaXMgOiAiLiRtb250aDsKLy8kc21hcnR5LT5hc3NpZ24oJ21vaXMtZW4tZnJhbmNhaXMnLCAiJG1vbnRoIik7CiRzaXRfY291cmFudGUgPSAnSnVpbiAyMDE0JzsKJHNtYXJ0eS0+YXNzaWduKCdzaXRfY291cmFudGUnLCAiJHNpdF9jb3VyYW50ZSIpOwokc21hcnR5LT5hc3NpZ24oJ2Rpc3BsYXlfdW5hYmxlX3BsYXllcnMnLCAKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsJ2Rpc3BsYXlfdW5hYmxlX3BsYXllcnMnLCAkcmV0dXJuaWQsICdsaXN0ZSBkZXMgam91ZXVycyBpbmFjdGlmcycpKTsKCgokcmVzdWx0PSBhcnJheSAoKTsKLy9TRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogT04gai5saWNlbmNlID0gcmVjLmxpY2VuY2UgIE9SREVSIEJZIGouaWQgQVNDCiRxdWVyeT0gIlNFTEVDVCBpZCwgQ09OQ0FUX1dTKCcgJyxub20sIHByZW5vbSkgQVMgam91ZXVyLCBsaWNlbmNlLCBhY3RpZiwgc2V4ZSwgYmlydGhkYXkgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSBhY3RpZj0gJzEnICBPUkRFUiBCWSBqb3VldXIgQVNDIjsKaWYoJHRyYXZhdXg9PSd0cnVlJyl7ZWNobyAkcXVlcnk7fQokZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwokcm93Y2xhc3M9ICdyb3cxJzsKJHJvd2FycmF5PSBhcnJheSAoKTsKaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIHsKCSRhY3RpZiA9ICRyb3dbJ2FjdGlmJ107Cgkkb25lcm93PSBuZXcgU3RkQ2xhc3MoKTsKCSRvbmVyb3ctPnJvd2NsYXNzPSAkcm93Y2xhc3M7Cgkkb25lcm93LT5pZD0gJHJvd1snaWQnXTsKCSRvbmVyb3ctPmxpY2VuY2U9ICRyb3dbJ2xpY2VuY2UnXTsKCSRvbmVyb3ctPmpvdWV1cj0gJHJvd1snam91ZXVyJ107Cgkkb25lcm93LT5hY3RpZj0gJHJvd1snYWN0aWYnXTsKCSRvbmVyb3ctPnNleGU9ICRyb3dbJ3NleGUnXTsKCSRvbmVyb3ctPmJpcnRoZGF5PSAkcm93WydiaXJ0aGRheSddOwoJJG9uZXJvdy0+dmlld19jb250YWN0cz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCd2aWV3X2NvbnRhY3RzJywgJHJldHVybmlkLCR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vY29udGFjdHMuZ2lmJywgJHRoaXMtPkxhbmcoJ3ZpZXdfY29udGFjdHMnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7CgkvLyRvbmVyb3ctPmNyZWF0ZV9jb250YWN0cz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCd2aWV3X2NvbnRhY3RzJywgJHJldHVybmlkLCR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsICR0aGlzLT5MYW5nKCdhZGRfY29udGFjdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pKTsKCS8vJG9uZXJvdy0+Y3JlYXRlX2NvbnRhY3Q9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnY3JlYXRlX2NvbnRhY3QnLCAkcmV0dXJuaWQsJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJHRoaXMtPkxhbmcoJ3VuYWJsZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pKTsKCS8vJG9uZXJvdy0+cHJlbm9tPSAkcm93WydwcmVub20nXTsKCS8vJG9uZXJvdy0+YWN0aXZlPSAoJHJvd1snYWN0aXZlJ10gPT0gMSkgPyAkdGhpcy0+TGFuZygneWVzJykgOiAnJzsKCSRvbmVyb3ctPmRvZWRpdD0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRkX2pvdWV1cicsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJaWYoJHJvd1snYWN0aWYnXSA9PScxJyl7CgkJJG9uZXJvdy0+ZWRpdGxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3VuYWJsZV9wbGF5ZXInLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCAkdGhpcy0+TGFuZygndW5hYmxlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJfQoJZWxzZSB7CgkJJG9uZXJvdy0+ZWRpdGxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VuYWJsZV9wbGF5ZXInLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZmFsc2UuZ2lmJywgJHRoaXMtPkxhbmcoJ2VuYWJsZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pKTsKCX0KCS8vJG9uZXJvdy0+ZWRpdGxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3VuYWJsZV9wbGF5ZXInLCAkcmV0dXJuaWQsICdEw6lzYWN0aXZlcicsYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pKTsKCSRvbmVyb3ctPnNpdG1lbnNsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9zaXRfbWVucycsICRyZXR1cm5pZCwgJ1NpdHVhdGlvbiBtZW5zdWVsbGUnLCBhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJJG9uZXJvdy0+Z2V0cGFydGllc2xpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3BhcnRpZXMnLCAkcmV0dXJuaWQsICdQYXJ0aWVzIGRpc3B1dMOpZXMnLCBhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJJG9uZXJvdy0+Z2V0cGFydGllc3NwaWQ9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3BhcnRpZXNfc3BpZCcsICRyZXR1cm5pZCwgJ1BhcnRpZXMgU1BJRCcsIGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgkkb25lcm93LT5kZWxldGVsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWxldGVfam91ZXVyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pLCAkdGhpcy0+TGFuZygnZGVsZXRlX3Jlc3VsdF9jb25maXJtJykpOwoJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCSRyb3dhcnJheVtdPSAkb25lcm93OwogICAgICB9CiAgfQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7CiRzbWFydHktPmFzc2lnbigncmV0cmlldmVfdXNlcnMnLCAKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV91c2VycycsICRyZXR1cm5pZCwkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2Rvd25sb2FkLmdpZicsICR0aGlzLT5MYW5nKCdyZXRyaWV2ZV91c2VycycpLCAnJywgJycsICdzeXN0ZW1pY29uJykpLgokdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV91c2VycycsICRyZXR1cm5pZCwgCgkJICAkdGhpcy0+TGFuZygncmV0cmlldmVfdXNlcnMnKSwgCgkJICBhcnJheSgpKSk7CiRzbWFydHktPmFzc2lnbignY3JlYXRlbGluaycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkZF9qb3VldXInLCAkcmV0dXJuaWQsCgkJCQkgICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsICR0aGlzLT5MYW5nKCdhZGRfdXNlcicpLCAnJywgJycsICdzeXN0ZW1pY29uJykpLgoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkZF9qb3VldXInLCAkcmV0dXJuaWQsIAoJCQkJICAkdGhpcy0+TGFuZygnYWRkX3VzZXInKSwgCgkJCQkgIGFycmF5KCkpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtMnN0YXJ0JywKCQkkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnbWFzc19hY3Rpb24nLCRyZXR1cm5pZCkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm0yZW5kJywKCQkkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKJGFydGljbGVzID0gYXJyYXkoIkTDqXNhY3RpdmVyIj0+InVuYWJsZSIsIk1ldHRyZSDDoCBtYXNjdWxpbiI9PiJtYXNjdWxpbiIsICJNZXR0cmUgw6AgRsOpbWluaW4iPT4iZmVtaW5pbiIpOwokc21hcnR5LT5hc3NpZ24oJ2FjdGlvbmRlbWFzc2UnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnYWN0aW9uZGVtYXNzZScsJGFydGljbGVzKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0X21hc3NhY3Rpb24nLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdF9tYXNzYWN0aW9uJywkdGhpcy0+TGFuZygnYXBwbHlfdG9fc2VsZWN0aW9uJyksJycsJycsJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmVfYWN0aW9ubXVsdGlwbGUnKSkpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdqb3VldXJzLnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.admin_poules_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS90cmF2YXV4LnBocCcpOwoKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKLyogb24gZmFpdCB1biBmb3JtdWxhaXJlIGRlIGZpbHRyYWdlIGRlcyByw6lzdWx0YXRzKi8KLyoqLwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX3BvdWxlc190YWInKSk7ICAKLy8kdG91cmxpc3QgPSBhcnJheSgwID0+IjAiLDEgPT4iMSIsMiA9PiIyIiwzID0+IjMiLDQgPT4nQWxsJyk7Ci8vJHR5cGVDb21wZXRpdGlvbiA9IGFycmF5KCk7CiRwb3VsZXNsaXN0ID0gYXJyYXkoKTsKJHBvdWxlc2xpc3RbJHRoaXMtPkxhbmcoJ2FsbHBvdWxlcycpXSA9ICcnOwovLyRhbGxlcXVpcGVzID0gICggaXNzZXQoICRwYXJhbXNbJ2FsbGVxdWlwZXMnXSApPyRwYXJhbXNbJ2FsbGVxdWlwZXMnXTonbm8nKTsKCi8vJGVxdWlwZWxpc3RbJHRoaXMtPkxhbmcoJ2FsbGVxdWlwZXMnKV0gPSAnJzsKCiRxdWVyeTEgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcyBXSEVSRSBzYWlzb24gPSA/IjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeTEsYXJyYXkoJHNhaXNvbikpOwovL2VjaG8gJHF1ZXJ5MTsKd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQogIHsKICAgICRwb3VsZXNsaXN0WyRyb3dbJ2xpYmRpdmlzaW9uJ11dID0gJHJvd1snaWRwb3VsZSddOwogICAgLy8kZXF1aXBlbGlzdFskcm93WydlcXVpcGUnXV0gPSAkcm93WydlcXVpcGUnXTsKICAgIC8vJHR5cGVDb21wZXRpdGlvblskcm93WyduYW1lJ11dID0gJHJvd1sndHlwZV9jb21wZXQnXTsKICB9CgppZiggaXNzZXQoJHBhcmFtc1snc3VibWl0ZmlsdGVyJ10pICkKICB7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ3BvdWxlc2xpc3QnXSkgKQogICAgICB7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgncG91bGVDaG9pc2knLCAkcGFyYW1zWydwb3VsZXNsaXN0J10pOwogICAgICB9Cn0KJGN1cnBvdWxlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoICdwb3VsZUNob2lzaScgKTsKCiRzbWFydHktPmFzc2lnbignaW5wdXRfY29tcGV0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3R5cGVDb21wZXQnLCR0eXBlQ29tcGV0aXRpb24sLTEsJGN1cmNvbXBldCkpOwoKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdG91cicsCgkJJHRoaXMtPkxhbmcoJ3RvdXInKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfdG91cicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdwb3VsZXNsaXN0JywkcG91bGVzbGlzdCwtMSwkY3VycG91bGUpKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZXF1aXBlJywKCQkkdGhpcy0+TGFuZygnZXF1aXBlJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2VxdWlwZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdlcXVpcGVsaXN0JywkZXF1aXBlbGlzdCwtMSwkY3VyZXF1aXBlKSk7CiRzbWFydHktPmFzc2lnbignc3VibWl0ZmlsdGVyJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXRmaWx0ZXInLCR0aGlzLT5MYW5nKCdmaWx0cmVzJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCgoKCiRyZXN1bHQ9IGFycmF5ICgpOwokcXVlcnkyID0gIlNFTEVDVCAqLHJlbi5hZmZpY2hlLCByZW4uaWQsIGVxLmxpYmVxdWlwZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBBUyByZW4sICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIEFTIGVxIFdIRVJFIGVxLmlkcG91bGUgPSByZW4uaWRwb3VsZSAgQU5EIHJlbi5zYWlzb24gPSBlcS5zYWlzb24gQU5EIGVxLnNhaXNvbiA9ID8iOwokcGFybXNbJ3NhaXNvbl9lbl9jb3VycyddID0gJHNhaXNvbjsKCmlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXRmaWx0ZXInXSApKXsKCQoJaWYgKCRjdXJwb3VsZSAhPScnKQoJewoJCSRxdWVyeTIgLj0iIEFORCBlcS5pZHBvdWxlID0gPyI7CgkJJHBhcm1zWydpZHBvdWxlJ10gPSAkY3VycG91bGU7CgkJCgl9CgoKfQokZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLCRwYXJtcyk7Ci8vZWNobyAkcXVlcnkyOwoKJHJvd2FycmF5PSBhcnJheSAoKTsKaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIHsKCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCSRvbmVyb3ctPmlkPSAkcm93WydpZCddOwoJJGVxdWIgPSAkcm93WydlcXViJ107CgkkZXF1YSA9ICRyb3dbJ2VxdWEnXTsKCSRmcmllbmRseW5hbWUgPSAkcm93WydmcmllbmRseW5hbWUnXTsKCSRsaWJlcXVpcGUgPSAkcm93WydsaWJlcXVpcGUnXTsKCSR1cGxvYWRlZCA9ICRyb3dbJ3VwbG9hZGVkJ107CgkkYWZmaWNoZSA9ICRyb3dbJ2FmZmljaGUnXTsJCgkKCQoJLy8kb25lcm93LT5lcXVpcGU9ICRyb3dbJ2VxdWlwZSddOwoJJG9uZXJvdy0+bGliZWxsZT0gJHRoaXMtPmNyZWF0ZUxpbmsoJGlkLCAndmlld3RlYW1yZXN1bHQnLCAkcmV0dXJuaWQsICRyb3dbJ2xpYmVsbGUnXSxhcnJheSgnY2xlJz0+JHJvd1snbGllbiddKSkgOwoJaWYoaXNzZXQoJGZyaWVuZGx5bmFtZSkgJiYgJGZyaWVuZGx5bmFtZSAhPScnKQoJewoJCWlmICgkbGliZXF1aXBlID09ICRlcXVhKQoJCXsKCQkJJG9uZXJvdy0+ZXF1YT0gJHJvd1snZnJpZW5kbHluYW1lJ107CgkJfQoJCWVsc2V7CgkJCSRvbmVyb3ctPmVxdWE9ICRyb3dbJ2VxdWEnXTsKCQl9CgkJCgl9CgllbHNlewoJCSRvbmVyb3ctPmVxdWE9ICRyb3dbJ2VxdWEnXTsKCX0KCSRvbmVyb3ctPnNjb3JlYT0gJHJvd1snc2NvcmVhJ107Cgkkb25lcm93LT5zY29yZWI9ICRyb3dbJ3Njb3JlYiddOwoJJG9uZXJvdy0+bGliZXF1aXBlPSAkcm93WydsaWJlcXVpcGUnXTsKCWlmKGlzc2V0KCRmcmllbmRseW5hbWUpICYmICRmcmllbmRseW5hbWUgIT0nJykKCXsKCQlpZiAoJGxpYmVxdWlwZSA9PSAkZXF1YikKCQl7CgkJCSRvbmVyb3ctPmVxdWI9ICRyb3dbJ2ZyaWVuZGx5bmFtZSddOwoJCX0KCQllbHNlewoJCQkkb25lcm93LT5lcXViPSAkcm93WydlcXViJ107CgkJfQoJCQoJfQoJZWxzZXsKCQkkb25lcm93LT5lcXViPSAkcm93WydlcXViJ107Cgl9CgkvKgkKCSRvbmVyb3ctPmNvbW11bmU9ICRyb3dbJ2NvbW11bmUnXTsKCSRvbmVyb3ctPmVtYWlsPSAkcm93WydlbWFpbCddOwoJJG9uZXJvdy0+dHJhbmNoZT0gJHJvd1sndHJhbmNoZSddOwoJJG9uZXJvdy0+YWN0aXZlPSAoJHJvd1snYWN0aXZlJ10gPT0gMSkgPyAkdGhpcy0+TGFuZygneWVzJykgOiAnJzsKCSovCgkvLyRvbmVyb3ctPmVxdWlwZT0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnY3JlYXRlX25ld191c2VyJywgJHJldHVybmlkLCAkcm93WydlcXVpcGUnXSwgJHJvdyk7CglpZigkdXBsb2FkZWQgPT0gMCl7CgkJJG9uZXJvdy0+cmV0cmlldmVfcG91bGVfcmVuY29udHJlcz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfZGV0YWlsc19yZW5jb250cmVzJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ltcG9ydC5naWYnLCAkdGhpcy0+TGFuZygndXBsb2FkX3Jlc3VsdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdpZHBvdWxlJz0+JHJvd1snaWRwb3VsZSddLCAnaWRkaXYnPT4kcm93WydpZGRpdiddLCAnbGllbic9PiRyb3dbJ2xpZW4nXSkpOwoJfQoJZWxzZQoJewoJCSRvbmVyb3ctPnJldHJpZXZlX3BvdWxlX3JlbmNvbnRyZXM9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX2RldGFpbF9yZW5jb250cmVzJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCd1cGxvYWRfcmVzdWx0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2lkcG91bGUnPT4kcm93WydpZHBvdWxlJ10sICdpZGRpdic9PiRyb3dbJ2lkZGl2J10pKTsKCX0KCWlmKCRhZmZpY2hlID09MSl7CgkJJG9uZXJvdy0+ZGlzcGxheT0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZG9fbm90X2Rpc3BsYXknLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCAkdGhpcy0+TGFuZygnZG9fbm90X2Rpc3BsYXknKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSkpOwoJfQoJZWxzZXsKCQkkb25lcm93LT5kaXNwbGF5PSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkaXNwbGF5X29uX2Zyb250ZW5kJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCdkaXNwbGF5X29uX2Zyb250ZW5kJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pKTsKCX0KCS8vJG9uZXJvdy0+YWZmaWNoYWdlID0gCgkkb25lcm93LT5zZWxlY3QgPSAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsJ3NlbFtdJywkcm93WydpZCddKTsKCSRvbmVyb3ctPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZV90ZWFtX3Jlc3VsdCcsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSwgJHRoaXMtPkxhbmcoJ2RlbGV0ZV9yZXN1bHRfY29uZmlybScpKTsKCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzPSAicm93MiIgOiAkcm93Y2xhc3M9ICJyb3cxIik7Cgkkcm93YXJyYXlbXT0gJG9uZXJvdzsKICAgICAgfQogIH0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3NoZWV0c2ZvdW5kdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7CiRzbWFydHktPmFzc2lnbignY3JlYXRlbGluaycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX2FsbF9wb3VsZV9yZW5jb250cmVzJywgJHJldHVybmlkLAoJCQkJICAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ltcG9ydC5naWYnLCAkdGhpcy0+TGFuZygnZG93bmxvYWRfYWxsX3BvdWxlX3Jlc3VsdHMnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpKS4KCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9hbGxfcG91bGVfcmVuY29udHJlcycsICRyZXR1cm5pZCwgCgkJCQkgICR0aGlzLT5MYW5nKCdkb3dubG9hZF9hbGxfcG91bGVfcmVzdWx0cycpLCAKCQkJCSAgYXJyYXkoKSkpOwoJCQkJJHNtYXJ0eS0+YXNzaWduKCdmb3JtMnN0YXJ0JywKCQkJCQkJJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ21hc3NfYWN0aW9uJywkcmV0dXJuaWQpKTsKCQkJCSRzbWFydHktPmFzc2lnbignZm9ybTJlbmQnLAoJCQkJCQkkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCQkJCSRhcnRpY2xlcyA9IGFycmF5KCJBZmZpY2hlciBzdXIgbGUgc2l0ZSI9PiJkaXNwbGF5X29uX2Zyb250ZW5kIiwiTmUgcGx1cyBhZmZpY2hlciBzdXIgbGUgc2l0ZSI9PiJkb19ub3RfZGlzcGxheSIsIlN1cHByaW1lciI9PiJkZWxldGVfdGVhbV9yZXN1bHQiKTsKCQkJCSRzbWFydHktPmFzc2lnbignYWN0aW9uZGVtYXNzZScsCgkJCQkJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnYWN0aW9uZGVtYXNzZScsJGFydGljbGVzKSk7CgkJCQkkc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF9tYXNzYWN0aW9uJywKCQkJCQkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0X21hc3NhY3Rpb24nLCR0aGlzLT5MYW5nKCdhcHBseV90b19zZWxlY3Rpb24nKSwnJywnJywkdGhpcy0+TGFuZygnYXJleW91c3VyZV9hY3Rpb25tdWx0aXBsZScpKSk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgncG91bGVzUmVuY29udHJlcy50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.admin_situation_mensuelle_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKZ2xvYmFsICR0aGVtZU9iamVjdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsJ1BhcmFtZXRlcnMnKTsKJG1vaXNfY291cmFudCA9IGRhdGUoJ24nKTsvL01vaXMgYXUgZm9ybWF0IDEsIDIsIDMgZXRjLi4uLgokbW9pc19mcmFuY2FpcyA9IGFycmF5KCdKYW52aWVyJywgJ0bDqXZyaWVyJywnTWFycycsICdBdnJpbCcsICdNYWknLCAnSnVpbicsICdKdWlsbGV0JywnQW/Du3QnLCAnU2VwdGVtYnJlJywgJ09jdG9icmUnLCdOb3ZlbWJyZScsJ0TDqWNlbWJyZScpOwokbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CiRtb2lzX3JlZWwgPSAkbW9pc19jb3VyYW50IC0gMTsKJG1vaXNfc20gPSAkbW9pc19mcmFuY2Fpc1siJG1vaXNfcmVlbCJdOwokYW5uZWVfY291cmFudGUgPSBkYXRlKCdZJyk7Ci8vZWNobyAibCdhbm7DqWUgY291cmFudGUgZXN0IDogIi4kYW5uZWVfY291cmFudGU7CgovKiBvbiBmYWl0IHVuIGZvcm11bGFpcmUgZGUgZmlsdHJhZ2UgZGVzIHLDqXN1bHRhdHMqLwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX3NpdHVhdGlvbl9tZW5zdWVsbGVfdGFiJykpOyAKJHNhaXNvbnNsaXN0WyR0aGlzLT5sYW5nKCdhbGxzZWFzb25zJyldID0nJzsKJG1vbnRoc2xpc3RbJHRoaXMtPkxhbmcoJ2FsbG1vbnRocycpXSA9ICcnOwovLyRtb250aHNsaXN0ID0gYXJyYXkoIlRvdXMgbGVzIG1vaXMiPT4iIiwiSnVpbGxldCI9PiI3IiwgIkFvw7t0Ij0+IjgiKTsKJHllYXJzbGlzdCA9IGFycmF5KCIyMDE0Ij0+IjIwMTQiKTsKJHRvdXJsaXN0WyR0aGlzLT5MYW5nKCdhbGx0b3VycycpXSA9ICcnOwovLyRhbGxlcXVpcGVzID0gICggaXNzZXQoICRwYXJhbXNbJ2FsbGVxdWlwZXMnXSApPyRwYXJhbXNbJ2FsbGVxdWlwZXMnXTonbm8nKTsKCiRlcXVpcGVsaXN0WyR0aGlzLT5MYW5nKCdhbGxlcXVpcGVzJyldID0gJyc7CiRwbGF5ZXJzbGlzdFskdGhpcy0+TGFuZygnYWxscGxheWVycycpXSA9ICcnOwokdHlwZUNvbXBldCA9IGFycmF5KCk7CiR0eXBlQ29tcGV0WyR0aGlzLT5MYW5nKCdhbGxjb21wZXQnKV0gPSAnJzsKJHF1ZXJ5ID0gIlNFTEVDVCAqICxqLmxpY2VuY2UsIENPTkNBVF9XUygnICcsai5ub20sIGoucHJlbm9tKSBBUyBwbGF5ZXIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2l0X21lbnMgQVMgcHRzICAsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogV0hFUkUgcHRzLmxpY2VuY2UgID0gai5saWNlbmNlIE9SREVSIEJZIGoubm9tIEFTQyI7Ly8iIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICB7CiAgICAvLyR0b3VybGlzdFskcm93WydudW1qb3VybiddXSA9ICRyb3dbJ251bWpvdXJuJ107CiAgICAkcGxheWVyc2xpc3RbJHJvd1sncGxheWVyJ11dID0gJHJvd1snbGljZW5jZSddOwokbW9udGhzbGlzdFskcm93Wydtb2lzJ11dID0gJHJvd1snbW9pcyddOwogICAgLy8kZXF1aXBlbGlzdFskcm93WydlcXVpcGUnXV0gPSAkcm93WydlcXVpcGUnXTsKICAgIC8vJHR5cGVDb21wZXRbJHJvd1snY29kZWNoYW1wJ11dID0gJHJvd1snY29kZWNoYW1wJ107CiAgfQoKaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdGZpbHRlciddKSApCiAgewogICAgCWlmKCBpc3NldCggJHBhcmFtc1snbW9udGhzbGlzdCddKSApCiAgICAgIAl7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbW9pc0Nob2lzaScsICRwYXJhbXNbJ21vbnRoc2xpc3QnXSk7CiAgICAgIAl9CglpZiggaXNzZXQoICRwYXJhbXNbJ3BsYXllcnNsaXN0J10pICkKICAgICAgCXsKCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwbGF5ZXJDaG9pc2knLCAkcGFyYW1zWydwbGF5ZXJzbGlzdCddKTsKICAgICAgCX0KfQokY3VybW9udGggPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbW9pc0Nob2lzaScpOwokY3VydG91ciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCAndG91ckNob2lzaScgKTsKJGN1cnNlYXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25DaG9pc2llJyk7CiRjdXJwbGF5ZXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ3BsYXllckNob2lzaScpOwokY3VyZXF1aXBlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoICdlcXVpcGVDaG9pc2llJyApOwokY3VyQ29tcGV0ID0gJHRoaXMtPkdldFByZWZlcmVuY2UoICdjb21wZXRDaG9pc2llJyk7CiRzbWFydHktPmFzc2lnbigncHJvbXB0X3RvdXInLAoJCSR0aGlzLT5MYW5nKCd0b3VyJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3RvdXInLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwndG91cmxpc3QnLCR0b3VybGlzdCwtMSwkY3VydG91cikpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X21vbnRoJywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnbW9udGhzbGlzdCcsJG1vbnRoc2xpc3QsLTEsJGN1cm1vbnRoKSk7CgkJJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZXF1aXBlJywKCQkJCSR0aGlzLT5MYW5nKCdlcXVpcGUnKSk7Ci8qCiRzbWFydHktPmFzc2lnbignaW5wdXRfZXF1aXBlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2VxdWlwZWxpc3QnLCRlcXVpcGVsaXN0LC0xLCRjdXJlcXVpcGUpKTsKKi8JCQoJCSRzbWFydHktPmFzc2lnbignaW5wdXRfY29tcGV0JywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwndHlwZUNvbXBldCcsJHR5cGVDb21wZXQsLTEsJGN1ckNvbXBldCkpOwoJCQkJCgkJJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9wbGF5ZXInLAoJCQkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdwbGF5ZXJzbGlzdCcsJHBsYXllcnNsaXN0LC0xLCRjdXJwbGF5ZXIpKTsKCQkKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRmaWx0ZXInLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdGZpbHRlcicsJHRoaXMtPkxhbmcoJ2ZpbHRyZXMnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKCgokc21hcnR5LT5hc3NpZ24oJ2lkJywgJHRoaXMtPkxhbmcoJ2lkJykpOwokc21hcnR5LT5hc3NpZ24oJ3VzZXJuYW1lJywgJ0pvdWV1cicpOwokc21hcnR5LT5hc3NpZ24oJ3BvaW50cycsICdQb2ludHMnKTsKLy8kYWN0aW9uID0gKGVtcHR5KCRfUE9TVFsnYWN0aW9uJ10pKSA/ICdkZWZhdWx0JyA6ICRfUE9TVFsnYWN0aW9uJ107CgovLyRtb2lzX3ByZWYgPSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZhdWx0TW9udGhTaXRNZW5zJywgJzYnKTsKCiRtb2lzX3ByZWYgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdE1vbnRoU2l0TWVucycpOwovL2VjaG8gImxlIG1vaXMgcHJlZiBlc3QgOiAiLiRtb2lzX3ByZWY7CiRtb2lzID0gKCFlbXB0eSgkbW9pc19wcmVmKSkgPyAkbW9pc19wcmVmIDogJG1vaXNfY291cmFudDsKLy9lY2hvICJsZSBtb2lzIHJldGVudSBlc3QgOiAiLiRtb2lzOwoKJHJlc3VsdD0gYXJyYXkgKCk7CiRxdWVyeT0gIlNFTEVDVCBqLmxpY2VuY2Usc20uaWQsc20ubW9pcyxzbS5wb2ludHMsIHNtLmFubmVlLCBDT05DQVRfV1MoJyAnLCBqLm5vbSwgai5wcmVub20pIEFTIGpvdWV1ciwgc20ucHJvZ21vaXMsIHNtLmNsbmF0LCBzbS5yYW5ncmVnLCBzbS5yYW5nZGVwICBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogTEVGVCBKT0lOICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyBBUyBzbSBPTiBqLmxpY2VuY2UgPSBzbS5saWNlbmNlIFdIRVJFIGouYWN0aWYgPSAnMScgIjsKLy9lY2hvICRxdWVyeTsKCmlmKCBpc3NldCgkcGFyYW1zWydzdWJtaXRmaWx0ZXInXSApKXsKCQoJaWYoJGN1cm1vbnRoICE9JycpewoJCQoJCSRxdWVyeS49IiBBTkQgKHNtLm1vaXMgPSA/IE9SIHNtLm1vaXMgSVMgTlVMTCkgIjsKCQkkcGFybXNbJ21vaXMnXSA9ICRjdXJtb250aDsKCX0KCQoJaWYgKCRjdXJwbGF5ZXIgIT0nJykKCXsKCQkkcXVlcnkgLj0iIEFORCBqLmxpY2VuY2UgPSA/IjsKCQkkcGFybXNbJ2xpY2VuY2UnXSA9ICRjdXJwbGF5ZXI7CgkJCgl9CgllbHNlIAoJewoJCSRxdWVyeS49IiBBTkQgai5saWNlbmNlID49IDAgIjsKCQkkcGFybXMgPScnOwoJfQoKfS8vZmluIGR1IHN1Ym1pdCBmaWx0ZXIKJHF1ZXJ5Lj0iICBBTkQgKHNtLmFubmVlID0gPyBPUiBzbS5hbm5lZSBJUyBOVUxMKSAiOwokcGFybXNbJ2FubmVlJ10gPSAkYW5uZWVfY291cmFudGU7CgokcXVlcnkuPSIgT1JERVIgQlkgam91ZXVyIEFTQyI7CiRkYnJlc3VsdD0gJGRiLT5FeGVjdXRlKCRxdWVyeSwkcGFybXMpOwovL2VjaG8gJHF1ZXJ5OwppZiAoISRkYnJlc3VsdCkKewoKCQkvL2VjaG8gInBiIHJlcSAhIjsKCQkkZGVzaWduYXRpb24gPSAkZGItPkVycm9yTXNnKCk7CgkJZWNobyAiJGRlc2lnbmF0aW9uIjsKCn0KCgoKJHJvd2NsYXNzPSAncm93MSc7CiRyb3dhcnJheT0gYXJyYXkgKCk7CmlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQogICAgICB7Cgkkb25lcm93PSBuZXcgU3RkQ2xhc3MoKTsKCSRvbmVyb3ctPnJvd2NsYXNzPSAkcm93Y2xhc3M7Cgkkb25lcm93LT5pZD0gJHJvd1snaWQnXTsKCSRvbmVyb3ctPmxpY2VuY2U9ICRyb3dbJ2xpY2VuY2UnXTsKCSRvbmVyb3ctPm1vaXM9ICRyb3dbJ21vaXMnXTsKCSRvbmVyb3ctPmFubmVlPSAkcm93Wydhbm5lZSddOwoJJG9uZXJvdy0+cG9pbnRzPSAkcm93Wydwb2ludHMnXTsKCSRvbmVyb3ctPmNsbmF0PSAkcm93WydjbG5hdCddOwoJJG9uZXJvdy0+cmFuZ3JlZz0gJHJvd1sncmFuZ3JlZyddOwoJJG9uZXJvdy0+cmFuZ2RlcD0gJHJvd1sncmFuZ2RlcCddOwoJJG9uZXJvdy0+cHJvZ21vaXM9ICRyb3dbJ3Byb2dtb2lzJ107CgkvLyRvbmVyb3ctPmVxdWlwZT0gJHRoaXMtPmNyZWF0ZUxpbmsoJGlkLCAndmlld3N0ZWFtcmVzdWx0JywgJHJldHVybmlkLCAkcm93WydlcXVpcGUnXSxhcnJheSgnZXF1aXBlJz0+JHJvd1snZXF1aXBlJ10pLCRyb3cpIDsKCSRvbmVyb3ctPmpvdWV1cj0gJHJvd1snam91ZXVyJ107Cgkkb25lcm93LT5pZD0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF9qb3VldXJzJywgJHJldHVybmlkLCAkcm93WydpZCddLGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSwgJHJvdyk7Cgkkb25lcm93LT5lZGl0bGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF9qb3VldXInLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pKTsKCSRvbmVyb3ctPnNpdG1lbnNsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9zaXRfbWVucycsICRyZXR1cm5pZCwgJ1NpdHVhdGlvbiBtZW5zdWVsbGUnLCBhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJJG9uZXJvdy0+Z2V0cGFydGllc2xpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3BhcnRpZXMnLCAkcmV0dXJuaWQsICdQYXJ0aWVzIGRpc3B1dMOpZXMnLCBhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJJG9uZXJvdy0+ZGVsZXRlbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGVsZXRlX3NpdF9tZW5zJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pLCAkdGhpcy0+TGFuZygnZGVsZXRlX2NvbmZpcm0nKSk7CgkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIH0KICB9CiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKJHNtYXJ0eS0+YXNzaWduKCdyZXRyaWV2ZWFsbHNpdG1lbnMnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwncmV0cmlldmVfYWxsX3NpdF9tZW5zJywgJHJldHVybmlkLCAnUsOpY3Vww6lyZXIgdG91dGVzIGxlcyBzaXR1YXRpb25zIG1lbnN1ZWxsZXMnKSk7CiRzbWFydHktPmFzc2lnbignbWlzc2luZ19zaXRfbWVucycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ21pc3Npbmdfc2l0X21lbnMnLCAkcmV0dXJuaWQsICdMZXMgc2l0dWF0aW9ucyBtYW5xdWFudGVzJykpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm0yc3RhcnQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdtYXNzX2FjdGlvbicsJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbignZm9ybTJlbmQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokYXJ0aWNsZXMgPSBhcnJheSgiRMOpc2FjdGl2ZXIiPT4idW5hYmxlIiwiUsOpY3Vww6lyZXIgc2l0dWF0aW9uIG1lbnN1ZWxsZSI9PiJzaXR1YXRpb24iKTsKJHNtYXJ0eS0+YXNzaWduKCdhY3Rpb25kZW1hc3NlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2FjdGlvbmRlbWFzc2UnLCRhcnRpY2xlcykpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF9tYXNzYWN0aW9uJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdzdWJtaXRfbWFzc2FjdGlvbicsJHRoaXMtPkxhbmcoJ2FwcGx5X3RvX3NlbGVjdGlvbicpLCcnLCcnLCR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlX2FjdGlvbm11bHRpcGxlJykpKTsKCQkJCSAgCgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FsbHNpdG1lbnMudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.admin_teams_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKJHNhaXNvbl9jb3VyYW50ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJHNtYXJ0eS0+YXNzaWduKCdpZCcsICR0aGlzLT5MYW5nKCdpZCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdlcXVpcGUnLCAnRXF1aXBlcycpOwokc21hcnR5LT5hc3NpZ24oJ3RvdXInLCAnVG91cicpOwokc21hcnR5LT5hc3NpZ24oJ3Njb3JlJywgJ1Njb3JlJyk7CiRzbWFydHktPmFzc2lnbignYWR2ZXJzYWlyZXMnLCAnQWR2ZXJzYWlyZXMnKTsKCiRyZXN1bHQ9IGFycmF5ICgpOwokcXVlcnkgPSAiU0VMRUNUICosIGVxLmlkLGNvbXAubmFtZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIEFTIGVxLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgQVMgY29tcCBXSEVSRSBlcS5zYWlzb24gPSA/IEFORCAoY29tcC5jb2RlX2NvbXBldCA9IGVxLnR5cGVfY29tcGV0IE9SIGVxLnR5cGVfY29tcGV0IElTIE5VTEwpICI7CgkkcXVlcnkgLj0iIE9SREVSIEJZIGVxLmlkIEFTQyI7CgkkZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHNhaXNvbl9jb3VyYW50ZSkpOwoKJHJvd2FycmF5PSBhcnJheSAoKTsKaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIHsKCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCSRvbmVyb3ctPmlkPSAkcm93WydpZCddOwoJLy8kb25lcm93LT5lcXVpcGU9ICRyb3dbJ2VxdWlwZSddOwoJJG9uZXJvdy0+bGliZXF1aXBlPSAgJHJvd1snbGliZXF1aXBlJ107Cgkkb25lcm93LT5saWJkaXZpc2lvbj0gJHJvd1snbGliZGl2aXNpb24nXTsKCSRvbmVyb3ctPmZyaWVuZGx5bmFtZT0gJHJvd1snZnJpZW5kbHluYW1lJ107Cgkkb25lcm93LT5uYW1lPSAkcm93WyduYW1lJ107CgkvLyRvbmVyb3ctPnZpZXc9ICR0aGlzLT5jcmVhdGVMaW5rKCRpZCwgJ3ZpZXd0ZWFtcmVzdWx0JywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL3ZpZXcuZ2lmJywgJHRoaXMtPkxhbmcoJ2Rvd25sb2FkX3BvdWxlX3Jlc3VsdHMnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdjbGUnPT4kcm93WydjbGUnXSkpIDsKCSRvbmVyb3ctPmVkaXRsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0X3RlYW0nLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSk7Cgkkb25lcm93LT5yZXRyaWV2ZV9wb3VsZV9yZW5jb250cmVzPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9wb3VsZV9yZW5jb250cmVzJywgJHJldHVybmlkLCR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vaW1wb3J0LmdpZicsICR0aGlzLT5MYW5nKCdkb3dubG9hZF9wb3VsZV9yZXN1bHRzJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2lkcG91bGUnPT4kcm93WydpZHBvdWxlJ10sICdpZGRpdic9PiRyb3dbJ2lkZGl2J10sICd0eXBlX2NvbXBldCc9PiRyb3dbJ3R5cGVfY29tcGV0J10pKTsKCSRvbmVyb3ctPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZV90ZWFtJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pLCAkdGhpcy0+TGFuZygnZGVsZXRlX2NvbmZpcm0nKSk7CgkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIH0KICB9CiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKJHNtYXJ0eS0+YXNzaWduKCdyZXRyaWV2ZV90ZWFtcycsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfdGVhbXMnLCAkcmV0dXJuaWQsICRjb250ZW50cyA9ICJSw6ljdXDDqXJhdGlvbiBkZXMgw6lxdWlwZXMgKGNoYW1waW9ubmF0IHNlbmlvcnMpIiwgYXJyYXkoJ3R5cGUnPT4nTScpKSk7CiRzbWFydHktPmFzc2lnbigncmV0cmlldmVfdGVhbXNfYXV0cmVzJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV90ZWFtcycsICRyZXR1cm5pZCwgJGNvbnRlbnRzID0gIlLDqWN1cMOpcmF0aW9uIGRlcyDDqXF1aXBlcyIpKTsKCgoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCd0ZWFtc2NvcmVzLnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.bar-charts.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7Ci8vcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19maWxlX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKJHNhaXNvbl9jb3VyYW50ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0Owokc21hcnR5LT5hc3NpZ24oJ0xhYmVsX3ZpY3RvaXJlcycsICdWaWN0b2lyZXMnKTsKJHNtYXJ0eS0+YXNzaWduKCdMYWJlbF9kZWZhaXRlJywgJ0TDqWZhaXRlcycpOwokbGljZW5jZSA9ICcyOTIyNzEnOwovKiovCiRyZXN1bHQgPSBhcnJheSgpOwokcXVlcnkgPSAiU0VMRUNUIENPTkNBVF9XUygnICcsIGoubm9tLCBqLnByZW5vbSkgQVMgam91ZXVyLHAubGljZW5jZSxTVU0ocC5wb2ludHJlcykgYXMgc3VtcG9pbnRzLFNVTShwLnZkKSBBUyB2aWN0b2lyZXMsY291bnQocC52ZCkgQVMgbWF0Y2hzLCBNT05USChwLmRhdGVfZXZlbnQpIEFTIG1vaXMgRlJPTSBgY21zX21vZHVsZV9waW5nX3BhcnRpZXNgIEFTIHAsIGBjbXNfbW9kdWxlX3Bpbmdfam91ZXVyc2AgQVMgaiBXSEVSRSBqLmxpY2VuY2UgPSBwLmxpY2VuY2UgQU5EIHNhaXNvbiA9ID8gQU5EIGxpY2VuY2UgPSA/Ck9SREVSIEJZIFlFQVIocC5kYXRlX2V2ZW50KSBBU0MsbW9pcyI7Ci8vJHF1ZXJ5ID0gIlNFTEVDVCBTVU0odmQpIEFTIHZpY3RvaXJlcywgY291bnQodmQpIEFTIHRvdGFsLCBjb3VudCh2ZCkgLSBTVU0odmQpIEFTIGRlZmFpdGVzICBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIFdIRVJFIHNhaXNvbiA9ID8iOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkc2Fpc29uX2NvdXJhbnRlLCAkbGljZW5jZSkpOwplY2hvICRxdWVyeTsKJHJvd2NsYXNzPSAncm93MSc7CiRyb3dhcnJheT0gYXJyYXkgKCk7CmlmKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCk+MCl7Cgl3aGlsZSgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgl7CgkJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7CgkJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCQkkb25lcm93LT52aWN0b2lyZXMgPSAkcm93Wyd2aWN0b2lyZXMnXTsKCQkkb25lcm93LT50b3RhbCA9ICRyb3dbJ3RvdGFsJ107CgkJJG9uZXJvdy0+ZGVmYWl0ZXMgPSAkcm93WydkZWZhaXRlcyddOwoJCS8vJG9uZXJvdy0+ZGVmYWl0ZXMgPSAkcm93Wyd0b3RhbCddIC0gJHJvd1sndmljdG9pcmVzJ107CgkJJGRhdGFkb25uZWVzID0gYXJyYXkoJ1ZpY3RvaXJlcyc9PiRyb3dbJ3ZpY3RvaXJlcyddLCAnRGVmYWl0ZXMnPT4kcm93WydkZWZhaXRlcyddKTsKCQkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJCSRyb3dhcnJheVtdPSAkb25lcm93OwoJfQp9CmVsc2V7CgllY2hvICdwYiBiZGQgISc7Cn0KLyoqLwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKCi8vJGRhdGFkb25uZWVzID0gYXJyYXkoJ1ZpY3RvaXJlcyc9PicxMicsICdUb3RhbCc9PicxNicpOwokc21hcnR5LT5hc3NpZ24oJ2Rvbm5lZXMnLCAkZGF0YWRvbm5lZXMpOwovLyRzbWFydHktPmFzc2lnbignZG9ubmVlcycsIGFycmF5KCdWaWN0b2lyZXMnPT4nMTInLCAnVG90YWwnPT4nMTInKSk7CiRzbWFydHktPmFzc2lnbignZG9ubmVlczInLCAkZG9ubmVlczIpOwovL2VjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgncGllLWNoYXJ0cy50cGwnKTsKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdiYXItY2hhcnRzLnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.bar-charts2.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwovL3JlcXVpcmVfb25jZShkaXJuYW1lKF9fZmlsZV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fZmlsZV9fKS4nL2Z1bmN0aW9uLmNhbGN1bHMucGhwJyk7CiRzYWlzb24gPSAoaXNzZXQoJHBhcmFtc1snc2Fpc29uJ10pICYmICRwYXJhbXNbJ3NhaXNvbiddICE9ICcnKSA/ICRwYXJhbXNbJ3NhaXNvbiddOiAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7Ci8vZWNobyAnbGEgc2Fpc29uIGVzdCA6ICcuJHNhaXNvbl9jb3VyYW50ZTsKJGxpY2VuY2UgPSAoaXNzZXQoJHBhcmFtc1snbGljZW5jZSddKSAmJiAkcGFyYW1zWydsaWNlbmNlJ10gIT0gJycpID8gJHBhcmFtc1snbGljZW5jZSddOiAnNTMxMDgwOSc7Ly8nNTMxMDgwOSc7Ci8qCkNyw6lhdGlvbiBkJ3VuIGxpZW4gZW4gZnJvbnRlbmQKKi8KJHNtYXJ0eS0+YXNzaWduKCdsaWVuc2Fpc29uMicsCgkJJHRoaXMtPkNyZWF0ZUZyb250ZW5kTGluaygkaWQsJHJldHVybmlkLCdiYXItY2hhcnRzMicsICRjb250ZW50cyA9ICdTYWlzb24gMjAxNC0yMDE1JywgYXJyYXkoJ3NhaXNvbic9PicyMDE0LTIwMTUnLCAnbGljZW5jZSc9PiRsaWNlbmNlKSkpOwokc21hcnR5LT5hc3NpZ24oJ2xpZW5zYWlzb24nLAoJCSR0aGlzLT5DcmVhdGVGcm9udGVuZExpbmsoJGlkLCRyZXR1cm5pZCwnYmFyLWNoYXJ0czInLCAkY29udGVudHMgPSAnU2Fpc29uIDIwMTMtMjAxNCcsIGFycmF5KCdzYWlzb24nPT4nMjAxMy0yMDE0JywgJ2xpY2VuY2UnPT4kbGljZW5jZSkpKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwoKLy9vbiBjb25zdHJ1aXQgdW4gZm9ybXVsYWlyZSBwb3VyIHRyYW5zaXRlciBkJ3VuIGpvdWV1ciBsJ2F1dHJlCi8qIG9uIGZhaXQgdW4gZm9ybXVsYWlyZSBkZSBmaWx0cmFnZSBkZXMgcsOpc3VsdGF0cyovCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnYmFyLWNoYXJ0czInKSk7IAokcGxheWVyc2xpc3RbJHRoaXMtPkxhbmcoJ2FsbHBsYXllcnMnKV0gPSAnJzsKJHF1ZXJ5ID0gIlNFTEVDVCAqICxsaWNlbmNlLCBDT05DQVRfV1MoJyAnLG5vbSwgcHJlbm9tKSBBUyBwbGF5ZXIgRlJPTSAgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgT1JERVIgQlkgbm9tIEFTQyI7Ly8iIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICB7CiAgICAKICAgICRwbGF5ZXJzbGlzdFskcm93WydwbGF5ZXInXV0gPSAkcm93WydsaWNlbmNlJ107CiAgfQoKaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdGZpbHRlciddKSApCiAgewogICAgCQoJaWYoIGlzc2V0KCAkcGFyYW1zWydwbGF5ZXJzbGlzdCddKSApCiAgICAgIAl7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgncGxheWVyQ2hvaXNpJywgJHBhcmFtc1sncGxheWVyc2xpc3QnXSk7CiAgICAgIAl9Cgp9CiRjdXJwbGF5ZXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ3BsYXllckNob2lzaScpOwoJCQkJCiRzbWFydHktPmFzc2lnbignaW5wdXRfcGxheWVyJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3BsYXllcnNsaXN0JywkcGxheWVyc2xpc3QsLTEsJGN1cnBsYXllcikpOwoJCQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdGZpbHRlcicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0ZmlsdGVyJywkdGhpcy0+TGFuZygnZmlsdHJlcycpKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgoKLy9maW4gZHUgZm9ybXVsYWlyZSBkZSB0cmFuc2l0aW9uIGVudHJlIGxlcyBqb3VldXJzCiRzbWFydHktPmFzc2lnbignTGFiZWxfdmljdG9pcmVzJywgJ1ZpY3RvaXJlcycpOwokc21hcnR5LT5hc3NpZ24oJ0xhYmVsX2RlZmFpdGUnLCAnRMOpZmFpdGVzJyk7CgovKiovCiRyZXN1bHQgPSBhcnJheSgpOwokcXVlcnkyID0gIlNFTEVDVCBDT05DQVRfV1MoJyAnLCBqLm5vbSwgai5wcmVub20pIEFTIGpvdWV1cixwLmxpY2VuY2UsU1VNKHAucG9pbnRyZXMpIGFzIHN1bXBvaW50cyxTVU0ocC52aWN0b2lyZSkgQVMgdmljdG9pcmVzLGNvdW50KHAudmljdG9pcmUpIEFTIG1hdGNocywgTU9OVEgocC5kYXRlX2V2ZW50KSBBUyBtb2lzIEZST00gYGNtc19tb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWRgIEFTIHAsIGBjbXNfbW9kdWxlX3Bpbmdfam91ZXVyc2AgQVMgaiBXSEVSRSBqLmxpY2VuY2UgPSBwLmxpY2VuY2UgQU5EIHAuc2Fpc29uID0gPyBBTkQgcC5saWNlbmNlID0gPyAiOy8vR1JPVVAgQlkgbW9pcyBPUkRFUiBCWSBZRUFSKHAuZGF0ZV9ldmVudCkgQVNDLG1vaXMiOwokcGFybXNbJ3NhaXNvbiddID0gJHNhaXNvbjsKLy8kcXVlcnkgPSAiU0VMRUNUIFNVTSh2ZCkgQVMgdmljdG9pcmVzLCBjb3VudCh2ZCkgQVMgdG90YWwsIGNvdW50KHZkKSAtIFNVTSh2ZCkgQVMgZGVmYWl0ZXMgIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXMgV0hFUkUgc2Fpc29uID0gPyI7CgoJaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdGZpbHRlciddICkpewoKCQlpZiAoJGN1cnBsYXllciAhPScnKQoJCXsKCQkJJHF1ZXJ5MiAuPSIgQU5EIGoubGljZW5jZSA9ID8iOwoJCQkkbGljZW5jZSA9ICRjdXJwbGF5ZXI7CQkKCQl9Cgl9CiRxdWVyeTIgLj0iIEdST1VQIEJZIG1vaXMgT1JERVIgQlkgWUVBUihwLmRhdGVfZXZlbnQpIEFTQyxtb2lzIjsKCgokZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnkyLGFycmF5KCRzYWlzb24sJGxpY2VuY2UpKTsKZWNobyAkcXVlcnkyOwovLyRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRzYWlzb25fY291cmFudGUsICRsaWNlbmNlKSk7Ci8vJGl0ZXJhdGlvbiA9ICRkYi0+UmVjb3JkQ291bnQoKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVyYXRpb24nLCAkaXRlcmF0aW9uKTsKCiRyb3djbGFzcz0gJ3JvdzEnOwokcm93YXJyYXk9IGFycmF5ICgpOwppZigkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpPjApewoJd2hpbGUoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJewoJCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJCSRvbmVyb3ctPnJvd2NsYXNzPSAkcm93Y2xhc3M7CgkJJG9uZXJvdy0+am91ZXVyPSAkcm93Wydqb3VldXInXTsKCQkkb25lcm93LT5wb2ludHM9ICRyb3dbJ3N1bXBvaW50cyddOwoJCSRvbmVyb3ctPnZpY3RvaXJlcyA9ICRyb3dbJ3ZpY3RvaXJlcyddOwoJCSRvbmVyb3ctPnRvdGFsID0gJHJvd1snbWF0Y2hzJ107CgkJJG9uZXJvdy0+bW9pcyA9ICRyb3dbJ21vaXMnXTsKCQkvLyRvbmVyb3ctPm1vaXMgPSBtb2lzX2ZyYW5jYWlzKCRyb3dbJ21vaXMnXSwnbWluaScpOwoJCSRwbGF5ZXIgPSAkcm93Wydqb3VldXInXTsKCQkvLyRvbmVyb3ctPmRlZmFpdGVzID0gJHJvd1sndG90YWwnXSAtICRyb3dbJ3ZpY3RvaXJlcyddOwoJCSRkYXRhZG9ubmVlcyA9IGFycmF5KCdWaWN0b2lyZXMnPT4kcm93Wyd2aWN0b2lyZXMnXSwgJ0RlZmFpdGVzJz0+JHJvd1snZGVmYWl0ZXMnXSk7CgkJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCQkkcm93YXJyYXlbXT0gJG9uZXJvdzsKCX0KfQplbHNlewoJZWNobyAnPHA+QXVjdW4gcsOpc3VsdGF0czwvcD4nO2VjaG8gJGRiLT5FcnJvck1zZygpOwp9Ci8qKi8KJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7Ci8vJGRhdGFkb25uZWVzID0gYXJyYXkoJ1ZpY3RvaXJlcyc9PicxMicsICdUb3RhbCc9PicxNicpOwokc21hcnR5LT5hc3NpZ24oJ3BsYXllcicsICRwbGF5ZXIpOwovLyRzbWFydHktPmFzc2lnbignZG9ubmVlcycsIGFycmF5KCdWaWN0b2lyZXMnPT4nMTInLCAnVG90YWwnPT4nMTInKSk7CiRzbWFydHktPmFzc2lnbignZG9ubmVlczInLCAkZG9ubmVlczIpOwovL2VjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgncGllLWNoYXJ0cy50cGwnKTsKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdiYXItY2hhcnRzMi50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.create_contact.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwppZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgTWFuYWdlJykpCiAgewogICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CglyZXR1cm47CiAgIAogIH0KCiRsaWNlbmNlID0gJyc7CmlmKCAhaXNzZXQoICRwYXJhbXNbJ2xpY2VuY2UnXSApIHx8ICRwYXJhbXNbJ2xpY2VuY2UnXSA9PSAnJykgIAp7CgkkdGhpcy0+U2V0TWVzc2FnZSgnSWwgbWFucXVlIGxhIGxpY2VuY2UnKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKLyoJCiRxdWVyeSA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJywgbm9tLCBwcmVub20pIEFTIGpvdWV1ciwgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIE9SREVSIEJZIGpvdWV1ciBBU0MiOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQogIHsKICAgICRwbGF5ZXJsaXN0WyRyb3dbJ2pvdWV1ciddXSA9ICRyb3dbJ2xpY2VuY2UnXTsKfS8vZmluIGR1IHdoaWxlCiovCn0KCiAKICAKJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLAoJCSAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCAkaWQsICdkb19jcmVhdGVfY29udGFjdCcsICRyZXR1cm5pZCApICk7CiRzbWFydHktPmFzc2lnbignbGljZW5jZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCAkaWQsICdsaWNlbmNlJywgJHBhcmFtc1snbGljZW5jZSddICkpOwokYXJ0aWNsZXMgPSBhcnJheSgiVMOpbMOpcGhvbmUgZml4ZSI9PiJUw6lsw6lwaG9uZSBmaXhlIiwgImVtYWlsIj0+ImVtYWlsIik7CiRzbWFydHktPmFzc2lnbigndHlwZV9jb250YWN0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICd0eXBlX2NvbnRhY3QnLCRhcnRpY2xlcykpOwokc21hcnR5LT5hc3NpZ24oJ2NvbnRhY3QnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnY29udGFjdCcsJGNvbnRhY3QpKTsKJHNtYXJ0eS0+YXNzaWduKCdkZXNjcmlwdGlvbicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdkZXNjcmlwdGlvbicsJGRlc2NyaXB0aW9uLDMwLDE1MCkpOwkJCQkKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnc3VibWl0JyksICdjbGFzcz0iYnV0dG9uIicpKTsKJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2NhbmNlbCcsJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKSk7CiRzbWFydHktPmFzc2lnbignYmFjaycsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnYmFjaycsJHRoaXMtPkxhbmcoJ2JhY2snKSkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLAoJCSR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnY3JlYXRlX2NvbnRhY3QudHBsJyk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.criterium.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKLyoKJGNsZV9jb21wdGUgPSAkX1NFU1NJT05bJ2NsZV9jb21wdGUnXTsKCmVjaG8gJ2xhIGNsZWYgZHUgY29tcHRlIGVzdCA6ICcuJGNsZV9jb21wdGU7CiovCgokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7CgokcmVzdWx0PSBhcnJheSAoKTsKLy8kcXVlcnk9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb2ludHMgV0hFUkUgam91ZXVyID0gPyBPUkRFUiBCWSBpZCBBU0MiOwovLyRxdWVyeSA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJyAsIGoubm9tLCBqLnByZW5vbSkgQVMgam91ZXVyLCBqLmxpY2VuY2Usc3VtKHAudmQpIEFTIHZpY3RvaXJlcywgc3VtKHAucG9pbnRyZXMpIEFTIHRvdGFsLCBjb3VudCgqKSBBUyBzdXIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIGFzIHAsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogV0hFUkUgcC5saWNlbmNlID0gai5saWNlbmNlIEFORCBwLnNhaXNvbiA9ID8gR1JPVVAgQlkgam91ZXVyIE9SREVSIEJZIGpvdWV1ciI7CiRxdWVyeSA9ICJTRUxFQ1QgcC5kYXRlX2V2ZW50LCBwLm5vbSwgcC5jbGFzc2VtZW50LCBwLnZpY3RvaXJlLCBwLmVjYXJ0LCBwLmNvZWZmLCBwLnBvaW50cmVzLCBDT05DQVRfV1MoJyAnICwgai5ub20sIGoucHJlbm9tKSBBUyBqb3VldXIsIGoubGljZW5jZSxzdW0ocC52aWN0b2lyZSkgQVMgdmljdG9pcmVzLCBjb3VudCgqKSBBUyBzdXIsIHN1bShwLnBvaW50cmVzKSBBUyB0b3RhbCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgYXMgcCwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgQVMgaiBXSEVSRSBwLmxpY2VuY2UgPSBqLmxpY2VuY2UgQU5EIHAuc2Fpc29uID0gPyBBTkQgIHAuZXByZXV2ZSA9ICdDcml0w6lyaXVtIGbDqWTDqXJhbCcgR1JPVVAgQlkgam91ZXVyICBPUkRFUiBCWSBwLmRhdGVfZXZlbnQgREVTQywgam91ZXVyIEFTQyI7CmVjaG8gJHF1ZXJ5OwokZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRzYWlzb25fY291cmFudGUpKTsKJHJvd2NsYXNzPSAncm93MSc7CiRyb3dhcnJheT0gYXJyYXkgKCk7CmlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQogICAgICB7Cgkkb25lcm93PSBuZXcgU3RkQ2xhc3MoKTsKCSRvbmVyb3ctPnJvd2NsYXNzPSAkcm93Y2xhc3M7CgkvLyRvbmVyb3ctPnR5cGVfY29tcGV0PSAkcm93Wyd0eXBlX2NvbXBldCddOwoJJG9uZXJvdy0+am91ZXVyPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdiYXItY2hhcnRzMicsICRyZXR1cm5pZCwgJHJvd1snam91ZXVyJ10sYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pKSA7Cgkkb25lcm93LT52aWN0b2lyZXM9ICRyb3dbJ3ZpY3RvaXJlcyddOwoJJG9uZXJvdy0+c3VyPSAkcm93WydzdXInXTsKCSRvbmVyb3ctPnRvdGFsPSAkcm93Wyd0b3RhbCddOwoJJG9uZXJvdy0+ZGF0ZT0gJHJvd1snZGF0ZV9ldmVudCddOwoJJG9uZXJvdy0+ZXByZXV2ZT0gJHJvd1snZXByZXV2ZSddOwoJJG9uZXJvdy0+Y29lZmY9ICRyb3dbJ2NvZWZmJ107Cgkkb25lcm93LT5ub209ICRyb3dbJ25vbSddOwoJJG9uZXJvdy0+Y2xhc3NlbWVudD0gJHJvd1snY2xhc3NlbWVudCddOwoJJG9uZXJvdy0+cG9pbnRzPSAkcm93Wydwb2ludHJlcyddOwoJCi8vCSRvbmVyb3ctPnBvaW50cz0gJHJvd1sncG9pbnRzJ107CgkvLyRvbmVyb3ctPmFjdGl2ZT0gKCRyb3dbJ2FjdGl2ZSddID09IDEpID8gJHRoaXMtPkxhbmcoJ3llcycpIDogJyc7CgkvLyRvbmVyb3ctPmlkPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0X3Jlc3VsdHMnLCAkcmV0dXJuaWQsICRyb3dbJ2lkJ10sYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pLCAkcm93KTsKCS8vJG9uZXJvdy0+ZWRpdGxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRfcmVzdWx0cycsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSksICRyb3cpOwoJLy8kb25lcm93LT5kZWxldGVsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWxldGVfdXNlcicsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSwgJHRoaXMtPkxhbmcoJ2RlbGV0ZV9yZXN1bHRfY29uZmlybScpKTsKCQoJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCSRyb3dhcnJheVtdPSAkb25lcm93Oy8vZGlzYWJsZWQgYnkgQ2xhdWRlCgkvL2FycmF5X3B1c2goJHJvd2FycmF5LCRvbmVyb3cpOwogICAgICB9CiAgfQoKLyoqLwovLyRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmR0ZXh0JykpOwovLyRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwovKiRzbWFydHktPmFzc2lnbignY3JlYXRlbGluaycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2NyZWF0ZV9uZXdfdXNlcjMnLCAkcmV0dXJuaWQsCgkJCQkgICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsICR0aGlzLT5MYW5nKCdhZGRuZXdzaGVldCcpLCAnJywgJycsICdzeXN0ZW1pY29uJykpLgoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2NyZWF0ZV9uZXdfdXNlcjMnLCAkcmV0dXJuaWQsIAoJCQkJICAkdGhpcy0+TGFuZygnYWRkbmV3c2hlZXQnKSwgCgkJCQkgIGFycmF5KCkpKTsKKi8KCQkJCQovL2ZhaXJlIGFwcGFyYWl0cmUgbGVzIHBvaW50cyB0b3RhdXggZXQgc29tbWUgdmljdG9pcmUgZW4gYmFzID8gQ2Ugc2VyYWl0IHBhcyBtYWwKLyoqLwplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2ZlX2dsb2JhbHVzZXJyZXN1bHRzLnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.criterium_details.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKLyoKJGNsZV9jb21wdGUgPSAkX1NFU1NJT05bJ2NsZV9jb21wdGUnXTsKCmVjaG8gJ2xhIGNsZWYgZHUgY29tcHRlIGVzdCA6ICcuJGNsZV9jb21wdGU7CiovCgokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7CgokcmVzdWx0PSBhcnJheSAoKTsKLy8kcXVlcnk9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb2ludHMgV0hFUkUgam91ZXVyID0gPyBPUkRFUiBCWSBpZCBBU0MiOwovLyRxdWVyeSA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJyAsIGoubm9tLCBqLnByZW5vbSkgQVMgam91ZXVyLCBqLmxpY2VuY2Usc3VtKHAudmQpIEFTIHZpY3RvaXJlcywgc3VtKHAucG9pbnRyZXMpIEFTIHRvdGFsLCBjb3VudCgqKSBBUyBzdXIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIGFzIHAsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogV0hFUkUgcC5saWNlbmNlID0gai5saWNlbmNlIEFORCBwLnNhaXNvbiA9ID8gR1JPVVAgQlkgam91ZXVyIE9SREVSIEJZIGpvdWV1ciI7CiRxdWVyeSA9ICJTRUxFQ1QgcC5kYXRlX2V2ZW50LCBwLm5vbSwgcC5jbGFzc2VtZW50LCBwLnZpY3RvaXJlLCBwLmVjYXJ0LCBwLmNvZWZmLCBwLnBvaW50cmVzLCBDT05DQVRfV1MoJyAnICwgai5ub20sIGoucHJlbm9tKSBBUyBqb3VldXIsIGoubGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgYXMgcCwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgQVMgaiBXSEVSRSBwLmxpY2VuY2UgPSBqLmxpY2VuY2UgQU5EIHAuc2Fpc29uID0gPyBBTkQgIHAuZXByZXV2ZSA9ICdDcml0w6lyaXVtIGbDqWTDqXJhbCcgQU5EIGoubGljZW5jZSA9ID8gT1JERVIgQlkgcC5kYXRlX2V2ZW50IERFU0MsIGpvdWV1ciBBU0MiOwplY2hvICRxdWVyeTsKJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkc2Fpc29uX2NvdXJhbnRlKSk7CiRyb3djbGFzcz0gJ3JvdzEnOwokcm93YXJyYXk9IGFycmF5ICgpOwppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewoJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7Cgkkb25lcm93LT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJLy8kb25lcm93LT50eXBlX2NvbXBldD0gJHJvd1sndHlwZV9jb21wZXQnXTsKCSRvbmVyb3ctPmpvdWV1cj0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYmFyLWNoYXJ0czInLCAkcmV0dXJuaWQsICRyb3dbJ2pvdWV1ciddLGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSkgOwoJJG9uZXJvdy0+dmljdG9pcmVzPSAkcm93Wyd2aWN0b2lyZXMnXTsKCSRvbmVyb3ctPnN1cj0gJHJvd1snc3VyJ107Cgkkb25lcm93LT50b3RhbD0gJHJvd1sndG90YWwnXTsKCSRvbmVyb3ctPmRhdGU9ICRyb3dbJ2RhdGVfZXZlbnQnXTsKCSRvbmVyb3ctPmVwcmV1dmU9ICRyb3dbJ2VwcmV1dmUnXTsKCSRvbmVyb3ctPmNvZWZmPSAkcm93Wydjb2VmZiddOwoJJG9uZXJvdy0+bm9tPSAkcm93Wydub20nXTsKCSRvbmVyb3ctPmNsYXNzZW1lbnQ9ICRyb3dbJ2NsYXNzZW1lbnQnXTsKCSRvbmVyb3ctPnBvaW50cz0gJHJvd1sncG9pbnRyZXMnXTsKCQovLwkkb25lcm93LT5wb2ludHM9ICRyb3dbJ3BvaW50cyddOwoJLy8kb25lcm93LT5hY3RpdmU9ICgkcm93WydhY3RpdmUnXSA9PSAxKSA/ICR0aGlzLT5MYW5nKCd5ZXMnKSA6ICcnOwoJLy8kb25lcm93LT5pZD0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF9yZXN1bHRzJywgJHJldHVybmlkLCAkcm93WydpZCddLGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSwgJHJvdyk7CgkvLyRvbmVyb3ctPmVkaXRsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0X3Jlc3VsdHMnLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pLCAkcm93KTsKCS8vJG9uZXJvdy0+ZGVsZXRlbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGVsZXRlX3VzZXInLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSksICR0aGlzLT5MYW5nKCdkZWxldGVfcmVzdWx0X2NvbmZpcm0nKSk7CgkKCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzPSAicm93MiIgOiAkcm93Y2xhc3M9ICJyb3cxIik7Cgkkcm93YXJyYXlbXT0gJG9uZXJvdzsvL2Rpc2FibGVkIGJ5IENsYXVkZQoJLy9hcnJheV9wdXNoKCRyb3dhcnJheSwkb25lcm93KTsKICAgICAgfQogIH0KCi8qKi8KLy8kc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kdGV4dCcpKTsKLy8kc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKLyokc21hcnR5LT5hc3NpZ24oJ2NyZWF0ZWxpbmsnLCAKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdjcmVhdGVfbmV3X3VzZXIzJywgJHJldHVybmlkLAoJCQkJICAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+TGFuZygnYWRkbmV3c2hlZXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpKS4KCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdjcmVhdGVfbmV3X3VzZXIzJywgJHJldHVybmlkLCAKCQkJCSAgJHRoaXMtPkxhbmcoJ2FkZG5ld3NoZWV0JyksIAoJCQkJICBhcnJheSgpKSk7CiovCgkJCQkKLy9mYWlyZSBhcHBhcmFpdHJlIGxlcyBwb2ludHMgdG90YXV4IGV0IHNvbW1lIHZpY3RvaXJlIGVuIGJhcyA/IENlIHNlcmFpdCBwYXMgbWFsCi8qKi8KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdmZV9nbG9iYWx1c2VycmVzdWx0cy50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKICAgaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCdQYXJhbWV0ZXJzJyk7Ci8vcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvYWN0aW9uLmF1dGhlbnRpZmljYXRpb24ucGhwJyk7CgovLyRkaXNwbGF5ID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCAnZGlzcGxheScsICd0ZWFtc3Jlc3VsdHMnKTsKLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5kaXNwbGF5dGVhbXMucGhwJyk7CgkKICAgICAgID8+]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKICAgaWYgKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsgCglpZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1BpbmcgVXNlJykpCgl7CgkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CgkJcmV0dXJuOwoJfQoJJG1lc3NhZ2UgPSAnJzsKCWlmKGlzc2V0KCRwYXJhbXNbJ21lc3NhZ2UnXSkgJiYgJHBhcmFtc1snbWVzc2FnZSddID09ICcnKXsKCQkkbWVzc2FnZSA9ICRwYXJhbXNbJ21lc3NhZ2UnXTsKCQllY2hvICRtZXNzYWdlOwoJCXJldHVybjsKCQl9CgovL29uIGluc3RhbmNpZSBsZXMgb25nbGV0cwoKZWNobyAkdGhpcy0+U3RhcnRUYWJoZWFkZXJzKCk7CmlmIChGQUxTRSA9PSBlbXB0eSgkcGFyYW1zWydhY3RpdmVfdGFiJ10pKQogIHsKICAgICR0YWIgPSAkcGFyYW1zWydhY3RpdmVfdGFiJ107CiAgfSBlbHNlIHsKICAkdGFiID0gJ3JlbmNvbnRyZXMnOwogfQkKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignam91ZXVycycsICdKb3VldXJzJywgKCdqb3VldXJzJyA9PSAkdGFiKT90cnVlOmZhbHNlKTsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignZXF1aXBlcycsICdFcXVpcGVzJywgKCdFcXVpcGVzJyA9PSAkdGFiKT90cnVlOmZhbHNlKTsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignaW5kaXZpZHVlbGxlcycsICdGRlRUJyAsICgnaW5kaXZpZHVlbGxlcycgPT0gJHRhYik/dHJ1ZTpmYWxzZSk7CgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3Jlc3VsdHMnLCAnU1BJRCcgLCAoJ3Jlc3VsdHMnID09ICR0YWIpP3RydWU6ZmFsc2UpOwoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdjb21wZXRzJywgJ0NvbXDDqXRpdGlvbnMnICwgKCdjb21wZXQnID09ICR0YWIpP3RydWU6ZmFsc2UpOwoJCgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3BvdWxlcycsICdSw6lzdWx0YXRzIGRlcyBwb3VsZXMnLCAoJ1LDqXN1bHRhdHMgZGVzIHBvdWxlcycgPT0gJHRhYik/dHJ1ZTpmYWxzZSk7CgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3JlY3VwZXJhdGlvbicsICdSZWN1cMOpcmF0aW9uJywgKCdSw6ljdXDDqXJhdGlvbicgPT0gJHRhYik/dHJ1ZTpmYWxzZSk7CgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3NpdHVhdGlvbicsICdTaXR1YXRpb24gbWVuc3VlbGxlJywgKCdTaXR1YXRpb24gbWVuc3VlbGxlJyA9PSAkdGFiKT90cnVlOmZhbHNlKTsKCWVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignam91cm5hbCcsICdKb3VybmFsJywgKCdKb3VybmFsJyA9PSAkdGFiKT90cnVlOmZhbHNlKTsKCQoJaWYoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBTZXQgUHJlZnMnKSl7CgkJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdjb25maWd1cmF0aW9uJywgJ0NvbmZpZ3VyYXRpb24nICwgKCdjb25maWd1cmF0aW9uJyA9PSAkdGFiKT90cnVlOmZhbHNlKTsKCX0KCmVjaG8gJHRoaXMtPkVuZFRhYkhlYWRlcnMoKTsKCmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOwoJCgllY2hvICR0aGlzLT5TdGFydFRhYignam91ZXVycycsICRwYXJhbXMpOwogICAgCWluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9hY3Rpb24uYWRtaW5fam91ZXVyc190YWIucGhwJyk7CiAgIAllY2hvICR0aGlzLT5FbmRUYWIoKTsKCgllY2hvICR0aGlzLT5TdGFydFRhYignZXF1aXBlcycgLCAkcGFyYW1zKTsKICAgIAlpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvYWN0aW9uLmFkbWluX3RlYW1zX3RhYi5waHAnKTsKICAgCWVjaG8gJHRoaXMtPkVuZFRhYigpOwoKICAgICAgICBlY2hvICR0aGlzLT5TdGFydFRhYignSW5kaXZpZHVlbGxlcycsICRwYXJhbXMpOy8vRkZUVAogICAgCWluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9hY3Rpb24uYWRtaW5faW5kaXZzX3RhYi5waHAnKTsKICAgCWVjaG8gJHRoaXMtPkVuZFRhYigpOwogCgllY2hvICR0aGlzLT5TdGFydFRhYigncmVzdWx0cycgLCAkcGFyYW1zKTsvL1NwaWQKICAgIAlpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvYWN0aW9uLnZpZXdfdXNlcl9nbG9iYWxfcmVzdWx0cy5waHAnKTsKICAgCWVjaG8gJHRoaXMtPkVuZFRhYigpOwoKICAgICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdjb21wZXRzJyAsICRwYXJhbXMpOwogICAgCWluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5hZG1pbl9jb21wZXRpdGlvbnNfdGFiLnBocCcpOwogICAJZWNobyAkdGhpcy0+RW5kVGFiKCk7IAkKCgllY2hvICR0aGlzLT5TdGFydFRhYigncG91bGVzJyAsICRwYXJhbXMpOwogICAgCWluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9hY3Rpb24uYWRtaW5fcG91bGVzX3RhYi5waHAnKTsKICAgCWVjaG8gJHRoaXMtPkVuZFRhYigpOwoKCgllY2hvICR0aGlzLT5TdGFydFRhYigncmVjdXBlcmF0aW9uJyAsICRwYXJhbXMpOwogICAgCWluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5hZG1pbl9qb3VldXJzX3JlY3VwX3RhYi5waHAnKTsKICAgCWVjaG8gJHRoaXMtPkVuZFRhYigpOwoKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdzaXR1YXRpb24nICwgJHBhcmFtcyk7CiAgICAJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2FjdGlvbi5hZG1pbl9zaXR1YXRpb25fbWVuc3VlbGxlX3RhYi5waHAnKTsKICAgCWVjaG8gJHRoaXMtPkVuZFRhYigpOwoKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdqb3VybmFsJywgJHBhcmFtcyk7CiAgICAJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2FjdGlvbi5hZG1pbl9kYXRhX3RhYi5waHAnKTsKICAgCWVjaG8gJHRoaXMtPkVuZFRhYigpOwppZigkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFNldCBQcmVmcycpKXsKCWVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdjb25maWd1cmF0aW9uJyAsICRwYXJhbXMpOwoJaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmFkbWluX29wdGlvbnNfdGFiLnBocCcpOwoJZWNobyAkdGhpcy0+RW5kVGFiKCk7Cn0KZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOwovL29uIGEgcmVmZXJtw6kgbGVzIG9uZ2xldHMKCi8vZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbl9wYW5lbC50cGwnKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.delete_contact.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCQlpZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKJG1lc3NhZ2UgPSAnJzsKCgkJaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIE1hbmFnZScpKQoJCXsKCQkkcGFyYW1zID0gYXJyYXkoJ21lc3NhZ2UnPT5MYW5nKCduZWVkcGVybWlzc2lvbicpLCAnYWN0aXZlX3RhYicgPT4gJ3VzZXJzJyk7CgkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsJycsICRwYXJhbXMpOwoJCS8qZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSk7CgkJcmV0dXJuOyovCgkJfQoKCQkkcmVjb3JkX2lkID0gJyc7CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ3JlY29yZF9pZCddKSkKCQl7CgkJCSRyZWNvcmRfaWQgPSAkcGFyYW1zWydyZWNvcmRfaWQnXTsKCQl9CgkJJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jb21tIFdIRVJFIGlkID0gPyI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcmVjb3JkX2lkKSk7CgkJaWYoISRkYnJlc3VsdCl7CgkJCSRtZXNzYWdlLj0kZGItPkVycm9yTXNnKCk7CgkJfQoJCQoKJHRoaXMtPlNldE1lc3NhZ2UoIiRtZXNzYWdlIik7CiR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.delete_result.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCQlpZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCgoJCWlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKCQl7CgkJJHBhcmFtcyA9IGFycmF5KCdtZXNzYWdlJz0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSwgJ2FjdGl2ZV90YWInID0+ICd1c2VycycpOwoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCcnLCAkcGFyYW1zKTsKCQkvKmVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJykpOwoJCXJldHVybjsqLwoJCX0KCgkJJHJlY29yZF9pZCA9ICcnOwoJCWlmIChpc3NldCgkcGFyYW1zWydyZWNvcmRfaWQnXSkpCgkJewoJCQkkcmVjb3JkX2lkID0gJHBhcmFtc1sncmVjb3JkX2lkJ107CgkJfQoKCQkvL05vdyByZW1vdmUgdGhlIGFydGljbGUKCQkkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBXSEVSRSBpZCA9ID8iOwoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCiR0aGlzLT5TZXRNZXNzYWdlKCdSw6lzdWx0YXQgc3VwcHJpbcOpJyk7CiR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3Jlc3VsdHMnKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.delete_sit_mens.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCQlpZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCgoJCWlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKCQl7CgkJJHBhcmFtcyA9IGFycmF5KCdtZXNzYWdlJz0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSwgJ2FjdGl2ZV90YWInID0+ICd1c2VycycpOwoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCcnLCAkcGFyYW1zKTsKCQkvKmVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJykpOwoJCXJldHVybjsqLwoJCX0KCgkJJHJlY29yZF9pZCA9ICcnOwoJCWlmIChpc3NldCgkcGFyYW1zWydyZWNvcmRfaWQnXSkpCgkJewoJCQkkcmVjb3JkX2lkID0gJHBhcmFtc1sncmVjb3JkX2lkJ107CgkJfQoKCQkvL05vdyByZW1vdmUgdGhlIGFydGljbGUKCQkkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIFdIRVJFIGlkID0gPyI7CgkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJlY29yZF9pZCkpOwoKJHRoaXMtPlNldE1lc3NhZ2UoJ1NpdHVhdGlvbiBtZW5zdWVsbGUgc3VwcHJpbcOpZScpOwokdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzaXR1YXRpb24nKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.delete_team.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCQlpZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCgoJCWlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKCQl7CgkJJHBhcmFtcyA9IGFycmF5KCdtZXNzYWdlJz0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSwgJ2FjdGl2ZV90YWInID0+ICd1c2VycycpOwoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCcnLCAkcGFyYW1zKTsKCQkvKmVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJykpOwoJCXJldHVybjsqLwoJCX0KCgkJJHJlY29yZF9pZCA9ICcnOwoJCWlmIChpc3NldCgkcGFyYW1zWydyZWNvcmRfaWQnXSkpCgkJewoJCQkkcmVjb3JkX2lkID0gJHBhcmFtc1sncmVjb3JkX2lkJ107CgkJfQoJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcyBXSEVSRSBpZCA9ID8iOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHJlY29yZF9pZCkpOwoJCQoKJHRoaXMtPlNldE1lc3NhZ2UoJ0VxdWlwZSBzdXBwcmltw6llJyk7CiR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2VxdWlwZXMnKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.delete_team_result.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCQlpZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CgoJCWlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKCQl7CgkJJHBhcmFtcyA9IGFycmF5KCdtZXNzYWdlJz0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSwgJ2FjdGl2ZV90YWInID0+ICd1c2VycycpOwoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCcnLCAkcGFyYW1zKTsKCQkvKmVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJykpOwoJCXJldHVybjsqLwoJCX0KCgkJJHJlY29yZF9pZCA9ICcnOwoJCWlmIChpc3NldCgkcGFyYW1zWydyZWNvcmRfaWQnXSkpCgkJewoJCQkkcmVjb3JkX2lkID0gJHBhcmFtc1sncmVjb3JkX2lkJ107CgkJfQoJCQoJCS8vTm93IHJlbW92ZSB0aGUgYXJ0aWNsZQoJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG91bGVzX3JlbmNvbnRyZXMgV0hFUkUgaWQgPSA/IjsKCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmVjb3JkX2lkKSk7CgkJCi8qCiR0aGlzLT5TZXRNZXNzYWdlKCdSw6lzdWx0YXQgc3VwcHJpbcOpJyk7CiR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3Jlc3VsdHMnKTsKKi8KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.delete_user.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCQlpZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCgoJCWlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKCQl7CgkJJHBhcmFtcyA9IGFycmF5KCdtZXNzYWdlJz0+TGFuZygnbmVlZHBlcm1pc3Npb24nKSwgJ2FjdGl2ZV90YWInID0+ICd1c2VycycpOwoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCcnLCAkcGFyYW1zKTsKCQkvKmVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJykpOwoJCXJldHVybjsqLwoJCX0KCgkJJHJlY29yZF9pZCA9ICcnOwoJCWlmIChpc3NldCgkcGFyYW1zWydyZWNvcmRfaWQnXSkpCgkJewoJCQkkcmVjb3JkX2lkID0gJHBhcmFtc1sncmVjb3JkX2lkJ107CgkJfQoKCQkvL05vdyByZW1vdmUgdGhlIGFydGljbGUKCQkkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvaW50cyBXSEVSRSBpZCA9ID8iOwoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCiRwYXJhbXMgPSBhcnJheSgnbWVzc2FnZSc9PiAndXNlcl9kZWxldGVkJywgJ2FjdGl2ZV90YWInID0+ICd1c2VycycpOwokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJycsICRwYXJhbXMpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.display_unable_players.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7Ci8vcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19maWxlX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwoKJHNtYXJ0eS0+YXNzaWduKCdpZCcsICR0aGlzLT5MYW5nKCdpZCcpKTsKJHNtYXJ0eS0+YXNzaWduKCd1c2VybmFtZScsICdKb3VldXInKTsKJHNtYXJ0eS0+YXNzaWduKCdwb2ludHMnLCAnUG9pbnRzJyk7CiRzYWlzb24gPSAnMjAxMy0yMDE0JzsKJG1vaXNfY291cmFudCA9IGRhdGUoJ24nKTsKJGFubmVlX2NvdXJhbnRlID0gZGF0ZSgnWScpOwovLyRtb250aCA9IG1vaXNfZnJhbmNhaXMoIiRtb2lzX2NvdXJhbnQiKTsKLy9lY2hvICJsZSBtb2lzIGVuIGZyYW7Dp2FpcyA6ICIuJG1vbnRoOwovLyRzbWFydHktPmFzc2lnbignbW9pcy1lbi1mcmFuY2FpcycsICIkbW9udGgiKTsKJHNpdF9jb3VyYW50ZSA9ICdKdWluIDIwMTQnOwokc21hcnR5LT5hc3NpZ24oJ3NpdF9jb3VyYW50ZScsICIkc2l0X2NvdXJhbnRlIik7CiRzbWFydHktPmFzc2lnbignZGlzcGxheV9lbmFibGVfcGxheWVycycsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRtaW5fam91ZXVyc19yZWN1cF90YWInLCAkcmV0dXJuaWQsICdKb3VldXJzIGFjdGlmcycpKTsKCgokcmVzdWx0PSBhcnJheSAoKTsKLy9TRUxFQ1QgKiBGUk9NIHBpbmdfbW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyBBUyByZWMgcmlnaHQgSk9JTiBwaW5nX21vZHVsZV9waW5nX2pvdWV1cnMgQVMgaiBPTiBqLmxpY2VuY2UgPSByZWMubGljZW5jZSAgT1JERVIgQlkgai5pZCBBU0MKJHF1ZXJ5PSAiU0VMRUNUIGlkLCBDT05DQVRfV1MoJyAnLG5vbSwgcHJlbm9tKSBBUyBqb3VldXIsIGxpY2VuY2UsIGFjdGlmIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgIFdIRVJFIGFjdGlmID0gJzAnICBPUkRFUiBCWSBpZCBBU0MiOwovL2VjaG8gJHF1ZXJ5OwokZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwokcm93Y2xhc3M9ICdyb3cxJzsKJHJvd2FycmF5PSBhcnJheSAoKTsKaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIHsKCQoJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7Cgkkb25lcm93LT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJJG9uZXJvdy0+aWQ9ICRyb3dbJ2lkJ107Cgkkb25lcm93LT5qb3VldXI9ICRyb3dbJ2pvdWV1ciddOwoJLy8kb25lcm93LT5wcmVub209ICRyb3dbJ3ByZW5vbSddOwoJCglpZigkcm93WydhY3RpZiddID09JzEnKXsKCQkkb25lcm93LT5lZGl0bGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAndW5hYmxlX3BsYXllcicsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsICR0aGlzLT5MYW5nKCd1bmFibGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgl9CgllbHNlIHsKCQkkb25lcm93LT5lZGl0bGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZW5hYmxlX3BsYXllcicsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9mYWxzZS5naWYnLCAkdGhpcy0+TGFuZygnZW5hYmxlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJfQoJLy8kb25lcm93LT5lZGl0bGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAndW5hYmxlX3BsYXllcicsICRyZXR1cm5pZCwgJ0TDqXNhY3RpdmVyJyxhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJJG9uZXJvdy0+c2l0bWVuc2xpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3NpdF9tZW5zJywgJHJldHVybmlkLCAnU2l0dWF0aW9uIG1lbnN1ZWxsZScsIGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgkkb25lcm93LT5nZXRwYXJ0aWVzbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfcGFydGllcycsICRyZXR1cm5pZCwgJ1BhcnRpZXMgZGlzcHV0w6llcycsIGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgkkb25lcm93LT5nZXRwYXJ0aWVzc3BpZD0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfcGFydGllc19zcGlkJywgJHJldHVybmlkLCAnUGFydGllcyBTUElEJywgYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pKTsKCSRvbmVyb3ctPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZV9qb3VldXInLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSksICR0aGlzLT5MYW5nKCdkZWxldGVfcmVzdWx0X2NvbmZpcm0nKSk7CgkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIH0KICB9CiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKJHNtYXJ0eS0+YXNzaWduKCdyZXRyaWV2ZV91c2VycycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3VzZXJzJywgJHJldHVybmlkLCdSw6ljdXDDqXJhdGlvbiBkZSB0b3VzIGxlcyBqb3VldXJzJykpOwokc21hcnR5LT5hc3NpZ24oJ2NyZWF0ZWxpbmsnLCAKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdjcmVhdGVfbmV3X3VzZXIzJywgJHJldHVybmlkLAoJCQkJICAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+TGFuZygnYWRkbmV3c2hlZXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpKS4KCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdjcmVhdGVfbmV3X3VzZXIzJywgJHJldHVybmlkLCAKCQkJCSAgJHRoaXMtPkxhbmcoJ2FkZG5ld3NoZWV0JyksIAoJCQkJICBhcnJheSgpKSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3VuYWJsZV9wbGF5ZXJzLnRwbCcpOwoKCiMKIyBFT0YKIwo/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[PD9waHAKCgppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgpkZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7Ci8vaWYgKGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSkgeyAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkKTsgfQpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5jYWxjdWxzLnBocCcpOwokZGVzaWduYXRpb24gPSAnJzsKLy9lY2hvICRwYXJhbXNbJ2lyZWNvcmRfaWQnXTsKLyoKCQlpZiAoISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBDb21tZW50cycpKQoJCXsKCQkJZWNobyAnPHAgY2xhc3M9ImVycm9yIj4nLiR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicsIGFycmF5KCdNYW5hZ2UgQ29tbWVudHMnKSkuJzwvcD4nOwoJCQlyZXR1cm47CgkJfQoqLwoJCS8qJGlkX3VzZXIgPSAnJzsqLwoJCWlmICggaXNzZXQoJHBhcmFtc1sncmVjb3JkX2lkJ10gKSkKCQl7CgkJCSRyZWNvcmRfaWQgPSAkcGFyYW1zWydyZWNvcmRfaWQnXTsKCQl9CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2VwcmV1dmUnXSkpIHsKCQkJJGVwcmV1dmUgPSAkcGFyYW1zWydlcHJldXZlJ107CgkJCSRjb2VmZmljaWVudCA9IGNvZWZmKCRlcHJldXZlKTsKCQkJLyoKCQkJJHF1ZXJ5ID0iU0VMRUNUIGNvZWZmaWNpZW50IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbXBldGl0aW9ucyBXSEVSRSBjb2RlX2NvbXBldCA9ID8iOwoJCQkkZGJyZXRvdXIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkdHlwZV9jb21wZXQpKTsKCQkJaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQoJCQkgIHsKCQkJICAgIHdoaWxlICgkcm93PSAkZGJyZXRvdXItPkZldGNoUm93KCkpCgkJCSAgICAgIHsKCQkJCSRjb2VmZiA9ICRyb3dbJ2NvZWZmaWNpZW50J107CgkJCQl9CgkJCX0KCQkJKi8KCQl9CgkJCgkJCQoJCWlmIChpc3NldCgkcGFyYW1zWydudW1qb3VybiddKSkKCQl7CgkJCSRudW1qb3VybiA9ICRwYXJhbXNbJ251bWpvdXJuJ107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydub20nXSkpCgkJewoJCQkkbm9tID0gJHBhcmFtc1snbm9tJ107CgkJfQoJCQoJCWlmIChpc3NldCgkcGFyYW1zWydjbGFzc2VtZW50J10pKQoJCXsKCQkJJGNsYXNzZW1lbnQgPSAkcGFyYW1zWydjbGFzc2VtZW50J107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydlY2FydCddKSkKCQl7CgkJCSRlY2FydCA9ICRwYXJhbXNbJ2VjYXJ0J107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydjb2VmZiddKSkKCQl7CgkJCSRjb2VmZiA9ICRwYXJhbXNbJ2NvZWZmJ107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWyd2aWN0b2lyZSddKSkKCQl7CgkJCSR2aWN0b2lyZSA9ICRwYXJhbXNbJ3ZpY3RvaXJlJ107CgkJfQoJCS8vb24gdsOpcmlmaWUgbGUgY29lZmYgZGUgbCfDqXByZXV2ZSA6IAoJCQlpZiAoJGNvZWZmaWNpZW50ICE9JGNvZWZmKXsKCQkJCSRkZXNpZ25hdGlvbi49IkxlIGNvZWZmaWNpZW50IGV0IGwnw6lwcmV1dmUgbmUgY29ycmVzcG9uZGVudCBwYXMgISI7CgkJCX0KCQkvL29uIGZhaXQgbGVzIGNhbGN1bHMgbsOpY2Vzc2FpcmVzCgkJCgkJLy90b3V0IGQnYWJvcmQsIHkgYSB0LWlsIGV1IGZvcmZhaXQgPwoJCS8vU2kgb3VpLCBpbnV0aWxlIGRlIGNhbGN1bGVyIGxlcyBwb2ludHMKCQkKCQkJaWYoJGZvcmZhaXQgPT0xKXsKCQkJCSRwb2ludHJlcyA9IDA7CgkJCX0KCQkJZWxzZXsKCQkJCS8vb24gZMOpdGVybWluZSBsZSB0eXBlIGQnw6ljYXJ0IGVudHJlIGxlcyBkZXV4IGpvdWV1cnMKCQkJCSR0eXBlX2VjYXJ0ID0gQ2FsY3VsRWNhcnQoJGVjYXJ0KTsKCQkJCSRwb2ludHMxID0gQ2FsY3VsUG9pbnRzSW5kaXZzKCR0eXBlX2VjYXJ0LCAkdmljdG9pcmUpOwoJCQkJJHBvaW50cmVzID0gJHBvaW50czEqJGNvZWZmOyAKCQkJCQoJCQl9CgkJCgkJCgkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIFNFVCBub20gPSA/LCBudW1qb3VybiA9ID8sIGNsYXNzZW1lbnQgPSA/LCB2aWN0b2lyZSA9ID8sIGVjYXJ0ID0gPywgY29lZmYgPSA/LCBwb2ludHJlcyA9ID8gV0hFUkUgaWQgPSA/IjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbm9tLCAkbnVtam91cm4sICRjbGFzc2VtZW50LCAkdmljdG9pcmUsICRlY2FydCwgJGNvZWZmLCRwb2ludHJlcywgJHJlY29yZF9pZCkpOwoJCWlmICghJGRicmVzdWx0KSB7CgkJCSRkZXNpZ25hdGlvbi49JGRiLT5FcnJvck1zZygpOwoJCX0KCQllbHNlIHsKCQkJCgkJCSRkZXNpZ25hdGlvbi49IkVucmVnaXN0cmVtZW50IG1vZGlmacOpLiI7CgkJfQoJCQoJCSR0aGlzLT5TZXRNZXNzYWdlKCRkZXNpZ25hdGlvbik7CgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncmVzdWx0cycpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.do_edit_team.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCgppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7Ci8vZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwovL2lmIChpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkpIHsgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCk7IH0KZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5jYWxjdWxzLnBocCcpOwovL2VjaG8gJHBhcmFtc1sncmVjb3JkX2lkJ107Ci8qCgkJaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNYW5hZ2UgQ29tbWVudHMnKSkKCQl7CgkJCWVjaG8gJzxwIGNsYXNzPSJlcnJvciI+Jy4kdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nLCBhcnJheSgnTWFuYWdlIENvbW1lbnRzJykpLic8L3A+JzsKCQkJcmV0dXJuOwoJCX0KKi8KCQkvKk9uIHLDqWN1cMOocmUgbGVzIHZhcmlhYmxlIGV0IG9uIGxlcyB0cmFpdGUgKi8KCQkkcmVjb3JkX2lkID0gJyc7CgkJaWYoICFpc3NldCggJHBhcmFtc1sncmVjb3JkX2lkJ10gKSB8fCAkcGFyYW1zWydyZWNvcmRfaWQnXSA9PSAnJykgICAgCgkJewoKCQkJJG1lc3NhZ2UgPSAkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJyk7CgkJCSR0aGlzLT5TZXRNZXNzYWdlKCIkbWVzc2FnZSIpOwoJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdlcXVpcGVzJyk7CgkJfQoJCSRpZCA9ICRwYXJhbXNbJ3JlY29yZF9pZCddOwoJCWlmIChpc3NldCgkcGFyYW1zWydzYWlzb24nXSkpCgkJewoJCQkkc2Fpc29uID0gJHBhcmFtc1snc2Fpc29uJ107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydwaGFzZSddKSkKCQl7CgkJCSRwaGFzZSA9ICRwYXJhbXNbJ3BoYXNlJ107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydsaWJlcXVpcGUnXSkpCgkJewoJCQkkbGliZXF1aXBlID0gJHBhcmFtc1snbGliZXF1aXBlJ107CgkJfQoJCQoJCWlmIChpc3NldCgkcGFyYW1zWydsaWJkaXZpc2lvbiddKSkKCQl7CgkJCSRsaWJkaXZpc2lvbiA9ICRwYXJhbXNbJ2xpYmRpdmlzaW9uJ107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydmcmllbmRseW5hbWUnXSkpCgkJewoJCQkkZnJpZW5kbHluYW1lID0gJHBhcmFtc1snZnJpZW5kbHluYW1lJ107CgkJfQoJCQoJCQkvL29uIGEgcGFzIGRlIG1vZGlmaWNhdGlvbiBkdSBjb2VmZiwgb24gY2hhbmdlIHNpbXBsZW1lbnQgbGVzIGRvbm7DqWVzIHNhbnMgcmVjYWxjdWxlcgoJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIFNFVCAgc2Fpc29uID0gPywgcGhhc2UgPSA/LCBsaWJlcXVpcGUgPSA/LCBsaWJkaXZpc2lvbiA9ID8gLCBmcmllbmRseW5hbWUgPSA/IFdIRVJFIGlkID0gPyI7CgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRzYWlzb24sJHBoYXNlLCRsaWJlcXVpcGUsICRsaWJkaXZpc2lvbiwkZnJpZW5kbHluYW1lLCRpZCkpOwoJCQkvL2VjaG8gJHF1ZXJ5OwoJCgkJaWYgKCEkZGJyZXN1bHQpIHsKCQkJJG1lc3NhZ2UgPSAgJGRiLT5FcnJvck1zZygpOwoJCS8vCWVjaG8gJGRiLT5zcWwuIjxici8+IjsKCQkvLwkgICAgZWNobyAkZGItPkVycm9yTXNnKCk7CgkJCQkKCQl9CgkJZWxzZSB7CgkJCSRtZXNzYWdlID0gJ0VxdWlwZSBtaXNlIMOgIGpvdXInOwoJCX0KCQkKCQkKCQkkdGhpcy0+U2V0TWVzc2FnZSgiJG1lc3NhZ2UiKTsKCgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignZXF1aXBlcycpOwo/Pg==]]></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[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKICB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCXJldHVybjsKICAgCiAgfQoKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ3Jlc3VsdHMnKTsKJGRiID0mICR0aGlzLT5HZXREYigpOwovLyRyZWNvcmRfaWQgPSAkcGFyYW1zWydyZWNvcmRfaWQnXTsKaWYoIGlzc2V0KCAkcGFyYW1zWydtZXNzYWdlJ10gKSApCiAgewogICAgJHNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJyxodG1sX2VudGl0eV9kZWNvZGUoJHBhcmFtc1snbWVzc2FnZSddKSk7CiAgfQppZiggaXNzZXQoICRwYXJhbXNbJ2Vycm9yJ10gKSApCiAgewogICAgJHNtYXJ0eS0+YXNzaWduKCdlcnJvcicsaHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbJ2Vycm9yJ10pKTsKICB9CgoKCiRyZWNvcmRfaWQgPSAnJzsKaWYoICFpc3NldCggJHBhcmFtc1sncmVjb3JkX2lkJ10gKSB8fCAkcGFyYW1zWydyZWNvcmRfaWQnXSA9PSAnJykgICAgCnsKCQoJJHBhcmFtc1snbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcycpOwoJICAgICRwYXJhbXNbJ2Vycm9yJ10gPSAxOwoJICAgICR0aGlzLT5SZWRpcmVjdCggJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zICk7CgkgICAgcmV0dXJuOwp9CgogICAgLy8gZmluZCB0aGUgdXNlcgogICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBXSEVSRSBpZCA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5HZXRSb3coJHF1ZXJ5LCBhcnJheSggJHBhcmFtc1sncmVjb3JkX2lkJ10gKSk7CiAgICBpZiggISRkYnJlc3VsdCkKICAgICAgewoJJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ2Vycm9yX3Jlc3VsdG5vdGZvdW5kJykpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncmVzdWx0cycpOwoJcmV0dXJuOwogICAgICB9CgllbHNlCgl7CgkJJGVwcmV1dmUgPSAkZGJyZXN1bHRbJ2VwcmV1dmUnXTsKCQkkbnVtam91cm4gPSAkZGJyZXN1bHRbJ251bWpvdXJuJ107CgkJLy8kZXF1aXBlID0gJGRicmVzdWx0WydlcXVpcGUnXTsKCQkkbm9tID0gJGRicmVzdWx0Wydub20nXTsKCQkkY2xhc3NlbWVudCA9ICRkYnJlc3VsdFsnY2xhc3NlbWVudCddOwoJCSRlY2FydCA9ICRkYnJlc3VsdFsnZWNhcnQnXTsKCQkkY29lZmYgPSAkZGJyZXN1bHRbJ2NvZWZmJ107CgkJJHZpY3RvaXJlID0gJGRicmVzdWx0Wyd2aWN0b2lyZSddOwoJCSRwb2ludHMgPSAkZGJyZXN1bHRbJ3BvaW50cyddOwoJCSRmb3JmYWl0ID0gJGRicmVzdWx0Wydmb3JmYWl0J107CgkJCn0KCiAgIAogICAgJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLAoJCSAgICAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCAkaWQsICdkb19lZGl0X3Jlc3VsdCcsICRyZXR1cm5pZCApICk7CiAgICAkc21hcnR5LT5hc3NpZ24oJ3JlY29yZF9pZCcsCgkJICAgICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbiggJGlkLCAncmVjb3JkX2lkJywgJHBhcmFtc1sncmVjb3JkX2lkJ10gKSk7CgogICAKJHNtYXJ0eS0+YXNzaWduKCdlcHJldXZlJywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdlcHJldXZlJywkZXByZXV2ZSw4MCwxNTApKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdG91cicsCgkJJHRoaXMtPkxhbmcoJ3RvdXInKSk7CiRzbWFydHktPmFzc2lnbignbnVtam91cm4nLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdudW1qb3VybicsJG51bWpvdXJuLDUsMTApKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZXF1aXBlJywKCQkkdGhpcy0+TGFuZygnZXF1aXBlJykpOwokc21hcnR5LT5hc3NpZ24oJ25vbScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdub20nLCRub20sOTAsMTUwKSk7Ci8qKi8KCiRzbWFydHktPmFzc2lnbigncHJvbXB0X2pvdWV1cicsCgkJJHRoaXMtPkxhbmcoJ2pvdWV1cicpKTsKJHNtYXJ0eS0+YXNzaWduKCdjbGFzc2VtZW50JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2NsYXNzZW1lbnQnLCRjbGFzc2VtZW50LDMwLDgwKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2VjYXJ0JywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2VjYXJ0JywkZWNhcnQsMTAsODApKTsKCQkJCQkKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfYWR2ZXJzYWlyZScsCgkJJHRoaXMtPkxhbmcoJ2FkdmVyc2FpcmUnKSk7CiRzbWFydHktPmFzc2lnbignYWR2ZXJzYWlyZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdhZHZlcnNhaXJlJywkYWR2ZXJzYWlyZSw4MCwxNTApKTsKCQkkc21hcnR5LT5hc3NpZ24oJ3B0c19hZHZlcnNhaXJlJywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAncHRzX2FkdmVyc2FpcmUnLCRwdHNfYWR2ZXJzYWlyZSwxMCwxNTApKTsKCQkJCQkKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdmljdG9pcmVfZGVmYWl0ZScsCgkJJHRoaXMtPkxhbmcoJ3ZpY19kZWYnKSk7CgkJCgkJJHNtYXJ0eS0+YXNzaWduKCd2aWN0b2lyZScsCgkJCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICd2aWN0b2lyZScsJGl0ZW1zID0gYXJyYXkoIlYiPT4iMSIsIkQiPT4iMCIpLCRzZWxlY3RlZGluZGV4PSR2aWN0b2lyZSwgJHNlbGVjdGVkdmFsdWU9JHZpY3RvaXJlLDUpKTsKLyoJCQokc21hcnR5LT5hc3NpZ24oJ3ZpY19kZWYnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAndmljX2RlZicsJHZpY19kZWYsNSwxMCkpOwoqLwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9wb2ludHMnLAoJCSR0aGlzLT5MYW5nKCdwb2ludHMnKSk7CgkJJGl0ZW1zY29lZmYgPSAKJHNtYXJ0eS0+YXNzaWduKCdjb2VmZicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnY29lZmYnLCRpdGVtc2NvZWZmID0gYXJyYXkoIjAiPT4iMC4wMCIsICIwLDUiPT4iMC41MCIsIjAsNzUiPT4iMC43NSIsICIxIj0+IjEuMDAiLCAiMSwyNSI9PiIxLjI1IiwgIjEsNSI9PiIxLjUwIiksJHNlbGVjdGVkaW5kZXg9JGNvZWZmLHZpY3RvaXJlLCAkc2VsZWN0ZWR2YWx1ZT0kY29lZmYsNSkpOwkJCQkJCgkJCQkJCQkJCQkJCQkJCQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnc3VibWl0JyksICdjbGFzcz0iYnV0dG9uIicpKTsKJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdjYW5jZWwnLAoJCQkJCQkkdGhpcy0+TGFuZygnY2FuY2VsJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdiYWNrJywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnYmFjaycsCgkJCQkJCSR0aGlzLT5MYW5nKCdiYWNrJykpKTsKCiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdlZGl0cmVzdWx0LnRwbCcpOwoKIwojIEVPRgojCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.edit_results.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKICB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCXJldHVybjsKICAgCiAgfQppZiggaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pICkKICB7CiAgICAkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZW5jb250cmVzJyk7CiAgICByZXR1cm47CiAgfQoKJHRoaXMtPlNldEN1cnJlbnRUYWIoJ3VzZXJzJyk7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKLy8kcmVjb3JkX2lkID0gJHBhcmFtc1sncmVjb3JkX2lkJ107CmlmKCBpc3NldCggJHBhcmFtc1snbWVzc2FnZSddICkgKQogIHsKICAgICRzbWFydHktPmFzc2lnbignbWVzc2FnZScsaHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbJ21lc3NhZ2UnXSkpOwogIH0KaWYoIGlzc2V0KCAkcGFyYW1zWydlcnJvciddICkgKQogIHsKICAgICRzbWFydHktPmFzc2lnbignZXJyb3InLGh0bWxfZW50aXR5X2RlY29kZSgkcGFyYW1zWydlcnJvciddKSk7CiAgfQoKCgokcmVjb3JkX2lkID0gJyc7CmlmKCAhaXNzZXQoICRwYXJhbXNbJ3JlY29yZF9pZCddICkgfHwgJHBhcmFtc1sncmVjb3JkX2lkJ10gPT0gJycpICAgIAp7CgkKCSRwYXJhbXNbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdlcnJvcl9pbnN1ZmZpY2llbnRwYXJhbXMnKTsKCSAgICAkcGFyYW1zWydlcnJvciddID0gMTsKCSAgICAkdGhpcy0+UmVkaXJlY3QoICRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyApOwoJICAgIHJldHVybjsKfQoKICAgIC8vIGZpbmQgdGhlIHVzZXIKICAgICRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb2ludHMgV0hFUkUgaWQgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+R2V0Um93KCRxdWVyeSwgYXJyYXkoICRwYXJhbXNbJ3JlY29yZF9pZCddICkpOwogICAgaWYoICEkZGJyZXN1bHQpCiAgICAgIHsKCSR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfcmVzdWx0bm90Zm91bmQnKSk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKHJlc3VsdHMsICRwYXJhbXMpOwoJcmV0dXJuOwogICAgICB9CgllbHNlCgl7CgkJJHR5cGVfY29tcGV0ID0gJGRicmVzdWx0Wyd0eXBlX2NvbXBldCddOwoJCSR0b3VyID0gJGRicmVzdWx0Wyd0b3VyJ107CgkJJGVxdWlwZSA9ICRkYnJlc3VsdFsnZXF1aXBlJ107CgkJJGpvdWV1ciA9ICRkYnJlc3VsdFsnam91ZXVyJ107CgkJJHB0c19qb3VldXIgPSAkZGJyZXN1bHRbJ3B0c19qb3VldXInXTsKCQkkYWR2ZXJzYWlyZSA9ICRkYnJlc3VsdFsnYWR2ZXJzYWlyZSddOwoJCSRwdHNfYWR2ZXJzYWlyZSA9ICRkYnJlc3VsdFsncHRzX2FkdmVyc2FpcmUnXTsKCQkkdmljX2RlZiA9ICRkYnJlc3VsdFsndmljX2RlZiddOwoJCSRwb2ludHMgPSAkZGJyZXN1bHRbJ3BvaW50cyddOwoJCQp9CgogICAKICAgICRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywKCQkgICAgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCggJGlkLCAnZG9fZWRpdF9yZXN1bHQnLCAkcmV0dXJuaWQgKSApOwogICAgJHNtYXJ0eS0+YXNzaWduKCdyZWNvcmRfaWQnLAoJCSAgICAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oICRpZCwgJ3JlY29yZF9pZCcsICRwYXJhbXNbJ3JlY29yZF9pZCddICkpOwoKICAgCiRzbWFydHktPmFzc2lnbigndHlwZV9jb21wZXQnLAoJCQkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ3R5cGVfY29tcGV0JywkdHlwZV9jb21wZXQsNSwxMCkpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF90b3VyJywKCQkkdGhpcy0+TGFuZygndG91cicpKTsKJHNtYXJ0eS0+YXNzaWduKCd0b3VyJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwndG91cicsJHRvdXIsNSwxMCkpOwokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9lcXVpcGUnLAoJCSR0aGlzLT5MYW5nKCdlcXVpcGUnKSk7CiRzbWFydHktPmFzc2lnbignZXF1aXBlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2VxdWlwZScsJGVxdWlwZSwzMCwxNTApKTsKLyoqLwoKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfam91ZXVyJywKCQkkdGhpcy0+TGFuZygnam91ZXVyJykpOwokc21hcnR5LT5hc3NpZ24oJ2pvdWV1cicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdqb3VldXInLCRqb3VldXIsMzAsODApKTsKCiRzbWFydHktPmFzc2lnbigncHRzX2pvdWV1cicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdwdHNfam91ZXVyJywkcHRzX2pvdWV1ciwxMCw4MCkpOwoJCQkJCQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9hZHZlcnNhaXJlJywKCQkkdGhpcy0+TGFuZygnYWR2ZXJzYWlyZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdhZHZlcnNhaXJlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2FkdmVyc2FpcmUnLCRhZHZlcnNhaXJlLDgwLDE1MCkpOwoJCSRzbWFydHktPmFzc2lnbigncHRzX2FkdmVyc2FpcmUnLAoJCQkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdwdHNfYWR2ZXJzYWlyZScsJHB0c19hZHZlcnNhaXJlLDEwLDE1MCkpOwoJCQkJCQokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF92aWN0b2lyZV9kZWZhaXRlJywKCQkkdGhpcy0+TGFuZygndmljX2RlZicpKTsKCQkKCQkkc21hcnR5LT5hc3NpZ24oJ3ZpY19kZWYnLAoJCQkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAndmljX2RlZicsJGl0ZW1zID0gYXJyYXkoIlYiPT4iMSIsIkQiPT4iMCIpLCRzZWxlY3RlZGluZGV4PSR2aWNfZGVmLCAkc2VsZWN0ZWR2YWx1ZT0kdmljX2RlZiw1KSk7Ci8qCQkKJHNtYXJ0eS0+YXNzaWduKCd2aWNfZGVmJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3ZpY19kZWYnLCR2aWNfZGVmLDUsMTApKTsKKi8KJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfcG9pbnRzJywKCQkkdGhpcy0+TGFuZygncG9pbnRzJykpOwokc21hcnR5LT5hc3NpZ24oJ3BvaW50cycsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdwb2ludHMnLCRwb2ludHMsODAsMTUwKSk7CQkJCQkKCQkJCQkJCQkJCQkJCQkJCiRzbWFydHktPmFzc2lnbignc3VibWl0JywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdzdWJtaXQnKSwgJ2NsYXNzPSJidXR0b24iJykpOwokc21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2NhbmNlbCcsCgkJCQkJCSR0aGlzLT5MYW5nKCdjYW5jZWwnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2JhY2snLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCdiYWNrJywKCQkJCQkJJHRoaXMtPkxhbmcoJ2JhY2snKSkpOwoKJHNtYXJ0eS0+YXNzaWduKCdmb3JtZW5kJywKCQkkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2VkaXRyZXN1bHQudHBsJyk7CgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.edit_team.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXyknJykKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIE1hbmFnZScpKQogIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25lZWRwZXJtaXNzaW9uJykpOwoJcmV0dXJuOwogICAKICB9CgovLyR0aGlzLT5TZXRDdXJyZW50VGFiKCd1c2VycycpOwokZGIgPSYgJHRoaXMtPkdldERiKCk7Ci8vJHJlY29yZF9pZCA9ICRwYXJhbXNbJ3JlY29yZF9pZCddOwppZiggaXNzZXQoICRwYXJhbXNbJ21lc3NhZ2UnXSApICkKICB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLGh0bWxfZW50aXR5X2RlY29kZSgkcGFyYW1zWydtZXNzYWdlJ10pKTsKICB9CmlmKCBpc3NldCggJHBhcmFtc1snZXJyb3InXSApICkKICB7CiAgICAkc21hcnR5LT5hc3NpZ24oJ2Vycm9yJyxodG1sX2VudGl0eV9kZWNvZGUoJHBhcmFtc1snZXJyb3InXSkpOwogIH0KCgoKJHJlY29yZF9pZCA9ICcnOwppZiggIWlzc2V0KCAkcGFyYW1zWydyZWNvcmRfaWQnXSApIHx8ICRwYXJhbXNbJ3JlY29yZF9pZCddID09ICcnKSAgICAKewoJCgkkcGFyYW1zWydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnZXJyb3JfaW5zdWZmaWNpZW50cGFyYW1zJyk7CgkgICAgJHBhcmFtc1snZXJyb3InXSA9IDE7CgkkdGhpcy0+U2V0TWVzc2FnZSgiUGFyYW3DqHRyZXMgbWFucXVhbnRzIik7CgkgICAgJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignZXF1aXBlcycgKTsKCSAgICByZXR1cm47Cn0KCiAgICAvLyBmaW5kIHRoZSB1c2VyCiAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcyBXSEVSRSBpZCA9ID8iOwogICAgJGRicmVzdWx0ID0gJGRiLT5HZXRSb3coJHF1ZXJ5LCBhcnJheSggJHBhcmFtc1sncmVjb3JkX2lkJ10gKSk7CiAgICBpZigkZGJyZXN1bHQpCiAgICAgIAoJewoJCS8vbGlzdGUgZGVzIGRvbm7DqWVzIGEgYWZmaWNoZXIgZGFucyBsZSBmb3JtdWxhaXJlCgkJLy9zYWlzb24sIHBoYXNlLCBsaWJlcXVpcGUsbGliZGl2aXNpb24gZnJpZW5kbHluYW1lCgkJJHNhaXNvbiA9ICRkYnJlc3VsdFsnc2Fpc29uJ107CgkJJHBoYXNlID0gJGRicmVzdWx0WydwaGFzZSddOwoJCSRsaWJlcXVpcGUgPSAkZGJyZXN1bHRbJ2xpYmVxdWlwZSddOwoJCSRsaWJkaXZpc2lvbiA9ICRkYnJlc3VsdFsnbGliZGl2aXNpb24nXTsKCQkkZnJpZW5kbHluYW1lID0gJGRicmVzdWx0WydmcmllbmRseW5hbWUnXTsKCQkKCQkKCX0KLyoKJGNvbXBldGl0aW9uc0xpc3QgPSBhcnJheSgpOwokY29kZV9jb21wZXRMaXN0ID0gYXJyYXkoKTsKJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9waW5nX2NvbXBldGl0aW9ucyBXSEVSRSBpbmRpdnM9Ik5vbiInOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCXdoaWxlKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKXsKCQkJJGNvbXBldGl0aW9uc0xpc3RbJHJvd1snbmFtZSddXSA9ICRyb3dbJ2NvZGVfY29tcGV0J107CgkJCSRjb2RlX2NvbXBldExpc3RbJHJvd1snY29kZV9jb21wZXQnXV0gPSAkcm93Wydjb2RlX2NvbXBldCddOwoJCX0KKi8KICAKICAgICRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywKCQkgICAgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCggJGlkLCAnZG9fZWRpdF90ZWFtJywgJHJldHVybmlkICkgKTsKICAgICRzbWFydHktPmFzc2lnbigncmVjb3JkX2lkJywKCQkgICAgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCAkaWQsICdyZWNvcmRfaWQnLCAkcGFyYW1zWydyZWNvcmRfaWQnXSApKTsKJGxpc3RzYWlzb25zID0gYXJyYXkoJzIwMTMtMjAxNCc9PicyMDEzLTIwMTQnLCAnMjAxNC0yMDE1Jz0+JzIwMTQtMjAxNScpOwokbGlzdHBoYXNlID0gYXJyYXkoJzEnPT4nMScsICcyJz0+JzInKTsKICAgCiRzbWFydHktPmFzc2lnbignc2Fpc29uJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdzYWlzb24nLCRsaXN0c2Fpc29ucywkc2Fpc29uLCRzYWlzb24pKTsKJHNtYXJ0eS0+YXNzaWduKCdwaGFzZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAncGhhc2UnLCRsaXN0cGhhc2UsJHBoYXNlLCRwaGFzZSkpOwokc21hcnR5LT5hc3NpZ24oJ2xpYmVxdWlwZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdsaWJlcXVpcGUnLCRsaWJlcXVpcGUsMzAsMTUwKSk7CiRzbWFydHktPmFzc2lnbignbGliZGl2aXNpb24nLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnbGliZGl2aXNpb24nLCRsaWJkaXZpc2lvbiwzMCwxNTApKTsKJHNtYXJ0eS0+YXNzaWduKCdmcmllbmRseW5hbWUnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZnJpZW5kbHluYW1lJywkZnJpZW5kbHluYW1lLDEwLDgwKSk7CQkJCQkKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAkdGhpcy0+TGFuZygnc3VibWl0JyksICdjbGFzcz0iYnV0dG9uIicpKTsKJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2NhbmNlbCcsICR0aGlzLT5MYW5nKCdjYW5jZWwnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2JhY2snLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ2JhY2snLCAkdGhpcy0+TGFuZygnYmFjaycpKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdlZGl0dGVhbS50cGwnKTsKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.enable_player.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKICB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCXJldHVybjsKICAgCiAgfQoKCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKLy8kcmVjb3JkX2lkID0gJHBhcmFtc1sncmVjb3JkX2lkJ107CgokbGljZW5jZSA9ICcnOwppZiggIWlzc2V0KCAkcGFyYW1zWydsaWNlbmNlJ10gKSB8fCAkcGFyYW1zWydsaWNlbmNlJ10gPT0gJycpICAgIAp7CgkKCSR0aGlzLT5TZXRNZXNzYWdlKCJMaWNlbmNlIGFic2VudGUiKTsKCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdqb3VldXJzJyk7Cn0KCiAgICAvLyBmaW5kIHRoZSB1c2VyCiAgICAkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFNFVCBhY3RpZiA9JzEnICBXSEVSRSBsaWNlbmNlID0gPyI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSggJHBhcmFtc1snbGljZW5jZSddICkpOwogICAgaWYoJGRicmVzdWx0KQogICAgICAKCXsKCQkkdGhpcy0+U2V0TWVzc2FnZSgiSm91ZXVyIHLDqWFjdGl2w6kiKTsKCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwoJCQoJfQoKCiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.fe_sit_mens.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKZ2xvYmFsICR0aGVtZU9iamVjdDsKCiRzbWFydHktPmFzc2lnbignaWQnLCAkdGhpcy0+TGFuZygnaWQnKSk7CiRzbWFydHktPmFzc2lnbigndXNlcm5hbWUnLCAnSm91ZXVyJyk7CiRzbWFydHktPmFzc2lnbigncG9pbnRzJywgJ1BvaW50cycpOwovLyRhY3Rpb24gPSAoZW1wdHkoJF9QT1NUWydhY3Rpb24nXSkpID8gJ2RlZmF1bHQnIDogJF9QT1NUWydhY3Rpb24nXTsKCiRtb2lzX2NvdXJhbnQgPSBkYXRlKCduJyk7CiRqb3VyID0gZGF0ZSgnaicpOwovLyRtb2lzX3ByZWYgPSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZhdWx0TW9udGhTaXRNZW5zJywgJzYnKTsKCiRtb2lzX3ByZWYgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdE1vbnRoU2l0TWVucycpOwovL2VjaG8gImxlIG1vaXMgcHJlZiBlc3QgOiAiLiRtb2lzX3ByZWY7CiRtb2lzID0gKCFlbXB0eSgkbW9pc19wcmVmKSkgPyAkbW9pc19wcmVmIDogJG1vaXNfY291cmFudDsKLy9lY2hvICJsZSBtb2lzIHJldGVudSBlc3QgOiAiLiRtb2lzOwoKJHJlc3VsdD0gYXJyYXkgKCk7CiRxdWVyeSA9ICJTRUxFQ1QgbW9pcywgcG9pbnRzLCBDT05DQVRfV1MoJyAnLCBub20sIHByZW5vbSkgQVMgam91ZXVyLAogICBTVU0oSUYobW9pcyA9ICc1JywgcG9pbnRzLCAwKSkgQVMgbWFpICI7CmlmKCRtb2lzX2NvdXJhbnQgPj0gJzYnICl7CiRxdWVyeSAuPSIsIFNVTShJRihtb2lzID0gJzYnLCBwb2ludHMsMCkpIEFTIGp1aW4gIjsKfQppZigkbW9pc19jb3VyYW50ID49ICc3Jyl7CgkkcXVlcnkuPSAiICwgU1VNKElGKG1vaXMgPSAnNycsIHBvaW50cywgMCkpIEFTIEp1aWxsZXQgIjsKfQoKJHF1ZXJ5IC49IiAgIApGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucwpHUk9VUCBCWSBqb3VldXIiOwplY2hvICRxdWVyeTsKLy8kcXVlcnk9ICJTRUxFQ1QgaWQsbW9pcyxwb2ludHMsIGFubmVlLCBDT05DQVRfV1MoJyAnLCBub20sIHByZW5vbSkgQVMgam91ZXVyLCBwcm9nbW9pcyAgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2l0X21lbnMgV0hFUkUgbW9pcyA9ID8gIE9SREVSIEJZIGlkIEFTQyI7CiRkYnJlc3VsdD0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiRyb3djbGFzcz0gJ3JvdzEnOwokcm93YXJyYXk9IGFycmF5ICgpOwppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewoJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7Cgkkb25lcm93LT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJJG9uZXJvdy0+am91ZXVyPSAkcm93Wydqb3VldXInXTsKCSRvbmVyb3ctPm1haT0gJHJvd1snbWFpJ107Cgkkb25lcm93LT5qdWluPSAkcm93WydqdWluJ107CgkvLyRvbmVyb3ctPnByb2dtb2lzPSAkcm93Wydwcm9nbW9pcyddOwovLwkkb25lcm93LT5lcXVpcGU9ICR0aGlzLT5jcmVhdGVMaW5rKCRpZCwgJ3ZpZXdzdGVhbXJlc3VsdCcsICRyZXR1cm5pZCwgJHJvd1snZXF1aXBlJ10sYXJyYXkoJ2VxdWlwZSc9PiRyb3dbJ2VxdWlwZSddKSwkcm93KSA7CgkvLyRvbmVyb3ctPmpvdWV1cj0gJHJvd1snam91ZXVyJ107CgkKCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzPSAicm93MiIgOiAkcm93Y2xhc3M9ICJyb3cxIik7Cgkkcm93YXJyYXlbXT0gJG9uZXJvdzsKICAgICAgfQogIH0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Jlc3VsdHNmb3VuZHRleHQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdmZV9hbGxzaXRtZW5zLnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.fe_viewteamresult.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwpkZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2FjdGlvbi5hdXRoZW50aWZpY2F0aW9uLnBocCcpOwokY2xlX2NvbXB0ZSA9ICRfU0VTU0lPTlsnY2xlX2NvbXB0ZSddOwppZiAoIGlzc2V0KCAkcGFyYW1zWydjbGUnXSkpIHsKCSRjbGUgPSAkcGFyYW1zWydjbGUnXTsKCQp9CgoKCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKZ2xvYmFsICR0aGVtZU9iamVjdDsKCiRyZXN1bHQ9IGFycmF5ICgpOwokcXVlcnk9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb2ludHMgV0hFUkUgY2xlID0gPyBBTkQgY2xlX2NvbXB0ZSA9ID8gT1JERVIgQlkgZGF0ZV9jb21wZXQgREVTQyBHUk9VUCBCWSBkYXRlX2NvbXBldCI7CiRkYnJlc3VsdD0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNsZSwkY2xlX2NvbXB0ZSkpOwokcm93Y2xhc3M9ICdyb3cxJzsKJHJvd2FycmF5PSBhcnJheSAoKTsKCiRyZXR1cm5MaW5rID0gJHRoaXMtPkNyZWF0ZUZyb250ZW5kTGluaygkaWQsJHJldHVybmlkLCAnZmVfdGVhbXJlc3VsdHMnLCRhZGR0ZXh0PSdSZXRvdXInKTsKZWNobyAnPHA+Jy4kcmV0dXJuTGluay4nPC9wPic7CmlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgIGVjaG8gJzx0YWJsZSBjbGFzcz0iZGlzcGxheSIgc3R5bGU9ImJvcmRlcjogMSI+PHRyPjx0aD5JZDwvdGg+PHRoPlRvdXI8L3RoPjx0aD5FcXVpcGU8L3RoPjx0aD5Kb3VldXI8L3RoPjx0aD5BZHZlcnNhaXJlPC90aD48dGg+VmljIETDqWY8L3RoPjx0aD5QdHM8L3RoPjwvdHI+JzsJCiAgICB3aGlsZSAoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQogICAgICB7CgllY2hvICc8dHI+PHRkPicuJHJvd1snaWQnXS4nPC90ZD48dGQ+Jy4kcm93WydlcXVpcGUnXS4nPC90ZD48dGQ+Jy4kcm93Wyd0b3VyJ10uJzwvdGQ+PHRkPicuJHJvd1snam91ZXVyJ10uJzwvdGQ+PHRkPicuJHJvd1snYWR2ZXJzYWlyZSddLic8L3RkPjx0ZD4nLiRyb3dbJ3ZpY19kZWYnXS4nPC90ZD48dGQ+Jy4kcm93Wydwb2ludHMnXS4nPC90ZD48L3RyPic7CgogICAgICB9CmVjaG8gJzwvdGFibGU+JzsKICB9CmVsc2V7CgllY2hvICJwYXMgZGUgcsOpc3VsdGF0cyBjb3JyZXNwb25kYW50IMOgIHZvdHJlIGRlbWFuZGUiOwp9Ci8qCiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKJHNtYXJ0eS0+YXNzaWduKCdjcmVhdGVsaW5rJywgCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnY3JlYXRlX25ld191c2VyMycsICRyZXR1cm5pZCwKCQkJCSAgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJHRoaXMtPkxhbmcoJ2FkZG5ld3NoZWV0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSkuCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnY3JlYXRlX25ld191c2VyMycsICRyZXR1cm5pZCwgCgkJCQkgICR0aGlzLT5MYW5nKCdhZGRuZXdzaGVldCcpLCAKCQkJCSAgYXJyYXkoKSkpOwoKJHNtYXJ0eS0+YXNzaWduKCdyZXR1cm5saW5rJywgCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCd2aWV3dGVhbXJlc3VsdHMnLCAkcmV0dXJuaWQsJ1JldG91cicsICdjbGFzcz1cJ2J1dHRvblzigJknKSk7CgovL2VjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgndXNlcnNsaXN0LnRwbCcpOwoKKi8KIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.fe_view_teams_results.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKLy8kY2xlX2NvbXB0ZSA9ICRfU0VTU0lPTlsnY2xlX2NvbXB0ZSddOwoKLy9lY2hvICdsYSBjbGVmIGR1IGNvbXB0ZSBlc3QgOiAnLiRjbGVfY29tcHRlOwokbnVtam91cm4gPSAnJzsKaWYoIWlzc2V0KCRwYXJhbXNbJ251bWpvdXJuJ10pIHx8ICRwYXJhbXNbJ251bWpvdXJuJ10gPT0nJyl7CgkkbnVtam91cm4gPSAxOwp9CmVsc2UKewoJJG51bWpvdXJuID0gJHBhcmFtc1snbnVtam91cm4nXTsKfQoKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwovKgokc21hcnR5LT5hc3NpZ24oJ2lkJywgJHRoaXMtPkxhbmcoJ2lkJykpOwokc21hcnR5LT5hc3NpZ24oJ2VxdWlwZScsICdFcXVpcGUnKTsKJHNtYXJ0eS0+YXNzaWduKCd0b3VyJywgJ1RvdXInKTsKJHNtYXJ0eS0+YXNzaWduKCdqb3VldXInLCAnSm91ZXVyJyk7CiRzbWFydHktPmFzc2lnbignYWR2ZXJzYWlyZScsICdBZHZlcnNhaXJlJyk7CiRzbWFydHktPmFzc2lnbigndmljdG9pcmUnLCAnVmljL2TDqWYnKTsKJHNtYXJ0eS0+YXNzaWduKCdwb2ludHMnLCAnUG9pbnRzJyk7CiovCiRyZXN1bHQ9IGFycmF5ICgpOwovLyRxdWVyeT0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvaW50cyBXSEVSRSBqb3VldXIgPSA/IE9SREVSIEJZIGlkIEFTQyI7CiRxdWVyeSA9ICJTRUxFQ1QgKiwgcmVuLmlkLCBlcS5saWJlcXVpcGUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG91bGVzX3JlbmNvbnRyZXMgQVMgcmVuLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcyBBUyBlcSBXSEVSRSBlcS5pZHBvdWxlID0gcmVuLmlkcG91bGUgIEFORCByZW4uc2Fpc29uID0gZXEuc2Fpc29uIEFORCBlcS5zYWlzb24gPSA/IEFORCByZW4uYWZmaWNoZSA9ICcxJyBBTkQgcmVuLnRvdXIgPSA/IjsKCglpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2FmZmljaGVfY2x1Yl91bmlxdWVtZW50JykgPT0nT3VpJykgewoJCSRxdWVyeS49IiBBTkQgcmVuLmNsdWIgPSAnMSciOwoJfQoJCgkKLy8kcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG91bGVzX3JlbmNvbnRyZXMgQVMgcmVuLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcyBBUyBlcSBXSEVSRSBlcS5pZHBvdWxlID0gcmVuLmlkcG91bGUgQU5EIHJlbi5jbHViID0gJzEnIEFORCByZW4uc2Fpc29uID0gPyBHUk9VUCBCWSByZW4uZGF0ZV9ldmVudCBERVNDIjsKCmVjaG8gJHF1ZXJ5OwokZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRzYWlzb25fY291cmFudGUsICRudW1qb3VybikpOwokcm93Y2xhc3M9ICdyb3cxJzsKJHJvd2FycmF5PSBhcnJheSAoKTsKaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIHsKCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCSRvbmVyb3ctPmlkPSAkcm93WydpZCddOwoJJGVxdWIgPSAkcm93WydlcXViJ107CgkkZXF1YSA9ICRyb3dbJ2VxdWEnXTsKCSRmcmllbmRseW5hbWUgPSAkcm93WydmcmllbmRseW5hbWUnXTsKCSRsaWJlcXVpcGUgPSAkcm93WydsaWJlcXVpcGUnXTsKCgoJLy8kb25lcm93LT5lcXVpcGU9ICRyb3dbJ2VxdWlwZSddOwoJJG9uZXJvdy0+bGliZWxsZT0gICRyb3dbJ2xpYmVsbGUnXSA7CglpZihpc3NldCgkZnJpZW5kbHluYW1lKSAmJiAkZnJpZW5kbHluYW1lICE9JycpCgl7CgkJaWYgKCRsaWJlcXVpcGUgPT0gJGVxdWEpCgkJewoJCQkkb25lcm93LT5lcXVhPSAkcm93WydmcmllbmRseW5hbWUnXTsKCQl9CgkJCgkJZWxzZXsKCQkJJG9uZXJvdy0+ZXF1YT0gJHJvd1snZXF1YSddOwoJCX0KCQkKCX0KCWVsc2V7CgkJJG9uZXJvdy0+ZXF1YT0gJHJvd1snZXF1YSddOwoJfQoJJG9uZXJvdy0+c2NvcmVhPSAkcm93WydzY29yZWEnXTsKCSRvbmVyb3ctPnNjb3JlYj0gJHJvd1snc2NvcmViJ107CglpZihpc3NldCgkZnJpZW5kbHluYW1lKSAmJiAkZnJpZW5kbHluYW1lICE9JycpCgl7CgkJaWYgKCRsaWJlcXVpcGUgPT0gJGVxdWIpCgkJewoJCQkkb25lcm93LT5lcXViPSAkcm93WydmcmllbmRseW5hbWUnXTsKCQl9CgkJCgkJZWxzZXsKCQkJJG9uZXJvdy0+ZXF1Yj0gJHJvd1snZXF1YiddOwoJCX0KCQkKCX0KCWVsc2V7CgkJJG9uZXJvdy0+ZXF1Yj0gJHJvd1snZXF1YiddOwoJfQoKCSRvbmVyb3ctPmRldGFpbHM9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3BvdWxlX3JlbmNvbnRyZXMnLCAkcmV0dXJuaWQsICdEw6l0YWlscycsIGFycmF5KCdsaWVuJz0+JHJvd1snbGllbiddKSk7Ci8vCSRvbmVyb3ctPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZV90ZWFtX3Jlc3VsdCcsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSwgJHRoaXMtPkxhbmcoJ2RlbGV0ZV9yZXN1bHRfY29uZmlybScpKTsKCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzPSAicm93MiIgOiAkcm93Y2xhc3M9ICJyb3cxIik7Cgkkcm93YXJyYXlbXT0gJG9uZXJvdzsKICAgICAgfQogIH0KCi8qKi8KJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Jlc3VsdHNmb3VuZHRleHQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwovL29uIHZhIGVzc2F5ZXIgZGUgY29uc3RydWlyZSBkeW5hbWlxdWVtZW50IGRlcyBsaWVucyB2ZXJzIGxlcyBkaWZmw6lyZW50ZXMgam91cm7DqWVzIGRlIGNoYW1waW9ubmF0IGRlIEZyYW5jZSBwYXIgw6lxdWlwZXMKLyoKZm9yKCRpPTE7JGk8PTEwOyRpKyspewoJJHNtYXJ0eS0+YXNzaWduKCJsaWVuaiRpIiwKCSR0aGlzLT5DcmVhdGVGcm9udGVuZExpbmsoJGlkLCRyZXR1cm5pZCwnZmVfdmlld190ZWFtc19yZXN1bHRzJywgJGNvbnRlbnRzID0gIkokaSIsIGFycmF5KCJudW1qb3VybiI9PiIkaSIpKSk7Cn0KKi8KJHNtYXJ0eS0+YXNzaWduKCdsaWVuajEnLAoJCSR0aGlzLT5DcmVhdGVGcm9udGVuZExpbmsoJGlkLCRyZXR1cm5pZCwnZmVfdmlld190ZWFtc19yZXN1bHRzJywgJGNvbnRlbnRzID0gJ0oxJywgYXJyYXkoJ251bWpvdXJuJz0+JzEnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2xpZW5qMicsCgkJJHRoaXMtPkNyZWF0ZUZyb250ZW5kTGluaygkaWQsJHJldHVybmlkLCdmZV92aWV3X3RlYW1zX3Jlc3VsdHMnLCAkY29udGVudHMgPSAnSjInLCBhcnJheSgnbnVtam91cm4nPT4nMicpKSk7CgovKiovCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZmVwb3VsZXNSZW5jb250cmVzLnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.fe_view_user.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwpkZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7Ci8qCiRtYUNsYXNzZSA9ICdjbGFzcy5TZXJ2aWNlLnBocCc7CiRzZXJ2aWNlID0gbmV3ICRtYUNsYXNzZSgpOwoqLwokc2VydmljZSA9IG5ldyBTZXJ2aWNlKCk7CiRyZXN1bHQgPSAkc2VydmljZS0+Z2V0TGljZW5jZXNCeUNsdWIoIjA3MjkwMjI5Iik7CgovL3Zhcl9kdW1wKCRyZXN1bHQpOwovLyRwb2ludGV1ciA9IGNvdW50KCRyZXN1bHQpOwovL2VjaG8gJ2xhIHZhbGV1ciBkdSBwb2ludGV1ciBlc3QgZGUgOiAnLiRwb2ludGV1cjsKLy9lY2hvICRyZXN1bHRbMF07Ci8qCmZvcigkaT0wOyRpPD0kcG9pbnRldXI7JGkrKykKewoJZWNobyAiJHJlc3VsdFskaV1bJ2xpY2VuY2UnXSA8YnIgLz4iOwp9CgovL3Zhcl9kdW1wKCRyZXN1bHQpOwovKiovCgpmb3JlYWNoKCRyZXN1bHQgYXMgJGNsZSA9PiR0YWIpCnsKCSRsaWNlbmNlID0gJHRhYltsaWNlbmNlXTsKCSRub20gPSAkdGFiW25vbV07CgkkcHJlbm9tID0gJHRhYltwcmVub21dOwoJCgkkcXVlcnkgPSAiU0VMRUNUIGxpY2VuY2UgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSBsaWNlbmNlID0gPyI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSkpOwoJaWYoJGRicmVzdWx0ICAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkgewoJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyAoaWQsIGxpY2VuY2UsIG5vbSwgcHJlbm9tKSBWQUxVRVMgKCcnLCA/LCA/LCA/KSI7CgkJJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRsaWNlbmNlLCRub20sICRwcmVub20pKTsKCQkKCQlpZighJGRicmVzdWx0YXQpCgkJewoJCQlkaWUoJ0ZBVEFMIFNRTCBFUlJPUiAxOiAnLiRkYi0+RXJyb3JNc2coKS4nPGJyLz5RVUVSWTogJy4kZGItPnNxbCk7CgkJfQoJfQp9CgkKCSR0aGlzLT5TZXRNZXNzYWdlKCR0aGlzLT5MYW5nKCdzYXZlZF9yZWNvcmQnKSk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZW5jb250cmVzJyk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.fe_view_user_global_results.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKLyoKJGNsZV9jb21wdGUgPSAkX1NFU1NJT05bJ2NsZV9jb21wdGUnXTsKCmVjaG8gJ2xhIGNsZWYgZHUgY29tcHRlIGVzdCA6ICcuJGNsZV9jb21wdGU7CiovCgokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7Ci8qCiRzbWFydHktPmFzc2lnbignaWQnLCAkdGhpcy0+TGFuZygnaWQnKSk7CiRzbWFydHktPmFzc2lnbignZXF1aXBlJywgJ0VxdWlwZScpOwokc21hcnR5LT5hc3NpZ24oJ3RvdXInLCAnVG91cicpOwokc21hcnR5LT5hc3NpZ24oJ2pvdWV1cicsICdKb3VldXInKTsKJHNtYXJ0eS0+YXNzaWduKCdhZHZlcnNhaXJlJywgJ0FkdmVyc2FpcmUnKTsKJHNtYXJ0eS0+YXNzaWduKCd2aWN0b2lyZScsICdWaWMvZMOpZicpOwokc21hcnR5LT5hc3NpZ24oJ3BvaW50cycsICdQb2ludHMnKTsKKi8KJHJlc3VsdD0gYXJyYXkgKCk7Ci8vJHF1ZXJ5PSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG9pbnRzIFdIRVJFIGpvdWV1ciA9ID8gT1JERVIgQlkgaWQgQVNDIjsKLy8kcXVlcnkgPSAiU0VMRUNUIENPTkNBVF9XUygnICcgLCBqLm5vbSwgai5wcmVub20pIEFTIGpvdWV1ciwgai5saWNlbmNlLHN1bShwLnZkKSBBUyB2aWN0b2lyZXMsIHN1bShwLnBvaW50cmVzKSBBUyB0b3RhbCwgY291bnQoKikgQVMgc3VyIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBhcyBwLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBBUyBqIFdIRVJFIHAubGljZW5jZSA9IGoubGljZW5jZSBBTkQgcC5zYWlzb24gPSA/IEdST1VQIEJZIGpvdWV1ciBPUkRFUiBCWSBqb3VldXIiOwokcXVlcnkgPSAiU0VMRUNUIENPTkNBVF9XUygnICcgLCBqLm5vbSwgai5wcmVub20pIEFTIGpvdWV1ciwgai5saWNlbmNlLHN1bShwLnZpY3RvaXJlKSBBUyB2aWN0b2lyZXMsIGNvdW50KCopIEFTIHN1ciBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgYXMgcCwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgQVMgaiBXSEVSRSBwLmxpY2VuY2UgPSBqLmxpY2VuY2UgQU5EIHAuc2Fpc29uID0gPyBHUk9VUCBCWSBqb3VldXIgT1JERVIgQlkgam91ZXVyIjsKLy9lY2hvICRxdWVyeTsKJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkc2Fpc29uX2NvdXJhbnRlKSk7CiRyb3djbGFzcz0gJ3JvdzEnOwokcm93YXJyYXk9IGFycmF5ICgpOwppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewoJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7Cgkkb25lcm93LT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJLy8kb25lcm93LT50eXBlX2NvbXBldD0gJHJvd1sndHlwZV9jb21wZXQnXTsKCSRvbmVyb3ctPmpvdWV1cj0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYmFyLWNoYXJ0czInLCAkcmV0dXJuaWQsICRyb3dbJ2pvdWV1ciddLGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSkgOwoJJG9uZXJvdy0+dmljdG9pcmVzPSAkcm93Wyd2aWN0b2lyZXMnXTsKCSRvbmVyb3ctPnN1cj0gJHJvd1snc3VyJ107Cgkkb25lcm93LT50b3RhbD0gJHJvd1sndG90YWwnXTsKLy8JJG9uZXJvdy0+cG9pbnRzPSAkcm93Wydwb2ludHMnXTsKCS8vJG9uZXJvdy0+YWN0aXZlPSAoJHJvd1snYWN0aXZlJ10gPT0gMSkgPyAkdGhpcy0+TGFuZygneWVzJykgOiAnJzsKCS8vJG9uZXJvdy0+aWQ9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRfcmVzdWx0cycsICRyZXR1cm5pZCwgJHJvd1snaWQnXSxhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSksICRyb3cpOwoJLy8kb25lcm93LT5lZGl0bGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF9yZXN1bHRzJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgJHRoaXMtPkxhbmcoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSwgJHJvdyk7CgkvLyRvbmVyb3ctPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZV91c2VyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pLCAkdGhpcy0+TGFuZygnZGVsZXRlX3Jlc3VsdF9jb25maXJtJykpOwoJCgkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJJHJvd2FycmF5W109ICRvbmVyb3c7Ly9kaXNhYmxlZCBieSBDbGF1ZGUKCS8vYXJyYXlfcHVzaCgkcm93YXJyYXksJG9uZXJvdyk7CiAgICAgIH0KICB9CgovKiovCi8vJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Jlc3VsdHNmb3VuZHRleHQnKSk7Ci8vJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7Ci8qJHNtYXJ0eS0+YXNzaWduKCdjcmVhdGVsaW5rJywgCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnY3JlYXRlX25ld191c2VyMycsICRyZXR1cm5pZCwKCQkJCSAgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJHRoaXMtPkxhbmcoJ2FkZG5ld3NoZWV0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSkuCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnY3JlYXRlX25ld191c2VyMycsICRyZXR1cm5pZCwgCgkJCQkgICR0aGlzLT5MYW5nKCdhZGRuZXdzaGVldCcpLCAKCQkJCSAgYXJyYXkoKSkpOwoqLwoJCQkJCi8vZmFpcmUgYXBwYXJhaXRyZSBsZXMgcG9pbnRzIHRvdGF1eCBldCBzb21tZSB2aWN0b2lyZSBlbiBiYXMgPyBDZSBzZXJhaXQgcGFzIG1hbAovKiovCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZmVfZ2xvYmFsdXNlcnJlc3VsdHMudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.fe_view_user_results.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwpkZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CgovKgpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9hY3Rpb24uYXV0aGVudGlmaWNhdGlvbi5waHAnKTsKJGNsZV9jb21wdGUgPSAkX1NFU1NJT05bJ2NsZV9jb21wdGUnXTsKCmVjaG8gJ2xhIGNsZWYgZHUgY29tcHRlIGVzdCA6ICcuJGNsZV9jb21wdGU7CiovCiRsaWNlbmNlID0gJHBhcmFtc1snbGljZW5jZSddOwoKJGRiID0mICR0aGlzLT5HZXREYigpOwovL2dsb2JhbCAkdGhlbWVPYmplY3Q7Cgokc21hcnR5LT5hc3NpZ24oJ2lkJywgJHRoaXMtPkxhbmcoJ2lkJykpOwokc21hcnR5LT5hc3NpZ24oJ2VxdWlwZScsICdFcXVpcGUnKTsKJHNtYXJ0eS0+YXNzaWduKCd0b3VyJywgJ1RvdXInKTsKJHNtYXJ0eS0+YXNzaWduKCdqb3VldXInLCAnSm91ZXVyJyk7CiRzbWFydHktPmFzc2lnbignYWR2ZXJzYWlyZScsICdBZHZlcnNhaXJlJyk7CiRzbWFydHktPmFzc2lnbigndmljdG9pcmUnLCAnVmljL2TDqWYnKTsKJHNtYXJ0eS0+YXNzaWduKCdwb2ludHMnLCAnUG9pbnRzJyk7CgokcmVzdWx0PSBhcnJheSAoKTsKJHF1ZXJ5PSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyBXSEVSRSBsaWNlbmNlID0gPyAgT1JERVIgQlkgZGF0ZV9jb21wZXQgQVNDIjsKZWNobyAkcXVlcnk7CiRkYnJlc3VsdD0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGpvdWV1ciwgJGNsZV9jb21wdGUpKTsKJHJvd2NsYXNzPSAncm93MSc7CiRyb3dhcnJheT0gYXJyYXkgKCk7CmlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQogICAgICB7Cgkkb25lcm93PSBuZXcgU3RkQ2xhc3MoKTsKCSRvbmVyb3ctPnJvd2NsYXNzPSAkcm93Y2xhc3M7Cgkkb25lcm93LT5pZD0gJHJvd1snaWQnXTsKCSRvbmVyb3ctPnRvdXI9ICRyb3dbJ3RvdXInXTsKCSRvbmVyb3ctPmVxdWlwZT0gJHJvd1snZXF1aXBlJ107Cgkkb25lcm93LT5qb3VldXI9ICRyb3dbJ2pvdWV1ciddOwoJJG9uZXJvdy0+YWR2ZXJzYWlyZT0gJHJvd1snYWR2ZXJzYWlyZSddOwoJJG9uZXJvdy0+dmljX2RlZj0gJHJvd1sndmljX2RlZiddOwoJJG9uZXJvdy0+cG9pbnRzPSAkcm93Wydwb2ludHMnXTsKCQoJLyoJCgkkb25lcm93LT5jb21tdW5lPSAkcm93Wydjb21tdW5lJ107Cgkkb25lcm93LT5lbWFpbD0gJHJvd1snZW1haWwnXTsKCSRvbmVyb3ctPnRyYW5jaGU9ICRyb3dbJ3RyYW5jaGUnXTsKCSRvbmVyb3ctPmFjdGl2ZT0gKCRyb3dbJ2FjdGl2ZSddID09IDEpID8gJHRoaXMtPkxhbmcoJ3llcycpIDogJyc7CgkqLwoJLyoKCSRvbmVyb3ctPmlkbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZmVfZWRpdF9yZXN1bHRzJywgJHJldHVybmlkLCAkcm93WydpZCddLGFycmF5KCdpZCc9PiRyb3dbJ2lkJ10pLCAkcm93KTsKCSRvbmVyb3ctPmVkaXRsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdmZV9lZGl0X3Jlc3VsdHMnLCAkcmV0dXJuaWQsICdNb2RpZmllcicsYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pLCAkcm93KTsKCSRvbmVyb3ctPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZV91c2VyJywgJHJldHVybmlkLCAnJywgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pLCAkdGhpcy0+TGFuZygnZGVsZXRlX3Jlc3VsdF9jb25maXJtJykpOwoJKi8KCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzPSAicm93MiIgOiAkcm93Y2xhc3M9ICJyb3cxIik7Cgkkcm93YXJyYXlbXT0gJG9uZXJvdzsKICAgICAgfQogIH0KLyoKJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Jlc3VsdHNmb3VuZHRleHQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiovCiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwovKgokc21hcnR5LT5hc3NpZ24oJ2NyZWF0ZWxpbmsnLCAKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdjcmVhdGVfbmV3X3VzZXIzJywgJHJldHVybmlkLAoJCQkJICAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+TGFuZygnYWRkbmV3c2hlZXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpKS4KCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdjcmVhdGVfbmV3X3VzZXIzJywgJHJldHVybmlkLCAKCQkJCSAgJHRoaXMtPkxhbmcoJ2FkZG5ld3NoZWV0JyksIAoJCQkJICBhcnJheSgpKSk7CiovCgkJCQkKCQkJCQovL2ZhaXJlIGFwcGFyYWl0cmUgbGVzIHBvaW50cyB0b3RhdXggZXQgc29tbWUgdmljdG9pcmUgZW4gYmFzID8gQ2Ugc2VyYWl0IHBhcyBtYWwKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZmVfdXNlcnNsaXN0LnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.mass_action.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy9jZSBmaWNoaWVyIGZhaXQgZGVzIGFjdGlvbnMgZGUgbWFzc2UsIGlsIGVzdCBhcHBlbMOpIGRlcHVpcyBsJ29uZ2xldCBkZSByw6ljdXDDqXJhdGlvbiBkZXMgaW5mb3Mgc3VyIGxlcyBqb3VldXJzCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKaWYgKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdF9tYXNzYWN0aW9uJ10pICYmIGlzc2V0KCRwYXJhbXNbJ2FjdGlvbmRlbWFzc2UnXSkgKQogIHsKICAgICBpZiggaXNzZXQoJHBhcmFtc1snc2VsJ10pICYmIGlzX2FycmF5KCRwYXJhbXNbJ3NlbCddKSAmJgoJY291bnQoJHBhcmFtc1snc2VsJ10pID4gMCApCiAgICAgIHsKICAgICAgICBzd2l0Y2goJHBhcmFtc1snYWN0aW9uZGVtYXNzZSddKXsKCWNhc2UgInVuYWJsZSIgOgoJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJGxpY2VuY2UgKQoJICB7CgkgICAgCS8vJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBTRVQgYWN0aWYgPScwJyAgV0hFUkUgbGljZW5jZSA9ID8iOwoJCS8vJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoICRsaWNlbmNlICkpOwoJCQoJCXBpbmdfYWRtaW5fb3BzOjp1bmFibGVfcGxheWVyKCAkbGljZW5jZSApOwoJICB9CgkkdGhpcy0+U2V0TWVzc2FnZSgnSm91ZXVycyBkw6lzYWN0aXbDqXMnKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKCWJyZWFrOwoJY2FzZSAic2l0dWF0aW9uIiA6CgkvL2xlcyBsaWNlbmNlcyBjb2xsZWN0w6llcyBzb250IHN1cHBvc8OpZXMgw6p0cmUgYWN0aXZlcwoJLy9xdWUgZmFpdC1vbiBzaSBlbGxlcyBuZSBsZSBzb250IHBhcyBlbiByw6lhbGl0w6kgPwoJLy9ib25uZSBxdWVzdGlvbgoJLy9vbiBwcmVuZCBsZXMgdmFyaWFibGVzIG7DqWNlc3NhaXJlcwoJCgkkbWVzc2FnZT0nUmV0cm91dmV6IHRvdXRlcyBsZXMgaW5mb3MgZGFucyBsZSBqb3VybmFsJzsKCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRsaWNlbmNlICkKCSAgewoJCgkgICAgcGluZ19hZG1pbl9vcHM6OnJldHJpZXZlX3NpdF9tZW5zKCAkbGljZW5jZSApOwoJICB9CgkvLyRtZXNzYWdlLj0nPC91bD4nOwoJJHRoaXMtPlNldE1lc3NhZ2UoIiRtZXNzYWdlIik7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCJzaXR1YXRpb24iKTsKCWJyZWFrOwoJCgljYXNlICJkZWxldGVfdGVhbV9yZXN1bHQiIDoKCS8vbGVzIGxpY2VuY2VzIGNvbGxlY3TDqWVzIHNvbnQgc3VwcG9zw6llcyDDqnRyZSBhY3RpdmVzCgkvL3F1ZSBmYWl0LW9uIHNpIGVsbGVzIG5lIGxlIHNvbnQgcGFzIGVuIHLDqWFsaXTDqSA/CgkvL2Jvbm5lIHF1ZXN0aW9uCgkvL29uIHByZW5kIGxlcyB2YXJpYWJsZXMgbsOpY2Vzc2FpcmVzCgkKCglmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkcmVjb3JkX2lkICkKCSAgewoJCgkgICAgcGluZ19hZG1pbl9vcHM6OmRlbGV0ZV90ZWFtX3Jlc3VsdCggJHJlY29yZF9pZCApOwoJICB9CgkvLyRtZXNzYWdlLj0nPC91bD4nOwoJCgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCJwb3VsZXMiKTsKCWJyZWFrOwoJCgljYXNlICJkaXNwbGF5X29uX2Zyb250ZW5kIiA6CgkKCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRpZCApCgkgIHsKCQoJICAgIHBpbmdfYWRtaW5fb3BzOjpkaXNwbGF5X29uX2Zyb250ZW5kKCAkaWQgKTsKCSAgfQoJCgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCJwb3VsZXMiKTsKCWJyZWFrOwoJCgljYXNlICJkb19ub3RfZGlzcGxheSIgOgoJCglmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkcmVjb3JkX2lkICkKCSAgewoJCgkgICAgcGluZ19hZG1pbl9vcHM6OmRvX25vdF9kaXNwbGF5KCAkcmVjb3JkX2lkICk7CgkgIH0KCQoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigicG91bGVzIik7CglicmVhazsKCQoJY2FzZSAiZmZ0dCIgOgoJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJGpvdXJuYWxpZCApCgkgIHsKCSAgICBwaW5nX2FkbWluX29wczo6ZGVsZXRlX2pvdXJuYWwoICRqb3VybmFsaWQgKTsKCSAgfQoJYnJlYWs7CgljYXNlICJzcGlkIiA6CgkvLyRzYWlzb25fY291cmFudGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CgkkbWVzc2FnZT0nUmV0cm91dmV6IHRvdXRlcyBsZXMgaW5mb3MgZGFucyBsZSBqb3VybmFsJzsKCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRsaWNlbmNlICkKCSAgewoJICAgIHBpbmdfYWRtaW5fb3BzOjpyZXRyaWV2ZV9wYXJ0aWVzX3NwaWQoICRsaWNlbmNlICk7CgkgIH0KCSR0aGlzLT5TZXRNZXNzYWdlKCIkbWVzc2FnZSIpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigicmVjdXBlcmF0aW9uIik7CglicmVhazsKCWNhc2UgImNvZWZmMDUiIDoKCWZvcmVhY2goICRwYXJhbXNbJ3NlbCddIGFzICRyZWNvcmRfaWQpCgl7CgkJcGluZ19hZG1pbl9vcHM6OmNvZWZmKCAkcmVjb3JkX2lkLCAkY29lZmY9ICcwLjUwJyApOwoJfQoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncmVzdWx0cycpOwoJYnJlYWs7CgljYXNlICJjb2VmZjA3NSIgOgoJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJHJlY29yZF9pZCkKCXsKCQlwaW5nX2FkbWluX29wczo6Y29lZmYoICRyZWNvcmRfaWQsICRjb2VmZj0gJzAuNzUnICk7Cgl9CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZXN1bHRzJyk7CglicmVhazsKCQoJY2FzZSAiY29lZmYxIiA6Cglmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkcmVjb3JkX2lkKQoJewoJCXBpbmdfYWRtaW5fb3BzOjpjb2VmZiggJHJlY29yZF9pZCwgJGNvZWZmPScxLjAwJyApOwoJfQoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncmVzdWx0cycpOwoJYnJlYWs7CgkKCWNhc2UgImNvZWZmMTI1IiA6Cglmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkcmVjb3JkX2lkKQoJewoJCXBpbmdfYWRtaW5fb3BzOjpjb2VmZiggJHJlY29yZF9pZCwgJGNvZWZmPScxLjI1Jyk7Cgl9CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZXN1bHRzJyk7CglicmVhazsKCQoJY2FzZSAiY29lZmYxNSIgOgoJZm9yZWFjaCggJHBhcmFtc1snc2VsJ10gYXMgJHJlY29yZF9pZCkKCXsKCQlwaW5nX2FkbWluX29wczo6Y29lZmYoICRyZWNvcmRfaWQsICRjb2VmZj0gJzEuNTAnICk7Cgl9CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZXN1bHRzJyk7CglicmVhazsKCgkKCWNhc2UgIm1hc2N1bGluIiA6Cglmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkbGljZW5jZSApCgkgIHsKCSAgICBwaW5nX2FkbWluX29wczo6bWFzY3VsaW4oICRsaWNlbmNlICk7CgkgIH0KCQoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwoJYnJlYWs7CgljYXNlICJmZW1pbmluIiA6Cglmb3JlYWNoKCAkcGFyYW1zWydzZWwnXSBhcyAkbGljZW5jZSApCgkgIHsKCSAgICBwaW5nX2FkbWluX29wczo6ZmVtaW5pbiggJGxpY2VuY2UgKTsKCSAgfQoJYnJlYWs7CgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwoJCiAgICAgIH0vL2ZpbiBkdSBzd2l0Y2gKICB9CmVsc2UKCXsKCQkkdGhpcy0+U2V0TWVzc2FnZSgnUEIgISEnKTsKCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdyZWN1cGVyYXRpb24nKTsKCX0KfQojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.missing_sit_mens.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKZ2xvYmFsICR0aGVtZU9iamVjdDsKCiRzbWFydHktPmFzc2lnbignaWQnLCAkdGhpcy0+TGFuZygnaWQnKSk7CiRzbWFydHktPmFzc2lnbigndXNlcm5hbWUnLCAnSm91ZXVyJyk7CiRzbWFydHktPmFzc2lnbigncG9pbnRzJywgJ1BvaW50cycpOwoKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKJG1vaXNfY291cmFudCA9IGRhdGUoJ24nKTsKJGxhc3RfbW9udGggPSAkbW9pc19jb3VyYW50IC0xOwovLyRtb2lzX2NvdXJhbnQgPSA1OwokYW5uZWVfY291cmFudGUgPSBkYXRlKCdZJyk7CiRyZXN1bHQ9IGFycmF5ICgpOwovLyRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIGFjdGlmID0gJzEnIjsKJHF1ZXJ5ID0gIlNFTEVDVCBqLmxpY2VuY2UsIENPTkNBVF9XUygnICcsai5ub20sIGoucHJlbm9tKSBBUyBqb3VldXIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBBUyBqIExFRlQgSk9JTiAgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIEFTIHN0ICBPTiBzdC5saWNlbmNlID0gai5saWNlbmNlIEFORCBzdC5tb2lzID0gV0hFUkUgKHN0Lm1vaXMgIT0gPyBBTkQgc3QuYW5uZWUgPSA/KSBPUiAoc3QubW9pcyBJUyBOVUxMIEFORCBzdC5hbm5lZSBJUyBOVUxMKSBBTkQgYWN0aWYgPSAnMScgR1JPVVAgQlkgc3QubGljZW5jZSI7Ci8vJHF1ZXJ5PSAiU0VMRUNUIGlkLG1vaXMscG9pbnRzLCBhbm5lZSwgQ09OQ0FUX1dTKCcgJywgbm9tLCBwcmVub20pIEFTIGpvdWV1ciwgcHJvZ21vaXMgIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIE9SREVSIEJZIGlkIEFTQyI7CmVjaG8gJHF1ZXJ5OwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbW9pc19jb3VyYW50LCRhbm5lZV9jb3VyYW50ZSkpOwokcm93Y2xhc3M9ICdyb3cxJzsKJHJvd2FycmF5PSBhcnJheSAoKTsKaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIHsKCQoJJGxpY2VuY2UgPSAkcm93WydsaWNlbmNlJ107CgkkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2l0X21lbnMgIjsKCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCSRvbmVyb3ctPmlkPSAkcm93WydpZCddOwoJLy8kb25lcm93LT5tb2lzPSAkcm93Wydtb2lzJ107CgkvLyRvbmVyb3ctPmFubmVlPSAkcm93Wydhbm5lZSddOwoJLy8kb25lcm93LT5wb2ludHM9ICRyb3dbJ3BvaW50cyddOwoJLy8kb25lcm93LT5wcm9nbW9pcz0gJHJvd1sncHJvZ21vaXMnXTsKCS8vJG9uZXJvdy0+ZXF1aXBlPSAkdGhpcy0+Y3JlYXRlTGluaygkaWQsICd2aWV3c3RlYW1yZXN1bHQnLCAkcmV0dXJuaWQsICRyb3dbJ2VxdWlwZSddLGFycmF5KCdlcXVpcGUnPT4kcm93WydlcXVpcGUnXSksJHJvdykgOwoJJG9uZXJvdy0+am91ZXVyPSAkcm93Wydqb3VldXInXTsKCQoJCgkvKgkKCSRvbmVyb3ctPmNvbW11bmU9ICRyb3dbJ2NvbW11bmUnXTsKCSRvbmVyb3ctPmVtYWlsPSAkcm93WydlbWFpbCddOwoJJG9uZXJvdy0+dHJhbmNoZT0gJHJvd1sndHJhbmNoZSddOwoJJG9uZXJvdy0+YWN0aXZlPSAoJHJvd1snYWN0aXZlJ10gPT0gMSkgPyAkdGhpcy0+TGFuZygneWVzJykgOiAnJzsKCSovCgkkb25lcm93LT5pZD0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF9qb3VldXJzJywgJHJldHVybmlkLCAkcm93WydpZCddLGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSwgJHJvdyk7Cgkkb25lcm93LT5lZGl0bGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF9qb3VldXInLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pKTsKCSRvbmVyb3ctPnNpdG1lbnNsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9zaXRfbWVucycsICRyZXR1cm5pZCwgJ1NpdHVhdGlvbiBtZW5zdWVsbGUnLCBhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJJG9uZXJvdy0+Z2V0cGFydGllc2xpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3BhcnRpZXMnLCAkcmV0dXJuaWQsICdQYXJ0aWVzIGRpc3B1dMOpZXMnLCBhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJJG9uZXJvdy0+ZGVsZXRlbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGVsZXRlX2pvdWV1cicsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSwgJHRoaXMtPkxhbmcoJ2RlbGV0ZV9yZXN1bHRfY29uZmlybScpKTsKCSgkcm93Y2xhc3MgPT0gInJvdzEiID8gJHJvd2NsYXNzPSAicm93MiIgOiAkcm93Y2xhc3M9ICJyb3cxIik7Cgkkcm93YXJyYXlbXT0gJG9uZXJvdzsKICAgICAgfQogIH0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Jlc3VsdHNmb3VuZHRleHQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwokc21hcnR5LT5hc3NpZ24oJ3JldHJpZXZlYWxsc2l0bWVucycsCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCdyZXRyaWV2ZV9hbGxfc2l0X21lbnMnLCAkcmV0dXJuaWQsICdSw6ljdXDDqXJlciB0b3V0ZXMgbGVzIHNpdHVhdGlvbnMgbWVuc3VlbGxlcycpKTsKJHNtYXJ0eS0+YXNzaWduKCdjcmVhdGVsaW5rJywgCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnY3JlYXRlX25ld191c2VyMycsICRyZXR1cm5pZCwKCQkJCSAgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJHRoaXMtPkxhbmcoJ2FkZG5ld3NoZWV0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSkuCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnY3JlYXRlX25ld191c2VyMycsICRyZXR1cm5pZCwgCgkJCQkgICR0aGlzLT5MYW5nKCdhZGRuZXdzaGVldCcpLCAKCQkJCSAgYXJyYXkoKSkpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhbGxzaXRtZW5zLnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_all_parties.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwpkZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmNhbGN1bHMucGhwJyk7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7Cgokbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CiRxdWVyeSA9ICJTRUxFQ1QgbGljZW5jZSwgQ09OQ0FUX1dTKCcgJywgbm9tLCBwcmVub20pIEFTIGpvdWV1ciBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIGFjdGlmID0gJzEnIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiRyb3djbGFzcz0gJ3JvdzEnOwokcm93YXJyYXk9IGFycmF5ICgpOwokY2xlX2FwcGVsID0gcmFuZG9tKDEwKTsKaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAvLyBvbiBpbnN0YW5jaWUgbGEgY2xhc3NlIAoKICAgIHdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIHsKCSAgJHNlcnZpY2UgPSBuZXcgU2VydmljZSgpOwoJJGxpY2VuY2UgPSAkcm93WydsaWNlbmNlJ107Cgkkam91ZXVyID0gJHJvd1snam91ZXVyJ107CgkKCWVjaG8gJGxpY2VuY2UuIiAiLiRqb3VldXIuIjxiciAvPiI7CgkvL2VjaG8gIjx0ZD4iLiRyb3dbJ2xpY2VuY2UnXS4iPC90ZD4iOwoKLy92YXJfZHVtcCgkcmVzdWx0KTsKICAgICAKLyoqLwokcmVzdWx0ID0gJHNlcnZpY2UtPmdldEpvdWV1clBhcnRpZXMoIiRsaWNlbmNlIik7CiRpID0gMDsKCQlmb3JlYWNoKCRyZXN1bHQgYXMgJGNsZSA9PiR0YWIpCgkJewoJCQkkY29tcHRhZ2UgPSAwOwoJCQkKCQkJLy9vbiB2w6lyaWZpZSBxdWUgbGUgc2VydmljZSBlc3Qgb2sgc2lub24gb24gcGFzc2UgYXUgc3VpdmFudAoJCQlpZighaXNfYXJyYXkoJHJlc3VsdCkgJiYgY291bnQoJHJlc3VsdCk9PTApewoJCQkJLy9sZSBzZXJ2aWNlIGVzdCBkb3duCgkJCQkkZGVzaWduYXRpb24gPSAiU2VydmljZSBjb3Vww6kgb3UgbGljZW5jZSBpbmRpc3BvbmlibGUgcG91ciAiLiRqb3VldXI7CgkJCQkkc3RhdHVzID0gJ0VjaGVjJzsKCQkJCSRhY3Rpb24gPSdyZXRyaWV2ZV9hbGxfcGFydGllcyc7CgkJCQkKCQkJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csICRzdGF0dXMsICRkZXNpZ25hdGlvbiwgJGFjdGlvbik7CgkJCX0KCQkJZWxzZXsKCQkKCQkJJGxpY2VuY2UgPSAkdGFiW2xpY2VuY2VdOwoJCQkkYWR2bGljID0gJHRhYlthZHZsaWNdOwoJCQkkdmQgPSAkdGFiW3ZkXTsKCQoJCQkJaWYgKCR2ZCA9PSdWJyl7CgkJCQkJJHZkID0gMTsKCQkJCQl9CgkJCQllbHNlIAoJCQkJCXskdmQgPSAwOwoJCQkJfQoJCQoJCQkkbnVtam91cm4gPSAkdGFiW251bWpvdXJuXTsKCQkJaWYoaXNfYXJyYXkoJG51bWpvdXJuKSl7JG51bWpvdXJuID0gJzAnO30KCQkJJGNvZGVjaGFtcCA9ICR0YWJbY29kZWNoYW1wXTsKCQkJJGRhdGVldmVudCA9ICR0YWJbZGF0ZV07CgkJCSRjaGd0ID0gZXhwbG9kZSgiLyIsJGRhdGVldmVudCk7CgkJCSRkYXRlX2V2ZW50ID0gJGNoZ3RbMl0uIi0iLiRjaGd0WzFdLiItIi4kY2hndFswXTsKCQkJLy9lY2hvICJsYSBkYXRlIGVzdCIuJGRhdGVfZXZlbnQ7CgkKCQkJLy8JJGRhdGVfZXZlbnQgPSBjb252X2RhdGVfdmVyc19teXNxbCgkZGF0ZWV2ZW50KTsKCQkJJGFkdnNleGUgPSAkdGFiW2FkdnNleGVdOwoJCQkkYWR2bm9tcHJlID0gJHRhYlthZHZub21wcmVdOwoJCQkkcG9pbnRyZXMgPSAkdGFiW3BvaW50cmVzXTsKCQkJJGNvZWZjaGFtcCA9ICR0YWJbY29lZmNoYW1wXTsKCQkJJGFkdmNsYW9mID0gJHRhYlthZHZjbGFvZl07CgkKLyoqLwkJJHF1ZXJ5ID0gIlNFTEVDVCBsaWNlbmNlLGFkdmxpYywgbnVtam91cm4sIGNvZGVjaGFtcCwgZGF0ZV9ldmVudCwgY29lZmNoYW1wIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXMgV0hFUkUgbGljZW5jZSA9ID8gQU5EIGFkdmxpYyA9ID8gQU5EIG51bWpvdXJuID0gPyBBTkQgY29kZWNoYW1wID0gPyBBTkQgZGF0ZV9ldmVudCA9ID8gQU5EIGNvZWZjaGFtcCA9ID8iOwoJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlLCAkYWR2bGljLCAkbnVtam91cm4sICRjb2RlY2hhbXAsICRkYXRlX2V2ZW50LCAkY29lZmNoYW1wKSk7CgkJaWYoJGRicmVzdWx0ICAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkgewoJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXMgKGlkLCBsaWNlbmNlLCBhZHZsaWMsIHZkLCBudW1qb3VybiwgY29kZWNoYW1wLCBkYXRlX2V2ZW50LCBhZHZzZXhlLCBhZHZub21wcmUsIHBvaW50cmVzLCBjb2VmY2hhbXAsIGFkdmNsYW9mKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkJCSRpKys7CgkJCS8vZWNobyAkcXVlcnk7CgkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSggJGxpY2VuY2UsICRhZHZsaWMsICR2ZCwgJG51bWpvdXJuLCAkY29kZWNoYW1wLCAkZGF0ZV9ldmVudCwgJGFkdnNleGUsICRhZHZub21wcmUsICRwb2ludHJlcywgJGNvZWZjaGFtcCwgJGFkdmNsYW9mKSk7CgkJCgkJCWlmKCEkZGJyZXN1bHRhdCkKCQkJCXsKCQkJCQkkZGVzaWduYXRpb24gPSAkZGItPkVycm9yTXNnKCk7IAoJCQkJCSRzdGF0dXMgPSAnRWNoZWMnOwoJCQkJCSRhY3Rpb24gPSAncmV0cmlldmVfYWxsX3BhcnRpZXMnOwoJCQkJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csICRzdGF0dXMsICRkZXNpZ25hdGlvbiwgJGFjdGlvbik7CgkJCQl9CgkJCQkKCQkJfQoJCQkKCQl9Ly9maW4gZHUgZWxzZSAhaXNfYXJyYXkKCQl9Ly9maW4gZHUgZm9yZWFjaAoJCSRkZXNpZ25hdGlvbiA9ICJJbmNsdXNpb24gZGUgIi4kaS4iIHLDqXN1bHRhdHMgcG91ciAiLiRqb3VldXI7CgkJJHN0YXR1cyA9ICdPayc7CgkJJGFjdGlvbiA9ICdyZXRyaWV2ZV9hbGxfcGFydGllcyc7CgkJcGluZ19hZG1pbl9vcHM6OmVjcmlyZWpvdXJuYWwoJG5vdywkc3RhdHVzLCRkZXNpZ25hdGlvbiwkYWN0aW9uKTsKCQkvKiRjb21wdGFnZSA9ICRpOwoJCSRkZXNpZ25hdGlvbiA9ICJSw6ljdXDDqXJhdGlvbiBkZSAiLiRjb21wdGFnZS4iIHBhcnRpZXMgZGUgIi4kcGxheWVyOwoJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXAgKGlkLCBkYXRlbWFqLCBkZXNpZ25hdGlvbiwgYWN0aW9uKSBWQUxVRVMgKCcnLCA/LCA/LCA/KSI7CgkJJGFjdGlvbiA9ICJyZXRyaWV2ZV9wYXJ0aWVzIjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbm93LCAkZGVzaWduYXRpb24sJGFjdGlvbikpOwoJCWlmKCEkZGJyZXN1bHQpCgkJewoJCQllY2hvICRkYi0+c3FsLic8YnIvPicuJGRiLT5FcnJvck1zZygpOyBkaWUoKTsKCQl9CgkJKi8KCQkKCX0vL2ZpbiBkdSB3aGlsZQp9Ly9maW4gZHUgaWYgJGRicmVzdWx0CmVsc2Uge2VjaG8gIjxwPlBhcyBkZSBqb3VldXJzIGFjdGlmcy48L3A+Ijt9Ci8qKi8KLyoJCgkkdGhpcy0+U2V0TWVzc2FnZSgkdGhpcy0+TGFuZygnc2F2ZWRfcmVjb3JkJykpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncmVuY29udHJlcycpOwoqLwojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_all_parties_spid.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvaW5jbHVkZS9wcmVmcy5waHAnKTsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKJGRlc2lnbmF0aW9uID0gJyc7CiRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKJHF1ZXJ5ID0gIlNFTEVDVCBDT05DQVRfV1MoJyAnLG5vbSxwcmVub20pIGFzIHBsYXllciwgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIGFjdGlmPScxJyI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwppZighJGRicmVzdWx0KXsKCS8vZWNobyAkZGItPnNxbC4nPGJyLz4nLiRkYi0+RXJyb3JNc2coKTsgCgkkZGVzaWduYXRpb24uPSAkZGItPkVycm9yTXNnKCk7CgkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7Ly8nUGIgYXZlYyBsYSByZXF1ZXRlIGRlIEJERCcpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncmVjdXAnKTsKfQplbHNlCnsKCS8vb24gaW5zdGFuY2llIGxhIGNsYXNzZSBldCBvbiB2YSBjb21tZW5jZXIgw6AgYm91Y2xlcgoJJHNlcnZpY2UgPSBuZXcgU2VydmljZSgpOwoJd2hpbGUoJGRicmVzdWx0ICYmICRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKCXsKCSRsaWNlbmNlID0gJHJvd1snbGljZW5jZSddOwoJCgkKCQoJJHF1ZXJ5ID0gIlNFTEVDVCBDT05DQVRfV1MoJyAnLCBub20sIHByZW5vbSkgQVMgcGxheWVyLCBsaWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgV0hFUkUgbGljZW5jZSA9ID8iOwoJJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UpKTsKCQoJCWlmICgkZGJyZXRvdXIgJiYgJGRicmV0b3VyLT5SZWNvcmRDb3VudCgpID4gMCkKICAJCXsKICAgIAkJCXdoaWxlICgkcm93PSAkZGJyZXRvdXItPkZldGNoUm93KCkpCiAgICAgIAkJCXsKCQkJCSRsaWNlbmNlMiA9ICRyb3dbJ2xpY2VuY2UnXTsKCQkJCSRwbGF5ZXIgPSAkcm93WydwbGF5ZXInXTsKCQkJCSRyZXN1bHQgPSAkc2VydmljZS0+Z2V0Sm91ZXVyUGFydGllc1NwaWQoIiRsaWNlbmNlMiIpOwoJCQkJJGkgPSAwOwoJCQkJJGNvbXB0ZXVyID0gMDsKCQkJCQoJCQkJZm9yZWFjaCgkcmVzdWx0IGFzICRjbGUgPT4kdGFiKQoJCQkJewoJCQkJJGNvbXB0ZXVyKys7CgkJCQoJCQkJCWlmKCRjb21wdGV1ciAlIDYwID09MCkKCQkJCQkJewoJCQkJCQkJc2xlZXAoMik7CgkJCQkJCX0KCQkJCQkJCgkJCQkkZGF0ZWV2ZW50ID0gJHRhYltkYXRlXTsKCQkJCSRjaGd0ID0gZXhwbG9kZSgiLyIsJGRhdGVldmVudCk7CgkJCQkkZGF0ZV9ldmVudCA9ICRjaGd0WzJdLiItIi4kY2hndFsxXS4iLSIuJGNoZ3RbMF07CgkJCQkvL2VjaG8gImxhIGRhdGUgZXN0Ii4kZGF0ZV9ldmVudDsKCQkJCQoJCQkJLy9vbiBleHRyYWl0IGxlIG1vaXMgcG91ciByZXRyb3V2ZXIgbGEgc2l0dWF0aW9uIG1lbnN1ZWxsZQoJCQkJCWlmIChzdWJzdHIoJGNoZ3RbMV0sIDAsMSk9PTApewoJCQkJCQkkbW9pc19ldmVudCA9IHN1YnN0cigkY2hndFsxXSwgMSwxKTsKCQkJCQkJLy9lY2hvICJsYSBkYXRlIGVzdCIuJGRhdGVfZXZlbnQ7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCSRtb2lzX2V2ZW50ID0gJGNoZ3RbMV07CgkJCQkJfQoJCQkJCgkJCQkkbm9tID0gJHRhYltub21dOwoJCQkJJGNsYXNzZW1lbnQgPSAkdGFiW2NsYXNzZW1lbnRdOwoJCQkJJGNsYSA9IHN1YnN0cigkY2xhc3NlbWVudCwgMCwxKTsKCQkJCQoJCQkJCWlmKCRjbGEgPT0gJ04nKQoJCQkJCQl7CgkJCQkJCQkkbmV3Y2xhc3NlbWVudCA9IGV4cGxvZGUoJy0nLCAkY2xhc3NlbWVudCk7CgkJCQkJCQkkbmV3Y2xhc3MgPSAkbmV3Y2xhc3NlbWVudFsxXTsKCQkJCQkJfQoJCQkJCQllbHNlIAoJCQkJCQl7CgkJCQkJCQkkbmV3Y2xhc3MgPSAkY2xhc3NlbWVudDsKCQkJCQkJfQoJCQkJCQoJCQkJLy9vbiB2YSBjYWxjdWxlciBsYSBkaWZmw6lyZW5jZSBlbnRyZSBsZSBjbGFzc2VtZW50IGRlIGwnYWR2ZXJzYWlyZSBldCBsZSBjbGFzc2VtZW50IGR1IGpvdWV1ciBkdSBjbHViCgkJCQkkcXVlcnkgPSAiU0VMRUNUIHBvaW50cyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyBXSEVSRSBsaWNlbmNlID0gPyBBTkQgbW9pcyA9ID8iOy8vIiBBTkQgc2Fpc29uID0gPyI7CgkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSwkbW9pc19ldmVudCkpOwoKCQkJCQlpZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKQoJCQkJCQl7CgkJCQkJCQkkZGVzaWduYXRpb24uPSJFY2FydCBub24gY2FsY3Vsw6kiOwoJCQkJCQkJJGVjYXJ0ID0gMDsKCQkJCQkJfQoKCQkJCSRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkJCQkkcG9pbnRzID0gJHJvd1twb2ludHNdOwoJCQkJJGVjYXJ0X3JlZWwgPSAkcG9pbnRzIC0gJG5ld2NsYXNzOwoJCQkJLy9vbiBjYWxjdWxlIGwnw6ljYXJ0IHNlbG9uIGxhIGdyaWxsZSBkZSBwb2ludHMgZGUgbGEgRkZUVAoJCQkJJHR5cGVfZWNhcnQgPSBDYWxjdWxFY2FydCgkZWNhcnRfcmVlbCk7CgkJCQkkZXByZXV2ZSA9ICR0YWJbZXByZXV2ZV07CgkJCQkKCQkJCS8vIGRlIHF1ZWxsZSBjb21ww6l0aXRpb24gcydhZ2l0LWlsID8gCgkJCQkvL09uIGEgbGEgZGF0ZSBldCBsZSB0eXBlIGQnw6lwcmV1dmUKCQkJCS8vb24gcGV1dCBkb25jIGVuIGTDqWR1aXJlIGxlIHRvdXIgdmlhIGxlIGNhbGVuZHJpZXIKCQkJCS8vZXQgbGUgY29lZmZpY2llbnQgcG91ciBjYWxjdWxlciBsZXMgcG9pbnRzIHZpYSBsYSB0YWJsZSB0eXBlX2NvbXBldGl0b25zCgoJCQkJLy8xIC0gb24gcsOpY3Vww6lyZSBsZSB0b3VyIHMnaWwgZXhpc3RlCgkJCQkvL29uIHZhIGZkb25jIGNoZXJjaGVyIGRhbnMgbGEgdGFibGUgY2FsZW5kcmllcgoJCQkJJHF1ZXJ5ID0gIlNFTEVDVCBudW1qb3VybiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jYWxlbmRyaWVyIFdIRVJFIG5hbWVfY29tcGV0ID0/IEFORCBkYXRlX2NvbXBldCA9ID8iOwoJCQkJJHJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGVwcmV1dmUsICRkYXRlX2V2ZW50KSk7CgoJCQkJCWlmICgkcmVzdWx0YXQgJiYgJHJlc3VsdGF0LT5SZWNvcmRDb3VudCgpPjApewoJCQkJCQkkcm93ID0gJHJlc3VsdGF0LT5GZXRjaFJvdygpOwoJCQkJCQkkbnVtam91cm4gPSAkcm93W251bWpvdXJuXTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJG51bWpvdXJuID0gMDsKCQkJCQl9CgoJCQkJLy8yIC0gb24gcsOpY3Vww6hyZSBsZSBjb2VmZmljaWVudCBkZSBsYSBjb21ww6l0aXRpb24KCQkJCSRjb2VmZiA9IGNvZWZmKCRlcHJldXZlKTsKCgkJCQkvLyRwb2ludHJlcyA9ICRwb2ludHMqJGNvZWZmOwoJCQkJLy9maW4gZHUgcG9pbnQgMgoJCQkJCgkJCQkkdmljdG9pcmUgPSAkdGFiW3ZpY3RvaXJlXTsKCQkJCQoJCQkJCWlmICgkdmljdG9pcmUgPT0nVicpCgkJCQkJewoJCQkJCQkkdmljdG9pcmUgPSAxOwoJCQkJCX0KCQkJCQllbHNlIAoJCQkJCXsKCQkJCQkJJHZpY3RvaXJlID0gMDsKCQkJCQl9CgkJCQkKCQkJCS8vb24gcGV1dCBkw6lzb3JtYWlzIGNhbGN1bGVyIGxlcyBwb2ludHMgCgkJCQkvL2VjaG8gImxhIHZpY3RvaXJlIGVzdCA6ICIuJHZpY3RvaXJlLiI8YnIgLz4iOwoJCQkJJHBvaW50czEgPSBDYWxjdWxQb2ludHNJbmRpdnMoJHR5cGVfZWNhcnQsICR2aWN0b2lyZSk7CgkJCQkvL2VjaG8gImxlIGNvZWZmIGVzdCA6ICIuJGNvZWZmLiI8YnIgLz4iOwoJCQkJLy9lY2hvICJsZSB0eXBlIGVjYXJ0IGVzdCA6ICIuJHR5cGVfZWNhcnQuIjxiciAvPiI7CgkJCQkvL2VjaG8gImxlcyBwb2ludHMgMSBzb250IDogIi4kcG9pbnRzMS4iPGJyIC8+IjsKCQkJCSRwb2ludHJlcyA9ICRwb2ludHMxKiRjb2VmZjsJCgkJCQkkZm9yZmFpdCA9ICR0YWJbZm9yZmFpdF07CgkJCQkKCgkJCQkkcXVlcnkgPSAiU0VMRUNUIGxpY2VuY2UsIGRhdGVfZXZlbnQsbm9tIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBXSEVSRSBsaWNlbmNlID0gPyBBTkQgZGF0ZV9ldmVudCA9ID8gQU5EIG5vbSA9ID8iOwoJCQkJLy9lY2hvICRxdWVyeTsKCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlLCAkZGF0ZV9ldmVudCwkbm9tKSk7CgkJCQkKCQkJCWlmKCRkYnJlc3VsdCAgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID09IDApIAoJCQkJCXsKCQkJCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgKGlkLCBzYWlzb24sIGRhdGVtYWosIGxpY2VuY2UsIGRhdGVfZXZlbnQsIGVwcmV1dmUsIG5vbSwgbnVtam91cm4sY2xhc3NlbWVudCwgdmljdG9pcmUsZWNhcnQsdHlwZV9lY2FydCwgY29lZmYsIHBvaW50cmVzLCBmb3JmYWl0KSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkJCQkJCSRpKys7CgkJCQkJCS8vZWNobyAkcXVlcnk7CgkJCQkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkc2Fpc29uX2NvdXJhbnRlLCRub3csICRsaWNlbmNlLCAkZGF0ZV9ldmVudCwgJGVwcmV1dmUsICRub20sICRudW1qb3VybiwgJG5ld2NsYXNzLCAkdmljdG9pcmUsJGVjYXJ0X3JlZWwsJHR5cGVfZWNhcnQsICRjb2VmZiwkcG9pbnRyZXMsICRmb3JmYWl0KSk7CgkJCQkJJHN0YXR1cyA9ICdQYXJ0aWVzIFNQSUQnOwoJCQkJCSRhY3Rpb24gPSAicmV0cmlldmVfYWxsX3BhcnRpZXNfc3BpZCI7CgkJCQkJCgkJCQkJCWlmKCEkZGJyZXN1bHRhdCkKCQkJCQkJewoJCQkJCQkJJGRlc2lnbmF0aW9uID0gJGRiLT5FcnJvck1zZygpOwoJCQkJCQkJCgkJCQkJCQkKCQkJCQkJCS8vZWNobyAkZGItPnNxbC4nPGJyLz4nLiRkYi0+RXJyb3JNc2coKTsgCgkJCQkJCX0KCQkJCQkJZWxzZQoJCQkJCQl7CgkJCQkJCQoJCQkJCQkJJGNvbXB0YWdlID0gJGk7CQkJCQkJCQoJCQkJCQkJJGRlc2lnbmF0aW9uID0gIlLDqWN1cMOpcmF0aW9uIHNwaWQgZGUgIi4kY29tcHRhZ2UuIiBwYXJ0aWVzIHN1ciAiLiRjb21wdGV1ci4iICBkZSAiLiRwbGF5ZXI7CgkJCQkJCX0KCQkJCQkJCQkJCQkJCQoJCQkJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwIChpZCwgZGF0ZWNyZWF0ZWQsIHN0YXR1cywgZGVzaWduYXRpb24sIGFjdGlvbikgVkFMVUVTICgnJywgPywgPywgPywgPykiOwoJCQkJCQkJCgkJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRub3csJHN0YXR1cywkZGVzaWduYXRpb24sJGFjdGlvbikpOwoJCQkJCQkKCQkJCQkJCWlmKCEkZGJyZXN1bHQpCgkJCQkJCQl7CgkJCQkJCQkJJGRlc2lnbmF0aW9uLj0kZGItPkVycm9yTXNnKCk7IAoJCQkJCQkJfQoJCQkJCQkKCQkJCQkJCWlmKCRjb21wdGV1ciA+MCkKCQkJCQkJCXsKCQkJCQkJCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgU0VUIHNwaWQgPSA/IFdIRVJFIGxpY2VuY2UgPSA/IjsKCQkJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRjb21wdGV1ciwkbGljZW5jZSkpOwoKCQkJCQkJCQlpZighJGRicmVzdWx0KQoJCQkJCQkJCXsKCQkJCQkJCQkJJGRlc2lnbmF0aW9uLj0gJGRiLT5FcnJvck1zZygpOyAKCgkJCQkJCQkJfQoJCQkJCQkJfQoKCQkJCQkJCQoJCQkJCQkKCQkJCQkJCgkJCQkJLyoqLwoJCQkJfS8vZmluIGR1IGlmIGRldXhpw6htZSBSZWNvcmRDb3VudCgpID09MAoJCQkKCQkJfS8vIEZpbiBkdSBmb3JlYWNoCgkJfS8vZmluIGR1IHdoaWxlCgkKCX0vL2ZpbiBkdSBpZiByZWNvcmRjb3VudCgpCn0vL2ZpbiBkdSBwcmVtaWVyIHdoaWxlCn0KIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_all_poule_rencontres.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3RyYXZhdXgucGhwJyk7CgovLyBsZXMgcHLDqWbDqXJlbmNlcyBuw6ljZXNzYWlyZXMKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJG5vdyA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpLCAiJyIpOwokbm9tX2VxdWlwZXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbm9tX2VxdWlwZXMnKTsKJGRlc2lnbmF0aW9uID0gJyc7Ci8vb24gZmFpdCB1bmUgcmVxdWV0ZSBwb3VyIGV4dHJhaXJlIHRvdXRlcyBsZXMgaW5mb3MgYWZpbiBkZSBwcsOpcGFyZXIgdW5lIGJvdWNsZQokcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcyBXSEVSRSBzYWlzb24gPSA/IjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHNhaXNvbikpOwoKaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQogIHsKCSRzZXJ2aWNlID0gbmV3IFNlcnZpY2UoKTsKIAkvL29uIGluc3RhbmNpZSB1biBjb21wdGV1ciAKCQoJZm9yKCRpPTA7JGk8PSRsaWduZXM7JGkrKykKICAgIAkvL3doaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+R2V0Um93cygpKQogICAgICAJewoJCSRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkJCgkJCgl9Cn0KZWxzZSB7CgkkdGhpcy0+U2V0TWVzc2FnZSgnUGFzIGRcJ8OpcXVpcGVzIHRyb3V2w6llcycpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignZXF1aXBlcycpOwp9Ly9maW4gZHUgaWYgZGJyZXN1bHQKCgokaWRkaXYgPSAkcGFyYW1zWydpZGRpdiddOwokaWRwb3VsZSA9ICRwYXJhbXNbJ2lkcG91bGUnXTsKCiRzZXJ2aWNlID0gbmV3IFNlcnZpY2UoKTsKJHJlc3VsdCA9ICRzZXJ2aWNlLT5nZXRQb3VsZVJlbmNvbnRyZXMoJGlkZGl2LCRpZHBvdWxlKTsKCgovL3Zhcl9kdW1wKCRyZXN1bHQpOwogICAgIAovKiovCiRpPTA7CmZvcmVhY2goJHJlc3VsdCBhcyAkY2xlID0+JHRhYikKewoJCgkkY2xlX2FwcGVsID0gJ0FQJzsKCS8vZWNobyAiJGNsZV9hcHBlbCA8YnIgLz4iOwoJJGxpYmVsbGUgPSAkdGFiW2xpYmVsbGVdOwoJJGVxdWEgPSAkdGFiW2VxdWFdOwoJJGVxdWIgPSAkdGFiW2VxdWJdOwoJCgkvL29uIGZhaXQgcXVlbHF1ZSB0cmFuc2Zvcm1hdGlvbnMgZGVzIGluZm9zIHJlY3VlaWxsaWVzCglwcmVnX21hdGNoX2FsbCgnI1swLTldKyMnLCRsaWJlbGxlLCRleHRyYWN0KTsKCSR0b3VyID0gJGV4dHJhY3RbMF1bMF07CgkKCSRleHRyYWN0aW9uID0gc3Vic3RyKCRsaWJlbGxlLC04KTsKCSRkYXRlX2V4dHJhY3QgPSBleHBsb2RlKCcvJywgJGV4dHJhY3Rpb24pOwoJJGFubmVlX2RhdGUgPSAkZGF0ZV9leHRyYWN0WzJdICsgMjAwMDsKCSRkYXRlX2V2ZW50ID0gJGFubmVlX2RhdGUuIi0iLiRkYXRlX2V4dHJhY3RbMV0uIi0iLiRkYXRlX2V4dHJhY3RbMF07CgkkdXBsb2FkZWQgPSAwOwoJCgkkY2x1YmEgPSBzdHJwb3MoJGVxdWEsJG5vbV9lcXVpcGVzKTsKCSRjbHViYiA9IHN0cnBvcygkZXF1Yiwkbm9tX2VxdWlwZXMpOwoJaWYgKCRjbHViYSAhPT0gZmFsc2UgfHwgJGNsdWJiICE9PSBmYWxzZSl7CgkJJGNsdWIgPSAxOwoJfQoJZWxzZXsKCQkkY2x1YiA9IDA7Cgl9Cgkkc2NvcmVhID0gJHRhYltzY29yZWFdOwoJJHNjb3JlYiA9ICR0YWJbc2NvcmViXTsKCSRsaWVuID0gJHRhYltsaWVuXTsJCgkKCSRxdWVyeSA9ICJTRUxFQ1QgbGllbiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBXSEVSRSBsaWVuID0gPyAiOwoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpZW4pKTsKCWlmKCRkYnJlc3VsdCAgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID09IDApIHsKCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzIChpZCxpZHBvdWxlLCBpZGRpdiwgY2x1YiwgdG91ciwgZGF0ZV9ldmVudCwgdXBsb2FkZWQsIGxpYmVsbGUsIGVxdWEsIGVxdWIsIHNjb3JlYSwgc2NvcmViLCBsaWVuKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkvLwllY2hvICRxdWVyeTsKCQkkaSsrOwoJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkaWRwb3VsZSwgJGlkZGl2LCAkY2x1YiwgJHRvdXIsICRkYXRlX2V2ZW50LCAkdXBsb2FkZWQsICRsaWJlbGxlLCAkZXF1YSwgJGVxdWIsICRzY29yZWEsICRzY29yZWIsICRsaWVuKSk7CgkJCgkJaWYoISRkYnJlc3VsdGF0KQoJCXsKCQkJJGRlc2lnbmF0aW9uIC49ICRkYi0+RXJyb3JNc2coKTsgCgkJfQoJfQp9CgokY29tcHRhZ2UgPSAkaTsKJHN0YXR1cyA9ICdQb3VsZXMnOwokZGVzaWduYXRpb24gPSAiUsOpY3Vww6lyYXRpb24gZGUgIi4kY29tcHRhZ2UuIiByZW5jb250cmVzIGRlIGxhIHBvdWxlICIuJGlkcG91bGU7CiRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXAgKGlkLCBkYXRlbWFqLCBzdGF0dXMsIGRlc2lnbmF0aW9uLCBhY3Rpb24pIFZBTFVFUyAoJycsID8sID8sID8sID8pIjsKJGFjdGlvbiA9ICJyZXRyaWV2ZV9wb3VsZXNfcmVuY29udHJlcyI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRub3csJHN0YXR1cywgJGRlc2lnbmF0aW9uLCRhY3Rpb24pKTsKaWYoISRkYnJlc3VsdCkKewoJJGRlc2lnbmF0aW9uLj0gJGRiLT5FcnJvck1zZygpOyAKfQoJCgkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdlcXVpcGVzJyk7CiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_all_sit_mens.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwovL3JlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmNhbGN1bHMucGhwJyk7CiRkYj0kZ0Ntcy0+R2V0RGIoKTsKLy8kZGIgPSYgJHRoaXMtPkdldERiKCk7CiRtb2lzX2NvdXJhbnQgPSBkYXRlKCduJyk7CiRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKJG1vaXNfZnJhbmNhaXMgPSBhcnJheSgnSmFudmllcicsICdGw6l2cmllcicsJ01hcnMnLCAnQXZyaWwnLCAnTWFpJywgJ0p1aW4nLCAnSnVpbGxldCcsJ0Fvw7t0JywgJ1NlcHRlbWJyZScsICdPY3RvYnJlJywnTm92ZW1icmUnLCdEw6ljZW1icmUnKTsKJG5vdyA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpLCAiJyIpOwokbW9pc19yZWVsID0gJG1vaXNfY291cmFudCAtIDE7CiRtb2lzX3NtID0gJG1vaXNfZnJhbmNhaXNbIiRtb2lzX3JlZWwiXTsKJG1vaXNfc2l0X21lbnMgPSAkbW9pc19zbS4iICIuJGFubmVlX2NvdXJhbnRlOwoKJG1lc3NhZ2UgPSAnJzsKCiRxdWVyeSA9ICJTRUxFQ1QgbGljZW5jZSwgbm9tLCBwcmVub20gRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSAgYWN0aWYgPSAnMSciOwkKCiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwokbGlnbmVzID0gJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpOwovL2VjaG8gIiRsaWduZXMgPGJyIC8+IjsvLyBub21icmUgdG90YWwgZGUgbGlnbmVzIHBvc3NpYmxlcyAkaSBlc3QgY2UgY29tcHRldXIKCmlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkKICB7Cgkkc2VydmljZSA9IG5ldyBTZXJ2aWNlKCk7CiAJLy9vbiBpbnN0YW5jaWUgdW4gY29tcHRldXIgCgkKCWZvcigkaT0wOyRpPD0kbGlnbmVzOyRpKyspCiAgICAJLy93aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkdldFJvd3MoKSkKICAgICAgCXsKCQkkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJCS8vbm91dmVsbGUgcmVxdWV0ZSBwb3VyIHNhdm9pciBzaSBsYSBzaXR1YXRpb24gbWVuc3VlbGxlICBhIGTDqWrDoCDDqXTDqSBpbnPDqXLDqWUKCQkKCQkkbGljZW5jZTIgPSAkcm93WydsaWNlbmNlJ107CgkJJG5vbTEgPSAkcm93Wydub20nXTsKCQkkcHJlbm9tMSA9ICRyb3dbJ3ByZW5vbSddOwoJCWVjaG8gIiRpIGxlIGpvdWV1ciBlc3QgIi4kbm9tMS4iICIuJHByZW5vbTEuIiAiLiRsaWNlbmNlMi4iPGJyLz4iOwoJCSRxdWVyeSA9ICJTRUxFQ1QgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyBXSEVSRSBsaWNlbmNlID0gPyBBTkQgbW9pcyA9ID8gQU5EIGFubmVlID0gPyI7CgkvLwllY2hvICIkcXVlcnkgPGJyIC8+IjsKCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlMiwkbW9pc19jb3VyYW50LCAkYW5uZWVfY291cmFudGUpKTsKCQkkbmxpZ25lcyA9ICRkYnJlc3VsdGF0LT5SZWNvcmRDb3VudCgpOwoJCWVjaG8gImxlIG5iIGRlIGxpZ25lcyByZXRvdXJuw6llcyBlc3QgIi4kbmxpZ25lcy4iPGJyIC8+IjsKCQlpZiAoJGRicmVzdWx0YXQtPlJlY29yZENvdW50KCkgPT0gMCkKCQl7CgkJCS8vYXVjdW5lIHNhaXNpZSBmYWl0ZSwgb24gdmEgZCdhYm9yZCB2w6lyaWZpZXIgcXVlIGxhIGxpY2VuY2UgZGUgY2hhY3VuIGZvbmN0aW9ubmUgYXUgbml2ZWF1IGRlIGxhIGZmdHQgKGlzX2FycmF5KQoJCQkKCQkJLy9lY2hvICJzaXQgbWVucyBkw6lqw6Agc2Fpc2llIDxiciAvPiI7CgkJCgkJCQoJCQoJCQkkcmVzdWx0ID0gJHNlcnZpY2UtPmdldEpvdWV1cigiJGxpY2VuY2UyIik7CgkJCS8vdmFyX2R1bXAoJHJlc3VsdCk7CgkJCQoJCQkJaWYoIWlzX2FycmF5KCRyZXN1bHQpKQoJCQkJewoJCQkJCSRtZXNzYWdlLj0iU2VydmljZSBjb3Vww6kgb3UgbGljZW5jZSBhYnNlbnRlIHBvdXIgIi4kbm9tLiIgIi4kcHJlbm9tOwoJCQkJfQoJCQkJZWxzZXsKCQkJCgkJCQkvKiovCgkJCS8vCSRjbGVfYXBwZWwgPSAnQVAnOwoJCQkvLwkkcGhhc2UgPSAyOwoJCQkJLy9lY2hvICIkY2xlX2FwcGVsIDxiciAvPiI7CgkJCQoJCQkJJGxpY2VuY2UgPSAkcmVzdWx0W2xpY2VuY2VdOwoJCQkJLy8JZWNobyAibGEgbGljZW5jZSBlc3QgJGxpY2VuY2UgPGJyIC8+IjsKCQkJCSRub20gPSAkcmVzdWx0W25vbV07CgkJCQkkcHJlbm9tID0gJHJlc3VsdFtwcmVub21dOwoJCQkJZWNobyAibGUgZGV1eGnDqG1lIGFwcGVsIGVzdCA6ICIuJG5vbS4iICIuJHByZW5vbS4gIjxiciAvPiI7CgkJCQkkbmF0aW8gPSAkcmVzdWx0W25hdGlvXTsKCQkJCSRjbGdsb2IgPSAkcmVzdWx0W2NsZ2xvYl07CgkJCQkkcG9pbnRzID0gJHJlc3VsdFtwb2ludF07CgkJCQkkYWNsZ2xvYiA9ICRyZXN1bHRbYWNsZ2xvYl07CgkJCQkkYXBvaW50ID0gJHJlc3VsdFthcG9pbnRdOwoJCQkJJGNsbmF0ID0gJHJlc3VsdFtjbG5hdF07CgkJCQkkY2F0ZWcgPSAkcmVzdWx0W2NhdGVnXTsKCQkJCSRyYW5ncmVnID0gJHJlc3VsdFtyYW5ncmVnXTsKCQkJCSRyYW5nZGVwID0gJHJlc3VsdFtyYW5nZGVwXTsKCQkJCSR2YWxjbGEgPSAkcmVzdWx0W3ZhbGNsYV07CgkJCQkkY2xwcm8gPSAkcmVzdWx0W2NscHJvXTsKCQkJCSR2YWxpbml0ID0gJHJlc3VsdFt2YWxpbml0XTsKCQkJCSRwcm9nbW9pcyA9ICRyZXN1bHRbcHJvZ21vaXNdOwoJCQkJJHByb2dhbm4gPSAkcmVzdWx0W3Byb2dhbm5dOwoKCQkJCQlpZiggJGxpY2VuY2UgPT0gJycpCgkJCQkJewoJCQkJCQkvLyBpbCBuJ3kgYSBwYXMgZGUgY29ycmVzcG9uZGFuY2UKCQkJCQkJLy9vdSBsZSBqb3VldXIgZXN0IGTDqXNhY3RpdsOpCgkJCQkJCS8vb3UgbGUgc2VydmljZSBlc3QgSC5TCgkJCQkJCS8vb24gbGUgcmVwb3J0ZSBkYW5zIGxlIGpvdXJuYWwgZMOpZGnDqQoJCQkJCQkkc3RhdHVzID0gIkVycm9yIjsKCQkJCQkJJGRlc2lnbmF0aW9uID0gIkxpY2VuY2UgYWJzZW50ZSBwb3VyICIuJG5vbTEuIiAiLiRwcmVub20xLiIgb3UgY291cHVyZSBkdSBzZXJ2aWNlIjsKCQkJCQkJJG1lc3NhZ2UuPSAkZGVzaWduYXRpb247ZWNobyAiJGRlc2lnbmF0aW9uIjsKCQkJCQkJJGFjdGlvbiA9ICJyZXRyaWV2ZV9hbGxfc2l0X21lbnMiOwoJCQkJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwIChpZCwgZGF0ZW1haiwgc3RhdHVzLCBkZXNpZ25hdGlvbiwgYWN0aW9uKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/KSI7CgkJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRub3csICRzdGF0dXMsICRkZXNpZ25hdGlvbiwgJGFjdGlvbikpOwoJCQkJCQoJCQkKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCgoJCQkJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIChpZCxkYXRlY3JlYXRlZCwgZGF0ZW1haiwgbW9pcywgYW5uZWUsIHBoYXNlLCBsaWNlbmNlLCBub20sIHByZW5vbSwgcG9pbnRzLCBjbG5hdCwgcmFuZ3JlZyxyYW5nZGVwLCBwcm9nbW9pcykgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkJCQkvL2VjaG8gJHF1ZXJ5OwoJCQkJCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJG5vdywkbm93LCRtb2lzX2NvdXJhbnQsICRhbm5lZV9jb3VyYW50ZSwgJHBoYXNlLCAkbGljZW5jZSwgJG5vbSwgJHByZW5vbSwgJHBvaW50cywgJGNsbmF0LCAkcmFuZ3JlZywgJHJhbmdkZXAsICRwcm9nbW9pcykpOwoKCQkJCQkJCWlmKCEkZGJyZXN1bHRhdCkKCQkJCQkJCXsKCQkJCQkJCQkkbWVzc2FnZS49JGRiLT5FcnJvck1zZygpOyAKCQkJCQkJCX0KCQkJCQkJCWVsc2UKCQkJCQkJCXsKCQkJCQkJCgkJCQkJCQkKCQkJCQkJCQkvL29uIGVudm9pZSB1biBtZXNzYWdlIMOgIGxhIHRhYmxlIHLDqWN1cCAKCQkJCQkJCQkkc3RhdHVzID0gIk9rIjsKCQkJCQkJCQkkZGVzaWduYXRpb24gPSAiUsOpY3Vww6lyYXRpb24gc2l0dWF0aW9uIG1lbnN1ZWxsZSBkZSAiLiRtb2lzX3NtLiIgIi4kYW5uZWVfY291cmFudGUuIiBkZSAiLiRub20uIiAiLiRwcmVub207CgkJCQkJCQkJJG1lc3NhZ2UuPSAkZGVzaWduYXRpb247CgkJCQkJCQkJZWNobyAiJGRlc2lnbmF0aW9uPGJyIC8+IjsKCQkJCQkJCQkkYWN0aW9uID0gJ3JldHJpZXZlX2FsbF9zaXRfbWVucyc7CgkJCQkJCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cCAoaWQsIGRhdGVjcmVhdGVkLCBzdGF0dXMsIGRlc2lnbmF0aW9uLCBhY3Rpb24pIFZBTFVFUyAoJycsID8sID8sID8sID8pIjsKCQkJCQkJCQkkZGJxdWVyeSA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRub3csJHN0YXR1cywkZGVzaWduYXRpb24sJGFjdGlvbikpOwoJCQkJCQkJCQoJCQkJCQkJCWlmKCEkZGJxdWVyeSl7CgkJCQkJCQkJCSRtZXNzYWdlLj0kZGItPkVycm9yTXNnKCk7IAoJCQkJCQkJCX0KCQkJCQkJCQkvL29uIG1vZGlmaWUgYXVzc2kgbGEgdGFibGUgZGVzIHJlY3VwIHBhcnRpZXMKCQkJCQkJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIFNFVCBzaXRfbWVucyA9ID8sIGRhdGVtYWogPSA/IFdIRVJFIGxpY2VuY2UgPSA/IjsKCQkJCQkJCQkvLyRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyAoaWQsIHNpdF9tZW5zLCBsaWNlbmNlKSBWQUxVRVMgKCcnLCA/LCA/KSI7CgkJCQkJCQoJCQkJCQkJCSRkYnF1ZXJ5MiA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCAkbW9pc19zaXRfbWVucywgJG5vdywgJGxpY2VuY2UyKSk7CgkJCQkJCQkJaWYoISRkYnF1ZXJ5Mil7CgkJCQkJCQkJCSRtZXNzYWdlLj0kZGItPkVycm9yTXNnKCk7IAoJCQkJCQkJCX0KCQkJCQkJCX0KCQkJCQl9Ly9maW4gZHUgaWYgJGxpY2VuY2UJCgkJCSRzdGF0dXMgPSAnRWNoZWMnOwoJCQkkZGVzaWduYXRpb24gPSAiRWNoZWMgc2l0dWF0aW9uIG1lbnN1ZWxsZSBkZSAiLiRtb2lzX3NtLiIgIi4kYW5uZWVfY291cmFudGUuIiBkZSAiLiRub20uIiAiLiRwcmVub207CX0vL2ZpbiBkdSBpZiBpc19hcnJheQoJCQkkYWN0aW9uID0gJ3JldHJpZXZlX2FsbF9zaXRfbWVucyc7CgkJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXAgKGlkLCBkYXRlY3JlYXRlZCwgc3RhdHVzLCBkZXNpZ25hdGlvbiwgYWN0aW9uKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/KSI7CgkJCSRkYnF1ZXJ5ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5vdywkc3RhdHVzLCRkZXNpZ25hdGlvbiwkYWN0aW9uKSk7CgkJCQoJCQlpZighJGRicXVlcnkpewoJCQkJZWNobyAkZGItPnNxbC4nPGJyLz4nLiRkYi0+RXJyb3JNc2coKTsgCgkJCX0KCQkJfS8vZmluIGR1IGlmIGlzX2FycmF5CgkJCWVsc2UKCQkJewoJCQkJZWNobyAic2l0IG1lbnMgZMOpasOgIHNhaXNpZSA8YnIgLz4iOwoJCQl9Ly9maW4gZGUgbGEgdsOpcmlmaWNhdGlvbiBkZSBsJ2luc2VydGlvbiBkJ3VuZSBwcsOpY8OpZGVudGUgc2Fpc2llCiAgICAgIH0vL2ZpbiBkdSB3aGlsZQovKi8vbWV0dHJlIGxlIGNvbXB0ZXVyIGRlIHLDqXVzc2l0ZSBkJ8OpY2hlYwoKCSR0aGlzLT5TZXRNZXNzYWdlKCdNaXNlcyDDoCBqb3VyIE9LJyk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzaXR1YXRpb24nKTsKCiovCiAgfS8vZmluIGR1IGlmIGRiIHJlc3VsdAplbHNlCnsKCSR0aGlzLT5TZXRNZXNzYWdlKCdQYXMgZGUgbWlzZSDDoCBqb3VyIGVmZmVjdHXDqWUnKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3NpdHVhdGlvbicpOwp9CgoKCgkKCQoKIwojIEVPRgojCj8+]]></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[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKJGxpZW4gPSAkcGFyYW1zWydsaWVuJ107CgovKiovCmRlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5jYWxjdWxzLnBocCcpOwoKLy8kcmVzdWx0ID0gJHNlcnZpY2UtPmdldEpvdWV1clBhcnRpZXMoIjA3MjkwMjI5Iik7Cgokbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CiRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19kZXRhaWxzX3JlbmNvbnRyZXMgV0hFUkUgbGllbiA9ID8iOwokZGJyZXRvdXIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGllbikpOwoKaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQoJewogICAgCQl3aGlsZSAoJHJvdz0gJGRicmV0b3VyLT5GZXRjaFJvdygpKQogICAgICAJCXsKCQkJJG1lc3NhZ2UgPSAiTGUgZMOpdGFpbCBkZSBjZXR0ZSByZW5jb250cmUgZXN0IGTDqWrDoCBlbnJlZ2lzdHLDqWUuLi4iOwoJCQkkdGhpcy0+U2V0TWVzc2FnZSgiJG1lc3NhZ2UiKTsKCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncG91bGVzJyk7CgkJCS8vcmV0dXJuICRwbGF5ZXI7CgkJfQoJCgl9CmVsc2UgCgl7CgkvLyBjb2RlLi4uCgoJCSRzZXJ2aWNlID0gbmV3IFNlcnZpY2UoKTsKCQkkcmVzdWx0ID0gJHNlcnZpY2UtPmdldFJlbmNvbnRyZSgiJGxpZW4iKTsKCnZhcl9kdW1wKCRyZXN1bHQpOwoKCn0KICAgICAKLyoKCQkkaSA9IDA7CgkJJGNvbXB0ZXVyID0gMDsKCQkKCQlmb3JlYWNoKCRyZXN1bHQgYXMgJGNsZSA9PiR0YWIpCgkJCXsKCQkJCSRjb21wdGV1cisrOwoJCQkJCgkJCQkkZGF0ZWV2ZW50ID0gJHRhYltkYXRlXTsKCQkJCSRjaGd0ID0gZXhwbG9kZSgiLyIsJGRhdGVldmVudCk7CgkJCQkkZGF0ZV9ldmVudCA9ICRjaGd0WzJdLiItIi4kY2hndFsxXS4iLSIuJGNoZ3RbMF07CgkJCQkvL2VjaG8gImxhIGRhdGUgZXN0Ii4kZGF0ZV9ldmVudDsKCQkJCSRub20gPSAkdGFiW25vbV07CgkJCQkkY2xhc3NlbWVudCA9ICR0YWJbY2xhc3NlbWVudF07CgkJCQkkY2xhID0gc3Vic3RyKCRjbGFzc2VtZW50LCAwLDEpOwoJCQkJCgkJCQkJaWYoJGNsYSA9PSAnTicpewoJCQkJCQkkbmV3Y2xhc3NlbWVudCA9IGV4cGxvZGUoJy0nLCAkY2xhc3NlbWVudCk7CgkJCQkJCSRuZXdjbGFzcyA9ICRuZXdjbGFzc2VtZW50WzFdOwoJCQkJCX0KCQkJCQllbHNlIHsKCQkJCQkJJG5ld2NsYXNzID0gJGNsYXNzZW1lbnQ7CgkJCQkJfQoJCQkJCQoJCQkJJGVwcmV1dmUgPSAkdGFiW2VwcmV1dmVdOwoJCQkJJHZpY3RvaXJlID0gJHRhYlt2aWN0b2lyZV07CgkJCQkKCWlmICgkdmljdG9pcmUgPT0nVicpewoJCSR2aWN0b2lyZSA9IDE7CgkJfQoJZWxzZSAKCQl7JHZpY3RvaXJlID0gMDt9CgkkZm9yZmFpdCA9ICR0YWJbZm9yZmFpdF07CgkKCQoJJHF1ZXJ5ID0gIlNFTEVDVCBsaWNlbmNlLCBkYXRlX2V2ZW50LG5vbSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgV0hFUkUgbGljZW5jZSA9ID8gQU5EIGRhdGVfZXZlbnQgPSA/IEFORCBub20gPSA/IjsKCS8vZWNobyAkcXVlcnk7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSwgJGRhdGVfZXZlbnQsJG5vbSkpOwoJaWYoJGRicmVzdWx0ICAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkgewoJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIChpZCwgZGF0ZW1haiwgbGljZW5jZSwgZGF0ZV9ldmVudCwgbm9tLCBjbGFzc2VtZW50LCB2aWN0b2lyZSwgZm9yZmFpdCkgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPykiOwoJCSRpKys7CgkJLy9lY2hvICRxdWVyeTsKCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJG5vdywgJGxpY2VuY2UsICRkYXRlX2V2ZW50LCAkbm9tLCAkbmV3Y2xhc3MsICR2aWN0b2lyZSwgJGZvcmZhaXQpKTsKCQkKCQlpZighJGRicmVzdWx0YXQpCgkJewoJCQllY2hvICRkYi0+c3FsLic8YnIvPicuJGRiLT5FcnJvck1zZygpOyAKCQl9Cgl9CgllbHNlIHsgCgkJZWNobyAiUGFydGllIGTDqWrDoCBlbnJlZ2lzdHLDqWUiOwoJfQp9Cn0vL2ZpbiBkdSBpZiAkZGJyZXRvdXIKJGNvbXB0YWdlID0gJGk7CiRzdGF0dXMgPSAnUGFydGllcyBTUElEJzsKJGRlc2lnbmF0aW9uID0gIlLDqWN1cMOpcmF0aW9uIHNwaWQgZGUgIi4kY29tcHRhZ2UuIiBwYXJ0aWVzIHN1ciAiLiRjb21wdGV1ci4iICBkZSAiLiRwbGF5ZXI7CiRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXAgKGlkLCBkYXRlbWFqLCBzdGF0dXMsIGRlc2lnbmF0aW9uLCBhY3Rpb24pIFZBTFVFUyAoJycsID8sID8sID8sID8pIjsKJGFjdGlvbiA9ICJyZXRyaWV2ZV9wYXJ0aWVzX3NwaWQiOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbm93LCAkc3RhdHVzLCRkZXNpZ25hdGlvbiwkYWN0aW9uKSk7CmlmKCEkZGJyZXN1bHQpCnsKCWVjaG8gJGRiLT5zcWwuJzxici8+Jy4kZGItPkVycm9yTXNnKCk7IAp9CiRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgU0VUIHNwaWQgPSA/IFdIRVJFIGxpY2VuY2UgPSA/IjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNvbXB0ZXVyLCRsaWNlbmNlKSk7CmlmKCEkZGJyZXN1bHQpewoJZWNobyAkZGItPnNxbC4nPGJyLz4nLiRkYi0+RXJyb3JNc2coKTsgCn0KCQoJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwoqLwojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_parties.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwpkZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7Ci8vcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKCiRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKJG1vaXNfY291cmFudCA9IGRhdGUoJ24nKTsKJGFubmVlX2NvdXJhbnRlID0gZGF0ZSgnWScpOwokc2Fpc29uX2NvdXJhbnRlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwokbGljZW5jZSA9ICRwYXJhbXNbJ2xpY2VuY2UnXTsKJGRlc2lnbmF0aW9uID0gJyc7CiRxdWVyeSA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJywgbm9tLCBwcmVub20pIEFTIHBsYXllciBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIGxpY2VuY2UgPSA/IjsKJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UpKTsKaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXRvdXItPkZldGNoUm93KCkpCiAgICAgIHsKCSRwbGF5ZXIgPSAkcm93WydwbGF5ZXInXTsKCS8vcmV0dXJuICRwbGF5ZXI7Cgl9CgkKfQplbHNlewoJJHRoaXMtPlNldE1lc3NhZ2UoIkpvdWV1ciBpbnRyb3V2YWJsZSIpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwp9CgoKJHNlcnZpY2UgPSBuZXcgU2VydmljZSgpOwoKLy8kcmVzdWx0ID0gJHNlcnZpY2UtPmdldEpvdWV1clBhcnRpZXMoIjA3MjkwMjI5Iik7CiRyZXN1bHQgPSAkc2VydmljZS0+Z2V0Sm91ZXVyUGFydGllcygiJGxpY2VuY2UiKTsKCgppZiAoIWlzX2FycmF5KCRyZXN1bHQpKXsKCS8vCgkkdGhpcy0+U2V0TWVzc2FnZSgnUGIgYWNjw6hzIHLDqXN1bHRhdCcpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncmVjdXBlcmF0aW9uJyk7Cn0KLy92YXJfZHVtcCgkcmVzdWx0KTsgIAovKiovCiRpID0gMDsKJGNvbXB0ZXVyID0gMDsKZm9yZWFjaCgkcmVzdWx0IGFzICRjbGUgPT4kdGFiKQp7CgkkY29tcHRldXIrKzsKCQoJLy9lY2hvICIkY2xlX2FwcGVsIDxiciAvPiI7CgkkbGljZW5jZSA9ICR0YWJbbGljZW5jZV07CgkkYWR2bGljID0gJHRhYlthZHZsaWNdOwoJJHZkID0gJHRhYlt2ZF07CgkKCWlmICgkdmQgPT0nVicpewoJCSR2ZCA9IDE7CgkJfQoJZWxzZSAKCQl7JHZkID0gMDt9CgkJCgkkbnVtam91cm4gPSAkdGFiW251bWpvdXJuXTsKCWlmKGlzX2FycmF5KCRudW1qb3VybikpeyRudW1qb3VybiA9ICcwJzt9CgkkY29kZWNoYW1wID0gJHRhYltjb2RlY2hhbXBdOwoJJGRhdGVldmVudCA9ICR0YWJbZGF0ZV07CgkkY2hndCA9IGV4cGxvZGUoIi8iLCRkYXRlZXZlbnQpOwoJJGRhdGVfZXZlbnQgPSAkY2hndFsyXS4iLSIuJGNoZ3RbMV0uIi0iLiRjaGd0WzBdOwoJLy9lY2hvICJsYSBkYXRlIGVzdCIuJGRhdGVfZXZlbnQ7CgkKLy8JJGRhdGVfZXZlbnQgPSBjb252X2RhdGVfdmVyc19teXNxbCgkZGF0ZWV2ZW50KTsKCSRhZHZzZXhlID0gJHRhYlthZHZzZXhlXTsKCSRhZHZub21wcmUgPSAkdGFiW2Fkdm5vbXByZV07CgkkcG9pbnRyZXMgPSAkdGFiW3BvaW50cmVzXTsKCSRjb2VmY2hhbXAgPSAkdGFiW2NvZWZjaGFtcF07CgkkYWR2Y2xhb2YgPSAkdGFiW2FkdmNsYW9mXTsKCQovKiovCSRxdWVyeSA9ICJTRUxFQ1QgbGljZW5jZSxhZHZsaWMsIG51bWpvdXJuLCBjb2RlY2hhbXAsIGRhdGVfZXZlbnQsIGNvZWZjaGFtcCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIFdIRVJFIGxpY2VuY2UgPSA/IEFORCBhZHZsaWMgPSA/IEFORCBudW1qb3VybiA9ID8gQU5EIGNvZGVjaGFtcCA9ID8gQU5EIGRhdGVfZXZlbnQgPSA/IEFORCBjb2VmY2hhbXAgPSA/IjsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlLCAkYWR2bGljLCAkbnVtam91cm4sICRjb2RlY2hhbXAsICRkYXRlX2V2ZW50LCAkY29lZmNoYW1wKSk7CglpZigkZGJyZXN1bHQgICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKSB7CgkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIChpZCwgc2Fpc29uLCBsaWNlbmNlLCBhZHZsaWMsIHZkLCBudW1qb3VybiwgY29kZWNoYW1wLCBkYXRlX2V2ZW50LCBhZHZzZXhlLCBhZHZub21wcmUsIHBvaW50cmVzLCBjb2VmY2hhbXAsIGFkdmNsYW9mKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkJJGkrKzsKCQkvL2VjaG8gJHF1ZXJ5OwoJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkc2Fpc29uX2NvdXJhbnRlLCRsaWNlbmNlLCAkYWR2bGljLCAkdmQsICRudW1qb3VybiwgJGNvZGVjaGFtcCwgJGRhdGVfZXZlbnQsICRhZHZzZXhlLCAkYWR2bm9tcHJlLCAkcG9pbnRyZXMsICRjb2VmY2hhbXAsICRhZHZjbGFvZikpOwoJCQoJCWlmKCEkZGJyZXN1bHRhdCkKCQl7CgkJCSRkZXNpZ25hdGlvbi49JGRiLT5FcnJvck1zZygpOyAKCQl9Cgl9Cn0KJGNvbXB0YWdlID0gJGk7CiRzdGF0dXMgPSAnUGFydGllcyBGRlRUJzsKJGRlc2lnbmF0aW9uID0gIlLDqWN1cMOpcmF0aW9uIGRlICIuJGNvbXB0YWdlLiIgcGFydGllcyBzdXIgIi4kY29tcHRldXIuIiBkZSAiLiRwbGF5ZXI7CiRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXAgKGlkLCBkYXRlY3JlYXRlZCwgc3RhdHVzLCBkZXNpZ25hdGlvbiwgYWN0aW9uKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/KSI7CiRhY3Rpb24gPSAicmV0cmlldmVfcGFydGllcyI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRub3csICRzdGF0dXMsJGRlc2lnbmF0aW9uLCRhY3Rpb24pKTsKaWYoISRkYnJlc3VsdCkKewoJJGRlc2lnbmF0aW9uLj0kZGItPkVycm9yTXNnKCk7IAp9CiRxdWVyeSA9ICJTRUxFQ1QgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIFdIRVJFIGxpY2VuY2UgPSA/IjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UpKTsKJGxpZ25lcyA9ICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKTsKaWYoJGxpZ25lcz4wKXsKCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgU0VUIGZmdHQgPSA/IFdIRVJFIGxpY2VuY2UgPSA/IjsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRjb21wdGV1ciwkbGljZW5jZSkpOwp9CmVsc2V7Cgkkc2l0X21lbnMgPSAnSmFudmllciAyMDAwJzsKCSRmZnR0ID0gJGNvbXB0ZXVyOwoJJHNwaWQgPSAnMCc7CgkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgKGlkLCBzYWlzb24sIGRhdGVtYWosIGxpY2VuY2UsIHNpdF9tZW5zLCBmZnR0LCBzcGlkKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkc2Fpc29uX2NvdXJhbnRlLCAkbm93LCAkbGljZW5jZSwgJHNpdF9tZW5zLCRmZnR0LCRzcGlkKSk7Cn0KCgoKaWYoISRkYnJlc3VsdCl7CgkkZGVzaWduYXRpb24uPSRkYi0+RXJyb3JNc2coKTsgCn0KCQoJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncmVjdXBlcmF0aW9uJyk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_parties_spid.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwpkZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2luY2x1ZGUvcHJlZnMucGhwJyk7CnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmNhbGN1bHMucGhwJyk7CiRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKCi8vJHJlc3VsdCA9ICRzZXJ2aWNlLT5nZXRKb3VldXJQYXJ0aWVzKCIwNzI5MDIyOSIpOwokbGljZW5jZSA9ICRwYXJhbXNbJ2xpY2VuY2UnXTsKJGRlc2lnbmF0aW9uID0gJyc7CiRxdWVyeSA9ICJTRUxFQ1QgQ09OQ0FUX1dTKCcgJywgbm9tLCBwcmVub20pIEFTIHBsYXllciBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFdIRVJFIGxpY2VuY2UgPSA/IjsKJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UpKTsKaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXRvdXItPkZldGNoUm93KCkpCiAgICAgIHsKCSRwbGF5ZXIgPSAkcm93WydwbGF5ZXInXTsKCS8vcmV0dXJuICRwbGF5ZXI7Cgl9CgkKfQplbHNlewoJJGRlc2lnbmF0aW9uLj0iSm91ZXVyIGludHJvdXZhYmxlIjsKCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKfQoKJHNlcnZpY2UgPSBuZXcgU2VydmljZSgpOwokcmVzdWx0ID0gJHNlcnZpY2UtPmdldEpvdWV1clBhcnRpZXNTcGlkKCIkbGljZW5jZSIpOwovL3Zhcl9kdW1wKCRyZXN1bHQpOwovL2xlIHNlcnZpY2UgZXN0LWlsIG91dmVydCA/Ci8qKi8KLy9vbiB0ZXN0ZSBsZSByZXN1bHRhdCByZXRvdXJuw6kgICAgIAoKaWYoIWlzX2FycmF5KCRyZXN1bHQpKXsKCQoJCgkJJHRoaXMtPlNldE1lc3NhZ2UoJ0xlIHNlcnZpY2UgZXN0IGNvdXDDqScpOwoJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3JlY3VwZXJhdGlvbicpOwkKfQplbHNlIAp7CgoJCgkkaSA9IDA7CgkkY29tcHRldXIgPSAwOwoJZm9yZWFjaCgkcmVzdWx0IGFzICRjbGUgPT4kdGFiKQoJewoJCSRjb21wdGV1cisrOwoJCgkJJGRhdGVldmVudCA9ICR0YWJbZGF0ZV07CgkJJGNoZ3QgPSBleHBsb2RlKCIvIiwkZGF0ZWV2ZW50KTsKCQkkZGF0ZV9ldmVudCA9ICRjaGd0WzJdLiItIi4kY2hndFsxXS4iLSIuJGNoZ3RbMF07CgkJCgkJLy9vbiBleHRyYWl0IGxlIG1vaXMgcG91ciByZXRyb3V2ZXIgbGEgc2l0dWF0aW9uIG1lbnN1ZWxsZQoJCQlpZiAoc3Vic3RyKCRjaGd0WzFdLCAwLDEpPT0wKXsKCQkJCSRtb2lzX2V2ZW50ID0gc3Vic3RyKCRjaGd0WzFdLCAxLDEpOwoJCQkJLy9lY2hvICJsYSBkYXRlIGVzdCIuJGRhdGVfZXZlbnQ7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkbW9pc19ldmVudCA9ICRjaGd0WzFdOwoJCQl9CgkJCgkJJG5vbSA9ICR0YWJbbm9tXTsKCQkkY2xhc3NlbWVudCA9ICR0YWJbY2xhc3NlbWVudF07CgkJJGNsYSA9IHN1YnN0cigkY2xhc3NlbWVudCwgMCwxKTsKCQkKCQkJaWYoJGNsYSA9PSAnTicpewoJCQkJJG5ld2NsYXNzZW1lbnQgPSBleHBsb2RlKCctJywgJGNsYXNzZW1lbnQpOwoJCQkJJG5ld2NsYXNzID0gJG5ld2NsYXNzZW1lbnRbMV07CgkJCX0KCQkJZWxzZSB7CgkJCQkkbmV3Y2xhc3MgPSAkY2xhc3NlbWVudDsKCQkJfQoJCS8vb24gdmEgY2FsY3VsZXIgbGEgZGlmZsOpcmVuY2UgZW50cmUgbGUgY2xhc3NlbWVudCBkZSBsJ2FkdmVyc2FpcmUgZXQgbGUgY2xhc3NlbWVudCBkdSBqb3VldXIgZHUgY2x1YgoJCSRxdWVyeSA9ICJTRUxFQ1QgcG9pbnRzIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIFdIRVJFIGxpY2VuY2UgPSA/IEFORCBtb2lzID0gPyI7Ly8iIEFORCBzYWlzb24gPSA/IjsKCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSwkbW9pc19ldmVudCkpOwoJCQoJCQlpZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKQoJCQl7CgkJCQkkZGVzaWduYXRpb24uPSJFY2FydCBub24gY2FsY3Vsw6kiOwoJCQkJJGVjYXJ0ID0gMDsKCQkJfQoJCQkKCQkkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJCSRwb2ludHMgPSAkcm93W3BvaW50c107CgkJJGVjYXJ0X3JlZWwgPSAkcG9pbnRzIC0gJG5ld2NsYXNzOwoJCS8vb24gY2FsY3VsZSBsJ8OpY2FydCBzZWxvbiBsYSBncmlsbGUgZGUgcG9pbnRzIGRlIGxhIEZGVFQKCQkkdHlwZV9lY2FydCA9IENhbGN1bEVjYXJ0KCRlY2FydF9yZWVsKTsKCQkKCQkkZXByZXV2ZSA9ICR0YWJbZXByZXV2ZV07CgkJCgkJLy8gZGUgcXVlbGxlIGNvbXDDqXRpdGlvbiBzJ2FnaXQtaWwgPyAKCQkvL09uIGEgbGEgZGF0ZSBldCBsZSB0eXBlIGQnw6lwcmV1dmUKCQkvL29uIHBldXQgZG9uYyBlbiBkw6lkdWlyZSBsZSB0b3VyIHZpYSBsZSBjYWxlbmRyaWVyCgkJLy9ldCBsZSBjb2VmZmljaWVudCBwb3VyIGNhbGN1bGVyIGxlcyBwb2ludHMgdmlhIGxhIHRhYmxlIHR5cGVfY29tcGV0aXRvbnMKCQkKCQkvLzEgLSBvbiByw6ljdXDDqXJlIGxlIHRvdXIgcydpbCBleGlzdGUKCQkvL29uIHZhIGZkb25jIGNoZXJjaGVyIGRhbnMgbGEgdGFibGUgY2FsZW5kcmllcgoJCSRxdWVyeSA9ICJTRUxFQ1QgbnVtam91cm4gRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfY2FsZW5kcmllciBXSEVSRSBuYW1lX2NvbXBldCA9PyBBTkQgZGF0ZV9jb21wZXQgPSA/IjsKCQkkcmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkZXByZXV2ZSwgJGRhdGVfZXZlbnQpKTsKCQkKCQkJaWYgKCRyZXN1bHRhdCAmJiAkcmVzdWx0YXQtPlJlY29yZENvdW50KCk+MCl7CgkJCQkkcm93ID0gJHJlc3VsdGF0LT5GZXRjaFJvdygpOwoJCQkJJG51bWpvdXJuID0gJHJvd1tudW1qb3Vybl07CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkbnVtam91cm4gPSAwOwoJCQl9CgkJCgkJLy8yIC0gb24gcsOpY3Vww6hyZSBsZSBjb2VmZmljaWVudCBkZSBsYSBjb21ww6l0aXRpb24KCQkkY29lZmYgPSBjb2VmZigkZXByZXV2ZSk7CgkJCgkJLy8kcG9pbnRyZXMgPSAkcG9pbnRzKiRjb2VmZjsKCQkvL2ZpbiBkdSBwb2ludCAyCgkJJHZpY3RvaXJlID0gJHRhYlt2aWN0b2lyZV07CgkJCgkJCWlmICgkdmljdG9pcmUgPT0nVicpewoJCQkJJHZpY3RvaXJlID0gMTsKCQkJfQoJCQllbHNlIAoJCQl7CgkJCQkkdmljdG9pcmUgPSAwOwoJCQl9CgkJCgkJLy9vbiBwZXV0IGTDqXNvcm1haXMgY2FsY3VsZXIgbGVzIHBvaW50cyAKCQllY2hvICJsYSB2aWN0b2lyZSBlc3QgOiAiLiR2aWN0b2lyZS4iPGJyIC8+IjsKCQkgJHBvaW50czEgPSBDYWxjdWxQb2ludHNJbmRpdnMoJHR5cGVfZWNhcnQsICR2aWN0b2lyZSk7CgkJZWNobyAibGUgY29lZmYgZXN0IDogIi4kY29lZmYuIjxiciAvPiI7CgkJZWNobyAibGUgdHlwZSBlY2FydCBlc3QgOiAiLiR0eXBlX2VjYXJ0LiI8YnIgLz4iOwoJCWVjaG8gImxlcyBwb2ludHMgMSBzb250IDogIi4kcG9pbnRzMS4iPGJyIC8+IjsKCQkkcG9pbnRyZXMgPSAkcG9pbnRzMSokY29lZmY7IAoJCQoJCQoJCSRmb3JmYWl0ID0gJHRhYltmb3JmYWl0XTsKCQoJCgkJJHF1ZXJ5ID0gIlNFTEVDVCBsaWNlbmNlLCBkYXRlX2V2ZW50LG5vbSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgV0hFUkUgbGljZW5jZSA9ID8gQU5EIGRhdGVfZXZlbnQgPSA/IEFORCBub20gPSA/IjsKCS8vZWNobyAkcXVlcnk7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSwgJGRhdGVfZXZlbnQsJG5vbSkpOwoJCgkJaWYoJGRicmVzdWx0ICAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPT0gMCkgewoJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCAoaWQsIHNhaXNvbiwgZGF0ZW1haiwgbGljZW5jZSwgZGF0ZV9ldmVudCwgZXByZXV2ZSwgbm9tLCBudW1qb3VybixjbGFzc2VtZW50LCB2aWN0b2lyZSxlY2FydCx0eXBlX2VjYXJ0LCBjb2VmZiwgcG9pbnRyZXMsIGZvcmZhaXQpIFZBTFVFUyAoJycsID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8sID8pIjsKCQkJJGkrKzsKCQkJLy9lY2hvICRxdWVyeTsKCQkJJGRicmVzdWx0YXQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRzYWlzb25fY291cmFudGUsJG5vdywgJGxpY2VuY2UsICRkYXRlX2V2ZW50LCAkZXByZXV2ZSwgJG5vbSwgJG51bWpvdXJuLCAkbmV3Y2xhc3MsICR2aWN0b2lyZSwkZWNhcnRfcmVlbCwkdHlwZV9lY2FydCwgJGNvZWZmLCRwb2ludHJlcywgJGZvcmZhaXQpKTsKCQkKCQkJaWYoISRkYnJlc3VsdGF0KQoJCQkJewoJCQkJCSRkZXNpZ25hdGlvbi49JGRiLT5FcnJvck1zZygpOyAKCQkJCX0KCQkJfQoJCQllbHNlIAoJCQl7IAoJCQkJZWNobyAiUGFydGllIGTDqWrDoCBlbnJlZ2lzdHLDqWUiOwoJCQl9CgkJfQoKJGNvbXB0YWdlID0gJGk7CiRzdGF0dXMgPSAnUGFydGllcyBTUElEJzsKJGRlc2lnbmF0aW9uIC49ICJSw6ljdXDDqXJhdGlvbiBzcGlkIGRlICIuJGNvbXB0YWdlLiIgcGFydGllcyBzdXIgIi4kY29tcHRldXIuIiAgZGUgIi4kcGxheWVyOwokcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwIChpZCwgZGF0ZWNyZWF0ZWQsIHN0YXR1cywgZGVzaWduYXRpb24sIGFjdGlvbikgVkFMVUVTICgnJywgPywgPywgPywgPykiOwokYWN0aW9uID0gInJldHJpZXZlX3BhcnRpZXNfc3BpZCI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRub3csICRzdGF0dXMsJGRlc2lnbmF0aW9uLCRhY3Rpb24pKTsKCglpZighJGRicmVzdWx0KQoJewoJCSRkZXNpZ25hdGlvbi49ICRkYi0+RXJyb3JNc2coKTsgCgl9CgkKCWlmKCRjb21wdGV1ciA+MCkKCXsKCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgU0VUIHNwaWQgPSA/IFdIRVJFIGxpY2VuY2UgPSA/IjsKCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRjb21wdGV1ciwkbGljZW5jZSkpOwoJCgkJaWYoISRkYnJlc3VsdCkKCQl7CgkJCSRkZXNpZ25hdGlvbi49ICRkYi0+RXJyb3JNc2coKTsgCgkKCQl9Cgl9CQoJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncmVjdXBlcmF0aW9uJyk7CgoJfQoKCgoKLyoqLwojCiMgRU9GCiMKPz4=]]></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[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwpkZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7Ci8vcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKJGlkZGl2ID0gJHBhcmFtc1snaWRkaXYnXTsKJGlkcG91bGUgPSAkcGFyYW1zWydpZHBvdWxlJ107CiR0eXBlX2NvbXBldCA9ICRwYXJhbXNbJ3R5cGVfY29tcGV0J107CiRtZXNzYWdlID0gJyc7CmlmKCFpc3NldCgkaWRkaXYpICYmIGVtcHR5KCRpZGRpdikpewoJJG1lc3NhZ2UuPSJQYXJhbcOodHJlcyBtYW5xdWFudHMiOwoJJHRoaXMtPlNldG1lc3NhZ2UoIiRtZXNzYWdlIik7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdlcXVpcGVzJyk7Cgl9Ci8vTGVzIHByw6lmw6lyZW5jZXMKJG5vdyA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpLCAiJyIpOwokbm9tX2VxdWlwZXMgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbm9tX2VxdWlwZXMnKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKCiRzZXJ2aWNlID0gbmV3IFNlcnZpY2UoKTsKJHJlc3VsdCA9ICRzZXJ2aWNlLT5nZXRQb3VsZVJlbmNvbnRyZXMoJGlkZGl2LCRpZHBvdWxlKTsKCiRkZXNpZ25hdGlvbiA9ICcnOwovL3Zhcl9kdW1wKCRyZXN1bHQpOwovKiovCi8vb24gdmEgdGVzdGVyIGxhIHZhbGV1ciBkZSBsYSB2YXJpYWJsZSAkcmVzdWx0Ci8vY2VsYSBwZXJtZXQgZCfDqXZpdGVyIGRlIGJvdWNsZXIgcydpbCBuJ3kgYSByaWVuIGRhbnMgbGUgdGFibGVhdQppZighaXNfYXJyYXkoJHJlc3VsdCkpCnsgCgkKCQkvL2xlIHRhYmxlYXUgZXN0IHZpZGUsIGlsIGZhdXQgZW52b3llciB1biBtZXNzYWdlIHBvdXIgbGUgc2lnbmFsZXIKCQkkZGVzaWduYXRpb24uPSAibGUgc2VydmljZSBlc3QgY291cMOpIjsKCQkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYigncG91bGVzJyk7Cn0gICAKZWxzZXsKJGk9MDsKZm9yZWFjaCgkcmVzdWx0IGFzICRjbGUgPT4kdGFiKQp7CgkKCQoJJGxpYmVsbGUgPSAkdGFiW2xpYmVsbGVdOwoJJGVxdWEgPSAkdGFiW2VxdWFdOwoJJGVxdWIgPSAkdGFiW2VxdWJdOwoJCgkvL29uIGZhaXQgcXVlbHF1ZSB0cmFuc2Zvcm1hdGlvbnMgZGVzIGluZm9zIHJlY3VlaWxsaWVzCglwcmVnX21hdGNoX2FsbCgnI1swLTldKyMnLCRsaWJlbGxlLCRleHRyYWN0KTsKCSR0b3VyID0gJGV4dHJhY3RbMF1bMF07CgkKCSRleHRyYWN0aW9uID0gc3Vic3RyKCRsaWJlbGxlLC04KTsKCSRkYXRlX2V4dHJhY3QgPSBleHBsb2RlKCcvJywgJGV4dHJhY3Rpb24pOwoJJGFubmVlX2RhdGUgPSAkZGF0ZV9leHRyYWN0WzJdICsgMjAwMDsKCSRkYXRlX2V2ZW50ID0gJGFubmVlX2RhdGUuIi0iLiRkYXRlX2V4dHJhY3RbMV0uIi0iLiRkYXRlX2V4dHJhY3RbMF07CgkkdXBsb2FkZWQgPSAwOy8vaW5pdGlhbGVtZW50IG1pcyDDoCAwLCBpbmRpcXVlIHNpIGxlIGTDqXRhaWwgZGVzIG1hdGNocyBhIMOpdMOpIHVwbG9hZMOpIG91IG5vbi4KCQoJJGNsdWJhID0gc3RycG9zKCRlcXVhLCRub21fZXF1aXBlcyk7CgkkY2x1YmIgPSBzdHJwb3MoJGVxdWIsJG5vbV9lcXVpcGVzKTsKCWlmICgkY2x1YmEgIT09IGZhbHNlIHx8ICRjbHViYiAhPT0gZmFsc2UpewoJCSRjbHViID0gMTsKCQkkYWZmaWNoYWdlID0gMTsKCX0KCWVsc2V7CgkJJGNsdWIgPSAwOwoJCS8vb24gYWZmaWNoZSBvdSBwYXMgPwoJCS8vT24gcmVnYXJkZSBjZSBxdWUgbCdhZG1pbiBhIGTDqWNpZMOpIGRzIGxhIGNvbmZpZ3VyYXRpb24KCQkKCX0KCSRzY29yZWEgPSAkdGFiW3Njb3JlYV07Cgkkc2NvcmViID0gJHRhYltzY29yZWJdOwoJLy9lY2hvIGdldHR5cGUoJHNjb3JlYSk7CgkkbGllbiA9ICR0YWJbbGllbl07CgkKCS8vCgkvL29uIHbDqXJpZmllIHF1ZSBsZSBzY29yZSBhIGJpZW4gw6l0w6kgc2Fpc2kKCS8vc2kgbGUgc2NvcmUgZXN0IHNhaXNpIG9uIG9idGllbnQgdW4gc3RyaW5nIHBvdXIgbGVzIHZhcmlhYmxlcyBzY29yZWEgZXQgc2NvcmViCgkvL3Npbm9uIGlsIHMnYWdpdCBkJ3VuIGFycmF5CQoJCglpZihpc19hcnJheSgkc2NvcmVhKSAmJiBpc19hcnJheSgkc2NvcmViKSkKCXsKCQkJLy9vbiByZWdhcmRlIGxhIHZhbGV1ciBkdSBwb3B1bGF0ZV9jYWxlbmRhcgoJCQkvL8OgIFRydWUsIGVsbGUgcGVybWV0IAoJCQkvL2RlIHJlbXBsaXIgbGEgdGFibGUgY2FsZW5kcmllciBhdXRvbWF0aXF1ZW1lbnQKCQkJJGRlc2lnbmF0aW9uID0gIlNjb3JlIG5vbiBwYXJ2ZW51IGVudHJlICIuJGVxdWEuIiBldCAiLiRlcXViOwoJCQkkc3RhdHVzID0gIkVjaGVjIjsKCQkJJGFjdGlvbiA9ICJyZXRyaWV2ZV9wb3VsZV9yZW5jb250cmVzIjsKCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cCAoaWQsIGRhdGVjcmVhdGVkLCBzdGF0dXMsIGRlc2lnbmF0aW9uLCBhY3Rpb24pIFZBTFVFUyAoJycsID8sID8sID8sID8pIjsKCQkJJGFjdGlvbiA9ICJyZXRyaWV2ZV9wb3VsZXNfcmVuY29udHJlcyI7CgkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRub3csJHN0YXR1cywgJGRlc2lnbmF0aW9uLCRhY3Rpb24pKTsKCQkKCQkJCWlmKCEkZGJyZXN1bHQpCgkJCQl7CgkJCQkJJGRlc2lnbmF0aW9uLj0kZGItPkVycm9yTXNnKCk7IAoJCQkJfQkJCQoJCQkKCQkJCgkKCX0KCWVsc2UgCgl7CgkJCgkKCQkJLy9vbiB2w6lyaWZpZSBzaSBsJ2VucmVnaXN0cmVtZW50IGVzdCBkw6lqw6AgbMOgCgkJCSRxdWVyeSA9ICJTRUxFQ1QgbGllbiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBXSEVSRSBsaWVuID0gPyAiOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGllbikpOwoJCgkJCS8vaWwgbid5IGEgcGFzIGQnZW5yZWdpc3RyZW1lbnQgYXVwYXJhdmFudCwgb24gcGV1dCBjb250aW51ZXIKCQkJCgkJCQlpZigkZGJyZXN1bHQgICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKSAKCQkJCXsKCQkJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzIChpZCxzYWlzb24saWRwb3VsZSwgaWRkaXYsIGNsdWIsIHRvdXIsIGRhdGVfZXZlbnQsIHVwbG9hZGVkLCBsaWJlbGxlLCBlcXVhLCBlcXViLCBzY29yZWEsIHNjb3JlYiwgbGllbikgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkJCS8vZWNobyAkcXVlcnk7CgkJCQkJJGkrKzsKCQkJCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHNhaXNvbiwkaWRwb3VsZSwgJGlkZGl2LCAkY2x1YiwgJHRvdXIsICRkYXRlX2V2ZW50LCAkdXBsb2FkZWQsICRsaWJlbGxlLCAkZXF1YSwgJGVxdWIsICRzY29yZWEsICRzY29yZWIsICRsaWVuKSk7CgkJCgkJCQkJCWlmKCEkZGJyZXN1bHRhdCkKCQkJCQkJCXsKCQkJCQkJCQkkZGVzaWduYXRpb24uPSAkZGItPkVycm9yTXNnKCk7CgkJCQkJCQkJCgoJCQkJCQkJfQoJCQkJCQkKCQkJCQkJCQoJCQoJCQoJCQoJCQoJCQkJfQoJfQoJCgkKCS8vb24gcmVtcGxpdCBsZSBjYWxlbmRyaWVyID8KCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwb3B1bGF0ZV9jYWxlbmRhcicpPT0nT3VpJyl7CgkJewoJCQkvL09uIGZhaXQgbCdpbmNsdXNpb24gZHMgbGEgYmRkCgkJCS8vIG9uIHbDqXJpZmllIGQnYWJvcmQgcXVlIGwnZW5yZWdpc3RyZW1lbnQgbidlc3QgcGFzIGTDqWrDoCBlbiBiZGQKCQkJJHF1ZXJ5ID0gIlNFTEVDVCBpZGRpdiwgaWRwb3VsZSwgbnVtam91cm4sIGRhdGVfY29tcGV0IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIgV0hFUkUgaWRkaXYgPSA/IEFORCBpZHBvdWxlID0gPyBBTkQgbnVtam91cm4gPSA/IEFORCBkYXRlX2NvbXBldCA9ID8iOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaWRkaXYsICRpZHBvdWxlLCR0b3VyLCAkZGF0ZV9ldmVudCkpOwoKCQkJCWlmICgkZGJyZXN1bHQtPlJlY29yZENvdW50KCk9PTApCgkJCQkJewoJCQkJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIgKGlkLGRhdGVfY29tcGV0LGlkZGl2LCBpZHBvdWxlLCBudW1qb3VybikgVkFMVUVTICggJycsID8sID8sID8sID8pIjsKCQkJCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGRhdGVfZXZlbnQsICRpZGRpdiwgJGlkcG91bGUsJHRvdXIpKTsKCQkJCQkJCgkJCQkJCWlmKCRkYnJlc3VsdCl7CgkJCQkJCQkkZGVzaWduYXRpb24uPSAkZGItPkVycm9yTXNnKCk7CgkJCQkJCX0KCQkJCQl9CgoJCX0KCX0KfS8vZmluIGR1IGZvcmVhY2gKfS8vZmluIGR1IGlmIGlzX2FycmF5KCRyZXN1bHQpCgokY29tcHRhZ2UgPSAkaTsKJHN0YXR1cyA9ICdQb3VsZXMnOwokZGVzaWduYXRpb24uPSAiUsOpY3Vww6lyYXRpb24gZGUgIi4kY29tcHRhZ2UuIiByZW5jb250cmVzIGRlIGxhIHBvdWxlICIuJGlkcG91bGU7CiRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXAgKGlkLCBkYXRlY3JlYXRlZCwgc3RhdHVzLCBkZXNpZ25hdGlvbiwgYWN0aW9uKSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/KSI7CiRhY3Rpb24gPSAicmV0cmlldmVfcG91bGVzX3JlbmNvbnRyZXMiOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbm93LCRzdGF0dXMsICRkZXNpZ25hdGlvbiwkYWN0aW9uKSk7CmlmKCEkZGJyZXN1bHQpCnsKCSRkZXNpZ25hdGlvbi49ICRkYi0+RXJyb3JNc2coKTsgCn0KCQoJJHRoaXMtPlNldE1lc3NhZ2UoIiRkZXNpZ25hdGlvbiIpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignZXF1aXBlcycpOwovKgkqLwojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_sit_mens.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwpkZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7Ci8vcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKJGRiPSRnQ21zLT5HZXREYigpOwoKLy9sZXMgCiRtb2lzX2NvdXJhbnQgPSBkYXRlKCduJyk7CiRtb2lzX2ZyYW5jYWlzID0gYXJyYXkoJ0phbnZpZXInLCAnRsOpdnJpZXInLCdNYXJzJywgJ0F2cmlsJywgJ01haScsICdKdWluJywgJ0p1aWxsZXQnLCdBb8O7dCcsICdTZXB0ZW1icmUnLCAnT2N0b2JyZScsJ05vdmVtYnJlJywnRMOpY2VtYnJlJyk7CiRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKJG1vaXNfcmVlbCA9ICRtb2lzX2NvdXJhbnQgLSAxOwokbW9pc19zbSA9ICRtb2lzX2ZyYW5jYWlzWyIkbW9pc19yZWVsIl07CiRtb2lzX3NpdF9tZW5zID0gJG1vaXNfc20uIiAiLiRhbm5lZV9jb3VyYW50ZTsKJHBoYXNlID0yOwoKLy9lY2hvICJsZSBtb2lzIGRlIGxhIHNpdHVhdGlvbiBtZW5zdWVsbGUgZXN0IDogIi4kbW9pc19zaXRfbWVuczsKJG5vdyA9IHRyaW0oJGRiLT5EQlRpbWVTdGFtcCh0aW1lKCkpLCAiJyIpOwokbGljZW5jZTIgPSAkcGFyYW1zWydsaWNlbmNlJ107Ci8vb24gdsOpcmlmaWUgcXVlIGxlIGpvdWV1ciBlbiBxdWVzdGlvbiBlc3QgYmllbiBhY3RpZgokcXVlcnkgPSAiU0VMRUNUIENPTkNBVF9XUygnICcsbm9tLHByZW5vbSkgYXMgcGxheWVyLCBsaWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgV0hFUkUgbGljZW5jZSA9ID8gQU5EIGFjdGlmID0gJzEnIjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UyKSk7Ci8vbGUgam91ZXVyIG5lIHJlbXBsaXQgcGFzIGxlcyBjb25kaXRpb25zIGRlIGxhIHJlcXVldGUsIG9uIHJlbnZvaXQgYXZlYyB1biBtZXNzYWdlCmlmICgkZGJyZXN1bHQgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID09IDApCnsKCSR0aGlzLT5TZXRNZXNzYWdlKCJKb3VldXIgZMOpc2FjdGl2w6kiKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3NpdHVhdGlvbicpOwp9CmVsc2UKewovL2xlIGpvdWV1ciBlc3QgYWN0aWYsIG9uIHZhIHbDqXJpZmllciBzaSBzYSBzaXR1YXRpb24gbWVuc3VlbGxlIGVzdCBkw6lqw6AgZW5yZWdpc3Ryw6llCiRxdWVyeSA9ICJTRUxFQ1QgbGljZW5jZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyBXSEVSRSBsaWNlbmNlID0gPyBBTkQgbW9pcyA9ID8gQU5EIGFubmVlID0gPyI7CiRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UsJG1vaXNfY291cmFudCwkYW5uZWVfY291cmFudGUpKTsKCQoJaWYoJGRicmVzdWx0YXQgJiYgJGRicmVzdWx0YXQtPlJlY29yZENvdW50KCk+MCl7CgkJLy9sYSBzaXR1YXRpb24gbWVuc3VlbGxlIGVzdCBkw6lqw6Agw6Agam91ciwgb24gcGFzc2UKCQkkdGhpcy0+U2V0TWVzc2FnZSgnU2l0dWF0aW9uIG1lbnN1ZWxsZSBkw6lqw6Agw6Agam91ciAhJyk7CgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignam91ZXVycycpOwoJCQoJfQoJZWxzZQoJewoKLy9lY2hvICdsYSBsaWNlbmNlIGVzdCA6ICcuJGxpY2VuY2U7CgoKLy9lY2hvICJsZSBtb2lzIGNvdXJhbnQgZXN0IGxlIDogIi4kbW9pc19jb3VyYW50LiIgYW5uZWUgY291cmFudGUgOiAgIi4kYW5uZWVfY291cmFudGU7CgoJJHNlcnZpY2UgPSBuZXcgU2VydmljZSgpOwoJJHJlc3VsdCA9ICRzZXJ2aWNlLT5nZXRKb3VldXIoIiRsaWNlbmNlMiIpOwoJJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCSRwbGF5ZXIgPSAkcm93WydwbGF5ZXInXTsKICAgIC8vdmFyX2R1bXAoJHJlc3VsdCk7Ci8vZWNobyAibGEgbGljZW5jZSBlc3QgJHJlc3VsdFtsaWNlbmNlXSI7CgkJCQoJCSRsaWNlbmNlID0gJHJlc3VsdFtsaWNlbmNlXTsKCS8vCWVjaG8gImxhIGxpY2VuY2UgZXN0ICRsaWNlbmNlIDxiciAvPiI7CgkJJG5vbSA9ICRyZXN1bHRbbm9tXTsKCQkkcHJlbm9tID0gJHJlc3VsdFtwcmVub21dOwoJCSRuYXRpbyA9ICRyZXN1bHRbbmF0aW9dOwoJCSRjbGdsb2IgPSAkcmVzdWx0W2NsZ2xvYl07CgkJJHBvaW50ID0gJHJlc3VsdFtwb2ludF07CgkJJGFjbGdsb2IgPSAkcmVzdWx0W2FjbGdsb2JdOwoJCSRhcG9pbnQgPSAkcmVzdWx0W2Fwb2ludF07CgkJJGNsbmF0ID0gJHJlc3VsdFtjbG5hdF07CgkJJGNhdGVnID0gJHJlc3VsdFtjYXRlZ107CgkJJHJhbmdyZWcgPSAkcmVzdWx0W3JhbmdyZWddOwoJCSRyYW5nZGVwID0gJHJlc3VsdFtyYW5nZGVwXTsKCQkkdmFsY2xhID0gJHJlc3VsdFt2YWxjbGFdOwoJCSRjbHBybyA9ICRyZXN1bHRbY2xwcm9dOwoJCSR2YWxpbml0ID0gJHRhcmVzdWx0Ylt2YWxpbml0XTsKCQkkcHJvZ21vaXMgPSAkcmVzdWx0W3Byb2dtb2lzXTsKCQkkcHJvZ2FubiA9ICRyZXN1bHRbcHJvZ2Fubl07CgkJaWYoICRsaWNlbmNlID09ICcnKQoJCXsKCQkJLy8gaWwgbid5IGEgcGFzIGRlIGNvcnJlc3BvbmRhbmNlCgkJCS8vb3UgbGUgam91ZXVyIGVzdCBkw6lzYWN0aXbDqQoJCQkvL291IGxlIHNlcnZpY2UgZXN0IEguUwoJCQkvL29uIGxlIHJlcG9ydGUgZGFucyBsZSBqb3VybmFsIGTDqWRpw6kKCQkJJHN0YXR1cyA9ICJlcnJvciI7CgkJCSRkZXNpZ25hdGlvbiA9ICJMaWNlbmNlIGFic2VudGUgcG91ciAiLiRwbGF5ZXIuIiBvdSBjb3VwdXJlIGR1IHNlcnZpY2UiOwoJCQkkYWN0aW9uID0gInJldHJpZXZlX3NpdF9tZW5zIjsKCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cCAoaWQsIGRhdGVtYWosIHN0YXR1cywgZGVzaWduYXRpb24sIGFjdGlvbikgVkFMVUVTICgnJywgPywgPywgPywgPykiOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbm93LCAkc3RhdHVzLCAkZGVzaWduYXRpb24sICRhY3Rpb24pKTsKCQkJJHRoaXMtPlNldE1lc3NhZ2UoImxpY2VuY2UgYWJzZW50ZSDDoCBsYSBGRlRUIG91IGNvdXB1cmUgZHUgc2VydmljZSIpOwoJCQkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignc2l0dWF0aW9uJyk7CgkJCQoJCX0KCQllbHNlCgkJewoJCQkvL0xhIGxpY2VuY2UgZXhpc3RlIGJpZW4gZW4gYmRkLCBsZSBtb2lzIGVuIHF1ZXN0aW9uIGVzdC1pbCBkw6lqw6AgcmVuc2VpZ27DqSA/IFBvdXIgw6l2aXRlciAKCQkJJHBoYXNlID0yOwoJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIChpZCxkYXRlY3JlYXRlZCwgZGF0ZW1haiwgbW9pcywgYW5uZWUsIHBoYXNlLCBsaWNlbmNlLCBub20sIHByZW5vbSwgcG9pbnRzLCBjbG5hdCwgcmFuZ3JlZyxyYW5nZGVwLCBwcm9nbW9pcykgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkvL2VjaG8gJHF1ZXJ5OwoJCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJG5vdywkbm93LCRtb2lzX2NvdXJhbnQsICRhbm5lZV9jb3VyYW50ZSwgJHBoYXNlLCAkbGljZW5jZSwgJG5vbSwgJHByZW5vbSwgJHBvaW50LCAkY2xuYXQsICRyYW5ncmVnLCAkcmFuZ2RlcCwgJHByb2dtb2lzKSk7CgkJCQkvL09uIHbDqXJpZmllIHF1ZSBsJ2luc2VydGlvbiBzZSBwYXNzZSBiaWVuCgkJCQlpZighJGRicmVzdWx0YXQpCgkJCQl7CgkJCQkJJG1lc3NhZ2UgPSAkZGItPkVycm9yTXNnKCk7IAoJCQkJCSR0aGlzLT5TZXRNZXNzYWdlKCIkbWVzc2FnZSIpOwoJCQkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKCQkJCS8vYnJlYWs7CgkJCQl9CgkJCQllbHNlIHsKCQkJCQoJCQkKCQkJLy9vbiBpbnPDqHJlIGF1c3NpIGwnZW5lZ2lzdHJlbWVudCBkYW5zIGxlIGpvdXJuYWwKCQkJJGRlc2lnbmF0aW9uID0gIlLDqWN1cMOpcmF0aW9uIHNpdHVhdGlvbiBtZW5zdWVsbGUgZGUgICIuJG1vaXNfc20uIiAiLiRhbm5lZV9jb3VyYW50ZS4iIGRlICIuJG5vbS4iICIuJHByZW5vbTsKCQkJJHN0YXR1cyA9ICdTaXRfbWVucyc7CgkJCS8qCgkJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXAgKGlkLCBkYXRlbWFqLCBzdGF0dXMsZGVzaWduYXRpb24sIGFjdGlvbikgVkFMVUVTICgnJywgPywgPywgPywgPykiOwoJCQkkYWN0aW9uID0gInJldHJpZXZlX3NpdF9tZW5zIjsKCQkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5vdywgJHN0YXR1cywgJGRlc2lnbmF0aW9uLCRhY3Rpb24pKTsKCQkJKi8KCQkJLy9vbiDDqWNyaXQgZGFucyBsZSBqb3VybmFsCgkJCXBpbmdfYWRtaW5fb3BzOjplY3JpcmVqb3VybmFsKCRub3csJHN0YXR1cywkZGVzaWduYXRpb24sICRhY3Rpb24pOwoJCQkvKgoJCQlpZighJGRicmVzdWx0KQoJCQl7CgkJCQllY2hvICRkYi0+c3FsLic8YnIvPicuJGRiLT5FcnJvck1zZygpOyAKCQkJfQoJCQkKCQkJKi8KCQkJJHF1ZXJ5ID0gIlNFTEVDVCBsaWNlbmNlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwX3BhcnRpZXMgV0hFUkUgbGljZW5jZSA9ID8iOwoJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSkpOwoJCQkKCQkJaWYoJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID09IDApIHsKCQkJCSRmZnR0ID0gMDsKCQkJCSRzcGlkID0gMDsKCQkJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyAoaWQsIHNhaXNvbiwgZGF0ZW1haiwgbGljZW5jZSwgc2l0X21lbnMsIGZmdHQsIHNwaWQpIFZBTFVFUyAoJycsID8sID8sID8sID8sID8sID8pIjsKCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRzYWlzb24sICRub3csICRsaWNlbmNlLCAkbW9pc19zaXRfbWVucywgJGZmdHQsICRzcGlkKSk7CgkJCQkKCQkJCSR0aGlzLT5TZXRNZXNzYWdlKCJTaXR1YXRpb24gbWVuc3VlbGxlIGFqb3V0w6llIik7CgkJCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdzaXR1YXRpb24nKTsKCQkJfQoJCQllbHNlIAoJCQl7CgkJCQkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyBTRVQgZGF0ZW1haiA9ID8gLCBzaXRfbWVucyA9ID8gV0hFUkUgbGljZW5jZSA9ID8iOwoJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRub3csICRtb2lzX3NpdF9tZW5zLCAkbGljZW5jZSkpOwoKCQkJCQlpZighJGRicmVzdWx0KQoJCQkJCXsKCQkJCQkJJG1lc3NhZ2UgPSAkZGItPkVycm9yTXNnKCk7CgkJCQkJfQoJCQkJCWVsc2V7CgoJCQkJCQkkbWVzc2FnZSA9ICJTaXR1YXRpb24gbWVuc3VlbGxlIG1pc2Ugw6Agam91ciI7CgkJCQkJfQoJCQkJCQoJCQkJCSR0aGlzLT5TZXRNZXNzYWdlKCIkbWVzc2FnZSIpOwoJCQkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3NpdHVhdGlvbicpOwoJCQl9CgkJCX0vL2ZpbiBkdSBpZiBzaSBsJ2luc2VydGlvbiBzZSBwYXNzZSBiaWVuCgkJfS8vZmluIGR1IGlmICRsaWNlbmNlCQkJCQoJfS8vZmluIGRlIGxhIHbDqXJpZmljYXRpb24gZGUgbGEgc2l0X21lbnMgZW4gYmRkCgl9Ly9maW4gZHUgdGVzdCBzaSBsZSBqb3VldXIgZXN0IGFjdGlmIGVuIGJkZAoKCi8qCQoJJHRoaXMtPlNldE1lc3NhZ2UoJHRoaXMtPkxhbmcoJ3NhdmVkX3JlY29yZCcpKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ3NpdHVhdGlvbicpOwoqLwojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_teams.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAgICBQcmVtacOocmUgw6l0YXBlIGRlIHLDqWN1cMOpcmF0aW9uIGRlcyDDqXF1aXBlcyAgICAgICAgICAgICAgICAgIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKCgppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmRlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5jYWxjdWxzLnBocCcpOwoKJGNsdWJfbnVtYmVyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NsdWJfbnVtYmVyJyk7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CiRkZXNpZ25hdGlvbiA9ICcnOwppZighaXNzZXQoJGNsdWJfbnVtYmVyKSAmJiAkY2x1Yl9udW1iZXIgPT0nJykKewoJJG1lc3NhZ2UgPSAiVm90cmUgbnVtw6lybyBkZSBjbHViIG4nZXN0IHBhcyBjb25maWd1csOpICEhIjsKCSR0aGlzLT5TZXRNZXNzYWdlKCIkbWVzc2FnZSIpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignY29uZmlndXJhdGlvbicpOwp9CiRub3cgPSB0cmltKCRkYi0+REJUaW1lU3RhbXAodGltZSgpKSwgIiciKTsKLy9vbiBpbnN0YW5jaWUgbGEgY2xhc3NlIHNlcnZpY2UKJHNlcnZpY2UgPSBuZXcgU2VydmljZSgpOwokdHlwZSA9ICRwYXJhbXNbJ3R5cGUnXTsKCglpZiAoIWlzc2V0KCR0eXBlKSkKCXsKCQkkcmVzdWx0ID0gJHNlcnZpY2UtPmdldEVxdWlwZXNCeUNsdWIoIiRjbHViX251bWJlciIpOwoJCSRjaHB0ID0gIkEiOyAvL3BvdXIgYXV0cmVzIGNoYW1waW9ubmF0Cgl9CgllbHNlIAoJewoJCSRyZXN1bHQgPSAkc2VydmljZS0+Z2V0RXF1aXBlc0J5Q2x1YigiJGNsdWJfbnVtYmVyIiwgIiR0eXBlIik7CgkJJGNocHQgPSAiUyI7IC8vcG91ciBjaGFtcGlvbm5hdCBzZW5pb3JzCgl9CgovL3Zhcl9kdW1wKCRyZXN1bHQpOwovKiovCi8vb24gdmEgdGVzdGVyIHNpIGxhIHZhcmlhYmxlIGVzdCBiaWVuIHVuIHRhYmxlYXUgICAKCWlmKCFpc19hcnJheSgkcmVzdWx0KSkgIHsKCQkKCQkkdGhpcy0+U2V0TWVzc2FnZSgiTGUgc2VydmljZSBlc3QgY291cMOpIik7CgkJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignZXF1aXBlcycpOwoJfQoKLy8vb24gaW5pdGlhbGlzZSB1biBjb21wdGV1ciBnw6luw6lyYWwgJGkKJGk9MDsKLy9vbiBpbml0aWFsaXNlIHVuIGRldXhpw6htZSBjb21wdGV1cgokY29tcHRldXI9MDsKZm9yZWFjaCgkcmVzdWx0IGFzICRjbGUgPT4kdGFiKQp7CgkKCSRpKys7CgkkbGliZXF1aXBlID0gJHRhYltsaWJlcXVpcGVdOwoJJG5ld3BoYXNlID0gZXhwbG9kZSAoIi0iLCRsaWJlcXVpcGUpOwoJLy9lY2hvICJsYSBwaGFzZSBlc3QgIi4kbmV3cGhhc2VbMV07CgkkcGhhc2UgPSBzdWJzdHIoJG5ld3BoYXNlWzFdLCAtMSk7CgkkbmV3X2VxdWlwZSA9ICRuZXdwaGFzZVswXTsKCS8vZWNobyAibGEgcGhhc2UgZXN0ICIuJHBoYXNlOwoJCgkkbGliZGl2aXNpb24gPSAkdGFiW2xpYmRpdmlzaW9uXTsKCSRsaWVuZGl2aXNpb24gPSAkdGFiW2xpZW5kaXZpc2lvbl07CgkkaWRwb3VsZSA9ICR0YWJbaWRwb3VsZV07CgkkaWRkaXYgPSAkdGFiW2lkZGl2XTsKCQoJCgkkcXVlcnkgPSAiU0VMRUNUIHBoYXNlLCBzYWlzb24sIGxpZW5kaXZpc2lvbiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19lcXVpcGVzIFdIRVJFIGxpZW5kaXZpc2lvbiA9ID8gQU5EIHBoYXNlID0gPyBBTkQgc2Fpc29uID0gPyI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGllbmRpdmlzaW9uLCAkcGhhc2UsICRzYWlzb24pKTsKCWlmKCRkYnJlc3VsdCAgJiYgJGRicmVzdWx0LT5SZWNvcmRDb3VudCgpID09IDApIHsKCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgKGlkLCBzYWlzb24sIHBoYXNlLCBsaWJlcXVpcGUsIGxpYmRpdmlzaW9uLCBsaWVuZGl2aXNpb24sIGlkcG91bGUsIGlkZGl2KSBWQUxVRVMgKCcnLCA/LCA/LCA/LCA/LCA/LCA/LCA/KSI7CgkJLy9lY2hvICRxdWVyeTsKCQkkY29tcHRldXIrKzsKCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHNhaXNvbiwgJHBoYXNlLCAkbmV3X2VxdWlwZSwgJGxpYmRpdmlzaW9uLCAkbGllbmRpdmlzaW9uLCAkaWRwb3VsZSwgJGlkZGl2KSk7CgkJCgkJaWYoISRkYnJlc3VsdGF0KQoJCXsKCQkJJGRlc2lnbmF0aW9uIC49ICRkYi0+RXJyb3JNc2coKTsKCQkJCgkJCQoJCX0KCgl9Ly9maW4gZHUgaWYgJGRicmVzdWx0CgkKCQp9Ly8gZmluIGR1IGZvcmVhY2gKCiRkZXNpZ25hdGlvbiAuPSAiUsOpY3Vww6lyYXRpb24gZGUgIi4kY29tcHRldXIuIiDDqXF1aXBlcyI7CmlmKCRjb21wdGV1ciA+MCl7CgkkZGVzaWduYXRpb24uPSJJbmRpcXVleiBsZSB0eXBlIGRlIGNvbXDDqXRpdGlvbiBkZXMgw6lxdWlwZXMgcsOpY3Vww6lyw6llcy4iOwp9CiRzdGF0dXMgPSAnT2snOwokYWN0aW9uID0gJ3JldHJpZXZlX3RlYW1zJzsKLy9waW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsJGRlc2lnbmF0aW9uLCRhY3Rpb24pOwoJCgkkdGhpcy0+U2V0TWVzc2FnZSgiJGRlc2lnbmF0aW9uIik7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdlcXVpcGVzJyk7CgojCiMgRU9GCiMKCj8+]]></data>
	</file>
	<file>
	  <filename>/action.retrieve_users.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwpkZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7Ci8qCiRtYUNsYXNzZSA9ICdjbGFzcy5TZXJ2aWNlLnBocCc7CiRzZXJ2aWNlID0gbmV3ICRtYUNsYXNzZSgpOwoqLwokbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CiRjbHViX251bWJlciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjbHViX251bWJlcicpOwokZGVzaWduYXRpb24gPSAnJzsKaWYoIWlzc2V0KCRjbHViX251bWJlcikgfHwgJGNsdWJfbnVtYmVyID09JycpewoJJHRoaXMtPlNldE1lc3NhZ2UoJ0xlIG51bcOpcm8gZGUgY2x1YiBuXCdlc3QgcGFzIGTDqWZpbmkgIScpOwoJJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignY29uZmlndXJhdGlvbicpOwp9CiRzZXJ2aWNlID0gbmV3IFNlcnZpY2UoKTsKLy8kcmVzdWx0ID0gJHNlcnZpY2UtPmdldExpY2VuY2VzQnlDbHViKCIkY2x1Yl9udW1iZXIiKTsKJHJlc3VsdCA9ICRzZXJ2aWNlLT5nZXRKb3VldXJzQnlDbHViKCIkY2x1Yl9udW1iZXIiKTsKCi8vdmFyX2R1bXAoJHJlc3VsdCk7CmlmICghaXNfYXJyYXkoJHJlc3VsdCkpewoJJHRoaXMtPlNldE1lc3NhZ2UoJ1NlcnZpY2UgY291cMOpJyk7CgkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdqb3VldXJzJyk7Cn0KLyoqLwokaSA9MDsKZm9yZWFjaCgkcmVzdWx0IGFzICRjbGUgPT4kdGFiKQp7CgkkbGljZW5jZSA9ICR0YWJbbGljZW5jZV07Cgkkbm9tID0gJHRhYltub21dOwoJJHByZW5vbSA9ICR0YWJbcHJlbm9tXTsKCSRhY3RpZiA9IDE7CQoJLy8kZGVzaWduYXRpb24gPSAncsOpY3Vww6lyYXRpb24gZGVzIGpvdWV1cnMnOwoJCgkkcXVlcnkgPSAiU0VMRUNUIGxpY2VuY2UgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSBsaWNlbmNlID0gPyI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSkpOwoJCglpZigkZGJyZXN1bHQgICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKSB7CgkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIChpZCwgbGljZW5jZSwgbm9tLCBwcmVub20sYWN0aWYpIFZBTFVFUyAoJycsID8sID8sID8sID8pIjsKCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGxpY2VuY2UsJG5vbSwgJHByZW5vbSwkYWN0aWYpKTsKCQkkaSsrOwoJCWlmKCEkZGJyZXN1bHRhdCkKCQl7CgkJCSRkZXNpZ25hdGlvbi49ICRkYi0+RXJyb3JNc2coKTsKCQl9CgkJZWxzZXsKCQkJCgkJCSRzdGF0dXMgPSAnT2snOwoJCQkkZGVzaWduYXRpb24gLj0gIkluY2x1c2lvbiBkZSAiLiROb20uIiAiLiRwcmVub207IAoJCQkkYWN0aW9uID0gIm1hc3NfYWN0aW9uIjsKCQkJcGluZ19hZG1pbl9vcHM6OmVjcmlyZWpvdXJuYWwoJG5vdywkc3RhdHVzLCAkZGVzaWduYXRpb24sJGFjdGlvbik7CgkJfQoJCQoJCQoJCS8vb24gcsOpYWxpc2UgYXVzc2kgdW5lIGluY2x1c2lvbiBkYW5zIGxhIHRhYmxlIGRlcyBzaXR1YXRpb25zIG1lbnN1ZWxsZXMKCQkkcXVlcnkgPSAiU0VMRUNUIGxpY2VuY2UgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyBXSEVSRSBsaWNlbmNlID0gPyI7CgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxpY2VuY2UpKTsKCQkKCQlpZigkZGJyZXN1bHQtPlJlY29yZENvdW50KCk9PTApewoJCQkkc2l0X21lbnMgPSAnSmFudmllciAyMDAwJzsKCQkJJGZmdHQgPSAwOwoJCQkkc3BpZCA9IDA7CgkJCSRxdWVyeSA9IklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIChpZCxzYWlzb24sZGF0ZW1haixsaWNlbmNlLCBzaXRfbWVucywgZmZ0dCwgc3BpZCkgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPykiOwoJCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHNhaXNvbiwgJG5vdywgJGxpY2VuY2UsICRzaXRfbWVucywgJGZmdHQsICRzcGlkKSk7CgkJCQoJCX0KCQoJCQoJfQoJCgkKCQoJCgkKfS8vIGZpbiBkdSBmb3JlYWNoCgoKCSRkZXNpZ25hdGlvbi49ICJJbmNsdXNpb24gZGUgICIuJGkuIiBqb3VldXJzIjsKCSR0aGlzLT5TZXRNZXNzYWdlKCIkZGVzaWduYXRpb24iKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKLyoqLwojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.unable_player.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignUGluZyBNYW5hZ2UnKSkKICB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicpKTsKCXJldHVybjsKICAgCiAgfQoKCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKLy8kcmVjb3JkX2lkID0gJHBhcmFtc1sncmVjb3JkX2lkJ107CgokbGljZW5jZSA9ICcnOwppZiggIWlzc2V0KCAkcGFyYW1zWydsaWNlbmNlJ10gKSB8fCAkcGFyYW1zWydsaWNlbmNlJ10gPT0gJycpICAgIAp7CgkKCSR0aGlzLT5TZXRNZXNzYWdlKCJMaWNlbmNlIGFic2VudGUiKTsKCQkkdGhpcy0+UmVkaXJlY3RUb0FkbWluVGFiKCdqb3VldXJzJyk7Cn0KCiAgICAvLyBmaW5kIHRoZSB1c2VyCiAgICAkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIFNFVCBhY3RpZiA9JzAnICBXSEVSRSBsaWNlbmNlID0gPyI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSggJHBhcmFtc1snbGljZW5jZSddICkpOwogICAgaWYoJGRicmVzdWx0KQogICAgICAKCXsKCQkkdGhpcy0+U2V0TWVzc2FnZSgiSm91ZXVyIGTDqXNhY3RpdsOpIik7CgkJCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKCQkKCX0KCgojCiMgRU9GCiMKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.updateoptions.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oICdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycgKSApCnsKICByZXR1cm47Cn0KLy8kbm9tX2VxdWlwZXMgPSBzdHJ0b3VwcGVyKCRwYXJhbXNbJ25vbV9lcXVpcGVzJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnY2x1Yl9udW1iZXInLCAkcGFyYW1zWydjbHViX251bWJlciddKTsKLy9wb3VyIGxhIHZlcnNpb24gMC4xIGJldGEyIG9uIHByb3Bvc2VyYSBkZSBkw6lkdWlyZSBsYSBsaWd1ZSBldCBsZSBkw6lwYXJ0ZW1lbnQgYXV4cXVlbHMgbGUgY2x1YiBhcHBhcnRpZW50Ci8vZXQgb24gbGVzIG1ldHRyYSBkYW5zIGxlcyBwcsOpZsOpcmVuY2VzIMOgIGNyw6llciDDqWdhbGVtZW50CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwaGFzZV9lbl9jb3VycycsICRwYXJhbXNbJ3BoYXNlX2VuX2NvdXJzJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJywgJHBhcmFtc1snc2Fpc29uX2VuX2NvdXJzJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbm9tX2VxdWlwZXMnLCBzdHJ0b3VwcGVyKCRwYXJhbXNbJ25vbV9lcXVpcGVzJ10pKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3BvcHVsYXRlX2NhbGVuZGFyJywgJHBhcmFtc1sncG9wdWxhdGVfY2FsZW5kYXInXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhZmZpY2hlX2NsdWJfdW5pcXVlbWVudCcsICRwYXJhbXNbJ2FmZmljaGVfY2x1Yl91bmlxdWVtZW50J10pOwovKgokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZm9ybXN1Ym1pdF9lbWFpbGFkZHJlc3MnLCAkcGFyYW1zWydmb3Jtc3VibWl0X2VtYWlsYWRkcmVzcyddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2VtYWlsX3N1YmplY3QnLCRwYXJhbXNbJ2VtYWlsX3N1YmplY3QnXSk7CiR0aGlzLT5TZXRUZW1wbGF0ZSgnZW1haWxfdGVtcGxhdGUnLCRwYXJhbXNbJ2VtYWlsX3RlbXBsYXRlJ10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnYWxsb3dlZF91cGxvYWRfdHlwZXMnLAoJCSAgICAgJHBhcmFtc1snYWxsb3dlZF91cGxvYWRfdHlwZXMnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdoaWRlX3N1bW1hcnlfZmllbGQnLAoJCSAgICAgKGlzc2V0KCRwYXJhbXNbJ2hpZGVfc3VtbWFyeV9maWVsZCddKT8nMSc6JzAnKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhbGxvd19zdW1tYXJ5X3d5c2l3eWcnLAoJCSAgICAgKGlzc2V0KCRwYXJhbXNbJ2FsbG93X3N1bW1hcnlfd3lzaXd5ZyddKT8nMSc6JzAnKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdleHBpcmVkX3NlYXJjaGFibGUnLAoJCSAgICAgKGlzc2V0KCRwYXJhbXNbJ2V4cGlyZWRfc2VhcmNoYWJsZSddKT8nMSc6JzAnKSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdleHBpcnlfaW50ZXJ2YWwnLCAkcGFyYW1zWydleHBpcnlfaW50ZXJ2YWwnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmZXN1Ym1pdF9zdGF0dXMnLCAkcGFyYW1zWydmZXN1Ym1pdF9zdGF0dXMnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmZXN1Ym1pdF9yZWRpcmVjdCcsIHRyaW0oJHBhcmFtc1snZmVzdWJtaXRfcmVkaXJlY3QnXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGV0YWlsX3JldHVybmlkJywoaW50KSRwYXJhbXNbJ2RldGFpbF9yZXR1cm5pZCddKTsKKi8KCiR0aGlzLT5TZXRNZXNzYWdlKCdWb3Mgb3B0aW9ucyBvbnQgw6l0w6kgbWlzZXMgw6Agam91cnMnKTsKJHRoaXMtPlJlZGlyZWN0VG9BZG1pblRhYignY29uZmlndXJhdGlvbicpOwovKgokcGFyYW1zID0gYXJyYXkoJ3RhYl9tZXNzYWdlJz0+ICdvcHRpb25zdXBkYXRlZCcsICdhY3RpdmVfdGFiJyA9PiAnb3B0aW9ucycpOwokdGhpcy0+UmVkaXJlY3QoJGlkLCAnb3B0aW9ucycsICcnLCAkcGFyYW1zKTsKKi8KPz4K]]></data>
	</file>
	<file>
	  <filename>/action.var_dump.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIyAgICBQcmVtacOocmUgw6l0YXBlIGRlIHLDqWN1cMOpcmF0aW9uIGRlcyDDqXF1aXBlcyAgICAgICAgICAgICAgICAgIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoKCgppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmRlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKLy9yZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5jYWxjdWxzLnBocCcpOwoKJGNsdWJfbnVtYmVyID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NsdWJfbnVtYmVyJyk7CmVjaG8gJ2xlIG51bcOpcm8gZGUgY2x1YiBlc3QgOiAnLiRjbHViX251bWJlcjsKLy8kc2Fpc29uID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwokc2Fpc29uID0gJzIwMTQtMjAxNSc7CiRwaGFzZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwaGFzZV9lbl9jb3VycycpOwokbGljZW5jZSA9ICc1MzEwODA5JzsKCgokc2VydmljZSA9IG5ldyBTZXJ2aWNlKCk7Ci8vcG91ciByw6ljdXDDqXJlciBsZXMgw6lxdWlwZXMgZHUgY2hhbXBpb25uYXQgc2VuaW9ycyBGRlRUCiR0eXBlID0gJ0QnOwokcmVzdWx0ID0gJHNlcnZpY2UtPmdldE9yZ2FuaXNtZXMoIiR0eXBlIikKCi8vJHJlc3VsdCA9ICRzZXJ2aWNlLT5nZXRFcXVpcGVzQnlDbHViKCIkY2x1Yl9udW1iZXIiKTsKLy8kcmVzdWx0ID0gJHNlcnZpY2UtPmdldEVwcmV1dmVzKCcxMDAwMDEnKTsKCi8vUG91ciByw6ljdXDDqXJlciB0b3V0ZXMgbGVzIGF1dHJlcyDDqXF1aXBlcyBkZXMgYXV0cmVzIGNoYW1waW9ubmF0Ci8vJHJlc3VsdCA9ICRzZXJ2aWNlLT5nZXRFcXVpcGVzQnlDbHViKCIkY2x1Yl9udW1iZXIiKTsKLy8kcmVzdWx0ID0gJHNlcnZpY2UtPmdldFJlbmNvbnRyZSgiIik7CgovL3BvdXIgcsOpY3Vww6lyZXIgbGVzIHBhcnRpZXMgRkZUVCBkJ3VuIGpvdWV1cgovLyRyZXN1bHQgPSAkc2VydmljZS0+Z2V0Sm91ZXVyUGFydGllcygiJGxpY2VuY2UiKTsJCnZhcl9kdW1wKCRyZXN1bHQpOwovKiovCi8vb24gdmEgdGVzdGVyIHNpIGxhIHZhcmlhYmxlIGVzdCBiaWVuIHVuIHRhYmxlYXUgICAKCiMgRU9GCiMKCj8+]]></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>/action.view_user_global_results.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKCiRzYWlzb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7CgokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7CgovKiBvbiBmYWl0IHVuIGZvcm11bGFpcmUgZGUgZmlsdHJhZ2UgZGVzIHLDqXN1bHRhdHMqLwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX2luZGl2c190YWInKSk7IAovLyRzYWlzb25zbGlzdFskdGhpcy0+bGFuZygnYWxsc2Vhc29ucycpXSA9Jyc7CiR0b3VybGlzdFskdGhpcy0+TGFuZygnYWxsdG91cnMnKV0gPSAnJzsKLy8kYWxsZXF1aXBlcyA9ICAoIGlzc2V0KCAkcGFyYW1zWydhbGxlcXVpcGVzJ10gKT8kcGFyYW1zWydhbGxlcXVpcGVzJ106J25vJyk7CgokZXF1aXBlbGlzdFskdGhpcy0+TGFuZygnYWxsZXF1aXBlcycpXSA9ICcnOwokcGxheWVyc2xpc3RbJHRoaXMtPkxhbmcoJ2FsbHBsYXllcnMnKV0gPSAnJzsKJHR5cGVDb21wZXQgPSBhcnJheSgpOwokdHlwZUNvbXBldFskdGhpcy0+TGFuZygnYWxsY29tcGV0JyldID0gJyc7CiRxdWVyeSA9ICJTRUxFQ1QgKiAsIENPTkNBVF9XUygnICcsai5ub20sIGoucHJlbm9tKSBBUyBwbGF5ZXIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIEFTIHB0cyAgLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBBUyBqIFdIRVJFIHB0cy5saWNlbmNlICA9IGoubGljZW5jZSBPUkRFUiBCWSBqLm5vbSBBU0MsIHB0cy5udW1qb3VybiBBU0MiOy8vIiI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRzYWlzb25fY291cmFudGUpKTsKd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQogIHsKICAgICR0b3VybGlzdFskcm93WydudW1qb3VybiddXSA9ICRyb3dbJ251bWpvdXJuJ107CiAgICAkcGxheWVyc2xpc3RbJHJvd1sncGxheWVyJ11dID0gJHJvd1snbGljZW5jZSddOwovLyRzYWlzb25zbGlzdFskcm93WydzYWlzb24nXV0gPSAkcm93WydzYWlzb24nXTsKICAgIC8vJGVxdWlwZWxpc3RbJHJvd1snZXF1aXBlJ11dID0gJHJvd1snZXF1aXBlJ107CiAgICAkdHlwZUNvbXBldFskcm93Wydjb2RlY2hhbXAnXV0gPSAkcm93Wydjb2RlY2hhbXAnXTsKICB9CgppZiggaXNzZXQoJHBhcmFtc1snc3VibWl0ZmlsdGVyJ10pICkKICB7CiAgICAJaWYoIGlzc2V0KCAkcGFyYW1zWyd0b3VybGlzdCddKSApCiAgICAgIAl7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgndG91ckNob2lzaScsICRwYXJhbXNbJ3RvdXJsaXN0J10pOwogICAgICAJfQovKgoJaWYoIGlzc2V0KCAkcGFyYW1zWydzYWlzb25zbGlzdCddKSApCiAgICAgIAl7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc2Fpc29uQ2hvaXNpZScsICRwYXJhbXNbJ3NhaXNvbnNsaXN0J10pOwogICAgICAJfQoqLwoJaWYoIGlzc2V0KCAkcGFyYW1zWydwbGF5ZXJzbGlzdCddKSApCiAgICAgIAl7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgncGxheWVyQ2hvaXNpJywgJHBhcmFtc1sncGxheWVyc2xpc3QnXSk7CiAgICAgIAl9CiAgICAvKmlmKCBpc3NldCggJHBhcmFtc1snZXF1aXBlbGlzdCddKSkKCXsKCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCAnZXF1aXBlQ2hvaXNpZScsICRwYXJhbXNbJ2VxdWlwZWxpc3QnXSk7Cgl9CgkqLwogICAgaWYoIGlzc2V0KCAkcGFyYW1zWyd0eXBlQ29tcGV0J10pICkKCXsgCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSAoICdjb21wZXRDaG9pc2llJywgJHBhcmFtc1sndHlwZUNvbXBldCddKTsKCX0KfQokY3VydG91ciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCAndG91ckNob2lzaScgKTsKLy8kY3Vyc2Vhc29uID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbkNob2lzaWUnKTsKJGN1cnBsYXllciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCAncGxheWVyQ2hvaXNpJyk7CiRjdXJlcXVpcGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ2VxdWlwZUNob2lzaWUnICk7CiRjdXJDb21wZXQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ2NvbXBldENob2lzaWUnKTsKJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfdG91cicsCgkJJHRoaXMtPkxhbmcoJ3RvdXInKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfdG91cicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCd0b3VybGlzdCcsJHRvdXJsaXN0LC0xLCRjdXJ0b3VyKSk7Ci8qCiRzbWFydHktPmFzc2lnbignaW5wdXRfc2Fpc29uJywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnc2Fpc29uc2xpc3QnLCRzYWlzb25zbGlzdCwtMSwkY3Vyc2Vhc29uKSk7CiovCi8qCQkkc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9lcXVpcGUnLAoJCQkJJHRoaXMtPkxhbmcoJ2VxdWlwZScpKTsKCiRzbWFydHktPmFzc2lnbignaW5wdXRfZXF1aXBlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2VxdWlwZWxpc3QnLCRlcXVpcGVsaXN0LC0xLCRjdXJlcXVpcGUpKTsKKi8JCQoJCSRzbWFydHktPmFzc2lnbignaW5wdXRfY29tcGV0JywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwndHlwZUNvbXBldCcsJHR5cGVDb21wZXQsLTEsJGN1ckNvbXBldCkpOwoJCQkJCgkJJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9wbGF5ZXInLAoJCQkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdwbGF5ZXJzbGlzdCcsJHBsYXllcnNsaXN0LC0xLCRjdXJwbGF5ZXIpKTsKCQkKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRmaWx0ZXInLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdGZpbHRlcicsJHRoaXMtPkxhbmcoJ2ZpbHRyZXMnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKJHJlc3VsdD0gYXJyYXkgKCk7Ci8vJHF1ZXJ5PSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG9pbnRzIFdIRVJFIGpvdWV1ciA9ID8gT1JERVIgQlkgaWQgQVNDIjsKLy8kcXVlcnkgPSAiU0VMRUNUIHR5cGVfY29tcGV0LCBqb3VldXIsIHN1bSh2aWNfZGVmKSBBUyB2aWN0b2lyZXMsIHN1bShwb2ludHMpIEFTIHRvdGFsLCBjb3VudCgqKSBBUyBzdXIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG9pbnRzICBHUk9VUCBCWSBqb3VldXIsdHlwZV9jb21wZXQgT1JERVIgQlkgam91ZXVyLHR5cGVfY29tcGV0IjsKJHF1ZXJ5ID0gIlNFTEVDVCBzcC5pZCxDT05DQVRfV1MoJyAnLGoubm9tLCBqLnByZW5vbSkgQVMgam91ZXVyLCBzcC5kYXRlX2V2ZW50LCBzcC5lcHJldXZlLCBzcC5ub20gQVMgbmFtZSwgc3AuY2xhc3NlbWVudCwgc3AudmljdG9pcmUsIHNwLmVjYXJ0LCBzcC5jb2VmZiwgc3AucG9pbnRyZXMsIHNwLmZvcmZhaXQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBBUyBqLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIEFTIHNwICBXSEVSRSBqLmxpY2VuY2UgPSBzcC5saWNlbmNlIEFORCBzcC5zYWlzb24gPSA/IE9SREVSIEJZIGpvdWV1ciBBU0MiOy8vIiAgR1JPVVAgQlkgam91ZXVyLHR5cGVfY29tcGV0IE9SREVSIEJZIGpvdWV1cix0eXBlX2NvbXBldCI7CiRkYnJlc3VsdD0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHNhaXNvbikpOwovL2VjaG8gJHF1ZXJ5Owokcm93Y2xhc3M9ICdyb3cxJzsKJHJvd2FycmF5PSBhcnJheSAoKTsKaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIHsKCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCSRvbmVyb3ctPmlkPSAkcm93WydpZCddOwoJJG9uZXJvdy0+am91ZXVyPSAkcm93Wydqb3VldXInXTsvLyR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3ZpZXdfdXNlcl9yZXN1bHRzJywgJHJldHVybmlkLCAkcm93Wydqb3VldXInXSxhcnJheSgnam91ZXVyJz0+JHJvd1snam91ZXVyJ10pLCRyb3cpIDsKCSRvbmVyb3ctPmRhdGVfZXZlbnQ9ICRyb3dbJ2RhdGVfZXZlbnQnXTsKCSRvbmVyb3ctPmVwcmV1dmU9ICRyb3dbJ2VwcmV1dmUnXTsKCSRvbmVyb3ctPm5hbWU9ICRyb3dbJ25hbWUnXTsKCSRvbmVyb3ctPmNsYXNzZW1lbnQ9ICRyb3dbJ2NsYXNzZW1lbnQnXTsKCSRvbmVyb3ctPnZpY3RvaXJlPSAkcm93Wyd2aWN0b2lyZSddOwoJJG9uZXJvdy0+ZWNhcnQ9ICRyb3dbJ2VjYXJ0J107Cgkkb25lcm93LT5jb2VmZj0gJHJvd1snY29lZmYnXTsKCSRvbmVyb3ctPnBvaW50cmVzPSAkcm93Wydwb2ludHJlcyddOwoJJG9uZXJvdy0+Zm9yZmFpdD0gJHJvd1snZm9yZmFpdCddOwoJJG9uZXJvdy0+c2VsZWN0ID0gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCdzZWxbXScsJHJvd1snaWQnXSk7Cgkkb25lcm93LT5lZGl0bGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF9wbGF5ZXJfcmVzdWx0cycsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pKTsKCSRvbmVyb3ctPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZV9yZXN1bHQnLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSksICR0aGlzLT5MYW5nKCdkZWxldGVfdXNlcl9jb25maXJtJykpOwoJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCSRyb3dhcnJheVtdPSAkb25lcm93OwogICAgICB9CiAgfQovKiovCiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKJHNtYXJ0eS0+YXNzaWduKCdjcmVhdGVsaW5rJywgCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnY3JlYXRlX25ld191c2VyMycsICRyZXR1cm5pZCwKCQkJCSAgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJHRoaXMtPkxhbmcoJ2FkZG5ld3NoZWV0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSkuCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnY3JlYXRlX25ld191c2VyMycsICRyZXR1cm5pZCwgCgkJCQkgICR0aGlzLT5MYW5nKCdhZGRuZXdzaGVldCcpLCAKCQkJCSAgYXJyYXkoKSkpOwokc21hcnR5LT5hc3NpZ24oJ3JldHJpZXZlX2FsbCcsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX2FsbF9wYXJ0aWVzX3NwaWQnLCAkcmV0dXJuaWQsCgkJCQkkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+TGFuZygnbG9uZ19pbXBvcnQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpKS4KCQkJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX2FsbF9wYXJ0aWVzX3NwaWQnLCAkcmV0dXJuaWQsIAoJCQkJCQkJCSAgJHRoaXMtPkxhbmcoJ3JldHJpZXZlYWxscGFydGllc3NwaWQnKSwgCgkJCQkJCQkJICBhcnJheSgpKSk7CiRzbWFydHktPmFzc2lnbignZm9ybTJzdGFydCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsJ21hc3NfYWN0aW9uJywkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCdmb3JtMmVuZCcsCgkJJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRhcnRpY2xlcyA9IGFycmF5KCJNZXR0cmUgbGUgQ29lZmYgw6AgMCw1Ij0+ImNvZWZmMDUiLCJNZXR0cmUgbGUgQ29lZmYgw6AgMCw3NSI9PiJjb2VmZjA3NSIsIk1ldHRyZSBsZSBDb2VmZiDDoCAxIj0+ImNvZWZmMSIsIk1ldHRyZSBsZSBDb2VmZiDDoCAxLDI1Ij0+ImNvZWZmMTI1IiwiTWV0dHJlIGxlIENvZWZmIMOgIDEsNSI9PiJjb2VmZjE1IiwgIlLDqWN1cMOpcmVyIHNpdHVhdGlvbiBtZW5zdWVsbGUiPT4ic2l0dWF0aW9uIik7CiRzbWFydHktPmFzc2lnbignYWN0aW9uZGVtYXNzZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdhY3Rpb25kZW1hc3NlJywkYXJ0aWNsZXMpKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRfbWFzc2FjdGlvbicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0X21hc3NhY3Rpb24nLCR0aGlzLT5MYW5nKCdhcHBseV90b19zZWxlY3Rpb24nKSwnJywnJywkdGhpcy0+TGFuZygnYXJleW91c3VyZV9hY3Rpb25tdWx0aXBsZScpKSk7CgoJCQkKLy9mYWlyZSBhcHBhcmFpdHJlIGxlcyBwb2ludHMgdG90YXV4IGV0IHNvbW1lIHZpY3RvaXJlIGVuIGJhcyA/IENlIHNlcmFpdCBwYXMgbWFsCi8qKi8KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdnbG9iYWx1c2VycmVzdWx0cy50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/download-icones.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAABKAAAAHoCAMAAABJtGcoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA7ppVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wUmlnaHRzPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvcmlnaHRzLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcFJpZ2h0czpNYXJrZWQ9IkZhbHNlIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6MDk4MDExNzQwNzIwNjgxMTk3QTVGODZGMDkzRDlDNUMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NDU3QjQ2NTkwM0Q5MTFFM0JFRjJDQzhBOEZCOEM5MEEiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NDU3QjQ2NTgwM0Q5MTFFM0JFRjJDQzhBOEZCOEM5MEEiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6ZTMzMTc3MzctNDIxMC00MDlkLWFmNzctMGVlNmY1ZGRhMWYwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjA5ODAxMTc0MDcyMDY4MTE5N0E1Rjg2RjA5M0Q5QzVDIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+t2WXEAAAADBQTFRF9fX1Wlpa1tfYe3t7qayvMzMzVpsVgLROpsqExd2vnJ+hipGW5OXkxsjJuLq7////rfTNFQAAABB0Uk5T////////////////////AOAjXRkAAEihSURBVHja7J2JduuoEkWZ3EmY/P9/25bQgCQ0AIUj35yz3np948RlGcGmqigQe0IQBN1UDE0AQRAABUEQBEBBEARAQRAEAVAQBAFQEARBABQEQRAABUEQAAVBEARAQRAEQEEQBAFQEARBABQEQQAUBEEQAAVBEAAFQRAEQEEQBAFQEAQBUBAEQQAUBEEAFARBEAAFQRAEQEEQBEBBEAQBUBAEAVAQBEEAFARBEAAFQRAABUEQBEBBEARAQRAEAVCRFPe4XxAEQGW8ncfUYDKfIZLz7n/y/I2vP8L9giAAKkM6poaXPNueHAjF5dlbNTwoCAKgsuQ4txFCTLYByV13GZpLjbsBQRApoOKo7hXvuUJAdRkmBHAQBNECKvaa/HmYtg+olyuGFUUIgmgB5eQU45mSKG0ElOXS4nZAEEQKqOcU49kpwrOveI2b8LLg/GnNyz3iXExOVwSycf3OjyGe013GfIwbheoS6L67TDN+UHhNgWcQBECdaUoeufEfIizLhdhPvDysjjh2whKTcapq+GHKZZn4zU8lw4/2Oa/ija853D0IAqBO9MKRGHwhNYLKiL7mwIdfG2PDy2wJsghQzoz4Ch6VCi+/3C/VO1WRB6V57zxZBUBBEAB1IcZTQ4Rnh5/NCCLWM0YufKVVPdPgDskRNwFyzwAsF9cthPc5uE4QBEBd15A98jOXbEQkMeWTVPgDtsyGh4Cuy1mJpVHzXK0Lmp5MhqNeCoIAqMuysk9/j0mkKdsdYjIxrfKJUGful9WcMvhO3kwVn8L7LgtugunJtQoeFIMDBUEAVF6M56MyAc3HzSu979St4sV/98KW2Lw54MwEByzOkrt+RY/NvLMol4IgACo7xpscI81nQgUPavy7PqNkVxXjk0fkegdLdfuGvZizT74LAN3sQaFcCoIAqOwYbwKNXpZrihlIrEPQ+tCU6X2i841e/FED9CYrQod1wj4HZSUHoCAIgMqQ4UpM6Wy/dJGiEK+Hk1x5QBOg+qMQpghuse9Y9rQKq3jDmiEEQQDUNbmX3zNxY3KCNh7U69/GrQ88mE6C6qsTxBDB2ZAkf45Ro3qOdVB+LLuCIAiAumRExoXdinPdUUb4vlBzzkH1ifD1ItzwRif72K2zZDtvKhRTKW+Db+UmD+r1F1wxFGpCEAB1PcaLz61TobApeFJxiNe5P+tDVeSUUnfDX3T/1iHnroOh4J0NbLPjZhgACoIAqCsatqRMIZ/uEKL72G3hQTG+ySCNMBtqCXpX6hX1BUCJnldKDIHeEAx601Uh4HhNCAKgaD8NRQIQBN0VUKrgTGAIggCod8hyicAMgqBbAsoaOFAQBN0SUP3T75CBgiDoloCSff0SBEHQHUM8CIIgAAqCIAAKgiAIgIIgCICCIAgCoCAIggAoCIIAKAiCIAAKgiAACoIgCICCIAgCoCAIAqAgCIIAKAiCACgIgiAACoIgCICCIAiAgiAIAqAgCAKgIAiCACgIgiByQAnJHxtJ8QEtoPjD57yeKeu1kdJoT/vELaYT7T2Ka0bWNgpjZP8mCPW6t/yllvO80K8PcOUD8y3jkHUf06IVGNnlJaXv38u6y8x5Pat3mAgj3ND1E3uAp/6zSHCoOlOfSShme7X8BMXbd3Pmxom/cLIU4d2udXv3AJB3BRTbHy6S/V1AOdnKpWSPM1HM6SqYmgjFjPmYjMAwMJsRipn20zDzUQfiFeAo51vWKOrGC7knRWJLHoyU2xOqFaDSXiVNc+hTQBE4Pmplyn/EfPOcL7ah57DwYJvwya5jeFYBjvaEGq+R3JOi6HD9bMXXSZZxgN6zT485HDaAaD2+F6+X5HTc0L+kcpYx6/TQHJzCieJ9FMd21I8eTsanQKjhdpoPAZRu6tuItnxii9RADaB6V9s82oXqo8cUj5r61AgxoGQ66SFu7ENNM+AlQBXkdNyWbCMT62d1dhK9CIJOEvikhv+MHkn7WIEyJ9ImK7JKaVDzaU47UXlQQziqm7WzXAOK3QtQPM1nWxvWrFaqyNam4h52EVC5OZ3Ap3XKZugpjgRQFb+/zqfxH6G9+n/feGWWLfvk0o9k5PRrMOyt2k2XVABquIktvN/RY7o1oHYuiVUmXrYrVZwq56kfuYDK64gh6HU7v6ge4+0BpeaoQEV30ROl39vIzOhnm2HtOJk35VrxyR2tzdYAariJDWKZNZg+CVDPutRwammQanDMpm0AkV1/0uZ1novWNE3Dr9jNAaXirIWKYjtz40S5jHxWO9/H2Xel8iCijkkaQprDVY8qQA0hOv2t2wMU2WreewBVcq26YV3VI1rc8F1Bpl9/0Pb13KTcjptkCfp1a0CpZVY1+rFPld8zUW5mJzuq7+B9ZcfgjNPgJJ7MxNv4VAmowe0jJ9QeoMhW894EqIKWSbq7nBpQwZlJRJOb1zMDPHf4W3FPQPnHZfk72Y7zQsqvbiZ300eToFW1AZR4NAXUYJ86QN8DFNlq3rsAlU/T9G2iBtRrNFjmUzBcv54ZaxzPlPKegHpk6E62D2uFqVMEsaezmYZc8Z2VjQE1eH7EhPp3AJUdnV3sy0Vre48CZU2FR92gH0sCgCIF1KkDQufwyINyWFfu4/PWgBriAW4BqHSXFI06dEGLNwWUOaOxrg02AKiznCXXjnUlRctCFZoMZgwos+ZTOaD2+3eo2qwH1EgoAUAlm1y26tD5XmtTQPGhOdgRPzgARQyoKMiLh2BU9E0U3cjdPu0e5ICSyg73kwBQY05VAFDJtGizDq3vBCg79lt/2MUtAEULqHl1Te0ktanOoNm7Ule1cpWik2fHIyx7bDJqQn00oF7WB4UKtGYdmt8JUH4gJuOH0UjhlpHDc6Cq83MfDahxQuxHnzPdMU3GRekpqk06Ylkvt+QTGaC4dOzCCMsdm8OWSgdAJWa3zxwsuZ+hh/vv99vEFedDLM+76Mz8XEYpgCvERxPb8SeIRVzXR3uCdlDG90DaJZ/Kk4vLtJNjmSPs6tgcCOUBqO3fNIZIxmFF/dzHrivn6s0wr5p9R9qWdmTGcxslN+/SV1x3nVjx/r3hE7sqNtt5ZN11y1K8trQ9NY5a58v1GJVxKkCplaujvbBC1R5zE/m9omSEXR2bA6EUAPVuQGW4C7k3POfq5WBb7o80VhoK6PxGyRzu/W670IlDc3bDPlTZ2sFB4KUTcEvbowvDt62kRqeHKvNyOE24uqHOlSXor8fvpDx+BYDKkbwToPj+lF0MqMsOlLZWF+XnhpNa7AQKNw9tExyy4rHe0vbQ8N2bRaL6SVDu5meSvFxp7O+Cpr+evFPTFV0AUE3yRC0BNYZ4fH+oFYd4WW6TLukkYUU7pLpcYIjkIZOjQ8ho605Pa2T7ycSIY55aQ+n3aIvWB1zXxJFH7hcxoAiPXwGgxlzkWZpI5NzEloAak+Ryv7cWJ8mvAspOYVN2J+mDrA4WsvsaHUMY61nb5Yi6XFFFsU8b20x4M57xpqdkdbdJeMyVu4nWfcKIteNThVty1CepAUV3uMGwQOqW//1zgLoQ2Kucvt0SUH6I79V+OkWVZlreACg5pvM6ipjQiV9jkpt+xn0NeV6+lt7Gtl12FBONvQEmZnmGU9Vej5N1VFs1ip7vAhTZ4QZ7ce7fAtSVPsvrclDHwWJJoabdzykUF2q2D/HC+O7X/vpUSzTQzZRHKg0O2ti2ywzQohTRjXEXIwJUuEata7Ogvw2oOkIxr4ca0p3jKNzfApS42EvFHQA1bXWRewuL5VtdHvlJ8txO4ue2cbPvqqdxLSqqaNrYtsvbxuNUEJsSQzSAGh0xu+NIsY8BVM3xK2xeFG1RcPtxgLoymHXWoG8KqHGzsN2Da/lm4aZ7CKN+qwec8IEiuv+nmLygwoW2NrZTgHq0AZSPuqQnPi3h3YAaMnQlPp+c2xGAupZ47Jmu6QDFK65+Om4lrJVstptUHLfyBkCxKNksQza7z2GzsN5mahyFNraTIZ5tEeItn8S1zZaL5ycBakinFbQGnw+hBKCuNaHLa+rtFctRPFXFVnhgnR4qg+3Gw5LPuwJq6H26Z0ifK3J9jXc/HoWsW0tvYvttSXKzzoYvDzqsPGjp3YBiQ/W7L++GGoC62mVlXtc+uG08NY0XHPkr4imXG+XHB5vWHPn7DkD1TTmN8VCUaOamkTWp4Da2u6eibsoMOlwkywxcIUdW5Zkh1x9t3Vbs+QmAYs5rIzmvcfvkPB8AUJcQzzKngv0r9snFmMyrn9Pj1swnY0d+tXzWA8ruS9R0kt7Bk1P6tN+OMsNbVz01oaHtUOR5XKhpK3r7pnxcDeO9G+1ytbmXCFDMD2cyEALKEpyCLOY3A1CX7ozPvIO7f75zXk7m1bPosVPMaynNtMPq4IlUmYA6zfUUdhI/ejkhpafnOrR+iNbslmtqu+1Wl23CifpBvZt7tUJiPaAYW7g/FXsHp2lXAlD0RVBHV+zTQWXu1e8+n7Py0RrvAFS4RGnCEOxyRCGb3fVKVXneWUvb4d4lNgvrZ/1m4URVgWgMKE99JjmTeuH+9AFv2VR59VSNPwEo8iKogyseGt5XX71LLuAxM8V7RoubAooNOaKeIn0OO6y3ma5dWMXx2I1ttzxuRfBHawdq3ccM9UMTuuZh42zOXd2GHwdAPZsVQT1PDylm9Vfvtkdarg/D1PWA2ukUVYDqO/Dg1cgQF3UU4YHbvm6kt7Td7sC6xBNj6B9eurxX6kEMKDbFz47C/zMAVEZP4Lk9Zu+K+c5HlhQ8jsUi2lnGrFNDuB6tn+ii8Z0JqPwRPx0aNz8uvE+H+HEuqNjP0dL2OKj3jvxVdeCj2tJyaYTYBzGgWFRgzwm+wLUg7y8Air4I6nmyxzthqihUSiYQw/79UkLpfEDlU3Cq09Lz283ogVQ++ryl7dOHJlg6PhE+/VJo+UKpVIs+ZogBNebQ5uKX2qfjOQCqVRHU/hXzvdmxrLHFBlHSLW9tLj0YzwVUQT7ez7lmPvs7w86UuoW2lrZbPXZK15+jfDTOeXJAkw320NPtwvNjnCJGNQBUoyKo3St2ux9Z2tjC8PgkfLG5s7mEiobbWYsUVzcPB1/2Oeyw3vYCrQ/ZbFaZv2ho2yyfZ5N6cGfBoGSmJZ/WXvb2BtYGlX1PjyhoJ+bWfokrQd4fAFSDIqjdK+a73a+isW1XuCuN9jY5JWf7UNOQuwCoosfCD0ttYQ9KT5F+ja0fTL5yoa2h7UshR36eXFY/Keeob/DHZUD58rE5LNjM+1UZyTKkA6AuzRuiIOeXvGK3jwyixk4lQHXpMN9GAtvfl4nH/oaZRsc43Vc9HaWV7YvP48rt7qE+QXlJdd7dsQ+yH+KVem1x2sxMLWBI/EB5+hSTfxpQ/NLKy3DskSC4Yr7fh0kBtcpq6NsBarlrN9qOQrCC1cz2NFq8X4177nxpjMemN/kGBZpm3+MwVCd18iitb6f5wJI81uU0yJP/NKByHrFkCK7YHTQqLaCqCdUYUHrj5ejYy9EEX72BbTPHXy6a2/tKA8vLBoyfPQ1Z+1ipE086cQcpokoXPzNyXk2SJP7N2bNY/T8NqIyHVGav+qaumB9MkMSAqiVUY0D1w1KF8dzliEI2uz8SpbrbNbQto9p9u/I8mCrKkUfHK3i6Mbc7A/OdkLWmqkFFPUxMhBU0rJW0AXVLQNkLs0X9DLPjP7EWSG0JqFXndKWAKvz9WVavbx4/PAbYh2x290/BqmOclrblXF7ANmNEcPmsAZQifNrl3uiW29zF8HyamhHu5pMW5nQtJ4nAjp0IkmpWCkBdqF8p2sXA5AUnihtbhtRfBdSSUPJegGIBmn7agzLUKomnqJ4XW9qOOzPf+CSslCFsNki6AU+ehERMKK2VIKwJDW6gnUK/eoOuzRNuiAElT9cEyg9BOnscXjOfr9b/yyEULxnl9sRNqZxxZOjOfk7wCJLURUvb29FfOYlPj6EJ5VC0G/Bki0WvCx5Pd4KppqoCUC0eEUgNqLDXye+OGOs57fIHic93PfEYznB6tiOUob1+UXu9/URr7Hw2cSihCaO0MsppaXuNlupBMmQZhoOgKTe4pLwP277j951OSMIQTDcN8GgAdV4Q0Wh/JX2rtp4P0hdhC4ffkWrG+lFqobZ8pqXtNQfr88CmzdUtwtBWB0wdEJey4NQRLVy1BNSVBTfy29v6gttfvi7umefXX3e9grIY+422N59SOwajvSj0PWBxF6V9S8+X9B9oJfH8SA+onZ37rfZ/U/TfTELxJt1HF8+cZ9dfe72uIUPcG/j0ZOF09no7pnip+ILxad+S9G/q+OPypqHs0BtEETYWlSVxtOLGpXjeTOvT446Hu26EVyd5YU85vH6C62WGE62Yvtd2g7msO1lKN7o4JpTR2r1x9u5gwhX1B7LpwTrdIVyU1tkTgqA/JPZRYx6AgiAIgIIgCAKgIAgCoCAIggAoCIIAKAiCIAAKgiAIgIIgCICCIAgCoCAIAqAgCIIAKAiCIAAKgiAACoIgCICCIAiAgiAIAqAgCIIAKAiCACgIgiAACoIgAAqCIAiAgiAIAqAgCAKgIAiCACgIggAoCIIgAAqCIAiAgiAIgIIgCAKgIAgCoCAIggAoCIIAKAiCIAAKgiAIgIIgCICCIAgCoCAIAqAgCIIAKAiCoDcBimn+OBTXIOGbbqjT8iVli95t33eh1vcXKqX2FretlYRMjEwpbm+bFlD2BE89otAL34EnMze4y3+7eRz2B+b7Lsmlquw2zC37NpcOE1iL7iB3RqO+t21iQLELfHp1QnTB5lLLySy3xV9dTh65yXEvrLibSX8bPnYDPu0PTMlubJsaUPpxSRo95s3zZabX2ntffu+3jtPMNzPnOO8iPM4poAelJ5xmFGlpmxpQvdtv2YH6GJD/cXzoODByXYP41vNlFkWG6HAHap4oZh85Z7z1XApjDGPelEel0H6OqG/TdYZvnMbqKNLSNjmgDrr1lKXq/ubPu9vRmA43srk/L6+/f0wkygvBY7EPNbhP3Bg5T8H26aQPn27gRNE6UIlpRFD4OS1tNwEUO5p2ffgbiuu1XptWKz9NbfPlmCYHVBzfRahy+Rb0NT5l0W/xEVwO6z3hOnmX2/dD35Yg1GrIu+Le2DWv2nEWatu6pe03Amq8XCJALdd+DGlA0NL27N5Mkw41oGb/ifvXvbDjal5WXO32gryIT9LMDSWKLzLwzUWXKIzn9WspzCYGdPcaQT9nCTuMyPau1FFasGxcMopcUUvbbwVUl5oiApTfxDB0SZyWtp9xHcY4/ogBNftPY5DkH4cppUMPh+3yqYPfnOaWNXx6fUwAnvbjlFy52svUGKW6eOIhWSU8tq1aMSp4JNKSjkuKbHZL228FFOv/nwBQIrmsyUnKwlrankdmWK4afChaQM1D30yvDT6Uyp+xIyNLPk3+30g/VgZRrV6NodkrqDPiFdp1SLLVPXtRBTHeu8WdLUdUS9uX7qtrA5FyirS0/ZGAUg2LF1Tjwogx/xTnoUgBFflPm3SALLlYl+bTfJNlQYw31ZBaG66LmfFymRBxfF3H6OjeaZpi4Uu2WxBq/gzWBiLFFGlp+wMBxWS7oouWtmP/ycb/IgVUyn+agqbsTHbnLfhD/+kZr37kJrhGV3JxXf5hXx/jH+X+wtQGU1mVZNOdnV4ro8h2fTSy3ZJQEbVbAapgpaO57c8D1BFDainS0vbCf1r+mxBQSf9p6isFnUT4E/9pcs9UxShnC2tcVY31wboUrNuQM/wgh+Kq7jVnyimS2nGW6DXkdX5Rk8lmECkME1ra/jxAyeMS9SpQt7S99J+6gGb6iQ5QzDkrXLd7ZMknRvIFVDo8EtmAWkZEcjGcmeGVHVst6MMi2k356zA5+IomOJMnBtS8r/Jh20HkIe5m+62AoigzOO0hmmAANspDzT6T6Qky/kxfqClWV+oprp/tODUqd0iypbPBuTm8DZndsud+fIkiMUI2f1Qa4L1pt2kU4KlnQ4jIu9l+I6D8lFOoGI7ivGuI5w1tr/yn4X4Nr9ADamdcOZJRsk4v89yJfbEMtlnyt2aVQsrEqtvcKMt33L5sN8c9Lsu1uIH0eaL1rqW72W4CqIZbXVYzWNj0RxT+Xzknhsp/GrJE8dk0FB25q383anNciazIrm5G9do38LlNE402rtN+7FBfzkucEbkdxSIxuciSwS6vA0pSAqo2wDtyHMY9smFj5N1sNwHU8QqurbhYn/T+acJ/3za1sPKfFj4U0fwyn1xibKp716cpxfbmiux6AHccB3WAYkLPBxtkOiOpjReOb/Yeq5L5hl8HFGWa3NV3wAvzk6UHFIlTQg+oK6JxcpKA4jS2abvdxn/a+FC1Lb8EbBQ4mcrJd4GjNVNsvnF5nKd5tQjv6OTdg5c4IxdDcVHS5o8M3SnAuwSRZ0NAPf8GoDYpgCSgysJ/1zS1kPCf1j5U5b2Te0URpi67ejFvl1FQORUn2cNMl2Pe+oJZ4WIsyz4HUKauBGq3VV6xFwBFevvkNUBJEtuUqYWk/7Tyoagm2dWVmiZJkcmhyl+0skN2ae8tiRth/zSgHEXmPdEq/aE/8bHhAFTt7ePXAMVJbBPGeDv+09KHYrR8GgwagnVve+o/5Sxv+rC6Ycz1b+Jzb6S9xkn+CYCiCPCSEBHr+mMiQLHbAyqcqDku7qb/XRVPnACqJNkirva7Atu7/tPCh6ogSLoCni38p3Lram/iFkVnrej+SzPNz8KZwvozfo1o/lOS5JKktmofULNZGkDxZOx+xzIDe/Tv+jTwAaA8hW2ydbwD/2lZD1WaxI7Of9KvOcBPZ7+R+E9qL7QQZZFHN+DU6xq92Iv/6uJqc+0NsmQn8i+UGXia6vQDQE2XSgOo9HkOtwIUu/DvEtt6Vf805vjGaouaiu+t7aXKbR/6TxQ+1Ow/DW5SeN6UoPKfdhA0+08ue5DLR/f/gh3chuLB7i7Fy6wopZNRqFlIE7ZqFEaEvDSgZNgXJagBtT1B7U8AypwsZtSc0dHM9on/VO9Dpc4vEMozOv8pOZaL8k+TF8Kt5J3YJQLI7PYwV+53wVaX64Aqa3K/7gQ0Ad4eoFyYzgw5oDZ9+U+EePIqROR9bJ/6T7U+1OL8AuaV2DJX1vNpk1Ip9Z/6lua8O6Sk+7ei96CCDXEh5VjlaDfZtul2jrKp3zuzD6jXl+INALV66MUNK8njHVDbf/8RQF3wn+p8qIX/JKJ+wSSh/7S1IYq3J3ZPBPUv4HXBjFbnSR5e1ObHDVm4VzjDhWLFfIoXYmzlyX3XAPWUTQAVnR7xR8oMPi/EY1f8pxofann+Ex+flMDsvO1FtuDTRChXMhXwp+FdwbiR6wUfT5Fw9mcNyXhxlsg3zEC5zXE2VAHeCaBsI0BFJ2X/CUDpqxDRd7GtLvlPCx9K5wNw5BMjPvdDHR6PKwqPd9AdoKYdPvbchcq/n/L4i4dWK8w5X1rIK7PN18Usiu5whENAPVsBqj7v/FGA+rwyA3XNf4p9qJzBuDo/k9EeA6pOGCfKho3v75sdnzu7eghKsqQr936yQ2eUyRpwXzkSqtA2X52YzsgCvF8DFP9THpRtWKhpmxRqvsbCRT6NPlRWEmp9vq+k9J/8of/U93BRehd9HM+sj2/RylvFq+7nUbg80Kv4aC97SqjSgja/+s6c8Pi73wGUZrcEVKtK8udVQFVOX9RkNavuO9ZWrbq6yb0Faj2/7u8YzpdodDZk39ImLihIXCSbz/mWRUXZ4rFHoWH5seLoQcEp57DkDe27iaI8LXcFKKuMVq0BFScY/0SZwdYTSQOqyB++WCRsqq/a7rptuRUM22timupg7PnJKOTPfpf9jYuulG+P2JsenioLMzoD/F06EV33mEPbxH9aE4ruqOkNRET6EXu0gFqewPUnCjU/87gVc7AAXUU/nXqXnaszqx5xa3b8J1F/lK3rm3G5+XFTeTx+OVd6P4dBqFIEqIXuUR6qzrZqdb553PPcTm8mBZSiOcrlswD1kQfWPa4DKqtV2A7VmFDGaF83BtnOcBMEh233x3xs2psl5wvNy3cA8U25IDNEA36fULW2FWXImB6X9tEeUIYl/ubfD/E+8sjfVoByjVJEi8ZIne9bTSjdZ1WWg3z9NcZHxVQEOENGbk5xbV6oGCo7GQFTbVu1CPAWEJF7uS0yQCUi6D9RSf7cmXaJzrlo9NCEVoDSSWRqQQIomTQuKkLolXv2ApI9IH9ML1ZFwtkLtJxuvO8EY6qBYZoZKGrI3aalAZTmfudvbgOohsd5feBjp1oBSqb6mOmOXHHCCld3M3nKuKCqGtRhLLv9CE/TOBAuIpTgJNd+lLR0LdBHs0iRBJR5NgDU/t/8BUCdP1xTkfUMItttAcXXfKLbGbFePhP1c0DsH72MWLk3DOcHBtZ9EzsVFQjyNcl1QRSZbUXtlC0hovc6CQBFcSDqxz36vLEHleRTdZolMcOmz6crG5RuHM9y55vzscSg1isZkkXOkaWf0nEoaTJQ0VuNet6YPyNLZANQV9KTFCOzie3GgLIN/KeUB5X2n0zhDD8ex2Qfybok0VcekOzxiO+pJF5QaGZbESTgDiAitDSJIpQ/A6hmleSnFKntJS1stwKUWns5hnCsbHJQaf+JPXafHnWhoTsfyiV9025DcZ8zohj2mnQ57JmOqQ2tXUUb4OG5eIsLaVdmcJIrUnQ9g852K0DZ5foXM5RRgVwN6b38ky+NwsKJTGLAh9x8NeM4WYCjm/Epfox9C0LRPSoMgEpcLH2h5jhckhUBnGSFndx2K0BNqzHdc86Z56Sxhl9i2e8uVMnSjwwJnFegYbZFBtaFjWhUCRjThCFtbTvatNaF9cCqR5+3sv2ZgIr2au1vlriL7WaAcotTJ2mzqvNWPC9EdLSASP8hL3CihlNPRMc4l5wl6NI6ss1zS8ev0cQ2E5S7IC88jKvoQVytbX9kiBeGZ7zHjUtH2TecjBll6k+DvrZZOLdVZIMs3HGo63YxWVBCPW48cX5JVeY4UVV2RDzxbKaWtskkT+euPjcs72abHFD8WiU5yWMNrddSSqN9gx4ivDa9bUvRIulymc3JQpmtktgRRhYUJHebiYMsTEkV0ECih+F8BCvzJrUZHqrtzyFfaffHEi+ucGtpmxxQFx97of9O17j8IJD8VtnkywjXuhOEcod/WBIGR8fD8NdcIznfHnUGkblQjY4qbmqbGlDs2qEAf6j7scvPyy54Tpsk3wr23PPvdtcJRM0WbaYTzcOBp1/phjc8BpkcUOfnDTY5BO3W3vVFQhW1iuOEO+mTOaJz67rqbDy2zPh1+UTgqQWhTv2ccv+7pW1qQKXnxD89P562SFWrWNUFR7rFqJ5Ov+PGHk+glUuots/4dV/DW6Ck2Uwpjw7ak+KutokBBf1LbLXeK3cGDevRUtAbeiOaAIIgAAqCIAiAgiAIgIIgCAKgIAgCoCAIggAoCIIgAAqCIAAKgiAIgIIgCICCIAgCoCAIggAoCIIAKAiCIAAKgiAACoIgCICCIAgCoCAIAqAgCIIAKAiCACgIgiAACoIgCICCIAiAgiAIAqAgCAKgIAiCACgIgiAACoIgAAqCIAiAgiAIgIIgCAKgIAgCoCAIggAoCIIgAAqCIAAKgiAIgIIgCICCIAgCoCAIgt4PKOu17KW9bXnh3ccYLW5LWKb5Y1dcs/tat05prZx9Tzu1+jRum9/V6ruY/ATnCK0JmegnUtzediNAMbe8Zi5dG4AIOX2Gsbfkkz0ASN809p7WoxHYZPy97dMejwaXv253egqy1ydIqgtncqd/6HvbbgSo5Kzeopev2saQfAIT3piXU2YUhVfGTgjyahh2Q+tMrTpbU0Q1/bSuEVwDetDdxeTMywmtHnSTaga2tN0GUEzvXTB1L9+6D6L+4hfMk9WXrB+n0vez3n4Avu/T6MdKst11k65N45nJg/5R2zItbTcBlDvKiZDOZGK8idJMAaWiChipYum4NbRls+LPKvYurTonVIH11KzYjlANP+3lDY8s8aR5rcQVk/KJNHYUvaF1JngMP+oo0tJ2C0CxkzndMOp+PaSerKmeyOzOZCBr+khkx6a7YGE/7Cl3noQqsZ722lsRqtmnMSdbpYlSV9woNCC4bJk2Iyj8nJa2GwCKLdwC1zU0ty4Om+iuuDfKxZovxT7UgTOiKLryEp2mbkAOfurLJb0Q5eVan1qCcylloyCm9aclEqF0KYa2gLLE+Xee7sKWYky2tE0PqHky5IoNEJEhC8qpJ2K34tM06F01WimD6b38WF0Ow82Bhb0CqCzrbArIWXBExnvXxIVq9Gmet0wxNAUU+QrhTmsyCq+hpW1yQE184p6NbT2mcGZEERGKJ5Liqtj+6XI9q+7KbLeL98k0nv3lA6DEGZuyret1zxrhbVoAqsmn7Uw3XHwAoCxxJcouRJ5UE3Ar29SAmnpF+pJOfl1yGzd9uPehJFUehKKTXAEUs7kdfLoq/zxNk+daH9oiRnLiJeIMFO2n7Uw3HxHipa69klDnECkfky1tUwPKJNZLWGzXP+hmYpVuGbnJRtPwqXi8XALUswBQIYa+EOHlWh/CR3f2GmGkTvxp4niKYXcGlG1QzXsBIsUUaWmbGFAukWsRS1qMf0LQ0WXaVbJFAEwEBNyYFbXkjQDFhza0F1LkudZ1atWct0qTN/i09Bifpk1HsC7WDFB7qQZuGwOqsHs3tU0LqNELcavupxNzG0GswHdAZAryq2onK64I1vLaAMoNN31d8OSEEH61fJVrXaa8XEPW0Zp/GltskrPrQk1P0f1aAco22RF1CSKF80FL27SA0ql6OLO+Nk91wTvLm+EWi9peMXThlWdlbwOorqS0KynbKTFbVHTlWuepukZPX4zY6tPkatFuuXqnSEDbCFBHSzUVhLoGkbJtGC1tkwKKJZ05s5kcJdGKtdzDHM/mXyLAM8ukWYWn2ghQQ3pvriQP/dc6H44D8OXWkzC25MWIrT7Nr4m9SI5rmrLyNoCyjfZ9X4SIvJttUkDpZOwmN4BiRNkMufetZW4SKpVSlenYT9wIUMtK8q7hx2L6fmuL+6OAmgO8EULxwDZEpS5NANXsZIo9iHiCb9DSNiWghn6htrSQyYRPdRpA7bWMyeW1TGeWn4nFPXkbQK0qybvmVMt6H10HKJZ0kFsBiu7T9ONo750iSoq0ANT5emxNqQvbn+VeCt3pbrYpAeXS2OHbQT2MekdxO32Oa3UcmyZK+hJ789hNALWuJHc9mLm2TJiH9urlkjBeBahrr1IBiuzTpm+940QTuVANAGXblrqwC8PpbrYpAbWzDy4BqGEWqw5K+c4N45kh3u5CPSc5u6RZmUFcSS77Vh0mWNd1CT57CzSAMr3oAZW2W/xp/mQoTwBzdwPUlU3fFaUu7MLfVNruzudInv1xB0DxtIPBE2sxjGZByKXnSZubA73UMcrP1GhWqBlXkruuUbsxKZQYhqmYXEMaQH2I5Bl/HEnW9rcAxW8MKLGbp70BoOxO8/GdFwvX7LdmXNKHz/gy7JEldhtARZXkwV2ywWnyz7G6g5MAijmttdn9n6o5y5ncNjsfyCR7kZskyYecTbLbsWFNpApQ/rFfwloPKLlL/hsAyu8EQMm+omkOEBMpYIvc2TG5hqe9Nzs7b28T4kWV5KZ7wYyHh02RNQmg/PkuxeI7SW9bnIfiuqKorSFEWsJv7H17rUwDqP1rvQGgdNqvZsmpyhHVaiY+1PJciqjtmGDLbEVdNfk7KslV19BinMNCs5tiQC3yP5dOm9I194/Utj+nj604YbNhGPYOQPG/CyiZ7BYsffC7JSrdMps96uEQYFlgJCoXZ5btB3/mHoBaVpK7znOIkntihFZFGei+f0nhV7ayrS8M6Aqqys8G1E6I5/5AiCeHw8Ftqrvo1dDiNICSG5/HFKzFmsTi3WCB3xhQz7iSXLwGO4/Ar3qbggBQ8hpE5F1smwuM4OVHalwqBbC3BdQ7k+TM6PsBat0zeOpFSVT8viCLNMrIog4id+eUJKBkJaCYkYwGUFEl+QAoMYYuoX7fEADq6trBXWzLC3eJV/S/c0LVn4n3qYBalhmoKIi+EaBkMmR3qRcrASWJJrCkHdsKUF0MGrowZSW578I5FmI62V/4i4L28XcBxWshVk6oOx7l8iZAbbI77H4hnkhnQeO7ZklCPDOftF93eLjZ3+hCnoMaH3mjGW0leV9SIPpZq/v+jBsW5fj/EqAah3inhKJ4csw/ASgfr0PcPEm+uW8ESXIZFf9HD+IrOBTf7KY5HTWg5r7NLWkleV8H1SXO2OZg778JqFZJ8jNCkZx5/tYkuW8EKBnPEzcuMxjPTlskruvLDMxyc5JVpntkkSqZvtTu0rYhLjNYrKor0kryfuddOF1E22EUScn/HqAalxmcEIrmmQzvrYNqAyi7SJjfuFBzup1x6FVdqCkrN0/GErsr25y4UJPuUN7NmeSy/y/X3WGaXDkv++ZVLQDFJ/DRA6redkahZjlMdglF82TQ99ZBUQLK8hHRehFv3HiryxznyXV8Un43DSGfkpmmxUxLttWFElDrM8n9athwN38BUkB1bhozbQBFYPs9W13ShKJ6cvFbQzxHCKh+pNvEbbjxZuEoHaKXnai8nI3Sf0pOK3I39itInLUB1OZM8q6jTU/67p+aKngDQMnVLaAEFInt92wWTj4a6r7P3HtTklxOg1IvA44bH7cSTJvFLyuPWzG0fEqAyKcHSu1xK5SA2p5JHiI+JpwIhfC+SZJc7MTFt7Ht3nPcypZQZHz6WEC5qSH8arzc+MC6RA698MA6J1UL/ykV49l9srC7AOq5PpN8fprzM3amiAHFdtrsNrbfdGDdllD2+ccBldy7ym8DKMYPM99qvlpf1EH80Oeo/afdmIIRbeloBqjlmeTjKQxOCKeWT/T7Ux7UyZG/vnJ/8x6hOB2fPhVQfn/d4A6A2nlowsLDMhHJdD6fOgOSnk+bEcH3ASVuA6jVmeT0/tmH5qCSLpTlaz4RdJ+YUHTx3fMXNguTnAe183BufxtAsRMfQ8hQp1P02Ck/b+Ql59N2SATbmnNJ8GzhZknyqJL8fYAKiUTdZhWPxrZf86mr349zoSSHkS0IRcqnVDEApwFUy/Og/MFW71sA6uITx4oe3Lnx+kn5tBniai89ZW8DqNWZ5O8D1E5Hv5NtuVyu6X3Nvuvxuh2VbJdQtipgWtvWJ2sz+W3yjvOg+MHZM/cAVPLR5zszfyZgZFM+bRfyAmSt4ZVV5O0AtaokB6BWHXGaJocal6eInwefnzFKO/3DeWf2SQqobbC07O/lgGp4HhTb2bxv7gOoKexw565Q5hKeb8unBAGl2dY0y2crQD1rK8mJrX82oJ5i3pLpiSq+d7IS3YPJkrSrAdRcwZbmaTmgmibJWVLPGwFqWmHzZ6DJ3nGr2/JpL8NHgcULfOLP6kpyWusfDqgnS+Sx6yL13SHu0s91qALUvIW1v3+aPT8BUA1sUwNqcvMkK/j1VUI14NOlg8jYsxWg9LO+kpzU+glEWENAEdkek+NUO1Jy13XqAEU93AGotSPCh/ijO/xp6A9sylEWDXXelE/nhCoudLnmmtVXkpNaP7h6n4yb7mb7+YxP4ak6MAyA+ncAFYVKA6LGJwszVUcY05hP+1m+mm59CVA9+korydtZ3716I9sdt0Jmew9QpY/I+nxAnUywVY8+b2WbHlCLYc616/wSbl0cUst78un5PFoOU+VWTx4NMGQYSm8hb2r9886DOgnxVO2jLz8TUPxa+Q8v7YGtbDcAVOq4jM2RGtkS7+BTWJNJuk81+xiGg2jEwSJHxRwTWtuzNtY/G1DruF1WPAM5M7ducwHVyvY8SR4Pnb6lip/N08p2C0Dtxv7TMUUF0m/hU8jsbPFUWSY8VjaLk1tYNMcMOeXDoVdu/dMBNae0tBdVfYdnpSHzWryl7XiC97ufYX32827fYrsNoPZWTx6LR2yWBF/N+dRf/IJRUtPVh52vttHGpQTWP+65eHs5h9p7qB/Z0newndPUsmEXkc8bAWpVx7Fbz5HrJ7yDT/2nCaWNlMZUzrrzJHPlidml385c6tGl1i/C1d3N9tqjr+4TPJch11u8pe2MjyjtIi1ttwLUy5pbVmLzmgRAGOLyTXxqgbxzP6f8vI4rPlS59Uv8M/ezvfLo3zPJFLZ4S9tLR7LJOnVL280AFaJPLXtpX39ajv1cPAVE8QurbYW2zbW1vGbBjbqj7WXeplFUQNTiLW3P6dWj3HBdorWl7YaAgv4JMWUOpdg9bUP/WD9EE0AQBEBBEAQBUBAEAVAQBEEAFARBABQEQRAABUEQBEBBEARAQRAEAVAQBAFQEARBABQEQRAABUEQAAVBEARAQRAEQEEQBAFQEARBABQEQQAUBEEQAAVBEAAFQRAEQEEQBAFQEAQBUBAEQQAUBEEAFARBEAAFQRAEQEEQBEBBEAQBUBAEAVAQBEEAFARBABQEQRAABUEQBEBBEARAQRAEAVAQBAFQEARBABQEfdAwORXa6FMAxZwyRkpjlGOfZPtjZDV/XBDX9l620d4XPssbzrkmHjXdF+D6jSPGPR7unoASZnEzuRGfYfuDZhT9uKzcPtnSNtr7/KNU38E5cb+2w7Dhb5tUfPdx7n6AGhp4NbEodnfbHzVe+CNDnN3FNtr7vIcHG5K1+gbvumM+fJy7GaCSCCHCSEvb40eIt9w+Ztn7xkten2xp+2/wqaZNxPBJhvorRB6gfiefiAhF1snEwa2sdVpb2h6jZv6Q77h7su6CQ28z4jxpK0xun2xp+1OlH5nSlaOavhNGY4e/jU+cUxGKClDq+L6pu9qOP+Idt6/ugm1OLiHkHuwdbH+q7CNbtqqLN/BK44t7G58YoyIUTYMweXbfyiPrlraXH/EuQJVfsM5Hjr6D7aeQi2Uu5l/9V44/Ohn98LSq+zHDzWxoe9eBUorUhXKkUdFvAsqPmKUiFHsPn8oHZUvbC3fgjYAqXlDheUkKk+PWt7QtppXXrjzEmmjVq+fJtAQmpiV9cQfbfN9p3yNUSRhlW8Zgbw3x/OwGEhGKAlDXMollFGlpez19vQ9QpTcua3QNY/cOtuNJhvNLP8g72D5Ihe92zJo+3qJwRtEmQ65k0uyTjlAUgJLXonN5N9trN/6dgCoLBbo35qzL5QLq1LbnxhbaztWNbeuj8I+VDutGHs4bywz8sg1ICEVwzepqt1D3sr2JIN8KqCKvL3cAUAOqd5t8me1/B1BDCEMFqJkgbZZFXUv/bBvfEftQ9YAS1/uFuJPt8AH88VuAKqk3+GVADUMpoDXHtslniLmD7cM8uCIClH80Jgh/TwZqXL+LPouAUPU1lBmlbLk+Zkvbq77xC4CafJGPAZSJA+oc23ZYGmAXZHnecn1L24c9bad3ZvdD2TqHLd8CKD92DRZ9Vj2hqgGlcqYudR/b3Xc3j98F1MOwTwKUW4ykrBYzGVywmQXVDW0fFxJoEkAxikTqUZAw9XIpmvMpEIrPq9SBUL8IqFMnR2uqvWHeLTcLC1/nQm0uXXIupdHKWertUNYpbWRnv87v+1VArXIlWR3P5lx5Zr1jQ9vHBGIkgPKHkaeogYr1ZtnhODfeNuXTGrO/DqgzJ0fPZUbZbs7Stlta6iDtalyow/zW60YSQYp5c8Rw7j4GUHJJ1byOx/MgkhWOtLN9UompKQBljiL+4nNL+nNb9pa86Sk15J/0mlC/H+LxC5mhaKWMF9vuv+RMqOBEivISufPwkeAEnd1NzoVc/U1AuVUu9yMAJdaV4/WAYqnorAJQ8rFfG9f195KiXnfa7WjPXvFjas8sCRX45J+/B6izZTa7hoEotO3nOxa3ry9cyGPX6qtk1W20Fz+EfQKg2NqFyAIUyw3Dcqu92FEXEqW2U8dnLAYmrwcU39/GF8Z3wfLPhcUlTs6nLaEI+FQLKHPFO4iTPabQtnjGhJr4L4pWjxex4u/tIcyfzX4RUHKdNssClM8FlH9S2JabtEie7fgmSZNKTnbpRSN5BaAO9hmb0hNYrvQ6Rs6nmVCOjE+1gOJXKG3KwM2Tg3jh9S7z3NdtX2bHy2hhA7uMBUh5f0D5zTDKApTMBVTGitaB7e36bJ7t0Wc8XTZ5cUpXA4rttblvAShByidux69gRkCR8KkSUOxKgOfKwM121rssX8CqyHbWMWRF9b1ZBwnx2wOKbVNmObbZIxdQuf0kB1DXbWdlCVVeJ+RnvcGWw+RKp/OUfHp9azYa1VzS8akSUC4zwMvJ6Lu9QMim/acc27Y1ofL4dP8QT27rInJsu3xACQrb6RDvuu2s+69pARX3bs7oAWUo+TQWaDLK/DgBoNSFwEUWLlqps1rxLWWuL4gxmUMQRdoum55y/yS5T+RJ8re6ZAHKlNr2fL5f6SR59lYXdx2U17+lOIm9ZMVm+Mb761M9Qy5PzabiUyWgTG6AV7XHaulpJEpETUnLNojXRSv6/RKgbOpic2zzfEDxQttu0RFSZQaZIfVFQrnsPIM/DL10jRdPmlc4zz9typ/o+NQQUD6NkZpNoLEPlYrSsrxW0WyjX9YWQvG8P6BkatbNPxUgC1CFttlJgqXwNAN/nTbX7488cGw2yRNHDSiKZbzxfDq9alQ6PlUCSuYGeIUHkW19qCQE8rzWjQnOaTKK+87Z5hMyC63eBChrFjWqKrkQfk9AyROft/S4FX/5lrPyDjhPhbaOJw3P/0h8axv8vSZ8IgaUn90StpNFJwKUrQfU5pmM4UUrvJa8xh/evFlqL4aF6k/YLNzdxMhntOlRektAuTOft/g8KH91SsotMU3lRQ7QRQcoT8Sn/qKdsU34RBviRdvl3N4dqArxLGGIt/V1Fu2yeo5xaQU818uHtJe77W8D1KoWduatfN4dUNHAlsSAOsoVqlJPx+14NaZy2Y32VKzD+G5bYkrKJ1JAReVZctcLIkuSW07Q5PbowDphaivgt09nr9sO9Q5A2dWMrXYqne+YJPfbztClySNHtSxJfkwoVZ7a0TlH4WVWwHNnmTMnWXLWPUmiaNdpfD5d3DVo+URZZsDnMT+MPV+zaKXOyoVqygzm73945O/0jJCiCnhjj7r8XY/8lcv2tnvjo3GZgS6xzTe7lNRqKSLP9qWVNF2Te04VE4jqrFHknh+sBUW/zZ8s5/Pplo9IJOYTaaHmvKHX7wV4NYWaUyk52yOUq4Ns8ip4aQV8en2uBqZvBtTq4SWywnZBoaYrsL0paTGb56Xk2b4CCFG1OJYqxzytMb+AvXn62695cVESNrcUND6fLvahqPlEu9XFjcnn/TR3+VaXuX68fqvLsofxA0BNn5H7nLadOanoGKi3Akos2lzvNu4Nt7rI8zWrkq0ux/2L1a3eiy3/6gHF2HEyt3q7hI+vqYeSbMMn4s3C7jBGq9osHLtNPO1DlZaeHT+4c5jjfN69O15FKj2N5y1J8phQYt87vd9mYXthY2jRZuHj/lU5S+5uCWaPQ9++BIFUdZvx+XQ6XKlpwyfq41aibmxrlw6Sx60wkuNW1o1gjrqBLcmd2aMub0pb/U1lBpcqOO533Iq5UGxbfNxKM0DtHqpiiQDFrpUMZzNVhPSb7AeQbsQn8gPrXDr9R35gHXtu0/AVlWf+aA5RWS6wPsQZr7qDbyrUFFeKcO53YB2/4CPUHFhnLk3Shc/F27awJdqVQg4oP483FU/FLfhEf+SvOwrwao/8Zasjfx3Z5qIX+cxhD8oC1H7K0VQdtvqurS7iwtJGXqd+x5G/+sLu2EfFkb/qyGWuSISydNDviPb1Uod4e8/xa8KnBg9NcAcB3p0emrBuCHt8IVmAUhfzl3cF1LpTy+cnAOp5+Ey8EtuXvH9RvVIjkjOAL89dLDrzfuTLS5LkLvh7m+/ahk8tHjvlnrv7ZeseOyVoHzuVN8Vl5aBaXcr7NguL06bNAtQ/8dgpdimEKrn3yYdL6fJNKTza5CkOFjZVwegZ/rofnKo5n5o8uNPvetv3enDndcm8VTz5/HhALfq1q7Wd/3DNjCZsaHsvCLIy3uXNqQ8JWCdxWUk/GTrscaGmzS/UHHHWvZU151ObR5/vHQtwu0efZ4RtOYWD+h8AVEQoU23bZoyC0keft7CdjnPD/oJ5n4BsA6iKFFR426WtLip3q4ubRpt9A5/qAZVzOpu4k+3M68gZMOJfANTU+JxV2zaPbJk72E69ay6/HqtFTBNA2YpjBy61Qqmf77adoh2fCAB1PRBT97Kdl4RiLf721oBKHJhbYztXt7Ptl3jqM8tsCOobAEpXxAZth8yGUA35RAGoqw9xkneznXPHsyrgnzcBFKs8UVMcLO+wvwiofu//IkxSrBWgeAVILjVC+QPJV4RqyScSQF17AkHZIzBb2s7pLTlbL3hTQOWWutbYZto4CttyL0G5/4O8g+0ljFzqQfZcrZ4zTnSrXYUDdQ1Q9klDqKZ8IgHUpWR2aRK7pe0MQGXkvXU7QPH8zUL8DrandJbuEqtjmNS7H1PM1CWdmZvOMhV3sM3znTOqmy9rOEK9t+WIUG35RAOoC35Oy0eIN/efXj01x29pByidv76l72A7PF1FzQc2dz/66Afu5xrRLoySOe3dzrbOBxTRCq6rCsTak9Qtz+Npxqcn1dhWDXPYLW1fnc9yMj/tEmIsp2ZF8CzktLT9qWL5gKJpkyluKOvcb0jbDoRqzScyQB0+xYmL+9q+GNA0++MCF+phxOltY8N5xfoetj9V+pccKFlcYXAZULXzuptTew35RAeo7QrHYqXjvrav3Y1mf0yfkSvNzrW0/bEu1O+0iaw7NuwSoKp7qXvUUfTdgBqqUhshpKVt6mZitxkx7R44+jf49DttMmZdy3v3e2JR9wY+UQ+m1cOauBGfYfuDRkxG1JH7sI6WttHeeQmNqsn3TauNrj2fGsz2zCljpDRGOfZJtj9GVl+a1YueJdTSNtr7WtqLc258nX/jzy+XhCuOIFL8xXAEgiAIgIIgCICCIAgCoCAIggAoCIIAKAiCIAAKgiAACoIgCICCIAiAgiAIAqAgCIIAKAiCACgIgiAACoIgAAqCIAiAgiAIAqAgCAKgIAiCACgIggAoCIIgAAqCIAiAgiAIgIIgCAKgIAgCoCAIggAoCLrlALHCOSesRVMAUBB0r9HhlBmlHBgFQEHQfcaG10b7l/PErBWvfxsPRAFQEHQPuZfXZFkU63mjHcYLAAVBd3CfFngKiFJGYcAAUBD06+NCmYS3xJzRGDEAFAT9Op9E8hcCPhQABUFRD2Xs/aa9cTu/oSVUwy/XGycwz5peIwAFfTqgtG/VSYVKu0lPZ/zum9wuu0quQDdcGPz5+vr6qbRhvzp9/97yJQAF3ZVMvh+9tl1QtccadviRytANV78TSRbDPP5CX//99993nb3v/wb9/FovwECAbgqoQIKGgBI7gHKHCLIH7tUve1DLS/uuBsvEp/++fsuHAqCgu8r/EqBGB4oJ9mTDHhcb/dubuxZssgWgmPj5qWo62/lgP6z3o74AKAiKOmZXdSQY6wDV8UHMUHj9IEK/ZWOl0pjI7f5u7NJs+qH/bfyrwd4AKLaw3r3c/cScMdp19eNs8e8OmW6+SjZfXPrDw0Wy/oq7FxdwG78AEzvvfdnvfxf/at1S458zJl4XOKe0oyT5z0vz+1j349hytnuvfb0wtc30Wzu6YC9QfS1IYRf2YvMve7b/fX9J9qeSkQAUdE/ZsAvO9x5U/281+DK++yEkWyZU2P7n8B4d0jodT15vEiE1w3xsYrAXACVi6yG0ZD2mlHiZEN2C3mvgv/6tRVjcY3ry6boMfrDMUp8gBt51m2ZcX5s+XvkymBR6897wLV6/t/3vwkLB+lKX3zP8a85qfX8NfOk9oRdjxPx6l55iQ5bpy37PUdz4t91vf3YANaSmxgz8z1cUBf7M9lgIEesS9QAUdE9AeaWN8q4D1Gt029fY7GskX+NVCfEai92QFWNI0ydfrHn9Xccv0Q9tLcYfXjGbikyI3oR/We+oIcZ32WWc1GHKdrvvtFr8e5GjYr0R+7LoX58gut0wAW4vor0+IQCwg1xHldcvX86QNtGqpBuu1fjpEvr32uG97vXllbDT111davw9bddkRvt5w+CYg5ozSd1P7GvKK/0MPw2vfA1Mmn6y0YtRiPczWfh+bsz/RPbG31gACvoHYzz1cj26EC8M+q62u3NZQoX3678i9qA6qAxLYrb7ezaUfPdlS68/7pPRSxOda+LGVPwriBu5YYMZ3/lR3UsvKI3/ZkYFo2L2tkKiTA+eiwpANCGi63/5wsrrA1kHm/l7xICy4epef9hfePxeN0aV+vXTcKmdoZnj0/fsgju7CPEGQP0EWHwNTk5Pj6+vgUEDrsLP38PK38/3gJv+v9M7x+/83/Tq9DdfX+OPP5G9kVXfABT0D2pMkg8Og+jG5TQ4+5G58KCG0Oz1X8Wm/DfTw6Af/kwNdsJPHaBM9K5nhJ/RguhDPBf/ys6A0sNv/GBUBFK60VR/KSbEmcP3YNF2mQ5Qc9V69xdu8d5pa03/h3q8VB3ly1xklKVW8b5CONfHZd8BID8shHLf4dURVN/hP6wP9L6+Y+/oZ2m241Xwq9ho/isYGuwH8BEk2AEo6K4u1FhmMIzRji7TKA/4WnpQanCC+szymGXu+DMh4fWPqI6p92U6PMyZ9DlHPno6wa1RY8DFFqmv+XrGgqYOUCPzhq8w1J5PMI2rGDruzMuU9uVo6em9AVd+BtG0PzAq7bZ2ahyWLjMY47S+bvP7+T16ND/h9a84NAve0VeX4O6bIyozmAjVo6d3OrsSzjn8698a0k5fs/nwMgAF/YOAWpUZsACoeWy7eUCOOSjt5kWu/izMPrhjswkdkkuzie5dygm7SVx3PPDWTfGlt342MwNqQF8MKDuHYN3LA5lcl5bqFVVnuv73Udo8Kqrofhf5Uz5xqdP39HoHUMFl+n5O4B7xMjpLg8vUg+RrQtLX9witV8AXck7jZU3AC5tgJuANPBw/zg6g6j8GgIL+YQ8qAlQ09gMKYkD11QDdGO6zNj6sbuneg/LPCVATU8b4KCwLKjcbHj0sNy2fLf699KC2gJp9pR4wQ1zozCwXA8ovAeX2AbW51Ol7aqX3QrzvRRJojOHCvwYPyo4/xrXjw+/6a49r0n/+WyzpzdWgM6B+ZuABUNBf8qCs1jGgxCLE672J7pDeF0j6qgDLWJ+YYiPWAqCWHlQfJ3XvcsscVP/PaLNe9O9TQK08qCG17ewgtshBucse1PwF56vqViT776l3Qrzv2INiZx5UV7o0JLi/7ZQ+ipfxZg/qeeZBfQNQ0N/yoCK6+D59E43fIYnEbLfAp8fMkl4DKgrxOt9lete0eD+mwNlqeMw/R6t4qRCv/5SgkIMSMQ0XOSQ3h4Ddm52NtgH6NaC2l9ovZrLhm+0AagrxusT31+zx2P+WHlTIQXXwZCwwakbRkKDqYzo2vfr1MhhFkMHSN0I86O96UM9pjb7PIU8DcqimnB0cY8Z/bwDlIhPzAt1QkvSc4iTmt/tgRAjynGFHHtRzyuTb7teDB2UnbPllknxe1evqKuYUfnflEaDczEUXe3Cx55XKQbGxEin8+D3y5XuuK5g9qBE34U1fsRf0/fz57lJTbHw1UMuO5n9Cogo5KOgPe1ABOGGQejat8FkTHBc2jd8RHMqsc1CxiT7Prp4LxDxDtJQ6s274uEUleQpQYriSsPg3cmVkq12VGUxLdf2FTedN+VB77uKM2/pSo8qDHn/JMoNQ1BRqm+y4Tjf9OHpQ9mvEzdfPy4XqafMdJ8ntmImy0asD4UZ7Qx0UAAX9DQ/qFfKsANVXTrNuX0mfFPb9Tjkb8s6+3wTCRDfO+3932/m6GuylBzWY6Bblwtp9V3vdJcHn3LkYw6el/zThcA7WUiFexyIl2HiE+Zh0t32BaIhAF4B6fZB/hVYi/KI/C50NNenLEE+FLxhdaiitCN/T9UWt0YbDMZqbCr8nx2f+sYfQZhVvqLqci84n0i2Ko0IdwdfiR+SgoL+irgRbrQHV+T1ajxvSuhrxbktMz4VuN5xSoaab6X4Fz3S4shGgzGiiy4r3pOmKwbt3zQefjB4SU/GulO488s1pBsk6qGGjsRqW/abIzA7X5NZbXfpL0MPiXvctuvf217BMkodLNdGlTt/TOhNqPuO9eOOC2kiUbzbkolYbX+YcVESf7/idXyPophKqaPfewjxyUNCfcaGs869BN+3sF+Nu4W5/2ljO6Pofwu9efofWfihmFF6r3mMZf7swodXLbxreJZSeDcYE6ljhWDgowOkRlHGiZ7o4K5YX+fr00SabgNRf7OLhesPb+kuYftF/i/ALu7zy7kuNv5psjt/T9YcmRHvx5iMHfr7jYzFZ9+N3+BUbzxvoTzgIvOl++z1WVPQ/DYcbTPZsb286pyA2z4Y/Gu1NdgEo6M+QKz4le3lkdvTD4Vnaqzetni81lUp1To/2vqs10mJOZWdf5Ok1scMLOvzNpTPDr9o/b5zkq+3OLQegIGit6Ezyzl97OUOz20J6JjkEQEFQthZnhS/cAzx3CoCCoN8eFvvPxcOTOwEoCPp9QqWfLAz/CYCCoN8fGN5ou8qdD4VNEAAFQb8t0RVbRYuC/TG8GC8AFATdxInS/fngnYTXxniMFgAKgm4jGx6jYuZjpiAACoJuNEC6cznd6nF2EAAFQRAEQEEQBEBBEAQBUBAEAVAQBEEAFARBABQEQRAABUEQBEBBEARAQRAEAVAQBAFQEARBABQEQRAABUEQAAVBEARAQRAEQEEQBAFQEARBSf0vwADDlXpZ+ZchVQAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_competitions_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+Y29lZmZpY2llbnQ9ICRyb3dbJ2NvZWZmaWNpZW50J107Cgkkb25lcm93LT5wYXJ0aWVzPSAkcm93WydwYXJ0aWVzJ107Cgkkb25lcm93LT5qb3VldXJzPSAkcm93Wydqb3VldXJzJ107Cgkkb25lcm93LT5pbmRpdnM9ICRyb3dbJ2luZGl2cyddOwoJJG9uZXJvdy0+ZWRpdGxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRfY29tcGV0JywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgJHRoaXMtPkxhbmcoJ2VkaXQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSkpOwoJLy8kb25lcm93LT5kZWxldGVsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWxldGVfdGVhbV9yZXN1bHQnLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSksICR0aGlzLT5MYW5nKCdkZWxldGVfcmVzdWx0X2NvbmZpcm0nKSk7CgkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIH0KICB9CmVsc2UgewoJZWNobyAiPHA+QXVjdW4gcsOpc3VsdGF0cyAhPC9wPiI7Cn0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Jlc3VsdHNmb3VuZCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7CiRzbWFydHktPmFzc2lnbignY3JlYXRlbGluaycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkZF9jb21wZXQnLCAkcmV0dXJuaWQsCgkJCQkgICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsICR0aGlzLT5MYW5nKCdhZGRfY29tcGV0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSkuCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRkX2NvbXBldCcsICRyZXR1cm5pZCwgCgkJCQkgICR0aGlzLT5MYW5nKCdhZGRfY29tcGV0JyksIAoJCQkJICBhcnJheSgpKSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2xpc3RfY29tcGV0LnRwbCcpOwoKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_joueurs_recup_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19maWxlX18pLicvaW5jbHVkZS90cmF2YXV4LnBocCcpOwokZGIgPSYgJHRoaXMtPkdldERiKCk7Cmdsb2JhbCAkdGhlbWVPYmplY3Q7Cgokc21hcnR5LT5hc3NpZ24oJ2lkJywgJHRoaXMtPkxhbmcoJ2lkJykpOwokc21hcnR5LT5hc3NpZ24oJ3VzZXJuYW1lJywgJ0pvdWV1cicpOwokc21hcnR5LT5hc3NpZ24oJ3BvaW50cycsICdQb2ludHMnKTsKJHNhaXNvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKJG1vaXNfY291cmFudCA9IGRhdGUoJ24nKTsKJGFubmVlX2NvdXJhbnRlID0gZGF0ZSgnWScpOwovLyRtb250aCA9IG1vaXNfZnJhbmNhaXMoIiRtb2lzX2NvdXJhbnQiKTsKLy9lY2hvICJsZSBtb2lzIGVuIGZyYW7Dp2FpcyA6ICIuJG1vbnRoOwovLyRzbWFydHktPmFzc2lnbignbW9pcy1lbi1mcmFuY2FpcycsICIkbW9udGgiKTsKJHNpdF9jb3VyYW50ZSA9ICdKdWluIDIwMTQnOwokc21hcnR5LT5hc3NpZ24oJ3NpdF9jb3VyYW50ZScsICIkc2l0X2NvdXJhbnRlIik7CiRzbWFydHktPmFzc2lnbignZGlzcGxheV91bmFibGVfcGxheWVycycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwnZGlzcGxheV91bmFibGVfcGxheWVycycsICRyZXR1cm5pZCwgJ2xpc3RlIGRlcyBqb3VldXJzIGluYWN0aWZzJykpOwoKCiRyZXN1bHQ9IGFycmF5ICgpOwovL1NFTEVDVCAqIEZST00gcGluZ19tb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIEFTIHJlYyByaWdodCBKT0lOIHBpbmdfbW9kdWxlX3Bpbmdfam91ZXVycyBBUyBqIE9OIGoubGljZW5jZSA9IHJlYy5saWNlbmNlICBPUkRFUiBCWSBqLmlkIEFTQwokcXVlcnk9ICJTRUxFQ1Qgai5pZCwgQ09OQ0FUX1dTKCcgJyxqLm5vbSwgai5wcmVub20pIEFTIGpvdWV1ciwgai5saWNlbmNlLCByZWMuc2l0X21lbnMsIHJlYy5mZnR0LCByZWMuc3BpZCwgai5hY3RpZiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIEFTIGogTEVGVCBKT0lOICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIEFTIHJlYyBPTiBqLmxpY2VuY2UgPSByZWMubGljZW5jZSBXSEVSRSBqLmFjdGlmID0gJzEnIEFORCAocmVjLnNhaXNvbiA9ID8gT1IgcmVjLnNhaXNvbiBJUyBOVUxMKSBPUkRFUiBCWSBqLmlkIEFTQyI7CmlmKCR0cmF2YXV4PT0ndHJ1ZScpe2VjaG8gJHF1ZXJ5O30KJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkc2Fpc29uKSk7CiRyb3djbGFzcz0gJ3JvdzEnOwokcm93YXJyYXk9IGFycmF5ICgpOwppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewoJJGFjdGlmID0gJHJvd1snYWN0aWYnXTsKCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCSRvbmVyb3ctPmlkPSAkcm93WydpZCddOwoJJG9uZXJvdy0+am91ZXVyPSAkcm93Wydqb3VldXInXTsKCSRvbmVyb3ctPmxpY2VuY2U9ICRyb3dbJ2xpY2VuY2UnXTsKCS8vJG9uZXJvdy0+YWN0aXZlPSAoJHJvd1snYWN0aXZlJ10gPT0gMSkgPyAkdGhpcy0+TGFuZygneWVzJykgOiAnJzsKCSRvbmVyb3ctPnNpdF9tZW5zPSAkcm93WydzaXRfbWVucyddOwoJJG9uZXJvdy0+ZmZ0dD0gJHJvd1snZmZ0dCddOwoJJG9uZXJvdy0+c3BpZD0gJHJvd1snc3BpZCddOwoJJG9uZXJvdy0+ZG9lZGl0PSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0X2pvdWV1cicsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSksICRyb3cpOwoJaWYoJHJvd1snYWN0aWYnXSA9PScxJyl7CgkJJG9uZXJvdy0+ZWRpdGxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3VuYWJsZV9wbGF5ZXInLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCAkdGhpcy0+TGFuZygndW5hYmxlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJfSAKCWVsc2UgewoJCSRvbmVyb3ctPmVkaXRsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlbmFibGVfcGxheWVyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICR0aGlzLT5MYW5nKCdlbmFibGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgl9CgkvLyRvbmVyb3ctPmVkaXRsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICd1bmFibGVfcGxheWVyJywgJHJldHVybmlkLCAnRMOpc2FjdGl2ZXInLGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgkkb25lcm93LT5zaXRtZW5zbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfc2l0X21lbnMnLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZG93bmxvYWQuZ2lmJywgJHRoaXMtPkxhbmcoJ3JldHJpZXZlX3NpdF9tZW5zJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSkuCiR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3NpdF9tZW5zJywgJHJldHVybmlkLCAKCSAgJHRoaXMtPkxhbmcoJ3JldHJpZXZlX3NpdF9tZW5zJyksIGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgkkb25lcm93LT5nZXRwYXJ0aWVzbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfcGFydGllcycsICRyZXR1cm5pZCwgJ1BhcnRpZXMgZGlzcHV0w6llcycsIGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgkkb25lcm93LT5nZXRwYXJ0aWVzc3BpZD0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfcGFydGllc19zcGlkJywgJHJldHVybmlkLCAnUGFydGllcyBTUElEJywgYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pKTsKCSRvbmVyb3ctPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZV9qb3VldXInLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSksICR0aGlzLT5MYW5nKCdkZWxldGVfcmVzdWx0X2NvbmZpcm0nKSk7CgkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIH0KICB9CiRzbWFydHktPmFzc2lnbignYmFyY2hhcnRzJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdiYXJjaGFydHMnLCAkcmV0dXJuaWQsICdWb2lyIGdyYXBoaXF1ZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtc2ZvdW5kJywgJHRoaXMtPkxhbmcoJ3Jlc3VsdHNmb3VuZHRleHQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwokc21hcnR5LT5hc3NpZ24oJ3JldHJpZXZlX3VzZXJzJywgCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfdXNlcnMnLCAkcmV0dXJuaWQsJ1LDqWN1cMOpcmF0aW9uIGRlIHRvdXMgbGVzIGpvdWV1cnMnKSk7Ci8qCiRzbWFydHktPmFzc2lnbignY3JlYXRlbGluaycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2NyZWF0ZV9uZXdfdXNlcjMnLCAkcmV0dXJuaWQsCgkJCQkgICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsICR0aGlzLT5MYW5nKCdhZGRuZXdzaGVldCcpLCAnJywgJycsICdzeXN0ZW1pY29uJykpLgoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2NyZWF0ZV9uZXdfdXNlcjMnLCAkcmV0dXJuaWQsIAoJCQkJICAkdGhpcy0+TGFuZygnYWRkbmV3c2hlZXQnKSwgCgkJCQkgIGFycmF5KCkpKTsKKi8KJHNtYXJ0eS0+YXNzaWduKCdmb3JtMnN0YXJ0JywKCQkkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnbWFzc19hY3Rpb24nLCRyZXR1cm5pZCkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm0yZW5kJywKCQkkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCQkkYXJ0aWNsZXMgPSBhcnJheSgiRMOpc2FjdGl2ZXIiPT4idW5hYmxlIiwiUsOpY3Vww6lyZXIgc2l0dWF0aW9uIG1lbnN1ZWxsZSI9PiJzaXR1YXRpb24iLCAiUsOpY3Vww6lyZXIgbGVzIHBhcnRpZXMgZHUgU3BpZCI9PiJzcGlkIik7CiRzbWFydHktPmFzc2lnbignYWN0aW9uZGVtYXNzZScsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdhY3Rpb25kZW1hc3NlJywkYXJ0aWNsZXMpKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRfbWFzc2FjdGlvbicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0X21hc3NhY3Rpb24nLCR0aGlzLT5MYW5nKCdhcHBseV90b19zZWxlY3Rpb24nKSwnJywnJywkdGhpcy0+TGFuZygnYXJleW91c3VyZV9hY3Rpb25tdWx0aXBsZScpKSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3JlY3VwcGFydGllcy50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_joueurs_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKZ2xvYmFsICR0aGVtZU9iamVjdDsKCiRzbWFydHktPmFzc2lnbignaWQnLCAkdGhpcy0+TGFuZygnaWQnKSk7CiRzbWFydHktPmFzc2lnbigndXNlcm5hbWUnLCAnSm91ZXVyJyk7CiRzbWFydHktPmFzc2lnbigncG9pbnRzJywgJ1BvaW50cycpOwoKCiRyZXN1bHQ9IGFycmF5ICgpOwokcXVlcnk9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIE9SREVSIEJZIGlkIEFTQyI7CiRkYnJlc3VsdD0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiRyb3djbGFzcz0gJ3JvdzEnOwokcm93YXJyYXk9IGFycmF5ICgpOwppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewoJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7Cgkkb25lcm93LT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJJG9uZXJvdy0+aWQ9ICRyb3dbJ2lkJ107Cgkkb25lcm93LT5ub209ICRyb3dbJ25vbSddOwoJJG9uZXJvdy0+cHJlbm9tPSAkcm93WydwcmVub20nXTsKCSRvbmVyb3ctPmlkPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0X2pvdWV1cnMnLCAkcmV0dXJuaWQsICRyb3dbJ2lkJ10sYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pLCAkcm93KTsKCSRvbmVyb3ctPmVkaXRsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0X2pvdWV1cicsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSkpOwoJJG9uZXJvdy0+c2l0bWVuc2xpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3NpdF9tZW5zJywgJHJldHVybmlkLCAnU2l0dWF0aW9uIG1lbnN1ZWxsZScsIGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgkkb25lcm93LT5nZXRwYXJ0aWVzbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfcGFydGllcycsICRyZXR1cm5pZCwgJ1BhcnRpZXMgZGlzcHV0w6llcycsIGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgkkb25lcm93LT5nZXRwYXJ0aWVzc3BpZD0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfcGFydGllc19zcGlkJywgJHJldHVybmlkLCAnUGFydGllcyBTUElEJywgYXJyYXkoJ2xpY2VuY2UnPT4kcm93WydsaWNlbmNlJ10pKTsKCSRvbmVyb3ctPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZV9qb3VldXInLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSksICR0aGlzLT5MYW5nKCdkZWxldGVfcmVzdWx0X2NvbmZpcm0nKSk7CgkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIH0KICB9CiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKCiRzbWFydHktPmFzc2lnbignY3JlYXRlbGluaycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2NyZWF0ZV9uZXdfdXNlcjMnLCAkcmV0dXJuaWQsCgkJCQkgICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsICR0aGlzLT5MYW5nKCdhZGRuZXdzaGVldCcpLCAnJywgJycsICdzeXN0ZW1pY29uJykpLgoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2NyZWF0ZV9uZXdfdXNlcjMnLCAkcmV0dXJuaWQsIAoJCQkJICAkdGhpcy0+TGFuZygnYWRkbmV3c2hlZXQnKSwgCgkJCQkgIGFycmF5KCkpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnam91ZXVyc0xpc3QudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/function.admin_options_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwovL29uIHbDqXJpZmllIGxlcyBkcm9pdHMgZGUgY2V0IHV0aWxpc2F0ZXVyCmlmKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFVzZScpICYmICEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFNldCBQcmVmcycpKXsKCSRtZXNzYWdlID0gIlZvdXMgblwnYXZleiBwYXMgbGVzIGF1dG9yaXNhdGlvbnMgcG91ciBhY2PDqWRlciBhdXggcHLDqWbDqXJlbmNlcyI7CgkkdGhpcy0+U2V0TWVzc2FnZSgiJG1lc3NhZ2UiKTsKCSR0aGlzLT5SZWRpcmVjdFRvQWRtaW5UYWIoJ2pvdWV1cnMnKTsKfQogIC8vIENyZWF0ZUZvcm1TdGFydCBzZXRzIHVwIGEgcHJvcGVyIGZvcm0gdGFnIHRoYXQgd2lsbCBjYXVzZSB0aGUgc3VibWl0IHRvCiAgLy8gcmV0dXJuIGNvbnRyb2wgdG8gdGhpcyBtb2R1bGUgZm9yIHByb2Nlc3NpbmcuCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCAoJGlkLCAndXBkYXRlb3B0aW9ucycsICRyZXR1cm5pZCkpOwokc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCAoKSk7CiRzbWFydHktPmFzc2lnbigndGl0bGVfY2x1Yl9udW1iZXInLCR0aGlzLT5MYW5nKCd0aXRsZV9jbHViX251bWJlcicpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jbHViX251bWJlcicsJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2NsdWJfbnVtYmVyJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY2x1Yl9udW1iZXInLCcnKSw1MCwyNTUpKTsKJHNhaXNvbl9lbmNvdXJzID0gKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fcmVmZXJlbmNlJykpID8gICcyMDEzLTIwMTQnIDogJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9yZWZlcmVuY2UnKTsKLy8kc21hcnR5LT5hc3NpZ24oJ3RpdGxlX2Zvcm1zdWJtaXRfZW1haWxhZGRyZXNzJywkdGhpcy0+TGFuZygnZm9ybXN1Ym1pdF9lbWFpbGFkZHJlc3MnKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfcGhhc2UnLCR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCdwaGFzZV9lbl9jb3VycycsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BoYXNlX2VuX2NvdXJzJywnMScpLDUwLDI1NSkpOwovLyRzbWFydHktPmFzc2lnbigndGl0bGVfZW1haWxfc3ViamVjdCcsJHRoaXMtPkxhbmcoJ2VtYWlsX3N1YmplY3QnKSk7CiRpdGVtcyA9IGFycmF5KCk7CiRpdGVtc1snT3VpJ10gPSAnT3VpJzsKJGl0ZW1zWydOb24nXSA9ICdOb24nOwokc2Fpc29uZHJvcGRvd24gPSBhcnJheSgpOwokc2Fpc29uZHJvcGRvd25bJzIwMTMtMjAxNCddID0gJzIwMTMtMjAxNCc7CiRzYWlzb25kcm9wZG93blsnMjAxNC0yMDE1J10gPSAnMjAxNC0yMDE1JzsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zYWlzb25fZW5fY291cnMnLCR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnc2Fpc29uX2VuX2NvdXJzJywkc2Fpc29uZHJvcGRvd24sLTEsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpLDUwLDI1NSkpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X25vbV9lcXVpcGVzJywgCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdub21fZXF1aXBlcycsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdub21fZXF1aXBlcycsICcnKSwgNTAsMjUwKSk7CiRzbWFydHktPmFzc2lnbignam91cl9zaXRfbWVucycsCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsJ2pvdXJfc2l0X21lbnMnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnam91cl9zaXRfbWVucycsICcnKSwgNSwgNykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3BvcHVsYXRlX2NhbGVuZGFyJywkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3BvcHVsYXRlX2NhbGVuZGFyJywkaXRlbXMsLTEsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3BvcHVsYXRlX2NhbGVuZGFyJyksNTAsMjU1KSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfYWZmaWNoZV9jbHViX3VuaXF1ZW1lbnQnLCR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnYWZmaWNoZV9jbHViX3VuaXF1ZW1lbnQnLCRpdGVtcywtMSwkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWZmaWNoZV9jbHViX3VuaXF1ZW1lbnQnKSw1MCwyNTUpKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQgKCRpZCwgJ29wdGlvbnNzdWJtaXRidXR0b24nLCAkdGhpcy0+TGFuZygnc3VibWl0JykpKTsKCi8vIERpc3BsYXkgdGhlIHBvcHVsYXRlZCB0ZW1wbGF0ZQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUgKCdhZG1pbnByZWZzLnRwbCcpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_parties_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKZ2xvYmFsICR0aGVtZU9iamVjdDsKCiRzbWFydHktPmFzc2lnbignaWQnLCAkdGhpcy0+TGFuZygnaWQnKSk7CiRzbWFydHktPmFzc2lnbigndXNlcm5hbWUnLCAnSm91ZXVyJyk7CiRzbWFydHktPmFzc2lnbigncG9pbnRzJywgJ1BvaW50cycpOwoKCiRyZXN1bHQ9IGFycmF5ICgpOwokcXVlcnk9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIE9SREVSIEJZIGlkIEFTQyI7CiRkYnJlc3VsdD0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiRyb3djbGFzcz0gJ3JvdzEnOwokcm93YXJyYXk9IGFycmF5ICgpOwppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewoJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7Cgkkb25lcm93LT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJJG9uZXJvdy0+aWQ9ICRyb3dbJ2lkJ107Cgkkb25lcm93LT5ub209ICRyb3dbJ25vbSddOwoJJG9uZXJvdy0+cHJlbm9tPSAkcm93WydwcmVub20nXTsKCS8vJG9uZXJvdy0+cHRzPSAkcm93WydwdHMnXTsKCS8vJG9uZXJvdy0+ZXF1aXBlPSAkdGhpcy0+Y3JlYXRlTGluaygkaWQsICd2aWV3c3RlYW1yZXN1bHQnLCAkcmV0dXJuaWQsICRyb3dbJ2VxdWlwZSddLGFycmF5KCdlcXVpcGUnPT4kcm93WydlcXVpcGUnXSksJHJvdykgOwovLwkkb25lcm93LT5qb3VldXI9ICRyb3dbJ2pvdWV1ciddOwoJCgkKCS8qCQoJJG9uZXJvdy0+Y29tbXVuZT0gJHJvd1snY29tbXVuZSddOwoJJG9uZXJvdy0+ZW1haWw9ICRyb3dbJ2VtYWlsJ107Cgkkb25lcm93LT50cmFuY2hlPSAkcm93Wyd0cmFuY2hlJ107Cgkkb25lcm93LT5hY3RpdmU9ICgkcm93WydhY3RpdmUnXSA9PSAxKSA/ICR0aGlzLT5MYW5nKCd5ZXMnKSA6ICcnOwoJKi8KCSRvbmVyb3ctPmlkPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0X2pvdWV1cnMnLCAkcmV0dXJuaWQsICRyb3dbJ2lkJ10sYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pLCAkcm93KTsKCSRvbmVyb3ctPmVkaXRsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0X2pvdWV1cicsICRyZXR1cm5pZCwgJHRoZW1lT2JqZWN0LT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSxhcnJheSgncmVjb3JkX2lkJz0+JHJvd1snaWQnXSkpOwoJJG9uZXJvdy0+c2l0bWVuc2xpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3NpdF9tZW5zJywgJHJldHVybmlkLCAnU2l0dWF0aW9uIG1lbnN1ZWxsZScsIGFycmF5KCdsaWNlbmNlJz0+JHJvd1snbGljZW5jZSddKSk7Cgkkb25lcm93LT5kZWxldGVsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWxldGVfam91ZXVyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pLCAkdGhpcy0+TGFuZygnZGVsZXRlX3Jlc3VsdF9jb25maXJtJykpOwoJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCSRyb3dhcnJheVtdPSAkb25lcm93OwogICAgICB9CiAgfQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7CiRzbWFydHktPmFzc2lnbignY3JlYXRlbGluaycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2NyZWF0ZV9uZXdfdXNlcjMnLCAkcmV0dXJuaWQsCgkJCQkgICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsICR0aGlzLT5MYW5nKCdhZGRuZXdzaGVldCcpLCAnJywgJycsICdzeXN0ZW1pY29uJykpLgoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2NyZWF0ZV9uZXdfdXNlcjMnLCAkcmV0dXJuaWQsIAoJCQkJICAkdGhpcy0+TGFuZygnYWRkbmV3c2hlZXQnKSwgCgkJCQkgIGFycmF5KCkpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnam91ZXVyc0xpc3QudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/function.admin_poules_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwpyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9pbmNsdWRlL3RyYXZhdXgucGhwJyk7Cgokc2Fpc29uID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NhaXNvbl9lbl9jb3VycycpOwovKiBvbiBmYWl0IHVuIGZvcm11bGFpcmUgZGUgZmlsdHJhZ2UgZGVzIHLDqXN1bHRhdHMqLwovKiovCiRzbWFydHktPmFzc2lnbignZm9ybXN0YXJ0JywkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnYWRtaW5fcG91bGVzX3RhYicpKTsgIAovLyR0b3VybGlzdCA9IGFycmF5KDAgPT4iMCIsMSA9PiIxIiwyID0+IjIiLDMgPT4iMyIsNCA9PidBbGwnKTsKLy8kdHlwZUNvbXBldGl0aW9uID0gYXJyYXkoKTsKJHBvdWxlc2xpc3QgPSBhcnJheSgpOwokcG91bGVzbGlzdFskdGhpcy0+TGFuZygnYWxscG91bGVzJyldID0gJyc7Ci8vJGFsbGVxdWlwZXMgPSAgKCBpc3NldCggJHBhcmFtc1snYWxsZXF1aXBlcyddICk/JHBhcmFtc1snYWxsZXF1aXBlcyddOidubycpOwoKLy8kZXF1aXBlbGlzdFskdGhpcy0+TGFuZygnYWxsZXF1aXBlcycpXSA9ICcnOwoKJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgV0hFUkUgc2Fpc29uID0gPyI7CiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHNhaXNvbikpOwplY2hvICRxdWVyeTsKd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQogIHsKICAgICRwb3VsZXNsaXN0WyRyb3dbJ2lkcG91bGUnXV0gPSAkcm93WydsaWJkaXZpc2lvbiddOwogICAgLy8kZXF1aXBlbGlzdFskcm93WydlcXVpcGUnXV0gPSAkcm93WydlcXVpcGUnXTsKICAgIC8vJHR5cGVDb21wZXRpdGlvblskcm93WyduYW1lJ11dID0gJHJvd1sndHlwZV9jb21wZXQnXTsKICB9CgppZiggaXNzZXQoJHBhcmFtc1snc3VibWl0ZmlsdGVyJ10pICkKICB7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ3BvdWxlc2xpc3QnXSkgKQogICAgICB7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgncG91bGVDaG9pc2knLCAkcGFyYW1zWydwb3VsZXNsaXN0J10pOwogICAgICB9Ci8qCiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ2VxdWlwZWxpc3QnXSkpCgl7CgkkdGhpcy0+U2V0UHJlZmVyZW5jZSggJ2VxdWlwZUNob2lzaWUnLCAkcGFyYW1zWydlcXVpcGVsaXN0J10pOwoJfQogICAgaWYoIGlzc2V0KCAkcGFyYW1zWyd0eXBlQ29tcGV0J10pKQoJCXsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSggJ2NvbXBldENob2lzaWUnLCAkcGFyYW1zWyd0eXBlQ29tcGV0J10pOwoJCX0KKi8KfQokY3VycG91bGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ3BvdWxlQ2hvaXNpJyApOwovLyRjdXJlcXVpcGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ2VxdWlwZUNob2lzaWUnICk7Ci8vJGN1cmNvbXBldCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjb21wZXRDaG9pc2llJyk7Cgokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2NvbXBldCcsCgkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCd0eXBlQ29tcGV0JywkdHlwZUNvbXBldGl0aW9uLC0xLCRjdXJjb21wZXQpKTsKCiRzbWFydHktPmFzc2lnbigncHJvbXB0X3RvdXInLAoJCSR0aGlzLT5MYW5nKCd0b3VyJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3RvdXInLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwncG91bGVzbGlzdCcsJHBvdWxlc2xpc3QsLTEsJGN1cnBvdWxlKSk7CgkJJHNtYXJ0eS0+YXNzaWduKCdwcm9tcHRfZXF1aXBlJywKCQkJCSR0aGlzLT5MYW5nKCdlcXVpcGUnKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfZXF1aXBlJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ2VxdWlwZWxpc3QnLCRlcXVpcGVsaXN0LC0xLCRjdXJlcXVpcGUpKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXRmaWx0ZXInLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdGZpbHRlcicsJHRoaXMtPkxhbmcoJ2ZpbHRyZXMnKSkpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKCiRzbWFydHktPmFzc2lnbignaWQnLCAkdGhpcy0+TGFuZygnaWQnKSk7CiRzbWFydHktPmFzc2lnbignZXF1aXBlJywgJ0VxdWlwZXMnKTsKJHNtYXJ0eS0+YXNzaWduKCd0b3VyJywgJ1RvdXInKTsKJHNtYXJ0eS0+YXNzaWduKCdzY29yZScsICdTY29yZScpOwokc21hcnR5LT5hc3NpZ24oJ2FkdmVyc2FpcmVzJywgJ0FkdmVyc2FpcmVzJyk7CgokcmVzdWx0PSBhcnJheSAoKTsKJHF1ZXJ5ID0gIlNFTEVDVCAqLCAgZXEubGliZXF1aXBlIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzIEFTIHJlbiwgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgQVMgZXEgV0hFUkUgZXEuaWRwb3VsZSA9IHJlbi5pZHBvdWxlICBBTkQgcmVuLnNhaXNvbiA9IGVxLnNhaXNvbiBBTkQgZXEuc2Fpc29uID0gPyI7CiRwYXJtc1snc2Fpc29uX2VuX2NvdXJzJ10gPSAkc2Fpc29uOwplY2hvICRxdWVyeTsKaWYoIGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdGZpbHRlciddICkpewppZiAoJGN1cnBvdWxlICE9JycpCnsKCSRxdWVyeSAuPSIgQU5EIGlkcG91bGUgPSA/IjsKCSRwYXJtc1snaWRwb3VsZSddID0gJGN1cnBvdWxlOwoJCQp9CmVsc2UgewoJJHF1ZXJ5Lj0iIEFORCBpZHBvdWxlID4gMCAiOwoJJHBhcm1zID0nJzsKfQovKgppZiggJGN1cmVxdWlwZSAhPSAnJyl7CgkkcXVlcnkgLj0iIEFORCByZW4uZXF1aXBlID0gPyAiOwoJJHBhcm1zWydlcXVpcGUnXSA9ICRjdXJlcXVpcGU7CgkKfQppZigkY3VyY29tcGV0ICE9ICcnKQp7CgkkcXVlcnkuPSIgQU5EIHJlbi50eXBlX2NvbXBldCA9ID8iOwoJJHBhcm1zWyd0eXBlX2NvbXBldCddID0gJGN1cmNvbXBldDsKfQplbHNlCnsKCSRxdWVyeS49IiBBTkQgdHlwZV9jb21wZXQgTElLRSAnJSciOwoJJHBhcm1zID0gJyc7Cn0KKi8KJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCRwYXJtcyk7Cn0KCgoKCmVsc2UgewoJLy8kcXVlcnkgLj0iIE9SREVSIEJZIGlkIEFTQyI7CgkkZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnksJHBhcm1zKTsKfQoKaWYoJHRyYXZhdXg9PSd0cnVlJyl7ZWNobyAkcXVlcnk7fQokcm93YXJyYXk9IGFycmF5ICgpOwppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewoJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7Cgkkb25lcm93LT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJJG9uZXJvdy0+aWQ9ICRyb3dbJ2lkJ107CgkkZXF1YiA9ICRyb3dbJ2VxdWInXTsKCSRlcXVhID0gJHJvd1snZXF1YSddOwoJJGZyaWVuZGx5bmFtZSA9ICRyb3dbJ2ZyaWVuZGx5bmFtZSddOwoJJGxpYmVxdWlwZSA9ICRyb3dbJ2xpYmVxdWlwZSddOwoJJHVwbG9hZGVkID0gJHJvd1sndXBsb2FkZWQnXTsKCQoJCgkvLyRvbmVyb3ctPmVxdWlwZT0gJHJvd1snZXF1aXBlJ107Cgkkb25lcm93LT5saWJlbGxlPSAkdGhpcy0+Y3JlYXRlTGluaygkaWQsICd2aWV3dGVhbXJlc3VsdCcsICRyZXR1cm5pZCwgJHJvd1snbGliZWxsZSddLGFycmF5KCdjbGUnPT4kcm93WydsaWVuJ10pKSA7CglpZihpc3NldCgkZnJpZW5kbHluYW1lKSAmJiAkZnJpZW5kbHluYW1lICE9JycpCgl7CgkJaWYgKCRsaWJlcXVpcGUgPT0gJGVxdWEpCgkJewoJCQkkb25lcm93LT5lcXVhPSAkcm93WydmcmllbmRseW5hbWUnXTsKCQl9CgkJCgl9CgllbHNlewoJCSRvbmVyb3ctPmVxdWE9ICRyb3dbJ2VxdWEnXTsKCX0KCSRvbmVyb3ctPnNjb3JlYT0gJHJvd1snc2NvcmVhJ107Cgkkb25lcm93LT5zY29yZWI9ICRyb3dbJ3Njb3JlYiddOwoJaWYoaXNzZXQoJGZyaWVuZGx5bmFtZSkgJiYgJGZyaWVuZGx5bmFtZSAhPScnKQoJewoJCWlmICgkbGliZXF1aXBlID09ICRlcXViKQoJCXsKCQkJJG9uZXJvdy0+ZXF1Yj0gJHJvd1snZnJpZW5kbHluYW1lJ107CgkJfQoJCQoJfQoJZWxzZXsKCQkkb25lcm93LT5lcXViPSAkcm93WydlcXViJ107Cgl9CgkvKgkKCSRvbmVyb3ctPmNvbW11bmU9ICRyb3dbJ2NvbW11bmUnXTsKCSRvbmVyb3ctPmVtYWlsPSAkcm93WydlbWFpbCddOwoJJG9uZXJvdy0+dHJhbmNoZT0gJHJvd1sndHJhbmNoZSddOwoJJG9uZXJvdy0+YWN0aXZlPSAoJHJvd1snYWN0aXZlJ10gPT0gMSkgPyAkdGhpcy0+TGFuZygneWVzJykgOiAnJzsKCSovCgkvLyRvbmVyb3ctPmVxdWlwZT0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnY3JlYXRlX25ld191c2VyJywgJHJldHVybmlkLCAkcm93WydlcXVpcGUnXSwgJHJvdyk7CglpZigkdXBsb2FkZWQgPT0gJzAnKXsKCQkkb25lcm93LT5yZXRyaWV2ZV9wb3VsZV9yZW5jb250cmVzPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9kZXRhaWxzX3JlbmNvbnRyZXMnLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZmFsc2UuZ2lmJywgJHRoaXMtPkxhbmcoJ3VwbG9hZF9yZXN1bHQnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgnaWRwb3VsZSc9PiRyb3dbJ2lkcG91bGUnXSwgJ2lkZGl2Jz0+JHJvd1snaWRkaXYnXSkpOwoJfQoJZWxzZQoJewoJCQkJJG9uZXJvdy0+cmV0cmlldmVfcG91bGVfcmVuY29udHJlcz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfZGV0YWlsX3JlbmNvbnRyZXMnLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnLCAkdGhpcy0+TGFuZygndXBsb2FkX3Jlc3VsdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdpZHBvdWxlJz0+JHJvd1snaWRwb3VsZSddLCAnaWRkaXYnPT4kcm93WydpZGRpdiddKSk7Cgl9JG9uZXJvdy0+ZGVsZXRlbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGVsZXRlX3RlYW1fcmVzdWx0JywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pLCAkdGhpcy0+TGFuZygnZGVsZXRlX3Jlc3VsdF9jb25maXJtJykpOwoJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCSRyb3dhcnJheVtdPSAkb25lcm93OwogICAgICB9CiAgfQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygnc2hlZXRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKJHNtYXJ0eS0+YXNzaWduKCdjcmVhdGVsaW5rJywgCgkJJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncmV0cmlldmVfYWxsX3BvdWxlX3JlbmNvbnRyZXMnLCAkcmV0dXJuaWQsCgkJCQkgICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vaW1wb3J0LmdpZicsICR0aGlzLT5MYW5nKCdkb3dubG9hZF9hbGxfcG91bGVfcmVzdWx0cycpLCAnJywgJycsICdzeXN0ZW1pY29uJykpLgoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX2FsbF9wb3VsZV9yZW5jb250cmVzJywgJHJldHVybmlkLCAKCQkJCSAgJHRoaXMtPkxhbmcoJ2Rvd25sb2FkX2FsbF9wb3VsZV9yZXN1bHRzJyksIAoJCQkJICBhcnJheSgpKSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3BvdWxlc1JlbmNvbnRyZXMudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/function.admin_situation_mensuelle_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKZ2xvYmFsICR0aGVtZU9iamVjdDsKCiRzbWFydHktPmFzc2lnbignaWQnLCAkdGhpcy0+TGFuZygnaWQnKSk7CiRzbWFydHktPmFzc2lnbigndXNlcm5hbWUnLCAnSm91ZXVyJyk7CiRzbWFydHktPmFzc2lnbigncG9pbnRzJywgJ1BvaW50cycpOwovLyRhY3Rpb24gPSAoZW1wdHkoJF9QT1NUWydhY3Rpb24nXSkpID8gJ2RlZmF1bHQnIDogJF9QT1NUWydhY3Rpb24nXTsKJG1vaXMgPSA3OwokbW9pc19jb3VyYW50ID0gZGF0ZSgnbicpOwokYW5uZWVfY291cmFudGUgPSBkYXRlKCdZJyk7Ci8vJG1vaXNfcHJlZiA9JHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRNb250aFNpdE1lbnMnLCAnNicpOwoKJG1vaXNfcHJlZiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWZhdWx0TW9udGhTaXRNZW5zJyk7Ci8vZWNobyAibGUgbW9pcyBwcmVmIGVzdCA6ICIuJG1vaXNfcHJlZjsKJG1vaXMgPSAoIWVtcHR5KCRtb2lzX3ByZWYpKSA/ICRtb2lzX3ByZWYgOiAkbW9pc19jb3VyYW50OwovL2VjaG8gImxlIG1vaXMgcmV0ZW51IGVzdCA6ICIuJG1vaXM7CgokcmVzdWx0PSBhcnJheSAoKTsKJHF1ZXJ5PSAiU0VMRUNUIGoubGljZW5jZSxzbS5pZCxzbS5tb2lzLHNtLnBvaW50cywgc20uYW5uZWUsIENPTkNBVF9XUygnICcsIGoubm9tLCBqLnByZW5vbSkgQVMgam91ZXVyLCBzbS5wcm9nbW9pcywgc20uY2xuYXQsIHNtLnJhbmdyZWcsIHNtLnJhbmdkZXAgIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgQVMgaiBMRUZUIEpPSU4gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIEFTIHNtIE9OIGoubGljZW5jZSA9IHNtLmxpY2VuY2UgV0hFUkUgai5hY3RpZiA9ICcxJyBBTkQgKHNtLm1vaXMgPSA/IE9SIHNtLm1vaXMgSVMgTlVMTCkgQU5EIChzbS5hbm5lZSA9ID8gT1Igc20uYW5uZWUgSVMgTlVMTCkgT1JERVIgQlkgam91ZXVyIEFTQyI7CmVjaG8gJHF1ZXJ5OwokZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJG1vaXNfY291cmFudCwgJGFubmVlX2NvdXJhbnRlKSk7CiRyb3djbGFzcz0gJ3JvdzEnOwokcm93YXJyYXk9IGFycmF5ICgpOwppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewoJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7Cgkkb25lcm93LT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJJG9uZXJvdy0+aWQ9ICRyb3dbJ2lkJ107Cgkkb25lcm93LT5saWNlbmNlPSAkcm93WydsaWNlbmNlJ107Cgkkb25lcm93LT5tb2lzPSAkcm93Wydtb2lzJ107Cgkkb25lcm93LT5hbm5lZT0gJHJvd1snYW5uZWUnXTsKCSRvbmVyb3ctPnBvaW50cz0gJHJvd1sncG9pbnRzJ107Cgkkb25lcm93LT5jbG5hdD0gJHJvd1snY2xuYXQnXTsKCSRvbmVyb3ctPnJhbmdyZWc9ICRyb3dbJ3JhbmdyZWcnXTsKCSRvbmVyb3ctPnJhbmdkZXA9ICRyb3dbJ3JhbmdkZXAnXTsKCSRvbmVyb3ctPnByb2dtb2lzPSAkcm93Wydwcm9nbW9pcyddOwoJJG9uZXJvdy0+ZXF1aXBlPSAkdGhpcy0+Y3JlYXRlTGluaygkaWQsICd2aWV3c3RlYW1yZXN1bHQnLCAkcmV0dXJuaWQsICRyb3dbJ2VxdWlwZSddLGFycmF5KCdlcXVpcGUnPT4kcm93WydlcXVpcGUnXSksJHJvdykgOwoJJG9uZXJvdy0+am91ZXVyPSAkcm93Wydqb3VldXInXTsKCQoJCgkvKgkKCSRvbmVyb3ctPmNvbW11bmU9ICRyb3dbJ2NvbW11bmUnXTsKCSRvbmVyb3ctPmVtYWlsPSAkcm93WydlbWFpbCddOwoJJG9uZXJvdy0+dHJhbmNoZT0gJHJvd1sndHJhbmNoZSddOwoJJG9uZXJvdy0+YWN0aXZlPSAoJHJvd1snYWN0aXZlJ10gPT0gMSkgPyAkdGhpcy0+TGFuZygneWVzJykgOiAnJzsKCSovCgkkb25lcm93LT5pZD0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF9qb3VldXJzJywgJHJldHVybmlkLCAkcm93WydpZCddLGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSwgJHJvdyk7Cgkkb25lcm93LT5lZGl0bGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdF9qb3VldXInLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pKTsKCSRvbmVyb3ctPnNpdG1lbnNsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9zaXRfbWVucycsICRyZXR1cm5pZCwgJ1NpdHVhdGlvbiBtZW5zdWVsbGUnLCBhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJJG9uZXJvdy0+Z2V0cGFydGllc2xpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3BhcnRpZXMnLCAkcmV0dXJuaWQsICdQYXJ0aWVzIGRpc3B1dMOpZXMnLCBhcnJheSgnbGljZW5jZSc9PiRyb3dbJ2xpY2VuY2UnXSkpOwoJJG9uZXJvdy0+ZGVsZXRlbGluaz0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGVsZXRlX3NpdF9tZW5zJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pLCAkdGhpcy0+TGFuZygnZGVsZXRlX2NvbmZpcm0nKSk7CgkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIH0KICB9CiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdyZXN1bHRzZm91bmR0ZXh0JykpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRyb3dhcnJheSkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHJvd2FycmF5KTsKJHNtYXJ0eS0+YXNzaWduKCdyZXRyaWV2ZWFsbHNpdG1lbnMnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwncmV0cmlldmVfYWxsX3NpdF9tZW5zJywgJHJldHVybmlkLCAnUsOpY3Vww6lyZXIgdG91dGVzIGxlcyBzaXR1YXRpb25zIG1lbnN1ZWxsZXMnKSk7CiRzbWFydHktPmFzc2lnbignbWlzc2luZ19zaXRfbWVucycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ21pc3Npbmdfc2l0X21lbnMnLCAkcmV0dXJuaWQsICdMZXMgc2l0dWF0aW9ucyBtYW5xdWFudGVzJykpOwoJCSRzbWFydHktPmFzc2lnbignZm9ybTJzdGFydCcsCgkJCQkkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwnbWFzc19hY3Rpb24nLCRyZXR1cm5pZCkpOwoJCSRzbWFydHktPmFzc2lnbignZm9ybTJlbmQnLAoJCQkJJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CgkJCQkkYXJ0aWNsZXMgPSBhcnJheSgiRMOpc2FjdGl2ZXIiPT4idW5hYmxlIiwiUsOpY3Vww6lyZXIgc2l0dWF0aW9uIG1lbnN1ZWxsZSI9PiJzaXR1YXRpb24iKTsKCQkkc21hcnR5LT5hc3NpZ24oJ2FjdGlvbmRlbWFzc2UnLAoJCQkJJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCdhY3Rpb25kZW1hc3NlJywkYXJ0aWNsZXMpKTsKCQkkc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdF9tYXNzYWN0aW9uJywKCQkJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJ3N1Ym1pdF9tYXNzYWN0aW9uJywkdGhpcy0+TGFuZygnYXBwbHlfdG9fc2VsZWN0aW9uJyksJycsJycsJHRoaXMtPkxhbmcoJ2FyZXlvdXN1cmVfYWN0aW9ubXVsdGlwbGUnKSkpOwoJCQkJICAKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWxsc2l0bWVucy50cGwnKTsKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_teams_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0OwovL2RlYnVnX2Rpc3BsYXkoJHBhcmFtcywgJ1BhcmFtZXRlcnMnKTsKJHNhaXNvbl9jb3VyYW50ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKLyogb24gZmFpdCB1biBmb3JtdWxhaXJlIGRlIGZpbHRyYWdlIGRlcyByw6lzdWx0YXRzKi8KLyoKJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCdkZWZhdWx0YWRtaW4nKSk7ICAKLy8kdG91cmxpc3QgPSBhcnJheSgwID0+IjAiLDEgPT4iMSIsMiA9PiIyIiwzID0+IjMiLDQgPT4nQWxsJyk7CiR0eXBlQ29tcGV0aXRpb24gPSBhcnJheSgpOwokdG91cmxpc3QgPSBhcnJheSgpOwokdG91cmxpc3RbJHRoaXMtPkxhbmcoJ2FsbHRvdXJzJyldID0gJyc7CiRhbGxlcXVpcGVzID0gICggaXNzZXQoICRwYXJhbXNbJ2FsbGVxdWlwZXMnXSApPyRwYXJhbXNbJ2FsbGVxdWlwZXMnXTonbm8nKTsKCiRlcXVpcGVsaXN0WyR0aGlzLT5MYW5nKCdhbGxlcXVpcGVzJyldID0gJyc7CgokcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVuY29udHJlcyBBUyByZW4sICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jb21wZXRpdGlvbnMgQVMgY29tcCBXSEVSRSByZW4udHlwZV9jb21wZXQgPSBjb21wLmNvZGVfY29tcGV0IjsKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CndoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICB7CiAgICAkdG91cmxpc3RbJHJvd1sndG91ciddXSA9ICRyb3dbJ3RvdXInXTsKICAgICRlcXVpcGVsaXN0WyRyb3dbJ2VxdWlwZSddXSA9ICRyb3dbJ2VxdWlwZSddOwogICAgJHR5cGVDb21wZXRpdGlvblskcm93WyduYW1lJ11dID0gJHJvd1sndHlwZV9jb21wZXQnXTsKICB9CgppZiggaXNzZXQoJHBhcmFtc1snc3VibWl0ZmlsdGVyJ10pICkKICB7CiAgICBpZiggaXNzZXQoICRwYXJhbXNbJ3RvdXJsaXN0J10pICkKICAgICAgewoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3RvdXJDaG9pc2knLCAkcGFyYW1zWyd0b3VybGlzdCddKTsKICAgICAgfQogICAgaWYoIGlzc2V0KCAkcGFyYW1zWydlcXVpcGVsaXN0J10pKQoJewoJJHRoaXMtPlNldFByZWZlcmVuY2UoICdlcXVpcGVDaG9pc2llJywgJHBhcmFtc1snZXF1aXBlbGlzdCddKTsKCX0KICAgIGlmKCBpc3NldCggJHBhcmFtc1sndHlwZUNvbXBldCddKSkKCQl7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoICdjb21wZXRDaG9pc2llJywgJHBhcmFtc1sndHlwZUNvbXBldCddKTsKCQl9Cn0KJGN1cnRvdXIgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ3RvdXJDaG9pc2knICk7CiRjdXJlcXVpcGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSggJ2VxdWlwZUNob2lzaWUnICk7CiRjdXJjb21wZXQgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY29tcGV0Q2hvaXNpZScpOwoKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jb21wZXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwndHlwZUNvbXBldCcsJHR5cGVDb21wZXRpdGlvbiwtMSwkY3VyY29tcGV0KSk7Cgokc21hcnR5LT5hc3NpZ24oJ3Byb21wdF90b3VyJywKCQkkdGhpcy0+TGFuZygndG91cicpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF90b3VyJywKCQkkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsJ3RvdXJsaXN0JywkdG91cmxpc3QsLTEsJGN1cnRvdXIpKTsKCQkkc21hcnR5LT5hc3NpZ24oJ3Byb21wdF9lcXVpcGUnLAoJCQkJJHRoaXMtPkxhbmcoJ2VxdWlwZScpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9lcXVpcGUnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwnZXF1aXBlbGlzdCcsJGVxdWlwZWxpc3QsLTEsJGN1cmVxdWlwZSkpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdGZpbHRlcicsCgkJJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwnc3VibWl0ZmlsdGVyJywkdGhpcy0+TGFuZygnZmlsdHJlcycpKSk7CiRzbWFydHktPmFzc2lnbignZm9ybWVuZCcsJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiovCgokc21hcnR5LT5hc3NpZ24oJ2lkJywgJHRoaXMtPkxhbmcoJ2lkJykpOwokc21hcnR5LT5hc3NpZ24oJ2VxdWlwZScsICdFcXVpcGVzJyk7CiRzbWFydHktPmFzc2lnbigndG91cicsICdUb3VyJyk7CiRzbWFydHktPmFzc2lnbignc2NvcmUnLCAnU2NvcmUnKTsKJHNtYXJ0eS0+YXNzaWduKCdhZHZlcnNhaXJlcycsICdBZHZlcnNhaXJlcycpOwoKJHJlc3VsdD0gYXJyYXkgKCk7CiRxdWVyeSA9ICJTRUxFQ1QgKiwgY29tcC5uYW1lIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2VxdWlwZXMgQVMgZXEsICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyBBUyBjb21wIFdIRVJFIGNvbXAuY29kZV9jb21wZXQgPSBlcS50eXBlX2NvbXBldCBPUiBlcS50eXBlX2NvbXBldCBJUyBOVUxMIEFORCBlcS5zYWlzb24gPSA/IjsKLy8kcGFybXNbJ3NhaXNvbl9lbl9jb3VycyddID0gJHNhaXNvbl9jb3VyYW50ZTsKCi8qCglpZiggaXNzZXQoJHBhcmFtc1snc3VibWl0ZmlsdGVyJ10gKSl7CmlmICgkY3VydG91ciAhPScnKQp7CgkkcXVlcnkgLj0iIEFORCByZW4udG91ciA9ID8iOwoJJHBhcm1zWyd0b3VyJ10gPSAkY3VydG91cjsKCQkKfQplbHNlIHsKCSRxdWVyeS49IiBBTkQgcmVuLnRvdXIgPiAwICI7CgkkcGFybXMgPScnOwp9CmlmKCAkY3VyZXF1aXBlICE9ICcnKXsKCSRxdWVyeSAuPSIgQU5EIHJlbi5lcXVpcGUgPSA/ICI7CgkkcGFybXNbJ2VxdWlwZSddID0gJGN1cmVxdWlwZTsKCQp9CmlmKCRjdXJjb21wZXQgIT0gJycpCnsKCSRxdWVyeS49IiBBTkQgcmVuLnR5cGVfY29tcGV0ID0gPyI7CgkkcGFybXNbJ3R5cGVfY29tcGV0J10gPSAkY3VyY29tcGV0Owp9CmVsc2UKewoJJHF1ZXJ5Lj0iIEFORCB0eXBlX2NvbXBldCBMSUtFICclJyI7CgkkcGFybXMgPSAnJzsKfQoKJGRicmVzdWx0PSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCRwYXJtcyk7Cn0KKi8KCgoKCgkkcXVlcnkgLj0iIE9SREVSIEJZIGVxLmlkIEFTQyI7CgkkZGJyZXN1bHQ9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHNhaXNvbl9jb3VyYW50ZSkpOwoKLy9lY2hvICRxdWVyeTsKJHJvd2FycmF5PSBhcnJheSAoKTsKaWYgKCRkYnJlc3VsdCAmJiAkZGJyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCiAgICAgIHsKCSRvbmVyb3c9IG5ldyBTdGRDbGFzcygpOwoJJG9uZXJvdy0+cm93Y2xhc3M9ICRyb3djbGFzczsKCSRvbmVyb3ctPmlkPSAkcm93WydpZCddOwoJLy8kb25lcm93LT5lcXVpcGU9ICRyb3dbJ2VxdWlwZSddOwoJJG9uZXJvdy0+bGliZXF1aXBlPSAgJHJvd1snbGliZXF1aXBlJ107Cgkkb25lcm93LT5saWJkaXZpc2lvbj0gJHJvd1snbGliZGl2aXNpb24nXTsKCSRvbmVyb3ctPmZyaWVuZGx5bmFtZT0gJHJvd1snZnJpZW5kbHluYW1lJ107Cgkkb25lcm93LT5uYW1lPSAkcm93WyduYW1lJ107CgkvLyRvbmVyb3ctPnZpZXc9ICR0aGlzLT5jcmVhdGVMaW5rKCRpZCwgJ3ZpZXd0ZWFtcmVzdWx0JywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL3ZpZXcuZ2lmJywgJHRoaXMtPkxhbmcoJ2Rvd25sb2FkX3BvdWxlX3Jlc3VsdHMnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLGFycmF5KCdjbGUnPT4kcm93WydjbGUnXSkpIDsKCSRvbmVyb3ctPmVkaXRsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0X3RlYW0nLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdyZWNvcmRfaWQnPT4kcm93WydpZCddKSk7Cgkkb25lcm93LT5yZXRyaWV2ZV9wb3VsZV9yZW5jb250cmVzPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV9wb3VsZV9yZW5jb250cmVzJywgJHJldHVybmlkLCR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vaW1wb3J0LmdpZicsICR0aGlzLT5MYW5nKCdkb3dubG9hZF9wb3VsZV9yZXN1bHRzJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2lkcG91bGUnPT4kcm93WydpZHBvdWxlJ10sICdpZGRpdic9PiRyb3dbJ2lkZGl2J10sICd0eXBlX2NvbXBldCc9PiRyb3dbJ3R5cGVfY29tcGV0J10pKTsKCSRvbmVyb3ctPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZV90ZWFtJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pLCAkdGhpcy0+TGFuZygnZGVsZXRlX2NvbmZpcm0nKSk7CgkoJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcz0gInJvdzIiIDogJHJvd2NsYXNzPSAicm93MSIpOwoJJHJvd2FycmF5W109ICRvbmVyb3c7CiAgICAgIH0KICB9CiRzbWFydHktPmFzc2lnbignaXRlbXNmb3VuZCcsICR0aGlzLT5MYW5nKCdzaGVldHNmb3VuZHRleHQnKSk7CiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJHJvd2FycmF5KSk7CiRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkcm93YXJyYXkpOwokc21hcnR5LT5hc3NpZ24oJ3JldHJpZXZlX3RlYW1zJywKCQkkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZXRyaWV2ZV90ZWFtcycsICRyZXR1cm5pZCwgJGNvbnRlbnRzID0gIlLDqWN1cMOpcmF0aW9uIGRlcyDDqXF1aXBlcyAoY2hhbXBpb25uYXQgc2VuaW9ycykiLCBhcnJheSgndHlwZSc9PidNJykpKTsKJHNtYXJ0eS0+YXNzaWduKCdyZXRyaWV2ZV90ZWFtc19hdXRyZXMnLAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3JldHJpZXZlX3RlYW1zJywgJHJldHVybmlkLCAkY29udGVudHMgPSAiUsOpY3Vww6lyYXRpb24gZGVzIMOpcXVpcGVzIikpOwoKCgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3RlYW1zY29yZXMudHBsJyk7CgoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/function.admin_users_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCiRkYiA9JiAkdGhpcy0+R2V0RGIoKTsKZ2xvYmFsICR0aGVtZU9iamVjdDsKCiRzbWFydHktPmFzc2lnbignaWQnLCAkdGhpcy0+TGFuZygnaWQnKSk7CiRzbWFydHktPmFzc2lnbignZXF1aXBlJywgJ0VxdWlwZScpOwokc21hcnR5LT5hc3NpZ24oJ3RvdXInLCAnVG91cicpOwokc21hcnR5LT5hc3NpZ24oJ2pvdWV1cicsICdKb3VldXInKTsKJHNtYXJ0eS0+YXNzaWduKCdhZHZlcnNhaXJlJywgJ0FkdmVyc2FpcmUnKTsKJHNtYXJ0eS0+YXNzaWduKCd2aWN0b2lyZScsICdWaWMvZMOpZicpOwokc21hcnR5LT5hc3NpZ24oJ3BvaW50cycsICdQb2ludHMnKTsKCiRyZXN1bHQ9IGFycmF5ICgpOwokcXVlcnk9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIE9SREVSIEJZIGlkIEFTQyI7CiRkYnJlc3VsdD0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CiRyb3djbGFzcz0gJ3JvdzEnOwokcm93YXJyYXk9IGFycmF5ICgpOwppZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewoJJG9uZXJvdz0gbmV3IFN0ZENsYXNzKCk7Cgkkb25lcm93LT5yb3djbGFzcz0gJHJvd2NsYXNzOwoJJG9uZXJvdy0+aWQ9ICRyb3dbJ2lkJ107Cgkkb25lcm93LT50b3VyPSAkcm93Wyd1c2VybmFtZSddOwoJJG9uZXJvdy0+ZXF1aXBlPSAkcm93Wydwb2ludHMnXTsKCS8vJG9uZXJvdy0+ZXF1aXBlPSAkdGhpcy0+Y3JlYXRlTGluaygkaWQsICd2aWV3c3RlYW1yZXN1bHQnLCAkcmV0dXJuaWQsICRyb3dbJ2VxdWlwZSddLGFycmF5KCdlcXVpcGUnPT4kcm93WydlcXVpcGUnXSksJHJvdykgOwoJJG9uZXJvdy0+am91ZXVyPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICd2aWV3X3VzZXJfcmVzdWx0cycsICRyZXR1cm5pZCwgJHJvd1snam91ZXVyJ10sYXJyYXkoJ2pvdWV1cic9PiRyb3dbJ2pvdWV1ciddKSkgOwoJCgkKCS8qCQoJJG9uZXJvdy0+Y29tbXVuZT0gJHJvd1snY29tbXVuZSddOwoJJG9uZXJvdy0+ZW1haWw9ICRyb3dbJ2VtYWlsJ107Cgkkb25lcm93LT50cmFuY2hlPSAkcm93Wyd0cmFuY2hlJ107Cgkkb25lcm93LT5hY3RpdmU9ICgkcm93WydhY3RpdmUnXSA9PSAxKSA/ICR0aGlzLT5MYW5nKCd5ZXMnKSA6ICcnOwoJKi8KCSRvbmVyb3ctPmlkPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0X3Jlc3VsdHMnLCAkcmV0dXJuaWQsICRyb3dbJ2lkJ10sYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pLCAkcm93KTsKCSRvbmVyb3ctPmVkaXRsaW5rPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0X3Jlc3VsdHMnLCAkcmV0dXJuaWQsICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCAkdGhpcy0+TGFuZygnZWRpdCcpLCAnJywgJycsICdzeXN0ZW1pY29uJyksYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pKTsKCSRvbmVyb3ctPmRlbGV0ZWxpbms9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZV91c2VyJywgJHJldHVybmlkLCAkdGhlbWVPYmplY3QtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3JlY29yZF9pZCc9PiRyb3dbJ2lkJ10pLCAkdGhpcy0+TGFuZygnZGVsZXRlX3Jlc3VsdF9jb25maXJtJykpOwoJKCRyb3djbGFzcyA9PSAicm93MSIgPyAkcm93Y2xhc3M9ICJyb3cyIiA6ICRyb3djbGFzcz0gInJvdzEiKTsKCSRyb3dhcnJheVtdPSAkb25lcm93OwogICAgICB9CiAgfQokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zZm91bmQnLCAkdGhpcy0+TGFuZygncmVzdWx0c2ZvdW5kdGV4dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtY291bnQnLCBjb3VudCgkcm93YXJyYXkpKTsKJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRyb3dhcnJheSk7CiRzbWFydHktPmFzc2lnbignY3JlYXRlbGluaycsIAoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2NyZWF0ZV9uZXdfdXNlcjMnLCAkcmV0dXJuaWQsCgkJCQkgICR0aGVtZU9iamVjdC0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsICR0aGlzLT5MYW5nKCdhZGRuZXdzaGVldCcpLCAnJywgJycsICdzeXN0ZW1pY29uJykpLgoJCSR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2NyZWF0ZV9uZXdfdXNlcjMnLCAkcmV0dXJuaWQsIAoJCQkJICAkdGhpcy0+TGFuZygnYWRkbmV3c2hlZXQnKSwgCgkJCQkgIGFycmF5KCkpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnam91ZXVyc0xpc3QudHBsJyk7CgoKIwojIEVPRgojCj8+]]></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/IjsKJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNvbXBldGl0aW9uKSk7CmlmICgkZGJyZXRvdXIgJiYgJGRicmV0b3VyLT5SZWNvcmRDb3VudCgpID4gMCkKICB7CiAgICB3aGlsZSAoJHJvdz0gJGRicmV0b3VyLT5GZXRjaFJvdygpKQogICAgICB7Cgkkam91ZXVycyA9ICRyb3dbJ2pvdWV1cnMnXTsKCXJldHVybiAkam91ZXVyczsKCX0KCQp9Cn0KCmZ1bmN0aW9uIHJhbmRvbSgkY2FyKSB7CiRzdHJpbmcgPSAiIjsKJGNoYWluZSA9ICJhYmNkZWZnaGlqa2xtbnBxcnN0dXZ3eHkiOwpzcmFuZCgoZG91YmxlKW1pY3JvdGltZSgpKjEwMDAwMDApOwpmb3IoJGk9MDsgJGk8JGNhcjsgJGkrKykgewokc3RyaW5nIC49ICRjaGFpbmVbcmFuZCgpJXN0cmxlbigkY2hhaW5lKV07Cn0KcmV0dXJuICRzdHJpbmc7Cn0KCmZ1bmN0aW9uIGNvZWZmICgkdHlwZUNvbXBldGl0aW9uKXsKCSRkYiAgPSBjbXNtcygpLT5HZXREYigpOwovKgkKCWlmKHN1YnN0cl9jb3VudCgkdHlwZUNvbXBldGl0aW9uLCctJyk+MCl7CgkJJHR5cGVfaW50ZXIgPSBleHBsb2RlKCctJywkdHlwZUNvbXBldGl0aW9uLDIpOwoJCSR0eXBlID0gJHR5cGVfaW50ZXJbMF07Cgl9CgllbHNlIHsKCQkkdHlwZSA9ICR0eXBlQ29tcGV0aXRpb247Cgl9CiovCiRxdWVyeSA9IlNFTEVDVCBjb2VmZmljaWVudCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ190eXBlX2NvbXBldGl0aW9ucyBXSEVSRSBuYW1lID0gPyI7CiRkYnJldG91ciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR0eXBlQ29tcGV0aXRpb24pKTsKaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXRvdXItPkZldGNoUm93KCkpCiAgICAgIHsKCSRjb2VmZiA9ICRyb3dbJ2NvZWZmaWNpZW50J107CglyZXR1cm4gJGNvZWZmOwoJfQoJCn0KZWxzZXsKCSRjb2VmZiA9IDA7CglyZXR1cm4gY29lZmY7CgkvL2VjaG8gImNvZWZmaWNpZW50IGludHJvdXZhYmxlICEiOwp9Cn0KCmZ1bmN0aW9uIGNvZWZmX29sZCAoJGNsZSl7CgkkZGIgID0gY21zbXMoKS0+R2V0RGIoKTsKJHF1ZXJ5ID0iU0VMRUNUIGNvZWZmaWNpZW50IEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbXBldGl0aW9ucyBBUyBjb21wLCAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVuY29udHJlcyBBUyByZW4gV0hFUkUgY29tcC5jb2RlX2NvbXBldCA9IHJlbi50eXBlX2NvbXBldCBBTkQgcmVuLmNsZSA9ICA/IjsKJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNsZSkpOwppZiAoJGRicmV0b3VyICYmICRkYnJldG91ci0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJldG91ci0+RmV0Y2hSb3coKSkKICAgICAgewoJJGNvZWZmID0gJHJvd1snY29lZmZpY2llbnQnXTsKCXJldHVybiAkY29lZmY7Cgl9CgkKfQplbHNlewoJZWNobyAiY29lZmZpY2llbnQgaW50cm91dmFibGUgISI7Cn0JCQpmdW5jdGlvbiBkYXRldmVyc2ZyICgkZGF0ZSl7CSAgIAoJJGRhdGVhcnIgPSBleHBsb2RlKCcvJywgJGRhdGUpOwoJJGRhdGVmciA9ICRkYXRlYXJyWzJdIC4gJy0nIC4gJGRhdGVhcnJbMV0gLiAnLScgLiAkZGF0ZWFyclswXTsKCXJldHVybiAkZGF0ZWZyOwoJfQp9CmZ1bmN0aW9uIG1vaXNfZnJhbmNhaXMoJG1vaXMsJGxvbmd1ZXVyKXsKCWlmKCFpc3NldCgkbG9uZ3VldXIpIHx8ICRsb25ndWV1ciA9PScnKXsKCQkkbW9udGhzID0gYXJyYXkoIkphbnZpZXIiLCAiRsOpdnJpZXIiLCAiTWFycyIsICJBdnJpbCIsICJNYWkiLCAiSnVpbiIsICJqdWlsbGV0IiwgIkFvdXQiLCAiU2VwdGVtYnJlIiwgIk9jdG9icmUiLCAiTm92ZW1icmUiLCAiZMOpY2VtYnJlIik7Cgl9CgllbHNlCgl7CgkJJG1vbnRocyA9IGFycmF5KCJKYW4iLCAiRsOpdiIsICJNYXIiLCAiQXZyIiwgIk1haSIsICJKdWluIiwgImp1aWwiLCAiQW91IiwgIlNlcCIsICJPY3QiLCAiTm92IiwgImTDqWMiKTsKCX0KCSRtb250aF90b19kaXNwbGF5ID0gJG1vaXMtMTsKCSRtb250aF9mcmFuY2FpcyA9ICRtb250aHNbIiRtb250aF90b19kaXNwbGF5Il07CglyZXR1cm4gJG1vbnRoX2ZyYW5jYWlzOwp9CgoKCj8+]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</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>/include/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/include/prefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKJGRiID0mICR0aGlzLT5HZXREYigpOwpnbG9iYWwgJHRoZW1lT2JqZWN0Owokbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CiRtb2lzX2NvdXJhbnQgPSBkYXRlKCduJyk7CiRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKJHNhaXNvbl9jb3VyYW50ZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzYWlzb25fZW5fY291cnMnKTsKCiMKI0VPRgojCj8+]]></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/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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oZCl7ZC5qcXBsb3QuQmFyUmVuZGVyZXI9ZnVuY3Rpb24oKXtkLmpxcGxvdC5MaW5lUmVuZGVyZXIuY2FsbCh0aGlzKX07ZC5qcXBsb3QuQmFyUmVuZGVyZXIucHJvdG90eXBlPW5ldyBkLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTtkLmpxcGxvdC5CYXJSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9ZC5qcXBsb3QuQmFyUmVuZGVyZXI7ZC5qcXBsb3QuQmFyUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24obyxxKXt0aGlzLmJhclBhZGRpbmc9ODt0aGlzLmJhck1hcmdpbj0xMDt0aGlzLmJhckRpcmVjdGlvbj0idmVydGljYWwiO3RoaXMuYmFyV2lkdGg9bnVsbDt0aGlzLnNoYWRvd09mZnNldD0yO3RoaXMuc2hhZG93RGVwdGg9NTt0aGlzLnNoYWRvd0FscGhhPTAuMDg7dGhpcy53YXRlcmZhbGw9ZmFsc2U7dGhpcy5ncm91cHM9MTt0aGlzLnZhcnlCYXJDb2xvcj1mYWxzZTt0aGlzLmhpZ2hsaWdodE1vdXNlT3Zlcj10cnVlO3RoaXMuaGlnaGxpZ2h0TW91c2VEb3duPWZhbHNlO3RoaXMuaGlnaGxpZ2h0Q29sb3JzPVtdO3RoaXMudHJhbnNwb3NlZERhdGE9dHJ1ZTt0aGlzLnJlbmRlcmVyLmFuaW1hdGlvbj17c2hvdzpmYWxzZSxkaXJlY3Rpb246ImRvd24iLHNwZWVkOjMwMDAsX3N1cHBvcnRlZDp0cnVlfTt0aGlzLl90eXBlPSJiYXIiO2lmKG8uaGlnaGxpZ2h0TW91c2VEb3duJiZvLmhpZ2hsaWdodE1vdXNlT3Zlcj09bnVsbCl7by5oaWdobGlnaHRNb3VzZU92ZXI9ZmFsc2V9ZC5leHRlbmQodHJ1ZSx0aGlzLG8pO2QuZXh0ZW5kKHRydWUsdGhpcy5yZW5kZXJlcixvKTt0aGlzLmZpbGw9dHJ1ZTtpZih0aGlzLmJhckRpcmVjdGlvbj09PSJob3Jpem9udGFsIiYmdGhpcy5yZW5kZXJlck9wdGlvbnMuYW5pbWF0aW9uJiZ0aGlzLnJlbmRlcmVyT3B0aW9ucy5hbmltYXRpb24uZGlyZWN0aW9uPT1udWxsKXt0aGlzLnJlbmRlcmVyLmFuaW1hdGlvbi5kaXJlY3Rpb249ImxlZnQifWlmKHRoaXMud2F0ZXJmYWxsKXt0aGlzLmZpbGxUb1plcm89ZmFsc2U7dGhpcy5kaXNhYmxlU3RhY2s9dHJ1ZX1pZih0aGlzLmJhckRpcmVjdGlvbj09InZlcnRpY2FsIil7dGhpcy5fcHJpbWFyeUF4aXM9Il94YXhpcyI7dGhpcy5fc3RhY2tBeGlzPSJ5Ijt0aGlzLmZpbGxBeGlzPSJ5In1lbHNle3RoaXMuX3ByaW1hcnlBeGlzPSJfeWF4aXMiO3RoaXMuX3N0YWNrQXhpcz0ieCI7dGhpcy5maWxsQXhpcz0ieCJ9dGhpcy5faGlnaGxpZ2h0ZWRQb2ludD1udWxsO3RoaXMuX3Bsb3RTZXJpZXNJbmZvPW51bGw7dGhpcy5fZGF0YUNvbG9ycz1bXTt0aGlzLl9iYXJQb2ludHM9W107dmFyIHA9e2xpbmVKb2luOiJtaXRlciIsbGluZUNhcDoicm91bmQiLGZpbGw6dHJ1ZSxpc2FyYzpmYWxzZSxzdHJva2VTdHlsZTp0aGlzLmNvbG9yLGZpbGxTdHlsZTp0aGlzLmNvbG9yLGNsb3NlUGF0aDp0aGlzLmZpbGx9O3RoaXMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5pbml0KHApO3ZhciBuPXtsaW5lSm9pbjoibWl0ZXIiLGxpbmVDYXA6InJvdW5kIixmaWxsOnRydWUsaXNhcmM6ZmFsc2UsYW5nbGU6dGhpcy5zaGFkb3dBbmdsZSxvZmZzZXQ6dGhpcy5zaGFkb3dPZmZzZXQsYWxwaGE6dGhpcy5zaGFkb3dBbHBoYSxkZXB0aDp0aGlzLnNoYWRvd0RlcHRoLGNsb3NlUGF0aDp0aGlzLmZpbGx9O3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuaW5pdChuKTtxLnBvc3RJbml0SG9va3MuYWRkT25jZShoKTtxLnBvc3REcmF3SG9va3MuYWRkT25jZShqKTtxLmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RNb3VzZU1vdmUiLGIpO3EuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdE1vdXNlRG93biIsYSk7cS5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90TW91c2VVcCIsbCk7cS5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90Q2xpY2siLGUpO3EuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdFJpZ2h0Q2xpY2siLG0pfTtmdW5jdGlvbiBnKHQscCxvLHcpe2lmKHRoaXMucmVuZGVyZXJPcHRpb25zLmJhckRpcmVjdGlvbj09Imhvcml6b250YWwiKXt0aGlzLl9zdGFja0F4aXM9IngiO3RoaXMuX3ByaW1hcnlBeGlzPSJfeWF4aXMifWlmKHRoaXMucmVuZGVyZXJPcHRpb25zLndhdGVyZmFsbD09dHJ1ZSl7dGhpcy5fZGF0YT1kLmV4dGVuZCh0cnVlLFtdLHRoaXMuZGF0YSk7dmFyIHM9MDt2YXIgdT0oIXRoaXMucmVuZGVyZXJPcHRpb25zLmJhckRpcmVjdGlvbnx8dGhpcy5yZW5kZXJlck9wdGlvbnMuYmFyRGlyZWN0aW9uPT09InZlcnRpY2FsInx8dGhpcy50cmFuc3Bvc2VkRGF0YT09PWZhbHNlKT8xOjA7Zm9yKHZhciBxPTA7cTx0aGlzLmRhdGEubGVuZ3RoO3ErKyl7cys9dGhpcy5kYXRhW3FdW3VdO2lmKHE+MCl7dGhpcy5kYXRhW3FdW3VdKz10aGlzLmRhdGFbcS0xXVt1XX19dGhpcy5kYXRhW3RoaXMuZGF0YS5sZW5ndGhdPSh1PT0xKT9bdGhpcy5kYXRhLmxlbmd0aCsxLHNdOltzLHRoaXMuZGF0YS5sZW5ndGgrMV07dGhpcy5fZGF0YVt0aGlzLl9kYXRhLmxlbmd0aF09KHU9PTEpP1t0aGlzLl9kYXRhLmxlbmd0aCsxLHNdOltzLHRoaXMuX2RhdGEubGVuZ3RoKzFdfWlmKHRoaXMucmVuZGVyZXJPcHRpb25zLmdyb3Vwcz4xKXt0aGlzLmJyZWFrT25OdWxsPXRydWU7dmFyIG49dGhpcy5kYXRhLmxlbmd0aDt2YXIgdj1wYXJzZUludChuL3RoaXMucmVuZGVyZXJPcHRpb25zLmdyb3VwcywxMCk7dmFyIHI9MDtmb3IodmFyIHE9djtxPG47cSs9dil7dGhpcy5kYXRhLnNwbGljZShxK3IsMCxbbnVsbCxudWxsXSk7dGhpcy5fcGxvdERhdGEuc3BsaWNlKHErciwwLFtudWxsLG51bGxdKTt0aGlzLl9zdGFja0RhdGEuc3BsaWNlKHErciwwLFtudWxsLG51bGxdKTtyKyt9Zm9yKHE9MDtxPHRoaXMuZGF0YS5sZW5ndGg7cSsrKXtpZih0aGlzLl9wcmltYXJ5QXhpcz09Il94YXhpcyIpe3RoaXMuZGF0YVtxXVswXT1xKzE7dGhpcy5fcGxvdERhdGFbcV1bMF09cSsxO3RoaXMuX3N0YWNrRGF0YVtxXVswXT1xKzF9ZWxzZXt0aGlzLmRhdGFbcV1bMV09cSsxO3RoaXMuX3Bsb3REYXRhW3FdWzFdPXErMTt0aGlzLl9zdGFja0RhdGFbcV1bMV09cSsxfX19fWQuanFwbG90LnByZVNlcmllc0luaXRIb29rcy5wdXNoKGcpO2QuanFwbG90LkJhclJlbmRlcmVyLnByb3RvdHlwZS5jYWxjU2VyaWVzTnVtYmVycz1mdW5jdGlvbigpe3ZhciByPTA7dmFyIHQ9MDt2YXIgcT10aGlzW3RoaXMuX3ByaW1hcnlBeGlzXTt2YXIgcCxvLHU7Zm9yKHZhciBuPTA7bjxxLl9zZXJpZXMubGVuZ3RoO24rKyl7bz1xLl9zZXJpZXNbbl07aWYobz09PXRoaXMpe3U9bn1pZihvLnJlbmRlcmVyLmNvbnN0cnVjdG9yPT1kLmpxcGxvdC5CYXJSZW5kZXJlcil7cis9by5kYXRhLmxlbmd0aDt0Kz0xfX1yZXR1cm5bcix0LHVdfTtkLmpxcGxvdC5CYXJSZW5kZXJlci5wcm90b3R5cGUuc2V0QmFyV2lkdGg9ZnVuY3Rpb24oKXt2YXIgcTt2YXIgbj0wO3ZhciBvPTA7dmFyIHQ9dGhpc1t0aGlzLl9wcmltYXJ5QXhpc107dmFyIHgscix2O3ZhciB3PXRoaXMuX3Bsb3RTZXJpZXNJbmZvPXRoaXMucmVuZGVyZXIuY2FsY1Nlcmllc051bWJlcnMuY2FsbCh0aGlzKTtuPXdbMF07bz13WzFdO3ZhciB1PXQubnVtYmVyVGlja3M7dmFyIHA9KHUtMSkvMjtpZih0Lm5hbWU9PSJ4YXhpcyJ8fHQubmFtZT09IngyYXhpcyIpe2lmKHRoaXMuX3N0YWNrKXt0aGlzLmJhcldpZHRoPSh0Ll9vZmZzZXRzLm1heC10Ll9vZmZzZXRzLm1pbikvbipvLXRoaXMuYmFyTWFyZ2lufWVsc2V7dGhpcy5iYXJXaWR0aD0oKHQuX29mZnNldHMubWF4LXQuX29mZnNldHMubWluKS9wLXRoaXMuYmFyUGFkZGluZyooby0xKS10aGlzLmJhck1hcmdpbioyKS9vfX1lbHNle2lmKHRoaXMuX3N0YWNrKXt0aGlzLmJhcldpZHRoPSh0Ll9vZmZzZXRzLm1pbi10Ll9vZmZzZXRzLm1heCkvbipvLXRoaXMuYmFyTWFyZ2lufWVsc2V7dGhpcy5iYXJXaWR0aD0oKHQuX29mZnNldHMubWluLXQuX29mZnNldHMubWF4KS9wLXRoaXMuYmFyUGFkZGluZyooby0xKS10aGlzLmJhck1hcmdpbioyKS9vfX1yZXR1cm5bbixvXX07ZnVuY3Rpb24gZihvKXt2YXIgcT1bXTtmb3IodmFyIHM9MDtzPG8ubGVuZ3RoO3MrKyl7dmFyIHI9ZC5qcXBsb3QuZ2V0Q29sb3JDb21wb25lbnRzKG9bc10pO3ZhciBuPVtyWzBdLHJbMV0sclsyXV07dmFyIHQ9blswXStuWzFdK25bMl07Zm9yKHZhciBwPTA7cDwzO3ArKyl7bltwXT0odD41NzApP25bcF0qMC44Om5bcF0rMC4zKigyNTUtbltwXSk7bltwXT1wYXJzZUludChuW3BdLDEwKX1xLnB1c2goInJnYigiK25bMF0rIiwiK25bMV0rIiwiK25bMl0rIikiKX1yZXR1cm4gcX1mdW5jdGlvbiBpKHYsdSxzLHQsbyl7dmFyIHE9dix3PXYtMSxuLHAscj0obz09PSJ4Iik/MDoxO2lmKHE+MCl7cD10LnNlcmllc1t3XS5fcGxvdERhdGFbdV1bcl07aWYoKHMqcCk8MCl7bj1pKHcsdSxzLHQsbyl9ZWxzZXtuPXQuc2VyaWVzW3ddLmdyaWREYXRhW3VdW3JdfX1lbHNle249KHI9PT0wKT90LnNlcmllc1txXS5feGF4aXMuc2VyaWVzX3UycCgwKTp0LnNlcmllc1txXS5feWF4aXMuc2VyaWVzX3UycCgwKX1yZXR1cm4gbn1kLmpxcGxvdC5CYXJSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbihFLEwscSxHKXt2YXIgSTt2YXIgQT1kLmV4dGVuZCh7fSxxKTt2YXIgdz0oQS5zaGFkb3chPXVuZGVmaW5lZCk/QS5zaGFkb3c6dGhpcy5zaGFkb3c7dmFyIE89KEEuc2hvd0xpbmUhPXVuZGVmaW5lZCk/QS5zaG93TGluZTp0aGlzLnNob3dMaW5lO3ZhciBGPShBLmZpbGwhPXVuZGVmaW5lZCk/QS5maWxsOnRoaXMuZmlsbDt2YXIgcD10aGlzLnhheGlzO3ZhciBKPXRoaXMueWF4aXM7dmFyIHk9dGhpcy5feGF4aXMuc2VyaWVzX3UycDt2YXIgSz10aGlzLl95YXhpcy5zZXJpZXNfdTJwO3ZhciBELEM7dGhpcy5fZGF0YUNvbG9ycz1bXTt0aGlzLl9iYXJQb2ludHM9W107aWYodGhpcy5iYXJXaWR0aD09bnVsbCl7dGhpcy5yZW5kZXJlci5zZXRCYXJXaWR0aC5jYWxsKHRoaXMpfXZhciBOPXRoaXMuX3Bsb3RTZXJpZXNJbmZvPXRoaXMucmVuZGVyZXIuY2FsY1Nlcmllc051bWJlcnMuY2FsbCh0aGlzKTt2YXIgeD1OWzBdO3ZhciB2PU5bMV07dmFyIHM9TlsyXTt2YXIgSD1bXTtpZih0aGlzLl9zdGFjayl7dGhpcy5fYmFyTnVkZ2U9MH1lbHNle3RoaXMuX2Jhck51ZGdlPSgtTWF0aC5hYnModi8yLTAuNSkrcykqKHRoaXMuYmFyV2lkdGgrdGhpcy5iYXJQYWRkaW5nKX1pZihPKXt2YXIgdT1uZXcgZC5qcXBsb3QuQ29sb3JHZW5lcmF0b3IodGhpcy5uZWdhdGl2ZVNlcmllc0NvbG9ycyk7dmFyIEI9bmV3IGQuanFwbG90LkNvbG9yR2VuZXJhdG9yKHRoaXMuc2VyaWVzQ29sb3JzKTt2YXIgTT11LmdldCh0aGlzLmluZGV4KTtpZighdGhpcy51c2VOZWdhdGl2ZUNvbG9ycyl7TT1BLmZpbGxTdHlsZX12YXIgdD1BLmZpbGxTdHlsZTt2YXIgcjt2YXIgUDt2YXIgbztpZih0aGlzLmJhckRpcmVjdGlvbj09InZlcnRpY2FsIil7Zm9yKHZhciBJPTA7STxMLmxlbmd0aDtJKyspe2lmKCF0aGlzLl9zdGFjayYmdGhpcy5kYXRhW0ldWzFdPT1udWxsKXtjb250aW51ZX1IPVtdO3I9TFtJXVswXSt0aGlzLl9iYXJOdWRnZTtpZih0aGlzLl9zdGFjayYmdGhpcy5fcHJldkdyaWREYXRhLmxlbmd0aCl7bz1pKHRoaXMuaW5kZXgsSSx0aGlzLl9wbG90RGF0YVtJXVsxXSxHLCJ5Iil9ZWxzZXtpZih0aGlzLmZpbGxUb1plcm8pe289dGhpcy5feWF4aXMuc2VyaWVzX3UycCgwKX1lbHNle2lmKHRoaXMud2F0ZXJmYWxsJiZJPjAmJkk8dGhpcy5ncmlkRGF0YS5sZW5ndGgtMSl7bz10aGlzLmdyaWREYXRhW0ktMV1bMV19ZWxzZXtpZih0aGlzLndhdGVyZmFsbCYmST09MCYmSTx0aGlzLmdyaWREYXRhLmxlbmd0aC0xKXtpZih0aGlzLl95YXhpcy5taW48PTAmJnRoaXMuX3lheGlzLm1heD49MCl7bz10aGlzLl95YXhpcy5zZXJpZXNfdTJwKDApfWVsc2V7aWYodGhpcy5feWF4aXMubWluPjApe289RS5jYW52YXMuaGVpZ2h0fWVsc2V7bz0wfX19ZWxzZXtpZih0aGlzLndhdGVyZmFsbCYmST09dGhpcy5ncmlkRGF0YS5sZW5ndGgtMSl7aWYodGhpcy5feWF4aXMubWluPD0wJiZ0aGlzLl95YXhpcy5tYXg+PTApe289dGhpcy5feWF4aXMuc2VyaWVzX3UycCgwKX1lbHNle2lmKHRoaXMuX3lheGlzLm1pbj4wKXtvPUUuY2FudmFzLmhlaWdodH1lbHNle289MH19fWVsc2V7bz1FLmNhbnZhcy5oZWlnaHR9fX19fWlmKCh0aGlzLmZpbGxUb1plcm8mJnRoaXMuX3Bsb3REYXRhW0ldWzFdPDApfHwodGhpcy53YXRlcmZhbGwmJnRoaXMuX2RhdGFbSV1bMV08MCkpe2lmKHRoaXMudmFyeUJhckNvbG9yJiYhdGhpcy5fc3RhY2spe2lmKHRoaXMudXNlTmVnYXRpdmVDb2xvcnMpe0EuZmlsbFN0eWxlPXUubmV4dCgpfWVsc2V7QS5maWxsU3R5bGU9Qi5uZXh0KCl9fWVsc2V7QS5maWxsU3R5bGU9TX19ZWxzZXtpZih0aGlzLnZhcnlCYXJDb2xvciYmIXRoaXMuX3N0YWNrKXtBLmZpbGxTdHlsZT1CLm5leHQoKX1lbHNle0EuZmlsbFN0eWxlPXR9fWlmKCF0aGlzLmZpbGxUb1plcm98fHRoaXMuX3Bsb3REYXRhW0ldWzFdPj0wKXtILnB1c2goW3ItdGhpcy5iYXJXaWR0aC8yLG9dKTtILnB1c2goW3ItdGhpcy5iYXJXaWR0aC8yLExbSV1bMV1dKTtILnB1c2goW3IrdGhpcy5iYXJXaWR0aC8yLExbSV1bMV1dKTtILnB1c2goW3IrdGhpcy5iYXJXaWR0aC8yLG9dKX1lbHNle0gucHVzaChbci10aGlzLmJhcldpZHRoLzIsTFtJXVsxXV0pO0gucHVzaChbci10aGlzLmJhcldpZHRoLzIsb10pO0gucHVzaChbcit0aGlzLmJhcldpZHRoLzIsb10pO0gucHVzaChbcit0aGlzLmJhcldpZHRoLzIsTFtJXVsxXV0pfXRoaXMuX2JhclBvaW50cy5wdXNoKEgpO2lmKHcmJiF0aGlzLl9zdGFjayl7dmFyIHo9ZC5leHRlbmQodHJ1ZSx7fSxBKTtkZWxldGUgei5maWxsU3R5bGU7dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KEUsSCx6KX12YXIgbj1BLmZpbGxTdHlsZXx8dGhpcy5jb2xvcjt0aGlzLl9kYXRhQ29sb3JzLnB1c2gobik7dGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmRyYXcoRSxILEEpfX1lbHNle2lmKHRoaXMuYmFyRGlyZWN0aW9uPT0iaG9yaXpvbnRhbCIpe2Zvcih2YXIgST0wO0k8TC5sZW5ndGg7SSsrKXtpZighdGhpcy5fc3RhY2smJnRoaXMuZGF0YVtJXVswXT09bnVsbCl7Y29udGludWV9SD1bXTtyPUxbSV1bMV0tdGhpcy5fYmFyTnVkZ2U7UDtpZih0aGlzLl9zdGFjayYmdGhpcy5fcHJldkdyaWREYXRhLmxlbmd0aCl7UD1pKHRoaXMuaW5kZXgsSSx0aGlzLl9wbG90RGF0YVtJXVswXSxHLCJ4Iil9ZWxzZXtpZih0aGlzLmZpbGxUb1plcm8pe1A9dGhpcy5feGF4aXMuc2VyaWVzX3UycCgwKX1lbHNle2lmKHRoaXMud2F0ZXJmYWxsJiZJPjAmJkk8dGhpcy5ncmlkRGF0YS5sZW5ndGgtMSl7UD10aGlzLmdyaWREYXRhW0ktMV1bMF19ZWxzZXtpZih0aGlzLndhdGVyZmFsbCYmST09MCYmSTx0aGlzLmdyaWREYXRhLmxlbmd0aC0xKXtpZih0aGlzLl94YXhpcy5taW48PTAmJnRoaXMuX3hheGlzLm1heD49MCl7UD10aGlzLl94YXhpcy5zZXJpZXNfdTJwKDApfWVsc2V7aWYodGhpcy5feGF4aXMubWluPjApe1A9MH1lbHNle1A9MH19fWVsc2V7aWYodGhpcy53YXRlcmZhbGwmJkk9PXRoaXMuZ3JpZERhdGEubGVuZ3RoLTEpe2lmKHRoaXMuX3hheGlzLm1pbjw9MCYmdGhpcy5feGF4aXMubWF4Pj0wKXtQPXRoaXMuX3hheGlzLnNlcmllc191MnAoMCl9ZWxzZXtpZih0aGlzLl94YXhpcy5taW4+MCl7UD0wfWVsc2V7UD1FLmNhbnZhcy53aWR0aH19fWVsc2V7UD0wfX19fX1pZigodGhpcy5maWxsVG9aZXJvJiZ0aGlzLl9wbG90RGF0YVtJXVswXTwwKXx8KHRoaXMud2F0ZXJmYWxsJiZ0aGlzLl9kYXRhW0ldWzBdPDApKXtpZih0aGlzLnZhcnlCYXJDb2xvciYmIXRoaXMuX3N0YWNrKXtpZih0aGlzLnVzZU5lZ2F0aXZlQ29sb3JzKXtBLmZpbGxTdHlsZT11Lm5leHQoKX1lbHNle0EuZmlsbFN0eWxlPUIubmV4dCgpfX1lbHNle0EuZmlsbFN0eWxlPU19fWVsc2V7aWYodGhpcy52YXJ5QmFyQ29sb3ImJiF0aGlzLl9zdGFjayl7QS5maWxsU3R5bGU9Qi5uZXh0KCl9ZWxzZXtBLmZpbGxTdHlsZT10fX1pZighdGhpcy5maWxsVG9aZXJvfHx0aGlzLl9wbG90RGF0YVtJXVswXT49MCl7SC5wdXNoKFtQLHIrdGhpcy5iYXJXaWR0aC8yXSk7SC5wdXNoKFtQLHItdGhpcy5iYXJXaWR0aC8yXSk7SC5wdXNoKFtMW0ldWzBdLHItdGhpcy5iYXJXaWR0aC8yXSk7SC5wdXNoKFtMW0ldWzBdLHIrdGhpcy5iYXJXaWR0aC8yXSl9ZWxzZXtILnB1c2goW0xbSV1bMF0scit0aGlzLmJhcldpZHRoLzJdKTtILnB1c2goW0xbSV1bMF0sci10aGlzLmJhcldpZHRoLzJdKTtILnB1c2goW1Asci10aGlzLmJhcldpZHRoLzJdKTtILnB1c2goW1Ascit0aGlzLmJhcldpZHRoLzJdKX10aGlzLl9iYXJQb2ludHMucHVzaChIKTtpZih3JiYhdGhpcy5fc3RhY2spe3ZhciB6PWQuZXh0ZW5kKHRydWUse30sQSk7ZGVsZXRlIHouZmlsbFN0eWxlO3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhFLEgseil9dmFyIG49QS5maWxsU3R5bGV8fHRoaXMuY29sb3I7dGhpcy5fZGF0YUNvbG9ycy5wdXNoKG4pO3RoaXMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5kcmF3KEUsSCxBKX19fX1pZih0aGlzLmhpZ2hsaWdodENvbG9ycy5sZW5ndGg9PTApe3RoaXMuaGlnaGxpZ2h0Q29sb3JzPWQuanFwbG90LmNvbXB1dGVIaWdobGlnaHRDb2xvcnModGhpcy5fZGF0YUNvbG9ycyl9ZWxzZXtpZih0eXBlb2YodGhpcy5oaWdobGlnaHRDb2xvcnMpPT0ic3RyaW5nIil7dmFyIE49dGhpcy5oaWdobGlnaHRDb2xvcnM7dGhpcy5oaWdobGlnaHRDb2xvcnM9W107Zm9yKHZhciBJPTA7STx0aGlzLl9kYXRhQ29sb3JzLmxlbmd0aDtJKyspe3RoaXMuaGlnaGxpZ2h0Q29sb3JzLnB1c2goTil9fX19O2QuanFwbG90LkJhclJlbmRlcmVyLnByb3RvdHlwZS5kcmF3U2hhZG93PWZ1bmN0aW9uKHosRyxwLEIpe3ZhciBEO3ZhciB3PShwIT11bmRlZmluZWQpP3A6e307dmFyIHQ9KHcuc2hhZG93IT11bmRlZmluZWQpP3cuc2hhZG93OnRoaXMuc2hhZG93O3ZhciBJPSh3LnNob3dMaW5lIT11bmRlZmluZWQpP3cuc2hvd0xpbmU6dGhpcy5zaG93TGluZTt2YXIgQT0ody5maWxsIT11bmRlZmluZWQpP3cuZmlsbDp0aGlzLmZpbGw7dmFyIG89dGhpcy54YXhpczt2YXIgRT10aGlzLnlheGlzO3ZhciB2PXRoaXMuX3hheGlzLnNlcmllc191MnA7dmFyIEY9dGhpcy5feWF4aXMuc2VyaWVzX3UycDt2YXIgeSxDLHgsdSxzLHI7aWYodGhpcy5fc3RhY2smJnRoaXMuc2hhZG93KXtpZih0aGlzLmJhcldpZHRoPT1udWxsKXt0aGlzLnJlbmRlcmVyLnNldEJhcldpZHRoLmNhbGwodGhpcyl9dmFyIEg9dGhpcy5fcGxvdFNlcmllc0luZm89dGhpcy5yZW5kZXJlci5jYWxjU2VyaWVzTnVtYmVycy5jYWxsKHRoaXMpO3U9SFswXTtzPUhbMV07cj1IWzJdO2lmKHRoaXMuX3N0YWNrKXt0aGlzLl9iYXJOdWRnZT0wfWVsc2V7dGhpcy5fYmFyTnVkZ2U9KC1NYXRoLmFicyhzLzItMC41KStyKSoodGhpcy5iYXJXaWR0aCt0aGlzLmJhclBhZGRpbmcpfWlmKEkpe2lmKHRoaXMuYmFyRGlyZWN0aW9uPT0idmVydGljYWwiKXtmb3IodmFyIEQ9MDtEPEcubGVuZ3RoO0QrKyl7aWYodGhpcy5kYXRhW0RdWzFdPT1udWxsKXtjb250aW51ZX1DPVtdO3ZhciBxPUdbRF1bMF0rdGhpcy5fYmFyTnVkZ2U7dmFyIG47aWYodGhpcy5fc3RhY2smJnRoaXMuX3ByZXZHcmlkRGF0YS5sZW5ndGgpe249aSh0aGlzLmluZGV4LEQsdGhpcy5fcGxvdERhdGFbRF1bMV0sQiwieSIpfWVsc2V7aWYodGhpcy5maWxsVG9aZXJvKXtuPXRoaXMuX3lheGlzLnNlcmllc191MnAoMCl9ZWxzZXtuPXouY2FudmFzLmhlaWdodH19Qy5wdXNoKFtxLXRoaXMuYmFyV2lkdGgvMixuXSk7Qy5wdXNoKFtxLXRoaXMuYmFyV2lkdGgvMixHW0RdWzFdXSk7Qy5wdXNoKFtxK3RoaXMuYmFyV2lkdGgvMixHW0RdWzFdXSk7Qy5wdXNoKFtxK3RoaXMuYmFyV2lkdGgvMixuXSk7dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KHosQyx3KX19ZWxzZXtpZih0aGlzLmJhckRpcmVjdGlvbj09Imhvcml6b250YWwiKXtmb3IodmFyIEQ9MDtEPEcubGVuZ3RoO0QrKyl7aWYodGhpcy5kYXRhW0RdWzBdPT1udWxsKXtjb250aW51ZX1DPVtdO3ZhciBxPUdbRF1bMV0tdGhpcy5fYmFyTnVkZ2U7dmFyIEo7aWYodGhpcy5fc3RhY2smJnRoaXMuX3ByZXZHcmlkRGF0YS5sZW5ndGgpe0o9aSh0aGlzLmluZGV4LEQsdGhpcy5fcGxvdERhdGFbRF1bMF0sQiwieCIpfWVsc2V7aWYodGhpcy5maWxsVG9aZXJvKXtKPXRoaXMuX3hheGlzLnNlcmllc191MnAoMCl9ZWxzZXtKPTB9fUMucHVzaChbSixxK3RoaXMuYmFyV2lkdGgvMl0pO0MucHVzaChbR1tEXVswXSxxK3RoaXMuYmFyV2lkdGgvMl0pO0MucHVzaChbR1tEXVswXSxxLXRoaXMuYmFyV2lkdGgvMl0pO0MucHVzaChbSixxLXRoaXMuYmFyV2lkdGgvMl0pO3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyh6LEMsdyl9fX19fX07ZnVuY3Rpb24gaChxLHAsbil7Zm9yKHZhciBvPTA7bzx0aGlzLnNlcmllcy5sZW5ndGg7bysrKXtpZih0aGlzLnNlcmllc1tvXS5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09ZC5qcXBsb3QuQmFyUmVuZGVyZXIpe2lmKHRoaXMuc2VyaWVzW29dLmhpZ2hsaWdodE1vdXNlT3Zlcil7dGhpcy5zZXJpZXNbb10uaGlnaGxpZ2h0TW91c2VEb3duPWZhbHNlfX19fWZ1bmN0aW9uIGooKXtpZih0aGlzLnBsdWdpbnMuYmFyUmVuZGVyZXImJnRoaXMucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRDYW52YXMpe3RoaXMucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRDYW52YXMucmVzZXRDYW52YXMoKTt0aGlzLnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzPW51bGx9dGhpcy5wbHVnaW5zLmJhclJlbmRlcmVyPXtoaWdobGlnaHRlZFNlcmllc0luZGV4Om51bGx9O3RoaXMucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRDYW52YXM9bmV3IGQuanFwbG90LkdlbmVyaWNDYW52YXMoKTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZSh0aGlzLnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsImpxcGxvdC1iYXJSZW5kZXJlci1oaWdobGlnaHQtY2FudmFzIix0aGlzLl9wbG90RGltZW5zaW9ucyx0aGlzKSk7dGhpcy5wbHVnaW5zLmJhclJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5zZXRDb250ZXh0KCk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCJtb3VzZWxlYXZlIix7cGxvdDp0aGlzfSxmdW5jdGlvbihuKXtrKG4uZGF0YS5wbG90KX0pfWZ1bmN0aW9uIGModSx0LHEscCl7dmFyIG89dS5zZXJpZXNbdF07dmFyIG49dS5wbHVnaW5zLmJhclJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcztuLl9jdHguY2xlYXJSZWN0KDAsMCxuLl9jdHguY2FudmFzLndpZHRoLG4uX2N0eC5jYW52YXMuaGVpZ2h0KTtvLl9oaWdobGlnaHRlZFBvaW50PXE7dS5wbHVnaW5zLmJhclJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg9dDt2YXIgcj17ZmlsbFN0eWxlOm8uaGlnaGxpZ2h0Q29sb3JzW3FdfTtvLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuZHJhdyhuLl9jdHgscCxyKTtuPW51bGx9ZnVuY3Rpb24gayhwKXt2YXIgbj1wLnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzO24uX2N0eC5jbGVhclJlY3QoMCwwLG4uX2N0eC5jYW52YXMud2lkdGgsbi5fY3R4LmNhbnZhcy5oZWlnaHQpO2Zvcih2YXIgbz0wO288cC5zZXJpZXMubGVuZ3RoO28rKyl7cC5zZXJpZXNbb10uX2hpZ2hsaWdodGVkUG9pbnQ9bnVsbH1wLnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleD1udWxsO3AudGFyZ2V0LnRyaWdnZXIoImpxcGxvdERhdGFVbmhpZ2hsaWdodCIpO249bnVsbH1mdW5jdGlvbiBiKHIscSx1LHQscyl7aWYodCl7dmFyIHA9W3Quc2VyaWVzSW5kZXgsdC5wb2ludEluZGV4LHQuZGF0YV07dmFyIG89alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhTW91c2VPdmVyIik7by5wYWdlWD1yLnBhZ2VYO28ucGFnZVk9ci5wYWdlWTtzLnRhcmdldC50cmlnZ2VyKG8scCk7aWYocy5zZXJpZXNbcFswXV0uc2hvdyYmcy5zZXJpZXNbcFswXV0uaGlnaGxpZ2h0TW91c2VPdmVyJiYhKHBbMF09PXMucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4JiZwWzFdPT1zLnNlcmllc1twWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpe3ZhciBuPWpRdWVyeS5FdmVudCgianFwbG90RGF0YUhpZ2hsaWdodCIpO24ud2hpY2g9ci53aGljaDtuLnBhZ2VYPXIucGFnZVg7bi5wYWdlWT1yLnBhZ2VZO3MudGFyZ2V0LnRyaWdnZXIobixwKTtjKHMsdC5zZXJpZXNJbmRleCx0LnBvaW50SW5kZXgsdC5wb2ludHMpfX1lbHNle2lmKHQ9PW51bGwpe2socyl9fX1mdW5jdGlvbiBhKHEscCx0LHMscil7aWYocyl7dmFyIG89W3Muc2VyaWVzSW5kZXgscy5wb2ludEluZGV4LHMuZGF0YV07aWYoci5zZXJpZXNbb1swXV0uaGlnaGxpZ2h0TW91c2VEb3duJiYhKG9bMF09PXIucGx1Z2lucy5iYXJSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4JiZvWzFdPT1yLnNlcmllc1tvWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpe3ZhciBuPWpRdWVyeS5FdmVudCgianFwbG90RGF0YUhpZ2hsaWdodCIpO24ud2hpY2g9cS53aGljaDtuLnBhZ2VYPXEucGFnZVg7bi5wYWdlWT1xLnBhZ2VZO3IudGFyZ2V0LnRyaWdnZXIobixvKTtjKHIscy5zZXJpZXNJbmRleCxzLnBvaW50SW5kZXgscy5wb2ludHMpfX1lbHNle2lmKHM9PW51bGwpe2socil9fX1mdW5jdGlvbiBsKHAsbyxzLHIscSl7dmFyIG49cS5wbHVnaW5zLmJhclJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg7aWYobiE9bnVsbCYmcS5zZXJpZXNbbl0uaGlnaGxpZ2h0TW91c2VEb3duKXtrKHEpfX1mdW5jdGlvbiBlKHEscCx0LHMscil7aWYocyl7dmFyIG89W3Muc2VyaWVzSW5kZXgscy5wb2ludEluZGV4LHMuZGF0YV07dmFyIG49alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhQ2xpY2siKTtuLndoaWNoPXEud2hpY2g7bi5wYWdlWD1xLnBhZ2VYO24ucGFnZVk9cS5wYWdlWTtyLnRhcmdldC50cmlnZ2VyKG4sbyl9fWZ1bmN0aW9uIG0ocixxLHUsdCxzKXtpZih0KXt2YXIgcD1bdC5zZXJpZXNJbmRleCx0LnBvaW50SW5kZXgsdC5kYXRhXTt2YXIgbj1zLnBsdWdpbnMuYmFyUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDtpZihuIT1udWxsJiZzLnNlcmllc1tuXS5oaWdobGlnaHRNb3VzZURvd24pe2socyl9dmFyIG89alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhUmlnaHRDbGljayIpO28ud2hpY2g9ci53aGljaDtvLnBhZ2VYPXIucGFnZVg7by5wYWdlWT1yLnBhZ2VZO3MudGFyZ2V0LnRyaWdnZXIobyxwKX19fSkoalF1ZXJ5KTs=]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oYil7Yi5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlcj1mdW5jdGlvbigpe2IuanFwbG90LkxpbmVSZW5kZXJlci5jYWxsKHRoaXMpfTtiLmpxcGxvdC5CZXppZXJDdXJ2ZVJlbmRlcmVyLnByb3RvdHlwZT1uZXcgYi5qcXBsb3QuTGluZVJlbmRlcmVyKCk7Yi5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9Yi5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlcjtiLmpxcGxvdC5CZXppZXJDdXJ2ZVJlbmRlcmVyLnByb3RvdHlwZS5zZXRHcmlkRGF0YT1mdW5jdGlvbihoKXt2YXIgZT10aGlzLl94YXhpcy5zZXJpZXNfdTJwO3ZhciBnPXRoaXMuX3lheGlzLnNlcmllc191MnA7dmFyIGY9dGhpcy5kYXRhO3RoaXMuZ3JpZERhdGE9W107dGhpcy5fcHJldkdyaWREYXRhPVtdO3ZhciBkPXRoaXMuaW5kZXg7aWYoZi5sZW5ndGg9PTIpe2lmKGQ9PTApe3RoaXMuZ3JpZERhdGE9W1tlLmNhbGwodGhpcy5feGF4aXMsZlswXVswXSksZy5jYWxsKHRoaXMuX3lheGlzLGZbMF1bMV0pXSxbZS5jYWxsKHRoaXMuX3hheGlzLGZbMV1bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyxmWzFdWzFdKSxlLmNhbGwodGhpcy5feGF4aXMsZlsxXVsyXSksZy5jYWxsKHRoaXMuX3lheGlzLGZbMV1bM10pLGUuY2FsbCh0aGlzLl94YXhpcyxmWzFdWzRdKSxnLmNhbGwodGhpcy5feWF4aXMsZlsxXVs1XSldLFtlLmNhbGwodGhpcy5feGF4aXMsZlsxXVs0XSksZy5jYWxsKHRoaXMuX3lheGlzLHRoaXMuX3lheGlzLm1pbildLFtlLmNhbGwodGhpcy5feGF4aXMsZlswXVswXSksZy5jYWxsKHRoaXMuX3lheGlzLHRoaXMuX3lheGlzLm1pbildXX1lbHNle3ZhciBjPWguc2VyaWVzW2QtMV0uZGF0YTt0aGlzLmdyaWREYXRhPVtbZS5jYWxsKHRoaXMuX3hheGlzLGZbMF1bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyxmWzBdWzFdKV0sW2UuY2FsbCh0aGlzLl94YXhpcyxmWzFdWzBdKSxnLmNhbGwodGhpcy5feWF4aXMsZlsxXVsxXSksZS5jYWxsKHRoaXMuX3hheGlzLGZbMV1bMl0pLGcuY2FsbCh0aGlzLl95YXhpcyxmWzFdWzNdKSxlLmNhbGwodGhpcy5feGF4aXMsZlsxXVs0XSksZy5jYWxsKHRoaXMuX3lheGlzLGZbMV1bNV0pXSxbZS5jYWxsKHRoaXMuX3hheGlzLGNbMV1bNF0pLGcuY2FsbCh0aGlzLl95YXhpcyxjWzFdWzVdKV0sW2UuY2FsbCh0aGlzLl94YXhpcyxjWzFdWzJdKSxnLmNhbGwodGhpcy5feWF4aXMsY1sxXVszXSksZS5jYWxsKHRoaXMuX3hheGlzLGNbMV1bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyxjWzFdWzFdKSxlLmNhbGwodGhpcy5feGF4aXMsY1swXVswXSksZy5jYWxsKHRoaXMuX3lheGlzLGNbMF1bMV0pXV19fWVsc2V7aWYoZD09MCl7dGhpcy5ncmlkRGF0YT1bW2UuY2FsbCh0aGlzLl94YXhpcyxmWzBdWzBdKSxnLmNhbGwodGhpcy5feWF4aXMsZlswXVsxXSldLFtlLmNhbGwodGhpcy5feGF4aXMsZlsxXVswXSksZy5jYWxsKHRoaXMuX3lheGlzLGZbMV1bMV0pLGUuY2FsbCh0aGlzLl94YXhpcyxmWzJdWzBdKSxnLmNhbGwodGhpcy5feWF4aXMsZlsyXVsxXSksZS5jYWxsKHRoaXMuX3hheGlzLGZbM11bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyxmWzNdWzFdKV0sW2UuY2FsbCh0aGlzLl94YXhpcyxmWzNdWzFdKSxnLmNhbGwodGhpcy5feWF4aXMsdGhpcy5feWF4aXMubWluKV0sW2UuY2FsbCh0aGlzLl94YXhpcyxmWzBdWzBdKSxnLmNhbGwodGhpcy5feWF4aXMsdGhpcy5feWF4aXMubWluKV1dfWVsc2V7dmFyIGM9aC5zZXJpZXNbZC0xXS5kYXRhO3RoaXMuZ3JpZERhdGE9W1tlLmNhbGwodGhpcy5feGF4aXMsZlswXVswXSksZy5jYWxsKHRoaXMuX3lheGlzLGZbMF1bMV0pXSxbZS5jYWxsKHRoaXMuX3hheGlzLGZbMV1bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyxmWzFdWzFdKSxlLmNhbGwodGhpcy5feGF4aXMsZlsyXVswXSksZy5jYWxsKHRoaXMuX3lheGlzLGZbMl1bMV0pLGUuY2FsbCh0aGlzLl94YXhpcyxmWzNdWzBdKSxnLmNhbGwodGhpcy5feWF4aXMsZlszXVsxXSldLFtlLmNhbGwodGhpcy5feGF4aXMsY1szXVswXSksZy5jYWxsKHRoaXMuX3lheGlzLGNbM11bMV0pXSxbZS5jYWxsKHRoaXMuX3hheGlzLGNbMl1bMF0pLGcuY2FsbCh0aGlzLl95YXhpcyxjWzJdWzFdKSxlLmNhbGwodGhpcy5feGF4aXMsY1sxXVswXSksZy5jYWxsKHRoaXMuX3lheGlzLGNbMV1bMV0pLGUuY2FsbCh0aGlzLl94YXhpcyxjWzBdWzBdKSxnLmNhbGwodGhpcy5feWF4aXMsY1swXVsxXSldXX19fTtiLmpxcGxvdC5CZXppZXJDdXJ2ZVJlbmRlcmVyLnByb3RvdHlwZS5tYWtlR3JpZERhdGE9ZnVuY3Rpb24oZyxpKXt2YXIgZj10aGlzLl94YXhpcy5zZXJpZXNfdTJwO3ZhciBoPXRoaXMuX3lheGlzLnNlcmllc191MnA7dmFyIGU9W107dmFyIGo9W107dmFyIGQ9dGhpcy5pbmRleDtpZihnLmxlbmd0aD09Mil7aWYoZD09MCl7ZT1bW2YuY2FsbCh0aGlzLl94YXhpcyxnWzBdWzBdKSxoLmNhbGwodGhpcy5feWF4aXMsZ1swXVsxXSldLFtmLmNhbGwodGhpcy5feGF4aXMsZ1sxXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLGdbMV1bMV0pLGYuY2FsbCh0aGlzLl94YXhpcyxnWzFdWzJdKSxoLmNhbGwodGhpcy5feWF4aXMsZ1sxXVszXSksZi5jYWxsKHRoaXMuX3hheGlzLGdbMV1bNF0pLGguY2FsbCh0aGlzLl95YXhpcyxnWzFdWzVdKV0sW2YuY2FsbCh0aGlzLl94YXhpcyxnWzFdWzRdKSxoLmNhbGwodGhpcy5feWF4aXMsdGhpcy5feWF4aXMubWluKV0sW2YuY2FsbCh0aGlzLl94YXhpcyxnWzBdWzBdKSxoLmNhbGwodGhpcy5feWF4aXMsdGhpcy5feWF4aXMubWluKV1dfWVsc2V7dmFyIGM9aS5zZXJpZXNbZC0xXS5kYXRhO2U9W1tmLmNhbGwodGhpcy5feGF4aXMsZ1swXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLGdbMF1bMV0pXSxbZi5jYWxsKHRoaXMuX3hheGlzLGdbMV1bMF0pLGguY2FsbCh0aGlzLl95YXhpcyxnWzFdWzFdKSxmLmNhbGwodGhpcy5feGF4aXMsZ1sxXVsyXSksaC5jYWxsKHRoaXMuX3lheGlzLGdbMV1bM10pLGYuY2FsbCh0aGlzLl94YXhpcyxnWzFdWzRdKSxoLmNhbGwodGhpcy5feWF4aXMsZ1sxXVs1XSldLFtmLmNhbGwodGhpcy5feGF4aXMsY1sxXVs0XSksaC5jYWxsKHRoaXMuX3lheGlzLGNbMV1bNV0pXSxbZi5jYWxsKHRoaXMuX3hheGlzLGNbMV1bMl0pLGguY2FsbCh0aGlzLl95YXhpcyxjWzFdWzNdKSxmLmNhbGwodGhpcy5feGF4aXMsY1sxXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLGNbMV1bMV0pLGYuY2FsbCh0aGlzLl94YXhpcyxjWzBdWzBdKSxoLmNhbGwodGhpcy5feWF4aXMsY1swXVsxXSldXX19ZWxzZXtpZihkPT0wKXtlPVtbZi5jYWxsKHRoaXMuX3hheGlzLGdbMF1bMF0pLGguY2FsbCh0aGlzLl95YXhpcyxnWzBdWzFdKV0sW2YuY2FsbCh0aGlzLl94YXhpcyxnWzFdWzBdKSxoLmNhbGwodGhpcy5feWF4aXMsZ1sxXVsxXSksZi5jYWxsKHRoaXMuX3hheGlzLGdbMl1bMF0pLGguY2FsbCh0aGlzLl95YXhpcyxnWzJdWzFdKSxmLmNhbGwodGhpcy5feGF4aXMsZ1szXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLGdbM11bMV0pXSxbZi5jYWxsKHRoaXMuX3hheGlzLGdbM11bMV0pLGguY2FsbCh0aGlzLl95YXhpcyx0aGlzLl95YXhpcy5taW4pXSxbZi5jYWxsKHRoaXMuX3hheGlzLGdbMF1bMF0pLGguY2FsbCh0aGlzLl95YXhpcyx0aGlzLl95YXhpcy5taW4pXV19ZWxzZXt2YXIgYz1pLnNlcmllc1tkLTFdLmRhdGE7ZT1bW2YuY2FsbCh0aGlzLl94YXhpcyxnWzBdWzBdKSxoLmNhbGwodGhpcy5feWF4aXMsZ1swXVsxXSldLFtmLmNhbGwodGhpcy5feGF4aXMsZ1sxXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLGdbMV1bMV0pLGYuY2FsbCh0aGlzLl94YXhpcyxnWzJdWzBdKSxoLmNhbGwodGhpcy5feWF4aXMsZ1syXVsxXSksZi5jYWxsKHRoaXMuX3hheGlzLGdbM11bMF0pLGguY2FsbCh0aGlzLl95YXhpcyxnWzNdWzFdKV0sW2YuY2FsbCh0aGlzLl94YXhpcyxjWzNdWzBdKSxoLmNhbGwodGhpcy5feWF4aXMsY1szXVsxXSldLFtmLmNhbGwodGhpcy5feGF4aXMsY1syXVswXSksaC5jYWxsKHRoaXMuX3lheGlzLGNbMl1bMV0pLGYuY2FsbCh0aGlzLl94YXhpcyxjWzFdWzBdKSxoLmNhbGwodGhpcy5feWF4aXMsY1sxXVsxXSksZi5jYWxsKHRoaXMuX3hheGlzLGNbMF1bMF0pLGguY2FsbCh0aGlzLl95YXhpcyxjWzBdWzFdKV1dfX1yZXR1cm4gZX07Yi5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbihjLGcsZCl7dmFyIGU7Yy5zYXZlKCk7aWYoZy5sZW5ndGgpe2lmKHRoaXMuc2hvd0xpbmUpe2Muc2F2ZSgpO3ZhciBmPShkIT1udWxsKT9kOnt9O2MuZmlsbFN0eWxlPWYuZmlsbFN0eWxlfHx0aGlzLmNvbG9yO2MuYmVnaW5QYXRoKCk7Yy5tb3ZlVG8oZ1swXVswXSxnWzBdWzFdKTtjLmJlemllckN1cnZlVG8oZ1sxXVswXSxnWzFdWzFdLGdbMV1bMl0sZ1sxXVszXSxnWzFdWzRdLGdbMV1bNV0pO2MubGluZVRvKGdbMl1bMF0sZ1syXVsxXSk7aWYoZ1szXS5sZW5ndGg9PTIpe2MubGluZVRvKGdbM11bMF0sZ1szXVsxXSl9ZWxzZXtjLmJlemllckN1cnZlVG8oZ1szXVswXSxnWzNdWzFdLGdbM11bMl0sZ1szXVszXSxnWzNdWzRdLGdbM11bNV0pfWMuY2xvc2VQYXRoKCk7Yy5maWxsKCk7Yy5yZXN0b3JlKCl9fWMucmVzdG9yZSgpfTtiLmpxcGxvdC5CZXppZXJDdXJ2ZVJlbmRlcmVyLnByb3RvdHlwZS5kcmF3U2hhZG93PWZ1bmN0aW9uKGMsZSxkKXt9O2IuanFwbG90LkJlemllckF4aXNSZW5kZXJlcj1mdW5jdGlvbigpe2IuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpfTtiLmpxcGxvdC5CZXppZXJBeGlzUmVuZGVyZXIucHJvdG90eXBlPW5ldyBiLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIoKTtiLmpxcGxvdC5CZXppZXJBeGlzUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWIuanFwbG90LkJlemllckF4aXNSZW5kZXJlcjtiLmpxcGxvdC5CZXppZXJBeGlzUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZil7Yi5leHRlbmQodHJ1ZSx0aGlzLGYpO3ZhciBjPXRoaXMuX2RhdGFCb3VuZHM7Zm9yKHZhciBnPTA7Zzx0aGlzLl9zZXJpZXMubGVuZ3RoO2crKyl7dmFyIGg9dGhpcy5fc2VyaWVzW2ddO3ZhciBrPWguZGF0YTtpZihrLmxlbmd0aD09NCl7Zm9yKHZhciBlPTA7ZTxrLmxlbmd0aDtlKyspe2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7aWYoa1tlXVswXTxjLm1pbnx8Yy5taW49PW51bGwpe2MubWluPWtbZV1bMF19aWYoa1tlXVswXT5jLm1heHx8Yy5tYXg9PW51bGwpe2MubWF4PWtbZV1bMF19fWVsc2V7aWYoa1tlXVsxXTxjLm1pbnx8Yy5taW49PW51bGwpe2MubWluPWtbZV1bMV19aWYoa1tlXVsxXT5jLm1heHx8Yy5tYXg9PW51bGwpe2MubWF4PWtbZV1bMV19fX19ZWxzZXtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe2lmKGtbMF1bMF08Yy5taW58fGMubWluPT1udWxsKXtjLm1pbj1rWzBdWzBdfWlmKGtbMF1bMF0+Yy5tYXh8fGMubWF4PT1udWxsKXtjLm1heD1rWzBdWzBdfWZvcih2YXIgZT0wO2U8NTtlKz0yKXtpZihrWzFdW2VdPGMubWlufHxjLm1pbj09bnVsbCl7Yy5taW49a1sxXVtlXX1pZihrWzFdW2VdPmMubWF4fHxjLm1heD09bnVsbCl7Yy5tYXg9a1sxXVtlXX19fWVsc2V7aWYoa1swXVsxXTxjLm1pbnx8Yy5taW49PW51bGwpe2MubWluPWtbMF1bMV19aWYoa1swXVsxXT5jLm1heHx8Yy5tYXg9PW51bGwpe2MubWF4PWtbMF1bMV19Zm9yKHZhciBlPTE7ZTw2O2UrPTIpe2lmKGtbMV1bZV08Yy5taW58fGMubWluPT1udWxsKXtjLm1pbj1rWzFdW2VdfWlmKGtbMV1bZV0+Yy5tYXh8fGMubWF4PT1udWxsKXtjLm1heD1rWzFdW2VdfX19fX19O2Z1bmN0aW9uIGEoZyxmLGQpe2Q9ZHx8e307ZC5heGVzRGVmYXVsdHM9Yi5leHRlbmQodHJ1ZSx7cGFkOjB9LGQuYXhlc0RlZmF1bHRzKTtkLnNlcmllc0RlZmF1bHRzPWQuc2VyaWVzRGVmYXVsdHN8fHt9O2QubGVnZW5kPWIuZXh0ZW5kKHRydWUse3BsYWNlbWVudDoib3V0c2lkZSJ9LGQubGVnZW5kKTt2YXIgYz1mYWxzZTtpZihkLnNlcmllc0RlZmF1bHRzLnJlbmRlcmVyPT1iLmpxcGxvdC5CZXppZXJDdXJ2ZVJlbmRlcmVyKXtjPXRydWV9ZWxzZXtpZihkLnNlcmllcyl7Zm9yKHZhciBlPTA7ZTxkLnNlcmllcy5sZW5ndGg7ZSsrKXtpZihkLnNlcmllc1tlXS5yZW5kZXJlcj09Yi5qcXBsb3QuQmV6aWVyQ3VydmVSZW5kZXJlcil7Yz10cnVlfX19fWlmKGMpe2QuYXhlc0RlZmF1bHRzLnJlbmRlcmVyPWIuanFwbG90LkJlemllckF4aXNSZW5kZXJlcn19Yi5qcXBsb3QucHJlSW5pdEhvb2tzLnB1c2goYSl9KShqUXVlcnkpOw==]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oYSl7YS5qcXBsb3QuQmxvY2tSZW5kZXJlcj1mdW5jdGlvbigpe2EuanFwbG90LkxpbmVSZW5kZXJlci5jYWxsKHRoaXMpfTthLmpxcGxvdC5CbG9ja1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgYS5qcXBsb3QuTGluZVJlbmRlcmVyKCk7YS5qcXBsb3QuQmxvY2tSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9YS5qcXBsb3QuQmxvY2tSZW5kZXJlcjthLmpxcGxvdC5CbG9ja1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGIpe3RoaXMuY3NzPXtwYWRkaW5nOiIycHgiLGJvcmRlcjoiMXB4IHNvbGlkICM5OTkiLHRleHRBbGlnbjoiY2VudGVyIn07dGhpcy5lc2NhcGVIdG1sPWZhbHNlO3RoaXMuaW5zZXJ0QnJlYWtzPXRydWU7dGhpcy52YXJ5QmxvY2tDb2xvcnM9ZmFsc2U7YS5leHRlbmQodHJ1ZSx0aGlzLGIpO2lmKHRoaXMuY3NzLmJhY2tncm91bmRDb2xvcil7dGhpcy5jb2xvcj10aGlzLmNzcy5iYWNrZ3JvdW5kQ29sb3J9ZWxzZXtpZih0aGlzLmNzcy5iYWNrZ3JvdW5kKXt0aGlzLmNvbG9yPXRoaXMuY3NzLmJhY2tncm91bmR9ZWxzZXtpZighdGhpcy52YXJ5QmxvY2tDb2xvcnMpe3RoaXMuY3NzLmJhY2tncm91bmQ9dGhpcy5jb2xvcn19fXRoaXMuY2FudmFzPW5ldyBhLmpxcGxvdC5CbG9ja0NhbnZhcygpO3RoaXMuc2hhZG93Q2FudmFzPW5ldyBhLmpxcGxvdC5CbG9ja0NhbnZhcygpO3RoaXMuY2FudmFzLl9wbG90RGltZW5zaW9ucz10aGlzLl9wbG90RGltZW5zaW9uczt0aGlzLnNoYWRvd0NhbnZhcy5fcGxvdERpbWVuc2lvbnM9dGhpcy5fcGxvdERpbWVuc2lvbnM7dGhpcy5fdHlwZT0iYmxvY2siO3RoaXMubW92ZUJsb2NrPWZ1bmN0aW9uKGwsaixpLGUpe3ZhciBjPXRoaXMuY2FudmFzLl9lbGVtLmNoaWxkcmVuKCI6ZXEoIitsKyIpIik7dGhpcy5kYXRhW2xdWzBdPWo7dGhpcy5kYXRhW2xdWzFdPWk7dGhpcy5fcGxvdERhdGFbbF1bMF09ajt0aGlzLl9wbG90RGF0YVtsXVsxXT1pO3RoaXMuX3N0YWNrRGF0YVtsXVswXT1qO3RoaXMuX3N0YWNrRGF0YVtsXVsxXT1pO3RoaXMuZ3JpZERhdGFbbF1bMF09dGhpcy5feGF4aXMuc2VyaWVzX3UycChqKTt0aGlzLmdyaWREYXRhW2xdWzFdPXRoaXMuX3lheGlzLnNlcmllc191MnAoaSk7dmFyIGs9Yy5vdXRlcldpZHRoKCk7dmFyIGY9Yy5vdXRlckhlaWdodCgpO3ZhciBkPXRoaXMuZ3JpZERhdGFbbF1bMF0tay8yKyJweCI7dmFyIGc9dGhpcy5ncmlkRGF0YVtsXVsxXS1mLzIrInB4IjtpZihlKXtpZihwYXJzZUludChlLDEwKSl7ZT1wYXJzZUludChlLDEwKX1jLmFuaW1hdGUoe2xlZnQ6ZCx0b3A6Z30sZSl9ZWxzZXtjLmNzcyh7bGVmdDpkLHRvcDpnfSl9Yz1udWxsfX07YS5qcXBsb3QuQmxvY2tSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbihxLG8scil7aWYodGhpcy5wbHVnaW5zLnBvaW50TGFiZWxzKXt0aGlzLnBsdWdpbnMucG9pbnRMYWJlbHMuc2hvdz1mYWxzZX12YXIgZixjLGwsbyxwLGssbixnLGUsbTt2YXIgYj0ociE9dW5kZWZpbmVkKT9yOnt9O3ZhciBqPW5ldyBhLmpxcGxvdC5Db2xvckdlbmVyYXRvcih0aGlzLnNlcmllc0NvbG9ycyk7dGhpcy5jYW52YXMuX2VsZW0uZW1wdHkoKTtmb3IoZj0wO2Y8dGhpcy5ncmlkRGF0YS5sZW5ndGg7ZisrKXtsPXRoaXMuZGF0YVtmXTtvPXRoaXMuZ3JpZERhdGFbZl07cD0iIjtrPXt9O2lmKHR5cGVvZiBsWzJdPT0ic3RyaW5nIil7cD1sWzJdfWVsc2V7aWYodHlwZW9mIGxbMl09PSJvYmplY3QiKXtrPWxbMl19fWlmKHR5cGVvZiBsWzNdPT0ib2JqZWN0Iil7az1sWzNdfWlmKHRoaXMuaW5zZXJ0QnJlYWtzKXtwPXAucmVwbGFjZSgvIC9nLCI8YnIgLz4iKX1rPWEuZXh0ZW5kKHRydWUse30sdGhpcy5jc3Msayk7Yz1hKCc8ZGl2IHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTttYXJnaW4tbGVmdDphdXRvO21hcmdpbi1yaWdodDphdXRvOyI+PC9kaXY+Jyk7dGhpcy5jYW52YXMuX2VsZW0uYXBwZW5kKGMpO3RoaXMuZXNjYXBlSHRtbD9jLnRleHQocCk6Yy5odG1sKHApO2RlbGV0ZSBrLnBvc2l0aW9uO2RlbGV0ZSBrLm1hcmdpblJpZ2h0O2RlbGV0ZSBrLm1hcmdpbkxlZnQ7aWYoIWsuYmFja2dyb3VuZCYmIWsuYmFja2dyb3VuZENvbG9yJiYhay5iYWNrZ3JvdW5kSW1hZ2Upe2suYmFja2dyb3VuZD1qLm5leHQoKX1jLmNzcyhrKTtuPWMub3V0ZXJXaWR0aCgpO2c9Yy5vdXRlckhlaWdodCgpO2U9b1swXS1uLzIrInB4IjttPW9bMV0tZy8yKyJweCI7Yy5jc3Moe2xlZnQ6ZSx0b3A6bX0pO2M9bnVsbH19O2EuanFwbG90LkJsb2NrQ2FudmFzPWZ1bmN0aW9uKCl7YS5qcXBsb3QuRWxlbUNvbnRhaW5lci5jYWxsKHRoaXMpO3RoaXMuX2N0eH07YS5qcXBsb3QuQmxvY2tDYW52YXMucHJvdG90eXBlPW5ldyBhLmpxcGxvdC5FbGVtQ29udGFpbmVyKCk7YS5qcXBsb3QuQmxvY2tDYW52YXMucHJvdG90eXBlLmNvbnN0cnVjdG9yPWEuanFwbG90LkJsb2NrQ2FudmFzO2EuanFwbG90LkJsb2NrQ2FudmFzLnByb3RvdHlwZS5jcmVhdGVFbGVtZW50PWZ1bmN0aW9uKGksZSxjKXt0aGlzLl9vZmZzZXRzPWk7dmFyIGI9ImpxcGxvdC1ibG9ja0NhbnZhcyI7aWYoZSE9dW5kZWZpbmVkKXtiPWV9dmFyIGc7aWYodGhpcy5fZWxlbSl7Zz10aGlzLl9lbGVtLmdldCgwKX1lbHNle2c9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iil9aWYoYyE9dW5kZWZpbmVkKXt0aGlzLl9wbG90RGltZW5zaW9ucz1jfXZhciBkPXRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoLXRoaXMuX29mZnNldHMubGVmdC10aGlzLl9vZmZzZXRzLnJpZ2h0KyJweCI7dmFyIGY9dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0LXRoaXMuX29mZnNldHMudG9wLXRoaXMuX29mZnNldHMuYm90dG9tKyJweCI7dGhpcy5fZWxlbT1hKGcpO3RoaXMuX2VsZW0uY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHdpZHRoOmQsaGVpZ2h0OmYsbGVmdDp0aGlzLl9vZmZzZXRzLmxlZnQsdG9wOnRoaXMuX29mZnNldHMudG9wfSk7dGhpcy5fZWxlbS5hZGRDbGFzcyhiKTtyZXR1cm4gdGhpcy5fZWxlbX07YS5qcXBsb3QuQmxvY2tDYW52YXMucHJvdG90eXBlLnNldENvbnRleHQ9ZnVuY3Rpb24oKXt0aGlzLl9jdHg9e2NhbnZhczp7d2lkdGg6MCxoZWlnaHQ6MH0sY2xlYXJSZWN0OmZ1bmN0aW9uKCl7cmV0dXJuIG51bGx9fTtyZXR1cm4gdGhpcy5fY3R4fX0pKGpRdWVyeSk7]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oZil7dmFyIGQ9ZnVuY3Rpb24obSl7cmV0dXJuIE1hdGgubWF4LmFwcGx5KE1hdGgsbSl9O3ZhciBqPWZ1bmN0aW9uKG0pe3JldHVybiBNYXRoLm1pbi5hcHBseShNYXRoLG0pfTtmLmpxcGxvdC5CdWJibGVSZW5kZXJlcj1mdW5jdGlvbigpe2YuanFwbG90LkxpbmVSZW5kZXJlci5jYWxsKHRoaXMpfTtmLmpxcGxvdC5CdWJibGVSZW5kZXJlci5wcm90b3R5cGU9bmV3IGYuanFwbG90LkxpbmVSZW5kZXJlcigpO2YuanFwbG90LkJ1YmJsZVJlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1mLmpxcGxvdC5CdWJibGVSZW5kZXJlcjtmLmpxcGxvdC5CdWJibGVSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbih3LHQpe3RoaXMudmFyeUJ1YmJsZUNvbG9ycz10cnVlO3RoaXMuYXV0b3NjYWxlQnViYmxlcz10cnVlO3RoaXMuYXV0b3NjYWxlTXVsdGlwbGllcj0xO3RoaXMuYXV0b3NjYWxlUG9pbnRzRmFjdG9yPS0wLjA3O3RoaXMuZXNjYXBlSHRtbD10cnVlO3RoaXMuaGlnaGxpZ2h0TW91c2VPdmVyPXRydWU7dGhpcy5oaWdobGlnaHRNb3VzZURvd249ZmFsc2U7dGhpcy5oaWdobGlnaHRDb2xvcnM9W107dGhpcy5idWJibGVBbHBoYT0xO3RoaXMuaGlnaGxpZ2h0QWxwaGE9bnVsbDt0aGlzLmJ1YmJsZUdyYWRpZW50cz1mYWxzZTt0aGlzLnNob3dMYWJlbHM9dHJ1ZTt0aGlzLnJhZGlpPVtdO3RoaXMubWF4UmFkaXVzPTA7dGhpcy5faGlnaGxpZ2h0ZWRQb2ludD1udWxsO3RoaXMubGFiZWxzPVtdO3RoaXMuYnViYmxlQ2FudmFzZXM9W107dGhpcy5fdHlwZT0iYnViYmxlIjtpZih3LmhpZ2hsaWdodE1vdXNlRG93biYmdy5oaWdobGlnaHRNb3VzZU92ZXI9PW51bGwpe3cuaGlnaGxpZ2h0TW91c2VPdmVyPWZhbHNlfWYuZXh0ZW5kKHRydWUsdGhpcyx3KTtpZih0aGlzLmhpZ2hsaWdodEFscGhhPT1udWxsKXt0aGlzLmhpZ2hsaWdodEFscGhhPXRoaXMuYnViYmxlQWxwaGE7aWYodGhpcy5idWJibGVHcmFkaWVudHMpe3RoaXMuaGlnaGxpZ2h0QWxwaGE9MC4zNX19dGhpcy5hdXRvc2NhbGVNdWx0aXBsaWVyPXRoaXMuYXV0b3NjYWxlTXVsdGlwbGllcipNYXRoLnBvdyh0aGlzLmRhdGEubGVuZ3RoLHRoaXMuYXV0b3NjYWxlUG9pbnRzRmFjdG9yKTt0aGlzLl9oaWdobGlnaHRlZFBvaW50PW51bGw7dmFyIG47Zm9yKHZhciByPTA7cjx0aGlzLmRhdGEubGVuZ3RoO3IrKyl7dmFyIHA9bnVsbDt2YXIgdj10aGlzLmRhdGFbcl07dGhpcy5tYXhSYWRpdXM9TWF0aC5tYXgodGhpcy5tYXhSYWRpdXMsdlsyXSk7aWYodlszXSl7aWYodHlwZW9mKHZbM10pPT0ib2JqZWN0Iil7cD12WzNdWyJjb2xvciJdfX1pZihwPT1udWxsKXtpZih0aGlzLnNlcmllc0NvbG9yc1tyXSE9bnVsbCl7cD10aGlzLnNlcmllc0NvbG9yc1tyXX19aWYocCYmdGhpcy5idWJibGVBbHBoYTwxKXtuPWYuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyhwKTtwPSJyZ2JhKCIrblswXSsiLCAiK25bMV0rIiwgIituWzJdKyIsICIrdGhpcy5idWJibGVBbHBoYSsiKSJ9aWYocCl7dGhpcy5zZXJpZXNDb2xvcnNbcl09cH19aWYoIXRoaXMudmFyeUJ1YmJsZUNvbG9ycyl7dGhpcy5zZXJpZXNDb2xvcnM9W3RoaXMuY29sb3JdfXRoaXMuY29sb3JHZW5lcmF0b3I9bmV3IGYuanFwbG90LkNvbG9yR2VuZXJhdG9yKHRoaXMuc2VyaWVzQ29sb3JzKTtpZih0aGlzLmhpZ2hsaWdodENvbG9ycy5sZW5ndGg9PTApe2Zvcih2YXIgcj0wO3I8dGhpcy5zZXJpZXNDb2xvcnMubGVuZ3RoO3IrKyl7dmFyIG89Zi5qcXBsb3QuZ2V0Q29sb3JDb21wb25lbnRzKHRoaXMuc2VyaWVzQ29sb3JzW3JdKTt2YXIgdT1bb1swXSxvWzFdLG9bMl1dO3ZhciBzPXVbMF0rdVsxXSt1WzJdO2Zvcih2YXIgcT0wO3E8MztxKyspe3VbcV09KHM+NTcwKT91W3FdKjAuODp1W3FdKzAuMyooMjU1LXVbcV0pO3VbcV09cGFyc2VJbnQodVtxXSwxMCl9dGhpcy5oaWdobGlnaHRDb2xvcnMucHVzaCgicmdiYSgiK3VbMF0rIiwiK3VbMV0rIiwiK3VbMl0rIiwgIit0aGlzLmhpZ2hsaWdodEFscGhhKyIpIil9fXRoaXMuaGlnaGxpZ2h0Q29sb3JHZW5lcmF0b3I9bmV3IGYuanFwbG90LkNvbG9yR2VuZXJhdG9yKHRoaXMuaGlnaGxpZ2h0Q29sb3JzKTt2YXIgbT17ZmlsbDp0cnVlLGlzYXJjOnRydWUsYW5nbGU6dGhpcy5zaGFkb3dBbmdsZSxhbHBoYTp0aGlzLnNoYWRvd0FscGhhLGNsb3NlUGF0aDp0cnVlfTt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmluaXQobSk7dGhpcy5jYW52YXM9bmV3IGYuanFwbG90LkRpdkNhbnZhcygpO3RoaXMuY2FudmFzLl9wbG90RGltZW5zaW9ucz10aGlzLl9wbG90RGltZW5zaW9uczt0LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RNb3VzZU1vdmUiLGEpO3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdE1vdXNlRG93biIsYik7dC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90TW91c2VVcCIsayk7dC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90Q2xpY2siLGcpO3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdFJpZ2h0Q2xpY2siLGwpO3QucG9zdERyYXdIb29rcy5hZGRPbmNlKGgpfTtmLmpxcGxvdC5CdWJibGVSZW5kZXJlci5wcm90b3R5cGUuc2V0R3JpZERhdGE9ZnVuY3Rpb24odyl7dmFyIHE9dGhpcy5feGF4aXMuc2VyaWVzX3UycDt2YXIgbT10aGlzLl95YXhpcy5zZXJpZXNfdTJwO3ZhciB0PXRoaXMuX3Bsb3REYXRhO3RoaXMuZ3JpZERhdGE9W107dmFyIHM9W107dGhpcy5yYWRpaT1bXTt2YXIgdj1NYXRoLm1pbih3Ll9oZWlnaHQsdy5fd2lkdGgpO2Zvcih2YXIgdT0wO3U8dGhpcy5kYXRhLmxlbmd0aDt1Kyspe2lmKHRbdV0hPW51bGwpe3RoaXMuZ3JpZERhdGEucHVzaChbcS5jYWxsKHRoaXMuX3hheGlzLHRbdV1bMF0pLG0uY2FsbCh0aGlzLl95YXhpcyx0W3VdWzFdKSx0W3VdWzJdXSk7dGhpcy5yYWRpaS5wdXNoKFt1LHRbdV1bMl1dKTtzLnB1c2godFt1XVsyXSl9fXZhciBuLG8seD10aGlzLm1heFJhZGl1cz1kKHMpO3ZhciBwPXRoaXMuZ3JpZERhdGEubGVuZ3RoO2lmKHRoaXMuYXV0b3NjYWxlQnViYmxlcyl7Zm9yKHZhciB1PTA7dTxwO3UrKyl7bz1zW3VdL3g7bj10aGlzLmF1dG9zY2FsZU11bHRpcGxpZXIqdi82O3RoaXMuZ3JpZERhdGFbdV1bMl09bipvfX10aGlzLnJhZGlpLnNvcnQoZnVuY3Rpb24oeSxyKXtyZXR1cm4gclsxXS15WzFdfSl9O2YuanFwbG90LkJ1YmJsZVJlbmRlcmVyLnByb3RvdHlwZS5tYWtlR3JpZERhdGE9ZnVuY3Rpb24odCx3KXt2YXIgcT10aGlzLl94YXhpcy5zZXJpZXNfdTJwO3ZhciBuPXRoaXMuX3lheGlzLnNlcmllc191MnA7dmFyIHg9W107dmFyIHM9W107dGhpcy5yYWRpaT1bXTt2YXIgdj1NYXRoLm1pbih3Ll9oZWlnaHQsdy5fd2lkdGgpO2Zvcih2YXIgdT0wO3U8dC5sZW5ndGg7dSsrKXtpZih0W3VdIT1udWxsKXt4LnB1c2goW3EuY2FsbCh0aGlzLl94YXhpcyx0W3VdWzBdKSxuLmNhbGwodGhpcy5feWF4aXMsdFt1XVsxXSksdFt1XVsyXV0pO3MucHVzaCh0W3VdWzJdKTt0aGlzLnJhZGlpLnB1c2goW3UsdFt1XVsyXV0pfX12YXIgbSxvLHk9dGhpcy5tYXhSYWRpdXM9ZChzKTt2YXIgcD10aGlzLmdyaWREYXRhLmxlbmd0aDtpZih0aGlzLmF1dG9zY2FsZUJ1YmJsZXMpe2Zvcih2YXIgdT0wO3U8cDt1Kyspe289c1t1XS95O209dGhpcy5hdXRvc2NhbGVNdWx0aXBsaWVyKnYvNjt4W3VdWzJdPW0qb319dGhpcy5yYWRpaS5zb3J0KGZ1bmN0aW9uKHoscil7cmV0dXJuIHJbMV0telsxXX0pO3JldHVybiB4fTtmLmpxcGxvdC5CdWJibGVSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbihELEosbil7aWYodGhpcy5wbHVnaW5zLnBvaW50TGFiZWxzKXt0aGlzLnBsdWdpbnMucG9pbnRMYWJlbHMuc2hvdz1mYWxzZX12YXIgQT0obiE9dW5kZWZpbmVkKT9uOnt9O3ZhciByPShBLnNoYWRvdyE9dW5kZWZpbmVkKT9BLnNoYWRvdzp0aGlzLnNoYWRvdzt0aGlzLmNhbnZhcy5fZWxlbS5lbXB0eSgpO2Zvcih2YXIgRz0wO0c8dGhpcy5yYWRpaS5sZW5ndGg7RysrKXt2YXIgQz10aGlzLnJhZGlpW0ddWzBdO3ZhciB6PW51bGw7dmFyIEY9bnVsbDt2YXIgbT1udWxsO3ZhciBwPW51bGw7dmFyIEk9dGhpcy5kYXRhW0NdO3ZhciBKPXRoaXMuZ3JpZERhdGFbQ107aWYoSVszXSl7aWYodHlwZW9mKElbM10pPT0ib2JqZWN0Iil7ej1JWzNdWyJsYWJlbCJdfWVsc2V7aWYodHlwZW9mKElbM10pPT0ic3RyaW5nIil7ej1JWzNdfX19Rj10aGlzLmNvbG9yR2VuZXJhdG9yLmdldChDKTt2YXIgRT1KWzJdO3ZhciBxLEs7aWYodGhpcy5zaGFkb3cpe3E9KDAuNytKWzJdLzQwKS50b0ZpeGVkKDEpO0s9MStNYXRoLmNlaWwoSlsyXS8xNSk7RSs9cSpLfXRoaXMuYnViYmxlQ2FudmFzZXNbQ109bmV3IGYuanFwbG90LkJ1YmJsZUNhbnZhcygpO3RoaXMuY2FudmFzLl9lbGVtLmFwcGVuZCh0aGlzLmJ1YmJsZUNhbnZhc2VzW0NdLmNyZWF0ZUVsZW1lbnQoSlswXSxKWzFdLEUpKTt0aGlzLmJ1YmJsZUNhbnZhc2VzW0NdLnNldENvbnRleHQoKTt2YXIgRD10aGlzLmJ1YmJsZUNhbnZhc2VzW0NdLl9jdHg7dmFyIHU9RC5jYW52YXMud2lkdGgvMjt2YXIgcz1ELmNhbnZhcy5oZWlnaHQvMjtpZih0aGlzLnNoYWRvdyl7dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KEQsW3UscyxKWzJdLDAsMipNYXRoLlBJXSx7b2Zmc2V0OnEsZGVwdGg6S30pfXRoaXMuYnViYmxlQ2FudmFzZXNbQ10uZHJhdyhKWzJdLEYsdGhpcy5idWJibGVHcmFkaWVudHMsdGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSk7aWYoeiYmdGhpcy5zaG93TGFiZWxzKXtwPWYoJzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyIgY2xhc3M9ImpxcGxvdC1idWJibGUtbGFiZWwiPjwvZGl2PicpO2lmKHRoaXMuZXNjYXBlSHRtbCl7cC50ZXh0KHopfWVsc2V7cC5odG1sKHopfXRoaXMuY2FudmFzLl9lbGVtLmFwcGVuZChwKTt2YXIgSD1mKHApLm91dGVySGVpZ2h0KCk7dmFyIHY9ZihwKS5vdXRlcldpZHRoKCk7dmFyIEI9SlsxXS0wLjUqSDt2YXIgbz1KWzBdLTAuNSp2O3AuY3NzKHt0b3A6QixsZWZ0Om99KTt0aGlzLmxhYmVsc1tDXT1mKHApfX19O2YuanFwbG90LkRpdkNhbnZhcz1mdW5jdGlvbigpe2YuanFwbG90LkVsZW1Db250YWluZXIuY2FsbCh0aGlzKTt0aGlzLl9jdHh9O2YuanFwbG90LkRpdkNhbnZhcy5wcm90b3R5cGU9bmV3IGYuanFwbG90LkVsZW1Db250YWluZXIoKTtmLmpxcGxvdC5EaXZDYW52YXMucHJvdG90eXBlLmNvbnN0cnVjdG9yPWYuanFwbG90LkRpdkNhbnZhcztmLmpxcGxvdC5EaXZDYW52YXMucHJvdG90eXBlLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24ocyxwLG4pe3RoaXMuX29mZnNldHM9czt2YXIgbT0ianFwbG90LURpdkNhbnZhcyI7aWYocCE9dW5kZWZpbmVkKXttPXB9dmFyIHI7aWYodGhpcy5fZWxlbSl7cj10aGlzLl9lbGVtLmdldCgwKX1lbHNle3I9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iil9aWYobiE9dW5kZWZpbmVkKXt0aGlzLl9wbG90RGltZW5zaW9ucz1ufXZhciBvPXRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoLXRoaXMuX29mZnNldHMubGVmdC10aGlzLl9vZmZzZXRzLnJpZ2h0KyJweCI7dmFyIHE9dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0LXRoaXMuX29mZnNldHMudG9wLXRoaXMuX29mZnNldHMuYm90dG9tKyJweCI7dGhpcy5fZWxlbT1mKHIpO3RoaXMuX2VsZW0uY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLHdpZHRoOm8saGVpZ2h0OnEsbGVmdDp0aGlzLl9vZmZzZXRzLmxlZnQsdG9wOnRoaXMuX29mZnNldHMudG9wfSk7dGhpcy5fZWxlbS5hZGRDbGFzcyhtKTtyZXR1cm4gdGhpcy5fZWxlbX07Zi5qcXBsb3QuRGl2Q2FudmFzLnByb3RvdHlwZS5zZXRDb250ZXh0PWZ1bmN0aW9uKCl7dGhpcy5fY3R4PXtjYW52YXM6e3dpZHRoOjAsaGVpZ2h0OjB9LGNsZWFyUmVjdDpmdW5jdGlvbigpe3JldHVybiBudWxsfX07cmV0dXJuIHRoaXMuX2N0eH07Zi5qcXBsb3QuQnViYmxlQ2FudmFzPWZ1bmN0aW9uKCl7Zi5qcXBsb3QuRWxlbUNvbnRhaW5lci5jYWxsKHRoaXMpO3RoaXMuX2N0eH07Zi5qcXBsb3QuQnViYmxlQ2FudmFzLnByb3RvdHlwZT1uZXcgZi5qcXBsb3QuRWxlbUNvbnRhaW5lcigpO2YuanFwbG90LkJ1YmJsZUNhbnZhcy5wcm90b3R5cGUuY29uc3RydWN0b3I9Zi5qcXBsb3QuQnViYmxlQ2FudmFzO2YuanFwbG90LkJ1YmJsZUNhbnZhcy5wcm90b3R5cGUuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihuLHUscyl7dmFyIG09ImpxcGxvdC1idWJibGUtcG9pbnQiO3ZhciBxO2lmKHRoaXMuX2VsZW0pe3E9dGhpcy5fZWxlbS5nZXQoMCl9ZWxzZXtxPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpfXEud2lkdGg9KHMhPW51bGwpPzIqczpxLndpZHRoO3EuaGVpZ2h0PShzIT1udWxsKT8yKnM6cS5oZWlnaHQ7dGhpcy5fZWxlbT1mKHEpO3ZhciBvPShuIT1udWxsJiZzIT1udWxsKT9uLXM6dGhpcy5fZWxlbS5jc3MoImxlZnQiKTt2YXIgcD0odSE9bnVsbCYmcyE9bnVsbCk/dS1zOnRoaXMuX2VsZW0uY3NzKCJ0b3AiKTt0aGlzLl9lbGVtLmNzcyh7cG9zaXRpb246ImFic29sdXRlIixsZWZ0Om8sdG9wOnB9KTt0aGlzLl9lbGVtLmFkZENsYXNzKG0pO2lmKGYuanFwbG90LnVzZV9leGNhbnZhcyl7d2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci5pbml0Xyhkb2N1bWVudCk7cT13aW5kb3cuR192bWxDYW52YXNNYW5hZ2VyLmluaXRFbGVtZW50KHEpfXJldHVybiB0aGlzLl9lbGVtfTtmLmpxcGxvdC5CdWJibGVDYW52YXMucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24obSxzLHYscCl7dmFyIEQ9dGhpcy5fY3R4O3ZhciBCPUQuY2FudmFzLndpZHRoLzI7dmFyIHo9RC5jYW52YXMuaGVpZ2h0LzI7RC5zYXZlKCk7aWYodiYmIWYuanFwbG90LnVzZV9leGNhbnZhcyl7bT1tKjEuMDQ7dmFyIG89Zi5qcXBsb3QuZ2V0Q29sb3JDb21wb25lbnRzKHMpO3ZhciB1PSJyZ2JhKCIrTWF0aC5yb3VuZChvWzBdKzAuOCooMjU1LW9bMF0pKSsiLCAiK01hdGgucm91bmQob1sxXSswLjgqKDI1NS1vWzFdKSkrIiwgIitNYXRoLnJvdW5kKG9bMl0rMC44KigyNTUtb1syXSkpKyIsICIrb1szXSsiKSI7dmFyIHQ9InJnYmEoIitvWzBdKyIsICIrb1sxXSsiLCAiK29bMl0rIiwgMCkiO3ZhciBDPTAuMzUqbTt2YXIgQT1CLU1hdGguY29zKHApKjAuMzMqbTt2YXIgbj16LU1hdGguc2luKHApKjAuMzMqbTt2YXIgdz1ELmNyZWF0ZVJhZGlhbEdyYWRpZW50KEEsbixDLEIseixtKTt3LmFkZENvbG9yU3RvcCgwLHUpO3cuYWRkQ29sb3JTdG9wKDAuOTMscyk7dy5hZGRDb2xvclN0b3AoMC45Nix0KTt3LmFkZENvbG9yU3RvcCgxLHQpO0QuZmlsbFN0eWxlPXc7RC5maWxsUmVjdCgwLDAsRC5jYW52YXMud2lkdGgsRC5jYW52YXMuaGVpZ2h0KX1lbHNle0QuZmlsbFN0eWxlPXM7RC5zdHJva2VTdHlsZT1zO0QubGluZVdpZHRoPTE7RC5iZWdpblBhdGgoKTt2YXIgcT0yKk1hdGguUEk7RC5hcmMoQix6LG0sMCxxLDApO0QuY2xvc2VQYXRoKCk7RC5maWxsKCl9RC5yZXN0b3JlKCl9O2YuanFwbG90LkJ1YmJsZUNhbnZhcy5wcm90b3R5cGUuc2V0Q29udGV4dD1mdW5jdGlvbigpe3RoaXMuX2N0eD10aGlzLl9lbGVtLmdldCgwKS5nZXRDb250ZXh0KCIyZCIpO3JldHVybiB0aGlzLl9jdHh9O2YuanFwbG90LkJ1YmJsZUF4aXNSZW5kZXJlcj1mdW5jdGlvbigpe2YuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpfTtmLmpxcGxvdC5CdWJibGVBeGlzUmVuZGVyZXIucHJvdG90eXBlPW5ldyBmLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIoKTtmLmpxcGxvdC5CdWJibGVBeGlzUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWYuanFwbG90LkJ1YmJsZUF4aXNSZW5kZXJlcjtmLmpxcGxvdC5CdWJibGVBeGlzUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24obil7Zi5leHRlbmQodHJ1ZSx0aGlzLG4pO3ZhciBJPXRoaXMuX2RhdGFCb3VuZHM7dmFyIEg9MCx2PTAsbT0wLHk9MCxxPTAscj0wLEQ9MCx0PTAsRj0wLHo9MDtmb3IodmFyIEU9MDtFPHRoaXMuX3Nlcmllcy5sZW5ndGg7RSsrKXt2YXIgeD10aGlzLl9zZXJpZXNbRV07dmFyIEc9eC5fcGxvdERhdGE7Zm9yKHZhciBCPTA7QjxHLmxlbmd0aDtCKyspe2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7aWYoR1tCXVswXTxJLm1pbnx8SS5taW49PW51bGwpe0kubWluPUdbQl1bMF07SD1FO3Y9QjtyPUdbQl1bMl07RD14Lm1heFJhZGl1czt6PXguYXV0b3NjYWxlTXVsdGlwbGllcn1pZihHW0JdWzBdPkkubWF4fHxJLm1heD09bnVsbCl7SS5tYXg9R1tCXVswXTttPUU7eT1CO3E9R1tCXVsyXTt0PXgubWF4UmFkaXVzO0Y9eC5hdXRvc2NhbGVNdWx0aXBsaWVyfX1lbHNle2lmKEdbQl1bMV08SS5taW58fEkubWluPT1udWxsKXtJLm1pbj1HW0JdWzFdO0g9RTt2PUI7cj1HW0JdWzJdO0Q9eC5tYXhSYWRpdXM7ej14LmF1dG9zY2FsZU11bHRpcGxpZXJ9aWYoR1tCXVsxXT5JLm1heHx8SS5tYXg9PW51bGwpe0kubWF4PUdbQl1bMV07bT1FO3k9QjtxPUdbQl1bMl07dD14Lm1heFJhZGl1cztGPXguYXV0b3NjYWxlTXVsdGlwbGllcn19fX12YXIgbz1yL0Q7dmFyIHc9cS90O3ZhciBDPUkubWF4LUkubWluO3ZhciBBPU1hdGgubWluKHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoLHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCk7dmFyIHA9byp6LzMqQzt2YXIgdT13KkYvMypDO0kubWF4Kz11O0kubWluLT1wfTtmdW5jdGlvbiBlKHAsdixxKXtwLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0TGFiZWxDYW52YXMuZW1wdHkoKTt2YXIgej1wLnNlcmllc1t2XTt2YXIgbj1wLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzO3ZhciB3PW4uX2N0eDt3LmNsZWFyUmVjdCgwLDAsdy5jYW52YXMud2lkdGgsdy5jYW52YXMuaGVpZ2h0KTt6Ll9oaWdobGlnaHRlZFBvaW50PXE7cC5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg9djt2YXIgbz16LmhpZ2hsaWdodENvbG9yR2VuZXJhdG9yLmdldChxKTt2YXIgdT16LmdyaWREYXRhW3FdWzBdLHQ9ei5ncmlkRGF0YVtxXVsxXSxtPXouZ3JpZERhdGFbcV1bMl07dy5zYXZlKCk7dy5maWxsU3R5bGU9bzt3LnN0cm9rZVN0eWxlPW87dy5saW5lV2lkdGg9MTt3LmJlZ2luUGF0aCgpO3cuYXJjKHUsdCxtLDAsMipNYXRoLlBJLDApO3cuY2xvc2VQYXRoKCk7dy5maWxsKCk7dy5yZXN0b3JlKCk7aWYoei5sYWJlbHNbcV0pe3AucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRMYWJlbD16LmxhYmVsc1txXS5jbG9uZSgpO3AucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRMYWJlbC5hcHBlbmRUbyhwLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0TGFiZWxDYW52YXMpO3AucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRMYWJlbC5hZGRDbGFzcygianFwbG90LWJ1YmJsZS1sYWJlbC1oaWdobGlnaHQiKX19ZnVuY3Rpb24gaShwKXt2YXIgbT1wLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzO3ZhciBvPXAucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4O3AucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRMYWJlbENhbnZhcy5lbXB0eSgpO20uX2N0eC5jbGVhclJlY3QoMCwwLG0uX2N0eC5jYW52YXMud2lkdGgsbS5fY3R4LmNhbnZhcy5oZWlnaHQpO2Zvcih2YXIgbj0wO248cC5zZXJpZXMubGVuZ3RoO24rKyl7cC5zZXJpZXNbbl0uX2hpZ2hsaWdodGVkUG9pbnQ9bnVsbH1wLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleD1udWxsO3AudGFyZ2V0LnRyaWdnZXIoImpxcGxvdERhdGFVbmhpZ2hsaWdodCIpfWZ1bmN0aW9uIGEocyxwLG0sdixyKXtpZih2KXt2YXIgbj12LnNlcmllc0luZGV4O3ZhciBvPXYucG9pbnRJbmRleDt2YXIgcT1bbixvLHYuZGF0YSxyLnNlcmllc1tuXS5ncmlkRGF0YVtvXVsyXV07dmFyIHQ9alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhTW91c2VPdmVyIik7dC5wYWdlWD1zLnBhZ2VYO3QucGFnZVk9cy5wYWdlWTtyLnRhcmdldC50cmlnZ2VyKHQscSk7aWYoci5zZXJpZXNbcVswXV0uaGlnaGxpZ2h0TW91c2VPdmVyJiYhKHFbMF09PXIucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4JiZxWzFdPT1yLnNlcmllc1txWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpe3ZhciB1PWpRdWVyeS5FdmVudCgianFwbG90RGF0YUhpZ2hsaWdodCIpO3Uud2hpY2g9cy53aGljaDt1LnBhZ2VYPXMucGFnZVg7dS5wYWdlWT1zLnBhZ2VZO3IudGFyZ2V0LnRyaWdnZXIodSxxKTtlKHIscVswXSxxWzFdKX19ZWxzZXtpZih2PT1udWxsKXtpKHIpfX19ZnVuY3Rpb24gYihzLHAsbSx1LHIpe2lmKHUpe3ZhciBuPXUuc2VyaWVzSW5kZXg7dmFyIG89dS5wb2ludEluZGV4O3ZhciBxPVtuLG8sdS5kYXRhLHIuc2VyaWVzW25dLmdyaWREYXRhW29dWzJdXTtpZihyLnNlcmllc1txWzBdXS5oaWdobGlnaHRNb3VzZURvd24mJiEocVswXT09ci5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXgmJnFbMV09PXIuc2VyaWVzW3FbMF1dLl9oaWdobGlnaHRlZFBvaW50KSl7dmFyIHQ9alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhSGlnaGxpZ2h0Iik7dC53aGljaD1zLndoaWNoO3QucGFnZVg9cy5wYWdlWDt0LnBhZ2VZPXMucGFnZVk7ci50YXJnZXQudHJpZ2dlcih0LHEpO2UocixxWzBdLHFbMV0pfX1lbHNle2lmKHU9PW51bGwpe2kocil9fX1mdW5jdGlvbiBrKG8sbixyLHEscCl7dmFyIG09cC5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg7aWYobSE9bnVsbCYmcC5zZXJpZXNbbV0uaGlnaGxpZ2h0TW91c2VEb3duKXtpKHApfX1mdW5jdGlvbiBnKHMscCxtLHUscil7aWYodSl7dmFyIG49dS5zZXJpZXNJbmRleDt2YXIgbz11LnBvaW50SW5kZXg7dmFyIHE9W24sbyx1LmRhdGEsci5zZXJpZXNbbl0uZ3JpZERhdGFbb11bMl1dO3ZhciB0PWpRdWVyeS5FdmVudCgianFwbG90RGF0YUNsaWNrIik7dC53aGljaD1zLndoaWNoO3QucGFnZVg9cy5wYWdlWDt0LnBhZ2VZPXMucGFnZVk7ci50YXJnZXQudHJpZ2dlcih0LHEpfX1mdW5jdGlvbiBsKHMscCxtLHYscil7aWYodil7dmFyIG49di5zZXJpZXNJbmRleDt2YXIgbz12LnBvaW50SW5kZXg7dmFyIHE9W24sbyx2LmRhdGEsci5zZXJpZXNbbl0uZ3JpZERhdGFbb11bMl1dO3ZhciB0PXIucGx1Z2lucy5idWJibGVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4O2lmKHQhPW51bGwmJnIuc2VyaWVzW3RdLmhpZ2hsaWdodE1vdXNlRG93bil7aShyKX12YXIgdT1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFSaWdodENsaWNrIik7dS53aGljaD1zLndoaWNoO3UucGFnZVg9cy5wYWdlWDt1LnBhZ2VZPXMucGFnZVk7ci50YXJnZXQudHJpZ2dlcih1LHEpfX1mdW5jdGlvbiBoKCl7aWYodGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyJiZ0aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzKXt0aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnJlc2V0Q2FudmFzKCk7dGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcz1udWxsfXRoaXMucGx1Z2lucy5idWJibGVSZW5kZXJlcj17aGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDpudWxsfTt0aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzPW5ldyBmLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7dGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodExhYmVsPW51bGw7dGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodExhYmVsQ2FudmFzPWYoJzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyI+PC9kaXY+Jyk7dmFyIHE9dGhpcy5fZ3JpZFBhZGRpbmcudG9wO3ZhciBwPXRoaXMuX2dyaWRQYWRkaW5nLmxlZnQ7dmFyIG49dGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgtdGhpcy5fZ3JpZFBhZGRpbmcubGVmdC10aGlzLl9ncmlkUGFkZGluZy5yaWdodDt2YXIgbT10aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQtdGhpcy5fZ3JpZFBhZGRpbmcudG9wLXRoaXMuX2dyaWRQYWRkaW5nLmJvdHRvbTt0aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0TGFiZWxDYW52YXMuY3NzKHt0b3A6cSxsZWZ0OnAsd2lkdGg6bisicHgiLGhlaWdodDptKyJweCJ9KTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZSh0aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsImpxcGxvdC1idWJibGVSZW5kZXJlci1oaWdobGlnaHQtY2FudmFzIix0aGlzLl9wbG90RGltZW5zaW9ucyx0aGlzKSk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUodGhpcy5wbHVnaW5zLmJ1YmJsZVJlbmRlcmVyLmhpZ2hsaWdodExhYmVsQ2FudmFzKTt2YXIgbz10aGlzLnBsdWdpbnMuYnViYmxlUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnNldENvbnRleHQoKX1mdW5jdGlvbiBjKHEscCxuKXtuPW58fHt9O24uYXhlc0RlZmF1bHRzPW4uYXhlc0RlZmF1bHRzfHx7fTtuLnNlcmllc0RlZmF1bHRzPW4uc2VyaWVzRGVmYXVsdHN8fHt9O3ZhciBtPWZhbHNlO2lmKG4uc2VyaWVzRGVmYXVsdHMucmVuZGVyZXI9PWYuanFwbG90LkJ1YmJsZVJlbmRlcmVyKXttPXRydWV9ZWxzZXtpZihuLnNlcmllcyl7Zm9yKHZhciBvPTA7bzxuLnNlcmllcy5sZW5ndGg7bysrKXtpZihuLnNlcmllc1tvXS5yZW5kZXJlcj09Zi5qcXBsb3QuQnViYmxlUmVuZGVyZXIpe209dHJ1ZX19fX1pZihtKXtuLmF4ZXNEZWZhdWx0cy5yZW5kZXJlcj1mLmpxcGxvdC5CdWJibGVBeGlzUmVuZGVyZXI7bi5zb3J0RGF0YT1mYWxzZX19Zi5qcXBsb3QucHJlSW5pdEhvb2tzLnB1c2goYyl9KShqUXVlcnkpOw==]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oYSl7YS5qcXBsb3QuQ2FudmFzQXhpc0xhYmVsUmVuZGVyZXI9ZnVuY3Rpb24oYil7dGhpcy5hbmdsZT0wO3RoaXMuYXhpczt0aGlzLnNob3c9dHJ1ZTt0aGlzLnNob3dMYWJlbD10cnVlO3RoaXMubGFiZWw9IiI7dGhpcy5mb250RmFtaWx5PSciVHJlYnVjaGV0IE1TIiwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZic7dGhpcy5mb250U2l6ZT0iMTFwdCI7dGhpcy5mb250V2VpZ2h0PSJub3JtYWwiO3RoaXMuZm9udFN0cmV0Y2g9MTt0aGlzLnRleHRDb2xvcj0iIzY2NjY2NiI7dGhpcy5lbmFibGVGb250U3VwcG9ydD10cnVlO3RoaXMucHQycHg9bnVsbDt0aGlzLl9lbGVtO3RoaXMuX2N0eDt0aGlzLl9wbG90V2lkdGg7dGhpcy5fcGxvdEhlaWdodDt0aGlzLl9wbG90RGltZW5zaW9ucz17aGVpZ2h0Om51bGwsd2lkdGg6bnVsbH07YS5leHRlbmQodHJ1ZSx0aGlzLGIpO2lmKGIuYW5nbGU9PW51bGwmJnRoaXMuYXhpcyE9InhheGlzIiYmdGhpcy5heGlzIT0ieDJheGlzIil7dGhpcy5hbmdsZT0tOTB9dmFyIGM9e2ZvbnRTaXplOnRoaXMuZm9udFNpemUsZm9udFdlaWdodDp0aGlzLmZvbnRXZWlnaHQsZm9udFN0cmV0Y2g6dGhpcy5mb250U3RyZXRjaCxmaWxsU3R5bGU6dGhpcy50ZXh0Q29sb3IsYW5nbGU6dGhpcy5nZXRBbmdsZVJhZCgpLGZvbnRGYW1pbHk6dGhpcy5mb250RmFtaWx5fTtpZih0aGlzLnB0MnB4KXtjLnB0MnB4PXRoaXMucHQycHh9aWYodGhpcy5lbmFibGVGb250U3VwcG9ydCl7aWYoYS5qcXBsb3Quc3VwcG9ydF9jYW52YXNfdGV4dCgpKXt0aGlzLl90ZXh0UmVuZGVyZXI9bmV3IGEuanFwbG90LkNhbnZhc0ZvbnRSZW5kZXJlcihjKX1lbHNle3RoaXMuX3RleHRSZW5kZXJlcj1uZXcgYS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyKGMpfX1lbHNle3RoaXMuX3RleHRSZW5kZXJlcj1uZXcgYS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyKGMpfX07YS5qcXBsb3QuQ2FudmFzQXhpc0xhYmVsUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oYil7YS5leHRlbmQodHJ1ZSx0aGlzLGIpO3RoaXMuX3RleHRSZW5kZXJlci5pbml0KHtmb250U2l6ZTp0aGlzLmZvbnRTaXplLGZvbnRXZWlnaHQ6dGhpcy5mb250V2VpZ2h0LGZvbnRTdHJldGNoOnRoaXMuZm9udFN0cmV0Y2gsZmlsbFN0eWxlOnRoaXMudGV4dENvbG9yLGFuZ2xlOnRoaXMuZ2V0QW5nbGVSYWQoKSxmb250RmFtaWx5OnRoaXMuZm9udEZhbWlseX0pfTthLmpxcGxvdC5DYW52YXNBeGlzTGFiZWxSZW5kZXJlci5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24oZCl7aWYodGhpcy5fZWxlbSl7cmV0dXJuIHRoaXMuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKX1lbHNle3ZhciBmPXRoaXMuX3RleHRSZW5kZXJlcjt2YXIgYz1mLmdldFdpZHRoKGQpO3ZhciBlPWYuZ2V0SGVpZ2h0KGQpO3ZhciBiPU1hdGguYWJzKE1hdGguc2luKGYuYW5nbGUpKmUpK01hdGguYWJzKE1hdGguY29zKGYuYW5nbGUpKmMpO3JldHVybiBifX07YS5qcXBsb3QuQ2FudmFzQXhpc0xhYmVsUmVuZGVyZXIucHJvdG90eXBlLmdldEhlaWdodD1mdW5jdGlvbihkKXtpZih0aGlzLl9lbGVtKXtyZXR1cm4gdGhpcy5fZWxlbS5vdXRlckhlaWdodCh0cnVlKX1lbHNle3ZhciBmPXRoaXMuX3RleHRSZW5kZXJlcjt2YXIgYz1mLmdldFdpZHRoKGQpO3ZhciBlPWYuZ2V0SGVpZ2h0KGQpO3ZhciBiPU1hdGguYWJzKE1hdGguY29zKGYuYW5nbGUpKmUpK01hdGguYWJzKE1hdGguc2luKGYuYW5nbGUpKmMpO3JldHVybiBifX07YS5qcXBsb3QuQ2FudmFzQXhpc0xhYmVsUmVuZGVyZXIucHJvdG90eXBlLmdldEFuZ2xlUmFkPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5hbmdsZSpNYXRoLlBJLzE4MDtyZXR1cm4gYn07YS5qcXBsb3QuQ2FudmFzQXhpc0xhYmVsUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oYyxmKXtpZih0aGlzLl9lbGVtKXtpZihhLmpxcGxvdC51c2VfZXhjYW52YXMmJndpbmRvdy5HX3ZtbENhbnZhc01hbmFnZXIudW5pbml0RWxlbWVudCE9PXVuZGVmaW5lZCl7d2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci51bmluaXRFbGVtZW50KHRoaXMuX2VsZW0uZ2V0KDApKX10aGlzLl9lbGVtLmVtcHR5Rm9yY2UoKTt0aGlzLl9lbGVtPW51bGx9dmFyIGU9Zi5jYW52YXNNYW5hZ2VyLmdldENhbnZhcygpO3RoaXMuX3RleHRSZW5kZXJlci5zZXRUZXh0KHRoaXMubGFiZWwsYyk7dmFyIGI9dGhpcy5nZXRXaWR0aChjKTt2YXIgZD10aGlzLmdldEhlaWdodChjKTtlLndpZHRoPWI7ZS5oZWlnaHQ9ZDtlLnN0eWxlLndpZHRoPWI7ZS5zdHlsZS5oZWlnaHQ9ZDtlPWYuY2FudmFzTWFuYWdlci5pbml0Q2FudmFzKGUpO3RoaXMuX2VsZW09YShlKTt0aGlzLl9lbGVtLmNzcyh7cG9zaXRpb246ImFic29sdXRlIn0pO3RoaXMuX2VsZW0uYWRkQ2xhc3MoImpxcGxvdC0iK3RoaXMuYXhpcysiLWxhYmVsIik7ZT1udWxsO3JldHVybiB0aGlzLl9lbGVtfTthLmpxcGxvdC5DYW52YXNBeGlzTGFiZWxSZW5kZXJlci5wcm90b3R5cGUucGFjaz1mdW5jdGlvbigpe3RoaXMuX3RleHRSZW5kZXJlci5kcmF3KHRoaXMuX2VsZW0uZ2V0KDApLmdldENvbnRleHQoIjJkIiksdGhpcy5sYWJlbCl9fSkoalF1ZXJ5KTs=]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oYSl7YS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlcj1mdW5jdGlvbihiKXt0aGlzLm1hcms9Im91dHNpZGUiO3RoaXMuc2hvd01hcms9dHJ1ZTt0aGlzLnNob3dHcmlkbGluZT10cnVlO3RoaXMuaXNNaW5vclRpY2s9ZmFsc2U7dGhpcy5hbmdsZT0wO3RoaXMubWFya1NpemU9NDt0aGlzLnNob3c9dHJ1ZTt0aGlzLnNob3dMYWJlbD10cnVlO3RoaXMubGFiZWxQb3NpdGlvbj0iYXV0byI7dGhpcy5sYWJlbD0iIjt0aGlzLnZhbHVlPW51bGw7dGhpcy5fc3R5bGVzPXt9O3RoaXMuZm9ybWF0dGVyPWEuanFwbG90LkRlZmF1bHRUaWNrRm9ybWF0dGVyO3RoaXMuZm9ybWF0U3RyaW5nPSIiO3RoaXMucHJlZml4PSIiO3RoaXMuZm9udEZhbWlseT0nIlRyZWJ1Y2hldCBNUyIsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYnO3RoaXMuZm9udFNpemU9IjEwcHQiO3RoaXMuZm9udFdlaWdodD0ibm9ybWFsIjt0aGlzLmZvbnRTdHJldGNoPTE7dGhpcy50ZXh0Q29sb3I9IiM2NjY2NjYiO3RoaXMuZW5hYmxlRm9udFN1cHBvcnQ9dHJ1ZTt0aGlzLnB0MnB4PW51bGw7dGhpcy5fZWxlbTt0aGlzLl9jdHg7dGhpcy5fcGxvdFdpZHRoO3RoaXMuX3Bsb3RIZWlnaHQ7dGhpcy5fcGxvdERpbWVuc2lvbnM9e2hlaWdodDpudWxsLHdpZHRoOm51bGx9O2EuZXh0ZW5kKHRydWUsdGhpcyxiKTt2YXIgYz17Zm9udFNpemU6dGhpcy5mb250U2l6ZSxmb250V2VpZ2h0OnRoaXMuZm9udFdlaWdodCxmb250U3RyZXRjaDp0aGlzLmZvbnRTdHJldGNoLGZpbGxTdHlsZTp0aGlzLnRleHRDb2xvcixhbmdsZTp0aGlzLmdldEFuZ2xlUmFkKCksZm9udEZhbWlseTp0aGlzLmZvbnRGYW1pbHl9O2lmKHRoaXMucHQycHgpe2MucHQycHg9dGhpcy5wdDJweH1pZih0aGlzLmVuYWJsZUZvbnRTdXBwb3J0KXtpZihhLmpxcGxvdC5zdXBwb3J0X2NhbnZhc190ZXh0KCkpe3RoaXMuX3RleHRSZW5kZXJlcj1uZXcgYS5qcXBsb3QuQ2FudmFzRm9udFJlbmRlcmVyKGMpfWVsc2V7dGhpcy5fdGV4dFJlbmRlcmVyPW5ldyBhLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIoYyl9fWVsc2V7dGhpcy5fdGV4dFJlbmRlcmVyPW5ldyBhLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIoYyl9fTthLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGIpe2EuZXh0ZW5kKHRydWUsdGhpcyxiKTt0aGlzLl90ZXh0UmVuZGVyZXIuaW5pdCh7Zm9udFNpemU6dGhpcy5mb250U2l6ZSxmb250V2VpZ2h0OnRoaXMuZm9udFdlaWdodCxmb250U3RyZXRjaDp0aGlzLmZvbnRTdHJldGNoLGZpbGxTdHlsZTp0aGlzLnRleHRDb2xvcixhbmdsZTp0aGlzLmdldEFuZ2xlUmFkKCksZm9udEZhbWlseTp0aGlzLmZvbnRGYW1pbHl9KX07YS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24oZCl7aWYodGhpcy5fZWxlbSl7cmV0dXJuIHRoaXMuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKX1lbHNle3ZhciBmPXRoaXMuX3RleHRSZW5kZXJlcjt2YXIgYz1mLmdldFdpZHRoKGQpO3ZhciBlPWYuZ2V0SGVpZ2h0KGQpO3ZhciBiPU1hdGguYWJzKE1hdGguc2luKGYuYW5nbGUpKmUpK01hdGguYWJzKE1hdGguY29zKGYuYW5nbGUpKmMpO3JldHVybiBifX07YS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUuZ2V0SGVpZ2h0PWZ1bmN0aW9uKGQpe2lmKHRoaXMuX2VsZW0pe3JldHVybiB0aGlzLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpfWVsc2V7dmFyIGY9dGhpcy5fdGV4dFJlbmRlcmVyO3ZhciBjPWYuZ2V0V2lkdGgoZCk7dmFyIGU9Zi5nZXRIZWlnaHQoZCk7dmFyIGI9TWF0aC5hYnMoTWF0aC5jb3MoZi5hbmdsZSkqZSkrTWF0aC5hYnMoTWF0aC5zaW4oZi5hbmdsZSkqYyk7cmV0dXJuIGJ9fTthLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyLnByb3RvdHlwZS5nZXRUb3A9ZnVuY3Rpb24oYil7aWYodGhpcy5fZWxlbSl7cmV0dXJuIHRoaXMuX2VsZW0ucG9zaXRpb24oKS50b3B9ZWxzZXtyZXR1cm4gbnVsbH19O2EuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXIucHJvdG90eXBlLmdldEFuZ2xlUmFkPWZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5hbmdsZSpNYXRoLlBJLzE4MDtyZXR1cm4gYn07YS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUuc2V0VGljaz1mdW5jdGlvbihiLGQsYyl7dGhpcy52YWx1ZT1iO2lmKGMpe3RoaXMuaXNNaW5vclRpY2s9dHJ1ZX1yZXR1cm4gdGhpc307YS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbihjLGYpe2lmKCF0aGlzLmxhYmVsKXt0aGlzLmxhYmVsPXRoaXMucHJlZml4K3RoaXMuZm9ybWF0dGVyKHRoaXMuZm9ybWF0U3RyaW5nLHRoaXMudmFsdWUpfWlmKHRoaXMuX2VsZW0pe2lmKGEuanFwbG90LnVzZV9leGNhbnZhcyYmd2luZG93Lkdfdm1sQ2FudmFzTWFuYWdlci51bmluaXRFbGVtZW50IT09dW5kZWZpbmVkKXt3aW5kb3cuR192bWxDYW52YXNNYW5hZ2VyLnVuaW5pdEVsZW1lbnQodGhpcy5fZWxlbS5nZXQoMCkpfXRoaXMuX2VsZW0uZW1wdHlGb3JjZSgpO3RoaXMuX2VsZW09bnVsbH12YXIgZT1mLmNhbnZhc01hbmFnZXIuZ2V0Q2FudmFzKCk7dGhpcy5fdGV4dFJlbmRlcmVyLnNldFRleHQodGhpcy5sYWJlbCxjKTt2YXIgYj10aGlzLmdldFdpZHRoKGMpO3ZhciBkPXRoaXMuZ2V0SGVpZ2h0KGMpO2Uud2lkdGg9YjtlLmhlaWdodD1kO2Uuc3R5bGUud2lkdGg9YjtlLnN0eWxlLmhlaWdodD1kO2Uuc3R5bGUudGV4dEFsaWduPSJsZWZ0IjtlLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7ZT1mLmNhbnZhc01hbmFnZXIuaW5pdENhbnZhcyhlKTt0aGlzLl9lbGVtPWEoZSk7dGhpcy5fZWxlbS5jc3ModGhpcy5fc3R5bGVzKTt0aGlzLl9lbGVtLmFkZENsYXNzKCJqcXBsb3QtIit0aGlzLmF4aXMrIi10aWNrIik7ZT1udWxsO3JldHVybiB0aGlzLl9lbGVtfTthLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyLnByb3RvdHlwZS5wYWNrPWZ1bmN0aW9uKCl7dGhpcy5fdGV4dFJlbmRlcmVyLmRyYXcodGhpcy5fZWxlbS5nZXQoMCkuZ2V0Q29udGV4dCgiMmQiKSx0aGlzLmxhYmVsKX19KShqUXVlcnkpOw==]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oZCl7dmFyIGY9MDtkLmpxcGxvdC5DYW52YXNPdmVybGF5PWZ1bmN0aW9uKHEpe3ZhciBvPXF8fHt9O3RoaXMub3B0aW9ucz17c2hvdzpkLmpxcGxvdC5jb25maWcuZW5hYmxlUGx1Z2lucyxkZWZlckRyYXc6ZmFsc2V9O3RoaXMub2JqZWN0cz1bXTt0aGlzLm9iamVjdE5hbWVzPVtdO3RoaXMuY2FudmFzPW51bGw7dGhpcy5tYXJrZXJSZW5kZXJlcj1uZXcgZC5qcXBsb3QuTWFya2VyUmVuZGVyZXIoe3N0eWxlOiJsaW5lIn0pO3RoaXMubWFya2VyUmVuZGVyZXIuaW5pdCgpO3RoaXMuaGlnaGxpZ2h0T2JqZWN0SW5kZXg9bnVsbDtpZihvLm9iamVjdHMpe3ZhciBzPW8ub2JqZWN0cyxyO2Zvcih2YXIgcD0wO3A8cy5sZW5ndGg7cCsrKXtyPXNbcF07Zm9yKHZhciB0IGluIHIpe3N3aXRjaCh0KXtjYXNlImxpbmUiOnRoaXMuYWRkTGluZShyW3RdKTticmVhaztjYXNlImhvcml6b250YWxMaW5lIjp0aGlzLmFkZEhvcml6b250YWxMaW5lKHJbdF0pO2JyZWFrO2Nhc2UiZGFzaGVkSG9yaXpvbnRhbExpbmUiOnRoaXMuYWRkRGFzaGVkSG9yaXpvbnRhbExpbmUoclt0XSk7YnJlYWs7Y2FzZSJ2ZXJ0aWNhbExpbmUiOnRoaXMuYWRkVmVydGljYWxMaW5lKHJbdF0pO2JyZWFrO2Nhc2UiZGFzaGVkVmVydGljYWxMaW5lIjp0aGlzLmFkZERhc2hlZFZlcnRpY2FsTGluZShyW3RdKTticmVhaztjYXNlInJlY3RhbmdsZSI6dGhpcy5hZGRSZWN0YW5nbGUoclt0XSk7YnJlYWs7ZGVmYXVsdDpicmVha319fX1kLmV4dGVuZCh0cnVlLHRoaXMub3B0aW9ucyxvKX07ZC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wb3N0UGxvdEluaXQ9ZnVuY3Rpb24ocSxwLG8pe3ZhciBuPW98fHt9O3RoaXMucGx1Z2lucy5jYW52YXNPdmVybGF5PW5ldyBkLmpxcGxvdC5DYW52YXNPdmVybGF5KG4uY2FudmFzT3ZlcmxheSl9O2Z1bmN0aW9uIGkoKXt0aGlzLnVpZD1udWxsO3RoaXMudHlwZT1udWxsO3RoaXMuZ3JpZFN0YXJ0PW51bGw7dGhpcy5ncmlkU3RvcD1udWxsO3RoaXMudG9vbHRpcFdpZHRoRmFjdG9yPTA7dGhpcy5vcHRpb25zPXtuYW1lOm51bGwsc2hvdzp0cnVlLGxpbmVXaWR0aDoyLGxpbmVDYXA6InJvdW5kIixjb2xvcjoiIzY2NjY2NiIsc2hhZG93OnRydWUsc2hhZG93QW5nbGU6NDUsc2hhZG93T2Zmc2V0OjEsc2hhZG93RGVwdGg6MyxzaGFkb3dBbHBoYToiMC4wNyIseGF4aXM6InhheGlzIix5YXhpczoieWF4aXMiLHNob3dUb29sdGlwOmZhbHNlLHNob3dUb29sdGlwUHJlY2lzaW9uOjAuNix0b29sdGlwTG9jYXRpb246Im53IixmYWRlVG9vbHRpcDp0cnVlLHRvb2x0aXBGYWRlU3BlZWQ6ImZhc3QiLHRvb2x0aXBPZmZzZXQ6NCx0b29sdGlwRm9ybWF0U3RyaW5nOiIlZCwgJWQifX1mdW5jdGlvbiBtKG4pe2kuY2FsbCh0aGlzKTt0aGlzLnR5cGU9InJlY3RhbmdsZSI7dmFyIG89e3htaW46bnVsbCx4bWF4Om51bGwseE9mZnNldDoiNnB4Iix4bWluT2Zmc2V0Om51bGwseG1heE9mZnNldDpudWxsLHltaW46bnVsbCx5bWF4Om51bGwseU9mZnNldDoiNnB4Iix5bWluT2Zmc2V0Om51bGwseW1heE9mZnNldDpudWxsfTtkLmV4dGVuZCh0cnVlLHRoaXMub3B0aW9ucyxvLG4pO2lmKHRoaXMub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbjwwLjAxKXt0aGlzLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb249MC4wMX19bS5wcm90b3R5cGU9bmV3IGkoKTttLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1tO2Z1bmN0aW9uIGIobil7aS5jYWxsKHRoaXMpO3RoaXMudHlwZT0ibGluZSI7dmFyIG89e3N0YXJ0OltdLHN0b3A6W119O2QuZXh0ZW5kKHRydWUsdGhpcy5vcHRpb25zLG8sbik7aWYodGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uPDAuMDEpe3RoaXMub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbj0wLjAxfX1iLnByb3RvdHlwZT1uZXcgaSgpO2IucHJvdG90eXBlLmNvbnN0cnVjdG9yPWI7ZnVuY3Rpb24gZShuKXtpLmNhbGwodGhpcyk7dGhpcy50eXBlPSJob3Jpem9udGFsTGluZSI7dmFyIG89e3k6bnVsbCx4bWluOm51bGwseG1heDpudWxsLHhPZmZzZXQ6IjZweCIseG1pbk9mZnNldDpudWxsLHhtYXhPZmZzZXQ6bnVsbH07ZC5leHRlbmQodHJ1ZSx0aGlzLm9wdGlvbnMsbyxuKTtpZih0aGlzLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb248MC4wMSl7dGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uPTAuMDF9fWUucHJvdG90eXBlPW5ldyBpKCk7ZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZTtmdW5jdGlvbiBqKG4pe2kuY2FsbCh0aGlzKTt0aGlzLnR5cGU9ImRhc2hlZEhvcml6b250YWxMaW5lIjt2YXIgbz17eTpudWxsLHhtaW46bnVsbCx4bWF4Om51bGwseE9mZnNldDoiNnB4Iix4bWluT2Zmc2V0Om51bGwseG1heE9mZnNldDpudWxsLGRhc2hQYXR0ZXJuOls4LDhdfTtkLmV4dGVuZCh0cnVlLHRoaXMub3B0aW9ucyxvLG4pO2lmKHRoaXMub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbjwwLjAxKXt0aGlzLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb249MC4wMX19ai5wcm90b3R5cGU9bmV3IGkoKTtqLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1qO2Z1bmN0aW9uIGMobil7aS5jYWxsKHRoaXMpO3RoaXMudHlwZT0idmVydGljYWxMaW5lIjt2YXIgbz17eDpudWxsLHltaW46bnVsbCx5bWF4Om51bGwseU9mZnNldDoiNnB4Iix5bWluT2Zmc2V0Om51bGwseW1heE9mZnNldDpudWxsfTtkLmV4dGVuZCh0cnVlLHRoaXMub3B0aW9ucyxvLG4pO2lmKHRoaXMub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbjwwLjAxKXt0aGlzLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb249MC4wMX19Yy5wcm90b3R5cGU9bmV3IGkoKTtjLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1jO2Z1bmN0aW9uIGwobil7aS5jYWxsKHRoaXMpO3RoaXMudHlwZT0iZGFzaGVkVmVydGljYWxMaW5lIjt0aGlzLnN0YXJ0PW51bGw7dGhpcy5zdG9wPW51bGw7dmFyIG89e3g6bnVsbCx5bWluOm51bGwseW1heDpudWxsLHlPZmZzZXQ6IjZweCIseW1pbk9mZnNldDpudWxsLHltYXhPZmZzZXQ6bnVsbCxkYXNoUGF0dGVybjpbOCw4XX07ZC5leHRlbmQodHJ1ZSx0aGlzLm9wdGlvbnMsbyxuKTtpZih0aGlzLm9wdGlvbnMuc2hvd1Rvb2x0aXBQcmVjaXNpb248MC4wMSl7dGhpcy5vcHRpb25zLnNob3dUb29sdGlwUHJlY2lzaW9uPTAuMDF9fWwucHJvdG90eXBlPW5ldyBpKCk7bC5wcm90b3R5cGUuY29uc3RydWN0b3I9bDtkLmpxcGxvdC5DYW52YXNPdmVybGF5LnByb3RvdHlwZS5hZGRMaW5lPWZ1bmN0aW9uKG8pe3ZhciBuPW5ldyBiKG8pO24udWlkPWYrKzt0aGlzLm9iamVjdHMucHVzaChuKTt0aGlzLm9iamVjdE5hbWVzLnB1c2gobi5vcHRpb25zLm5hbWUpfTtkLmpxcGxvdC5DYW52YXNPdmVybGF5LnByb3RvdHlwZS5hZGRIb3Jpem9udGFsTGluZT1mdW5jdGlvbihvKXt2YXIgbj1uZXcgZShvKTtuLnVpZD1mKys7dGhpcy5vYmplY3RzLnB1c2gobik7dGhpcy5vYmplY3ROYW1lcy5wdXNoKG4ub3B0aW9ucy5uYW1lKX07ZC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuYWRkRGFzaGVkSG9yaXpvbnRhbExpbmU9ZnVuY3Rpb24obyl7dmFyIG49bmV3IGoobyk7bi51aWQ9ZisrO3RoaXMub2JqZWN0cy5wdXNoKG4pO3RoaXMub2JqZWN0TmFtZXMucHVzaChuLm9wdGlvbnMubmFtZSl9O2QuanFwbG90LkNhbnZhc092ZXJsYXkucHJvdG90eXBlLmFkZFZlcnRpY2FsTGluZT1mdW5jdGlvbihvKXt2YXIgbj1uZXcgYyhvKTtuLnVpZD1mKys7dGhpcy5vYmplY3RzLnB1c2gobik7dGhpcy5vYmplY3ROYW1lcy5wdXNoKG4ub3B0aW9ucy5uYW1lKX07ZC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuYWRkRGFzaGVkVmVydGljYWxMaW5lPWZ1bmN0aW9uKG8pe3ZhciBuPW5ldyBsKG8pO24udWlkPWYrKzt0aGlzLm9iamVjdHMucHVzaChuKTt0aGlzLm9iamVjdE5hbWVzLnB1c2gobi5vcHRpb25zLm5hbWUpfTtkLmpxcGxvdC5DYW52YXNPdmVybGF5LnByb3RvdHlwZS5hZGRSZWN0YW5nbGU9ZnVuY3Rpb24obyl7dmFyIG49bmV3IG0obyk7bi51aWQ9ZisrO3RoaXMub2JqZWN0cy5wdXNoKG4pO3RoaXMub2JqZWN0TmFtZXMucHVzaChuLm9wdGlvbnMubmFtZSl9O2QuanFwbG90LkNhbnZhc092ZXJsYXkucHJvdG90eXBlLnJlbW92ZU9iamVjdD1mdW5jdGlvbihuKXtpZihkLnR5cGUobik9PSJudW1iZXIiKXt0aGlzLm9iamVjdHMuc3BsaWNlKG4sMSk7dGhpcy5vYmplY3ROYW1lcy5zcGxpY2UobiwxKX1lbHNle3ZhciBvPWQuaW5BcnJheShuLHRoaXMub2JqZWN0TmFtZXMpO2lmKG8hPS0xKXt0aGlzLm9iamVjdHMuc3BsaWNlKG8sMSk7dGhpcy5vYmplY3ROYW1lcy5zcGxpY2UobywxKX19fTtkLmpxcGxvdC5DYW52YXNPdmVybGF5LnByb3RvdHlwZS5nZXRPYmplY3Q9ZnVuY3Rpb24obil7aWYoZC50eXBlKG4pPT0ibnVtYmVyIil7cmV0dXJuIHRoaXMub2JqZWN0c1tuXX1lbHNle3ZhciBvPWQuaW5BcnJheShuLHRoaXMub2JqZWN0TmFtZXMpO2lmKG8hPS0xKXtyZXR1cm4gdGhpcy5vYmplY3RzW29dfX19O2QuanFwbG90LkNhbnZhc092ZXJsYXkucHJvdG90eXBlLmdldD1kLmpxcGxvdC5DYW52YXNPdmVybGF5LnByb3RvdHlwZS5nZXRPYmplY3Q7ZC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24obil7dGhpcy5jYW52YXMuX2N0eC5jbGVhclJlY3QoMCwwLHRoaXMuY2FudmFzLmdldFdpZHRoKCksdGhpcy5jYW52YXMuZ2V0SGVpZ2h0KCkpfTtkLmpxcGxvdC5DYW52YXNPdmVybGF5LnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKEspe3ZhciBBLHY9dGhpcy5vYmplY3RzLEY9dGhpcy5tYXJrZXJSZW5kZXJlcixzLEc7aWYodGhpcy5vcHRpb25zLnNob3cpe3RoaXMuY2FudmFzLl9jdHguY2xlYXJSZWN0KDAsMCx0aGlzLmNhbnZhcy5nZXRXaWR0aCgpLHRoaXMuY2FudmFzLmdldEhlaWdodCgpKTtmb3IodmFyIEg9MDtIPHYubGVuZ3RoO0grKyl7QT12W0hdO3ZhciBCPWQuZXh0ZW5kKHRydWUse30sQS5vcHRpb25zKTtpZihBLm9wdGlvbnMuc2hvdyl7Ri5zaGFkb3c9QS5vcHRpb25zLnNoYWRvdztBLnRvb2x0aXBXaWR0aEZhY3Rvcj1BLm9wdGlvbnMubGluZVdpZHRoL0Eub3B0aW9ucy5zaG93VG9vbHRpcFByZWNpc2lvbjtzd2l0Y2goQS50eXBlKXtjYXNlImxpbmUiOkYuc3R5bGU9ImxpbmUiO0IuY2xvc2VQYXRoPWZhbHNlO3M9W0suYXhlc1tBLm9wdGlvbnMueGF4aXNdLnNlcmllc191MnAoQS5vcHRpb25zLnN0YXJ0WzBdKSxLLmF4ZXNbQS5vcHRpb25zLnlheGlzXS5zZXJpZXNfdTJwKEEub3B0aW9ucy5zdGFydFsxXSldO0c9W0suYXhlc1tBLm9wdGlvbnMueGF4aXNdLnNlcmllc191MnAoQS5vcHRpb25zLnN0b3BbMF0pLEsuYXhlc1tBLm9wdGlvbnMueWF4aXNdLnNlcmllc191MnAoQS5vcHRpb25zLnN0b3BbMV0pXTtBLmdyaWRTdGFydD1zO0EuZ3JpZFN0b3A9RztGLmRyYXcocyxHLHRoaXMuY2FudmFzLl9jdHgsQik7YnJlYWs7Y2FzZSJob3Jpem9udGFsTGluZSI6aWYoQS5vcHRpb25zLnkhPW51bGwpe0Yuc3R5bGU9ImxpbmUiO0IuY2xvc2VQYXRoPWZhbHNlO3ZhciBwPUsuYXhlc1tBLm9wdGlvbnMueGF4aXNdLFMsTCx3PUsuYXhlc1tBLm9wdGlvbnMueWF4aXNdLnNlcmllc191MnAoQS5vcHRpb25zLnkpLEk9QS5vcHRpb25zLnhtaW5PZmZzZXR8fEEub3B0aW9ucy54T2Zmc2V0LHQ9QS5vcHRpb25zLnhtYXhPZmZzZXR8fEEub3B0aW9ucy54T2Zmc2V0O2lmKEEub3B0aW9ucy54bWluIT1udWxsKXtTPXAuc2VyaWVzX3UycChBLm9wdGlvbnMueG1pbil9ZWxzZXtpZihJIT1udWxsKXtpZihkLnR5cGUoSSk9PSJudW1iZXIiKXtTPXAuc2VyaWVzX3UycChwLm1pbitJKX1lbHNle2lmKGQudHlwZShJKT09InN0cmluZyIpe1M9cC5zZXJpZXNfdTJwKHAubWluKStwYXJzZUZsb2F0KEkpfX19fWlmKEEub3B0aW9ucy54bWF4IT1udWxsKXtMPXAuc2VyaWVzX3UycChBLm9wdGlvbnMueG1heCl9ZWxzZXtpZih0IT1udWxsKXtpZihkLnR5cGUodCk9PSJudW1iZXIiKXtMPXAuc2VyaWVzX3UycChwLm1heC10KX1lbHNle2lmKGQudHlwZSh0KT09InN0cmluZyIpe0w9cC5zZXJpZXNfdTJwKHAubWF4KS1wYXJzZUZsb2F0KHQpfX19fWlmKEwhPW51bGwmJlMhPW51bGwpe0EuZ3JpZFN0YXJ0PVtTLHddO0EuZ3JpZFN0b3A9W0wsd107Ri5kcmF3KFtTLHddLFtMLHddLHRoaXMuY2FudmFzLl9jdHgsQil9fWJyZWFrO2Nhc2UiZGFzaGVkSG9yaXpvbnRhbExpbmUiOnZhciBvPUEub3B0aW9ucy5kYXNoUGF0dGVybjt2YXIgRT0wO2Zvcih2YXIgTT0wO008by5sZW5ndGg7TSsrKXtFKz1vW01dfWlmKEEub3B0aW9ucy55IT1udWxsKXtGLnN0eWxlPSJsaW5lIjtCLmNsb3NlUGF0aD1mYWxzZTt2YXIgcD1LLmF4ZXNbQS5vcHRpb25zLnhheGlzXSxTLEwsdz1LLmF4ZXNbQS5vcHRpb25zLnlheGlzXS5zZXJpZXNfdTJwKEEub3B0aW9ucy55KSxJPUEub3B0aW9ucy54bWluT2Zmc2V0fHxBLm9wdGlvbnMueE9mZnNldCx0PUEub3B0aW9ucy54bWF4T2Zmc2V0fHxBLm9wdGlvbnMueE9mZnNldDtpZihBLm9wdGlvbnMueG1pbiE9bnVsbCl7Uz1wLnNlcmllc191MnAoQS5vcHRpb25zLnhtaW4pfWVsc2V7aWYoSSE9bnVsbCl7aWYoZC50eXBlKEkpPT0ibnVtYmVyIil7Uz1wLnNlcmllc191MnAocC5taW4rSSl9ZWxzZXtpZihkLnR5cGUoSSk9PSJzdHJpbmciKXtTPXAuc2VyaWVzX3UycChwLm1pbikrcGFyc2VGbG9hdChJKX19fX1pZihBLm9wdGlvbnMueG1heCE9bnVsbCl7TD1wLnNlcmllc191MnAoQS5vcHRpb25zLnhtYXgpfWVsc2V7aWYodCE9bnVsbCl7aWYoZC50eXBlKHQpPT0ibnVtYmVyIil7TD1wLnNlcmllc191MnAocC5tYXgtdCl9ZWxzZXtpZihkLnR5cGUodCk9PSJzdHJpbmciKXtMPXAuc2VyaWVzX3UycChwLm1heCktcGFyc2VGbG9hdCh0KX19fX1pZihMIT1udWxsJiZTIT1udWxsKXtBLmdyaWRTdGFydD1bUyx3XTtBLmdyaWRTdG9wPVtMLHddO3ZhciByPU1hdGguY2VpbCgoTC1TKS9FKTt2YXIgUT1TLE87Zm9yKHZhciBNPTA7TTxyO00rKyl7Zm9yKHZhciBKPTA7SjxvLmxlbmd0aDtKKz0yKXtPPVErb1tKXTtGLmRyYXcoW1Esd10sW08sd10sdGhpcy5jYW52YXMuX2N0eCxCKTtRKz1vW0pdO2lmKEo8by5sZW5ndGgtMSl7USs9b1tKKzFdfX19fX1icmVhaztjYXNlInZlcnRpY2FsTGluZSI6aWYoQS5vcHRpb25zLnghPW51bGwpe0Yuc3R5bGU9ImxpbmUiO0IuY2xvc2VQYXRoPWZhbHNlO3ZhciBOPUsuYXhlc1tBLm9wdGlvbnMueWF4aXNdLG4sdSx6PUsuYXhlc1tBLm9wdGlvbnMueGF4aXNdLnNlcmllc191MnAoQS5vcHRpb25zLngpLEQ9QS5vcHRpb25zLnltaW5PZmZzZXR8fEEub3B0aW9ucy55T2Zmc2V0LHE9QS5vcHRpb25zLnltYXhPZmZzZXR8fEEub3B0aW9ucy55T2Zmc2V0O2lmKEEub3B0aW9ucy55bWluIT1udWxsKXtuPU4uc2VyaWVzX3UycChBLm9wdGlvbnMueW1pbil9ZWxzZXtpZihEIT1udWxsKXtpZihkLnR5cGUoRCk9PSJudW1iZXIiKXtuPU4uc2VyaWVzX3UycChOLm1pbi1EKX1lbHNle2lmKGQudHlwZShEKT09InN0cmluZyIpe249Ti5zZXJpZXNfdTJwKE4ubWluKS1wYXJzZUZsb2F0KEQpfX19fWlmKEEub3B0aW9ucy55bWF4IT1udWxsKXt1PU4uc2VyaWVzX3UycChBLm9wdGlvbnMueW1heCl9ZWxzZXtpZihxIT1udWxsKXtpZihkLnR5cGUocSk9PSJudW1iZXIiKXt1PU4uc2VyaWVzX3UycChOLm1heCtxKX1lbHNle2lmKGQudHlwZShxKT09InN0cmluZyIpe3U9Ti5zZXJpZXNfdTJwKE4ubWF4KStwYXJzZUZsb2F0KHEpfX19fWlmKHUhPW51bGwmJm4hPW51bGwpe0EuZ3JpZFN0YXJ0PVt6LG5dO0EuZ3JpZFN0b3A9W3osdV07Ri5kcmF3KFt6LG5dLFt6LHVdLHRoaXMuY2FudmFzLl9jdHgsQil9fWJyZWFrO2Nhc2UiZGFzaGVkVmVydGljYWxMaW5lIjp2YXIgbz1BLm9wdGlvbnMuZGFzaFBhdHRlcm47dmFyIEU9MDtmb3IodmFyIE09MDtNPG8ubGVuZ3RoO00rKyl7RSs9b1tNXX1pZihBLm9wdGlvbnMueCE9bnVsbCl7Ri5zdHlsZT0ibGluZSI7Qi5jbG9zZVBhdGg9ZmFsc2U7dmFyIE49Sy5heGVzW0Eub3B0aW9ucy55YXhpc10sbix1LHo9Sy5heGVzW0Eub3B0aW9ucy54YXhpc10uc2VyaWVzX3UycChBLm9wdGlvbnMueCksRD1BLm9wdGlvbnMueW1pbk9mZnNldHx8QS5vcHRpb25zLnlPZmZzZXQscT1BLm9wdGlvbnMueW1heE9mZnNldHx8QS5vcHRpb25zLnlPZmZzZXQ7aWYoQS5vcHRpb25zLnltaW4hPW51bGwpe249Ti5zZXJpZXNfdTJwKEEub3B0aW9ucy55bWluKX1lbHNle2lmKEQhPW51bGwpe2lmKGQudHlwZShEKT09Im51bWJlciIpe249Ti5zZXJpZXNfdTJwKE4ubWluLUQpfWVsc2V7aWYoZC50eXBlKEQpPT0ic3RyaW5nIil7bj1OLnNlcmllc191MnAoTi5taW4pLXBhcnNlRmxvYXQoRCl9fX19aWYoQS5vcHRpb25zLnltYXghPW51bGwpe3U9Ti5zZXJpZXNfdTJwKEEub3B0aW9ucy55bWF4KX1lbHNle2lmKHEhPW51bGwpe2lmKGQudHlwZShxKT09Im51bWJlciIpe3U9Ti5zZXJpZXNfdTJwKE4ubWF4K3EpfWVsc2V7aWYoZC50eXBlKHEpPT0ic3RyaW5nIil7dT1OLnNlcmllc191MnAoTi5tYXgpK3BhcnNlRmxvYXQocSl9fX19aWYodSE9bnVsbCYmbiE9bnVsbCl7QS5ncmlkU3RhcnQ9W3osbl07QS5ncmlkU3RvcD1beix1XTt2YXIgcj1NYXRoLmNlaWwoKG4tdSkvRSk7dmFyIEM9KChyKkUpLShuLXUpKS8yO3ZhciBRPW4sTyxQLFI7Zm9yKHZhciBNPTA7TTxyO00rKyl7Zm9yKHZhciBKPTA7SjxvLmxlbmd0aDtKKz0yKXtPPVEtb1tKXTtpZihPPHUpe089dX1pZihRPHUpe1E9dX1GLmRyYXcoW3osUV0sW3osT10sdGhpcy5jYW52YXMuX2N0eCxCKTtRLT1vW0pdO2lmKEo8by5sZW5ndGgtMSl7US09b1tKKzFdfX19fX1icmVhaztjYXNlInJlY3RhbmdsZSI6Ri5zdHlsZT0ibGluZSI7Qi5jbG9zZVBhdGg9dHJ1ZTt2YXIgcD1LLmF4ZXNbQS5vcHRpb25zLnhheGlzXSxTLEwsdz1LLmF4ZXNbQS5vcHRpb25zLnlheGlzXS5zZXJpZXNfdTJwKEEub3B0aW9ucy55KSxJPUEub3B0aW9ucy54bWluT2Zmc2V0fHxBLm9wdGlvbnMueE9mZnNldCx0PUEub3B0aW9ucy54bWF4T2Zmc2V0fHxBLm9wdGlvbnMueE9mZnNldDtpZihBLm9wdGlvbnMueG1pbiE9bnVsbCl7Uz1wLnNlcmllc191MnAoQS5vcHRpb25zLnhtaW4pfWVsc2V7aWYoSSE9bnVsbCl7aWYoZC50eXBlKEkpPT0ibnVtYmVyIil7Uz1wLnNlcmllc191MnAocC5taW4rSSl9ZWxzZXtpZihkLnR5cGUoSSk9PSJzdHJpbmciKXtTPXAuc2VyaWVzX3UycChwLm1pbikrcGFyc2VGbG9hdChJKX19fX1pZihBLm9wdGlvbnMueG1heCE9bnVsbCl7TD1wLnNlcmllc191MnAoQS5vcHRpb25zLnhtYXgpfWVsc2V7aWYodCE9bnVsbCl7aWYoZC50eXBlKHQpPT0ibnVtYmVyIil7TD1wLnNlcmllc191MnAocC5tYXgtdCl9ZWxzZXtpZihkLnR5cGUodCk9PSJzdHJpbmciKXtMPXAuc2VyaWVzX3UycChwLm1heCktcGFyc2VGbG9hdCh0KX19fX12YXIgTj1LLmF4ZXNbQS5vcHRpb25zLnlheGlzXSxuLHUsej1LLmF4ZXNbQS5vcHRpb25zLnhheGlzXS5zZXJpZXNfdTJwKEEub3B0aW9ucy54KSxEPUEub3B0aW9ucy55bWluT2Zmc2V0fHxBLm9wdGlvbnMueU9mZnNldCxxPUEub3B0aW9ucy55bWF4T2Zmc2V0fHxBLm9wdGlvbnMueU9mZnNldDtpZihBLm9wdGlvbnMueW1pbiE9bnVsbCl7bj1OLnNlcmllc191MnAoQS5vcHRpb25zLnltaW4pfWVsc2V7aWYoRCE9bnVsbCl7aWYoZC50eXBlKEQpPT0ibnVtYmVyIil7bj1OLnNlcmllc191MnAoTi5taW4tRCl9ZWxzZXtpZihkLnR5cGUoRCk9PSJzdHJpbmciKXtuPU4uc2VyaWVzX3UycChOLm1pbiktcGFyc2VGbG9hdChEKX19fX1pZihBLm9wdGlvbnMueW1heCE9bnVsbCl7dT1OLnNlcmllc191MnAoQS5vcHRpb25zLnltYXgpfWVsc2V7aWYocSE9bnVsbCl7aWYoZC50eXBlKHEpPT0ibnVtYmVyIil7dT1OLnNlcmllc191MnAoTi5tYXgrcSl9ZWxzZXtpZihkLnR5cGUocSk9PSJzdHJpbmciKXt1PU4uc2VyaWVzX3UycChOLm1heCkrcGFyc2VGbG9hdChxKX19fX1pZihMIT1udWxsJiZTIT1udWxsJiZ1IT1udWxsJiZuIT1udWxsKXtBLmdyaWRTdGFydD1bUyxuXTtBLmdyaWRTdG9wPVtMLHVdO3RoaXMuY2FudmFzLl9jdHguZmlsbFN0eWxlPUEub3B0aW9ucy5jb2xvcjt0aGlzLmNhbnZhcy5fY3R4LmZpbGxSZWN0KFMsbixMLVMsdS1uKX1icmVhaztkZWZhdWx0OmJyZWFrfX19fX07ZC5qcXBsb3QuQ2FudmFzT3ZlcmxheS5wb3N0UGxvdERyYXc9ZnVuY3Rpb24oKXt2YXIgbz10aGlzLnBsdWdpbnMuY2FudmFzT3ZlcmxheTtpZihvJiZvLmhpZ2hsaWdodENhbnZhcyl7by5oaWdobGlnaHRDYW52YXMucmVzZXRDYW52YXMoKTtvLmhpZ2hsaWdodENhbnZhcz1udWxsfW8uY2FudmFzPW5ldyBkLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUoby5jYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywianFwbG90LW92ZXJsYXlDYW52YXMtY2FudmFzIix0aGlzLl9wbG90RGltZW5zaW9ucyx0aGlzKSk7by5jYW52YXMuc2V0Q29udGV4dCgpO2lmKCFvLmRlZmVyRHJhdyl7by5kcmF3KHRoaXMpfXZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO28uX3Rvb2x0aXBFbGVtPWQobik7bj1udWxsO28uX3Rvb2x0aXBFbGVtLmFkZENsYXNzKCJqcXBsb3QtY2FudmFzT3ZlcmxheS10b29sdGlwIik7by5fdG9vbHRpcEVsZW0uY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGRpc3BsYXk6Im5vbmUifSk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUoby5fdG9vbHRpcEVsZW0pO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgibW91c2VsZWF2ZSIse2VsZW06by5fdG9vbHRpcEVsZW19LGZ1bmN0aW9uKHApe3AuZGF0YS5lbGVtLmhpZGUoKX0pO3ZhciBvPW51bGx9O2Z1bmN0aW9uIGsocyxxLHIscCl7dmFyIHU9cy5wbHVnaW5zLmNhbnZhc092ZXJsYXk7dmFyIG89dS5fdG9vbHRpcEVsZW07dmFyIG49cS5vcHRpb25zLHYsdDtvLmh0bWwoZC5qcXBsb3Quc3ByaW50ZihuLnRvb2x0aXBGb3JtYXRTdHJpbmcscFswXSxwWzFdKSk7c3dpdGNoKG4udG9vbHRpcExvY2F0aW9uKXtjYXNlIm53Ijp2PXJbMF0rcy5fZ3JpZFBhZGRpbmcubGVmdC1vLm91dGVyV2lkdGgodHJ1ZSktbi50b29sdGlwT2Zmc2V0O3Q9clsxXStzLl9ncmlkUGFkZGluZy50b3Atbi50b29sdGlwT2Zmc2V0LW8ub3V0ZXJIZWlnaHQodHJ1ZSk7YnJlYWs7Y2FzZSJuIjp2PXJbMF0rcy5fZ3JpZFBhZGRpbmcubGVmdC1vLm91dGVyV2lkdGgodHJ1ZSkvMjt0PXJbMV0rcy5fZ3JpZFBhZGRpbmcudG9wLW4udG9vbHRpcE9mZnNldC1vLm91dGVySGVpZ2h0KHRydWUpO2JyZWFrO2Nhc2UibmUiOnY9clswXStzLl9ncmlkUGFkZGluZy5sZWZ0K24udG9vbHRpcE9mZnNldDt0PXJbMV0rcy5fZ3JpZFBhZGRpbmcudG9wLW4udG9vbHRpcE9mZnNldC1vLm91dGVySGVpZ2h0KHRydWUpO2JyZWFrO2Nhc2UiZSI6dj1yWzBdK3MuX2dyaWRQYWRkaW5nLmxlZnQrbi50b29sdGlwT2Zmc2V0O3Q9clsxXStzLl9ncmlkUGFkZGluZy50b3Atby5vdXRlckhlaWdodCh0cnVlKS8yO2JyZWFrO2Nhc2Uic2UiOnY9clswXStzLl9ncmlkUGFkZGluZy5sZWZ0K24udG9vbHRpcE9mZnNldDt0PXJbMV0rcy5fZ3JpZFBhZGRpbmcudG9wK24udG9vbHRpcE9mZnNldDticmVhaztjYXNlInMiOnY9clswXStzLl9ncmlkUGFkZGluZy5sZWZ0LW8ub3V0ZXJXaWR0aCh0cnVlKS8yO3Q9clsxXStzLl9ncmlkUGFkZGluZy50b3Arbi50b29sdGlwT2Zmc2V0O2JyZWFrO2Nhc2Uic3ciOnY9clswXStzLl9ncmlkUGFkZGluZy5sZWZ0LW8ub3V0ZXJXaWR0aCh0cnVlKS1uLnRvb2x0aXBPZmZzZXQ7dD1yWzFdK3MuX2dyaWRQYWRkaW5nLnRvcCtuLnRvb2x0aXBPZmZzZXQ7YnJlYWs7Y2FzZSJ3Ijp2PXJbMF0rcy5fZ3JpZFBhZGRpbmcubGVmdC1vLm91dGVyV2lkdGgodHJ1ZSktbi50b29sdGlwT2Zmc2V0O3Q9clsxXStzLl9ncmlkUGFkZGluZy50b3Atby5vdXRlckhlaWdodCh0cnVlKS8yO2JyZWFrO2RlZmF1bHQ6dj1yWzBdK3MuX2dyaWRQYWRkaW5nLmxlZnQtby5vdXRlcldpZHRoKHRydWUpLW4udG9vbHRpcE9mZnNldDt0PXJbMV0rcy5fZ3JpZFBhZGRpbmcudG9wLW4udG9vbHRpcE9mZnNldC1vLm91dGVySGVpZ2h0KHRydWUpO2JyZWFrfW8uY3NzKCJsZWZ0Iix2KTtvLmNzcygidG9wIix0KTtpZihuLmZhZGVUb29sdGlwKXtvLnN0b3AodHJ1ZSx0cnVlKS5mYWRlSW4obi50b29sdGlwRmFkZVNwZWVkKX1lbHNle28uc2hvdygpfW89bnVsbH1mdW5jdGlvbiBoKHoscSxzLHApe3ZhciBvPXpbMF07dmFyIG49elsxXTt2YXIgeT1NYXRoLnJvdW5kKHNbMF0pO3ZhciB4PU1hdGgucm91bmQoc1sxXSk7dmFyIHU9TWF0aC5yb3VuZChxWzBdKTt2YXIgdD1NYXRoLnJvdW5kKHFbMV0pO3ZhciByPU1hdGguc3FydChNYXRoLnBvdyh5LXUsMikrTWF0aC5wb3coeC10LDIpKTt2YXIgQT1wKnI7dmFyIHc9TWF0aC5hYnMoKHUteSkqKG4teCktKHQteCkqKG8teSkpO3ZhciB2PSh3PEEpP3RydWU6ZmFsc2U7cmV0dXJuIHZ9ZnVuY3Rpb24gZyh4LHEscixwKXt2YXIgbz14WzBdO3ZhciBuPXhbMV07dmFyIHc9TWF0aC5yb3VuZChyWzBdKTt2YXIgdj1NYXRoLnJvdW5kKHJbMV0pO3ZhciB0PU1hdGgucm91bmQocVswXSk7dmFyIHM9TWF0aC5yb3VuZChxWzFdKTt2YXIgeTtpZih3PnQpe3k9dzt3PXQ7dD15fWlmKHY+cyl7eT12O3Y9cztzPXl9dmFyIHU9KG8+PXcmJm88PXQmJm4+PXYmJm48PXMpO3JldHVybiB1fWZ1bmN0aW9uIGEoeix3LHIsQSx4KXt2YXIgeT14LnBsdWdpbnMuY2FudmFzT3ZlcmxheTt2YXIgdj15Lm9iamVjdHM7dmFyIHM9di5sZW5ndGg7dmFyIHUsbz1mYWxzZTt2YXIgcTtmb3IodmFyIHQ9MDt0PHM7dCsrKXt1PXZbdF07aWYodS5vcHRpb25zLnNob3dUb29sdGlwKXt2YXIgcDtpZih1LnR5cGU9PT0icmVjdGFuZ2xlIil7cD1nKFt3Lngsdy55XSx1LmdyaWRTdGFydCx1LmdyaWRTdG9wLHUudG9vbHRpcFdpZHRoRmFjdG9yKX1lbHNle3A9aChbdy54LHcueV0sdS5ncmlkU3RhcnQsdS5ncmlkU3RvcCx1LnRvb2x0aXBXaWR0aEZhY3Rvcil9cj1beC5heGVzW3Uub3B0aW9ucy54YXhpc10uc2VyaWVzX3AydSh3LngpLHguYXhlc1t1Lm9wdGlvbnMueWF4aXNdLnNlcmllc19wMnUody55KV07aWYocCYmeS5oaWdobGlnaHRPYmplY3RJbmRleD09bnVsbCl7c3dpdGNoKHUudHlwZSl7Y2FzZSJsaW5lIjprKHgsdSxbdy54LHcueV0scik7YnJlYWs7Y2FzZSJob3Jpem9udGFsTGluZSI6Y2FzZSJkYXNoZWRIb3Jpem9udGFsTGluZSI6ayh4LHUsW3cueCx1LmdyaWRTdGFydFsxXV0sW3JbMF0sdS5vcHRpb25zLnldKTticmVhaztjYXNlInZlcnRpY2FsTGluZSI6Y2FzZSJkYXNoZWRWZXJ0aWNhbExpbmUiOmsoeCx1LFt1LmdyaWRTdGFydFswXSx3LnldLFt1Lm9wdGlvbnMueCxyWzFdXSk7YnJlYWs7Y2FzZSJyZWN0YW5nbGUiOmsoeCx1LFt1LmdyaWRTdGFydFswXSx3LnldLFt1Lm9wdGlvbnMueCxyWzFdXSk7YnJlYWs7ZGVmYXVsdDpicmVha315LmhpZ2hsaWdodE9iamVjdEluZGV4PXQ7bz10cnVlO2JyZWFrfWVsc2V7aWYocCYmeS5oaWdobGlnaHRPYmplY3RJbmRleCE9PXQpe3E9eS5fdG9vbHRpcEVsZW07aWYodS5mYWRlVG9vbHRpcCl7cS5mYWRlT3V0KHUudG9vbHRpcEZhZGVTcGVlZCl9ZWxzZXtxLmhpZGUoKX1zd2l0Y2godS50eXBlKXtjYXNlImxpbmUiOmsoeCx1LFt3Lngsdy55XSxyKTticmVhaztjYXNlImhvcml6b250YWxMaW5lIjpjYXNlImRhc2hlZEhvcml6b250YWxMaW5lIjprKHgsdSxbdy54LHUuZ3JpZFN0YXJ0WzFdXSxbclswXSx1Lm9wdGlvbnMueV0pO2JyZWFrO2Nhc2UidmVydGljYWxMaW5lIjpjYXNlImRhc2hlZFZlcnRpY2FsTGluZSI6ayh4LHUsW3UuZ3JpZFN0YXJ0WzBdLHcueV0sW3Uub3B0aW9ucy54LHJbMV1dKTticmVhaztjYXNlInJlY3RhbmdsZSI6ayh4LHUsW3UuZ3JpZFN0YXJ0WzBdLHcueV0sW3Uub3B0aW9ucy54LHJbMV1dKTticmVhaztkZWZhdWx0OmJyZWFrfXkuaGlnaGxpZ2h0T2JqZWN0SW5kZXg9dDtvPXRydWU7YnJlYWt9ZWxzZXtpZihwKXtzd2l0Y2godS50eXBlKXtjYXNlImxpbmUiOmsoeCx1LFt3Lngsdy55XSxyKTticmVhaztjYXNlImhvcml6b250YWxMaW5lIjpjYXNlImRhc2hlZEhvcml6b250YWxMaW5lIjprKHgsdSxbdy54LHUuZ3JpZFN0YXJ0WzFdXSxbclswXSx1Lm9wdGlvbnMueV0pO2JyZWFrO2Nhc2UidmVydGljYWxMaW5lIjpjYXNlImRhc2hlZFZlcnRpY2FsTGluZSI6ayh4LHUsW3UuZ3JpZFN0YXJ0WzBdLHcueV0sW3Uub3B0aW9ucy54LHJbMV1dKTticmVhaztjYXNlInJlY3RhbmdsZSI6ayh4LHUsW3UuZ3JpZFN0YXJ0WzBdLHcueV0sW3Uub3B0aW9ucy54LHJbMV1dKTticmVhaztkZWZhdWx0OmJyZWFrfW89dHJ1ZTticmVha319fX19aWYoIW8mJnkuaGlnaGxpZ2h0T2JqZWN0SW5kZXghPT1udWxsKXtxPXkuX3Rvb2x0aXBFbGVtO3U9eS5nZXRPYmplY3QoeS5oaWdobGlnaHRPYmplY3RJbmRleCk7aWYodS5mYWRlVG9vbHRpcCl7cS5mYWRlT3V0KHUudG9vbHRpcEZhZGVTcGVlZCl9ZWxzZXtxLmhpZGUoKX15LmhpZ2hsaWdodE9iamVjdEluZGV4PW51bGx9fWQuanFwbG90LnBvc3RJbml0SG9va3MucHVzaChkLmpxcGxvdC5DYW52YXNPdmVybGF5LnBvc3RQbG90SW5pdCk7ZC5qcXBsb3QucG9zdERyYXdIb29rcy5wdXNoKGQuanFwbG90LkNhbnZhc092ZXJsYXkucG9zdFBsb3REcmF3KTtkLmpxcGxvdC5ldmVudExpc3RlbmVySG9va3MucHVzaChbImpxcGxvdE1vdXNlTW92ZSIsYV0pfSkoalF1ZXJ5KTs=]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oYSl7YS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyPWZ1bmN0aW9uKGIpe3RoaXMuZm9udFN0eWxlPSJub3JtYWwiO3RoaXMuZm9udFZhcmlhbnQ9Im5vcm1hbCI7dGhpcy5mb250V2VpZ2h0PSJub3JtYWwiO3RoaXMuZm9udFNpemU9IjEwcHgiO3RoaXMuZm9udEZhbWlseT0ic2Fucy1zZXJpZiI7dGhpcy5mb250U3RyZXRjaD0xO3RoaXMuZmlsbFN0eWxlPSIjNjY2NjY2Ijt0aGlzLmFuZ2xlPTA7dGhpcy50ZXh0QWxpZ249InN0YXJ0Ijt0aGlzLnRleHRCYXNlbGluZT0iYWxwaGFiZXRpYyI7dGhpcy50ZXh0O3RoaXMud2lkdGg7dGhpcy5oZWlnaHQ7dGhpcy5wdDJweD0xLjI4O2EuZXh0ZW5kKHRydWUsdGhpcyxiKTt0aGlzLm5vcm1hbGl6ZWRGb250U2l6ZT10aGlzLm5vcm1hbGl6ZUZvbnRTaXplKHRoaXMuZm9udFNpemUpO3RoaXMuc2V0SGVpZ2h0KCl9O2EuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihiKXthLmV4dGVuZCh0cnVlLHRoaXMsYik7dGhpcy5ub3JtYWxpemVkRm9udFNpemU9dGhpcy5ub3JtYWxpemVGb250U2l6ZSh0aGlzLmZvbnRTaXplKTt0aGlzLnNldEhlaWdodCgpfTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLm5vcm1hbGl6ZUZvbnRTaXplPWZ1bmN0aW9uKGIpe2I9U3RyaW5nKGIpO3ZhciBjPXBhcnNlRmxvYXQoYik7aWYoYi5pbmRleE9mKCJweCIpPi0xKXtyZXR1cm4gYy90aGlzLnB0MnB4fWVsc2V7aWYoYi5pbmRleE9mKCJwdCIpPi0xKXtyZXR1cm4gY31lbHNle2lmKGIuaW5kZXhPZigiZW0iKT4tMSl7cmV0dXJuIGMqMTJ9ZWxzZXtpZihiLmluZGV4T2YoIiUiKT4tMSl7cmV0dXJuIGMqMTIvMTAwfWVsc2V7cmV0dXJuIGMvdGhpcy5wdDJweH19fX19O2EuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlci5wcm90b3R5cGUuZm9udFdlaWdodDJGbG9hdD1mdW5jdGlvbihiKXtpZihOdW1iZXIoYikpe3JldHVybiBiLzQwMH1lbHNle3N3aXRjaChiKXtjYXNlIm5vcm1hbCI6cmV0dXJuIDE7YnJlYWs7Y2FzZSJib2xkIjpyZXR1cm4gMS43NTticmVhaztjYXNlImJvbGRlciI6cmV0dXJuIDIuMjU7YnJlYWs7Y2FzZSJsaWdodGVyIjpyZXR1cm4gMC43NTticmVhaztkZWZhdWx0OnJldHVybiAxO2JyZWFrfX19O2EuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlci5wcm90b3R5cGUuZ2V0VGV4dD1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRleHR9O2EuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlci5wcm90b3R5cGUuc2V0VGV4dD1mdW5jdGlvbihjLGIpe3RoaXMudGV4dD1jO3RoaXMuc2V0V2lkdGgoYik7cmV0dXJuIHRoaXN9O2EuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlci5wcm90b3R5cGUuZ2V0V2lkdGg9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMud2lkdGh9O2EuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlci5wcm90b3R5cGUuc2V0V2lkdGg9ZnVuY3Rpb24oYyxiKXtpZighYil7dGhpcy53aWR0aD10aGlzLm1lYXN1cmUoYyx0aGlzLnRleHQpfWVsc2V7dGhpcy53aWR0aD1ifXJldHVybiB0aGlzfTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmdldEhlaWdodD1mdW5jdGlvbihiKXtyZXR1cm4gdGhpcy5oZWlnaHR9O2EuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlci5wcm90b3R5cGUuc2V0SGVpZ2h0PWZ1bmN0aW9uKGIpe2lmKCFiKXt0aGlzLmhlaWdodD10aGlzLm5vcm1hbGl6ZWRGb250U2l6ZSp0aGlzLnB0MnB4fWVsc2V7dGhpcy5oZWlnaHQ9Yn1yZXR1cm4gdGhpc307YS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLnByb3RvdHlwZS5sZXR0ZXI9ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMubGV0dGVyc1tiXX07YS5qcXBsb3QuQ2FudmFzVGV4dFJlbmRlcmVyLnByb3RvdHlwZS5hc2NlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ub3JtYWxpemVkRm9udFNpemV9O2EuanFwbG90LkNhbnZhc1RleHRSZW5kZXJlci5wcm90b3R5cGUuZGVzY2VudD1mdW5jdGlvbigpe3JldHVybiA3KnRoaXMubm9ybWFsaXplZEZvbnRTaXplLzI1fTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLm1lYXN1cmU9ZnVuY3Rpb24oZCxnKXt2YXIgZj0wO3ZhciBiPWcubGVuZ3RoO2Zvcih2YXIgZT0wO2U8YjtlKyspe3ZhciBoPXRoaXMubGV0dGVyKGcuY2hhckF0KGUpKTtpZihoKXtmKz1oLndpZHRoKnRoaXMubm9ybWFsaXplZEZvbnRTaXplLzI1KnRoaXMuZm9udFN0cmV0Y2h9fXJldHVybiBmfTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24ocyxuKXt2YXIgcj0wO3ZhciBvPXRoaXMuaGVpZ2h0KjAuNzI7dmFyIHA9MDt2YXIgbD1uLmxlbmd0aDt2YXIgaz10aGlzLm5vcm1hbGl6ZWRGb250U2l6ZS8yNTtzLnNhdmUoKTt2YXIgaCxmO2lmKCgtTWF0aC5QSS8yPD10aGlzLmFuZ2xlJiZ0aGlzLmFuZ2xlPD0wKXx8KE1hdGguUEkqMy8yPD10aGlzLmFuZ2xlJiZ0aGlzLmFuZ2xlPD1NYXRoLlBJKjIpKXtoPTA7Zj0tTWF0aC5zaW4odGhpcy5hbmdsZSkqdGhpcy53aWR0aH1lbHNle2lmKCgwPHRoaXMuYW5nbGUmJnRoaXMuYW5nbGU8PU1hdGguUEkvMil8fCgtTWF0aC5QSSoyPD10aGlzLmFuZ2xlJiZ0aGlzLmFuZ2xlPD0tTWF0aC5QSSozLzIpKXtoPU1hdGguc2luKHRoaXMuYW5nbGUpKnRoaXMuaGVpZ2h0O2Y9MH1lbHNle2lmKCgtTWF0aC5QSTx0aGlzLmFuZ2xlJiZ0aGlzLmFuZ2xlPC1NYXRoLlBJLzIpfHwoTWF0aC5QSTw9dGhpcy5hbmdsZSYmdGhpcy5hbmdsZTw9TWF0aC5QSSozLzIpKXtoPS1NYXRoLmNvcyh0aGlzLmFuZ2xlKSp0aGlzLndpZHRoO2Y9LU1hdGguc2luKHRoaXMuYW5nbGUpKnRoaXMud2lkdGgtTWF0aC5jb3ModGhpcy5hbmdsZSkqdGhpcy5oZWlnaHR9ZWxzZXtpZigoLU1hdGguUEkqMy8yPHRoaXMuYW5nbGUmJnRoaXMuYW5nbGU8TWF0aC5QSSl8fChNYXRoLlBJLzI8dGhpcy5hbmdsZSYmdGhpcy5hbmdsZTxNYXRoLlBJKSl7aD1NYXRoLnNpbih0aGlzLmFuZ2xlKSp0aGlzLmhlaWdodC1NYXRoLmNvcyh0aGlzLmFuZ2xlKSp0aGlzLndpZHRoO2Y9LU1hdGguY29zKHRoaXMuYW5nbGUpKnRoaXMuaGVpZ2h0fX19fXMuc3Ryb2tlU3R5bGU9dGhpcy5maWxsU3R5bGU7cy5maWxsU3R5bGU9dGhpcy5maWxsU3R5bGU7cy50cmFuc2xhdGUoaCxmKTtzLnJvdGF0ZSh0aGlzLmFuZ2xlKTtzLmxpbmVDYXA9InJvdW5kIjt2YXIgdD0odGhpcy5ub3JtYWxpemVkRm9udFNpemU+MzApPzI6MisoMzAtdGhpcy5ub3JtYWxpemVkRm9udFNpemUpLzIwO3MubGluZVdpZHRoPXQqayp0aGlzLmZvbnRXZWlnaHQyRmxvYXQodGhpcy5mb250V2VpZ2h0KTtmb3IodmFyIGc9MDtnPGw7ZysrKXt2YXIgbT10aGlzLmxldHRlcihuLmNoYXJBdChnKSk7aWYoIW0pe2NvbnRpbnVlfXMuYmVnaW5QYXRoKCk7dmFyIGU9MTt2YXIgYj0wO2Zvcih2YXIgZD0wO2Q8bS5wb2ludHMubGVuZ3RoO2QrKyl7dmFyIHE9bS5wb2ludHNbZF07aWYocVswXT09LTEmJnFbMV09PS0xKXtlPTE7Y29udGludWV9aWYoZSl7cy5tb3ZlVG8ocitxWzBdKmsqdGhpcy5mb250U3RyZXRjaCxvLXFbMV0qayk7ZT1mYWxzZX1lbHNle3MubGluZVRvKHIrcVswXSprKnRoaXMuZm9udFN0cmV0Y2gsby1xWzFdKmspfX1zLnN0cm9rZSgpO3IrPW0ud2lkdGgqayp0aGlzLmZvbnRTdHJldGNofXMucmVzdG9yZSgpO3JldHVybiBwfTthLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIucHJvdG90eXBlLmxldHRlcnM9eyIgIjp7d2lkdGg6MTYscG9pbnRzOltdfSwiISI6e3dpZHRoOjEwLHBvaW50czpbWzUsMjFdLFs1LDddLFstMSwtMV0sWzUsMl0sWzQsMV0sWzUsMF0sWzYsMV0sWzUsMl1dfSwnIic6e3dpZHRoOjE2LHBvaW50czpbWzQsMjFdLFs0LDE0XSxbLTEsLTFdLFsxMiwyMV0sWzEyLDE0XV19LCIjIjp7d2lkdGg6MjEscG9pbnRzOltbMTEsMjVdLFs0LC03XSxbLTEsLTFdLFsxNywyNV0sWzEwLC03XSxbLTEsLTFdLFs0LDEyXSxbMTgsMTJdLFstMSwtMV0sWzMsNl0sWzE3LDZdXX0sIiQiOnt3aWR0aDoyMCxwb2ludHM6W1s4LDI1XSxbOCwtNF0sWy0xLC0xXSxbMTIsMjVdLFsxMiwtNF0sWy0xLC0xXSxbMTcsMThdLFsxNSwyMF0sWzEyLDIxXSxbOCwyMV0sWzUsMjBdLFszLDE4XSxbMywxNl0sWzQsMTRdLFs1LDEzXSxbNywxMl0sWzEzLDEwXSxbMTUsOV0sWzE2LDhdLFsxNyw2XSxbMTcsM10sWzE1LDFdLFsxMiwwXSxbOCwwXSxbNSwxXSxbMywzXV19LCIlIjp7d2lkdGg6MjQscG9pbnRzOltbMjEsMjFdLFszLDBdLFstMSwtMV0sWzgsMjFdLFsxMCwxOV0sWzEwLDE3XSxbOSwxNV0sWzcsMTRdLFs1LDE0XSxbMywxNl0sWzMsMThdLFs0LDIwXSxbNiwyMV0sWzgsMjFdLFsxMCwyMF0sWzEzLDE5XSxbMTYsMTldLFsxOSwyMF0sWzIxLDIxXSxbLTEsLTFdLFsxNyw3XSxbMTUsNl0sWzE0LDRdLFsxNCwyXSxbMTYsMF0sWzE4LDBdLFsyMCwxXSxbMjEsM10sWzIxLDVdLFsxOSw3XSxbMTcsN11dfSwiJiI6e3dpZHRoOjI2LHBvaW50czpbWzIzLDEyXSxbMjMsMTNdLFsyMiwxNF0sWzIxLDE0XSxbMjAsMTNdLFsxOSwxMV0sWzE3LDZdLFsxNSwzXSxbMTMsMV0sWzExLDBdLFs3LDBdLFs1LDFdLFs0LDJdLFszLDRdLFszLDZdLFs0LDhdLFs1LDldLFsxMiwxM10sWzEzLDE0XSxbMTQsMTZdLFsxNCwxOF0sWzEzLDIwXSxbMTEsMjFdLFs5LDIwXSxbOCwxOF0sWzgsMTZdLFs5LDEzXSxbMTEsMTBdLFsxNiwzXSxbMTgsMV0sWzIwLDBdLFsyMiwwXSxbMjMsMV0sWzIzLDJdXX0sIiciOnt3aWR0aDoxMCxwb2ludHM6W1s1LDE5XSxbNCwyMF0sWzUsMjFdLFs2LDIwXSxbNiwxOF0sWzUsMTZdLFs0LDE1XV19LCIoIjp7d2lkdGg6MTQscG9pbnRzOltbMTEsMjVdLFs5LDIzXSxbNywyMF0sWzUsMTZdLFs0LDExXSxbNCw3XSxbNSwyXSxbNywtMl0sWzksLTVdLFsxMSwtN11dfSwiKSI6e3dpZHRoOjE0LHBvaW50czpbWzMsMjVdLFs1LDIzXSxbNywyMF0sWzksMTZdLFsxMCwxMV0sWzEwLDddLFs5LDJdLFs3LC0yXSxbNSwtNV0sWzMsLTddXX0sIioiOnt3aWR0aDoxNixwb2ludHM6W1s4LDIxXSxbOCw5XSxbLTEsLTFdLFszLDE4XSxbMTMsMTJdLFstMSwtMV0sWzEzLDE4XSxbMywxMl1dfSwiKyI6e3dpZHRoOjI2LHBvaW50czpbWzEzLDE4XSxbMTMsMF0sWy0xLC0xXSxbNCw5XSxbMjIsOV1dfSwiLCI6e3dpZHRoOjEwLHBvaW50czpbWzYsMV0sWzUsMF0sWzQsMV0sWzUsMl0sWzYsMV0sWzYsLTFdLFs1LC0zXSxbNCwtNF1dfSwiLSI6e3dpZHRoOjE4LHBvaW50czpbWzYsOV0sWzEyLDldXX0sIi4iOnt3aWR0aDoxMCxwb2ludHM6W1s1LDJdLFs0LDFdLFs1LDBdLFs2LDFdLFs1LDJdXX0sIi8iOnt3aWR0aDoyMixwb2ludHM6W1syMCwyNV0sWzIsLTddXX0sIjAiOnt3aWR0aDoyMCxwb2ludHM6W1s5LDIxXSxbNiwyMF0sWzQsMTddLFszLDEyXSxbMyw5XSxbNCw0XSxbNiwxXSxbOSwwXSxbMTEsMF0sWzE0LDFdLFsxNiw0XSxbMTcsOV0sWzE3LDEyXSxbMTYsMTddLFsxNCwyMF0sWzExLDIxXSxbOSwyMV1dfSwiMSI6e3dpZHRoOjIwLHBvaW50czpbWzYsMTddLFs4LDE4XSxbMTEsMjFdLFsxMSwwXV19LCIyIjp7d2lkdGg6MjAscG9pbnRzOltbNCwxNl0sWzQsMTddLFs1LDE5XSxbNiwyMF0sWzgsMjFdLFsxMiwyMV0sWzE0LDIwXSxbMTUsMTldLFsxNiwxN10sWzE2LDE1XSxbMTUsMTNdLFsxMywxMF0sWzMsMF0sWzE3LDBdXX0sIjMiOnt3aWR0aDoyMCxwb2ludHM6W1s1LDIxXSxbMTYsMjFdLFsxMCwxM10sWzEzLDEzXSxbMTUsMTJdLFsxNiwxMV0sWzE3LDhdLFsxNyw2XSxbMTYsM10sWzE0LDFdLFsxMSwwXSxbOCwwXSxbNSwxXSxbNCwyXSxbMyw0XV19LCI0Ijp7d2lkdGg6MjAscG9pbnRzOltbMTMsMjFdLFszLDddLFsxOCw3XSxbLTEsLTFdLFsxMywyMV0sWzEzLDBdXX0sIjUiOnt3aWR0aDoyMCxwb2ludHM6W1sxNSwyMV0sWzUsMjFdLFs0LDEyXSxbNSwxM10sWzgsMTRdLFsxMSwxNF0sWzE0LDEzXSxbMTYsMTFdLFsxNyw4XSxbMTcsNl0sWzE2LDNdLFsxNCwxXSxbMTEsMF0sWzgsMF0sWzUsMV0sWzQsMl0sWzMsNF1dfSwiNiI6e3dpZHRoOjIwLHBvaW50czpbWzE2LDE4XSxbMTUsMjBdLFsxMiwyMV0sWzEwLDIxXSxbNywyMF0sWzUsMTddLFs0LDEyXSxbNCw3XSxbNSwzXSxbNywxXSxbMTAsMF0sWzExLDBdLFsxNCwxXSxbMTYsM10sWzE3LDZdLFsxNyw3XSxbMTYsMTBdLFsxNCwxMl0sWzExLDEzXSxbMTAsMTNdLFs3LDEyXSxbNSwxMF0sWzQsN11dfSwiNyI6e3dpZHRoOjIwLHBvaW50czpbWzE3LDIxXSxbNywwXSxbLTEsLTFdLFszLDIxXSxbMTcsMjFdXX0sIjgiOnt3aWR0aDoyMCxwb2ludHM6W1s4LDIxXSxbNSwyMF0sWzQsMThdLFs0LDE2XSxbNSwxNF0sWzcsMTNdLFsxMSwxMl0sWzE0LDExXSxbMTYsOV0sWzE3LDddLFsxNyw0XSxbMTYsMl0sWzE1LDFdLFsxMiwwXSxbOCwwXSxbNSwxXSxbNCwyXSxbMyw0XSxbMyw3XSxbNCw5XSxbNiwxMV0sWzksMTJdLFsxMywxM10sWzE1LDE0XSxbMTYsMTZdLFsxNiwxOF0sWzE1LDIwXSxbMTIsMjFdLFs4LDIxXV19LCI5Ijp7d2lkdGg6MjAscG9pbnRzOltbMTYsMTRdLFsxNSwxMV0sWzEzLDldLFsxMCw4XSxbOSw4XSxbNiw5XSxbNCwxMV0sWzMsMTRdLFszLDE1XSxbNCwxOF0sWzYsMjBdLFs5LDIxXSxbMTAsMjFdLFsxMywyMF0sWzE1LDE4XSxbMTYsMTRdLFsxNiw5XSxbMTUsNF0sWzEzLDFdLFsxMCwwXSxbOCwwXSxbNSwxXSxbNCwzXV19LCI6Ijp7d2lkdGg6MTAscG9pbnRzOltbNSwxNF0sWzQsMTNdLFs1LDEyXSxbNiwxM10sWzUsMTRdLFstMSwtMV0sWzUsMl0sWzQsMV0sWzUsMF0sWzYsMV0sWzUsMl1dfSwiOyI6e3dpZHRoOjEwLHBvaW50czpbWzUsMTRdLFs0LDEzXSxbNSwxMl0sWzYsMTNdLFs1LDE0XSxbLTEsLTFdLFs2LDFdLFs1LDBdLFs0LDFdLFs1LDJdLFs2LDFdLFs2LC0xXSxbNSwtM10sWzQsLTRdXX0sIjwiOnt3aWR0aDoyNCxwb2ludHM6W1syMCwxOF0sWzQsOV0sWzIwLDBdXX0sIj0iOnt3aWR0aDoyNixwb2ludHM6W1s0LDEyXSxbMjIsMTJdLFstMSwtMV0sWzQsNl0sWzIyLDZdXX0sIj4iOnt3aWR0aDoyNCxwb2ludHM6W1s0LDE4XSxbMjAsOV0sWzQsMF1dfSwiPyI6e3dpZHRoOjE4LHBvaW50czpbWzMsMTZdLFszLDE3XSxbNCwxOV0sWzUsMjBdLFs3LDIxXSxbMTEsMjFdLFsxMywyMF0sWzE0LDE5XSxbMTUsMTddLFsxNSwxNV0sWzE0LDEzXSxbMTMsMTJdLFs5LDEwXSxbOSw3XSxbLTEsLTFdLFs5LDJdLFs4LDFdLFs5LDBdLFsxMCwxXSxbOSwyXV19LCJAIjp7d2lkdGg6MjcscG9pbnRzOltbMTgsMTNdLFsxNywxNV0sWzE1LDE2XSxbMTIsMTZdLFsxMCwxNV0sWzksMTRdLFs4LDExXSxbOCw4XSxbOSw2XSxbMTEsNV0sWzE0LDVdLFsxNiw2XSxbMTcsOF0sWy0xLC0xXSxbMTIsMTZdLFsxMCwxNF0sWzksMTFdLFs5LDhdLFsxMCw2XSxbMTEsNV0sWy0xLC0xXSxbMTgsMTZdLFsxNyw4XSxbMTcsNl0sWzE5LDVdLFsyMSw1XSxbMjMsN10sWzI0LDEwXSxbMjQsMTJdLFsyMywxNV0sWzIyLDE3XSxbMjAsMTldLFsxOCwyMF0sWzE1LDIxXSxbMTIsMjFdLFs5LDIwXSxbNywxOV0sWzUsMTddLFs0LDE1XSxbMywxMl0sWzMsOV0sWzQsNl0sWzUsNF0sWzcsMl0sWzksMV0sWzEyLDBdLFsxNSwwXSxbMTgsMV0sWzIwLDJdLFsyMSwzXSxbLTEsLTFdLFsxOSwxNl0sWzE4LDhdLFsxOCw2XSxbMTksNV1dfSxBOnt3aWR0aDoxOCxwb2ludHM6W1s5LDIxXSxbMSwwXSxbLTEsLTFdLFs5LDIxXSxbMTcsMF0sWy0xLC0xXSxbNCw3XSxbMTQsN11dfSxCOnt3aWR0aDoyMSxwb2ludHM6W1s0LDIxXSxbNCwwXSxbLTEsLTFdLFs0LDIxXSxbMTMsMjFdLFsxNiwyMF0sWzE3LDE5XSxbMTgsMTddLFsxOCwxNV0sWzE3LDEzXSxbMTYsMTJdLFsxMywxMV0sWy0xLC0xXSxbNCwxMV0sWzEzLDExXSxbMTYsMTBdLFsxNyw5XSxbMTgsN10sWzE4LDRdLFsxNywyXSxbMTYsMV0sWzEzLDBdLFs0LDBdXX0sQzp7d2lkdGg6MjEscG9pbnRzOltbMTgsMTZdLFsxNywxOF0sWzE1LDIwXSxbMTMsMjFdLFs5LDIxXSxbNywyMF0sWzUsMThdLFs0LDE2XSxbMywxM10sWzMsOF0sWzQsNV0sWzUsM10sWzcsMV0sWzksMF0sWzEzLDBdLFsxNSwxXSxbMTcsM10sWzE4LDVdXX0sRDp7d2lkdGg6MjEscG9pbnRzOltbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwyMV0sWzExLDIxXSxbMTQsMjBdLFsxNiwxOF0sWzE3LDE2XSxbMTgsMTNdLFsxOCw4XSxbMTcsNV0sWzE2LDNdLFsxNCwxXSxbMTEsMF0sWzQsMF1dfSxFOnt3aWR0aDoxOSxwb2ludHM6W1s0LDIxXSxbNCwwXSxbLTEsLTFdLFs0LDIxXSxbMTcsMjFdLFstMSwtMV0sWzQsMTFdLFsxMiwxMV0sWy0xLC0xXSxbNCwwXSxbMTcsMF1dfSxGOnt3aWR0aDoxOCxwb2ludHM6W1s0LDIxXSxbNCwwXSxbLTEsLTFdLFs0LDIxXSxbMTcsMjFdLFstMSwtMV0sWzQsMTFdLFsxMiwxMV1dfSxHOnt3aWR0aDoyMSxwb2ludHM6W1sxOCwxNl0sWzE3LDE4XSxbMTUsMjBdLFsxMywyMV0sWzksMjFdLFs3LDIwXSxbNSwxOF0sWzQsMTZdLFszLDEzXSxbMyw4XSxbNCw1XSxbNSwzXSxbNywxXSxbOSwwXSxbMTMsMF0sWzE1LDFdLFsxNywzXSxbMTgsNV0sWzE4LDhdLFstMSwtMV0sWzEzLDhdLFsxOCw4XV19LEg6e3dpZHRoOjIyLHBvaW50czpbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzE4LDIxXSxbMTgsMF0sWy0xLC0xXSxbNCwxMV0sWzE4LDExXV19LEk6e3dpZHRoOjgscG9pbnRzOltbNCwyMV0sWzQsMF1dfSxKOnt3aWR0aDoxNixwb2ludHM6W1sxMiwyMV0sWzEyLDVdLFsxMSwyXSxbMTAsMV0sWzgsMF0sWzYsMF0sWzQsMV0sWzMsMl0sWzIsNV0sWzIsN11dfSxLOnt3aWR0aDoyMSxwb2ludHM6W1s0LDIxXSxbNCwwXSxbLTEsLTFdLFsxOCwyMV0sWzQsN10sWy0xLC0xXSxbOSwxMl0sWzE4LDBdXX0sTDp7d2lkdGg6MTcscG9pbnRzOltbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwwXSxbMTYsMF1dfSxNOnt3aWR0aDoyNCxwb2ludHM6W1s0LDIxXSxbNCwwXSxbLTEsLTFdLFs0LDIxXSxbMTIsMF0sWy0xLC0xXSxbMjAsMjFdLFsxMiwwXSxbLTEsLTFdLFsyMCwyMV0sWzIwLDBdXX0sTjp7d2lkdGg6MjIscG9pbnRzOltbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwyMV0sWzE4LDBdLFstMSwtMV0sWzE4LDIxXSxbMTgsMF1dfSxPOnt3aWR0aDoyMixwb2ludHM6W1s5LDIxXSxbNywyMF0sWzUsMThdLFs0LDE2XSxbMywxM10sWzMsOF0sWzQsNV0sWzUsM10sWzcsMV0sWzksMF0sWzEzLDBdLFsxNSwxXSxbMTcsM10sWzE4LDVdLFsxOSw4XSxbMTksMTNdLFsxOCwxNl0sWzE3LDE4XSxbMTUsMjBdLFsxMywyMV0sWzksMjFdXX0sUDp7d2lkdGg6MjEscG9pbnRzOltbNCwyMV0sWzQsMF0sWy0xLC0xXSxbNCwyMV0sWzEzLDIxXSxbMTYsMjBdLFsxNywxOV0sWzE4LDE3XSxbMTgsMTRdLFsxNywxMl0sWzE2LDExXSxbMTMsMTBdLFs0LDEwXV19LFE6e3dpZHRoOjIyLHBvaW50czpbWzksMjFdLFs3LDIwXSxbNSwxOF0sWzQsMTZdLFszLDEzXSxbMyw4XSxbNCw1XSxbNSwzXSxbNywxXSxbOSwwXSxbMTMsMF0sWzE1LDFdLFsxNywzXSxbMTgsNV0sWzE5LDhdLFsxOSwxM10sWzE4LDE2XSxbMTcsMThdLFsxNSwyMF0sWzEzLDIxXSxbOSwyMV0sWy0xLC0xXSxbMTIsNF0sWzE4LC0yXV19LFI6e3dpZHRoOjIxLHBvaW50czpbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzQsMjFdLFsxMywyMV0sWzE2LDIwXSxbMTcsMTldLFsxOCwxN10sWzE4LDE1XSxbMTcsMTNdLFsxNiwxMl0sWzEzLDExXSxbNCwxMV0sWy0xLC0xXSxbMTEsMTFdLFsxOCwwXV19LFM6e3dpZHRoOjIwLHBvaW50czpbWzE3LDE4XSxbMTUsMjBdLFsxMiwyMV0sWzgsMjFdLFs1LDIwXSxbMywxOF0sWzMsMTZdLFs0LDE0XSxbNSwxM10sWzcsMTJdLFsxMywxMF0sWzE1LDldLFsxNiw4XSxbMTcsNl0sWzE3LDNdLFsxNSwxXSxbMTIsMF0sWzgsMF0sWzUsMV0sWzMsM11dfSxUOnt3aWR0aDoxNixwb2ludHM6W1s4LDIxXSxbOCwwXSxbLTEsLTFdLFsxLDIxXSxbMTUsMjFdXX0sVTp7d2lkdGg6MjIscG9pbnRzOltbNCwyMV0sWzQsNl0sWzUsM10sWzcsMV0sWzEwLDBdLFsxMiwwXSxbMTUsMV0sWzE3LDNdLFsxOCw2XSxbMTgsMjFdXX0sVjp7d2lkdGg6MTgscG9pbnRzOltbMSwyMV0sWzksMF0sWy0xLC0xXSxbMTcsMjFdLFs5LDBdXX0sVzp7d2lkdGg6MjQscG9pbnRzOltbMiwyMV0sWzcsMF0sWy0xLC0xXSxbMTIsMjFdLFs3LDBdLFstMSwtMV0sWzEyLDIxXSxbMTcsMF0sWy0xLC0xXSxbMjIsMjFdLFsxNywwXV19LFg6e3dpZHRoOjIwLHBvaW50czpbWzMsMjFdLFsxNywwXSxbLTEsLTFdLFsxNywyMV0sWzMsMF1dfSxZOnt3aWR0aDoxOCxwb2ludHM6W1sxLDIxXSxbOSwxMV0sWzksMF0sWy0xLC0xXSxbMTcsMjFdLFs5LDExXV19LFo6e3dpZHRoOjIwLHBvaW50czpbWzE3LDIxXSxbMywwXSxbLTEsLTFdLFszLDIxXSxbMTcsMjFdLFstMSwtMV0sWzMsMF0sWzE3LDBdXX0sIlsiOnt3aWR0aDoxNCxwb2ludHM6W1s0LDI1XSxbNCwtN10sWy0xLC0xXSxbNSwyNV0sWzUsLTddLFstMSwtMV0sWzQsMjVdLFsxMSwyNV0sWy0xLC0xXSxbNCwtN10sWzExLC03XV19LCJcXCI6e3dpZHRoOjE0LHBvaW50czpbWzAsMjFdLFsxNCwtM11dfSwiXSI6e3dpZHRoOjE0LHBvaW50czpbWzksMjVdLFs5LC03XSxbLTEsLTFdLFsxMCwyNV0sWzEwLC03XSxbLTEsLTFdLFszLDI1XSxbMTAsMjVdLFstMSwtMV0sWzMsLTddLFsxMCwtN11dfSwiXiI6e3dpZHRoOjE2LHBvaW50czpbWzYsMTVdLFs4LDE4XSxbMTAsMTVdLFstMSwtMV0sWzMsMTJdLFs4LDE3XSxbMTMsMTJdLFstMSwtMV0sWzgsMTddLFs4LDBdXX0sXzp7d2lkdGg6MTYscG9pbnRzOltbMCwtMl0sWzE2LC0yXV19LCJgIjp7d2lkdGg6MTAscG9pbnRzOltbNiwyMV0sWzUsMjBdLFs0LDE4XSxbNCwxNl0sWzUsMTVdLFs2LDE2XSxbNSwxN11dfSxhOnt3aWR0aDoxOSxwb2ludHM6W1sxNSwxNF0sWzE1LDBdLFstMSwtMV0sWzE1LDExXSxbMTMsMTNdLFsxMSwxNF0sWzgsMTRdLFs2LDEzXSxbNCwxMV0sWzMsOF0sWzMsNl0sWzQsM10sWzYsMV0sWzgsMF0sWzExLDBdLFsxMywxXSxbMTUsM11dfSxiOnt3aWR0aDoxOSxwb2ludHM6W1s0LDIxXSxbNCwwXSxbLTEsLTFdLFs0LDExXSxbNiwxM10sWzgsMTRdLFsxMSwxNF0sWzEzLDEzXSxbMTUsMTFdLFsxNiw4XSxbMTYsNl0sWzE1LDNdLFsxMywxXSxbMTEsMF0sWzgsMF0sWzYsMV0sWzQsM11dfSxjOnt3aWR0aDoxOCxwb2ludHM6W1sxNSwxMV0sWzEzLDEzXSxbMTEsMTRdLFs4LDE0XSxbNiwxM10sWzQsMTFdLFszLDhdLFszLDZdLFs0LDNdLFs2LDFdLFs4LDBdLFsxMSwwXSxbMTMsMV0sWzE1LDNdXX0sZDp7d2lkdGg6MTkscG9pbnRzOltbMTUsMjFdLFsxNSwwXSxbLTEsLTFdLFsxNSwxMV0sWzEzLDEzXSxbMTEsMTRdLFs4LDE0XSxbNiwxM10sWzQsMTFdLFszLDhdLFszLDZdLFs0LDNdLFs2LDFdLFs4LDBdLFsxMSwwXSxbMTMsMV0sWzE1LDNdXX0sZTp7d2lkdGg6MTgscG9pbnRzOltbMyw4XSxbMTUsOF0sWzE1LDEwXSxbMTQsMTJdLFsxMywxM10sWzExLDE0XSxbOCwxNF0sWzYsMTNdLFs0LDExXSxbMyw4XSxbMyw2XSxbNCwzXSxbNiwxXSxbOCwwXSxbMTEsMF0sWzEzLDFdLFsxNSwzXV19LGY6e3dpZHRoOjEyLHBvaW50czpbWzEwLDIxXSxbOCwyMV0sWzYsMjBdLFs1LDE3XSxbNSwwXSxbLTEsLTFdLFsyLDE0XSxbOSwxNF1dfSxnOnt3aWR0aDoxOSxwb2ludHM6W1sxNSwxNF0sWzE1LC0yXSxbMTQsLTVdLFsxMywtNl0sWzExLC03XSxbOCwtN10sWzYsLTZdLFstMSwtMV0sWzE1LDExXSxbMTMsMTNdLFsxMSwxNF0sWzgsMTRdLFs2LDEzXSxbNCwxMV0sWzMsOF0sWzMsNl0sWzQsM10sWzYsMV0sWzgsMF0sWzExLDBdLFsxMywxXSxbMTUsM11dfSxoOnt3aWR0aDoxOSxwb2ludHM6W1s0LDIxXSxbNCwwXSxbLTEsLTFdLFs0LDEwXSxbNywxM10sWzksMTRdLFsxMiwxNF0sWzE0LDEzXSxbMTUsMTBdLFsxNSwwXV19LGk6e3dpZHRoOjgscG9pbnRzOltbMywyMV0sWzQsMjBdLFs1LDIxXSxbNCwyMl0sWzMsMjFdLFstMSwtMV0sWzQsMTRdLFs0LDBdXX0sajp7d2lkdGg6MTAscG9pbnRzOltbNSwyMV0sWzYsMjBdLFs3LDIxXSxbNiwyMl0sWzUsMjFdLFstMSwtMV0sWzYsMTRdLFs2LC0zXSxbNSwtNl0sWzMsLTddLFsxLC03XV19LGs6e3dpZHRoOjE3LHBvaW50czpbWzQsMjFdLFs0LDBdLFstMSwtMV0sWzE0LDE0XSxbNCw0XSxbLTEsLTFdLFs4LDhdLFsxNSwwXV19LGw6e3dpZHRoOjgscG9pbnRzOltbNCwyMV0sWzQsMF1dfSxtOnt3aWR0aDozMCxwb2ludHM6W1s0LDE0XSxbNCwwXSxbLTEsLTFdLFs0LDEwXSxbNywxM10sWzksMTRdLFsxMiwxNF0sWzE0LDEzXSxbMTUsMTBdLFsxNSwwXSxbLTEsLTFdLFsxNSwxMF0sWzE4LDEzXSxbMjAsMTRdLFsyMywxNF0sWzI1LDEzXSxbMjYsMTBdLFsyNiwwXV19LG46e3dpZHRoOjE5LHBvaW50czpbWzQsMTRdLFs0LDBdLFstMSwtMV0sWzQsMTBdLFs3LDEzXSxbOSwxNF0sWzEyLDE0XSxbMTQsMTNdLFsxNSwxMF0sWzE1LDBdXX0sbzp7d2lkdGg6MTkscG9pbnRzOltbOCwxNF0sWzYsMTNdLFs0LDExXSxbMyw4XSxbMyw2XSxbNCwzXSxbNiwxXSxbOCwwXSxbMTEsMF0sWzEzLDFdLFsxNSwzXSxbMTYsNl0sWzE2LDhdLFsxNSwxMV0sWzEzLDEzXSxbMTEsMTRdLFs4LDE0XV19LHA6e3dpZHRoOjE5LHBvaW50czpbWzQsMTRdLFs0LC03XSxbLTEsLTFdLFs0LDExXSxbNiwxM10sWzgsMTRdLFsxMSwxNF0sWzEzLDEzXSxbMTUsMTFdLFsxNiw4XSxbMTYsNl0sWzE1LDNdLFsxMywxXSxbMTEsMF0sWzgsMF0sWzYsMV0sWzQsM11dfSxxOnt3aWR0aDoxOSxwb2ludHM6W1sxNSwxNF0sWzE1LC03XSxbLTEsLTFdLFsxNSwxMV0sWzEzLDEzXSxbMTEsMTRdLFs4LDE0XSxbNiwxM10sWzQsMTFdLFszLDhdLFszLDZdLFs0LDNdLFs2LDFdLFs4LDBdLFsxMSwwXSxbMTMsMV0sWzE1LDNdXX0scjp7d2lkdGg6MTMscG9pbnRzOltbNCwxNF0sWzQsMF0sWy0xLC0xXSxbNCw4XSxbNSwxMV0sWzcsMTNdLFs5LDE0XSxbMTIsMTRdXX0sczp7d2lkdGg6MTcscG9pbnRzOltbMTQsMTFdLFsxMywxM10sWzEwLDE0XSxbNywxNF0sWzQsMTNdLFszLDExXSxbNCw5XSxbNiw4XSxbMTEsN10sWzEzLDZdLFsxNCw0XSxbMTQsM10sWzEzLDFdLFsxMCwwXSxbNywwXSxbNCwxXSxbMywzXV19LHQ6e3dpZHRoOjEyLHBvaW50czpbWzUsMjFdLFs1LDRdLFs2LDFdLFs4LDBdLFsxMCwwXSxbLTEsLTFdLFsyLDE0XSxbOSwxNF1dfSx1Ont3aWR0aDoxOSxwb2ludHM6W1s0LDE0XSxbNCw0XSxbNSwxXSxbNywwXSxbMTAsMF0sWzEyLDFdLFsxNSw0XSxbLTEsLTFdLFsxNSwxNF0sWzE1LDBdXX0sdjp7d2lkdGg6MTYscG9pbnRzOltbMiwxNF0sWzgsMF0sWy0xLC0xXSxbMTQsMTRdLFs4LDBdXX0sdzp7d2lkdGg6MjIscG9pbnRzOltbMywxNF0sWzcsMF0sWy0xLC0xXSxbMTEsMTRdLFs3LDBdLFstMSwtMV0sWzExLDE0XSxbMTUsMF0sWy0xLC0xXSxbMTksMTRdLFsxNSwwXV19LHg6e3dpZHRoOjE3LHBvaW50czpbWzMsMTRdLFsxNCwwXSxbLTEsLTFdLFsxNCwxNF0sWzMsMF1dfSx5Ont3aWR0aDoxNixwb2ludHM6W1syLDE0XSxbOCwwXSxbLTEsLTFdLFsxNCwxNF0sWzgsMF0sWzYsLTRdLFs0LC02XSxbMiwtN10sWzEsLTddXX0sejp7d2lkdGg6MTcscG9pbnRzOltbMTQsMTRdLFszLDBdLFstMSwtMV0sWzMsMTRdLFsxNCwxNF0sWy0xLC0xXSxbMywwXSxbMTQsMF1dfSwieyI6e3dpZHRoOjE0LHBvaW50czpbWzksMjVdLFs3LDI0XSxbNiwyM10sWzUsMjFdLFs1LDE5XSxbNiwxN10sWzcsMTZdLFs4LDE0XSxbOCwxMl0sWzYsMTBdLFstMSwtMV0sWzcsMjRdLFs2LDIyXSxbNiwyMF0sWzcsMThdLFs4LDE3XSxbOSwxNV0sWzksMTNdLFs4LDExXSxbNCw5XSxbOCw3XSxbOSw1XSxbOSwzXSxbOCwxXSxbNywwXSxbNiwtMl0sWzYsLTRdLFs3LC02XSxbLTEsLTFdLFs2LDhdLFs4LDZdLFs4LDRdLFs3LDJdLFs2LDFdLFs1LC0xXSxbNSwtM10sWzYsLTVdLFs3LC02XSxbOSwtN11dfSwifCI6e3dpZHRoOjgscG9pbnRzOltbNCwyNV0sWzQsLTddXX0sIn0iOnt3aWR0aDoxNCxwb2ludHM6W1s1LDI1XSxbNywyNF0sWzgsMjNdLFs5LDIxXSxbOSwxOV0sWzgsMTddLFs3LDE2XSxbNiwxNF0sWzYsMTJdLFs4LDEwXSxbLTEsLTFdLFs3LDI0XSxbOCwyMl0sWzgsMjBdLFs3LDE4XSxbNiwxN10sWzUsMTVdLFs1LDEzXSxbNiwxMV0sWzEwLDldLFs2LDddLFs1LDVdLFs1LDNdLFs2LDFdLFs3LDBdLFs4LC0yXSxbOCwtNF0sWzcsLTZdLFstMSwtMV0sWzgsOF0sWzYsNl0sWzYsNF0sWzcsMl0sWzgsMV0sWzksLTFdLFs5LC0zXSxbOCwtNV0sWzcsLTZdLFs1LC03XV19LCJ+Ijp7d2lkdGg6MjQscG9pbnRzOltbMyw2XSxbMyw4XSxbNCwxMV0sWzYsMTJdLFs4LDEyXSxbMTAsMTFdLFsxNCw4XSxbMTYsN10sWzE4LDddLFsyMCw4XSxbMjEsMTBdLFstMSwtMV0sWzMsOF0sWzQsMTBdLFs2LDExXSxbOCwxMV0sWzEwLDEwXSxbMTQsN10sWzE2LDZdLFsxOCw2XSxbMjAsN10sWzIxLDEwXSxbMjEsMTJdXX19O2EuanFwbG90LkNhbnZhc0ZvbnRSZW5kZXJlcj1mdW5jdGlvbihiKXtiPWJ8fHt9O2lmKCFiLnB0MnB4KXtiLnB0MnB4PTEuNX1hLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIuY2FsbCh0aGlzLGIpfTthLmpxcGxvdC5DYW52YXNGb250UmVuZGVyZXIucHJvdG90eXBlPW5ldyBhLmpxcGxvdC5DYW52YXNUZXh0UmVuZGVyZXIoe30pO2EuanFwbG90LkNhbnZhc0ZvbnRSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9YS5qcXBsb3QuQ2FudmFzRm9udFJlbmRlcmVyO2EuanFwbG90LkNhbnZhc0ZvbnRSZW5kZXJlci5wcm90b3R5cGUubWVhc3VyZT1mdW5jdGlvbihjLGUpe3ZhciBkPXRoaXMuZm9udFNpemUrIiAiK3RoaXMuZm9udEZhbWlseTtjLnNhdmUoKTtjLmZvbnQ9ZDt2YXIgYj1jLm1lYXN1cmVUZXh0KGUpLndpZHRoO2MucmVzdG9yZSgpO3JldHVybiBifTthLmpxcGxvdC5DYW52YXNGb250UmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oZSxnKXt2YXIgYz0wO3ZhciBoPXRoaXMuaGVpZ2h0KjAuNzI7ZS5zYXZlKCk7dmFyIGQsYjtpZigoLU1hdGguUEkvMjw9dGhpcy5hbmdsZSYmdGhpcy5hbmdsZTw9MCl8fChNYXRoLlBJKjMvMjw9dGhpcy5hbmdsZSYmdGhpcy5hbmdsZTw9TWF0aC5QSSoyKSl7ZD0wO2I9LU1hdGguc2luKHRoaXMuYW5nbGUpKnRoaXMud2lkdGh9ZWxzZXtpZigoMDx0aGlzLmFuZ2xlJiZ0aGlzLmFuZ2xlPD1NYXRoLlBJLzIpfHwoLU1hdGguUEkqMjw9dGhpcy5hbmdsZSYmdGhpcy5hbmdsZTw9LU1hdGguUEkqMy8yKSl7ZD1NYXRoLnNpbih0aGlzLmFuZ2xlKSp0aGlzLmhlaWdodDtiPTB9ZWxzZXtpZigoLU1hdGguUEk8dGhpcy5hbmdsZSYmdGhpcy5hbmdsZTwtTWF0aC5QSS8yKXx8KE1hdGguUEk8PXRoaXMuYW5nbGUmJnRoaXMuYW5nbGU8PU1hdGguUEkqMy8yKSl7ZD0tTWF0aC5jb3ModGhpcy5hbmdsZSkqdGhpcy53aWR0aDtiPS1NYXRoLnNpbih0aGlzLmFuZ2xlKSp0aGlzLndpZHRoLU1hdGguY29zKHRoaXMuYW5nbGUpKnRoaXMuaGVpZ2h0fWVsc2V7aWYoKC1NYXRoLlBJKjMvMjx0aGlzLmFuZ2xlJiZ0aGlzLmFuZ2xlPE1hdGguUEkpfHwoTWF0aC5QSS8yPHRoaXMuYW5nbGUmJnRoaXMuYW5nbGU8TWF0aC5QSSkpe2Q9TWF0aC5zaW4odGhpcy5hbmdsZSkqdGhpcy5oZWlnaHQtTWF0aC5jb3ModGhpcy5hbmdsZSkqdGhpcy53aWR0aDtiPS1NYXRoLmNvcyh0aGlzLmFuZ2xlKSp0aGlzLmhlaWdodH19fX1lLnN0cm9rZVN0eWxlPXRoaXMuZmlsbFN0eWxlO2UuZmlsbFN0eWxlPXRoaXMuZmlsbFN0eWxlO3ZhciBmPXRoaXMuZm9udFNpemUrIiAiK3RoaXMuZm9udEZhbWlseTtlLmZvbnQ9ZjtlLnRyYW5zbGF0ZShkLGIpO2Uucm90YXRlKHRoaXMuYW5nbGUpO2UuZmlsbFRleHQoZyxjLGgpO2UucmVzdG9yZSgpfX0pKGpRdWVyeSk7]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oYSl7YS5qcXBsb3QuQ2F0ZWdvcnlBeGlzUmVuZGVyZXI9ZnVuY3Rpb24oYil7YS5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyLmNhbGwodGhpcyk7dGhpcy5zb3J0TWVyZ2VkTGFiZWxzPWZhbHNlfTthLmpxcGxvdC5DYXRlZ29yeUF4aXNSZW5kZXJlci5wcm90b3R5cGU9bmV3IGEuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlcigpO2EuanFwbG90LkNhdGVnb3J5QXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hLmpxcGxvdC5DYXRlZ29yeUF4aXNSZW5kZXJlcjthLmpxcGxvdC5DYXRlZ29yeUF4aXNSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihlKXt0aGlzLmdyb3Vwcz0xO3RoaXMuZ3JvdXBMYWJlbHM9W107dGhpcy5fZ3JvdXBMYWJlbHM9W107dGhpcy5fZ3JvdXBlZD1mYWxzZTt0aGlzLl9iYXJzUGVyR3JvdXA9bnVsbDt0aGlzLnJldmVyc2U9ZmFsc2U7YS5leHRlbmQodHJ1ZSx0aGlzLHt0aWNrT3B0aW9uczp7Zm9ybWF0U3RyaW5nOiIlZCJ9fSxlKTt2YXIgYj10aGlzLl9kYXRhQm91bmRzO2Zvcih2YXIgZj0wO2Y8dGhpcy5fc2VyaWVzLmxlbmd0aDtmKyspe3ZhciBnPXRoaXMuX3Nlcmllc1tmXTtpZihnLmdyb3Vwcyl7dGhpcy5ncm91cHM9Zy5ncm91cHN9dmFyIGg9Zy5kYXRhO2Zvcih2YXIgYz0wO2M8aC5sZW5ndGg7YysrKXtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe2lmKGhbY11bMF08Yi5taW58fGIubWluPT1udWxsKXtiLm1pbj1oW2NdWzBdfWlmKGhbY11bMF0+Yi5tYXh8fGIubWF4PT1udWxsKXtiLm1heD1oW2NdWzBdfX1lbHNle2lmKGhbY11bMV08Yi5taW58fGIubWluPT1udWxsKXtiLm1pbj1oW2NdWzFdfWlmKGhbY11bMV0+Yi5tYXh8fGIubWF4PT1udWxsKXtiLm1heD1oW2NdWzFdfX19fWlmKHRoaXMuZ3JvdXBMYWJlbHMubGVuZ3RoKXt0aGlzLmdyb3Vwcz10aGlzLmdyb3VwTGFiZWxzLmxlbmd0aH19O2EuanFwbG90LkNhdGVnb3J5QXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jcmVhdGVUaWNrcz1mdW5jdGlvbigpe3ZhciBEPXRoaXMuX3RpY2tzO3ZhciB6PXRoaXMudGlja3M7dmFyIEY9dGhpcy5uYW1lO3ZhciBDPXRoaXMuX2RhdGFCb3VuZHM7dmFyIHYsQTt2YXIgcSx3O3ZhciBkLGM7dmFyIGIseDtpZih6Lmxlbmd0aCl7aWYodGhpcy5ncm91cHM+MSYmIXRoaXMuX2dyb3VwZWQpe3ZhciByPXoubGVuZ3RoO3ZhciBwPXBhcnNlSW50KHIvdGhpcy5ncm91cHMsMTApO3ZhciBlPTA7Zm9yKHZhciB4PXA7eDxyO3grPXApe3ouc3BsaWNlKHgrZSwwLCIgIik7ZSsrfXRoaXMuX2dyb3VwZWQ9dHJ1ZX10aGlzLm1pbj0wLjU7dGhpcy5tYXg9ei5sZW5ndGgrMC41O3ZhciBtPXRoaXMubWF4LXRoaXMubWluO3RoaXMubnVtYmVyVGlja3M9Mip6Lmxlbmd0aCsxO2Zvcih4PTA7eDx6Lmxlbmd0aDt4Kyspe2I9dGhpcy5taW4rMip4Km0vKHRoaXMubnVtYmVyVGlja3MtMSk7dmFyIGg9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2guc2hvd0xhYmVsPWZhbHNlO2guc2V0VGljayhiLHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChoKTt2YXIgaD1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7aC5sYWJlbD16W3hdO2guc2hvd01hcms9ZmFsc2U7aC5zaG93R3JpZGxpbmU9ZmFsc2U7aC5zZXRUaWNrKGIrMC41LHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChoKX12YXIgaD1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7aC5zaG93TGFiZWw9ZmFsc2U7aC5zZXRUaWNrKGIrMSx0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goaCl9ZWxzZXtpZihGPT0ieGF4aXMifHxGPT0ieDJheGlzIil7dj10aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aH1lbHNle3Y9dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0fWlmKHRoaXMubWluIT1udWxsJiZ0aGlzLm1heCE9bnVsbCYmdGhpcy5udW1iZXJUaWNrcyE9bnVsbCl7dGhpcy50aWNrSW50ZXJ2YWw9bnVsbH1pZih0aGlzLm1pbiE9bnVsbCYmdGhpcy5tYXghPW51bGwmJnRoaXMudGlja0ludGVydmFsIT1udWxsKXtpZihwYXJzZUludCgodGhpcy5tYXgtdGhpcy5taW4pL3RoaXMudGlja0ludGVydmFsLDEwKSE9KHRoaXMubWF4LXRoaXMubWluKS90aGlzLnRpY2tJbnRlcnZhbCl7dGhpcy50aWNrSW50ZXJ2YWw9bnVsbH19dmFyIHk9W107dmFyIEI9MDt2YXIgcT0wLjU7dmFyIHcsRTt2YXIgZj1mYWxzZTtmb3IodmFyIHg9MDt4PHRoaXMuX3Nlcmllcy5sZW5ndGg7eCsrKXt2YXIgaz10aGlzLl9zZXJpZXNbeF07Zm9yKHZhciB1PTA7dTxrLmRhdGEubGVuZ3RoO3UrKyl7aWYodGhpcy5uYW1lPT0ieGF4aXMifHx0aGlzLm5hbWU9PSJ4MmF4aXMiKXtFPWsuZGF0YVt1XVswXX1lbHNle0U9ay5kYXRhW3VdWzFdfWlmKGEuaW5BcnJheShFLHkpPT0tMSl7Zj10cnVlO0IrPTE7eS5wdXNoKEUpfX19aWYoZiYmdGhpcy5zb3J0TWVyZ2VkTGFiZWxzKXtpZih0eXBlb2YgeVswXT09InN0cmluZyIpe3kuc29ydCgpfWVsc2V7eS5zb3J0KGZ1bmN0aW9uKGosaSl7cmV0dXJuIGotaX0pfX10aGlzLnRpY2tzPXk7Zm9yKHZhciB4PTA7eDx0aGlzLl9zZXJpZXMubGVuZ3RoO3grKyl7dmFyIGs9dGhpcy5fc2VyaWVzW3hdO2Zvcih2YXIgdT0wO3U8ay5kYXRhLmxlbmd0aDt1Kyspe2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7RT1rLmRhdGFbdV1bMF19ZWxzZXtFPWsuZGF0YVt1XVsxXX12YXIgbj1hLmluQXJyYXkoRSx5KSsxO2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7ay5kYXRhW3VdWzBdPW59ZWxzZXtrLmRhdGFbdV1bMV09bn19fWlmKHRoaXMuZ3JvdXBzPjEmJiF0aGlzLl9ncm91cGVkKXt2YXIgcj15Lmxlbmd0aDt2YXIgcD1wYXJzZUludChyL3RoaXMuZ3JvdXBzLDEwKTt2YXIgZT0wO2Zvcih2YXIgeD1wO3g8cjt4Kz1wKzEpe3lbeF09IiAifXRoaXMuX2dyb3VwZWQ9dHJ1ZX13PUIrMC41O2lmKHRoaXMubnVtYmVyVGlja3M9PW51bGwpe3RoaXMubnVtYmVyVGlja3M9MipCKzF9dmFyIG09dy1xO3RoaXMubWluPXE7dGhpcy5tYXg9dzt2YXIgbz0wO3ZhciBnPXBhcnNlSW50KDMrdi8xMCwxMCk7dmFyIHA9cGFyc2VJbnQoQi9nLDEwKTtpZih0aGlzLnRpY2tJbnRlcnZhbD09bnVsbCl7dGhpcy50aWNrSW50ZXJ2YWw9bS8odGhpcy5udW1iZXJUaWNrcy0xKX1mb3IodmFyIHg9MDt4PHRoaXMubnVtYmVyVGlja3M7eCsrKXtiPXRoaXMubWluK3gqdGhpcy50aWNrSW50ZXJ2YWw7dmFyIGg9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2lmKHgvMj09cGFyc2VJbnQoeC8yLDEwKSl7aC5zaG93TGFiZWw9ZmFsc2U7aC5zaG93TWFyaz10cnVlfWVsc2V7aWYocD4wJiZvPHApe2guc2hvd0xhYmVsPWZhbHNlO28rPTF9ZWxzZXtoLnNob3dMYWJlbD10cnVlO289MH1oLmxhYmVsPWguZm9ybWF0dGVyKGguZm9ybWF0U3RyaW5nLHlbKHgtMSkvMl0pO2guc2hvd01hcms9ZmFsc2U7aC5zaG93R3JpZGxpbmU9ZmFsc2V9aC5zZXRUaWNrKGIsdGhpcy5uYW1lKTt0aGlzLl90aWNrcy5wdXNoKGgpfX19O2EuanFwbG90LkNhdGVnb3J5QXhpc1JlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKGIsail7aWYodGhpcy5zaG93KXt0aGlzLnJlbmRlcmVyLmNyZWF0ZVRpY2tzLmNhbGwodGhpcyk7dmFyIGg9MDt2YXIgYztpZih0aGlzLl9lbGVtKXt0aGlzLl9lbGVtLmVtcHR5Rm9yY2UoKX10aGlzLl9lbGVtPXRoaXMuX2VsZW18fGEoJzxkaXYgY2xhc3M9ImpxcGxvdC1heGlzIGpxcGxvdC0nK3RoaXMubmFtZSsnIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7Ij48L2Rpdj4nKTtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe3RoaXMuX2VsZW0ud2lkdGgodGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGgpfWVsc2V7dGhpcy5fZWxlbS5oZWlnaHQodGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0KX10aGlzLmxhYmVsT3B0aW9ucy5heGlzPXRoaXMubmFtZTt0aGlzLl9sYWJlbD1uZXcgdGhpcy5sYWJlbFJlbmRlcmVyKHRoaXMubGFiZWxPcHRpb25zKTtpZih0aGlzLl9sYWJlbC5zaG93KXt2YXIgZz10aGlzLl9sYWJlbC5kcmF3KGIsaik7Zy5hcHBlbmRUbyh0aGlzLl9lbGVtKX12YXIgZj10aGlzLl90aWNrcztmb3IodmFyIGU9MDtlPGYubGVuZ3RoO2UrKyl7dmFyIGQ9ZltlXTtpZihkLnNob3dMYWJlbCYmKCFkLmlzTWlub3JUaWNrfHx0aGlzLnNob3dNaW5vclRpY2tzKSl7dmFyIGc9ZC5kcmF3KGIsaik7Zy5hcHBlbmRUbyh0aGlzLl9lbGVtKX19dGhpcy5fZ3JvdXBMYWJlbHM9W107Zm9yKHZhciBlPTA7ZTx0aGlzLmdyb3VwTGFiZWxzLmxlbmd0aDtlKyspe3ZhciBnPWEoJzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlOyIgY2xhc3M9ImpxcGxvdC0nK3RoaXMubmFtZSsnLWdyb3VwTGFiZWwiPjwvZGl2PicpO2cuaHRtbCh0aGlzLmdyb3VwTGFiZWxzW2VdKTt0aGlzLl9ncm91cExhYmVscy5wdXNoKGcpO2cuYXBwZW5kVG8odGhpcy5fZWxlbSl9fXJldHVybiB0aGlzLl9lbGVtfTthLmpxcGxvdC5DYXRlZ29yeUF4aXNSZW5kZXJlci5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKCl7dmFyIGU9MDt2YXIgbTt2YXIgaz0wO3ZhciBmPTA7dmFyIGQ9KHRoaXMuX2xhYmVsPT1udWxsKT9mYWxzZTp0aGlzLl9sYWJlbC5zaG93O2lmKHRoaXMuc2hvdyl7dmFyIG49dGhpcy5fdGlja3M7Zm9yKHZhciBjPTA7YzxuLmxlbmd0aDtjKyspe3ZhciBnPW5bY107aWYoZy5zaG93TGFiZWwmJighZy5pc01pbm9yVGlja3x8dGhpcy5zaG93TWlub3JUaWNrcykpe2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7bT1nLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpfWVsc2V7bT1nLl9lbGVtLm91dGVyV2lkdGgodHJ1ZSl9aWYobT5lKXtlPW19fX12YXIgaj0wO2Zvcih2YXIgYz0wO2M8dGhpcy5fZ3JvdXBMYWJlbHMubGVuZ3RoO2MrKyl7dmFyIGI9dGhpcy5fZ3JvdXBMYWJlbHNbY107aWYodGhpcy5uYW1lPT0ieGF4aXMifHx0aGlzLm5hbWU9PSJ4MmF4aXMiKXttPWIub3V0ZXJIZWlnaHQodHJ1ZSl9ZWxzZXttPWIub3V0ZXJXaWR0aCh0cnVlKX1pZihtPmope2o9bX19aWYoZCl7az10aGlzLl9sYWJlbC5fZWxlbS5vdXRlcldpZHRoKHRydWUpO2Y9dGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJIZWlnaHQodHJ1ZSl9aWYodGhpcy5uYW1lPT0ieGF4aXMiKXtlKz1qK2Y7dGhpcy5fZWxlbS5jc3Moe2hlaWdodDplKyJweCIsbGVmdDoiMHB4Iixib3R0b206IjBweCJ9KX1lbHNle2lmKHRoaXMubmFtZT09IngyYXhpcyIpe2UrPWorZjt0aGlzLl9lbGVtLmNzcyh7aGVpZ2h0OmUrInB4IixsZWZ0OiIwcHgiLHRvcDoiMHB4In0pfWVsc2V7aWYodGhpcy5uYW1lPT0ieWF4aXMiKXtlKz1qK2s7dGhpcy5fZWxlbS5jc3Moe3dpZHRoOmUrInB4IixsZWZ0OiIwcHgiLHRvcDoiMHB4In0pO2lmKGQmJnRoaXMuX2xhYmVsLmNvbnN0cnVjdG9yPT1hLmpxcGxvdC5BeGlzTGFiZWxSZW5kZXJlcil7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJ3aWR0aCIsaysicHgiKX19ZWxzZXtlKz1qK2s7dGhpcy5fZWxlbS5jc3Moe3dpZHRoOmUrInB4IixyaWdodDoiMHB4Iix0b3A6IjBweCJ9KTtpZihkJiZ0aGlzLl9sYWJlbC5jb25zdHJ1Y3Rvcj09YS5qcXBsb3QuQXhpc0xhYmVsUmVuZGVyZXIpe3RoaXMuX2xhYmVsLl9lbGVtLmNzcygid2lkdGgiLGsrInB4Iil9fX19fX07YS5qcXBsb3QuQ2F0ZWdvcnlBeGlzUmVuZGVyZXIucHJvdG90eXBlLnBhY2s9ZnVuY3Rpb24oZSxjKXt2YXIgQz10aGlzLl90aWNrczt2YXIgdj10aGlzLm1heDt2YXIgcz10aGlzLm1pbjt2YXIgbj1jLm1heDt2YXIgbD1jLm1pbjt2YXIgcT0odGhpcy5fbGFiZWw9PW51bGwpP2ZhbHNlOnRoaXMuX2xhYmVsLnNob3c7dmFyIHg7Zm9yKHZhciByIGluIGUpe3RoaXMuX2VsZW0uY3NzKHIsZVtyXSl9dGhpcy5fb2Zmc2V0cz1jO3ZhciBnPW4tbDt2YXIgaz12LXM7aWYoIXRoaXMucmV2ZXJzZSl7dGhpcy51MnA9ZnVuY3Rpb24oaCl7cmV0dXJuKGgtcykqZy9rK2x9O3RoaXMucDJ1PWZ1bmN0aW9uKGgpe3JldHVybihoLWwpKmsvZytzfTtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe3RoaXMuc2VyaWVzX3UycD1mdW5jdGlvbihoKXtyZXR1cm4oaC1zKSpnL2t9O3RoaXMuc2VyaWVzX3AydT1mdW5jdGlvbihoKXtyZXR1cm4gaCprL2crc319ZWxzZXt0aGlzLnNlcmllc191MnA9ZnVuY3Rpb24oaCl7cmV0dXJuKGgtdikqZy9rfTt0aGlzLnNlcmllc19wMnU9ZnVuY3Rpb24oaCl7cmV0dXJuIGgqay9nK3Z9fX1lbHNle3RoaXMudTJwPWZ1bmN0aW9uKGgpe3JldHVybiBsKyh2LWgpKmcva307dGhpcy5wMnU9ZnVuY3Rpb24oaCl7cmV0dXJuIHMrKGgtbCkqay9nfTtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe3RoaXMuc2VyaWVzX3UycD1mdW5jdGlvbihoKXtyZXR1cm4odi1oKSpnL2t9O3RoaXMuc2VyaWVzX3AydT1mdW5jdGlvbihoKXtyZXR1cm4gaCprL2crdn19ZWxzZXt0aGlzLnNlcmllc191MnA9ZnVuY3Rpb24oaCl7cmV0dXJuKHMtaCkqZy9rfTt0aGlzLnNlcmllc19wMnU9ZnVuY3Rpb24oaCl7cmV0dXJuIGgqay9nK3N9fX1pZih0aGlzLnNob3cpe2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7Zm9yKHg9MDt4PEMubGVuZ3RoO3grKyl7dmFyIG89Q1t4XTtpZihvLnNob3cmJm8uc2hvd0xhYmVsKXt2YXIgYjtpZihvLmNvbnN0cnVjdG9yPT1hLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyJiZvLmFuZ2xlKXt2YXIgQT0odGhpcy5uYW1lPT0ieGF4aXMiKT8xOi0xO3N3aXRjaChvLmxhYmVsUG9zaXRpb24pe2Nhc2UiYXV0byI6aWYoQSpvLmFuZ2xlPDApe2I9LW8uZ2V0V2lkdGgoKStvLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKC1vLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9ZWxzZXtiPS1vLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKG8uX3RleHRSZW5kZXJlci5hbmdsZSkvMn1icmVhaztjYXNlImVuZCI6Yj0tby5nZXRXaWR0aCgpK28uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4oLW8uX3RleHRSZW5kZXJlci5hbmdsZSkvMjticmVhaztjYXNlInN0YXJ0IjpiPS1vLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKG8uX3RleHRSZW5kZXJlci5hbmdsZSkvMjticmVhaztjYXNlIm1pZGRsZSI6Yj0tby5nZXRXaWR0aCgpLzIrby5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbigtby5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yO2JyZWFrO2RlZmF1bHQ6Yj0tby5nZXRXaWR0aCgpLzIrby5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbigtby5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yO2JyZWFrfX1lbHNle2I9LW8uZ2V0V2lkdGgoKS8yfXZhciBEPXRoaXMudTJwKG8udmFsdWUpK2IrInB4IjtvLl9lbGVtLmNzcygibGVmdCIsRCk7by5wYWNrKCl9fXZhciB6PVsiYm90dG9tIiwwXTtpZihxKXt2YXIgbT10aGlzLl9sYWJlbC5fZWxlbS5vdXRlcldpZHRoKHRydWUpO3RoaXMuX2xhYmVsLl9lbGVtLmNzcygibGVmdCIsbCtnLzItbS8yKyJweCIpO2lmKHRoaXMubmFtZT09InhheGlzIil7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJib3R0b20iLCIwcHgiKTt6PVsiYm90dG9tIix0aGlzLl9sYWJlbC5fZWxlbS5vdXRlckhlaWdodCh0cnVlKV19ZWxzZXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoInRvcCIsIjBweCIpO3o9WyJ0b3AiLHRoaXMuX2xhYmVsLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpXX10aGlzLl9sYWJlbC5wYWNrKCl9dmFyIGQ9cGFyc2VJbnQodGhpcy5fdGlja3MubGVuZ3RoL3RoaXMuZ3JvdXBzLDEwKSsxO2Zvcih4PTA7eDx0aGlzLl9ncm91cExhYmVscy5sZW5ndGg7eCsrKXt2YXIgQj0wO3ZhciBmPTA7Zm9yKHZhciB1PXgqZDt1PCh4KzEpKmQ7dSsrKXtpZih1Pj10aGlzLl90aWNrcy5sZW5ndGgtMSl7Y29udGludWV9aWYodGhpcy5fdGlja3NbdV0uX2VsZW0mJnRoaXMuX3RpY2tzW3VdLmxhYmVsIT0iICIpe3ZhciBvPXRoaXMuX3RpY2tzW3VdLl9lbGVtO3ZhciByPW8ucG9zaXRpb24oKTtCKz1yLmxlZnQrby5vdXRlcldpZHRoKHRydWUpLzI7ZisrfX1CPUIvZjt0aGlzLl9ncm91cExhYmVsc1t4XS5jc3Moe2xlZnQ6KEItdGhpcy5fZ3JvdXBMYWJlbHNbeF0ub3V0ZXJXaWR0aCh0cnVlKS8yKX0pO3RoaXMuX2dyb3VwTGFiZWxzW3hdLmNzcyh6WzBdLHpbMV0pfX1lbHNle2Zvcih4PTA7eDxDLmxlbmd0aDt4Kyspe3ZhciBvPUNbeF07aWYoby5zaG93JiZvLnNob3dMYWJlbCl7dmFyIGI7aWYoby5jb25zdHJ1Y3Rvcj09YS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciYmby5hbmdsZSl7dmFyIEE9KHRoaXMubmFtZT09InlheGlzIik/MTotMTtzd2l0Y2goby5sYWJlbFBvc2l0aW9uKXtjYXNlImF1dG8iOmNhc2UiZW5kIjppZihBKm8uYW5nbGU8MCl7Yj0tby5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLmNvcygtby5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWVsc2V7Yj0tby5nZXRIZWlnaHQoKStvLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguY29zKG8uX3RleHRSZW5kZXJlci5hbmdsZSkvMn1icmVhaztjYXNlInN0YXJ0IjppZihvLmFuZ2xlPjApe2I9LW8uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5jb3MoLW8uX3RleHRSZW5kZXJlci5hbmdsZSkvMn1lbHNle2I9LW8uZ2V0SGVpZ2h0KCkrby5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLmNvcyhvLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9YnJlYWs7Y2FzZSJtaWRkbGUiOmI9LW8uZ2V0SGVpZ2h0KCkvMjticmVhaztkZWZhdWx0OmI9LW8uZ2V0SGVpZ2h0KCkvMjticmVha319ZWxzZXtiPS1vLmdldEhlaWdodCgpLzJ9dmFyIEQ9dGhpcy51MnAoby52YWx1ZSkrYisicHgiO28uX2VsZW0uY3NzKCJ0b3AiLEQpO28ucGFjaygpfX12YXIgej1bImxlZnQiLDBdO2lmKHEpe3ZhciB5PXRoaXMuX2xhYmVsLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpO3RoaXMuX2xhYmVsLl9lbGVtLmNzcygidG9wIixuLWcvMi15LzIrInB4Iik7aWYodGhpcy5uYW1lPT0ieWF4aXMiKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoImxlZnQiLCIwcHgiKTt6PVsibGVmdCIsdGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKV19ZWxzZXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoInJpZ2h0IiwiMHB4Iik7ej1bInJpZ2h0Iix0aGlzLl9sYWJlbC5fZWxlbS5vdXRlcldpZHRoKHRydWUpXX10aGlzLl9sYWJlbC5wYWNrKCl9dmFyIGQ9cGFyc2VJbnQodGhpcy5fdGlja3MubGVuZ3RoL3RoaXMuZ3JvdXBzLDEwKSsxO2Zvcih4PTA7eDx0aGlzLl9ncm91cExhYmVscy5sZW5ndGg7eCsrKXt2YXIgQj0wO3ZhciBmPTA7Zm9yKHZhciB1PXgqZDt1PCh4KzEpKmQ7dSsrKXtpZih1Pj10aGlzLl90aWNrcy5sZW5ndGgtMSl7Y29udGludWV9aWYodGhpcy5fdGlja3NbdV0uX2VsZW0mJnRoaXMuX3RpY2tzW3VdLmxhYmVsIT0iICIpe3ZhciBvPXRoaXMuX3RpY2tzW3VdLl9lbGVtO3ZhciByPW8ucG9zaXRpb24oKTtCKz1yLnRvcCtvLm91dGVySGVpZ2h0KCkvMjtmKyt9fUI9Qi9mO3RoaXMuX2dyb3VwTGFiZWxzW3hdLmNzcyh7dG9wOkItdGhpcy5fZ3JvdXBMYWJlbHNbeF0ub3V0ZXJIZWlnaHQoKS8yfSk7dGhpcy5fZ3JvdXBMYWJlbHNbeF0uY3NzKHpbMF0selsxXSl9fX19fSkoalF1ZXJ5KTs=]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oYSl7YS5qcXBsb3QuY2lQYXJzZXI9ZnVuY3Rpb24oZyxsKXt2YXIgbT1bXSxvLG4saCxmLGUsYztpZih0eXBlb2YoZyk9PSJzdHJpbmciKXtnPWEuanFwbG90LkpTT04ucGFyc2UoZyxkKX1lbHNle2lmKHR5cGVvZihnKT09Im9iamVjdCIpe2ZvcihlIGluIGcpe2ZvcihoPTA7aDxnW2VdLmxlbmd0aDtoKyspe2ZvcihjIGluIGdbZV1baF0pe2dbZV1baF1bY109ZChjLGdbZV1baF1bY10pfX19fWVsc2V7cmV0dXJuIG51bGx9fWZ1bmN0aW9uIGQoaixrKXt2YXIgaTtpZihrIT1udWxsKXtpZihrLnRvU3RyaW5nKCkuaW5kZXhPZigiRGF0ZSIpPj0wKXtpPS9eXC9EYXRlXCgoLT9bMC05XSspXClcLyQvLmV4ZWMoayk7aWYoaSl7cmV0dXJuIHBhcnNlSW50KGlbMV0sMTApfX1yZXR1cm4ga319Zm9yKHZhciBiIGluIGcpe289W107bj1nW2JdO3N3aXRjaChiKXtjYXNlIlByaWNlVGlja3MiOmZvcihoPTA7aDxuLmxlbmd0aDtoKyspe28ucHVzaChbbltoXVsiVGlja0RhdGUiXSxuW2hdWyJQcmljZSJdXSl9YnJlYWs7Y2FzZSJQcmljZUJhcnMiOmZvcihoPTA7aDxuLmxlbmd0aDtoKyspe28ucHVzaChbbltoXVsiQmFyRGF0ZSJdLG5baF1bIk9wZW4iXSxuW2hdWyJIaWdoIl0sbltoXVsiTG93Il0sbltoXVsiQ2xvc2UiXV0pfWJyZWFrfW0ucHVzaChvKX1yZXR1cm4gbX19KShqUXVlcnkpOw==]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oail7ai5qcXBsb3QuQ3Vyc29yPWZ1bmN0aW9uKHEpe3RoaXMuc3R5bGU9ImNyb3NzaGFpciI7dGhpcy5wcmV2aW91c0N1cnNvcj0iYXV0byI7dGhpcy5zaG93PWouanFwbG90LmNvbmZpZy5lbmFibGVQbHVnaW5zO3RoaXMuc2hvd1Rvb2x0aXA9dHJ1ZTt0aGlzLmZvbGxvd01vdXNlPWZhbHNlO3RoaXMudG9vbHRpcExvY2F0aW9uPSJzZSI7dGhpcy50b29sdGlwT2Zmc2V0PTY7dGhpcy5zaG93VG9vbHRpcEdyaWRQb3NpdGlvbj1mYWxzZTt0aGlzLnNob3dUb29sdGlwVW5pdFBvc2l0aW9uPXRydWU7dGhpcy5zaG93VG9vbHRpcERhdGFQb3NpdGlvbj1mYWxzZTt0aGlzLnRvb2x0aXBGb3JtYXRTdHJpbmc9IiUuNFAsICUuNFAiO3RoaXMudXNlQXhlc0Zvcm1hdHRlcnM9dHJ1ZTt0aGlzLnRvb2x0aXBBeGlzR3JvdXBzPVtdO3RoaXMuem9vbT1mYWxzZTt0aGlzLnpvb21Qcm94eT1mYWxzZTt0aGlzLnpvb21UYXJnZXQ9ZmFsc2U7dGhpcy5sb29zZVpvb209dHJ1ZTt0aGlzLmNsaWNrUmVzZXQ9ZmFsc2U7dGhpcy5kYmxDbGlja1Jlc2V0PXRydWU7dGhpcy5zaG93VmVydGljYWxMaW5lPWZhbHNlO3RoaXMuc2hvd0hvcml6b250YWxMaW5lPWZhbHNlO3RoaXMuY29uc3RyYWluWm9vbVRvPSJub25lIjt0aGlzLnNoYXBlUmVuZGVyZXI9bmV3IGouanFwbG90LlNoYXBlUmVuZGVyZXIoKTt0aGlzLl96b29tPXtzdGFydDpbXSxlbmQ6W10sc3RhcnRlZDpmYWxzZSx6b29taW5nOmZhbHNlLGlzWm9vbWVkOmZhbHNlLGF4ZXM6e3N0YXJ0Ont9LGVuZDp7fX0sZ3JpZHBvczp7fSxkYXRhcG9zOnt9fTt0aGlzLl90b29sdGlwRWxlbTt0aGlzLnpvb21DYW52YXM7dGhpcy5jdXJzb3JDYW52YXM7dGhpcy5pbnRlcnNlY3Rpb25UaHJlc2hvbGQ9Mjt0aGlzLnNob3dDdXJzb3JMZWdlbmQ9ZmFsc2U7dGhpcy5jdXJzb3JMZWdlbmRGb3JtYXRTdHJpbmc9ai5qcXBsb3QuQ3Vyc29yLmN1cnNvckxlZ2VuZEZvcm1hdFN0cmluZzt0aGlzLl9vbGRIYW5kbGVycz17b25zZWxlY3RzdGFydDpudWxsLG9uZHJhZzpudWxsLG9ubW91c2Vkb3duOm51bGx9O3RoaXMuY29uc3RyYWluT3V0c2lkZVpvb209dHJ1ZTt0aGlzLnNob3dUb29sdGlwT3V0c2lkZVpvb209ZmFsc2U7dGhpcy5vbkdyaWQ9ZmFsc2U7ai5leHRlbmQodHJ1ZSx0aGlzLHEpfTtqLmpxcGxvdC5DdXJzb3IuY3Vyc29yTGVnZW5kRm9ybWF0U3RyaW5nPSIlcyB4OiVzLCB5OiVzIjtqLmpxcGxvdC5DdXJzb3IuaW5pdD1mdW5jdGlvbih0LHMscil7dmFyIHE9cnx8e307dGhpcy5wbHVnaW5zLmN1cnNvcj1uZXcgai5qcXBsb3QuQ3Vyc29yKHEuY3Vyc29yKTt2YXIgdT10aGlzLnBsdWdpbnMuY3Vyc29yO2lmKHUuc2hvdyl7ai5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLnB1c2goWyJqcXBsb3RNb3VzZUVudGVyIixiXSk7ai5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLnB1c2goWyJqcXBsb3RNb3VzZUxlYXZlIixmXSk7ai5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLnB1c2goWyJqcXBsb3RNb3VzZU1vdmUiLGldKTtpZih1LnNob3dDdXJzb3JMZWdlbmQpe3IubGVnZW5kPXIubGVnZW5kfHx7fTtyLmxlZ2VuZC5yZW5kZXJlcj1qLmpxcGxvdC5DdXJzb3JMZWdlbmRSZW5kZXJlcjtyLmxlZ2VuZC5mb3JtYXRTdHJpbmc9dGhpcy5wbHVnaW5zLmN1cnNvci5jdXJzb3JMZWdlbmRGb3JtYXRTdHJpbmc7ci5sZWdlbmQuc2hvdz10cnVlfWlmKHUuem9vbSl7ai5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLnB1c2goWyJqcXBsb3RNb3VzZURvd24iLGFdKTtpZih1LmNsaWNrUmVzZXQpe2ouanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsianFwbG90Q2xpY2siLGtdKX1pZih1LmRibENsaWNrUmVzZXQpe2ouanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsianFwbG90RGJsQ2xpY2siLGNdKX19dGhpcy5yZXNldFpvb209ZnVuY3Rpb24oKXt2YXIgeD10aGlzLmF4ZXM7aWYoIXUuem9vbVByb3h5KXtmb3IodmFyIHcgaW4geCl7eFt3XS5yZXNldCgpO3hbd10uX3RpY2tzPVtdO2lmKHUuX3pvb20uYXhlc1t3XSE9PXVuZGVmaW5lZCl7eFt3XS5fYXV0b0Zvcm1hdFN0cmluZz11Ll96b29tLmF4ZXNbd10udGlja0Zvcm1hdFN0cmluZ319dGhpcy5yZWRyYXcoKX1lbHNle3ZhciB2PXRoaXMucGx1Z2lucy5jdXJzb3Iuem9vbUNhbnZhcy5fY3R4O3YuY2xlYXJSZWN0KDAsMCx2LmNhbnZhcy53aWR0aCx2LmNhbnZhcy5oZWlnaHQpO3Y9bnVsbH10aGlzLnBsdWdpbnMuY3Vyc29yLl96b29tLmlzWm9vbWVkPWZhbHNlO3RoaXMudGFyZ2V0LnRyaWdnZXIoImpxcGxvdFJlc2V0Wm9vbSIsW3RoaXMsdGhpcy5wbHVnaW5zLmN1cnNvcl0pfTtpZih1LnNob3dUb29sdGlwRGF0YVBvc2l0aW9uKXt1LnNob3dUb29sdGlwVW5pdFBvc2l0aW9uPWZhbHNlO3Uuc2hvd1Rvb2x0aXBHcmlkUG9zaXRpb249ZmFsc2U7aWYocS5jdXJzb3IudG9vbHRpcEZvcm1hdFN0cmluZz09dW5kZWZpbmVkKXt1LnRvb2x0aXBGb3JtYXRTdHJpbmc9ai5qcXBsb3QuQ3Vyc29yLmN1cnNvckxlZ2VuZEZvcm1hdFN0cmluZ319fX07ai5qcXBsb3QuQ3Vyc29yLnBvc3REcmF3PWZ1bmN0aW9uKCl7dmFyIHg9dGhpcy5wbHVnaW5zLmN1cnNvcjtpZih4Lnpvb21DYW52YXMpe3guem9vbUNhbnZhcy5yZXNldENhbnZhcygpO3guem9vbUNhbnZhcz1udWxsfWlmKHguY3Vyc29yQ2FudmFzKXt4LmN1cnNvckNhbnZhcy5yZXNldENhbnZhcygpO3guY3Vyc29yQ2FudmFzPW51bGx9aWYoeC5fdG9vbHRpcEVsZW0pe3guX3Rvb2x0aXBFbGVtLmVtcHR5Rm9yY2UoKTt4Ll90b29sdGlwRWxlbT1udWxsfWlmKHguem9vbSl7eC56b29tQ2FudmFzPW5ldyBqLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUoeC56b29tQ2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsImpxcGxvdC16b29tLWNhbnZhcyIsdGhpcy5fcGxvdERpbWVuc2lvbnMsdGhpcykpO3guem9vbUNhbnZhcy5zZXRDb250ZXh0KCl9dmFyIHY9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7eC5fdG9vbHRpcEVsZW09aih2KTt2PW51bGw7eC5fdG9vbHRpcEVsZW0uYWRkQ2xhc3MoImpxcGxvdC1jdXJzb3ItdG9vbHRpcCIpO3guX3Rvb2x0aXBFbGVtLmNzcyh7cG9zaXRpb246ImFic29sdXRlIixkaXNwbGF5OiJub25lIn0pO2lmKHguem9vbUNhbnZhcyl7eC56b29tQ2FudmFzLl9lbGVtLmJlZm9yZSh4Ll90b29sdGlwRWxlbSl9ZWxzZXt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZSh4Ll90b29sdGlwRWxlbSl9aWYoeC5zaG93VmVydGljYWxMaW5lfHx4LnNob3dIb3Jpem9udGFsTGluZSl7eC5jdXJzb3JDYW52YXM9bmV3IGouanFwbG90LkdlbmVyaWNDYW52YXMoKTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZSh4LmN1cnNvckNhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCJqcXBsb3QtY3Vyc29yLWNhbnZhcyIsdGhpcy5fcGxvdERpbWVuc2lvbnMsdGhpcykpO3guY3Vyc29yQ2FudmFzLnNldENvbnRleHQoKX1pZih4LnNob3dUb29sdGlwVW5pdFBvc2l0aW9uKXtpZih4LnRvb2x0aXBBeGlzR3JvdXBzLmxlbmd0aD09PTApe3ZhciB0PXRoaXMuc2VyaWVzO3ZhciB1O3ZhciBxPVtdO2Zvcih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt1PXRbcl07dmFyIHc9dS54YXhpcysiLCIrdS55YXhpcztpZihqLmluQXJyYXkodyxxKT09LTEpe3EucHVzaCh3KX19Zm9yKHZhciByPTA7cjxxLmxlbmd0aDtyKyspe3gudG9vbHRpcEF4aXNHcm91cHMucHVzaChxW3JdLnNwbGl0KCIsIikpfX19fTtqLmpxcGxvdC5DdXJzb3Iuem9vbVByb3h5PWZ1bmN0aW9uKHYscil7dmFyIHE9di5wbHVnaW5zLmN1cnNvcjt2YXIgdT1yLnBsdWdpbnMuY3Vyc29yO3Euem9vbVRhcmdldD10cnVlO3Euem9vbT10cnVlO3Euc3R5bGU9ImF1dG8iO3EuZGJsQ2xpY2tSZXNldD1mYWxzZTt1Lnpvb209dHJ1ZTt1Lnpvb21Qcm94eT10cnVlO3IudGFyZ2V0LmJpbmQoImpxcGxvdFpvb20iLHQpO3IudGFyZ2V0LmJpbmQoImpxcGxvdFJlc2V0Wm9vbSIscyk7ZnVuY3Rpb24gdCh4LHcseix5LEEpe3EuZG9ab29tKHcseix2LEEpfWZ1bmN0aW9uIHModyx4LHkpe3YucmVzZXRab29tKCl9fTtqLmpxcGxvdC5DdXJzb3IucHJvdG90eXBlLnJlc2V0Wm9vbT1mdW5jdGlvbih1LHYpe3ZhciB0PXUuYXhlczt2YXIgcz12Ll96b29tLmF4ZXM7aWYoIXUucGx1Z2lucy5jdXJzb3Iuem9vbVByb3h5JiZ2Ll96b29tLmlzWm9vbWVkKXtmb3IodmFyIHIgaW4gdCl7dFtyXS5yZXNldCgpO3Rbcl0uX3RpY2tzPVtdO3Rbcl0uX2F1dG9Gb3JtYXRTdHJpbmc9c1tyXS50aWNrRm9ybWF0U3RyaW5nfXUucmVkcmF3KCk7di5fem9vbS5pc1pvb21lZD1mYWxzZX1lbHNle3ZhciBxPXYuem9vbUNhbnZhcy5fY3R4O3EuY2xlYXJSZWN0KDAsMCxxLmNhbnZhcy53aWR0aCxxLmNhbnZhcy5oZWlnaHQpO3E9bnVsbH11LnRhcmdldC50cmlnZ2VyKCJqcXBsb3RSZXNldFpvb20iLFt1LHZdKX07ai5qcXBsb3QuQ3Vyc29yLnJlc2V0Wm9vbT1mdW5jdGlvbihxKXtxLnJlc2V0Wm9vbSgpfTtqLmpxcGxvdC5DdXJzb3IucHJvdG90eXBlLmRvWm9vbT1mdW5jdGlvbihHLHQsQyx1KXt2YXIgST11O3ZhciBGPUMuYXhlczt2YXIgcj1JLl96b29tLmF4ZXM7dmFyIHc9ci5zdGFydDt2YXIgcz1yLmVuZDt2YXIgQixFLHosRCx2LHgscSxILEo7dmFyIEE9Qy5wbHVnaW5zLmN1cnNvci56b29tQ2FudmFzLl9jdHg7aWYoKEkuY29uc3RyYWluWm9vbVRvPT0ibm9uZSImJk1hdGguYWJzKEcueC1JLl96b29tLnN0YXJ0WzBdKT42JiZNYXRoLmFicyhHLnktSS5fem9vbS5zdGFydFsxXSk+Nil8fChJLmNvbnN0cmFpblpvb21Ubz09IngiJiZNYXRoLmFicyhHLngtSS5fem9vbS5zdGFydFswXSk+Nil8fChJLmNvbnN0cmFpblpvb21Ubz09InkiJiZNYXRoLmFicyhHLnktSS5fem9vbS5zdGFydFsxXSk+Nikpe2lmKCFDLnBsdWdpbnMuY3Vyc29yLnpvb21Qcm94eSl7Zm9yKHZhciB5IGluIHQpe2lmKEkuX3pvb20uYXhlc1t5XT09dW5kZWZpbmVkKXtJLl96b29tLmF4ZXNbeV09e307SS5fem9vbS5heGVzW3ldLm51bWJlclRpY2tzPUZbeV0ubnVtYmVyVGlja3M7SS5fem9vbS5heGVzW3ldLnRpY2tJbnRlcnZhbD1GW3ldLnRpY2tJbnRlcnZhbDtJLl96b29tLmF4ZXNbeV0uZGFUaWNrSW50ZXJ2YWw9Rlt5XS5kYVRpY2tJbnRlcnZhbDtJLl96b29tLmF4ZXNbeV0ubWluPUZbeV0ubWluO0kuX3pvb20uYXhlc1t5XS5tYXg9Rlt5XS5tYXg7SS5fem9vbS5heGVzW3ldLnRpY2tGb3JtYXRTdHJpbmc9KEZbeV0udGlja09wdGlvbnMhPW51bGwpP0ZbeV0udGlja09wdGlvbnMuZm9ybWF0U3RyaW5nOiIifWlmKChJLmNvbnN0cmFpblpvb21Ubz09Im5vbmUiKXx8KEkuY29uc3RyYWluWm9vbVRvPT0ieCImJnkuY2hhckF0KDApPT0ieCIpfHwoSS5jb25zdHJhaW5ab29tVG89PSJ5IiYmeS5jaGFyQXQoMCk9PSJ5Iikpe3o9dFt5XTtpZih6IT1udWxsKXtpZih6PndbeV0pe3Y9d1t5XTt4PXp9ZWxzZXtEPXdbeV0tejt2PXo7eD13W3ldfXE9Rlt5XTtIPW51bGw7aWYocS5hbGlnblRpY2tzKXtpZihxLm5hbWU9PT0ieDJheGlzIiYmQy5heGVzLnhheGlzLnNob3cpe0g9Qy5heGVzLnhheGlzLm51bWJlclRpY2tzfWVsc2V7aWYocS5uYW1lLmNoYXJBdCgwKT09PSJ5IiYmcS5uYW1lIT09InlheGlzIiYmcS5uYW1lIT09InlNaWRBeGlzIiYmQy5heGVzLnlheGlzLnNob3cpe0g9Qy5heGVzLnlheGlzLm51bWJlclRpY2tzfX19aWYodGhpcy5sb29zZVpvb20mJihGW3ldLnJlbmRlcmVyLmNvbnN0cnVjdG9yPT09ai5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyfHxGW3ldLnJlbmRlcmVyLmNvbnN0cnVjdG9yPT09ai5qcXBsb3QuTG9nQXhpc1JlbmRlcmVyKSl7Sj1qLmpxcGxvdC5MaW5lYXJUaWNrR2VuZXJhdG9yKHYseCxxLl9zY2FsZWZhY3QsSCk7aWYoRlt5XS50aWNrSW5zZXQmJkpbMF08Rlt5XS5taW4rRlt5XS50aWNrSW5zZXQqRlt5XS50aWNrSW50ZXJ2YWwpe0pbMF0rPUpbNF07SlsyXS09MX1pZihGW3ldLnRpY2tJbnNldCYmSlsxXT5GW3ldLm1heC1GW3ldLnRpY2tJbnNldCpGW3ldLnRpY2tJbnRlcnZhbCl7SlsxXS09Sls0XTtKWzJdLT0xfWlmKEZbeV0ucmVuZGVyZXIuY29uc3RydWN0b3I9PT1qLmpxcGxvdC5Mb2dBeGlzUmVuZGVyZXImJkpbMF08Rlt5XS5taW4pe0pbMF0rPUpbNF07SlsyXS09MX1GW3ldLm1pbj1KWzBdO0ZbeV0ubWF4PUpbMV07Rlt5XS5fYXV0b0Zvcm1hdFN0cmluZz1KWzNdO0ZbeV0ubnVtYmVyVGlja3M9SlsyXTtGW3ldLnRpY2tJbnRlcnZhbD1KWzRdO0ZbeV0uZGFUaWNrSW50ZXJ2YWw9W0pbNF0vMTAwMCwic2Vjb25kcyJdfWVsc2V7Rlt5XS5taW49djtGW3ldLm1heD14O0ZbeV0udGlja0ludGVydmFsPW51bGw7Rlt5XS5udW1iZXJUaWNrcz1udWxsO0ZbeV0uZGFUaWNrSW50ZXJ2YWw9bnVsbH1GW3ldLl90aWNrcz1bXX19fUEuY2xlYXJSZWN0KDAsMCxBLmNhbnZhcy53aWR0aCxBLmNhbnZhcy5oZWlnaHQpO0MucmVkcmF3KCk7SS5fem9vbS5pc1pvb21lZD10cnVlO0E9bnVsbH1DLnRhcmdldC50cmlnZ2VyKCJqcXBsb3Rab29tIixbRyx0LEMsdV0pfX07ai5qcXBsb3QucHJlSW5pdEhvb2tzLnB1c2goai5qcXBsb3QuQ3Vyc29yLmluaXQpO2ouanFwbG90LnBvc3REcmF3SG9va3MucHVzaChqLmpxcGxvdC5DdXJzb3IucG9zdERyYXcpO2Z1bmN0aW9uIGUoRyxyLEMpe3ZhciBKPUMucGx1Z2lucy5jdXJzb3I7dmFyIHc9IiI7dmFyIE49ZmFsc2U7aWYoSi5zaG93VG9vbHRpcEdyaWRQb3NpdGlvbil7dz1HLngrIiwgIitHLnk7Tj10cnVlfWlmKEouc2hvd1Rvb2x0aXBVbml0UG9zaXRpb24pe3ZhciBGO2Zvcih2YXIgRT0wO0U8Si50b29sdGlwQXhpc0dyb3Vwcy5sZW5ndGg7RSsrKXtGPUoudG9vbHRpcEF4aXNHcm91cHNbRV07aWYoTil7dys9IjxiciAvPiJ9aWYoSi51c2VBeGVzRm9ybWF0dGVycyl7Zm9yKHZhciBEPTA7RDxGLmxlbmd0aDtEKyspe2lmKEQpe3crPSIsICJ9dmFyIEg9Qy5heGVzW0ZbRF1dLl90aWNrc1swXS5mb3JtYXR0ZXI7dmFyIEI9Qy5heGVzW0ZbRF1dLl90aWNrc1swXS5mb3JtYXRTdHJpbmc7dys9SChCLHJbRltEXV0pfX1lbHNle3crPWouanFwbG90LnNwcmludGYoSi50b29sdGlwRm9ybWF0U3RyaW5nLHJbRlswXV0scltGWzFdXSl9Tj10cnVlfX1pZihKLnNob3dUb29sdGlwRGF0YVBvc2l0aW9uKXt2YXIgdT1DLnNlcmllczt2YXIgTT1kKEMsRy54LEcueSk7dmFyIE49ZmFsc2U7Zm9yKHZhciBFPTA7RTx1Lmxlbmd0aDtFKyspe2lmKHVbRV0uc2hvdyl7dmFyIHk9dVtFXS5pbmRleDt2YXIgdD11W0VdLmxhYmVsLnRvU3RyaW5nKCk7dmFyIEk9ai5pbkFycmF5KHksTS5pbmRpY2VzKTt2YXIgej11bmRlZmluZWQ7dmFyIHg9dW5kZWZpbmVkO2lmKEkhPS0xKXt2YXIgTD1NLmRhdGFbSV0uZGF0YTtpZihKLnVzZUF4ZXNGb3JtYXR0ZXJzKXt2YXIgQT11W0VdLl94YXhpcy5fdGlja3NbMF0uZm9ybWF0dGVyO3ZhciBxPXVbRV0uX3lheGlzLl90aWNrc1swXS5mb3JtYXR0ZXI7dmFyIEs9dVtFXS5feGF4aXMuX3RpY2tzWzBdLmZvcm1hdFN0cmluZzt2YXIgdj11W0VdLl95YXhpcy5fdGlja3NbMF0uZm9ybWF0U3RyaW5nO3o9QShLLExbMF0pO3g9cSh2LExbMV0pfWVsc2V7ej1MWzBdO3g9TFsxXX1pZihOKXt3Kz0iPGJyIC8+In13Kz1qLmpxcGxvdC5zcHJpbnRmKEoudG9vbHRpcEZvcm1hdFN0cmluZyx0LHoseCk7Tj10cnVlfX19fUouX3Rvb2x0aXBFbGVtLmh0bWwodyl9ZnVuY3Rpb24gZyhDLEEpe3ZhciBFPUEucGx1Z2lucy5jdXJzb3I7dmFyIHo9RS5jdXJzb3JDYW52YXMuX2N0eDt6LmNsZWFyUmVjdCgwLDAsei5jYW52YXMud2lkdGgsei5jYW52YXMuaGVpZ2h0KTtpZihFLnNob3dWZXJ0aWNhbExpbmUpe0Uuc2hhcGVSZW5kZXJlci5kcmF3KHosW1tDLngsMF0sW0MueCx6LmNhbnZhcy5oZWlnaHRdXSl9aWYoRS5zaG93SG9yaXpvbnRhbExpbmUpe0Uuc2hhcGVSZW5kZXJlci5kcmF3KHosW1swLEMueV0sW3ouY2FudmFzLndpZHRoLEMueV1dKX12YXIgRz1kKEEsQy54LEMueSk7aWYoRS5zaG93Q3Vyc29yTGVnZW5kKXt2YXIgcj1qKEEudGFyZ2V0SWQrIiB0ZC5qcXBsb3QtY3Vyc29yLWxlZ2VuZC1sYWJlbCIpO2Zvcih2YXIgQj0wO0I8ci5sZW5ndGg7QisrKXt2YXIgdj1qKHJbQl0pLmRhdGEoInNlcmllc0luZGV4Iik7dmFyIHQ9QS5zZXJpZXNbdl07dmFyIHM9dC5sYWJlbC50b1N0cmluZygpO3ZhciBEPWouaW5BcnJheSh2LEcuaW5kaWNlcyk7dmFyIHg9dW5kZWZpbmVkO3ZhciB3PXVuZGVmaW5lZDtpZihEIT0tMSl7dmFyIEg9Ry5kYXRhW0RdLmRhdGE7aWYoRS51c2VBeGVzRm9ybWF0dGVycyl7dmFyIHk9dC5feGF4aXMuX3RpY2tzWzBdLmZvcm1hdHRlcjt2YXIgcT10Ll95YXhpcy5fdGlja3NbMF0uZm9ybWF0dGVyO3ZhciBGPXQuX3hheGlzLl90aWNrc1swXS5mb3JtYXRTdHJpbmc7dmFyIHU9dC5feWF4aXMuX3RpY2tzWzBdLmZvcm1hdFN0cmluZzt4PXkoRixIWzBdKTt3PXEodSxIWzFdKX1lbHNle3g9SFswXTt3PUhbMV19fWlmKEEubGVnZW5kLmVzY2FwZUh0bWwpe2oocltCXSkudGV4dChqLmpxcGxvdC5zcHJpbnRmKEUuY3Vyc29yTGVnZW5kRm9ybWF0U3RyaW5nLHMseCx3KSl9ZWxzZXtqKHJbQl0pLmh0bWwoai5qcXBsb3Quc3ByaW50ZihFLmN1cnNvckxlZ2VuZEZvcm1hdFN0cmluZyxzLHgsdykpfX19ej1udWxsfWZ1bmN0aW9uIGQoQSxGLEUpe3ZhciBCPXtpbmRpY2VzOltdLGRhdGE6W119O3ZhciBHLHcsdSxDLHYscSx0O3ZhciB6O3ZhciBEPUEucGx1Z2lucy5jdXJzb3I7Zm9yKHZhciB3PTA7dzxBLnNlcmllcy5sZW5ndGg7dysrKXtHPUEuc2VyaWVzW3ddO3E9Ry5yZW5kZXJlcjtpZihHLnNob3cpe3o9RC5pbnRlcnNlY3Rpb25UaHJlc2hvbGQ7aWYoRy5zaG93TWFya2VyKXt6Kz1HLm1hcmtlclJlbmRlcmVyLnNpemUvMn1mb3IodmFyIHY9MDt2PEcuZ3JpZERhdGEubGVuZ3RoO3YrKyl7dD1HLmdyaWREYXRhW3ZdO2lmKEQuc2hvd1ZlcnRpY2FsTGluZSl7aWYoTWF0aC5hYnMoRi10WzBdKTw9eil7Qi5pbmRpY2VzLnB1c2godyk7Qi5kYXRhLnB1c2goe3Nlcmllc0luZGV4OncscG9pbnRJbmRleDp2LGdyaWREYXRhOnQsZGF0YTpHLmRhdGFbdl19KX19fX19cmV0dXJuIEJ9ZnVuY3Rpb24gbihyLHQpe3ZhciB2PXQucGx1Z2lucy5jdXJzb3I7dmFyIHM9di5fdG9vbHRpcEVsZW07c3dpdGNoKHYudG9vbHRpcExvY2F0aW9uKXtjYXNlIm53Ijp2YXIgcT1yLngrdC5fZ3JpZFBhZGRpbmcubGVmdC1zLm91dGVyV2lkdGgodHJ1ZSktdi50b29sdGlwT2Zmc2V0O3ZhciB1PXIueSt0Ll9ncmlkUGFkZGluZy50b3Atdi50b29sdGlwT2Zmc2V0LXMub3V0ZXJIZWlnaHQodHJ1ZSk7YnJlYWs7Y2FzZSJuIjp2YXIgcT1yLngrdC5fZ3JpZFBhZGRpbmcubGVmdC1zLm91dGVyV2lkdGgodHJ1ZSkvMjt2YXIgdT1yLnkrdC5fZ3JpZFBhZGRpbmcudG9wLXYudG9vbHRpcE9mZnNldC1zLm91dGVySGVpZ2h0KHRydWUpO2JyZWFrO2Nhc2UibmUiOnZhciBxPXIueCt0Ll9ncmlkUGFkZGluZy5sZWZ0K3YudG9vbHRpcE9mZnNldDt2YXIgdT1yLnkrdC5fZ3JpZFBhZGRpbmcudG9wLXYudG9vbHRpcE9mZnNldC1zLm91dGVySGVpZ2h0KHRydWUpO2JyZWFrO2Nhc2UiZSI6dmFyIHE9ci54K3QuX2dyaWRQYWRkaW5nLmxlZnQrdi50b29sdGlwT2Zmc2V0O3ZhciB1PXIueSt0Ll9ncmlkUGFkZGluZy50b3Atcy5vdXRlckhlaWdodCh0cnVlKS8yO2JyZWFrO2Nhc2Uic2UiOnZhciBxPXIueCt0Ll9ncmlkUGFkZGluZy5sZWZ0K3YudG9vbHRpcE9mZnNldDt2YXIgdT1yLnkrdC5fZ3JpZFBhZGRpbmcudG9wK3YudG9vbHRpcE9mZnNldDticmVhaztjYXNlInMiOnZhciBxPXIueCt0Ll9ncmlkUGFkZGluZy5sZWZ0LXMub3V0ZXJXaWR0aCh0cnVlKS8yO3ZhciB1PXIueSt0Ll9ncmlkUGFkZGluZy50b3Ardi50b29sdGlwT2Zmc2V0O2JyZWFrO2Nhc2Uic3ciOnZhciBxPXIueCt0Ll9ncmlkUGFkZGluZy5sZWZ0LXMub3V0ZXJXaWR0aCh0cnVlKS12LnRvb2x0aXBPZmZzZXQ7dmFyIHU9ci55K3QuX2dyaWRQYWRkaW5nLnRvcCt2LnRvb2x0aXBPZmZzZXQ7YnJlYWs7Y2FzZSJ3Ijp2YXIgcT1yLngrdC5fZ3JpZFBhZGRpbmcubGVmdC1zLm91dGVyV2lkdGgodHJ1ZSktdi50b29sdGlwT2Zmc2V0O3ZhciB1PXIueSt0Ll9ncmlkUGFkZGluZy50b3Atcy5vdXRlckhlaWdodCh0cnVlKS8yO2JyZWFrO2RlZmF1bHQ6dmFyIHE9ci54K3QuX2dyaWRQYWRkaW5nLmxlZnQrdi50b29sdGlwT2Zmc2V0O3ZhciB1PXIueSt0Ll9ncmlkUGFkZGluZy50b3Ardi50b29sdGlwT2Zmc2V0O2JyZWFrfXMuY3NzKCJsZWZ0IixxKTtzLmNzcygidG9wIix1KTtzPW51bGx9ZnVuY3Rpb24gbSh1KXt2YXIgcz11Ll9ncmlkUGFkZGluZzt2YXIgdj11LnBsdWdpbnMuY3Vyc29yO3ZhciB0PXYuX3Rvb2x0aXBFbGVtO3N3aXRjaCh2LnRvb2x0aXBMb2NhdGlvbil7Y2FzZSJudyI6dmFyIHI9cy5sZWZ0K3YudG9vbHRpcE9mZnNldDt2YXIgcT1zLnRvcCt2LnRvb2x0aXBPZmZzZXQ7dC5jc3MoImxlZnQiLHIpO3QuY3NzKCJ0b3AiLHEpO2JyZWFrO2Nhc2UibiI6dmFyIHI9KHMubGVmdCsodS5fcGxvdERpbWVuc2lvbnMud2lkdGgtcy5yaWdodCkpLzItdC5vdXRlcldpZHRoKHRydWUpLzI7dmFyIHE9cy50b3Ardi50b29sdGlwT2Zmc2V0O3QuY3NzKCJsZWZ0IixyKTt0LmNzcygidG9wIixxKTticmVhaztjYXNlIm5lIjp2YXIgcj1zLnJpZ2h0K3YudG9vbHRpcE9mZnNldDt2YXIgcT1zLnRvcCt2LnRvb2x0aXBPZmZzZXQ7dC5jc3Moe3JpZ2h0OnIsdG9wOnF9KTticmVhaztjYXNlImUiOnZhciByPXMucmlnaHQrdi50b29sdGlwT2Zmc2V0O3ZhciBxPShzLnRvcCsodS5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0LXMuYm90dG9tKSkvMi10Lm91dGVySGVpZ2h0KHRydWUpLzI7dC5jc3Moe3JpZ2h0OnIsdG9wOnF9KTticmVhaztjYXNlInNlIjp2YXIgcj1zLnJpZ2h0K3YudG9vbHRpcE9mZnNldDt2YXIgcT1zLmJvdHRvbSt2LnRvb2x0aXBPZmZzZXQ7dC5jc3Moe3JpZ2h0OnIsYm90dG9tOnF9KTticmVhaztjYXNlInMiOnZhciByPShzLmxlZnQrKHUuX3Bsb3REaW1lbnNpb25zLndpZHRoLXMucmlnaHQpKS8yLXQub3V0ZXJXaWR0aCh0cnVlKS8yO3ZhciBxPXMuYm90dG9tK3YudG9vbHRpcE9mZnNldDt0LmNzcyh7bGVmdDpyLGJvdHRvbTpxfSk7YnJlYWs7Y2FzZSJzdyI6dmFyIHI9cy5sZWZ0K3YudG9vbHRpcE9mZnNldDt2YXIgcT1zLmJvdHRvbSt2LnRvb2x0aXBPZmZzZXQ7dC5jc3Moe2xlZnQ6cixib3R0b206cX0pO2JyZWFrO2Nhc2UidyI6dmFyIHI9cy5sZWZ0K3YudG9vbHRpcE9mZnNldDt2YXIgcT0ocy50b3ArKHUuX3Bsb3REaW1lbnNpb25zLmhlaWdodC1zLmJvdHRvbSkpLzItdC5vdXRlckhlaWdodCh0cnVlKS8yO3QuY3NzKHtsZWZ0OnIsdG9wOnF9KTticmVhaztkZWZhdWx0OnZhciByPXMucmlnaHQtdi50b29sdGlwT2Zmc2V0O3ZhciBxPXMuYm90dG9tK3YudG9vbHRpcE9mZnNldDt0LmNzcyh7cmlnaHQ6cixib3R0b206cX0pO2JyZWFrfXQ9bnVsbH1mdW5jdGlvbiBrKHIscSx2LHUsdCl7ci5wcmV2ZW50RGVmYXVsdCgpO3Iuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7dmFyIHc9dC5wbHVnaW5zLmN1cnNvcjtpZih3LmNsaWNrUmVzZXQpe3cucmVzZXRab29tKHQsdyl9dmFyIHM9d2luZG93LmdldFNlbGVjdGlvbjtpZihkb2N1bWVudC5zZWxlY3Rpb24mJmRvY3VtZW50LnNlbGVjdGlvbi5lbXB0eSl7ZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KCl9ZWxzZXtpZihzJiYhcygpLmlzQ29sbGFwc2VkKXtzKCkuY29sbGFwc2UoKX19cmV0dXJuIGZhbHNlfWZ1bmN0aW9uIGMocixxLHYsdSx0KXtyLnByZXZlbnREZWZhdWx0KCk7ci5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTt2YXIgdz10LnBsdWdpbnMuY3Vyc29yO2lmKHcuZGJsQ2xpY2tSZXNldCl7dy5yZXNldFpvb20odCx3KX12YXIgcz13aW5kb3cuZ2V0U2VsZWN0aW9uO2lmKGRvY3VtZW50LnNlbGVjdGlvbiYmZG9jdW1lbnQuc2VsZWN0aW9uLmVtcHR5KXtkb2N1bWVudC5zZWxlY3Rpb24uZW1wdHkoKX1lbHNle2lmKHMmJiFzKCkuaXNDb2xsYXBzZWQpe3MoKS5jb2xsYXBzZSgpfX1yZXR1cm4gZmFsc2V9ZnVuY3Rpb24gZih3LHQscSx6LHUpe3ZhciB2PXUucGx1Z2lucy5jdXJzb3I7di5vbkdyaWQ9ZmFsc2U7aWYodi5zaG93KXtqKHcudGFyZ2V0KS5jc3MoImN1cnNvciIsdi5wcmV2aW91c0N1cnNvcik7aWYodi5zaG93VG9vbHRpcCYmISh2Ll96b29tLnpvb21pbmcmJnYuc2hvd1Rvb2x0aXBPdXRzaWRlWm9vbSYmIXYuY29uc3RyYWluT3V0c2lkZVpvb20pKXt2Ll90b29sdGlwRWxlbS5lbXB0eSgpO3YuX3Rvb2x0aXBFbGVtLmhpZGUoKX1pZih2Lnpvb20pe3YuX3pvb20uZ3JpZHBvcz10O3YuX3pvb20uZGF0YXBvcz1xfWlmKHYuc2hvd1ZlcnRpY2FsTGluZXx8di5zaG93SG9yaXpvbnRhbExpbmUpe3ZhciBCPXYuY3Vyc29yQ2FudmFzLl9jdHg7Qi5jbGVhclJlY3QoMCwwLEIuY2FudmFzLndpZHRoLEIuY2FudmFzLmhlaWdodCk7Qj1udWxsfWlmKHYuc2hvd0N1cnNvckxlZ2VuZCl7dmFyIEE9aih1LnRhcmdldElkKyIgdGQuanFwbG90LWN1cnNvci1sZWdlbmQtbGFiZWwiKTtmb3IodmFyIHM9MDtzPEEubGVuZ3RoO3MrKyl7dmFyIHk9aihBW3NdKS5kYXRhKCJzZXJpZXNJbmRleCIpO3ZhciByPXUuc2VyaWVzW3ldO3ZhciB4PXIubGFiZWwudG9TdHJpbmcoKTtpZih1LmxlZ2VuZC5lc2NhcGVIdG1sKXtqKEFbc10pLnRleHQoai5qcXBsb3Quc3ByaW50Zih2LmN1cnNvckxlZ2VuZEZvcm1hdFN0cmluZyx4LHVuZGVmaW5lZCx1bmRlZmluZWQpKX1lbHNle2ooQVtzXSkuaHRtbChqLmpxcGxvdC5zcHJpbnRmKHYuY3Vyc29yTGVnZW5kRm9ybWF0U3RyaW5nLHgsdW5kZWZpbmVkLHVuZGVmaW5lZCkpfX19fX1mdW5jdGlvbiBiKHIscSx1LHQscyl7dmFyIHY9cy5wbHVnaW5zLmN1cnNvcjt2Lm9uR3JpZD10cnVlO2lmKHYuc2hvdyl7di5wcmV2aW91c0N1cnNvcj1yLnRhcmdldC5zdHlsZS5jdXJzb3I7ci50YXJnZXQuc3R5bGUuY3Vyc29yPXYuc3R5bGU7aWYodi5zaG93VG9vbHRpcCl7ZShxLHUscyk7aWYodi5mb2xsb3dNb3VzZSl7bihxLHMpfWVsc2V7bShzKX12Ll90b29sdGlwRWxlbS5zaG93KCl9aWYodi5zaG93VmVydGljYWxMaW5lfHx2LnNob3dIb3Jpem9udGFsTGluZSl7ZyhxLHMpfX19ZnVuY3Rpb24gaShyLHEsdSx0LHMpe3ZhciB2PXMucGx1Z2lucy5jdXJzb3I7aWYodi5zaG93KXtpZih2LnNob3dUb29sdGlwKXtlKHEsdSxzKTtpZih2LmZvbGxvd01vdXNlKXtuKHEscyl9fWlmKHYuc2hvd1ZlcnRpY2FsTGluZXx8di5zaG93SG9yaXpvbnRhbExpbmUpe2cocSxzKX19fWZ1bmN0aW9uIG8oeSl7dmFyIHg9eS5kYXRhLnBsb3Q7dmFyIHQ9eC5ldmVudENhbnZhcy5fZWxlbS5vZmZzZXQoKTt2YXIgdz17eDp5LnBhZ2VYLXQubGVmdCx5OnkucGFnZVktdC50b3B9O3ZhciB1PXt4YXhpczpudWxsLHlheGlzOm51bGwseDJheGlzOm51bGwseTJheGlzOm51bGwseTNheGlzOm51bGwseTRheGlzOm51bGwseTVheGlzOm51bGwseTZheGlzOm51bGwseTdheGlzOm51bGwseThheGlzOm51bGwseTlheGlzOm51bGwseU1pZEF4aXM6bnVsbH07dmFyIHY9WyJ4YXhpcyIsInlheGlzIiwieDJheGlzIiwieTJheGlzIiwieTNheGlzIiwieTRheGlzIiwieTVheGlzIiwieTZheGlzIiwieTdheGlzIiwieThheGlzIiwieTlheGlzIiwieU1pZEF4aXMiXTt2YXIgcT14LmF4ZXM7dmFyIHIscztmb3Iocj0xMTtyPjA7ci0tKXtzPXZbci0xXTtpZihxW3NdLnNob3cpe3Vbc109cVtzXS5zZXJpZXNfcDJ1KHdbcy5jaGFyQXQoMCldKX19cmV0dXJue29mZnNldHM6dCxncmlkUG9zOncsZGF0YVBvczp1fX1mdW5jdGlvbiBoKHope3ZhciB4PXouZGF0YS5wbG90O3ZhciB5PXgucGx1Z2lucy5jdXJzb3I7aWYoeS5zaG93JiZ5Lnpvb20mJnkuX3pvb20uc3RhcnRlZCYmIXkuem9vbVRhcmdldCl7ei5wcmV2ZW50RGVmYXVsdCgpO3ZhciBCPXkuem9vbUNhbnZhcy5fY3R4O3ZhciB2PW8oeik7dmFyIHc9di5ncmlkUG9zO3ZhciB0PXYuZGF0YVBvczt5Ll96b29tLmdyaWRwb3M9dzt5Ll96b29tLmRhdGFwb3M9dDt5Ll96b29tLnpvb21pbmc9dHJ1ZTt2YXIgdT13Lng7dmFyIHM9dy55O3ZhciBBPUIuY2FudmFzLmhlaWdodDt2YXIgcT1CLmNhbnZhcy53aWR0aDtpZih5LnNob3dUb29sdGlwJiYheS5vbkdyaWQmJnkuc2hvd1Rvb2x0aXBPdXRzaWRlWm9vbSl7ZSh3LHQseCk7aWYoeS5mb2xsb3dNb3VzZSl7bih3LHgpfX1pZih5LmNvbnN0cmFpblpvb21Ubz09IngiKXt5Ll96b29tLmVuZD1bdSxBXX1lbHNle2lmKHkuY29uc3RyYWluWm9vbVRvPT0ieSIpe3kuX3pvb20uZW5kPVtxLHNdfWVsc2V7eS5fem9vbS5lbmQ9W3Usc119fXZhciByPXdpbmRvdy5nZXRTZWxlY3Rpb247aWYoZG9jdW1lbnQuc2VsZWN0aW9uJiZkb2N1bWVudC5zZWxlY3Rpb24uZW1wdHkpe2RvY3VtZW50LnNlbGVjdGlvbi5lbXB0eSgpfWVsc2V7aWYociYmIXIoKS5pc0NvbGxhcHNlZCl7cigpLmNvbGxhcHNlKCl9fWwuY2FsbCh5KTtCPW51bGx9fWZ1bmN0aW9uIGEodyxzLHIseCx0KXt2YXIgdj10LnBsdWdpbnMuY3Vyc29yO2lmKHQucGx1Z2lucy5tb2JpbGUpe2ooZG9jdW1lbnQpLm9uZSgidm1vdXNldXAuanFwbG90X2N1cnNvciIse3Bsb3Q6dH0scCl9ZWxzZXtqKGRvY3VtZW50KS5vbmUoIm1vdXNldXAuanFwbG90X2N1cnNvciIse3Bsb3Q6dH0scCl9dmFyIHU9dC5heGVzO2lmKGRvY3VtZW50Lm9uc2VsZWN0c3RhcnQhPXVuZGVmaW5lZCl7di5fb2xkSGFuZGxlcnMub25zZWxlY3RzdGFydD1kb2N1bWVudC5vbnNlbGVjdHN0YXJ0O2RvY3VtZW50Lm9uc2VsZWN0c3RhcnQ9ZnVuY3Rpb24oKXtyZXR1cm4gZmFsc2V9fWlmKGRvY3VtZW50Lm9uZHJhZyE9dW5kZWZpbmVkKXt2Ll9vbGRIYW5kbGVycy5vbmRyYWc9ZG9jdW1lbnQub25kcmFnO2RvY3VtZW50Lm9uZHJhZz1mdW5jdGlvbigpe3JldHVybiBmYWxzZX19aWYoZG9jdW1lbnQub25tb3VzZWRvd24hPXVuZGVmaW5lZCl7di5fb2xkSGFuZGxlcnMub25tb3VzZWRvd249ZG9jdW1lbnQub25tb3VzZWRvd247ZG9jdW1lbnQub25tb3VzZWRvd249ZnVuY3Rpb24oKXtyZXR1cm4gZmFsc2V9fWlmKHYuem9vbSl7aWYoIXYuem9vbVByb3h5KXt2YXIgeT12Lnpvb21DYW52YXMuX2N0eDt5LmNsZWFyUmVjdCgwLDAseS5jYW52YXMud2lkdGgseS5jYW52YXMuaGVpZ2h0KTt5PW51bGx9aWYodi5jb25zdHJhaW5ab29tVG89PSJ4Iil7di5fem9vbS5zdGFydD1bcy54LDBdfWVsc2V7aWYodi5jb25zdHJhaW5ab29tVG89PSJ5Iil7di5fem9vbS5zdGFydD1bMCxzLnldfWVsc2V7di5fem9vbS5zdGFydD1bcy54LHMueV19fXYuX3pvb20uc3RhcnRlZD10cnVlO2Zvcih2YXIgcSBpbiByKXt2Ll96b29tLmF4ZXMuc3RhcnRbcV09cltxXX1pZih0LnBsdWdpbnMubW9iaWxlKXtqKGRvY3VtZW50KS5iaW5kKCJ2bW91c2Vtb3ZlLmpxcGxvdEN1cnNvciIse3Bsb3Q6dH0saCl9ZWxzZXtqKGRvY3VtZW50KS5iaW5kKCJtb3VzZW1vdmUuanFwbG90Q3Vyc29yIix7cGxvdDp0fSxoKX19fWZ1bmN0aW9uIHAoeSl7dmFyIHY9eS5kYXRhLnBsb3Q7dmFyIHg9di5wbHVnaW5zLmN1cnNvcjtpZih4Lnpvb20mJnguX3pvb20uem9vbWluZyYmIXguem9vbVRhcmdldCl7dmFyIHU9eC5fem9vbS5ncmlkcG9zLng7dmFyIHI9eC5fem9vbS5ncmlkcG9zLnk7dmFyIHQ9eC5fem9vbS5kYXRhcG9zO3ZhciB6PXguem9vbUNhbnZhcy5fY3R4LmNhbnZhcy5oZWlnaHQ7dmFyIHE9eC56b29tQ2FudmFzLl9jdHguY2FudmFzLndpZHRoO3ZhciB3PXYuYXhlcztpZih4LmNvbnN0cmFpbk91dHNpZGVab29tJiYheC5vbkdyaWQpe2lmKHU8MCl7dT0wfWVsc2V7aWYodT5xKXt1PXF9fWlmKHI8MCl7cj0wfWVsc2V7aWYocj56KXtyPXp9fWZvcih2YXIgcyBpbiB0KXtpZih0W3NdKXtpZihzLmNoYXJBdCgwKT09IngiKXt0W3NdPXdbc10uc2VyaWVzX3AydSh1KX1lbHNle3Rbc109d1tzXS5zZXJpZXNfcDJ1KHIpfX19fWlmKHguY29uc3RyYWluWm9vbVRvPT0ieCIpe3I9en1lbHNle2lmKHguY29uc3RyYWluWm9vbVRvPT0ieSIpe3U9cX19eC5fem9vbS5lbmQ9W3Uscl07eC5fem9vbS5ncmlkcG9zPXt4OnUseTpyfTt4LmRvWm9vbSh4Ll96b29tLmdyaWRwb3MsdCx2LHgpfXguX3pvb20uc3RhcnRlZD1mYWxzZTt4Ll96b29tLnpvb21pbmc9ZmFsc2U7aihkb2N1bWVudCkudW5iaW5kKCJtb3VzZW1vdmUuanFwbG90Q3Vyc29yIixoKTtpZihkb2N1bWVudC5vbnNlbGVjdHN0YXJ0IT11bmRlZmluZWQmJnguX29sZEhhbmRsZXJzLm9uc2VsZWN0c3RhcnQhPW51bGwpe2RvY3VtZW50Lm9uc2VsZWN0c3RhcnQ9eC5fb2xkSGFuZGxlcnMub25zZWxlY3RzdGFydDt4Ll9vbGRIYW5kbGVycy5vbnNlbGVjdHN0YXJ0PW51bGx9aWYoZG9jdW1lbnQub25kcmFnIT11bmRlZmluZWQmJnguX29sZEhhbmRsZXJzLm9uZHJhZyE9bnVsbCl7ZG9jdW1lbnQub25kcmFnPXguX29sZEhhbmRsZXJzLm9uZHJhZzt4Ll9vbGRIYW5kbGVycy5vbmRyYWc9bnVsbH1pZihkb2N1bWVudC5vbm1vdXNlZG93biE9dW5kZWZpbmVkJiZ4Ll9vbGRIYW5kbGVycy5vbm1vdXNlZG93biE9bnVsbCl7ZG9jdW1lbnQub25tb3VzZWRvd249eC5fb2xkSGFuZGxlcnMub25tb3VzZWRvd247eC5fb2xkSGFuZGxlcnMub25tb3VzZWRvd249bnVsbH19ZnVuY3Rpb24gbCgpe3ZhciB5PXRoaXMuX3pvb20uc3RhcnQ7dmFyIHU9dGhpcy5fem9vbS5lbmQ7dmFyIHM9dGhpcy56b29tQ2FudmFzLl9jdHg7dmFyIHIsdix4LHE7aWYodVswXT55WzBdKXtyPXlbMF07cT11WzBdLXlbMF19ZWxzZXtyPXVbMF07cT15WzBdLXVbMF19aWYodVsxXT55WzFdKXt2PXlbMV07eD11WzFdLXlbMV19ZWxzZXt2PXVbMV07eD15WzFdLXVbMV19cy5maWxsU3R5bGU9InJnYmEoMCwwLDAsMC4yKSI7cy5zdHJva2VTdHlsZT0iIzk5OTk5OSI7cy5saW5lV2lkdGg9MTtzLmNsZWFyUmVjdCgwLDAscy5jYW52YXMud2lkdGgscy5jYW52YXMuaGVpZ2h0KTtzLmZpbGxSZWN0KDAsMCxzLmNhbnZhcy53aWR0aCxzLmNhbnZhcy5oZWlnaHQpO3MuY2xlYXJSZWN0KHIsdixxLHgpO3Muc3Ryb2tlUmVjdChyLHYscSx4KTtzPW51bGx9ai5qcXBsb3QuQ3Vyc29yTGVnZW5kUmVuZGVyZXI9ZnVuY3Rpb24ocSl7ai5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlci5jYWxsKHRoaXMscSk7dGhpcy5mb3JtYXRTdHJpbmc9IiVzIn07ai5qcXBsb3QuQ3Vyc29yTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlPW5ldyBqLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyKCk7ai5qcXBsb3QuQ3Vyc29yTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWouanFwbG90LkN1cnNvckxlZ2VuZFJlbmRlcmVyO2ouanFwbG90LkN1cnNvckxlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKCl7aWYodGhpcy5fZWxlbSl7dGhpcy5fZWxlbS5lbXB0eUZvcmNlKCk7dGhpcy5fZWxlbT1udWxsfWlmKHRoaXMuc2hvdyl7dmFyIHc9dGhpcy5fc2VyaWVzLEE7dmFyIHI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFibGUiKTt0aGlzLl9lbGVtPWoocik7cj1udWxsO3RoaXMuX2VsZW0uYWRkQ2xhc3MoImpxcGxvdC1sZWdlbmQganFwbG90LWN1cnNvci1sZWdlbmQiKTt0aGlzLl9lbGVtLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIpO3ZhciBxPWZhbHNlO2Zvcih2YXIgeD0wO3g8dy5sZW5ndGg7eCsrKXtBPXdbeF07aWYoQS5zaG93JiZBLnNob3dMYWJlbCl7dmFyIHY9ai5qcXBsb3Quc3ByaW50Zih0aGlzLmZvcm1hdFN0cmluZyxBLmxhYmVsLnRvU3RyaW5nKCkpO2lmKHYpe3ZhciB0PUEuY29sb3I7aWYoQS5fc3RhY2smJiFBLmZpbGwpe3Q9IiJ9ei5jYWxsKHRoaXMsdix0LHEseCk7cT10cnVlfWZvcih2YXIgdT0wO3U8ai5qcXBsb3QuYWRkTGVnZW5kUm93SG9va3MubGVuZ3RoO3UrKyl7dmFyIHk9ai5qcXBsb3QuYWRkTGVnZW5kUm93SG9va3NbdV0uY2FsbCh0aGlzLEEpO2lmKHkpe3ouY2FsbCh0aGlzLHkubGFiZWwseS5jb2xvcixxKTtxPXRydWV9fX19dz1BPW51bGw7ZGVsZXRlIHc7ZGVsZXRlIEF9ZnVuY3Rpb24geihELEMsRixzKXt2YXIgQj0oRik/dGhpcy5yb3dTcGFjaW5nOiIwIjt2YXIgRT1qKCc8dHIgY2xhc3M9ImpxcGxvdC1sZWdlbmQganFwbG90LWN1cnNvci1sZWdlbmQiPjwvdHI+JykuYXBwZW5kVG8odGhpcy5fZWxlbSk7RS5kYXRhKCJzZXJpZXNJbmRleCIscyk7aignPHRkIGNsYXNzPSJqcXBsb3QtbGVnZW5kIGpxcGxvdC1jdXJzb3ItbGVnZW5kLXN3YXRjaCIgc3R5bGU9InBhZGRpbmctdG9wOicrQisnOyI+PGRpdiBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCAjY2NjY2NjO3BhZGRpbmc6MC4yZW07Ij48ZGl2IGNsYXNzPSJqcXBsb3QtY3Vyc29yLWxlZ2VuZC1zd2F0Y2giIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOicrQysnOyI+PC9kaXY+PC9kaXY+PC90ZD4nKS5hcHBlbmRUbyhFKTt2YXIgRz1qKCc8dGQgY2xhc3M9ImpxcGxvdC1sZWdlbmQganFwbG90LWN1cnNvci1sZWdlbmQtbGFiZWwiIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7cGFkZGluZy10b3A6JytCKyc7Ij48L3RkPicpO0cuYXBwZW5kVG8oRSk7Ry5kYXRhKCJzZXJpZXNJbmRleCIscyk7aWYodGhpcy5lc2NhcGVIdG1sKXtHLnRleHQoRCl9ZWxzZXtHLmh0bWwoRCl9RT1udWxsO0c9bnVsbH1yZXR1cm4gdGhpcy5fZWxlbX19KShqUXVlcnkpOw==]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oaCl7aC5qcXBsb3QuRGF0ZUF4aXNSZW5kZXJlcj1mdW5jdGlvbigpe2guanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpO3RoaXMuZGF0ZT1uZXcgaC5qc0RhdGUoKX07dmFyIGM9MTAwMDt2YXIgZT02MCpjO3ZhciBmPTYwKmU7dmFyIGw9MjQqZjt2YXIgYj03Kmw7dmFyIGo9MzAuNDM2ODQ5OSpsO3ZhciBrPTM2NS4yNDIxOTkqbDt2YXIgZz1bMzEsMjgsMzEsMzAsMzEsMzAsMzEsMzAsMzEsMzAsMzEsMzBdO3ZhciBpPVsiJU06JVMuJSNOIiwiJU06JVMuJSNOIiwiJU06JVMuJSNOIiwiJU06JVMiLCIlTTolUyIsIiVNOiVTIiwiJU06JVMiLCIlSDolTTolUyIsIiVIOiVNOiVTIiwiJUg6JU0iLCIlSDolTSIsIiVIOiVNIiwiJUg6JU0iLCIlSDolTSIsIiVIOiVNIiwiJWEgJUg6JU0iLCIlYSAlSDolTSIsIiViICVlICVIOiVNIiwiJWIgJWUgJUg6JU0iLCIlYiAlZSAlSDolTSIsIiViICVlICVIOiVNIiwiJXYiLCIldiIsIiV2IiwiJXYiLCIldiIsIiV2IiwiJXYiXTt2YXIgbT1bMC4xKmMsMC4yKmMsMC41KmMsYywyKmMsNSpjLDEwKmMsMTUqYywzMCpjLGUsMiplLDUqZSwxMCplLDE1KmUsMzAqZSxmLDIqZiw0KmYsNipmLDgqZiwxMipmLGwsMipsLDMqbCw0KmwsNSpsLGIsMipiXTt2YXIgZD1bXTtmdW5jdGlvbiBhKHAscyx0KXt2YXIgbz1OdW1iZXIuTUFYX1ZBTFVFO3ZhciB1LHIsdjtmb3IodmFyIHE9MCxuPW0ubGVuZ3RoO3E8bjtxKyspe3U9TWF0aC5hYnModC1tW3FdKTtpZih1PG8pe289dTtyPW1bcV07dj1pW3FdfX1yZXR1cm5bcix2XX1oLmpxcGxvdC5EYXRlQXhpc1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgaC5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7aC5qcXBsb3QuRGF0ZUF4aXNSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9aC5qcXBsb3QuRGF0ZUF4aXNSZW5kZXJlcjtoLmpxcGxvdC5EYXRlVGlja0Zvcm1hdHRlcj1mdW5jdGlvbihuLG8pe2lmKCFuKXtuPSIlWS8lbS8lZCJ9cmV0dXJuIGguanNEYXRlLnN0cmZ0aW1lKG8sbil9O2guanFwbG90LkRhdGVBeGlzUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oRSl7dGhpcy50aWNrT3B0aW9ucy5mb3JtYXR0ZXI9aC5qcXBsb3QuRGF0ZVRpY2tGb3JtYXR0ZXI7dGhpcy50aWNrSW5zZXQ9MDt0aGlzLmRyYXdCYXNlbGluZT10cnVlO3RoaXMuYmFzZWxpbmVXaWR0aD1udWxsO3RoaXMuYmFzZWxpbmVDb2xvcj1udWxsO3RoaXMuZGFUaWNrSW50ZXJ2YWw9bnVsbDt0aGlzLl9kYVRpY2tJbnRlcnZhbD1udWxsO2guZXh0ZW5kKHRydWUsdGhpcyxFKTt2YXIgQz10aGlzLl9kYXRhQm91bmRzLHUseCxELHksQSx6LG87Zm9yKHZhciB0PTA7dDx0aGlzLl9zZXJpZXMubGVuZ3RoO3QrKyl7dT17aW50ZXJ2YWxzOltdLGZyZXF1ZW5jaWVzOnt9LHNvcnRlZEludGVydmFsczpbXSxtaW46bnVsbCxtYXg6bnVsbCxtZWFuOm51bGx9O3g9MDtEPXRoaXMuX3Nlcmllc1t0XTt5PUQuZGF0YTtBPUQuX3Bsb3REYXRhO3o9RC5fc3RhY2tEYXRhO289MDtmb3IodmFyIHI9MDtyPHkubGVuZ3RoO3IrKyl7aWYodGhpcy5uYW1lPT0ieGF4aXMifHx0aGlzLm5hbWU9PSJ4MmF4aXMiKXt5W3JdWzBdPW5ldyBoLmpzRGF0ZSh5W3JdWzBdKS5nZXRUaW1lKCk7QVtyXVswXT1uZXcgaC5qc0RhdGUoeVtyXVswXSkuZ2V0VGltZSgpO3pbcl1bMF09bmV3IGguanNEYXRlKHlbcl1bMF0pLmdldFRpbWUoKTtpZigoeVtyXVswXSE9bnVsbCYmeVtyXVswXTxDLm1pbil8fEMubWluPT1udWxsKXtDLm1pbj15W3JdWzBdfWlmKCh5W3JdWzBdIT1udWxsJiZ5W3JdWzBdPkMubWF4KXx8Qy5tYXg9PW51bGwpe0MubWF4PXlbcl1bMF19aWYocj4wKXtvPU1hdGguYWJzKHlbcl1bMF0teVtyLTFdWzBdKTt1LmludGVydmFscy5wdXNoKG8pO2lmKHUuZnJlcXVlbmNpZXMuaGFzT3duUHJvcGVydHkobykpe3UuZnJlcXVlbmNpZXNbb10rPTF9ZWxzZXt1LmZyZXF1ZW5jaWVzW29dPTF9fXgrPW99ZWxzZXt5W3JdWzFdPW5ldyBoLmpzRGF0ZSh5W3JdWzFdKS5nZXRUaW1lKCk7QVtyXVsxXT1uZXcgaC5qc0RhdGUoeVtyXVsxXSkuZ2V0VGltZSgpO3pbcl1bMV09bmV3IGguanNEYXRlKHlbcl1bMV0pLmdldFRpbWUoKTtpZigoeVtyXVsxXSE9bnVsbCYmeVtyXVsxXTxDLm1pbil8fEMubWluPT1udWxsKXtDLm1pbj15W3JdWzFdfWlmKCh5W3JdWzFdIT1udWxsJiZ5W3JdWzFdPkMubWF4KXx8Qy5tYXg9PW51bGwpe0MubWF4PXlbcl1bMV19aWYocj4wKXtvPU1hdGguYWJzKHlbcl1bMV0teVtyLTFdWzFdKTt1LmludGVydmFscy5wdXNoKG8pO2lmKHUuZnJlcXVlbmNpZXMuaGFzT3duUHJvcGVydHkobykpe3UuZnJlcXVlbmNpZXNbb10rPTF9ZWxzZXt1LmZyZXF1ZW5jaWVzW29dPTF9fX14Kz1vfWlmKEQucmVuZGVyZXIuYmFuZHMpe2lmKEQucmVuZGVyZXIuYmFuZHMuaGlEYXRhLmxlbmd0aCl7dmFyIHc9RC5yZW5kZXJlci5iYW5kcy5oaURhdGE7Zm9yKHZhciByPTAscT13Lmxlbmd0aDtyPHE7cisrKXtpZih0aGlzLm5hbWU9PT0ieGF4aXMifHx0aGlzLm5hbWU9PT0ieDJheGlzIil7d1tyXVswXT1uZXcgaC5qc0RhdGUod1tyXVswXSkuZ2V0VGltZSgpO2lmKCh3W3JdWzBdIT1udWxsJiZ3W3JdWzBdPkMubWF4KXx8Qy5tYXg9PW51bGwpe0MubWF4PXdbcl1bMF19fWVsc2V7d1tyXVsxXT1uZXcgaC5qc0RhdGUod1tyXVsxXSkuZ2V0VGltZSgpO2lmKCh3W3JdWzFdIT1udWxsJiZ3W3JdWzFdPkMubWF4KXx8Qy5tYXg9PW51bGwpe0MubWF4PXdbcl1bMV19fX19aWYoRC5yZW5kZXJlci5iYW5kcy5sb3dEYXRhLmxlbmd0aCl7dmFyIHc9RC5yZW5kZXJlci5iYW5kcy5sb3dEYXRhO2Zvcih2YXIgcj0wLHE9dy5sZW5ndGg7cjxxO3IrKyl7aWYodGhpcy5uYW1lPT09InhheGlzInx8dGhpcy5uYW1lPT09IngyYXhpcyIpe3dbcl1bMF09bmV3IGguanNEYXRlKHdbcl1bMF0pLmdldFRpbWUoKTtpZigod1tyXVswXSE9bnVsbCYmd1tyXVswXTxDLm1pbil8fEMubWluPT1udWxsKXtDLm1pbj13W3JdWzBdfX1lbHNle3dbcl1bMV09bmV3IGguanNEYXRlKHdbcl1bMV0pLmdldFRpbWUoKTtpZigod1tyXVsxXSE9bnVsbCYmd1tyXVsxXTxDLm1pbil8fEMubWluPT1udWxsKXtDLm1pbj13W3JdWzFdfX19fX12YXIgQj0wLHY9MDtmb3IodmFyIHAgaW4gdS5mcmVxdWVuY2llcyl7dS5zb3J0ZWRJbnRlcnZhbHMucHVzaCh7aW50ZXJ2YWw6cCxmcmVxdWVuY3k6dS5mcmVxdWVuY2llc1twXX0pfXUuc29ydGVkSW50ZXJ2YWxzLnNvcnQoZnVuY3Rpb24ocyxuKXtyZXR1cm4gbi5mcmVxdWVuY3ktcy5mcmVxdWVuY3l9KTt1Lm1pbj1oLmpxcGxvdC5hcnJheU1pbih1LmludGVydmFscyk7dS5tYXg9aC5qcXBsb3QuYXJyYXlNYXgodS5pbnRlcnZhbHMpO3UubWVhbj14L3kubGVuZ3RoO3RoaXMuX2ludGVydmFsU3RhdHMucHVzaCh1KTt1PXg9RD15PUE9ej1udWxsfUM9bnVsbH07aC5qcXBsb3QuRGF0ZUF4aXNSZW5kZXJlci5wcm90b3R5cGUucmVzZXQ9ZnVuY3Rpb24oKXt0aGlzLm1pbj10aGlzLl9vcHRpb25zLm1pbjt0aGlzLm1heD10aGlzLl9vcHRpb25zLm1heDt0aGlzLnRpY2tJbnRlcnZhbD10aGlzLl9vcHRpb25zLnRpY2tJbnRlcnZhbDt0aGlzLm51bWJlclRpY2tzPXRoaXMuX29wdGlvbnMubnVtYmVyVGlja3M7dGhpcy5fYXV0b0Zvcm1hdFN0cmluZz0iIjtpZih0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZyYmdGhpcy50aWNrT3B0aW9ucyYmdGhpcy50aWNrT3B0aW9ucy5mb3JtYXRTdHJpbmcpe3RoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nPSIifXRoaXMuZGFUaWNrSW50ZXJ2YWw9dGhpcy5fZGFUaWNrSW50ZXJ2YWx9O2guanFwbG90LkRhdGVBeGlzUmVuZGVyZXIucHJvdG90eXBlLmNyZWF0ZVRpY2tzPWZ1bmN0aW9uKHApe3ZhciBYPXRoaXMuX3RpY2tzO3ZhciBMPXRoaXMudGlja3M7dmFyIEY9dGhpcy5uYW1lO3ZhciBIPXRoaXMuX2RhdGFCb3VuZHM7dmFyIE09dGhpcy5faW50ZXJ2YWxTdGF0czt2YXIgbj0odGhpcy5uYW1lLmNoYXJBdCgwKT09PSJ4Iik/dGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGg6dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0O3ZhciB3O3ZhciBhZSxKO3ZhciB5LHg7dmFyIGFkLGFhO3ZhciBzPTMwO3ZhciBPPTE7dmFyIFU9bnVsbDtpZih0aGlzLnRpY2tJbnRlcnZhbCE9bnVsbCl7aWYoTnVtYmVyKHRoaXMudGlja0ludGVydmFsKSl7VT1bTnVtYmVyKHRoaXMudGlja0ludGVydmFsKSwic2Vjb25kcyJdfWVsc2V7aWYodHlwZW9mIHRoaXMudGlja0ludGVydmFsPT0ic3RyaW5nIil7dmFyIGFjPXRoaXMudGlja0ludGVydmFsLnNwbGl0KCIgIik7aWYoYWMubGVuZ3RoPT0xKXtVPVsxLGFjWzBdXX1lbHNle2lmKGFjLmxlbmd0aD09Mil7VT1bYWNbMF0sYWNbMV1dfX19fX12YXIgdj10aGlzLnRpY2tJbnRlcnZhbDthZT1uZXcgaC5qc0RhdGUoKHRoaXMubWluIT1udWxsKT90aGlzLm1pbjpILm1pbikuZ2V0VGltZSgpO0o9bmV3IGguanNEYXRlKCh0aGlzLm1heCE9bnVsbCk/dGhpcy5tYXg6SC5tYXgpLmdldFRpbWUoKTt2YXIgQT1wLnBsdWdpbnMuY3Vyc29yO2lmKEEmJkEuX3pvb20mJkEuX3pvb20uem9vbWluZyl7dGhpcy5taW49bnVsbDt0aGlzLm1heD1udWxsfXZhciBCPUotYWU7aWYodGhpcy50aWNrT3B0aW9ucz09bnVsbHx8IXRoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nKXt0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZz10cnVlfWlmKEwubGVuZ3RoKXtmb3IoYWE9MDthYTxMLmxlbmd0aDthYSsrKXt2YXIgUD1MW2FhXTt2YXIgWT1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7aWYoUC5jb25zdHJ1Y3Rvcj09QXJyYXkpe1kudmFsdWU9bmV3IGguanNEYXRlKFBbMF0pLmdldFRpbWUoKTtZLmxhYmVsPVBbMV07aWYoIXRoaXMuc2hvd1RpY2tzKXtZLnNob3dMYWJlbD1mYWxzZTtZLnNob3dNYXJrPWZhbHNlfWVsc2V7aWYoIXRoaXMuc2hvd1RpY2tNYXJrcyl7WS5zaG93TWFyaz1mYWxzZX19WS5zZXRUaWNrKFkudmFsdWUsdGhpcy5uYW1lKTt0aGlzLl90aWNrcy5wdXNoKFkpfWVsc2V7WS52YWx1ZT1uZXcgaC5qc0RhdGUoUCkuZ2V0VGltZSgpO2lmKCF0aGlzLnNob3dUaWNrcyl7WS5zaG93TGFiZWw9ZmFsc2U7WS5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe1kuc2hvd01hcms9ZmFsc2V9fVkuc2V0VGljayhZLnZhbHVlLHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChZKX19dGhpcy5udW1iZXJUaWNrcz1MLmxlbmd0aDt0aGlzLm1pbj10aGlzLl90aWNrc1swXS52YWx1ZTt0aGlzLm1heD10aGlzLl90aWNrc1t0aGlzLm51bWJlclRpY2tzLTFdLnZhbHVlO3RoaXMuZGFUaWNrSW50ZXJ2YWw9Wyh0aGlzLm1heC10aGlzLm1pbikvKHRoaXMubnVtYmVyVGlja3MtMSkvMTAwMCwic2Vjb25kcyJdfWVsc2V7aWYodGhpcy5taW49PW51bGwmJnRoaXMubWF4PT1udWxsJiZILm1pbj09SC5tYXgpe3ZhciBFPWguZXh0ZW5kKHRydWUse30sdGhpcy50aWNrT3B0aW9ucyx7bmFtZTp0aGlzLm5hbWUsdmFsdWU6bnVsbH0pO3ZhciBUPTMwMDAwMDt0aGlzLm1pbj1ILm1pbi1UO3RoaXMubWF4PUgubWF4K1Q7dGhpcy5udW1iZXJUaWNrcz0zO2Zvcih2YXIgYWE9dGhpcy5taW47YWE8PXRoaXMubWF4O2FhKz1UKXtFLnZhbHVlPWFhO3ZhciBZPW5ldyB0aGlzLnRpY2tSZW5kZXJlcihFKTtpZih0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZyYmdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyE9IiIpe1kuZm9ybWF0U3RyaW5nPXRoaXMuX2F1dG9Gb3JtYXRTdHJpbmd9WS5zaG93TGFiZWw9ZmFsc2U7WS5zaG93TWFyaz1mYWxzZTt0aGlzLl90aWNrcy5wdXNoKFkpfWlmKHRoaXMuc2hvd1RpY2tzKXt0aGlzLl90aWNrc1sxXS5zaG93TGFiZWw9dHJ1ZX1pZih0aGlzLnNob3dUaWNrTWFya3Mpe3RoaXMuX3RpY2tzWzFdLnNob3dUaWNrTWFya3M9dHJ1ZX19ZWxzZXtpZih0aGlzLm1pbj09bnVsbCYmdGhpcy5tYXg9PW51bGwpe3ZhciBOPWguZXh0ZW5kKHRydWUse30sdGhpcy50aWNrT3B0aW9ucyx7bmFtZTp0aGlzLm5hbWUsdmFsdWU6bnVsbH0pO3ZhciBhYixJO2lmKCF0aGlzLnRpY2tJbnRlcnZhbCYmIXRoaXMubnVtYmVyVGlja3Mpe3ZhciBSPU1hdGgubWF4KG4scysxKTt2YXIgWj0xMTU7aWYodGhpcy50aWNrUmVuZGVyZXI9PT1oLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyJiZ0aGlzLnRpY2tPcHRpb25zLmFuZ2xlKXtaPTExNS00MCpNYXRoLmFicyhNYXRoLnNpbih0aGlzLnRpY2tPcHRpb25zLmFuZ2xlLzE4MCpNYXRoLlBJKSl9YWI9TWF0aC5jZWlsKChSLXMpL1orMSk7ST0oSi1hZSkvKGFiLTEpfWVsc2V7aWYodGhpcy50aWNrSW50ZXJ2YWwpe0k9bmV3IGguanNEYXRlKDApLmFkZChVWzBdLFVbMV0pLmdldFRpbWUoKX1lbHNle2lmKHRoaXMubnVtYmVyVGlja3Mpe2FiPXRoaXMubnVtYmVyVGlja3M7ST0oSi1hZSkvKGFiLTEpfX19aWYoSTw9MTkqbCl7dmFyIFE9YShhZSxKLEkpO3ZhciByPVFbMF07dGhpcy5fYXV0b0Zvcm1hdFN0cmluZz1RWzFdO2FlPW5ldyBoLmpzRGF0ZShhZSk7YWU9TWF0aC5mbG9vcigoYWUuZ2V0VGltZSgpLWFlLmdldFV0Y09mZnNldCgpKS9yKSpyK2FlLmdldFV0Y09mZnNldCgpO2FiPU1hdGguY2VpbCgoSi1hZSkvcikrMTt0aGlzLm1pbj1hZTt0aGlzLm1heD1hZSsoYWItMSkqcjtpZih0aGlzLm1heDxKKXt0aGlzLm1heCs9cjthYis9MX10aGlzLnRpY2tJbnRlcnZhbD1yO3RoaXMubnVtYmVyVGlja3M9YWI7Zm9yKHZhciBhYT0wO2FhPGFiO2FhKyspe04udmFsdWU9dGhpcy5taW4rYWEqcjtZPW5ldyB0aGlzLnRpY2tSZW5kZXJlcihOKTtpZih0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZyYmdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyE9IiIpe1kuZm9ybWF0U3RyaW5nPXRoaXMuX2F1dG9Gb3JtYXRTdHJpbmd9aWYoIXRoaXMuc2hvd1RpY2tzKXtZLnNob3dMYWJlbD1mYWxzZTtZLnNob3dNYXJrPWZhbHNlfWVsc2V7aWYoIXRoaXMuc2hvd1RpY2tNYXJrcyl7WS5zaG93TWFyaz1mYWxzZX19dGhpcy5fdGlja3MucHVzaChZKX1PPXRoaXMudGlja0ludGVydmFsfWVsc2V7aWYoSTw9OSpqKXt0aGlzLl9hdXRvRm9ybWF0U3RyaW5nPSIldiI7dmFyIEQ9TWF0aC5yb3VuZChJL2opO2lmKEQ8MSl7RD0xfWVsc2V7aWYoRD42KXtEPTZ9fXZhciBWPW5ldyBoLmpzRGF0ZShhZSkuc2V0RGF0ZSgxKS5zZXRIb3VycygwLDAsMCwwKTt2YXIgcT1uZXcgaC5qc0RhdGUoSik7dmFyIHo9bmV3IGguanNEYXRlKEopLnNldERhdGUoMSkuc2V0SG91cnMoMCwwLDAsMCk7aWYocS5nZXRUaW1lKCkhPT16LmdldFRpbWUoKSl7ej16LmFkZCgxLCJtb250aCIpfXZhciBTPXouZGlmZihWLCJtb250aCIpO2FiPU1hdGguY2VpbChTL0QpKzE7dGhpcy5taW49Vi5nZXRUaW1lKCk7dGhpcy5tYXg9Vi5jbG9uZSgpLmFkZCgoYWItMSkqRCwibW9udGgiKS5nZXRUaW1lKCk7dGhpcy5udW1iZXJUaWNrcz1hYjtmb3IodmFyIGFhPTA7YWE8YWI7YWErKyl7aWYoYWE9PT0wKXtOLnZhbHVlPVYuZ2V0VGltZSgpfWVsc2V7Ti52YWx1ZT1WLmFkZChELCJtb250aCIpLmdldFRpbWUoKX1ZPW5ldyB0aGlzLnRpY2tSZW5kZXJlcihOKTtpZih0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZyYmdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyE9IiIpe1kuZm9ybWF0U3RyaW5nPXRoaXMuX2F1dG9Gb3JtYXRTdHJpbmd9aWYoIXRoaXMuc2hvd1RpY2tzKXtZLnNob3dMYWJlbD1mYWxzZTtZLnNob3dNYXJrPWZhbHNlfWVsc2V7aWYoIXRoaXMuc2hvd1RpY2tNYXJrcyl7WS5zaG93TWFyaz1mYWxzZX19dGhpcy5fdGlja3MucHVzaChZKX1PPUQqan1lbHNle3RoaXMuX2F1dG9Gb3JtYXRTdHJpbmc9IiV2Ijt2YXIgRD1NYXRoLnJvdW5kKEkvayk7aWYoRDwxKXtEPTF9dmFyIFY9bmV3IGguanNEYXRlKGFlKS5zZXRNb250aCgwLDEpLnNldEhvdXJzKDAsMCwwLDApO3ZhciB6PW5ldyBoLmpzRGF0ZShKKS5hZGQoMSwieWVhciIpLnNldE1vbnRoKDAsMSkuc2V0SG91cnMoMCwwLDAsMCk7dmFyIEs9ei5kaWZmKFYsInllYXIiKTthYj1NYXRoLmNlaWwoSy9EKSsxO3RoaXMubWluPVYuZ2V0VGltZSgpO3RoaXMubWF4PVYuY2xvbmUoKS5hZGQoKGFiLTEpKkQsInllYXIiKS5nZXRUaW1lKCk7dGhpcy5udW1iZXJUaWNrcz1hYjtmb3IodmFyIGFhPTA7YWE8YWI7YWErKyl7aWYoYWE9PT0wKXtOLnZhbHVlPVYuZ2V0VGltZSgpfWVsc2V7Ti52YWx1ZT1WLmFkZChELCJ5ZWFyIikuZ2V0VGltZSgpfVk9bmV3IHRoaXMudGlja1JlbmRlcmVyKE4pO2lmKHRoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nJiZ0aGlzLl9hdXRvRm9ybWF0U3RyaW5nIT0iIil7WS5mb3JtYXRTdHJpbmc9dGhpcy5fYXV0b0Zvcm1hdFN0cmluZ31pZighdGhpcy5zaG93VGlja3Mpe1kuc2hvd0xhYmVsPWZhbHNlO1kuc2hvd01hcms9ZmFsc2V9ZWxzZXtpZighdGhpcy5zaG93VGlja01hcmtzKXtZLnNob3dNYXJrPWZhbHNlfX10aGlzLl90aWNrcy5wdXNoKFkpfU89RCprfX19ZWxzZXtpZihGPT0ieGF4aXMifHxGPT0ieDJheGlzIil7bj10aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aH1lbHNle249dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0fWlmKHRoaXMubWluIT1udWxsJiZ0aGlzLm1heCE9bnVsbCYmdGhpcy5udW1iZXJUaWNrcyE9bnVsbCl7dGhpcy50aWNrSW50ZXJ2YWw9bnVsbH1pZih0aGlzLnRpY2tJbnRlcnZhbCE9bnVsbCYmVSE9bnVsbCl7dGhpcy5kYVRpY2tJbnRlcnZhbD1VfWlmKGFlPT1KKXt2YXIgbz0yNCo2MCo2MCo1MDA7YWUtPW87Sis9b31CPUotYWU7dmFyIEc9MitwYXJzZUludChNYXRoLm1heCgwLG4tMTAwKS8xMDAsMTApO3ZhciBXLEM7Vz0odGhpcy5taW4hPW51bGwpP25ldyBoLmpzRGF0ZSh0aGlzLm1pbikuZ2V0VGltZSgpOmFlLUIvMioodGhpcy5wYWRNaW4tMSk7Qz0odGhpcy5tYXghPW51bGwpP25ldyBoLmpzRGF0ZSh0aGlzLm1heCkuZ2V0VGltZSgpOkorQi8yKih0aGlzLnBhZE1heC0xKTt0aGlzLm1pbj1XO3RoaXMubWF4PUM7Qj10aGlzLm1heC10aGlzLm1pbjtpZih0aGlzLm51bWJlclRpY2tzPT1udWxsKXtpZih0aGlzLmRhVGlja0ludGVydmFsIT1udWxsKXt2YXIgdT1uZXcgaC5qc0RhdGUodGhpcy5tYXgpLmRpZmYodGhpcy5taW4sdGhpcy5kYVRpY2tJbnRlcnZhbFsxXSx0cnVlKTt0aGlzLm51bWJlclRpY2tzPU1hdGguY2VpbCh1L3RoaXMuZGFUaWNrSW50ZXJ2YWxbMF0pKzE7dGhpcy5tYXg9bmV3IGguanNEYXRlKHRoaXMubWluKS5hZGQoKHRoaXMubnVtYmVyVGlja3MtMSkqdGhpcy5kYVRpY2tJbnRlcnZhbFswXSx0aGlzLmRhVGlja0ludGVydmFsWzFdKS5nZXRUaW1lKCl9ZWxzZXtpZihuPjIwMCl7dGhpcy5udW1iZXJUaWNrcz1wYXJzZUludCgzKyhuLTIwMCkvMTAwLDEwKX1lbHNle3RoaXMubnVtYmVyVGlja3M9Mn19fU89Qi8odGhpcy5udW1iZXJUaWNrcy0xKS8xMDAwO2lmKHRoaXMuZGFUaWNrSW50ZXJ2YWw9PW51bGwpe3RoaXMuZGFUaWNrSW50ZXJ2YWw9W08sInNlY29uZHMiXX1mb3IodmFyIGFhPTA7YWE8dGhpcy5udW1iZXJUaWNrczthYSsrKXt2YXIgYWU9bmV3IGguanNEYXRlKHRoaXMubWluKTthZD1hZS5hZGQoYWEqdGhpcy5kYVRpY2tJbnRlcnZhbFswXSx0aGlzLmRhVGlja0ludGVydmFsWzFdKS5nZXRUaW1lKCk7dmFyIFk9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2lmKCF0aGlzLnNob3dUaWNrcyl7WS5zaG93TGFiZWw9ZmFsc2U7WS5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe1kuc2hvd01hcms9ZmFsc2V9fVkuc2V0VGljayhhZCx0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goWSl9fX19aWYodGhpcy50aWNrSW5zZXQpe3RoaXMubWluPXRoaXMubWluLXRoaXMudGlja0luc2V0Kk87dGhpcy5tYXg9dGhpcy5tYXgrdGhpcy50aWNrSW5zZXQqT31pZih0aGlzLl9kYVRpY2tJbnRlcnZhbD09bnVsbCl7dGhpcy5fZGFUaWNrSW50ZXJ2YWw9dGhpcy5kYVRpY2tJbnRlcnZhbH1YPW51bGx9fSkoalF1ZXJ5KTs=]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oZSl7ZS5qcXBsb3QuRG9udXRSZW5kZXJlcj1mdW5jdGlvbigpe2UuanFwbG90LkxpbmVSZW5kZXJlci5jYWxsKHRoaXMpfTtlLmpxcGxvdC5Eb251dFJlbmRlcmVyLnByb3RvdHlwZT1uZXcgZS5qcXBsb3QuTGluZVJlbmRlcmVyKCk7ZS5qcXBsb3QuRG9udXRSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9ZS5qcXBsb3QuRG9udXRSZW5kZXJlcjtlLmpxcGxvdC5Eb251dFJlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKHAsdCl7dGhpcy5kaWFtZXRlcj1udWxsO3RoaXMuaW5uZXJEaWFtZXRlcj1udWxsO3RoaXMudGhpY2tuZXNzPW51bGw7dGhpcy5wYWRkaW5nPTIwO3RoaXMuc2xpY2VNYXJnaW49MDt0aGlzLnJpbmdNYXJnaW49bnVsbDt0aGlzLmZpbGw9dHJ1ZTt0aGlzLnNoYWRvd09mZnNldD0yO3RoaXMuc2hhZG93QWxwaGE9MC4wNzt0aGlzLnNoYWRvd0RlcHRoPTU7dGhpcy5oaWdobGlnaHRNb3VzZU92ZXI9dHJ1ZTt0aGlzLmhpZ2hsaWdodE1vdXNlRG93bj1mYWxzZTt0aGlzLmhpZ2hsaWdodENvbG9ycz1bXTt0aGlzLmRhdGFMYWJlbHM9InBlcmNlbnQiO3RoaXMuc2hvd0RhdGFMYWJlbHM9ZmFsc2U7dGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmc9bnVsbDt0aGlzLmRhdGFMYWJlbFRocmVzaG9sZD0zO3RoaXMuZGF0YUxhYmVsUG9zaXRpb25GYWN0b3I9MC40O3RoaXMuZGF0YUxhYmVsTnVkZ2U9MDt0aGlzLnN0YXJ0QW5nbGU9MDt0aGlzLnRpY2tSZW5kZXJlcj1lLmpxcGxvdC5Eb251dFRpY2tSZW5kZXJlcjt0aGlzLl9kcmF3RGF0YT10cnVlO3RoaXMuX3R5cGU9ImRvbnV0IjtpZihwLmhpZ2hsaWdodE1vdXNlRG93biYmcC5oaWdobGlnaHRNb3VzZU92ZXI9PW51bGwpe3AuaGlnaGxpZ2h0TW91c2VPdmVyPWZhbHNlfWUuZXh0ZW5kKHRydWUsdGhpcyxwKTtpZih0aGlzLmRpYW1ldGVyIT1udWxsKXt0aGlzLmRpYW1ldGVyPXRoaXMuZGlhbWV0ZXItdGhpcy5zbGljZU1hcmdpbn10aGlzLl9kaWFtZXRlcj1udWxsO3RoaXMuX2lubmVyRGlhbWV0ZXI9bnVsbDt0aGlzLl9yYWRpdXM9bnVsbDt0aGlzLl9pbm5lclJhZGl1cz1udWxsO3RoaXMuX3RoaWNrbmVzcz1udWxsO3RoaXMuX3ByZXZpb3VzU2VyaWVzPVtdO3RoaXMuX251bWJlclNlcmllcz0xO3RoaXMuX3NsaWNlQW5nbGVzPVtdO3RoaXMuX2hpZ2hsaWdodGVkUG9pbnQ9bnVsbDtpZih0aGlzLmhpZ2hsaWdodENvbG9ycy5sZW5ndGg9PTApe2Zvcih2YXIgcj0wO3I8dGhpcy5zZXJpZXNDb2xvcnMubGVuZ3RoO3IrKyl7dmFyIHE9ZS5qcXBsb3QuZ2V0Q29sb3JDb21wb25lbnRzKHRoaXMuc2VyaWVzQ29sb3JzW3JdKTt2YXIgbj1bcVswXSxxWzFdLHFbMl1dO3ZhciBzPW5bMF0rblsxXStuWzJdO2Zvcih2YXIgbz0wO288MztvKyspe25bb109KHM+NTcwKT9uW29dKjAuODpuW29dKzAuMyooMjU1LW5bb10pO25bb109cGFyc2VJbnQobltvXSwxMCl9dGhpcy5oaWdobGlnaHRDb2xvcnMucHVzaCgicmdiKCIrblswXSsiLCIrblsxXSsiLCIrblsyXSsiKSIpfX10LnBvc3RQYXJzZU9wdGlvbnNIb29rcy5hZGRPbmNlKGwpO3QucG9zdEluaXRIb29rcy5hZGRPbmNlKGcpO3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdE1vdXNlTW92ZSIsYik7dC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90TW91c2VEb3duIixhKTt0LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RNb3VzZVVwIixqKTt0LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RDbGljayIsZik7dC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90UmlnaHRDbGljayIsbSk7dC5wb3N0RHJhd0hvb2tzLmFkZE9uY2UoaCl9O2UuanFwbG90LkRvbnV0UmVuZGVyZXIucHJvdG90eXBlLnNldEdyaWREYXRhPWZ1bmN0aW9uKHMpe3ZhciBvPVtdO3ZhciB0PVtdO3ZhciBuPXRoaXMuc3RhcnRBbmdsZS8xODAqTWF0aC5QSTt2YXIgcj0wO3RoaXMuX2RyYXdEYXRhPWZhbHNlO2Zvcih2YXIgcT0wO3E8dGhpcy5kYXRhLmxlbmd0aDtxKyspe2lmKHRoaXMuZGF0YVtxXVsxXSE9MCl7dGhpcy5fZHJhd0RhdGE9dHJ1ZX1vLnB1c2godGhpcy5kYXRhW3FdWzFdKTt0LnB1c2goW3RoaXMuZGF0YVtxXVswXV0pO2lmKHE+MCl7b1txXSs9b1txLTFdfXIrPXRoaXMuZGF0YVtxXVsxXX12YXIgcD1NYXRoLlBJKjIvb1tvLmxlbmd0aC0xXTtmb3IodmFyIHE9MDtxPG8ubGVuZ3RoO3ErKyl7dFtxXVsxXT1vW3FdKnA7dFtxXVsyXT10aGlzLmRhdGFbcV1bMV0vcn10aGlzLmdyaWREYXRhPXR9O2UuanFwbG90LkRvbnV0UmVuZGVyZXIucHJvdG90eXBlLm1ha2VHcmlkRGF0YT1mdW5jdGlvbihzLHQpe3ZhciBvPVtdO3ZhciB1PVtdO3ZhciByPTA7dmFyIG49dGhpcy5zdGFydEFuZ2xlLzE4MCpNYXRoLlBJO3RoaXMuX2RyYXdEYXRhPWZhbHNlO2Zvcih2YXIgcT0wO3E8cy5sZW5ndGg7cSsrKXtpZih0aGlzLmRhdGFbcV1bMV0hPTApe3RoaXMuX2RyYXdEYXRhPXRydWV9by5wdXNoKHNbcV1bMV0pO3UucHVzaChbc1txXVswXV0pO2lmKHE+MCl7b1txXSs9b1txLTFdfXIrPXNbcV1bMV19dmFyIHA9TWF0aC5QSSoyL29bby5sZW5ndGgtMV07Zm9yKHZhciBxPTA7cTxvLmxlbmd0aDtxKyspe3VbcV1bMV09b1txXSpwO3VbcV1bMl09c1txXVsxXS9yfXJldHVybiB1fTtlLmpxcGxvdC5Eb251dFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3U2xpY2U9ZnVuY3Rpb24oeCx1LHQscCxzKXt2YXIgbj10aGlzLl9kaWFtZXRlci8yO3ZhciB2PW4tdGhpcy5fdGhpY2tuZXNzO3ZhciB3PXRoaXMuZmlsbDt4LnNhdmUoKTt4LnRyYW5zbGF0ZSh0aGlzLl9jZW50ZXJbMF0sdGhpcy5fY2VudGVyWzFdKTtpZihzKXtmb3IodmFyIHE9MDtxPHRoaXMuc2hhZG93RGVwdGg7cSsrKXt4LnNhdmUoKTt4LnRyYW5zbGF0ZSh0aGlzLnNoYWRvd09mZnNldCpNYXRoLmNvcyh0aGlzLnNoYWRvd0FuZ2xlLzE4MCpNYXRoLlBJKSx0aGlzLnNoYWRvd09mZnNldCpNYXRoLnNpbih0aGlzLnNoYWRvd0FuZ2xlLzE4MCpNYXRoLlBJKSk7bygpfX1lbHNle28oKX1mdW5jdGlvbiBvKCl7aWYodD42LjI4Mit0aGlzLnN0YXJ0QW5nbGUpe3Q9Ni4yODIrdGhpcy5zdGFydEFuZ2xlO2lmKHU+dCl7dT02LjI4MSt0aGlzLnN0YXJ0QW5nbGV9fWlmKHU+PXQpe3JldHVybn14LmJlZ2luUGF0aCgpO3guZmlsbFN0eWxlPXA7eC5zdHJva2VTdHlsZT1wO3guYXJjKDAsMCxuLHUsdCxmYWxzZSk7eC5saW5lVG8odipNYXRoLmNvcyh0KSx2Kk1hdGguc2luKHQpKTt4LmFyYygwLDAsdix0LHUsdHJ1ZSk7eC5jbG9zZVBhdGgoKTtpZih3KXt4LmZpbGwoKX1lbHNle3guc3Ryb2tlKCl9fWlmKHMpe2Zvcih2YXIgcT0wO3E8dGhpcy5zaGFkb3dEZXB0aDtxKyspe3gucmVzdG9yZSgpfX14LnJlc3RvcmUoKX07ZS5qcXBsb3QuRG9udXRSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbihOLFYsdCxQKXt2YXIgUTt2YXIgSj0odCE9dW5kZWZpbmVkKT90Ont9O3ZhciBxPTA7dmFyIHA9MDt2YXIgdT0xO2lmKHQubGVnZW5kSW5mbyYmdC5sZWdlbmRJbmZvLnBsYWNlbWVudD09Imluc2lkZUdyaWQiKXt2YXIgST10LmxlZ2VuZEluZm87c3dpdGNoKEkubG9jYXRpb24pe2Nhc2UibnciOnE9SS53aWR0aCtJLnhvZmZzZXQ7YnJlYWs7Y2FzZSJ3IjpxPUkud2lkdGgrSS54b2Zmc2V0O2JyZWFrO2Nhc2Uic3ciOnE9SS53aWR0aCtJLnhvZmZzZXQ7YnJlYWs7Y2FzZSJuZSI6cT1JLndpZHRoK0kueG9mZnNldDt1PS0xO2JyZWFrO2Nhc2UiZSI6cT1JLndpZHRoK0kueG9mZnNldDt1PS0xO2JyZWFrO2Nhc2Uic2UiOnE9SS53aWR0aCtJLnhvZmZzZXQ7dT0tMTticmVhaztjYXNlIm4iOnA9SS5oZWlnaHQrSS55b2Zmc2V0O2JyZWFrO2Nhc2UicyI6cD1JLmhlaWdodCtJLnlvZmZzZXQ7dT0tMTticmVhaztkZWZhdWx0OmJyZWFrfX12YXIgQj0oSi5zaGFkb3chPXVuZGVmaW5lZCk/Si5zaGFkb3c6dGhpcy5zaGFkb3c7dmFyIFc9KEouc2hvd0xpbmUhPXVuZGVmaW5lZCk/Si5zaG93TGluZTp0aGlzLnNob3dMaW5lO3ZhciBPPShKLmZpbGwhPXVuZGVmaW5lZCk/Si5maWxsOnRoaXMuZmlsbDt2YXIgcz1OLmNhbnZhcy53aWR0aDt2YXIgSD1OLmNhbnZhcy5oZWlnaHQ7dmFyIEc9cy1xLTIqdGhpcy5wYWRkaW5nO3ZhciBSPUgtcC0yKnRoaXMucGFkZGluZzt2YXIgdj1NYXRoLm1pbihHLFIpO3ZhciBUPXY7dmFyIFg9KHRoaXMucmluZ01hcmdpbj09bnVsbCk/dGhpcy5zbGljZU1hcmdpbioyOnRoaXMucmluZ01hcmdpbjtmb3IodmFyIFE9MDtRPHRoaXMuX3ByZXZpb3VzU2VyaWVzLmxlbmd0aDtRKyspe1QtPTIqdGhpcy5fcHJldmlvdXNTZXJpZXNbUV0uX3RoaWNrbmVzcysyKlh9dGhpcy5fZGlhbWV0ZXI9dGhpcy5kaWFtZXRlcnx8VDtpZih0aGlzLmlubmVyRGlhbWV0ZXIhPW51bGwpe3ZhciBNPSh0aGlzLl9udW1iZXJTZXJpZXM+MSYmdGhpcy5pbmRleD4wKT90aGlzLl9wcmV2aW91c1Nlcmllc1swXS5fZGlhbWV0ZXI6dGhpcy5fZGlhbWV0ZXI7dGhpcy5fdGhpY2tuZXNzPXRoaXMudGhpY2tuZXNzfHwoTS10aGlzLmlubmVyRGlhbWV0ZXItMipYKnRoaXMuX251bWJlclNlcmllcykvdGhpcy5fbnVtYmVyU2VyaWVzLzJ9ZWxzZXt0aGlzLl90aGlja25lc3M9dGhpcy50aGlja25lc3N8fHYvMi8odGhpcy5fbnVtYmVyU2VyaWVzKzEpKjAuODV9dmFyIEs9dGhpcy5fcmFkaXVzPXRoaXMuX2RpYW1ldGVyLzI7dGhpcy5faW5uZXJSYWRpdXM9dGhpcy5fcmFkaXVzLXRoaXMuX3RoaWNrbmVzczt2YXIgbz10aGlzLnN0YXJ0QW5nbGUvMTgwKk1hdGguUEk7dGhpcy5fY2VudGVyPVsocy11KnEpLzIrdSpxLChILXUqcCkvMit1KnBdO2lmKHRoaXMuc2hhZG93KXt2YXIgTD0icmdiYSgwLDAsMCwiK3RoaXMuc2hhZG93QWxwaGErIikiO2Zvcih2YXIgUT0wO1E8Vi5sZW5ndGg7USsrKXt2YXIgQT0oUT09MCk/bzpWW1EtMV1bMV0rbztBKz10aGlzLnNsaWNlTWFyZ2luLzE4MCpNYXRoLlBJO3RoaXMucmVuZGVyZXIuZHJhd1NsaWNlLmNhbGwodGhpcyxOLEEsVltRXVsxXStvLEwsdHJ1ZSl9fWZvcih2YXIgUT0wO1E8Vi5sZW5ndGg7USsrKXt2YXIgQT0oUT09MCk/bzpWW1EtMV1bMV0rbztBKz10aGlzLnNsaWNlTWFyZ2luLzE4MCpNYXRoLlBJO3ZhciB6PVZbUV1bMV0rbzt0aGlzLl9zbGljZUFuZ2xlcy5wdXNoKFtBLHpdKTt0aGlzLnJlbmRlcmVyLmRyYXdTbGljZS5jYWxsKHRoaXMsTixBLHosdGhpcy5zZXJpZXNDb2xvcnNbUV0sZmFsc2UpO2lmKHRoaXMuc2hvd0RhdGFMYWJlbHMmJlZbUV1bMl0qMTAwPj10aGlzLmRhdGFMYWJlbFRocmVzaG9sZCl7dmFyIFMsVT0oQSt6KS8yLEM7aWYodGhpcy5kYXRhTGFiZWxzPT0ibGFiZWwiKXtTPXRoaXMuZGF0YUxhYmVsRm9ybWF0U3RyaW5nfHwiJXMiO0M9ZS5qcXBsb3Quc3ByaW50ZihTLFZbUV1bMF0pfWVsc2V7aWYodGhpcy5kYXRhTGFiZWxzPT0idmFsdWUiKXtTPXRoaXMuZGF0YUxhYmVsRm9ybWF0U3RyaW5nfHwiJWQiO0M9ZS5qcXBsb3Quc3ByaW50ZihTLHRoaXMuZGF0YVtRXVsxXSl9ZWxzZXtpZih0aGlzLmRhdGFMYWJlbHM9PSJwZXJjZW50Iil7Uz10aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZ3x8IiVkJSUiO0M9ZS5qcXBsb3Quc3ByaW50ZihTLFZbUV1bMl0qMTAwKX1lbHNle2lmKHRoaXMuZGF0YUxhYmVscy5jb25zdHJ1Y3Rvcj09QXJyYXkpe1M9dGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmd8fCIlcyI7Qz1lLmpxcGxvdC5zcHJpbnRmKFMsdGhpcy5kYXRhTGFiZWxzW1FdKX19fX12YXIgbj10aGlzLl9pbm5lclJhZGl1cyt0aGlzLl90aGlja25lc3MqdGhpcy5kYXRhTGFiZWxQb3NpdGlvbkZhY3Rvcit0aGlzLnNsaWNlTWFyZ2luK3RoaXMuZGF0YUxhYmVsTnVkZ2U7dmFyIEY9dGhpcy5fY2VudGVyWzBdK01hdGguY29zKFUpKm4rdGhpcy5jYW52YXMuX29mZnNldHMubGVmdDt2YXIgRT10aGlzLl9jZW50ZXJbMV0rTWF0aC5zaW4oVSkqbit0aGlzLmNhbnZhcy5fb2Zmc2V0cy50b3A7dmFyIEQ9ZSgnPHNwYW4gY2xhc3M9ImpxcGxvdC1kb251dC1zZXJpZXMganFwbG90LWRhdGEtbGFiZWwiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsiPicrQysiPC9zcGFuPiIpLmluc2VydEJlZm9yZShQLmV2ZW50Q2FudmFzLl9lbGVtKTtGLT1ELndpZHRoKCkvMjtFLT1ELmhlaWdodCgpLzI7Rj1NYXRoLnJvdW5kKEYpO0U9TWF0aC5yb3VuZChFKTtELmNzcyh7bGVmdDpGLHRvcDpFfSl9fX07ZS5qcXBsb3QuRG9udXRBeGlzUmVuZGVyZXI9ZnVuY3Rpb24oKXtlLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIuY2FsbCh0aGlzKX07ZS5qcXBsb3QuRG9udXRBeGlzUmVuZGVyZXIucHJvdG90eXBlPW5ldyBlLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIoKTtlLmpxcGxvdC5Eb251dEF4aXNSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9ZS5qcXBsb3QuRG9udXRBeGlzUmVuZGVyZXI7ZS5qcXBsb3QuRG9udXRBeGlzUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24obil7dGhpcy50aWNrUmVuZGVyZXI9ZS5qcXBsb3QuRG9udXRUaWNrUmVuZGVyZXI7ZS5leHRlbmQodHJ1ZSx0aGlzLG4pO3RoaXMuX2RhdGFCb3VuZHM9e21pbjowLG1heDoxMDB9O3RoaXMubWluPTA7dGhpcy5tYXg9MTAwO3RoaXMuc2hvd1RpY2tzPWZhbHNlO3RoaXMudGlja3M9W107dGhpcy5zaG93TWFyaz1mYWxzZTt0aGlzLnNob3c9ZmFsc2V9O2UuanFwbG90LkRvbnV0TGVnZW5kUmVuZGVyZXI9ZnVuY3Rpb24oKXtlLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyLmNhbGwodGhpcyl9O2UuanFwbG90LkRvbnV0TGVnZW5kUmVuZGVyZXIucHJvdG90eXBlPW5ldyBlLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyKCk7ZS5qcXBsb3QuRG9udXRMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9ZS5qcXBsb3QuRG9udXRMZWdlbmRSZW5kZXJlcjtlLmpxcGxvdC5Eb251dExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKG4pe3RoaXMubnVtYmVyUm93cz1udWxsO3RoaXMubnVtYmVyQ29sdW1ucz1udWxsO2UuZXh0ZW5kKHRydWUsdGhpcyxuKX07ZS5qcXBsb3QuRG9udXRMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbigpe3ZhciBxPXRoaXM7aWYodGhpcy5zaG93KXt2YXIgeT10aGlzLl9zZXJpZXM7dmFyIEI9InBvc2l0aW9uOmFic29sdXRlOyI7Qis9KHRoaXMuYmFja2dyb3VuZCk/ImJhY2tncm91bmQ6Iit0aGlzLmJhY2tncm91bmQrIjsiOiIiO0IrPSh0aGlzLmJvcmRlcik/ImJvcmRlcjoiK3RoaXMuYm9yZGVyKyI7IjoiIjtCKz0odGhpcy5mb250U2l6ZSk/ImZvbnQtc2l6ZToiK3RoaXMuZm9udFNpemUrIjsiOiIiO0IrPSh0aGlzLmZvbnRGYW1pbHkpPyJmb250LWZhbWlseToiK3RoaXMuZm9udEZhbWlseSsiOyI6IiI7Qis9KHRoaXMudGV4dENvbG9yKT8iY29sb3I6Iit0aGlzLnRleHRDb2xvcisiOyI6IiI7Qis9KHRoaXMubWFyZ2luVG9wIT1udWxsKT8ibWFyZ2luLXRvcDoiK3RoaXMubWFyZ2luVG9wKyI7IjoiIjtCKz0odGhpcy5tYXJnaW5Cb3R0b20hPW51bGwpPyJtYXJnaW4tYm90dG9tOiIrdGhpcy5tYXJnaW5Cb3R0b20rIjsiOiIiO0IrPSh0aGlzLm1hcmdpbkxlZnQhPW51bGwpPyJtYXJnaW4tbGVmdDoiK3RoaXMubWFyZ2luTGVmdCsiOyI6IiI7Qis9KHRoaXMubWFyZ2luUmlnaHQhPW51bGwpPyJtYXJnaW4tcmlnaHQ6Iit0aGlzLm1hcmdpblJpZ2h0KyI7IjoiIjt0aGlzLl9lbGVtPWUoJzx0YWJsZSBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9IicrQisnIj48L3RhYmxlPicpO3ZhciBGPWZhbHNlLHg9ZmFsc2Usbix2O3ZhciB6PXlbMF07dmFyIG89bmV3IGUuanFwbG90LkNvbG9yR2VuZXJhdG9yKHouc2VyaWVzQ29sb3JzKTtpZih6LnNob3cpe3ZhciBHPXouZGF0YTtpZih0aGlzLm51bWJlclJvd3Mpe249dGhpcy5udW1iZXJSb3dzO2lmKCF0aGlzLm51bWJlckNvbHVtbnMpe3Y9TWF0aC5jZWlsKEcubGVuZ3RoL24pfWVsc2V7dj10aGlzLm51bWJlckNvbHVtbnN9fWVsc2V7aWYodGhpcy5udW1iZXJDb2x1bW5zKXt2PXRoaXMubnVtYmVyQ29sdW1ucztuPU1hdGguY2VpbChHLmxlbmd0aC90aGlzLm51bWJlckNvbHVtbnMpfWVsc2V7bj1HLmxlbmd0aDt2PTF9fXZhciBFLEQscCx0LHIsdSx3LEM7dmFyIEE9MDtmb3IoRT0wO0U8bjtFKyspe2lmKHgpe3A9ZSgnPHRyIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIj48L3RyPicpLnByZXBlbmRUbyh0aGlzLl9lbGVtKX1lbHNle3A9ZSgnPHRyIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIj48L3RyPicpLmFwcGVuZFRvKHRoaXMuX2VsZW0pfWZvcihEPTA7RDx2O0QrKyl7aWYoQTxHLmxlbmd0aCl7dT10aGlzLmxhYmVsc1tBXXx8R1tBXVswXS50b1N0cmluZygpO0M9by5uZXh0KCk7aWYoIXgpe2lmKEU+MCl7Rj10cnVlfWVsc2V7Rj1mYWxzZX19ZWxzZXtpZihFPT1uLTEpe0Y9ZmFsc2V9ZWxzZXtGPXRydWV9fXc9KEYpP3RoaXMucm93U3BhY2luZzoiMCI7dD1lKCc8dGQgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjtwYWRkaW5nLXRvcDonK3crJzsiPjxkaXY+PGRpdiBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZC1zd2F0Y2giIHN0eWxlPSJib3JkZXItY29sb3I6JytDKyc7Ij48L2Rpdj48L2Rpdj48L3RkPicpO3I9ZSgnPHRkIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIiBzdHlsZT0icGFkZGluZy10b3A6Jyt3Kyc7Ij48L3RkPicpO2lmKHRoaXMuZXNjYXBlSHRtbCl7ci50ZXh0KHUpfWVsc2V7ci5odG1sKHUpfWlmKHgpe3IucHJlcGVuZFRvKHApO3QucHJlcGVuZFRvKHApfWVsc2V7dC5hcHBlbmRUbyhwKTtyLmFwcGVuZFRvKHApfUY9dHJ1ZX1BKyt9fX19cmV0dXJuIHRoaXMuX2VsZW19O2Z1bmN0aW9uIGMocixxLG8pe289b3x8e307by5heGVzRGVmYXVsdHM9by5heGVzRGVmYXVsdHN8fHt9O28ubGVnZW5kPW8ubGVnZW5kfHx7fTtvLnNlcmllc0RlZmF1bHRzPW8uc2VyaWVzRGVmYXVsdHN8fHt9O3ZhciBuPWZhbHNlO2lmKG8uc2VyaWVzRGVmYXVsdHMucmVuZGVyZXI9PWUuanFwbG90LkRvbnV0UmVuZGVyZXIpe249dHJ1ZX1lbHNle2lmKG8uc2VyaWVzKXtmb3IodmFyIHA9MDtwPG8uc2VyaWVzLmxlbmd0aDtwKyspe2lmKG8uc2VyaWVzW3BdLnJlbmRlcmVyPT1lLmpxcGxvdC5Eb251dFJlbmRlcmVyKXtuPXRydWV9fX19aWYobil7by5heGVzRGVmYXVsdHMucmVuZGVyZXI9ZS5qcXBsb3QuRG9udXRBeGlzUmVuZGVyZXI7by5sZWdlbmQucmVuZGVyZXI9ZS5qcXBsb3QuRG9udXRMZWdlbmRSZW5kZXJlcjtvLmxlZ2VuZC5wcmVEcmF3PXRydWU7by5zZXJpZXNEZWZhdWx0cy5wb2ludExhYmVscz17c2hvdzpmYWxzZX19fWZ1bmN0aW9uIGcocixxLG8pe2Zvcih2YXIgcD0xO3A8dGhpcy5zZXJpZXMubGVuZ3RoO3ArKyl7aWYoIXRoaXMuc2VyaWVzW3BdLl9wcmV2aW91c1Nlcmllcy5sZW5ndGgpe2Zvcih2YXIgbj0wO248cDtuKyspe2lmKHRoaXMuc2VyaWVzW3BdLnJlbmRlcmVyLmNvbnN0cnVjdG9yPT1lLmpxcGxvdC5Eb251dFJlbmRlcmVyJiZ0aGlzLnNlcmllc1tuXS5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09ZS5qcXBsb3QuRG9udXRSZW5kZXJlcil7dGhpcy5zZXJpZXNbcF0uX3ByZXZpb3VzU2VyaWVzLnB1c2godGhpcy5zZXJpZXNbbl0pfX19fWZvcihwPTA7cDx0aGlzLnNlcmllcy5sZW5ndGg7cCsrKXtpZih0aGlzLnNlcmllc1twXS5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09ZS5qcXBsb3QuRG9udXRSZW5kZXJlcil7dGhpcy5zZXJpZXNbcF0uX251bWJlclNlcmllcz10aGlzLnNlcmllcy5sZW5ndGg7aWYodGhpcy5zZXJpZXNbcF0uaGlnaGxpZ2h0TW91c2VPdmVyKXt0aGlzLnNlcmllc1twXS5oaWdobGlnaHRNb3VzZURvd249ZmFsc2V9fX19dmFyIGs9ZmFsc2U7ZnVuY3Rpb24gbChuKXtmb3IodmFyIG89MDtvPHRoaXMuc2VyaWVzLmxlbmd0aDtvKyspe3RoaXMuc2VyaWVzW29dLnNlcmllc0NvbG9ycz10aGlzLnNlcmllc0NvbG9yczt0aGlzLnNlcmllc1tvXS5jb2xvckdlbmVyYXRvcj1lLmpxcGxvdC5jb2xvckdlbmVyYXRvcn19ZnVuY3Rpb24gZChyLHEscCl7dmFyIG89ci5zZXJpZXNbcV07dmFyIG49ci5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzO24uX2N0eC5jbGVhclJlY3QoMCwwLG4uX2N0eC5jYW52YXMud2lkdGgsbi5fY3R4LmNhbnZhcy5oZWlnaHQpO28uX2hpZ2hsaWdodGVkUG9pbnQ9cDtyLnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4PXE7by5yZW5kZXJlci5kcmF3U2xpY2UuY2FsbChvLG4uX2N0eCxvLl9zbGljZUFuZ2xlc1twXVswXSxvLl9zbGljZUFuZ2xlc1twXVsxXSxvLmhpZ2hsaWdodENvbG9yc1twXSxmYWxzZSl9ZnVuY3Rpb24gaShwKXt2YXIgbj1wLnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7bi5fY3R4LmNsZWFyUmVjdCgwLDAsbi5fY3R4LmNhbnZhcy53aWR0aCxuLl9jdHguY2FudmFzLmhlaWdodCk7Zm9yKHZhciBvPTA7bzxwLnNlcmllcy5sZW5ndGg7bysrKXtwLnNlcmllc1tvXS5faGlnaGxpZ2h0ZWRQb2ludD1udWxsfXAucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg9bnVsbDtwLnRhcmdldC50cmlnZ2VyKCJqcXBsb3REYXRhVW5oaWdobGlnaHQiKX1mdW5jdGlvbiBiKHIscSx1LHQscyl7aWYodCl7dmFyIHA9W3Quc2VyaWVzSW5kZXgsdC5wb2ludEluZGV4LHQuZGF0YV07dmFyIG89alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhTW91c2VPdmVyIik7by5wYWdlWD1yLnBhZ2VYO28ucGFnZVk9ci5wYWdlWTtzLnRhcmdldC50cmlnZ2VyKG8scCk7aWYocy5zZXJpZXNbcFswXV0uaGlnaGxpZ2h0TW91c2VPdmVyJiYhKHBbMF09PXMucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXgmJnBbMV09PXMuc2VyaWVzW3BbMF1dLl9oaWdobGlnaHRlZFBvaW50KSl7dmFyIG49alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhSGlnaGxpZ2h0Iik7bi53aGljaD1yLndoaWNoO24ucGFnZVg9ci5wYWdlWDtuLnBhZ2VZPXIucGFnZVk7cy50YXJnZXQudHJpZ2dlcihuLHApO2QocyxwWzBdLHBbMV0pfX1lbHNle2lmKHQ9PW51bGwpe2kocyl9fX1mdW5jdGlvbiBhKHEscCx0LHMscil7aWYocyl7dmFyIG89W3Muc2VyaWVzSW5kZXgscy5wb2ludEluZGV4LHMuZGF0YV07aWYoci5zZXJpZXNbb1swXV0uaGlnaGxpZ2h0TW91c2VEb3duJiYhKG9bMF09PXIucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXgmJm9bMV09PXIuc2VyaWVzW29bMF1dLl9oaWdobGlnaHRlZFBvaW50KSl7dmFyIG49alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhSGlnaGxpZ2h0Iik7bi53aGljaD1xLndoaWNoO24ucGFnZVg9cS5wYWdlWDtuLnBhZ2VZPXEucGFnZVk7ci50YXJnZXQudHJpZ2dlcihuLG8pO2QocixvWzBdLG9bMV0pfX1lbHNle2lmKHM9PW51bGwpe2kocil9fX1mdW5jdGlvbiBqKHAsbyxzLHIscSl7dmFyIG49cS5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDtpZihuIT1udWxsJiZxLnNlcmllc1tuXS5oaWdobGlnaHRNb3VzZURvd24pe2kocSl9fWZ1bmN0aW9uIGYocSxwLHQscyxyKXtpZihzKXt2YXIgbz1bcy5zZXJpZXNJbmRleCxzLnBvaW50SW5kZXgscy5kYXRhXTt2YXIgbj1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFDbGljayIpO24ud2hpY2g9cS53aGljaDtuLnBhZ2VYPXEucGFnZVg7bi5wYWdlWT1xLnBhZ2VZO3IudGFyZ2V0LnRyaWdnZXIobixvKX19ZnVuY3Rpb24gbShyLHEsdSx0LHMpe2lmKHQpe3ZhciBwPVt0LnNlcmllc0luZGV4LHQucG9pbnRJbmRleCx0LmRhdGFdO3ZhciBuPXMucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg7aWYobiE9bnVsbCYmcy5zZXJpZXNbbl0uaGlnaGxpZ2h0TW91c2VEb3duKXtpKHMpfXZhciBvPWpRdWVyeS5FdmVudCgianFwbG90RGF0YVJpZ2h0Q2xpY2siKTtvLndoaWNoPXIud2hpY2g7by5wYWdlWD1yLnBhZ2VYO28ucGFnZVk9ci5wYWdlWTtzLnRhcmdldC50cmlnZ2VyKG8scCl9fWZ1bmN0aW9uIGgoKXtpZih0aGlzLnBsdWdpbnMuZG9udXRSZW5kZXJlciYmdGhpcy5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzKXt0aGlzLnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRDYW52YXMucmVzZXRDYW52YXMoKTt0aGlzLnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRDYW52YXM9bnVsbH10aGlzLnBsdWdpbnMuZG9udXRSZW5kZXJlcj17aGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDpudWxsfTt0aGlzLnBsdWdpbnMuZG9udXRSZW5kZXJlci5oaWdobGlnaHRDYW52YXM9bmV3IGUuanFwbG90LkdlbmVyaWNDYW52YXMoKTt2YXIgbz1lKHRoaXMudGFyZ2V0SWQrIiAuanFwbG90LWRhdGEtbGFiZWwiKTtpZihvLmxlbmd0aCl7ZShvWzBdKS5iZWZvcmUodGhpcy5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsImpxcGxvdC1kb251dFJlbmRlcmVyLWhpZ2hsaWdodC1jYW52YXMiLHRoaXMuX3Bsb3REaW1lbnNpb25zLHRoaXMpKX1lbHNle3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKHRoaXMucGx1Z2lucy5kb251dFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCJqcXBsb3QtZG9udXRSZW5kZXJlci1oaWdobGlnaHQtY2FudmFzIix0aGlzLl9wbG90RGltZW5zaW9ucyx0aGlzKSl9dmFyIG49dGhpcy5wbHVnaW5zLmRvbnV0UmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnNldENvbnRleHQoKTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoIm1vdXNlbGVhdmUiLHtwbG90OnRoaXN9LGZ1bmN0aW9uKHApe2kocC5kYXRhLnBsb3QpfSl9ZS5qcXBsb3QucHJlSW5pdEhvb2tzLnB1c2goYyk7ZS5qcXBsb3QuRG9udXRUaWNrUmVuZGVyZXI9ZnVuY3Rpb24oKXtlLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyLmNhbGwodGhpcyl9O2UuanFwbG90LkRvbnV0VGlja1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgZS5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlcigpO2UuanFwbG90LkRvbnV0VGlja1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLmpxcGxvdC5Eb251dFRpY2tSZW5kZXJlcn0pKGpRdWVyeSk7]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oZCl7ZC5qcXBsb3QuRHJhZ2FibGU9ZnVuY3Rpb24oZyl7dGhpcy5tYXJrZXJSZW5kZXJlcj1uZXcgZC5qcXBsb3QuTWFya2VyUmVuZGVyZXIoe3NoYWRvdzpmYWxzZX0pO3RoaXMuc2hhcGVSZW5kZXJlcj1uZXcgZC5qcXBsb3QuU2hhcGVSZW5kZXJlcigpO3RoaXMuaXNEcmFnZ2luZz1mYWxzZTt0aGlzLmlzT3Zlcj1mYWxzZTt0aGlzLl9jdHg7dGhpcy5fZWxlbTt0aGlzLl9wb2ludDt0aGlzLl9ncmlkRGF0YTt0aGlzLmNvbG9yO3RoaXMuY29uc3RyYWluVG89Im5vbmUiO2QuZXh0ZW5kKHRydWUsdGhpcyxnKX07ZnVuY3Rpb24gYigpe2QuanFwbG90LkdlbmVyaWNDYW52YXMuY2FsbCh0aGlzKTt0aGlzLmlzRHJhZ2dpbmc9ZmFsc2U7dGhpcy5pc092ZXI9ZmFsc2U7dGhpcy5fbmVpZ2hib3I7dGhpcy5fY3Vyc29ycz1bXX1iLnByb3RvdHlwZT1uZXcgZC5qcXBsb3QuR2VuZXJpY0NhbnZhcygpO2IucHJvdG90eXBlLmNvbnN0cnVjdG9yPWI7ZC5qcXBsb3QuRHJhZ2FibGUucGFyc2VPcHRpb25zPWZ1bmN0aW9uKGksaCl7dmFyIGc9aHx8e307dGhpcy5wbHVnaW5zLmRyYWdhYmxlPW5ldyBkLmpxcGxvdC5EcmFnYWJsZShnLmRyYWdhYmxlKTt0aGlzLmlzRHJhZ2FibGU9ZC5qcXBsb3QuY29uZmlnLmVuYWJsZVBsdWdpbnN9O2QuanFwbG90LkRyYWdhYmxlLnBvc3RQbG90RHJhdz1mdW5jdGlvbigpe2lmKHRoaXMucGx1Z2lucy5kcmFnYWJsZSYmdGhpcy5wbHVnaW5zLmRyYWdhYmxlLmhpZ2hsaWdodENhbnZhcyl7dGhpcy5wbHVnaW5zLmRyYWdhYmxlLmhpZ2hsaWdodENhbnZhcy5yZXNldENhbnZhcygpO3RoaXMucGx1Z2lucy5kcmFnYWJsZS5oaWdobGlnaHRDYW52YXM9bnVsbH10aGlzLnBsdWdpbnMuZHJhZ2FibGU9e3ByZXZpb3VzQ3Vyc29yOiJhdXRvIixpc092ZXI6ZmFsc2V9O3RoaXMucGx1Z2lucy5kcmFnYWJsZS5kcmFnQ2FudmFzPW5ldyBiKCk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUodGhpcy5wbHVnaW5zLmRyYWdhYmxlLmRyYWdDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywianFwbG90LWRyYWdhYmxlLWNhbnZhcyIsdGhpcy5fcGxvdERpbWVuc2lvbnMsdGhpcykpO3ZhciBnPXRoaXMucGx1Z2lucy5kcmFnYWJsZS5kcmFnQ2FudmFzLnNldENvbnRleHQoKX07ZC5qcXBsb3QucHJlUGFyc2VTZXJpZXNPcHRpb25zSG9va3MucHVzaChkLmpxcGxvdC5EcmFnYWJsZS5wYXJzZU9wdGlvbnMpO2QuanFwbG90LnBvc3REcmF3SG9va3MucHVzaChkLmpxcGxvdC5EcmFnYWJsZS5wb3N0UGxvdERyYXcpO2QuanFwbG90LmV2ZW50TGlzdGVuZXJIb29rcy5wdXNoKFsianFwbG90TW91c2VNb3ZlIixlXSk7ZC5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLnB1c2goWyJqcXBsb3RNb3VzZURvd24iLGNdKTtkLmpxcGxvdC5ldmVudExpc3RlbmVySG9va3MucHVzaChbImpxcGxvdE1vdXNlVXAiLGFdKTtmdW5jdGlvbiBmKG4scCl7dmFyIHE9bi5zZXJpZXNbcC5zZXJpZXNJbmRleF07dmFyIG09cS5wbHVnaW5zLmRyYWdhYmxlO3ZhciBoPXEubWFya2VyUmVuZGVyZXI7dmFyIGk9bS5tYXJrZXJSZW5kZXJlcjtpLnN0eWxlPWguc3R5bGU7aS5saW5lV2lkdGg9aC5saW5lV2lkdGgrMi41O2kuc2l6ZT1oLnNpemUrNTtpZighbS5jb2xvcil7dmFyIGw9ZC5qcXBsb3QuZ2V0Q29sb3JDb21wb25lbnRzKGguY29sb3IpO3ZhciBvPVtsWzBdLGxbMV0sbFsyXV07dmFyIGs9KGxbM10+PTAuNik/bFszXSowLjY6bFszXSooMi1sWzNdKTttLmNvbG9yPSJyZ2JhKCIrb1swXSsiLCIrb1sxXSsiLCIrb1syXSsiLCIraysiKSJ9aS5jb2xvcj1tLmNvbG9yO2kuaW5pdCgpO3ZhciBnPShwLnBvaW50SW5kZXg+MCk/cC5wb2ludEluZGV4LTE6MDt2YXIgaj1wLnBvaW50SW5kZXgrMjttLl9ncmlkRGF0YT1xLmdyaWREYXRhLnNsaWNlKGcsail9ZnVuY3Rpb24gZShvLGwsaCx0LG0pe2lmKG0ucGx1Z2lucy5kcmFnYWJsZS5kcmFnQ2FudmFzLmlzRHJhZ2dpbmcpe3ZhciB1PW0ucGx1Z2lucy5kcmFnYWJsZS5kcmFnQ2FudmFzO3ZhciBpPXUuX25laWdoYm9yO3ZhciB3PW0uc2VyaWVzW2kuc2VyaWVzSW5kZXhdO3ZhciBrPXcucGx1Z2lucy5kcmFnYWJsZTt2YXIgcj13LmdyaWREYXRhO3ZhciBwPShrLmNvbnN0cmFpblRvPT0ieSIpP2kuZ3JpZERhdGFbMF06bC54O3ZhciBuPShrLmNvbnN0cmFpblRvPT0ieCIpP2kuZ3JpZERhdGFbMV06bC55O3ZhciBnPXcuX3hheGlzLnNlcmllc19wMnUocCk7dmFyIHE9dy5feWF4aXMuc2VyaWVzX3AydShuKTt2YXIgdj11Ll9jdHg7di5jbGVhclJlY3QoMCwwLHYuY2FudmFzLndpZHRoLHYuY2FudmFzLmhlaWdodCk7aWYoaS5wb2ludEluZGV4PjApe2suX2dyaWREYXRhWzFdPVtwLG5dfWVsc2V7ay5fZ3JpZERhdGFbMF09W3Asbl19bS5zZXJpZXNbaS5zZXJpZXNJbmRleF0uZHJhdyh1Ll9jdHgse2dyaWREYXRhOmsuX2dyaWREYXRhLHNoYWRvdzpmYWxzZSxwcmV2ZW50SnFQbG90U2VyaWVzRHJhd1RyaWdnZXI6dHJ1ZSxjb2xvcjprLmNvbG9yLG1hcmtlck9wdGlvbnM6e2NvbG9yOmsuY29sb3Isc2hhZG93OmZhbHNlfSx0cmVuZGxpbmU6e3Nob3c6ZmFsc2V9fSk7bS50YXJnZXQudHJpZ2dlcigianFwbG90U2VyaWVzUG9pbnRDaGFuZ2UiLFtpLnNlcmllc0luZGV4LGkucG9pbnRJbmRleCxbZyxxXSxbcCxuXV0pfWVsc2V7aWYodCE9bnVsbCl7dmFyIGo9bS5zZXJpZXNbdC5zZXJpZXNJbmRleF07aWYoai5pc0RyYWdhYmxlKXt2YXIgdT1tLnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhcztpZighdS5pc092ZXIpe3UuX2N1cnNvcnMucHVzaChvLnRhcmdldC5zdHlsZS5jdXJzb3IpO28udGFyZ2V0LnN0eWxlLmN1cnNvcj0icG9pbnRlciJ9dS5pc092ZXI9dHJ1ZX19ZWxzZXtpZih0PT1udWxsKXt2YXIgdT1tLnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhcztpZih1LmlzT3Zlcil7by50YXJnZXQuc3R5bGUuY3Vyc29yPXUuX2N1cnNvcnMucG9wKCk7dS5pc092ZXI9ZmFsc2V9fX19fWZ1bmN0aW9uIGMoayxpLGcsbCxqKXt2YXIgbT1qLnBsdWdpbnMuZHJhZ2FibGUuZHJhZ0NhbnZhczttLl9jdXJzb3JzLnB1c2goay50YXJnZXQuc3R5bGUuY3Vyc29yKTtpZihsIT1udWxsKXt2YXIgbz1qLnNlcmllc1tsLnNlcmllc0luZGV4XTt2YXIgaD1vLnBsdWdpbnMuZHJhZ2FibGU7aWYoby5pc0RyYWdhYmxlJiYhbS5pc0RyYWdnaW5nKXttLl9uZWlnaGJvcj1sO20uaXNEcmFnZ2luZz10cnVlO2YoaixsKTtoLm1hcmtlclJlbmRlcmVyLmRyYXcoby5ncmlkRGF0YVtsLnBvaW50SW5kZXhdWzBdLG8uZ3JpZERhdGFbbC5wb2ludEluZGV4XVsxXSxtLl9jdHgpO2sudGFyZ2V0LnN0eWxlLmN1cnNvcj0ibW92ZSI7ai50YXJnZXQudHJpZ2dlcigianFwbG90RHJhZ1N0YXJ0IixbbC5zZXJpZXNJbmRleCxsLnBvaW50SW5kZXgsaSxnXSl9fWVsc2V7dmFyIG49bS5fY3R4O24uY2xlYXJSZWN0KDAsMCxuLmNhbnZhcy53aWR0aCxuLmNhbnZhcy5oZWlnaHQpO20uaXNEcmFnZ2luZz1mYWxzZX19ZnVuY3Rpb24gYShtLGosZyxvLGspe2lmKGsucGx1Z2lucy5kcmFnYWJsZS5kcmFnQ2FudmFzLmlzRHJhZ2dpbmcpe3ZhciBwPWsucGx1Z2lucy5kcmFnYWJsZS5kcmFnQ2FudmFzO3ZhciBxPXAuX2N0eDtxLmNsZWFyUmVjdCgwLDAscS5jYW52YXMud2lkdGgscS5jYW52YXMuaGVpZ2h0KTtwLmlzRHJhZ2dpbmc9ZmFsc2U7dmFyIGg9cC5fbmVpZ2hib3I7dmFyIHI9ay5zZXJpZXNbaC5zZXJpZXNJbmRleF07dmFyIGk9ci5wbHVnaW5zLmRyYWdhYmxlO3ZhciBuPShpLmNvbnN0cmFpblRvPT0ieSIpP2guZGF0YVswXTpnW3IueGF4aXNdO3ZhciBsPShpLmNvbnN0cmFpblRvPT0ieCIpP2guZGF0YVsxXTpnW3IueWF4aXNdO3IuZGF0YVtoLnBvaW50SW5kZXhdWzBdPW47ci5kYXRhW2gucG9pbnRJbmRleF1bMV09bDtrLmRyYXdTZXJpZXMoe3ByZXZlbnRKcVBsb3RTZXJpZXNEcmF3VHJpZ2dlcjp0cnVlfSxoLnNlcmllc0luZGV4KTtwLl9uZWlnaGJvcj1udWxsO20udGFyZ2V0LnN0eWxlLmN1cnNvcj1wLl9jdXJzb3JzLnBvcCgpO2sudGFyZ2V0LnRyaWdnZXIoImpxcGxvdERyYWdTdG9wIixbaixnXSl9fX0pKGpRdWVyeSk7]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oYyl7Yy5qcXBsb3QuRW5oYW5jZWRMZWdlbmRSZW5kZXJlcj1mdW5jdGlvbigpe2MuanFwbG90LlRhYmxlTGVnZW5kUmVuZGVyZXIuY2FsbCh0aGlzKX07Yy5qcXBsb3QuRW5oYW5jZWRMZWdlbmRSZW5kZXJlci5wcm90b3R5cGU9bmV3IGMuanFwbG90LlRhYmxlTGVnZW5kUmVuZGVyZXIoKTtjLmpxcGxvdC5FbmhhbmNlZExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1jLmpxcGxvdC5FbmhhbmNlZExlZ2VuZFJlbmRlcmVyO2MuanFwbG90LkVuaGFuY2VkTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oZCl7dGhpcy5udW1iZXJSb3dzPW51bGw7dGhpcy5udW1iZXJDb2x1bW5zPW51bGw7dGhpcy5zZXJpZXNUb2dnbGU9Im5vcm1hbCI7dGhpcy5zZXJpZXNUb2dnbGVSZXBsb3Q9ZmFsc2U7dGhpcy5kaXNhYmxlSUVGYWRpbmc9dHJ1ZTtjLmV4dGVuZCh0cnVlLHRoaXMsZCk7aWYodGhpcy5zZXJpZXNUb2dnbGUpe2MuanFwbG90LnBvc3REcmF3SG9va3MucHVzaChiKX19O2MuanFwbG90LkVuaGFuY2VkTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24obSx5KXt2YXIgZj10aGlzO2lmKHRoaXMuc2hvdyl7dmFyIHI9dGhpcy5fc2VyaWVzO3ZhciB1O3ZhciB3PSJwb3NpdGlvbjphYnNvbHV0ZTsiO3crPSh0aGlzLmJhY2tncm91bmQpPyJiYWNrZ3JvdW5kOiIrdGhpcy5iYWNrZ3JvdW5kKyI7IjoiIjt3Kz0odGhpcy5ib3JkZXIpPyJib3JkZXI6Iit0aGlzLmJvcmRlcisiOyI6IiI7dys9KHRoaXMuZm9udFNpemUpPyJmb250LXNpemU6Iit0aGlzLmZvbnRTaXplKyI7IjoiIjt3Kz0odGhpcy5mb250RmFtaWx5KT8iZm9udC1mYW1pbHk6Iit0aGlzLmZvbnRGYW1pbHkrIjsiOiIiO3crPSh0aGlzLnRleHRDb2xvcik/ImNvbG9yOiIrdGhpcy50ZXh0Q29sb3IrIjsiOiIiO3crPSh0aGlzLm1hcmdpblRvcCE9bnVsbCk/Im1hcmdpbi10b3A6Iit0aGlzLm1hcmdpblRvcCsiOyI6IiI7dys9KHRoaXMubWFyZ2luQm90dG9tIT1udWxsKT8ibWFyZ2luLWJvdHRvbToiK3RoaXMubWFyZ2luQm90dG9tKyI7IjoiIjt3Kz0odGhpcy5tYXJnaW5MZWZ0IT1udWxsKT8ibWFyZ2luLWxlZnQ6Iit0aGlzLm1hcmdpbkxlZnQrIjsiOiIiO3crPSh0aGlzLm1hcmdpblJpZ2h0IT1udWxsKT8ibWFyZ2luLXJpZ2h0OiIrdGhpcy5tYXJnaW5SaWdodCsiOyI6IiI7dGhpcy5fZWxlbT1jKCc8dGFibGUgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSInK3crJyI+PC90YWJsZT4nKTtpZih0aGlzLnNlcmllc1RvZ2dsZSl7dGhpcy5fZWxlbS5jc3MoInotaW5kZXgiLCIzIil9dmFyIEM9ZmFsc2UscT1mYWxzZSxkLG87aWYodGhpcy5udW1iZXJSb3dzKXtkPXRoaXMubnVtYmVyUm93cztpZighdGhpcy5udW1iZXJDb2x1bW5zKXtvPU1hdGguY2VpbChyLmxlbmd0aC9kKX1lbHNle289dGhpcy5udW1iZXJDb2x1bW5zfX1lbHNle2lmKHRoaXMubnVtYmVyQ29sdW1ucyl7bz10aGlzLm51bWJlckNvbHVtbnM7ZD1NYXRoLmNlaWwoci5sZW5ndGgvdGhpcy5udW1iZXJDb2x1bW5zKX1lbHNle2Q9ci5sZW5ndGg7bz0xfX12YXIgQix6LGUsbCxrLG4scCx0LGgsZzt2YXIgdj0wO2ZvcihCPXIubGVuZ3RoLTE7Qj49MDtCLS0pe2lmKG89PTEmJnJbQl0uX3N0YWNrfHxyW0JdLnJlbmRlcmVyLmNvbnN0cnVjdG9yPT1jLmpxcGxvdC5CZXppZXJDdXJ2ZVJlbmRlcmVyKXtxPXRydWV9fWZvcihCPTA7QjxkO0IrKyl7ZT1jKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIikpO2UuYWRkQ2xhc3MoImpxcGxvdC10YWJsZS1sZWdlbmQiKTtpZihxKXtlLnByZXBlbmRUbyh0aGlzLl9lbGVtKX1lbHNle2UuYXBwZW5kVG8odGhpcy5fZWxlbSl9Zm9yKHo9MDt6PG87eisrKXtpZih2PHIubGVuZ3RoJiYoclt2XS5zaG93fHxyW3ZdLnNob3dMYWJlbCkpe3U9clt2XTtuPXRoaXMubGFiZWxzW3ZdfHx1LmxhYmVsLnRvU3RyaW5nKCk7aWYobil7dmFyIHg9dS5jb2xvcjtpZighcSl7aWYoQj4wKXtDPXRydWV9ZWxzZXtDPWZhbHNlfX1lbHNle2lmKEI9PWQtMSl7Qz1mYWxzZX1lbHNle0M9dHJ1ZX19cD0oQyk/dGhpcy5yb3dTcGFjaW5nOiIwIjtsPWMoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKSk7bC5hZGRDbGFzcygianFwbG90LXRhYmxlLWxlZ2VuZCBqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaCIpO2wuY3NzKHt0ZXh0QWxpZ246ImNlbnRlciIscGFkZGluZ1RvcDpwfSk7aD1jKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTtoLmFkZENsYXNzKCJqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaC1vdXRsaW5lIik7Zz1jKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTtnLmFkZENsYXNzKCJqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaCIpO2cuY3NzKHtiYWNrZ3JvdW5kQ29sb3I6eCxib3JkZXJDb2xvcjp4fSk7bC5hcHBlbmQoaC5hcHBlbmQoZykpO2s9Yyhkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpKTtrLmFkZENsYXNzKCJqcXBsb3QtdGFibGUtbGVnZW5kIGpxcGxvdC10YWJsZS1sZWdlbmQtbGFiZWwiKTtrLmNzcygicGFkZGluZ1RvcCIscCk7aWYodGhpcy5lc2NhcGVIdG1sKXtrLnRleHQobil9ZWxzZXtrLmh0bWwobil9aWYocSl7aWYodGhpcy5zaG93TGFiZWxzKXtrLnByZXBlbmRUbyhlKX1pZih0aGlzLnNob3dTd2F0Y2hlcyl7bC5wcmVwZW5kVG8oZSl9fWVsc2V7aWYodGhpcy5zaG93U3dhdGNoZXMpe2wuYXBwZW5kVG8oZSl9aWYodGhpcy5zaG93TGFiZWxzKXtrLmFwcGVuZFRvKGUpfX1pZih0aGlzLnNlcmllc1RvZ2dsZSl7dmFyIEE7aWYodHlwZW9mKHRoaXMuc2VyaWVzVG9nZ2xlKT09PSJzdHJpbmcifHx0eXBlb2YodGhpcy5zZXJpZXNUb2dnbGUpPT09Im51bWJlciIpe2lmKCFjLmpxcGxvdC51c2VfZXhjYW52YXN8fCF0aGlzLmRpc2FibGVJRUZhZGluZyl7QT10aGlzLnNlcmllc1RvZ2dsZX19aWYodGhpcy5zaG93U3dhdGNoZXMpe2wuYmluZCgiY2xpY2siLHtzZXJpZXM6dSxzcGVlZDpBLHBsb3Q6eSxyZXBsb3Q6dGhpcy5zZXJpZXNUb2dnbGVSZXBsb3R9LGEpO2wuYWRkQ2xhc3MoImpxcGxvdC1zZXJpZXNUb2dnbGUiKX1pZih0aGlzLnNob3dMYWJlbHMpe2suYmluZCgiY2xpY2siLHtzZXJpZXM6dSxzcGVlZDpBLHBsb3Q6eSxyZXBsb3Q6dGhpcy5zZXJpZXNUb2dnbGVSZXBsb3R9LGEpO2suYWRkQ2xhc3MoImpxcGxvdC1zZXJpZXNUb2dnbGUiKX1pZighdS5zaG93JiZ1LnNob3dMYWJlbCl7bC5hZGRDbGFzcygianFwbG90LXNlcmllcy1oaWRkZW4iKTtrLmFkZENsYXNzKCJqcXBsb3Qtc2VyaWVzLWhpZGRlbiIpfX1DPXRydWV9fXYrK31sPWs9aD1nPW51bGx9fXJldHVybiB0aGlzLl9lbGVtfTt2YXIgYT1mdW5jdGlvbihqKXt2YXIgaT1qLmRhdGEsbT1pLnNlcmllcyxrPWkucmVwbG90LGg9aS5wbG90LGY9aS5zcGVlZCxsPW0uaW5kZXgsZz1mYWxzZTtpZihtLmNhbnZhcy5fZWxlbS5pcygiOmhpZGRlbiIpfHwhbS5zaG93KXtnPXRydWV9dmFyIGU9ZnVuY3Rpb24oKXtpZihrKXt2YXIgbj17fTtpZihjLmlzUGxhaW5PYmplY3Qoaykpe2MuZXh0ZW5kKHRydWUsbixrKX1oLnJlcGxvdChuKTtpZihnJiZmKXt2YXIgZD1oLnNlcmllc1tsXTtpZihkLnNoYWRvd0NhbnZhcy5fZWxlbSl7ZC5zaGFkb3dDYW52YXMuX2VsZW0uaGlkZSgpLmZhZGVJbihmKX1kLmNhbnZhcy5fZWxlbS5oaWRlKCkuZmFkZUluKGYpO2QuY2FudmFzLl9lbGVtLm5leHRBbGwoIi5qcXBsb3QtcG9pbnQtbGFiZWwuanFwbG90LXNlcmllcy0iK2QuaW5kZXgpLmhpZGUoKS5mYWRlSW4oZil9fWVsc2V7dmFyIGQ9aC5zZXJpZXNbbF07aWYoZC5jYW52YXMuX2VsZW0uaXMoIjpoaWRkZW4iKXx8IWQuc2hvdyl7aWYodHlwZW9mIGgub3B0aW9ucy5sZWdlbmQuc2hvd1N3YXRjaGVzPT09InVuZGVmaW5lZCJ8fGgub3B0aW9ucy5sZWdlbmQuc2hvd1N3YXRjaGVzPT09dHJ1ZSl7aC5sZWdlbmQuX2VsZW0uZmluZCgidGQiKS5lcShsKjIpLmFkZENsYXNzKCJqcXBsb3Qtc2VyaWVzLWhpZGRlbiIpfWlmKHR5cGVvZiBoLm9wdGlvbnMubGVnZW5kLnNob3dMYWJlbHM9PT0idW5kZWZpbmVkInx8aC5vcHRpb25zLmxlZ2VuZC5zaG93TGFiZWxzPT09dHJ1ZSl7aC5sZWdlbmQuX2VsZW0uZmluZCgidGQiKS5lcSgobCoyKSsxKS5hZGRDbGFzcygianFwbG90LXNlcmllcy1oaWRkZW4iKX19ZWxzZXtpZih0eXBlb2YgaC5vcHRpb25zLmxlZ2VuZC5zaG93U3dhdGNoZXM9PT0idW5kZWZpbmVkInx8aC5vcHRpb25zLmxlZ2VuZC5zaG93U3dhdGNoZXM9PT10cnVlKXtoLmxlZ2VuZC5fZWxlbS5maW5kKCJ0ZCIpLmVxKGwqMikucmVtb3ZlQ2xhc3MoImpxcGxvdC1zZXJpZXMtaGlkZGVuIil9aWYodHlwZW9mIGgub3B0aW9ucy5sZWdlbmQuc2hvd0xhYmVscz09PSJ1bmRlZmluZWQifHxoLm9wdGlvbnMubGVnZW5kLnNob3dMYWJlbHM9PT10cnVlKXtoLmxlZ2VuZC5fZWxlbS5maW5kKCJ0ZCIpLmVxKChsKjIpKzEpLnJlbW92ZUNsYXNzKCJqcXBsb3Qtc2VyaWVzLWhpZGRlbiIpfX19fTttLnRvZ2dsZURpc3BsYXkoaixlKX07dmFyIGI9ZnVuY3Rpb24oKXtpZih0aGlzLmxlZ2VuZC5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09Yy5qcXBsb3QuRW5oYW5jZWRMZWdlbmRSZW5kZXJlciYmdGhpcy5sZWdlbmQuc2VyaWVzVG9nZ2xlKXt2YXIgZD10aGlzLmxlZ2VuZC5fZWxlbS5kZXRhY2goKTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmFmdGVyKGQpfX19KShqUXVlcnkpOw==]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oZSl7ZS5qcXBsb3QuRnVubmVsUmVuZGVyZXI9ZnVuY3Rpb24oKXtlLmpxcGxvdC5MaW5lUmVuZGVyZXIuY2FsbCh0aGlzKX07ZS5qcXBsb3QuRnVubmVsUmVuZGVyZXIucHJvdG90eXBlPW5ldyBlLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTtlLmpxcGxvdC5GdW5uZWxSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9ZS5qcXBsb3QuRnVubmVsUmVuZGVyZXI7ZS5qcXBsb3QuRnVubmVsUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24ocCx0KXt0aGlzLnBhZGRpbmc9e3RvcDoyMCxyaWdodDoyMCxib3R0b206MjAsbGVmdDoyMH07dGhpcy5zZWN0aW9uTWFyZ2luPTY7dGhpcy5maWxsPXRydWU7dGhpcy5zaGFkb3dPZmZzZXQ9Mjt0aGlzLnNoYWRvd0FscGhhPTAuMDc7dGhpcy5zaGFkb3dEZXB0aD01O3RoaXMuaGlnaGxpZ2h0TW91c2VPdmVyPXRydWU7dGhpcy5oaWdobGlnaHRNb3VzZURvd249ZmFsc2U7dGhpcy5oaWdobGlnaHRDb2xvcnM9W107dGhpcy53aWR0aFJhdGlvPTAuMjt0aGlzLmxpbmVXaWR0aD0yO3RoaXMuZGF0YUxhYmVscz0icGVyY2VudCI7dGhpcy5zaG93RGF0YUxhYmVscz1mYWxzZTt0aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZz1udWxsO3RoaXMuZGF0YUxhYmVsVGhyZXNob2xkPTM7dGhpcy5fdHlwZT0iZnVubmVsIjt0aGlzLnRpY2tSZW5kZXJlcj1lLmpxcGxvdC5GdW5uZWxUaWNrUmVuZGVyZXI7aWYocC5oaWdobGlnaHRNb3VzZURvd24mJnAuaGlnaGxpZ2h0TW91c2VPdmVyPT1udWxsKXtwLmhpZ2hsaWdodE1vdXNlT3Zlcj1mYWxzZX1lLmV4dGVuZCh0cnVlLHRoaXMscCk7dGhpcy5faGlnaGxpZ2h0ZWRQb2ludD1udWxsO3RoaXMuX2Jhc2VzPVtdO3RoaXMuX2F0b3Q7dGhpcy5fYXJlYXM9W107dGhpcy5fbGVuZ3Rocz1bXTt0aGlzLl9hbmdsZTt0aGlzLl9kYXRhSW5kaWNlcz1bXTt0aGlzLl91bm9yZGVyZWREYXRhPWUuZXh0ZW5kKHRydWUsW10sdGhpcy5kYXRhKTt2YXIgbz1lLmV4dGVuZCh0cnVlLFtdLHRoaXMuZGF0YSk7Zm9yKHZhciByPTA7cjxvLmxlbmd0aDtyKyspe29bcl0ucHVzaChyKX10aGlzLmRhdGEuc29ydChmdW5jdGlvbih2LHUpe3JldHVybiB1WzFdLXZbMV19KTtvLnNvcnQoZnVuY3Rpb24odix1KXtyZXR1cm4gdVsxXS12WzFdfSk7Zm9yKHZhciByPTA7cjxvLmxlbmd0aDtyKyspe3RoaXMuX2RhdGFJbmRpY2VzLnB1c2gob1tyXVsyXSl9aWYodGhpcy5oaWdobGlnaHRDb2xvcnMubGVuZ3RoPT0wKXtmb3IodmFyIHI9MDtyPHRoaXMuc2VyaWVzQ29sb3JzLmxlbmd0aDtyKyspe3ZhciBxPWUuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyh0aGlzLnNlcmllc0NvbG9yc1tyXSk7dmFyIG09W3FbMF0scVsxXSxxWzJdXTt2YXIgcz1tWzBdK21bMV0rbVsyXTtmb3IodmFyIG49MDtuPDM7bisrKXttW25dPShzPjU3MCk/bVtuXSowLjg6bVtuXSswLjQqKDI1NS1tW25dKTttW25dPXBhcnNlSW50KG1bbl0sMTApfXRoaXMuaGlnaGxpZ2h0Q29sb3JzLnB1c2goInJnYigiK21bMF0rIiwiK21bMV0rIiwiK21bMl0rIikiKX19dC5wb3N0UGFyc2VPcHRpb25zSG9va3MuYWRkT25jZShrKTt0LnBvc3RJbml0SG9va3MuYWRkT25jZShnKTt0LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RNb3VzZU1vdmUiLGEpO3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdE1vdXNlRG93biIsYik7dC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90TW91c2VVcCIsaik7dC5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90Q2xpY2siLGYpO3QuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdFJpZ2h0Q2xpY2siLGwpO3QucG9zdERyYXdIb29rcy5hZGRPbmNlKGgpfTtlLmpxcGxvdC5GdW5uZWxSZW5kZXJlci5wcm90b3R5cGUuc2V0R3JpZERhdGE9ZnVuY3Rpb24obyl7dmFyIG49MDt2YXIgcD1bXTtmb3IodmFyIG09MDttPHRoaXMuZGF0YS5sZW5ndGg7bSsrKXtuKz10aGlzLmRhdGFbbV1bMV07cC5wdXNoKFt0aGlzLmRhdGFbbV1bMF0sdGhpcy5kYXRhW21dWzFdXSl9Zm9yKHZhciBtPTA7bTxwLmxlbmd0aDttKyspe3BbbV1bMV09cFttXVsxXS9ufXRoaXMuX2Jhc2VzPW5ldyBBcnJheShwLmxlbmd0aCsxKTt0aGlzLl9sZW5ndGhzPW5ldyBBcnJheShwLmxlbmd0aCk7dGhpcy5ncmlkRGF0YT1wfTtlLmpxcGxvdC5GdW5uZWxSZW5kZXJlci5wcm90b3R5cGUubWFrZUdyaWREYXRhPWZ1bmN0aW9uKG8scCl7dmFyIG49MDt2YXIgcT1bXTtmb3IodmFyIG09MDttPHRoaXMuZGF0YS5sZW5ndGg7bSsrKXtuKz10aGlzLmRhdGFbbV1bMV07cS5wdXNoKFt0aGlzLmRhdGFbbV1bMF0sdGhpcy5kYXRhW21dWzFdXSl9Zm9yKHZhciBtPTA7bTxxLmxlbmd0aDttKyspe3FbbV1bMV09cVttXVsxXS9ufXRoaXMuX2Jhc2VzPW5ldyBBcnJheShxLmxlbmd0aCsxKTt0aGlzLl9sZW5ndGhzPW5ldyBBcnJheShxLmxlbmd0aCk7cmV0dXJuIHF9O2UuanFwbG90LkZ1bm5lbFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3U2VjdGlvbj1mdW5jdGlvbihuLHAsbyxzKXt2YXIgdD10aGlzLmZpbGw7dmFyIG09dGhpcy5saW5lV2lkdGg7bi5zYXZlKCk7aWYocyl7Zm9yKHZhciByPTA7cjx0aGlzLnNoYWRvd0RlcHRoO3IrKyl7bi5zYXZlKCk7bi50cmFuc2xhdGUodGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5jb3ModGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSksdGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5zaW4odGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSkpO3EoKX19ZWxzZXtxKCl9ZnVuY3Rpb24gcSgpe24uYmVnaW5QYXRoKCk7bi5maWxsU3R5bGU9bztuLnN0cm9rZVN0eWxlPW87bi5saW5lV2lkdGg9bTtuLm1vdmVUbyhwWzBdWzBdLHBbMF1bMV0pO2Zvcih2YXIgdT0xO3U8NDt1Kyspe24ubGluZVRvKHBbdV1bMF0scFt1XVsxXSl9bi5jbG9zZVBhdGgoKTtpZih0KXtuLmZpbGwoKX1lbHNle24uc3Ryb2tlKCl9fWlmKHMpe2Zvcih2YXIgcj0wO3I8dGhpcy5zaGFkb3dEZXB0aDtyKyspe24ucmVzdG9yZSgpfX1uLnJlc3RvcmUoKX07ZS5qcXBsb3QuRnVubmVsUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oRyxCLEoscCl7dmFyIFk7dmFyIEw9KEohPXVuZGVmaW5lZCk/Sjp7fTt2YXIgdz0wO3ZhciB1PTA7dmFyIFI9MTt0aGlzLl9hcmVhcz1bXTtpZihKLmxlZ2VuZEluZm8mJkoubGVnZW5kSW5mby5wbGFjZW1lbnQ9PSJpbnNpZGVHcmlkIil7dmFyIE89Si5sZWdlbmRJbmZvO3N3aXRjaChPLmxvY2F0aW9uKXtjYXNlIm53Ijp3PU8ud2lkdGgrTy54b2Zmc2V0O2JyZWFrO2Nhc2UidyI6dz1PLndpZHRoK08ueG9mZnNldDticmVhaztjYXNlInN3Ijp3PU8ud2lkdGgrTy54b2Zmc2V0O2JyZWFrO2Nhc2UibmUiOnc9Ty53aWR0aCtPLnhvZmZzZXQ7Uj0tMTticmVhaztjYXNlImUiOnc9Ty53aWR0aCtPLnhvZmZzZXQ7Uj0tMTticmVhaztjYXNlInNlIjp3PU8ud2lkdGgrTy54b2Zmc2V0O1I9LTE7YnJlYWs7Y2FzZSJuIjp1PU8uaGVpZ2h0K08ueW9mZnNldDticmVhaztjYXNlInMiOnU9Ty5oZWlnaHQrTy55b2Zmc2V0O1I9LTE7YnJlYWs7ZGVmYXVsdDpicmVha319dmFyIHQ9KFI9PTEpP3RoaXMucGFkZGluZy5sZWZ0K3c6dGhpcy5wYWRkaW5nLmxlZnQ7dmFyIEY9KFI9PTEpP3RoaXMucGFkZGluZy50b3ArdTp0aGlzLnBhZGRpbmcudG9wO3ZhciBNPShSPT0tMSk/dGhpcy5wYWRkaW5nLnJpZ2h0K3c6dGhpcy5wYWRkaW5nLnJpZ2h0O3ZhciBvPShSPT0tMSk/dGhpcy5wYWRkaW5nLmJvdHRvbSt1OnRoaXMucGFkZGluZy5ib3R0b207dmFyIFA9KEwuc2hhZG93IT11bmRlZmluZWQpP0wuc2hhZG93OnRoaXMuc2hhZG93O3ZhciBxPShMLnNob3dMaW5lIT11bmRlZmluZWQpP0wuc2hvd0xpbmU6dGhpcy5zaG93TGluZTt2YXIgQz0oTC5maWxsIT11bmRlZmluZWQpP0wuZmlsbDp0aGlzLmZpbGw7dmFyIEg9Ry5jYW52YXMud2lkdGg7dmFyIE49Ry5jYW52YXMuaGVpZ2h0O3RoaXMuX2Jhc2VzWzBdPUgtdC1NO3ZhciBJPXRoaXMuX2xlbmd0aD1OLUYtbzt2YXIgcj10aGlzLl9iYXNlc1swXSp0aGlzLndpZHRoUmF0aW87dGhpcy5fYXRvdD1JLzIqKHRoaXMuX2Jhc2VzWzBdK3RoaXMuX2Jhc2VzWzBdKnRoaXMud2lkdGhSYXRpbyk7dGhpcy5fYW5nbGU9TWF0aC5hdGFuKCh0aGlzLl9iYXNlc1swXS1yKS8yL0kpO2ZvcihZPTA7WTxCLmxlbmd0aDtZKyspe3RoaXMuX2FyZWFzLnB1c2goQltZXVsxXSp0aGlzLl9hdG90KX12YXIgRSxhYSxXLFE9MDt2YXIgbj0wLjAwMDE7Zm9yKFk9MDtZPHRoaXMuX2FyZWFzLmxlbmd0aDtZKyspe0U9dGhpcy5fYXJlYXNbWV0vdGhpcy5fYmFzZXNbWV07YWE9OTk5OTk5O3RoaXMuX2xlbmd0aHNbWV09RTtXPTA7d2hpbGUoYWE+dGhpcy5fbGVuZ3Roc1tZXSpuJiZXPDEwMCl7dGhpcy5fbGVuZ3Roc1tZXT10aGlzLl9hcmVhc1tZXS8odGhpcy5fYmFzZXNbWV0tdGhpcy5fbGVuZ3Roc1tZXSpNYXRoLnRhbih0aGlzLl9hbmdsZSkpO2FhPU1hdGguYWJzKHRoaXMuX2xlbmd0aHNbWV0tRSk7dGhpcy5fYmFzZXNbWSsxXT10aGlzLl9iYXNlc1tZXS0oMip0aGlzLl9sZW5ndGhzW1ldKk1hdGgudGFuKHRoaXMuX2FuZ2xlKSk7RT10aGlzLl9sZW5ndGhzW1ldO1crK31RKz10aGlzLl9sZW5ndGhzW1ldfXRoaXMuX3ZlcnRpY2VzPW5ldyBBcnJheShCLmxlbmd0aCk7dmFyIGFlPVt0LEZdLGFkPVt0K3RoaXMuX2Jhc2VzWzBdLEZdLGFjPVt0Kyh0aGlzLl9iYXNlc1swXS10aGlzLl9iYXNlc1t0aGlzLl9iYXNlcy5sZW5ndGgtMV0pLzIsRit0aGlzLl9sZW5ndGhdLGFiPVthY1swXSt0aGlzLl9iYXNlc1t0aGlzLl9iYXNlcy5sZW5ndGgtMV0sYWNbMV1dO2Z1bmN0aW9uIFYoYWcpe3ZhciB4PShhZVsxXS1hY1sxXSkvKGFlWzBdLWFjWzBdKTt2YXIgdj1hZVsxXS14KmFlWzBdO3ZhciBhaD1hZythZVsxXTtyZXR1cm5bKGFoLXYpL3gsYWhdfWZ1bmN0aW9uIEQoYWcpe3ZhciB4PShhZFsxXS1hYlsxXSkvKGFkWzBdLWFiWzBdKTt2YXIgdj1hZFsxXS14KmFkWzBdO3ZhciBhaD1hZythZFsxXTtyZXR1cm5bKGFoLXYpL3gsYWhdfXZhciBUPXcsUz11O3ZhciBaPTAsbT0wO2ZvcihZPTA7WTxCLmxlbmd0aDtZKyspe3RoaXMuX3ZlcnRpY2VzW1ldPW5ldyBBcnJheSgpO3ZhciBVPXRoaXMuX3ZlcnRpY2VzW1ldO3ZhciBBPXRoaXMuc2VjdGlvbk1hcmdpbjtpZihZPT0wKXttPTB9aWYoWT09MSl7bT1BLzN9ZWxzZXtpZihZPjAmJlk8Qi5sZW5ndGgtMSl7bT1BLzJ9ZWxzZXtpZihZPT1CLmxlbmd0aC0xKXttPTIqQS8zfX19VS5wdXNoKFYoWittKSk7VS5wdXNoKEQoWittKSk7Wis9dGhpcy5fbGVuZ3Roc1tZXTtpZihZPT0wKXttPS0yKkEvM31lbHNle2lmKFk+MCYmWTxCLmxlbmd0aC0xKXttPS1BLzJ9ZWxzZXtpZihZPT1CLmxlbmd0aC0xKXttPTB9fX1VLnB1c2goRChaK20pKTtVLnB1c2goVihaK20pKX1pZih0aGlzLnNoYWRvdyl7dmFyIGFmPSJyZ2JhKDAsMCwwLCIrdGhpcy5zaGFkb3dBbHBoYSsiKSI7Zm9yKHZhciBZPTA7WTxCLmxlbmd0aDtZKyspe3RoaXMucmVuZGVyZXIuZHJhd1NlY3Rpb24uY2FsbCh0aGlzLEcsdGhpcy5fdmVydGljZXNbWV0sYWYsdHJ1ZSl9fWZvcih2YXIgWT0wO1k8Qi5sZW5ndGg7WSsrKXt2YXIgVT10aGlzLl92ZXJ0aWNlc1tZXTt0aGlzLnJlbmRlcmVyLmRyYXdTZWN0aW9uLmNhbGwodGhpcyxHLFUsdGhpcy5zZXJpZXNDb2xvcnNbWV0pO2lmKHRoaXMuc2hvd0RhdGFMYWJlbHMmJkJbWV1bMV0qMTAwPj10aGlzLmRhdGFMYWJlbFRocmVzaG9sZCl7dmFyIEssWDtpZih0aGlzLmRhdGFMYWJlbHM9PSJsYWJlbCIpe0s9dGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmd8fCIlcyI7WD1lLmpxcGxvdC5zcHJpbnRmKEssQltZXVswXSl9ZWxzZXtpZih0aGlzLmRhdGFMYWJlbHM9PSJ2YWx1ZSIpe0s9dGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmd8fCIlZCI7WD1lLmpxcGxvdC5zcHJpbnRmKEssdGhpcy5kYXRhW1ldWzFdKX1lbHNle2lmKHRoaXMuZGF0YUxhYmVscz09InBlcmNlbnQiKXtLPXRoaXMuZGF0YUxhYmVsRm9ybWF0U3RyaW5nfHwiJWQlJSI7WD1lLmpxcGxvdC5zcHJpbnRmKEssQltZXVsxXSoxMDApfWVsc2V7aWYodGhpcy5kYXRhTGFiZWxzLmNvbnN0cnVjdG9yPT1BcnJheSl7Sz10aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZ3x8IiVzIjtYPWUuanFwbG90LnNwcmludGYoSyx0aGlzLmRhdGFMYWJlbHNbdGhpcy5fZGF0YUluZGljZXNbWV1dKX19fX12YXIgcz0odGhpcy5fcmFkaXVzKSp0aGlzLmRhdGFMYWJlbFBvc2l0aW9uRmFjdG9yK3RoaXMuc2xpY2VNYXJnaW4rdGhpcy5kYXRhTGFiZWxOdWRnZTt2YXIgVD0oVVswXVswXStVWzFdWzBdKS8yK3RoaXMuY2FudmFzLl9vZmZzZXRzLmxlZnQ7dmFyIFM9KFVbMV1bMV0rVVsyXVsxXSkvMit0aGlzLmNhbnZhcy5fb2Zmc2V0cy50b3A7dmFyIHo9ZSgnPHNwYW4gY2xhc3M9ImpxcGxvdC1mdW5uZWwtc2VyaWVzIGpxcGxvdC1kYXRhLWxhYmVsIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7Ij4nK1grIjwvc3Bhbj4iKS5pbnNlcnRCZWZvcmUocC5ldmVudENhbnZhcy5fZWxlbSk7VC09ei53aWR0aCgpLzI7Uy09ei5oZWlnaHQoKS8yO1Q9TWF0aC5yb3VuZChUKTtTPU1hdGgucm91bmQoUyk7ei5jc3Moe2xlZnQ6VCx0b3A6U30pfX19O2UuanFwbG90LkZ1bm5lbEF4aXNSZW5kZXJlcj1mdW5jdGlvbigpe2UuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpfTtlLmpxcGxvdC5GdW5uZWxBeGlzUmVuZGVyZXIucHJvdG90eXBlPW5ldyBlLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIoKTtlLmpxcGxvdC5GdW5uZWxBeGlzUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUuanFwbG90LkZ1bm5lbEF4aXNSZW5kZXJlcjtlLmpxcGxvdC5GdW5uZWxBeGlzUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24obSl7dGhpcy50aWNrUmVuZGVyZXI9ZS5qcXBsb3QuRnVubmVsVGlja1JlbmRlcmVyO2UuZXh0ZW5kKHRydWUsdGhpcyxtKTt0aGlzLl9kYXRhQm91bmRzPXttaW46MCxtYXg6MTAwfTt0aGlzLm1pbj0wO3RoaXMubWF4PTEwMDt0aGlzLnNob3dUaWNrcz1mYWxzZTt0aGlzLnRpY2tzPVtdO3RoaXMuc2hvd01hcms9ZmFsc2U7dGhpcy5zaG93PWZhbHNlfTtlLmpxcGxvdC5GdW5uZWxMZWdlbmRSZW5kZXJlcj1mdW5jdGlvbigpe2UuanFwbG90LlRhYmxlTGVnZW5kUmVuZGVyZXIuY2FsbCh0aGlzKX07ZS5qcXBsb3QuRnVubmVsTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlPW5ldyBlLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyKCk7ZS5qcXBsb3QuRnVubmVsTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUuanFwbG90LkZ1bm5lbExlZ2VuZFJlbmRlcmVyO2UuanFwbG90LkZ1bm5lbExlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKG0pe3RoaXMubnVtYmVyUm93cz1udWxsO3RoaXMubnVtYmVyQ29sdW1ucz1udWxsO2UuZXh0ZW5kKHRydWUsdGhpcyxtKX07ZS5qcXBsb3QuRnVubmVsTGVnZW5kUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oKXt2YXIgcD10aGlzO2lmKHRoaXMuc2hvdyl7dmFyIHg9dGhpcy5fc2VyaWVzO3ZhciBBPSJwb3NpdGlvbjphYnNvbHV0ZTsiO0ErPSh0aGlzLmJhY2tncm91bmQpPyJiYWNrZ3JvdW5kOiIrdGhpcy5iYWNrZ3JvdW5kKyI7IjoiIjtBKz0odGhpcy5ib3JkZXIpPyJib3JkZXI6Iit0aGlzLmJvcmRlcisiOyI6IiI7QSs9KHRoaXMuZm9udFNpemUpPyJmb250LXNpemU6Iit0aGlzLmZvbnRTaXplKyI7IjoiIjtBKz0odGhpcy5mb250RmFtaWx5KT8iZm9udC1mYW1pbHk6Iit0aGlzLmZvbnRGYW1pbHkrIjsiOiIiO0ErPSh0aGlzLnRleHRDb2xvcik/ImNvbG9yOiIrdGhpcy50ZXh0Q29sb3IrIjsiOiIiO0ErPSh0aGlzLm1hcmdpblRvcCE9bnVsbCk/Im1hcmdpbi10b3A6Iit0aGlzLm1hcmdpblRvcCsiOyI6IiI7QSs9KHRoaXMubWFyZ2luQm90dG9tIT1udWxsKT8ibWFyZ2luLWJvdHRvbToiK3RoaXMubWFyZ2luQm90dG9tKyI7IjoiIjtBKz0odGhpcy5tYXJnaW5MZWZ0IT1udWxsKT8ibWFyZ2luLWxlZnQ6Iit0aGlzLm1hcmdpbkxlZnQrIjsiOiIiO0ErPSh0aGlzLm1hcmdpblJpZ2h0IT1udWxsKT8ibWFyZ2luLXJpZ2h0OiIrdGhpcy5tYXJnaW5SaWdodCsiOyI6IiI7dGhpcy5fZWxlbT1lKCc8dGFibGUgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSInK0ErJyI+PC90YWJsZT4nKTt2YXIgRT1mYWxzZSx3PWZhbHNlLG0sdTt2YXIgeT14WzBdO3ZhciBuPW5ldyBlLmpxcGxvdC5Db2xvckdlbmVyYXRvcih5LnNlcmllc0NvbG9ycyk7aWYoeS5zaG93KXt2YXIgRj15LmRhdGE7aWYodGhpcy5udW1iZXJSb3dzKXttPXRoaXMubnVtYmVyUm93cztpZighdGhpcy5udW1iZXJDb2x1bW5zKXt1PU1hdGguY2VpbChGLmxlbmd0aC9tKX1lbHNle3U9dGhpcy5udW1iZXJDb2x1bW5zfX1lbHNle2lmKHRoaXMubnVtYmVyQ29sdW1ucyl7dT10aGlzLm51bWJlckNvbHVtbnM7bT1NYXRoLmNlaWwoRi5sZW5ndGgvdGhpcy5udW1iZXJDb2x1bW5zKX1lbHNle209Ri5sZW5ndGg7dT0xfX12YXIgRCxDLG8scixxLHQsdixCO3ZhciB6PTA7Zm9yKEQ9MDtEPG07RCsrKXtpZih3KXtvPWUoJzx0ciBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCI+PC90cj4nKS5wcmVwZW5kVG8odGhpcy5fZWxlbSl9ZWxzZXtvPWUoJzx0ciBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCI+PC90cj4nKS5hcHBlbmRUbyh0aGlzLl9lbGVtKX1mb3IoQz0wO0M8dTtDKyspe2lmKHo8Ri5sZW5ndGgpe3Q9dGhpcy5sYWJlbHNbel18fEZbel1bMF0udG9TdHJpbmcoKTtCPW4ubmV4dCgpO2lmKCF3KXtpZihEPjApe0U9dHJ1ZX1lbHNle0U9ZmFsc2V9fWVsc2V7aWYoRD09bS0xKXtFPWZhbHNlfWVsc2V7RT10cnVlfX12PShFKT90aGlzLnJvd1NwYWNpbmc6IjAiO3I9ZSgnPHRkIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6Jyt2Kyc7Ij48ZGl2PjxkaXYgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQtc3dhdGNoIiBzdHlsZT0iYm9yZGVyLWNvbG9yOicrQisnOyI+PC9kaXY+PC9kaXY+PC90ZD4nKTtxPWUoJzx0ZCBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9InBhZGRpbmctdG9wOicrdisnOyI+PC90ZD4nKTtpZih0aGlzLmVzY2FwZUh0bWwpe3EudGV4dCh0KX1lbHNle3EuaHRtbCh0KX1pZih3KXtxLnByZXBlbmRUbyhvKTtyLnByZXBlbmRUbyhvKX1lbHNle3IuYXBwZW5kVG8obyk7cS5hcHBlbmRUbyhvKX1FPXRydWV9eisrfX19fXJldHVybiB0aGlzLl9lbGVtfTtmdW5jdGlvbiBjKHEscCxuKXtuPW58fHt9O24uYXhlc0RlZmF1bHRzPW4uYXhlc0RlZmF1bHRzfHx7fTtuLmxlZ2VuZD1uLmxlZ2VuZHx8e307bi5zZXJpZXNEZWZhdWx0cz1uLnNlcmllc0RlZmF1bHRzfHx7fTt2YXIgbT1mYWxzZTtpZihuLnNlcmllc0RlZmF1bHRzLnJlbmRlcmVyPT1lLmpxcGxvdC5GdW5uZWxSZW5kZXJlcil7bT10cnVlfWVsc2V7aWYobi5zZXJpZXMpe2Zvcih2YXIgbz0wO288bi5zZXJpZXMubGVuZ3RoO28rKyl7aWYobi5zZXJpZXNbb10ucmVuZGVyZXI9PWUuanFwbG90LkZ1bm5lbFJlbmRlcmVyKXttPXRydWV9fX19aWYobSl7bi5heGVzRGVmYXVsdHMucmVuZGVyZXI9ZS5qcXBsb3QuRnVubmVsQXhpc1JlbmRlcmVyO24ubGVnZW5kLnJlbmRlcmVyPWUuanFwbG90LkZ1bm5lbExlZ2VuZFJlbmRlcmVyO24ubGVnZW5kLnByZURyYXc9dHJ1ZTtuLnNvcnREYXRhPWZhbHNlO24uc2VyaWVzRGVmYXVsdHMucG9pbnRMYWJlbHM9e3Nob3c6ZmFsc2V9fX1mdW5jdGlvbiBnKHAsbyxtKXtmb3IodmFyIG49MDtuPHRoaXMuc2VyaWVzLmxlbmd0aDtuKyspe2lmKHRoaXMuc2VyaWVzW25dLnJlbmRlcmVyLmNvbnN0cnVjdG9yPT1lLmpxcGxvdC5GdW5uZWxSZW5kZXJlcil7aWYodGhpcy5zZXJpZXNbbl0uaGlnaGxpZ2h0TW91c2VPdmVyKXt0aGlzLnNlcmllc1tuXS5oaWdobGlnaHRNb3VzZURvd249ZmFsc2V9fX19ZnVuY3Rpb24gayhtKXtmb3IodmFyIG49MDtuPHRoaXMuc2VyaWVzLmxlbmd0aDtuKyspe3RoaXMuc2VyaWVzW25dLnNlcmllc0NvbG9ycz10aGlzLnNlcmllc0NvbG9yczt0aGlzLnNlcmllc1tuXS5jb2xvckdlbmVyYXRvcj1lLmpxcGxvdC5jb2xvckdlbmVyYXRvcn19ZnVuY3Rpb24gZChxLHAsbyl7dmFyIG49cS5zZXJpZXNbcF07dmFyIG09cS5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhczttLl9jdHguY2xlYXJSZWN0KDAsMCxtLl9jdHguY2FudmFzLndpZHRoLG0uX2N0eC5jYW52YXMuaGVpZ2h0KTtuLl9oaWdobGlnaHRlZFBvaW50PW87cS5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg9cDtuLnJlbmRlcmVyLmRyYXdTZWN0aW9uLmNhbGwobixtLl9jdHgsbi5fdmVydGljZXNbb10sbi5oaWdobGlnaHRDb2xvcnNbb10sZmFsc2UpfWZ1bmN0aW9uIGkobyl7dmFyIG09by5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhczttLl9jdHguY2xlYXJSZWN0KDAsMCxtLl9jdHguY2FudmFzLndpZHRoLG0uX2N0eC5jYW52YXMuaGVpZ2h0KTtmb3IodmFyIG49MDtuPG8uc2VyaWVzLmxlbmd0aDtuKyspe28uc2VyaWVzW25dLl9oaWdobGlnaHRlZFBvaW50PW51bGx9by5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg9bnVsbDtvLnRhcmdldC50cmlnZ2VyKCJqcXBsb3REYXRhVW5oaWdobGlnaHQiKX1mdW5jdGlvbiBhKHEscCx0LHMscil7aWYocyl7dmFyIG89W3Muc2VyaWVzSW5kZXgscy5wb2ludEluZGV4LHMuZGF0YV07dmFyIG49alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhTW91c2VPdmVyIik7bi5wYWdlWD1xLnBhZ2VYO24ucGFnZVk9cS5wYWdlWTtyLnRhcmdldC50cmlnZ2VyKG4sbyk7aWYoci5zZXJpZXNbb1swXV0uaGlnaGxpZ2h0TW91c2VPdmVyJiYhKG9bMF09PXIucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4JiZvWzFdPT1yLnNlcmllc1tvWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpe3ZhciBtPWpRdWVyeS5FdmVudCgianFwbG90RGF0YUhpZ2hsaWdodCIpO20ud2hpY2g9cS53aGljaDttLnBhZ2VYPXEucGFnZVg7bS5wYWdlWT1xLnBhZ2VZO3IudGFyZ2V0LnRyaWdnZXIobSxvKTtkKHIsb1swXSxvWzFdKX19ZWxzZXtpZihzPT1udWxsKXtpKHIpfX19ZnVuY3Rpb24gYihwLG8scyxyLHEpe2lmKHIpe3ZhciBuPVtyLnNlcmllc0luZGV4LHIucG9pbnRJbmRleCxyLmRhdGFdO2lmKHEuc2VyaWVzW25bMF1dLmhpZ2hsaWdodE1vdXNlRG93biYmIShuWzBdPT1xLnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCYmblsxXT09cS5zZXJpZXNbblswXV0uX2hpZ2hsaWdodGVkUG9pbnQpKXt2YXIgbT1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFIaWdobGlnaHQiKTttLndoaWNoPXAud2hpY2g7bS5wYWdlWD1wLnBhZ2VYO20ucGFnZVk9cC5wYWdlWTtxLnRhcmdldC50cmlnZ2VyKG0sbik7ZChxLG5bMF0sblsxXSl9fWVsc2V7aWYocj09bnVsbCl7aShxKX19fWZ1bmN0aW9uIGoobyxuLHIscSxwKXt2YXIgbT1wLnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleDtpZihtIT1udWxsJiZwLnNlcmllc1ttXS5oaWdobGlnaHRNb3VzZURvd24pe2kocCl9fWZ1bmN0aW9uIGYocCxvLHMscixxKXtpZihyKXt2YXIgbj1bci5zZXJpZXNJbmRleCxyLnBvaW50SW5kZXgsci5kYXRhXTt2YXIgbT1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFDbGljayIpO20ud2hpY2g9cC53aGljaDttLnBhZ2VYPXAucGFnZVg7bS5wYWdlWT1wLnBhZ2VZO3EudGFyZ2V0LnRyaWdnZXIobSxuKX19ZnVuY3Rpb24gbChxLHAsdCxzLHIpe2lmKHMpe3ZhciBvPVtzLnNlcmllc0luZGV4LHMucG9pbnRJbmRleCxzLmRhdGFdO3ZhciBtPXIucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4O2lmKG0hPW51bGwmJnIuc2VyaWVzW21dLmhpZ2hsaWdodE1vdXNlRG93bil7aShyKX12YXIgbj1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFSaWdodENsaWNrIik7bi53aGljaD1xLndoaWNoO24ucGFnZVg9cS5wYWdlWDtuLnBhZ2VZPXEucGFnZVk7ci50YXJnZXQudHJpZ2dlcihuLG8pfX1mdW5jdGlvbiBoKCl7aWYodGhpcy5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyJiZ0aGlzLnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzKXt0aGlzLnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnJlc2V0Q2FudmFzKCk7dGhpcy5wbHVnaW5zLmZ1bm5lbFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcz1udWxsfXRoaXMucGx1Z2lucy5mdW5uZWxSZW5kZXJlcj17fTt0aGlzLnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzPW5ldyBlLmpxcGxvdC5HZW5lcmljQ2FudmFzKCk7dmFyIG49ZSh0aGlzLnRhcmdldElkKyIgLmpxcGxvdC1kYXRhLWxhYmVsIik7aWYobi5sZW5ndGgpe2UoblswXSkuYmVmb3JlKHRoaXMucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywianFwbG90LWZ1bm5lbFJlbmRlcmVyLWhpZ2hsaWdodC1jYW52YXMiLHRoaXMuX3Bsb3REaW1lbnNpb25zLHRoaXMpKX1lbHNle3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmVmb3JlKHRoaXMucGx1Z2lucy5mdW5uZWxSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuY3JlYXRlRWxlbWVudCh0aGlzLl9ncmlkUGFkZGluZywianFwbG90LWZ1bm5lbFJlbmRlcmVyLWhpZ2hsaWdodC1jYW52YXMiLHRoaXMuX3Bsb3REaW1lbnNpb25zLHRoaXMpKX12YXIgbT10aGlzLnBsdWdpbnMuZnVubmVsUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzLnNldENvbnRleHQoKTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoIm1vdXNlbGVhdmUiLHtwbG90OnRoaXN9LGZ1bmN0aW9uKG8pe2koby5kYXRhLnBsb3QpfSl9ZS5qcXBsb3QucHJlSW5pdEhvb2tzLnB1c2goYyk7ZS5qcXBsb3QuRnVubmVsVGlja1JlbmRlcmVyPWZ1bmN0aW9uKCl7ZS5qcXBsb3QuQXhpc1RpY2tSZW5kZXJlci5jYWxsKHRoaXMpfTtlLmpxcGxvdC5GdW5uZWxUaWNrUmVuZGVyZXIucHJvdG90eXBlPW5ldyBlLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyKCk7ZS5qcXBsb3QuRnVubmVsVGlja1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLmpxcGxvdC5GdW5uZWxUaWNrUmVuZGVyZXJ9KShqUXVlcnkpOw==]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oZCl7ZC5qcXBsb3QuZXZlbnRMaXN0ZW5lckhvb2tzLnB1c2goWyJqcXBsb3RNb3VzZU1vdmUiLGZdKTtkLmpxcGxvdC5IaWdobGlnaHRlcj1mdW5jdGlvbihoKXt0aGlzLnNob3c9ZC5qcXBsb3QuY29uZmlnLmVuYWJsZVBsdWdpbnM7dGhpcy5tYXJrZXJSZW5kZXJlcj1uZXcgZC5qcXBsb3QuTWFya2VyUmVuZGVyZXIoe3NoYWRvdzpmYWxzZX0pO3RoaXMuc2hvd01hcmtlcj10cnVlO3RoaXMubGluZVdpZHRoQWRqdXN0PTIuNTt0aGlzLnNpemVBZGp1c3Q9NTt0aGlzLnNob3dUb29sdGlwPXRydWU7dGhpcy50b29sdGlwTG9jYXRpb249Im53Ijt0aGlzLmZhZGVUb29sdGlwPXRydWU7dGhpcy50b29sdGlwRmFkZVNwZWVkPSJmYXN0Ijt0aGlzLnRvb2x0aXBPZmZzZXQ9Mjt0aGlzLnRvb2x0aXBBeGVzPSJib3RoIjt0aGlzLnRvb2x0aXBTZXBhcmF0b3I9IiwgIjt0aGlzLnRvb2x0aXBDb250ZW50RWRpdG9yPW51bGw7dGhpcy51c2VBeGVzRm9ybWF0dGVycz10cnVlO3RoaXMudG9vbHRpcEZvcm1hdFN0cmluZz0iJS41UCI7dGhpcy5mb3JtYXRTdHJpbmc9bnVsbDt0aGlzLnl2YWx1ZXM9MTt0aGlzLmJyaW5nU2VyaWVzVG9Gcm9udD1mYWxzZTt0aGlzLl90b29sdGlwRWxlbTt0aGlzLmlzSGlnaGxpZ2h0aW5nPWZhbHNlO3RoaXMuY3VycmVudE5laWdoYm9yPW51bGw7ZC5leHRlbmQodHJ1ZSx0aGlzLGgpfTt2YXIgYj1bIm53IiwibiIsIm5lIiwiZSIsInNlIiwicyIsInN3IiwidyJdO3ZhciBlPXtudzowLG46MSxuZToyLGU6MyxzZTo0LHM6NSxzdzo2LHc6N307dmFyIGM9WyJzZSIsInMiLCJzdyIsInciLCJudyIsIm4iLCJuZSIsImUiXTtkLmpxcGxvdC5IaWdobGlnaHRlci5pbml0PWZ1bmN0aW9uKGssaixpKXt2YXIgaD1pfHx7fTt0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXI9bmV3IGQuanFwbG90LkhpZ2hsaWdodGVyKGguaGlnaGxpZ2h0ZXIpfTtkLmpxcGxvdC5IaWdobGlnaHRlci5wYXJzZU9wdGlvbnM9ZnVuY3Rpb24oaSxoKXt0aGlzLnNob3dIaWdobGlnaHQ9dHJ1ZX07ZC5qcXBsb3QuSGlnaGxpZ2h0ZXIucG9zdFBsb3REcmF3PWZ1bmN0aW9uKCl7aWYodGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyJiZ0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuaGlnaGxpZ2h0Q2FudmFzKXt0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuaGlnaGxpZ2h0Q2FudmFzLnJlc2V0Q2FudmFzKCk7dGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLmhpZ2hsaWdodENhbnZhcz1udWxsfWlmKHRoaXMucGx1Z2lucy5oaWdobGlnaHRlciYmdGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLl90b29sdGlwRWxlbSl7dGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLl90b29sdGlwRWxlbS5lbXB0eUZvcmNlKCk7dGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLl90b29sdGlwRWxlbT1udWxsfXRoaXMucGx1Z2lucy5oaWdobGlnaHRlci5oaWdobGlnaHRDYW52YXM9bmV3IGQuanFwbG90LkdlbmVyaWNDYW52YXMoKTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZSh0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuaGlnaGxpZ2h0Q2FudmFzLmNyZWF0ZUVsZW1lbnQodGhpcy5fZ3JpZFBhZGRpbmcsImpxcGxvdC1oaWdobGlnaHQtY2FudmFzIix0aGlzLl9wbG90RGltZW5zaW9ucyx0aGlzKSk7dGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLmhpZ2hsaWdodENhbnZhcy5zZXRDb250ZXh0KCk7dmFyIGg9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLl90b29sdGlwRWxlbT1kKGgpO2g9bnVsbDt0aGlzLnBsdWdpbnMuaGlnaGxpZ2h0ZXIuX3Rvb2x0aXBFbGVtLmFkZENsYXNzKCJqcXBsb3QtaGlnaGxpZ2h0ZXItdG9vbHRpcCIpO3RoaXMucGx1Z2lucy5oaWdobGlnaHRlci5fdG9vbHRpcEVsZW0uY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGRpc3BsYXk6Im5vbmUifSk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUodGhpcy5wbHVnaW5zLmhpZ2hsaWdodGVyLl90b29sdGlwRWxlbSl9O2QuanFwbG90LnByZUluaXRIb29rcy5wdXNoKGQuanFwbG90LkhpZ2hsaWdodGVyLmluaXQpO2QuanFwbG90LnByZVBhcnNlU2VyaWVzT3B0aW9uc0hvb2tzLnB1c2goZC5qcXBsb3QuSGlnaGxpZ2h0ZXIucGFyc2VPcHRpb25zKTtkLmpxcGxvdC5wb3N0RHJhd0hvb2tzLnB1c2goZC5qcXBsb3QuSGlnaGxpZ2h0ZXIucG9zdFBsb3REcmF3KTtmdW5jdGlvbiBhKG0sbyl7dmFyIGo9bS5wbHVnaW5zLmhpZ2hsaWdodGVyO3ZhciBwPW0uc2VyaWVzW28uc2VyaWVzSW5kZXhdO3ZhciBoPXAubWFya2VyUmVuZGVyZXI7dmFyIGk9ai5tYXJrZXJSZW5kZXJlcjtpLnN0eWxlPWguc3R5bGU7aS5saW5lV2lkdGg9aC5saW5lV2lkdGgrai5saW5lV2lkdGhBZGp1c3Q7aS5zaXplPWguc2l6ZStqLnNpemVBZGp1c3Q7dmFyIGw9ZC5qcXBsb3QuZ2V0Q29sb3JDb21wb25lbnRzKGguY29sb3IpO3ZhciBuPVtsWzBdLGxbMV0sbFsyXV07dmFyIGs9KGxbM10+PTAuNik/bFszXSowLjY6bFszXSooMi1sWzNdKTtpLmNvbG9yPSJyZ2JhKCIrblswXSsiLCIrblsxXSsiLCIrblsyXSsiLCIraysiKSI7aS5pbml0KCk7aS5kcmF3KHAuZ3JpZERhdGFbby5wb2ludEluZGV4XVswXSxwLmdyaWREYXRhW28ucG9pbnRJbmRleF1bMV0sai5oaWdobGlnaHRDYW52YXMuX2N0eCl9ZnVuY3Rpb24gZyhBLHEsbSl7dmFyIGs9QS5wbHVnaW5zLmhpZ2hsaWdodGVyO3ZhciBEPWsuX3Rvb2x0aXBFbGVtO3ZhciByPXEuaGlnaGxpZ2h0ZXJ8fHt9O3ZhciB0PWQuZXh0ZW5kKHRydWUse30sayxyKTtpZih0LnVzZUF4ZXNGb3JtYXR0ZXJzKXt2YXIgdz1xLl94YXhpcy5fdGlja3NbMF0uZm9ybWF0dGVyO3ZhciBoPXEuX3lheGlzLl90aWNrc1swXS5mb3JtYXR0ZXI7dmFyIEU9cS5feGF4aXMuX3RpY2tzWzBdLmZvcm1hdFN0cmluZzt2YXIgcz1xLl95YXhpcy5fdGlja3NbMF0uZm9ybWF0U3RyaW5nO3ZhciB6O3ZhciB1PXcoRSxtLmRhdGFbMF0pO3ZhciBsPVtdO2Zvcih2YXIgQj0xO0I8dC55dmFsdWVzKzE7QisrKXtsLnB1c2goaChzLG0uZGF0YVtCXSkpfWlmKHR5cGVvZiB0LmZvcm1hdFN0cmluZz09PSJzdHJpbmciKXtzd2l0Y2godC50b29sdGlwQXhlcyl7Y2FzZSJib3RoIjpjYXNlInh5IjpsLnVuc2hpZnQodSk7bC51bnNoaWZ0KHQuZm9ybWF0U3RyaW5nKTt6PWQuanFwbG90LnNwcmludGYuYXBwbHkoZC5qcXBsb3Quc3ByaW50ZixsKTticmVhaztjYXNlInl4IjpsLnB1c2godSk7bC51bnNoaWZ0KHQuZm9ybWF0U3RyaW5nKTt6PWQuanFwbG90LnNwcmludGYuYXBwbHkoZC5qcXBsb3Quc3ByaW50ZixsKTticmVhaztjYXNlIngiOno9ZC5qcXBsb3Quc3ByaW50Zi5hcHBseShkLmpxcGxvdC5zcHJpbnRmLFt0LmZvcm1hdFN0cmluZyx1XSk7YnJlYWs7Y2FzZSJ5IjpsLnVuc2hpZnQodC5mb3JtYXRTdHJpbmcpO3o9ZC5qcXBsb3Quc3ByaW50Zi5hcHBseShkLmpxcGxvdC5zcHJpbnRmLGwpO2JyZWFrO2RlZmF1bHQ6bC51bnNoaWZ0KHUpO2wudW5zaGlmdCh0LmZvcm1hdFN0cmluZyk7ej1kLmpxcGxvdC5zcHJpbnRmLmFwcGx5KGQuanFwbG90LnNwcmludGYsbCk7YnJlYWt9fWVsc2V7c3dpdGNoKHQudG9vbHRpcEF4ZXMpe2Nhc2UiYm90aCI6Y2FzZSJ4eSI6ej11O2Zvcih2YXIgQj0wO0I8bC5sZW5ndGg7QisrKXt6Kz10LnRvb2x0aXBTZXBhcmF0b3IrbFtCXX1icmVhaztjYXNlInl4Ijp6PSIiO2Zvcih2YXIgQj0wO0I8bC5sZW5ndGg7QisrKXt6Kz1sW0JdK3QudG9vbHRpcFNlcGFyYXRvcn16Kz11O2JyZWFrO2Nhc2UieCI6ej11O2JyZWFrO2Nhc2UieSI6ej1sLmpvaW4odC50b29sdGlwU2VwYXJhdG9yKTticmVhaztkZWZhdWx0Ono9dTtmb3IodmFyIEI9MDtCPGwubGVuZ3RoO0IrKyl7eis9dC50b29sdGlwU2VwYXJhdG9yK2xbQl19YnJlYWt9fX1lbHNle3ZhciB6O2lmKHR5cGVvZiB0LmZvcm1hdFN0cmluZz09PSJzdHJpbmciKXt6PWQuanFwbG90LnNwcmludGYuYXBwbHkoZC5qcXBsb3Quc3ByaW50ZixbdC5mb3JtYXRTdHJpbmddLmNvbmNhdChtLmRhdGEpKX1lbHNle2lmKHQudG9vbHRpcEF4ZXM9PSJib3RoInx8dC50b29sdGlwQXhlcz09Inh5Iil7ej1kLmpxcGxvdC5zcHJpbnRmKHQudG9vbHRpcEZvcm1hdFN0cmluZyxtLmRhdGFbMF0pK3QudG9vbHRpcFNlcGFyYXRvcitkLmpxcGxvdC5zcHJpbnRmKHQudG9vbHRpcEZvcm1hdFN0cmluZyxtLmRhdGFbMV0pfWVsc2V7aWYodC50b29sdGlwQXhlcz09Inl4Iil7ej1kLmpxcGxvdC5zcHJpbnRmKHQudG9vbHRpcEZvcm1hdFN0cmluZyxtLmRhdGFbMV0pK3QudG9vbHRpcFNlcGFyYXRvcitkLmpxcGxvdC5zcHJpbnRmKHQudG9vbHRpcEZvcm1hdFN0cmluZyxtLmRhdGFbMF0pfWVsc2V7aWYodC50b29sdGlwQXhlcz09IngiKXt6PWQuanFwbG90LnNwcmludGYodC50b29sdGlwRm9ybWF0U3RyaW5nLG0uZGF0YVswXSl9ZWxzZXtpZih0LnRvb2x0aXBBeGVzPT0ieSIpe3o9ZC5qcXBsb3Quc3ByaW50Zih0LnRvb2x0aXBGb3JtYXRTdHJpbmcsbS5kYXRhWzFdKX19fX19fWlmKGQuaXNGdW5jdGlvbih0LnRvb2x0aXBDb250ZW50RWRpdG9yKSl7ej10LnRvb2x0aXBDb250ZW50RWRpdG9yKHosbS5zZXJpZXNJbmRleCxtLnBvaW50SW5kZXgsQSl9RC5odG1sKHopO3ZhciBDPXt4Om0uZ3JpZERhdGFbMF0seTptLmdyaWREYXRhWzFdfTt2YXIgdj0wO3ZhciBqPTAuNzA3O2lmKHEubWFya2VyUmVuZGVyZXIuc2hvdz09dHJ1ZSl7dj0ocS5tYXJrZXJSZW5kZXJlci5zaXplK3Quc2l6ZUFkanVzdCkvMn12YXIgbz1iO2lmKHEuZmlsbFRvWmVybyYmcS5maWxsJiZtLmRhdGFbMV08MCl7bz1jfXN3aXRjaChvW2VbdC50b29sdGlwTG9jYXRpb25dXSl7Y2FzZSJudyI6dmFyIHA9Qy54K0EuX2dyaWRQYWRkaW5nLmxlZnQtRC5vdXRlcldpZHRoKHRydWUpLXQudG9vbHRpcE9mZnNldC1qKnY7dmFyIG49Qy55K0EuX2dyaWRQYWRkaW5nLnRvcC10LnRvb2x0aXBPZmZzZXQtRC5vdXRlckhlaWdodCh0cnVlKS1qKnY7YnJlYWs7Y2FzZSJuIjp2YXIgcD1DLngrQS5fZ3JpZFBhZGRpbmcubGVmdC1ELm91dGVyV2lkdGgodHJ1ZSkvMjt2YXIgbj1DLnkrQS5fZ3JpZFBhZGRpbmcudG9wLXQudG9vbHRpcE9mZnNldC1ELm91dGVySGVpZ2h0KHRydWUpLXY7YnJlYWs7Y2FzZSJuZSI6dmFyIHA9Qy54K0EuX2dyaWRQYWRkaW5nLmxlZnQrdC50b29sdGlwT2Zmc2V0K2oqdjt2YXIgbj1DLnkrQS5fZ3JpZFBhZGRpbmcudG9wLXQudG9vbHRpcE9mZnNldC1ELm91dGVySGVpZ2h0KHRydWUpLWoqdjticmVhaztjYXNlImUiOnZhciBwPUMueCtBLl9ncmlkUGFkZGluZy5sZWZ0K3QudG9vbHRpcE9mZnNldCt2O3ZhciBuPUMueStBLl9ncmlkUGFkZGluZy50b3AtRC5vdXRlckhlaWdodCh0cnVlKS8yO2JyZWFrO2Nhc2Uic2UiOnZhciBwPUMueCtBLl9ncmlkUGFkZGluZy5sZWZ0K3QudG9vbHRpcE9mZnNldCtqKnY7dmFyIG49Qy55K0EuX2dyaWRQYWRkaW5nLnRvcCt0LnRvb2x0aXBPZmZzZXQraip2O2JyZWFrO2Nhc2UicyI6dmFyIHA9Qy54K0EuX2dyaWRQYWRkaW5nLmxlZnQtRC5vdXRlcldpZHRoKHRydWUpLzI7dmFyIG49Qy55K0EuX2dyaWRQYWRkaW5nLnRvcCt0LnRvb2x0aXBPZmZzZXQrdjticmVhaztjYXNlInN3Ijp2YXIgcD1DLngrQS5fZ3JpZFBhZGRpbmcubGVmdC1ELm91dGVyV2lkdGgodHJ1ZSktdC50b29sdGlwT2Zmc2V0LWoqdjt2YXIgbj1DLnkrQS5fZ3JpZFBhZGRpbmcudG9wK3QudG9vbHRpcE9mZnNldCtqKnY7YnJlYWs7Y2FzZSJ3Ijp2YXIgcD1DLngrQS5fZ3JpZFBhZGRpbmcubGVmdC1ELm91dGVyV2lkdGgodHJ1ZSktdC50b29sdGlwT2Zmc2V0LXY7dmFyIG49Qy55K0EuX2dyaWRQYWRkaW5nLnRvcC1ELm91dGVySGVpZ2h0KHRydWUpLzI7YnJlYWs7ZGVmYXVsdDp2YXIgcD1DLngrQS5fZ3JpZFBhZGRpbmcubGVmdC1ELm91dGVyV2lkdGgodHJ1ZSktdC50b29sdGlwT2Zmc2V0LWoqdjt2YXIgbj1DLnkrQS5fZ3JpZFBhZGRpbmcudG9wLXQudG9vbHRpcE9mZnNldC1ELm91dGVySGVpZ2h0KHRydWUpLWoqdjticmVha31ELmNzcygibGVmdCIscCk7RC5jc3MoInRvcCIsbik7aWYodC5mYWRlVG9vbHRpcCl7RC5zdG9wKHRydWUsdHJ1ZSkuZmFkZUluKHQudG9vbHRpcEZhZGVTcGVlZCl9ZWxzZXtELnNob3coKX1EPW51bGx9ZnVuY3Rpb24gZihuLGosaSxwLGwpe3ZhciBoPWwucGx1Z2lucy5oaWdobGlnaHRlcjt2YXIgbT1sLnBsdWdpbnMuY3Vyc29yO2lmKGguc2hvdyl7aWYocD09bnVsbCYmaC5pc0hpZ2hsaWdodGluZyl7dmFyIG89alF1ZXJ5LkV2ZW50KCJqcXBsb3RIaWdobGlnaHRlclVuaGlnaGxpZ2h0Iik7bC50YXJnZXQudHJpZ2dlcihvKTt2YXIgcT1oLmhpZ2hsaWdodENhbnZhcy5fY3R4O3EuY2xlYXJSZWN0KDAsMCxxLmNhbnZhcy53aWR0aCxxLmNhbnZhcy5oZWlnaHQpO2lmKGguZmFkZVRvb2x0aXApe2guX3Rvb2x0aXBFbGVtLmZhZGVPdXQoaC50b29sdGlwRmFkZVNwZWVkKX1lbHNle2guX3Rvb2x0aXBFbGVtLmhpZGUoKX1pZihoLmJyaW5nU2VyaWVzVG9Gcm9udCl7bC5yZXN0b3JlUHJldmlvdXNTZXJpZXNPcmRlcigpfWguaXNIaWdobGlnaHRpbmc9ZmFsc2U7aC5jdXJyZW50TmVpZ2hib3I9bnVsbDtxPW51bGx9ZWxzZXtpZihwIT1udWxsJiZsLnNlcmllc1twLnNlcmllc0luZGV4XS5zaG93SGlnaGxpZ2h0JiYhaC5pc0hpZ2hsaWdodGluZyl7dmFyIG89alF1ZXJ5LkV2ZW50KCJqcXBsb3RIaWdobGlnaHRlckhpZ2hsaWdodCIpO28ud2hpY2g9bi53aGljaDtvLnBhZ2VYPW4ucGFnZVg7by5wYWdlWT1uLnBhZ2VZO3ZhciBrPVtwLnNlcmllc0luZGV4LHAucG9pbnRJbmRleCxwLmRhdGEsbF07bC50YXJnZXQudHJpZ2dlcihvLGspO2guaXNIaWdobGlnaHRpbmc9dHJ1ZTtoLmN1cnJlbnROZWlnaGJvcj1wO2lmKGguc2hvd01hcmtlcil7YShsLHApfWlmKGwuc2VyaWVzW3Auc2VyaWVzSW5kZXhdLnNob3cmJmguc2hvd1Rvb2x0aXAmJighbXx8IW0uX3pvb20uc3RhcnRlZCkpe2cobCxsLnNlcmllc1twLnNlcmllc0luZGV4XSxwKX1pZihoLmJyaW5nU2VyaWVzVG9Gcm9udCl7bC5tb3ZlU2VyaWVzVG9Gcm9udChwLnNlcmllc0luZGV4KX19ZWxzZXtpZihwIT1udWxsJiZoLmlzSGlnaGxpZ2h0aW5nJiZoLmN1cnJlbnROZWlnaGJvciE9cCl7aWYobC5zZXJpZXNbcC5zZXJpZXNJbmRleF0uc2hvd0hpZ2hsaWdodCl7dmFyIHE9aC5oaWdobGlnaHRDYW52YXMuX2N0eDtxLmNsZWFyUmVjdCgwLDAscS5jYW52YXMud2lkdGgscS5jYW52YXMuaGVpZ2h0KTtoLmlzSGlnaGxpZ2h0aW5nPXRydWU7aC5jdXJyZW50TmVpZ2hib3I9cDtpZihoLnNob3dNYXJrZXIpe2EobCxwKX1pZihsLnNlcmllc1twLnNlcmllc0luZGV4XS5zaG93JiZoLnNob3dUb29sdGlwJiYoIW18fCFtLl96b29tLnN0YXJ0ZWQpKXtnKGwsbC5zZXJpZXNbcC5zZXJpZXNJbmRleF0scCl9aWYoaC5icmluZ1Nlcmllc1RvRnJvbnQpe2wubW92ZVNlcmllc1RvRnJvbnQocC5zZXJpZXNJbmRleCl9fX19fX19fSkoalF1ZXJ5KTs=]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oJCl7JC5qcXBsb3QuSlNPTj13aW5kb3cuSlNPTjtpZighd2luZG93LkpTT04peyQuanFwbG90LkpTT049e319ZnVuY3Rpb24gZihuKXtyZXR1cm4gbjwxMD8iMCIrbjpufWlmKHR5cGVvZiBEYXRlLnByb3RvdHlwZS50b0pTT04hPT0iZnVuY3Rpb24iKXtEYXRlLnByb3RvdHlwZS50b0pTT049ZnVuY3Rpb24oa2V5KXtyZXR1cm4gaXNGaW5pdGUodGhpcy52YWx1ZU9mKCkpP3RoaXMuZ2V0VVRDRnVsbFllYXIoKSsiLSIrZih0aGlzLmdldFVUQ01vbnRoKCkrMSkrIi0iK2YodGhpcy5nZXRVVENEYXRlKCkpKyJUIitmKHRoaXMuZ2V0VVRDSG91cnMoKSkrIjoiK2YodGhpcy5nZXRVVENNaW51dGVzKCkpKyI6IitmKHRoaXMuZ2V0VVRDU2Vjb25kcygpKSsiWiI6bnVsbH07U3RyaW5nLnByb3RvdHlwZS50b0pTT049TnVtYmVyLnByb3RvdHlwZS50b0pTT049Qm9vbGVhbi5wcm90b3R5cGUudG9KU09OPWZ1bmN0aW9uKGtleSl7cmV0dXJuIHRoaXMudmFsdWVPZigpfX12YXIgY3g9L1tcdTAwMDBcdTAwYWRcdTA2MDAtXHUwNjA0XHUwNzBmXHUxN2I0XHUxN2I1XHUyMDBjLVx1MjAwZlx1MjAyOC1cdTIwMmZcdTIwNjAtXHUyMDZmXHVmZWZmXHVmZmYwLVx1ZmZmZl0vZyxlc2NhcGFibGU9L1tcXFwiXHgwMC1ceDFmXHg3Zi1ceDlmXHUwMGFkXHUwNjAwLVx1MDYwNFx1MDcwZlx1MTdiNFx1MTdiNVx1MjAwYy1cdTIwMGZcdTIwMjgtXHUyMDJmXHUyMDYwLVx1MjA2Zlx1ZmVmZlx1ZmZmMC1cdWZmZmZdL2csZ2FwLGluZGVudCxtZXRhPXsiXGIiOiJcXGIiLCJcdCI6IlxcdCIsIlxuIjoiXFxuIiwiXGYiOiJcXGYiLCJcciI6IlxcciIsJyInOidcXCInLCJcXCI6IlxcXFwifSxyZXA7ZnVuY3Rpb24gcXVvdGUoc3RyaW5nKXtlc2NhcGFibGUubGFzdEluZGV4PTA7cmV0dXJuIGVzY2FwYWJsZS50ZXN0KHN0cmluZyk/JyInK3N0cmluZy5yZXBsYWNlKGVzY2FwYWJsZSxmdW5jdGlvbihhKXt2YXIgYz1tZXRhW2FdO3JldHVybiB0eXBlb2YgYz09PSJzdHJpbmciP2M6IlxcdSIrKCIwMDAwIithLmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpKS5zbGljZSgtNCl9KSsnIic6JyInK3N0cmluZysnIid9ZnVuY3Rpb24gc3RyKGtleSxob2xkZXIpe3ZhciBpLGssdixsZW5ndGgsbWluZD1nYXAscGFydGlhbCx2YWx1ZT1ob2xkZXJba2V5XTtpZih2YWx1ZSYmdHlwZW9mIHZhbHVlPT09Im9iamVjdCImJnR5cGVvZiB2YWx1ZS50b0pTT049PT0iZnVuY3Rpb24iKXt2YWx1ZT12YWx1ZS50b0pTT04oa2V5KX1pZih0eXBlb2YgcmVwPT09ImZ1bmN0aW9uIil7dmFsdWU9cmVwLmNhbGwoaG9sZGVyLGtleSx2YWx1ZSl9c3dpdGNoKHR5cGVvZiB2YWx1ZSl7Y2FzZSJzdHJpbmciOnJldHVybiBxdW90ZSh2YWx1ZSk7Y2FzZSJudW1iZXIiOnJldHVybiBpc0Zpbml0ZSh2YWx1ZSk/U3RyaW5nKHZhbHVlKToibnVsbCI7Y2FzZSJib29sZWFuIjpjYXNlIm51bGwiOnJldHVybiBTdHJpbmcodmFsdWUpO2Nhc2Uib2JqZWN0IjppZighdmFsdWUpe3JldHVybiJudWxsIn1nYXArPWluZGVudDtwYXJ0aWFsPVtdO2lmKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuYXBwbHkodmFsdWUpPT09IltvYmplY3QgQXJyYXldIil7bGVuZ3RoPXZhbHVlLmxlbmd0aDtmb3IoaT0wO2k8bGVuZ3RoO2krPTEpe3BhcnRpYWxbaV09c3RyKGksdmFsdWUpfHwibnVsbCJ9dj1wYXJ0aWFsLmxlbmd0aD09PTA/IltdIjpnYXA/IltcbiIrZ2FwK3BhcnRpYWwuam9pbigiLFxuIitnYXApKyJcbiIrbWluZCsiXSI6IlsiK3BhcnRpYWwuam9pbigiLCIpKyJdIjtnYXA9bWluZDtyZXR1cm4gdn1pZihyZXAmJnR5cGVvZiByZXA9PT0ib2JqZWN0Iil7bGVuZ3RoPXJlcC5sZW5ndGg7Zm9yKGk9MDtpPGxlbmd0aDtpKz0xKXtrPXJlcFtpXTtpZih0eXBlb2Ygaz09PSJzdHJpbmciKXt2PXN0cihrLHZhbHVlKTtpZih2KXtwYXJ0aWFsLnB1c2gocXVvdGUoaykrKGdhcD8iOiAiOiI6Iikrdil9fX19ZWxzZXtmb3IoayBpbiB2YWx1ZSl7aWYoT2JqZWN0Lmhhc093blByb3BlcnR5LmNhbGwodmFsdWUsaykpe3Y9c3RyKGssdmFsdWUpO2lmKHYpe3BhcnRpYWwucHVzaChxdW90ZShrKSsoZ2FwPyI6ICI6IjoiKSt2KX19fX12PXBhcnRpYWwubGVuZ3RoPT09MD8ie30iOmdhcD8ie1xuIitnYXArcGFydGlhbC5qb2luKCIsXG4iK2dhcCkrIlxuIittaW5kKyJ9IjoieyIrcGFydGlhbC5qb2luKCIsIikrIn0iO2dhcD1taW5kO3JldHVybiB2fX1pZih0eXBlb2YgJC5qcXBsb3QuSlNPTi5zdHJpbmdpZnkhPT0iZnVuY3Rpb24iKXskLmpxcGxvdC5KU09OLnN0cmluZ2lmeT1mdW5jdGlvbih2YWx1ZSxyZXBsYWNlcixzcGFjZSl7dmFyIGk7Z2FwPSIiO2luZGVudD0iIjtpZih0eXBlb2Ygc3BhY2U9PT0ibnVtYmVyIil7Zm9yKGk9MDtpPHNwYWNlO2krPTEpe2luZGVudCs9IiAifX1lbHNle2lmKHR5cGVvZiBzcGFjZT09PSJzdHJpbmciKXtpbmRlbnQ9c3BhY2V9fXJlcD1yZXBsYWNlcjtpZihyZXBsYWNlciYmdHlwZW9mIHJlcGxhY2VyIT09ImZ1bmN0aW9uIiYmKHR5cGVvZiByZXBsYWNlciE9PSJvYmplY3QifHx0eXBlb2YgcmVwbGFjZXIubGVuZ3RoIT09Im51bWJlciIpKXt0aHJvdyBuZXcgRXJyb3IoIiQuanFwbG90LkpTT04uc3RyaW5naWZ5Iil9cmV0dXJuIHN0cigiIix7IiI6dmFsdWV9KX19aWYodHlwZW9mICQuanFwbG90LkpTT04ucGFyc2UhPT0iZnVuY3Rpb24iKXskLmpxcGxvdC5KU09OLnBhcnNlPWZ1bmN0aW9uKHRleHQscmV2aXZlcil7dmFyIGo7ZnVuY3Rpb24gd2Fsayhob2xkZXIsa2V5KXt2YXIgayx2LHZhbHVlPWhvbGRlcltrZXldO2lmKHZhbHVlJiZ0eXBlb2YgdmFsdWU9PT0ib2JqZWN0Iil7Zm9yKGsgaW4gdmFsdWUpe2lmKE9iamVjdC5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLGspKXt2PXdhbGsodmFsdWUsayk7aWYodiE9PXVuZGVmaW5lZCl7dmFsdWVba109dn1lbHNle2RlbGV0ZSB2YWx1ZVtrXX19fX1yZXR1cm4gcmV2aXZlci5jYWxsKGhvbGRlcixrZXksdmFsdWUpfXRleHQ9U3RyaW5nKHRleHQpO2N4Lmxhc3RJbmRleD0wO2lmKGN4LnRlc3QodGV4dCkpe3RleHQ9dGV4dC5yZXBsYWNlKGN4LGZ1bmN0aW9uKGEpe3JldHVybiJcXHUiKygiMDAwMCIrYS5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSkuc2xpY2UoLTQpfSl9aWYoL15bXF0sOnt9XHNdKiQvLnRlc3QodGV4dC5yZXBsYWNlKC9cXCg/OlsiXFxcL2JmbnJ0XXx1WzAtOWEtZkEtRl17NH0pL2csIkAiKS5yZXBsYWNlKC8iW14iXFxcblxyXSoifHRydWV8ZmFsc2V8bnVsbHwtP1xkKyg/OlwuXGQqKT8oPzpbZUVdWytcLV0/XGQrKT8vZywiXSIpLnJlcGxhY2UoLyg/Ol58OnwsKSg/OlxzKlxbKSsvZywiIikpKXtqPWV2YWwoIigiK3RleHQrIikiKTtyZXR1cm4gdHlwZW9mIHJldml2ZXI9PT0iZnVuY3Rpb24iP3dhbGsoeyIiOmp9LCIiKTpqfXRocm93IG5ldyBTeW50YXhFcnJvcigiJC5qcXBsb3QuSlNPTi5wYXJzZSIpfX19KShqUXVlcnkpOw==]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oYSl7YS5qcXBsb3QuTG9nQXhpc1JlbmRlcmVyPWZ1bmN0aW9uKCl7YS5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyLmNhbGwodGhpcyk7dGhpcy5heGlzRGVmYXVsdHM9e2Jhc2U6MTAsdGlja0Rpc3RyaWJ1dGlvbjoicG93ZXIifX07YS5qcXBsb3QuTG9nQXhpc1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgYS5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7YS5qcXBsb3QuTG9nQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hLmpxcGxvdC5Mb2dBeGlzUmVuZGVyZXI7YS5qcXBsb3QuTG9nQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGIpe3RoaXMuZHJhd0Jhc2VsaW5lPXRydWU7dGhpcy5taW5vclRpY2tzPSJhdXRvIjt0aGlzLl9zY2FsZWZhY3Q9MTthLmV4dGVuZCh0cnVlLHRoaXMsYik7dGhpcy5fYXV0b0Zvcm1hdFN0cmluZz0iJWQiO3RoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nPWZhbHNlO2Zvcih2YXIgYyBpbiB0aGlzLnJlbmRlcmVyLmF4aXNEZWZhdWx0cyl7aWYodGhpc1tjXT09bnVsbCl7dGhpc1tjXT10aGlzLnJlbmRlcmVyLmF4aXNEZWZhdWx0c1tjXX19dGhpcy5yZXNldERhdGFCb3VuZHMoKX07YS5qcXBsb3QuTG9nQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jcmVhdGVUaWNrcz1mdW5jdGlvbihkKXt2YXIgRz10aGlzLl90aWNrczt2YXIgdz10aGlzLnRpY2tzO3ZhciBzPXRoaXMubmFtZTt2YXIgdT10aGlzLl9kYXRhQm91bmRzO3ZhciBiPSh0aGlzLm5hbWUuY2hhckF0KDApPT09IngiKT90aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aDp0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQ7dmFyIGs7dmFyIE4sdjt2YXIgbSxsO3ZhciBNLEs7dmFyIGc9MzA7dGhpcy5fc2NhbGVmYWN0PShNYXRoLm1heChiLGcrMSktZykvMzAwO2lmKHcubGVuZ3RoKXtmb3IoSz0wO0s8dy5sZW5ndGg7SysrKXt2YXIgQT13W0tdO3ZhciBIPW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTtpZihBLmNvbnN0cnVjdG9yPT1BcnJheSl7SC52YWx1ZT1BWzBdO0gubGFiZWw9QVsxXTtpZighdGhpcy5zaG93VGlja3Mpe0guc2hvd0xhYmVsPWZhbHNlO0guc2hvd01hcms9ZmFsc2V9ZWxzZXtpZighdGhpcy5zaG93VGlja01hcmtzKXtILnNob3dNYXJrPWZhbHNlfX1ILnNldFRpY2soQVswXSx0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goSCl9ZWxzZXtpZihhLmlzUGxhaW5PYmplY3QoQSkpe2EuZXh0ZW5kKHRydWUsSCxBKTtILmF4aXM9dGhpcy5uYW1lO3RoaXMuX3RpY2tzLnB1c2goSCl9ZWxzZXtILnZhbHVlPUE7aWYoIXRoaXMuc2hvd1RpY2tzKXtILnNob3dMYWJlbD1mYWxzZTtILnNob3dNYXJrPWZhbHNlfWVsc2V7aWYoIXRoaXMuc2hvd1RpY2tNYXJrcyl7SC5zaG93TWFyaz1mYWxzZX19SC5zZXRUaWNrKEEsdGhpcy5uYW1lKTt0aGlzLl90aWNrcy5wdXNoKEgpfX19dGhpcy5udW1iZXJUaWNrcz13Lmxlbmd0aDt0aGlzLm1pbj10aGlzLl90aWNrc1swXS52YWx1ZTt0aGlzLm1heD10aGlzLl90aWNrc1t0aGlzLm51bWJlclRpY2tzLTFdLnZhbHVlfWVsc2V7aWYodGhpcy5taW49PW51bGwmJnRoaXMubWF4PT1udWxsKXtOPXUubWluKigyLXRoaXMucGFkTWluKTt2PXUubWF4KnRoaXMucGFkTWF4O2lmKE49PXYpe3ZhciBjPTAuMDU7Tj1OKigxLWMpO3Y9diooMStjKX1pZih0aGlzLm1pbiE9bnVsbCYmdGhpcy5taW48PTApe3Rocm93IG5ldyBFcnJvcigiTG9nIGF4aXMgbWluaW11bSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIil9aWYodGhpcy5tYXghPW51bGwmJnRoaXMubWF4PD0wKXt0aHJvdyBuZXcgRXJyb3IoIkxvZyBheGlzIG1heGltdW0gbXVzdCBiZSBncmVhdGVyIHRoYW4gMCIpfWZ1bmN0aW9uIGYoail7dmFyIGk9TWF0aC5wb3coMTAsTWF0aC5mbG9vcihNYXRoLmxvZyhqKS9NYXRoLkxOMTApKTtyZXR1cm4gTWF0aC5jZWlsKGovaSkqaX1mdW5jdGlvbiB4KGope3ZhciBpPU1hdGgucG93KDEwLE1hdGguZmxvb3IoTWF0aC5sb2coaikvTWF0aC5MTjEwKSk7cmV0dXJuIE1hdGguZmxvb3Ioai9pKSppfXZhciBGLHI7Rj1NYXRoLnBvdyh0aGlzLmJhc2UsTWF0aC5mbG9vcihNYXRoLmxvZyhOKS9NYXRoLmxvZyh0aGlzLmJhc2UpKSk7cj1NYXRoLnBvdyh0aGlzLmJhc2UsTWF0aC5jZWlsKE1hdGgubG9nKHYpL01hdGgubG9nKHRoaXMuYmFzZSkpKTtpZihGPT09MCl7Rj0xfXZhciBFPU1hdGgucm91bmQoTWF0aC5sb2coRikvTWF0aC5MTjEwKTtpZih0aGlzLnRpY2tPcHRpb25zPT1udWxsfHwhdGhpcy50aWNrT3B0aW9ucy5mb3JtYXRTdHJpbmcpe3RoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nPXRydWV9dGhpcy5taW49Rjt0aGlzLm1heD1yO3ZhciBxPXRoaXMubWF4LXRoaXMubWluO3ZhciBDPSh0aGlzLm1pbm9yVGlja3M9PT0iYXV0byIpPzA6dGhpcy5taW5vclRpY2tzO3ZhciBoO2lmKHRoaXMubnVtYmVyVGlja3M9PW51bGwpe2lmKGI+MTQwKXtoPU1hdGgucm91bmQoTWF0aC5sb2codGhpcy5tYXgvdGhpcy5taW4pL01hdGgubG9nKHRoaXMuYmFzZSkrMSk7aWYoaDwyKXtoPTJ9aWYoQz09PTApe3ZhciBvPWIvKGgtMSk7aWYobzwxMDApe0M9MH1lbHNle2lmKG88MTkwKXtDPTF9ZWxzZXtpZihvPDI1MCl7Qz0zfWVsc2V7aWYobzw2MDApe0M9NH1lbHNle0M9OX19fX19fWVsc2V7aD0yO2lmKEM9PT0wKXtDPTF9Qz0wfX1lbHNle2g9dGhpcy5udW1iZXJUaWNrc31pZihFPj0wJiZDIT09Myl7dGhpcy5fYXV0b0Zvcm1hdFN0cmluZz0iJWQifWVsc2V7aWYoRTw9MCYmQz09PTMpe3ZhciBvPS0oRS0xKTt0aGlzLl9hdXRvRm9ybWF0U3RyaW5nPSIlLiIrTWF0aC5hYnMoRS0xKSsiZiJ9ZWxzZXtpZihFPDApe3ZhciBvPS1FO3RoaXMuX2F1dG9Gb3JtYXRTdHJpbmc9IiUuIitNYXRoLmFicyhFKSsiZiJ9ZWxzZXt0aGlzLl9hdXRvRm9ybWF0U3RyaW5nPSIlZCJ9fX12YXIgTyxILHoscCxuLGs7Zm9yKHZhciBLPTA7SzxoO0srKyl7TT1NYXRoLnBvdyh0aGlzLmJhc2UsSy1oKzEpKnRoaXMubWF4O0g9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2lmKHRoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nKXtILmZvcm1hdFN0cmluZz10aGlzLl9hdXRvRm9ybWF0U3RyaW5nfWlmKCF0aGlzLnNob3dUaWNrcyl7SC5zaG93TGFiZWw9ZmFsc2U7SC5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe0guc2hvd01hcms9ZmFsc2V9fUguc2V0VGljayhNLHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChIKTtpZihDJiZLPGgtMSl7cD1NYXRoLnBvdyh0aGlzLmJhc2UsSy1oKzIpKnRoaXMubWF4O249cC1NO2s9cC8oQysxKTtmb3IodmFyIEo9Qy0xO0o+PTA7Si0tKXt6PXAtayooSisxKTtIPW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTtpZih0aGlzLl9vdmVycmlkZUZvcm1hdFN0cmluZyYmdGhpcy5fYXV0b0Zvcm1hdFN0cmluZyE9IiIpe0guZm9ybWF0U3RyaW5nPXRoaXMuX2F1dG9Gb3JtYXRTdHJpbmd9aWYoIXRoaXMuc2hvd1RpY2tzKXtILnNob3dMYWJlbD1mYWxzZTtILnNob3dNYXJrPWZhbHNlfWVsc2V7aWYoIXRoaXMuc2hvd1RpY2tNYXJrcyl7SC5zaG93TWFyaz1mYWxzZX19SC5zZXRUaWNrKHosdGhpcy5uYW1lKTt0aGlzLl90aWNrcy5wdXNoKEgpfX19fWVsc2V7aWYodGhpcy5taW4hPW51bGwmJnRoaXMubWF4IT1udWxsKXt2YXIgeT1hLmV4dGVuZCh0cnVlLHt9LHRoaXMudGlja09wdGlvbnMse25hbWU6dGhpcy5uYW1lLHZhbHVlOm51bGx9KTt2YXIgSSxlO2lmKHRoaXMubnVtYmVyVGlja3M9PW51bGwmJnRoaXMudGlja0ludGVydmFsPT1udWxsKXt2YXIgRD1NYXRoLm1heChiLGcrMSk7dmFyIEw9TWF0aC5jZWlsKChELWcpLzM1KzEpO3ZhciBCPWEuanFwbG90LkxpbmVhclRpY2tHZW5lcmF0b3IuYmVzdENvbnN0cmFpbmVkSW50ZXJ2YWwodGhpcy5taW4sdGhpcy5tYXgsTCk7dGhpcy5fYXV0b0Zvcm1hdFN0cmluZz1CWzNdO0k9QlsyXTtlPUJbNF07Zm9yKHZhciBLPTA7SzxJO0srKyl7eS52YWx1ZT10aGlzLm1pbitLKmU7SD1uZXcgdGhpcy50aWNrUmVuZGVyZXIoeSk7aWYodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcmJnRoaXMuX2F1dG9Gb3JtYXRTdHJpbmchPSIiKXtILmZvcm1hdFN0cmluZz10aGlzLl9hdXRvRm9ybWF0U3RyaW5nfWlmKCF0aGlzLnNob3dUaWNrcyl7SC5zaG93TGFiZWw9ZmFsc2U7SC5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe0guc2hvd01hcms9ZmFsc2V9fXRoaXMuX3RpY2tzLnB1c2goSCl9fWVsc2V7aWYodGhpcy5udW1iZXJUaWNrcyE9bnVsbCYmdGhpcy50aWNrSW50ZXJ2YWwhPW51bGwpe0k9dGhpcy5udW1iZXJUaWNrcztmb3IodmFyIEs9MDtLPEk7SysrKXt5LnZhbHVlPXRoaXMubWluK0sqdGhpcy50aWNrSW50ZXJ2YWw7SD1uZXcgdGhpcy50aWNrUmVuZGVyZXIoeSk7aWYodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcmJnRoaXMuX2F1dG9Gb3JtYXRTdHJpbmchPSIiKXtILmZvcm1hdFN0cmluZz10aGlzLl9hdXRvRm9ybWF0U3RyaW5nfWlmKCF0aGlzLnNob3dUaWNrcyl7SC5zaG93TGFiZWw9ZmFsc2U7SC5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe0guc2hvd01hcms9ZmFsc2V9fXRoaXMuX3RpY2tzLnB1c2goSCl9fX19fX19O2EuanFwbG90LkxvZ0F4aXNSZW5kZXJlci5wcm90b3R5cGUucGFjaz1mdW5jdGlvbihmLGUpe3ZhciByPXBhcnNlSW50KHRoaXMuYmFzZSwxMCk7dmFyIHk9dGhpcy5fdGlja3M7dmFyIGQ9ZnVuY3Rpb24oaCl7cmV0dXJuIE1hdGgubG9nKGgpL01hdGgubG9nKHIpfTt2YXIgYj1mdW5jdGlvbihoKXtyZXR1cm4gTWF0aC5wb3coTWF0aC5FLChNYXRoLmxvZyhyKSpoKSl9O3ZhciB1PWQodGhpcy5tYXgpO3ZhciBzPWQodGhpcy5taW4pO3ZhciBtPWUubWF4O3ZhciBrPWUubWluO3ZhciBvPSh0aGlzLl9sYWJlbD09bnVsbCk/ZmFsc2U6dGhpcy5fbGFiZWwuc2hvdztmb3IodmFyIHEgaW4gZil7dGhpcy5fZWxlbS5jc3MocSxmW3FdKX10aGlzLl9vZmZzZXRzPWU7dmFyIGc9bS1rO3ZhciBqPXUtczt0aGlzLnAydT1mdW5jdGlvbihoKXtyZXR1cm4gYigoaC1rKSpqL2crcyl9O3RoaXMudTJwPWZ1bmN0aW9uKGgpe3JldHVybihkKGgpLXMpKmcvaitrfTtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe3RoaXMuc2VyaWVzX3UycD1mdW5jdGlvbihoKXtyZXR1cm4oZChoKS1zKSpnL2p9O3RoaXMuc2VyaWVzX3AydT1mdW5jdGlvbihoKXtyZXR1cm4gYihoKmovZytzKX19ZWxzZXt0aGlzLnNlcmllc191MnA9ZnVuY3Rpb24oaCl7cmV0dXJuKGQoaCktdSkqZy9qfTt0aGlzLnNlcmllc19wMnU9ZnVuY3Rpb24oaCl7cmV0dXJuIGIoaCpqL2crdSl9fWlmKHRoaXMuc2hvdyl7aWYodGhpcy5uYW1lPT0ieGF4aXMifHx0aGlzLm5hbWU9PSJ4MmF4aXMiKXtmb3IodmFyIHY9MDt2PHkubGVuZ3RoO3YrKyl7dmFyIG49eVt2XTtpZihuLnNob3cmJm4uc2hvd0xhYmVsKXt2YXIgYztpZihuLmNvbnN0cnVjdG9yPT1hLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyJiZuLmFuZ2xlKXtzd2l0Y2gobi5sYWJlbFBvc2l0aW9uKXtjYXNlImF1dG8iOmlmKG4uYW5nbGU8MCl7Yz0tbi5nZXRXaWR0aCgpK24uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4oLW4uX3RleHRSZW5kZXJlci5hbmdsZSkvMn1lbHNle2M9LW4uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4obi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWJyZWFrO2Nhc2UiZW5kIjpjPS1uLmdldFdpZHRoKCkrbi5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbigtbi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yO2JyZWFrO2Nhc2Uic3RhcnQiOmM9LW4uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4obi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yO2JyZWFrO2Nhc2UibWlkZGxlIjpjPS1uLmdldFdpZHRoKCkvMituLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKC1uLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzI7YnJlYWs7ZGVmYXVsdDpjPS1uLmdldFdpZHRoKCkvMituLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKC1uLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzI7YnJlYWt9fWVsc2V7Yz0tbi5nZXRXaWR0aCgpLzJ9dmFyIHo9dGhpcy51MnAobi52YWx1ZSkrYysicHgiO24uX2VsZW0uY3NzKCJsZWZ0Iix6KTtuLnBhY2soKX19aWYobyl7dmFyIGw9dGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoImxlZnQiLGsrZy8yLWwvMisicHgiKTtpZih0aGlzLm5hbWU9PSJ4YXhpcyIpe3RoaXMuX2xhYmVsLl9lbGVtLmNzcygiYm90dG9tIiwiMHB4Iil9ZWxzZXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoInRvcCIsIjBweCIpfXRoaXMuX2xhYmVsLnBhY2soKX19ZWxzZXtmb3IodmFyIHY9MDt2PHkubGVuZ3RoO3YrKyl7dmFyIG49eVt2XTtpZihuLnNob3cmJm4uc2hvd0xhYmVsKXt2YXIgYztpZihuLmNvbnN0cnVjdG9yPT1hLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyJiZuLmFuZ2xlKXtzd2l0Y2gobi5sYWJlbFBvc2l0aW9uKXtjYXNlImF1dG8iOmNhc2UiZW5kIjppZihuLmFuZ2xlPDApe2M9LW4uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5jb3MoLW4uX3RleHRSZW5kZXJlci5hbmdsZSkvMn1lbHNle2M9LW4uZ2V0SGVpZ2h0KCkrbi5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLmNvcyhuLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9YnJlYWs7Y2FzZSJzdGFydCI6aWYobi5hbmdsZT4wKXtjPS1uLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguY29zKC1uLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9ZWxzZXtjPS1uLmdldEhlaWdodCgpK24uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5jb3Mobi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWJyZWFrO2Nhc2UibWlkZGxlIjpjPS1uLmdldEhlaWdodCgpLzI7YnJlYWs7ZGVmYXVsdDpjPS1uLmdldEhlaWdodCgpLzI7YnJlYWt9fWVsc2V7Yz0tbi5nZXRIZWlnaHQoKS8yfXZhciB6PXRoaXMudTJwKG4udmFsdWUpK2MrInB4IjtuLl9lbGVtLmNzcygidG9wIix6KTtuLnBhY2soKX19aWYobyl7dmFyIHg9dGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJIZWlnaHQodHJ1ZSk7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJ0b3AiLG0tZy8yLXgvMisicHgiKTtpZih0aGlzLm5hbWU9PSJ5YXhpcyIpe3RoaXMuX2xhYmVsLl9lbGVtLmNzcygibGVmdCIsIjBweCIpfWVsc2V7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJyaWdodCIsIjBweCIpfXRoaXMuX2xhYmVsLnBhY2soKX19fX19KShqUXVlcnkpOw==]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oYSl7YS5qcXBsb3QuTWVra29BeGlzUmVuZGVyZXI9ZnVuY3Rpb24oKXt9O2EuanFwbG90Lk1la2tvQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGMpe3RoaXMudGlja01vZGU7dGhpcy5iYXJMYWJlbFJlbmRlcmVyPWEuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyO3RoaXMuYmFyTGFiZWxzPXRoaXMuYmFyTGFiZWxzfHxbXTt0aGlzLmJhckxhYmVsT3B0aW9ucz17fTt0aGlzLnRpY2tPcHRpb25zPWEuZXh0ZW5kKHRydWUse3Nob3dHcmlkbGluZTpmYWxzZX0sdGhpcy50aWNrT3B0aW9ucyk7dGhpcy5fYmFyTGFiZWxzPVtdO2EuZXh0ZW5kKHRydWUsdGhpcyxjKTtpZih0aGlzLm5hbWU9PSJ5YXhpcyIpe3RoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nPXRoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nfHwiJWQlIn12YXIgYj10aGlzLl9kYXRhQm91bmRzO2IubWluPTA7aWYodGhpcy5uYW1lPT0ieWF4aXMifHx0aGlzLm5hbWU9PSJ5MmF4aXMiKXtiLm1heD0xMDA7dGhpcy50aWNrTW9kZT0iZXZlbiJ9ZWxzZXtpZih0aGlzLm5hbWU9PSJ4YXhpcyIpe3RoaXMudGlja01vZGU9KHRoaXMudGlja01vZGU9PW51bGwpPyJiYXIiOnRoaXMudGlja01vZGU7Zm9yKHZhciBkPTA7ZDx0aGlzLl9zZXJpZXMubGVuZ3RoO2QrKyl7Yi5tYXgrPXRoaXMuX3Nlcmllc1tkXS5fc3VteX19ZWxzZXtpZih0aGlzLm5hbWU9PSJ4MmF4aXMiKXt0aGlzLnRpY2tNb2RlPSh0aGlzLnRpY2tNb2RlPT1udWxsKT8iZXZlbiI6dGhpcy50aWNrTW9kZTtmb3IodmFyIGQ9MDtkPHRoaXMuX3Nlcmllcy5sZW5ndGg7ZCsrKXtiLm1heCs9dGhpcy5fc2VyaWVzW2RdLl9zdW15fX19fX07YS5qcXBsb3QuTWVra29BeGlzUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oYixqKXtpZih0aGlzLnNob3cpe3RoaXMucmVuZGVyZXIuY3JlYXRlVGlja3MuY2FsbCh0aGlzKTt2YXIgaD0wO3ZhciBjO3ZhciBnPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO3RoaXMuX2VsZW09YShnKTt0aGlzLl9lbGVtLmFkZENsYXNzKCJqcXBsb3QtYXhpcyBqcXBsb3QtIit0aGlzLm5hbWUpO3RoaXMuX2VsZW0uY3NzKCJwb3NpdGlvbiIsImFic29sdXRlIik7Zz1udWxsO2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7dGhpcy5fZWxlbS53aWR0aCh0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCl9ZWxzZXt0aGlzLl9lbGVtLmhlaWdodCh0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQpfXRoaXMubGFiZWxPcHRpb25zLmF4aXM9dGhpcy5uYW1lO3RoaXMuX2xhYmVsPW5ldyB0aGlzLmxhYmVsUmVuZGVyZXIodGhpcy5sYWJlbE9wdGlvbnMpO2lmKHRoaXMuX2xhYmVsLnNob3cpe3RoaXMuX2VsZW0uYXBwZW5kKHRoaXMuX2xhYmVsLmRyYXcoYikpfXZhciBmLGUsZztpZih0aGlzLnNob3dUaWNrcyl7Zj10aGlzLl90aWNrcztmb3IodmFyIGQ9MDtkPGYubGVuZ3RoO2QrKyl7ZT1mW2RdO2lmKGUuc2hvd0xhYmVsJiYoIWUuaXNNaW5vclRpY2t8fHRoaXMuc2hvd01pbm9yVGlja3MpKXt0aGlzLl9lbGVtLmFwcGVuZChlLmRyYXcoYikpfX19Zm9yKGQ9MDtkPHRoaXMuYmFyTGFiZWxzLmxlbmd0aDtkKyspe3RoaXMuYmFyTGFiZWxPcHRpb25zLmF4aXM9dGhpcy5uYW1lO3RoaXMuYmFyTGFiZWxPcHRpb25zLmxhYmVsPXRoaXMuYmFyTGFiZWxzW2RdO3RoaXMuX2JhckxhYmVscy5wdXNoKG5ldyB0aGlzLmJhckxhYmVsUmVuZGVyZXIodGhpcy5iYXJMYWJlbE9wdGlvbnMpKTtpZih0aGlzLnRpY2tNb2RlIT0iYmFyIil7dGhpcy5fYmFyTGFiZWxzW2RdLnNob3c9ZmFsc2V9aWYodGhpcy5fYmFyTGFiZWxzW2RdLnNob3cpe3ZhciBnPXRoaXMuX2JhckxhYmVsc1tkXS5kcmF3KGIsaik7Zy5yZW1vdmVDbGFzcygianFwbG90LSIrdGhpcy5uYW1lKyItbGFiZWwiKTtnLmFkZENsYXNzKCJqcXBsb3QtIit0aGlzLm5hbWUrIi10aWNrIik7Zy5hZGRDbGFzcygianFwbG90LW1la2tvLWJhckxhYmVsIik7Zy5hcHBlbmRUbyh0aGlzLl9lbGVtKTtnPW51bGx9fX1yZXR1cm4gdGhpcy5fZWxlbX07YS5qcXBsb3QuTWVra29BeGlzUmVuZGVyZXIucHJvdG90eXBlLnJlc2V0PWZ1bmN0aW9uKCl7dGhpcy5taW49dGhpcy5fbWluO3RoaXMubWF4PXRoaXMuX21heDt0aGlzLnRpY2tJbnRlcnZhbD10aGlzLl90aWNrSW50ZXJ2YWw7dGhpcy5udW1iZXJUaWNrcz10aGlzLl9udW1iZXJUaWNrc307YS5qcXBsb3QuTWVra29BeGlzUmVuZGVyZXIucHJvdG90eXBlLnNldD1mdW5jdGlvbigpe3ZhciBrPTA7dmFyIGQ7dmFyIGM9MDt2YXIgaj0wO3ZhciBiPSh0aGlzLl9sYWJlbD09bnVsbCk/ZmFsc2U6dGhpcy5fbGFiZWwuc2hvdztpZih0aGlzLnNob3cmJnRoaXMuc2hvd1RpY2tzKXt2YXIgZz10aGlzLl90aWNrcztmb3IodmFyIGY9MDtmPGcubGVuZ3RoO2YrKyl7dmFyIGU9Z1tmXTtpZihlLnNob3dMYWJlbCYmKCFlLmlzTWlub3JUaWNrfHx0aGlzLnNob3dNaW5vclRpY2tzKSl7aWYodGhpcy5uYW1lPT0ieGF4aXMifHx0aGlzLm5hbWU9PSJ4MmF4aXMiKXtkPWUuX2VsZW0ub3V0ZXJIZWlnaHQodHJ1ZSl9ZWxzZXtkPWUuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKX1pZihkPmspe2s9ZH19fWlmKGIpe2M9dGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKTtqPXRoaXMuX2xhYmVsLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpfWlmKHRoaXMubmFtZT09InhheGlzIil7az1rK2o7dGhpcy5fZWxlbS5jc3Moe2hlaWdodDprKyJweCIsbGVmdDoiMHB4Iixib3R0b206IjBweCJ9KX1lbHNle2lmKHRoaXMubmFtZT09IngyYXhpcyIpe2s9aytqO3RoaXMuX2VsZW0uY3NzKHtoZWlnaHQ6aysicHgiLGxlZnQ6IjBweCIsdG9wOiIwcHgifSl9ZWxzZXtpZih0aGlzLm5hbWU9PSJ5YXhpcyIpe2s9aytjO3RoaXMuX2VsZW0uY3NzKHt3aWR0aDprKyJweCIsbGVmdDoiMHB4Iix0b3A6IjBweCJ9KTtpZihiJiZ0aGlzLl9sYWJlbC5jb25zdHJ1Y3Rvcj09YS5qcXBsb3QuQXhpc0xhYmVsUmVuZGVyZXIpe3RoaXMuX2xhYmVsLl9lbGVtLmNzcygid2lkdGgiLGMrInB4Iil9fWVsc2V7az1rK2M7dGhpcy5fZWxlbS5jc3Moe3dpZHRoOmsrInB4IixyaWdodDoiMHB4Iix0b3A6IjBweCJ9KTtpZihiJiZ0aGlzLl9sYWJlbC5jb25zdHJ1Y3Rvcj09YS5qcXBsb3QuQXhpc0xhYmVsUmVuZGVyZXIpe3RoaXMuX2xhYmVsLl9lbGVtLmNzcygid2lkdGgiLGMrInB4Iil9fX19fX07YS5qcXBsb3QuTWVra29BeGlzUmVuZGVyZXIucHJvdG90eXBlLmNyZWF0ZVRpY2tzPWZ1bmN0aW9uKCl7dmFyIHo9dGhpcy5fdGlja3M7dmFyIHc9dGhpcy50aWNrczt2YXIgQj10aGlzLm5hbWU7dmFyIHk9dGhpcy5fZGF0YUJvdW5kczt2YXIgcCx4O3ZhciBuLHI7dmFyIGQsYzt2YXIgaCxiLHMscTtpZih3Lmxlbmd0aCl7Zm9yKHM9MDtzPHcubGVuZ3RoO3MrKyl7dmFyIGU9d1tzXTt2YXIgaD1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7aWYoZS5jb25zdHJ1Y3Rvcj09QXJyYXkpe2gudmFsdWU9ZVswXTtoLmxhYmVsPWVbMV07aWYoIXRoaXMuc2hvd1RpY2tzKXtoLnNob3dMYWJlbD1mYWxzZTtoLnNob3dNYXJrPWZhbHNlfWVsc2V7aWYoIXRoaXMuc2hvd1RpY2tNYXJrcyl7aC5zaG93TWFyaz1mYWxzZX19aC5zZXRUaWNrKGVbMF0sdGhpcy5uYW1lKTt0aGlzLl90aWNrcy5wdXNoKGgpfWVsc2V7aC52YWx1ZT1lO2lmKCF0aGlzLnNob3dUaWNrcyl7aC5zaG93TGFiZWw9ZmFsc2U7aC5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe2guc2hvd01hcms9ZmFsc2V9fWguc2V0VGljayhlLHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChoKX19dGhpcy5udW1iZXJUaWNrcz13Lmxlbmd0aDt0aGlzLm1pbj10aGlzLl90aWNrc1swXS52YWx1ZTt0aGlzLm1heD10aGlzLl90aWNrc1t0aGlzLm51bWJlclRpY2tzLTFdLnZhbHVlO3RoaXMudGlja0ludGVydmFsPSh0aGlzLm1heC10aGlzLm1pbikvKHRoaXMubnVtYmVyVGlja3MtMSl9ZWxzZXtpZihCPT0ieGF4aXMifHxCPT0ieDJheGlzIil7cD10aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aH1lbHNle3A9dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0fWlmKHRoaXMubWluIT1udWxsJiZ0aGlzLm1heCE9bnVsbCYmdGhpcy5udW1iZXJUaWNrcyE9bnVsbCl7dGhpcy50aWNrSW50ZXJ2YWw9bnVsbH1uPSh0aGlzLm1pbiE9bnVsbCk/dGhpcy5taW46eS5taW47cj0odGhpcy5tYXghPW51bGwpP3RoaXMubWF4OnkubWF4O2lmKG49PXIpe3ZhciBnPTAuMDU7aWYobj4wKXtnPU1hdGgubWF4KE1hdGgubG9nKG4pL01hdGguTE4xMCwwLjA1KX1uLT1nO3IrPWd9dmFyIGs9ci1uO3ZhciBtLG87dmFyIHYsbCx1O3ZhciBmPVszLDUsNiwxMSwyMV07aWYodGhpcy5uYW1lPT0ieWF4aXMifHx0aGlzLm5hbWU9PSJ5MmF4aXMiKXt0aGlzLm1pbj0wO3RoaXMubWF4PTEwMDtpZighdGhpcy5udW1iZXJUaWNrcyl7aWYodGhpcy50aWNrSW50ZXJ2YWwpe3RoaXMubnVtYmVyVGlja3M9MytNYXRoLmNlaWwoay90aGlzLnRpY2tJbnRlcnZhbCl9ZWxzZXt2PTIrTWF0aC5jZWlsKChwLSh0aGlzLnRpY2tTcGFjaW5nLTEpKS90aGlzLnRpY2tTcGFjaW5nKTtmb3Iocz0wO3M8Zi5sZW5ndGg7cysrKXt1PXYvZltzXTtpZih1PT0xKXt0aGlzLm51bWJlclRpY2tzPWZbc107YnJlYWt9ZWxzZXtpZih1PjEpe2w9dTtjb250aW51ZX1lbHNle2lmKHU8MSl7aWYoTWF0aC5hYnMobC0xKTxNYXRoLmFicyh1LTEpKXt0aGlzLm51bWJlclRpY2tzPWZbcy0xXTticmVha31lbHNle3RoaXMubnVtYmVyVGlja3M9ZltzXTticmVha319ZWxzZXtpZihzPT1mLmxlbmd0aC0xKXt0aGlzLm51bWJlclRpY2tzPWZbc119fX19fXRoaXMudGlja0ludGVydmFsPWsvKHRoaXMubnVtYmVyVGlja3MtMSl9fWVsc2V7dGhpcy50aWNrSW50ZXJ2YWw9ay8odGhpcy5udW1iZXJUaWNrcy0xKX1mb3IodmFyIHM9MDtzPHRoaXMubnVtYmVyVGlja3M7cysrKXtiPXRoaXMubWluK3MqdGhpcy50aWNrSW50ZXJ2YWw7aD1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7aWYoIXRoaXMuc2hvd1RpY2tzKXtoLnNob3dMYWJlbD1mYWxzZTtoLnNob3dNYXJrPWZhbHNlfWVsc2V7aWYoIXRoaXMuc2hvd1RpY2tNYXJrcyl7aC5zaG93TWFyaz1mYWxzZX19aC5zZXRUaWNrKGIsdGhpcy5uYW1lKTt0aGlzLl90aWNrcy5wdXNoKGgpfX1lbHNle2lmKHRoaXMudGlja01vZGU9PSJiYXIiKXt0aGlzLm1pbj0wO3RoaXMubnVtYmVyVGlja3M9dGhpcy5fc2VyaWVzLmxlbmd0aCsxO2g9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2lmKCF0aGlzLnNob3dUaWNrcyl7aC5zaG93TGFiZWw9ZmFsc2U7aC5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe2guc2hvd01hcms9ZmFsc2V9fWguc2V0VGljaygwLHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChoKTt2PTA7Zm9yKHM9MTtzPHRoaXMubnVtYmVyVGlja3M7cysrKXt2Kz10aGlzLl9zZXJpZXNbcy0xXS5fc3VteTtoPW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTtpZighdGhpcy5zaG93VGlja3Mpe2guc2hvd0xhYmVsPWZhbHNlO2guc2hvd01hcms9ZmFsc2V9ZWxzZXtpZighdGhpcy5zaG93VGlja01hcmtzKXtoLnNob3dNYXJrPWZhbHNlfX1oLnNldFRpY2sodix0aGlzLm5hbWUpO3RoaXMuX3RpY2tzLnB1c2goaCl9dGhpcy5tYXg9dGhpcy5tYXh8fHY7aWYodGhpcy5tYXg+dil7aD1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7aWYoIXRoaXMuc2hvd1RpY2tzKXtoLnNob3dMYWJlbD1mYWxzZTtoLnNob3dNYXJrPWZhbHNlfWVsc2V7aWYoIXRoaXMuc2hvd1RpY2tNYXJrcyl7aC5zaG93TWFyaz1mYWxzZX19aC5zZXRUaWNrKHRoaXMubWF4LHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChoKX19ZWxzZXtpZih0aGlzLnRpY2tNb2RlPT0iZXZlbiIpe3RoaXMubWluPTA7dGhpcy5tYXg9dGhpcy5tYXh8fHkubWF4O3ZhciBBPTIrTWF0aC5jZWlsKChwLSh0aGlzLnRpY2tTcGFjaW5nLTEpKS90aGlzLnRpY2tTcGFjaW5nKTtrPXRoaXMubWF4LXRoaXMubWluO3RoaXMubnVtYmVyVGlja3M9QTt0aGlzLnRpY2tJbnRlcnZhbD1rLyh0aGlzLm51bWJlclRpY2tzLTEpO2ZvcihzPTA7czx0aGlzLm51bWJlclRpY2tzO3MrKyl7Yj10aGlzLm1pbitzKnRoaXMudGlja0ludGVydmFsO2g9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO2lmKCF0aGlzLnNob3dUaWNrcyl7aC5zaG93TGFiZWw9ZmFsc2U7aC5zaG93TWFyaz1mYWxzZX1lbHNle2lmKCF0aGlzLnNob3dUaWNrTWFya3Mpe2guc2hvd01hcms9ZmFsc2V9fWguc2V0VGljayhiLHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaChoKX19fX19fTthLmpxcGxvdC5NZWtrb0F4aXNSZW5kZXJlci5wcm90b3R5cGUucGFjaz1mdW5jdGlvbihlLGQpe3ZhciBDPXRoaXMuX3RpY2tzO3ZhciB4PXRoaXMubWF4O3ZhciB2PXRoaXMubWluO3ZhciBtPWQubWF4O3ZhciBqPWQubWluO3ZhciBvPSh0aGlzLl9sYWJlbD09bnVsbCk/ZmFsc2U6dGhpcy5fbGFiZWwuc2hvdztmb3IodmFyIHMgaW4gZSl7dGhpcy5fZWxlbS5jc3MocyxlW3NdKX10aGlzLl9vZmZzZXRzPWQ7dmFyIGY9bS1qO3ZhciBnPXgtdjt0aGlzLnAydT1mdW5jdGlvbihiKXtyZXR1cm4oYi1qKSpnL2Yrdn07dGhpcy51MnA9ZnVuY3Rpb24oYil7cmV0dXJuKGItdikqZi9nK2p9O2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7dGhpcy5zZXJpZXNfdTJwPWZ1bmN0aW9uKGIpe3JldHVybihiLXYpKmYvZ307dGhpcy5zZXJpZXNfcDJ1PWZ1bmN0aW9uKGIpe3JldHVybiBiKmcvZit2fX1lbHNle3RoaXMuc2VyaWVzX3UycD1mdW5jdGlvbihiKXtyZXR1cm4oYi14KSpmL2d9O3RoaXMuc2VyaWVzX3AydT1mdW5jdGlvbihiKXtyZXR1cm4gYipnL2YreH19aWYodGhpcy5zaG93KXtpZih0aGlzLm5hbWU9PSJ4YXhpcyJ8fHRoaXMubmFtZT09IngyYXhpcyIpe2Zvcih2YXIgeT0wO3k8Qy5sZW5ndGg7eSsrKXt2YXIgbj1DW3ldO2lmKG4uc2hvdyYmbi5zaG93TGFiZWwpe3ZhciBjO2lmKG4uY29uc3RydWN0b3I9PWEuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXImJm4uYW5nbGUpe3ZhciBBPSh0aGlzLm5hbWU9PSJ4YXhpcyIpPzE6LTE7c3dpdGNoKG4ubGFiZWxQb3NpdGlvbil7Y2FzZSJhdXRvIjppZihBKm4uYW5nbGU8MCl7Yz0tbi5nZXRXaWR0aCgpK24uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4oLW4uX3RleHRSZW5kZXJlci5hbmdsZSkvMn1lbHNle2M9LW4uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4obi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWJyZWFrO2Nhc2UiZW5kIjpjPS1uLmdldFdpZHRoKCkrbi5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbigtbi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yO2JyZWFrO2Nhc2Uic3RhcnQiOmM9LW4uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4obi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yO2JyZWFrO2Nhc2UibWlkZGxlIjpjPS1uLmdldFdpZHRoKCkvMituLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKC1uLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzI7YnJlYWs7ZGVmYXVsdDpjPS1uLmdldFdpZHRoKCkvMituLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKC1uLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzI7YnJlYWt9fWVsc2V7Yz0tbi5nZXRXaWR0aCgpLzJ9dmFyIEQ9dGhpcy51MnAobi52YWx1ZSkrYysicHgiO24uX2VsZW0uY3NzKCJsZWZ0IixEKTtuLnBhY2soKX19dmFyIGs7aWYobyl7az10aGlzLl9sYWJlbC5fZWxlbS5vdXRlcldpZHRoKHRydWUpO3RoaXMuX2xhYmVsLl9lbGVtLmNzcygibGVmdCIsaitmLzItay8yKyJweCIpO2lmKHRoaXMubmFtZT09InhheGlzIil7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJib3R0b20iLCIwcHgiKX1lbHNle3RoaXMuX2xhYmVsLl9lbGVtLmNzcygidG9wIiwiMHB4Iil9dGhpcy5fbGFiZWwucGFjaygpfXZhciBCLHUscTtmb3IodmFyIHk9MDt5PHRoaXMuYmFyTGFiZWxzLmxlbmd0aDt5Kyspe0I9dGhpcy5fYmFyTGFiZWxzW3ldO2lmKEIuc2hvdyl7az1CLmdldFdpZHRoKCk7dT10aGlzLl90aWNrc1t5XS5nZXRMZWZ0KCkrdGhpcy5fdGlja3NbeV0uZ2V0V2lkdGgoKTtxPXRoaXMuX3RpY2tzW3krMV0uZ2V0TGVmdCgpO0IuX2VsZW0uY3NzKCJsZWZ0IiwocSt1LWspLzIrInB4Iik7Qi5fZWxlbS5jc3MoInRvcCIsdGhpcy5fdGlja3NbeV0uX2VsZW0uY3NzKCJ0b3AiKSk7Qi5wYWNrKCl9fX1lbHNle2Zvcih2YXIgeT0wO3k8Qy5sZW5ndGg7eSsrKXt2YXIgbj1DW3ldO2lmKG4uc2hvdyYmbi5zaG93TGFiZWwpe3ZhciBjO2lmKG4uY29uc3RydWN0b3I9PWEuanFwbG90LkNhbnZhc0F4aXNUaWNrUmVuZGVyZXImJm4uYW5nbGUpe3ZhciBBPSh0aGlzLm5hbWU9PSJ5YXhpcyIpPzE6LTE7c3dpdGNoKG4ubGFiZWxQb3NpdGlvbil7Y2FzZSJhdXRvIjpjYXNlImVuZCI6aWYoQSpuLmFuZ2xlPDApe2M9LW4uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5jb3MoLW4uX3RleHRSZW5kZXJlci5hbmdsZSkvMn1lbHNle2M9LW4uZ2V0SGVpZ2h0KCkrbi5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLmNvcyhuLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9YnJlYWs7Y2FzZSJzdGFydCI6aWYobi5hbmdsZT4wKXtjPS1uLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguY29zKC1uLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9ZWxzZXtjPS1uLmdldEhlaWdodCgpK24uX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5jb3Mobi5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWJyZWFrO2Nhc2UibWlkZGxlIjpjPS1uLmdldEhlaWdodCgpLzI7YnJlYWs7ZGVmYXVsdDpjPS1uLmdldEhlaWdodCgpLzI7YnJlYWt9fWVsc2V7Yz0tbi5nZXRIZWlnaHQoKS8yfXZhciBEPXRoaXMudTJwKG4udmFsdWUpK2MrInB4IjtuLl9lbGVtLmNzcygidG9wIixEKTtuLnBhY2soKX19aWYobyl7dmFyIHo9dGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJIZWlnaHQodHJ1ZSk7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJ0b3AiLG0tZi8yLXovMisicHgiKTtpZih0aGlzLm5hbWU9PSJ5YXhpcyIpe3RoaXMuX2xhYmVsLl9lbGVtLmNzcygibGVmdCIsIjBweCIpfWVsc2V7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJyaWdodCIsIjBweCIpfXRoaXMuX2xhYmVsLnBhY2soKX19fX19KShqUXVlcnkpOw==]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oYil7Yi5qcXBsb3QuTWVra29SZW5kZXJlcj1mdW5jdGlvbigpe3RoaXMuc2hhcGVSZW5kZXJlcj1uZXcgYi5qcXBsb3QuU2hhcGVSZW5kZXJlcigpO3RoaXMuYm9yZGVyQ29sb3I9bnVsbDt0aGlzLnNob3dCb3JkZXJzPXRydWV9O2IuanFwbG90Lk1la2tvUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oYyxlKXt0aGlzLmZpbGw9ZmFsc2U7dGhpcy5maWxsUmVjdD10cnVlO3RoaXMuc3Ryb2tlUmVjdD10cnVlO3RoaXMuc2hhZG93PWZhbHNlO3RoaXMuX3h3aWR0aD0wO3RoaXMuX3hzdGFydD0wO2IuZXh0ZW5kKHRydWUsdGhpcy5yZW5kZXJlcixjKTt2YXIgZD17bGluZUpvaW46Im1pdGVyIixsaW5lQ2FwOiJidXR0Iixpc2FyYzpmYWxzZSxmaWxsUmVjdDp0aGlzLmZpbGxSZWN0LHN0cm9rZVJlY3Q6dGhpcy5zdHJva2VSZWN0fTt0aGlzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuaW5pdChkKTtlLmF4ZXMueDJheGlzLl9zZXJpZXMucHVzaCh0aGlzKTt0aGlzLl90eXBlPSJtZWtrbyJ9O2IuanFwbG90Lk1la2tvUmVuZGVyZXIucHJvdG90eXBlLnNldEdyaWREYXRhPWZ1bmN0aW9uKGgpe3ZhciBlPXRoaXMuX3hheGlzLnNlcmllc191MnA7dmFyIGM9dGhpcy5feWF4aXMuc2VyaWVzX3UycDt2YXIgZz10aGlzLl9wbG90RGF0YTt0aGlzLmdyaWREYXRhPVtdO3RoaXMuX3h3aWR0aD1lKHRoaXMuX3N1bXkpLWUoMCk7aWYodGhpcy5pbmRleD4wKXt0aGlzLl94c3RhcnQ9aC5zZXJpZXNbdGhpcy5pbmRleC0xXS5feHN0YXJ0K2guc2VyaWVzW3RoaXMuaW5kZXgtMV0uX3h3aWR0aH12YXIgbD10aGlzLmNhbnZhcy5nZXRIZWlnaHQoKTt2YXIgZD0wO3ZhciBrO3ZhciBqO2Zvcih2YXIgZj0wO2Y8Zy5sZW5ndGg7ZisrKXtpZihnW2ZdIT1udWxsKXtkKz1nW2ZdWzFdO2s9bC0oZC90aGlzLl9zdW15KmwpO2o9Z1tmXVsxXS90aGlzLl9zdW15Kmw7dGhpcy5ncmlkRGF0YS5wdXNoKFt0aGlzLl94c3RhcnQsayx0aGlzLl94d2lkdGgsal0pfX19O2IuanFwbG90Lk1la2tvUmVuZGVyZXIucHJvdG90eXBlLm1ha2VHcmlkRGF0YT1mdW5jdGlvbihmLGcpe3ZhciBkPXRoaXMuX3hheGlzLnNlcmllc191MnA7dmFyIGw9dGhpcy5jYW52YXMuZ2V0SGVpZ2h0KCk7dmFyIGM9MDt2YXIgajt2YXIgaDt2YXIgaz1bXTtmb3IodmFyIGU9MDtlPGYubGVuZ3RoO2UrKyl7aWYoZltlXSE9bnVsbCl7Yys9ZltlXVsxXTtqPWwtKGMvdGhpcy5fc3VteSpsKTtoPWZbZV1bMV0vdGhpcy5fc3VteSpsO2sucHVzaChbdGhpcy5feHN0YXJ0LGosdGhpcy5feHdpZHRoLGhdKX19cmV0dXJuIGt9O2IuanFwbG90Lk1la2tvUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oYyxoLGQpe3ZhciBlO3ZhciBnPShkIT11bmRlZmluZWQpP2Q6e307dmFyIGY9KGcuc2hvd0xpbmUhPXVuZGVmaW5lZCk/Zy5zaG93TGluZTp0aGlzLnNob3dMaW5lO3ZhciBqPW5ldyBiLmpxcGxvdC5Db2xvckdlbmVyYXRvcih0aGlzLnNlcmllc0NvbG9ycyk7Yy5zYXZlKCk7aWYoaC5sZW5ndGgpe2lmKGYpe2ZvcihlPTA7ZTxoLmxlbmd0aDtlKyspe2cuZmlsbFN0eWxlPWoubmV4dCgpO2lmKHRoaXMucmVuZGVyZXIuc2hvd0JvcmRlcnMpe2cuc3Ryb2tlU3R5bGU9dGhpcy5yZW5kZXJlci5ib3JkZXJDb2xvcn1lbHNle2cuc3Ryb2tlU3R5bGU9Zy5maWxsU3R5bGV9dGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmRyYXcoYyxoW2VdLGcpfX19Yy5yZXN0b3JlKCl9O2IuanFwbG90Lk1la2tvUmVuZGVyZXIucHJvdG90eXBlLmRyYXdTaGFkb3c9ZnVuY3Rpb24oYyxlLGQpe307Yi5qcXBsb3QuTWVra29MZWdlbmRSZW5kZXJlcj1mdW5jdGlvbigpe307Yi5qcXBsb3QuTWVra29MZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihjKXt0aGlzLm51bWJlclJvd3M9bnVsbDt0aGlzLm51bWJlckNvbHVtbnM9bnVsbDt0aGlzLnBsYWNlbWVudD0ib3V0c2lkZSI7Yi5leHRlbmQodHJ1ZSx0aGlzLGMpfTtiLmpxcGxvdC5NZWtrb0xlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKCl7dmFyIGY9dGhpcztpZih0aGlzLnNob3cpe3ZhciBvPXRoaXMuX3Nlcmllczt2YXIgcj0icG9zaXRpb246YWJzb2x1dGU7IjtyKz0odGhpcy5iYWNrZ3JvdW5kKT8iYmFja2dyb3VuZDoiK3RoaXMuYmFja2dyb3VuZCsiOyI6IiI7cis9KHRoaXMuYm9yZGVyKT8iYm9yZGVyOiIrdGhpcy5ib3JkZXIrIjsiOiIiO3IrPSh0aGlzLmZvbnRTaXplKT8iZm9udC1zaXplOiIrdGhpcy5mb250U2l6ZSsiOyI6IiI7cis9KHRoaXMuZm9udEZhbWlseSk/ImZvbnQtZmFtaWx5OiIrdGhpcy5mb250RmFtaWx5KyI7IjoiIjtyKz0odGhpcy50ZXh0Q29sb3IpPyJjb2xvcjoiK3RoaXMudGV4dENvbG9yKyI7IjoiIjt0aGlzLl9lbGVtPWIoJzx0YWJsZSBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9IicrcisnIj48L3RhYmxlPicpO3ZhciB3PWZhbHNlLG49dHJ1ZSxjLGw7dmFyIHA9b1swXTt2YXIgZD1uZXcgYi5qcXBsb3QuQ29sb3JHZW5lcmF0b3IocC5zZXJpZXNDb2xvcnMpO2lmKHAuc2hvdyl7dmFyIHg9cC5kYXRhO2lmKHRoaXMubnVtYmVyUm93cyl7Yz10aGlzLm51bWJlclJvd3M7aWYoIXRoaXMubnVtYmVyQ29sdW1ucyl7bD1NYXRoLmNlaWwoeC5sZW5ndGgvYyl9ZWxzZXtsPXRoaXMubnVtYmVyQ29sdW1uc319ZWxzZXtpZih0aGlzLm51bWJlckNvbHVtbnMpe2w9dGhpcy5udW1iZXJDb2x1bW5zO2M9TWF0aC5jZWlsKHgubGVuZ3RoL3RoaXMubnVtYmVyQ29sdW1ucyl9ZWxzZXtjPXgubGVuZ3RoO2w9MX19dmFyIHYsdSxlLGgsZyxrLG0sdDt2YXIgcT0wO2Zvcih2PTA7djxjO3YrKyl7aWYobil7ZT1iKCc8dHIgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiPjwvdHI+JykucHJlcGVuZFRvKHRoaXMuX2VsZW0pfWVsc2V7ZT1iKCc8dHIgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiPjwvdHI+JykuYXBwZW5kVG8odGhpcy5fZWxlbSl9Zm9yKHU9MDt1PGw7dSsrKXtpZihxPHgubGVuZ3RoKXtrPXRoaXMubGFiZWxzW3FdfHx4W3FdWzBdLnRvU3RyaW5nKCk7dD1kLm5leHQoKTtpZighbil7aWYodj4wKXt3PXRydWV9ZWxzZXt3PWZhbHNlfX1lbHNle2lmKHY9PWMtMSl7dz1mYWxzZX1lbHNle3c9dHJ1ZX19bT0odyk/dGhpcy5yb3dTcGFjaW5nOiIwIjtoPWIoJzx0ZCBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9InRleHQtYWxpZ246Y2VudGVyO3BhZGRpbmctdG9wOicrbSsnOyI+PGRpdj48ZGl2IGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaCIgc3R5bGU9ImJvcmRlci1jb2xvcjonK3QrJzsiPjwvZGl2PjwvZGl2PjwvdGQ+Jyk7Zz1iKCc8dGQgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSJwYWRkaW5nLXRvcDonK20rJzsiPjwvdGQ+Jyk7aWYodGhpcy5lc2NhcGVIdG1sKXtnLnRleHQoayl9ZWxzZXtnLmh0bWwoayl9aWYobil7Zy5wcmVwZW5kVG8oZSk7aC5wcmVwZW5kVG8oZSl9ZWxzZXtoLmFwcGVuZFRvKGUpO2cuYXBwZW5kVG8oZSl9dz10cnVlfXErK319ZT1udWxsO2g9bnVsbDtnPW51bGx9fXJldHVybiB0aGlzLl9lbGVtfTtiLmpxcGxvdC5NZWtrb0xlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5wYWNrPWZ1bmN0aW9uKGYpe2lmKHRoaXMuc2hvdyl7dmFyIGU9e190b3A6Zi50b3AsX2xlZnQ6Zi5sZWZ0LF9yaWdodDpmLnJpZ2h0LF9ib3R0b206dGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0LWYuYm90dG9tfTtpZih0aGlzLnBsYWNlbWVudD09Imluc2lkZUdyaWQiKXtzd2l0Y2godGhpcy5sb2NhdGlvbil7Y2FzZSJudyI6dmFyIGQ9ZS5fbGVmdCt0aGlzLnhvZmZzZXQ7dmFyIGM9ZS5fdG9wK3RoaXMueW9mZnNldDt0aGlzLl9lbGVtLmNzcygibGVmdCIsZCk7dGhpcy5fZWxlbS5jc3MoInRvcCIsYyk7YnJlYWs7Y2FzZSJuIjp2YXIgZD0oZi5sZWZ0Kyh0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC1mLnJpZ2h0KSkvMi10aGlzLmdldFdpZHRoKCkvMjt2YXIgYz1lLl90b3ArdGhpcy55b2Zmc2V0O3RoaXMuX2VsZW0uY3NzKCJsZWZ0IixkKTt0aGlzLl9lbGVtLmNzcygidG9wIixjKTticmVhaztjYXNlIm5lIjp2YXIgZD1mLnJpZ2h0K3RoaXMueG9mZnNldDt2YXIgYz1lLl90b3ArdGhpcy55b2Zmc2V0O3RoaXMuX2VsZW0uY3NzKHtyaWdodDpkLHRvcDpjfSk7YnJlYWs7Y2FzZSJlIjp2YXIgZD1mLnJpZ2h0K3RoaXMueG9mZnNldDt2YXIgYz0oZi50b3ArKHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodC1mLmJvdHRvbSkpLzItdGhpcy5nZXRIZWlnaHQoKS8yO3RoaXMuX2VsZW0uY3NzKHtyaWdodDpkLHRvcDpjfSk7YnJlYWs7Y2FzZSJzZSI6dmFyIGQ9Zi5yaWdodCt0aGlzLnhvZmZzZXQ7dmFyIGM9Zi5ib3R0b20rdGhpcy55b2Zmc2V0O3RoaXMuX2VsZW0uY3NzKHtyaWdodDpkLGJvdHRvbTpjfSk7YnJlYWs7Y2FzZSJzIjp2YXIgZD0oZi5sZWZ0Kyh0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC1mLnJpZ2h0KSkvMi10aGlzLmdldFdpZHRoKCkvMjt2YXIgYz1mLmJvdHRvbSt0aGlzLnlvZmZzZXQ7dGhpcy5fZWxlbS5jc3Moe2xlZnQ6ZCxib3R0b206Y30pO2JyZWFrO2Nhc2Uic3ciOnZhciBkPWUuX2xlZnQrdGhpcy54b2Zmc2V0O3ZhciBjPWYuYm90dG9tK3RoaXMueW9mZnNldDt0aGlzLl9lbGVtLmNzcyh7bGVmdDpkLGJvdHRvbTpjfSk7YnJlYWs7Y2FzZSJ3Ijp2YXIgZD1lLl9sZWZ0K3RoaXMueG9mZnNldDt2YXIgYz0oZi50b3ArKHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodC1mLmJvdHRvbSkpLzItdGhpcy5nZXRIZWlnaHQoKS8yO3RoaXMuX2VsZW0uY3NzKHtsZWZ0OmQsdG9wOmN9KTticmVhaztkZWZhdWx0OnZhciBkPWUuX3JpZ2h0LXRoaXMueG9mZnNldDt2YXIgYz1lLl9ib3R0b20rdGhpcy55b2Zmc2V0O3RoaXMuX2VsZW0uY3NzKHtyaWdodDpkLGJvdHRvbTpjfSk7YnJlYWt9fWVsc2V7c3dpdGNoKHRoaXMubG9jYXRpb24pe2Nhc2UibnciOnZhciBkPXRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoLWUuX2xlZnQrdGhpcy54b2Zmc2V0O3ZhciBjPWUuX3RvcCt0aGlzLnlvZmZzZXQ7dGhpcy5fZWxlbS5jc3MoInJpZ2h0IixkKTt0aGlzLl9lbGVtLmNzcygidG9wIixjKTticmVhaztjYXNlIm4iOnZhciBkPShmLmxlZnQrKHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoLWYucmlnaHQpKS8yLXRoaXMuZ2V0V2lkdGgoKS8yO3ZhciBjPXRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodC1lLl90b3ArdGhpcy55b2Zmc2V0O3RoaXMuX2VsZW0uY3NzKCJsZWZ0IixkKTt0aGlzLl9lbGVtLmNzcygiYm90dG9tIixjKTticmVhaztjYXNlIm5lIjp2YXIgZD10aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC1mLnJpZ2h0K3RoaXMueG9mZnNldDt2YXIgYz1lLl90b3ArdGhpcy55b2Zmc2V0O3RoaXMuX2VsZW0uY3NzKHtsZWZ0OmQsdG9wOmN9KTticmVhaztjYXNlImUiOnZhciBkPXRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoLWYucmlnaHQrdGhpcy54b2Zmc2V0O3ZhciBjPShmLnRvcCsodGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0LWYuYm90dG9tKSkvMi10aGlzLmdldEhlaWdodCgpLzI7dGhpcy5fZWxlbS5jc3Moe2xlZnQ6ZCx0b3A6Y30pO2JyZWFrO2Nhc2Uic2UiOnZhciBkPXRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoLWYucmlnaHQrdGhpcy54b2Zmc2V0O3ZhciBjPWYuYm90dG9tK3RoaXMueW9mZnNldDt0aGlzLl9lbGVtLmNzcyh7bGVmdDpkLGJvdHRvbTpjfSk7YnJlYWs7Y2FzZSJzIjp2YXIgZD0oZi5sZWZ0Kyh0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC1mLnJpZ2h0KSkvMi10aGlzLmdldFdpZHRoKCkvMjt2YXIgYz10aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQtZi5ib3R0b20rdGhpcy55b2Zmc2V0O3RoaXMuX2VsZW0uY3NzKHtsZWZ0OmQsdG9wOmN9KTticmVhaztjYXNlInN3Ijp2YXIgZD10aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aC1lLl9sZWZ0K3RoaXMueG9mZnNldDt2YXIgYz1mLmJvdHRvbSt0aGlzLnlvZmZzZXQ7dGhpcy5fZWxlbS5jc3Moe3JpZ2h0OmQsYm90dG9tOmN9KTticmVhaztjYXNlInciOnZhciBkPXRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoLWUuX2xlZnQrdGhpcy54b2Zmc2V0O3ZhciBjPShmLnRvcCsodGhpcy5fcGxvdERpbWVuc2lvbnMuaGVpZ2h0LWYuYm90dG9tKSkvMi10aGlzLmdldEhlaWdodCgpLzI7dGhpcy5fZWxlbS5jc3Moe3JpZ2h0OmQsdG9wOmN9KTticmVhaztkZWZhdWx0OnZhciBkPWUuX3JpZ2h0LXRoaXMueG9mZnNldDt2YXIgYz1lLl9ib3R0b20rdGhpcy55b2Zmc2V0O3RoaXMuX2VsZW0uY3NzKHtyaWdodDpkLGJvdHRvbTpjfSk7YnJlYWt9fX19O2Z1bmN0aW9uIGEoZyxmLGQpe2Q9ZHx8e307ZC5heGVzRGVmYXVsdHM9ZC5heGVzRGVmYXVsdHN8fHt9O2QubGVnZW5kPWQubGVnZW5kfHx7fTtkLnNlcmllc0RlZmF1bHRzPWQuc2VyaWVzRGVmYXVsdHN8fHt9O3ZhciBjPWZhbHNlO2lmKGQuc2VyaWVzRGVmYXVsdHMucmVuZGVyZXI9PWIuanFwbG90Lk1la2tvUmVuZGVyZXIpe2M9dHJ1ZX1lbHNle2lmKGQuc2VyaWVzKXtmb3IodmFyIGU9MDtlPGQuc2VyaWVzLmxlbmd0aDtlKyspe2lmKGQuc2VyaWVzW2VdLnJlbmRlcmVyPT1iLmpxcGxvdC5NZWtrb1JlbmRlcmVyKXtjPXRydWV9fX19aWYoYyl7ZC5heGVzRGVmYXVsdHMucmVuZGVyZXI9Yi5qcXBsb3QuTWVra29BeGlzUmVuZGVyZXI7ZC5sZWdlbmQucmVuZGVyZXI9Yi5qcXBsb3QuTWVra29MZWdlbmRSZW5kZXJlcjtkLmxlZ2VuZC5wcmVEcmF3PXRydWV9fWIuanFwbG90LnByZUluaXRIb29rcy5wdXNoKGEpfSkoalF1ZXJ5KTs=]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oYyl7Yy5qcXBsb3QuTWV0ZXJHYXVnZVJlbmRlcmVyPWZ1bmN0aW9uKCl7Yy5qcXBsb3QuTGluZVJlbmRlcmVyLmNhbGwodGhpcyl9O2MuanFwbG90Lk1ldGVyR2F1Z2VSZW5kZXJlci5wcm90b3R5cGU9bmV3IGMuanFwbG90LkxpbmVSZW5kZXJlcigpO2MuanFwbG90Lk1ldGVyR2F1Z2VSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9Yy5qcXBsb3QuTWV0ZXJHYXVnZVJlbmRlcmVyO2MuanFwbG90Lk1ldGVyR2F1Z2VSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihlKXt0aGlzLmRpYW1ldGVyPW51bGw7dGhpcy5wYWRkaW5nPW51bGw7dGhpcy5zaGFkb3dPZmZzZXQ9Mjt0aGlzLnNoYWRvd0FscGhhPTAuMDc7dGhpcy5zaGFkb3dEZXB0aD00O3RoaXMuYmFja2dyb3VuZD0iI2VmZWZlZiI7dGhpcy5yaW5nQ29sb3I9IiNCQkM2RDAiO3RoaXMubmVlZGxlQ29sb3I9IiNDM0QzRTUiO3RoaXMudGlja0NvbG9yPSIjOTg5ODk4Ijt0aGlzLnJpbmdXaWR0aD1udWxsO3RoaXMubWluO3RoaXMubWF4O3RoaXMudGlja3M9W107dGhpcy5zaG93VGlja3M9dHJ1ZTt0aGlzLnNob3dUaWNrTGFiZWxzPXRydWU7dGhpcy5sYWJlbD1udWxsO3RoaXMubGFiZWxIZWlnaHRBZGp1c3Q9MDt0aGlzLmxhYmVsUG9zaXRpb249Imluc2lkZSI7dGhpcy5pbnRlcnZhbHM9W107dGhpcy5pbnRlcnZhbENvbG9ycz1bIiM0YmIyYzUiLCIjRUFBMjI4IiwiI2M1YjQ3ZiIsIiM1Nzk1NzUiLCIjODM5NTU3IiwiIzk1OGMxMiIsIiM5NTM1NzkiLCIjNGI1ZGU0IiwiI2Q4YjgzZiIsIiNmZjU4MDAiLCIjMDA4NWNjIiwiI2M3NDdhMyIsIiNjZGRmNTQiLCIjRkJEMTc4IiwiIzI2QjRFMyIsIiNiZDcwYzciXTt0aGlzLmludGVydmFsSW5uZXJSYWRpdXM9bnVsbDt0aGlzLmludGVydmFsT3V0ZXJSYWRpdXM9bnVsbDt0aGlzLnRpY2tSZW5kZXJlcj1jLmpxcGxvdC5NZXRlckdhdWdlVGlja1JlbmRlcmVyO3RoaXMudGlja1Bvc2l0aW9ucz1bMSwyLDIuNSw1LDEwXTt0aGlzLnRpY2tTcGFjaW5nPTMwO3RoaXMubnVtYmVyTWlub3JUaWNrcz1udWxsO3RoaXMuaHViUmFkaXVzPW51bGw7dGhpcy50aWNrUGFkZGluZz1udWxsO3RoaXMubmVlZGxlVGhpY2tuZXNzPW51bGw7dGhpcy5uZWVkbGVQYWQ9Njt0aGlzLnBlZ05lZWRsZT10cnVlO3RoaXMuX3R5cGU9Im1ldGVyR2F1Z2UiO2MuZXh0ZW5kKHRydWUsdGhpcyxlKTt0aGlzLnR5cGU9bnVsbDt0aGlzLm51bWJlclRpY2tzPW51bGw7dGhpcy50aWNrSW50ZXJ2YWw9bnVsbDt0aGlzLnNwYW49MTgwO2lmKHRoaXMudHlwZT09ImNpcmN1bGFyIil7dGhpcy5zZW1pQ2lyY3VsYXI9ZmFsc2V9ZWxzZXtpZih0aGlzLnR5cGUhPSJjaXJjdWxhciIpe3RoaXMuc2VtaUNpcmN1bGFyPXRydWV9ZWxzZXt0aGlzLnNlbWlDaXJjdWxhcj0odGhpcy5zcGFuPD0xODApP3RydWU6ZmFsc2V9fXRoaXMuX3RpY2tQb2ludHM9W107dGhpcy5fbGFiZWxFbGVtPW51bGw7dGhpcy5zdGFydEFuZ2xlPSg5MCsoMzYwLXRoaXMuc3BhbikvMikqTWF0aC5QSS8xODA7dGhpcy5lbmRBbmdsZT0oOTAtKDM2MC10aGlzLnNwYW4pLzIpKk1hdGguUEkvMTgwO3RoaXMuc2V0bWluPSEhKHRoaXMubWluPT1udWxsKTt0aGlzLnNldG1heD0hISh0aGlzLm1heD09bnVsbCk7aWYodGhpcy5pbnRlcnZhbHMubGVuZ3RoKXtpZih0aGlzLmludGVydmFsc1swXS5sZW5ndGg9PW51bGx8fHRoaXMuaW50ZXJ2YWxzLmxlbmd0aD09MSl7Zm9yKHZhciBmPTA7Zjx0aGlzLmludGVydmFscy5sZW5ndGg7ZisrKXt0aGlzLmludGVydmFsc1tmXT1bdGhpcy5pbnRlcnZhbHNbZl0sdGhpcy5pbnRlcnZhbHNbZl0sdGhpcy5pbnRlcnZhbENvbG9yc1tmXV19fWVsc2V7aWYodGhpcy5pbnRlcnZhbHNbMF0ubGVuZ3RoPT0yKXtmb3IoZj0wO2Y8dGhpcy5pbnRlcnZhbHMubGVuZ3RoO2YrKyl7dGhpcy5pbnRlcnZhbHNbZl09W3RoaXMuaW50ZXJ2YWxzW2ZdWzBdLHRoaXMuaW50ZXJ2YWxzW2ZdWzFdLHRoaXMuaW50ZXJ2YWxDb2xvcnNbZl1dfX19fWlmKHRoaXMudGlja3MubGVuZ3RoKXtpZih0aGlzLnRpY2tzWzBdLmxlbmd0aD09bnVsbHx8dGhpcy50aWNrc1swXS5sZW5ndGg9PTEpe2Zvcih2YXIgZj0wO2Y8dGhpcy50aWNrcy5sZW5ndGg7ZisrKXt0aGlzLnRpY2tzW2ZdPVt0aGlzLnRpY2tzW2ZdLHRoaXMudGlja3NbZl1dfX10aGlzLm1pbj0odGhpcy5taW49PW51bGwpP3RoaXMudGlja3NbMF1bMF06dGhpcy5taW47dGhpcy5tYXg9KHRoaXMubWF4PT1udWxsKT90aGlzLnRpY2tzW3RoaXMudGlja3MubGVuZ3RoLTFdWzBdOnRoaXMubWF4O3RoaXMuc2V0bWluPWZhbHNlO3RoaXMuc2V0bWF4PWZhbHNlO3RoaXMubnVtYmVyVGlja3M9dGhpcy50aWNrcy5sZW5ndGg7dGhpcy50aWNrSW50ZXJ2YWw9dGhpcy50aWNrc1sxXVswXS10aGlzLnRpY2tzWzBdWzBdO3RoaXMudGlja0ZhY3Rvcj1NYXRoLmZsb29yKHBhcnNlRmxvYXQoKE1hdGgubG9nKHRoaXMudGlja0ludGVydmFsKS9NYXRoLmxvZygxMCkpLnRvRml4ZWQoMTEpKSk7dGhpcy5udW1iZXJNaW5vclRpY2tzPWIodGhpcy50aWNrUG9zaXRpb25zLHRoaXMudGlja0ludGVydmFsLHRoaXMudGlja0ZhY3Rvcik7aWYoIXRoaXMubnVtYmVyTWlub3JUaWNrcyl7dGhpcy5udW1iZXJNaW5vclRpY2tzPWIodGhpcy50aWNrUG9zaXRpb25zLHRoaXMudGlja0ludGVydmFsLHRoaXMudGlja0ZhY3Rvci0xKX1pZighdGhpcy5udW1iZXJNaW5vclRpY2tzKXt0aGlzLm51bWJlck1pbm9yVGlja3M9MX19ZWxzZXtpZih0aGlzLmludGVydmFscy5sZW5ndGgpe3RoaXMubWluPSh0aGlzLm1pbj09bnVsbCk/MDp0aGlzLm1pbjt0aGlzLnNldG1pbj1mYWxzZTtpZih0aGlzLm1heD09bnVsbCl7aWYodGhpcy5pbnRlcnZhbHNbdGhpcy5pbnRlcnZhbHMubGVuZ3RoLTFdWzBdPj10aGlzLmRhdGFbMF1bMV0pe3RoaXMubWF4PXRoaXMuaW50ZXJ2YWxzW3RoaXMuaW50ZXJ2YWxzLmxlbmd0aC0xXVswXTt0aGlzLnNldG1heD1mYWxzZX19ZWxzZXt0aGlzLnNldG1heD1mYWxzZX19ZWxzZXt0aGlzLm1pbj0odGhpcy5taW49PW51bGwpPzA6dGhpcy5taW47dGhpcy5zZXRtaW49ZmFsc2U7aWYodGhpcy5tYXg9PW51bGwpe3RoaXMubWF4PXRoaXMuZGF0YVswXVsxXSoxLjI1O3RoaXMuc2V0bWF4PXRydWV9ZWxzZXt0aGlzLnNldG1heD1mYWxzZX19fX07Yy5qcXBsb3QuTWV0ZXJHYXVnZVJlbmRlcmVyLnByb3RvdHlwZS5zZXRHcmlkRGF0YT1mdW5jdGlvbihqKXt2YXIgZj1bXTt2YXIgaz1bXTt2YXIgZT10aGlzLnN0YXJ0QW5nbGU7Zm9yKHZhciBoPTA7aDx0aGlzLmRhdGEubGVuZ3RoO2grKyl7Zi5wdXNoKHRoaXMuZGF0YVtoXVsxXSk7ay5wdXNoKFt0aGlzLmRhdGFbaF1bMF1dKTtpZihoPjApe2ZbaF0rPWZbaC0xXX19dmFyIGc9TWF0aC5QSSoyL2ZbZi5sZW5ndGgtMV07Zm9yKHZhciBoPTA7aDxmLmxlbmd0aDtoKyspe2tbaF1bMV09ZltoXSpnfXRoaXMuZ3JpZERhdGE9a307Yy5qcXBsb3QuTWV0ZXJHYXVnZVJlbmRlcmVyLnByb3RvdHlwZS5tYWtlR3JpZERhdGE9ZnVuY3Rpb24oaixrKXt2YXIgZj1bXTt2YXIgbD1bXTt2YXIgZT10aGlzLnN0YXJ0QW5nbGU7Zm9yKHZhciBoPTA7aDxqLmxlbmd0aDtoKyspe2YucHVzaChqW2hdWzFdKTtsLnB1c2goW2pbaF1bMF1dKTtpZihoPjApe2ZbaF0rPWZbaC0xXX19dmFyIGc9TWF0aC5QSSoyL2ZbZi5sZW5ndGgtMV07Zm9yKHZhciBoPTA7aDxmLmxlbmd0aDtoKyspe2xbaF1bMV09ZltoXSpnfXJldHVybiBsfTtmdW5jdGlvbiBiKGosZixnKXt2YXIgZTtmb3IodmFyIGg9ai5sZW5ndGgtMTtoPj0wO2gtLSl7ZT1mLyhqW2hdKk1hdGgucG93KDEwLGcpKTtpZihlPT00fHxlPT01KXtyZXR1cm4gZS0xfX1yZXR1cm4gbnVsbH1jLmpxcGxvdC5NZXRlckdhdWdlUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oWCxhQyxhcCl7dmFyIGFhO3ZhciBhTT0oYXAhPXVuZGVmaW5lZCk/YXA6e307dmFyIGFpPTA7dmFyIGFoPTA7dmFyIGF0PTE7aWYoYXAubGVnZW5kSW5mbyYmYXAubGVnZW5kSW5mby5wbGFjZW1lbnQ9PSJpbnNpZGUiKXt2YXIgYUk9YXAubGVnZW5kSW5mbztzd2l0Y2goYUkubG9jYXRpb24pe2Nhc2UibnciOmFpPWFJLndpZHRoK2FJLnhvZmZzZXQ7YnJlYWs7Y2FzZSJ3IjphaT1hSS53aWR0aCthSS54b2Zmc2V0O2JyZWFrO2Nhc2Uic3ciOmFpPWFJLndpZHRoK2FJLnhvZmZzZXQ7YnJlYWs7Y2FzZSJuZSI6YWk9YUkud2lkdGgrYUkueG9mZnNldDthdD0tMTticmVhaztjYXNlImUiOmFpPWFJLndpZHRoK2FJLnhvZmZzZXQ7YXQ9LTE7YnJlYWs7Y2FzZSJzZSI6YWk9YUkud2lkdGgrYUkueG9mZnNldDthdD0tMTticmVhaztjYXNlIm4iOmFoPWFJLmhlaWdodCthSS55b2Zmc2V0O2JyZWFrO2Nhc2UicyI6YWg9YUkuaGVpZ2h0K2FJLnlvZmZzZXQ7YXQ9LTE7YnJlYWs7ZGVmYXVsdDpicmVha319aWYodGhpcy5sYWJlbCl7dGhpcy5fbGFiZWxFbGVtPWMoJzxkaXYgY2xhc3M9ImpxcGxvdC1tZXRlckdhdWdlLWxhYmVsIiBzdHlsZT0icG9zaXRpb246YWJzb2x1dGU7Ij4nK3RoaXMubGFiZWwrIjwvZGl2PiIpO3RoaXMuY2FudmFzLl9lbGVtLmFmdGVyKHRoaXMuX2xhYmVsRWxlbSl9dmFyIG09KGFNLnNoYWRvdyE9dW5kZWZpbmVkKT9hTS5zaGFkb3c6dGhpcy5zaGFkb3c7dmFyIE49KGFNLnNob3dMaW5lIT11bmRlZmluZWQpP2FNLnNob3dMaW5lOnRoaXMuc2hvd0xpbmU7dmFyIEk9KGFNLmZpbGwhPXVuZGVmaW5lZCk/YU0uZmlsbDp0aGlzLmZpbGw7dmFyIEs9WC5jYW52YXMud2lkdGg7dmFyIFM9WC5jYW52YXMuaGVpZ2h0O2lmKHRoaXMucGFkZGluZz09bnVsbCl7dGhpcy5wYWRkaW5nPU1hdGgucm91bmQoTWF0aC5taW4oSyxTKS8zMCl9dmFyIFE9Sy1haS0yKnRoaXMucGFkZGluZzt2YXIgYWI9Uy1haC0yKnRoaXMucGFkZGluZztpZih0aGlzLmxhYmVsUG9zaXRpb249PSJib3R0b20iJiZ0aGlzLmxhYmVsKXthYi09dGhpcy5fbGFiZWxFbGVtLm91dGVySGVpZ2h0KHRydWUpfXZhciBMPU1hdGgubWluKFEsYWIpO3ZhciBhZD1MO2lmKCF0aGlzLmRpYW1ldGVyKXtpZih0aGlzLnNlbWlDaXJjdWxhcil7aWYoUT49MiphYil7aWYoIXRoaXMucmluZ1dpZHRoKXt0aGlzLnJpbmdXaWR0aD0yKmFiLzM1fXRoaXMubmVlZGxlVGhpY2tuZXNzPXRoaXMubmVlZGxlVGhpY2tuZXNzfHwyK01hdGgucG93KHRoaXMucmluZ1dpZHRoLDAuOCk7dGhpcy5pbm5lclBhZD10aGlzLnJpbmdXaWR0aC8yK3RoaXMubmVlZGxlVGhpY2tuZXNzLzIrdGhpcy5uZWVkbGVQYWQ7dGhpcy5kaWFtZXRlcj0yKihhYi0yKnRoaXMuaW5uZXJQYWQpfWVsc2V7aWYoIXRoaXMucmluZ1dpZHRoKXt0aGlzLnJpbmdXaWR0aD1RLzM1fXRoaXMubmVlZGxlVGhpY2tuZXNzPXRoaXMubmVlZGxlVGhpY2tuZXNzfHwyK01hdGgucG93KHRoaXMucmluZ1dpZHRoLDAuOCk7dGhpcy5pbm5lclBhZD10aGlzLnJpbmdXaWR0aC8yK3RoaXMubmVlZGxlVGhpY2tuZXNzLzIrdGhpcy5uZWVkbGVQYWQ7dGhpcy5kaWFtZXRlcj1RLTIqdGhpcy5pbm5lclBhZC10aGlzLnJpbmdXaWR0aC10aGlzLnBhZGRpbmd9dGhpcy5fY2VudGVyPVsoSy1hdCphaSkvMithdCphaSwoUythdCphaC10aGlzLnBhZGRpbmctdGhpcy5yaW5nV2lkdGgtdGhpcy5pbm5lclBhZCldfWVsc2V7aWYoIXRoaXMucmluZ1dpZHRoKXt0aGlzLnJpbmdXaWR0aD1hZC8zNX10aGlzLm5lZWRsZVRoaWNrbmVzcz10aGlzLm5lZWRsZVRoaWNrbmVzc3x8MitNYXRoLnBvdyh0aGlzLnJpbmdXaWR0aCwwLjgpO3RoaXMuaW5uZXJQYWQ9MDt0aGlzLmRpYW1ldGVyPWFkLXRoaXMucmluZ1dpZHRoO3RoaXMuX2NlbnRlcj1bKEstYXQqYWkpLzIrYXQqYWksKFMtYXQqYWgpLzIrYXQqYWhdfWlmKHRoaXMuX2xhYmVsRWxlbSYmdGhpcy5sYWJlbFBvc2l0aW9uPT0iYm90dG9tIil7dGhpcy5fY2VudGVyWzFdLT10aGlzLl9sYWJlbEVsZW0ub3V0ZXJIZWlnaHQodHJ1ZSl9fXRoaXMuX3JhZGl1cz10aGlzLmRpYW1ldGVyLzI7dGhpcy50aWNrU3BhY2luZz02MDAwL3RoaXMuZGlhbWV0ZXI7aWYoIXRoaXMuaHViUmFkaXVzKXt0aGlzLmh1YlJhZGl1cz10aGlzLmRpYW1ldGVyLzE4fXRoaXMuc2hhZG93T2Zmc2V0PTAuNSt0aGlzLnJpbmdXaWR0aC85O3RoaXMuc2hhZG93V2lkdGg9dGhpcy5yaW5nV2lkdGgqMTt0aGlzLnRpY2tQYWRkaW5nPTMrTWF0aC5wb3codGhpcy5kaWFtZXRlci8yMCwwLjcpO3RoaXMudGlja091dGVyUmFkaXVzPXRoaXMuX3JhZGl1cy10aGlzLnJpbmdXaWR0aC8yLXRoaXMudGlja1BhZGRpbmc7dGhpcy50aWNrTGVuZ3RoPSh0aGlzLnNob3dUaWNrcyk/dGhpcy5fcmFkaXVzLzEzOjA7aWYodGhpcy50aWNrcy5sZW5ndGg9PTApe3ZhciBBPXRoaXMubWF4LGFMPXRoaXMubWluLHE9dGhpcy5zZXRtYXgsYUc9dGhpcy5zZXRtaW4sYXU9KEEtYUwpKnRoaXMudGlja1NwYWNpbmcvdGhpcy5zcGFuO3ZhciBhdz1NYXRoLmZsb29yKHBhcnNlRmxvYXQoKE1hdGgubG9nKGF1KS9NYXRoLmxvZygxMCkpLnRvRml4ZWQoMTEpKSk7dmFyIGFuPShhdS9NYXRoLnBvdygxMCxhdykpOyhhbj4yJiZhbjw9Mi41KT9hbj0yLjU6YW49TWF0aC5jZWlsKGFuKTt2YXIgVD10aGlzLnRpY2tQb3NpdGlvbnM7dmFyIGFBLGFrO2ZvcihhYT0wO2FhPFQubGVuZ3RoO2FhKyspe2lmKGFuPT1UW2FhXXx8YWEmJlRbYWEtMV08YW4mJmFuPFRbYWFdKXthdT1UW2FhXSpNYXRoLnBvdygxMCxhdyk7YUE9YWF9fWZvcihhYT0wO2FhPFQubGVuZ3RoO2FhKyspe2lmKGFuPT1UW2FhXXx8YWEmJlRbYWEtMV08YW4mJmFuPFRbYWFdKXthdT1UW2FhXSpNYXRoLnBvdygxMCxhdyk7YWs9TWF0aC5jZWlsKChBLWFMKS9hdSl9fWlmKHEmJmFHKXt2YXIgYVA9KGFMPjApP2FMLWFMJWF1OmFMLWFMJWF1LWF1O2lmKCF0aGlzLmZvcmNlWmVybyl7dmFyIEQ9TWF0aC5taW4oYUwtYVAsMC44KmF1KTt2YXIgbz1NYXRoLmZsb29yKEQvVFthQV0pO2lmKG8+MSl7YVA9YVArVFthQV0qKG8tMSk7aWYocGFyc2VJbnQoYVAsMTApIT1hUCYmcGFyc2VJbnQoYVAtVFthQV0sMTApPT1hUC1UW2FBXSl7YVA9YVAtVFthQV19fX1pZihhTD09YVApe2FMLT1hdX1lbHNle2lmKGFMLWFQPjAuMjMqYXUpe2FMPWFQfWVsc2V7YUw9YVAtYXU7YWsrPTF9fWFrKz0xO3ZhciBFPWFMKyhhay0xKSphdTtpZihBPj1FKXtFKz1hdTthays9MX1pZihFLUE8MC4yMyphdSl7RSs9YXU7YWsrPTF9dGhpcy5tYXg9QT1FO3RoaXMubWluPWFMO3RoaXMudGlja0ludGVydmFsPWF1O3RoaXMubnVtYmVyVGlja3M9YWs7dmFyIE87Zm9yKGFhPTA7YWE8YWs7YWErKyl7Tz1wYXJzZUZsb2F0KChhTCthYSphdSkudG9GaXhlZCgxMSkpO3RoaXMudGlja3MucHVzaChbTyxPXSl9dGhpcy5tYXg9dGhpcy50aWNrc1thay0xXVsxXTt0aGlzLnRpY2tGYWN0b3I9YXc7dGhpcy5udW1iZXJNaW5vclRpY2tzPWIodGhpcy50aWNrUG9zaXRpb25zLHRoaXMudGlja0ludGVydmFsLHRoaXMudGlja0ZhY3Rvcik7aWYoIXRoaXMubnVtYmVyTWlub3JUaWNrcyl7dGhpcy5udW1iZXJNaW5vclRpY2tzPWIodGhpcy50aWNrUG9zaXRpb25zLHRoaXMudGlja0ludGVydmFsLHRoaXMudGlja0ZhY3Rvci0xKX19ZWxzZXtpZihxKXt2YXIgRT1hTCsoYWstMSkqYXU7aWYoQT49RSl7QT1FK2F1O2FrKz0xfWVsc2V7QT1FfXRoaXMudGlja0ludGVydmFsPXRoaXMudGlja0ludGVydmFsfHxhdTt0aGlzLm51bWJlclRpY2tzPXRoaXMubnVtYmVyVGlja3N8fGFrO3ZhciBPO2ZvcihhYT0wO2FhPHRoaXMubnVtYmVyVGlja3M7YWErKyl7Tz1wYXJzZUZsb2F0KChhTCthYSp0aGlzLnRpY2tJbnRlcnZhbCkudG9GaXhlZCgxMSkpO3RoaXMudGlja3MucHVzaChbTyxPXSl9dGhpcy5tYXg9dGhpcy50aWNrc1t0aGlzLm51bWJlclRpY2tzLTFdWzFdO3RoaXMudGlja0ZhY3Rvcj1hdzt0aGlzLm51bWJlck1pbm9yVGlja3M9Yih0aGlzLnRpY2tQb3NpdGlvbnMsdGhpcy50aWNrSW50ZXJ2YWwsdGhpcy50aWNrRmFjdG9yKTtpZighdGhpcy5udW1iZXJNaW5vclRpY2tzKXt0aGlzLm51bWJlck1pbm9yVGlja3M9Yih0aGlzLnRpY2tQb3NpdGlvbnMsdGhpcy50aWNrSW50ZXJ2YWwsdGhpcy50aWNrRmFjdG9yLTEpfX19aWYoIXEmJiFhRyl7dmFyIFA9dGhpcy5tYXgtdGhpcy5taW47YXc9TWF0aC5mbG9vcihwYXJzZUZsb2F0KChNYXRoLmxvZyhQKS9NYXRoLmxvZygxMCkpLnRvRml4ZWQoMTEpKSktMTt2YXIgYU49WzUsNiw0LDcsMyw4LDksMTAsMl0sVixDLGF2PTAsTTtpZihQPjEpe3ZhciBhSj1TdHJpbmcoUCk7aWYoYUouc2VhcmNoKC9cLi8pPT0tMSl7dmFyIGFGPWFKLnNlYXJjaCgvMCskLyk7YXY9KGFGPjApP2FKLmxlbmd0aC1hRi0xOjB9fU09UC9NYXRoLnBvdygxMCxhdik7Zm9yKGFhPTA7YWE8YU4ubGVuZ3RoO2FhKyspe1Y9TS8oYU5bYWFdLTEpO2lmKFY9PXBhcnNlSW50KFYsMTApKXt0aGlzLm51bWJlclRpY2tzPWFOW2FhXTt0aGlzLnRpY2tJbnRlcnZhbD1QLyh0aGlzLm51bWJlclRpY2tzLTEpO3RoaXMudGlja0ZhY3Rvcj1hdysxO2JyZWFrfX12YXIgTztmb3IoYWE9MDthYTx0aGlzLm51bWJlclRpY2tzO2FhKyspe089cGFyc2VGbG9hdCgodGhpcy5taW4rYWEqdGhpcy50aWNrSW50ZXJ2YWwpLnRvRml4ZWQoMTEpKTt0aGlzLnRpY2tzLnB1c2goW08sT10pfXRoaXMubnVtYmVyTWlub3JUaWNrcz1iKHRoaXMudGlja1Bvc2l0aW9ucyx0aGlzLnRpY2tJbnRlcnZhbCx0aGlzLnRpY2tGYWN0b3IpO2lmKCF0aGlzLm51bWJlck1pbm9yVGlja3Mpe3RoaXMubnVtYmVyTWlub3JUaWNrcz1iKHRoaXMudGlja1Bvc2l0aW9ucyx0aGlzLnRpY2tJbnRlcnZhbCx0aGlzLnRpY2tGYWN0b3ItMSl9aWYoIXRoaXMubnVtYmVyTWlub3JUaWNrcyl7dGhpcy5udW1iZXJNaW5vclRpY2tzPTE7dmFyIGFIPVs0LDUsMyw2LDJdO2ZvcihhYT0wO2FhPDU7YWErKyl7dmFyIGFvPXRoaXMudGlja0ludGVydmFsL2FIW2FhXTtpZihhbz09cGFyc2VJbnQoYW8sMTApKXt0aGlzLm51bWJlck1pbm9yVGlja3M9YUhbYWFdLTE7YnJlYWt9fX19fXZhciBVPXRoaXMuX3JhZGl1cyxhRT10aGlzLnN0YXJ0QW5nbGUsaz10aGlzLmVuZEFuZ2xlLEg9TWF0aC5QSSxlPU1hdGguUEkvMjtpZih0aGlzLnNlbWlDaXJjdWxhcil7dmFyIHo9TWF0aC5hdGFuKHRoaXMuaW5uZXJQYWQvVSksYWM9dGhpcy5vdXRlclN0YXJ0QW5nbGU9YUUteixhQj10aGlzLm91dGVyRW5kQW5nbGU9ayt6LEI9dGhpcy5odWJTdGFydEFuZ2xlPWFFLU1hdGguYXRhbih0aGlzLmlubmVyUGFkL3RoaXMuaHViUmFkaXVzKjIpLGFmPXRoaXMuaHViRW5kQW5nbGU9aytNYXRoLmF0YW4odGhpcy5pbm5lclBhZC90aGlzLmh1YlJhZGl1cyoyKTtYLnNhdmUoKTtYLnRyYW5zbGF0ZSh0aGlzLl9jZW50ZXJbMF0sdGhpcy5fY2VudGVyWzFdKTtYLmxpbmVKb2luPSJyb3VuZCI7WC5saW5lQ2FwPSJyb3VuZCI7WC5zYXZlKCk7WC5iZWdpblBhdGgoKTtYLmZpbGxTdHlsZT10aGlzLmJhY2tncm91bmQ7WC5hcmMoMCwwLFUsYWMsYUIsZmFsc2UpO1guY2xvc2VQYXRoKCk7WC5maWxsKCk7WC5yZXN0b3JlKCk7dmFyIGFqPSJyZ2JhKDAsMCwwLCIrdGhpcy5zaGFkb3dBbHBoYSsiKSI7WC5zYXZlKCk7Zm9yKHZhciBhYT0wO2FhPHRoaXMuc2hhZG93RGVwdGg7YWErKyl7WC50cmFuc2xhdGUodGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5jb3ModGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSksdGhpcy5zaGFkb3dPZmZzZXQqTWF0aC5zaW4odGhpcy5zaGFkb3dBbmdsZS8xODAqTWF0aC5QSSkpO1guYmVnaW5QYXRoKCk7WC5zdHJva2VTdHlsZT1hajtYLmxpbmVXaWR0aD10aGlzLnNoYWRvd1dpZHRoO1guYXJjKDAsMCxVLGFjLGFCLGZhbHNlKTtYLmNsb3NlUGF0aCgpO1guc3Ryb2tlKCl9WC5yZXN0b3JlKCk7WC5zYXZlKCk7dmFyIGF6PXBhcnNlSW50KCh0aGlzLnNoYWRvd0RlcHRoKzEpLzIsMTApO2Zvcih2YXIgYWE9MDthYTxhejthYSsrKXtYLnRyYW5zbGF0ZSh0aGlzLnNoYWRvd09mZnNldCpNYXRoLmNvcyh0aGlzLnNoYWRvd0FuZ2xlLzE4MCpNYXRoLlBJKSx0aGlzLnNoYWRvd09mZnNldCpNYXRoLnNpbih0aGlzLnNoYWRvd0FuZ2xlLzE4MCpNYXRoLlBJKSk7WC5iZWdpblBhdGgoKTtYLmZpbGxTdHlsZT1hajtYLmFyYygwLDAsdGhpcy5odWJSYWRpdXMsQixhZixmYWxzZSk7WC5jbG9zZVBhdGgoKTtYLmZpbGwoKX1YLnJlc3RvcmUoKTtYLnNhdmUoKTtYLmJlZ2luUGF0aCgpO1guc3Ryb2tlU3R5bGU9dGhpcy5yaW5nQ29sb3I7WC5saW5lV2lkdGg9dGhpcy5yaW5nV2lkdGg7WC5hcmMoMCwwLFUsYWMsYUIsZmFsc2UpO1guY2xvc2VQYXRoKCk7WC5zdHJva2UoKTtYLnJlc3RvcmUoKTtYLnNhdmUoKTtYLmJlZ2luUGF0aCgpO1guZmlsbFN0eWxlPXRoaXMucmluZ0NvbG9yO1guYXJjKDAsMCx0aGlzLmh1YlJhZGl1cyxCLGFmLGZhbHNlKTtYLmNsb3NlUGF0aCgpO1guZmlsbCgpO1gucmVzdG9yZSgpO2lmKHRoaXMuc2hvd1RpY2tzKXtYLnNhdmUoKTt2YXIgZj10aGlzLnRpY2tPdXRlclJhZGl1cyxhcT10aGlzLnRpY2tMZW5ndGgsdj1hcS8yLEY9dGhpcy5udW1iZXJNaW5vclRpY2tzLGFtPXRoaXMuc3BhbipNYXRoLlBJLzE4MC8odGhpcy50aWNrcy5sZW5ndGgtMSkscD1hbS8oRisxKTtmb3IoYWE9MDthYTx0aGlzLnRpY2tzLmxlbmd0aDthYSsrKXtYLmJlZ2luUGF0aCgpO1gubGluZVdpZHRoPTEuNSt0aGlzLmRpYW1ldGVyLzM2MDtYLnN0cm9rZVN0eWxlPXRoaXMucmluZ0NvbG9yO3ZhciBhZT1hbSphYSthRTtYLm1vdmVUbygtZipNYXRoLmNvcyhhbSphYSthRSksZipNYXRoLnNpbihhbSphYSthRSkpO1gubGluZVRvKC0oZi1hcSkqTWF0aC5jb3MoYW0qYWErYUUpLChmLWFxKSpNYXRoLnNpbihhbSphYSthRSkpO3RoaXMuX3RpY2tQb2ludHMucHVzaChbKGYtYXEpKk1hdGguY29zKGFtKmFhK2FFKSt0aGlzLl9jZW50ZXJbMF0rdGhpcy5jYW52YXMuX29mZnNldHMubGVmdCwoZi1hcSkqTWF0aC5zaW4oYW0qYWErYUUpK3RoaXMuX2NlbnRlclsxXSt0aGlzLmNhbnZhcy5fb2Zmc2V0cy50b3AsYW0qYWErYUVdKTtYLnN0cm9rZSgpO1gubGluZVdpZHRoPTErdGhpcy5kaWFtZXRlci80NDA7aWYoYWE8dGhpcy50aWNrcy5sZW5ndGgtMSl7Zm9yKHZhciBZPTE7WTw9RjtZKyspe1guYmVnaW5QYXRoKCk7WC5tb3ZlVG8oLWYqTWF0aC5jb3MoYW0qYWErcCpZK2FFKSxmKk1hdGguc2luKGFtKmFhK3AqWSthRSkpO1gubGluZVRvKC0oZi12KSpNYXRoLmNvcyhhbSphYStwKlkrYUUpLChmLXYpKk1hdGguc2luKGFtKmFhK3AqWSthRSkpO1guc3Ryb2tlKCl9fX1YLnJlc3RvcmUoKX1pZih0aGlzLnNob3dUaWNrTGFiZWxzKXt2YXIgSixXLFQsYU8sZyxHLG49MDt2YXIgYW49dGhpcy50aWNrUGFkZGluZyooMS0xLyh0aGlzLmRpYW1ldGVyLzgwKzEpKTtmb3IoYWE9MDthYTx0aGlzLnRpY2tzLmxlbmd0aDthYSsrKXtKPWMoJzxkaXYgY2xhc3M9ImpxcGxvdC1tZXRlckdhdWdlLXRpY2siIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsiPicrdGhpcy50aWNrc1thYV1bMV0rIjwvZGl2PiIpO3RoaXMuY2FudmFzLl9lbGVtLmFmdGVyKEopO2FPPUoub3V0ZXJXaWR0aCh0cnVlKTtnPUoub3V0ZXJIZWlnaHQodHJ1ZSk7Vz10aGlzLl90aWNrUG9pbnRzW2FhXVswXS1hTyoodGhpcy5fdGlja1BvaW50c1thYV1bMl0tTWF0aC5QSSkvTWF0aC5QSS1hbipNYXRoLmNvcyh0aGlzLl90aWNrUG9pbnRzW2FhXVsyXSk7VD10aGlzLl90aWNrUG9pbnRzW2FhXVsxXS1nLzIrZy8yKk1hdGgucG93KE1hdGguYWJzKChNYXRoLnNpbih0aGlzLl90aWNrUG9pbnRzW2FhXVsyXSkpKSwwLjUpK2FuLzMqTWF0aC5wb3coTWF0aC5hYnMoKE1hdGguc2luKHRoaXMuX3RpY2tQb2ludHNbYWFdWzJdKSkpLDAuNSk7Si5jc3Moe2xlZnQ6Vyx0b3A6VCxjb2xvcjp0aGlzLnRpY2tDb2xvcn0pO0c9YU8qTWF0aC5jb3ModGhpcy5fdGlja1BvaW50c1thYV1bMl0pK2cqTWF0aC5zaW4oTWF0aC5QSS8yK3RoaXMuX3RpY2tQb2ludHNbYWFdWzJdLzIpO249KEc+bik/RzpufX1pZih0aGlzLmxhYmVsJiZ0aGlzLmxhYmVsUG9zaXRpb249PSJpbnNpZGUiKXt2YXIgVz10aGlzLl9jZW50ZXJbMF0rdGhpcy5jYW52YXMuX29mZnNldHMubGVmdDt2YXIgYW49dGhpcy50aWNrUGFkZGluZyooMS0xLyh0aGlzLmRpYW1ldGVyLzgwKzEpKTt2YXIgVD0wLjUqKHRoaXMuX2NlbnRlclsxXSt0aGlzLmNhbnZhcy5fb2Zmc2V0cy50b3AtdGhpcy5odWJSYWRpdXMpKzAuNSoodGhpcy5fY2VudGVyWzFdK3RoaXMuY2FudmFzLl9vZmZzZXRzLnRvcC10aGlzLnRpY2tPdXRlclJhZGl1cyt0aGlzLnRpY2tMZW5ndGgrYW4pK3RoaXMubGFiZWxIZWlnaHRBZGp1c3Q7Vy09dGhpcy5fbGFiZWxFbGVtLm91dGVyV2lkdGgodHJ1ZSkvMjtULT10aGlzLl9sYWJlbEVsZW0ub3V0ZXJIZWlnaHQodHJ1ZSkvMjt0aGlzLl9sYWJlbEVsZW0uY3NzKHtsZWZ0OlcsdG9wOlR9KX1lbHNle2lmKHRoaXMubGFiZWwmJnRoaXMubGFiZWxQb3NpdGlvbj09ImJvdHRvbSIpe3ZhciBXPXRoaXMuX2NlbnRlclswXSt0aGlzLmNhbnZhcy5fb2Zmc2V0cy5sZWZ0LXRoaXMuX2xhYmVsRWxlbS5vdXRlcldpZHRoKHRydWUpLzI7dmFyIFQ9dGhpcy5fY2VudGVyWzFdK3RoaXMuY2FudmFzLl9vZmZzZXRzLnRvcCt0aGlzLmlubmVyUGFkK3RoaXMucmluZ1dpZHRoK3RoaXMucGFkZGluZyt0aGlzLmxhYmVsSGVpZ2h0QWRqdXN0O3RoaXMuX2xhYmVsRWxlbS5jc3Moe2xlZnQ6Vyx0b3A6VH0pfX1YLnNhdmUoKTt2YXIgYXg9dGhpcy5pbnRlcnZhbElubmVyUmFkaXVzfHx0aGlzLmh1YlJhZGl1cyoxLjU7aWYodGhpcy5pbnRlcnZhbE91dGVyUmFkaXVzPT1udWxsKXtpZih0aGlzLnNob3dUaWNrTGFiZWxzKXt2YXIgYWc9KHRoaXMudGlja091dGVyUmFkaXVzLXRoaXMudGlja0xlbmd0aC10aGlzLnRpY2tQYWRkaW5nLXRoaXMuZGlhbWV0ZXIvOCl9ZWxzZXt2YXIgYWc9KHRoaXMudGlja091dGVyUmFkaXVzLXRoaXMudGlja0xlbmd0aC10aGlzLmRpYW1ldGVyLzE2KX19ZWxzZXt2YXIgYWc9dGhpcy5pbnRlcnZhbE91dGVyUmFkaXVzfXZhciBQPXRoaXMubWF4LXRoaXMubWluO3ZhciBhRD10aGlzLmludGVydmFsc1t0aGlzLmludGVydmFscy5sZW5ndGgtMV0tdGhpcy5taW47dmFyIHksWix1PXRoaXMuc3BhbipNYXRoLlBJLzE4MDtmb3IoYWE9MDthYTx0aGlzLmludGVydmFscy5sZW5ndGg7YWErKyl7eT0oYWE9PTApP2FFOmFFKyh0aGlzLmludGVydmFsc1thYS0xXVswXS10aGlzLm1pbikqdS9QO2lmKHk8MCl7eT0wfVo9YUUrKHRoaXMuaW50ZXJ2YWxzW2FhXVswXS10aGlzLm1pbikqdS9QO2lmKFo8MCl7Wj0wfVguYmVnaW5QYXRoKCk7WC5maWxsU3R5bGU9dGhpcy5pbnRlcnZhbHNbYWFdWzJdO1guYXJjKDAsMCxheCx5LFosZmFsc2UpO1gubGluZVRvKGFnKk1hdGguY29zKFopLGFnKk1hdGguc2luKFopKTtYLmFyYygwLDAsYWcsWix5LHRydWUpO1gubGluZVRvKGF4Kk1hdGguY29zKHkpLGF4Kk1hdGguc2luKHkpKTtYLmNsb3NlUGF0aCgpO1guZmlsbCgpfVgucmVzdG9yZSgpO3ZhciBheT10aGlzLmRhdGFbMF1bMV07dmFyIFI9dGhpcy5tYXgtdGhpcy5taW47aWYodGhpcy5wZWdOZWVkbGUpe2lmKHRoaXMuZGF0YVswXVsxXT50aGlzLm1heCtSKjMvdGhpcy5zcGFuKXtheT10aGlzLm1heCtSKjMvdGhpcy5zcGFufWlmKHRoaXMuZGF0YVswXVsxXTx0aGlzLm1pbi1SKjMvdGhpcy5zcGFuKXtheT10aGlzLm1pbi1SKjMvdGhpcy5zcGFufX12YXIgYWw9KGF5LXRoaXMubWluKS9SKnRoaXMuc3BhbipNYXRoLlBJLzE4MCt0aGlzLnN0YXJ0QW5nbGU7WC5zYXZlKCk7WC5iZWdpblBhdGgoKTtYLmZpbGxTdHlsZT10aGlzLnJpbmdDb2xvcjtYLnN0cm9rZVN0eWxlPXRoaXMucmluZ0NvbG9yO3RoaXMubmVlZGxlTGVuZ3RoPSh0aGlzLnRpY2tPdXRlclJhZGl1cy10aGlzLnRpY2tMZW5ndGgpKjAuODU7dGhpcy5uZWVkbGVUaGlja25lc3M9KHRoaXMubmVlZGxlVGhpY2tuZXNzPDIpPzI6dGhpcy5uZWVkbGVUaGlja25lc3M7dmFyIGFLPXRoaXMubmVlZGxlVGhpY2tuZXNzKjAuNDt2YXIgeD10aGlzLm5lZWRsZUxlbmd0aC8xMDt2YXIgcz0odGhpcy5uZWVkbGVUaGlja25lc3MtYUspLzEwO3ZhciBhcjtmb3IodmFyIGFhPTA7YWE8MTA7YWErKyl7YXI9dGhpcy5uZWVkbGVUaGlja25lc3MtYWEqcztYLm1vdmVUbyh4KmFhKk1hdGguY29zKGFsKSx4KmFhKk1hdGguc2luKGFsKSk7WC5saW5lV2lkdGg9YXI7WC5saW5lVG8oeCooYWErMSkqTWF0aC5jb3MoYWwpLHgqKGFhKzEpKk1hdGguc2luKGFsKSk7WC5zdHJva2UoKX1YLnJlc3RvcmUoKX1lbHNle3RoaXMuX2NlbnRlcj1bKEstYXQqYWkpLzIrYXQqYWksKFMtYXQqYWgpLzIrYXQqYWhdfX07Yy5qcXBsb3QuTWV0ZXJHYXVnZUF4aXNSZW5kZXJlcj1mdW5jdGlvbigpe2MuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpfTtjLmpxcGxvdC5NZXRlckdhdWdlQXhpc1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgYy5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7Yy5qcXBsb3QuTWV0ZXJHYXVnZUF4aXNSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9Yy5qcXBsb3QuTWV0ZXJHYXVnZUF4aXNSZW5kZXJlcjtjLmpxcGxvdC5NZXRlckdhdWdlQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGUpe3RoaXMudGlja1JlbmRlcmVyPWMuanFwbG90Lk1ldGVyR2F1Z2VUaWNrUmVuZGVyZXI7Yy5leHRlbmQodHJ1ZSx0aGlzLGUpO3RoaXMuX2RhdGFCb3VuZHM9e21pbjowLG1heDoxMDB9O3RoaXMubWluPTA7dGhpcy5tYXg9MTAwO3RoaXMuc2hvd1RpY2tzPWZhbHNlO3RoaXMudGlja3M9W107dGhpcy5zaG93TWFyaz1mYWxzZTt0aGlzLnNob3c9ZmFsc2V9O2MuanFwbG90Lk1ldGVyR2F1Z2VMZWdlbmRSZW5kZXJlcj1mdW5jdGlvbigpe2MuanFwbG90LlRhYmxlTGVnZW5kUmVuZGVyZXIuY2FsbCh0aGlzKX07Yy5qcXBsb3QuTWV0ZXJHYXVnZUxlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZT1uZXcgYy5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlcigpO2MuanFwbG90Lk1ldGVyR2F1Z2VMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9Yy5qcXBsb3QuTWV0ZXJHYXVnZUxlZ2VuZFJlbmRlcmVyO2MuanFwbG90Lk1ldGVyR2F1Z2VMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihlKXt0aGlzLm51bWJlclJvd3M9bnVsbDt0aGlzLm51bWJlckNvbHVtbnM9bnVsbDtjLmV4dGVuZCh0cnVlLHRoaXMsZSl9O2MuanFwbG90Lk1ldGVyR2F1Z2VMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbigpe2lmKHRoaXMuc2hvdyl7dmFyIHA9dGhpcy5fc2VyaWVzO3ZhciB4PSJwb3NpdGlvbjphYnNvbHV0ZTsiO3grPSh0aGlzLmJhY2tncm91bmQpPyJiYWNrZ3JvdW5kOiIrdGhpcy5iYWNrZ3JvdW5kKyI7IjoiIjt4Kz0odGhpcy5ib3JkZXIpPyJib3JkZXI6Iit0aGlzLmJvcmRlcisiOyI6IiI7eCs9KHRoaXMuZm9udFNpemUpPyJmb250LXNpemU6Iit0aGlzLmZvbnRTaXplKyI7IjoiIjt4Kz0odGhpcy5mb250RmFtaWx5KT8iZm9udC1mYW1pbHk6Iit0aGlzLmZvbnRGYW1pbHkrIjsiOiIiO3grPSh0aGlzLnRleHRDb2xvcik/ImNvbG9yOiIrdGhpcy50ZXh0Q29sb3IrIjsiOiIiO3grPSh0aGlzLm1hcmdpblRvcCE9bnVsbCk/Im1hcmdpbi10b3A6Iit0aGlzLm1hcmdpblRvcCsiOyI6IiI7eCs9KHRoaXMubWFyZ2luQm90dG9tIT1udWxsKT8ibWFyZ2luLWJvdHRvbToiK3RoaXMubWFyZ2luQm90dG9tKyI7IjoiIjt4Kz0odGhpcy5tYXJnaW5MZWZ0IT1udWxsKT8ibWFyZ2luLWxlZnQ6Iit0aGlzLm1hcmdpbkxlZnQrIjsiOiIiO3grPSh0aGlzLm1hcmdpblJpZ2h0IT1udWxsKT8ibWFyZ2luLXJpZ2h0OiIrdGhpcy5tYXJnaW5SaWdodCsiOyI6IiI7dGhpcy5fZWxlbT1jKCc8dGFibGUgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiIHN0eWxlPSInK3grJyI+PC90YWJsZT4nKTt2YXIgZj1mYWxzZSxxPWZhbHNlLHUsbzt2YXIgdz1wWzBdO2lmKHcuc2hvdyl7dmFyIHQ9dy5kYXRhO2lmKHRoaXMubnVtYmVyUm93cyl7dT10aGlzLm51bWJlclJvd3M7aWYoIXRoaXMubnVtYmVyQ29sdW1ucyl7bz1NYXRoLmNlaWwodC5sZW5ndGgvdSl9ZWxzZXtvPXRoaXMubnVtYmVyQ29sdW1uc319ZWxzZXtpZih0aGlzLm51bWJlckNvbHVtbnMpe289dGhpcy5udW1iZXJDb2x1bW5zO3U9TWF0aC5jZWlsKHQubGVuZ3RoL3RoaXMubnVtYmVyQ29sdW1ucyl9ZWxzZXt1PXQubGVuZ3RoO289MX19dmFyIG4sbSxyLGcsZSxsLGssaDt2YXIgdj0wO2ZvcihuPTA7bjx1O24rKyl7aWYocSl7cj1jKCc8dHIgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiPjwvdHI+JykucHJlcGVuZFRvKHRoaXMuX2VsZW0pfWVsc2V7cj1jKCc8dHIgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQiPjwvdHI+JykuYXBwZW5kVG8odGhpcy5fZWxlbSl9Zm9yKG09MDttPG87bSsrKXtpZih2PHQubGVuZ3RoKXtsPXRoaXMubGFiZWxzW3ZdfHx0W3ZdWzBdLnRvU3RyaW5nKCk7aD13LmNvbG9yO2lmKCFxKXtpZihuPjApe2Y9dHJ1ZX1lbHNle2Y9ZmFsc2V9fWVsc2V7aWYobj09dS0xKXtmPWZhbHNlfWVsc2V7Zj10cnVlfX1rPShmKT90aGlzLnJvd1NwYWNpbmc6IjAiO2c9YygnPHRkIGNsYXNzPSJqcXBsb3QtdGFibGUtbGVnZW5kIiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7cGFkZGluZy10b3A6JytrKyc7Ij48ZGl2PjxkaXYgY2xhc3M9ImpxcGxvdC10YWJsZS1sZWdlbmQtc3dhdGNoIiBzdHlsZT0iYm9yZGVyLWNvbG9yOicraCsnOyI+PC9kaXY+PC9kaXY+PC90ZD4nKTtlPWMoJzx0ZCBjbGFzcz0ianFwbG90LXRhYmxlLWxlZ2VuZCIgc3R5bGU9InBhZGRpbmctdG9wOicraysnOyI+PC90ZD4nKTtpZih0aGlzLmVzY2FwZUh0bWwpe2UudGV4dChsKX1lbHNle2UuaHRtbChsKX1pZihxKXtlLnByZXBlbmRUbyhyKTtnLnByZXBlbmRUbyhyKX1lbHNle2cuYXBwZW5kVG8ocik7ZS5hcHBlbmRUbyhyKX1mPXRydWV9disrfX19fXJldHVybiB0aGlzLl9lbGVtfTtmdW5jdGlvbiBhKGosaCxmKXtmPWZ8fHt9O2YuYXhlc0RlZmF1bHRzPWYuYXhlc0RlZmF1bHRzfHx7fTtmLmxlZ2VuZD1mLmxlZ2VuZHx8e307Zi5zZXJpZXNEZWZhdWx0cz1mLnNlcmllc0RlZmF1bHRzfHx7fTtmLmdyaWQ9Zi5ncmlkfHx7fTt2YXIgZT1mYWxzZTtpZihmLnNlcmllc0RlZmF1bHRzLnJlbmRlcmVyPT1jLmpxcGxvdC5NZXRlckdhdWdlUmVuZGVyZXIpe2U9dHJ1ZX1lbHNle2lmKGYuc2VyaWVzKXtmb3IodmFyIGc9MDtnPGYuc2VyaWVzLmxlbmd0aDtnKyspe2lmKGYuc2VyaWVzW2ddLnJlbmRlcmVyPT1jLmpxcGxvdC5NZXRlckdhdWdlUmVuZGVyZXIpe2U9dHJ1ZX19fX1pZihlKXtmLmF4ZXNEZWZhdWx0cy5yZW5kZXJlcj1jLmpxcGxvdC5NZXRlckdhdWdlQXhpc1JlbmRlcmVyO2YubGVnZW5kLnJlbmRlcmVyPWMuanFwbG90Lk1ldGVyR2F1Z2VMZWdlbmRSZW5kZXJlcjtmLmxlZ2VuZC5wcmVEcmF3PXRydWU7Zi5ncmlkLmJhY2tncm91bmQ9Zi5ncmlkLmJhY2tncm91bmR8fCJ3aGl0ZSI7Zi5ncmlkLmRyYXdHcmlkbGluZXM9ZmFsc2U7Zi5ncmlkLmJvcmRlcldpZHRoPShmLmdyaWQuYm9yZGVyV2lkdGghPW51bGwpP2YuZ3JpZC5ib3JkZXJXaWR0aDowO2YuZ3JpZC5zaGFkb3c9KGYuZ3JpZC5zaGFkb3chPW51bGwpP2YuZ3JpZC5zaGFkb3c6ZmFsc2V9fWZ1bmN0aW9uIGQoZSl7fWMuanFwbG90LnByZUluaXRIb29rcy5wdXNoKGEpO2MuanFwbG90LnBvc3RQYXJzZU9wdGlvbnNIb29rcy5wdXNoKGQpO2MuanFwbG90Lk1ldGVyR2F1Z2VUaWNrUmVuZGVyZXI9ZnVuY3Rpb24oKXtjLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyLmNhbGwodGhpcyl9O2MuanFwbG90Lk1ldGVyR2F1Z2VUaWNrUmVuZGVyZXIucHJvdG90eXBlPW5ldyBjLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyKCk7Yy5qcXBsb3QuTWV0ZXJHYXVnZVRpY2tSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9Yy5qcXBsb3QuTWV0ZXJHYXVnZVRpY2tSZW5kZXJlcn0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.mobile.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoqDQogKiBqcXBsb3QuanF1ZXJ5bW9iaWxlIHBsdWdpbg0KICogalF1ZXJ5IE1vYmlsZSB2aXJ0dWFsIGV2ZW50IHN1cHBvcnQuDQogKg0KICogVmVyc2lvbjogMS4wLjgNCiAqIFJldmlzaW9uOiAxMjUwDQogKg0KICogQ29weXJpZ2h0IChjKSAyMDExIFRha2FzaGkgT2thbW90bw0KICoganFQbG90IGlzIGN1cnJlbnRseSBhdmFpbGFibGUgZm9yIHVzZSBpbiBhbGwgcGVyc29uYWwgb3IgY29tbWVyY2lhbCBwcm9qZWN0cyANCiAqIHVuZGVyIGJvdGggdGhlIE1JVCAoaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHApIGFuZCBHUEwgDQogKiB2ZXJzaW9uIDIuMCAoaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0yLjAuaHRtbCkgbGljZW5zZXMuIFRoaXMgbWVhbnMgdGhhdCB5b3UgY2FuIA0KICogY2hvb3NlIHRoZSBsaWNlbnNlIHRoYXQgYmVzdCBzdWl0cyB5b3VyIHByb2plY3QgYW5kIHVzZSBpdCBhY2NvcmRpbmdseS4gDQogKg0KICogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCB0aGUgYXV0aG9yIHdvdWxkIGFwcHJlY2lhdGUgYW4gZW1haWwgbGV0dGluZyBoaW0gDQogKiBrbm93IG9mIGFueSBzdWJzdGFudGlhbCB1c2Ugb2YganFQbG90LiAgWW91IGNhbiByZWFjaCB0aGUgYXV0aG9yIGF0OiANCiAqIGNocmlzIGF0IGpxcGxvdCBkb3QgY29tIG9yIHNlZSBodHRwOi8vd3d3LmpxcGxvdC5jb20vaW5mby5waHAgLg0KICoNCiAqIElmIHlvdSBhcmUgZmVlbGluZyBraW5kIGFuZCBnZW5lcm91cywgY29uc2lkZXIgc3VwcG9ydGluZyB0aGUgcHJvamVjdCBieQ0KICogbWFraW5nIGEgZG9uYXRpb24gYXQ6IGh0dHA6Ly93d3cuanFwbG90LmNvbS9kb25hdGUucGhwIC4NCiAqDQogKi8NCihmdW5jdGlvbigkKSB7DQogICAgZnVuY3Rpb24gcG9zdEluaXQodGFyZ2V0LCBkYXRhLCBvcHRpb25zKXsNCiAgICAgICAgdGhpcy5iaW5kQ3VzdG9tRXZlbnRzID0gZnVuY3Rpb24oKSB7DQogICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJ3ZjbGljaycsIHtwbG90OnRoaXN9LCB0aGlzLm9uQ2xpY2spOw0KICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCdkYmxjbGljaycsIHtwbG90OnRoaXN9LCB0aGlzLm9uRGJsQ2xpY2spOw0KICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCd0YXBob2xkJywge3Bsb3Q6dGhpc30sIHRoaXMub25EYmxDbGljayk7DQogICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJ3Ztb3VzZWRvd24nLCB7cGxvdDp0aGlzfSwgdGhpcy5vbk1vdXNlRG93bik7DQogICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJ3Ztb3VzZW1vdmUnLCB7cGxvdDp0aGlzfSwgdGhpcy5vbk1vdXNlTW92ZSk7DQogICAgICAgICAgICB0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoJ21vdXNlZW50ZXInLCB7cGxvdDp0aGlzfSwgdGhpcy5vbk1vdXNlRW50ZXIpOw0KICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCdtb3VzZWxlYXZlJywge3Bsb3Q6dGhpc30sIHRoaXMub25Nb3VzZUxlYXZlKTsNCiAgICAgICAgICAgIGlmICh0aGlzLmNhcHR1cmVSaWdodENsaWNrKSB7DQogICAgICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCd2bW91c2V1cCcsIHtwbG90OnRoaXN9LCB0aGlzLm9uUmlnaHRDbGljayk7DQogICAgICAgICAgICAgICAgdGhpcy5ldmVudENhbnZhcy5fZWxlbS5nZXQoMCkub25jb250ZXh0bWVudSA9IGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgIHRoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgndm1vdXNldXAnLCB7cGxvdDp0aGlzfSwgdGhpcy5vbk1vdXNlVXApOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9Ow0KICAgICAgICB0aGlzLnBsdWdpbnMubW9iaWxlID0gdHJ1ZTsNCiAgICB9DQogICAgJC5qcXBsb3QucG9zdEluaXRIb29rcy5wdXNoKHBvc3RJbml0KTsNCn0pKGpRdWVyeSk7]]></data>
	</file>
	<file>
	  <filename>/jqplot/plugins/jqplot.mobile.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oYil7ZnVuY3Rpb24gYShlLGQsYyl7dGhpcy5iaW5kQ3VzdG9tRXZlbnRzPWZ1bmN0aW9uKCl7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCJ2Y2xpY2siLHtwbG90OnRoaXN9LHRoaXMub25DbGljayk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCJkYmxjbGljayIse3Bsb3Q6dGhpc30sdGhpcy5vbkRibENsaWNrKTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoInRhcGhvbGQiLHtwbG90OnRoaXN9LHRoaXMub25EYmxDbGljayk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCJ2bW91c2Vkb3duIix7cGxvdDp0aGlzfSx0aGlzLm9uTW91c2VEb3duKTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJpbmQoInZtb3VzZW1vdmUiLHtwbG90OnRoaXN9LHRoaXMub25Nb3VzZU1vdmUpO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgibW91c2VlbnRlciIse3Bsb3Q6dGhpc30sdGhpcy5vbk1vdXNlRW50ZXIpO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgibW91c2VsZWF2ZSIse3Bsb3Q6dGhpc30sdGhpcy5vbk1vdXNlTGVhdmUpO2lmKHRoaXMuY2FwdHVyZVJpZ2h0Q2xpY2spe3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgidm1vdXNldXAiLHtwbG90OnRoaXN9LHRoaXMub25SaWdodENsaWNrKTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmdldCgwKS5vbmNvbnRleHRtZW51PWZ1bmN0aW9uKCl7cmV0dXJuIGZhbHNlfX1lbHNle3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgidm1vdXNldXAiLHtwbG90OnRoaXN9LHRoaXMub25Nb3VzZVVwKX19O3RoaXMucGx1Z2lucy5tb2JpbGU9dHJ1ZX1iLmpxcGxvdC5wb3N0SW5pdEhvb2tzLnB1c2goYSl9KShqUXVlcnkpOw==]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oYSl7YS5qcXBsb3QuT0hMQ1JlbmRlcmVyPWZ1bmN0aW9uKCl7YS5qcXBsb3QuTGluZVJlbmRlcmVyLmNhbGwodGhpcyk7dGhpcy5jYW5kbGVTdGljaz1mYWxzZTt0aGlzLnRpY2tMZW5ndGg9ImF1dG8iO3RoaXMuYm9keVdpZHRoPSJhdXRvIjt0aGlzLm9wZW5Db2xvcj1udWxsO3RoaXMuY2xvc2VDb2xvcj1udWxsO3RoaXMud2lja0NvbG9yPW51bGw7dGhpcy5maWxsVXBCb2R5PWZhbHNlO3RoaXMuZmlsbERvd25Cb2R5PXRydWU7dGhpcy51cEJvZHlDb2xvcj1udWxsO3RoaXMuZG93bkJvZHlDb2xvcj1udWxsO3RoaXMuaGxjPWZhbHNlO3RoaXMubGluZVdpZHRoPTEuNTt0aGlzLl90aWNrTGVuZ3RoO3RoaXMuX2JvZHlXaWR0aH07YS5qcXBsb3QuT0hMQ1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgYS5qcXBsb3QuTGluZVJlbmRlcmVyKCk7YS5qcXBsb3QuT0hMQ1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hLmpxcGxvdC5PSExDUmVuZGVyZXI7YS5qcXBsb3QuT0hMQ1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGUpe2U9ZXx8e307dGhpcy5saW5lV2lkdGg9ZS5saW5lV2lkdGh8fDEuNTthLmpxcGxvdC5MaW5lUmVuZGVyZXIucHJvdG90eXBlLmluaXQuY2FsbCh0aGlzLGUpO3RoaXMuX3R5cGU9Im9obGMiO3ZhciBiPXRoaXMuX3lheGlzLl9kYXRhQm91bmRzO3ZhciBmPXRoaXMuX3Bsb3REYXRhO2lmKGZbMF0ubGVuZ3RoPDUpe3RoaXMucmVuZGVyZXIuaGxjPXRydWU7Zm9yKHZhciBjPTA7YzxmLmxlbmd0aDtjKyspe2lmKGZbY11bMl08Yi5taW58fGIubWluPT1udWxsKXtiLm1pbj1mW2NdWzJdfWlmKGZbY11bMV0+Yi5tYXh8fGIubWF4PT1udWxsKXtiLm1heD1mW2NdWzFdfX19ZWxzZXtmb3IodmFyIGM9MDtjPGYubGVuZ3RoO2MrKyl7aWYoZltjXVszXTxiLm1pbnx8Yi5taW49PW51bGwpe2IubWluPWZbY11bM119aWYoZltjXVsyXT5iLm1heHx8Yi5tYXg9PW51bGwpe2IubWF4PWZbY11bMl19fX19O2EuanFwbG90Lk9ITENSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbihBLE4sail7dmFyIEo9dGhpcy5kYXRhO3ZhciB2PXRoaXMuX3hheGlzLm1pbjt2YXIgej10aGlzLl94YXhpcy5tYXg7dmFyIGw9MDt2YXIgSz1KLmxlbmd0aDt2YXIgcD10aGlzLl94YXhpcy5zZXJpZXNfdTJwO3ZhciBHPXRoaXMuX3lheGlzLnNlcmllc191MnA7dmFyIEQsRSxmLE0sRixuLE8sQzt2YXIgeTt2YXIgdT10aGlzLnJlbmRlcmVyO3ZhciBzPShqIT11bmRlZmluZWQpP2o6e307dmFyIGs9KHMuc2hhZG93IT11bmRlZmluZWQpP3Muc2hhZG93OnRoaXMuc2hhZG93O3ZhciBCPShzLmZpbGwhPXVuZGVmaW5lZCk/cy5maWxsOnRoaXMuZmlsbDt2YXIgYz0ocy5maWxsQW5kU3Ryb2tlIT11bmRlZmluZWQpP3MuZmlsbEFuZFN0cm9rZTp0aGlzLmZpbGxBbmRTdHJva2U7dS5ib2R5V2lkdGg9KHMuYm9keVdpZHRoIT11bmRlZmluZWQpP3MuYm9keVdpZHRoOnUuYm9keVdpZHRoO3UudGlja0xlbmd0aD0ocy50aWNrTGVuZ3RoIT11bmRlZmluZWQpP3MudGlja0xlbmd0aDp1LnRpY2tMZW5ndGg7QS5zYXZlKCk7aWYodGhpcy5zaG93KXt2YXIgbSxxLGcsUSx0O2Zvcih2YXIgRD0wO0Q8Si5sZW5ndGg7RCsrKXtpZihKW0RdWzBdPHYpe2w9RH1lbHNle2lmKEpbRF1bMF08eil7Sz1EKzF9fX12YXIgST10aGlzLmdyaWREYXRhW0stMV1bMF0tdGhpcy5ncmlkRGF0YVtsXVswXTt2YXIgTD1LLWw7dHJ5e3ZhciBQPU1hdGguYWJzKHRoaXMuX3hheGlzLnNlcmllc191MnAocGFyc2VJbnQodGhpcy5feGF4aXMuX2ludGVydmFsU3RhdHNbMF0uc29ydGVkSW50ZXJ2YWxzWzBdLmludGVydmFsLDEwKSktdGhpcy5feGF4aXMuc2VyaWVzX3UycCgwKSl9Y2F0Y2goSCl7dmFyIFA9SS9MfWlmKHUuY2FuZGxlU3RpY2spe2lmKHR5cGVvZih1LmJvZHlXaWR0aCk9PSJudW1iZXIiKXt1Ll9ib2R5V2lkdGg9dS5ib2R5V2lkdGh9ZWxzZXt1Ll9ib2R5V2lkdGg9TWF0aC5taW4oMjAsUC8xLjY1KX19ZWxzZXtpZih0eXBlb2YodS50aWNrTGVuZ3RoKT09Im51bWJlciIpe3UuX3RpY2tMZW5ndGg9dS50aWNrTGVuZ3RofWVsc2V7dS5fdGlja0xlbmd0aD1NYXRoLm1pbigxMCxQLzMuNSl9fWZvcih2YXIgRD1sO0Q8SztEKyspe209cChKW0RdWzBdKTtpZih1LmhsYyl7cT1udWxsO2c9RyhKW0RdWzFdKTtRPUcoSltEXVsyXSk7dD1HKEpbRF1bM10pfWVsc2V7cT1HKEpbRF1bMV0pO2c9RyhKW0RdWzJdKTtRPUcoSltEXVszXSk7dD1HKEpbRF1bNF0pfXk9e307aWYodS5jYW5kbGVTdGljayYmIXUuaGxjKXtuPXUuX2JvZHlXaWR0aDtPPW0tbi8yO2lmKHQ8cSl7aWYodS53aWNrQ29sb3Ipe3kuY29sb3I9dS53aWNrQ29sb3J9ZWxzZXtpZih1LmRvd25Cb2R5Q29sb3Ipe3kuY29sb3I9dS51cEJvZHlDb2xvcn19Zj1hLmV4dGVuZCh0cnVlLHt9LHMseSk7dS5zaGFwZVJlbmRlcmVyLmRyYXcoQSxbW20sZ10sW20sdF1dLGYpO3Uuc2hhcGVSZW5kZXJlci5kcmF3KEEsW1ttLHFdLFttLFFdXSxmKTt5PXt9O009dDtGPXEtdDtpZih1LmZpbGxVcEJvZHkpe3kuZmlsbFJlY3Q9dHJ1ZX1lbHNle3kuc3Ryb2tlUmVjdD10cnVlO249bi10aGlzLmxpbmVXaWR0aDtPPW0tbi8yfWlmKHUudXBCb2R5Q29sb3Ipe3kuY29sb3I9dS51cEJvZHlDb2xvcjt5LmZpbGxTdHlsZT11LnVwQm9keUNvbG9yfUM9W08sTSxuLEZdfWVsc2V7aWYodD5xKXtpZih1LndpY2tDb2xvcil7eS5jb2xvcj11LndpY2tDb2xvcn1lbHNle2lmKHUuZG93bkJvZHlDb2xvcil7eS5jb2xvcj11LmRvd25Cb2R5Q29sb3J9fWY9YS5leHRlbmQodHJ1ZSx7fSxzLHkpO3Uuc2hhcGVSZW5kZXJlci5kcmF3KEEsW1ttLGddLFttLHFdXSxmKTt1LnNoYXBlUmVuZGVyZXIuZHJhdyhBLFtbbSx0XSxbbSxRXV0sZik7eT17fTtNPXE7Rj10LXE7aWYodS5maWxsRG93bkJvZHkpe3kuZmlsbFJlY3Q9dHJ1ZX1lbHNle3kuc3Ryb2tlUmVjdD10cnVlO249bi10aGlzLmxpbmVXaWR0aDtPPW0tbi8yfWlmKHUuZG93bkJvZHlDb2xvcil7eS5jb2xvcj11LmRvd25Cb2R5Q29sb3I7eS5maWxsU3R5bGU9dS5kb3duQm9keUNvbG9yfUM9W08sTSxuLEZdfWVsc2V7aWYodS53aWNrQ29sb3Ipe3kuY29sb3I9dS53aWNrQ29sb3J9Zj1hLmV4dGVuZCh0cnVlLHt9LHMseSk7dS5zaGFwZVJlbmRlcmVyLmRyYXcoQSxbW20sZ10sW20sUV1dLGYpO3k9e307eS5maWxsUmVjdD1mYWxzZTt5LnN0cm9rZVJlY3Q9ZmFsc2U7Tz1bbS1uLzIscV07TT1bbStuLzIsdF07bj1udWxsO0Y9bnVsbDtDPVtPLE1dfX1mPWEuZXh0ZW5kKHRydWUse30scyx5KTt1LnNoYXBlUmVuZGVyZXIuZHJhdyhBLEMsZil9ZWxzZXtFPXMuY29sb3I7aWYodS5vcGVuQ29sb3Ipe3MuY29sb3I9dS5vcGVuQ29sb3J9aWYoIXUuaGxjKXt1LnNoYXBlUmVuZGVyZXIuZHJhdyhBLFtbbS11Ll90aWNrTGVuZ3RoLHFdLFttLHFdXSxzKX1zLmNvbG9yPUU7aWYodS53aWNrQ29sb3Ipe3MuY29sb3I9dS53aWNrQ29sb3J9dS5zaGFwZVJlbmRlcmVyLmRyYXcoQSxbW20sZ10sW20sUV1dLHMpO3MuY29sb3I9RTtpZih1LmNsb3NlQ29sb3Ipe3MuY29sb3I9dS5jbG9zZUNvbG9yfXUuc2hhcGVSZW5kZXJlci5kcmF3KEEsW1ttLHRdLFttK3UuX3RpY2tMZW5ndGgsdF1dLHMpO3MuY29sb3I9RX19fUEucmVzdG9yZSgpfTthLmpxcGxvdC5PSExDUmVuZGVyZXIucHJvdG90eXBlLmRyYXdTaGFkb3c9ZnVuY3Rpb24oYixkLGMpe307YS5qcXBsb3QuT0hMQ1JlbmRlcmVyLmNoZWNrT3B0aW9ucz1mdW5jdGlvbihkLGMsYil7aWYoIWIuaGlnaGxpZ2h0ZXIpe2IuaGlnaGxpZ2h0ZXI9e3Nob3dNYXJrZXI6ZmFsc2UsdG9vbHRpcEF4ZXM6InkiLHl2YWx1ZXM6NCxmb3JtYXRTdHJpbmc6Jzx0YWJsZSBjbGFzcz0ianFwbG90LWhpZ2hsaWdodGVyIj48dHI+PHRkPmRhdGU6PC90ZD48dGQ+JXM8L3RkPjwvdHI+PHRyPjx0ZD5vcGVuOjwvdGQ+PHRkPiVzPC90ZD48L3RyPjx0cj48dGQ+aGk6PC90ZD48dGQ+JXM8L3RkPjwvdHI+PHRyPjx0ZD5sb3c6PC90ZD48dGQ+JXM8L3RkPjwvdHI+PHRyPjx0ZD5jbG9zZTo8L3RkPjx0ZD4lczwvdGQ+PC90cj48L3RhYmxlPid9fX19KShqUXVlcnkpOw==]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oZSl7ZS5qcXBsb3QuUGllUmVuZGVyZXI9ZnVuY3Rpb24oKXtlLmpxcGxvdC5MaW5lUmVuZGVyZXIuY2FsbCh0aGlzKX07ZS5qcXBsb3QuUGllUmVuZGVyZXIucHJvdG90eXBlPW5ldyBlLmpxcGxvdC5MaW5lUmVuZGVyZXIoKTtlLmpxcGxvdC5QaWVSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9ZS5qcXBsb3QuUGllUmVuZGVyZXI7ZS5qcXBsb3QuUGllUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24ocSx1KXt0aGlzLmRpYW1ldGVyPW51bGw7dGhpcy5wYWRkaW5nPTIwO3RoaXMuc2xpY2VNYXJnaW49MDt0aGlzLmZpbGw9dHJ1ZTt0aGlzLnNoYWRvd09mZnNldD0yO3RoaXMuc2hhZG93QWxwaGE9MC4wNzt0aGlzLnNoYWRvd0RlcHRoPTU7dGhpcy5oaWdobGlnaHRNb3VzZU92ZXI9dHJ1ZTt0aGlzLmhpZ2hsaWdodE1vdXNlRG93bj1mYWxzZTt0aGlzLmhpZ2hsaWdodENvbG9ycz1bXTt0aGlzLmRhdGFMYWJlbHM9InBlcmNlbnQiO3RoaXMuc2hvd0RhdGFMYWJlbHM9ZmFsc2U7dGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmc9bnVsbDt0aGlzLmRhdGFMYWJlbFRocmVzaG9sZD0zO3RoaXMuZGF0YUxhYmVsUG9zaXRpb25GYWN0b3I9MC41Mjt0aGlzLmRhdGFMYWJlbE51ZGdlPTI7dGhpcy5kYXRhTGFiZWxDZW50ZXJPbj10cnVlO3RoaXMuc3RhcnRBbmdsZT0wO3RoaXMudGlja1JlbmRlcmVyPWUuanFwbG90LlBpZVRpY2tSZW5kZXJlcjt0aGlzLl9kcmF3RGF0YT10cnVlO3RoaXMuX3R5cGU9InBpZSI7aWYocS5oaWdobGlnaHRNb3VzZURvd24mJnEuaGlnaGxpZ2h0TW91c2VPdmVyPT1udWxsKXtxLmhpZ2hsaWdodE1vdXNlT3Zlcj1mYWxzZX1lLmV4dGVuZCh0cnVlLHRoaXMscSk7aWYodGhpcy5zbGljZU1hcmdpbjwwKXt0aGlzLnNsaWNlTWFyZ2luPTB9dGhpcy5fZGlhbWV0ZXI9bnVsbDt0aGlzLl9yYWRpdXM9bnVsbDt0aGlzLl9zbGljZUFuZ2xlcz1bXTt0aGlzLl9oaWdobGlnaHRlZFBvaW50PW51bGw7aWYodGhpcy5oaWdobGlnaHRDb2xvcnMubGVuZ3RoPT0wKXtmb3IodmFyIHM9MDtzPHRoaXMuc2VyaWVzQ29sb3JzLmxlbmd0aDtzKyspe3ZhciByPWUuanFwbG90LmdldENvbG9yQ29tcG9uZW50cyh0aGlzLnNlcmllc0NvbG9yc1tzXSk7dmFyIG89W3JbMF0sclsxXSxyWzJdXTt2YXIgdD1vWzBdK29bMV0rb1syXTtmb3IodmFyIHA9MDtwPDM7cCsrKXtvW3BdPSh0PjU3MCk/b1twXSowLjg6b1twXSswLjMqKDI1NS1vW3BdKTtvW3BdPXBhcnNlSW50KG9bcF0sMTApfXRoaXMuaGlnaGxpZ2h0Q29sb3JzLnB1c2goInJnYigiK29bMF0rIiwiK29bMV0rIiwiK29bMl0rIikiKX19dGhpcy5oaWdobGlnaHRDb2xvckdlbmVyYXRvcj1uZXcgZS5qcXBsb3QuQ29sb3JHZW5lcmF0b3IodGhpcy5oaWdobGlnaHRDb2xvcnMpO3UucG9zdFBhcnNlT3B0aW9uc0hvb2tzLmFkZE9uY2UobSk7dS5wb3N0SW5pdEhvb2tzLmFkZE9uY2UoZyk7dS5ldmVudExpc3RlbmVySG9va3MuYWRkT25jZSgianFwbG90TW91c2VNb3ZlIixiKTt1LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RNb3VzZURvd24iLGEpO3UuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdE1vdXNlVXAiLGwpO3UuZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdENsaWNrIixmKTt1LmV2ZW50TGlzdGVuZXJIb29rcy5hZGRPbmNlKCJqcXBsb3RSaWdodENsaWNrIixuKTt1LnBvc3REcmF3SG9va3MuYWRkT25jZShpKX07ZS5qcXBsb3QuUGllUmVuZGVyZXIucHJvdG90eXBlLnNldEdyaWREYXRhPWZ1bmN0aW9uKHQpe3ZhciBwPVtdO3ZhciB1PVtdO3ZhciBvPXRoaXMuc3RhcnRBbmdsZS8xODAqTWF0aC5QSTt2YXIgcz0wO3RoaXMuX2RyYXdEYXRhPWZhbHNlO2Zvcih2YXIgcj0wO3I8dGhpcy5kYXRhLmxlbmd0aDtyKyspe2lmKHRoaXMuZGF0YVtyXVsxXSE9MCl7dGhpcy5fZHJhd0RhdGE9dHJ1ZX1wLnB1c2godGhpcy5kYXRhW3JdWzFdKTt1LnB1c2goW3RoaXMuZGF0YVtyXVswXV0pO2lmKHI+MCl7cFtyXSs9cFtyLTFdfXMrPXRoaXMuZGF0YVtyXVsxXX12YXIgcT1NYXRoLlBJKjIvcFtwLmxlbmd0aC0xXTtmb3IodmFyIHI9MDtyPHAubGVuZ3RoO3IrKyl7dVtyXVsxXT1wW3JdKnE7dVtyXVsyXT10aGlzLmRhdGFbcl1bMV0vc310aGlzLmdyaWREYXRhPXV9O2UuanFwbG90LlBpZVJlbmRlcmVyLnByb3RvdHlwZS5tYWtlR3JpZERhdGE9ZnVuY3Rpb24odCx1KXt2YXIgcD1bXTt2YXIgdj1bXTt2YXIgcz0wO3ZhciBvPXRoaXMuc3RhcnRBbmdsZS8xODAqTWF0aC5QSTt0aGlzLl9kcmF3RGF0YT1mYWxzZTtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7aWYodGhpcy5kYXRhW3JdWzFdIT0wKXt0aGlzLl9kcmF3RGF0YT10cnVlfXAucHVzaCh0W3JdWzFdKTt2LnB1c2goW3Rbcl1bMF1dKTtpZihyPjApe3Bbcl0rPXBbci0xXX1zKz10W3JdWzFdfXZhciBxPU1hdGguUEkqMi9wW3AubGVuZ3RoLTFdO2Zvcih2YXIgcj0wO3I8cC5sZW5ndGg7cisrKXt2W3JdWzFdPXBbcl0qcTt2W3JdWzJdPXRbcl1bMV0vc31yZXR1cm4gdn07ZnVuY3Rpb24gaChvKXtyZXR1cm4gTWF0aC5zaW4oKG8tKG8tTWF0aC5QSSkvOC9NYXRoLlBJKS8yKX1mdW5jdGlvbiBqKHUsdCxvLHYscil7dmFyIHc9MDt2YXIgcT10LXU7dmFyIHM9TWF0aC5hYnMocSk7dmFyIHA9bztpZih2PT1mYWxzZSl7cCs9cn1pZihwPjAmJnM+MC4wMSYmczw2LjI4Mil7dz1wYXJzZUZsb2F0KHApLzIvaChxKX1yZXR1cm4gd31lLmpxcGxvdC5QaWVSZW5kZXJlci5wcm90b3R5cGUuZHJhd1NsaWNlPWZ1bmN0aW9uKEIseix5LHUsdyl7aWYodGhpcy5fZHJhd0RhdGEpe3ZhciBwPXRoaXMuX3JhZGl1czt2YXIgQT10aGlzLmZpbGw7dmFyIHg9dGhpcy5saW5lV2lkdGg7dmFyIHM9dGhpcy5zbGljZU1hcmdpbjtpZih0aGlzLmZpbGw9PWZhbHNlKXtzKz10aGlzLmxpbmVXaWR0aH1CLnNhdmUoKTtCLnRyYW5zbGF0ZSh0aGlzLl9jZW50ZXJbMF0sdGhpcy5fY2VudGVyWzFdKTt2YXIgRD1qKHoseSx0aGlzLnNsaWNlTWFyZ2luLHRoaXMuZmlsbCx0aGlzLmxpbmVXaWR0aCk7dmFyIG89RCpNYXRoLmNvcygoeit5KS8yKTt2YXIgQz1EKk1hdGguc2luKCh6K3kpLzIpO2lmKCh5LXopPD1NYXRoLlBJKXtwLT1EfWVsc2V7cCs9RH1CLnRyYW5zbGF0ZShvLEMpO2lmKHcpe2Zvcih2YXIgdj0wLHQ9dGhpcy5zaGFkb3dEZXB0aDt2PHQ7disrKXtCLnNhdmUoKTtCLnRyYW5zbGF0ZSh0aGlzLnNoYWRvd09mZnNldCpNYXRoLmNvcyh0aGlzLnNoYWRvd0FuZ2xlLzE4MCpNYXRoLlBJKSx0aGlzLnNoYWRvd09mZnNldCpNYXRoLnNpbih0aGlzLnNoYWRvd0FuZ2xlLzE4MCpNYXRoLlBJKSk7cShwKX1mb3IodmFyIHY9MCx0PXRoaXMuc2hhZG93RGVwdGg7djx0O3YrKyl7Qi5yZXN0b3JlKCl9fWVsc2V7cShwKX1CLnJlc3RvcmUoKX1mdW5jdGlvbiBxKHIpe2lmKHk+Ni4yODIrdGhpcy5zdGFydEFuZ2xlKXt5PTYuMjgyK3RoaXMuc3RhcnRBbmdsZTtpZih6Pnkpe3o9Ni4yODErdGhpcy5zdGFydEFuZ2xlfX1pZih6Pj15KXtyZXR1cm59Qi5iZWdpblBhdGgoKTtCLmZpbGxTdHlsZT11O0Iuc3Ryb2tlU3R5bGU9dTtCLmxpbmVXaWR0aD14O0IuYXJjKDAsMCxyLHoseSxmYWxzZSk7Qi5saW5lVG8oMCwwKTtCLmNsb3NlUGF0aCgpO2lmKEEpe0IuZmlsbCgpfWVsc2V7Qi5zdHJva2UoKX19fTtlLmpxcGxvdC5QaWVSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbihCLHosRSxvKXt2YXIgVzt2YXIgSD0oRSE9dW5kZWZpbmVkKT9FOnt9O3ZhciB0PTA7dmFyIHM9MDt2YXIgTj0xO3ZhciBMPW5ldyBlLmpxcGxvdC5Db2xvckdlbmVyYXRvcih0aGlzLnNlcmllc0NvbG9ycyk7aWYoRS5sZWdlbmRJbmZvJiZFLmxlZ2VuZEluZm8ucGxhY2VtZW50PT0iaW5zaWRlR3JpZCIpe3ZhciBKPUUubGVnZW5kSW5mbztzd2l0Y2goSi5sb2NhdGlvbil7Y2FzZSJudyI6dD1KLndpZHRoK0oueG9mZnNldDticmVhaztjYXNlInciOnQ9Si53aWR0aCtKLnhvZmZzZXQ7YnJlYWs7Y2FzZSJzdyI6dD1KLndpZHRoK0oueG9mZnNldDticmVhaztjYXNlIm5lIjp0PUoud2lkdGgrSi54b2Zmc2V0O049LTE7YnJlYWs7Y2FzZSJlIjp0PUoud2lkdGgrSi54b2Zmc2V0O049LTE7YnJlYWs7Y2FzZSJzZSI6dD1KLndpZHRoK0oueG9mZnNldDtOPS0xO2JyZWFrO2Nhc2UibiI6cz1KLmhlaWdodCtKLnlvZmZzZXQ7YnJlYWs7Y2FzZSJzIjpzPUouaGVpZ2h0K0oueW9mZnNldDtOPS0xO2JyZWFrO2RlZmF1bHQ6YnJlYWt9fXZhciBLPShILnNoYWRvdyE9dW5kZWZpbmVkKT9ILnNoYWRvdzp0aGlzLnNoYWRvdzt2YXIgQT0oSC5maWxsIT11bmRlZmluZWQpP0guZmlsbDp0aGlzLmZpbGw7dmFyIEM9Qi5jYW52YXMud2lkdGg7dmFyIEk9Qi5jYW52YXMuaGVpZ2h0O3ZhciBRPUMtdC0yKnRoaXMucGFkZGluZzt2YXIgWD1JLXMtMip0aGlzLnBhZGRpbmc7dmFyIE09TWF0aC5taW4oUSxYKTt2YXIgWT1NO3RoaXMuX3NsaWNlQW5nbGVzPVtdO3ZhciB2PXRoaXMuc2xpY2VNYXJnaW47aWYodGhpcy5maWxsPT1mYWxzZSl7dis9dGhpcy5saW5lV2lkdGh9dmFyIHE7dmFyIEc9MDt2YXIgUixhYSxaLGFiO3ZhciBEPXRoaXMuc3RhcnRBbmdsZS8xODAqTWF0aC5QSTtmb3IodmFyIFc9MCxWPXoubGVuZ3RoO1c8VjtXKyspe2FhPShXPT0wKT9EOnpbVy0xXVsxXStEO1o9eltXXVsxXStEO3RoaXMuX3NsaWNlQW5nbGVzLnB1c2goW2FhLFpdKTtxPWooYWEsWix0aGlzLnNsaWNlTWFyZ2luLHRoaXMuZmlsbCx0aGlzLmxpbmVXaWR0aCk7aWYoTWF0aC5hYnMoWi1hYSk+TWF0aC5QSSl7Rz1NYXRoLm1heChxLEcpfX1pZih0aGlzLmRpYW1ldGVyIT1udWxsJiZ0aGlzLmRpYW1ldGVyPjApe3RoaXMuX2RpYW1ldGVyPXRoaXMuZGlhbWV0ZXItMipHfWVsc2V7dGhpcy5fZGlhbWV0ZXI9WS0yKkd9aWYodGhpcy5fZGlhbWV0ZXI8Nil7ZS5qcXBsb3QubG9nKCJEaWFtZXRlciBvZiBwaWUgdG9vIHNtYWxsLCBub3QgcmVuZGVyaW5nLiIpO3JldHVybn12YXIgUz10aGlzLl9yYWRpdXM9dGhpcy5fZGlhbWV0ZXIvMjt0aGlzLl9jZW50ZXI9WyhDLU4qdCkvMitOKnQrRypNYXRoLmNvcyhEKSwoSS1OKnMpLzIrTipzK0cqTWF0aC5zaW4oRCldO2lmKHRoaXMuc2hhZG93KXtmb3IodmFyIFc9MCxWPXoubGVuZ3RoO1c8VjtXKyspe2FiPSJyZ2JhKDAsMCwwLCIrdGhpcy5zaGFkb3dBbHBoYSsiKSI7dGhpcy5yZW5kZXJlci5kcmF3U2xpY2UuY2FsbCh0aGlzLEIsdGhpcy5fc2xpY2VBbmdsZXNbV11bMF0sdGhpcy5fc2xpY2VBbmdsZXNbV11bMV0sYWIsdHJ1ZSl9fWZvcih2YXIgVz0wO1c8ei5sZW5ndGg7VysrKXt0aGlzLnJlbmRlcmVyLmRyYXdTbGljZS5jYWxsKHRoaXMsQix0aGlzLl9zbGljZUFuZ2xlc1tXXVswXSx0aGlzLl9zbGljZUFuZ2xlc1tXXVsxXSxMLm5leHQoKSxmYWxzZSk7aWYodGhpcy5zaG93RGF0YUxhYmVscyYmeltXXVsyXSoxMDA+PXRoaXMuZGF0YUxhYmVsVGhyZXNob2xkKXt2YXIgRixVPSh0aGlzLl9zbGljZUFuZ2xlc1tXXVswXSt0aGlzLl9zbGljZUFuZ2xlc1tXXVsxXSkvMixUO2lmKHRoaXMuZGF0YUxhYmVscz09ImxhYmVsIil7Rj10aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZ3x8IiVzIjtUPWUuanFwbG90LnNwcmludGYoRix6W1ddWzBdKX1lbHNle2lmKHRoaXMuZGF0YUxhYmVscz09InZhbHVlIil7Rj10aGlzLmRhdGFMYWJlbEZvcm1hdFN0cmluZ3x8IiVkIjtUPWUuanFwbG90LnNwcmludGYoRix0aGlzLmRhdGFbV11bMV0pfWVsc2V7aWYodGhpcy5kYXRhTGFiZWxzPT0icGVyY2VudCIpe0Y9dGhpcy5kYXRhTGFiZWxGb3JtYXRTdHJpbmd8fCIlZCUlIjtUPWUuanFwbG90LnNwcmludGYoRix6W1ddWzJdKjEwMCl9ZWxzZXtpZih0aGlzLmRhdGFMYWJlbHMuY29uc3RydWN0b3I9PUFycmF5KXtGPXRoaXMuZGF0YUxhYmVsRm9ybWF0U3RyaW5nfHwiJXMiO1Q9ZS5qcXBsb3Quc3ByaW50ZihGLHRoaXMuZGF0YUxhYmVsc1tXXSl9fX19dmFyIHA9KHRoaXMuX3JhZGl1cykqdGhpcy5kYXRhTGFiZWxQb3NpdGlvbkZhY3Rvcit0aGlzLnNsaWNlTWFyZ2luK3RoaXMuZGF0YUxhYmVsTnVkZ2U7dmFyIFA9dGhpcy5fY2VudGVyWzBdK01hdGguY29zKFUpKnArdGhpcy5jYW52YXMuX29mZnNldHMubGVmdDt2YXIgTz10aGlzLl9jZW50ZXJbMV0rTWF0aC5zaW4oVSkqcCt0aGlzLmNhbnZhcy5fb2Zmc2V0cy50b3A7dmFyIHU9ZSgnPGRpdiBjbGFzcz0ianFwbG90LXBpZS1zZXJpZXMganFwbG90LWRhdGEtbGFiZWwiIHN0eWxlPSJwb3NpdGlvbjphYnNvbHV0ZTsiPicrVCsiPC9kaXY+IikuaW5zZXJ0QmVmb3JlKG8uZXZlbnRDYW52YXMuX2VsZW0pO2lmKHRoaXMuZGF0YUxhYmVsQ2VudGVyT24pe1AtPXUud2lkdGgoKS8yO08tPXUuaGVpZ2h0KCkvMn1lbHNle1AtPXUud2lkdGgoKSpNYXRoLnNpbihVLzIpO08tPXUuaGVpZ2h0KCkvMn1QPU1hdGgucm91bmQoUCk7Tz1NYXRoLnJvdW5kKE8pO3UuY3NzKHtsZWZ0OlAsdG9wOk99KX19fTtlLmpxcGxvdC5QaWVBeGlzUmVuZGVyZXI9ZnVuY3Rpb24oKXtlLmpxcGxvdC5MaW5lYXJBeGlzUmVuZGVyZXIuY2FsbCh0aGlzKX07ZS5qcXBsb3QuUGllQXhpc1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgZS5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7ZS5qcXBsb3QuUGllQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLmpxcGxvdC5QaWVBeGlzUmVuZGVyZXI7ZS5qcXBsb3QuUGllQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKG8pe3RoaXMudGlja1JlbmRlcmVyPWUuanFwbG90LlBpZVRpY2tSZW5kZXJlcjtlLmV4dGVuZCh0cnVlLHRoaXMsbyk7dGhpcy5fZGF0YUJvdW5kcz17bWluOjAsbWF4OjEwMH07dGhpcy5taW49MDt0aGlzLm1heD0xMDA7dGhpcy5zaG93VGlja3M9ZmFsc2U7dGhpcy50aWNrcz1bXTt0aGlzLnNob3dNYXJrPWZhbHNlO3RoaXMuc2hvdz1mYWxzZX07ZS5qcXBsb3QuUGllTGVnZW5kUmVuZGVyZXI9ZnVuY3Rpb24oKXtlLmpxcGxvdC5UYWJsZUxlZ2VuZFJlbmRlcmVyLmNhbGwodGhpcyl9O2UuanFwbG90LlBpZUxlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZT1uZXcgZS5qcXBsb3QuVGFibGVMZWdlbmRSZW5kZXJlcigpO2UuanFwbG90LlBpZUxlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLmpxcGxvdC5QaWVMZWdlbmRSZW5kZXJlcjtlLmpxcGxvdC5QaWVMZWdlbmRSZW5kZXJlci5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihvKXt0aGlzLm51bWJlclJvd3M9bnVsbDt0aGlzLm51bWJlckNvbHVtbnM9bnVsbDtlLmV4dGVuZCh0cnVlLHRoaXMsbyl9O2UuanFwbG90LlBpZUxlZ2VuZFJlbmRlcmVyLnByb3RvdHlwZS5kcmF3PWZ1bmN0aW9uKCl7dmFyIHI9dGhpcztpZih0aGlzLnNob3cpe3ZhciBCPXRoaXMuX3Nlcmllczt0aGlzLl9lbGVtPWUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFibGUiKSk7dGhpcy5fZWxlbS5hZGRDbGFzcygianFwbG90LXRhYmxlLWxlZ2VuZCIpO3ZhciBFPXtwb3NpdGlvbjoiYWJzb2x1dGUifTtpZih0aGlzLmJhY2tncm91bmQpe0UuYmFja2dyb3VuZD10aGlzLmJhY2tncm91bmR9aWYodGhpcy5ib3JkZXIpe0UuYm9yZGVyPXRoaXMuYm9yZGVyfWlmKHRoaXMuZm9udFNpemUpe0UuZm9udFNpemU9dGhpcy5mb250U2l6ZX1pZih0aGlzLmZvbnRGYW1pbHkpe0UuZm9udEZhbWlseT10aGlzLmZvbnRGYW1pbHl9aWYodGhpcy50ZXh0Q29sb3Ipe0UudGV4dENvbG9yPXRoaXMudGV4dENvbG9yfWlmKHRoaXMubWFyZ2luVG9wIT1udWxsKXtFLm1hcmdpblRvcD10aGlzLm1hcmdpblRvcH1pZih0aGlzLm1hcmdpbkJvdHRvbSE9bnVsbCl7RS5tYXJnaW5Cb3R0b209dGhpcy5tYXJnaW5Cb3R0b219aWYodGhpcy5tYXJnaW5MZWZ0IT1udWxsKXtFLm1hcmdpbkxlZnQ9dGhpcy5tYXJnaW5MZWZ0fWlmKHRoaXMubWFyZ2luUmlnaHQhPW51bGwpe0UubWFyZ2luUmlnaHQ9dGhpcy5tYXJnaW5SaWdodH10aGlzLl9lbGVtLmNzcyhFKTt2YXIgST1mYWxzZSxBPWZhbHNlLG8seTt2YXIgQz1CWzBdO3ZhciBwPW5ldyBlLmpxcGxvdC5Db2xvckdlbmVyYXRvcihDLnNlcmllc0NvbG9ycyk7aWYoQy5zaG93KXt2YXIgSj1DLmRhdGE7aWYodGhpcy5udW1iZXJSb3dzKXtvPXRoaXMubnVtYmVyUm93cztpZighdGhpcy5udW1iZXJDb2x1bW5zKXt5PU1hdGguY2VpbChKLmxlbmd0aC9vKX1lbHNle3k9dGhpcy5udW1iZXJDb2x1bW5zfX1lbHNle2lmKHRoaXMubnVtYmVyQ29sdW1ucyl7eT10aGlzLm51bWJlckNvbHVtbnM7bz1NYXRoLmNlaWwoSi5sZW5ndGgvdGhpcy5udW1iZXJDb2x1bW5zKX1lbHNle289Si5sZW5ndGg7eT0xfX12YXIgSCxHO3ZhciBxLHcsdjt2YXIgeCx6LEY7dmFyIEQ9MDt2YXIgdSx0O2ZvcihIPTA7SDxvO0grKyl7cT1lKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRyIikpO3EuYWRkQ2xhc3MoImpxcGxvdC10YWJsZS1sZWdlbmQiKTtpZihBKXtxLnByZXBlbmRUbyh0aGlzLl9lbGVtKX1lbHNle3EuYXBwZW5kVG8odGhpcy5fZWxlbSl9Zm9yKEc9MDtHPHk7RysrKXtpZihEPEoubGVuZ3RoKXt4PXRoaXMubGFiZWxzW0RdfHxKW0RdWzBdLnRvU3RyaW5nKCk7Rj1wLm5leHQoKTtpZighQSl7aWYoSD4wKXtJPXRydWV9ZWxzZXtJPWZhbHNlfX1lbHNle2lmKEg9PW8tMSl7ST1mYWxzZX1lbHNle0k9dHJ1ZX19ej0oSSk/dGhpcy5yb3dTcGFjaW5nOiIwIjt3PWUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGQiKSk7dy5hZGRDbGFzcygianFwbG90LXRhYmxlLWxlZ2VuZCBqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaCIpO3cuY3NzKHt0ZXh0QWxpZ246ImNlbnRlciIscGFkZGluZ1RvcDp6fSk7dT1lKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTt1LmFkZENsYXNzKCJqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaC1vdXRsaW5lIik7dD1lKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKTt0LmFkZENsYXNzKCJqcXBsb3QtdGFibGUtbGVnZW5kLXN3YXRjaCIpO3QuY3NzKHtiYWNrZ3JvdW5kQ29sb3I6Rixib3JkZXJDb2xvcjpGfSk7dy5hcHBlbmQodS5hcHBlbmQodCkpO3Y9ZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0ZCIpKTt2LmFkZENsYXNzKCJqcXBsb3QtdGFibGUtbGVnZW5kIGpxcGxvdC10YWJsZS1sZWdlbmQtbGFiZWwiKTt2LmNzcygicGFkZGluZ1RvcCIseik7aWYodGhpcy5lc2NhcGVIdG1sKXt2LnRleHQoeCl9ZWxzZXt2Lmh0bWwoeCl9aWYoQSl7di5wcmVwZW5kVG8ocSk7dy5wcmVwZW5kVG8ocSl9ZWxzZXt3LmFwcGVuZFRvKHEpO3YuYXBwZW5kVG8ocSl9ST10cnVlfUQrK319fX1yZXR1cm4gdGhpcy5fZWxlbX07ZS5qcXBsb3QuUGllUmVuZGVyZXIucHJvdG90eXBlLmhhbmRsZU1vdmU9ZnVuY3Rpb24ocSxwLHQscyxyKXtpZihzKXt2YXIgbz1bcy5zZXJpZXNJbmRleCxzLnBvaW50SW5kZXgscy5kYXRhXTtyLnRhcmdldC50cmlnZ2VyKCJqcXBsb3REYXRhTW91c2VPdmVyIixvKTtpZihyLnNlcmllc1tvWzBdXS5oaWdobGlnaHRNb3VzZU92ZXImJiEob1swXT09ci5wbHVnaW5zLnBpZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXgmJm9bMV09PXIuc2VyaWVzW29bMF1dLl9oaWdobGlnaHRlZFBvaW50KSl7ci50YXJnZXQudHJpZ2dlcigianFwbG90RGF0YUhpZ2hsaWdodCIsbyk7ZChyLG9bMF0sb1sxXSl9fWVsc2V7aWYocz09bnVsbCl7ayhyKX19fTtmdW5jdGlvbiBjKHMscixwKXtwPXB8fHt9O3AuYXhlc0RlZmF1bHRzPXAuYXhlc0RlZmF1bHRzfHx7fTtwLmxlZ2VuZD1wLmxlZ2VuZHx8e307cC5zZXJpZXNEZWZhdWx0cz1wLnNlcmllc0RlZmF1bHRzfHx7fTt2YXIgbz1mYWxzZTtpZihwLnNlcmllc0RlZmF1bHRzLnJlbmRlcmVyPT1lLmpxcGxvdC5QaWVSZW5kZXJlcil7bz10cnVlfWVsc2V7aWYocC5zZXJpZXMpe2Zvcih2YXIgcT0wO3E8cC5zZXJpZXMubGVuZ3RoO3ErKyl7aWYocC5zZXJpZXNbcV0ucmVuZGVyZXI9PWUuanFwbG90LlBpZVJlbmRlcmVyKXtvPXRydWV9fX19aWYobyl7cC5heGVzRGVmYXVsdHMucmVuZGVyZXI9ZS5qcXBsb3QuUGllQXhpc1JlbmRlcmVyO3AubGVnZW5kLnJlbmRlcmVyPWUuanFwbG90LlBpZUxlZ2VuZFJlbmRlcmVyO3AubGVnZW5kLnByZURyYXc9dHJ1ZTtwLnNlcmllc0RlZmF1bHRzLnBvaW50TGFiZWxzPXtzaG93OmZhbHNlfX19ZnVuY3Rpb24gZyhyLHEsbyl7Zm9yKHZhciBwPTA7cDx0aGlzLnNlcmllcy5sZW5ndGg7cCsrKXtpZih0aGlzLnNlcmllc1twXS5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09ZS5qcXBsb3QuUGllUmVuZGVyZXIpe2lmKHRoaXMuc2VyaWVzW3BdLmhpZ2hsaWdodE1vdXNlT3Zlcil7dGhpcy5zZXJpZXNbcF0uaGlnaGxpZ2h0TW91c2VEb3duPWZhbHNlfX19fWZ1bmN0aW9uIG0obyl7Zm9yKHZhciBwPTA7cDx0aGlzLnNlcmllcy5sZW5ndGg7cCsrKXt0aGlzLnNlcmllc1twXS5zZXJpZXNDb2xvcnM9dGhpcy5zZXJpZXNDb2xvcnM7dGhpcy5zZXJpZXNbcF0uY29sb3JHZW5lcmF0b3I9ZS5qcXBsb3QuY29sb3JHZW5lcmF0b3J9fWZ1bmN0aW9uIGQodCxyLHEpe3ZhciBwPXQuc2VyaWVzW3JdO3ZhciBvPXQucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7by5fY3R4LmNsZWFyUmVjdCgwLDAsby5fY3R4LmNhbnZhcy53aWR0aCxvLl9jdHguY2FudmFzLmhlaWdodCk7cC5faGlnaGxpZ2h0ZWRQb2ludD1xO3QucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4PXI7cC5yZW5kZXJlci5kcmF3U2xpY2UuY2FsbChwLG8uX2N0eCxwLl9zbGljZUFuZ2xlc1txXVswXSxwLl9zbGljZUFuZ2xlc1txXVsxXSxwLmhpZ2hsaWdodENvbG9yR2VuZXJhdG9yLmdldChxKSxmYWxzZSl9ZnVuY3Rpb24gayhxKXt2YXIgbz1xLnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzO28uX2N0eC5jbGVhclJlY3QoMCwwLG8uX2N0eC5jYW52YXMud2lkdGgsby5fY3R4LmNhbnZhcy5oZWlnaHQpO2Zvcih2YXIgcD0wO3A8cS5zZXJpZXMubGVuZ3RoO3ArKyl7cS5zZXJpZXNbcF0uX2hpZ2hsaWdodGVkUG9pbnQ9bnVsbH1xLnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleD1udWxsO3EudGFyZ2V0LnRyaWdnZXIoImpxcGxvdERhdGFVbmhpZ2hsaWdodCIpfWZ1bmN0aW9uIGIocyxyLHYsdSx0KXtpZih1KXt2YXIgcT1bdS5zZXJpZXNJbmRleCx1LnBvaW50SW5kZXgsdS5kYXRhXTt2YXIgcD1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFNb3VzZU92ZXIiKTtwLnBhZ2VYPXMucGFnZVg7cC5wYWdlWT1zLnBhZ2VZO3QudGFyZ2V0LnRyaWdnZXIocCxxKTtpZih0LnNlcmllc1txWzBdXS5oaWdobGlnaHRNb3VzZU92ZXImJiEocVswXT09dC5wbHVnaW5zLnBpZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXgmJnFbMV09PXQuc2VyaWVzW3FbMF1dLl9oaWdobGlnaHRlZFBvaW50KSl7dmFyIG89alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhSGlnaGxpZ2h0Iik7by53aGljaD1zLndoaWNoO28ucGFnZVg9cy5wYWdlWDtvLnBhZ2VZPXMucGFnZVk7dC50YXJnZXQudHJpZ2dlcihvLHEpO2QodCxxWzBdLHFbMV0pfX1lbHNle2lmKHU9PW51bGwpe2sodCl9fX1mdW5jdGlvbiBhKHIscSx1LHQscyl7aWYodCl7dmFyIHA9W3Quc2VyaWVzSW5kZXgsdC5wb2ludEluZGV4LHQuZGF0YV07aWYocy5zZXJpZXNbcFswXV0uaGlnaGxpZ2h0TW91c2VEb3duJiYhKHBbMF09PXMucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4JiZwWzFdPT1zLnNlcmllc1twWzBdXS5faGlnaGxpZ2h0ZWRQb2ludCkpe3ZhciBvPWpRdWVyeS5FdmVudCgianFwbG90RGF0YUhpZ2hsaWdodCIpO28ud2hpY2g9ci53aGljaDtvLnBhZ2VYPXIucGFnZVg7by5wYWdlWT1yLnBhZ2VZO3MudGFyZ2V0LnRyaWdnZXIobyxwKTtkKHMscFswXSxwWzFdKX19ZWxzZXtpZih0PT1udWxsKXtrKHMpfX19ZnVuY3Rpb24gbChxLHAsdCxzLHIpe3ZhciBvPXIucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRlZFNlcmllc0luZGV4O2lmKG8hPW51bGwmJnIuc2VyaWVzW29dLmhpZ2hsaWdodE1vdXNlRG93bil7ayhyKX19ZnVuY3Rpb24gZihyLHEsdSx0LHMpe2lmKHQpe3ZhciBwPVt0LnNlcmllc0luZGV4LHQucG9pbnRJbmRleCx0LmRhdGFdO3ZhciBvPWpRdWVyeS5FdmVudCgianFwbG90RGF0YUNsaWNrIik7by53aGljaD1yLndoaWNoO28ucGFnZVg9ci5wYWdlWDtvLnBhZ2VZPXIucGFnZVk7cy50YXJnZXQudHJpZ2dlcihvLHApfX1mdW5jdGlvbiBuKHMscix2LHUsdCl7aWYodSl7dmFyIHE9W3Uuc2VyaWVzSW5kZXgsdS5wb2ludEluZGV4LHUuZGF0YV07dmFyIG89dC5wbHVnaW5zLnBpZVJlbmRlcmVyLmhpZ2hsaWdodGVkU2VyaWVzSW5kZXg7aWYobyE9bnVsbCYmdC5zZXJpZXNbb10uaGlnaGxpZ2h0TW91c2VEb3duKXtrKHQpfXZhciBwPWpRdWVyeS5FdmVudCgianFwbG90RGF0YVJpZ2h0Q2xpY2siKTtwLndoaWNoPXMud2hpY2g7cC5wYWdlWD1zLnBhZ2VYO3AucGFnZVk9cy5wYWdlWTt0LnRhcmdldC50cmlnZ2VyKHAscSl9fWZ1bmN0aW9uIGkoKXtpZih0aGlzLnBsdWdpbnMucGllUmVuZGVyZXImJnRoaXMucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMpe3RoaXMucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMucmVzZXRDYW52YXMoKTt0aGlzLnBsdWdpbnMucGllUmVuZGVyZXIuaGlnaGxpZ2h0Q2FudmFzPW51bGx9dGhpcy5wbHVnaW5zLnBpZVJlbmRlcmVyPXtoaWdobGlnaHRlZFNlcmllc0luZGV4Om51bGx9O3RoaXMucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRDYW52YXM9bmV3IGUuanFwbG90LkdlbmVyaWNDYW52YXMoKTt2YXIgcD1lKHRoaXMudGFyZ2V0SWQrIiAuanFwbG90LWRhdGEtbGFiZWwiKTtpZihwLmxlbmd0aCl7ZShwWzBdKS5iZWZvcmUodGhpcy5wbHVnaW5zLnBpZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCJqcXBsb3QtcGllUmVuZGVyZXItaGlnaGxpZ2h0LWNhbnZhcyIsdGhpcy5fcGxvdERpbWVuc2lvbnMsdGhpcykpfWVsc2V7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iZWZvcmUodGhpcy5wbHVnaW5zLnBpZVJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCJqcXBsb3QtcGllUmVuZGVyZXItaGlnaGxpZ2h0LWNhbnZhcyIsdGhpcy5fcGxvdERpbWVuc2lvbnMsdGhpcykpfXZhciBvPXRoaXMucGx1Z2lucy5waWVSZW5kZXJlci5oaWdobGlnaHRDYW52YXMuc2V0Q29udGV4dCgpO3RoaXMuZXZlbnRDYW52YXMuX2VsZW0uYmluZCgibW91c2VsZWF2ZSIse3Bsb3Q6dGhpc30sZnVuY3Rpb24ocSl7ayhxLmRhdGEucGxvdCl9KX1lLmpxcGxvdC5wcmVJbml0SG9va3MucHVzaChjKTtlLmpxcGxvdC5QaWVUaWNrUmVuZGVyZXI9ZnVuY3Rpb24oKXtlLmpxcGxvdC5BeGlzVGlja1JlbmRlcmVyLmNhbGwodGhpcyl9O2UuanFwbG90LlBpZVRpY2tSZW5kZXJlci5wcm90b3R5cGU9bmV3IGUuanFwbG90LkF4aXNUaWNrUmVuZGVyZXIoKTtlLmpxcGxvdC5QaWVUaWNrUmVuZGVyZXIucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUuanFwbG90LlBpZVRpY2tSZW5kZXJlcn0pKGpRdWVyeSk7]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oYyl7Yy5qcXBsb3QuUG9pbnRMYWJlbHM9ZnVuY3Rpb24oZSl7dGhpcy5zaG93PWMuanFwbG90LmNvbmZpZy5lbmFibGVQbHVnaW5zO3RoaXMubG9jYXRpb249Im4iO3RoaXMubGFiZWxzRnJvbVNlcmllcz1mYWxzZTt0aGlzLnNlcmllc0xhYmVsSW5kZXg9bnVsbDt0aGlzLmxhYmVscz1bXTt0aGlzLl9sYWJlbHM9W107dGhpcy5zdGFja2VkVmFsdWU9ZmFsc2U7dGhpcy55cGFkZGluZz02O3RoaXMueHBhZGRpbmc9Njt0aGlzLmVzY2FwZUhUTUw9dHJ1ZTt0aGlzLmVkZ2VUb2xlcmFuY2U9LTU7dGhpcy5mb3JtYXR0ZXI9Yy5qcXBsb3QuRGVmYXVsdFRpY2tGb3JtYXR0ZXI7dGhpcy5mb3JtYXRTdHJpbmc9IiI7dGhpcy5oaWRlWmVyb3M9ZmFsc2U7dGhpcy5fZWxlbXM9W107Yy5leHRlbmQodHJ1ZSx0aGlzLGUpfTt2YXIgYT1bIm53IiwibiIsIm5lIiwiZSIsInNlIiwicyIsInN3IiwidyJdO3ZhciBkPXtudzowLG46MSxuZToyLGU6MyxzZTo0LHM6NSxzdzo2LHc6N307dmFyIGI9WyJzZSIsInMiLCJzdyIsInciLCJudyIsIm4iLCJuZSIsImUiXTtjLmpxcGxvdC5Qb2ludExhYmVscy5pbml0PWZ1bmN0aW9uKGosaCxmLGcsaSl7dmFyIGU9Yy5leHRlbmQodHJ1ZSx7fSxmLGcpO2UucG9pbnRMYWJlbHM9ZS5wb2ludExhYmVsc3x8e307aWYodGhpcy5yZW5kZXJlci5jb25zdHJ1Y3Rvcj09PWMuanFwbG90LkJhclJlbmRlcmVyJiZ0aGlzLmJhckRpcmVjdGlvbj09PSJob3Jpem9udGFsIiYmIWUucG9pbnRMYWJlbHMubG9jYXRpb24pe2UucG9pbnRMYWJlbHMubG9jYXRpb249ImUifXRoaXMucGx1Z2lucy5wb2ludExhYmVscz1uZXcgYy5qcXBsb3QuUG9pbnRMYWJlbHMoZS5wb2ludExhYmVscyk7dGhpcy5wbHVnaW5zLnBvaW50TGFiZWxzLnNldExhYmVscy5jYWxsKHRoaXMpfTtjLmpxcGxvdC5Qb2ludExhYmVscy5wcm90b3R5cGUuc2V0TGFiZWxzPWZ1bmN0aW9uKCl7dmFyIGY9dGhpcy5wbHVnaW5zLnBvaW50TGFiZWxzO3ZhciBoO2lmKGYuc2VyaWVzTGFiZWxJbmRleCE9bnVsbCl7aD1mLnNlcmllc0xhYmVsSW5kZXh9ZWxzZXtpZih0aGlzLnJlbmRlcmVyLmNvbnN0cnVjdG9yPT09Yy5qcXBsb3QuQmFyUmVuZGVyZXImJnRoaXMuYmFyRGlyZWN0aW9uPT09Imhvcml6b250YWwiKXtoPSh0aGlzLl9wbG90RGF0YVswXS5sZW5ndGg8Myk/MDp0aGlzLl9wbG90RGF0YVswXS5sZW5ndGgtMX1lbHNle2g9KHRoaXMuX3Bsb3REYXRhLmxlbmd0aD09PTApPzA6dGhpcy5fcGxvdERhdGFbMF0ubGVuZ3RoLTF9fWYuX2xhYmVscz1bXTtpZihmLmxhYmVscy5sZW5ndGg9PT0wfHxmLmxhYmVsc0Zyb21TZXJpZXMpe2lmKGYuc3RhY2tlZFZhbHVlKXtpZih0aGlzLl9wbG90RGF0YS5sZW5ndGgmJnRoaXMuX3Bsb3REYXRhWzBdLmxlbmd0aCl7Zm9yKHZhciBlPTA7ZTx0aGlzLl9wbG90RGF0YS5sZW5ndGg7ZSsrKXtmLl9sYWJlbHMucHVzaCh0aGlzLl9wbG90RGF0YVtlXVtoXSl9fX1lbHNle3ZhciBnPXRoaXMuZGF0YTtpZih0aGlzLnJlbmRlcmVyLmNvbnN0cnVjdG9yPT09Yy5qcXBsb3QuQmFyUmVuZGVyZXImJnRoaXMud2F0ZXJmYWxsKXtnPXRoaXMuX2RhdGF9aWYoZy5sZW5ndGgmJmdbMF0ubGVuZ3RoKXtmb3IodmFyIGU9MDtlPGcubGVuZ3RoO2UrKyl7Zi5fbGFiZWxzLnB1c2goZ1tlXVtoXSl9fWc9bnVsbH19ZWxzZXtpZihmLmxhYmVscy5sZW5ndGgpe2YuX2xhYmVscz1mLmxhYmVsc319fTtjLmpxcGxvdC5Qb2ludExhYmVscy5wcm90b3R5cGUueE9mZnNldD1mdW5jdGlvbihmLGUsZyl7ZT1lfHx0aGlzLmxvY2F0aW9uO2c9Z3x8dGhpcy54cGFkZGluZzt2YXIgaDtzd2l0Y2goZSl7Y2FzZSJudyI6aD0tZi5vdXRlcldpZHRoKHRydWUpLXRoaXMueHBhZGRpbmc7YnJlYWs7Y2FzZSJuIjpoPS1mLm91dGVyV2lkdGgodHJ1ZSkvMjticmVhaztjYXNlIm5lIjpoPXRoaXMueHBhZGRpbmc7YnJlYWs7Y2FzZSJlIjpoPXRoaXMueHBhZGRpbmc7YnJlYWs7Y2FzZSJzZSI6aD10aGlzLnhwYWRkaW5nO2JyZWFrO2Nhc2UicyI6aD0tZi5vdXRlcldpZHRoKHRydWUpLzI7YnJlYWs7Y2FzZSJzdyI6aD0tZi5vdXRlcldpZHRoKHRydWUpLXRoaXMueHBhZGRpbmc7YnJlYWs7Y2FzZSJ3IjpoPS1mLm91dGVyV2lkdGgodHJ1ZSktdGhpcy54cGFkZGluZzticmVhaztkZWZhdWx0Omg9LWYub3V0ZXJXaWR0aCh0cnVlKS10aGlzLnhwYWRkaW5nO2JyZWFrfXJldHVybiBofTtjLmpxcGxvdC5Qb2ludExhYmVscy5wcm90b3R5cGUueU9mZnNldD1mdW5jdGlvbihmLGUsZyl7ZT1lfHx0aGlzLmxvY2F0aW9uO2c9Z3x8dGhpcy54cGFkZGluZzt2YXIgaDtzd2l0Y2goZSl7Y2FzZSJudyI6aD0tZi5vdXRlckhlaWdodCh0cnVlKS10aGlzLnlwYWRkaW5nO2JyZWFrO2Nhc2UibiI6aD0tZi5vdXRlckhlaWdodCh0cnVlKS10aGlzLnlwYWRkaW5nO2JyZWFrO2Nhc2UibmUiOmg9LWYub3V0ZXJIZWlnaHQodHJ1ZSktdGhpcy55cGFkZGluZzticmVhaztjYXNlImUiOmg9LWYub3V0ZXJIZWlnaHQodHJ1ZSkvMjticmVhaztjYXNlInNlIjpoPXRoaXMueXBhZGRpbmc7YnJlYWs7Y2FzZSJzIjpoPXRoaXMueXBhZGRpbmc7YnJlYWs7Y2FzZSJzdyI6aD10aGlzLnlwYWRkaW5nO2JyZWFrO2Nhc2UidyI6aD0tZi5vdXRlckhlaWdodCh0cnVlKS8yO2JyZWFrO2RlZmF1bHQ6aD0tZi5vdXRlckhlaWdodCh0cnVlKS10aGlzLnlwYWRkaW5nO2JyZWFrfXJldHVybiBofTtjLmpxcGxvdC5Qb2ludExhYmVscy5kcmF3PWZ1bmN0aW9uKHgsaix2KXt2YXIgdD10aGlzLnBsdWdpbnMucG9pbnRMYWJlbHM7dC5zZXRMYWJlbHMuY2FsbCh0aGlzKTtmb3IodmFyIHc9MDt3PHQuX2VsZW1zLmxlbmd0aDt3Kyspe3QuX2VsZW1zW3ddLmVtcHR5Rm9yY2UoKX10Ll9lbGVtcy5zcGxpY2UoMCx0Ll9lbGVtcy5sZW5ndGgpO2lmKHQuc2hvdyl7dmFyIHI9Il8iK3RoaXMuX3N0YWNrQXhpcysiYXhpcyI7aWYoIXQuZm9ybWF0U3RyaW5nKXt0LmZvcm1hdFN0cmluZz10aGlzW3JdLl90aWNrc1swXS5mb3JtYXRTdHJpbmc7dC5mb3JtYXR0ZXI9dGhpc1tyXS5fdGlja3NbMF0uZm9ybWF0dGVyfXZhciBFPXRoaXMuX3Bsb3REYXRhO3ZhciBEPXRoaXMuX3ByZXZQbG90RGF0YTt2YXIgQT10aGlzLl94YXhpczt2YXIgcT10aGlzLl95YXhpczt2YXIgeixmO2Zvcih2YXIgdz0wLHU9dC5fbGFiZWxzLmxlbmd0aDt3PHU7dysrKXt2YXIgbz10Ll9sYWJlbHNbd107aWYobz09bnVsbHx8KHQuaGlkZVplcm9zJiZwYXJzZUludChvLDEwKT09MCkpe2NvbnRpbnVlfW89dC5mb3JtYXR0ZXIodC5mb3JtYXRTdHJpbmcsbyk7Zj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0Ll9lbGVtc1t3XT1jKGYpO3o9dC5fZWxlbXNbd107ei5hZGRDbGFzcygianFwbG90LXBvaW50LWxhYmVsIGpxcGxvdC1zZXJpZXMtIit0aGlzLmluZGV4KyIganFwbG90LXBvaW50LSIrdyk7ei5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKTt6Lmluc2VydEFmdGVyKHguY2FudmFzKTtpZih0LmVzY2FwZUhUTUwpe3oudGV4dChvKX1lbHNle3ouaHRtbChvKX12YXIgZz10LmxvY2F0aW9uO2lmKCh0aGlzLmZpbGxUb1plcm8mJkVbd11bMV08MCl8fCh0aGlzLmZpbGxUb1plcm8mJnRoaXMuX3R5cGU9PT0iYmFyIiYmdGhpcy5iYXJEaXJlY3Rpb249PT0iaG9yaXpvbnRhbCImJkVbd11bMF08MCl8fCh0aGlzLndhdGVyZmFsbCYmcGFyc2VJbnQobywxMCkpPDApe2c9YltkW2ddXX12YXIgbj1BLnUycChFW3ddWzBdKSt0LnhPZmZzZXQoeixnKTt2YXIgaD1xLnUycChFW3ddWzFdKSt0LnlPZmZzZXQoeixnKTtpZih0aGlzLl9zdGFjayYmIXQuc3RhY2tlZFZhbHVlKXtpZih0aGlzLmJhckRpcmVjdGlvbj09PSJ2ZXJ0aWNhbCIpe2g9KHRoaXMuX2JhclBvaW50c1t3XVswXVsxXSt0aGlzLl9iYXJQb2ludHNbd11bMV1bMV0pLzIrdi5fZ3JpZFBhZGRpbmcudG9wLTAuNSp6Lm91dGVySGVpZ2h0KHRydWUpfWVsc2V7bj0odGhpcy5fYmFyUG9pbnRzW3ddWzJdWzBdK3RoaXMuX2JhclBvaW50c1t3XVswXVswXSkvMit2Ll9ncmlkUGFkZGluZy5sZWZ0LTAuNSp6Lm91dGVyV2lkdGgodHJ1ZSl9fWlmKHRoaXMucmVuZGVyZXIuY29uc3RydWN0b3I9PWMuanFwbG90LkJhclJlbmRlcmVyKXtpZih0aGlzLmJhckRpcmVjdGlvbj09InZlcnRpY2FsIil7bis9dGhpcy5fYmFyTnVkZ2V9ZWxzZXtoLT10aGlzLl9iYXJOdWRnZX19ei5jc3MoImxlZnQiLG4pO3ouY3NzKCJ0b3AiLGgpO3ZhciBrPW4rei53aWR0aCgpO3ZhciBzPWgrei5oZWlnaHQoKTt2YXIgQz10LmVkZ2VUb2xlcmFuY2U7dmFyIGU9Yyh4LmNhbnZhcykucG9zaXRpb24oKS5sZWZ0O3ZhciB5PWMoeC5jYW52YXMpLnBvc2l0aW9uKCkudG9wO3ZhciBCPXguY2FudmFzLndpZHRoK2U7dmFyIG09eC5jYW52YXMuaGVpZ2h0K3k7aWYobi1DPGV8fGgtQzx5fHxrK0M+Qnx8cytDPm0pe3oucmVtb3ZlKCl9ej1udWxsO2Y9bnVsbH19fTtjLmpxcGxvdC5wb3N0U2VyaWVzSW5pdEhvb2tzLnB1c2goYy5qcXBsb3QuUG9pbnRMYWJlbHMuaW5pdCk7Yy5qcXBsb3QucG9zdERyYXdTZXJpZXNIb29rcy5wdXNoKGMuanFwbG90LlBvaW50TGFiZWxzLmRyYXcpfSkoalF1ZXJ5KTs=]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oZSl7ZS5qcXBsb3QuUHlyYW1pZEF4aXNSZW5kZXJlcj1mdW5jdGlvbigpe2UuanFwbG90LkxpbmVhckF4aXNSZW5kZXJlci5jYWxsKHRoaXMpfTtlLmpxcGxvdC5QeXJhbWlkQXhpc1JlbmRlcmVyLnByb3RvdHlwZT1uZXcgZS5qcXBsb3QuTGluZWFyQXhpc1JlbmRlcmVyKCk7ZS5qcXBsb3QuUHlyYW1pZEF4aXNSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9ZS5qcXBsb3QuUHlyYW1pZEF4aXNSZW5kZXJlcjtlLmpxcGxvdC5QeXJhbWlkQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGYpe3RoaXMucG9zaXRpb249bnVsbDt0aGlzLmRyYXdCYXNlbGluZT10cnVlO3RoaXMuYmFzZWxpbmVXaWR0aD1udWxsO3RoaXMuYmFzZWxpbmVDb2xvcj1udWxsO3RoaXMudGlja1NwYWNpbmdGYWN0b3I9MjU7dGhpcy5fdHlwZT0icHlyYW1pZCI7dGhpcy5fc3BsaXRBeGlzPWZhbHNlO3RoaXMuX3NwbGl0TGVuZ3RoPW51bGw7dGhpcy5jYXRlZ29yeT1mYWxzZTt0aGlzLl9hdXRvRm9ybWF0U3RyaW5nPSIiO3RoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nPWZhbHNlO2UuZXh0ZW5kKHRydWUsdGhpcyxmKTt0aGlzLnJlbmRlcmVyLm9wdGlvbnM9Zjt0aGlzLnJlc2V0RGF0YUJvdW5kcz10aGlzLnJlbmRlcmVyLnJlc2V0RGF0YUJvdW5kczt0aGlzLnJlc2V0RGF0YUJvdW5kcygpfTtlLmpxcGxvdC5QeXJhbWlkQXhpc1JlbmRlcmVyLnByb3RvdHlwZS5yZXNldERhdGFCb3VuZHM9ZnVuY3Rpb24oKXt2YXIgaD10aGlzLl9kYXRhQm91bmRzO2gubWluPW51bGw7aC5tYXg9bnVsbDt2YXIgZztmb3IodmFyIG09MDttPHRoaXMuX3Nlcmllcy5sZW5ndGg7bSsrKXt2YXIgbj10aGlzLl9zZXJpZXNbbV07dmFyIG89bi5fcGxvdERhdGE7Zm9yKHZhciBrPTAsZj1vLmxlbmd0aDtrPGY7aysrKXtpZih0aGlzLm5hbWUuY2hhckF0KDApPT09IngiKXtnPW9ba11bMV07aWYoKGchPT1udWxsJiZnPGgubWluKXx8aC5taW49PT1udWxsKXtoLm1pbj1nfWlmKChnIT09bnVsbCYmZz5oLm1heCl8fGgubWF4PT09bnVsbCl7aC5tYXg9Z319ZWxzZXtnPW9ba11bMF07aWYoKGchPT1udWxsJiZnPGgubWluKXx8aC5taW49PT1udWxsKXtoLm1pbj1nfWlmKChnIT09bnVsbCYmZz5oLm1heCl8fGgubWF4PT09bnVsbCl7aC5tYXg9Z319fX19O2UuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXIucHJvdG90eXBlLmRyYXc9ZnVuY3Rpb24oZixuKXtpZih0aGlzLnNob3cpe3RoaXMucmVuZGVyZXIuY3JlYXRlVGlja3MuY2FsbCh0aGlzLG4pO3ZhciBtPTA7dmFyIGc7aWYodGhpcy5fZWxlbSl7dGhpcy5fZWxlbS5lbXB0eUZvcmNlKCk7dGhpcy5fZWxlbT1udWxsfXRoaXMuX2VsZW09ZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7dGhpcy5fZWxlbS5hZGRDbGFzcygianFwbG90LWF4aXMganFwbG90LSIrdGhpcy5uYW1lKTt0aGlzLl9lbGVtLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIpO2lmKHRoaXMubmFtZT09InhheGlzInx8dGhpcy5uYW1lPT0ieDJheGlzIil7dGhpcy5fZWxlbS53aWR0aCh0aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aCl9ZWxzZXt0aGlzLl9lbGVtLmhlaWdodCh0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQpfXRoaXMubGFiZWxPcHRpb25zLmF4aXM9dGhpcy5uYW1lO3RoaXMuX2xhYmVsPW5ldyB0aGlzLmxhYmVsUmVuZGVyZXIodGhpcy5sYWJlbE9wdGlvbnMpO2lmKHRoaXMuX2xhYmVsLnNob3cpe3ZhciBsPXRoaXMuX2xhYmVsLmRyYXcoZixuKTtsLmFwcGVuZFRvKHRoaXMuX2VsZW0pO2w9bnVsbH12YXIgaz10aGlzLl90aWNrczt2YXIgajtmb3IodmFyIGg9MDtoPGsubGVuZ3RoO2grKyl7aj1rW2hdO2lmKGouc2hvdyYmai5zaG93TGFiZWwmJighai5pc01pbm9yVGljaykpe3RoaXMuX2VsZW0uYXBwZW5kKGouZHJhdyhmLG4pKX19aj1udWxsO2s9bnVsbH1yZXR1cm4gdGhpcy5fZWxlbX07dmFyIGI9WzIsMyw1LDcsMTEsMTMsMTcsMTksMjMsMjksMzEsMzcsNDEsNDMsNDcsNTMsNTksNjEsNjcsNzEsNzMsNzksODMsODksOTcsMTAxLDEwMywxMDcsMTA5LDExMywxMjcsMTMxLDEzNywxMzksMTQ5LDE1MSwxNTcsMTYzLDE2NywxNzMsMTc5LDE4MSwxOTEsMTkzLDE5NywxOTksMjExLDIyMywyMjcsMjI5LDIzMywyMzksMjQxLDI1MSwyNTcsMjYzLDI2OSwyNzEsMjc3LDI4MSwyODMsMjkzLDMwNywzMTEsMzEzLDMxNywzMzEsMzM3LDM0NywzNDksMzUzLDM1OSwzNjcsMzczLDM3OSwzODMsMzg5LDM5Nyw0MDEsNDA5LDQxOSw0MjEsNDMxLDQzMyw0MzksNDQzLDQ0OSw0NTcsNDYxLDQ2Myw0NjcsNDc5LDQ4Nyw0OTEsNDk5LDUwMyw1MDksNTIxLDUyMyw1NDEsNTQ3LDU1Nyw1NjMsNTY5LDU3MSw1NzcsNTg3LDU5Myw1OTksNjAxLDYwNyw2MTMsNjE3LDYxOSw2MzEsNjQxLDY0Myw2NDcsNjUzLDY1OSw2NjEsNjczLDY3Nyw2ODMsNjkxLDcwMSw3MDksNzE5LDcyNyw3MzMsNzM5LDc0Myw3NTEsNzU3LDc2MSw3NjksNzczLDc4Nyw3OTcsODA5LDgxMSw4MjEsODIzLDgyNyw4MjksODM5LDg1Myw4NTcsODU5LDg2Myw4NzcsODgxLDg4Myw4ODcsOTA3LDkxMSw5MTksOTI5LDkzNyw5NDEsOTQ3LDk1Myw5NjcsOTcxLDk3Nyw5ODMsOTkxLDk5N107dmFyIGQ9e307Zm9yKHZhciBjPTAsYT1iLmxlbmd0aDtjPGE7YysrKXtkW2JbY11dPWJbY119ZS5qcXBsb3QuUHlyYW1pZEF4aXNSZW5kZXJlci5wcm90b3R5cGUuY3JlYXRlVGlja3M9ZnVuY3Rpb24oRCl7dmFyIEo9dGhpcy50aWNrczt2YXIgTT10aGlzLl9kYXRhQm91bmRzO3ZhciBFO3ZhciBLO3ZhciBCO3ZhciBHO3ZhciB5O3ZhciBuO3ZhciBrO3ZhciBoO3ZhciBIO3ZhciBDO3ZhciB4O3ZhciBMPXRoaXMubWluO3ZhciBOPXRoaXMubWF4O3ZhciBxO3ZhciB2O3ZhciBtO3ZhciBnO3ZhciBqO3ZhciBPO3ZhciBBO3ZhciBGO3ZhciByO3ZhciBQO3ZhciB6PW51bGw7dmFyIEk7aWYoSi5sZW5ndGgpe2ZvcihIPTAsQz1KLmxlbmd0aDtIPEM7SCsrKXtxPUpbSF07dj1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7aWYoZS5pc0FycmF5KHEpKXt2LnZhbHVlPXFbMF07di5sYWJlbD1xWzFdO3Yuc2V0VGljayhxWzBdLHRoaXMubmFtZSk7dGhpcy5fdGlja3MucHVzaCh2KX1lbHNle2lmKGUuaXNQbGFpbk9iamVjdChxKSl7ZS5leHRlbmQodHJ1ZSx2LHEpO3YuYXhpcz10aGlzLm5hbWU7dGhpcy5fdGlja3MucHVzaCh2KX1lbHNle2lmKHR5cGVvZiBxPT09InN0cmluZyIpe1A9SCtELmRlZmF1bHRBeGlzU3RhcnR9ZWxzZXtQPXF9di52YWx1ZT1QO3YubGFiZWw9cTt2LmF4aXM9dGhpcy5uYW1lO3RoaXMuX3RpY2tzLnB1c2godil9fX10aGlzLm51bWJlclRpY2tzPUoubGVuZ3RoO3RoaXMubWluPXRoaXMuX3RpY2tzWzBdLnZhbHVlO3RoaXMubWF4PXRoaXMuX3RpY2tzW3RoaXMubnVtYmVyVGlja3MtMV0udmFsdWU7dGhpcy50aWNrSW50ZXJ2YWw9KHRoaXMubWF4LXRoaXMubWluKS8odGhpcy5udW1iZXJUaWNrcy0xKTtpZih0aGlzLl9vcHRpb25zLnRpY2tJbnRlcnZhbCl7dmFyIG89dGhpcy5fb3B0aW9ucy50aWNrSW50ZXJ2YWw7Zm9yKEg9MDtIPHRoaXMubnVtYmVyVGlja3M7SCsrKXtpZihIJW8hPT0wKXt0aGlzLl90aWNrc1tIXS5pc01pbm9yVGljaz10cnVlfX19ZWxzZXtFPSh0aGlzLm5hbWUuY2hhckF0KDApPT09IngiKT90aGlzLl9wbG90RGltZW5zaW9ucy53aWR0aDp0aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQ7cj1NYXRoLnJvdW5kKDIrRS90aGlzLnRpY2tTcGFjaW5nRmFjdG9yKTtpZih0aGlzLm51bWJlclRpY2tzPnIpe0k9dGhpcy5udW1iZXJUaWNrcy0xO2ZvcihIPTI7SDxJO0grKyl7aWYoSSVIPT09MCYmSS9IPHIpe3o9SC0xO2JyZWFrfX1pZih6IT09bnVsbCl7dmFyIHA9MTtmb3IoSD0xLEM9dGhpcy5fdGlja3MubGVuZ3RoO0g8QztIKyspe2lmKHA8PXope3RoaXMuX3RpY2tzW0hdLnNob3c9ZmFsc2U7cCs9MX1lbHNle3A9MX19fX19ST1bXTtpZih0aGlzLmNhdGVnb3J5KXt0aGlzLl90aWNrc1swXS5zaG93R3JpZGxpbmU9ZmFsc2U7dGhpcy5fdGlja3NbMF0uc2hvd01hcms9ZmFsc2U7Zm9yKEg9dGhpcy5fdGlja3MubGVuZ3RoLTE7SD4wO0gtLSl7dj1uZXcgdGhpcy50aWNrUmVuZGVyZXIodGhpcy50aWNrT3B0aW9ucyk7di52YWx1ZT10aGlzLl90aWNrc1tILTFdLnZhbHVlK3RoaXMudGlja0ludGVydmFsLzI7di5sYWJlbD0iIjt2LnNob3dMYWJlbD1mYWxzZTt2LmF4aXM9dGhpcy5uYW1lO3RoaXMuX3RpY2tzW0hdLnNob3dHcmlkbGluZT1mYWxzZTt0aGlzLl90aWNrc1tIXS5zaG93TWFyaz1mYWxzZTt0aGlzLl90aWNrcy5zcGxpY2UoSCwwLHYpfXY9bmV3IHRoaXMudGlja1JlbmRlcmVyKHRoaXMudGlja09wdGlvbnMpO3YudmFsdWU9dGhpcy5fdGlja3NbMF0udmFsdWUtdGhpcy50aWNrSW50ZXJ2YWwvMjt2LmxhYmVsPSIiO3Yuc2hvd0xhYmVsPWZhbHNlO3YuYXhpcz10aGlzLm5hbWU7dGhpcy5fdGlja3MudW5zaGlmdCh2KTt2PW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTt2LnZhbHVlPXRoaXMuX3RpY2tzW3RoaXMuX3RpY2tzLmxlbmd0aC0xXS52YWx1ZSt0aGlzLnRpY2tJbnRlcnZhbC8yO3YubGFiZWw9IiI7di5zaG93TGFiZWw9ZmFsc2U7di5heGlzPXRoaXMubmFtZTt0aGlzLl90aWNrcy5wdXNoKHYpO3RoaXMudGlja0ludGVydmFsPXRoaXMudGlja0ludGVydmFsLzI7dGhpcy5udW1iZXJUaWNrcz10aGlzLl90aWNrcy5sZW5ndGg7dGhpcy5taW49dGhpcy5fdGlja3NbMF0udmFsdWU7dGhpcy5tYXg9dGhpcy5fdGlja3NbdGhpcy5fdGlja3MubGVuZ3RoLTFdLnZhbHVlfX1lbHNle2lmKHRoaXMubmFtZS5jaGFyQXQoMCk9PT0ieCIpe0U9dGhpcy5fcGxvdERpbWVuc2lvbnMud2lkdGg7dmFyIHc9TWF0aC5tYXgoTS5tYXgsTWF0aC5hYnMoTS5taW4pKTt2YXIgdT1NYXRoLm1pbihNLm1pbiwtdyk7Qj11O0c9dzt5PUctQjtpZih0aGlzLnRpY2tPcHRpb25zPT1udWxsfHwhdGhpcy50aWNrT3B0aW9ucy5mb3JtYXRTdHJpbmcpe3RoaXMuX292ZXJyaWRlRm9ybWF0U3RyaW5nPXRydWV9bT0zMDtnPU1hdGgubWF4KEUsbSsxKTtqPShnLW0pLzMwMDtPPWUuanFwbG90LkxpbmVhclRpY2tHZW5lcmF0b3IoQixHLGopO0E9Qit5Kih0aGlzLnBhZE1pbi0xKTtGPUcteSoodGhpcy5wYWRNYXgtMSk7aWYoQjxBfHxHPkYpe0E9Qi15Kih0aGlzLnBhZE1pbi0xKTtGPUcreSoodGhpcy5wYWRNYXgtMSk7Tz1lLmpxcGxvdC5MaW5lYXJUaWNrR2VuZXJhdG9yKEEsRixqKX10aGlzLm1pbj1PWzBdO3RoaXMubWF4PU9bMV07dGhpcy5udW1iZXJUaWNrcz1PWzJdO3RoaXMuX2F1dG9Gb3JtYXRTdHJpbmc9T1szXTt0aGlzLnRpY2tJbnRlcnZhbD1PWzRdfWVsc2V7RT10aGlzLl9wbG90RGltZW5zaW9ucy5oZWlnaHQ7Qj1NLm1pbjtHPU0ubWF4O3g9dGhpcy5fc2VyaWVzWzBdO3RoaXMuX3RpY2tzPVtdO3k9Ry1CO2lmKGRbeV0pe3krPTE7Rys9MX10aGlzLm1heD1HO3RoaXMubWluPUI7cj1NYXRoLnJvdW5kKDIrRS90aGlzLnRpY2tTcGFjaW5nRmFjdG9yKTtpZih5KzE8PXIpe3RoaXMubnVtYmVyVGlja3M9eSsxO3RoaXMudGlja0ludGVydmFsPTF9ZWxzZXtmb3IodmFyIEg9cjtIPjE7SC0tKXtpZih5LyhILTEpPT09TWF0aC5yb3VuZCh5LyhILTEpKSl7dGhpcy5udW1iZXJUaWNrcz1IO3RoaXMudGlja0ludGVydmFsPXkvKEgtMSk7YnJlYWt9fX19aWYodGhpcy5fb3ZlcnJpZGVGb3JtYXRTdHJpbmcmJnRoaXMuX2F1dG9Gb3JtYXRTdHJpbmchPSIiKXt0aGlzLnRpY2tPcHRpb25zPXRoaXMudGlja09wdGlvbnN8fHt9O3RoaXMudGlja09wdGlvbnMuZm9ybWF0U3RyaW5nPXRoaXMuX2F1dG9Gb3JtYXRTdHJpbmd9dmFyIGY7Zm9yKEg9MDtIPHRoaXMubnVtYmVyVGlja3M7SCsrKXt0aGlzLnRpY2tPcHRpb25zLmF4aXM9dGhpcy5uYW1lO2Y9dGhpcy5taW4rdGhpcy50aWNrSW50ZXJ2YWwqSDtpZih0aGlzLm5hbWUuY2hhckF0KDApPT09IngiKXtmPU1hdGguYWJzKGYpfXRoaXMudGlja09wdGlvbnMudmFsdWU9dGhpcy5taW4rdGhpcy50aWNrSW50ZXJ2YWwqSDt2PW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTt2LmxhYmVsPXYucHJlZml4K3YuZm9ybWF0dGVyKHYuZm9ybWF0U3RyaW5nLGYpO3RoaXMuX3RpY2tzLnB1c2godik7aWYodGhpcy5uYW1lLmNoYXJBdCgwKT09PSJ4IiYmRC5heGVzLnlNaWRBeGlzLnNob3cmJnRoaXMudGlja09wdGlvbnMudmFsdWU9PT0wKXt0aGlzLl9zcGxpdEF4aXM9dHJ1ZTt0aGlzLl9zcGxpdExlbmd0aD1ELmF4ZXMueU1pZEF4aXMuZ2V0V2lkdGgoKTt2PW5ldyB0aGlzLnRpY2tSZW5kZXJlcih0aGlzLnRpY2tPcHRpb25zKTt0aGlzLl90aWNrcy5wdXNoKHYpO3YudmFsdWU9dGhpcy5tYXgvMjAwMH19dj1udWxsfX07ZS5qcXBsb3QuUHlyYW1pZEF4aXNSZW5kZXJlci5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKCl7dmFyIG89MDt2YXIgajt2YXIgZz0wO3ZhciBuPTA7dmFyIG07dmFyIGw7dmFyIGs7dmFyIGY9KHRoaXMuX2xhYmVsPT1udWxsKT9mYWxzZTp0aGlzLl9sYWJlbC5zaG93O2lmKHRoaXMuc2hvdyl7bD10aGlzLl90aWNrczthPWwubGVuZ3RoO2ZvcihtPTA7bTxhO20rKyl7az1sW21dO2lmKCFrLl9icmVha1RpY2smJmsuc2hvdyYmay5zaG93TGFiZWwmJiFrLmlzTWlub3JUaWNrKXtpZih0aGlzLm5hbWUuY2hhckF0KDApPT09IngiKXtqPWsuX2VsZW0ub3V0ZXJIZWlnaHQodHJ1ZSl9ZWxzZXtqPWsuX2VsZW0ub3V0ZXJXaWR0aCh0cnVlKX1pZihqPm8pe289an19fWlmKHRoaXMubmFtZT09PSJ5TWlkQXhpcyIpe2ZvcihtPTA7bTxhO20rKyl7az1sW21dO2lmKGsuX2VsZW0pe2o9KG8tay5fZWxlbS5vdXRlcldpZHRoKHRydWUpKS8yO2suX2VsZW0uY3NzKCJsZWZ0IixqKX19fWs9bnVsbDtsPW51bGw7aWYoZil7Zz10aGlzLl9sYWJlbC5fZWxlbS5vdXRlcldpZHRoKHRydWUpO249dGhpcy5fbGFiZWwuX2VsZW0ub3V0ZXJIZWlnaHQodHJ1ZSl9aWYodGhpcy5uYW1lPT09InhheGlzIil7bz1vK247dGhpcy5fZWxlbS5jc3Moe2hlaWdodDpvKyJweCIsbGVmdDoiMHB4Iixib3R0b206IjBweCJ9KX1lbHNle2lmKHRoaXMubmFtZT09PSJ4MmF4aXMiKXtvPW8rbjt0aGlzLl9lbGVtLmNzcyh7aGVpZ2h0Om8rInB4IixsZWZ0OiIwcHgiLHRvcDoiMHB4In0pfWVsc2V7aWYodGhpcy5uYW1lPT09InlheGlzIil7bz1vK2c7dGhpcy5fZWxlbS5jc3Moe3dpZHRoOm8rInB4IixsZWZ0OiIwcHgiLHRvcDoiMHB4In0pO2lmKGYmJnRoaXMuX2xhYmVsLmNvbnN0cnVjdG9yPT1lLmpxcGxvdC5BeGlzTGFiZWxSZW5kZXJlcil7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJ3aWR0aCIsZysicHgiKX19ZWxzZXtpZih0aGlzLm5hbWU9PT0ieU1pZEF4aXMiKXt2YXIgaj1vLzItZy8yO3RoaXMuX2VsZW0uY3NzKHt3aWR0aDpvKyJweCIsdG9wOiIwcHgifSk7aWYoZiYmdGhpcy5fbGFiZWwuY29uc3RydWN0b3I9PWUuanFwbG90LkF4aXNMYWJlbFJlbmRlcmVyKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3Moe3dpZHRoOmcsbGVmdDpqLHRvcDowfSl9fWVsc2V7bz1vK2c7dGhpcy5fZWxlbS5jc3Moe3dpZHRoOm8rInB4IixyaWdodDoiMHB4Iix0b3A6IjBweCJ9KTtpZihmJiZ0aGlzLl9sYWJlbC5jb25zdHJ1Y3Rvcj09ZS5qcXBsb3QuQXhpc0xhYmVsUmVuZGVyZXIpe3RoaXMuX2xhYmVsLl9lbGVtLmNzcygid2lkdGgiLGcrInB4Iil9fX19fX19O2UuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXIucHJvdG90eXBlLnBhY2s9ZnVuY3Rpb24oaixnKXtqPWp8fHt9O2c9Z3x8dGhpcy5fb2Zmc2V0czt2YXIgQj10aGlzLl90aWNrczt2YXIgdj10aGlzLm1heDt2YXIgdT10aGlzLm1pbjt2YXIgbz1nLm1heDt2YXIgbT1nLm1pbjt2YXIgcj0odGhpcy5fbGFiZWw9PW51bGwpP2ZhbHNlOnRoaXMuX2xhYmVsLnNob3c7Zm9yKHZhciBzIGluIGope3RoaXMuX2VsZW0uY3NzKHMsaltzXSl9dGhpcy5fb2Zmc2V0cz1nO3ZhciBrPW8tbTt2YXIgbD12LXU7dmFyIHo9dGhpcy5fc3BsaXRMZW5ndGg7aWYodGhpcy5fc3BsaXRBeGlzKXtrLT10aGlzLl9zcGxpdExlbmd0aDt0aGlzLnAydT1mdW5jdGlvbihoKXtyZXR1cm4oaC1tKSpsL2srdX07dGhpcy51MnA9ZnVuY3Rpb24oaCl7aWYoaDw9MCl7cmV0dXJuKGgtdSkqay9sK219ZWxzZXtyZXR1cm4oaC11KSprL2wrbSt6fX07dGhpcy5zZXJpZXNfdTJwPWZ1bmN0aW9uKGgpe2lmKGg8PTApe3JldHVybihoLXUpKmsvbH1lbHNle3JldHVybihoLXUpKmsvbCt6fX07dGhpcy5zZXJpZXNfcDJ1PWZ1bmN0aW9uKGgpe3JldHVybiBoKmwvayt1fX1lbHNle3RoaXMucDJ1PWZ1bmN0aW9uKGgpe3JldHVybihoLW0pKmwvayt1fTt0aGlzLnUycD1mdW5jdGlvbihoKXtyZXR1cm4oaC11KSprL2wrbX07aWYodGhpcy5uYW1lLmNoYXJBdCgwKT09PSJ4Iil7dGhpcy5zZXJpZXNfdTJwPWZ1bmN0aW9uKGgpe3JldHVybihoLXUpKmsvbH07dGhpcy5zZXJpZXNfcDJ1PWZ1bmN0aW9uKGgpe3JldHVybiBoKmwvayt1fX1lbHNle3RoaXMuc2VyaWVzX3UycD1mdW5jdGlvbihoKXtyZXR1cm4oaC12KSprL2x9O3RoaXMuc2VyaWVzX3AydT1mdW5jdGlvbihoKXtyZXR1cm4gaCpsL2srdn19fWlmKHRoaXMuc2hvdyl7aWYodGhpcy5uYW1lLmNoYXJBdCgwKT09PSJ4Iil7Zm9yKHZhciB4PTA7eDxCLmxlbmd0aDt4Kyspe3ZhciBxPUJbeF07aWYocS5zaG93JiZxLnNob3dMYWJlbCl7dmFyIGY7aWYocS5jb25zdHJ1Y3Rvcj09ZS5qcXBsb3QuQ2FudmFzQXhpc1RpY2tSZW5kZXJlciYmcS5hbmdsZSl7dmFyIEE9KHRoaXMubmFtZT09InhheGlzIik/MTotMTtzd2l0Y2gocS5sYWJlbFBvc2l0aW9uKXtjYXNlImF1dG8iOmlmKEEqcS5hbmdsZTwwKXtmPS1xLmdldFdpZHRoKCkrcS5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbigtcS5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWVsc2V7Zj0tcS5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbihxLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9YnJlYWs7Y2FzZSJlbmQiOmY9LXEuZ2V0V2lkdGgoKStxLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguc2luKC1xLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzI7YnJlYWs7Y2FzZSJzdGFydCI6Zj0tcS5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLnNpbihxLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzI7YnJlYWs7Y2FzZSJtaWRkbGUiOmY9LXEuZ2V0V2lkdGgoKS8yK3EuX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4oLXEuX3RleHRSZW5kZXJlci5hbmdsZSkvMjticmVhaztkZWZhdWx0OmY9LXEuZ2V0V2lkdGgoKS8yK3EuX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5zaW4oLXEuX3RleHRSZW5kZXJlci5hbmdsZSkvMjticmVha319ZWxzZXtmPS1xLmdldFdpZHRoKCkvMn12YXIgQz10aGlzLnUycChxLnZhbHVlKStmKyJweCI7cS5fZWxlbS5jc3MoImxlZnQiLEMpO3EucGFjaygpfX1pZihyKXt2YXIgbj10aGlzLl9sYWJlbC5fZWxlbS5vdXRlcldpZHRoKHRydWUpO3RoaXMuX2xhYmVsLl9lbGVtLmNzcygibGVmdCIsbStrLzItbi8yKyJweCIpO2lmKHRoaXMubmFtZT09InhheGlzIil7dGhpcy5fbGFiZWwuX2VsZW0uY3NzKCJib3R0b20iLCIwcHgiKX1lbHNle3RoaXMuX2xhYmVsLl9lbGVtLmNzcygidG9wIiwiMHB4Iil9dGhpcy5fbGFiZWwucGFjaygpfX1lbHNle2Zvcih2YXIgeD0wO3g8Qi5sZW5ndGg7eCsrKXt2YXIgcT1CW3hdO2lmKHEuc2hvdyYmcS5zaG93TGFiZWwmJiFxLmlzTWlub3JUaWNrKXt2YXIgZjtpZihxLmNvbnN0cnVjdG9yPT1lLmpxcGxvdC5DYW52YXNBeGlzVGlja1JlbmRlcmVyJiZxLmFuZ2xlKXt2YXIgQT0odGhpcy5uYW1lPT0ieWF4aXMiKT8xOi0xO3N3aXRjaChxLmxhYmVsUG9zaXRpb24pe2Nhc2UiYXV0byI6Y2FzZSJlbmQiOmlmKEEqcS5hbmdsZTwwKXtmPS1xLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguY29zKC1xLl90ZXh0UmVuZGVyZXIuYW5nbGUpLzJ9ZWxzZXtmPS1xLmdldEhlaWdodCgpK3EuX3RleHRSZW5kZXJlci5oZWlnaHQqTWF0aC5jb3MocS5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWJyZWFrO2Nhc2Uic3RhcnQiOmlmKHEuYW5nbGU+MCl7Zj0tcS5fdGV4dFJlbmRlcmVyLmhlaWdodCpNYXRoLmNvcygtcS5fdGV4dFJlbmRlcmVyLmFuZ2xlKS8yfWVsc2V7Zj0tcS5nZXRIZWlnaHQoKStxLl90ZXh0UmVuZGVyZXIuaGVpZ2h0Kk1hdGguY29zKHEuX3RleHRSZW5kZXJlci5hbmdsZSkvMn1icmVhaztjYXNlIm1pZGRsZSI6Zj0tcS5nZXRIZWlnaHQoKS8yO2JyZWFrO2RlZmF1bHQ6Zj0tcS5nZXRIZWlnaHQoKS8yO2JyZWFrfX1lbHNle2Y9LXEuZ2V0SGVpZ2h0KCkvMn12YXIgQz10aGlzLnUycChxLnZhbHVlKStmKyJweCI7cS5fZWxlbS5jc3MoInRvcCIsQyk7cS5wYWNrKCl9fWlmKHIpe3ZhciB5PXRoaXMuX2xhYmVsLl9lbGVtLm91dGVySGVpZ2h0KHRydWUpO2lmKHRoaXMubmFtZSE9PSJ5TWlkQXhpcyIpe3RoaXMuX2xhYmVsLl9lbGVtLmNzcygidG9wIixvLWsvMi15LzIrInB4Iil9aWYodGhpcy5uYW1lPT0ieWF4aXMiKXt0aGlzLl9sYWJlbC5fZWxlbS5jc3MoImxlZnQiLCIwcHgiKX1lbHNle2lmKHRoaXMubmFtZSE9PSJ5TWlkQXhpcyIpe3RoaXMuX2xhYmVsLl9lbGVtLmNzcygicmlnaHQiLCIwcHgiKX19dGhpcy5fbGFiZWwucGFjaygpfX19Qj1udWxsfX0pKGpRdWVyeSk7]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oYSl7YS5qcXBsb3QuUHlyYW1pZEdyaWRSZW5kZXJlcj1mdW5jdGlvbigpe2EuanFwbG90LkNhbnZhc0dyaWRSZW5kZXJlci5jYWxsKHRoaXMpfTthLmpxcGxvdC5QeXJhbWlkR3JpZFJlbmRlcmVyLnByb3RvdHlwZT1uZXcgYS5qcXBsb3QuQ2FudmFzR3JpZFJlbmRlcmVyKCk7YS5qcXBsb3QuUHlyYW1pZEdyaWRSZW5kZXJlci5wcm90b3R5cGUuY29uc3RydWN0b3I9YS5qcXBsb3QuUHlyYW1pZEdyaWRSZW5kZXJlcjthLmpxcGxvdC5DYW52YXNHcmlkUmVuZGVyZXIucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oYyl7dGhpcy5fY3R4O3RoaXMucGxvdEJhbmRzPXtzaG93OmZhbHNlLGNvbG9yOiJyZ2IoMjMwLCAyMTksIDE3OSkiLGF4aXM6InkiLHN0YXJ0Om51bGwsaW50ZXJ2YWw6MTB9O2EuZXh0ZW5kKHRydWUsdGhpcyxjKTt2YXIgYj17bGluZUpvaW46Im1pdGVyIixsaW5lQ2FwOiJyb3VuZCIsZmlsbDpmYWxzZSxpc2FyYzpmYWxzZSxhbmdsZTp0aGlzLnNoYWRvd0FuZ2xlLG9mZnNldDp0aGlzLnNoYWRvd09mZnNldCxhbHBoYTp0aGlzLnNoYWRvd0FscGhhLGRlcHRoOnRoaXMuc2hhZG93RGVwdGgsbGluZVdpZHRoOnRoaXMuc2hhZG93V2lkdGgsY2xvc2VQYXRoOmZhbHNlLHN0cm9rZVN0eWxlOnRoaXMuc2hhZG93Q29sb3J9O3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuaW5pdChiKX07YS5qcXBsb3QuUHlyYW1pZEdyaWRSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbigpe3RoaXMuX2N0eD10aGlzLl9lbGVtLmdldCgwKS5nZXRDb250ZXh0KCIyZCIpO3ZhciBEPXRoaXMuX2N0eDt2YXIgRz10aGlzLl9heGVzO3ZhciBxPUcueGF4aXMudTJwO3ZhciBKPUcueU1pZEF4aXMudTJwO3ZhciBsPUcueGF4aXMubWF4LzEwMDA7dmFyIHU9cSgwKTt2YXIgZj1xKGwpO3ZhciByPVsieGF4aXMiLCJ5YXhpcyIsIngyYXhpcyIsInkyYXhpcyIsInlNaWRBeGlzIl07RC5zYXZlKCk7RC5jbGVhclJlY3QoMCwwLHRoaXMuX3Bsb3REaW1lbnNpb25zLndpZHRoLHRoaXMuX3Bsb3REaW1lbnNpb25zLmhlaWdodCk7RC5maWxsU3R5bGU9dGhpcy5iYWNrZ3JvdW5kQ29sb3J8fHRoaXMuYmFja2dyb3VuZDtELmZpbGxSZWN0KHRoaXMuX2xlZnQsdGhpcy5fdG9wLHRoaXMuX3dpZHRoLHRoaXMuX2hlaWdodCk7aWYodGhpcy5wbG90QmFuZHMuc2hvdyl7RC5zYXZlKCk7dmFyIGM9dGhpcy5wbG90QmFuZHM7RC5maWxsU3R5bGU9Yy5jb2xvcjt2YXIgZDt2YXIgbyxuLHAsSTtpZihjLmF4aXMuY2hhckF0KDApPT09IngiKXtpZihHLnhheGlzLnNob3cpe2Q9Ry54YXhpc319ZWxzZXtpZihjLmF4aXMuY2hhckF0KDApPT09InkiKXtpZihHLnlheGlzLnNob3cpe2Q9Ry55YXhpc31lbHNle2lmKEcueTJheGlzLnNob3cpe2Q9Ry55MmF4aXN9ZWxzZXtpZihHLnlNaWRBeGlzLnNob3cpe2Q9Ry55TWlkQXhpc319fX19aWYoZCE9PXVuZGVmaW5lZCl7dmFyIGc9Yy5zdGFydDtpZihnPT09bnVsbCl7Zz1kLm1pbn1mb3IodmFyIEg9ZztIPGQubWF4O0grPTIqYy5pbnRlcnZhbCl7aWYoZC5uYW1lLmNoYXJBdCgwKT09PSJ5Iil7bz10aGlzLl9sZWZ0O2lmKChIK2MuaW50ZXJ2YWwpPGQubWF4KXtuPWQuc2VyaWVzX3UycChIK2MuaW50ZXJ2YWwpK3RoaXMuX3RvcH1lbHNle249ZC5zZXJpZXNfdTJwKGQubWF4KSt0aGlzLl90b3B9cD10aGlzLl9yaWdodC10aGlzLl9sZWZ0O0k9ZC5zZXJpZXNfdTJwKGcpLWQuc2VyaWVzX3UycChnK2MuaW50ZXJ2YWwpO0QuZmlsbFJlY3QobyxuLHAsSSl9fX1ELnJlc3RvcmUoKX1ELnNhdmUoKTtELmxpbmVKb2luPSJtaXRlciI7RC5saW5lQ2FwPSJidXR0IjtELmxpbmVXaWR0aD10aGlzLmdyaWRMaW5lV2lkdGg7RC5zdHJva2VTdHlsZT10aGlzLmdyaWRMaW5lQ29sb3I7dmFyIEwsSyxBLEM7Zm9yKHZhciBIPTU7SD4wO0gtLSl7dmFyIE89cltILTFdO3ZhciBkPUdbT107dmFyIE09ZC5fdGlja3M7dmFyIEI9TS5sZW5ndGg7aWYoZC5zaG93KXtpZihkLmRyYXdCYXNlbGluZSl7dmFyIE49e307aWYoZC5iYXNlbGluZVdpZHRoIT09bnVsbCl7Ti5saW5lV2lkdGg9ZC5iYXNlbGluZVdpZHRofWlmKGQuYmFzZWxpbmVDb2xvciE9PW51bGwpe04uc3Ryb2tlU3R5bGU9ZC5iYXNlbGluZUNvbG9yfXN3aXRjaChPKXtjYXNlInhheGlzIjppZihHLnlNaWRBeGlzLnNob3cpe3oodGhpcy5fbGVmdCx0aGlzLl9ib3R0b20sdSx0aGlzLl9ib3R0b20sTik7eihmLHRoaXMuX2JvdHRvbSx0aGlzLl9yaWdodCx0aGlzLl9ib3R0b20sTil9ZWxzZXt6KHRoaXMuX2xlZnQsdGhpcy5fYm90dG9tLHRoaXMuX3JpZ2h0LHRoaXMuX2JvdHRvbSxOKX1icmVhaztjYXNlInlheGlzIjp6KHRoaXMuX2xlZnQsdGhpcy5fYm90dG9tLHRoaXMuX2xlZnQsdGhpcy5fdG9wLE4pO2JyZWFrO2Nhc2UieU1pZEF4aXMiOnoodSx0aGlzLl9ib3R0b20sdSx0aGlzLl90b3AsTik7eihmLHRoaXMuX2JvdHRvbSxmLHRoaXMuX3RvcCxOKTticmVhaztjYXNlIngyYXhpcyI6aWYoRy55TWlkQXhpcy5zaG93KXt6KHRoaXMuX2xlZnQsdGhpcy5fdG9wLHUsdGhpcy5fdG9wLE4pO3ooZix0aGlzLl90b3AsdGhpcy5fcmlnaHQsdGhpcy5fdG9wLE4pfWVsc2V7eih0aGlzLl9sZWZ0LHRoaXMuX2JvdHRvbSx0aGlzLl9yaWdodCx0aGlzLl9ib3R0b20sTil9YnJlYWs7Y2FzZSJ5MmF4aXMiOnoodGhpcy5fcmlnaHQsdGhpcy5fYm90dG9tLHRoaXMuX3JpZ2h0LHRoaXMuX3RvcCxOKTticmVha319Zm9yKHZhciBFPUI7RT4wO0UtLSl7dmFyIHY9TVtFLTFdO2lmKHYuc2hvdyl7dmFyIGs9TWF0aC5yb3VuZChkLnUycCh2LnZhbHVlKSkrMC41O3N3aXRjaChPKXtjYXNlInhheGlzIjppZih2LnNob3dHcmlkbGluZSYmdGhpcy5kcmF3R3JpZGxpbmVzJiYoIXYuaXNNaW5vclRpY2t8fGQuc2hvd01pbm9yVGlja3MpKXt6KGssdGhpcy5fdG9wLGssdGhpcy5fYm90dG9tKX1pZih2LnNob3dNYXJrJiZ2Lm1hcmsmJighdi5pc01pbm9yVGlja3x8ZC5zaG93TWlub3JUaWNrcykpe0E9di5tYXJrU2l6ZTtDPXYubWFyazt2YXIgaz1NYXRoLnJvdW5kKGQudTJwKHYudmFsdWUpKSswLjU7c3dpdGNoKEMpe2Nhc2Uib3V0c2lkZSI6TD10aGlzLl9ib3R0b207Sz10aGlzLl9ib3R0b20rQTticmVhaztjYXNlImluc2lkZSI6TD10aGlzLl9ib3R0b20tQTtLPXRoaXMuX2JvdHRvbTticmVhaztjYXNlImNyb3NzIjpMPXRoaXMuX2JvdHRvbS1BO0s9dGhpcy5fYm90dG9tK0E7YnJlYWs7ZGVmYXVsdDpMPXRoaXMuX2JvdHRvbTtLPXRoaXMuX2JvdHRvbStBO2JyZWFrfWlmKHRoaXMuc2hhZG93KXt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoRCxbW2ssTF0sW2ssS11dLHtsaW5lQ2FwOiJidXR0IixsaW5lV2lkdGg6dGhpcy5ncmlkTGluZVdpZHRoLG9mZnNldDp0aGlzLmdyaWRMaW5lV2lkdGgqMC43NSxkZXB0aDoyLGZpbGw6ZmFsc2UsY2xvc2VQYXRoOmZhbHNlfSl9eihrLEwsayxLKX1icmVhaztjYXNlInlheGlzIjppZih2LnNob3dHcmlkbGluZSYmdGhpcy5kcmF3R3JpZGxpbmVzJiYoIXYuaXNNaW5vclRpY2t8fGQuc2hvd01pbm9yVGlja3MpKXt6KHRoaXMuX3JpZ2h0LGssdGhpcy5fbGVmdCxrKX1pZih2LnNob3dNYXJrJiZ2Lm1hcmsmJighdi5pc01pbm9yVGlja3x8ZC5zaG93TWlub3JUaWNrcykpe0E9di5tYXJrU2l6ZTtDPXYubWFyazt2YXIgaz1NYXRoLnJvdW5kKGQudTJwKHYudmFsdWUpKSswLjU7c3dpdGNoKEMpe2Nhc2Uib3V0c2lkZSI6TD10aGlzLl9sZWZ0LUE7Sz10aGlzLl9sZWZ0O2JyZWFrO2Nhc2UiaW5zaWRlIjpMPXRoaXMuX2xlZnQ7Sz10aGlzLl9sZWZ0K0E7YnJlYWs7Y2FzZSJjcm9zcyI6TD10aGlzLl9sZWZ0LUE7Sz10aGlzLl9sZWZ0K0E7YnJlYWs7ZGVmYXVsdDpMPXRoaXMuX2xlZnQtQTtLPXRoaXMuX2xlZnQ7YnJlYWt9aWYodGhpcy5zaGFkb3cpe3RoaXMucmVuZGVyZXIuc2hhZG93UmVuZGVyZXIuZHJhdyhELFtbTCxrXSxbSyxrXV0se2xpbmVDYXA6ImJ1dHQiLGxpbmVXaWR0aDp0aGlzLmdyaWRMaW5lV2lkdGgqMS41LG9mZnNldDp0aGlzLmdyaWRMaW5lV2lkdGgqMC43NSxmaWxsOmZhbHNlLGNsb3NlUGF0aDpmYWxzZX0pfXooTCxrLEssayx7c3Ryb2tlU3R5bGU6ZC5ib3JkZXJDb2xvcn0pfWJyZWFrO2Nhc2UieU1pZEF4aXMiOmlmKHYuc2hvd0dyaWRsaW5lJiZ0aGlzLmRyYXdHcmlkbGluZXMmJighdi5pc01pbm9yVGlja3x8ZC5zaG93TWlub3JUaWNrcykpe3oodGhpcy5fbGVmdCxrLHUsayk7eihmLGssdGhpcy5fcmlnaHQsayl9aWYodi5zaG93TWFyayYmdi5tYXJrJiYoIXYuaXNNaW5vclRpY2t8fGQuc2hvd01pbm9yVGlja3MpKXtBPXYubWFya1NpemU7Qz12Lm1hcms7dmFyIGs9TWF0aC5yb3VuZChkLnUycCh2LnZhbHVlKSkrMC41O0w9dTtLPXUrQTtpZih0aGlzLnNoYWRvdyl7dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KEQsW1tMLGtdLFtLLGtdXSx7bGluZUNhcDoiYnV0dCIsbGluZVdpZHRoOnRoaXMuZ3JpZExpbmVXaWR0aCoxLjUsb2Zmc2V0OnRoaXMuZ3JpZExpbmVXaWR0aCowLjc1LGZpbGw6ZmFsc2UsY2xvc2VQYXRoOmZhbHNlfSl9eihMLGssSyxrLHtzdHJva2VTdHlsZTpkLmJvcmRlckNvbG9yfSk7TD1mLUE7Sz1mO2lmKHRoaXMuc2hhZG93KXt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoRCxbW0wsa10sW0ssa11dLHtsaW5lQ2FwOiJidXR0IixsaW5lV2lkdGg6dGhpcy5ncmlkTGluZVdpZHRoKjEuNSxvZmZzZXQ6dGhpcy5ncmlkTGluZVdpZHRoKjAuNzUsZmlsbDpmYWxzZSxjbG9zZVBhdGg6ZmFsc2V9KX16KEwsayxLLGsse3N0cm9rZVN0eWxlOmQuYm9yZGVyQ29sb3J9KX1icmVhaztjYXNlIngyYXhpcyI6aWYodi5zaG93R3JpZGxpbmUmJnRoaXMuZHJhd0dyaWRsaW5lcyYmKCF2LmlzTWlub3JUaWNrfHxkLnNob3dNaW5vclRpY2tzKSl7eihrLHRoaXMuX2JvdHRvbSxrLHRoaXMuX3RvcCl9aWYodi5zaG93TWFyayYmdi5tYXJrJiYoIXYuaXNNaW5vclRpY2t8fGQuc2hvd01pbm9yVGlja3MpKXtBPXYubWFya1NpemU7Qz12Lm1hcms7dmFyIGs9TWF0aC5yb3VuZChkLnUycCh2LnZhbHVlKSkrMC41O3N3aXRjaChDKXtjYXNlIm91dHNpZGUiOkw9dGhpcy5fdG9wLUE7Sz10aGlzLl90b3A7YnJlYWs7Y2FzZSJpbnNpZGUiOkw9dGhpcy5fdG9wO0s9dGhpcy5fdG9wK0E7YnJlYWs7Y2FzZSJjcm9zcyI6TD10aGlzLl90b3AtQTtLPXRoaXMuX3RvcCtBO2JyZWFrO2RlZmF1bHQ6TD10aGlzLl90b3AtQTtLPXRoaXMuX3RvcDticmVha31pZih0aGlzLnNoYWRvdyl7dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KEQsW1trLExdLFtrLEtdXSx7bGluZUNhcDoiYnV0dCIsbGluZVdpZHRoOnRoaXMuZ3JpZExpbmVXaWR0aCxvZmZzZXQ6dGhpcy5ncmlkTGluZVdpZHRoKjAuNzUsZGVwdGg6MixmaWxsOmZhbHNlLGNsb3NlUGF0aDpmYWxzZX0pfXooayxMLGssSyl9YnJlYWs7Y2FzZSJ5MmF4aXMiOmlmKHYuc2hvd0dyaWRsaW5lJiZ0aGlzLmRyYXdHcmlkbGluZXMmJighdi5pc01pbm9yVGlja3x8ZC5zaG93TWlub3JUaWNrcykpe3oodGhpcy5fbGVmdCxrLHRoaXMuX3JpZ2h0LGspfWlmKHYuc2hvd01hcmsmJnYubWFyayYmKCF2LmlzTWlub3JUaWNrfHxkLnNob3dNaW5vclRpY2tzKSl7QT12Lm1hcmtTaXplO0M9di5tYXJrO3ZhciBrPU1hdGgucm91bmQoZC51MnAodi52YWx1ZSkpKzAuNTtzd2l0Y2goQyl7Y2FzZSJvdXRzaWRlIjpMPXRoaXMuX3JpZ2h0O0s9dGhpcy5fcmlnaHQrQTticmVhaztjYXNlImluc2lkZSI6TD10aGlzLl9yaWdodC1BO0s9dGhpcy5fcmlnaHQ7YnJlYWs7Y2FzZSJjcm9zcyI6TD10aGlzLl9yaWdodC1BO0s9dGhpcy5fcmlnaHQrQTticmVhaztkZWZhdWx0Okw9dGhpcy5fcmlnaHQ7Sz10aGlzLl9yaWdodCtBO2JyZWFrfWlmKHRoaXMuc2hhZG93KXt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoRCxbW0wsa10sW0ssa11dLHtsaW5lQ2FwOiJidXR0IixsaW5lV2lkdGg6dGhpcy5ncmlkTGluZVdpZHRoKjEuNSxvZmZzZXQ6dGhpcy5ncmlkTGluZVdpZHRoKjAuNzUsZmlsbDpmYWxzZSxjbG9zZVBhdGg6ZmFsc2V9KX16KEwsayxLLGsse3N0cm9rZVN0eWxlOmQuYm9yZGVyQ29sb3J9KX1icmVhaztkZWZhdWx0OmJyZWFrfX19dj1udWxsfWQ9bnVsbDtNPW51bGx9RC5yZXN0b3JlKCk7ZnVuY3Rpb24geihqLGksZSxiLGgpe0Quc2F2ZSgpO2g9aHx8e307aWYoaC5saW5lV2lkdGg9PW51bGx8fGgubGluZVdpZHRoIT0wKXthLmV4dGVuZCh0cnVlLEQsaCk7RC5iZWdpblBhdGgoKTtELm1vdmVUbyhqLGkpO0QubGluZVRvKGUsYik7RC5zdHJva2UoKX1ELnJlc3RvcmUoKX1pZih0aGlzLnNoYWRvdyl7aWYoRy55TWlkQXhpcy5zaG93KXt2YXIgRj1bW3RoaXMuX2xlZnQsdGhpcy5fYm90dG9tXSxbdSx0aGlzLl9ib3R0b21dXTt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoRCxGKTt2YXIgRj1bW2YsdGhpcy5fYm90dG9tXSxbdGhpcy5fcmlnaHQsdGhpcy5fYm90dG9tXSxbdGhpcy5fcmlnaHQsdGhpcy5fdG9wXV07dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KEQsRik7dmFyIEY9W1t1LHRoaXMuX2JvdHRvbV0sW3UsdGhpcy5fdG9wXV07dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KEQsRil9ZWxzZXt2YXIgRj1bW3RoaXMuX2xlZnQsdGhpcy5fYm90dG9tXSxbdGhpcy5fcmlnaHQsdGhpcy5fYm90dG9tXSxbdGhpcy5fcmlnaHQsdGhpcy5fdG9wXV07dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KEQsRil9fWlmKHRoaXMuYm9yZGVyV2lkdGghPTAmJnRoaXMuZHJhd0JvcmRlcil7aWYoRy55TWlkQXhpcy5zaG93KXt6KHRoaXMuX2xlZnQsdGhpcy5fdG9wLHUsdGhpcy5fdG9wLHtsaW5lQ2FwOiJyb3VuZCIsc3Ryb2tlU3R5bGU6Ry54MmF4aXMuYm9yZGVyQ29sb3IsbGluZVdpZHRoOkcueDJheGlzLmJvcmRlcldpZHRofSk7eihmLHRoaXMuX3RvcCx0aGlzLl9yaWdodCx0aGlzLl90b3Ase2xpbmVDYXA6InJvdW5kIixzdHJva2VTdHlsZTpHLngyYXhpcy5ib3JkZXJDb2xvcixsaW5lV2lkdGg6Ry54MmF4aXMuYm9yZGVyV2lkdGh9KTt6KHRoaXMuX3JpZ2h0LHRoaXMuX3RvcCx0aGlzLl9yaWdodCx0aGlzLl9ib3R0b20se2xpbmVDYXA6InJvdW5kIixzdHJva2VTdHlsZTpHLnkyYXhpcy5ib3JkZXJDb2xvcixsaW5lV2lkdGg6Ry55MmF4aXMuYm9yZGVyV2lkdGh9KTt6KHRoaXMuX3JpZ2h0LHRoaXMuX2JvdHRvbSxmLHRoaXMuX2JvdHRvbSx7bGluZUNhcDoicm91bmQiLHN0cm9rZVN0eWxlOkcueGF4aXMuYm9yZGVyQ29sb3IsbGluZVdpZHRoOkcueGF4aXMuYm9yZGVyV2lkdGh9KTt6KHUsdGhpcy5fYm90dG9tLHRoaXMuX2xlZnQsdGhpcy5fYm90dG9tLHtsaW5lQ2FwOiJyb3VuZCIsc3Ryb2tlU3R5bGU6Ry54YXhpcy5ib3JkZXJDb2xvcixsaW5lV2lkdGg6Ry54YXhpcy5ib3JkZXJXaWR0aH0pO3oodGhpcy5fbGVmdCx0aGlzLl9ib3R0b20sdGhpcy5fbGVmdCx0aGlzLl90b3Ase2xpbmVDYXA6InJvdW5kIixzdHJva2VTdHlsZTpHLnlheGlzLmJvcmRlckNvbG9yLGxpbmVXaWR0aDpHLnlheGlzLmJvcmRlcldpZHRofSk7eih1LHRoaXMuX2JvdHRvbSx1LHRoaXMuX3RvcCx7bGluZUNhcDoicm91bmQiLHN0cm9rZVN0eWxlOkcueWF4aXMuYm9yZGVyQ29sb3IsbGluZVdpZHRoOkcueWF4aXMuYm9yZGVyV2lkdGh9KTt6KGYsdGhpcy5fYm90dG9tLGYsdGhpcy5fdG9wLHtsaW5lQ2FwOiJyb3VuZCIsc3Ryb2tlU3R5bGU6Ry55YXhpcy5ib3JkZXJDb2xvcixsaW5lV2lkdGg6Ry55YXhpcy5ib3JkZXJXaWR0aH0pfWVsc2V7eih0aGlzLl9sZWZ0LHRoaXMuX3RvcCx0aGlzLl9yaWdodCx0aGlzLl90b3Ase2xpbmVDYXA6InJvdW5kIixzdHJva2VTdHlsZTpHLngyYXhpcy5ib3JkZXJDb2xvcixsaW5lV2lkdGg6Ry54MmF4aXMuYm9yZGVyV2lkdGh9KTt6KHRoaXMuX3JpZ2h0LHRoaXMuX3RvcCx0aGlzLl9yaWdodCx0aGlzLl9ib3R0b20se2xpbmVDYXA6InJvdW5kIixzdHJva2VTdHlsZTpHLnkyYXhpcy5ib3JkZXJDb2xvcixsaW5lV2lkdGg6Ry55MmF4aXMuYm9yZGVyV2lkdGh9KTt6KHRoaXMuX3JpZ2h0LHRoaXMuX2JvdHRvbSx0aGlzLl9sZWZ0LHRoaXMuX2JvdHRvbSx7bGluZUNhcDoicm91bmQiLHN0cm9rZVN0eWxlOkcueGF4aXMuYm9yZGVyQ29sb3IsbGluZVdpZHRoOkcueGF4aXMuYm9yZGVyV2lkdGh9KTt6KHRoaXMuX2xlZnQsdGhpcy5fYm90dG9tLHRoaXMuX2xlZnQsdGhpcy5fdG9wLHtsaW5lQ2FwOiJyb3VuZCIsc3Ryb2tlU3R5bGU6Ry55YXhpcy5ib3JkZXJDb2xvcixsaW5lV2lkdGg6Ry55YXhpcy5ib3JkZXJXaWR0aH0pfX1ELnJlc3RvcmUoKTtEPW51bGw7Rz1udWxsfX0pKGpRdWVyeSk7]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oYyl7aWYoYy5qcXBsb3QuUHlyYW1pZEF4aXNSZW5kZXJlcj09PXVuZGVmaW5lZCl7Yy5hamF4KHt1cmw6Yy5qcXBsb3QucGx1Z2luTG9jYXRpb24rImpxcGxvdC5weXJhbWlkQXhpc1JlbmRlcmVyLmpzIixkYXRhVHlwZToic2NyaXB0Iixhc3luYzpmYWxzZX0pfWlmKGMuanFwbG90LlB5cmFtaWRHcmlkUmVuZGVyZXI9PT11bmRlZmluZWQpe2MuYWpheCh7dXJsOmMuanFwbG90LnBsdWdpbkxvY2F0aW9uKyJqcXBsb3QucHlyYW1pZEdyaWRSZW5kZXJlci5qcyIsZGF0YVR5cGU6InNjcmlwdCIsYXN5bmM6ZmFsc2V9KX1jLmpxcGxvdC5QeXJhbWlkUmVuZGVyZXI9ZnVuY3Rpb24oKXtjLmpxcGxvdC5MaW5lUmVuZGVyZXIuY2FsbCh0aGlzKX07Yy5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyLnByb3RvdHlwZT1uZXcgYy5qcXBsb3QuTGluZVJlbmRlcmVyKCk7Yy5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1jLmpxcGxvdC5QeXJhbWlkUmVuZGVyZXI7Yy5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyLnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKGosbyl7aj1qfHx7fTt0aGlzLl90eXBlPSJweXJhbWlkIjt0aGlzLmJhclBhZGRpbmc9MTA7dGhpcy5iYXJXaWR0aD1udWxsO3RoaXMuZmlsbD10cnVlO3RoaXMuaGlnaGxpZ2h0TW91c2VPdmVyPXRydWU7dGhpcy5oaWdobGlnaHRNb3VzZURvd249ZmFsc2U7dGhpcy5oaWdobGlnaHRDb2xvcnM9W107dGhpcy5oaWdobGlnaHRUaHJlc2hvbGQ9Mjt0aGlzLnN5bmNocm9uaXplSGlnaGxpZ2h0PWZhbHNlO3RoaXMub2Zmc2V0QmFycz1mYWxzZTtpZihqLmhpZ2hsaWdodE1vdXNlRG93biYmai5oaWdobGlnaHRNb3VzZU92ZXI9PW51bGwpe2ouaGlnaGxpZ2h0TW91c2VPdmVyPWZhbHNlfXRoaXMuc2lkZT0icmlnaHQiO2MuZXh0ZW5kKHRydWUsdGhpcyxqKTtpZih0aGlzLnNpZGU9PT0ibGVmdCIpe3RoaXMuX2hpZ2hsaWdodFRocmVzaG9sZD1bWy10aGlzLmhpZ2hsaWdodFRocmVzaG9sZCwwXSxbLXRoaXMuaGlnaGxpZ2h0VGhyZXNob2xkLDBdLFswLDBdLFswLDBdXX1lbHNle3RoaXMuX2hpZ2hsaWdodFRocmVzaG9sZD1bWzAsMF0sWzAsMF0sW3RoaXMuaGlnaGxpZ2h0VGhyZXNob2xkLDBdLFt0aGlzLmhpZ2hsaWdodFRocmVzaG9sZCwwXV19dGhpcy5yZW5kZXJlci5vcHRpb25zPWo7dGhpcy5faGlnaGxpZ2h0ZWRQb2ludD1udWxsO3RoaXMuX2RhdGFDb2xvcnM9W107dGhpcy5fYmFyUG9pbnRzPVtdO3RoaXMuZmlsbEF4aXM9InkiO3RoaXMuX3ByaW1hcnlBeGlzPSJfeWF4aXMiO3RoaXMuX3hudWRnZT0wO3ZhciBuPXtsaW5lSm9pbjoibWl0ZXIiLGxpbmVDYXA6ImJ1dHQiLGZpbGw6dGhpcy5maWxsLGZpbGxSZWN0OnRoaXMuZmlsbCxpc2FyYzpmYWxzZSxzdHJva2VTdHlsZTp0aGlzLmNvbG9yLGZpbGxTdHlsZTp0aGlzLmNvbG9yLGNsb3NlUGF0aDp0aGlzLmZpbGwsbGluZVdpZHRoOnRoaXMubGluZVdpZHRofTt0aGlzLnJlbmRlcmVyLnNoYXBlUmVuZGVyZXIuaW5pdChuKTt2YXIgbT1qLnNoYWRvd09mZnNldDtpZihtPT1udWxsKXtpZih0aGlzLmxpbmVXaWR0aD4yLjUpe209MS4yNSooMSsoTWF0aC5hdGFuKCh0aGlzLmxpbmVXaWR0aC8yLjUpKS8wLjc4NTM5ODE2My0xKSowLjYpfWVsc2V7bT0xLjI1Kk1hdGguYXRhbigodGhpcy5saW5lV2lkdGgvMi41KSkvMC43ODUzOTgxNjN9fXZhciBoPXtsaW5lSm9pbjoibWl0ZXIiLGxpbmVDYXA6ImJ1dHQiLGZpbGw6dGhpcy5maWxsLGZpbGxSZWN0OnRoaXMuZmlsbCxpc2FyYzpmYWxzZSxhbmdsZTp0aGlzLnNoYWRvd0FuZ2xlLG9mZnNldDptLGFscGhhOnRoaXMuc2hhZG93QWxwaGEsZGVwdGg6dGhpcy5zaGFkb3dEZXB0aCxjbG9zZVBhdGg6dGhpcy5maWxsLGxpbmVXaWR0aDp0aGlzLmxpbmVXaWR0aH07dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5pbml0KGgpO28ucG9zdERyYXdIb29rcy5hZGRPbmNlKGYpO28uZXZlbnRMaXN0ZW5lckhvb2tzLmFkZE9uY2UoImpxcGxvdE1vdXNlTW92ZSIsZSk7aWYodGhpcy5zaWRlPT09ImxlZnQiKXtmb3IodmFyIGs9MCxnPXRoaXMuZGF0YS5sZW5ndGg7azxnO2srKyl7dGhpcy5kYXRhW2tdWzFdPS1NYXRoLmFicyh0aGlzLmRhdGFba11bMV0pfX19O2MuanFwbG90LlB5cmFtaWRSZW5kZXJlci5wcm90b3R5cGUuc2V0R3JpZERhdGE9ZnVuY3Rpb24ocCl7dmFyIGo9dGhpcy5feGF4aXMuc2VyaWVzX3UycDt2YXIgbz10aGlzLl95YXhpcy5zZXJpZXNfdTJwO3ZhciBrPXRoaXMuX3Bsb3REYXRhO3ZhciBuPXRoaXMuX3ByZXZQbG90RGF0YTt0aGlzLmdyaWREYXRhPVtdO3RoaXMuX3ByZXZHcmlkRGF0YT1bXTt2YXIgZz1rLmxlbmd0aDt2YXIgbT1mYWxzZTt2YXIgaDtmb3IoaD0wO2g8ZztoKyspe2lmKGtbaF1bMV08MCl7dGhpcy5zaWRlPSJsZWZ0In19aWYodGhpcy5feWF4aXMubmFtZT09PSJ5TWlkQXhpcyImJnRoaXMuc2lkZT09PSJyaWdodCIpe3RoaXMuX3hudWRnZT10aGlzLl94YXhpcy5tYXgvMjAwMDttPXRydWV9Zm9yKGg9MDtoPGc7aCsrKXtpZihrW2hdWzBdIT1udWxsJiZrW2hdWzFdIT1udWxsKXt0aGlzLmdyaWREYXRhLnB1c2goW2ooa1toXVsxXSksbyhrW2hdWzBdKV0pfWVsc2V7aWYoa1toXVswXT09bnVsbCl7dGhpcy5ncmlkRGF0YS5wdXNoKFtqKGtbaF1bMV0pLG51bGxdKX1lbHNle2lmKGtbaF1bMV09PW51bGwpe3RoaXMuZ3JpZERhdGEucHVzaChudWxsLFtvKGtbaF1bMF0pXSl9fX1pZihrW2hdWzFdPT09MCYmbSl7dGhpcy5ncmlkRGF0YVtoXVswXT1qKHRoaXMuX3hudWRnZSl9fX07Yy5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyLnByb3RvdHlwZS5tYWtlR3JpZERhdGE9ZnVuY3Rpb24obSxwKXt2YXIgaz10aGlzLl94YXhpcy5zZXJpZXNfdTJwO3ZhciBvPXRoaXMuX3lheGlzLnNlcmllc191MnA7dmFyIGo9W107dmFyIGc9bS5sZW5ndGg7dmFyIG49ZmFsc2U7dmFyIGg7Zm9yKGg9MDtoPGc7aCsrKXtpZihtW2hdWzFdPDApe3RoaXMuc2lkZT0ibGVmdCJ9fWlmKHRoaXMuX3lheGlzLm5hbWU9PT0ieU1pZEF4aXMiJiZ0aGlzLnNpZGU9PT0icmlnaHQiKXt0aGlzLl94bnVkZ2U9dGhpcy5feGF4aXMubWF4LzIwMDA7bj10cnVlfWZvcihoPTA7aDxnO2grKyl7aWYobVtoXVswXSE9bnVsbCYmbVtoXVsxXSE9bnVsbCl7ai5wdXNoKFtrKG1baF1bMV0pLG8obVtoXVswXSldKX1lbHNle2lmKG1baF1bMF09PW51bGwpe2oucHVzaChbayhtW2hdWzFdKSxudWxsXSl9ZWxzZXtpZihtW2hdWzFdPT1udWxsKXtqLnB1c2goW251bGwsbyhtW2hdWzBdKV0pfX19aWYobVtoXVsxXT09PTAmJm4pe2pbaF1bMF09ayh0aGlzLl94bnVkZ2UpfX1yZXR1cm4gan07Yy5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyLnByb3RvdHlwZS5zZXRCYXJXaWR0aD1mdW5jdGlvbigpe3ZhciBrO3ZhciBnPTA7dmFyIGg9MDt2YXIgbT10aGlzW3RoaXMuX3ByaW1hcnlBeGlzXTt2YXIgcSxsLG87Zz1tLm1heC1tLm1pbjt2YXIgbj1tLm51bWJlclRpY2tzO3ZhciBqPShuLTEpLzI7dmFyIHA9KHRoaXMuYmFyUGFkZGluZz09PTApPzE6MDtpZihtLm5hbWU9PSJ4YXhpcyJ8fG0ubmFtZT09IngyYXhpcyIpe3RoaXMuYmFyV2lkdGg9KG0uX29mZnNldHMubWF4LW0uX29mZnNldHMubWluKS9nLXRoaXMuYmFyUGFkZGluZytwfWVsc2V7aWYodGhpcy5maWxsKXt0aGlzLmJhcldpZHRoPShtLl9vZmZzZXRzLm1pbi1tLl9vZmZzZXRzLm1heCkvZy10aGlzLmJhclBhZGRpbmcrcH1lbHNle3RoaXMuYmFyV2lkdGg9KG0uX29mZnNldHMubWluLW0uX29mZnNldHMubWF4KS9nfX19O2MuanFwbG90LlB5cmFtaWRSZW5kZXJlci5wcm90b3R5cGUuZHJhdz1mdW5jdGlvbihCLEksayl7dmFyIEU7dmFyIHU9Yy5leHRlbmQoe30sayk7dmFyIHA9KHUuc2hhZG93IT11bmRlZmluZWQpP3Uuc2hhZG93OnRoaXMuc2hhZG93O3ZhciBLPSh1LnNob3dMaW5lIT11bmRlZmluZWQpP3Uuc2hvd0xpbmU6dGhpcy5zaG93TGluZTt2YXIgQz0odS5maWxsIT11bmRlZmluZWQpP3UuZmlsbDp0aGlzLmZpbGw7dmFyIHQ9dGhpcy5feGF4aXMuc2VyaWVzX3UycDt2YXIgRz10aGlzLl95YXhpcy5zZXJpZXNfdTJwO3ZhciB6LHg7dGhpcy5fZGF0YUNvbG9ycz1bXTt0aGlzLl9iYXJQb2ludHM9W107aWYodGhpcy5yZW5kZXJlci5vcHRpb25zLmJhcldpZHRoPT1udWxsKXt0aGlzLnJlbmRlcmVyLnNldEJhcldpZHRoLmNhbGwodGhpcyl9dmFyIEQ9W10scyxGO2lmKEspe3ZhciBxPW5ldyBjLmpxcGxvdC5Db2xvckdlbmVyYXRvcih0aGlzLm5lZ2F0aXZlU2VyaWVzQ29sb3JzKTt2YXIgdj1uZXcgYy5qcXBsb3QuQ29sb3JHZW5lcmF0b3IodGhpcy5zZXJpZXNDb2xvcnMpO3ZhciBKPXEuZ2V0KHRoaXMuaW5kZXgpO2lmKCF0aGlzLnVzZU5lZ2F0aXZlQ29sb3JzKXtKPXUuZmlsbFN0eWxlfXZhciBvPXUuZmlsbFN0eWxlO3ZhciBuO3ZhciBMPXRoaXMuX3hheGlzLnNlcmllc191MnAodGhpcy5feG51ZGdlKTt2YXIgaj10aGlzLl95YXhpcy5zZXJpZXNfdTJwKHRoaXMuX3lheGlzLm1pbik7dmFyIG09dGhpcy5feWF4aXMuc2VyaWVzX3UycCh0aGlzLl95YXhpcy5tYXgpO3ZhciBIPXRoaXMuYmFyV2lkdGg7dmFyIHk9SC8yO3ZhciBEPVtdO3ZhciByPXRoaXMub2Zmc2V0QmFycz95OjA7Zm9yKHZhciBFPTAsQT1JLmxlbmd0aDtFPEE7RSsrKXtpZih0aGlzLmRhdGFbRV1bMF09PW51bGwpe2NvbnRpbnVlfW49SVtFXVsxXTtpZih0aGlzLl9wbG90RGF0YVtFXVsxXTwwKXtpZih0aGlzLnZhcnlCYXJDb2xvciYmIXRoaXMuX3N0YWNrKXtpZih0aGlzLnVzZU5lZ2F0aXZlQ29sb3JzKXt1LmZpbGxTdHlsZT1xLm5leHQoKX1lbHNle3UuZmlsbFN0eWxlPXYubmV4dCgpfX19ZWxzZXtpZih0aGlzLnZhcnlCYXJDb2xvciYmIXRoaXMuX3N0YWNrKXt1LmZpbGxTdHlsZT12Lm5leHQoKX1lbHNle3UuZmlsbFN0eWxlPW99fWlmKHRoaXMuZmlsbCl7aWYodGhpcy5fcGxvdERhdGFbRV1bMV0+PTApe3M9SVtFXVswXS1MO0Y9dGhpcy5iYXJXaWR0aDtEPVtMLG4teS1yLHMsRl19ZWxzZXtzPUwtSVtFXVswXTtGPXRoaXMuYmFyV2lkdGg7RD1bSVtFXVswXSxuLXktcixzLEZdfXRoaXMuX2JhclBvaW50cy5wdXNoKFtbRFswXSxEWzFdK0ZdLFtEWzBdLERbMV1dLFtEWzBdK3MsRFsxXV0sW0RbMF0rcyxEWzFdK0ZdXSk7aWYocCl7dGhpcy5yZW5kZXJlci5zaGFkb3dSZW5kZXJlci5kcmF3KEIsRCl9dmFyIGc9dS5maWxsU3R5bGV8fHRoaXMuY29sb3I7dGhpcy5fZGF0YUNvbG9ycy5wdXNoKGcpO3RoaXMucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5kcmF3KEIsRCx1KX1lbHNle2lmKEU9PT0wKXtEPVtbTCxqXSxbSVtFXVswXSxqXSxbSVtFXVswXSxJW0VdWzFdLXktcl1dfWVsc2V7aWYoRTxBLTEpe0Q9RC5jb25jYXQoW1tJW0UtMV1bMF0sSVtFLTFdWzFdLXktcl0sW0lbRV1bMF0sSVtFXVsxXSt5LXJdLFtJW0VdWzBdLElbRV1bMV0teS1yXV0pfWVsc2V7RD1ELmNvbmNhdChbW0lbRS0xXVswXSxJW0UtMV1bMV0teS1yXSxbSVtFXVswXSxJW0VdWzFdK3ktcl0sW0lbRV1bMF0sbV0sW0wsbV1dKTtpZihwKXt0aGlzLnJlbmRlcmVyLnNoYWRvd1JlbmRlcmVyLmRyYXcoQixEKX12YXIgZz11LmZpbGxTdHlsZXx8dGhpcy5jb2xvcjt0aGlzLl9kYXRhQ29sb3JzLnB1c2goZyk7dGhpcy5yZW5kZXJlci5zaGFwZVJlbmRlcmVyLmRyYXcoQixELHUpfX19fX1pZih0aGlzLmhpZ2hsaWdodENvbG9ycy5sZW5ndGg9PTApe3RoaXMuaGlnaGxpZ2h0Q29sb3JzPWMuanFwbG90LmNvbXB1dGVIaWdobGlnaHRDb2xvcnModGhpcy5fZGF0YUNvbG9ycyl9ZWxzZXtpZih0eXBlb2YodGhpcy5oaWdobGlnaHRDb2xvcnMpPT0ic3RyaW5nIil7dGhpcy5oaWdobGlnaHRDb2xvcnM9W107Zm9yKHZhciBFPTA7RTx0aGlzLl9kYXRhQ29sb3JzLmxlbmd0aDtFKyspe3RoaXMuaGlnaGxpZ2h0Q29sb3JzLnB1c2godGhpcy5oaWdobGlnaHRDb2xvcnMpfX19fTtmdW5jdGlvbiBiKGwsayxoKXtoPWh8fHt9O2guYXhlc0RlZmF1bHRzPWguYXhlc0RlZmF1bHRzfHx7fTtoLmdyaWQ9aC5ncmlkfHx7fTtoLmxlZ2VuZD1oLmxlZ2VuZHx8e307aC5zZXJpZXNEZWZhdWx0cz1oLnNlcmllc0RlZmF1bHRzfHx7fTt2YXIgZz1mYWxzZTtpZihoLnNlcmllc0RlZmF1bHRzLnJlbmRlcmVyPT09Yy5qcXBsb3QuUHlyYW1pZFJlbmRlcmVyKXtnPXRydWV9ZWxzZXtpZihoLnNlcmllcyl7Zm9yKHZhciBqPTA7ajxoLnNlcmllcy5sZW5ndGg7aisrKXtpZihoLnNlcmllc1tqXS5yZW5kZXJlcj09PWMuanFwbG90LlB5cmFtaWRSZW5kZXJlcil7Zz10cnVlfX19fWlmKGcpe2guYXhlc0RlZmF1bHRzLnJlbmRlcmVyPWMuanFwbG90LlB5cmFtaWRBeGlzUmVuZGVyZXI7aC5ncmlkLnJlbmRlcmVyPWMuanFwbG90LlB5cmFtaWRHcmlkUmVuZGVyZXI7aC5zZXJpZXNEZWZhdWx0cy5wb2ludExhYmVscz17c2hvdzpmYWxzZX19fWZ1bmN0aW9uIGYoKXtpZih0aGlzLnBsdWdpbnMucHlyYW1pZFJlbmRlcmVyJiZ0aGlzLnBsdWdpbnMucHlyYW1pZFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcyl7dGhpcy5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRDYW52YXMucmVzZXRDYW52YXMoKTt0aGlzLnBsdWdpbnMucHlyYW1pZFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcz1udWxsfXRoaXMucGx1Z2lucy5weXJhbWlkUmVuZGVyZXI9e2hpZ2hsaWdodGVkU2VyaWVzSW5kZXg6bnVsbH07dGhpcy5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRDYW52YXM9bmV3IGMuanFwbG90LkdlbmVyaWNDYW52YXMoKTt0aGlzLmV2ZW50Q2FudmFzLl9lbGVtLmJlZm9yZSh0aGlzLnBsdWdpbnMucHlyYW1pZFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5jcmVhdGVFbGVtZW50KHRoaXMuX2dyaWRQYWRkaW5nLCJqcXBsb3QtcHlyYW1pZFJlbmRlcmVyLWhpZ2hsaWdodC1jYW52YXMiLHRoaXMuX3Bsb3REaW1lbnNpb25zLHRoaXMpKTt0aGlzLnBsdWdpbnMucHlyYW1pZFJlbmRlcmVyLmhpZ2hsaWdodENhbnZhcy5zZXRDb250ZXh0KCk7dGhpcy5ldmVudENhbnZhcy5fZWxlbS5iaW5kKCJtb3VzZWxlYXZlIix7cGxvdDp0aGlzfSxmdW5jdGlvbihnKXtkKGcuZGF0YS5wbG90KX0pfWZ1bmN0aW9uIGEobSxsLGosaSl7dmFyIGg9bS5zZXJpZXNbbF07dmFyIGc9bS5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7Zy5fY3R4LmNsZWFyUmVjdCgwLDAsZy5fY3R4LmNhbnZhcy53aWR0aCxnLl9jdHguY2FudmFzLmhlaWdodCk7aC5faGlnaGxpZ2h0ZWRQb2ludD1qO20ucGx1Z2lucy5weXJhbWlkUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleD1sO3ZhciBrPXtmaWxsU3R5bGU6aC5oaWdobGlnaHRDb2xvcnNbal0sZmlsbFJlY3Q6ZmFsc2V9O2gucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5kcmF3KGcuX2N0eCxpLGspO2lmKGguc3luY2hyb25pemVIaWdobGlnaHQhPT1mYWxzZSYmbS5zZXJpZXMubGVuZ3RoPj1oLnN5bmNocm9uaXplSGlnaGxpZ2h0JiZoLnN5bmNocm9uaXplSGlnaGxpZ2h0IT09bCl7aD1tLnNlcmllc1toLnN5bmNocm9uaXplSGlnaGxpZ2h0XTtrPXtmaWxsU3R5bGU6aC5oaWdobGlnaHRDb2xvcnNbal0sZmlsbFJlY3Q6ZmFsc2V9O2gucmVuZGVyZXIuc2hhcGVSZW5kZXJlci5kcmF3KGcuX2N0eCxoLl9iYXJQb2ludHNbal0sayl9Zz1udWxsfWZ1bmN0aW9uIGQoail7dmFyIGc9ai5wbHVnaW5zLnB5cmFtaWRSZW5kZXJlci5oaWdobGlnaHRDYW52YXM7Zy5fY3R4LmNsZWFyUmVjdCgwLDAsZy5fY3R4LmNhbnZhcy53aWR0aCxnLl9jdHguY2FudmFzLmhlaWdodCk7Zm9yKHZhciBoPTA7aDxqLnNlcmllcy5sZW5ndGg7aCsrKXtqLnNlcmllc1toXS5faGlnaGxpZ2h0ZWRQb2ludD1udWxsfWoucGx1Z2lucy5weXJhbWlkUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleD1udWxsO2oudGFyZ2V0LnRyaWdnZXIoImpxcGxvdERhdGFVbmhpZ2hsaWdodCIpO2c9bnVsbH1mdW5jdGlvbiBlKGssaixuLG0sbCl7aWYobSl7dmFyIGk9W20uc2VyaWVzSW5kZXgsbS5wb2ludEluZGV4LG0uZGF0YV07dmFyIGg9alF1ZXJ5LkV2ZW50KCJqcXBsb3REYXRhTW91c2VPdmVyIik7aC5wYWdlWD1rLnBhZ2VYO2gucGFnZVk9ay5wYWdlWTtsLnRhcmdldC50cmlnZ2VyKGgsaSk7aWYobC5zZXJpZXNbaVswXV0uaGlnaGxpZ2h0TW91c2VPdmVyJiYhKGlbMF09PWwucGx1Z2lucy5weXJhbWlkUmVuZGVyZXIuaGlnaGxpZ2h0ZWRTZXJpZXNJbmRleCYmaVsxXT09bC5zZXJpZXNbaVswXV0uX2hpZ2hsaWdodGVkUG9pbnQpKXt2YXIgZz1qUXVlcnkuRXZlbnQoImpxcGxvdERhdGFIaWdobGlnaHQiKTtnLndoaWNoPWsud2hpY2g7Zy5wYWdlWD1rLnBhZ2VYO2cucGFnZVk9ay5wYWdlWTtsLnRhcmdldC50cmlnZ2VyKGcsaSk7YShsLG0uc2VyaWVzSW5kZXgsbS5wb2ludEluZGV4LG0ucG9pbnRzKX19ZWxzZXtpZihtPT1udWxsKXtkKGwpfX19Yy5qcXBsb3QucHJlSW5pdEhvb2tzLnB1c2goYil9KShqUXVlcnkpOw==]]></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[LyoganFQbG90IDEuMC44cjEyNTAgfCAoYykgMjAwOS0yMDEzIENocmlzIExlb25lbGxvIHwganBsb3QuY29tDQogICBqc0RhdGUgfCAoYykgMjAxMC0yMDEzIENocmlzIExlb25lbGxvDQogKi8oZnVuY3Rpb24oZil7Zi5qcXBsb3QuVHJlbmRsaW5lPWZ1bmN0aW9uKCl7dGhpcy5zaG93PWYuanFwbG90LmNvbmZpZy5lbmFibGVQbHVnaW5zO3RoaXMuY29sb3I9IiM2NjY2NjYiO3RoaXMucmVuZGVyZXI9bmV3IGYuanFwbG90LkxpbmVSZW5kZXJlcigpO3RoaXMucmVuZGVyZXJPcHRpb25zPXttYXJrZXI6e3Nob3c6ZmFsc2V9fTt0aGlzLmxhYmVsPSIiO3RoaXMudHlwZT0ibGluZWFyIjt0aGlzLnNoYWRvdz10cnVlO3RoaXMubWFya2VyUmVuZGVyZXI9e3Nob3c6ZmFsc2V9O3RoaXMubGluZVdpZHRoPTEuNTt0aGlzLnNoYWRvd0FuZ2xlPTQ1O3RoaXMuc2hhZG93T2Zmc2V0PTE7dGhpcy5zaGFkb3dBbHBoYT0wLjA3O3RoaXMuc2hhZG93RGVwdGg9Mzt0aGlzLmlzVHJlbmRsaW5lPXRydWV9O2YuanFwbG90LnBvc3RTZXJpZXNJbml0SG9va3MucHVzaChlKTtmLmpxcGxvdC5wb3N0RHJhd1Nlcmllc0hvb2tzLnB1c2goZyk7Zi5qcXBsb3QuYWRkTGVnZW5kUm93SG9va3MucHVzaChhKTtmdW5jdGlvbiBhKGspe3ZhciBqPW51bGw7aWYoay50cmVuZGxpbmUmJmsudHJlbmRsaW5lLnNob3cpe3ZhciBpPWsudHJlbmRsaW5lLmxhYmVsLnRvU3RyaW5nKCk7aWYoaSl7aj17bGFiZWw6aSxjb2xvcjprLnRyZW5kbGluZS5jb2xvcn19fXJldHVybiBqfWZ1bmN0aW9uIGUobSxrLGosaSxsKXtpZih0aGlzLl90eXBlJiYodGhpcy5fdHlwZT09PSJsaW5lInx8dGhpcy5fdHlwZT09ImJhciIpKXt0aGlzLnRyZW5kbGluZT1uZXcgZi5qcXBsb3QuVHJlbmRsaW5lKCk7aT1pfHx7fTtmLmV4dGVuZCh0cnVlLHRoaXMudHJlbmRsaW5lLHtjb2xvcjp0aGlzLmNvbG9yfSxqLnRyZW5kbGluZSxpLnRyZW5kbGluZSk7dGhpcy50cmVuZGxpbmUucmVuZGVyZXIuaW5pdC5jYWxsKHRoaXMudHJlbmRsaW5lLG51bGwpfX1mdW5jdGlvbiBnKG0saSl7aT1mLmV4dGVuZCh0cnVlLHt9LHRoaXMudHJlbmRsaW5lLGkpO2lmKHRoaXMudHJlbmRsaW5lJiZpLnNob3cpe3ZhciBrO3ZhciBsPWkuZGF0YXx8dGhpcy5kYXRhO2s9YyhsLHRoaXMudHJlbmRsaW5lLnR5cGUpO3ZhciBqPWkuZ3JpZERhdGF8fHRoaXMucmVuZGVyZXIubWFrZUdyaWREYXRhLmNhbGwodGhpcyxrLmRhdGEpO3RoaXMudHJlbmRsaW5lLnJlbmRlcmVyLmRyYXcuY2FsbCh0aGlzLnRyZW5kbGluZSxtLGose3Nob3dMaW5lOnRydWUsc2hhZG93OnRoaXMudHJlbmRsaW5lLnNoYWRvd30pfX1mdW5jdGlvbiBiKHcsdixuKXt2YXIgdT0obj09bnVsbCk/ImxpbmVhciI6bjt2YXIgcz13Lmxlbmd0aDt2YXIgdDt2YXIgejt2YXIgbz0wO3ZhciBtPTA7dmFyIHI9MDt2YXIgcT0wO3ZhciBsPTA7dmFyIGo9W107dmFyIGs9W107aWYodT09ImxpbmVhciIpe2s9dztqPXZ9ZWxzZXtpZih1PT0iZXhwInx8dT09ImV4cG9uZW50aWFsIil7Zm9yKHZhciBwPTA7cDx2Lmxlbmd0aDtwKyspe2lmKHZbcF08PTApe3MtLX1lbHNle2sucHVzaCh3W3BdKTtqLnB1c2goTWF0aC5sb2codltwXSkpfX19fWZvcih2YXIgcD0wO3A8cztwKyspe289bytrW3BdO209bStqW3BdO3E9cStrW3BdKmpbcF07cj1yK2tbcF0qa1twXTtsPWwraltwXSpqW3BdfXQ9KHMqcS1vKm0pLyhzKnItbypvKTt6PShtLXQqbykvcztyZXR1cm5bdCx6XX1mdW5jdGlvbiBoKGssail7dmFyIGk7aT1iKGssaiwibGluZWFyIik7cmV0dXJuW2lbMF0saVsxXV19ZnVuY3Rpb24gZChvLG0pe3ZhciBrO3ZhciBpPW87dmFyIG49bTtrPWIoaSxuLCJleHAiKTt2YXIgbD1NYXRoLmV4cChrWzBdKTt2YXIgaj1NYXRoLmV4cChrWzFdKTtyZXR1cm5bbCxqXX1mdW5jdGlvbiBjKGwsail7dmFyIHA9KGo9PW51bGwpPyJsaW5lYXIiOmo7dmFyIG47dmFyIG87dmFyIHI9W107dmFyIHE9W107dmFyIG09W107Zm9yKGs9MDtrPGwubGVuZ3RoO2srKyl7aWYobFtrXSE9bnVsbCYmbFtrXVswXSE9bnVsbCYmbFtrXVsxXSE9bnVsbCl7ci5wdXNoKGxba11bMF0pO3EucHVzaChsW2tdWzFdKX19aWYocD09ImxpbmVhciIpe249aChyLHEpO2Zvcih2YXIgaz0wO2s8ci5sZW5ndGg7aysrKXtvPW5bMF0qcltrXStuWzFdO20ucHVzaChbcltrXSxvXSl9fWVsc2V7aWYocD09ImV4cCJ8fHA9PSJleHBvbmVudGlhbCIpe249ZChyLHEpO2Zvcih2YXIgaz0wO2s8ci5sZW5ndGg7aysrKXtvPW5bMV0qTWF0aC5wb3coblswXSxyW2tdKTttLnB1c2goW3Jba10sb10pfX19cmV0dXJue2RhdGE6bSxzbG9wZTpuWzBdLGludGVyY2VwdDpuWzFdfX19KShqUXVlcnkpOw==]]></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[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NhbGN1bCBUcmFuY2hlcyc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1Bvc3QgSW5zdGFsbCBNZXNzYWdlLCBlLmcuLCBCZSBzdXJlIHRvIHNldCAiVXNlIFNrZWxldG9ucyIgcGVybWlzc2lvbnMgdG8gdXNlIHRoaXMgbW9kdWxlISc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnUG9zdCBVbmluc3RhbGwgTWVzc2FnZSwgZS5nLiwgIkN1cnNlcyEgRm9pbGVkIEFnYWluISInOwokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ1JlYWxseT8gWW91XCdyZSBzdXJlIHlvdSB3YW50IHRvIHVuaW5zdGFsbCB0aGlzIGZpbmUgbW9kdWxlPyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBVbmluc3RhbGxlZC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHZlcnNpb24gJXMgaW5zdGFsbGVkLic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdNb2R1bGUgcHJlZmVyZW5jZXMgdXBkYXRlZC4nOwokbGFuZ1snc3VibWl0J10gPSAnRW52b3llcic7CiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc3MgRGVuaWVkLiBQbGVhc2UgY2hlY2sgeW91ciBwZXJtaXNzaW9ucy4nOwokbGFuZ1snZXJyb3InXSA9ICdFcnJvciEnOwokbGFuZ1snbGlua192aWV3J10gPSAnVmlldyBSZWNvcmQnOwokbGFuZ1snZWRpdCddID0gJ0VkaXQgUmVjb3JkJzsKJGxhbmdbJ3RpdGxlX251bV9yZWNvcmRzJ10gPSAnJXMgcmVjb3JkcyBmb3VuZC4nOwokbGFuZ1snYWRkX3JlY29yZCddID0gJ0FkZCBhIFJlY29yZCc7CiRsYW5nWydzYXZlZF9yZWNvcmQnXSA9ICdBZGQgYSBSZWNvcmQnOwokbGFuZ1snYWRkZWRfcmVjb3JkJ10gPSAnQWRkZWQgcmVjb3JkLic7CiRsYW5nWyd1cGRhdGVkX3JlY29yZCddID0gJ1JlY29yZCB1cGRhdGVkLic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsZSB1cGdyYWRlZCB0byB2ZXJzaW9uICVzLic7CiRsYW5nWyd0aXRsZV9hbGxvd19hZGQnXSA9ICdVc2VycyBtYXkgYWRkIHJlY29yZHM/JzsKJGxhbmdbJ3RpdGxlX2FsbG93X2FkZF9oZWxwJ10gPSAnQ2xpY2sgaGVyZSB0byBhbGxvdyB1c2VycyB0byBhZGQgcmVjb3Jkcy4nOwokbGFuZ1sndGl0bGVfbW9kX3ByZWZzJ10gPSAnTW9kdWxlIFByZWZlcmVuY2VzJzsKJGxhbmdbJ3RpdGxlX2dlbmVyYWwnXSA9ICdHZW5lcmFsIEluZm8nOwokbGFuZ1sndGl0bGVfZGVzY3JpcHRpb24nXSA9ICdEZXNjcmlwdGlvbic7CiRsYW5nWyd0aXRsZV9leHBsYW5hdGlvbiddID0gJ0xvbmcgRGVzY3JpcHRpb24nOwokbGFuZ1sndGl0bGVfbW9kX2FkbWluJ10gPSAnTW9kdWxlIEFkbWluIFBhbmVsJzsKJGxhbmdbJ2Rhc2hfcmVjb3JkX2NvdW50J10gPSAnVGhpcyBtb2R1bGUgaGFuZGxlcyAlcyByZWNvcmRzJzsKJGxhbmdbJ2FsZXJ0X25vX3JlY29yZHMnXSA9ICdUaGVyZSBoYXZlIG5vdCBiZWVuIGFueSByZWNvcmRzIGFkZGVkIGluIHRoZSBTa2VsZXRvbiBtb2R1bGUhJzsKJGxhbmdbJ2hlbHBfc2tlbGV0b25faWQnXSA9ICdJbnRlcm5hbGx5IGlkZW50aWZpZXIgZm9yIHNlbGVjdGluZyByZWNvcmRzJzsKJGxhbmdbJ2hlbHBfZGVzY3JpcHRpb24nXSA9ICdJbnRlcm5hbCBwYXJhbWV0ZXIgdXNlZCB0byBwYXNzIGRlc2NyaXB0aW9uIGluZm8gd2hlbiBjcmVhdGluZyBvciBlZGl0aW5nIGEgcmVjb3JkJzsKJGxhbmdbJ2hlbHBfZXhwbGFuYXRpb24nXSA9ICdJbnRlcm5hbCBwYXJhbWV0ZXIgdXNlZCB0byBwYXNzIGV4cGxhbmF0aW9uIGluZm8gd2hlbiBjcmVhdGluZyBvciBlZGl0aW5nIGEgcmVjb3JkJzsKJGxhbmdbJ2hlbHBfbW9kdWxlX21lc3NhZ2UnXSA9ICdJbnRlcm5hbGx5IHVzZWQgcGFyYW1ldGVyIGZvciBwYXNzaW5nIG1lc3NhZ2VzIHRvIHVzZXInOwokbGFuZ1snZXZlbnRfaW5mb19PblNrZWxldG9uUHJlZmVyZW5jZUNoYW5nZSddID0gJ0FuIGV2ZW50IGdlbmVyYXRlZCB3aGVuICB0aGUgcHJlZmVyZW5jZXMgdG8gdGhlIFNrZWxldG9uIE1vZHVsZSBnZXQgY2hhbmdlZCc7CiRsYW5nWydldmVudF9oZWxwX09uU2tlbGV0b25QcmVmZXJlbmNlQ2hhbmdlJ10gPSAnPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gdGhlIHByZWZlcmVuY2VzIHRvIHRoZSBTa2VsZXRvbiBNb2R1bGUgZ2V0IGNoYW5nZWQ8L3A+CjxoND5QYXJhbWV0ZXJzPC9oND4KPHVsPgo8bGk+PGVtPmFsbG93X2FkZDwvZW0+IC0gVGhlIG5ldyBzZXR0aW5nIG9mIHRoZSAiQWxsb3cgQWRkIiBwcmVmZXJlbmNlOyBib29sZWFuPC9saT4KPC91bD4gCic7CgokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdDZSBtb2R1bGUgY2FsY3VsZSB2b3MgcG9pbnRzIEZGVFQuJzsKJGxhbmdbJ3dlbGNvbWVfdGV4dCddID0gJzxwPkJpZW52ZW51ZSBkemFucyBsZSBnZXN0aW9ubmFpcmUgZFwnZW52b2kgZGUgU01TLiBTb21ldGhpbmcgZWxzZSB3b3VsZCBwcm9iYWJseSBnbyBoZXJlCmlmIHRoZSBtb2R1bGUgYWN0dWFsbHkgZGlkIHNvbWV0aGluZy4gQWRkIGl0IHRvIHlvdXIgZnJvbnQtZW5kIHBhZ2VzIHdpdGggYSB7U2tlbGV0b259PC9wPic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+CjxsaT5WZXJzaW9uIDEuOC4xLCBGZWIgMjAxMSwgU2pHLiBDb21wYXRpYmlsaXR5IGZpeGVzIGZvciBNeVNRTCA1LjU8L2xpPgo8bGk+VmVyc2lvbiAxLjgsIFNlcCAyMDEwIFNqRwo8dWw+CjxsaT5BZGRlZCBhbiBhZGRpdGlvbmFsIGZpZWxkIHRvIGRhdGFiYXNlIHJlY29yZHMgdG8gbWFrZSBpdCBtb3JlIGludGVyZXN0aW5nLjwvbGk+CjxsaT5JbXBsZW1lbnRlZCBQcmV0dHlVUkxzPC9saT4KPGxpPlVwZGF0ZWQgZm9yIENNU01TIDEuOSBhbmQgZm9yIGluY2x1c2lvbiBpbiA8ZW0+Q01TIERldmVsb3BlclwncyBDb29rYm9vazwvZW0+PC9saT4KPC91bD48L2xpPgo8bGk+VmVyc2lvbiAxLjcsIFNlcCAyMDA5IFNqRywgQ2xlYW5lZCB1cCwgYW5kIG1vZGVybml6ZWQgYSBiaXQuPC9saT4KPGxpPlZlcnNpb24gMS42LCBOb3YgMjAwOCBTakcsIGFkZGVkIHBhcmFtZXRlciBzYW5pdGl6aW5nIGZvciBOdW5vPC9saT4KPGxpPlZlcnNpb24gMS41LCBKdWx5IDIwMDcgU2pHCjx1bD4KICAgPGxpPkFkZGVkIGFjdHVhbCBkYXRhYmFzZSBhcHAuPC9saT4KICAgPGxpPk1hZGUgQWRtaW4gdGFiYmVkIGZvciBpbnRlcmVzdC48L2xpPgogICA8bGk+VXBkYXRlZCBNaW5pbXVtIGFuZCBNYXhpbXVtIENNUyB2ZXJzaW9ucy48L2xpPgo8L3VsPgo8L2xpPgo8bGk+VmVyc2lvbiAxLjQsIEp1bmUgMjAwNiAoY2FsZ3V5MTAwMCkuIAogIDx1bD4KICAgIDxsaT5SZXBsYWNlZCBEaXNwbGF5QWRtaW5OYXYgd2l0aCBhIHNpbmdsZSB0YWI8L2xpPgogICAgPGxpPlJlcGxhY2VkIGNhbGwgdG8gRG9BY3Rpb24gd2l0aCBhIFJlZGlyZWN0PC9saT4KICAgIDxsaT5DaGFuZ2VkIG1pbmltdW0gY21zIHZlcnNpb24gdG8gMS4wLXN2bjwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb24gMS4zLiBKdW5lIDIwMDYgKHNqZykuIAogIDx1bD4KICAgIDxsaT5TcGxpdCBvdXQgaW5zdGFsbCwgdXBncmFkZSwgYW5kIHVuaW5zdGFsbCBtZXRob2RzPC9saT4KICAgIDxsaT5BZGRlZCBFdmVudHM8L2xpPgogICAgPGxpPkFkZGVkIHJlZmVyZW5jZXMgdG8gcHJldHR5IHVybHMgYW5kIHJvdXRlIHJlZ2lzdHJhdGlvbjwvbGk+CiAgICA8bGk+Y29ycmVjdGVkIGxhbmd1YWdlIGZpbGUgZGlyZWN0b3J5IHN0cnVjdHVyZTwvbGk+CiAgICA8bGk+YWRkZWQgbW9yZSBjb21tZW50czwvbGk+CiAgPC91bD4KPC9saT4KPGxpPlZlcnNpb24gMS4yLiAyOSBEZWNlbWJlciAyMDA1LiBGaXhlcyB0byBidWdzIHBvaW50ZWQgb3V0IGJ5IFBhdHJpY2sgTG9zY2htaWR0LiBVcGRhdGVzIHRvIGJlIGNvcnJlY3QgZm9yIENNUyBNYWRlIFNpbXBsZSB2ZXJzaW9ucyAwLjExLnguPC9saT4KPGxpPlZlcnNpb24gMS4xLiAxMSBTZXB0ZW1iZXIgMjAwNS4gQ2xlYW5lZCB1cCByZWZlcmVuY2VzIHRoYXQgY2F1c2VkIHByb2JsZW1zIGZvciBQSFAgNC40Lnggb3IgNS4wLjUuPC9saT4KPGxpPlZlcnNpb24gMS4wLiA2IEF1Z3VzdCAyMDA1LiBJbml0aWFsIFJlbGVhc2UuPC9saT48L3VsPic7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPk5vdGhpbmcuIEl0XCdzIGRlc2lnbmVkIHRvIGJlIGEgc3RhcnRpbmcgcG9pbnQgZm9yIHlvdSB0byBkZXZlbG9wIHlvdXIgb3duIG1vZHVsZXMuPC9wPgo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4KPHA+V2VsbCwgeW91IGNvdWxkIGFjdHVhbGx5IGluc3RhbGwgaXQgYnkgcGxhY2luZyB0aGUgbW9kdWxlIGluIGEgcGFnZSBvciB0ZW1wbGF0ZSB1c2luZyB0aGUKc21hcnR5IHRhZyAmIzEyMztTa2VsZXRvbn08L3A+CjxwPllvdSB3b3VsZCBiZSB3aXNlciwgaG93ZXZlciwgdG8gdXNlIHRoZSBtb2R1bGUgYXMgYSBzdGFydGluZyBwb2ludCwgYW5kIGVkaXRpbmcgdGhlIGNvZGUgdG8gZG8Kd2hhdGV2ZXIgaXQgaXMgeW91IGFyZSB3YW50aW5nIHRvIGRvLjwvcD4KPGgzPlN1cHBvcnQ8L2gzPgo8cD5UaGlzIG1vZHVsZSBkb2VzIG5vdCBpbmNsdWRlIGNvbW1lcmNpYWwgc3VwcG9ydC4gSG93ZXZlciwgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIHJlc291cmNlcyBhdmFpbGFibGUgdG8gaGVscCB5b3Ugd2l0aCBpdDo8L3A+Cjx1bD4KPGxpPkZvciB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBtb2R1bGUsIEZBUXMsIG9yIHRvIGZpbGUgYSBCdWcgUmVwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIE1vZHVsZSBGb3JnZQo8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NrZWxldG9uLyI+U2tlbGV0b24gUGFnZTwvYT4uPC9saT4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPgo8bGk+VGhlIGF1dGhvciwgU2pHLCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPgo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuPC9saT4gIAo8L3VsPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQKb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgoKPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAxMCwgU2FtdWVsIEdvbGRzdGVpbiA8YSBocmVmPSJtYWlsdG86c2pnQGNtc21vZHVsZXMuY29tIj4mbHQ7c2pnQGNtc21vZHVsZXMuY29tJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4KJzsKPz4K]]></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[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1Rlbm5pcyBkZSB0YWJsZSc7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ01lc3NhZ2UgcG9zdC1pbnN0YWxsYXRpb24uIGNvbnNlaWwgOiBzb3lleiBzdXIgZCYjMDM5O2F0dHJpYnVlciBsZXMgcGVybWlzc2lvbnMgJnF1b3RQaW5nJnF1b3Q7IHBvdXIgdXRpbGlzZXIgY2UgbW9kdWxlICEnOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ01lc3NhZ2UgcG9zdC1kJmVhY3V0ZTtzaW5zdGFsbGF0aW9uLCBlLmcuLCAmcXVvdDtDdXJzZXMhIEZvaWxlZCBBZ2FpbiEmcXVvdDsnOwokbGFuZ1sncmVhbGx5X3VuaW5zdGFsbCddID0gJ1wzMTJ0ZXMtdm91cyBzXDM3M3IgZGUgdm91bG9pciBkXDM1MXNpbnN0YWxsZXIgY2Ugc3VwZXIgbW9kdWxlID8nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdMZSBtb2R1bGUgYSAmZWFjdXRlO3QmZWFjdXRlOyBkJmVhY3V0ZTtzaW5zdGFsbCZlYWN1dGU7IGF2ZWMgc3VjYyZlZ3JhdmU7cy4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIGluc3RhbGwmZWFjdXRlOyBlbiB2ZXJzaW9uICVzLic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdQciZlYWN1dGU7ZmVyZW5jZXMgZHUgbW9kdWxlIG1pc2UgJmFncmF2ZTsgam91ci4nOwovL0VMRU1FTlRTIERFIFRSQURVQ1RJT04gUkFKT1VURVMKJGxhbmdbJ25hbWUnXSA9ICdOb20nOwokbGFuZ1snYWRyZXNzZSddID0gJ0FkcmVzc2UnOwokbGFuZ1sncHJvbXB0X2VxdWlwZSddID0gJ0VxdWlwZSc7CiRsYW5nWydlcXVpcGUnXSA9ICdFcXVpcGUnOwokbGFuZ1snc2NvcmVfZXF1aXBlJ10gPSAnU2NvcmUgRXF1aXBlJzsKJGxhbmdbJ3Njb3JlX2FkdiddID0gJ1Njb3JlIEFkdmVyc2FpcmVzJzsKJGxhbmdbJ3Byb21wdF9hZHZlcnNhaXJlcyddID0gJ0FkdmVyc2FpcmVzJzsKJGxhbmdbJ2FkdmVyc2FpcmVzJ10gPSAnQWR2ZXJzYWlyZXMnOwokbGFuZ1snY29tbXVuZSddID0gJ2NvbW11bmUnOwokbGFuZ1snZW1haWwnXSA9ICdlbWFpbCc7CiRsYW5nWydhbGxzZWFzb25zJ10gPSAnVG91dGVzIGxlcyBzYWlzb25zJzsKJGxhbmdbJ2FsbHN0YXR1cyddID0gIlRvdXMgbGVzIHN0YXR1dHMiOwokbGFuZ1snYWxsZGF0ZSddID0gIlRvdXRlcyBsZXMgZGF0ZXMiOwokbGFuZ1sndG91ciddID0gJ1RvdXInOwokbGFuZ1snYWN0aXZlJ10gPSAnQWN0aWYnOwokbGFuZ1snY3JlYXRlX2NvbnRhY3QnXSA9ICdBam91dGVyIHVuIGNvbnRhY3QnOwokbGFuZ1snbGlzdHNmb3VuZHRleHQnXSA9ICdsaXN0ZShzKSB0cm91diZlYWN1dGU7ZShzKSc7CiRsYW5nWyd1c2VyX3VwZGF0ZWQnXSA9ICdVdGlsaXNhdGV1ciBtb2RpZmkmZWFjdXRlOyc7CiRsYW5nWyd5ZXMnXSA9ICdPdWknOwokbGFuZ1snbm8nXSA9ICdOb24nOwokbGFuZ1snaWQnXSA9ICdJZCc7CiRsYW5nWydqb3VldXInXSA9ICdKb3VldXInOwokbGFuZ1sncG9pbnRzJ10gPSAnUG9pbnRzJzsKJGxhbmdbJ2Vycm9yX2luc3VmZmljaWVudHBhcmFtcyddID0gJ1BhcmFtZXRyZXMgbWFucXVhbnRzJzsKJGxhbmdbJ2FkZG5ld3NoZWV0J10gPSAnQWpvdXRlciB1bmUgcmVuY29udHJlJzsKJGxhbmdbJ2FkdmVyc2FpcmUnXSA9ICdBZHZlcnNhaXJlJzsKJGxhbmdbJ3ZpY19kZWYnXSA9ICdWaWN0b2lyZSBvdSBkw6lmYWl0ZSc7CiRsYW5nWydmaWx0cmVzJ10gPSAnQXBwbGlxdWVyIGxlIGZpbHRyZSc7CiRsYW5nWydhbGxlcXVpcGVzJ10gPSAnVG91dGVzIGxlcyBlcXVpcGVzJzsKJGxhbmdbJ2FsbHRvdXJzJ10gPSAnVG91cyc7CiRsYW5nWydhbGxwb3VsZXMnXSA9ICdUb3V0ZXMgbGVzIHBvdWxlcyc7CiRsYW5nWydhbGxtb250aHMnXSA9ICdUb3VzIGxlcyBtb2lzJzsKJGxhbmdbJ2FsbGNvbXBldCddID0gJ1RvdXRlcyBsZXMgY29tcMOpdGl0aW9ucyc7CiRsYW5nWydhZGRfY29tcGV0J10gPSAnQWpvdXRlciB1bmUgbm91dmVsbGUgY29tcMOpdGl0aW9uJzsKJGxhbmdbJ3Jlc3VsdHNmb3VuZCddID0gJ3LDqXN1bHRhdChzKSc7CiRsYW5nWyd1cGxvYWRfcmVzdWx0J10gPSAnVMOpbMOpY2hhcmdlciBsZSByw6lzdWx0YXQnOwokbGFuZ1snZG9fbm90X2Rpc3BsYXknXSA9ICdOZSBwbHVzIGFmZmljaGVyIHN1ciBsZSBzaXRlJzsKJGxhbmdbJ2Rpc3BsYXlfb25fZnJvbnRlbmQnXSA9ICdBZmZpY2hlciBzdXIgbGUgc2l0ZSc7CiRsYW5nWyd1bmFibGUnXSA9ICdEw6lzYWN0aXZlcic7CiRsYW5nWydlbmFibGUnXSA9ICdhY3RpdmVyJzsKJGxhbmdbJ2xvbmdfaW1wb3J0J10gPSAiQ2V0dGUgb3DDqXJhdGlvbiBwZXV0IGR1cmVyIHBsdXNpZXVycyBtaW51dGVzICEiOwokbGFuZ1sncmV0cmlldmVhbGxwYXJ0aWVzc3BpZCddID0gJ1LDqWN1cMOpcmVyIHRvdXRlcyBsZXMgcGFydGllcyBTcGlkJzsKLy9wb3VyIGxlcyBlcnJldXJzIGRlIGZvcm11bGFpcmVzCiRsYW5nWydub19mYW1pbHlfbmFtZSddID0gJ1ZvdXMgZGV2ZXogc2Fpc2lyIHZvdHJlIG5vbSBkZSBmYW1pbGxlJzsKJGxhbmdbJ25vX2FkcmVzc2UnXSA9ICdWb3VzIGRldmV6IHNhaXNpciB2b3RyZSBhZHJlc3NlJzsKJGxhbmdbJ2NvbmZpcm1fZW1haWwnXSA9ICdDb25maXJtZXogdm90cmUgZW1haWwnOwokbGFuZ1sndXNlcnNmb3VuZHRleHQnXSA9ICd1dGlsaXNhdGV1cihzKSB0cm91diZlYWN1dGU7KHMpJzsKJGxhbmdbJ3Jlc3VsdHNmb3VuZHRleHQnXSA9ICdyJmVhY3V0ZTtzdWx0YXQocykgdHJvdXYmZWFjdXRlOyhzKSc7Ci8vJGxhbmdbJ3NoZWV0c2ZvdW5kdGV4dCddID0gJ3JlbmNvbnRyZShzKSB0cm91diZlYWN1dGU7ZShzKSc7CiRsYW5nWyd1c2VyX2RlbGV0ZWQnXSA9ICdVdGlsaXNhdGV1ciBzdXBwcmltw6knOwokbGFuZ1snbmVlZHBlcm1pc3Npb24nXSA9ICdWb3VzIG5cJ2F2ZXogcGFzIGxhIHBlcm1pc3Npb24gZFwnYWNjw6lkZXInOwokbGFuZ1sndXNlcnMnXSA9ICd1dGlsaXNhdGV1cnMnOwokbGFuZ1sncmV0cmlldmVfdXNlcnMnXSA9ICJSw6ljdXDDqXJlciBsZXMgam91ZXVycyI7CiRsYW5nWydsaXN0cyddID0gJ0xpc3Rlcyc7CiRsYW5nWydtZXNzYWdlcyddID0gJ21lc3NhZ2VzJzsKJGxhbmdbJ3JldHJpZXZlX3VzZXJzX2NvbmZpcm0nXSA9ICdDb25maXJtZXogdm90cmUgZGVtYW5kZSAhJzsKJGxhbmdbJ2FsbHBsYXllcnMnXSA9ICdUb3VzIGxlcyBqb3VldXJzJzsKJGxhbmdbJ29wdGlvbnMnXSA9ICdPcHRpb25zJzsKJGxhbmdbJ3RpdGxlX3NlbmRfbWVzc2FnZXMnXSA9ICdFbnZveWVyIHVuIHNtcyc7CiRsYW5nWydsaXN0c2ZvdW5kdGV4dCddID0gJ2xpc3RlKHMpIHRyb3V2JmVhY3V0ZTtlKHMpJzsKJGxhbmdbJ2NyZWF0ZV9uZXdfdXNlciddID0gJ0Nyw6llciB1biBub3V2ZWwgdXRpbGlzYXRldXInOwokbGFuZ1snY3JlYXRlX25ld19saXN0J10gPSAnQ3ImZWFjdXRlO2VyIHVuZSBub3V2ZWxsZSBsaXN0ZSc7CiRsYW5nWydzYXZlZF9yZWNvcmQnXSA9ICdFbnJlZ2lzdHJlbWVudHMgT2snOwokbGFuZ1snZGVsZXRlJ10gPSAnU3VwcHJpbWVyJzsKJGxhbmdbJ3ZpZXdfY29udGFjdHMnXSA9ICdWb2lyIGxlcyBjb250YWN0cyc7CiRsYW5nWydhZGRfY29udGFjdCddID0gJ0Fqb3V0ZXIgdW4gY29udGFjdCc7CiRsYW5nWydkZWxldGVfc2VsZWN0ZWQnXSA9ICdTdXBwcmltZXIgbGEgc8OpbGVjdGlvbic7CiRsYW5nWydhcmV5b3VzdXJlX2RlbGV0ZW11bHRpcGxlJ10gPSAnRXRlcyB2b3VzIGNlcnRhaW4gZGUgc3VwcHJpbWVyIHRvdXRlIGxhIHPDqWxlY3Rpb24gPyc7CiRsYW5nWydhcmV5b3VzdXJlX2FjdGlvbm11bHRpcGxlJ10gPSAnRXRlcyB2b3VzIGNlcnRhaW4gZGUgZmFpcmUgY2V0dGUgYWN0aW9uIHBvdXIgdG91dGUgbGEgc8OpbGVjdGlvbiA/JzsKJGxhbmdbJ2FwcGx5X3RvX3NlbGVjdGlvbiddID0gJ0FwcGxpcXVlciDDoCBsYSBzw6lsZWN0aW9uID8nOwokbGFuZ1snZGVsZXRlX3VzZXJfY29uZmlybSddID0gJ1ZvdWxlei12b3VzIHZyYWltZW50IHN1cHByaW1lciBjZXQgdXRpbGlzYXRldXIgPyc7CiRsYW5nWydhZGRfdXNlciddID0gJ0Fqb3V0ZXIgdW4gam91ZXVyKGV1c2UpJzsKJGxhbmdbJ3JldHJpZXZlX3NpdF9tZW5zJ10gPSAnU2l0IG1lbnN1ZWxsZSc7CiRsYW5nWydkZWxldGVfcmVzdWx0X2NvbmZpcm0nXSA9ICdWb3VsZXotdm91cyB2cmFpbWVudCBzdXBwcmltZXIgY2UgcsOpc3VsdGF0ID8gVG91cyBsZXMgcsOpc3VsdGF0cyBpbmRpdmlkdWVscyBsacOpcyBzZXJvbnQgw6lnYWxlbWVudCBzdXBwcmltw6lzJzsKJGxhbmdbJ2RlbGV0ZV9jb25maXJtJ10gPSAnVm91bGV6IHZvdXMgc3VwcHJpbWVyIGNldCBlbnJlZ2lzdHJlbWVudCA/JzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1NhdXZlZ2FyZGVyJzsKJGxhbmdbJ2Rvd25sb2FkX3BvdWxlX3Jlc3VsdHMnXSA9ICdUw6lsw6ljaGFyZ2VyIGxlcyByw6lzdWx0YXRzIGRlIGxhIHBvdWxlJzsKJGxhbmdbJ2Rvd25sb2FkX2FsbF9wb3VsZV9yZXN1bHRzJ10gPSAnVMOpbMOpY2hhcmdlciBsZXMgcsOpc3VsdGF0cyBkZSB0b3V0ZXMgbGVzIHBvdWxlcyc7CiRsYW5nWydiYWNrJ10gPSAnUmV0b3VyJzsKJGxhbmdbJ2Vycm9yX2ludmFsaWRudW1iZXInXSA9ICdFcnJldXIgOiBwYXMgZGUgbnVtJmVhY3V0ZTtybyBmb3VybmkgISc7CiRsYW5nWydlcnJvcl9udW1iZXJleGlzdHMnXSA9ICdDZSBudW0mZWFjdXRlO3JvIGV4aXN0ZSBkJmVhY3V0ZTtqJmFncmF2ZTsnOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNjJmVhY3V0ZTtzIEludGVyZGl0LiBWJmVhY3V0ZTtyaWZpZXIgdm9zIHBlcm1pc3Npb25zLic7CiRsYW5nWydwcm9tcHRfam91ZXVyJ10gPSAnTm9tIGR1IGpvdWV1cic7CiRsYW5nWydwcm9tcHRfdHlwZUNvbXBldGl0aW9uJ10gPSAnVHlwZSBkZSBjb21ww6l0aXRpb24nOwokbGFuZ1sncHJvbXB0X2NvbXBldGl0aW9uRnJpZW5kbHlOYW1lJ10gPSAnTm9tIGRlIGxhIGNvbXDDqXRpdGlvbic7CiRsYW5nWydwcm9tcHRfZGF0ZUNvbXBldCddID0gJ0RhdGUgZGUgbGEgY29tcMOpdGl0aW9uJzsKJGxhbmdbJ3Byb21wdF9ub21icmVSZW5jb250cmVzJ10gPSAnTmIgZGUgcGFydGllcyBkaXNwdXTDqWVzJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRXJyZXVyICEnOwokbGFuZ1snbGlua192aWV3J10gPSAnVm9pciBsJiMwMzk7ZW5yZWdpc3RyZW1lbnQnOwokbGFuZ1snZWRpdCddID0gJ0VkaXRlciBsJiMwMzk7ZW5yZWdpc3RyZW1lbnQnOwokbGFuZ1snY2FuY2VsJ10gPSAnQW5udWxlcic7CiRsYW5nWyd0aXRsZV9udW1fcmVjb3JkcyddID0gJyVzIGVucmVnaXN0cmVtZW50cyB0cm91diZlYWN1dGU7cy4nOwokbGFuZ1snYWRkX3JlY29yZCddID0gJ0Fqb3V0ZXIgdW4gZW5yZWdpc3RyZW1lbnQnOwokbGFuZ1snYWRkZWRfcmVjb3JkJ10gPSAnRW5yZWdpc3RyZW1lbnQgYWpvdXQmZWFjdXRlOyc7CiRsYW5nWyd1cGRhdGVkX3JlY29yZCddID0gJ0VucmVnaXN0cmVtZW50IG1pcyAmYWdyYXZlOyBqb3VyLic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ2xlIG1vZHVsZSBhICZlYWN1dGU7dCZlYWN1dGU7IG1pcyAmYWdyYXZlOyBqb3VyICZhZ3JhdmU7IGxhICVzLic7CiRsYW5nWyd0aXRsZV9hbGxvd19hZGQnXSA9ICdMZXMgdXRpbGlzYXRldXJzIHBldXZlbnQgYWpvdXRlciBkZXMgZW5yZWdpc3RyZW1lbnRzID8nOwokbGFuZ1sndGl0bGVfYWxsb3dfYWRkX2hlbHAnXSA9ICdDbGlxdWV6IGljaSBwb3VyIHBlcm1ldHRyZSBhdXggdXRpbGlzYXRldXJzIGQmIzAzOTtham91dGVyIGRlcyBlbnJlZ2lzdHJlbWVudHMuJzsKJGxhbmdbJ3RpdGxlX21vZF9wcmVmcyddID0gJ1ByJmVhY3V0ZTtmZXJlbmNlcyBkdSBtb2R1bGUnOwokbGFuZ1sndGl0bGVfZ2VuZXJhbCddID0gJ0luZm9ybWF0aW9uIGcmZWFjdXRlO24mZWFjdXRlO3JhbGVzJzsKJGxhbmdbJ3RpdGxlX2Rlc2NyaXB0aW9uJ10gPSAnRGVzY3JpcHRpb24gJzsKJGxhbmdbJ3RpdGxlX2V4cGxhbmF0aW9uJ10gPSAnTG9uZ3VlIERlc2NyaXB0aW9uJzsKJGxhbmdbJ3RpdGxlX21vZF9hZG1pbiddID0gJ1Bhbm5lYXUgZCYjMDM5O2FkbWluaXN0cmF0aW9uIGR1IG1vZHVsZSc7CiRsYW5nWydkYXNoX3JlY29yZF9jb3VudCddID0gJ0NlIG1vZHVsZSBnJmVncmF2ZTtyZSAlcyBlbnJlZ2lzdHJlbWVudHMnOwokbGFuZ1snYWxlcnRfbm9fcmVjb3JkcyddID0gJ0lsIG4mIzAzOTt5IGEgcGFzIGV1IGQmIzAzOTtlbnJlZ2lzdHJlbWVudHMgYWpvdXQmZWFjdXRlO3MgZGFucyBsZSBtb2R1bGUhJzsKJGxhbmdbJ2hlbHBfc2tlbGV0b25faWQnXSA9ICdJZGVudGlmaWNhdGV1ciBpbnRlcm5lIGRlIHMmZWFjdXRlO2xlY3Rpb24gZGVzIGVucmVnaXN0cmVtZW50cyc7CiRsYW5nWydoZWxwX2Rlc2NyaXB0aW9uJ10gPSAnUGFyYW0mZWdyYXZlO3RyZXMgaW50ZXJuZXMgdXRpbGlzJmVhY3V0ZTtzIGxvcnMgZGUgbGEgY3ImZWFjdXRlO2F0aW9uIGQmIzAzOTt1biBub3V2ZWwgZW5yZWdpc3RyZW1lbnQnOwokbGFuZ1snaGVscF9leHBsYW5hdGlvbiddID0gJ1BhcmFtJmVncmF2ZTt0cmUgaW50ZXJuZSB1dGlsaXMmZWFjdXRlOyBwb3VyIHBhc3NlciBkZXMgaW5mb3JtYXRpb25zIGV4cGxpY2F0aXZlcyBsb3JzcXVlIGwmIzAzOTtvbiBjciZlYWN1dGU7JmVhY3V0ZTsgb3UgbCYjMDM5O29uIG1ldCAmYWdyYXZlOyBqb3VyIHVuIGVucmVnaXN0cmVtZW50JzsKJGxhbmdbJ2hlbHBfbW9kdWxlX21lc3NhZ2UnXSA9ICdQYXJhbSZlZ3JhdmU7dHJlIGludGVybmUgdXRpbGlzJmVhY3V0ZTsgcG91ciBsYSB0cmFuc21pc3Npb24gZGVzIG1lc3NhZ2VzICZhZ3JhdmU7IGwmIzAzOTt1dGlsaXNhdGV1cic7CiRsYW5nWydldmVudF9pbmZvX09uU2tlbGV0b25QcmVmZXJlbmNlQ2hhbmdlJ10gPSAnVW4gJmVhY3V0ZTt2JmVhY3V0ZTtuZW1lbnQgZyZlYWN1dGU7biZlYWN1dGU7ciZlYWN1dGU7IGxvcnNxdWUgbGVzIHByJmVhY3V0ZTtmJmVhY3V0ZTtyZW5jZXMgZHUgbW9kdWxlICBzb250IGNoYW5nJmVhY3V0ZTtlcyc7CiRsYW5nWydldmVudF9oZWxwX09uU2tlbGV0b25QcmVmZXJlbmNlQ2hhbmdlJ10gPSAnPHA+QW4gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gdGhlIHByZWZlcmVuY2VzIHRvIHRoZSBTa2VsZXRvbiBNb2R1bGUgZ2V0IGNoYW5nZWQ8L3A+Cgo8aDQ+UGFyYW1ldGVyczwvaDQ+Cjx1bD4KPGxpPjxlbT5hbGxvd19hZGQ8L2VtPiAtIFRoZSBuZXcgc2V0dGluZyBvZiB0aGUgJnF1b3Q7QWxsb3cgQWRkJnF1b3Q7IHByZWZlcmVuY2U7IGJvb2xlYW48L2xpPgo8L3VsPiAKJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnRW50cmV6IHRvdXMgdm9zIHLDqXN1bHRhdHMgZGUgcGluZyBwb3VyIGFuYWx5c2UgcmFwaWRlLic7CiRsYW5nWyd3ZWxjb21lX3RleHQnXSA9ICc8cD5CaWVudmVudWUgZGFucyBsZSBtb2R1bGUgZGUgZ2VzdGlvbiBkZXMgcsOpc3VsdGF0cyBkZSB2b3RyZSBjbHViIGRlIHBpbmc8L3A+JzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4KPGxpPlZlcnNpb24gMC4xYmV0YTEgQWdpCjx1bD4KPGxpPlByZW1pw6hyZSByZWxlYXNlIGR1IG1vZHVsZS48L2xpPgo8L3VsPic7CiRsYW5nWydoZWxwJ10gPSAnPGgzPlF1ZSBmYWl0IGNlIG1vZHVsZSA/PC9oMz4KPHA+Q2UgbW9kdWxlIHZvdXMgcGVybWV0IGRlIHLDqWN1cMOpcmVyIGxlcyByw6lzdWx0YXRzIGRlIHRvdXRlcyBsZXMgY29tcMOpdGl0aW9ucyBkZSB2b3RyZSBjbHViIGV0IGRlIHZvcyBqb3VldXJzIGV0IHByb2PDqGRlIMOgIGRlcyBjYWxjdWxzIGRlcyBwZXJmb3JtYW5jZXMgKFZvaXIgZmV1aWxsZSBkZSByb3V0ZSBwbHVzIGJhcykuPC9wPgo8aDM+Q29tbWVudCBsXCd1dGlsaXNlciA/PC9oMz4KPGgyPlByZW1pw6hyZSB1dGlsaXNhdGlvbjwvaDI+CjxvbD48bGk+UmVuc2VpZ25leiBsXCdvbmdsZXQgIkNvbmZpZ3VyYXRpb24iIGF2ZWMgbGUgTsKwIGRlIHZvdHJlIGNsdWIsIGxhIHNhaXNvbiwgbGEgcGhhc2UgZW4gY291cnMgYWluc2kgcXVlIGxlIG5vbSBnw6luw6lyaXF1ZSBkZSB2b3Mgw6lxdWlwZXMgKGxlIHBsdXMgc291dmVudCBsZSBub20gZGUgdm90cmUgdmlsbGUpPC9saT4KPGxpPkRhbnMgbFwnb25nbGV0ICJFcXVpcGVzIiAsIGNsaXF1ZXogc3VyIGxlcyBsaWVucyAiUsOpY3Vww6lyYXRpb24gZGVzIMOpcXVpcGVzIi48YnIgLz4KVW4gbGllbiBwb3VyIGxlcyDDqXF1aXBlcyBkdSBjaGFtcGlvbm5hdCBkZSBGcmFuY2UgcGFyIMOpcXVpcGVzLCBsXCdhdXRyZSBwb3VyIGxlcyBhdXRyZXMgY29tcMOpdGl0aW9ucyBldCBpbmRpcXVleiDDqXZlbnR1ZWxsZW1lbnQgbGUgdHlwZSBkZSBjb21ww6l0aXRpb25zIGF1eHF1ZWxsZXMgZWxsZXMgcGFydGljaXBlbnQuPC9saT4KPGxpPkRhbnMgbFwnb25nbGV0ICJKb3VldXJzIiwgcsOpY3Vww6lyZXogbGVzIGpvdWV1cnMgZ3LDomNlIGF1IGxpZW4gZHUgbcOqbWUgbm9tLiBEw6lzYWN0aXZleiBsZXMgam91ZXVycyBuZSBmYWlzYW50IHBhcyBsXCdvYmpldCBkXCd1bmUgc2l0dWF0aW9uIG1lbnN1ZWxsZTwvbGk+Cjwvb2w+CjxoMz5GRlRUPC9oMz4KPGgzPlNwaWQ8L2gzPgo8aDM+U2l0dWF0aW9uIG1lbnN1ZWxsZTwvaDM+CjxwPkxvcnMgZHUgcHJlbWllciBpbXBvcnQgZGVzIGpvdWV1cnMsIGxhIHNpdHVhdGlvbiBtZW5zdWVsbGUgcGFyIGTDqWZhdXQgZXN0IEphbnZpZXIgMjAwMC4gTG9yc3F1ZSBsXCdhY2PDqHMgZXN0IGxpYnJlLCB2b3VzIHBvdXZleiByw6ljdXDDqXJlciB0b3V0ZXMgbGVzIHNpdHVhdGlvbnMgbWVuc3VlbGxlcyBkZXMgam91ZXVycyBkZSB2b3RyZSBjbHViPC9wPgo8cD5MYSBGRlRUIGxpbWl0ZSBsYSBzaXR1YXRpb24gbWVuc3VlbGxlIMOgIDEwMCBhY2PDqHMgcGFyIGpvdXIgZXQgcGFyIElQLjwvcD4KPGgzPkZldWlsbGUgZGUgcm91dGU8L2gzPgo8cD5EYW5zIGNldHRlIHByZW1pw6hyZSB2ZXJzaW9uLCBpbCBuXCdlc3QgcGFzIHByw6l2dSAgZGUgcGVybWlzc2lvbnMgZFwnYWNjw6hzIHBhcnRpY3VsacOocmVzLCBsXCdhZG1pbiBkdSBzaXRlIGEgdG91cyBsZXMgZHJvaXRzLiBKZSBwZW5zZSB0b3V0ZWZvaXMgZG9ubmVyIHVuZSBwZXJtaXNzaW9uIHNww6ljaWZpcXVlIHBvdXIgc3VwcHJpbWVyIGRlcyBkb25uw6llcyBKXCdhdHRlbmRzIHZvcyByZXRvdXJzIMOgIGNlIHN1amV0IHBvdXIgw6l2ZW50dWVsbGVtZW50IGVuIGNyw6llci48L3A+CjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBNb2R1bGUgRm9yZ2UKPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9za2VsZXRvbi8iPlNrZWxldG9uIFBhZ2U8L2E+LjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4KPGxpPlRoZSBhdXRob3IsIFNqRywgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yIGRpcmVjdGx5LjwvbGk+ICAKPC91bD4KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0Cm9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4KCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmFtcDtjb3B5OyAyMDE0LCBDbGF1ZGUgU2lvaGFuIDxhIGhyZWY9Im1haWx0bzpjbGF1ZGVAYWdpLXdlYmNvbnNlaWwuZnIiPmNsYXVkZUBhZ2ktd2ViY29uc2VpbC5mcjwvYT4uIFRvdXMgZHJvaXRzIHLDqXNlcnbDqXMuPC9wPgo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPgoKJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMTk0OTY3MzExMi4xMjY1MjEwNzY5LjEyODU5NDEwNTguMTI4NjE3OTAxOS4xOTAnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjg2MTc5MDE5LjE5MC4zOC51dG1jY249KHJlZmVycmFsKXx1dG1jc3I9Y21zbWFkZXNpbXBsZS5mcnx1dG1jY3Q9L2luZGV4LnBocHx1dG1jbWQ9cmVmZXJyYWwnOwokbGFuZ1sncWNhJ10gPSAnUDAtMTA3NTgyMDU1MS0xMjY1MjEwNzY4NzY0JzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7Cj8+]]></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.ping_admin_coeff.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKI2l0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiN0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiNidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KI1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiNhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQojCiMkSWQ6IE5ld3MubW9kdWxlLnBocCAyMTE0IDIwMDUtMTEtMDQgMjE6NTE6MTNaIHdpc2h5ICQKCmNsYXNzIHBpbmdfYWRtaW5fY29lZmYKewogIHByb3RlY3RlZCBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHt9CgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29lZmYxKCRyZWNvcmRfaWQpCiAgewoJZGVidWdfZGlzcGxheSgkcGFyYW1zLCAnUGFyYW1ldGVycycpOwogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgIAkkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwoJcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKCQogICAgLy9PbiByw6ljdXDDqHJlIGxlcyBpbmZvcyBkZSBsJ2VucmVnaXN0cmVtZW50CiAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIFdIRVJFIGlkID0gPyI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmVjb3JkX2lkKSk7CgoJJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKTsKCSR2aWN0b2lyZSA9ICRyb3dbJ3ZpY3RvaXJlJ107CgkkdHlwZV9lY2FydCA9ICRyb3dbJ3R5cGVfZWNhcnQnXTsKCSRwb2ludHMxID0gQ2FsY3VsUG9pbnRzSW5kaXZzKCR0eXBlX2VjYXJ0LCR2aWN0b2lyZSk7CgkkY29lZmYgPSAnMS4wMCc7CgkkcG9pbnRyZXMgPSAkcG9pbnRzMSokY29lZmY7CgkKCQoKICAgICRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCBTRVQgY29lZmYgPSA/LCBwb2ludHJlcyA9ID8gV0hFUkUgaWQgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRjb2VmZiwgJHBvaW50cmVzLCAkcmVjb3JkX2lkKSk7CiAgICAKICAgIAogIH0KfSAvLyBlbmQgb2YgY2xhc3MKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.ping_admin_ops.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0NNUyAtIENNUyBNYWRlIFNpbXBsZQojKGMpMjAwNCBieSBUZWQgS3VscCAod2lzaHlAdXNlcnMuc2YubmV0KQojVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKI2l0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiN0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiNidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KI1lvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiNhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQojCiMkSWQ6IE5ld3MubW9kdWxlLnBocCAyMTE0IDIwMDUtMTEtMDQgMjE6NTE6MTNaIHdpc2h5ICQKCmNsYXNzIHBpbmdfYWRtaW5fb3BzCnsKICBwcm90ZWN0ZWQgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7fQoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGVjcmlyZWpvdXJuYWwoJG5vdywkc3RhdHVzLCAkZGVzaWduYXRpb24sJGFjdGlvbikKICB7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwoJCiAgICAvL05vdyByZW1vdmUgdGhlIGFydGljbGUKICAgICRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXAgKGlkLCBkYXRlY3JlYXRlZCwgc3RhdHVzLGRlc2lnbmF0aW9uLCBhY3Rpb24pIFZBTFVFUyAoJycsID8sID8sID8sID8pIjsKICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRub3csICRzdGF0dXMsICRkZXNpZ25hdGlvbiwkYWN0aW9uKSk7CiAgICAKICAgIAogIH0KCnB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdW5hYmxlX3BsYXllcigkbGljZW5jZSkKICB7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwoKICAgIC8vTm93IHJlbW92ZSB0aGUgZW50cnkKICAgICRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2pvdWV1cnMgU0VUIGFjdGlmID0nMCcgIFdIRVJFIGxpY2VuY2UgPSA/IjsKICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlKSk7CgoKICB9CgpwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1hc2N1bGluKCRsaWNlbmNlKQogIHsKICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CgogICAgLy9Ob3cgcmVtb3ZlIHRoZSBlbnRyeQogICAgJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBTRVQgc2V4ZSA9J00nICBXSEVSRSBsaWNlbmNlID0gPyI7CiAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSkpOwoKCiAgfQoKcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmZW1pbmluKCRsaWNlbmNlKQogIHsKICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CgogICAgLy9Ob3cgcmVtb3ZlIHRoZSBlbnRyeQogICAgJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBTRVQgc2V4ZSA9J0YnICBXSEVSRSBsaWNlbmNlID0gPyI7CiAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSkpOwoKCiAgfQoKcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWxldGVfdGVhbV9yZXN1bHQoJHJlY29yZF9pZCkKICB7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwoKICAgIC8vTm93IHJlbW92ZSB0aGUgZW50cnkKICAgIAkkcXVlcnkgPSAiREVMRVRFIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzIFdIRVJFIGlkID0gPyI7CgkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkcmVjb3JkX2lkKSk7CgoKICB9CgpwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRpc3BsYXlfb25fZnJvbnRlbmQoJGlkKQogIHsKICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CgogICAgLy9Ob3cgcmVtb3ZlIHRoZSBlbnRyeQogICAgCSRxdWVyeSA9ICJVUERBVEUgIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BvdWxlc19yZW5jb250cmVzIFNFVCBhZmZpY2hlID0gJzEnIFdIRVJFIGlkID0gPyI7CgkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkaWQpKTsKCgogIH0KCnB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZG9fbm90X2Rpc3BsYXkoJHJlY29yZF9pZCkKICB7CiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwoKICAgIC8vTm93IHJlbW92ZSB0aGUgZW50cnkKICAgIAkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyBTRVQgYWZmaWNoZSA9ICcwJyBXSEVSRSBpZCA9ID8iOwoJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHJlY29yZF9pZCkpOwoKCiAgfQoKcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjb2VmZigkcmVjb3JkX2lkLCAkY29lZmYpCiAgewoJLy9kZWJ1Z19kaXNwbGF5KCRwYXJhbXMsICdQYXJhbWV0ZXJzJyk7CglnbG9iYWwgJGdDbXM7CiAgICAJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgIAkkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwoJcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKCiAgICAvL09uIHLDqWN1cMOocmUgbGVzIGluZm9zIGRlIGwnZW5yZWdpc3RyZW1lbnQKICAgICRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgV0hFUkUgaWQgPSA/IjsKICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRyZWNvcmRfaWQpKTsKCgkkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkkdmljdG9pcmUgPSAkcm93Wyd2aWN0b2lyZSddOwoJJHR5cGVfZWNhcnQgPSAkcm93Wyd0eXBlX2VjYXJ0J107CgkkcG9pbnRzMSA9IENhbGN1bFBvaW50c0luZGl2cygkdHlwZV9lY2FydCwkdmljdG9pcmUpOwoJLy8kY29lZmYgPSAnMS4wMCc7CgkkcG9pbnRyZXMgPSAkcG9pbnRzMSokY29lZmY7CgoKCiAgICAkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzX3NwaWQgU0VUIGNvZWZmID0gPywgcG9pbnRyZXMgPSA/IFdIRVJFIGlkID0gPyI7CiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkY29lZmYsICRwb2ludHJlcywgJHJlY29yZF9pZCkpOwoKCiAgfQoKCgpwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJldHJpZXZlX3NpdF9tZW5zKCRsaWNlbmNlKQogIHsKCS8vb24gdsOpcmlmaWUgc2kgbGEgc2l0dWF0aW9uIG1lbnN1ZWxsZSBhIGTDqWrDoCDDqXTDqSBwcmlzZSBlbiBjb21wdGUKCWdsb2JhbCAkZ0NtczsKCSRkYiA9IGNtc21zKCktPkdldERiKCk7CgkKCSRtb2lzX2NvdXJhbnQgPSBkYXRlKCduJyk7Ly9Nb2lzIGF1IGZvcm1hdCAxLCAyLCAzIGV0Yy4uLi4KCSRhbm5lZV9jb3VyYW50ZSA9IGRhdGUoJ1knKTsKCSRtb2lzX2ZyYW5jYWlzID0gYXJyYXkoJ0phbnZpZXInLCAnRsOpdnJpZXInLCdNYXJzJywgJ0F2cmlsJywgJ01haScsICdKdWluJywgJ0p1aWxsZXQnLCdBb8O7dCcsICdTZXB0ZW1icmUnLCAnT2N0b2JyZScsJ05vdmVtYnJlJywnRMOpY2VtYnJlJyk7Cgkkbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CgkkbW9pc19yZWVsID0gJG1vaXNfY291cmFudCAtIDE7CgkkbW9pc19zbSA9ICRtb2lzX2ZyYW5jYWlzWyIkbW9pc19yZWVsIl07CgkkbW9pc19zaXRfbWVucyA9ICRtb2lzX3NtLiIgIi4kYW5uZWVfY291cmFudGU7CgkKCSRxdWVyeSA9ICJTRUxFQ1QgbGljZW5jZSwgbm9tLCBwcmVub20gRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSBsaWNlbmNlID0gPyI7CgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSkpOwoJCgkJLy9pbCBmYXV0IGluc3RhbmNpZXIgbGUgc2VydmljZQoJCSRzZXJ2aWNlID0gbmV3IFNlcnZpY2UoKTsKCQkkcmVzdWx0ID0gJHNlcnZpY2UtPmdldEpvdWV1cigiJGxpY2VuY2UiKTsKCQkvL3Zhcl9kdW1wKCRyZXN1bHQpOwoJCQoJCQlpZighaXNfYXJyYXkoJHJlc3VsdCkpCgkJCXsKCQkJCS8vbGUgc2VydmljZSBlc3QgY291cMOpIG91IGxhIGxpY2VuY2UgZXN0IGluYWN0aXZlCgkJCQkkcm93PSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkJCQkkbm9tID0gJHJvd1snbm9tJ107CgkJCQkkcHJlbm9tID0gJHJvd1sncHJlbm9tJ107CgkJCQkkbWVzc2FnZS49IkxpY2VuY2UgaW50cm91dmFibGUgb3Ugc2VydmljZSBjb3Vww6kgcG91ciAiLiRub20uIiAiLiRwcmVub207CgkJCQkkc3RhdHVzID0gJ0VjaGVjJzsKCQkJCSRkZXNpZ25hdGlvbiA9ICRtZXNzYWdlOwoJCQkJJGFjdGlvbiA9ICJtYXNzX2FjdGlvbiI7CgkJCQlwaW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsICRkZXNpZ25hdGlvbiwkYWN0aW9uKTsKCQkJfQoJCQllbHNlewoJCQkJLy90b3V0IHZhIGJpZW4gb24gcGV1dCBjb250aW51ZXIKCQkJCSRsaWNlbmNlID0gJHJlc3VsdFtsaWNlbmNlXTsKCQkJCS8vCWVjaG8gImxhIGxpY2VuY2UgZXN0ICRsaWNlbmNlIDxiciAvPiI7CgkJCQkkbm9tID0gJHJlc3VsdFtub21dOwoJCQkJJHByZW5vbSA9ICRyZXN1bHRbcHJlbm9tXTsKCQkJCS8vZWNobyAibGUgZGV1eGnDqG1lIGFwcGVsIGVzdCA6ICIuJG5vbS4iICIuJHByZW5vbS4gIjxiciAvPiI7CgkJCQkkbmF0aW8gPSAkcmVzdWx0W25hdGlvXTsKCQkJCSRjbGdsb2IgPSAkcmVzdWx0W2NsZ2xvYl07CgkJCQkkcG9pbnRzID0gJHJlc3VsdFtwb2ludF07CgkJCQkkYWNsZ2xvYiA9ICRyZXN1bHRbYWNsZ2xvYl07CgkJCQkkYXBvaW50ID0gJHJlc3VsdFthcG9pbnRdOwoJCQkJJGNsbmF0ID0gJHJlc3VsdFtjbG5hdF07CgkJCQkkY2F0ZWcgPSAkcmVzdWx0W2NhdGVnXTsKCQkJCSRyYW5ncmVnID0gJHJlc3VsdFtyYW5ncmVnXTsKCQkJCSRyYW5nZGVwID0gJHJlc3VsdFtyYW5nZGVwXTsKCQkJCSR2YWxjbGEgPSAkcmVzdWx0W3ZhbGNsYV07CgkJCQkkY2xwcm8gPSAkcmVzdWx0W2NscHJvXTsKCQkJCSR2YWxpbml0ID0gJHJlc3VsdFt2YWxpbml0XTsKCQkJCSRwcm9nbW9pcyA9ICRyZXN1bHRbcHJvZ21vaXNdOwoJCQkJJHByb2dhbm4gPSAkcmVzdWx0W3Byb2dhbm5dOwoJCQkJCgkJCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NpdF9tZW5zIChpZCxkYXRlY3JlYXRlZCwgZGF0ZW1haiwgbW9pcywgYW5uZWUsIHBoYXNlLCBsaWNlbmNlLCBub20sIHByZW5vbSwgcG9pbnRzLCBjbG5hdCwgcmFuZ3JlZyxyYW5nZGVwLCBwcm9nbW9pcykgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkJLy9lY2hvICRxdWVyeTsKCQkJCSRkYnJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkbm93LCRub3csJG1vaXNfY291cmFudCwgJGFubmVlX2NvdXJhbnRlLCAkcGhhc2UsICRsaWNlbmNlLCAkbm9tLCAkcHJlbm9tLCAkcG9pbnRzLCAkY2xuYXQsICRyYW5ncmVnLCAkcmFuZ2RlcCwgJHByb2dtb2lzKSk7CgoJCQkJCWlmKCEkZGJyZXN1bHRhdCkKCQkJCQl7CgkJCQkJCSRtZXNzYWdlID0gJGRiLT5FcnJvck1zZygpOyAKCQkJCQkJJHN0YXR1cyA9ICdFY2hlYyc7CgkJCQkJCSRkZXNpZ25hdGlvbiA9ICRtZXNzYWdlOwoJCQkJCQkkYWN0aW9uID0gIm1hc3NfYWN0aW9uIjsKCQkJCQkJcGluZ19hZG1pbl9vcHM6OmVjcmlyZWpvdXJuYWwoJG5vdywkc3RhdHVzLCAkZGVzaWduYXRpb24sJGFjdGlvbik7CgkJCQkJCQoJCQkJCX0KCQkJCQllbHNlIHsKCQkJCQkJJHN0YXR1cyA9ICdPayc7CgkJCQkJCSRkZXNpZ25hdGlvbiA9ICJTaXR1YXRpb24gb2sgcG91ciAiLiRub20uIiAiLiRwcmVub207CgkJCQkJCSRhY3Rpb24gPSAnbWFzc19hY3Rpb24nOwoJCQkJCQlwaW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsICRkZXNpZ25hdGlvbiwkYWN0aW9uKTsKCQkJCQkJLy9vbiBtZXQgbGEgdGFibGUgcmVjdXAgw6Agam91ciBwb3VyIGxlIGpvdWV1cgoJCQkJCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIFNFVCBkYXRlbWFqID0gPyAsIHNpdF9tZW5zID0gPyBXSEVSRSBsaWNlbmNlID0gPyI7CgkJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRub3csICRtb2lzX3NpdF9tZW5zLCAkbGljZW5jZSkpOwoJCQkJCX0KCQkJCQoJCQkJCgkJCQkvLyRtZXNzYWdlLj0iPGxpPkxhIGxpY2VuY2UgZXN0IG9rPC9saT4iOwoJCQl9Ly9maW4gZHUgZWxzZQkhaXNfYXJyYXkKCQoJLy9wYXMgZGUgYm9sIGxhIHNpdHVhdGlvbiBtZW5zdWVsbGUgZXN0IGTDqWrDoCBwcsOpc2VudGUKCQoJCgkKCQp9CgpwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJldHJpZXZlX3BhcnRpZXNfc3BpZCggJGxpY2VuY2UgKQogIHsKCWdsb2JhbCAkZ0NtczsKCSRkYiA9IGNtc21zKCktPkdldERiKCk7CgkkcGluZyA9IGNtc191dGlsczo6Z2V0X21vZHVsZSgnUGluZycpOwoJcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uY2FsY3Vscy5waHAnKTsKCSRzYWlzb25fY291cmFudGUgPSAkcGluZy0+R2V0UHJlZmVyZW5jZSgnc2Fpc29uX2VuX2NvdXJzJyk7Cgkkbm93ID0gdHJpbSgkZGItPkRCVGltZVN0YW1wKHRpbWUoKSksICInIik7CgkkcXVlcnkgPSAiU0VMRUNUIENPTkNBVF9XUygnICcsIG5vbSwgcHJlbm9tKSBBUyBwbGF5ZXIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyBXSEVSRSBsaWNlbmNlID0gPyI7CgkkZGJyZXRvdXIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSkpOwoJaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQoJICB7CgkgICAgd2hpbGUgKCRyb3c9ICRkYnJldG91ci0+RmV0Y2hSb3coKSkKCSAgICAgIHsKCQkkcGxheWVyID0gJHJvd1sncGxheWVyJ107CgkJJHNlcnZpY2UgPSBuZXcgU2VydmljZSgpOwoJCSRyZXN1bHQgPSAkc2VydmljZS0+Z2V0Sm91ZXVyUGFydGllc1NwaWQoIiRsaWNlbmNlIik7CgkJLy92YXJfZHVtcCgkcmVzdWx0KTsKCQkvL2xlIHNlcnZpY2UgZXN0LWlsIG91dmVydCA/CgkJLyoqLwoJCS8vb24gdGVzdGUgbGUgcmVzdWx0YXQgcmV0b3VybsOpICAgICAKCgkJCWlmKCFpc19hcnJheSgkcmVzdWx0KSl7CgoKCQkJCSRtZXNzYWdlID0gIlNlcnZpY2UgY291cMOpIjsgCgkJCQkkc3RhdHVzID0gJ0VjaGVjJzsKCQkJCSRkZXNpZ25hdGlvbiA9ICRtZXNzYWdlOwoJCQkJJGFjdGlvbiA9ICJtYXNzX2FjdGlvbiI7CgkJCQlwaW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsICRkZXNpZ25hdGlvbiwkYWN0aW9uKTsKCQkJfQoJCQllbHNlewoJCQkJJGkgPSAwOwoJCQkJJGNvbXB0ZXVyID0gMDsKCQkJCWZvcmVhY2goJHJlc3VsdCBhcyAkY2xlID0+JHRhYikKCQkJCXsKCQkJCQoJCQkJCSRjb21wdGV1cisrOwoKCQkJCQkkZGF0ZWV2ZW50ID0gJHRhYltkYXRlXTsKCQkJCQkkY2hndCA9IGV4cGxvZGUoIi8iLCRkYXRlZXZlbnQpOwoJCQkJCSRkYXRlX2V2ZW50ID0gJGNoZ3RbMl0uIi0iLiRjaGd0WzFdLiItIi4kY2hndFswXTsKCgkJCQkJCWlmIChzdWJzdHIoJGNoZ3RbMV0sIDAsMSk9PTApewoJCQkJCQkJJG1vaXNfZXZlbnQgPSBzdWJzdHIoJGNoZ3RbMV0sIDEsMSk7CgkJCQkJCQkvL2VjaG8gImxhIGRhdGUgZXN0Ii4kZGF0ZV9ldmVudDsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSRtb2lzX2V2ZW50ID0gJGNoZ3RbMV07CgkJCQkJCX0KCgkJCQkJJG5vbSA9ICR0YWJbbm9tXTsKCQkJCQkkY2xhc3NlbWVudCA9ICR0YWJbY2xhc3NlbWVudF07CgkJCQkJJGNsYSA9IHN1YnN0cigkY2xhc3NlbWVudCwgMCwxKTsKCgkJCQkJCWlmKCRjbGEgPT0gJ04nKXsKCQkJCQkJCSRuZXdjbGFzc2VtZW50ID0gZXhwbG9kZSgnLScsICRjbGFzc2VtZW50KTsKCQkJCQkJCSRuZXdjbGFzcyA9ICRuZXdjbGFzc2VtZW50WzFdOwoJCQkJCQl9CgkJCQkJCWVsc2UgewoJCQkJCQkJJG5ld2NsYXNzID0gJGNsYXNzZW1lbnQ7CgkJCQkJCX0KCQkJCQkvL29uIHZhIGNhbGN1bGVyIGxhIGRpZmbDqXJlbmNlIGVudHJlIGxlIGNsYXNzZW1lbnQgZGUgbCdhZHZlcnNhaXJlIGV0IGxlIGNsYXNzZW1lbnQgZHUgam91ZXVyIGR1IGNsdWIKCQkJCQkkcXVlcnkgPSAiU0VMRUNUIHBvaW50cyBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zaXRfbWVucyBXSEVSRSBsaWNlbmNlID0gPyBBTkQgbW9pcyA9ID8iOwoJCQkJCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRsaWNlbmNlLCRtb2lzX2V2ZW50KSk7CgoJCQkJCQlpZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKQoJCQkJCQl7CgkJCQkJCQkvLyRkZXNpZ25hdGlvbi49IkVjYXJ0IG5vbiBjYWxjdWzDqSI7CgkJCQkJCQkkZWNhcnQgPSAwOwoJCQkJCQl9CgoJCQkJCSRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7CgkJCQkJJHBvaW50cyA9ICRyb3dbcG9pbnRzXTsKCQkJCQkkZWNhcnRfcmVlbCA9ICRwb2ludHMgLSAkbmV3Y2xhc3M7CgkJCQkJLy9vbiBjYWxjdWxlIGwnw6ljYXJ0IHNlbG9uIGxhIGdyaWxsZSBkZSBwb2ludHMgZGUgbGEgRkZUVAoJCQkJCSR0eXBlX2VjYXJ0ID0gQ2FsY3VsRWNhcnQoJGVjYXJ0X3JlZWwpOwoJCQkJCSRlcHJldXZlID0gJHRhYltlcHJldXZlXTsKCQkJCQkKCQkJCQkvLyBkZSBxdWVsbGUgY29tcMOpdGl0aW9uIHMnYWdpdC1pbCA/IAoJCQkJCS8vT24gYSBsYSBkYXRlIGV0IGxlIHR5cGUgZCfDqXByZXV2ZQoJCQkJCS8vb24gcGV1dCBkb25jIGVuIGTDqWR1aXJlIGxlIHRvdXIgdmlhIGxlIGNhbGVuZHJpZXIKCQkJCQkvL2V0IGxlIGNvZWZmaWNpZW50IHBvdXIgY2FsY3VsZXIgbGVzIHBvaW50cyB2aWEgbGEgdGFibGUgdHlwZV9jb21wZXRpdG9ucwoJCQkJCS8qCgkJCQkJLy8xIC0gb24gcsOpY3Vww6lyZSBsZSB0b3VyIHMnaWwgZXhpc3RlCgkJCQkJLy9vbiB2YSBmZG9uYyBjaGVyY2hlciBkYW5zIGxhIHRhYmxlIGNhbGVuZHJpZXIKCQkJCQkkcXVlcnkgPSAiU0VMRUNUIG51bWpvdXJuIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIgV0hFUkUgbmFtZV9jb21wZXQgPT8gQU5EIGRhdGVfY29tcGV0ID0gPyI7CgkJCQkJJHJlc3VsdGF0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGVwcmV1dmUsICRkYXRlX2V2ZW50KSk7CgoJCQkJCQlpZiAoJHJlc3VsdGF0ICYmICRyZXN1bHRhdC0+UmVjb3JkQ291bnQoKT4wKXsKCQkJCQkJCSRyb3cgPSAkcmVzdWx0YXQtPkZldGNoUm93KCk7CgkJCQkJCQkkbnVtam91cm4gPSAkcm93W251bWpvdXJuXTsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsKCQkJCQkJCSRudW1qb3VybiA9IDA7CgkJCQkJCX0KCQkJCQkqLwoJCQkJCS8vMiAtIG9uIHLDqWN1cMOocmUgbGUgY29lZmZpY2llbnQgZGUgbGEgY29tcMOpdGl0aW9uCgkJCQkJJGNvZWZmID0gY29lZmYoJGVwcmV1dmUpOwoKCQkJCQkvLyRwb2ludHJlcyA9ICRwb2ludHMqJGNvZWZmOwoJCQkJCS8vZmluIGR1IHBvaW50IDIKCQkJCQkKCQkJCQkkdmljdG9pcmUgPSAkdGFiW3ZpY3RvaXJlXTsKCgkJCQkJCWlmICgkdmljdG9pcmUgPT0nVicpewoJCQkJCQkJJHZpY3RvaXJlID0gMTsKCQkJCQkJfQoJCQkJCQllbHNlIAoJCQkJCQl7CgkJCQkJCQkkdmljdG9pcmUgPSAwOwoJCQkJCQl9CgkJCQkJCgkJCQkJLy9vbiBwZXV0IGTDqXNvcm1haXMgY2FsY3VsZXIgbGVzIHBvaW50cyAKCQkJCQkvL2VjaG8gImxhIHZpY3RvaXJlIGVzdCA6ICIuJHZpY3RvaXJlLiI8YnIgLz4iOwoJCQkJCSRwb2ludHMxID0gQ2FsY3VsUG9pbnRzSW5kaXZzKCR0eXBlX2VjYXJ0LCAkdmljdG9pcmUpOwoJCQkJCS8vZWNobyAibGUgY29lZmYgZXN0IDogIi4kY29lZmYuIjxiciAvPiI7CgkJCQkJLy9lY2hvICJsZSB0eXBlIGVjYXJ0IGVzdCA6ICIuJHR5cGVfZWNhcnQuIjxiciAvPiI7CgkJCQkJLy9lY2hvICJsZXMgcG9pbnRzIDEgc29udCA6ICIuJHBvaW50czEuIjxiciAvPiI7CgkJCQkJJHBvaW50cmVzID0gJHBvaW50czEqJGNvZWZmOwoJCQkJCSRmb3JmYWl0ID0gJHRhYltmb3JmYWl0XTsKCgoJCQkJCSRxdWVyeSA9ICJTRUxFQ1QgbGljZW5jZSwgZGF0ZV9ldmVudCxub20gRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIFdIRVJFIGxpY2VuY2UgPSA/IEFORCBkYXRlX2V2ZW50ID0gPyBBTkQgbm9tID0gPyI7CgkJCQkJLy9lY2hvICRxdWVyeTsKCQkJCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkbGljZW5jZSwgJGRhdGVfZXZlbnQsJG5vbSkpOwoKCQkJCQlpZigkZGJyZXN1bHQgICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA9PSAwKSB7CgkJCQkJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIChpZCwgc2Fpc29uLCBkYXRlbWFqLCBsaWNlbmNlLCBkYXRlX2V2ZW50LCBlcHJldXZlLCBub20sIG51bWpvdXJuLGNsYXNzZW1lbnQsIHZpY3RvaXJlLGVjYXJ0LHR5cGVfZWNhcnQsIGNvZWZmLCBwb2ludHJlcywgZm9yZmFpdCkgVkFMVUVTICgnJywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPywgPykiOwoJCQkJCQkkaSsrOwoJCQkJCQkvL2VjaG8gJHF1ZXJ5OwoJCQkJCQkkZGJyZXN1bHRhdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHNhaXNvbl9jb3VyYW50ZSwkbm93LCAkbGljZW5jZSwgJGRhdGVfZXZlbnQsICRlcHJldXZlLCAkbm9tLCAkbnVtam91cm4sICRuZXdjbGFzcywgJHZpY3RvaXJlLCRlY2FydF9yZWVsLCR0eXBlX2VjYXJ0LCAkY29lZmYsJHBvaW50cmVzLCAkZm9yZmFpdCkpOwoJCQkJCQkKCQkJCQkJaWYoISRkYnJlc3VsdGF0KQoJCQkJCQkJewoJCQkJCQkJCSRtZXNzYWdlID0gJGRiLT5FcnJvck1zZygpOyAKCQkJCQkJCQkkc3RhdHVzID0gJ0VjaGVjJzsKCQkJCQkJCQkkZGVzaWduYXRpb24gPSAkbWVzc2FnZTsKCQkJCQkJCQkkYWN0aW9uID0gIm1hc3NfYWN0aW9uIjsKCQkJCQkJCQlwaW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsICRkZXNpZ25hdGlvbiwkYWN0aW9uKTsKCQkJCQkJCX0KCQkJCQkJCQoJCQkJCQkKCQkJCQl9Ly9maW4gZHUgaWYgcmVjb3JkQ291bnQoKSBsaWduZSAyNDQKCQkJCQkKCQkJCX0vL2ZpbiBkdSBmb3JlYWNoCgkJCQkKCQkJCSRjb21wdGFnZSA9ICRpOwoJCQkJJHN0YXR1cyA9ICdQYXJ0aWVzIFNQSUQnOwoJCQkJJGRlc2lnbmF0aW9uIC49ICJSw6ljdXDDqXJhdGlvbiBzcGlkIGRlICIuJGNvbXB0YWdlLiIgcGFydGllcyBzdXIgIi4kY29tcHRldXIuIiAgZGUgIi4kcGxheWVyOwoJCQkJJGFjdGlvbiA9ICJtYXNzX2FjdGlvbiI7CgkJCQlwaW5nX2FkbWluX29wczo6ZWNyaXJlam91cm5hbCgkbm93LCRzdGF0dXMsICRkZXNpZ25hdGlvbiwkYWN0aW9uKTsKCQkJCQoJCQl9Ly9maW4gZHUgaWYgIWlzX2FycmF5CgkJfS8vZmluIGR1IHdoaWxlCgoJfS8vZmluIGR1IGlmIGRicmV0b3VyID4wCgkKCQoJCgkKCQoJCgkKCQoJCn0vL2ZpbiBkZSBsYSBmb25jdGlvbgoKcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkZWxldGVfam91cm5hbCgkam91cm5hbGlkKQogIHsKICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CgogICAgLy9Ob3cgcmVtb3ZlIHRoZSBlbnRyeQogICAgJHF1ZXJ5ID0gIkRFTEVURSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cCBXSEVSRSBpZCA9ID8iOwogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGpvdXJuYWxpZCkpOwoKICAgIAogIH0KCn0gLy8gZW5kIG9mIGNsYXNzCgojCiMgRU9GCiMKPz4K]]></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/classPing.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[IyMjIyMjCiNDbGFzcyBzZXJ2aWNlCiMjIyMjIyMjIyMjIyMjCnByaXZhdGUgJGNhY2hlOwpwcml2YXRlICRsb2dnZXI7CnByaXZhdGUgJGlwc291cmNlOwpwcml2YXRlICRzZXJpYWxzOwpwcml2YXRlICRhdXRvSW5pdGlhbGl6YXRpb247CgpwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoQ2FjaGUgJGNhY2hlID0gbnVsbCwgJGxvZ2dlciA9IG51bGwsICRzZXJpYWxzID0gYXJyYXkoKSwgJGlwc291cmNlID0gbnVsbCkKewokdGhpcy0+Y2FjaGUgPSAkY2FjaGU7CiR0aGlzLT5sb2dnZXIgPSAkbG9nZ2VyOyAvLyBNdXN0IGhhdmUgYSBtZXRob2QgbG9nKCR1cmwsICRkYXRhKQokdGhpcy0+aXBzb3VyY2UgPSAkaXBzb3VyY2U7CgokdGhpcy0+c2VyaWFscyA9ICRzZXJpYWxzOwoKLy8gR8OpbsOpcmF0aW9uIGQndW4gc2VyaWFsIHBhciBkw6lmYXV0ICgxNSBsZXR0cmVzIG1hanVzY3VsZXMpCmlmIChlbXB0eSgkdGhpcy0+c2VyaWFscykpIHsKICAgICR0aGlzLT5zZXJpYWxzID0gYXJyYXkoJycpOwogICAgZm9yKCRpPTA7ICRpPDE1OyAkaSsrKSB7CiAgICAgICAgJHRoaXMtPnNlcmlhbHNbMF0gLj0gY2hyKG10X3JhbmQoNjUsIDkwKSk7IC8vKEEtWikKICAgIH0KfQoKJHRoaXMtPmF1dG9Jbml0aWFsaXphdGlvbiA9IHRydWU7CgpsaWJ4bWxfdXNlX2ludGVybmFsX2Vycm9ycyh0cnVlKTsKfQoKcHVibGljIGZ1bmN0aW9uIHNldEF1dG9Jbml0aWFsaXNhdGlvbigkZmxhZykKewokdGhpcy0+YXV0b0luaXRpYWxpemF0aW9uID0gKGJvb2wpJGZsYWc7Cn0KCnB1YmxpYyBmdW5jdGlvbiBpbml0aWFsaXphdGlvbigpCnsKJHNlcmlhbCA9ICR0aGlzLT5zZXJpYWxzW210X3JhbmQoMCwgY291bnQoJHRoaXMtPnNlcmlhbHMpIC0gMSldOwoKJHRoaXMtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfaW5pdGlhbGlzYXRpb24ucGhwJywgYXJyYXkoJ3NlcmllJyA9PiAkc2VyaWFsLCAnb3MnID0+ICdBbmRyb2lkJywgJ3ZlcnNpb24nID0+ICcwMDcnKSk7CiRldmVudCA9IHNlbGY6OmdldE9iamVjdCgkdGhpcy0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL2V2ZW5lbWVudC94bWxfZXZlbmVtZW50LnBocCcpLCAnZXZlbmVtZW50Jyk7CmlmICghZW1wdHkoJGV2ZW50Wydsb2dvJ10pKSB7CiAgICAkdGhpcy0+Z2V0RGF0YSgkZXZlbnRbJ2xvZ28nXSk7Cn0KfQoKcHVibGljIGZ1bmN0aW9uIGdldENsdWJzQnlEZXBhcnRlbWVudCgkZGVwYXJ0ZW1lbnQpCnsKcmV0dXJuICR0aGlzLT5nZXRDYWNoZWREYXRhKCJjbHVic3skZGVwYXJ0ZW1lbnR9IiwgMzYwMCoyNCozMCwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJGRlcGFydGVtZW50KSB7CiAgICByZXR1cm4gU2VydmljZTo6Z2V0Q29sbGVjdGlvbigkcGluZy0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL3htbF9jbHViX2RlcDIucGhwJywgYXJyYXkoJ2RlcCcgPT4gJGRlcGFydGVtZW50KSksICdjbHViJyk7Cn0pOwp9CgpwdWJsaWMgZnVuY3Rpb24gZ2V0Q2x1YigkbnVtZXJvKQp7CnJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgiY2x1Yl97JG51bWVyb30iLCAzNjAwKjI0KjIsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCRudW1lcm8pIHsKICAgIHJldHVybiBQaW5nOjpnZXRPYmplY3QoJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfY2x1Yl9kZXRhaWwucGhwJywgYXJyYXkoJ2NsdWInID0+ICRudW1lcm8pKSwgJ2NsdWInKTsKfSk7Cn0KCnB1YmxpYyBmdW5jdGlvbiBnZXRKb3VldXIoJGxpY2VuY2UpCnsKJGpvdWV1ciA9ICR0aGlzLT5nZXRDYWNoZWREYXRhKCJqb3VldXJfeyRsaWNlbmNlfSIsIDM2MDAqMjQqMSwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJGxpY2VuY2UpIHsKICAgIHJldHVybiBQaW5nOjpnZXRPYmplY3QoJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfam91ZXVyLnBocCcsIGFycmF5KCdsaWNlbmNlJyA9PiAkbGljZW5jZSwgJ2F1dG8nID0+IDEpKSwgJ2pvdWV1cicpOwp9KTsKCmlmICghaXNzZXQoJGpvdWV1clsnbGljZW5jZSddKSkgewogICAgcmV0dXJuIG51bGw7Cn0KCmlmIChlbXB0eSgkam91ZXVyWyduYXRpbyddKSkgewogICAgJGpvdWV1clsnbmF0aW8nXSA9ICdGJzsKfQoKJGpvdWV1clsncGhvdG8nXSA9ICJodHRwOi8vd3d3LmZmdHQuY29tL2VzcGFjZWxpY2VuY2llL3Bob3RvbGljZW5jaWUveyRqb3VldXJbJ2xpY2VuY2UnXX1fLmpwZyI7CiRqb3VldXJbJ3Byb2dtb2lzJ10gPSByb3VuZCgkam91ZXVyWydwb2ludCddIC0gJGpvdWV1clsnYXBvaW50J10sIDIpOyAvLyBQcm9ncmVzc2lvbiBtZW5zdWVsbGUKJGpvdWV1clsncHJvZ2FubiddID0gcm91bmQoJGpvdWV1clsncG9pbnQnXSAtICRqb3VldXJbJ3ZhbGluaXQnXSwgMik7IC8vIFByb2dyZXNzaW9uIGFubnVlbGxlCgpyZXR1cm4gJGpvdWV1cjsKfQoKcHVibGljIGZ1bmN0aW9uIGdldEpvdWV1clBhcnRpZXMoJGxpY2VuY2UpCnsKcmV0dXJuICR0aGlzLT5nZXRDYWNoZWREYXRhKCJqb3VldXJfcGFydGllc197JGxpY2VuY2V9IiwgMzYwMCoyNCoxLCBmdW5jdGlvbigkc2VydmljZSkgdXNlICgkbGljZW5jZSkgewogICAgcmV0dXJuIFNlcnZpY2U6OmdldENvbGxlY3Rpb24oJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfcGFydGllX215c3FsLnBocCcsIGFycmF5KCdsaWNlbmNlJyA9PiAkbGljZW5jZSwgJ2F1dG8nID0+IDEpKSwgJ3BhcnRpZScpOwp9KTsKfQoKcHVibGljIGZ1bmN0aW9uIGdldEpvdWV1clBhcnRpZXNTcGlkKCRsaWNlbmNlKQp7CnJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgiam91ZXVyX3NwaWRfeyRsaWNlbmNlfSIsIDM2MDAqMjQqMSwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJGxpY2VuY2UpIHsKICAgIHJldHVybiBTZXJ2aWNlOjpnZXRDb2xsZWN0aW9uKCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS94bWwveG1sX3BhcnRpZS5waHAnLCBhcnJheSgnbnVtbGljJyA9PiAkbGljZW5jZSkpLCAncmVzdWx0YXQnKTsKfSk7Cn0KCnB1YmxpYyBmdW5jdGlvbiBnZXRKb3VldXJzQnlOYW1lKCRub20sICRwcmVub209ICcnKQp7CnJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgiam91ZXVyc197JG5vbX1feyRwcmVub219IiwgMzYwMCoyNCoxLCBmdW5jdGlvbigkc2VydmljZSkgdXNlICgkbm9tLCAkcHJlbm9tKSB7CiAgICByZXR1cm4gU2VydmljZTo6Z2V0Q29sbGVjdGlvbigkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL3htbF9saXN0ZV9qb3VldXIucGhwJywgYXJyYXkoJ25vbScgPT4gJG5vbSwgJ3ByZW5vbScgPT4gJHByZW5vbSkpLCAnam91ZXVyJyk7Cn0pOwp9CgpwdWJsaWMgZnVuY3Rpb24gZ2V0Sm91ZXVyc0J5Q2x1YigkY2x1YikKewpyZXR1cm4gJHRoaXMtPmdldENhY2hlZERhdGEoImpvdWV1cnNjbHVieyRjbHVifSIsIDM2MDAqMjQqMSwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJGNsdWIpIHsKICAgIHJldHVybiBTZXJ2aWNlOjpnZXRDb2xsZWN0aW9uKCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS94bWwveG1sX2xpc3RlX2pvdWV1ci5waHAnLCBhcnJheSgnY2x1YicgPT4gJGNsdWIpKSwgJ2pvdWV1cicpOwp9KTsKfQoKcHVibGljIGZ1bmN0aW9uIGdldEVxdWlwZXNCeUNsdWIoJGNsdWIsICR0eXBlID0gbnVsbCkKewppZiAoJHR5cGUgJiYgIWluX2FycmF5KCR0eXBlLCBhcnJheSgnTScsICdGJykpKSB7CiAgICAkdHlwZSA9ICdNJzsKfQoKJHRlYW1zID0gJHRoaXMtPmdldENhY2hlZERhdGEoImNsdWJlcXVpcGVzX3skY2x1Yn1feyR0eXBlfSIsIDM2MDAqMjQqMywgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJGNsdWIsICR0eXBlKSB7CiAgICByZXR1cm4gU2VydmljZTo6Z2V0Q29sbGVjdGlvbigkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL3htbF9lcXVpcGUucGhwJywgYXJyYXkoJ251bWNsdScgPT4gJGNsdWIsICd0eXBlJyA9PiAkdHlwZSkpLCAnZXF1aXBlJyk7Cn0pOwoKZm9yZWFjaCgkdGVhbXMgYXMgJiR0ZWFtKSB7CiAgICAkcGFyYW1zID0gYXJyYXkoKTsKICAgIHBhcnNlX3N0cigkdGVhbVsnbGllbmRpdmlzaW9uJ10sICRwYXJhbXMpOwoKICAgICR0ZWFtWydpZHBvdWxlJ10gPSAkcGFyYW1zWydjeF9wb3VsZSddOwogICAgJHRlYW1bJ2lkZGl2J10gPSAkcGFyYW1zWydEMSddOwp9CgpyZXR1cm4gJHRlYW1zOwp9CgpwdWJsaWMgZnVuY3Rpb24gZ2V0UG91bGVzKCRkaXZpc2lvbikKewokcG91bGVzID0gJHRoaXMtPmdldENhY2hlZERhdGEoInBvdWxlc197JGRpdmlzaW9ufSIsIDM2MDAqMjQqMzAsIGZ1bmN0aW9uKCRzZXJ2aWNlKSB1c2UgKCRkaXZpc2lvbikgewogICAgcmV0dXJuIFNlcnZpY2U6OmdldENvbGxlY3Rpb24oJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfcmVzdWx0X2VxdS5waHAnLCBhcnJheSgnYWN0aW9uJyA9PiAncG91bGUnLCAnRDEnID0+ICRkaXZpc2lvbikpLCAncG91bGUnKTsKfSk7Cgpmb3JlYWNoKCRwb3VsZXMgYXMgJiRwb3VsZSkgewogICAgJHBhcmFtcyA9IGFycmF5KCk7CiAgICBwYXJzZV9zdHIoJHBvdWxlWydsaWVuJ10sICRwYXJhbXMpOwoKICAgICRwb3VsZVsnaWRwb3VsZSddID0gJHBhcmFtc1snY3hfcG91bGUnXTsKICAgICRwb3VsZVsnaWRkaXYnXSA9ICRwYXJhbXNbJ0QxJ107Cn0KCnJldHVybiAkcG91bGVzOwp9CgpwdWJsaWMgZnVuY3Rpb24gZ2V0UG91bGVDbGFzc2VtZW50KCRkaXZpc2lvbiwgJHBvdWxlID0gbnVsbCkKewpyZXR1cm4gJHRoaXMtPmdldENhY2hlZERhdGEoInBvdWxlY2xhc3NlbWVudF97JGRpdmlzaW9ufV97JHBvdWxlfSIsIDM2MDAqMjQqMSwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJGRpdmlzaW9uLCAkcG91bGUpIHsKICAgIHJldHVybiBTZXJ2aWNlOjpnZXRDb2xsZWN0aW9uKCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS94bWwveG1sX3Jlc3VsdF9lcXUucGhwJywgYXJyYXkoJ2F1dG8nID0+IDEsICdhY3Rpb24nID0+ICdjbGFzc2VtZW50JywgJ0QxJyA9PiAkZGl2aXNpb24sICdjeF9wb3VsZScgPT4gJHBvdWxlKSksICdjbGFzc2VtZW50Jyk7Cn0pOwp9CgpwdWJsaWMgZnVuY3Rpb24gZ2V0UG91bGVSZW5jb250cmVzKCRkaXZpc2lvbiwgJHBvdWxlID0gbnVsbCkKewpyZXR1cm4gJHRoaXMtPmdldENhY2hlZERhdGEoInBvdWxlcmVuY29udHJlc197JGRpdmlzaW9ufV97JHBvdWxlfSIsIDM2MDAqMjQqMSwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJGRpdmlzaW9uLCAkcG91bGUpIHsKICAgIHJldHVybiBTZXJ2aWNlOjpnZXRDb2xsZWN0aW9uKCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS94bWwveG1sX3Jlc3VsdF9lcXUucGhwJywgYXJyYXkoJ2F1dG8nID0+IDEsICdEMScgPT4gJGRpdmlzaW9uLCAnY3hfcG91bGUnID0+ICRwb3VsZSkpLCAndG91cicpOwp9KTsKfQoKcHVibGljIGZ1bmN0aW9uIGdldE9yZ2FuaXNtZXMoJHR5cGUpCnsKLy8gWm9uZSAvIExpZ3VlIC8gRGVwYXJ0ZW1lbnQKaWYgKCFpbl9hcnJheSgkdHlwZSwgYXJyYXkoJ1onLCAnTCcsICdEJykpKSB7CiAgICAkdHlwZSA9ICdMJzsKfQoKcmV0dXJuICR0aGlzLT5nZXRDYWNoZWREYXRhKCJvcmdhbmlzbWVzX3skdHlwZX0iLCAzNjAwKjI0KjMwLCBmdW5jdGlvbigkc2VydmljZSkgdXNlICgkdHlwZSkgewogICAgcmV0dXJuIFNlcnZpY2U6OmdldENvbGxlY3Rpb24oJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfb3JnYW5pc21lLnBocCcsIGFycmF5KCd0eXBlJyA9PiAkdHlwZSkpLCAnb3JnYW5pc21lJyk7Cn0pOwp9CgpwdWJsaWMgZnVuY3Rpb24gZ2V0RXByZXV2ZXMoJG9yZ2FuaXNtZSwgJHR5cGUpCnsKLy8gRXF1aXBlIC8gSW5kaXZpZHVlbGxlCmlmICghaW5fYXJyYXkoJHR5cGUsIGFycmF5KCdFJywgJ0knKSkpIHsKICAgICR0eXBlID0gJ0UnOwp9CgpyZXR1cm4gJHRoaXMtPmdldENhY2hlZERhdGEoImVwcmV1dmVzX3skb3JnYW5pc21lfV97JHR5cGV9IiwgMzYwMCoyNCozMCwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJG9yZ2FuaXNtZSwgJHR5cGUpIHsKICAgIHJldHVybiBTZXJ2aWNlOjpnZXRDb2xsZWN0aW9uKCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS94bWwveG1sX2VwcmV1dmUucGhwJywgYXJyYXkoJ3R5cGUnID0+ICR0eXBlLCAnb3JnYW5pc21lJyA9PiAkb3JnYW5pc21lKSksICdlcHJldXZlJyk7Cn0pOwp9CgpwdWJsaWMgZnVuY3Rpb24gZ2V0RGl2aXNpb25zKCRvcmdhbmlzbWUsICRlcHJldXZlKQp7CnJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgiZGl2aXNpb25zX3skb3JnYW5pc21lfV97JGVwcmV1dmV9IiwgMzYwMCoyNCozMCwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJG9yZ2FuaXNtZSwgJGVwcmV1dmUpIHsKICAgIHJldHVybiBTZXJ2aWNlOjpnZXRDb2xsZWN0aW9uKCRzZXJ2aWNlLT5nZXREYXRhKCdodHRwOi8vd3d3LmZmdHQuY29tL21vYmlsZS94bWwveG1sX2RpdmlzaW9uLnBocCcsIGFycmF5KCdvcmdhbmlzbWUnID0+ICRvcmdhbmlzbWUsICdlcHJldXZlJyA9PiAkZXByZXV2ZSwgKSksICdkaXZpc2lvbicpOwp9KTsKfQoKcHVibGljIGZ1bmN0aW9uIGdldFJlbmNvbnRyZSgkbGluaykKewokcGFyYW1zID0gYXJyYXkoKTsKcGFyc2Vfc3RyKCRsaW5rLCAkcGFyYW1zKTsKCnJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgicmVuY29udHJlXyIuc2hhMSgkbGluayksIDM2MDAqMjQqMSwgZnVuY3Rpb24oJHNlcnZpY2UpIHVzZSAoJHBhcmFtcykgewogICAgcmV0dXJuIFNlcnZpY2U6OmdldE9iamVjdCgkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL3htbF9jaHBfcmVuYy5waHAnLCAkcGFyYW1zKSwgbnVsbCk7Cn0pOwp9CgpwdWJsaWMgZnVuY3Rpb24gZ2V0TGljZW5jZXNCeU5hbWUoJG5vbSwgJHByZW5vbT0gJycpCnsKcmV0dXJuICR0aGlzLT5nZXRDYWNoZWREYXRhKCJsaWNlbmNlc197JG5vbX1feyRwcmVub219IiwgMzYwMCoyNCoyLCBmdW5jdGlvbigkc2VydmljZSkgdXNlICgkbm9tLCAkcHJlbm9tKSB7CiAgICByZXR1cm4gU2VydmljZTo6Z2V0Q29sbGVjdGlvbigkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL3htbF9saXN0ZV9qb3VldXJfby5waHAnLCBhcnJheSgnbm9tJyA9PiBzdHJ0b3VwcGVyKCRub20pLCAncHJlbm9tJyA9PiB1Y2ZpcnN0KCRwcmVub20pKSksICdqb3VldXInKTsKfSk7Cn0KCnB1YmxpYyBmdW5jdGlvbiBnZXRMaWNlbmNlc0J5Q2x1YigkY2x1YikKewpyZXR1cm4gJHRoaXMtPmdldENhY2hlZERhdGEoImxpY2VuY2VzY2x1Yl97JGNsdWJ9IiwgMzYwMCoyNCoyLCBmdW5jdGlvbigkc2VydmljZSkgdXNlICgkY2x1YikgewogICAgcmV0dXJuIFNlcnZpY2U6OmdldENvbGxlY3Rpb24oJHNlcnZpY2UtPmdldERhdGEoJ2h0dHA6Ly93d3cuZmZ0dC5jb20vbW9iaWxlL3htbC94bWxfbGlzdGVfam91ZXVyX28ucGhwJywgYXJyYXkoJ2NsdWInID0+ICRjbHViKSksICdqb3VldXInKTsKfSk7Cn0KCnB1YmxpYyBmdW5jdGlvbiBnZXRMaWNlbmNlKCRsaWNlbmNlKQp7CnJldHVybiAkdGhpcy0+Z2V0Q2FjaGVkRGF0YSgibGljZW5jZV97JGxpY2VuY2V9IiwgMzYwMCoyNCoxLCBmdW5jdGlvbigkc2VydmljZSkgdXNlICgkbGljZW5jZSkgewogICAgcmV0dXJuIFNlcnZpY2U6OmdldE9iamVjdCgkc2VydmljZS0+Z2V0RGF0YSgnaHR0cDovL3d3dy5mZnR0LmNvbS9tb2JpbGUveG1sL3htbF9saWNlbmNlLnBocCcsIGFycmF5KCdsaWNlbmNlJyA9PiAkbGljZW5jZSkpLCAnbGljZW5jZScpOwp9KTsKfQoKcHJpdmF0ZSBmdW5jdGlvbiBnZXRDYWNoZWREYXRhKCRrZXksICRsaWZlVGltZSwgJGNhbGxiYWNrKQp7CmlmICghJHRoaXMtPmNhY2hlKSB7CiAgICByZXR1cm4gJGNhbGxiYWNrKCR0aGlzKTsKfQoKaWYgKGZhbHNlID09PSAoJGRhdGEgPSAkdGhpcy0+Y2FjaGUtPmZldGNoKCRrZXkpKSkgewogICAgaWYgKCR0aGlzLT5hdXRvSW5pdGlhbGl6YXRpb24gJiYgZmFsc2UgPT0gJHRoaXMtPmNhY2hlLT5mZXRjaCgkaW5pdEtleSA9ICd4bWxfaW5pdGlhbGlzYXRpb24nKSkgewogICAgICAgICR0aGlzLT5pbml0aWFsaXphdGlvbigpOwogICAgICAgICR0aGlzLT5jYWNoZS0+c2F2ZSgkaW5pdEtleSwgJ2luaXQnLCAzNjAwKjQgKyBtdF9yYW5kKDAsIDM2MDAqNCkpOyAvLyBFbnRyZSA0IGV0IDhoCiAgICB9CgogICAgJGRhdGEgPSAkY2FsbGJhY2soJHRoaXMpOwogICAgJHRoaXMtPmNhY2hlLT5zYXZlKCRrZXksICRkYXRhLCAkbGlmZVRpbWUpOwp9CgpyZXR1cm4gJGRhdGE7Cn0KCnB1YmxpYyBmdW5jdGlvbiBnZXREYXRhKCR1cmwsICRwYXJhbXMgPSBudWxsKQp7CmlmICghZW1wdHkoJHBhcmFtcykpIHsKICAgICR1cmwgLj0gJz8nIC4gaHR0cF9idWlsZF9xdWVyeSgkcGFyYW1zKTsKfQoKLyokY29udGV4dCA9IHN0cmVhbV9jb250ZXh0X2NyZWF0ZShhcnJheSgKICAgICdzb2NrZXQnID0+IGFycmF5KCdiaW5kdG8nID0+ICgkdGhpcy0+aXBzb3VyY2UgPzogJzAnKS4nOjAnKSwKICAgICdodHRwJyA9PiBhcnJheSgKICAgICAgICAncHJvdG9jb2xfdmVyc2lvbicgPT4gMS4xLAogICAgICAgICdoZWFkZXInID0+IGFycmF5KCJVc2VyLWFnZW50OiBNb3ppbGxhLzQuMCAoY29tcGF0aWJsZTsgTVNJRSA2LjA7IFdpbjMyKSIsCiAgICAgICAgICAgICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsCiAgICAgICAgICAgICJBY2NlcHQtRW5jb2Rpbmc6IGd6aXAiLAogICAgICAgICAgICAiQ29ubmVjdGlvbjogQ2xvc2UiLAogICAgICAgICksCiAgICApCikpOwoKLy8kZGF0YSA9IGZpbGVfZ2V0X2NvbnRlbnRzKCR1cmwsIGZhbHNlLCAkY29udGV4dCk7CiRzdHJlYW0gPSBmb3BlbigkdXJsLCAncicsIGZhbHNlLCAkY29udGV4dCk7CiRkYXRhID0gc3RyZWFtX2dldF9jb250ZW50cygkc3RyZWFtKTsKZmNsb3NlKCRzdHJlYW0pOyovCgokY3VybCA9IGN1cmxfaW5pdCgpOwpjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9VUkwsICR1cmwpOwppZiAoJHRoaXMtPmlwc291cmNlKSB7CiAgICBjdXJsX3NldG9wdCgkY3VybCwgQ1VSTE9QVF9JTlRFUkZBQ0UsICR0aGlzLT5pcHNvdXJjZSk7Cn0KY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIgLCB0cnVlKTsKY3VybF9zZXRvcHQoJGN1cmwsIENVUkxPUFRfSFRUUEhFQURFUiwgYXJyYXkoCiAgICAiQWNjZXB0OiIsIC8vIFN1cHJpbWUgbGUgaGVhZGVyIHBhciBkZWZhdWx0IGRlIGNVcmwgKEFjY2VwdDogKi8qKQogICAgIlVzZXItYWdlbnQ6IE1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luMzIpIiwKICAgICJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIsCiAgICAiQWNjZXB0LUVuY29kaW5nOiBnemlwIiwKICAgICJDb25uZWN0aW9uOiBLZWVwLUFsaXZlIiwKKSk7CiRkYXRhID0gY3VybF9leGVjKCRjdXJsKTsKY3VybF9jbG9zZSgkY3VybCk7CgppZiAoJHRoaXMtPmxvZ2dlcikgewogICAgJHRoaXMtPmxvZ2dlci0+bG9nKCR1cmwsICRkYXRhKTsKfQoKJHhtbCA9IHNpbXBsZXhtbF9sb2FkX3N0cmluZygkZGF0YSk7CgppZiAoISR4bWwpIHsKICAgIHJldHVybiBmYWxzZTsKfQoKLy8gUGV0aXRlIGFzdHVjZSBwb3VyIHRyYW5zZm9ybWVyIHNpbXBsZW1lbnQgbGUgWE1MIGVuIHRhYmxlYXUKcmV0dXJuIGpzb25fZGVjb2RlKGpzb25fZW5jb2RlKCR4bWwpLCB0cnVlKTsKfQoKcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRDb2xsZWN0aW9uKCRkYXRhLCAka2V5ID0gbnVsbCkKewppZiAoZW1wdHkoJGRhdGEpKSB7CiAgICByZXR1cm4gYXJyYXkoKTsKfQoKaWYgKCRrZXkpIHsKICAgIGlmICghYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkZGF0YSkpIHsKICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgIH0KICAgICRkYXRhID0gJGRhdGFbJGtleV07Cn0KCnJldHVybiBpc3NldCgkZGF0YVswXSkgPyAkZGF0YSA6IGFycmF5KCRkYXRhKTsKfQoKcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRPYmplY3QoJGRhdGEsICRrZXkgPSBudWxsKQp7CmlmICgka2V5KSB7CiAgICByZXR1cm4gYXJyYXlfa2V5X2V4aXN0cygka2V5LCAkZGF0YSkgPyAkZGF0YVska2V5XSA6IG51bGw7Cn0gZWxzZSB7CiAgICByZXR1cm4gZW1wdHkoJGRhdGEpID8gbnVsbCA6ICRkYXRhOwp9Cn0KCg==]]></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+RmV0Y2hSb3coKSkKICAgICAgewoJJGNvZWZmID0gJHJvd1snY29lZmZpY2llbnQnXTsKCXJldHVybiAkY29lZmY7Cgl9CgkKfQplbHNlewoJZWNobyAiY29lZmZpY2llbnQgaW50cm91dmFibGUgISI7Cn0JCQpmdW5jdGlvbiBkYXRldmVyc2ZyICgkZGF0ZSl7CSAgIAoJJGRhdGVhcnIgPSBleHBsb2RlKCcvJywgJGRhdGUpOwoJJGRhdGVmciA9ICRkYXRlYXJyWzJdIC4gJy0nIC4gJGRhdGVhcnJbMV0gLiAnLScgLiAkZGF0ZWFyclswXTsKCXJldHVybiAkZGF0ZWZyOwoJfQp9CmZ1bmN0aW9uIG1vaXNfZnJhbmNhaXMoJG1vaXMsJGxvbmd1ZXVyKXsKCWlmKCFpc3NldCgkbG9uZ3VldXIpIHx8ICRsb25ndWV1ciA9PScnKXsKCQkkbW9udGhzID0gYXJyYXkoIkphbnZpZXIiLCAiRsOpdnJpZXIiLCAiTWFycyIsICJBdnJpbCIsICJNYWkiLCAiSnVpbiIsICJqdWlsbGV0IiwgIkFvdXQiLCAiU2VwdGVtYnJlIiwgIk9jdG9icmUiLCAiTm92ZW1icmUiLCAiZMOpY2VtYnJlIik7Cgl9CgllbHNlCgl7CgkJJG1vbnRocyA9IGFycmF5KCJKYW4iLCAiRsOpdiIsICJNYXIiLCAiQXZyIiwgIk1haSIsICJKdWluIiwgImp1aWwiLCAiQW91IiwgIlNlcCIsICJPY3QiLCAiTm92IiwgImTDqWMiKTsKCX0KCSRtb250aF90b19kaXNwbGF5ID0gJG1vaXMtMTsKCSRtb250aF9mcmFuY2FpcyA9ICRtb250aHNbIiRtb250aF90b19kaXNwbGF5Il07CglyZXR1cm4gJG1vbnRoX2ZyYW5jYWlzOwp9CgoKCj8+]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFBpbmcKIyBWZXJzaW9uOiAwLjFiZXRhLCBDbGF1ZGUgU0lPSEFOIEFnaSB3ZWJjb25zZWlsCiMgTWV0aG9kOiBJbnN0YWxsCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA4IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9za2VsZXRvbi8KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLyoqCiAqIEZvciBzZXBhcmF0ZWQgbWV0aG9kcywgeW91J2xsIGFsd2F5cyB3YW50IHRvIHN0YXJ0IHdpdGggdGhlIGZvbGxvd2luZwogKiBsaW5lIHdoaWNoIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG1ldGhvZCB3YXMgY2FsbGVkIGZyb20gdGhlIG1vZHVsZQogKiBBUEksIGFuZCB0aGF0IGV2ZXJ5dGhpbmcncyBzYWZlIHRvIGNvbnRpbnVlOgogKi8gCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKCi8qKiAKICogQWZ0ZXIgdGhpcywgdGhlIGNvZGUgaXMgaWRlbnRpY2FsIHRvIHRoZSBjb2RlIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlCiAqIHdyYXBwZWQgaW4gdGhlIEluc3RhbGwoKSBtZXRob2QgaW4gdGhlIG1vZHVsZSBib2R5LgogKi8KCiRkYiA9ICRnQ21zLT5HZXREYigpOwoKLy8gbXlzcWwtc3BlY2lmaWMsIGJ1dCBpZ25vcmVkIGJ5IG90aGVyIGRhdGFiYXNlCiR0YWJvcHRhcnJheSA9IGFycmF5KCAnbXlzcWwnID0+ICdFTkdJTkU9TXlJU0FNJyApOwoKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgovLyB0YWJsZSBzY2hlbWEgZGVzY3JpcHRpb24KJGZsZHMgPSAiCglpZCBJKDExKSBBVVRPIEtFWSwKCWFjdGlmIEkoMSksCglsaWNlbmNlIEkoMTEpLAoJbm9tIEMoMjU1KSwKCXByZW5vbSBDKDI1NSksCglwdHMgSSgxMSksCgliaXJ0aGRheSBELAoJc2V4ZSBDKDEpLAoJYWRyZXNzZSBDKDI1NSksCgl2aWxsZSBDKDI1NSksCgljb2RlcG9zdGFsIEMoNSkgIjsKCQkJCi8vIGNyZWF0ZSBpdC4gCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19qb3VldXJzIiwKCQkJCSAgICRmbGRzLCAKCQkJCSAgICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8qJHNxbCA9ICJJTlNFUlQgSU5UTyBtYWlyaWVfbW9kdWxlX3BpbmcgIChpZF91c2VyLCBub21fY29tcGxldCwgYWRyZXNzZSwgY29kZXBvc3RhbCwgY29tbXVuZSwgZW1haWwsIHRyYW5jaGUsIGFjdGl2ZSkKCQkJCQkJVkFMVUVTICgnMCcsICdTSU9IQU4gQ2xhdWRlJywgJzMwLCBydWUgUGFyayB0aG9tYXMnLCAnMjk5NTAnLCAnQ2xvaGFycy1Gb3Vlc25hbnQnLCAnY2xhdWRlLnNpb2hhbkBnbWFpbC5jb20nLCAnQScsICcxJykiOwokZGItPkV4ZWN1dGUoJHNxbCk7CiovCgokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKJGZsZHM9ICJpZCBJKDExKSBLRVkgQVVUTywKICAgICAgICBzYWlzb24gQygxMDApLAoJcGhhc2UgSSgxKSwKCWxpYmVxdWlwZSBDKDI1NSksCglsaWJkaXZpc2lvbiBDKDI1NSksCgl0eXBlX2NvbXBldCBDKDEpLAoJZnJpZW5kbHluYW1lIEMoMjU1KSwKCWxpZW5kaXZpc2lvbiBDKDI1NSksCglpZHBvdWxlIEkoMTEpLAoJaWRkaXYgSSgxMSkiOwoKJHNxbGFycmF5PSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcyIsCgkJCQkgICRmbGRzLAoJCQkJICAkdGFib3B0YXJyYXkpOwoJCQkJCiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vdW5lIG5vdXZlbGxlIHRhYmxlIHBvdXIgbGVzIHZpY3RvaXJlcyBicnV0ZXMgKHBhcyBkZSB2aWN0b2lyZXMgZMOpdGFpbGzDqWVzIHBvdXIgbCdpbnN0YW50KQokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgokZmxkcyA9ICIKICAgICBpZCBJKDExKSBBVVRPIEtFWSwKICAgICBzYWlzb24gQygyNTUpLAogICAgIGRhdGVtYWogVCwKICAgICBsaWNlbmNlIEkoMTEpLAoJZGF0ZV9ldmVudCBELAoJZXByZXV2ZSBDKDI1NSksCiAgICAgbm9tIEMoMjU1KSwKCW51bWpvdXJuIEkoMTEpLAogICAgIGNsYXNzZW1lbnQgSSg0KSwKICAgICB2aWN0b2lyZSBJKDEpLAoJZWNhcnQgTig2LjMpLAoJY29lZmYgTigzLjIpLAoJcG9pbnRyZXMgTig0LjIpLAogICAgIGZvcmZhaXQgSSgxKSAiOwoJCQkKLy8gY3JlYXRlIGl0LiAKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3BhcnRpZXNfc3BpZCIsCgkJCQkgICAkZmxkcywgCgkJCQkgICAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovL3VuZSBub3V2ZWxsZSB0YWJsZSBwb3VyIGxlcyBwb2ludHMKCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwoKLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCiRmbGRzID0gIgoJaWQgSSgxMSkgIEFVVE8gS0VZLAoJc2Fpc29uIEMoMjU1KSwKCWxpY2VuY2UgSSgxMSksCglhZHZsaWMgSSgxMSksCgl2ZCBJLAoJbnVtam91cm4gSSgyKSwKCWNvZGVjaGFtcCBDKDMpLAoJZGF0ZV9ldmVudCBELAoJYWR2c2V4ZSBDKDMpLAoJYWR2bm9tcHJlIEMoMjU1KSwKCXBvaW50cmVzIE4oNi4zKSwKCWNvZWZjaGFtcCBOKDMuMiksCglhZHZjbGFvZiBDKDQpIjsKCQkJCi8vIAokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllcyIsCgkJCQkgICAkZmxkcywgCgkJCQkgICAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgovLwokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgokZmxkcyA9ICIKCWlkIEkoMTEpIEFVVE8gS0VZLAoJc2Fpc29uIEMoMjU1KSwKCWRhdGVtYWogRCwKCWxpY2VuY2UgSSgxMSksCglzaXRfbWVucyBDKDIwMCksCglmZnR0IEkoMTEpLAoJc3BpZCBJKDExKSI7CgkJCQovLyBjcmVhdGUgaXQuIAokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXBfcGFydGllcyIsCgkJCQkgICAkZmxkcywgCgkJCQkgICAkdGFib3B0YXJyYXkpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgoKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgovLyB0YWJsZSBzY2hlbWEgZGVzY3JpcHRpb24KJGZsZHMgPSAiCiAgICAgaWQgSSgxMSkgQVVUTyBLRVksCglzYWlzb24gQygyNTUpLAoJaWRwb3VsZSBJKDExKSwKCWlkZGl2IEkoMTEpLAoJY2x1YiBJKDEpLAoJdG91ciBJKDIpLAoJZGF0ZV9ldmVudCBELAoJdXBsb2FkZWQgSSgxKSwKCWxpYmVsbGUgQygyNTUpLAoJZXF1YSBDKDI1NSksCgllcXViIEMoMjU1KSwKCXNjb3JlYSBJKDIpLAoJc2NvcmViIEkoMiksCglsaWVuIEMoMjU1KSI7CgkJCQovLyBjcmVhdGUgaXQuIAokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcG91bGVzX3JlbmNvbnRyZXMiLAoJCQkJICAgJGZsZHMsIAoJCQkJICAgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHRhYm9wdGFycmF5ID0gYXJyYXkoICdteXNxbCcgPT4gJ0VOR0lORT1NeUlTQU0nICk7CgokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgokZmxkcyA9ICIKCWlkIEkoMTEpIEFVVE8gS0VZLAoJZGF0ZWNyZWF0ZWQgVCwKCWRhdGVtYWogVCwKCW1vaXMgSSgyKSwKCWFubmVlIEkoNCksCglwaGFzZSBJKDEpLAoJbGljZW5jZSBJKDExKSwKCWNhdGVnIEMoMTApLAoJbm9tIEMoMjU1KSwKCXByZW5vbSBDKDI1NSksCglwb2ludHMgTig2LjIpLAoJY2xuYXQgSSgxMSksCglyYW5ncmVnIEkoMTEpLAoJcmFuZ2RlcCBJKDExKSwKCXByb2dtb2lzIE4oNi4yKSI7CgkJCQovLyBjcmVhdGUgaXQuIAokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2l0X21lbnMiLAoJCQkJICAgJGZsZHMsIAoJCQkJICAgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CgovLyB0YWJsZSBzY2hlbWEgZGVzY3JpcHRpb24KJGZsZHMgPSAiCglpZCBJKDExKSBBVVRPIEtFWSwKCXR5cGVfY29tcGV0IEMoMyksCglkYXRlX2NvbXBldCBELAoJaWRkaXYgSSgxMSksCglpZHBvdWxlIEkoMTEpLAoJbnVtam91cm4gSSgxMSkiOwoJCQkKLy8gY3JlYXRlIGl0LiAKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIiLAoJCQkJICAgJGZsZHMsIAoJCQkJICAgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKCi8vY3LDqWF0aW9uIGQndW4gaW5kZXggdW5pcXVlIDogCi8vQ1JFQVRFIFVOSVFVRSBJTkRFWCBub2RvdWJsb25zIE9OIHBpbmdfbW9kdWxlX3Bpbmdfc2l0X21lbnMgKGxpY2VuY2UsIG1vaXMsIGFubmVlKTsKCi8vIHRhYmxlIHNjaGVtYSBkZXNjcmlwdGlvbgokZmxkcyA9ICIKCWlkIEkoMTEpIEFVVE8gS0VZLAoJZGF0ZWNyZWF0ZWQgVCwKCWRhdGVtYWogVCwKCWxpY2VuY2UgSSgxMSksCgl0eXBlX2NvbnRhY3QgQygyNTUpLAoJY29udGFjdCBDKDI1NSksCglkZXNjcmlwdGlvbiBDKDI1NSkiOwoJCQkKLy8gY3JlYXRlIGl0LiAKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbW0iLAoJCQkJICAgJGZsZHMsIAoJCQkJICAgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8gdGFibGUgc2NoZW1hIGRlc2NyaXB0aW9uCiRmbGRzID0gIgoJaWQgSSgxMSkgQVVUTyBLRVksCglkYXRlY3JlYXRlZCBULAoJc3RhdHVzIEMoMjU1KSwKCWRlc2lnbmF0aW9uIEMoMjU1KSwKCWFjdGlvbiBDKDI1NSkiOwoJCQkKLy8gY3JlYXRlIGl0LiAKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3JlY3VwIiwKCQkJCSAgICRmbGRzLCAKCQkJCSAgICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCi8vdGFibGUgdHlwZV9jb21wZXRpdGlvbnMKJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7CiRmbGRzID0gIgoJaWQgSSgxMSkgQVVUTyBLRVksCgluYW1lIEMoMjU1KSwKCWNvZGVfY29tcGV0IEMoMyksCgljb2VmZmljaWVudCBOKDMuMikiOwoJCQkKLy8gY3JlYXRlIGl0LiAKJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3R5cGVfY29tcGV0aXRpb25zIiwKCQkJCSAgICRmbGRzLCAKCQkJCSAgICR0YWJvcHRhcnJheSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOwokZmxkcyA9ICIKCWxpY2VuY2UgSSgxMSksCgl0eXBlX2NvbXBldCBDKDMpIjsKCQkJCi8vIGNyZWF0ZSBpdC4gCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWNpcGUiLAoJCQkJICAgJGZsZHMsIAoJCQkJICAgJHRhYm9wdGFycmF5KTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKLy8kZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMnKTsKCi8vIGNyZWF0ZSBhIHNlcXVlbmNlCiRkYi0+Q3JlYXRlU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19zZXEiKTsKCi8vIGNyZWF0ZSBhIHBlcm1pc3Npb24KJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ1BpbmcgVXNlJywgJ1BpbmcgVXNlJyk7CiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdQaW5nIFNldCBQcmVmcycsJ1BpbmcgU2V0IFByZWZzJyk7CiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdQaW5nIE1hbmFnZSB1c2VyJywgJ1BpbmcgTWFuYWdlIHVzZXInKTsKLy8kdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignUGluZyBEZWxldGUgdXNlcicsICdEZWxldGUgdXNlcicpOwovLyR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdVc2UgUGluZycsICdVc2UgUGluZycpOwoKLy8gY3JlYXRlIGEgcHJlZmVyZW5jZQovLyR0aGlzLT5TZXRQcmVmZXJlbmNlKCJtaW5pX3RyYW5jaGVBJywgJzAnKTsKLyogbGVzIHZpY3RvaXJlcyBub3JtYWxlcyAqLwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndmljTm9ybTBfMjQnLCAnNicpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndmljTm9ybTI1XzQ5JywgJzUsNScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndmljTm9ybTUwXzk5JywgJzUnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY05vcm0xMDBfMTQ5JywgJzQnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY05vcm0xNTBfMTk5JywgJzMnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY05vcm0yMDBfMjk5JywgJzInKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY05vcm0zMDBfMzk5JywgJzEnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY05vcm00MDBfNDk5JywgJzAsNScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndmljTm9ybVBsdXM1MDAnLCAnMCcpOwoKLyogbGVzIHZpY3RvaXJlcyBhbm9ybWFsZXMgKi8KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY0Fub3JtMF8yNCcsICc2Jyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd2aWNBbm9ybTI1XzQ5JywgJzcnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY0Fub3JtNTBfOTknLCAnOCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndmljQW5vcm0xMDBfMTQ5JywgJzEwJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd2aWNBbm9ybTE1MF8xOTknLCAnMTMnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY0Fub3JtMjAwXzI5OScsICcxNycpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgndmljQW5vcm0zMDBfMzk5JywgJzIyJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd2aWNBbm9ybTQwMF80OTknLCAnMjgnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZpY0Fub3JtUGx1czUwMCcsICc0MCcpOwoKLyogZMOpZmFpdGVzIG5vcm1hbGVzICovCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZOb3JtMF8yNCcsICctNScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmTm9ybTI1XzQ5JywgJy00LDUnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZk5vcm01MF85OScsICctNCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmTm9ybTEwMF8xNDknLCAnLTMnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZk5vcm0xNTBfMTk5JywgJy0yJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZOb3JtMjAwXzI5OScsICctMScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmTm9ybTMwMF8zOTknLCAnLTAsNScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmTm9ybTQwMF80OTknLCAnMCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmTm9ybVBsdXM1MDAnLCAnMCcpOwoKLyogZMOpZmFpdGVzIEFub3JtYWxlcyAqLwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmQW5vcm0wXzI0JywgJy01Jyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTI1XzQ5JywgJy02Jyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTUwXzk5JywgJy03Jyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZBbm9ybTEwMF8xNDknLCAnLTgnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZkFub3JtMTUwXzE5OScsICctMTAnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZkFub3JtMjAwXzI5OScsICctMTIsNScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmQW5vcm0zMDBfMzk5JywgJy0xNicpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmQW5vcm00MDBfNDk5JywgJy0yMCcpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmQW5vcm1QbHVzNTAwJywgJy0yOScpOwoKCi8vIGNyZWF0ZSBhIHByZWZlcmVuY2UKJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRNb250aFNpdE1lbnMnLCAnNScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncGhhc2UnLCAnMScpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgncG9wdWxhdGVfY2FsZW5kYXInLCAnT3VpJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhZmZpY2hlX2NsdWJfdW5pcXVlbWVudCcsICdPdWknKTsKCgojU2V0dXAgZXZlbnRzCiR0aGlzLT5DcmVhdGVFdmVudCgnT25Vc2VyQWRkZWQnKTsKLy8kdGhpcy0+Q3JlYXRlRXZlbnQoJ05ld3NBcnRpY2xlRWRpdGVkJyk7CiR0aGlzLT5DcmVhdGVFdmVudCgnT25Vc2VyRGVsZXRlZCcpOwovLyR0aGlzLT5DcmVhdGVFdmVudCgnTmV3c0NhdGVnb3J5QWRkZWQnKTsKLy8kdGhpcy0+Q3JlYXRlRXZlbnQoJ05ld3NDYXRlZ29yeUVkaXRlZCcpOwovLyR0aGlzLT5DcmVhdGVFdmVudCgnTmV3c0NhdGVnb3J5RGVsZXRlZCcpOwoKCi8vb24gaW5zw6hyZSBsZXMgw6lsw6ltZW50cyBwYXIgZMOpZmF1dAokaW5zZXJ0X3NxbCA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMgKGlkLCBuYW1lLCBjb2RlX2NvbXBldCwgY29lZmZpY2llbnQpIFZBTFVFUyAoJycsID8sID8sID8pIjsKJHJlcyA9ICRkYi0+RXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoJ0NyaXTDqXJpdW0gZsOpZMOpcmFsIFNlbmlvcnMnLCAnSScsICcxLjI1JykpOwokcmVzID0gJGRiLT5FeGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSgnQ3JpdMOpcml1bSBmw6lkw6lyYWwgSmV1bmVzJywgJ0onLCAnMS4wMCcpKTsKJHJlcyA9ICRkYi0+RXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoJ0NocHQgRnJhbmNlIHBhciDDqXF1aXBlcyBtYXNjdWxpbicsICcxJywgJzEuMDAnKSk7CiRyZXMgPSAkZGItPkV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCdDaHB0IEZyYW5jZSBwYXIgw6lxdWlwZXMgZsOpbWluaW4nLCAnMScsICcxLjAwJykpOwokcmVzID0gJGRiLT5FeGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSgnQ291cGUgTmF0aW9uYWxlIFbDqXTDqXJhbnMnLCAnSycsICcwLjc1JykpOwokcmVzID0gJGRiLT5FeGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSgnQ2hhbXBpb25uYXQgZGUgRnJhbmNlIFbDqXTDqXJhbnMnLCAnVicsICcxLjAwJykpOwokcmVzID0gJGRiLT5FeGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSgnQ3JpdMOpcml1bSBmw6lkw6lyYWwgU2VuaW9ycycsICdJJywgJzEuMjUnKSk7CiRyZXMgPSAkZGItPkV4ZWN1dGUoJGluc2VydF9zcWwsIGFycmF5KCdDaGFtcGlvbm5hdCBKZXVuZXMnLCAnKycsICcwLjc1JykpOwokcmVzID0gJGRiLT5FeGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSgnQ2hhbXBpb25uYXQgamVudWVzIHBvdXNzaW5zIGJlbmphbWlucycsICdFQ1AnLCAnMS4yNScpKTsKJHJlcyA9ICRkYi0+RXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoJ0ludGVyY2x1YnMgamV1bmVzJywgJ0VJSicsICcwLjUwJykpOwokcmVzID0gJGRiLT5FeGVjdXRlKCRpbnNlcnRfc3FsLCBhcnJheSgnVG91cm5vaSBSw6lnIC0gRGVwJywgJ1onLCAnMC41MCcpKTsKJHJlcyA9ICRkYi0+RXhlY3V0ZSgkaW5zZXJ0X3NxbCwgYXJyYXkoJ1RvdXJub2kgTmF0aW9uYWwgZXQgSW50ZXJuYXQuJywgJ1QnLCAnMC43NScpKTsKCi8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZwokdGhpcy0+QXVkaXQoIDAsIAoJICAgICAgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAKCSAgICAgICR0aGlzLT5MYW5nKCdpbnN0YWxsZWQnLCAkdGhpcy0+R2V0VmVyc2lvbigpKSApOwoKCQoJICAgICAgCj8+]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE5ld3NsZXR0ZXIgTWFkZSBTaW1wbGUgKGMpIDIwMDgtMjAxNCBieSBSb2JlcnQgQ2FtcGJlbGwKIyAgICAgICAgIChjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnKQojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBwcm92aWRlIGEgZmxleGlibGUKIyAgbWFpbGluZyBsaXN0IHNvbHV0aW9uLgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFZpc2l0IHRoZSBDTVNNUyBIb21lcGFnZSBhdDogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMKIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojCiMgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCiMgYXMgYW4gYWRkb24gbW9kdWxlIHRvIENNUyBNYWRlIFNpbXBsZS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIHNvZnR3YXJlCiMgaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwojIE1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbgojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKJGRiID0gJHRoaXMtPkdldERiKCk7CgovLyByZW1vdmUgdGhlIGRhdGFiYXNlIHRhYmxlcwokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfam91ZXVycyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfZXF1aXBlcyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcGFydGllc19zcGlkIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCAgY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWVzIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCAgY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19yZWN1cF9wYXJ0aWVzIiApOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7Cgokc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCAgY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wb3VsZXNfcmVuY29udHJlcyIgKTsKJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoKJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Bpbmdfc2l0X21lbnMiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoICBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NhbGVuZHJpZXIiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoICBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbW0iICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfcmVjdXAiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCiRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3BpbmdfdHlwZV9jb21wZXRpdGlvbnMiICk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCgovLyByZW1vdmUgdGhlIHNlcXVlbmNlCiRkYi0+RHJvcFNlcXVlbmNlKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX3NlcSIgKTsKCi8vIHJlbW92ZSB0aGUgcGVybWlzc2lvbnMKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ1BpbmcgVXNlJyk7CiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdQaW5nIFNldCBQcmVmcycpOwokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignUGluZyBNYW5hZ2UgdXNlcicpOwoKLy8gcmVtb3ZlIHRoZSBwcmVmZXJlbmNlCiR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCk7CgoKLy8gRXZlbnRzCiR0aGlzLT5SZW1vdmVFdmVudCggJ09uVXNlckFkZGVkJyApOwokdGhpcy0+UmVtb3ZlRXZlbnQoICdPblVzZXJEZWxldGVkJyApOwoKCgovLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCd1bmluc3RhbGxlZCcpKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFNrZWxldG9uIC0gYSBwZWRhbnRpYyAic3RhcnRpbmcgcG9pbnQiIG1vZHVsZQojIFZlcnNpb246IDEuNSwgU2pHCiMgTWV0aG9kOiBVcGdyYWRlCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA4IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9za2VsZXRvbi8KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLyoqCiAqIEZvciBzZXBhcmF0ZWQgbWV0aG9kcywgeW91J2xsIGFsd2F5cyB3YW50IHRvIHN0YXJ0IHdpdGggdGhlIGZvbGxvd2luZwogKiBsaW5lIHdoaWNoIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG1ldGhvZCB3YXMgY2FsbGVkIGZyb20gdGhlIG1vZHVsZQogKiBBUEksIGFuZCB0aGF0IGV2ZXJ5dGhpbmcncyBzYWZlIHRvIGNvbnRpbnVlOgoqLyAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgoKLyoqCiAqIEFmdGVyIHRoaXMsIHRoZSBjb2RlIGlzIGlkZW50aWNhbCB0byB0aGUgY29kZSB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZQogKiB3cmFwcGVkIGluIHRoZSBVcGdyYWRlKCkgbWV0aG9kIGluIHRoZSBtb2R1bGUgYm9keS4KICovCgokY3VycmVudF92ZXJzaW9uID0gJG9sZHZlcnNpb247CnN3aXRjaCgkY3VycmVudF92ZXJzaW9uKQp7CiAgLy8gd2UgYXJlIG5vdyAxLjAgYW5kIHdhbnQgdG8gdXBncmFkZSB0byBsYXRlc3QKIGNhc2UgIjAuMWJldGExIjoKICAgLy9kbyBtYWdpYwogY2FzZSAiMC4xYmV0YTIiOgogICAvL2FuZCB0aGlzIGlzIGhlcmUgZm9yIHRoZSBuZXh0IHZlcnNpb24KCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCgkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsKCSRmbGRzID0gIgoJCWxpY2VuY2UgSSgxMSksCgkJdHlwZV9jb21wZXQgQygzKSI7CgoJLy8gY3JlYXRlIGl0LiAKCSRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19wYXJ0aWNpcGUiLAoJCQkJCSAgICRmbGRzLCAKCQkJCQkgICAkdGFib3B0YXJyYXkpOwoJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwogY2FzZSAiMS4yIjoKIGNhc2UgIjEuMyI6CiBjYXNlICIxLjQiOgogY2FzZSAiMS41IjoKIGNhc2UgIjEuNiI6CiBjYXNlICIxLjciOgogY2FzZSAiMS44IjoKCS8vIGhlcmUncyBhbiBleGFtcGxlIC0tIHdlIGV4cGFuZCB0aGUgU2tlbGV0b24gZGF0YWJhc2UgcmVjb3JkIHRvIGluY2x1ZGUgYW5vdGhlciBmaWVsZC4KCSRkYiA9ICRnQ21zLT5HZXREYigpOwoJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7Cgkkc3FsYXJyYXkgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3NrZWxldG9uIiwgImV4cGxhbmF0aW9uIFgiKTsKCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKfQoKLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCiR0aGlzLT5BdWRpdCggMCwgCgkgICAgICAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksIAoJICAgICAgJHRoaXMtPkxhbmcoJ3VwZ3JhZGVkJywgJHRoaXMtPkdldFZlcnNpb24oKSkpOwoKLy9ub3RlOiBtb2R1bGUgYXBpIGhhbmRsZXMgc2VuZGluZyBnZW5lcmljIGV2ZW50IG9mIG1vZHVsZSB1cGdyYWRlZCBoZXJlCj8+]]></data>
	</file>
	<file>
	  <filename>/Ping.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgTW9kdWxlOiBQaW5nIC0gCiMgVmVyc2lvbjogMC4xLCBTYwojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDEwIGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojIFRoZSBtb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9za2VsZXRvbi8KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLyoqCiAqIFNrZWxldG9uIGV4YW1wbGUgY2xhc3MKICoKICogQGF1dGhvciBDbGF1ZGUgU0lPSEFOCiAqIEBzaW5jZSAxLjAKICogQHZlcnNpb24gJFJldmlzaW9uOiAzODI3ICQKICogQG1vZGlmaWVkYnkgJExhc3RDaGFuZ2VkQnk6IHdpc2h5ICQKICogQGxhc3Rtb2RpZmllZCAkRGF0ZTogMjAwNy0wMy0xMiAxMTo1NjoxNiArMDIwMCAoTW9uLCAxMiBNYXIgMjAwNykgJAogKiBAbGljZW5zZSBHUEwKICoqLwpjbGFzcyBQaW5nIGV4dGVuZHMgQ01TTW9kdWxlCnsKICAKICBmdW5jdGlvbiBHZXROYW1lKCkgeyByZXR1cm4gJ1BpbmcnOyB9ICAgCiAgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOyB9ICAgCiAgZnVuY3Rpb24gR2V0VmVyc2lvbigpIHsgcmV0dXJuICcwLjFiZXRhMSc7IH0gIAogIGZ1bmN0aW9uIEdldEhlbHAoKSB7IHJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOyB9ICAgCiAgZnVuY3Rpb24gR2V0QXV0aG9yKCkgeyByZXR1cm4gJ2FnaS13ZWJjb25zZWlsJzsgfSAKICBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpIHsgcmV0dXJuICdjbGF1ZGVAYWdpLXdlYmNvbnNlaWwuZnInOyB9CiAgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOyB9CiAgICAKICBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpIHsgcmV0dXJuIHRydWU7IH0KICBmdW5jdGlvbiBIYXNBZG1pbigpIHsgcmV0dXJuIHRydWU7IH0gICAKICBmdW5jdGlvbiBHZXRBZG1pblNlY3Rpb24oKSB7IHJldHVybiAnY29udGVudCc7IH0KICBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyk7IH0KIAogIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpCiAgewogICAgCXJldHVybiAKCQkkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdQaW5nIFVzZScpOwoJCiAgfQogIAogIAogIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpCiAgewogICAgLy9yZXR1cm4gYXJyYXkoJ05NUyc9PicyLjknLCAnRnJvbnRFbmRVc2Vycyc9PicxLjI0Jyk7CiAgfQoKICAKCiAgZnVuY3Rpb24gTWF4aW11bUNNU1ZlcnNpb24oKQogIHsKICAgIHJldHVybiAiMi4wIjsKICB9CgogIAogIGZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKQogIHsgCiAgCSR0aGlzLT5SZWdpc3Rlck1vZHVsZVBsdWdpbigpOwoJJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOwoJCgkvL2Zvcm0gcGFyYW1ldGVycwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3N1Ym1pdCcsQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd0b3VybGlzdCcsQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdlcXVpcGVsaXN0JyxDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3R5cGVfY29tcGV0JyxDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNFdFBhcmFtZXRlclR5cGUoJ3JlY29yZF9qb3VldXInLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NhbmNlbCcsQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdpZF91c2VyJyxDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ25vbV9jb21wbGV0JyxDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2FkcmVzc2UnLENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY29kZXBvc3RhbCcsQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdjb21tdW5lJyxDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2VtYWlsJyxDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NvbmZpcm1fZW1haWwnLENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncGFzc2UnLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3JlY29yZF9pZCcsIENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndHlwZV9jb21wZXRpdGlvbicsIENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZGF0ZV9jb21wZXQnLCBDTEVBTl9OT05FKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhZHZlcnNhaXJlcycsIENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndG91cicsIENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZXF1aXBlJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdsb2NhdXgnLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNFdFBhcmFtZXRlclR5cGUoJ2pvdWV1cicsIENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaWQnLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ251bWVybycsIENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbGljZW5jZScsIENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnYWR2bGljJywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCd2ZCcsIENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbnVtam91cm4nLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2NvZGVjaGFtcCcsIENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZGF0ZScsIENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnYWR2c2V4ZScsIENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnYWR2bm9tcHJlJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdwb2ludHJlcycsIENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY29lZmNoYW1wJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhZHZjbGFvZicsIENMRUFOX1NUUklORyk7CgkKCS8vCgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZGF0ZWNyZWF0ZWQnLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2RhdGVtYWonLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ21vaXMnLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ21vbnRoc2xpc3QnLENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnYW5uZWUnLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3BoYXNlJywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhbm5lZScsIENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnbm9tJywgQ0xFQU5fU1RSSU5HKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdwcmVub20nLCBDTEVBTl9TVFJJTkcpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2FjdGlmJywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdwb2ludCcsIENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnY2xuYXQnLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3JhbmdyZWcnLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3JhbmdkZXAnLCBDTEVBTl9JTlQpOwoJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3Byb2dtb2lzJywgQ0xFQU5fSU5UKTsKCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdzYWlzb24nLCBDTEVBTl9TVFJJTkcpOwoJCgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgndHlwZScsIENMRUFOX1NUUklORyk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaWRwb3VsZScsIENMRUFOX0lOVCk7CgkkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnaWRkaXYnLCBDTEVBTl9JTlQpOwovKgkqLwoJCgkvLyR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2Rpc3BsYXknLCcnKTsKCgp9CgpmdW5jdGlvbiBJbml0aWFsaXplQWRtaW4oKQp7CiAgJHRoaXMtPlNldFBhcmFtZXRlcnMoKTsKCS8vJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcigncGFnZWxpbWl0JywgMTAwMDAwLCAkdGhpcy0+TGFuZygnaGVscF9wYWdlbGltaXQnKSk7Cn0KCiAgIC8qCgoJCiAgICR0aGlzLT5SZXN0cmljdFVua25vd25QYXJhbXMoKTsKICAKICAgLy8gc3ludGF4IGZvciBjcmVhdGluZyBhIHBhcmFtZXRlciBpcyBwYXJhbWV0ZXIgbmFtZSwgZGVmYXVsdCB2YWx1ZSwgZGVzY3JpcHRpb24KICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignZW52b2lzbXNfaWQnLCAtMSwgJHRoaXMtPkxhbmcoJ2hlbHBfZW52b2lzbXNfaWQnKSk7CiAgIC8vIHNrZWxldG9uX2lkIG11c3QgYmUgYW4gaW50ZWdlcgogICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZW52b2lzbXNfaWQnLENMRUFOX0lOVCk7CgogICAvLyBtb2R1bGVfbWVzc2FnZSBtdXN0IGJlIGEgc3RyaW5nCiAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ21vZHVsZV9tZXNzYWdlJywnJywkdGhpcy0+TGFuZygnaGVscF9tb2R1bGVfbWVzc2FnZScpKTsKICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ21vZHVsZV9tZXNzYWdlJyxDTEVBTl9TVFJJTkcpOwoKICAgLy8gZGVzY3JpcHRpb24gbXVzdCBiZSBhIHN0cmluZwogICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdkZXNjcmlwdGlvbicsJycsJHRoaXMtPkxhbmcoJ2hlbHBfZGVzY3JpcHRpb24nKSk7CiAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdkZXNjcmlwdGlvbicsQ0xFQU5fU1RSSU5HKTsKCiAgIC8vIGV4cGxhbmF0aW9uIG11c3QgYmUgYSBzdHJpbmcKICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignZXhwbGFuYXRpb24nLCcnLCR0aGlzLT5MYW5nKCdoZWxwX2V4cGxhbmF0aW9uJykpOwogICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZXhwbGFuYXRpb24nLENMRUFOX1NUUklORyk7CgogICAKICAgICogNC4gRXZlbnQgSGFuZGxpbmcKICAgICoKICAgCiAgICBUeXBpY2FsIGV4YW1wbGU6IHNwZWNpZnkgdGhlIG9yaWdpbmF0b3IsIHRoZSBldmVudCBuYW1lLCBhbmQgd2hldGhlciBvciBub3QKICAgIHRoZSBldmVudCBpcyByZW1vdmFibGUgKHVzZWQgZm9yIG9uZS10aW1lIGV2ZW50cykKCiAgICAkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCAnQ29yZScsICdDb250ZW50UG9zdFJlbmRlcicsIHRydWUgKTsKICAKICB9CgogKi8gICAKICBmdW5jdGlvbiBHZXRFdmVudERlc2NyaXB0aW9uICggJGV2ZW50bmFtZSApCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdldmVudF9pbmZvXycuJGV2ZW50bmFtZSApOwogIH0KICAgICAKICBmdW5jdGlvbiBHZXRFdmVudEhlbHAgKCAkZXZlbnRuYW1lICkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2V2ZW50X2hlbHBfJy4kZXZlbnRuYW1lICk7CiAgfQovKgogICAgZnVuY3Rpb24gRG9FdmVudCggJG9yaWdpbmF0b3IsICRldmVudG5hbWUsICYkcGFyYW1zICkKCXsKCWlmICgkb3JpZ2luYXRvciA9PSAnQ29yZScgJiYgJGV2ZW50bmFtZSA9PSAnQ29udGVudFBvc3RSZW5kZXInKQoJCXsKCQkvLyBzdHVwaWQgZXhhbXBsZSAtLSBsb3dlcmNhc2VzIGVudGlyZSBvdXRwdXQKCQkkcGFyYW1zWydjb250ZW50J10gPSBzdHJ0b2xvd2VyKCRwYXJhbXNbJ2NvbnRlbnQnXSk7CgkJfQoJfQogICAqLwoKICBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKSB7IHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsgfQogIGZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnKTsgfQogIGZ1bmN0aW9uIFVuaW5zdGFsbFByZU1lc3NhZ2UoKSB7IHJldHVybiAkdGhpcy0+TGFuZygncmVhbGx5X3VuaW5zdGFsbCcpOyB9CiAgCiAgCiAgZnVuY3Rpb24gX1NldFN0YXR1cygkb2lkLCAkc3RhdHVzKSB7CiAgICAvLy4uLgogIH0KCiAKCmZ1bmN0aW9uIGRyb3Bkb3duICgkY29tcGV0aXRpb24pewoJJGRiICA9IGNtc21zKCktPkdldERiKCk7CiRxdWVyeSA9IlNFTEVDVCBqb3VldXJzIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9waW5nX2NvbXBldGl0aW9ucyBXSEVSRSBjb2RlX2NvbXBldCA9ID8iOwokZGJyZXRvdXIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkY29tcGV0aXRpb24pKTsKaWYgKCRkYnJldG91ciAmJiAkZGJyZXRvdXItPlJlY29yZENvdW50KCkgPiAwKQogIHsKICAgIHdoaWxlICgkcm93PSAkZGJyZXRvdXItPkZldGNoUm93KCkpCiAgICAgIHsKCSRqb3VldXJzID0gJHJvd1snam91ZXVycyddOwoJcmV0dXJuICRqb3VldXJzOwoJfQoKfQp9CgpmdW5jdGlvbiByYW5kb20oJGNhcikgewokc3RyaW5nID0gIiI7CiRjaGFpbmUgPSAiYWJjZGVmZ2hpamtsbW5wcXJzdHV2d3h5IjsKc3JhbmQoKGRvdWJsZSltaWNyb3RpbWUoKSoxMDAwMDAwKTsKZm9yKCRpPTA7ICRpPCRjYXI7ICRpKyspIHsKJHN0cmluZyAuPSAkY2hhaW5lW3JhbmQoKSVzdHJsZW4oJGNoYWluZSldOwp9CnJldHVybiAkc3RyaW5nOwp9CgovKgpmdW5jdGlvbiBjb2VmZiAoJHR5cGVDb21wZXRpdGlvbikgewoJJGRiICA9IGNtc21zKCktPkdldERiKCk7CiRxdWVyeSA9IlNFTEVDVCBjb2VmZmljaWVudCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfcGluZ19jb21wZXRpdGlvbnMgV0hFUkUgY29kZV9jb21wZXQgPSA/IjsKJGRicmV0b3VyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHR5cGVDb21wZXRpdGlvbikpOwppZiAoJGRicmV0b3VyICYmICRkYnJldG91ci0+UmVjb3JkQ291bnQoKSA+IDApCiAgewogICAgd2hpbGUgKCRyb3c9ICRkYnJldG91ci0+RmV0Y2hSb3coKSkKICAgICAgewoJJGNvZWZmID0gJHJvd1snY29lZmZpY2llbnQnXTsKCXJldHVybiAkY29lZmY7Cgl9CgogIH0KfQoqLwpmdW5jdGlvbiBWZXJpZmllckVtYWlsKCRtb25lbWFpbCl7CiAgaWYgKHByZWdfbWF0Y2goIiNeW2EtejAtOS5fLV0rQFthLXowLTkuXy1dezIsfVwuW2Etel17Miw0fSQjIiwgJG1vbmVtYWlsKSkKICAgIHsgcmV0dXJuIHRydWU7fQp9CgpmdW5jdGlvbiBlbmNyeXB0SXQoICRxICkgewogICAgJGNyeXB0S2V5ICA9ICdxSkIwckd0SW41VUIxeEcwM2VmeUNwJzsKICAgICRxRW5jb2RlZCAgICAgID0gYmFzZTY0X2VuY29kZSggbWNyeXB0X2VuY3J5cHQoIE1DUllQVF9SSUpOREFFTF8yNTYsIG1kNSggJGNyeXB0S2V5ICksICRxLCBNQ1JZUFRfTU9ERV9DQkMsIG1kNSggbWQ1KCAkY3J5cHRLZXkgKSApICkgKTsKICAgIHJldHVybiggJHFFbmNvZGVkICk7Cn0KCmZ1bmN0aW9uIGRlY3J5cHRJdCggJHEgKSB7CiAgICAkY3J5cHRLZXkgID0gJ3FKQjByR3RJbjVVQjF4RzAzZWZ5Q3AnOwogICAgJHFEZWNvZGVkICAgICAgPSBydHJpbSggbWNyeXB0X2RlY3J5cHQoIE1DUllQVF9SSUpOREFFTF8yNTYsIG1kNSggJGNyeXB0S2V5ICksIGJhc2U2NF9kZWNvZGUoICRxICksIE1DUllQVF9NT0RFX0NCQywgbWQ1KCBtZDUoICRjcnlwdEtleSApICkgKSwgIlwwIik7CiAgICByZXR1cm4oICRxRGVjb2RlZCApOwp9CgoKCi8qCiAgZnVuY3Rpb24gRG9BY3Rpb24oJGFjdGlvbiwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQ9LTEpCiAgewogICAgc3dpdGNoICgkYWN0aW9uKSB7CiAgICBjYXNlICdkZWZhdWx0JzoKICAgICAgewovLwlyZXF1aXJlX29uY2UoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5kaXNwbGF5dGVhbXMucGhwJyk7CgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3RlYW1zY29yZXMudHBsJyk7Ly8gdGhpcyBpcyB0aGUgcGx1Zy1pbiBzaWRlLCBpLmUuLCBub24tQWRtaW4KCS8vJHRoaXMtPkRpc3BsYXlNb2R1bGVPdXRwdXQoJGFjdGlvbiwgJGlkLCAkcGFyYW1zKTsKCWJyZWFrOwogICAgICB9CiAgICBjYXNlICd0ZWFtc190YWInOgoJewoJcmVxdWlyZV9vbmNlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24uZGlzcGxheXRlYW1zLnBocCcpOwoJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCd0ZWFtc2NvcmVzLnRwbCcpOwoJfQoJYnJlYWs7CiAgICBjYXNlICdsaXN0JzoKICAgICAgewoJLy8gb25seSBsZXQgcGVvcGxlIHNhdmUgbW9kdWxlIHByZWZlcmVuY2VzIGlmIHRoZXkgaGF2ZSBwZXJtaXNzaW9uCgkKCWlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgQ2FsY3VsVHJhbmNoZScpKQoJICB7CgkgICAgCWVjaG8gJ0Nvb2whJzsvLyB0aGlzIGlzIHRoZSBwbHVnLWluIHNpZGUsIGkuZS4sIG5vbi1BZG1pbgoJCSR0aGlzLT5EaXNwbGF5TW9kdWxlT3V0cHV0KCRhY3Rpb24sICRpZCwgJHBhcmFtcyk7CgkJYnJlYWs7CgkgIH0KCWJyZWFrOwogICAgICB9CiAgICB9CiAgfQogCiovCgpmdW5jdGlvbiBkYXRldmVyc2ZyICgkZGF0ZSl7CSAgIAoJJGRhdGVhcnIgPSBleHBsb2RlKCcvJywgJGRhdGUpOwoJJGRhdGVmciA9ICRkYXRlYXJyWzJdIC4gJy0nIC4gJGRhdGVhcnJbMV0gLiAnLScgLiAkZGF0ZWFyclswXTsKCXJldHVybiAkZGF0ZWZyOwoJfQoKZnVuY3Rpb24gY29udl9kYXRlX3ZlcnNfbXlzcWwoJHN0cl9kYXRlKSB7CgkkY2hndCA9IGV4cGxvZGUoIi8iLCRzdHJfZGF0ZSk7CgkkZGF5ID0gc3Vic3RyKCRjaGd0LDAsMik7CgkkbW9udGggPSBzdWJzdHIoJGNoZ3QsMiwyKTsKCSR5ZWFyID0gc3Vic3RyKCRjaGd0LDQsMik7CgkkZGF0ZSA9ICIkeWVhciIuIi0iLiIkbW9udGgiLiItIi4iJGRheSI7CgoKCSAvLyAkcmV0b3VyPWRhdGUoInktbS1kIiwgbWt0aW1lKDAsIDAsIDAsICRtb250aCwgJGRheSwgJHllYXIpKTsKCSByZXR1cm4gJGRhdGU7Cn0KZnVuY3Rpb24gbW9pc19mcmFuY2FpcygkbW9pcyl7CgkkbW9udGhzID0gYXJyYXkoIkphbnZpZXIiLCAiRsOpdnJpZXIiLCAiTWFycyIsICJBdnJpbCIsICJNYWkiLCAiSnVpbiIsICJqdWlsbGV0IiwgIkFvdXQiLCAiU2VwdGVtYnJlIiwgIk9jdG9icmUiLCAiTm92ZW1icmUiLCAiZMOpY2VtYnJlIik7CgkkbW9udGhfdG9fZGlzcGxheSA9ICRtb2lzLTE7CgkkbW9udGhfZnJhbmNhaXMgPSAkbW9udGhzWyIkbW9udGhfdG9fZGlzcGxheSJdOwoJcmV0dXJuICRtb250aF9mcmFuY2FpczsKfQoKfSAvL2VuZCBjbGFzcwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAAAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAYAAAAAAAAAABAAAAgAAAAAEAAAEAAAAAAQAAAgAAAAABAAAEAAAAAAIAAAgAAAAYAAAAAAAAAAABAAAgAAAAAAEAAEAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></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+Cgk8L2Rpdj4KCTwvZmllbGRzZXQ+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fTwvcD4KCTwvZGl2Pgp7JGVuZGZvcm19Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/allsitmens.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRyZXR1cm5saW5rfTwvcD48L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRyZXRyaWV2ZWFsbHNpdG1lbnN9PC9wPjwvZGl2Pgp7aWYgaXNzZXQoJGZvcm1zdGFydCkgfQo8ZmllbGRzZXQ+CiAgPGxlZ2VuZD5GaWx0cmVzPC9sZWdlbmQ+CiAgeyRmb3Jtc3RhcnR9CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+TW9pczo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X21vbnRofSA8L3A+Cgk8cCBjbGFzcz0icGFnZXRleHQiPkpvdWV1ciA6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9wbGF5ZXJ9IDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXRmaWx0ZXJ9eyRoaWRkZW58ZGVmYXVsdDonJ308L3A+CiAgPC9kaXY+CiAgeyRmb3JtZW5kfQo8L2ZpZWxkc2V0Pgp7L2lmfQp7aWYgJGl0ZW1jb3VudCA+IDB9CnskZm9ybTJzdGFydH0KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KIDx0aGVhZD4KCTx0cj4KCQk8dGg+SUQ8L3RoPgoJCTx0aD5Nb2lzPC90aD4KCQk8dGg+Sm91ZXVyPC90aD4KCQk8dGg+UG9pbnRzPC90aD4KCQk8dGg+UmFuZyBuYXQ8L3RoPgoJCTx0aD5SYW5nIHJlZzwvdGg+CgkJPHRoPlJhbmcgZMOpcDwvdGg+CgkJPHRoPlByb2dyZXNzaW9uIG1lbnM8L3RoPgoJCTx0aCBjb2xzcGFuPSIyIj5BY3Rpb25zPC90aD4KCQk8dGg+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0ic2VsZWN0YWxsIiBuYW1lPSJzZWxlY3RhbGwiPjwvdGg+Cgk8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+Cgk8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KCTx0ZD57JGVudHJ5LT5tb2lzfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+am91ZXVyfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+cG9pbnRzfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+Y2xuYXR9PC90ZD4KCTx0ZD57JGVudHJ5LT5yYW5ncmVnfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+cmFuZ2RlcH08L3RkPgoJPHRkPnskZW50cnktPnByb2dtb2lzfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KCTx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+Cgk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfXNlbFtdIiB2YWx1ZT0ieyRlbnRyeS0+bGljZW5jZX0iIGNsYXNzPSJzZWxlY3QiPjwvdGQ+CiAgPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4KPCEtLSBTRUxFQ1QgRFJPUERPV04gLS0+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyI+Cjxici8+eyRhY3Rpb25kZW1hc3NlfXskc3VibWl0X21hc3NhY3Rpb259CiAgPC9kaXY+CnskZm9ybTJlbmR9CnsvaWZ9CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnsqJGNyZWF0ZWxpbmsqfTwvcD48L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/bar-charts.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCBjbGFzcz0iaW5jbHVkZSIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Im1vZHVsZXMvUGluZy9qcXBsb3QvanFwbG90LmJhclJlbmRlcmVyLm1pbi5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgY2xhc3M9ImluY2x1ZGUiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJtb2R1bGVzL1BpbmcvanFwbG90L2pxcGxvdC5jYXRlZ29yeUF4aXNSZW5kZXJlci5taW4uanMiPjwvc2NyaXB0Pgo8c2NyaXB0IGNsYXNzPSJpbmNsdWRlIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibW9kdWxlcy9QaW5nL2pxcGxvdC9qcXBsb3QucG9pbnRMYWJlbHMubWluLmpzIj48L3NjcmlwdD4KCgp7bGl0ZXJhbH0KPHNjcmlwdCBjbGFzcz0iY29kZSIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAgIHZhciBzMSA9IFsyMDAsIDYwMCwgNzAwLCAxMDAwXTsKICAgIHZhciBzMiA9IFs0NjAsIC0yMTAsIDY5MCwgODIwXTsKICAgIHZhciBzMyA9IFstMjYwLCAtNDQwLCAzMjAsIDIwMF07CiAgICAvLyBDYW4gc3BlY2lmeSBhIGN1c3RvbSB0aWNrIEFycmF5LgogICAgLy8gVGlja3Mgc2hvdWxkIG1hdGNoIHVwIG9uZSBmb3IgZWFjaCB5IHZhbHVlIChjYXRlZ29yeSkgaW4gdGhlIHNlcmllcy4KICAgIHZhciB0aWNrcyA9IFt7L2xpdGVyYWx9J3skbWFpfSd7bGl0ZXJhbH0sICdKdW5lJywgJ0p1bHknLCAnQXVndXN0J107CiAgICAKICAgIHZhciBwbG90MSA9ICQuanFwbG90KCdjaGFydDEnLCBbczEsIHMyLCBzM10sIHsKICAgICAgICAvLyBUaGUgInNlcmllc0RlZmF1bHRzIiBvcHRpb24gaXMgYW4gb3B0aW9ucyBvYmplY3QgdGhhdCB3aWxsCiAgICAgICAgLy8gYmUgYXBwbGllZCB0byBhbGwgc2VyaWVzIGluIHRoZSBjaGFydC4KICAgICAgICBzZXJpZXNEZWZhdWx0czp7CiAgICAgICAgICAgIHJlbmRlcmVyOiQuanFwbG90LkJhclJlbmRlcmVyLAogICAgICAgICAgICByZW5kZXJlck9wdGlvbnM6IHtmaWxsVG9aZXJvOiB0cnVlfQogICAgICAgIH0sCiAgICAgICAgLy8gQ3VzdG9tIGxhYmVscyBmb3IgdGhlIHNlcmllcyBhcmUgc3BlY2lmaWVkIHdpdGggdGhlICJsYWJlbCIKICAgICAgICAvLyBvcHRpb24gb24gdGhlIHNlcmllcyBvcHRpb24uICBIZXJlIGEgc2VyaWVzIG9wdGlvbiBvYmplY3QKICAgICAgICAvLyBpcyBzcGVjaWZpZWQgZm9yIGVhY2ggc2VyaWVzLgogICAgICAgIHNlcmllczpbCiAgICAgICAgICAgIHtsYWJlbDonaG90ZWwnfSwKICAgICAgICAgICAge2xhYmVsOidFdmVudCBSZWdyaXN0cmF0aW9uJ30sCiAgICAgICAgICAgIHtsYWJlbDonQWlyZmFyZSd9CiAgICAgICAgXSwKICAgICAgICAvLyBTaG93IHRoZSBsZWdlbmQgYW5kIHB1dCBpdCBvdXRzaWRlIHRoZSBncmlkLCBidXQgaW5zaWRlIHRoZQogICAgICAgIC8vIHBsb3QgY29udGFpbmVyLCBzaHJpbmtpbmcgdGhlIGdyaWQgdG8gYWNjb21vZGF0ZSB0aGUgbGVnZW5kLgogICAgICAgIC8vIEEgdmFsdWUgb2YgIm91dHNpZGUiIHdvdWxkIG5vdCBzaHJpbmsgdGhlIGdyaWQgYW5kIGFsbG93CiAgICAgICAgLy8gdGhlIGxlZ2VuZCB0byBvdmVyZmxvdyB0aGUgY29udGFpbmVyLgogICAgICAgIGxlZ2VuZDogewogICAgICAgICAgICBzaG93OiB0cnVlLAogICAgICAgICAgICBwbGFjZW1lbnQ6ICdvdXRzaWRlR3JpZCcKICAgICAgICB9LAogICAgICAgIGF4ZXM6IHsKICAgICAgICAgICAgLy8gVXNlIGEgY2F0ZWdvcnkgYXhpcyBvbiB0aGUgeCBheGlzIGFuZCB1c2Ugb3VyIGN1c3RvbSB0aWNrcy4KICAgICAgICAgICAgeGF4aXM6IHsKICAgICAgICAgICAgICAgIHJlbmRlcmVyOiAkLmpxcGxvdC5DYXRlZ29yeUF4aXNSZW5kZXJlciwKICAgICAgICAgICAgICAgIHRpY2tzOiB0aWNrcwogICAgICAgICAgICB9LAogICAgICAgICAgICAvLyBQYWQgdGhlIHkgYXhpcyBqdXN0IGEgbGl0dGxlIHNvIGJhcnMgY2FuIGdldCBjbG9zZSB0bywgYnV0CiAgICAgICAgICAgIC8vIG5vdCB0b3VjaCwgdGhlIGdyaWQgYm91bmRhcmllcy4gIDEuMiBpcyB0aGUgZGVmYXVsdCBwYWRkaW5nLgogICAgICAgICAgICB5YXhpczogewogICAgICAgICAgICAgICAgcGFkOiAxLjA1LAogICAgICAgICAgICAgICAgdGlja09wdGlvbnM6IHtmb3JtYXRTdHJpbmc6ICckJWQnfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfSk7Cn0pOwogIDwvc2NyaXB0Pgp7L2xpdGVyYWx9CiA8cCBjbGFzcz0idGV4dCBpbmNsdWRlIj4KeyRtYWl9IC0gQ2hhcnRzIG9uIHRoaXMgcGFnZSBtYXkgZGVwZW5kIG9uIHRoZSBmb2xsb3dpbmcgcGx1Z2luczoKPC9wPgoKPGRpdiBjbGFzcz0iY29kZSBwcmV0dHlwcmludCBpbmNsdWRlIj4KPHByZSBjbGFzcz0iaW5jbHVkZSBwcmV0dHlwcmludCBicnVzaDogaHRtbCBndXR0ZXI6IGZhbHNlIj48L3ByZT4KPC9kaXY+ICAgICAgICAKICAgIDxkaXYgaWQ9ImNoYXJ0MSIgc3R5bGU9IndpZHRoOjYwMHB4OyBoZWlnaHQ6MjUwcHg7Ij48L2Rpdj4KPGRpdiBjbGFzcz0iY29kZSBwcmV0dHlwcmludCI+CiAgICA8cHJlIGNsYXNzPSJjb2RlIHByZXR0eXByaW50IGJydXNoOiBqcyI+PC9wcmU+CjwvZGl2PgogICAgPGRpdiBpZD0iY2hhcnQyIiBzdHlsZT0id2lkdGg6NDAwcHg7IGhlaWdodDozMDBweDsiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJjb2RlIHByZXR0eXByaW50Ij4KICAgIDxwcmUgY2xhc3M9ImNvZGUgcHJldHR5cHJpbnQgYnJ1c2g6IGpzIj48L3ByZT4KPC9kaXY+CiAgICA8cCBjbGFzcz0idGV4dCI+eyRob3RlbH0gQ2xpY2sgb24gYSBiYXIgaW4gdGhlIHBsb3QgYmVsb3cgdG8gdXBkYXRlIHRoZSB0ZXh0IGJveC48L3A+CiAgICA8cCBjbGFzcz0idGV4dCI+WW91IENsaWNrZWQ6IAogICAgPHNwYW4gaWQ9ImluZm8zIj5Ob3RoaW5nIHlldC48L3NwYW4+CiAgICA8L3A+CiAgICA8ZGl2IGlkPSJjaGFydDMiIHN0eWxlPSJ3aWR0aDo0MDBweDsgaGVpZ2h0OjMwMHB4OyI+PC9kaXY+CjxkaXYgY2xhc3M9ImNvZGUgcHJldHR5cHJpbnQiPgogICAgPHByZSBjbGFzcz0iY29kZSBwcmV0dHlwcmludCBicnVzaDoganMiPjwvcHJlPgo8L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/bar-charts2.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRmb3Jtc3RhcnQpIH0KPGZpZWxkc2V0PgogIDxsZWdlbmQ+RmlsdHJlczwvbGVnZW5kPgogIHskZm9ybXN0YXJ0fQogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9wbGF5ZXJ9IDwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0ZmlsdGVyfXskaGlkZGVufGRlZmF1bHQ6Jyd9PC9wPgogIDwvZGl2PgogIHskZm9ybWVuZH0KPC9maWVsZHNldD4Key9pZn08cD5MZXMgcsOpc3VsdGF0cyBkZSB7JHBsYXllcn08L3A+Cjx1bD48bGk+eyRsaWVuc2Fpc29uMn08L2xpPjxsaT57JGxpZW5zYWlzb259PC9saT48L3VsPgo8ZGl2IGlkPSJjaGFydDEiIHN0eWxlPSJ3aWR0aDo2MDBweDsgaGVpZ2h0OjMwMHB4Ij48L2Rpdj4KCiAgICA8cD5UaGlzIHBsb3QgYW5pbWF0ZXMgdGhlIGJhcnMgYm90dG9tIHRvIHRvcCBhbmQgdGhlIGxpbmUgc2VyaWVzIGxlZnQgdG8gcmlnaHQgdXBvbiBpbml0aWFsIHBhZ2UgbG9hZC4gIFNpbmNlIHRoZSA8Y29kZT5hbmltYXRlUmVwbG90OiB0cnVlPC9jb2RlPiBvcHRpb24gaXMgc2V0LCB0aGUgYmFycyBhbmQgbGluZSB3aWxsIGFsc28gYW5pbWF0ZSB1cG9uIGNhbGxzIHRvIDxjb2RlPnBsb3QxLnJlcGxvdCggeyByZXNldEF4ZXM6IHRydWUgfSApPC9jb2RlPi48L3A+CgogICAgPHByZSBjbGFzcz0iY29kZSBicnVzaDpqcyI+PC9wcmU+Cgp7bGl0ZXJhbH0KPHNjcmlwdCBjbGFzcz0iY29kZSIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCiAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIHMxID0gW3svbGl0ZXJhbH0Ke2ZvcmVhY2ggJGl0ZW1zICBhcyAkZW50cnl9CgpbeyRlbnRyeS0+bW9pc30seyRlbnRyeS0+cG9pbnRzfV17aWYgJGVudHJ5QGxhc3R9IHtlbHNlfSwgey9pZn0Key9mb3JlYWNofXtsaXRlcmFsfV07Ci8vWzIwMDIsIDExMjAwMF0sIFsyMDAzLCAxMjIwMDBdLCBbMjAwNCwgMTA0MDAwXSwgWzIwMDUsIDk5MDAwXSwgWzIwMDYsIDEyMTAwMF0sIAogICAgIC8vICAgWzIwMDcsIDE0ODAwMF0sIFsyMDA4LCAxMTQwMDBdLCBbMjAwOSwgMTMzMDAwXSwgWzIwMTAsIDE2MTAwMF0sIFsyMDExLCAxNzMwMDBdXTsKICAgICAgICB2YXIgczIgPSBbey9saXRlcmFsfXtmb3JlYWNoICRpdGVtcyAgYXMgJGVudHJ5fQoKCQlbeyRlbnRyeS0+bW9pc30seyRlbnRyeS0+dmljdG9pcmVzfV17aWYgJGVudHJ5QGxhc3R9IHtlbHNlfSwgey9pZn0KCQl7L2ZvcmVhY2h9e2xpdGVyYWx9XTsKCQkvL1syMDAyLCAxMDIwMF0sIFsyMDAzLCAxMDgwMF0sIFsyMDA0LCAxMTIwMF0sIFsyMDA1LCAxMTgwMF0sIFsyMDA2LCAxMjQwMF0sIAogICAgIC8vICAgWzIwMDcsIDEyODAwXSwgWzIwMDgsIDEzMjAwXSwgWzIwMDksIDEyNjAwXSwgWzIwMTAsIDEzMTAwXV07CiAgICAgdmFyIHRpY2tzID0gWyJKYW4iLCAiRsOpdiIsICJNYXIiLCAiQXZyIiwgIk1haSIsICJKdWluIiwgImp1aWwiLCAiQW91IiwgIlNlcCIsICJPY3QiLCAiTm92IiwgImTDqWMiXTsKICAgICAgICBwbG90MSA9ICQuanFwbG90KCJjaGFydDEiLCBbczJdLCB7CiAgICAgICAgICAgIC8vIFR1cm5zIG9uIGFuaW1hdGlubyBmb3IgYWxsIHNlcmllcyBpbiB0aGlzIHBsb3QuCiAgICAgICAgICAgIGFuaW1hdGU6IHRydWUsCiAgICAgICAgICAgIC8vIFdpbGwgYW5pbWF0ZSBwbG90IG9uIGNhbGxzIHRvIHBsb3QxLnJlcGxvdCh7cmVzZXRBeGVzOnRydWV9KQogICAgICAgICAgICBhbmltYXRlUmVwbG90OiB0cnVlLAogICAgICAgICAgICBjdXJzb3I6IHsKICAgICAgICAgICAgICAgIHNob3c6IHRydWUsCiAgICAgICAgICAgICAgICB6b29tOiB0cnVlLAogICAgICAgICAgICAgICAgbG9vc2Vab29tOiB0cnVlLAogICAgICAgICAgICAgICAgc2hvd1Rvb2x0aXA6IGZhbHNlCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHNlcmllczpbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgcG9pbnRMYWJlbHM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2hvdzogdHJ1ZQogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgcmVuZGVyZXI6ICQuanFwbG90LkJhclJlbmRlcmVyLAogICAgICAgICAgICAgICAgICAgIHNob3dIaWdobGlnaHQ6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIHlheGlzOiAneTJheGlzJywKICAgICAgICAgICAgICAgICAgICByZW5kZXJlck9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3BlZWQgdXAgdGhlIGFuaW1hdGlvbiBhIGxpdHRsZSBiaXQuCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLiAgCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgZm9yIGJhciBzZXJpZXMgaXMgMzAwMC4gIAogICAgICAgICAgICAgICAgICAgICAgICBhbmltYXRpb246IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWVkOiAyNTAwCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIGJhcldpZHRoOiAxNSwKICAgICAgICAgICAgICAgICAgICAgICAgYmFyUGFkZGluZzogLTE1LAogICAgICAgICAgICAgICAgICAgICAgICBiYXJNYXJnaW46IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hsaWdodE1vdXNlT3ZlcjogZmFsc2UKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LCAKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICByZW5kZXJlck9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlZWQgdXAgdGhlIGFuaW1hdGlvbiBhIGxpdHRsZSBiaXQuCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzLgogICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWZhdWx0IGZvciBhIGxpbmUgc2VyaWVzIGlzIDI1MDAuCiAgICAgICAgICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlZWQ6IDIwMDAKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgYXhlc0RlZmF1bHRzOiB7CiAgICAgICAgICAgICAgICBwYWQ6IDAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgYXhlczogewogICAgICAgICAgICAgICAgLy8gVGhlc2Ugb3B0aW9ucyB3aWxsIHNldCB1cCB0aGUgeCBheGlzIGxpa2UgYSBjYXRlZ29yeSBheGlzLgogICAgICAgICAgICAgICAgeGF4aXM6IHsKICAgICAgICAgICAgICAgICAgICB0aWNrSW50ZXJ2YWw6IDEsCiAgICAgICAgICAgICAgICAgICAgZHJhd01ham9yR3JpZGxpbmVzOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICBkcmF3TWlub3JHcmlkbGluZXM6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgZHJhd01ham9yVGlja01hcmtzOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICByZW5kZXJlck9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICB0aWNrSW5zZXQ6IDAuNSwKICAgICAgICAgICAgICAgICAgICBtaW5vclRpY2tzOiAxCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgeWF4aXM6IHsKICAgICAgICAgICAgICAgICAgICB0aWNrT3B0aW9uczogewogICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRTdHJpbmc6ICJQdHMlJ2QiCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICByZW5kZXJlck9wdGlvbnM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2VUaWNrQXQwOiB0cnVlCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHkyYXhpczogewogICAgICAgICAgICAgICAgICAgIHRpY2tPcHRpb25zOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdFN0cmluZzogIlZpYyUnZCIKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyT3B0aW9uczogewogICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGlnbiB0aGUgdGlja3Mgb24gdGhlIHkyIGF4aXMgd2l0aCB0aGUgeSBheGlzLgogICAgICAgICAgICAgICAgICAgICAgICBhbGlnblRpY2tzOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICBmb3JjZVRpY2tBdDA6IHRydWUKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGhpZ2hsaWdodGVyOiB7CiAgICAgICAgICAgICAgICBzaG93OiB0cnVlLCAKICAgICAgICAgICAgICAgIHNob3dMYWJlbDogdHJ1ZSwgCiAgICAgICAgICAgICAgICB0b29sdGlwQXhlczogJ3knLAogICAgICAgICAgICAgICAgc2l6ZUFkanVzdDogNy41ICwgdG9vbHRpcExvY2F0aW9uIDogJ25lJwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgIAogICAgfSk7CgoKPC9zY3JpcHQ+Cgp7L2xpdGVyYWx9CjwhLS0gRG9uJ3QgdG91Y2ggdGhpcyEgLS0+CgoKICAgIDxzY3JpcHQgY2xhc3M9ImluY2x1ZGUiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSIuLi9qcXVlcnkuanFwbG90Lm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJtb2R1bGVzL1BpbmcvanFwbG90L3N5bnRheGhpZ2hsaWdodGVyL3NjcmlwdHMvc2hDb3JlLm1pbi5qcyI+PC9zY3JpcHQ+CiAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJtb2R1bGVzL1BpbmcvanFwbG90L3N5bnRheGhpZ2hsaWdodGVyL3NjcmlwdHMvc2hCcnVzaEpTY3JpcHQubWluLmpzIj48L3NjcmlwdD4KICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Im1vZHVsZXMvUGluZy9qcXBsb3Qvc3ludGF4aGlnaGxpZ2h0ZXIvc2NyaXB0cy9zaEJydXNoWG1sLm1pbi5qcyI+PC9zY3JpcHQ+CjwhLS0gQWRkaXRpb25hbCBwbHVnaW5zIGdvIGhlcmUgLS0+CgogIDxzY3JpcHQgY2xhc3M9ImluY2x1ZGUiIHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJtb2R1bGVzL1BpbmcvanFwbG90L3BsdWdpbnMvanFwbG90LmJhclJlbmRlcmVyLm1pbi5qcyI+PC9zY3JpcHQ+CiAgPHNjcmlwdCBjbGFzcz0iaW5jbHVkZSIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Im1vZHVsZXMvUGluZy9qcXBsb3QvcGx1Z2lucy9qcXBsb3QuaGlnaGxpZ2h0ZXIubWluLmpzIj48L3NjcmlwdD4KICA8c2NyaXB0IGNsYXNzPSJpbmNsdWRlIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibW9kdWxlcy9QaW5nL2pxcGxvdC9wbHVnaW5zL2pxcGxvdC5jdXJzb3IubWluLmpzIj48L3NjcmlwdD4gCiAgPHNjcmlwdCBjbGFzcz0iaW5jbHVkZSIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Im1vZHVsZXMvUGluZy9qcXBsb3QvcGx1Z2lucy9qcXBsb3QucG9pbnRMYWJlbHMubWluLmpzIj48L3NjcmlwdD4KCjwhLS0gRW5kIGFkZGl0aW9uYWwgcGx1Z2lucyAtLT4KCg==]]></data>
	</file>
	<file>
	  <filename>/templates/confirm_envoi_messages.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRtZXNzYWdlfQ==]]></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/display_users.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRtZXNzYWdlKX0KICB7aWYgJGVycm9yICE9ICcnfQogICAgPHA+PGZvbnQgY29sb3I9InJlZCI+eyRtZXNzYWdlfTwvZm9udD48L3A+CiAge2Vsc2V9CiAgICA8cD57JG1lc3NhZ2V9PC9wPgogIHsvaWZ9CnsvaWZ9CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskdXNlcmNvdW50fSBmYW1pbGxlKHMpIHRyb3V2w6llKHMpPC9wPjwvZGl2Pgp7aWYgJHVzZXJjb3VudCA+IDB9Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiA8dGhlYWQ+CiAgPHRyPgkKICA8dGg+RmFtaWxsZTwvdGg+CiAgPHRoPkFkcmVzc2U8L3RoPgogIDx0aD5Db21tdW5lPC90aD4KICA8dGg+VHJhbmNoZTwvdGg+CiAgPCEtLTx0aD5jb2RlIHBvc3RhbDwvdGg+CiAgPHRoPkNvbW11bmU8L3RoPgogIDx0aD5UcmFuY2hlOzwvdGg+LS0+CiAgPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JHJlc3VsdGF0cyBpdGVtPWVudHJ5fQogIDx0cj4KICAgIDx0ZD57JGVudHJ5Lm5vbV9jb21wbGV0fTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS5hZHJlc3NlfTwvdGQ+Cgk8dGQ+eyRlbnRyeS5jb21tdW5lfTwvdGQ+Cgk8dGQ+eyRlbnRyeS50cmFuY2hlfTwvdGQ+CiAgICA8IS0tPHRkPnskZW50cnktPmNvZGVwb3N0YWx9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5jb21tdW5lfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+dHJhbmNoZX08L3RkPi0tPgogIDwvdHI+CnsvZm9yZWFjaH0KIDwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9Cgo=]]></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+eyRzdWJtaXR9eyRjYW5jZWx9PC9wPgogIDwvZGl2Pgp7JGZvcm1lbmR9CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/editteam.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzY3JpcHQ+CiAkKGZ1bmN0aW9uKCkgewogICAkKCAiI20xX2RhdGVfY29tcGV0IiApLmRhdGVwaWNrZXIoeyBkYXRlRm9ybWF0OiAieXktbW0tZGQiIH0pOwogfSk7CiA8L3NjcmlwdD4Key9saXRlcmFsfQo8bGFiZWw+eyR0ZXh0fTwvbGFiZWw+CntpZiAkZXJyb3J9Cjxmb250IGNvbG9yPSJyZWQiPgp7L2lmfQp7aWYgJG1lc3NhZ2UgbmUgIiJ9CjxzdHJvbmc+eyRtZXNzYWdlfTwvc3Ryb25nPgp7L2lmfQp7aWYgJGVycm9yfQo8L2ZvbnQ+CnsvaWZ9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CnskZm9ybXN0YXJ0fQp7JHJlY29yZF9pZH0KICAKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5TYWlzb246PC9wPgogICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHNhaXNvbn08L3A+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPlBoYXNlOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcGhhc2V9PC9wPgogIDwvZGl2PiAKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+RXF1aXBlOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskbGliZXF1aXBlfTwvcD4KICA8L2Rpdj4KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5EaXZpc2lvbjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskbGliZGl2aXNpb259PC9wPgogIDwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Eb25uZXogdW4gbm9tIGNvdXJ0IChleCBOMSBBKTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGZyaWVuZGx5bmFtZX08L3A+CiAgPC9kaXY+CiAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9eyRjYW5jZWx9eyRiYWNrfTwvcD4KICA8L2Rpdj4KeyRmb3JtZW5kfQo8L2Rpdj4K]]></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+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPkFjdGlmOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskYWN0aWZ9PC9wPgogIDwvZGl2PgogPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Tm9tOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskbm9tfTwvcD4KICA8L2Rpdj4gCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPlByw6lub206PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRwcmVub219PC9wPgogIDwvZGl2Pgp7aWYgJGxpY2VuY2UgIT0iIn0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5MaWNlbmNlPC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRsaWNlbmNlfTwvcD4KICA8L2Rpdj4gCntlbHNlfQp7JGxpY2VuY2V9CnsvaWZ9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgIDxwIGNsYXNzPSJwYWdldGV4dCI+RGF0ZSBOYWlzc2FuY2U6PC9wPgogICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGJpcnRoZGF5fTwvcD4KIDwvZGl2PiAgCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgIDxwIGNsYXNzPSJwYWdldGV4dCI+U2V4ZTo8L3A+CiAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc2V4ZX08L3A+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPmFkcmVzc2U6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRhZHJlc3NlfTwvcD4KICA8L2Rpdj4gCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPlZpbGxlOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdmlsbGV9PC9wPgogIDwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Db2RlIHBvc3RhbDo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGNvZGVwb3N0YWx9PC9wPgogIDwvZGl2PgogPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9eyRjYW5jZWx9PC9wPgogIDwvZGl2Pgp7JGZvcm1lbmR9CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/error.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfZXJyb3J9PC9oMz4KPHA+eyRhZG1pbl9uYXZ9PC9wPgp7aWYgJG1lc3NhZ2UhPScnfTxwPnskbWVzc2FnZX08L3A+ey9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/fepoulesRencontres.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyoKCXtpZiBpc3NldCgkZm9ybXN0YXJ0KSB9CjxmaWVsZHNldD4KICA8bGVnZW5kPkZpbHRyZXM8L2xlZ2VuZD4KICB7JGZvcm1zdGFydH0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5UeXBlIENvbXDDqXRpdGlvbjo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NvbXBldH0gPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90b3VyfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RvdXJ9IDwvcD4KCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZXF1aXBlfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2VxdWlwZX0gPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdGZpbHRlcn17JGhpZGRlbnxkZWZhdWx0OicnfTwvcD4KICA8L2Rpdj4KICB7JGZvcm1lbmR9CjwvZmllbGRzZXQ+CnsvaWZ9Cip9CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskaXRlbWNvdW50fSZuYnNwO3skaXRlbXNmb3VuZH08L3A+PC9kaXY+CnskbGllbmoxfSAtIHskbGllbmoyfQp7aWYgJGl0ZW1jb3VudCA+IDB9Cgo8dGFibGUgY2xhc3M9InBhZ2V0YWJsZSI+CiA8dGhlYWQ+CiAgPHRyPgkKICA8dGggY29sc3Bhbj0nNCc+UsOpc3VsdGF0czwvdGg+CiAgPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgPHRkIGNsYXNzPSJlcXVpcGUiPnskZW50cnktPmVxdWF9PC90ZD4KICAgIDx0ZCBjbGFzcz0ic2NvcmUiPnskZW50cnktPnNjb3JlYX08L3RkPgogICAgPHRkPiAtIDwvdGQ+Cgk8dGQgY2xhc3M9InNjb3JlIj57JGVudHJ5LT5zY29yZWJ9PC90ZD4KCTx0ZCBjbGFzcz0iZXF1aXBlIj57JGVudHJ5LT5lcXVifTwvdGQ+CiAgICB7Kjx0ZD57JGVudHJ5LT5kZXRhaWxzfTwvdGQ+Kn0KICAgIHsqPHRkPnskZW50cnktPmRlbGV0ZWxpbmt9PC90ZD4qfQogIDwvdHI+CnsvZm9yZWFjaH0KIDwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskY3JlYXRlbGlua308L3A+PC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/fe_allsitmens.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskcmV0dXJubGlua308L3A+PC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskaXRlbWNvdW50fSZuYnNwO3skaXRlbXNmb3VuZH08L3A+PC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskcmV0cmlldmVhbGxzaXRtZW5zfXwgeyRjcmVhdGVsaW5rfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgoJPHRoZWFkPgoJCTx0aD5Kb3VldXI8L3RoPgoJCTx0aD5NYWk8L3RoPgoJCTx0aD5KdWluPC90aD4KCTwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgPHRkPnskZW50cnktPmpvdWV1cn08L3RkPgogICAgPHRkPnskZW50cnktPm1haX08L3RkPgoJPHRkPnskZW50cnktPmp1aW59PC90ZD4KICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgp7ZWxzZX0KPHA+TGVzIHNpdHVhdGlvbnMgbWVuc3VlbGxlcyBzb250IMOgIGpvdXI8L3A+CnsvaWZ9CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskY3JlYXRlbGlua308L3A+PC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/fe_create_sheet1.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGxhYmVsPnskdGV4dH08L2xhYmVsPgp7aWYgJGVycm9yfQo8Zm9udCBjb2xvcj0icmVkIj4Key9pZn0Ke2lmICRtZXNzYWdlIG5lICIifQo8c3Ryb25nPnskbWVzc2FnZX08L3N0cm9uZz4Key9pZn0Ke2lmICRlcnJvcn0KPC9mb250Pgp7L2lmfQp7bGl0ZXJhbH0KPHNjcmlwdD4KICQoZnVuY3Rpb24oKSB7CiAgICQoICIjY250bnQwMWRhdGVfY29tcGV0IiApLmRhdGVwaWNrZXIoeyBkYXRlRm9ybWF0OiAieXktbW0tZGQiIH0pOwogfSk7CiA8L3NjcmlwdD4Key9saXRlcmFsfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJeyRmb3Jtc3RhcnR9Cgl7JGZvcm1oaWRkZW59Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8dGFibGU+CgkJPHRyPjx0ZD5UeXBlIGNvbXDDqXRpdGlvbjwvdGQ+PHRkPnskaW5wdXRfdHlwZUNvbXBldGl0aW9ufTwvdGQ+PC90cj4KCQk8dHI+PHRkPkRhdGUgZGUgbGEgY29tcMOpdGl0aW9uPC90ZD48dGQ+eyRkYXRlX2NvbXBldH08L3RkPjwvdHI+Cgk8dHI+PHRkPkFkdmVyc2FpcmVzPC90ZD48dGQ+eyRhZHZlcnNhaXJlc308L3RkPjwvdHI+Cgk8dHI+PHRkPlRvdXI8L3RkPjx0ZD57JHRvdXJ9PC90ZD48L3RyPgoJPHRyPjx0ZD5FcXVpcGU8L3RkPjx0ZD57JGVxdWlwZX08L3RkPjwvdHI+Cgk8dHI+PHRkPkxvY2F1eCAoQSBvdSBCKTwvdGQ+PHRkPnskbG9jYXV4fTwvdGQ+PC90cj4KPC90YWJsZT4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8cD57JHN1Ym1pdH0geyRjYW5jZWx9IHskYmFja308L3A+CjwvZGl2Pgp7JGZvcm1lbmR9CjwvZGl2Pg==]]></data>
	</file>
	<file>
	  <filename>/templates/fe_globaluserresults.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eypkZWJ1Zyp9CnsqCntpZiBpc3NldCgkbWVzc2FnZSl9CiAge2lmICRlcnJvciAhPSAnJ30KICAgIDxwPjxmb250IGNvbG9yPSJyZWQiPnskbWVzc2FnZX08L2ZvbnQ+PC9wPgogIHtlbHNlfQogICAgPHA+eyRtZXNzYWdlfTwvcD4KICB7L2lmfQp7L2lmfQoqfQoKCTxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskcmV0dXJubGlua308L3A+PC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskaXRlbWNvdW50fSZuYnNwO3skaXRlbXNmb3VuZH08L3A+PC9kaXY+CntpZiAkaXRlbWNvdW50ID4gMH0KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KIDx0aGVhZD4KCTx0cj4JCgkJPHRoPkpvdWV1cjwvdGg+CgkJPHRoPlZpYzwvdGg+CgkJPHRoPlN1cjwvdGg+CgkJPHRoPlBvaW50czwvdGg+CiAgPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgPHRkPnskZW50cnktPmpvdWV1cn08L3RkPgkKICAgIDx0ZD57JGVudHJ5LT52aWN0b2lyZXN9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5zdXJ9PC90ZD4KCTx0ZD57JGVudHJ5LT50b3RhbH08L3RkPgoJPC90cj4KCTx0cj4KCQk8dGQ+eyRlbnRyeS0+dmljdG9pcmV9PC90ZD4KCQk8dGQ+eyRlbnRyeS0+ZGF0ZX08L3RkPgoJCTx0ZD57JGVudHJ5LT5lcHJldXZlfTwvdGQ+CiAgPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4KKFNvdXJjZSBTcGlkKQp7L2lmfQoKPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyokY3JlYXRlbGluayp9PC9wPjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/fe_maj_team_result.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CQp7aWYgJGVycm9yfQo8Zm9udCBjb2xvcj0icmVkIj4Key9pZn0Ke2lmICRtZXNzYWdlIG5lICIifQo8c3Ryb25nPnskbWVzc2FnZX08L3N0cm9uZz4Key9pZn0Ke2lmICRlcnJvcn0KPC9mb250Pgp7L2lmfQo=]]></data>
	</file>
	<file>
	  <filename>/templates/fe_status.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwPnskbWVzc2FnZX0gfCB7JGNyZWF0ZWxpbmt9PC9wPgoJCjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/fe_teamscores.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRmb3Jtc3RhcnQpIH0KPGZpZWxkc2V0PgogIDxsZWdlbmQ+RmlsdHJlczwvbGVnZW5kPgogIHskZm9ybXN0YXJ0fQogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPlR5cGUgQ29tcMOpdGl0aW9uOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfY29tcGV0fSA8L3A+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X3RvdXJ9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdG91cn0gPC9wPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF9lcXVpcGV9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZXF1aXBlfSA8L3A+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0ZmlsdGVyfXskaGlkZGVufGRlZmF1bHQ6Jyd9PC9wPgogIDwvZGl2PgogIHskZm9ybWVuZH0KPC9maWVsZHNldD4Key9pZn0KCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskcmVzdWx0c2NvdW50fSByw6lzdWx0YXQocykgdHJvdXbDqShzKSZuYnNwO3skaXRlbXNmb3VuZH08L3A+PC9kaXY+CntpZiAkcmVzdWx0c2NvdW50ID4gMH0KCjx0YWJsZSBib3JkZXI9IjEiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiA8dGhlYWQ+CiAgPHRyPgkKICA8dGg+eyRpZH08L3RoPgogIDx0aD57JGVxdWlwZX08L3RoPgogIDx0aD57JHRvdXJ9PC90aD4KICA8dGg+eyRzY29yZX08L3RoPgogIDx0aD57JGFkdmVyc2FpcmVzfTwvdGg+CiAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgogIDwvdHI+CiA8L3RoZWFkPgogPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRyZXN1bHRhdHMgaXRlbT1lbnRyeX0KICA8dHI+CiAgICA8dGQ+eyRlbnRyeS5pZH08L3RkPgogICAgPHRkPnskZW50cnkuZXF1aXBlfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS50b3VyfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS5zY29yZV9lcXVpcGV9IMOgIHskZW50cnkuc2NvcmVfYWR2fTwvdGQ+Cgk8dGQ+eyRlbnRyeS5hZHZlcnNhaXJlc308L3RkPgogICAgPHRkPnskZW50cnkuZWRpdGxpbmt9PC90ZD4KICAgIDx0ZD57JGRlbGV0ZWxpbmt9PC90ZD4KICA8L3RyPgp7L2ZvcmVhY2h9CiA8L3Rib2R5Pgo8L3RhYmxlPgp7ZWxzZX0KPGRpdiBjYWxzcz0icGFnZW9wdGlvbnMiPjxwPlBhcyBkZSByw6lzdWx0YXRzIGRpc3BvbmlibGVzPC9wPjwvZGl2Pgp7L2lmfQoKPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRjcmVhdGVsaW5rfTwvcD48L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/fe_userslist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2RlYnVnfQp7aWYgaXNzZXQoJG1lc3NhZ2UpfQogIHtpZiAkZXJyb3IgIT0gJyd9CiAgICA8cD48Zm9udCBjb2xvcj0icmVkIj57JG1lc3NhZ2V9PC9mb250PjwvcD4KICB7ZWxzZX0KICAgIDxwPnskbWVzc2FnZX08L3A+CiAgey9pZn0Key9pZn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRyZXR1cm5saW5rfTwvcD48L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4KeyppZiAkaXRlbWNvdW50ID4gMCp9Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiA8dGhlYWQ+CiAgPHRyPgkKICA8dGg+eyRpZH08L3RoPgogIDx0aD57JHRvdXJ9PC90aD4KICA8dGg+eyRlcXVpcGV9PC90aD4KICA8dGg+eyRqb3VldXJ9PC90aD4KICA8dGg+eyRhZHZlcnNhaXJlfTwvdGg+CiAgPHRoPnskdmljdG9pcmV9PC90aD4KICA8dGg+eyRwb2ludHN9PC90aD4KICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgogIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CiAgPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgPHRkPnskZW50cnktPmlkfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+dG91cn08L3RkPgogICAgPHRkPnskZW50cnktPmVxdWlwZX08L3RkPgogICAgPHRkPnskZW50cnktPmpvdWV1cn08L3RkPgoJPHRkPnskZW50cnktPmFkdmVyc2FpcmV9PC90ZD4KCTx0ZD57JGVudHJ5LT52aWNfZGVmfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+cG9pbnRzfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+aWRsaW5rfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+CiAgPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4KeyovaWYqfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGNyZWF0ZWxpbmt9PC9wPjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/globaluserresults.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRmb3Jtc3RhcnQpIH0KPGZpZWxkc2V0PgogIDxsZWdlbmQ+RmlsdHJlczwvbGVnZW5kPgogIHskZm9ybXN0YXJ0fQogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPlR5cGUgQ29tcMOpdGl0aW9uOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfY29tcGV0fSA8L3A+CiAgICA8IS0tPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90b3VyfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RvdXJ9IDwvcD4tLT4KCTxwIGNsYXNzPSJwYWdldGV4dCI+U2Fpc29uOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc2Fpc29ufSA8L3A+Cgk8cCBjbGFzcz0icGFnZXRleHQiPkpvdWV1ciA6PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9wbGF5ZXJ9IDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXRmaWx0ZXJ9eyRoaWRkZW58ZGVmYXVsdDonJ308L3A+CiAgPC9kaXY+CiAgeyRmb3JtZW5kfQo8L2ZpZWxkc2V0Pgp7L2lmfTxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskcmV0dXJubGlua308L3A+PC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskaXRlbWNvdW50fSZuYnNwO3skaXRlbXNmb3VuZH08L3A+PC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskcmV0cmlldmVfYWxsfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQp7JGZvcm0yc3RhcnR9Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiA8dGhlYWQ+Cgk8dHI+CQoJCTx0aD5JZDwvdGg+CgkJPHRoPkpvdWV1cjwvdGg+CgkJPHRoPkRhdGU8L3RoPgoJCTx0aD5FcHJldXZlPC90aD4KCQk8dGg+Tm9tIGFkdmVyc2FpcmU8L3RoPgoJCTx0aD5DbGFzc2VtZW50PC90aD4KCQk8dGg+VmljdG9pcmU8L3RoPgoJCTx0aD5FY2FydDwvdGg+CgkJPHRoPkNvZWZmPC90aD4KCQk8dGg+UG9pbnRzPC90aD4KCQk8dGg+Rm9yZmFpdDwvdGg+CgkJPHRoIGNvbHNwYW49IjIiPkFjdGlvbnM8L3RoPgoJCTx0aD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJzZWxlY3RhbGwiIG5hbWU9InNlbGVjdGFsbCI+PC90aD4KICA8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+CiAgICA8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KCTx0ZD57JGVudHJ5LT5qb3VldXJ9PC90ZD4JCiAgICA8dGQ+eyRlbnRyeS0+ZGF0ZV9ldmVudH08L3RkPgogICAgPHRkPnskZW50cnktPmVwcmV1dmV9PC90ZD4KCTx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+Y2xhc3NlbWVudH08L3RkPgoJPHRkPnskZW50cnktPnZpY3RvaXJlfTwvdGQ+Cgl7aWYgJGVudHJ5LT5lY2FydCBlcSAiMC4wMCJ9PHRkIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBvcmFuZ2U7Ij57ZWxzZX08dGQ+ey9pZn17JGVudHJ5LT5lY2FydH08L3RkPgoJe2lmICRlbnRyeS0+Y29lZmYgIGVxICIwLjAwIn08dGQgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJlZDsiPntlbHNlfTx0ZD57L2lmfXskZW50cnktPmNvZWZmfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+cG9pbnRyZXN9PC90ZD4KCTx0ZD57JGVudHJ5LT5mb3JmYWl0fTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KCTx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+Cgk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfXNlbFtdIiB2YWx1ZT0ieyRlbnRyeS0+aWR9IiBjbGFzcz0ic2VsZWN0Ij48L3RkPgoJPHRkPjwvdGQ+CiAgPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4KPCEtLSBTRUxFQ1QgRFJPUERPV04gLS0+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyI+Cjxici8+eyRhY3Rpb25kZW1hc3NlfXskc3VibWl0X21hc3NhY3Rpb259CiAgPC9kaXY+CnskZm9ybTJlbmR9CnsvaWZ9Cgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57KiRjcmVhdGVsaW5rKn08L3A+PC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/indivscores.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS50b2dnbGUoKTsKICB9KTsKICB7aWYgaXNzZXQoJHRhYmxlc29ydGVyKX0KICAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4KCntpZiBpc3NldCgkZm9ybXN0YXJ0KSB9CjxmaWVsZHNldD4KICA8bGVnZW5kPkZpbHRyZXM8L2xlZ2VuZD4KICB7JGZvcm1zdGFydH0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5UeXBlIENvbXDDqXRpdGlvbjo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NvbXBldH0gPC9wPgogICAgPCEtLTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfdG91cn06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90b3VyfSA8L3A+LS0+Cgk8cCBjbGFzcz0icGFnZXRleHQiPlNhaXNvbjo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3NhaXNvbn0gPC9wPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Kb3VldXIgOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcGxheWVyfSA8L3A+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0ZmlsdGVyfXskaGlkZGVufGRlZmF1bHQ6Jyd9PC9wPgogIDwvZGl2PgogIHskZm9ybWVuZH0KPC9maWVsZHNldD4Key9pZn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRyZXRyaWV2ZV9hbGxfcGFydGllc308L3A+PC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskaXRlbWNvdW50fSZuYnNwO3skaXRlbXNmb3VuZH08L3A+PC9kaXY+CntpZiAkaXRlbWNvdW50ID4gMH0KeyRmb3JtMnN0YXJ0fQo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgogIDx0cj4JCiAgPHRoPnskaWR9PC90aD4KICA8dGg+TsKwIEpvdXJuw6llPC90aD4KICA8dGg+eyRqb3VldXJ9PC90aD4KICA8dGg+eyR2aWN0b2lyZX08L3RoPgogIDx0aD57JGFkdmVyc2FpcmV9PC90aD4KCTx0aD57JHBvaW50c308L3RoPgogIDx0aD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJzZWxlY3RhbGwiIG5hbWU9InNlbGVjdGFsbCI+PC90aD4KICA8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+CiAgICA8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KCTx0ZD57JGVudHJ5LT5udW1qb3Vybn08L3RkPgogICAgPHRkPnskZW50cnktPmpvdWV1cn08L3RkPgogICAgPHRkPnskZW50cnktPnZkfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+YWR2bm9tcHJlfSA8L3RkPgoJPHRkPnskZW50cnktPnBvaW50cmVzfSA8L3RkPgogICAgPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPgoJPHRkPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRhY3Rpb25pZH1zZWxbXSIgdmFsdWU9InskZW50cnktPmxpY2VuY2V9IiBjbGFzcz0ic2VsZWN0Ij48L3RkPgogIDwvdHI+CnsvZm9yZWFjaH0KIDwvdGJvZHk+CjwvdGFibGU+CjwhLS0gU0VMRUNUIERST1BET1dOIC0tPgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyIgc3R5bGU9ImZsb2F0OiByaWdodDsiPgo8YnIvPnskYWN0aW9uZGVtYXNzZX17JHN1Ym1pdF9tYXNzYWN0aW9ufQogIDwvZGl2Pgp7JGZvcm0yZW5kfQp7L2lmfQoKPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRyZXRvdXJ9PC9wPjwvZGl2PjxociAvPgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+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/joueursList.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eypkZWJ1Zyp9CntpZiBpc3NldCgkbWVzc2FnZSl9CiAge2lmICRlcnJvciAhPSAnJ30KICAgIDxwPjxmb250IGNvbG9yPSJyZWQiPnskbWVzc2FnZX08L2ZvbnQ+PC9wPgogIHtlbHNlfQogICAgPHA+eyRtZXNzYWdlfTwvcD4KICB7L2lmfQp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGl0ZW1jb3VudH0mbmJzcDt7JGl0ZW1zZm91bmR9PC9wPjwvZGl2Pgp7KmlmICRpdGVtY291bnQgPiAwKn0KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KIDx0aGVhZD4KICA8dHI+CQogIDx0aD57JGlkfTwvdGg+CiAgPHRoPk5vbTwvdGg+Cjx0aD5QcsOpbm9tPC90aD4KICA8dGggY29sc3Bhbj0nMyc+QWN0aW9uczwvdGg+CiAgPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgPHRkPnskZW50cnktPmlkfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+bm9tfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+cHJlbm9tfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+c2l0bWVuc2xpbmt9PC90ZD4KCTx0ZD57JGVudHJ5LT5nZXRwYXJ0aWVzbGlua308L3RkPgoJPHRkPnskZW50cnktPmdldHBhcnRpZXNzcGlkfTwvdGQ+CiAgPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4KeyovaWYqfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGNyZWF0ZWxpbmt9PC9wPjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/templates/journal.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eypkZWJ1Zyp9CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLy88IVtDREFUQVsKJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICAkKCcjc2VsZWN0YWxsJykuY2xpY2soZnVuY3Rpb24oKXsKICAgIHZhciB2ID0gJCh0aGlzKS5hdHRyKCdjaGVja2VkJyk7CiAgICBpZiggdiA9PSAnY2hlY2tlZCcgKSB7CiAgICAgICQoJy5zZWxlY3QnKS5hdHRyKCdjaGVja2VkJywnY2hlY2tlZCcpOwogICAgfSBlbHNlIHsKICAgICAgJCgnLnNlbGVjdCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICAgIH0KICB9KTsKICAkKCcuc2VsZWN0JykuY2xpY2soZnVuY3Rpb24oKXsKICAgICQoJyNzZWxlY3RhbGwnKS5yZW1vdmVBdHRyKCdjaGVja2VkJyk7CiAgfSk7CiAgJCgnI3RvZ2dsZV9maWx0ZXInKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI2ZpbHRlcl9mb3JtJykudG9nZ2xlKCk7CiAgfSk7CiAge2lmIGlzc2V0KCR0YWJsZXNvcnRlcil9CiAgJCgnI2FydGljbGVsaXN0JykudGFibGVzb3J0ZXIoeyBzb3J0TGlzdDp7JHRhYmxlc29ydGVyfSB9KTsKICB7L2lmfQp9KTsKLy9dXT4KPC9zY3JpcHQ+CntpZiBpc3NldCgkZm9ybXN0YXJ0KSB9CjxmaWVsZHNldD4KICA8bGVnZW5kPkZpbHRyZXM8L2xlZ2VuZD4KICB7JGZvcm1zdGFydH0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPCEtLTxwIGNsYXNzPSJwYWdldGV4dCI+VHlwZSBDb21ww6l0aXRpb246PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9jb21wZXR9IDwvcD4tLT4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+RGF0ZTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2RhdGV9IDwvcD4KCTxwIGNsYXNzPSJwYWdldGV4dCI+U3RhdHV0OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc3RhdHVzfSA8L3A+Cgk8IS0tPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Kb3VldXIgOjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfcGxheWVyfSA8L3A+LS0+CiAgICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0ZmlsdGVyfXskaGlkZGVufGRlZmF1bHQ6Jyd9PC9wPgogIDwvZGl2PgogIHskZm9ybWVuZH0KPC9maWVsZHNldD4Key9pZn0Keyo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JHJldHJpZXZlX3VzZXJzfSB8IHskcmV0cmlldmVfdGVhbXN9IHwgeyRyZXRyaWV2ZV90ZWFtc19hdXRyZXN9IHwgeyRyZXRyaWV2ZV9hbGxfcGFydGllc30gfCB7JHJldHJpZXZlX2FsbF9zcGlkfSB8IHskcmV0cmlldmVfZGV0YWlsc19yZW5jb250cmVzfTwvcD48L2Rpdj4qfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGl0ZW1jb3VudH0mbmJzcDt7JGl0ZW1zZm91bmR9PC9wPjwvZGl2Pgp7aWYgJGl0ZW1jb3VudCA+IDB9CnskZm9ybTJzdGFydH0KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KIDx0aGVhZD4KCTx0cj4KCQk8dGg+SWQ8L3RoPgoJCTx0aD5EYXRlIGRlIG1pc2Ugw6Agam91cjwvdGg+CgkJPHRoPmRlc2lnbmF0aW9uPC90aD4KCQk8dGggY29sc3Bhbj0iMiI+QWN0aW9uczwvdGg+CgkJPHRoPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InNlbGVjdGFsbCIgbmFtZT0ic2VsZWN0YWxsIi8+PC90aD4KICAgIDwvdHI+CiA8L3RoZWFkPgogPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KICAgIDx0ZD57JGVudHJ5LT5pZH08L3RkPgoJPHRkPnskZW50cnktPmRhdGVtYWp8ZGF0ZV9mb3JtYXQ6IiVBICVlICVCICVZIMOgICVIOiVNOiVTIn08L3RkPgogICAgPHRkPnskZW50cnktPmRlc2lnbmF0aW9ufTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KCTx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+Cgk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfXNlbFtdIiB2YWx1ZT0ieyRlbnRyeS0+aWR9IiBjbGFzcz0ic2VsZWN0Ij48L3RkPgoJPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4Key9pZn0KPGRpdiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogbGVmdDsiPgoJPHAgY2xhc3M9InBhZ2VvcHRpb25zIj57KiRhZGRsaW5rKn08L3A+CjwvZGl2Pgp7aWYgJGl0ZW1jb3VudCA+IDB9CiAgPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJmbG9hdDogcmlnaHQ7IHRleHQtYWxpZ246IHJpZ2h0OyI+CiAgICB7JHN1Ym1pdF9tYXNzZGVsZXRlfQogIDwvZGl2Pgp7L2lmfQo8ZGl2IGNsYXNzPSJjbGVhcmIiPjwvZGl2Pgo8L2Rpdj4KeyRmb3JtMmVuZH0KCgoKCgoKCg==]]></data>
	</file>
	<file>
	  <filename>/templates/lists.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRtZXNzYWdlKX0KICB7aWYgJGVycm9yICE9ICcnfQogICAgPHA+PGZvbnQgY29sb3I9InJlZCI+eyRtZXNzYWdlfTwvZm9udD48L3A+CiAge2Vsc2V9CiAgICA8cD57JG1lc3NhZ2V9PC9wPgogIHsvaWZ9CnsvaWZ9CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskaXRlbWNvdW50fSZuYnNwO3skaXRlbXNmb3VuZH08L3A+PC9kaXY+CntpZiAkaXRlbWNvdW50ID4gMH0KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KIDx0aGVhZD4KICA8dHI+CQogIDx0aD57JGlkdGV4dH08L3RoPgogIDx0aD57JHNob3J0ZGVzY3JpcHRpb250ZXh0fTwvdGg+CiAgPHRoPnskYWN0aXZldGV4dH08L3RoPgogIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CiAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICA8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+CiAgICA8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5kZXNjcmlwdGlvbn08L3RkPgogICAgPHRkPnskZW50cnktPmFjdGl2ZX08L3RkPgogICAgPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPgogIDwvdHI+CnsvZm9yZWFjaH0KIDwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskY3JlYXRlbGlua308L3A+PC9kaXY+Cg==]]></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+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgogIDx0cj4JCiAgPHRoPnskaWR9PC90aD4KICA8dGg+Tm9tPC90aD4KICA8dGg+Q29kZTwvdGg+CiAgPHRoPkNvZWZmaWNpZW50PC90aD4KICA8dGg+TmIgam91ZXVyczwvdGg+CiAgPHRoPk5iIHBhcnRpZXM8L3RoPgogIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CiAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICA8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+CiAgICA8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+Y29kZV9jb21wZXR9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5jb2VmZmljaWVudH08L3RkPgogICAgPHRkPnskZW50cnktPmpvdWV1cnN9PC90ZD4KCTx0ZD57JGVudHJ5LT5wYXJ0aWVzfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+CiAgPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4Key9pZn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRjcmVhdGVsaW5rfTwvcD48L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/missingsitmens.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eypkZWJ1Zyp9CntpZiBpc3NldCgkbWVzc2FnZSl9CiAge2lmICRlcnJvciAhPSAnJ30KICAgIDxwPjxmb250IGNvbG9yPSJyZWQiPnskbWVzc2FnZX08L2ZvbnQ+PC9wPgogIHtlbHNlfQogICAgPHA+eyRtZXNzYWdlfTwvcD4KICB7L2lmfQp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JHJldHVybmxpbmt9PC9wPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGl0ZW1jb3VudH0mbmJzcDt7JGl0ZW1zZm91bmR9PC9wPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JHJldHJpZXZlYWxsc2l0bWVuc308L3A+PC9kaXY+CntpZiAkaXRlbWNvdW50ID4gMH0KPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KIDx0aGVhZD4KICA8dHI+CQogIDx0aD5JRDwvdGg+CiAgPHRoPkxpY2VuY2U8L3RoPgogIDx0aD5Ob208L3RoPgogIDx0aD5QcmVub208L3RoPgogIDwvdHI+CiA8L3RoZWFkPgogPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQogIDx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9Ij4KICAgIDx0ZD57JGVudHJ5LT5pZH08L3RkPgogICAgPHRkPnskZW50cnktPmpvdWV1cn08L3RkPgogIDwvdHI+CnsvZm9yZWFjaH0KIDwvdGJvZHk+CjwvdGFibGU+CntlbHNlfQo8cD5MZXMgc2l0dWF0aW9ucyBtZW5zdWVsbGVzIHNvbnQgw6Agam91cjwvcD4Key9pZn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRjcmVhdGVsaW5rfTwvcD48L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/parEquipes1.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGxhYmVsPnskdGV4dH08L2xhYmVsPgp7aWYgJGVycm9yfQo8Zm9udCBjb2xvcj0icmVkIj4Key9pZn0Ke2lmICRtZXNzYWdlIG5lICIifQo8c3Ryb25nPnskbWVzc2FnZX08L3N0cm9uZz4Key9pZn0Ke2lmICRlcnJvcn0KPC9mb250Pgp7L2lmfQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJeyRmb3Jtc3RhcnR9Cgl7JGZvcm1oaWRkZW59Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8dGFibGU+Cgk8dHI+PHRkPkNvbXDDqXRpdGlvbjwvdGQ+PHRkPnskY29tcGV0fTwvdGQ+PC90cj4KCTx0cj48dGQ+QWR2ZXJzYWlyZXM8L3RkPjx0ZD57JGFkdmVyc2FpcmVzfTwvdGQ+PC90cj4KCTx0cj48dGQ+VG91cjwvdGQ+PHRkPnskdG91cn08L3RkPjwvdHI+Cgk8dHI+PHRkPkVxdWlwZTwvdGQ+PHRkPnskZXF1aXBlfTwvdGQ+PC90cj4KCTx0cj48dGQ+TG9jYXV4IChBIG91IEIpPC90ZD48dGQ+eyRsb2NhdXh9PC90ZD48L3RyPgoJeyp9PHRyPgoJCTx0ZD4KCQkJPHRhYmxlIGJvcmRlcj0nMSc+CgkJCQk8dHI+CgkJCQkJPHRoPjwvdGg+PHRoPkpvdWV1cjwvdGg+PHRoPlBvaW50czwvdGg+PC90cj4KCQkJCTx0cj4KCQkJCQk8dGQ+eyRwcm9tcHRfam91ZXVyQX08L3RkPjx0ZD57JGpvdWV1ckF9PC90ZD48dGQ+eyRwdHNBfTwvdGQ+CgkJCQk8L3RyPgoJCQkJPHRyPgoJCQkJCTx0ZD57JHByb21wdF9qb3VldXJCfTwvdGQ+PHRkPnskam91ZXVyQn08L3RkPjx0ZD57JHB0c0J9PC90ZD4KCQkJCTwvdHI+CgkJCQk8dHI+CgkJCQkJPHRkPnskcHJvbXB0X2pvdWV1ckN9PC90ZD48dGQ+eyRqb3VldXJDfTwvdGQ+PHRkPnskcHRzQ308L3RkPgoJCQkJPC90cj4KCQkJCTx0cj4KCQkJCQk8dGQ+eyRwcm9tcHRfam91ZXVyRH08L3RkPjx0ZD57JGpvdWV1ckR9PC90ZD48dGQ+eyRwdHNEfTwvdGQ+CgkJCQk8L3RyPgoJCQk8L3RhYmxlPgoJCTwvdGQ+CgkJPHRkPjx0YWJsZSBib3JkZXI9JzEnPgoJCQk8dHI+CgkJCQk8dGg+PC90aD48dGg+Sm91ZXVyPC90aD48dGg+UG9pbnRzPC90aD48L3RyPgoJCQk8dHI+CgkJCQk8dGQ+eyRwcm9tcHRfam91ZXVyV308L3RkPjx0ZD57JGpvdWV1cld9PC90ZD48dGQ+eyRwdHNXfTwvdGQ+CgkJCTwvdHI+CgkJCTx0cj4KCQkJCTx0ZD57JHByb21wdF9qb3VldXJYfTwvdGQ+PHRkPnskam91ZXVyWH08L3RkPjx0ZD57JHB0c1h9PC90ZD4KCQkJPC90cj4KCQkJPHRyPgoJCQkJPHRkPnskcHJvbXB0X2pvdWV1cll9PC90ZD48dGQ+eyRqb3VldXJZfTwvdGQ+PHRkPnskcHRzWX08L3RkPgoJCQk8L3RyPgoJCQk8dHI+CgkJCQk8dGQ+eyRwcm9tcHRfam91ZXVyWn08L3RkPjx0ZD57JGpvdWV1clp9PC90ZD48dGQ+eyRwdHNafTwvdGQ+CgkJCTwvdHI+CgkJPC90YWJsZT48L3RkPgoJPC90cj4qfQo8L3RhYmxlPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CjxwPnskc3VibWl0fSB7JGNhbmNlbH0geyRiYWNrfTwvcD4KPC9kaXY+CnskZm9ybWVuZH0KPC9kaXY+]]></data>
	</file>
	<file>
	  <filename>/templates/pie-charts.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibW9kdWxlcy9QaW5nL2pxcGxvdC9qcXBsb3QucGllUmVuZGVyZXIubWluLmpzIj48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ibW9kdWxlcy9QaW5nL2pxcGxvdC9qcXBsb3QuZG9udXRSZW5kZXJlci5taW4uanMiPjwvc2NyaXB0Pgp7bGl0ZXJhbH0KPHNjcmlwdCBjbGFzcz0iY29kZSIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKXsKICB2YXIgZGF0YSA9IFt7L2xpdGVyYWx9CgpbJ3skTGFiZWxfdmljdG9pcmVzfScsIHskZG9ubmVlcy5WaWN0b2lyZXN9XSxbJ3skTGFiZWxfZGVmYWl0ZX0nLCB7JGRvbm5lZXMuRGVmYWl0ZXN9XQogICAge2xpdGVyYWx9CiAgXTsKICB2YXIgcGxvdDEgPSBqUXVlcnkuanFwbG90ICgnY2hhcnQxJywgW2RhdGFdLCAKICAgIHsgCiAgICAgIHNlcmllc0RlZmF1bHRzOiB7CiAgICAgICAgLy8gTWFrZSB0aGlzIGEgcGllIGNoYXJ0LgogICAgICAgIHJlbmRlcmVyOiBqUXVlcnkuanFwbG90LlBpZVJlbmRlcmVyLCAKICAgICAgICByZW5kZXJlck9wdGlvbnM6IHsKICAgICAgICAgIC8vIFB1dCBkYXRhIGxhYmVscyBvbiB0aGUgcGllIHNsaWNlcy4KICAgICAgICAgIC8vIEJ5IGRlZmF1bHQsIGxhYmVscyBzaG93IHRoZSBwZXJjZW50YWdlIG9mIHRoZSBzbGljZS4KICAgICAgICAgIHNob3dEYXRhTGFiZWxzOiB0cnVlCiAgICAgICAgfQogICAgICB9LCAKICAgICAgbGVnZW5kOiB7IHNob3c6dHJ1ZSwgbG9jYXRpb246ICdlJyB9CiAgICB9CiAgKTsKfSk7Cjwvc2NyaXB0Pgp7L2xpdGVyYWx9Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CjxwPiB7JGVudHJ5LT52aWN0b2lyZXN9ICAtLS0tLS0tLS0tLS0geyRlbnRyeS0+ZGVmYWl0ZXN9ey9mb3JlYWNofTwvcD4KPGRpdiBpZD0iY2hhcnQxIiBzdHlsZT0iaGVpZ2h0OjMwMHB4OyB3aWR0aDo1MDBweDsiPjwvZGl2Pgo8ZGl2IGNsYXNzPSJjb2RlIHByZXR0eXByaW50Ij4KPHByZSBjbGFzcz0iY29kZSBwcmV0dHlwcmludCBicnVzaDoganMiPjwvcHJlPgo8L2Rpdj4KCgoKCgo=]]></data>
	</file>
	<file>
	  <filename>/templates/pie-highcharts.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cDovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2pxdWVyeS8xLjguMi9qcXVlcnkubWluLmpzIj48L3NjcmlwdD4Ke2xpdGVyYWx9CjxzY3JpcHQgY2xhc3M9ImNvZGUiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7CiAgdmFyIGRhdGEgPSBbey9saXRlcmFsfQoKWyd7JExhYmVsX3ZpY3RvaXJlc30nLCB7JGRvbm5lZXMuVmljdG9pcmVzfV0sWyd7JExhYmVsX2RlZmFpdGV9JywgeyRkb25uZWVzLkRlZmFpdGVzfV0KICAgIHtsaXRlcmFsfQogIF07CiAgdmFyIHBsb3QxID0galF1ZXJ5LmpxcGxvdCAoJ2NoYXJ0MScsIFtkYXRhXSwgCiAgICB7IAogICAgICBzZXJpZXNEZWZhdWx0czogewogICAgICAgIC8vIE1ha2UgdGhpcyBhIHBpZSBjaGFydC4KICAgICAgICByZW5kZXJlcjogalF1ZXJ5LmpxcGxvdC5QaWVSZW5kZXJlciwgCiAgICAgICAgcmVuZGVyZXJPcHRpb25zOiB7CiAgICAgICAgICAvLyBQdXQgZGF0YSBsYWJlbHMgb24gdGhlIHBpZSBzbGljZXMuCiAgICAgICAgICAvLyBCeSBkZWZhdWx0LCBsYWJlbHMgc2hvdyB0aGUgcGVyY2VudGFnZSBvZiB0aGUgc2xpY2UuCiAgICAgICAgICBzaG93RGF0YUxhYmVsczogdHJ1ZQogICAgICAgIH0KICAgICAgfSwgCiAgICAgIGxlZ2VuZDogeyBzaG93OnRydWUsIGxvY2F0aW9uOiAnZScgfQogICAgfQogICk7Cn0pOwo8L3NjcmlwdD4Key9saXRlcmFsfQp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQo8cD4geyRlbnRyeS0+dmljdG9pcmVzfSAgLS0tLS0tLS0tLS0tIHskZW50cnktPmRlZmFpdGVzfXsvZm9yZWFjaH08L3A+CjxkaXYgaWQ9ImNoYXJ0MSIgc3R5bGU9ImhlaWdodDozMDBweDsgd2lkdGg6NTAwcHg7Ij48L2Rpdj4KPGRpdiBjbGFzcz0iY29kZSBwcmV0dHlwcmludCI+CjxwcmUgY2xhc3M9ImNvZGUgcHJldHR5cHJpbnQgYnJ1c2g6IGpzIj48L3ByZT4KPC9kaXY+CgoKCgoK]]></data>
	</file>
	<file>
	  <filename>/templates/poulesRencontres.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS50b2dnbGUoKTsKICB9KTsKICB7aWYgaXNzZXQoJHRhYmxlc29ydGVyKX0KICAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4KeyoqfQoJe2lmIGlzc2V0KCRmb3Jtc3RhcnQpIH0KPGZpZWxkc2V0PgogIDxsZWdlbmQ+RmlsdHJlczwvbGVnZW5kPgogIHskZm9ybXN0YXJ0fQogIDxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CnsqCTxwIGNsYXNzPSJwYWdldGV4dCI+VHlwZSBDb21ww6l0aXRpb246PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9jb21wZXR9IDwvcD4qfQogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij5Qb3VsZTwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdG91cn0gPC9wPgp7Kgk8cCBjbGFzcz0icGFnZXRleHQiPnskcHJvbXB0X2VxdWlwZX06PC9wPgogICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9lcXVpcGV9IDwvcD4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPip9CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdGZpbHRlcn17JGhpZGRlbnxkZWZhdWx0OicnfTwvcD4KICA8L2Rpdj4KICB7JGZvcm1lbmR9CjwvZmllbGRzZXQ+CnsvaWZ9CnsqKn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRjcmVhdGVsaW5rfTwvcD48L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQoKeyRmb3JtMnN0YXJ0fQo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgogIDx0cj4JCiAgPHRoPklkPC90aD4KICA8dGg+UG91bGU8L3RoPgogIDx0aD5FcXVpcGUgQTwvdGg+CiAgPHRoIGNvbHNwYW49IjIiPlNjb3JlPC90aD4KICA8dGg+RXF1aXBlIEI8L3RoPgo8dGggY29sc3Bhbj0iMyI+QWN0aW9uczwvdGg+Cjx0aD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJzZWxlY3RhbGwiIG5hbWU9InNlbGVjdGFsbCIvPjwvdGg+CiAKICA8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+CiAgICA8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5saWJlbGxlfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZXF1YX08L3RkPgogICAgPHRkPnskZW50cnktPnNjb3JlYX08L3RkPgoJPHRkPnskZW50cnktPnNjb3JlYn08L3RkPgoJPHRkPnskZW50cnktPmVxdWJ9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5yZXRyaWV2ZV9wb3VsZV9yZW5jb250cmVzfTwvdGQ+Cjx0ZD57JGVudHJ5LT5kaXNwbGF5fTwvdGQ+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[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgovLzwhW0NEQVRBWwokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJyNzZWxlY3RhbGwnKS5jbGljayhmdW5jdGlvbigpewogICAgdmFyIHYgPSAkKHRoaXMpLmF0dHIoJ2NoZWNrZWQnKTsKICAgIGlmKCB2ID09ICdjaGVja2VkJyApIHsKICAgICAgJCgnLnNlbGVjdCcpLmF0dHIoJ2NoZWNrZWQnLCdjaGVja2VkJyk7CiAgICB9IGVsc2UgewogICAgICAkKCcuc2VsZWN0JykucmVtb3ZlQXR0cignY2hlY2tlZCcpOwogICAgfQogIH0pOwogICQoJy5zZWxlY3QnKS5jbGljayhmdW5jdGlvbigpewogICAgJCgnI3NlbGVjdGFsbCcpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKICAkKCcjdG9nZ2xlX2ZpbHRlcicpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcjZmlsdGVyX2Zvcm0nKS50b2dnbGUoKTsKICB9KTsKICB7aWYgaXNzZXQoJHRhYmxlc29ydGVyKX0KICAkKCcjYXJ0aWNsZWxpc3QnKS50YWJsZXNvcnRlcih7IHNvcnRMaXN0OnskdGFibGVzb3J0ZXJ9IH0pOwogIHsvaWZ9Cn0pOwovL11dPgo8L3NjcmlwdD4KPGgyPkV0YXQgZGVzIHLDqWN1cMOpcmF0aW9ucyBkZXMgam91ZXVycyBhY3RpZnM8L2gyPgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGl0ZW1jb3VudH0mbmJzcDt7JGl0ZW1zZm91bmR9ICB7KiRiYXJjaGFydHMqfTwvcD48L2Rpdj4Ke2lmICRpdGVtY291bnQgPiAwfQp7JGZvcm0yc3RhcnR9Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiA8dGhlYWQ+Cgk8dHI+CgkJPHRoPnskaWR9PC90aD4KCQk8dGg+Sm91ZXVyPC90aD4KCQk8dGg+RGVybmnDqHJlIFNpdHVhdGlvbjwvdGg+CgkJPHRoPlBhcnRpZXMgRkZUVDwvdGg+CgkJPHRoPlBhcnRpZXMgU3BpZDwvdGg+CgkJPHRoIGNvbHNwYW49JzYnPkFjdGlvbnM8L3RoPgoJCTx0aD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJzZWxlY3RhbGwiIG5hbWU9InNlbGVjdGFsbCI+PC90aD4KICA8L3RyPgogPC90aGVhZD4KIDx0Ym9keT4Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1lbnRyeX0KICA8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSI+Cgk8dGQ+eyRlbnRyeS0+aWR9PC90ZD4KCTx0ZD57JGVudHJ5LT5qb3VldXJ9PC90ZD4KCTx0ZD57JGVudHJ5LT5zaXRfbWVuc308L3RkPgoJPHRkPnskZW50cnktPmZmdHR9PC90ZD4KCTx0ZD57JGVudHJ5LT5zcGlkfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+c2l0bWVuc2xpbmt9PC90ZD4KCTx0ZD57JGVudHJ5LT5nZXRwYXJ0aWVzbGlua308L3RkPgoJPHRkPnskZW50cnktPmdldHBhcnRpZXNzcGlkfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZG9lZGl0fTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPgoJPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+Cgk8dGQ+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJ7JGFjdGlvbmlkfXNlbFtdIiB2YWx1ZT0ieyRlbnRyeS0+bGljZW5jZX0iIGNsYXNzPSJzZWxlY3QiPjwvdGQ+CiAgPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4KPCEtLSBTRUxFQ1QgRFJPUERPV04gLS0+CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyI+Cjxici8+eyRhY3Rpb25kZW1hc3NlfXskc3VibWl0X21hc3NhY3Rpb259CiAgPC9kaXY+CnskZm9ybTJlbmR9CnsvaWZ9Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/report_form.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRtZXNzYWdlc29ydGllIT0nJ308aDI+eyRtZXNzYWdlc29ydGllfTwvaDI+ey9pZn0KICAgICAgIHskZm9ybV9zdGFydH0KICAgICAgIDxwPnskaW5wdXRfbmFtZX08L3A+CiAgICAgICA8cD57JGlucHV0X3R5cGV9PC9wPgogICAgICAgPHA+eyRpbnB1dF9saWdodHN9eyRsYWJlbF9saWdodHN9PC9wPgo8cD5MZSBjaGFtcCBjYWNow6kgeyRlbnZvaX08L3A+CiAgICAgICA8cD57JHRpdGxlX2Rlc2NyaXB0aW9ufTxiciAvPnskaW5wdXRfZGVzY3JpcHRpb259PC9wPgogICAgICAgPHA+eyRzdWJtaXR9PC9wPgp7JGZvcm1fZW5kfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/teamscores.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyoKCXtpZiBpc3NldCgkZm9ybXN0YXJ0KSB9CjxmaWVsZHNldD4KICA8bGVnZW5kPkZpbHRyZXM8L2xlZ2VuZD4KICB7JGZvcm1zdGFydH0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij5UeXBlIENvbXDDqXRpdGlvbjo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NvbXBldH0gPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHByb21wdF90b3VyfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RvdXJ9IDwvcD4KCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRwcm9tcHRfZXF1aXBlfTo8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2VxdWlwZX0gPC9wPgogICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij4mbmJzcDs8L3A+CiAgICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdGZpbHRlcn17JGhpZGRlbnxkZWZhdWx0OicnfTwvcD4KICA8L2Rpdj4KICB7JGZvcm1lbmR9CjwvZmllbGRzZXQ+CnsvaWZ9Cip9CjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj48cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskcmV0cmlldmVfdGVhbXN9IHwgeyRyZXRyaWV2ZV90ZWFtc19hdXRyZXN9PC9wPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGl0ZW1jb3VudH0mbmJzcDt7JGl0ZW1zZm91bmR9PC9wPjwvZGl2Pgp7aWYgJGl0ZW1jb3VudCA+IDB9Cgo8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogPHRoZWFkPgogIDx0cj4JCiAgPHRoPnskaWR9PC90aD4KICA8dGg+eyRlcXVpcGV9PC90aD4KICA8dGg+Tml2ZWF1PC90aD4KICA8dGg+Tm9tIGNvdXJ0PC90aD4KICA8dGggY29sc3Bhbj0iNCI+QWN0aW9uczwvdGg+CiAgPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgPHRkPnskZW50cnktPmlkfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+bGliZXF1aXBlfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+bGliZGl2aXNpb259PC90ZD4KCTx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZnJpZW5kbHluYW1lfTwvdGQ+CjwhLS0JPHRkPnskZW50cnktPnZpZXd9PC90ZD4tLT4KCTx0ZD57JGVudHJ5LT5lZGl0bGlua308L3RkPgogICAgPHRkPnskZW50cnktPnJldHJpZXZlX3BvdWxlX3JlbmNvbnRyZXN9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+CiAgPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4Key9pZn0KCg==]]></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/userslist.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2RlYnVnfQp7aWYgaXNzZXQoJG1lc3NhZ2UpfQogIHtpZiAkZXJyb3IgIT0gJyd9CiAgICA8cD48Zm9udCBjb2xvcj0icmVkIj57JG1lc3NhZ2V9PC9mb250PjwvcD4KICB7ZWxzZX0KICAgIDxwPnskbWVzc2FnZX08L3A+CiAgey9pZn0Key9pZn0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRyZXR1cm5saW5rfTwvcD48L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRpdGVtY291bnR9Jm5ic3A7eyRpdGVtc2ZvdW5kfTwvcD48L2Rpdj4KeyppZiAkaXRlbWNvdW50ID4gMCp9Cjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiA8dGhlYWQ+CiAgPHRyPgkKICA8dGg+eyRpZH08L3RoPgogIDx0aD57JHRvdXJ9PC90aD4KICA8dGg+eyRlcXVpcGV9PC90aD4KICA8dGg+eyRqb3VldXJ9PC90aD4KICA8dGg+eyRhZHZlcnNhaXJlfTwvdGg+CiAgPHRoPnskdmljdG9pcmV9PC90aD4KICA8dGg+eyRwb2ludHN9PC90aD4KICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgogIDx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CiAgPC90cj4KIDwvdGhlYWQ+CiA8dGJvZHk+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9CiAgPHRyIGNsYXNzPSJ7JGVudHJ5LT5yb3djbGFzc30iPgogICAgPHRkPnskZW50cnktPmlkfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+dG91cn08L3RkPgogICAgPHRkPnskZW50cnktPmVxdWlwZX08L3RkPgogICAgPHRkPnskZW50cnktPmpvdWV1cn08L3RkPgoJPHRkPnskZW50cnktPmFkdmVyc2FpcmV9PC90ZD4KCTx0ZD57JGVudHJ5LT52aWNfZGVmfTwvdGQ+Cgk8dGQ+eyRlbnRyeS0+cG9pbnRzfTwvdGQ+CiAgICA8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4KICAgIDx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+CiAgPC90cj4Key9mb3JlYWNofQogPC90Ym9keT4KPC90YWJsZT4KeyovaWYqfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGNyZWF0ZWxpbmt9PC9wPjwvZGl2Pgo=]]></data>
	</file>
</module>
