<?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.1</version>
  <mincmsversion>0.11</mincmsversion>
	<help>DQoJPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQoJPHA+DQoJCUl0IGFsbG93cyB5b3UgdG8gdXNlIGFueSBleHRlcm5hbCBlZGl0b3IgdG8gZWRpdCB5b3VyIHRlbXBsYXRlcyBhbmQNCgkJc3R5bGVzaGVldHMuDQoJPC9wPg0KCQ0KCTxoMz5Ib3cgRG8gSSBVc2UgSXQ/PC9oMz4NCgk8cD4NCgkJRmlyc3QgY29uZmlndXJlIHRoZSBwYXRoIHdoZXJlIHlvdSB3b3VsZCBsaWtlIHRoZSB0ZW1wbGF0ZSBmaWxlcyB0byBiZQ0KCQlzYXZlZC4gVGhlIGRlZmF1bHQgaXMgdG1wL2V4dGVybmFsaXplci8gd2hpY2ggc2hvdWxkIHdvcmsgZm9yIG1vc3QNCgkJcGVvcGxlLjxiciAvPk5leHQgdHVybiBvbiA8ZW0+RGV2ZWxvcG1lbnQgTW9kZTwvZW0+IHdoaWNoIGV4cG9ydHMgZWFjaA0KCQl0ZW1wbGF0ZSBhbmQgc3R5bGVzaGVldCBmcm9tIHRoZSBkYXRhYmFzZSB0byBmaWxlcy48YnIgLz5Zb3UgbWF5IG5vdyBlZGl0DQoJCXRoZSBmaWxlcyBob3dldmVyIHlvdSBsaWtlIGFuZCBhbnkgY2hhbmdlcyBhcmUgYXV0b21hdGljYWxseSBkZXRlY3RlZCwNCgkJaW1wb3J0ZWQgdG8gdGhlIGRhdGFiYXNlIGFuZCB0YWtlIGVmZmVjdCBpbW1lZGlhdGVseS4NCgk8L3A+DQoJPHA+DQoJCUlmIHlvdSBlZGl0IG9yIGFkZCBuZXcgdGVtcGxhdGVzIG9yIHN0eWxlc2hlZXRzIHVzaW5nIHRoZSBub3JtYWwgd2ViDQoJCWludGVyZmFjZSB3aGlsZSA8ZW0+RGV2ZWxvcG1lbnQgTW9kZTwvZW0+IGlzIG9uLDxiciAvPnRoZXNlIGNoYW5nZXMgd2lsbCBiZQ0KCQlleHBvcnRlZCB0byB0aGUgZmlsZXMuIEFueSBmaWxlcyBpbiB0aGUgdGVtcGxhdGUgcGF0aCB3aG9zZSBuYW1lcyBkbw0KCQlub3QgY29ycmVzcG9uZCB0byBleGlzdGluZyB0ZW1wbGF0ZXMgd2lsbCBiZSBpZ25vcmVkLg0KCTwvcD4NCgk8cD4NCgkJV2hlbiB5b3UgaGF2ZSBmaW5pc2hlZCBlZGl0aW5nIHRoZSBmaWxlcyB5b3Ugc2hvdWxkIHR1cm4NCgkJPGVtPkRldmVsb3BtZW50IE1vZGU8L2VtPiBvZmYgb3RoZXJ3aXNlIGl0IHdpbGwgYWZmZWN0IHBlcmZvcm1hbmNlLjxiciAvPg0KCQlIb3dldmVyLCBpZiBubyBjaGFuZ2VzIGFyZSBtYWRlIHRvIGFueSBvZiB0aGUgZmlsZXMgZm9yIDxlbT5UaW1lb3V0PC9lbT4NCgkJbWludXRlcywgPGVtPkRldmVsb3BtZW50IE1vZGU8L2VtPiB3aWxsIHR1cm4gaXRzZWxmIG9mZiBhdXRvbWF0aWNhbGx5LjxiciAvPg0KCQlTZXQgPGVtPlRpbWVvdXQ8L2VtPiB0byAwIHRvIGRpc2FibGUgdGhpcyBmZWF0dXJlLg0KCTwvcD4NCgkNCgk8aDM+S05PV04gQlVHPC9oMz4NCgk8cD4NCgkJQ3VycmVudGx5IHdpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSBleHRlcm5hbGlzYXRpb24gb2YgY29udGVudCBwYWdlcy4NCgkJSSAoQnJhZCBKb25lcyksIGhhdmUgaW50cm9kdWNlZCBhIHNsaWdodCBidWcuPGJyIC8+V2hlbiB5b3UgaGF2ZSBEZXZNb2RlDQoJCXR1cm5lZCBPTiwgYW5kIHlvdSBjcmVhdGUgYSBuZXcgcGFnZSB5b3Ugd2lsbCBoYXZlIHRvIG9wZW4gaXQgdXAgYWdhaW4NCgkJYW5kIHNhdmUgaXQgYWdhaW4uPGJyIC8+T3RoZXJ3aXNlIHlvdSB3aWxsIGp1c3Qgc2VlIGEgYmxhbmsgZmlsZS4NCgk8L3A+DQoJPHA+DQoJCUkgYmVsaWV2ZSB0aGlzIGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCB0aGUgRXZlbnQNCgkJPGVtPmBDb250ZW50RWRpdFBvc3RgPC9lbT4sPGJyIC8+dGhlcmUgZG9lcyBub3QgYXBwZWFyIHRvIGJlIHRoZSBlcXVpbGl2YW50DQoJCW9mIDxlbT5gQWRkVGVtcGxhdGVQb3N0YCBhbmQgYEFkZFN0eWxlc2hlZXRQb3N0YDwvZW0+Lg0KCTwvcD4NCgkNCgk8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCgk8cD4NCgkJQ29weXJpZ2h0ICZjb3B5OyAyMDA2LCBUYW1seW4gUmhvZGVzDQoJCSZsdDs8YSBocmVmPSJodHRwOi8vdGFtbHluLm9yZyI+dGFtbHluLm9yZzwvYT4mZ3Q7Lg0KCQlBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC4NCgk8L3A+DQoJPHA+DQoJCVRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZQ0KCQk8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPg0KCQkJR05VIFB1YmxpYyBMaWNlbnNlDQoJCTwvYT4uIA0KCQlZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuDQoJPC9wPg0KCTxwPg0KCQk8c3Ryb25nPk1vZGlmaWVkIGJ5IEJyYWQgSm9uZXMhPC9zdHJvbmc+PGJyIC8+DQoJCTxhIGhyZWY9Im1haWx0bzpicmFkakBodWdvbmV0LmNvbS5hdSI+DQoJCQkmbHQ7YnJhZGogQD0mcXVvdDtodWdvbmV0LmNvbS5hdSZxdW90OyAvJmd0Ow0KCQk8L2E+DQoJPC9wPg0KPGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBQYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciBkaXNwbGF5IG9uIHRoZSBmcm9udGVuZC4gTm90IGFsbCBtb2R1bGVzIHN1cHBvcnQgb3IgbmVlZCB0aGlzLjwvbGk+PC91bD4=</help>
	<about>PGJyIC8+QXV0aG9yOiB0YW1seW4gJmx0O3RhbUB6ZW5vbG9neS5jby51ayZndDs8YnIgLz48YnIgLz5WZXJzaW9uOiAxLjE8YnIgLz48YnIgLz5DaGFuZ2UgSGlzdG9yeTo8YnIgLz4NCgk8dWw+DQoJCTxsaT5WZXJzaW9uIDEuMSAxNiBPY3RvYmVyIDIwMDguIEFkZGVkIGV4dGVybmFsaXNhdGlvbiBvZiBjb250ZW50IHBhZ2VzLiAoQnJhZCBKb25lcyk8L2xpPg0KCQk8bGk+VmVyc2lvbiAxLjAuNCAxMyBEZWNlbWJlciAyMDA2LiBBZGRlZCBnZXJtYW4gdHJhbnNsYXRpb24sIGZpeGVkIHNvbWUgdW50cmFuc2xhdGFibGUgdGV4dDwvbGk+DQoJCTxsaT5WZXJzaW9uIDEuMC4zIDI3IFNlcHRlbWJlciAyMDA2LiBBZGRlZCByZWRpcmVjdCBhZnRlciBzYXZlLCBtdXRlZCBFX05PVElDRSBlcnJvcjwvbGk+DQoJCTxsaT5WZXJzaW9uIDEuMC4yIDI5IEF1Z3VzdCAyMDA2LiBGaXhlZCBsYXp5IGxvYWRpbmcgZm9yIENNUyAxLjBiZXRhNjwvbGk+DQoJCTxsaT5WZXJzaW9uIDEuMC4xIDkgSnVuZSAyMDA2LiBTcGVjaWFsIGNoYXJhY3RlcnMgaW4gZmlsZW5hbWVzIGFyZSBlc2NhcGVkLiBGaXhlZCBhbm90aGVyIGJ1Zy48L2xpPg0KCQk8bGk+VmVyc2lvbiAxLjAgMjggTWF5IDIwMDYuIEluaXRpYWwgUmVsZWFzZS48L2xpPg0KCTwvdWw+DQo8YnIgLz4=</about>
	<description>
	Allows any FTP-enabled text or HTML editors to edit CMS templates,
	stylesheets and NOW PAGES!.
