<?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>SEOTools2</name>
	<version>1.0.3</version>
  <mincmsversion>1.9.2</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5TRU9Ub29sczIgaGVscHMgeW91IHRvIGdldCB5b3VyIFNFTyAoU2VhcmNoIEVuZ2luZSBPcHRpbWl6YXRpb24pIHJpZ2h0LiBUaGUgbW9kdWxlIGFkZHMgc2V2ZXJhbCBTRU8gY2FwYWJpbGl0aWVzIHRvIHlvdXIgQ01TTVMgaW5zdGFsbGF0aW9uIGFuZCBhbGVydHMgeW91IGlmIHlvdSBtaXNzZWQgb3V0IG9uIHNvbWV0aGluZyBTRU8gcmVsYXRlZC4gQ3VycmVudGx5LCB0aGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6PC9wPg0KPHVsPg0KPGxpPi0gZ2VuZXJhdGVzIE1ldGEgdGFncyBpbiBzdGFuZGFyZCBodG1sLCBEdWJsaW4gQ29yZSBhbmQgT3BlbkdyYXBoIGZvcm1hdHM8L2xpPg0KPGxpPi0gYXV0b21hdGljYWxseSBleHRyYWN0cyBrZXl3b3JkcyBmcm9tIHlvdXIgcGFnZXMgYW5kIGFkZHMgdGhlbSB0byB0aGUgbWV0YSB0YWdzIGFuZCBwYWdlIHRpdGxlPC9saT4NCjxsaT4tIGxldHMgeW91IGRldGVybWluZSB3aXRoIGEgc2luZ2xlIGNsaWNrIHdoZXRoZXIgY2VydGFpbiBwYWdlcyBzaG91bGQgYmUgaW5kZXhlZCBieSBzZWFyY2ggZW5naW5lcyBvciBub3Q8L2xpPg0KPGxpPi0gZ2VuZXJhdGVzIGEgc2l0ZW1hcC54bWwgZmlsZSB3aXRoIHlvdXIgcGFnZXMgd2hpbGUgZ2l2aW5nIHlvdSBmdWxsIGNvbnRyb2wgb3ZlciB0aGUgcHJpb3JpdGllcyBvZiB5b3VyIHBhZ2VzPC9saT4NCjxsaT4tIGdlbmVyYXRlcyBhIHJvYm90cy50eHQgZmlsZSBleHBsaWNpdGx5IGRpc2FsbG93aW5nIGFjY2VzcyB0byBwYWdlcyB5b3UgZG9uJ3Qgd2FudCB0byBiZSBpbmRleGVkPC9saT4NCjxsaT4tIGFsZXJ0cyB5b3Ugd2hlbiB0aGVyZSBhcmUgc2V2ZXJhbCBwYWdlcyBmZWF0dXJpbmcgdGhlIHNhbWUgcGFnZSB0aXRsZXMgYW5kIGRlc2NyaXB0aW9uczwvbGk+DQo8bGk+LSBhbGVydHMgeW91IHdoZW4gdmVyeSBzaG9ydCBwYWdlIG1ldGEgZGVzY3JpcHRpb25zIGFyZSBkZXRlY3RlZDwvbGk+DQo8bGk+LSBhdXRvbWF0aWNhbGx5IHN1Ym1pdHMgeW91ciBzaXRlbWFwIGZpbGUgdG8gR29vZ2xlIHdoZW4geW91IGNoYW5nZSB5b3VyIGNvbnRlbnQ8L2xpPg0KPC91bD4NCjxoMz5Ib3cgRG8gSSBVc2UgSXQ8L2gzPg0KPHA+Rmlyc3QsIG9wZW4gYWxsIHRlbXBsYXRlcyB3aGVyZSB5b3Ugd2FudCBkbyB1c2UgU0VPVG9vbHMyLiBSZW1vdmUgdGhlIGNvbXBsZXRlICZsdDt0aXRsZSZndDsgdGFnIGFuZCB0aGUge21ldGFkYXRhfSB0YWcgKGV2ZW4gaWYgaXQgc2F5cyB0byBuZXZlciByZW1vdmUgaXQpIGFuZCByZXBsYWNlIHRoZW0gd2l0aCB0aGUgdGFnPC9wPg0KPHByZT4NCntTRU9Ub29sczJ9DQo8L3ByZT48YnIgLz4NCjxwPk5leHQsIGF0IHRoZSBib3R0b20gb2YgeW91ciB0ZW1wbGF0ZSAoYWZ0ZXIgdGhlIGNsb3NpbmcgJmx0Oy9ib2R5Jmd0OyB0YWcpLCBpbnNlcnQgdGhlIGZvbGxvd2luZyBjb2RlOjwvcD4NCjxwcmU+DQp7Y2FwdHVyZSBhc3NpZ249bWV0YWRlc2NyaXB0aW9ufXtjb250ZW50IGJsb2NrPW1ldGFkZXNjcmlwdGlvbiBsYWJlbD0iUGFnZSBEZXNjcmlwdGlvbiIgb25lbGluZT0idHJ1ZSJ9ey9jYXB0dXJlfQ0KPC9wcmU+PGJyIC8+DQo8cD5UaGlzIGlzIHdoZXJlIHlvdSdsbCBlbnRlciBhIHNob3J0IHBhZ2UgZGVzY3JpcHRpb24gKG9uZSBvciB0d28gc2VudGVuY2VzKSB0aGF0IHdpbGwgYXBwZWFyIGluIHRoZSBzZWFyY2ggZW5naW5lJ3MgcmVzdWx0cyBhbmQgaWYsIGZvciBleGFtcGxlLCBzb21lb25lIHNoYXJlcyBhIGxpbmsgdG8geW91ciBwYWdlIG9uIGZhY2Vib29rLjwvcD4NCjxwPk5vdywgdmlzaXQgdGhlIHNldHRpbmdzIHRhYnMgZm9yIHBhZ2UgdGl0bGUgJiBtZXRhIGluZm9ybWF0aW9uLCB0aGUgc2l0ZW1hcCAmIGNyYXdsZXIgc2V0dGluZ3MgYW5kIHRoZSBrZXl3b3JkIGdlbmVyYXRvciBzZXR0aW5ncyBhbmQgZmlsbCBpbiBhbGwgcmVxdWlyZWQgaW5mb3JtYXRpb24gZm9yIHlvdXIgcGFnZS4gVW5kZXIgIk5hbWUgb2YgcGFnZSBkZXNjcmlwdGlvbiBjb250ZW50IGJsb2NrIiB5b3UgbmVlZCB0byBlbnRlciB0aGUgbmFtZSBvZiB0aGUgY29udGVudCBibG9jayB5b3UganVzdCBhZGRlZCB0byB5b3VyIHRlbXBsYXRlcyAoIlBhZ2UgRGVzY3JpcHRpb24iIGluIG91ciBleGFtcGxlKS4gVGhlIHRhYiAiU0VPIEFsZXJ0cyIgd2lsbCBhbGVydCB5b3UgaWYgaXQgZGV0ZWN0cyBhbnl0aGluZyB0aGF0IGlzIHJlcXVpcmVkIGJ1dCBub3QgYWN0aXZhdGVkIG9yIGZpbGxlZCBpbi4gWW91IHNob3VsZCBhbHNvIGNvbnNpZGVyIHNpZ25pbmcgdXAgeW91cg0Kc2l0ZSB3aXRoIEdvb2dsZSBXZWJtYXN0ZXIgdG9vbHMuIFRoZXJlLCBzZWxlY3QgIk1ldGEgdGFnIHZhbGlkYXRpb24iIGFuZCBwYXN0ZSB0aGUgdmVyaWZpY2F0aW9uIGNvZGUgKHF1aXRlIGEgbG9uZyBzdHJpbmcgb2YgY2hhcmFjdGVycyBhbmQgbnVtYmVycykgaW50byB0aGUgYm94ICJWZXJpZmljYXRpb24gQ29kZSIgaW4gIlNFTyBTZXR0aW5ncyIgdG8gYXV0b21hdGljYWxseSB2ZXJpZnkgdGhhdCB5b3UgYXJlIHJlYWxseQ0KdGhlIG93bmVyIG9mIHlvdXIgcGFnZSAobm8gbmVlZCB0byBwYXN0ZSB0aGUgR29vZ2xlIE1ldGEtY29kZSBpbnRvIHlvdXIgdGVtcGxhdGUpLjwvcD4NCjxwPkFzIHNvb24gYXMgZXZlcnl0aGluZyBpcyBzZXQgdXAsIGxvb2sgYXQgdGhlICJTRU8gQWxlcnRzIiB0YWIgYW5kIGZpeCBhbGwgcHJvYmxlbXMgZGV0ZWN0ZWQgaGVyZS4gVGFrZSBjYXJlIHRvIGluc2VydCBhICh1bmlxdWUpIHBhZ2UgZGVzY3JpcHRpb24gb24gZXZlcnkgcGFnZSB5b3UgZWRpdCBpbiB0aGUgZmllbGQgIlBhZ2UgRGVzY3JpcHRpb24iIGF0IHRoZSBib3R0b20gb2YgeW91ciAiRWRpdCBQYWdlIiBmb3JtLjwvcD4NCjxwPlRvIHNldCB5b3VyIG93biBrZXl3b3JkcyAoaW5zdGVhZCBvZiB0aGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgb25lcykgb3IgT3BlbkdyYXBoIHR5cGUgZm9yIGNlcnRhaW4gcGFnZXMsIHZpc2l0IHRoZSAiUGFnZSBzZXR0aW5ncyIgdGFiIHdoZXJlIHlvdSdsbCBmaW5kIGEgbGlzdCBvZiBhbGwgcGFnZXMgeW91IGhhdmUgaW4geW91ciBzeXN0ZW0uIFRoZXJlLCB5b3UgY2FuIGFsc28gY2hhbmdlIHRoZSBzaXRlbWFwIHByaW9yaXR5ICh3aGljaCBpcyBhdXRvLWNhbGN1bGF0ZWQgYnkgZGVmYXVsdCkgb2YgYSBwYWdlIHRvIGluZGljYXRlIHRoYXQgaXQgc2hvdWxkDQpiZSBjb25zaWRlcmVkIG1vcmUgaW1wb3J0YW50IGZvciBzZWFyY2ggZW5naW5lIG1hdGNoZXMgb24geW91ciBwYWdlIG9yIGV4Y2x1ZGUgY2VydGFpbiBwYWdlcyBmcm9tIHRoZSBzZWFyY2ggaW5kZXguPC9wPg0KPHA+U0VPVG9vbHMyIHdpbGwgYWxzbyBhdXRvbWF0aWNhbGx5IGluc2VydCBhIGxpbmsgdG8gdGhlIGltYWdlIHRvIGJlIHVzZWQgYXMgdGhlIG1haW4gaW1hZ2Ugb2YgeW91ciBwYWdlIGlmIHlvdSBzZWxlY3QgYW4gIkltYWdlIiBmb3IgdGhlIHBhZ2UgZnJvbSB3aXRoaW4geW91ciBwYWdlJ3MgIk9wdGlvbnMiIHRhYiAodGhpcyBpcyBpbXBvcnRhbnQgZm9yIHBlb3BsZSBzdWJtaXR0aW5nIGEgbGluayB0byB5b3VyIHBhZ2UgZS5nLiBvbiBmYWNlYm9vaykuIEFsc28sIGlmIHlvdSBhcmUgdXNpbmcgT3BlbkdyYXBoLCB0aGUgaW1hZ2Ugc2VsZWN0ZWQgaGVyZQ0Kd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBPcGVuR3JhcGggaW1hZ2UgeW91IHNwZWNpZmllZCBmcm9tIHdpdGhpbiAiU0VPIFNldHRpbmdzIi4gUGxlYXNlIGJlIGF3YXJlIHRoYXQgeW91IG5lZWQgdG8gdXBsb2FkIHRob3NlIGltYWdlcyB0byB5b3VyIC91cGxvYWRzL2ltYWdlcyBkaXJlY3RvcnkuPC9wPg0KPGgzPkNhbiBJIHVzZSBzbWFydHkgdmFyaWFibGVzPzwvaDM+DQo8cD5Zb3UgY2FuIHVzZSBhbGwgc21hcnR5IHZhcmlhYmxlcyBhbmQgVURUcyB3aXRoaW4gdGhlIHNldHRpbmdzIGZpZWxkcyA8aT5QYWdlIHRpdGxlPC9pPiwgPGk+TWV0YSBwYWdlIHRpdGxlPC9pPiwgPGk+QXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZGVzY3JpcHRpb25zPC9pPiBhbmQgPGk+QWRkaXRpb25hbCBtZXRhIHRhZ3M8L2k+LiBFbnRlciA8Y29kZT57ZGVidWd9PC9jb2RlPiB0byBzZWUgYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgdmFyaWFibGVzLjwvcD4NCjxoMz5XaGljaCBzbWFydHkgdmFyaWFibGVzIGFyZSBleHBvcnRlZCBieSBTRU9Ub29sczI/PC9oMz4NCjxjb2RlPnskc2VvX2tleXdvcmRzfTwvY29kZT46IEEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYWxsIGtleXdvcmRzIHNldCBmb3IgdGhlIHBhZ2UgKGluY2x1ZGluZyB0aGUgZGVmYXVsdCBrZXl3b3Jkcyk8YnIgLz4NCjxjb2RlPnskdGl0bGVfa2V5d29yZHN9PC9jb2RlPjogQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBhbGwga2V5d29yZHMgc2V0IGZvciB0aGUgcGFnZSAoaW5jbHVkaW5nIHRoZSBkZWZhdWx0IGtleXdvcmRzKTxiciAvPg0KPGNvZGU+eyRkZWZhdWx0X2tleXdvcmRzfTwvY29kZT46IEEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgYWxsIGRlZmF1bHQga2V5d29yZHM8YnIgLz4NCjxjb2RlPnskcGFnZV9rZXl3b3Jkc308L2NvZGU+OiBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBrZXl3b3JkcyBzZXQgZm9yIHRoZSBwYWdlICh3aXRob3V0IHRoZSBkZWZhdWx0IGtleXdvcmRzKQ0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEyLCBDbGlwIE1hZ2ljIDxhIGhyZWY9Im1haWx0bzphZG1pbkBjbGlwbWFnaWMuY29tLmF1Ij4mbHQ7YWRtaW5AY2xpcG1hZ2ljLmNvbS5hdSZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPjxoMz5QYXJhbWV0ZXJzPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gbGFuZz0iZW5fVVMiIC0gUGFyYW1ldGVyIGlzIHVzZWQgdG8gc3BlY2lmeSB3aGF0IGxhbmd1YWdlIHRvIHVzZSBmb3IgZGlzcGxheSBvbiB0aGUgZnJvbnRlbmQuIE5vdCBhbGwgbW9kdWxlcyBzdXBwb3J0IG9yIG5lZWQgdGhpcy48L2xpPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IHNob3diYXNlPSJ0cnVlIiAtIFNldCB0aGlzIHBhcmFtZXRlciB0byA8Y29kZT5mYWxzZTwvY29kZT4gdG8gc3VwcHJlc3MgdGhlIG91dHB1dCBvZiB0aGUgYmFzZSBocmVmIHRhZy48L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBDbGlwIE1hZ2ljICZsdDthZG1pbkBjbGlwbWFnaWMuY29tLmF1Jmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMC4zPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPg0KPGxpPlZlcnNpb24gMS4wIC0gMjUgSmFudWFyeSAyMDEyLiBJbml0aWFsIHJlbGVhc2UuIFRoaXMgaXMgYSBmb3JrIG9mIHRoZSBTRU9Ub29scyBtb2R1bGUgd2l0aCBDTVNNUyAxLjEwKyBjb21wYXRpYmlsaXR5LiBDaGFuZ2VzIGluY2x1ZGU6DQoJPHVsPg0KCQk8bGk+U2V0IHByZWZlcmVuY2VzIG9uIGluc3RhbGw8L2xpPg0KCQk8bGk+UmVtb3ZlIHByZWZlcmVuY2VzIG9uIHVuaW5zdGFsbDwvbGk+DQoJCTxsaT5SZXBsYWNlIGFsbCByZWZlcmVuY2UgdG8gSGllcmFyY2h5TWFuYWdlciBvYmplY3RzIHdpdGggQ29udGVudE9wZXJhdGlvbnMgb2JqZWN0czwvbGk+DQoJCTxsaT5HZW5lcmF0ZSBhbGwga2V5d29yZHMsIGtleXdvcmQgc3VnZ2VzdGlvbnMsIGRlc2NyaXB0aW9ucyBhbmQgZGVmYXVsdCBkZXNjcmlwdGlvbnM8L2xpPg0KCQk8bGk+R2VuZXJhdGUgc2l0ZW1hcC54bWwgYW5kIHJvYm90cy50eHQgZmlsZXM8L2xpPg0KCQk8bGk+UmV0YWluIGNoZWNrYm94IHByZWZlcmVuY2Ugc2V0dGluZ3MgYWZ0ZXIgc3VibWl0PC9saT4NCgkJPGxpPk9uIGZyb250ZW5kIHBhZ2UgbG9hZCwgZW5zdXJlIHRoYXQgYSBjb3JyZXNwb25kaW5nIHJlY29yZCBleGlzdHMgaW4gdGhlIHNlb3Rvb2xzMiBkYXRhYmFzZSB0YWJsZTwvbGk+DQoJPC91bD4NCjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMSAtIDI1IEphbnVhcnkgMjAxMi4gTWlub3IgYnVnIGZpeDwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMiAtIDEgRmVicnVhcnkgMjAxMi4gQnVnIGZpeDwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMyAtIDEgRmVicnVhcnkgMjAxMi4gQnVnIGZpeDwvbGk+DQo8L3VsPjxiciAvPg==]]></about>
	<description><![CDATA[Helps with SEO in general, automatically generating XML sitemaps and comprehensive meta descriptions]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.changesettings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQppZiAoISAkdGhpcy0+Q2hlY2tBY2Nlc3MoIkVkaXQgU0VPIFNldHRpbmdzIikpDQoJew0KCXJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOw0KCX0NCg0KLyogLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0NCg0KICAgQ29kZSBmb3IgU0VPVG9vbHMyICJjaGFuZ2VzZXR0aW5ncyIgYWRtaW4gYWN0aW9uDQogICANCiAgIC09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tDQogICANCiAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGRpc3BsYXkgc29tZXRoaW5nIGZyb20gYSB0ZW1wbGF0ZQ0KICAgb3IgZG8gc29tZSBvdGhlciB0YXNrLg0KICAgDQoqLw0KDQovLyBSZWdlbmVyYXRlIFNpdGVtYXAgYW5kIHJvYm90cy50eHQNCmlmIChpc3NldCgkX1BPU1RbJ2RvX3JlZ2VuZXJhdGUnXSkpIHsNCgkkdGhpcy0+Y3JlYXRlU2l0ZW1hcCgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgncHVzaF9zaXRlbWFwJywxKSA9PSAxKTsNCiAgICBpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ2NyZWF0ZV9yb2JvdHMnLDEpID09IDEpIHsNCiAgICAgICAgJHRoaXMtPmNyZWF0ZVJvYm90c1RYVCgpOw0KICAgIH0NCgkkdGhpcy0+YXVkaXQoIlRlc3QiLCJTRU8gVG9vbHMiLCJNYW51YWxseSByZWdlbmVyYXRlZCBzaXRlbWFwLnhtbCBhbmQgcm9ib3RzLnR4dCIpOw0KICAgICR0aGlzLT5SZWRpcmVjdCgkdGhpcy0+aWQsICdkZWZhdWx0YWRtaW4nLCAnJywgQXJyYXkoJ21lc3NhZ2UnPT4nc2l0ZW1hcF9yZWdlbmVyYXRlZCcsJ3RhYic9PidzaXRlbWFwc2V0dGluZ3MnKSk7DQp9DQoJDQppZiAoaXNzZXQoJF9QT1NUWydzYXZlX21ldGFfc2V0dGluZ3MnXSkpIHsNCiRtZXRhX3N0YW5kYXJkID0gaXNzZXQoJF9QT1NUWydtZXRhX3N0YW5kYXJkJ10pID8gMSA6IDA7DQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX3N0YW5kYXJkJywkbWV0YV9zdGFuZGFyZCk7DQogIA0KJG1ldGFfZHVibGluY29yZSA9IGlzc2V0KCRfUE9TVFsnbWV0YV9kdWJsaW5jb3JlJ10pID8gMSA6IDA7DQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX2R1YmxpbmNvcmUnLCRtZXRhX2R1YmxpbmNvcmUpOw0KDQokbWV0YV9vcGVuZ3JhcGggPSBpc3NldCgkX1BPU1RbJ21ldGFfb3BlbmdyYXBoJ10pID8gMSA6IDA7DQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaCcsJG1ldGFfb3BlbmdyYXBoKTsNCiAgDQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnYWRkaXRpb25hbF9tZXRhX3RhZ3MnLCRfUE9TVFsnYWRkaXRpb25hbF9tZXRhX3RhZ3MnXSk7DQoNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJF9QT1NUWydtZXRhX3B1Ymxpc2hlciddKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX2NvbnRyaWJ1dG9yJywkX1BPU1RbJ21ldGFfY29udHJpYnV0b3InXSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9jb3B5cmlnaHQnLCRfUE9TVFsnbWV0YV9jb3B5cmlnaHQnXSk7DQoNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX2xvY2F0aW9uJywkX1BPU1RbJ21ldGFfbG9jYXRpb24nXSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9yZWdpb24nLCRfUE9TVFsnbWV0YV9yZWdpb24nXSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScsJF9QT1NUWydtZXRhX2xhdGl0dWRlJ10pOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfbG9uZ2l0dWRlJywkX1BPU1RbJ21ldGFfbG9uZ2l0dWRlJ10pOw0KDQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnLCRfUE9TVFsnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnXSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdHlwZScsJF9QT1NUWydtZXRhX29wZW5ncmFwaF90eXBlJ10pOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3NpdGVuYW1lJywkX1BPU1RbJ21ldGFfb3BlbmdyYXBoX3NpdGVuYW1lJ10pOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2ltYWdlJywkX1BPU1RbJ21ldGFfb3BlbmdyYXBoX2ltYWdlJ10pOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FkbWlucycsJF9QT1NUWydtZXRhX29wZW5ncmFwaF9hZG1pbnMnXSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb24nLCRfUE9TVFsnbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb24nXSk7DQoNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0aXRsZScsJF9QT1NUWyd0aXRsZSddKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0aXRsZV9tZXRhJywkX1BPU1RbJ3RpdGxlX21ldGEnXSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCRfUE9TVFsnZGVzY3JpcHRpb25fYmxvY2snXSk7DQoNCg0KJGRlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUgPSBpc3NldCgkX1BPU1RbJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnXSkgPyAxIDogMDsNCg0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnLCRkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlKTsNCg0KDQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0bycsJF9QT1NUWydkZXNjcmlwdGlvbl9hdXRvJ10pOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRfa2V5d29yZHMnLCRfUE9TVFsnZGVmYXVsdF9rZXl3b3JkcyddKTsNCg0KJHRoaXMtPmF1ZGl0KCJUZXN0IiwiU0VPIFRvb2xzIiwiRWRpdGVkIE1ldGEgc2V0dGluZ3MiKTsNCiR0aGlzLT5SZWRpcmVjdCgkdGhpcy0+aWQsICdkZWZhdWx0YWRtaW4nLCAnJywgQXJyYXkoJ21lc3NhZ2UnPT4nc2V0dGluZ3NfdXBkYXRlZCcsJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7DQp9DQoNCmlmIChpc3NldCgkX1BPU1RbJ3NhdmVfc2l0ZW1hcF9zZXR0aW5ncyddKSkgew0KICANCiRjcmVhdGVfc2l0ZW1hcCA9IGlzc2V0KCRfUE9TVFsnY3JlYXRlX3NpdGVtYXAnXSkgPyAxIDogMDsNCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJywkY3JlYXRlX3NpdGVtYXApOw0KDQokcHVzaF9zaXRlbWFwID0gaXNzZXQoJF9QT1NUWydwdXNoX3NpdGVtYXAnXSkgPyAxIDogMDsNCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcsJHB1c2hfc2l0ZW1hcCk7DQoNCiRjcmVhdGVfcm9ib3RzID0gaXNzZXQoJF9QT1NUWydjcmVhdGVfcm9ib3RzJ10pID8gMSA6IDA7DQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdjcmVhdGVfcm9ib3RzJywkY3JlYXRlX3JvYm90cyk7DQogIA0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZlcmlmaWNhdGlvbicsJF9QT1NUWyd2ZXJpZmljYXRpb24nXSk7DQoNCiR0aGlzLT5hdWRpdCgiVGVzdCIsIlNFTyBUb29scyIsIkVkaXRlZCBTaXRlbWFwIHNldHRpbmdzIik7DQokdGhpcy0+UmVkaXJlY3QoJHRoaXMtPmlkLCAnZGVmYXVsdGFkbWluJywgJycsIEFycmF5KCdtZXNzYWdlJz0+J3NldHRpbmdzX3VwZGF0ZWQnLCd0YWInPT4nc2l0ZW1hcHNldHRpbmdzJykpOw0KfQ0KDQppZiAoaXNzZXQoJF9QT1NUWydzYXZlX2tleXdvcmRfc2V0dGluZ3MnXSkpIHsNCg0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJywkX1BPU1RbJ2tleXdvcmRfbWlubGVuZ3RoJ10pOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfdGl0bGVfd2VpZ2h0JywkX1BPU1RbJ2tleXdvcmRfdGl0bGVfd2VpZ2h0J10pOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0JywkX1BPU1RbJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0J10pOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0JywkX1BPU1RbJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0J10pOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfY29udGVudF93ZWlnaHQnLCRfUE9TVFsna2V5d29yZF9jb250ZW50X3dlaWdodCddKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdrZXl3b3JkX21pbmltdW1fd2VpZ2h0JywkX1BPU1RbJ2tleXdvcmRfbWluaW11bV93ZWlnaHQnXSk7DQoNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2V4Y2x1ZGUnLCRfUE9TVFsna2V5d29yZF9leGNsdWRlJ10pOw0KDQoNCiR0aGlzLT5hdWRpdCgiVGVzdCIsIlNFTyBUb29scyIsIkVkaXRlZCBLZXl3b3JkIHNldHRpbmdzIik7DQokdGhpcy0+UmVkaXJlY3QoJHRoaXMtPmlkLCAnZGVmYXVsdGFkbWluJywgJycsIEFycmF5KCdtZXNzYWdlJz0+J3NldHRpbmdzX3VwZGF0ZWQnLCd0YWInPT4na2V5d29yZHNldHRpbmdzJykpOw0KfQ0KDQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQovKiAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0KDQogICBDb2RlIGZvciBTRU9Ub29sczIgImRlZmF1bHQiIGFjdGlvbg0KDQogICAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0KICAgDQogICBUeXBpY2FsbHksIHRoaXMgd2lsbCBkaXNwbGF5IHNvbWV0aGluZyBmcm9tIGEgdGVtcGxhdGUNCiAgIG9yIGRvIHNvbWUgb3RoZXIgdGFzay4NCiAgIA0KKi8NCg0KLy8gR2V0IHBhZ2UgZGF0YQ0KJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOw0KJGRiID0mIGNtc21zKCktPkdldERiKCk7DQoNCi8vIEZpcnN0IHVwLCB3ZSBkbyBzb21lIGRhdGFiYXNlIG1haW50ZW5hbmNlDQovLyBFbnN1cmUgYWxsIHRoZSBhY3RpdmUgcGFnZXMgYXJlIGluIHRoZSBzZW90b29sczIgZGF0YWJhc2UNCiRxdWVyeSA9ICdTRUxFQ1QgYGNvbnRlbnRfaWRgIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgV0hFUkUgYHR5cGVgIExJS0UgIiVjb250ZW50JSIgQU5EIGBjb250ZW50X2lkYCBOT1QgSU4gKFNFTEVDVCBgY29udGVudF9pZGAgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpLiAnbW9kdWxlX3Nlb3Rvb2xzMiknOw0KaWYgKCEkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSkpIHsNCiAgZWNobyAiPGJyIC8+UHJvYmxlbSB3aXRoIHRoZSBkYXRhYmFzZSEgUGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLiI7DQogIGRpZTsNCn0NCg0KaWYgKCRyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKSB7DQovLyBPSyB3ZSBoYXZlIHNvbWUgbmV3IHBhZ2VzDQoJJHEyID0gJ0lOU0VSVCBJTlRPICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFNFVCBjb250ZW50X2lkID0gPywgaW5kZXhhYmxlID0gPyc7DQoJd2hpbGUgKCRvbmVfcGFnZSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsNCgkJJGRiLT5FeGVjdXRlKCRxMixhcnJheSgkb25lX3BhZ2VbJ2NvbnRlbnRfaWQnXSwxKSk7DQoJfQ0KfQ0KDQovLyBOb3cgY2hlY2sgdGhhdCB3ZSBoYXZlIHJlbW92ZWQgZnJvbSBzZW90b29sczIgYW55IHBhZ2VzIHRoYXQgaGF2ZSBiZWVuIGRlbGV0ZWQNCiRxdWVyeSA9ICdTRUxFQ1QgYGNvbnRlbnRfaWRgIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgV0hFUkUgYGNvbnRlbnRfaWRgIE5PVCBJTiAoU0VMRUNUIGBjb250ZW50X2lkYCBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkuICdjb250ZW50KSc7DQppZiAoISRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KSkgew0KCXByaW50X3IoJGRiLT5zcWwpOw0KCWVjaG8gIjxiciAvPlByb2JsZW0gd2l0aCB0aGUgZGF0YWJhc2UhIFBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4iOw0KCWRpZTsNCn0NCmlmICgkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkgew0KLy8gT0sgd2UgaGF2ZSBzb21lIGRlbGV0ZWQgcGFnZXMNCgkkcTMgPSAnREVMRVRFIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgV0hFUkUgY29udGVudF9pZCA9ID8nOw0KCXdoaWxlICgkb25lX3BhZ2UgPSAkcmVzdWx0LT5mZXRjaFJvdygpKSB7DQoJCSRkYi0+RXhlY3V0ZSgkcTMsYXJyYXkoJG9uZV9wYWdlWydjb250ZW50X2lkJ10sMSkpOw0KCX0NCn0NCg0KLy8gTGFzdGx5LCBlbnN1cmUgdGhhdCBhbGwgaW5hY3RpdmUgcGFnZXMgYXJlIG1hcmtlZCBhcyBub3QgaW5kZXhhYmxlIGluIHNlb3Rvb2xzMg0KJHF1ZXJ5ID0gJ1NFTEVDVCBjb250ZW50X2lkIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdjb250ZW50IFdIRVJFIGFjdGl2ZSA9IDAnOw0KaWYgKCEkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSkpIHsNCglwcmludF9yKCRkYi0+c3FsKTsNCgllY2hvICI8YnIgLz5Qcm9ibGVtIHdpdGggdGhlIGRhdGFiYXNlISBQbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuIjsNCglkaWU7DQp9DQoNCmlmICgkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkgew0KLy8gT0sgd2UgaGF2ZSB0byBwcmV2ZW50IHRoZSBpbmFjdGl2ZSBwYWdlcyBmcm9tIGJlaW5nIGluZGV4ZWQuDQoJJHE0ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBTRVQgaW5kZXhhYmxlID0gMCBXSEVSRSBjb250ZW50X2lkID0gPyc7DQoJd2hpbGUgKCRvbmVfcGFnZSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsNCgkJJGRiLT5FeGVjdXRlKCRxNCxhcnJheSgkb25lX3BhZ2VbJ2NvbnRlbnRfaWQnXSkpOw0KCX0NCn0NCg0KLy8gUGhldywgdGhhdCdzIGFsbCBkb25lIHNvIHdlIGNhbiBtb3ZlIG9uIHRvIHRoZSByZWFsIGJ1c2luZXNzIG9mIHRoZSBkYXkNCg0KJHRwbF92YXJzID0gJHNtYXJ0eS0+Z2V0X3RlbXBsYXRlX3ZhcnMoKTsNCiRjdXJjb250ZW50ID0gJHRwbF92YXJzWydjb250ZW50X29iaiddOw0KDQokcGFnZV91cmwgPSAkY3VyY29udGVudC0+R2V0VVJMKCk7DQokcGFnZV9pZCA9ICRjdXJjb250ZW50LT5JZCgpOw0KDQokbW9kaWZpZWRfZGF0ZSA9ICRjdXJjb250ZW50LT5nZXRNb2RpZmllZERhdGUoKTsNCiRtb2RpZmllZF9kYXRlID0gZGF0ZSgnWS1tLWRcVEg6aTpzUCcsJG1vZGlmaWVkX2RhdGUpOw0KDQovLyBLZXl3b3JkIGdlbmVyYXRvcg0KJGtleXdvcmRzID0gZXhwbG9kZSgnICcsJHRoaXMtPmdldFByZWZlcmVuY2UoJ2RlZmF1bHRfa2V5d29yZHMnLCcnKSk7DQoNCg0KJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgV0hFUkUgY29udGVudF9pZCA9ID8nOw0KaWYgKCEkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcGFnZV9pZCkpKSB7DQogIGVjaG8gIlByb2JsZW0gd2l0aCB0aGUgZGF0YWJhc2UhIFBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4iOw0KICBkaWU7DQp9DQoNCiRwYWdlX2luZm8gPSAkcmVzdWx0LT5mZXRjaFJvdygpOw0KDQppZiAoJHBhZ2VfaW5mb1sna2V5d29yZHMnXSAhPSAiIikgew0KCSRvdGhlcl9rZXl3b3JkcyA9IGFycmF5X2ZsaXAoZXhwbG9kZSgnICcsJHBhZ2VfaW5mb1sna2V5d29yZHMnXSkpOw0KfWVsc2V7DQoJJG90aGVyX2tleXdvcmRzID0gJHRoaXMtPmdldEtleXdvcmRTdWdnZXN0aW9ucygkcGFnZV9pZCk7DQp9DQoNCiRzZW9fa2V5d29yZHMgPSBpbXBsb2RlKCcsICcsYXJyYXlfdW5pcXVlKGFycmF5X21lcmdlKCRrZXl3b3JkcywgYXJyYXlfZmxpcCgkb3RoZXJfa2V5d29yZHMpKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdzZW9fa2V5d29yZHMnLCAkc2VvX2tleXdvcmRzKTsNCiR0aXRsZV9rZXl3b3JkcyA9IGltcGxvZGUoJyAnLGFycmF5X3VuaXF1ZShhcnJheV9tZXJnZSgka2V5d29yZHMsIGFycmF5X2ZsaXAoJG90aGVyX2tleXdvcmRzKSkpKTsNCiRzbWFydHktPmFzc2lnbigndGl0bGVfa2V5d29yZHMnLCAkdGl0bGVfa2V5d29yZHMpOw0KJHNtYXJ0eS0+YXNzaWduKCdkZWZhdWx0X2tleXdvcmRzJywgaW1wbG9kZSgnICcsICRrZXl3b3JkcykpOw0KJHNtYXJ0eS0+YXNzaWduKCdwYWdlX2tleXdvcmRzJywgaW1wbG9kZSgnICcsIGFycmF5X2ZsaXAoJG90aGVyX2tleXdvcmRzKSkpOw0KDQovLyBQYWdlIGRlc2NyaXB0aW9uDQokZGVzY3JpcHRpb25faWQgPSBzdHJfcmVwbGFjZSgnICcsJ18nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpKTsNCiRkZXNjcmlwdGlvbiA9IHN0cmlwX3RhZ3MoJGN1cmNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJGRlc2NyaXB0aW9uX2lkKSk7DQoNCmlmICgoJGRlc2NyaXB0aW9uID09ICIiKSAmJiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnLDEpID09IDEpKSB7DQogICRrdyA9IGFycmF5X2ZsaXAoJG90aGVyX2tleXdvcmRzKTsNCiAgJGxhc3Rfa2V5d29yZCA9IGFycmF5X3BvcCgka3cpOw0KICAka2V5d29yZHMgPSBpbXBsb2RlKCcsICcsJGt3KSAuICIgIiAuICR0aGlzLT5sYW5nKCdhbmQnKSAuICIgIiAuICRsYXN0X2tleXdvcmQ7DQogICRkZXNjcmlwdGlvbiA9IHN0cl9yZXBsYWNlKCd7a2V5d29yZHN9Jywka2V5d29yZHMsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG8nLCcnKSk7DQogICRkZXNjcmlwdGlvbiA9IHN0cl9yZXBsYWNlKCd7dGl0bGV9JywkY3VyY29udGVudC0+TmFtZSgpLCRkZXNjcmlwdGlvbik7DQogICRkZXNjcmlwdGlvbiA9ICR0aGlzLT5wcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkZGVzY3JpcHRpb24pOw0KfQ0KDQovLyBTaG93IGJhc2U/DQppZiAoJHBhcmFtc1snc2hvd2Jhc2UnXSAhPSAnZmFsc2UnKSB7DQoJZWNobyAiPGJhc2UgaHJlZj0nIi4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLiIvJyAvPlxuIjsNCn0NCg0KLy8gUGFnZSB0aXRsZQ0KJHRpdGxlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3RpdGxlJywne3RpdGxlfSB8IHtzaXRlbmFtZX0gLSB7c2VvX2tleXdvcmRzfScpOw0KJHRpdGxlID0gc3RyX3JlcGxhY2UoJ3t0aXRsZX0nLCRjdXJjb250ZW50LT5OYW1lKCksJHRpdGxlKTsNCiR0aXRsZSA9IHN0cl9yZXBsYWNlKCd7c2l0ZW5hbWV9JywkZ0Ntcy0+c2l0ZXByZWZzWydzaXRlbmFtZSddLCR0aXRsZSk7DQokdGl0bGUgPSBzdHJfcmVwbGFjZSgne3Nlb19rZXl3b3Jkc30nLCR0aXRsZV9rZXl3b3JkcywkdGl0bGUpOw0KJHRpdGxlID0gJHRoaXMtPnByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0aXRsZSk7DQoNCiRtZXRhX3RpdGxlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3RpdGxlX21ldGEnLCd7dGl0bGV9IHwge3NpdGVuYW1lfScpOw0KJG1ldGFfdGl0bGUgPSBzdHJfcmVwbGFjZSgne3RpdGxlfScsJGN1cmNvbnRlbnQtPk5hbWUoKSwkbWV0YV90aXRsZSk7DQokbWV0YV90aXRsZSA9IHN0cl9yZXBsYWNlKCd7c2l0ZW5hbWV9JywkdHBsX3ZhcnNbJ3NpdGVuYW1lJ10sJG1ldGFfdGl0bGUpOw0KJG1ldGFfdGl0bGUgPSBzdHJfcmVwbGFjZSgne3Nlb19rZXl3b3Jkc30nLCR0aXRsZV9rZXl3b3JkcywkbWV0YV90aXRsZSk7DQokbWV0YV90aXRsZSA9ICR0aGlzLT5wcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkbWV0YV90aXRsZSk7DQoNCiRvcGVuZ3JhcGhfdGl0bGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnLCd7dGl0bGV9Jyk7DQokb3BlbmdyYXBoX3RpdGxlID0gc3RyX3JlcGxhY2UoJ3t0aXRsZX0nLCRjdXJjb250ZW50LT5OYW1lKCksJG9wZW5ncmFwaF90aXRsZSk7DQokb3BlbmdyYXBoX3RpdGxlID0gJHRoaXMtPnByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCRvcGVuZ3JhcGhfdGl0bGUpOw0KDQplY2hvICI8dGl0bGU+Ii4kdGl0bGUuIjwvdGl0bGU+XG4iOw0KDQovLyBNRVRBIHRhZ3MgZm9yIGNvbnRlbnQgdHlwZSBldGMuDQplY2hvICI8bWV0YSBodHRwLWVxdWl2PSdDb250ZW50LVR5cGUnIGNvbnRlbnQ9J3RleHQvaHRtbDsgY2hhcnNldD0iLiRnQ21zLT5jb25maWdbJ2RlZmF1bHRfZW5jb2RpbmcnXS4iJyAvPlxuIjsNCmlmICgoJHBhZ2VfaW5mb1snaW5kZXhhYmxlJ10gPT0gIiIpIHx8ICgkcGFnZV9pbmZvWydpbmRleGFibGUnXSA9PSAiMSIpKSB7DQoJZWNobyAiPG1ldGEgbmFtZT0ncm9ib3RzJyBjb250ZW50PSdpbmRleCwgZm9sbG93JyAvPlxuIjsNCn1lbHNlew0KCWVjaG8gIjxtZXRhIG5hbWU9J3JvYm90cycgY29udGVudD0nbm9pbmRleCcgLz5cbiI7DQp9DQoNCmlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgndmVyaWZpY2F0aW9uJywnJykgIT0gJycpIHsNCgllY2hvICI8bWV0YSBuYW1lPSdnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24nIGNvbnRlbnQ9JyIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ3ZlcmlmaWNhdGlvbicsJycpLiInIC8+XG4iOw0KfQ0KDQovLyBTdGFuZGFyZCBNRVRBIHRhZ3MNCmlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9zdGFuZGFyZCcsMSkgPT0gMSkgew0KCWVjaG8gIjxtZXRhIG5hbWU9J3RpdGxlJyBjb250ZW50PSckbWV0YV90aXRsZScgLz5cbiI7DQoJZWNobyAiPG1ldGEgbmFtZT0nZGVzY3JpcHRpb24nIGNvbnRlbnQ9JyRkZXNjcmlwdGlvbicgLz5cbiI7DQogICAgZWNobyAiPG1ldGEgbmFtZT0na2V5d29yZHMnIGNvbnRlbnQ9JyRzZW9fa2V5d29yZHMnIC8+XG4iOw0KICAgIGVjaG8gIjxtZXRhIG5hbWU9J2RhdGUnIGNvbnRlbnQ9JyRtb2RpZmllZF9kYXRlJyAvPlxuIjsNCiAgICBlY2hvICI8bWV0YSBuYW1lPSdsYXN0dXBkYXRlJyBjb250ZW50PSckbW9kaWZpZWRfZGF0ZScgLz5cbiI7DQogICAgZWNobyAiPG1ldGEgbmFtZT0ncmV2aXNlZCcgY29udGVudD0nJG1vZGlmaWVkX2RhdGUnIC8+XG4iOw0KICAgIGVjaG8gIjxtZXRhIG5hbWU9J2F1dGhvcicgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9wdWJsaXNoZXInLCcnKS4iJyAvPlxuIjsNCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbG9jYXRpb24nLCcnKSAhPSAiIikgew0KICAgICAgZWNobyAiPG1ldGEgbmFtZT0nZ2VvLnBsYWNlbmFtZScgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb2NhdGlvbicsJycpLiInIC8+XG4iOw0KICAgIH0NCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJywnJykgIT0gIiIpIHsNCiAgICAgIGVjaG8gIjxtZXRhIG5hbWU9J2dlby5yZWdpb24nIGNvbnRlbnQ9JyIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJywnJykuIicgLz5cbiI7DQogICAgfQ0KICAgIGlmICgoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbGF0aXR1ZGUnLCcnKSAhPSAiIikgJiYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xvbmdpdHVkZScsJycpICE9ICIiKSkgew0KICAgICAgZWNobyAiPG1ldGEgbmFtZT0nZ2VvLnBvc2l0aW9uJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xhdGl0dWRlJywnJykuIjsiLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xvbmdpdHVkZScsJycpLiInIC8+XG4iOw0KICAgICAgZWNobyAiPG1ldGEgbmFtZT0nSUNCTScgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScsJycpLiIsICIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbG9uZ2l0dWRlJywnJykuIicgLz5cbiI7DQogICAgfQ0KfQ0KDQppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2FkZGl0aW9uYWxfbWV0YV90YWdzJywnJykgIT0gJycpIHsNCgllY2hvICR0aGlzLT5wcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWRkaXRpb25hbF9tZXRhX3RhZ3MnLCcnKSk7DQp9DQoNCi8vIER1YmxpbkNvcmUgTUVUQSB0YWdzDQppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfZHVibGluY29yZScsMCkgPT0gMSkgew0KICAgIGVjaG8gIjxsaW5rIHJlbD0nc2NoZW1hLkRDJyBocmVmPSdodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLycgLz5cbiI7DQogICAgZWNobyAiPGxpbmsgcmVsPSdzY2hlbWEuRENURVJNUycgaHJlZj0naHR0cDovL3B1cmwub3JnL2RjL3Rlcm1zLycgLz5cbiI7DQogICAgZWNobyAiPG1ldGEgbmFtZT0nREMudHlwZScgY29udGVudD0nVGV4dCcgc2NoZW1lPSdEQ1RFUk1TLkRDTUlUeXBlJyAvPlxuIjsNCiAgICBlY2hvICI8bWV0YSBuYW1lPSdEQy5mb3JtYXQnIGNvbnRlbnQ9J3RleHQvaHRtbCcgc2NoZW1lPSdEQ1RFUk1TLklNVCcgLz5cbiI7DQogICAgZWNobyAiPG1ldGEgbmFtZT0nREMucmVsYXRpb24nIGNvbnRlbnQ9J2h0dHA6Ly9kdWJsaW5jb3JlLm9yZy8nIHNjaGVtZT0nRENURVJNUy5VUkknIC8+XG4iOw0KICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLnB1Ymxpc2hlcicgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9wdWJsaXNoZXInLCcnKS4iJyAvPlxuIjsNCiAgICBlY2hvICI8bWV0YSBuYW1lPSdEQy5jb250cmlidXRvcicgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9jb250cmlidXRvcicsJycpLiInIC8+XG4iOw0KICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLmxhbmd1YWdlJyBjb250ZW50PSciLiRnQ21zLT5zaXRlcHJlZnNbJ2Zyb250ZW5kbGFuZyddLiInIHNjaGVtZT0nRENURVJNUy5SRkMzMDY2JyAvPlxuIjsNCiAgICBlY2hvICI8bWV0YSBuYW1lPSdEQy5yaWdodHMnIGNvbnRlbnQ9JyIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfY29weXJpZ2h0JywnJykuIicgLz5cbiI7DQogICAgZWNobyAiPG1ldGEgbmFtZT0nREMudGl0bGUnIGNvbnRlbnQ9JyRtZXRhX3RpdGxlJyAvPlxuIjsNCiAgICBlY2hvICI8bWV0YSBuYW1lPSdEQy5kZXNjcmlwdGlvbicgY29udGVudD0nJGRlc2NyaXB0aW9uJyAvPlxuIjsNCiAgICBlY2hvICI8bWV0YSBuYW1lPSdEQy5kYXRlJyBjb250ZW50PSckbW9kaWZpZWRfZGF0ZScgc2NoZW1lPSdEQ1RFUk1TLlczQ0RURicgLz5cbiI7DQogICAgZWNobyAiPG1ldGEgbmFtZT0nREMuaWRlbnRpZmllcicgY29udGVudD0nJHBhZ2VfdXJsJyBzY2hlbWU9J0RDVEVSTVMuVVJJJyAvPlxuIjsNCn0NCg0KLy8gT3BlbkdyYXBoIE1FVEEgdGFncw0KaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaCcsMCkgPT0gMSkgew0KICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzp0aXRsZScgY29udGVudD0nJG9wZW5ncmFwaF90aXRsZScgLz5cbiI7DQogICAgaWYgKCRwYWdlX2luZm9bJ29ndHlwZSddID09ICIiKSB7DQogICAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6dHlwZScgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdHlwZScsJycpLiInIC8+XG4iOw0KICAgIH1lbHNlew0KICAgICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J29nOnR5cGUnIGNvbnRlbnQ9JyIuJHBhZ2VfaW5mb1snb2d0eXBlJ10uIicgLz5cbiI7DQogICAgfQ0KICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzp1cmwnIGNvbnRlbnQ9JyRwYWdlX3VybCcgLz5cbiI7DQogICAgDQogICAgCQ0KICAgIGlmICgoJGN1cmNvbnRlbnQtPlByb3BlcnRpZXMoKS0+R2V0VmFsdWUoJ2ltYWdlJykgIT0gLTEpICYmICgkY3VyY29udGVudC0+UHJvcGVydGllcygpLT5HZXRWYWx1ZSgnaW1hZ2UnKSAhPSAiIikpICB7DQogICAgCSRpbWFnZSA9ICRjdXJjb250ZW50LT5Qcm9wZXJ0aWVzKCktPkdldFZhbHVlKCdpbWFnZScpOw0KICAgIAkNCiAgICB9ZWxzZXsNCiAgICAJJGltYWdlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2ltYWdlJywnJyk7DQogICAgfQ0KICAgIA0KICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzppbWFnZScgY29udGVudD0nIi4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLiIvdXBsb2Fkcy9pbWFnZXMvJGltYWdlJyAvPlxuIjsNCi8vICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzpzaXRlX25hbWUnIGNvbnRlbnQ9JyIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3NpdGVuYW1lJywkZ0Ntcy0+R2V0UHJlZmVyZW5jZSgnc2l0ZW5hbWUnKSkuIicgLz5cbiI7DQogICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J29nOnNpdGVfbmFtZScgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnLCRnQ21zLT5jbXNfc2l0ZXByZWZzKCdzaXRlbmFtZScpKS4iJyAvPlxuIjsNCiAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6ZGVzY3JpcHRpb24nIGNvbnRlbnQ9JyRkZXNjcmlwdGlvbicgLz5cbiI7DQogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbicsJycpICE9ICIiKSB7DQogICAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nZmI6YXBwX2lkJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbicsJycpLiInIC8+XG4iOw0KICAgIH1lbHNlew0KICAgICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J2ZiOmFkbWlucycgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfYWRtaW5zJywnJykuIicgLz5cbiI7DQogICAgfQ0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb2NhdGlvbicsJycpICE9ICIiKSB7DQogICAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6bG9jYWxpdHknIGNvbnRlbnQ9JyIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbG9jYXRpb24nLCcnKS4iJyAvPlxuIjsNCiAgICB9DQogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3JlZ2lvbicsJycpICE9ICIiKSB7DQogICAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6cmVnaW9uJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3JlZ2lvbicsJycpLiInIC8+XG4iOw0KICAgIH0NCiAgICBpZiAoKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xhdGl0dWRlJywnJykgIT0gIiIpICYmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb25naXR1ZGUnLCcnKSAhPSAiIikpIHsNCiAgICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzpsYXRpdHVkZScgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScsJycpLiInIC8+XG4iOw0KICAgICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J29nOmxvbmdpdHVkZScgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb25naXR1ZGUnLCcnKS4iJyAvPlxuIjsNCiAgICB9DQp9DQoNCi8vIEltYWdlLUxpbmsNCg0KLy9pZiAoKCRjdXJjb250ZW50LT5HZXRQcm9wZXJ0eVZhbHVlKCdpbWFnZScpICE9IC0xKSAmJiAoJGN1cmNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJ2ltYWdlJykgIT0gIiIpKSAgew0KICAgIGlmICgoJGN1cmNvbnRlbnQtPlByb3BlcnRpZXMoKS0+R2V0VmFsdWUoJ2ltYWdlJykgIT0gLTEpICYmICgkY3VyY29udGVudC0+UHJvcGVydGllcygpLT5HZXRWYWx1ZSgnaW1hZ2UnKSAhPSAiIikpICB7DQplY2hvICI8bGluayByZWw9J2ltYWdlX3NyYycgaHJlZj0nIi4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLiIvdXBsb2Fkcy9pbWFnZXMvIi4kY3VyY29udGVudC0+UHJvcGVydGllcygpLT5HZXRWYWx1ZSgnaW1hZ2UnKS4iJyAvPiI7DQp9DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQppZiAoISAkdGhpcy0+Q2hlY2tBY2Nlc3MoKSkNCiAgICB7DQogICAgcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7DQogICAgfQ0KDQovKiAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0KDQogICBDb2RlIGZvciBTRU9Ub29sczIgImRlZmF1bHRhZG1pbiIgYWRtaW4gYWN0aW9uDQogICANCiAgIC09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tDQogICANCiAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGRpc3BsYXkgc29tZXRoaW5nIGZyb20gYSB0ZW1wbGF0ZQ0KICAgb3IgZG8gc29tZSBvdGhlciB0YXNrLg0KICAgDQoqLw0KJGRiID0gJiRnQ21zLT5HZXREYigpOw0KLy8gRG8gdGhlIGFjdGlvbg0KaWYgKGlzc2V0KCRfR0VUWyd3aGF0J10pICYmICRfR0VUWyd3aGF0J10gPT0gJ3RvZ2dsZV9pbmRleCcpIHsNCiAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBXSEVSRSBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddOw0KICAgICRyZXN1bHQgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgJGluZm8gPSAkcmVzdWx0LT5mZXRjaFJvdygpOw0KICAgIGlmICgkaW5mb1snaW5kZXhhYmxlJ10gPT0gIjEiKSB7DQogICAgICAgICRxdWVyeSA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgU0VUIGluZGV4YWJsZSA9IDAgV0hFUkUgY29udGVudF9pZCA9ICcuJF9HRVRbJ2NvbnRlbnRfaWQnXTsNCiAgICB9ZWxzZXsNCiAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFNFVCBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddLicsIGluZGV4YWJsZSA9IDAgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgaW5kZXhhYmxlID0gMSc7DQogICAgfQ0KICAgICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgIA0KICAgIA0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3JvYm90cycsMSkgPT0gMSkgew0KICAgICAgICAkdGhpcy0+Y3JlYXRlUm9ib3RzVFhUKCk7DQogICAgfQ0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnLDEpID09IDEpIHsNCiAgICAgICAgJHRoaXMtPmNyZWF0ZVNpdGVtYXAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcsMSkgPT0gMSk7DQogICAgfQ0KICAgICRfR0VUWyd0YWInXSA9ICdwYWdlZGVzY3JpcHRpb25zJzsNCn0NCg0KaWYgKGlzc2V0KCRfR0VUWyd3aGF0J10pICYmICRfR0VUWyd3aGF0J10gPT0gJ3NldF9wcmlvcml0eScpIHsNCiAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgU0VUIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ10uJywgcHJpb3JpdHkgPSAnLiRfR0VUWydwcmlvcml0eSddLicgT04gRFVQTElDQVRFIEtFWSBVUERBVEUgcHJpb3JpdHkgPSAnLiRfR0VUWydwcmlvcml0eSddOw0KICAgICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgICRfR0VUWyd0YWInXSA9ICdwYWdlZGVzY3JpcHRpb25zJzsNCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJywxKSA9PSAxKSB7DQogICAgICAgICR0aGlzLT5jcmVhdGVTaXRlbWFwKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwdXNoX3NpdGVtYXAnLDEpID09IDEpOw0KICAgIH0NCn0NCg0KaWYgKGlzc2V0KCRfR0VUWyd3aGF0J10pICYmICRfR0VUWyd3aGF0J10gPT0gJ3Jlc2V0X3ByaW9yaXR5Jykgew0KICAgICRxdWVyeSA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgU0VUIHByaW9yaXR5ID0gTlVMTCBXSEVSRSBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddOw0KICAgICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgICRfR0VUWyd0YWInXSA9ICdwYWdlZGVzY3JpcHRpb25zJzsNCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJywxKSA9PSAxKSB7DQogICAgICAgICR0aGlzLT5jcmVhdGVTaXRlbWFwKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwdXNoX3NpdGVtYXAnLDEpID09IDEpOw0KICAgIH0NCn0NCg0KaWYgKGlzc2V0KCRfR0VUWyd3aGF0J10pICYmICRfR0VUWyd3aGF0J10gPT0gJ3Jlc2V0X29ndHlwZScpIHsNCiAgICAkcXVlcnkgPSAnVVBEQVRFICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFNFVCBvZ3R5cGUgPSBOVUxMIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ107DQogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgJF9HRVRbJ3RhYiddID0gJ3BhZ2VkZXNjcmlwdGlvbnMnOw0KfQ0KDQppZiAoaXNzZXQoJF9HRVRbJ3doYXQnXSkgJiYgJF9HRVRbJ3doYXQnXSA9PSAncmVzZXRfa2V5d29yZHMnKSB7DQogICAgJHF1ZXJ5ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBTRVQga2V5d29yZHMgPSBOVUxMIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ107DQogICAgJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgJF9HRVRbJ3RhYiddID0gJ3BhZ2VkZXNjcmlwdGlvbnMnOw0KfQ0KDQppZiAoaXNzZXQoJF9HRVRbJ3doYXQnXSkgJiYgJF9HRVRbJ3doYXQnXSA9PSAnZWRpdF9vZ3R5cGUnKSB7DQogICAgZWNobyAkdGhpcy0+UmVkaXJlY3QobnVsbCwgJ2VkaXRfb2d0eXBlJywgJHRoaXMtPnJldHVybmlkLCBBcnJheSgnY29udGVudF9pZCc9PiRfR0VUWydjb250ZW50X2lkJ10pKTsNCn0NCg0KaWYgKGlzc2V0KCRfR0VUWyd3aGF0J10pICYmICRfR0VUWyd3aGF0J10gPT0gJ2VkaXRfa2V5d29yZHMnKSB7DQogICAgZWNobyAkdGhpcy0+UmVkaXJlY3QobnVsbCwgJ2VkaXRfa2V5d29yZHMnLCAkdGhpcy0+cmV0dXJuaWQsIEFycmF5KCdjb250ZW50X2lkJz0+JF9HRVRbJ2NvbnRlbnRfaWQnXSkpOw0KfQ0KICAgIA0KICAgIA0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0YWJfaGVhZGVycycsJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpLg0KICAgICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3Nlb2FsZXJ0cycsJHRoaXMtPkxhbmcoJ3RpdGxlX3Nlb2FsZXJ0cycpKS4NCiAgICAkdGhpcy0+U2V0VGFiSGVhZGVyKCdwYWdlZGVzY3JpcHRpb25zJywkdGhpcy0+TGFuZygndGl0bGVfcGFnZWRlc2NyaXB0aW9ucycpLCAoaXNzZXQoJF9HRVRbJ3RhYiddKSAmJiAkX0dFVFsndGFiJ10gPT0gJ3BhZ2VkZXNjcmlwdGlvbnMnKSkuDQogICAgJHRoaXMtPlNldFRhYkhlYWRlcignbWV0YXNldHRpbmdzJywkdGhpcy0+TGFuZygndGl0bGVfbWV0YXNldHRpbmdzJyksIChpc3NldCgkX0dFVFsndGFiJ10pICYmICRfR0VUWyd0YWInXSA9PSAnbWV0YXNldHRpbmdzJykpLg0KICAgICR0aGlzLT5TZXRUYWJIZWFkZXIoJ3NpdGVtYXBzZXR0aW5ncycsJHRoaXMtPkxhbmcoJ3RpdGxlX3NpdGVtYXBzZXR0aW5ncycpLCAoaXNzZXQoJF9HRVRbJ3RhYiddKSAmJiAkX0dFVFsndGFiJ10gPT0gJ3NpdGVtYXBzZXR0aW5ncycpKS4NCiAgICAkdGhpcy0+U2V0VGFiSGVhZGVyKCdrZXl3b3Jkc2V0dGluZ3MnLCR0aGlzLT5MYW5nKCd0aXRsZV9rZXl3b3Jkc2V0dGluZ3MnKSwgKGlzc2V0KCRfR0VUWyd0YWInXSkgJiYgJF9HRVRbJ3RhYiddID09ICdrZXl3b3Jkc2V0dGluZ3MnKSkuDQogICAgJHRoaXMtPkVuZFRhYkhlYWRlcnMoKS4kdGhpcy0+U3RhcnRUYWJDb250ZW50KCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdlbmRfdGFiJywkdGhpcy0+RW5kVGFiKCkpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0YWJfZm9vdGVycycsJHRoaXMtPkVuZFRhYkNvbnRlbnQoKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X3Nlb2FsZXJ0c190YWInLCR0aGlzLT5TdGFydFRhYignc2VvYWxlcnRzJykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9wYWdlZGVzY3JpcHRpb25zX3RhYicsJHRoaXMtPlN0YXJ0VGFiKCdwYWdlZGVzY3JpcHRpb25zJykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9tZXRhc2V0dGluZ3NfdGFiJywkdGhpcy0+U3RhcnRUYWIoJ21ldGFzZXR0aW5ncycpKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfc2l0ZW1hcHNldHRpbmdzX3RhYicsJHRoaXMtPlN0YXJ0VGFiKCdzaXRlbWFwc2V0dGluZ3MnKSk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3N0YXJ0X2tleXdvcmRzZXR0aW5nc190YWInLCR0aGlzLT5TdGFydFRhYigna2V5d29yZHNldHRpbmdzJykpOw0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9zZWN0aW9uJywnZGVmYXVsdGFkbWluJyk7DQoNCmlmIChpc3NldCgkX0dFVFsnbWVzc2FnZSddKSkgew0KICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21lc3NhZ2UnLCR0aGlzLT5zaG93TWVzc2FnZSgkdGhpcy0+bGFuZygkX0dFVFsnbWVzc2FnZSddKSkpOw0KfQ0KDQovKiBTRU8gQWxlcnRzIFRhYiAqLw0KDQokYWxlcnRzICA9ICR0aGlzLT5DcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdhbGVydHNfdXJnZW50JywgJHRoaXMtPkxhbmcoJ3RpdGxlX2FsZXJ0c191cmdlbnQnKSk7DQoNCiR1cmdlbnRfYWxlcnRzID0gJHRoaXMtPmdldFVyZ2VudEFsZXJ0cygpOw0KDQppZiAoY291bnQoJHVyZ2VudF9hbGVydHMpID09IDApIHsNCiAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vdHJ1ZS5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+ICcuJHRoaXMtPmxhbmcoJ25vdGhpbmdfdG9fYmVfZml4ZWQnKS4nPGJyIC8+PGJyIC8+JzsNCn1lbHNlew0KICAkZ3JvdXBzID0gQXJyYXkoKTsNCiAgZm9yZWFjaCAoJHVyZ2VudF9hbGVydHMgYXMgJGFsZXJ0KSB7DQogICAgJGdyb3Vwc1skYWxlcnRbJ2dyb3VwJ11dW10gPSAkYWxlcnQ7DQogIH0NCiAgZm9yZWFjaCgkZ3JvdXBzIGFzICRncm91cCA9PiAkZ2FsZXJ0cykgew0KICAJJGNvdW50ID0gY291bnQoJGdhbGVydHMpOw0KICAgIGlmIChjb3VudCgkZ2FsZXJ0cykgPiAyMCkgew0KICAgICAgICAkcGFydHMgPSBhcnJheV9jaHVuaygkZ2FsZXJ0cywgMjApOw0KICAgICAgICAkZ2FsZXJ0cyA9ICRwYXJ0c1swXTsNCiAgICAgICAgJGNvdW50ID0gIj4gMjAiOw0KICAgIH0NCiAgICBpZiAoY291bnQoJGdhbGVydHMpID09IDEpIHsNCiAgICAgICAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9Ob3RpZmljYXRpb25zLzEuZ2lmIiBhbGlnbj0iYWJzbWlkZGxlIiAvPiA8Yj4nLiRnYWxlcnRzWzBdWydtZXNzYWdlJ10uJzwvYj4gWycuaW1wbG9kZSgnIHwgJywkZ2FsZXJ0c1swXVsnbGlua3MnXSkuJ108YnIgLz48YnIgLz4nOw0KICAgIH1lbHNlew0KICAgICAgJGdyb3VwX3RpdGxlID0gJHRoaXMtPmxhbmcoJ2dyb3VwdGl0bGVfJy4kZ3JvdXAsIEFycmF5KCRjb3VudCkpOw0KICAgICAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9Ob3RpZmljYXRpb25zLzEuZ2lmIiBhbGlnbj0iYWJzbWlkZGxlIiAvPiA8Yj4nLiRncm91cF90aXRsZS4nPC9iPiBbPGEgaHJlZj0iamF2YXNjcmlwdDp2b2lkKG51bGwpIiBvbkNsaWNrPSJkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcJ3VyZ2VudF9ncm91cF8nLiRncm91cC4nXCcpLnN0eWxlLmRpc3BsYXkgPSBcJ2Jsb2NrXCciPicuJHRoaXMtPmxhbmcoJ3ZpZXdfYWxsJykuJzwvYT5dPGJyIC8+PGJyIC8+JzsNCiAgICAgICRhbGVydHMgLj0gJzxkaXYgaWQ9InVyZ2VudF9ncm91cF8nLiRncm91cC4nIiBzdHlsZT0icGFkZGluZy1sZWZ0OiAzMHB4OyBkaXNwbGF5OiBub25lOyI+JzsNCiAgICAgIGZvcmVhY2ggKCRnYWxlcnRzIGFzICRhbGVydCkgew0KICAgICAgICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL05vdGlmaWNhdGlvbnMvMS5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+IDxiPicuJGFsZXJ0WydtZXNzYWdlJ10uJzwvYj4gWycuaW1wbG9kZSgnIHwgJywkYWxlcnRbJ2xpbmtzJ10pLiddPGJyIC8+PGJyIC8+JzsNCiAgICAgIH0NCiAgICAgICRhbGVydHMgLj0gJzwvZGl2Pic7DQogICAgfQ0KICB9DQp9DQoNCiRhbGVydHMgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0RW5kKCk7DQoNCiRhbGVydHMgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ2FsZXJ0c19pbXBvcnRhbnQnLCAkdGhpcy0+TGFuZygndGl0bGVfYWxlcnRzX2ltcG9ydGFudCcpKTsNCg0KJGltcG9ydGFudF9hbGVydHMgPSAkdGhpcy0+Z2V0SW1wb3J0YW50QWxlcnRzKCk7DQppZiAoY291bnQoJGltcG9ydGFudF9hbGVydHMpID09IDApIHsNCiAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vdHJ1ZS5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+ICcuJHRoaXMtPmxhbmcoJ25vdGhpbmdfdG9fYmVfZml4ZWQnKS4nPGJyIC8+PGJyIC8+JzsNCn1lbHNlew0KICAkZ3JvdXBzID0gQXJyYXkoKTsNCiAgZm9yZWFjaCAoJGltcG9ydGFudF9hbGVydHMgYXMgJGFsZXJ0KSB7DQogICAgJGdyb3Vwc1skYWxlcnRbJ2dyb3VwJ11dW10gPSAkYWxlcnQ7DQogIH0NCiAgZm9yZWFjaCgkZ3JvdXBzIGFzICRncm91cCA9PiAkZ2FsZXJ0cykgew0KICAgICRjb3VudCA9IGNvdW50KCRnYWxlcnRzKTsNCiAgICBpZiAoY291bnQoJGdhbGVydHMpID4gMjApIHsNCiAgICAgICAgJHBhcnRzID0gYXJyYXlfY2h1bmsoJGdhbGVydHMsIDIwKTsNCiAgICAgICAgJGdhbGVydHMgPSAkcGFydHNbMF07DQogICAgICAgICRjb3VudCA9ICI+IDIwIjsNCiAgICB9DQogICAgaWYgKGNvdW50KCRnYWxlcnRzKSA9PSAxKSB7DQogICAgICAgICRhbGVydHMgLj0gJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvTm90aWZpY2F0aW9ucy8yLmdpZiIgYWxpZ249ImFic21pZGRsZSIgLz4gPGI+Jy4kZ2FsZXJ0c1swXVsnbWVzc2FnZSddLic8L2I+IFsnLmltcGxvZGUoJyB8ICcsJGdhbGVydHNbMF1bJ2xpbmtzJ10pLiddPGJyIC8+PGJyIC8+JzsNCiAgICB9ZWxzZXsNCiAgICAgICRncm91cF90aXRsZSA9ICR0aGlzLT5sYW5nKCdncm91cHRpdGxlXycuJGdyb3VwLCBBcnJheSgkY291bnQpKTsNCiAgICAgICRhbGVydHMgLj0gJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvTm90aWZpY2F0aW9ucy8yLmdpZiIgYWxpZ249ImFic21pZGRsZSIgLz4gPGI+Jy4kZ3JvdXBfdGl0bGUuJzwvYj4gWzxhIGhyZWY9ImphdmFzY3JpcHQ6dm9pZChudWxsKSIgb25DbGljaz0iZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCdpbXBvcnRhbnRfZ3JvdXBfJy4kZ3JvdXAuJ1wnKS5zdHlsZS5kaXNwbGF5ID0gXCdibG9ja1wnIj4nLiR0aGlzLT5sYW5nKCd2aWV3X2FsbCcpLic8L2E+XTxiciAvPjxiciAvPic7DQogICAgICAkYWxlcnRzIC49ICc8ZGl2IGlkPSJpbXBvcnRhbnRfZ3JvdXBfJy4kZ3JvdXAuJyIgc3R5bGU9InBhZGRpbmctbGVmdDogMzBweDsgZGlzcGxheTogbm9uZTsiPic7DQogICAgICBmb3JlYWNoICgkZ2FsZXJ0cyBhcyAkYWxlcnQpIHsNCiAgICAgICAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9Ob3RpZmljYXRpb25zLzIuZ2lmIiBhbGlnbj0iYWJzbWlkZGxlIiAvPiA8Yj4nLiRhbGVydFsnbWVzc2FnZSddLic8L2I+IFsnLmltcGxvZGUoJyB8ICcsJGFsZXJ0WydsaW5rcyddKS4nXTxiciAvPjxiciAvPic7DQogICAgICB9DQogICAgICAkYWxlcnRzIC49ICc8L2Rpdj4nOw0KICAgIH0NCiAgfQ0KfQ0KDQokYWxlcnRzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldEVuZCgpOw0KDQokYWxlcnRzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdhbGVydHNfbm90aWNlcycsICR0aGlzLT5MYW5nKCd0aXRsZV9hbGVydHNfbm90aWNlcycpKTsNCg0KJG5vdGljZV9hbGVydHMgPSAkdGhpcy0+Z2V0Tm90aWNlQWxlcnRzKCk7DQppZiAoY291bnQoJG5vdGljZV9hbGVydHMpID09IDApIHsNCiAgJGFsZXJ0cyAuPSAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vdHJ1ZS5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+ICcuJHRoaXMtPmxhbmcoJ25vdGhpbmdfdG9fYmVfZml4ZWQnKS4nPGJyIC8+PGJyIC8+JzsNCn1lbHNlew0KICBmb3JlYWNoICgkbm90aWNlX2FsZXJ0cyBhcyAkYWxlcnQpIHsNCiAgICAkYWxlcnRzIC49ICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL05vdGlmaWNhdGlvbnMvMy5naWYiIGFsaWduPSJhYnNtaWRkbGUiIC8+IDxiPicuJGFsZXJ0WydtZXNzYWdlJ10uJzwvYj4gWycuaW1wbG9kZSgnIHwgJywkYWxlcnRbJ2xpbmtzJ10pLiddPGJyIC8+PGJyIC8+JzsNCiAgfQ0KfQ0KDQokYWxlcnRzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldEVuZCgpOw0KDQoNCg0KLyogUGFnZSBzZXR0aW5ncyBUYWIgKi8NCg0KJHBhZ2VzZXR0aW5ncyAgPSAnPHRhYmxlIGNsYXNzPSJwYWdldGFibGUiPic7DQokcGFnZXNldHRpbmdzIC49ICc8dHI+JzsNCiRwYWdlc2V0dGluZ3MgLj0gJzx0aD4nLiR0aGlzLT5sYW5nKCdwYWdlX2lkJykuJzwvdGg+JzsNCiRwYWdlc2V0dGluZ3MgLj0gJzx0aD4nLiR0aGlzLT5sYW5nKCdwYWdlX25hbWUnKS4nPC90aD4nOw0KJHBhZ2VzZXR0aW5ncyAuPSAnPHRoPicuJHRoaXMtPmxhbmcoJ3ByaW9yaXR5JykuJzwvdGg+JzsNCiRwYWdlc2V0dGluZ3MgLj0gJzx0aD4nLiR0aGlzLT5sYW5nKCdvZ190eXBlJykuJzwvdGg+JzsNCiRwYWdlc2V0dGluZ3MgLj0gJzx0aD4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkcycpLic8L3RoPic7DQokcGFnZXNldHRpbmdzIC49ICc8dGg+Jy4kdGhpcy0+bGFuZygnZGVzY3JpcHRpb24nKS4nPC90aD4nOw0KJHBhZ2VzZXR0aW5ncyAuPSAnPHRoPicuJHRoaXMtPmxhbmcoJ2luZGV4JykuJzwvdGg+JzsNCiRwYWdlc2V0dGluZ3MgLj0gJzwvdHI+JzsNCg0KDQokcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudCBPUkRFUiBCWSBoaWVyYXJjaHkgQVNDJzsNCiRyZXN1bHQgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoNCiRqID0gMDsNCndoaWxlICgkcGFnZSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsNCgkNCiAgICAkcHJlZml4ID0gIiI7DQogICAgJGF1dG9fcHJpb3JpdHkgPSA4MDsNCiAgICBmb3IgKCRpID0gMDsgJGkgPCBzdWJzdHJfY291bnQoJHBhZ2VbJ2hpZXJhcmNoeSddLCcuJyk7ICRpKyspIHsNCiAgICAgICAgJHByZWZpeCAuPSAnJnJhcXVvOyAnOw0KICAgICAgICAkYXV0b19wcmlvcml0eSAgPSAkYXV0b19wcmlvcml0eSAvIDI7DQogICAgfQ0KICAgIGlmICgkcGFnZVsnZGVmYXVsdF9jb250ZW50J10gPT0gMSkgew0KICAgICAgICAkYXV0b19wcmlvcml0eSA9IDEwMDsNCiAgICB9DQogICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnRfcHJvcHMgV0hFUkUgY29udGVudF9pZCA9ICcuJHBhZ2VbJ2NvbnRlbnRfaWQnXS4nIEFORCBwcm9wX25hbWUgPSAiJy5zdHJfcmVwbGFjZSgnICcsJ18nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpKS4nIic7DQogICAgJHJlc3VsdDEgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgJGRlc2MgPSAkcmVzdWx0MS0+ZmV0Y2hSb3coKTsNCiAgICAkZGVzY3JpcHRpb24gPSAkZGVzY1snY29udGVudCddOw0KDQogICAgJGt3ID0gYXJyYXlfZmxpcCgkdGhpcy0+Z2V0S2V5d29yZFN1Z2dlc3Rpb25zKCRwYWdlWydjb250ZW50X2lkJ10pKTsNCiAgICANCiAgICAkZGVzY3JpcHRpb25fYXV0byA9IGZhbHNlOw0KICAgIGlmICgoJGRlc2NyaXB0aW9uID09ICIiKSAmJiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnLCdmYWxzZScpID09ICd0cnVlJykpIHsNCiAgICAJJGxhc3Rfa2V5d29yZCA9IGFycmF5X3BvcCgka3cpOw0KICAgIAkka2V5d29yZHMgPSBpbXBsb2RlKCcsICcsJGt3KSAuICIgIiAuICR0aGlzLT5sYW5nKCdhbmQnKSAuICIgIiAuICRsYXN0X2tleXdvcmQ7DQogICAgCSRkZXNjcmlwdGlvbiA9ICR0aGlzLT5sYW5nKCdhdXRvX2dlbmVyYXRlZCcpLiI6ICIuc3RyX3JlcGxhY2UoJ3trZXl3b3Jkc30nLCRrZXl3b3JkcywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0bycsJycpKTsNCiAgICAJJGRlc2NyaXB0aW9uID0gc3RyX3JlcGxhY2UoJ3t0aXRsZX0nLCRwYWdlWydjb250ZW50X25hbWUnXSwkZGVzY3JpcHRpb24pOw0KICAgIAkkZGVzY3JpcHRpb25fYXV0byA9IHRydWU7DQogICAgfQ0KICAgIA0KICAgICRkZWZhdWx0X29ndHlwZSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90eXBlJywnJyk7DQoNCiAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBXSEVSRSBjb250ZW50X2lkID0gJy4kcGFnZVsnY29udGVudF9pZCddOw0KICAgICRyZXN1bHQyID0mICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgICRpbmZvID0gJHJlc3VsdDItPmZldGNoUm93KCk7DQogICAgICAgIA0KICAgICRwcmlvcml0eSA9ICcoYXV0bykgJy4kYXV0b19wcmlvcml0eS4nJSAnOw0KICAgICRvZ3R5cGUgPSAnKGRlZmF1bHQpICcuJGRlZmF1bHRfb2d0eXBlLicgJy4kdGhpcy0+Q3JlYXRlVG9vbHRpcExpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvU0VPVG9vbHMyL2ltZy9lZGl0LnBuZyIgYWxpZ249ImFic21pZGRsZSIgLz4nLCAkdGhpcy0+bGFuZygnZWRpdF92YWx1ZScpLCBBcnJheSgid2hhdCI9PiJlZGl0X29ndHlwZSIsImNvbnRlbnRfaWQiPT4kcGFnZVsnY29udGVudF9pZCddKSk7DQogICAgJGtleXdvcmRzID0gJyhhdXRvKSAnLmNvdW50KCRrdykuJyAnLiR0aGlzLT5DcmVhdGVUb29sdGlwTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9TRU9Ub29sczIvaW1nL2VkaXQucG5nIiBhbGlnbj0iYWJzbWlkZGxlIiAvPicsIGltcGxvZGUoJywgJywka3cpLic7ICcuJHRoaXMtPmxhbmcoJ2VkaXRfdmFsdWUnKSwgQXJyYXkoIndoYXQiPT4iZWRpdF9rZXl3b3JkcyIsImNvbnRlbnRfaWQiPT4kcGFnZVsnY29udGVudF9pZCddKSk7DQogICAgJGluZGV4YWJsZSA9ICd0cnVlJzsNCiAgICBpZiAoJGluZm9bJ2NvbnRlbnRfaWQnXSAhPSAiIikgew0KICAgICAgICBpZiAoJGluZm9bJ3ByaW9yaXR5J10gIT0gMCkgew0KICAgICAgICAgICRwcmlvcml0eSA9ICc8Yj4nLiRpbmZvWydwcmlvcml0eSddIC4gJyUgJy4kdGhpcy0+Q3JlYXRlVG9vbHRpcExpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvU0VPVG9vbHMyL2ltZy9yZXNldC5wbmciIGFsaWduPSJhYnNtaWRkbGUiIC8+JywgJHRoaXMtPmxhbmcoJ3Jlc2V0X3RvX2RlZmF1bHQnKSwgQXJyYXkoIndoYXQiPT4icmVzZXRfcHJpb3JpdHkiLCJjb250ZW50X2lkIj0+JHBhZ2VbJ2NvbnRlbnRfaWQnXSkpIC4gJzwvYj4nOw0KICAgICAgICAgICRhdXRvX3ByaW9yaXR5ID0gJGluZm9bJ3ByaW9yaXR5J107DQogICAgICAgIH0NCiAgICAgICAgaWYgKCRpbmZvWydvZ3R5cGUnXSAhPSAiIikgew0KICAgICAgICAgICRvZ3R5cGUgPSAnPGI+Jy4kaW5mb1snb2d0eXBlJ10gLiAnICcgLiAkdGhpcy0+Q3JlYXRlVG9vbHRpcExpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAnPGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvU0VPVG9vbHMyL2ltZy9yZXNldC5wbmciIGFsaWduPSJhYnNtaWRkbGUiIC8+JywgJHRoaXMtPmxhbmcoJ3Jlc2V0X3RvX2RlZmF1bHQnKSwgQXJyYXkoIndoYXQiPT4icmVzZXRfb2d0eXBlIiwiY29udGVudF9pZCI9PiRwYWdlWydjb250ZW50X2lkJ10pKSAuICR0aGlzLT5DcmVhdGVUb29sdGlwTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9TRU9Ub29sczIvaW1nL2VkaXQucG5nIiBhbGlnbj0iYWJzbWlkZGxlIiAvPicsICR0aGlzLT5sYW5nKCdlZGl0X3ZhbHVlJyksIEFycmF5KCJ3aGF0Ij0+ImVkaXRfb2d0eXBlIiwiY29udGVudF9pZCI9PiRwYWdlWydjb250ZW50X2lkJ10pKS4nPC9iPic7DQogICAgICAgIH0NCiAgICAgICAgaWYgKCRpbmZvWydrZXl3b3JkcyddICE9ICIiKSB7DQogICAgICAgICAgICAka2V5d29yZHMgPSAnPGI+Jy5jb3VudChleHBsb2RlKCcgJywkaW5mb1sna2V5d29yZHMnXSkpIC4gJHRoaXMtPkNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy9tb2R1bGVzL1NFT1Rvb2xzMi9pbWcvcmVzZXQucG5nIiBhbGlnbj0iYWJzbWlkZGxlIiAvPicsICR0aGlzLT5sYW5nKCdyZXNldF90b19kZWZhdWx0JyksIEFycmF5KCJ3aGF0Ij0+InJlc2V0X2tleXdvcmRzIiwiY29udGVudF9pZCI9PiRwYWdlWydjb250ZW50X2lkJ10pKSAuICR0aGlzLT5DcmVhdGVUb29sdGlwTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9TRU9Ub29sczIvaW1nL2VkaXQucG5nIiBhbGlnbj0iYWJzbWlkZGxlIiAvPicsICR0aGlzLT5sYW5nKCdlZGl0X3ZhbHVlJyksIEFycmF5KCJ3aGF0Ij0+ImVkaXRfa2V5d29yZHMiLCJjb250ZW50X2lkIj0+JHBhZ2VbJ2NvbnRlbnRfaWQnXSkpLic8L2I+JzsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoJGluZm9bJ2luZGV4YWJsZSddID09IDApIHsNCiAgICAgICAgICAkaW5kZXhhYmxlID0gJ2ZhbHNlJzsNCiAgICAgICAgfQ0KICAgIH0NCiAgICANCiAgICAkdXBkb3duICA9ICR0aGlzLT5DcmVhdGVUb29sdGlwTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgJycsICc8aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL3N5c3RlbS9hcnJvdy1kLmdpZiIgYm9yZGVyPSIwIiBhbGlnbj0iYWJzbWlkZGxlIiAvPicsICR0aGlzLT5sYW5nKCdkZWNyZWFzZV9wcmlvcml0eScpLCBBcnJheSgnd2hhdCc9PidzZXRfcHJpb3JpdHknLCdwcmlvcml0eSc9PiRhdXRvX3ByaW9yaXR5LTEwLCdjb250ZW50X2lkJz0+JHBhZ2VbJ2NvbnRlbnRfaWQnXSkpOw0KICAgICR1cGRvd24gLj0gJHRoaXMtPkNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvc3lzdGVtL2Fycm93LXUuZ2lmIiBib3JkZXI9IjAiIGFsaWduPSJhYnNtaWRkbGUiIC8+JywgJHRoaXMtPmxhbmcoJ2luY3JlYXNlX3ByaW9yaXR5JyksIEFycmF5KCd3aGF0Jz0+J3NldF9wcmlvcml0eScsJ3ByaW9yaXR5Jz0+JGF1dG9fcHJpb3JpdHkrMTAsJ2NvbnRlbnRfaWQnPT4kcGFnZVsnY29udGVudF9pZCddKSk7DQogICAgDQogICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRyIGNsYXNzPSJyb3cnLigkaiAlIDIgKyAxKS4nIj4nOw0KICAgICRwYWdlc2V0dGluZ3MgLj0gJzx0ZD4nLiRwYWdlWydjb250ZW50X2lkJ10uJzwvdGQ+JzsNCiAgICAkcGFnZXNldHRpbmdzIC49ICc8dGQ+Jy4kcHJlZml4IC4nICcuJHBhZ2VbJ2NvbnRlbnRfbmFtZSddLic8L3RkPic7DQogICAgaWYgKCRwYWdlWyd0eXBlJ10gPT0gJ2NvbnRlbnQnIHx8ICRwYWdlWyd0eXBlJ10gPT0gJ2NvbnRlbnQyJyApIHsNCiAgICAgICRwYWdlc2V0dGluZ3MgLj0gJzx0ZD4nLiR1cGRvd24uJyAnLiRwcmlvcml0eS4nPC90ZD4nOw0KICAgICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJG9ndHlwZS4nPC90ZD4nOw0KICAgICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJGtleXdvcmRzLic8L3RkPic7DQogICAgICBpZiAoJGRlc2NyaXB0aW9uICE9ICIiKSB7DQogICAgICAgIGlmICgkZGVzY3JpcHRpb25fYXV0bykgew0KICAgICAgCSAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPjxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvc3lzdGVtL3dhcm5pbmcuZ2lmIiB0aXRsZT0iJy5zdHJpcF90YWdzKCRkZXNjcmlwdGlvbikuJyIgLz48L3RkPic7DQogICAgICAgIH1lbHNlew0KICAgICAgICAgICRwYWdlc2V0dGluZ3MgLj0gJzx0ZD48aW1nIHNyYz0iJy4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLicvJy4kZ0Ntcy0+Y29uZmlnWydhZG1pbl9kaXInXS4nL3RoZW1lcy8nLiRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+dGhlbWVOYW1lLicvaW1hZ2VzL2ljb25zL3N5c3RlbS90cnVlLmdpZiIgdGl0bGU9Iicuc3RyaXBfdGFncygkZGVzY3JpcHRpb24pLiciIC8+PC90ZD4nOw0KICAgICAgICB9DQogICAgICB9ZWxzZXsNCiAgICAgICAgDQogICAgICAgIGlmIChpc3NldCgkX0dFVFsnc3BfJ10pKQ0KICAgICAgICAgICRwYWdlc2V0dGluZ3MgLj0gJzx0ZD48YSBocmVmPSJlZGl0Y29udGVudC5waHA/c3BfPScuJF9HRVRbJ3NwXyddLicmY29udGVudF9pZD0nLiRwYWdlWydjb250ZW50X2lkJ10uJyI+PGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vZmFsc2UuZ2lmIiBib3JkZXI9IjAiIHRpdGxlPSInLiR0aGlzLT5sYW5nKCdjbGlja190b19hZGRfZGVzY3JpcHRpb24nKS4nIiAvPjwvYT48L3RkPic7DQogICAgICAgIGVsc2UNCiAgICAgICAgICAkcGFnZXNldHRpbmdzIC49ICc8dGQ+PGEgaHJlZj0iZWRpdGNvbnRlbnQucGhwP19zeF89Jy4kX0dFVFsnX3N4XyddLicmY29udGVudF9pZD0nLiRwYWdlWydjb250ZW50X2lkJ10uJyI+PGltZyBzcmM9IicuJGdDbXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGdDbXMtPmNvbmZpZ1snYWRtaW5fZGlyJ10uJy90aGVtZXMvJy4kZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPnRoZW1lTmFtZS4nL2ltYWdlcy9pY29ucy9zeXN0ZW0vZmFsc2UuZ2lmIiBib3JkZXI9IjAiIHRpdGxlPSInLiR0aGlzLT5sYW5nKCdjbGlja190b19hZGRfZGVzY3JpcHRpb24nKS4nIiAvPjwvYT48L3RkPic7DQogICAgICAgIA0KICAgICAgfQ0KICAgICAgJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPicuJHRoaXMtPkNyZWF0ZVRvb2x0aXBMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCAnJywgJzxpbWcgc3JjPSInLiRnQ21zLT5jb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRnQ21zLT5jb25maWdbJ2FkbWluX2RpciddLicvdGhlbWVzLycuJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT50aGVtZU5hbWUuJy9pbWFnZXMvaWNvbnMvc3lzdGVtLycuJGluZGV4YWJsZS4nLmdpZiIgLz4nLCAkdGhpcy0+bGFuZygndG9nZ2xlJyksIEFycmF5KCd3aGF0Jz0+J3RvZ2dsZV9pbmRleCcsJ2NvbnRlbnRfaWQnPT4kcGFnZVsnY29udGVudF9pZCddKSkuJzwvdGQ+JzsNCiAgICB9ZWxzZXsNCiAgICAJJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPi0tLTwvdGQ+JzsNCiAgICAJJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPi0tLTwvdGQ+JzsNCiAgICAJJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPi0tLTwvdGQ+JzsNCiAgICAJJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPi0tLTwvdGQ+JzsNCiAgICAJJHBhZ2VzZXR0aW5ncyAuPSAnPHRkPi0tLTwvdGQ+JzsNCiAgICB9DQogICAgJHBhZ2VzZXR0aW5ncyAuPSAnPC90cj4nOw0KICAgICRqKys7DQogICAgDQp9DQoNCiRwYWdlc2V0dGluZ3MgLj0gJzwvdGFibGU+JzsNCg0KLyogU0VPIFNldHRpbmdzIFRhYiAqLw0KDQovLyBHZXQgaW1hZ2UgZmlsZXMgZnJvbSAvdXBsb2Fkcy9pbWFnZXMNCiRmaWxlc19saXN0ID0gQXJyYXkoJHRoaXMtPmxhbmcoJ25vbmUnKT0+IiIpOw0KJGRwID0gb3BlbmRpcigkZ0Ntcy0+Y29uZmlnWydyb290X3BhdGgnXS4nL3VwbG9hZHMvaW1hZ2VzJyk7DQp3aGlsZSAoJGZpbGUgPSByZWFkZGlyKCRkcCkpIHsNCiAgICBpZiAoc3RycG9zKHN1YnN0cigkZmlsZSwgLTUpLCcuZ2lmJykgIT09IGZhbHNlKSB7DQogICAgICAgICRmaWxlc19saXN0WyRmaWxlXSA9ICRmaWxlOw0KICAgIH0NCiAgICBpZiAoc3RycG9zKHN1YnN0cigkZmlsZSwgLTUpLCcucG5nJykgIT09IGZhbHNlKSB7DQogICAgICAgICRmaWxlc19saXN0WyRmaWxlXSA9ICRmaWxlOw0KICAgIH0NCiAgICBpZiAoc3RycG9zKHN1YnN0cigkZmlsZSwgLTUpLCcuanBnJykgIT09IGZhbHNlKSB7DQogICAgICAgICRmaWxlc19saXN0WyRmaWxlXSA9ICRmaWxlOw0KICAgIH0NCiAgICBpZiAoc3RycG9zKHN1YnN0cigkZmlsZSwgLTUpLCcuanBlZycpICE9PSBmYWxzZSkgew0KICAgICAgICAkZmlsZXNfbGlzdFskZmlsZV0gPSAkZmlsZTsNCiAgICB9DQp9DQpjbG9zZWRpcigkZHApOw0KDQokc2V0dGluZ3MgID0gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydChudWxsLCAnY2hhbmdlc2V0dGluZ3MnKTsNCg0KLyogUGFnZSBUaXRsZSAqLw0KJHNldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICd0aXRsZV9kZXNjcmlwdGlvbicsICR0aGlzLT5MYW5nKCd0aXRsZV90aXRsZV9kZXNjcmlwdGlvbicpKTsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCd0aXRsZV90aXRsZScpLic6PC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAndGl0bGUnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGl0bGUnLCd7dGl0bGV9IHwgeyRzaXRlbmFtZX0gLSB7JHRpdGxlX2tleXdvcmRzfScpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCd0aXRsZV90aXRsZV9oZWxwJykuJzwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ3RpdGxlX21ldGFfdGl0bGUnKS4nOjwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ3RpdGxlX21ldGEnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgndGl0bGVfbWV0YScsJ3t0aXRsZX0gfCB7JHNpdGVuYW1lfScpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCd0aXRsZV9tZXRhX2hlbHAnKS4nPC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnZGVzY3JpcHRpb25fYmxvY2tfdGl0bGUnKS4nOjwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ2Rlc2NyaXB0aW9uX2Jsb2NrJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2Jsb2NrJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ2Rlc2NyaXB0aW9uX2Jsb2NrX2hlbHAnKS4nPC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJykgLiAnOiAnIC4gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3gobnVsbCwgJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnLCAxLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZScsMSkpIC4gJzwvcD4nOw0KDQoNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdkZXNjcmlwdGlvbl9hdXRvX3RpdGxlJykuJzo8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdkZXNjcmlwdGlvbl9hdXRvJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG8nLCdUaGlzIHBhZ2UgY292ZXJzIHRoZSB0b3BpY3Mge2tleXdvcmRzfScpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdkZXNjcmlwdGlvbl9hdXRvX2hlbHAnKS4nPC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnZGVmYXVsdF9rZXl3b3Jkc190aXRsZScpLic6PC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAnZGVmYXVsdF9rZXl3b3JkcycsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2tleXdvcmRzJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ2RlZmF1bHRfa2V5d29yZHNfaGVscCcpLic8L3A+JzsNCiRzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRFbmQoKTsNCg0KLyogTUVUQSBUeXBlcyAqLw0KJHNldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdtZXRhX3R5cGUnLCAkdGhpcy0+TGFuZygndGl0bGVfbWV0YV90eXBlJykpOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnbWV0YV9jcmVhdGVfc3RhbmRhcmQnKSAuICc6ICcgLiAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveChudWxsLCAnbWV0YV9zdGFuZGFyZCcsIDEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3N0YW5kYXJkJywxKSkgLiAnPC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdtZXRhX2NyZWF0ZV9kdWJsaW5jb3JlJykgLiAnOiAnIC4gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3gobnVsbCwgJ21ldGFfZHVibGluY29yZScsIDEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2R1YmxpbmNvcmUnLDEpKSAuICc8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ21ldGFfY3JlYXRlX29wZW5ncmFwaCcpIC4gJzogJyAuICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KG51bGwsICdtZXRhX29wZW5ncmFwaCcsIDEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaCcsMSkpIC4gJzwvcD4nOw0KJHNldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldEVuZCgpOw0KDQovKiBNRVRBIERlZmF1bHRzICovDQokc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ21ldGFfZGVmYXVsdHMnLCAkdGhpcy0+TGFuZygndGl0bGVfbWV0YV9kZWZhdWx0cycpKTsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX3B1Ymxpc2hlcicpLic6PC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9wdWJsaXNoZXInLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9wdWJsaXNoZXInLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9wdWJsaXNoZXJfaGVscCcpLic8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX2NvbnRyaWJ1dG9yJykuJzo8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX2NvbnRyaWJ1dG9yJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfY29udHJpYnV0b3InLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9jb250cmlidXRvcl9oZWxwJykuJzwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfY29weXJpZ2h0JykuJzo8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX2NvcHlyaWdodCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2NvcHlyaWdodCcsJyhDKSAnLmRhdGUoJ1knKS4nLiBBbGwgcmlnaHRzIHJlc2VydmVkLicpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX2NvcHlyaWdodF9oZWxwJykuJzwvcD48YnIgLz4nOw0KDQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPjxiPicuJHRoaXMtPmxhbmcoJ21ldGFfbG9jYXRpb25fZGVzY3JpcHRpb24nKS4nPC9iPjwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfbG9jYXRpb24nKS4nOjwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfbG9jYXRpb24nLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb2NhdGlvbicsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX2xvY2F0aW9uX2hlbHAnKS4nPC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9yZWdpb24nKS4nOjwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ21ldGFfcmVnaW9uJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJywnJyksIDUsIDUpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9yZWdpb25faGVscCcpLic8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX2xhdGl0dWRlJykuJzo8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX2xhdGl0dWRlJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbGF0aXR1ZGUnLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9sYXRpdHVkZV9oZWxwJykuJzwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfbG9uZ2l0dWRlJykuJzo8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX2xvbmdpdHVkZScsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xvbmdpdHVkZScsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX2xvbmdpdHVkZV9oZWxwJykuJzwvcD48YnIgLz4nOw0KDQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPjxiPicuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX2Rlc2NyaXB0aW9uJykuJzwvYj48L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF90aXRsZScpLic6PC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnLCd7dGl0bGV9JyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX3RpdGxlX2hlbHAnKS4nPC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfdHlwZScpLic6PC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9vcGVuZ3JhcGhfdHlwZScsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90eXBlJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX3R5cGVfaGVscCcpLic8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScpLic6PC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAnbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnLCcnKSwgMzIpLicgJy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWVfaGVscCcpLic8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF9pbWFnZScpLic6PC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24obnVsbCwgJ21ldGFfb3BlbmdyYXBoX2ltYWdlJywgJGZpbGVzX2xpc3QsIG51bGwsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9pbWFnZScsJycpKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX2ltYWdlX2hlbHAnKS4nPC9wPic7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnbWV0YV9vcGVuZ3JhcGhfYWRtaW5zJykuJzo8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX29wZW5ncmFwaF9hZG1pbnMnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfYWRtaW5zJywnJyksIDMyKS4nICcuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX2FkbWluc19oZWxwJykuJzwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJykuJzo8L3A+JzsNCiRzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbicsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbicsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbl9oZWxwJykuJzwvcD4nOw0KJHNldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldEVuZCgpOw0KDQovKiBBZGRpdGlvbmFsIE1ldGEgVGFncyAqLw0KJHNldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdhZGRpdGlvbmFsX21ldGEnLCAkdGhpcy0+TGFuZygndGl0bGVfYWRkaXRpb25hbF9tZXRhX3RhZ3MnKSk7DQokc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygnYWRkaXRpb25hbF9tZXRhX3RhZ3NfdGl0bGUnKS4nOjwvcD4nOw0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVUZXh0QXJlYShmYWxzZSwgbnVsbCwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2FkZGl0aW9uYWxfbWV0YV90YWdzJywnJyksICdhZGRpdGlvbmFsX21ldGFfdGFncycpLicgJy4kdGhpcy0+bGFuZygnYWRkaXRpb25hbF9tZXRhX3RhZ3NfaGVscCcpLic8L3A+JzsNCiRzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRFbmQoKTsNCg0KJHNldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdChudWxsLCAnc2F2ZV9tZXRhX3NldHRpbmdzJywgJHRoaXMtPmxhbmcoJ3NhdmUnKSkuJzwvcD4nOw0KJHNldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7DQoNCiRzZXR0aW5ncyAuPSAnPGJyIC8+PGJyIC8+Jy4kdGhpcy0+bGFuZygnaGVscF9kZXNjcmlwdGlvbl9jb250ZW50Jyk7DQoNCi8qIFNJVEVNQVAgU2V0dGluZ3MgKi8NCg0KJHNzZXR0aW5ncyAgPSAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KG51bGwsICdjaGFuZ2VzZXR0aW5ncycpOw0KDQokc3NldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGaWVsZHNldFN0YXJ0KG51bGwsICdzaXRlbWFwX2Rlc2NyaXB0aW9uJywgJHRoaXMtPkxhbmcoJ3RpdGxlX3NpdGVtYXBfZGVzY3JpcHRpb24nKSk7DQokc3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnY3JlYXRlX3NpdGVtYXBfdGl0bGUnKSAuICc6ICcgLiAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveChudWxsLCAnY3JlYXRlX3NpdGVtYXAnLCAxLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnLDEpKSAuICc8L3A+JzsNCmlmIChpbmlfZ2V0KCdhbGxvd191cmxfZm9wZW4nKSkgew0KICAkc3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygncHVzaF9zaXRlbWFwX3RpdGxlJykgLiAnOiAnIC4gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3gobnVsbCwgJ3B1c2hfc2l0ZW1hcCcsIDAsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwdXNoX3NpdGVtYXAnLDApKSAuICc8L3A+JzsNCn1lbHNlew0KICAkc3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygncHVzaF9zaXRlbWFwX3RpdGxlJykgLiAnOiAnIC4gJHRoaXMtPkxhbmcoJ25vX3VybF9mb3BlbicpIC4gJzwvcD4nOw0KfQ0KJHNzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ2NyZWF0ZV9yb2JvdHNfdGl0bGUnKSAuICc6ICcgLiAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveChudWxsLCAnY3JlYXRlX3JvYm90cycsIDEsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjcmVhdGVfcm9ib3RzJywxKSkgLiAnPC9wPic7DQoNCiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygndmVyaWZpY2F0aW9uX3RpdGxlJykuJzo8L3A+JzsNCiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAndmVyaWZpY2F0aW9uJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3ZlcmlmaWNhdGlvbicsJycpLCAzMikuJyAnLiR0aGlzLT5sYW5nKCd2ZXJpZmljYXRpb25faGVscCcpLic8L3A+JzsNCiRzc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0RW5kKCk7DQoNCiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KG51bGwsICdzYXZlX3NpdGVtYXBfc2V0dGluZ3MnLCAkdGhpcy0+bGFuZygnc2F2ZScpKS4nPC9wPic7DQoNCiRzc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCg0KJHNzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KG51bGwsICdjaGFuZ2VzZXR0aW5ncycpOw0KJHNzZXR0aW5ncyAuPSAkdGhpcy0+Q3JlYXRlRmllbGRzZXRTdGFydChudWxsLCAncmVnZW5lcmF0ZV9zaXRlbWFwJywgJHRoaXMtPkxhbmcoJ3RpdGxlX3JlZ2VuZXJhdGVfc2l0ZW1hcCcpKTsNCiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPic7DQokc3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdChudWxsLCAnZG9fcmVnZW5lcmF0ZScsICR0aGlzLT5sYW5nKCdidXR0b25fcmVnZW5lcmF0ZV9zaXRlbWFwJykpLic8L3A+JzsNCiRzc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPic7DQokc3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5sYW5nKCd0ZXh0X3JlZ2VuZXJhdGVfc2l0ZW1hcCcpLic8L3A+JzsNCiRzc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0RW5kKCk7DQokc3NldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7DQoNCiRzc2V0dGluZ3MgLj0gJzxiciAvPjxiciAvPicuJHRoaXMtPmxhbmcoJ2hlbHBfc2l0ZW1hcF9yb2JvdHMnKTsNCg0KLyogS0VZV09SRCBTZXR0aW5ncyAqLw0KDQoka3NldHRpbmdzICA9ICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQobnVsbCwgJ2NoYW5nZXNldHRpbmdzJyk7DQoNCiRrc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ2tleXdvcmRfd2VpZ2h0X2Rlc2NyaXB0aW9uJywgJHRoaXMtPkxhbmcoJ3RpdGxlX2tleXdvcmRfd2VpZ2h0JykpOw0KJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX21pbmxlbmd0aF90aXRsZScpLic6PC9wPic7DQoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ2tleXdvcmRfbWlubGVuZ3RoJywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJywnNicpLCAyKS4nICcuJHRoaXMtPmxhbmcoJ2tleXdvcmRfbWlubGVuZ3RoX2hlbHAnKS4nPC9wPic7DQoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2tleXdvcmRfdGl0bGVfd2VpZ2h0X3RpdGxlJykuJzo8L3A+JzsNCiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAna2V5d29yZF90aXRsZV93ZWlnaHQnLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF90aXRsZV93ZWlnaHQnLCc2JyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF90aXRsZV93ZWlnaHRfaGVscCcpLic8L3A+JzsNCiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdldGV4dCI+Jy4kdGhpcy0+bGFuZygna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHRfdGl0bGUnKS4nOjwvcD4nOw0KJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdrZXl3b3JkX2Rlc2NyaXB0aW9uX3dlaWdodCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2Rlc2NyaXB0aW9uX3dlaWdodCcsJzQnKSwgMikuJyAnLiR0aGlzLT5sYW5nKCdrZXl3b3JkX2Rlc2NyaXB0aW9uX3dlaWdodF9oZWxwJykuJzwvcD4nOw0KJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX2hlYWRsaW5lX3dlaWdodF90aXRsZScpLic6PC9wPic7DQoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVJbnB1dFRleHQobnVsbCwgJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0JywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0JywnMicpLCAyKS4nICcuJHRoaXMtPmxhbmcoJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0X2hlbHAnKS4nPC9wPic7DQoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2tleXdvcmRfY29udGVudF93ZWlnaHRfdGl0bGUnKS4nOjwvcD4nOw0KJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0JywgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfY29udGVudF93ZWlnaHQnLCcxJyksIDIpLicgJy4kdGhpcy0+bGFuZygna2V5d29yZF9jb250ZW50X3dlaWdodF9oZWxwJykuJzwvcD4nOw0KJGtzZXR0aW5ncyAuPSAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nLiR0aGlzLT5sYW5nKCdrZXl3b3JkX21pbmltdW1fd2VpZ2h0X3RpdGxlJykuJzo8L3A+JzsNCiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0VGV4dChudWxsLCAna2V5d29yZF9taW5pbXVtX3dlaWdodCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdrZXl3b3JkX21pbmltdW1fd2VpZ2h0JywnNycpLCAyKS4nICcuJHRoaXMtPmxhbmcoJ2tleXdvcmRfbWluaW11bV93ZWlnaHRfaGVscCcpLic8L3A+JzsNCiRrc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0RW5kKCk7DQoNCiRrc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0U3RhcnQobnVsbCwgJ2tleXdvcmRfZXhjbHVkZV9kZXNjcmlwdGlvbicsICR0aGlzLT5MYW5nKCd0aXRsZV9rZXl3b3JkX2V4Y2x1ZGUnKSk7DQoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2tleXdvcmRfZXhjbHVkZV90aXRsZScpLic6PC9wPic7DQoka3NldHRpbmdzIC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVUZXh0QXJlYShmYWxzZSwgbnVsbCwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfZXhjbHVkZScsJycpLCAna2V5d29yZF9leGNsdWRlJykuJyAnLiR0aGlzLT5sYW5nKCdrZXl3b3JkX2V4Y2x1ZGVfaGVscCcpLic8L3A+JzsNCiRrc2V0dGluZ3MgLj0gJHRoaXMtPkNyZWF0ZUZpZWxkc2V0RW5kKCk7DQoNCiRrc2V0dGluZ3MgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KG51bGwsICdzYXZlX2tleXdvcmRfc2V0dGluZ3MnLCAkdGhpcy0+bGFuZygnc2F2ZScpKS4nPC9wPic7DQoka3NldHRpbmdzIC49ICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7DQoNCiRrc2V0dGluZ3MgLj0gJzxiciAvPjxiciAvPicuJHRoaXMtPmxhbmcoJ2hlbHBfa2V5d29yZF9nZW5lcmF0b3InKTsNCg0KDQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FsZXJ0cycsJGFsZXJ0cyk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3BhZ2VzZXR0aW5ncycsJHBhZ2VzZXR0aW5ncyk7DQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21ldGFfZm9ybScsJHNldHRpbmdzKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbignc2l0ZW1hcF9mb3JtJywkc3NldHRpbmdzKTsNCiR0aGlzLT5zbWFydHktPmFzc2lnbigna2V5d29yZF9mb3JtJywka3NldHRpbmdzKTsNCg0KZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbnBhbmVsLnRwbCcpOw0KDQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/action.edit_keywords.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQoNCi8qIC09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tDQoNCiAgIENvZGUgZm9yIFNFT1Rvb2xzMiAiZWRpdG1ldGEiIGFkbWluIGFjdGlvbg0KICAgDQogICAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0KICAgDQogICBUeXBpY2FsbHksIHRoaXMgd2lsbCBkaXNwbGF5IHNvbWV0aGluZyBmcm9tIGEgdGVtcGxhdGUNCiAgIG9yIGRvIHNvbWUgb3RoZXIgdGFzay4NCiAgIA0KKi8NCg0KJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCg0KDQppZiAoaXNzZXQoJF9QT1NUWydzZXRfa2V5d29yZHMnXSkpIHsNCglpZiAoJF9QT1NUWydrZXl3b3JkcyddICE9ICIiKSB7DQoJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzMiBTRVQgY29udGVudF9pZCA9ICIuJF9QT1NUWydjb250ZW50X2lkJ10uIiwga2V5d29yZHMgPSAnIi4kX1BPU1RbJ2tleXdvcmRzJ10uIicsIGluZGV4YWJsZSA9IDEgT04gRFVQTElDQVRFIEtFWSBVUERBVEUga2V5d29yZHMgPSAnIi4kX1BPU1RbJ2tleXdvcmRzJ10uIiciOw0KCX1lbHNlew0KCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfc2VvdG9vbHMyIFNFVCBrZXl3b3JkcyA9IE5VTEwgV0hFUkUgY29udGVudF9pZCA9ICIuJF9QT1NUWydjb250ZW50X2lkJ107DQoJfQkJDQoJJGRiLT5FeGVjdXRlKCRxdWVyeSk7CQ0KCSR0aGlzLT5yZWRpcmVjdChudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgQXJyYXkoJ3RhYic9PidwYWdlZGVzY3JpcHRpb25zJykpOw0KfQ0KDQokcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBXSEVSRSBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddOw0KJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KJGluZm8gPSAkcmVzdWx0LT5mZXRjaFJvdygpOw0KDQppZiAoJGluZm9bJ2tleXdvcmRzJ10gPT0gIiIpIHsNCgkkaW5mb1sna2V5d29yZHMnXSA9IHN0cnRvbG93ZXIoaW1wbG9kZSgnICcsYXJyYXlfZmxpcCgkdGhpcy0+Z2V0S2V5d29yZFN1Z2dlc3Rpb25zKCRfR0VUWydjb250ZW50X2lkJ10pKSkpOw0KfQ0KDQokb3V0cHV0ICA9ICR0aGlzLT5jcmVhdGVGb3JtU3RhcnQobnVsbCwgJ2VkaXRfa2V5d29yZHMnKTsNCiRvdXRwdXQgLj0gJHRoaXMtPmNyZWF0ZUlucHV0SGlkZGVuKG51bGwsICdjb250ZW50X2lkJywgJF9HRVRbJ2NvbnRlbnRfaWQnXSk7DQokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2VudGVyX25ld19rZXl3b3JkcycpLic6PC9wPic7DQokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5jcmVhdGVUZXh0QXJlYShmYWxzZSwgbnVsbCwgJGluZm9bJ2tleXdvcmRzJ10sICdrZXl3b3JkcycpLicgJy4kdGhpcy0+bGFuZygnaGVscF9uZXdfa2V5d29yZHMnKS4nPC9wPic7DQokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZXRleHQiPjwvcD4nOw0KJG91dHB1dCAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlSW5wdXRTdWJtaXQobnVsbCwgJ3NldF9rZXl3b3JkcycsJHRoaXMtPmxhbmcoJ3NhdmUnKSkuJzwvcD4nOw0KDQokb3V0cHV0IC49ICR0aGlzLT5jcmVhdGVGb3JtRW5kKCk7DQoNCmVjaG8gJG91dHB1dDsNCg0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.edit_ogtype.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQoNCi8qIC09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tDQoNCiAgIENvZGUgZm9yIFNFT1Rvb2xzMiAiZWRpdG1ldGEiIGFkbWluIGFjdGlvbg0KICAgDQogICAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0KICAgDQogICBUeXBpY2FsbHksIHRoaXMgd2lsbCBkaXNwbGF5IHNvbWV0aGluZyBmcm9tIGEgdGVtcGxhdGUNCiAgIG9yIGRvIHNvbWUgb3RoZXIgdGFzay4NCiAgIA0KKi8NCg0KJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCg0KaWYgKGlzc2V0KCRfUE9TVFsnc2V0X29ndHlwZSddKSkgew0KCWlmICgkX1BPU1RbJ29nX3R5cGUnXSAhPSAiIikgew0KCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9zZW90b29sczIgU0VUIGNvbnRlbnRfaWQgPSAiLiRfUE9TVFsnY29udGVudF9pZCddLiIsIG9ndHlwZSA9ICciLiRfUE9TVFsnb2dfdHlwZSddLiInLCBpbmRleGFibGUgPSAxIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIG9ndHlwZSA9ICciLiRfUE9TVFsnb2dfdHlwZSddLiInIjsNCgl9ZWxzZXsNCgkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzMiBTRVQgb2d0eXBlID0gTlVMTCBXSEVSRSBjb250ZW50X2lkID0gIi4kX1BPU1RbJ2NvbnRlbnRfaWQnXTsNCgl9DQoJDQoJZWNobyAkcXVlcnk7DQoJDQoJJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoJJHRoaXMtPnJlZGlyZWN0KG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCBBcnJheSgndGFiJz0+J3BhZ2VkZXNjcmlwdGlvbnMnKSk7DQp9DQoNCiRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ107DQokcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQokaW5mbyA9ICRyZXN1bHQtPmZldGNoUm93KCk7DQoNCiRvdXRwdXQgID0gJHRoaXMtPmNyZWF0ZUZvcm1TdGFydChudWxsLCAnZWRpdF9vZ3R5cGUnKTsNCiRvdXRwdXQgLj0gJHRoaXMtPmNyZWF0ZUlucHV0SGlkZGVuKG51bGwsICdjb250ZW50X2lkJywgJF9HRVRbJ2NvbnRlbnRfaWQnXSk7DQokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPmxhbmcoJ2VudGVyX25ld19vZ3R5cGUnKS4nOjwvcD4nOw0KJG91dHB1dCAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Y3JlYXRlSW5wdXRUZXh0KG51bGwsICdvZ190eXBlJywgJGluZm9bJ29ndHlwZSddLCAzMCwgMzApLicgJy4kdGhpcy0+bGFuZygnaGVscF9uZXdfb2d0eXBlJykuJzwvcD4nOw0KJG91dHB1dCAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGJyIC8+Jy4kdGhpcy0+bGFuZygnaGVscF9vcGVuZ3JhcGgnKS4nPGJyIC8+PGJyIC8+JzsNCiRvdXRwdXQgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPmNyZWF0ZUlucHV0U3VibWl0KG51bGwsICdzZXRfb2d0eXBlJywkdGhpcy0+bGFuZygnc2F2ZScpKS4nPC9wPic7DQoNCiRvdXRwdXQgLj0gJHRoaXMtPmNyZWF0ZUZvcm1FbmQoKTsNCg0KZWNobyAkb3V0cHV0Ow0KDQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/img/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/img/edit.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAB3RJTUUH2ggQDQAHiaSPRwAAAAlwSFlzAAAewQAAHsEBw2lUUwAAAARnQU1BAACxjwv8YQUAAAImSURBVHjajZPPaxNBFMe/O9tuaJMY7NbUqrVNVeoPVESqB+2pBxFBD3r3Ip78Lzx48aA0WpGi4EnBg0UptIeK0Jh6UKIhmKRG0f5MqjFNm7o7uzvrzJoNqUm0A495zLzPd95j3pNs24YkSbsAdHCT8e+V4/aNM6xyIgT4Oq5pWsEwDMs0Tbue8Xs7HA7f5rE93IjgnMfLGZzgcFTXdcL9ijgHwRgDpRSqqmIp9QxrsaeQfYdR+v4KkjZ/WUQL6+fBb7gICCEO5ApYluUItNAI1tLTaGkfQCB0DIUvUSQnRrJN1QUK2N2FiCzLTprs5yQMK4W2faeQz3yEIlH4t2yHT90dqBFwSxC+eJ2tTEMxEgj0noG++BhKq4SvsSS0dX2lVFo9uUGgun7h0x8RsMJLBPaehzZ/D0Qx0ezrhteeQ3j0w7U7Y5k0afRf2eRzlBYmyvAwSLMBWuzB8tR7qIPXIWAn07pwagzFhSiCh86BLo1AVmzoxW4Ov8O2C0PwdOyvxDb9Dc9En4CtJmBKO7AYH8LWoAIt34XC2yQ6L96F7O/cEF+TQfz1Axw8fRWe2SmkRyOIjeeRnowhePZGDVxXYObzMmjiBUJHB+D19iEbz6Dv0k142nudn3G/umEJiU853Lo/jP4DIfj3HMHglYdobdvZcDiqBcRQSI/G57CJ5bQqbzJbDIUAGW+aX+7F/2Aeu853y+mX8jB14c84k00IoAznODv7G84tFQol4BT4AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/img/reset.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAB3RJTUUH2ggQDDghTfTcdgAAAAlwSFlzAAAewQAAHsEBw2lUUwAAAARnQU1BAACxjwv8YQUAAAJ5SURBVHjapVNdSBRRGD1zZ8bZHcfFn1VWDSNMpYSUBCGCMivJHgyMkiAwfCroIZBSiFAixLeIChaiIlAhf4IoKkhEgh4KJetF1/xF3XSUTVubcdydud1xZRmjJOiDw8yd+53zffd8c4H/DM65uHq/sv9QiXxYN1S2IYDCYk8RinAAS/qidaff3zFwC7WAaHFihKMRUOIU8KXKGUnJERD3OHh5DoIcZJiFKX1GuneZtNZcOd/SWfUFpZHdlPE5EZzgFFglAWUpIYyQFARx9CZgBGaUtWsC5QfrC/0ptQMX654U0hlpjt9ynkx1x0xwhXwdwdjYKKYYJsdGuen5OU/IpaRmpGbKZFLrtYpyy92iQnIG30x1xcmia4svv0NhqLjxLG+hfcZDu4NltGOgTkcOTsU7sKLbmr3OMB5YCekVZcUn1+h7eN1FQvuHoXnhrxTbXsvREwUWVAxRIwkcsRVXbHM2p0Bi+XZkncOF9Hw+LU5GjGzHsePuao+L1TQSoWnf7U/6pssxy083pjTce33UTi9jcDOkMXhRifwjjdLNro81tHOwhHYN7aTNTwu+sb09G0eIshIn6pMbzlbvb/Up+XjUp/Ym8ImUbpQWOdlVzCcpOsL6KMJrgxCEAnS/CDxgm8Ox0lVofnx9b5OUoOGnMQVF9oJadLN35jPng2FOgxd+wIxko6dn8dXLlvUzjKzFphDgZ9P2qSVZecs5dv6qqWGd02HAhoYor8KgFiYmpLW2tpD/3V3zMmOFN7Sdf/Klh3i+qxCl1xpxO1tCkPDsItgeExCdKalv0c+Wn5yTib2LcZHsyib0eXKRu+14/3gtxS0pAsfjn+IXjhPiCXMAIGsAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdTRU9Ub29sczInOw0KJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnU0VPVG9vbHMyIGhhcyBiZWVuIGluc3RhbGxlZC4gQmUgc3VyZSB0byByZWFkIHRoZSBtb2R1bGUgaGVscCB0byBsZWFybiBob3cgdG8gdXNlIGl0Lic7DQokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1NFT1Rvb2xzMiBoYXMgYmVlbiB1bmluc3RhbGxlZC4gUGxlYXNlIGJlIGF3YXJlIHRoYXQgeW91IGhhdmUganVzdCBsb3N0IGFsbCBtZXRhIGluZm9ybWF0aW9uIGZyb20geW91ciBwYWdlcyEnOw0KJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gdW5pbnN0YWxsIFNFT1Rvb2xzMj8nOw0KJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxlIFVuaW5zdGFsbGVkLic7DQokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHZlcnNpb24gJXMgaW5zdGFsbGVkLic7DQokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bGUgdXBncmFkZWQgdG8gdmVyc2lvbiAlcy4nOw0KJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnQSBjb2xsZWN0aW9uIG9mIHRvb2xzIHRvIGhlbHAgd2l0aCBTZWFyY2ggRW5naW5lIE9wdGltaXphdGlvbi4nOw0KDQokbGFuZ1snZXJyb3InXSA9ICdFcnJvciEnOw0KJGxhbmRbJ2FkbWluX3RpdGxlJ10gPSAnU0VPVG9vbHMyIEFkbWluIFBhbmVsJzsNCiRsYW5nWydhZG1pbmRlc2NyaXB0aW9uJ10gPSAnSGVscHMgd2l0aCBTRU8gaW4gZ2VuZXJhbCwgYXV0b21hdGljYWxseSBnZW5lcmF0aW5nIFhNTCBzaXRlbWFwcyBhbmQgY29tcHJlaGVuc2l2ZSBtZXRhIGRlc2NyaXB0aW9ucyc7DQokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNjZXNzIERlbmllZC4gUGxlYXNlIGNoZWNrIHlvdXIgcGVybWlzc2lvbnMuJzsNCiRsYW5nWydTRU9BbGVydHMnXSA9ICdTRU8gQWxlcnRzJzsNCiRsYW5nWydQYWdlZGVzY3JpcHRpb25zJ10gPSAnUGFnZSBzZXR0aW5ncyc7DQokbGFuZ1snU2l0ZW1hcCddID0gJ1NpdGVtYXAnOw0KJGxhbmdbJ1NFT1NldHRpbmdzJ10gPSAnU0VPIFNldHRpbmdzJzsNCiRsYW5nWyd0aXRsZV9zZW9hbGVydHMnXSA9ICdTRU8gQWxlcnRzJzsNCiRsYW5nWyd0aXRsZV9wYWdlZGVzY3JpcHRpb25zJ10gPSAnUGFnZSBzZXR0aW5ncyc7DQokbGFuZ1sndGl0bGVfc2l0ZW1hcCddID0gJ1NpdGVtYXAnOw0KJGxhbmdbJ3RpdGxlX3Nlb3NldHRpbmdzJ10gPSAnU0VPIFNldHRpbmdzJzsNCg0KJGxhbmdbJ3RpdGxlX21ldGFfdHlwZSddID0gJ01ldGEgVGFnIEdlbmVyYXRvcic7DQokbGFuZ1snbWV0YV9jcmVhdGVfc3RhbmRhcmQnXSA9ICdHZW5lcmF0ZSBzdGFuZGFyZCBNZXRhIFRhZ3MnOw0KJGxhbmdbJ21ldGFfY3JlYXRlX2R1YmxpbmNvcmUnXSA9ICdHZW5lcmF0ZSBEdWJsaW4gQ29yZSBNZXRhIFRhZ3MnOw0KJGxhbmdbJ21ldGFfY3JlYXRlX29wZW5ncmFwaCddID0gJ0dlbmVyYXRlIE9wZW5HcmFwaCBNZXRhIFRhZ3MgKGUuZy4gZm9yIEZhY2Vib29rIExpa2UgQnV0dG9uKSc7DQoNCiRsYW5nWyd0aXRsZV9tZXRhX2RlZmF1bHRzJ10gPSAnTUVUQSBUYWcgVmFsdWVzJzsNCiRsYW5nWydtZXRhX3B1Ymxpc2hlciddID0gJ1NpdGUgcHVibGlzaGVyJzsNCiRsYW5nWydtZXRhX3B1Ymxpc2hlcl9oZWxwJ10gPSAnKFRoaXMgaXMgdXN1YWxseSB0aGUgb3JnYW5pemF0aW9uIHlvdSBhcmUgYnVpbGRpbmcgdGhlIHdlYnNpdGUgZm9yKSc7DQokbGFuZ1snbWV0YV9jb250cmlidXRvciddID0gJ1NpdGUgY29udHJpYnV0b3InOw0KJGxhbmdbJ21ldGFfY29udHJpYnV0b3JfaGVscCddID0gJyhVc3VhbGx5LCB0aGlzIHdvdWxkIGJlIHlvdSBvciBhbnkgb3RoZXIgY29udGVudCBhdXRob3IpJzsNCiRsYW5nWydtZXRhX2NvcHlyaWdodCddID0gJ1NpdGUgY29weXJpZ2h0JzsNCiRsYW5nWydtZXRhX2NvcHlyaWdodF9oZWxwJ10gPSAnKFNvbWV0aGluZyBsaWtlICIoQykgWW91ciBDb21wYW55LiBBbGwgUmlnaHRzIFJlc2VydmVkIiknOw0KJGxhbmdbJ21ldGFfbG9jYXRpb25fZGVzY3JpcHRpb24nXSA9ICdJZiB5b3VyIHdlYnNpdGUgaXMgYWJvdXQgYW4gZW50aXRpeSB0aGF0IGNhbiBiZSBsb2NhdGVkIG9uIGEgbWFwLCB5b3Ugc2hvdWxkIG9wdGlvbmFsbHkgZmlsbCBpbiB0aGUgZm9sbG93aW5nIHZhbHVlczonOw0KJGxhbmdbJ21ldGFfbG9jYXRpb24nXSA9ICdMb2NhdGlvbiBvZiB5b3VyIGVudGl0eSc7DQokbGFuZ1snbWV0YV9sb2NhdGlvbl9oZWxwJ10gPSAnKFVzdWFsbHksIHRoaXMgd291bGQgYmUgdGhlIHRvd24gbmFtZSBvZiB5b3VyIGNvbXBhbnkpJzsNCiRsYW5nWydtZXRhX3JlZ2lvbiddID0gJ1JlZ2lvbiBvZiB5b3VyIGVudGl0eSc7DQokbGFuZ1snbWV0YV9yZWdpb25faGVscCddID0gJyhFbnRlciBzb21ldGhpbmcgbGlrZSAiVVMtSUwiIGZvciBhbiBlbnRpdHkgbG9jYXRlZCBpbiBJbGxpbm9pcywgVVMpJzsNCiRsYW5nWydtZXRhX2xhdGl0dWRlJ10gPSAnTGF0aXR1ZGUgb2YgeW91ciBlbnRpdHknOw0KJGxhbmdbJ21ldGFfbGF0aXR1ZGVfaGVscCddID0gJyhFbnRlciB0aGUgZGVjaW1hbCBsYXRpdHVkZSBnZW8gY29vZGluYXRlIG9mIHlvdXIgZW50aXRpeSknOw0KJGxhbmdbJ21ldGFfbG9uZ2l0dWRlJ10gPSAnTG9uZ2l0dWRlIG9mIHlvdXIgZW50aXR5JzsNCiRsYW5nWydtZXRhX2xvbmdpdHVkZV9oZWxwJ10gPSAnKEVudGVyIHRoZSBkZWNpbWFsIGxvbmdpdHVkZSBnZW8gY29vZGluYXRlIG9mIHlvdXIgZW50aXRpeSknOw0KJGxhbmdbJ21ldGFfb3BlbmdyYXBoX2Rlc2NyaXB0aW9uJ10gPSAnSWYgeW91IGFyZSBjcmVhdGluZyBPcGVuR3JhcGggTUVUQSBUYWdzLCBwbGVhc2UgZmlsbCBpbiB0aGUgZm9sbG93aW5nIHZhbHVlczonOw0KJGxhbmdbJ21ldGFfb3BlbmdyYXBoX3RpdGxlJ10gPSAnT3BlbkdyYXBoIHBhZ2UgdGl0bGUnOw0KJGxhbmdbJ21ldGFfb3BlbmdyYXBoX3RpdGxlX2hlbHAnXSA9ICcoWW91IGNhbiB1c2UgYWxsIHNtYXJ0eSB0YWdzIGhlcmUsIGUuZy4gdG8gcmVwbGFjZSB3aXRoIHRoZSBhY3R1YWwgcGFnZSB0aXRsZSknOw0KJGxhbmdbJ21ldGFfb3BlbmdyYXBoX3R5cGUnXSA9ICdPcGVuR3JhcGggZGVmYXVsdCBwYWdlIHR5cGUnOw0KJGxhbmdbJ21ldGFfb3BlbmdyYXBoX3R5cGVfaGVscCddID0gJyhUaGUgZGVmYXVsdCBwYWdlIHR5cGUgZm9yIE9wZW5HcmFwaCwgY2FuIGJlIG92ZXJyaWRkZW4gZm9yIGVhY2ggcGFnZS4gTG9vayA8YSBocmVmPSJodHRwOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vZG9jcy9vcGVuZ3JhcGgjdHlwZXMiIHRhZ2V0PSJfYmxhbmsiPmhlcmU8L2E+IGZvciBhIGxpc3Qgb2YgYWxsb3dlZCB2YWx1ZXMpJzsNCiRsYW5nWydtZXRhX29wZW5ncmFwaF9zaXRlbmFtZSddID0gJ09wZW5HcmFwaCBzaXRlIG5hbWUnOw0KJGxhbmdbJ21ldGFfb3BlbmdyYXBoX3NpdGVuYW1lX2hlbHAnXSA9ICcoQSBzaG9ydCB2ZXJzaW9uIG9mIHlvdXIgc2l0ZSBuYW1lLCBlLmcuICJZb3VyIENvbXBhbnkiLCBtYXguIDI1IGNoYXJzKSc7DQokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfaW1hZ2UnXSA9ICdPcGVuR3JhcGggZGVmYXVsdCBpbWFnZSc7DQokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfaW1hZ2VfaGVscCddID0gJyhTZWxlY3QgYW4gaW1hZ2UgZnJvbSB5b3VyIC91cGxvYWRzL2ltYWdlcyBkaXJlY3RvcnkgdG8gYmUgdXNlZCBhcyB0aGUgZGVmYXVsdCBmb3IgT3BlbkdyYXBoIHBhZ2VzKSc7DQokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfYWRtaW5zJ10gPSAnRmFjZWJvb2sgc2l0ZSBhZG1pbmlzdHJhdG9ycyc7DQokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfYWRtaW5zX2hlbHAnXSA9ICcoQSBjb21tYSBzZXBhcmF0ZWQgbGlzdCBvZiBmYWNlYm9vayBhY2NvdW50IElEcyB3aG8gYXJlIGFibGUgdG8gYWRtaW5pc3RyYXRlIHRoZSBzdHJlYW1zIG9mIHlvdXIgcGFnZXMpJzsNCiRsYW5nWydtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbiddID0gJ0ZhY2Vib29rIGFwcGxpY2F0aW9uJzsNCiRsYW5nWydtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbl9oZWxwJ10gPSAnKFRoZSBJRCBvZiBhIGZhY2Vib29rIGFwcGxpY2F0aW9uIGFibGUgdG8gYWRtaW5pc3RyYXRlIHRoZSBzdHJlYW1zIG9mIHlvdXIgcGFnZXMpJzsNCg0KJGxhbmdbJ3RpdGxlX3RpdGxlX2Rlc2NyaXB0aW9uJ10gPSAnUGFnZSB0aXRsZSwgZGVzY3JpcHRpb24gYW5kIGtleXdvcmRzJzsNCiRsYW5nWyd0aXRsZV90aXRsZSddID0gJ1BhZ2UgdGl0bGUnOw0KJGxhbmdbJ3RpdGxlX3RpdGxlX2hlbHAnXSA9ICcoVGhlIHBhZ2UgdGl0bGUgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBicm93c2VyXCdzIHRpdGxlIGJhci4gWW91IGNhbiB1c2UgdGhlIHRhZ3Mge3RpdGxlfSwge3BhZ2V0aXRsZX0sIHtzZW9fa2V5d29yZHN9IGFuZCBhbGwgc21hcnR5IHRhZ3MgYW5kIFVEVHMgaGVyZSknOw0KJGxhbmdbJ3RpdGxlX21ldGFfdGl0bGUnXSA9ICdQYWdlIE1ldGEgdGl0bGUnOw0KJGxhbmdbJ3RpdGxlX21ldGFfaGVscCddID0gJyhUaGUgcGFnZSB0aXRsZSB0byBiZSB1c2VkIGluIHRoZSBNZXRhIHRpdGxlIHRhZ3MuIFlvdSBjYW4gdXNlIHRoZSB0YWdzIHt0aXRsZX0sIHtwYWdldGl0bGV9LCB7c2VvX2tleXdvcmRzfSBhbmQgYWxsIHNtYXJ0eSB0YWdzIGFuZCBVRFRzIGhlcmUpJzsNCiRsYW5nWydkZXNjcmlwdGlvbl9ibG9ja190aXRsZSddID0gJ05hbWUgb2YgcGFnZSBkZXNjcmlwdGlvbiBjb250ZW50IGJsb2NrJzsNCiRsYW5nWydkZXNjcmlwdGlvbl9ibG9ja19oZWxwJ10gPSAnKFRoZSBuYW1lIG9mIHlvdXIgcGFnZSBkZXNjcmlwdGlvbiBjb250ZW50IGJsb2NrLiBQbGVhc2Ugc2VlIGJlbG93IGZvciBhbiBleHBsYW5hdGlvbiknOw0KJGxhbmdbJ2RlZmF1bHRfa2V5d29yZHNfdGl0bGUnXSA9ICdLZXl3b3JkcyB0byBhbHdheXMgaW5jbHVkZSc7DQokbGFuZ1snZGVmYXVsdF9rZXl3b3Jkc19oZWxwJ10gPSAnKEEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2Yga2V5d29yZHMgeW91IHdvdWxkIGxpa2UgdG8gaW5jbHVkZSBvbiBldmVyeSBwYWdlKSc7DQoNCiRsYW5nWyd0aXRsZV9zaXRlbWFwX2Rlc2NyaXB0aW9uJ10gPSAnR29vZ2xlIFNpdGVtYXAgYW5kIENyYXdsZXIgU2V0dGluZ3MnOw0KJGxhbmdbJ2NyZWF0ZV9zaXRlbWFwX3RpdGxlJ10gPSAnQ3JlYXRlIGFuIFhNTCBHb29nbGUgU2l0ZW1hcConOw0KJGxhbmdbJ3B1c2hfc2l0ZW1hcF90aXRsZSddID0gJ0F1dG9tYXRpY2FsbHkgcHVzaCB0aGUgc2l0ZW1hcCB0byBHb29nbGUgYWZ0ZXIgY29udGVudCBjaGFuZ2VzJzsNCiRsYW5nWydjcmVhdGVfcm9ib3RzX3RpdGxlJ10gPSAnQ3JlYXRlIGEgcm9ib3RzLnR4dCBmaWxlKic7DQokbGFuZ1sndmVyaWZpY2F0aW9uX3RpdGxlJ10gPSAnU2l0ZSB2ZXJpZmljYXRpb24gY29kZSc7DQokbGFuZ1sndmVyaWZpY2F0aW9uX2hlbHAnXSA9ICcoVGhlIHNpdGUgdmVyaWZpY2F0aW9uIGNvZGUgeW91IG9idGFpbiBmcm9tIEdvb2dsZSBXZWJtYXN0ZXIgVG9vbHMsIGp1c3QgdGhlIGhhc2gsIG5vdCB0aGUgY29tcGxldGUgbWV0YSB0YWcpJzsNCg0KJGxhbmdbJ3RpdGxlX2FsZXJ0c191cmdlbnQnXSA9ICdUbyBiZSBmaXhlZCBpbW1lZGlhdGVseSc7DQokbGFuZ1sndGl0bGVfYWxlcnRzX2ltcG9ydGFudCddID0gJ1RvIGJlIGZpeGVkIGFzIHNvb24gYXMgcG9zc2libGUnOw0KJGxhbmdbJ3RpdGxlX2FsZXJ0c19ub3RpY2VzJ10gPSAnVGhpbmdzIHlvdSBzaG91bGQgY29uc2lkZXIgZml4aW5nJzsNCiRsYW5nWydub3RoaW5nX3RvX2JlX2ZpeGVkJ10gPSAnVGhlcmUgYXJlIG5vIGFjdGlvbnMgeW91IG5lZWQgdG8gdGFrZSBpbiB0aGlzIGNhdGVnb3J5JzsNCg0KJGxhbmdbJ3NhdmUnXSA9ICdTYXZlIHNldHRpbmdzJzsNCiRsYW5nWydub25lJ10gPSAnKG5vbmUpJzsNCiRsYW5nWydzZXR0aW5nc191cGRhdGVkJ10gPSAnVGhlIFNFTyBzZXR0aW5ncyB3ZXJlIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLic7DQokbGFuZ1sncHJvYmxlbV9hbGVydCddID0gJ2hhcyBkZXRlY3RlZCBzZXZlcmUgcHJvYmxlbXMgd2l0aCB5b3VyIFNFTy4gJXMnOw0KJGxhbmdbJ3Byb2JsZW1fbGlua190aXRsZSddID0gJ0NsaWNrIGhlcmUgdG8gZml4IHRoZW0nOw0KDQokbGFuZ1snaGVscF9kZXNjcmlwdGlvbl9jb250ZW50J10gPSAnPGI+SG93IHRvIHVzZSB0aGUgImRlc2NyaXB0aW9uIGNvbnRlbnQgYmxvY2siOjwvYj48YnIgLz5UbyBiZSBhYmxlIHRvIGVudGVyIGEgcGFnZSBkZXNjcmlwdGlvbiB3aGVuIGVkaXRpbmcgYSBwYWdlLCB5b3UgbXVzdCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgY29kZSBhbnl3aGVyZSBvbiBldmVyeSB0ZW1wbGF0ZTo8YnIgLz48YnIgLz48cHJlPntjYXB0dXJlIGFzc2lnbj1tZXRhZGVzY3JpcHRpb259e2NvbnRlbnQgYmxvY2s9Im1ldGFkZXNjcmlwdGlvbiIgbGFiZWw9Ik1FVEEgRGVzY3JpcHRpb24iIG9uZWxpbmU9InRydWUifXsvY2FwdHVyZX08L3ByZT48YnIgLz5UaGVuLCBwdXQgIm1ldGFkZXNjcmlwdGlvbiIgaW50byB0aGUgZmllbGQgIk5hbWUgb2YgcGFnZSBkZXNjcmlwdGlvbiBjb250ZW50IGJsb2NrPGJyIC8+PGJyIC8+QWx0ZXJuYXRpdmVseSwgZW5hYmxlIHRoZSBvcHRpb24gJnF1b3Q7QXV0b21hdGljYWxseSBnZW5lcmF0ZSBkZXNjcmlwdGlvbnMgd2hlcmUgbm9uZSBpcyBnaXZlbiZxdW90Oy4gVGhpcyBpcyBub3QgYXMgZ29vZCBidXQgc3RpbGwgYmV0dGVyIHRoYW4gbm90aGluZy4nOw0KJGxhbmdbJ2hlbHBfc2l0ZW1hcF9yb2JvdHMnXSA9ICcqKSBUbyB1c2UgdGhlIGF1dG9tYXRpYyBnZW5lcmF0aW9uIG9mIGEgc2l0ZW1hcC0gYW5kIHJvYm90cy1maWxlLCB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgeW91ciBDTVNNUyBpbnN0YWxsYXRpb24gbXVzdCBiZSB3cml0ZWFibGUgdG8gdGhlIHdlYiBzZXJ2ZXIuIElmIHlvdXIgYWxyZWFkeSBoYXZlIGEgc2l0ZW1hcC54bWwgYW5kL3ByIHJvYm90cy50eHQgZmlsZSwgYm90aCBvZiB0aGVtIG11c3QgYmUgd3JpdGVhYmxlIHRvIHRoZSB3ZWIgc2VydmVyLic7DQoNCiRsYW5nWyd1c2Vfc3RhbmRhcmRfb3JfZHVibGluY29yZV9tZXRhJ10gPSAnVXNlIGF0IGxlYXN0IG9uZSBvZiB0aGUgc3RhbmRhcmQgb3IgRHVibGluIENvcmUgTWV0YSBUYWcgZ2VuZXJhdG9ycyc7DQokbGFuZ1sndXNlX3N0YW5kYXJkX21ldGEnXSA9ICdZb3Ugc2hvdWxkIGFsd2F5cyBlbmFibGUgdGhlIHN0YW5kYXJkIE1ldGEgZ2VuZXJhdG9yJzsNCiRsYW5nWydtZXRhX2Rlc2NyaXB0aW9uX21pc3NpbmcnXSA9ICdUaGUgcGFnZSA8aT4lczwvaT4gaXMgbGFja2luZyBhIE1ldGEgZGVzY3JpcHRpb24nOw0KJGxhbmdbJ21ldGFfZGVzY3JpcHRpb25fc2hvcnQnXSA9ICdUaGUgTWV0YSBkZXNjcmlwdGlvbiBvZiA8aT4lczwvaT4gaXMgcmF0aGVyIHNob3J0ICggPCA3NSBjaGFycyknOw0KJGxhbmdbJ2R1cGxpY2F0ZV90aXRsZXMnXSA9ICdUaGUgcGFnZXMgPGk+JXM8L2k+IGFuZCA8aT4lczwvaT4gaGF2ZSB0aGUgc2FtZSB0aXRsZSc7DQokbGFuZ1snZHVwbGljYXRlX2Rlc2NyaXB0aW9ucyddID0gJ1RoZSBwYWdlcyA8aT4lczwvaT4gYW5kIDxpPiVzPC9pPiBoYXZlIHRoZSBzYW1lIE1ldGEgZGVzY3JpcHRpb24nOw0KJGxhbmdbJ3Byb3ZpZGVfYW5fYXV0aG9yJ10gPSAnWW91IHNob3VsZCBwcm92aWRlIHRoZSBuYW1lIG9mIHRoZSBwYWdlIHB1Ymxpc2hlcic7DQokbGFuZ1snc2V0X3VwX2Rlc2NyaXB0aW9uX2Jsb2NrJ10gPSAnU2V0IHVwIGEgY29udGVudCBibG9jayBmb3IgTWV0YSBkZXNjcmlwdGlvbnMnOw0KJGxhbmdbJ2FjdGl2YXRlX3ByZXR0eV91cmxzJ10gPSAnQWN0aXZhdGUgdGhlIHByZXR0eSBVUkxzIGZlYXR1cmUgb2YgQ01TTVMnOw0KJGxhbmdbJ3ByZXR0eV91cmxzX2hlbHAnXSA9ICc8YSBocmVmPSJodHRwOi8vd2lraS5jbXNtYWRlc2ltcGxlLm9yZy9pbmRleC5waHAvVXNlcl9IYW5kYm9vay9JbnN0YWxsYXRpb24vT3B0aW9uYWxfU2V0dGluZ3MiIHRhcmdldD0iX2JsYW5rIj5HZXQgaGVscDwvYT4nOw0KJGxhbmdbJ2NyZWF0ZV9hX3NpdGVtYXAnXSA9ICdIYXZlIGEgR29vZ2xlIFhNTCBTaXRlbWFwIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBmb3IgeW91JzsNCiRsYW5nWydhdXRvbWF0aWNhbGx5X3VwbG9hZF9zaXRlbWFwJ10gPSAnSGF2ZSB5b3VyIFhNTCBTaXRlbWFwIGF1dG9tYXRpY2FsbHkgdXBsb2FkZWQgdG8gR29vZ2xlJzsNCiRsYW5nWydjcmVhdGVfcm9ib3RzJ10gPSAnSGF2ZSBhIHJvYm90cy50eHQgZmlsZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgZm9yIHlvdSc7DQokbGFuZ1snc2l0ZW1hcF9ub3Rfd3JpdGVhYmxlJ10gPSAnWW91ciBzaXRlbWFwLnhtbCBmaWxlIGlzIG5vdCB3cml0ZWFibGUnOw0KJGxhbmdbJ2NobW9kX3NpdGVtYXAnXSA9ICdTZXQgeW91ciAvc2l0ZW1hcC54bWwgZmlsZSB0byBiZSB3cml0ZWFibGUgYnkgdGhlIHdlYiBzZXJ2ZXInOw0KJGxhbmdbJ3JvYm90c19ub3Rfd3JpdGVhYmxlJ10gPSAnWW91ciByb2JvdHMudHh0IGZpbGUgaXMgbm90IHdyaXRlYWJsZSc7DQokbGFuZ1snbm9fb3BlbmdyYXBoX2FkbWlucyddID0gJ1lvdSBoYXZlIG5vdCBzZXQgYW4gT3BlbkdyYXBoIGFkbWluIGFwcGxpY2F0aW9uIHJlc3AuIGFkbWluIGxpc3QnOw0KJGxhbmdbJ25vX29wZW5ncmFwaF90eXBlJ10gPSAnWW91IGhhdmUgbm90IHNldCB0aGUgZGVmYXVsdCBPcGVuR3JhcGggcGFnZSB0eXBlJzsNCiRsYW5nWydub19vcGVuZ3JhcGhfc2l0ZW5hbWUnXSA9ICdZb3UgaGF2ZSBub3Qgc2V0IHRoZSBPcGVuR3JhcGggc2l0ZSBuYW1lJzsNCiRsYW5nWydub19vcGVuZ3JhcGhfaW1hZ2UnXSA9ICdZb3UgaGF2ZSBub3Qgc2V0IGFuIE9wZW5HcmFwaCBkZWZhdWx0IGltYWdlJzsNCiRsYW5nWydjaG1vZF9yb2JvdHMnXSA9ICdTZXQgeW91ciAvcm9ib3RzLnR4dCBmaWxlIHRvIGJlIHdyaXRlYWJsZSBieSB0aGUgd2ViIHNlcnZlcic7DQokbGFuZ1snZWRpdF9wYWdlJ10gPSAnRWRpdCAlcyc7DQokbGFuZ1snZWRpdF9wYWdlX3RvX2ZpeCddID0gJ0NsaWNrIGhlcmUgdG8gZWRpdCB0aGUgcGFnZSBhbmQgZml4IHRoZSBwcm9ibGVtJzsNCiRsYW5nWyd2aXNpdF9zZXR0aW5ncyddID0gJ0NoYW5nZSBzZXR0aW5ncyc7DQoNCiRsYW5nWydwYWdlX2lkJ10gPSAnSUQnOw0KJGxhbmdbJ3BhZ2VfbmFtZSddID0gJ1BhZ2UgbmFtZSc7DQokbGFuZ1sncHJpb3JpdHknXSA9ICdTaXRlbWFwIFByaW9yaXR5JzsNCiRsYW5nWydvZ190eXBlJ10gPSAnT3BlbkdyYXBoIHR5cGUnOw0KJGxhbmdbJ2tleXdvcmRzJ10gPSAnIyBLZXl3b3Jkcyc7DQokbGFuZ1snZGVzY3JpcHRpb24nXSA9ICdEZXNjcmlwdGlvbic7DQokbGFuZ1snaW5kZXgnXSA9ICdJbmRleGFibGUnOw0KDQokbGFuZ1snY2xpY2tfdG9fYWRkX2Rlc2NyaXB0aW9uJ10gPSAnQ2xpY2sgaGVyZSB0byBhZGQgYSBwYWdlIGRlc2NyaXB0aW9uJzsNCiRsYW5nWyd0b2dnbGUnXSA9ICd0b2dnbGUnOw0KJGxhbmdbJ3Jlc2V0J10gPSAncmVzZXQnOw0KJGxhbmdbJ3Jlc2V0X3RvX2RlZmF1bHQnXSA9ICdSZXNldCB0aGlzIHRvIHRoZSBkZWZhdWx0IHZhbHVlJzsNCiRsYW5nWydlZGl0X3ZhbHVlJ10gPSAnRWRpdCB0aGlzIHZhbHVlJzsNCg0KJGxhbmdbJ2hlbHBfb3BlbmdyYXBoJ10gPSAnTG9vayA8YSBocmVmPSJodHRwOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vZG9jcy9vcGVuZ3JhcGgjdHlwZXMiIHRhZ2V0PSJfYmxhbmsiPmhlcmU8L2E+IGZvciBhIGxpc3Qgb2YgYWxsb3dlZCB2YWx1ZXMnOw0KJGxhbmdbJ2VudGVyX25ld19vZ3R5cGUnXSA9ICdFbnRlciB0aGUgbmV3IHZhbHVlIGZvciB0aGlzIHBhZ2VcJ3MgT3BlbkdyYXBoIHR5cGUnOw0KJGxhbmdbJ2hlbHBfbmV3X29ndHlwZSddID0gJ0xlYXZlIGJsYW5rIHRvIHJldmVydCB0byB0aGUgZGVmYXVsdCBzZXR0aW5nJzsNCg0KJGxhbmdbJ2VudGVyX25ld19rZXl3b3JkcyddID0gJ0VudGVyIHRoZSBuZXcga2V5d29yZHMgZm9yIHRoaXMgcGFnZSc7DQokbGFuZ1snaGVscF9uZXdfa2V5d29yZHMnXSA9ICdXaGl0ZXNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGtleXdvcmRzLiBMZWF2ZSBibGFuayB0byByZXZlcnQgdG8gYXV0byBnZW5lcmF0ZWQga2V5d29yZHMnOw0KDQokbGFuZ1snZ3JvdXB0aXRsZV9vcGVuZ3JhcGgnXSA9ICdXZSBoYXZlIGRldGVjdGVkICVzIE9wZW5HcmFwaCByZWxhdGVkIHByb2JsZW0ocyknOw0KJGxhbmdbJ2dyb3VwdGl0bGVfc3lzdGVtJ10gPSAnV2UgaGF2ZSBkZXRlY3RlZCAlcyBwcm9ibGVtKHMpIHdpdGggeW91ciBzeXN0ZW0gY29uZmlndXJhdGlvbic7DQokbGFuZ1snZ3JvdXB0aXRsZV9wYWdlcyddID0gJ1dlIGhhdmUgZGV0ZWN0ZWQgJXMgcHJvYmxlbShzKSBvbiB5b3VyIGNvbnRlbnQgcGFnZXMnOw0KJGxhbmdbJ2dyb3VwdGl0bGVfc2V0dGluZ3MnXSA9ICdXZSBoYXZlIGRldGVjdGVkICVzIHByb2JsZW0ocykgd2l0aCB5b3VyIFNFTyBTZXR0aW5ncyc7DQokbGFuZ1snZ3JvdXB0aXRsZV9kZXNjcmlwdGlvbnMnXSA9ICdXZSBoYXZlIGRldGVjdGVkICVzIHByb2JsZW0ocykgd2l0aCB5b3VyIHBhZ2UgZGVzY3JpcHRpb25zJzsNCiRsYW5nWydncm91cHRpdGxlX3RpdGxlcyddID0gJ1dlIGhhdmUgZGV0ZWN0ZWQgJXMgcHJvYmxlbShzKSB3aXRoIHlvdXIgcGFnZSB0aXRsZXMnOw0KDQokbGFuZ1sndmlld19hbGwnXSA9ICdWaWV3IGFsbCc7DQoNCiRsYW5nWyd0aXRsZV9tZXRhc2V0dGluZ3MnXSA9ICdQYWdlIHRpdGxlICYgTWV0YSBpbmZvcm1hdGlvbic7DQokbGFuZ1sndGl0bGVfc2l0ZW1hcHNldHRpbmdzJ10gPSAnU2l0ZW1hcCAmIENyYXdsZXIgc2V0dGluZ3MnOw0KJGxhbmdbJ3RpdGxlX2tleXdvcmRzZXR0aW5ncyddID0gJ0tleXdvcmQgZ2VuZXJhdG9yIHNldHRpbmdzJzsNCg0KJGxhbmdbJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnXSA9ICdBdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGEgcGFnZSBkZXNjcmlwdGlvbiB3aGVyZSBub25lIGlzIHByb3ZpZGVkJzsNCiRsYW5nWydkZXNjcmlwdGlvbl9hdXRvX3RpdGxlJ10gPSAnVGV4dCBmb3IgYXV0by1nZW5lcmF0ZWQgZGVzY3JpcHRpb25zJzsNCiRsYW5nWydkZXNjcmlwdGlvbl9hdXRvX2hlbHAnXSA9ICcoWW91IDxiPm11c3Q8L2I+IGluY2x1ZGUgdGhlIHRhZyB7a2V5d29yZHN9IGhlcmUpJzsNCg0KJGxhbmdbJ3NldF91cF9hdXRvX2Rlc2NyaXB0aW9uJ10gPSAnU2V0IHVwIHRoZSBkZXNjcmlwdGlvbiBhdXRvLWdlbmVyYXRvciBhbmQgZW5zdXJlIHRoZSB0ZXh0IGNvbnRhaW5zIHRoZSB0YWcge2tleXdvcmRzfSc7DQokbGFuZ1snYXV0b19nZW5lcmF0ZWQnXSA9ICdBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCc7DQokbGFuZ1snYW5kJ10gPSAnYW5kJzsNCg0KJGxhbmdbJ3RpdGxlX2tleXdvcmRfd2VpZ2h0J10gPSAnS2V5d29yZCB3ZWlnaHQgc2V0dGluZ3MnOw0KJGxhbmdbJ2tleXdvcmRfbWlubGVuZ3RoX3RpdGxlJ10gPSAnTWluaW11bSBrZXl3b3JkIGxlbmd0aCc7DQokbGFuZ1sna2V5d29yZF9taW5sZW5ndGhfaGVscCddID0gJyhUaGUgbWluaW11bSBsZW5ndGggb2YgYSB3b3JkIHRvIGJlIGNvbnNpZGVyZWQgYXMgYSBrZXl3b3JkKSc7DQokbGFuZ1sna2V5d29yZF90aXRsZV93ZWlnaHRfdGl0bGUnXSA9ICdXZWlnaHQgb2Ygd29yZHMgaW4gdGhlIHBhZ2UgdGl0bGUnOw0KJGxhbmdbJ2tleXdvcmRfdGl0bGVfd2VpZ2h0X2hlbHAnXSA9ICcoVGhlIHdlaWdodCBvZiB3b3JkcyBpbiB0aGUgcGFnZSB0aXRsZS4gVGhlIGhpZ2hlciBhIHdvcmRcJ3Mgd2VpZ2h0LCB0aGUgbW9yZSBsaWtlbHkgaXQgaXMgdG8gYmVjb21lIGEga2V5d29yZCknOw0KJGxhbmdbJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0X3RpdGxlJ10gPSAnV2VpZ2h0IG9mIHdvcmRzIGluIHRoZSBwYWdlIGRlc2NyaXB0aW9uJzsNCiRsYW5nWydrZXl3b3JkX2Rlc2NyaXB0aW9uX3dlaWdodF9oZWxwJ10gPSAnKFRoZSB3ZWlnaHQgb2Ygd29yZHMgaW4gdGhlIHBhZ2UgZGVzY3JpcHRpb24uIFRoZSBoaWdoZXIgYSB3b3JkXCdzIHdlaWdodCwgdGhlIG1vcmUgbGlrZWx5IGl0IGlzIHRvIGJlY29tZSBhIGtleXdvcmQpJzsNCiRsYW5nWydrZXl3b3JkX2hlYWRsaW5lX3dlaWdodF90aXRsZSddID0gJ1dlaWdodCBvZiB3b3JkcyBpbiBjb250ZW50IGhlYWRsaW5lcyc7DQokbGFuZ1sna2V5d29yZF9oZWFkbGluZV93ZWlnaHRfaGVscCddID0gJyhUaGUgd2VpZ2h0IG9mIHdvcmRzIGJldHdlZW4gJmx0O2gxJmd0OyB0byAmbHQ7aDYmZ3Q7IHRhZ3MuIFRoZSBoaWdoZXIgYSB3b3JkXCdzIHdlaWdodCwgdGhlIG1vcmUgbGlrZWx5IGl0IGlzIHRvIGJlY29tZSBhIGtleXdvcmQpJzsNCiRsYW5nWydrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0X3RpdGxlJ10gPSAnV2VpZ2h0IG9mIHdvcmRzIGluIHBsYWluIGNvbnRlbnQnOw0KJGxhbmdbJ2tleXdvcmRfY29udGVudF93ZWlnaHRfaGVscCddID0gJyhUaGUgd2VpZ2h0IG9mIHdvcmRzIGluc2lkZSB0aGUgcGxhaW4gY29udGVudC4gVGhlIGhpZ2hlciBhIHdvcmRcJ3Mgd2VpZ2h0LCB0aGUgbW9yZSBsaWtlbHkgaXQgaXMgdG8gYmVjb21lIGEga2V5d29yZCknOw0KDQokbGFuZ1sna2V5d29yZF9taW5pbXVtX3dlaWdodF90aXRsZSddID0gJ01pbmltdW0gdG90YWwgd2VpZ2h0IG9mIGEga2V5d29yZCc7DQokbGFuZ1sna2V5d29yZF9taW5pbXVtX3dlaWdodF9oZWxwJ10gPSAnKFRoZSBtaW5pbXVtIHRvdGFsIHdlaWdodCBvZiBhIHdvcmQgdG8gYmVjb21lIGEga2V5d29yZC4gU2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB0aGUgaGlnaGVzdCB3ZWlnaHQgZnJvbSBhYm92ZS4gVGhlIHNtYWxsZXIgdGhlIG51bWJlciwgdGhlIG1vcmUga2V5d29yZHMgeW91IGdldCknOw0KDQokbGFuZ1snaGVscF9rZXl3b3JkX2dlbmVyYXRvciddID0gJ1RoZSBzZXR0aW5ncyB5b3UgY2hhbmdlIG9uIHRoaXMgcGFnZSB3aWxsIG5vdCBhZmZlY3QgYW55IGtleXdvcmRzIHlvdSBlbnRlciBtYW51YWxseS4gRmVlbCBmcmVlIHRvIHBsYXkgd2l0aCBhbGwgdmFsdWVzIHVudGlsIHlvdSBnZXQgdGhlIGJlc3QgcmVzdWx0cyBmb3IgeW91ciBwYWdlLic7DQoNCiRsYW5nWyd0aXRsZV9rZXl3b3JkX2V4Y2x1ZGUnXSA9ICdLZXl3b3JkIGV4Y2x1c2lvbiBsaXN0JzsNCiRsYW5nWydrZXl3b3JkX2V4Y2x1ZGVfdGl0bGUnXSA9ICdXb3JkcyB0byBuZXZlciBjb25zaWRlciBhcyBrZXl3b3Jkcyc7DQokbGFuZ1sna2V5d29yZF9leGNsdWRlX2hlbHAnXSA9ICcoUHJvdmlkZSBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIHdvcmRzIHRoYXQgc2hvdWxkIG5ldmVyIGFwcGVhciBpbiBrZXl3b3JkIGxpc3RzKSc7DQoNCiRsYW5nWydpbmNyZWFzZV9wcmlvcml0eSddID0gJ0luY3JlYXNlIHByaW9yaXR5IGJ5IDEwJSc7DQokbGFuZ1snZGVjcmVhc2VfcHJpb3JpdHknXSA9ICdJbmNyZWFzZSBwcmlvcml0eSBieSAxMCUnOw0KDQokbGFuZ1sndGl0bGVfcmVnZW5lcmF0ZV9zaXRlbWFwJ10gPSAiUmVnZW5lcmF0ZSBzaXRlbWFwIGFuZCByb2JvdHMudHh0IjsNCiRsYW5nWydidXR0b25fcmVnZW5lcmF0ZV9zaXRlbWFwJ10gPSAiUmVnZW5lcmF0ZSBzaXRlbWFwIGFuZCByb2JvdHMudHh0IG5vdyI7DQokbGFuZ1sndGV4dF9yZWdlbmVyYXRlX3NpdGVtYXAnXSA9ICJJdCBjYW4gYmUgbmVjZXNzYXJ5IHRvIHJlZ2VuZXJhdGUgdGhlIHNpdGVtYXAgYW5kIHJvYm90cy50eHQgZmlsZSBhZnRlciBleHRlbnNpdmUgY2hhbmdlcyB0byB0aGUgcGFnZSBzdHJ1Y3R1cmUiOw0KJGxhbmdbJ3NpdGVtYXBfcmVnZW5lcmF0ZWQnXSA9ICJCb3RoIHRoZSBzaXRlbWFwIGFuZCB0aGUgcm9ib3RzLnR4dCBmaWxlcyBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IHJlZ2VuZXJhdGVkLiI7DQoNCiRsYW5nWydpbnN0YWxsX2RhdGFiYXNlX2Vycm9yJ10gPSAiQW4gZXJyb3IgaGFzIG9jY3VyZWQgZHVyaW5nIGluc3RhbGxhdGlvbjogVGhlIGRhdGFiYXNlIHRhYmxlIGNvdWxkIG5vdCBiZSBjcmVhdGVkLiI7DQokbGFuZ1snbm9fdXJsX2ZvcGVuJ10gPSAiTm90IHBvc3NpYmxlIGFzIGFsbG93X3VybF9mb3BlbiBoYXMgbm90IGJlZW4gc2V0IHRvICZxdW90O29uJnF1b3Q7IGluIHlvdXIgcGhwIGNvbmZpZ3VyYXRpb24uIjsNCiRsYW5nWyd0aXRsZV9hZGRpdGlvbmFsX21ldGFfdGFncyddID0gIkFkZGl0aW9uYWwgTWV0YSB0YWdzIjsNCiRsYW5nWydhZGRpdGlvbmFsX21ldGFfdGFnc190aXRsZSddID0gIkFkZGl0aW9uYWwgTWV0YSB0YWdzIHRvIGJlIGluc2VydGVkIjsNCiRsYW5nWydhZGRpdGlvbmFsX21ldGFfdGFnc19oZWxwJ10gPSAiU3BlY2lmeSBhZGRpdGlvbmFsIE1ldGEgdGFncyBoZXJlIHRvIGJlIGluc2VydGVkIGludG8gdGhlIHBhZ2UgaGVhZGVyLiBZb3UgY2FuIHVzZSBhbGwgc21hcnR5IHZhcmlhYmxlcyBhbmQgVURUcyBoZXJlLiI7DQoNCiRsYW5nWydoZWxwX3Nob3diYXNlJ10gPSAiU2V0IHRoaXMgcGFyYW1ldGVyIHRvIDxjb2RlPmZhbHNlPC9jb2RlPiB0byBzdXBwcmVzcyB0aGUgb3V0cHV0IG9mIHRoZSBiYXNlIGhyZWYgdGFnLiI7DQoNCiRsYW5nWydjaGFuZ2Vsb2cnXSA9IDw8PEVPVA0KPHVsPg0KPGxpPlZlcnNpb24gMS4wIC0gMjUgSmFudWFyeSAyMDEyLiBJbml0aWFsIHJlbGVhc2UuIFRoaXMgaXMgYSBmb3JrIG9mIHRoZSBTRU9Ub29scyBtb2R1bGUgd2l0aCBDTVNNUyAxLjEwKyBjb21wYXRpYmlsaXR5LiBDaGFuZ2VzIGluY2x1ZGU6DQoJPHVsPg0KCQk8bGk+U2V0IHByZWZlcmVuY2VzIG9uIGluc3RhbGw8L2xpPg0KCQk8bGk+UmVtb3ZlIHByZWZlcmVuY2VzIG9uIHVuaW5zdGFsbDwvbGk+DQoJCTxsaT5SZXBsYWNlIGFsbCByZWZlcmVuY2UgdG8gSGllcmFyY2h5TWFuYWdlciBvYmplY3RzIHdpdGggQ29udGVudE9wZXJhdGlvbnMgb2JqZWN0czwvbGk+DQoJCTxsaT5HZW5lcmF0ZSBhbGwga2V5d29yZHMsIGtleXdvcmQgc3VnZ2VzdGlvbnMsIGRlc2NyaXB0aW9ucyBhbmQgZGVmYXVsdCBkZXNjcmlwdGlvbnM8L2xpPg0KCQk8bGk+R2VuZXJhdGUgc2l0ZW1hcC54bWwgYW5kIHJvYm90cy50eHQgZmlsZXM8L2xpPg0KCQk8bGk+UmV0YWluIGNoZWNrYm94IHByZWZlcmVuY2Ugc2V0dGluZ3MgYWZ0ZXIgc3VibWl0PC9saT4NCgkJPGxpPk9uIGZyb250ZW5kIHBhZ2UgbG9hZCwgZW5zdXJlIHRoYXQgYSBjb3JyZXNwb25kaW5nIHJlY29yZCBleGlzdHMgaW4gdGhlIHNlb3Rvb2xzMiBkYXRhYmFzZSB0YWJsZTwvbGk+DQoJPC91bD4NCjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMSAtIDI1IEphbnVhcnkgMjAxMi4gTWlub3IgYnVnIGZpeDwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMiAtIDEgRmVicnVhcnkgMjAxMi4gQnVnIGZpeDwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMyAtIDEgRmVicnVhcnkgMjAxMi4gQnVnIGZpeDwvbGk+DQo8L3VsPg0KRU9UOw0KDQokbGFuZ1snaGVscCddID0gJzxoMz5XaGF0IERvZXMgVGhpcyBEbz88L2gzPg0KPHA+U0VPVG9vbHMyIGhlbHBzIHlvdSB0byBnZXQgeW91ciBTRU8gKFNlYXJjaCBFbmdpbmUgT3B0aW1pemF0aW9uKSByaWdodC4gVGhlIG1vZHVsZSBhZGRzIHNldmVyYWwgU0VPIGNhcGFiaWxpdGllcyB0byB5b3VyIENNU01TIGluc3RhbGxhdGlvbiBhbmQgYWxlcnRzIHlvdSBpZiB5b3UgbWlzc2VkIG91dCBvbiBzb21ldGhpbmcgU0VPIHJlbGF0ZWQuIEN1cnJlbnRseSwgdGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOjwvcD4NCjx1bD4NCjxsaT4tIGdlbmVyYXRlcyBNZXRhIHRhZ3MgaW4gc3RhbmRhcmQgaHRtbCwgRHVibGluIENvcmUgYW5kIE9wZW5HcmFwaCBmb3JtYXRzPC9saT4NCjxsaT4tIGF1dG9tYXRpY2FsbHkgZXh0cmFjdHMga2V5d29yZHMgZnJvbSB5b3VyIHBhZ2VzIGFuZCBhZGRzIHRoZW0gdG8gdGhlIG1ldGEgdGFncyBhbmQgcGFnZSB0aXRsZTwvbGk+DQo8bGk+LSBsZXRzIHlvdSBkZXRlcm1pbmUgd2l0aCBhIHNpbmdsZSBjbGljayB3aGV0aGVyIGNlcnRhaW4gcGFnZXMgc2hvdWxkIGJlIGluZGV4ZWQgYnkgc2VhcmNoIGVuZ2luZXMgb3Igbm90PC9saT4NCjxsaT4tIGdlbmVyYXRlcyBhIHNpdGVtYXAueG1sIGZpbGUgd2l0aCB5b3VyIHBhZ2VzIHdoaWxlIGdpdmluZyB5b3UgZnVsbCBjb250cm9sIG92ZXIgdGhlIHByaW9yaXRpZXMgb2YgeW91ciBwYWdlczwvbGk+DQo8bGk+LSBnZW5lcmF0ZXMgYSByb2JvdHMudHh0IGZpbGUgZXhwbGljaXRseSBkaXNhbGxvd2luZyBhY2Nlc3MgdG8gcGFnZXMgeW91IGRvblwndCB3YW50IHRvIGJlIGluZGV4ZWQ8L2xpPg0KPGxpPi0gYWxlcnRzIHlvdSB3aGVuIHRoZXJlIGFyZSBzZXZlcmFsIHBhZ2VzIGZlYXR1cmluZyB0aGUgc2FtZSBwYWdlIHRpdGxlcyBhbmQgZGVzY3JpcHRpb25zPC9saT4NCjxsaT4tIGFsZXJ0cyB5b3Ugd2hlbiB2ZXJ5IHNob3J0IHBhZ2UgbWV0YSBkZXNjcmlwdGlvbnMgYXJlIGRldGVjdGVkPC9saT4NCjxsaT4tIGF1dG9tYXRpY2FsbHkgc3VibWl0cyB5b3VyIHNpdGVtYXAgZmlsZSB0byBHb29nbGUgd2hlbiB5b3UgY2hhbmdlIHlvdXIgY29udGVudDwvbGk+DQo8L3VsPg0KPGgzPkhvdyBEbyBJIFVzZSBJdDwvaDM+DQo8cD5GaXJzdCwgb3BlbiBhbGwgdGVtcGxhdGVzIHdoZXJlIHlvdSB3YW50IGRvIHVzZSBTRU9Ub29sczIuIFJlbW92ZSB0aGUgY29tcGxldGUgJmx0O3RpdGxlJmd0OyB0YWcgYW5kIHRoZSB7bWV0YWRhdGF9IHRhZyAoZXZlbiBpZiBpdCBzYXlzIHRvIG5ldmVyIHJlbW92ZSBpdCkgYW5kIHJlcGxhY2UgdGhlbSB3aXRoIHRoZSB0YWc8L3A+DQo8cHJlPg0Ke1NFT1Rvb2xzMn0NCjwvcHJlPjxiciAvPg0KPHA+TmV4dCwgYXQgdGhlIGJvdHRvbSBvZiB5b3VyIHRlbXBsYXRlIChhZnRlciB0aGUgY2xvc2luZyAmbHQ7L2JvZHkmZ3Q7IHRhZyksIGluc2VydCB0aGUgZm9sbG93aW5nIGNvZGU6PC9wPg0KPHByZT4NCntjYXB0dXJlIGFzc2lnbj1tZXRhZGVzY3JpcHRpb259e2NvbnRlbnQgYmxvY2s9bWV0YWRlc2NyaXB0aW9uIGxhYmVsPSJQYWdlIERlc2NyaXB0aW9uIiBvbmVsaW5lPSJ0cnVlIn17L2NhcHR1cmV9DQo8L3ByZT48YnIgLz4NCjxwPlRoaXMgaXMgd2hlcmUgeW91XCdsbCBlbnRlciBhIHNob3J0IHBhZ2UgZGVzY3JpcHRpb24gKG9uZSBvciB0d28gc2VudGVuY2VzKSB0aGF0IHdpbGwgYXBwZWFyIGluIHRoZSBzZWFyY2ggZW5naW5lXCdzIHJlc3VsdHMgYW5kIGlmLCBmb3IgZXhhbXBsZSwgc29tZW9uZSBzaGFyZXMgYSBsaW5rIHRvIHlvdXIgcGFnZSBvbiBmYWNlYm9vay48L3A+DQo8cD5Ob3csIHZpc2l0IHRoZSBzZXR0aW5ncyB0YWJzIGZvciBwYWdlIHRpdGxlICYgbWV0YSBpbmZvcm1hdGlvbiwgdGhlIHNpdGVtYXAgJiBjcmF3bGVyIHNldHRpbmdzIGFuZCB0aGUga2V5d29yZCBnZW5lcmF0b3Igc2V0dGluZ3MgYW5kIGZpbGwgaW4gYWxsIHJlcXVpcmVkIGluZm9ybWF0aW9uIGZvciB5b3VyIHBhZ2UuIFVuZGVyICJOYW1lIG9mIHBhZ2UgZGVzY3JpcHRpb24gY29udGVudCBibG9jayIgeW91IG5lZWQgdG8gZW50ZXIgdGhlIG5hbWUgb2YgdGhlIGNvbnRlbnQgYmxvY2sgeW91IGp1c3QgYWRkZWQgdG8geW91ciB0ZW1wbGF0ZXMgKCJQYWdlIERlc2NyaXB0aW9uIiBpbiBvdXIgZXhhbXBsZSkuIFRoZSB0YWIgIlNFTyBBbGVydHMiIHdpbGwgYWxlcnQgeW91IGlmIGl0IGRldGVjdHMgYW55dGhpbmcgdGhhdCBpcyByZXF1aXJlZCBidXQgbm90IGFjdGl2YXRlZCBvciBmaWxsZWQgaW4uIFlvdSBzaG91bGQgYWxzbyBjb25zaWRlciBzaWduaW5nIHVwIHlvdXINCnNpdGUgd2l0aCBHb29nbGUgV2VibWFzdGVyIHRvb2xzLiBUaGVyZSwgc2VsZWN0ICJNZXRhIHRhZyB2YWxpZGF0aW9uIiBhbmQgcGFzdGUgdGhlIHZlcmlmaWNhdGlvbiBjb2RlIChxdWl0ZSBhIGxvbmcgc3RyaW5nIG9mIGNoYXJhY3RlcnMgYW5kIG51bWJlcnMpIGludG8gdGhlIGJveCAiVmVyaWZpY2F0aW9uIENvZGUiIGluICJTRU8gU2V0dGluZ3MiIHRvIGF1dG9tYXRpY2FsbHkgdmVyaWZ5IHRoYXQgeW91IGFyZSByZWFsbHkNCnRoZSBvd25lciBvZiB5b3VyIHBhZ2UgKG5vIG5lZWQgdG8gcGFzdGUgdGhlIEdvb2dsZSBNZXRhLWNvZGUgaW50byB5b3VyIHRlbXBsYXRlKS48L3A+DQo8cD5BcyBzb29uIGFzIGV2ZXJ5dGhpbmcgaXMgc2V0IHVwLCBsb29rIGF0IHRoZSAiU0VPIEFsZXJ0cyIgdGFiIGFuZCBmaXggYWxsIHByb2JsZW1zIGRldGVjdGVkIGhlcmUuIFRha2UgY2FyZSB0byBpbnNlcnQgYSAodW5pcXVlKSBwYWdlIGRlc2NyaXB0aW9uIG9uIGV2ZXJ5IHBhZ2UgeW91IGVkaXQgaW4gdGhlIGZpZWxkICJQYWdlIERlc2NyaXB0aW9uIiBhdCB0aGUgYm90dG9tIG9mIHlvdXIgIkVkaXQgUGFnZSIgZm9ybS48L3A+DQo8cD5UbyBzZXQgeW91ciBvd24ga2V5d29yZHMgKGluc3RlYWQgb2YgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG9uZXMpIG9yIE9wZW5HcmFwaCB0eXBlIGZvciBjZXJ0YWluIHBhZ2VzLCB2aXNpdCB0aGUgIlBhZ2Ugc2V0dGluZ3MiIHRhYiB3aGVyZSB5b3VcJ2xsIGZpbmQgYSBsaXN0IG9mIGFsbCBwYWdlcyB5b3UgaGF2ZSBpbiB5b3VyIHN5c3RlbS4gVGhlcmUsIHlvdSBjYW4gYWxzbyBjaGFuZ2UgdGhlIHNpdGVtYXAgcHJpb3JpdHkgKHdoaWNoIGlzIGF1dG8tY2FsY3VsYXRlZCBieSBkZWZhdWx0KSBvZiBhIHBhZ2UgdG8gaW5kaWNhdGUgdGhhdCBpdCBzaG91bGQNCmJlIGNvbnNpZGVyZWQgbW9yZSBpbXBvcnRhbnQgZm9yIHNlYXJjaCBlbmdpbmUgbWF0Y2hlcyBvbiB5b3VyIHBhZ2Ugb3IgZXhjbHVkZSBjZXJ0YWluIHBhZ2VzIGZyb20gdGhlIHNlYXJjaCBpbmRleC48L3A+DQo8cD5TRU9Ub29sczIgd2lsbCBhbHNvIGF1dG9tYXRpY2FsbHkgaW5zZXJ0IGEgbGluayB0byB0aGUgaW1hZ2UgdG8gYmUgdXNlZCBhcyB0aGUgbWFpbiBpbWFnZSBvZiB5b3VyIHBhZ2UgaWYgeW91IHNlbGVjdCBhbiAiSW1hZ2UiIGZvciB0aGUgcGFnZSBmcm9tIHdpdGhpbiB5b3VyIHBhZ2VcJ3MgIk9wdGlvbnMiIHRhYiAodGhpcyBpcyBpbXBvcnRhbnQgZm9yIHBlb3BsZSBzdWJtaXR0aW5nIGEgbGluayB0byB5b3VyIHBhZ2UgZS5nLiBvbiBmYWNlYm9vaykuIEFsc28sIGlmIHlvdSBhcmUgdXNpbmcgT3BlbkdyYXBoLCB0aGUgaW1hZ2Ugc2VsZWN0ZWQgaGVyZQ0Kd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCBPcGVuR3JhcGggaW1hZ2UgeW91IHNwZWNpZmllZCBmcm9tIHdpdGhpbiAiU0VPIFNldHRpbmdzIi4gUGxlYXNlIGJlIGF3YXJlIHRoYXQgeW91IG5lZWQgdG8gdXBsb2FkIHRob3NlIGltYWdlcyB0byB5b3VyIC91cGxvYWRzL2ltYWdlcyBkaXJlY3RvcnkuPC9wPg0KPGgzPkNhbiBJIHVzZSBzbWFydHkgdmFyaWFibGVzPzwvaDM+DQo8cD5Zb3UgY2FuIHVzZSBhbGwgc21hcnR5IHZhcmlhYmxlcyBhbmQgVURUcyB3aXRoaW4gdGhlIHNldHRpbmdzIGZpZWxkcyA8aT5QYWdlIHRpdGxlPC9pPiwgPGk+TWV0YSBwYWdlIHRpdGxlPC9pPiwgPGk+QXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZGVzY3JpcHRpb25zPC9pPiBhbmQgPGk+QWRkaXRpb25hbCBtZXRhIHRhZ3M8L2k+LiBFbnRlciA8Y29kZT57ZGVidWd9PC9jb2RlPiB0byBzZWUgYSBsaXN0IG9mIGFsbCBhdmFpbGFibGUgdmFyaWFibGVzLjwvcD4NCjxoMz5XaGljaCBzbWFydHkgdmFyaWFibGVzIGFyZSBleHBvcnRlZCBieSBTRU9Ub29sczI/PC9oMz4NCjxjb2RlPnskc2VvX2tleXdvcmRzfTwvY29kZT46IEEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYWxsIGtleXdvcmRzIHNldCBmb3IgdGhlIHBhZ2UgKGluY2x1ZGluZyB0aGUgZGVmYXVsdCBrZXl3b3Jkcyk8YnIgLz4NCjxjb2RlPnskdGl0bGVfa2V5d29yZHN9PC9jb2RlPjogQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBhbGwga2V5d29yZHMgc2V0IGZvciB0aGUgcGFnZSAoaW5jbHVkaW5nIHRoZSBkZWZhdWx0IGtleXdvcmRzKTxiciAvPg0KPGNvZGU+eyRkZWZhdWx0X2tleXdvcmRzfTwvY29kZT46IEEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgYWxsIGRlZmF1bHQga2V5d29yZHM8YnIgLz4NCjxjb2RlPnskcGFnZV9rZXl3b3Jkc308L2NvZGU+OiBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBrZXl3b3JkcyBzZXQgZm9yIHRoZSBwYWdlICh3aXRob3V0IHRoZSBkZWZhdWx0IGtleXdvcmRzKQ0KPGgzPlN1cHBvcnQ8L2gzPg0KPHA+QXMgcGVyIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgcHJvdmlkZWQgYXMtaXMuIFBsZWFzZSByZWFkIHRoZSB0ZXh0IG9mIHRoZSBsaWNlbnNlIGZvciB0aGUgZnVsbCBkaXNjbGFpbWVyLjwvcD4NCjxoMz5Db3B5cmlnaHQgYW5kIExpY2Vuc2U8L2gzPg0KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEyLCBDbGlwIE1hZ2ljIDxhIGhyZWY9Im1haWx0bzphZG1pbkBjbGlwbWFnaWMuY29tLmF1Ij4mbHQ7YWRtaW5AY2xpcG1hZ2ljLmNvbS5hdSZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+DQo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPic7DQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBJbnN0YWxsKCkNCgkgICBXaGVuIHlvdXIgbW9kdWxlIGlzIGluc3RhbGxlZCwgeW91IG1heSBuZWVkIHRvIGRvIHNvbWUNCgkgICBzZXR1cC4gVHlwaWNhbCB0aGluZ3MgdGhhdCBoYXBwZW4gaGVyZSBhcmUgdGhlIGNyZWF0aW9uDQoJICAgYW5kIHByZXBvcHVsYXRpb24gb2YgZGF0YWJhc2UgdGFibGVzLCBkYXRhYmFzZSBzZXF1ZW5jZXMsDQoJICAgcGVybWlzc2lvbnMsIHByZWZlcmVuY2VzLCBldGMuDQoJICAgCSAgIA0KCSAgIEZvciBpbmZvcm1hdGlvbiBvbiB0aGUgY3JlYXRpb24gb2YgZGF0YWJhc2UgdGFibGVzLA0KCSAgIGNoZWNrIG91dCB0aGUgQURPREIgRGF0YSBEaWN0aW9uYXJ5IHBhZ2UgYXQNCgkgICBodHRwOi8vcGhwbGVucy5jb20vbGVucy9hZG9kYi9kb2NzLWRhdGFkaWN0Lmh0bQ0KCSAgIA0KCSAgIFRoaXMgZnVuY3Rpb24gY2FuIHJldHVybiBhIHN0cmluZyBpbiBjYXNlIG9mIGFueSBlcnJvciwNCgkgICBhbmQgQ01TIHdpbGwgbm90IGNvbnNpZGVyIHRoZSBtb2R1bGUgaW5zdGFsbGVkLg0KCSAgIFN1Y2Nlc3NmdWwgaW5zdGFsbHMgc2hvdWxkIHJldHVybiBGQUxTRSBvciBub3RoaW5nIGF0IGFsbC4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoJCQ0KCQkvLyBUeXBpY2FsIERhdGFiYXNlIEluaXRpYWxpemF0aW9uDQoJCSRkYiA9Y21zbXMoKS0+R2V0RGIoKTsNCgkJDQoJCS8vIG15c3FsLXNwZWNpZmljLCBidXQgaWdub3JlZCBieSBvdGhlciBkYXRhYmFzZQ0KCQkkdGFib3B0YXJyYXkgPSBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpOw0KCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7DQoJCQ0KICAgICAgICAvLyB0YWJsZSBzY2hlbWEgZGVzY3JpcHRpb24NCiAgICAgICAgJGZsZHMgPSAiDQoJCQljb250ZW50X2lkIEkgS0VZLA0KCQkJaW5kZXhhYmxlIEkoMSksDQoJCQlrZXl3b3JkcyBDKDI1NSksDQoJCQlwcmlvcml0eSBJKDMpLA0KCQkJb2d0eXBlIEMoMzIpDQoJCQkiOw0KDQoJCS8vIGNyZWF0ZSBpdC4gVGhpcyBzaG91bGQgZG8gZXJyb3IgY2hlY2tpbmcsIGJ1dCBJJ20gYSBsYXp5IHNvZC4NCgkJJHNxbGFycmF5ID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzMiIsDQoJCQkJJGZsZHMsICR0YWJvcHRhcnJheSk7DQoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkJDQoJCS8vIFRlc3QgaWYgaW5zdGFsbGF0aW9uIHdvcmtlZDoNCgkJJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczInOw0KCQkkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoJCWlmICghJHJlc3VsdCkgew0KCQkJcmV0dXJuICR0aGlzLT5MYW5nKCdpbnN0YWxsX2RhdGFiYXNlX2Vycm9yJyk7DQoJCX0NCgkJDQoJCS8vIHBlcm1pc3Npb25zDQoJCSR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdFZGl0IFNFTyBTZXR0aW5ncycsJ0VkaXQgU0VPIFNldHRpbmdzJyk7DQogICAgICAgICR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdFZGl0IHBhZ2UgZGVzY3JpcHRpb25zJywnRWRpdCBwYWdlIGRlc2NyaXB0aW9ucycpOw0KDQoJCS8vIGFkZCBzaXRlIHByZWZlcmVuY2VzDQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdhZGRpdGlvbmFsX21ldGFfdGFncycsJycpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnY3JlYXRlX3JvYm90cycsMSk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcsMSk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZWZhdWx0X2tleXdvcmRzJywnJyk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvJywnVGhpcyBwYWdlIGNvdmVycyB0aGUgdG9waWNzIHtrZXl3b3Jkc30nKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnLDEpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCcnKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfY29udGVudF93ZWlnaHQnLDEpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHQnLDQpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF9leGNsdWRlJywnaSwgbWUsIG15LCBteXNlbGYsIHdlLCBvdXIsIG91cnMsIG91cnNlbHZlcywgeW91LCB5b3VyLCB5b3VycywgeW91cnNlbGYsIHlvdXJzZWx2ZXMsIGhlLCBoaW0sIGhpcywgaGltc2VsZiwgc2hlLCBoZXIsIGhlcnMsIGhlcnNlbGYsIGl0LCBpdHMsIGl0c2VsZiwgdGhleSwgdGhlbSwgdGhlaXIsIHRoZWlycywgdGhlbXNlbHZlcywgd2hhdCwgd2hpY2gsIHdobywgd2hvbSwgdGhpcywgdGhhdCwgdGhlc2UsIHRob3NlLCBhbSwgaXMsIGFyZSwgd2FzLCB3ZXJlLCBiZSwgYmVlbiwgYmVpbmcsIGhhdmUsIGhhcywgaGFkLCBoYXZpbmcsIGRvLCBkb2VzLCBkaWQsIGRvaW5nLCBhLCBhbiwgdGhlLCBhbmQsIGJ1dCwgaWYsIG9yLCBiZWNhdXNlLCBhcywgdW50aWwsIHdoaWxlLCBvZiwgYXQsIGJ5LCBmb3IsIHdpdGgsIGFib3V0LCBhZ2FpbnN0LCBiZXR3ZWVuLCBpbnRvLCB0aHJvdWdoLCBkdXJpbmcsIGJlZm9yZSwgYWZ0ZXIsIGFib3ZlLCBiZWxvdywgdG8sIGZyb20sIHVwLCBkb3duLCBpbiwgb3V0LCBvbiwgb2ZmLCBvdmVyLCB1bmRlciwgYWdhaW4sIGZ1cnRoZXIsIHRoZW4sIG9uY2UsIGhlcmUsIHRoZXJlLCB3aGVuLCB3aGVyZSwgd2h5LCBob3csIGFsbCwgYW55LCBib3RoLCBlYWNoLCBmZXcsIG1vcmUsIG1vc3QsIG90aGVyLCBzb21lLCBzdWNoLCBubywgbm9yLCBub3QsIG9ubHksIG93biwgc2FtZSwgc28sIHRoYW4sIHRvbywgdmVyeSwgbG9yZW0sIGNvbWluZycpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF9oZWFkbGluZV93ZWlnaHQnLDIpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5pbXVtX3dlaWdodCcsNyk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdrZXl3b3JkX21pbmxlbmd0aCcsNSk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdrZXl3b3JkX3RpdGxlX3dlaWdodCcsNik7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX2NvbnRyaWJ1dG9yJywnJyk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX2NvcHlyaWdodCcsJycpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9kdWJsaW5jb3JlJywwKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfbGF0aXR1ZGUnLCcnKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfbG9jYXRpb24nLCcnKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfbG9uZ2l0dWRlJywnJyk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaCcsMCk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hZG1pbnMnLCcnKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJywnJyk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9pbWFnZScsJycpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnLCcnKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3RpdGxlJywne3RpdGxlfScpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdHlwZScsJycpOw0KCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9wdWJsaXNoZXInLCcnKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJywnJyk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX3N0YW5kYXJkJywxKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcsMSk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0aXRsZScsJ3t0aXRsZX0gfCB7JHNpdGVuYW1lfSAtIHskdGl0bGVfa2V5d29yZHN9Jyk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0aXRsZV9tZXRhJywne3RpdGxlfSB8IHskc2l0ZW5hbWV9Jyk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwcmVmX3ZlcmlmaWNhdGlvbicsJycpOw0KCQkNCgkJLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nDQoJCSR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygnaW5zdGFsbGVkJywkdGhpcy0+R2V0VmVyc2lvbigpKSk7DQoJCQ0KPz4=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBVbmluc3RhbGwoKQ0KCSAgIFNvbWV0aW1lcywgYW4gZXhjZXB0aW9uYWxseSB1bmVubGlnaHRlbmVkIG9yIGlnbm9yYW50DQoJICAgYWRtaW4gd2lsbCB3aXNoIHRvIHVuaW5zdGFsbCB5b3VyIG1vZHVsZS4gV2hpbGUgaXQNCgkgICB3b3VsZCBiZSBiZXN0IHRvIGxheSBpbnRvIHRoZXNlIGlkaW90cyB3aXRoIGEgY2x1ZXN0aWNrLA0KCSAgIHdlIHdpbGwgZG8gdGhlIG1hZ25hbmltb3VzIHRoaW5nIGFuZCByZW1vdmUgdGhlIG1vZHVsZQ0KCSAgIGFuZCBjbGVhbiB1cCB0aGUgZGF0YWJhc2UsIHBlcm1pc3Npb25zLCBhbmQgcHJlZmVyZW5jZXMNCgkgICB0aGF0IGFyZSBzcGVjaWZpYyB0byBpdC4NCgkgICBUaGlzIGlzIHRoZSBtZXRob2Qgd2hlcmUgd2UgZG8gdGhpcy4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoNCgkJLy8gVHlwaWNhbCBEYXRhYmFzZSBSZW1vdmFsDQoJCSRkYiA9IGNtc21zKCktPkdldERiKCk7DQoJCQ0KCQkvLyByZW1vdmUgdGhlIGRhdGFiYXNlIHRhYmxlDQoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOw0KCQkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9zZW90b29sczIiICk7DQoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsJCQ0KCQkNCgkJLy8gcmVtb3ZlIHRoZSBwZXJtaXNzaW9ucw0KCQkkdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignRWRpdCBTRU8gU2V0dGluZ3MnKTsNCiAgICAgICAgJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ0VkaXQgcGFnZSBkZXNjcmlwdGlvbnMnKTsNCgkJDQoJCS8vIHJlbW92ZSBzaXRlIHByZWZlcmVuY2VzDQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdhZGRpdGlvbmFsX21ldGFfdGFncycpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnY3JlYXRlX3JvYm90cycpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2RlZmF1bHRfa2V5d29yZHMnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG8nKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2Jsb2NrJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0Jyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdrZXl3b3JkX2Rlc2NyaXB0aW9uX3dlaWdodCcpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgna2V5d29yZF9leGNsdWRlJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdrZXl3b3JkX2hlYWRsaW5lX3dlaWdodCcpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgna2V5d29yZF9taW5pbXVtX3dlaWdodCcpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgna2V5d29yZF9taW5sZW5ndGgnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2tleXdvcmRfdGl0bGVfd2VpZ2h0Jyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX2NvbnRyaWJ1dG9yJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX2NvcHlyaWdodCcpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9kdWJsaW5jb3JlJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX2xhdGl0dWRlJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX2xvY2F0aW9uJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX2xvbmdpdHVkZScpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGgnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FkbWlucycpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb24nKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2ltYWdlJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3R5cGUnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfcHVibGlzaGVyJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX3JlZ2lvbicpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9zdGFuZGFyZCcpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgncHVzaF9zaXRlbWFwJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCd0aXRsZScpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgndGl0bGVfbWV0YScpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgncHJlZl92ZXJpZmljYXRpb24nKTsNCgkJDQoJCS8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZw0KCQkkdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ3VuaW5zdGFsbGVkJykpOw0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBVcGdyYWRlKCkNCgkgICBJZiB5b3VyIG1vZHVsZSB2ZXJzaW9uIG51bWJlciBkb2VzIG5vdCBtYXRjaCB0aGUgdmVyc2lvbg0KCSAgIG51bWJlciBvZiB0aGUgaW5zdGFsbGVkIG1vZHVsZSwgdGhlIENNUyBBZG1pbiB3aWxsIGdpdmUNCgkgICB5b3UgYSBjaGFuY2UgdG8gdXBncmFkZSB0aGUgbW9kdWxlLiBUaGlzIGlzIHRoZSBmdW5jdGlvbg0KCSAgIHRoYXQgYWN0dWFsbHkgaGFuZGxlcyB0aGUgdXBncmFkZS4NCgkgICBJZGVhbGx5LCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBoYW5kbGUgdXBncmFkZXMgaW5jcmVtZW50YWxseSwNCgkgICBzbyB5b3UgY291bGQgdXBncmFkZSBmcm9tIHZlcnNpb24gMC4wLjEgdG8gMTAuNS43IHdpdGgNCgkgICBhIHNpbmdsZSBjYWxsLiBGb3IgYSBncmVhdCBleGFtcGxlIG9mIHRoaXMsIHNlZSB0aGUgTmV3cw0KCSAgIG1vZHVsZSBpbiB0aGUgc3RhbmRhcmQgQ01TIGluc3RhbGwuDQoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KCQkkY3VycmVudF92ZXJzaW9uID0gJG9sZHZlcnNpb247DQoJCXN3aXRjaCgkY3VycmVudF92ZXJzaW9uKQ0KCQl7DQoJCQljYXNlICIxLjAiOg0KCQkJY2FzZSAiMS4wLjEiOg0KCQkJY2FzZSAiMS4wLjIiOg0KCQkJZGVmYXVsdDoNCgkJCSAgICAgYnJlYWs7DQoJCX0NCgkJDQoJCS8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZw0KCQkkdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ3VwZ3JhZGVkJywkdGhpcy0+R2V0VmVyc2lvbigpKSk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/SEOTools2.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogU0VPVG9vbHMyIC0gU2V2ZXJhbCB0b29scyB0byBoZWxwIHdpdGggU2VhcmNoIEVuZ2luZSBPcHRpbWl6YXRpb24gYW5kIGNoZWNrIGZvciBzdWJvcHRpbWFsIFNFTy1yZWxhdGVkIHRoaW5ncy4NCiMgVmVyc2lvbjogMS4wLCBDbGlwIE1hZ2ljDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMTAgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIyBUaGlzIGZpbGUgb3JpZ2luYWxseSBjcmVhdGVkIGJ5IE1vZHVsZU1ha2VyIG1vZHVsZSwgdmVyc2lvbiAwLjMuMg0KIyBDb3B5cmlnaHQgKGMpIDIwMTAgYnkgU2FtdWVsIEdvbGRzdGVpbiAoc2pnQGNtc21hZGVzaW1wbGUub3JnKQ0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KLy9lcnJvcl9yZXBvcnRpbmcoRV9BTEwpOw0KDQokY29uZmlnID0gY21zbXMoKS0+Z2V0Q29uZmlnKCk7DQoNCg0KY2xhc3MgU0VPVG9vbHMyIGV4dGVuZHMgQ01TTW9kdWxlDQp7DQoNCiAgZnVuY3Rpb24gR2V0TmFtZSgpDQogIHsNCiAgICByZXR1cm4gJ1NFT1Rvb2xzMic7DQogIH0NCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0RnJpZW5kbHlOYW1lKCkNCiAgIFRoaXMgY2FuIHJldHVybiBhbnkgc3RyaW5nLCBwcmVmZXJhYmx5IGEgbG9jYWxpemVkIG5hbWUNCiAgIG9mIHRoZSBtb2R1bGUuIFRoaXMgaXMgdGhlIG5hbWUgdGhhdCdzIHNob3duIGluIHRoZQ0KICAgQWRtaW4gTWVudXMgYW5kIHNlY3Rpb24gcGFnZXMgKGlmIHRoZSBtb2R1bGUgaGFzIGFuIGFkbWluDQogICBjb21wb25lbnQpLg0KDQogICBTZWUgdGhlIG5vdGUgb24gbG9jYWxpemF0aW9uIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyk7DQogIH0NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBHZXRWZXJzaW9uKCkNCiAgIFRoaXMgY2FuIHJldHVybiBhbnkgc3RyaW5nLCBwcmVmZXJhYmx5IGEgbnVtYmVyIG9yDQogICBzb21ldGhpbmcgdGhhdCBtYWtlcyBzZW5zZSBmb3IgZGVzaWduYXRpbmcgYSB2ZXJzaW9uLg0KICAgVGhlIENNUyB3aWxsIHVzZSB0aGlzIHRvIGlkZW50aWZ5IHdoZXRoZXIgb3Igbm90DQogICB0aGUgaW5zdGFsbGVkIHZlcnNpb24gb2YgdGhlIG1vZHVsZSBpcyBjdXJyZW50LCBhbmQNCiAgIHRoZSBtb2R1bGUgd2lsbCB1c2UgaXQgdG8gZmlndXJlIG91dCBob3cgdG8gdXBncmFkZQ0KICAgaXRzZWxmIGlmIHJlcXVlc3RlZC4NCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIEdldFZlcnNpb24oKQ0KICB7DQogICAgcmV0dXJuICcxLjAuMyc7DQogIH0NCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0SGVscCgpDQogICBUaGlzIHJldHVybnMgSFRNTCBpbmZvcm1hdGlvbiBvbiB0aGUgbW9kdWxlLg0KICAgVHlwaWNhbGx5LCB5b3UnbGwgd2FudCB0byBpbmNsdWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0bw0KICAgdXNlIHRoZSBtb2R1bGUuDQoNCiAgIFNlZSB0aGUgbm90ZSBvbiBsb2NhbGl6YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXRIZWxwKCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOw0KICB9DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEdldEF1dGhvcigpDQogICBUaGlzIHJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIE1vZHVsZQ0KICAgQWRtaW4gaWYgeW91IGNsaWNrIG9uIHRoZSAiQWJvdXQiIGxpbmsuDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXRBdXRob3IoKQ0KICB7DQogICAgcmV0dXJuICdDbGlwIE1hZ2ljJzsNCiAgfQ0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBHZXRBdXRob3JFbWFpbCgpDQogICBUaGlzIHJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIE1vZHVsZQ0KICAgQWRtaW4gaWYgeW91IGNsaWNrIG9uIHRoZSAiQWJvdXQiIGxpbmsuIEl0IGhlbHBzIHVzZXJzDQogICBvZiB5b3VyIG1vZHVsZSBnZXQgaW4gdG91Y2ggd2l0aCB5b3UgdG8gc2VuZCBidWcgcmVwb3J0cywNCiAgIHF1ZXN0aW9ucywgY2FzZXMgb2YgYmVlciwgYW5kL29yIGxhcmdlIHN1bXMgb2YgbW9uZXkuDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpDQogIHsNCiAgICByZXR1cm4gJ2FkbWluQGNsaXBtYWdpYy5jb20uYXUnOw0KICB9DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEdldENoYW5nZUxvZygpDQogICBUaGlzIHJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIG1vZHVsZQ0KICAgQWRtaW4gaWYgeW91IGNsaWNrIG9uIHRoZSBBYm91dCBsaW5rLiBJdCBoZWxwcyB1c2Vycw0KICAgZmlndXJlIG91dCB3aGF0J3MgY2hhbmdlZCBiZXR3ZWVuIHJlbGVhc2VzLg0KICAgU2VlIHRoZSBub3RlIG9uIGxvY2FsaXphdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4NCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOw0KICB9DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIElzUGx1Z2luTW9kdWxlKCkNCiAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlIG9yIGZhbHNlLCBkZXBlbmRpbmcgdXBvbg0KICAgd2hldGhlciB1c2VycyBjYW4gaW5jbHVkZSB0aGUgbW9kdWxlIGluIGEgcGFnZSBvcg0KICAgdGVtcGxhdGUgdXNpbmcgYSBzbWFydHkgdGFnIG9mIHRoZSBmb3JtDQogICB7Y21zX21vZHVsZSBtb2R1bGU9J1NFT1Rvb2xzMicgcGFyYW0xPXZhbCBwYXJhbTI9dmFsLi4ufQ0KDQogICBJZiB5b3VyIG1vZHVsZSBkb2VzIG5vdCBnZXQgaW5jbHVkZWQgaW4gcGFnZXMgb3INCiAgIHRlbXBsYXRlcywgcmV0dXJuICJmYWxzZSIgaGVyZS4NCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkNCiAgew0KICAgIHJldHVybiB0cnVlOw0KICB9DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEhhc0FkbWluKCkNCiAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUsIGRlcGVuZGluZyBvbg0KICAgd2hldGhlciB5b3VyIG1vZHVsZSBhZGRzIGFueXRoaW5nIHRvIHRoZSBBZG1pbiBhcmVhIG9mDQogICB0aGUgc2l0ZS4gRm9yIHRoZSByZXN0IG9mIHRoZXNlIGNvbW1lbnRzLCBJJ2xsIGJlIGNhbGxpbmcNCiAgIHRoZSBhZG1pbiBwYXJ0IG9mIHlvdXIgbW9kdWxlIHRoZSAiQWRtaW4gUGFuZWwiIGZvcg0KICAgd2FudCBvZiBhIGJldHRlciB0ZXJtLg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gSGFzQWRtaW4oKQ0KICB7DQogICAgcmV0dXJuIHRydWU7DQogIH0NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBHZXRBZG1pblNlY3Rpb24oKQ0KICAgSWYgeW91ciBtb2R1bGUgaGFzIGFuIEFkbWluIFBhbmVsLCB5b3UgY2FuIHNwZWNpZnkNCiAgIHdoaWNoIEFkbWluIFNlY3Rpb24gKG9yIHRvcC1sZXZlbCBBZG1pbiBNZW51KSBpdCBzaG93cw0KICAgdXAgaW4uIFRoaXMgbWV0aG9kIHJldHVybnMgYSBzdHJpbmcgdG8gc3BlY2lmeSB0aGF0DQogICBzZWN0aW9uLiBWYWxpZCByZXR1cm4gdmFsdWVzIGFyZToNCg0KICAgbWFpbiAgICAgICAgLSB0aGUgTWFpbiBtZW51IHRhYi4NCiAgIGNvbnRlbnQgICAgIC0gdGhlIENvbnRlbnQgbWVudQ0KICAgbGF5b3V0ICAgICAgLSB0aGUgTGF5b3V0IG1lbnUNCiAgIHVzZXJzZ3JvdXBzIC0gdGhlIFVzZXJzIGFuZCBHcm91cHMgbWVudQ0KICAgZXh0ZW5zaW9ucyAgLSB0aGUgRXh0ZW5zaW9ucyBtZW51ICh0aGlzIGlzIHRoZSBkZWZhdWx0KQ0KICAgc2l0ZWFkbWluICAgLSB0aGUgU2l0ZSBBZG1pbiBtZW51DQogICB2aWV3c2l0ZSAgICAtIHRoZSBWaWV3IFNpdGUgbWVudSB0YWINCiAgIGxvZ291dCAgICAgIC0gdGhlIExvZ291dCBtZW51IHRhYg0KDQogICBOb3RlIHRoYXQgaWYgeW91IHBsYWNlIHlvdXIgbW9kdWxlIGluIHRoZSBtYWluLA0KICAgdmlld3NpdGUsIG9yIGxvZ291dCBzZWN0aW9ucywgaXQgd2lsbCBzaG93IHVwIGluIHRoZQ0KICAgbWVudXMsIGJ1dCB3aWxsIG5vdCBiZSB2aXNpYmxlIGluIGFueSB0b3AtbGV2ZWwNCiAgIHNlY3Rpb24gcGFnZXMuDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXRBZG1pblNlY3Rpb24oKQ0KICB7DQogICAgcmV0dXJuICdjb250ZW50JzsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEdldEFkbWluRGVzY3JpcHRpb24oKQ0KICAgSWYgeW91ciBtb2R1bGUgZG9lcyBoYXZlIGFuIEFkbWluIFBhbmVsLCB5b3UNCiAgIGNhbiBoYXZlIGl0IHJldHVybiBhIGRlc2NyaXB0aW9uIHN0cmluZyB0aGF0IGdldHMgc2hvd24NCiAgIGluIHRoZSBBZG1pbiBTZWN0aW9uIHBhZ2UgdGhhdCBjb250YWlucyB0aGUgbW9kdWxlLg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2FkbWluZGVzY3JpcHRpb24nKTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFZpc2libGVUb0FkbWluVXNlcigpDQogICBJZiB5b3VyIG1vZHVsZSBkb2VzIGhhdmUgYW4gQWRtaW4gUGFuZWwsIHlvdQ0KICAgY2FuIGNvbnRyb2wgd2hldGhlciBvciBub3QgaXQncyBkaXNwbGF5ZWQgYnkgdGhlIGJvb2xlYW4NCiAgIHRoYXQgaXMgcmV0dXJuZWQgYnkgdGhpcyBtZXRob2QuIFRoaXMgaXMgcHJpbWFyaWx5IHVzZWQNCiAgIHRvIGhpZGUgbW9kdWxlcyBmcm9tIGFkbWlucyB3aG8gbGFjayBwZXJtaXNzaW9uIHRvIHVzZQ0KICAgdGhlbS4NCg0KICAgVHlwaWNhbGx5LCB5b3UnbGwgdXNlIHNvbWUgcGVybWlzc2lvbiB0byBzZXQgdGhpcw0KICAgKGUuZy4sICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1NvbWUgUGVybWlzc2lvbicpOyApDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ0VkaXQgU0VPIFNldHRpbmdzJyk7DQogIH0NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBDaGVja0FjY2VzcygpDQogICBUaGlzIHdyYXBwZXIgZnVuY3Rpb24gd2lsbCBjaGVjayBhZ2FpbnN0IHRoZSBzcGVjaWZpZWQgcGVybWlzc2lvbiwNCiAgIGFuZCBkaXNwbGF5IGFuIGVycm9yIHBhZ2UgaWYgdGhlIHVzZXIgZG9lc24ndCBoYXZlIGFkZXF1YXRlIHBlcm1pc3Npb25zLg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gQ2hlY2tBY2Nlc3MoJHBlcm0gPSAnRWRpdCBTRU8gU2V0dGluZ3MnKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJHBlcm0pOw0KICB9DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIERpc3BsYXlFcnJvclBhZ2UoKQ0KICAgVGhpcyBpcyBhIHNpbXBsZSBmdW5jdGlvbiBmb3IgZ2VuZXJhdGluZyBlcnJvciBwYWdlcy4NCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIERpc3BsYXlFcnJvclBhZ2UoJGlkLCAmJHBhcmFtcywgJHJldHVybl9pZCwgJG1lc3NhZ2U9JycpDQogIHsNCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2Vycm9yJywgJHRoaXMtPkxhbmcoJ2Vycm9yJykpOw0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ21lc3NhZ2UnLCAkbWVzc2FnZSk7DQoNCiAgICAvLyBEaXNwbGF5IHRoZSBwb3B1bGF0ZWQgdGVtcGxhdGUNCiAgICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2Vycm9yLnRwbCcpOw0KICB9DQoNCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBHZXREZXBlbmRlbmNpZXMoKQ0KICAgWW91ciBtb2R1bGUgbWF5IG5lZWQgYW5vdGhlciBtb2R1bGUgdG8gYWxyZWFkeSBiZSBpbnN0YWxsZWQNCiAgIGJlZm9yZSB5b3UgY2FuIGluc3RhbGwgaXQuDQogICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiB0aG9zZSBkZXBlbmRlbmNpZXMgYW5kDQogICBtaW5pbXVtIHZlcnNpb24gbnVtYmVycyB0aGF0IHRoaXMgbW9kdWxlIHJlcXVpcmVzLg0KDQogICBJdCBzaG91bGQgcmV0dXJuIGFuIGhhc2gsIGVnLg0KICAgcmV0dXJuIGFycmF5KCdzb21lbW9kdWxlJz0+JzEuMCcsICdvdGhlcm1vZHVsZSc9PicxLjEnKTsNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpDQogIHsNCiAgICByZXR1cm4gYXJyYXkoKTsNCiAgfQ0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBNaW5pbXVtQ01TVmVyc2lvbigpDQogICBZb3VyIG1vZHVsZSBtYXkgcmVxdWlyZSBmdW5jdGlvbnMgb3Igb2JqZWN0cyBmcm9tDQogICBhIHNwZWNpZmljIHZlcnNpb24gb2YgQ01TIE1hZGUgU2ltcGxlLg0KICAgRXZlciBzaW5jZSB2ZXJzaW9uIDAuMTEsIHlvdSBjYW4gc3BlY2lmeSB3aGljaCBtaW5pbXVtDQogICBDTVMgTVMgdmVyc2lvbiBpcyByZXF1aXJlZCBmb3IgeW91ciBtb2R1bGUsIHdoaWNoIHdpbGwNCiAgIHByZXZlbnQgaXQgZnJvbSBiZWluZyBpbnN0YWxsZWQgYnkgYSB2ZXJzaW9uIG9mIENNUyB0aGF0DQogICBjYW4ndCBydW4gaXQuDQoNCiAgIFRoaXMgbWV0aG9kIHJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZQ0KICAgbWluaW11bSB2ZXJzaW9uIHRoYXQgdGhpcyBtb2R1bGUgcmVxdWlyZXMuDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpDQogIHsNCiAgICByZXR1cm4gIjEuOS4yIjsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIE1heGltdW1DTVNWZXJzaW9uKCkNCiAgIFlvdSBtYXkgd2FudCB0byBwcmV2ZW50IHBlb3BsZSBmcm9tIHVzaW5nIHlvdXIgbW9kdWxlIGluDQogICBmdXR1cmUgdmVyc2lvbnMgb2YgQ01TIE1hZGUgU2ltcGxlLCBlc3BlY2lhbGx5IGlmIHlvdQ0KICAgdGhpbmsgQVBJIGZlYXR1cmVzIHlvdSB1c2UgbWF5IGNoYW5nZSAtLSBhZnRlciBhbGwsIHlvdQ0KICAgbmV2ZXIgcmVhbGx5IGtub3cgaG93IHRoZSBDTVMgTVMgQVBJIGNvdWxkIGV2b2x2ZS4NCg0KICAgU28sIHRvIHByZXZlbnQgcGVvcGxlIGZyb20gZmxvb2RpbmcgeW91IHdpdGggYnVnIHJlcG9ydHMNCiAgIHdoZW4gYSBuZXcgdmVyc2lvbiBvZiBDTVMgTVMgaXMgcmVsZWFzZWQsIHlvdSBjYW4gc2ltcGx5DQogICByZXN0cmljdCB0aGUgdmVyc2lvbi4gVGhlbiwgb2YgY291cnNlLCB0aGUgb251cyBpcyBvbiB5b3UNCiAgIHRvIHJlbGVhc2UgYSBuZXcgdmVyc2lvbiBvZiB5b3VyIG1vZHVsZSB3aGVuIGEgbmV3IHZlcnNpb24NCiAgIG9mIHRoZSBDTVMgaXMgcmVsZWFzZWQuLi4NCg0KICAgVGhpcyBtZXRob2QgcmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlDQogICBtYXhpbXVtIHZlcnNpb24gdGhhdCB0aGlzIG1vZHVsZSBzdXBwb3J0cy4NCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogLyogZnVuY3Rpb24gTWF4aW11bUNNU1ZlcnNpb24oKQ0KICB7DQogICAgcmV0dXJuOw0KICB9DQoqLw0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBJbnN0YWxsUG9zdE1lc3NhZ2UoKQ0KICAgQWZ0ZXIgaW5zdGFsbGF0aW9uLCB0aGVyZSBtYXkgYmUgdGhpbmdzIHlvdSB3YW50IHRvDQogICBjb21tdW5pY2F0ZSB0byB5b3VyIGFkbWluLiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYQ0KICAgc3RyaW5nIHdoaWNoIHdpbGwgYmUgZGlzcGxheWVkLg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsNCiAgfQ0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBVbmluc3RhbGxQb3N0TWVzc2FnZSgpDQogICBBZnRlciByZW1vdmluZyBhIG1vZHVsZSwgdGhlcmUgbWF5IGJlIHRoaW5ncyB5b3Ugd2FudCB0bw0KICAgY29tbXVuaWNhdGUgdG8geW91ciBhZG1pbi4gVGhpcyBmdW5jdGlvbiByZXR1cm5zIGENCiAgIHN0cmluZyB3aGljaCB3aWxsIGJlIGRpc3BsYXllZC4NCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdHVuaW5zdGFsbCcpOw0KICB9DQoNCg0KICAvKioNCiAgICogVW5pbnN0YWxsUHJlTWVzc2FnZSgpDQogICAqIFRoaXMgYWxsb3dzIHlvdSB0byBkaXNwbGF5IGEgbWVzc2FnZSBhbG9uZyB3aXRoIGEgWWVzL05vIGRpYWxvZyBib3guIElmIHRoZSB1c2VyIHJlc3BvbmRzDQogICAqIGluIHRoZSBhZmZpcm1hdGl2ZSB0byB5b3VyIG1lc3NhZ2UsIHRoZSB1bmluc3RhbGwgd2lsbCBwcm9jZWVkLiBJZiB0aGV5IHJlc3BvbmQgaW4gdGhlDQogICAqIG5lZ2F0aXZlLCB0aGUgdW5pbnN0YWxsIHdpbGwgYmUgY2FuY2VsZWQuIFRodXMsIHlvdXIgbWVzc2FnZSBzaG91bGQgYmUgb2YgdGhlIGZvcm0NCiAgICogIkFsbCBtb2R1bGUgZGF0YSB3aWxsIGJlIGRlbGV0ZWQuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB1bmluc3RhbGwgdGhpcyBtb2R1bGU/Ig0KICAgKg0KICAgKiBJZiB5b3UgZG9uJ3Qgd2FudCB0aGUgZGlhbG9nLCBoYXZlIHRoaXMgbWV0aG9kIHJldHVybiBhIEZBTFNFLCB3aGljaCB3aWxsIGNhdXNlIHRoZQ0KICAgKiBtb2R1bGUgdG8gdW5pbnN0YWxsIGltbWVkaWF0ZWx5IGlmIHRoZSB1c2VyIGNsaWNrcyB0aGUgInVuaW5zdGFsbCIgbGluay4NCiAgICovDQogIGZ1bmN0aW9uIFVuaW5zdGFsbFByZU1lc3NhZ2UoKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdyZWFsbHlfdW5pbnN0YWxsJyk7DQogIH0NCg0KICBmdW5jdGlvbiBHZXROb3RpZmljYXRpb25PdXRwdXQoJHByaW9yaXR5ID0gMykgew0KICAgIGlmIChjb3VudCgkdGhpcy0+Z2V0VXJnZW50QWxlcnRzKCkpID4gMCkgew0KICAgICAgJHRleHQgPSAkdGhpcy0+bGFuZygncHJvYmxlbV9hbGVydCcsQXJyYXkoJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkdGhpcy0+bGFuZygncHJvYmxlbV9saW5rX3RpdGxlJykpKSk7DQoNCiAgICAgICRvYmogPSBuZXcgU3RkQ2xhc3M7DQogICAgICAkb2JqLT5wcmlvcml0eSA9IDM7DQogICAgICAkb2JqLT5odG1sID0gJHRleHQ7DQoNCiAgICAgIHJldHVybiAkb2JqOw0KICAgIH0NCiAgfQ0KDQoNCiAgZnVuY3Rpb24gU2V0UGFyYW1ldGVycygpIHsNCiAgICAkdGhpcy0+UmVnaXN0ZXJNb2R1bGVQbHVnaW4oKTsNCiAgICAkdGhpcy0+YWRkRXZlbnRIYW5kbGVyKCdDb3JlJywnQ29udGVudEVkaXRQb3N0JyxmYWxzZSk7DQogICAgJHRoaXMtPmFkZEV2ZW50SGFuZGxlcignQ29yZScsJ0NvbnRlbnREZWxldGVQb3N0JyxmYWxzZSk7DQoNCiAgICAkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKHRydWUpOw0KDQogICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignc2hvd2Jhc2UnLCAndHJ1ZScsICR0aGlzLT5MYW5nKCdoZWxwX3Nob3diYXNlJykpOw0KICB9DQoNCiAgZnVuY3Rpb24gRG9FdmVudCgkb3JpZ2luLCAkbmFtZSwgJHBhcmFtcykgew0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnKSA9PSAxKSB7DQogICAgICAkdGhpcy0+Y3JlYXRlU2l0ZW1hcCgkdGhpcy0+R2V0UHJlZmVyZW5jZSgncHVzaF9zaXRlbWFwJykgPT0gMSk7DQogICAgfQ0KICB9DQoNCiAgZnVuY3Rpb24gZ2V0VXJnZW50QWxlcnRzKCkgew0KICAgIGdsb2JhbCAkZ0NtczsNCiAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCg0KICAgICRhbGVydHMgPSBBcnJheSgpOw0KICAgIC8vIEVuYWJsZSBQcmV0dHkgVVJMcw0KICAgIGlmICgoJGNvbmZpZ1sndXJsX3Jld3JpdGluZyddICE9ICJtb2RfcmV3cml0ZSIpICYmICgkY29uZmlnWyd1cmxfcmV3cml0aW5nJ10gIT0gJ2ludGVybmFsJykpIHsNCiAgICAgICRhbGVydCA9IEFycmF5KCk7DQogICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnc3lzdGVtJzsNCiAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ2FjdGl2YXRlX3ByZXR0eV91cmxzJyk7DQogICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5sYW5nKCdwcmV0dHlfdXJsc19oZWxwJyk7DQogICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7DQogICAgfQ0KICAgIC8vIE5vIE1ldGEgdGFncyBhcmUgaW5zZXJ0ZWQNCiAgICBpZiAoKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3N0YW5kYXJkJywwKSAhPSAxKSAmJiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfZHVibGluY29yZScsMCkgIT0gMSkpIHsNCiAgICAgICRhbGVydCA9IEFycmF5KCk7DQogICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnc2V0dGluZ3MnOw0KICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygndXNlX3N0YW5kYXJkX29yX2R1YmxpbmNvcmVfbWV0YScpOw0KICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPmxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOw0KICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgIH0NCg0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZScsMCkgIT0gMSkgew0KICAgICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpICE9ICcnKSB7DQogICAgICAgIC8vIFBhZ2VzIHdpdGhvdXQgZGVzY3JpcHRpb24NCiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqLGMuY29udGVudF9pZCBBUyBjaWQsIGMudHlwZSBBUyBjdHlwZSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50IGMgTEVGVCBKT0lOICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50X3Byb3BzIHAgT04gKGMuY29udGVudF9pZCA9IHAuY29udGVudF9pZCBBTkQgcC5wcm9wX25hbWUgPSAiJy5zdHJfcmVwbGFjZSgnICcsJ18nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpKS4nIikgV0hFUkUgKHAuY29udGVudCBJUyBOVUxMIE9SIHAuY29udGVudCA9ICIiKSBBTkQgYy50eXBlID0gImNvbnRlbnQiIExJTUlUIDAsMjEnOw0KICAgICAgICAkcmVzdWx0ID0mICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgICAgICB3aGlsZSAoJHByb2JsZW0gPSAkcmVzdWx0LT5mZXRjaFJvdygpKSB7DQogICAJCSAgCSAgaWYgKCRwcm9ibGVtWydjdHlwZSddID09ICdjb250ZW50Jykgew0KICAgCQkgIAkgICAgJGFsZXJ0ID0gQXJyYXkoKTsNCiAgIAkJICAJICAgICRhbGVydFsnZ3JvdXAnXSA9ICdwYWdlcyc7DQogICAJCSAgCSAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5sYW5nKCdtZXRhX2Rlc2NyaXB0aW9uX21pc3NpbmcnLEFycmF5KCRwcm9ibGVtWydjb250ZW50X25hbWUnXSkpOw0KICAgCQkgIAkgICAgaWYgKGlzc2V0KCRfR0VUWydzcF8nXSkpIHsNCiAgIAkJICAJICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iJy4kY29uZmlnWydyb290X3VybCddLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9zcF89Jy4kX0dFVFsnc3BfJ10uJyZjb250ZW50X2lkPScuJHByb2JsZW1bJ2NpZCddLiciPicuJHRoaXMtPmxhbmcoJ2VkaXRfcGFnZV90b19maXgnKS4nPC9hPic7DQogICAJCSAgCSAgICB9ZWxzZXsNCiAgIAkJICAJICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iJy4kY29uZmlnWydyb290X3VybCddLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9fc3hfPScuJF9HRVRbJ19zeF8nXS4nJmNvbnRlbnRfaWQ9Jy4kcHJvYmxlbVsnY2lkJ10uJyI+Jy4kdGhpcy0+bGFuZygnZWRpdF9wYWdlX3RvX2ZpeCcpLic8L2E+JzsNCiAgIAkJICAJICAgIH0NCiAgIAkJICAJICAgICRhbGVydHNbXSA9ICRhbGVydDsNCiAgIAkJICAJICB9DQogICAgICAgIH0NCiAgICAgIH1lbHNlew0KICAgICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnc2V0dGluZ3MnOw0KICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5sYW5nKCdzZXRfdXBfZGVzY3JpcHRpb25fYmxvY2snKTsNCiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPmxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOw0KICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7DQogICAgICB9DQogICAgfWVsc2VpZihzdHJwb3MoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG8nLCcnKSwne2tleXdvcmRzfScpID09PSBmYWxzZSkgew0KICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsNCiAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdzZXR0aW5ncyc7DQogICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5sYW5nKCdzZXRfdXBfYXV0b19kZXNjcmlwdGlvbicpOw0KICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPmxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOw0KICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgIH0NCg0KICAgIC8vIHNpdGVtYXAueG1sIG5vdCB3cml0ZWFibGUNCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJywxKSA9PSAxKSB7DQogICAgICBpZiAoIWlzX3dyaXRlYWJsZSgkY29uZmlnWydyb290X3BhdGgnXSAuICcvc2l0ZW1hcC54bWwnKSkgew0KICAgICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnc3lzdGVtJzsNCiAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygnc2l0ZW1hcF9ub3Rfd3JpdGVhYmxlJyk7DQogICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmxhbmcoJ2NobW9kX3NpdGVtYXAnKTsNCiAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIHJvYm90cy50eHQgbm90IHdyaXRlYWJsZQ0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3JvYm90cycsMSkgPT0gMSkgew0KICAgICAgJGZwID0gQGZvcGVuKCRjb25maWdbJ3Jvb3RfcGF0aCddIC4gJy9yb2JvdHMudHh0JywiYSIpOw0KICAgICAgQGZjbG9zZSgkZnApOw0KICAgICAgaWYgKCFpc193cml0ZWFibGUoJGNvbmZpZ1sncm9vdF9wYXRoJ10gLiAnL3JvYm90cy50eHQnKSkgew0KICAgICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnc3lzdGVtJzsNCiAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygncm9ib3RzX25vdF93cml0ZWFibGUnKTsNCiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+bGFuZygnY2htb2Rfcm9ib3RzJyk7DQogICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsNCiAgICAgIH0NCiAgICB9DQoNCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoJywwKSA9PSAxKSB7DQogICAgICAvLyBObyBPcGVuR3JhcGggYWRtaW4gc2V0DQogICAgICBpZiAoKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hZG1pbnMnLCcnKSA9PSAnJykgJiYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbicsJycpID09ICcnKSkgew0KICAgICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnb3BlbmdyYXBoJzsNCiAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygnbm9fb3BlbmdyYXBoX2FkbWlucycpOw0KICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+bGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7DQogICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsNCiAgICAgIH0NCiAgICAgIC8vIE5vIE9wZW5HcmFwaCBwYWdlIHR5cGUgc2V0DQogICAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3R5cGUnLCcnKSA9PSAnJykgew0KICAgICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnb3BlbmdyYXBoJzsNCiAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygnbm9fb3BlbmdyYXBoX3R5cGUnKTsNCiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPmxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOw0KICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7DQogICAgICB9DQogICAgICAvLyBObyBPcGVuR3JhcGggc2l0ZW5hbWUgc2V0DQogICAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3NpdGVuYW1lJywnJykgPT0gJycpIHsNCiAgICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsNCiAgICAgICAgJGFsZXJ0Wydncm91cCddID0gJ29wZW5ncmFwaCc7DQogICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ25vX29wZW5ncmFwaF9zaXRlbmFtZScpOw0KICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+bGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7DQogICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsNCiAgICAgIH0NCiAgICAgIC8vIE5vIE9wZW5HcmFwaCBpbWFnZSBzZXQNCiAgICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfaW1hZ2UnLCcnKSA9PSAnJykgew0KICAgICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnb3BlbmdyYXBoJzsNCiAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygnbm9fb3BlbmdyYXBoX2ltYWdlJyk7DQogICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5sYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsNCiAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgICAgfQ0KICAgIH0NCg0KICAgIHJldHVybiAkYWxlcnRzOw0KICB9DQoNCiAgZnVuY3Rpb24gZ2V0SW1wb3J0YW50QWxlcnRzKCkgew0KICAgIGdsb2JhbCAkZ0NtczsNCg0KICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOw0KICAgICRhbGVydHMgPSBBcnJheSgpOw0KDQogICAgLy8gUGFnZXMgd2l0aCBzaG9ydCBkZXNjcmlwdGlvbg0KICAgICRxdWVyeSA9ICdTRUxFQ1QgKixjLmNvbnRlbnRfaWQgQVMgY2lkIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgYyBJTk5FUiBKT0lOICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50X3Byb3BzIHAgT04gKGMuY29udGVudF9pZCA9IHAuY29udGVudF9pZCBBTkQgcC5wcm9wX25hbWUgPSAiJy5zdHJfcmVwbGFjZSgnICcsJ18nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpKS4nIikgV0hFUkUgQ0hBUl9MRU5HVEgocC5jb250ZW50KSA8IDc1IEFORCBjLnR5cGUgPSAiY29udGVudCIgQU5EIHAuY29udGVudCA8PiAiIiBMSU1JVCAwLDIxJzsNCiAgICAkcmVzdWx0ID0mICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgIHdoaWxlICgkcHJvYmxlbSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsNCiAgICAgICRhbGVydCA9IEFycmF5KCk7DQogICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnZGVzY3JpcHRpb25zJzsNCiAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ21ldGFfZGVzY3JpcHRpb25fc2hvcnQnLEFycmF5KCRwcm9ibGVtWydjb250ZW50X25hbWUnXSkpOw0KICAgICAgaWYgKGlzc2V0KCRfR0VUWydzcF8nXSkpIHsNCiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iJy4kY29uZmlnWydyb290X3VybCddLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9zcF89Jy4kX0dFVFsnc3BfJ10uJyZjb250ZW50X2lkPScuJHByb2JsZW1bJ2NpZCddLiciPicuJHRoaXMtPmxhbmcoJ2VkaXRfcGFnZV90b19maXgnKS4nPC9hPic7DQogICAgICB9ZWxzZXsNCiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iJy4kY29uZmlnWydyb290X3VybCddLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9fc3hfPScuJF9HRVRbJ19zeF8nXS4nJmNvbnRlbnRfaWQ9Jy4kcHJvYmxlbVsnY2lkJ10uJyI+Jy4kdGhpcy0+bGFuZygnZWRpdF9wYWdlX3RvX2ZpeCcpLic8L2E+JzsNCiAgICAgIH0NCiAgICAgICRhbGVydHNbXSA9ICRhbGVydDsNCiAgICB9DQoNCiAgICAvLyBQYWdlcyB3aXRoIGR1cGxpY2F0ZSB0aXRsZQ0KICAgICRxdWVyeSA9ICdTRUxFQ1QgYzEuY29udGVudF9hbGlhcyBBUyBjMW5hbWUsIGMxLmNvbnRlbnRfaWQgQVMgYzFpZCwgYzIuY29udGVudF9hbGlhcyBBUyBjMm5hbWUsIGMyLmNvbnRlbnRfaWQgQVMgYzJpZCBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50IGMxIElOTkVSIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgYzIgT04gKGMxLmNvbnRlbnRfbmFtZSA9IGMyLmNvbnRlbnRfbmFtZSBBTkQgYzEuY29udGVudF9pZCA8IGMyLmNvbnRlbnRfaWQpIFdIRVJFIGMxLnR5cGUgPSAiY29udGVudCIgQU5EIGMyLnR5cGUgPSAiY29udGVudCIgTElNSVQgMCwyMSc7DQogICAgJHJlc3VsdCA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCiAgICB3aGlsZSAoJHByb2JsZW0gPSAkcmVzdWx0LT5mZXRjaFJvdygpKSB7DQogICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgJGFsZXJ0Wydncm91cCddID0gJ3RpdGxlcyc7DQogICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5sYW5nKCdkdXBsaWNhdGVfdGl0bGVzJyxBcnJheSgkcHJvYmxlbVsnYzFuYW1lJ10sJHByb2JsZW1bJ2MybmFtZSddKSk7DQogICAgICBpZiAoaXNzZXQoJF9HRVRbJ3NwXyddKSkgew0KICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP3NwXz0nLiRfR0VUWydzcF8nXS4nJmNvbnRlbnRfaWQ9Jy4kcHJvYmxlbVsnYzFpZCddLiciPicuJHRoaXMtPmxhbmcoJ2VkaXRfcGFnZScsQXJyYXkoJHByb2JsZW1bJ2MxbmFtZSddKSkuJzwvYT4nOw0KICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP3NwXz0nLiRfR0VUWydzcF8nXS4nJmNvbnRlbnRfaWQ9Jy4kcHJvYmxlbVsnYzJpZCddLiciPicuJHRoaXMtPmxhbmcoJ2VkaXRfcGFnZScsQXJyYXkoJHByb2JsZW1bJ2MybmFtZSddKSkuJzwvYT4nOw0KICAgICAgfWVsc2V7DQogICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJGNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/X3N4Xz0nLiRfR0VUWydfc3hfJ10uJyZjb250ZW50X2lkPScuJHByb2JsZW1bJ2MxaWQnXS4nIj4nLiR0aGlzLT5sYW5nKCdlZGl0X3BhZ2UnLEFycmF5KCRwcm9ibGVtWydjMW5hbWUnXSkpLic8L2E+JzsNCiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iJy4kY29uZmlnWydyb290X3VybCddLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9fc3hfPScuJF9HRVRbJ19zeF8nXS4nJmNvbnRlbnRfaWQ9Jy4kcHJvYmxlbVsnYzJpZCddLiciPicuJHRoaXMtPmxhbmcoJ2VkaXRfcGFnZScsQXJyYXkoJHByb2JsZW1bJ2MybmFtZSddKSkuJzwvYT4nOw0KICAgICAgfQ0KICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgIH0NCg0KICAgIC8vIFBhZ2VzIHdpdGggZHVwbGljYXRlIGRlc2NyaXB0aW9uDQogICAgJHF1ZXJ5ID0gJ1NFTEVDVCBwMS5jb250ZW50X2lkIEFTIGMxaWQsIHAyLmNvbnRlbnRfaWQgQVMgYzJpZCBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50X3Byb3BzIHAxIElOTkVSIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnRfcHJvcHMgcDIgT04gKHAxLnByb3BfbmFtZSA9IHAyLnByb3BfbmFtZSBBTkQgcDEucHJvcF9uYW1lID0gIicuc3RyX3JlcGxhY2UoJyAnLCdfJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCcnKSkuJyIgQU5EIHAxLmNvbnRlbnRfaWQgPCBwMi5jb250ZW50X2lkIEFORCBwMS5jb250ZW50IDw+ICIiIEFORCBwMi5jb250ZW50IDw+ICIiKSBXSEVSRSBwMS5jb250ZW50ID0gcDIuY29udGVudCBMSU1JVCAwLDIxJzsNCiAgICAkcmVzdWx0ID0mICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgIHdoaWxlICgkcHJvYmxlbSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsNCiAgICAgICRxdWVyeSA9ICdTRUxFQ1QgY29udGVudF9pZCwgY29udGVudF9uYW1lIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgV0hFUkUgY29udGVudF9pZCA9ICcuJHByb2JsZW1bJ2MxaWQnXS4nIE9SIGNvbnRlbnRfaWQgPSAnLiRwcm9ibGVtWydjMmlkJ107DQogICAgICAkcmVzdWx0MSA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCiAgICAgICRmaXJzdCA9ICRyZXN1bHQxLT5mZXRjaFJvdygpOw0KICAgICAgJHNlY29uZCA9ICRyZXN1bHQxLT5mZXRjaFJvdygpOw0KICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsNCiAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdkZXNjcmlwdGlvbnMnOw0KICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygnZHVwbGljYXRlX2Rlc2NyaXB0aW9ucycsQXJyYXkoJGZpcnN0Wydjb250ZW50X25hbWUnXSwkc2Vjb25kWydjb250ZW50X25hbWUnXSkpOw0KICAgICAgaWYgKGlzc2V0KCRfR0VUWydzcF8nXSkpIHsNCiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iJy4kY29uZmlnWydyb290X3VybCddLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9zcF89Jy4kX0dFVFsnc3BfJ10uJyZjb250ZW50X2lkPScuJGZpcnN0Wydjb250ZW50X2lkJ10uJyI+Jy4kdGhpcy0+bGFuZygnZWRpdF9wYWdlJyxBcnJheSgkZmlyc3RbJ2NvbnRlbnRfbmFtZSddKSkuJzwvYT4nOw0KICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP3NwXz0nLiRfR0VUWydzcF8nXS4nJmNvbnRlbnRfaWQ9Jy4kc2Vjb25kWydjb250ZW50X2lkJ10uJyI+Jy4kdGhpcy0+bGFuZygnZWRpdF9wYWdlJyxBcnJheSgkc2Vjb25kWydjb250ZW50X25hbWUnXSkpLic8L2E+JzsNCiAgICAgIH1lbHNlew0KICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP19zeF89Jy4kX0dFVFsnX3N4XyddLicmY29udGVudF9pZD0nLiRmaXJzdFsnY29udGVudF9pZCddLiciPicuJHRoaXMtPmxhbmcoJ2VkaXRfcGFnZScsQXJyYXkoJGZpcnN0Wydjb250ZW50X25hbWUnXSkpLic8L2E+JzsNCiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iJy4kY29uZmlnWydyb290X3VybCddLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9fc3hfPScuJF9HRVRbJ19zeF8nXS4nJmNvbnRlbnRfaWQ9Jy4kc2Vjb25kWydjb250ZW50X2lkJ10uJyI+Jy4kdGhpcy0+bGFuZygnZWRpdF9wYWdlJyxBcnJheSgkc2Vjb25kWydjb250ZW50X25hbWUnXSkpLic8L2E+JzsNCiAgICAgIH0NCiAgICAgICRhbGVydHNbXSA9ICRhbGVydDsNCiAgICB9DQogICAgLy8gTm8gYXV0aG9yIHByb3ZpZGVkDQogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJycpID09ICcnKSB7DQogICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgJGFsZXJ0Wydncm91cCddID0gJ3NldHRpbmdzJzsNCiAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ3Byb3ZpZGVfYW5fYXV0aG9yJyk7DQogICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+bGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7DQogICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7DQogICAgfQ0KICAgIHJldHVybiAkYWxlcnRzOw0KICB9DQoNCiAgZnVuY3Rpb24gZ2V0Tm90aWNlQWxlcnRzKCkgew0KICAgIGdsb2JhbCAkZ0NtczsNCiAgICANCiAgICAkYWxlcnRzID0gQXJyYXkoKTsNCiAgICAvLyBObyBzdGFuZGFyZCBtZXRhDQogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3N0YW5kYXJkJywxKSAhPSAxKSB7DQogICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygndXNlX3N0YW5kYXJkX21ldGEnKTsNCiAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5sYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsNCiAgICAgICRhbGVydHNbXSA9ICRhbGVydDsNCiAgICB9DQogICAgLy8gU3VibWl0IGEgc2l0ZW1hcA0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnLDEpICE9IDEpIHsNCiAgICAgICRhbGVydCA9IEFycmF5KCk7DQogICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5sYW5nKCdjcmVhdGVfYV9zaXRlbWFwJyk7DQogICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+bGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidzaXRlbWFwc2V0dGluZ3MnKSk7DQogICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7DQogICAgfWVsc2VpZigkdGhpcy0+R2V0UHJlZmVyZW5jZSgncHVzaF9zaXRlbWFwJywxKSAhPSAxKSB7DQogICAgICAvLyBBdXRvbWF0aWNhbGx5IHN1Ym1pdCB0aGUgc2l0ZW1hcA0KICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsNCiAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPmxhbmcoJ2F1dG9tYXRpY2FsbHlfdXBsb2FkX3NpdGVtYXAnKTsNCiAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5sYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J3NpdGVtYXBzZXR0aW5ncycpKTsNCiAgICAgICRhbGVydHNbXSA9ICRhbGVydDsNCiAgICB9DQogICAgLy8gQ3JlYXRlIGEgcm9ib3RzLnR4dCBmaWxlDQogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjcmVhdGVfcm9ib3RzJywxKSAhPSAxKSB7DQogICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+bGFuZygnY3JlYXRlX3JvYm90cycpOw0KICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPmxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nc2l0ZW1hcHNldHRpbmdzJykpOw0KICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgIH0NCiAgICAvLyBTZXQgYSBkZWZhdWx0IGltYWdlDQogICAgcmV0dXJuICRhbGVydHM7DQogIH0NCg0KICBmdW5jdGlvbiBnZXRfa2V5d29yZHMoJHNvdXJjZSwgJG1pbmxlbmd0aCA9IDYpIHsNCiAgICAkc291cmNlID0gcHJlZ19yZXBsYWNlKCcvXHtbXlx9XStcfS9pc1UnLCAnJywgdXRmOF9kZWNvZGUoJHNvdXJjZSkpOw0KICAgICRzb3VyY2UgPSBzdHJfcmVwbGFjZSgiXG4iLCIgIixzdHJpcF90YWdzKCRzb3VyY2UpKTsNCiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJy0nLCcgJywkc291cmNlKTsNCiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJy4nLCcgJywkc291cmNlKTsNCiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJywnLCcgJywkc291cmNlKTsNCiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJyEnLCcgJywkc291cmNlKTsNCiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJz8nLCcgJywkc291cmNlKTsNCiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJzonLCcgJywkc291cmNlKTsNCiAgICAkc291cmNlID0gc3RyX3JlcGxhY2UoJyAgJywnICcsJHNvdXJjZSk7DQogICAgJGtleXdvcmRzID0gZXhwbG9kZSgnICcsJHNvdXJjZSk7DQogICAgZm9yZWFjaCAoJGtleXdvcmRzIGFzICRrZXk9PiR2YWx1ZSkgew0KICAgICAgaWYgKHN0cmxlbigkdmFsdWUpIDwgJG1pbmxlbmd0aCkgew0KICAgICAgICB1bnNldCgka2V5d29yZHNbJGtleV0pOw0KICAgICAgfWVsc2V7DQogICAgICAgICRrZXl3b3Jkc1ska2V5XSA9IGh0bWxlbnRpdGllcyh0cmltKCR2YWx1ZSkpOw0KICAgICAgfQ0KICAgIH0NCiAgICByZXR1cm4gJGtleXdvcmRzOw0KICB9DQoNCiAgZnVuY3Rpb24gZ2V0X2hlYWRsaW5lcygkZmlsZSl7DQogICAgJGgxdGFncyA9IHByZWdfbWF0Y2hfYWxsKCIvKDxoMS4qPikoXHcuKikoPFwvaDE+KS9pc3htVSIsJGZpbGUsJHBhdHRlcm5zKTsNCiAgICAkY29udGVudCA9ICIiOw0KICAgIGZvcmVhY2goJHBhdHRlcm5zWzJdIGFzICR0YWcpIHsNCiAgICAgICRjb250ZW50IC49ICIgIi4kdGFnOw0KICAgIH0NCiAgICAkaDJ0YWdzID0gcHJlZ19tYXRjaF9hbGwoIi8oPGgyLio+KShcdy4qKSg8XC9oMj4pL2lzeG1VIiwkZmlsZSwkcGF0dGVybnMpOw0KICAgIGZvcmVhY2goJHBhdHRlcm5zWzJdIGFzICR0YWcpIHsNCiAgICAgICRjb250ZW50IC49ICIgIi4kdGFnOw0KICAgIH0NCiAgICAkaDN0YWdzID0gcHJlZ19tYXRjaF9hbGwoIi8oPGgzLio+KShcdy4qKSg8XC9oMz4pL2lzeG1VIiwkZmlsZSwkcGF0dGVybnMpOw0KICAgIGZvcmVhY2goJHBhdHRlcm5zWzJdIGFzICR0YWcpIHsNCiAgICAgICRjb250ZW50IC49ICIgIi4kdGFnOw0KICAgIH0NCiAgICAkaDR0YWdzID0gcHJlZ19tYXRjaF9hbGwoIi8oPGg0Lio+KShcdy4qKSg8XC9oND4pL2lzeG1VIiwkZmlsZSwkcGF0dGVybnMpOw0KICAgIGZvcmVhY2goJHBhdHRlcm5zWzJdIGFzICR0YWcpIHsNCiAgICAgICRjb250ZW50IC49ICIgIi4kdGFnOw0KICAgIH0NCiAgICAkaDV0YWdzID0gcHJlZ19tYXRjaF9hbGwoIi8oPGg1Lio+KShcdy4qKSg8XC9oNT4pL2lzeG1VIiwkZmlsZSwkcGF0dGVybnMpOw0KICAgIGZvcmVhY2goJHBhdHRlcm5zWzJdIGFzICR0YWcpIHsNCiAgICAgICRjb250ZW50IC49ICIgIi4kdGFnOw0KICAgIH0NCiAgICAkaDZ0YWdzID0gcHJlZ19tYXRjaF9hbGwoIi8oPGg2Lio+KShcdy4qKSg8XC9oNj4pL2lzeG1VIiwkZmlsZSwkcGF0dGVybnMpOw0KICAgIGZvcmVhY2goJHBhdHRlcm5zWzJdIGFzICR0YWcpIHsNCiAgICAgICRjb250ZW50IC49ICIgIi4kdGFnOw0KICAgIH0NCiAgICByZXR1cm4gJGNvbnRlbnQ7DQogIH0NCg0KICBmdW5jdGlvbiBnZXRLZXl3b3JkU3VnZ2VzdGlvbnMoJGNvbnRlbnRfaWQpIHsNCiAgICBnbG9iYWwgJGdDbXM7DQogICAgJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOw0KICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7DQoNCiAgICAkY29udGVudG9wcyA9ICRnQ21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOw0KICAgIGlmICghJGN1cmNvbnRlbnQgPSAkY29udGVudG9wcy0+TG9hZENvbnRlbnRGcm9tSWQgKCRjb250ZW50X2lkKSkgew0KICAgICAgcmV0dXJuOw0KICAgIH0NCiAgICAkZGVzY3JpcHRpb25faWQgPSBzdHJfcmVwbGFjZSgnICcsJ18nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpKTsNCg0KICAgIC8qIEdlbmVyYXRlIGtleXdvcmRzIGZyb20gcGFnZSB0aXRsZSwgZGVzY3JpcHRpb24gYW5kIGNvbnRlbnQgKi8NCiAgICAkdGl0bGVfa2V5d29yZHMgPSAkdGhpcy0+Z2V0X2tleXdvcmRzKCRjdXJjb250ZW50LT5HZXRQcm9wZXJ0eVZhbHVlKCdjb250ZW50X2VuJyksICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdrZXl3b3JkX21pbmxlbmd0aCcsJzYnKSk7DQoNCiAgICAkZGVzY3JpcHRpb25fa2V5d29yZHMgPSAkdGhpcy0+Z2V0X2tleXdvcmRzKCRjdXJjb250ZW50LT5HZXRQcm9wZXJ0eVZhbHVlKCRkZXNjcmlwdGlvbl9pZCksICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdrZXl3b3JkX21pbmxlbmd0aCcsJzYnKSk7DQoNCiAgICAkaGVhZGxpbmVfa2V5d29yZHMgPSAkdGhpcy0+Z2V0X2tleXdvcmRzKCR0aGlzLT5nZXRfaGVhZGxpbmVzKCRjdXJjb250ZW50LT5OYW1lKCkpLCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5sZW5ndGgnLCc2JykpOw0KDQogICAgJGNvbnRlbnRfa2V5d29yZHMgPSAkdGhpcy0+Z2V0X2tleXdvcmRzKCRjdXJjb250ZW50LT5HZXRQcm9wZXJ0eVZhbHVlKCdjb250ZW50X2VuJyksICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdrZXl3b3JkX21pbmxlbmd0aCcsJzYnKSk7DQoNCiAgICAkb3RoZXJfa2V5d29yZHMgPSBBcnJheSgpOw0KDQogICAgZm9yZWFjaCgkdGl0bGVfa2V5d29yZHMgYXMgJGtleXdvcmQpIHsNCiAgICAgIGlmICghaXNzZXQoJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSkpIHsNCiAgICAgICAgJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSA9IDA7DQogICAgICB9DQogICAgICAkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfdGl0bGVfd2VpZ2h0JywnNicpOw0KICAgIH0NCiAgICBmb3JlYWNoKCRkZXNjcmlwdGlvbl9rZXl3b3JkcyBhcyAka2V5d29yZCkgew0KICAgICAgaWYgKCFpc3NldCgkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdKSkgew0KICAgICAgICAkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdID0gMDsNCiAgICAgIH0NCiAgICAgICRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0gKz0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0JywnNCcpOw0KICAgIH0NCiAgICBmb3JlYWNoKCRoZWFkbGluZV9rZXl3b3JkcyBhcyAka2V5d29yZCkgew0KICAgICAgaWYgKCFpc3NldCgkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdKSkgew0KICAgICAgICAkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdID0gMDsNCiAgICAgIH0NCiAgICAgICRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0gKz0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0JywnMicpOw0KICAgIH0NCiAgICBmb3JlYWNoKCRjb250ZW50X2tleXdvcmRzIGFzICRrZXl3b3JkKSB7DQogICAgICBpZiAoIWlzc2V0KCRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0pKSB7DQogICAgICAgICRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0gPSAwOw0KICAgICAgfQ0KICAgICAgJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSArPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9jb250ZW50X3dlaWdodCcsJzEnKTsNCiAgICB9DQoNCiAgICBhcnNvcnQoJG90aGVyX2tleXdvcmRzKTsNCg0KICAgICRleGNsdWRlX2xpc3QgPSBleHBsb2RlKCcgJyxzdHJ0b3VwcGVyKHV0ZjhfZGVjb2RlKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2V4Y2x1ZGUnLCcnKSkpKTsNCg0KICAgIGZvcmVhY2ggKCRvdGhlcl9rZXl3b3JkcyBhcyAka2V5PT4kdmFsdWUpIHsNCiAgICAgIGlmICgkdmFsdWUgPCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9taW5pbXVtX3dlaWdodCcsJzcnKSkgew0KICAgICAgICB1bnNldCgkb3RoZXJfa2V5d29yZHNbJGtleV0pOw0KICAgICAgfWVsc2VpZiAoaW5fYXJyYXkoc3RydG91cHBlcigka2V5KSwkZXhjbHVkZV9saXN0KSkgew0KICAgICAgICB1bnNldCgkb3RoZXJfa2V5d29yZHNbJGtleV0pOw0KICAgICAgfQ0KICAgIH0NCg0KICAgIHJldHVybiAkb3RoZXJfa2V5d29yZHM7DQogIH0NCg0KICBmdW5jdGlvbiBjcmVhdGVSb2JvdHNUWFQoKSB7DQogICAgZ2xvYmFsICRnQ21zOw0KICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOw0KDQogICAgJGZwID0gQGZvcGVuKCRjb25maWdbJ3Jvb3RfcGF0aCddLicvcm9ib3RzLnR4dCcsJ3cnKTsNCiAgICANCiAgICAvLyBDcmVhdGUgcm9ib3RzLnR4dA0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnLDEpID09IDEpIHsNCiAgICAgIGZ3cml0ZSgkZnAsICJTaXRlbWFwOiAiLiRjb25maWdbJ3Jvb3RfdXJsJ10uIi9zaXRlbWFwLnhtbFxuIik7DQogICAgfQ0KCUBmd3JpdGUoJGZwLCAiVXNlci1hZ2VudDogKlxuIik7DQoJQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kY29uZmlnWydyb290X3VybCddLiIvY29udHJpYi9cbiIpOw0KCUBmd3JpdGUoJGZwLCAiRGlzYWxsb3c6ICIuJGNvbmZpZ1sncm9vdF91cmwnXS4iL2RvYy9cbiIpOw0KCUBmd3JpdGUoJGZwLCAiRGlzYWxsb3c6ICIuJGNvbmZpZ1sncm9vdF91cmwnXS4iL2xpYi9cbiIpOw0KCUBmd3JpdGUoJGZwLCAiRGlzYWxsb3c6ICIuJGNvbmZpZ1sncm9vdF91cmwnXS4iL21vZHVsZXMvXG4iKTsNCglAZndyaXRlKCRmcCwgIkRpc2FsbG93OiAiLiRjb25maWdbJ3Jvb3RfdXJsJ10uIi9wbHVnaW5zL1xuIik7DQoJQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kY29uZmlnWydyb290X3VybCddLiIvc2NyaXB0cy9cbiIpOw0KCUBmd3JpdGUoJGZwLCAiRGlzYWxsb3c6ICIuJGNvbmZpZ1sncm9vdF91cmwnXS4iL3RtcC9cbiIpOw0KDQogICAgJHF1ZXJ5ID0gIlNFTEVDVCAqIEZST00gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9zZW90b29sczIgV0hFUkUgaW5kZXhhYmxlID0gMCI7DQogICAgJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KDQogICAgJGNvbnRlbnRvcHMgPSAkZ0Ntcy0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsNCiAgICB3aGlsZSAoJHBhZ2UgPSAkcmVzdWx0LT5mZXRjaFJvdygpKSB7DQoNCiAgICAgIGlmICgkY3VyY29udGVudCA9ICRjb250ZW50b3BzLT5Mb2FkQ29udGVudEZyb21JZCAoJHBhZ2VbJ2NvbnRlbnRfaWQnXSkpIHsNCiAgICAgICAgJHVybCA9ICRjdXJjb250ZW50LT5HZXRVUkwoKTsNCiAgICAgICAgQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kdXJsLiJcbiIpOw0KICAgICAgfQ0KICAgIH0NCiAgICBAZmNsb3NlKCRmcCk7DQogIH0NCg0KICBmdW5jdGlvbiBjcmVhdGVTaXRlbWFwKCRwdXNoID0gZmFsc2UpIHsNCiAgICBnbG9iYWwgJGdDbXM7DQogICAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7DQogICAgDQoNCiAgICAkZnAgPSBAZm9wZW4oJGNvbmZpZ1sncm9vdF9wYXRoJ10uJy9zaXRlbWFwLnhtbCcsJ3cnKTsNCiAgICAvLyBDcmVhdGUgc2l0ZW1hcA0KDQogICAgZndyaXRlKCRmcCwgIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+XG4iKTsNCiAgICBmd3JpdGUoJGZwLCAiPHVybHNldCB4bWxucz0naHR0cDovL3d3dy5zaXRlbWFwcy5vcmcvc2NoZW1hcy9zaXRlbWFwLzAuOSc+XG5cbiIpOw0KDQogICAgJGNvbnRlbnRvcHMgPSAkZ0Ntcy0+R2V0Q29udGVudE9wZXJhdGlvbnMoKTsNCg0KICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidjb250ZW50IFdIRVJFIGFjdGl2ZSA9IDEgT1JERVIgQlkgaGllcmFyY2h5IEFTQyc7DQogICAgJHJlc3VsdCA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCg0KICAgIHdoaWxlICgkcGFnZSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsNCiAgICAgIGlmICgkY3VyY29udGVudCA9ICRjb250ZW50b3BzLT5Mb2FkQ29udGVudEZyb21JZCAoJHBhZ2VbJ2NvbnRlbnRfaWQnXSkpIHsNCg0KICAgICAgICBpZiAoJGN1cmNvbnRlbnQtPkFjdGl2ZSgpICYmICRjdXJjb250ZW50LT5TaG93SW5NZW51KCkpIHsNCiAgICAgICAgICAkdXJsID0gJGN1cmNvbnRlbnQtPkdldFVSTCgpOw0KICAgICAgICAgIGlmICgkdXJsID09ICIjIikgew0KICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgfQ0KDQogICAgICAgICAgaWYgKHN0cnBvcygkdXJsLCAkY29uZmlnWydyb290X3VybCddKSA9PT0gZmFsc2UpIHsNCiAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgIH0NCg0KICAgICAgICAgICRwcmlvcml0eSA9IDgwOw0KICAgICAgICAgIGZvciAoJGkgPSAwOyAkaSA8IHN1YnN0cl9jb3VudCgkcGFnZVsnaGllcmFyY2h5J10sJy4nKTsgJGkrKykgew0KICAgICAgICAgICAgJHByaW9yaXR5ICA9ICRwcmlvcml0eSAvIDI7DQogICAgICAgICAgfQ0KICAgICAgICAgIGlmICgkcGFnZVsnZGVmYXVsdF9jb250ZW50J10gPT0gMSkgew0KICAgICAgICAgICAgJHByaW9yaXR5ID0gMTAwOw0KICAgICAgICAgIH0NCg0KICAgICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgKiBGUk9NICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRwYWdlWydjb250ZW50X2lkJ107DQogICAgICAgICAgJHJlc3VsdDIgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgICAgICAgJGluZm8gPSAkcmVzdWx0Mi0+ZmV0Y2hSb3coKTsNCiAgICAgICAgICBpZiAoaXNzZXQoJGluZm9bJ3ByaW9yaXR5J10pICYmICgkaW5mb1sncHJpb3JpdHknXSAhPSAwKSAmJiAoJGluZm9bJ3ByaW9yaXR5J10gIT0gIiIpKSB7DQogICAgICAgICAgICAkcHJpb3JpdHkgPSAkaW5mb1sncHJpb3JpdHknXTsNCiAgICAgICAgICB9DQogICAgICAgICAgaWYgKCFpc3NldCgkaW5mb1snaW5kZXhhYmxlJ10pIHx8ICgkaW5mb1snaW5kZXhhYmxlJ10gPT0gIiIpIHx8ICgkaW5mb1snaW5kZXhhYmxlJ10gPT0gMSkpIHsNCiAgICAgICAgICAgIGZ3cml0ZSgkZnAsICI8dXJsPlxuIik7DQogICAgICAgICAgICBmd3JpdGUoJGZwLCAiPGxvYz4iLiR1cmwuIjwvbG9jPlxuIik7DQogICAgICAgICAgICBmd3JpdGUoJGZwLCAiPGxhc3Rtb2Q+Ii5kYXRlKCJZLW0tZCIsIHN0cnRvdGltZSgkcGFnZVsnbW9kaWZpZWRfZGF0ZSddKSkuIjwvbGFzdG1vZD5cbiIpOw0KICAgICAgICAgICAgZndyaXRlKCRmcCwgIjxjaGFuZ2VmcmVxPmFsd2F5czwvY2hhbmdlZnJlcT5cbiIpOw0KICAgICAgICAgICAgZndyaXRlKCRmcCwgIjxwcmlvcml0eT4iLm51bWJlcl9mb3JtYXQoJHByaW9yaXR5IC8gMTAwLCAxKS4iPC9wcmlvcml0eT5cbiIpOw0KICAgICAgICAgICAgZndyaXRlKCRmcCwgIjwvdXJsPlxuXG4iKTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIH0NCiAgICB9DQogICAgZndyaXRlKCRmcCwgIjwvdXJsc2V0PiIpOw0KICAgIGZjbG9zZSgkZnApOw0KICAgIGlmICgkcHVzaCkgew0KICAgICAgLy8gUHVzaCBzaXRlbWFwIHRvIGdvb2dsZQ0KICAgICAgJGZwID0gQGZvcGVuKCJodHRwOi8vd3d3Lmdvb2dsZS5jb20vd2VibWFzdGVycy90b29scy9waW5nP3NpdGVtYXA9Ii51cmxlbmNvZGUoJGNvbmZpZ1sncm9vdF91cmwnXS4iL3NpdGVtYXAueG1sIiksInIiKTsNCiAgICAgIGZjbG9zZSgkZnApOw0KICAgIH0NCiAgfQ0KDQp9DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/adminpanel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHN0eWxlIHR5cGU9J3RleHQvY3NzJz4NCntsaXRlcmFsfQ0KcC5wYWdldGV4dCB7DQogIGNsZWFyOiBib3RoOw0KfQ0KYSBpbWcgew0KICBib3JkZXItc3R5bGU6IG5vbmUgIWltcG9ydGFudDsNCn0NCnsvbGl0ZXJhbH0NCjwvc3R5bGU+DQoNCg0KeyRtZXNzYWdlfQ0KDQp7JHRhYl9oZWFkZXJzfQ0KDQp7JHN0YXJ0X3Nlb2FsZXJ0c190YWJ9DQp7JGFsZXJ0c30NCnskZW5kX3RhYn0NCg0KeyRzdGFydF9wYWdlZGVzY3JpcHRpb25zX3RhYn0NCnskcGFnZXNldHRpbmdzfQ0KeyRlbmRfdGFifQ0KDQp7JHN0YXJ0X21ldGFzZXR0aW5nc190YWJ9DQp7JG1ldGFfZm9ybX0NCnskZW5kX3RhYn0NCg0KeyRzdGFydF9zaXRlbWFwc2V0dGluZ3NfdGFifQ0KeyRzaXRlbWFwX2Zvcm19DQp7JGVuZF90YWJ9DQoNCnskc3RhcnRfa2V5d29yZHNldHRpbmdzX3RhYn0NCnska2V5d29yZF9mb3JtfQ0KeyRlbmRfdGFifQ0KDQp7JHRhYl9mb290ZXJzfQ0K]]></data>
	</file>
	<file>
	  <filename>/templates/error.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfZXJyb3J9PC9oMz4NCntpZiAkbWVzc2FnZSE9Jyd9PHA+eyRtZXNzYWdlfTwvcD57L2lmfQ==]]></data>
	</file>
</module>
