<?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>JMDownMan</name>
	<version>1.RC.2</version>
    <mincmsversion>1.12</mincmsversion>
	<help><![CDATA[PGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2Pg0KPGRpdiBpZD0icGFnZV90YWJzIj4NCiAgPGRpdiBpZD0iZ2VuZXJhbCI+DQogICAgICBHZW5lcmFsDQogIDwvZGl2PiAgICAgIA0KICA8ZGl2IGlkPSJhYm91dCI+DQogICAgQWJvdXQNCiAgPC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+DQo8ZGl2IGlkPSJwYWdlX2NvbnRlbnQiPg0KICA8ZGl2IGlkPSJnZW5lcmFsX2MiPg0KICAgIDxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KICAgIDxwPk1hbmFnZXMgZG93bmxvYWRzIGZyb20gdGhlIGFkbWluaXN0cmF0aW9uIHBhbmVsLjwvcD4NCiAgICANCiAgICA8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4NCiAgICA8cD5HbyB0byBDb250ZW50IC0+IDxzdHJvbmc+Sk0gRG93bmxvYWQgTWFuYWdlcjwvc3Ryb25nPi48L3A+DQogICAgPHA+SW5zdGFsbCBpdCBieSBwbGFjaW5nIHRoZSBtb2R1bGUgaW4gYSBwYWdlIG9yIHRlbXBsYXRlIHVzaW5nIHRoZSBzbWFydHkgPHN0cm9uZz57Sk1Eb3duTWFufTwvc3Ryb25nPi48L3A+DQogICAgPHA+QXZhaWxhYmxlIGFjdGlvbnM6PC9wPg0KICAgICAgPHVsPg0KICAgICAgPGxpPjxlbT5kZWZhdWx0PC9lbT46IHNob3dzIGZpbGUgbGlzdCANCiAgICAgICAgPGJyLz5vcHRpb25hbCBwYXJhbWV0ZXJzOiA8ZW0+Y2F0ZWdvcnlpZDwvZW0+IG9yIDxlbT5hbGlhczwvZW0+LCA8ZW0+ZGVwdGg8L2VtPiwgPGVtPnRlbXBsYXRlPC9lbT4NCiAgICAgICAgPGJyLz5leDogPHN0cm9uZz57Sk1Eb3duTWFuIGFsaWFzPSdteS1jYXRlZ29yeScgZGVwdGg9JzInfTwvc3Ryb25nPjwvbGk+DQogICAgICA8bGk+PGVtPnNlbGVjdG9yPC9lbT46IGFsbG93IHRvIHNlbGVjdCBtdWx0aXBsZSBjYXRlZ29yaWVzLCBzZWUgc2VsZWN0b3IgcGFyYW1ldGVyDQogICAgICAgIDxici8+cmVxdWlyZWQgcGFyYW1ldGVyczogPGVtPnNlbGVjdG9yPC9lbT4NCiAgICAgICAgPGJyLz5vcHRpb25hbCBwYXJhbWV0ZXJzOiA8ZW0+dGVtcGxhdGU8L2VtPg0KICAgICAgICA8YnIvPmV4OiA8c3Ryb25nPntKTURvd25NYW4gYWN0aW9uPSdzZWxlY3Rvcicgc2VsZWN0b3I9JzMmKDF8MiknfTwvc3Ryb25nPjwvbGk+DQogICAgICA8bGk+PGVtPmRldGFpbDwvZW0+OiBzaG93cyBkZXRhaWxzIG9mIHNlbGVjdGVkIGZpbGUNCiAgICAgICAgPGJyLz5yZXF1aXJlZCBwYXJhbWV0ZXJzOiA8ZW0+YWxpYXM8L2VtPg0KICAgICAgICA8YnIvPm9wdGlvbmFsIHBhcmFtZXRlcnM6IDxlbT50ZW1wbGF0ZTwvZW0+DQogICAgICAgIDxici8+ZXg6IDxzdHJvbmc+e0pNRG93bk1hbiBhY3Rpb249J2RldGFpbCcgYWxpYXM9J215LWZpbGUnfTwvc3Ryb25nPjwvbGk+DQogICAgICA8bGk+PGVtPmRvd25sb2FkPC9lbT46IGRvd25sb2FkcyBvZiBzZWxlY3RlZCBmaWxlDQogICAgICAgIDxici8+cmVxdWlyZWQgcGFyYW1ldGVyczogPGVtPmFsaWFzPC9lbT4NCiAgICAgICAgPGJyLz5vcHRpb25hbCBwYXJhbWV0ZXJzOiA8ZW0+dGVtcGxhdGU8L2VtPiANCiAgICAgICAgPGJyLz5leDogPHN0cm9uZz57Sk1Eb3duTWFuIGFjdGlvbj0nZG93bmxvYWQnIGFsaWFzPSdteS1maWxlJ308L3N0cm9uZz48L2xpPg0KICAgICAgPC91bD4NCiAgPC9kaXY+DQogIDxkaXYgaWQ9ImFib3V0X2MiPg0KICAgIDxoMz5BYm91dCB0aGlzIG1vZHVsZTwvaDM+DQogICAgPHA+VGhpcyBtb2R1bGUgaXMgYSBmb3JrIG9mIDxzdHJvbmc+RG93bmxvYWRNYW5hZ2VyPC9zdHJvbmc+IG9yaWdpbmFsbHkgZGV2ZWxvcGVkIGJ5IDxzdHJvbmc+U3p5bW9uIMWBdWthc3pjenlrPC9zdHJvbmc+IGFuZCA8c3Ryb25nPlBpZXJyZS1MdWMgR2VybWFpbjwvc3Ryb25nPi48L3A+DQoNCiAgICA8aDM+U3VwcG9ydDwvaDM+DQogICAgPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCiAgICA8cD5UaGUgbW9kdWxlIGF1dGhvciBpcyBpbiBubyB3YXkgb2JsaWdhdGVkIHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhpcyBjb2RlIGluIGFueSBmYXNoaW9uLiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0cyB1c2U6PC9wPg0KICAgIDx1bD4NCiAgICAgIDxsaT4NCiAgICAgICAgSWYgeW91IGZpbmQgYW55IGJ1Z3MgcGxlYXNlIGZlZWwgZnJlZSB0byBzdWJtaXQgYSBidWcgcmVwb3J0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvYnVnL2xpc3QvMTM2MSIgdGFyZ2V0PSJfYmxhbmsiPmhlcmU8L2E+IG9yIGZvciBhbnkgZ29vZCBpZGVhcyBjb25zaWRlciBzdWJtaXR0aW5nIGEgZmVhdHVyZSByZXF1ZXN0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvZmVhdHVyZV9yZXF1ZXN0L2xpc3QvMTM2MSIgdGFyZ2V0PSJfYmxhbmsiPmhlcmU8L2E+Ow0KICAgICAgPC9saT4gICAgICAgIA0KICAgICAgPGxpPg0KICAgICAgICBBZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uICBXaGVuIGRlc2NyaWJpbmcgYW4gaXNzdWUgcGxlYXNlIG1ha2UgYW4gZWZmb3J0IHRvIHByb3ZpZGUgYWxsIHJlbGV2YW50IGluZm9ybWF0aW9uLCBhIHRob3JvdWdoIGRlc2NyaXB0aW9uIG9mIHlvdXIgaXNzdWUsIGFuZCBzdGVwcyB0byByZXByb2R1Y2UgaXQgb3IgeW91ciBkaXNjdXNzaW9uIG1heSBiZSBpZ25vcmVkOw0KICAgICAgPC9saT4gICAgICAgIA0KICAgICAgPGxpPg0KICAgICAgIFRoZSBhdXRob3IsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+Ow0KICAgICAgPC9saT4NCiAgICA8L3VsPg0KICAgIDxwPlBsZWFzZSBrZWVwIGluIG1pbmQgdGhhdCBkZXZlbG9wZXJzIGRvIGhhdmUgdGhlaXIgZGFpbHkgam9icyB3aGljaCBtZWFucyB0aGF0IGZlYXR1cmUgcmVxdWVzdHMgYXJlIGNvbnNpZGVyZWQgYW5kIGRvbmUgYXMgdGltZSBhbGxvd3MuIElmIHlvdSBuZWVkIGEgZmVhdHVyZSByZWFsbHkgYmFkbHkgY29uc2lkZXIgY29udGFjdGluZyBvbmUgb2YgdGhlIGRldmVsb3BlcnMgZm9yIGEgc3BvbnNvcmVkIGRldmVsb3BtZW50LjwvcD4NCg0KICAgIDxwPklmIHdhbnQgdG8gaGVscCB0aGUgZGV2ZWxvcG1lbnQgYW5kIG1haW50ZW5hbmNlIG9mIHRoaXMgbW9kdWxlLCBwbGVhc2UgY29uc2lkZXIgZG9uYXRpbmcuIDxiciAvPiA8YnIgLz4NCiAgICA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9jZ2ktYmluL3dlYnNjcj9jbWQ9X3MteGNsaWNrJmhvc3RlZF9idXR0b25faWQ9VDJHNzNOQU1aMjVDVSI+IA0KICAgICAgPGltZyBzcmM9Imh0dHA6Ly9sb2NhbGhvc3QvZGV2XzJfbW9kcy9tb2R1bGVzL0pNRG93bk1hbi9pbWFnZXMvcHBfYnV0dG9uLnBuZyIgYm9yZGVyPSIwIiBuYW1lPSJzdWJtaXQiIGFsdD0iUGF5UGFsIOKAkyBUaGUgc2FmZXIsIGVhc2llciB3YXkgdG8gcGF5IG9ubGluZS4iIC8+DQogICAgPC9hPjwvcD4NCiAgICAgIA0KICAgIDxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KICAgIA0KICAgIDxwPlRoZSBNb2R1bGUgaXMgY3VycmVudGx5IGJlaW5nIGRldmVsb3BlZCBieSA8c3Ryb25nPkZlcm5hbmRvIE1vcmdhZG8gKEpvIE1vcmcpPC9zdHJvbmc+DQogICAgPGJyIC8+DQogICAgV2ViOiA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly93d3cuc20tYXJ0LWxhYi5jb20iIHJlbD0iZXh0ZXJuYWwiPnd3dy5zbS1hcnQtbGFiLmNvbTwvYT4NCiAgICA8YnIgLz4NCiAgICBFbWFpbDogPGEgaHJlZj0ibWFpbHRvOmpvbW9yZ0BzbS1hcnQtbGFiLmNvbSI+am9tb3JnQHNtLWFydC1sYWIuY29tPC9hPg0KICAgIDwvcD4NCiAgICAgICAgPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDE1IC0gMjAxNiAuIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjxiciAvPjwvcD4NCiAgICANCiAgICA8cD48c3Ryb25nPkpNRG93bk1hbjwvc3Ryb25nPiBpcyBmcmVlIHNvZnR3YXJlOzxiciAvPiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgPHN0cm9uZz5HTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZTwvc3Ryb25nPiBhcyBwdWJsaXNoZWQgYnkgdGhlIDxzdHJvbmc+RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uPC9zdHJvbmc+OzxiciAvPiBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLjwvcD4NCiAgICA8cD48c3Ryb25nPkpNRG93bk1hbjwvc3Ryb25nPiBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgPHN0cm9uZz5XSVRIT1VUIEFOWSBXQVJSQU5UWTwvc3Ryb25nPjs8YnIgLz4gd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIDxzdHJvbmc+TUVSQ0hBTlRBQklMSVRZPC9zdHJvbmc+IG9yIDxzdHJvbmc+RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0U8L3N0cm9uZz4uPC9wPg0KICAgIDxwPlNlZSB0aGVHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLjwvcD4NCiAgICA8cD5Zb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSA8c3Ryb25nPkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlPC9zdHJvbmc+IGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOzxiciAvPiBpZiBub3QsIHdyaXRlIHRvIHRoZSA8c3Ryb25nPkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0E8L3N0cm9uZz4gb3IgPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+cmVhZCBpdCBvbmxpbmU8L2E+LjwvcD4NCiAgICA8cD48c3Ryb25nPllvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgSk1Eb3duTWFuLjwvc3Ryb25nPjwvcD4NCiAgICAgIA0KICAgIDxoND5Db250cmlidXRvcnM8L2g0Pg0KICAgIDx1bD4NCiAgICAgIDxsaT48c3Ryb25nPlN6eW1vbiDFgXVrYXN6Y3p5ayAtIDwvc3Ryb25nPnN6eW1vbi5sdWthc3pjenlrQGdtYWlsLmNvbTwvbGk+ICAgICAgDQogICAgICA8bGk+PHN0cm9uZz5QaWVycmUtTHVjIEdlcm1haW4gLSA8L3N0cm9uZz5wbC5nZXJtYWluQGdtYWlsLmNvbTwvbGk+DQogICAgPC91bD4NCiAgDQogIDwvZGl2Pg0KPC9kaXY+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBKbyBNb3JnIChGZXJuYW5kbyBNb3JnYWRvKSAmbHQ7am9tb3JnQGNtc21hZGVzaW1wbGUub3JnJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuUkMuMjxiciAvPjxiciAvPkNoYW5nZSBIaXN0b3J5OjxiciAvPjxoND5WZXJzaW9uIDEuUkMuMjwvaDQ+DQo8dWw+DQogIDxsaT5GaXhlZCBhIG1ham9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkgaW5oZXJpdGVkIGZyb20gdGhlIG9yaWdpbmFsIG1vZHVsZTs8L2xpPg0KICA8bGk+UmVtb3ZlZCB1bm5lZWRlZCBmaWxlcyAodXBncmFkaW5nIGNsZWFucyB1cCB0aG9zZSBmaWxlcyB0b28pOzwvbGk+DQogIDxsaT5UaGUgbW9kdWxlIGNhbiBub3cgY29weSB0aGUgZGF0YWJhc2UgZnJvbSBEb3dubG9hZCBNYW5hZ2VyOzwvbGk+DQogIDxsaT5GaXhlZCBhIGZldyBpbXBvcnRhbnQgYnVncyBuYW1lbHk6DQogIDx1bD4NCiAgICA8bGk+YSBidWcgaW4gdGhlIGRldGFpbHMgcm91dGU7PC9saT4NCiAgICA8bGk+YSBidWcgd2hlbiBhZGRpbmcgYW5kIGVkaXRpbmcgZmlsZXM6IHRoZSBjYXRlZ29yaWVzIG5vdyBob2xkIHRoZWlyIHZhbHVlczs8L2xpPg0KICA8L3VsPg0KICA8L2xpPg0KICA8bGk+QSBmZXcgb3RoZXIgbWlub3IgZml4ZXM7PC9saT4gIA0KPC91bD4NCjxoND5WZXJzaW9uIDEuUkMuMTwvaDQ+DQo8dWw+DQogIDxsaT4xc3QgcHVibGljIHJlbGVhc2UuPC9saT4NCjwvdWw+PGJyIC8+]]></about>
	<description><![CDATA[This module allows to Manage Downloads.]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.addfile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbiggJ1VzZSBKTURvd25NYW4nICkgKQ0Kew0KICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCAkdGhpcy0+TGFuZyggJ25lZWRwZXJtaXNzaW9uJywgYXJyYXkoICdVc2UgSk1Eb3duTWFuJyApICkgKTsNCiAgcmV0dXJuOw0KfQ0KDQppZiggaXNzZXQoICRwYXJhbXNbJ2NhbmNlbCddICkgKQ0Kew0KICAkcGFyYW1zID0gYXJyYXkoICdhY3RpdmVfdGFiJyA9PiAnZmlsZXMnICk7DQogICR0aGlzLT5SZWRpcmVjdCggJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkICk7DQp9DQoNCiRhZGRmaWxlZGIgPSBmYWxzZTsNCiRzZXJ2ZXJfbmFtZSA9ICcnOw0KJGFsaWFzID0gJyc7DQokZXh0ID0gJyc7DQokZGVzY3JpcHRpb24gPSAnJzsNCiRzaXplID0gJyc7DQokaGFzaCA9ICcnOw0KJHVzZWV4cCA9ICcnOw0KJGFjY2Vzc3R5cGUgPSAoIGlzc2V0KCAkcGFyYW1zWydhY2Nlc3N0eXBlJ10gKSApID8gJHBhcmFtc1snYWNjZXNzdHlwZSddIDogMDsNCg0KJHRlbXBsYXRlX2RldGFpbCA9ICggaXNzZXQoICRwYXJhbXNbJ3RlbXBsYXRlX2RldGFpbCddICkgKSA/ICRwYXJhbXNbJ3RlbXBsYXRlX2RldGFpbCddIDoNCiAgJyc7DQokdGVtcGxhdGVfZm9ybSA9ICggaXNzZXQoICRwYXJhbXNbJ3RlbXBsYXRlX2Zvcm0nXSApICkgPyAkcGFyYW1zWyd0ZW1wbGF0ZV9mb3JtJ10gOg0KICAnJzsNCiR0ZW1wbGF0ZV9lbWFpbCA9ICggaXNzZXQoICRwYXJhbXNbJ3RlbXBsYXRlX2VtYWlsJ10gKSApID8gJHBhcmFtc1sndGVtcGxhdGVfZW1haWwnXSA6DQogICcnOw0KDQokZmV1Z3JvdXBzID0gKCBpc3NldCggJHBhcmFtc1snZmV1Z3JvdXBzJ10gKSApID8gJHBhcmFtc1snZmV1Z3JvdXBzJ10gOiBhcnJheSgpOw0KJGRlc2NyaXB0aW9uID0gKCBpc3NldCggJHBhcmFtc1snZGVzY3JpcHRpb24nXSApICkgPyAkcGFyYW1zWydkZXNjcmlwdGlvbiddIDogJyc7DQokbWFrZV90aHVtYiA9ICggaXNzZXQoICRwYXJhbXNbJ21ha2VfdGh1bWInXSApICkgPyAoIGJvb2wgKSRwYXJhbXNbJ21ha2VfdGh1bWInXSA6DQogICR0aGlzLT5HZXRQcmVmZXJlbmNlKCAndGh1bWJzX2F1dG8nLCB0cnVlICk7DQokdGh1bWJfcGF0aCA9ICggIWVtcHR5KCAkcGFyYW1zWyd0aHVtYl9wYXRoJ10gKSApID8gJHBhcmFtc1sndGh1bWJfcGF0aCddIDogZmFsc2U7DQokZXhwaXJlcyA9IG51bGw7DQokaW5wdXR1cGxvYWRlZGVuYWJsZWQgPSB0cnVlOw0KJHRodW1iX3ZhbHVlID0gJyc7DQokcmFkaW9fc2VsID0gaXNzZXQoICRwYXJhbXNbJ3JhZGlvJ10gKSA/ICRwYXJhbXNbJ3JhZGlvJ10gOiAnbm9uZSc7DQoNCmlmKCBpc3NldCggJHBhcmFtc1sndXNlZXhwJ10gKSApDQp7DQogICRleHBpcmVzID0gJHBhcmFtc1snZXhwaXJlZGF0ZV9ZZWFyJ10gLiAnLScgLiAkcGFyYW1zWydleHBpcmVkYXRlX01vbnRoJ10gLiAnLScgLg0KICAgICRwYXJhbXNbJ2V4cGlyZWRhdGVfRGF5J10gLiAnICcgLiAkcGFyYW1zWydleHBpcmVkYXRlX0hvdXInXSAuICc6JyAuICRwYXJhbXNbJ2V4cGlyZWRhdGVfTWludXRlJ10gLg0KICAgICc6JyAuICRwYXJhbXNbJ2V4cGlyZWRhdGVfU2Vjb25kJ107DQp9DQoNCiR2aXNpYmxlID0gMDsNCg0KaWYoIGlzc2V0KCAkcGFyYW1zWyd2aXNpYmxlJ10gKSApICR2aXNpYmxlID0gJHBhcmFtc1sndmlzaWJsZSddOw0KDQppbmNsdWRlICggJ2Z1bmN0aW9uLnVwbG9hZGZpbGUucGhwJyApOyAjIGRlcHJlY2F0ZWQgKEpNKQ0KDQppZiggJGFkZGZpbGVkYiApIC8vIG5ldyBmaWxlDQp7DQogIC8vIGdlbmVyYXRlIHRodW1iDQogIGlmKCAkdGh1bWJfcGF0aCApICRmX2NvbnRlbnRzWyd0aHVtYiddID0gJHRodW1iX3BhdGg7DQogIGVsc2UNCiAgICBpZiggZnVuY3Rpb25fZXhpc3RzKCAnZ2RfaW5mbycgKSAvLyBjaGVjayBpZiBnZCBzdXBwb3J0DQogICAgICAmJiBpbl9hcnJheSggJGZfY29udGVudHNbJ3R5cGUnXSwgYXJyYXkoDQogICAgICAnaW1hZ2UvcG5nJywNCiAgICAgICdpbWFnZS9qcGVnJywNCiAgICAgICdpbWFnZS9naWYnICkgKSAvLyBjaGVjayBpZiBzdXBwb3J0ZWQgaW1hZ2UNCiAgICAgICYmICRtYWtlX3RodW1iIC8vIGNoZWNrIHNob3VsZCBiZSBkb25lDQogICAgICApDQogICAgeyAvLw0KICAgICAgJGZfY29udGVudHNbJ3RodW1iJ10gPSAkdGhpcy0+Q3JlYXRlVGh1bWJuYWlsKCAkZl9jb250ZW50c1sncGF0aCddICk7DQogICAgfQ0KDQogICRmaWxlX2lkID0gJGRiLT5HZW5JRCggY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9qbWRvd25tYW5fZmlsZXNfc2VxIiApOw0KICAvLyBhZGRpbmcgYWxpYXMNCiAgJGkgPSAxOw0KICAkYWxpYXMgPSAkbiA9ICR0aGlzLT5DcmVhdGVBbGlhcyggJGZpbGVfbmFtZSApOw0KICAkbmFtZSA9IHN1YnN0cigkZmlsZV9uYW1lLCAwLCAzMCk7DQogIHdoaWxlKCAhJHRoaXMtPkNoZWNrQWxpYXMoICdmaWxlcycsICRhbGlhcyApICkgJGFsaWFzID0gJG4gLiAiLSIgLiAkaSsrOw0KDQogIC8vaW5zZXJ0IG1hc3RlciBpbmZvDQogICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gY21zX2RiX3ByZWZpeCgpIC4NCiAgICAnbW9kdWxlX2ptZG93bm1hbl9maWxlcyhmaWxlX2lkLGFsaWFzLCBuYW1lLCBzZXJ2ZXJfbmFtZSwgZXh0LCB0eXBlLCBzaXplLCBoYXNoLCBkZXNjcmlwdGlvbiwgY3JlYXRlZCwgZXhwaXJlcywgdmlzaWJsZSwgYWNjZXNzdHlwZSwgdGVtcGxhdGVfZGV0YWlsLCB0ZW1wbGF0ZV9mb3JtLCB0ZW1wbGF0ZV9lbWFpbCx0aHVtYl9wYXRoKSBWQUxVRVMgKD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPyknOw0KDQogICRyID0gJGRiLT5FeGVjdXRlKCAkcXVlcnksIGFycmF5KA0KICAgICRmaWxlX2lkLA0KICAgICRhbGlhcywNCiAgICAkbmFtZSwNCiAgICAkZl9jb250ZW50c1sncGF0aCddLA0KICAgICRmX2NvbnRlbnRzWydleHQnXSwNCiAgICAkZl9jb250ZW50c1sndHlwZSddLA0KICAgICRmX2NvbnRlbnRzWydzaXplJ10sDQogICAgJGZfY29udGVudHNbJ21kNSddLA0KICAgICRkZXNjcmlwdGlvbiwNCiAgICBkYXRlKCAiWS1tLWQgRzppOnMiICksDQogICAgJGV4cGlyZXMsDQogICAgJHZpc2libGUsDQogICAgJGFjY2Vzc3R5cGUsDQogICAgJHRlbXBsYXRlX2RldGFpbCwNCiAgICAkdGVtcGxhdGVfZm9ybSwNCiAgICAkdGVtcGxhdGVfZW1haWwsDQogICAgJGZfY29udGVudHNbJ3RodW1iJ10gKSApOw0KICAgIA0KICAvLyBpbnNlcnMgYXNzb2NpYXRpb25zDQogIGlmKCBpc3NldCggJHBhcmFtc1snYXNzb2MnXSApICkNCiAgew0KICAgICRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiIC4gY21zX2RiX3ByZWZpeCgpIC4NCiAgICAgICJtb2R1bGVfam1kb3dubWFuX2ZpbGVzX2NhdGVnb3J5ICggY2F0ZWdvcnlfaWQsIGZpbGVfaWQsIGl0ZW1fb3JkZXIpICBWQUxVRVMgIjsNCiAgICAgIA0KICAgIGZvcmVhY2goYXJyYXlfa2V5cygkcGFyYW1zWydhc3NvYyddKSBhcyAkY2F0X2lkKSAkdFtdID0gIiAoIiAuICRjYXRfaWQgLiAiLCIgLiAkZmlsZV9pZCAuICIsIiAuICRmaWxlX2lkIC4gIikiOw0KICAgICRxdWVyeSAuPSBpbXBsb2RlKCcsJywgJHQpOyAgICANCg0KICAgICRyID0kZGItPkV4ZWN1dGUoICRxdWVyeSApOyANCiAgfQ0KDQogIC8vIHVwZGF0ZSBmZXUgZ3JvdXBzIGFzc29jaWF0aW9uDQogICRxdWVyeSA9ICJERUxFVEUgRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4NCiAgICAibW9kdWxlX2ptZG93bm1hbl9maWxlZ3JvdXBzIFdIRVJFIGZpbGVfaWQ9PyI7DQoNCiAgJGRiLT5FeGVjdXRlKCAkcXVlcnksIGFycmF5KCAkZmlsZV9pZCApICk7DQoNCiAgZm9yZWFjaCggJGZldWdyb3VwcyBhcyAkZ3JvdXAgKQ0KICB7DQogICAgJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIgLiBjbXNfZGJfcHJlZml4KCkgLg0KICAgICAgIm1vZHVsZV9qbWRvd25tYW5fZmlsZWdyb3VwcyBTRVQgZmlsZV9pZD0/LCBncm91cF9pZD0/IjsNCiAgICAkZGItPkV4ZWN1dGUoICRxdWVyeSwgYXJyYXkoICRmaWxlX2lkLCAkZ3JvdXAgKSApOw0KICB9DQoNCiAgLy8gYWRkIG1vcmUgZmllbGRzIGFzIG5lZWRlZCB0byB0aGUgc2VuZCBldmVudA0KICAkdGhpcy0+U2VuZEV2ZW50KCAnSk1Eb3duTWFuRmlsZUFkZGVkJywgYXJyYXkoICdmaWxlX2lkJyA9PiAkZmlsZV9pZCwgJ25hbWUnID0+DQogICAgICAkbmFtZSApICk7DQoNCiAgJHRoaXMtPlVwZGF0ZUFzc29jaWF0aW9uQWdyZWdhdGlvbiggKCBpbnQgKSRmaWxlX2lkICk7DQogIGlmKCAkdmlzaWJsZSApICR0aGlzLT5TZWFyY2hBZGRGaWxlKCAoIGludCApJGZpbGVfaWQsICRhbGlhcyAuICcgJyAuICRmaWxlX25hbWUgLg0KICAgICAgJyAnIC4gJGRlc2NyaXB0aW9uLCAkZXhwaXJlcyApOw0KICAkcGFyYW1zID0gYXJyYXkoICd0YWJfbWVzc2FnZScgPT4gJ2ZpbGVhZGRlZCcsICdhY3RpdmVfdGFiJyA9PiAnZmlsZXMnICk7DQogICR0aGlzLT5SZWRpcmVjdCggJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zICk7DQp9DQoNCmlmKCBpc3NldCggJHBhcmFtc1snZmlsZV9wYXRoJ10gKSApDQp7DQogICR1cGxvYWRlZCA9IGJhc2U2NF9kZWNvZGUoICRwYXJhbXNbJ2ZpbGVfcGF0aCddICk7DQogICRpbnB1dHVwbG9hZGVkZW5hYmxlZCA9IGZhbHNlOw0KfQ0KI0Rpc3BsYXkgdGVtcGxhdGUNCiRzbWFydHktPmFzc2lnbiggJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoICRpZCwgJ2FkZGZpbGUnLCAkcmV0dXJuaWQsDQogICdwb3N0JywgJ211bHRpcGFydC9mb3JtLWRhdGEnICkgKTsNCiRzbWFydHktPmFzc2lnbiggJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpICk7DQoNCi8vIGFzc29jaWF0aW9ucw0KJGdDbXMgPSBjbXNtcygpOw0KJHF1ZXJ5ID0gIlNFTEVDVCAgY2F0ZWdvcnlfaWQsIGxvbmdfbmFtZSAgRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4NCiAgIm1vZHVsZV9qbWRvd25tYW5fY2F0ZWdvcmllcyAgT1JERVIgQlkgaGllcmFyY2h5X3ByaW9yaXR5OyAiOw0KJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCAkcXVlcnkgKTsNCiRyb3djbGFzcyA9ICdyb3cxJzsNCiRlbnRyeWFycmF5ID0gYXJyYXkoKTsNCndoaWxlKCAkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSApDQp7DQogICRvbmVyb3cgPSBuZXcgc3RkQ2xhc3MoKTsNCiAgJG9uZXJvdy0+bmFtZSA9ICRyb3dbJ2xvbmdfbmFtZSddOw0KICAkb25lcm93LT5pbnB1dGFzc29jID0gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goICRpZCwgJ2Fzc29jWycgLiAkcm93WydjYXRlZ29yeV9pZCddIC4NCiAgICAnXScsICcxJywgMCwgJ2NsYXNzPSJwYWdlY2hlY2tib3giJyApOw0KICAkb25lcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsNCiAgJGVudHJ5YXJyYXlbXSA9ICRvbmVyb3c7DQogICggJHJvd2NsYXNzID09ICJyb3cxIiA/ICRyb3djbGFzcyA9ICJyb3cyIiA6ICRyb3djbGFzcyA9ICJyb3cxIiApOw0KfQ0KJGNvbmZpZyA9ICRnQ21zLT5HZXRDb25maWcoKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCAnYXNzb2NpYXRpb25zJywgJGVudHJ5YXJyYXkgKTsNCiRzbWFydHktPmFzc2lnbiggJ2NhdGVnb3J5dGV4dCcsICR0aGlzLT5MYW5nKCAiYXNzb2NhdGlvbnN0YWJoZWFkZXIiICkgKTsNCiRzbWFydHktPmFzc2lnbiggJ3Jvb3RwYXRoJywgJGNvbmZpZ1sncm9vdF9wYXRoJ10gKTsNCiRzbWFydHktPmFzc2lnbiggJ2Zvcm1pZCcsICRpZCApOw0KJHNtYXJ0eS0+YXNzaWduKCAnaW5wdXRmaWxlJywgJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCggJGlkLCAnZmlsZScsDQogICcgaWQ9IicgLiAkaWQgLiAnZmlsZSIgJyAuICggJGlucHV0dXBsb2FkZWRlbmFibGVkID8gJycgOiAnZGlzYWJsZWQ9ImRpc2FibGVkIicgKSApICk7DQokc21hcnR5LT5hc3NpZ24oICdpbnB1dHVwbG9hZGVkJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLCAndXBsb2FkZWQnLA0KICAkdXBsb2FkZWQsIDYwLCAyMjUsICEkaW5wdXR1cGxvYWRlZGVuYWJsZWQgPyAnJyA6ICdkaXNhYmxlZD0iZGlzYWJsZWQiJyApICk7DQokc21hcnR5LT5hc3NpZ24oICdpbnB1dHVwbG9hZGVkZW5hYmxlZCcsICRpbnB1dHVwbG9hZGVkZW5hYmxlZCApOw0KJHNtYXJ0eS0+YXNzaWduKCAnaW5wdXRtZDUnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCAkaWQsICdtZDUnLCAnJywgMzIsDQogIDMyLCAnZGlzYWJsZWQ9ImRpc2FibGVkIicgKSApOw0KJHNtYXJ0eS0+YXNzaWduKCAnaW5wdXRleHRlcm5hbCcsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ2V4dGVybmFsJywNCiAgJycsIDYwLCAyNTUsICdkaXNhYmxlZD0iZGlzYWJsZWQiJyApICk7DQokc21hcnR5LT5hc3NpZ24oICdpbnB1dHNlcnZlcl9uYW1lJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCggJGlkLA0KICAnc2VydmVyX25hbWUnLCAkc2VydmVyX25hbWUsIDMwLCAzMCApICk7DQokc21hcnR5LT5hc3NpZ24oICdpbnB1dGV4dCcsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ2V4dCcsICRleHQsIDMwLA0KICA1ICkgKTsNCiRzbWFydHktPmFzc2lnbiggJ2lucHV0c2l6ZScsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ3NpemUnLCAkc2l6ZSwNCiAgMzAsIDEwICkgKTsNCiRzbWFydHktPmFzc2lnbiggJ2lucHV0aGFzaCcsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoICRpZCwgJ2hhc2gnLCAkaGFzaCwNCiAgMzAsIDMyICkgKTsNCiRzbWFydHktPmFzc2lnbiggJ2lucHV0ZGVzY3JpcHRpb24nLCAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoICR0aGlzLT5HZXRQcmVmZXJlbmNlDQogICggJ2FkbWluX3d5c2l3eWcnLCB0cnVlICksICRpZCwgJGRlc2NyaXB0aW9uLCAnZGVzY3JpcHRpb24nLCAncGFnZXNtYWxsdGV4dGFyZWEnLA0KICAnJywgJycsICcnLCAnMzAwJywgJzUnICkgKTsNCiRzbWFydHktPmFzc2lnbiggJ2V4cGlyZWRhdGVwcmVmaXgnLCAkaWQgLiAnZXhwaXJlZGF0ZV8nICk7DQokc21hcnR5LT5hc3NpZ24oICdpbnB1dGV4cCcsICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCAkaWQsICd1c2VleHAnLA0KICAnMScsICR1c2VleHAsICdjbGFzcz0icGFnZWNoZWNrYm94IicgKSApOw0KJHNtYXJ0eS0+YXNzaWduKCAnaW5wdXR2aXNpYmxlJywgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goICRpZCwNCiAgJ3Zpc2libGUnLCAnMScsICR2aXNpYmxlLCAnY2xhc3M9InBhZ2VjaGVja2JveCInICkgKTsNCiRzbWFydHktPmFzc2lnbiggJ2lucHV0bWFrZV90aHVtYicsICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCAkaWQsDQogICdtYWtlX3RodW1iJywgJzEnLCAkbWFrZV90aHVtYiwgJ2NsYXNzPSJwYWdlY2hlY2tib3giJyApICk7DQokc21hcnR5LT5hc3NpZ24oICdpbnB1dGFjY2Vzc3R5cGUnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93biggJGlkLA0KICAnYWNjZXNzdHlwZScsICR0aGlzLT5HZXRBY2Nlc3NUeXBlQ29tYm8oKSwgLTEsICRhY2Nlc3N0eXBlICkgKTsNCiAgDQokZmV1ID0gY21zbXMoKS0+R2V0TW9kdWxlSW5zdGFuY2UoJ0Zyb250RW5kVXNlcnMnKTsNCmlmKCBpc19vYmplY3QoICRmZXUgKSApDQp7DQogICRzbWFydHktPmFzc2lnbiggJ2lucHV0ZmV1Z3JvdXBzJywgJHRoaXMtPkNyZWF0ZUlucHV0U2VsZWN0TGlzdCggJGlkLA0KICAgICdmZXVncm91cHNbXScsICR0aGlzLT5HZXRHcm91cHNDb21ibygpLCAkZmV1Z3JvdXBzICkgKTsNCn0NCmVsc2UNCnsNCiAgJHNtYXJ0eS0+YXNzaWduKCAnaW5wdXRmZXVncm91cHMnLCAkdGhpcy0+TGFuZyggJ25vZmV1JyApICk7DQp9DQokc21hcnR5LT5hc3NpZ24oICdpbnB1dHRlbXBsYXRlX2Zvcm0nLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93biggJGlkLA0KICAndGVtcGxhdGVfZm9ybScsICR0aGlzLT5HZXRUZW1wbGF0ZXNDb21ibyggImZvcm0iICksIC0xLCAkdGVtcGxhdGVfZm9ybSApICk7DQokc21hcnR5LT5hc3NpZ24oICdpbnB1dHRlbXBsYXRlX2RldGFpbCcsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCAkaWQsDQogICd0ZW1wbGF0ZV9kZXRhaWwnLCAkdGhpcy0+R2V0VGVtcGxhdGVzQ29tYm8oICJkZXRhaWwiICksIC0xLCAkdGVtcGxhdGVfZGV0YWlsICkgKTsNCiRzbWFydHktPmFzc2lnbiggJ2lucHV0dGVtcGxhdGVfZW1haWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93biggJGlkLA0KICAndGVtcGxhdGVfZW1haWwnLCAkdGhpcy0+R2V0VGVtcGxhdGVzQ29tYm8oICJlbWFpbCIgKSwgLTEsICR0ZW1wbGF0ZV9lbWFpbCApICk7DQokc21hcnR5LT5hc3NpZ24oICdpbnB1dHRodW1iX3BhdGgnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93biggJGlkLA0KICAndGh1bWJfcGF0aCcsICR0aGlzLT5HZXRUaHVtYm5haWxzRHJvcGRvd24oICR0aHVtYl92YWx1ZSApICkgKTsNCg0KLy8gQVNTSU5HIEFMTCBMQUJFTFMNCiRzbWFydHktPmFzc2lnbiggJ3VwbG9hZGxhYmVsJywgJHRoaXMtPkxhbmcoICd1cGxvYWRmaWxlJyApICk7DQokc21hcnR5LT5hc3NpZ24oICd1cGxvYWRlZGxhYmVsJywgJHRoaXMtPkxhbmcoICdhbHJlYWR5dXBsb2FkZWQnICkgKTsNCiRzbWFydHktPmFzc2lnbiggJ2V4dGVybmFsbGFiZWwnLCAkdGhpcy0+TGFuZyggJ2V4dGVybmFsZmlsZScgKSApOw0KJHNtYXJ0eS0+YXNzaWduKCAnc2VydmVyX25hbWVsYWJlbCcsICR0aGlzLT5MYW5nKCAnc2VydmVyX25hbWVsYWJlbCcgKSApOw0KJHNtYXJ0eS0+YXNzaWduKCAnZXh0bGFiZWwnLCAkdGhpcy0+TGFuZyggJ2V4dGxhYmVsJyApICk7DQokc21hcnR5LT5hc3NpZ24oICdzaXplbGFiZWwnLCAkdGhpcy0+TGFuZyggJ3NpemVsYWJlbCcgKSApOw0KJHNtYXJ0eS0+YXNzaWduKCAnaGFzaGxhYmVsJywgJHRoaXMtPkxhbmcoICdoYXNobGFiZWwnICkgKTsNCiRzbWFydHktPmFzc2lnbiggJ2Rlc2NyaXB0aW9ubGFiZWwnLCAkdGhpcy0+TGFuZyggJ2Rlc2NyaXB0aW9ubGFiZWwnICkgKTsNCiRzbWFydHktPmFzc2lnbiggJ2NyZWF0ZWRsYWJlbCcsICR0aGlzLT5MYW5nKCAnY3JlYXRlZGxhYmVsJyApICk7DQokc21hcnR5LT5hc3NpZ24oICdleHBpcmVzbGFiZWwnLCAkdGhpcy0+TGFuZyggJ2V4cGlyZXNsYWJlbCcgKSApOw0KJHNtYXJ0eS0+YXNzaWduKCAnaW5wdXRleHBpcmVzJywgJGV4cGlyZXMgKTsNCiRzbWFydHktPmFzc2lnbiggJ3Zpc2libGVsYWJlbCcsICR0aGlzLT5MYW5nKCAndmlzaWJsZWxhYmVsJyApICk7DQokc21hcnR5LT5hc3NpZ24oICdtYWtlX3RodW1ibGFiZWwnLCAkdGhpcy0+TGFuZyggJ21ha2VfdGh1bWJsYWJlbCcgKSApOw0KJHNtYXJ0eS0+YXNzaWduKCAndXNlZXhwaXJhdGlvbnRleHQnLCAkdGhpcy0+TGFuZyggJ3VzZWV4cGlyYXRpb24nICkgKTsNCiRzbWFydHktPmFzc2lnbiggJ2FjY2Vzc3R5cGVsYWJlbCcsICR0aGlzLT5MYW5nKCAnYWNjZXNzdHlwZScgKSApOw0KJHNtYXJ0eS0+YXNzaWduKCAndGVtcGxhdGVfZGV0YWlsbGFiZWwnLCAkdGhpcy0+TGFuZyggJ3RlbXBsYXRlZm9yZGV0YWlsJyApICk7DQokc21hcnR5LT5hc3NpZ24oICd0ZW1wbGF0ZV9mb3JtbGFiZWwnLCAkdGhpcy0+TGFuZyggJ3RlbXBsYXRlZm9yZm9ybScgKSApOw0KJHNtYXJ0eS0+YXNzaWduKCAndGVtcGxhdGVfZW1haWxsYWJlbCcsICR0aGlzLT5MYW5nKCAndGVtcGxhdGVmb3JlbWFpbCcgKSApOw0KJHNtYXJ0eS0+YXNzaWduKCAnZmV1Z3JvdXBzbGFiZWwnLCAkdGhpcy0+TGFuZyggJ2ZldWdyb3Vwc2xhYmVsJyApICk7DQokc21hcnR5LT5hc3NpZ24oICdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoICRpZCwgJ3N1Ym1pdCcsIGxhbmcoICdzdWJtaXQnICkgKSApOw0KJHNtYXJ0eS0+YXNzaWduKCAnY2FuY2VsJywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCAkaWQsICdjYW5jZWwnLCBsYW5nKCAnY2FuY2VsJyApICkgKTsNCiRzbWFydHktPmFzc2lnbiggJ3RodW1iX3BhdGhsYWJlbCcsICR0aGlzLT5MYW5nKCAndGh1bWJsYWJlbCcgKSApOw0KDQokc21hcnR5LT5hc3NpZ24oICdmaWxldHlwZWlucHV0JywgJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSggJ2ZpbGV0eXBlaW5wdXQudHBsJyApICk7DQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoICdhZGRmaWxlLnRwbCcgKTsNCg0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/action.changefile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCmlmKCAhJHRoaXMtPkNoZWNrUGVybWlzc2lvbignVXNlIEpNRG93bk1hbicpICkNCnsNCgllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicsIGFycmF5KCdVc2UgSk1Eb3duTWFuJykpKTsNCglyZXR1cm47DQp9DQoNCmlmICghaXNzZXQoJHBhcmFtc1snZmlsZV9pZCddKSB8fCBlbXB0eSgkcGFyYW1zWydmaWxlX2lkJ10pKQ0Kew0KCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25vZmlsZScpKTsNCglyZXR1cm47DQp9DQoNCiRtZDUgPSBpc3NldCgkcGFyYW1zWydtZDUnXSkgPyAkcGFyYW1zWydtZDUnXSA6IG51bGw7DQokbmFtZSA9IGlzc2V0KCRwYXJhbXNbJ25hbWUnXSkgPyAkcGFyYW1zWyduYW1lJ10gOiBudWxsOw0KJGFsaWFzID0gaXNzZXQoJHBhcmFtc1snYWxpYXMnXSkgPyAkcGFyYW1zWydhbGlhcyddIDogbnVsbDsNCiRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCg0KaW5jbHVkZSgnZnVuY3Rpb24udXBsb2FkZmlsZS5waHAnKTsNCg0KaWYoIWVtcHR5KCRhZGRmaWxlZGIpKQ0Kew0KCSRwYXJhbXNbJ2ZpbGVfaWQnXSA9IChpbnQpICRwYXJhbXNbJ2ZpbGVfaWQnXTsNCgkvLyByZW1vdmluZyB0aGUgb2xkIGZpbGUNCgkkcXVlcnkgPSAnU0VMRUNUIHNlcnZlcl9uYW1lIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfam1kb3dubWFuX2ZpbGVzIFdIRVJFIGZpbGVfaWQ9ID8nOw0KCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRwYXJhbXNbJ2ZpbGVfaWQnXSkpOw0KCSRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCk7DQoJdW5saW5rKCRyb3dbJ3NlcnZlcl9uYW1lJ10pOw0KCWlmKCAhaXNzZXQoJHBhcmFtc1snY2hhbmdlbmFtZSddKSB8fCAkcGFyYW1zWydjaGFuZ2VuYW1lJ10gPT0gMCApDQoJew0KCQkkcXVlcnkgPSAnVVBEQVRFICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfam1kb3dubWFuX2ZpbGVzIFNFVCBzZXJ2ZXJfbmFtZSA9ID8sIHR5cGUgPSA/LCBzaXplID0gPywgaGFzaCA9ID8sICBjcmVhdGVkID0gbm93KCkgV0hFUkUgZmlsZV9pZCA9ID8nOw0KCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSggJGZfY29udGVudHNbJ3BhdGgnXSwgJGZfY29udGVudHNbJ3R5cGUnXSwgJGZfY29udGVudHNbJ3NpemUnXSwgJGZfY29udGVudHNbJ21kNSddLCRwYXJhbXNbJ2ZpbGVfaWQnXSkpOw0KCX0NCgllbHNlDQoJew0KCQkkcXVlcnkgPSAnVVBEQVRFICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfam1kb3dubWFuX2ZpbGVzIFNFVCBuYW1lID0gPyAsIGV4dCA9ID8gLCBzZXJ2ZXJfbmFtZSA9ID8sIHR5cGUgPSA/LCBzaXplID0gPywgaGFzaCA9ID8sICBjcmVhdGVkID0gbm93KCkgV0hFUkUgZmlsZV9pZCA9ID8nOw0KCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkZmlsZV9uYW1lICwgJGZfY29udGVudHNbJ2V4dCddLCAkZl9jb250ZW50c1sncGF0aCddLCAkZl9jb250ZW50c1sndHlwZSddLCAkZl9jb250ZW50c1snc2l6ZSddLCAkZl9jb250ZW50c1snbWQ1J10sJHBhcmFtc1snZmlsZV9pZCddKSk7DQoJfQ0KCSRwYXJhbXMgPSBhcnJheSgndGFiX21lc3NhZ2UnPT4gJ2ZpbGVjaGFuZ2VkJywgJ2FjdGl2ZV90YWInID0+ICdmaWxlcycsICdzZWxlY3Rvcic9PiRwYXJhbXNbJ3NlbGVjdG9yJ10pOw0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOw0KfQ0KZWxzZQ0Kew0KICANCiRzbWFydHktPmFzc2lnbiAoJ2Zvcm1pZCcsICRpZCk7DQokc21hcnR5LT5hc3NpZ24gKCdyb290cGF0aCcsICRjb25maWdbJ3Jvb3RfcGF0aCddKTsNCiRzbWFydHktPmFzc2lnbignY2hhbmdlZmlsZWluZm8nLCAkdGhpcy0+TGFuZygnY2hhbmdlZmlsZWluZm8nLCBhcnJheSggYmFzZTY0X2RlY29kZSgkbmFtZSksIGJhc2U2NF9kZWNvZGUoJGFsaWFzKSApKSk7DQokc21hcnR5LT5hc3NpZ24oJ3VwbG9hZGxhYmVsJywgJHRoaXMtPkxhbmcoJ3VwbG9hZGZpbGUnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3VwbG9hZGVkbGFiZWwnLCAkdGhpcy0+TGFuZygnYWxyZWFkeXVwbG9hZGVkJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdjaGFuZ2VuYW1lbGFiZWwnLCAkdGhpcy0+TGFuZygnY2hhbmdlbmFtZWxhYmVsJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdleHRlcm5hbGxhYmVsJywgJHRoaXMtPkxhbmcoJ2V4dGVybmFsZmlsZScpKTsNCiRzbWFydHktPmFzc2lnbignaGFzaGxhYmVsJywgJHRoaXMtPkxhbmcoJ2hhc2hsYWJlbCcpKTsNCg0KJHNtYXJ0eS0+YXNzaWduICgnaW5wdXRmaWxlJywgJHRoaXMtPkNyZWF0ZUZpbGVVcGxvYWRJbnB1dCgkaWQsJ2ZpbGUnLCcgaWQ9IicuJGlkLidmaWxlIiAnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0dXBsb2FkZWQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3VwbG9hZGVkJywkdXBsb2FkZWQsIDgwLDIyNSwnZGlzYWJsZWQ9ImRpc2FibGVkIicpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRtZDUnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ21kNScsJG1kNSwgMzIsMzIsICdkaXNhYmxlZD0iZGlzYWJsZWQiJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dGV4dGVybmFsJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdleHRlcm5hbCcsJHVwbG9hZGVkLCA2MCwyNTUsICdkaXNhYmxlZD0iZGlzYWJsZWQiJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dGNoYW5nZW5hbWUnLCAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdjaGFuZ2VuYW1lJywgJzEnLCAwLCAnY2xhc3M9InBhZ2VjaGVja2JveCInKSk7DQokc21hcnR5LT5hc3NpZ24oJ3NlbGVjdG9yJywgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ3NlbGVjdG9yJywgJHBhcmFtc1snc2VsZWN0b3InXSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnY2hhbmdlZmlsZScsICRyZXR1cm5pZCwgJ3Bvc3QnLCAnbXVsdGlwYXJ0L2Zvcm0tZGF0YScpKTsNCiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdoaWRkZW4nLCAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnZmlsZV9pZCcsIChpbnQpICRwYXJhbXNbJ2ZpbGVfaWQnXSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdzdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0JywgbGFuZygnc3VibWl0JykpKTsNCiRzbWFydHktPmFzc2lnbignY2FuY2VsJywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2NhbmNlbCcsIGxhbmcoJ2NhbmNlbCcpKSk7DQokc21hcnR5LT5hc3NpZ24oJ2ZpbGV0eXBlaW5wdXQnLCAgJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZmlsZXR5cGVpbnB1dC50cGwnKSk7DQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2NoYW5nZWZpbGUudHBsJyk7DQp9DQoNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCiRxdWVyeSA9ICcnOw0KJGRicmVzdWx0ID0nJzsNCiRlbnRyeWFycmF5ID0gYXJyYXkoKTsNCiRjYXRlZ29yeV9pZCA9ICcnIDsNCiRjYXRlZ29yeV9sZXZlbCA9ICcnOw0KJGRlcHRoID0gaXNzZXQoICRwYXJhbXNbJ2RlcHRoJ10gKT8oaW50KSRwYXJhbXNbJ2RlcHRoJ106ZmFsc2U7DQoNCiRxdWVyeSA9ICcnOw0KJHF1ZXJ5cHJlZml4ID0gCSdTRUxFQ1QgZmMuY2F0ZWdvcnlfaWQsIGZjLmZpbGVfaWQsIGMuaGllcmFyY2h5LCBjLm5hbWUgQVMgY2F0ZWdvcnlfbmFtZSAsDQoJCWMubG9uZ19uYW1lIEFTIGNhdGVnb3J5X2xvbmdfbmFtZSAsCWMuZGVwdGgsIGMuYWxpYXMgQVMgY2F0ZWdvcnlfYWxpYXMsDQoJCWMuZGVzY3JpcHRpb24gQVMgY2F0ZWdvcnlfZGVzYywNCgkJZi4qDQoJCUZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9qbWRvd25tYW5fZmlsZXNfY2F0ZWdvcnkgZmMNCgkJTEVGVCBKT0lOICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfam1kb3dubWFuX2NhdGVnb3JpZXMgYyBVU0lORyhjYXRlZ29yeV9pZCkNCgkJTEVGVCBKT0lOICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfam1kb3dubWFuX2ZpbGVzIGYgVVNJTkcoZmlsZV9pZCkNCgkJV0hFUkUgZi52aXNpYmxlID0gMSBBTkQgJy4kdGhpcy0+R2V0RmlsZVN0ZFdoZXJlKCdmJyk7DQokcXVlcnlfZGVwdGggPSAnJzsNCiRzaG93aGVhZGVycyA9IHRydWU7DQoNCiRiYXNlX2RlcHRoID0gMDsNCg0KLy8gZ2V0IHN1YmNhdGVnb3JpZXMgdHJlZSBzdHJ1Y3R1cmUNCiRzdWJjYXRlZ29yaWVzID0gJHRoaXMtPkdldFN1YkNhdGVnb3JpZXMoKTsNCg0KLyoNCiAqIFBBUlNJTkcgQ0FURUdPUlkgQU5EIENBVEVHT1JZSUQNCiAqDQogKiBpZiBib3RoIGFyZSBzZXQgY2F0ZWdvcnlpZCBoYXZlIGhpZ2hlciBwcmlvcml0eQ0KKi8NCmlmKCBpc3NldCggJHBhcmFtc1snYWxpYXMnXSApIHx8IGlzc2V0KCAkcGFyYW1zWydjYXRlZ29yeWlkJ10gKSApDQp7DQoJJGRicmVzdWx0ID0gJyc7DQoJJHF1ZXJ5ID0gJ1NFTEVDVCBjYXRlZ29yeV9pZCwgaGllcmFyY2h5LCBkZXB0aCwgYWxpYXMsIGRlZmF1bHRfdGVtcGxhdGUNCgkJRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2ptZG93bm1hbl9jYXRlZ29yaWVzDQoJCVdIRVJFICc7DQoNCgkvLyBjaG9vc2luZyB3aGVyZSBjb25kaXRpb24NCglpZiggaXNzZXQoICRwYXJhbXNbJ2NhdGVnb3J5aWQnXSApICkNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeS4nIGNhdGVnb3J5X2lkID0gPyAnLGFycmF5KChpbnQpJHBhcmFtc1snY2F0ZWdvcnlpZCddKSk7DQoJZWxzZQ0KCQkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LicgYWxpYXMgPSA/ICcsYXJyYXkoJHBhcmFtc1snYWxpYXMnXSkpOw0KDQoJLy8gZmV0Y2hpbmcgY2F0ZWdvcnkNCglpZiAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpDQoJew0KCQkkY2F0ZWdvcnlfaWQgPSAoaW50KSAkcm93WydjYXRlZ29yeV9pZCddOw0KCQkkY2F0ZWdvcnlfZGVwdGggPSAoaW50KSAkcm93WydkZXB0aCddOw0KCQkkY2F0ZWdvcnlfaGllcmFyY2h5ID0gJHJvd1snaGllcmFyY2h5J107DQoJCSRjYXRlZ29yeV90ZW1wbGF0ZSA9ICRyb3dbJ2RlZmF1bHRfdGVtcGxhdGUnXTsNCgl9DQoNCglpZigkY2F0ZWdvcnlfaWQgPT0gJycpDQoJCWVjaG8gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICR0aGlzLT5sYW5nKCd3cm9uZ2NhdGVnb3J5JykpOw0KCS8vIHdlIGhhdmUgY2F0ZWdvcnkgc3BlY2lmaWVkDQoNCgkkcXVlcnkgPSAkcXVlcnlwcmVmaXguDQoJCSdBTkQgYy5oaWVyYXJjaHkgTElLRSBcJyUnLnN0cl9wYWQoJGNhdGVnb3J5X2lkLCA1LCAnMCcsIFNUUl9QQURfTEVGVCkuJyVcJyc7DQoNCgkvLyBjcmVhdGUgbGluayB0byB1cHBlciBjYXRlZ29yeQ0KCSR0ID0gJiRzdWJjYXRlZ29yaWVzWyRjYXRlZ29yeV9pZF07DQoJJHRvcD0nJzsNCglpZighaXNfbnVsbCgkdFsncGFyZW50J10pKQ0KCXsNCgkJLy93ZSBoYXZlIHRvcCBjYXRlZ29yeQ0KCQkkdG9wID0gJHRoaXMtPkNyZWF0ZUNhdGVnb3J5TGluaygkaWQsICRyZXR1cm5pZCwgJHRbJ3BhcmVudCddWyduYW1lJ10sICR0WydwYXJlbnQnXVsnYWxpYXMnXSwkZGVwdGgpOw0KCX0NCgllbHNlDQoJew0KCQkvLyBubyB1cHBlciBjYXRlZ29yeSBjcmVhdGluZyBsaW5rIHRvIHJvb3QNCgkJJHRvcCA9ICR0aGlzLT5DcmVhdGVDYXRlZ29yeUxpbmsoJGlkLCAkcmV0dXJuaWQsIiIsIiIsJGRlcHRoKTsNCgl9DQoJDQoJJHNtYXJ0eS0+YXNzaWduKCd0b3BjYXRlZ29yeWxpbmsnLCAkdG9wKTsNCn0NCmVsc2UNCnsNCgkvLyBhbGwgY2F0ZWdvcmllcyBhcmUgc2VsbGVjdGVkDQoJJHF1ZXJ5ID0gJHF1ZXJ5cHJlZml4Ow0KCSRjYXRlZ29yeV9kZXB0aCA9IDA7DQp9DQoNCi8vIGFkZGluZyBkZXB0aCBjb25kaXRpb24NCg0KaWYoICRkZXB0aCAhPT0gZmFsc2UpDQp7DQoJLy8gYWRkIGRlcHRoIGNvbmRpdGlvbg0KCSRxdWVyeV9kZXB0aCA9ICcgQU5EICcuKCRjYXRlZ29yeV9kZXB0aCskZGVwdGgpLicgPj0gYy5kZXB0aCAnOw0KfQ0KDQovLyBtZXJnaW5nIHF1ZXJpZXMNCiRxdWVyeSAuPSAkcXVlcnlfZGVwdGguJw0KCQlPUkRFUiBCWSBjLmhpZXJhcmNoeV9wcmlvcml0eSwgZmMuaXRlbV9vcmRlciAnOw0KDQokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCg0KLy8gYWxzbyB1c2VkIGJ5IGFjdGlvbiBzZWxlY3Rvcg0KaW5jbHVkZSgnZnVuY3Rpb24uYXNzaW5nZmlsZXMucGhwJyk7DQoNCiR0ZW1wbGF0ZW5hbWUgPSAnJzsNCmlmKCBpc3NldCggJHBhcmFtc1sndGVtcGxhdGUnXSApICkJDQogICAgJHRlbXBsYXRlbmFtZSA9ICdsaXN0XycuJHBhcmFtc1sndGVtcGxhdGUnXTsgLy8gZGVmYXVsdCBpcyBsaXN0IGFjdGlvbg0KDQppZiggJHRlbXBsYXRlbmFtZSAhPSAnJyAmJiAkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJHRlbXBsYXRlbmFtZSkpDQp7DQoJLy8gdGhlIHRlbXBsYXRlIGV4aXN0cywgd2UncmUgZ29pbmcgdG8gdXNlIGl0DQoJDQp9DQplbHNlIGlmKCAhZW1wdHkoJGNhdGVnb3J5X3RlbXBsYXRlKSAmJiAkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJGNhdGVnb3J5X3RlbXBsYXRlKSkNCnsNCgkvLyB1c2luZyB0aGUgZGVmYXVsdCBjYXRlZ29yeSB0ZW1wbGF0ZSBiZWNhdXNlIGl0IGlzIHNldA0KfQ0KZWxzZQ0Kew0KCS8vIG5vIHRlbXBsYXRlIHNwZWNpZmllZCwgb3IgdGVtcGxhdGUgZG9lc24ndCBleGlzdC4uLiB3ZSBnZXQgdGhlIGRlZmF1bHQgb25lDQoJJHRlbXBsYXRlbmFtZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2xpc3RfdGVtcGxhdGUnLCAnJyk7DQoJJHRlbXBsYXRlID0gJHRoaXMtPkdldFRlbXBsYXRlKCR0ZW1wbGF0ZW5hbWUpOw0KfQ0KI0Rpc3BsYXkgdGVtcGxhdGUNCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0ZW1wbGF0ZSk7DQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEpNRG93bk1hbiAKIyBWZXJzaW9uOiAxLjAKIyBBdXRob3I6IEpvIE1vcmcKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIAojIFZlcnNpb246IDEuMC1SQzMKIyBBdXRob3I6IFN6eW1vbiDFgXVrYXN6Y3p5awojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEpNRG93bk1hbgojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwoKLy8gY2hlY2sgZm9yIHBlcm1pc3Npb25zCmlmICghICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1VzZSBKTURvd25NYW4nKSkKewoJZWNobyAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwoJcmV0dXJuOwp9Cgokc21hcnR5LT5hc3NpZ24oJ21vZCcsICR0aGlzKTsgCgokdGFiID0iIjsKaWYoaXNzZXQoJHBhcmFtc1snYWN0aXZlX3RhYiddKSkKCSR0YWIgPSAkcGFyYW1zWydhY3RpdmVfdGFiJ107CgplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoImZpbGVzIiwkdGhpcy0+TGFuZygiZmlsZXN0YWJoZWFkZXIiKSwoJHRhYj09ImZpbGVzIikpOwogIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigiY2F0ZWdvcmllcyIsJHRoaXMtPkxhbmcoImNhdGVnb3JpZXN0YWJoZWFkZXIiKSwoJHRhYj09ImNhdGVnb3JpZXMiKSk7CiAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCJ0ZW1wbGF0ZXMiLCBsYW5nKCJ0ZW1wbGF0ZXMiKSwoJHRhYj09InRlbXBsYXRlcyIpKTsKICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoInByZWZlcmVuY2VzIiwgbGFuZygicHJlZmVyZW5jZXMiKSwoJHRhYj09InByZWZlcmVuY2VzIikpOwplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7Cgokc21hcnR5LT5hc3NpZ24oJ3RhYmxlSURDb2xIZWFkZXInLCAnSUQnKTsKJHNtYXJ0eS0+YXNzaWduKCd0YWJsZU5hbWVDb2xIZWFkZXInLCBsYW5nKCduYW1lJykpOwokc21hcnR5LT5hc3NpZ24oJ3RhYmxlRGVzY3JpcHRpb25Db2xIZWFkZXInLCBsYW5nKCdkZXNjcmlwdGlvbicpKTsKJHNtYXJ0eS0+YXNzaWduKCd0YWJsZURlZmF1bHRDb2xIZWFkZXInLCBsYW5nKCdkZWZhdWx0JykpOwokc21hcnR5LT5hc3NpZ24oJ3RhYmxlQWN0aW9uc0hlYWRlcicsICR0aGlzLT5sYW5nKCdhY3Rpb25zJykpOwoKZWNobyAkdGhpcy0+U3RhcnRUYWJDb250ZW50KCk7CmVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdmaWxlcycsICRwYXJhbXMpOwoJaW5jbHVkZSgndGFiLmRlZmF1bHRhZG1pbi5maWxlcy5waHAnKTsKZWNobyAkdGhpcy0+RW5kVGFiKCk7CmVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdjYXRlZ29yaWVzJywgJHBhcmFtcyk7CglpbmNsdWRlKCd0YWIuZGVmYXVsdGFkbWluLmNhdGVnb3JpZXMucGhwJyk7CmVjaG8gJHRoaXMtPkVuZFRhYigpOwplY2hvICR0aGlzLT5TdGFydFRhYigndGVtcGxhdGVzJywgJHBhcmFtcyk7CglpbmNsdWRlKCd0YWIuZGVmYXVsdGFkbWluLnRlbXBsYXRlcy5waHAnKTsKZWNobyAkdGhpcy0+RW5kVGFiKCk7CmVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdwcmVmZXJlbmNlcycsICRwYXJhbXMpOwoJaW5jbHVkZSgndGFiLmRlZmF1bHRhZG1pbi5wcmVmZXJlbmNlcy5waHAnKTsKZWNobyAkdGhpcy0+RW5kVGFiKCk7CmVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.deletecategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCmlmICghICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1VzZSBKTURvd25NYW4nKSkNCnsNCiAgZWNobyAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOw0KICByZXR1cm47DQp9DQoNCg0KJGNhdGVnb3J5X2lkID0gJyc7DQppZiAoaXNzZXQoJHBhcmFtc1snY2F0ZWdvcnlfaWQnXSkpDQp7DQogICRjYXRlZ29yeV9pZCA9ICRwYXJhbXNbJ2NhdGVnb3J5X2lkJ107DQp9DQoNCi8vIEdldCB0aGUgY2F0ZWdvcnkgZGV0YWlscw0KJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9qbWRvd25tYW5fY2F0ZWdvcmllcyBXSEVSRSBjYXRlZ29yeV9pZCA9ID8nOw0KJHJvdyA9ICRkYi0+R2V0Um93KCAkcXVlcnksIGFycmF5KCAkY2F0ZWdvcnlfaWQgKSApOw0KDQovL1Jlc2V0IGFsbCBjYXRlZ29yaWVzIHVzaW5nIHRoaXMgcGFyZW50IHRvIGhhdmUgbm8gcGFyZW50ICgtMSkNCiRxdWVyeSA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9qbWRvd25tYW5fY2F0ZWdvcmllcyBTRVQgcGFyZW50X2lkPT8sIG1vZGlmaWVkX2RhdGU9Jy4kZGItPkRCVGltZVN0YW1wKHRpbWUoKSkuJyBXSEVSRSBwYXJlbnRfaWQ9Pyc7DQokZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgtMSwgJGNhdGVnb3J5X2lkKSk7DQoNCi8vTm93IHJlbW92ZSB0aGUgY2F0ZWdvcnkNCiRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ptZG93bm1hbl9jYXRlZ29yaWVzIFdIRVJFIGNhdGVnb3J5X2lkID0gPyI7DQokZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkY2F0ZWdvcnlfaWQpKTsNCg0KLy9BbmQgcmVtb3ZlIGl0IGZyb20gYW55IGFydGljbGVzDQovL34gJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX25ld3MgU0VUIG5ld3NfY2F0ZWdvcnlfaWQgPSAtMSBXSEVSRSBuZXdzX2NhdGVnb3J5X2lkID0gPyI7DQovL34gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGNhdGlkKSk7DQoNCiR0aGlzLT5VcGRhdGVIaWVyYXJjaHlQb3NpdGlvbnMoKTsNCg0KLy9VcGRhdGUgc2VhcmNoIGluZGV4DQokdGhpcy0+U2VhcmNoRGVsZXRlQ2F0ZWdvcnkoJGNhdGVnb3J5X2lkKTsNCg0KLy8gYWRkIG1vcmUgZmllbGRzIGFzIG5lZWRlZCB0byB0aGUgc2VuZCBldmVudA0KDQokdGhpcy0+U2VuZEV2ZW50KCdKTURvd25NYW5DYXRlZ29yeURlbGV0ZWQnLCBhcnJheSgnY2F0ZWdvcnlfaWQnID0+ICRjYXRlZ29yeV9pZCkpOw0KDQokcGFyYW1zID0gYXJyYXkoJ3RhYl9tZXNzYWdlJz0+ICdjYXRlZ29yeWRlbGV0ZWQnLCAnYWN0aXZlX3RhYicgPT4gJ2NhdGVnb3JpZXMnKTsNCiR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOw0KDQoNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/action.deletefile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEpNRG93bk1hbiAKIyBWZXJzaW9uOiAxLjAKIyBBdXRob3I6IEpvIE1vcmcKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIAojIFZlcnNpb246IDEuMC1SQzMKIyBBdXRob3I6IFN6eW1vbiDFgXVrYXN6Y3p5awojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEpNRG93bk1hbgojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwoKaWYgKCEgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignVXNlIEpNRG93bk1hbicpICkKewoJZWNobyAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwoJcmV0dXJuOwp9CgokZmlsZV9pZCA9ICcnOwppZiAoaXNzZXQoJHBhcmFtc1snZmlsZV9pZCddKSkKewoJJGZpbGVfaWQgPSAkcGFyYW1zWydmaWxlX2lkJ107Cn0KCi8vIHJlbW92ZSB0aGUgZmlsZQokcXVlcnkgPSAnU0VMRUNUIHNlcnZlcl9uYW1lIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfam1kb3dubWFuX2ZpbGVzIFdIRVJFIGZpbGVfaWQ9ID8nOwokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkZmlsZV9pZCkpOwppZiAoJGRicmVzdWx0KQp7Cgkkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOwoJaWYoISAkdGhpcy0+Y2hlY2tGaWxlQWxsb3coJGZpbGVwYXRoKSApCiAgICAgICAgdW5saW5rKCRyb3dbJ3NlcnZlcl9uYW1lJ10pOwp9CgovL1VwZGF0ZSBzZWFyY2ggaW5kZXgKJHRoaXMtPlNlYXJjaERlbGV0ZUZpbGUoJGZpbGVfaWQpOwoKLy9Ob3cgcmVtb3ZlIHRoZSBpdGVtIGZyb20gZGF0YWJhc2UKJHF1ZXJ5ID0gJ0RFTEVURSBmcm9tICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX2ptZG93bm1hbl9maWxlcyBXSEVSRSBmaWxlX2lkPSA/JzsKJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGZpbGVfaWQpKTsKJHF1ZXJ5ID0gJ0RFTEVURSBmcm9tICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX2ptZG93bm1hbl9maWxlc19jYXRlZ29yeSBXSEVSRSBmaWxlX2lkPSA/JzsKJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGZpbGVfaWQpKTsKCgovLyBhZGQgbW9yZSBmaWVsZHMgYXMgbmVlZGVkIHRvIHRoZSBzZW5kIGV2ZW50CkAkdGhpcy0+U2VuZEV2ZW50KCdKTURvd25NYW5GaWxlRGVsZXRlZCcsIGFycmF5KCdmaWxlX2lkJyA9PiAkZmlsZV9pZCkpOwoKJHBhcmFtcyA9IGFycmF5KCd0YWJfbWVzc2FnZSc9PiAnZmlsZWRlbGV0ZWQnLCAnYWN0aXZlX3RhYicgPT4gJ2ZpbGVzJywgJ3NlbGVjdG9yJz0+JHBhcmFtc1snc2VsZWN0b3InXSk7CiR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOwoKCgo/PgoK]]></data>
	</file>
	<file>
	  <filename>/action.deletetemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEpNRG93bk1hbiAKIyBWZXJzaW9uOiAxLjAKIyBBdXRob3I6IEpvIE1vcmcKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIAojIFZlcnNpb246IDEuMC1SQzMKIyBBdXRob3I6IFN6eW1vbiDFgXVrYXN6Y3p5awojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEpNRG93bk1hbgojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwppZiAoISAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgSk1Eb3duTWFuJykpCnsKCWVjaG8gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKCXJldHVybjsKfQokbmV3cGFyYW1zID0gYXJyYXkoJ2FjdGl2ZV90YWInID0+ICd0ZW1wbGF0ZXMnKTsKCmlmKCBpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZV9uYW1lJ10pICYmICRwYXJhbXNbJ3RlbXBsYXRlX25hbWUnXSAhPSAnJykKewoJaWYgKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBEb3dubG9hZCBNYW5hZ2VyIFRlbXBsYXRlJykpCgl7CgkJaWYoJHRoaXMtPkRlbGV0ZVRlbXBsYXRlKCRwYXJhbXNbJ3RlbXBsYXRlX25hbWUnXSkpCgkJewoJCQkvLyB0ZW1wbGF0ZSBzdWNjZXNzZnVsbHkgZGVsZXRlZAoJCQkkbmV3cGFyYW1zWyd0YWJfbWVzc2FnZSddID0gJ3RlbXBsYXRlZGVsZXRlZCc7CgkJCUAkdGhpcy0+U2VuZEV2ZW50KCdKTURvd25NYW5UZW1wbGF0ZURlbGV0ZWQnLCBhcnJheSgndGVtcGxhdGVfbmFtZScgPT4gJHRlbXBsYXRlX25hbWUpKTsKCQl9Cgl9CgllbHNlCgl7CgkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nLCBhcnJheSgnTW9kaWZ5IERvd25sb2FkIE1hbmFnZXIgVGVtcGxhdGUnKSkpOwoJfQp9CgokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkbmV3cGFyYW1zICk7Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.detail.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQokZGIgPSBjbXNtcygpLT5HZXREYigpOw0KJGZpbGVfaWQgPSAnJzsNCiRmaWxlID0gZmFsc2U7DQoNCi8vIGxvYWQgZmlsZSBkYXRhDQppZihpc3NldCgkcGFyYW1zWydhbGlhcyddKSkNCnsNCgkkYWxpYXMgPSAkcGFyYW1zWydhbGlhcyddOw0KDQoJLy8gZ2V0IHRoZSBmaWxlIGlkDQoJJHF1ZXJ5ID0gJ1NFTEVDVCBmaWxlX2lkIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfam1kb3dubWFuX2ZpbGVzIFdIRVJFIGFsaWFzID0gPyAnOw0KCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJHBhcmFtc1snYWxpYXMnXSkpOw0KCWlmICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkNCgkgICAgJGZpbGVfaWQgPSAkcm93WydmaWxlX2lkJ107DQoNCgkvLyBnZXQgY2F0ZWdvcmllc3MNCgkkZmlsZXNfY2F0ZWdvcmllcyA9ICR0aGlzLT5HZXRGaWxlQ2F0ZWdvcmllcygnZmlsZV9pZCA9ICcgLiAkZmlsZV9pZCk7DQoNCgkvLyBydW4gdGhlIGFzc2luZyBmaWxlcyBmdW5jdGlvbg0KCSRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX2ptZG93bm1hbl9maWxlcyBXSEVSRSBmaWxlX2lkID0gJyAuICRmaWxlX2lkOw0KCSRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KCSRzaG93aGVhZGVycyA9IGZhbHNlOw0KCWluY2x1ZGUoJ2Z1bmN0aW9uLmFzc2luZ2ZpbGVzLnBocCcpOw0KCSRzbWFydHktPmFzc2lnbignaXRlbScsICRvbmVyb3cpOw0KfQ0KDQppZighJG9uZXJvdykgLy8gY2hlY2tpbmcgaWYgZmlsZSBleGlzdHMgaW4gZGF0YWJhc2UNCnsNCgkkdGhpcy0+RGlzcGxheURvd25sb2FkRXJyb3JQYWdlKCR0aGlzLT5sYW5nKCdub2ZpbGUnKSk7DQp9DQoNCi8vIHdlIGdpdmUgdGhlIGZpbGUgaW5mbyB0byBzbWFydHkuLi4gc28gaW4gYm90aCBkZXRhaWwgYW5kIGZvcm0gdGVtcGxhdGVzLCBmaWxlIGluZm8gd2lsbCBiZSBhdmFpbGFibGUgd2l0aCAkZmlsZS0+ZmllbGQuLi4NCg0KaWYoIGlzc2V0KCAkcGFyYW1zWyd0ZW1wbGF0ZSddICkgJiYgJHRlbXBsYXRlID0gJHRoaXMtPkdldFRlbXBsYXRlKCdkZXRhaWxfJyAuICR0ZW1wbGF0ZW5hbWUpICkNCnsNCgkvLyB0ZW1wbGF0ZSBpcyBzcGVjaWZpZWQgaW4gc21hcnR5IHRhZw0KCS8vIHRoZSB0ZW1wbGF0ZSBleGlzdHMsIHdlJ3JlIGdvaW5nIHRvIHVzZSBpdA0KfQ0KZWxzZWlmKCBpc19vYmplY3QoJGZpbGUpICYmICRmaWxlLT50ZW1wbGF0ZV9kZXRhaWwgIT0gJycgJiYgJHRlbXBsYXRlID0gJHRoaXMtPkdldFRlbXBsYXRlKCRmaWxlLT50ZW1wbGF0ZV9kZXRhaWwpICkNCnsNCgkvL2dldHRpbmcgdGVtcGxhdGUgZnJvbSBmaWxlIGluZm8gaW4gZGF0YWJhc2UNCgkvLyBpZGVtDQp9DQplbHNlDQp7DQoJLy8gbm8gdGVtcGxhdGUgc3BlY2lmaWVkLCBvciB0ZW1wbGF0ZSBkb2Vzbid0IGV4aXN0Li4uIHdlIGdldCB0aGUgZGVmYXVsdCBvbmUNCgkkdGVtcGxhdGVuYW1lID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfZGV0YWlsX3RlbXBsYXRlJywgJycpOw0KCSR0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkdGVtcGxhdGVuYW1lKTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCduYW1lbGFiZWwnLCAkdGhpcy0+TGFuZygnbmFtZWxhYmVsJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdhbGlhc2xhYmVsJywgJHRoaXMtPkxhbmcoJ2FsaWFzbGFiZWwnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3NlcnZlcl9uYW1lbGFiZWwnLCAkdGhpcy0+TGFuZygnc2VydmVyX25hbWVsYWJlbCcpKTsNCiRzbWFydHktPmFzc2lnbignZXh0bGFiZWwnLCAkdGhpcy0+TGFuZygnZXh0bGFiZWwnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3NpemVsYWJlbCcsICR0aGlzLT5MYW5nKCdzaXplbGFiZWwnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3R5cGVsYWJlbCcsICR0aGlzLT5MYW5nKCd0eXBlbGFiZWwnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2hhc2hsYWJlbCcsICR0aGlzLT5MYW5nKCdoYXNobGFiZWwnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2Rlc2NyaXB0aW9ubGFiZWwnLCAkdGhpcy0+TGFuZygnZGVzY3JpcHRpb25sYWJlbCcpKTsNCiRzbWFydHktPmFzc2lnbignY3JlYXRlZGxhYmVsJywgJHRoaXMtPkxhbmcoJ2NyZWF0ZWRsYWJlbCcpKTsNCiRzbWFydHktPmFzc2lnbignZXhwaXJlc2xhYmVsJywgJHRoaXMtPkxhbmcoJ2V4cGlyZXNsYWJlbCcpKTsNCiRzbWFydHktPmFzc2lnbigndmlzaWJsZWxhYmVsJywgJHRoaXMtPkxhbmcoJ3Zpc2libGVsYWJlbCcpKTsNCiRzbWFydHktPmFzc2lnbigndXNlZXhwaXJhdGlvbnRleHQnLCAkdGhpcy0+TGFuZygndXNlZXhwaXJhdGlvbicpKTsNCiRzbWFydHktPmFzc2lnbignYXNzb2NpYXRlZGxhYmVsJywgJHRoaXMtPkxhbmcoJ2Fzc29jaWF0ZWQnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2FjY2Vzc3R5cGVsYWJlbCcsICR0aGlzLT5MYW5nKCdhY2Nlc3N0eXBlJykpOw0KJHNtYXJ0eS0+YXNzaWduKCd0ZW1wbGF0ZV9kZXRhaWxsYWJlbCcsICR0aGlzLT5MYW5nKCd0ZW1wbGF0ZWZvcmRldGFpbCcpKTsNCiRzbWFydHktPmFzc2lnbigndGVtcGxhdGVfZm9ybWxhYmVsJywgJHRoaXMtPkxhbmcoJ3RlbXBsYXRlZm9yZm9ybScpKTsNCiRzbWFydHktPmFzc2lnbigndGVtcGxhdGVfZW1haWxsYWJlbCcsICR0aGlzLT5MYW5nKCd0ZW1wbGF0ZWZvcmVtYWlsJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdmZXVncm91cHNsYWJlbCcsICR0aGlzLT5MYW5nKCdmZXVncm91cHNsYWJlbCcpKTsNCg0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRlbXBsYXRlKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.download.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCiRkYiA9IGNtc21zKCktPkdldERiKCk7DQokZmlsZSA9IGZhbHNlOw0KJGZpbGVfaWQgPSBudWxsOw0KDQppZiggIWlzc2V0ICggJHBhcmFtc1snYWxpYXMnXSkgKQ0KCSR0aGlzLT5EaXNwbGF5RG93bmxvYWRFcnJvclBhZ2UoJHRoaXMtPmxhbmcoJ25vZmlsZScpKTsNCg0KJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9qbWRvd25tYW5fZmlsZXMgV0hFUkUgYWxpYXMgPSA/ICc7DQokZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCR0aGlzLT5DcmVhdGVBbGlhcygkcGFyYW1zWydhbGlhcyddKSkpOw0KaWYgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQ0Kew0KCSRmaWxlID0gbmV3IFN0ZENsYXNzKCk7DQoJZm9yZWFjaCgkcm93IGFzICRrZXk9PiR2YWx1ZSkNCgkJJGZpbGUtPiRrZXkgPSAkdmFsdWU7DQp9DQplbHNlDQp7DQogICR0aGlzLT5EaXNwbGF5RG93bmxvYWRFcnJvclBhZ2UoJHRoaXMtPmxhbmcoJ3dyb25nZmlsZScpKTsNCiAgcmV0dXJuOw0KfQ0KCQ0KLy8gY2hlY2tpbmcgcGVybWlzaW9ucw0KaWYoCSggJHRoaXMtPkNoZWNrRG93blR5cGUoJGZpbGUtPmFjY2Vzc3R5cGUgLCBKTURNX0JZX01BSUwpICYmICEkdGhpcy0+TWFpbGVySW5zdGFsbGVkKCkgKSB8fA0KCQkoICR0aGlzLT5DaGVja0Rvd25UeXBlKCRmaWxlLT5hY2Nlc3N0eXBlICwgSk1ETV9CWV9GRVUpICYmICEkdGhpcy0+RkVVaW5zdGFsbGVkKCkgKSB8fA0KCQkoICR0aGlzLT5DaGVja0Rvd25UeXBlKCRmaWxlLT5hY2Nlc3N0eXBlICwgSk1ETV9CWV9CT1RIICkgJiYgISR0aGlzLT5NYWlsZXJJbnN0YWxsZWQoKSAmJiAhJHRoaXMtPkZFVWluc3RhbGxlZCgpKSkNCnsNCgkvLyB0aGUgZmlsZSBoYXMgYW4gYWNjZXNzIHR5cGUgdGhhdCBpcyB1bmF2YWlsYWJsZQ0KCSR0aGlzLT5EaXNwbGF5RG93bmxvYWRFcnJvclBhZ2UoJHRoaXMtPmxhbmcoJ25vYWNjZXMnKSk7DQogIHJldHVybjsNCn0NCg0KLy8gaWYgdGhlIGZpbGUgaGFzIEZFVSBhY2Nlc3MsIHdlIGNoZWNrIGlmIHRoZSB1c2VyIGlzIGFscmVhZHkgbG9nZ2VkIGluIGFuZCBoYXMgYWNjZXNzDQovLyBpZiBoZSBkb2VzLCB3ZSBkb24ndCBkaXNwbGF5IGZvcm1zIGFuZCBnbyB0byB0aGUgZGV0YWlscw0KJGhhc3Blcm0gPSBmYWxzZTsNCmlmKCAkdGhpcy0+Q2hlY2tEb3duVHlwZSgkZmlsZS0+YWNjZXNzdHlwZSAsIEpNRE1fQllfRkVVKSApDQp7DQogICRoYXNwZXJtID0gJHRoaXMtPkNoZWNrRkVVUGVybSgkZmlsZS0+ZmlsZV9pZCk7DQp9DQovLyB1c2VyIGhhcyBub3QgZ2FpbiBhY2Nlc3MgYnkgRkVVIHNvIHdlIGFyZSBjaGVja2luZyBpZiBoZSBjYW4gZ2V0IHRoaXMgYnkgbWFpbA0KaWYoICEkaGFzcGVybSAmJiAkdGhpcy0+Q2hlY2tEb3duVHlwZSgkZmlsZS0+YWNjZXNzdHlwZSAsIEpNRE1fQllfTUFJTCkpDQp7DQoJLy8gRU1BSUwgSVMgQSBQT1NTSUJMRSBBQ0NFU1MNCg0KCS8vIGxvYWQgdGhlIGlucHV0cyBhbmQgbGFiZWxzDQoJJHByeCA9ICdzbV8nOw0KCSRzbWFydHktPmFzc2lnbigiZmlyc3RuYW1lX2xhYmVsIiwgJHRoaXMtPkxhbmcoInByb21wdF9maXJzdG5hbWUiKSk7DQoJJHNtYXJ0eS0+YXNzaWduKCJmaXJzdG5hbWVfaW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwkcHJ4LiJmaXJzdG5hbWUiLCIiLDI4LDY0KSk7DQoJJHNtYXJ0eS0+YXNzaWduKCJsYXN0bmFtZV9sYWJlbCIsICR0aGlzLT5MYW5nKCJwcm9tcHRfbGFzdG5hbWUiKSk7DQoJJHNtYXJ0eS0+YXNzaWduKCJsYXN0bmFtZV9pbnB1dCIsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCRwcnguImxhc3RuYW1lIiwiIiwyOCw2NCkpOw0KCSRzbWFydHktPmFzc2lnbigiZW1haWxfbGFiZWwiLCAkdGhpcy0+TGFuZygicHJvbXB0X2VtYWlsIikpOw0KCSRzbWFydHktPmFzc2lnbigiZW1haWxfaW5wdXQiLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwkcHJ4LiJlbWFpbCIsIiIsMjgsNjQpKTsNCgkkc21hcnR5LT5hc3NpZ24oIm1haWxpbmdsaXN0X2xhYmVsIiwgJHRoaXMtPkxhbmcoInByb21wdF9tYWlsaW5nbGlzdCIpKTsNCgkkc21hcnR5LT5hc3NpZ24oIm1haWxpbmdsaXN0X2lucHV0IiwgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAkcHJ4LiJtYWlsaW5nbGlzdCIsIDEsIDEpKTsNCgkkc21hcnR5LT5hc3NpZ24oInN1Ym1pdCIsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsJHByeC4nc3VibWl0JywkdGhpcy0+bGFuZygnc3VibWl0cmVxZW1haWwnKSwgJ29uY2xpY2s9InJldHVybiBkb3dubG9hZGVyX3ZhbGlkYXRlKFwnJy4kaWQuJ1wnKTsiJykgKTsNCg0KDQoNCglpZiggJGZpbGUtPnRlbXBsYXRlX2Zvcm0gIT0gJycgJiYgJHRlbXBsYXRlID0gJHRoaXMtPkdldFRlbXBsYXRlKCRmaWxlLT50ZW1wbGF0ZV9mb3JtKSApDQoJew0KCQkvLyB0aGUgdGVtcGxhdGUgZXhpc3RzLCB3ZSdyZSBnb2luZyB0byB1c2UgaXQNCgl9DQoJZWxzZQ0KCXsNCgkJLy8gbm8gdGVtcGxhdGUgc3BlY2lmaWVkLCBvciB0ZW1wbGF0ZSBkb2Vzbid0IGV4aXN0Li4uIHdlIGdldCB0aGUgZGVmYXVsdCBvbmUNCgkJJHRlbXBsYXRlbmFtZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2Zvcm1fdGVtcGxhdGUnLCAnJyk7DQoJCSR0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkdGVtcGxhdGVuYW1lKTsNCgl9DQoNCgllY2hvICc8c2NyaXB0Pg0KCWZ1bmN0aW9uIGRvd25sb2FkZXJfdmFsaWRhdGUoaWQpew0KCQl2YXIgZmlyc3RuYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQrIicuJHByeC4nZmlyc3RuYW1lIikudmFsdWU7DQoJCXZhciBsYXN0bmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKyInLiRwcnguJ2xhc3RuYW1lIikudmFsdWU7DQoJCXZhciBlbWFpbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKyInLiRwcnguJ2VtYWlsIikudmFsdWU7DQoJCWlmKGZpcnN0bmFtZSA9PSAiIiB8fCBsYXN0bmFtZSA9PSAiIil7DQoJCQlhbGVydCgiJy4kdGhpcy0+TGFuZygicGxlYXNlX25hbWUiKS4nIik7DQoJCQlyZXR1cm4gZmFsc2U7DQoJCX1lbHNlIGlmKGVtYWlsID09ICIiIHx8IGVtYWlsLmluZGV4T2YoIkAiKSA9PSAtMSl7DQoJCQlhbGVydCgiJy4kdGhpcy0+TGFuZygicGxlYXNlX2VtYWlsIikuJyIpOw0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9ZWxzZXsNCgkJCXJldHVybiB0cnVlOw0KCQl9DQoJfQ0KCTwvc2NyaXB0Pg0KCSc7DQoNCgllY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnc2VuZGVtYWlsJywgJHJldHVybmlkLCAncG9zdCcpOw0KCWVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgImZpbGVfaWQiLCAkZmlsZS0+ZmlsZV9pZCk7DQoJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGEoJHRlbXBsYXRlKTsNCgllY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7DQp9DQoNCi8vIHVzZXIgaGFzIG5vdCBnYWluIGFjY2VzcyBieSBGRVUgc28gd2UgYXJlIGNoZWtpbmcgaWYgaGUgY2FuIGdldCB0aGlzIGJ5IGxvZ2luDQppZiggISRoYXNwZXJtICYmICR0aGlzLT5DaGVja0Rvd25UeXBlKCRmaWxlLT5hY2Nlc3N0eXBlICwgSk1ETV9CWV9GRVUpICYmICR0aGlzLT5GRVVpbnN0YWxsZWQoKSApDQp7DQoJLy8gRkVVIElTIEEgUE9TU0lCTEUgQUNDRVNTDQoNCgkkRkVVID0gY21zbXMoKS0+R2V0TW9kdWxlSW5zdGFuY2UoJ0Zyb250RW5kVXNlcnMnKTsNCglpZigkRkVVLT5Mb2dnZWRJbigpKQ0KICB7DQoJCS8vIHRoZSB1c2VyIGlzIGxvZ2dlZCBpbiwgYnV0IGRvZXNuJ3QgaGF2ZSBhY2Nlc3MNCgkJJHRoaXMtPkRpc3BsYXlEb3dubG9hZEVycm9yUGFnZSgkdGhpcy0+bGFuZygnbm9hY2Nlc3MnKSk7DQogICAgcmV0dXJuOw0KCX0NCgllbHNlDQoJew0KCQkvLyB1c2VyIG5vdCBsb2dnZWQgaW4NCgkJJGxvZ2lubXNnID0gKCR0aGlzLT5DaGVja0Rvd25UeXBlKCRmaWxlLT5hY2Nlc3N0eXBlICwgSk1ETV9CWV9NQUlMKSk/J21heWFsc29sb2dpbic6J211c3Rsb2dpbic7DQoJCWVjaG8gJzxwIGNsYXNzPSJkbWxvZ2ludGl0bGUiPicuJHRoaXMtPkxhbmcoJGxvZ2lubXNnKS4nPC9wPic7DQoJCSRhbGxvd2VkZ3JvdXBzID0gJHRoaXMtPkdldEZpbGVHcm91cHMoJGZpbGUtPmZpbGVfaWQpOw0KCQkkYWxsb3dlZGdyb3VwcyA9ICR0aGlzLT5HZXRGRVVHcm91cE5hbWVzKCRhbGxvd2VkZ3JvdXBzKTsNCgkJJGFyciA9IGFycmF5KCJmb3JtIj0+ImxvZ2luIik7DQoJCWlmKCFlbXB0eSgkYWxsb3dlZGdyb3VwcykpDQoJCQkkYXJyWyJvbmx5X2dyb3VwcyJdPSRhbGxvd2VkZ3JvdXBzOw0KCQkjZWNobyBjbXNtcygpLT5HZXRTbWFydHkoKS0+ZmV0Y2goJ2V2YWw6e0Zyb250RW5kVXNlcnMgcmV0dXJudG89JyAuICRpZCAuICd9Jyk7ICMgYmVzdCB3YXkgdG8gZ2V0IHRoZSBsb2dpbiBmb3JtIChKTSkNCiAgICAjIGV4Y2VwdCB0aGF0IGl0IHdvbid0IHdvcmsgYXMgRm9ybSBzdWJtaXRzIHRvIGxpc3QgKGRlZmF1bHQgYWN0aW9uKSBhbmQgRkVVIHdvbid0IHRyYXAgdGhlIHBhcmFtZXRlcnMgdGhlcmUuLi4NCiAgICByZXR1cm47DQoJfQ0KfQ0KDQppZiggJHRoaXMtPkNoZWNrRG93blR5cGUoJGZpbGUtPmFjY2Vzc3R5cGUgLCBKTURNX0JZX0ZSRUUgKSB8fCAkaGFzcGVybSkNCnsNCiAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KCS8vIGRvd25sb2FkaW5nIGZpbGUNCgkkZmlsZV9uYW1lID0gICRmaWxlLT5uYW1lLigkZmlsZS0+ZXh0ICE9ICcnID8gJy4nIC4gJGZpbGUtPmV4dCA6ICcnKTsNCgkkc21hcnR5LT5hc3NpZ24oJ2Rvd25sb2FkX25hbWUnLCAgJGZpbGVfbmFtZSkgOw0KCSRzbWFydHktPmFzc2lnbignZG93bmxvYWRpbmcnLCAkdGhpcy0+bGFuZygnZG93bmxvYWRpbmcnLCAkZmlsZV9uYW1lKSApOw0KCSRzbWFydHktPmFzc2lnbignZG93bmxvYWRpbmdfaW5mbycsICR0aGlzLT5sYW5nKCdkb3dubG9hZGluZ19pbmZvJykpOw0KCSRzbWFydHktPmFzc2lnbignYmFja3RvbGlzdGxpbmsnLCAnPGEgaHJlZj0iamF2YXNjcmlwdDpoaXN0b3J5LmJhY2soKSI+Jy4kdGhpcy0+bGFuZygnYmFja3RvbGlzdCcpLic8L2E+Jyk7DQogIC8vJHVybCA9ICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwgJ2RvX2Rvd25sb2FkJywgJHJldHVybmlkLCBhcnJheSgnc2hvd3RlbXBsYXRlJyA9PiAnZmFsc2UnLCAnYWxpYXMnID0+ICRmaWxlLT5hbGlhcykgKTsNCiAgJHVybCA9ICR0aGlzLT5jcmVhdGVfdXJsKCRpZCwgJ2RvX2Rvd25sb2FkJywgJHJldHVybmlkLCBhcnJheSggJ2FsaWFzJyA9PiAkZmlsZS0+YWxpYXMpICk7DQogIC8vIGZvciBzb21lIHJlYXNvbiBzb21ldGltZXMgcGFyYW1ldGVycyBhcmUgYmVpbmcgc3RyaXBwZWQuLi4gd2Ugc3RpbGwgaGF2ZSBzZXNzaW9uIGFzIGEgZmFpbHNhZmUNCiAgJF9TRVNTSU9OWydhbGlhcyddID0gJGZpbGUtPmFsaWFzOw0KCWhlYWRlcigiUmVmcmVzaDogMjsgdXJsPSIgLiAkdXJsKTsNCgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJ2RlZmF1bHRfZG93bmxvYWRfdGVtcGxhdGUnICwnJyx0cnVlKSA7DQoJLy9+IGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZG93bmxvYWQudHBsJyk7DQp9DQoNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/action.do_download.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCiRkYiA9IGNtc21zKCktPkdldERiKCk7DQokZmlsZSA9IG5ldyBTdGRDbGFzcygpOw0KJGhhc3Blcm0gPSBmYWxzZTsNCiRmaWxlX3BhdGggID0gJyc7DQokZmlsZV9uYW1lID0gJyc7DQokZmlsZV9pZCA9ICcnOw0KDQovLyBmb3Igc29tZSByZWFzb24gc29tZXRpbWVzIHBhcmFtZXRlcnMgYXJlIGJlaW5nIHN0cmlwcGVkLi4uIHdlIHN0aWxsIGhhdmUgc2Vzc2lvbiBhcyBhIGZhaWxzYWZlDQokYWxpYXMgPSBpc3NldCgkcGFyYW1zWydhbGlhcyddKSA/ICRwYXJhbXNbJ2FsaWFzJ10gOiBpc3NldCgkX1NFU1NJT05bJ2FsaWFzJ10pID8gJF9TRVNTSU9OWydhbGlhcyddIDogTlVMTDsNCg0KaWYoICRhbGlhcyAgKQ0Kew0KICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2ptZG93bm1hbl9maWxlcyBXSEVSRSBhbGlhcyA9ID8gQU5EICcuJHRoaXMtPkdldEZpbGVTdGRXaGVyZSgpOw0KICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRhbGlhcykpOw0KICANCiAgaWYgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQ0KICB7DQogICAgZm9yZWFjaCgkcm93IGFzICRrZXk9PiR2YWx1ZSkNCiAgICAgICRmaWxlLT4ka2V5ID0gJHZhbHVlOw0KICAgICRmaWxlX3BhdGggPSAgJHJvd1snc2VydmVyX25hbWUnXTsNCiAgICAkZmlsZV9uYW1lID0gICRyb3dbJ25hbWUnXS4oJHJvd1snZXh0J10hPScnPycuJy4gJHJvd1snZXh0J106JycpOw0KICAgICRmaWxlX2lkID0gJHJvd1snZmlsZV9pZCddOw0KICB9DQogIGVsc2UNCiAgew0KICAgICR0aGlzLT5EaXNwbGF5RG93bmxvYWRFcnJvclBhZ2UoJHRoaXMtPmxhbmcoJ25vYWxpYXMnKSk7DQogIH0NCg0KICAvLyBsZXRzIHNlZSBpZiB3ZSBhY2Nlc3NlZCBieSBGRVUNCiAgaWYoICRmaWxlLT5hY2Nlc3N0eXBlID49IDEgKQ0KICB7DQogICAgLy8gd2UgZGlkIGluZGVlZA0KICAgICRoYXNwZXJtID0gJHRoaXMtPkNoZWNrRkVVUGVybSgkcm93WydmaWxlX2lkJ10pOw0KICB9DQogIGVsc2UgaWYoICRmaWxlLT5hY2Nlc3N0eXBlID09IDAgKQ0KICAgIC8vIGZyZWUgZG93bmxvYWRzIGZvciBhbGwNCiAgICAkaGFzcGVybSA9IHRydWU7DQoNCn0NCi8vICBjaGVjayB3aGVuIGRvd25sb2FkaW5nIGJ5IGVtYWlsDQplbHNlIGlmKCBpc3NldCgkX0dFVFsnaGFzaGtleSddKSkNCnsNCiAgJGhhc3Blcm0gPSB0cnVlOw0KICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2ptZG93bm1hbl9maWxlcyBmDQogICAgUklHSFQgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2ptZG93bm1hbl9kb3dubG9hZHMgYyBVU0lORyAoZmlsZV9pZCkNCiAgICBXSEVSRSBoYXNoa2V5ID0gPyBBTkQgJy4kdGhpcy0+R2V0RmlsZVN0ZFdoZXJlKCdmJyk7DQogICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRfR0VUWydoYXNoa2V5J10pKTsNCiAgDQogIGlmICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkNCiAgew0KICAgIGZvcmVhY2goJHJvdyBhcyAka2V5PT4kdmFsdWUpDQogICAgICAkZmlsZS0+JGtleSA9ICR2YWx1ZTsNCg0KICAgICRmaWxlX3BhdGggPSAgJHJvd1snc2VydmVyX25hbWUnXTsNCiAgICAkZmlsZV9uYW1lID0gICRyb3dbJ25hbWUnXS4oJHJvd1snZXh0J10hPScnPycuJy4gJHJvd1snZXh0J106JycpOw0KICAgICRmaWxlX2lkID0gICRyb3dbJ2ZpbGVfaWQnXTsNCg0KICAgICRkYi0+RXhlY3V0ZSgnVVBEQVRFICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfam1kb3dubWFuX2Rvd25sb2Fkcw0KICAgICAgU0VUIGRvd25sb2FkZWQgPSBub3coKSBXSEVSRSBoYXNoa2V5ID0gPycsIGFycmF5KCRfR0VUWydoYXNoa2V5J10pICk7DQogIH0NCiAgZWxzZQ0KICB7DQogICAgdGhyb3cgbmV3IENtc0Vycm9yNDA0RXhjZXB0aW9uKCR0aGlzLT5sYW5nKCdub2hhc2gnKSk7DQogICAgLy8kdGhpcy0+RGlzcGxheURvd25sb2FkRXJyb3JQYWdlKCR0aGlzLT5sYW5nKCdub2hhc2gnKSwnJyk7ICANCiAgfQ0KfQ0KZWxzZQ0Kew0KICB0aHJvdyBuZXcgQ21zRXJyb3I0MDRFeGNlcHRpb24oJHRoaXMtPmxhbmcoJ3dyb25ncGFyYW1zJykpOw0KICAvLyR0aGlzLT5EaXNwbGF5RG93bmxvYWRFcnJvclBhZ2UoJHRoaXMtPmxhbmcoJ3dyb25ncGFyYW1zJykpOyANCn0NCg0KaWYoISRoYXNwZXJtKQ0Kew0KICB0aHJvdyBuZXcgQ21zRXJyb3I0MDNFeGNlcHRpb24oJHRoaXMtPmxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsNCn0NCg0KaWYoICRmaWxlX3BhdGggPT0gJycgfHwgJGZpbGVfbmFtZSA9PSAnJyApDQp7DQogIHRocm93IG5ldyBDbXNFcnJvcjQwNEV4Y2VwdGlvbigkdGhpcy0+bGFuZygnd3JvbmdkYXRhJykpOw0KICAvLyR0aGlzLT5EaXNwbGF5RG93bmxvYWRFcnJvclBhZ2UoJHRoaXMtPmxhbmcoJ3dyb25nZGF0YScpKTsgDQp9DQoNCmlmKHN0cnBvcygkZmlsZV9wYXRoICwgJ2h0dHA6Ly8nKSA9PT0gMCB8fCANCiAgc3RycG9zKCRmaWxlX3BhdGggLCAnaHR0cHM6Ly8nKSA9PT0gMCApDQp7DQogIGptZG1fdXRpbHM6Ol9jbGVhbl9hbGxfb3V0cHV0KCk7DQogIGhlYWRlcignTG9jYXRpb246ICcgLiAkZmlsZV9wYXRoKTsNCiAgZXhpdDsNCn0NCmVsc2UgaWYoICFmaWxlX2V4aXN0cygkZmlsZV9wYXRoICkpDQogIC8vJHRoaXMtPkRpc3BsYXlEb3dubG9hZEVycm9yUGFnZSgkdGhpcy0+bGFuZygnZmlsZW5vdGZvdW5kJywkZmlsZV9uYW1lKSk7DQogIHRocm93IG5ldyBDbXNFcnJvcjQwNEV4Y2VwdGlvbigkdGhpcy0+bGFuZygnZmlsZW5vdGZvdW5kJywgJGZpbGVfbmFtZSkpOw0KDQokZGItPkV4ZWN1dGUoJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2ptZG93bm1hbl9maWxlcw0KICAgICAgU0VUIGNvdW50ZXIgPSBjb3VudGVyKzEgV0hFUkUgZmlsZV9pZCA9ID8nLCBhcnJheSgkZmlsZV9pZCkgKTsNCg0KaWYoICEgJHRoaXMtPmNoZWNrRmlsZUFsbG93KCRmaWxlX3BhdGgpICkNCnsNCiAgdGhyb3cgbmV3IENtc0Vycm9yNDAzRXhjZXB0aW9uKCR0aGlzLT5sYW5nKCdhY2Nlc3NkZW5pZWQnKSk7DQp9DQovLyBhbGwgY2hlY2tlZCAtPiBkb3dubG9hZGluZw0KDQpqbWRtX3V0aWxzOjpfY2xlYW5fYWxsX291dHB1dCgpOw0KJGZuID0gY21zX2pvaW5fcGF0aCgNCiAgICAgICAgICAgICAgICAgICAgICAnbGliJywNCiAgICAgICAgICAgICAgICAgICAgICAnZXh0ZXJuYWwnLA0KICAgICAgICAgICAgICAgICAgICAgICd2bmNfaHR0cGRvd25sb2FkJywNCiAgICAgICAgICAgICAgICAgICAgICAnY2xhc3MuaHR0cGRvd25sb2FkLnBocCcNCiAgICAgICAgICAgICAgICAgICAgKTsNCmluY2x1ZGVfb25jZSgkZm4pOw0KJG9iamVjdCA9IG5ldyBodHRwZG93bmxvYWQ7DQokb2JqZWN0LT5zZXRfYnlmaWxlKCRmaWxlX3BhdGgpOw0KJG9iamVjdC0+ZmlsZW5hbWUgPSAkZmlsZV9uYW1lOw0KJG9iamVjdC0+ZG93bmxvYWQoKTsNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.do_updateassoc.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCmlmICghICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1VzZSBKTURvd25NYW4nKSkNCnsNCgllY2hvICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7DQoJcmV0dXJuOw0KfQ0KaWYgKGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSBvciAhaXNzZXQoJHBhcmFtc1snZmlsZV9pZCddKSApDQp7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCk7DQp9DQoNCiRmaWxlX2lkID0gJyc7DQppZiAoaXNzZXQoJHBhcmFtc1snZmlsZV9pZCddKSkNCnsNCgkkZmlsZV9pZCA9ICRwYXJhbXNbJ2ZpbGVfaWQnXTsNCn0NCiRjaGVja2VkID0gYXJyYXkoKTsNCg0KZm9yZWFjaCgkcGFyYW1zIGFzICRrZXkgPT4gJHZhciApDQp7DQoJJHRtcCA9IGV4cGxvZGUoIl8iICwgJGtleSk7DQoJaWYoICR0bXBbMF0gPT0gImFzc29jIikgDQoJCSRjaGVja2VkW10gPSAoaW50KSAkdG1wWzFdOw0KfQ0KLy9+IHZhcl9kdW1wKCRjaGVja2VkKTsNCg0KJGFzc29jX2JlZm9yZSA9IGFycmF5KCk7DQokcXVlcnkgPSAiU0VMRUNUIGNhdGVnb3J5X2lkIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9qbWRvd25tYW5fZmlsZXNfY2F0ZWdvcnkgDQpXSEVSRSBmaWxlX2lkID0gPzsiOw0KJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkZmlsZV9pZCkpOw0Kd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQ0KCSRhc3NvY19iZWZvcmVbXSA9IChpbnQpICRyb3dbJ2NhdGVnb3J5X2lkJ107DQovL34gdmFyX2R1bXAoJGFzc29jX2JlZm9yZSk7DQoNCiRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKSAuICJtb2R1bGVfam1kb3dubWFuX2ZpbGVzX2NhdGVnb3J5IA0KICAgICAgICBXSEVSRSBmaWxlX2lkID0gPyBBTkQgY2F0ZWdvcnlfaWQgTk9UIElOICggIiAuIGltcGxvZGUoIiAsICIsICRjaGVja2VkKS4iICk7IjsNCg0KJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoICRmaWxlX2lkKSk7DQoNCg0KJGRpZmYgPSBhcnJheV9kaWZmKCAkY2hlY2tlZCwgJGFzc29jX2JlZm9yZSAgKTsNCg0KJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfam1kb3dubWFuX2ZpbGVzX2NhdGVnb3J5ICggY2F0ZWdvcnlfaWQsIGZpbGVfaWQsIGl0ZW1fb3JkZXIpICBWQUxVRVMgIjsNCg0KaWYoIGVtcHR5KCRkaWZmKSkNCnsNCiAgJHBhcmFtcyA9IGFycmF5KCd0YWJfbWVzc2FnZSc9PiAnZmlsZW1vZGlmaWVkJywgJ2FjdGl2ZV90YWInID0+ICdmaWxlcycsICdzZWxlY3Rvcic9PiRwYXJhbXNbJ3NlbGVjdG9yJ10pOw0KICAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsNCn0NCmVsc2UNCnsNCiAgJHQgPSBhcnJheSgpOyAgDQogIGZvcmVhY2goJGNoZWNrZWQgYXMgJGNhdF9pZCkgJHRbXSA9ICIgKCIgLiAkY2F0X2lkIC4gIiwiIC4gJGZpbGVfaWQgLiAiLCIgLiAkZmlsZV9pZCAuICIpIjsNCiAgJHF1ZXJ5IC49IGltcGxvZGUoJywnLCAkdCk7DQp9DQoNCiRyID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoNCiR0aGlzLT5TZW5kRXZlbnQoJ0pNRG93bk1hbkZpbGVFZGl0ZWQnLCBhcnJheSgnZmlsZV9pZCcgPT4gJGZpbGVfaWQsICduYW1lJyA9PiAkbmFtZSkpOw0KJHBhcmFtcyA9IGFycmF5KCd0YWJfbWVzc2FnZSc9PiAnZmlsZW1vZGlmaWVkJywgJ2FjdGl2ZV90YWInID0+ICdmaWxlcycsICdzZWxlY3Rvcic9PiRwYXJhbXNbJ3NlbGVjdG9yJ10pOw0KJHRoaXMtPlVwZGF0ZUFzc29jaWF0aW9uQWdyZWdhdGlvbiggKGludCkgJGZpbGVfaWQpOw0KJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.editcategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCmlmICghICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1VzZSBKTURvd25NYW4nKSkNCnsNCgllY2hvICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7DQoJcmV0dXJuOw0KfQ0KaWYgKGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSkNCnsNCgkkcGFyYW1zID0gYXJyYXkoJ2FjdGl2ZV90YWInID0+ICdjYXRlZ29yaWVzJyk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwkcGFyYW1zKTsNCn0NCg0KDQokY2F0ZWdvcnlfaWQgPSAoaXNzZXQoJHBhcmFtc1snY2F0ZWdvcnlfaWQnXSkpPyBpbnR2YWwoJHBhcmFtc1snY2F0ZWdvcnlfaWQnXSkgOiAtMTsNCiRkZXNjcmlwdGlvbiA9IChpc3NldCgkcGFyYW1zWydkZXNjcmlwdGlvbiddKSk/ICRwYXJhbXNbJ2Rlc2NyaXB0aW9uJ106Jyc7DQokcGFyZW50X2lkID0gKGlzc2V0KCRwYXJhbXNbJ3BhcmVudCddKSk/aW50dmFsKCRwYXJhbXNbJ3BhcmVudCddKTonJzsNCiRhbGlhcyA9IChpc3NldCgkcGFyYW1zWydhbGlhcyddKSk/JHRoaXMtPkNyZWF0ZUFsaWFzKCRwYXJhbXNbJ2FsaWFzJ10pOicnOw0KJGRlZmF1bHRfdGVtcGxhdGU9IChpc3NldCgkcGFyYW1zWydkZWZhdWx0X3RlbXBsYXRlJ10pKT8kcGFyYW1zWydkZWZhdWx0X3RlbXBsYXRlJ106Jyc7DQokbmFtZSA9ICcnOw0KDQppZiAoaXNzZXQoJHBhcmFtc1snY2F0ZWdvcnlfaWQnXSkpDQp7DQoJLy8gd2UgYXJlIGVkaXR0aW5nIGNhdGVnb3J5DQoJaWYgKGlzc2V0KCRwYXJhbXNbJ25hbWUnXSkpDQoJew0KCQkvLyBzYXZpbmcgY2hhbmdlcw0KCQkkbmFtZSA9ICRwYXJhbXNbJ25hbWUnXTsNCg0KCQkvLyBjaGVja2luZyBhbGlhcw0KCQlpZighJHRoaXMtPkNoZWNrQWxpYXMoJ2ZpbGVzJywgJGFsaWFzKSkNCgkJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ3dyb25nYWxpYXMnKSk7DQoJCWVsc2UgaWYgKCRuYW1lICE9ICcnICkNCgkJew0KCQkJJHRpbWUgPSAkZGItPkRCVGltZVN0YW1wKHRpbWUoKSk7DQoJCQkkcXVlcnkgPSAnVVBEQVRFICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfam1kb3dubWFuX2NhdGVnb3JpZXMgU0VUIG5hbWUgPSA/LCBkZXNjcmlwdGlvbiA9ID8sIHBhcmVudF9pZCA9ID8sIG1vZGlmaWVkX2RhdGU9PyAsIGFsaWFzPT8sIGRlZmF1bHRfdGVtcGxhdGU9PyBXSEVSRSBjYXRlZ29yeV9pZCA9ID8nOw0KCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5hbWUsICRkZXNjcmlwdGlvbiwgJHBhcmVudF9pZCwgJHRpbWUsICRhbGlhcywkZGVmYXVsdF90ZW1wbGF0ZSwgJGNhdGVnb3J5X2lkKSk7DQoJCQkkdGhpcy0+VXBkYXRlSGllcmFyY2h5UG9zaXRpb25zKCk7DQoJCQkvLyB1cGRhdGUgc2VhcmNoIGluZGV4DQoJCQkkdGhpcy0+U2VhcmNoRGVsZXRlQ2F0ZWdvcnkoJGNhdGVnb3J5X2lkKTsNCgkJCSR0aGlzLT5TZWFyY2hBZGRDYXRlZ29yeSggKGludCkgJGNhdGVnb3J5X2lkLCAkYWxpYXMuJyAnLiRuYW1lLicgJy4kZGVzY3JpcHRpb24pOw0KCQkJLy8gYWRkIG1vcmUgZmllbGRzIGFzIG5lZWRlZCB0byB0aGUgc2VuZCBldmVudA0KCQkJQCR0aGlzLT5TZW5kRXZlbnQoJ0pNRG93bk1hbkNhdGVnb3J5RWRpdGVkJywgYXJyYXkoJ2NhdGVnb3J5X2lkJyA9PiAkY2F0ZWdvcnlfaWQsICduYW1lJyA9PiAkbmFtZSkpOw0KCQkJJHBhcmFtcyA9IGFycmF5KCd0YWJfbWVzc2FnZSc9PiAnY2F0ZWdvcnl1cGRhdGVkJywgJ2FjdGl2ZV90YWInID0+ICdjYXRlZ29yaWVzJyk7DQoJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25vbmFtZWdpdmVuJykpOw0KCQl9DQoJfQ0KCS8vIGdldHRpbmcgY2F0ZWdvcnkgZGF0YSBmb3IgZWRpdGlvbg0KCSRxdWVyeSA9ICdzZWxlY3QgYWxpYXMsIGNhdGVnb3J5X2lkLCBuYW1lLCBkZXNjcmlwdGlvbiwgcGFyZW50X2lkLGRlZmF1bHRfdGVtcGxhdGUgZnJvbSAnLmNtc19kYl9wcmVmaXgoKSAuJ21vZHVsZV9qbWRvd25tYW5fY2F0ZWdvcmllcyBXSEVSRSBjYXRlZ29yeV9pZD0gPyc7DQoJJHJvdyA9ICRkYi0+R2V0Um93KCRxdWVyeSwgYXJyYXkoJGNhdGVnb3J5X2lkKSk7DQoNCglpZiAoJHJvdykNCgl7DQoJCSRuYW1lID0gJHJvd1snbmFtZSddOw0KCQkkZGVzY3JpcHRpb24gPSAkcm93WydkZXNjcmlwdGlvbiddOw0KCQkkcGFyZW50X2lkID0gJHJvd1sncGFyZW50X2lkJ107DQoJCSRhbGlhcyA9ICRyb3dbJ2FsaWFzJ107DQoJCSRkZWZhdWx0X3RlbXBsYXRlID0gJHJvd1snZGVmYXVsdF90ZW1wbGF0ZSddOw0KCX0NCgkkc21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdjYXRlZ29yeV9pZCcsICRjYXRlZ29yeV9pZCkpOw0KCQ0KfQ0KZWxzZSBpZiAoaXNzZXQoJHBhcmFtc1snbmFtZSddKSkNCnsNCgkvLyB3ZSBhcmUgYWRkaW5nIG5ldyBjYXRlZ29yeQ0KCSRuYW1lID0gJHBhcmFtc1snbmFtZSddOw0KCQ0KCS8vIGFkZGluZyBhbGlhcw0KCSRpID0gMTsNCgkkYWxpYXMgPSAkbiA9ICR0aGlzLT5DcmVhdGVBbGlhcygkbmFtZSk7DQoJd2hpbGUoISR0aGlzLT5DaGVja0FsaWFzKCdjYXRlZ29yaWVzJywgJGFsaWFzKSkNCgkJJGFsaWFzID0gJG4uIi0iLiRpKys7DQoJCQ0KCSRjYXRpZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfam1kb3dubWFuX2NhdGVnb3JpZXNfc2VxIik7DQoJJHRpbWUgPSAkZGItPkRCVGltZVN0YW1wKHRpbWUoKSk7DQoJJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfam1kb3dubWFuX2NhdGVnb3JpZXMgKGNhdGVnb3J5X2lkLCBuYW1lLCBhbGlhcywgZGVzY3JpcHRpb24sIHBhcmVudF9pZCwgY3JlYXRlX2RhdGUsIG1vZGlmaWVkX2RhdGUsZGVmYXVsdF90ZW1wbGF0ZSkgVkFMVUVTICg/LD8sPyw/LD8sJy4kdGltZS4nLCcuJHRpbWUuJyw/KSc7DQoJJHBhcm1zID0gYXJyYXkoJGNhdGlkLCRuYW1lLCRhbGlhcywkZGVzY3JpcHRpb24sJHBhcmVudF9pZCwkZGVmYXVsdF90ZW1wbGF0ZSk7DQoJJGRiLT5FeGVjdXRlKCRxdWVyeSwgJHBhcm1zKTsNCgkkdGhpcy0+VXBkYXRlSGllcmFyY2h5UG9zaXRpb25zKCk7DQoJJHRoaXMtPlNlYXJjaEFkZENhdGVnb3J5KCAoaW50KSAkY2F0aWQsICRhbGlhcy4nICcuJG5hbWUuJyAnLiRkZXNjcmlwdGlvbik7DQoJQCR0aGlzLT5TZW5kRXZlbnQoJ0pNRG93bk1hbkNhdGVnb3J5QWRkZWQnLCBhcnJheSgnY2F0ZWdvcnlfaWQnID0+ICRjYXRlZ29yeV9pZCwgJ25hbWUnID0+ICRuYW1lKSk7DQoNCgkkcGFyYW1zID0gYXJyYXkoJ3RhYl9tZXNzYWdlJz0+ICdjYXRlZ29yeWFkZGVkJywgJ2FjdGl2ZV90YWInID0+ICdjYXRlZ29yaWVzJyk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7DQp9DQoNCg0KLy8gc3RhdGluZyBmb3JtDQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnZWRpdGNhdGVnb3J5JywgJHJldHVybmlkKSk7DQokc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCg0KLy8gaW5wdXRzDQokc21hcnR5LT5hc3NpZ24oJ2lucHV0bmFtZScsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnbmFtZScsICRuYW1lLCAzMCwgMjU1KSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0YWxpYXMnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2FsaWFzJywgJGFsaWFzLCAzMCwgMjU1KSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0ZGVzY3JpcHRpb24nLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2Rlc2NyaXB0aW9uJywgJGRlc2NyaXB0aW9uLCAzMCwgMjU1KSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0cGFyZW50X2lkJywgICR0aGlzLT5DcmVhdGVQYXJlbnREcm9wZG93bigkaWQsICRjYXRlZ29yeV9pZCwgJHBhcmVudF9pZCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dGRlZmF1bHRfdGVtcGxhdGUnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdkZWZhdWx0X3RlbXBsYXRlJywkdGhpcy0+R2V0VGVtcGxhdGVzQ29tYm8oImxpc3QiKSwtMSwkZGVmYXVsdF90ZW1wbGF0ZSkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCBsYW5nKCdzdWJtaXQnKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY2FuY2VsJywgbGFuZygnY2FuY2VsJykpKTsNCi8vIGxhYmVscw0KJHNtYXJ0eS0+YXNzaWduKCduYW1lbGFiZWwnLCAkdGhpcy0+TGFuZygnbmFtZWxhYmVsJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdhbGlhc2xhYmVsJywgJHRoaXMtPkxhbmcoJ2FsaWFzbGFiZWwnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2Rlc2NyaXB0aW9ubGFiZWwnLCAkdGhpcy0+TGFuZygnZGVzY3JpcHRpb25sYWJlbCcpKTsNCiRzbWFydHktPmFzc2lnbigncGFyZW50X2lkbGFiZWwnLCAkdGhpcy0+TGFuZygncGFyZW50X2lkbGFiZWwnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2RlZmF1bHRfdGVtcGxhdGVsYWJlbCcsICR0aGlzLT5MYW5nKCdkZWZhdWx0dGVtcGxhdGUnKSk7DQoNCg0KI0Rpc3BsYXkgdGVtcGxhdGUNCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdGNhdGVnb3J5LnRwbCcpOw0KPz4NCg0K]]></data>
	</file>
	<file>
	  <filename>/action.editfile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCmlmICghICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1VzZSBKTURvd25NYW4nKSkNCnsNCgllY2hvICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7DQoJcmV0dXJuOw0KfQ0KDQppZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKQ0Kew0KICAgICRwYXJhbXMgPSBhcnJheSgnYWN0aXZlX3RhYicgPT4gJ2ZpbGVzJywgJ3NlbGVjdG9yJz0+JHBhcmFtc1snc2VsZWN0b3InXSk7DQoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwkcGFyYW1zKTsNCn0NCg0KJGFkbWludGhlbWUgPSBjbXNfdXRpbHM6OmdldF90aGVtZV9vYmplY3QoKTsNCiRhZGRmaWxlZGIgPSBmYWxzZTsNCi8vIHNldHRpbmcgZGVmYXVsdHMNCiRmaWxlX2lkID0gaXNzZXQoJHBhcmFtc1snZmlsZV9pZCddKT8oaW50KSRwYXJhbXNbJ2ZpbGVfaWQnXTonJzsNCiRzZXJ2ZXJfbmFtZSA9ICcnOw0KJGV4dCA9IGlzc2V0KCRwYXJhbXNbJ2V4dCddKT8kcGFyYW1zWydleHQnXTonJzsNCiRzaXplID0gJyc7DQokdGh1bWJfdmFsdWUgPScnOw0KJGhhc2ggPSAnJzsNCiRjcmVhdGVkID0gJyc7DQokZXhwaXJlID0gJyc7DQokc3RhcnQgPSAnJzsNCiR2aXNpYmxlID0gKGlzc2V0KCRwYXJhbXNbJ3Zpc2libGUnXSkpPyR2aXNpYmxlID0gJHBhcmFtc1sndmlzaWJsZSddOjA7DQokdHlwZSA9ICcnOw0KJHVzZWV4cCA9IDA7DQokdXNlc3RhcnQgPSAwOw0KJGFsaWFzID0gKGlzc2V0KCRwYXJhbXNbJ2FsaWFzJ10pKT8kcGFyYW1zWydhbGlhcyddOicnOw0KJGFjY2Vzc3R5cGUgPSAoaXNzZXQoJHBhcmFtc1snYWNjZXNzdHlwZSddKSk/JHBhcmFtc1snYWNjZXNzdHlwZSddOjA7DQokY291bnRlciA9ICghaXNzZXQoJHBhcmFtc1snY291bnRlciddKSB8fCAkcGFyYW1zWydjb3VudGVyJ108MCk/MDokcGFyYW1zWydjb3VudGVyJ107DQokdGVtcGxhdGVfZGV0YWlsID0gKGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlX2RldGFpbCddKSk/JHBhcmFtc1sndGVtcGxhdGVfZGV0YWlsJ106Jyc7DQokdGVtcGxhdGVfZm9ybSA9IChpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZV9mb3JtJ10pKT8kcGFyYW1zWyd0ZW1wbGF0ZV9mb3JtJ106Jyc7DQokdGVtcGxhdGVfZW1haWwgPSAoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGVfZW1haWwnXSkpPyRwYXJhbXNbJ3RlbXBsYXRlX2VtYWlsJ106Jyc7DQokZmV1Z3JvdXBzID0gKGlzc2V0KCRwYXJhbXNbJ2ZldWdyb3VwcyddKSk/JHBhcmFtc1snZmV1Z3JvdXBzJ106YXJyYXkoKTsNCiRkZXNjcmlwdGlvbiA9IChpc3NldCgkcGFyYW1zWydkZXNjcmlwdGlvbiddKSk/JHBhcmFtc1snZGVzY3JpcHRpb24nXTonJzsNCiR0aHVtYl92YWx1ZSA9IChpc3NldCgkcGFyYW1zWyd0aHVtYl9wYXRoJ10pKT8kcGFyYW1zWyd0aHVtYl9wYXRoJ106Jyc7DQoNCmlmIChpc3NldCgkcGFyYW1zWyd1c2VleHAnXSkpDQoJJGV4cGlyZXMgPSAkcGFyYW1zWydleHBpcmVkYXRlX1llYXInXS4nLScuJHBhcmFtc1snZXhwaXJlZGF0ZV9Nb250aCddLictJy4kcGFyYW1zWydleHBpcmVkYXRlX0RheSddLicgJy4kcGFyYW1zWydleHBpcmVkYXRlX0hvdXInXS4nOicuJHBhcmFtc1snZXhwaXJlZGF0ZV9NaW51dGUnXS4nOicuJHBhcmFtc1snZXhwaXJlZGF0ZV9TZWNvbmQnXTsNCmVsc2UNCgkkZXhwaXJlcyA9IE5VTEw7DQppZiAoaXNzZXQoJHBhcmFtc1sndXNlc3RhcnQnXSkpDQogICAgJHN0YXJ0cyA9ICRwYXJhbXNbJ3N0YXJ0ZGF0ZV9ZZWFyJ10uJy0nLiRwYXJhbXNbJ3N0YXJ0ZGF0ZV9Nb250aCddLictJy4kcGFyYW1zWydzdGFydGRhdGVfRGF5J10uJyAnLiRwYXJhbXNbJ3N0YXJ0ZGF0ZV9Ib3VyJ10uJzonLiRwYXJhbXNbJ3N0YXJ0ZGF0ZV9NaW51dGUnXS4nOicuJHBhcmFtc1snc3RhcnRkYXRlX1NlY29uZCddOw0KZWxzZQ0KICAgICRzdGFydHMgPSBOVUxMOw0KDQokbmFtZSA9ICcnOw0KaWYoaXNzZXQoJHBhcmFtc1snY2hhbmdldmlzaWJpbGl0eSddKSkNCnsNCiAgICBpZihlbXB0eSgkZmlsZV9pZCkgfHwgIWlzX251bWVyaWMoJGZpbGVfaWQpKQ0KICAgIHsNCgllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdub2ZpbGUnKSk7DQoJcmV0dXJuOw0KICAgIH0NCiAgICANCiAgICAkcXVlcnkgPSAnVVBEQVRFICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfam1kb3dubWFuX2ZpbGVzIFNFVCB2aXNpYmxlID0gPyBXSEVSRSBmaWxlX2lkID0gPyc7DQogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHZpc2libGUsICRmaWxlX2lkKSk7DQogICAgQCR0aGlzLT5TZW5kRXZlbnQoJ0pNRG93bk1hbkZpbGVFZGl0ZWQnLCBhcnJheSgnZmlsZV9pZCcgPT4gJGZpbGVfaWQsICduYW1lJyA9PiAkbmFtZSkpOw0KICAgICRwYXJhbXMgPSBhcnJheSgnYWN0aXZlX3RhYicgPT4gJ2ZpbGVzJywgJ3NlbGVjdG9yJz0+JHBhcmFtc1snc2VsZWN0b3InXSk7DQogICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyk7DQp9DQplbHNlIGlmIChpc3NldCgkcGFyYW1zWyduYW1lJ10pKQ0Kew0KCSRuYW1lID0gJHBhcmFtc1snbmFtZSddOw0KCWlmICgkbmFtZSAhPSAnJyAmJiAkYWxpYXMgIT0gJycpDQoJew0KICAgICAgICANCgkJLy8gY2hlY2tpbmcgYWxpYXMNCgkJJGFsaWFzID0gJHRoaXMtPkNyZWF0ZUFsaWFzKCRhbGlhcyk7DQoJCWlmKCEkdGhpcy0+Q2hlY2tBbGlhcygnZmlsZXMnLCAkYWxpYXMsJHBhcmFtc1snZmlsZV9pZCddLCdmaWxlX2lkJykpDQoJCQllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCd3cm9uZ2FsaWFzJykpOw0KCQllbHNlDQoJCXsNCgkJCSRxdWVyeSA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9qbWRvd25tYW5fZmlsZXMgU0VUIGFsaWFzID0gPywgIG5hbWUgPSA/LCAgZXh0ID0gPywgIGRlc2NyaXB0aW9uID0gPywgIGV4cGlyZXMgPSA/LHN0YXJ0cyA9ID8sIHZpc2libGUgPSA/LCBhY2Nlc3N0eXBlPT8sIHRlbXBsYXRlX2RldGFpbD0/LCB0ZW1wbGF0ZV9mb3JtPT8sIHRlbXBsYXRlX2VtYWlsPT8sIGNvdW50ZXIgPSA/LCB0aHVtYl9wYXRoID0gPyBXSEVSRSBmaWxlX2lkID0gPyc7DQoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkYWxpYXMsICRuYW1lLCAkZXh0LCAkZGVzY3JpcHRpb24sICAkZXhwaXJlcywkc3RhcnRzLCAkdmlzaWJsZSwgJGFjY2Vzc3R5cGUsICR0ZW1wbGF0ZV9kZXRhaWwsICR0ZW1wbGF0ZV9mb3JtLCAkdGVtcGxhdGVfZW1haWwsJGNvdW50ZXIsICR0aHVtYl92YWx1ZSwgJGZpbGVfaWQpKTsNCg0KCQkJLy8gdXBkYXRlIGZldSBncm91cHMgYXNzb2NpYXRpb24NCgkJCSRxdWVyeSA9ICJERUxFVEUgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ptZG93bm1hbl9maWxlZ3JvdXBzIFdIRVJFIGZpbGVfaWQ9PyI7DQoJCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkZmlsZV9pZCkpOw0KCQkJZm9yZWFjaCgkZmV1Z3JvdXBzIGFzICRncm91cCl7DQoJCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfam1kb3dubWFuX2ZpbGVncm91cHMgU0VUIGZpbGVfaWQ9PywgZ3JvdXBfaWQ9PyI7DQoJCQkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGZpbGVfaWQsICRncm91cCkpOw0KCQkJfQ0KDQoJCQkvLyB1cGRhdGUgc2VhcmNoIGluZGV4DQoJCQkkdGhpcy0+U2VhcmNoRGVsZXRlRmlsZSgkZmlsZV9pZCk7DQoJCQlpZigkdmlzaWJsZSkNCgkJCQkkdGhpcy0+U2VhcmNoQWRkRmlsZSggJGZpbGVfaWQsICRhbGlhcy4nICcuJG5hbWUuJyAnLiRkZXNjcmlwdGlvbiwgJGV4cGlyZXMpOw0KCQkJLy8gYWRkIG1vcmUgZmllbGRzIGFzIG5lZWRlZCB0byB0aGUgc2VuZCBldmVudA0KCQkJJHRoaXMtPlNlbmRFdmVudCgnSk1Eb3duTWFuRmlsZUVkaXRlZCcsIGFycmF5KCdmaWxlX2lkJyA9PiAkZmlsZV9pZCwgJ25hbWUnID0+ICRuYW1lKSk7DQoJCQkkcGFyYW1zID0gYXJyYXkoJ3RhYl9tZXNzYWdlJz0+ICdmaWxlbW9kaWZpZWQnLCAnYWN0aXZlX3RhYicgPT4gJ2ZpbGVzJywgJ3NlbGVjdG9yJz0+JHBhcmFtc1snc2VsZWN0b3InXSk7DQoJCQkkdGhpcy0+VXBkYXRlQXNzb2NpYXRpb25BZ3JlZ2F0aW9uKCAoaW50KSAkZmlsZV9pZCk7DQoJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsNCgkJfQ0KCX0NCgllbHNlDQoJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ25vbmFtZWdpdmVuJykpOw0KfQ0KDQokcXVlcnkgPSAnc2VsZWN0ICogZnJvbSAnLmNtc19kYl9wcmVmaXgoKSAuJ21vZHVsZV9qbWRvd25tYW5fZmlsZXMgV0hFUkUgZmlsZV9pZD0gPyc7DQokcm93ID0gJGRiLT5HZXRSb3coJHF1ZXJ5LCBhcnJheSgkZmlsZV9pZCkpOw0KLy9+IHZhcl9kdW1wKCRyb3cpOw0KaWYgKCRyb3cpDQp7DQoJJG5hbWUgPSAkcm93WyduYW1lJ107DQoJJGFsaWFzID0gJHJvd1snYWxpYXMnXTsNCgkkc2VydmVyX25hbWUgPSAkcm93WydzZXJ2ZXJfbmFtZSddOw0KCSRleHQgPSAkcm93WydleHQnXTsNCgkkc2l6ZSA9ICRyb3dbJ3NpemUnXTsNCgkkaGFzaCA9ICRyb3dbJ2hhc2gnXTsNCgkkZGVzY3JpcHRpb24gPSAkcm93WydkZXNjcmlwdGlvbiddOw0KCSRjcmVhdGVkID0gJHJvd1snY3JlYXRlZCddOw0KCWlmKCAhaXNfbnVsbCgkcm93WydleHBpcmVzJ10pICkNCgl7DQoJCSR1c2VleHAgPSAxOw0KCQkkZXhwaXJlID0gc3RydG90aW1lKCRyb3dbJ2V4cGlyZXMnXSk7DQoJfQ0KICAgIGlmKCAhaXNfbnVsbCgkcm93WydzdGFydHMnXSkgKQ0KICAgIHsNCiAgICAgICAgJHVzZXN0YXJ0ID0gMTsNCiAgICAgICAgJHN0YXJ0ID0gc3RydG90aW1lKCRyb3dbJ3N0YXJ0cyddKTsNCiAgICB9DQoJJHZpc2libGUgPSAkcm93Wyd2aXNpYmxlJ107DQoJJHR5cGUgPSAkcm93Wyd0eXBlJ107DQoJJGNvdW50ZXIgPSAkcm93Wydjb3VudGVyJ107DQoJJGFjY2Vzc3R5cGUgPSAkcm93WydhY2Nlc3N0eXBlJ107DQoJJHRlbXBsYXRlX2RldGFpbCA9ICRyb3dbJ3RlbXBsYXRlX2RldGFpbCddOw0KCSR0ZW1wbGF0ZV9mb3JtID0gJHJvd1sndGVtcGxhdGVfZm9ybSddOw0KCSR0ZW1wbGF0ZV9lbWFpbCA9ICRyb3dbJ3RlbXBsYXRlX2VtYWlsJ107DQoJJHRodW1iX3ZhbHVlID0gJHJvd1sndGh1bWJfcGF0aCddOw0KCSRmZXVncm91cHMgPSAkdGhpcy0+R2V0RmlsZUdyb3VwcygkZmlsZV9pZCk7DQp9DQoNCg0KJGVudHJ5YXJyYXkgPSBhcnJheSgpOw0KJHF1ZXJ5ID0gIlNFTEVDVCAgYy5jYXRlZ29yeV9pZCwgYy5sb25nX25hbWUgLCBmYy5maWxlX2lkIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9qbWRvd25tYW5fY2F0ZWdvcmllcyBjDQpMRUZUIE9VVEVSIEpPSU4gICggDQoJU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ptZG93bm1hbl9maWxlc19jYXRlZ29yeSBmYw0KCVdIRVJFIGZpbGVfaWQgPSA/DQoJKSBmYw0KT04gZmMuY2F0ZWdvcnlfaWQgPSBjLmNhdGVnb3J5X2lkDQpPUkRFUiBCWSBjLmhpZXJhcmNoeV9wcmlvcml0eTsgIjsNCiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksYXJyYXkoJGZpbGVfaWQpKTsNCiRyb3djbGFzcyA9ICdyb3cxJzsNCi8vfiB2YXJfZHVtcCgkZGJyZXN1bHQpOw0Kd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQ0Kew0KCSRvbmVyb3cgPSBuZXcgc3RkQ2xhc3MoKTsNCgkkb25lcm93LT5uYW1lID0gJHJvd1snbG9uZ19uYW1lJ107DQoJLy9+ICRyb3dbJ2NhdGVnb3J5X2lkJ107DQoJJG9uZXJvdy0+ZGVsZXRlbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RvX2RlbGV0ZWFzc29jJywgJHJldHVybmlkLCRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCcnLCcnLCdzeXN0ZW1pY29uJyksIGFycmF5KCdmaWxlX2lkJz0+JGZpbGVfaWQsJ2NhdGVnb3J5X2lkJz0+JHJvd1snY2F0ZWdvcnlfaWQnXSksICR0aGlzLT5MYW5nKCdhcmV5b3VzdXJlJykpOw0KCWlmKCBpc19udWxsKCAkcm93WydmaWxlX2lkJ10gKSkNCgkJJG9uZXJvdy0+aW5wdXRhc3NvYyA9ICAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdhc3NvY18nLiRyb3dbJ2NhdGVnb3J5X2lkJ10sICcxJywgMCwgJ2NsYXNzPSJwYWdlY2hlY2tib3giJyk7DQoJZWxzZQ0KCQkkb25lcm93LT5pbnB1dGFzc29jID0gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnYXNzb2NfJy4kcm93WydjYXRlZ29yeV9pZCddLCAnMScsIDEsICdjbGFzcz0icGFnZWNoZWNrYm94IicpOw0KCSRvbmVyb3ctPnJvd2NsYXNzID0gJHJvd2NsYXNzOw0KCSRlbnRyeWFycmF5W10gPSAkb25lcm93Ow0KCSgkcm93Y2xhc3M9PSJyb3cxIj8kcm93Y2xhc3M9InJvdzIiOiRyb3djbGFzcz0icm93MSIpOw0KfQ0KJHNtYXJ0eS0+YXNzaWduKCdhc3NvY2lhdGlvbnMnLCAkZW50cnlhcnJheSk7DQoNCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtYXNzb2MnLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2RvX3VwZGF0ZWFzc29jJywgJHJldHVybmlkKSk7DQokc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm1hc3NvYycsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOw0KDQoNCiNEaXNwbGF5IHRlbXBsYXRlDQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnZWRpdGZpbGUnLCAkcmV0dXJuaWQpKTsNCiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOw0KDQokc21hcnR5LT5hc3NpZ24oJ2lucHV0bmFtZScsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnbmFtZScsICRuYW1lLCAzMCwgMjU1KSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0YWxpYXMnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2FsaWFzJywgJGFsaWFzLCAzMCwgMjU1KSk7DQovL34gJHNtYXJ0eS0+YXNzaWduKCdpbnB1dHNlcnZlcl9uYW1lJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdzZXJ2ZXJfbmFtZScsICRzZXJ2ZXJfbmFtZSwgMzAsIDMwKSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0c2VydmVyX25hbWUnLCAgJHNlcnZlcl9uYW1lKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRleHQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2V4dCcsICRleHQsIDMwLCA1KSk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0Y291bnRlcicsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnY291bnRlcicsICRjb3VudGVyLCAzMCwgNSkpOw0KLy9+ICRzbWFydHktPmFzc2lnbignaW5wdXRzaXplJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdzaXplJywgJHNpemUsIDMwLCAxMCkpOw0KJHNpemUgPSAoICRzaXplPDEwMjQ/ICAkc2l6ZS4iIEIiOiAoICRzaXplPDEwNDg1NzYgPyAgICgoaW50KSAoJHNpemUvMTAyNCkpLiIgS0IiIDogKChpbnQpICgkc2l6ZS8xMDQ4NTc2ICkpLiIgTUIiICkpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dHNpemUnLCAgJHNpemUgKTsNCi8vfiAkc21hcnR5LT5hc3NpZ24oJ2lucHV0aGFzaCcsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnaGFzaCcsICRoYXNoLCAzMCwgMzIpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRoYXNoJywgJGhhc2gpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dGRlc2NyaXB0aW9uJywgJHRoaXMtPkNyZWF0ZVRleHRBcmVhKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhZG1pbl93eXNpd3lnJywgdHJ1ZSksICRpZCwgJGRlc2NyaXB0aW9uLCAnZGVzY3JpcHRpb24nLCAncGFnZXNtYWxsdGV4dGFyZWEnLCAnJywgJycsICcnLCAnMjAnLCAnNScpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRleHAnLCAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICd1c2VleHAnLCAnMScsICR1c2VleHAsICdjbGFzcz0icGFnZWNoZWNrYm94IicpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXRzdGFydCcsICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ3VzZXN0YXJ0JywgJzEnLCAkdXNlc3RhcnQsICdjbGFzcz0icGFnZWNoZWNrYm94IicpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXR2aXNpYmxlJywgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAndmlzaWJsZScsICcxJywgJHZpc2libGUsICdjbGFzcz0icGFnZWNoZWNrYm94IicpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXR0eXBlJywgJHR5cGUpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dGNyZWF0ZWQnLCAkY3JlYXRlZCk7DQokc21hcnR5LT5hc3NpZ24oJ2lucHV0ZXhwaXJlcycsICRleHBpcmUpOw0KJHNtYXJ0eS0+YXNzaWduKCdleHBpcmVkYXRlcHJlZml4JywgJGlkLidleHBpcmVkYXRlXycpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dHN0YXJ0cycsICRzdGFydCk7DQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0ZGF0ZXByZWZpeCcsICRpZC4nc3RhcnRkYXRlXycpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dGFjY2Vzc3R5cGUnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdhY2Nlc3N0eXBlJywkdGhpcy0+R2V0QWNjZXNzVHlwZUNvbWJvKCksLTEsJGFjY2Vzc3R5cGUpKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXR0aHVtYl9wYXRoJywgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAndGh1bWJfcGF0aCcsJHRoaXMtPkdldFRodW1ibmFpbHNEcm9wZG93bigkdGh1bWJfdmFsdWUpLC0xLCR0aHVtYl92YWx1ZSkpOw0KDQoNCiRmZXUgPSBjbXNtcygpLT5HZXRNb2R1bGVJbnN0YW5jZSgnRnJvbnRFbmRVc2VycycpOw0KaWYoIGlzX29iamVjdCggJGZldSApICkNCnsNCiAgJHNtYXJ0eS0+YXNzaWduKCdpbnB1dGZldWdyb3VwcycsICR0aGlzLT5DcmVhdGVJbnB1dFNlbGVjdExpc3QoJGlkLCAnZmV1Z3JvdXBzW10nLCR0aGlzLT5HZXRHcm91cHNDb21ibygpLCRmZXVncm91cHMpKTsNCn0NCmVsc2UNCnsNCiAgJHNtYXJ0eS0+YXNzaWduKCdpbnB1dGZldWdyb3VwcycsICR0aGlzLT5MYW5nKCdub2ZldScpKTsNCn0NCiRzbWFydHktPmFzc2lnbignaW5wdXR0ZW1wbGF0ZV9mb3JtJywgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAndGVtcGxhdGVfZm9ybScsJHRoaXMtPkdldFRlbXBsYXRlc0NvbWJvKCJmb3JtIiksLTEsJHRlbXBsYXRlX2Zvcm0pKTsNCiRzbWFydHktPmFzc2lnbignaW5wdXR0ZW1wbGF0ZV9kZXRhaWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICd0ZW1wbGF0ZV9kZXRhaWwnLCR0aGlzLT5HZXRUZW1wbGF0ZXNDb21ibygiZGV0YWlsIiksLTEsJHRlbXBsYXRlX2RldGFpbCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dHRlbXBsYXRlX2VtYWlsJywgJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAndGVtcGxhdGVfZW1haWwnLCR0aGlzLT5HZXRUZW1wbGF0ZXNDb21ibygiZW1haWwiKSwtMSwkdGVtcGxhdGVfZW1haWwpKTsNCiRzbWFydHktPmFzc2lnbiAoJ2NhdGVnb3J5dGV4dCcsICR0aGlzLT5MYW5nKCJhc3NvY2F0aW9uc3RhYmhlYWRlciIpKTsNCi8vIEFTU0lORyBBTEwgTEFCRUxTDQoNCiRzbWFydHktPmFzc2lnbignbmFtZWxhYmVsJywgJHRoaXMtPkxhbmcoJ25hbWVsYWJlbCcpKTsNCiRzbWFydHktPmFzc2lnbignYWxpYXNsYWJlbCcsICR0aGlzLT5MYW5nKCdhbGlhc2xhYmVsJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdzZXJ2ZXJfbmFtZWxhYmVsJywgJHRoaXMtPkxhbmcoJ3NlcnZlcl9uYW1lbGFiZWwnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2V4dGxhYmVsJywgJHRoaXMtPkxhbmcoJ2V4dGxhYmVsJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdzaXplbGFiZWwnLCAkdGhpcy0+TGFuZygnc2l6ZWxhYmVsJykpOw0KJHNtYXJ0eS0+YXNzaWduKCd0eXBlbGFiZWwnLCAkdGhpcy0+TGFuZygndHlwZWxhYmVsJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdoYXNobGFiZWwnLCAkdGhpcy0+TGFuZygnaGFzaGxhYmVsJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdjb3VudGVybGFiZWwnLCAkdGhpcy0+TGFuZygnY291bnRlcmxhYmVsJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdkZXNjcmlwdGlvbmxhYmVsJywgJHRoaXMtPkxhbmcoJ2Rlc2NyaXB0aW9ubGFiZWwnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2NyZWF0ZWRsYWJlbCcsICR0aGlzLT5MYW5nKCdjcmVhdGVkbGFiZWwnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2V4cGlyZXNsYWJlbCcsICR0aGlzLT5MYW5nKCdleHBpcmVzbGFiZWwnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3N0YXJ0bGFiZWwnLCAkdGhpcy0+TGFuZygnc3RhcnRzbGFiZWwnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3Zpc2libGVsYWJlbCcsICR0aGlzLT5MYW5nKCd2aXNpYmxlbGFiZWwnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3VzZWV4cGlyYXRpb250ZXh0JywgJHRoaXMtPkxhbmcoJ3VzZWV4cGlyYXRpb24nKSk7DQokc21hcnR5LT5hc3NpZ24oJ3VzZXN0YXJ0dGV4dCcsICR0aGlzLT5MYW5nKCd1c2VzdGFydCcpKTsNCiRzbWFydHktPmFzc2lnbigndGh1bWJfcGF0aGxhYmVsJywgJHRoaXMtPkxhbmcoJ3RodW1ibGFiZWwnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2Fzc29jaWF0ZWRsYWJlbCcsICR0aGlzLT5MYW5nKCdhc3NvY2lhdGVkJykpOw0KJHNtYXJ0eS0+YXNzaWduKCdhY2Nlc3N0eXBlbGFiZWwnLCAkdGhpcy0+TGFuZygnYWNjZXNzdHlwZScpKTsNCiRzbWFydHktPmFzc2lnbigndGVtcGxhdGVfZGV0YWlsbGFiZWwnLCAkdGhpcy0+TGFuZygndGVtcGxhdGVmb3JkZXRhaWwnKSk7DQokc21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlX2Zvcm1sYWJlbCcsICR0aGlzLT5MYW5nKCd0ZW1wbGF0ZWZvcmZvcm0nKSk7DQokc21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlX2VtYWlsbGFiZWwnLCAkdGhpcy0+TGFuZygndGVtcGxhdGVmb3JlbWFpbCcpKTsNCiRzbWFydHktPmFzc2lnbignZmV1Z3JvdXBzbGFiZWwnLCAkdGhpcy0+TGFuZygnZmV1Z3JvdXBzbGFiZWwnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2V4dHJhdGFiJywgJHRoaXMtPkVuZFRhYigpLiR0aGlzLT5TdGFydFRhYignZXh0cmEnLCAkcGFyYW1zKSApOw0KDQokc21hcnR5LT5hc3NpZ24oJ2hpZGRlbicsICR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdmaWxlX2lkJywgJGZpbGVfaWQpKTsNCiRzbWFydHktPmFzc2lnbignc2VsZWN0b3InLCAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnc2VsZWN0b3InLCAkcGFyYW1zWydzZWxlY3RvciddKSk7DQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCBsYW5nKCdzdWJtaXQnKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY2FuY2VsJywgbGFuZygnY2FuY2VsJykpKTsNCg0KJHRhYiA9ICcnOw0KZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7DQoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCJvdmVyYWxsIiwkdGhpcy0+TGFuZygib3ZlcmFsbHRhYmhlYWRlciIpLCgkdGFiPT0ib3ZlcmFsbCIpKSA7DQoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCJhc3NvY2F0aW9ucyIsJHRoaXMtPkxhbmcoImFzc29jYXRpb25zdGFiaGVhZGVyIiksKCR0YWI9PSJhc3NvY2F0aW9ucyIpKTsNCgllY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoImV4dHJhIixsYW5nKCJhZHZhbmNlZCIpLCgkdGFiPT0iZXh0cmEiKSkgOw0KZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOw0KDQplY2hvICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKTsNCgllY2hvICR0aGlzLT5TdGFydFRhYignb3ZlcmFsbCcsICRwYXJhbXMpIDsNCgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2VkaXRmaWxlLnRwbCcpOw0KCWVjaG8gJHRoaXMtPkVuZFRhYigpIDsNCiAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2Fzc29jYXRpb25zJywgJHBhcmFtcykgOw0KICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2VkaXRmaWxlX2Fzc29jLnRwbCcpOw0KICBlY2hvICR0aGlzLT5FbmRUYWIoKSA7CQ0KICBlY2hvICR0aGlzLT5TdGFydFRhYignZXh0cmEnLCAkcGFyYW1zKSA7DQoJI2VjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdGZpbGVfYXNzb2MudHBsJyk7DQoJZWNobyAkdGhpcy0+RW5kVGFiKCkgOw0KZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOw0KDQoNCj8+DQoNCg==]]></data>
	</file>
	<file>
	  <filename>/action.edittemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCmlmICghICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1VzZSBKTURvd25NYW4nKSkNCnsNCgllY2hvICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7DQoJcmV0dXJuOw0KfQ0KDQppZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKQ0Kew0KCSRwYXJhbXMgPSBhcnJheSgnYWN0aXZlX3RhYicgPT4gJ3RlbXBsYXRlcycpOw0KCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMgKTsNCn0NCg0KJHByZWZpeCA9IGlzc2V0KCRwYXJhbXNbJ3ByZWZpeCddKT8kcGFyYW1zWydwcmVmaXgnXTonJzsNCiR0ZW1wbGF0ZV9uYW1lID0gJyc7DQoNCmlmICggaXNzZXQoJHBhcmFtc1snY29udGVudCddKSApDQp7DQoJLy8gdGhlIHRlbXBsYXRlIGhhcyBiZWVuIHN1Ym1pdHRlZA0KCSRlcnJvcnMgPSAwOw0KDQoJaWYoJHBhcmFtc1sndGVtcGxhdGVfbmFtZSddID09ICcnKQ0KCXsNCgkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbm9uYW1lZ2l2ZW4nKSk7DQoJCSRlcnJvcnMrKzsNCgl9DQoNCglpZiggISR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBEb3dubG9hZCBNYW5hZ2VyIFRlbXBsYXRlJykgKQ0KCXsNCgkJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nLCBhcnJheSgnTW9kaWZ5IERvd25sb2FkIE1hbmFnZXIgVGVtcGxhdGUnKSkpOw0KCQkkZXJyb3JzKys7DQoJfQ0KDQoJJGNvbnRlbnQgPSAkcGFyYW1zWydjb250ZW50J107DQoJJHRlbXBsYXRlX25hbWUgPSAkcGFyYW1zWyd0ZW1wbGF0ZV9uYW1lJ107DQoJDQoJaWYoICRlcnJvcnMgPT0gMCAmJiBpc3NldCgkcGFyYW1zWyduZXcnXSkgJiYgJHBhcmFtc1snbmV3J10gKQ0KCXsNCgkJLy8gbmV3IHRlbXBsYXRlDQoJCSRtZXNzYWdlID0gJ3RlbXBsYXRlYWRkZWQnOw0KCQkkdGVtcGxhdGVfbmFtZSA9IG11bmdlX3N0cmluZ190b191cmwoJHRlbXBsYXRlX25hbWUpOw0KCQkvLyBjaGVjayBpZiB0aGUgbmFtZSBhbHJlYWR5IGV4aXN0czoNCgkJJGFsbHRlbXBsYXRlcyA9ICR0aGlzLT5MaXN0VGVtcGxhdGVzKCR0aGlzLT5HZXROYW1lKCkpOw0KCQlpZihpbl9hcnJheSgkcHJlZml4LiR0ZW1wbGF0ZV9uYW1lLCAkdGhpcy0+TGlzdFRlbXBsYXRlcygkdGhpcy0+R2V0TmFtZSgpKSkpDQoJCXsNCgkJCWVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ2FscmVhZHlleGlzdCcpKTsNCgkJCSRlcnJvcnMrKzsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCSR0aGlzLT5TZW5kRXZlbnQoJ0pNRG93bk1hblRlbXBsYXRlQWRkZWQnLCBhcnJheSgndGVtcGxhdGVfbmFtZScgPT4gJHRlbXBsYXRlX25hbWUsICdjb250ZW50JyA9PiAkY29udGVudCwgJ3ByZWZpeCcgPT4gJHByZWZpeCkpOw0KCQl9DQoJfQ0KCWVsc2UNCgl7DQoJCS8vIGV4aXNpdGluZyB0ZW1wbGF0ZQ0KCQkkbWVzc2FnZSA9ICd0ZW1wbGF0ZXVwZGF0ZWQnOw0KCQkvLyBmb3JjZSBhIGNhY2hlIGNsZWFyPw0KCQkkdGhpcy0+RGVsZXRlVGVtcGxhdGUoJHByZWZpeC4kdGVtcGxhdGVfbmFtZSwgJHRoaXMtPkdldE5hbWUoKSk7DQoJCSR0aGlzLT5TZW5kRXZlbnQoJ0pNRG93bk1hblRlbXBsYXRlRWRpdGVkJywgYXJyYXkoJ3RlbXBsYXRlX25hbWUnID0+ICR0ZW1wbGF0ZV9uYW1lLCAnY29udGVudCcgPT4gJGNvbnRlbnQsICdwcmVmaXgnID0+ICRwcmVmaXgpKTsNCgl9DQoJCQ0KCWlmKCRlcnJvcnMgPT0gMCkNCgl7DQoJCSR0aGlzLT5TZXRUZW1wbGF0ZSgkcHJlZml4LiR0ZW1wbGF0ZV9uYW1lLCAkY29udGVudCwgJHRoaXMtPkdldE5hbWUoKSk7DQoJCSRuZXcgPSBmYWxzZTsNCg0KCQlpZihpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkpDQoJCXsNCgkJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCd0YWJfbWVzc2FnZSc9PiAkbWVzc2FnZSwgJ2FjdGl2ZV90YWInID0+ICd0ZW1wbGF0ZXMnKSk7DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQllY2hvICR0aGlzLT5TaG93TWVzc2FnZSgkdGhpcy0+TGFuZygkbWVzc2FnZSkpOw0KCQl9DQoJfQ0KfQ0KZWxzZWlmICggaXNzZXQoJHBhcmFtc1snZnJvbSddKSAmJiAkdG1wID0gJHRoaXMtPkdldFRlbXBsYXRlKCRwcmVmaXguJHBhcmFtc1snZnJvbSddLCAkdGhpcy0+R2V0TmFtZSgpKSApDQp7DQoJLy8gd2UgYXJlIGR1cGxpY2F0aW5nIGFuIGV4aXN0aW5nIHRlbXBsYXRlDQoJJGNvbnRlbnQgPSAkdG1wOw0KCSRuZXcgPSB0cnVlOw0KfQ0KZWxzZWlmICggaXNzZXQoJHBhcmFtc1sndGVtcGxhdGVfbmFtZSddKSAmJiAkdG1wID0gJHRoaXMtPkdldFRlbXBsYXRlKCRwcmVmaXguJHBhcmFtc1sndGVtcGxhdGVfbmFtZSddLCAkdGhpcy0+R2V0TmFtZSgpKSApDQp7DQoJLy8gd2UgYXJlIGVkaXRpbmcgYW4gZXhpc3RpbmcgdGVtcGxhdGUNCgkkY29udGVudCA9ICR0bXA7DQoJJHRlbXBsYXRlX25hbWUgPSAkcGFyYW1zWyd0ZW1wbGF0ZV9uYW1lJ107DQoJJG5ldyA9IGZhbHNlOw0KfQ0KZWxzZQ0Kew0KCS8vIHdlIGFyZSBjcmVhdGluZyBhIG5ldyB0ZW1wbGF0ZQ0KCS8vIHdlIGdldCBhIGRlZmF1bHQgY29udGVudCBmb3IgdGhlIG5ldyB0ZW1wbGF0ZQ0KCSRjb250ZW50ID0gJHRoaXMtPkdldFRlbXBsYXRlRnJvbUZpbGUoJHByZWZpeC4nZGVmYXVsdCcpOw0KCS8vIGRlZmF1bHQgdGVtcGxhdGVzLCBpZiBhbnksIHNob3VsZCBiZSBuYW1lZCAicHJlZml4X2RlZmF1bHQudHBsIg0KCSRuZXcgPSB0cnVlOw0KfQ0KDQovLyBmb3JtIGRpc3BsYXkNCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdlZGl0dGVtcGxhdGUnLCAkcmV0dXJuaWQpKTsNCiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dGNvbnRlbnQnLCAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoZmFsc2UsICRpZCwgJGNvbnRlbnQsICdjb250ZW50JywgJycsICcnLCAnJywgJycsICcyMCcsICc1JykpOw0KJHNtYXJ0eS0+YXNzaWduKCdpbnB1dHRlbXBsYXRlX25hbWUnLCAkbmV3PyR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAndGVtcGxhdGVfbmFtZScsICR0ZW1wbGF0ZV9uYW1lLCAzMCwgNjQpOiR0ZW1wbGF0ZV9uYW1lLiR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICd0ZW1wbGF0ZV9uYW1lJywgJHRlbXBsYXRlX25hbWUpKTsNCiRzbWFydHktPmFzc2lnbignaGVscF90ZW1wbGF0ZV92YXJpYWJsZXMnLCAkdGhpcy0+TGFuZygkcHJlZml4Lid0ZW1wbGF0ZWhlbHAnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2hlbHBfdGVtcGxhdGVfZ2VuZXJhbCcsICR0aGlzLT5MYW5nKCdnZW5lcmFsX3RlbXBsYXRlaGVscCcpKTsNCiRzbWFydHktPmFzc2lnbignY29udGVudGxhYmVsJywgJHRoaXMtPkxhbmcoJ2NvbnRlbnRsYWJlbCcpKTsNCiRzbWFydHktPmFzc2lnbigndGVtcGxhdGVfbmFtZWxhYmVsJywgJHRoaXMtPkxhbmcoJ3RlbXBsYXRlX25hbWVsYWJlbCcpKTsNCiRzbWFydHktPmFzc2lnbignaGlkZGVuJywgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ25ldycsICRuZXcpLiR0aGlzLT5DcmVhdGVJbnB1dEhpZGRlbigkaWQsICdwcmVmaXgnLCAkcHJlZml4KSk7DQokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCBsYW5nKCdzdWJtaXQnKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdhcHBseScsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdhcHBseScsIGxhbmcoJ2FwcGx5JykpKTsNCiRzbWFydHktPmFzc2lnbignY2FuY2VsJywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2NhbmNlbCcsIGxhbmcoJ2NhbmNlbCcpKSk7DQoNCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdHRlbXBsYXRlLnRwbCcpOw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/action.import_from_dm.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmKCFpc19vYmplY3QoQGNtc21zKCkpKSBleGl0Ow0KDQokZXJyb3IgPSAkbWVzc2FnZSA9ICcnOw0KDQp0cnkNCnsNCiAgam1kbV9pbnN0YWxsX3V0aWxzOjpDb3B5RE1EQigpOw0KICANCiAgIyBhbGwgaXMgZ29vZA0KICAkbWVzc2FnZSA9ICR0aGlzLT5MYW5nKCdpbXBvcnRfc3VjY2VzcycpOw0KICBhdWRpdCgkaWQsICR0aGlzLT5HZXROYW1lKCksICRtZXNzYWdlKTsNCn0NCmNhdGNoIChFeGNlcHRpb24gJGUpDQp7DQogICRlcnJvciA9ICRlLT5nZXRNZXNzYWdlKCk7DQogIGF1ZGl0KCRpZCwgJHRoaXMtPkdldE5hbWUoKSwgJGVycm9yKTsNCn0NCg0KJHBhcmFtcyA9IGFycmF5KA0KICAgICAgICAgICAgICAgICAgJ3RhYl9tZXNzYWdlJyA9PiAkbWVzc2FnZSwgDQogICAgICAgICAgICAgICAgICAnZXJyb3InID0+ICRlcnJvciwgDQogICAgICAgICAgICAgICAgICAnYWN0aXZlX3RhYicgPT4gJ3NldHRpbmdzJw0KICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgDQokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zKTsgIA0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/action.reorder.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEpNRG93bk1hbiAKIyBWZXJzaW9uOiAxLjAKIyBBdXRob3I6IEpvIE1vcmcKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIAojIFZlcnNpb246IDEuMC1SQzMKIyBBdXRob3I6IFN6eW1vbiDFgXVrYXN6Y3p5awojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEpNRG93bk1hbgojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwoKaWYgKCEgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignVXNlIEpNRG93bk1hbicpKQp7CgllY2hvICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7CglyZXR1cm47Cn0KCmlmIChpc3NldCgkcGFyYW1zWydjYW5jZWwnXSkgKQp7CgkkcGFyYW1zID0gYXJyYXkoJ2FjdGl2ZV90YWInID0+ICdjYXRlZ29yaWVzJyk7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zICk7Cn0KZWxzZSBpZiAoICFpc3NldCgkcGFyYW1zWydwcmlvcml0eSddKSAmJiAgaXNzZXQoJHBhcmFtc1snY2F0ZWdvcnlfaWQnXSkpCnsKCgkjUHV0IHRvZ2V0aGVyIGEgbGlzdCBvZiBjdXJyZW50IGNhdGVnb3JpZXMuLi4KCSRlbnRyeWFycmF5ID0gYXJyYXkoKTsKCQoJJHF1ZXJ5ID0gIlNFTEVDVCBmYy5maWxlX2lkLCBmLm5hbWUsIGZjLml0ZW1fb3JkZXIgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ptZG93bm1hbl9maWxlc19jYXRlZ29yeSBmYyBMRUZUIEpPSU4gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9qbWRvd25tYW5fZmlsZXMgZiBPTiBmYy5maWxlX2lkID0gZi5maWxlX2lkICBXSEVSRSBmYy5jYXRlZ29yeV9pZCA9ID8gT1JERVIgQlkgZmMuaXRlbV9vcmRlciwgZmMuZmlsZV9pZDsgIjsKLy9+IGVjaG8gJHF1ZXJ5OwoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJHBhcmFtc1snY2F0ZWdvcnlfaWQnXSkgKTsKCS8vfiAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsKCQoJJHJvd2NsYXNzID0gJ3JvdzEnOwoJLy9+IHZhcl9kdW1wKCRkYnJlc3VsdCk7Cgl3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpCgl7CgkJJG9uZXJvdyA9IG5ldyBzdGRDbGFzcygpOwoJCgkJJGRlcHRoID0gY291bnQoZXhwbG9kZSgnXC4nLCAkcm93WydoaWVyYXJjaHknXSkpOwoJCgkJJG9uZXJvdy0+aWQgPSAkcm93WydmaWxlX2lkJ107CgkJJG9uZXJvdy0+bmFtZSA9IHN0cl9yZXBlYXQoJyZuYnNwOyZndDsmbmJzcDsnLCAkZGVwdGgtMSkuJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdGZpbGUnLCAkcmV0dXJuaWQsICRyb3dbJ25hbWUnXSwgYXJyYXkoJ2ZpbGVfaWQnID0+JHJvd1snZmlsZV9pZCddKSk7CgkJJG9uZXJvdy0+cHJpb3JpdHkgPSAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3ByaW9yaXR5WycuJHJvd1snZmlsZV9pZCddLiddJywgKHN0cmluZykoaW50KSRyb3dbJ2l0ZW1fb3JkZXInXSAsIDMsIDMpOwoJCSRvbmVyb3ctPnJvd2NsYXNzID0gJHJvd2NsYXNzOwoJCSRlbnRyeWFycmF5W10gPSAkb25lcm93OwoJCgkJKCRyb3djbGFzcz09InJvdzEiPyRyb3djbGFzcz0icm93MiI6JHJvd2NsYXNzPSJyb3cxIik7Cgl9Cgkkc21hcnR5LT5hc3NpZ24oJ3N0YXJ0Zm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAncmVvcmRlcicsICRyZXR1cm5pZCwgJ3Bvc3QnKSk7Cgkkc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCSRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkZW50cnlhcnJheSk7Cgkkc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRlbnRyeWFycmF5KSk7Cgkkc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCBsYW5nKCdzdWJtaXQnKSkpOwoJJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY2FuY2VsJywgbGFuZygnY2FuY2VsJykpKTsKCSRzbWFydHktPmFzc2lnbignaGlkZGVuJywgJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKCRpZCwgJ2NhdGVnb3J5X2lkJywgJHBhcmFtc1snY2F0ZWdvcnlfaWQnXSkpOwoJJHNtYXJ0eS0+YXNzaWduKCdwcmlvcml0eXRleHQnLCAkdGhpcy0+bGFuZygncmVvcmRlcl9wcmlvcml0eScpKTsKCSRzbWFydHktPmFzc2lnbignaXRlbXRleHQnLCBsYW5nKCJmaWxlcyIpKTsKCSNTZXR1cCBsaW5rcwoJCgkjRGlzcGxheSB0ZW1wbGF0ZQoJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdyZW9yZGVyaXRlbS50cGwnKTsKfQplbHNlIGlmICggaXNzZXQoJHBhcmFtc1sncHJpb3JpdHknXSkgJiYgIGlzc2V0KCRwYXJhbXNbJ2NhdGVnb3J5X2lkJ10pKQp7Cglmb3JlYWNoKCAkcGFyYW1zWydwcmlvcml0eSddIGFzICRrZXkgPT4gJHZhciApCgl7CgkJJHF1ZXJ5ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2ptZG93bm1hbl9maWxlc19jYXRlZ29yeSAgU0VUIGl0ZW1fb3JkZXI9ID8gV0hFUkUgZmlsZV9pZCA9ID8gQU5EIGNhdGVnb3J5X2lkID0gPyc7CgkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoKChpbnQpJHZhciklMTAwLChpbnQpJGtleSwoaW50KSRwYXJhbXNbJ2NhdGVnb3J5X2lkJ10pKTsKCX0KCSRwYXJhbXMgPSBhcnJheSgnYWN0aXZlX3RhYicgPT4gJ2NhdGVnb3JpZXMnKTsKCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMgKTsKfQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.reordercategory.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEpNRG93bk1hbiAKIyBWZXJzaW9uOiAxLjAKIyBBdXRob3I6IEpvIE1vcmcKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIAojIFZlcnNpb246IDEuMC1SQzMKIyBBdXRob3I6IFN6eW1vbiDFgXVrYXN6Y3p5awojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEpNRG93bk1hbgojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwppZiAoISAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgSk1Eb3duTWFuJykpCnsKCWVjaG8gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKCXJldHVybjsKfQppZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pICkKewoJJHBhcmFtcyA9IGFycmF5KCd0YWInID0+ICdjYXRlZ29yaWVzJyk7CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkcGFyYW1zICk7Cn0KZWxzZSBpZiAoICFpc3NldCgkcGFyYW1zWydwcmlvcml0eSddKSApCnsKCgkjUHV0IHRvZ2V0aGVyIGEgbGlzdCBvZiBjdXJyZW50IGNhdGVnb3JpZXMuLi4KCSRlbnRyeWFycmF5ID0gYXJyYXkoKTsKCQoJJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9qbWRvd25tYW5fY2F0ZWdvcmllcyBPUkRFUiBCWSBoaWVyYXJjaHlfcHJpb3JpdHkiOwoJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgkKCSRyb3djbGFzcyA9ICdyb3cxJzsKCQoJd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQoJewoJCSRvbmVyb3cgPSBuZXcgc3RkQ2xhc3MoKTsKCQoJCSRkZXB0aCA9IGNvdW50KHNwbGl0KCdcLicsICRyb3dbJ2hpZXJhcmNoeSddKSk7CgkKCQkkb25lcm93LT5pZCA9ICRyb3dbJ2NhdGVnb3J5X2lkJ107CgkJJG9uZXJvdy0+bmFtZSA9IHN0cl9yZXBlYXQoJyZuYnNwOyZndDsmbmJzcDsnLCAkZGVwdGgtMSkuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdwcmlvcml0eVsnLiRyb3dbJ2NhdGVnb3J5X2lkJ10uJ10nLCAoc3RyaW5nKSgoaW50KSRyb3dbJ3ByaW9yaXR5J10gLSAxMDApICwgMywgMykuICcgJy4kdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0Y2F0ZWdvcnknLCAkcmV0dXJuaWQsICRyb3dbJ25hbWUnXSwgYXJyYXkoJ2NhdGVnb3J5X2lkJyA9PiRyb3dbJ2NhdGVnb3J5X2lkJ10pKTsKCQkkb25lcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsKCQkkZW50cnlhcnJheVtdID0gJG9uZXJvdzsKCQoJCSgkcm93Y2xhc3M9PSJyb3cxIj8kcm93Y2xhc3M9InJvdzIiOiRyb3djbGFzcz0icm93MSIpOwoJfQoJJHNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ3Jlb3JkZXJjYXRlZ29yeScsICRyZXR1cm5pZCwgJ3Bvc3QnKSk7Cgkkc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCSRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkZW50cnlhcnJheSk7Cgkkc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRlbnRyeWFycmF5KSk7Cgkkc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCBsYW5nKCdzdWJtaXQnKSkpOwoJJHNtYXJ0eS0+YXNzaWduKCdjYW5jZWwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnY2FuY2VsJywgbGFuZygnY2FuY2VsJykpKTsKCSRzbWFydHktPmFzc2lnbigncHJpb3JpdHl0ZXh0JywgJHRoaXMtPmxhbmcoJ3Jlb3JkZXJfcHJpb3JpdHknKSk7Cgkkc21hcnR5LT5hc3NpZ24oJ2NhdGVnb3J5dGV4dCcsICR0aGlzLT5MYW5nKCJjYXRlZ29yaWVzdGFiaGVhZGVyIikpOwoJI1NldHVwIGxpbmtzCgkKCSNEaXNwbGF5IHRlbXBsYXRlCgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ3Jlb3JkZXJjYXRlZ29yeS50cGwnKTsKfQplbHNlCnsKCWZvcmVhY2goICRwYXJhbXNbJ3ByaW9yaXR5J10gYXMgJGtleSA9PiAkdmFyICkKCXsKCQkkcXVlcnkgPSAnVVBEQVRFICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfam1kb3dubWFuX2NhdGVnb3JpZXMgIFNFVCBwcmlvcml0eSA9ID8gV0hFUkUgY2F0ZWdvcnlfaWQgPSA/JzsKCQkkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgoKGludCkkdmFyKSUxMDArMTAwLChpbnQpJGtleSkpOwoJfQoJJHRoaXMtPlVwZGF0ZUhpZXJhcmNoeVBvc2l0aW9ucygpOwoJJHBhcmFtcyA9IGFycmF5KCdhY3RpdmVfdGFiJyA9PiAnY2F0ZWdvcmllcycpOwoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHBhcmFtcyApOwp9Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.save_admin_prefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCmlmICghICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1VzZSBKTURvd25NYW4nKSkNCnsNCgllY2hvICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7DQoJcmV0dXJuOw0KfQ0KaWYoaXNzZXQgKCRwYXJhbXNbJ2Rvd25sb2FkX2RpciddKSkNCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGlyJywgJHBhcmFtc1snZG93bmxvYWRfZGlyJ10pOw0KJHBhcmFtc1snc2VhcmNoX2V4cGlyZXMnXSA9IGlzc2V0KCRwYXJhbXNbJ3NlYXJjaF9leHBpcmVzJ10pICYmICRwYXJhbXNbJ2Rvd25sb2FkX3NjYW5fcmVjdXJzJ10gPT0gdHJ1ZTsNCmlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZXhwaXJlZF9zZWFyY2hhYmxlJywgdHJ1ZSkgIT0gJHBhcmFtc1snc2VhcmNoX2V4cGlyZXMnXSkNCnsNCgkkdGhpcy0+U2VhcmNoUmVpbmRleCgpOw0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdleHBpcmVkX3NlYXJjaGFibGUnLCAkcGFyYW1zWydzZWFyY2hfZXhwaXJlcyddKTsNCn0NCmlmKGlzc2V0ICgkcGFyYW1zWydkb3dubG9hZF9zY2FuJ10pKQ0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdzY2FuJywgJHBhcmFtc1snZG93bmxvYWRfc2NhbiddKTsNCg0KaWYoaXNzZXQoJHBhcmFtc1snZGlyX3RodW1icyddKSApDQp7DQoJJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCJkaXJfdGh1bWJzIiwgDQoJCXN0cl9yZXBsYWNlKCRjb25maWdbJ3VwbG9hZHNfcGF0aCddLkRJUkVDVE9SWV9TRVBBUkFUT1IsJycsIHJlYWxwYXRoKCRjb25maWdbJ3VwbG9hZHNfcGF0aCddLkRJUkVDVE9SWV9TRVBBUkFUT1IuJHBhcmFtc1snZGlyX3RodW1icyddICkgKS5ESVJFQ1RPUllfU0VQQVJBVE9SIC8vImltYWdlcy9KTURvd25NYW5UaHVtYnMvIg0KCSk7DQp9DQokcGFyYW1zWyd0aHVtYnNfYXV0byddID0gaXNzZXQgKCRwYXJhbXNbJ3RodW1ic19hdXRvJ10pICYmICRwYXJhbXNbJ3RodW1ic19hdXRvJ10gPT0gdHJ1ZTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCJ0aHVtYnNfYXV0byIsICRwYXJhbXNbJ3RodW1ic19hdXRvJ10gKTsNCg0KaWYoaXNzZXQoJHBhcmFtc1sndGh1bWJzX3NpemUnXSkgJiYgKGludCkkcGFyYW1zWyd0aHVtYnNfc2l6ZSddICA+IDUgKSANCgkkdGhpcy0+U2V0UHJlZmVyZW5jZSgidGh1bWJzX3NpemUiLCAoaW50KSRwYXJhbXNbJ3RodW1ic19zaXplJ10gKTsNCg0KJHBhcmFtc1snZG93bmxvYWRfc2Nhbl9yZWN1cnMnXSA9IGlzc2V0ICgkcGFyYW1zWydkb3dubG9hZF9zY2FuX3JlY3VycyddKSAmJiAkcGFyYW1zWydkb3dubG9hZF9zY2FuX3JlY3VycyddID09IHRydWU7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnc2Nhbl9yZWN1cnMnLCAkcGFyYW1zWydkb3dubG9hZF9zY2FuX3JlY3VycyddKTsNCg0KaWYoaXNzZXQgKCRwYXJhbXNbJ2Rvd25sb2FkX3RlbXBsYXRlJ10pKQ0KCSR0aGlzLT5TZXRUZW1wbGF0ZSgnZGVmYXVsdF9kb3dubG9hZF90ZW1wbGF0ZScsJHBhcmFtc1snZG93bmxvYWRfdGVtcGxhdGUnXSk7DQoNCiRwYXJhbXNbJ2FkbWluX3d5c2l3eWcnXSA9IGlzc2V0ICgkcGFyYW1zWydhZG1pbl93eXNpd3lnJ10pICYmICRwYXJhbXNbJ2FkbWluX3d5c2l3eWcnXSA9PSB0cnVlOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoImFkbWluX3d5c2l3eWciLCAkcGFyYW1zWydhZG1pbl93eXNpd3lnJ10gKTsNCg0KDQokdGhpcy0+RG9BY3Rpb24oJ2RlZmF1bHRhZG1pbicsICRpZCwgYXJyYXkoICd0YWJfbWVzc2FnZSc9PidwcmVmc3VwZGF0ZWQnLCAnYWN0aXZlX3RhYicgPT4gInByZWZlcmVuY2VzIikpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.scanfornewfiles.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCmlmICghICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1VzZSBKTURvd25NYW4nKSkNCnsNCgllY2hvICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7DQoJcmV0dXJuOw0KfQ0KDQokZW50cnlhcnJheSA9IGFycmF5KCk7DQokcXVlcnkgPSAnc2VsZWN0IHNlcnZlcl9uYW1lIGZyb20gJy5jbXNfZGJfcHJlZml4KCkgLidtb2R1bGVfam1kb3dubWFuX2ZpbGVzJzsNCiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KJHJvd2NsYXNzID0gJ3JvdzEnOw0KDQokcGF0aHMgPSBhcnJheSgpOw0Kd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQ0KICAkcGF0aHNbXSA9IHJlYWxwYXRoKCRyb3dbJ3NlcnZlcl9uYW1lJ10pOw0KDQokcmVjdXJzICA9IChib29sKSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Nhbl9yZWN1cnMnKSA7DQoNCiRzY2FuX2FycmF5ID0gYXJyYXkoKTsNCiRkb3dubG9hZF9zY2FuID0gZXhwbG9kZSgiOyIsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3NjYW4nKSk7DQoNCmlmKGNvdW50KCRkb3dubG9hZF9zY2FuKT4wKQ0KICBmb3JlYWNoKCAkZG93bmxvYWRfc2NhbiBhcyAkZiApDQoJJHNjYW5fYXJyYXkgPSBhcnJheV9tZXJnZSggJHNjYW5fYXJyYXkgLCR0aGlzLT5nZXREaXJlY3RvcnlUcmVlKCAkY29uZmlnWydyb290X3BhdGgnXS5ESVJFQ1RPUllfU0VQQVJBVE9SLiRmLCAkcmVjdXJzICkpIDsNCg0KJGRpZmYgPSBhcnJheV9kaWZmKCRzY2FuX2FycmF5LCRwYXRocyk7DQpmb3JlYWNoKCAkZGlmZiBhcyAkayA9PiAkdikNCiAgJGRpZmZbJGtdID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnYWRkZmlsZScsICRyZXR1cm5pZCwgJHYsIGFycmF5KCdmaWxlX3BhdGgnPT4gYmFzZTY0X2VuY29kZSgNCglzdWJzdHIoJHYsMCxzdHJsZW4oJGNvbmZpZ1sncm9vdF9wYXRoJ10pKT09JGNvbmZpZ1sncm9vdF9wYXRoJ10/c3Vic3RyKCR2LHN0cmxlbigkY29uZmlnWydyb290X3BhdGgnXSkrMSk6JHYNCgkpKSk7DQoNCmlmKCBjb3VudCgkZGlmZikgPT0gMCApIA0Kew0KICAkcGFyYW1zID0gYXJyYXkoJ3RhYl9tZXNzYWdlJz0+ICdzY2Fubm9uZXcnLCAnYWN0aXZlX3RhYicgPT4gJ2ZpbGVzJyk7DQogICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOw0KfQ0KDQokc21hcnR5LT5hc3NpZ24oJ2Zvcm1pZCcsICRpZCk7DQokc21hcnR5LT5hc3NpZ24oJ2xhYmVsX25ld2ZpbGVzJywgJHRoaXMtPkxhbmcoJ3NjYW5yZXN1bHQnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2NhbicpLCBjb3VudCgkZGlmZikpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdzdGFydGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2FkZGZpbGUnLCAkcmV0dXJuaWQsICdwb3N0JywgJ211bHRpcGFydC9mb3JtLWRhdGEnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2VuZGZvcm0nLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsNCiRzbWFydHktPmFzc2lnbignc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsIGxhbmcoJ3N1Ym1pdCcpKSk7DQokc21hcnR5LT5hc3NpZ24oJ2NhbmNlbCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjYW5jZWwnLCBsYW5nKCdjYW5jZWwnKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdiYWNrbGluaycsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCAsICcmbGFxdW87ICcuJHRoaXMtPmxhbmcoJ2JhY2snKSApKTsNCiRzbWFydHktPmFzc2lnbignZGlmZicsICRkaWZmKTsNCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnc2NhbmZpbGUudHBsJyk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.selector.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEpNRG93bk1hbiAKIyBWZXJzaW9uOiAxLjAKIyBBdXRob3I6IEpvIE1vcmcKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIAojIFZlcnNpb246IDEuMC1SQzMKIyBBdXRob3I6IFN6eW1vbiDFgXVrYXN6Y3p5awojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEpNRG93bk1hbgojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwovL3Zhcl9kdW1wKCRwYXJhbXMpOwokdGhpcy0+VXBkYXRlQXNzb2NpYXRpb25BZ3JlZ2F0aW9uKCk7Ci8qCiAqIFBBUlNJTkcgc2VsZWN0b3IKICoKICogSGVyZSBjb21lIGV2ZXJ5dGhpbmcgd2hhdCBoYXMgdG8gZG8gd2l0aCBzZWxlY3RvciwKICogaWYgc2VsZWN0b3IgcGFyYW1ldGVyIGlzIHNldCB0aGUgb3RoZXIgcGFyYW1ldGVycwogKiBhcmUgb21uaXRlZAoqLwoKaWYoIGVtcHR5KCAkcGFyYW1zWydzZWxlY3RvciddICkgKQoJZWNobyAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPmxhbmcoJ25vY2F0ZWdvcnlzZWwnKSk7Cgokc2hvd2hlYWRlcnMgPSBmYWxzZTsKCi8vIHBhcnNpbmcgdGhlIGNhdGVnb3J5IHNlbGVjdG9yCiRjYXRlZ29yeWlkICA9IGh0bWxfZW50aXR5X2RlY29kZSggJHBhcmFtc1snc2VsZWN0b3InXSApOwoKJHNxbF9wcmVmaXggPSAnU0VMRUNUIGZpbGVfaWQgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2ptZG93bm1hbl9maWxlcyBXSEVSRSAnOwokc3FsID0gJHRoaXMtPkdldEZpbGVTdGRXaGVyZSgpLicgQU5EICcuJHRoaXMtPnNlbGVjdG9yVG9TUUwoJGNhdGVnb3J5aWQpOyAvLyBzZXQgdGhlIGZpbGVzIHdoZXJlCgokcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2ptZG93bm1hbl9maWxlcwoJCVdIRVJFICcuJHNxbC4nIE9SREVSIEJZIG5hbWUnOwoKJGZpbGVzX2NhdGVnb3JpZXMgPSAkdGhpcy0+R2V0RmlsZUNhdGVnb3JpZXMoJ2ZpbGVfaWQgSU4gKCcuJHNxbF9wcmVmaXguJHNxbC4nKScpOwoKJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7CgovLyBhbHNvIHVzZWQgYnkgYWN0aW9uIGRlZmF1bHQKaW5jbHVkZSgnZnVuY3Rpb24uYXNzaW5nZmlsZXMucGhwJyk7CgokdGVtcGxhdGVuYW1lID0gJyc7CmlmKCBpc3NldCggJHBhcmFtc1sndGVtcGxhdGUnXSApICkJJHRlbXBsYXRlbmFtZSA9ICRwYXJhbXNbJ3RlbXBsYXRlJ107Ci8vIFRFTVBPUkFSWSA6IEkgQVNTVU1FIFRIRSBERUZBVUxUIEFDVElPTiBXSUxMIEJFIFRIRSBMSVNUIEFDVElPTgppZiggJHRlbXBsYXRlbmFtZSAhPSAnJyAmJiAkdGVtcGxhdGUgPSAkdGhpcy0+R2V0VGVtcGxhdGUoJ2xpc3RfJy4kdGVtcGxhdGVuYW1lKSApCnsKCS8vIHRoZSB0ZW1wbGF0ZSBleGlzdHMsIHdlJ3JlIGdvaW5nIHRvIHVzZSBpdAp9CmVsc2UKewoJLy8gbm8gdGVtcGxhdGUgc3BlY2lmaWVkLCBvciB0ZW1wbGF0ZSBkb2Vzbid0IGV4aXN0Li4uIHdlIGdldCB0aGUgZGVmYXVsdCBvbmUKCSR0ZW1wbGF0ZW5hbWUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9saXN0X3RlbXBsYXRlJywgJycpOwoJJHRlbXBsYXRlID0gJHRoaXMtPkdldFRlbXBsYXRlKCR0ZW1wbGF0ZW5hbWUpOwp9CgojRGlzcGxheSB0ZW1wbGF0ZQplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdGVtcGxhdGUpOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/action.sendemail.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCiRjbXNtYWlsZXIgPSBjbXNtcygpLT5HZXRNb2R1bGVJbnN0YW5jZSgnQ01TTWFpbGVyJyk7DQppZighaXNfb2JqZWN0KCRjbXNtYWlsZXIpKQkJZGllKCR0aGlzLT5sYW5nKCdlcnJvcicpKTsJLy8gZHVlIHRvIHByaW9yIGNoZWNraW5nLCB0aGlzIHNob3VsZG4ndCBiZSBoYXBwZW5pbmcNCiMgYW5kIG5vdCBhIG5pY2Ugd2F5IHRvIGhhbmRsZSBpdCBlaXRoZXIgSk0NCg0KJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCiRmaWxlID0gZmFsc2U7DQoNCmlmKGlzc2V0KCRwYXJhbXNbJ2ZpbGVfaWQnXSkpDQp7DQoJJGZpbGVfaWQgPSAoaW50KSAkcGFyYW1zWydmaWxlX2lkJ107DQoJJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9qbWRvd25tYW5fZmlsZXMgV0hFUkUgZmlsZV9pZCA9ID8gJzsNCgkkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LGFycmF5KCRmaWxlX2lkKSk7DQoJJHNob3doZWFkZXJzID0gZmFsc2U7DQoJaW5jbHVkZSgnZnVuY3Rpb24uYXNzaW5nZmlsZXMucGhwJyk7DQoJJGZpbGUgPSAkb25lcm93Ow0KfQ0KDQovLyBjbGVhbmluZyBwcmVmaXhlcw0KJHByeCA9ICdzbV8nOw0KZm9yZWFjaCgkcGFyYW1zIGFzICRrID0+ICR2KQ0KCWlmKCBzdHJpcG9zKCRrLCAkcHJ4KSA9PT0gMCApDQoJew0KCQl1bnNldCgkcGFyYW1zWyRrXSk7DQoJCSRwYXJhbXNbc3Vic3RyKCRrLHN0cmxlbigkcHJ4KSldID0gJHY7DQoJfQ0KaWYoISRmaWxlKQ0Kew0KCSR0aGlzLT5EaXNwbGF5RG93bmxvYWRFcnJvclBhZ2UoJHRoaXMtPmxhbmcoJ25vZmlsZScpKTsNCn0NCmVsc2UNCnsNCglpZighcHJlZ19tYXRjaCgiL14oW1x3fFwufFwtfF9dKylAKFtcd3x8XC18X10rKVwuKFtcd3xcLnxcLXxfXSspJC9pIiwgJHBhcmFtc1snZW1haWwnXSkpDQoJew0KCQkvLyB0aGUgYmFzaWMgY2hlY2tpbmcgd2FzIGRvbmUgdGhyb3VnaCBqcw0KCQkkdGhpcy0+RGlzcGxheURvd25sb2FkRXJyb3JQYWdlKCR0aGlzLT5sYW5nKCdpbnZhbGlkZW1haWwnKSk7DQoJfQ0KCWVsc2UNCgl7DQoJCS8vIGNoZWNrIGlmIHRoZSB1c2VyIGV4aXN0cw0KCQkkcXVlcnkgPSAiU0VMRUNUIHVzZXJfaWQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ptZG93bm1hbl91c2VycyBXSEVSRSBlbWFpbD0/IjsNCgkJJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcGFyYW1zWydlbWFpbCddKSk7DQoJCWlmICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkNCgkJew0KCQkJJHVzZXJpZCA9ICRyb3dbJ3VzZXJfaWQnXTsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCS8vIGlmIG5vdCwgYWRkIG9uZQ0KCQkJJHVzZXJpZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfam1kb3dubWFuX3VzZXJzX3NlcSIpOw0KCQkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfam1kb3dubWFuX3VzZXJzICh1c2VyX2lkLGZpcnN0bmFtZSxsYXN0bmFtZSxlbWFpbCxtYWlsaW5nbGlzdCkgVkFMVUVTICg/LD8sPyw/LD8pIjsNCgkJCSR2YWx1ZXMgPSBhcnJheSgkdXNlcmlkLCBzdHJfcmVwbGFjZSgnLCcsJycsJHBhcmFtc1snZmlyc3RuYW1lJ10pLCBzdHJfcmVwbGFjZSgnLCcsJycsJHBhcmFtc1snbGFzdG5hbWUnXSksICRwYXJhbXNbJ2VtYWlsJ10sIGlzc2V0KCRwYXJhbXNbJ21haWxpbmdsaXN0J10pPyRwYXJhbXNbJ21haWxpbmdsaXN0J106MCk7DQoJCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwkdmFsdWVzKTsNCgkJCQ0KCQl9DQoJCQ0KCQkvLyBjcmVhdGUgdGhlIGRvd25sb2FkDQoJCSRoYXNoa2V5ID0gJGZpbGVfaWQuJHVzZXJpZC5tZDUodW5pcWlkKHJhbmQoKSwxKSkuZGF0ZSgnWW1kJyk7DQoJCSRkb3dubG9hZF9pZCA9ICRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfam1kb3dubWFuX2Rvd25sb2Fkc19zZXEiKTsNCgkJJHF1ZXJ5ID0gIklOU0VSVCBJTlRPICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfam1kb3dubWFuX2Rvd25sb2FkcyAoIGRvd25sb2FkX2lkLCB1c2VyX2lkLCB1c2VyX3R5cGUsIGZpbGVfaWQsIGhhc2hrZXksIGRvd25sb2FkZWQpDQoJCQlWQUxVRVMoPyw/LDIsPyw/LDApOyI7DQoJCSR2YWx1ZXMgPSBhcnJheSgkZG93bmxvYWRfaWQsJHVzZXJpZCwkZmlsZV9pZCwkaGFzaGtleSk7DQoJCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCR2YWx1ZXMpOw0KDQoJCS8vIHJldHJpZXZlIHRoZSBlbWFpbCB0ZW1wbGF0ZQ0KCQlpZiggJGZpbGUtPnRlbXBsYXRlX2VtYWlsICE9ICcnICYmICR0ZW1wbGF0ZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZSgkZmlsZS0+dGVtcGxhdGVfZW1haWwpICkNCgkJew0KCQkJLy8gdGhlIHRlbXBsYXRlIGV4aXN0cywgd2UncmUgZ29pbmcgdG8gdXNlIGl0DQoJCX0NCgkJZWxzZQ0KCQl7DQoJCQkvLyBubyB0ZW1wbGF0ZSBzcGVjaWZpZWQsIG9yIHRlbXBsYXRlIGRvZXNuJ3QgZXhpc3QuLi4gd2UgZ2V0IHRoZSBkZWZhdWx0IG9uZQ0KCQkJJHRlbXBsYXRlbmFtZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2VtYWlsX3RlbXBsYXRlJywgJycpOw0KCQkJJHRlbXBsYXRlID0gJHRoaXMtPkdldFRlbXBsYXRlKCR0ZW1wbGF0ZW5hbWUpOw0KCQl9DQoNCgkJJGhyZWYgPSAkY29uZmlnWydyb290X3VybCddLiIvbW9kdWxlcy9KTURvd25NYW4vZG93bmxvYWQucGhwP2hhc2hrZXk9Ii4kaGFzaGtleTsNCgkJJHVybCA9ICc8YSBocmVmPSInLiRocmVmLiciID4gJy4kZmlsZS0+bmFtZS4nPC9hPic7DQoNCg0KCQkkc21hcnR5LT5hc3NpZ24oJ2l0ZW0nLCRmaWxlKTsNCgkJJHNtYXJ0eS0+YXNzaWduKCdmaXJzdG5hbWUnLCRwYXJhbXNbJ2ZpcnN0bmFtZSddKTsNCgkJJHNtYXJ0eS0+YXNzaWduKCdsYXN0bmFtZScsJHBhcmFtc1snbGFzdG5hbWUnXSk7DQoJCSRzbWFydHktPmFzc2lnbignZHVybCcsJHVybCk7DQoJCSRzbWFydHktPmFzc2lnbignZGhyZWYnLCRocmVmKTsNCgkJJGVtYWlsYm9keSA9ICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdGVtcGxhdGUpOw0KCQkNCgkJJGNtc21haWxlci0+QWRkQWRkcmVzcygkcGFyYW1zWydlbWFpbCddLCRwYXJhbXNbJ2ZpcnN0bmFtZSddLiIgIi4kcGFyYW1zWydsYXN0bmFtZSddKTsNCgkJJGNtc21haWxlci0+U2V0Qm9keSgkZW1haWxib2R5KTsNCgkJJGNtc21haWxlci0+SXNIVE1MKHRydWUpOw0KCQkkY21zbWFpbGVyLT5TZXRTdWJqZWN0KCR0aGlzLT5MYW5nKCdkb3dubG9hZCcpLic6ICcuJGZpbGUtPm5hbWUpOw0KDQoJCWlmKCRjbXNtYWlsZXItPlNlbmQoKSkNCgkJew0KCQkJLy8gdGhpcyBzaG91bGRuYHQgYmUgZG9uZSB0aGlzIHdheQ0KCQkJZWNobyAnPHA+Jy4kdGhpcy0+TGFuZygnZW1haWxzZW50JykuJzwvcD4nOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJJHRoaXMtPkRpc3BsYXlEb3dubG9hZEVycm9yUGFnZSgkdGhpcy0+TGFuZygnY291bGRub3RzZW5kJykpOw0KCQl9DQoJfQ0KfQ0KDQo/Pg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/action.toggledefaulttemplate.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEpNRG93bk1hbiAKIyBWZXJzaW9uOiAxLjAKIyBBdXRob3I6IEpvIE1vcmcKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIAojIFZlcnNpb246IDEuMC1SQzMKIyBBdXRob3I6IFN6eW1vbiDFgXVrYXN6Y3p5awojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEpNRG93bk1hbgojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwoKaWYgKCEgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignVXNlIEpNRG93bk1hbicpKQp7CgllY2hvICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7CglyZXR1cm47Cn0KCiR0ZW1wbGF0ZV9uYW1lID0gaXNzZXQoJHBhcmFtc1sndGVtcGxhdGVfbmFtZSddKT8kcGFyYW1zWyd0ZW1wbGF0ZV9uYW1lJ106Jyc7CiRwcmVmaXggPSBpc3NldCgkcGFyYW1zWydwcmVmaXgnXSk/JHBhcmFtc1sncHJlZml4J106Jyc7CgppZiggJHRlbXBsYXRlX25hbWUgIT0gJycgJiYgJHByZWZpeCAhPSAnJyApCnsKCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZhdWx0XycuJHByZWZpeC4ndGVtcGxhdGUnLCAkcHJlZml4LiR0ZW1wbGF0ZV9uYW1lKTsKfQoJCiR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdhY3RpdmVfdGFiJyA9PiAndGVtcGxhdGVzJykpOwkKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/data/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/data/2del.dat</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMgZmlsZXMgdG8gZGVsZXRlDQokZmlsZTJkZWwgPSBhcnJheSgNCiMgZmlsZSBvciBmb2xkZXIgICAgLT4gcGF0aCByZWxhdGl2ZSB0byBtb2R1bGUgb3duIGZvbGRlciAjDQonRG94eWZpbGUnICAgICAgICAgID0+ICdsaWI6OmV4dGVybmFsOjpzaW1wbGUtdXBsb2FkJywNCidleGFtcGxlLnBocCcgICAgICAgPT4gJ2xpYjo6ZXh0ZXJuYWw6OnNpbXBsZS11cGxvYWQnLA0KJ2dwbC50eHQnICAgICAgICAgICA9PiAnbGliOjpleHRlcm5hbDo6c2ltcGxlLXVwbG9hZCcsDQondGVzdC5waHAnICAgICAgICAgID0+ICdsaWI6OmV4dGVybmFsOjp2bmNfaHR0cGRvd25sb2FkJywNCidlYXN5cGhwdGh1bWJuYWlsJyAgPT4gJ2xpYicsDQonc2ltcGxlLXVwbG9hZCcgICAgID0+ICdsaWInLA0KJ3ZuY19odHRwZG93bmxvYWQnICA9PiAnbGliJywNCidkb3dubG9hZC5waHAnICAgICAgPT4gJycNCik7DQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/docs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/docs/COPYING</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQ0KICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNw0KDQogQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiA8aHR0cDovL2ZzZi5vcmcvPg0KIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcw0KIG9mIHRoaXMgbGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUNCg0KICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcg0Kc29mdHdhcmUgYW5kIG90aGVyIGtpbmRzIG9mIHdvcmtzLg0KDQogIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhbmQgb3RoZXIgcHJhY3RpY2FsIHdvcmtzIGFyZSBkZXNpZ25lZA0KdG8gdGFrZSBhd2F5IHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIHRoZSB3b3Jrcy4gIEJ5IGNvbnRyYXN0LA0KdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8NCnNoYXJlIGFuZCBjaGFuZ2UgYWxsIHZlcnNpb25zIG9mIGEgcHJvZ3JhbS0tdG8gbWFrZSBzdXJlIGl0IHJlbWFpbnMgZnJlZQ0Kc29mdHdhcmUgZm9yIGFsbCBpdHMgdXNlcnMuICBXZSwgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgdXNlIHRoZQ0KR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vc3Qgb2Ygb3VyIHNvZnR3YXJlOyBpdCBhcHBsaWVzIGFsc28gdG8NCmFueSBvdGhlciB3b3JrIHJlbGVhc2VkIHRoaXMgd2F5IGJ5IGl0cyBhdXRob3JzLiAgWW91IGNhbiBhcHBseSBpdCB0bw0KeW91ciBwcm9ncmFtcywgdG9vLg0KDQogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QNCnByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UNCmhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBmb3INCnRoZW0gaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQgaWYgeW91DQp3YW50IGl0LCB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2UgcGllY2VzIG9mIGl0IGluIG5ldw0KZnJlZSBwcm9ncmFtcywgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuDQoNCiAgVG8gcHJvdGVjdCB5b3VyIHJpZ2h0cywgd2UgbmVlZCB0byBwcmV2ZW50IG90aGVycyBmcm9tIGRlbnlpbmcgeW91DQp0aGVzZSByaWdodHMgb3IgYXNraW5nIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4gIFRoZXJlZm9yZSwgeW91IGhhdmUNCmNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZg0KeW91IG1vZGlmeSBpdDogcmVzcG9uc2liaWxpdGllcyB0byByZXNwZWN0IHRoZSBmcmVlZG9tIG9mIG90aGVycy4NCg0KICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyDQpncmF0aXMgb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBwYXNzIG9uIHRvIHRoZSByZWNpcGllbnRzIHRoZSBzYW1lDQpmcmVlZG9tcyB0aGF0IHlvdSByZWNlaXZlZC4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZQ0Kb3IgY2FuIGdldCB0aGUgc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkNCmtub3cgdGhlaXIgcmlnaHRzLg0KDQogIERldmVsb3BlcnMgdGhhdCB1c2UgdGhlIEdOVSBHUEwgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczoNCigxKSBhc3NlcnQgY29weXJpZ2h0IG9uIHRoZSBzb2Z0d2FyZSwgYW5kICgyKSBvZmZlciB5b3UgdGhpcyBMaWNlbnNlDQpnaXZpbmcgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IGl0Lg0KDQogIEZvciB0aGUgZGV2ZWxvcGVycycgYW5kIGF1dGhvcnMnIHByb3RlY3Rpb24sIHRoZSBHUEwgY2xlYXJseSBleHBsYWlucw0KdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlIHNvZnR3YXJlLiAgRm9yIGJvdGggdXNlcnMnIGFuZA0KYXV0aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIGJlIG1hcmtlZCBhcw0KY2hhbmdlZCwgc28gdGhhdCB0aGVpciBwcm9ibGVtcyB3aWxsIG5vdCBiZSBhdHRyaWJ1dGVkIGVycm9uZW91c2x5IHRvDQphdXRob3JzIG9mIHByZXZpb3VzIHZlcnNpb25zLg0KDQogIFNvbWUgZGV2aWNlcyBhcmUgZGVzaWduZWQgdG8gZGVueSB1c2VycyBhY2Nlc3MgdG8gaW5zdGFsbCBvciBydW4NCm1vZGlmaWVkIHZlcnNpb25zIG9mIHRoZSBzb2Z0d2FyZSBpbnNpZGUgdGhlbSwgYWx0aG91Z2ggdGhlIG1hbnVmYWN0dXJlcg0KY2FuIGRvIHNvLiAgVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBhaW0gb2YNCnByb3RlY3RpbmcgdXNlcnMnIGZyZWVkb20gdG8gY2hhbmdlIHRoZSBzb2Z0d2FyZS4gIFRoZSBzeXN0ZW1hdGljDQpwYXR0ZXJuIG9mIHN1Y2ggYWJ1c2Ugb2NjdXJzIGluIHRoZSBhcmVhIG9mIHByb2R1Y3RzIGZvciBpbmRpdmlkdWFscyB0bw0KdXNlLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgaXQgaXMgbW9zdCB1bmFjY2VwdGFibGUuICBUaGVyZWZvcmUsIHdlDQpoYXZlIGRlc2lnbmVkIHRoaXMgdmVyc2lvbiBvZiB0aGUgR1BMIHRvIHByb2hpYml0IHRoZSBwcmFjdGljZSBmb3IgdGhvc2UNCnByb2R1Y3RzLiAgSWYgc3VjaCBwcm9ibGVtcyBhcmlzZSBzdWJzdGFudGlhbGx5IGluIG90aGVyIGRvbWFpbnMsIHdlDQpzdGFuZCByZWFkeSB0byBleHRlbmQgdGhpcyBwcm92aXNpb24gdG8gdGhvc2UgZG9tYWlucyBpbiBmdXR1cmUgdmVyc2lvbnMNCm9mIHRoZSBHUEwsIGFzIG5lZWRlZCB0byBwcm90ZWN0IHRoZSBmcmVlZG9tIG9mIHVzZXJzLg0KDQogIEZpbmFsbHksIGV2ZXJ5IHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuDQpTdGF0ZXMgc2hvdWxkIG5vdCBhbGxvdyBwYXRlbnRzIHRvIHJlc3RyaWN0IGRldmVsb3BtZW50IGFuZCB1c2Ugb2YNCnNvZnR3YXJlIG9uIGdlbmVyYWwtcHVycG9zZSBjb21wdXRlcnMsIGJ1dCBpbiB0aG9zZSB0aGF0IGRvLCB3ZSB3aXNoIHRvDQphdm9pZCB0aGUgc3BlY2lhbCBkYW5nZXIgdGhhdCBwYXRlbnRzIGFwcGxpZWQgdG8gYSBmcmVlIHByb2dyYW0gY291bGQNCm1ha2UgaXQgZWZmZWN0aXZlbHkgcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHRoZSBHUEwgYXNzdXJlcyB0aGF0DQpwYXRlbnRzIGNhbm5vdCBiZSB1c2VkIHRvIHJlbmRlciB0aGUgcHJvZ3JhbSBub24tZnJlZS4NCg0KICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZA0KbW9kaWZpY2F0aW9uIGZvbGxvdy4NCg0KICAgICAgICAgICAgICAgICAgICAgICBURVJNUyBBTkQgQ09ORElUSU9OUw0KDQogIDAuIERlZmluaXRpb25zLg0KDQogICJUaGlzIExpY2Vuc2UiIHJlZmVycyB0byB2ZXJzaW9uIDMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLg0KDQogICJDb3B5cmlnaHQiIGFsc28gbWVhbnMgY29weXJpZ2h0LWxpa2UgbGF3cyB0aGF0IGFwcGx5IHRvIG90aGVyIGtpbmRzIG9mDQp3b3Jrcywgc3VjaCBhcyBzZW1pY29uZHVjdG9yIG1hc2tzLg0KDQogICJUaGUgUHJvZ3JhbSIgcmVmZXJzIHRvIGFueSBjb3B5cmlnaHRhYmxlIHdvcmsgbGljZW5zZWQgdW5kZXIgdGhpcw0KTGljZW5zZS4gIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLiAgIkxpY2Vuc2VlcyIgYW5kDQoicmVjaXBpZW50cyIgbWF5IGJlIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMuDQoNCiAgVG8gIm1vZGlmeSIgYSB3b3JrIG1lYW5zIHRvIGNvcHkgZnJvbSBvciBhZGFwdCBhbGwgb3IgcGFydCBvZiB0aGUgd29yaw0KaW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQgcGVybWlzc2lvbiwgb3RoZXIgdGhhbiB0aGUgbWFraW5nIG9mIGFuDQpleGFjdCBjb3B5LiAgVGhlIHJlc3VsdGluZyB3b3JrIGlzIGNhbGxlZCBhICJtb2RpZmllZCB2ZXJzaW9uIiBvZiB0aGUNCmVhcmxpZXIgd29yayBvciBhIHdvcmsgImJhc2VkIG9uIiB0aGUgZWFybGllciB3b3JrLg0KDQogIEEgImNvdmVyZWQgd29yayIgbWVhbnMgZWl0aGVyIHRoZSB1bm1vZGlmaWVkIFByb2dyYW0gb3IgYSB3b3JrIGJhc2VkDQpvbiB0aGUgUHJvZ3JhbS4NCg0KICBUbyAicHJvcGFnYXRlIiBhIHdvcmsgbWVhbnMgdG8gZG8gYW55dGhpbmcgd2l0aCBpdCB0aGF0LCB3aXRob3V0DQpwZXJtaXNzaW9uLCB3b3VsZCBtYWtlIHlvdSBkaXJlY3RseSBvciBzZWNvbmRhcmlseSBsaWFibGUgZm9yDQppbmZyaW5nZW1lbnQgdW5kZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGENCmNvbXB1dGVyIG9yIG1vZGlmeWluZyBhIHByaXZhdGUgY29weS4gIFByb3BhZ2F0aW9uIGluY2x1ZGVzIGNvcHlpbmcsDQpkaXN0cmlidXRpb24gKHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24pLCBtYWtpbmcgYXZhaWxhYmxlIHRvIHRoZQ0KcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJpZXMgb3RoZXIgYWN0aXZpdGllcyBhcyB3ZWxsLg0KDQogIFRvICJjb252ZXkiIGEgd29yayBtZWFucyBhbnkga2luZCBvZiBwcm9wYWdhdGlvbiB0aGF0IGVuYWJsZXMgb3RoZXINCnBhcnRpZXMgdG8gbWFrZSBvciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24gd2l0aCBhIHVzZXIgdGhyb3VnaA0KYSBjb21wdXRlciBuZXR3b3JrLCB3aXRoIG5vIHRyYW5zZmVyIG9mIGEgY29weSwgaXMgbm90IGNvbnZleWluZy4NCg0KICBBbiBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZSBkaXNwbGF5cyAiQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyINCnRvIHRoZSBleHRlbnQgdGhhdCBpdCBpbmNsdWRlcyBhIGNvbnZlbmllbnQgYW5kIHByb21pbmVudGx5IHZpc2libGUNCmZlYXR1cmUgdGhhdCAoMSkgZGlzcGxheXMgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSwgYW5kICgyKQ0KdGVsbHMgdGhlIHVzZXIgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhlIHdvcmsgKGV4Y2VwdCB0byB0aGUNCmV4dGVudCB0aGF0IHdhcnJhbnRpZXMgYXJlIHByb3ZpZGVkKSwgdGhhdCBsaWNlbnNlZXMgbWF5IGNvbnZleSB0aGUNCndvcmsgdW5kZXIgdGhpcyBMaWNlbnNlLCBhbmQgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMgTGljZW5zZS4gIElmDQp0aGUgaW50ZXJmYWNlIHByZXNlbnRzIGEgbGlzdCBvZiB1c2VyIGNvbW1hbmRzIG9yIG9wdGlvbnMsIHN1Y2ggYXMgYQ0KbWVudSwgYSBwcm9taW5lbnQgaXRlbSBpbiB0aGUgbGlzdCBtZWV0cyB0aGlzIGNyaXRlcmlvbi4NCg0KICAxLiBTb3VyY2UgQ29kZS4NCg0KICBUaGUgInNvdXJjZSBjb2RlIiBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yaw0KZm9yIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgIk9iamVjdCBjb2RlIiBtZWFucyBhbnkgbm9uLXNvdXJjZQ0KZm9ybSBvZiBhIHdvcmsuDQoNCiAgQSAiU3RhbmRhcmQgSW50ZXJmYWNlIiBtZWFucyBhbiBpbnRlcmZhY2UgdGhhdCBlaXRoZXIgaXMgYW4gb2ZmaWNpYWwNCnN0YW5kYXJkIGRlZmluZWQgYnkgYSByZWNvZ25pemVkIHN0YW5kYXJkcyBib2R5LCBvciwgaW4gdGhlIGNhc2Ugb2YNCmludGVyZmFjZXMgc3BlY2lmaWVkIGZvciBhIHBhcnRpY3VsYXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIG9uZSB0aGF0DQppcyB3aWRlbHkgdXNlZCBhbW9uZyBkZXZlbG9wZXJzIHdvcmtpbmcgaW4gdGhhdCBsYW5ndWFnZS4NCg0KICBUaGUgIlN5c3RlbSBMaWJyYXJpZXMiIG9mIGFuIGV4ZWN1dGFibGUgd29yayBpbmNsdWRlIGFueXRoaW5nLCBvdGhlcg0KdGhhbiB0aGUgd29yayBhcyBhIHdob2xlLCB0aGF0IChhKSBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsIGZvcm0gb2YNCnBhY2thZ2luZyBhIE1ham9yIENvbXBvbmVudCwgYnV0IHdoaWNoIGlzIG5vdCBwYXJ0IG9mIHRoYXQgTWFqb3INCkNvbXBvbmVudCwgYW5kIChiKSBzZXJ2ZXMgb25seSB0byBlbmFibGUgdXNlIG9mIHRoZSB3b3JrIHdpdGggdGhhdA0KTWFqb3IgQ29tcG9uZW50LCBvciB0byBpbXBsZW1lbnQgYSBTdGFuZGFyZCBJbnRlcmZhY2UgZm9yIHdoaWNoIGFuDQppbXBsZW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgdG8gdGhlIHB1YmxpYyBpbiBzb3VyY2UgY29kZSBmb3JtLiAgQQ0KIk1ham9yIENvbXBvbmVudCIsIGluIHRoaXMgY29udGV4dCwgbWVhbnMgYSBtYWpvciBlc3NlbnRpYWwgY29tcG9uZW50DQooa2VybmVsLCB3aW5kb3cgc3lzdGVtLCBhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVtDQooaWYgYW55KSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSB3b3JrIHJ1bnMsIG9yIGEgY29tcGlsZXIgdXNlZCB0bw0KcHJvZHVjZSB0aGUgd29yaywgb3IgYW4gb2JqZWN0IGNvZGUgaW50ZXJwcmV0ZXIgdXNlZCB0byBydW4gaXQuDQoNCiAgVGhlICJDb3JyZXNwb25kaW5nIFNvdXJjZSIgZm9yIGEgd29yayBpbiBvYmplY3QgY29kZSBmb3JtIG1lYW5zIGFsbA0KdGhlIHNvdXJjZSBjb2RlIG5lZWRlZCB0byBnZW5lcmF0ZSwgaW5zdGFsbCwgYW5kIChmb3IgYW4gZXhlY3V0YWJsZQ0Kd29yaykgcnVuIHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3JrLCBpbmNsdWRpbmcgc2NyaXB0cyB0bw0KY29udHJvbCB0aG9zZSBhY3Rpdml0aWVzLiAgSG93ZXZlciwgaXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgd29yaydzDQpTeXN0ZW0gTGlicmFyaWVzLCBvciBnZW5lcmFsLXB1cnBvc2UgdG9vbHMgb3IgZ2VuZXJhbGx5IGF2YWlsYWJsZSBmcmVlDQpwcm9ncmFtcyB3aGljaCBhcmUgdXNlZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZpdGllcyBidXQNCndoaWNoIGFyZSBub3QgcGFydCBvZiB0aGUgd29yay4gIEZvciBleGFtcGxlLCBDb3JyZXNwb25kaW5nIFNvdXJjZQ0KaW5jbHVkZXMgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMgYXNzb2NpYXRlZCB3aXRoIHNvdXJjZSBmaWxlcyBmb3INCnRoZSB3b3JrLCBhbmQgdGhlIHNvdXJjZSBjb2RlIGZvciBzaGFyZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQ0KbGlua2VkIHN1YnByb2dyYW1zIHRoYXQgdGhlIHdvcmsgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHJlcXVpcmUsDQpzdWNoIGFzIGJ5IGludGltYXRlIGRhdGEgY29tbXVuaWNhdGlvbiBvciBjb250cm9sIGZsb3cgYmV0d2VlbiB0aG9zZQ0Kc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3b3JrLg0KDQogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgdXNlcnMNCmNhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgQ29ycmVzcG9uZGluZw0KU291cmNlLg0KDQogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgYSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdA0Kc2FtZSB3b3JrLg0KDQogIDIuIEJhc2ljIFBlcm1pc3Npb25zLg0KDQogIEFsbCByaWdodHMgZ3JhbnRlZCB1bmRlciB0aGlzIExpY2Vuc2UgYXJlIGdyYW50ZWQgZm9yIHRoZSB0ZXJtIG9mDQpjb3B5cmlnaHQgb24gdGhlIFByb2dyYW0sIGFuZCBhcmUgaXJyZXZvY2FibGUgcHJvdmlkZWQgdGhlIHN0YXRlZA0KY29uZGl0aW9ucyBhcmUgbWV0LiAgVGhpcyBMaWNlbnNlIGV4cGxpY2l0bHkgYWZmaXJtcyB5b3VyIHVubGltaXRlZA0KcGVybWlzc2lvbiB0byBydW4gdGhlIHVubW9kaWZpZWQgUHJvZ3JhbS4gIFRoZSBvdXRwdXQgZnJvbSBydW5uaW5nIGENCmNvdmVyZWQgd29yayBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSBvbmx5IGlmIHRoZSBvdXRwdXQsIGdpdmVuIGl0cw0KY29udGVudCwgY29uc3RpdHV0ZXMgYSBjb3ZlcmVkIHdvcmsuICBUaGlzIExpY2Vuc2UgYWNrbm93bGVkZ2VzIHlvdXINCnJpZ2h0cyBvZiBmYWlyIHVzZSBvciBvdGhlciBlcXVpdmFsZW50LCBhcyBwcm92aWRlZCBieSBjb3B5cmlnaHQgbGF3Lg0KDQogIFlvdSBtYXkgbWFrZSwgcnVuIGFuZCBwcm9wYWdhdGUgY292ZXJlZCB3b3JrcyB0aGF0IHlvdSBkbyBub3QNCmNvbnZleSwgd2l0aG91dCBjb25kaXRpb25zIHNvIGxvbmcgYXMgeW91ciBsaWNlbnNlIG90aGVyd2lzZSByZW1haW5zDQppbiBmb3JjZS4gIFlvdSBtYXkgY29udmV5IGNvdmVyZWQgd29ya3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBwdXJwb3NlDQpvZiBoYXZpbmcgdGhlbSBtYWtlIG1vZGlmaWNhdGlvbnMgZXhjbHVzaXZlbHkgZm9yIHlvdSwgb3IgcHJvdmlkZSB5b3UNCndpdGggZmFjaWxpdGllcyBmb3IgcnVubmluZyB0aG9zZSB3b3JrcywgcHJvdmlkZWQgdGhhdCB5b3UgY29tcGx5IHdpdGgNCnRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgaW4gY29udmV5aW5nIGFsbCBtYXRlcmlhbCBmb3Igd2hpY2ggeW91IGRvDQpub3QgY29udHJvbCBjb3B5cmlnaHQuICBUaG9zZSB0aHVzIG1ha2luZyBvciBydW5uaW5nIHRoZSBjb3ZlcmVkIHdvcmtzDQpmb3IgeW91IG11c3QgZG8gc28gZXhjbHVzaXZlbHkgb24geW91ciBiZWhhbGYsIHVuZGVyIHlvdXIgZGlyZWN0aW9uDQphbmQgY29udHJvbCwgb24gdGVybXMgdGhhdCBwcm9oaWJpdCB0aGVtIGZyb20gbWFraW5nIGFueSBjb3BpZXMgb2YNCnlvdXIgY29weXJpZ2h0ZWQgbWF0ZXJpYWwgb3V0c2lkZSB0aGVpciByZWxhdGlvbnNoaXAgd2l0aCB5b3UuDQoNCiAgQ29udmV5aW5nIHVuZGVyIGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIGlzIHBlcm1pdHRlZCBzb2xlbHkgdW5kZXINCnRoZSBjb25kaXRpb25zIHN0YXRlZCBiZWxvdy4gIFN1YmxpY2Vuc2luZyBpcyBub3QgYWxsb3dlZDsgc2VjdGlvbiAxMA0KbWFrZXMgaXQgdW5uZWNlc3NhcnkuDQoNCiAgMy4gUHJvdGVjdGluZyBVc2VycycgTGVnYWwgUmlnaHRzIEZyb20gQW50aS1DaXJjdW12ZW50aW9uIExhdy4NCg0KICBObyBjb3ZlcmVkIHdvcmsgc2hhbGwgYmUgZGVlbWVkIHBhcnQgb2YgYW4gZWZmZWN0aXZlIHRlY2hub2xvZ2ljYWwNCm1lYXN1cmUgdW5kZXIgYW55IGFwcGxpY2FibGUgbGF3IGZ1bGZpbGxpbmcgb2JsaWdhdGlvbnMgdW5kZXIgYXJ0aWNsZQ0KMTEgb2YgdGhlIFdJUE8gY29weXJpZ2h0IHRyZWF0eSBhZG9wdGVkIG9uIDIwIERlY2VtYmVyIDE5OTYsIG9yDQpzaW1pbGFyIGxhd3MgcHJvaGliaXRpbmcgb3IgcmVzdHJpY3RpbmcgY2lyY3VtdmVudGlvbiBvZiBzdWNoDQptZWFzdXJlcy4NCg0KICBXaGVuIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBhbnkgbGVnYWwgcG93ZXIgdG8gZm9yYmlkDQpjaXJjdW12ZW50aW9uIG9mIHRlY2hub2xvZ2ljYWwgbWVhc3VyZXMgdG8gdGhlIGV4dGVudCBzdWNoIGNpcmN1bXZlbnRpb24NCmlzIGVmZmVjdGVkIGJ5IGV4ZXJjaXNpbmcgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZSB3aXRoIHJlc3BlY3QgdG8NCnRoZSBjb3ZlcmVkIHdvcmssIGFuZCB5b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBvcGVyYXRpb24gb3INCm1vZGlmaWNhdGlvbiBvZiB0aGUgd29yayBhcyBhIG1lYW5zIG9mIGVuZm9yY2luZywgYWdhaW5zdCB0aGUgd29yaydzDQp1c2VycywgeW91ciBvciB0aGlyZCBwYXJ0aWVzJyBsZWdhbCByaWdodHMgdG8gZm9yYmlkIGNpcmN1bXZlbnRpb24gb2YNCnRlY2hub2xvZ2ljYWwgbWVhc3VyZXMuDQoNCiAgNC4gQ29udmV5aW5nIFZlcmJhdGltIENvcGllcy4NCg0KICBZb3UgbWF5IGNvbnZleSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIFByb2dyYW0ncyBzb3VyY2UgY29kZSBhcyB5b3UNCnJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91IGNvbnNwaWN1b3VzbHkgYW5kDQphcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2U7DQprZWVwIGludGFjdCBhbGwgbm90aWNlcyBzdGF0aW5nIHRoYXQgdGhpcyBMaWNlbnNlIGFuZCBhbnkNCm5vbi1wZXJtaXNzaXZlIHRlcm1zIGFkZGVkIGluIGFjY29yZCB3aXRoIHNlY3Rpb24gNyBhcHBseSB0byB0aGUgY29kZTsNCmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIG9mIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxsDQpyZWNpcGllbnRzIGEgY29weSBvZiB0aGlzIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4NCg0KICBZb3UgbWF5IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2ggY29weSB0aGF0IHlvdSBjb252ZXksDQphbmQgeW91IG1heSBvZmZlciBzdXBwb3J0IG9yIHdhcnJhbnR5IHByb3RlY3Rpb24gZm9yIGEgZmVlLg0KDQogIDUuIENvbnZleWluZyBNb2RpZmllZCBTb3VyY2UgVmVyc2lvbnMuDQoNCiAgWW91IG1heSBjb252ZXkgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBvciB0aGUgbW9kaWZpY2F0aW9ucyB0bw0KcHJvZHVjZSBpdCBmcm9tIHRoZSBQcm9ncmFtLCBpbiB0aGUgZm9ybSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUNCnRlcm1zIG9mIHNlY3Rpb24gNCwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOg0KDQogICAgYSkgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgeW91IG1vZGlmaWVkDQogICAgaXQsIGFuZCBnaXZpbmcgYSByZWxldmFudCBkYXRlLg0KDQogICAgYikgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgaXQgaXMNCiAgICByZWxlYXNlZCB1bmRlciB0aGlzIExpY2Vuc2UgYW5kIGFueSBjb25kaXRpb25zIGFkZGVkIHVuZGVyIHNlY3Rpb24NCiAgICA3LiAgVGhpcyByZXF1aXJlbWVudCBtb2RpZmllcyB0aGUgcmVxdWlyZW1lbnQgaW4gc2VjdGlvbiA0IHRvDQogICAgImtlZXAgaW50YWN0IGFsbCBub3RpY2VzIi4NCg0KICAgIGMpIFlvdSBtdXN0IGxpY2Vuc2UgdGhlIGVudGlyZSB3b3JrLCBhcyBhIHdob2xlLCB1bmRlciB0aGlzDQogICAgTGljZW5zZSB0byBhbnlvbmUgd2hvIGNvbWVzIGludG8gcG9zc2Vzc2lvbiBvZiBhIGNvcHkuICBUaGlzDQogICAgTGljZW5zZSB3aWxsIHRoZXJlZm9yZSBhcHBseSwgYWxvbmcgd2l0aCBhbnkgYXBwbGljYWJsZSBzZWN0aW9uIDcNCiAgICBhZGRpdGlvbmFsIHRlcm1zLCB0byB0aGUgd2hvbGUgb2YgdGhlIHdvcmssIGFuZCBhbGwgaXRzIHBhcnRzLA0KICAgIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkgYXJlIHBhY2thZ2VkLiAgVGhpcyBMaWNlbnNlIGdpdmVzIG5vDQogICAgcGVybWlzc2lvbiB0byBsaWNlbnNlIHRoZSB3b3JrIGluIGFueSBvdGhlciB3YXksIGJ1dCBpdCBkb2VzIG5vdA0KICAgIGludmFsaWRhdGUgc3VjaCBwZXJtaXNzaW9uIGlmIHlvdSBoYXZlIHNlcGFyYXRlbHkgcmVjZWl2ZWQgaXQuDQoNCiAgICBkKSBJZiB0aGUgd29yayBoYXMgaW50ZXJhY3RpdmUgdXNlciBpbnRlcmZhY2VzLCBlYWNoIG11c3QgZGlzcGxheQ0KICAgIEFwcHJvcHJpYXRlIExlZ2FsIE5vdGljZXM7IGhvd2V2ZXIsIGlmIHRoZSBQcm9ncmFtIGhhcyBpbnRlcmFjdGl2ZQ0KICAgIGludGVyZmFjZXMgdGhhdCBkbyBub3QgZGlzcGxheSBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzLCB5b3VyDQogICAgd29yayBuZWVkIG5vdCBtYWtlIHRoZW0gZG8gc28uDQoNCiAgQSBjb21waWxhdGlvbiBvZiBhIGNvdmVyZWQgd29yayB3aXRoIG90aGVyIHNlcGFyYXRlIGFuZCBpbmRlcGVuZGVudA0Kd29ya3MsIHdoaWNoIGFyZSBub3QgYnkgdGhlaXIgbmF0dXJlIGV4dGVuc2lvbnMgb2YgdGhlIGNvdmVyZWQgd29yaywNCmFuZCB3aGljaCBhcmUgbm90IGNvbWJpbmVkIHdpdGggaXQgc3VjaCBhcyB0byBmb3JtIGEgbGFyZ2VyIHByb2dyYW0sDQppbiBvciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMgY2FsbGVkIGFuDQoiYWdncmVnYXRlIiBpZiB0aGUgY29tcGlsYXRpb24gYW5kIGl0cyByZXN1bHRpbmcgY29weXJpZ2h0IGFyZSBub3QNCnVzZWQgdG8gbGltaXQgdGhlIGFjY2VzcyBvciBsZWdhbCByaWdodHMgb2YgdGhlIGNvbXBpbGF0aW9uJ3MgdXNlcnMNCmJleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNvdmVyZWQgd29yaw0KaW4gYW4gYWdncmVnYXRlIGRvZXMgbm90IGNhdXNlIHRoaXMgTGljZW5zZSB0byBhcHBseSB0byB0aGUgb3RoZXINCnBhcnRzIG9mIHRoZSBhZ2dyZWdhdGUuDQoNCiAgNi4gQ29udmV5aW5nIE5vbi1Tb3VyY2UgRm9ybXMuDQoNCiAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsgaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciB0aGUgdGVybXMNCm9mIHNlY3Rpb25zIDQgYW5kIDUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gY29udmV5IHRoZQ0KbWFjaGluZS1yZWFkYWJsZSBDb3JyZXNwb25kaW5nIFNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLA0KaW4gb25lIG9mIHRoZXNlIHdheXM6DQoNCiAgICBhKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGluLCBvciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0DQogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSB0aGUNCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBmaXhlZCBvbiBhIGR1cmFibGUgcGh5c2ljYWwgbWVkaXVtDQogICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UuDQoNCiAgICBiKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGluLCBvciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0DQogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSBhDQogICAgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlIHllYXJzIGFuZCB2YWxpZCBmb3IgYXMNCiAgICBsb25nIGFzIHlvdSBvZmZlciBzcGFyZSBwYXJ0cyBvciBjdXN0b21lciBzdXBwb3J0IGZvciB0aGF0IHByb2R1Y3QNCiAgICBtb2RlbCwgdG8gZ2l2ZSBhbnlvbmUgd2hvIHBvc3Nlc3NlcyB0aGUgb2JqZWN0IGNvZGUgZWl0aGVyICgxKSBhDQogICAgY29weSBvZiB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGFsbCB0aGUgc29mdHdhcmUgaW4gdGhlDQogICAgcHJvZHVjdCB0aGF0IGlzIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLCBvbiBhIGR1cmFibGUgcGh5c2ljYWwNCiAgICBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UsIGZvciBhIHByaWNlIG5vDQogICAgbW9yZSB0aGFuIHlvdXIgcmVhc29uYWJsZSBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzDQogICAgY29udmV5aW5nIG9mIHNvdXJjZSwgb3IgKDIpIGFjY2VzcyB0byBjb3B5IHRoZQ0KICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGZyb20gYSBuZXR3b3JrIHNlcnZlciBhdCBubyBjaGFyZ2UuDQoNCiAgICBjKSBDb252ZXkgaW5kaXZpZHVhbCBjb3BpZXMgb2YgdGhlIG9iamVjdCBjb2RlIHdpdGggYSBjb3B5IG9mIHRoZQ0KICAgIHdyaXR0ZW4gb2ZmZXIgdG8gcHJvdmlkZSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBUaGlzDQogICAgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9uYWxseSBhbmQgbm9uY29tbWVyY2lhbGx5LCBhbmQNCiAgICBvbmx5IGlmIHlvdSByZWNlaXZlZCB0aGUgb2JqZWN0IGNvZGUgd2l0aCBzdWNoIGFuIG9mZmVyLCBpbiBhY2NvcmQNCiAgICB3aXRoIHN1YnNlY3Rpb24gNmIuDQoNCiAgICBkKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGJ5IG9mZmVyaW5nIGFjY2VzcyBmcm9tIGEgZGVzaWduYXRlZA0KICAgIHBsYWNlIChncmF0aXMgb3IgZm9yIGEgY2hhcmdlKSwgYW5kIG9mZmVyIGVxdWl2YWxlbnQgYWNjZXNzIHRvIHRoZQ0KICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGluIHRoZSBzYW1lIHdheSB0aHJvdWdoIHRoZSBzYW1lIHBsYWNlIGF0IG5vDQogICAgZnVydGhlciBjaGFyZ2UuICBZb3UgbmVlZCBub3QgcmVxdWlyZSByZWNpcGllbnRzIHRvIGNvcHkgdGhlDQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuICBJZiB0aGUgcGxhY2UgdG8NCiAgICBjb3B5IHRoZSBvYmplY3QgY29kZSBpcyBhIG5ldHdvcmsgc2VydmVyLCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UNCiAgICBtYXkgYmUgb24gYSBkaWZmZXJlbnQgc2VydmVyIChvcGVyYXRlZCBieSB5b3Ugb3IgYSB0aGlyZCBwYXJ0eSkNCiAgICB0aGF0IHN1cHBvcnRzIGVxdWl2YWxlbnQgY29weWluZyBmYWNpbGl0aWVzLCBwcm92aWRlZCB5b3UgbWFpbnRhaW4NCiAgICBjbGVhciBkaXJlY3Rpb25zIG5leHQgdG8gdGhlIG9iamVjdCBjb2RlIHNheWluZyB3aGVyZSB0byBmaW5kIHRoZQ0KICAgIENvcnJlc3BvbmRpbmcgU291cmNlLiAgUmVnYXJkbGVzcyBvZiB3aGF0IHNlcnZlciBob3N0cyB0aGUNCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSwgeW91IHJlbWFpbiBvYmxpZ2F0ZWQgdG8gZW5zdXJlIHRoYXQgaXQgaXMNCiAgICBhdmFpbGFibGUgZm9yIGFzIGxvbmcgYXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLg0KDQogICAgZSkgQ29udmV5IHRoZSBvYmplY3QgY29kZSB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uLCBwcm92aWRlZA0KICAgIHlvdSBpbmZvcm0gb3RoZXIgcGVlcnMgd2hlcmUgdGhlIG9iamVjdCBjb2RlIGFuZCBDb3JyZXNwb25kaW5nDQogICAgU291cmNlIG9mIHRoZSB3b3JrIGFyZSBiZWluZyBvZmZlcmVkIHRvIHRoZSBnZW5lcmFsIHB1YmxpYyBhdCBubw0KICAgIGNoYXJnZSB1bmRlciBzdWJzZWN0aW9uIDZkLg0KDQogIEEgc2VwYXJhYmxlIHBvcnRpb24gb2YgdGhlIG9iamVjdCBjb2RlLCB3aG9zZSBzb3VyY2UgY29kZSBpcyBleGNsdWRlZA0KZnJvbSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgYXMgYSBTeXN0ZW0gTGlicmFyeSwgbmVlZCBub3QgYmUNCmluY2x1ZGVkIGluIGNvbnZleWluZyB0aGUgb2JqZWN0IGNvZGUgd29yay4NCg0KICBBICJVc2VyIFByb2R1Y3QiIGlzIGVpdGhlciAoMSkgYSAiY29uc3VtZXIgcHJvZHVjdCIsIHdoaWNoIG1lYW5zIGFueQ0KdGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkgdXNlZCBmb3IgcGVyc29uYWwsIGZhbWlseSwNCm9yIGhvdXNlaG9sZCBwdXJwb3Nlcywgb3IgKDIpIGFueXRoaW5nIGRlc2lnbmVkIG9yIHNvbGQgZm9yIGluY29ycG9yYXRpb24NCmludG8gYSBkd2VsbGluZy4gIEluIGRldGVybWluaW5nIHdoZXRoZXIgYSBwcm9kdWN0IGlzIGEgY29uc3VtZXIgcHJvZHVjdCwNCmRvdWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiAgRm9yIGEgcGFydGljdWxhcg0KcHJvZHVjdCByZWNlaXZlZCBieSBhIHBhcnRpY3VsYXIgdXNlciwgIm5vcm1hbGx5IHVzZWQiIHJlZmVycyB0byBhDQp0eXBpY2FsIG9yIGNvbW1vbiB1c2Ugb2YgdGhhdCBjbGFzcyBvZiBwcm9kdWN0LCByZWdhcmRsZXNzIG9mIHRoZSBzdGF0dXMNCm9mIHRoZSBwYXJ0aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGljdWxhciB1c2VyDQphY3R1YWxseSB1c2VzLCBvciBleHBlY3RzIG9yIGlzIGV4cGVjdGVkIHRvIHVzZSwgdGhlIHByb2R1Y3QuICBBIHByb2R1Y3QNCmlzIGEgY29uc3VtZXIgcHJvZHVjdCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHByb2R1Y3QgaGFzIHN1YnN0YW50aWFsDQpjb21tZXJjaWFsLCBpbmR1c3RyaWFsIG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJlc2VudA0KdGhlIG9ubHkgc2lnbmlmaWNhbnQgbW9kZSBvZiB1c2Ugb2YgdGhlIHByb2R1Y3QuDQoNCiAgIkluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiIgZm9yIGEgVXNlciBQcm9kdWN0IG1lYW5zIGFueSBtZXRob2RzLA0KcHJvY2VkdXJlcywgYXV0aG9yaXphdGlvbiBrZXlzLCBvciBvdGhlciBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBpbnN0YWxsDQphbmQgZXhlY3V0ZSBtb2RpZmllZCB2ZXJzaW9ucyBvZiBhIGNvdmVyZWQgd29yayBpbiB0aGF0IFVzZXIgUHJvZHVjdCBmcm9tDQphIG1vZGlmaWVkIHZlcnNpb24gb2YgaXRzIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhlIGluZm9ybWF0aW9uIG11c3QNCnN1ZmZpY2UgdG8gZW5zdXJlIHRoYXQgdGhlIGNvbnRpbnVlZCBmdW5jdGlvbmluZyBvZiB0aGUgbW9kaWZpZWQgb2JqZWN0DQpjb2RlIGlzIGluIG5vIGNhc2UgcHJldmVudGVkIG9yIGludGVyZmVyZWQgd2l0aCBzb2xlbHkgYmVjYXVzZQ0KbW9kaWZpY2F0aW9uIGhhcyBiZWVuIG1hZGUuDQoNCiAgSWYgeW91IGNvbnZleSBhbiBvYmplY3QgY29kZSB3b3JrIHVuZGVyIHRoaXMgc2VjdGlvbiBpbiwgb3Igd2l0aCwgb3INCnNwZWNpZmljYWxseSBmb3IgdXNlIGluLCBhIFVzZXIgUHJvZHVjdCwgYW5kIHRoZSBjb252ZXlpbmcgb2NjdXJzIGFzDQpwYXJ0IG9mIGEgdHJhbnNhY3Rpb24gaW4gd2hpY2ggdGhlIHJpZ2h0IG9mIHBvc3Nlc3Npb24gYW5kIHVzZSBvZiB0aGUNClVzZXIgUHJvZHVjdCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgcmVjaXBpZW50IGluIHBlcnBldHVpdHkgb3IgZm9yIGENCmZpeGVkIHRlcm0gKHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyYWN0ZXJpemVkKSwgdGhlDQpDb3JyZXNwb25kaW5nIFNvdXJjZSBjb252ZXllZCB1bmRlciB0aGlzIHNlY3Rpb24gbXVzdCBiZSBhY2NvbXBhbmllZA0KYnkgdGhlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbi4gIEJ1dCB0aGlzIHJlcXVpcmVtZW50IGRvZXMgbm90IGFwcGx5DQppZiBuZWl0aGVyIHlvdSBub3IgYW55IHRoaXJkIHBhcnR5IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gaW5zdGFsbA0KbW9kaWZpZWQgb2JqZWN0IGNvZGUgb24gdGhlIFVzZXIgUHJvZHVjdCAoZm9yIGV4YW1wbGUsIHRoZSB3b3JrIGhhcw0KYmVlbiBpbnN0YWxsZWQgaW4gUk9NKS4NCg0KICBUaGUgcmVxdWlyZW1lbnQgdG8gcHJvdmlkZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24gZG9lcyBub3QgaW5jbHVkZSBhDQpyZXF1aXJlbWVudCB0byBjb250aW51ZSB0byBwcm92aWRlIHN1cHBvcnQgc2VydmljZSwgd2FycmFudHksIG9yIHVwZGF0ZXMNCmZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQgYnkgdGhlIHJlY2lwaWVudCwgb3IgZm9yDQp0aGUgVXNlciBQcm9kdWN0IGluIHdoaWNoIGl0IGhhcyBiZWVuIG1vZGlmaWVkIG9yIGluc3RhbGxlZC4gIEFjY2VzcyB0byBhDQpuZXR3b3JrIG1heSBiZSBkZW5pZWQgd2hlbiB0aGUgbW9kaWZpY2F0aW9uIGl0c2VsZiBtYXRlcmlhbGx5IGFuZA0KYWR2ZXJzZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBvciB2aW9sYXRlcyB0aGUgcnVsZXMgYW5kDQpwcm90b2NvbHMgZm9yIGNvbW11bmljYXRpb24gYWNyb3NzIHRoZSBuZXR3b3JrLg0KDQogIENvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkLCBhbmQgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIHByb3ZpZGVkLA0KaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uIG11c3QgYmUgaW4gYSBmb3JtYXQgdGhhdCBpcyBwdWJsaWNseQ0KZG9jdW1lbnRlZCAoYW5kIHdpdGggYW4gaW1wbGVtZW50YXRpb24gYXZhaWxhYmxlIHRvIHRoZSBwdWJsaWMgaW4NCnNvdXJjZSBjb2RlIGZvcm0pLCBhbmQgbXVzdCByZXF1aXJlIG5vIHNwZWNpYWwgcGFzc3dvcmQgb3Iga2V5IGZvcg0KdW5wYWNraW5nLCByZWFkaW5nIG9yIGNvcHlpbmcuDQoNCiAgNy4gQWRkaXRpb25hbCBUZXJtcy4NCg0KICAiQWRkaXRpb25hbCBwZXJtaXNzaW9ucyIgYXJlIHRlcm1zIHRoYXQgc3VwcGxlbWVudCB0aGUgdGVybXMgb2YgdGhpcw0KTGljZW5zZSBieSBtYWtpbmcgZXhjZXB0aW9ucyBmcm9tIG9uZSBvciBtb3JlIG9mIGl0cyBjb25kaXRpb25zLg0KQWRkaXRpb25hbCBwZXJtaXNzaW9ucyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBlbnRpcmUgUHJvZ3JhbSBzaGFsbA0KYmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlIGluY2x1ZGVkIGluIHRoaXMgTGljZW5zZSwgdG8gdGhlIGV4dGVudA0KdGhhdCB0aGV5IGFyZSB2YWxpZCB1bmRlciBhcHBsaWNhYmxlIGxhdy4gIElmIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMNCmFwcGx5IG9ubHkgdG8gcGFydCBvZiB0aGUgUHJvZ3JhbSwgdGhhdCBwYXJ0IG1heSBiZSB1c2VkIHNlcGFyYXRlbHkNCnVuZGVyIHRob3NlIHBlcm1pc3Npb25zLCBidXQgdGhlIGVudGlyZSBQcm9ncmFtIHJlbWFpbnMgZ292ZXJuZWQgYnkNCnRoaXMgTGljZW5zZSB3aXRob3V0IHJlZ2FyZCB0byB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucy4NCg0KICBXaGVuIHlvdSBjb252ZXkgYSBjb3B5IG9mIGEgY292ZXJlZCB3b3JrLCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uDQpyZW1vdmUgYW55IGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgZnJvbSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQgb2YNCml0LiAgKEFkZGl0aW9uYWwgcGVybWlzc2lvbnMgbWF5IGJlIHdyaXR0ZW4gdG8gcmVxdWlyZSB0aGVpciBvd24NCnJlbW92YWwgaW4gY2VydGFpbiBjYXNlcyB3aGVuIHlvdSBtb2RpZnkgdGhlIHdvcmsuKSAgWW91IG1heSBwbGFjZQ0KYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlhbCwgYWRkZWQgYnkgeW91IHRvIGEgY292ZXJlZCB3b3JrLA0KZm9yIHdoaWNoIHlvdSBoYXZlIG9yIGNhbiBnaXZlIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBwZXJtaXNzaW9uLg0KDQogIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgZm9yIG1hdGVyaWFsIHlvdQ0KYWRkIHRvIGEgY292ZXJlZCB3b3JrLCB5b3UgbWF5IChpZiBhdXRob3JpemVkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVycyBvZg0KdGhhdCBtYXRlcmlhbCkgc3VwcGxlbWVudCB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlIHdpdGggdGVybXM6DQoNCiAgICBhKSBEaXNjbGFpbWluZyB3YXJyYW50eSBvciBsaW1pdGluZyBsaWFiaWxpdHkgZGlmZmVyZW50bHkgZnJvbSB0aGUNCiAgICB0ZXJtcyBvZiBzZWN0aW9ucyAxNSBhbmQgMTYgb2YgdGhpcyBMaWNlbnNlOyBvcg0KDQogICAgYikgUmVxdWlyaW5nIHByZXNlcnZhdGlvbiBvZiBzcGVjaWZpZWQgcmVhc29uYWJsZSBsZWdhbCBub3RpY2VzIG9yDQogICAgYXV0aG9yIGF0dHJpYnV0aW9ucyBpbiB0aGF0IG1hdGVyaWFsIG9yIGluIHRoZSBBcHByb3ByaWF0ZSBMZWdhbA0KICAgIE5vdGljZXMgZGlzcGxheWVkIGJ5IHdvcmtzIGNvbnRhaW5pbmcgaXQ7IG9yDQoNCiAgICBjKSBQcm9oaWJpdGluZyBtaXNyZXByZXNlbnRhdGlvbiBvZiB0aGUgb3JpZ2luIG9mIHRoYXQgbWF0ZXJpYWwsIG9yDQogICAgcmVxdWlyaW5nIHRoYXQgbW9kaWZpZWQgdmVyc2lvbnMgb2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4NCiAgICByZWFzb25hYmxlIHdheXMgYXMgZGlmZmVyZW50IGZyb20gdGhlIG9yaWdpbmFsIHZlcnNpb247IG9yDQoNCiAgICBkKSBMaW1pdGluZyB0aGUgdXNlIGZvciBwdWJsaWNpdHkgcHVycG9zZXMgb2YgbmFtZXMgb2YgbGljZW5zb3JzIG9yDQogICAgYXV0aG9ycyBvZiB0aGUgbWF0ZXJpYWw7IG9yDQoNCiAgICBlKSBEZWNsaW5pbmcgdG8gZ3JhbnQgcmlnaHRzIHVuZGVyIHRyYWRlbWFyayBsYXcgZm9yIHVzZSBvZiBzb21lDQogICAgdHJhZGUgbmFtZXMsIHRyYWRlbWFya3MsIG9yIHNlcnZpY2UgbWFya3M7IG9yDQoNCiAgICBmKSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29ycyBhbmQgYXV0aG9ycyBvZiB0aGF0DQogICAgbWF0ZXJpYWwgYnkgYW55b25lIHdobyBjb252ZXlzIHRoZSBtYXRlcmlhbCAob3IgbW9kaWZpZWQgdmVyc2lvbnMgb2YNCiAgICBpdCkgd2l0aCBjb250cmFjdHVhbCBhc3N1bXB0aW9ucyBvZiBsaWFiaWxpdHkgdG8gdGhlIHJlY2lwaWVudCwgZm9yDQogICAgYW55IGxpYWJpbGl0eSB0aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRpcmVjdGx5IGltcG9zZSBvbg0KICAgIHRob3NlIGxpY2Vuc29ycyBhbmQgYXV0aG9ycy4NCg0KICBBbGwgb3RoZXIgbm9uLXBlcm1pc3NpdmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJlZCAiZnVydGhlcg0KcmVzdHJpY3Rpb25zIiB3aXRoaW4gdGhlIG1lYW5pbmcgb2Ygc2VjdGlvbiAxMC4gIElmIHRoZSBQcm9ncmFtIGFzIHlvdQ0KcmVjZWl2ZWQgaXQsIG9yIGFueSBwYXJ0IG9mIGl0LCBjb250YWlucyBhIG5vdGljZSBzdGF0aW5nIHRoYXQgaXQgaXMNCmdvdmVybmVkIGJ5IHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIGEgdGVybSB0aGF0IGlzIGEgZnVydGhlcg0KcmVzdHJpY3Rpb24sIHlvdSBtYXkgcmVtb3ZlIHRoYXQgdGVybS4gIElmIGEgbGljZW5zZSBkb2N1bWVudCBjb250YWlucw0KYSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGJ1dCBwZXJtaXRzIHJlbGljZW5zaW5nIG9yIGNvbnZleWluZyB1bmRlciB0aGlzDQpMaWNlbnNlLCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQgd29yayBtYXRlcmlhbCBnb3Zlcm5lZCBieSB0aGUgdGVybXMNCm9mIHRoYXQgbGljZW5zZSBkb2N1bWVudCwgcHJvdmlkZWQgdGhhdCB0aGUgZnVydGhlciByZXN0cmljdGlvbiBkb2VzDQpub3Qgc3Vydml2ZSBzdWNoIHJlbGljZW5zaW5nIG9yIGNvbnZleWluZy4NCg0KICBJZiB5b3UgYWRkIHRlcm1zIHRvIGEgY292ZXJlZCB3b3JrIGluIGFjY29yZCB3aXRoIHRoaXMgc2VjdGlvbiwgeW91DQptdXN0IHBsYWNlLCBpbiB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzLCBhIHN0YXRlbWVudCBvZiB0aGUNCmFkZGl0aW9uYWwgdGVybXMgdGhhdCBhcHBseSB0byB0aG9zZSBmaWxlcywgb3IgYSBub3RpY2UgaW5kaWNhdGluZw0Kd2hlcmUgdG8gZmluZCB0aGUgYXBwbGljYWJsZSB0ZXJtcy4NCg0KICBBZGRpdGlvbmFsIHRlcm1zLCBwZXJtaXNzaXZlIG9yIG5vbi1wZXJtaXNzaXZlLCBtYXkgYmUgc3RhdGVkIGluIHRoZQ0KZm9ybSBvZiBhIHNlcGFyYXRlbHkgd3JpdHRlbiBsaWNlbnNlLCBvciBzdGF0ZWQgYXMgZXhjZXB0aW9uczsNCnRoZSBhYm92ZSByZXF1aXJlbWVudHMgYXBwbHkgZWl0aGVyIHdheS4NCg0KICA4LiBUZXJtaW5hdGlvbi4NCg0KICBZb3UgbWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9kaWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkNCnByb3ZpZGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEFueSBhdHRlbXB0IG90aGVyd2lzZSB0byBwcm9wYWdhdGUgb3INCm1vZGlmeSBpdCBpcyB2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlcg0KdGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZSB0aGlyZA0KcGFyYWdyYXBoIG9mIHNlY3Rpb24gMTEpLg0KDQogIEhvd2V2ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyDQpsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMgcmVpbnN0YXRlZCAoYSkNCnByb3Zpc2lvbmFsbHksIHVubGVzcyBhbmQgdW50aWwgdGhlIGNvcHlyaWdodCBob2xkZXIgZXhwbGljaXRseSBhbmQNCmZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQNCmhvbGRlciBmYWlscyB0byBub3RpZnkgeW91IG9mIHRoZSB2aW9sYXRpb24gYnkgc29tZSByZWFzb25hYmxlIG1lYW5zDQpwcmlvciB0byA2MCBkYXlzIGFmdGVyIHRoZSBjZXNzYXRpb24uDQoNCiAgTW9yZW92ZXIsIHlvdXIgbGljZW5zZSBmcm9tIGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzDQpyZWluc3RhdGVkIHBlcm1hbmVudGx5IGlmIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vdGlmaWVzIHlvdSBvZiB0aGUNCnZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUNCnJlY2VpdmVkIG5vdGljZSBvZiB2aW9sYXRpb24gb2YgdGhpcyBMaWNlbnNlIChmb3IgYW55IHdvcmspIGZyb20gdGhhdA0KY29weXJpZ2h0IGhvbGRlciwgYW5kIHlvdSBjdXJlIHRoZSB2aW9sYXRpb24gcHJpb3IgdG8gMzAgZGF5cyBhZnRlcg0KeW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuDQoNCiAgVGVybWluYXRpb24gb2YgeW91ciByaWdodHMgdW5kZXIgdGhpcyBzZWN0aW9uIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUNCmxpY2Vuc2VzIG9mIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcg0KdGhpcyBMaWNlbnNlLiAgSWYgeW91ciByaWdodHMgaGF2ZSBiZWVuIHRlcm1pbmF0ZWQgYW5kIG5vdCBwZXJtYW5lbnRseQ0KcmVpbnN0YXRlZCwgeW91IGRvIG5vdCBxdWFsaWZ5IHRvIHJlY2VpdmUgbmV3IGxpY2Vuc2VzIGZvciB0aGUgc2FtZQ0KbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC4NCg0KICA5LiBBY2NlcHRhbmNlIE5vdCBSZXF1aXJlZCBmb3IgSGF2aW5nIENvcGllcy4NCg0KICBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlIGluIG9yZGVyIHRvIHJlY2VpdmUgb3INCnJ1biBhIGNvcHkgb2YgdGhlIFByb2dyYW0uICBBbmNpbGxhcnkgcHJvcGFnYXRpb24gb2YgYSBjb3ZlcmVkIHdvcmsNCm9jY3VycmluZyBzb2xlbHkgYXMgYSBjb25zZXF1ZW5jZSBvZiB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uDQp0byByZWNlaXZlIGEgY29weSBsaWtld2lzZSBkb2VzIG5vdCByZXF1aXJlIGFjY2VwdGFuY2UuICBIb3dldmVyLA0Kbm90aGluZyBvdGhlciB0aGFuIHRoaXMgTGljZW5zZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gcHJvcGFnYXRlIG9yDQptb2RpZnkgYW55IGNvdmVyZWQgd29yay4gIFRoZXNlIGFjdGlvbnMgaW5mcmluZ2UgY29weXJpZ2h0IGlmIHlvdSBkbw0Kbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5IG1vZGlmeWluZyBvciBwcm9wYWdhdGluZyBhDQpjb3ZlcmVkIHdvcmssIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLg0KDQogIDEwLiBBdXRvbWF0aWMgTGljZW5zaW5nIG9mIERvd25zdHJlYW0gUmVjaXBpZW50cy4NCg0KICBFYWNoIHRpbWUgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5DQpyZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUgb3JpZ2luYWwgbGljZW5zb3JzLCB0byBydW4sIG1vZGlmeSBhbmQNCnByb3BhZ2F0ZSB0aGF0IHdvcmssIHN1YmplY3QgdG8gdGhpcyBMaWNlbnNlLiAgWW91IGFyZSBub3QgcmVzcG9uc2libGUNCmZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHdpdGggdGhpcyBMaWNlbnNlLg0KDQogIEFuICJlbnRpdHkgdHJhbnNhY3Rpb24iIGlzIGEgdHJhbnNhY3Rpb24gdHJhbnNmZXJyaW5nIGNvbnRyb2wgb2YgYW4NCm9yZ2FuaXphdGlvbiwgb3Igc3Vic3RhbnRpYWxseSBhbGwgYXNzZXRzIG9mIG9uZSwgb3Igc3ViZGl2aWRpbmcgYW4NCm9yZ2FuaXphdGlvbiwgb3IgbWVyZ2luZyBvcmdhbml6YXRpb25zLiAgSWYgcHJvcGFnYXRpb24gb2YgYSBjb3ZlcmVkDQp3b3JrIHJlc3VsdHMgZnJvbSBhbiBlbnRpdHkgdHJhbnNhY3Rpb24sIGVhY2ggcGFydHkgdG8gdGhhdA0KdHJhbnNhY3Rpb24gd2hvIHJlY2VpdmVzIGEgY29weSBvZiB0aGUgd29yayBhbHNvIHJlY2VpdmVzIHdoYXRldmVyDQpsaWNlbnNlcyB0byB0aGUgd29yayB0aGUgcGFydHkncyBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCBoYWQgb3IgY291bGQNCmdpdmUgdW5kZXIgdGhlIHByZXZpb3VzIHBhcmFncmFwaCwgcGx1cyBhIHJpZ2h0IHRvIHBvc3Nlc3Npb24gb2YgdGhlDQpDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBmcm9tIHRoZSBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCwgaWYNCnRoZSBwcmVkZWNlc3NvciBoYXMgaXQgb3IgY2FuIGdldCBpdCB3aXRoIHJlYXNvbmFibGUgZWZmb3J0cy4NCg0KICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25zIG9uIHRoZSBleGVyY2lzZSBvZiB0aGUNCnJpZ2h0cyBncmFudGVkIG9yIGFmZmlybWVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEZvciBleGFtcGxlLCB5b3UgbWF5DQpub3QgaW1wb3NlIGEgbGljZW5zZSBmZWUsIHJveWFsdHksIG9yIG90aGVyIGNoYXJnZSBmb3IgZXhlcmNpc2Ugb2YNCnJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGlnYXRpb24NCihpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0DQphbnkgcGF0ZW50IGNsYWltIGlzIGluZnJpbmdlZCBieSBtYWtpbmcsIHVzaW5nLCBzZWxsaW5nLCBvZmZlcmluZyBmb3INCnNhbGUsIG9yIGltcG9ydGluZyB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBpdC4NCg0KICAxMS4gUGF0ZW50cy4NCg0KICBBICJjb250cmlidXRvciIgaXMgYSBjb3B5cmlnaHQgaG9sZGVyIHdobyBhdXRob3JpemVzIHVzZSB1bmRlciB0aGlzDQpMaWNlbnNlIG9mIHRoZSBQcm9ncmFtIG9yIGEgd29yayBvbiB3aGljaCB0aGUgUHJvZ3JhbSBpcyBiYXNlZC4gIFRoZQ0Kd29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29udHJpYnV0b3IncyAiY29udHJpYnV0b3IgdmVyc2lvbiIuDQoNCiAgQSBjb250cmlidXRvcidzICJlc3NlbnRpYWwgcGF0ZW50IGNsYWltcyIgYXJlIGFsbCBwYXRlbnQgY2xhaW1zDQpvd25lZCBvciBjb250cm9sbGVkIGJ5IHRoZSBjb250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9yDQpoZXJlYWZ0ZXIgYWNxdWlyZWQsIHRoYXQgd291bGQgYmUgaW5mcmluZ2VkIGJ5IHNvbWUgbWFubmVyLCBwZXJtaXR0ZWQNCmJ5IHRoaXMgTGljZW5zZSwgb2YgbWFraW5nLCB1c2luZywgb3Igc2VsbGluZyBpdHMgY29udHJpYnV0b3IgdmVyc2lvbiwNCmJ1dCBkbyBub3QgaW5jbHVkZSBjbGFpbXMgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgb25seSBhcyBhDQpjb25zZXF1ZW5jZSBvZiBmdXJ0aGVyIG1vZGlmaWNhdGlvbiBvZiB0aGUgY29udHJpYnV0b3IgdmVyc2lvbi4gIEZvcg0KcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAiY29udHJvbCIgaW5jbHVkZXMgdGhlIHJpZ2h0IHRvIGdyYW50DQpwYXRlbnQgc3VibGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YNCnRoaXMgTGljZW5zZS4NCg0KICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQ0KcGF0ZW50IGxpY2Vuc2UgdW5kZXIgdGhlIGNvbnRyaWJ1dG9yJ3MgZXNzZW50aWFsIHBhdGVudCBjbGFpbXMsIHRvDQptYWtlLCB1c2UsIHNlbGwsIG9mZmVyIGZvciBzYWxlLCBpbXBvcnQgYW5kIG90aGVyd2lzZSBydW4sIG1vZGlmeSBhbmQNCnByb3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24uDQoNCiAgSW4gdGhlIGZvbGxvd2luZyB0aHJlZSBwYXJhZ3JhcGhzLCBhICJwYXRlbnQgbGljZW5zZSIgaXMgYW55IGV4cHJlc3MNCmFncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVyIGRlbm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudA0KKHN1Y2ggYXMgYW4gZXhwcmVzcyBwZXJtaXNzaW9uIHRvIHByYWN0aWNlIGEgcGF0ZW50IG9yIGNvdmVuYW50IG5vdCB0bw0Kc3VlIGZvciBwYXRlbnQgaW5mcmluZ2VtZW50KS4gIFRvICJncmFudCIgc3VjaCBhIHBhdGVudCBsaWNlbnNlIHRvIGENCnBhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0bWVudCBub3QgdG8gZW5mb3JjZSBhDQpwYXRlbnQgYWdhaW5zdCB0aGUgcGFydHkuDQoNCiAgSWYgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBwYXRlbnQgbGljZW5zZSwNCmFuZCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2Ugb2YgdGhlIHdvcmsgaXMgbm90IGF2YWlsYWJsZSBmb3IgYW55b25lDQp0byBjb3B5LCBmcmVlIG9mIGNoYXJnZSBhbmQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwgdGhyb3VnaCBhDQpwdWJsaWNseSBhdmFpbGFibGUgbmV0d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5zLA0KdGhlbiB5b3UgbXVzdCBlaXRoZXIgKDEpIGNhdXNlIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSB0byBiZSBzbw0KYXZhaWxhYmxlLCBvciAoMikgYXJyYW5nZSB0byBkZXByaXZlIHlvdXJzZWxmIG9mIHRoZSBiZW5lZml0IG9mIHRoZQ0KcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrLCBvciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXINCmNvbnNpc3RlbnQgd2l0aCB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoaXMgTGljZW5zZSwgdG8gZXh0ZW5kIHRoZSBwYXRlbnQNCmxpY2Vuc2UgdG8gZG93bnN0cmVhbSByZWNpcGllbnRzLiAgIktub3dpbmdseSByZWx5aW5nIiBtZWFucyB5b3UgaGF2ZQ0KYWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQgbGljZW5zZSwgeW91ciBjb252ZXlpbmcgdGhlDQpjb3ZlcmVkIHdvcmsgaW4gYSBjb3VudHJ5LCBvciB5b3VyIHJlY2lwaWVudCdzIHVzZSBvZiB0aGUgY292ZXJlZCB3b3JrDQppbiBhIGNvdW50cnksIHdvdWxkIGluZnJpbmdlIG9uZSBvciBtb3JlIGlkZW50aWZpYWJsZSBwYXRlbnRzIGluIHRoYXQNCmNvdW50cnkgdGhhdCB5b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuDQoNCiAgSWYsIHB1cnN1YW50IHRvIG9yIGluIGNvbm5lY3Rpb24gd2l0aCBhIHNpbmdsZSB0cmFuc2FjdGlvbiBvcg0KYXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJpbmcgY29udmV5YW5jZSBvZiwgYQ0KY292ZXJlZCB3b3JrLCBhbmQgZ3JhbnQgYSBwYXRlbnQgbGljZW5zZSB0byBzb21lIG9mIHRoZSBwYXJ0aWVzDQpyZWNlaXZpbmcgdGhlIGNvdmVyZWQgd29yayBhdXRob3JpemluZyB0aGVtIHRvIHVzZSwgcHJvcGFnYXRlLCBtb2RpZnkNCm9yIGNvbnZleSBhIHNwZWNpZmljIGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vuc2UNCnlvdSBncmFudCBpcyBhdXRvbWF0aWNhbGx5IGV4dGVuZGVkIHRvIGFsbCByZWNpcGllbnRzIG9mIHRoZSBjb3ZlcmVkDQp3b3JrIGFuZCB3b3JrcyBiYXNlZCBvbiBpdC4NCg0KICBBIHBhdGVudCBsaWNlbnNlIGlzICJkaXNjcmltaW5hdG9yeSIgaWYgaXQgZG9lcyBub3QgaW5jbHVkZSB3aXRoaW4NCnRoZSBzY29wZSBvZiBpdHMgY292ZXJhZ2UsIHByb2hpYml0cyB0aGUgZXhlcmNpc2Ugb2YsIG9yIGlzDQpjb25kaXRpb25lZCBvbiB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBvciBtb3JlIG9mIHRoZSByaWdodHMgdGhhdCBhcmUNCnNwZWNpZmljYWxseSBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIFlvdSBtYXkgbm90IGNvbnZleSBhIGNvdmVyZWQNCndvcmsgaWYgeW91IGFyZSBhIHBhcnR5IHRvIGFuIGFycmFuZ2VtZW50IHdpdGggYSB0aGlyZCBwYXJ0eSB0aGF0IGlzDQppbiB0aGUgYnVzaW5lc3Mgb2YgZGlzdHJpYnV0aW5nIHNvZnR3YXJlLCB1bmRlciB3aGljaCB5b3UgbWFrZSBwYXltZW50DQp0byB0aGUgdGhpcmQgcGFydHkgYmFzZWQgb24gdGhlIGV4dGVudCBvZiB5b3VyIGFjdGl2aXR5IG9mIGNvbnZleWluZw0KdGhlIHdvcmssIGFuZCB1bmRlciB3aGljaCB0aGUgdGhpcmQgcGFydHkgZ3JhbnRzLCB0byBhbnkgb2YgdGhlDQpwYXJ0aWVzIHdobyB3b3VsZCByZWNlaXZlIHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5b3UsIGEgZGlzY3JpbWluYXRvcnkNCnBhdGVudCBsaWNlbnNlIChhKSBpbiBjb25uZWN0aW9uIHdpdGggY29waWVzIG9mIHRoZSBjb3ZlcmVkIHdvcmsNCmNvbnZleWVkIGJ5IHlvdSAob3IgY29waWVzIG1hZGUgZnJvbSB0aG9zZSBjb3BpZXMpLCBvciAoYikgcHJpbWFyaWx5DQpmb3IgYW5kIGluIGNvbm5lY3Rpb24gd2l0aCBzcGVjaWZpYyBwcm9kdWN0cyBvciBjb21waWxhdGlvbnMgdGhhdA0KY29udGFpbiB0aGUgY292ZXJlZCB3b3JrLCB1bmxlc3MgeW91IGVudGVyZWQgaW50byB0aGF0IGFycmFuZ2VtZW50LA0Kb3IgdGhhdCBwYXRlbnQgbGljZW5zZSB3YXMgZ3JhbnRlZCwgcHJpb3IgdG8gMjggTWFyY2ggMjAwNy4NCg0KICBOb3RoaW5nIGluIHRoaXMgTGljZW5zZSBzaGFsbCBiZSBjb25zdHJ1ZWQgYXMgZXhjbHVkaW5nIG9yIGxpbWl0aW5nDQphbnkgaW1wbGllZCBsaWNlbnNlIG9yIG90aGVyIGRlZmVuc2VzIHRvIGluZnJpbmdlbWVudCB0aGF0IG1heQ0Kb3RoZXJ3aXNlIGJlIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYXBwbGljYWJsZSBwYXRlbnQgbGF3Lg0KDQogIDEyLiBObyBTdXJyZW5kZXIgb2YgT3RoZXJzJyBGcmVlZG9tLg0KDQogIElmIGNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3INCm90aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QNCmV4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90IGNvbnZleSBhDQpjb3ZlcmVkIHdvcmsgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMNCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UgbWF5DQpub3QgY29udmV5IGl0IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiB5b3UgYWdyZWUgdG8gdGVybXMgdGhhdCBvYmxpZ2F0ZSB5b3UNCnRvIGNvbGxlY3QgYSByb3lhbHR5IGZvciBmdXJ0aGVyIGNvbnZleWluZyBmcm9tIHRob3NlIHRvIHdob20geW91IGNvbnZleQ0KdGhlIFByb2dyYW0sIHRoZSBvbmx5IHdheSB5b3UgY291bGQgc2F0aXNmeSBib3RoIHRob3NlIHRlcm1zIGFuZCB0aGlzDQpMaWNlbnNlIHdvdWxkIGJlIHRvIHJlZnJhaW4gZW50aXJlbHkgZnJvbSBjb252ZXlpbmcgdGhlIFByb2dyYW0uDQoNCiAgMTMuIFVzZSB3aXRoIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQoNCiAgTm90d2l0aHN0YW5kaW5nIGFueSBvdGhlciBwcm92aXNpb24gb2YgdGhpcyBMaWNlbnNlLCB5b3UgaGF2ZQ0KcGVybWlzc2lvbiB0byBsaW5rIG9yIGNvbWJpbmUgYW55IGNvdmVyZWQgd29yayB3aXRoIGEgd29yayBsaWNlbnNlZA0KdW5kZXIgdmVyc2lvbiAzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW50byBhIHNpbmdsZQ0KY29tYmluZWQgd29yaywgYW5kIHRvIGNvbnZleSB0aGUgcmVzdWx0aW5nIHdvcmsuICBUaGUgdGVybXMgb2YgdGhpcw0KTGljZW5zZSB3aWxsIGNvbnRpbnVlIHRvIGFwcGx5IHRvIHRoZSBwYXJ0IHdoaWNoIGlzIHRoZSBjb3ZlcmVkIHdvcmssDQpidXQgdGhlIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsDQpzZWN0aW9uIDEzLCBjb25jZXJuaW5nIGludGVyYWN0aW9uIHRocm91Z2ggYSBuZXR3b3JrIHdpbGwgYXBwbHkgdG8gdGhlDQpjb21iaW5hdGlvbiBhcyBzdWNoLg0KDQogIDE0LiBSZXZpc2VkIFZlcnNpb25zIG9mIHRoaXMgTGljZW5zZS4NCg0KICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucyBvZg0KdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMgd2lsbA0KYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvDQphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4NCg0KICBFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZQ0KUHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVyYWwNClB1YmxpYyBMaWNlbnNlICJvciBhbnkgbGF0ZXIgdmVyc2lvbiIgYXBwbGllcyB0byBpdCwgeW91IGhhdmUgdGhlDQpvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBlaXRoZXIgb2YgdGhhdCBudW1iZXJlZA0KdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUNCkZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YgdGhlDQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQNCmJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQoNCiAgSWYgdGhlIFByb2dyYW0gc3BlY2lmaWVzIHRoYXQgYSBwcm94eSBjYW4gZGVjaWRlIHdoaWNoIGZ1dHVyZQ0KdmVyc2lvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHByb3h5J3MNCnB1YmxpYyBzdGF0ZW1lbnQgb2YgYWNjZXB0YW5jZSBvZiBhIHZlcnNpb24gcGVybWFuZW50bHkgYXV0aG9yaXplcyB5b3UNCnRvIGNob29zZSB0aGF0IHZlcnNpb24gZm9yIHRoZSBQcm9ncmFtLg0KDQogIExhdGVyIGxpY2Vuc2UgdmVyc2lvbnMgbWF5IGdpdmUgeW91IGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50DQpwZXJtaXNzaW9ucy4gIEhvd2V2ZXIsIG5vIGFkZGl0aW9uYWwgb2JsaWdhdGlvbnMgYXJlIGltcG9zZWQgb24gYW55DQphdXRob3Igb3IgY29weXJpZ2h0IGhvbGRlciBhcyBhIHJlc3VsdCBvZiB5b3VyIGNob29zaW5nIHRvIGZvbGxvdyBhDQpsYXRlciB2ZXJzaW9uLg0KDQogIDE1LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5Lg0KDQogIFRIRVJFIElTIE5PIFdBUlJBTlRZIEZPUiBUSEUgUFJPR1JBTSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkNCkFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQNCkhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMgUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkNCk9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTU0VEIE9SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLA0KVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUyBUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0NCklTIFdJVEggWU9VLiAgU0hPVUxEIFRIRSBQUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRSBUSEUgQ09TVCBPRg0KQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLg0KDQogIDE2LiBMaW1pdGF0aW9uIG9mIExpYWJpbGl0eS4NCg0KICBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcNCldJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTU9ESUZJRVMgQU5EL09SIENPTlZFWVMNClRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWQ0KR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORyBPVVQgT0YgVEhFDQpVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBMT1NTIE9GDQpEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRA0KUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUiBQUk9HUkFNUyksDQpFVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQpTVUNIIERBTUFHRVMuDQoNCiAgMTcuIEludGVycHJldGF0aW9uIG9mIFNlY3Rpb25zIDE1IGFuZCAxNi4NCg0KICBJZiB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50eSBhbmQgbGltaXRhdGlvbiBvZiBsaWFiaWxpdHkgcHJvdmlkZWQNCmFib3ZlIGNhbm5vdCBiZSBnaXZlbiBsb2NhbCBsZWdhbCBlZmZlY3QgYWNjb3JkaW5nIHRvIHRoZWlyIHRlcm1zLA0KcmV2aWV3aW5nIGNvdXJ0cyBzaGFsbCBhcHBseSBsb2NhbCBsYXcgdGhhdCBtb3N0IGNsb3NlbHkgYXBwcm94aW1hdGVzDQphbiBhYnNvbHV0ZSB3YWl2ZXIgb2YgYWxsIGNpdmlsIGxpYWJpbGl0eSBpbiBjb25uZWN0aW9uIHdpdGggdGhlDQpQcm9ncmFtLCB1bmxlc3MgYSB3YXJyYW50eSBvciBhc3N1bXB0aW9uIG9mIGxpYWJpbGl0eSBhY2NvbXBhbmllcyBhDQpjb3B5IG9mIHRoZSBQcm9ncmFtIGluIHJldHVybiBmb3IgYSBmZWUuDQoNCiAgICAgICAgICAgICAgICAgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUw0KDQogICAgICAgICAgICBIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMNCg0KICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBwcm9ncmFtLCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0DQpwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0DQpmcmVlIHNvZnR3YXJlIHdoaWNoIGV2ZXJ5b25lIGNhbiByZWRpc3RyaWJ1dGUgYW5kIGNoYW5nZSB1bmRlciB0aGVzZSB0ZXJtcy4NCg0KICBUbyBkbyBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gIEl0IGlzIHNhZmVzdA0KdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQ0Kc3RhdGUgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdA0KdGhlICJjb3B5cmlnaHQiIGxpbmUgYW5kIGEgcG9pbnRlciB0byB3aGVyZSB0aGUgZnVsbCBub3RpY2UgaXMgZm91bmQuDQoNCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgcHJvZ3JhbSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPg0KICAgIENvcHlyaWdodCAoQykgPHllYXI+ICA8bmFtZSBvZiBhdXRob3I+DQoNCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0KICAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3INCiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KDQogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlDQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCg0KICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlDQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uDQoNCkFsc28gYWRkIGluZm9ybWF0aW9uIG9uIGhvdyB0byBjb250YWN0IHlvdSBieSBlbGVjdHJvbmljIGFuZCBwYXBlciBtYWlsLg0KDQogIElmIHRoZSBwcm9ncmFtIGRvZXMgdGVybWluYWwgaW50ZXJhY3Rpb24sIG1ha2UgaXQgb3V0cHV0IGEgc2hvcnQNCm5vdGljZSBsaWtlIHRoaXMgd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToNCg0KICAgIDxwcm9ncmFtPiAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4NCiAgICBUaGlzIHByb2dyYW0gY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZOyBmb3IgZGV0YWlscyB0eXBlIGBzaG93IHcnLg0KICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQNCiAgICB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnM7IHR5cGUgYHNob3cgYycgZm9yIGRldGFpbHMuDQoNClRoZSBoeXBvdGhldGljYWwgY29tbWFuZHMgYHNob3cgdycgYW5kIGBzaG93IGMnIHNob3VsZCBzaG93IHRoZSBhcHByb3ByaWF0ZQ0KcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBPZiBjb3Vyc2UsIHlvdXIgcHJvZ3JhbSdzIGNvbW1hbmRzDQptaWdodCBiZSBkaWZmZXJlbnQ7IGZvciBhIEdVSSBpbnRlcmZhY2UsIHlvdSB3b3VsZCB1c2UgYW4gImFib3V0IGJveCIuDQoNCiAgWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHNjaG9vbCwNCmlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9yIHRoZSBwcm9ncmFtLCBpZiBuZWNlc3NhcnkuDQpGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzLCBhbmQgaG93IHRvIGFwcGx5IGFuZCBmb2xsb3cgdGhlIEdOVSBHUEwsIHNlZQ0KPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lg0KDQogIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBkb2VzIG5vdCBwZXJtaXQgaW5jb3Jwb3JhdGluZyB5b3VyIHByb2dyYW0NCmludG8gcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdQ0KbWF5IGNvbnNpZGVyIGl0IG1vcmUgdXNlZnVsIHRvIHBlcm1pdCBsaW5raW5nIHByb3ByaWV0YXJ5IGFwcGxpY2F0aW9ucyB3aXRoDQp0aGUgbGlicmFyeS4gIElmIHRoaXMgaXMgd2hhdCB5b3Ugd2FudCB0byBkbywgdXNlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwNClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLiAgQnV0IGZpcnN0LCBwbGVhc2UgcmVhZA0KPGh0dHA6Ly93d3cuZ251Lm9yZy9waGlsb3NvcGh5L3doeS1ub3QtbGdwbC5odG1sPi4NCg==]]></data>
	</file>
	<file>
	  <filename>/docs/gpl.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[VGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIChHUEwpDQpWZXJzaW9uIDIsIEp1bmUgMTk5MQ0KDQpDb3B5cmlnaHQgKEMpIDE5ODksIDE5OTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuDQo1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KDQpFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMNCm9mIHRoaXMgbGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLg0KDQpQcmVhbWJsZQ0KDQpUaGUgbGljZW5zZXMgZm9yIG1vc3Qgc29mdHdhcmUgYXJlIGRlc2lnbmVkIHRvIHRha2UgYXdheSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBpdC4gQnkgY29udHJhc3QsIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgZnJlZSBzb2Z0d2FyZS0tdG8gbWFrZSBzdXJlIHRoZSBzb2Z0d2FyZSBpcyBmcmVlIGZvciBhbGwgaXRzIHVzZXJzLiBUaGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBtb3N0IG9mIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8gdXNpbmcgaXQuIChTb21lIG90aGVyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBzb2Z0d2FyZSBpcyBjb3ZlcmVkIGJ5IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSBZb3UgY2FuIGFwcGx5IGl0IHRvIHlvdXIgcHJvZ3JhbXMsIHRvby4NCg0KV2hlbiB3ZSBzcGVhayBvZiBmcmVlIHNvZnR3YXJlLCB3ZSBhcmUgcmVmZXJyaW5nIHRvIGZyZWVkb20sIG5vdCBwcmljZS4gT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UgaGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRlIGNvcGllcyBvZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hhcmdlIGZvciB0aGlzIHNlcnZpY2UgaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQgaWYgeW91IHdhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQgaW4gbmV3IGZyZWUgcHJvZ3JhbXM7IGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLg0KDQpUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkIGFueW9uZSB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4gVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yIHlvdSBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZiB5b3UgbW9kaWZ5IGl0Lg0KDQpGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyIGdyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IGdpdmUgdGhlIHJlY2lwaWVudHMgYWxsIHRoZSByaWdodHMgdGhhdCB5b3UgaGF2ZS4gWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlIHNvdXJjZSBjb2RlLiBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkga25vdyB0aGVpciByaWdodHMuDQoNCldlIHByb3RlY3QgeW91ciByaWdodHMgd2l0aCB0d28gc3RlcHM6ICgxKSBjb3B5cmlnaHQgdGhlIHNvZnR3YXJlLCBhbmQgKDIpIG9mZmVyIHlvdSB0aGlzIGxpY2Vuc2Ugd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBzb2Z0d2FyZS4NCg0KQWxzbywgZm9yIGVhY2ggYXV0aG9yJ3MgcHJvdGVjdGlvbiBhbmQgb3Vycywgd2Ugd2FudCB0byBtYWtlIGNlcnRhaW4gdGhhdCBldmVyeW9uZSB1bmRlcnN0YW5kcyB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IGZvciB0aGlzIGZyZWUgc29mdHdhcmUuIElmIHRoZSBzb2Z0d2FyZSBpcyBtb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgd2Ugd2FudCBpdHMgcmVjaXBpZW50cyB0byBrbm93IHRoYXQgd2hhdCB0aGV5IGhhdmUgaXMgbm90IHRoZSBvcmlnaW5hbCwgc28gdGhhdCBhbnkgcHJvYmxlbXMgaW50cm9kdWNlZCBieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbiB0aGUgb3JpZ2luYWwgYXV0aG9ycycgcmVwdXRhdGlvbnMuDQoNCkZpbmFsbHksIGFueSBmcmVlIHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZSBwcm9ncmFtIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIGluIGVmZmVjdCBtYWtpbmcgdGhlIHByb2dyYW0gcHJvcHJpZXRhcnkuIFRvIHByZXZlbnQgdGhpcywgd2UgaGF2ZSBtYWRlIGl0IGNsZWFyIHRoYXQgYW55IHBhdGVudCBtdXN0IGJlIGxpY2Vuc2VkIGZvciBldmVyeW9uZSdzIGZyZWUgdXNlIG9yIG5vdCBsaWNlbnNlZCBhdCBhbGwuDQoNClRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBmb2xsb3cuDQoNClRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBDT1BZSU5HLCBESVNUUklCVVRJT04gQU5EIE1PRElGSUNBVElPTg0KDQowLiBUaGlzIExpY2Vuc2UgYXBwbGllcyB0byBhbnkgcHJvZ3JhbSBvciBvdGhlciB3b3JrIHdoaWNoIGNvbnRhaW5zIGEgbm90aWNlIHBsYWNlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlciBzYXlpbmcgaXQgbWF5IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIFRoZSAiUHJvZ3JhbSIsIGJlbG93LCByZWZlcnMgdG8gYW55IHN1Y2ggcHJvZ3JhbSBvciB3b3JrLCBhbmQgYSAid29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSIgbWVhbnMgZWl0aGVyIHRoZSBQcm9ncmFtIG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXIgY29weXJpZ2h0IGxhdzogdGhhdCBpcyB0byBzYXksIGEgd29yayBjb250YWluaW5nIHRoZSBQcm9ncmFtIG9yIGEgcG9ydGlvbiBvZiBpdCwgZWl0aGVyIHZlcmJhdGltIG9yIHdpdGggbW9kaWZpY2F0aW9ucyBhbmQvb3IgdHJhbnNsYXRlZCBpbnRvIGFub3RoZXIgbGFuZ3VhZ2UuIChIZXJlaW5hZnRlciwgdHJhbnNsYXRpb24gaXMgaW5jbHVkZWQgd2l0aG91dCBsaW1pdGF0aW9uIGluIHRoZSB0ZXJtICJtb2RpZmljYXRpb24iLikgRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgInlvdSIuDQoNCkFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90IGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlOyB0aGV5IGFyZSBvdXRzaWRlIGl0cyBzY29wZS4gVGhlIGFjdCBvZiBydW5uaW5nIHRoZSBQcm9ncmFtIGlzIG5vdCByZXN0cmljdGVkLCBhbmQgdGhlIG91dHB1dCBmcm9tIHRoZSBQcm9ncmFtIGlzIGNvdmVyZWQgb25seSBpZiBpdHMgY29udGVudHMgY29uc3RpdHV0ZSBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0gKGluZGVwZW5kZW50IG9mIGhhdmluZyBiZWVuIG1hZGUgYnkgcnVubmluZyB0aGUgUHJvZ3JhbSkuIFdoZXRoZXIgdGhhdCBpcyB0cnVlIGRlcGVuZHMgb24gd2hhdCB0aGUgUHJvZ3JhbSBkb2VzLg0KDQoxLiBZb3UgbWF5IGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3Mgc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91IGNvbnNwaWN1b3VzbHkgYW5kIGFwcHJvcHJpYXRlbHkgcHVibGlzaCBvbiBlYWNoIGNvcHkgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBhbmQgZGlzY2xhaW1lciBvZiB3YXJyYW50eTsga2VlcCBpbnRhY3QgYWxsIHRoZSBub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkgd2FycmFudHk7IGFuZCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBQcm9ncmFtIGEgY29weSBvZiB0aGlzIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4NCg0KWW91IG1heSBjaGFyZ2UgYSBmZWUgZm9yIHRoZSBwaHlzaWNhbCBhY3Qgb2YgdHJhbnNmZXJyaW5nIGEgY29weSwgYW5kIHlvdSBtYXkgYXQgeW91ciBvcHRpb24gb2ZmZXIgd2FycmFudHkgcHJvdGVjdGlvbiBpbiBleGNoYW5nZSBmb3IgYSBmZWUuDQoNCjIuIFlvdSBtYXkgbW9kaWZ5IHlvdXIgY29weSBvciBjb3BpZXMgb2YgdGhlIFByb2dyYW0gb3IgYW55IHBvcnRpb24gb2YgaXQsIHRodXMgZm9ybWluZyBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0sIGFuZCBjb3B5IGFuZCBkaXN0cmlidXRlIHN1Y2ggbW9kaWZpY2F0aW9ucyBvciB3b3JrIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9uIDEgYWJvdmUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoNCg0KICAgIGEpIFlvdSBtdXN0IGNhdXNlIHRoZSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgeW91IGNoYW5nZWQgdGhlIGZpbGVzIGFuZCB0aGUgZGF0ZSBvZiBhbnkgY2hhbmdlLg0KDQogICAgYikgWW91IG11c3QgY2F1c2UgYW55IHdvcmsgdGhhdCB5b3UgZGlzdHJpYnV0ZSBvciBwdWJsaXNoLCB0aGF0IGluIHdob2xlIG9yIGluIHBhcnQgY29udGFpbnMgb3IgaXMgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtIG9yIGFueSBwYXJ0IHRoZXJlb2YsIHRvIGJlIGxpY2Vuc2VkIGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZCBwYXJ0aWVzIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UuDQoNCiAgICBjKSBJZiB0aGUgbW9kaWZpZWQgcHJvZ3JhbSBub3JtYWxseSByZWFkcyBjb21tYW5kcyBpbnRlcmFjdGl2ZWx5IHdoZW4gcnVuLCB5b3UgbXVzdCBjYXVzZSBpdCwgd2hlbiBzdGFydGVkIHJ1bm5pbmcgZm9yIHN1Y2ggaW50ZXJhY3RpdmUgdXNlIGluIHRoZSBtb3N0IG9yZGluYXJ5IHdheSwgdG8gcHJpbnQgb3IgZGlzcGxheSBhbiBhbm5vdW5jZW1lbnQgaW5jbHVkaW5nIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UgYW5kIGEgbm90aWNlIHRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgKG9yIGVsc2UsIHNheWluZyB0aGF0IHlvdSBwcm92aWRlIGEgd2FycmFudHkpIGFuZCB0aGF0IHVzZXJzIG1heSByZWRpc3RyaWJ1dGUgdGhlIHByb2dyYW0gdW5kZXIgdGhlc2UgY29uZGl0aW9ucywgYW5kIHRlbGxpbmcgdGhlIHVzZXIgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMgTGljZW5zZS4gKEV4Y2VwdGlvbjogaWYgdGhlIFByb2dyYW0gaXRzZWxmIGlzIGludGVyYWN0aXZlIGJ1dCBkb2VzIG5vdCBub3JtYWxseSBwcmludCBzdWNoIGFuIGFubm91bmNlbWVudCwgeW91ciB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtIGlzIG5vdCByZXF1aXJlZCB0byBwcmludCBhbiBhbm5vdW5jZW1lbnQuKQ0KDQpUaGVzZSByZXF1aXJlbWVudHMgYXBwbHkgdG8gdGhlIG1vZGlmaWVkIHdvcmsgYXMgYSB3aG9sZS4gSWYgaWRlbnRpZmlhYmxlIHNlY3Rpb25zIG9mIHRoYXQgd29yayBhcmUgbm90IGRlcml2ZWQgZnJvbSB0aGUgUHJvZ3JhbSwgYW5kIGNhbiBiZSByZWFzb25hYmx5IGNvbnNpZGVyZWQgaW5kZXBlbmRlbnQgYW5kIHNlcGFyYXRlIHdvcmtzIGluIHRoZW1zZWx2ZXMsIHRoZW4gdGhpcyBMaWNlbnNlLCBhbmQgaXRzIHRlcm1zLCBkbyBub3QgYXBwbHkgdG8gdGhvc2Ugc2VjdGlvbnMgd2hlbiB5b3UgZGlzdHJpYnV0ZSB0aGVtIGFzIHNlcGFyYXRlIHdvcmtzLiBCdXQgd2hlbiB5b3UgZGlzdHJpYnV0ZSB0aGUgc2FtZSBzZWN0aW9ucyBhcyBwYXJ0IG9mIGEgd2hvbGUgd2hpY2ggaXMgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCB0aGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3aG9sZSBtdXN0IGJlIG9uIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZSBlbnRpcmUgd2hvbGUsIGFuZCB0aHVzIHRvIGVhY2ggYW5kIGV2ZXJ5IHBhcnQgcmVnYXJkbGVzcyBvZiB3aG8gd3JvdGUgaXQuDQoNClRodXMsIGl0IGlzIG5vdCB0aGUgaW50ZW50IG9mIHRoaXMgc2VjdGlvbiB0byBjbGFpbSByaWdodHMgb3IgY29udGVzdCB5b3VyIHJpZ2h0cyB0byB3b3JrIHdyaXR0ZW4gZW50aXJlbHkgYnkgeW91OyByYXRoZXIsIHRoZSBpbnRlbnQgaXMgdG8gZXhlcmNpc2UgdGhlIHJpZ2h0IHRvIGNvbnRyb2wgdGhlIGRpc3RyaWJ1dGlvbiBvZiBkZXJpdmF0aXZlIG9yIGNvbGxlY3RpdmUgd29ya3MgYmFzZWQgb24gdGhlIFByb2dyYW0uDQoNCkluIGFkZGl0aW9uLCBtZXJlIGFnZ3JlZ2F0aW9uIG9mIGFub3RoZXIgd29yayBub3QgYmFzZWQgb24gdGhlIFByb2dyYW0gd2l0aCB0aGUgUHJvZ3JhbSAob3Igd2l0aCBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0pIG9uIGEgdm9sdW1lIG9mIGEgc3RvcmFnZSBvciBkaXN0cmlidXRpb24gbWVkaXVtIGRvZXMgbm90IGJyaW5nIHRoZSBvdGhlciB3b3JrIHVuZGVyIHRoZSBzY29wZSBvZiB0aGlzIExpY2Vuc2UuDQoNCjMuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYSB3b3JrIGJhc2VkIG9uIGl0LCB1bmRlciBTZWN0aW9uIDIpIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIGRvIG9uZSBvZiB0aGUgZm9sbG93aW5nOg0KDQogICAgYSkgQWNjb21wYW55IGl0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZSBzb3VyY2UgY29kZSwgd2hpY2ggbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBvbiBhIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZTsgb3IsDQoNCiAgICBiKSBBY2NvbXBhbnkgaXQgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJlZSB5ZWFycywgdG8gZ2l2ZSBhbnkgdGhpcmQgcGFydHksIGZvciBhIGNoYXJnZSBubyBtb3JlIHRoYW4geW91ciBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyBzb3VyY2UgZGlzdHJpYnV0aW9uLCBhIGNvbXBsZXRlIG1hY2hpbmUtcmVhZGFibGUgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgdG8gYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgb24gYSBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLA0KDQogICAgYykgQWNjb21wYW55IGl0IHdpdGggdGhlIGluZm9ybWF0aW9uIHlvdSByZWNlaXZlZCBhcyB0byB0aGUgb2ZmZXIgdG8gZGlzdHJpYnV0ZSBjb3JyZXNwb25kaW5nIHNvdXJjZSBjb2RlLiAoVGhpcyBhbHRlcm5hdGl2ZSBpcyBhbGxvd2VkIG9ubHkgZm9yIG5vbmNvbW1lcmNpYWwgZGlzdHJpYnV0aW9uIGFuZCBvbmx5IGlmIHlvdSByZWNlaXZlZCB0aGUgcHJvZ3JhbSBpbiBvYmplY3QgY29kZSBvciBleGVjdXRhYmxlIGZvcm0gd2l0aCBzdWNoIGFuIG9mZmVyLCBpbiBhY2NvcmQgd2l0aCBTdWJzZWN0aW9uIGIgYWJvdmUuKQ0KDQpUaGUgc291cmNlIGNvZGUgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiBGb3IgYW4gZXhlY3V0YWJsZSB3b3JrLCBjb21wbGV0ZSBzb3VyY2UgY29kZSBtZWFucyBhbGwgdGhlIHNvdXJjZSBjb2RlIGZvciBhbGwgbW9kdWxlcyBpdCBjb250YWlucywgcGx1cyBhbnkgYXNzb2NpYXRlZCBpbnRlcmZhY2UgZGVmaW5pdGlvbiBmaWxlcywgcGx1cyB0aGUgc2NyaXB0cyB1c2VkIHRvIGNvbnRyb2wgY29tcGlsYXRpb24gYW5kIGluc3RhbGxhdGlvbiBvZiB0aGUgZXhlY3V0YWJsZS4gSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIHNvdXJjZSBjb2RlIGRpc3RyaWJ1dGVkIG5lZWQgbm90IGluY2x1ZGUgYW55dGhpbmcgdGhhdCBpcyBub3JtYWxseSBkaXN0cmlidXRlZCAoaW4gZWl0aGVyIHNvdXJjZSBvciBiaW5hcnkgZm9ybSkgd2l0aCB0aGUgbWFqb3IgY29tcG9uZW50cyAoY29tcGlsZXIsIGtlcm5lbCwgYW5kIHNvIG9uKSBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSBydW5zLCB1bmxlc3MgdGhhdCBjb21wb25lbnQgaXRzZWxmIGFjY29tcGFuaWVzIHRoZSBleGVjdXRhYmxlLg0KDQpJZiBkaXN0cmlidXRpb24gb2YgZXhlY3V0YWJsZSBvciBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nIGFjY2VzcyB0byBjb3B5IGZyb20gYSBkZXNpZ25hdGVkIHBsYWNlLCB0aGVuIG9mZmVyaW5nIGVxdWl2YWxlbnQgYWNjZXNzIHRvIGNvcHkgdGhlIHNvdXJjZSBjb2RlIGZyb20gdGhlIHNhbWUgcGxhY2UgY291bnRzIGFzIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc291cmNlIGNvZGUsIGV2ZW4gdGhvdWdoIHRoaXJkIHBhcnRpZXMgYXJlIG5vdCBjb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLg0KDQo0LiBZb3UgbWF5IG5vdCBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIG9yIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gZXhjZXB0IGFzIGV4cHJlc3NseSBwcm92aWRlZCB1bmRlciB0aGlzIExpY2Vuc2UuIEFueSBhdHRlbXB0IG90aGVyd2lzZSB0byBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2Ugb3IgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBpcyB2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2UuIEhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLCBvciByaWdodHMsIGZyb20geW91IHVuZGVyIHRoaXMgTGljZW5zZSB3aWxsIG5vdCBoYXZlIHRoZWlyIGxpY2Vuc2VzIHRlcm1pbmF0ZWQgc28gbG9uZyBhcyBzdWNoIHBhcnRpZXMgcmVtYWluIGluIGZ1bGwgY29tcGxpYW5jZS4NCg0KNS4gWW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSwgc2luY2UgeW91IGhhdmUgbm90IHNpZ25lZCBpdC4gSG93ZXZlciwgbm90aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3IgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBvciBpdHMgZGVyaXZhdGl2ZSB3b3Jrcy4gVGhlc2UgYWN0aW9ucyBhcmUgcHJvaGliaXRlZCBieSBsYXcgaWYgeW91IGRvIG5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiBUaGVyZWZvcmUsIGJ5IG1vZGlmeWluZyBvciBkaXN0cmlidXRpbmcgdGhlIFByb2dyYW0gKG9yIGFueSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtKSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZCBhbGwgaXRzIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpbmcgb3IgbW9kaWZ5aW5nIHRoZSBQcm9ncmFtIG9yIHdvcmtzIGJhc2VkIG9uIGl0Lg0KDQo2LiBFYWNoIHRpbWUgeW91IHJlZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0pLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2FsbHkgcmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlIG9yaWdpbmFsIGxpY2Vuc29yIHRvIGNvcHksIGRpc3RyaWJ1dGUgb3IgbW9kaWZ5IHRoZSBQcm9ncmFtIHN1YmplY3QgdG8gdGhlc2UgdGVybXMgYW5kIGNvbmRpdGlvbnMuIFlvdSBtYXkgbm90IGltcG9zZSBhbnkgZnVydGhlciByZXN0cmljdGlvbnMgb24gdGhlIHJlY2lwaWVudHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uIFlvdSBhcmUgbm90IHJlc3BvbnNpYmxlIGZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHRvIHRoaXMgTGljZW5zZS4NCg0KNy4gSWYsIGFzIGEgY29uc2VxdWVuY2Ugb2YgYSBjb3VydCBqdWRnbWVudCBvciBhbGxlZ2F0aW9uIG9mIHBhdGVudCBpbmZyaW5nZW1lbnQgb3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVkIHRvIHBhdGVudCBpc3N1ZXMpLCBjb25kaXRpb25zIGFyZSBpbXBvc2VkIG9uIHlvdSAod2hldGhlciBieSBjb3VydCBvcmRlciwgYWdyZWVtZW50IG9yIG90aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QgZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4gSWYgeW91IGNhbm5vdCBkaXN0cmlidXRlIHNvIGFzIHRvIHNhdGlzZnkgc2ltdWx0YW5lb3VzbHkgeW91ciBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzIExpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UgbWF5IG5vdCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGF0IGFsbC4gRm9yIGV4YW1wbGUsIGlmIGEgcGF0ZW50IGxpY2Vuc2Ugd291bGQgbm90IHBlcm1pdCByb3lhbHR5LWZyZWUgcmVkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gYnkgYWxsIHRob3NlIHdobyByZWNlaXZlIGNvcGllcyBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggeW91LCB0aGVuIHRoZSBvbmx5IHdheSB5b3UgY291bGQgc2F0aXNmeSBib3RoIGl0IGFuZCB0aGlzIExpY2Vuc2Ugd291bGQgYmUgdG8gcmVmcmFpbiBlbnRpcmVseSBmcm9tIGRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbS4NCg0KSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0aW9uIGlzIGhlbGQgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyIGFueSBwYXJ0aWN1bGFyIGNpcmN1bXN0YW5jZSwgdGhlIGJhbGFuY2Ugb2YgdGhlIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gYXBwbHkgYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIgY2lyY3Vtc3RhbmNlcy4NCg0KSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueSBwYXRlbnRzIG9yIG90aGVyIHByb3BlcnR5IHJpZ2h0IGNsYWltcyBvciB0byBjb250ZXN0IHZhbGlkaXR5IG9mIGFueSBzdWNoIGNsYWltczsgdGhpcyBzZWN0aW9uIGhhcyB0aGUgc29sZSBwdXJwb3NlIG9mIHByb3RlY3RpbmcgdGhlIGludGVncml0eSBvZiB0aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtLCB3aGljaCBpcyBpbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuIE1hbnkgcGVvcGxlIGhhdmUgbWFkZSBnZW5lcm91cyBjb250cmlidXRpb25zIHRvIHRoZSB3aWRlIHJhbmdlIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHRocm91Z2ggdGhhdCBzeXN0ZW0gaW4gcmVsaWFuY2Ugb24gY29uc2lzdGVudCBhcHBsaWNhdGlvbiBvZiB0aGF0IHN5c3RlbTsgaXQgaXMgdXAgdG8gdGhlIGF1dGhvci9kb25vciB0byBkZWNpZGUgaWYgaGUgb3Igc2hlIGlzIHdpbGxpbmcgdG8gZGlzdHJpYnV0ZSBzb2Z0d2FyZSB0aHJvdWdoIGFueSBvdGhlciBzeXN0ZW0gYW5kIGEgbGljZW5zZWUgY2Fubm90IGltcG9zZSB0aGF0IGNob2ljZS4NCg0KVGhpcyBzZWN0aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVhciB3aGF0IGlzIGJlbGlldmVkIHRvIGJlIGEgY29uc2VxdWVuY2Ugb2YgdGhlIHJlc3Qgb2YgdGhpcyBMaWNlbnNlLg0KDQo4LiBJZiB0aGUgZGlzdHJpYnV0aW9uIGFuZC9vciB1c2Ugb2YgdGhlIFByb2dyYW0gaXMgcmVzdHJpY3RlZCBpbiBjZXJ0YWluIGNvdW50cmllcyBlaXRoZXIgYnkgcGF0ZW50cyBvciBieSBjb3B5cmlnaHRlZCBpbnRlcmZhY2VzLCB0aGUgb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBQcm9ncmFtIHVuZGVyIHRoaXMgTGljZW5zZSBtYXkgYWRkIGFuIGV4cGxpY2l0IGdlb2dyYXBoaWNhbCBkaXN0cmlidXRpb24gbGltaXRhdGlvbiBleGNsdWRpbmcgdGhvc2UgY291bnRyaWVzLCBzbyB0aGF0IGRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgb25seSBpbiBvciBhbW9uZyBjb3VudHJpZXMgbm90IHRodXMgZXhjbHVkZWQuIEluIHN1Y2ggY2FzZSwgdGhpcyBMaWNlbnNlIGluY29ycG9yYXRlcyB0aGUgbGltaXRhdGlvbiBhcyBpZiB3cml0dGVuIGluIHRoZSBib2R5IG9mIHRoaXMgTGljZW5zZS4NCg0KOS4gVGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuIFN1Y2ggbmV3IHZlcnNpb25zIHdpbGwgYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvIGFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLg0KDQpFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gSWYgdGhlIFByb2dyYW0gc3BlY2lmaWVzIGEgdmVyc2lvbiBudW1iZXIgb2YgdGhpcyBMaWNlbnNlIHdoaWNoIGFwcGxpZXMgdG8gaXQgYW5kICJhbnkgbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBlaXRoZXIgb2YgdGhhdCB2ZXJzaW9uIG9yIG9mIGFueSBsYXRlciB2ZXJzaW9uIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YgdGhpcyBMaWNlbnNlLCB5b3UgbWF5IGNob29zZSBhbnkgdmVyc2lvbiBldmVyIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KDQoxMC4gSWYgeW91IHdpc2ggdG8gaW5jb3Jwb3JhdGUgcGFydHMgb2YgdGhlIFByb2dyYW0gaW50byBvdGhlciBmcmVlIHByb2dyYW1zIHdob3NlIGRpc3RyaWJ1dGlvbiBjb25kaXRpb25zIGFyZSBkaWZmZXJlbnQsIHdyaXRlIHRvIHRoZSBhdXRob3IgdG8gYXNrIGZvciBwZXJtaXNzaW9uLiBGb3Igc29mdHdhcmUgd2hpY2ggaXMgY29weXJpZ2h0ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgd2Ugc29tZXRpbWVzIG1ha2UgZXhjZXB0aW9ucyBmb3IgdGhpcy4gT3VyIGRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMgb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMgb2YgYWxsIGRlcml2YXRpdmVzIG9mIG91ciBmcmVlIHNvZnR3YXJlIGFuZCBvZiBwcm9tb3RpbmcgdGhlIHNoYXJpbmcgYW5kIHJldXNlIG9mIHNvZnR3YXJlIGdlbmVyYWxseS4NCg0KTk8gV0FSUkFOVFkNCg0KMTEuIEJFQ0FVU0UgVEhFIFBST0dSQU0gSVMgTElDRU5TRUQgRlJFRSBPRiBDSEFSR0UsIFRIRVJFIElTIE5PIFdBUlJBTlRZIEZPUiBUSEUgUFJPR1JBTSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkgQVBQTElDQUJMRSBMQVcuIEVYQ0VQVCBXSEVOIE9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMgUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQgT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgUFJPR1JBTSBJUyBXSVRIIFlPVS4gU0hPVUxEIFRIRSBQUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRSBUSEUgQ09TVCBPRiBBTEwgTkVDRVNTQVJZIFNFUlZJQ0lORywgUkVQQUlSIE9SIENPUlJFQ1RJT04uDQoNCjEyLiBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcgV0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZIFdITyBNQVkgTU9ESUZZIEFORC9PUiBSRURJU1RSSUJVVEUgVEhFIFBST0dSQU0gQVMgUEVSTUlUVEVEIEFCT1ZFLCBCRSBMSUFCTEUgVE8gWU9VIEZPUiBEQU1BR0VTLCBJTkNMVURJTkcgQU5ZIEdFTkVSQUwsIFNQRUNJQUwsIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcgT1VUIE9GIFRIRSBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBMT1NTIE9GIERBVEEgT1IgREFUQSBCRUlORyBSRU5ERVJFRCBJTkFDQ1VSQVRFIE9SIExPU1NFUyBTVVNUQUlORUQgQlkgWU9VIE9SIFRISVJEIFBBUlRJRVMgT1IgQSBGQUlMVVJFIE9GIFRIRSBQUk9HUkFNIFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIgUFJPR1JBTVMpLCBFVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFUy4NCg0KRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05T]]></data>
	</file>
	<file>
	  <filename>/docs/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/function.assingfiles.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCiRyb3djbGFzcyA9ICdyb3cxJzsNCiRjYXRlZ29yeV9pZCA9IC0xIDsNCiRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCg0Kd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQ0Kew0KDQoJLy8JdmFyX2R1bXAoJHJvdyk7DQoJaWYoJHNob3doZWFkZXJzICYmICRjYXRlZ29yeV9pZCAhPSAgJHJvd1snY2F0ZWdvcnlfaWQnXSkNCgl7DQoJCS8vIGFkZGluZyBuZXcgY2F0ZWdvcnkgaGVhZGVyDQoJCSRvbmVyb3cgPSBuZXcgc3RkQ2xhc3MoKTsNCgkJJG9uZXJvdy0+aXRlbXR5cGUgPSAnaGVhZGVyJzsNCgkJJG9uZXJvdy0+aXRlbWxldmVsID0gKGludCkgJHJvd1snZGVwdGgnXTsNCgkJJG9uZXJvdy0+ZGVzY3JpcHRpb24gPSAkcm93WydjYXRlZ29yeV9kZXNjJ107DQoJCSRvbmVyb3ctPmFsaWFzID0gJHJvd1snY2F0ZWdvcnlfYWxpYXMnXTsNCgkJJG9uZXJvdy0+bmFtZSA9ICc8c3BhbiBpZD0iZG1jXycuJG9uZXJvdy0+YWxpYXMuJyIgPicuICRyb3dbJ2NhdGVnb3J5X25hbWUnXSAuICc8L3NwYW4+JzsNCgkJaWYoICFlbXB0eSgkc3ViY2F0ZWdvcmllc1skcm93WydjYXRlZ29yeV9pZCddXVsnaXRlbXMnXSApICkNCgkJew0KCQkJaWYoJGRlcHRoID09PSBmYWxzZSB8fCAkb25lcm93LT5pdGVtbGV2ZWwgLSAkYmFzZV9kZXB0aCA8ICRkZXB0aCApDQoJCQkJLy8gc3ViY2F0ZWdvcmllcyB3aGljaCBhcmUgaW4gc2V0IGRlcHRoDQoJCQkJZm9yZWFjaCggJHN1YmNhdGVnb3JpZXNbJHJvd1snY2F0ZWdvcnlfaWQnXV1bJ2l0ZW1zJ10gYXMgJGtjYXQgPT4gJHZjYXQpDQoJCQkJCSRzdWJjYXRlZ29yaWVzWyRyb3dbJ2NhdGVnb3J5X2lkJ11dWydpdGVtcyddWyRrY2F0XVsnbGluayddID0NCgkJCQkJCSc8YSBocmVmPSInLiRfU0VSVkVSWydSRVFVRVNUX1VSSSddLicjZG1jXycuJHZjYXRbJ2FsaWFzJ10uJyI+Jy4kdmNhdFsnbmFtZSddLic8L2E+JzsNCgkJCWVsc2UNCgkJCQkvLyBzdWJjYXRlZ29yaWVzIHdoaWNoIGFyZSBkZWVwZXIgdGhhbiBzZXQgZGVwdGgNCgkJCQlmb3JlYWNoKCAkc3ViY2F0ZWdvcmllc1skcm93WydjYXRlZ29yeV9pZCddXVsnaXRlbXMnXSBhcyAka2NhdCA9PiAkdmNhdCkNCgkJCQkJJHN1YmNhdGVnb3JpZXNbJHJvd1snY2F0ZWdvcnlfaWQnXV1bJ2l0ZW1zJ11bJGtjYXRdWydsaW5rJ10gPQ0KCQkJCQkJJHRoaXMtPkNyZWF0ZUNhdGVnb3J5TGluaygkaWQsICRyZXR1cm5pZCwgJHZjYXRbJ25hbWUnXSwgJHZjYXRbJ2FsaWFzJ10sJGRlcHRoKTsNCgkJfQ0KCQkkb25lcm93LT5zdWJjYXRlZ29yaWVzID0gJHN1YmNhdGVnb3JpZXNbJHJvd1snY2F0ZWdvcnlfaWQnXV1bJ2l0ZW1zJ107DQoNCgkJJGVudHJ5YXJyYXlbXSA9ICRvbmVyb3c7DQoJCSRjYXRlZ29yeV9pZCA9ICAkcm93WydjYXRlZ29yeV9pZCddIDsNCgl9DQoNCgkvLyBhZGRpbmcgaXRlbQ0KCSRvbmVyb3cgPSBuZXcgc3RkQ2xhc3MoKTsNCglmb3JlYWNoKCRyb3cgYXMgJGtleT0+JHZhbHVlKQ0KCQkkb25lcm93LT4ka2V5ID0gJHZhbHVlOw0KDQoJJG9uZXJvdy0+aXRlbXR5cGUgPSAnZmlsZSc7DQoJJG9uZXJvdy0+aXRlbWxldmVsID0gaXNzZXQoJHJvd1snZGVwdGgnXSkgPyAoaW50KSAkcm93WydkZXB0aCddOiAwOy8vKGludCkgJHJvd1snZGVwdGgnXTsNCgkkb25lcm93LT5pZCA9IChpbnQpICRyb3dbJ2ZpbGVfaWQnXTsNCgkkZmlsZW5hbWUgPSAkcm93WyduYW1lJ10uKCRyb3dbJ2V4dCddIT0nJz8nLicuICRyb3dbJ2V4dCddOicnKTsNCgkkb25lcm93LT5uYW1lID0gJGZpbGVuYW1lOw0KCSRvbmVyb3ctPmRlc2NyaXB0aW9uID0gJHJvd1snZGVzY3JpcHRpb24nXTsNCgkkb25lcm93LT50aHVtYiA9ICAhZW1wdHkoJHJvd1sndGh1bWJfcGF0aCddKSAgPyAkdGhpcy0+Q3JlYXRlRG93bmxvYWRMaW5rKCRpZCwkcmV0dXJuaWQsJzxpbWcgc3JjPSInLiAkY29uZmlnWyd1cGxvYWRzX3VybCddLicvJy5zdHJfcmVwbGFjZSggRElSRUNUT1JZX1NFUEFSQVRPUiwgJy8nLCAkcm93Wyd0aHVtYl9wYXRoJ10pIC4nIiAvPicsJHJvd1snYWxpYXMnXSkgOiAnJzsNCgkkb25lcm93LT50aHVtYl9wYXRoID0gICFlbXB0eSgkcm93Wyd0aHVtYl9wYXRoJ10pICA/ICRjb25maWdbJ3VwbG9hZHNfdXJsJ10uJy8nLnN0cl9yZXBsYWNlKCBESVJFQ1RPUllfU0VQQVJBVE9SLCAnLycsICRyb3dbJ3RodW1iX3BhdGgnXSkgOiAnJzsNCgkkb25lcm93LT5jb3VudGVyID0gJHJvd1snY291bnRlciddOw0KCSRvbmVyb3ctPmNvdW50ZXJsb2NhbGUgPSAkdGhpcy0+bGFuZygnY291bnRlcm5icicsIGFycmF5KCRyb3dbJ2NvdW50ZXInXSkpOw0KCSRvbmVyb3ctPmRldGFpbCA9ICR0aGlzLT5DcmVhdGVEZXRhaWxMaW5rKCRpZCwkcmV0dXJuaWQsJHRoaXMtPmxhbmcoJ2RldGFpbHMnKSwkcm93WydhbGlhcyddKTsNCgkkb25lcm93LT5kb3dubG9hZCA9ICR0aGlzLT5DcmVhdGVEb3dubG9hZExpbmsoJGlkLCRyZXR1cm5pZCwkZmlsZW5hbWUsJHJvd1snYWxpYXMnXSk7DQoJJG9uZXJvdy0+aHJlZiA9ICR0aGlzLT5DcmVhdGVEb3dubG9hZExpbmsoJGlkLCRyZXR1cm5pZCwkZmlsZW5hbWUsJHJvd1snYWxpYXMnXSx0cnVlKTsNCgkkb25lcm93LT5zaXplID0gJHRoaXMtPlRvSFJTaXplKCRyb3dbJ3NpemUnXSk7DQoJJG9uZXJvdy0+Y2F0ZWdvcmllcyA9ICR0aGlzLT5DcmVhdGVDYXRlZ29yeUxpbmtzKCRpZCwkcmV0dXJuaWQsJHJvd1snZmlsZV9pZCddLCAkZmlsZXNfY2F0ZWdvcmllcyApOw0KCSRvbmVyb3ctPmFjY2Vzc3R5cGVzID0gJHRoaXMtPkdldEFjY2Vzc1R5cGVzKCRyb3dbJ2FjY2Vzc3R5cGUnXSk7DQoJJG9uZXJvdy0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7DQoNCgkkZW50cnlhcnJheVtdID0gJG9uZXJvdzsNCgkoJHJvd2NsYXNzPT0icm93MSI/JHJvd2NsYXNzPSJyb3cyIjokcm93Y2xhc3M9InJvdzEiKTsNCn0NCi8vdmFyX2R1bXAoJGVudHJ5YXJyYXkpOw0KLy92YXJfZHVtcCgkdGVtcGxhdGUpOw0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRlbnRyeWFycmF5KTsNCiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJGVudHJ5YXJyYXkpKTsNCiRzbWFydHktPmFzc2lnbignbm9kb3dubG9hZHMnLCAkdGhpcy0+bGFuZygnbm9kb3dubG9hZHMnKSk7DQokc21hcnR5LT5hc3NpZ24oJ2JhY2t0b2xpc3RsaW5rJywgJzxhIGhyZWY9ImphdmFzY3JpcHQ6aGlzdG9yeS5iYWNrKCkiPicuJHRoaXMtPmxhbmcoJ2JhY2t0b2xpc3QnKS4nPC9hPicpOw0KDQoNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/function.mime_content_type.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEpNRG93bk1hbiAKIyBWZXJzaW9uOiAxLjAKIyBBdXRob3I6IEpvIE1vcmcKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIAojIFZlcnNpb246IDEuMC1SQzMKIyBBdXRob3I6IFN6eW1vbiDFgXVrYXN6Y3p5awojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEpNRG93bk1hbgojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwoKaWYoIWZ1bmN0aW9uX2V4aXN0cygnbWltZV9jb250ZW50X3R5cGUnKSkgCnsKICBpZihQSFBfVkVSU0lPTl9JRCA+PSA1MDMwMCkKICB7CiAgICBmdW5jdGlvbiBtaW1lX2NvbnRlbnRfdHlwZSgkZmlsZW5hbWUpCiAgICB7CiAgICAgIGlmKGNsYXNzX2V4aXN0cygnZmluZm8nLHRydWUpKQogICAgICB7CiAgICAgICAgJHJlc3VsdCA9IG5ldyBmaW5mbygpOwogICAgICAgIGlmIChpc19yZXNvdXJjZSgkcmVzdWx0KSA9PT0gdHJ1ZSkKICAgICAgICB7CiAgICAgICAgICByZXR1cm4gJHJlc3VsdC0+ZmlsZSgkZmlsZW5hbWUsIEZJTEVJTkZPX01JTUVfVFlQRSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgfQogICAgICBlbHNlewogICAgICAgIGlmKCBmaWxlX2V4aXN0cygkZmlsZW5hbWUpICkKICAgICAgICAgIHJldHVybiAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJzsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAgIH0KICB9CiAgZWxzZQogIHsKICAgIGZ1bmN0aW9uIG1pbWVfY29udGVudF90eXBlKCRmaWxlbmFtZSkgCiAgICB7CiAgICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2ZpbmZvX29wZW4nKSkgCiAgICAgIHsKICAgICAgICAkZmluZm8gPSBmaW5mb19vcGVuKEZJTEVJTkZPX01JTUUpOwogICAgICAgICRtaW1ldHlwZSA9IGZpbmZvX2ZpbGUoJGZpbmZvLCAkZmlsZW5hbWUpOwogICAgICAgIGZpbmZvX2Nsb3NlKCRmaW5mbyk7CiAgICAgICAgcmV0dXJuICRtaW1ldHlwZTsKICAgICAgfQogICAgICAkbWltZV90eXBlcyA9IGFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3R4dCcgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2h0bScgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaHRtbCcgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGhwJyA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjc3MnID0+ICd0ZXh0L2NzcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnanMnID0+ICdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdqc29uJyA9PiAnYXBwbGljYXRpb24vanNvbicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAneG1sJyA9PiAnYXBwbGljYXRpb24veG1sJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzd2YnID0+ICdhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmx2JyA9PiAndmlkZW8veC1mbHYnLAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGltYWdlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BuZycgPT4gJ2ltYWdlL3BuZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnanBlJyA9PiAnaW1hZ2UvanBlZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnanBlZycgPT4gJ2ltYWdlL2pwZWcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2pwZycgPT4gJ2ltYWdlL2pwZWcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZicgPT4gJ2ltYWdlL2dpZicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm1wJyA9PiAnaW1hZ2UvYm1wJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpY28nID0+ICdpbWFnZS92bmQubWljcm9zb2Z0Lmljb24nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZmYnID0+ICdpbWFnZS90aWZmJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aWYnID0+ICdpbWFnZS90aWZmJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdmcnID0+ICdpbWFnZS9zdmcreG1sJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdmd6JyA9PiAnaW1hZ2Uvc3ZnK3htbCcsCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJjaGl2ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd6aXAnID0+ICdhcHBsaWNhdGlvbi96aXAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JhcicgPT4gJ2FwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4ZScgPT4gJ2FwcGxpY2F0aW9uL3gtbXNkb3dubG9hZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXNpJyA9PiAnYXBwbGljYXRpb24veC1tc2Rvd25sb2FkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjYWInID0+ICdhcHBsaWNhdGlvbi92bmQubXMtY2FiLWNvbXByZXNzZWQnLAoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGF1ZGlvL3ZpZGVvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXAzJyA9PiAnYXVkaW8vbXBlZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXQnID0+ICd2aWRlby9xdWlja3RpbWUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vdicgPT4gJ3ZpZGVvL3F1aWNrdGltZScsCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRvYmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwZGYnID0+ICdhcHBsaWNhdGlvbi9wZGYnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BzZCcgPT4gJ2ltYWdlL3ZuZC5hZG9iZS5waG90b3Nob3AnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FpJyA9PiAnYXBwbGljYXRpb24vcG9zdHNjcmlwdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXBzJyA9PiAnYXBwbGljYXRpb24vcG9zdHNjcmlwdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHMnID0+ICdhcHBsaWNhdGlvbi9wb3N0c2NyaXB0JywKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtcyBvZmZpY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkb2MnID0+ICdhcHBsaWNhdGlvbi9tc3dvcmQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3J0ZicgPT4gJ2FwcGxpY2F0aW9uL3J0ZicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAneGxzJyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcHQnID0+ICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcsCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3BlbiBvZmZpY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvZHQnID0+ICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29kcycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5vYXNpcy5vcGVuZG9jdW1lbnQuc3ByZWFkc2hlZXQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAkZXh0ID0gc3RydG9sb3dlcihhcnJheV9wb3AoZXhwbG9kZSgnLicsJGZpbGVuYW1lKSkpOwogICAgICBpZiAoYXJyYXlfa2V5X2V4aXN0cygkZXh0LCAkbWltZV90eXBlcykpIAogICAgICB7CiAgICAgICAgcmV0dXJuICRtaW1lX3R5cGVzWyRleHRdOwogICAgICB9CiAgICAgIGVsc2UgCiAgICAgIHsKICAgICAgICByZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7CiAgICAgIH0KICAgIH0KICB9Cn0KPz4=]]></data>
	</file>
	<file>
	  <filename>/function.uploadfile.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEpNRG93bk1hbiAKIyBWZXJzaW9uOiAxLjAKIyBBdXRob3I6IEpvIE1vcmcKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIAojIFZlcnNpb246IDEuMC1SQzMKIyBBdXRob3I6IFN6eW1vbiDFgXVrYXN6Y3p5awojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEpNRG93bk1hbgojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwojaW5jbHVkZV9vbmNlKCJsaWIvc2ltcGxlLXVwbG9hZC9TaW1wbGVVcGxvYWQucGhwIik7IyBkZXByZWNhdGVkCiR1cGxvYWRlZCA9ICcnOwokZmlsZSA9ICcnOwokZl9jb250ZW50cyA9ICcnOwokZmlsZV9uYW1lID0gJyc7CiRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKCiRwYXJhbXNbJ3JhZGlvdSddID0gaXNzZXQoJHBhcmFtc1sncmFkaW91J10pID8gJHBhcmFtc1sncmFkaW91J10gOiBudWxsOyAjIGRlcHJlY2F0ZWQgKEpNKQoKaWYoIGlzc2V0KCRfRklMRVNbICRpZCAuICJmaWxlIl0pICYmICRyYWRpb19zZWwgPT0gJ25ldycpCnsKICAvLyB3ZSBoYXZlIG5ld2x5IHVwbG9hZGVkIGZpbGUKICAkZmlsZSA9ICRfRklMRVNbJGlkIC4gJ2ZpbGUnXTsKICAKICBpZiggJGZpbGVbJ3NpemUnXSA9PSAwKQogIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImVycm9yIikgLiAnICcgLiAkdGhpcy0+TGFuZygnbm90aGluZ3VwbG9hZGVkJykgKTsKICAgIHJldHVybjsKICB9CgogIGlmICggaXNfYXJyYXkoJGZpbGUpICkKICB7CiAgICAkZGlyID0gJGNvbmZpZ1sncm9vdF9wYXRoJ10gLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RpcicpIC4gRElSRUNUT1JZX1NFUEFSQVRPUjsKICAgIAogICAgdHJ5IAogICAgewogICAgICAkdXBsb2FkID0gam1kbV9maWxlX29wczo6TmV3VXBsb2FkKCk7CiAgICAgICR1cGxvYWQtPnNldFBhdGgoJGRpcik7CiAgICAgICR1cGxvYWQtPnNldENvbnRlbnRzKCRmaWxlKTsKICAgICAgCiAgICAgIAogICAgICAKICAgICAgaWYgKCEkdXBsb2FkLT51cGxvYWRGaWxlKCkpCiAgICAgIHsKICAgICAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCJlcnJvciIpLiIgIi4gJHRoaXMtPkxhbmcoJ3VuYWJsZXRvbW92ZScpKTsKICAgICAgICByZXR1cm47CiAgICAgIH0KICAgICAgJGZfY29udGVudHMgPSAkdXBsb2FkLT5nZXRDb250ZW50cygpOwogICAgfSAKICAgIGNhdGNoIChFeGNlcHRpb24gJGUpIAogICAgewogICAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCJlcnJvciIpLiIgIi4kZS0+Z2V0TWVzc2FnZSgpICk7CiAgICAgIHJldHVybjsKICAgIH0KICB9CiAgLy8gc2V0dGluZyB0aGluZ3MgZm9yIGRhdGFiYXNlCiAgJGZpbGVfbmFtZSA9IHN1YnN0ciggJGZpbGVbIm5hbWUiXSAsIDAgICwgc3RycnBvcyggJGZpbGVbIm5hbWUiXSAsICAkZl9jb250ZW50c1snZXh0J10gKS0xKTsKICAkZl9jb250ZW50c1sncGF0aCddID0gcmVhbHBhdGgoJGZfY29udGVudHNbJ3BhdGgnXSk7CiAgJGFkZGZpbGVkYiA9IHRydWU7Cgp9CmVsc2UgaWYgKGlzc2V0KCRwYXJhbXNbJ3VwbG9hZGVkJ10pICYmICRyYWRpb19zZWwgPT0gJ29sZCcpCnsKICAkdXBsb2FkZWQgPSAkY29uZmlnWydyb290X3BhdGgnXS5ESVJFQ1RPUllfU0VQQVJBVE9SLiRwYXJhbXNbJ3VwbG9hZGVkJ107CiAgaWYoICFmaWxlX2V4aXN0cygkdXBsb2FkZWQpICkKICB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCJmaWxlZG9lc250ZXhpc3RzIixhcnJheSgkdXBsb2FkZWQpKSk7CiAgICByZXR1cm47CiAgfQogICRmX2NvbnRlbnRzWydwYXRoJ10gPSByZWFscGF0aCgkdXBsb2FkZWQpOwoKICAkcGF0aF9wYXJ0cyA9IHBhdGhpbmZvKCRmX2NvbnRlbnRzWydwYXRoJ10pOwogICRmX2NvbnRlbnRzWydleHQnXSA9ICRwYXRoX3BhcnRzWydleHRlbnNpb24nXTsKICAkZmlsZV9uYW1lID0gc3Vic3RyKCAkcGF0aF9wYXJ0c1snYmFzZW5hbWUnXSAsIDAgICwgc3RycnBvcyggJHBhdGhfcGFydHNbJ2Jhc2VuYW1lJ10gLCAkcGF0aF9wYXJ0c1snZXh0ZW5zaW9uJ10gKS0xKTsKICAkZl9jb250ZW50c1sndHlwZSddID0gbWltZV9jb250ZW50X3R5cGUoJHVwbG9hZGVkKTsKICAkZl9jb250ZW50c1snc2l6ZSddID0gZmlsZXNpemUoJHVwbG9hZGVkKTsKICAkZl9jb250ZW50c1snbWQ1J10gPSBtZDVfZmlsZSgkdXBsb2FkZWQpOwogICRhZGRmaWxlZGIgPSB0cnVlOwp9CmVsc2VpZiAoaXNzZXQoJHBhcmFtc1snZXh0ZXJuYWwnXSkgJiYgJHJhZGlvX3NlbCA9PSAnZXh0ZXJuYWwnKQp7CgogIGlmKCFmdW5jdGlvbl9leGlzdHMoJ2N1cmxfZXhlYycpKQogIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoImN1cmxkb2VzbnRleGlzdHMiKSk7CiAgICByZXR1cm47CiAgfQogIAogIGlmKHN0cnBvcyggJHBhcmFtc1snZXh0ZXJuYWwnXSAgLCAnaHR0cDovLycpID09PSAwICkKICB7CiAgICAkcGFyYW1zWydleHRlcm5hbCddID0gc3Vic3RyKCRwYXJhbXNbJ2V4dGVybmFsJ10sIDcpOwogIH0KCiAgJHJlbW90ZUZpbGUgPSAnaHR0cDovLycgLiAkcGFyYW1zWydleHRlcm5hbCddOwogICRjaCA9IGN1cmxfaW5pdCgkcmVtb3RlRmlsZSk7CiAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX05PQk9EWSwgdHJ1ZSk7CiAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1JFVFVSTlRSQU5TRkVSLCB0cnVlKTsKICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSEVBREVSLCB0cnVlKTsKICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfRk9MTE9XTE9DQVRJT04sIHRydWUpOyAvL25vdCBuZWNlc3NhcnkgdW5sZXNzIHRoZSBmaWxlIHJlZGlyZWN0cyAobGlrZSB0aGUgUEhQIGV4YW1wbGUgd2UncmUgdXNpbmcgaGVyZSkKICAkZGF0YSA9IGN1cmxfZXhlYygkY2gpOwogIGN1cmxfY2xvc2UoJGNoKTsKICAKICBpZiAoJGRhdGEgPT09IGZhbHNlKSAKICB7CiAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCJjdXJsZmFpbGVkIikpOwogICAgcmV0dXJuOwogIH0KICAKICBpZiAocHJlZ19tYXRjaCgnL15IVFRQXC8xXC5bMDFdIChcZFxkXGQpLycsICRkYXRhLCAkbWF0Y2hlcykpIAogIHsKICAgICRzdGF0dXMgPSAoaW50KSRtYXRjaGVzWzFdOwogICAgCiAgICBpZigkc3RhdHVzID09IDQwNCkKICAgIHsKICAgICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygiZmlsZWRvZXNudGV4aXN0cyIsIGFycmF5KCRyZW1vdGVGaWxlKSkpOwogICAgICByZXR1cm47CiAgICB9CiAgfQoKICAkZl9jb250ZW50c1sncGF0aCddID0gJHJlbW90ZUZpbGU7CiAgCiAgaWYgKHByZWdfbWF0Y2goJy9Db250ZW50LUxlbmd0aDogKFxkKykvJywgJGRhdGEsICRtYXRjaGVzKSkgCiAgewogICAgJGZfY29udGVudHNbJ3NpemUnXSA9IChpbnQpJG1hdGNoZXNbMV07CiAgfQogIAogIGlmIChwcmVnX21hdGNoKCcvQ29udGVudC1UeXBlOiAoW1x3XC9fXC0rXSspLycsICRkYXRhLCAkbWF0Y2hlcykpIAogIHsKICAgICRmX2NvbnRlbnRzWyd0eXBlJ10gPSAkbWF0Y2hlc1sxXTsKICB9CgogICRmX2NvbnRlbnRzWydtZDUnXSA9ICRwYXJhbXNbJ21kNSddOwogICRwYXRoX3BhcnRzID0gcGF0aGluZm8oJGZfY29udGVudHNbJ3BhdGgnXSk7CiAgJGZfY29udGVudHNbJ2V4dCddID0gJHBhdGhfcGFydHNbJ2V4dGVuc2lvbiddOwogICRmaWxlX25hbWUgPSBzdWJzdHIoICRwYXRoX3BhcnRzWydiYXNlbmFtZSddICwgMCAgLCBzdHJycG9zKCAkcGF0aF9wYXJ0c1snYmFzZW5hbWUnXSAsICRwYXRoX3BhcnRzWydleHRlbnNpb24nXSApLTEpOwogICRhZGRmaWxlZGIgPSB0cnVlOwp9Cj8+]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhIAAgAOf/ACwtKy0uLDAyLzIzMTM0MjQ2Mzo7OT0/PEBBP0FCQEFDQUZIRUlKSEpLSUpMSk1PTFBST1NUUlxeW15gXWxua3FzcHN1cjGUAjKVBDuTAnd5dnh6dziZDHl7eHt9enx+e31/fH+BfoGDgEWiC4KEgUugGoOFgoSGgz+nEYWHhEOpAECoEzusBIeJhnGWVUarBT6uCYmLiEypF4GQeIqMiUWsGYuNikCwDmGiOju0AFSpJIyOi42PjEOyEkywEY6QjT62AUqwH4+RjlWsMZGTkEG5BmOqOXClTFeyI2GuNES7DJSWkzq+EHCnVWqrQ2irST+/AEW8DpWXlJaYlTbEAkPCAFS5KWqxP2ixRmK2MjrHCJudmW20Qpyemz3JDjbNAJ2fnGG8LnO0S0PLAEbHH1XCJ3C3RUrID3W2TWu6R3e4T3G6UKKkoGq/Oz3SBXa5VqOlonW8S6Smo3q7UXO9UkrRBkDUDIO4XjjYAHm9WaaopXPBRnHBTU3TDYq3cn2+VGnGQWLIQqiqp5myi6mrqJO2f33AXXnCVzLgB6qsqYDBV3HHS4LAZKutqnvEWUHeBayuq66wrYTFW4vDb7GzrzvmFoXJZLK0sYbKZbO1smzXPrS2s6u7orW3tIXOYra4tbS6sLe5tovOao/NcLi6t3PZUobRa7m7uHnYWbq8uVroLbu9uorUZ2bjP6LKi7y+u4rVb5XSdb2/vJHVcI3XaorZZL7BvanMlZPXco3Zc8HDv8PFwsTGw8XHxIziZMbIxaLahMfJxoLoYLTTosjKx7bVpcrMybrUq77UppPmdqTfjsvOyojtZc3Py87QzL7Yr8HYqc/RztDSz5XuddHT0JrsfNLU0czXxdPV0tTW09XX1NbY1aPwh9ja1tnb19rc2dvd2tze293f3N7g3d/h3uDi3+Hk4OPl4cD2rOTm4+Xn5Ofp5uTr4Ojq58/2wunr6Ors6eLy2Ovu6u3v6+7w7e/x7uP41vDy7+H53fHz8PL08fT28vf59fj69/n8+P///yH5BAEAAP8ALAAAAAAgACAAAAj+AP8JNGQplihHawQqXMiw4cJnwPDZc4eOGTdaaRxqdNgmno4MHJBMq6Sq2p6NKP/NkcHhgksMQaYheiSMT0qNJVbA2LlziKdWePD4SqjR2adeRLrIISRQTZlATwMBmmQomR03dXK5WjiuVydn8vj5O2HiBA0eG4fN6vNlTKmE3Vad6navH799+vyZoIBgAdqNijR50XIGEydz+/zdxZsvXz8SDQ5I+OvQVRJUVKpAMfUGGrJi9PQ1znePHwkDBCZQVnhLhzJYs2pBYaIEFyZLo0pco3evHr15/ESgVu2QESwys5UAAZKjR5g/hXZhkzdPHrx9IR4UmLBDIxdWUZb+N+/hQ9ITW69eaYP3rl2+ECEqWLCx0cyi8TBeHDIC6hSpULaYs84694QAAggf0LCRH45Ykd8LWYgxSCebXHIJJdSccw49B36Q4Ea9oOGIDCjI8EYThOghCCSQNMKLOebMA8ICAiQQw0a8sHNFHCPMgcMPOwTJgxRwfBLOOO98QEAADdyo0S75HIMGI07MEOSVO/DARjferOPBkg20sJEu9LxzBxYuYInlEs10c86XTIqpkS3znDPOETaoeaUUy2BjTgcDABDmRq+sYw45m1zJwxRd8BBkF804Mw6gADAgp0OknENOMITwsAQk2MBDjKM7JOKMM+JsEKilG31yjjfDqZxDzDjzjBPMFld+5Yw3Gqx6aUOhmBOMNdacA48zq4BBqhC6NLMMr75u1Ik5zRDTzji6RNLolZAss4wx3fRa6a8MbTKON5dkE4oeU5C6Qxe8fAuuuKxqlIk53hDDBhykUCJElnLoIq8x2tBL7kJsXLILNd54k40zupwiizEUV5yNwTfx0IUeofxiDTbUDEwxNhjftNASbCTyCjHUONOMMSRHkAAEB5ss0BRwCHKUNR2EkEIM9NmckiBgdPGPM0InrVBAADs=]]></data>
	</file>
	<file>
	  <filename>/images/icons/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/icons/access-feu.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJ3SURBVDjLpZNtSNNRFIcNKunF1rZWBMJqKaSiX9RP1dClsjldA42slW0q5oxZiuHrlqllLayoaJa2jbm1Lc3QUZpKFmmaTMsaRp+kMgjBheSmTL2//kqMBJlFHx44XM7vOfdyuH4A/P6HFQ9zo7cpa/mM6RvCrVDzaVDy6C5JJKv6rwSnIhlFd0R0Up/GwF2KWyl01CTSkM/dQoQRzAurCjRCGnRUUE2FaoSL0HExiYVzsQwcj6RNrSqo4W5Gh6Yc4+1qDDTkIy+GhYK4nTgdz0H2PrrHUJzs71NQn86enPn+CVN9GnzruoYR63mMPbkC59gQzDl7pt7rc9f7FNyUhPY6Bx9gwt4E9zszhWWpdg6ZcS8j3O7zCTuEpnXB+3MNZkUUZu0NmHE8XsL91oSWwiiEc3MeseLrN6woYCWa/Zl8ozyQ3w3Hl2lYy0SwlCUvsVi/Gv2JwITnYPDun2Hy6jYuEzAF1jUBCVYpO6kXo+NuGMeBAgcgfwNkvgBOPgUqXgKvP7rBFvRhE1crp8Vq1noFYSlacVyqGk0D86gbART9BDk9BFnPCNJbCY5aCFL1Cyhtp0RWAp74MsKSrkq9guHyvfMTtmLc1togpZoyqYmyNoITzVTYRJCiXYBIQ3CwFqi83o3JDhX6C0M8XsGIMoQ4OyuRlq1DdZcLkmbgGDX1iIEKNxAcbgTEOqC4ZRaJ6Ub86K7CYFEo8Qo+GBQlQyXBczLZpbloaQ9k1NUz/kD2myBBKxRZpa5hVcQslalatoUxizxAVVrN3CW21bFj9F858Q9dnIRmDyeuybM71uxmH9BNBB1q6zybV7H9s1Ue4PM3/gu/AEbfqfWy2twsAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/icons/access-free.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGrSURBVDjLvZPZLkNhFIV75zjvYm7VGFNCqoZUJ+roKUUpjRuqp61Wq0NKDMelGGqOxBSUIBKXWtWGZxAvobr8lWjChRgSF//dv9be+9trCwAI/vIE/26gXmviW5bqnb8yUK028qZjPfoPWEj4Ku5HBspgAz941IXZeze8N1bottSo8BTZviVWrEh546EO03EXpuJOdG63otJbjBKHkEp/Ml6yNYYzpuezWL4s5VMtT8acCMQcb5XL3eJE8VgBlR7BeMGW9Z4yT9y1CeyucuhdTGDxfftaBO7G4L+zg91UocxVmCiy51NpiP3n2treUPujL8xhOjYOzZYsQWANyRYlU4Y9Br6oHd5bDh0bCpSOixJiWx71YY09J5pM/WEbzFcDmHvwwBu2wnikg+lEj4mwBe5bC5h1OUqcwpdC60dxegRmR06TyjCF9G9z+qM2uCJmuMJmaNZaUrCSIi6X+jJIBBYtW5Cge7cd7sgoHDfDaAvKQGAlRZYc6ltJlMxX03UzlaRlBdQrzSCwksLRbOpHUSb7pcsnxCCwngvM2Rm/ugUCi84fycr4l2t8Bb6iqTxSCgNIAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/icons/access-mail.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAITSURBVBgZpcHLThNhGIDh9/vn7/RApwc5VCmFWBPi1mvwAlx7BW69Afeu3bozcSE7E02ILjCRhRrds8AEbKVS2gIdSjvTmf+TYqLu+zyiqszDMCf75PnnnVwhuNcLpwsXk8Q4BYeSOsWpkqrinJI6JXVK6lSRdDq9PO+19vb37XK13Hj0YLMUTVVyWY//Cf8IVwQEGEeJN47S1YdPo4npDpNmnDh5udOh1YsZRcph39EaONpnjs65oxsqvZEyTaHdj3n2psPpKDLBcuOOGUWpZDOG+q0S7751ObuYUisJGQ98T/Ct4Fuo5IX+MGZr95jKjRKLlSxXxFxOEmaaN4us1Upsf+1yGk5ZKhp8C74H5ZwwCGO2drssLZZo1ouIcs2MJikz1oPmapHlaoFXH1oMwphyTghyQj+MefG+RblcoLlaJG/5y4zGCTMikEwTctaxXq/w9kuXdm9Cuzfh9acujXqFwE8xmuBb/hCwl1GKAnGccDwIadQCfD9DZ5Dj494QA2w2qtQW84wmMZ1eyFI1QBVQwV5GiaZOpdsPaSwH5HMZULi9UmB9pYAAouBQbMHHrgQcnQwZV/KgTu1o8PMgipONu2t5KeaNiEkxgAiICDMCCFeEK5aNauAOfoXx8KR9ZOOLk8P7j7er2WBhwWY9sdbDeIJnwBjBWBBAhGsCmiZxPD4/7Z98b/0QVWUehjkZ5vQb/Un5e/DIsVsAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/icons/calculator.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGxSURBVDjLpVM9a8JQFL0vUUGFfowFpw4dxM2vf9G5newv6OIvEDoVOnUQf0G7CEYQHVzUVZQoaKFugoW20EUaTd5L+u6NSQORdvDC5dyEd+499ySPOY4Dh0TEK8rl8n0mk7lOJBIpVVWBMUaJAzCFEMA5B8MwPpfL5VOlUrklonegWq3qEr+c/2Nbq9VWHs9XkEwm0xLUy/Lzn5KbD1exaDR6FlpBURSq4/E4HJ2c4jMwmYpcw6vf31be2bAHQTPVHYEFyAr7VeEACzfAQKPuSmlCy7LINBcteifSx3ROWutzlCAZ3Z9Op9ButyEWi8F8Poder0drXTQ1SNUeqalt22EFQrgvC4UC5HI5mow1EjA/SjdEjEQiYAd+HV8BF5xwNBpBo9EgBZPJBDqdDimYzWbQ7XapmeA8rIDLiRjFYpEm4zTEfD7v19lslhSgJ2EFXBAOh0Oo1+vk/ng8Bk3TyBtd16HVarkrCRFWYFqmrwAzqMDzBhMVWNaeFSzT5P3BQJXI3G+9P14XC8c0t5tQg/V6/dLv9c+l3ATDFrvL5HZyCBxpv5Rvboxv3eOxQ6/zD+IbEqvBQWgxAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/icons/drive_disk.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJJSURBVDjLpVM9ixNRFD1vvhLzxUiMCitiCjFWwrJuYaGQICgIgl2wSCWSIr9AFAsbQcVfYGEj9kICizGFgoUIIUENBDFrkLiDukw22fke7501MetHtY+58x6Pd+455973RBiG2MuQsMehzBa9Xu+57/tFCnieB9d15+E4zjxs2+a5WalUSowTbIHA5zRNa+VyuejQn2PRpqqqaLVaGAwGpVqt1owUEOMtXdcxGo0Qi8XmoEUgr4fDITKZDPL5PJPeoO2m6HQ6EXs2m4VpmrvkshUGCiEgy3LEnk6nkUwm0Wg00O/3Swqzs3T2yofi8XgUD+pbSJOYqeNhf0rDl41tCMlHKjFGEG7hh1mAZw7vKsw0mUxgGEZUIGYMggDb0wyKqydweTmFZ6+HuHn15K66PG4ZeBGcX5EoQZE3OBF3oN1uo9vtYmq7+D72osNrb77OgRZtmTZgbDpkLYDCrOyVgxNwsGdJIt9UQ9cPcL+6TKqoqJRApn+CSs84c+LsJJgBWXqhUIjmdz0JFqm48/QTKBc8ShRQhLO20pdQfyngDnCCWes4vPc2bN+DLKkMgcCOspCVhAEp5gvmQbEsq1Gv1y8s3LJoHrtnoQoF1UtpeIGzc+uZmHzHFQ33nqzjmzmBUi6XL/7rjl+5/TKkzoP6gUdvr+NA4iipkGBMP+Pa6Ye0ilOhnd9v4a9Hosg4dhg4lBqjdGoVurYUidi0lnAw6SGh0RmyJP73nFeqa6+OH9l3Ro/pJDlDNlwIKq4Iqdhiig/rH7FhuvgJMpVtkQoe5WAAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/icons/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/images/icons/transport.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kHAhEkBuSjfggAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAC6ElEQVQ4y33TS2hcdRiG8eecmcwtnSYzjSbNrTVabTo0FJGipnUhGARR0CjUVbsXRASlaN1IixREpK4KiisFUQlU0YImBrXVmqS2hTbTdtSkk8mkSdp0bmfOnPM/3+dCCNMsfNe/d/lY2VPPjKloUkXe2PXC6T/5n2W/fTaDyNFmby1f/liD+iq358arKnpSA/lg98sTi83Hq989d6+Kvqoir2y5//n2Zm+Jk9dqcZqWaIjl3CR3FmbmVeR9FfmktbPDqOohFXkz2TPyQOfgi9gS0Owt/9aU/jN5jL5dw9iJbTRqK9zMzVBZzWYjydZgU89jmc6do8RSO0A9zNp1mr115fRrGrUadPU/BO4aoU392LEk5eI1buZmCCe76Mi8RGlllsCr4teKNPtwOTfFwwc+oiXeCrU5tJbDKl9jS/cQbWk4//1XpLf2EHVWcMpFyvnCXT7c25cC9wYEEXALUM/jLJ2jOneW2PZRLCtMJGSTSLXTnooTx7nLh1tCYDl/ga14Sz9SKd/BxNshEkV9w+dtNrULX3Ji7wGkusxGb8eSCWTpB0rzY1QsJYgmEcdDHBfxDK7x6O0Y5NAvnxJJD7LRW3L1iJZuT+MHPuLBe0UPFQ9PDJ4xdKcfZKh3H3/MTXBx4XfGRg7ily+t+zCxboyCNgKkHmDE46nMQQIVAgkQlMVSnt29w1S9Ok+eOsEXw8Mk/P98GAT1hcD1ME6AazwCFeZvXccXgxEfP/ApNyrs6dtP1Xd4enycn/Y+jnECbBSCho+YVpLbR3GNiwkMnZv76dq8ja1tA7SE4tyT7OF8/gyzhQucHHpk3Vu69quW87+hRileucxblZ9peB6eeLjGY6Ajw6MDI0zfOMulwgyfjX5IV31p3YdX/56ivrzA4uxFTH3h69fFPrb/ncJ6lc7Rc2rZcaazk/67qYFwurxqlZq8deb4zglEIipyfN/buW82JrzjiCUNta09a4knDt/XF1eRw83+X+3c2+zAw1o+AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/images/pp_button.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAJYAAAAZCAYAAADT59fvAAAACXBIWXMAAC4jAAAuIwF4pT92AAAKTWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVN3WJP3Fj7f92UPVkLY8LGXbIEAIiOsCMgQWaIQkgBhhBASQMWFiApWFBURnEhVxILVCkidiOKgKLhnQYqIWotVXDjuH9yntX167+3t+9f7vOec5/zOec8PgBESJpHmomoAOVKFPDrYH49PSMTJvYACFUjgBCAQ5svCZwXFAADwA3l4fnSwP/wBr28AAgBw1S4kEsfh/4O6UCZXACCRAOAiEucLAZBSAMguVMgUAMgYALBTs2QKAJQAAGx5fEIiAKoNAOz0ST4FANipk9wXANiiHKkIAI0BAJkoRyQCQLsAYFWBUiwCwMIAoKxAIi4EwK4BgFm2MkcCgL0FAHaOWJAPQGAAgJlCLMwAIDgCAEMeE80DIEwDoDDSv+CpX3CFuEgBAMDLlc2XS9IzFLiV0Bp38vDg4iHiwmyxQmEXKRBmCeQinJebIxNI5wNMzgwAABr50cH+OD+Q5+bk4eZm52zv9MWi/mvwbyI+IfHf/ryMAgQAEE7P79pf5eXWA3DHAbB1v2upWwDaVgBo3/ldM9sJoFoK0Hr5i3k4/EAenqFQyDwdHAoLC+0lYqG9MOOLPv8z4W/gi372/EAe/tt68ABxmkCZrcCjg/1xYW52rlKO58sEQjFu9+cj/seFf/2OKdHiNLFcLBWK8ViJuFAiTcd5uVKRRCHJleIS6X8y8R+W/QmTdw0ArIZPwE62B7XLbMB+7gECiw5Y0nYAQH7zLYwaC5EAEGc0Mnn3AACTv/mPQCsBAM2XpOMAALzoGFyolBdMxggAAESggSqwQQcMwRSswA6cwR28wBcCYQZEQAwkwDwQQgbkgBwKoRiWQRlUwDrYBLWwAxqgEZrhELTBMTgN5+ASXIHrcBcGYBiewhi8hgkEQcgIE2EhOogRYo7YIs4IF5mOBCJhSDSSgKQg6YgUUSLFyHKkAqlCapFdSCPyLXIUOY1cQPqQ28ggMor8irxHMZSBslED1AJ1QLmoHxqKxqBz0XQ0D12AlqJr0Rq0Hj2AtqKn0UvodXQAfYqOY4DRMQ5mjNlhXIyHRWCJWBomxxZj5Vg1Vo81Yx1YN3YVG8CeYe8IJAKLgBPsCF6EEMJsgpCQR1hMWEOoJewjtBK6CFcJg4Qxwicik6hPtCV6EvnEeGI6sZBYRqwm7iEeIZ4lXicOE1+TSCQOyZLkTgohJZAySQtJa0jbSC2kU6Q+0hBpnEwm65Btyd7kCLKArCCXkbeQD5BPkvvJw+S3FDrFiOJMCaIkUqSUEko1ZT/lBKWfMkKZoKpRzame1AiqiDqfWkltoHZQL1OHqRM0dZolzZsWQ8ukLaPV0JppZ2n3aC/pdLoJ3YMeRZfQl9Jr6Afp5+mD9HcMDYYNg8dIYigZaxl7GacYtxkvmUymBdOXmchUMNcyG5lnmA+Yb1VYKvYqfBWRyhKVOpVWlX6V56pUVXNVP9V5qgtUq1UPq15WfaZGVbNQ46kJ1Bar1akdVbupNq7OUndSj1DPUV+jvl/9gvpjDbKGhUaghkijVGO3xhmNIRbGMmXxWELWclYD6yxrmE1iW7L57Ex2Bfsbdi97TFNDc6pmrGaRZp3mcc0BDsax4PA52ZxKziHODc57LQMtPy2x1mqtZq1+rTfaetq+2mLtcu0W7eva73VwnUCdLJ31Om0693UJuja6UbqFutt1z+o+02PreekJ9cr1Dund0Uf1bfSj9Rfq79bv0R83MDQINpAZbDE4Y/DMkGPoa5hpuNHwhOGoEctoupHEaKPRSaMnuCbuh2fjNXgXPmasbxxirDTeZdxrPGFiaTLbpMSkxeS+Kc2Ua5pmutG003TMzMgs3KzYrMnsjjnVnGueYb7ZvNv8jYWlRZzFSos2i8eW2pZ8ywWWTZb3rJhWPlZ5VvVW16xJ1lzrLOtt1ldsUBtXmwybOpvLtqitm63Edptt3xTiFI8p0in1U27aMez87ArsmuwG7Tn2YfYl9m32zx3MHBId1jt0O3xydHXMdmxwvOuk4TTDqcSpw+lXZxtnoXOd8zUXpkuQyxKXdpcXU22niqdun3rLleUa7rrStdP1o5u7m9yt2W3U3cw9xX2r+00umxvJXcM970H08PdY4nHM452nm6fC85DnL152Xlle+70eT7OcJp7WMG3I28Rb4L3Le2A6Pj1l+s7pAz7GPgKfep+Hvqa+It89viN+1n6Zfgf8nvs7+sv9j/i/4XnyFvFOBWABwQHlAb2BGoGzA2sDHwSZBKUHNQWNBbsGLww+FUIMCQ1ZH3KTb8AX8hv5YzPcZyya0RXKCJ0VWhv6MMwmTB7WEY6GzwjfEH5vpvlM6cy2CIjgR2yIuB9pGZkX+X0UKSoyqi7qUbRTdHF09yzWrORZ+2e9jvGPqYy5O9tqtnJ2Z6xqbFJsY+ybuIC4qriBeIf4RfGXEnQTJAntieTE2MQ9ieNzAudsmjOc5JpUlnRjruXcorkX5unOy553PFk1WZB8OIWYEpeyP+WDIEJQLxhP5aduTR0T8oSbhU9FvqKNolGxt7hKPJLmnVaV9jjdO31D+miGT0Z1xjMJT1IreZEZkrkj801WRNberM/ZcdktOZSclJyjUg1plrQr1zC3KLdPZisrkw3keeZtyhuTh8r35CP5c/PbFWyFTNGjtFKuUA4WTC+oK3hbGFt4uEi9SFrUM99m/ur5IwuCFny9kLBQuLCz2Lh4WfHgIr9FuxYji1MXdy4xXVK6ZHhp8NJ9y2jLspb9UOJYUlXyannc8o5Sg9KlpUMrglc0lamUycturvRauWMVYZVkVe9ql9VbVn8qF5VfrHCsqK74sEa45uJXTl/VfPV5bdra3kq3yu3rSOuk626s91m/r0q9akHV0IbwDa0b8Y3lG19tSt50oXpq9Y7NtM3KzQM1YTXtW8y2rNvyoTaj9nqdf13LVv2tq7e+2Sba1r/dd3vzDoMdFTve75TsvLUreFdrvUV99W7S7oLdjxpiG7q/5n7duEd3T8Wej3ulewf2Re/ranRvbNyvv7+yCW1SNo0eSDpw5ZuAb9qb7Zp3tXBaKg7CQeXBJ9+mfHvjUOihzsPcw83fmX+39QjrSHkr0jq/dawto22gPaG97+iMo50dXh1Hvrf/fu8x42N1xzWPV56gnSg98fnkgpPjp2Snnp1OPz3Umdx590z8mWtdUV29Z0PPnj8XdO5Mt1/3yfPe549d8Lxw9CL3Ytslt0utPa49R35w/eFIr1tv62X3y+1XPK509E3rO9Hv03/6asDVc9f41y5dn3m978bsG7duJt0cuCW69fh29u0XdwruTNxdeo94r/y+2v3qB/oP6n+0/rFlwG3g+GDAYM/DWQ/vDgmHnv6U/9OH4dJHzEfVI0YjjY+dHx8bDRq98mTOk+GnsqcTz8p+Vv9563Or59/94vtLz1j82PAL+YvPv655qfNy76uprzrHI8cfvM55PfGm/K3O233vuO+638e9H5ko/ED+UPPR+mPHp9BP9z7nfP78L/eE8/sl0p8zAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAABIgSURBVHja7FtpsGVVdf7W2nufe++599zp3Tf0iDTGspyCE5iYQEAraiqCiTFKMEqp0ASJjUNAUSEhiKBBItIgkwPGxMJobFJliEaNUSsRKKEMFQWTboGmm+43vzufc/Za+XHvfXM/upumlZJd9ar6vXPOHr/1rbW+tdtu2LABazVVRSYTIMxlQALsm5hCIZdFO4kR5vNot9rHDFWrp4v4U4noeAA1AIyn269a66jqfd6nNxhnv2wPtxcm2pLNZN6TDYK3ABIREVS1Q0TTANKn9/lXroVEdIpzwSmi8tbDApbLBFtzhfxfMdGoqja9l1uNMXdMTk79sBhFjSDjVFWf9JUQrfY3hog8JU+G+ak5dyJCnKTGsvljMG4m0IUHDywFRLU0VK1ca615CzHDi9w8PTP78Ww287N8GOJogGnQvCjE+yXoIgDtThP5MAdm05v0U6SJCJrNFgqFPIjoKQUwEUG73QYR31rIh5cT0ZZDYawRMny7JT459emubqt9XjaXvfNobQD1YZKkHkQEL4okTkCLgUWE2dk5ZDNZMAOiANNK61puAKv9bTWrPNA7az8DVnskqoD2viUCRAUPPbwbYZjDcG0IhUIegC75trdWhf6S2UvqPYgJTLQFQJWIHrHMa8fZaZpCgQKYvwTFyVD8p0/9mc1Wa1cuzB0VmlVVpF6QeoGowhoDAmrMzIvdIYFgrUkBtAB0RBQCgJnABHgRdLsx8rkcFAoFQVUAERhjeuDQlT7W+xTdOEE+DKHiVzxvtlrIZDIw8yxJ84lPmnowM5gJwMJaehhRGGPm12mtCVqtVrx7dwdRMcL6dWPz3akqkjQFE8MY/oW6TWaeN24RBbNFLmtgjXkHEYI4Se60s7Ozax5qpVJGxgVXE+gUhd4FkdMATNBqAc4RnryKIElSxEkK1d55MjMION05+xlnjRsc4oDWRoIRIaI9Cr0ZwDU9qlYQM1Lve+4mF/YYg4DUC36+6+dYt24MURRBRVbEbj71aLbayId5QHuABBGYCFPT0+h0OqjVqmAyACmgBFBv3CT1ADyYCYELVmObsgKnM5kXbznmmMuZaH+z1UKQzUC1T3d9RvNeMDU7g3a7heHhGqJCYd4VHS1AAcBcvY5Ws93bQwBhPodCvvAiQN8FUMd7+bSdm5tbs7OxsZE/CZw7R0QeU5EzoJh4MmOpAWDr9QYmJifRarWXLOzYY5+xyTm7XVWrq4Gber6vBNAnmPEtQH+si2Kt5d8QgCRJ0Gy2EEXFx53XggyzIMesZWQDV7h8y4joBUR0NhGdxsybW+3WGa1WZ7+qotvtYjifW+FiB+M0my00mw8jigoYGqoeFYARE+bm5jA+MYVWq7XsaSlfKZdu9Knkxculxpj77cjIyKralaqCmZ/JzJ8kIqRe3tntdncyM+I4BhH16f3IgkpUsWfPXszN1ZccWv/fzMzbAQzENwHwE1XNE9Hm5fqZpGmGCDCWMQDXWnHS4+l5h9N0WR/MBBCvZ6J/BrCZiNBoNC6Ok+RLYT6PZqMBJoKukngsB1m93kC93nhSATbYlyTxaDbbCIIA2Wx2HvREhGJUuFwFLyHm7yZpchUA2KGhoVUoj0DEjoAbAa3V6/XrZmfrX/XSD5y9h4ggk8ng8WK0Q6HYOE4QJymiqIhisbQM6IJ8PrzAGvNaXaCLy5nNFRNTEyYMw0tyudxFg8V673/6yO5H769UKiiXIwAoGGNemc+Hv6m9A3Ug2g3g7wDcvejQhgFsBWABdKC41RjzrHwYvg7QY0E8C6JrSHE/AKgoiMgCeAURXg7QMSAUAQgzTTtj707S9HMAugA2AXgbEb0CwOb+2tqZjBvO5nK/Z4z9eqvRBBEZAL8N4HeI6JkA8kw8Ezi+W0Q+C6C9GGQDgIVhDrWhIRSL0RPO0FeEIgBK5fLSd4yBNeZ0a/iCNPVTk1OTW5Mk7RIR7IMPPrjCKoZrFYyOjL7fi55qDN87Mzt38fT09IrBgyBAGIZPGFCDjellfCvZIwxDFAr5E6yxly18a76Tev8REYlzYR7WmtximlDV62rDtXaYzQUi2MpM51s2z3KLZBECYIw5Y6Q2/NJsmHuoF1/RJwGc0e/pYQVOMda+Mu8caz/QU+h+VXwAALK57GsyQfCX1toTela81NqdNW83hnd6L98kopsAvJqWMkKOyJ4/OTn1hVKpiFyYfV3RFi601v5GL21c0OeM4bOKUVQzxlx2oLS/041RUO2x3mGA60ChyOIz6XszbNly7EZDdIOqQlTfvX//+AODd+wBej8ZRB8G0IqT5JwwDOurdZ7P55EkCYLAHbK76LmAJiYmJ1GvN9Z81xgTDdeGbkzTNN/XeCb37d9/rvc+zufziKLo1wnytsH4zHxPu9nd3u12n1eKip8WlZf3u3pEVXcCOAFATnsHMDw6NrI+Sf1DqvoOYjpj0dAbmLBZF62NiFS9fHPPnscwNjqyLSoU/rb3TBtpmt7KzPcT8KcgOqn/QZOJf0LMZ0P1VcuW1gWQpt6/1Tn3P9aYz2YzwVmqgIr+RKGfJ8IwQO8GwCKCfCF/TJjPP47GJwAJDiXBGoBFVLHn0b2Yq68MRRa/S0TMRNvBWAfF55j5ttHRUUjPOGGPO+64JYgnoqqz5ibvxaWpv7Dd6dzjnEN5GQ0OWqPR6KXhUOTzIYzhgwKVF8HDj+yG9/6AG0BEqJTLKEaFK0Xk+IGkoJq+e//+/Q/2F5kplYrXiUdhkP1Pz8y+2Vrz0mqlskNU1vXBeJWofoyJp4jwXwBO7I/xUJr6+1T12cbwxxdF9d/3qVwq4tcHQfAF7WdnXuSLnU732+12C0y4S1Rfl6Z+c7fTuTsXuntB9CKAi72yF2Ou0bh+bm5ud1Qo/KhUjB4R1c19Hesfmc1lXtKWszxTKZe/oSoniShU9DNQ/DlIWwBeCKIL5g/Vy53yeJqb9qNNOjgDj+MEc3N11GpD6LQ7ABE2bdp0QACqCsIwt80Yc5qk8oAXeS+IUK1W59+zU1NT8wNUKxVYa64homelqd+xc9eua9M0XfXgRQRBEKBSKSObDQDtAWsQ+B+MhYj3azKdAhgdGfkja815vm8J3W73s3Eaf6EQFRC4AKVSdBVUf2uhJOLPA2k7m818zxgz3NN/kg+S4golhkKPJ6LnDtbcbXc+2u52O6VS6RZAB9bz76rp6amXOSbePu9+wTvn6rPvCTIBhoaqGS/StooqM23Mhdk3GubnqqK8CJw/arWaf62SgInOBNHmvq/c5dP0nXv3P7bfBc6MjQ5/Q0ROGiybiEogXA8Qg/ASAKbf4fe9yo41NnUhRj6UxEoXzkChyGQySNMUzWZzpZcKc4gK0UuNMZcbY+LHxvedMzE5ObUcI3ZiYmL+l2q5/FYieosCjyrwTlWVnjK8zL8SYWi4hmq1gkzg4L0cliscGRmGFz0g8CzzM5TwqYGFeu/vTUXOD2yAYlREMSpc4pzbJiJgZtTr9SuMtbeVisUfqupwXxX+2q5dP79ibGwdwjAsENENQI/dVGRHs92+0Vp3OTO9XHpz2Zsm6VmP7n10bmxs7I2ZTHBen8nTVPw5zVZrPJvLvn2oWt0G4PkKBRPV09TfCRCYqO92qRHHydahobDubPn10MwFvXlSEneTc7txsj+VFKVc9BEondrPH0VVmwD+YEFlRUxEdQCNbhxfICLxgfbUWgNnzRNOpqy1aLfbmJmZWfnMIKrVhm5KUx96kQ97kf9Y7dxtz8UpgiB4NvfYCqp6HjM/umXLlhUsRQQYZrjAQkXnQXVIKXgfnMPDNSSprAAkE4GYjWO+3quM9X160o271zuX2eiseX7JmrOY+fcHoJqdmb1yYmr6g5s3b9wK1RMG4QYpLl2/fgT5MD8sojcT4WV9XeZ7SZy8OYqiU4MgeL+Ih2Gj3SQ5f3pm9qFMJrfFOXftIM5oNBofBfG3hqqVTwfObe3v049F5f1xN/mXmZnpF4yOjn51vlKQph9Kvb8noOxmEfMpQIiItNlsXWaM/UbgHDasW/885+w20YFh+vd24vRWBpExXFHAE8E3my1jreuoYgKryCbWGjjnYM2Rua0kIigWI3S7nSXBe6VcRiGKrhTR44n436ZnZq5yzmE1ycpWq1UQIRPmsjcCVKnXG9c0mo07FpclRASZIEClWobpZ3Lin5hW0tPGPHbt3NWrNS0KEiuVCtaNjb7Pq7xmERhtmAuvVtVAVbPMpldjE9mnoIubrdZnhqplOGtfP9BxVJWMNWdGQfQqEX0bMz27//cv1+ca5zjngmzG3SLiDRNjdm5ue7vT+Wo2l7XFqHCDqo5or4T0PVVcmg3ce1zgtvaDdUmS5KJ6o/mDaqWybXRs9AMEGu33v+PhRx65duPGjURs/gbAusEyjDXPtNadlqbpHYD+IYDsgkOiRsa5YQadRkxnKEEN80/HxycuEcFEtVqB9x6D7NQaRuAcbJ+ljpRwLSKIogitVgvNZmveyw7CksT78cmJyXNb7XayButZGMMfENGTDNPdM7OzH15MgUSEarWCqFg47BT28dhrecbBTK9g4iu9+qUxqWqR+nK2qjRFcPvU9MyVURQ9GEURgiAgEYkXKdYM4EKReVe+M0nSqyanpm5qNptm08aN/0REx6oqwLi30WxcHAQZRIXCJar6uz09TGb2TY6fXa1WmJkvmo9FFOyc+1q5XGoAWiaQ6SUWOrX3sX3bwjDUTCY4SUXesGht7Fxw5sT4xNVeBFGhkA+CoJdlAQTim4l61UHtlaLuAfR2gPYCMr9X1ponBVDLwQUQhqpVGGYQ03FKuE6hUNVt+8fH/29Nd+q9f17g7EWq2vSiW4vFYtNa16vLEaFSKSEIAojIEV1AnwmwcdNGNFvt+QSGiIJKufQmL/4eLL0wSCA009TvipPkx4boX8H8gIggTT327N2LNPVayIcf2rRpQxagF6sqE2hGofeKyNeNoa8AmFRVjI6OnJzJBJtU9S4AcbcTX1CtDtWDwG2B6kkA7uqFYX77+MTEA1EU2SBwOwC8QUSImfYpcBcR/b2qnkpEJ4PA3U78lU63+9BwrQYV7QD6v6oYAeCZeY9PkqvHx8f/W3su/5ZiMXqOqr5MVAMiEiJ6DNAfxnH6tUazeUetNiQi/eK7tcgETy6glkkKGB4eQsYGNSV8UVRHkyS9MU7Sf6hUKvPSwqrAMobPBZAF0UdVcW8URSgWiyBSUB+53vsnbfJhmEPgHNqdLuIkAROlIHqXQpNlFREiUJqkKZqtVq980dderGVksxnMzdUxV6/fJyKvBHFlamqaS1HUsdY00zSFsa7/vgMR/0ChJypUoJA4ScQ5C0B2K/AqAL4/x5SNgRdJRfQcABftfWwfj47UWsbYdv/ywTf7JRhK0iQpRhHCMIQXucswXtBqtfPduOuHa0MtiHaNMYMC7s8M0WvHp2dKrU7HhdlsUqsNdUTSrqrOu72oGIEBZDPuoLPuI3U+3sux3ugXVfVEAN+Jk/R9cRyjVCqtnQAEzr1aROJWu31LT013cM5B5Shd+lGFcxbOWcRxgm43FkDbBxJhiKiXPNje4VTKJTATNm/aiEajicnp6b61YXrpdz1hhxkIwyyYqLs8o+prcPHSRIKxYf3YvAgMLOu395MOdsswI5fLgmneKtr9n968mLBp0wYEQYAkTtAP3GdXxiiMfD4EVFAuRkf1FsOC0YevMdZsB+FYqH4Xqm8C0DiYi4hWVdcDmFLRncYaOGtxtG+SDSywB2q7JggzgUPgimBmGF0o1aoqoqiAfD4P1V72OlQtz1N1ENj+xTqg0Nfb0IttAAIygUP/itQCpFVhLCMK8pBFhrZubGRRjXShPARV5HKLCrTzJakswjALEQE7g0JQgKrCOYfUe1QqJZS12L856gEQjDHIh/aoMtSiUtuvEdFfRIX82SqCNElvY8K7iGn2oCULADuJ6Dn5MHx76v3tROT1F3RF8WDHPdCNzYEVDcB0IP+/liC7eiCrq9Y4D3YdS+ahGLDUkufcj9qPxI2Kw0vSqQDgxGwmc1qYzb6JiPLe+31pklw6PTN342itekgXva1CP8bEnwfjFsf2KlW0DqoW8HQ7skb1ixpXARc4W61WKqqaNYYhonVV3T4zM/OJjHU7D0tkBeG2JIlbxtg/I6IXovf/Ap9uv1pNiGifqt5HZL49PTO1IxfmHpInwJj/PwA5xrq/dBP+BAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/JMDownMan.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiMgREVQUkVDQVRFRA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi8vIHNldHRpbmcgdGhlIGFjY2VzcyBjb25zdGFudHMNCmRlZmluZSgnSk1ETV9CWV9GUkVFJywgIDApOw0KZGVmaW5lKCdKTURNX0JZX0ZFVScsICAgMSk7DQpkZWZpbmUoJ0pNRE1fQllfTUFJTCcsICAyKTsNCmRlZmluZSgnSk1ETV9CWV9CT1RIJywgIDMpOw0KDQppZiAoIWRlZmluZWQoJ1BIUF9WRVJTSU9OX0lEJykpIA0Kew0KICAkdmVyc2lvbiA9IGV4cGxvZGUoJy4nLCBQSFBfVkVSU0lPTik7DQogIGRlZmluZSgnUEhQX1ZFUlNJT05fSUQnLCAoJHZlcnNpb25bMF0gKiAxMDAwMCArICR2ZXJzaW9uWzFdICogMTAwICsgJHZlcnNpb25bMl0pKTsNCn0NCnJlcXVpcmUgZGlybmFtZShfX0ZJTEVfXykgLiAnL2Z1bmN0aW9uLm1pbWVfY29udGVudF90eXBlLnBocCc7DQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KIyBERVBSRUNBVEVEIEVORA0KIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCg0KY2xhc3MgSk1Eb3duTWFuIGV4dGVuZHMgQ01TTW9kdWxlDQp7DQogIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkNCiAgew0KICAgIHBhcmVudDo6X19jb25zdHJ1Y3QoKTsNCiAgfQ0KDQogIGZ1bmN0aW9uIEdldE5hbWUoKQ0KICB7DQogICAgcmV0dXJuICdKTURvd25NYW4nOw0KICB9DQoNCiAgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyk7DQogIH0NCg0KICBmdW5jdGlvbiBHZXRWZXJzaW9uKCkNCiAgew0KICAgIHJldHVybiAnMS5SQy4yJzsNCiAgfQ0KDQogIGZ1bmN0aW9uIEdldEhlbHAoKQ0KICB7DQogICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOw0KICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ3Jvb3RfdXJsJywgJGNvbmZpZ1sncm9vdF91cmwnXSk7DQogICAgcmV0dXJuICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2hlbHAudHBsJyk7DQogIH0NCg0KICBmdW5jdGlvbiBHZXRBdXRob3IoKQ0KICB7DQogICAgcmV0dXJuICdKbyBNb3JnIChGZXJuYW5kbyBNb3JnYWRvKSc7DQogIH0NCg0KICBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpDQogIHsNCiAgICByZXR1cm4gJ2pvbW9yZ0BjbXNtYWRlc2ltcGxlLm9yZyc7DQogIH0NCg0KICBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKQ0KICB7DQogICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOw0KICAgIHJldHVybiAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdjaGFuZ2Vsb2cudHBsJyk7DQogIH0NCg0KICBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpDQogIHsNCiAgICByZXR1cm4gdHJ1ZTsNCiAgfQ0KDQogIGZ1bmN0aW9uIEhhc0FkbWluKCkNCiAgew0KICAgIHJldHVybiB0cnVlOw0KICB9DQoNCiAgZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkNCiAgew0KICAgIHJldHVybiAnY29udGVudCc7DQogIH0NCg0KICBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKTsNCiAgfQ0KDQogIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignVXNlIEpNRG93bk1hbicpOw0KICB9DQoNCiAgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkNCiAgew0KICAgIHJldHVybiBhcnJheSgpOw0KICB9DQoNCiAgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKQ0KICB7DQogICAgcmV0dXJuICIxLjEyIjsNCiAgfQ0KICANCiAgZnVuY3Rpb24gSW5pdGlhbGl6ZUZyb250ZW5kKCkgDQogIHsNCiAgICAkdGhpcy0+UmVnaXN0ZXJNb2R1bGVQbHVnaW4oKTsNCiAgICAkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKCk7DQoNCiAgICAvLyBzbWFydHkgdGFnIHBhcmFtZXRlcnMNCiAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCAnYWN0aW9uJywgICAgICAnZGVmYXVsdCcsICAkdGhpcy0+bGFuZygnaGVscF9wYXJhbV9hY3Rpb24nKSApOw0KICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoICdzZWxlY3RvcicsICAgICcnLCAgICAgICAgICR0aGlzLT5sYW5nKCdoZWxwX3BhcmFtX3NlbGVjdG9yJykgKTsNCiAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCAndGVtcGxhdGUnLCAgICAnJywgICAgICAgICAkdGhpcy0+bGFuZygnaGVscF9wYXJhbV90ZW1wbGF0ZScpICk7DQogICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlciggJ2FsaWFzJywgICAgICAgJycsICAgICAgICAgJHRoaXMtPmxhbmcoJ2hlbHBfcGFyYW1fYWxpYXMnKSApOw0KICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoICdjYXRlZ29yeWlkJywgICcnLCAgICAgICAgICR0aGlzLT5sYW5nKCdoZWxwX3BhcmFtX2NhdGVnb3J5aWQnKSApOw0KICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoICdkZXB0aCcsICAgICAgICcnLCAgICAgICAgICR0aGlzLT5sYW5nKCdoZWxwX3BhcmFtX2RlcHRoJykgKTsNCiAgICANCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnc2VsZWN0b3InLCBDTEVBTl9TVFJJTkcpOw0KICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdhY3Rpb24nLCAgIENMRUFOX1NUUklORyk7DQogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3RlbXBsYXRlJywgQ0xFQU5fU1RSSU5HKTsNCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnYWxpYXMnLCAgICBDTEVBTl9TVFJJTkcpOw0KICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdkZXB0aCcsICAgIENMRUFOX0lOVCk7DQogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ2hhc2hrZXknLCAgQ0xFQU5fU1RSSU5HKTsNCg0KICAgIC8vIGZvcm0sIHBhcmFtZXRlcnMNCiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZmlsZV9pZCcsICBDTEVBTl9JTlQpOw0KICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKENMRUFOX1JFR0VYUCAgLiAnL3NtXy4qLycsICBDTEVBTl9TVFJJTkcpOyAvLyBmb3IgZnJvbnRlbmQgZm9ybXMgd2l0aCBtYWlsIHNlbmRpbmcNCg0KICAgICRhbGlhc3BhdHQgPSAnW2EtekEtWjAtOVwtXF9dJzsNCg0KICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAnL2Rvd25sb2FkXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ2FjdGlvbicgPT4gJ2RlZmF1bHQnKQ0KICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAnL2Rvd25sb2FkXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKVwvKD9QPGRlcHRoPlswLTldKykkLycsDQogICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCdhY3Rpb24nID0+ICdkZWZhdWx0JykNCiAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICANCiAgICAkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJy9kb3dubG9hZFwvY2F0ZWdvcnlcLyg/UDxhbGlhcz4nIC4gJGFsaWFzcGF0dCAuICcrKVwvKD9QPHJldHVybmlkPlswLTldKykkLycsDQogICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KCdhY3Rpb24nID0+ICdkZWZhdWx0JykNCiAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgJy9kb3dubG9hZFwvY2F0ZWdvcnlcLyg/UDxhbGlhcz4nDQogICAgICAgICAgICAgICAgICAgICAgICAgIC4gJGFsaWFzcGF0dA0KICAgICAgICAgICAgICAgICAgICAgICAgICAuICcrKVwvKD9QPHJldHVybmlkPlswLTldKylcLyg/UDxkZXB0aD5bMC05XSspJC8nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgnYWN0aW9uJyA9PiAnZGVmYXVsdCcpDQogICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgJHRoaXMtPlJlZ2lzdGVyUm91dGUoDQogICAgICAgICAgICAgICAgICAgICAgICAgICcvZG93bmxvYWRcL2dldFwvKD9QPGFsaWFzPicNCiAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkYWxpYXNwYXR0DQogICAgICAgICAgICAgICAgICAgICAgICAgIC4gJyspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ2FjdGlvbic9Pidkb3dubG9hZCcpDQogICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgLy8JCSR0aGlzLT5SZWdpc3RlclJvdXRlKCcvZG93bmxvYWRcL2dldGJ5bWFpbFwvKD9QPGhhc2hrZXk+W2EtejAtOV0rKVwvKD9QPHJldHVybmlkPlswLTldKykkLycsDQogICAgLy8JCQkJCWFycmF5KCdhY3Rpb24nPT4nZG93bmxvYWQnKSk7DQogICAgJHRoaXMtPlJlZ2lzdGVyUm91dGUoDQogICAgICAgICAgICAgICAgICAgICAgICAgICcvZG93bmxvYWRcL2RldGFpbFwvKD9QPGFsaWFzPicNCiAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkYWxpYXNwYXR0DQogICAgICAgICAgICAgICAgICAgICAgICAgIC4gJyspXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoJ2FjdGlvbicgPT4gJ2RldGFpbCcpDQogICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgIC8vCQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgnL2Rvd25sb2FkXC9zZW5kZW1haWxcLyg/UDxyZXR1cm5pZD5bMC05XSspJC8nLA0KICAgIC8vCQkJCQlhcnJheSgnYWN0aW9uJz0+J3NlbmRlbWFpbCcpKTsNCg0KICAgIC8vCQlGb3IgeW91ciBmb3JtJ3MgcGFyYW1zIHlvdSBuZWVkIG9ubHkNCiAgICAvLwkJJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3BhcmFtTmFtZScsQ0xFQU5fVFlQRSk7DQogICAgLy8JCSR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKENMRUFOX1JFR0VYUC4nL2ZpbGVfLiovJyxDTEVBTl9TVFJJTkcpOw0KDQogIH0NCg0KICBmdW5jdGlvbiBHZXRFdmVudERlc2NyaXB0aW9uICgkZXZlbnRuYW1lKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdldmVudF9pbmZvXycgLiAkZXZlbnRuYW1lKTsNCiAgfQ0KDQogIGZ1bmN0aW9uIEdldEV2ZW50SGVscCAoJGV2ZW50bmFtZSkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygnZXZlbnRfaGVscF8nIC4gJGV2ZW50bmFtZSk7DQogIH0NCg0KICBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0aW5zdGFsbCcpOw0KICB9DQoNCiAgZnVuY3Rpb24gVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0dW5pbnN0YWxsJyk7DQogIH0NCg0KICBmdW5jdGlvbiBVbmluc3RhbGxQcmVNZXNzYWdlKCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygncmVhbGx5X3VuaW5zdGFsbCcpOw0KICB9DQoNCiAgZnVuY3Rpb24gZ2V0RGlyZWN0b3J5VHJlZSgkb3V0ZXJEaXIsICRyZWN1cnNpdmUgPSB0cnVlKQ0KICB7IA0KICAgIHJldHVybiBqbWRtX2ZpbGVfb3BzOjpnZXREaXJlY3RvcnlUcmVlKCRvdXRlckRpciwgJHJlY3Vyc2l2ZSk7DQogIH0gDQoNCiAgZnVuY3Rpb24gR2V0VGh1bWJuYWlsc0Ryb3Bkb3duKCRhZGR2YWx1ZSA9IG51bGwpDQogIHsNCiAgICByZXR1cm4gam1kbV9vcHM6OkdldFRodW1ibmFpbHNEcm9wZG93bigkYWRkdmFsdWUpOw0KICB9DQoNCiAgZnVuY3Rpb24gQ3JlYXRlVGh1bWJuYWlsKCRwYXRoKQ0KICB7DQogICAgcmV0dXJuIGptZG1fb3BzOjpDcmVhdGVUaHVtYm5haWwoJHBhdGgpOw0KICB9DQoNCiAgZnVuY3Rpb24gUHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlQnlBbGlhcygkYWxpYXMpDQogIHsNCiAgICAkZ0NtcyA9IGNtc21zKCk7DQogICAgJGRiID0gJGdDbXMtPkdldERiKCk7DQogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NFTEVDVCB0ZW1wbGF0ZV9pZCBGUk9NICcNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gY21zX2RiX3ByZWZpeCgpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICdtb2R1bGVfam1kb3dubWFuX3RlbXBsYXRlcyBXSEVSRSB0ZW1wbGF0ZV9uYW1lID0gPycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgkYWxpYXMpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBpZiAoJGRicmVzdWx0ICE9PSBmYWxzZSAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQ0KICAgIHsNCiAgICAgIC8vfiB2YXJfZHVtcCgkcm93KTsNCiAgICAgIHJldHVybiAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCdkb3dubWFuXycgLiAkcm93Wyd0ZW1wbGF0ZV9pZCddLCAnJywgdHJ1ZSkgOw0KICAgIH0NCiAgICBlbHNlDQogICAgICAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPmxhbmcoJ3dyb25ndGVtcGxhdGUnLCAkYWxpYXMpICk7DQogICAgDQogICAgcmV0dXJuIGZhbHNlOw0KDQogIH0NCg0KICBmdW5jdGlvbiBTZWFyY2hSZXN1bHQoJHJldHVybmlkLCAkaWQsICRhdHRyID0gJycpDQogIHsNCiAgICAkcmVzdWx0ID0gYXJyYXkoKTsNCg0KICAgIGlmICgkYXR0ciA9PSAnZG93bmxvYWQnKQ0KICAgIHsNCiAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7DQogICAgICAkcSA9ICJTRUxFQ1QgbmFtZSwgYWxpYXMgRlJPTSAiDQogICAgICAgICAgICAuIGNtc19kYl9wcmVmaXgoKQ0KICAgICAgICAgICAgLiAibW9kdWxlX2ptZG93bm1hbl9maWxlcyBXSEVSRSBmaWxlX2lkID0gPyI7DQogICAgICANCiAgICAgIGlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZXhwaXJlZF9zZWFyY2hhYmxlJywgMSkgPT0gMCApDQogICAgICB7DQogICAgICAgIC8vIG1ha2Ugc3VyZSB3ZSBkb24ndCByZXR1cm4gZXhwaXJlZCBhcnRpY2xlcy4NCiAgICAgICAgLy8gaWYgd2UgZG9uJ3Qgd2FudCBlbSB0by4NCiAgICAgICAgJHEgLj0gJyBBTkQgJyAuICR0aGlzLT5HZXRGaWxlU3RkV2hlcmUoKTsNCiAgICAgIH0NCiAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkaWQgKSApOw0KICAgICAgDQogICAgICBpZiAoJGRicmVzdWx0KQ0KICAgICAgew0KICAgICAgICAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOw0KICAgICAgICAvLzAgcG9zaXRpb24gaXMgdGhlIHByZWZpeCBkaXNwbGF5ZWQgaW4gdGhlIGxpc3QgcmVzdWx0cy4NCiAgICAgICAgJHJlc3VsdFswXSA9ICR0aGlzLT5HZXRGcmllbmRseU5hbWUoKTsNCiAgICAgICAgLy8xIHBvc2l0aW9uIGlzIHRoZSB0aXRsZQ0KICAgICAgICAkcmVzdWx0WzFdID0gJHJvd1snbmFtZSddOw0KICAgICAgICAvLzIgcG9zaXRpb24gaXMgdGhlIFVSTCB0byB0aGUgdGl0bGUuDQogICAgICAgICRyZXN1bHRbMl0gPSAkdGhpcy0+Q3JlYXRlRGV0YWlsTGluaygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJldHVybmlkLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5sYW5nKCdkZXRhaWxzJyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJvd1snYWxpYXMnXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICB9DQogICAgfQ0KICAgIGVsc2UgaWYgKCRhdHRyID09ICdjYXRlZ29yeScpDQogICAgew0KICAgICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiAgICAgICRxID0gIlNFTEVDVCBuYW1lLCBhbGlhcyBGUk9NICINCiAgICAgICAgICAgIC4gY21zX2RiX3ByZWZpeCgpDQogICAgICAgICAgICAuICJtb2R1bGVfam1kb3dubWFuX2NhdGVnb3JpZXMgV0hFUkUgIGNhdGVnb3J5X2lkID0gPyI7DQogICAgICAgICAgICANCiAgICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSggJHEsIGFycmF5KCAkaWQgKSApOw0KICAgICAgDQogICAgICBpZiAoJGRicmVzdWx0KQ0KICAgICAgew0KICAgICAgICAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpOw0KICAgICAgICAvLzAgcG9zaXRpb24gaXMgdGhlIHByZWZpeCBkaXNwbGF5ZWQgaW4gdGhlIGxpc3QgcmVzdWx0cy4NCiAgICAgICAgJHJlc3VsdFswXSA9ICR0aGlzLT5HZXRGcmllbmRseU5hbWUoKTsNCiAgICAgICAgLy8xIHBvc2l0aW9uIGlzIHRoZSB0aXRsZQ0KICAgICAgICAkcmVzdWx0WzFdID0gJHRoaXMtPmxhbmcoJ2NhdGVnb3J5JykuICc6ICcuICRyb3dbJ25hbWUnXTsNCiAgICAgICAgLy8yIHBvc2l0aW9uIGlzIHRoZSBVUkwgdG8gdGhlIHRpdGxlLg0KICAgICAgICAkcmVzdWx0WzJdID0gJHRoaXMtPkNyZWF0ZUNhdGVnb3J5TGluaygNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXR1cm5pZCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJvd1snYWxpYXMnXSwgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgfQ0KDQogICAgfQ0KICAgIHJldHVybiAkcmVzdWx0Ow0KICB9DQoNCiAgZnVuY3Rpb24gU2VhcmNoRGVsZXRlRmlsZSgkaWQsICYkc2VhcmNoTSA9IG51bGwpDQogIHsNCiAgICAkdGhpcy0+U2VhcmNoRGVsZXRlV29yZHMoJ2Rvd25sb2FkJywgJGlkLCAkc2VhcmNoTSk7DQogIH0NCiAgDQogIGZ1bmN0aW9uIFNlYXJjaERlbGV0ZUNhdGVnb3J5KCRpZCwgJiRzZWFyY2hNID0gbnVsbCkNCiAgew0KICAgICR0aGlzLT5TZWFyY2hEZWxldGVXb3JkcygnY2F0ZWdvcnknLCAkaWQsICRzZWFyY2hNKTsNCiAgfQ0KICANCiAgZnVuY3Rpb24gU2VhcmNoRGVsZXRlV29yZHMoJHR5cGUsICRpZCwgJiRzZWFyY2hNID0gbnVsbCkNCiAgew0KICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7DQogICAgaWYoaXNfbnVsbCgkc2VhcmNoTSkpDQogICAgICAkc2VhcmNoTSA9IGNtc21zKCktPkdldE1vZHVsZUluc3RhbmNlKCdTZWFyY2gnKTsNCg0KICAgIGlmICgkc2VhcmNoTSAhPSBGQUxTRSkNCiAgICB7DQogICAgICAkc2VhcmNoTS0+RGVsZXRlV29yZHMoJHRoaXMtPkdldE5hbWUoKSwgJGlkLCAkdHlwZSk7DQogICAgfQ0KICB9DQogIA0KICBmdW5jdGlvbiBTZWFyY2hBZGRGaWxlKCRpZCwgJGRhdGEsICRleHBpcmUsICYkc2VhcmNoTSA9IG51bGwpDQogIHsNCiAgICAkdGhpcy0+U2VhcmNoQWRkV29yZHMoJ2Rvd25sb2FkJywgJGlkLCAkZGF0YSwgJGV4cGlyZSwgJHNlYXJjaE0pOw0KICB9DQogIA0KICBmdW5jdGlvbiBTZWFyY2hBZGRDYXRlZ29yeSgkaWQsICRkYXRhLCAkZXhwaXJlLCAmJHNlYXJjaE0gPSBudWxsKQ0KICB7DQogICAgJHRoaXMtPlNlYXJjaEFkZFdvcmRzKCdjYXRlZ29yeScsICRpZCwgJGRhdGEsICRleHBpcmUsICRzZWFyY2hNKTsNCiAgfQ0KICANCiAgZnVuY3Rpb24gU2VhcmNoQWRkV29yZHMoJHR5cGUsICRpZCwgJGRhdGEsICRleHBpcmUsICYkc2VhcmNoTSA9IG51bGwpDQogIHsNCiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOw0KICAgIGlmKGlzX251bGwoJHNlYXJjaE0pKQ0KICAgICAgJHNlYXJjaE0gPSBjbXNtcygpLT5HZXRNb2R1bGVJbnN0YW5jZSgnU2VhcmNoJyk7DQogICAgaWYgKCRzZWFyY2hNICE9IEZBTFNFKQ0KICAgIHsNCiAgICAgICRleHBpcmUgPSAoJGV4cGlyZSAhPSBOVUxMICYmICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdleHBpcmVkX3NlYXJjaGFibGUnLDApID09IDApID8gICRkYi0+VW5peFRpbWVTdGFtcCgkZXhwaXJlKSA6IE5VTEw7DQogICAgICAkc2VhcmNoTS0+QWRkV29yZHMoJHRoaXMtPkdldE5hbWUoKSwgJGlkLCR0eXBlLCAkZGF0YSwgJGV4cGlyZSk7DQogICAgfQ0KICB9DQoNCiAgZnVuY3Rpb24gU2VhcmNoUmVpbmRleCgkbW9kdWxlID0gbnVsbCkNCiAgew0KICAgIGlmKGlzX251bGwoJG1vZHVsZSkpDQogICAgICAkbW9kdWxlID0mIGNtc21zKCktPkdldE1vZHVsZUluc3RhbmNlKCdTZWFyY2gnKTsNCg0KICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7DQoNCiAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2ptZG93bm1hbl9maWxlcyc7DQogICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgIA0KICAgIHdoaWxlICgkcmVzdWx0ICYmICEkcmVzdWx0LT5FT0YpDQogICAgew0KICAgICAgaWYgKCRyZXN1bHQtPmZpZWxkc1sndmlzaWJsZSddID09IHRydWUpDQogICAgICB7DQogICAgICAgICR0aGlzLT5TZWFyY2hEZWxldGVGaWxlKCRyZXN1bHQtPmZpZWxkc1snZmlsZV9pZCddLCAkbW9kdWxlICk7DQogICAgICAgICR0aGlzLT5TZWFyY2hBZGRGaWxlKCRyZXN1bHQtPmZpZWxkc1snZmlsZV9pZCddLA0KICAgICAgICAgICRyZXN1bHQtPmZpZWxkc1snYWxpYXMnXSAuICcgJyAuICRyZXN1bHQtPmZpZWxkc1snbmFtZSddIC4gJyAnIC4gJHJlc3VsdC0+ZmllbGRzWydkZXNjcmlwdGlvbiddLA0KICAgICAgICAgICRyZXN1bHQtPmZpZWxkc1snZXhwaXJlcyddLCAkbW9kdWxlKTsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgJHJlc3VsdC0+TW92ZU5leHQoKTsNCiAgICB9DQogICAgDQogICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9qbWRvd25tYW5fY2F0ZWdvcmllcyc7DQogICAgJHJlc3VsdCA9ICYkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCiAgICANCiAgICB3aGlsZSAoJHJlc3VsdCAmJiAhJHJlc3VsdC0+RU9GKQ0KICAgIHsNCiAgICAgICR0aGlzLT5TZWFyY2hEZWxldGVDYXRlZ29yeSgkcmVzdWx0LT5maWVsZHNbJ2NhdGVnb3J5X2lkJ10sICRtb2R1bGUgKTsNCiAgICAgICR0aGlzLT5TZWFyY2hBZGRDYXRlZ29yeSgkcmVzdWx0LT5maWVsZHNbJ2NhdGVnb3J5X2lkJ10sDQogICAgICAgICRyZXN1bHQtPmZpZWxkc1snYWxpYXMnXSAuICcgJyAuICRyZXN1bHQtPmZpZWxkc1snbmFtZSddIC4gJyAnIC4gJHJlc3VsdC0+ZmllbGRzWydkZXNjcmlwdGlvbiddLA0KICAgICAgICBudWxsLCAkbW9kdWxlKTsNCiAgICAgICRyZXN1bHQtPk1vdmVOZXh0KCk7DQogICAgfQ0KICB9DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgRGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJG1lc3NhZ2UpDQogIE5PVCBQQVJUIE9GIFRIRSBNT0RVTEUgQVBJDQoNCiAgVGhpcyBpcyBhbiBleGFtcGxlIG9mIGEgc2ltcGxlIG1ldGhvZCB0byBkaXNwbGF5DQogIGVycm9yIGluZm9ybWF0aW9uIG9uIHRoZSBhZG1pbiBzaWRlLg0KICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBEaXNwbGF5RXJyb3JQYWdlKCRpZCwgJiRwYXJhbXMsICRyZXR1cm5pZCwgJG1lc3NhZ2U9JycpDQogIHsNCiAgICAkc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7DQogICAgJHNtYXJ0eS0+YXNzaWduKCd0aXRsZV9lcnJvcicsICR0aGlzLT5MYW5nKCdlcnJvcicpKTsNCiAgICBpZiAoJG1lc3NhZ2UgIT0gJycpDQogICAgew0KICAgICAgJHNtYXJ0eS0+YXNzaWduKCdtZXNzYWdlJywgJG1lc3NhZ2UpOw0KICAgIH0NCg0KICAgIC8vIERpc3BsYXkgdGhlIHBvcHVsYXRlZCB0ZW1wbGF0ZQ0KICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZXJyb3IudHBsJyk7DQoNCiAgfQ0KICANCiAgZnVuY3Rpb24gRGlzcGxheURvd25sb2FkRXJyb3JQYWdlKCRtc2csICRyZXR1cm5saW5rID0gbnVsbCkNCiAgew0KICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsNCiAgICBpZigkcmV0dXJubGluayA9PSBudWxsICkgDQogICAgICAkcmV0dXJubGluayA9ICc8YSBocmVmPSJqYXZhc2NyaXB0Omhpc3RvcnkuYmFjaygpIj4nLiR0aGlzLT5sYW5nKCdiYWNrJykuJzwvYT4nOw0KICAgICRlcnJbJ21zZyddID0gJG1zZzsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2Vycm9yJywgJHRoaXMtPmxhbmcoJ2Vycm9yJykpOw0KICAgICRzbWFydHktPmFzc2lnbigncmV0dXJubGluaycsICRyZXR1cm5saW5rKTsNCiAgICAkc21hcnR5LT5hc3NpZ24oJ2Rvd25sb2FkX2Vycm9yJywgJGVycik7DQogICAgJHNtYXJ0eS0+YXNzaWduKCdkb3dubG9hZF9lcnJvcl9tc2cnLCAkdGhpcy0+bGFuZygnZG93bmxvYWRfZXJyb3JfbXNnJykpOw0KICAgIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZG93bmxvYWRfZXJyb3IudHBsJyk7DQogIH0NCiAgDQogIC8vIGdldCB0aGUgZGVmYXVsdCByZXN0cmljdGlvbnMgZXguIGRhdGUNCiAgZnVuY3Rpb24gR2V0RmlsZVN0ZFdoZXJlKCRhbGlhcyA9IG51bGwpDQogIHsNCiAgICAkYWxpYXMgPSAhZW1wdHkoJGFsaWFzKSA/ICRhbGlhcyAuICcuJyA6ICRhbGlhczsNCiAgICByZXR1cm4gJyggKCAnIC4gJGFsaWFzIC4gJ2V4cGlyZXMgSVMgTlVMTCAgT1IgJyAuICRhbGlhcyAuICdleHBpcmVzID49IG5vdygpICkgDQogICAgQU5EICggJyAuICRhbGlhcyAuICdzdGFydHMgSVMgTlVMTCAgT1IgJyAuICRhbGlhcyAuICdzdGFydHMgPD0gbm93KCkgKSApJzsNCiAgfQ0KICANCiAgLy8gZ2V0cyBudW1iZXIgb2YgYXNzb2NpYXRlZCBmaWxlcyBmb3IgY2F0ZWdvcmllcw0KICBmdW5jdGlvbiBHZXRDYXRlZ29yeUZpbGVOYigkd2hlcmUgPSBmYWxzZSkNCiAgew0KICAgICR0bXAgPSBhcnJheSgpOw0KICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7DQogICAgJHEgPSAnU0VMRUNUIGNhdGVnb3J5X2lkICwgQ09VTlQoZmlsZV9pZCkgQVMgY291bnQgRlJPTSAnIA0KICAgICAgICAgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX2ptZG93bm1hbl9maWxlc19jYXRlZ29yeSAnDQogICAgICAgICAuICgkd2hlcmUgIT09IGZhbHNlID8gJ1dIRVJFICcgLiAkd2hlcmUgOiAnJykNCiAgICAgICAgIC4gJ0dST1VQIEJZIGNhdGVnb3J5X2lkJzsNCiAgICANCiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHEpOw0KICAgIA0KICAgIHdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkNCiAgICAgICR0bXBbJHJvd1snY2F0ZWdvcnlfaWQnXV0gPSAgJHJvd1snY291bnQnXTsNCiAgICAgIA0KICAgIHJldHVybiAkdG1wOw0KICB9DQogIA0KICBmdW5jdGlvbiBHZXRDYXRlZ29yaWVzKCAkd2hlcmUgPSBmYWxzZSApDQogIHsNCiAgICAkdG1wID0gYXJyYXkoKTsNCiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOw0KICAgIA0KICAgICRxID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9qbWRvd25tYW5fY2F0ZWdvcmllcyAnDQogICAgICAgICAuICgkd2hlcmUgIT09IGZhbHNlID8gJ1dIRVJFICcgLiAkd2hlcmUgOiAnJykNCiAgICAgICAgIC4gJ0dST1VQIEJZIGNhdGVnb3J5X2lkJzsNCiAgICAgICAgIA0KICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcSk7DQogICAgDQogICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQ0KICAgICAgJHRtcFskcm93WydjYXRlZ29yeV9pZCddXSA9ICAkcm93Ow0KICAgICAgDQogICAgcmV0dXJuICR0bXA7DQogIH0NCiAgDQogIC8vIGdldCBmaWxlIGFzc290aWF0aW9uIHdpdGggYXJyYXlzDQogIC8vIHJldHVybnMgYW4gYXJyYXkgd2l0aCBlbGVtZW50cw0KICAvLwkJJGZpbGVpZCA9PiBhcnJheSAoDQogIC8vCQkJCQknY291bnQnID0+IChpbnQpIHNpemUgb2YgYXJyYXksDQogIC8vCQkJCQkwID0+IGFycmF5KCBsb25nX25hbWUgLCBuYW1lLCBjYXRlZ29yeV9pZCkNCiAgLy8JCQkJCS4uLg0KICAvLwkJCQkpDQogIGZ1bmN0aW9uIEdldEZpbGVDYXRlZ29yaWVzKCAkd2hlcmUgPSBmYWxzZSApDQogIHsNCiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOw0KICAgIC8vIGdldCBmaWxlIGNhdGVnb3JpZXMgc28gd2UgY2FuIHNob3cgdG8gd2hpY2ggY2F0ZWdvcnkgZmlsZSBiZWxvbmdzDQogICAgLy8gd2lsbCBiZSB1c2VkIHNvb24NCg0KICAgICRmaWxlc19jYXRlZ29yaWVzID0gYXJyYXkoKTsNCiAgICAkcSA9ICdTRUxFQ1QgZmlsZV9pZCwgbG9uZ19uYW1lLCBuYW1lLCBjYXRlZ29yeV9pZCwgYWxpYXMgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2ptZG93bm1hbl9maWxlc19jYXRlZ29yeQ0KICAgIExFRlQgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2ptZG93bm1hbl9jYXRlZ29yaWVzIFVTSU5HIChjYXRlZ29yeV9pZCkgJy4NCiAgICAoJHdoZXJlIT09ZmFsc2U/ICdXSEVSRSAnLiR3aGVyZTonJyk7DQoNCiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHEpOw0KICAgIA0KICAgIHdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkNCiAgICB7DQogICAgICAkZmlsZXNfY2F0ZWdvcmllc1skcm93WydmaWxlX2lkJ11dW10gPSBhcnJheSgNCiAgICAgICAgJ2xvbmdfbmFtZScgPT4gJHJvd1snbG9uZ19uYW1lJ10sDQogICAgICAgICduYW1lJyA9PiAkcm93WyduYW1lJ10sDQogICAgICAgICdhbGlhcycgPT4gJHJvd1snYWxpYXMnXSwNCiAgICAgICAgJ2NhdGVnb3J5X2lkJyA9PiAkcm93WydjYXRlZ29yeV9pZCddDQogICAgICApOw0KICAgIH0NCg0KICAgIGZvcmVhY2ggKCRmaWxlc19jYXRlZ29yaWVzIGFzICRrID0+ICR2ICkNCiAgICAgICRmaWxlc19jYXRlZ29yaWVzWyRrXVsnY291bnQnXSA9IGNvdW50KCR2KTsNCg0KICAgIHJldHVybiAkZmlsZXNfY2F0ZWdvcmllczsNCiAgfQ0KICAvLyBnZXQgYWxsIHN1YmNhdGVnb3JpZXMNCiAgLy8JIGl0ZW1zIGluIHJldHVybmVkIGFycmF5Og0KICAvLyAgIDEgPT4gYXJyYXkNCiAgLy8gICAgICAnaWQnID0+IGludCAxICAvLyBpZCBpbiBkYXRhYmFzZQ0KICAvLyAgICAgICduYW1lJyA9PiBzdHJpbmcgJ0dlbmVyYWwnIC8vIG5hbWUNCiAgLy8JCS4uLg0KICAvLyAgICAgICdmaWxlc25iJyA9PiBpbnQgMiAvLyBudW1iZXIgb2YgZmlsZXMNCiAgLy8gICAgICAnaXRlbXMnID0+IGFycmF5KCYsJiwmLC4uLikgLy8gcmVmZXJhbHMgdG8gc3ViY2F0ZWdvcmllcw0KICAvLyAgICAgICdwYXJlbnQnID0+ICYgLy8gcmVmZXJhbCB0byBwYXJlbnQgY2F0ZWdvcnkNCiAgZnVuY3Rpb24gR2V0U3ViQ2F0ZWdvcmllcyggJHdoZXJlID0gZmFsc2UgKQ0KICB7DQogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiAgICAkcSA9ICdTRUxFQ1QgKiwgQ09VTlQoZmlsZV9pZCkgQVMgZmlsZXNuYiBGUk9NIGNtc19tb2R1bGVfam1kb3dubWFuX2NhdGVnb3JpZXMgYw0KICAgIExFRlQgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2ptZG93bm1hbl9maWxlc19jYXRlZ29yeSBVU0lORyAoY2F0ZWdvcnlfaWQpDQogICAgJyAuKCR3aGVyZSE9PWZhbHNlPyAnV0hFUkUgJy4kd2hlcmU6JycpLg0KICAgICdHUk9VUCBCWSBjYXRlZ29yeV9pZCBPUkRFUiBCWSBjLmhpZXJhcmNoeV9wcmlvcml0eSc7DQogICAgJHN1YmNhdGVnb3JpZXMgPSBhcnJheSgpOw0KICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcSk7DQogICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQ0KICAgIHsNCg0KICAgICAgJHN1YmNhdGVnb3JpZXNbKGludCkgJHJvd1snY2F0ZWdvcnlfaWQnXSBdID0gYXJyYXkoDQogICAgICAgICdpZCcgPT4gKGludCkkcm93WydjYXRlZ29yeV9pZCddLA0KICAgICAgICAnbmFtZScgPT4gJHJvd1snbmFtZSddLA0KICAgICAgICAnbG9uZ19uYW1lJyA9PiAkcm93Wydsb25nX25hbWUnXSwNCiAgICAgICAgJ2FsaWFzJyA9PiAkcm93WydhbGlhcyddLA0KICAgICAgICAnZmlsZXNuYicgPT4gKGludCkkcm93WydmaWxlc25iJ10sDQogICAgICAgICdpdGVtcycgPT4gYXJyYXkoKSAsDQogICAgICAgICdwYXJlbnQnID0+IGZhbHNlICwNCiAgICAgICk7DQogICAgICAkdG1wID0gJiRzdWJjYXRlZ29yaWVzWyhpbnQpICRyb3dbJ2NhdGVnb3J5X2lkJ10gXTsNCg0KICAgICAgJHMgPSBleHBsb2RlKCIuIiwkcm93WydoaWVyYXJjaHknXSk7DQogICAgICBpZihjb3VudCgkcykgPiAxKQ0KICAgICAgew0KICAgICAgICAvLyBub3QgYSAxc3QgbGV2ZWwgY2F0ZWdvcnkNCiAgICAgICAgJHN1YmNhdGVnb3JpZXNbIChpbnQpICRzW2NvdW50KCRzKS0yXSBdWydpdGVtcyddW10gPSAkdG1wOw0KICAgICAgICAkc3ViY2F0ZWdvcmllc1soaW50KSAkcm93WydjYXRlZ29yeV9pZCddIF1bJ3BhcmVudCddICA9ICYkc3ViY2F0ZWdvcmllc1sgKGludCkgJHNbY291bnQoJHMpLTJdIF07DQogICAgICB9DQogICAgfQ0KICAgIHJldHVybiAkc3ViY2F0ZWdvcmllczsNCiAgfQ0KICAvLyBnZXRzIGh1bWFuIHJlZGVhYmxlIGFjY2VzcyB0eXBlIGFycmF5DQogIGZ1bmN0aW9uIEdldEFjY2Vzc1R5cGVzKCRhY2Nlc3MpDQogIHsNCiAgICAkdCA9IGFycmF5KCk7DQogICAgaWYoJHRoaXMtPkNoZWNrRG93blR5cGUoJGFjY2VzcywgSk1ETV9CWV9GUkVFKSkNCiAgICAgICR0W10gPSAnZnJlZSc7DQogICAgaWYoJHRoaXMtPkNoZWNrRG93blR5cGUoJGFjY2VzcywgSk1ETV9CWV9GRVUpKQ0KICAgICAgJHRbXSA9ICdmZXUnOw0KICAgIGlmKCR0aGlzLT5DaGVja0Rvd25UeXBlKCRhY2Nlc3MsIEpNRE1fQllfTUFJTCkpDQogICAgICAkdFtdID0gJ21haWwnOw0KICAgIHJldHVybiAkdDsNCiAgfQ0KICAvLyByZXR1cm5zIHRleHQgd2l0aCByZXBsYWNlZCBub24td29yZCBjaGFycyB0byAkcmVwbGFjZW1lbnQNCiAgZnVuY3Rpb24gT2JzdHJ1Y2F0ZSgkaHJlZiwgJHJlcGxhY2VtZW50ID0gJy0nKQ0KICB7DQogICAgcmV0dXJuIHByZWdfcmVwbGFjZSgiLyhcVyspL2kiLCAkcmVwbGFjZW1lbnQsICRocmVmKTsNCiAgfQ0KICAvLyB0YWtlcyBpZCBhbmQgYXJyYXkgcHJvZHVjZWQgYnkgZnVuY3Rpb24gR2V0RmlsZUNhdGVnb3JpZXMNCiAgLy8gZnVydGhlciB2ZXJzaW9uIHdpbGwgbWFrZSBsaW5rcw0KICBmdW5jdGlvbiBDcmVhdGVDYXRlZ29yeUxpbmtzKCRtaWQsJHJldHVybmlkLCRpZCwgICYkYXJyICkNCiAgew0KICAgICRpZCA9IChpbnQpJGlkOw0KICAgIGlmKCAhaXNfYXJyYXkoJGFycikgfHwgZW1wdHkoJGFycikgfHwgIWlzc2V0KCRhcnJbJGlkXSkgKQ0KICAgICAgLy8gaWYgZXJyb3Igb3IgZW1wdHkgb3Igbm8gaXRlbSB0byBzZWxsZWN0DQogICAgICByZXR1cm4gJyc7DQogICAgJHQgPSBhcnJheSgpOw0KICAgIHVuc2V0KCRhcnJbJGlkXVsnY291bnQnXSk7DQogICAgZm9yZWFjaCggJGFyclskaWRdIGFzICR2ICkNCiAgICAgICR0W10gPSAkdGhpcy0+Q3JlYXRlQ2F0ZWdvcnlMaW5rKCRtaWQsJHJldHVybmlkLCR2WyduYW1lJ10sJHZbJ2FsaWFzJ10pOw0KDQogICAgcmV0dXJuIAlpbXBsb2RlKCAiLCAiLCAkdCApOw0KICB9DQoNCiAgLy8NCiAgZnVuY3Rpb24gQ3JlYXRlQ2F0ZWdvcnlMaW5rKCRpZCwkcmV0dXJuaWQsJG5hbWU9JycsJGFsaWFzPScnLCAkZGVwdGg9ZmFsc2UsJG9ubHl1cmw9ZmFsc2UpDQogIHsNCiAgICAkYXJyID0gYXJyYXkoKTsNCiAgICBpZigkZGVwdGghPT1mYWxzZSkNCiAgICAgICRhcnJbJ2RlcHRoJ10gPSAkZGVwdGg7DQoNCiAgICBpZigkbmFtZSA9PSAnJyB8fCAkYWxpYXMgPT0gJycpDQogICAgew0KDQogICAgICAkdCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHQnLCAkcmV0dXJuaWQsICR0aGlzLT5sYW5nKCdyb290Y2F0ZWdvcnknKSwNCiAgICAgICAgJGFyciwnJywkb25seXVybCx0cnVlLCcnLGZhbHNlLA0KICAgICAgICAnZG93bmxvYWQvJy4kcmV0dXJuaWQuKCRkZXB0aCE9PWZhbHNlPyIvIi4kZGVwdGg6JycpKTsNCiAgICB9DQogICAgZWxzZQ0KICAgIHsNCiAgICAgICRhcnJbJ2FsaWFzJ109JGFsaWFzOw0KDQogICAgICAkdCA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHQnLCAkcmV0dXJuaWQsICRuYW1lLA0KICAgICAgICAkYXJyLCcnLCRvbmx5dXJsLHRydWUsJycsZmFsc2UsDQogICAgICAgICdkb3dubG9hZC9jYXRlZ29yeS8nLiRhbGlhcy4nLycuJHJldHVybmlkLigkZGVwdGghPT1mYWxzZT8iLyIuJGRlcHRoOicnKSk7DQogICAgfQ0KICAgIHJldHVybiAkdDsNCiAgfQ0KICANCiAgZnVuY3Rpb24gQ3JlYXRlRG93bmxvYWRMaW5rKCRpZCwkcmV0dXJuaWQsJG5hbWUsJGFsaWFzLCRvbmx5dXJsPWZhbHNlKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2Rvd25sb2FkJywgJHJldHVybmlkLCAkbmFtZSAsIGFycmF5KCdhbGlhcyc9PiRhbGlhcyksJycsJG9ubHl1cmwsdHJ1ZSwnJyxmYWxzZSwnZG93bmxvYWQvZ2V0LycuJGFsaWFzLicvJy4kcmV0dXJuaWQpOw0KICB9DQoNCiAgZnVuY3Rpb24gQ3JlYXRlRGV0YWlsTGluaygkaWQsJHJldHVybmlkLCRuYW1lLCRhbGlhcywkb25seXVybD1mYWxzZSkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZXRhaWwnLCAkcmV0dXJuaWQsICRuYW1lICwgYXJyYXkoJ2FsaWFzJz0+JGFsaWFzKSwnJywkb25seXVybCx0cnVlLCcnLGZhbHNlLCdkb3dubG9hZC9kZXRhaWwvJy4kYWxpYXMuJy8nLiRyZXR1cm5pZCk7DQogIH0NCiAgDQogIGZ1bmN0aW9uIFRvSFJTaXplKCRzaXplKQ0KICB7DQogICAgcmV0dXJuICggICRzaXplPDEwMjQ/ICRzaXplLiIgQiI6ICggJHNpemU8MTA0ODU3NiA/ICAgKChpbnQpICggJHNpemUvMTAyNCkpLiIgS0IiIDogKChpbnQpICggJHNpemUvMTA0ODU3NiApKS4iIE1CIiApKTsNCiAgfQ0KDQogIC8vIGJhc2VkIG9uIE5ld3MgTW9kdWxlIGZ1bmN0aW9uIE5ld3MtPlVwZGF0ZUhpZXJhcmNoeVBvc2l0aW9ucygpDQogIGZ1bmN0aW9uIFVwZGF0ZUhpZXJhcmNoeVBvc2l0aW9ucygpDQogIHsNCiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOw0KDQogICAgLy8gY29tcHV0aW5nIGZpbGVzIHBsYWNlDQogICAgJHF1ZXJ5ID0gIlNFTEVDVCBjYXRlZ29yeV9pZCwgbmFtZSwgcHJpb3JpdHkgRlJPTSAiIC4gY21zX2RiX3ByZWZpeCgpIC4gIm1vZHVsZV9qbWRvd25tYW5fY2F0ZWdvcmllcyI7DQogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQ0KICAgIHsNCiAgICAgICRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbiA9ICIiOw0KICAgICAgJGN1cnJlbnRfaGllcmFyY2h5X3ByaW9yaXR5ID0gIiI7DQogICAgICAkY3VycmVudF9sb25nX25hbWUgPSAiIjsNCiAgICAgICRjb250ZW50X2lkID0gJHJvd1snY2F0ZWdvcnlfaWQnXTsNCiAgICAgICRjb250ZW50X3ByaW9yaXR5ID0gJHJvd1sncHJpb3JpdHknXTsNCiAgICAgICRjdXJyZW50X3BhcmVudF9pZCA9ICRyb3dbJ2NhdGVnb3J5X2lkJ107DQogICAgICAkY291bnQgPSAwOw0KDQogICAgICB3aGlsZSAoJGN1cnJlbnRfcGFyZW50X2lkID4gLTEpDQogICAgICB7DQogICAgICAgICRxdWVyeSA9ICJTRUxFQ1QgY2F0ZWdvcnlfaWQsIG5hbWUsIHBhcmVudF9pZCwgcHJpb3JpdHkgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ptZG93bm1hbl9jYXRlZ29yaWVzIFdIRVJFIGNhdGVnb3J5X2lkID0gPyI7DQogICAgICAgICRyb3cyID0gJGRiLT5HZXRSb3coJHF1ZXJ5LCBhcnJheSgkY3VycmVudF9wYXJlbnRfaWQpKTsNCiAgICAgICAgDQogICAgICAgIGlmICgkcm93MikNCiAgICAgICAgew0KICAgICAgICAgICRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbiA9IHN0cl9wYWQoJHJvdzJbJ2NhdGVnb3J5X2lkJ10sIDUsICcwJywgU1RSX1BBRF9MRUZUKSAuICIuIiAuICRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbjsNCiAgICAgICAgICAkY3VycmVudF9oaWVyYXJjaHlfcHJpb3JpdHkgPSBzdHJfcGFkKCRyb3cyWydwcmlvcml0eSddLCA1LCAnMCcsIFNUUl9QQURfTEVGVCkgLiAifCIuIHN0cl9wYWQoJHJvdzJbJ2NhdGVnb3J5X2lkJ10sIDUsICcwJywgU1RSX1BBRF9MRUZUKS4gIi4iIC4gJGN1cnJlbnRfaGllcmFyY2h5X3ByaW9yaXR5Ow0KICAgICAgICAgICRjdXJyZW50X2xvbmdfbmFtZSA9ICRyb3cyWyduYW1lJ10gLiAnIHwgJyAuICRjdXJyZW50X2xvbmdfbmFtZTsNCiAgICAgICAgICAkY3VycmVudF9wYXJlbnRfaWQgPSAkcm93MlsncGFyZW50X2lkJ107DQogICAgICAgICAgJGNvdW50Kys7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAgJGN1cnJlbnRfcGFyZW50X2lkID0gMDsNCiAgICAgICAgfQ0KICAgICAgfQ0KDQogICAgICBpZiAoc3RybGVuKCRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbikgPiAwKQ0KICAgICAgew0KICAgICAgICAkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24gPSBzdWJzdHIoJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uLCAwLCBzdHJsZW4oJGN1cnJlbnRfaGllcmFyY2h5X3Bvc2l0aW9uKSAtIDEpOw0KICAgICAgICAkY3VycmVudF9oaWVyYXJjaHlfcHJpb3JpdHkgPSBzdWJzdHIoJGN1cnJlbnRfaGllcmFyY2h5X3ByaW9yaXR5LCAwLCBzdHJsZW4oJGN1cnJlbnRfaGllcmFyY2h5X3ByaW9yaXR5KSAtIDEpOw0KICAgICAgfQ0KDQogICAgICBpZiAoc3RybGVuKCRjdXJyZW50X2xvbmdfbmFtZSkgPiAwKQ0KICAgICAgew0KICAgICAgICAkY3VycmVudF9sb25nX25hbWUgPSBzdWJzdHIoJGN1cnJlbnRfbG9uZ19uYW1lLCAwLCBzdHJsZW4oJGN1cnJlbnRfbG9uZ19uYW1lKSAtIDMpOw0KICAgICAgfQ0KICAgICAgDQogICAgICAkZGVwdGggPSBzdWJzdHJfY291bnQoICRjdXJyZW50X2hpZXJhcmNoeV9wb3NpdGlvbiwgJy4nICk7DQogICAgICAkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfam1kb3dubWFuX2NhdGVnb3JpZXMgU0VUIGhpZXJhcmNoeSA9ID8sIGxvbmdfbmFtZSA9ID8sIHByaW9yaXR5ID0gPywgaGllcmFyY2h5X3ByaW9yaXR5ID0gPywgZGVwdGggPSA/IFdIRVJFIGNhdGVnb3J5X2lkID0gPyI7DQogICAgICAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkY3VycmVudF9oaWVyYXJjaHlfcG9zaXRpb24sICRjdXJyZW50X2xvbmdfbmFtZSwgJGNvbnRlbnRfcHJpb3JpdHksICRjdXJyZW50X2hpZXJhcmNoeV9wcmlvcml0eSwgJGRlcHRoLCAkY29udGVudF9pZCkpOw0KICAgIH0NCiAgfQ0KDQogIC8vIG1haW4gZnVuY3Rpb24gZm9yIHBhcnNpbmcgdGhlIHNlbGVjdG9yDQogIGZ1bmN0aW9uIE1hdGNoUGFpciggJiRzdWJqZWN0ICwgJiRhcnIpDQogIHsNCiAgICAkbWF0Y2hlcz1hcnJheSgpOw0KICAgICRwYXR0ZXJuID0gJy8oWyRdP1xkK3xcKFskXT9cZCtcKSkoW3wmXSkoWyRdP1xkK3xcKFskXT9cZCtcKSkvaSc7DQogICAgJGNtID0gcHJlZ19tYXRjaF9hbGwoJHBhdHRlcm4sICRzdWJqZWN0LCAkbWF0Y2hlcyk7DQoNCiAgICBmb3JlYWNoKCRtYXRjaGVzWzBdIGFzICRrID0+ICRtKQ0KICAgIHsNCiAgICAgICRjID0gY291bnQoJGFycik7DQogICAgICAkY291bnQgPSAwOw0KICAgICAgJHN1YmplY3QgPSAgc3Vic3RyKCRzdWJqZWN0LDAsIHN0cnBvcygkc3ViamVjdCwgJG0pKS4NCiAgICAgICckJy4kYy4NCiAgICAgIHN1YnN0cigkc3ViamVjdCxzdHJwb3MoJHN1YmplY3QsICRtKStzdHJsZW4oJG0pKTsNCg0KICAgICAgJGFyclskY10gPSBhcnJheSggJG1hdGNoZXNbMl1bJGtdLCAkbWF0Y2hlc1sxXVska10gLCRtYXRjaGVzWzNdWyRrXSApOw0KDQogICAgICAvLyBzaHJpbmsgb3B0aW1pemUNCiAgICAgICR2ID0mICRhcnJbJGNdOyAvLyBsZXRgcyBtYWtlIGFuIGFsaWFzDQogICAgICAkdiA9IHN0cl9yZXBsYWNlKCBhcnJheSgiKCIsIikiKSwgYXJyYXkoJycsJycpICwgJHYpOyAvLyBicmFja2V0cyBhcmUgbm8gbG9uZ2VyIG5lZWRlZA0KDQogICAgICBpZigkdlswXSA9PSAnfCcpIC8vIHdlIGNhbiBzaHJpbmsgc3FsIG9ubHkgZm9yIE9SIHBhcmFtZXRlcnMNCiAgICAgIHsNCiAgICAgICAgZm9yKCAkaiA9IDEgOyAkaiA8IDM7ICRqKyspDQogICAgICAgIHsNCiAgICAgICAgICBpZigkdlskal17MH0gPT0gJyQnKQ0KICAgICAgICAgIHsNCiAgICAgICAgICAgICR6ID0gKGludCkgc3Vic3RyKCR2WyRqXSwgMSk7DQogICAgICAgICAgICBpZiggJGFyclskel1bMF0gPT0gJ3wnICkNCiAgICAgICAgICAgIHsvLyBub3cgd2UgY2FuIHNocmluaw0KICAgICAgICAgICAgICB1bnNldCgkYXJyWyR6XVswXSk7DQogICAgICAgICAgICAgIGZvcmVhY2goJGFyclskel0gYXMgJHp2KQ0KICAgICAgICAgICAgICAgICRhcnJbJGNdW10gPSAkenY7DQoNCiAgICAgICAgICAgICAgdW5zZXQoJGFyclskY11bJGpdKTsNCiAgICAgICAgICAgICAgJGFyclskel0gPSBudWxsOyAvLyB3ZSB3b25gdCBuZWVkIGl0IGFueW1vcmUNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0NCg0KICAgIH0NCiAgICANCiAgICBpZigkY20gPiAwKQ0KICAgIHsNCiAgICAgIHJldHVybiAkdGhpcy0+TWF0Y2hQYWlyKCAkc3ViamVjdCAsICRhcnIpOyANCiAgICB9DQogICAgcmV0dXJuIDA7DQogIH0NCg0KICBmdW5jdGlvbiBjbGVhblNlbGVjdG9yKCRzZWxlY3RvcikNCiAgew0KICAgIHJldHVybiBwcmVnX3JlcGxhY2UoJy8oW14wLTkoKXwmXSkrL2knLCAnJywgJHNlbGVjdG9yKTsgLy8gY2xlYW5pbmcNCiAgfQ0KDQogIGZ1bmN0aW9uIHNlbGVjdG9yVG9TUUwoJHNlbGVjdG9yKQ0KICB7DQogICAgJHNlbGVjdG9yID0gdHJpbSgkc2VsZWN0b3IpOw0KDQogICAgaWYoZW1wdHkoJHNlbGVjdG9yKSlyZXR1cm4gJyc7DQoNCiAgICAkY2F0ZWdvcnljbGVhbiA9ICRjYXRlZ29yeWlkICA9ICR0aGlzLT5jbGVhblNlbGVjdG9yKCRzZWxlY3Rvcik7IC8vIGNsZWFuaW5nDQoNCiAgICBpZiggcHJlZ19tYXRjaCgnL15bJF0/XGQrJC9pJywgJGNhdGVnb3J5aWQpICB8fCBwcmVnX21hdGNoKCcvXlwoWyRdP1xkK1wpJC9pJywgJGNhdGVnb3J5aWQpICkNCiAgICB7ICANCiAgICAgIC8vIHdlIGhhdmUgc2luZ2xlIHNlbGVjdG9yDQogICAgICAkY2F0ZWdvcnlpZCAgPSBwcmVnX3JlcGxhY2UoJy8oW14wLTldKSsvaScsICcnLCAkY2F0ZWdvcnlpZCk7IC8vIGNsZWFuaW5nDQogICAgICByZXR1cm4gJ2hpZXJhcmNoeSBMSUtFIFwnJScuc3RyX3BhZCgkY2F0ZWdvcnlpZCwgNSwgJzAnLCBTVFJfUEFEX0xFRlQpLiclXCcnOw0KICAgIH0NCiAgICAvLyB3ZSBoYXZlIGNvbXBsZXggc2VsZWN0b3INCiAgICAkYXJyID0gYXJyYXkoKTsgLy8gYXJyYXkgZm9yIHN0b3JpbmcgcGFpcg0KICAgICR0aGlzLT5NYXRjaFBhaXIoICRjYXRlZ29yeWlkICwgJGFycik7IC8vIHJlY3Vyc2l2ZSBjYXRlZ29yeSBzZWxlY3RvciBwYXJzaW5nDQoNCiAgICAkY2F0ZWdvcnlpZCA9IHN0cl9yZXBsYWNlKCBhcnJheSgiKCIsIikiKSwgJycgLCAkY2F0ZWdvcnlpZCk7DQoNCiAgICBpZiAoIHByZWdfbWF0Y2goJy9eWyRdP1xkKyQvaScsICRjYXRlZ29yeWlkKSA9PSAwICkNCiAgICB7DQogICAgICAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPmxhbmcoJ3dyb25nY2F0ZWdvcnlzZWwnLCAkY2F0ZWdvcnljbGVhbikgKTsNCiAgICAgIHJldHVybjsNCiAgICB9DQoNCiAgICAvLyBub3Qgd2UgYXJlIHN1cmUgdGhhdCBjYXRlZ29yeSBzZWxlY3RvciBpcyBvaw0KICAgIC8vIHdlIGNhbiBjaGFuZ2UgaXQgdG8gc3FsDQoNCiAgICAkc3FsID0gJyc7DQoNCiAgICBmb3JlYWNoKCAkYXJyIGFzICRrID0+ICR2ICkNCiAgICB7DQogICAgICAkdG1wID0gYXJyYXkoKTsNCiAgICAgIA0KICAgICAgaWYoIGVtcHR5KCR2KSApIGNvbnRpbnVlOw0KDQogICAgICAkdiA9IGFycmF5X3VuaXF1ZSgkdik7IC8vIG5vIG5lZWQgZm9yIGRvdWJsZXMNCg0KICAgICAgJG9wID0gJHZbMF07IC8vIGdldCBvcGVyYXRvcg0KICAgICAgdW5zZXQoJHZbMF0pOyAgLy8gY2xlYW4gb3BlcmF0b3INCg0KICAgICAgZm9yZWFjaCgkdiBhcyAkdHYpDQogICAgICB7DQogICAgICAgIGlmKCR0dnswfSA9PSAnJCcpIC8vIHdlIGdldCBhIHJlZmVyYWwNCiAgICAgICAgew0KICAgICAgICAgICR6ID0gKGludCkgc3Vic3RyKCR0diwgMSk7DQogICAgICAgICAgJHRtcFtdID0gJGFyclskel07DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICAgICR0bXBbXSA9ICdoaWVyYXJjaHkgTElLRSBcJyUnLnN0cl9wYWQoJHR2LCA1LCAnMCcsIFNUUl9QQURfTEVGVCkuJyVcJyc7DQogICAgICB9DQoNCiAgICAgIGlmKCAkb3AgPT0gJ3wnICkNCiAgICAgICAgJG9wID0gIiBPUiAiOw0KICAgICAgZWxzZQ0KICAgICAgICAkb3AgPSAiIEFORCAiOw0KDQogICAgICAkc3FsID0gJGFyclska10gPSAiKCIuaW1wbG9kZSgkb3AsICR0bXApLiIpIjsNCiAgICB9DQoNCiAgICByZXR1cm4gJHNxbDsNCiAgfQ0KDQogIC8vIHVncmFkZSBmaWxlIGFncmVnYXRpb24gd2hlbiBjYXRlZ29yeSBjaGFuZ2UNCiAgZnVuY3Rpb24gVXBkYXRlQXNzb2NpYXRpb25BZ3JlZ2F0aW9uQ2F0ZWdvcnkoICRjYXQgKQ0KICB7DQogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiAgICAkcXVlcnkgPSAiU0VMRUNUIGZpbGVfaWQgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ptZG93bm1hbl9maWxlc19jYXRlZ29yeQ0KICAgIFdIRVJFIGNhdGVnb3J5X2lkID0gIi4oaW50KSRjYXQuIjsiOw0KICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgICRhcnIgPSBhcnJheSgpOw0KICAgIHdoaWxlKCAkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSApDQogICAgICAkYXJyW10gPSAoaW50KSAkcm93WydmaWxlX2lkJ107DQoNCiAgICAkdGhpcy0+VXBkYXRlQXNzb2NpYXRpb25BZ3JlZ2F0aW9uKCAkYXJyICk7DQogIH0NCg0KICAvLyB1cGdyYWRlIGZpbGUgYWdyZWdhdGlvbiB3aGVuIGZpbGUocykgY2hhbmdlDQogIC8vIGlmIGZhbHNlIGFsbCBmaWxlIGFyZSB1cGdyYWdlZA0KICAvLyAgICBpbnQgb25seSBvbmUNCiAgLy8gICAgYXJyYXkgYWxsIGZpbGVzIGluIGFycmF5DQogIGZ1bmN0aW9uIFVwZGF0ZUFzc29jaWF0aW9uQWdyZWdhdGlvbiggJGZpbGUgPSBmYWxzZSApDQogIHsNCiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOw0KICAgICRxdWVyeSA9Jyc7DQogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCJTRUxFQ1QgZmlsZV9pZCBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfam1kb3dubWFuX2ZpbGVzIik7DQogICAgd2hpbGUoICRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpICkNCiAgICAgICRhcnJbJHJvd1snZmlsZV9pZCddXSA9ICcnOw0KDQogICAgJHByZWZpeCA9IlNFTEVDVCBmaWxlX2lkLCBoaWVyYXJjaHkgRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ptZG93bm1hbl9maWxlc19jYXRlZ29yeSBmYw0KICAgIExFRlQgSk9JTiAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ptZG93bm1hbl9jYXRlZ29yaWVzIGMgVVNJTkcoY2F0ZWdvcnlfaWQpIjsNCiAgICBpZiggJGZpbGUgID09PSBmYWxzZSApDQogICAgey8vIGFsbCBmaWxlcyBhcmUgdXBncmFkZWQNCiAgICAgICRxdWVyeSA9ICRwcmVmaXg7DQogICAgfQ0KICAgIGVsc2UgaWYoIGlzX2ludCgkZmlsZSkgKQ0KICAgIHsvLyBPbmx5IG9uZSBmaWxlDQogICAgICAkcXVlcnkgPSAkcHJlZml4LiIgV0hFUkUgZmlsZV9pZCAgPSAkZmlsZSAiOw0KICAgIH0NCiAgICBlbHNlIGlmKCBpc19hcnJheSgkZmlsZSkgJiYgY291bnQoJGZpbGUpPjAgKQ0KICAgIHsvLyBvbmx5IGZpbGVzIGluIGFycmF5DQogICAgICBmb3JlYWNoKCRmaWxlIGFzICRrID0+ICR2KQ0KICAgICAgICAkZmlsZVska10gPSAoaW50KSAkdjsNCiAgICAgICRxdWVyeSA9ICRwcmVmaXguIiBXSEVSRSBmaWxlX2lkIElOKCIuaW1wbG9kZSgiLCIsJGZpbGUpLiIpOyI7DQogICAgfQ0KDQogICAgaWYoJHF1ZXJ5ID09ICcnKQ0KICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignV3JvbmcgJGZpbGUgcGFyYW1ldGVyIGluICcuX19GVU5DVElPTl9fLicgZnVuY3Rpb24gaW4gZmlsZSAnLl9fRklMRV9fKTsNCg0KICAgICRhcnIgPSBhcnJheSgpOw0KICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgIHdoaWxlKCAkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSApDQogICAgICAkYXJyWyRyb3dbJ2ZpbGVfaWQnXV1bXSA9ICRyb3dbJ2hpZXJhcmNoeSddOw0KDQogICAgZm9yZWFjaCggJGFyciBhcyAkayA9PiAkdikNCiAgICB7DQogICAgICAkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfam1kb3dubWFuX2ZpbGVzIFNFVA0KICAgICAgaGllcmFyY2h5ID0gJyIuaW1wbG9kZSgiOyIsJHYpLiInDQogICAgICBXSEVSRSBmaWxlX2lkID0gIi4oaW50KSRrOw0KICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgfQ0KICB9DQoNCiAgLy8gYmFzZWQgb24gTmV3cyBNb2R1bGUgZnVuY3Rpb24gTmV3cy0+Q3JlYXRlUGFyZW50RHJvcGRvd24oKQ0KICAvLyByZXR1cm4gZ2VuZXJhdGVkIGRyb3Bkb3duaW5wdXQgd2l0aCBpdGVtIHNldCBvbiAkc2VsZWN0ZWR2YWx1ZQ0KICAvLwkJICBpbnB1dCB3aWxsIGNvbnRhaW4gYWxsICRjYXRpZCBraWRzDQogIC8vCQkgIGlmICRjYXRpZCA9IC0xIGFsbCByb290IG5vZGUga2lkcw0KICBmdW5jdGlvbiBDcmVhdGVQYXJlbnREcm9wZG93bigkaWQsICRjYXRpZCA9IC0xLCAkc2VsZWN0ZWR2YWx1ZSA9IC0xKQ0KICB7DQogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCg0KICAgICRsb25nbmFtZSA9ICcnOw0KDQogICAgJGl0ZW1zWycoJyAuICR0aGlzLT5MYW5nKCdub25lJykgLiAnKSddID0gJy0xJzsNCg0KICAgICRxdWVyeSA9ICJTRUxFQ1QgaGllcmFyY2h5LCBsb25nX25hbWUgRlJPTSAiIA0KICAgICAgICAgICAgIC4gY21zX2RiX3ByZWZpeCgpIA0KICAgICAgICAgICAgIC4gIm1vZHVsZV9qbWRvd25tYW5fY2F0ZWdvcmllcyBXSEVSRSBjYXRlZ29yeV9pZCA9ID8iOw0KICAgICAgICAgICAgIA0KICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRjYXRpZCkpOw0KICAgIA0KICAgIHdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkNCiAgICB7DQogICAgICAkbG9uZ25hbWUgPSAkcm93WydoaWVyYXJjaHknXSAuICclJzsNCiAgICB9DQoNCiAgICAkcXVlcnkgPSAiU0VMRUNUIGNhdGVnb3J5X2lkLCBuYW1lLCBoaWVyYXJjaHksIGxvbmdfbmFtZSBGUk9NICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfam1kb3dubWFuX2NhdGVnb3JpZXMgV0hFUkUgaGllcmFyY2h5IG5vdCBsaWtlID8gT1JERVIgYnkgaGllcmFyY2h5X3ByaW9yaXR5LGhpZXJhcmNoeSI7DQogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxvbmduYW1lKSk7DQogICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQ0KICAgICAgJGl0ZW1zWyRyb3dbJ2xvbmdfbmFtZSddXSA9ICRyb3dbJ2NhdGVnb3J5X2lkJ107DQoNCiAgICByZXR1cm4gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAncGFyZW50JywgJGl0ZW1zLCAtMSwgJHNlbGVjdGVkdmFsdWUpOw0KICB9DQoNCiAgZnVuY3Rpb24gR2V0QWNjZXNzVHlwZUNvbWJvKCRrZXkgPSBmYWxzZSwgJG5hbWUyaWQgPSBmYWxzZSkNCiAgew0KICAgICR0eXBlcyA9IGFycmF5KA0KICAgICAgICAgICAgICAgICAgICAnMCcgPT4gJHRoaXMtPkxhbmcoJ2FjY2Vzc3R5cGVfZnJlZScpLA0KICAgICAgICAgICAgICAgICAgICAnMScgPT4gJHRoaXMtPkxhbmcoJ2FjY2Vzc3R5cGVfZmV1b25seScpLA0KICAgICAgICAgICAgICAgICAgICAnMicgPT4gJHRoaXMtPkxhbmcoJ2FjY2Vzc3R5cGVfZW1haWxvbmx5JyksDQogICAgICAgICAgICAgICAgICAgICczJyA9PiAkdGhpcy0+TGFuZygnYWNjZXNzdHlwZV9taXhlZCcpDQogICAgICAgICAgICAgICAgICApOw0KICAgIA0KICAgIGlmKCRrZXkpDQogICAgew0KICAgICAgcmV0dXJuIChpc3NldCgkdHlwZXNbJGtleV0pID8gJHR5cGVzWyRrZXldIDogZmFsc2UpOw0KICAgIH0NCg0KICAgIHJldHVybiAoICRuYW1lMmlkID8gJHR5cGVzIDogYXJyYXlfZmxpcCgkdHlwZXMpICk7DQogIH0NCg0KICBmdW5jdGlvbiBGRVVpbnN0YWxsZWQoKQ0KICB7DQogICAgcmV0dXJuIGlzX29iamVjdCggY21zbXMoKS0+R2V0TW9kdWxlSW5zdGFuY2UoJ0Zyb250RW5kVXNlcnMnKSApOw0KICB9DQoNCiAgZnVuY3Rpb24gTWFpbGVySW5zdGFsbGVkKCkNCiAgew0KICAgIHJldHVybiBpc19vYmplY3QoIGNtc21zKCktPkdldE1vZHVsZUluc3RhbmNlKCdDTVNNYWlsZXInKSApOw0KICB9DQoNCiAgLy8gZ2V0IGFuIGFycmF5IG9mIHRoZSB0ZW1wbGF0ZXMgb2YgdGhlIGNob3NlbiB0eXBlIChvciBhbGwpLCBmb3IgdXNlDQogIC8vIGluIGRyb3Bkb3duIGxpc3RzDQogIGZ1bmN0aW9uIEdldFRlbXBsYXRlc0NvbWJvKCR0eXBlPWZhbHNlLCAkd2l0aGRlZmF1bHQ9dHJ1ZSwgJG5hbWUyaWQ9ZmFsc2UpDQogIHsNCiAgICAkcmVzdWx0ID0gYXJyYXkoKTsNCiAgICBpZigkdHlwZSAmJiBzdWJzdHIoJHR5cGUsLTEpICE9ICdfJykJJHR5cGUgLj0gJ18nOw0KICAgIGlmKCR3aXRoZGVmYXVsdCkJJHJlc3VsdFsnJ10gPSAkdGhpcy0+TGFuZygnZGVmYXVsdHRlbXBsYXRlJyk7DQogICAgJHRlbXBsYXRlbGlzdCA9ICR0aGlzLT5MaXN0VGVtcGxhdGVzKCAkdGhpcy0+R2V0TmFtZSgpICk7DQogICAgDQogICAgZm9yZWFjaCgkdGVtcGxhdGVsaXN0IGFzICR0ZW1wbGF0ZSkNCiAgICB7DQogICAgICAkbmFtZSA9IHN1YnN0cihzdHJzdHIoJHRlbXBsYXRlLCAnXycpLCAxKTsNCiAgICAgICRwcmVmaXggPSBzdHJfcmVwbGFjZSgkbmFtZSwiIiwkdGVtcGxhdGUpOw0KICAgICAgaWYoICEkdHlwZSB8fCBzdHJ0b2xvd2VyKCRwcmVmaXgpID09IHN0cnRvbG93ZXIoJHR5cGUpICkJJHJlc3VsdFskdGVtcGxhdGVdID0gJG5hbWU7DQogICAgfQ0KICAgIHJldHVybiAoICRuYW1lMmlkID8gJHJlc3VsdCA6IGFycmF5X2ZsaXAoJHJlc3VsdCkgKTsNCiAgfQ0KDQogIGZ1bmN0aW9uIEdldEdyb3Vwc0NvbWJvKCkNCiAgew0KICAgIHJldHVybiBqbWRtX2ZldV9vcHM6OkdldEFsbEdyb3VwcygpOw0KICB9DQoNCiAgZnVuY3Rpb24gR2V0RmlsZUdyb3VwcygkZmlsZV9pZCkNCiAgew0KICAgIHJldHVybiBqbWRtX2ZldV9vcHM6OkdldEZpbGVHcm91cHMoJGZpbGVfaWQpOw0KICB9DQoNCiAgZnVuY3Rpb24gQ2hlY2tGRVVQZXJtKCRmaWxlX2lkKQ0KICB7DQogICAgcmV0dXJuIGptZG1fZmV1X29wczo6Q2hlY2tQZXJtKCRmaWxlX2lkKTsNCiAgfQ0KDQogIGZ1bmN0aW9uIEdldEZFVUdyb3VwTmFtZXMoJGdyb3VwaWRhcnJheSkNCiAgew0KICAgIHJldHVybiBqbWRtX2ZldV9vcHM6OkdldEdyb3VwTmFtZXMoJGdyb3VwaWRhcnJheSk7DQogIH0NCiAgDQogIGZ1bmN0aW9uIENyZWF0ZUFsaWFzKCR0eHQpDQogIHsNCiAgICByZXR1cm4gc3RydG9sb3dlcigkdGhpcy0+T2JzdHJ1Y2F0ZSgkdHh0KSk7DQogIH0NCiAgDQogIC8vIHJldHVybiB0cnVlIGlmIGFsaWFzIGRvZXMgbm90IGV4aXN0IGluIGRhdGFiYXNlDQogIGZ1bmN0aW9uIENoZWNrQWxpYXMoJGRidGFibGUsICRhbGlhcywgJGl0ZW1pZD1mYWxzZSwgJGlkZmllbGQ9ImlkIiwgJGFsaWFzZmllbGQ9ImFsaWFzIikNCiAgew0KICAgIHJldHVybiBqbWRtX29wczo6Q2hlY2tBbGlhcygkZGJ0YWJsZSwgJGFsaWFzLCAkaXRlbWlkLCAkaWRmaWVsZCwgJGFsaWFzZmllbGQpOw0KICB9DQoNCiAgZnVuY3Rpb24gQ2hlY2tEb3duVHlwZSgkZ2l2ZW4sICR0b2NoZWNrKQ0KICB7DQogICAgLy9yZXR1cm4gam1kbV9maWxlX2FjY2Vzczo6ZXF1YWwoKGludCkkZ2l2ZW4sIChpbnQpJHRvY2hlY2spOw0KICAgIA0KICAgICRnaXZlbiA9IChpbnQpJGdpdmVuOw0KICAgICR0b2NoZWFjaz0gKGludCkkdG9jaGVjazsNCiAgICBpZigkdG9jaGVjayA9PT0gJGdpdmVuICkNCiAgICAgIHJldHVybiB0cnVlOw0KDQogICAgJHQgPSAkZ2l2ZW4gJiAkdG9jaGVjazsNCiAgICByZXR1cm4gICR0ID4gMDsNCiAgICANCiAgfQ0KDQogIGZ1bmN0aW9uIGNoZWNrRmlsZUFsbG93KCRmaWxlcGF0aCkNCiAgew0KICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCiAgICAkZmlsZXBhdGggPSByZWFscGF0aCgkZmlsZXBhdGgpOw0KICAgICRmaWxlcGF0aCA9IHN0cl9yZXBsYWNlKCRjb25maWdbJ3Jvb3RfcGF0aCddIC4gRElSRUNUT1JZX1NFUEFSQVRPUiwgJycsICRmaWxlcGF0aCk7DQogICAgJHRlc3QgPSBleHBsb2RlKERJUkVDVE9SWV9TRVBBUkFUT1IsICRmaWxlcGF0aCk7DQogICAgDQogICAgaWYoaXNfZGlyKCR0ZXN0WzBdKSAmJiBqbWRtX2ZpbGVfb3BzOjppc19mb3JiaWRlbl9kaXIoJGZpbGVwYXRoKSkNCiAgICB7DQogICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KICAgIA0KICAgIGlmKGptZG1fZmlsZV9vcHM6OmlzX2ZvcmJpZGVuX2ZpbGUoJGZpbGVwYXRoKSkNCiAgICB7DQogICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KICAgICAgDQogICAgcmV0dXJuIHRydWU7DQogIH0NCg0KfSAvLyBjbGFzcyBlbmQNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdKTSBEb3dubG9hZCBNYW5hZ2VyJzsNCiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ0JlIHN1cmUgdG8gc2V0ICJVc2UgSk0gRG93bmxvYWQgTWFuYWdlciIgcGVybWlzc2lvbnMgdG8gdXNlIHRoaXMgbW9kdWxlIS4gPGJyLz4gUmVtZW1iZXIgdG8gY3JlYXRlIGRvd25sb2Fkcy8gZGlyIGluIHJvb3QgY21zIGRpciBhbmQgZ2l2ZSBpdCAwNzc3IHBlcm1pc3Npb25zJzsNCiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnSk0gRG93bmxvYWQgTWFuYWdlciB1bmluc3RhbGwnOw0KJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdSZWFsbHk/IFlvdVwncmUgc3VyZSB5b3Ugd2FudCB0byB1bmluc3RhbGwgdGhpcyBmaW5lIG1vZHVsZT8nOw0KJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxlIFVuaW5zdGFsbGVkLic7DQokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHZlcnNpb24gJXMgaW5zdGFsbGVkLic7DQokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnTW9kdWxlIHByZWZlcmVuY2VzIHVwZGF0ZWQuJzsNCiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc3MgRGVuaWVkLiBQbGVhc2UgY2hlY2sgeW91ciBwZXJtaXNzaW9ucy4nOw0KJGxhbmdbJ2Rvd25sb2FkX2Vycm9yX21zZyddID0gJ0Vycm9yIG9jY3VyZWQgd2hpbGUgcHJvY2Vzc2luZyB0aGlzIGZpbGUnOw0KJGxhbmdbJ25vbmUnXSA9ICdOb25lJzsNCiRsYW5nWydzdWJtaXRyZXFlbWFpbCddID0gJ1N1Ym1pdCB0byByZWNlaXZlIGxpbmsgdG8gZG93bmxvYWQnOw0KJGxhbmdbJ2Vycm9yJ10gPSAnRXJyb3IhJzsNCiRsYW5nWydiYWNrJ10gPSAnR28gYmFjayc7DQokbGFuZ1snYWN0aW9ucyddID0gJ0FjdGlvbnMnOw0KJGxhbmdbJ3Jvb3RjYXRlZ29yeSddID0gJ1Jvb3QgY2F0ZWdvcnknOw0KJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIHVwZ3JhZGVkIHRvIHZlcnNpb24gJXMuJzsNCiRsYW5nWyd0aXRsZV9tb2RfcHJlZnMnXSA9ICdNb2R1bGUgUHJlZmVyZW5jZXMnOw0KJGxhbmdbJ3RpdGxlX21vZF9hZG1pbiddID0gJ01vZHVsZSBBZG1pbiBQYW5lbCc7DQokbGFuZ1sndGl0bGVfYWRtaW5fcGFuZWwnXSA9ICdKTSBEb3dubG9hZCBNYW5hZ2VyJzsNCiRsYW5nWydub25hbWVnaXZlbiddID0gJ1lvdSBtdXN0IGVudGVyIGEgbmFtZS4nOw0KJGxhbmdbJ211c3Rsb2dpbiddID0gJ1lvdSBtdXN0IGxvZyBpbiB0byBkb3dubG9hZCB0aGlzIGZpbGU6JzsNCiRsYW5nWydtYXlhbHNvbG9naW4nXSA9ICdZb3UgbWF5IGFsc28gbG9nIGluIHRvIGRvd25sb2FkIHRoaXMgZmlsZTonOw0KDQokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdUaGlzIG1vZHVsZSBhbGxvd3MgdG8gTWFuYWdlIERvd25sb2Fkcy4nOw0KJGxhbmdbJ3dlbGNvbWVfdGV4dCddID0gJzxwPldlbGNvbWUgdG8gdGhlIEpNIERvd25sb2FkIE1hbmFnZXIgYWRtaW4gc2VjdGlvbi48L3A+JzsNCg0KJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4NCjxsaT5WZXJzaW9uIDAuMSBhbHBoYSAtIGZpcnN0IGFscGhhPC9saT4NCjxsaT5WZXJzaW9uIDAuMiBiZXRhIC0gaXRlbSByZW9yZGVyIGFkZGVkPC9saT4NCjxsaT5WZXJzaW9uIDAuMyBiZXRhIC0gbWFraW5nIG1vZHVsZSBtb3JlIHVzZXItZnJpZW5kbHk8L2xpPg0KPGxpPlZlcnNpb24gMC40IC0gZml4ZWQgaW5zdGFsbCBidWcgd2hpY2ggdW5hYmxlcyBhc3NvY2lhdGlvbnMsIGFkZGVkIGFzc29jaWF0aW9ucyBpbiBmaWxlIGFkZGluZzwvbGk+DQo8bGk+VmVyc2lvbiAwLjguNCAtIGFkZGVkIGNhdGVnb3J5IHNlbGVjdG9yLCBmaXhlZCBzb21lIGJ1Z3M8L2xpPg0KPGxpPlZlcnNpb24gMS4wLXJjMSAgLSBhZGRlZCBpbnRlZ3JhdGlvbiB3aXRoIGZldSBtb2R1bGUgYW5kIHNlbmRpbmcgZmlsZSBsaW5rIGJ5IGVtYWlsLCBtYWRlIGNhdGVnb3JpZXMgd2Fsa2FibGUsIGRpZmZlcmVudCB0ZW1wbGF0ZXMgZm9yIGRpZmZlcmVudCBhY3Rpb24gdHlwZXMsIGNoYW5nZWQgY2F0ZWdvcnlfc2VsZWN0b3IgcGFyYW1ldGVyIGludG8gc2VsZWN0b3IsIHJlbW92ZWQgY2F0ZWdvcnkgcGFyYW1ldGVyLCBhZGRlZCBjYXRlZ29yeSBsaXN0IGZvciBmaWxlcyBpbiBzZWxlY3RvciwgYWRkZWQgYWxpYXNlcyB0byBmaWxlcyBhbmQgY2F0ZWdvcmllczwvbGk+DQo8bGk+VmVyc2lvbiAxLjEgIC0gYWRkZWQgdGhlIGZpbGVjaGFuZ2UgZnVuY3Rpb25hbGl0eTwvbGk+DQo8bGk+VmVyc2lvbiAxLjIgIC0gYWRkZWQgc2Nhbm5pbmcgZnVuY3Rpb25hbGl0eTwvbGk+DQo8bGk+VmVyc2lvbiAxLjMgIC0gYWRkZWQgZG93bmxvYWQgY291bnRpbmc8L2xpPg0KPC91bD4nOw0KDQokbGFuZ1snaGVscF9wYXJhbV9jYXRlZ29yeWlkJ109J0NhdGVnb3J5IGlkLCBjb3VsZCBiZSBmb3VuZCBpbiBjYXRlZ29yaWVzIHRhYi4gSWYgc2VsZWN0ZWQsIGFsaWFzIGlzIG5vdCB0YWtlbiBpbnRvIGFjY291bnQuJzsNCiRsYW5nWydoZWxwX3BhcmFtX2FsaWFzJ109J0NhdGVnb3J5IG9yIGZpbGUgYWxpYXMuJzsNCiRsYW5nWydoZWxwX3BhcmFtX2RlcHRoJ109J0FsbG93IHRvIHNwZWNpZnkgdGhlIGRlcHRoIG9mIHRyZWUgc2hvd24gYnkgZGVmYXVsdCBhY3Rpb24uIElmIG5vdCBzZXQgZnVsbCB0cmVlIHdpbGwgYmUgc2hvd24uJzsNCiRsYW5nWydoZWxwX3BhcmFtX3RlbXBsYXRlJ109J1RlbXBsYXRlIG5hbWUuIElmIG5vdCBnaXZlbiB0aGUgZGVmYXVsdCB0ZW1wbGF0ZSBmb3IgY3VycmVudCBhY3Rpb24gaXMgYWN0aW9uL2ZpbGUvY2F0ZWdvcnkuJzsNCiRsYW5nWydoZWxwX3BhcmFtX3NlbGVjdG9yJ109J1RoZSBzZWxlY3RvciB3aGljaCBhbGxvd3MgdG8gY2hvb3NlIG1vcmUgdGhhbiBvbmUgY2F0ZWdvcnkuIFRoZSBzZWxlY3RvciBzeW50YXggY2FuIGhhdmU6DQo8dWw+DQo8bGk+IiYiIC0gaW50ZXJzZWN0aW9uPC9saT4NCjxsaT4ifCIgLSBzdW08L2xpPg0KPGxpPmNhdGVnb3J5IGlkICh5b3UgY2FuIHNlZSBpdCBpbiBjYXRlZ29yaWVzIHRhYik8L2xpPg0KPGxpPmFsbCBvdGhlciBjaGFyYWN0ZXJzIHdpbGwgYmUgY2xlYW5lZCBiZWZvcmUgcGFyc2luZzwvbGk+DQo8L3VsPg0KRm9yIGV4YW1wbGUgc2VsZWN0b3I9IjMmKDF8MikiIHdpbGwgY2hvb3NlIGFsbCBlbGVtZW50cyBmcm9tIGNhdGVnb3J5IHdpdGggaWQ9MyB3aGljaCBhcmUgYWxzbyBpbiBzdW0gb2YgY2F0ZWdvcnkgMSBhbmQgMi4gPGJyLz4NCklmIHNlbGVjdG9yIGlzIHNwZWNpZmllZCBjYXRlZ29yeSBwYXJhbWV0ZXIgd2lsbCA8Yj5ub3Q8L2I+IGJlIHBhcnNlZC4NCic7DQoNCiRsYW5nWyd3cm9uZ2FsaWFzJ10gPSAnV3JvbmcgYWxpYXMgZ2l2ZW4uJzsNCiRsYW5nWydkb3dubG9hZCddID0gJ0Rvd25sb2FkJzsNCiRsYW5nWydkb3dubG9hZGluZyddICA9ICdEb3dubG9hZGluZyAlcy4uLic7DQokbGFuZ1snYmFja3RvbGlzdCddICA9ICdCYWNrIHRvIHRoZSBmaWxlIGxpc3QuJzsNCiRsYW5nWydiYWNrJ10gID0gJ0dvIGJhY2suJzsNCiRsYW5nWydkb3dubG9hZGluZ19pbmZvJ10gPSAnWW91ciBkb3dubG9hZCBzaG91bGQgYmVnaW4gc2hvcnRseS4gSWYgeW91IGVuY291bnRlciBwcm9ibGVtcywgcGxlYXNlIGNvbnRhY3QgdGhlIFdlYm1hc3Rlci4nOw0KJGxhbmdbJ25vZmlsZSddID0gJ05vIGZpbGUgZ2l2ZW4nOw0KJGxhbmdbJ3dyb25nZmlsZSddID0gJ1dyb25nIGZpbGUgaWQnOw0KJGxhbmdbJ25vYWNjZXNzJ10gPSAnWW91IGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGlzIGZpbGUuJzsNCg0KLy8qKioqKioqKioqKiBQcmVmZXJlbmNlcyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQokbGFuZ1snZG93bmxvYWRfZGlyJ10gID0gJ0Rvd25sb2FkIGRpcmVjdG9yeSc7DQokbGFuZ1snd3lzaXd5Z19vbiddICA9ICdXWVNJV1lHIG9uIGluIGFkbWluIHRhYnM/JzsNCiRsYW5nWydkb3dubG9hZF9zY2FuJ10gID0gJ1NjYW5uZWQgZGlyZWN0b3JpZXMgKHNlcGVhdGVkIHdpdGggc2VtaWNvbG9uIGV4LiAiZGlyMS87ZGlyMi87ZGlyMy8iICknOw0KJGxhbmdbJ2Rvd25sb2FkX3NjYW5fcmVjdXJzJ10gID0gJ1NjYW4gZGlyZWN0b3JpZXMgcmVjdXJzaXZlPyc7DQokbGFuZ1snZG93bmxvYWRfdGVtcGxhdGUnXSAgPSAnRG93bmxvYWQgdGVtcGxhdGUnOw0KJGxhbmdbJ2Rvd25sb2FkX3RlbXBsYXRlX2luZm8nXSAgPSAnPHRhYmxlIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij4NCjx0cj48dGQ+PGI+VmFyaWFibGU6PC9iPjwvdGQ+PHRkPjxiPldoYXQgaXMgaXQ/PC9iPjwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9InZlcnRpY2FsLWFsaWduOnRvcDsiPjxiPiYjMTIzOyRkb3dubG9hZGluZyYjMTI1OzwvYj48L3RkPjx0ZD5UZXh0OiAnLiRsYW5nWydkb3dubG9hZGluZyddLic8L3RkPjwvdHI+DQo8dHI+PHRkIHN0eWxlPSJ2ZXJ0aWNhbC1hbGlnbjp0b3A7Ij48Yj4mIzEyMzskZG93bmxvYWRpbmdfaW5mbyYjMTI1OzwvYj48L3RkPjx0ZD5UZXh0OiAnLiRsYW5nWydkb3dubG9hZGluZ19pbmZvJ10uJzwvdGQ+PC90cj4NCjx0cj48dGQgc3R5bGU9InZlcnRpY2FsLWFsaWduOnRvcDsiPjxiPiYjMTIzOyRkb3dubG9hZF9uYW1lJiMxMjU7PC9iPjwvdGQ+PHRkPk5hbWUgb2YgY3VycmVudGx5IGRvd25sb2FkaW5nIGZpbGUuPC90ZD48L3RyPg0KPHRyPjx0ZCBzdHlsZT0idmVydGljYWwtYWxpZ246dG9wOyI+PGI+JiMxMjM7JGJhY2t0b2xpc3RsaW5rJiMxMjU7PC9iPjwvdGQ+PHRkPkJhY2sgdG8gdGhlIGZpbGUgbGlzdCBsaW5rLjwvdGQ+PC90cj4NCjwvdGFibGU+DQonOw0KJGxhbmdbJ2Rvd25sb2FkX2Rpcl9ub3Rfd3JpdGFibGUnXSA9ICdEb3dubG9hZCBkaXJlY3RvcnkgKCVzKSBpcyBub3Qgd3JpdGFibGUsIHRyeSBjaG1vZCA3NzcuJzsNCiRsYW5nWydkaXJfZG9udF9leGlzdHMnXSA9ICdEb3dubG9hZCBkaXJlY3RvcnkgKCVzKSBkb2VzIG5vdCBleGlzdCwgY3JlYXRlIGl0IGZpcnN0Lic7DQokbGFuZ1snc2VhcmNoX2V4cGlyZSddID0gJ0V4cGlyZWQgYW5kIG5vdCBzdGFydGVkIGRvd25sb2FkcyBjYW4gYXBwZWFyIGluIHNlYXJjaCByZXN1bHRzJzsNCiRsYW5nWyd0aHVtYl9kaXInXSA9ICdEaXJlY3RvcnkgdG8gc2Nhbi9zYXZlIHRodW1ibmFpbHMuIERlZmF1bHQ6ICJpbWFnZXMvSk1Eb3duTWFuVGh1bWJzLyIuIERpcmVjdG9yeSBtdXN0IGV4aXN0JzsNCiRsYW5nWyd0aHVtYl9zaXplJ10gPSAnTWF4IHRodW1ibmFpbCBzaXplJzsNCiRsYW5nWyd0aHVtYl9hdXRvJ10gPSAnRG8gdHJ5IGF1dG9tYXRpY2x5IHRvIG1ha2UgdGh1bWJuYWlscz8nOw0KDQokbGFuZ1snbGVnZW5kX2ltcG9ydF9mcm9tX2RtJ10gPSAnSW1wb3J0IERhdGEgRnJvbSBEb3dubG9hZCBNYW5hZ2VyIE1vZHVsZSBUYWJsZXMnOw0KJGxhbmdbJ25vdGVfaW1wb3J0X2Zyb21fZG0nXSA9ICdJbXBvcnRzIHJlY29yZHMgZnJvbSBEb3dubG9hZCBNYW5hZ2VyOiBpdCBtdXN0ICBiZSBpbnN0YWxsZWQgYW5kIGFsbCB0YWJsZXMgc3RpbGwgcG9wdWxhdGVkJzsNCiRsYW5nWydvbGRfZG1fbm90X2luc3RhbGxlZCddID0gJ1RoZSBEb3dubG9hZCBNYW5hZ2VyIG1vZHVsZSBpcyBub3QgaW5zdGFsbGVkJzsNCiRsYW5nWydvbGRfZG1faW5zdGFsbGVkJ10gPSAnVGhlIERvd25sb2FkIE1hbmFnZXIgbW9kdWxlIGlzIGluc3RhbGxlZCc7DQokbGFuZ1snb2xkX2RtX2FjdGl2ZSddID0gJ2FuZCBhY3RpdmUgeW91IGNhbiBjb3B5IGRhdGEgZnJvbSBpdCc7DQokbGFuZ1snb2xkX2RtX2luYWN0aXZlJ10gPSAnYnV0IGluYWN0aXZlLCBob3dldmVyIHlvdSBjYW4gc3RpbGwgY29weSBkYXRhIGZyb20gaXQnOw0KJGxhbmdbJ2ltcG9ydF9mcm9tX2RtJ10gPSAnQ29weSc7DQokbGFuZ1snY29uZmlybV9pbXBvcnRfZnJvbV9kbSddID0gJ0FyZSB5b3Ugc3VyZT8gVGhpcyBhY3Rpb24gd2lsbCBkZWxldGUgYW55IGRhdGEgYWxyZWFkeSBleGlzdGluZyBpbiBKTSBEb3dubG9hZCBNYW5hZ2VyIHRhYmxlcyEnOw0KJGxhbmdbJ3dhcm5pbmdfaW1wb3J0X2Zyb21fZG0nXSA9ICdXYXJuaW5nOiBpdCB3aWxsIGRlbGV0ZSBhbnkgZGF0YSBhbHJlYWR5IGV4aXN0aW5nIGluIEpNIERvd25sb2FkIE1hbmFnZXIgdGFibGVzISc7DQokbGFuZ1snaW1wb3J0X3N1Y2Nlc3MnXSA9ICdBbGwgZGF0YSB3YXMgaW1wb3J0ZWQgc3VjY2Vzc2Z1bHknOw0KDQovLyoqKioqKioqKioqIEZpbGUgbGFiZWxzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiRsYW5nWyduYW1lbGFiZWwnXT0nTmFtZSc7DQokbGFuZ1snY291bnRlcmxhYmVsJ109J0Rvd25sb2Fkcyc7DQokbGFuZ1snY291bnRlcm5iciddPSdEb3dubG9hZGVkICVzIHRpbWUocykuJzsNCiRsYW5nWydhbGlhc2xhYmVsJ109J0FsaWFzJzsNCiRsYW5nWydzZWxlY3RvciddPSdDYXRlZ29yeSBzZWxlY3Rvcic7DQokbGFuZ1snZmlsdGVyJ109J0ZpbHRlcic7DQokbGFuZ1snbm9maWx0ZXInXT0nTm8gZmlsdGVyJzsNCiRsYW5nWydub3NlbGVjdG9yJ109J05vIHNlbGVjdG9yJzsNCiRsYW5nWydjdXJyZW50J109J0N1cnJlbnQnOw0KJGxhbmdbJ3ZlcmJvc2UnXT0ndmVyYm9zZSc7DQokbGFuZ1snZmlsZWxhYmVsJ109J0ZpbGUnOw0KJGxhbmdbJ2ZpbGVkZWxldGVkJ109J0ZpbGUgd2FzIGRlbGV0ZWQuJzsNCiRsYW5nWyd1cGxvYWRmaWxlJ109J1VwbG9hZCBuZXcgZmlsZSc7DQokbGFuZ1snYWxyZWFkeXVwbG9hZGVkJ109J1VzZSBhbHJlYWR5IHVwbG9hZGVkIGZpbGUnOw0KJGxhbmdbJ2V4dGVybmFsZmlsZSddPSdVc2UgZXh0ZXJuYWwgZmlsZSBhY2Nlc3NpYmxlIHRocm91Z2ggaHR0cC4gRmlsZSB3aWxsIG5vdCBiZSBkb3dubG9hZGVkIHRvIHNlcnZlcic7DQokbGFuZ1snZmlsZWRvZXNudGV4aXN0cyddPSdGaWxlICVzIGRvZXNuYHQgZXhpc3Qgb24gc2VydmVyLic7DQokbGFuZ1snY3VybGZhaWxlZCddPSdDdXJsIHJlcXVlc3QgZmFpbGVkLic7DQokbGFuZ1snY3VybGRvZXNudGV4aXN0cyddPSdDdXJsIHBocCBleHRlbnNpb24gbmVlZGVkIGZvciBleHRlcm5hbCBsaW5rcyBub3QgcHJlc2VudC4nOw0KJGxhbmdbJ3NlcnZlcl9uYW1lbGFiZWwnXT0nT3JnaW5hbCBwYXRoJzsNCiRsYW5nWydleHRsYWJlbCddPSdFeHRlbnNpb24nOw0KJGxhbmdbJ3NpemVsYWJlbCddPSdTaXplJzsNCiRsYW5nWydoYXNobGFiZWwnXT0nTWQ1IGhhc2gnOw0KJGxhbmdbJ2Rlc2NyaXB0aW9ubGFiZWwnXT0nRGVzY3JpcHRpb24nOw0KJGxhbmdbJ2NyZWF0ZWRsYWJlbCddPSdDcmVhdGlvbiB0aW1lJzsNCiRsYW5nWydleHBpcmVzbGFiZWwnXT0nRXhwaXJlcyc7DQokbGFuZ1snbWFrZV90aHVtYmxhYmVsJ109J01ha2UgdGh1bWJuYWlsIGZyb20gaW1hZ2UgKGlmIHBvc3NpYmxlKT8nOw0KJGxhbmdbJ3RodW1ibGFiZWwnXT0nVGh1bWJuYWlsJzsNCiRsYW5nWydzdGFydHNsYWJlbCddPSdTdGFydHMnOw0KJGxhbmdbJ3Zpc2libGVsYWJlbCddPSdWaXNpYmxlJzsNCiRsYW5nWyd1c2VleHBpcmF0aW9uJ109J1VzZSBleHBpcmF0aW9uIGRhdGUnOw0KJGxhbmdbJ3VzZXN0YXJ0J109J1VzZSBzdGFydCBkYXRlJzsNCiRsYW5nWydhZGRmaWxlJ109J05ldyBmaWxlJzsNCiRsYW5nWydzY2FuZm9ybmV3ZmlsZXMnXT0nU2NhbiBmb3IgbmV3IGZpbGVzJzsNCiRsYW5nWydzY2FucmVzdWx0J109J1NjYW5uZWQgZGlyZWN0b3JpZXM6ICVzIDxiciAvPiAlcyBuZXcgZmlsZXMgbGlzdGVkIGJlbG93LiBDaG9vc2UgZmlsZSB0byBhZGQuJzsNCiRsYW5nWydzY2Fubm9uZXcnXT0nTm8gbmV3IGZpbGVzIGFkZGVkLic7DQokbGFuZ1snbm9maWxlZ2l2ZW4nXT0nVGhlcmUgd2FzIG5vIGZpbGUnOw0KJGxhbmdbJ25vdGhpbmd1cGxvYWRlZCddPSdObyBmaWxlIG9yIGVtcHR5IGZpbGUgd2FzIHVwbG9hZGVkLic7DQokbGFuZ1sndW5hYmxldG9tb3ZlJ109J1VuYWJsZSB0byBtb3ZlIG9yIGNvcHkgdXBsb2FkZWQgZmlsZS4nOw0KJGxhbmdbJ3R5cGVsYWJlbCddPSdUeXBlJzsNCiRsYW5nWydmaWxlc3RhYmhlYWRlciddPSdGaWxlcyc7DQokbGFuZ1snZmlsZWFkZGVkJ109J0ZpbGUgc3VjY2VzZnVsbHkgYWRkZWQnOw0KJGxhbmdbJ2ZpbGVtb2RpZmllZCddPSdGaWxlIHN1Y2Nlc2Z1bGx5IG1vZGlmaWVkJzsNCiRsYW5nWyd0ZW1wbGF0ZWZvcmZvcm0nXSA9ICdGb3JtIHRlbXBsYXRlJzsNCiRsYW5nWyd0ZW1wbGF0ZWZvcmRldGFpbCddID0gJ0RldGFpbCB0ZW1wbGF0ZSc7DQokbGFuZ1sndGVtcGxhdGVmb3JlbWFpbCddID0gJ0VtYWlsIHRlbXBsYXRlJzsNCiRsYW5nWydkZWZhdWx0dGVtcGxhdGUnXSA9ICdEZWZhdWx0IGNhdGVnb3J5IHRlbXBsYXRlJzsNCiRsYW5nWydmZXVncm91cHNsYWJlbCddID0gJ0ZFVSBncm91cHMgd2hvIGNhbiBhY2Nlc3MgdGhlIGZpbGUsIGlmIG5vIGdyb3VwIHNlbGVjdGVkIGFsbCBGRVUgdXNlcnMgY2FuIGFjY2Vzcyc7DQokbGFuZ1snYWNjZXNzdHlwZSddID0gJ0FjY2VzcyB0eXBlJzsNCiRsYW5nWydhY2Nlc3N0eXBlX2ZyZWUnXSA9ICdGcmVlIGFjY2Vzcyc7DQokbGFuZ1snYWNjZXNzdHlwZV9mZXVvbmx5J10gPSAnRnJvbnRlbmQgVXNlcnMgb25seSc7DQokbGFuZ1snYWNjZXNzdHlwZV9lbWFpbG9ubHknXSA9ICdFbWFpbCBvbmx5JzsNCiRsYW5nWydhY2Nlc3N0eXBlX21peGVkJ10gPSAnRkVVIG9yIEVtYWlsJzsNCiRsYW5nWydkZXRhaWxzJ109J0RldGFpbHMnOw0KJGxhbmdbJ2ZpbGVjaGFuZ2UnXT0nQ2hhbmdlIHRoaXMgZmlsZS4nOw0KJGxhbmdbJ2NoYW5nZWZpbGVpbmZvJ109J0Nob29zZSBuZXcgZmlsZSB0byBjaGFuZ2UgdGhlIGN1cnJlbnQgIiVzIiAoYWxpYXM6JXMpIGZpbGUuIEFsbCBhc3NvY2lhdGlvbnMsIGxpbmtzLCBpbmZvIGFuZCBhbGlhcyB3aWxsIHN0YXkgdGhlIHNhbWUuJzsNCiRsYW5nWydmaWxlY2hhbmdlZCddPSdGaWxlIHdhcyBzdWNjZXNzZnVsbHkgcmVwbGFjZWQnOw0KJGxhbmdbJ2NoYW5nZW5hbWVsYWJlbCddPSdDaGFuZ2UgdGhlIGZpbGUgbmFtZSB0byB0aGUgb25lIGZyb20gbmV3IGZpbGU/JzsNCiRsYW5nWydhbGx0aW1lJ109J0FsbCB0aW1lJzsNCiRsYW5nWydhdmFpbGFibGl0eSddPSdBdmFpbGFibGl0eSc7DQovLyoqKioqKioqKioqIEVycm9ycyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQokbGFuZ1snbm9hbGlhcyddPSJObyBzdWNoIGFsaWFzIG9yIGRvd25sb2FkIG5vdCBhdmFpbGFibGUiOw0KJGxhbmdbJ25vaGFzaCddPSJObyBzdWNoIGhhc2ggb3IgZG93bmxvYWQgbm90IGF2YWlsYWJsZSI7DQokbGFuZ1snd3JvbmdwYXJhbXMnXT0iV3JvbmcgcGFyYW1ldGVycyI7DQokbGFuZ1snZmlsZW5vdGZvdW5kJ109IkZpbGUgJXMgbm90IGZvdW5kLiI7DQokbGFuZ1snd3JvbmdkYXRhJ109Ildyb25nIGRhdGEgaW4gZGF0YWJhc2Ugcm93LiI7IA0KJGxhbmdbJ25vZmV1J109IkZyb250RW5kVXNlcnMgbW9kdWxlIG5vdCBpbnN0YWxlZC4iOyANCg0KLy8qKioqKioqKioqKiBDYXRlZ29yeSBsYWJlbHMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KDQokbGFuZ1snYWRkY2F0ZWdvcnknXSA9ICdOZXcgQ2F0ZWdvcnknOw0KJGxhbmdbJ2NhdGVnb3J5J10gPSAnQ2F0ZWdvcnknIDsNCiRsYW5nWydwYXJlbnRfaWRsYWJlbCddID0gJ1BhcmVudCBDYXRlZ29yeSc7DQokbGFuZ1snY2F0ZWdvcmllc3RhYmhlYWRlciddPSdDYXRlZ29yaWVzJzsNCiRsYW5nWydyZW9yZGVyX3ByaW9yaXR5J109J1ByaW9yaXR5ICgtOTkmbmJzcDt0byZuYnNwOzk5KSwgIGxvd2VyLT5iZXR0ZXIgJzsNCiRsYW5nWydub2Rvd25sb2FkcyddID0gJ05vIGRvd25sb2FkcyBpbiB0aGlzIGNhdGVnb3J5JzsNCiRsYW5nWydmaWxlbmInXSA9ICclcyZuYnNwO2ZpbGUocyknOw0KJGxhbmdbJ2NhdGVnb3J5YWRkZWQnXSA9ICdUaGUgY2F0ZWdvcnkgd2FzIHN1Y2Nlc3NmdWxseSBhZGRlZC4nOw0KJGxhbmdbJ2NhdGVnb3J5dXBkYXRlZCddID0gJ1RoZSBjYXRlZ29yeSB3YXMgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQuJzsNCiRsYW5nWydjYXRlZ29yeWRlbGV0ZWQnXSA9ICdUaGUgY2F0ZWdvcnkgd2FzIHN1Y2Nlc3NmdWxseSBkZWxldGVkLic7DQoNCiRsYW5nWydjYXRlZ29yeWNvbnRlbnR0eXBlZnJpZW5kbHknXSA9ICdEb3dubG9hZCBDYXRlZ29yeScgOw0KJGxhbmdbJ292ZXJhbGx0YWJoZWFkZXInXT0nT3ZlcmFsbCc7DQokbGFuZ1snYXNzb2NhdGlvbnN0YWJoZWFkZXInXT0nQ2F0ZWdvcmllcyc7DQokbGFuZ1snYWRkYXNzb2MnXT0nQWRkIHRvIGNhdGVnb3J5JzsNCiRsYW5nWyd3cm9uZ2NhdGVnb3J5c2VsJ109J0NhdGVnb3J5IHNlbGVjdG9yIHBhcnNlIGVycm9yLiA8YnIgLz4gU2VsZWN0b3IgYWZ0ZXIgY2xlYW5pbmc6ICVzJzsNCiRsYW5nWydub2NhdGVnb3J5c2VsJ109J0NhdGVnb3J5IHNlbGVjdG9yIG5vdCBzZXQuJzsNCiRsYW5nWyd3cm9uZ2NhdGVnb3J5J109J1NlbGVjdGVkIGNhdGVnb3J5IGRvZXMgbm90IGV4aXN0cy4nOw0KDQoNCi8vKioqKioqKioqKiogRU1BSUwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KDQokbGFuZ1snc2VuZGVtYWlsJ10gPSAnRW1haWwgZG93bmxvYWQgbGluayc7DQokbGFuZ1sncHJvbXB0X2ZpcnN0bmFtZSddID0gJ0ZpcnN0IG5hbWUnOw0KJGxhbmdbJ3Byb21wdF9sYXN0bmFtZSddID0gJ0xhc3QgbmFtZSc7DQokbGFuZ1sncHJvbXB0X2VtYWlsJ10gPSAnRW1haWwnOw0KJGxhbmdbJ3Byb21wdF9tYWlsaW5nbGlzdCddID0gJ0kgd291bGQgbGlrZSB0byBoZWFyIGFib3V0IG5ldyBmaWxlcyBhbmQgaW1wb3J0YW50IG5ld3MnOw0KJGxhbmdbJ2VtYWlsc2VudCddID0gJ0FuIGVtYWlsIGNvbnRhaW5pbmcgdGhlIGRvd25sb2FkIGxpbmsgd2FzIHNlbnQgdG8gdGhlIHNwZWNpZmllZCBhZGRyZXNzLic7DQokbGFuZ1snY291bGRub3RzZW5kJ10gPSAnVGhlcmUgd2FzIGFuIGVycm9yIHdpdGggeW91ciByZXF1ZXN0LCBhbmQgdGhlIGVtYWlsIGNvdWxkIG5vdCBiZSBzZW50Lic7DQokbGFuZ1snaW52YWxpZGVtYWlsJ10gPSAnVGhlIGVtYWlsIHlvdSBoYXZlIGVudGVyZWQgaXMgaW52YWxpZC4gV2l0aG91dCBhIHZhbGlkIGVtYWlsLCB3ZSBjYW5ub3Qgc2VuZCB5b3UgYSBkb3dubG9hZCBsaW5rLCBhbmQgeW91IGNhbm5vdCBkb3dubG9hZCB0aGUgZmlsZS4nOw0KJGxhbmdbJ3BsZWFzZV9uYW1lJ10gPSAnUGxlYXNlIGVudGVyIHlvdXIgbmFtZS4nOw0KJGxhbmdbJ3BsZWFzZV9lbWFpbCddID0gJ1BsZWFzZSBlbnRlciB5b3VyIGVtYWlsIGFkZHJlc3MuIFRoZSBkb3dubG9hZCBsaW5rIHdpbGwgYmUgc2VudCB0byB0aGlzIGFkZHJlc3MuJzsNCg0KDQovLyoqKioqKioqKioqIFRlbXBsYXRlIGxhYmVscyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQoNCiRsYW5nWydhZGR0ZW1wbGF0ZSddID0gJ05ldyBUZW1wbGF0ZSc7DQokbGFuZ1snbGlzdHRlbXBsYXRlcyddID0gJ1RlbXBsYXRlcyB0byBkaXNwbGF5IGxpc3RzIG9mIGNhdGVnb3JpZXMgb3IgZmlsZXMnOw0KJGxhbmdbJ2FkZGxpc3R0ZW1wbGF0ZSddID0gJ05ldyBMaXN0IFRlbXBsYXRlJzsNCiRsYW5nWydkZXRhaWx0ZW1wbGF0ZXMnXSA9ICdUZW1wbGF0ZXMgdG8gZGlzcGxheSB0aGUgZGV0YWlscyBvZiBhIGZpbGUnOw0KJGxhbmdbJ2FkZGRldGFpbHRlbXBsYXRlJ10gPSAnTmV3IERldGFpbCBUZW1wbGF0ZSc7DQokbGFuZ1snZm9ybXRlbXBsYXRlcyddID0gJ1RlbXBsYXRlcyBmb3IgdGhlIGZvcm0gdG8gcmVxdWVzdCBhIGRvd25sb2FkIGxpbmsgYnkgbWFpbCc7DQokbGFuZ1snYWRkZm9ybXRlbXBsYXRlJ10gPSAnTmV3IEZvcm0gVGVtcGxhdGUnOw0KJGxhbmdbJ2VtYWlsdGVtcGxhdGVzJ10gPSAnVGVtcGxhdGVzIGZvciBlbWFpbHMgc2VudCB3aXRoIGRvd25sb2FkIGxpbmsnOw0KJGxhbmdbJ2FkZGVtYWlsdGVtcGxhdGUnXSA9ICdOZXcgRW1haWwgQm9keSBUZW1wbGF0ZSc7DQokbGFuZ1snZGVmYXVsdHRlbXBsYXRlJ10gPSAnVXNlIHRoZSBkZWZhdWx0IHRlbXBsYXRlIChzZWUgdGVtcGxhdGVzIHRhYiknOw0KDQokbGFuZ1sncHJvbXB0X2RlbGV0ZXRlbXBsYXRlJ10gPSAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGUgdGVtcGxhdGUgJXM/JzsNCiRsYW5nWyd0aXRsZV90ZW1wbGF0ZSddID0gJ1RlbXBsYXRlJyA7DQokbGFuZ1snY29udGVudGxhYmVsJ10gPSAnQ29udGVudCc7DQokbGFuZ1sndGVtcGxhdGVfbmFtZWxhYmVsJ10gPSAnTmFtZSc7DQoNCiRsYW5nWyd0ZW1wbGF0ZWFkZGVkJ10gPSAnVGhlIHRlbXBsYXRlIHdhcyBzdWNjZXNzZnVsbHkgYWRkZWQuJzsNCiRsYW5nWyd0ZW1wbGF0ZXVwZGF0ZWQnXSA9ICdUaGUgdGVtcGxhdGUgd2FzIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLic7DQokbGFuZ1sndGVtcGxhdGVkZWxldGVkJ10gPSAnVGhlIHRlbXBsYXRlIHdhcyBzdWNjZXNzZnVsbHkgZGVsZXRlZC4nOw0KDQokbGFuZ1snd3Jvbmd0ZW1wbGF0ZSddID0gJ1dyb25nIHRlbXBsYXRlIHNwZWNpZmllZC4nOw0KJGxhbmdbJ2FscmVhZHlleGlzdCddID0gJ1RoZXJlIGlzIGFscmVhZHkgYSB0ZW1wbGF0ZSBieSB0aGF0IG5hbWUuJzsNCg0KJGxhbmdbJ2dlbmVyYWxfdGVtcGxhdGVoZWxwJ10gPSAnDQo8dHI+PHRkPjxiPiYjMTIzOyRiYWNrdG9saXN0bGluayYjMTI1OzwvYj48L3RkPjx0ZD5SZXR1cm4gYmFjayBpbiBoaXN0b3J5IGxpbms8L3RkPjwvdHI+DQonOw0KJGxhbmdbJ2ZpbGVpdGVtX3RlbXBsYXRlaGVscCddICA9Jw0KPHRyPjx0ZD48Yj4mIzEyMzskaXRlbS0+bmFtZSYjMTI1OzwvYj48L3RkPjx0ZD5maWxlIG5hbWU8L3RkPjwvdHI+DQo8dHI+PHRkPjxiPiYjMTIzOyRpdGVtLT5kZXNjcmlwdGlvbiYjMTI1OzwvYj48L3RkPjx0ZD5maWxlIGRlc2NyaXB0aW9uPC90ZD48L3RyPg0KPHRyPjx0ZD48Yj4mIzEyMzskaXRlbS0+c2l6ZSYjMTI1OzwvYj48L3RkPjx0ZD5maWxlIHNpemU8L3RkPjwvdHI+DQo8dHI+PHRkPjxiPiYjMTIzOyRpdGVtLT5jb3VudGVyJiMxMjU7PC9iPjwvdGQ+PHRkPnRpbWVzIHRoZSBmaWxlIHdhcyBkb3dubG9hZGVkPC90ZD48L3RyPg0KPHRyPjx0ZD48Yj4mIzEyMzskaXRlbS0+Y291bnRlcmxvY2FsZSYjMTI1OzwvYj48L3RkPjx0ZD50ZXh0OiAnLiRsYW5nWydjb3VudGVybmJyJ10uJzwvdGQ+PC90cj4NCjx0cj48dGQ+PGI+JiMxMjM7JGl0ZW0tPmhhc2gmIzEyNTs8L2I+PC90ZD48dGQ+bWQ1IGhhc2ggc3VtPC90ZD48L3RyPg0KPHRyPjx0ZD48Yj4mIzEyMzskaXRlbS0+ZXh0JiMxMjU7PC9iPjwvdGQ+PHRkPmZpbGUgZXh0ZW5zaW9uIChqcGcscGRmLHRhci5ieixldGMuKTwvdGQ+PC90cj4NCjx0cj48dGQ+PGI+JiMxMjM7JGl0ZW0tPmNyZWF0ZWQmIzEyNTs8L2I+PC90ZD48dGQ+dGltZSwgd2hlbiBmaWxlIHdhcyB1cGxvYWRlZCB0byBzZXJ2ZXI8L3RkPjwvdHI+DQo8dHI+PHRkPjxiPiYjMTIzOyRpdGVtLT5leHBpcmVzJiMxMjU7PC9iPjwvdGQ+PHRkPmV4cGlyYXRpb24gdGltZSwgYWZ0ZXIgdGhpcyAtIGZpbGUgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZTwvdGQ+PC90cj4NCjx0cj48dGQ+PGI+JiMxMjM7JGl0ZW0tPnN0YXJ0cyYjMTI1OzwvYj48L3RkPjx0ZD5zdGFydCB0aW1lLCBhZnRlciB0aGlzIGZpbGUgaXMgYXZhaWxhYmxlPC90ZD48L3RyPg0KPHRyPjx0ZD48Yj4mIzEyMzskaXRlbS0+dGh1bWImIzEyNTs8L2I+PC90ZD48dGQ+dGh1bWJuYWlsIGltYWdlPC90ZD48L3RyPg0KPHRyPjx0ZD48Yj4mIzEyMzskaXRlbS0+dGh1bWJfcGF0aCYjMTI1OzwvYj48L3RkPjx0ZD50aHVtYm5haWwgcGF0aDwvdGQ+PC90cj4NCic7DQoNCiRsYW5nWydkZXRhaWxfdGVtcGxhdGVoZWxwJ10gPSAkbGFuZ1snZmlsZWl0ZW1fdGVtcGxhdGVoZWxwJ10uJw0KPHRyPjx0ZD48Yj4mIzEyMzskaXRlbS0+Y2F0ZWdvcmllcyYjMTI1OzwvYj48L3RkPjx0ZD5jYXRlZ29yaWVzIHRvIHdoaWNoIGZpbGUgYmVsb25nIChhdmFpbGFibGUgaW4gc2VsZWN0b3IgYW5kIGRldGFpbCk8L3RkPjwvdHI+DQo8dHI+PHRkPjxiPiYjMTIzOyRpdGVtLT5kb3dubG9hZCYjMTI1OzwvYj48L3RkPjx0ZD5nZW5lcmF0ZWQgZG93bmxvYWQgbGluazwvdGQ+PC90cj4NCjx0cj48dGQ+PGI+JiMxMjM7JGl0ZW0tPmhyZWYmIzEyNTs8L2I+PC90ZD48dGQ+aHJlZiB0byBmaWxlIGRvd25sb2FkPC90ZD48L3RyPg0KPHRyPjx0ZD48Yj4mIzEyMzskaXRlbS0+YWNjZXNzdHlwZXMmIzEyNTs8L2I+PC90ZD48dGQ+YXJyYXkgb2YgaHVtYW4gcmVhZGFibGUgYWNjZXNzIHR5cGVzIChmcmVlLGZldSxtYWlsKTwvdGQ+PC90cj4NCjx0cj48dGQ+PGI+JiMxMjM7JGl0ZW0tPmRldGFpbCYjMTI1OzwvYj48L3RkPjx0ZD5nZW5lcmF0ZWQgZGV0YWlsIGxpbms8L3RkPjwvdHI+DQonOw0KJGxhbmdbJ2Zvcm1fdGVtcGxhdGVoZWxwJ10gPSAnDQo8dHI+PHRoIGNvbHNwYW49IjIiIHN0eWxlPSJjb2xvcjojNzc3Ij48aT5JbnB1dHM8L2k+OjwvdGg+PC90cj4NCjx0cj48dGQ+PGI+JiMxMjM7JGZpcnN0bmFtZV9pbnB1dCYjMTI1OzwvYj48L3RkPjx0ZD5maXJzdG5hbWU8L3RkPjwvdHI+DQo8dHI+PHRkPjxiPiYjMTIzOyRsYXN0bmFtZV9pbnB1dCYjMTI1OzwvYj48L3RkPjx0ZD5sYXN0bmFtZTwvdGQ+PC90cj4NCjx0cj48dGQ+PGI+JiMxMjM7JGVtYWlsX2lucHV0JiMxMjU7PC9iPjwvdGQ+PHRkPmVtYWlsPC90ZD48L3RyPg0KPHRyPjx0ZD48Yj4mIzEyMzskbWFpbGluZ2xpc3RfaW5wdXQmIzEyNTs8L2I+PC90ZD48dGQ+bWFpbGluZ2xpc3QgY2hlY2tib3g8L3RkPjwvdHI+DQo8dHI+PHRkPjxiPiYjMTIzOyRzdWJtaXQmIzEyNTs8L2I+PC90ZD48dGQ+c3VibWl0PC90ZD48L3RyPg0KPHRyPjx0aCBjb2xzcGFuPSIyIiBzdHlsZT0iY29sb3I6Izc3NyI+PGk+TGFiZWxzPC9pPjo8L3RoPjwvdHI+DQo8dHI+PHRkPjxiPiYjMTIzOyRmaXJzdG5hbWVfbGFiZWwmIzEyNTs8L2I+PC90ZD48dGQ+Zmlyc3RuYW1lPC90ZD48L3RyPg0KPHRyPjx0ZD48Yj4mIzEyMzskbGFzdG5hbWVfbGFiZWwmIzEyNTs8L2I+PC90ZD48dGQ+bGFzdG5hbWU8L3RkPjwvdHI+DQo8dHI+PHRkPjxiPiYjMTIzOyRlbWFpbF9sYWJlbCYjMTI1OzwvYj48L3RkPjx0ZD5lbWFpbDwvdGQ+PC90cj4NCjx0cj48dGQ+PGI+JiMxMjM7JG1haWxpbmdsaXN0X2xhYmVsJiMxMjU7PC9iPjwvdGQ+PHRkPm1haWxpbmdsaXN0IGNoZWNrYm94PC90ZD48L3RyPg0KJzsNCiRsYW5nWydlbWFpbF90ZW1wbGF0ZWhlbHAnXSA9ICcNCjx0cj48dGQ+PGI+JiMxMjM7JGZpcnN0bmFtZSYjMTI1OzwvYj48L3RkPjx0ZD5maXJzdG5hbWUgb2YgdXNlciBkb3dubG9hZGluZyB0aGUgZmlsZTwvdGQ+PC90cj4NCjx0cj48dGQ+PGI+JiMxMjM7JGxhc3RuYW1lJiMxMjU7PC9iPjwvdGQ+PHRkPmxhc3RuYW1lPC90ZD48L3RyPg0KPHRyPjx0ZD48Yj4mIzEyMzskZHVybCYjMTI1OzwvYj48L3RkPjx0ZD5saW5rIGZvciBkb3dubG9hZGluZyB0aGUgZmlsZTwvdGQ+PC90cj4NCjx0cj48dGQ+PGI+JiMxMjM7JGRocmVmJiMxMjU7PC9iPjwvdGQ+PHRkPnVyaSBmb3IgZG93bmxvYWRpbmcgdGhlIGZpbGU8L3RkPjwvdHI+DQonLiRsYW5nWydkZXRhaWxfdGVtcGxhdGVoZWxwJ10uJw0KJzsNCiRsYW5nWydsaXN0X3RlbXBsYXRlaGVscCddID0gJw0KPHRyPjx0aCBjb2xzcGFuPSIyIiBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXI7Ij48YnIvPjxpPiBJbiB0aGUgJiMxMjM7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWl0ZW0mIzEyNTsgbG9vcDo8L2k+PC90aD48L3RyPg0KPHRyPjx0aD5WYXJpYWJsZTo8L3RoPjx0aD5XaGF0IGlzIGl0PzwvdGg+PC90cj4NCjx0cj48dGQ+PGI+JiMxMjM7JGl0ZW0tPml0ZW1sZXZlbCYjMTI1OzwvYj48L3RkPjx0ZD5hY3R1YWwgY2F0ZWdvcnktbGV2ZWw8L3RkPjwvdHI+DQo8dHI+PHRkPjxiPiYjMTIzOyRpdGVtLT5yb3djbGFzcyYjMTI1OzwvYj48L3RkPjx0ZD5yb3cxIG9yIHJvdzIgZGVwZW5kaW5nIG9uIHBhcml0eTwvdGQ+PC90cj4NCg0KPHRyPjx0aCBjb2xzcGFuPSIyIiBzdHlsZT0iY29sb3I6Izc3NyI+PGk+IFdoZW4gPGI+JiMxMjM7JGl0ZW0tPml0ZW10eXBlJiMxMjU7PC9iPiA9IDxpPmhlYWRlcjwvaT46PC90aD48L3RyPg0KPHRyPjx0ZD48Yj4mIzEyMzskaXRlbS0+aXRlbXR5cGUmIzEyNTs8L2I+PC90ZD48dGQ+PGk+aGVhZGVyPC9pPjwvdGQ+PC90cj4NCjx0cj48dGQ+PGI+JiMxMjM7JGl0ZW0tPm5hbWUmIzEyNTs8L2I+PC90ZD48dGQ+Y2F0ZWdvcnkgbmFtZTwvdGQ+PC90cj4NCjx0cj48dGQ+PGI+JiMxMjM7JGl0ZW0tPmRlc2NyaXB0aW9uJiMxMjU7PC9iPjwvdGQ+PHRkPmNhdGVnb3J5IGRlc2NyaXB0aW9uPC90ZD48L3RyPg0KPHRyPjx0ZD48Yj4mIzEyMzskaXRlbS0+c3ViY2F0ZWdvcmllcyYjMTI1OzwvYj48L3RkPjx0ZD5hcnJheSBvZiBzdWJjYXRlZ29yaWVzLCBlYWNoIHN1YmNhdGVnb3J5IGhhcyBlbGVtZW50czogaWQsIG5hbWUsIGxvbmdfbmFtZSwgYWxpYXMsIGZpbGVzbmIsIGl0ZW1zLCBwYXJlbnQ8L3RkPjwvdHI+DQoNCjx0cj48dGggY29sc3Bhbj0iMiIgc3R5bGU9ImNvbG9yOiM3NzciID48aT4gV2hlbiA8Yj4mIzEyMzskaXRlbS0+aXRlbXR5cGUmIzEyNTs8L2I+ID0gPGk+ZmlsZTwvaT46PC90aD48L3RyPg0KPHRyPjx0ZD48Yj4mIzEyMzskaXRlbS0+aXRlbXR5cGUmIzEyNTs8L2I+PC90ZD48dGQ+PGk+ZmlsZTwvaT48L3RkPjwvdHI+DQonLiRsYW5nWydkZXRhaWxfdGVtcGxhdGVoZWxwJ10uJw0KDQo8dHI+PHRoIGNvbHNwYW49IjIiIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlcjsiPjxici8+PGk+SW4gd2hvbGUgdGVtcGxhdGU6PC9pPjwvdGg+PC90cj4NCjx0cj48dGQ+PGI+VmFyaWFibGU6PC9iPjwvdGQ+PHRkPjxiPldoYXQgaXMgaXQ/PC9iPjwvdGQ+PC90cj4NCjx0cj48dGQ+PGI+JiMxMjM7JGl0ZW1jb3VudCYjMTI1OzwvYj48L3RkPjx0ZD5udW1iZXIgb2YgaXRlbXMgaW4gJGl0ZW1zPC90ZD48L3RyPg0KPHRyPjx0ZD48Yj4mIzEyMzskbm9kb3dubG9hZHMmIzEyNTs8L2I+PC90ZD48dGQ+bWVzc2FnZSB0aGVuIHRoZXJlIGFyZSBubyBkb3dubG9hZHMgaW4gc2VsZWN0ZWQgY2F0ZWdvcnk8L3RkPjwvdHI+DQonOw0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lang/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.jmdm_categories_ops.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZpbmFsIGNsYXNzIGptZG1fY2F0ZWdvcmllc19vcHMNCnsNCiAgc3RhdGljIHByaXZhdGUgJF9tb2Q7DQogIHN0YXRpYyBwcml2YXRlICRfZGI7DQogIHN0YXRpYyBwcml2YXRlICRfY29uZmlnOw0KICBzdGF0aWMgcHJpdmF0ZSAkX3Jvd3M7DQogIHN0YXRpYyBwcml2YXRlICRfbWFuZGF0b3J5Ow0KICANCiAgLy8gcHJpdmF0ZSBtZXRob2RzIC8vDQogIA0KICBwcml2YXRlIHN0YXRpYyBmaW5hbCBmdW5jdGlvbiBfaW5pdCgpDQogIHsNCiAgICBpZighaXNfb2JqZWN0KHNlbGY6OiRfam1kbSkpDQogICAgew0KICAgICAgc2VsZjo6JF9tb2QgPSBjbXNtcygpLT5HZXRNb2R1bGVJbnN0YW5jZSgnSk1Eb3duTWFuJyk7DQogICAgICBzZWxmOjokX2NvbmZpZz0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQogICAgICBzZWxmOjokX2RiPSBjbXNtcygpLT5HZXREYigpOw0KLy8gICAgICBzZWxmOjokX3Jvd3MgPSBhcnJheSgNCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjYXRlZ29yeV9pZCcsDQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmFtZScsDQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWxpYXMnLA0KLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcmVudF9pZCcsDQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGllcmFyY2h5JywNCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXB0aCcsDQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9uZ19uYW1lJywNCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcmlvcml0eScsDQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGllcmFyY2h5X3ByaW9yaXR5JywNCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWZhdWx0X3RlbXBsYXRlJywNCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmVhdGVfZGF0ZScsDQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9kaWZpZWRfZGF0ZScNCi8vICAgICAgICAgICAgICAgICAgICAgICAgICApOyAgICAgIA0KLy8gICAgICAgICAgICAgICAgICAgICAgICAgIA0KLy8gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGY6OiRfbWFuZGF0b3J5ID0gYXJyYXkoDQovLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJywNCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FsaWFzJywNCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcmVudF9pZCcNCi8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgfQ0KICB9DQogIA0KICANCiAgLy8gSW50ZXJuYWwgQVBJIC8vDQogIA0KICBwdWJsaWMgc3RhdGljIGZpbmFsIGZ1bmN0aW9uIFNhdmUoJGNhdF9kYXRhX2FycmF5ID0gYXJyYXkoKSApDQogIHsNCiAgICBpZiggIWlzX2FycmF5KCRjYXRfZGF0YV9hcnJheSkgKSByZXR1cm4gTlVMTDsNCiAgICANCiAgICBpZiggIWlzc2V0KCRjYXRfZGF0YV9hcnJheVsnY2F0ZWdvcnlfaWQnXSkgfHwgJGNhdF9kYXRhX2FycmF5WydjYXRlZ29yeV9pZCddIDwgMSkgJGNhdF9kYXRhX2FycmF5WydjYXRlZ29yeV9pZCddID0gLTE7DQogICAgaWYoICFpc3NldCgkY2F0X2RhdGFfYXJyYXlbJ2NhdGVnb3J5X2lkJ10pIHx8ICRjYXRfZGF0YV9hcnJheVsnY2F0ZWdvcnlfaWQnXSA8IDEpICRjYXRfZGF0YV9hcnJheVsnY2F0ZWdvcnlfaWQnXSA9IC0xOw0KICAgIA0KDQogICAgDQogICAgDQogICAgDQogIH0NCiAgDQogIA0KICANCiAgDQogIA0KICAvLyBiYXNlZCBvbiBOZXdzIE1vZHVsZSBmdW5jdGlvbiBOZXdzLT5DcmVhdGVQYXJlbnREcm9wZG93bigpDQogIC8vIHJldHVybiBnZW5lcmF0ZWQgZHJvcGRvd25pbnB1dCB3aXRoIGl0ZW0gc2V0IG9uICRzZWxlY3RlZHZhbHVlDQogIC8vICAgICAgaW5wdXQgd2lsbCBjb250YWluIGFsbCAkY2F0aWQga2lkcw0KICAvLyAgICAgIGlmICRjYXRpZCA9IC0xIGFsbCByb290IG5vZGUga2lkcw0KICBzdGF0aWMgcHVibGljIGZ1bmN0aW9uIENyZWF0ZVBhcmVudERyb3Bkb3duKCRpZCwgJGNhdGlkID0gLTEsICRzZWxlY3RlZHZhbHVlID0gLTEpDQogIHsNCiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOw0KDQogICAgJGxvbmduYW1lID0gJyc7DQoNCiAgICAkaXRlbXNbJygnIC4gam1kbV9vcHM6OkdldEpNRE0oKS0+TGFuZygnbm9uZScpIC4gJyknXSA9ICctMSc7DQoNCiAgICAkcXVlcnkgPSAnU0VMRUNUIGhpZXJhcmNoeSwgbG9uZ19uYW1lIEZST00gJyANCiAgICAgICAgICAgICAuIGNtc19kYl9wcmVmaXgoKSANCiAgICAgICAgICAgICAuICdtb2R1bGVfam1kb3dubWFuX2NhdGVnb3JpZXMgV0hFUkUgY2F0ZWdvcnlfaWQgPSA/JzsNCiAgICAgICAgICAgICANCiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCBhcnJheSgkY2F0aWQpKTsNCiAgICANCiAgICB3aGlsZSAoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpDQogICAgew0KICAgICAgJGxvbmduYW1lID0gJHJvd1snaGllcmFyY2h5J10gLiAnJSc7DQogICAgfQ0KDQogICAgJHF1ZXJ5ID0gJ1NFTEVDVCBjYXRlZ29yeV9pZCwgbmFtZSwgaGllcmFyY2h5LCBsb25nX25hbWUgRlJPTSAnDQogICAgICAgICAgICAgLiBjbXNfZGJfcHJlZml4KCkNCiAgICAgICAgICAgICAuICdtb2R1bGVfam1kb3dubWFuX2NhdGVnb3JpZXMgV0hFUkUgaGllcmFyY2h5IG5vdCBsaWtlID8gT1JERVIgYnkgaGllcmFyY2h5X3ByaW9yaXR5LGhpZXJhcmNoeSc7DQogICAgICAgICAgICAgDQogICAgJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJGxvbmduYW1lKSk7DQogICAgDQogICAgd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQ0KICAgIHsNCiAgICAgICRpdGVtc1skcm93Wydsb25nX25hbWUnXV0gPSAkcm93WydjYXRlZ29yeV9pZCddOw0KICAgIH0NCg0KICAgIHJldHVybiBqbWRtX29wczo6R2V0Sk1ETSgpLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ3BhcmVudCcsICRpdGVtcywgLTEsICRzZWxlY3RlZHZhbHVlKTsNCiAgfQ0KfQ0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.jmdm_feu_ops.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmNsYXNzIGptZG1fZmV1X29wcw0KeyANCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBHZXRGZXUoKQ0KICB7DQogICAgcmV0dXJuIGNtc21zKCktPkdldE1vZHVsZUluc3RhbmNlKCdGcm9udEVuZFVzZXJzJyk7DQogIH0NCiAgDQogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gaW5zdGFsbGVkKCkNCiAgew0KICAgIHJldHVybiBpc19vYmplY3QoIHNlbGY6OkdldEZldSgpICk7DQogIH0NCg0KICAvLyB0aGlzIHRha2VzIGFuIGFycmF5IG9mIGdyb3VwIGlkcywgYW5kIHRyYW5zZm9ybSBpdCBpbnRvIGEgc3RyaW5nIG9mIGdyb3VwIG5hbWVzDQogIC8vIHVzZSB0aGlzIHRvIHByZXBhcmUgdGhlIG9ubHlfZ3JvdXBzIHBhcmFtZXRlciBvZiB0aGUgRkVVIGxvZ2luIGZvcm0NCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBHZXRHcm91cE5hbWVzKCRncm91cGlkYXJyYXkpDQogIHsNCiAgICBpZihjb3VudCgkZ3JvdXBpZGFycmF5KSA9PSAwKSByZXR1cm4gYXJyYXkoKTsNCiAgICBpZiggIXNlbGY6Omluc3RhbGxlZCgpICkgcmV0dXJuIGZhbHNlOw0KICAgIA0KICAgICRGRVUgPSBzZWxmOjpHZXRGZXUoKTsNCiAgICAkZ3JvdXBzID0gYXJyYXlfZmxpcCgkRkVVLT5HZXRHcm91cExpc3QoKSk7DQogICAgJG91dHB1dCA9ICcnOw0KICAgIA0KICAgIGZvcmVhY2goJGdyb3VwaWRhcnJheSBhcyAkb25laWQpDQogICAgew0KICAgICAgaWYoaXNzZXQoJGdyb3Vwc1skb25laWRdKSkgICRvdXRwdXQgLj0gKCRvdXRwdXQgPT0gJycgPyAnJyA6ICcsJykgLiAkZ3JvdXBzWyRvbmVpZF07DQogICAgfQ0KICAgIHJldHVybiAkb3V0cHV0Ow0KICB9DQogIA0KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIEdldEZpbGVHcm91cHMoJGZpbGVfaWQpDQogIHsNCiAgICAvLyBnZXQgdGhlIGdyb3VwcyB0aGF0IGhhdmUgYWNjZXNzIHRvIGEgZ2l2ZW4gZmlsZQ0KICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7DQogICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9qbWRvd25tYW5fZmlsZWdyb3VwcyBXSEVSRSBmaWxlX2lkPT8iOw0KICAgICRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRmaWxlX2lkKSk7DQogICAgJG91dHB1dCA9IGFycmF5KCk7DQogICAgDQogICAgd2hpbGUoJGRicmVzdWx0ICYmICRyb3cgPSAkZGJyZXN1bHQtPkZldGNoUm93KCkpDQogICAgew0KICAgICAgJG91dHB1dFtdID0gJHJvd1snZ3JvdXBfaWQnXTsNCiAgICB9DQogICAgDQogICAgcmV0dXJuICRvdXRwdXQ7DQogIH0NCiAgDQogIC8vIGNoZWNrcyBpZiB0aGUgbG9nZ2VkIGluIHVzZXIgaGFzIGFjY2VzcyB0byB0aGlzIGZpbGUNCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBDaGVja1Blcm0oJGZpbGVfaWQpDQogIHsNCiAgICBpZiggIXNlbGY6Omluc3RhbGxlZCgpICkgcmV0dXJuIGZhbHNlOw0KDQogICAgJEZFVSA9IHNlbGY6OkdldEZldSgpOw0KICAgIGlmKCEkRkVVLT5Mb2dnZWRJbigpKSAgcmV0dXJuIGZhbHNlOw0KDQogICAgJHVzZXJpZCA9ICRGRVUtPkxvZ2dlZEluSWQoKTsNCiAgICAkZ3JvdXBzID0gJEZFVS0+R2V0R3JvdXBMaXN0KCk7DQogICAgJGZpbGVncm91cHMgPSBzZWxmOjpHZXRGaWxlR3JvdXBzKCRmaWxlX2lkKTsNCiAgICAkdXNlcmdyb3VwcyA9ICRGRVUtPkdldE1lbWJlckdyb3Vwc0FycmF5KCR1c2VyaWQpOw0KDQogICAgLy8gY2hlY2sgaWYgYW55IGdyb3VwIGlzIG5lZWRlZCB0byBhY2Nlc3MNCiAgICAkaGFzcGVybSA9IGVtcHR5KCRmaWxlZ3JvdXBzKTsNCg0KICAgICRpID0gMDsNCiAgICB3aGlsZSghJGhhc3Blcm0gJiYgJGkgPCBjb3VudCgkdXNlcmdyb3VwcykpDQogICAgew0KICAgICAgaWYoaW5fYXJyYXkoJHVzZXJncm91cHNbJGldWydncm91cGlkJ10sICRmaWxlZ3JvdXBzKSkgIA0KICAgICAgew0KICAgICAgICAkaGFzcGVybSA9IHRydWU7DQogICAgICAgIGJyZWFrOw0KICAgICAgfQ0KICAgICAgJGkrKzsNCiAgICB9DQogICAgDQogICAgcmV0dXJuICRoYXNwZXJtOw0KICB9DQogIA0KICAvLyBnZXQgYW4gYXJyYXkgb2YgdGhlIEZFVSBncm91cHMsIGZvciB1c2UgaW4gYSBzZWxlY3QgbGlzdA0KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIEdldEFsbEdyb3VwcygpDQogIHsNCiAgICBpZiggIXNlbGY6Omluc3RhbGxlZCgpICkgcmV0dXJuIGZhbHNlOw0KICAgIHJldHVybiBzZWxmOjpHZXRGZXUoKS0+R2V0R3JvdXBMaXN0KCk7DQogIH0gDQogIA0KfQ0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.jmdm_file_access.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCjw/cGhwDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IEpNRG93bk1hbiANCiMgVmVyc2lvbjogMS4wDQojIEF1dGhvcjogSm8gTW9yZw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgRm9yayBvZiBtb2R1bGU6IERvd25sb2FkTWFuYWdlciANCiMgVmVyc2lvbjogMS4wLVJDMw0KIyBBdXRob3I6IFN6eW1vbiDFgXVrYXN6Y3p5aw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA1IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykNCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcNCiMgVGhlIG1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NrZWxldG9uLw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIEJFR0lOX0xJQ0VOU0UNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEpNRG93bk1hbg0KIyBKTURvd25NYW4gcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5DQojIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5DQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yDQojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQojDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgRU5EX0xJQ0VOU0UNCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQpjbGFzcyBqbWRtX2ZpbGVfYWNjZXNzDQp7DQogIGNvbnN0IEpNRE1fQllfRlJFRSAgPSAwOw0KICBjb25zdCBKTURNX0JZX0ZFVSAgID0gMTsNCiAgY29uc3QgSk1ETV9CWV9NQUlMICA9IDI7DQogIGNvbnN0IEpNRE1fQllfQk9USCAgPSAzOw0KICANCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBlcXVhbChpbnQgJHRva2VuMSwgaW50ICR0b2tlbjIpDQogIHsNCiAgICByZXR1cm4gKGJvb2wpICR0b2tlbjEgJiAkdG9rZW4yOw0KICB9DQp9DQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/lib/class.jmdm_file_ops.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiRTaW1wbGVVcGxvYWQgPSBjbXNfam9pbl9wYXRoKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJuYW1lKCBfX0ZJTEVfXyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleHRlcm5hbCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaW1wbGUtdXBsb2FkJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NpbXBsZVVwbG9hZC5waHAnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KDQppbmNsdWRlX29uY2UoJFNpbXBsZVVwbG9hZCk7DQoNCmNsYXNzIGptZG1fZmlsZV9vcHMNCnsNCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXREaXJlY3RvcnlUcmVlKCAkb3V0ZXJEaXIgLCAkcmVjdXJzaXZlID0gdHJ1ZSkNCiAgew0KICAgICRkaXJzID0gYXJyYXlfZGlmZiggc2NhbmRpciggJG91dGVyRGlyICksIGFycmF5KCAnLicsICcuLicsJy5odGFjY2VzcycgKSApOw0KICAgICRkaXJfYXJyYXkgPSBhcnJheSgpOw0KICAgIA0KICAgIGZvcmVhY2goICRkaXJzIGFzICRkICkNCiAgICB7DQogICAgICBpZiggaXNfZGlyKCRvdXRlckRpciAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkZCkgJiYgJHJlY3Vyc2l2ZSkgDQogICAgICB7DQogICAgICAgICRkaXJfYXJyYXkgPSBhcnJheV9tZXJnZSggJGRpcl9hcnJheSwgc2VsZjo6Z2V0RGlyZWN0b3J5VHJlZSgkb3V0ZXJEaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGQpICk7DQogICAgICB9DQogICAgICBlbHNlIA0KICAgICAgew0KICAgICAgICAkZGlyX2FycmF5W10gPSByZWFscGF0aCgkb3V0ZXJEaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJGQpOw0KICAgICAgfQ0KICAgIH0NCiAgICANCiAgICByZXR1cm4gJGRpcl9hcnJheTsNCiAgfQ0KICANCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc19mb3JiaWRlbl9maWxlKCR0ZXN0KQ0KICB7DQogICAgJGZpbGVfbGlzdCA9IGFycmF5DQogICAgICAoDQogICAgICAgICdjb25maWcucGhwJywNCiAgICAgICAgJ2luZGV4LnBocCcsDQogICAgICAgICd2ZXJzaW9uLnBocCcsDQogICAgICAgICdyZXdyaXRlLmxvZycsDQogICAgICAgICdmaWxlbG9jLnBocCcsDQogICAgICAgICdpbmNsdWRlLnBocCcsDQogICAgICAgICdtb2R1bGVpbnRlcmZhY2UucGhwJywNCiAgICAgICAgJ3ByZXZpZXcucGhwJywNCiAgICAgICAgJ3NvYXAucGhwJywNCiAgICAgICAgJ3N0eWxlc2hlZXQuY3NzJywNCiAgICAgICAgJ3ZlcnNpb24ucGhwJw0KICAgICAgKTsNCiAgICAgIA0KICAgIHJldHVybiBpbl9hcnJheSgkdGVzdCwgJGZpbGVfbGlzdCk7DQogIH0NCiAgICANCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpc19mb3JiaWRlbl9kaXIoJHRlc3QpDQogIHsNCiAgICAkZGlyX2xpc3QgPSBhcnJheQ0KICAgICAgKA0KICAgICAgICAnbW9kdWxlcycsDQogICAgICAgICdhZG1pbicsDQogICAgICAgICdsaWInLA0KICAgICAgICAnZG9jJywNCiAgICAgICAgJ3BsdWdpbnMnDQogICAgICApOw0KICAgICAgDQogICAgcmV0dXJuIGluX2FycmF5KCR0ZXN0LCAkZGlyX2xpc3QpOw0KICB9DQogIA0KICBzdGF0aWMgZnVuY3Rpb24gR2V0SWNvbigkZXh0KQ0KICB7DQogICAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KICAgICRwYXRoID0gY21zX2pvaW5fcGF0aCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY29uZmlnWydyb290X3BhdGgnXSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW9kdWxlcycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZpbGVNYW5hZ2VyJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaWNvbnMnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aGVtZXMnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWZhdWx0JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXh0ZW5zaW9ucycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzE2cHgnDQogICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgIGlmKCBmaWxlX2V4aXN0cygnJHBhdGgnKSApDQogICAgew0KICAgICAgaWYoIGZpbGVfZXhpc3RzKCBjbXNfam9pbl9wYXRoKCRwYXRoLCAkZXh0KSApICkNCiAgICAgIHsNCiAgICAgICAgcmV0dXJuICRjb25maWdbJ3Jvb3RfdXJsJ10gLiAnbW9kdWxlcy9GaWxlTWFuYWdlci9pY29ucy90aGVtZXMvZGVmYXVsdC9leHRlbnNpb25zLzE2cHgvJyAuICRleHQgLiAnLnBuZyc7DQogICAgICB9DQogICAgICBlbHNlICANCiAgICAgIHsNCiAgICAgICAgcmV0dXJuICRjb25maWdbJ3Jvb3RfdXJsJ10gLiAnbW9kdWxlcy9GaWxlTWFuYWdlci9pY29ucy90aGVtZXMvZGVmYXVsdC9leHRlbnNpb25zLzE2cHgvMC5wbmcnOw0KICAgICAgfQ0KICAgIH0NCiAgfQ0KICANCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBOZXdVcGxvYWQoKQ0KICB7DQogICAgcmV0dXJuIG5ldyBTaW1wbGVVcGxvYWQ7DQogIH0NCiAgDQp9DQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/lib/class.jmdm_image_ops.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiRlYXN5cGhwdGh1bWJuYWlsZmlsZSA9IGNtc19qb2luX3BhdGgoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlybmFtZSggX19GSUxFX18pLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdleHRlcm5hbCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vhc3lwaHB0aHVtYm5haWwnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlYXN5cGhwdGh1bWJuYWlsLmNsYXNzLnBocCcNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsNCg0KaW5jbHVkZV9vbmNlKCRlYXN5cGhwdGh1bWJuYWlsZmlsZSk7DQoNCmNsYXNzIGptZG1faW1hZ2Vfb3BzDQp7DQogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gR2V0TmV3VGh1bWJuYWlsKCkNCiAgew0KICAgICByZXR1cm4gbmV3IGVhc3lwaHB0aHVtYm5haWwoKTsNCiAgfQ0KfQ0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.jmdm_install_utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmNsYXNzIGptZG1faW5zdGFsbF91dGlscw0Kew0KICBwcml2YXRlIHN0YXRpYyAkX3Jvb3RfcGF0aDsNCiAgcHJpdmF0ZSBzdGF0aWMgJF9tb2Q7DQogIHByaXZhdGUgc3RhdGljICRfZGI7DQogIHByaXZhdGUgc3RhdGljICRfY25mOw0KICBwcml2YXRlIHN0YXRpYyAkX2Vycm9yczsNCiAgDQogIA0KICAjIHByaXZhdGUgbWV0aG9kcw0KICANCiAgLyoqDQogICogSW5pdGlhdGVzIHRoZSBwcml2YXRlIHN0YXRpYyB2YXJzDQogICovDQogIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIF9pbml0KCkNCiAgew0KICAgIGlmKCFpc19vYmplY3Qoc2VsZjo6JF9tb2QpKQ0KICAgIHsNCiAgICAgIHNlbGY6OiRfbW9kID0gY21zbXMoKS0+R2V0TW9kdWxlSW5zdGFuY2UoJ0pNRG93bk1hbicpOw0KICAgICAgc2VsZjo6JF9kYiA9IGNtc21zKCktPkdldERiKCk7DQogICAgICBzZWxmOjokX2NuZiA9IGNtc21zKCktPkdldENvbmZpZygpOw0KICAgICAgc2VsZjo6JF9yb290X3BhdGggPSBzZWxmOjokX21vZC0+R2V0TW9kdWxlUGF0aCgpOw0KICAgIH0gDQoNCiAgfQ0KICANCiAgLyoqDQogICogQ2xlYXJzIHRoZSBlcnJvciBsaXN0DQogICovDQogIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIF9lcnJvcnNfcmVzZXQoKQ0KICB7DQogICAgc2VsZjo6JF9lcnJvcnMgPSBhcnJheSgpOw0KICB9DQogIA0KICAvKioNCiAgKiBBcHBlbmRzIGFuIGVycm9yIHRvIHRoZSBlcnJvcnMgbGlzdA0KICAqIA0KICAqIEBwYXJhbSBzdHJpbmcgJGVycm9yX21lc3NhZ2UNCiAgKi8NCiAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gX2FwcGVuZF9lcnJvcigkZXJyb3JfbWVzc2FnZSA9ICcnKQ0KICB7DQogICAgJGVycm9yX21lc3NhZ2UgPSBlbXB0eSgkZXJyb3JfbWVzc2FnZSkgPyAndW5kZWZpbmVkJyA6ICRlcnJvcl9tZXNzYWdlOw0KICAgIHNlbGY6OiRfZXJyb3JzW10gPSAkZXJyb3JfbWVzc2FnZTsNCiAgfSANCiAgDQogIC8qKg0KICAqIEFwcGVuZHMgYW4gYXJyYXkgb2YgZXJyb3IgbWVzc2FnZXMgdG8gdGhlIGVycm9ycyBsaXN0DQogICogIA0KICAqIEBwYXJhbSBhcnJheSAkZXJyb3JfbWVzc2FnZXMNCiAgKi8NCiAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gX2FwcGVuZF9lcnJvcnMoIGFycmF5ICRlcnJvcl9tZXNzYWdlcyA9IGFycmF5KCkgKQ0KICB7DQogICAgJGVycm9yX21lc3NhZ2VzID0gZW1wdHkoJGVycm9yX21lc3NhZ2VzKSA/IGFycmF5KCd1bmRlZmluZWQnKSA6ICRlcnJvcl9tZXNzYWdlczsNCiAgICBzZWxmOjokX2Vycm9ycyA9IHNlbGY6OiRfZXJyb3JzICsgJGVycm9yX21lc3NhZ2VzOw0KICB9DQogIA0KICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBfZ2V0X2Vycm9ycygpDQogIHsNCiAgICBpZiggIWVtcHR5KHNlbGY6OiRfZXJyb3JzKSApDQogICAgew0KICAgICAgcmV0dXJuIHNlbGY6OiRfZXJyb3JzOw0KICAgIH0NCiAgICANCiAgICByZXR1cm4gYXJyYXkoKTsNCiAgfQ0KICANCiAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gX2dldF9lcnJvcnNfYW5kX2NsZWFyKCkNCiAgew0KICAgICRyID0gc2VsZjo6X2dldF9lcnJvcnMoKTsNCiAgICBzZWxmOjpfZXJyb3JzX3Jlc2V0KCk7DQogICAgcmV0dXJuICRyOw0KICB9DQogIA0KICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBfZGVsZXRlX2ZpbGVzKCAkZmlsZWxpc3QgPSBhcnJheSgpICkNCiAgew0KICAgIHNlbGY6Ol9pbml0KCk7ICANCiAgICAkcmV0ID0gYXJyYXkoKTsNCiAgICANCiAgICBmb3JlYWNoKCRmaWxlbGlzdCBhcyAkZmlsZSA9PiAkcGF0aCkNCiAgICB7DQogICAgICAkdCA9IGltcGxvZGUoIERJUkVDVE9SWV9TRVBBUkFUT1IsIGV4cGxvZGUoJzo6JywgJHBhdGgpICk7DQogICAgICANCiAgICAgICRmdWxscXVhbGZpbGVuYW1lID0gcmVhbHBhdGgoIGNtc19qb2luX3BhdGgoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmOjokX3Jvb3RfcGF0aCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZpbGUgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KICAgICAgICAgICAgDQogICAgICBpZihpc19yZWFkYWJsZSgkZnVsbHF1YWxmaWxlbmFtZSkpDQogICAgICB7DQogICAgICAgICR0ZW1wID0gYXJyYXkoKTsNCiAgICAgICAgDQogICAgICAgIA0KICAgICAgICBpZiggaXNfZmlsZSgkZnVsbHF1YWxmaWxlbmFtZSkgKSANCiAgICAgICAgew0KDQogICAgICAgICAgaWYoICFAdW5saW5rKCRmdWxscXVhbGZpbGVuYW1lKSApDQogICAgICAgICAgew0KICAgICAgICAgICAgJHRlbXAgPSBhcnJheSgnZXJyb3IgZGVsZXRpbmcgZmlsZTogJyAuICRmaWxlKTsgDQogICAgICAgICAgfSANCiAgICAgICAgfQ0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAgICAkdGVtcCA9ICBzZWxmOjpfcmVjdXJzaXZlX3JlbW92ZV9kaXJlY3RvcnkoJGZ1bGxxdWFsZmlsZW5hbWUpOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KICAgICAgICAkcmV0ID0gJHJldCArICR0ZW1wOyAgIA0KICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgfQ0KDQogICAgcmV0dXJuICRyZXQ7DQogIH0NCiAgDQogIC8qKg0KICAqIElmIDJkZWwuZGF0IGV4aXN0cyBpbiB0aGUgbW9kdWxlJ3MgZGF0YSBmb2xkZXIgYW5kIGhhcyBhIGxpc3Qgb2YgZmlsZXMgdG8gZGVsZXRlDQogICogdGhlbiBkbyBzb21lIGhvdXNlIGNsZWFuaW5nDQogICovDQogIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIF9kZWxldGVfZmlsZXNfZnJvbV9maWxlX2xpc3QoKQ0KICB7DQogICAgc2VsZjo6X2luaXQoKTsNCiAgICANCiAgICAkZmlsZV9saXN0ID0gY21zX2pvaW5fcGF0aCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGY6OiRfcm9vdF9wYXRoLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGF0YScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcyZGVsLmRhdCcNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICBpZiggaXNfcmVhZGFibGUoJGZpbGVfbGlzdCkgKQ0KICAgIHsNCiAgICAgIGluY2x1ZGVfb25jZSgkZmlsZV9saXN0KTsNCiAgICAgIA0KICAgICAgaWYoIGlzc2V0KCRmaWxlMmRlbCkgKQ0KICAgICAgew0KICAgICAgICByZXR1cm4gc2VsZjo6X2RlbGV0ZV9maWxlcygkZmlsZTJkZWwpOw0KICAgICAgfQ0KICAgIH0NCiAgICANCiAgfQ0KICANCiAgLyoqDQogICogRGVsZXRlcyBhIGRpciBhbmQgZXZlcnl0aGluZyBpbnNpZGUgcmVjdXJzaXZseQ0KICAqIA0KICAqIEBwYXJhbSBzdHJpbmcgJGRpcmVjdG9yeTogYSB2YWxpZCBkaXINCiAgKi8NCiAgcHJpdmF0ZSBzdGF0aWMgZnVuY3Rpb24gX3JlY3Vyc2l2ZV9yZW1vdmVfZGlyZWN0b3J5KCRkaXJlY3RvcnkpDQogIHsNCiAgICAkcmV0ID0gYXJyYXkoKTsNCiAgICANCiAgICBmb3JlYWNoKCBnbG9iKCAkZGlyZWN0b3J5IC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICcqJykgYXMgJGZpbGUgKQ0KICAgIHsgICAgDQogICAgICBpZiggaXNfZGlyKCRmaWxlKSApDQogICAgICB7IA0KICAgICAgICAkdGVtcCA9IHNlbGY6Ol9yZWN1cnNpdmVfcmVtb3ZlX2RpcmVjdG9yeSgkZmlsZSk7DQogICAgICAgICRyZXQgPSAkcmV0ICsgJHRlbXA7DQogICAgICB9IA0KICAgICAgZWxzZQ0KICAgICAgew0KICAgICAgICBpZiggIUB1bmxpbmsoJGZpbGUpICkNCiAgICAgICAgew0KICAgICAgICAgICRyZXRbXSA9ICdlcnJvciBkZWxldGluZyBmaWxlOiAnIC4gJGZpbGU7DQogICAgICAgIH0NCiAgICAgIH0NCiAgICB9DQogICAgDQogICAgaWYoICFAcm1kaXIoJGRpcmVjdG9yeSkgKQ0KICAgIHsNCiAgICAgICRyZXRbXSA9ICdlcnJvciBkZWxldGluZyBkaXJlY3Rvcnk6ICcgLiAkZGlyZWN0b3J5Ow0KICAgIH0NCiAgICANCiAgICByZXR1cm4gJHJldDsNCiAgfQ0KICANCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBTYW5pdGl6ZSgkdiA9ICcnKQ0KICB7DQogICAgc2VsZjo6X2RlbGV0ZV9maWxlc19mcm9tX2ZpbGVfbGlzdCgpOw0KICB9DQogIA0KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIENvcHlETURCKCkNCiAgew0KICAgIHNlbGY6Ol9pbml0KCk7DQogICAgJHRhYmxlX25hbWVzID0gYXJyYXkoDQogICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxlcycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxlc19zZXEnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAnY2F0ZWdvcmllcycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICdjYXRlZ29yaWVzX3NlcScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxlc19jYXRlZ29yeScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICdkb3dubG9hZHMnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAnZG93bmxvYWRzX3NlcScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICd1c2VycycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICd1c2Vyc19zZXEnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZWdyb3VwcycNCiAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICBmb3JlYWNoKCR0YWJsZV9uYW1lcyBhcyAkb25lKQ0KICAgIHsNCiAgICAgICRudCA9IGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfam1kb3dubWFuXycgLiAkb25lOw0KICAgICAgJG90ID0gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9kb3dubG9hZG1hbmFnZXJfJyAuICRvbmU7IA0KICAgICAgICAgICAgDQogICAgICAkcSA9ICdEUk9QIFRBQkxFIElGIEVYSVNUUyAnIC4gJG50Ow0KICAgICAgJHIgPSBzZWxmOjokX2RiLT5FeGVjdXRlKCRxKTsNCg0KICAgICAgaWYoISRyKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCBzZWxmOjokX2RiLT5FcnJvck1zZygpICk7IA0KDQogICAgICAkcSA9ICdDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyAnIC4gJG50IC4gJyBMSUtFICcgLiAkb3Q7IA0KICAgICAgJHIgPSBzZWxmOjokX2RiLT5FeGVjdXRlKCRxKTsNCg0KICAgICAgaWYoISRyKSB0aHJvdyBuZXcgRXhjZXB0aW9uKCBzZWxmOjokX2RiLT5FcnJvck1zZygpICk7DQogICAgICAgIA0KICAgICAgJHEgPSAnSU5TRVJUICcgLiAkbnQgLiAnIFNFTEVDVCAqIEZST00gJyAuICRvdDsgDQogICAgICAkciA9IHNlbGY6OiRfZGItPkV4ZWN1dGUoJHEpOw0KDQogICAgICBpZighJHIpIHRocm93IG5ldyBFeGNlcHRpb24oIHNlbGY6OiRfZGItPkVycm9yTXNnKCkgKTsNCiAgICB9DQogIH0NCiAgDQp9DQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/lib/class.jmdm_mime_ops.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmNsYXNzIGptZG1fbWltZV9vcHMNCnsNCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtaW1lX2NvbnRlbnRfdHlwZSgkZmlsZW5hbWUpDQogIHsNCiAgICBpZiggdmVyc2lvbl9jb21wYXJlKFBIUF9WRVJTSU9OLCAnNS4zJywgJz49JykgKQ0KICAgIHsNCiAgICAgIGlmKCBjbGFzc19leGlzdHMoJ2ZpbmZvJywgdHJ1ZSkgKQ0KICAgICAgew0KICAgICAgICAkcmVzdWx0ID0gbmV3IGZpbmZvKCk7DQogICAgICAgIA0KICAgICAgICBpZiAoaXNfcmVzb3VyY2UoJHJlc3VsdCkgPT09IHRydWUpDQogICAgICAgIHsNCiAgICAgICAgICByZXR1cm4gJHJlc3VsdC0+ZmlsZSgkZmlsZW5hbWUsIEZJTEVJTkZPX01JTUVfVFlQRSk7DQogICAgICAgIH0NCiAgICAgIH0NCiAgICAgIGVsc2UNCiAgICAgIHsNCiAgICAgICAgaWYoIGZpbGVfZXhpc3RzKCRmaWxlbmFtZSkgKQ0KICAgICAgICB7DQogICAgICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nOw0KICAgICAgICB9DQogICAgICB9DQogICAgfQ0KICAgIGVsc2UNCiAgICB7DQogICAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCdmaW5mb19vcGVuJykpIA0KICAgICAgew0KICAgICAgICAkZmluZm8gPSBmaW5mb19vcGVuKEZJTEVJTkZPX01JTUUpOw0KICAgICAgICAkbWltZXR5cGUgPSBmaW5mb19maWxlKCRmaW5mbywgJGZpbGVuYW1lKTsNCiAgICAgICAgZmluZm9fY2xvc2UoJGZpbmZvKTsNCiAgICAgICAgcmV0dXJuICRtaW1ldHlwZTsNCiAgICAgIH0NCiAgICAgIA0KICAgICAgJG1pbWVfdHlwZXMgPSBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHh0JyA9PiAndGV4dC9wbGFpbicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2h0bScgPT4gJ3RleHQvaHRtbCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2h0bWwnID0+ICd0ZXh0L2h0bWwnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaHAnID0+ICd0ZXh0L2h0bWwnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjc3MnID0+ICd0ZXh0L2NzcycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2pzJyA9PiAnYXBwbGljYXRpb24vamF2YXNjcmlwdCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2pzb24nID0+ICdhcHBsaWNhdGlvbi9qc29uJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAneG1sJyA9PiAnYXBwbGljYXRpb24veG1sJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3dmJyA9PiAnYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmbHYnID0+ICd2aWRlby94LWZsdicsDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbWFnZXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncG5nJyA9PiAnaW1hZ2UvcG5nJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnanBlJyA9PiAnaW1hZ2UvanBlZycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2pwZWcnID0+ICdpbWFnZS9qcGVnJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnanBnJyA9PiAnaW1hZ2UvanBlZycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZicgPT4gJ2ltYWdlL2dpZicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JtcCcgPT4gJ2ltYWdlL2JtcCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ljbycgPT4gJ2ltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpZmYnID0+ICdpbWFnZS90aWZmJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGlmJyA9PiAnaW1hZ2UvdGlmZicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N2ZycgPT4gJ2ltYWdlL3N2Zyt4bWwnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdmd6JyA9PiAnaW1hZ2Uvc3ZnK3htbCcsDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcmNoaXZlcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICd6aXAnID0+ICdhcHBsaWNhdGlvbi96aXAnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyYXInID0+ICdhcHBsaWNhdGlvbi94LXJhci1jb21wcmVzc2VkJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhlJyA9PiAnYXBwbGljYXRpb24veC1tc2Rvd25sb2FkJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbXNpJyA9PiAnYXBwbGljYXRpb24veC1tc2Rvd25sb2FkJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2FiJyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLWNhYi1jb21wcmVzc2VkJywNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGF1ZGlvL3ZpZGVvDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21wMycgPT4gJ2F1ZGlvL21wZWcnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdxdCcgPT4gJ3ZpZGVvL3F1aWNrdGltZScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vdicgPT4gJ3ZpZGVvL3F1aWNrdGltZScsDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZG9iZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwZGYnID0+ICdhcHBsaWNhdGlvbi9wZGYnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwc2QnID0+ICdpbWFnZS92bmQuYWRvYmUucGhvdG9zaG9wJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWknID0+ICdhcHBsaWNhdGlvbi9wb3N0c2NyaXB0JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXBzJyA9PiAnYXBwbGljYXRpb24vcG9zdHNjcmlwdCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BzJyA9PiAnYXBwbGljYXRpb24vcG9zdHNjcmlwdCcsDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtcyBvZmZpY2UNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZG9jJyA9PiAnYXBwbGljYXRpb24vbXN3b3JkJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncnRmJyA9PiAnYXBwbGljYXRpb24vcnRmJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAneGxzJyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLWV4Y2VsJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHB0JyA9PiAnYXBwbGljYXRpb24vdm5kLm1zLXBvd2VycG9pbnQnLA0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3BlbiBvZmZpY2UNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb2R0JyA9PiAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC50ZXh0JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnb2RzJyA9PiAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICk7DQoNCiAgICAgICRleHQgPSBzdHJ0b2xvd2VyKCBhcnJheV9wb3AoIGV4cGxvZGUoJy4nLCAkZmlsZW5hbWUpICkgKTsNCiAgICAgIA0KICAgICAgaWYgKGFycmF5X2tleV9leGlzdHMoJGV4dCwgJG1pbWVfdHlwZXMpKSANCiAgICAgIHsNCiAgICAgICAgcmV0dXJuICRtaW1lX3R5cGVzWyRleHRdOw0KICAgICAgfQ0KICAgICAgZWxzZSANCiAgICAgIHsNCiAgICAgICAgcmV0dXJuICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nOw0KICAgICAgfQ0KICAgIH0NCiAgICANCiAgICByZXR1cm4gZmFsc2U7DQogIH0NCn0NCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.jmdm_ops.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmNsYXNzIGptZG1fb3BzDQp7DQogIHByb3RlY3RlZCBzdGF0aWMgJF9jb25maWc7DQogIHByb3RlY3RlZCBzdGF0aWMgJF9kYjsNCiAgcHJvdGVjdGVkIHN0YXRpYyAkX2ptZG07DQogIA0KICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIF9pbml0KCkNCiAgew0KICAgIGlmKCFpc19vYmplY3Qoc2VsZjo6JF9qbWRtKSkNCiAgICB7DQogICAgICBzZWxmOjokX2ptZG0gPSBjbXNtcygpLT5HZXRNb2R1bGVJbnN0YW5jZSgnSk1Eb3duTWFuJyk7DQogICAgICBzZWxmOjokX2NvbmZpZz0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQogICAgICBzZWxmOjokX2RiPSBjbXNtcygpLT5HZXREYigpOw0KICAgIH0NCiAgfQ0KICANCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBHZXRKTURNKCkNCiAgew0KICAgIHNlbGY6Ol9pbml0KCk7DQogICAgcmV0dXJuIHNlbGY6OiRfam1kbTsNCiAgfQ0KICANCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBHZXRUaHVtYm5haWxzRHJvcGRvd24oJGFkZHZhbHVlID0gbnVsbCkNCiAgew0KICAgIHNlbGY6Ol9pbml0KCk7DQogICAgJGluX3BhdGggPSBzZWxmOjokX2ptZG0tPkdldFByZWZlcmVuY2UoJ2Rpcl90aHVtYnMnLCAnJyk7DQogICAgJGxpc3QgPSBqbWRtX2ZpbGVfb3BzOjpnZXREaXJlY3RvcnlUcmVlKHNlbGY6OiRfY29uZmlnWyd1cGxvYWRzX3BhdGgnXSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkaW5fcGF0aCk7DQogICAgJHJldCA9IGFycmF5KCcnID0+ICcnKTsNCiAgICANCiAgICBmb3JlYWNoKCAkbGlzdCBhcyAkdiApDQogICAgew0KICAgICAgJHYgPSBzdHJfcmVwbGFjZShzZWxmOjokX2NvbmZpZ1sndXBsb2Fkc19wYXRoJ10gLiBESVJFQ1RPUllfU0VQQVJBVE9SLCAnJywgJHYpOw0KICAgICAgJHJldFtzdHJfcmVwbGFjZSggJGluX3BhdGgsICcnLCAkdildID0gJHY7DQogICAgfQ0KICAgIGlmKCAhZW1wdHkoICRhZGR2YWx1ZSApICkNCiAgICAgICRyZXRbc3RyX3JlcGxhY2UoICRpbl9wYXRoLCAnJywgJGFkZHZhbHVlKV0gPSAkYWRkdmFsdWU7DQogICAgcmV0dXJuICRyZXQ7DQogIH0NCiAgDQogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gQ3JlYXRlVGh1bWJuYWlsKCRwYXRoKQ0KICB7DQogICAgc2VsZjo6X2luaXQoKTsNCiAgICAkZXh0ID0gc3RybGVuKCcuJyAuIHBhdGhpbmZvKCRwYXRoLCBQQVRISU5GT19FWFRFTlNJT04pKTsNCiAgICAkZmlsZSA9IHN1YnN0ciggcGF0aGluZm8oJHBhdGgsIFBBVEhJTkZPX0JBU0VOQU1FKSwgMCwgLSRleHQpOw0KICAgICR0aHVtYiA9IGptZG1faW1hZ2Vfb3BzOjpHZXROZXdUaHVtYm5haWwoKTsNCiAgICAkaW5zaWRlX2RpciA9IHNlbGY6OiRfam1kbS0+R2V0UHJlZmVyZW5jZSgnZGlyX3RodW1icycsJycpOw0KICAgICR0aHVtYi0+VGh1bWJsb2NhdGlvbiA9IHNlbGY6OiRfY29uZmlnWyd1cGxvYWRzX3BhdGgnXSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkaW5zaWRlX2RpcjsNCiAgICAkdGh1bWItPlRodW1ic2l6ZSA9IHNlbGY6OiRfam1kbS0+R2V0UHJlZmVyZW5jZSgndGh1bWJzX3NpemUnLCA4MCk7DQogICAgJHRodW1iLT5UaHVtYnNhdmVhcyA9ICdqcGcnOw0KICAgICR0aHVtYi0+VGh1bWJmaWxlbmFtZSA9ICRmaWxlIC4gJy5qcGcnOw0KICAgICR0aHVtYi0+VGh1bWJwcmVmaXggPSAnJzsNCiAgICAkdGh1bWItPkNyZWF0ZXRodW1iKCAkcGF0aCwgJ2ZpbGUnKTsNCiAgICByZXR1cm4gJGluc2lkZV9kaXIgLiAkdGh1bWItPlRodW1iZmlsZW5hbWU7DQogIH0NCiAgDQogIC8vIHRha2VuIGZvcm0gY2x0IG1vZHVsZQ0KICAvLyByZXR1cm4gdHJ1ZSBpZiBhbGlhcyBkb2VzIG5vdCBleGlzdCBpbiBkYXRhYmFzZQ0KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIENoZWNrQWxpYXMoJGRidGFibGUsICRhbGlhcywgJGl0ZW1pZCA9IGZhbHNlLCAkaWRmaWVsZCA9ICdpZCcsICRhbGlhc2ZpZWxkID0gJ2FsaWFzJykNCiAgew0KICAgIGlmKGVtcHR5KCRhbGlhcykpIHJldHVybiBmYWxzZTsNCiAgICANCiAgICBzZWxmOjpfaW5pdCgpOw0KICAgIA0KICAgIC8vIGNoZWNrcyBpZiB0aGlzIGFsaWFzIGFscmVhZHkgZXhpc3RzIGluIHRoZSBsZXZlbA0KICAgICRxdWVyeSA9ICJTRUxFQ1QgIg0KICAgICAgICAgICAgIC4gJGFsaWFzZmllbGQNCiAgICAgICAgICAgICAuICcgRlJPTSAnDQogICAgICAgICAgICAgLiBjbXNfZGJfcHJlZml4KCkNCiAgICAgICAgICAgICAuICdtb2R1bGVfam1kb3dubWFuXycNCiAgICAgICAgICAgICAuICRkYnRhYmxlDQogICAgICAgICAgICAgLiAnIFdIRVJFICcNCiAgICAgICAgICAgICAuICRhbGlhc2ZpZWxkDQogICAgICAgICAgICAgLiAnID0gPyc7DQogICAgICAgICAgICAgDQogICAgaWYoJGl0ZW1pZCkgJHF1ZXJ5IC49ICcgQU5EICcgLiAkaWRmaWVsZCAuICchPScgLiAkaXRlbWlkOw0KDQogICAgJGRicmVzdWx0ID0gc2VsZjo6JF9kYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCRhbGlhcykpOw0KICAgIA0KICAgICR0YXJnZXQgPSAwOw0KICAgIGlmKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKSAkdGFyZ2V0Kys7DQogICAgcmV0dXJuICggJHRhcmdldCA9PSAwKTsNCiAgfQ0KICANCiAgDQp9DQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/lib/class.jmdm_utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmZpbmFsIGNsYXNzIGptZG1fdXRpbHMNCnsNCiAgc3RhdGljIGZ1bmN0aW9uIF9jbGVhbl9hbGxfb3V0cHV0KCkNCiAgew0KICAgICRoYW5kbGVycyA9IG9iX2xpc3RfaGFuZGxlcnMoKTsNCiAgICBmb3IgKCRjbnQgPSAwOyAkY250IDwgc2l6ZW9mKCRoYW5kbGVycyk7ICRjbnQrKykgeyBvYl9lbmRfY2xlYW4oKTsgfSANCiAgfQ0KfQ0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/lib/external/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/external/easyphpthumbnail/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/external/easyphpthumbnail/easyphpthumbnail.class.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAgDQoNCi8qKg0KDQpFYXN5UGhwVGh1bWJuYWlsIGNsYXNzIHZlcnNpb24gMi4wLjYgLSBQSFA1DQpPbi10aGUtZmx5IGltYWdlIG1hbmlwdWxhdGlvbiBhbmQgdGh1bWJuYWlsIGdlbmVyYXRpb24NCg0KQ29weXJpZ2h0IChjKSAyMDA4LTIwMTIgSkYgTnV0YnJvZWsgPGpmbnV0YnJvZWtAZ21haWwuY29tPg0KVmlzaXQgaHR0cDovL3d3dy5teXdlYm15bWFpbC5jb20gZm9yIG1vcmUgaW5mb3JtYXRpb24gYW5kIGEgY29tbWVyY2lhbCB2ZXJzaW9uDQoNClBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZC9vciBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQ0KcHVycG9zZSB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUNCmNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMuDQoNClRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUw0KV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRg0KTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1INCkFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVMNCldIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTg0KQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YNCk9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuDQoNCiovDQoNCmNsYXNzIGVhc3lwaHB0aHVtYm5haWwgew0KCQ0KCS8qKg0KCSAqIFRoZSBzaXplIG9mIHRoZSB0aHVtYm5haWwgaW4gcHgNCgkgKiBBdXRvc2NhbGUgbGFuZHNjYXBlIG9yIHBvcnRyYWl0DQoJICoNCgkgKiBAdmFyIGludA0KCSAqLwkNCglwdWJsaWMgJFRodW1ic2l6ZTsJDQoJLyoqDQoJICogVGhlIGhlaWdodCBvZiB0aGUgdGh1bWJuYWlsIGluIHB4DQoJICogRm9yY2VzIGFsbCB0aHVtYm5haWxzIHRvIHRoZSBzYW1lIGhlaWdodA0KCSAqDQoJICogQHZhciBpbnQNCgkgKi8JDQoJcHVibGljICRUaHVtYmhlaWdodDsJCQ0KCS8qKg0KCSAqIFRoZSB3aWR0aCBvZiB0aGUgdGh1bWJuYWlsIGluIHB4DQoJICogRm9yY2VzIGFsbCB0aHVtYm5haWxzIHRvIHRoZSBzYW1lIHdpZHRoDQoJICoNCgkgKiBAdmFyIGludA0KCSAqLwkNCglwdWJsaWMgJFRodW1id2lkdGg7DQoJLyoqDQoJICogU2V0IGRpbWVuc2lvbnMgdG8gcGVyY2VudGFnZSBpbnN0ZWFkIG9mIHB4DQoJICogDQoJICogQHZhciBib29sZWFuDQoJICovCQkNCglwdWJsaWMgJFBlcmNlbnRhZ2U7CQ0KCS8qKg0KCSAqIEFsbG93IGltYWdlIGVubGFyZ2VtZW50DQoJICoNCgkgKiBAdmFyIGJvb2xlYW4NCgkgKi8JCQ0KCXB1YmxpYyAkSW5mbGF0ZTsNCgkvKioNCgkgKiBRdWFsaXR5IG9mIEpQRUcgaW1hZ2VzIDAgLSAxMDANCgkgKg0KCSAqIEB2YXIgaW50DQoJICovCQkNCglwdWJsaWMgJFF1YWxpdHk7CQ0KCS8qKg0KCSAqIFRoZSBmcmFtZSB3aWR0aCBpbiBweCBhcm91bmQgdGhlIGltYWdlDQoJICoNCgkgKiBAdmFyIGludA0KCSAqLwkNCglwdWJsaWMgJEZyYW1ld2lkdGg7DQoJLyoqDQoJICogRnJhbWUgY29sb3IgaW4gd2ViIGZvcm1hdDogJyMwMEZGMDAnDQoJICoNCgkgKiBAdmFyIHN0cmluZw0KCSAqLwkJDQoJcHVibGljICRGcmFtZWNvbG9yOwkNCgkvKioNCgkgKiBCYWNrZ3JvdW5kIGNvbG9yIGluIHdlYiBmb3JtYXQ6ICcjMDBGRjAwJw0KCSAqDQoJICogQHZhciBzdHJpbmcNCgkgKi8JCQ0KCXB1YmxpYyAkQmFja2dyb3VuZGNvbG9yOwkNCgkvKioNCgkgKiBBZGQgc2hhZG93DQoJICogDQoJICogQHZhciBib29sZWFuDQoJICovCQkNCglwdWJsaWMgJFNoYWRvdzsNCgkvKioNCgkgKiBTaG93IGJpbmRlciByaW5ncw0KCSAqDQoJICogQHZhciBib29sZWFuDQoJICovCQkNCglwdWJsaWMgJEJpbmRlcjsNCgkvKioNCgkgKiBCaW5kZXIgcmluZyBzcGFjaW5nIGluIHB4DQoJICoNCgkgKiBAdmFyIGludA0KCSAqLwkJCQ0KCXB1YmxpYyAkQmluZGVyc3BhY2luZzsJDQoJLyoqDQoJICogUGF0aCB0byBQTkcgd2F0ZXJtYXJrIGltYWdlDQoJICoNCgkgKiBAdmFyIHN0cmluZw0KCSAqLwkJDQoJcHVibGljICRXYXRlcm1hcmtwbmc7DQoJLyoqDQoJICogUG9zaXRpb24gb2Ygd2F0ZXJtYXJrIGltYWdlLCBib3R0b20gcmlnaHQgY29ybmVyOiAnMTAwJSAxMDAlJw0KCSAqDQoJICogQHZhciBzdHJpbmcNCgkgKi8JCQ0KCXB1YmxpYyAkV2F0ZXJtYXJrcG9zaXRpb247DQoJLyoqDQoJICogVHJhbnNwYXJlbmN5IGxldmVsIG9mIHdhdGVybWFyayBpbWFnZSAwIC0gMTAwDQoJICoNCgkgKiBAdmFyIGludA0KCSAqLwkJDQoJcHVibGljICRXYXRlcm1hcmt0cmFuc3BhcmVuY3k7DQoJLyoqDQoJICogQ0hNT0QgbGV2ZWwgb2Ygc2F2ZWQgdGh1bWJuYWlsczogJzA3NTUnDQoJICoNCgkgKiBAdmFyIHN0cmluZw0KCSAqLwkJDQoJcHVibGljICRDaG1vZGxldmVsOw0KCS8qKg0KCSAqIFBhdGggdG8gbG9jYXRpb24gZm9yIHRodW1ibmFpbHMNCgkgKg0KCSAqIEB2YXIgc3RyaW5nDQoJICovCQkNCglwdWJsaWMgJFRodW1ibG9jYXRpb247DQoJLyoqDQoJICogRmlsZXR5cGUgY29udmVyc2lvbiBmb3Igc2F2aW5nIHRodW1ibmFpbA0KCSAqDQoJICogQHZhciBzdHJpbmcNCgkgKi8JCQ0KCXB1YmxpYyAkVGh1bWJzYXZlYXM7CQ0KCS8qKg0KCSAqIFByZWZpeCBmb3Igc2F2aW5nIHRodW1ibmFpbHMNCgkgKg0KCSAqIEB2YXIgc3RyaW5nDQoJICovCQkNCglwdWJsaWMgJFRodW1icHJlZml4Ow0KCS8qKg0KCSAqIENsaXAgY29ybmVyczsgYXJyYXkgd2l0aCA3IHZhbHVlcw0KCSAqIFswXTogMD1kaXNhYmxlIDE9c3RyYWlnaHQgMj1yb3VuZGVkDQoJICogWzFdOiBQZXJjZW50YWdlIG9mIGNsaXBwaW5nDQoJICogWzJdOiBDbGlwIHJhbmRvbWx5IDA9ZGlzYWJsZSAxPWVuYWJsZQ0KCSAqIFszXTogQ2xpcCB0b3AgbGVmdCAwPWRpc2FibGUgMT1lbmFibGUNCgkgKiBbNF06IENsaXAgYm90dG9tIGxlZnQgMD1kaXNhYmxlIDE9ZW5hYmxlDQoJICogWzVdOiBDbGlwIHRvcCByaWdodCAwPWRpc2FibGUgMT1lbmFibGUNCgkgKiBbNl06IENsaXAgYm90dG9tIHJpZ2h0IDA9ZGlzYWJsZSAxPWVuYWJsZQ0KCSAqDQoJICogQHZhciBhcnJheQ0KCSAqLwkJDQoJcHVibGljICRDbGlwY29ybmVyOw0KCS8qKg0KCSAqIEFnZSBpbWFnZTsgYXJyYXkgd2l0aCAzIHZhbHVlcw0KCSAqIFswXTogQm9vbGVhbiAwPWRpc2FibGUgMT1lbmFibGUNCgkgKiBbMV06IEFkZCBub2lzZSAwLTEwMCwgMD1kaXNhYmxlDQoJICogWzJdOiBTZXBoaWEgZGVwdGggMC0xMDAsIDA9ZGlzYWJsZSAoZ3JleXNjYWxlKQ0KCSAqDQoJICogQHZhciBhcnJheQ0KCSAqLwkJDQoJcHVibGljICRBZ2VpbWFnZTsNCgkvKioNCgkgKiBDcm9wIGltYWdlOyBhcnJheSB3aXRoIDYgdmFsdWVzDQoJICogWzBdOiAwPWRpc2FibGUgMT1lbmFibGUgZnJlZSBjcm9wIDI9ZW5hYmxlIGNlbnRlciBjcm9wIDM9ZW5hYmxlIHNxdWFyZSBjcm9wDQoJICogWzFdOiAwPXBlcmNlbnRhZ2UgMT1waXhlbHMNCgkgKiBbMl06IENyb3AgbGVmdA0KCSAqIFszXTogQ3JvcCByaWdodA0KCSAqIFs0XTogQ3JvcCB0b3ANCgkgKiBbNV06IENyb3AgYm90dG9tDQoJICoNCgkgKiBAdmFyIGFycmF5DQoJICovCQkNCglwdWJsaWMgJENyb3BpbWFnZTsJDQoJLyoqDQoJICogUGF0aCB0byBQTkcgYm9yZGVyIGltYWdlDQoJICoNCgkgKiBAdmFyIHN0cmluZw0KCSAqLwkJCQ0KCXB1YmxpYyAkQm9yZGVycG5nOw0KCS8qKg0KCSAqIENvcHlyaWdodCB0ZXh0DQoJICoNCgkgKiBAdmFyIHN0cmluZw0KCSAqLwkJDQoJcHVibGljICRDb3B5cmlnaHR0ZXh0Ow0KCS8qKg0KCSAqIFBvc2l0aW9uIGZvciBDb3B5cmlnaHR0ZXh0IHRleHQsIGJvdHRvbSByaWdodCBjb3JuZXI6ICcxMDAlIDEwMCUnDQoJICoNCgkgKiBAdmFyIHN0cmluZw0KCSAqLwkJCQ0KCXB1YmxpYyAkQ29weXJpZ2h0cG9zaXRpb247DQoJLyoqDQoJICogUGF0aCB0byBUVEYgRm9udHR5cGUNCgkgKiBJZiBubyBUVEYgZm9udCBpcyBzcGVjaWZpZWQsIHN5c3RlbSBmb250IHdpbGwgYmUgdXNlZA0KCSAqDQoJICogQHZhciBzdHJpbmcNCgkgKi8JCQkNCglwdWJsaWMgJENvcHlyaWdodGZvbnR0eXBlOwkJDQoJLyoqDQoJICogRm9udHNpemUgZm9yIENvcHlyaWdodHRleHQgdGV4dA0KCSAqDQoJICogQHZhciBzdHJpbmcNCgkgKi8JCQkNCglwdWJsaWMgJENvcHlyaWdodGZvbnRzaXplOwkNCgkvKioNCgkgKiBDb3B5cmlnaHR0ZXh0IHRleHQgY29sb3IgaW4gd2ViIGZvcm1hdDogJyMwMDAwMDAnDQoJICogTm8gY29sb3Igc3BlY2lmaWVkIHdpbGwgYXV0by1kZXRlcm1pbmUgYmxhY2sgb3Igd2hpdGUNCgkgKg0KCSAqIEB2YXIgc3RyaW5nDQoJICovCQkJDQoJcHVibGljICRDb3B5cmlnaHR0ZXh0Y29sb3I7DQoJLyoqDQoJICogQWRkIHRleHQgdG8gdGhlIGltYWdlDQoJICogWzBdOiAwPWRpc2FibGUgMT1lbmFibGUNCgkgKiBbMV06IFRleHQgc3RyaW5nDQoJICogWzJdOiBQb3NpdGlvbiBmb3IgdGV4dCwgYm90dG9tIHJpZ2h0IGNvcm5lcjogJzEwMCUgMTAwJScNCgkgKiBbM106IFBhdGggdG8gVFRGIEZvbnR0eXBlLCBpZiBubyBUVEYgZm9udCBpcyBzcGVjaWZpZWQsIHN5c3RlbSBmb250IHdpbGwgYmUgdXNlZA0KCSAqIFs0XTogRm9udHNpemUgZm9yIHRleHQNCgkgKiBbNV06IFRleHQgY29sb3IgaW4gd2ViIGZvcm1hdDogJyMwMDAwMDAnDQoJICoNCgkgKiBAdmFyIGFycmF5DQoJICovCQkNCglwdWJsaWMgJEFkZHRleHQ7CQ0KCS8qKg0KCSAqIFJvdGF0ZSBpbWFnZSBpbiBkZWdyZWVzDQoJICoNCgkgKiBAdmFyIGludA0KCSAqLwkJCQkNCglwdWJsaWMgJFJvdGF0ZTsJDQoJLyoqDQoJICogRmxpcCB0aGUgaW1hZ2UgaG9yaXpvbnRhbGx5DQoJICoNCgkgKiBAdmFyIGJvb2xlYW4NCgkgKi8JCQkJDQoJcHVibGljICRGbGlwaG9yaXpvbnRhbDsJCQ0KCS8qKg0KCSAqIEZsaXAgdGhlIGltYWdlIHZlcnRpY2FsbHkNCgkgKg0KCSAqIEB2YXIgYm9vbGVhbg0KCSAqLwkJCQkNCglwdWJsaWMgJEZsaXB2ZXJ0aWNhbDsJDQoJLyoqDQoJICogQ3JlYXRlIHNxdWFyZSBjYW52YXMgdGh1bWJzDQoJICoNCgkgKiBAdmFyIGJvb2xlYW4NCgkgKi8JCQkNCglwdWJsaWMgJFNxdWFyZTsNCgkvKioNCgkgKiBBcHBseSBhIGZpbHRlciB0byB0aGUgaW1hZ2UNCgkgKg0KCSAqIEB2YXIgYm9vbGVhbg0KCSAqLwkJCQ0KCXB1YmxpYyAkQXBwbHlmaWx0ZXI7DQoJLyoqDQoJICogQXBwbHkgYSAzeDMgZmlsdGVyIG1hdHJpeCB0byB0aGUgaW1hZ2U7IGFycmF5IHdpdGggOSB2YWx1ZXMNCgkgKiBbMF06IGExLDENCgkgKiBbMV06IGExLDINCgkgKiBbMl06IGExLDMNCgkgKiBbM106IGEyLDENCgkgKiBbNF06IGEyLDINCgkgKiBbNV06IGEyLDMNCgkgKiBbNl06IGEzLDENCgkgKiBbN106IGEzLDINCgkgKiBbOF06IGEzLDMNCgkgKg0KCSAqIEB2YXIgYXJyYXkNCgkgKi8JCQ0KCXB1YmxpYyAkRmlsdGVyOw0KCS8qKg0KCSAqIERpdmlzb3IgZm9yIGZpbHRlcg0KCSAqDQoJICogQHZhciBpbnQNCgkgKi8JCQkJDQoJcHVibGljICREaXZpc29yOw0KCS8qKg0KCSAqIE9mZnNldCBmb3IgZmlsdGVyDQoJICoNCgkgKiBAdmFyIGludA0KCSAqLwkJCQkNCglwdWJsaWMgJE9mZnNldDsNCgkvKioNCgkgKiBCbHVyIGZpbHRlcg0KCSAqDQoJICogQHZhciBib29sZWFuDQoJICovCQkJCQ0KCXB1YmxpYyAkQmx1cjsJDQoJLyoqDQoJICogU2hhcnBlbiBmaWx0ZXINCgkgKg0KCSAqIEB2YXIgYm9vbGVhbg0KCSAqLwkJCQkNCglwdWJsaWMgJFNoYXJwZW47CQkNCgkvKioNCgkgKiBFZGdlIGZpbHRlcg0KCSAqDQoJICogQHZhciBib29sZWFuDQoJICovCQkJCQ0KCXB1YmxpYyAkRWRnZTsNCgkvKioNCgkgKiBFbWJvc3MgZmlsdGVyDQoJICoNCgkgKiBAdmFyIGJvb2xlYW4NCgkgKi8JCQkJDQoJcHVibGljICRFbWJvc3M7DQoJLyoqDQoJICogTWVhbiBmaWx0ZXINCgkgKg0KCSAqIEB2YXIgYm9vbGVhbg0KCSAqLwkJCQkNCglwdWJsaWMgJE1lYW47CQ0KCS8qKg0KCSAqIFJvdGF0ZSBhbmQgY3JvcCB0aGUgaW1hZ2UNCgkgKg0KCSAqIEB2YXIgYm9vbGVhbg0KCSAqLwkJCQkNCglwdWJsaWMgJENyb3Byb3RhdGU7CQ0KCS8qKg0KCSAqIEFwcGx5IHBlcnNwZWN0aXZlIHRvIHRoZSBpbWFnZTsgYXJyYXkgd2l0aCAzIHZhbHVlcw0KCSAqIFswXTogMD1kaXNhYmxlIDE9ZW5hYmxlDQoJICogWzFdOiBEaXJlY3Rpb24gMD1sZWZ0IDE9cmlnaHQgMj10b3AgMz1ib3R0b20NCgkgKiBbMl06IFBlcnNwZWN0aXZlIHN0cmVuZ3RoIDAgLSAxMDANCgkgKg0KCSAqIEB2YXIgYXJyYXkNCgkgKi8JCQ0KCXB1YmxpYyAkUGVyc3BlY3RpdmU7DQoJLyoqDQoJICogQXBwbHkgcGVyc3BlY3RpdmUgdG8gdGhlIHRodW1ibmFpbDsgYXJyYXkgd2l0aCAzIHZhbHVlcw0KCSAqIFswXTogMD1kaXNhYmxlIDE9ZW5hYmxlDQoJICogWzFdOiBEaXJlY3Rpb24gMD1sZWZ0IDE9cmlnaHQgMj10b3AgMz1ib3R0b20NCgkgKiBbMl06IFBlcnNwZWN0aXZlIHN0cmVuZ3RoIDAgLSAxMDANCgkgKg0KCSAqIEB2YXIgYXJyYXkNCgkgKi8JCQ0KCXB1YmxpYyAkUGVyc3BlY3RpdmV0aHVtYjsNCgkvKioNCgkgKiBBcHBseSBzaGFkaW5nIGdyYWRpZW50IHRvIHRoZSBpbWFnZTsgYXJyYXkgd2l0aCA0IHZhbHVlcw0KCSAqIFswXTogMD1kaXNhYmxlIDE9ZW5hYmxlDQoJICogWzFdOiBTaGFkaW5nIHN0cmVuZ3RoIDAgLSAxMDANCgkgKiBbMl06IFNoYWRpbmcgYXJlYSAwIC0gMTAwDQoJICogWzNdOiBTaGFkaW5nIGRpcmVjdGlvbiAwPXJpZ2h0IDE9bGVmdCAyPXRvcCAzPWJvdHRvbQ0KCSAqDQoJICogQHZhciBhcnJheQ0KCSAqLwkJDQoJcHVibGljICRTaGFkaW5nOw0KCS8qKg0KCSAqIFNoYWRpbmcgZ3JhZGllbnQgY29sb3IgaW4gd2ViIGZvcm1hdDogJyMwMEZGMDAnDQoJICoNCgkgKiBAdmFyIHN0cmluZw0KCSAqLwkJDQoJcHVibGljICRTaGFkaW5nY29sb3I7CQkNCgkvKioNCgkgKiBBcHBseSBhIG1pcnJvciBlZmZlY3QgdG8gdGhlIHRodW1ibmFpbDsgYXJyYXkgd2l0aCA0IHZhbHVlcw0KCSAqIFswXTogMD1kaXNhYmxlIDE9ZW5hYmxlDQoJICogWzFdOiBNaXJyb3IgdHJhbnNwYXJlbmN5IGdyYWRpZW50IHN0YXJ0aW5nIHN0cmVuZ3RoIDAgLSAxMDANCgkgKiBbMl06IE1pcnJvciB0cmFuc3BhcmVuY3kgZ3JhZGllbnQgZW5kaW5nIHN0cmVuZ3RoIDAgLSAxMDANCgkgKiBbM106IE1pcnJvciBhcmVhIDAgLSAxMDANCgkgKiBbNF06IE1pcnJvciAnZ2FwJyBiZXR3ZWVuIG9yaWdpbmFsIGltYWdlIGFuZCByZWZsZWN0aW9uIGluIHB4DQoJICoNCgkgKiBAdmFyIGFycmF5DQoJICovCQ0KCXB1YmxpYyAkTWlycm9yOw0KCS8qKg0KCSAqIE1pcnJvciBncmFkaWVudCBjb2xvciBpbiB3ZWIgZm9ybWF0OiAnIzAwRkYwMCcNCgkgKg0KCSAqIEB2YXIgc3RyaW5nDQoJICovCQkNCglwdWJsaWMgJE1pcnJvcmNvbG9yOwkJDQoJLyoqDQoJICogQ3JlYXRlIGltYWdlIG5lZ2F0aXZlDQoJICoNCgkgKiBAdmFyIGJvb2xlYW4NCgkgKi8JCQkNCglwdWJsaWMgJE5lZ2F0aXZlOw0KCS8qKg0KCSAqIFJlcGxhY2UgYSBjb2xvciBpbiB0aGUgaW1hZ2U7IGFycmF5IHdpdGggNCB2YWx1ZXMNCgkgKiBbMF06IDA9ZGlzYWJsZSAxPWVuYWJsZQ0KCSAqIFsxXTogQ29sb3IgdG8gcmVwbGFjZSBpbiB3ZWIgZm9ybWF0OiAnIzAwRkYwMCcNCgkgKiBbMl06IFJlcGxhY2VtZW50IGNvbG9yIGluIHdlYiBmb3JtYXQ6ICcjRkYwMDAwJw0KCSAqIFszXTogUkdCIHRvbGVyYW5jZSAwIC0gMTAwDQoJICoNCgkgKiBAdmFyIGFycmF5DQoJICovCQkNCglwdWJsaWMgJENvbG9ycmVwbGFjZTsNCgkvKioNCgkgKiBTY3JhbWJsZSBwaXhlbHM7IGFycmF5IHdpdGggMyB2YWx1ZXMNCgkgKiBbMF06IDA9ZGlzYWJsZSAxPWVuYWJsZQ0KCSAqIFsxXTogUGl4ZWwgcmFuZ2UNCgkgKiBbMl06IFJlcGVhdHMgKHVzZSB3aXRoIGNhcmUhKQ0KCSAqDQoJICogQHZhciBhcnJheQ0KCSAqLwkJDQoJcHVibGljICRQaXhlbHNjcmFtYmxlOw0KCS8qKg0KCSAqIENvbnZlcnQgaW1hZ2UgdG8gZ3JleXNjYWxlDQoJICoNCgkgKiBAdmFyIGJvb2xlYW4NCgkgKi8JCQkJDQoJcHVibGljICRHcmV5c2NhbGU7DQoJLyoqDQoJICogQ2hhbmdlIGJyaWdodG5lc3Mgb2YgdGhlIGltYWdlOyBhcnJheSB3aXRoIDIgdmFsdWVzDQoJICogWzBdOiAwPWRpc2FibGUgMT1lbmFibGUNCgkgKiBbMV06IEJyaWdodG5lc3MgLTEwMCB0byAxMDANCgkgKg0KCSAqIEB2YXIgYXJyYXkNCgkgKi8JCQ0KCXB1YmxpYyAkQnJpZ2h0bmVzczsJDQoJLyoqDQoJICogQ2hhbmdlIGNvbnRyYXN0IG9mIHRoZSBpbWFnZTsgYXJyYXkgd2l0aCAyIHZhbHVlcw0KCSAqIFswXTogMD1kaXNhYmxlIDE9ZW5hYmxlDQoJICogWzFdOiBDb250cmFzdCAtMTAwIHRvIDEwMA0KCSAqDQoJICogQHZhciBhcnJheQ0KCSAqLwkJDQoJcHVibGljICRDb250cmFzdDsNCgkvKioNCgkgKiBDaGFuZ2UgZ2FtbWEgb2YgdGhlIGltYWdlOyBhcnJheSB3aXRoIDIgdmFsdWVzDQoJICogWzBdOiAwPWRpc2FibGUgMT1lbmFibGUNCgkgKiBbMV06IEdhbW1hIGNvcnJlY3Rpb24gZmFjdG9yDQoJICoNCgkgKiBAdmFyIGFycmF5DQoJICovCQkNCglwdWJsaWMgJEdhbW1hOwkNCgkvKioNCgkgKiBSZWR1Y2UgcGFsZXR0ZSBvZiB0aGUgaW1hZ2U7IGFycmF5IHdpdGggMiB2YWx1ZXMNCgkgKiBbMF06IDA9ZGlzYWJsZSAxPWVuYWJsZQ0KCSAqIFsxXTogQW1vdW50IG9mIGNvbG9ycyBmb3IgcGFsZXR0ZQ0KCSAqDQoJICogQHZhciBhcnJheQ0KCSAqLwkJDQoJcHVibGljICRQYWxldHRlOwkNCgkvKioNCgkgKiBNZXJnZSBhIGNvbG9yIGluIHRoZSBpbWFnZTsgYXJyYXkgd2l0aCA1IHZhbHVlcw0KCSAqIFswXTogMD1kaXNhYmxlIDE9ZW5hYmxlDQoJICogWzFdOiBSZWQgY29tcG9uZW50IDAgLSAyNTUNCgkgKiBbMl06IEdyZWVuIGNvbXBvbmVudCAwIC0gMjU1DQoJICogWzNdOiBCbHVlIGNvbXBvbmVudCAwIC0gMjU1DQoJICogWzRdOiBPcGFjaXR5IGxldmVsIDAgLSAxMjcNCgkgKg0KCSAqIEB2YXIgYXJyYXkNCgkgKi8JCQ0KCXB1YmxpYyAkQ29sb3JpemU7CQ0KCS8qKg0KCSAqIFBpeGVsYXRlIHRoZSBpbWFnZTsgYXJyYXkgd2l0aCAyIHZhbHVlcw0KCSAqIFswXTogMD1kaXNhYmxlIDE9ZW5hYmxlDQoJICogWzFdOiBCbG9jayBzaXplIGluIHB4DQoJICoNCgkgKiBAdmFyIGFycmF5DQoJICovCQkNCglwdWJsaWMgJFBpeGVsYXRlOwkJDQoJLyoqDQoJICogQXBwbHkgYSBtZWRpYW4gZmlsdGVyIHRvIHJlbW92ZSBub2lzZQ0KCSAqDQoJICogQHZhciBib29sZWFuDQoJICovCQkJCQ0KCXB1YmxpYyAkTWVkaWFuZmlsdGVyOwkJDQoJLyoqDQoJICogRGVmb3JtIHRoZSBpbWFnZSB3aXRoIHR3aXJsIGVmZmVjdDsgYXJyYXkgd2l0aCAzIHZhbHVlcw0KCSAqIFswXTogMD1kaXNhYmxlIDE9ZW5hYmxlDQoJICogWzFdOiBFZmZlY3Qgc3RyZW5ndGggMCB0byAxMDANCgkgKiBbMl06IERpcmVjdGlvbiBvZiB0d2lybCAwPWNsb2Nrd2lzZSAxPWFudGktY2xvY2t3aXNlDQoJICoNCgkgKiBAdmFyIGFycmF5DQoJICovCQkNCglwdWJsaWMgJFR3aXJsZng7DQoJLyoqDQoJICogRGVmb3JtIHRoZSBpbWFnZSB3aXRoIHJpcHBsZSBlZmZlY3Q7IGFycmF5IHdpdGggMiB2YWx1ZXMNCgkgKiBbMF06IDA9ZGlzYWJsZSAxPWVuYWJsZQ0KCSAqIFsxXTogQW1vdW50IG9mIGhvcml6b250YWwgd2F2ZXMNCgkgKiBbMl06IEFtcGxpdHVkZSBvZiBob3Jpem9udGFsIHdhdmVzIGluIHB4DQoJICogWzNdOiBBbW91bnQgb2YgdmVydGljYWwgd2F2ZXMNCgkgKiBbNF06IEFtcGxpdHVkZSBvZiB2ZXJ0aWNhbCB3YXZlcyBpbiBweAkgDQoJICoNCgkgKiBAdmFyIGFycmF5DQoJICovCQkNCglwdWJsaWMgJFJpcHBsZWZ4OwkJDQoJLyoqDQoJICogRGVmb3JtIHRoZSBpbWFnZSB3aXRoIHBlcnNwZWN0aXZlIHJpcHBsZSBvciAnbGFrZScgZWZmZWN0OyBhcnJheSB3aXRoIDMgdmFsdWVzDQoJICogWzBdOiAwPWRpc2FibGUgMT1lbmFibGUNCgkgKiBbMV06IERlbnNpdHkgb2YgdGhlIHdhdmVzCSANCgkgKiBbMl06IExha2UgYXJlYSBtZWFzdXJlZCBmcm9tIGJvdHRvbSAwIC0gMTAwCSANCgkgKg0KCSAqIEB2YXIgYXJyYXkNCgkgKi8JCQ0KCXB1YmxpYyAkTGFrZWZ4Ow0KCS8qKg0KCSAqIERlZm9ybSB0aGUgaW1hZ2Ugd2l0aCBhIGNpcmN1bGFyIHdhdGVyZHJvcCBlZmZlY3Q7IGFycmF5IHdpdGggNCB2YWx1ZXMNCgkgKiBbMF06IDA9ZGlzYWJsZSAxPWVuYWJsZQ0KCSAqIFsxXTogQW1wbGl0dWRlIGluIHB4DQoJICogWzJdOiBSYWRpdXMgaW4gcHgNCgkgKiBbM106IFdhdmVsZW5ndGggaW4gcHgNCgkgKg0KCSAqIEB2YXIgYXJyYXkNCgkgKi8JCQ0KCXB1YmxpYyAkV2F0ZXJkcm9wZng7DQoJLyoqDQoJICogQ3JlYXRlIHRyYW5zcGFyZW50IGltYWdlOyBhcnJheSB3aXRoIDQgdmFsdWVzDQoJICogWzBdOiAwPWRpc2FibGUgMT1lbmFibGUNCgkgKiBbMV06IDA9UE5HIDE9R0lGIDI9T3JpZ2luYWwgRmlsZSBGb3JtYXQNCgkgKiBbMl06IFJlcGxhY2VtZW50IGNvbG9yIGluIHdlYiBmb3JtYXQ6ICcjRkYwMDAwJw0KCSAqIFszXTogUkdCIHRvbGVyYW5jZSAwIC0gMTAwDQoJICoNCgkgKiBAdmFyIGFycmF5DQoJICovCQkNCglwdWJsaWMgJE1ha2V0cmFuc3BhcmVudDsNCgkvKioNCgkgKiBLZWVwIHRyYW5zcGFyZW5jeSBvZiBvcmlnaW5hbCBpbWFnZQ0KCSAqDQoJICogQHZhciBib29sZWFuDQoJICovCQkJCQ0KCXB1YmxpYyAkS2VlcHRyYW5zcGFyZW5jeTsJDQoJLyoqDQoJICogRmlsZW5hbWUgZm9yIHNhdmluZyB0aHVtYm5haWxzDQoJICoNCgkgKiBAdmFyIHN0cmluZw0KCSAqLwkJDQoJcHVibGljICRUaHVtYmZpbGVuYW1lOwkNCgkvKioNCgkgKiBDcmVhdGUgUG9sYXJvaWQgTG9vaw0KCSAqDQoJICogQHZhciBib29sZWFuDQoJICovCQkJDQoJcHVibGljICRQb2xhcm9pZDsNCgkvKioNCgkgKiBXcml0ZSB0ZXh0IG9uIFBvbGFyb2lkDQoJICoNCgkgKiBAdmFyIHN0cmluZw0KCSAqLwkJCQ0KCXB1YmxpYyAkUG9sYXJvaWR0ZXh0OwkNCgkvKioNCgkgKiBQYXRoIHRvIFRURiBGb250dHlwZQ0KCSAqDQoJICogQHZhciBzdHJpbmcNCgkgKi8JCQkNCglwdWJsaWMgJFBvbGFyb2lkZm9udHR5cGU7CQkNCgkvKioNCgkgKiBGb250c2l6ZSBmb3IgcG9sYXJvaWQgdGV4dA0KCSAqDQoJICogQHZhciBpbnQNCgkgKi8JCQkNCglwdWJsaWMgJFBvbGFyb2lkZm9udHNpemU7CQ0KCS8qKg0KCSAqIFBvbGFyb2lkIHRleHQgY29sb3IgaW4gd2ViIGZvcm1hdDogJyMwMDAwMDAnDQoJICoNCgkgKiBAdmFyIHN0cmluZw0KCSAqLwkJCQ0KCXB1YmxpYyAkUG9sYXJvaWR0ZXh0Y29sb3I7DQoJLyoqDQoJICogUG9sYXJvaWQgZnJhbWUgY29sb3IgaW4gd2ViIGZvcm1hdDogJyNGRkZGRkYnDQoJICoNCgkgKiBAdmFyIHN0cmluZw0KCSAqLwkJCQ0KCXB1YmxpYyAkUG9sYXJvaWRmcmFtZWNvbG9yOwkJDQoJLyoqDQoJICogRGVmb3JtIHRoZSBpbWFnZSB3aXRoIGEgZGlzcGxhY2VtZW50IG1hcDsgYXJyYXkgd2l0aCA3IHZhbHVlcw0KCSAqIFswXTogMD1kaXNhYmxlIDE9ZW5hYmxlDQoJICogWzFdOiBQYXRoIHRvIGRpc3BsYWNlbWVudCBpbWFnZSAoZ3JleSAjODA4MDgwIGlzIG5ldXRyYWwpDQoJICogWzJdOiAwPXJlc2l6ZSB0aGUgbWFwIHRvIGZpdCB0aGUgaW1hZ2UgMT1rZWVwIG9yaWdpbmFsIG1hcCBzaXplDQoJICogWzNdOiBYIGNvb3JkaW5hdGUgZm9yIG1hcCBwb3NpdGlvbiBpbiBweCANCgkgKiBbNF06IFkgY29vcmRpbmF0ZSBmb3IgbWFwIHBvc2l0aW9uIGluIHB4IA0KCSAqIFs1XTogWCBkaXNwbGFjZW1lbnQgc2NhbGUgaW4gcHgNCgkgKiBbNl06IFkgZGlzcGxhY2VtZW50IHNjYWxlIGluIHB4DQoJICoNCgkgKiBAdmFyIGFycmF5DQoJICovCQkNCglwdWJsaWMgJERpc3BsYWNlbWVudG1hcDsNCgkvKioNCgkgKiBEZWZvcm0gdGhlIHRodW1ibmFpbCB3aXRoIGEgZGlzcGxhY2VtZW50IG1hcDsgYXJyYXkgd2l0aCA3IHZhbHVlcw0KCSAqIFswXTogMD1kaXNhYmxlIDE9ZW5hYmxlDQoJICogWzFdOiBQYXRoIHRvIGRpc3BsYWNlbWVudCBpbWFnZSAoZ3JleSAjODA4MDgwIGlzIG5ldXRyYWwpDQoJICogWzJdOiAwPXJlc2l6ZSB0aGUgbWFwIHRvIGZpdCB0aGUgaW1hZ2UgMT1rZWVwIG9yaWdpbmFsIG1hcCBzaXplDQoJICogWzNdOiBYIGNvb3JkaW5hdGUgZm9yIG1hcCBwb3NpdGlvbiBpbiBweCANCgkgKiBbNF06IFkgY29vcmRpbmF0ZSBmb3IgbWFwIHBvc2l0aW9uIGluIHB4IA0KCSAqIFs1XTogWCBkaXNwbGFjZW1lbnQgc2NhbGUgaW4gcHgNCgkgKiBbNl06IFkgZGlzcGxhY2VtZW50IHNjYWxlIGluIHB4DQoJICoNCgkgKiBAdmFyIGFycmF5DQoJICovCQkNCglwdWJsaWMgJERpc3BsYWNlbWVudG1hcHRodW1iOwkNCgkvKioNCgkgKiBUaGUgaW1hZ2UgZmlsZW5hbWUgb3IgYXJyYXkgd2l0aCBmaWxlbmFtZXMNCgkgKg0KCSAqIEB2YXIgc3RyaW5nIC8gYXJyYXkNCgkgKi8JDQoJcHJpdmF0ZSAkaW1hZ2U7CQ0KCS8qKg0KCSAqIE9yaWdpbmFsIGltYWdlDQoJICoNCgkgKiBAdmFyIGltYWdlCSANCgkgKi8JCQkNCglwcml2YXRlICRpbTsNCgkvKioNCgkgKiBUaHVtYm5haWwgaW1hZ2UNCgkgKg0KCSAqIEB2YXIgaW1hZ2UJIA0KCSAqLwkJCQ0KCXByaXZhdGUgJHRodW1iOw0KCS8qKg0KCSAqIFRlbXBvcmFyeSBpbWFnZQ0KCSAqDQoJICogQHZhciBpbWFnZQkgDQoJICovCQkJDQoJcHJpdmF0ZSAkbmV3aW1hZ2U7CQ0KCS8qKg0KCSAqIERpbWVuc2lvbnMgb2Ygb3JpZ2luYWwgaW1hZ2U7IGFycmF5IHdpdGggMyB2YWx1ZXMNCgkgKiBbMF06IFdpZHRoDQoJICogWzFdOiBIZWlnaHQNCgkgKiBbMl06IEZpbGV0eXBlDQoJICoNCgkgKiBAdmFyIGFycmF5CSANCgkgKi8JCQkNCglwcml2YXRlICRzaXplOw0KCS8qKg0KCSAqIE9mZnNldCBpbiBweCBmb3IgYmluZGVyDQoJICoNCgkgKiBAdmFyIGludAkgDQoJICovCQkJDQoJcHJpdmF0ZSAkYmluZF9vZmZzZXQ7DQoJLyoqDQoJICogT2Zmc2V0IGluIHB4IGZvciBzaGFkb3cNCgkgKg0KCSAqIEB2YXIgaW50CSANCgkgKi8JCQkNCglwcml2YXRlICRzaGFkb3dfb2Zmc2V0Ow0KCS8qKg0KCSAqIE9mZnNldCBpbiBweCBmb3IgZnJhbWUNCgkgKg0KCSAqIEB2YXIgaW50IA0KCSAqLwkJCQ0KCXByaXZhdGUgJGZyYW1lX29mZnNldDsNCgkvKioNCgkgKiBUaHVtYiB3aWR0aCBpbiBweA0KCSAqDQoJICogQHZhciBpbnQJIA0KCSAqLwkJCQkNCglwcml2YXRlICR0aHVtYng7DQoJLyoqDQoJICogVGh1bWIgaGVpZ2h0IGluIHB4DQoJICoNCgkgKiBAdmFyIGludAkgDQoJICovCQkJCQ0KCXByaXZhdGUgJHRodW1ieTsNCgkNCgkvKiogDQoJICogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHJlcXVpcmVkICdjb3JlJyBmdW5jdGlvbnMsIHlvdSBjYW5ub3QgZGVsZXRlIHRoZW0uDQoJICogUmVmZXIgdG8gdGhlIG5leHQgc2VjdGlvbiB0byBjcmVhdGUgeW91ciBvd24gJ2xpZ2h0d2VpZ2h0JyBjbGFzcy4NCgkgKg0KCSAqLw0KDQoJLyoqDQoJICogQ2xhc3MgY29uc3RydWN0b3INCgkgKg0KCSAqLwkNCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKSB7DQoJDQoJCSR0aGlzLT5UaHVtYnNpemUgICAgICAgICAgICAgID0gMTYwOw0KCQkkdGhpcy0+VGh1bWJoZWlnaHQgICAgICAgICAgICA9IDA7DQoJCSR0aGlzLT5UaHVtYndpZHRoICAgICAgICAgICAgID0gMDsNCgkJJHRoaXMtPlBlcmNlbnRhZ2UgICAgICAgICAgICAgPSBmYWxzZTsJCQ0KCQkkdGhpcy0+RnJhbWV3aWR0aCAgICAgICAgICAgICA9IDA7DQoJCSR0aGlzLT5JbmZsYXRlICAgICAgICAgICAgICAgID0gZmFsc2U7DQoJCSR0aGlzLT5TaGFkb3cgICAgICAgICAgICAgICAgID0gZmFsc2U7DQoJCSR0aGlzLT5CaW5kZXIgICAgICAgICAgICAgICAgID0gZmFsc2U7DQoJCSR0aGlzLT5CaW5kZXJzcGFjaW5nICAgICAgICAgID0gODsJCQ0KCQkkdGhpcy0+QmFja2dyb3VuZGNvbG9yICAgICAgICA9ICcjRkZGRkZGJzsNCgkJJHRoaXMtPkZyYW1lY29sb3IgICAgICAgICAgICAgPSAnI0ZGRkZGRic7DQoJCSR0aGlzLT5XYXRlcm1hcmtwbmcgICAgICAgICAgID0gJyc7DQoJCSR0aGlzLT5XYXRlcm1hcmtwb3NpdGlvbiAgICAgID0gJzEwMCUgMTAwJSc7DQoJCSR0aGlzLT5XYXRlcm1hcmt0cmFuc3BhcmVuY3kgID0gJzcwJzsJDQoJCSR0aGlzLT5RdWFsaXR5ICAgICAgICAgICAgICAgID0gJzkwJzsNCgkJJHRoaXMtPkNobW9kbGV2ZWwgICAgICAgICAgICAgPSAnMDc1NSc7DQoJCSR0aGlzLT5UaHVtYmxvY2F0aW9uICAgICAgICAgID0gJyc7DQoJCSR0aGlzLT5UaHVtYnNhdmVhcyAgICAgICAgICAgID0gJyc7DQoJCSR0aGlzLT5UaHVtYnByZWZpeCAgICAgICAgICAgID0gJyc7DQoJCSR0aGlzLT5DbGlwY29ybmVyICAgICAgICAgICAgID0gYXJyYXkoMCwxNSwwLDEsMSwxLDApOw0KCQkkdGhpcy0+QWdlaW1hZ2UgICAgICAgICAgICAgICA9IGFycmF5KDAsMTAsODApOw0KCQkkdGhpcy0+Q3JvcGltYWdlICAgICAgICAgICAgICA9IGFycmF5KDAsMCwyMCwyMCwyMCwyMCk7CQkNCgkJJHRoaXMtPkJvcmRlcnBuZyAgICAgICAgICAgICAgPSAnJzsNCgkJJHRoaXMtPkNvcHlyaWdodHRleHQgICAgICAgICAgPSAnJzsNCgkJJHRoaXMtPkNvcHlyaWdodHBvc2l0aW9uICAgICAgPSAnMCUgOTUlJzsNCgkJJHRoaXMtPkNvcHlyaWdodGZvbnR0eXBlICAgICAgPSAnJzsNCgkJJHRoaXMtPkNvcHlyaWdodGZvbnRzaXplICAgICAgPSAyOw0KCQkkdGhpcy0+Q29weXJpZ2h0dGV4dGNvbG9yICAgICA9ICcnOw0KCQkkdGhpcy0+QWRkdGV4dCAgICAgICAgICAgICAgICA9IGFycmF5KDAsJ1RleHQnLCc1MCUgNTAlJywnJywyLCcjMDAwMDAwJyk7DQoJCSR0aGlzLT5Sb3RhdGUgICAgICAgICAgICAgICAgID0gMDsNCgkJJHRoaXMtPkZsaXBob3Jpem9udGFsICAgICAgICAgPSBmYWxzZTsNCgkJJHRoaXMtPkZsaXB2ZXJ0aWNhbCAgICAgICAgICAgPSBmYWxzZTsNCgkJJHRoaXMtPlNxdWFyZSAgICAgICAgICAgICAgICAgPSBmYWxzZTsNCgkJJHRoaXMtPkFwcGx5ZmlsdGVyICAgICAgICAgICAgPSBmYWxzZTsJCQ0KCQkkdGhpcy0+RmlsdGVyICAgICAgICAgICAgICAgICA9IGFycmF5KDAsMCwwLDAsMSwwLDAsMCwwKTsNCgkJJHRoaXMtPkRpdmlzb3IgICAgICAgICAgICAgICAgPSAxOw0KCQkkdGhpcy0+T2Zmc2V0ICAgICAgICAgICAgICAgICA9IDA7DQoJCSR0aGlzLT5CbHVyICAgICAgICAgICAgICAgICAgID0gZmFsc2U7CQkNCgkJJHRoaXMtPlNoYXJwZW4gICAgICAgICAgICAgICAgPSBmYWxzZTsJDQoJCSR0aGlzLT5FZGdlICAgICAgICAgICAgICAgICAgID0gZmFsc2U7CQ0KCQkkdGhpcy0+RW1ib3NzICAgICAgICAgICAgICAgICA9IGZhbHNlOwkNCgkJJHRoaXMtPk1lYW4gICAgICAgICAgICAgICAgICAgPSBmYWxzZTsJCQkNCgkJJHRoaXMtPkNyb3Byb3RhdGUgICAgICAgICAgICAgPSBmYWxzZTsJDQoJCSR0aGlzLT5QZXJzcGVjdGl2ZSAgICAgICAgICAgID0gYXJyYXkoMCwwLDMwKTsNCgkJJHRoaXMtPlBlcnNwZWN0aXZldGh1bWIgICAgICAgPSBhcnJheSgwLDEsMjApOw0KCQkkdGhpcy0+U2hhZGluZyAgICAgICAgICAgICAgICA9IGFycmF5KDAsNzAsNjUsMCk7DQoJCSR0aGlzLT5TaGFkaW5nY29sb3IgICAgICAgICAgID0gJyMwMDAwMDAnOwkJDQoJCSR0aGlzLT5NaXJyb3IgICAgICAgICAgICAgICAgID0gYXJyYXkoMCwyMCwxMDAsNDAsMik7DQoJCSR0aGlzLT5NaXJyb3Jjb2xvciAgICAgICAgICAgID0gJyNGRkZGRkYnOwkJDQoJCSR0aGlzLT5OZWdhdGl2ZSAgICAgICAgICAgICAgID0gZmFsc2U7DQoJCSR0aGlzLT5Db2xvcnJlcGxhY2UgICAgICAgICAgID0gYXJyYXkoMCwnIzAwMDAwMCcsJyNGRkZGRkYnLDMwKTsNCgkJJHRoaXMtPlBpeGVsc2NyYW1ibGUgICAgICAgICAgPSBhcnJheSgwLDMsMSk7DQoJCSR0aGlzLT5HcmV5c2NhbGUgICAgICAgICAgICAgID0gZmFsc2U7CQkNCgkJJHRoaXMtPkJyaWdodG5lc3MgICAgICAgICAgICAgPSBhcnJheSgwLDMwKTsNCgkJJHRoaXMtPkNvbnRyYXN0ICAgICAgICAgICAgICAgPSBhcnJheSgwLDMwKTsNCgkJJHRoaXMtPkdhbW1hICAgICAgICAgICAgICAgICAgPSBhcnJheSgwLDEuNSk7DQoJCSR0aGlzLT5QYWxldHRlICAgICAgICAgICAgICAgID0gYXJyYXkoMCw2KTsNCgkJJHRoaXMtPkNvbG9yaXplICAgICAgICAgICAgICAgPSBhcnJheSgwLDEwMCwwLDAsMCk7DQoJCSR0aGlzLT5QaXhlbGF0ZSAgICAgICAgICAgICAgID0gYXJyYXkoMCwzKTsNCgkJJHRoaXMtPk1lZGlhbmZpbHRlciAgICAgICAgICAgPSBmYWxzZTsNCgkJJHRoaXMtPlR3aXJsZnggICAgICAgICAgICAgICAgPSBhcnJheSgwLDIwLDApOw0KCQkkdGhpcy0+UmlwcGxlZnggICAgICAgICAgICAgICA9IGFycmF5KDAsNSwxNSw1LDUpOw0KCQkkdGhpcy0+TGFrZWZ4ICAgICAgICAgICAgICAgICA9IGFycmF5KDAsMTUsODApOw0KCQkkdGhpcy0+V2F0ZXJkcm9wZnggICAgICAgICAgICA9IGFycmF5KDAsMS4yLDQwMCw0MCk7DQoJCSR0aGlzLT5NYWtldHJhbnNwYXJlbnQgICAgICAgID0gYXJyYXkoMCwwLCcjRkZGRkZGJywzMCk7DQoJCSR0aGlzLT5LZWVwdHJhbnNwYXJlbmN5ICAgICAgID0gZmFsc2U7DQoJCSR0aGlzLT5UaHVtYmZpbGVuYW1lICAgICAgICAgID0gJyc7DQoJCSR0aGlzLT5Qb2xhcm9pZCAgICAgICAgICAgICAgID0gZmFsc2U7DQoJCSR0aGlzLT5Qb2xhcm9pZHRleHQgICAgICAgICAgID0gJyc7DQoJCSR0aGlzLT5Qb2xhcm9pZGZvbnR0eXBlICAgICAgID0gJyc7DQoJCSR0aGlzLT5Qb2xhcm9pZGZvbnRzaXplICAgICAgID0gJzMwJzsNCgkJJHRoaXMtPlBvbGFyb2lkdGV4dGNvbG9yICAgICAgPSAnIzAwMDAwMCc7DQoJCSR0aGlzLT5Qb2xhcm9pZGZyYW1lY29sb3IgICAgID0gJyNGRkZGRkYnOwkJDQoJCSR0aGlzLT5EaXNwbGFjZW1lbnRtYXAgICAgICAgID0gYXJyYXkoMCwnJywwLDAsMCw1MCw1MCk7DQoJCSR0aGlzLT5EaXNwbGFjZW1lbnRtYXB0aHVtYiAgID0gYXJyYXkoMCwnJywwLDAsMCwyNSwyNSk7CQkNCgkJDQoJfQ0KDQoJLyoqDQoJICogQ2xhc3MgZGVzdHJ1Y3Rvcg0KCSAqDQoJICovCQ0KCXB1YmxpYyBmdW5jdGlvbiBfX2Rlc3RydWN0KCkgew0KCQ0KCQlpZihpc19yZXNvdXJjZSgkdGhpcy0+aW0pKSBpbWFnZWRlc3Ryb3koJHRoaXMtPmltKTsNCgkJaWYoaXNfcmVzb3VyY2UoJHRoaXMtPnRodW1iKSkgaW1hZ2VkZXN0cm95KCR0aGlzLT50aHVtYik7DQoJCWlmKGlzX3Jlc291cmNlKCR0aGlzLT5uZXdpbWFnZSkpIGltYWdlZGVzdHJveSgkdGhpcy0+bmV3aW1hZ2UpOw0KCQ0KCX0NCg0KCS8qKg0KCSAqIENyZWF0ZXMgYW5kIG91dHB1dHMgdGh1bWJuYWlsDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nL2FycmF5ICRmaWxlbmFtZQ0KCSAqIEBwYXJhbSBzdHJpbmcgJG91dHB1dA0KCSAqLwkNCglwdWJsaWMgZnVuY3Rpb24gQ3JlYXRldGh1bWIoJGZpbGVuYW1lPSJ1bmtub3duIiwkb3V0cHV0PSJzY3JlZW4iKSB7DQoNCgkJaWYgKGlzX2FycmF5KCRmaWxlbmFtZSkgJiYgJG91dHB1dD09ImZpbGUiKSB7DQoJCQlmb3JlYWNoICgkZmlsZW5hbWUgYXMgJG5hbWUpIHsNCgkJCQkkdGhpcy0+aW1hZ2U9JG5hbWU7DQoJCQkJJHRoaXMtPnRodW1ibWFrZXIoKTsNCgkJCQkkdGhpcy0+c2F2ZXRodW1iKCk7DQoJCQl9DQoJCX0gZWxzZSB7DQoJCQkkdGhpcy0+aW1hZ2U9JGZpbGVuYW1lOw0KCQkJJHRoaXMtPnRodW1ibWFrZXIoKTsNCgkJCWlmICgkb3V0cHV0PT0iZmlsZSIpIHskdGhpcy0+c2F2ZXRodW1iKCk7fSBlbHNlIHskdGhpcy0+ZGlzcGxheXRodW1iKCk7fQ0KCQl9DQoJCQ0KCX0NCg0KCS8qKg0KCSAqIEFwcGx5IGFsbCBtb2RpZmljYXRpb25zIHRvIHRoZSBpbWFnZQ0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gdGh1bWJtYWtlcigpIHsNCg0KCQlpZigkdGhpcy0+bG9hZGltYWdlKCkpIHsNCgkJCS8vIE1vZGlmaWNhdGlvbnMgdG8gdGhlIG9yaWdpbmFsIHNpemVkIGltYWdlCQkJDQoJCQlpZiAoJHRoaXMtPkNyb3BpbWFnZVswXT4wKSB7JHRoaXMtPmNyb3BpbWFnZSgpO30NCgkJCWlmICgkdGhpcy0+QWRkdGV4dFswXT4wKSB7JHRoaXMtPmFkZHRleHQoKTt9DQoJCQlpZiAoJHRoaXMtPk1lZGlhbmZpbHRlcikgeyR0aGlzLT5tZWRpYW5maWx0ZXIoKTt9DQoJCQlpZiAoJHRoaXMtPkdyZXlzY2FsZSkgeyR0aGlzLT5ncmV5c2NhbGUoKTt9DQoJCQlpZiAoJHRoaXMtPkJyaWdodG5lc3NbMF09PTEpIHskdGhpcy0+YnJpZ2h0bmVzcygpO30NCgkJCWlmICgkdGhpcy0+Q29udHJhc3RbMF09PTEpIHskdGhpcy0+Y29udHJhc3QoKTt9DQoJCQlpZiAoJHRoaXMtPkdhbW1hWzBdPT0xKSB7JHRoaXMtPmdhbW1hKCk7fQ0KCQkJaWYgKCR0aGlzLT5QYWxldHRlWzBdPT0xKSB7JHRoaXMtPnBhbGV0dGUoKTt9DQoJCQlpZiAoJHRoaXMtPkNvbG9yaXplWzBdPT0xKSB7JHRoaXMtPmNvbG9yaXplKCk7fQkJCQ0KCQkJaWYgKCR0aGlzLT5Db2xvcnJlcGxhY2VbMF09PTEpIHskdGhpcy0+Y29sb3JyZXBsYWNlKCk7fQ0KCQkJaWYgKCR0aGlzLT5QaXhlbHNjcmFtYmxlWzBdPT0xKSB7JHRoaXMtPnBpeGVsc2NyYW1ibGUoKTt9DQoJCQlpZiAoJHRoaXMtPlBpeGVsYXRlWzBdPT0xKSB7JHRoaXMtPnBpeGVsYXRlKCk7fQ0KCQkJaWYgKCR0aGlzLT5BZ2VpbWFnZVswXT09MSkgeyR0aGlzLT5hZ2VpbWFnZSgpO30NCgkJCWlmICgkdGhpcy0+RmxpcGhvcml6b250YWwpIHskdGhpcy0+cm90YXRlb3JmbGlwKDAsMSk7fQ0KCQkJaWYgKCR0aGlzLT5GbGlwdmVydGljYWwpIHskdGhpcy0+cm90YXRlb3JmbGlwKDAsLTEpO30NCgkJCWlmICgkdGhpcy0+V2F0ZXJtYXJrcG5nIT0nJykgeyR0aGlzLT5hZGRwbmd3YXRlcm1hcmsoKTt9DQoJCQlpZiAoJHRoaXMtPkNsaXBjb3JuZXJbMF09PTEpIHskdGhpcy0+Y2xpcGNvcm5lcnNzdHJhaWdodCgpO30NCgkJCWlmICgkdGhpcy0+Q2xpcGNvcm5lclswXT09MikgeyR0aGlzLT5jbGlwY29ybmVyc3JvdW5kKCk7fQ0KCQkJaWYgKGludHZhbCgkdGhpcy0+Um90YXRlKTw+MCAmJiAhJHRoaXMtPkNyb3Byb3RhdGUpIHsNCgkJCQlzd2l0Y2goaW50dmFsKCR0aGlzLT5Sb3RhdGUpKSB7DQoJCQkJCWNhc2UgLTkwOg0KCQkJCQljYXNlIDI3MDoNCgkJCQkJCSR0aGlzLT5yb3RhdGVvcmZsaXAoMSwwKTsNCgkJCQkJCWJyZWFrOw0KCQkJCQljYXNlIC0yNzA6DQoJCQkJCWNhc2UgOTA6DQoJCQkJCQkkdGhpcy0+cm90YXRlb3JmbGlwKDEsMCk7DQoJCQkJCQlicmVhazsNCgkJCQkJY2FzZSAtMTgwOg0KCQkJCQljYXNlIDE4MDoNCgkJCQkJCSR0aGlzLT5yb3RhdGVvcmZsaXAoMSwwKTsNCgkJCQkJCSR0aGlzLT5yb3RhdGVvcmZsaXAoMSwwKTsNCgkJCQkJCWJyZWFrOw0KCQkJCQlkZWZhdWx0Og0KCQkJCQkJJHRoaXMtPmZyZWVyb3RhdGUoKTsNCgkJCQl9DQoJCQl9DQoJCQlpZiAoJHRoaXMtPkNyb3Byb3RhdGUpIHskdGhpcy0+Y3JvcHJvdGF0ZSgpO30NCgkJCWlmICgkdGhpcy0+U2hhcnBlbikgeyR0aGlzLT5zaGFycGVuKCk7fQkJCQ0KCQkJaWYgKCR0aGlzLT5CbHVyKSB7JHRoaXMtPmJsdXIoKTt9DQoJCQlpZiAoJHRoaXMtPkVkZ2UpIHskdGhpcy0+ZWRnZSgpO30JCQkNCgkJCWlmICgkdGhpcy0+RW1ib3NzKSB7JHRoaXMtPmVtYm9zcygpO30JDQoJCQlpZiAoJHRoaXMtPk1lYW4pIHskdGhpcy0+bWVhbigpO30JDQoJCQlpZiAoJHRoaXMtPkFwcGx5ZmlsdGVyKSB7JHRoaXMtPmZpbHRlcigpO30NCgkJCWlmICgkdGhpcy0+VHdpcmxmeFswXT09MSkgeyR0aGlzLT50d2lybGZ4KCk7fQ0KCQkJaWYgKCR0aGlzLT5SaXBwbGVmeFswXT09MSkgeyR0aGlzLT5yaXBwbGVmeCgpO30NCgkJCWlmICgkdGhpcy0+TGFrZWZ4WzBdPT0xKSB7JHRoaXMtPmxha2VmeCgpO30NCgkJCWlmICgkdGhpcy0+V2F0ZXJkcm9wZnhbMF09PTEpIHskdGhpcy0+d2F0ZXJkcm9wZngoKTt9DQoJCQlpZiAoJHRoaXMtPkRpc3BsYWNlbWVudG1hcFswXT09MSkgeyR0aGlzLT5kaXNwbGFjZSgpO30JCQkNCgkJCWlmICgkdGhpcy0+TmVnYXRpdmUpIHskdGhpcy0+bmVnYXRpdmUoKTt9DQoJCQlpZiAoJHRoaXMtPlNoYWRpbmdbMF09PTEpIHskdGhpcy0+c2hhZGluZygpO30NCgkJCWlmICgkdGhpcy0+UG9sYXJvaWQpIHskdGhpcy0+cG9sYXJvaWQoKTt9CQkJDQoJCQlpZiAoJHRoaXMtPlBlcnNwZWN0aXZlWzBdPT0xKSB7JHRoaXMtPnBlcnNwZWN0aXZlKCk7fQ0KCQkJLy8gUHJlcGFyZSB0aGUgdGh1bWJuYWlsIChuZXcgY2FudmFzKSBhbmQgYWRkIG1vZGlmaWNhdGlvbnMgdG8gdGhlIHJlc2l6ZWQgaW1hZ2UgKHRodW1ibmFpbCkNCgkJCSR0aGlzLT5jcmVhdGVlbXB0eXRodW1ibmFpbCgpOw0KCQkJaWYgKCR0aGlzLT5CaW5kZXIpIHskdGhpcy0+YWRkYmluZGVyKCk7fQ0KCQkJaWYgKCR0aGlzLT5TaGFkb3cpIHskdGhpcy0+YWRkc2hhZG93KCk7fQ0KCQkJaW1hZ2Vjb3B5cmVzYW1wbGVkKCR0aGlzLT50aHVtYiwkdGhpcy0+aW0sJHRoaXMtPkZyYW1ld2lkdGgqKCR0aGlzLT5mcmFtZV9vZmZzZXQtMSksJHRoaXMtPkZyYW1ld2lkdGgsMCwwLCR0aGlzLT50aHVtYngtKCR0aGlzLT5mcmFtZV9vZmZzZXQqJHRoaXMtPkZyYW1ld2lkdGgpLSR0aGlzLT5zaGFkb3dfb2Zmc2V0LCR0aGlzLT50aHVtYnktMiokdGhpcy0+RnJhbWV3aWR0aC0kdGhpcy0+c2hhZG93X29mZnNldCxpbWFnZXN4KCR0aGlzLT5pbSksaW1hZ2VzeSgkdGhpcy0+aW0pKTsNCgkJCWlmICgkdGhpcy0+Qm9yZGVycG5nIT0nJykgeyR0aGlzLT5hZGRwbmdib3JkZXIoKTt9DQoJCQlpZiAoJHRoaXMtPkNvcHlyaWdodHRleHQhPScnKSB7JHRoaXMtPmFkZGNvcHlyaWdodCgpO30JCQ0KCQkJaWYgKCR0aGlzLT5TcXVhcmUpIHskdGhpcy0+c3F1YXJlKCk7fQ0KCQkJaWYgKCR0aGlzLT5NaXJyb3JbMF09PTEpIHskdGhpcy0+bWlycm9yKCk7fQ0KCQkJaWYgKCR0aGlzLT5EaXNwbGFjZW1lbnRtYXB0aHVtYlswXT09MSkgeyR0aGlzLT5kaXNwbGFjZXRodW1iKCk7fQkJCQ0KCQkJaWYgKCR0aGlzLT5QZXJzcGVjdGl2ZXRodW1iWzBdPT0xKSB7JHRoaXMtPnBlcnNwZWN0aXZldGh1bWIoKTt9DQoJCQlpZiAoJHRoaXMtPk1ha2V0cmFuc3BhcmVudFswXT09MSkgeyR0aGlzLT5tYWtldHJhbnNwYXJlbnQoKTt9DQoJCX0NCgkJDQoJfQ0KDQoJLyoqDQoJICogTG9hZCBpbWFnZSBpbiBtZW1vcnkNCgkgKg0KCSAqLwkNCglwcml2YXRlIGZ1bmN0aW9uIGxvYWRpbWFnZSgpIHsNCg0KCQlpZiAoaXNfcmVzb3VyY2UoJHRoaXMtPmltKSkgew0KCQkJcmV0dXJuIHRydWU7DQoJCX0gZWxzZSBpZiAoZmlsZV9leGlzdHMoJHRoaXMtPmltYWdlKSkgew0KCQkJJHRoaXMtPnNpemU9R2V0SW1hZ2VTaXplKCR0aGlzLT5pbWFnZSk7DQoJCQlzd2l0Y2goJHRoaXMtPnNpemVbMl0pIHsNCgkJCQljYXNlIDE6DQoJCQkJCWlmIChpbWFnZXR5cGVzKCkgJiBJTUdfR0lGKSB7JHRoaXMtPmltPWltYWdlY3JlYXRlZnJvbWdpZigkdGhpcy0+aW1hZ2UpO3JldHVybiB0cnVlO30gZWxzZSB7JHRoaXMtPmludmFsaWRpbWFnZSgnTm8gR0lGIHN1cHBvcnQnKTtyZXR1cm4gZmFsc2U7fQ0KCQkJCQlicmVhazsNCgkJCQljYXNlIDI6DQoJCQkJCWlmIChpbWFnZXR5cGVzKCkgJiBJTUdfSlBHKSB7JHRoaXMtPmltPWltYWdlY3JlYXRlZnJvbWpwZWcoJHRoaXMtPmltYWdlKTskdGhpcy0+S2VlcHRyYW5zcGFyZW5jeT1mYWxzZTtyZXR1cm4gdHJ1ZTt9IGVsc2UgeyR0aGlzLT5pbnZhbGlkaW1hZ2UoJ05vIEpQRyBzdXBwb3J0Jyk7cmV0dXJuIGZhbHNlO30NCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAzOg0KCQkJCQlpZiAoaW1hZ2V0eXBlcygpICYgSU1HX1BORykgeyR0aGlzLT5pbT1pbWFnZWNyZWF0ZWZyb21wbmcoJHRoaXMtPmltYWdlKTtyZXR1cm4gdHJ1ZTt9IGVsc2UgeyR0aGlzLT5pbnZhbGlkaW1hZ2UoJ05vIFBORyBzdXBwb3J0Jyk7cmV0dXJuIGZhbHNlO30NCgkJCQkJYnJlYWs7DQoJCQkJZGVmYXVsdDoNCgkJCQkJJHRoaXMtPmludmFsaWRpbWFnZSgnRmlsZXR5cGUgPz8/Pz8nKTsNCgkJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJJHRoaXMtPmludmFsaWRpbWFnZSgnRmlsZSBub3QgZm91bmQnKTsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KCQkJCQ0KCX0NCg0KCS8qKg0KCSAqIENyZWF0ZXMgZXJyb3IgaW1hZ2UNCgkgKg0KCSAqIEBwYXJhbSBzdHJpbmcgJG1lc3NhZ2UNCgkgKi8JDQoJcHJpdmF0ZSBmdW5jdGlvbiBpbnZhbGlkaW1hZ2UoJG1lc3NhZ2UpIHsNCgkNCgkJJHRoaXMtPnRodW1iPWltYWdlY3JlYXRlKDgwLDc1KTsNCgkJJGJsYWNrPWltYWdlY29sb3JhbGxvY2F0ZSgkdGhpcy0+dGh1bWIsMCwwLDApOyR5ZWxsb3c9aW1hZ2Vjb2xvcmFsbG9jYXRlKCR0aGlzLT50aHVtYiwyNTUsMjU1LDApOw0KCQlpbWFnZWZpbGxlZHJlY3RhbmdsZSgkdGhpcy0+dGh1bWIsMCwwLDgwLDc1LGltYWdlY29sb3JhbGxvY2F0ZSgkdGhpcy0+dGh1bWIsMjU1LDAsMCkpOw0KCQlpbWFnZXJlY3RhbmdsZSgkdGhpcy0+dGh1bWIsMCwwLDc5LDc0LCRibGFjayk7aW1hZ2VsaW5lKCR0aGlzLT50aHVtYiwwLDIwLDgwLDIwLCRibGFjayk7DQoJCWltYWdlZmlsbGVkcmVjdGFuZ2xlKCR0aGlzLT50aHVtYiwxLDEsNzgsMTksJHllbGxvdyk7aW1hZ2VmaWxsZWRyZWN0YW5nbGUoJHRoaXMtPnRodW1iLDI3LDM1LDUyLDYwLCR5ZWxsb3cpOw0KCQlpbWFnZXJlY3RhbmdsZSgkdGhpcy0+dGh1bWIsMjYsMzQsNTMsNjEsJGJsYWNrKTsNCgkJaW1hZ2VsaW5lKCR0aGlzLT50aHVtYiwyNywzNSw1Miw2MCwkYmxhY2spO2ltYWdlbGluZSgkdGhpcy0+dGh1bWIsNTIsMzUsMjcsNjAsJGJsYWNrKTsNCgkJaW1hZ2VzdHJpbmcoJHRoaXMtPnRodW1iLDEsNSw1LCRtZXNzYWdlLCRibGFjayk7DQoJCQ0KCX0JCQ0KDQoJLyoqDQoJICogQ3JlYXRlIGVtcHR5IHRodW1ibmFpbA0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gY3JlYXRlZW1wdHl0aHVtYm5haWwoKSB7DQoJDQoJCSR0aHVtYnNpemU9JHRoaXMtPlRodW1ic2l6ZTskdGh1bWJ3aWR0aD0kdGhpcy0+VGh1bWJ3aWR0aDskdGh1bWJoZWlnaHQ9JHRoaXMtPlRodW1iaGVpZ2h0Ow0KCQlpZiAoJHRodW1ic2l6ZT09MCkgeyR0aHVtYnNpemU9OTk5OTskdGh1bWJ3aWR0aD0wOyR0aHVtYmhlaWdodD0wO30NCgkJaWYgKCR0aGlzLT5QZXJjZW50YWdlKSB7DQoJCQlpZiAoJHRodW1id2lkdGg+MCkgeyR0aHVtYndpZHRoPWZsb29yKCgkdGh1bWJ3aWR0aC8xMDApKiR0aGlzLT5zaXplWzBdKTt9DQoJCQlpZiAoJHRodW1iaGVpZ2h0PjApIHskdGh1bWJoZWlnaHQ9Zmxvb3IoKCR0aHVtYmhlaWdodC8xMDApKiR0aGlzLT5zaXplWzFdKTt9DQoJCQlpZiAoJHRoaXMtPnNpemVbMF0+JHRoaXMtPnNpemVbMV0pDQoJCQkJJHRodW1ic2l6ZT1mbG9vcigoJHRodW1ic2l6ZS8xMDApKiR0aGlzLT5zaXplWzBdKTsNCgkJCWVsc2UNCgkJCQkkdGh1bWJzaXplPWZsb29yKCgkdGh1bWJzaXplLzEwMCkqJHRoaXMtPnNpemVbMV0pOw0KCQl9DQoJCWlmICghJHRoaXMtPkluZmxhdGUpIHsNCgkJCWlmICgkdGh1bWJzaXplPiR0aGlzLT5zaXplWzBdICYmICR0aHVtYnNpemU+JHRoaXMtPnNpemVbMV0pIHskdGh1bWJzaXplPW1heCgkdGhpcy0+c2l6ZVswXSwkdGhpcy0+c2l6ZVsxXSk7fQ0KCQkJaWYgKCR0aHVtYmhlaWdodD4kdGhpcy0+c2l6ZVsxXSkgeyR0aHVtYmhlaWdodD0kdGhpcy0+c2l6ZVsxXTt9DQoJCQlpZiAoJHRodW1id2lkdGg+JHRoaXMtPnNpemVbMF0pIHskdGh1bWJ3aWR0aD0kdGhpcy0+c2l6ZVswXTt9DQoJCX0NCgkJaWYgKCR0aGlzLT5CaW5kZXIpIHskdGhpcy0+ZnJhbWVfb2Zmc2V0PTM7JHRoaXMtPmJpbmRfb2Zmc2V0PTQ7fSBlbHNlIHskdGhpcy0+ZnJhbWVfb2Zmc2V0PTI7JHRoaXMtPmJpbmRfb2Zmc2V0PTA7fQ0KCQlpZiAoJHRoaXMtPlNoYWRvdykgeyR0aGlzLT5zaGFkb3dfb2Zmc2V0PTM7fSBlbHNlIHskdGhpcy0+c2hhZG93X29mZnNldD0wO30NCgkJaWYgKCR0aHVtYmhlaWdodD4wICYmICR0aHVtYndpZHRoPjApIHsNCgkJCSR0aGlzLT50aHVtYj1pbWFnZWNyZWF0ZXRydWVjb2xvcigkdGhpcy0+RnJhbWV3aWR0aCokdGhpcy0+ZnJhbWVfb2Zmc2V0KyR0aHVtYndpZHRoKyR0aGlzLT5zaGFkb3dfb2Zmc2V0LCR0aGlzLT5GcmFtZXdpZHRoKjIrJHRodW1iaGVpZ2h0KyR0aGlzLT5zaGFkb3dfb2Zmc2V0KTsJCQ0KCQl9IGVsc2UgaWYgKCR0aHVtYmhlaWdodD4wKSB7DQoJCQkkdGhpcy0+dGh1bWI9aW1hZ2VjcmVhdGV0cnVlY29sb3IoJHRoaXMtPkZyYW1ld2lkdGgqJHRoaXMtPmZyYW1lX29mZnNldCtjZWlsKCR0aGlzLT5zaXplWzBdLygkdGhpcy0+c2l6ZVsxXS8kdGh1bWJoZWlnaHQpKSskdGhpcy0+c2hhZG93X29mZnNldCwkdGhpcy0+RnJhbWV3aWR0aCoyKyR0aHVtYmhlaWdodCskdGhpcy0+c2hhZG93X29mZnNldCk7DQoJCX0gZWxzZSBpZiAoJHRodW1id2lkdGg+MCkgew0KCQkJJHRoaXMtPnRodW1iPWltYWdlY3JlYXRldHJ1ZWNvbG9yKCR0aGlzLT5GcmFtZXdpZHRoKiR0aGlzLT5mcmFtZV9vZmZzZXQrJHRodW1id2lkdGgrJHRoaXMtPnNoYWRvd19vZmZzZXQsJHRoaXMtPkZyYW1ld2lkdGgqMitjZWlsKCR0aGlzLT5zaXplWzFdLygkdGhpcy0+c2l6ZVswXS8kdGh1bWJ3aWR0aCkpKyR0aGlzLT5zaGFkb3dfb2Zmc2V0KTsNCgkJfSBlbHNlIHsNCgkJCSR4MT0kdGhpcy0+RnJhbWV3aWR0aCokdGhpcy0+ZnJhbWVfb2Zmc2V0KyR0aHVtYnNpemUrJHRoaXMtPnNoYWRvd19vZmZzZXQ7DQoJCQkkeDI9JHRoaXMtPkZyYW1ld2lkdGgqJHRoaXMtPmZyYW1lX29mZnNldCtjZWlsKCR0aGlzLT5zaXplWzBdLygkdGhpcy0+c2l6ZVsxXS8kdGh1bWJzaXplKSkrJHRoaXMtPnNoYWRvd19vZmZzZXQ7DQoJCQkkeTE9JHRoaXMtPkZyYW1ld2lkdGgqMitjZWlsKCR0aGlzLT5zaXplWzFdLygkdGhpcy0+c2l6ZVswXS8kdGh1bWJzaXplKSkrJHRoaXMtPnNoYWRvd19vZmZzZXQ7DQoJCQkkeTI9JHRoaXMtPkZyYW1ld2lkdGgqMiskdGh1bWJzaXplKyR0aGlzLT5zaGFkb3dfb2Zmc2V0Ow0KCQkJaWYgKCR0aGlzLT5zaXplWzBdPiR0aGlzLT5zaXplWzFdKSB7JHRoaXMtPnRodW1iPWltYWdlY3JlYXRldHJ1ZWNvbG9yKCR4MSwkeTEpO30gZWxzZSB7JHRoaXMtPnRodW1iPWltYWdlY3JlYXRldHJ1ZWNvbG9yKCR4MiwkeTIpO30NCgkJfQ0KCQkkdGhpcy0+dGh1bWJ4PWltYWdlc3goJHRoaXMtPnRodW1iKTskdGhpcy0+dGh1bWJ5PWltYWdlc3koJHRoaXMtPnRodW1iKTsNCgkJaWYgKCR0aGlzLT5LZWVwdHJhbnNwYXJlbmN5KSB7DQoJCQkkYWxwaGE9aW1hZ2Vjb2xvcnRyYW5zcGFyZW50KCR0aGlzLT5pbSk7DQoJCQlpZiAoJGFscGhhPj0wKSB7DQoJCQkJJGNvbG9yPWltYWdlY29sb3JzZm9yaW5kZXgoJHRoaXMtPmltLCRhbHBoYSk7DQoJCQkJJGNvbG9yX2luZGV4PWltYWdlY29sb3JhbGxvY2F0ZSgkdGhpcy0+dGh1bWIsJGNvbG9yWydyZWQnXSwkY29sb3JbJ2dyZWVuJ10sJGNvbG9yWydibHVlJ10pOw0KCQkJCWltYWdlZmlsbCgkdGhpcy0+dGh1bWIsMCwwLCRjb2xvcl9pbmRleCk7DQoJCQkJaW1hZ2Vjb2xvcnRyYW5zcGFyZW50KCR0aGlzLT50aHVtYiwkY29sb3JfaW5kZXgpOw0KCQkJfSBlbHNlIHsNCgkJCQlpbWFnZWFscGhhYmxlbmRpbmcoJHRoaXMtPnRodW1iLGZhbHNlKTsNCgkJCQkkY29sb3JfYWxwaGE9aW1hZ2Vjb2xvcmFsbG9jYXRlYWxwaGEoJHRoaXMtPmltLDAsMCwwLDEyNyk7DQoJCQkJaW1hZ2VmaWxsKCR0aGlzLT50aHVtYiwwLDAsJGNvbG9yX2FscGhhKTsNCgkJCQlpbWFnZXNhdmVhbHBoYSgkdGhpcy0+dGh1bWIsdHJ1ZSk7DQoJCQkJaW1hZ2VhbHBoYWJsZW5kaW5nKCR0aGlzLT50aHVtYix0cnVlKTsNCgkJCX0NCgkJfSBlbHNlIHsNCgkJCWltYWdlZmlsbGVkcmVjdGFuZ2xlKCR0aGlzLT50aHVtYiwwLDAsJHRoaXMtPnRodW1ieCwkdGhpcy0+dGh1bWJ5LGltYWdlY29sb3JhbGxvY2F0ZSgkdGhpcy0+dGh1bWIsaGV4ZGVjKHN1YnN0cigkdGhpcy0+QmFja2dyb3VuZGNvbG9yLDEsMikpLGhleGRlYyhzdWJzdHIoJHRoaXMtPkJhY2tncm91bmRjb2xvciwzLDIpKSxoZXhkZWMoc3Vic3RyKCR0aGlzLT5CYWNrZ3JvdW5kY29sb3IsNSwyKSkpKTsJCQkNCgkJCWlmICgkdGhpcy0+UG9sYXJvaWQpDQoJCQkJaW1hZ2VmaWxsZWRyZWN0YW5nbGUoJHRoaXMtPnRodW1iLCR0aGlzLT5iaW5kX29mZnNldCwwLCR0aGlzLT50aHVtYngtJHRoaXMtPnNoYWRvd19vZmZzZXQsJHRoaXMtPnRodW1ieS0kdGhpcy0+c2hhZG93X29mZnNldCxpbWFnZWNvbG9yYWxsb2NhdGUoJHRoaXMtPnRodW1iLGhleGRlYyhzdWJzdHIoJHRoaXMtPlBvbGFyb2lkZnJhbWVjb2xvciwxLDIpKSxoZXhkZWMoc3Vic3RyKCR0aGlzLT5Qb2xhcm9pZGZyYW1lY29sb3IsMywyKSksaGV4ZGVjKHN1YnN0cigkdGhpcy0+UG9sYXJvaWRmcmFtZWNvbG9yLDUsMikpKSk7DQoJCQllbHNlCQkJDQoJCQkJaW1hZ2VmaWxsZWRyZWN0YW5nbGUoJHRoaXMtPnRodW1iLCR0aGlzLT5iaW5kX29mZnNldCwwLCR0aGlzLT50aHVtYngtJHRoaXMtPnNoYWRvd19vZmZzZXQsJHRoaXMtPnRodW1ieS0kdGhpcy0+c2hhZG93X29mZnNldCxpbWFnZWNvbG9yYWxsb2NhdGUoJHRoaXMtPnRodW1iLGhleGRlYyhzdWJzdHIoJHRoaXMtPkZyYW1lY29sb3IsMSwyKSksaGV4ZGVjKHN1YnN0cigkdGhpcy0+RnJhbWVjb2xvciwzLDIpKSxoZXhkZWMoc3Vic3RyKCR0aGlzLT5GcmFtZWNvbG9yLDUsMikpKSk7DQoJCX0NCgkJDQoJfQ0KDQoJLyoqDQoJICogU2F2ZSB0aHVtYm5haWwgdG8gZmlsZQ0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gc2F2ZXRodW1iKCkgew0KCQ0KCQlpZiAoJHRoaXMtPlRodW1ic2F2ZWFzIT0nJykgew0KCQkJc3dpdGNoIChzdHJ0b2xvd2VyKCR0aGlzLT5UaHVtYnNhdmVhcykpIHsNCgkJCQljYXNlICJnaWYiOg0KCQkJCQkkdGhpcy0+aW1hZ2U9c3Vic3RyKCR0aGlzLT5pbWFnZSwwLHN0cnJwb3MoJHRoaXMtPmltYWdlLCcuJykpLiIuIi4kdGhpcy0+VGh1bWJzYXZlYXM7DQoJCQkJCSR0aGlzLT5zaXplWzJdPTE7DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgImpwZyI6DQoJCQkJCSR0aGlzLT5pbWFnZT1zdWJzdHIoJHRoaXMtPmltYWdlLDAsc3RycnBvcygkdGhpcy0+aW1hZ2UsJy4nKSkuIi4iLiR0aGlzLT5UaHVtYnNhdmVhczsNCgkJCQkJJHRoaXMtPnNpemVbMl09MjsNCgkJCQkJYnJlYWs7DQoJCQkJY2FzZSAianBlZyI6DQoJCQkJCSR0aGlzLT5pbWFnZT1zdWJzdHIoJHRoaXMtPmltYWdlLDAsc3RycnBvcygkdGhpcy0+aW1hZ2UsJy4nKSkuIi4iLiR0aGlzLT5UaHVtYnNhdmVhczsNCgkJCQkJJHRoaXMtPnNpemVbMl09MjsNCgkJCQkJYnJlYWs7CQkJDQoJCQkJY2FzZSAicG5nIjoNCgkJCQkJJHRoaXMtPmltYWdlPXN1YnN0cigkdGhpcy0+aW1hZ2UsMCxzdHJycG9zKCR0aGlzLT5pbWFnZSwnLicpKS4iLiIuJHRoaXMtPlRodW1ic2F2ZWFzOw0KCQkJCQkkdGhpcy0+c2l6ZVsyXT0zOw0KCQkJCQlicmVhazsNCgkJCX0NCgkJfQ0KCQlpZiAoJHRoaXMtPlRodW1iZmlsZW5hbWUhPScnKSB7DQoJCQkkdGhpcy0+aW1hZ2U9JHRoaXMtPlRodW1iZmlsZW5hbWU7DQoJCX0JCQ0KCQlzd2l0Y2goJHRoaXMtPnNpemVbMl0pIHsNCgkJCWNhc2UgMToNCgkJCQlpbWFnZWdpZigkdGhpcy0+dGh1bWIsJHRoaXMtPlRodW1ibG9jYXRpb24uJHRoaXMtPlRodW1icHJlZml4LmJhc2VuYW1lKCR0aGlzLT5pbWFnZSkpOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAyOg0KCQkJCWltYWdlanBlZygkdGhpcy0+dGh1bWIsJHRoaXMtPlRodW1ibG9jYXRpb24uJHRoaXMtPlRodW1icHJlZml4LmJhc2VuYW1lKCR0aGlzLT5pbWFnZSksJHRoaXMtPlF1YWxpdHkpOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAzOg0KCQkJCWltYWdlcG5nKCR0aGlzLT50aHVtYiwkdGhpcy0+VGh1bWJsb2NhdGlvbi4kdGhpcy0+VGh1bWJwcmVmaXguYmFzZW5hbWUoJHRoaXMtPmltYWdlKSk7DQoJCQkJYnJlYWs7DQoJCX0JCQ0KCQlpZiAoJHRoaXMtPkNobW9kbGV2ZWwhPScnKSB7Y2htb2QoJHRoaXMtPlRodW1ibG9jYXRpb24uJHRoaXMtPlRodW1icHJlZml4LmJhc2VuYW1lKCR0aGlzLT5pbWFnZSksb2N0ZGVjKCR0aGlzLT5DaG1vZGxldmVsKSk7fQ0KCQlpbWFnZWRlc3Ryb3koJHRoaXMtPmltKTsNCgkJaW1hZ2VkZXN0cm95KCR0aGlzLT50aHVtYik7DQoJCQ0KCX0NCg0KCS8qKg0KCSAqIERpc3BsYXkgdGh1bWJuYWlsIG9uIHNjcmVlbg0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gZGlzcGxheXRodW1iKCkgew0KCQkNCgkJc3dpdGNoKCR0aGlzLT5zaXplWzJdKSB7DQoJCQljYXNlIDE6DQoJCQkJaGVhZGVyKCJDb250ZW50LXR5cGU6IGltYWdlL2dpZiIpO2ltYWdlZ2lmKCR0aGlzLT50aHVtYik7DQoJCQkJYnJlYWs7DQoJCQljYXNlIDI6DQoJCQkJaGVhZGVyKCJDb250ZW50LXR5cGU6IGltYWdlL2pwZWciKTtpbWFnZWpwZWcoJHRoaXMtPnRodW1iLE5VTEwsJHRoaXMtPlF1YWxpdHkpOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAzOg0KCQkJCWhlYWRlcigiQ29udGVudC10eXBlOiBpbWFnZS9wbmciKTtpbWFnZXBuZygkdGhpcy0+dGh1bWIpOw0KCQkJCWJyZWFrOw0KCQl9DQoJCWltYWdlZGVzdHJveSgkdGhpcy0+aW0pOw0KCQlpbWFnZWRlc3Ryb3koJHRoaXMtPnRodW1iKTsNCgkJZXhpdDsNCgkJDQoJfQ0KCQ0KCS8qKiANCgkgKiBUaGUgZm9sbG93aW5nIGZ1bmN0aW9ucyBhcmUgb3B0aW9uYWwgZnVuY3Rpb25zLCB5b3UgY2FuIGRlbGV0ZSB0aGVtIHRvIGNyZWF0ZSB5b3VyIG93biBsaWdodHdlaWdodCBjbGFzcy4NCgkgKiBXaGVuIHlvdSBkZWxldGUgYSBmdW5jdGlvbiByZW1vdmUgYWxzbyB0aGUgcmVmZXJlbmNlIGluIHRodW1ibWFrZXIoKSBhbmQgb3B0aW9uYWxseSBpbiBfX2NvbnN0cnVjdCBhbmQgdGhlIHZhcmlhYmxlIGRlY2xhcmF0aW9uLg0KCSAqDQoJICovDQoNCgkvKioNCgkgKiBBZGQgd2F0ZXJtYXJrIHRvIGltYWdlDQoJICoNCgkgKi8JDQoJcHJpdmF0ZSBmdW5jdGlvbiBhZGRwbmd3YXRlcm1hcmsoKSB7DQoJDQoJCWlmIChmaWxlX2V4aXN0cygkdGhpcy0+V2F0ZXJtYXJrcG5nKSkgew0KCQkJJHRoaXMtPm5ld2ltYWdlPWltYWdlY3JlYXRlZnJvbXBuZygkdGhpcy0+V2F0ZXJtYXJrcG5nKTsNCgkJCSR3cG9zPWV4cGxvZGUoJyAnLHN0cl9yZXBsYWNlKCclJywnJywkdGhpcy0+V2F0ZXJtYXJrcG9zaXRpb24pKTsNCgkJCWltYWdlY29weW1lcmdlKCR0aGlzLT5pbSwkdGhpcy0+bmV3aW1hZ2UsbWluKG1heChpbWFnZXN4KCR0aGlzLT5pbSkqKCR3cG9zWzBdLzEwMCktMC41KmltYWdlc3goJHRoaXMtPm5ld2ltYWdlKSwwKSxpbWFnZXN4KCR0aGlzLT5pbSktaW1hZ2VzeCgkdGhpcy0+bmV3aW1hZ2UpKSxtaW4obWF4KGltYWdlc3koJHRoaXMtPmltKSooJHdwb3NbMV0vMTAwKS0wLjUqaW1hZ2VzeSgkdGhpcy0+bmV3aW1hZ2UpLDApLGltYWdlc3koJHRoaXMtPmltKS1pbWFnZXN5KCR0aGlzLT5uZXdpbWFnZSkpLDAsMCxpbWFnZXN4KCR0aGlzLT5uZXdpbWFnZSksaW1hZ2VzeSgkdGhpcy0+bmV3aW1hZ2UpLGludHZhbCgkdGhpcy0+V2F0ZXJtYXJrdHJhbnNwYXJlbmN5KSk7DQoJCQlpbWFnZWRlc3Ryb3koJHRoaXMtPm5ld2ltYWdlKTsNCgkJfQ0KCQkNCgl9DQoNCgkvKioNCgkgKiBEcm9wIHNoYWRvdyBvbiB0aHVtYm5haWwNCgkgKg0KCSAqLwkNCglwcml2YXRlIGZ1bmN0aW9uIGFkZHNoYWRvdygpIHsNCgkNCgkJJGdyYXk9aW1hZ2Vjb2xvcmFsbG9jYXRlKCR0aGlzLT50aHVtYiwxOTIsMTkyLDE5Mik7DQoJCSRtaWRkbGVncmF5PWltYWdlY29sb3JhbGxvY2F0ZSgkdGhpcy0+dGh1bWIsMTU4LDE1OCwxNTgpOw0KCQkkZGFya2dyYXk9aW1hZ2Vjb2xvcmFsbG9jYXRlKCR0aGlzLT50aHVtYiwxMjgsMTI4LDEyOCk7DQoJCWltYWdlcmVjdGFuZ2xlKCR0aGlzLT50aHVtYiwkdGhpcy0+YmluZF9vZmZzZXQsMCwkdGhpcy0+dGh1bWJ4LTQsJHRoaXMtPnRodW1ieS00LCRncmF5KTsNCgkJaW1hZ2VsaW5lKCR0aGlzLT50aHVtYiwkdGhpcy0+YmluZF9vZmZzZXQsJHRoaXMtPnRodW1ieS0zLCR0aGlzLT50aHVtYngsJHRoaXMtPnRodW1ieS0zLCRkYXJrZ3JheSk7DQoJCWltYWdlbGluZSgkdGhpcy0+dGh1bWIsJHRoaXMtPnRodW1ieC0zLDAsJHRoaXMtPnRodW1ieC0zLCR0aGlzLT50aHVtYnksJGRhcmtncmF5KTsNCgkJaW1hZ2VsaW5lKCR0aGlzLT50aHVtYiwkdGhpcy0+YmluZF9vZmZzZXQrMiwkdGhpcy0+dGh1bWJ5LTIsJHRoaXMtPnRodW1ieCwkdGhpcy0+dGh1bWJ5LTIsJG1pZGRsZWdyYXkpOw0KCQlpbWFnZWxpbmUoJHRoaXMtPnRodW1iLCR0aGlzLT50aHVtYngtMiwyLCR0aGlzLT50aHVtYngtMiwkdGhpcy0+dGh1bWJ5LCRtaWRkbGVncmF5KTsNCgkJaW1hZ2VsaW5lKCR0aGlzLT50aHVtYiwkdGhpcy0+YmluZF9vZmZzZXQrMiwkdGhpcy0+dGh1bWJ5LTEsJHRoaXMtPnRodW1ieCwkdGhpcy0+dGh1bWJ5LTEsJGdyYXkpOw0KCQlpbWFnZWxpbmUoJHRoaXMtPnRodW1iLCR0aGlzLT50aHVtYngtMSwyLCR0aGlzLT50aHVtYngtMSwkdGhpcy0+dGh1bWJ5LCRncmF5KTsNCgkJDQoJfQ0KDQoJLyoqDQoJICogQ2xpcCBjb3JuZXJzIG9yaWdpbmFsIGltYWdlDQoJICoNCgkgKi8JDQoJcHJpdmF0ZSBmdW5jdGlvbiBjbGlwY29ybmVyc3N0cmFpZ2h0KCkgew0KCQ0KCQkkY2xpcHNpemU9JHRoaXMtPkNsaXBjb3JuZXJbMV07DQoJCWlmICgkdGhpcy0+c2l6ZVswXT4kdGhpcy0+c2l6ZVsxXSkNCgkJCSRjbGlwc2l6ZT1mbG9vcigkdGhpcy0+c2l6ZVswXSooaW50dmFsKCRjbGlwc2l6ZSkvMTAwKSk7DQoJCWVsc2UNCgkJCSRjbGlwc2l6ZT1mbG9vcigkdGhpcy0+c2l6ZVsxXSooaW50dmFsKCRjbGlwc2l6ZSkvMTAwKSk7DQoJCWlmIChpbnR2YWwoJGNsaXBzaXplKT4wKSB7DQoJCQkkYmdjb2xvcj1pbWFnZWNvbG9yYWxsb2NhdGUoJHRoaXMtPmltLGhleGRlYyhzdWJzdHIoJHRoaXMtPkJhY2tncm91bmRjb2xvciwxLDIpKSxoZXhkZWMoc3Vic3RyKCR0aGlzLT5CYWNrZ3JvdW5kY29sb3IsMywyKSksaGV4ZGVjKHN1YnN0cigkdGhpcy0+QmFja2dyb3VuZGNvbG9yLDUsMikpKTsNCgkJCWlmICgkdGhpcy0+Q2xpcGNvcm5lclsyXSkgeyRyYW5kb20xPXJhbmQoMCwxKTskcmFuZG9tMj1yYW5kKDAsMSk7JHJhbmRvbTM9cmFuZCgwLDEpOyRyYW5kb200PXJhbmQoMCwxKTt9IGVsc2UgeyRyYW5kb20xPTE7JHJhbmRvbTI9MTskcmFuZG9tMz0xOyRyYW5kb200PTE7fQ0KCQkJZm9yICgkaT0wOyRpPCRjbGlwc2l6ZTskaSsrKSB7CQkJDQoJCQkJaWYgKCR0aGlzLT5DbGlwY29ybmVyWzNdICYmICRyYW5kb20xKSB7aW1hZ2VsaW5lKCR0aGlzLT5pbSwwLCRpLCRjbGlwc2l6ZS0kaSwkaSwkYmdjb2xvcik7fQ0KCQkJCWlmICgkdGhpcy0+Q2xpcGNvcm5lcls0XSAmJiAkcmFuZG9tMikge2ltYWdlbGluZSgkdGhpcy0+aW0sMCwkdGhpcy0+c2l6ZVsxXS0kaS0xLCRjbGlwc2l6ZS0kaSwkdGhpcy0+c2l6ZVsxXS0kaS0xLCRiZ2NvbG9yKTt9CQkJCQ0KCQkJCWlmICgkdGhpcy0+Q2xpcGNvcm5lcls1XSAmJiAkcmFuZG9tMykge2ltYWdlbGluZSgkdGhpcy0+aW0sJHRoaXMtPnNpemVbMF0tJGNsaXBzaXplKyRpLCRpLCR0aGlzLT5zaXplWzBdKyRjbGlwc2l6ZS0kaSwkaSwkYmdjb2xvcik7fQkJCQkNCgkJCQlpZiAoJHRoaXMtPkNsaXBjb3JuZXJbNl0gJiYgJHJhbmRvbTQpIHtpbWFnZWxpbmUoJHRoaXMtPmltLCR0aGlzLT5zaXplWzBdLSRjbGlwc2l6ZSskaSwkdGhpcy0+c2l6ZVsxXS0kaS0xLCR0aGlzLT5zaXplWzBdKyRjbGlwc2l6ZS0kaSwkdGhpcy0+c2l6ZVsxXS0kaS0xLCRiZ2NvbG9yKTt9DQoJCQl9DQoJCX0NCgkJDQoJfQ0KDQoJLyoqDQoJICogQ2xpcCByb3VuZCBjb3JuZXJzIG9yaWdpbmFsIGltYWdlDQoJICoNCgkgKi8JDQoJcHJpdmF0ZSBmdW5jdGlvbiBjbGlwY29ybmVyc3JvdW5kKCkgew0KCQ0KCQkkY2xpcHNpemU9Zmxvb3IoJHRoaXMtPnNpemVbMF0qKCR0aGlzLT5DbGlwY29ybmVyWzFdLzEwMCkpOw0KCQkkY2xpcF9kZWdyZWVzPTkwL21heCgkY2xpcHNpemUsMSk7DQoJCSRwb2ludHNfdGw9YXJyYXkoMCwwKTsNCgkJJHBvaW50c19icj1hcnJheSgkdGhpcy0+c2l6ZVswXSwkdGhpcy0+c2l6ZVsxXSk7DQoJCSRwb2ludHNfdHI9YXJyYXkoJHRoaXMtPnNpemVbMF0sMCk7DQoJCSRwb2ludHNfYmw9YXJyYXkoMCwkdGhpcy0+c2l6ZVsxXSk7DQoJCSRiZ2NvbG9yPWltYWdlY29sb3JhbGxvY2F0ZSgkdGhpcy0+aW0saGV4ZGVjKHN1YnN0cigkdGhpcy0+QmFja2dyb3VuZGNvbG9yLDEsMikpLGhleGRlYyhzdWJzdHIoJHRoaXMtPkJhY2tncm91bmRjb2xvciwzLDIpKSxoZXhkZWMoc3Vic3RyKCR0aGlzLT5CYWNrZ3JvdW5kY29sb3IsNSwyKSkpOw0KCQlmb3IgKCRpPTA7JGk8JGNsaXBzaXplOyRpKyspIHsNCgkJCSR4PSRjbGlwc2l6ZSpjb3MoZGVnMnJhZCgkaSokY2xpcF9kZWdyZWVzKSk7DQoJCQkkeT0kY2xpcHNpemUqc2luKGRlZzJyYWQoJGkqJGNsaXBfZGVncmVlcykpOw0KCQkJYXJyYXlfcHVzaCgkcG9pbnRzX3RsLCRjbGlwc2l6ZS0keCk7DQoJCQlhcnJheV9wdXNoKCRwb2ludHNfdGwsJGNsaXBzaXplLSR5KTsNCgkJCWFycmF5X3B1c2goJHBvaW50c190ciwkdGhpcy0+c2l6ZVswXS0kY2xpcHNpemUrJHgpOw0KCQkJYXJyYXlfcHVzaCgkcG9pbnRzX3RyLCRjbGlwc2l6ZS0keSk7DQoJCQlhcnJheV9wdXNoKCRwb2ludHNfYnIsJHRoaXMtPnNpemVbMF0tJGNsaXBzaXplKyR4KTsNCgkJCWFycmF5X3B1c2goJHBvaW50c19iciwkdGhpcy0+c2l6ZVsxXS0kY2xpcHNpemUrJHkpOw0KCQkJYXJyYXlfcHVzaCgkcG9pbnRzX2JsLCRjbGlwc2l6ZS0keCk7DQoJCQlhcnJheV9wdXNoKCRwb2ludHNfYmwsJHRoaXMtPnNpemVbMV0tJGNsaXBzaXplKyR5KTsNCgkJfQ0KCQlhcnJheV9wdXNoKCRwb2ludHNfdGwsJGNsaXBzaXplLDApOw0KCQlhcnJheV9wdXNoKCRwb2ludHNfYnIsJHRoaXMtPnNpemVbMF0tJGNsaXBzaXplLCR0aGlzLT5zaXplWzFdKTsNCgkJYXJyYXlfcHVzaCgkcG9pbnRzX3RyLCR0aGlzLT5zaXplWzBdLSRjbGlwc2l6ZSwwKTsNCgkJYXJyYXlfcHVzaCgkcG9pbnRzX2JsLCRjbGlwc2l6ZSwkdGhpcy0+c2l6ZVsxXSk7DQoJCWlmICgkdGhpcy0+Q2xpcGNvcm5lclsyXSkgeyRyYW5kb20xPXJhbmQoMCwxKTskcmFuZG9tMj1yYW5kKDAsMSk7JHJhbmRvbTM9cmFuZCgwLDEpOyRyYW5kb200PXJhbmQoMCwxKTt9IGVsc2UgeyRyYW5kb20xPTE7JHJhbmRvbTI9MTskcmFuZG9tMz0xOyRyYW5kb200PTE7fQ0KCQlpZiAoJHRoaXMtPkNsaXBjb3JuZXJbM10gJiYgJHJhbmRvbTEpIHtpbWFnZWZpbGxlZHBvbHlnb24oJHRoaXMtPmltLCRwb2ludHNfdGwsY291bnQoJHBvaW50c190bCkvMiwkYmdjb2xvcik7fQ0KCQlpZiAoJHRoaXMtPkNsaXBjb3JuZXJbNF0gJiYgJHJhbmRvbTIpIHtpbWFnZWZpbGxlZHBvbHlnb24oJHRoaXMtPmltLCRwb2ludHNfYmwsY291bnQoJHBvaW50c19ibCkvMiwkYmdjb2xvcik7fQkJDQoJCWlmICgkdGhpcy0+Q2xpcGNvcm5lcls1XSAmJiAkcmFuZG9tMykge2ltYWdlZmlsbGVkcG9seWdvbigkdGhpcy0+aW0sJHBvaW50c190cixjb3VudCgkcG9pbnRzX3RyKS8yLCRiZ2NvbG9yKTt9CQkNCgkJaWYgKCR0aGlzLT5DbGlwY29ybmVyWzZdICYmICRyYW5kb200KSB7aW1hZ2VmaWxsZWRwb2x5Z29uKCR0aGlzLT5pbSwkcG9pbnRzX2JyLGNvdW50KCRwb2ludHNfYnIpLzIsJGJnY29sb3IpO30NCg0KCX0NCg0KCS8qKg0KCSAqIENvbnZlcnQgb3JpZ2luYWwgaW1hZ2UgdG8gZ3JleXNjYWxlIGFuZC9vciBhcHBseSBub2lzZSBhbmQgc2VwaGlhIGVmZmVjdA0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gYWdlaW1hZ2UoKSB7DQoJDQoJCWltYWdldHJ1ZWNvbG9ydG9wYWxldHRlKCR0aGlzLT5pbSwxLDI1Nik7DQoJCWZvciAoJGM9MDskYzwyNTY7JGMrKykgeyAgICANCgkJCSRjb2w9aW1hZ2Vjb2xvcnNmb3JpbmRleCgkdGhpcy0+aW0sJGMpOw0KCQkJJG5ld19jb2w9Zmxvb3IoJGNvbFsncmVkJ10qMC4yMTI1KyRjb2xbJ2dyZWVuJ10qMC43MTU0KyRjb2xbJ2JsdWUnXSowLjA3MjEpOw0KCQkJJG5vaXNlPXJhbmQoLSR0aGlzLT5BZ2VpbWFnZVsxXSwkdGhpcy0+QWdlaW1hZ2VbMV0pOw0KCQkJaWYgKCR0aGlzLT5BZ2VpbWFnZVsyXT4wKSB7DQoJCQkJJHI9JG5ld19jb2wrJHRoaXMtPkFnZWltYWdlWzJdKyRub2lzZTsNCgkJCQkkZz1mbG9vcigkbmV3X2NvbCskdGhpcy0+QWdlaW1hZ2VbMl0vMS44Niskbm9pc2UpOw0KCQkJCSRiPWZsb29yKCRuZXdfY29sKyR0aGlzLT5BZ2VpbWFnZVsyXS8tMy40OCskbm9pc2UpOw0KCQkJfSBlbHNlIHsNCgkJCQkkcj0kbmV3X2NvbCskbm9pc2U7DQoJCQkJJGc9JG5ld19jb2wrJG5vaXNlOw0KCQkJCSRiPSRuZXdfY29sKyRub2lzZTsNCgkJCX0NCgkJCWltYWdlY29sb3JzZXQoJHRoaXMtPmltLCRjLG1heCgwLG1pbigyNTUsJHIpKSxtYXgoMCxtaW4oMjU1LCRnKSksbWF4KDAsbWluKDI1NSwkYikpKTsNCgkJfQ0KCQkNCgl9DQoNCgkvKioNCgkgKiBBZGQgYm9yZGVyIHRvIHRodW1ibmFpbA0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gYWRkcG5nYm9yZGVyKCkgew0KCQ0KCQlpZiAoZmlsZV9leGlzdHMoJHRoaXMtPkJvcmRlcnBuZykpIHsNCgkJCSRib3JkZXJpbT1pbWFnZWNyZWF0ZWZyb21wbmcoJHRoaXMtPkJvcmRlcnBuZyk7DQoJCQlpbWFnZWNvcHlyZXNhbXBsZWQoJHRoaXMtPnRodW1iLCRib3JkZXJpbSwkdGhpcy0+YmluZF9vZmZzZXQsMCwwLDAsJHRoaXMtPnRodW1ieC0kdGhpcy0+c2hhZG93X29mZnNldC0kdGhpcy0+YmluZF9vZmZzZXQsJHRoaXMtPnRodW1ieS0kdGhpcy0+c2hhZG93X29mZnNldCxpbWFnZXN4KCRib3JkZXJpbSksaW1hZ2VzeSgkYm9yZGVyaW0pKTsNCgkJCWltYWdlZGVzdHJveSgkYm9yZGVyaW0pOw0KCQl9DQoJCQ0KCX0NCg0KCS8qKg0KCSAqIEFkZCBiaW5kZXIgZWZmZWN0IHRvIHRodW1ibmFpbA0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gYWRkYmluZGVyKCkgew0KCQ0KCQlpZiAoaW50dmFsKCR0aGlzLT5CaW5kZXJzcGFjaW5nKTw0KSB7JHRoaXMtPkJpbmRlcnNwYWNpbmc9NDt9DQoJCSRzcGFjaW5nPWZsb29yKCR0aGlzLT50aHVtYnkvJHRoaXMtPkJpbmRlcnNwYWNpbmcpLTI7DQoJCSRvZmZzZXQ9Zmxvb3IoKCR0aGlzLT50aHVtYnktKCRzcGFjaW5nKiR0aGlzLT5CaW5kZXJzcGFjaW5nKSkvMik7DQoJCSRncmF5PWltYWdlY29sb3JhbGxvY2F0ZSgkdGhpcy0+dGh1bWIsMTkyLDE5MiwxOTIpOw0KCQkkbWlkZGxlZ3JheT1pbWFnZWNvbG9yYWxsb2NhdGUoJHRoaXMtPnRodW1iLDE1OCwxNTgsMTU4KTsNCgkJJGRhcmtncmF5PWltYWdlY29sb3JhbGxvY2F0ZSgkdGhpcy0+dGh1bWIsMTI4LDEyOCwxMjgpOwkJDQoJCSRibGFjaz1pbWFnZWNvbG9yYWxsb2NhdGUoJHRoaXMtPnRodW1iLDAsMCwwKTsJDQoJCSR3aGl0ZT1pbWFnZWNvbG9yYWxsb2NhdGUoJHRoaXMtPnRodW1iLDI1NSwyNTUsMjU1KTsJCQ0KCQlmb3IgKCRpPSRvZmZzZXQ7JGk8PSRvZmZzZXQrJHNwYWNpbmcqJHRoaXMtPkJpbmRlcnNwYWNpbmc7JGkrPSR0aGlzLT5CaW5kZXJzcGFjaW5nKSB7DQoJCQlpbWFnZWZpbGxlZHJlY3RhbmdsZSgkdGhpcy0+dGh1bWIsOCwkaS0yLDEwLCRpKzIsJGJsYWNrKTsNCgkJCWltYWdlbGluZSgkdGhpcy0+dGh1bWIsMTEsJGktMSwxMSwkaSsxLCRkYXJrZ3JheSk7DQoJCQlpbWFnZWxpbmUoJHRoaXMtPnRodW1iLDgsJGktMiwxMCwkaS0yLCRkYXJrZ3JheSk7DQoJCQlpbWFnZWxpbmUoJHRoaXMtPnRodW1iLDgsJGkrMiwxMCwkaSsyLCRkYXJrZ3JheSk7DQoJCQlpbWFnZWZpbGxlZHJlY3RhbmdsZSgkdGhpcy0+dGh1bWIsMCwkaS0xLDgsJGkrMSwkZ3JheSk7DQoJCQlpbWFnZWxpbmUoJHRoaXMtPnRodW1iLDAsJGksOCwkaSwkd2hpdGUpOw0KCQkJaW1hZ2VsaW5lKCR0aGlzLT50aHVtYiwwLCRpLTEsMCwkaSsxLCRncmF5KTsNCgkJCWltYWdlc2V0cGl4ZWwoJHRoaXMtPnRodW1iLDAsJGksJGRhcmtncmF5KTsNCgkJfQ0KCQkNCgl9DQoNCgkvKioNCgkgKiBBZGQgQ29weXJpZ2h0IHRleHQgdG8gdGh1bWJuYWlsDQoJICoNCgkgKi8JDQoJcHJpdmF0ZSBmdW5jdGlvbiBhZGRjb3B5cmlnaHQoKSB7DQoNCgkJaWYgKCR0aGlzLT5Db3B5cmlnaHRmb250dHlwZT09JycpIHsNCgkJCSR3aWR0aHg9aW1hZ2Vmb250d2lkdGgoJHRoaXMtPkNvcHlyaWdodGZvbnRzaXplKSpzdHJsZW4oJHRoaXMtPkNvcHlyaWdodHRleHQpOw0KCQkJJGhlaWdodHk9aW1hZ2Vmb250aGVpZ2h0KCR0aGlzLT5Db3B5cmlnaHRmb250c2l6ZSk7DQoJCQkkZm9udHdpZHRoPWltYWdlZm9udHdpZHRoKCR0aGlzLT5Db3B5cmlnaHRmb250c2l6ZSk7DQoJCX0gZWxzZSB7CQkNCgkJCSRkaW1lbnNpb25zPWltYWdldHRmYmJveCgkdGhpcy0+Q29weXJpZ2h0Zm9udHNpemUsMCwkdGhpcy0+Q29weXJpZ2h0Zm9udHR5cGUsJHRoaXMtPkNvcHlyaWdodHRleHQpOw0KCQkJJHdpZHRoeD0kZGltZW5zaW9uc1syXTskaGVpZ2h0eT0kZGltZW5zaW9uc1s1XTsNCgkJCSRkaW1lbnNpb25zPWltYWdldHRmYmJveCgkdGhpcy0+Q29weXJpZ2h0Zm9udHNpemUsMCwkdGhpcy0+Q29weXJpZ2h0Zm9udHR5cGUsJ1cnKTsNCgkJCSRmb250d2lkdGg9JGRpbWVuc2lvbnNbMl07DQoJCX0NCgkJJGNwb3M9ZXhwbG9kZSgnICcsc3RyX3JlcGxhY2UoJyUnLCcnLCR0aGlzLT5Db3B5cmlnaHRwb3NpdGlvbikpOw0KCQlpZiAoY291bnQoJGNwb3MpPjEpIHsNCgkJCSRjcG9zeD1mbG9vcihtaW4obWF4KCR0aGlzLT50aHVtYngqKCRjcG9zWzBdLzEwMCktMC41KiR3aWR0aHgsJGZvbnR3aWR0aCksJHRoaXMtPnRodW1ieC0kd2lkdGh4LTAuNSokZm9udHdpZHRoKSk7DQoJCQkkY3Bvc3k9Zmxvb3IobWluKG1heCgkdGhpcy0+dGh1bWJ5KigkY3Bvc1sxXS8xMDApLTAuNSokaGVpZ2h0eSwkaGVpZ2h0eSksJHRoaXMtPnRodW1ieS0kaGVpZ2h0eSoxLjUpKTsNCgkJfSBlbHNlIHsNCgkJCSRjcG9zeD0kZm9udHdpZHRoOw0KCQkJJGNwb3N5PSR0aGlzLT50aHVtYnktMTA7DQoJCX0JCQkNCgkJaWYgKCR0aGlzLT5Db3B5cmlnaHR0ZXh0Y29sb3I9PScnKSB7DQoJCQkkY29sb3JzPWFycmF5KCk7DQoJCQlmb3IgKCRpPSRjcG9zeDskaTwoJGNwb3N4KyR3aWR0aHgpOyRpKyspIHsNCgkJCQkkaW5kZXhpcz1JbWFnZUNvbG9yQXQoJHRoaXMtPnRodW1iLCRpLCRjcG9zeSswLjUqJGhlaWdodHkpOw0KCQkJCSRyZ2JhcnJheT1JbWFnZUNvbG9yc0ZvckluZGV4KCR0aGlzLT50aHVtYiwkaW5kZXhpcyk7DQoJCQkJYXJyYXlfcHVzaCgkY29sb3JzLCRyZ2JhcnJheVsncmVkJ10sJHJnYmFycmF5WydncmVlbiddLCRyZ2JhcnJheVsnYmx1ZSddKTsNCgkJCX0NCgkJCWlmIChhcnJheV9zdW0oJGNvbG9ycykvY291bnQoJGNvbG9ycyk+MTgwKSB7DQoJCQkJaWYgKCR0aGlzLT5Db3B5cmlnaHRmb250dHlwZT09JycpDQoJCQkJCWltYWdlc3RyaW5nKCR0aGlzLT50aHVtYiwkdGhpcy0+Q29weXJpZ2h0Zm9udHNpemUsJGNwb3N4LCRjcG9zeSwkdGhpcy0+Q29weXJpZ2h0dGV4dCxpbWFnZWNvbG9yYWxsb2NhdGUoJHRoaXMtPnRodW1iLDAsMCwwKSk7DQoJCQkJZWxzZQ0KCQkJCQlpbWFnZXR0ZnRleHQoJHRoaXMtPnRodW1iLCR0aGlzLT5Db3B5cmlnaHRmb250c2l6ZSwwLCRjcG9zeCwkY3Bvc3ksaW1hZ2Vjb2xvcmFsbG9jYXRlKCR0aGlzLT50aHVtYiwwLDAsMCksJHRoaXMtPkNvcHlyaWdodGZvbnR0eXBlLCR0aGlzLT5Db3B5cmlnaHR0ZXh0KTsNCgkJCX0gZWxzZSB7DQoJCQkJaWYgKCR0aGlzLT5Db3B5cmlnaHRmb250dHlwZT09JycpDQoJCQkJCWltYWdlc3RyaW5nKCR0aGlzLT50aHVtYiwkdGhpcy0+Q29weXJpZ2h0Zm9udHNpemUsJGNwb3N4LCRjcG9zeSwkdGhpcy0+Q29weXJpZ2h0dGV4dCxpbWFnZWNvbG9yYWxsb2NhdGUoJHRoaXMtPnRodW1iLDI1NSwyNTUsMjU1KSk7DQoJCQkJZWxzZQ0KCQkJCQlpbWFnZXR0ZnRleHQoJHRoaXMtPnRodW1iLCR0aGlzLT5Db3B5cmlnaHRmb250c2l6ZSwwLCRjcG9zeCwkY3Bvc3ksaW1hZ2Vjb2xvcmFsbG9jYXRlKCR0aGlzLT50aHVtYiwyNTUsMjU1LDI1NSksJHRoaXMtPkNvcHlyaWdodGZvbnR0eXBlLCR0aGlzLT5Db3B5cmlnaHR0ZXh0KTsJCQkJDQoJCQl9DQoJCX0gZWxzZSB7DQoJCQlpZiAoJHRoaXMtPkNvcHlyaWdodGZvbnR0eXBlPT0nJykNCgkJCQlpbWFnZXN0cmluZygkdGhpcy0+dGh1bWIsJHRoaXMtPkNvcHlyaWdodGZvbnRzaXplLCRjcG9zeCwkY3Bvc3ksJHRoaXMtPkNvcHlyaWdodHRleHQsaW1hZ2Vjb2xvcmFsbG9jYXRlKCR0aGlzLT50aHVtYixoZXhkZWMoc3Vic3RyKCR0aGlzLT5Db3B5cmlnaHR0ZXh0Y29sb3IsMSwyKSksaGV4ZGVjKHN1YnN0cigkdGhpcy0+Q29weXJpZ2h0dGV4dGNvbG9yLDMsMikpLGhleGRlYyhzdWJzdHIoJHRoaXMtPkNvcHlyaWdodHRleHRjb2xvciw1LDIpKSkpOw0KCQkJZWxzZQ0KCQkJCWltYWdldHRmdGV4dCgkdGhpcy0+dGh1bWIsJHRoaXMtPkNvcHlyaWdodGZvbnRzaXplLDAsJGNwb3N4LCRjcG9zeSxpbWFnZWNvbG9yYWxsb2NhdGUoJHRoaXMtPnRodW1iLGhleGRlYyhzdWJzdHIoJHRoaXMtPkNvcHlyaWdodHRleHRjb2xvciwxLDIpKSxoZXhkZWMoc3Vic3RyKCR0aGlzLT5Db3B5cmlnaHR0ZXh0Y29sb3IsMywyKSksaGV4ZGVjKHN1YnN0cigkdGhpcy0+Q29weXJpZ2h0dGV4dGNvbG9yLDUsMikpKSwkdGhpcy0+Q29weXJpZ2h0Zm9udHR5cGUsJHRoaXMtPkNvcHlyaWdodHRleHQpOwkJCQkNCgkJfQ0KCQkNCgl9DQoNCgkvKioNCgkgKiBBZGQgdGV4dCB0byBpbWFnZQ0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gYWRkdGV4dCgpIHsNCg0KCQlpZiAoJHRoaXMtPkFkZHRleHRbM109PScnKSB7DQoJCQkkd2lkdGh4PWltYWdlZm9udHdpZHRoKCR0aGlzLT5BZGR0ZXh0WzRdKSpzdHJsZW4oJHRoaXMtPkFkZHRleHRbMV0pOw0KCQkJJGhlaWdodHk9aW1hZ2Vmb250aGVpZ2h0KCR0aGlzLT5BZGR0ZXh0WzRdKTsNCgkJCSRmb250d2lkdGg9aW1hZ2Vmb250d2lkdGgoJHRoaXMtPkFkZHRleHRbNF0pOw0KCQl9IGVsc2UgewkJDQoJCQkkZGltZW5zaW9ucz1pbWFnZXR0ZmJib3goJHRoaXMtPkFkZHRleHRbNF0sMCwkdGhpcy0+QWRkdGV4dFszXSwkdGhpcy0+QWRkdGV4dFsxXSk7DQoJCQkkd2lkdGh4PSRkaW1lbnNpb25zWzJdOyRoZWlnaHR5PSRkaW1lbnNpb25zWzVdOw0KCQkJJGRpbWVuc2lvbnM9aW1hZ2V0dGZiYm94KCR0aGlzLT5BZGR0ZXh0WzRdLDAsJHRoaXMtPkFkZHRleHRbM10sJ1cnKTsNCgkJCSRmb250d2lkdGg9JGRpbWVuc2lvbnNbMl07DQoJCX0NCgkJJGNwb3M9ZXhwbG9kZSgnICcsc3RyX3JlcGxhY2UoJyUnLCcnLCR0aGlzLT5BZGR0ZXh0WzJdKSk7DQoJCWlmIChjb3VudCgkY3Bvcyk+MSkgew0KCQkJJGNwb3N4PWZsb29yKG1pbihtYXgoJHRoaXMtPnNpemVbMF0qKCRjcG9zWzBdLzEwMCktMC41KiR3aWR0aHgsJGZvbnR3aWR0aCksJHRoaXMtPnNpemVbMF0tJHdpZHRoeC0wLjUqJGZvbnR3aWR0aCkpOw0KCQkJJGNwb3N5PWZsb29yKG1pbihtYXgoJHRoaXMtPnNpemVbMV0qKCRjcG9zWzFdLzEwMCktMC41KiRoZWlnaHR5LCRoZWlnaHR5KSwkdGhpcy0+c2l6ZVsxXS0kaGVpZ2h0eSoxLjUpKTsNCgkJfSBlbHNlIHsNCgkJCSRjcG9zeD0kZm9udHdpZHRoOw0KCQkJJGNwb3N5PSR0aGlzLT5zaXplWzFdLTEwOw0KCQl9CQkJDQoJCWlmICgkdGhpcy0+QWRkdGV4dFszXT09JycpDQoJCQlpbWFnZXN0cmluZygkdGhpcy0+aW0sJHRoaXMtPkFkZHRleHRbNF0sJGNwb3N4LCRjcG9zeSwkdGhpcy0+QWRkdGV4dFsxXSxpbWFnZWNvbG9yYWxsb2NhdGUoJHRoaXMtPmltLGhleGRlYyhzdWJzdHIoJHRoaXMtPkFkZHRleHRbNV0sMSwyKSksaGV4ZGVjKHN1YnN0cigkdGhpcy0+QWRkdGV4dFs1XSwzLDIpKSxoZXhkZWMoc3Vic3RyKCR0aGlzLT5BZGR0ZXh0WzVdLDUsMikpKSk7DQoJCWVsc2UNCgkJCWltYWdldHRmdGV4dCgkdGhpcy0+aW0sJHRoaXMtPkFkZHRleHRbNF0sMCwkY3Bvc3gsJGNwb3N5LGltYWdlY29sb3JhbGxvY2F0ZSgkdGhpcy0+aW0saGV4ZGVjKHN1YnN0cigkdGhpcy0+QWRkdGV4dFs1XSwxLDIpKSxoZXhkZWMoc3Vic3RyKCR0aGlzLT5BZGR0ZXh0WzVdLDMsMikpLGhleGRlYyhzdWJzdHIoJHRoaXMtPkFkZHRleHRbNV0sNSwyKSkpLCR0aGlzLT5BZGR0ZXh0WzNdLCR0aGlzLT5BZGR0ZXh0WzFdKTsNCgkJDQoJfQ0KDQoJLyoqDQoJICogUm90YXRlIHRoZSBpbWFnZSBhdCBhbnkgYW5nbGUNCgkgKiBJbWFnZSBpcyBub3Qgc2NhbGVkIGRvd24NCgkgKg0KCSAqLwkNCglwcml2YXRlIGZ1bmN0aW9uIGZyZWVyb3RhdGUoKSB7DQoJDQoJCSRhbmdsZT0kdGhpcy0+Um90YXRlOw0KCQlpZiAoJGFuZ2xlPD4wKSB7DQoJCQkkY2VudGVyeD1mbG9vcigkdGhpcy0+c2l6ZVswXS8yKTsNCgkJCSRjZW50ZXJ5PWZsb29yKCR0aGlzLT5zaXplWzFdLzIpOw0KCQkJJG1heHNpemV4PWNlaWwoYWJzKGNvcyhkZWcycmFkKCRhbmdsZSkpKiR0aGlzLT5zaXplWzBdKSthYnMoc2luKGRlZzJyYWQoJGFuZ2xlKSkqJHRoaXMtPnNpemVbMV0pKTsNCgkJCSRtYXhzaXpleT1jZWlsKGFicyhzaW4oZGVnMnJhZCgkYW5nbGUpKSokdGhpcy0+c2l6ZVswXSkrYWJzKGNvcyhkZWcycmFkKCRhbmdsZSkpKiR0aGlzLT5zaXplWzFdKSk7DQoJCQlpZiAoJG1heHNpemV4ICYgMSkgeyRtYXhzaXpleCs9Mzt9IGVsc2UJeyRtYXhzaXpleCs9Mjt9DQoJCQlpZiAoJG1heHNpemV5ICYgMSkgeyRtYXhzaXpleSs9Mzt9IGVsc2UgeyRtYXhzaXpleSs9Mjt9DQoJCQkkdGhpcy0+bmV3aW1hZ2U9aW1hZ2VjcmVhdGV0cnVlY29sb3IoJG1heHNpemV4LCRtYXhzaXpleSk7DQoJCQlpbWFnZWZpbGxlZHJlY3RhbmdsZSgkdGhpcy0+bmV3aW1hZ2UsMCwwLCRtYXhzaXpleCwkbWF4c2l6ZXksaW1hZ2Vjb2xvcmFsbG9jYXRlKCR0aGlzLT5uZXdpbWFnZSxoZXhkZWMoc3Vic3RyKCR0aGlzLT5CYWNrZ3JvdW5kY29sb3IsMSwyKSksaGV4ZGVjKHN1YnN0cigkdGhpcy0+QmFja2dyb3VuZGNvbG9yLDMsMikpLGhleGRlYyhzdWJzdHIoJHRoaXMtPkJhY2tncm91bmRjb2xvciw1LDIpKSkpOwkJCQ0KCQkJJG5ld2NlbnRlcng9aW1hZ2VzeCgkdGhpcy0+bmV3aW1hZ2UpLzI7DQoJCQkkbmV3Y2VudGVyeT1pbWFnZXN5KCR0aGlzLT5uZXdpbWFnZSkvMjsNCgkJCSRhbmdsZSs9MTgwOw0KCQkJZm9yICgkcHg9MDskcHg8aW1hZ2VzeCgkdGhpcy0+bmV3aW1hZ2UpOyRweCsrKSB7DQoJCQkJZm9yICgkcHk9MDskcHk8aW1hZ2VzeSgkdGhpcy0+bmV3aW1hZ2UpOyRweSsrKSB7DQoJCQkJCSR2ZWN0b3J4PWZsb29yKCgkbmV3Y2VudGVyeC0kcHgpKmNvcyhkZWcycmFkKCRhbmdsZSkpKygkbmV3Y2VudGVyeS0kcHkpKnNpbihkZWcycmFkKCRhbmdsZSkpKTsNCgkJCQkJJHZlY3Rvcnk9Zmxvb3IoKCRuZXdjZW50ZXJ5LSRweSkqY29zKGRlZzJyYWQoJGFuZ2xlKSktKCRuZXdjZW50ZXJ4LSRweCkqc2luKGRlZzJyYWQoJGFuZ2xlKSkpOw0KCQkJCQlpZiAoKCRjZW50ZXJ4KyR2ZWN0b3J4KT4tMSAmJiAoJGNlbnRlcngrJHZlY3RvcngpPCgkY2VudGVyeCoyKSAmJiAoJGNlbnRlcnkrJHZlY3RvcnkpPi0xICYmICgkY2VudGVyeSskdmVjdG9yeSk8KCRjZW50ZXJ5KjIpKQ0KCQkJCQkgICAgaW1hZ2Vjb3B5KCR0aGlzLT5uZXdpbWFnZSwkdGhpcy0+aW0sJHB4LCRweSwkY2VudGVyeCskdmVjdG9yeCwkY2VudGVyeSskdmVjdG9yeSwxLDEpOw0KCQkJCX0NCgkJCX0NCgkJCWltYWdlZGVzdHJveSgkdGhpcy0+aW0pOw0KCQkJJHRoaXMtPmltPWltYWdlY3JlYXRldHJ1ZWNvbG9yKGltYWdlc3goJHRoaXMtPm5ld2ltYWdlKSxpbWFnZXN5KCR0aGlzLT5uZXdpbWFnZSkpOw0KCQkJaW1hZ2Vjb3B5KCR0aGlzLT5pbSwkdGhpcy0+bmV3aW1hZ2UsMCwwLDAsMCxpbWFnZXN4KCR0aGlzLT5uZXdpbWFnZSksaW1hZ2VzeSgkdGhpcy0+bmV3aW1hZ2UpKTsNCgkJCWltYWdlZGVzdHJveSgkdGhpcy0+bmV3aW1hZ2UpOw0KCQkJJHRoaXMtPnNpemVbMF09aW1hZ2VzeCgkdGhpcy0+aW0pOw0KCQkJJHRoaXMtPnNpemVbMV09aW1hZ2VzeSgkdGhpcy0+aW0pOw0KCQl9DQoJCQ0KCX0JDQoNCgkvKioNCgkgKiBSb3RhdGUgdGhlIGltYWdlIGF0IGFueSBhbmdsZQ0KCSAqIEltYWdlIGlzIHNjYWxlZCBkb3duDQoJICoNCgkgKi8JDQoJcHJpdmF0ZSBmdW5jdGlvbiBjcm9wcm90YXRlKCkgew0KCQ0KCQkkdGhpcy0+aW09aW1hZ2Vyb3RhdGUoJHRoaXMtPmltLC0kdGhpcy0+Um90YXRlLGltYWdlY29sb3JhbGxvY2F0ZSgkdGhpcy0+aW0saGV4ZGVjKHN1YnN0cigkdGhpcy0+QmFja2dyb3VuZGNvbG9yLDEsMikpLGhleGRlYyhzdWJzdHIoJHRoaXMtPkJhY2tncm91bmRjb2xvciwzLDIpKSxoZXhkZWMoc3Vic3RyKCR0aGlzLT5CYWNrZ3JvdW5kY29sb3IsNSwyKSkpKTsNCgkJDQoJfQ0KCQ0KCS8qKg0KCSAqIFJvdGF0ZSB0aGUgaW1hZ2UgKzkwLCAtOTAgb3IgMTgwIGRlZ3JlZXMNCgkgKiBGbGlwIHRoZSBpbWFnZSBvdmVyIGhvcml6b250YWwgb3IgdmVydGljYWwgYXhpcw0KCSAqDQoJICogQHBhcmFtICRyb3RhdGUNCgkgKiBAcGFyYW0gJGZsaXANCgkgKi8JCQ0KCXByaXZhdGUgZnVuY3Rpb24gcm90YXRlb3JmbGlwKCRyb3RhdGUsJGZsaXApIHsNCg0KCQlpZiAoJHJvdGF0ZSkgew0KCQkJJHRoaXMtPm5ld2ltYWdlPWltYWdlY3JlYXRldHJ1ZWNvbG9yKCR0aGlzLT5zaXplWzFdLCR0aGlzLT5zaXplWzBdKTsNCgkJfSBlbHNlIHsNCgkJCSR0aGlzLT5uZXdpbWFnZT1pbWFnZWNyZWF0ZXRydWVjb2xvcigkdGhpcy0+c2l6ZVswXSwkdGhpcy0+c2l6ZVsxXSk7DQoJCX0NCgkJaWYgKGludHZhbCgkdGhpcy0+Um90YXRlKT4wIHx8ICRmbGlwPjApIHsNCgkJCWZvciAoJHB4PTA7JHB4PCR0aGlzLT5zaXplWzBdOyRweCsrKSB7DQoJCQkJaWYgKCRyb3RhdGUpIHsNCgkJCQkJZm9yICgkcHk9MDskcHk8JHRoaXMtPnNpemVbMV07JHB5KyspIHtpbWFnZWNvcHkoJHRoaXMtPm5ld2ltYWdlLCR0aGlzLT5pbSwkdGhpcy0+c2l6ZVsxXS0kcHktMSwkcHgsJHB4LCRweSwxLDEpO30NCgkJCQl9IGVsc2Ugew0KCQkJCQlmb3IgKCRweT0wOyRweTwkdGhpcy0+c2l6ZVsxXTskcHkrKykge2ltYWdlY29weSgkdGhpcy0+bmV3aW1hZ2UsJHRoaXMtPmltLCR0aGlzLT5zaXplWzBdLSRweC0xLCRweSwkcHgsJHB5LDEsMSk7fQ0KCQkJCX0NCgkJCX0NCgkJfSBlbHNlIHsNCgkJCWZvciAoJHB4PTA7JHB4PCR0aGlzLT5zaXplWzBdOyRweCsrKSB7DQoJCQkJaWYgKCRyb3RhdGUpIHsJCQkJDQoJCQkJCWZvciAoJHB5PTA7JHB5PCR0aGlzLT5zaXplWzFdOyRweSsrKSB7aW1hZ2Vjb3B5KCR0aGlzLT5uZXdpbWFnZSwkdGhpcy0+aW0sJHB5LCR0aGlzLT5zaXplWzBdLSRweC0xLCRweCwkcHksMSwxKTt9DQoJCQkJfSBlbHNlIHsNCgkJCQkJZm9yICgkcHk9MDskcHk8JHRoaXMtPnNpemVbMV07JHB5KyspIHtpbWFnZWNvcHkoJHRoaXMtPm5ld2ltYWdlLCR0aGlzLT5pbSwkcHgsJHRoaXMtPnNpemVbMV0tJHB5LTEsJHB4LCRweSwxLDEpO30NCgkJCQl9CQkJCQkNCgkJCX0NCgkJfQ0KCQlpbWFnZWRlc3Ryb3koJHRoaXMtPmltKTsNCgkJJHRoaXMtPmltPWltYWdlY3JlYXRldHJ1ZWNvbG9yKGltYWdlc3goJHRoaXMtPm5ld2ltYWdlKSxpbWFnZXN5KCR0aGlzLT5uZXdpbWFnZSkpOw0KCQlpbWFnZWNvcHkoJHRoaXMtPmltLCR0aGlzLT5uZXdpbWFnZSwwLDAsMCwwLGltYWdlc3goJHRoaXMtPm5ld2ltYWdlKSxpbWFnZXN5KCR0aGlzLT5uZXdpbWFnZSkpOwkJCQ0KCQlpbWFnZWRlc3Ryb3koJHRoaXMtPm5ld2ltYWdlKTsNCgkJJHRoaXMtPnNpemVbMF09aW1hZ2VzeCgkdGhpcy0+aW0pOw0KCQkkdGhpcy0+c2l6ZVsxXT1pbWFnZXN5KCR0aGlzLT5pbSk7DQoNCgl9DQoJDQoJLyoqDQoJICogQ3JvcCBpbWFnZSBpbiBwZXJjZW50YWdlLCBwaXhlbHMgb3IgaW4gYSBzcXVhcmUNCgkgKiBDcm9wIGZyb20gc2lkZXMgb3IgZnJvbSBjZW50ZXINCgkgKiBOZWdhdGl2ZSB2YWx1ZSBmb3IgYm90dG9tIGNyb3Agd2lsbCBlbmxhcmdlIHRoZSBjYW52YXMNCgkgKg0KCSAqLwkJDQoJcHJpdmF0ZSBmdW5jdGlvbiBjcm9waW1hZ2UoKSB7CQ0KCQkNCgkJaWYgKCR0aGlzLT5Dcm9waW1hZ2VbMV09PTApIHsNCgkJCSRjcm9wMj1mbG9vcigkdGhpcy0+c2l6ZVswXSooJHRoaXMtPkNyb3BpbWFnZVsyXS8xMDApKTsNCgkJCSRjcm9wMz1mbG9vcigkdGhpcy0+c2l6ZVswXSooJHRoaXMtPkNyb3BpbWFnZVszXS8xMDApKTsNCgkJCSRjcm9wND1mbG9vcigkdGhpcy0+c2l6ZVsxXSooJHRoaXMtPkNyb3BpbWFnZVs0XS8xMDApKTsNCgkJCSRjcm9wNT1mbG9vcigkdGhpcy0+c2l6ZVsxXSooJHRoaXMtPkNyb3BpbWFnZVs1XS8xMDApKTsNCgkJfSANCgkJaWYgKCR0aGlzLT5Dcm9waW1hZ2VbMV09PTEpIHsNCgkJCSRjcm9wMj0kdGhpcy0+Q3JvcGltYWdlWzJdOw0KCQkJJGNyb3AzPSR0aGlzLT5Dcm9waW1hZ2VbM107DQoJCQkkY3JvcDQ9JHRoaXMtPkNyb3BpbWFnZVs0XTsNCgkJCSRjcm9wNT0kdGhpcy0+Q3JvcGltYWdlWzVdOwkJDQoJCX0NCgkJaWYgKCR0aGlzLT5Dcm9waW1hZ2VbMF09PTIpIHsNCgkJCSRjcm9wMj1mbG9vcigkdGhpcy0+c2l6ZVswXS8yKS0kY3JvcDI7DQoJCQkkY3JvcDM9Zmxvb3IoJHRoaXMtPnNpemVbMF0vMiktJGNyb3AzOw0KCQkJJGNyb3A0PWZsb29yKCR0aGlzLT5zaXplWzFdLzIpLSRjcm9wNDsNCgkJCSRjcm9wNT1mbG9vcigkdGhpcy0+c2l6ZVsxXS8yKS0kY3JvcDU7DQoJCX0NCgkJaWYgKCR0aGlzLT5Dcm9waW1hZ2VbMF09PTMpIHsNCgkJCWlmICgkdGhpcy0+c2l6ZVswXT4kdGhpcy0+c2l6ZVsxXSkgew0KCQkJCSRjcm9wMj0kY3JvcDM9Zmxvb3IoKCR0aGlzLT5zaXplWzBdLSR0aGlzLT5zaXplWzFdKS8yKTsNCgkJCQkkY3JvcDQ9JGNyb3A1PTA7DQoJCQl9IGVsc2Ugew0KCQkJCSRjcm9wND0kY3JvcDU9Zmxvb3IoKCR0aGlzLT5zaXplWzFdLSR0aGlzLT5zaXplWzBdKS8yKTsNCgkJCQkkY3JvcDI9JGNyb3AzPTA7CQkJDQoJCQl9DQoJCX0NCgkJJHRoaXMtPm5ld2ltYWdlPWltYWdlY3JlYXRldHJ1ZWNvbG9yKCR0aGlzLT5zaXplWzBdLSRjcm9wMi0kY3JvcDMsJHRoaXMtPnNpemVbMV0tJGNyb3A0LSRjcm9wNSk7DQoJCWlmICgkY3JvcDU8MCkgeyRjcm9wNT0wO2ltYWdlZmlsbGVkcmVjdGFuZ2xlKCR0aGlzLT5uZXdpbWFnZSwwLDAsaW1hZ2VzeCgkdGhpcy0+bmV3aW1hZ2UpLGltYWdlc3koJHRoaXMtPm5ld2ltYWdlKSxpbWFnZWNvbG9yYWxsb2NhdGUoJHRoaXMtPm5ld2ltYWdlLGhleGRlYyhzdWJzdHIoJHRoaXMtPlBvbGFyb2lkZnJhbWVjb2xvciwxLDIpKSxoZXhkZWMoc3Vic3RyKCR0aGlzLT5Qb2xhcm9pZGZyYW1lY29sb3IsMywyKSksaGV4ZGVjKHN1YnN0cigkdGhpcy0+UG9sYXJvaWRmcmFtZWNvbG9yLDUsMikpKSk7fQ0KCQlpbWFnZWNvcHkoJHRoaXMtPm5ld2ltYWdlLCR0aGlzLT5pbSwwLDAsJGNyb3AyLCRjcm9wNCwkdGhpcy0+c2l6ZVswXS0kY3JvcDItJGNyb3AzLCR0aGlzLT5zaXplWzFdLSRjcm9wNC0kY3JvcDUpOw0KCQlpbWFnZWRlc3Ryb3koJHRoaXMtPmltKTsNCgkJJHRoaXMtPmltPWltYWdlY3JlYXRldHJ1ZWNvbG9yKGltYWdlc3goJHRoaXMtPm5ld2ltYWdlKSxpbWFnZXN5KCR0aGlzLT5uZXdpbWFnZSkpOw0KCQlpbWFnZWNvcHkoJHRoaXMtPmltLCR0aGlzLT5uZXdpbWFnZSwwLDAsMCwwLGltYWdlc3goJHRoaXMtPm5ld2ltYWdlKSxpbWFnZXN5KCR0aGlzLT5uZXdpbWFnZSkpOw0KCQlpbWFnZWRlc3Ryb3koJHRoaXMtPm5ld2ltYWdlKTsNCgkJJHRoaXMtPnNpemVbMF09aW1hZ2VzeCgkdGhpcy0+aW0pOw0KCQkkdGhpcy0+c2l6ZVsxXT1pbWFnZXN5KCR0aGlzLT5pbSk7DQoJDQoJfQ0KDQoJLyoqDQoJICogRW5sYXJnZSB0aGUgY2FudmFzIHRvIGJlIHNhbWUgd2lkdGggYW5kIGhlaWdodA0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gc3F1YXJlKCkgew0KCQ0KCQkkc3F1YXJlc2l6ZT1tYXgoJHRoaXMtPnRodW1ieCwkdGhpcy0+dGh1bWJ5KTsNCgkJJHRoaXMtPm5ld2ltYWdlPWltYWdlY3JlYXRldHJ1ZWNvbG9yKCRzcXVhcmVzaXplLCRzcXVhcmVzaXplKTsNCgkJaW1hZ2VmaWxsZWRyZWN0YW5nbGUoJHRoaXMtPm5ld2ltYWdlLDAsMCwkc3F1YXJlc2l6ZSwkc3F1YXJlc2l6ZSxpbWFnZWNvbG9yYWxsb2NhdGUoJHRoaXMtPm5ld2ltYWdlLGhleGRlYyhzdWJzdHIoJHRoaXMtPkJhY2tncm91bmRjb2xvciwxLDIpKSxoZXhkZWMoc3Vic3RyKCR0aGlzLT5CYWNrZ3JvdW5kY29sb3IsMywyKSksaGV4ZGVjKHN1YnN0cigkdGhpcy0+QmFja2dyb3VuZGNvbG9yLDUsMikpKSk7DQoJCSRjZW50ZXJ4PWZsb29yKCgkc3F1YXJlc2l6ZS0kdGhpcy0+dGh1bWJ4KS8yKTsNCgkJJGNlbnRlcnk9Zmxvb3IoKCRzcXVhcmVzaXplLSR0aGlzLT50aHVtYnkpLzIpOw0KCQlpbWFnZWNvcHkoJHRoaXMtPm5ld2ltYWdlLCR0aGlzLT50aHVtYiwkY2VudGVyeCwkY2VudGVyeSwwLDAsJHRoaXMtPnRodW1ieCwkdGhpcy0+dGh1bWJ5KTsNCgkJaW1hZ2VkZXN0cm95KCR0aGlzLT50aHVtYik7DQoJCSR0aGlzLT50aHVtYj1pbWFnZWNyZWF0ZXRydWVjb2xvcigkc3F1YXJlc2l6ZSwkc3F1YXJlc2l6ZSk7DQoJCWltYWdlY29weSgkdGhpcy0+dGh1bWIsJHRoaXMtPm5ld2ltYWdlLDAsMCwwLDAsJHNxdWFyZXNpemUsJHNxdWFyZXNpemUpOw0KCQlpbWFnZWRlc3Ryb3koJHRoaXMtPm5ld2ltYWdlKTsNCgkJDQoJfQ0KDQoJLyoqDQoJICogQXBwbHkgYSAzeDMgZmlsdGVyIG1hdHJpeCB0byB0aGUgaW1hZ2UNCgkgKg0KCSAqLwkNCglwcml2YXRlIGZ1bmN0aW9uIGZpbHRlcigpIHsNCgkJDQoJCWlmIChmdW5jdGlvbl9leGlzdHMoJ2ltYWdlY29udm9sdXRpb24nKSkgew0KCQkJaW1hZ2Vjb252b2x1dGlvbigkdGhpcy0+aW0sYXJyYXkoYXJyYXkoJHRoaXMtPkZpbHRlclswXSwkdGhpcy0+RmlsdGVyWzFdLCR0aGlzLT5GaWx0ZXJbMl0pLCBhcnJheSgkdGhpcy0+RmlsdGVyWzNdLCR0aGlzLT5GaWx0ZXJbNF0sJHRoaXMtPkZpbHRlcls1XSksYXJyYXkoJHRoaXMtPkZpbHRlcls2XSwkdGhpcy0+RmlsdGVyWzddLCR0aGlzLT5GaWx0ZXJbOF0pKSwkdGhpcy0+RGl2aXNvciwkdGhpcy0+T2Zmc2V0KTsJDQoJCX0gZWxzZSB7DQoJCQkkbmV3cGl4ZWw9YXJyYXkoKTsNCgkJCSR0aGlzLT5uZXdpbWFnZT1pbWFnZWNyZWF0ZXRydWVjb2xvcigkdGhpcy0+c2l6ZVswXSwkdGhpcy0+c2l6ZVsxXSk7DQoJCQlmb3IgKCR5PTA7JHk8JHRoaXMtPnNpemVbMV07JHkrKykgew0KCQkJCWZvciAoJHg9MDskeDwkdGhpcy0+c2l6ZVswXTskeCsrKSB7DQoJCQkJCSRuZXdwaXhlbFswXT0wOyRuZXdwaXhlbFsxXT0wOyRuZXdwaXhlbFsyXT0wOw0KCQkJCQkkYTExPSR0aGlzLT5yZ2JwaXhlbCgkeC0xLCR5LTEpOyRhMTI9JHRoaXMtPnJnYnBpeGVsKCR4LCR5LTEpOyRhMTM9JHRoaXMtPnJnYnBpeGVsKCR4KzEsJHktMSk7DQoJCQkJCSRhMjE9JHRoaXMtPnJnYnBpeGVsKCR4LTEsJHkpOyRhMjI9JHRoaXMtPnJnYnBpeGVsKCR4LCR5KTskYTIzPSR0aGlzLT5yZ2JwaXhlbCgkeCsxLCR5KTsNCgkJCQkJJGEzMT0kdGhpcy0+cmdicGl4ZWwoJHgtMSwkeSsxKTskYTMyPSR0aGlzLT5yZ2JwaXhlbCgkeCwkeSsxKTskYTMzPSR0aGlzLT5yZ2JwaXhlbCgkeCsxLCR5KzEpOw0KCQkJCQkkbmV3cGl4ZWxbMF0rPSRhMTFbJ3JlZCddKiR0aGlzLT5GaWx0ZXJbMF0rJGExMlsncmVkJ10qJHRoaXMtPkZpbHRlclsxXSskYTEzWydyZWQnXSokdGhpcy0+RmlsdGVyWzJdOw0KCQkJCQkkbmV3cGl4ZWxbMV0rPSRhMTFbJ2dyZWVuJ10qJHRoaXMtPkZpbHRlclswXSskYTEyWydncmVlbiddKiR0aGlzLT5GaWx0ZXJbMV0rJGExM1snZ3JlZW4nXSokdGhpcy0+RmlsdGVyWzJdOw0KCQkJCQkkbmV3cGl4ZWxbMl0rPSRhMTFbJ2JsdWUnXSokdGhpcy0+RmlsdGVyWzBdKyRhMTJbJ2JsdWUnXSokdGhpcy0+RmlsdGVyWzFdKyRhMTNbJ2JsdWUnXSokdGhpcy0+RmlsdGVyWzJdOw0KCQkJCQkkbmV3cGl4ZWxbMF0rPSRhMjFbJ3JlZCddKiR0aGlzLT5GaWx0ZXJbM10rJGEyMlsncmVkJ10qJHRoaXMtPkZpbHRlcls0XSskYTIzWydyZWQnXSokdGhpcy0+RmlsdGVyWzVdOw0KCQkJCQkkbmV3cGl4ZWxbMV0rPSRhMjFbJ2dyZWVuJ10qJHRoaXMtPkZpbHRlclszXSskYTIyWydncmVlbiddKiR0aGlzLT5GaWx0ZXJbNF0rJGEyM1snZ3JlZW4nXSokdGhpcy0+RmlsdGVyWzVdOw0KCQkJCQkkbmV3cGl4ZWxbMl0rPSRhMjFbJ2JsdWUnXSokdGhpcy0+RmlsdGVyWzNdKyRhMjJbJ2JsdWUnXSokdGhpcy0+RmlsdGVyWzRdKyRhMjNbJ2JsdWUnXSokdGhpcy0+RmlsdGVyWzVdOw0KCQkJCQkkbmV3cGl4ZWxbMF0rPSRhMzFbJ3JlZCddKiR0aGlzLT5GaWx0ZXJbNl0rJGEzMlsncmVkJ10qJHRoaXMtPkZpbHRlcls3XSskYTMzWydyZWQnXSokdGhpcy0+RmlsdGVyWzhdOw0KCQkJCQkkbmV3cGl4ZWxbMV0rPSRhMzFbJ2dyZWVuJ10qJHRoaXMtPkZpbHRlcls2XSskYTMyWydncmVlbiddKiR0aGlzLT5GaWx0ZXJbN10rJGEzM1snZ3JlZW4nXSokdGhpcy0+RmlsdGVyWzhdOw0KCQkJCQkkbmV3cGl4ZWxbMl0rPSRhMzFbJ2JsdWUnXSokdGhpcy0+RmlsdGVyWzZdKyRhMzJbJ2JsdWUnXSokdGhpcy0+RmlsdGVyWzddKyRhMzNbJ2JsdWUnXSokdGhpcy0+RmlsdGVyWzhdOw0KCQkJCQkkbmV3cGl4ZWxbMF09bWF4KDAsbWluKDI1NSxpbnR2YWwoJG5ld3BpeGVsWzBdLyR0aGlzLT5EaXZpc29yKSskdGhpcy0+T2Zmc2V0KSk7DQoJCQkJCSRuZXdwaXhlbFsxXT1tYXgoMCxtaW4oMjU1LGludHZhbCgkbmV3cGl4ZWxbMV0vJHRoaXMtPkRpdmlzb3IpKyR0aGlzLT5PZmZzZXQpKTsNCgkJCQkJJG5ld3BpeGVsWzJdPW1heCgwLG1pbigyNTUsaW50dmFsKCRuZXdwaXhlbFsyXS8kdGhpcy0+RGl2aXNvcikrJHRoaXMtPk9mZnNldCkpOw0KCQkJCQlpbWFnZXNldHBpeGVsKCR0aGlzLT5uZXdpbWFnZSwkeCwkeSxpbWFnZWNvbG9yYWxsb2NhdGVhbHBoYSgkdGhpcy0+bmV3aW1hZ2UsJG5ld3BpeGVsWzBdLCRuZXdwaXhlbFsxXSwkbmV3cGl4ZWxbMl0sJGExMVsnYWxwaGEnXSkpOw0KCQkJCX0NCgkJCX0NCgkJCWltYWdlY29weSgkdGhpcy0+aW0sJHRoaXMtPm5ld2ltYWdlLDAsMCwwLDAsJHRoaXMtPnNpemVbMF0sJHRoaXMtPnNpemVbMV0pOw0KCQkJaW1hZ2VkZXN0cm95KCR0aGlzLT5uZXdpbWFnZSk7DQoJCX0NCgkJDQoJfQ0KCQ0KCS8qKg0KCSAqIEFwcGx5IGEgbWVkaWFuIGZpbHRlciBtYXRyaXggdG8gdGhlIGltYWdlIHRvIHJlbW92ZSBub2lzZQ0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gbWVkaWFuZmlsdGVyKCkgew0KCQkNCgkJJHRoaXMtPm5ld2ltYWdlPWltYWdlY3JlYXRldHJ1ZWNvbG9yKCR0aGlzLT5zaXplWzBdLCR0aGlzLT5zaXplWzFdKTsNCgkJZm9yICgkeT0wOyR5PCR0aGlzLT5zaXplWzFdOyR5KyspIHsNCgkJCWZvciAoJHg9MDskeDwkdGhpcy0+c2l6ZVswXTskeCsrKSB7DQoJCQkJJG5ld3JlZD1hcnJheSgpOyRuZXdncmVlbj1hcnJheSgpOyRuZXdibHVlPWFycmF5KCk7DQoJCQkJJGExMT0kdGhpcy0+cmdicGl4ZWwoJHgtMSwkeS0xKTskYTEyPSR0aGlzLT5yZ2JwaXhlbCgkeCwkeS0xKTskYTEzPSR0aGlzLT5yZ2JwaXhlbCgkeCsxLCR5LTEpOw0KCQkJCSRhMjE9JHRoaXMtPnJnYnBpeGVsKCR4LTEsJHkpOyRhMjI9JHRoaXMtPnJnYnBpeGVsKCR4LCR5KTskYTIzPSR0aGlzLT5yZ2JwaXhlbCgkeCsxLCR5KTsNCgkJCQkkYTMxPSR0aGlzLT5yZ2JwaXhlbCgkeC0xLCR5KzEpOyRhMzI9JHRoaXMtPnJnYnBpeGVsKCR4LCR5KzEpOyRhMzM9JHRoaXMtPnJnYnBpeGVsKCR4KzEsJHkrMSk7DQoJCQkJJG5ld3JlZFtdPSRhMTFbJ3JlZCddOyRuZXdncmVlbltdPSRhMTFbJ2dyZWVuJ107JG5ld2JsdWVbXT0kYTExWydibHVlJ107DQoJCQkJJG5ld3JlZFtdPSRhMTJbJ3JlZCddOyRuZXdncmVlbltdPSRhMTJbJ2dyZWVuJ107JG5ld2JsdWVbXT0kYTEyWydibHVlJ107DQoJCQkJJG5ld3JlZFtdPSRhMTNbJ3JlZCddOyRuZXdncmVlbltdPSRhMTNbJ2dyZWVuJ107JG5ld2JsdWVbXT0kYTEzWydibHVlJ107DQoJCQkJJG5ld3JlZFtdPSRhMjFbJ3JlZCddOyRuZXdncmVlbltdPSRhMjFbJ2dyZWVuJ107JG5ld2JsdWVbXT0kYTIxWydibHVlJ107DQoJCQkJJG5ld3JlZFtdPSRhMjJbJ3JlZCddOyRuZXdncmVlbltdPSRhMjJbJ2dyZWVuJ107JG5ld2JsdWVbXT0kYTIyWydibHVlJ107DQoJCQkJJG5ld3JlZFtdPSRhMjNbJ3JlZCddOyRuZXdncmVlbltdPSRhMjNbJ2dyZWVuJ107JG5ld2JsdWVbXT0kYTIzWydibHVlJ107DQoJCQkJJG5ld3JlZFtdPSRhMzFbJ3JlZCddOyRuZXdncmVlbltdPSRhMzFbJ2dyZWVuJ107JG5ld2JsdWVbXT0kYTMxWydibHVlJ107DQoJCQkJJG5ld3JlZFtdPSRhMzJbJ3JlZCddOyRuZXdncmVlbltdPSRhMzJbJ2dyZWVuJ107JG5ld2JsdWVbXT0kYTMyWydibHVlJ107DQoJCQkJJG5ld3JlZFtdPSRhMzNbJ3JlZCddOyRuZXdncmVlbltdPSRhMzNbJ2dyZWVuJ107JG5ld2JsdWVbXT0kYTMzWydibHVlJ107DQoJCQkJc29ydCgkbmV3cmVkLFNPUlRfTlVNRVJJQyk7c29ydCgkbmV3Z3JlZW4sU09SVF9OVU1FUklDKTtzb3J0KCRuZXdibHVlLFNPUlRfTlVNRVJJQyk7DQoJCQkJaW1hZ2VzZXRwaXhlbCgkdGhpcy0+bmV3aW1hZ2UsJHgsJHksaW1hZ2Vjb2xvcmFsbG9jYXRlYWxwaGEoJHRoaXMtPm5ld2ltYWdlLCRuZXdyZWRbNF0sJG5ld2dyZWVuWzRdLCRuZXdibHVlWzRdLCRhMjJbJ2FscGhhJ10pKTsJCQ0KCQkJfQ0KCQl9DQoJCWltYWdlY29weSgkdGhpcy0+aW0sJHRoaXMtPm5ld2ltYWdlLDAsMCwwLDAsJHRoaXMtPnNpemVbMF0sJHRoaXMtPnNpemVbMV0pOw0KCQlpbWFnZWRlc3Ryb3koJHRoaXMtPm5ld2ltYWdlKTsNCgkJDQoJfQ0KDQoJLyoqDQoJICogUmV0dXJuIFJHQiB2YWx1ZXMgZnJvbSBwaXhlbA0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gcmdicGl4ZWwoJHgsJHkpIHsNCgkJCQ0KCQlpZiAoJHg8MCkgeyR4PTA7fQ0KCQlpZiAoJHg+PSR0aGlzLT5zaXplWzBdKSB7JHg9JHRoaXMtPnNpemVbMF0tMTt9DQoJCWlmICgkeTwwKSB7JHk9MDt9DQoJCWlmICgkeT49JHRoaXMtPnNpemVbMV0pIHskeT0kdGhpcy0+c2l6ZVsxXS0xO30JCQ0KCQkkcGl4ZWw9SW1hZ2VDb2xvckF0KCR0aGlzLT5pbSwkeCwkeSk7DQoJCXJldHVybiBhcnJheSgncmVkJyA9PiAoJHBpeGVsID4+IDE2ICYgMHhGRiksJ2dyZWVuJyA9PiAoJHBpeGVsID4+IDggJiAweEZGKSwnYmx1ZScgPT4gKCRwaXhlbCAmIDB4RkYpLCdhbHBoYScgPT4gKCRwaXhlbCA+PjI0ICYgMHhGRikpOw0KCQkNCgl9CQ0KDQoJLyoqDQoJICogR2F1c3NpYW4gQmx1ciBGaWx0ZXINCgkgKg0KCSAqLwkNCglwcml2YXRlIGZ1bmN0aW9uIGJsdXIoKSB7DQoNCgkJJG9sZGZpbHRlcj0kdGhpcy0+RmlsdGVyOyRvbGRkaXZpc29yPSR0aGlzLT5EaXZpc29yOyRvbGRvZmZzZXQ9JHRoaXMtPk9mZnNldDsNCgkJJHRoaXMtPkZpbHRlciAgPSBhcnJheSgxLDIsMSwyLDQsMiwxLDIsMSk7DQoJCSR0aGlzLT5EaXZpc29yID0gMTY7DQoJCSR0aGlzLT5PZmZzZXQgID0gMDsNCgkJJHRoaXMtPmZpbHRlcigpOw0KCQkkdGhpcy0+RmlsdGVyICA9ICRvbGRmaWx0ZXI7DQoJCSR0aGlzLT5EaXZpc29yID0gJG9sZGRpdmlzb3I7DQoJCSR0aGlzLT5PZmZzZXQgID0gJG9sZG9mZnNldDsJCQ0KCQkNCgl9DQoNCgkvKioNCgkgKiBTaGFycGVuIEZpbHRlcg0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gc2hhcnBlbigpIHsNCg0KCQkkb2xkZmlsdGVyPSR0aGlzLT5GaWx0ZXI7JG9sZGRpdmlzb3I9JHRoaXMtPkRpdmlzb3I7JG9sZG9mZnNldD0kdGhpcy0+T2Zmc2V0Ow0KCQkkdGhpcy0+RmlsdGVyICA9IGFycmF5KC0xLC0xLC0xLC0xLDE2LC0xLC0xLC0xLC0xKTsNCgkJJHRoaXMtPkRpdmlzb3IgPSA4Ow0KCQkkdGhpcy0+T2Zmc2V0ICA9IDA7DQoJCSR0aGlzLT5maWx0ZXIoKTsNCgkJJHRoaXMtPkZpbHRlciAgPSAkb2xkZmlsdGVyOw0KCQkkdGhpcy0+RGl2aXNvciA9ICRvbGRkaXZpc29yOw0KCQkkdGhpcy0+T2Zmc2V0ICA9ICRvbGRvZmZzZXQ7CQkNCgkJDQoJfQ0KDQoJLyoqDQoJICogRWRnZSBGaWx0ZXINCgkgKg0KCSAqLwkNCglwcml2YXRlIGZ1bmN0aW9uIGVkZ2UoKSB7DQoNCgkJJG9sZGZpbHRlcj0kdGhpcy0+RmlsdGVyOyRvbGRkaXZpc29yPSR0aGlzLT5EaXZpc29yOyRvbGRvZmZzZXQ9JHRoaXMtPk9mZnNldDsNCgkJJHRoaXMtPkZpbHRlciAgPSBhcnJheSgtMSwtMSwtMSwtMSw4LC0xLC0xLC0xLC0xKTsNCgkJJHRoaXMtPkRpdmlzb3IgPSAxOw0KCQkkdGhpcy0+T2Zmc2V0ICA9IDEyNzsNCgkJJHRoaXMtPmZpbHRlcigpOw0KCQkkdGhpcy0+RmlsdGVyICA9ICRvbGRmaWx0ZXI7DQoJCSR0aGlzLT5EaXZpc29yID0gJG9sZGRpdmlzb3I7DQoJCSR0aGlzLT5PZmZzZXQgID0gJG9sZG9mZnNldDsJCQ0KCQkNCgl9DQoNCgkvKioNCgkgKiBFbWJvc3MgRmlsdGVyDQoJICoNCgkgKi8JDQoJcHJpdmF0ZSBmdW5jdGlvbiBlbWJvc3MoKSB7DQoNCgkJJG9sZGZpbHRlcj0kdGhpcy0+RmlsdGVyOyRvbGRkaXZpc29yPSR0aGlzLT5EaXZpc29yOyRvbGRvZmZzZXQ9JHRoaXMtPk9mZnNldDsNCgkJJHRoaXMtPkZpbHRlciAgPSBhcnJheSgyLDAsMCwwLC0xLDAsMCwwLC0xKTsNCgkJJHRoaXMtPkRpdmlzb3IgPSAxOw0KCQkkdGhpcy0+T2Zmc2V0ICA9IDEyNzsNCgkJJHRoaXMtPmZpbHRlcigpOw0KCQkkdGhpcy0+RmlsdGVyICA9ICRvbGRmaWx0ZXI7DQoJCSR0aGlzLT5EaXZpc29yID0gJG9sZGRpdmlzb3I7DQoJCSR0aGlzLT5PZmZzZXQgID0gJG9sZG9mZnNldDsJCQ0KCQkNCgl9DQoNCgkvKioNCgkgKiBNZWFuIEZpbHRlcg0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gbWVhbigpIHsNCg0KCQkkb2xkZmlsdGVyPSR0aGlzLT5GaWx0ZXI7JG9sZGRpdmlzb3I9JHRoaXMtPkRpdmlzb3I7JG9sZG9mZnNldD0kdGhpcy0+T2Zmc2V0Ow0KCQkkdGhpcy0+RmlsdGVyICA9IGFycmF5KDEsMSwxLDEsMSwxLDEsMSwxKTsNCgkJJHRoaXMtPkRpdmlzb3IgPSA5Ow0KCQkkdGhpcy0+T2Zmc2V0ICA9IDA7DQoJCSR0aGlzLT5maWx0ZXIoKTsNCgkJJHRoaXMtPkZpbHRlciAgPSAkb2xkZmlsdGVyOw0KCQkkdGhpcy0+RGl2aXNvciA9ICRvbGRkaXZpc29yOw0KCQkkdGhpcy0+T2Zmc2V0ICA9ICRvbGRvZmZzZXQ7CQkNCgkJDQoJfQ0KCQ0KCS8qKg0KCSAqIEFwcGx5IHBlcnNwZWN0aXZlIHRvIHRoZSBpbWFnZQ0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gcGVyc3BlY3RpdmUoKSB7DQoJCQ0KCQkkdGhpcy0+bmV3aW1hZ2U9aW1hZ2VjcmVhdGV0cnVlY29sb3IoJHRoaXMtPnNpemVbMF0sJHRoaXMtPnNpemVbMV0pOw0KCQlpbWFnZWZpbGxlZHJlY3RhbmdsZSgkdGhpcy0+bmV3aW1hZ2UsMCwwLCR0aGlzLT5zaXplWzBdLCR0aGlzLT5zaXplWzFdLGltYWdlY29sb3JhbGxvY2F0ZSgkdGhpcy0+bmV3aW1hZ2UsaGV4ZGVjKHN1YnN0cigkdGhpcy0+QmFja2dyb3VuZGNvbG9yLDEsMikpLGhleGRlYyhzdWJzdHIoJHRoaXMtPkJhY2tncm91bmRjb2xvciwzLDIpKSxoZXhkZWMoc3Vic3RyKCR0aGlzLT5CYWNrZ3JvdW5kY29sb3IsNSwyKSkpKTsJCQkNCgkJaWYgKCR0aGlzLT5QZXJzcGVjdGl2ZVsxXT09MCB8fCAkdGhpcy0+UGVyc3BlY3RpdmVbMV09PTEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRncmFkaWVudD0oJHRoaXMtPnNpemVbMV0tKCR0aGlzLT5zaXplWzFdKihtYXgoMTAwLSR0aGlzLT5QZXJzcGVjdGl2ZVsyXSwxKS8xMDApKSkvJHRoaXMtPnNpemVbMF07DQoJCSAgICAgICAgZm9yICgkYz0wOyRjPCR0aGlzLT5zaXplWzBdOyRjKyspIHsNCgkJCSAgICAgICAgaWYgKCR0aGlzLT5QZXJzcGVjdGl2ZVsxXT09MCkgew0KCQkJCSAgICAkbGVuZ3RoPSR0aGlzLT5zaXplWzFdLShmbG9vcigkZ3JhZGllbnQqJGMpKTsNCgkJCSAgICAgICAgfSBlbHNlIHsNCgkJCQkgICAgJGxlbmd0aD0kdGhpcy0+c2l6ZVsxXS0oZmxvb3IoJGdyYWRpZW50KigkdGhpcy0+c2l6ZVswXS0kYykpKTsNCgkJCSAgICAgICAgfQ0KCQkJCWltYWdlY29weXJlc2FtcGxlZCgkdGhpcy0+bmV3aW1hZ2UsJHRoaXMtPmltLCRjLGZsb29yKCgkdGhpcy0+c2l6ZVsxXS0kbGVuZ3RoKS8yKSwkYywwLDEsJGxlbmd0aCwxLCR0aGlzLT5zaXplWzFdKTsNCgkJICAgICAgICB9DQoJCX0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAkZ3JhZGllbnQ9KCR0aGlzLT5zaXplWzBdLSgkdGhpcy0+c2l6ZVswXSoobWF4KDEwMC0kdGhpcy0+UGVyc3BlY3RpdmVbMl0sMSkvMTAwKSkpLyR0aGlzLT5zaXplWzFdOw0KCQkgICAgICAgIGZvciAoJGM9MDskYzwkdGhpcy0+c2l6ZVsxXTskYysrKSB7DQoJCQkgICAgICAgIGlmICgkdGhpcy0+UGVyc3BlY3RpdmVbMV09PTIpIHsNCgkJCQkgICAgJGxlbmd0aD0kdGhpcy0+c2l6ZVswXS0oZmxvb3IoJGdyYWRpZW50KiRjKSk7DQoJCQkgICAgICAgIH0gZWxzZSB7DQoJCQkJICAgICRsZW5ndGg9JHRoaXMtPnNpemVbMF0tKGZsb29yKCRncmFkaWVudCooJHRoaXMtPnNpemVbMV0tJGMpKSk7DQoJCQkgICAgICAgIH0NCgkJCQlpbWFnZWNvcHlyZXNhbXBsZWQoJHRoaXMtPm5ld2ltYWdlLCR0aGlzLT5pbSxmbG9vcigoJHRoaXMtPnNpemVbMF0tJGxlbmd0aCkvMiksJGMsMCwkYywkbGVuZ3RoLDEsJHRoaXMtPnNpemVbMF0sMSk7DQoJCSAgICAgICAgfQkJDQoJCX0NCgkJaW1hZ2Vjb3B5KCR0aGlzLT5pbSwkdGhpcy0+bmV3aW1hZ2UsMCwwLDAsMCwkdGhpcy0+c2l6ZVswXSwkdGhpcy0+c2l6ZVsxXSk7DQoJCWltYWdlZGVzdHJveSgkdGhpcy0+bmV3aW1hZ2UpOw0KCQ0KCX0JCQ0KDQoJIC8qKg0KCSAqIEFwcGx5IHBlcnNwZWN0aXZlIHRvIHRoZSB0aHVtYm5haWwNCgkgKg0KCSAqLwkNCglwcml2YXRlIGZ1bmN0aW9uIHBlcnNwZWN0aXZldGh1bWIoKSB7DQoJCQ0KCQkkdGhpcy0+bmV3aW1hZ2U9aW1hZ2VjcmVhdGV0cnVlY29sb3IoJHRoaXMtPnRodW1ieCwkdGhpcy0+dGh1bWJ5KTsNCgkJaW1hZ2VmaWxsZWRyZWN0YW5nbGUoJHRoaXMtPm5ld2ltYWdlLDAsMCwkdGhpcy0+dGh1bWJ4LCR0aGlzLT50aHVtYnksaW1hZ2Vjb2xvcmFsbG9jYXRlKCR0aGlzLT5uZXdpbWFnZSxoZXhkZWMoc3Vic3RyKCR0aGlzLT5CYWNrZ3JvdW5kY29sb3IsMSwyKSksaGV4ZGVjKHN1YnN0cigkdGhpcy0+QmFja2dyb3VuZGNvbG9yLDMsMikpLGhleGRlYyhzdWJzdHIoJHRoaXMtPkJhY2tncm91bmRjb2xvciw1LDIpKSkpOwkJCQ0KCQlpZiAoJHRoaXMtPlBlcnNwZWN0aXZldGh1bWJbMV09PTAgfHwgJHRoaXMtPlBlcnNwZWN0aXZldGh1bWJbMV09PTEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRncmFkaWVudD0oJHRoaXMtPnRodW1ieS0oJHRoaXMtPnRodW1ieSoobWF4KDEwMC0kdGhpcy0+UGVyc3BlY3RpdmV0aHVtYlsyXSwxKS8xMDApKSkvJHRoaXMtPnRodW1ieDsNCgkJICAgICAgICBmb3IgKCRjPTA7JGM8JHRoaXMtPnRodW1ieDskYysrKSB7DQoJCQkgICAgICAgIGlmICgkdGhpcy0+UGVyc3BlY3RpdmV0aHVtYlsxXT09MCkgew0KCQkJCSAgICAkbGVuZ3RoPSR0aGlzLT50aHVtYnktKGZsb29yKCRncmFkaWVudCokYykpOw0KCQkJICAgICAgICB9IGVsc2Ugew0KCQkJCSAgICAkbGVuZ3RoPSR0aGlzLT50aHVtYnktKGZsb29yKCRncmFkaWVudCooJHRoaXMtPnRodW1ieC0kYykpKTsNCgkJCSAgICAgICAgfQ0KCQkJCWltYWdlY29weXJlc2FtcGxlZCgkdGhpcy0+bmV3aW1hZ2UsJHRoaXMtPnRodW1iLCRjLGZsb29yKCgkdGhpcy0+dGh1bWJ5LSRsZW5ndGgpLzIpLCRjLDAsMSwkbGVuZ3RoLDEsJHRoaXMtPnRodW1ieSk7DQoJCSAgICAgICAgfQ0KCQl9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgJGdyYWRpZW50PSgkdGhpcy0+dGh1bWJ4LSgkdGhpcy0+dGh1bWJ4KihtYXgoMTAwLSR0aGlzLT5QZXJzcGVjdGl2ZXRodW1iWzJdLDEpLzEwMCkpKS8kdGhpcy0+dGh1bWJ5Ow0KCQkgICAgICAgIGZvciAoJGM9MDskYzwkdGhpcy0+dGh1bWJ5OyRjKyspIHsNCgkJCSAgICAgICAgaWYgKCR0aGlzLT5QZXJzcGVjdGl2ZXRodW1iWzFdPT0yKSB7DQoJCQkJICAgICRsZW5ndGg9JHRoaXMtPnRodW1ieC0oZmxvb3IoJGdyYWRpZW50KiRjKSk7DQoJCQkgICAgICAgIH0gZWxzZSB7DQoJCQkJICAgICRsZW5ndGg9JHRoaXMtPnRodW1ieC0oZmxvb3IoJGdyYWRpZW50KigkdGhpcy0+dGh1bWJ5LSRjKSkpOw0KCQkJICAgICAgICB9DQoJCQkJaW1hZ2Vjb3B5cmVzYW1wbGVkKCR0aGlzLT5uZXdpbWFnZSwkdGhpcy0+dGh1bWIsZmxvb3IoKCR0aGlzLT50aHVtYngtJGxlbmd0aCkvMiksJGMsMCwkYywkbGVuZ3RoLDEsJHRoaXMtPnRodW1ieCwxKTsNCgkJICAgICAgICB9CQkNCgkJfQ0KCQlpbWFnZWNvcHkoJHRoaXMtPnRodW1iLCR0aGlzLT5uZXdpbWFnZSwwLDAsMCwwLCR0aGlzLT50aHVtYngsJHRoaXMtPnRodW1ieSk7DQoJCWltYWdlZGVzdHJveSgkdGhpcy0+bmV3aW1hZ2UpOw0KCQ0KCX0JCQ0KDQoJLyoqDQoJICogQXBwbHkgZ3JhZGllbnQgc2hhZGluZyB0byBpbWFnZQ0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gc2hhZGluZygpIHsNCgkJDQoJCWlmICgkdGhpcy0+U2hhZGluZ1szXT09MCB8fCAkdGhpcy0+U2hhZGluZ1szXT09MSkgewkJDQoJCQkkdGhpcy0+bmV3aW1hZ2U9aW1hZ2VjcmVhdGV0cnVlY29sb3IoMSwkdGhpcy0+c2l6ZVsxXSk7DQoJCQlpbWFnZWZpbGxlZHJlY3RhbmdsZSgkdGhpcy0+bmV3aW1hZ2UsMCwwLDEsJHRoaXMtPnNpemVbMV0saW1hZ2Vjb2xvcmFsbG9jYXRlKCR0aGlzLT5uZXdpbWFnZSxoZXhkZWMoc3Vic3RyKCR0aGlzLT5TaGFkaW5nY29sb3IsMSwyKSksaGV4ZGVjKHN1YnN0cigkdGhpcy0+U2hhZGluZ2NvbG9yLDMsMikpLGhleGRlYyhzdWJzdHIoJHRoaXMtPlNoYWRpbmdjb2xvciw1LDIpKSkpOw0KCQl9IGVsc2Ugew0KCQkJJHRoaXMtPm5ld2ltYWdlPWltYWdlY3JlYXRldHJ1ZWNvbG9yKCR0aGlzLT5zaXplWzBdLDEpOw0KCQkJaW1hZ2VmaWxsZWRyZWN0YW5nbGUoJHRoaXMtPm5ld2ltYWdlLDAsMCwkdGhpcy0+c2l6ZVswXSwxLGltYWdlY29sb3JhbGxvY2F0ZSgkdGhpcy0+bmV3aW1hZ2UsaGV4ZGVjKHN1YnN0cigkdGhpcy0+U2hhZGluZ2NvbG9yLDEsMikpLGhleGRlYyhzdWJzdHIoJHRoaXMtPlNoYWRpbmdjb2xvciwzLDIpKSxoZXhkZWMoc3Vic3RyKCR0aGlzLT5TaGFkaW5nY29sb3IsNSwyKSkpKTsJCQkNCgkJfQ0KCQlpZiAoJHRoaXMtPlNoYWRpbmdbM109PTApIHsNCgkJCSRzaGFkaW5nc3RyZW5ndGg9JHRoaXMtPlNoYWRpbmdbMV0vKCR0aGlzLT5zaXplWzBdKigkdGhpcy0+U2hhZGluZ1syXS8xMDApKTsNCgkJCWZvciAoJGM9JHRoaXMtPnNpemVbMF0tZmxvb3IoKCR0aGlzLT5zaXplWzBdKigkdGhpcy0+U2hhZGluZ1syXS8xMDApKSk7JGM8JHRoaXMtPnNpemVbMF07JGMrKykgeyANCgkJCQkkb3BhY2l0eT1mbG9vcigkc2hhZGluZ3N0cmVuZ3RoKigkYy0oJHRoaXMtPnNpemVbMF0tZmxvb3IoKCR0aGlzLT5zaXplWzBdKigkdGhpcy0+U2hhZGluZ1syXS8xMDApKSkpKSk7IA0KCQkJCWltYWdlY29weW1lcmdlKCR0aGlzLT5pbSwkdGhpcy0+bmV3aW1hZ2UsJGMsMCwwLDAsMSwkdGhpcy0+c2l6ZVsxXSxtYXgobWluKCRvcGFjaXR5LDEwMCksMCkpOw0KCQkJfQkNCgkJfSBlbHNlIGlmICgkdGhpcy0+U2hhZGluZ1szXT09MSkgew0KCQkJJHNoYWRpbmdzdHJlbmd0aD0kdGhpcy0+U2hhZGluZ1sxXS8oJHRoaXMtPnNpemVbMF0qKCR0aGlzLT5TaGFkaW5nWzJdLzEwMCkpOw0KCQkJZm9yICgkYz0wOyRjPGZsb29yKCR0aGlzLT5zaXplWzBdKigkdGhpcy0+U2hhZGluZ1syXS8xMDApKTskYysrKSB7IA0KCQkJCSRvcGFjaXR5PWZsb29yKCR0aGlzLT5TaGFkaW5nWzFdLSgkYyokc2hhZGluZ3N0cmVuZ3RoKSk7CQkJIA0KCQkJCWltYWdlY29weW1lcmdlKCR0aGlzLT5pbSwkdGhpcy0+bmV3aW1hZ2UsJGMsMCwwLDAsMSwkdGhpcy0+c2l6ZVsxXSxtYXgobWluKCRvcGFjaXR5LDEwMCksMCkpOw0KCQkJfQkJCQ0KCQl9IGVsc2UgaWYgKCR0aGlzLT5TaGFkaW5nWzNdPT0yKSB7DQoJCQkkc2hhZGluZ3N0cmVuZ3RoPSR0aGlzLT5TaGFkaW5nWzFdLygkdGhpcy0+c2l6ZVsxXSooJHRoaXMtPlNoYWRpbmdbMl0vMTAwKSk7DQoJCQlmb3IgKCRjPTA7JGM8Zmxvb3IoJHRoaXMtPnNpemVbMV0qKCR0aGlzLT5TaGFkaW5nWzJdLzEwMCkpOyRjKyspIHsgDQoJCQkJJG9wYWNpdHk9Zmxvb3IoJHRoaXMtPlNoYWRpbmdbMV0tKCRjKiRzaGFkaW5nc3RyZW5ndGgpKTsJCQkgDQoJCQkJaW1hZ2Vjb3B5bWVyZ2UoJHRoaXMtPmltLCR0aGlzLT5uZXdpbWFnZSwwLCRjLDAsMCwkdGhpcy0+c2l6ZVswXSwxLG1heChtaW4oJG9wYWNpdHksMTAwKSwwKSk7DQoJCQl9CQkJDQoJCX0gZWxzZSB7DQoJCQkkc2hhZGluZ3N0cmVuZ3RoPSR0aGlzLT5TaGFkaW5nWzFdLygkdGhpcy0+c2l6ZVsxXSooJHRoaXMtPlNoYWRpbmdbMl0vMTAwKSk7DQoJCQlmb3IgKCRjPSR0aGlzLT5zaXplWzFdLWZsb29yKCgkdGhpcy0+c2l6ZVsxXSooJHRoaXMtPlNoYWRpbmdbMl0vMTAwKSkpOyRjPCR0aGlzLT5zaXplWzFdOyRjKyspIHsgDQoJCQkJJG9wYWNpdHk9Zmxvb3IoJHNoYWRpbmdzdHJlbmd0aCooJGMtKCR0aGlzLT5zaXplWzFdLWZsb29yKCgkdGhpcy0+c2l6ZVsxXSooJHRoaXMtPlNoYWRpbmdbMl0vMTAwKSkpKSkpOyANCgkJCQlpbWFnZWNvcHltZXJnZSgkdGhpcy0+aW0sJHRoaXMtPm5ld2ltYWdlLDAsJGMsMCwwLCR0aGlzLT5zaXplWzBdLDEsbWF4KG1pbigkb3BhY2l0eSwxMDApLDApKTsNCgkJCX0JCQkNCgkJfQ0KCQlpbWFnZWRlc3Ryb3koJHRoaXMtPm5ld2ltYWdlKTsNCgkNCgl9CQkNCg0KCS8qKg0KCSAqIEFwcGx5IG1pcnJvciBlZmZlY3QgdG8gdGhlIHRodW1ibmFpbCB3aXRoIGdyYWRpZW50IA0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gbWlycm9yKCkgew0KCQkNCgkJJGJvdHRvbT1mbG9vcigoJHRoaXMtPk1pcnJvclszXS8xMDApKiR0aGlzLT50aHVtYnkpKyR0aGlzLT5NaXJyb3JbNF07DQoJCSR0aGlzLT5uZXdpbWFnZT1pbWFnZWNyZWF0ZXRydWVjb2xvcigkdGhpcy0+dGh1bWJ4LCR0aGlzLT50aHVtYnkrJGJvdHRvbSk7DQoJCWltYWdlZmlsbGVkcmVjdGFuZ2xlKCR0aGlzLT5uZXdpbWFnZSwwLDAsJHRoaXMtPnRodW1ieCwkdGhpcy0+dGh1bWJ5KyRib3R0b20saW1hZ2Vjb2xvcmFsbG9jYXRlKCR0aGlzLT5uZXdpbWFnZSxoZXhkZWMoc3Vic3RyKCR0aGlzLT5CYWNrZ3JvdW5kY29sb3IsMSwyKSksaGV4ZGVjKHN1YnN0cigkdGhpcy0+QmFja2dyb3VuZGNvbG9yLDMsMikpLGhleGRlYyhzdWJzdHIoJHRoaXMtPkJhY2tncm91bmRjb2xvciw1LDIpKSkpOw0KCQlpbWFnZWNvcHkoJHRoaXMtPm5ld2ltYWdlLCR0aGlzLT50aHVtYiwwLDAsMCwwLCR0aGlzLT50aHVtYngsJHRoaXMtPnRodW1ieSk7DQoJCWltYWdlZGVzdHJveSgkdGhpcy0+dGh1bWIpOyR0aGlzLT50aHVtYj1pbWFnZWNyZWF0ZXRydWVjb2xvcigkdGhpcy0+dGh1bWJ4LCR0aGlzLT50aHVtYnkrJGJvdHRvbSk7DQoJCWltYWdlY29weSgkdGhpcy0+dGh1bWIsJHRoaXMtPm5ld2ltYWdlLDAsMCwwLDAsJHRoaXMtPnRodW1ieCwkdGhpcy0+dGh1bWJ5KyRib3R0b20pOw0KCQlpbWFnZWRlc3Ryb3koJHRoaXMtPm5ld2ltYWdlKTskdGhpcy0+dGh1bWJ4PWltYWdlc3goJHRoaXMtPnRodW1iKTskdGhpcy0+dGh1bWJ5PWltYWdlc3koJHRoaXMtPnRodW1iKTsNCgkJZm9yICgkcHg9MDskcHg8JHRoaXMtPnRodW1ieDskcHgrKykgew0KCQkJZm9yICgkcHk9JHRoaXMtPnRodW1ieS0oJGJvdHRvbSoyKSskdGhpcy0+TWlycm9yWzRdOyRweTwoJHRoaXMtPnRodW1ieS0kYm90dG9tKTskcHkrKykge2ltYWdlY29weSgkdGhpcy0+dGh1bWIsJHRoaXMtPnRodW1iLCRweCwkdGhpcy0+dGh1bWJ5LSgkcHktKCR0aGlzLT50aHVtYnktKCRib3R0b20qMikpKS0xKyR0aGlzLT5NaXJyb3JbNF0sJHB4LCRweSwxLDEpO30NCgkJfQ0KCQkkdGhpcy0+bmV3aW1hZ2U9aW1hZ2VjcmVhdGV0cnVlY29sb3IoJHRoaXMtPnRodW1ieCwxKTsNCgkJaW1hZ2VmaWxsZWRyZWN0YW5nbGUoJHRoaXMtPm5ld2ltYWdlLDAsMCwkdGhpcy0+dGh1bWJ4LDEsaW1hZ2Vjb2xvcmFsbG9jYXRlKCR0aGlzLT5uZXdpbWFnZSxoZXhkZWMoc3Vic3RyKCR0aGlzLT5NaXJyb3Jjb2xvciwxLDIpKSxoZXhkZWMoc3Vic3RyKCR0aGlzLT5NaXJyb3Jjb2xvciwzLDIpKSxoZXhkZWMoc3Vic3RyKCR0aGlzLT5NaXJyb3Jjb2xvciw1LDIpKSkpOwkNCgkJJHNoYWRpbmdzdHJlbmd0aD0oJHRoaXMtPk1pcnJvclsyXS0kdGhpcy0+TWlycm9yWzFdKS8kYm90dG9tOw0KCQlmb3IgKCRjPSR0aGlzLT50aHVtYnktJGJvdHRvbTskYzwkdGhpcy0+dGh1bWJ5OyRjKyspIHsgDQoJCQkkb3BhY2l0eT0kdGhpcy0+TWlycm9yWzFdK2Zsb29yKCgkYm90dG9tLSgkdGhpcy0+dGh1bWJ5LSRjKSkqJHNoYWRpbmdzdHJlbmd0aCk7DQoJCQlpbWFnZWNvcHltZXJnZSgkdGhpcy0+dGh1bWIsJHRoaXMtPm5ld2ltYWdlLDAsJGMsMCwwLCR0aGlzLT50aHVtYngsMSxtYXgobWluKCRvcGFjaXR5LDEwMCksMCkpOw0KCQl9CQ0KCQlpbWFnZWRlc3Ryb3koJHRoaXMtPm5ld2ltYWdlKTsNCg0KCX0NCg0KCS8qKg0KCSAqIENyZWF0ZSBhIG5lZ2F0aXZlDQoJICoNCgkgKi8JDQoJcHJpdmF0ZSBmdW5jdGlvbiBuZWdhdGl2ZSgpIHsNCgkJDQoJCWlmIChmdW5jdGlvbl9leGlzdHMoJ2ltYWdlZmlsdGVyJykpIHsNCgkJCWltYWdlZmlsdGVyKCR0aGlzLT5pbSxJTUdfRklMVEVSX05FR0FURSk7DQoJCX0gZWxzZSB7DQoJCQlmb3IgKCR5PTA7JHk8JHRoaXMtPnNpemVbMV07JHkrKykgew0KCQkJCWZvciAoJHg9MDskeDwkdGhpcy0+c2l6ZVswXTskeCsrKSB7DQoJCQkJCSRwaXhlbD1JbWFnZUNvbG9yQXQoJHRoaXMtPmltLCR4LCR5KTsNCgkJCQkJaW1hZ2VzZXRwaXhlbCgkdGhpcy0+aW0sJHgsJHksaW1hZ2Vjb2xvcmFsbG9jYXRlYWxwaGEoJHRoaXMtPmltLDI1NS0oJHBpeGVsID4+IDE2ICYgMHhGRiksMjU1LSgkcGl4ZWwgPj4gOCAmIDB4RkYpLDI1NS0oJHBpeGVsICYgMHhGRiksJHBpeGVsID4+IDI0ICYgMHhGRikpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KDQoJfQ0KCQ0KCS8qKg0KCSAqIFJlcGxhY2UgYSBjb2xvcg0KCSAqIEV1Y2xlZGlhbiBjb2xvciB2ZWN0b3IgZGlzdGFuY2UNCgkgKg0KCSAqLwkNCglwcml2YXRlIGZ1bmN0aW9uIGNvbG9ycmVwbGFjZSgpIHsNCgkJDQoJCSRyZWQ9aGV4ZGVjKHN1YnN0cigkdGhpcy0+Q29sb3JyZXBsYWNlWzFdLDEsMikpOyRncmVlbj1oZXhkZWMoc3Vic3RyKCR0aGlzLT5Db2xvcnJlcGxhY2VbMV0sMywyKSk7JGJsdWU9aGV4ZGVjKHN1YnN0cigkdGhpcy0+Q29sb3JyZXBsYWNlWzFdLDUsMikpOw0KCQkkcmVkbmV3PWhleGRlYyhzdWJzdHIoJHRoaXMtPkNvbG9ycmVwbGFjZVsyXSwxLDIpKTskZ3JlZW5uZXc9aGV4ZGVjKHN1YnN0cigkdGhpcy0+Q29sb3JyZXBsYWNlWzJdLDMsMikpOyRibHVlbmV3PWhleGRlYyhzdWJzdHIoJHRoaXMtPkNvbG9ycmVwbGFjZVsyXSw1LDIpKTsNCgkJJHRvbGVyYW5jZT1zcXJ0KHBvdygkdGhpcy0+Q29sb3JyZXBsYWNlWzNdLDIpK3BvdygkdGhpcy0+Q29sb3JyZXBsYWNlWzNdLDIpK3BvdygkdGhpcy0+Q29sb3JyZXBsYWNlWzNdLDIpKTsNCgkJZm9yICgkeT0wOyR5PCR0aGlzLT5zaXplWzFdOyR5KyspIHsNCgkJCWZvciAoJHg9MDskeDwkdGhpcy0+c2l6ZVswXTskeCsrKSB7DQoJCQkJJHBpeGVsPUltYWdlQ29sb3JBdCgkdGhpcy0+aW0sJHgsJHkpOw0KCQkJCSRyZWRwaXg9KCRwaXhlbCA+PiAxNiAmIDB4RkYpOyRncmVlbnBpeD0oJHBpeGVsID4+IDggJiAweEZGKTskYmx1ZXBpeD0oJHBpeGVsICYgMHhGRik7DQoJCQkJaWYgKHNxcnQocG93KCRyZWRwaXgtJHJlZCwyKStwb3coJGdyZWVucGl4LSRncmVlbiwyKStwb3coJGJsdWVwaXgtJGJsdWUsMikpPCR0b2xlcmFuY2UpDQoJCQkJCWltYWdlc2V0cGl4ZWwoJHRoaXMtPmltLCR4LCR5LGltYWdlY29sb3JhbGxvY2F0ZWFscGhhKCR0aGlzLT5pbSwkcmVkbmV3LCRncmVlbm5ldywkYmx1ZW5ldywkcGl4ZWwgPj4gMjQgJiAweEZGKSk7CQ0KCQkJfQ0KCQl9DQoNCgl9CQ0KDQoJLyoqDQoJICogUmFuZG9tbHkgcmVwb3NpdGlvbiBwaXhlbHMNCgkgKg0KCSAqLwkNCglwcml2YXRlIGZ1bmN0aW9uIHBpeGVsc2NyYW1ibGUoKSB7DQoJCQ0KCQlmb3IgKCRpPTA7JGk8JHRoaXMtPlBpeGVsc2NyYW1ibGVbMl07JGkrKykgew0KCQkkdGhpcy0+bmV3aW1hZ2U9aW1hZ2VjcmVhdGV0cnVlY29sb3IoJHRoaXMtPnNpemVbMF0sJHRoaXMtPnNpemVbMV0pOw0KCQlmb3IgKCR5PTA7JHk8JHRoaXMtPnNpemVbMV07JHkrKykgew0KCQkJZm9yICgkeD0wOyR4PCR0aGlzLT5zaXplWzBdOyR4KyspIHsNCgkJCQkkbmV3eD0keCtyYW5kKC0kdGhpcy0+UGl4ZWxzY3JhbWJsZVsxXSwkdGhpcy0+UGl4ZWxzY3JhbWJsZVsxXSk7DQoJCQkJJG5ld3k9JHkrcmFuZCgtJHRoaXMtPlBpeGVsc2NyYW1ibGVbMV0sJHRoaXMtPlBpeGVsc2NyYW1ibGVbMV0pOw0KCQkJCWlmICgkbmV3eDwwICYmICRuZXd4Pj0kdGhpcy0+c2l6ZVswXSkgeyRuZXd4PSR4O30NCgkJCQlpZiAoJG5ld3k8MCAmJiAkbmV3eT49JHRoaXMtPnNpemVbMV0pIHskbmV3eT0keTt9DQoJCQkJaW1hZ2Vjb3B5KCR0aGlzLT5uZXdpbWFnZSwkdGhpcy0+aW0sJG5ld3gsJG5ld3ksJHgsJHksMSwxKTsNCgkJCQlpbWFnZWNvcHkoJHRoaXMtPm5ld2ltYWdlLCR0aGlzLT5pbSwkeCwkeSwkbmV3eCwkbmV3eSwxLDEpOw0KCQkJfQ0KCQl9DQoJCWltYWdlY29weSgkdGhpcy0+aW0sJHRoaXMtPm5ld2ltYWdlLDAsMCwwLDAsJHRoaXMtPnNpemVbMF0sJHRoaXMtPnNpemVbMV0pOw0KCQlpbWFnZWRlc3Ryb3koJHRoaXMtPm5ld2ltYWdlKTsNCgkJfQ0KCQkNCgl9DQoNCgkvKioNCgkgKiBDb252ZXJ0IHRvIGdyZXlzY2FsZQ0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gZ3JleXNjYWxlKCkgew0KCQkNCgkJaWYgKGZ1bmN0aW9uX2V4aXN0cygnaW1hZ2VmaWx0ZXInKSkgew0KCQkJaW1hZ2VmaWx0ZXIoJHRoaXMtPmltLElNR19GSUxURVJfR1JBWVNDQUxFKTsNCgkJfSBlbHNlIHsNCgkJCWZvciAoJHk9MDskeTwkdGhpcy0+c2l6ZVsxXTskeSsrKSB7DQoJCQkJZm9yICgkeD0wOyR4PCR0aGlzLT5zaXplWzBdOyR4KyspIHsNCgkJCQkJJHBpeGVsPUltYWdlQ29sb3JBdCgkdGhpcy0+aW0sJHgsJHkpOw0KCQkJCQkkZ3JleT1mbG9vcigoJHBpeGVsID4+IDE2ICYgMHhGRikqMC4yOTkgKyAoJHBpeGVsID4+IDggJiAweEZGKSowLjU4NyArICgkcGl4ZWwgJiAweEZGKSowLjExNCk7DQoJCQkJCWltYWdlc2V0cGl4ZWwoJHRoaXMtPmltLCR4LCR5LGltYWdlY29sb3JhbGxvY2F0ZWFscGhhKCR0aGlzLT5pbSwkZ3JleSwkZ3JleSwkZ3JleSwkcGl4ZWwgPj4gMjQgJiAweEZGKSk7DQoJCQkJfQ0KCQkJfQ0KCQl9CQkNCg0KCX0NCg0KCS8qKg0KCSAqIENoYW5nZSBicmlnaHRuZXNzDQoJICoNCgkgKi8JDQoJcHJpdmF0ZSBmdW5jdGlvbiBicmlnaHRuZXNzKCkgew0KCQkNCgkJaWYgKGZ1bmN0aW9uX2V4aXN0cygnaW1hZ2VmaWx0ZXInKSkgew0KCQkJaW1hZ2VmaWx0ZXIoJHRoaXMtPmltLElNR19GSUxURVJfQlJJR0hUTkVTUywkdGhpcy0+QnJpZ2h0bmVzc1sxXSk7DQoJCX0gZWxzZSB7DQoJCQlmb3IgKCR5PTA7JHk8JHRoaXMtPnNpemVbMV07JHkrKykgew0KCQkJCWZvciAoJHg9MDskeDwkdGhpcy0+c2l6ZVswXTskeCsrKSB7DQoJCQkJCSRwaXhlbD1JbWFnZUNvbG9yQXQoJHRoaXMtPmltLCR4LCR5KTsNCgkJCQkJJHJlZHBpeD1tYXgoMCxtaW4oMjU1LCgkcGl4ZWwgPj4gMTYgJiAweEZGKSsoJHRoaXMtPkJyaWdodG5lc3NbMV0vMTAwKSoyNTUpKTsNCgkJCQkJJGdyZWVucGl4PW1heCgwLG1pbigyNTUsKCRwaXhlbCA+PiA4ICYgMHhGRikrKCR0aGlzLT5CcmlnaHRuZXNzWzFdLzEwMCkqMjU1KSk7DQoJCQkJCSRibHVlcGl4PW1heCgwLG1pbigyNTUsKCRwaXhlbCAmIDB4RkYpKygkdGhpcy0+QnJpZ2h0bmVzc1sxXS8xMDApKjI1NSkpOw0KCQkJCQlpbWFnZXNldHBpeGVsKCR0aGlzLT5pbSwkeCwkeSxpbWFnZWNvbG9yYWxsb2NhdGVhbHBoYSgkdGhpcy0+aW0sJHJlZHBpeCwkZ3JlZW5waXgsJGJsdWVwaXgsJHBpeGVsID4+IDI0ICYgMHhGRikpOw0KCQkJCX0NCgkJCX0NCgkJfQkJDQoNCgl9DQoNCgkvKioNCgkgKiBDaGFuZ2UgY29udHJhc3QNCgkgKg0KCSAqLwkNCglwcml2YXRlIGZ1bmN0aW9uIGNvbnRyYXN0KCkgew0KCQkNCgkJaWYgKGZ1bmN0aW9uX2V4aXN0cygnaW1hZ2VmaWx0ZXInKSkgew0KCQkJaW1hZ2VmaWx0ZXIoJHRoaXMtPmltLElNR19GSUxURVJfQ09OVFJBU1QsLSR0aGlzLT5Db250cmFzdFsxXSk7DQoJCX0gZWxzZSB7DQoJCQlmb3IgKCR5PTA7JHk8JHRoaXMtPnNpemVbMV07JHkrKykgew0KCQkJCWZvciAoJHg9MDskeDwkdGhpcy0+c2l6ZVswXTskeCsrKSB7DQoJCQkJCSRwaXhlbD1JbWFnZUNvbG9yQXQoJHRoaXMtPmltLCR4LCR5KTsNCgkJCQkJJHJlZHBpeD1tYXgoMCxtaW4oMjU1LCgoKCgkcGl4ZWwgPj4gMTYgJiAweEZGKS8yNTUpLTAuNSkqKCR0aGlzLT5Db250cmFzdFsxXS8xMDArMSkrMC41KSoyNTUpKTsNCgkJCQkJJGdyZWVucGl4PW1heCgwLG1pbigyNTUsKCgoKCRwaXhlbCA+PiA4ICYgMHhGRikvMjU1KS0wLjUpKigkdGhpcy0+Q29udHJhc3RbMV0vMTAwKzEpKzAuNSkqMjU1KSk7DQoJCQkJCSRibHVlcGl4PW1heCgwLG1pbigyNTUsKCgoKCRwaXhlbCAmIDB4RkYpLzI1NSktMC41KSooJHRoaXMtPkNvbnRyYXN0WzFdLzEwMCsxKSswLjUpKjI1NSkpOw0KCQkJCQlpbWFnZXNldHBpeGVsKCR0aGlzLT5pbSwkeCwkeSxpbWFnZWNvbG9yYWxsb2NhdGVhbHBoYSgkdGhpcy0+aW0sJHJlZHBpeCwkZ3JlZW5waXgsJGJsdWVwaXgsJHBpeGVsID4+IDI0ICYgMHhGRikpOw0KCQkJCX0NCgkJCX0NCgkJfQkJDQoNCgl9DQoNCgkvKioNCgkgKiBDaGFuZ2UgZ2FtbWENCgkgKg0KCSAqLwkNCglwcml2YXRlIGZ1bmN0aW9uIGdhbW1hKCkgew0KCQkNCgkJaW1hZ2VnYW1tYWNvcnJlY3QoJHRoaXMtPmltLDEsJHRoaXMtPkdhbW1hWzFdKTsJDQoNCgl9DQoNCgkvKioNCgkgKiBSZWR1Y2UgcGFsZXR0ZQ0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gcGFsZXR0ZSgpIHsNCgkJDQoJCWltYWdldHJ1ZWNvbG9ydG9wYWxldHRlKCR0aGlzLT5pbSxmYWxzZSwkdGhpcy0+UGFsZXR0ZVsxXSk7DQoNCgl9DQoNCgkvKioNCgkgKiBNZXJnZSBhIGNvbG9yIGluIHRoZSBpbWFnZQ0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gY29sb3JpemUoKSB7DQoJCQ0KCQlpZiAoZnVuY3Rpb25fZXhpc3RzKCdpbWFnZWZpbHRlcicpKSB7DQoJCQlpbWFnZWZpbHRlcigkdGhpcy0+aW0sSU1HX0ZJTFRFUl9DT0xPUklaRSwkdGhpcy0+Q29sb3JpemVbMV0sJHRoaXMtPkNvbG9yaXplWzJdLCR0aGlzLT5Db2xvcml6ZVszXSwkdGhpcy0+Q29sb3JpemVbNF0pOw0KCQl9IGVsc2Ugew0KCQkJZm9yICgkeT0wOyR5PCR0aGlzLT5zaXplWzFdOyR5KyspIHsNCgkJCQlmb3IgKCR4PTA7JHg8JHRoaXMtPnNpemVbMF07JHgrKykgew0KCQkJCQkkcGl4ZWw9SW1hZ2VDb2xvckF0KCR0aGlzLT5pbSwkeCwkeSk7DQoJCQkJCSRyZWRwaXg9bWF4KDAsbWluKDI1NSwoJHBpeGVsID4+IDE2ICYgMHhGRikrJHRoaXMtPkNvbG9yaXplWzFdKSk7DQoJCQkJCSRncmVlbnBpeD1tYXgoMCxtaW4oMjU1LCgkcGl4ZWwgPj4gOCAmIDB4RkYpKyR0aGlzLT5Db2xvcml6ZVsyXSkpOw0KCQkJCQkkYmx1ZXBpeD1tYXgoMCxtaW4oMjU1LCgkcGl4ZWwgJiAweEZGKSskdGhpcy0+Q29sb3JpemVbM10pKTsNCgkJCQkJJGFscGhhID1tYXgoMCxtaW4oMTI3LCgkcGl4ZWwgPj4gMjQgJiAweEZGKSskdGhpcy0+Q29sb3JpemVbNF0pKTsNCgkJCQkJaW1hZ2VzZXRwaXhlbCgkdGhpcy0+aW0sJHgsJHksaW1hZ2Vjb2xvcmFsbG9jYXRlYWxwaGEoJHRoaXMtPmltLCRyZWRwaXgsJGdyZWVucGl4LCRibHVlcGl4LCRhbHBoYSkpOw0KCQkJCX0NCgkJCX0NCgkJfQkJDQoNCgl9DQoNCgkvKioNCgkgKiBQaXhlbGF0ZSB0aGUgaW1hZ2UNCgkgKg0KCSAqLwkNCglwcml2YXRlIGZ1bmN0aW9uIHBpeGVsYXRlKCkgew0KCQkNCgkJaWYgKGZ1bmN0aW9uX2V4aXN0cygnaW1hZ2VmaWx0ZXInKSkgew0KCQkJaW1hZ2VmaWx0ZXIoJHRoaXMtPmltLElNR19GSUxURVJfUElYRUxBVEUsJHRoaXMtPlBpeGVsYXRlWzFdLHRydWUpOw0KCQl9IGVsc2Ugew0KCQkJZm9yICgkeT0wOyR5PCR0aGlzLT5zaXplWzFdOyR5Kz0kdGhpcy0+UGl4ZWxhdGVbMV0pIHsNCgkJCQlmb3IgKCR4PTA7JHg8JHRoaXMtPnNpemVbMF07JHgrPSR0aGlzLT5QaXhlbGF0ZVsxXSkgew0KCQkJCQkkcGl4ZWw9SW1hZ2VDb2xvckF0KCR0aGlzLT5pbSwkeCwkeSk7DQoJCQkJCWltYWdlZmlsbGVkcmVjdGFuZ2xlKCR0aGlzLT5pbSwkeCwkeSwkeCskdGhpcy0+UGl4ZWxhdGVbMV0tMSwkeSskdGhpcy0+UGl4ZWxhdGVbMV0tMSwkcGl4ZWwpOwkNCgkJCQl9DQoJCQl9DQoJCX0NCg0KCX0NCg0KCS8qKg0KCSAqIEJpbGluZWFyIGludGVycG9sYXRpb24gDQoJICoNCgkgKi8JDQoJcHJpdmF0ZSBmdW5jdGlvbiBiaWxpbmVhcigkeG5ldywkeW5ldykgew0KCQkNCgkJJHhmPWZsb29yKCR4bmV3KTskeGM9JHhmKzE7JGZyYWN4PSR4bmV3LSR4ZjskZnJhY3gxPTEtJGZyYWN4Ow0KCQkkeWY9Zmxvb3IoJHluZXcpOyR5Yz0keWYrMTskZnJhY3k9JHluZXctJHlmOyRmcmFjeTE9MS0kZnJhY3k7DQoJCSRmZj0kdGhpcy0+cmdicGl4ZWwoJHhmLCR5Zik7JGNmPSR0aGlzLT5yZ2JwaXhlbCgkeGMsJHlmKTsNCgkJJGZjPSR0aGlzLT5yZ2JwaXhlbCgkeGYsJHljKTskY2M9JHRoaXMtPnJnYnBpeGVsKCR4YywkeWMpOw0KCQkkcmVkPWZsb29yKCRmcmFjeTEqKCRmcmFjeDEqJGZmWydyZWQnXSskZnJhY3gqJGNmWydyZWQnXSkrJGZyYWN5KigkZnJhY3gxKiRmY1sncmVkJ10rJGZyYWN4KiRjY1sncmVkJ10pKTsNCgkJJGdyZWVuPWZsb29yKCRmcmFjeTEqKCRmcmFjeDEqJGZmWydncmVlbiddKyRmcmFjeCokY2ZbJ2dyZWVuJ10pKyRmcmFjeSooJGZyYWN4MSokZmNbJ2dyZWVuJ10rJGZyYWN4KiRjY1snZ3JlZW4nXSkpOw0KCQkkYmx1ZT1mbG9vcigkZnJhY3kxKigkZnJhY3gxKiRmZlsnYmx1ZSddKyRmcmFjeCokY2ZbJ2JsdWUnXSkrJGZyYWN5KigkZnJhY3gxKiRmY1snYmx1ZSddKyRmcmFjeCokY2NbJ2JsdWUnXSkpOw0KCQlyZXR1cm4gYXJyYXkoJ3JlZCcgPT4gJHJlZCwnZ3JlZW4nID0+ICRncmVlbiwnYmx1ZScgPT4gJGJsdWUsJ2FscGhhJyA9PiAkY2NbJ2FscGhhJ10pOw0KCQkNCgl9DQoNCgkvKioNCgkgKiBBcHBseSB0d2lybCBGWCB0byBpbWFnZQ0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gdHdpcmxmeCgpIHsNCgkJDQoJCSRyb3RhdGlvbmFtb3VudD0kdGhpcy0+VHdpcmxmeFsxXS8xMDAwOw0KCQkkY2VudGVyeD1mbG9vcigkdGhpcy0+c2l6ZVswXS8yKTskY2VudGVyeT1mbG9vcigkdGhpcy0+c2l6ZVsxXS8yKTsNCgkJJHRoaXMtPm5ld2ltYWdlPWltYWdlY3JlYXRldHJ1ZWNvbG9yKCR0aGlzLT5zaXplWzBdLCR0aGlzLT5zaXplWzFdKTsNCgkJZm9yICgkeT0wOyR5PCR0aGlzLT5zaXplWzFdOyR5KyspIHsNCgkJCWZvciAoJHg9MDskeDwkdGhpcy0+c2l6ZVswXTskeCsrKSB7DQoJCQkJJHRydWV4PSR4LSRjZW50ZXJ4OyR0cnVleT0keS0kY2VudGVyeTsNCgkJCQkkdGhldGE9YXRhbjIoKCR0cnVleSksKCR0cnVleCkpOw0KCQkJCSRyYWRpdXM9c3FydCgkdHJ1ZXgqJHRydWV4KyR0cnVleSokdHJ1ZXkpOw0KCQkJCWlmICgkdGhpcy0+VHdpcmxmeFsyXT09MCkgew0KCQkJCQkkbmV3eD0kY2VudGVyeCsoJHJhZGl1cypjb3MoJHRoZXRhKyRyb3RhdGlvbmFtb3VudCokcmFkaXVzKSk7DQoJCQkJCSRuZXd5PSRjZW50ZXJ5KygkcmFkaXVzKnNpbigkdGhldGErJHJvdGF0aW9uYW1vdW50KiRyYWRpdXMpKTsNCgkJCQl9IGVsc2Ugew0KCQkJCQkkbmV3eD0kY2VudGVyeC0oJHJhZGl1cypjb3MoJHRoZXRhKyRyb3RhdGlvbmFtb3VudCokcmFkaXVzKSk7DQoJCQkJCSRuZXd5PSRjZW50ZXJ5LSgkcmFkaXVzKnNpbigkdGhldGErJHJvdGF0aW9uYW1vdW50KiRyYWRpdXMpKTsJCQkJCQ0KCQkJCX0NCgkJCQkkbmV3cGl4PSR0aGlzLT5iaWxpbmVhcigkbmV3eCwkbmV3eSk7DQoJCQkJaW1hZ2VzZXRwaXhlbCgkdGhpcy0+bmV3aW1hZ2UsJHgsJHksaW1hZ2Vjb2xvcmFsbG9jYXRlYWxwaGEoJHRoaXMtPm5ld2ltYWdlLCRuZXdwaXhbJ3JlZCddLCRuZXdwaXhbJ2dyZWVuJ10sJG5ld3BpeFsnYmx1ZSddLCRuZXdwaXhbJ2FscGhhJ10pKTsNCgkJCX0NCgkJfQ0KCQlpbWFnZWNvcHkoJHRoaXMtPmltLCR0aGlzLT5uZXdpbWFnZSwwLDAsMCwwLCR0aGlzLT5zaXplWzBdLCR0aGlzLT5zaXplWzFdKTsNCgkJaW1hZ2VkZXN0cm95KCR0aGlzLT5uZXdpbWFnZSk7DQoNCgl9DQoNCgkvKioNCgkgKiBBcHBseSByaXBwbGUgRlggdG8gaW1hZ2UNCgkgKg0KCSAqLwkNCglwcml2YXRlIGZ1bmN0aW9uIHJpcHBsZWZ4KCkgew0KCQkNCgkJJHdhdmV4PSgoMipwaSgpKS8kdGhpcy0+c2l6ZVswXSkqJHRoaXMtPlJpcHBsZWZ4WzFdOw0KCQkkd2F2ZXk9KCgyKnBpKCkpLyR0aGlzLT5zaXplWzFdKSokdGhpcy0+UmlwcGxlZnhbM107DQoJCSR0aGlzLT5uZXdpbWFnZT1pbWFnZWNyZWF0ZXRydWVjb2xvcigkdGhpcy0+c2l6ZVswXSwkdGhpcy0+c2l6ZVsxXSk7DQoJCWZvciAoJHk9MDskeTwkdGhpcy0+c2l6ZVsxXTskeSsrKSB7DQoJCQlmb3IgKCR4PTA7JHg8JHRoaXMtPnNpemVbMF07JHgrKykgew0KCQkJCSRuZXd4PSR4KyR0aGlzLT5SaXBwbGVmeFs0XSpzaW4oJHkqJHdhdmV5KTsgDQoJCQkJJG5ld3k9JHkrJHRoaXMtPlJpcHBsZWZ4WzJdKnNpbigkeCokd2F2ZXgpOw0KCQkJCSRuZXdwaXg9JHRoaXMtPmJpbGluZWFyKCRuZXd4LCRuZXd5KTsNCgkJCQlpbWFnZXNldHBpeGVsKCR0aGlzLT5uZXdpbWFnZSwkeCwkeSxpbWFnZWNvbG9yYWxsb2NhdGVhbHBoYSgkdGhpcy0+bmV3aW1hZ2UsJG5ld3BpeFsncmVkJ10sJG5ld3BpeFsnZ3JlZW4nXSwkbmV3cGl4WydibHVlJ10sJG5ld3BpeFsnYWxwaGEnXSkpOw0KCQkJfQ0KCQl9DQoJCWltYWdlY29weSgkdGhpcy0+aW0sJHRoaXMtPm5ld2ltYWdlLDAsMCwwLDAsJHRoaXMtPnNpemVbMF0sJHRoaXMtPnNpemVbMV0pOw0KCQlpbWFnZWRlc3Ryb3koJHRoaXMtPm5ld2ltYWdlKTsNCg0KCX0NCg0KCS8qKg0KCSAqIEFwcGx5IGxha2UgRlggdG8gaW1hZ2UNCgkgKg0KCSAqLwkNCglwcml2YXRlIGZ1bmN0aW9uIGxha2VmeCgpIHsNCgkJDQoJCSR0aGlzLT5uZXdpbWFnZT1pbWFnZWNyZWF0ZXRydWVjb2xvcigkdGhpcy0+c2l6ZVswXSwkdGhpcy0+c2l6ZVsxXSk7DQoJCSR5c3RhcnQ9bWF4KCR0aGlzLT5zaXplWzFdLWZsb29yKCR0aGlzLT5zaXplWzFdKigkdGhpcy0+TGFrZWZ4WzJdLzEwMCkpLDApOw0KCQlpZiAoJHlzdGFydD4wKSB7DQoJCSAgICBpbWFnZWNvcHkoJHRoaXMtPm5ld2ltYWdlLCR0aGlzLT5pbSwwLDAsMCwwLCR0aGlzLT5zaXplWzBdLCR0aGlzLT5zaXplWzFdKTsNCgkJfQ0KCQlmb3IgKCR5PSR5c3RhcnQ7JHk8JHRoaXMtPnNpemVbMV07JHkrKykgew0KCQkJZm9yICgkeD0wOyR4PCR0aGlzLT5zaXplWzBdOyR4KyspIHsNCgkJCQkkbmV3eT0keSszKnBpKCkqKDEvJHRoaXMtPnNpemVbMV0pKiR5KnNpbigoJHRoaXMtPnNpemVbMV0qKCR0aGlzLT5MYWtlZnhbMV0vMTAwKSooJHRoaXMtPnNpemVbMV0tJHkpKS8keSk7IA0KCQkJCSRuZXdwaXg9JHRoaXMtPmJpbGluZWFyKCR4LCRuZXd5KTsNCgkJCQlpbWFnZXNldHBpeGVsKCR0aGlzLT5uZXdpbWFnZSwkeCwkeSxpbWFnZWNvbG9yYWxsb2NhdGVhbHBoYSgkdGhpcy0+bmV3aW1hZ2UsJG5ld3BpeFsncmVkJ10sJG5ld3BpeFsnZ3JlZW4nXSwkbmV3cGl4WydibHVlJ10sJG5ld3BpeFsnYWxwaGEnXSkpOw0KCQkJfQ0KCQl9DQoJCWltYWdlY29weSgkdGhpcy0+aW0sJHRoaXMtPm5ld2ltYWdlLDAsMCwwLDAsJHRoaXMtPnNpemVbMF0sJHRoaXMtPnNpemVbMV0pOw0KCQlpbWFnZWRlc3Ryb3koJHRoaXMtPm5ld2ltYWdlKTsNCg0KCX0NCg0KCS8qKg0KCSAqIEFwcGx5IHdhdGVyZHJvcCBGWCB0byBpbWFnZQ0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gd2F0ZXJkcm9wZngoKSB7DQoJCQ0KCQkkY2VudGVyeD1mbG9vcigkdGhpcy0+c2l6ZVswXS8yKTskY2VudGVyeT1mbG9vcigkdGhpcy0+c2l6ZVsxXS8yKTsNCgkJJHRoaXMtPm5ld2ltYWdlPWltYWdlY3JlYXRldHJ1ZWNvbG9yKCR0aGlzLT5zaXplWzBdLCR0aGlzLT5zaXplWzFdKTsNCgkJZm9yICgkeT0wOyR5PCR0aGlzLT5zaXplWzFdOyR5KyspIHsNCgkJCWZvciAoJHg9MDskeDwkdGhpcy0+c2l6ZVswXTskeCsrKSB7DQoJCQkJJHRydWV4PSR4LSRjZW50ZXJ4OyR0cnVleT0keS0kY2VudGVyeTsNCgkJCQkkZGlzdGFuY2U9c3FydCgkdHJ1ZXgqJHRydWV4KyR0cnVleSokdHJ1ZXkpOwkNCgkJCQkkYW1vdW50PSR0aGlzLT5XYXRlcmRyb3BmeFsxXSpzaW4oJGRpc3RhbmNlLyR0aGlzLT5XYXRlcmRyb3BmeFszXSoyKnBpKCkpOw0KCQkJCSRhbW91bnQ9JGFtb3VudCooJHRoaXMtPldhdGVyZHJvcGZ4WzJdLSRkaXN0YW5jZSkvJHRoaXMtPldhdGVyZHJvcGZ4WzJdOw0KCQkJCWlmICgkZGlzdGFuY2UhPTApIHskYW1vdW50PSRhbW91bnQqJHRoaXMtPldhdGVyZHJvcGZ4WzNdLyRkaXN0YW5jZTt9DQoJCQkJJG5ld3g9JHgrJHRydWV4KiRhbW91bnQ7DQoJCQkJJG5ld3k9JHkrJHRydWV5KiRhbW91bnQ7DQoJCQkJJG5ld3BpeD0kdGhpcy0+YmlsaW5lYXIoJG5ld3gsJG5ld3kpOw0KCQkJCWltYWdlc2V0cGl4ZWwoJHRoaXMtPm5ld2ltYWdlLCR4LCR5LGltYWdlY29sb3JhbGxvY2F0ZWFscGhhKCR0aGlzLT5uZXdpbWFnZSwkbmV3cGl4WydyZWQnXSwkbmV3cGl4WydncmVlbiddLCRuZXdwaXhbJ2JsdWUnXSwkbmV3cGl4WydhbHBoYSddKSk7DQoJCQl9DQoJCX0NCgkJaW1hZ2Vjb3B5KCR0aGlzLT5pbSwkdGhpcy0+bmV3aW1hZ2UsMCwwLDAsMCwkdGhpcy0+c2l6ZVswXSwkdGhpcy0+c2l6ZVsxXSk7DQoJCWltYWdlZGVzdHJveSgkdGhpcy0+bmV3aW1hZ2UpOw0KCQkNCgl9DQoNCgkvKioNCgkgKiBDcmVhdGUgYSB0cmFuc3BhcmVudCBpbWFnZQ0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gbWFrZXRyYW5zcGFyZW50KCkgew0KCQkNCgkJJHJlZD1oZXhkZWMoc3Vic3RyKCR0aGlzLT5NYWtldHJhbnNwYXJlbnRbMl0sMSwyKSk7JGdyZWVuPWhleGRlYyhzdWJzdHIoJHRoaXMtPk1ha2V0cmFuc3BhcmVudFsyXSwzLDIpKTskYmx1ZT1oZXhkZWMoc3Vic3RyKCR0aGlzLT5NYWtldHJhbnNwYXJlbnRbMl0sNSwyKSk7DQoJCWlmICgkdGhpcy0+TWFrZXRyYW5zcGFyZW50WzNdIT0wKSB7DQoJCQkkdHJhbnNwYXJlbnRjb2xvcj1pbWFnZWNvbG9yYWxsb2NhdGUoJHRoaXMtPnRodW1iLCRyZWQsJGdyZWVuLCRibHVlKTsNCgkJCSR0b2xlcmFuY2U9c3FydChwb3coJHRoaXMtPk1ha2V0cmFuc3BhcmVudFszXSwyKStwb3coJHRoaXMtPk1ha2V0cmFuc3BhcmVudFszXSwyKStwb3coJHRoaXMtPk1ha2V0cmFuc3BhcmVudFszXSwyKSk7DQoJCQlmb3IgKCR5PTA7JHk8JHRoaXMtPnRodW1ieTskeSsrKSB7DQoJCQkJZm9yICgkeD0wOyR4PCR0aGlzLT50aHVtYng7JHgrKykgew0KCQkJCQkkcGl4ZWw9SW1hZ2VDb2xvckF0KCR0aGlzLT50aHVtYiwkeCwkeSk7DQoJCQkJCSRyZWRwaXg9KCRwaXhlbCA+PiAxNiAmIDB4RkYpOyRncmVlbnBpeD0oJHBpeGVsID4+IDggJiAweEZGKTskYmx1ZXBpeD0oJHBpeGVsICYgMHhGRik7DQoJCQkJCWlmIChzcXJ0KHBvdygkcmVkcGl4LSRyZWQsMikrcG93KCRncmVlbnBpeC0kZ3JlZW4sMikrcG93KCRibHVlcGl4LSRibHVlLDIpKTwkdG9sZXJhbmNlKQ0KCQkJCQkJaW1hZ2VzZXRwaXhlbCgkdGhpcy0+dGh1bWIsJHgsJHksJHRyYW5zcGFyZW50Y29sb3IpOwkNCgkJCQl9DQoJCQl9DQoJCX0NCgkJJHRyYW5zcGFyZW50Y29sb3I9aW1hZ2Vjb2xvcmFsbG9jYXRlKCR0aGlzLT50aHVtYiwkcmVkLCRncmVlbiwkYmx1ZSk7DQoJCWltYWdlY29sb3J0cmFuc3BhcmVudCgkdGhpcy0+dGh1bWIsJHRyYW5zcGFyZW50Y29sb3IpOwkNCgkJaWYgKCR0aGlzLT5NYWtldHJhbnNwYXJlbnRbMV0hPTIpIHsNCgkJCWlmICgkdGhpcy0+TWFrZXRyYW5zcGFyZW50WzFdPT0wKSB7JHRoaXMtPnNpemVbMl09Mzt9IGVsc2UgeyR0aGlzLT5zaXplWzJdPTE7fQ0KCQl9DQoJfQ0KCQ0KCS8qKg0KCSAqIENyZWF0ZSBhIGFuaW1hdGVkIFBORyBpbWFnZQ0KCSAqDQoJICogQHBhcmFtIGFycmF5ICRmcmFtZXMNCgkgKiBAcGFyYW0gc3RyaW5nICRvdXRwdXQNCgkgKiBAcGFyYW0gc3RyaW5nICRkZWxheQ0KCSAqLwkNCglwdWJsaWMgZnVuY3Rpb24gQ3JlYXRlX2FwbmcoJGZyYW1lcywgJG91dHB1dEZpbGVuYW1lLCAkZGVsYXkpIHsNCiAgICAgICAgDQoJCSRpbWFnZURhdGEgPSBhcnJheSgpOw0KCQkkSUhEUiA9IGFycmF5KCk7DQoJCSRzZXF1ZW5jZU51bWJlciA9IDA7DQoJCWZvcmVhY2ggKCRmcmFtZXMgYXMgJGZyYW1lKSB7DQoJCQlpZiAoZmlsZV9leGlzdHMoJGZyYW1lKSkgew0KCQkJCSRmaCA9IGZvcGVuKCRmcmFtZSwncmInKTsNCgkJCQkkY2h1bmtEYXRhID0gZnJlYWQoJGZoLCA4KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJCQkJJGhlYWRlciA9IHVucGFjaygiQzFoaWdoYml0LyIuIkEzc2lnbmF0dXJlLyIuICJDMmxpbmVlbmRpbmdzLyIuIkMxZW9mLyIuIkMxZW9sIiwgJGNodW5rRGF0YSk7DQoJCQkJaWYgKGlzX2FycmF5KCRoZWFkZXIpICYmICRoZWFkZXJbJ2hpZ2hiaXQnXSA9PSAweDg5ICYmICRoZWFkZXJbJ3NpZ25hdHVyZSddID09ICJQTkciKSB7DQoJCQkJCSRJREFUPScnOw0KCQkJCQl3aGlsZSAoIWZlb2YoJGZoKSkgew0KCQkJCQkJJGNodW5rRGF0YSA9IGZyZWFkKCRmaCwgOCk7DQoJCQkJCQkkY2h1bmtEYXRhSGVhZGVyID0gdW5wYWNrICgiTjFsZW5ndGgvQTR0eXBlIiwgJGNodW5rRGF0YSk7ICAgICAgICAgICAgICAgICAgICANCgkJCQkJCXN3aXRjaCAoJGNodW5rRGF0YUhlYWRlclsndHlwZSddKSB7DQoJCQkJCQkJY2FzZSAnSUhEUic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCgkJCQkJCQkJaWYgKGNvdW50KCRJSERSKSA9PSAwKSB7DQoJCQkJCQkJCQkkY2h1bmtEYXRhID0gZnJlYWQoJGZoLCAkY2h1bmtEYXRhSGVhZGVyWydsZW5ndGgnXSk7ICAgICANCgkJCQkJCQkJCSRJSERSID0gdW5wYWNrKCJOMXdpZHRoLyIuIk4xaGVpZ2h0LyIuICJDMWJpdHMvIi4iQzFjb2xvci8iLiJDMWNvbXByZXNzaW9uLyIuIkMxcHJlZmlsdGVyLyIuIkMxaW50ZXJsYWNpbmciLCAkY2h1bmtEYXRhKTsNCgkJCQkJCQkJCWZzZWVrKCRmaCwgNCwgU0VFS19DVVIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJCQkJCQkJCX0gZWxzZSB7DQoJCQkJCQkJCQlmc2VlaygkZmgsICRjaHVua0RhdGFIZWFkZXJbJ2xlbmd0aCddICsgNCwgU0VFS19DVVIpOyAgICANCgkJCQkJCQkJfQ0KCQkJCQkJCQlicmVhazsgICAgICAgICAgICANCgkJCQkJCQljYXNlICdJREFUJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCQkJCQkJCQkkSURBVCAuPSBmcmVhZCgkZmgsICRjaHVua0RhdGFIZWFkZXJbJ2xlbmd0aCddKTsgICAgIA0KCQkJCQkJCQlmc2VlaygkZmgsIDQsIFNFRUtfQ1VSKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQoJCQkJCQkJCWJyZWFrOyAgICAgICAgICAgICAgICAgICAgICANCgkJCQkJCQljYXNlICdJRU5EJzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCQkJCQkJCQlicmVhayAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KCQkJCQkJCWRlZmF1bHQ6DQoJCQkJCQkJCWZzZWVrKCRmaCwgJGNodW5rRGF0YUhlYWRlclsnbGVuZ3RoJ10gKyA0LCBTRUVLX0NVUik7DQoJCQkJCQkJCWJyZWFrOw0KCQkJCQkJfSAgICAgICAgICAgICAgICAgICAgDQoJCQkJCX0NCgkJCQkJZmNsb3NlKCRmaCk7DQoJCQkJCSRpbWFnZURhdGFbXSA9ICRJREFUOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWZjbG9zZSgkZmgpOw0KCQkJCX0NCgkJCX0NCgkJfQ0KICAgIAkJJHBuZ0hlYWRlciA9ICJceDg5XHg1MFx4NEVceDQ3XHgwRFx4MEFceDFBXHgwQSI7DQoJCSRJSERSX2NodW5rID0gJHRoaXMtPmNyZWF0ZV9jaHVuaygnSUhEUicsIHBhY2soJ05OQ0NDQ0MnLCAkSUhEUlsnd2lkdGgnXSwgJElIRFJbJ2hlaWdodCddLCAkSUhEUlsnYml0cyddLCAkSUhEUlsnY29sb3InXSwgJElIRFJbJ2NvbXByZXNzaW9uJ10sICRJSERSWydwcmVmaWx0ZXInXSwgJElIRFJbJ2ludGVybGFjaW5nJ10pKTsNCgkJJGFjVExfY2h1bmsgPSAkdGhpcy0+Y3JlYXRlX2NodW5rKCdhY1RMJywgcGFjaygiTk4iLCBjb3VudCgkaW1hZ2VEYXRhKSwgMCkpOw0KCQkkZGF0YSA9ICR0aGlzLT5jcmVhdGVfZmNUTCgkc2VxdWVuY2VOdW1iZXIsICRJSERSWyd3aWR0aCddLCAkSUhEUlsnaGVpZ2h0J10sICRkZWxheSk7ICANCgkJJGZjVExfY2h1bmsgPSAkdGhpcy0+Y3JlYXRlX2NodW5rKCdmY1RMJywgJGRhdGEpOw0KCQkkc2VxdWVuY2VOdW1iZXIgKz0gMTsNCgkJaWYgKGNvdW50KCRpbWFnZURhdGEpID09IDEpIHskYWNUTF9jaHVuayA9ICRmY1RMX2NodW5rID0gJyc7fQ0KCQkkZmggPSBmb3Blbigkb3V0cHV0RmlsZW5hbWUsICd3Jyk7DQoJCWZvcmVhY2ggKCRpbWFnZURhdGEgYXMgJGtleSA9PiAkaW1hZ2UpIHsNCgkJCWlmICgka2V5ID09IDApIHsNCgkJCQkkZmlyc3RGcmFtZSA9ICR0aGlzLT5jcmVhdGVfY2h1bmsoJ0lEQVQnLCAkaW1hZ2UpOw0KCQkJCWZ3cml0ZSgkZmgsICRwbmdIZWFkZXIgLiAkSUhEUl9jaHVuayAuICRhY1RMX2NodW5rIC4gJGZjVExfY2h1bmsgLiAkZmlyc3RGcmFtZSk7DQoJCQl9IGVsc2Ugew0KCQkJCSRkYXRhID0gJHRoaXMtPmNyZWF0ZV9mY1RMKCRzZXF1ZW5jZU51bWJlciwgJElIRFJbJ3dpZHRoJ10sICRJSERSWydoZWlnaHQnXSwgJGRlbGF5KTsgIA0KCQkJCSRmY1RMX2NodW5rID0gJHRoaXMtPmNyZWF0ZV9jaHVuaygnZmNUTCcsICRkYXRhKTsNCgkJCQkkc2VxdWVuY2VOdW1iZXIgKz0gMTsNCgkJCQkkZGF0YSA9IHBhY2soIk4iLCAkc2VxdWVuY2VOdW1iZXIpOw0KCQkJCSRkYXRhIC49ICRpbWFnZTsgDQoJCQkJJGZkQVRfY2h1bmsgPSAkdGhpcy0+Y3JlYXRlX2NodW5rKCdmZEFUJywgJGRhdGEpOw0KCQkJCSRzZXF1ZW5jZU51bWJlciArPSAxOyAgICAgICAgICAgIA0KCQkJCWZ3cml0ZSgkZmgsICRmY1RMX2NodW5rIC4gJGZkQVRfY2h1bmspOw0KCQkJfQ0KCQl9DQoJCWZ3cml0ZSgkZmgsICR0aGlzLT5jcmVhdGVfY2h1bmsoJ0lFTkQnKSk7DQoJCWZjbG9zZSgkZmgpOw0KICAgIA0KCX0NCg0KCS8qKg0KCSAqIENyZWF0ZSBhIFBORyBiaW5hcnkgY2h1bmsNCgkgKg0KCSAqIEBwYXJhbSBhcnJheSAkdHlwZQ0KCSAqIEBwYXJhbSBzdHJpbmcgJGRhdGENCgkgKi8NCglwcml2YXRlIGZ1bmN0aW9uIGNyZWF0ZV9jaHVuaygkdHlwZSwgJGRhdGEgPSAnJykgew0KDQoJCSRjaHVuayA9IHBhY2soIk4iLCBzdHJsZW4oJGRhdGEpKSAuICR0eXBlIC4gJGRhdGEgLiBwYWNrKCJOIiwgY3JjMzIoJHR5cGUgLiAkZGF0YSkpOyAgICAgICAgDQoJCXJldHVybiAkY2h1bms7DQoJCQ0KCX0NCg0KCS8qKg0KCSAqIENyZWF0ZSBhIFBORyBmY1RMIGJpbmFyeSBjaHVuaw0KCSAqDQoJICogQHBhcmFtIGFycmF5ICRmcmFtZU51bWJlcg0KCSAqIEBwYXJhbSBzdHJpbmcgJHdpZHRoDQoJICogQHBhcmFtIHN0cmluZyAkaGVpZ2h0DQoJICogQHBhcmFtIHN0cmluZyAkZGVsYXkNCgkgKi8NCglwcml2YXRlIGZ1bmN0aW9uIGNyZWF0ZV9mY1RMKCRmcmFtZU51bWJlciwgJHdpZHRoLCAkaGVpZ2h0LCAkZGVsYXkpIHsNCg0KCQkkZmNUTCA9IGFycmF5KCk7DQoJCSRmY1RMWydzZXF1ZW5jZV9udW1iZXInXSA9ICRmcmFtZU51bWJlcjsNCgkJJGZjVExbJ3dpZHRoJ10gPSAkd2lkdGg7DQoJCSRmY1RMWydoZWlnaHQnXSA9ICRoZWlnaHQ7DQoJCSRmY1RMWyd4X29mZnNldCddID0gMDsNCgkJJGZjVExbJ3lfb2Zmc2V0J10gPSAwOw0KCQkkZmNUTFsnZGVsYXlfbnVtJ10gPSAkZGVsYXk7DQoJCSRmY1RMWydkZWxheV9kZW4nXSA9IDEwMDA7DQoJCSRmY1RMWydkaXNwb3NlX29wJ10gPSAwOw0KCQkkZmNUTFsnYmxlbmRfb3AnXSA9IDA7DQoJCSRkYXRhID0gcGFjaygiTk5OTk4iLCAkZmNUTFsnc2VxdWVuY2VfbnVtYmVyJ10sICRmY1RMWyd3aWR0aCddLCAkZmNUTFsnaGVpZ2h0J10sICRmY1RMWyd4X29mZnNldCddLCAkZmNUTFsneV9vZmZzZXQnXSk7DQoJCSRkYXRhIC49IHBhY2soIm5uIiwgJGZjVExbJ2RlbGF5X251bSddLCAkZmNUTFsnZGVsYXlfZGVuJ10pOw0KCQkkZGF0YSAuPSBwYWNrKCJjYyIsICRmY1RMWydkaXNwb3NlX29wJ10sICRmY1RMWydibGVuZF9vcCddKTsNCgkJcmV0dXJuICRkYXRhOyAgICAgDQoJCQ0KCX0NCgkNCgkvKioNCgkgKiBDcmVhdGUgaW1hZ2UgZnJvbSBjYW52YXMNCgkgKg0KCSAqIEBwYXJhbSBpbnQgd2lkdGgNCgkgKiBAcGFyYW0gaW50IGhlaWdodA0KCSAqIEBwYXJhbSBpbnQgSU1BR0VUWVBFX1hYWA0KCSAqIEBwYXJhbSBzdHJpbmcgYmFja2dyb3VuZCBjb2xvcg0KCSAqIEBwYXJhbSBib29sZWFuIHRyYW5zcGFyZW50CSANCgkgKi8JDQoJcHVibGljIGZ1bmN0aW9uIENyZWF0ZWNhbnZhcygkd2lkdGgsICRoZWlnaHQsICRmaWxldHlwZSwgJGJnY29sb3IsICR0cmFuc3BhcmVudCkgew0KICAgICAgICANCgkJJHRoaXMtPmltPWltYWdlY3JlYXRldHJ1ZWNvbG9yKCR3aWR0aCwkaGVpZ2h0KTsNCgkJJHRoaXMtPnNpemU9YXJyYXkoJHdpZHRoLCRoZWlnaHQsJGZpbGV0eXBlKTsNCgkJJGNvbG9yPWltYWdlY29sb3JhbGxvY2F0ZSgkdGhpcy0+aW0saGV4ZGVjKHN1YnN0cigkYmdjb2xvciwxLDIpKSxoZXhkZWMoc3Vic3RyKCRiZ2NvbG9yLDMsMikpLGhleGRlYyhzdWJzdHIoJGJnY29sb3IsNSwyKSkpOw0KCQlpbWFnZWZpbGxlZHJlY3RhbmdsZSgkdGhpcy0+aW0sMCwwLCR3aWR0aCwkaGVpZ2h0LCRjb2xvcik7DQoJCWlmICgkdHJhbnNwYXJlbnQpIHsNCgkJCSR0aGlzLT5LZWVwdHJhbnNwYXJlbmN5PXRydWU7DQoJCQlpbWFnZWNvbG9ydHJhbnNwYXJlbnQoJHRoaXMtPmltLCRjb2xvcik7DQoJCX0NCgkJDQoJfQkNCgkNCgkvKioNCgkgKiBPdXRwdXQgdGhlIHRodW1ibmFpbCBhcyBiYXNlNjQgZW5jb2RlZCB0ZXh0DQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nIGZpbGVuYW1lDQoJICovCQ0KCXB1YmxpYyBmdW5jdGlvbiBDcmVhdGViYXNlNjQoJGZpbGVuYW1lPSJ1bmtub3duIikgew0KDQoJCSR0aGlzLT5pbWFnZT0kZmlsZW5hbWU7DQoJCSR0aGlzLT50aHVtYm1ha2VyKCk7DQoJCW9iX3N0YXJ0KCk7DQoJCXN3aXRjaCgkdGhpcy0+c2l6ZVsyXSkgew0KCQkJY2FzZSAxOg0KCQkJCSRlbmNvZGluZz0nZGF0YTppbWFnZS9naWY7YmFzZTY0LCc7DQoJCQkJaW1hZ2VnaWYoJHRoaXMtPnRodW1iKTsNCgkJCQlicmVhazsNCgkJCWNhc2UgMjoNCgkJCQkkZW5jb2Rpbmc9J2RhdGE6aW1hZ2UvanBlZztiYXNlNjQsJzsNCgkJCQlpbWFnZWpwZWcoJHRoaXMtPnRodW1iLE5VTEwsJHRoaXMtPlF1YWxpdHkpOw0KCQkJCWJyZWFrOw0KCQkJY2FzZSAzOg0KCQkJCSRlbmNvZGluZz0nZGF0YTppbWFnZS9wbmc7YmFzZTY0LCc7DQoJCQkJaW1hZ2VwbmcoJHRoaXMtPnRodW1iKTsNCgkJCQlicmVhazsNCgkJfQ0KCQkkaW1hZ2Vjb2RlPW9iX2dldF9jb250ZW50cygpOw0KCQlvYl9lbmRfY2xlYW4oKTsNCgkJJGVuY29kZWQ9JGVuY29kaW5nIC4gY2h1bmtfc3BsaXQoYmFzZTY0X2VuY29kZSgkaW1hZ2Vjb2RlKSkgLiAnIic7IA0KCQlyZXR1cm4gJGVuY29kZWQ7DQoJCQ0KCX0NCgkNCgkvKioNCgkgKiBBcHBseSBwb2xhcm9pZCBsb29rIHRvIG9yaWdpbmFsIGltYWdlDQoJICoNCgkgKi8JDQoJcHJpdmF0ZSBmdW5jdGlvbiBwb2xhcm9pZCgpIHsNCgkNCgkJJG9yaWdpbmFsYXJyYXk9JHRoaXMtPkNyb3BpbWFnZTsNCgkJaWYgKCR0aGlzLT5zaXplWzBdPiR0aGlzLT5zaXplWzFdKSB7DQoJCQkkY3JvcHdpZHRoPWZsb29yKCgkdGhpcy0+c2l6ZVswXS1mbG9vcigoJHRoaXMtPnNpemVbMV0vMS4wNSkpKS8yKTsNCgkJCSR0aGlzLT5Dcm9waW1hZ2U9YXJyYXkoMSwxLCRjcm9wd2lkdGgsJGNyb3B3aWR0aCwwLC0xKmZsb29yKDAuMTYqJHRoaXMtPnNpemVbMV0pKTsNCgkJCSR0aGlzLT5jcm9waW1hZ2UoKTsNCgkJCSR0aGlzLT5GcmFtZXdpZHRoPWZsb29yKDAuMDUqKCR0aGlzLT5zaXplWzFdLTIqJGNyb3B3aWR0aCkpOw0KCQl9IGVsc2Ugew0KCQkJJGNyb3BoZWlnaHQ9Zmxvb3IoKCR0aGlzLT5zaXplWzFdLWZsb29yKCgkdGhpcy0+c2l6ZVswXS8xLjA1KSkpLzIpOw0KCQkJJGJvdHRvbT0tMSpmbG9vcigwLjE2KiR0aGlzLT5zaXplWzFdKTsNCgkJCSR0aGlzLT5Dcm9waW1hZ2U9YXJyYXkoMSwxLDAsMCwkY3JvcGhlaWdodCwkY3JvcGhlaWdodCk7DQoJCQkkdGhpcy0+Y3JvcGltYWdlKCk7DQoJCQkkdGhpcy0+Q3JvcGltYWdlPWFycmF5KDEsMSwwLDAsMCwkYm90dG9tKTsNCgkJCSR0aGlzLT5jcm9waW1hZ2UoKTsNCgkJCSR0aGlzLT5GcmFtZXdpZHRoPWZsb29yKDAuMDUqJHRoaXMtPnNpemVbMF0pOw0KCQl9DQoJCSR0aGlzLT5Dcm9waW1hZ2U9JG9yaWdpbmFsYXJyYXk7DQoJCWlmICgkdGhpcy0+UG9sYXJvaWR0ZXh0IT0nJyAmJiAkdGhpcy0+UG9sYXJvaWRmb250dHlwZSE9JycpIHsNCgkJICAkZGltZW5zaW9ucz1pbWFnZXR0ZmJib3goJHRoaXMtPlBvbGFyb2lkZm9udHNpemUsMCwkdGhpcy0+UG9sYXJvaWRmb250dHlwZSwkdGhpcy0+UG9sYXJvaWR0ZXh0KTsNCgkJCSR3aWR0aHg9JGRpbWVuc2lvbnNbMl07DQoJCQkkaGVpZ2h0eT0kZGltZW5zaW9uc1s1XTsNCgkJCSR5PSR0aGlzLT5zaXplWzFdLWZsb29yKCR0aGlzLT5zaXplWzFdKjAuMDgpLSRoZWlnaHR5Ow0KCQkJJHg9Zmxvb3IoKCR0aGlzLT5zaXplWzBdLSR3aWR0aHgpLzIpOw0KCQkJaW1hZ2V0dGZ0ZXh0KCR0aGlzLT5pbSwkdGhpcy0+UG9sYXJvaWRmb250c2l6ZSwwLCR4LCR5LGltYWdlY29sb3JhbGxvY2F0ZSgkdGhpcy0+aW0saGV4ZGVjKHN1YnN0cigkdGhpcy0+UG9sYXJvaWR0ZXh0Y29sb3IsMSwyKSksaGV4ZGVjKHN1YnN0cigkdGhpcy0+UG9sYXJvaWR0ZXh0Y29sb3IsMywyKSksaGV4ZGVjKHN1YnN0cigkdGhpcy0+UG9sYXJvaWR0ZXh0Y29sb3IsNSwyKSkpLCR0aGlzLT5Qb2xhcm9pZGZvbnR0eXBlLCR0aGlzLT5Qb2xhcm9pZHRleHQpOwkJDQoJCX0NCgkJDQoJfQ0KDQoJLyoqDQoJICogQXBwbHkgZGlzcGxhY2VtZW50IG1hcA0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gZGlzcGxhY2UoKSB7DQoJCQ0KCQlpZiAoZmlsZV9leGlzdHMoJHRoaXMtPkRpc3BsYWNlbWVudG1hcFsxXSkpIHsNCgkJCSRzaXplPUdldEltYWdlU2l6ZSgkdGhpcy0+RGlzcGxhY2VtZW50bWFwWzFdKTsNCgkJCXN3aXRjaCgkc2l6ZVsyXSkgew0KCQkJCWNhc2UgMToNCgkJCQkJaWYgKGltYWdldHlwZXMoKSAmIElNR19HSUYpIHskbWFwPWltYWdlY3JlYXRlZnJvbWdpZigkdGhpcy0+RGlzcGxhY2VtZW50bWFwWzFdKTt9IGVsc2UgeyRtYXA9aW1hZ2VjcmVhdGV0cnVlY29sb3IoMTAwLDEwMCk7fQ0KCQkJCQlicmVhazsNCgkJCQljYXNlIDI6DQoJCQkJCWlmIChpbWFnZXR5cGVzKCkgJiBJTUdfSlBHKSB7JG1hcD1pbWFnZWNyZWF0ZWZyb21qcGVnKCR0aGlzLT5EaXNwbGFjZW1lbnRtYXBbMV0pO30gZWxzZSB7JG1hcD1pbWFnZWNyZWF0ZXRydWVjb2xvcigxMDAsMTAwKTt9DQoJCQkJCWJyZWFrOw0KCQkJCWNhc2UgMzoNCgkJCQkJaWYgKGltYWdldHlwZXMoKSAmIElNR19QTkcpIHskbWFwPWltYWdlY3JlYXRlZnJvbXBuZygkdGhpcy0+RGlzcGxhY2VtZW50bWFwWzFdKTt9IGVsc2UgeyRtYXA9aW1hZ2VjcmVhdGV0cnVlY29sb3IoMTAwLDEwMCk7fQ0KCQkJCQlicmVhazsNCgkJCQlkZWZhdWx0Og0KCQkJCQkkbWFwPWltYWdlY3JlYXRldHJ1ZWNvbG9yKDEwMCwxMDApOw0KCQkJfQ0KCQl9IGVsc2Ugew0KCQkJJG1hcD1pbWFnZWNyZWF0ZXRydWVjb2xvcigxMDAsMTAwKTsNCgkJfQ0KCQkkbWFweG1heD1pbWFnZXN4KCRtYXApOyRtYXB5bWF4PWltYWdlc3koJG1hcCk7DQoJCSR0aGlzLT5uZXdpbWFnZT1pbWFnZWNyZWF0ZXRydWVjb2xvcigkdGhpcy0+c2l6ZVswXSwkdGhpcy0+c2l6ZVsxXSk7DQoJCWlmICgkdGhpcy0+RGlzcGxhY2VtZW50bWFwWzJdPT0wKSB7DQoJCQkkbWFwdG1wPWltYWdlY3JlYXRldHJ1ZWNvbG9yKCR0aGlzLT5zaXplWzBdLCR0aGlzLT5zaXplWzFdKTsNCgkJCWltYWdlY29weXJlc2FtcGxlZCgkbWFwdG1wLCRtYXAsMCwwLDAsMCwkdGhpcy0+c2l6ZVswXSwkdGhpcy0+c2l6ZVsxXSwkbWFweG1heCwkbWFweW1heCk7DQoJCQlpbWFnZWRlc3Ryb3koJG1hcCk7DQoJCQkkbWFwPWltYWdlY3JlYXRldHJ1ZWNvbG9yKCR0aGlzLT5zaXplWzBdLCR0aGlzLT5zaXplWzFdKTsNCgkJCWltYWdlY29weSgkbWFwLCRtYXB0bXAsMCwwLDAsMCwkdGhpcy0+c2l6ZVswXSwkdGhpcy0+c2l6ZVsxXSk7DQoJCQlpbWFnZWRlc3Ryb3koJG1hcHRtcCk7DQoJCQkkbWFweG1heD0kdGhpcy0+c2l6ZVswXTsNCgkJCSRtYXB5bWF4PSR0aGlzLT5zaXplWzFdOw0KCQkJJG1hcHg9JHRoaXMtPkRpc3BsYWNlbWVudG1hcFszXTsNCgkJCSRtYXB5PSR0aGlzLT5EaXNwbGFjZW1lbnRtYXBbNF07DQoJCX0gZWxzZSB7DQoJCQkkbWFweD0kdGhpcy0+RGlzcGxhY2VtZW50bWFwWzNdOw0KCQkJJG1hcHk9JHRoaXMtPkRpc3BsYWNlbWVudG1hcFs0XTsJCQ0KCQl9DQoJCWZvciAoJHk9MDskeTwkdGhpcy0+c2l6ZVsxXTskeSsrKSB7DQoJCQlmb3IgKCR4PTA7JHg8JHRoaXMtPnNpemVbMF07JHgrKykgew0KCQkJCSRuZXd4PSR4OyRuZXd5PSR5Ow0KCQkJCWlmICgkeD49JG1hcHggJiYgJHk+PSRtYXB5KSB7DQoJCQkJCWlmICgkeDwkbWFweG1heCAmJiAkeTwkbWFweW1heCkgew0KCQkJCQkJJHBpeGVsbWFwPUltYWdlQ29sb3JBdCgkbWFwLCR4LSRtYXB4LCR5LSRtYXB5KTsNCgkJCQkJCSRyZWRtYXA9MSskcGl4ZWxtYXAgPj4gMTYgJiAweEZGOw0KCQkJCQkJJGdyZWVubWFwPTErJHBpeGVsbWFwID4+IDggJiAweEZGOw0KCQkJCQkJJG5ld3g9JHgrKCgkcmVkbWFwLTEyOCkqJHRoaXMtPkRpc3BsYWNlbWVudG1hcFs1XSkvMjU2Ow0KCQkJCQkJJG5ld3k9JHkrKCgkZ3JlZW5tYXAtMTI4KSokdGhpcy0+RGlzcGxhY2VtZW50bWFwWzZdKS8yNTY7DQoJCQkJCX0NCgkJCQl9DQoJCQkJJG5ld3BpeD0kdGhpcy0+YmlsaW5lYXIoJG5ld3gsJG5ld3kpOw0KCQkJCWltYWdlc2V0cGl4ZWwoJHRoaXMtPm5ld2ltYWdlLCR4LCR5LGltYWdlY29sb3JhbGxvY2F0ZWFscGhhKCR0aGlzLT5uZXdpbWFnZSwkbmV3cGl4WydyZWQnXSwkbmV3cGl4WydncmVlbiddLCRuZXdwaXhbJ2JsdWUnXSwkbmV3cGl4WydhbHBoYSddKSk7CQ0KCQkJfQ0KCQl9DQoJCWltYWdlY29weSgkdGhpcy0+aW0sJHRoaXMtPm5ld2ltYWdlLDAsMCwwLDAsJHRoaXMtPnNpemVbMF0sJHRoaXMtPnNpemVbMV0pOw0KCQlpbWFnZWRlc3Ryb3koJHRoaXMtPm5ld2ltYWdlKTsNCgkJaW1hZ2VkZXN0cm95KCRtYXApOw0KCQkNCgl9DQoNCgkvKioNCgkgKiBBcHBseSBkaXNwbGFjZW1lbnQgbWFwIHRvIHRodW1ibmFpbA0KCSAqDQoJICovCQ0KCXByaXZhdGUgZnVuY3Rpb24gZGlzcGxhY2V0aHVtYigpIHsNCgkJDQoJCWlmIChpc19yZXNvdXJjZSgkdGhpcy0+dGh1bWIpKSB7DQoJCQkkdGVtcGFycmF5PSR0aGlzLT5EaXNwbGFjZW1lbnRtYXA7DQoJCQlpbWFnZWRlc3Ryb3koJHRoaXMtPmltKTsNCgkJCSR0aGlzLT5pbT1pbWFnZWNyZWF0ZXRydWVjb2xvcigkdGhpcy0+dGh1bWJ4LCR0aGlzLT50aHVtYnkpOw0KCQkJaW1hZ2Vjb3B5KCR0aGlzLT5pbSwkdGhpcy0+dGh1bWIsMCwwLDAsMCwkdGhpcy0+dGh1bWJ4LCR0aGlzLT50aHVtYnkpOw0KCQkJJHRoaXMtPnNpemVbMF09JHRoaXMtPnRodW1ieDskdGhpcy0+c2l6ZVsxXT0kdGhpcy0+dGh1bWJ5Ow0KCQkJJHRoaXMtPkRpc3BsYWNlbWVudG1hcD0kdGhpcy0+RGlzcGxhY2VtZW50bWFwdGh1bWI7DQoJCQkkdGhpcy0+ZGlzcGxhY2UoKTsNCgkJCSR0aGlzLT5EaXNwbGFjZW1lbnRtYXA9JHRlbXBhcnJheTsNCgkJCWltYWdlY29weSgkdGhpcy0+dGh1bWIsJHRoaXMtPmltLDAsMCwwLDAsJHRoaXMtPnRodW1ieCwkdGhpcy0+dGh1bWJ5KTsNCgkJfQkJDQoJCQ0KCX0NCg0KCS8qKg0KCSAqIFdpcGUgRVhJRiBpbmZvcm1hdGlvbiBmcm9tIEpQRyBpbWFnZQ0KCSAqDQoJICogQHBhcmFtIHN0cmluZyBzb3VyY2UgaW1hZ2UNCgkgKiBAcGFyYW0gc3RyaW5nIGRlc3RpbmF0aW9uIGltYWdlDQoJICovCSAgICAgIA0KICAgICAgICBwdWJsaWMgZnVuY3Rpb24gd2lwZV9leGlmKCRzcmNfaW1hZ2UsICRkZXNfaW1hZ2UpIHsNCgkNCiAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHNyY19pbWFnZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgJHNyY19maWxlID0gZm9wZW4oJHNyY19pbWFnZSwgJ3JiJyk7DQogICAgICAgICAgICAgICAgICAgICR3aXBlID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIGlmICgkc3JjX2ZpbGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRoZWFkZXIgPSB1bnBhY2soIkMxYnl0ZTEvIiAuICJDMWJ5dGUyLyIsIGZyZWFkKCRzcmNfZmlsZSwgMikpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRoZWFkZXJbJ2J5dGUxJ10gPT0gMHhmZiAmICRoZWFkZXJbJ2J5dGUyJ10gPT0gMHhkOCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRoZWFkZXIgPSB1bnBhY2soIkMxYnl0ZTEvIiAuICJDMWJ5dGUyLyIsIGZyZWFkKCRzcmNfZmlsZSwgMikpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgkaGVhZGVyWydieXRlMSddID09IDB4ZmYgJiYgKCRoZWFkZXJbJ2J5dGUyJ10gPj0gMHhlMCAmJiAkaGVhZGVyWydieXRlMiddIDw9IDB4ZWYgfHwgJGhlYWRlclsnYnl0ZTInXSA9PSAweGZlKSkgew0KCQkJCSRsZW5ndGggPSB1bnBhY2soIm4xbGVuZ3RoIiwgZnJlYWQoJHNyY19maWxlLCAyKSk7CQ0KCQkJCWZzZWVrKCRzcmNfZmlsZSwgJGxlbmd0aFsnbGVuZ3RoJ10gLSAyLCBTRUVLX0NVUik7DQoJCQkJJGhlYWRlciA9IHVucGFjaygiQzFieXRlMS8iIC4gIkMxYnl0ZTIvIiwgZnJlYWQoJHNyY19maWxlLCAyKSk7DQoJCQkJJHdpcGUgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJHdpcGUpIHsNCgkJCQlmc2Vlaygkc3JjX2ZpbGUsIC0yLCBTRUVLX0NVUik7DQoJCQkJJGltYWdlX2RhdGEgPSAiXHhmZlx4ZDgiIC4gZnJlYWQoJHNyY19maWxlLCBmaWxlc2l6ZSgkc3JjX2ltYWdlKSk7DQoJCQkJZmNsb3NlKCRzcmNfZmlsZSk7DQoJCQkJJGRlc19maWxlID0gZm9wZW4oJGRlc19pbWFnZSwgJ3cnKTsNCgkJCQlpZiAoJGRlc19maWxlKSB7DQoJCQkJCWZ3cml0ZSgkZGVzX2ZpbGUsICRpbWFnZV9kYXRhKTsNCgkJCQkJZmNsb3NlKCRkZXNfZmlsZSk7DQoJCQkJCWNobW9kKCRkZXNfaW1hZ2UsIG9jdGRlYygkdGhpcy0+Q2htb2RsZXZlbCkpOw0KCQkJCX0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KCQkJCWZjbG9zZSgkc3JjX2ZpbGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmNsb3NlKCRzcmNfZmlsZSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgDQogICAgICAgIH0NCiAgICAgICAgDQoJLyoqDQoJICogUmVhZCBFWElGIGluZm9ybWF0aW9uIGZyb20gSlBHIGltYWdlDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nIHNvdXJjZSBpbWFnZQ0KCSAqLwkgICAgICANCiAgICAgICAgcHVibGljIGZ1bmN0aW9uIHJlYWRfZXhpZigkc3JjX2ltYWdlKSB7DQoJDQogICAgICAgICAgICAgICAgJGV4aWYgPSAiIjsNCiAgICAgICAgICAgICAgICBpZiAoZmlsZV9leGlzdHMoJHNyY19pbWFnZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgJHNyY19maWxlID0gZm9wZW4oJHNyY19pbWFnZSwgJ3JiJyk7DQogICAgICAgICAgICAgICAgICAgIGlmICgkc3JjX2ZpbGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRoZWFkZXIgPSB1bnBhY2soIkMxYnl0ZTEvIiAuICJDMWJ5dGUyLyIsIGZyZWFkKCRzcmNfZmlsZSwgMikpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRoZWFkZXJbJ2J5dGUxJ10gPT0gMHhmZiAmICRoZWFkZXJbJ2J5dGUyJ10gPT0gMHhkOCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRleGlmZGF0YSA9IGZyZWFkKCRzcmNfZmlsZSwgMik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGhlYWRlciA9IHVucGFjaygiQzFieXRlMS8iIC4gIkMxYnl0ZTIvIiwgJGV4aWZkYXRhKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoJGhlYWRlclsnYnl0ZTEnXSA9PSAweGZmICYmICgkaGVhZGVyWydieXRlMiddID49IDB4ZTAgJiYgJGhlYWRlclsnYnl0ZTInXSA8PSAweGVmIHx8ICRoZWFkZXJbJ2J5dGUyJ10gPT0gMHhmZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGV4aWYgLj0gJGV4aWZkYXRhOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXhpZmRhdGEgPSBmcmVhZCgkc3JjX2ZpbGUsIDIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkZXhpZiAuPSAkZXhpZmRhdGE7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRsZW5ndGggPSB1bnBhY2soIm4xbGVuZ3RoIiwgJGV4aWZkYXRhKTsNCgkJCQkkZXhpZiAuPSBmcmVhZCgkc3JjX2ZpbGUsICRsZW5ndGhbJ2xlbmd0aCddIC0gMik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRleGlmZGF0YSA9IGZyZWFkKCRzcmNfZmlsZSwgMik7DQoJCQkJJGhlYWRlciA9IHVucGFjaygiQzFieXRlMS8iIC4gIkMxYnl0ZTIvIiwgJGV4aWZkYXRhKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoJCQkgICAgZmNsb3NlKCRzcmNfZmlsZSk7DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZjbG9zZSgkc3JjX2ZpbGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiAkZXhpZjsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgfQ0KICAgICAgICANCgkvKioNCgkgKiBJbnNlcnQvb3ZlcndyaXRlIEVYSUYgaW5mb3JtYXRpb24gaW4gSlBHIGltYWdlDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nIHNvdXJjZSBpbWFnZQ0KCSAqIEBwYXJhbSBzdHJpbmcgZXhpZiBkYXRhIGluIGJpbmFyeSBmb3JtYXQNCgkgKi8JICAgICAgDQogICAgICAgIHB1YmxpYyBmdW5jdGlvbiBpbnNlcnRfZXhpZigkc3JjX2ltYWdlLCAkZXhpZmRhdGEpIHsNCg0KICAgICAgICAgICAgICAgIGlmIChmaWxlX2V4aXN0cygkc3JjX2ltYWdlKSkgew0KICAgICAgICAgICAgICAgICAgICAkc3JjX2ZpbGUgPSBmb3Blbigkc3JjX2ltYWdlLCAncmInKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRzcmNfZmlsZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJGhlYWRlciA9IHVucGFjaygiQzFieXRlMS8iIC4gIkMxYnl0ZTIvIiwgZnJlYWQoJHNyY19maWxlLCAyKSk7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGhlYWRlclsnYnl0ZTEnXSA9PSAweGZmICYgJGhlYWRlclsnYnl0ZTInXSA9PSAweGQ4KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGhlYWRlciA9IHVucGFjaygiQzFieXRlMS8iIC4gIkMxYnl0ZTIvIiwgZnJlYWQoJHNyY19maWxlLCAyKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKCRoZWFkZXJbJ2J5dGUxJ10gPT0gMHhmZiAmJiAoJGhlYWRlclsnYnl0ZTInXSA+PSAweGUwICYmICRoZWFkZXJbJ2J5dGUyJ10gPD0gMHhlZiB8fCAkaGVhZGVyWydieXRlMiddID09IDB4ZmUpKSB7DQoJCQkJJGxlbmd0aCA9IHVucGFjaygibjFsZW5ndGgiLCBmcmVhZCgkc3JjX2ZpbGUsIDIpKTsJDQoJCQkJZnNlZWsoJHNyY19maWxlLCAkbGVuZ3RoWydsZW5ndGgnXSAtIDIsIFNFRUtfQ1VSKTsNCgkJCQkkaGVhZGVyID0gdW5wYWNrKCJDMWJ5dGUxLyIgLiAiQzFieXRlMi8iLCBmcmVhZCgkc3JjX2ZpbGUsIDIpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoJCQkgICAgZnNlZWsoJHNyY19maWxlLCAtMiwgU0VFS19DVVIpOw0KCQkJICAgICRpbWFnZV9kYXRhID0gIlx4ZmZceGQ4IiAuICRleGlmZGF0YSAuIGZyZWFkKCRzcmNfZmlsZSwgZmlsZXNpemUoJHNyY19pbWFnZSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZjbG9zZSgkc3JjX2ZpbGUpOw0KCQkJICAgICRkZXNfZmlsZSA9IGZvcGVuKCRzcmNfaW1hZ2UsICd3Jyk7DQoJCQkgICAgaWYgKCRkZXNfZmlsZSkgew0KCQkJCWZ3cml0ZSgkZGVzX2ZpbGUsICRpbWFnZV9kYXRhKTsNCgkJCQlmY2xvc2UoJGRlc19maWxlKTsNCgkJCQljaG1vZCgkc3JjX2ltYWdlLCBvY3RkZWMoJHRoaXMtPkNobW9kbGV2ZWwpKTsNCgkJCSAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZjbG9zZSgkc3JjX2ZpbGUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQkNCiAgICAgICAgICAgICAgICANCiAgICAgICAgfSAgICAgICAgDQoJDQp9DQoNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/lib/external/easyphpthumbnail/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/external/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/external/simple-upload/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/external/simple-upload/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/external/simple-upload/SimpleUpload.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAgDQovKg0KICAgIGNsYXNzIFNpbXBsZVVwbG9hZCAtIGFsbG93IGVhc3kgdXBsb2FkIHdpdGggcGhwIGFuZCB3ZWIgZm9ybXMNCiAgICBDb3B5cmlnaHQgKEMpIDIwMDggU3p5bW9uIMWBdWthc3pjenlrDQoNCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KDQogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KDQogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiovDQovKioNCiogXGRldGFpbHMgIGFsbG93IGVhc3kgdXBsb2FkIHdpdGggcGhwIGFuZCB3ZWIgZm9ybXMNCiogXGF1dGhvciAgU3p5bW9uIMWBdWthc3pjenlrIDxzenltb24ubHVrYXN6Y3p5a0BnbWFpbC5jb20+DQoqIFxzaW5jZSAgQXByaWwvMjAwNw0KKi8NCmNsYXNzICBTaW1wbGVVcGxvYWQgDQp7DQoJcHJpdmF0ZSAgJGRpciA9ICIuIjsgLy8vPCBwbGFjZSB3aGVyZSBvdXIgZG93bmxvYWQgd2lsbCBiZSANCglwcml2YXRlICRmaWxlX2MgPSAwOyAvLy88IGFsbCBmaWxlIGNvbnRlbnRzDQoJcHJpdmF0ZSAgJG1heF9uYW1lX3NpemUgPSAyMDsgLy8vPCBtYXggbmFtZSBzaXplIHdpdGhvdXQgZXh0ZW5zaW9uDQoJcHJpdmF0ZSAkcmFuZG9tX3NpemU9IDU7IC8vLzwgc2l6ZSBvZiB0aGUgcmFuZG9tIHBhcnQsIGlmIGZhbHNlIC0+IG5vIHJhbmRvbSBwYXJ0DQoJcHJpdmF0ZSAkcmFuZG9tX2VuZCA9Jyc7IC8vLzwgbGFzdCBnZW5lcmF0ZWQgcmFuZG9tIGVuZGluZw0KCXByaXZhdGUgJG5hbWVfZm9ybWF0aW5nID0gIHRydWU7IC8vLzwgaWYgdHJ1ZSwgZmlsZSBpcyBjcm9wcGVkIHRvICRtYXhfbmFtZV9zaXplIGFuZCBhbGwgbm9uIFthLXpBLVowLTkuXSBhcmUgcmVtb3ZlZA0KCXByaXZhdGUgJG1ha2VfbWQ1ID0gIHRydWU7IC8vLzwgaWYgdG8gbWFrZSBtZDUgc3VtIGF0IHRoZSBlbmQNCglwcml2YXRlICRkZWJ1ZyA9IGZhbHNlOw0KCQ0KLyoqDQoqIFxicmllZiAgIHNldHMgcmFuZG9taXplIHNlZWQNCiovDQoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCAgKQ0KCXsNCgkJJHRoaXMtPmZpbGVfYyA9IGFycmF5KCk7DQoJCW10X3NyYW5kKChkb3VibGUpIG1pY3JvdGltZSgpICogMTAwMDAwMCk7DQoJCSR0aGlzLT5fZGVidWcoJHRoaXMtPmZpbGVfYyk7DQoJfQ0KDQovKiANCglwcml2YXRlIHByb3BlcnRpZXMgDQoqLw0KLyoqDQoqIFxicmllZiBnZXRzIHBhdGggdG8gdGhlIHVwbG9hZGVkIGZpbGUNCiovDQoJcHJpdmF0ZSBmdW5jdGlvbiBnZXRGaWxlUGF0aCgpDQoJew0KCQlyZXR1cm4gJHRoaXMtPmZpbGVfY1sicGF0aCJdOw0KCX0NCi8qKg0KKiBcYnJpZWYgICBzZXRzIHRoZSB1cGxvYWQgcGF0aA0KKi8NCglwcml2YXRlIGZ1bmN0aW9uIHNldEZpbGVQYXRoKCkNCgl7DQoJCSR0aGlzLT5maWxlX2NbInBhdGgiXSAgPSAgc3RyX3JlcGxhY2UoICIvLyIsICIvIiwgJHRoaXMtPmRpci4iLyIuJHRoaXMtPmZpbGVfY1siZnVsbF9uYW1lIl0gKSA7DQoJfQ0KLyogDQoJcHJpdmF0ZSBmdW5jdGlvbnMgDQoqLw0KLyoqDQoqIFxicmllZiAgZGVidWcgZnVuY3Rpb24NCiovCQ0KCXByaXZhdGUgZnVuY3Rpb24gX2RlYnVnKCAkdmFyLCAkdHh0ID0gJycgKQ0KCXsNCgkJaWYoICR0aGlzLT5kZWJ1ZyApDQoJCQl2YXJfZHVtcCgkdmFyKTsNCgl9DQoNCi8qKg0KKiBcYnJpZWYgICBzZXBhcmF0ZXMgdGhlIGZpbGUgbmFtYSBmcm9tIGV4dGVuc2lvbg0KKiBccGFyYW0gbmFtZSBnb3QgZnJvbSAkX0ZJTEVTWyduYW1lXQ0KKi8NCglwcml2YXRlIGZ1bmN0aW9uIHNldE5hbWVzKCAgJG5hbWUgKQ0KCXsNCgkJJGV4dCA9ICcnOyAkZmlsZSA9ICcnOw0KCQkkYXJyTmFtZSA9IGV4cGxvZGUoIi4iLCRuYW1lKTsNCgkJJGFyclNpemUgPSBjb3VudCgkYXJyTmFtZSk7DQoJCQ0KCQlpZiggJGFyck5hbWVbMF0gPT0gJycgKSAvLyBuYW1lIGJlZ2lucyB3aXRoIGRvdA0KCQl7DQoJCQlhcnJheV9zaGlmdCgkYXJyTmFtZSk7DQoJCQkkYXJyTmFtZVswXSA9ICIuIi4kYXJyTmFtZVswXTsNCgkJCSRhcnJTaXplID0gY291bnQoJGFyck5hbWUpOw0KCQl9CQ0KCQlpZiggJGFyclNpemUgPiAyICYmIGluX2FycmF5KCAkYXJyTmFtZVskYXJyU2l6ZS0yXS4iLiIuJGFyck5hbWVbJGFyclNpemUtMV0sICBhcnJheSgndGFyLmd6JywgJ3Rhci5ieicsICd0YXIuYnoyJykgKSkgIC8vIGRvdWJsZSBleHRlbnNpb25zDQoJCXsNCgkJCSRleHQgPSAkYXJyTmFtZVskYXJyU2l6ZS0yXS4iLiIuJGFyck5hbWVbJGFyclNpemUtMV07DQoJCQl1bnNldCggJGFyck5hbWVbJGFyclNpemUtMl0gLCAkYXJyTmFtZVskYXJyU2l6ZS0xXSApOw0KCQkJJGZpbGUgPSBpbXBsb2RlKCIuIiwgJGFyck5hbWUpOw0KCQl9DQoJCWVsc2UgaWYoICRhcnJTaXplID4gMSApIC8vIHRoZXJlIGlzIGRvdCBpbiBuYW1lDQoJCXsNCgkJCSRleHQgPSAkYXJyTmFtZVskYXJyU2l6ZS0xXTsNCgkJCXVuc2V0KCAkYXJyTmFtZVskYXJyU2l6ZS0xXSApOw0KCQkJJGZpbGUgPSBpbXBsb2RlKCIuIiwgJGFyck5hbWUpOw0KCQl9DQoJCWVsc2UgLy8gbm8gZG90IGluIG5hbWUNCgkJew0KCQkJJGZpbGUgPSAkbmFtZTsNCgkJfQ0KCQkNCgkJaWYoJHRoaXMtPm5hbWVfZm9ybWF0aW5nKQ0KCQl7DQoJCQkkZXh0ICA9ICR0aGlzLT5mb3JtYXRTdHIoJGV4dCk7DQoJCQkkZmlsZSAgPSAkdGhpcy0+Zm9ybWF0U3RyKCRmaWxlKTsNCgkJfQ0KCQkkdGhpcy0+ZmlsZV9jWyJuYW1lIl0gPSAkZmlsZTsNCgkJJHRoaXMtPmZpbGVfY1siZXh0Il0gPSAkZXh0Ow0KCQkNCgkJJHRoaXMtPnNldEZpbGVQYXRoKCk7DQoJfQ0KLyoqDQoqIFxicmllZiAgIGdlbmVyYXRlcyB0aGUgcmFuZG9tIHBhcnQgYW5kIHNldHMgdGhlICR0aGlzLT5maWxlX2NbImZ1bGxfbmFtZSJdIHJpZ2h0DQoqIFxyZXR1cm4gIGZhbHNlIGlmICR0aGlzLT5yYW5kb21fc2l6ZSA9PT0gZmFsc2UgDQoqLw0KCXByaXZhdGUgZnVuY3Rpb24gbWFrZVJhbmRvbSgpIA0KCXsNCgkJaWYoICR0aGlzLT5yYW5kb21fc2l6ZT09PSBmYWxzZSApDQoJCQlyZXR1cm4gZmFsc2U7DQoJCQ0KCQkkdGhpcy0+cmFuZG9tX2VuZCA9ICIiOw0KCQkkYXJyID0gIjEyMzQ1Njc4OTBxd2VydHl1aW9wYXNkZmdoamtsenhjdmJubVFXRVJUWVVJT1BBU0RGR0hKS0xaWENWQk5NIjsNCgkJZm9yICgkaSA9IDA7ICRpIDwgJHRoaXMtPnJhbmRvbV9zaXplOyAkaSsrKSANCgkJCSR0aGlzLT5yYW5kb21fZW5kIC49ICRhcnJbbXRfcmFuZCgpJnN0cmxlbigkYXJyKV07DQoJCQkNCgkJJHRoaXMtPmZpbGVfY1siZnVsbF9uYW1lIl0gID0gJHRoaXMtPmZpbGVfY1sibmFtZSJdLiJfIi4kdGhpcy0+cmFuZG9tX2VuZC4iLiIuJHRoaXMtPmZpbGVfY1siZXh0Il07DQoJCSR0aGlzLT5zZXRGaWxlUGF0aCgpOw0KCX0NCg0KDQovKioNCiogXGJyaWVmICAgcmVtb3ZlcyBhbGwgbm9uIFthLXpBLVowLTkuXSAgY2hhcnMNCiogXHBhcmFtIHZhciBzdHIgdG8gZm9ybWF0DQoqIFxyZXR1cm4gIGZvcm1hdGVkIHN0cmluZw0KKi8NCglwcml2YXRlIGZ1bmN0aW9uIGZvcm1hdFN0cigkdmFyKQ0KCXsNCgkJJHZhciA9IHN0cnRyKCR2YXIsIsSExIXFmsWbxJjEmcOTw7PFgcWCxbvFvMW5xbrEhsSHxYPFhCIsIkFhU3NFZU9vTGxaelp6Q2NObiIpOyAvLy88DQoJCSR2YXIgPSBwcmVnX3JlcGxhY2UoIi8oW15hLXpBLVowLTlcLl0pLyIsICJfIiwgJHZhciApIDsgLy8vPA0KCQkkdmFyID0gbWJfc3RydG9sb3dlcigkdmFyKTsgLy8vPA0KCQlyZXR1cm4gJHZhcjsNCgl9DQovKioNCiogXGJyaWVmICAgY3JvcHMgdGhlIG5hbWUgdG8gJHRoaXMtPm1heF9uYW1lX3NpemUNCiogXHJldHVybiAgZmFsc2UgaWYgJHRoaXMtPm5hbWVfZm9ybWF0aW5nIGlzIGZhbHNlDQoqLw0KCXByaXZhdGUgZnVuY3Rpb24gZm9ybWF0TmFtZSgpDQoJew0KCQlpZiggISR0aGlzLT5uYW1lX2Zvcm1hdGluZyApDQoJCQlyZXR1cm4gZmFsc2U7DQoJCSRzaXplID0gc3RybGVuKCR0aGlzLT5maWxlX2NbIm5hbWUiXSk7CQkNCgkJaWYgKCAkc2l6ZSsoJHRoaXMtPnJhbmRvbV9zaXplID8gKGludCkkdGhpcy0+cmFuZG9tX3NpemUtMSA6IDApID4gJHRoaXMtPm1heF9uYW1lX3NpemUgKQ0KCQkJJHRoaXMtPmZpbGVfY1sibmFtZSJdID0gc3Vic3RyKCR0aGlzLT5maWxlX2NbIm5hbWUiXSwNCgkJCQkwLA0KCQkJCSR0aGlzLT5tYXhfbmFtZV9zaXplLSgkdGhpcy0+cmFuZG9tX3NpemUgPyAoaW50KSR0aGlzLT5yYW5kb21fc2l6ZS0xIDogMCkgKTsgDQoNCgkJJHRoaXMtPm1ha2VSYW5kb20oKTsNCgl9DQoJDQoNCg0KLyogDQoJcHVibGljIHByb3BlcnRpZXMgDQoqLw0KLyoqDQoqIFxicmllZiAgIHNldHMgZGVidWdnaW5nDQoqLw0KCWZ1bmN0aW9uIHNldERlYnVnKCAkYiApDQoJew0KCQkkdGhpcy0+ZGVidWcgPSAoYm9vbCkgJGI7DQoJfQ0KCQ0KLyoqDQoqIFxicmllZiBzZXQgYWxsIGNvbnRlbnRzIGFib3V0IHRoZSBmaWxlDQoqIFxkZXRhaWxzICBleGFtcGxlOiAkdXBsb2FkLT5zZXRDb250ZW50cyggJF9GSUxFU1siZmlsZSJdICk7DQoqIFxwYXJhbSBmaWxlICRfRklMRVNbImZpbGUiXQ0KKiBcZXhjZXB0aW9uIEV4Y2VwdGlvbiBuZXcgRXhjZXB0aW9uKCdUaGUgZmlsZSB3YXMgbm90IHVwbG9hZGVkIHRvIC90bXAgZGlyZWN0b3J5JykNCiogXGV4Y2VwdGlvbiBFeGNlcHRpb24gbmV3IEV4Y2VwdGlvbignVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgdXBsb2FkX21heF9maWxlc2l6ZSAnLmluaV9nZXQoInVwbG9hZF9tYXhfZmlsZXNpemUiKS4nIGRpcmVjdGl2ZSBpbiBwaHAuaW5pLicpDQoqIFxleGNlcHRpb24gRXhjZXB0aW9uIG5ldyBFeGNlcHRpb24oJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIE1BWF9GSUxFX1NJWkUgZGlyZWN0aXZlIHRoYXQgd2FzIHNwZWNpZmllZCBpbiB0aGUgSFRNTCBmb3JtLicpDQoqIFxleGNlcHRpb24gRXhjZXB0aW9uIG5ldyBFeGNlcHRpb24oJ1RoZSB1cGxvYWRlZCBmaWxlIHdhcyBvbmx5IHBhcnRpYWxseSB1cGxvYWRlZC4nKQ0KKiBcZXhjZXB0aW9uIEV4Y2VwdGlvbiBuZXcgRXhjZXB0aW9uKCdObyBmaWxlIHdhcyB1cGxvYWRlZC4nKQ0KKiBcZXhjZXB0aW9uIEV4Y2VwdGlvbiBuZXcgRXhjZXB0aW9uKCdNaXNzaW5nIGEgdGVtcG9yYXJ5IGZvbGRlci4nKQ0KKiBcZXhjZXB0aW9uIEV4Y2VwdGlvbiBuZXcgRXhjZXB0aW9uKCdGYWlsZWQgdG8gd3JpdGUgZmlsZSB0byBkaXNrLicpDQoqIFxleGNlcHRpb24gRXhjZXB0aW9uIG5ldyBFeGNlcHRpb24oJ0ZpbGUgdXBsb2FkIHN0b3BwZWQgYnkgZXh0ZW5zaW9uLicpDQoqIFxyZXR1cm4gIGZhbHNlIGlmICRmaWxlIGlzIG5vdCB2YWxpZA0KKi8NCgkgcHVibGljIGZ1bmN0aW9uIHNldENvbnRlbnRzKCAkZmlsZSApDQoJew0KCQlpZiggICEoQGlzX3VwbG9hZGVkX2ZpbGUoJGZpbGVbInRtcF9uYW1lIl0pICkpDQoJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCdUaGUgZmlsZSB3YXMgbm90IHVwbG9hZGVkIHRvIC90bXAgZGlyZWN0b3J5Jyk7DQoJCWlmKCAhaXNzZXQoJGZpbGVbIm5hbWUiXSkgfHwgIWlzc2V0KCRmaWxlWyJ0bXBfbmFtZSJdKSAgIHx8ICFpc3NldCgkZmlsZVsidHlwZSJdICkgfHwgIWlzc2V0KCRmaWxlWyJzaXplIl0pIHx8ICFpc3NldCgkZmlsZVsiZXJyb3IiXSkgICkNCgkJCXJldHVybiBmYWxzZTsNCgkJJGZpbGVbInNpemUiXSA9IChpbnQpICRmaWxlWyJzaXplIl07DQoJCWlmKCAkZmlsZVsiZXJyb3IiXSAhPSBVUExPQURfRVJSX09LICkNCgkJCXN3aXRjaCggJGZpbGVbImVycm9yIl0gKSANCgkJCXsNCgkJCQljYXNlIFVQTE9BRF9FUlJfSU5JX1NJWkU6IHRocm93IG5ldyBFeGNlcHRpb24oJ1RoZSB1cGxvYWRlZCBmaWxlIGV4Y2VlZHMgdGhlIHVwbG9hZF9tYXhfZmlsZXNpemUgJy5pbmlfZ2V0KCJ1cGxvYWRfbWF4X2ZpbGVzaXplIikuJyBkaXJlY3RpdmUgaW4gcGhwLmluaS4nKTsgYnJlYWs7DQoJCQkJY2FzZSBVUExPQURfRVJSX0ZPUk1fU0laRTogdGhyb3cgbmV3IEV4Y2VwdGlvbignVGhlIHVwbG9hZGVkIGZpbGUgZXhjZWVkcyB0aGUgTUFYX0ZJTEVfU0laRSBkaXJlY3RpdmUgdGhhdCB3YXMgc3BlY2lmaWVkIGluIHRoZSBIVE1MIGZvcm0uJyk7IGJyZWFrOw0KCQkJCWNhc2UgVVBMT0FEX0VSUl9QQVJUSUFMOiB0aHJvdyBuZXcgRXhjZXB0aW9uKCdUaGUgdXBsb2FkZWQgZmlsZSB3YXMgb25seSBwYXJ0aWFsbHkgdXBsb2FkZWQuJyk7IGJyZWFrOw0KCQkJCWNhc2UgVVBMT0FEX0VSUl9OT19GSUxFOiB0aHJvdyBuZXcgRXhjZXB0aW9uKCdObyBmaWxlIHdhcyB1cGxvYWRlZC4nKTsgYnJlYWs7DQoJCQkJY2FzZSBVUExPQURfRVJSX05PX1RNUF9ESVI6IHRocm93IG5ldyBFeGNlcHRpb24oJ01pc3NpbmcgYSB0ZW1wb3JhcnkgZm9sZGVyLicpOyBicmVhazsNCgkJCQljYXNlIFVQTE9BRF9FUlJfQ0FOVF9XUklURTogdGhyb3cgbmV3IEV4Y2VwdGlvbignRmFpbGVkIHRvIHdyaXRlIGZpbGUgdG8gZGlzay4nKTsgYnJlYWs7DQoJCQkJY2FzZSBVUExPQURfRVJSX0VYVEVOU0lPTjogdGhyb3cgbmV3IEV4Y2VwdGlvbignRmlsZSB1cGxvYWQgc3RvcHBlZCBieSBleHRlbnNpb24uJyk7IGJyZWFrOw0KCQkJfQ0KCQkkdGhpcy0+X2RlYnVnKCR0aGlzLT5maWxlX2MpOw0KCQl1bnNldCggJGZpbGVbImVycm9yIl0pOw0KCQkvL34gaWYoIWlzX2FycmF5KCAkdGhpcy0+ZmlsZV9jICkgKQ0KCQkJLy9+ICR0aGlzLT5maWxlX2MgPSBhcnJheSgpOw0KCQlmb3JlYWNoKCAkZmlsZSBhcyAka2V5ID0+ICR2YXIpIA0KCQkJJHRoaXMtPmZpbGVfY1ska2V5XSA9ICR2YXI7DQoJCSR0aGlzLT5fZGVidWcoJHRoaXMtPmZpbGVfYyk7DQoJCSR0aGlzLT5zZXROYW1lcygkZmlsZVsibmFtZSJdKTsNCgkJJHRoaXMtPl9kZWJ1ZygkdGhpcy0+ZmlsZV9jKTsNCgl9DQoJDQovKioNCiogXGJyaWVmICAgZ2V0IGRhdGEgYWJvdXQgdXBsb2FkZWQgZmlsZQ0KKiBccmV0dXJuICANCiovDQoJIHB1YmxpYyBmdW5jdGlvbiBnZXRDb250ZW50cygpDQoJew0KCQkkcmV0ID0gJHRoaXMtPmZpbGVfYzsNCgkJJHJldFsncGF0aCddID1yZWFscGF0aCgkcmV0WydwYXRoJ10pOw0KCQl1bnNldCggJHJldFsidG1wX25hbWUiXSk7DQoJCXJldHVybiAkcmV0Ow0KCX0NCg0KLyoqDQoqIFxicmllZiAgc2V0cyAkdGhpcy0+cmFuZG9tX3NpemUNCiogXHBhcmFtIGludCAoMS0zMikgbnVtYmVyIG9mIHJhbmRvbSBjaGFycyBvZiBmYWxzZQ0KKi8NCgkgcHVibGljIGZ1bmN0aW9uIHNldFJhbmRvbUFkZFNpemUoICRpbnQpDQoJew0KCQlpZiggKGludCkgJGludCA+IDMzICkNCgkJCSR0aGlzLT5yYW5kb21fc2l6ZT0gMzI7DQoJCWVsc2VpZiggKGludCkgJGludCA+IDAgKQ0KCQkJJHRoaXMtPnJhbmRvbV9zaXplPSAoaW50KSAkaW50Ow0KCQllbHNlDQoJCQkkdGhpcy0+cmFuZG9tX3NpemU9IGZhbHNlOw0KCX0NCg0KLyoqDQoqIFxicmllZiAgIHNldHMgdGhlICR0aGlzLT5kaXINCiogXHBhcmFtIHBhdGggdG8gdXBsb2FkIGRpcg0KKi8NCgkgcHVibGljIGZ1bmN0aW9uIHNldFBhdGgoJHBhdGgpDQoJew0KCQkkdGhpcy0+ZGlyID0gJHBhdGg7DQoJCSR0aGlzLT50ZXN0UGF0aCgpOw0KCQkkdGhpcy0+c2V0RmlsZVBhdGgoKTsNCgl9DQovKioNCiogXGJyaWVmICAgdGVzdHMgJHRoaXMtPmRpcg0KKiBcZXhjZXB0aW9uIEV4Y2VwdGlvbiBuZXcgRXhjZXB0aW9uKCdQYXRoIG5vdCB3cml0YWJsZS4nKQ0KKi8NCglwdWJsaWMgZnVuY3Rpb24gdGVzdFBhdGgoKQ0KCXsNCgkJJHBhdGggPSAkdGhpcy0+ZGlyOw0KCQkkdGltZSA9IHRpbWUoKTsNCgkJJHJhbmQgPSBtdF9yYW5kKCk7DQoNCgkJaWYgKCAhIEBmaWxlX3B1dF9jb250ZW50cygkcGF0aC4kdGltZS4kcmFuZCAsICIuLiIgKSApDQoJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCJQYXRoICckcGF0aCcgbm90IHdyaXRhYmxlIik7DQoJCUB1bmxpbmsoJHBhdGguJHRpbWUuJHJhbmQgKTsNCgkJJHRoaXMtPnNldEZpbGVQYXRoKCk7DQoJfQ0KLyoqDQoqIFxicmllZiAgc2V0cyAkdGhpcy0+bWF4X25hbWVfc2l6ZQ0KKiBccGFyYW0gbWF4X25hbWVfc2l6ZSAgaW50IGJpZ2dlciB0aGFuIDUNCiovDQoJcHVibGljICBmdW5jdGlvbiBzZXRNYXhOYW1lU2l6ZSgkbWF4X25hbWVfc2l6ZSkNCgl7DQoJCWlmICgoaW50KSRtYXhfbmFtZV9zaXplID4gNSkNCgkJCSR0aGlzLT5tYXhfbmFtZV9zaXplID0gKGludCkkbWF4X25hbWVfc2l6ZTsNCgkJZWxzZQ0KCQkJJHRoaXMtPm1heF9uYW1lX3NpemUgPSAyMDsNCgl9DQovKioNCiogXGJyaWVmICAgc2V0cyAkdGhpcy0+bmFtZV9mb3JtYXRpbmcNCiogXHBhcmFtIGZvcm1hdCAgYm9vbA0KKi8NCglwdWJsaWMgIGZ1bmN0aW9uIHNldE5hbWVGb3JtYXRpbmcoICRmb3JtYXQpDQoJew0KCQkgJHRoaXMtPm5hbWVfZm9ybWF0aW5nID0gKGJvb2wpICRmb3JtYXQJOw0KCX0NCi8qKg0KKiBcYnJpZWYgICBzZXRzICR0aGlzLT5yYW5kb21fZW5kDQoqIFxwYXJhbSBmb3JtYXQgIGJvb2wNCiovDQoJcHVibGljICBmdW5jdGlvbiBzZXRSYW5kb21FbmRpbmcoICRmb3JtYXQpDQoJew0KCQkgJHRoaXMtPnJhbmRvbV9lbmQgPSAoYm9vbCkgJGZvcm1hdDsNCgl9DQovKioNCiogXGJyaWVmICAgc2V0cyAkdGhpcy0+bWFrZV9tZDUNCiogXHBhcmFtIG1ha2UgYm9vbA0KKi8NCglwdWJsaWMgIGZ1bmN0aW9uIHNldE1kNU1ha2luZyggJG1ha2UpDQoJew0KCQkgJHRoaXMtPm1ha2VfbWQ1ID0gKGJvb2wpICRtYWtlCTsNCgl9DQovKiANCglwdWJsaWMgZnVuY3Rpb25zIC8vLzwNCiovDQovKioNCiogXGJyaWVmIHVwbG9hZHMgZmlsZQ0KKiBcZGV0YWlscyANCgkJZm9ybWF0cyB0aGUgZmlsZSBuYW1lLCBnZW5lcmF0ZXMgbmV3IHJhbmRvbSBuYW1lcywgIG1ha2VzIG1kNSBzdW0gIA0KCQlhbGwgYWNjb3JkaW5nIHRvIGNvbmZpZ3VyYXRpb24gDQoqIFxwYXJhbSBtb3ZlICBpZiB0cnVlIHVzZXMgbW92ZV91cGxvYWRlZF9maWxlKCkgZWxzZSBjb3B5KCkNCiogXGV4Y2VwdGlvbiBFeGNlcHRpb24gbmV3IEV4Y2VwdGlvbignRmlsZSAoJy4kdGhpcy0+ZmlsZV9jWyJmdWxsX25hbWUiXS4nKSB5b3UgYXJlIHRyeWluZyB0byB1cGxvYWQgZXhpc3RzIG9uIHNlcndlcicpDQoqIFxyZXR1cm4gIChib29sKSAgdHJ1ZSBpZiBzdWNjZXMgZWxzZSBmYWxzZQ0KKi8NCglwdWJsaWMgZnVuY3Rpb24gdXBsb2FkRmlsZSggJG1vdmUgPSBmYWxzZSkNCgl7DQoJCSRyZXQgPSBmYWxzZTsNCgkJJHRoaXMtPnNldEZpbGVQYXRoKCk7DQoJCSR0aGlzLT50ZXN0UGF0aCgpOw0KCQkkdGhpcy0+Zm9ybWF0TmFtZSgpOw0KCQkNCgkJaWYoIGZpbGVfZXhpc3RzKCR0aGlzLT5maWxlX2NbInBhdGgiXSkgKQ0KCQkJaWYoICR0aGlzLT5yYW5kb21fc2l6ZSE9PSBmYWxzZSkgDQoJCQkJd2hpbGUoIGZpbGVfZXhpc3RzKCR0aGlzLT5maWxlX2NbInBhdGgiXSkgKQ0KCQkJCQkkdGhpcy0+bWFrZVJhbmRvbSgpIDsNCgkJCWVsc2UNCgkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCdGaWxlICgnLiR0aGlzLT5maWxlX2NbImZ1bGxfbmFtZSJdLicpIHlvdSBhcmUgdHJ5aW5nIHRvIHVwbG9hZCBleGlzdHMgb24gc2Vyd2VyJyk7DQoJCQ0KCQlpZiggIShib29sKSAkbW92ZSkNCgkJew0KCQkJaWYgKGNvcHkoJHRoaXMtPmZpbGVfY1sidG1wX25hbWUiXSwkdGhpcy0+ZmlsZV9jWyJwYXRoIl0pKQ0KCQkJCSRyZXQgPSB0cnVlOw0KCQl9IGVsc2Ugew0KCQkJaWYgKG1vdmVfdXBsb2FkZWRfZmlsZSgkdGhpcy0+ZmlsZV9jWyJ0bXBfbmFtZSJdLCR0aGlzLT5maWxlX2NbInBhdGgiXSkpDQoJCQkJJHJldCA9IHRydWU7DQoJCX0NCgkJJHRoaXMtPl9kZWJ1ZygkcmV0KTsNCgkJJHRoaXMtPl9kZWJ1ZygkbW92ZSk7DQoJCWlmKCAkcmV0ICYmICR0aGlzLT5tYWtlX21kNSkNCgkJCSR0aGlzLT5maWxlX2NbJ21kNSddID0gbWQ1X2ZpbGUoICR0aGlzLT5maWxlX2NbInBhdGgiXSApOw0KCQlyZXR1cm4gJHJldDsNCgl9CQ0KCQ0KDQoNCn0NCg0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/lib/external/vnc_httpdownload/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/external/vnc_httpdownload/class.httpdownload.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoqDQogQGF1dGhvciBOZ3V5ZW4gUXVvYyBCYW8gPHF1b2NiYW8uY29kZXJAZ21haWwuY29tPg0KIEB2ZXJzaW9uIDEuMw0KIEBkZXNjIEEgc2ltcGxlIG9iamVjdCBmb3IgcHJvY2Vzc2luZyBkb3dubG9hZCBvcGVyYXRpb24gLCBzdXBwb3J0IHNlY3Rpb24gZG93bmxvYWRpbmcNCiBQbGVhc2Ugc2VuZCBtZSBhbiBlbWFpbCBpZiB5b3UgZmluZCBzb21lIGJ1ZyBvciBpdCBkb2Vzbid0IHdvcmsgd2l0aCBkb3dubG9hZCBtYW5hZ2VyLg0KIEkndmUgdGVzdGVkIGl0IHdpdGgNCiAJLSBSZWdldA0KIAktIEZETQ0KIAktIEZsYXNoR2V0DQogCS0gR2V0UmlnaHQNCiAJLSBEQVANCiAJDQogQGNvcHlyaWdodCBJdCdzIGZyZWUgYXMgbG9uZyBhcyB5b3Uga2VlcCB0aGlzIGhlYWRlciAuDQogQGV4YW1wbGUNCiANCiAxOiBGaWxlIERvd25sb2FkDQogCSRvYmplY3QgPSBuZXcgZG93bmxvYWRlcjsNCiAJJG9iamVjdC0+c2V0X2J5ZmlsZSgkZmlsZW5hbWUpOyAvL0Rvd25sb2FkIGZyb20gYSBmaWxlDQogCSRvYmplY3QtPnVzZV9yZXN1bWUgPSB0cnVlOyAvL0VuYWJsZSBSZXN1bWUgTW9kZQ0KIAkkb2JqZWN0LT5kb3dubG9hZCgpOyAvL0Rvd25sb2FkIEZpbGUNCiAJDQogMjogRGF0YSBEb3dubG9hZA0KICAkb2JqZWN0ID0gbmV3IGRvd25sb2FkZXI7DQogCSRvYmplY3QtPnNldF9ieWRhdGEoJGRhdGEpOyAvL0Rvd25sb2FkIGZyb20gcGhwIGRhdGENCiAJJG9iamVjdC0+dXNlX3Jlc3VtZSA9IHRydWU7IC8vRW5hYmxlIFJlc3VtZSBNb2RlDQogCSRvYmplY3QtPnNldF9maWxlbmFtZSgkZmlsZW5hbWUpOyAvL1NldCBkb3dubG9hZCBuYW1lDQogCSRvYmplY3QtPnNldF9taW1lKCRtaW1lKTsgLy9GaWxlIE1JTUUgKERlZmF1bHQ6IGFwcGxpY2F0aW9uL290ZWN0LXN0cmVhbSkNCiAJJG9iamVjdC0+ZG93bmxvYWQoKTsgLy9Eb3dubG9hZCBGaWxlDQogCQ0KIAkzOiBNYW51YWwgRG93bmxvYWQNCiAJJG9iamVjdCA9IG5ldyBkb3dubG9hZGVyOw0KIAkkb2JqZWN0LT5zZXRfZmlsZW5hbWUoJGZpbGVuYW1lKTsNCgkkb2JqZWN0LT5kb3dubG9hZF9leCgkc2l6ZSk7DQoJLy9vdXRwdXQgeW91ciBkYXRhIGhlcmUgLCByZW1lbWJlciB0byB1c2UgJHRoaXMtPnNlZWtfc3RhcnQgYW5kICR0aGlzLT5zZWVrX2VuZCB2YWx1ZSA6KQ0KCQ0KKiovDQoNCmNsYXNzIGh0dHBkb3dubG9hZCB7DQoNCgl2YXIgJGRhdGEgPSBudWxsOw0KCXZhciAkZGF0YV9sZW4gPSAwOw0KCXZhciAkZGF0YV9tb2QgPSAwOw0KCXZhciAkZGF0YV90eXBlID0gMDsNCgl2YXIgJGRhdGFfc2VjdGlvbiA9IDA7IC8vc2VjdGlvbiBkb3dubG9hZA0KCS8qKg0KCSAqIEB2YXIgT2JqZWN0SGFuZGxlcg0KCSAqKi8NCgl2YXIgJGhhbmRsZXIgPSBhcnJheSgnYXV0aCcgPT4gbnVsbCk7DQoJdmFyICR1c2VfcmVzdW1lID0gdHJ1ZTsNCgl2YXIgJHVzZV9hdXRvZXhpdCA9IGZhbHNlOw0KCXZhciAkdXNlX2F1dGggPSBmYWxzZTsNCgl2YXIgJGZpbGVuYW1lID0gbnVsbDsNCgl2YXIgJG1pbWUgPSBudWxsOw0KCXZhciAkYnVmc2l6ZSA9IDIwNDg7DQoJdmFyICRzZWVrX3N0YXJ0ID0gMDsNCgl2YXIgJHNlZWtfZW5kID0gLTE7DQoJDQoJLyoqDQoJICogVG90YWwgYmFuZHdpZHRoIGhhcyBiZWVuIHVzZWQgZm9yIHRoaXMgZG93bmxvYWQNCgkgKiBAdmFyIGludA0KCSAqLw0KCXZhciAkYmFuZHdpZHRoID0gMDsNCgkvKioNCgkgKiBTcGVlZCBsaW1pdA0KCSAqIEB2YXIgZmxvYXQNCgkgKi8NCgl2YXIgJHNwZWVkID0gMDsNCgkNCgkvKi0tLS0tLS0tLS0tLS0tLS0tLS0NCgl8IERvd25sb2FkIEZ1bmN0aW9uIHwNCgktLS0tLS0tLS0tLS0tLS0tLS0tKi8NCgkvKioNCgkgKiBDaGVjayBhdXRoZW50aWNhdGlvbiBhbmQgZ2V0IHNlZWsgcG9zaXRpb24NCgkgKiBAcmV0dXJuIGJvb2wNCgkgKiovDQoJZnVuY3Rpb24gaW5pdGlhbGl6ZSgpIHsNCgkJZ2xvYmFsICRIVFRQX1NFUlZFUl9WQVJTOw0KCQkNCgkJaWYgKCR0aGlzLT51c2VfYXV0aCkgLy91c2UgYXV0aGVudGljYXRpb24NCgkJew0KCQkJaWYgKCEkdGhpcy0+X2F1dGgoKSkgLy9ubyBhdXRoZW50aWNhdGlvbg0KCQkJew0KCQkJCWhlYWRlcignV1dXLUF1dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09IlBsZWFzZSBlbnRlciB5b3VyIHVzZXJuYW1lIGFuZCBwYXNzd29yZCInKTsNCiAgICAJCWhlYWRlcignSFRUUC8xLjAgNDAxIFVuYXV0aG9yaXplZCcpOw0KICAgIAkJaGVhZGVyKCdzdGF0dXM6IDQwMSBVbmF1dGhvcml6ZWQnKTsNCiAgICAJCWlmICgkdGhpcy0+dXNlX2F1dG9leGl0KSBleGl0KCk7DQoJCQkJcmV0dXJuIGZhbHNlOw0KCQkJfQ0KCQl9DQoJCWlmICgkdGhpcy0+bWltZSA9PSBudWxsKSAkdGhpcy0+bWltZSA9ICJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0iOyAvL2RlZmF1bHQgbWltZQ0KCQkNCgkJaWYgKGlzc2V0KCRfU0VSVkVSWydIVFRQX1JBTkdFJ10pIHx8IGlzc2V0KCRIVFRQX1NFUlZFUl9WQVJTWydIVFRQX1JBTkdFJ10pKQ0KCQl7DQoJCQkNCgkJCWlmIChpc3NldCgkSFRUUF9TRVJWRVJfVkFSU1snSFRUUF9SQU5HRSddKSkgJHNlZWtfcmFuZ2UgPSBzdWJzdHIoJEhUVFBfU0VSVkVSX1ZBUlNbJ0hUVFBfUkFOR0UnXSAsIHN0cmxlbignYnl0ZXM9JykpOw0KCQkJZWxzZSAkc2Vla19yYW5nZSA9IHN1YnN0cigkX1NFUlZFUlsnSFRUUF9SQU5HRSddICwgc3RybGVuKCdieXRlcz0nKSk7DQoJCQkNCgkJCSRyYW5nZSA9IGV4cGxvZGUoJy0nLCRzZWVrX3JhbmdlKTsNCgkJCQ0KCQkJaWYgKCRyYW5nZVswXSA+IDApDQoJCQl7DQoJCQkJJHRoaXMtPnNlZWtfc3RhcnQgPSBpbnR2YWwoJHJhbmdlWzBdKTsNCgkJCX0NCgkJCQ0KCQkJaWYgKCRyYW5nZVsxXSA+IDApICR0aGlzLT5zZWVrX2VuZCA9IGludHZhbCgkcmFuZ2VbMV0pOw0KCQkJZWxzZSAkdGhpcy0+c2Vla19lbmQgPSAtMTsNCgkJCQ0KCQkJaWYgKCEkdGhpcy0+dXNlX3Jlc3VtZSkNCgkJCXsNCgkJCQkkdGhpcy0+c2Vla19zdGFydCA9IDA7DQoJCQkJDQoJCQkJLy9oZWFkZXIoIkhUVFAvMS4wIDQwNCBCYWQgUmVxdWVzdCIpOw0KCQkJCS8vaGVhZGVyKCJTdGF0dXM6IDQwMCBCYWQgUmVxdWVzdCIpOw0KCQkJCQ0KCQkJCS8vZXhpdDsNCgkJCQkNCgkJCQkvL3JldHVybiBmYWxzZTsNCgkJCX0NCgkJCWVsc2UNCgkJCXsNCgkJCQkkdGhpcy0+ZGF0YV9zZWN0aW9uID0gMTsNCgkJCX0NCgkJCQ0KCQl9DQoJCWVsc2UNCgkJew0KCQkJJHRoaXMtPnNlZWtfc3RhcnQgPSAwOw0KCQkJJHRoaXMtPnNlZWtfZW5kID0gLTE7DQoJCX0NCgkJDQoJCXJldHVybiB0cnVlOw0KCX0NCgkvKioNCgkgKiBTZW5kIGRvd25sb2FkIGluZm9ybWF0aW9uIGhlYWRlcg0KCSAqKi8NCglmdW5jdGlvbiBoZWFkZXIoJHNpemUsJHNlZWtfc3RhcnQ9bnVsbCwkc2Vla19lbmQ9bnVsbCkgew0KCQloZWFkZXIoJ0NvbnRlbnQtdHlwZTogJyAuICR0aGlzLT5taW1lKTsNCgkJaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0iJyAuICR0aGlzLT5maWxlbmFtZSAuICciJyk7DQoJCWhlYWRlcignTGFzdC1Nb2RpZmllZDogJyAuIGRhdGUoJ0QsIGQgTSBZIEg6aTpzIFxHXE1cVCcgLCAkdGhpcy0+ZGF0YV9tb2QpKTsNCgkJaGVhZGVyKCdDYWNoZS1Db250cm9sOiBtYXgtYWdlPTAnKTsNCgkJDQoJCWlmICgkdGhpcy0+ZGF0YV9zZWN0aW9uICYmICR0aGlzLT51c2VfcmVzdW1lKQ0KCQl7DQoJCQloZWFkZXIoIkhUVFAvMS4wIDIwNiBQYXJ0aWFsIENvbnRlbnQiKTsNCgkJCWhlYWRlcigiU3RhdHVzOiAyMDYgUGFydGlhbCBDb250ZW50Iik7DQoJCQloZWFkZXIoJ0FjY2VwdC1SYW5nZXM6IGJ5dGVzJyk7DQoJCQloZWFkZXIoIkNvbnRlbnQtUmFuZ2U6IGJ5dGVzICRzZWVrX3N0YXJ0LSRzZWVrX2VuZC8kc2l6ZSIpOw0KCQkJaGVhZGVyKCJDb250ZW50LUxlbmd0aDogIiAuICgkc2Vla19lbmQgLSAkc2Vla19zdGFydCArIDEpKTsNCgkJfQ0KCQllbHNlDQoJCXsNCgkJCWhlYWRlcigiQ29udGVudC1MZW5ndGg6ICRzaXplIik7DQoJCX0NCgl9DQoJDQoJZnVuY3Rpb24gZG93bmxvYWRfZXgoJHNpemUpDQoJew0KCQlpZiAoISR0aGlzLT5pbml0aWFsaXplKCkpIHJldHVybiBmYWxzZTsNCgkJaWdub3JlX3VzZXJfYWJvcnQodHJ1ZSk7DQoJCS8vVXNlIHNlZWsgZW5kIGhlcmUNCgkJaWYgKCR0aGlzLT5zZWVrX3N0YXJ0ID4gKCRzaXplIC0gMSkpICR0aGlzLT5zZWVrX3N0YXJ0ID0gMDsNCgkJaWYgKCR0aGlzLT5zZWVrX2VuZCA8PSAwKSAkdGhpcy0+c2Vla19lbmQgPSAkc2l6ZSAtIDE7DQoJCSR0aGlzLT5oZWFkZXIoJHNpemUsJHNlZWssJHRoaXMtPnNlZWtfZW5kKTsNCgkJJHRoaXMtPmRhdGFfbW9kID0gdGltZSgpOw0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoJDQoJLyoqDQoJICogU3RhcnQgZG93bmxvYWQNCgkgKiBAcmV0dXJuIGJvb2wNCgkgKiovDQoJZnVuY3Rpb24gZG93bmxvYWQoKSB7DQoJCWlmICghJHRoaXMtPmluaXRpYWxpemUoKSkgcmV0dXJuIGZhbHNlOw0KCQkNCgkJJHNlZWsgPSAkdGhpcy0+c2Vla19zdGFydDsNCgkJJHNwZWVkID0gJHRoaXMtPnNwZWVkOw0KCQkkYnVmc2l6ZSA9ICR0aGlzLT5idWZzaXplOw0KCQkkcGFja2V0ID0gMTsNCgkJDQoJCS8vZG8gc29tZSBjbGVhbiB1cA0KCQlAb2JfZW5kX2NsZWFuKCk7DQoJCSRvbGRfc3RhdHVzID0gaWdub3JlX3VzZXJfYWJvcnQodHJ1ZSk7DQoJCUBzZXRfdGltZV9saW1pdCgwKTsNCgkJJHRoaXMtPmJhbmR3aWR0aCA9IDA7DQoJCQ0KCQkkc2l6ZSA9ICR0aGlzLT5kYXRhX2xlbjsNCgkJDQoJCWlmICgkdGhpcy0+ZGF0YV90eXBlID09IDApIC8vZG93bmxvYWQgZnJvbSBhIGZpbGUNCgkJew0KCQkJDQoJCQkkc2l6ZSA9IGZpbGVzaXplKCR0aGlzLT5kYXRhKTsNCgkJCWlmICgkc2VlayA+ICgkc2l6ZSAtIDEpKSAkc2VlayA9IDA7DQoJCQlpZiAoJHRoaXMtPmZpbGVuYW1lID09IG51bGwpICR0aGlzLT5maWxlbmFtZSA9IGJhc2VuYW1lKCR0aGlzLT5kYXRhKTsNCgkJCQ0KCQkJJHJlcyA9IGZvcGVuKCR0aGlzLT5kYXRhLCdyYicpOw0KCQkJaWYgKCRzZWVrKSBmc2VlaygkcmVzICwgJHNlZWspOw0KCQkJaWYgKCR0aGlzLT5zZWVrX2VuZCA8ICRzZWVrKSAkdGhpcy0+c2Vla19lbmQgPSAkc2l6ZSAtIDE7DQoJCQkNCgkJCSR0aGlzLT5oZWFkZXIoJHNpemUsJHNlZWssJHRoaXMtPnNlZWtfZW5kKTsgLy9hbHdheXMgdXNlIHRoZSBsYXN0IHNlZWsNCgkJCSRzaXplID0gJHRoaXMtPnNlZWtfZW5kIC0gJHNlZWsgKyAxOw0KCQkJDQoJCQl3aGlsZSAoIShjb25uZWN0aW9uX2Fib3J0ZWQoKSB8fCBjb25uZWN0aW9uX3N0YXR1cygpID09IDEpICYmICRzaXplID4gMCkNCgkJCXsNCgkJCQlpZiAoJHNpemUgPCAkYnVmc2l6ZSkNCgkJCQl7DQoJCQkJCWVjaG8gZnJlYWQoJHJlcyAsICRzaXplKTsNCgkJCQkJJHRoaXMtPmJhbmR3aWR0aCArPSAkc2l6ZTsNCgkJCQl9DQoJCQkJZWxzZQ0KCQkJCXsNCgkJCQkJZWNobyBmcmVhZCgkcmVzICwgJGJ1ZnNpemUpOw0KCQkJCQkkdGhpcy0+YmFuZHdpZHRoICs9ICRidWZzaXplOw0KCQkJCX0NCgkJCQkNCgkJCQkkc2l6ZSAtPSAkYnVmc2l6ZTsNCgkJCQlmbHVzaCgpOw0KCQkJCQ0KCQkJCWlmICgkc3BlZWQgPiAwICYmICgkdGhpcy0+YmFuZHdpZHRoID4gJHNwZWVkKiRwYWNrZXQqMTAyNCkpDQoJCQkJew0KCQkJCQlzbGVlcCgxKTsNCgkJCQkJJHBhY2tldCsrOw0KCQkJCX0NCgkJCX0NCgkJCWZjbG9zZSgkcmVzKTsNCgkJCQ0KCQl9DQoJCQ0KCQllbHNlaWYgKCR0aGlzLT5kYXRhX3R5cGUgPT0gMSkgLy9kb3dubG9hZCBmcm9tIGEgc3RyaW5nDQoJCXsNCgkJCWlmICgkc2VlayA+ICgkc2l6ZSAtIDEpKSAkc2VlayA9IDA7DQoJCQlpZiAoJHRoaXMtPnNlZWtfZW5kIDwgJHNlZWspICR0aGlzLT5zZWVrX2VuZCA9ICR0aGlzLT5kYXRhX2xlbiAtIDE7DQoJCQkkdGhpcy0+ZGF0YSA9IHN1YnN0cigkdGhpcy0+ZGF0YSAsICRzZWVrICwgJHRoaXMtPnNlZWtfZW5kIC0gJHNlZWsgKyAxKTsNCgkJCWlmICgkdGhpcy0+ZmlsZW5hbWUgPT0gbnVsbCkgJHRoaXMtPmZpbGVuYW1lID0gdGltZSgpOw0KCQkJJHNpemUgPSBzdHJsZW4oJHRoaXMtPmRhdGEpOw0KCQkJJHRoaXMtPmhlYWRlcigkdGhpcy0+ZGF0YV9sZW4sJHNlZWssJHRoaXMtPnNlZWtfZW5kKTsNCgkJCXdoaWxlICghY29ubmVjdGlvbl9hYm9ydGVkKCkgJiYgJHNpemUgPiAwKSB7DQoJCQkJaWYgKCRzaXplIDwgJGJ1ZnNpemUpDQoJCQkJew0KCQkJCQkkdGhpcy0+YmFuZHdpZHRoICs9ICRzaXplOw0KCQkJCX0NCgkJCQllbHNlDQoJCQkJew0KCQkJCQkkdGhpcy0+YmFuZHdpZHRoICs9ICRidWZzaXplOw0KCQkJCX0NCgkJCQkNCgkJCQllY2hvIHN1YnN0cigkdGhpcy0+ZGF0YSAsIDAgLCAkYnVmc2l6ZSk7DQoJCQkJJHRoaXMtPmRhdGEgPSBzdWJzdHIoJHRoaXMtPmRhdGEgLCAkYnVmc2l6ZSk7DQoJCQkJDQoJCQkJJHNpemUgLT0gJGJ1ZnNpemU7DQoJCQkJZmx1c2goKTsNCgkJCQkNCgkJCQlpZiAoJHNwZWVkID4gMCAmJiAoJHRoaXMtPmJhbmR3aWR0aCA+ICRzcGVlZCokcGFja2V0KjEwMjQpKQ0KCQkJCXsNCgkJCQkJc2xlZXAoMSk7DQoJCQkJCSRwYWNrZXQrKzsNCgkJCQl9DQoJCQl9DQoJCX0gZWxzZSBpZiAoJHRoaXMtPmRhdGFfdHlwZSA9PSAyKSB7DQoJCQkvL2p1c3Qgc2VuZCBhIHJlZGlyZWN0IGhlYWRlcg0KCQkJaGVhZGVyKCdsb2NhdGlvbjogJyAuICR0aGlzLT5kYXRhKTsNCgkJfQ0KCQkNCgkJaWYgKCR0aGlzLT51c2VfYXV0b2V4aXQpIGV4aXQoKTsNCgkJDQoJCS8vcmVzdG9yZSBvbGQgc3RhdHVzDQoJCWlnbm9yZV91c2VyX2Fib3J0KCRvbGRfc3RhdHVzKTsNCgkJc2V0X3RpbWVfbGltaXQoaW5pX2dldCgibWF4X2V4ZWN1dGlvbl90aW1lIikpOw0KCQkNCgkJcmV0dXJuIHRydWU7DQoJfQ0KCQ0KCWZ1bmN0aW9uIHNldF9ieWZpbGUoJGRpcikgew0KCQlpZiAoaXNfcmVhZGFibGUoJGRpcikgJiYgaXNfZmlsZSgkZGlyKSkgew0KCQkJJHRoaXMtPmRhdGFfbGVuID0gMDsNCgkJCSR0aGlzLT5kYXRhID0gJGRpcjsNCgkJCSR0aGlzLT5kYXRhX3R5cGUgPSAwOw0KCQkJJHRoaXMtPmRhdGFfbW9kID0gZmlsZW10aW1lKCRkaXIpOw0KCQkJcmV0dXJuIHRydWU7DQoJCX0gZWxzZSByZXR1cm4gZmFsc2U7DQoJfQ0KCQ0KCWZ1bmN0aW9uIHNldF9ieWRhdGEoJGRhdGEpIHsNCgkJaWYgKCRkYXRhID09ICcnKSByZXR1cm4gZmFsc2U7DQoJCSR0aGlzLT5kYXRhID0gJGRhdGE7DQoJCSR0aGlzLT5kYXRhX2xlbiA9IHN0cmxlbigkZGF0YSk7DQoJCSR0aGlzLT5kYXRhX3R5cGUgPSAxOw0KCQkkdGhpcy0+ZGF0YV9tb2QgPSB0aW1lKCk7DQoJCXJldHVybiB0cnVlOw0KCX0NCgkNCglmdW5jdGlvbiBzZXRfYnl1cmwoJGRhdGEpIHsNCgkJJHRoaXMtPmRhdGEgPSAkZGF0YTsNCgkJJHRoaXMtPmRhdGFfbGVuID0gMDsNCgkJJHRoaXMtPmRhdGFfdHlwZSA9IDI7DQoJCXJldHVybiB0cnVlOw0KCX0NCgkNCglmdW5jdGlvbiBzZXRfbGFzdG1vZHRpbWUoJHRpbWUpIHsNCgkJJHRpbWUgPSBpbnR2YWwoJHRpbWUpOw0KCQlpZiAoJHRpbWUgPD0gMCkgJHRpbWUgPSB0aW1lKCk7DQoJCSR0aGlzLT5kYXRhX21vZCA9ICR0aW1lOw0KCX0NCgkNCgkvKioNCgkgKiBDaGVjayBhdXRoZW50aWNhdGlvbg0KCSAqIEByZXR1cm4gYm9vbA0KCSAqKi8NCglmdW5jdGlvbiBfYXV0aCgpIHsNCgkJaWYgKCFpc3NldCgkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddKSkgcmV0dXJuIGZhbHNlOw0KCQlpZiAoaXNzZXQoJHRoaXMtPmhhbmRsZXJbJ2F1dGgnXSkgJiYgZnVuY3Rpb25fZXhpc3RzKCR0aGlzLT5oYW5kbGVyWydhdXRoJ10pKQ0KCQl7DQoJCQlyZXR1cm4gJHRoaXMtPmhhbmRsZXJbJ2F1dGgnXSgnYXV0aCcgLCAkX1NFUlZFUlsnUEhQX0FVVEhfVVNFUiddLCRfU0VSVkVSWydQSFBfQVVUSF9QVyddKTsNCgkJfQ0KCQllbHNlIHJldHVybiB0cnVlOyAvL3lvdSBtdXN0IHVzZSBhIGhhbmRsZXINCgl9DQoJDQp9DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/external/vnc_httpdownload/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/lib/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCEtLSBEVU1NWSBIVE1MIEZJTEUgLS0+]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCiRkYiA9IGNtc21zKCktPkdldERiKCk7DQokdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdFbmdpbmU9SW5ub0RCJyk7DQoNCiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdVc2UgSk1Eb3duTWFuJywgJ1VzZSBKTURvd25NYW4nKTsNCg0KJGRpciA9ICd1cGxvYWRzL2ltYWdlcy9KTURvd25NYW5UaHVtYnMvJzsNCmlmKCAhaXNfZGlyKCcuLi8nLiRkaXIpICkNCnsNCglta2RpcihzdHJfcmVwbGFjZSgnLycsIERJUkVDVE9SWV9TRVBBUkFUT1IsICcuLi8nLiRkaXIpKTsNCn0NCmlmKCAhaXNfd3JpdGFibGUoJy4uLycuJGRpcikgKQ0Kew0KCSR0bXAgPSBsYW5nKCdlcnJvcmRpcmVjdG9yeW5vdHdyaXRhYmxlJykuICcgPiAnIC4gJGRpcjsNCglyZXR1cm4gJHRtcDsNCn0NCg0KLy8gRmlsZXMNCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsNCiRmbGRzID0NCgknZmlsZV9pZCBJIEtFWSBBVVRPLA0KCWFjY2Vzc3R5cGUgSSwNCgluYW1lIEMoMzApIE5PVE5VTEwsDQoJYWxpYXMgQyg2NCkgVU5JUVVFLA0KCXNlcnZlcl9uYW1lIFggTk9UTlVMTCwNCglleHQgQyg4KSAgTk9UTlVMTCwNCgl0eXBlIEMoMzApICBOT1ROVUxMLA0KCXNpemUgSSBOT1ROVUxMLA0KCWhhc2ggQygzMikgTk9UTlVMTCAsDQoJZGVzY3JpcHRpb24gWCAsDQoJdGVtcGxhdGVfZGV0YWlsIEMoNjQpLA0KCXRlbXBsYXRlX2Zvcm0gQyg2NCksDQoJdGVtcGxhdGVfZW1haWwgQyg2NCksDQoJaGllcmFyY2h5IFgsDQoJY291bnRlciBJIE5PVE5VTEwgREVGQVVMVCAwLA0KCWNyZWF0ZWQgJyAuIENNU19BRE9EQl9EVCAuICcsDQoJZXhwaXJlcyAnIC4gQ01TX0FET0RCX0RUIC4gJywNCiAgICBzdGFydHMgJyAuIENNU19BRE9EQl9EVCAuICcsDQoJdmlzaWJsZSBJLA0KCXRodW1iX3BhdGggWCBERUZBVUxUIFwnXCcNCic7DQokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfam1kb3dubWFuX2ZpbGVzJywkZmxkcywgJHRhYm9wdGFycmF5KTsNCiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCg0KJHRoaXMtPkNyZWF0ZUV2ZW50KCdKTURvd25NYW5GaWxlRWRpdGVkJyk7DQokdGhpcy0+Q3JlYXRlRXZlbnQoJ0pNRG93bk1hbkZpbGVBZGRlZCcpOw0KJHRoaXMtPkNyZWF0ZUV2ZW50KCdKTURvd25NYW5GaWxlRGVsZXRlZCcpOw0KDQovLyBDYXRlZ29yaWVzDQokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7DQokZmxkcyA9DQoJImNhdGVnb3J5X2lkIEkgS0VZIEFVVE8sDQoJbmFtZSBDKDMwKSBOT1ROVUxMLA0KCWFsaWFzIEMoNjQpIFVOSVFVRSwNCglkZXNjcmlwdGlvbiBDKDI1NSkgLA0KCXBhcmVudF9pZCBJIE5PVE5VTEwsDQoJaGllcmFyY2h5IEMoMjU1KSwNCglkZXB0aCBJIERFRkFVTFQgMCwNCglsb25nX25hbWUgWCwNCglwcmlvcml0eSAgQyg1KSBERUZBVUxUIDEwMCwNCgloaWVyYXJjaHlfcHJpb3JpdHkgWCwgCQ0KCWRlZmF1bHRfdGVtcGxhdGUgQygyNTUpICwgCQ0KCWNyZWF0ZV9kYXRlICIgLiBDTVNfQURPREJfRFQgLiAiLA0KCW1vZGlmaWVkX2RhdGUgIiAuIENNU19BRE9EQl9EVCAuICINCiI7DQokc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfam1kb3dubWFuX2NhdGVnb3JpZXMnLCRmbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQokdGhpcy0+Q3JlYXRlRXZlbnQoJ0pNRG93bk1hbkNhdGVnb3J5RWRpdGVkJyk7DQokdGhpcy0+Q3JlYXRlRXZlbnQoJ0pNRG93bk1hbkNhdGVnb3J5QWRkZWQnKTsNCiR0aGlzLT5DcmVhdGVFdmVudCgnSk1Eb3duTWFuQ2F0ZWdvcnlEZWxldGVkJyk7DQoNCiMgU2V0dXAgR2VuZXJhbCBjYXRlZ29yeQ0KJHF1ZXJ5ID0gICdJTlNFUlQgSU5UTyAnDQogICAgICAgICAgLiBjbXNfZGJfcHJlZml4KCkNCiAgICAgICAgICAuICdtb2R1bGVfam1kb3dubWFuX2NhdGVnb3JpZXMgKG5hbWUsIHBhcmVudF9pZCwgY3JlYXRlX2RhdGUsIG1vZGlmaWVkX2RhdGUsIGFsaWFzKSBWQUxVRVMgKFwnR2VuZXJhbFwnLC0xLCcNCiAgICAgICAgICAuICRkYi0+REJUaW1lU3RhbXAodGltZSgpKQ0KICAgICAgICAgIC4gJywnDQogICAgICAgICAgLiAkZGItPkRCVGltZVN0YW1wKHRpbWUoKSkNCiAgICAgICAgICAuICcsXCdnZW5lcmFsXCcpJzsNCiRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KJHRoaXMtPlVwZGF0ZUhpZXJhcmNoeVBvc2l0aW9ucygpOw0KDQovLyBBc3NvY2lhdGlvbnMNCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsNCiRmbGRzID0NCgkiDQoJZmlsZV9pZCBJIEtFWSwNCiAgICBjYXRlZ29yeV9pZCBJIEtFWSwNCglpdGVtX29yZGVyIEkgTk9UTlVMTA0KIjsNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9qbWRvd25tYW5fZmlsZXNfY2F0ZWdvcnknLCRmbGRzLCAkdGFib3B0YXJyYXkpOw0KJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOw0KDQovLyBEb3dubG9hZHMNCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsNCiRmbGRzID0NCgkiZG93bmxvYWRfaWQgSSBLRVkgQVVUTywNCglmaWxlX2lkIEkgTk9UTlVMTCwNCgl1c2VyX3R5cGUgSSwNCgl1c2VyX2lkIEksDQoJaGFzaGtleSBDKDI1NSksDQoJZG93bmxvYWRlZCAiIC4gQ01TX0FET0RCX0RUIC4gIg0KIjsNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9qbWRvd25tYW5fZG93bmxvYWRzJywgJGZsZHMsICR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCi8vIFVzZXJzDQokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7DQokZmxkcyA9DQoJInVzZXJfaWQgSSBOT1ROVUxMLA0KCWZpcnN0bmFtZSBDKDY0KSwNCglsYXN0bmFtZSBDKDY0KSwNCgllbWFpbCBDKDEyOCksDQoJbWFpbGluZ2xpc3QgTA0KIjsNCiRzcWxhcnJheSA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9qbWRvd25tYW5fdXNlcnMnLCAkZmxkcywgJHRhYm9wdGFycmF5KTsNCiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCiRkYi0+Q3JlYXRlU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfam1kb3dubWFuX3VzZXJzX3NlcScpOw0KDQovLyBNYXBwaW5nIEZFVSBncm91cHMgdG8gZmlsZXMNCiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsNCiRmbGRzID0NCgkiZmlsZV9pZCBJIE5PVE5VTEwsDQoJZ3JvdXBfaWQgSSBOT1ROVUxMDQoiOw0KJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX2ptZG93bm1hbl9maWxlZ3JvdXBzJywgJGZsZHMsICR0YWJvcHRhcnJheSk7DQokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCi8vIHdlIGFkZCB0aGUgZGVmYXVsdCB0ZW1wbGF0ZXMNCiR0ZW1wbGF0ZXR5cGVzID0gYXJyYXkoJ2xpc3QnLCAnZGV0YWlsJywgJ2Zvcm0nLCAnZW1haWwnKTsNCmZvcmVhY2goJHRlbXBsYXRldHlwZXMgYXMgJHR5cGUpew0KCSR0aGlzLT5TZXRUZW1wbGF0ZSgkdHlwZS4nX2RlZmF1bHQnLCAkdGhpcy0+R2V0VGVtcGxhdGVGcm9tRmlsZSgkdHlwZS4nX2RlZmF1bHQnKSwgJHRoaXMtPkdldE5hbWUoKSk7DQoJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRfJy4kdHlwZS4nX3RlbXBsYXRlJywgJHR5cGUuJ19kZWZhdWx0Jyk7DQp9DQokdGhpcy0+U2V0VGVtcGxhdGUoJ2RlZmF1bHRfZG93bmxvYWRfdGVtcGxhdGUnLCAkdGhpcy0+R2V0VGVtcGxhdGVGcm9tRmlsZSgnZG93bmxvYWQnKSk7DQoNCiR0aGlzLT5DcmVhdGVFdmVudCgnSk1Eb3duTWFuVGVtcGxhdGVFZGl0ZWQnKTsNCiR0aGlzLT5DcmVhdGVFdmVudCgnSk1Eb3duTWFuVGVtcGxhdGVBZGRlZCcpOw0KJHRoaXMtPkNyZWF0ZUV2ZW50KCdKTURvd25NYW5UZW1wbGF0ZURlbGV0ZWQnKTsNCg0KLy8gY3JlYXRlIGEgcHJlZmVyZW5jZXMNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCJkaXIiLCAiZG93bmxvYWRzLyIpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoImFsbG93bXVsdGlwbGUiLCB0cnVlKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCJsaW5rZXhwaXJlIiwgMik7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgic2NhbiIsICJkb3dubG9hZHMvIik7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgic2Nhbl9yZWN1cnMiLCB0cnVlKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCJleHBpcmVkX3NlYXJjaGFibGUiLCBmYWxzZSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgiZGlyX3RodW1icyIsICJpbWFnZXMvSk1Eb3duTWFuVGh1bWJzLyIpOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoInRodW1ic19hdXRvIiwgdHJ1ZSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgidGh1bWJzX3NpemUiLCA4MCk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgiYWRtaW5fd3lzaXd5ZyIsIHRydWUpOw0KDQovLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cNCiR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygnaW5zdGFsbGVkJywgJHRoaXMtPkdldFZlcnNpb24oKSkpOw0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCg0KLyogQWZ0ZXIgdGhpcywgdGhlIGNvZGUgaXMgaWRlbnRpY2FsIHRvIHRoZSBjb2RlIHRoYXQgd291bGQgb3RoZXJ3aXNlIGJlDQogICAgd3JhcHBlZCBpbiB0aGUgVW5pbnN0YWxsKCkgbWV0aG9kIGluIHRoZSBtb2R1bGUgYm9keS4NCiovDQoNCgkJJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCgkJDQoJCS8vIHJlbW92ZSB0aGUgZGF0YWJhc2UgdGFibGUNCgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7DQoJCSRzcWxhcnJheSA9JGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfam1kb3dubWFuX2ZpbGVzIiApOw0KCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoJCSRkYi0+RHJvcFNlcXVlbmNlKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9qbWRvd25tYW5fZmlsZXNfc2VxIiApOw0KCQkNCgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7DQoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ptZG93bm1hbl9jYXRlZ29yaWVzIiApOw0KCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoJCSRkYi0+RHJvcFNlcXVlbmNlKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9qbWRvd25tYW5fY2F0ZWdvcmllc19zZXEiICk7DQoJCQ0KCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCAkZGIgKTsNCgkJJHNxbGFycmF5ID0gJGRpY3QtPkRyb3BUYWJsZVNRTCggY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfam1kb3dubWFuX2ZpbGVzX2NhdGVnb3J5IiApOw0KCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7DQoNCgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSggJGRiICk7DQoJCSRzcWxhcnJheSA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ptZG93bm1hbl90ZW1wbGF0ZXMiICk7DQoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkJJGRiLT5Ecm9wU2VxdWVuY2UoIGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX2ptZG93bm1hbl90ZW1wbGF0ZXNfc2VxIiApOw0KDQoJCS8vIHJlbW92ZSB0aGUgdGVtcGxhdGVzDQoJCSR0aGlzLT5EZWxldGVUZW1wbGF0ZSgpOw0KCQkNCgkJLy8gcmVtb3ZlIHRoZSBwZXJtaXNzaW9ucw0KCQkkdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignVXNlIEpNRG93bk1hbicpOw0KCQkkdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignTW9kaWZ5IEpNRG93bk1hbiBGaWxlJyk7DQoJCQ0KCQkvLyByZW1vdmUgdGhlIGV2ZW50DQoJCSR0aGlzLT5SZW1vdmVFdmVudCgnSk1Eb3duTWFuRmlsZUVkaXRlZCcpOw0KCQkkdGhpcy0+UmVtb3ZlRXZlbnQoJ0pNRG93bk1hbkZpbGVBZGRlZCcpOw0KCQkkdGhpcy0+UmVtb3ZlRXZlbnQoJ0pNRG93bk1hbkZpbGVEZWxldGVkJyk7DQogICAgICAgICR0aGlzLT5SZW1vdmVFdmVudCgnSk1Eb3duTWFuQ2F0ZWdvcnlFZGl0ZWQnKTsNCiAgICAgICAgJHRoaXMtPlJlbW92ZUV2ZW50KCdKTURvd25NYW5DYXRlZ29yeUFkZGVkJyk7DQogICAgICAgICR0aGlzLT5SZW1vdmVFdmVudCgnSk1Eb3duTWFuQ2F0ZWdvcnlEZWxldGVkJyk7DQogICAgICAgICR0aGlzLT5SZW1vdmVFdmVudCgnSk1Eb3duTWFuVGVtcGxhdGVFZGl0ZWQnKTsNCiAgICAgICAgJHRoaXMtPlJlbW92ZUV2ZW50KCdKTURvd25NYW5UZW1wbGF0ZUFkZGVkJyk7DQogICAgICAgICR0aGlzLT5SZW1vdmVFdmVudCgnSk1Eb3duTWFuVGVtcGxhdGVEZWxldGVkJyk7DQoNCiAgICAgICAgLy8gcmVtb3ZlIHRoZSBldmVudA0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgiZGlyIik7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCJhbGxvd211bHRpcGxlIik7DQogICAgICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCJsaW5rZXhwaXJlIik7DQogICAgICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCJzY2FuIik7DQogICAgICAgICR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCJzY2FuX3JlY3VycyIpOw0KICAgICAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgiZXhwaXJlZF9zZWFyY2hhYmxlIik7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCJkaXJfdGh1bWJzIik7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCJ0aHVtYnNfYXV0byIpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgidGh1bWJzX3NpemUiKTsNCiAgICAgICAgJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoImFkbWluX3d5c2l3eWciKTsNCgkJDQoJCS8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZw0KCQkkdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ3VuaW5zdGFsbGVkJykpOw0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCiRkYiA9IGNtc21zKCktPkdldERiKCk7DQokdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOw0KDQoJCSRjdXJyZW50X3ZlcnNpb24gPSAkb2xkdmVyc2lvbjsNCgkJc3dpdGNoKCRjdXJyZW50X3ZlcnNpb24pDQoJCXsNCiAgICAgIGNhc2UgJzEuUkMuMSc6DQogICAgICAgICMgY2FzZSB0aGlzIGlzIGNtc21zIDEueCBicmFuY2guLi4NCiAgICAgICAgJGZuID0gY21zX2pvaW5fcGF0aCgNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5HZXRNb2R1bGVQYXRoKCksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbGliJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjbGFzcy5qbWRtX2luc3RhbGxfdXRpbHMucGhwJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7DQogICAgICAgIGluY2x1ZGUoJGZuKTsNCiAgICAgICAgam1kbV9pbnN0YWxsX3V0aWxzOjpTYW5pdGl6ZSgpOw0KCQkJZGVmYXVsdDoNCgkJfQ0KCQkNCgkJLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nDQoJCSR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygndXBncmFkZWQnLCR0aGlzLT5HZXRWZXJzaW9uKCkpKTsNCg0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9IEpNRG93bk1hbgp2ZXJzaW9uID0gMS5SQy4yCmRlc2NyaXB0aW9uID0gCmF1dGhvciA9IEpvIE1vcmcgKEZlcm5hbmRvIE1vcmdhZG8pCmF1dGhvcmVtYWlsID0gam9tb3JnQGNtc21hZGVzaW1wbGUub3JnCm1pbmNtc3ZlcnNpb24gPSAxLjEyCjEx]]></data>
	</file>
	<file>
	  <filename>/tab.defaultadmin.categories.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCi8vIGNoZWNrIGZvciBwZXJtaXNzaW9ucw0KaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgSk1Eb3duTWFuJykpDQp7DQoJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nLCBhcnJheSgnVXNlIEpNRG93bk1hbicpKSk7DQoJcmV0dXJuOw0KfQ0KDQokYWRtaW50aGVtZSA9IGNtc191dGlsczo6Z2V0X3RoZW1lX29iamVjdCgpOw0KDQovLyBQdXQgdG9nZXRoZXIgYSBsaXN0IG9mIGN1cnJlbnQgY2F0ZWdvcmllcy4uLg0KJGVudHJ5YXJyYXkgPSBhcnJheSgpOw0KJGNhdGVnb3J5X2ZpbGVfbmIgPSAkdGhpcy0+R2V0Q2F0ZWdvcnlGaWxlTmIoKTsNCg0KJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9qbWRvd25tYW5fY2F0ZWdvcmllcyBPUkRFUiBCWSBoaWVyYXJjaHlfcHJpb3JpdHkiOw0KJGRicmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoNCiRyb3djbGFzcyA9ICdyb3cxJzsNCg0Kd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQ0Kew0KCSRvbmVyb3cgPSBuZXcgc3RkQ2xhc3MoKTsNCg0KCSRkZXB0aCA9IGNvdW50KGV4cGxvZGUoJ1wuJywgJHJvd1snaGllcmFyY2h5J10pKTsNCgkkZm5iID0gaXNzZXQoJGNhdGVnb3J5X2ZpbGVfbmJbJHJvd1snY2F0ZWdvcnlfaWQnXV0pPyhpbnQpJGNhdGVnb3J5X2ZpbGVfbmJbJHJvd1snY2F0ZWdvcnlfaWQnXV06MDsNCgkNCgkkb25lcm93LT5pZCA9ICRyb3dbJ2NhdGVnb3J5X2lkJ107DQoJJG9uZXJvdy0+YWxpYXMgPSAkcm93WydhbGlhcyddOw0KCSRvbmVyb3ctPm5hbWUgPSBzdHJfcmVwZWF0KCcmbmJzcDsmZ3Q7Jm5ic3A7JywgJGRlcHRoLTEpLiR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXRjYXRlZ29yeScsICRyZXR1cm5pZCwgJHJvd1snbmFtZSddLCBhcnJheSgnY2F0ZWdvcnlfaWQnID0+JHJvd1snY2F0ZWdvcnlfaWQnXSkpOw0KCSRvbmVyb3ctPnByaW9yaXR5ID0gJHJvd1sncHJpb3JpdHknXSswOw0KCSRvbmVyb3ctPmVkaXRsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdGNhdGVnb3J5JywgJHJldHVybmlkLCRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsIGxhbmcoJ2VkaXQnKSwnJywnJywnc3lzdGVtaWNvbicpLCBhcnJheSgnY2F0ZWdvcnlfaWQnPT4kcm93WydjYXRlZ29yeV9pZCddKSk7DQoJJG9uZXJvdy0+ZGVsZXRlbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZWNhdGVnb3J5JywgJHJldHVybmlkLCRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgbGFuZygnZGVsZXRlJyksJycsJycsJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2NhdGVnb3J5X2lkJz0+JHJvd1snY2F0ZWdvcnlfaWQnXSksIGxhbmcoJ2RlbGV0ZWNvbmZpcm0nLCRyb3dbJ25hbWUnXSkpOw0KCSRvbmVyb3ctPnJlb3JkZXJsaW5rID0gJyc7DQoJJG9uZXJvdy0+cmVvcmRlcmxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdyZW9yZGVyJywgJHJldHVybmlkLCRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9yZW9yZGVyLmdpZicsIGxhbmcoJ3Jlb3JkZXInKSwnJywnJywnc3lzdGVtaWNvbicpLCBhcnJheSgnY2F0ZWdvcnlfaWQnPT4kcm93WydjYXRlZ29yeV9pZCddKSk7DQoJJG9uZXJvdy0+ZmlsZW5iID0gJGZuYjsNCgkkb25lcm93LT5maWxlbmJ0eHQgPSAkdGhpcy0+TGFuZygnZmlsZW5iJywkZm5iKTsNCg0KCSRvbmVyb3ctPnJvd2NsYXNzID0gJHJvd2NsYXNzOw0KDQoJJGVudHJ5YXJyYXlbXSA9ICRvbmVyb3c7DQoNCgkoJHJvd2NsYXNzPT0icm93MSI/JHJvd2NsYXNzPSJyb3cyIjokcm93Y2xhc3M9InJvdzEiKTsNCn0NCg0KJHNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRlbnRyeWFycmF5KTsNCiRzbWFydHktPmFzc2lnbignaXRlbWNvdW50JywgY291bnQoJGVudHJ5YXJyYXkpKTsNCg0KI1NldHVwIGxpbmtzDQokc21hcnR5LT5hc3NpZ24oJ2FkZGxpbmsnLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRjYXRlZ29yeScsICRyZXR1cm5pZCwkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3Zm9sZGVyLmdpZicsICR0aGlzLT5MYW5nKCdhZGRjYXRlZ29yeScpLCcnLCcnLCdzeXN0ZW1pY29uJyksIGFycmF5KCksICcnLCBmYWxzZSwgZmFsc2UsICcnKSAuJyAnLiAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0Y2F0ZWdvcnknLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdhZGRjYXRlZ29yeScpLCBhcnJheSgpLCAnJywgZmFsc2UsIGZhbHNlLCAnY2xhc3M9InBhZ2VvcHRpb25zIicpKTsNCiRzbWFydHktPmFzc2lnbigncmVvcmRlcmNhdGVnb3J5bGluaycsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3Jlb3JkZXJjYXRlZ29yeScsICRyZXR1cm5pZCwkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vcmVvcmRlci5naWYnLCBsYW5nKCdyZW9yZGVyJyksJycsJycsJ3N5c3RlbWljb24nKSwgYXJyYXkoKSwgJycsIGZhbHNlLCBmYWxzZSwgJycpIC4nICcuICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3Jlb3JkZXJjYXRlZ29yeScsICRyZXR1cm5pZCwgbGFuZygncmVvcmRlcicpLCBhcnJheSgpLCAnJywgZmFsc2UsIGZhbHNlLCAnY2xhc3M9InBhZ2VvcHRpb25zIicpKTsNCg0KJHNtYXJ0eS0+YXNzaWduKCdjYXRlZ29yeXRleHQnLCAkdGhpcy0+TGFuZygnY2F0ZWdvcnknKSk7DQokc21hcnR5LT5hc3NpZ24oJ2FsaWFzdGV4dCcsICR0aGlzLT5MYW5nKCdhbGlhc2xhYmVsJykpOw0KI0Rpc3BsYXkgdGVtcGxhdGUNCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnbGlzdGNhdGVnb3J5LnRwbCcpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/tab.defaultadmin.files.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEpNRG93bk1hbiAKIyBWZXJzaW9uOiAxLjAKIyBBdXRob3I6IEpvIE1vcmcKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIAojIFZlcnNpb246IDEuMC1SQzMKIyBBdXRob3I6IFN6eW1vbiDFgXVrYXN6Y3p5awojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEpNRG93bk1hbgojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwoKLy8gY2hlY2sgZm9yIHBlcm1pc3Npb25zCmlmICghICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1VzZSBKTURvd25NYW4nKSkKewoJZWNobyAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwoJcmV0dXJuOwp9CgokYWRtaW50aGVtZSA9IGNtc191dGlsczo6Z2V0X3RoZW1lX29iamVjdCgpOwokZmlsZXNfY2F0ZWdvcmllcyA9ICR0aGlzLT5HZXRGaWxlQ2F0ZWdvcmllcygpOwoKaWYoIGlzc2V0KCRwYXJhbXNbJ3NlbGVjdG9yJ10pICkKewogICRzZWxlY3RvcnBhcmFtID0gJHBhcmFtc1snc2VsZWN0b3InXSA9ICR0aGlzLT5jbGVhblNlbGVjdG9yKCBodG1sX2VudGl0eV9kZWNvZGUoICRwYXJhbXNbJ3NlbGVjdG9yJ10gKSk7CiAgJHNlbGVjdG9yX3NxbCA9ICR0aGlzLT5zZWxlY3RvclRvU1FMKCRzZWxlY3RvcnBhcmFtKTsKfQplbHNlCnsKICAkc2VsZWN0b3JwYXJhbSA9ICcnOwogICRzZWxlY3Rvcl9zcWwgPSAnJzsKfQoKJHNlbGVjdG9yX3ZlcmJvc2UgPSAnJzsKCmlmKCFlbXB0eSgkc2VsZWN0b3Jfc3FsKSkKewogICRyZXBsYWNlID0gYXJyYXkoKTsKICAkY2F0ZWdvcmllcyA9ICR0aGlzLT5HZXRDYXRlZ29yaWVzKCk7CiAgCiAgZm9yZWFjaCggJGNhdGVnb3JpZXMgYXMgJHYgKQogIHsKICAgICRyZXBsYWNlWyAkdlsnY2F0ZWdvcnlfaWQnXV0gPSAiJyIgLiAkdlsnbmFtZSddIC4gIiciOyAgCiAgfQogIAogICRyZXBsYWNlWyd8J10gPSAnIE9SICc7CiAgJHJlcGxhY2VbJyYnXSA9ICcgQU5EICc7CiAgJHNlbGVjdG9yX3ZlcmJvc2UgPSBzdHJ0ciggJHNlbGVjdG9ycGFyYW0gLCAkcmVwbGFjZSk7Cn0KCmlmKCBpc3NldCgkcGFyYW1zWydmaWx0ZXInXSkgKQp7CiAgJGZpbHRlcnBhcmFtID0gJHBhcmFtc1snZmlsdGVyJ10gPSBodG1sX2VudGl0eV9kZWNvZGUoICRwYXJhbXNbJ2ZpbHRlciddICkgOwogICRmaWx0ZXIgPSAkZGItPnFzdHIoJyUnLiRwYXJhbXNbJ2ZpbHRlciddLiclJyAsZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKSkgOwp9CmVsc2UKewogICRmaWx0ZXJwYXJhbSA9ICRmaWx0ZXIgPSAnJzsKfQoKCiR3aGVyZV9zcWwgPSAkc2VsZWN0b3Jfc3FsOwppZihzdHJsZW4oJGZpbHRlcik+NCkKewogIGlmKCAhZW1wdHkoJHdoZXJlX3NxbCkgKSAkd2hlcmVfc3FsIC49JyBBTkQgJzsKICAgICAgCiAgJHdoZXJlX3NxbCAuPSAnICggbmFtZSBMSUtFICc7CiAgJHdoZXJlX3NxbCAuPSAkZmlsdGVyOwogICR3aGVyZV9zcWwgLj0gJyBPUiBleHQgTElLRSAnOwogICR3aGVyZV9zcWwgLj0gJGZpbHRlcjsKICAkd2hlcmVfc3FsIC49ICcgT1IgZGVzY3JpcHRpb24gTElLRSAnOwogICR3aGVyZV9zcWwgLj0gJGZpbHRlciAuICcgKSc7Cn0KCi8vTG9hZCBmaWxlcwokZW50cnlhcnJheSA9IGFycmF5KCk7CiRxdWVyeSA9ICdzZWxlY3QgdmlzaWJsZSwgZmlsZV9pZCwgYWxpYXMsbmFtZSwgc3RhcnRzLGV4cGlyZXMsIGV4dCwgZGVzY3JpcHRpb24sIGNvdW50ZXIgZnJvbSAnCiAgICAgICAgICAuIGNtc19kYl9wcmVmaXgoKSAKICAgICAgICAgIC4gJ21vZHVsZV9qbWRvd25tYW5fZmlsZXMgJwogICAgICAgICAgLiAoICFlbXB0eSgkd2hlcmVfc3FsKSA/ICcgV0hFUkUgJyAuICR3aGVyZV9zcWwgLiAnICcgOiAnJykgLiAnb3JkZXIgYnkgbmFtZSBhc2MnOwogICAgICAgICAgCiRkYnJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOwokcm93Y2xhc3MgPSAncm93MSc7CgokdHJ1ZWljb24gPSRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsICcnLCcnLCcnLCdzeXN0ZW1pY29uJyk7CiRmYWxzZWljb24gPSRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9mYWxzZS5naWYnLCAnJywnJywnJywnc3lzdGVtaWNvbicpOwoKd2hpbGUgKCRkYnJlc3VsdCAmJiAkcm93ID0gJGRicmVzdWx0LT5GZXRjaFJvdygpKQp7Cgkkb25lcm93ID0gbmV3IHN0ZENsYXNzKCk7Cgkkb25lcm93LT5pZCA9ICRyb3dbJ2ZpbGVfaWQnXTsKCSRvbmVyb3ctPmRlc2NyaXB0aW9uID0gJHJvd1snZGVzY3JpcHRpb24nXTsKICAKCSRvbmVyb3ctPnZpc2libGUgPSAkdGhpcy0+Q3JlYXRlTGluaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdGZpbGUnLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRyZXR1cm5pZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm93Wyd2aXNpYmxlJ10gPyAkdHJ1ZWljb24gOiAkZmFsc2VpY29uLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZV9pZCcgPT4gJHJvd1snZmlsZV9pZCddLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYW5nZXZpc2liaWxpdHknID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2aXNpYmxlJyA9PiAkcm93Wyd2aXNpYmxlJ10gPyAwIDogMSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWxlY3RvcicgPT4gJHNlbGVjdG9ycGFyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoJJG9uZXJvdy0+bmFtZSA9ICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VkaXRmaWxlJywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJldHVybmlkLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcm93WyduYW1lJ10gLiAoJHJvd1snZXh0J10hPScnPycuJy4gJHJvd1snZXh0J106JycpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxlX2lkJyA9PiAkcm93WydmaWxlX2lkJ10sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbGVjdG9yJyA9PiAkc2VsZWN0b3JwYXJhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkkb25lcm93LT5yb3djbGFzcyA9ICRyb3djbGFzczsKCSRvbmVyb3ctPmFsaWFzID0gJHJvd1snYWxpYXMnXTsKCSRvbmVyb3ctPmNvdW50ZXIgPSAkcm93Wydjb3VudGVyJ107CgkKICBpZihlbXB0eSgkcm93WydzdGFydHMnXSkgJiYgZW1wdHkoJHJvd1snZXhwaXJlcyddKSkKICB7CiAgICAkb25lcm93LT5hdmFpbGFibGUgPSAkdGhpcy0+TGFuZygnYWxsdGltZScpOwogIH0KICBlbHNlCiAgewogICAgJHJvd1snc3RhcnRzJ10gPSAhZW1wdHkoJHJvd1snc3RhcnRzJ10pID8gJHJvd1snc3RhcnRzJ10gOiAnLi4uJzsKICAgICRyb3dbJ2V4cGlyZXMnXSA9ICFlbXB0eSgkcm93WydleHBpcmVzJ10pID8gJHJvd1snZXhwaXJlcyddIDogJy4uLic7CiAgICAkb25lcm93LT5hdmFpbGFibGUgPSAkcm93WydzdGFydHMnXS4nIC0gJy4kcm93WydleHBpcmVzJ10gOwogIH0KICAKICAkY29uZmlnID0gJGdDbXMtPkdldENvbmZpZygpOwoJJG9uZXJvdy0+Y2hhbmdlbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYW5nZWZpbGUnLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuaWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8aW1nIGNsYXNzPSJzeXN0ZW1pY29uIiBzcmM9IicgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkY29uZmlnWydyb290X3VybCddCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnL21vZHVsZXMvSk1Eb3duTWFuL2ltYWdlcy9pY29ucy90cmFuc3BvcnQucG5nIiBhbHQ9IicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICR0aGlzLT5sYW5nKCdmaWxlY2hhbmdlJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICciIHRpdGxlPSInCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkdGhpcy0+bGFuZygnZmlsZWNoYW5nZScpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnIi8+JywgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZV9pZCcgPT4gJHJvd1snZmlsZV9pZCddLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJyA9PiBiYXNlNjRfZW5jb2RlKCAkcm93WyduYW1lJ10gKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWxpYXMnID0+IGJhc2U2NF9lbmNvZGUoICRyb3dbJ2FsaWFzJ10gKSAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbGVjdG9yJyA9PiAkc2VsZWN0b3JwYXJhbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCgkkb25lcm93LT5pbmNhdGVnb3JpZXMgPSAhYXJyYXlfa2V5X2V4aXN0cyggKGludCkgJHJvd1snZmlsZV9pZCddLCAkZmlsZXNfY2F0ZWdvcmllcyApIAogICAgICAgICAgICAgICAgICAgICAgICAgID8gMCAKICAgICAgICAgICAgICAgICAgICAgICAgICA6ICRmaWxlc19jYXRlZ29yaWVzWyhpbnQpICRyb3dbJ2ZpbGVfaWQnXV1bJ2NvdW50J107CiAgICAgICAgICAgICAgICAgICAgICAgICAgCgkkb25lcm93LT5lZGl0bGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWQsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWRpdGZpbGUnLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHJldHVybmlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYWRtaW50aGVtZS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZWRpdC5naWYnLCBsYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxlX2lkJyA9PiAkcm93WydmaWxlX2lkJ10sIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWxlY3RvcicgPT4gJHNlbGVjdG9ycGFyYW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAoJJG9uZXJvdy0+ZGVsZXRlbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpZCwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZWZpbGUnLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkcmV0dXJuaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCBsYW5nKCdkZWxldGUnKSwnJywnJywnc3lzdGVtaWNvbicpLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheSgnZmlsZV9pZCc9PiRyb3dbJ2ZpbGVfaWQnXSwgJ3NlbGVjdG9yJz0+JHNlbGVjdG9ycGFyYW0pLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW5nKCAnZGVsZXRlY29uZmlybScsICRyb3dbJ25hbWUnXSAuICgkcm93WydleHQnXSAhPSAnJyA/ICcuJyAuICRyb3dbJ2V4dCddOicnKSApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgkkZW50cnlhcnJheVtdID0gJG9uZXJvdzsKCSgkcm93Y2xhc3M9PSJyb3cxIj8kcm93Y2xhc3M9InJvdzIiOiRyb3djbGFzcz0icm93MSIpOwp9Cgokc21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJGVudHJ5YXJyYXkpOwokc21hcnR5LT5hc3NpZ24oJ2l0ZW1jb3VudCcsIGNvdW50KCRlbnRyeWFycmF5KSk7CiRzbWFydHktPmFzc2lnbignYWRkbGluaycsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2FkZGZpbGUnLCAkcmV0dXJuaWQsJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+TGFuZygnYWRkZmlsZScpLCcnLCcnLCdzeXN0ZW1pY29uJyksIGFycmF5KCksICcnLCBmYWxzZSwgZmFsc2UsICcnKSAuJyAnLiAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdhZGRmaWxlJywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnYWRkZmlsZScpLCBhcnJheSgpLCAnJywgZmFsc2UsIGZhbHNlLCAnY2xhc3M9InBhZ2VvcHRpb25zIicpKTsKJHNtYXJ0eS0+YXNzaWduKCdzY2FubGluaycsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3NjYW5mb3JuZXdmaWxlJywgJHJldHVybmlkLCRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS92aWV3LmdpZicsICR0aGlzLT5MYW5nKCdzY2FuZm9ybmV3ZmlsZScpLCcnLCcnLCdzeXN0ZW1pY29uJyksIGFycmF5KCksICcnLCBmYWxzZSwgZmFsc2UsICcnKSAuJyAnLiAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdzY2FuZm9ybmV3ZmlsZXMnLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdzY2FuZm9ybmV3ZmlsZXMnKSwgYXJyYXkoKSwgJycsIGZhbHNlLCBmYWxzZSwgJ2NsYXNzPSJwYWdlb3B0aW9ucyInKSk7CiRzbWFydHktPmFzc2lnbigndGFibGV2aXNpYmxlaGVhZGVyJywgJHRoaXMtPkxhbmcoJ3Zpc2libGVsYWJlbCcpKTsKJHNtYXJ0eS0+YXNzaWduKCd0YWJsZWNvdW50ZXJoZWFkZXInLCAkdGhpcy0+TGFuZygnY291bnRlcmxhYmVsJykpOwokc21hcnR5LT5hc3NpZ24oJ3RhYmxlYXZhaWxhYmxpdHloZWFkZXInLCAkdGhpcy0+TGFuZygnYXZhaWxhYmxpdHknKSk7CiRzbWFydHktPmFzc2lnbignY2F0ZWdvcnlfc2VsZWN0b3InLCAkdGhpcy0+TGFuZygnc2VsZWN0b3InKSk7CiRzbWFydHktPmFzc2lnbignbm9zZWxlY3RvcicsICR0aGlzLT5MYW5nKCdub3NlbGVjdG9yJykpOwokc21hcnR5LT5hc3NpZ24oJ25vZmlsdGVyJywgJHRoaXMtPkxhbmcoJ25vZmlsdGVyJykpOwokc21hcnR5LT5hc3NpZ24oJ2N1cnJlbnQnLCAkdGhpcy0+TGFuZygnY3VycmVudCcpKTsKJHNtYXJ0eS0+YXNzaWduKCdmaWx0ZXInLCAkdGhpcy0+TGFuZygnZmlsdGVyJykpOwokc21hcnR5LT5hc3NpZ24oJ3ZlcmJvc2UnLCAkdGhpcy0+TGFuZygndmVyYm9zZScpKTsKJHNtYXJ0eS0+YXNzaWduKCd2YWx1ZV9jYXRlZ29yeV9zZWxlY3RvcicsICRzZWxlY3RvcnBhcmFtKTsKJHNtYXJ0eS0+YXNzaWduKCd2YWx1ZV9maWx0ZXInLCAkZmlsdGVycGFyYW0pOwokc21hcnR5LT5hc3NpZ24oJ3ZhbHVlX2NhdGVnb3J5X3NlbGVjdG9yX3ZlcmJvc2UnLCAkc2VsZWN0b3JfdmVyYm9zZSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfY2F0ZWdvcnlfc2VsZWN0b3InLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3NlbGVjdG9yJywgJHNlbGVjdG9ycGFyYW0sIDEwLCA1MCkpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2ZpbHRlcicsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZmlsdGVyJywgJGZpbHRlcnBhcmFtLCAxMCwgNTApKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9jYXRlZ29yeV9zZWxlY3Rvcl91cmwnLCAkdGhpcy0+Q3JlYXRlTGluayggJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkICwgJycsICAkcGFyYW1zICwgJycsIHRydWUpKTsKCiNEaXNwbGF5IHRlbXBsYXRlCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnbGlzdGZpbGUudHBsJyk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/tab.defaultadmin.preferences.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IEpNRG93bk1hbiAKIyBWZXJzaW9uOiAxLjAKIyBBdXRob3I6IEpvIE1vcmcKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIAojIFZlcnNpb246IDEuMC1SQzMKIyBBdXRob3I6IFN6eW1vbiDFgXVrYXN6Y3p5awojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQkVHSU5fTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEpNRG93bk1hbgojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFTkRfTElDRU5TRQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQppZiggIWRlZmluZWQoJ0NNU19WRVJTSU9OJykgKSBleGl0OwoKLy8gY2hlY2sgZm9yIHBlcm1pc3Npb25zCmlmICghJHRoaXMtPkNoZWNrUGVybWlzc2lvbignVXNlIEpNRG93bk1hbicpKQp7CgllY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCduZWVkcGVybWlzc2lvbicsIGFycmF5KCdVc2UgSk1Eb3duTWFuJykpKTsKCXJldHVybjsKfQoKJGFkbWludGhlbWUgPSBjbXNfdXRpbHM6OmdldF90aGVtZV9vYmplY3QoKTsKCiRzbWFydHktPmFzc2lnbignc3RhcnRmb3JtJywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdzYXZlX2FkbWluX3ByZWZzJywgJHJldHVybmlkKSk7CiRzbWFydHktPmFzc2lnbignZW5kZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwokc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsICdTdWJtaXQnKSk7CgoKJHByZWZfZXJyb3JzID0gYXJyYXkoKTsKJGRvd25sb2FkX2RpciA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkaXInKTsKaWYoICFmaWxlX2V4aXN0cygkY29uZmlnWydyb290X3BhdGgnXS5ESVJFQ1RPUllfU0VQQVJBVE9SLiRkb3dubG9hZF9kaXIgKSApCgkkcHJlZl9lcnJvcnNbXSA9ICR0aGlzLT5sYW5nKCdkaXJfZG9udF9leGlzdHMnLCRkb3dubG9hZF9kaXIpOwppZiggIWlzX3dyaXRhYmxlKCRjb25maWdbJ3Jvb3RfcGF0aCddLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGRvd25sb2FkX2RpciApICkKCSRwcmVmX2Vycm9yc1tdID0gJHRoaXMtPmxhbmcoJ2Rvd25sb2FkX2Rpcl9ub3Rfd3JpdGFibGUnLCRkb3dubG9hZF9kaXIpOwokZG93bmxvYWRfc2NhbiA9IGV4cGxvZGUoIjsiLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzY2FuJykpOwppZihjb3VudCgkZG93bmxvYWRfc2Nhbik+MCkKICBmb3JlYWNoKCAkZG93bmxvYWRfc2NhbiBhcyAkZiApCglpZiggIWZpbGVfZXhpc3RzKCRjb25maWdbJ3Jvb3RfcGF0aCddLkRJUkVDVE9SWV9TRVBBUkFUT1IuJGYgKSApCgkgICRwcmVmX2Vycm9yc1tdID0gJHRoaXMtPmxhbmcoJ2Rpcl9kb250X2V4aXN0cycsJGYpOwoKCiRzbWFydHktPmFzc2lnbignbGFiZWxfdGh1bWJfZGlyJywgJHRoaXMtPkxhbmcoJ3RodW1iX2RpcicpKTsKJHNtYXJ0eS0+YXNzaWduKCdsYWJlbF90aHVtYl9zaXplJywgJHRoaXMtPkxhbmcoJ3RodW1iX3NpemUnKSk7CiRzbWFydHktPmFzc2lnbignbGFiZWxfdGh1bWJfYXV0bycsICR0aGlzLT5MYW5nKCd0aHVtYl9hdXRvJykpOwokc21hcnR5LT5hc3NpZ24oJ2xhYmVsX2Rvd25sb2FkX2RpcicsICR0aGlzLT5MYW5nKCdkb3dubG9hZF9kaXInKSk7CiRzbWFydHktPmFzc2lnbignbGFiZWxfZG93bmxvYWRfc2NhbicsICR0aGlzLT5MYW5nKCdkb3dubG9hZF9zY2FuJykpOwokc21hcnR5LT5hc3NpZ24oJ2xhYmVsX2Rvd25sb2FkX3NjYW5fcmVjdXJzJywgJHRoaXMtPkxhbmcoJ2Rvd25sb2FkX3NjYW5fcmVjdXJzJykpOwokc21hcnR5LT5hc3NpZ24oJ2xhYmVsX3ByZWZzX3NlYXJjaF9leHBpcmVzJywgJHRoaXMtPkxhbmcoJ3NlYXJjaF9leHBpcmUnKSk7CiRzbWFydHktPmFzc2lnbignbGFiZWxfZG93bmxvYWRfdGVtcGxhdGUnLCAkdGhpcy0+TGFuZygnZG93bmxvYWRfdGVtcGxhdGUnKSk7CiRzbWFydHktPmFzc2lnbignbGFiZWxfZG93bmxvYWRfdGVtcGxhdGVfaW5mbycsICR0aGlzLT5MYW5nKCdkb3dubG9hZF90ZW1wbGF0ZV9pbmZvJykpOwokc21hcnR5LT5hc3NpZ24oJ2xhYmVsX3d5c2l3eWdfb24nLCAkdGhpcy0+TGFuZygnd3lzaXd5Z19vbicpKTsKCiRzbWFydHktPmFzc2lnbignc3RvcF9pbWFnZScsJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL3N0b3AuZ2lmJywgJ2Vycm9yJywnJywnJywnc3lzdGVtaWNvbicpKTsKaWYoY291bnQoJHByZWZfZXJyb3JzKSA+IDAgKQoJJHNtYXJ0eS0+YXNzaWduKCdwcmVmX2Vycm9ycycsICRwcmVmX2Vycm9ycyk7Cgokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3RodW1iX2RpcicsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZGlyX3RodW1icycsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkaXJfdGh1bWJzJywgbGFuZygnbmVlZHVwZ3JhZGUnKSksIDUwLCAyNTApKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF90aHVtYl9zaXplJywgJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICd0aHVtYnNfc2l6ZScsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0aHVtYnNfc2l6ZScsIGxhbmcoJ25lZWR1cGdyYWRlJykpLCA1MCwgMjUwKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfdGh1bWJfYXV0bycsICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ3RodW1ic19hdXRvJywnMScsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0aHVtYnNfYXV0bycsIGxhbmcoJ25lZWR1cGdyYWRlJykpLCAgJ2NsYXNzPSJwYWdlY2hlY2tib3giJykpOwokc21hcnR5LT5hc3NpZ24oJ2lucHV0X2Rvd25sb2FkX2RpcicsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZG93bmxvYWRfZGlyJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RpcicsIGxhbmcoJ25lZWR1cGdyYWRlJykpLCA1MCwgMjUwKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfZG93bmxvYWRfc2NhbicsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZG93bmxvYWRfc2NhbicsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzY2FuJywgbGFuZygnbmVlZHVwZ3JhZGUnKSksIDUwLCAyNTApKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9kb3dubG9hZF9zY2FuX3JlY3VycycsICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ2Rvd25sb2FkX3NjYW5fcmVjdXJzJywgJzEnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnc2Nhbl9yZWN1cnMnLCB0cnVlKSwgICdjbGFzcz0icGFnZWNoZWNrYm94IicpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF93eXNpd3lnX29uJywgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnYWRtaW5fd3lzaXd5ZycsICcxJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2FkbWluX3d5c2l3eWcnLCB0cnVlKSwgICdjbGFzcz0icGFnZWNoZWNrYm94IicpKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF9zZWFyY2hfZXhwaXJlcycsICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ3NlYXJjaF9leHBpcmVzJywgJzEnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZXhwaXJlZF9zZWFyY2hhYmxlJywgdHJ1ZSksICAnY2xhc3M9InBhZ2VjaGVja2JveCInKSk7CiRzbWFydHktPmFzc2lnbignaW5wdXRfZG93bmxvYWRfdGVtcGxhdGUnLCAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEoIGZhbHNlLCAkaWQsICR0aGlzLT5HZXRUZW1wbGF0ZSgnZGVmYXVsdF9kb3dubG9hZF90ZW1wbGF0ZScpLCAnZG93bmxvYWRfdGVtcGxhdGUnLCdwYWdlc21hbGx0ZXh0YXJlYScpKTsKCgojIGltcG9ydCBmcm9tIG9sZCBETSBzdHVmZgokT2xkRE1JbnN0YWxlZCA9IGluX2FycmF5KCdEb3dubG9hZE1hbmFnZXInLCBjbXNtcygpLT5HZXRNb2R1bGVPcGVyYXRpb25zKCktPkdldEluc3RhbGxlZE1vZHVsZXMoVFJVRSkpOwoKJHR4dCA9ICR0aGlzLT5MYW5nKCdvbGRfZG1fbm90X2luc3RhbGxlZCcpOwoKaWYoJE9sZERNSW5zdGFsZWQpCnsKICAkdHh0ID0gJHRoaXMtPkxhbmcoJ29sZF9kbV9pbnN0YWxsZWQnKTsKICAKICBpZiggY21zbXMoKS0+R2V0TW9kdWxlT3BlcmF0aW9ucygpLT5Jc01vZHVsZUFjdGl2ZSgnRG93bmxvYWRNYW5hZ2VyJykgKQogIHsKICAgICR0eHQgLj0gJyAnIC4gJHRoaXMtPkxhbmcoJ29sZF9kbV9hY3RpdmUnKTsKICB9CiAgZWxzZQogIHsKICAgICR0eHQgLj0gJyAnIC4gJHRoaXMtPkxhbmcoJ29sZF9kbV9pbmFjdGl2ZScpOwogIH0KCiAgJHNtYXJ0eS0+YXNzaWduKCdpbXBfZm9ybV9zdGFydCcsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnaW1wb3J0X2Zyb21fZG0nLCAkcmV0dXJuaWQpKTsKICAkc21hcnR5LT5hc3NpZ24oJ2ltcF9mb3JtX2VuZCcsICR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwogICRzbWFydHktPmFzc2lnbignaW1wX2Zvcm1fc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ2ltcF9mb3JtX3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdpbXBvcnRfZnJvbV9kbScpLCBOVUxMLCBOVUxMLCAkdGhpcy0+TGFuZygnY29uZmlybV9pbXBvcnRfZnJvbV9kbScpKSk7Cn0KCiRzbWFydHktPmFzc2lnbignZG1fdHh0JywgJHR4dCk7CiRzbWFydHktPmFzc2lnbignaW1wb3J0JywgJE9sZERNSW5zdGFsZWQpOwoKLy8gRGlzcGxheSB0aGUgcG9wdWxhdGVkIHRlbXBsYXRlCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW5wcmVmcy50cGwnKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/tab.defaultadmin.templates.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogSk1Eb3duTWFuIA0KIyBWZXJzaW9uOiAxLjANCiMgQXV0aG9yOiBKbyBNb3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBGb3JrIG9mIG1vZHVsZTogRG93bmxvYWRNYW5hZ2VyIA0KIyBWZXJzaW9uOiAxLjAtUkMzDQojIEF1dGhvcjogU3p5bW9uIMWBdWthc3pjenlrDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIyBUaGUgbW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2tlbGV0b24vDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgQkVHSU5fTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgSk1Eb3duTWFuDQojIEpNRG93bk1hbiBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgSk1Eb3duTWFuIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQ0KIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQ0KIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQ0KIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBFTkRfTElDRU5TRQ0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCmlmKCAhZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSApIGV4aXQ7DQoNCi8vIGNoZWNrIGZvciBwZXJtaXNzaW9ucw0KaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgSk1Eb3duTWFuJykpDQp7DQoJZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkdGhpcy0+TGFuZygnbmVlZHBlcm1pc3Npb24nLCBhcnJheSgnVXNlIEpNRG93bk1hbicpKSk7DQoJcmV0dXJuOw0KfQ0KJGFkbWludGhlbWUgPSBjbXNfdXRpbHM6OmdldF90aGVtZV9vYmplY3QoKTsNCg0KLy8gdHlwZXMgY2FuIGJlIGFkZGVkIG9yIHJlbW92ZWQgc2ltcGx5IGJ5IGNoYW5naW5nIHRoZSBhcnJheSBiZWxvdw0KJHRlbXBsYXRldHlwZXMgPSBhcnJheSgnbGlzdCcsJ2RldGFpbCcsJ2Zvcm0nLCdlbWFpbCcpOw0KDQovLyB3ZSBmaXJzdCByZXRyaWV2ZSB0aGUgZGVmYXVsdCB0ZW1wbGF0ZXMsIHRvIGNyZWF0ZSB0b2dnbGVkZWZhdWx0IGxpbmtzDQovLyBhbmQgYmVjYXVzZSB3ZSBkb24ndCB3YW50IGRlbGV0ZSBsaW5rcyBmb3IgdGhlc2UNCiRkZWZhdWx0ID0gYXJyYXkoKTsNCiRvcmRlcmVkdGVtcGxhdGVzID0gYXJyYXkoKTsNCmZvcmVhY2goJHRlbXBsYXRldHlwZXMgYXMgJG9uZXR5cGUpew0KCSRkZWZhdWx0W10gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVmYXVsdF8nLiRvbmV0eXBlLidfdGVtcGxhdGUnLCAnJyk7DQoJJG9yZGVyZWR0ZW1wbGF0ZXNbJG9uZXR5cGVdID0gYXJyYXkoKTsNCn0NCg0KLy8gdGhlbiB3ZSByZXRyaWV2ZSBhbGwgbW9kdWxlIHRlbXBsYXRlcywgYnV0IHdlJ2xsIG5lZWQgdG8gb3JkZXIgdGhlbSBieSB0eXBlDQokdGVtcGxhdGVsaXN0ID0gJHRoaXMtPkxpc3RUZW1wbGF0ZXMoJHRoaXMtPkdldE5hbWUoKSk7DQoNCmZvcmVhY2goJHRlbXBsYXRlbGlzdCBhcyAkdGVtcGxhdGUpDQp7DQoJLy8gd2UgY3JlYXRlIHRoZSBhZG1pbiBsaW5rcw0KCSR0cGwgPSBuZXcgU3RkQ2xhc3MoKTsNCg0KCSR0cGwtPm5hbWUgPSBzdWJzdHIoc3Ryc3RyKCR0ZW1wbGF0ZSwgJ18nKSwgMSk7DQoJJHRwbC0+cHJlZml4ID0gc3RyX3JlcGxhY2UoJHRwbC0+bmFtZSwiIiwkdGVtcGxhdGUpOw0KDQoJJHRwbC0+bmFtZWxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0dGVtcGxhdGUnLCAkcmV0dXJuaWQsICR0cGwtPm5hbWUsIGFycmF5KCd0ZW1wbGF0ZV9uYW1lJz0+JHRwbC0+bmFtZSwgJ3ByZWZpeCc9PiR0cGwtPnByZWZpeCkpOw0KCSR0cGwtPmR1cGxpY2F0ZWxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0dGVtcGxhdGUnLCAkcmV0dXJuaWQsJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2NvcHkuZ2lmJyxsYW5nKCdjb3B5JyksJycsJycsJ3N5c3RlbWljb24nKSwgYXJyYXkoJ2Zyb20nPT4kdHBsLT5uYW1lLCAncHJlZml4Jz0+JHRwbC0+cHJlZml4LCAnbmV3Jz0+dHJ1ZSkpOw0KCSR0cGwtPmVkaXRsaW5rID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdHRlbXBsYXRlJywgJHJldHVybmlkLCRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsIGxhbmcoJ2VkaXQnKSwnJywnJywnc3lzdGVtaWNvbicpLCBhcnJheSgndGVtcGxhdGVfbmFtZSc9PiR0cGwtPm5hbWUsICdwcmVmaXgnPT4kdHBsLT5wcmVmaXgpKTsNCg0KCWlmKGluX2FycmF5KCR0ZW1wbGF0ZSwgJGRlZmF1bHQpKQ0KCXsNCgkJLy8gdGhlIHRlbXBsYXRlIGlzIHVzZWQgYXMgYSBkZWZhdWx0IHRlbXBsYXRlDQoJCSR0cGwtPnRvZ2dsZWRlZmF1bHQgPSRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsbGFuZygndHJ1ZScpLCcnLCcnLCdzeXN0ZW1pY29uJyk7DQoJCSR0cGwtPmRlbGV0ZWxpbmsgPSAnJzsNCgl9DQoJZWxzZWlmKCR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBEb3dubG9hZCBNYW5hZ2VyIFRlbXBsYXRlJykpDQoJew0KCQkkdHBsLT50b2dnbGVkZWZhdWx0ID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAndG9nZ2xlZGVmYXVsdHRlbXBsYXRlJywgJHJldHVybmlkLCRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9mYWxzZS5naWYnLGxhbmcoJ3NldHRydWUnKSwnJywnJywnc3lzdGVtaWNvbicpLCBhcnJheSgndGVtcGxhdGVfbmFtZSc9PiR0cGwtPm5hbWUsICdwcmVmaXgnPT4kdHBsLT5wcmVmaXgpKTsNCgkJJHRwbC0+ZGVsZXRlbGluayA9ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZXRlbXBsYXRlJywgJHJldHVybmlkLCRhZG1pbnRoZW1lLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJyxsYW5nKCdkZWxldGUnKSwnJywnJywnc3lzdGVtaWNvbicpLCBhcnJheSgndGVtcGxhdGVfbmFtZSc9PiR0ZW1wbGF0ZSksICR0aGlzLT5MYW5nKCdwcm9tcHRfZGVsZXRldGVtcGxhdGUnLCAkdHBsLT5uYW1lKSk7DQoJfQ0KCWVsc2UNCgl7DQoJCSR0cGwtPnRvZ2dsZWRlZmF1bHQgPSAnJzsNCgkJJHRwbC0+ZGVsZXRlbGluayA9ICcnOw0KCX0NCg0KCS8vIGFkZCBwdXQgdGhlIHRlbXBsYXRlIGluIHRoZSByaWdodCB0ZW1wbGF0ZSB0eXBlDQoJJHRtcHByZWZpeCA9IHN1YnN0cigkdHBsLT5wcmVmaXgsIDAsIC0xKTsNCglpZihpc3NldCgkb3JkZXJlZHRlbXBsYXRlc1skdG1wcHJlZml4XSkpCSRvcmRlcmVkdGVtcGxhdGVzWyR0bXBwcmVmaXhdW10gPSAkdHBsOw0KDQp9DQoNCi8vIHdlIHRoZW4gZGlzcGxheSBlYWNoIHR5cGUgb25lIGJ5IG9uZS4uLiBsaXN0dGVtcGxhdGUudHBsIGlzIHJlcGVhdGVkIGZvciBlYWNoIHR5cGUNCmZvcmVhY2goJHRlbXBsYXRldHlwZXMgYXMgJG9uZXR5cGUpDQp7DQoJJGFkZGxpbmsgPSAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0dGVtcGxhdGUnLCAkcmV0dXJuaWQsJGFkbWludGhlbWUtPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkdGhpcy0+TGFuZygnYWRkJy4kb25ldHlwZS4ndGVtcGxhdGUnKSwnJywnJywnc3lzdGVtaWNvbicpLCBhcnJheSgncHJlZml4Jz0+JG9uZXR5cGUuJ18nKSwgJycsIGZhbHNlLCBmYWxzZSwgJycpIC4nICcuICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FkZCcuJG9uZXR5cGUuJ3RlbXBsYXRlJyksIGFycmF5KCdwcmVmaXgnPT4kb25ldHlwZS4nXycpLCAnJywgZmFsc2UsIGZhbHNlLCAnY2xhc3M9InBhZ2VvcHRpb25zIicpOw0KCSR0ZW1wbGF0ZXMgPSBhcnJheSgpOw0KCS8vIG5vdyB0aGF0IHRoZSB0ZW1wbGF0ZXMgYXJlIG9yZGVyZWQgYnkgdHlwZSwgd2UgY2FuIGFzc2lnbiB0aGUgcm93IGNsYXNzDQoJLy8gKHRoaXMgY291bGQgaGF2ZSBiZWVuIGRvbmUgaW4gdGhlIHRlbXBsYXRlIGl0c2VsZiB0aG91Z2guLi4pDQoJJHJvd2NsYXNzID0gJ3JvdzEnOw0KCWZvcmVhY2goJG9yZGVyZWR0ZW1wbGF0ZXNbJG9uZXR5cGVdIGFzICR0ZW1wbGF0ZSkNCgl7DQoJCSR0ZW1wbGF0ZS0+cm93Y2xhc3MgPSAkcm93Y2xhc3M7DQoJCSR0ZW1wbGF0ZXNbXSA9ICR0ZW1wbGF0ZTsNCgkJKCRyb3djbGFzcz09InJvdzEiPyRyb3djbGFzcz0icm93MiI6JHJvd2NsYXNzPSJyb3cxIik7DQoJfQ0KCSRzbWFydHktPmFzc2lnbignaXRlbXMnLCAkdGVtcGxhdGVzKTsNCgkkc21hcnR5LT5hc3NpZ24oJ3RpdGxlJywgJHRoaXMtPkxhbmcoJG9uZXR5cGUuJ3RlbXBsYXRlcycpKTsNCgkkc21hcnR5LT5hc3NpZ24oJ2FkZGxpbmsnLCAkYWRkbGluayk7DQoJI0Rpc3BsYXkgdGVtcGxhdGUNCgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2xpc3R0ZW1wbGF0ZS50cGwnKTsNCn0NCg==]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/addfile.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19Cgp7JGZpbGV0eXBlaW5wdXR9Cgo8ZGl2IGNsYXNzPSdwYWdlb3ZlcmZsb3cnPjxwIGNsYXNzPSdwYWdldGV4dCc+eyRhY2Nlc3N0eXBlbGFiZWx9OjwvcD4KPHAgY2xhc3M9J3BhZ2VpbnB1dCc+eyRpbnB1dGFjY2Vzc3R5cGV9PC9wPjwvZGl2PgoKPGRpdiBjbGFzcz0ncGFnZW92ZXJmbG93Jz48cCBjbGFzcz0ncGFnZXRleHQnPnskZmV1Z3JvdXBzbGFiZWx9OjwvcD4KPHAgY2xhc3M9J3BhZ2VpbnB1dCc+eyRpbnB1dGZldWdyb3Vwc308L3A+PC9kaXY+Cgo8ZGl2IGNsYXNzPSdwYWdlb3ZlcmZsb3cnPjxwIGNsYXNzPSdwYWdldGV4dCc+eyRkZXNjcmlwdGlvbmxhYmVsfTo8L3A+Cgk8cCBjbGFzcz0ncGFnZWlucHV0Jz57JGlucHV0ZGVzY3JpcHRpb259PC9wPjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JHVzZWV4cGlyYXRpb250ZXh0fTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0ZXhwfTwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9J3BhZ2VvdmVyZmxvdyc+PHAgY2xhc3M9J3BhZ2V0ZXh0Jz57JGV4cGlyZXNsYWJlbH06PC9wPgo8cCBjbGFzcz0icGFnZWlucHV0Ij57aHRtbF9zZWxlY3RfZGF0ZSBwcmVmaXg9JGV4cGlyZWRhdGVwcmVmaXggdGltZT0kaW5wdXRleHBpcmVzIHN0YXJ0X3llYXI9Ii0xMCIgZW5kX3llYXI9IisxNSJ9IHtodG1sX3NlbGVjdF90aW1lIHByZWZpeD0kZXhwaXJlZGF0ZXByZWZpeCB0aW1lPSRpbnB1dGV4cGlyZXN9PC9wPjwvZGl2Pgo8ZGl2IGNsYXNzPSdwYWdlb3ZlcmZsb3cnPjxwIGNsYXNzPSdwYWdldGV4dCc+eyR2aXNpYmxlbGFiZWx9OjwvcD4KPHAgY2xhc3M9J3BhZ2VpbnB1dCc+eyRpbnB1dHZpc2libGV9PC9wPjwvZGl2Pgo8ZGl2IGNsYXNzPSdwYWdlb3ZlcmZsb3cnPjxwIGNsYXNzPSdwYWdldGV4dCc+eyRtYWtlX3RodW1ibGFiZWx9OjwvcD4KPHAgY2xhc3M9J3BhZ2VpbnB1dCc+eyRpbnB1dG1ha2VfdGh1bWJ9PC9wPjwvZGl2Pgo8ZGl2IGNsYXNzPSdwYWdlb3ZlcmZsb3cnPjxwIGNsYXNzPSdwYWdldGV4dCc+eyR0aHVtYl9wYXRobGFiZWx9OjwvcD4KPHAgY2xhc3M9J3BhZ2VpbnB1dCc+eyRpbnB1dHRodW1iX3BhdGh9PC9wPjwvZGl2Pgo8ZGl2IGNsYXNzPSdwYWdlb3ZlcmZsb3cnPjxwIGNsYXNzPSdwYWdldGV4dCc+eyR0ZW1wbGF0ZV9kZXRhaWxsYWJlbH06PC9wPgo8cCBjbGFzcz0ncGFnZWlucHV0Jz57JGlucHV0dGVtcGxhdGVfZGV0YWlsfTwvcD48L2Rpdj4KPGRpdiBjbGFzcz0ncGFnZW92ZXJmbG93Jz48cCBjbGFzcz0ncGFnZXRleHQnPnskdGVtcGxhdGVfZm9ybWxhYmVsfTo8L3A+CjxwIGNsYXNzPSdwYWdlaW5wdXQnPnskaW5wdXR0ZW1wbGF0ZV9mb3JtfTwvcD48L2Rpdj4KPGRpdiBjbGFzcz0ncGFnZW92ZXJmbG93Jz48cCBjbGFzcz0ncGFnZXRleHQnPnskdGVtcGxhdGVfZW1haWxsYWJlbH06PC9wPgo8cCBjbGFzcz0ncGFnZWlucHV0Jz57JGlucHV0dGVtcGxhdGVfZW1haWx9PC9wPjwvZGl2PgoKPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KCTx0aGVhZD4KCQk8dHI+CgkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CgkJCTx0aD57JGNhdGVnb3J5dGV4dH08L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRhc3NvY2lhdGlvbnMgaXRlbT1lbnRyeX0KCQk8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JGVudHJ5LT5yb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRlbnRyeS0+cm93Y2xhc3N9JzsiPgoJCQk8dGQ+eyRlbnRyeS0+aW5wdXRhc3NvY308L3RkPgoJCQk8dGQ+eyRlbnRyeS0+bmFtZX08L3RkPgoJCTwvdHI+CnsvZm9yZWFjaH0KCTwvdGJvZHk+CjwvdGFibGU+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8cCBjbGFzcz0icGFnZXRleHQiPiA8L3A+CjxwIGNsYXNzPSJwYWdlaW5wdXQiPnsqJGhpZGRlbip9eyRzdWJtaXR9eyRjYW5jZWx9PC9wPgo8L2Rpdj4KeyRlbmRmb3JtfQoK]]></data>
	</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[e2lmICFlbXB0eSgkcHJlZl9lcnJvcnMpfQ0KICB7Zm9yZWFjaCBmcm9tPSRwcmVmX2Vycm9ycyBpdGVtPWVycn0NCiAgIDxkaXYgY2xhc3M9InBhZ2VtY29udGFpbmVyIj57JHN0b3BfaW1hZ2V9eyRlcnJ9PC9kaXY+DQogIHsvZm9yZWFjaH0NCnsvaWZ9DQp7JHN0YXJ0Zm9ybX0NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskbGFiZWxfZG93bmxvYWRfZGlyfTo8L3A+DQoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfZG93bmxvYWRfZGlyfTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskbGFiZWxfZG93bmxvYWRfc2Nhbn06PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2Rvd25sb2FkX3NjYW59PC9wPg0KCTwvZGl2Pg0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRsYWJlbF9kb3dubG9hZF9zY2FuX3JlY3Vyc306PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2Rvd25sb2FkX3NjYW5fcmVjdXJzfTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskbGFiZWxfcHJlZnNfc2VhcmNoX2V4cGlyZXN9OjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9zZWFyY2hfZXhwaXJlc308L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGxhYmVsX3RodW1iX2Rpcn06PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RodW1iX2Rpcn08L3A+DQoJPC9kaXY+DQoJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGxhYmVsX3RodW1iX3NpemV9OjwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF90aHVtYl9zaXplfTwvcD4NCgk8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPnskbGFiZWxfdGh1bWJfYXV0b306PC9wPg0KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3RodW1iX2F1dG99PC9wPg0KCTwvZGl2Pg0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRsYWJlbF9kb3dubG9hZF90ZW1wbGF0ZX06PC9wPg0KCQk8YnIgc3R5bGU9ImNsZWFyOmxlZnQ7Ii8+DQoJCTxkaXYgc3R5bGU9ImZsb2F0OmxlZnQ7d2lkdGg6MjIwcHgiPnskbGFiZWxfZG93bmxvYWRfdGVtcGxhdGVfaW5mb308L2Rpdj4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9kb3dubG9hZF90ZW1wbGF0ZX08L3A+DQoJPC9kaXY+DQogICAgPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGxhYmVsX3d5c2l3eWdfb259OjwvcD4NCiAgICAgICAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF93eXNpd3lnX29ufTwvcD4NCiAgICA8L2Rpdj4NCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KCQk8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4NCgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRzdWJtaXR9PC9wPg0KCTwvZGl2Pg0KeyRlbmRmb3JtfQ0KPGZpZWxkc2V0PjxsZWdlbmQ+eyRtb2QtPkxhbmcoJ2xlZ2VuZF9pbXBvcnRfZnJvbV9kbScpfTwvbGVnZW5kPg0KICA8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPg0KICAgIHtpZiAkaW1wb3J0fQ0KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48ZGl2IGNsYXNzPSJpbmZvcm1hdGlvbiI+eyRtb2QtPkxhbmcoJ25vdGVfaW1wb3J0X2Zyb21fZG0nKX08L2Rpdj48L3A+DQogICAgey9pZn0NCiAgICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+PGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPnskZG1fdHh0fTwvZGl2PjwvcD4gDQogICAge2lmICRpbXBvcnR9ICANCiAgICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW1wX2Zvcm1fc3RhcnR9eyRpbXBfZm9ybV9zdWJtaXR9eyRpbXBfZm9ybV9lbmR9PC9wPg0KICAgICAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij48ZGl2IGNsYXNzPSJ3YXJuaW5nIj57JG1vZC0+TGFuZygnd2FybmluZ19pbXBvcnRfZnJvbV9kbScpfTwvZGl2PjwvcD4NCiAgICB7L2lmfSANCiAgPC9kaXY+DQoNCjwvZmllbGRzZXQ+]]></data>
	</file>
	<file>
	  <filename>/templates/changefile.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CnskZmlsZXR5cGVpbnB1dH0KPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGNoYW5nZW5hbWVsYWJlbH06PC9wPgo8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0Y2hhbmdlbmFtZX08L3A+CgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHAgY2xhc3M9InBhZ2V0ZXh0Ij4gPC9wPgo8cCBjbGFzcz0icGFnZWlucHV0Ij57JHNlbGVjdG9yfXskaGlkZGVufXskc3VibWl0fXskY2FuY2VsfTwvcD4KPC9kaXY+CnskZW5kZm9ybX0KCg==]]></data>
	</file>
	<file>
	  <filename>/templates/changelog.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGg0PlZlcnNpb24gMS5SQy4yPC9oND4NCjx1bD4NCiAgPGxpPkZpeGVkIGEgbWFqb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSBpbmhlcml0ZWQgZnJvbSB0aGUgb3JpZ2luYWwgbW9kdWxlOzwvbGk+DQogIDxsaT5SZW1vdmVkIHVubmVlZGVkIGZpbGVzICh1cGdyYWRpbmcgY2xlYW5zIHVwIHRob3NlIGZpbGVzIHRvbyk7PC9saT4NCiAgPGxpPlRoZSBtb2R1bGUgY2FuIG5vdyBjb3B5IHRoZSBkYXRhYmFzZSBmcm9tIERvd25sb2FkIE1hbmFnZXI7PC9saT4NCiAgPGxpPkZpeGVkIGEgZmV3IGltcG9ydGFudCBidWdzIG5hbWVseToNCiAgPHVsPg0KICAgIDxsaT5hIGJ1ZyBpbiB0aGUgZGV0YWlscyByb3V0ZTs8L2xpPg0KICAgIDxsaT5hIGJ1ZyB3aGVuIGFkZGluZyBhbmQgZWRpdGluZyBmaWxlczogdGhlIGNhdGVnb3JpZXMgbm93IGhvbGQgdGhlaXIgdmFsdWVzOzwvbGk+DQogIDwvdWw+DQogIDwvbGk+DQogIDxsaT5BIGZldyBvdGhlciBtaW5vciBmaXhlczs8L2xpPiAgDQo8L3VsPg0KPGg0PlZlcnNpb24gMS5SQy4xPC9oND4NCjx1bD4NCiAgPGxpPjFzdCBwdWJsaWMgcmVsZWFzZS48L2xpPg0KPC91bD4=]]></data>
	</file>
	<file>
	  <filename>/templates/default.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzdHlsZSB0eXBlPSAidGV4dC9jc3MiIG1lZGlhPSAic2NyZWVuIj4KLmRvd25sb2FkcyB7d2lkdGg6OTAlO21hcmdpbjowIDUlO30KLmRvd25sb2FkcyBoMyB7dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgYmxhY2s7bWFyZ2luOjFlbSAwLjVlbSAwLjVlbSAhaW1wb3J0YW50O3RleHQtYWxpZ246cmlnaHQ7fQouZG93bmxvYWRzIGg0IHt0ZXh0LWFsaWduOmNlbnRlcjtib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgYmxhY2s7bWFyZ2luOjFlbSAwLjVlbSAwLjVlbSAhaW1wb3J0YW50O3RleHQtYWxpZ246cmlnaHQ7Zm9udC1zaXplOjEuMWVtO30KLmRvd25sb2FkcyBoNSB7dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyLWJvdHRvbToxcHggZG90dGVkIGJsYWNrO21hcmdpbjoxZW0gMC41ZW0gMC41ZW0gIWltcG9ydGFudDt0ZXh0LWFsaWduOnJpZ2h0O2ZvbnQtc2l6ZToxZW07fQouZG93bmxvYWRzIC5maWxlIHtib3JkZXI6MXB4IHNvbGlkIGJsYWNrO21hcmdpbjoycHg7cGFkZGluZzo1cHg7fQouZG93bmxvYWRzIC5kZXNjcmlwdGlvbiB7d2lkdGg6ODAlO30KLmRvd25sb2FkcyAuaWNvbnMge2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6cmlnaHQ7fQouZG93bmxvYWRzIC5zbWFsbCB7Zm9udC1zaXplOjAuOGVtO30KLmRvd25sb2FkcyAudGl0bGUge2ZvbnQtc2l6ZToxLjFlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7d2lkdGg6ODAlO3RleHQtYWxpZ246Y2VudGVyO30KLmRvd25sb2FkcyBwIHttYXJnaW46MDtwYWRkaW5nOjA7fQouZG93bmxvYWRzIC5yb3cxIHtiYWNrZ3JvdW5kLWNvbG9yOiNkZGQ7fQouZG93bmxvYWRzIC5yb3cyIHtiYWNrZ3JvdW5kLWNvbG9yOiNiYmI7fQo8L3N0eWxlPgp7L2xpdGVyYWx9CjxkaXYgY2xhc3M9ImRvd25sb2FkcyI+Cntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09aXRlbX0KICAgIHtpZiAkaXRlbS0+aXRlbXR5cGUgPT0gJ2hlYWRlcicgfQogICAgICAge2lmICRpdGVtLT5pdGVtbGV2ZWwgPT0gMCB9CiAgICAgICAgICAgPGgzPiBIZWFkZXIgMDogeyRpdGVtLT5uYW1lfSA8L2gzPgogICAgICAgICAgIHtpZiAkaXRlbS0+ZGVzY3JpcHRpb24gIT0gJycgfTxzcGFuIGNsYXNzPSJzbWFsbCI+RGVzY3JpcHRpb246PC9zcGFuPjxiciAvPiB7JGl0ZW0tPmRlc2NyaXB0aW9ufSB7L2lmfQogICAgICAge2Vsc2VpZiAkaXRlbS0+aXRlbWxldmVsID09IDEgfQogICAgICAgICAgIDxoND4gSGVhZGVyIDE6IHskaXRlbS0+bmFtZX0gPC9oND4KICAgICAgICAgICB7aWYgJGl0ZW0tPmRlc2NyaXB0aW9uICE9ICcnIH08c3BhbiBjbGFzcz0ic21hbGwiPkRlc2NyaXB0aW9uOjwvc3Bhbj48YnIgLz4geyRpdGVtLT5kZXNjcmlwdGlvbn0gey9pZn0KICAgICAgIHtlbHNlaWYgJGl0ZW0tPml0ZW1sZXZlbCA9PSAyIH0KICAgICAgICAgICA8aDU+IEhlYWRlciAyOiB7JGl0ZW0tPm5hbWV9IDwvaDU+CiAgICAgICAgICAge2lmICRpdGVtLT5kZXNjcmlwdGlvbiAhPSAnJyB9PHNwYW4gY2xhc3M9InNtYWxsIj5EZXNjcmlwdGlvbjo8L3NwYW4+PGJyIC8+IHskaXRlbS0+ZGVzY3JpcHRpb259IHsvaWZ9CiAgICAgICB7L2lmfQogICAgey9pZn0KICAgIHtpZiAkaXRlbS0+aXRlbXR5cGUgPT0gJ2ZpbGUnIH0KCiAgICAgICAgICAgPGRpdiBjbGFzcz0iZmlsZSB7JGl0ZW0tPnJvd2NsYXNzfSI+CgkJCTxkaXYgY2xhc3M9Imljb25zIj4geyRpdGVtLT5zaXplfQoJCQkJPGltZyBzcmM9Ii9tb2R1bGVzL0pNRG93bk1hbi9pbWFnZXMvaWNvbnMvY2FsY3VsYXRvci5wbmciIHRpdGxlPSJNZDU6IHskaXRlbS0+aGFzaH0iIGFsdD0iTWQ1OiB7JGl0ZW0tPmhhc2h9Ii8+CgkJCQk8YSBocmVmPSJ7JGl0ZW0tPmhyZWZ9IiB0aXRsZT0ieyRpdGVtLT5uYW1lfSI+PGltZyBzcmM9Ii9tb2R1bGVzL0pNRG93bk1hbi9pbWFnZXMvaWNvbnMvZHJpdmVfZGlzay5wbmciLz48L2E+CgkJCTwvZGl2PgoJCQk8cCBjbGFzcz0idGl0bGUiPiB7JGl0ZW0tPmRvd25sb2FkfSA8L3A+CgkgICAge2lmICRpdGVtLT5jYXRlZ29yaWVzICE9ICcnIH08cD48c3BhbiBjbGFzcz0ic21hbGwiPkNhdGVnb3JpZXM6PC9zcGFuPjxiciAvPiB7JGl0ZW0tPmNhdGVnb3JpZXN9PC9wPnsvaWZ9CiAgICAgICAge2lmICRpdGVtLT5kZXNjcmlwdGlvbiAhPSAnJyB9PHA+PHNwYW4gY2xhc3M9InNtYWxsIj5EZXNjcmlwdGlvbjo8L3NwYW4+PGJyIC8+IHskaXRlbS0+ZGVzY3JpcHRpb259PC9wPiB7L2lmfQoJCQk8ZGl2IHN0eWxlPSJjbGVhcjpyaWdodDsiPiA8L2Rpdj4KCQk8L2Rpdj4KICAgIHsvaWZ9Cntmb3JlYWNoZWxzZX0KICAgIHskbm9kb3dubG9hZHN9CnsvZm9yZWFjaH0KPC9kaXY+]]></data>
	</file>
	<file>
	  <filename>/templates/detail_default.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPiBEZXRhaWxzIG9mIHskaXRlbS0+bmFtZX0gPC9oMz4KCnskaXRlbS0+dGh1bWJ9Cjx0YWJsZT4KPHRyPjx0ZD57JHNpemVsYWJlbH08L3RkPjx0ZD57JGl0ZW0tPnNpemV9PC90ZD48L3RyPgo8dHI+PHRkPnskaGFzaGxhYmVsfTwvdGQ+PHRkPnskaXRlbS0+aGFzaH08L3RkPjwvdHI+Cjx0cj48dGQ+eyRkZXNjcmlwdGlvbmxhYmVsfTwvdGQ+PHRkPnskaXRlbS0+ZGVzY3JpcHRpb259PC90ZD48L3RyPgo8dHI+PHRkPnskY3JlYXRlZGxhYmVsfTwvdGQ+PHRkPnskaXRlbS0+Y3JlYXRlZH08L3RkPjwvdHI+Cjx0cj48dGQ+eyRhY2Nlc3N0eXBlbGFiZWx9PC90ZD48dGQ+e2ZvcmVhY2ggZnJvbT0kaXRlbS0+YWNjZXNzdHlwZXMgaXRlbT1hY2Nlc3N9PGltZyBzcmM9Im1vZHVsZXMvSk1Eb3duTWFuL2ltYWdlcy9pY29ucy9hY2Nlc3MteyRhY2Nlc3N9LnBuZyIgdGl0bGU9InskYWNjZXNzfSBhY2Nlc3MiIGFsdD0ieyRhY2Nlc3N9IGFjY2VzcyIvPnsvZm9yZWFjaH08L3RkPjwvdHI+Cjx0cj48dGQ+QmVsb25ncyB0byBjYXRlZ29yaWVzOjwvdGQ+PHRkPiZuYnNwO3skaXRlbS0+Y2F0ZWdvcmllc308L3RkPjwvdHI+CjwvdGFibGU+Cjxici8+CnskaXRlbS0+Y291bnRlcmxvY2FsZX0KPGJyLz4KRG93bmxvYWQgeyRpdGVtLT5kb3dubG9hZH0u]]></data>
	</file>
	<file>
	  <filename>/templates/download.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRkb3dubG9hZGluZ30gPGJyLz4KPGJyLz4KeyRkb3dubG9hZGluZ19pbmZvfQo8YnIvPgp7JGJhY2t0b2xpc3RsaW5rfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/download_error.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskZXJyb3J9PC9oMz4Ke2lmIGlzc2V0KCRkb3dubG9hZF9lcnJvci5tc2cpfQo8cD57JGRvd25sb2FkX2Vycm9yX21zZ306IHskZG93bmxvYWRfZXJyb3IubXNnfTwvcD4Key9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/editcategory.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19DQoNCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+DQo8cCBjbGFzcz0icGFnZXRleHQiPip7JG5hbWVsYWJlbH06PC9wPg0KPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dG5hbWV9PC9wPg0KPC9kaXY+DQoNCjxkaXYgY2xhc3M9J3BhZ2VvdmVyZmxvdyc+PHAgY2xhc3M9J3BhZ2V0ZXh0Jz57JGRlc2NyaXB0aW9ubGFiZWx9OjwvcD4NCjxwIGNsYXNzPSdwYWdlaW5wdXQnPnskaW5wdXRkZXNjcmlwdGlvbn08L3A+PC9kaXY+DQoNCjxkaXYgY2xhc3M9J3BhZ2VvdmVyZmxvdyc+PHAgY2xhc3M9J3BhZ2V0ZXh0Jz57JHBhcmVudF9pZGxhYmVsfTo8L3A+DQo8cCBjbGFzcz0ncGFnZWlucHV0Jz57JGlucHV0cGFyZW50X2lkfTwvcD48L2Rpdj4NCg0Ke2lmICFlbXB0eSgkaGlkZGVuKX0NCjxkaXYgY2xhc3M9J3BhZ2VvdmVyZmxvdyc+PHAgY2xhc3M9J3BhZ2V0ZXh0Jz57JGFsaWFzbGFiZWx9OjwvcD4NCjxwIGNsYXNzPSdwYWdlaW5wdXQnPnskaW5wdXRhbGlhc308L3A+PC9kaXY+DQp7L2lmfQ0KDQo8ZGl2IGNsYXNzPSdwYWdlb3ZlcmZsb3cnPjxwIGNsYXNzPSdwYWdldGV4dCc+eyRkZWZhdWx0X3RlbXBsYXRlbGFiZWx9OjwvcD4NCjxwIGNsYXNzPSdwYWdlaW5wdXQnPnskaW5wdXRkZWZhdWx0X3RlbXBsYXRlfTwvcD48L2Rpdj4NCg0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4NCjxwIGNsYXNzPSJwYWdldGV4dCI+IDwvcD4NCjxwIGNsYXNzPSJwYWdlaW5wdXQiPnsqJGhpZGRlbip9eyRzdWJtaXR9eyRjYW5jZWx9PC9wPg0KPC9kaXY+DQp7JGVuZGZvcm19DQo=]]></data>
	</file>
	<file>
	  <filename>/templates/editfile.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Cnskc3RhcnRmb3JtfQo8ZGl2IGNsYXNzPSdwYWdlb3ZlcmZsb3cnPgoJPHAgY2xhc3M9J3BhZ2V0ZXh0Jz57JHZpc2libGVsYWJlbH06PC9wPgoJPHAgY2xhc3M9J3BhZ2VpbnB1dCc+eyRpbnB1dHZpc2libGV9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+KnskbmFtZWxhYmVsfTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0bmFtZX08L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+KnskYWxpYXNsYWJlbH06PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dGFsaWFzfTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSdwYWdlb3ZlcmZsb3cnPjxwIGNsYXNzPSdwYWdldGV4dCc+eyRleHRsYWJlbH06PC9wPgo8cCBjbGFzcz0ncGFnZWlucHV0Jz57JGlucHV0ZXh0fTwvcD48L2Rpdj4KCjxkaXYgY2xhc3M9J3BhZ2VvdmVyZmxvdyc+PHAgY2xhc3M9J3BhZ2V0ZXh0Jz57JHNlcnZlcl9uYW1lbGFiZWx9OjwvcD4KPHAgY2xhc3M9J3BhZ2VpbnB1dCc+eyRpbnB1dHNlcnZlcl9uYW1lfTwvcD48L2Rpdj4KCjxkaXYgY2xhc3M9J3BhZ2VvdmVyZmxvdyc+PHAgY2xhc3M9J3BhZ2V0ZXh0Jz57JHR5cGVsYWJlbH06PC9wPgo8cCBjbGFzcz0ncGFnZWlucHV0Jz57JGlucHV0dHlwZX08L3A+PC9kaXY+Cgo8ZGl2IGNsYXNzPSdwYWdlb3ZlcmZsb3cnPjxwIGNsYXNzPSdwYWdldGV4dCc+eyRzaXplbGFiZWx9OjwvcD4KPHAgY2xhc3M9J3BhZ2VpbnB1dCc+eyRpbnB1dHNpemV9PC9wPjwvZGl2PgoKPGRpdiBjbGFzcz0ncGFnZW92ZXJmbG93Jz48cCBjbGFzcz0ncGFnZXRleHQnPnskaGFzaGxhYmVsfTo8L3A+CjxwIGNsYXNzPSdwYWdlaW5wdXQnPnskaW5wdXRoYXNofTwvcD48L2Rpdj4KCjxkaXYgY2xhc3M9J3BhZ2VvdmVyZmxvdyc+PHAgY2xhc3M9J3BhZ2V0ZXh0Jz57JGRlc2NyaXB0aW9ubGFiZWx9OjwvcD4KPHAgY2xhc3M9J3BhZ2VpbnB1dCc+eyRpbnB1dGRlc2NyaXB0aW9ufTwvcD48L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCTxwIGNsYXNzPSJwYWdldGV4dCI+IDwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaGlkZGVufXskc3VibWl0fXskY2FuY2VsfTwvcD4KPC9kaXY+CnskZXh0cmF0YWJ9CjxkaXYgY2xhc3M9J3BhZ2VvdmVyZmxvdyc+PHAgY2xhc3M9J3BhZ2V0ZXh0Jz57JGNyZWF0ZWRsYWJlbH06PC9wPgo8cCBjbGFzcz0ncGFnZWlucHV0Jz57JGlucHV0Y3JlYXRlZH08L3A+PC9kaXY+Cgo8ZGl2IGNsYXNzPSdwYWdlb3ZlcmZsb3cnPjxwIGNsYXNzPSdwYWdldGV4dCc+eyR0aHVtYl9wYXRobGFiZWx9OjwvcD4KPHAgY2xhc3M9J3BhZ2VpbnB1dCc+eyRpbnB1dHRodW1iX3BhdGh9PC9wPjwvZGl2PgoKPGRpdiBjbGFzcz0ncGFnZW92ZXJmbG93Jz48cCBjbGFzcz0ncGFnZXRleHQnPnskYWNjZXNzdHlwZWxhYmVsfTo8L3A+CjxwIGNsYXNzPSdwYWdlaW5wdXQnPnskaW5wdXRhY2Nlc3N0eXBlfTwvcD48L2Rpdj4KCjxkaXYgY2xhc3M9J3BhZ2VvdmVyZmxvdyc+PHAgY2xhc3M9J3BhZ2V0ZXh0Jz57JGZldWdyb3Vwc2xhYmVsfTo8L3A+CjxwIGNsYXNzPSdwYWdlaW5wdXQnPnskaW5wdXRmZXVncm91cHN9PC9wPjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgIDxwIGNsYXNzPSJwYWdldGV4dCI+eyR1c2VzdGFydHRleHR9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRzdGFydH08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSdwYWdlb3ZlcmZsb3cnPgogICAgPHAgY2xhc3M9J3BhZ2V0ZXh0Jz57JHN0YXJ0bGFiZWx9OjwvcD4KICAgIDxwIGNsYXNzPSJwYWdlaW5wdXQiPntodG1sX3NlbGVjdF9kYXRlIHByZWZpeD0kc3RhcnRkYXRlcHJlZml4IHRpbWU9JGlucHV0c3RhcnRzIHN0YXJ0X3llYXI9IiswIiBlbmRfeWVhcj0iKzE1In0ge2h0bWxfc2VsZWN0X3RpbWUgcHJlZml4PSRzdGFydGRhdGVwcmVmaXggdGltZT0kaW5wdXRzdGFydHN9PC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskdXNlZXhwaXJhdGlvbnRleHR9OjwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRleHB9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0ncGFnZW92ZXJmbG93Jz4KCTxwIGNsYXNzPSdwYWdldGV4dCc+eyRleHBpcmVzbGFiZWx9OjwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPntodG1sX3NlbGVjdF9kYXRlIHByZWZpeD0kZXhwaXJlZGF0ZXByZWZpeCB0aW1lPSRpbnB1dGV4cGlyZXMgc3RhcnRfeWVhcj0iLTEwIiBlbmRfeWVhcj0iKzE1In0ge2h0bWxfc2VsZWN0X3RpbWUgcHJlZml4PSRleHBpcmVkYXRlcHJlZml4IHRpbWU9JGlucHV0ZXhwaXJlc308L3A+CjwvZGl2PgoKCjxkaXYgY2xhc3M9J3BhZ2VvdmVyZmxvdyc+PHAgY2xhc3M9J3BhZ2V0ZXh0Jz57JHRlbXBsYXRlX2RldGFpbGxhYmVsfTo8L3A+CjxwIGNsYXNzPSdwYWdlaW5wdXQnPnskaW5wdXR0ZW1wbGF0ZV9kZXRhaWx9PC9wPjwvZGl2Pgo8ZGl2IGNsYXNzPSdwYWdlb3ZlcmZsb3cnPjxwIGNsYXNzPSdwYWdldGV4dCc+eyR0ZW1wbGF0ZV9mb3JtbGFiZWx9OjwvcD4KPHAgY2xhc3M9J3BhZ2VpbnB1dCc+eyRpbnB1dHRlbXBsYXRlX2Zvcm19PC9wPjwvZGl2Pgo8ZGl2IGNsYXNzPSdwYWdlb3ZlcmZsb3cnPjxwIGNsYXNzPSdwYWdldGV4dCc+eyR0ZW1wbGF0ZV9lbWFpbGxhYmVsfTo8L3A+CjxwIGNsYXNzPSdwYWdlaW5wdXQnPnskaW5wdXR0ZW1wbGF0ZV9lbWFpbH08L3A+PC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPnskY291bnRlcmxhYmVsfTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0Y291bnRlcn08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4gPC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRoaWRkZW59eyRzZWxlY3Rvcn17JHN1Ym1pdH17JGNhbmNlbH08L3A+CjwvZGl2Pgp7JGVuZGZvcm19Cgo=]]></data>
	</file>
	<file>
	  <filename>/templates/editfile_assoc.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm1hc3NvY30KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KCTx0aGVhZD4KCQk8dHI+CgkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+CgkJCTx0aD57JGNhdGVnb3J5dGV4dH08L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRhc3NvY2lhdGlvbnMgaXRlbT1lbnRyeX0KCQk8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JGVudHJ5LT5yb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRlbnRyeS0+cm93Y2xhc3N9JzsiPgoJCQk8dGQ+eyRlbnRyeS0+aW5wdXRhc3NvY308L3RkPgoJCQk8dGQ+eyRlbnRyeS0+bmFtZX08L3RkPgoJCTwvdHI+CnsvZm9yZWFjaH0KCTwvdGJvZHk+CjwvdGFibGU+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJPHAgY2xhc3M9InBhZ2V0ZXh0Ij4gPC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRoaWRkZW59eyRzZWxlY3Rvcn17JHN1Ym1pdH17JGNhbmNlbH08L3A+CjwvZGl2Pgp7JGVuZGZvcm1hc3NvY30=]]></data>
	</file>
	<file>
	  <filename>/templates/edittemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzdHlsZSB0eXBlPSAidGV4dC9jc3MiIG1lZGlhPSAic2NyZWVuIj4KdGQge3ZlcnRpY2FsLWFsaWduOnRvcDt9Cjwvc3R5bGU+CnsvbGl0ZXJhbH0KeyRzdGFydGZvcm19Cgo8ZGl2IGNsYXNzPSdwYWdlb3ZlcmZsb3cnPjxwIGNsYXNzPSdwYWdldGV4dCc+KnskdGVtcGxhdGVfbmFtZWxhYmVsfTo8L3A+CjxwIGNsYXNzPSdwYWdlaW5wdXQnPnskaW5wdXR0ZW1wbGF0ZV9uYW1lfTwvcD48L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CjxwIGNsYXNzPSJwYWdldGV4dCI+eyRjb250ZW50bGFiZWx9OjwvcD4KPGJyIHN0eWxlPSJjbGVhcjpsZWZ0OyIvPgo8ZGl2IHN0eWxlPSJmbG9hdDpsZWZ0O3dpZHRoOjI4MHB4Ij4KPHRhYmxlIHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Ij4KeyRoZWxwX3RlbXBsYXRlX3ZhcmlhYmxlc30KeyRoZWxwX3RlbXBsYXRlX2dlbmVyYWx9CjwvdGFibGU+PC9kaXY+CjxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRjb250ZW50fTwvcD4KPC9kaXY+CgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHAgY2xhc3M9InBhZ2V0ZXh0Ij4gPC9wPgo8cCBjbGFzcz0icGFnZWlucHV0Ij57JGhpZGRlbn17JGFwcGx5fXskc3VibWl0fXskY2FuY2VsfTwvcD4KPC9kaXY+CnskZW5kZm9ybX0K]]></data>
	</file>
	<file>
	  <filename>/templates/email_default.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgyPiBEZWFyIHskZmlyc3RuYW1lfSB7JGxhc3RuYW1lfSA8L2gyPgoKPHA+WW91IHJlcXVlc3RlZCB7JGl0ZW0tPm5hbWV9IGZyb20gbG9jYWxob3N0LiA8cC8+Cgo8cD5Vc2UgbGluayBiZWxvdyB0byBkb3dubG9hZDogPGJyIC8+CnskZHVybH0KPHAvPg==]]></data>
	</file>
	<file>
	  <filename>/templates/error.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfZXJyb3J9PC9oMz4KPHA+eyRhZG1pbl9uYXZ9PC9wPgp7aWYgJG1lc3NhZ2UhPScnfTxwPnskbWVzc2FnZX08L3A+ey9pZn0=]]></data>
	</file>
	<file>
	  <filename>/templates/filetypeinput.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgp7bGl0ZXJhbH0KZnVuY3Rpb24gRE1yYWRpb3VwZGF0ZSgpCnt7L2xpdGVyYWx9CiAgdmFyIGlkID0gJ3skZm9ybWlkfSc7CntsaXRlcmFsfQogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkICsgJ3VwbG9hZGVkJykuZGlzYWJsZWQgPSB0cnVlOwogIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkICsgJ2ZpbGUnKS5kaXNhYmxlZCA9IHRydWU7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQgKyAnZXh0ZXJuYWwnKS5kaXNhYmxlZCA9IHRydWU7CgogIGlmKCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCArICdyYWRpb3VwbG9hZCcpLmNoZWNrZWQgPT0gdHJ1ZSApCiAgewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQgKyAnZmlsZScpLmRpc2FibGVkID0gZmFsc2U7CiAgfQogIGVsc2UgaWYgKCBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCArICdyYWRpb3VwbG9hZGVkJykuY2hlY2tlZCA9PSB0cnVlKQogIHsKICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkICsgJ3VwbG9hZGVkJykuZGlzYWJsZWQgPSBmYWxzZTsKICB9CiAgZWxzZSBpZiAoIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkICsgJ3JhZGlvZXh0ZXJuYWwnKS5jaGVja2VkID09IHRydWUpCiAgewogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQgKyAnZXh0ZXJuYWwnKS5kaXNhYmxlZCA9IGZhbHNlOwoJZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQgKyAnbWQ1JykuZGlzYWJsZWQgPSBmYWxzZTsKICB9Cgp9Cjwvc2NyaXB0Pgp7L2xpdGVyYWx9Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8cCBjbGFzcz0icGFnZXRleHQiPjxpbnB1dCB0eXBlPSJyYWRpbyIgdmFsdWU9Im5ldyIgbmFtZT0ieyRmb3JtaWR9cmFkaW8iIGlkPSJ7JGZvcm1pZH1yYWRpb3VwbG9hZCIgIG9uY2hhbmdlPSJETXJhZGlvdXBkYXRlKCkiIHtpZiAhZW1wdHkoJGlucHV0dXBsb2FkZWRlbmFibGVkKX1jaGVja2VkPSJjaGVja2VkInsvaWZ9Lz4KKnskdXBsb2FkbGFiZWx9OjwvcD4KPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dGZpbGV9PC9wPgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgo8cCBjbGFzcz0icGFnZXRleHQiPjxpbnB1dCB0eXBlPSJyYWRpbyIgdmFsdWU9Im9sZCIgbmFtZT0ieyRmb3JtaWR9cmFkaW8iIGlkPSJ7JGZvcm1pZH1yYWRpb3VwbG9hZGVkIiAgb25jaGFuZ2U9IkRNcmFkaW91cGRhdGUoKSIge2lmICFlbXB0eSgkaW5wdXR1cGxvYWRlZGVuYWJsZWQpfWNoZWNrZWQ9ImNoZWNrZWQiey9pZn0vPgoqeyR1cGxvYWRlZGxhYmVsfTo8L3A+CjxwIGNsYXNzPSJwYWdlaW5wdXQiPnskcm9vdHBhdGh9LyB7JGlucHV0dXBsb2FkZWR9PC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHAgY2xhc3M9InBhZ2V0ZXh0Ij48aW5wdXQgdHlwZT0icmFkaW8iIHZhbHVlPSJleHRlcm5hbCIgbmFtZT0ieyRmb3JtaWR9cmFkaW8iIGlkPSJ7JGZvcm1pZH1yYWRpb2V4dGVybmFsIiAgb25jaGFuZ2U9IkRNcmFkaW91cGRhdGUoKSIvPgoqeyRleHRlcm5hbGxhYmVsfTo8L3A+CjxwIGNsYXNzPSJwYWdlaW5wdXQiPmh0dHA6Ly8geyRpbnB1dGV4dGVybmFsfTwvcD4KPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRoYXNobGFiZWx9OiB7JGlucHV0bWQ1fTwvcD4KPC9kaXY+]]></data>
	</file>
	<file>
	  <filename>/templates/form_default.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[SGVyZSB5b3UgY2FuIHJlcXVlc3QgZG93bmxvYWQgYnkgZW1haWw6Cgo8ZGl2IGNsYXNzPSdwYWdlb3ZlcmZsb3cnPjxwIGNsYXNzPSdwYWdldGV4dCc+eyRmaXJzdG5hbWVfbGFiZWx9OjwvcD4KPHAgY2xhc3M9J3BhZ2VpbnB1dCc+eyRmaXJzdG5hbWVfaW5wdXR9PC9wPjwvZGl2PgoKPGRpdiBjbGFzcz0ncGFnZW92ZXJmbG93Jz48cCBjbGFzcz0ncGFnZXRleHQnPnskbGFzdG5hbWVfbGFiZWx9OjwvcD4KPHAgY2xhc3M9J3BhZ2VpbnB1dCc+eyRsYXN0bmFtZV9pbnB1dH08L3A+PC9kaXY+Cgo8ZGl2IGNsYXNzPSdwYWdlb3ZlcmZsb3cnPjxwIGNsYXNzPSdwYWdldGV4dCc+eyRlbWFpbF9sYWJlbH06PC9wPgo8cCBjbGFzcz0ncGFnZWlucHV0Jz57JGVtYWlsX2lucHV0fTwvcD48L2Rpdj4KCjxkaXYgY2xhc3M9J3BhZ2VvdmVyZmxvdyc+PHAgY2xhc3M9J3BhZ2V0ZXh0Jz57JG1haWxpbmdsaXN0X2xhYmVsfTp7JG1haWxpbmdsaXN0X2lucHV0fTwvcD48L2Rpdj4KCgo8ZGl2IGNsYXNzPSdwYWdlb3ZlcmZsb3cnPjxwIGNsYXNzPSdwYWdlaW5wdXQnPnskc3VibWl0fTwvcD48L2Rpdj4K]]></data>
	</file>
	<file>
	  <filename>/templates/help.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0iY2xlYXIiPjwvZGl2Pg0KPGRpdiBpZD0icGFnZV90YWJzIj4NCiAgPGRpdiBpZD0iZ2VuZXJhbCI+DQogICAgICBHZW5lcmFsDQogIDwvZGl2PiAgICAgIA0KICA8ZGl2IGlkPSJhYm91dCI+DQogICAgQWJvdXQNCiAgPC9kaXY+DQo8L2Rpdj4NCjxkaXYgY2xhc3M9ImNsZWFyYiI+PC9kaXY+DQo8ZGl2IGlkPSJwYWdlX2NvbnRlbnQiPg0KICA8ZGl2IGlkPSJnZW5lcmFsX2MiPg0KICAgIDxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KICAgIDxwPk1hbmFnZXMgZG93bmxvYWRzIGZyb20gdGhlIGFkbWluaXN0cmF0aW9uIHBhbmVsLjwvcD4NCiAgICANCiAgICA8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4NCiAgICA8cD5HbyB0byBDb250ZW50IC0+IDxzdHJvbmc+Sk0gRG93bmxvYWQgTWFuYWdlcjwvc3Ryb25nPi48L3A+DQogICAgPHA+SW5zdGFsbCBpdCBieSBwbGFjaW5nIHRoZSBtb2R1bGUgaW4gYSBwYWdlIG9yIHRlbXBsYXRlIHVzaW5nIHRoZSBzbWFydHkgPHN0cm9uZz57bGRlbGltfUpNRG93bk1hbntyZGVsaW19PC9zdHJvbmc+LjwvcD4NCiAgICA8cD5BdmFpbGFibGUgYWN0aW9uczo8L3A+DQogICAgICA8dWw+DQogICAgICA8bGk+PGVtPmRlZmF1bHQ8L2VtPjogc2hvd3MgZmlsZSBsaXN0IA0KICAgICAgICA8YnIvPm9wdGlvbmFsIHBhcmFtZXRlcnM6IDxlbT5jYXRlZ29yeWlkPC9lbT4gb3IgPGVtPmFsaWFzPC9lbT4sIDxlbT5kZXB0aDwvZW0+LCA8ZW0+dGVtcGxhdGU8L2VtPg0KICAgICAgICA8YnIvPmV4OiA8c3Ryb25nPntsZGVsaW19Sk1Eb3duTWFuIGFsaWFzPSdteS1jYXRlZ29yeScgZGVwdGg9JzInfTwvc3Ryb25nPjwvbGk+DQogICAgICA8bGk+PGVtPnNlbGVjdG9yPC9lbT46IGFsbG93IHRvIHNlbGVjdCBtdWx0aXBsZSBjYXRlZ29yaWVzLCBzZWUgc2VsZWN0b3IgcGFyYW1ldGVyDQogICAgICAgIDxici8+cmVxdWlyZWQgcGFyYW1ldGVyczogPGVtPnNlbGVjdG9yPC9lbT4NCiAgICAgICAgPGJyLz5vcHRpb25hbCBwYXJhbWV0ZXJzOiA8ZW0+dGVtcGxhdGU8L2VtPg0KICAgICAgICA8YnIvPmV4OiA8c3Ryb25nPntsZGVsaW19Sk1Eb3duTWFuIGFjdGlvbj0nc2VsZWN0b3InIHNlbGVjdG9yPSczJigxfDIpJ3tyZGVsaW19PC9zdHJvbmc+PC9saT4NCiAgICAgIDxsaT48ZW0+ZGV0YWlsPC9lbT46IHNob3dzIGRldGFpbHMgb2Ygc2VsZWN0ZWQgZmlsZQ0KICAgICAgICA8YnIvPnJlcXVpcmVkIHBhcmFtZXRlcnM6IDxlbT5hbGlhczwvZW0+DQogICAgICAgIDxici8+b3B0aW9uYWwgcGFyYW1ldGVyczogPGVtPnRlbXBsYXRlPC9lbT4NCiAgICAgICAgPGJyLz5leDogPHN0cm9uZz57bGRlbGltfUpNRG93bk1hbiBhY3Rpb249J2RldGFpbCcgYWxpYXM9J215LWZpbGUne3JkZWxpbX08L3N0cm9uZz48L2xpPg0KICAgICAgPGxpPjxlbT5kb3dubG9hZDwvZW0+OiBkb3dubG9hZHMgb2Ygc2VsZWN0ZWQgZmlsZQ0KICAgICAgICA8YnIvPnJlcXVpcmVkIHBhcmFtZXRlcnM6IDxlbT5hbGlhczwvZW0+DQogICAgICAgIDxici8+b3B0aW9uYWwgcGFyYW1ldGVyczogPGVtPnRlbXBsYXRlPC9lbT4gDQogICAgICAgIDxici8+ZXg6IDxzdHJvbmc+e2xkZWxpbX1KTURvd25NYW4gYWN0aW9uPSdkb3dubG9hZCcgYWxpYXM9J215LWZpbGUne3JkZWxpbX08L3N0cm9uZz48L2xpPg0KICAgICAgPC91bD4NCiAgPC9kaXY+DQogIDxkaXYgaWQ9ImFib3V0X2MiPg0KICAgIDxoMz5BYm91dCB0aGlzIG1vZHVsZTwvaDM+DQogICAgPHA+VGhpcyBtb2R1bGUgaXMgYSBmb3JrIG9mIDxzdHJvbmc+RG93bmxvYWRNYW5hZ2VyPC9zdHJvbmc+IG9yaWdpbmFsbHkgZGV2ZWxvcGVkIGJ5IDxzdHJvbmc+U3p5bW9uIMWBdWthc3pjenlrPC9zdHJvbmc+IGFuZCA8c3Ryb25nPlBpZXJyZS1MdWMgR2VybWFpbjwvc3Ryb25nPi48L3A+DQoNCiAgICA8aDM+U3VwcG9ydDwvaDM+DQogICAgPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCiAgICA8cD5UaGUgbW9kdWxlIGF1dGhvciBpcyBpbiBubyB3YXkgb2JsaWdhdGVkIHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhpcyBjb2RlIGluIGFueSBmYXNoaW9uLiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0cyB1c2U6PC9wPg0KICAgIDx1bD4NCiAgICAgIDxsaT4NCiAgICAgICAgSWYgeW91IGZpbmQgYW55IGJ1Z3MgcGxlYXNlIGZlZWwgZnJlZSB0byBzdWJtaXQgYSBidWcgcmVwb3J0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvYnVnL2xpc3QvMTM2MSIgdGFyZ2V0PSJfYmxhbmsiPmhlcmU8L2E+IG9yIGZvciBhbnkgZ29vZCBpZGVhcyBjb25zaWRlciBzdWJtaXR0aW5nIGEgZmVhdHVyZSByZXF1ZXN0IDxhIGhyZWY9Imh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvZmVhdHVyZV9yZXF1ZXN0L2xpc3QvMTM2MSIgdGFyZ2V0PSJfYmxhbmsiPmhlcmU8L2E+Ow0KICAgICAgPC9saT4gICAgICAgIA0KICAgICAgPGxpPg0KICAgICAgICBBZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uICBXaGVuIGRlc2NyaWJpbmcgYW4gaXNzdWUgcGxlYXNlIG1ha2UgYW4gZWZmb3J0IHRvIHByb3ZpZGUgYWxsIHJlbGV2YW50IGluZm9ybWF0aW9uLCBhIHRob3JvdWdoIGRlc2NyaXB0aW9uIG9mIHlvdXIgaXNzdWUsIGFuZCBzdGVwcyB0byByZXByb2R1Y2UgaXQgb3IgeW91ciBkaXNjdXNzaW9uIG1heSBiZSBpZ25vcmVkOw0KICAgICAgPC9saT4gICAgICAgIA0KICAgICAgPGxpPg0KICAgICAgIFRoZSBhdXRob3IsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+Ow0KICAgICAgPC9saT4NCiAgICA8L3VsPg0KICAgIDxwPlBsZWFzZSBrZWVwIGluIG1pbmQgdGhhdCBkZXZlbG9wZXJzIGRvIGhhdmUgdGhlaXIgZGFpbHkgam9icyB3aGljaCBtZWFucyB0aGF0IGZlYXR1cmUgcmVxdWVzdHMgYXJlIGNvbnNpZGVyZWQgYW5kIGRvbmUgYXMgdGltZSBhbGxvd3MuIElmIHlvdSBuZWVkIGEgZmVhdHVyZSByZWFsbHkgYmFkbHkgY29uc2lkZXIgY29udGFjdGluZyBvbmUgb2YgdGhlIGRldmVsb3BlcnMgZm9yIGEgc3BvbnNvcmVkIGRldmVsb3BtZW50LjwvcD4NCg0KICAgIDxwPklmIHdhbnQgdG8gaGVscCB0aGUgZGV2ZWxvcG1lbnQgYW5kIG1haW50ZW5hbmNlIG9mIHRoaXMgbW9kdWxlLCBwbGVhc2UgY29uc2lkZXIgZG9uYXRpbmcuIDxiciAvPiA8YnIgLz4NCiAgICA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9jZ2ktYmluL3dlYnNjcj9jbWQ9X3MteGNsaWNrJmhvc3RlZF9idXR0b25faWQ9VDJHNzNOQU1aMjVDVSI+IA0KICAgICAgPGltZyBzcmM9Inskcm9vdF91cmx9L21vZHVsZXMvSk1Eb3duTWFuL2ltYWdlcy9wcF9idXR0b24ucG5nIiBib3JkZXI9IjAiIG5hbWU9InN1Ym1pdCIgYWx0PSJQYXlQYWwg4oCTIFRoZSBzYWZlciwgZWFzaWVyIHdheSB0byBwYXkgb25saW5lLiIgLz4NCiAgICA8L2E+PC9wPg0KICAgICAgDQogICAgPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQogICAgDQogICAgPHA+VGhlIE1vZHVsZSBpcyBjdXJyZW50bHkgYmVpbmcgZGV2ZWxvcGVkIGJ5IDxzdHJvbmc+RmVybmFuZG8gTW9yZ2FkbyAoSm8gTW9yZyk8L3N0cm9uZz4NCiAgICA8YnIgLz4NCiAgICBXZWI6IDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL3d3dy5zbS1hcnQtbGFiLmNvbSIgcmVsPSJleHRlcm5hbCI+d3d3LnNtLWFydC1sYWIuY29tPC9hPg0KICAgIDxiciAvPg0KICAgIEVtYWlsOiA8YSBocmVmPSJtYWlsdG86am9tb3JnQHNtLWFydC1sYWIuY29tIj5qb21vcmdAc20tYXJ0LWxhYi5jb208L2E+DQogICAgPC9wPg0KICAgIHtpZiAkc21hcnR5Lm5vd3xkYXRlX2Zvcm1hdDoiJVkiID09ICcyMDE1J317JGNyID0gJzIwMTUnfXtlbHNlfXskY3IgPSAiMjAxNSAtIHskc21hcnR5Lm5vd3xkYXRlX2Zvcm1hdDonJVknfSJ9ey9pZn0NCiAgICA8cD5Db3B5cmlnaHQgJmNvcHk7IHskY3J9IC4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPGJyIC8+PC9wPg0KICAgIA0KICAgIDxwPjxzdHJvbmc+Sk1Eb3duTWFuPC9zdHJvbmc+IGlzIGZyZWUgc29mdHdhcmU7PGJyIC8+IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSA8c3Ryb25nPkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlPC9zdHJvbmc+IGFzIHB1Ymxpc2hlZCBieSB0aGUgPHN0cm9uZz5GcmVlIFNvZnR3YXJlIEZvdW5kYXRpb248L3N0cm9uZz47PGJyIC8+IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uPC9wPg0KICAgIDxwPjxzdHJvbmc+Sk1Eb3duTWFuPC9zdHJvbmc+IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCA8c3Ryb25nPldJVEhPVVQgQU5ZIFdBUlJBTlRZPC9zdHJvbmc+OzxiciAvPiB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgPHN0cm9uZz5NRVJDSEFOVEFCSUxJVFk8L3N0cm9uZz4gb3IgPHN0cm9uZz5GSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRTwvc3Ryb25nPi48L3A+DQogICAgPHA+U2VlIHRoZUdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuPC9wPg0KICAgIDxwPllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIDxzdHJvbmc+R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2U8L3N0cm9uZz4gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07PGJyIC8+IGlmIG5vdCwgd3JpdGUgdG8gdGhlIDxzdHJvbmc+RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQTwvc3Ryb25nPiBvciA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5yZWFkIGl0IG9ubGluZTwvYT4uPC9wPg0KICAgIDxwPjxzdHJvbmc+WW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyBKTURvd25NYW4uPC9zdHJvbmc+PC9wPg0KICAgICAgDQogICAgPGg0PkNvbnRyaWJ1dG9yczwvaDQ+DQogICAgPHVsPg0KICAgICAgPGxpPjxzdHJvbmc+U3p5bW9uIMWBdWthc3pjenlrIC0gPC9zdHJvbmc+c3p5bW9uLmx1a2FzemN6eWtAZ21haWwuY29tPC9saT4gICAgICANCiAgICAgIDxsaT48c3Ryb25nPlBpZXJyZS1MdWMgR2VybWFpbiAtIDwvc3Ryb25nPnBsLmdlcm1haW5AZ21haWwuY29tPC9saT4NCiAgICA8L3VsPg0KICANCiAgPC9kaXY+DQo8L2Rpdj4=]]></data>
	</file>
	<file>
	  <filename>/templates/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/templates/listcategory.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRpdGVtY291bnQgPiAwfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGFkZGxpbmt9IHskcmVvcmRlcmNhdGVnb3J5bGlua308L3A+PC9kaXY+Cjx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+Cgk8dGhlYWQ+CgkgICAgIDxjb2xncm91cD4KCSAgICAgIDxjb2wvPgoJICAgICAgPGNvbC8+CgkgICAgICA8Y29sLz4KCSAgICAgIDxjb2wvPgoJICAgICAgPGNvbCBzdHlsZT0id2lkdGg6MTZweDsiLz4KCSAgICAgIDxjb2wgc3R5bGU9IndpZHRoOjE2cHg7Ii8+CgkgICAgICA8Y29sIHN0eWxlPSJ3aWR0aDoxNnB4OyIvPgoJICAgIDwvY29sZ3JvdXA+CgkJPHRyPgoJCQk8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgoJCQk8dGg+eyRjYXRlZ29yeXRleHR9PC90aD4KCQkJPHRoPnskYWxpYXN0ZXh0fSA8L3RoPgoJCQk8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgoJCQk8dGggY2xhc3M9InBhZ2VpY29uIiBjb2xzcGFuPSIzIj57JHRhYmxlQWN0aW9uc0hlYWRlcn08L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQoJCTx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skZW50cnktPnJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JGVudHJ5LT5yb3djbGFzc30nOyI+CgkJCTx0ZD57JGVudHJ5LT5pZH08L3RkPgoJCQk8dGQ+eyRlbnRyeS0+bmFtZX08L3RkPgoJCQk8dGQ+eyRlbnRyeS0+YWxpYXN9PC90ZD4KCQkJPHRkPnskZW50cnktPmZpbGVuYnR4dH08L3RkPgoJCQk8dGQ+e2lmICRlbnRyeS0+ZmlsZW5iID4gMX17JGVudHJ5LT5yZW9yZGVybGlua317L2lmfTwvdGQ+CgkJCTx0ZD57JGVudHJ5LT5lZGl0bGlua308L3RkPgoJCQk8dGQ+eyRlbnRyeS0+ZGVsZXRlbGlua308L3RkPgoJCTwvdHI+CnsvZm9yZWFjaH0KCTwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9Cgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGFkZGxpbmt9PC9wPjwvZGl2PgoK]]></data>
	</file>
	<file>
	  <filename>/templates/listfile.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiIHN0eWxlPSJtYXJnaW4tYm90dG9tOjEwcHg7Ij4NCjxwIGNsYXNzPSJwYWdlb3B0aW9ucyIgPnskYWRkbGlua30geyRzY2FubGlua30gPC9wPg0KPGZvcm0gbWV0aG9kPSJQT1NUIiBzdHlsZT0iZmxvYXQ6bGVmdDttYXJnaW46MTBweDsiIGFjdGlvbj0ieyRpbnB1dF9jYXRlZ29yeV9zZWxlY3Rvcl91cmx9Ij4gDQogICAgeyRjYXRlZ29yeV9zZWxlY3Rvcn06IHskaW5wdXRfY2F0ZWdvcnlfc2VsZWN0b3J9IA0KICAgIDxpbnB1dCB0eXBlPSJzdWJtaXQiLz4gPGJyLz4NCiAgICB7JGN1cnJlbnR9OiB7JHZhbHVlX2NhdGVnb3J5X3NlbGVjdG9yfGRlZmF1bHQ6JG5vc2VsZWN0b3J9IDxici8+DQogICAgeyR2ZXJib3NlfHVjd29yZHN9OiB7JHZhbHVlX2NhdGVnb3J5X3NlbGVjdG9yX3ZlcmJvc2V8ZGVmYXVsdDokbm9zZWxlY3Rvcn0NCjwvZm9ybT4gDQo8Zm9ybSBtZXRob2Q9IlBPU1QiIHN0eWxlPSJmbG9hdDpsZWZ0O21hcmdpbjoxMHB4OyIgYWN0aW9uPSJ7JGlucHV0X2NhdGVnb3J5X3NlbGVjdG9yX3VybH0iPiANCiAgICB7JGZpbHRlcn06IHskaW5wdXRfZmlsdGVyfSANCiAgICA8aW5wdXQgdHlwZT0ic3VibWl0Ii8+IDxici8+DQogICAgeyRjdXJyZW50fTogeyR2YWx1ZV9maWx0ZXJ8ZGVmYXVsdDokbm9maWx0ZXJ9IDxici8+DQo8L2Zvcm0+IA0KDQo8L2Rpdj4NCg0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIiA+DQo8dGhlYWQ+DQo8dHI+DQo8dGggY2xhc3M9InBhZ2VpY29uIj57JHRhYmxlSURDb2xIZWFkZXJ9PC90aD4NCjx0aD57JHRhYmxlTmFtZUNvbEhlYWRlcn08L3RoPg0KPHRoPnsqJHRhYmxlQWxpYXNDb2xIZWFkZXIqfUFsaWFzPC90aD4NCjx0aD57KiR0YWJsZUFsaWFzQ29sSGVhZGVyKn1TYW1wbGUgVGFnPC90aD4NCjx0aD57JHRhYmxlRGVzY3JpcHRpb25Db2xIZWFkZXJ9PC90aD4NCjx0aCBjbGFzcz0icGFnZWljb24iPnskdGFibGVjb3VudGVyaGVhZGVyfTwvdGg+DQo8dGggY2xhc3M9InBhZ2VpY29uIj57JHRhYmxldmlzaWJsZWhlYWRlcn08L3RoPg0KPHRoIGNsYXNzPSJwYWdlaWNvbiIgc3R5bGU9IndpZHRoOjE1MHB4Ij57JHRhYmxlYXZhaWxhYmxpdHloZWFkZXJ9PC90aD4NCjx0aCBjbGFzcz0icGFnZWljb24iIGNvbHNwYW49IjMiPnskdGFibGVBY3Rpb25zSGVhZGVyfTwvdGg+DQo8L3RyPg0KPC90aGVhZD4NCntpZiAkaXRlbWNvdW50ID4gMH0NCjx0Ym9keT4NCntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9DQo8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JGVudHJ5LT5yb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRlbnRyeS0+cm93Y2xhc3N9JzsiPg0KPHRkPnskZW50cnktPmlkfTwvdGQ+DQo8dGQgc3R5bGU9IndpZHRoOjIwMHB4OyI+IHskZW50cnktPm5hbWV9PC90ZD4NCjx0ZCBzdHlsZT0id2lkdGg6MjAwcHg7Ij4geyRlbnRyeS0+YWxpYXN9PC90ZD4NCjx0ZCBzdHlsZT0id2lkdGg6MjAwcHg7Ij4ge2xkZWxpbX1KTURvd25NYW4gYWxpYXM9JGVudHJ5LT5hbGlhc317cmRlbGltfTwvdGQ+DQo8dGQ+eyRlbnRyeS0+ZGVzY3JpcHRpb258dHJ1bmNhdGU6MTAwfTwvdGQ+DQo8dGQ+eyRlbnRyeS0+Y291bnRlcn08L3RkPg0KPHRkPnskZW50cnktPnZpc2libGV9PC90ZD4NCjx0ZD57JGVudHJ5LT5hdmFpbGFibGV9PC90ZD4NCjx0ZD57JGVudHJ5LT5jaGFuZ2VsaW5rfTwvdGQ+DQo8dGQ+eyRlbnRyeS0+ZWRpdGxpbmt9PC90ZD4NCjx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+DQo8L3RyPg0Key9mb3JlYWNofQ0KPC90Ym9keT4NCnsvaWZ9DQo8L3RhYmxlPg0KDQoNCjxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj4NCjxwIGNsYXNzPSJwYWdlb3B0aW9ucyI+eyRhZGRsaW5rfTwvcD4NCjwvZGl2Pg0K]]></data>
	</file>
	<file>
	  <filename>/templates/listtemplate.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGV9PC9oMz4KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIiA+Cjx0aGVhZD4KPHRyPgo8dGg+eyR0YWJsZU5hbWVDb2xIZWFkZXJ9PC90aD4KPHRoIGNsYXNzPSJwYWdlaWNvbiI+eyR0YWJsZURlZmF1bHRDb2xIZWFkZXJ9PC90aD4KPHRoIGNsYXNzPSJwYWdlaWNvbiI+IDwvdGg+Cjx0aCBjbGFzcz0icGFnZWljb24iPiA8L3RoPgo8dGggY2xhc3M9InBhZ2VpY29uIj4gPC90aD4KPC90cj4KPC90aGVhZD4KPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQo8dHIgY2xhc3M9InskZW50cnktPnJvd2NsYXNzfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7JGVudHJ5LT5yb3djbGFzc31ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0neyRlbnRyeS0+cm93Y2xhc3N9JzsiPgo8dGQ+eyRlbnRyeS0+bmFtZWxpbmt9PC90ZD4KPHRkPnskZW50cnktPnRvZ2dsZWRlZmF1bHR9PC90ZD4KPHRkPnskZW50cnktPmR1cGxpY2F0ZWxpbmt9PC90ZD4KPHRkPnskZW50cnktPmVkaXRsaW5rfTwvdGQ+Cjx0ZD57JGVudHJ5LT5kZWxldGVsaW5rfTwvdGQ+CjwvdHI+CnsvZm9yZWFjaH0KPC90Ym9keT4KPC90YWJsZT4KPHA+eyRhZGRsaW5rfTwvcD4KPHA+PC9wPgo=]]></data>
	</file>
	<file>
	  <filename>/templates/list_default.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2xpdGVyYWx9CjxzdHlsZSB0eXBlPSAidGV4dC9jc3MiIG1lZGlhPSAic2NyZWVuIj4KLmRvd25sb2FkcyB7d2lkdGg6OTAlO21hcmdpbjowIDUlO30KLmRvd25sb2FkcyBoMyB7dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgYmxhY2s7bWFyZ2luOjFlbSAwLjVlbSAwLjVlbSAhaW1wb3J0YW50O3RleHQtYWxpZ246cmlnaHQ7fQouZG93bmxvYWRzIGg0IHt0ZXh0LWFsaWduOmNlbnRlcjtib3JkZXItYm90dG9tOjFweCBkb3R0ZWQgYmxhY2s7bWFyZ2luOjFlbSAwLjVlbSAwLjVlbSAhaW1wb3J0YW50O3RleHQtYWxpZ246cmlnaHQ7Zm9udC1zaXplOjEuMWVtO30KLmRvd25sb2FkcyBoNSB7dGV4dC1hbGlnbjpjZW50ZXI7Ym9yZGVyLWJvdHRvbToxcHggZG90dGVkIGJsYWNrO21hcmdpbjoxZW0gMC41ZW0gMC41ZW0gIWltcG9ydGFudDt0ZXh0LWFsaWduOnJpZ2h0O2ZvbnQtc2l6ZToxZW07fQouZG93bmxvYWRzIC5maWxlIHtib3JkZXI6MXB4IHNvbGlkIGJsYWNrO21hcmdpbjoycHg7cGFkZGluZzo1cHg7fQouZG93bmxvYWRzIC5kZXNjcmlwdGlvbiB7d2lkdGg6ODAlO30KLmRvd25sb2FkcyAuaWNvbnMge2Rpc3BsYXk6YmxvY2s7ZmxvYXQ6cmlnaHQ7fQouZG93bmxvYWRzIC5zbWFsbCB7Zm9udC1zaXplOjAuOGVtO30KLmRvd25sb2FkcyAudGl0bGUge2ZvbnQtc2l6ZToxLjFlbTtiYWNrZ3JvdW5kLWNvbG9yOiNmZmY7d2lkdGg6ODAlO3RleHQtYWxpZ246Y2VudGVyO30KLmRvd25sb2FkcyBwIHttYXJnaW46MDtwYWRkaW5nOjA7fQouZG93bmxvYWRzIC5yb3cxIHtiYWNrZ3JvdW5kLWNvbG9yOiNkZGQ7fQouZG93bmxvYWRzIC5yb3cyIHtiYWNrZ3JvdW5kLWNvbG9yOiNiYmI7fQo8L3N0eWxlPgp7L2xpdGVyYWx9CjxkaXYgY2xhc3M9ImRvd25sb2FkcyI+CntpZiAhZW1wdHkoJHRvcGNhdGVnb3J5bGluayl9IFVwcGVyIGNhdGVnb3J5OiB7JHRvcGNhdGVnb3J5bGlua30gey9pZn0Ke2ZvcmVhY2ggZnJvbT0kaXRlbXMgaXRlbT1pdGVtfQogICAge2lmICRpdGVtLT5pdGVtdHlwZSA9PSAnaGVhZGVyJyB9CiAgICAgICB7aWYgJGl0ZW0tPml0ZW1sZXZlbCA9PSAwIH0KICAgICAgICAgICA8aDM+IEhlYWRlciAwOiB7JGl0ZW0tPm5hbWV9IDwvaDM+CiAgICAgICB7ZWxzZWlmICRpdGVtLT5pdGVtbGV2ZWwgPT0gMSB9CiAgICAgICAgICAgPGg0PiBIZWFkZXIgMTogeyRpdGVtLT5uYW1lfSA8L2g0PgogICAgICAge2Vsc2VpZiAkaXRlbS0+aXRlbWxldmVsID09IDIgfQogICAgICAgICAgIDxoNT4gSGVhZGVyIDI6IHskaXRlbS0+bmFtZX0gPC9oNT4KICAgICAgIHsvaWZ9CiAgICAgICAgICAge2lmICRpdGVtLT5kZXNjcmlwdGlvbiAhPSAnJyB9PHNwYW4gY2xhc3M9InNtYWxsIj5EZXNjcmlwdGlvbjo8L3NwYW4+PGJyIC8+IHskaXRlbS0+ZGVzY3JpcHRpb259IHsvaWZ9CiAgICAge2lmIGNvdW50KCRpdGVtLT5zdWJjYXRlZ29yaWVzKSA+IDAgfQogICAgICAgICAgIDxzcGFuIGNsYXNzPSJzbWFsbCI+U3ViY2F0ZWdvcmllczp7Zm9yZWFjaCBmcm9tPSRpdGVtLT5zdWJjYXRlZ29yaWVzIGl0ZW09c3ViY2F0fXtpZiAkc3ViY2F0LmZpbGVzbmIgPiAwfSB7JHN1YmNhdC5saW5rfXsvaWZ9CiAgICAgey9mb3JlYWNofXsvaWZ9PC9zcGFuPjxiciAvPgogICAgey9pZn0KICAgIHtpZiAkaXRlbS0+aXRlbXR5cGUgPT0gJ2ZpbGUnIH0KCiAgICAgICAgICAgPGRpdiBjbGFzcz0iZmlsZSB7JGl0ZW0tPnJvd2NsYXNzfSI+CiAgICAgIDxkaXYgY2xhc3M9Imljb25zIj4geyRpdGVtLT5zaXplfQogICAgICAgIDxpbWcgc3JjPSJtb2R1bGVzL0pNRG93bk1hbi9pbWFnZXMvaWNvbnMvY2FsY3VsYXRvci5wbmciIHRpdGxlPSJNZDU6IHskaXRlbS0+aGFzaH0iIGFsdD0iTWQ1OiB7JGl0ZW0tPmhhc2h9Ii8+CiAgICAgICAgPGEgaHJlZj0ieyRpdGVtLT5ocmVmfSIgdGl0bGU9InskaXRlbS0+bmFtZX0iPjxpbWcgc3JjPSJtb2R1bGVzL0pNRG93bk1hbi9pbWFnZXMvaWNvbnMvZHJpdmVfZGlzay5wbmciLz48L2E+Cntmb3JlYWNoIGZyb209JGl0ZW0tPmFjY2Vzc3R5cGVzIGl0ZW09YWNjZXNzfQo8aW1nIHNyYz0ibW9kdWxlcy9KTURvd25NYW4vaW1hZ2VzL2ljb25zL2FjY2Vzcy17JGFjY2Vzc30ucG5nIiB0aXRsZT0ieyRhY2Nlc3N9IGFjY2VzcyIgYWx0PSJ7JGFjY2Vzc30gYWNjZXNzIi8+CnsvZm9yZWFjaH0KICAgICAgPC9kaXY+CiAgICAgIDxwIGNsYXNzPSJ0aXRsZSI+IHskaXRlbS0+dGh1bWJ9IHskaXRlbS0+ZG93bmxvYWR9IDwvcD4KICAgICAge2lmICRpdGVtLT5jYXRlZ29yaWVzICE9ICcnIH08cD48c3BhbiBjbGFzcz0ic21hbGwiPkNhdGVnb3JpZXM6PC9zcGFuPjxiciAvPiB7JGl0ZW0tPmNhdGVnb3JpZXN9PC9wPnsvaWZ9CjxwPjxzcGFuIGNsYXNzPSJzbWFsbCI+eyRpdGVtLT5jb3VudGVybG9jYWxlfTwvc3Bhbj48L3A+CjxwPjxzcGFuIGNsYXNzPSJzbWFsbCI+eyRpdGVtLT5kZXRhaWx9PC9zcGFuPjwvcD4KICAgICAgPGRpdiBzdHlsZT0iY2xlYXI6cmlnaHQ7Ij4gPC9kaXY+CiAgICA8L2Rpdj4KICAgIHsvaWZ9Cntmb3JlYWNoZWxzZX0KICAgIHskbm9kb3dubG9hZHN9CnsvZm9yZWFjaH0KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/plugin.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskbG91ZG5lc3N9PC9oMz4=]]></data>
	</file>
	<file>
	  <filename>/templates/reordercategory.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CntpZiAkaXRlbWNvdW50ID4gMH0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KCTx0aGVhZD4KCQk8dHI+CgkJCTx0aD57JGNhdGVnb3J5dGV4dH0gLSB7JHByaW9yaXR5dGV4dH08L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQoJCTx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skZW50cnktPnJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JGVudHJ5LT5yb3djbGFzc30nOyI+CgkJCTx0ZD57JGVudHJ5LT5uYW1lfTwvdGQ+CgkJPC90cj4Key9mb3JlYWNofQoJPC90Ym9keT4KPC90YWJsZT4KCnsvaWZ9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CjxwIGNsYXNzPSJwYWdldGV4dCI+IDwvcD4KPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRoaWRkZW59eyRzdWJtaXR9eyRjYW5jZWx9PC9wPgo8L2Rpdj4KeyRlbmRmb3JtfQo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+PHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGFkZGxpbmt9PC9wPjwvZGl2PgoK]]></data>
	</file>
	<file>
	  <filename>/templates/reorderitem.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRzdGFydGZvcm19CntpZiAkaXRlbWNvdW50ID4gMH0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KCTx0aGVhZD4KCQk8dHI+CgkJCTx0aCBzdHlsZT0id2lkdGg6MTAwcHg7Ij57JHByaW9yaXR5dGV4dH08L3RoPgoJCQk8dGg+eyRpdGVtdGV4dH08L3RoPgoJCTwvdHI+Cgk8L3RoZWFkPgoJPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWVudHJ5fQoJCTx0ciBjbGFzcz0ieyRlbnRyeS0+cm93Y2xhc3N9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3skZW50cnktPnJvd2NsYXNzfWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7JGVudHJ5LT5yb3djbGFzc30nOyI+CgkJCTx0ZCBzdHlsZT0idGV4dC1hbGlnbjpyaWdodCI+eyRlbnRyeS0+cHJpb3JpdHl9PC90ZD4KCQkJPHRkPnskZW50cnktPm5hbWV9PC90ZD4KCQk8L3RyPgp7L2ZvcmVhY2h9Cgk8L3Rib2R5Pgo8L3RhYmxlPgoKey9pZn0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KPHAgY2xhc3M9InBhZ2V0ZXh0Ij4gPC9wPgo8cCBjbGFzcz0icGFnZWlucHV0Ij57JGhpZGRlbn17JHN1Ym1pdH17JGNhbmNlbH08L3A+CjwvZGl2Pgp7JGVuZGZvcm19]]></data>
	</file>
	<file>
	  <filename>/templates/scanfile.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij57JGxhYmVsX25ld2ZpbGVzfTwvZGl2Pgo8YnIvPgo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiID4KPHRib2R5Pgp7Zm9yZWFjaCBmcm9tPSRkaWZmIGl0ZW09ZW50cnkgbmFtZT1kaWZmfQo8dHIgY2xhc3M9InJvd3skc21hcnR5LmZvcmVhY2guZGlmZi5pbmRleCUyICsxfSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSdyb3dob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0ncm93eyRzbWFydHkuZm9yZWFjaC5kaWZmLmluZGV4JTIgKzF9JzsiPgo8dGQgc3R5bGU9IndpZHRoOjIwMHB4OyI+IAp7JGVudHJ5fQo8L3RkPgo8L3RyPgp7L2ZvcmVhY2h9CjwvdGJvZHk+CjwvdGFibGU+CjxkaXYgc3R5bGU9Im1hcmdpbjogMTBweCAzMHB4IDEwcHggMTBweDsgd2lkdGg6IDk3JTsiPgp7JGJhY2tsaW5rfQo8L2Rpdj4K]]></data>
	</file>
</module>