</description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</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[PD9waHANCi8qKg0KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAqIFRlbXBsYXRlRXh0ZXJuYWxpemVyIC0gZWRpdCB0ZW1wbGF0ZXMsIHN0eWxlc2hlZXRzIGFuZCBub3cgUEFHRVMgZXh0ZXJuYWxseQ0KICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAqIA0KICogPj4+ICRJZCQNCiAqIA0KICovDQoNCiRsYW5nWydmcmllbmRseW5hbWUnXQkJCQk9ICdUZW1wbGF0ZSBFeHRlcm5hbGl6ZXInOw0KJGxhbmdbJ3VuaW5zdGFsbGVkJ10JCQkJPSAnTW9kdWxlIFVuaW5zdGFsbGVkLic7DQokbGFuZ1snaW5zdGFsbGVkJ10JCQkJCT0gJ01vZHVsZSB2ZXJzaW9uICVzIGluc3RhbGxlZC4nOw0KJGxhbmdbJ3ByZWZzdXBkYXRlZCddCQkJCT0gJ01vZHVsZSBwcmVmZXJlbmNlcyB1cGRhdGVkLic7DQokbGFuZ1snYWNjZXNzZGVuaWVkJ10JCQkJPSAnQWNjZXNzIERlbmllZC4gQ2hlY2sgeW91ciBwZXJtaXNzaW9ucy4nOw0KJGxhbmdbJ2Vycm9yJ10JCQkJCQk9ICdFcnJvciEnOw0KJGxhbmdbJ3VwZ3JhZGVkJ10JCQkJCT0gJ01vZHVsZSB1cGdyYWRlZCB0byB2ZXJzaW9uICVzLic7DQokbGFuZ1snZGV2X21vZGVfZW5hYmxlZCddCQkJPSAnRGV2ZWxvcG1lbnQgTW9kZSBlbmFibGVkLic7DQokbGFuZ1snZGV2X21vZGVfZGlzYWJsZWQnXQkJCT0gJ0RldmVsb3BtZW50IE1vZGUgZGlzYWJsZWQuJzsNCiRsYW5nWydkZXZfbW9kZV90aW1lZG91dCddCQkJPSAnRGV2ZWxvcG1lbnQgTW9kZSB0aW1lZCBvdXQuJzsNCiRsYW5nWyd0aXRsZV9kZXZfbW9kZSddCQkJCT0gJ0RldmVsb3BtZW50IE1vZGUnOw0KJGxhbmdbJ3RpdGxlX3RpbWVvdXQnXQkJCQk9ICdEZXYgTW9kZSBUaW1lb3V0JzsNCiRsYW5nWyd0aXRsZV90aW1lb3V0X3VuaXRzJ10JCT0gJ21pbnV0ZXMnOw0KJGxhbmdbJ3RpdGxlX2NhY2hlX3BhdGgnXQkJCT0gJ0NhY2hlIFBhdGgnOw0KJGxhbmdbJ3RpdGxlX3RlbXBsYXRlX2V4dGVuc2lvbiddCT0gJ1RlbXBsYXRlIEZpbGUgRXh0ZW5zaW9uJzsNCiRsYW5nWyd0aXRsZV9zdHlsZXNoZWV0X2V4dGVuc2lvbiddCT0gJ1N0eWxlc2hlZXQgRmlsZSBFeHRlbnNpb24nOw0KJGxhbmdbJ29uJ10JCQkJCQkJPSAnT24nOw0KJGxhbmdbJ29mZiddCQkJCQkJPSAnT2ZmJzsNCiRsYW5nWydzdWJtaXQnXQkJCQkJCT0gJ1N1Ym1pdCc7DQoNCiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJw0KCUFsbG93cyBhbnkgRlRQLWVuYWJsZWQgdGV4dCBvciBIVE1MIGVkaXRvcnMgdG8gZWRpdCBDTVMgdGVtcGxhdGVzLA0KCXN0eWxlc2hlZXRzIGFuZCBOT1cgUEFHRVMhLg0KJzsNCg0KJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnDQoJVGhpcyBtb2R1bGUgd2lsbCBub3QgZG8gYW55dGhpbmcgdW50aWwgPGVtPkRldmVsb3BtZW50IE1vZGU8L2VtPiBpcyB0dXJuZWQgDQoJb24uIFNlZSB0aGUgSGVscCBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLg0KJzsNCg0KJGxhbmdbJ2NoYW5nZWxvZyddID0gJw0KCTx1bD4NCgkJPGxpPlZlcnNpb24gMS4xIDE2IE9jdG9iZXIgMjAwOC4gQWRkZWQgZXh0ZXJuYWxpc2F0aW9uIG9mIGNvbnRlbnQgcGFnZXMuIChCcmFkIEpvbmVzKTwvbGk+DQoJCTxsaT5WZXJzaW9uIDEuMC40IDEzIERlY2VtYmVyIDIwMDYuIEFkZGVkIGdlcm1hbiB0cmFuc2xhdGlvbiwgZml4ZWQgc29tZSB1bnRyYW5zbGF0YWJsZSB0ZXh0PC9saT4NCgkJPGxpPlZlcnNpb24gMS4wLjMgMjcgU2VwdGVtYmVyIDIwMDYuIEFkZGVkIHJlZGlyZWN0IGFmdGVyIHNhdmUsIG11dGVkIEVfTk9USUNFIGVycm9yPC9saT4NCgkJPGxpPlZlcnNpb24gMS4wLjIgMjkgQXVndXN0IDIwMDYuIEZpeGVkIGxhenkgbG9hZGluZyBmb3IgQ01TIDEuMGJldGE2PC9saT4NCgkJPGxpPlZlcnNpb24gMS4wLjEgOSBKdW5lIDIwMDYuIFNwZWNpYWwgY2hhcmFjdGVycyBpbiBmaWxlbmFtZXMgYXJlIGVzY2FwZWQuIEZpeGVkIGFub3RoZXIgYnVnLjwvbGk+DQoJCTxsaT5WZXJzaW9uIDEuMCAyOCBNYXkgMjAwNi4gSW5pdGlhbCBSZWxlYXNlLjwvbGk+DQoJPC91bD4NCic7DQoNCiRsYW5nWydoZWxwJ10gPSAnDQoJPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQoJPHA+DQoJCUl0IGFsbG93cyB5b3UgdG8gdXNlIGFueSBleHRlcm5hbCBlZGl0b3IgdG8gZWRpdCB5b3VyIHRlbXBsYXRlcyBhbmQNCgkJc3R5bGVzaGVldHMuDQoJPC9wPg0KCQ0KCTxoMz5Ib3cgRG8gSSBVc2UgSXQ/PC9oMz4NCgk8cD4NCgkJRmlyc3QgY29uZmlndXJlIHRoZSBwYXRoIHdoZXJlIHlvdSB3b3VsZCBsaWtlIHRoZSB0ZW1wbGF0ZSBmaWxlcyB0byBiZQ0KCQlzYXZlZC4gVGhlIGRlZmF1bHQgaXMgdG1wL2V4dGVybmFsaXplci8gd2hpY2ggc2hvdWxkIHdvcmsgZm9yIG1vc3QNCgkJcGVvcGxlLjxiciAvPk5leHQgdHVybiBvbiA8ZW0+RGV2ZWxvcG1lbnQgTW9kZTwvZW0+IHdoaWNoIGV4cG9ydHMgZWFjaA0KCQl0ZW1wbGF0ZSBhbmQgc3R5bGVzaGVldCBmcm9tIHRoZSBkYXRhYmFzZSB0byBmaWxlcy48YnIgLz5Zb3UgbWF5IG5vdyBlZGl0DQoJCXRoZSBmaWxlcyBob3dldmVyIHlvdSBsaWtlIGFuZCBhbnkgY2hhbmdlcyBhcmUgYXV0b21hdGljYWxseSBkZXRlY3RlZCwNCgkJaW1wb3J0ZWQgdG8gdGhlIGRhdGFiYXNlIGFuZCB0YWtlIGVmZmVjdCBpbW1lZGlhdGVseS4NCgk8L3A+DQoJPHA+DQoJCUlmIHlvdSBlZGl0IG9yIGFkZCBuZXcgdGVtcGxhdGVzIG9yIHN0eWxlc2hlZXRzIHVzaW5nIHRoZSBub3JtYWwgd2ViDQoJCWludGVyZmFjZSB3aGlsZSA8ZW0+RGV2ZWxvcG1lbnQgTW9kZTwvZW0+IGlzIG9uLDxiciAvPnRoZXNlIGNoYW5nZXMgd2lsbCBiZQ0KCQlleHBvcnRlZCB0byB0aGUgZmlsZXMuIEFueSBmaWxlcyBpbiB0aGUgdGVtcGxhdGUgcGF0aCB3aG9zZSBuYW1lcyBkbw0KCQlub3QgY29ycmVzcG9uZCB0byBleGlzdGluZyB0ZW1wbGF0ZXMgd2lsbCBiZSBpZ25vcmVkLg0KCTwvcD4NCgk8cD4NCgkJV2hlbiB5b3UgaGF2ZSBmaW5pc2hlZCBlZGl0aW5nIHRoZSBmaWxlcyB5b3Ugc2hvdWxkIHR1cm4NCgkJPGVtPkRldmVsb3BtZW50IE1vZGU8L2VtPiBvZmYgb3RoZXJ3aXNlIGl0IHdpbGwgYWZmZWN0IHBlcmZvcm1hbmNlLjxiciAvPg0KCQlIb3dldmVyLCBpZiBubyBjaGFuZ2VzIGFyZSBtYWRlIHRvIGFueSBvZiB0aGUgZmlsZXMgZm9yIDxlbT5UaW1lb3V0PC9lbT4NCgkJbWludXRlcywgPGVtPkRldmVsb3BtZW50IE1vZGU8L2VtPiB3aWxsIHR1cm4gaXRzZWxmIG9mZiBhdXRvbWF0aWNhbGx5LjxiciAvPg0KCQlTZXQgPGVtPlRpbWVvdXQ8L2VtPiB0byAwIHRvIGRpc2FibGUgdGhpcyBmZWF0dXJlLg0KCTwvcD4NCgkNCgk8aDM+S05PV04gQlVHPC9oMz4NCgk8cD4NCgkJQ3VycmVudGx5IHdpdGggdGhlIGFkZGl0aW9uIG9mIHRoZSBleHRlcm5hbGlzYXRpb24gb2YgY29udGVudCBwYWdlcy4NCgkJSSAoQnJhZCBKb25lcyksIGhhdmUgaW50cm9kdWNlZCBhIHNsaWdodCBidWcuPGJyIC8+V2hlbiB5b3UgaGF2ZSBEZXZNb2RlDQoJCXR1cm5lZCBPTiwgYW5kIHlvdSBjcmVhdGUgYSBuZXcgcGFnZSB5b3Ugd2lsbCBoYXZlIHRvIG9wZW4gaXQgdXAgYWdhaW4NCgkJYW5kIHNhdmUgaXQgYWdhaW4uPGJyIC8+T3RoZXJ3aXNlIHlvdSB3aWxsIGp1c3Qgc2VlIGEgYmxhbmsgZmlsZS4NCgk8L3A+DQoJPHA+DQoJCUkgYmVsaWV2ZSB0aGlzIGhhcyBzb21ldGhpbmcgdG8gZG8gd2l0aCB0aGUgRXZlbnQNCgkJPGVtPmBDb250ZW50RWRpdFBvc3RgPC9lbT4sPGJyIC8+dGhlcmUgZG9lcyBub3QgYXBwZWFyIHRvIGJlIHRoZSBlcXVpbGl2YW50DQoJCW9mIDxlbT5gQWRkVGVtcGxhdGVQb3N0YCBhbmQgYEFkZFN0eWxlc2hlZXRQb3N0YDwvZW0+Lg0KCTwvcD4NCgkNCgk8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4NCgk8cD4NCgkJQ29weXJpZ2h0ICZjb3B5OyAyMDA2LCBUYW1seW4gUmhvZGVzDQoJCSZsdDs8YSBocmVmPSJodHRwOi8vdGFtbHluLm9yZyI+dGFtbHluLm9yZzwvYT4mZ3Q7Lg0KCQlBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC4NCgk8L3A+DQoJPHA+DQoJCVRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZQ0KCQk8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPg0KCQkJR05VIFB1YmxpYyBMaWNlbnNlDQoJCTwvYT4uIA0KCQlZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuDQoJPC9wPg0KCTxwPg0KCQk8c3Ryb25nPk1vZGlmaWVkIGJ5IEJyYWQgSm9uZXMhPC9zdHJvbmc+PGJyIC8+DQoJCTxhIGhyZWY9Im1haWx0bzpicmFkakBodWdvbmV0LmNvbS5hdSI+DQoJCQknLmh0bWxlbnRpdGllcygnPGJyYWRqIEA9Imh1Z29uZXQuY29tLmF1IiAvPicpLicNCgkJPC9hPg0KCTwvcD4NCic7DQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ1RlbXBsYXRlRXh0ZXJuYWxpemVyJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnRGllc2VzIE1vZHVsIG1hY2ggd2VpdGVyIG5pY2h0cyBhbHMgZGVuIDxlbT5FbnR3aWNrbGVyLU1vZHVzPC9lbT4genUgYWt0aXZpZXJlbi4gV2VpdGVyZSBJbmZvcm1hdGlvbmVuIGZpbmRlbiBTaWUgaW4gZGVyIE1vZHVsLUhpbGZlLic7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsIGRlaW5zdGFsbGllcnQuJzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsdmVyc2lvbiAlcyBpbnN0YWxsaWVydC4nOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnTW9kdWxlaW5zdGVsbHVuZ2VuIGFrdHVhbGlzaWVydC4nOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnWnVncmlmZiB2ZXJ3ZWlnZXJ0LiBCaXR0ZSAmdXVtbDtiZXJwciZ1dW1sO2ZlbiBTaWUgSWhyZSBCZXJlY2h0aWd1bmdlbi4nOwokbGFuZ1snZXJyb3InXSA9ICdGZWhsZXIhJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWwgYXVmIFZlcnNpb24gJXMgYWt0dWFsaXNpZXJ0Lic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJyBUZW1wbGF0ZUV4dGVybmFsaXplciBrb25maWd1cmllcmVuLic7CiRsYW5nWydkZXZfbW9kZV9lbmFibGVkJ10gPSAnRW50d2lja2xlci1Nb2R1cyBha3RpdmllcnQuJzsKJGxhbmdbJ2Rldl9tb2RlX2Rpc2FibGVkJ10gPSAnRW50d2lja2xlci1Nb2R1cyBkZWFrdGl2aWVydC4nOwokbGFuZ1snZGV2X21vZGVfdGltZWRvdXQnXSA9ICdFbnR3aWNrbGVyLU1vZHVzIGF1ZmdydW5kIFplaXRhYmxhdWYgZGVha3RpdmllcnQuJzsKJGxhbmdbJ3RpdGxlX2Rldl9tb2RlJ10gPSAnRW50d2lja2xlci1Nb2R1cyc7CiRsYW5nWyd0aXRsZV90aW1lb3V0J10gPSAnWmVpdGRhdWVyIGRlcyBFbnR3aWNrbGVyLU1vZHVzJzsKJGxhbmdbJ3RpdGxlX3RpbWVvdXRfdW5pdHMnXSA9ICdNaW51dGVuJzsKJGxhbmdbJ3RpdGxlX2NhY2hlX3BhdGgnXSA9ICdDYWNoZS1QZmFkJzsKJGxhbmdbJ3RpdGxlX3RlbXBsYXRlX2V4dGVuc2lvbiddID0gJ05hbWVuc2Vyd2VpdGVydW5nIGYmdXVtbDtyIFRlbXBsYXRlLURhdGVpZW4nOwokbGFuZ1sndGl0bGVfc3R5bGVzaGVldF9leHRlbnNpb24nXSA9ICdOYW1lbnNlcndlaXRlcnVuZyBmJnV1bWw7ciBTdHlsZXNoZWV0LURhdGVpZW4nOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnPHVsPgo8bGk+VmVyc2lvbiAxLjAuMiAyOSBBdWd1c3QgMjAwNi4gRml4ZWQgbGF6eSBsb2FkaW5nIGZvciBDTVMgMS4wYmV0YTY8L2xpPgo8bGk+VmVyc2lvbiAxLjAuMSA5IEp1bmUgMjAwNi4gU3BlY2lhbCBjaGFyYWN0ZXJzIGluIGZpbGVuYW1lcyBhcmUgZXNjYXBlZC4gRml4ZWQgYW5vdGhlciBidWcuPC9saT4KPGxpPlZlcnNpb24gMS4wIDI4IE1heSAyMDA2LiBJbml0aWFsIFJlbGVhc2UuPC9saT4KPC91bD4nOwokbGFuZ1snaGVscCddID0gJzxoMz5XYXMgbWFjaHQgZGllc2VzIE1vZHVsPzwvaDM+CjxwPk1pdCBkaWVzZW0gTW9kdWwga2FubiBlaW4gYmVsaWViaWdlciBleHRlcm5lciBFZGl0b3IgenVyIEJlYXJiZWl0dW5nIGRlciBUZW1wbGF0ZXMgdW5kIFN0eWxlc2hlZXRzIHZlcndlbmRldCB3ZXJkZW4uPC9wPgo8aDM+V2llIHdpcmQgZXMgZWluZ2VzZXR6dD88L2gzPgo8cD5BbHMgZXJzdGVzIG0mdXVtbDtzc2VuIFNpZSBlaW5lbiBQZmFkIHp1IGRlbSBWZXJ6ZWljaG5pcyBlaW5nZWJlbiwgaW4gd2VsY2hlbSBkaWUgVGVtcGxhdGUtIHVuZCBDU1MtRGF0ZWllbiBnZXNwZWljaGVydCB3ZXJkZW4gc29sbGVuLiAKQWxzIFN0YW5kYXJkIGlzdCBoaWVyIHRtcC9leHRlcm5hbGl6ZXIvIGVpbmdldHJhZ2VuLCB3YXMgaW0gTm9ybWFsZmFsbCBiZWkgamVkZW0gZnVua3Rpb25pZXJlbiBzb2xsdGUuIEFuc2NobGllJnN6bGlnO2VuZCBrJm91bWw7bm5lbiAKU2llIGRlbiA8ZW0+RW50d2lja2xlci1Nb2R1czwvZW0+IGFrdGl2aWVyZW4uIERhbWl0IHdlcmRlbiBkaWUgVGVtcGxhdGVzIHVuZCBTdHlsZXNoZWV0cyBhdXMgZGVyIERhdGVuYmFuayAgCmluIERhdGVpZW4gZXhwb3J0aWVydC4gRGllc2UgRGF0ZWllbiBrJm91bWw7bm5lbiBTaWUgamV0enQgbmFjaCBXdW5zY2ggYmVhcmJlaXRlbi4gV2VubiBTaWUgJkF1bWw7bmRlcnVuZ2VuIHZvcm5laG1lbiwgCndlcmRlbiBkaWUgamV3ZWlsaWdlbiBEYXRlaWVuIHZvbSBNb2R1bCBhdXRvbWF0aXNjaCBpbiBkaWUgRGF0ZW5iYW5rIHJlaW1wb3J0aWVydCB1bmQgYXVmIElocmUgU2VpdGUgYW5nZXdlbmRldC48L3A+Cgo8cD5XZW5uIFNpZSBpbiBkZXIgQ01TbXMtQWRtaW5pc3RyYXRpb24gbmV1ZSBUZW1wbGF0ZXMgb2RlciBTdHlsZXNoZWV0cyBoaW56dWYmdXVtbDtnZW4gb2RlciAmYXVtbDtuZGVybiwgCncmYXVtbDtocmVuZCBkZXIgPGVtPkVudHdpY2tsZXItTW9kdXM8L2VtPiBha3RpdmllcnQgaXN0LCB3ZXJkZW4gZGllc2UgJkF1bWw7bmRlcnVuZ2VuIGluIGRpZSBEYXRlaWVuIGV4cG9ydGllcnQuIApBbGxlIERhdGVpZW4gaW0gQ2FjaGUtVmVyemVpY2huaXMsIGRlcmVuIE5hbWVuIG5pY2h0IG1pdCBkZW4gVGVtcGxhdGVzL1N0eWxlc2hlZXRzIGluIGRlciBEYXRlbmJhbmsga29ycmVzcG9uZGllcmVuLAp3ZXJkZW4gaWdub3JpZXJ0LjwvcD4KCjxwPldlbm4gU2llIGRpZSBCZWFyYmVpdHVuZyAKZGVyIERhdGVpZW4gYWJnZXNjaGxvc3NlbiBoYWJlbiwgc29sbHRlbiBTaWUgZGVuIDxlbT5FbnR3aWNrbGVyLU1vZHVzPC9lbT4gZGVha3RpdmllcmVuLiBBbmRlcmVuZmFsbHMgCmhhdCBkaWVzIEF1c3dpcmt1bmdlbiBhdWYgZGllIFBlcmZvcm1hbmNlIElocmVzIFN5c3RlbXMuIEZhbGxzIGFuIGRlbiBEYXRlaWVuIGlubmVyaGFsYiBkZXIgaW0gV2VydCAgCjxlbT5aZWl0ZGF1ZXI8L2VtPiBkZWZpbmllcnRlbiBaZWl0IGtlaW5lICZBdW1sO25kZXJ1bmdlbiB2b3JnZW5vbW1lbiB3dXJkZW4sIGRlYWt0aXZpZXJ0IHNpY2ggZGVyIDxlbT5FbnR3aWNrbGVyLU1vZHVzPC9lbT4gCmF1dG9tYXRpc2NoLiBVbSBkaWVzZSBPcHRpb24genUgZGVha3RpdmllcmVuLCBzZXR6ZW4gU2llIGRlbiBXZXJ0ICA8ZW0+WmVpdGRhdWVyPC9lbT4gYXVmIDAuPC9wPgoKPGgzPkNvcHlyaWdodCB1bmQgTGl6ZW56PC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA2LCBUYW1seW4gUmhvZGVzICZsdDs8YSBocmVmPSJodHRwOi8vdGFtbHluLm9yZyI+dGFtbHluLm9yZzwvYT4mZ3Q7LiBBbGxlIFJlY2h0ZSB2b3JiZWhhbHRlbi48L3A+CjxwPkRpZXNlcyBNb2R1bCB3dXJkZSB1bnRlciBkZXIgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+IHZlciZvdW1sO2ZmZW50bGljaHQuIFNpZSBtJnV1bWw7c3NlbiBkaWVzZXIgTGl6ZW56IHp1c3RpbW1lbiwgYmV2b3IgU2llIGRhcyBNb2R1bCB2ZXJ3ZW5kZW4uPC9wPgonOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/TemplateExternalizer.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqIFRlbXBsYXRlRXh0ZXJuYWxpemVyIC0gZWRpdCB0ZW1wbGF0ZXMsIHN0eWxlc2hlZXRzIGFuZCBub3cgUEFHRVMgZXh0ZXJuYWxseQogKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogKiAKICogPj4+ICRJZCQKICogCiAqIFRpdGxlOiBEZXNjcmlwdGlvbgogKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogKiBUaGlzIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgaGFzIGJlZW4gZGVzaWduZWQgc28gdGhhdCB5b3UgY2FuIG5vdyB1c2UgeW91cgogKiBmYXZvcml0ZSBJREUgdG8gZWRpdCB0aGUgSFRNTCwgYW5kIENTUyBzdG9yZWQgaW5zaWRlIG9mIENNU01TLgogKiBTcGVlZHMgdXAgZGV2bG9wbWVudCB0aW1lIGNvbnNpZGVyYWJseSEKICogCiAqIFRpdGxlOiBDcmVkaXRzCiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAqIE9yZ2luYWxseSBkZXNpZ25lZCBieSBUYW1seW4gUmhvZGVzIDxpbXAgQD0iY2x1bXAuY28udWsiIC8+CiAqIE1vZGlmaWVkIGJ5IEJyYWQgSm9uZXMgPGJyYWRqIEA9Imh1Z29uZXQuY29tLmF1IiAvPgogKiAKICogVGl0bGU6IExpY2VuY2UKICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICogQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKICogVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKICogCiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqIAogKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQogKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQogKiBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiAqLwoKY2xhc3MgVGVtcGxhdGVFeHRlcm5hbGl6ZXIgZXh0ZW5kcyBDTVNNb2R1bGUKewoJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJIyBQUk9QRVJUSUVTCgkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCglmdW5jdGlvbiBHZXROYW1lKCkJCQkJeyByZXR1cm4gJ1RlbXBsYXRlRXh0ZXJuYWxpemVyJzsgfQoJZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkJCXsgcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsgfQoJZnVuY3Rpb24gR2V0VmVyc2lvbigpCQkJeyByZXR1cm4gJzEuMSc7IH0KCWZ1bmN0aW9uIEdldEhlbHAoKQkJCQl7IHJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOyB9CglmdW5jdGlvbiBHZXRBdXRob3IoKQkJCXsgcmV0dXJuICd0YW1seW4nOyB9CglmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpCQl7IHJldHVybiAndGFtQHplbm9sb2d5LmNvLnVrJzsgfQoJZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkJCQl7IHJldHVybiAkdGhpcy0+TGFuZygnY2hhbmdlbG9nJyk7IH0KCWZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkJCXsgcmV0dXJuIGZhbHNlOyB9CglmdW5jdGlvbiBIYXNBZG1pbigpCQkJCXsgcmV0dXJuIHRydWU7IH0KCWZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpCQl7IHJldHVybiAnbGF5b3V0JzsgfQoJZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpCXsgcmV0dXJuICR0aGlzLT5MYW5nKCdtb2RkZXNjcmlwdGlvbicpOyB9CglmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKQl7IHJldHVybiAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdUZW1wbGF0ZSBFeHRlcm5hbGl6ZXInKTsgfQoJZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKQl7IHJldHVybiAiMC4xMSI7IH0KCWZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpCXsgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0aW5zdGFsbCcpOyB9CgkKCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCSMgRVZFTlRTCgkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCglmdW5jdGlvbiBBZGRUZW1wbGF0ZVBvc3QoKQkJeyAkdGhpcy0+X0V4cG9ydEFsbCgpOyB9CglmdW5jdGlvbiBFZGl0VGVtcGxhdGVQb3N0KCkJCXsgJHRoaXMtPl9FeHBvcnRBbGwoKTsgfQoJZnVuY3Rpb24gQWRkU3R5bGVzaGVldFBvc3QoKQl7ICR0aGlzLT5fRXhwb3J0QWxsKCk7IH0KCWZ1bmN0aW9uIEVkaXRTdHlsZXNoZWV0UG9zdCgpCXsgJHRoaXMtPl9FeHBvcnRBbGwoKTsgfQoJCgkvKgoJICogVE9ETzogRml4IENvbnRlbnQgQWRkaW5nIEJ1ZwoJICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICogQ3VycmVudGx5IHdoZW4gZXZlciBhIHBhZ2UgaXMgY3JlYXRlZCBpdCBjYWxscyB0aGlzIGZ1bmN0aW9uIGJ1dCBpdCBkb2VzCgkgKiBzbyBiZWZvcmUgdGhlIGFjdHVhbCBjb250ZW50IGhhcyBiZWVuIHNhdmVkIGludG8gdGhlIERhdGFCYXNlIGFuZCB0aHVzCgkgKiB3ZSBlbmQgdXAgd2l0aCBhIGJsYW5rIGZpbGUuCgkgKiAKCSAqIFRoZSB1bHRpbWF0ZSBmaXggd291bGQgYmUgaWYgdGhlcmUgd2FzIGEgQWRkQ29udGVudFBvc3QganVzdCBsaWtlCgkgKiBBZGRUZW1wbGF0ZVBvc3QgYW5kIEFkZFN0eWxlc2hlZXRQb3N0IGJ1dCBJIGNvdWxkIG5vdCBzZWVtIHRvIGZpbmQgaXQgaW4KCSAqIHRoZSBBUEkgRG9jcy4KCSAqIAoJICogU28gdGhlIHdvcmsgYXJvdW5kIHRvIHRoZSBwcm9ibGVtIGlzIHRvIHNpbXBseSBjcmVhdGUgdGhlIHBhZ2UsCgkgKiB0aGVuIG9wZW4gaXQgYWdhaW4gYW5kIHNhdmUgaXQgYWdhaW4uCgkgKi8KCWZ1bmN0aW9uIENvbnRlbnRFZGl0UG9zdCgpCQl7ICR0aGlzLT5fRXhwb3J0QWxsKCk7IH0KCQoJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJIyBQVUJMSUMgTUVUSE9EUwoJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwoJLyoqCgkgKiBNZXRob2Q6IFRlbXBsYXRlRXh0ZXJuYWxpemVyCgkgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgKiBUaGUgbW9kdWxlIGNvbnN0cnVjdG9yLCBldmVyeXRpbWUgdGhpcyBtb2R1bGUgaXMgY2FsbGVkIHdlIHdpbGwgY2hlY2sKCSAqIHRvIHNlZSBpZiB3ZSBjYW4gaW1wb3J0IGFueSBjaGFuZ2VzIGludG8gdGhlIGRhdGFiYXNlLgoJICovCglmdW5jdGlvbiBUZW1wbGF0ZUV4dGVybmFsaXplcigpCgl7CgkJLy8gQ2FsbCB0aGUgcGFyZW50IGNvbnN0cnVjdG9yCgkJJHRoaXMtPkNNU01vZHVsZSgpOwoJCQoJCS8vIEltcG9ydCB0aGUgdGVtcGxhdGVzCgkJaWYoJHRoaXMtPkdldFByZWZlcmVuY2UoImRldl9tb2RlIikpICR0aGlzLT5fSW1wb3J0QWxsKCk7Cgl9CgkKCS8qKgoJICogTWV0aG9kOiBJbnN0YWxsCgkgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgKiBUaGlzIHdpbGwgaW5zdGFsbCB0aGUgbW9kdWxlIGludG8gQ01TTVMKCSAqLwoJZnVuY3Rpb24gSW5zdGFsbCgpCgl7CgkJLy8gQ3JlYXRlIGEgcGVybWlzc2lvbgoJCSR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdUZW1wbGF0ZSBFeHRlcm5hbGl6ZXInLCdUZW1wbGF0ZSBFeHRlcm5hbGl6ZXInKTsKCQkKCQkvLyBDcmVhdGUgcHJlZmVyZW5jZXMgd2l0aCBkZWZhdWx0IHZhbHVlcwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJkZXZfbW9kZSIsIGZhbHNlKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgidGltZW91dCIsIDMwKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgiY2FjaGVfcGF0aCIsICR0aGlzLT5jb25maWdbJ3Jvb3RfcGF0aCddLicvdG1wL2V4dGVybmFsaXplcicpOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJzdHlsZXNoZWV0X2V4dGVuc2lvbiIsICdjc3MnKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgidGVtcGxhdGVfZXh0ZW5zaW9uIiwgJ2h0bWwnKTsKCQkKCQkvLyBQdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKCQkkdGhpcy0+QXVkaXQoCgkJCTAsCgkJCSR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwKCQkJJHRoaXMtPkxhbmcoJ2luc3RhbGxlZCcsICR0aGlzLT5HZXRWZXJzaW9uKCkpCgkJKTsKCX0KCQoJLyoqCgkgKiBNZXRob2Q6IFVwZ3JhZGUKCSAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAqIFRoaXMgd2lsbCB1cGdyYWRlIHRoZSBtb2R1bGUuCgkgKi8KCWZ1bmN0aW9uIFVwZ3JhZGUoJG9sZHZlcnNpb24sICRuZXd2ZXJzaW9uKQoJewoJCSRjdXJyZW50X3ZlcnNpb24gPSAkb2xkdmVyc2lvbjsKCQlzd2l0Y2goJGN1cnJlbnRfdmVyc2lvbikKCQl7CgkJCWNhc2UgIjEuMCI6CgkJCWNhc2UgIjEuMC4xIjoKCQkJY2FzZSAiMS4wLjIiOgoJCQljYXNlICIxLjAuMyI6CgkJCWNhc2UgIjEuMC40IjoKCQkJCS8vIE5PVEhJTkcgVE8gQUNUVUFMTFkgRE8gWUVUCgkJCWJyZWFrOwoJCX0KCQkKCQkvLyBQdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKCQkkdGhpcy0+QXVkaXQoCgkJCTAsCgkJCSR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwKCQkJJHRoaXMtPkxhbmcoJ3VwZ3JhZGVkJywgJHRoaXMtPkdldFZlcnNpb24oKSkKCQkpOwoJfQoJCgkvKioKCSAqIE1ldGhvZDogVW5pbnN0YWxsCgkgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgKiBUaGlzIHdpbGwgdW5pbnN0YWxsIHRoZSBtb2R1bGUuCgkgKi8KCWZ1bmN0aW9uIFVuaW5zdGFsbCgpCgl7CgkJLy8gUmVtb3ZlIHRoZSBwZXJtaXNzaW9ucwoJCSR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdUZW1wbGF0ZSBFeHRlcm5hbGl6ZXInKTsKCQkKCQkvLyBSZW1vdmUgcHJlZmVyZW5jZXMKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgiZGV2X21vZGUiKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgidGltZW91dCIpOwoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCJjYWNoZV9wYXRoIik7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoInN0eWxlc2hlZXRfZXh0ZW5zaW9uIik7CgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoInRlbXBsYXRlX2V4dGVuc2lvbiIpOwoJCQoJCS8vIFB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZwoJCSR0aGlzLT5BdWRpdCgKCQkJMCwKCQkJJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLAoJCQkkdGhpcy0+TGFuZygndW5pbnN0YWxsZWQnKQoJCSk7Cgl9CgkKCS8qKgoJICogTWV0aG9kOiBEb0FjdGlvbgoJICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICogVGhpcyBpcyB0aGUgbWFpbiBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGlmIHlvdXIgbW9kdWxlCgkgKiBpcyBhIHBsdWctaW4gdHlwZSBtb2R1bGUuCgkgKi8KCWZ1bmN0aW9uIERvQWN0aW9uKCRhY3Rpb24sICRpZCwgJHBhcmFtcywgJHJldHVybl9pZD0tMSkKCXsKCQlzd2l0Y2ggKCRhY3Rpb24pCgkJewoJCQljYXNlICdkZWZhdWx0JzogYnJlYWs7CgkJCWNhc2UgJ2RlZmF1bHRhZG1pbic6CgkJCQlpZiAoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignVGVtcGxhdGUgRXh0ZXJuYWxpemVyJykpCgkJCQkJJHRoaXMtPkRpc3BsYXlBZG1pblByZWZzKCRpZCwgJHBhcmFtcywgJHJldHVybl9pZCk7CgkJCQllbHNlCgkJCQkJJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKCQkJYnJlYWs7CgkJCWNhc2UgJ3NhdmVfYWRtaW5fcHJlZnMnOgoJCQkJaWYgKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1RlbXBsYXRlIEV4dGVybmFsaXplcicpKQoJCQkJCSR0aGlzLT5TYXZlQWRtaW5QcmVmcygkaWQsICRwYXJhbXMsICRyZXR1cm5faWQpOwoJCQkJZWxzZQoJCQkJCSR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7CgkJCWJyZWFrOwoJCX0KCX0KCQoJLyoqCgkgKiBNZXRob2Q6IERpc3BsYXlBZG1pblByZWZzCgkgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgKiBEaXNwbGF5cyB0aGUgYWRtaW4gcGFuZWwgdG8gdW5kZXIgdGhlIGV4dGVuc2lvbnMgbWVudS4KCSAqLwoJZnVuY3Rpb24gRGlzcGxheUFkbWluUHJlZnMoJGlkLCAmJHBhcmFtcywgJHJldHVybmlkLCAkbWVzc2FnZT0nJykKCXsKCQkvLyBDcmVhdGUgdGhlIHNtYXJ0eSB0ZW1wbGF0ZSB2YWx1ZXMuCgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnc2F2ZV9hZG1pbl9wcmVmcycsICRyZXR1cm5pZCkpOwoJCSR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoJCSR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdzdWJtaXQnKSkpOwoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfZGV2X21vZGUnLCAkdGhpcy0+TGFuZygndGl0bGVfZGV2X21vZGUnKSk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV90aW1lb3V0JywgJHRoaXMtPkxhbmcoJ3RpdGxlX3RpbWVvdXQnKSk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9jYWNoZV9wYXRoJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2NhY2hlX3BhdGgnKSk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV90ZW1wbGF0ZV9leHRlbnNpb24nLCAkdGhpcy0+TGFuZygndGl0bGVfdGVtcGxhdGVfZXh0ZW5zaW9uJykpOwoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfc3R5bGVzaGVldF9leHRlbnNpb24nLCAkdGhpcy0+TGFuZygndGl0bGVfc3R5bGVzaGVldF9leHRlbnNpb24nKSk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZignbWVzc2FnZScsICRtZXNzYWdlKTsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2Rldl9tb2RlJywKCQkJJHRoaXMtPkNyZWF0ZUlucHV0UmFkaW9Hcm91cCgKCQkJCSRpZCwKCQkJCSdkZXZfbW9kZScsCgkJCQlhcnJheSgKCQkJCQkkdGhpcy0+TGFuZygnb2ZmJyk9PjAsCgkJCQkJJHRoaXMtPkxhbmcoJ29uJyk9PjEKCQkJCSksCgkJCQkkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGV2X21vZGUnLCAnMScpCgkJCSkKCQkpOwoJCSR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfdGltZW91dCcsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoCgkJCQkkaWQsCgkJCQkndGltZW91dCcsCgkJCQkkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGltZW91dCcpCgkJCSkuJyAnLiR0aGlzLT5MYW5nKCd0aXRsZV90aW1lb3V0X3VuaXRzJykKCQkpOwoJCSR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfY2FjaGVfcGF0aCcsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoCgkJCQkkaWQsCgkJCQknY2FjaGVfcGF0aCcsCgkJCQkkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY2FjaGVfcGF0aCcpLAoJCQkJNDAKCQkJKQoJCSk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF90ZW1wbGF0ZV9leHRlbnNpb24nLAoJCQkkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KAoJCQkJJGlkLAoJCQkJJ3RlbXBsYXRlX2V4dGVuc2lvbicsCgkJCQkkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGVtcGxhdGVfZXh0ZW5zaW9uJykKCQkJKQoJCSk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zdHlsZXNoZWV0X2V4dGVuc2lvbicsCgkJCSR0aGlzLT5DcmVhdGVJbnB1dFRleHQoCgkJCQkkaWQsCgkJCQknc3R5bGVzaGVldF9leHRlbnNpb24nLAoJCQkJJHRoaXMtPkdldFByZWZlcmVuY2UoJ3N0eWxlc2hlZXRfZXh0ZW5zaW9uJykKCQkJKQoJCSk7CgkJCgkJLy8gRGlzcGxheSB0aGUgcG9wdWxhdGVkIHRlbXBsYXRlCgkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbnByZWZzLnRwbCcpOwoJfQoJCgkvKioKCSAqIE1ldGhvZDogU2F2ZUFkbWluUHJlZnMKCSAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAqIFRoaXMgd2lsbCBzYXZlIHRoZSBwcmVmcmVuY2VzLiBFc3NlbnRpYWxseSBpcyBqdXN0IHRoZSBoYW5kbGVyIGZvciB0aGUKCSAqIGZvcm0gd2UgY3JlYXRlZCBhYm92ZS4KCSAqLwoJZnVuY3Rpb24gU2F2ZUFkbWluUHJlZnMoJGlkLCAmJHBhcmFtcywgJHJldHVybmlkKQoJewoJCSRvbGRtb2RlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rldl9tb2RlJyk7CgkJJG5ld21vZGUgPSAkcGFyYW1zWydkZXZfbW9kZSddOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZXZfbW9kZScsICRwYXJhbXNbJ2Rldl9tb2RlJ10pOwoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0aW1lb3V0JywgJHBhcmFtc1sndGltZW91dCddKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnY2FjaGVfcGF0aCcsICRwYXJhbXNbJ2NhY2hlX3BhdGgnXSk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3RlbXBsYXRlX2V4dGVuc2lvbicsICRwYXJhbXNbJ3RlbXBsYXRlX2V4dGVuc2lvbiddKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnc3R5bGVzaGVldF9leHRlbnNpb24nLCAkcGFyYW1zWydzdHlsZXNoZWV0X2V4dGVuc2lvbiddKTsKCQkkbWVzc2FnZSA9ICR0aGlzLT5MYW5nKCdwcmVmc3VwZGF0ZWQnKTsKCQlpZighJG9sZG1vZGUgJiYgJG5ld21vZGUpCgkJewoJCQkkdGhpcy0+X0V4cG9ydEFsbCgpOwoJCQkkdGhpcy0+QXVkaXQoMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygnZGV2X21vZGVfZW5hYmxlZCcpKTsKCQkJJG1lc3NhZ2UgLj0gJyAnLiR0aGlzLT5MYW5nKCdkZXZfbW9kZV9lbmFibGVkJyk7CgkJfQoJCWVsc2VpZigkb2xkbW9kZSAmJiAhJG5ld21vZGUpCgkJewoJCQkkdGhpcy0+X0RlbGV0ZVRlbXBsYXRlQ2FjaGUoKTsKCQkJJHRoaXMtPkF1ZGl0KDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ2Rldl9tb2RlX2Rpc2FibGVkJykpOwoJCQkkbWVzc2FnZSAuPSAnICcuJHRoaXMtPkxhbmcoJ2Rldl9tb2RlX2Rpc2FibGVkJyk7CgkJfQoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdtZXNzYWdlJyA9PiAkbWVzc2FnZSkpOwoJfQoJCgkvKioKCSAqIE1ldGhvZDogRGlzcGxheUVycm9yUGFnZQoJICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICogT3VyIGVycm9yIGhhbmRsZXIKCSAqLwoJZnVuY3Rpb24gRGlzcGxheUVycm9yUGFnZSgkbWVzc2FnZSA9ICcnKQoJewoJCSR0aGlzLT5zbWFydHktPmFzc2lnbigndGl0bGVfZXJyb3InLCAkdGhpcy0+TGFuZygnZXJyb3InKSk7CgkJaWYgKCRtZXNzYWdlICE9ICcnKQoJCQkkdGhpcy0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdtZXNzYWdlJywgJG1lc3NhZ2UpOwoJCQoJCS8vIERpc3BsYXkgdGhlIHBvcHVsYXRlZCB0ZW1wbGF0ZQoJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZXJyb3IudHBsJyk7Cgl9CgkKCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKCSMgUFJJVkFURSBNRVRIT0RTCgkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgkvKioKCSAqIE1ldGhvZDogX0V4cG9ydEFsbAoJICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICogVGhpcyB3aWxsIGJlIGNhbGxlZCBieSB0aGUgZXZlbnRzIHdlIGhhdmUgZGVmaW5lZCBhdCB0aGUgc3RhcnQgb2YgdGhpcwoJICogY2xhc3MuIEl0IHdpbGwgZXhwb3J0IHRoZSB0ZW1wbGF0ZXMsIHN0eWxlc2hlZXQgYW5kIHBhZ2VzIG9uIGluIG9uZSBnby4KCSAqLwoJZnVuY3Rpb24gX0V4cG9ydEFsbCgpCgl7CgkJLy8gQ2hlY2sgdGhhdCB3ZSBhcmUgaW4gZGV2IG1vZAoJCWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJkZXZfbW9kZSIpKQoJCXsKCQkJLy8gR3JhYiBhIGNvdXBsZSBvZiBvdXIgcHJlZnMKCQkJJGNhY2hlX3BhdGggPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY2FjaGVfcGF0aCcpOwoJCQkkc3R5bGVzaGVldF9leHRlbnNpb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc3R5bGVzaGVldF9leHRlbnNpb24nKTsKCQkJJHRlbXBsYXRlX2V4dGVuc2lvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0ZW1wbGF0ZV9leHRlbnNpb24nKTsKCQkJCgkJCS8vIENoZWNrIHRoYXQgdGhlIHNhdmUgcGF0aCBleGlzdHMgYW5kIGlmIG5vdCwgYXR0ZW1wdCB0byBjcmVhdGUgaXQKCQkJaWYgKCAhIGZpbGVfZXhpc3RzKCRjYWNoZV9wYXRoKSkKCQkJewoJCQkJaWYgKG1rZGlyKCRjYWNoZV9wYXRoKSkgY2htb2QoJGNhY2hlX3BhdGgsIDA3NzcpOwoJCQkJZWxzZSB7CgkJCQkJJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoCgkJCQkJCSJVbmFibGUgdG8gZmluZCBvciBjcmVhdGUgY2FjaGUgcGF0aDogIgoJCQkJCQkuJGNhY2hlX3BhdGgKCQkJCQkpOyByZXR1cm4gZmFsc2U7CgkJCQl9CgkJCX0KCQkJCgkJCS8vIENoZWNrIHRoYXQgdGhlIHNhdmUgcGF0aCBpcyB3cml0YWJsZQoJCQllbHNlaWYgKCAhIGlzX3dyaXRhYmxlKCRjYWNoZV9wYXRoKSkKCQkJewoJCQkJJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoCgkJCQkJIlVuYWJsZSB0byB3cml0ZSB0byBjYWNoZSBwYXRoOiAiCgkJCQkJLiRjYWNoZV9wYXRoCgkJCQkpOyByZXR1cm4gZmFsc2U7CgkJCX0KCQkJCgkJCS8vIFVwZGF0ZSB0aW1lc3RhbXAgb24gY2FjaGUgZGlyIHRvICdyZXNldCcgdGltZW91dAoJCQl0b3VjaCgkY2FjaGVfcGF0aCk7CgkJCQoJCQkvLyBSdW4gb3VyIGV4cG9ydCBmdW5jdGlvbnMKCQkJJHRoaXMtPl9FeHBvcnRUZW1wbGF0ZXMoJGNhY2hlX3BhdGgsICR0ZW1wbGF0ZV9leHRlbnNpb24pOwoJCQkkdGhpcy0+X0V4cG9ydFN0eWxlU2hlZXRzKCRjYWNoZV9wYXRoLCAkc3R5bGVzaGVldF9leHRlbnNpb24pOwoJCQkkdGhpcy0+X0V4cG9ydFBhZ2VzKCRjYWNoZV9wYXRoLCAkdGVtcGxhdGVfZXh0ZW5zaW9uKTsKCQl9Cgl9CgkKCS8qKgoJICogTWV0aG9kOiBfRXhwb3J0VGVtcGxhdGVzCgkgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgKiBFeHBvcnQgdG8gZmlsZXMgYWxsIHRoZSB0ZW1wbGF0ZXMgZm91bmQgaW4gdGhlIGRhdGFiYXNlLgoJICovCglmdW5jdGlvbiBfRXhwb3J0VGVtcGxhdGVzKCRwYXRoLCAkdGVtcF9leHQpCgl7CgkJLy8gQ3JlYXRlIHRoZSB0ZW1wbGF0ZXMgZm9sZGVyCgkJaWYgKCAhIGZpbGVfZXhpc3RzKCRwYXRoLicvdGVtcGxhdGVzLycpKQoJCXsKCQkJaWYgKG1rZGlyKCRwYXRoLicvdGVtcGxhdGVzLycpKSBjaG1vZCgkcGF0aC4nL3RlbXBsYXRlcy8nLCAwNzc3KTsKCQkJZWxzZSB7CgkJCQkkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgKCQkJCQkiVW5hYmxlIHRvIGZpbmQgb3IgY3JlYXRlIGNhY2hlIHBhdGg6ICIKCQkJCQkuJHBhdGguJy90ZW1wbGF0ZXMvJwoJCQkJKTsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0KCQkKCQkvLyBDaGVjayB0aGF0IHRoZSBzYXZlIHBhdGggaXMgd3JpdGFibGUKCQllbHNlaWYgKCAhIGlzX3dyaXRhYmxlKCRwYXRoLicvdGVtcGxhdGVzLycpKQoJCXsKCQkJJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoCgkJCQkiVW5hYmxlIHRvIHdyaXRlIHRvIGNhY2hlIHBhdGg6ICIKCQkJCS4kcGF0aC4nL3RlbXBsYXRlcy8nCgkJCSk7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJCgkJLy8gR3JhYiBhbGwgdGhlIHRlbXBsYXRlcwoJCSR0byA9JiAkR0xPQkFMU1snZ0NtcyddLT5nZXRUZW1wbGF0ZU9wZXJhdGlvbnMoKTsKCQkkdGVtcGxhdGVzID0gJHRvLT5Mb2FkVGVtcGxhdGVzKCk7CgkJCgkJLy8gTG9vcCB0aHJvdWdoIHRoZW0sIHNhdmluZyBlYWNoIHRvIGEgZmlsZS4KCQlmb3JlYWNoKCR0ZW1wbGF0ZXMgYXMgJHRlbXBsYXRlKQoJCXsKCQkJLy8gT3BlbiBhIGhhbmRsZSB0byB0aGUgbmV3IGZpbGUKCQkJJGZuYW1lID0gJHBhdGguJy90ZW1wbGF0ZXMvJwoJCQkuJHRoaXMtPl9lc2NhcGVGaWxlbmFtZSgkdGVtcGxhdGUtPm5hbWUpLicuJy4kdGVtcF9leHQ7CgkJCSRmcCA9IGZvcGVuKCRmbmFtZSwgJ3cnKTsKCQkJCgkJCS8vIFdyaXRlIHRvIHRoZSBmaWxlLCBXZSBjb252ZXJ0IENSTEYgdG8gTEYgZm9yIHVuaXggY29tcGF0aWJpbGl0eQoJCQlmd3JpdGUoJGZwLCBzdHJfcmVwbGFjZSgiXHJcbiIsICJcbiIsICR0ZW1wbGF0ZS0+Y29udGVudCkpOwoJCQlmY2xvc2UoJGZwKTsKCQkJCgkJCS8vIE1ha2Ugc3VyZSB0ZW1wbGF0ZSBmaWxlcyBhcmUgd3JpdGFibGUKCQkJY2htb2QoJGZuYW1lLCAwNjY2KTsKCQkJCgkJCS8vIFNldCB0aGUgbW9kaWZpZWQgZGF0ZSB0byB0aGUgdGVtcGxhdGUgbW9kaWZpZWQgZGF0ZQoJCQl0b3VjaCgkZm5hbWUsICR0ZW1wbGF0ZS0+bW9kaWZpZWRfZGF0ZSk7CgkJfQoJfQoJCgkvKioKCSAqIE1ldGhvZDogX0V4cG9ydFN0eWxlU2hlZXRzCgkgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgKiBFeHBvcnQgdG8gZmlsZXMgYWxsIHRoZSBzdHlsZXNoZWV0cyBmb3VuZCBpbiB0aGUgZGF0YWJhc2UuCgkgKi8KCWZ1bmN0aW9uIF9FeHBvcnRTdHlsZVNoZWV0cygkcGF0aCwgJGNzc19leHQpCgl7CgkJLy8gQ3JlYXRlIHRoZSB0ZW1wbGF0ZXMgZm9sZGVyCgkJaWYgKCAhIGZpbGVfZXhpc3RzKCRwYXRoLicvc3R5bGVzaGVldHMvJykpCgkJewoJCQlpZiAobWtkaXIoJHBhdGguJy9zdHlsZXNoZWV0cy8nKSkgY2htb2QoJHBhdGguJy9zdHlsZXNoZWV0cy8nLCAwNzc3KTsKCQkJZWxzZSB7CgkJCQkkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgKCQkJCQkiVW5hYmxlIHRvIGZpbmQgb3IgY3JlYXRlIGNhY2hlIHBhdGg6ICIKCQkJCQkuJHBhdGguJy9zdHlsZXNoZWV0cy8nCgkJCQkpOwoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoJCQoJCS8vIENoZWNrIHRoYXQgdGhlIHNhdmUgcGF0aCBpcyB3cml0YWJsZQoJCWVsc2VpZiAoICEgaXNfd3JpdGFibGUoJHBhdGguJy9zdHlsZXNoZWV0cy8nKSkKCQl7CgkJCSR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKAoJCQkJIlVuYWJsZSB0byB3cml0ZSB0byBjYWNoZSBwYXRoOiAiCgkJCQkuJHBhdGguJy9zdHlsZXNoZWV0cy8nCgkJCSk7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJCgkJLy8gR3JhYiBhbGwgdGhlIHN0eWxlc2hlZXRzCgkJJHNvID0mICRHTE9CQUxTWydnQ21zJ10tPmdldFN0eWxlc2hlZXRPcGVyYXRpb25zKCk7CgkJJHN0eWxlc2hlZXRzID0gJHNvLT5Mb2FkU3R5bGVzaGVldHMoKTsKCQkKCQkvLyBMb29wIHRocm91Z2ggdGhlbSwgc2F2aW5nIGVhY2ggdG8gYSBmaWxlLgoJCWZvcmVhY2goJHN0eWxlc2hlZXRzIGFzICRzdHlsZXNoZWV0KQoJCXsKCQkJLy8gT3BlbiBhIGhhbmRsZSB0byB0aGUgbmV3IGZpbGUKCQkJJGZuYW1lID0gJHBhdGguJy9zdHlsZXNoZWV0cy8nCgkJCS4kdGhpcy0+X2VzY2FwZUZpbGVuYW1lKCRzdHlsZXNoZWV0LT5uYW1lKS4nLicuJGNzc19leHQ7CgkJCSRmcCA9IGZvcGVuKCRmbmFtZSwgJ3cnKTsKCQkJCgkJCS8vIFdyaXRlIHRvIHRoZSBmaWxlLCBXZSBjb252ZXJ0IENSTEYgdG8gTEYgZm9yIHVuaXggY29tcGF0aWJpbGl0eQoJCQlmd3JpdGUoJGZwLCBzdHJfcmVwbGFjZSgiXHJcbiIsICJcbiIsICRzdHlsZXNoZWV0LT52YWx1ZSkpOwoJCQlmY2xvc2UoJGZwKTsKCQkJCgkJCS8vIE1ha2Ugc3VyZSBzdHlsZXNoZWV0IGZpbGVzIGFyZSB3cml0YWJsZQoJCQljaG1vZCgkZm5hbWUsIDA2NjYpOwoJCQkKCQkJLy8gU2V0IHRoZSBmaWxlIG1vZGlmaWVkIGRhdGUgdG8gdGhlIHN0eWxlc2hlZXQgbW9kaWZpZWQgZGF0ZQoJCQl0b3VjaCgkZm5hbWUsICRzdHlsZXNoZWV0LT5tb2RpZmllZF9kYXRlKTsKCQl9Cgl9CgkKCS8qKgoJICogTWV0aG9kOiBfRXhwb3J0UGFnZXMKCSAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCSAqIEV4cG9ydCB0byBmaWxlcyBhbGwgdGhlIHBhZ2VzIGZvdW5kIGluIHRoZSBkYXRhYmFzZS4KCSAqLwoJZnVuY3Rpb24gX0V4cG9ydFBhZ2VzKCRwYXRoLCAkcGFnZV9leHQpCgl7CgkJLy8gQ3JlYXRlIHRoZSB0ZW1wbGF0ZXMgZm9sZGVyCgkJaWYgKCAhIGZpbGVfZXhpc3RzKCRwYXRoLicvcGFnZXMvJykpCgkJewoJCQlpZiAobWtkaXIoJHBhdGguJy9wYWdlcy8nKSkgY2htb2QoJHBhdGguJy9wYWdlcy8nLCAwNzc3KTsKCQkJZWxzZSB7CgkJCQkkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgKCQkJCQkiVW5hYmxlIHRvIGZpbmQgb3IgY3JlYXRlIGNhY2hlIHBhdGg6ICIKCQkJCQkuJHBhdGguJy9wYWdlcy8nCgkJCQkpOwoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9CgkJfQoJCQoJCS8vIENoZWNrIHRoYXQgdGhlIHNhdmUgcGF0aCBpcyB3cml0YWJsZQoJCWVsc2VpZiAoICEgaXNfd3JpdGFibGUoJHBhdGguJy9wYWdlcy8nKSkKCQl7CgkJCSR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKAoJCQkJIlVuYWJsZSB0byB3cml0ZSB0byBjYWNoZSBwYXRoOiAiCgkJCQkuJHBhdGguJy9wYWdlcy8nCgkJCSk7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJCgkJCgkJLy8gR3JhYiBhbGwgdGhlIHBhZ2VzCgkJJGNvID0mICRHTE9CQUxTWydnQ21zJ10tPmdldENvbnRlbnRPcGVyYXRpb25zKCk7CgkJJHBhZ2VzID0gJGNvLT5HZXRBbGxDb250ZW50KCk7CgkJCgkJLy8gTG9vcCB0aHJvdWdoIHRoZW0sIHNhdmluZyBlYWNoIHRvIGEgZmlsZS4KCQlmb3JlYWNoKCRwYWdlcyBhcyAkcGFnZSkKCQl7CgkJCS8vIE9wZW4gYSBoYW5kbGUgdG8gdGhlIG5ldyBmaWxlCgkJCSRmbmFtZSA9ICRwYXRoLicvcGFnZXMvJy4kdGhpcy0+X2VzY2FwZUZpbGVuYW1lKAoJCQkJc3RyX3JlcGxhY2UoJy8nLCAnXycsICRwYWdlLT5tSGllcmFyY2h5UGF0aCkKCQkJKS4nLicuJHBhZ2VfZXh0OyAkZnAgPSBmb3BlbigkZm5hbWUsICd3Jyk7CgkJCQoJCQkvLyBXcml0ZSB0byB0aGUgZmlsZSwgV2UgY29udmVydCBDUkxGIHRvIExGIGZvciB1bml4IGNvbXBhdGliaWxpdHkKCQkJZndyaXRlKCRmcCwgc3RyX3JlcGxhY2UoIlxyXG4iLCAiXG4iLCAkcGFnZS0+R2V0UHJvcGVydHlWYWx1ZSgnY29udGVudF9lbicpKSk7CgkJCWZjbG9zZSgkZnApOwoJCQkKCQkJLy8gTWFrZSBzdXJlIHBhZ2UgZmlsZXMgYXJlIHdyaXRhYmxlCgkJCWNobW9kKCRmbmFtZSwgMDY2Nik7CgkJCQoJCQkvL1NldCB0aGUgZmlsZSBtb2RpZmllZCBkYXRlIHRvIHRoZSBwYWdlIG1vZGlmaWVkIGRhdGUKCQkJdG91Y2goJGZuYW1lLCBzdHJ0b3RpbWUoJHBhZ2UtPm1Nb2RpZmllZERhdGUpKTsKCQl9Cgl9CgkKCS8qKgoJICogTWV0aG9kOiBfSW1wb3J0QWxsCgkgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgKiBUaGlzIHdpbGwgaW1wb3J0IGFsbCB0aGUgZmlsZXMgYmFjayBpbnRvIHRoZSBEYXRhQmFzZS4KCSAqIElzIGNhbGxlZCBieSB0aGUgY29uc3RydWN0b3IuCgkgKi8KCWZ1bmN0aW9uIF9JbXBvcnRBbGwoKQoJewoJCS8vIEdyYWIgc29tZSBwcmVmcwoJCSRjYWNoZV9wYXRoID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NhY2hlX3BhdGgnKTsKCQkkdGltZW91dCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0aW1lb3V0Jyk7CgkJJHN0eWxlc2hlZXRfZXh0ZW5zaW9uID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3N0eWxlc2hlZXRfZXh0ZW5zaW9uJyk7CgkJJHRlbXBsYXRlX2V4dGVuc2lvbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0ZW1wbGF0ZV9leHRlbnNpb24nKTsKCQkKCQkvLyBEb24ndCByYWlzZSBhbiBlcnJvciBhcyB0aGlzIGNvdWxkIGJlIGNhbGxlZCBmcm9tIHRoZSBmcm9udGVuZAoJCWlmKCAhIGZpbGVfZXhpc3RzKCRjYWNoZV9wYXRoKSkgcmV0dXJuIGZhbHNlOwoJCQoJCS8vIENyZWF0ZSBvdXQgbW9zdCByZWNlbnQgZWRpdCBhdHRyaWJ1dGUKCQkkdGhpcy0+bW9zdF9yZWNlbnRfZWRpdCA9IGFycmF5KCk7CgkJIAoJCS8vIFJ1biBvdXIgaW1wb3J0IGZ1bmN0aW9ucwoJCSR0aGlzLT5fSW1wb3J0VGVtcGxhdGVzKCRjYWNoZV9wYXRoLCAkdGVtcGxhdGVfZXh0ZW5zaW9uKTsKCQkkdGhpcy0+X0ltcG9ydFN0eWxlU2hlZXRzKCRjYWNoZV9wYXRoLCAkc3R5bGVzaGVldF9leHRlbnNpb24pOwoJCSR0aGlzLT5fSW1wb3J0UGFnZXMoJGNhY2hlX3BhdGgsICR0ZW1wbGF0ZV9leHRlbnNpb24pOwoJCQoJCS8vIFdvcmsgb3V0IHdoZW4gdGhlIGxhc3QgZWRpdCB3YXMKCQkkdGhpcy0+bW9zdF9yZWNlbnRfZWRpdFtdID0gQGZpbGVtdGltZSgkY2FjaGVfcGF0aCk7CgkJJG1vc3RfcmVjZW50X2VkaXQgPSBtYXgoJHRoaXMtPm1vc3RfcmVjZW50X2VkaXQpOwoJCQoJCS8vIFR1cm4gb2ZmIGRldl9tb2RlIGlmIHRpbWVvdXQgaXMgcmVhY2hlZAoJCWlmKCR0aW1lb3V0ICE9IDAgJiYgdGltZSgpIC0gJG1vc3RfcmVjZW50X2VkaXQgPiAkdGltZW91dCo2MCkKCQl7CgkJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZXZfbW9kZScsIGZhbHNlKTsKCQkJJHRoaXMtPkF1ZGl0KAoJCQkJMCwKCQkJCSR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwKCQkJCSR0aGlzLT5MYW5nKCdkZXZfbW9kZV90aW1lZG91dCcpCgkJCSk7CgkJfQoJfQoJCgkvKioKCSAqIE1ldGhvZDogX0ltcG9ydFRlbXBsYXRlcwoJICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICogVGhpcyB3aWxsIGxvb2sgZm9yIGFuZCBpbXBvcnQgYW55IHRlbXBsYXRlcyB0aGF0IGV4aXN0IGFzIGZpbGVzLgoJICovCglmdW5jdGlvbiBfSW1wb3J0VGVtcGxhdGVzKCRwYXRoLCAkdGVtcF9leHQpCgl7CgkJLy8gTG9hZCBhbGwgdGhlIHRlbXBsYXRlcyBmcm9tIHRoZSBkYXRhYmFzZQoJCSR0byA9JiAkR0xPQkFMU1snZ0NtcyddLT5nZXRUZW1wbGF0ZU9wZXJhdGlvbnMoKTsKCQkkdGVtcGxhdGVzID0gJHRvLT5Mb2FkVGVtcGxhdGVzKCk7CgkJCgkJLy8gTG9vcCB0aHJvdWdoIHRoZW0sIHNlYXJjaGluZyBmb3IgYSBmaWxlIHRvIGltcG9ydC4KCQlmb3JlYWNoKCR0ZW1wbGF0ZXMgYXMgJGtleSA9PiAkdGVtcGxhdGUpCgkJewoJCQkvLyBXb3JrIG91dCB3aGVuIHRoZSBmaWxlIHdhcyBsYXN0IGNoYW5nZWQuCgkJCSRmbmFtZSA9ICRwYXRoLicvdGVtcGxhdGVzLycKCQkJLiR0aGlzLT5fZXNjYXBlRmlsZW5hbWUoJHRlbXBsYXRlLT5uYW1lKS4nLicuJHRlbXBfZXh0OwoJCQkkZnRpbWUgPSBAZmlsZW10aW1lKCRmbmFtZSk7ICR0aGlzLT5tb3N0X3JlY2VudF9lZGl0W10gPSAkZnRpbWU7CgkJCSRmc2l6ZSA9IEBmaWxlc2l6ZSgkZm5hbWUpOwoJCQkKCQkJLy8gT25seSBsb2FkIHRoZSBmaWxlIGlmIGl0IGhhcyBiZWVuIG1vZGlmaWVkIAoJCQlpZigkZnRpbWUgPiAkdGVtcGxhdGUtPm1vZGlmaWVkX2RhdGUgJiYgJGZzaXplICE9IDApCgkJCXsKCQkJCSRmcCA9IGZvcGVuKCRmbmFtZSwgJ3InKTsKCQkJCSR0ZW1wbGF0ZXNbJGtleV0tPmNvbnRlbnQgPSBmcmVhZCgkZnAsICRmc2l6ZSk7CgkJCQkkdGVtcGxhdGVzWyRrZXldLT5TYXZlKCk7CgkJCQlmY2xvc2UoJGZwKTsKCQkJfQoJCX0KCX0KCQoJLyoqCgkgKiBNZXRob2Q6IF9JbXBvcnRTdHlsZVNoZWV0cwoJICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICogVGhpcyB3aWxsIGxvb2sgZm9yIGFuZCBpbXBvcnQgYW55IHN0eWxlc2hlZXRzIHRoYXQgZXhpc3QgYXMgZmlsZXMuCgkgKi8KCWZ1bmN0aW9uIF9JbXBvcnRTdHlsZVNoZWV0cygkcGF0aCwgJGNzc19leHQpCgl7CgkJLy8gR3JhYiBhbGwgdGhlIHN0eWxlc2hlZXRzIGZyb20gdGhlIGRhdGFiYXNlLgoJCSRzbyA9JiAkR0xPQkFMU1snZ0NtcyddLT5nZXRTdHlsZXNoZWV0T3BlcmF0aW9ucygpOwoJCSRzdHlsZXNoZWV0cyA9ICRzby0+TG9hZFN0eWxlc2hlZXRzKCk7CgkJCgkJLy8gTG9vcCB0aHJvdWdodGhlbSwgc2VhcmNoIGZvciBhIGZpbGUgdG8gaW1wb3J0LgoJCWZvcmVhY2goJHN0eWxlc2hlZXRzIGFzICRrZXkgPT4gJHN0eWxlc2hlZXQpCgkJewoJCQkkZm5hbWUgPSAkcGF0aC4nL3N0eWxlc2hlZXRzLycKCQkJLiR0aGlzLT5fZXNjYXBlRmlsZW5hbWUoJHN0eWxlc2hlZXQtPm5hbWUpLicuJy4kY3NzX2V4dDsKCQkJJGZ0aW1lID0gQGZpbGVtdGltZSgkZm5hbWUpOyAkdGhpcy0+bW9zdF9yZWNlbnRfZWRpdFtdID0gJGZ0aW1lOwoJCQkkZnNpemUgPSBAZmlsZXNpemUoJGZuYW1lKTsKCQkJCgkJCS8vIE9ubHkgbG9hZCB0aGUgZmlsZSBpZiBpdCBoYXMgYmVlbiBtb2RpZmllZC4KCQkJaWYoJGZ0aW1lID4gQCRzdHlsZXNoZWV0LT5tb2RpZmllZF9kYXRlICYmICRmc2l6ZSAhPSAwKQoJCQl7CgkJCQkkZnAgPSBmb3BlbigkZm5hbWUsICdyJyk7CgkJCQkkc3R5bGVzaGVldHNbJGtleV0tPnZhbHVlID0gZnJlYWQoJGZwLCAkZnNpemUpOwoJCQkJJHN0eWxlc2hlZXRzWyRrZXldLT5TYXZlKCk7CgkJCQlmY2xvc2UoJGZwKTsKCQkJfQoJCX0KCX0KCQoJLyoqCgkgKiBNZXRob2Q6IF9JbXBvcnRQYWdlcwoJICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJICogVGhpcyB3aWxsIGxvb2sgZm9yIGFuZCBpbXBvcnQgYW55IHBhZ2VzIHRoYXQgZXhpc3QgYXMgZmlsZXMuCgkgKi8KCWZ1bmN0aW9uIF9JbXBvcnRQYWdlcygkcGF0aCwgJHBhZ2VfZXh0KQoJewoJCS8vIEdyYWIgYWxsIHRoZSBwYWdlcyBmcm9tIHRoZSBkYXRhYmFzZQoJCSRjbyA9JiAkR0xPQkFMU1snZ0NtcyddLT5nZXRDb250ZW50T3BlcmF0aW9ucygpOwoJCSRwYWdlcyA9ICRjby0+R2V0QWxsQ29udGVudCgpOwoJCQoJCS8vIExvb3AgdGhyb3VnaCB0aGVtLCBzZWFyY2hpbmcgZm9yIGEgZmlsZSB0byBpbXBvcnQuCgkJZm9yZWFjaCgkcGFnZXMgYXMgJHBhZ2UpCgkJewoJCQkkZm5hbWUgPSAkcGF0aC4nL3BhZ2VzLycKCQkJLiR0aGlzLT5fZXNjYXBlRmlsZW5hbWUoCgkJCQlzdHJfcmVwbGFjZSgnLycsICdfJywgJHBhZ2UtPm1IaWVyYXJjaHlQYXRoKQoJCQkpLicuJy4kcGFnZV9leHQ7CgkJCSRmdGltZSA9IEBmaWxlbXRpbWUoJGZuYW1lKTsgJHRoaXMtPm1vc3RfcmVjZW50X2VkaXRbXSA9ICRmdGltZTsKCQkJJGZzaXplID0gQGZpbGVzaXplKCRmbmFtZSk7CgkJCQoJCQkvLyBPbmx5IGxvYWQgdGhlIGZpbGUgaWYgaXQgaGFzIGJlZW4gbW9kaWZpZWQKCQkJaWYoJGZ0aW1lID4gQHN0cnRvdGltZSgkcGFnZS0+bU1vZGlmaWVkRGF0ZSkgJiYgJGZzaXplICE9IDApCgkJCXsKCQkJCSRmcCA9IGZvcGVuKCRmbmFtZSwgJ3InKTsKCQkJCSRwYWdlLT5TZXRQcm9wZXJ0eVZhbHVlKCdjb250ZW50X2VuJywgZnJlYWQoJGZwLCAkZnNpemUpKTsKCQkJCSRwYWdlLT5TYXZlKCk7CgkJCQlmY2xvc2UoJGZwKTsKCQkJfQoJCX0KCX0KCQoJLyoqCgkgKiBNZXRob2Q6IF9EZWxldGVUZW1wbGF0ZUNhY2hlCgkgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgKiBEZWxldGUgYWxsIGZpbGVzIGluIHRoZSBjYWNoZV9wYXRoIGRpcmVjdG9yeQoJICovCglmdW5jdGlvbiBfRGVsZXRlVGVtcGxhdGVDYWNoZSgpCgl7CgkJJGNhY2hlX3BhdGggPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY2FjaGVfcGF0aCcpOwoJCWV4ZWMoJ3JtIC1SIC1mICcuJGNhY2hlX3BhdGgpOwoJfQoJCgkvKioKCSAqIE1ldGhvZDogX2VzY2FwZUZpbGVuYW1lCgkgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgkgKiBKdXN0IGEgbGl0dGxlIGhlbHBlciB0byBtYWtlIHN1cmUgdGhhdCBlYWNoIGZpbGVuYW1lIGlzIGFjdHVhbGx5IHZhbGlkLgoJICovCglmdW5jdGlvbiBfZXNjYXBlRmlsZW5hbWUoJGZuYW1lKQoJewoJCXJldHVybiBzdHJ0cigkZm5hbWUsICI6Lz9cXCIsICItLS0tIik7Cgl9Cn0=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/adminpanel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfc2VjdGlvbn08L2gzPg0KPHA+eyRhZG1pbl9uYXZ9PC9wPg0KeyR3ZWxjb21lX3RleHR9]]></data>
	</file>
	<file>
	  <filename>/templates/adminprefs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfc2VjdGlvbn08L2gzPg0Ke2lmICRtZXNzYWdlIT0nJ308cD57JG1lc3NhZ2V9PC9wPnsvaWZ9DQp7JHN0YXJ0Zm9ybX0NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfZGV2X21vZGV9OjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9kZXZfbW9kZX08L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHRpdGxlX3RpbWVvdXR9OjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90aW1lb3V0fTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskdGl0bGVfY2FjaGVfcGF0aH06PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2NhY2hlX3BhdGh9PC9wPg0KCTwvZGl2Pg0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV90ZW1wbGF0ZV9leHRlbnNpb259OjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90ZW1wbGF0ZV9leHRlbnNpb259PC9wPg0KCTwvZGl2Pg0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV9zdHlsZXNoZWV0X2V4dGVuc2lvbn06PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3N0eWxlc2hlZXRfZXh0ZW5zaW9ufTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9PC9wPg0KCTwvZGl2Pg0KeyRlbmRmb3JtfQ0K]]></data>
	</file>
	<file>
	  <filename>/templates/error.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfZXJyb3J9PC9oMz4NCjxwPnskYWRtaW5fbmF2fTwvcD4NCntpZiAkbWVzc2FnZSE9Jyd9PHA+eyRtZXNzYWdlfTwvcD57L2lmfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/plugin.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbG91ZG5lc3N9PC9oMz4=]]></data>
	</file>
</module>
