<?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>TemplateExternalizer</name>
	<version>1.3</version>
  <mincmsversion>1.9.4</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPkl0IGFsbG93cyB5b3UgdG8gdXNlIGFueSBleHRlcm5hbCBlZGl0b3IgdG8gZWRpdCB5b3VyIHRlbXBsYXRlcyBhbmQgc3R5bGVzaGVldHMuPC9wPgo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4KPHA+Rmlyc3QgY29uZmlndXJlIHRoZSBwYXRoIHdoZXJlIHlvdSB3b3VsZCBsaWtlIHRoZSB0ZW1wbGF0ZSBmaWxlcyB0byBiZSBzYXZlZC4gClRoZSBkZWZhdWx0IGlzIHRtcC9leHRlcm5hbGl6ZXIvIHdoaWNoIHNob3VsZCB3b3JrIGZvciBtb3N0IHBlb3BsZS4gTmV4dCB0dXJuIG9uCjxlbT5EZXZlbG9wbWVudCBNb2RlPC9lbT4gd2hpY2ggZXhwb3J0cyBlYWNoIHRlbXBsYXRlIGFuZCBzdHlsZXNoZWV0IGZyb20gdGhlIApkYXRhYmFzZSB0byBmaWxlcy4gWW91IG1heSBub3cgZWRpdCB0aGUgZmlsZXMgaG93ZXZlciB5b3UgbGlrZSBhbmQgYW55IGNoYW5nZXMgYXJlIAphdXRvbWF0aWNhbGx5IGRldGVjdGVkLCBpbXBvcnRlZCB0byB0aGUgZGF0YWJhc2UgYW5kIHRha2UgZWZmZWN0IGltbWVkaWF0ZWx5LjwvcD4KCjxwPklmIHlvdSBlZGl0IG9yIGFkZCBuZXcgdGVtcGxhdGVzIG9yIHN0eWxlc2hlZXRzIHVzaW5nIHRoZSBub3JtYWwgd2ViIGludGVyZmFjZSAKd2hpbGUgPGVtPkRldmVsb3BtZW50IE1vZGU8L2VtPiBpcyBvbiwgdGhlc2UgY2hhbmdlcyB3aWxsIGJlIGV4cG9ydGVkIHRvIHRoZSBmaWxlcy4gCkFueSBmaWxlcyBpbiB0aGUgdGVtcGxhdGUgcGF0aCB3aG9zZSBuYW1lcyBkbyBub3QgY29ycmVzcG9uZCB0byBleGlzdGluZyB0ZW1wbGF0ZXMKd2lsbCBiZSBpZ25vcmVkLjwvcD4KCjxwPldoZW4geW91IGhhdmUgZmluaXNoZWQgCmVkaXRpbmcgdGhlIGZpbGVzIHlvdSBzaG91bGQgdHVybiA8ZW0+RGV2ZWxvcG1lbnQgTW9kZTwvZW0+IG9mZiBvdGhlcndpc2UgaXQgCndpbGwgYWZmZWN0IHBlcmZvcm1hbmNlLiBIb3dldmVyLCBpZiBubyBjaGFuZ2VzIGFyZSBtYWRlIHRvIGFueSBvZiB0aGUgZmlsZXMgZm9yIAo8ZW0+VGltZW91dDwvZW0+IG1pbnV0ZXMsIDxlbT5EZXZlbG9wbWVudCBNb2RlPC9lbT4gd2lsbCB0dXJuIGl0c2VsZiBvZmYgCmF1dG9tYXRpY2FsbHkuIFNldCA8ZW0+VGltZW91dDwvZW0+IHRvIDAgdG8gZGlzYWJsZSB0aGlzIGZlYXR1cmUuPC9wPgoKPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAwNiwgVGFtbHluIFJob2RlcyAmbHQ7PGEgaHJlZj0iaHR0cDovL3RhbWx5bi5vcmciPnRhbWx5bi5vcmc8L2E+Jmd0Oy4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiAKWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4KPGgzPlBhcmFtJmVncmF2ZTt0cmVzPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGFuZz0iZW5fVVMiIC0gUGFyYW0mZWdyYXZlO3RyZSB1dGlsaXMmZWFjdXRlOyBwb3VyIHNwJmVhY3V0ZTtjaWZpZXIgZGFucyBxdWVsbGUgbGFuZ3VlIGFmZmljaGVyIGxlIG1vZHVsZSBkYW5zIGxhIHBhcnRpZSBwdWJsaXF1ZS4gQ2UgcGFyYW0mZWdyYXZlO3RyZSBuJiMwMzk7ZXN0IHBhcyBzdXBwb3J0JmVhY3V0ZTsgb3UgdXRpbGUgcG91ciB0b3VzIGxlcyBtb2R1bGVzLjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0ZXVyJm5ic3A7OiB0YW1seW4gJmx0O3RhbUB6ZW5vbG9neS5jby51ayZndDs8YnIgLz48YnIgLz5WZXJzaW9uIDogMS4zPGJyIC8+PGJyIC8+SGlzdG9yaXF1ZSBkZXMgY2hhbmdlbWVudHMmbmJzcDs6PGJyIC8+PHVsPgo8bGk+VmVyc2lvbiAxLjMgLSAyNiBNYXJjaCAyMDExICg8YSBocmVmPSJodHRwOi8vd3d3LmVwc2lnb24uZnIiPmVwc2lnb248L2E+KS4gIEFkZGVkIHN1cHBvcnQgZm9yIEdsb2JhbCBDb250ZW50IEJsb2NrcywgVURUcywgc29tZSBTaXRlUHJlZnMgKFNpdGUgZG93biBtZXNzYWdlLCBNZXRhZGF0YSwgRGVmYXVsdCBQYWdlIENvbnRlbnQsIFBhZ2UgTWV0YWRhdGEpLiBCdW1wIG1pbmltdW0gQ01TIHZlcnNpb24sIHNwbGl0IGludG8gbXVsdGlwbGUgZmlsZXMuPC9saT4KPGxpPlZlcnNpb24gMS4yIC0gTm92ZW1iZXIgMjAwOCAoY2FsZ3V5MTAwMCkuICBBZGRlZCBzdXBwb3J0IGZvciBtb2R1bGUgZGF0YWJhc2UgdGVtcGxhdGVzLiBCdW1wIG1pbmltdW0gQ01TIHZlcnNpb24sIHNwbGl0IGludG8gbXVsdGlwbGUgZmlsZXMuPC9saT4KPGxpPlZlcnNpb24gMS4wLjQgMTMgRGVjZW1iZXIgMjAwNi4gQWRkZWQgZ2VybWFuIHRyYW5zbGF0aW9uLCBmaXhlZCBzb21lIHVudHJhbnNsYXRhYmxlIHRleHQ8L2xpPgo8bGk+VmVyc2lvbiAxLjAuMyAyNyBTZXB0ZW1iZXIgMjAwNi4gQWRkZWQgcmVkaXJlY3QgYWZ0ZXIgc2F2ZSwgbXV0ZWQgRV9OT1RJQ0UgZXJyb3I8L2xpPgo8bGk+VmVyc2lvbiAxLjAuMiAyOSBBdWd1c3QgMjAwNi4gRml4ZWQgbGF6eSBsb2FkaW5nIGZvciBDTVMgMS4wYmV0YTY8L2xpPgo8bGk+VmVyc2lvbiAxLjAuMSA5IEp1bmUgMjAwNi4gU3BlY2lhbCBjaGFyYWN0ZXJzIGluIGZpbGVuYW1lcyBhcmUgZXNjYXBlZC4gRml4ZWQgYW5vdGhlciBidWcuPC9saT4KPGxpPlZlcnNpb24gMS4wIDI4IE1heSAyMDA2LiBJbml0aWFsIFJlbGVhc2UuPC9saT4KPC91bD48YnIgLz4=]]></about>
	<description><![CDATA[Allows any FTP-enabled text or HTML editors to edit CMS templates & stylesheets.]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGVtcGxhdGVFeHRlcm5hbGl6ZXIgLSBlZGl0IHRlbXBsYXRlcyAmIHN0eWxlc2hlZXRzIGV4dGVybmFsbHkKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignVGVtcGxhdGUgRXh0ZXJuYWxpemVyJykgKQogIHsKICAgICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7CiAgICByZXR1cm47CiAgfQoKJHNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLAoJCSR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnc2F2ZV9hZG1pbl9wcmVmcycsICRyZXR1cm5pZCkpOwokc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCAKCQkJCQkgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7Cgokc21hcnR5LT5hc3NpZ24oJ3RpdGxlX2Rldl9tb2RlJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2Rldl9tb2RlJykpOwokc21hcnR5LT5hc3NpZ24oJ3RpdGxlX3RpbWVvdXQnLCAkdGhpcy0+TGFuZygndGl0bGVfdGltZW91dCcpKTsKJHNtYXJ0eS0+YXNzaWduKCd0aXRsZV9jYWNoZV9wYXRoJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2NhY2hlX3BhdGgnKSk7CiRzbWFydHktPmFzc2lnbigndGl0bGVfdGVtcGxhdGVfZXh0ZW5zaW9uJywgCgkJJHRoaXMtPkxhbmcoJ3RpdGxlX3RlbXBsYXRlX2V4dGVuc2lvbicpKTsKJHNtYXJ0eS0+YXNzaWduKCd0aXRsZV9zdHlsZXNoZWV0X2V4dGVuc2lvbicsIAoJCSR0aGlzLT5MYW5nKCd0aXRsZV9zdHlsZXNoZWV0X2V4dGVuc2lvbicpKTsKCiRjYWNoZV9wYXRoID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NhY2hlX3BhdGgnKTsKaWYoIEBmaWxlX2V4aXN0cygkY2FjaGVfcGF0aCkgKQogIHsKICAgICRzbWFydHktPmFzc2lnbignaW5mb19kZXZtb2RlX29uJywkdGhpcy0+TGFuZygnZGV2X21vZGVfZW5hYmxlZCcpKTsKICB9Cgokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2Rldl9tb2RlJywgCiAgICAgICR0aGlzLT5DcmVhdGVJbnB1dFJhZGlvR3JvdXAoJGlkLCAnZGV2X21vZGUnLCAKCQkJCSAgIGFycmF5KCR0aGlzLT5MYW5nKCdvZmYnKS4nJm5ic3A7Jz0+MCwgCgkJCQkJICR0aGlzLT5MYW5nKCdvbicpLicmbmJzcDsnPT4xKSwgCgkJCQkgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGV2X21vZGUnLCAnMScpKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfdGltZW91dCcsIAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAndGltZW91dCcsCgkJCQkgICAgICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3RpbWVvdXQnKSkuJyAnLgoJCSR0aGlzLT5MYW5nKCd0aXRsZV90aW1lb3V0X3VuaXRzJykpOwoKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jYWNoZV9wYXRoJywgCgkJJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdjYWNoZV9wYXRoJywKCQkJCSAgICAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY2FjaGVfcGF0aCcpLCA0MCkpOwoKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF90ZW1wbGF0ZV9leHRlbnNpb24nLAoJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAndGVtcGxhdGVfZXh0ZW5zaW9uJywKCQkJCSAgICAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGVtcGxhdGVfZXh0ZW5zaW9uJykpKTsKCiRzbWFydHktPmFzc2lnbignaW5wdXRfc3R5bGVzaGVldF9leHRlbnNpb24nLCAKCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3N0eWxlc2hlZXRfZXh0ZW5zaW9uJywKCQkJCSAgICAgICAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc3R5bGVzaGVldF9leHRlbnNpb24nKSkpOwoKLy8gRGlzcGxheSB0aGUgcG9wdWxhdGVkIHRlbXBsYXRlCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5wcmVmcy50cGwnKTsKCiMgRU9GCj8+]]></data>
	</file>
	<file>
	  <filename>/action.save_admin_prefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGVtcGxhdGVFeHRlcm5hbGl6ZXIgLSBlZGl0IHRlbXBsYXRlcyAmIHN0eWxlc2hlZXRzIGV4dGVybmFsbHkKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignVGVtcGxhdGUgRXh0ZXJuYWxpemVyJykgKQogIHsKICAgICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7CiAgICByZXR1cm47CiAgfQoKCiRvbGRtb2RlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rldl9tb2RlJyk7CiRuZXdtb2RlID0gJHBhcmFtc1snZGV2X21vZGUnXTsKICAgIAokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGV2X21vZGUnLCAkcGFyYW1zWydkZXZfbW9kZSddKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3RpbWVvdXQnLCAkcGFyYW1zWyd0aW1lb3V0J10pOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnY2FjaGVfcGF0aCcsICRwYXJhbXNbJ2NhY2hlX3BhdGgnXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0ZW1wbGF0ZV9leHRlbnNpb24nLCAkcGFyYW1zWyd0ZW1wbGF0ZV9leHRlbnNpb24nXSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzdHlsZXNoZWV0X2V4dGVuc2lvbicsICRwYXJhbXNbJ3N0eWxlc2hlZXRfZXh0ZW5zaW9uJ10pOwoKJG1lc3NhZ2UgPSAkdGhpcy0+TGFuZygncHJlZnN1cGRhdGVkJyk7CgppZighJG9sZG1vZGUgJiYgJG5ld21vZGUpIHsKICAkdGhpcy0+RXhwb3J0VGVtcGxhdGVzKCk7CiAgJHRoaXMtPkF1ZGl0KDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ2Rldl9tb2RlX2VuYWJsZWQnKSk7CiAgJG1lc3NhZ2UgLj0gJyAnLiR0aGlzLT5MYW5nKCdkZXZfbW9kZV9lbmFibGVkJyk7CiB9IGVsc2VpZigkb2xkbW9kZSAmJiAhJG5ld21vZGUpIHsKICAgJHRoaXMtPkRlbGV0ZVRlbXBsYXRlQ2FjaGUoKTsKICAgJHRoaXMtPkF1ZGl0KDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ2Rldl9tb2RlX2Rpc2FibGVkJykpOwogICAkbWVzc2FnZSAuPSAnICcuJHRoaXMtPkxhbmcoJ2Rldl9tb2RlX2Rpc2FibGVkJyk7CiB9CgokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgnbWVzc2FnZScgPT4gJG1lc3NhZ2UpKTsKCiMgRU9GCj8+]]></data>
	</file>
	<file>
	  <filename>/functions.externalizer.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGVtcGxhdGVFeHRlcm5hbGl6ZXIgLSBlZGl0IHRlbXBsYXRlcyAmIHN0eWxlc2hlZXRzIGV4dGVybmFsbHkKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKZnVuY3Rpb24gZXh0ZXJuYWxpemVyX0V4cG9ydFRlbXBsYXRlcygmJG1vZCkKewogIGdsb2JhbCAkZ0NtczsKICAkZGIgPSYgJGdDbXMtPkdldERiKCk7CiAgCiAgJGNhY2hlX3BhdGggPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdjYWNoZV9wYXRoJyk7CiAgJHN0eWxlc2hlZXRfZXh0ZW5zaW9uID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnc3R5bGVzaGVldF9leHRlbnNpb24nKTsKICAkdGVtcGxhdGVfZXh0ZW5zaW9uID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgndGVtcGxhdGVfZXh0ZW5zaW9uJyk7CiAgCiAgLy9jaGVjayB0aGF0IHRoZSBzYXZlIHBhdGggZXhpc3RzIGFuZCBpZiBub3QsIGF0dGVtcHQgdG8gY3JlYXRlIGl0CiAgaWYoIWZpbGVfZXhpc3RzKCRjYWNoZV9wYXRoKSkKICAgIGlmKG1rZGlyKCRjYWNoZV9wYXRoKSkKICAgICAgY2htb2QoJGNhY2hlX3BhdGgsIDA3NzcpOwogICAgZWxzZSB7CiAgICAgICRtb2QtPkRpc3BsYXlFcnJvclBhZ2UoIlVuYWJsZSB0byBmaW5kIG9yIGNyZWF0ZSBjYWNoZSBwYXRoOiAiLiRjYWNoZV9wYXRoKTsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogIC8vY2hlY2sgdGhhdCB0aGUgc2F2ZSBwYXRoIGlzIHdyaXRhYmxlCiAgZWxzZWlmKCFpc193cml0YWJsZSgkY2FjaGVfcGF0aCkpIHsKICAgICRtb2QtPkRpc3BsYXlFcnJvclBhZ2UoIlVuYWJsZSB0byB3cml0ZSB0byBjYWNoZSBwYXRoOiAiLiRjYWNoZV9wYXRoKTsKICAgIHJldHVybiBmYWxzZTsKICB9CiAgCiAgLy91cGRhdGUgdGltZXN0YW1wIG9uIGNhY2hlIGRpciB0byAncmVzZXQnIHRpbWVvdXQKICB0b3VjaCgkY2FjaGVfcGF0aCk7CiAgCiAgLy9sb2FkIGFsbCB0aGUgdGVtcGxhdGVzIGFuZCBzYXZlIHRoZW0gdG8gZmlsZXMKICAkdG8gPSYgJGdDbXMtPmdldFRlbXBsYXRlT3BlcmF0aW9ucygpOwogICR0ZW1wbGF0ZXMgPSAkdG8tPkxvYWRUZW1wbGF0ZXMoKTsgIAogIGZvcmVhY2goJHRlbXBsYXRlcyBhcyAkdGVtcGxhdGUpIHsKICAgICRmbmFtZSA9ICRjYWNoZV9wYXRoLicvJy4kbW9kLT5lc2NhcGVGaWxlbmFtZSgkdGVtcGxhdGUtPm5hbWUpLicuJy4kdGVtcGxhdGVfZXh0ZW5zaW9uOwogICAgJGZwID0gZm9wZW4oJGZuYW1lLCAndycpOwogICAgLy93ZSBjb252ZXJ0IENSTEYgdG8gTEYgZm9yIHVuaXggY29tcGF0aWJpbGl0eQogICAgZndyaXRlKCRmcCwgc3RyX3JlcGxhY2UoIlxyXG4iLCAiXG4iLCAkdGVtcGxhdGUtPmNvbnRlbnQpKTsKICAgIGZjbG9zZSgkZnApOwogICAgLy9tYWtlIHN1cmUgdGVtcGxhdGUgZmlsZXMgYXJlIHdyaXRhYmxlCiAgICBjaG1vZCgkZm5hbWUsIDA2NjYpOwogICAgLy9zZXQgdGhlIG1vZGlmaWVkIGRhdGUgdG8gdGhlIHRlbXBsYXRlIG1vZGlmaWVkIGRhdGUKICAgIHRvdWNoKCRmbmFtZSwgJHRlbXBsYXRlLT5tb2RpZmllZF9kYXRlKTsKICB9CiAgCiAgLy9sb2FkIGFsbCB0aGUgc3R5bGVzaGVldHMgYW5kIHNhdmUgdGhlbSB0byBmaWxlcwogICRzbyA9JiAkZ0Ntcy0+Z2V0U3R5bGVzaGVldE9wZXJhdGlvbnMoKTsKICAkc3R5bGVzaGVldHMgPSAkc28tPkxvYWRTdHlsZXNoZWV0cygpOyAgCiAgZm9yZWFjaCgkc3R5bGVzaGVldHMgYXMgJHN0eWxlc2hlZXQpIHsKICAgICRmbmFtZSA9ICRjYWNoZV9wYXRoLicvJy4kbW9kLT5lc2NhcGVGaWxlbmFtZSgkc3R5bGVzaGVldC0+bmFtZSkuJy4nLiRzdHlsZXNoZWV0X2V4dGVuc2lvbjsKICAgICRmcCA9IGZvcGVuKCRmbmFtZSwgJ3cnKTsKICAgIC8vd2UgY29udmVydCBDUkxGIHRvIExGIGZvciB1bml4IGNvbXBhdGliaWxpdHkKICAgIGZ3cml0ZSgkZnAsIHN0cl9yZXBsYWNlKCJcclxuIiwgIlxuIiwgJHN0eWxlc2hlZXQtPnZhbHVlKSk7CiAgICBmY2xvc2UoJGZwKTsKICAgIC8vbWFrZSBzdXJlIHN0eWxlc2hlZXQgZmlsZXMgYXJlIHdyaXRhYmxlCiAgICBjaG1vZCgkZm5hbWUsIDA2NjYpOwogICAgLy9zZXQgdGhlIGZpbGUgbW9kaWZpZWQgZGF0ZSB0byB0aGUgc3R5bGVzaGVldCBtb2RpZmllZCBkYXRlCiAgICB0b3VjaCgkZm5hbWUsICRzdHlsZXNoZWV0LT5tb2RpZmllZF9kYXRlKTsKICB9CgogIC8vIHRlc3QgZm9yIGEgZHVtbXkgaW5kZXguaHRtbCBmaWxlCiAgLy8gYW5kIGNyZWF0ZSBvbmUgaWYgbmVjZXNzYXJ5LgogICRkdW1teSA9ICRjYWNoZV9wYXRoLicvaW5kZXguaHRtbCc7CiAgaWYoICFmaWxlX2V4aXN0cygkZHVtbXkpICkKICAgIHsKICAgICAgdG91Y2goJGR1bW15KTsKICAgIH0KCiAgLy8gbG9hZCBhbGwgbW9kdWxlIHRlbXBsYXRlcyBhbmQgc2F2ZSB0aGVtIHRvIGZpbGVzCiAgJG1vZHVsZW5hbWVzID0gYXJyYXlfa2V5cygkZ0Ntcy0+bW9kdWxlcyk7CiAgZm9yZWFjaCggJG1vZHVsZW5hbWVzIGFzICRvbmVuYW1lICkKICAgIHsKICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV90ZW1wbGF0ZXMKICAgICAgICAgICAgICAgIFdIRVJFIG1vZHVsZV9uYW1lID0gPyc7CiAgICAgICRhbGx0ZW1wbGF0ZXMgPSAkZGItPkdldEFycmF5KCRxdWVyeSxhcnJheSgkb25lbmFtZSkpOwogICAgICBpZiggIWNvdW50KCRhbGx0ZW1wbGF0ZXMpICkgY29udGludWU7CgogICAgICAvLyBDcmVhdGUgdGhlIGRpcmVjdG9yeSBmb3IgdGhpcyBtb2R1bGVzIHRlbXBsYXRlcy4KICAgICAgJGRpciA9ICRjYWNoZV9wYXRoLicvJy4kb25lbmFtZTsKICAgICAgaWYoICFmaWxlX2V4aXN0cygkZGlyKSApCgl7CgkgIEBta2RpcigkZGlyKTsKCSAgQGNobW9kKCRkaXIsMDc3Nyk7Cgl9CiAgICAgIGVsc2VpZighaXNfd3JpdGFibGUoJGRpcikpIHsKCSRtb2QtPkRpc3BsYXlFcnJvclBhZ2UoIlVuYWJsZSB0byB3cml0ZSB0byBkaXJlY3Rvcnk6ICIuJGRpcik7CglyZXR1cm4gZmFsc2U7CiAgICAgIH0KCiAgICAgIGZvcmVhY2goICRhbGx0ZW1wbGF0ZXMgYXMgJG9uZXRlbXBsYXRlICkKCXsKCSAgJGZuYW1lID0gJGRpci4nLycuJG1vZC0+ZXNjYXBlRmlsZW5hbWUoJG9uZXRlbXBsYXRlWyd0ZW1wbGF0ZV9uYW1lJ10pLicuJy4KCSAgICAkdGVtcGxhdGVfZXh0ZW5zaW9uOwoKCSAgJGZwID0gZm9wZW4oJGZuYW1lLCAndycpOwoJICBmd3JpdGUoJGZwLCBzdHJfcmVwbGFjZSgiXHJcbiIsICJcbiIsICRvbmV0ZW1wbGF0ZVsnY29udGVudCddKSk7CgkgIGZjbG9zZSgkZnApOwoJICBjaG1vZCgkZm5hbWUsIDA2NjYpOwoKCSAgLy9zZXQgdGhlIGZpbGUgbW9kaWZpZWQgZGF0ZSB0byB0aGUgc3R5bGVzaGVldCBtb2RpZmllZCBkYXRlCgkgIHRvdWNoKCRmbmFtZSwgJGRiLT5Vbml4VGltZVN0YW1wKCRvbmV0ZW1wbGF0ZVsnbW9kaWZpZWRfZGF0ZSddKSk7Cgl9CgogICAgICAvLyB0ZXN0IGZvciBhIGR1bW15IGluZGV4Lmh0bWwgZmlsZQogICAgICAvLyBhbmQgY3JlYXRlIG9uZSBpZiBuZWNlc3NhcnkuCiAgICAgICRkdW1teSA9ICRkaXIuJy9pbmRleC5odG1sJzsKICAgICAgaWYoICFmaWxlX2V4aXN0cygkZHVtbXkpICkKCXsKCSAgdG91Y2goJGR1bW15KTsKCX0KICAgIH0KCQkKICAvLyBsb2FkIGFsbCBHbG9iYWwgQ29udGVudCBCbG9ja3MgYW5kIHNhdmUgdGhlbSB0byBmaWxlcwoJJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2h0bWxibG9icyc7CgkkYWxsaHRtbGJsb2JzID0gJGRiLT5HZXRBbGwoJHF1ZXJ5KTsKCWlmKCAhY291bnQoJGFsbGh0bWxibG9icykgKSBjb250aW51ZTsKCiAgICAgIC8vIENyZWF0ZSB0aGUgZGlyZWN0b3J5IGZvciB0aGlzIG1vZHVsZXMgdGVtcGxhdGVzLgogICAgICAkZGlyID0gJGNhY2hlX3BhdGguJy9HbG9iYWxDb250ZW50QmxvY2tzJzsKICAgICAgaWYoICFmaWxlX2V4aXN0cygkZGlyKSApCgl7CgkgIEBta2RpcigkZGlyKTsKCSAgQGNobW9kKCRkaXIsMDc3Nyk7Cgl9CiAgICAgIGVsc2VpZighaXNfd3JpdGFibGUoJGRpcikpIHsKCSRtb2QtPkRpc3BsYXlFcnJvclBhZ2UoIlVuYWJsZSB0byB3cml0ZSB0byBkaXJlY3Rvcnk6ICIuJGRpcik7CglyZXR1cm4gZmFsc2U7CiAgICAgIH0KCQkJCglmb3JlYWNoKCAkYWxsaHRtbGJsb2JzIGFzICRvbmVodG1sYmxvYnMgKQoJewoJCSRmbmFtZSA9ICRkaXIuJy8nLiRtb2QtPmVzY2FwZUZpbGVuYW1lKCRvbmVodG1sYmxvYnNbJ2h0bWxibG9iX25hbWUnXSkuJy4nLgoJICAgICR0ZW1wbGF0ZV9leHRlbnNpb247CgoJICAkZnAgPSBmb3BlbigkZm5hbWUsICd3Jyk7CgkgIGZ3cml0ZSgkZnAsIHN0cl9yZXBsYWNlKCJcclxuIiwgIlxuIiwgJG9uZWh0bWxibG9ic1snaHRtbCddKSk7CgkgIGZjbG9zZSgkZnApOwoJICBjaG1vZCgkZm5hbWUsIDA2NjYpOwoKCSAgLy9zZXQgdGhlIGZpbGUgbW9kaWZpZWQgZGF0ZSB0byB0aGUgc3R5bGVzaGVldCBtb2RpZmllZCBkYXRlCgkgIHRvdWNoKCRmbmFtZSwgJGRiLT5Vbml4VGltZVN0YW1wKCRvbmVodG1sYmxvYnNbJ21vZGlmaWVkX2RhdGUnXSkpOwkKCX0KCiAgICAgIC8vIHRlc3QgZm9yIGEgZHVtbXkgaW5kZXguaHRtbCBmaWxlCiAgICAgIC8vIGFuZCBjcmVhdGUgb25lIGlmIG5lY2Vzc2FyeS4KICAgICAgJGR1bW15ID0gJGRpci4nL2luZGV4Lmh0bWwnOwogICAgICBpZiggIWZpbGVfZXhpc3RzKCRkdW1teSkgKQoJewoJICB0b3VjaCgkZHVtbXkpOwoJfQoJCiAgLy8gbG9hZCBzb21lIFNpdGVQcmVmcyBhbmQgc2F2ZSB0aGVtIHRvIGZpbGVzCgkkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nc2l0ZXByZWZzJzsKCSRhbGxzaXRlcHJlZnMgPSAkZGItPkdldEFsbCgkcXVlcnkpOwoJaWYoICFjb3VudCgkYWxsc2l0ZXByZWZzKSApIGNvbnRpbnVlOwoKICAgICAgLy8gQ3JlYXRlIHRoZSBkaXJlY3RvcnkgZm9yIHRoaXMgbW9kdWxlcyB0ZW1wbGF0ZXMuCiAgICAgICRkaXIgPSAkY2FjaGVfcGF0aC4nL1NpdGVQcmVmcyc7CiAgICAgIGlmKCAhZmlsZV9leGlzdHMoJGRpcikgKQoJewoJICBAbWtkaXIoJGRpcik7CgkgIEBjaG1vZCgkZGlyLDA3NzcpOwoJfQogICAgICBlbHNlaWYoIWlzX3dyaXRhYmxlKCRkaXIpKSB7CgkkbW9kLT5EaXNwbGF5RXJyb3JQYWdlKCJVbmFibGUgdG8gd3JpdGUgdG8gZGlyZWN0b3J5OiAiLiRkaXIpOwoJcmV0dXJuIGZhbHNlOwogICAgICB9CgkJCQoJZm9yZWFjaCggJGFsbHNpdGVwcmVmcyBhcyAkb25lc2l0ZXByZWZzICkKCXsKCQoJCWlmICgkb25lc2l0ZXByZWZzWydzaXRlcHJlZl9uYW1lJ10gPT0gJ3NpdGVkb3dubWVzc2FnZScgT1IKCQkJCSRvbmVzaXRlcHJlZnNbJ3NpdGVwcmVmX25hbWUnXSA9PSAnbWV0YWRhdGEnIE9SCgkJCQkkb25lc2l0ZXByZWZzWydzaXRlcHJlZl9uYW1lJ10gPT0gJ3BhZ2VfbWV0YWRhdGEnIE9SCgkJCQkkb25lc2l0ZXByZWZzWydzaXRlcHJlZl9uYW1lJ10gPT0gJ2RlZmF1bHRwYWdlY29udGVudCcpCgkJewoJCQkkZm5hbWUgPSAkZGlyLicvJy4kbW9kLT5lc2NhcGVGaWxlbmFtZSgkb25lc2l0ZXByZWZzWydzaXRlcHJlZl9uYW1lJ10pLicuJy4KCQkJCSR0ZW1wbGF0ZV9leHRlbnNpb247CgoJCQkkZnAgPSBmb3BlbigkZm5hbWUsICd3Jyk7CgkJCWZ3cml0ZSgkZnAsIHN0cl9yZXBsYWNlKCJcclxuIiwgIlxuIiwgJG9uZXNpdGVwcmVmc1snc2l0ZXByZWZfdmFsdWUnXSkpOwoJCQlmY2xvc2UoJGZwKTsKCQkJY2htb2QoJGZuYW1lLCAwNjY2KTsKCgkJCS8vc2V0IHRoZSBmaWxlIG1vZGlmaWVkIGRhdGUgdG8gdGhlIHN0eWxlc2hlZXQgbW9kaWZpZWQgZGF0ZQoJCQl0b3VjaCgkZm5hbWUsICRkYi0+VW5peFRpbWVTdGFtcCgkb25lc2l0ZXByZWZzWydtb2RpZmllZF9kYXRlJ10pKTsJCgkJfQoJfQoKICAgICAgLy8gdGVzdCBmb3IgYSBkdW1teSBpbmRleC5odG1sIGZpbGUKICAgICAgLy8gYW5kIGNyZWF0ZSBvbmUgaWYgbmVjZXNzYXJ5LgogICAgICAkZHVtbXkgPSAkZGlyLicvaW5kZXguaHRtbCc7CiAgICAgIGlmKCAhZmlsZV9leGlzdHMoJGR1bW15KSApCgl7CgkgIHRvdWNoKCRkdW1teSk7Cgl9CgkKICAvLyBsb2FkIFVEVCBhbmQgc2F2ZSB0aGVtIHRvIGZpbGVzCgkkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4ndXNlcnBsdWdpbnMnOwoJJGFsbHVkdCA9ICRkYi0+R2V0QWxsKCRxdWVyeSk7CglpZiggIWNvdW50KCRhbGx1ZHQpICkgY29udGludWU7CgogICAgICAvLyBDcmVhdGUgdGhlIGRpcmVjdG9yeSBmb3IgdGhpcyBtb2R1bGVzIHRlbXBsYXRlcy4KICAgICAgJGRpciA9ICRjYWNoZV9wYXRoLicvVURUJzsKICAgICAgaWYoICFmaWxlX2V4aXN0cygkZGlyKSApCgl7CgkgIEBta2RpcigkZGlyKTsKCSAgQGNobW9kKCRkaXIsMDc3Nyk7Cgl9CiAgICAgIGVsc2VpZighaXNfd3JpdGFibGUoJGRpcikpIHsKCSRtb2QtPkRpc3BsYXlFcnJvclBhZ2UoIlVuYWJsZSB0byB3cml0ZSB0byBkaXJlY3Rvcnk6ICIuJGRpcik7CglyZXR1cm4gZmFsc2U7CiAgICAgIH0KCQkJCglmb3JlYWNoKCAkYWxsdWR0IGFzICRvbmV1ZHQgKQoJewoKCQkJJGZuYW1lID0gJGRpci4nLycuJG1vZC0+ZXNjYXBlRmlsZW5hbWUoJG9uZXVkdFsndXNlcnBsdWdpbl9uYW1lJ10pLicuJy4KCQkJCSR0ZW1wbGF0ZV9leHRlbnNpb247CgoJCQkkZnAgPSBmb3BlbigkZm5hbWUsICd3Jyk7CgkJCWZ3cml0ZSgkZnAsIHN0cl9yZXBsYWNlKCJcclxuIiwgIlxuIiwgJG9uZXVkdFsnY29kZSddKSk7CgkJCWZjbG9zZSgkZnApOwoJCQljaG1vZCgkZm5hbWUsIDA2NjYpOwoKCQkJLy9zZXQgdGhlIGZpbGUgbW9kaWZpZWQgZGF0ZSB0byB0aGUgc3R5bGVzaGVldCBtb2RpZmllZCBkYXRlCgkJCXRvdWNoKCRmbmFtZSwgJGRiLT5Vbml4VGltZVN0YW1wKCRvbmV1ZHRbJ21vZGlmaWVkX2RhdGUnXSkpOwkKCX0KCiAgICAgIC8vIHRlc3QgZm9yIGEgZHVtbXkgaW5kZXguaHRtbCBmaWxlCiAgICAgIC8vIGFuZCBjcmVhdGUgb25lIGlmIG5lY2Vzc2FyeS4KICAgICAgJGR1bW15ID0gJGRpci4nL2luZGV4Lmh0bWwnOwogICAgICBpZiggIWZpbGVfZXhpc3RzKCRkdW1teSkgKQoJewoJICB0b3VjaCgkZHVtbXkpOwoJfQoJCQp9CgoKZnVuY3Rpb24gZXh0ZXJuYWxpemVyX0ltcG9ydFRlbXBsYXRlcygmJG1vZCkKewogIGdsb2JhbCAkZ0NtczsKICAkZGIgPSYgJGdDbXMtPkdldERiKCk7CiAgICAKICAkY2FjaGVfcGF0aCA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2NhY2hlX3BhdGgnKTsKICAkdGltZW91dCA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ3RpbWVvdXQnKTsKICAkc3R5bGVzaGVldF9leHRlbnNpb24gPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdzdHlsZXNoZWV0X2V4dGVuc2lvbicpOwogICR0ZW1wbGF0ZV9leHRlbnNpb24gPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCd0ZW1wbGF0ZV9leHRlbnNpb24nKTsKICAkbW9zdF9yZWNlbnRfZWRpdCA9IEBmaWxlbXRpbWUoJGNhY2hlX3BhdGgpOwoKICAvL2Rvbid0IHJhaXNlIGFuIGVycm9yIGFzIHRoaXMgY291bGQgYmUgY2FsbGVkIGZyb20gdGhlIGZyb250ZW5kCiAgaWYoIWZpbGVfZXhpc3RzKCRjYWNoZV9wYXRoKSkKICAgIHJldHVybiBmYWxzZTsKICAgIAogIC8vbG9hZCBhbGwgdGhlIHRlbXBsYXRlcyBmcm9tIHRoZSBkYXRhYmFzZSBhbmQgdXBkYXRlIHRoZW0gZnJvbSB0aGUgZmlsZXMKICAkdG8gPSYgJGdDbXMtPmdldFRlbXBsYXRlT3BlcmF0aW9ucygpOwogICR0ZW1wbGF0ZXMgPSAkdG8tPkxvYWRUZW1wbGF0ZXMoKTsKICAgIAogIGZvcmVhY2goJHRlbXBsYXRlcyBhcyAka2V5ID0+ICR0ZW1wbGF0ZSkgewogICAgJGZuYW1lID0gJGNhY2hlX3BhdGguJy8nLiRtb2QtPmVzY2FwZUZpbGVuYW1lKCR0ZW1wbGF0ZS0+bmFtZSkuJy4nLiR0ZW1wbGF0ZV9leHRlbnNpb247CiAgICAkZnRpbWUgPSBAZmlsZW10aW1lKCRmbmFtZSk7CiAgICAkbW9zdF9yZWNlbnRfZWRpdCA9IG1heCgkbW9zdF9yZWNlbnRfZWRpdCwgJGZ0aW1lKTsKICAgICAgCiAgICAvL29ubHkgbG9hZCB0aGUgZmlsZSBpZiBpdCBoYXMgYmVlbiBtb2RpZmllZCAoZXhpc3RlbmNlIGlzIGltcGxpY2l0KQogICAgLy9hbmQgZmlsZXNpemUhPTAgCiAgICBpZigkZnRpbWUgPiAkdGVtcGxhdGUtPm1vZGlmaWVkX2RhdGUgJiYgKCRmc2l6ZSA9IGZpbGVzaXplKCRmbmFtZSkpICE9IDApIHsKICAgICAgJGZwID0gZm9wZW4oJGZuYW1lLCAncicpOwogICAgICAkdGVtcGxhdGVzWyRrZXldLT5jb250ZW50ID0gZnJlYWQoJGZwLCAkZnNpemUpOwogICAgICAkdGVtcGxhdGVzWyRrZXldLT5TYXZlKCk7CiAgICAgIGZjbG9zZSgkZnApOwogICAgfQogIH0KICAgIAogIC8vbG9hZCBhbGwgdGhlIHN0eWxlc2hlZXRzIGZyb20gdGhlIGRhdGFiYXNlIGFuZCB1cGRhdGUgdGhlbSBmcm9tIHRoZSBmaWxlcwogICRzbyA9JiAkZ0Ntcy0+Z2V0U3R5bGVzaGVldE9wZXJhdGlvbnMoKTsKICAkc3R5bGVzaGVldHMgPSAkc28tPkxvYWRTdHlsZXNoZWV0cygpOwoKICBmb3JlYWNoKCRzdHlsZXNoZWV0cyBhcyAka2V5ID0+ICRzdHlsZXNoZWV0KSB7CiAgICAkZm5hbWUgPSAkY2FjaGVfcGF0aC4nLycuJG1vZC0+ZXNjYXBlRmlsZW5hbWUoJHN0eWxlc2hlZXQtPm5hbWUpLicuJy4kc3R5bGVzaGVldF9leHRlbnNpb247CiAgICAkZnRpbWUgPSBAZmlsZW10aW1lKCRmbmFtZSk7CiAgICAkbW9zdF9yZWNlbnRfZWRpdCA9IG1heCgkbW9zdF9yZWNlbnRfZWRpdCwgJGZ0aW1lKTsKICAgICAgCiAgICAvL29ubHkgbG9hZCB0aGUgZmlsZSBpZiBpdCBoYXMgYmVlbiBtb2RpZmllZCAoZXhpc3RlbmNlIGlzIGltcGxpY2l0KQogICAgaWYoJGZ0aW1lID4gQCRzdHlsZXNoZWV0LT5tb2RpZmllZF9kYXRlICYmICgkZnNpemUgPSBmaWxlc2l6ZSgkZm5hbWUpKSAhPSAwKSB7CiAgICAgICRmcCA9IGZvcGVuKCRmbmFtZSwgJ3InKTsKICAgICAgJHN0eWxlc2hlZXRzWyRrZXldLT52YWx1ZSA9IGZyZWFkKCRmcCwgJGZzaXplKTsKICAgICAgJHN0eWxlc2hlZXRzWyRrZXldLT5TYXZlKCk7CiAgICAgIGZjbG9zZSgkZnApOwogICAgfQogIH0KCQogIC8vbG9hZCBhbGwgdGhlIEdsb2JhbCBDb250ZW50IEJsb2NrcyBmcm9tIHRoZSBkYXRhYmFzZSBhbmQgdXBkYXRlIHRoZW0gZnJvbSB0aGUgZmlsZXMKCSRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidodG1sYmxvYnMnOwoJJGFsbGh0bWxibG9icyA9ICRkYi0+R2V0QWxsKCRxdWVyeSk7CiAgJGRpciA9ICRjYWNoZV9wYXRoLicvR2xvYmFsQ29udGVudEJsb2Nrcyc7CiAgZm9yZWFjaCggJGFsbGh0bWxibG9icyBhcyAkb25laHRtbGJsb2JzICkKCXsKCSAgJGZuYW1lID0gJGRpci4nLycuJG9uZWh0bWxibG9ic1snaHRtbGJsb2JfbmFtZSddLicuJy4kdGVtcGxhdGVfZXh0ZW5zaW9uOwoJICBpZiggIUBmaWxlX2V4aXN0cygkZm5hbWUpICkgY29udGludWU7CgoJICAkZnRpbWUgPSBmaWxlbXRpbWUoJGZuYW1lKTsKCSAgJGZzaXplID0gZmlsZXNpemUoJGZuYW1lKTsKCSAgJG1vc3RfcmVjZW50X2VkaXQgPSBtYXgoJG1vc3RfcmVjZW50X2VkaXQsICRmdGltZSk7CgkgICRkYm10aW1lID0gJGRiLT5Vbml4VGltZVN0YW1wKCRvbmVodG1sYmxvYnNbJ21vZGlmaWVkX2RhdGUnXSk7CgkgICRmZGJ0aW1lID0gJGRiLT5EYlRpbWVTdGFtcCgkZnRpbWUpOwoKCSAgaWYoICRmdGltZSA+ICRkYm10aW1lICYmICRmc2l6ZSAhPSAwICkKCSAgICB7CgkgICAgICAkZnAgPSBmb3BlbigkZm5hbWUsJ3InKTsKCSAgICAgICRvbmVodG1sYmxvYnNbJ2h0bWwnXSA9IGZyZWFkKCRmcCwkZnNpemUpOwoJICAgICAgZmNsb3NlKCRmcCk7CgoJICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4iaHRtbGJsb2JzIFNFVCBodG1sID0gPywgbW9kaWZpZWRfZGF0ZSA9ICRmZGJ0aW1lCiAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIGh0bWxibG9iX25hbWUgPSA/IjsgIAoJICAgICAgJGRiciA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksCgkJCQkgIGFycmF5KCRvbmVodG1sYmxvYnNbJ2h0bWwnXSwKCQkJCQkkb25laHRtbGJsb2JzWydodG1sYmxvYl9uYW1lJ10pKTsKCSAgICB9Cgl9CgkKICAvL2xvYWQgYWxsIHRoZSBTaXRlUHJlZnMgZnJvbSB0aGUgZGF0YWJhc2UgYW5kIHVwZGF0ZSB0aGVtIGZyb20gdGhlIGZpbGVzCgkkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nc2l0ZXByZWZzJzsKCSRhbGxzaXRlcHJlZnMgPSAkZGItPkdldEFsbCgkcXVlcnkpOwogICRkaXIgPSAkY2FjaGVfcGF0aC4nL1NpdGVQcmVmcyc7CiAgZm9yZWFjaCggJGFsbHNpdGVwcmVmcyBhcyAkb25lc2l0ZXByZWZzICkKCXsKCQlpZiAoJG9uZXNpdGVwcmVmc1snc2l0ZXByZWZfbmFtZSddID09ICdzaXRlZG93bm1lc3NhZ2UnIE9SCgkJCSRvbmVzaXRlcHJlZnNbJ3NpdGVwcmVmX25hbWUnXSA9PSAnbWV0YWRhdGEnIE9SCgkJCSRvbmVzaXRlcHJlZnNbJ3NpdGVwcmVmX25hbWUnXSA9PSAncGFnZV9tZXRhZGF0YScgT1IKCQkJJG9uZXNpdGVwcmVmc1snc2l0ZXByZWZfbmFtZSddID09ICdkZWZhdWx0cGFnZWNvbnRlbnQnKQoJCXsKCQkJJGZuYW1lID0gJGRpci4nLycuJG9uZXNpdGVwcmVmc1snc2l0ZXByZWZfbmFtZSddLicuJy4kdGVtcGxhdGVfZXh0ZW5zaW9uOwoJCQlpZiggIUBmaWxlX2V4aXN0cygkZm5hbWUpICkgY29udGludWU7CgoJCQkkZnRpbWUgPSBmaWxlbXRpbWUoJGZuYW1lKTsKCQkJJGZzaXplID0gZmlsZXNpemUoJGZuYW1lKTsKCQkJJG1vc3RfcmVjZW50X2VkaXQgPSBtYXgoJG1vc3RfcmVjZW50X2VkaXQsICRmdGltZSk7CgkJCSRkYm10aW1lID0gJGRiLT5Vbml4VGltZVN0YW1wKCRvbmVzaXRlcHJlZnNbJ21vZGlmaWVkX2RhdGUnXSk7CgkJCSRmZGJ0aW1lID0gJGRiLT5EYlRpbWVTdGFtcCgkZnRpbWUpOwoKCQkJaWYoICRmdGltZSA+ICRkYm10aW1lICYmICRmc2l6ZSAhPSAwICkKCQkJCXsKCQkJCQkkZnAgPSBmb3BlbigkZm5hbWUsJ3InKTsKCQkJCQkkb25lc2l0ZXByZWZzWydzaXRlcHJlZl92YWx1ZSddID0gZnJlYWQoJGZwLCRmc2l6ZSk7CgkJCQkJZmNsb3NlKCRmcCk7CgoJCQkJCSRxdWVyeSA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuInNpdGVwcmVmcyBTRVQgc2l0ZXByZWZfdmFsdWUgPSA/LCBtb2RpZmllZF9kYXRlID0gJGZkYnRpbWUKCQkJCQkJCQkJCQkJCVdIRVJFIHNpdGVwcmVmX25hbWUgPSA/IjsgIAoJCQkJCSRkYnIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LAoJCQkJCQlhcnJheSgkb25lc2l0ZXByZWZzWydzaXRlcHJlZl92YWx1ZSddLAoJCQkJCQkkb25lc2l0ZXByZWZzWydzaXRlcHJlZl9uYW1lJ10pKTsKCQkJCX0KCQl9Cgl9CgkKICAvL2xvYWQgYWxsIHRoZSBVRFQgZnJvbSB0aGUgZGF0YWJhc2UgYW5kIHVwZGF0ZSB0aGVtIGZyb20gdGhlIGZpbGVzCgkkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4ndXNlcnBsdWdpbnMnOwoJJGFsbHVkdCA9ICRkYi0+R2V0QWxsKCRxdWVyeSk7CiAgJGRpciA9ICRjYWNoZV9wYXRoLicvVURUJzsKICBmb3JlYWNoKCAkYWxsdWR0IGFzICRvbmV1ZHQgKQoJewoKCQkJJGZuYW1lID0gJGRpci4nLycuJG9uZXVkdFsndXNlcnBsdWdpbl9uYW1lJ10uJy4nLiR0ZW1wbGF0ZV9leHRlbnNpb247CgkJCWlmKCAhQGZpbGVfZXhpc3RzKCRmbmFtZSkgKSBjb250aW51ZTsKCgkJCSRmdGltZSA9IGZpbGVtdGltZSgkZm5hbWUpOwoJCQkkZnNpemUgPSBmaWxlc2l6ZSgkZm5hbWUpOwoJCQkkbW9zdF9yZWNlbnRfZWRpdCA9IG1heCgkbW9zdF9yZWNlbnRfZWRpdCwgJGZ0aW1lKTsKCQkJJGRibXRpbWUgPSAkZGItPlVuaXhUaW1lU3RhbXAoJG9uZXVkdFsnbW9kaWZpZWRfZGF0ZSddKTsKCQkJJGZkYnRpbWUgPSAkZGItPkRiVGltZVN0YW1wKCRmdGltZSk7CgoJCQlpZiggJGZ0aW1lID4gJGRibXRpbWUgJiYgJGZzaXplICE9IDAgKQoJCQkJewoJCQkJCSRmcCA9IGZvcGVuKCRmbmFtZSwncicpOwoJCQkJCSRvbmV1ZHRbJ2NvZGUnXSA9IGZyZWFkKCRmcCwkZnNpemUpOwoJCQkJCWZjbG9zZSgkZnApOwoKCQkJCQkkcXVlcnkgPSAnVVBEQVRFICcuY21zX2RiX3ByZWZpeCgpLiJ1c2VycGx1Z2lucyBTRVQgY29kZSA9ID8sIG1vZGlmaWVkX2RhdGUgPSAkZmRidGltZQoJCQkJCQkJCQkJCQkJV0hFUkUgdXNlcnBsdWdpbl9uYW1lID0gPyI7ICAKCQkJCQkkZGJyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwKCQkJCQkJYXJyYXkoJG9uZXVkdFsnY29kZSddLAoJCQkJCQkkb25ldWR0Wyd1c2VycGx1Z2luX25hbWUnXSkpOwoJCQkJfQoJfQoKICAvLyBMb2FkIG1vZHVsZSB0ZW1wbGF0ZXMgZnJvbSBkYXRhYmFzZQogIC8vIGFuZCBjb21wYXJlIHRoZW0gd2l0aCBmaWxlcy4KICAkbW9kdWxlbmFtZXMgPSBhcnJheV9rZXlzKCRnQ21zLT5tb2R1bGVzKTsKICBmb3JlYWNoKCAkbW9kdWxlbmFtZXMgYXMgJG9uZW1vZHVsZW5hbWUgKQogICAgewogICAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3RlbXBsYXRlcwogICAgICAgICAgICAgICAgV0hFUkUgbW9kdWxlX25hbWUgPSA/JzsKICAgICAgJGFsbHRlbXBsYXRlcyA9ICRkYi0+R2V0QXJyYXkoJHF1ZXJ5LGFycmF5KCRvbmVtb2R1bGVuYW1lKSk7CiAgICAgIGlmKCAhY291bnQoJGFsbHRlbXBsYXRlcykgKSBjb250aW51ZTsKCiAgICAgIC8vIENyZWF0ZSB0aGUgZGlyZWN0b3J5IGZvciB0aGlzIG1vZHVsZXMgdGVtcGxhdGVzLgogICAgICAkZGlyID0gJGNhY2hlX3BhdGguJy8nLiRvbmVtb2R1bGVuYW1lOwogICAgICBmb3JlYWNoKCAkYWxsdGVtcGxhdGVzIGFzICRvbmV0ZW1wbGF0ZSApCgl7CgkgICRmbmFtZSA9ICRkaXIuJy8nLiRvbmV0ZW1wbGF0ZVsndGVtcGxhdGVfbmFtZSddLicuJy4kdGVtcGxhdGVfZXh0ZW5zaW9uOwoJICBpZiggIUBmaWxlX2V4aXN0cygkZm5hbWUpICkgY29udGludWU7CgoJICAkZnRpbWUgPSBmaWxlbXRpbWUoJGZuYW1lKTsKCSAgJGZzaXplID0gZmlsZXNpemUoJGZuYW1lKTsKCSAgJG1vc3RfcmVjZW50X2VkaXQgPSBtYXgoJG1vc3RfcmVjZW50X2VkaXQsICRmdGltZSk7CgkgICRkYm10aW1lID0gJGRiLT5Vbml4VGltZVN0YW1wKCRvbmV0ZW1wbGF0ZVsnbW9kaWZpZWRfZGF0ZSddKTsKCSAgJGZkYnRpbWUgPSAkZGItPkRiVGltZVN0YW1wKCRmdGltZSk7CgoJICBpZiggJGZ0aW1lID4gJGRibXRpbWUgJiYgJGZzaXplICE9IDAgKQoJICAgIHsKCSAgICAgICRmcCA9IGZvcGVuKCRmbmFtZSwncicpOwoJICAgICAgJG9uZXRlbXBsYXRlWydjb250ZW50J10gPSBmcmVhZCgkZnAsJGZzaXplKTsKCSAgICAgIGZjbG9zZSgkZnApOwoKCSAgICAgICRxdWVyeSA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV90ZW1wbGF0ZXMgU0VUIGNvbnRlbnQgPSA/LCBtb2RpZmllZF9kYXRlID0gJGZkYnRpbWUKICAgICAgICAgICAgICAgICAgICAgICAgV0hFUkUgbW9kdWxlX25hbWUgPSA/IEFORCB0ZW1wbGF0ZV9uYW1lID0gPyI7ICAKCSAgICAgICRkYnIgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LAoJCQkJICBhcnJheSgkb25ldGVtcGxhdGVbJ2NvbnRlbnQnXSwKCQkJCQkkb25lbW9kdWxlbmFtZSwgJG9uZXRlbXBsYXRlWyd0ZW1wbGF0ZV9uYW1lJ10pKTsKCSAgICB9Cgl9CiAgICB9CgogIC8vdHVybiBvZmYgZGV2X21vZGUgaWYgdGltZW91dCBpcyByZWFjaGVkCiAgaWYoJHRpbWVvdXQgIT0gMCAmJiB0aW1lKCkgLSAkbW9zdF9yZWNlbnRfZWRpdCA+ICR0aW1lb3V0KjYwKSB7CiAgICAkbW9kLT5TZXRQcmVmZXJlbmNlKCdkZXZfbW9kZScsIGZhbHNlKTsKICAgICRtb2QtPkF1ZGl0KDAsICRtb2QtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkbW9kLT5MYW5nKCdkZXZfbW9kZV90aW1lZG91dCcpKTsKICB9Cn0KCgpmdW5jdGlvbiBleHRlcm5hbGl6ZXJfRGVsZXRlVGVtcGxhdGVDYWNoZSgmJG1vZCkKewogICRjYWNoZV9wYXRoID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnY2FjaGVfcGF0aCcpOwogIHJlY3Vyc2l2ZV9kZWxldGUoJGNhY2hlX3BhdGgpOwp9CgojIEVPRgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RlbXBsYXRlIEV4dGVybmFsaXplcic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ1RoaXMgbW9kdWxlIHdpbGwgbm90IGRvIGFueXRoaW5nIHVudGlsIDxlbT5EZXZlbG9wbWVudCBNb2RlPC9lbT4gaXMgdHVybmVkIG9uLiBTZWUgdGhlIEhlbHAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bGUgVW5pbnN0YWxsZWQuJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsZSB2ZXJzaW9uICVzIGluc3RhbGxlZC4nOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnTW9kdWxlIHByZWZlcmVuY2VzIHVwZGF0ZWQuJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2VzcyBEZW5pZWQuIFBsZWFzZSBjaGVjayB5b3VyIHBlcm1pc3Npb25zLic7CiRsYW5nWydlcnJvciddID0gJ0Vycm9yISc7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsZSB1cGdyYWRlZCB0byB2ZXJzaW9uICVzLic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0FsbG93cyBhbnkgRlRQLWVuYWJsZWQgdGV4dCBvciBIVE1MIGVkaXRvcnMgdG8gZWRpdCBDTVMgdGVtcGxhdGVzICYgc3R5bGVzaGVldHMuJzsKJGxhbmdbJ2Rldl9tb2RlX2VuYWJsZWQnXSA9ICdEZXZlbG9wbWVudCBNb2RlIGVuYWJsZWQuJzsKJGxhbmdbJ2Rldl9tb2RlX2Rpc2FibGVkJ10gPSAnRGV2ZWxvcG1lbnQgTW9kZSBkaXNhYmxlZC4nOwokbGFuZ1snZGV2X21vZGVfdGltZWRvdXQnXSA9ICdEZXZlbG9wbWVudCBNb2RlIHRpbWVkIG91dC4nOwokbGFuZ1sndGl0bGVfZGV2X21vZGUnXSA9ICdEZXZlbG9wbWVudCBNb2RlJzsKJGxhbmdbJ3RpdGxlX3RpbWVvdXQnXSA9ICdEZXYgTW9kZSBUaW1lb3V0JzsKJGxhbmdbJ3RpdGxlX3RpbWVvdXRfdW5pdHMnXSA9ICdtaW51dGVzJzsKJGxhbmdbJ3RpdGxlX2NhY2hlX3BhdGgnXSA9ICdDYWNoZSBQYXRoJzsKJGxhbmdbJ3RpdGxlX3RlbXBsYXRlX2V4dGVuc2lvbiddID0gJ1RlbXBsYXRlIEZpbGUgRXh0ZW5zaW9uJzsKJGxhbmdbJ3RpdGxlX3N0eWxlc2hlZXRfZXh0ZW5zaW9uJ10gPSAnU3R5bGVzaGVldCBGaWxlIEV4dGVuc2lvbic7CiRsYW5nWydvbiddID0gJ09uJzsKJGxhbmdbJ29mZiddID0gJ09mZic7CiRsYW5nWydzdWJtaXQnXSA9ICdTdWJtaXQnOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPgo8bGk+VmVyc2lvbiAxLjMgLSAyNiBNYXJjaCAyMDExICg8YSBocmVmPSJodHRwOi8vd3d3LmVwc2lnb24uZnIiPmVwc2lnb248L2E+KS4gIEFkZGVkIHN1cHBvcnQgZm9yIEdsb2JhbCBDb250ZW50IEJsb2NrcywgVURUcywgc29tZSBTaXRlUHJlZnMgKFNpdGUgZG93biBtZXNzYWdlLCBNZXRhZGF0YSwgRGVmYXVsdCBQYWdlIENvbnRlbnQsIFBhZ2UgTWV0YWRhdGEpLiBCdW1wIG1pbmltdW0gQ01TIHZlcnNpb24sIHNwbGl0IGludG8gbXVsdGlwbGUgZmlsZXMuPC9saT4KPGxpPlZlcnNpb24gMS4yIC0gTm92ZW1iZXIgMjAwOCAoY2FsZ3V5MTAwMCkuICBBZGRlZCBzdXBwb3J0IGZvciBtb2R1bGUgZGF0YWJhc2UgdGVtcGxhdGVzLiBCdW1wIG1pbmltdW0gQ01TIHZlcnNpb24sIHNwbGl0IGludG8gbXVsdGlwbGUgZmlsZXMuPC9saT4KPGxpPlZlcnNpb24gMS4wLjQgMTMgRGVjZW1iZXIgMjAwNi4gQWRkZWQgZ2VybWFuIHRyYW5zbGF0aW9uLCBmaXhlZCBzb21lIHVudHJhbnNsYXRhYmxlIHRleHQ8L2xpPgo8bGk+VmVyc2lvbiAxLjAuMyAyNyBTZXB0ZW1iZXIgMjAwNi4gQWRkZWQgcmVkaXJlY3QgYWZ0ZXIgc2F2ZSwgbXV0ZWQgRV9OT1RJQ0UgZXJyb3I8L2xpPgo8bGk+VmVyc2lvbiAxLjAuMiAyOSBBdWd1c3QgMjAwNi4gRml4ZWQgbGF6eSBsb2FkaW5nIGZvciBDTVMgMS4wYmV0YTY8L2xpPgo8bGk+VmVyc2lvbiAxLjAuMSA5IEp1bmUgMjAwNi4gU3BlY2lhbCBjaGFyYWN0ZXJzIGluIGZpbGVuYW1lcyBhcmUgZXNjYXBlZC4gRml4ZWQgYW5vdGhlciBidWcuPC9saT4KPGxpPlZlcnNpb24gMS4wIDI4IE1heSAyMDA2LiBJbml0aWFsIFJlbGVhc2UuPC9saT4KPC91bD4nOwokbGFuZ1snaGVscCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPgo8cD5JdCBhbGxvd3MgeW91IHRvIHVzZSBhbnkgZXh0ZXJuYWwgZWRpdG9yIHRvIGVkaXQgeW91ciB0ZW1wbGF0ZXMgYW5kIHN0eWxlc2hlZXRzLjwvcD4KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+CjxwPkZpcnN0IGNvbmZpZ3VyZSB0aGUgcGF0aCB3aGVyZSB5b3Ugd291bGQgbGlrZSB0aGUgdGVtcGxhdGUgZmlsZXMgdG8gYmUgc2F2ZWQuIApUaGUgZGVmYXVsdCBpcyB0bXAvZXh0ZXJuYWxpemVyLyB3aGljaCBzaG91bGQgd29yayBmb3IgbW9zdCBwZW9wbGUuIE5leHQgdHVybiBvbgo8ZW0+RGV2ZWxvcG1lbnQgTW9kZTwvZW0+IHdoaWNoIGV4cG9ydHMgZWFjaCB0ZW1wbGF0ZSBhbmQgc3R5bGVzaGVldCBmcm9tIHRoZSAKZGF0YWJhc2UgdG8gZmlsZXMuIFlvdSBtYXkgbm93IGVkaXQgdGhlIGZpbGVzIGhvd2V2ZXIgeW91IGxpa2UgYW5kIGFueSBjaGFuZ2VzIGFyZSAKYXV0b21hdGljYWxseSBkZXRlY3RlZCwgaW1wb3J0ZWQgdG8gdGhlIGRhdGFiYXNlIGFuZCB0YWtlIGVmZmVjdCBpbW1lZGlhdGVseS48L3A+Cgo8cD5JZiB5b3UgZWRpdCBvciBhZGQgbmV3IHRlbXBsYXRlcyBvciBzdHlsZXNoZWV0cyB1c2luZyB0aGUgbm9ybWFsIHdlYiBpbnRlcmZhY2UgCndoaWxlIDxlbT5EZXZlbG9wbWVudCBNb2RlPC9lbT4gaXMgb24sIHRoZXNlIGNoYW5nZXMgd2lsbCBiZSBleHBvcnRlZCB0byB0aGUgZmlsZXMuIApBbnkgZmlsZXMgaW4gdGhlIHRlbXBsYXRlIHBhdGggd2hvc2UgbmFtZXMgZG8gbm90IGNvcnJlc3BvbmQgdG8gZXhpc3RpbmcgdGVtcGxhdGVzCndpbGwgYmUgaWdub3JlZC48L3A+Cgo8cD5XaGVuIHlvdSBoYXZlIGZpbmlzaGVkIAplZGl0aW5nIHRoZSBmaWxlcyB5b3Ugc2hvdWxkIHR1cm4gPGVtPkRldmVsb3BtZW50IE1vZGU8L2VtPiBvZmYgb3RoZXJ3aXNlIGl0IAp3aWxsIGFmZmVjdCBwZXJmb3JtYW5jZS4gSG93ZXZlciwgaWYgbm8gY2hhbmdlcyBhcmUgbWFkZSB0byBhbnkgb2YgdGhlIGZpbGVzIGZvciAKPGVtPlRpbWVvdXQ8L2VtPiBtaW51dGVzLCA8ZW0+RGV2ZWxvcG1lbnQgTW9kZTwvZW0+IHdpbGwgdHVybiBpdHNlbGYgb2ZmIAphdXRvbWF0aWNhbGx5LiBTZXQgPGVtPlRpbWVvdXQ8L2VtPiB0byAwIHRvIGRpc2FibGUgdGhpcyBmZWF0dXJlLjwvcD4KCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDYsIFRhbWx5biBSaG9kZXMgJmx0OzxhIGhyZWY9Imh0dHA6Ly90YW1seW4ub3JnIj50YW1seW4ub3JnPC9hPiZndDsuIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBtb2R1bGUgaGFzIGJlZW4gcmVsZWFzZWQgdW5kZXIgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+R05VIFB1YmxpYyBMaWNlbnNlPC9hPi4gCllvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+Cic7Cj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGVtcGxhdGVFeHRlcm5hbGl6ZXIgLSBlZGl0IHRlbXBsYXRlcyAmIHN0eWxlc2hlZXRzIGV4dGVybmFsbHkKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKJGNvbmZpZyA9JiAkZ0Ntcy0+R2V0Q29uZmlnKCk7CgovLyBjcmVhdGUgYSBwZXJtaXNzaW9uCiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdUZW1wbGF0ZSBFeHRlcm5hbGl6ZXInLCAnVGVtcGxhdGUgRXh0ZXJuYWxpemVyJyk7CgovLyBjcmVhdGUgcHJlZmVyZW5jZXMgd2l0aCBkZWZhdWx0IHZhbHVlcwokdGhpcy0+U2V0UHJlZmVyZW5jZSgiZGV2X21vZGUiLCBmYWxzZSk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCJ0aW1lb3V0IiwgMzApOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgiY2FjaGVfcGF0aCIsICRjb25maWdbJ3Jvb3RfcGF0aCddLicvdG1wL2V4dGVybmFsaXplcicpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgic3R5bGVzaGVldF9leHRlbnNpb24iLCAnY3NzJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCJ0ZW1wbGF0ZV9leHRlbnNpb24iLCAnaHRtbCcpOwoKLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCiR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygnaW5zdGFsbGVkJywkdGhpcy0+R2V0VmVyc2lvbigpKSk7CgojIEVPRgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGVtcGxhdGVFeHRlcm5hbGl6ZXIgLSBlZGl0IHRlbXBsYXRlcyAmIHN0eWxlc2hlZXRzIGV4dGVybmFsbHkKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gcmVtb3ZlIHRoZSBwZXJtaXNzaW9ucwokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignVGVtcGxhdGUgRXh0ZXJuYWxpemVyJyk7CiAgICAKLy8gcmVtb3ZlIHByZWZlcmVuY2VzCiR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCJkZXZfbW9kZSIpOwokdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgidGltZW91dCIpOwokdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgiY2FjaGVfcGF0aCIpOwokdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgic3R5bGVzaGVldF9leHRlbnNpb24iKTsKJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoInRlbXBsYXRlX2V4dGVuc2lvbiIpOwogICAgCi8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZwokdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ3VuaW5zdGFsbGVkJykpOwoKIyBFT0YKPz4=]]></data>
	</file>
	<file>
	  <filename>/TemplateExternalizer.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGVtcGxhdGVFeHRlcm5hbGl6ZXIgLSBlZGl0IHRlbXBsYXRlcyAmIHN0eWxlc2hlZXRzIGV4dGVybmFsbHkKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKY2xhc3MgVGVtcGxhdGVFeHRlcm5hbGl6ZXIgZXh0ZW5kcyBDTVNNb2R1bGUKewogIHZhciAkX3Rvb2xzX2xvYWRlZDsKCiAgLy9tb2R1bGUgY29uc3RydWN0b3IKICBmdW5jdGlvbiBUZW1wbGF0ZUV4dGVybmFsaXplcigpCiAgewogICAgLy9jYWxsIHBhcmVudCBjb25zdHJ1Y3RvcgogICAgJHRoaXMtPkNNU01vZHVsZSgpOwoKICAgIC8vIGluaXRpYWxpemF0aW9uCiAgICAkdGhpcy0+X3Rvb2xzX2xvYWRlZCA9IGZhbHNlOwoKICAgIC8vaW1wb3J0IHRoZSB0ZW1wbGF0ZXMKICAgIGlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJkZXZfbW9kZSIpKQogICAgICB7CgkkdGhpcy0+SW1wb3J0VGVtcGxhdGVzKCk7CiAgICAgIH0KICB9CgogIGZ1bmN0aW9uIExhenlMb2FkVG9vbHMoKQogIHsKICAgIGlmKCAkdGhpcy0+X3Rvb2xzX2xvYWRlZCA9PSBmYWxzZSApCiAgICAgIHsKCXJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9ucy5leHRlcm5hbGl6ZXIucGhwJyk7CgkkdGhpcy0+X3Rvb2xzX2xvYWRlZCA9IHRydWU7CiAgICAgIH0KICB9CgogIGZ1bmN0aW9uIEdldE5hbWUoKQogIHsKICAgIHJldHVybiAnVGVtcGxhdGVFeHRlcm5hbGl6ZXInOwogIH0KCiAgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOwogIH0KCiAgZnVuY3Rpb24gR2V0VmVyc2lvbigpCiAgewogICAgcmV0dXJuICcxLjMnOwogIH0KCiAgZnVuY3Rpb24gR2V0SGVscCgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdoZWxwJyk7CiAgfQoKICBmdW5jdGlvbiBHZXRBdXRob3IoKQogIHsKICAgIHJldHVybiAndGFtbHluJzsKICB9CgogIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkKICB7CiAgICByZXR1cm4gJ3RhbUB6ZW5vbG9neS5jby51ayc7CiAgfQoKICBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnY2hhbmdlbG9nJyk7CiAgfQoKICBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpCiAgewogICAgcmV0dXJuIGZhbHNlOwogIH0KCiAgZnVuY3Rpb24gSGFzQWRtaW4oKQogIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkKICB7CiAgICByZXR1cm4gJ2xheW91dCc7CiAgfQoKCiAgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdtb2RkZXNjcmlwdGlvbicpOwogIH0KCgogIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpCiAgewogICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1RlbXBsYXRlIEV4dGVybmFsaXplcicpOwogIH0KCiAgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKQogIHsKICAgIHJldHVybiAiMS45LjQiOwogIH0KCgogIGZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0aW5zdGFsbCcpOwogIH0KCiAgLyoqCiAgICogRXhwb3J0IGFueSBuZXdseSBjcmVhdGVkIHRlbXBsYXRlcyBpZiBkZXZfbW9kZSBpcyBvbgogICAqLyAgCiAgZnVuY3Rpb24gQWRkVGVtcGxhdGVQb3N0KCYkdGVtcGxhdGUpIHsKICAgIGlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJkZXZfbW9kZSIpKQogICAgICAkdGhpcy0+RXhwb3J0VGVtcGxhdGVzKCk7CiAgfQogIAogIC8qKgogICAqIEV4cG9ydCB0aGUgY2hhbmdlcyB0byB0ZW1wbGF0ZXMgaWYgZGV2X21vZGUgaXMgb24KICAgKi8gIAogIGZ1bmN0aW9uIEVkaXRUZW1wbGF0ZVBvc3QoJiR0ZW1wbGF0ZSkgewogICAgaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoImRldl9tb2RlIikpCiAgICAgICR0aGlzLT5FeHBvcnRUZW1wbGF0ZXMoKTsKICB9CgoKICBmdW5jdGlvbiBEaXNwbGF5RXJyb3JQYWdlKCRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCwgJG1lc3NhZ2U9JycpCiAgewogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9lcnJvcicsICR0aGlzLT5MYW5nKCdlcnJvcicpKTsKICAgIGlmICgkbWVzc2FnZSAhPSAnJykKICAgICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignbWVzc2FnZScsICRtZXNzYWdlKTsKCiAgICAvLyBEaXNwbGF5IHRoZSBwb3B1bGF0ZWQgdGVtcGxhdGUKICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZXJyb3IudHBsJyk7CiAgfQoKICAKICBmdW5jdGlvbiBlc2NhcGVGaWxlbmFtZSgkZm5hbWUpCiAgewogICAgcmV0dXJuIHN0cnRyKCRmbmFtZSwgIjovP1xcIiwgIi0tLS0iKTsKICB9CgoKICAvKioKICAgKiBFeHBvcnQgdG8gZmlsZXMgYWxsIHRoZSB0ZW1wbGF0ZXMgYW5kIHN0eWxlc2hlZXRzIGZvdW5kIGluIHRoZSBkYXRhYmFzZQogICAqLwogIGZ1bmN0aW9uIEV4cG9ydFRlbXBsYXRlcygpCiAgewogICAgJHRoaXMtPkxhenlMb2FkVG9vbHMoKTsKICAgIHJldHVybiBleHRlcm5hbGl6ZXJfRXhwb3J0VGVtcGxhdGVzKCR0aGlzKTsKICB9CgogIAogIC8qKgogICAqIEltcG9ydCBmcm9tIGZpbGVzIGFsbCB0aGUgdGVtcGxhdGVzIGFuZCBzdHlsZXNoZWV0cyBmb3VuZCBpbiB0aGUgZGF0YWJhc2UKICAgKi8KICBmdW5jdGlvbiBJbXBvcnRUZW1wbGF0ZXMoKQogIHsKICAgICR0aGlzLT5MYXp5TG9hZFRvb2xzKCk7CiAgICByZXR1cm4gZXh0ZXJuYWxpemVyX0ltcG9ydFRlbXBsYXRlcygkdGhpcyk7CiAgfQoKICAKICAvKioKICAgKiBEZWxldGUgYWxsIGZpbGVzIGluIHRoZSBjYWNoZV9wYXRoIGRpcmVjdG9yeQogICAqLwogIGZ1bmN0aW9uIERlbGV0ZVRlbXBsYXRlQ2FjaGUoKQogIHsKICAgICR0aGlzLT5MYXp5TG9hZFRvb2xzKCk7CiAgICByZXR1cm4gZXh0ZXJuYWxpemVyX0RlbGV0ZVRlbXBsYXRlQ2FjaGUoJHRoaXMpOwogIH0KICAKfQoKPz4K]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/adminpanel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfc2VjdGlvbn08L2gzPgo8cD57JGFkbWluX25hdn08L3A+Cnskd2VsY29tZV90ZXh0fQ==]]></data>
	</file>
	<file>
	  <filename>/templates/adminprefs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfc2VjdGlvbn08L2gzPgp7aWYgaXNzZXQoJGluZm9fZGV2bW9kZV9vbil9CiAgPGg0IHN0eWxlPSJjb2xvcjogZ3JlZW47Ij57JGluZm9fZGV2bW9kZV9vbn08L2g0Pgp7L2lmfQp7aWYgJG1lc3NhZ2UhPScnfTxwPnskbWVzc2FnZX08L3A+ey9pZn0KeyRzdGFydGZvcm19Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV9kZXZfbW9kZX06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZGV2X21vZGV9CiAgICAgICAgICAgICAgICA8L3A+Cgk8L2Rpdj4KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHRpdGxlX3RpbWVvdXR9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RpbWVvdXR9PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV9jYWNoZV9wYXRofTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9jYWNoZV9wYXRofTwvcD4KCTwvZGl2PgoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfdGVtcGxhdGVfZXh0ZW5zaW9ufTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90ZW1wbGF0ZV9leHRlbnNpb259PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV9zdHlsZXNoZWV0X2V4dGVuc2lvbn06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfc3R5bGVzaGVldF9leHRlbnNpb259PC9wPgoJPC9kaXY+Cgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fTwvcD4KCTwvZGl2Pgp7JGVuZGZvcm19Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/error.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfZXJyb3J9PC9oMz4KPHA+eyRhZG1pbl9uYXZ9PC9wPgp7aWYgJG1lc3NhZ2UhPScnfTxwPnskbWVzc2FnZX08L3A+ey9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/plugin.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbG91ZG5lc3N9PC9oMz4=]]></data>
	</file>
</module>
