<?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.5</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+QXV0aG9yOiBDbGlwIE1hZ2ljICZsdDthZG1pbkBjbGlwbWFnaWMuY29tLmF1Jmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMC41PGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+PHVsPg0KPGxpPlZlcnNpb24gMS4wIC0gMjUgSmFudWFyeSAyMDEyLiBJbml0aWFsIHJlbGVhc2UuIFRoaXMgaXMgYSBmb3JrIG9mIHRoZSBTRU9Ub29scyBtb2R1bGUgd2l0aCBDTVNNUyAxLjEwKyBjb21wYXRpYmlsaXR5LiBDaGFuZ2VzIGluY2x1ZGU6DQoJPHVsPg0KCQk8bGk+U2V0IHByZWZlcmVuY2VzIG9uIGluc3RhbGw8L2xpPg0KCQk8bGk+UmVtb3ZlIHByZWZlcmVuY2VzIG9uIHVuaW5zdGFsbDwvbGk+DQoJCTxsaT5SZXBsYWNlIGFsbCByZWZlcmVuY2UgdG8gSGllcmFyY2h5TWFuYWdlciBvYmplY3RzIHdpdGggQ29udGVudE9wZXJhdGlvbnMgb2JqZWN0czwvbGk+DQoJCTxsaT5HZW5lcmF0ZSBhbGwga2V5d29yZHMsIGtleXdvcmQgc3VnZ2VzdGlvbnMsIGRlc2NyaXB0aW9ucyBhbmQgZGVmYXVsdCBkZXNjcmlwdGlvbnM8L2xpPg0KCQk8bGk+R2VuZXJhdGUgc2l0ZW1hcC54bWwgYW5kIHJvYm90cy50eHQgZmlsZXM8L2xpPg0KCQk8bGk+UmV0YWluIGNoZWNrYm94IHByZWZlcmVuY2Ugc2V0dGluZ3MgYWZ0ZXIgc3VibWl0PC9saT4NCgkJPGxpPk9uIGZyb250ZW5kIHBhZ2UgbG9hZCwgZW5zdXJlIHRoYXQgYSBjb3JyZXNwb25kaW5nIHJlY29yZCBleGlzdHMgaW4gdGhlIHNlb3Rvb2xzMiBkYXRhYmFzZSB0YWJsZTwvbGk+DQoJPC91bD4NCjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMSAtIDI1IEphbnVhcnkgMjAxMi4gTWlub3IgYnVnIGZpeDwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMiAtIDEgRmVicnVhcnkgMjAxMi4gQnVnIGZpeDwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuMyAtIDEgRmVicnVhcnkgMjAxMi4gQnVnIGZpeDwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuNCAtIDEgRmVicnVhcnkgMjAxMi4gQ29ycmVjdGlvbjwvbGk+DQo8bGk+VmVyc2lvbiAxLjAuNSAtIDYgRmVicnVhcnkgMjAxMi4gQWRkIGV2ZW50IGhhbmRsZXJzIHRvIHB1c2ggc2l0ZW1hcCB0byBHb29nbGUgd2VibWFzdGVyczwvbGk+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+R2V0UHJlZmVyZW5jZSgncHVzaF9zaXRlbWFwJywxKSA9PSAxKTsNCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9yb2JvdHMnLDEpID09IDEpIHsNCiAgICAgICAgJHRoaXMtPmNyZWF0ZVJvYm90c1RYVCgpOw0KICAgIH0NCgkkdGhpcy0+YXVkaXQoIlRlc3QiLCJTRU8gVG9vbHMiLCJNYW51YWxseSByZWdlbmVyYXRlZCBzaXRlbWFwLnhtbCBhbmQgcm9ib3RzLnR4dCIpOw0KICAgICR0aGlzLT5SZWRpcmVjdCgkdGhpcy0+aWQsICdkZWZhdWx0YWRtaW4nLCAnJywgQXJyYXkoJ21lc3NhZ2UnPT4nc2l0ZW1hcF9yZWdlbmVyYXRlZCcsJ3RhYic9PidzaXRlbWFwc2V0dGluZ3MnKSk7DQp9DQoJDQppZiAoaXNzZXQoJF9QT1NUWydzYXZlX21ldGFfc2V0dGluZ3MnXSkpIHsNCiRtZXRhX3N0YW5kYXJkID0gaXNzZXQoJF9QT1NUWydtZXRhX3N0YW5kYXJkJ10pID8gMSA6IDA7DQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX3N0YW5kYXJkJywkbWV0YV9zdGFuZGFyZCk7DQogIA0KJG1ldGFfZHVibGluY29yZSA9IGlzc2V0KCRfUE9TVFsnbWV0YV9kdWJsaW5jb3JlJ10pID8gMSA6IDA7DQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX2R1YmxpbmNvcmUnLCRtZXRhX2R1YmxpbmNvcmUpOw0KDQokbWV0YV9vcGVuZ3JhcGggPSBpc3NldCgkX1BPU1RbJ21ldGFfb3BlbmdyYXBoJ10pID8gMSA6IDA7DQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaCcsJG1ldGFfb3BlbmdyYXBoKTsNCiAgDQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnYWRkaXRpb25hbF9tZXRhX3RhZ3MnLCRfUE9TVFsnYWRkaXRpb25hbF9tZXRhX3RhZ3MnXSk7DQoNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicsJF9QT1NUWydtZXRhX3B1Ymxpc2hlciddKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX2NvbnRyaWJ1dG9yJywkX1BPU1RbJ21ldGFfY29udHJpYnV0b3InXSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9jb3B5cmlnaHQnLCRfUE9TVFsnbWV0YV9jb3B5cmlnaHQnXSk7DQoNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX2xvY2F0aW9uJywkX1BPU1RbJ21ldGFfbG9jYXRpb24nXSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9yZWdpb24nLCRfUE9TVFsnbWV0YV9yZWdpb24nXSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScsJF9QT1NUWydtZXRhX2xhdGl0dWRlJ10pOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfbG9uZ2l0dWRlJywkX1BPU1RbJ21ldGFfbG9uZ2l0dWRlJ10pOw0KDQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnLCRfUE9TVFsnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnXSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdHlwZScsJF9QT1NUWydtZXRhX29wZW5ncmFwaF90eXBlJ10pOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3NpdGVuYW1lJywkX1BPU1RbJ21ldGFfb3BlbmdyYXBoX3NpdGVuYW1lJ10pOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2ltYWdlJywkX1BPU1RbJ21ldGFfb3BlbmdyYXBoX2ltYWdlJ10pOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FkbWlucycsJF9QT1NUWydtZXRhX29wZW5ncmFwaF9hZG1pbnMnXSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb24nLCRfUE9TVFsnbWV0YV9vcGVuZ3JhcGhfYXBwbGljYXRpb24nXSk7DQoNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0aXRsZScsJF9QT1NUWyd0aXRsZSddKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0aXRsZV9tZXRhJywkX1BPU1RbJ3RpdGxlX21ldGEnXSk7DQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYmxvY2snLCRfUE9TVFsnZGVzY3JpcHRpb25fYmxvY2snXSk7DQoNCg0KJGRlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUgPSBpc3NldCgkX1BPU1RbJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnXSkgPyAxIDogMDsNCg0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnLCRkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlKTsNCg0KDQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0bycsJF9QT1NUWydkZXNjcmlwdGlvbl9hdXRvJ10pOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2RlZmF1bHRfa2V5d29yZHMnLCRfUE9TVFsnZGVmYXVsdF9rZXl3b3JkcyddKTsNCg0KJHRoaXMtPmF1ZGl0KCJUZXN0IiwiU0VPIFRvb2xzIiwiRWRpdGVkIE1ldGEgc2V0dGluZ3MiKTsNCiR0aGlzLT5SZWRpcmVjdCgkdGhpcy0+aWQsICdkZWZhdWx0YWRtaW4nLCAnJywgQXJyYXkoJ21lc3NhZ2UnPT4nc2V0dGluZ3NfdXBkYXRlZCcsJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7DQp9DQoNCmlmIChpc3NldCgkX1BPU1RbJ3NhdmVfc2l0ZW1hcF9zZXR0aW5ncyddKSkgew0KICANCiRjcmVhdGVfc2l0ZW1hcCA9IGlzc2V0KCRfUE9TVFsnY3JlYXRlX3NpdGVtYXAnXSkgPyAxIDogMDsNCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJywkY3JlYXRlX3NpdGVtYXApOw0KDQokcHVzaF9zaXRlbWFwID0gaXNzZXQoJF9QT1NUWydwdXNoX3NpdGVtYXAnXSkgPyAxIDogMDsNCiAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcsJHB1c2hfc2l0ZW1hcCk7DQoNCiRjcmVhdGVfcm9ib3RzID0gaXNzZXQoJF9QT1NUWydjcmVhdGVfcm9ib3RzJ10pID8gMSA6IDA7DQogICR0aGlzLT5TZXRQcmVmZXJlbmNlKCdjcmVhdGVfcm9ib3RzJywkY3JlYXRlX3JvYm90cyk7DQogIA0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZlcmlmaWNhdGlvbicsJF9QT1NUWyd2ZXJpZmljYXRpb24nXSk7DQoNCiR0aGlzLT5hdWRpdCgiVGVzdCIsIlNFTyBUb29scyIsIkVkaXRlZCBTaXRlbWFwIHNldHRpbmdzIik7DQokdGhpcy0+UmVkaXJlY3QoJHRoaXMtPmlkLCAnZGVmYXVsdGFkbWluJywgJycsIEFycmF5KCdtZXNzYWdlJz0+J3NldHRpbmdzX3VwZGF0ZWQnLCd0YWInPT4nc2l0ZW1hcHNldHRpbmdzJykpOw0KfQ0KDQppZiAoaXNzZXQoJF9QT1NUWydzYXZlX2tleXdvcmRfc2V0dGluZ3MnXSkpIHsNCg0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJywkX1BPU1RbJ2tleXdvcmRfbWlubGVuZ3RoJ10pOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfdGl0bGVfd2VpZ2h0JywkX1BPU1RbJ2tleXdvcmRfdGl0bGVfd2VpZ2h0J10pOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0JywkX1BPU1RbJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0J10pOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0JywkX1BPU1RbJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0J10pOw0KJHRoaXMtPlNldFByZWZlcmVuY2UoJ2tleXdvcmRfY29udGVudF93ZWlnaHQnLCRfUE9TVFsna2V5d29yZF9jb250ZW50X3dlaWdodCddKTsNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdrZXl3b3JkX21pbmltdW1fd2VpZ2h0JywkX1BPU1RbJ2tleXdvcmRfbWluaW11bV93ZWlnaHQnXSk7DQoNCiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2V4Y2x1ZGUnLCRfUE9TVFsna2V5d29yZF9leGNsdWRlJ10pOw0KDQoNCg0KJHRoaXMtPmF1ZGl0KCJUZXN0IiwiU0VPIFRvb2xzIiwiRWRpdGVkIEtleXdvcmQgc2V0dGluZ3MiKTsNCiR0aGlzLT5SZWRpcmVjdCgkdGhpcy0+aWQsICdkZWZhdWx0YWRtaW4nLCAnJywgQXJyYXkoJ21lc3NhZ2UnPT4nc2V0dGluZ3NfdXBkYXRlZCcsJ3RhYic9PidrZXl3b3Jkc2V0dGluZ3MnKSk7DQp9DQoNCi8vIERvIGV2ZW50cw0KJHRoaXMtPlNlbmRFdmVudCgnUHJlZnNVcGRhdGVkJywmJF9QT1NUKTsNCg0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQovKiAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0KDQogICBDb2RlIGZvciBTRU9Ub29sczIgImRlZmF1bHQiIGFjdGlvbg0KDQogICAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0KICAgDQogICBUeXBpY2FsbHksIHRoaXMgd2lsbCBkaXNwbGF5IHNvbWV0aGluZyBmcm9tIGEgdGVtcGxhdGUNCiAgIG9yIGRvIHNvbWUgb3RoZXIgdGFzay4NCiAgIA0KKi8NCg0KLy8gR2V0IHBhZ2UgZGF0YQ0KJHNtYXJ0eSA9IGNtc21zKCktPkdldFNtYXJ0eSgpOw0KJGRiID0mIGNtc21zKCktPkdldERiKCk7DQokY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQoNCi8vIEZpcnN0IHVwLCB3ZSBkbyBzb21lIGRhdGFiYXNlIG1haW50ZW5hbmNlDQovLyBFbnN1cmUgYWxsIHRoZSBhY3RpdmUgcGFnZXMgYXJlIGluIHRoZSBzZW90b29sczIgZGF0YWJhc2UNCiRxdWVyeSA9ICdTRUxFQ1QgYGNvbnRlbnRfaWRgIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgV0hFUkUgYHR5cGVgIExJS0UgIiVjb250ZW50JSIgQU5EIGBjb250ZW50X2lkYCBOT1QgSU4gKFNFTEVDVCBgY29udGVudF9pZGAgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpLiAnbW9kdWxlX3Nlb3Rvb2xzMiknOw0KaWYgKCEkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSkpIHsNCiAgZWNobyAiPGJyIC8+UHJvYmxlbSB3aXRoIHRoZSBkYXRhYmFzZSEgUGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLiI7DQogIGRpZTsNCn0NCg0KaWYgKCRyZXN1bHQtPlJlY29yZENvdW50KCkgPiAwKSB7DQovLyBPSyB3ZSBoYXZlIHNvbWUgbmV3IHBhZ2VzDQoJJHEyID0gJ0lOU0VSVCBJTlRPICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFNFVCBjb250ZW50X2lkID0gPywgaW5kZXhhYmxlID0gPyc7DQoJd2hpbGUgKCRvbmVfcGFnZSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsNCgkJJGRiLT5FeGVjdXRlKCRxMixhcnJheSgkb25lX3BhZ2VbJ2NvbnRlbnRfaWQnXSwxKSk7DQoJfQ0KfQ0KDQovLyBOb3cgY2hlY2sgdGhhdCB3ZSBoYXZlIHJlbW92ZWQgZnJvbSBzZW90b29sczIgYW55IHBhZ2VzIHRoYXQgaGF2ZSBiZWVuIGRlbGV0ZWQNCiRxdWVyeSA9ICdTRUxFQ1QgYGNvbnRlbnRfaWRgIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgV0hFUkUgYGNvbnRlbnRfaWRgIE5PVCBJTiAoU0VMRUNUIGBjb250ZW50X2lkYCBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkuICdjb250ZW50KSc7DQppZiAoISRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5KSkgew0KCXByaW50X3IoJGRiLT5zcWwpOw0KCWVjaG8gIjxiciAvPlByb2JsZW0gd2l0aCB0aGUgZGF0YWJhc2UhIFBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4iOw0KCWRpZTsNCn0NCmlmICgkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkgew0KLy8gT0sgd2UgaGF2ZSBzb21lIGRlbGV0ZWQgcGFnZXMNCgkkcTMgPSAnREVMRVRFIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgV0hFUkUgY29udGVudF9pZCA9ID8nOw0KCXdoaWxlICgkb25lX3BhZ2UgPSAkcmVzdWx0LT5mZXRjaFJvdygpKSB7DQoJCSRkYi0+RXhlY3V0ZSgkcTMsYXJyYXkoJG9uZV9wYWdlWydjb250ZW50X2lkJ10sMSkpOw0KCX0NCn0NCg0KLy8gTGFzdGx5LCBlbnN1cmUgdGhhdCBhbGwgaW5hY3RpdmUgcGFnZXMgYXJlIG1hcmtlZCBhcyBub3QgaW5kZXhhYmxlIGluIHNlb3Rvb2xzMg0KJHF1ZXJ5ID0gJ1NFTEVDVCBjb250ZW50X2lkIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdjb250ZW50IFdIRVJFIGFjdGl2ZSA9IDAnOw0KaWYgKCEkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSkpIHsNCglwcmludF9yKCRkYi0+c3FsKTsNCgllY2hvICI8YnIgLz5Qcm9ibGVtIHdpdGggdGhlIGRhdGFiYXNlISBQbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuIjsNCglkaWU7DQp9DQoNCmlmICgkcmVzdWx0LT5SZWNvcmRDb3VudCgpID4gMCkgew0KLy8gT0sgd2UgaGF2ZSB0byBwcmV2ZW50IHRoZSBpbmFjdGl2ZSBwYWdlcyBmcm9tIGJlaW5nIGluZGV4ZWQuDQoJJHE0ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBTRVQgaW5kZXhhYmxlID0gMCBXSEVSRSBjb250ZW50X2lkID0gPyc7DQoJd2hpbGUgKCRvbmVfcGFnZSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsNCgkJJGRiLT5FeGVjdXRlKCRxNCxhcnJheSgkb25lX3BhZ2VbJ2NvbnRlbnRfaWQnXSkpOw0KCX0NCn0NCg0KLy8gUGhldywgdGhhdCdzIGFsbCBkb25lIHNvIHdlIGNhbiBtb3ZlIG9uIHRvIHRoZSByZWFsIGJ1c2luZXNzIG9mIHRoZSBkYXkNCg0KJHRwbF92YXJzID0gJHNtYXJ0eS0+Z2V0X3RlbXBsYXRlX3ZhcnMoKTsNCiRjdXJjb250ZW50ID0gJHRwbF92YXJzWydjb250ZW50X29iaiddOw0KDQokcGFnZV91cmwgPSAkY3VyY29udGVudC0+R2V0VVJMKCk7DQokcGFnZV9pZCA9ICRjdXJjb250ZW50LT5JZCgpOw0KDQokbW9kaWZpZWRfZGF0ZSA9ICRjdXJjb250ZW50LT5nZXRNb2RpZmllZERhdGUoKTsNCiRtb2RpZmllZF9kYXRlID0gZGF0ZSgnWS1tLWRcVEg6aTpzUCcsJG1vZGlmaWVkX2RhdGUpOw0KDQovLyBLZXl3b3JkIGdlbmVyYXRvcg0KJGtleXdvcmRzID0gZXhwbG9kZSgnICcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2RlZmF1bHRfa2V5d29yZHMnLCcnKSk7DQoNCg0KJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgV0hFUkUgY29udGVudF9pZCA9ID8nOw0KaWYgKCEkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSxhcnJheSgkcGFnZV9pZCkpKSB7DQogIGVjaG8gIlByb2JsZW0gd2l0aCB0aGUgZGF0YWJhc2UhIFBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4iOw0KICBkaWU7DQp9DQoNCiRwYWdlX2luZm8gPSAkcmVzdWx0LT5GZXRjaFJvdygpOw0KDQppZiAoJHBhZ2VfaW5mb1sna2V5d29yZHMnXSAhPSAiIikgew0KCSRvdGhlcl9rZXl3b3JkcyA9IGFycmF5X2ZsaXAoZXhwbG9kZSgnICcsJHBhZ2VfaW5mb1sna2V5d29yZHMnXSkpOw0KfWVsc2V7DQoJJG90aGVyX2tleXdvcmRzID0gJHRoaXMtPmdldEtleXdvcmRTdWdnZXN0aW9ucygkcGFnZV9pZCk7DQp9DQoNCiRzZW9fa2V5d29yZHMgPSBpbXBsb2RlKCcsICcsYXJyYXlfdW5pcXVlKGFycmF5X21lcmdlKCRrZXl3b3JkcywgYXJyYXlfZmxpcCgkb3RoZXJfa2V5d29yZHMpKSkpOw0KJHNtYXJ0eS0+YXNzaWduKCdzZW9fa2V5d29yZHMnLCAkc2VvX2tleXdvcmRzKTsNCiR0aXRsZV9rZXl3b3JkcyA9IGltcGxvZGUoJyAnLGFycmF5X3VuaXF1ZShhcnJheV9tZXJnZSgka2V5d29yZHMsIGFycmF5X2ZsaXAoJG90aGVyX2tleXdvcmRzKSkpKTsNCiRzbWFydHktPmFzc2lnbigndGl0bGVfa2V5d29yZHMnLCAkdGl0bGVfa2V5d29yZHMpOw0KJHNtYXJ0eS0+YXNzaWduKCdkZWZhdWx0X2tleXdvcmRzJywgaW1wbG9kZSgnICcsICRrZXl3b3JkcykpOw0KJHNtYXJ0eS0+YXNzaWduKCdwYWdlX2tleXdvcmRzJywgaW1wbG9kZSgnICcsIGFycmF5X2ZsaXAoJG90aGVyX2tleXdvcmRzKSkpOw0KDQovLyBQYWdlIGRlc2NyaXB0aW9uDQokZGVzY3JpcHRpb25faWQgPSBzdHJfcmVwbGFjZSgnICcsJ18nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpKTsNCiRkZXNjcmlwdGlvbiA9IHN0cmlwX3RhZ3MoJGN1cmNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJGRlc2NyaXB0aW9uX2lkKSk7DQoNCmlmICgoJGRlc2NyaXB0aW9uID09ICIiKSAmJiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG9fZ2VuZXJhdGUnLDEpID09IDEpKSB7DQogICRrdyA9IGFycmF5X2ZsaXAoJG90aGVyX2tleXdvcmRzKTsNCiAgJGxhc3Rfa2V5d29yZCA9IGFycmF5X3BvcCgka3cpOw0KICAka2V5d29yZHMgPSBpbXBsb2RlKCcsICcsJGt3KSAuICIgIiAuICR0aGlzLT5sYW5nKCdhbmQnKSAuICIgIiAuICRsYXN0X2tleXdvcmQ7DQogICRkZXNjcmlwdGlvbiA9IHN0cl9yZXBsYWNlKCd7a2V5d29yZHN9Jywka2V5d29yZHMsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2F1dG8nLCcnKSk7DQogICRkZXNjcmlwdGlvbiA9IHN0cl9yZXBsYWNlKCd7dGl0bGV9JywkY3VyY29udGVudC0+TmFtZSgpLCRkZXNjcmlwdGlvbik7DQogICRkZXNjcmlwdGlvbiA9ICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkZGVzY3JpcHRpb24pOw0KfQ0KDQovLyBTaG93IGJhc2U/DQppZiAoJHBhcmFtc1snc2hvd2Jhc2UnXSAhPSAnZmFsc2UnKSB7DQoJZWNobyAiPGJhc2UgaHJlZj0nIi4kZ0Ntcy0+Y29uZmlnWydyb290X3VybCddLiIvJyAvPlxuIjsNCn0NCg0KLy8gUGFnZSB0aXRsZQ0KJHRpdGxlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3RpdGxlJywne3RpdGxlfSB8IHtzaXRlbmFtZX0gLSB7c2VvX2tleXdvcmRzfScpOw0KJHRpdGxlID0gc3RyX3JlcGxhY2UoJ3t0aXRsZX0nLCRjdXJjb250ZW50LT5OYW1lKCksJHRpdGxlKTsNCiR0aXRsZSA9IHN0cl9yZXBsYWNlKCd7c2l0ZW5hbWV9JywkZ0Ntcy0+c2l0ZXByZWZzWydzaXRlbmFtZSddLCR0aXRsZSk7DQokdGl0bGUgPSBzdHJfcmVwbGFjZSgne3Nlb19rZXl3b3Jkc30nLCR0aXRsZV9rZXl3b3JkcywkdGl0bGUpOw0KJHRpdGxlID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCR0aXRsZSk7DQoNCiRtZXRhX3RpdGxlID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3RpdGxlX21ldGEnLCd7dGl0bGV9IHwge3NpdGVuYW1lfScpOw0KJG1ldGFfdGl0bGUgPSBzdHJfcmVwbGFjZSgne3RpdGxlfScsJGN1cmNvbnRlbnQtPk5hbWUoKSwkbWV0YV90aXRsZSk7DQokbWV0YV90aXRsZSA9IHN0cl9yZXBsYWNlKCd7c2l0ZW5hbWV9JywkdHBsX3ZhcnNbJ3NpdGVuYW1lJ10sJG1ldGFfdGl0bGUpOw0KJG1ldGFfdGl0bGUgPSBzdHJfcmVwbGFjZSgne3Nlb19rZXl3b3Jkc30nLCR0aXRsZV9rZXl3b3JkcywkbWV0YV90aXRsZSk7DQokbWV0YV90aXRsZSA9ICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkbWV0YV90aXRsZSk7DQoNCiRvcGVuZ3JhcGhfdGl0bGUgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdGl0bGUnLCd7dGl0bGV9Jyk7DQokb3BlbmdyYXBoX3RpdGxlID0gc3RyX3JlcGxhY2UoJ3t0aXRsZX0nLCRjdXJjb250ZW50LT5OYW1lKCksJG9wZW5ncmFwaF90aXRsZSk7DQokb3BlbmdyYXBoX3RpdGxlID0gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhKCRvcGVuZ3JhcGhfdGl0bGUpOw0KDQplY2hvICI8dGl0bGU+Ii4kdGl0bGUuIjwvdGl0bGU+XG4iOw0KDQovLyBNRVRBIHRhZ3MgZm9yIGNvbnRlbnQgdHlwZSBldGMuDQplY2hvICI8bWV0YSBodHRwLWVxdWl2PSdDb250ZW50LVR5cGUnIGNvbnRlbnQ9J3RleHQvaHRtbDsgY2hhcnNldD0iLiRnQ21zLT5jb25maWdbJ2RlZmF1bHRfZW5jb2RpbmcnXS4iJyAvPlxuIjsNCmlmICgoJHBhZ2VfaW5mb1snaW5kZXhhYmxlJ10gPT0gIiIpIHx8ICgkcGFnZV9pbmZvWydpbmRleGFibGUnXSA9PSAiMSIpKSB7DQoJZWNobyAiPG1ldGEgbmFtZT0ncm9ib3RzJyBjb250ZW50PSdpbmRleCwgZm9sbG93JyAvPlxuIjsNCn1lbHNlew0KCWVjaG8gIjxtZXRhIG5hbWU9J3JvYm90cycgY29udGVudD0nbm9pbmRleCcgLz5cbiI7DQp9DQoNCmlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgndmVyaWZpY2F0aW9uJywnJykgIT0gJycpIHsNCgllY2hvICI8bWV0YSBuYW1lPSdnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24nIGNvbnRlbnQ9JyIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ3ZlcmlmaWNhdGlvbicsJycpLiInIC8+XG4iOw0KfQ0KDQovLyBTdGFuZGFyZCBNRVRBIHRhZ3MNCmlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9zdGFuZGFyZCcsMSkgPT0gMSkgew0KCWVjaG8gIjxtZXRhIG5hbWU9J3RpdGxlJyBjb250ZW50PSckbWV0YV90aXRsZScgLz5cbiI7DQoJZWNobyAiPG1ldGEgbmFtZT0nZGVzY3JpcHRpb24nIGNvbnRlbnQ9JyRkZXNjcmlwdGlvbicgLz5cbiI7DQogICAgZWNobyAiPG1ldGEgbmFtZT0na2V5d29yZHMnIGNvbnRlbnQ9JyRzZW9fa2V5d29yZHMnIC8+XG4iOw0KICAgIGVjaG8gIjxtZXRhIG5hbWU9J2RhdGUnIGNvbnRlbnQ9JyRtb2RpZmllZF9kYXRlJyAvPlxuIjsNCiAgICBlY2hvICI8bWV0YSBuYW1lPSdsYXN0dXBkYXRlJyBjb250ZW50PSckbW9kaWZpZWRfZGF0ZScgLz5cbiI7DQogICAgZWNobyAiPG1ldGEgbmFtZT0ncmV2aXNlZCcgY29udGVudD0nJG1vZGlmaWVkX2RhdGUnIC8+XG4iOw0KICAgIGVjaG8gIjxtZXRhIG5hbWU9J2F1dGhvcicgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9wdWJsaXNoZXInLCcnKS4iJyAvPlxuIjsNCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbG9jYXRpb24nLCcnKSAhPSAiIikgew0KICAgICAgZWNobyAiPG1ldGEgbmFtZT0nZ2VvLnBsYWNlbmFtZScgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb2NhdGlvbicsJycpLiInIC8+XG4iOw0KICAgIH0NCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJywnJykgIT0gIiIpIHsNCiAgICAgIGVjaG8gIjxtZXRhIG5hbWU9J2dlby5yZWdpb24nIGNvbnRlbnQ9JyIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJywnJykuIicgLz5cbiI7DQogICAgfQ0KICAgIGlmICgoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbGF0aXR1ZGUnLCcnKSAhPSAiIikgJiYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xvbmdpdHVkZScsJycpICE9ICIiKSkgew0KICAgICAgZWNobyAiPG1ldGEgbmFtZT0nZ2VvLnBvc2l0aW9uJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xhdGl0dWRlJywnJykuIjsiLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xvbmdpdHVkZScsJycpLiInIC8+XG4iOw0KICAgICAgZWNobyAiPG1ldGEgbmFtZT0nSUNCTScgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScsJycpLiIsICIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbG9uZ2l0dWRlJywnJykuIicgLz5cbiI7DQogICAgfQ0KfQ0KDQppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2FkZGl0aW9uYWxfbWV0YV90YWdzJywnJykgIT0gJycpIHsNCgllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YSgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnYWRkaXRpb25hbF9tZXRhX3RhZ3MnLCcnKSk7DQp9DQoNCi8vIER1YmxpbkNvcmUgTUVUQSB0YWdzDQppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfZHVibGluY29yZScsMCkgPT0gMSkgew0KICAgIGVjaG8gIjxsaW5rIHJlbD0nc2NoZW1hLkRDJyBocmVmPSdodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLycgLz5cbiI7DQogICAgZWNobyAiPGxpbmsgcmVsPSdzY2hlbWEuRENURVJNUycgaHJlZj0naHR0cDovL3B1cmwub3JnL2RjL3Rlcm1zLycgLz5cbiI7DQogICAgZWNobyAiPG1ldGEgbmFtZT0nREMudHlwZScgY29udGVudD0nVGV4dCcgc2NoZW1lPSdEQ1RFUk1TLkRDTUlUeXBlJyAvPlxuIjsNCiAgICBlY2hvICI8bWV0YSBuYW1lPSdEQy5mb3JtYXQnIGNvbnRlbnQ9J3RleHQvaHRtbCcgc2NoZW1lPSdEQ1RFUk1TLklNVCcgLz5cbiI7DQogICAgZWNobyAiPG1ldGEgbmFtZT0nREMucmVsYXRpb24nIGNvbnRlbnQ9J2h0dHA6Ly9kdWJsaW5jb3JlLm9yZy8nIHNjaGVtZT0nRENURVJNUy5VUkknIC8+XG4iOw0KICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLnB1Ymxpc2hlcicgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9wdWJsaXNoZXInLCcnKS4iJyAvPlxuIjsNCiAgICBlY2hvICI8bWV0YSBuYW1lPSdEQy5jb250cmlidXRvcicgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9jb250cmlidXRvcicsJycpLiInIC8+XG4iOw0KICAgIA0KICAgIA0KLy8gICAgZWNobyAiPG1ldGEgbmFtZT0nREMubGFuZ3VhZ2UnIGNvbnRlbnQ9JyIuJGdDbXMtPnNpdGVwcmVmc1snZnJvbnRlbmRsYW5nJ10uIicgc2NoZW1lPSdEQ1RFUk1TLlJGQzMwNjYnIC8+XG4iOw0KDQogICAgaWYoJGZlbGFuZyA9IGNtc19zaXRlcHJlZnM6OmdldCgnZnJvbnRlbmRsYW5nJykpDQogICAgICBlY2hvICI8bWV0YSBuYW1lPSdEQy5sYW5ndWFnZScgY29udGVudD0nIi4kZmVsYW5nLiInIHNjaGVtZT0nRENURVJNUy5SRkMzMDY2JyAvPlxuIjsNCiAgICANCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfY29weXJpZ2h0JywnJykgIT0gIiIpDQogICAgICBlY2hvICI8bWV0YSBuYW1lPSdEQy5yaWdodHMnIGNvbnRlbnQ9JyIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfY29weXJpZ2h0JywnJykuIicgLz5cbiI7DQogICAgICANCiAgICBlY2hvICI8bWV0YSBuYW1lPSdEQy50aXRsZScgY29udGVudD0nJG1ldGFfdGl0bGUnIC8+XG4iOw0KICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLmRlc2NyaXB0aW9uJyBjb250ZW50PSckZGVzY3JpcHRpb24nIC8+XG4iOw0KICAgIGVjaG8gIjxtZXRhIG5hbWU9J0RDLmRhdGUnIGNvbnRlbnQ9JyRtb2RpZmllZF9kYXRlJyBzY2hlbWU9J0RDVEVSTVMuVzNDRFRGJyAvPlxuIjsNCiAgICBlY2hvICI8bWV0YSBuYW1lPSdEQy5pZGVudGlmaWVyJyBjb250ZW50PSckcGFnZV91cmwnIHNjaGVtZT0nRENURVJNUy5VUkknIC8+XG4iOw0KfQ0KDQovLyBPcGVuR3JhcGggTUVUQSB0YWdzDQppZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoJywwKSA9PSAxKSB7DQogICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J29nOnRpdGxlJyBjb250ZW50PSckb3BlbmdyYXBoX3RpdGxlJyAvPlxuIjsNCiAgICBpZiAoJHBhZ2VfaW5mb1snb2d0eXBlJ10gPT0gIiIpIHsNCiAgICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzp0eXBlJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90eXBlJywnJykuIicgLz5cbiI7DQogICAgfWVsc2V7DQogICAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6dHlwZScgY29udGVudD0nIi4kcGFnZV9pbmZvWydvZ3R5cGUnXS4iJyAvPlxuIjsNCiAgICB9DQogICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J29nOnVybCcgY29udGVudD0nJHBhZ2VfdXJsJyAvPlxuIjsNCiAgICANCiAgICAkaW1nID0gJGN1cmNvbnRlbnQtPlByb3BlcnRpZXMoKS0+R2V0VmFsdWUoJ2ltYWdlJyk7DQogICAgaWYgKCgkaW1nICE9IC0xKSAmJiAoJGltZyAhPSAiIikpICB7DQogICAgCSRpbWFnZSA9ICRpbWc7DQogICAgCQ0KICAgIH1lbHNlew0KICAgIAkkaW1hZ2UgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfaW1hZ2UnLCcnKTsNCiAgICB9DQogICAgDQogICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J29nOmltYWdlJyBjb250ZW50PSciLiRjb25maWdbJ3Jvb3RfdXJsJ10uIi91cGxvYWRzL2ltYWdlcy8kaW1hZ2UnIC8+XG4iOw0KLy8gICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J29nOnNpdGVfbmFtZScgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnLCRnQ21zLT5HZXRQcmVmZXJlbmNlKCdzaXRlbmFtZScpKS4iJyAvPlxuIjsNCiAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6c2l0ZV9uYW1lJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9zaXRlbmFtZScsY21zX3NpdGVwcmVmczo6Z2V0KCdzaXRlbmFtZScpKS4iJyAvPlxuIjsNCiAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6ZGVzY3JpcHRpb24nIGNvbnRlbnQ9JyRkZXNjcmlwdGlvbicgLz5cbiI7DQogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbicsJycpICE9ICIiKSB7DQogICAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nZmI6YXBwX2lkJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hcHBsaWNhdGlvbicsJycpLiInIC8+XG4iOw0KICAgIH1lbHNlew0KICAgICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J2ZiOmFkbWlucycgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfYWRtaW5zJywnJykuIicgLz5cbiI7DQogICAgfQ0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb2NhdGlvbicsJycpICE9ICIiKSB7DQogICAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6bG9jYWxpdHknIGNvbnRlbnQ9JyIuJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfbG9jYXRpb24nLCcnKS4iJyAvPlxuIjsNCiAgICB9DQogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3JlZ2lvbicsJycpICE9ICIiKSB7DQogICAgICBlY2hvICI8bWV0YSBwcm9wZXJ0eT0nb2c6cmVnaW9uJyBjb250ZW50PSciLiR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX3JlZ2lvbicsJycpLiInIC8+XG4iOw0KICAgIH0NCiAgICBpZiAoKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX2xhdGl0dWRlJywnJykgIT0gIiIpICYmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb25naXR1ZGUnLCcnKSAhPSAiIikpIHsNCiAgICAgIGVjaG8gIjxtZXRhIHByb3BlcnR5PSdvZzpsYXRpdHVkZScgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScsJycpLiInIC8+XG4iOw0KICAgICAgZWNobyAiPG1ldGEgcHJvcGVydHk9J29nOmxvbmdpdHVkZScgY29udGVudD0nIi4kdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9sb25naXR1ZGUnLCcnKS4iJyAvPlxuIjsNCiAgICB9DQp9DQoNCi8vIEltYWdlLUxpbmsNCg0KLy9pZiAoKCRjdXJjb250ZW50LT5HZXRQcm9wZXJ0eVZhbHVlKCdpbWFnZScpICE9IC0xKSAmJiAoJGN1cmNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJ2ltYWdlJykgIT0gIiIpKSAgew0KICAgIGlmICgoJGltZyAhPSAtMSkgJiYgKCRpbWcgIT0gIiIpKSAgew0KICAgICAgZWNobyAiPGxpbmsgcmVsPSdpbWFnZV9zcmMnIGhyZWY9JyIuJGNvbmZpZ1sncm9vdF91cmwnXS4iL3VwbG9hZHMvaW1hZ2VzLyIuJGltZy4iJyAvPiI7DQogICAgfQ0KDQo/Pg==]]></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+R2V0RGIoKTsNCg0KDQppZiAoaXNzZXQoJF9QT1NUWydzZXRfa2V5d29yZHMnXSkpIHsNCglpZiAoJF9QT1NUWydrZXl3b3JkcyddICE9ICIiKSB7DQoJCSRxdWVyeSA9ICJJTlNFUlQgSU5UTyAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzMiBTRVQgY29udGVudF9pZCA9ICIuJF9QT1NUWydjb250ZW50X2lkJ10uIiwga2V5d29yZHMgPSAnIi4kX1BPU1RbJ2tleXdvcmRzJ10uIicsIGluZGV4YWJsZSA9IDEgT04gRFVQTElDQVRFIEtFWSBVUERBVEUga2V5d29yZHMgPSAnIi4kX1BPU1RbJ2tleXdvcmRzJ10uIiciOw0KCX1lbHNlew0KCQkkcXVlcnkgPSAiVVBEQVRFICIuY21zX2RiX3ByZWZpeCgpLiJtb2R1bGVfc2VvdG9vbHMyIFNFVCBrZXl3b3JkcyA9IE5VTEwgV0hFUkUgY29udGVudF9pZCA9ICIuJF9QT1NUWydjb250ZW50X2lkJ107DQoJfQ0KCSRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KCSR0aGlzLT5yZWRpcmVjdChudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgQXJyYXkoJ3RhYic9PidwYWdlZGVzY3JpcHRpb25zJykpOw0KfQ0KDQokcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3Nlb3Rvb2xzMiBXSEVSRSBjb250ZW50X2lkID0gJy4kX0dFVFsnY29udGVudF9pZCddOw0KJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KJGluZm8gPSAkcmVzdWx0LT5mZXRjaFJvdygpOw0KDQppZiAoJGluZm9bJ2tleXdvcmRzJ10gPT0gIiIpIHsNCgkkaW5mb1sna2V5d29yZHMnXSA9IHN0cnRvbG93ZXIoaW1wbG9kZSgnICcsYXJyYXlfZmxpcCgkdGhpcy0+Z2V0S2V5d29yZFN1Z2dlc3Rpb25zKCRfR0VUWydjb250ZW50X2lkJ10pKSkpOw0KfQ0KDQokb3V0cHV0ICA9ICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQobnVsbCwgJ2VkaXRfa2V5d29yZHMnKTsNCiRvdXRwdXQgLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKG51bGwsICdjb250ZW50X2lkJywgJF9HRVRbJ2NvbnRlbnRfaWQnXSk7DQokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPkxhbmcoJ2VudGVyX25ld19rZXl3b3JkcycpLic6PC9wPic7DQokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nLiR0aGlzLT5DcmVhdGVUZXh0QXJlYShmYWxzZSwgbnVsbCwgJGluZm9bJ2tleXdvcmRzJ10sICdrZXl3b3JkcycpLicgJy4kdGhpcy0+TGFuZygnaGVscF9uZXdfa2V5d29yZHMnKS4nPC9wPic7DQokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZXRleHQiPjwvcD4nOw0KJG91dHB1dCAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQobnVsbCwgJ3NldF9rZXl3b3JkcycsJHRoaXMtPmxhbmcoJ3NhdmUnKSkuJzwvcD4nOw0KDQokb3V0cHV0IC49ICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7DQoNCmVjaG8gJG91dHB1dDsNCg0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.edit_ogtype.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQoNCi8qIC09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tDQoNCiAgIENvZGUgZm9yIFNFT1Rvb2xzMiAiZWRpdG1ldGEiIGFkbWluIGFjdGlvbg0KICAgDQogICAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQ0KICAgDQogICBUeXBpY2FsbHksIHRoaXMgd2lsbCBkaXNwbGF5IHNvbWV0aGluZyBmcm9tIGEgdGVtcGxhdGUNCiAgIG9yIGRvIHNvbWUgb3RoZXIgdGFzay4NCiAgIA0KKi8NCg0KJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCg0KaWYgKGlzc2V0KCRfUE9TVFsnc2V0X29ndHlwZSddKSkgew0KCWlmICgkX1BPU1RbJ29nX3R5cGUnXSAhPSAiIikgew0KCQkkcXVlcnkgPSAiSU5TRVJUIElOVE8gIi5jbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9zZW90b29sczIgU0VUIGNvbnRlbnRfaWQgPSAiLiRfUE9TVFsnY29udGVudF9pZCddLiIsIG9ndHlwZSA9ICciLiRfUE9TVFsnb2dfdHlwZSddLiInLCBpbmRleGFibGUgPSAxIE9OIERVUExJQ0FURSBLRVkgVVBEQVRFIG9ndHlwZSA9ICciLiRfUE9TVFsnb2dfdHlwZSddLiInIjsNCgl9ZWxzZXsNCgkJJHF1ZXJ5ID0gIlVQREFURSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzMiBTRVQgb2d0eXBlID0gTlVMTCBXSEVSRSBjb250ZW50X2lkID0gIi4kX1BPU1RbJ2NvbnRlbnRfaWQnXTsNCgl9DQoJDQoJZWNobyAkcXVlcnk7DQoJDQoJJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoJJHRoaXMtPlJlZGlyZWN0KG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCBBcnJheSgndGFiJz0+J3BhZ2VkZXNjcmlwdGlvbnMnKSk7DQp9DQoNCiRxdWVyeSA9ICJTRUxFQ1QgKiBGUk9NICIuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2VvdG9vbHMyIFdIRVJFIGNvbnRlbnRfaWQgPSAnLiRfR0VUWydjb250ZW50X2lkJ107DQokcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQokaW5mbyA9ICRyZXN1bHQtPmZldGNoUm93KCk7DQoNCiRvdXRwdXQgID0gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydChudWxsLCAnZWRpdF9vZ3R5cGUnKTsNCiRvdXRwdXQgLj0gJHRoaXMtPkNyZWF0ZUlucHV0SGlkZGVuKG51bGwsICdjb250ZW50X2lkJywgJF9HRVRbJ2NvbnRlbnRfaWQnXSk7DQokb3V0cHV0IC49ICc8cCBjbGFzcz0icGFnZXRleHQiPicuJHRoaXMtPkxhbmcoJ2VudGVyX25ld19vZ3R5cGUnKS4nOjwvcD4nOw0KJG91dHB1dCAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+Jy4kdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KG51bGwsICdvZ190eXBlJywgJGluZm9bJ29ndHlwZSddLCAzMCwgMzApLicgJy4kdGhpcy0+TGFuZygnaGVscF9uZXdfb2d0eXBlJykuJzwvcD4nOw0KJG91dHB1dCAuPSAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+PGJyIC8+Jy4kdGhpcy0+TGFuZygnaGVscF9vcGVuZ3JhcGgnKS4nPGJyIC8+PGJyIC8+JzsNCiRvdXRwdXQgLj0gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPicuJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KG51bGwsICdzZXRfb2d0eXBlJywkdGhpcy0+TGFuZygnc2F2ZScpKS4nPC9wPic7DQoNCiRvdXRwdXQgLj0gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsNCg0KZWNobyAkb3V0cHV0Ow0KDQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/event.Core.ContentDeletePost.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQoNCi8qIC09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tDQoNCkNvZGUgdG8gcHVzaCBzaXRlbWFwIHRvIEdvb2dsZSBXZWJtYXN0ZXJzIGlmIHJlcXVpcmVkDQoNCi09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tICovDQoNCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJykgPT0gMSkgew0KICAgICAgJHRoaXMtPmNyZWF0ZVNpdGVtYXAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcpID09IDEpOw0KICAgIH0NCg==]]></data>
	</file>
	<file>
	  <filename>/event.Core.ContentEditPost.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQoNCi8qIC09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tDQoNCkNvZGUgdG8gcHVzaCBzaXRlbWFwIHRvIEdvb2dsZSBXZWJtYXN0ZXJzIGlmIHJlcXVpcmVkDQoNCi09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tICovDQoNCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJykgPT0gMSkgew0KICAgICAgJHRoaXMtPmNyZWF0ZVNpdGVtYXAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcpID09IDEpOw0KICAgIH0NCg==]]></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[PD9waHANCiRsYW5nWydmcmllbmRseW5hbWUnXSA9ICdTRU9Ub29sczInOw0KJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnU0VPVG9vbHMyIGhhcyBiZWVuIGluc3RhbGxlZC4gQmUgc3VyZSB0byByZWFkIHRoZSBtb2R1bGUgaGVscCB0byBsZWFybiBob3cgdG8gdXNlIGl0Lic7DQokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1NFT1Rvb2xzMiBoYXMgYmVlbiB1bmluc3RhbGxlZC4gUGxlYXNlIGJlIGF3YXJlIHRoYXQgeW91IGhhdmUganVzdCBsb3N0IGFsbCBtZXRhIGluZm9ybWF0aW9uIGZyb20geW91ciBwYWdlcyEnOw0KJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gdW5pbnN0YWxsIFNFT1Rvb2xzMj8nOw0KJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxlIFVuaW5zdGFsbGVkLic7DQokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHZlcnNpb24gJXMgaW5zdGFsbGVkLic7DQokbGFuZ1sndXBncmFkZWQnXSA9ICdNb2R1bGUgdXBncmFkZWQgdG8gdmVyc2lvbiAlcy4nOw0KJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnQSBjb2xsZWN0aW9uIG9mIHRvb2xzIHRvIGhlbHAgd2l0aCBTZWFyY2ggRW5naW5lIE9wdGltaXphdGlvbi4nOw0KDQokbGFuZ1snZXZlbnRkZXNjLVByZWZzVXBkYXRlZCddID0gJ1NlbnQgd2hlbiB0aGUgYWRtaW4gcHJlZmVyZW5jZXMgYXJlIHVwZGF0ZWQuJzsNCiRsYW5nWydldmVudGhlbHAtUHJlZnNVcGRhdGVkJ10gPSAnPHA+U2VudCB3aGVuIHRoZSBhZG1pbiBwcmVmZXJlbmNlcyBhcmUgdXBkYXRlZC48L3A+DQo8aDQ+UGFyYW1ldGVyczwvaDQ+DQo8b2w+DQo8bGk+PC9saT4NCjwvb2w+JzsNCg0KDQoNCiRsYW5nWydlcnJvciddID0gJ0Vycm9yISc7DQokbGFuZFsnYWRtaW5fdGl0bGUnXSA9ICdTRU9Ub29sczIgQWRtaW4gUGFuZWwnOw0KJGxhbmdbJ2FkbWluZGVzY3JpcHRpb24nXSA9ICdIZWxwcyB3aXRoIFNFTyBpbiBnZW5lcmFsLCBhdXRvbWF0aWNhbGx5IGdlbmVyYXRpbmcgWE1MIHNpdGVtYXBzIGFuZCBjb21wcmVoZW5zaXZlIG1ldGEgZGVzY3JpcHRpb25zJzsNCiRsYW5nWydhY2Nlc3NkZW5pZWQnXSA9ICdBY2Nlc3MgRGVuaWVkLiBQbGVhc2UgY2hlY2sgeW91ciBwZXJtaXNzaW9ucy4nOw0KJGxhbmdbJ1NFT0FsZXJ0cyddID0gJ1NFTyBBbGVydHMnOw0KJGxhbmdbJ1BhZ2VkZXNjcmlwdGlvbnMnXSA9ICdQYWdlIHNldHRpbmdzJzsNCiRsYW5nWydTaXRlbWFwJ10gPSAnU2l0ZW1hcCc7DQokbGFuZ1snU0VPU2V0dGluZ3MnXSA9ICdTRU8gU2V0dGluZ3MnOw0KJGxhbmdbJ3RpdGxlX3Nlb2FsZXJ0cyddID0gJ1NFTyBBbGVydHMnOw0KJGxhbmdbJ3RpdGxlX3BhZ2VkZXNjcmlwdGlvbnMnXSA9ICdQYWdlIHNldHRpbmdzJzsNCiRsYW5nWyd0aXRsZV9zaXRlbWFwJ10gPSAnU2l0ZW1hcCc7DQokbGFuZ1sndGl0bGVfc2Vvc2V0dGluZ3MnXSA9ICdTRU8gU2V0dGluZ3MnOw0KDQokbGFuZ1sndGl0bGVfbWV0YV90eXBlJ10gPSAnTWV0YSBUYWcgR2VuZXJhdG9yJzsNCiRsYW5nWydtZXRhX2NyZWF0ZV9zdGFuZGFyZCddID0gJ0dlbmVyYXRlIHN0YW5kYXJkIE1ldGEgVGFncyc7DQokbGFuZ1snbWV0YV9jcmVhdGVfZHVibGluY29yZSddID0gJ0dlbmVyYXRlIER1YmxpbiBDb3JlIE1ldGEgVGFncyc7DQokbGFuZ1snbWV0YV9jcmVhdGVfb3BlbmdyYXBoJ10gPSAnR2VuZXJhdGUgT3BlbkdyYXBoIE1ldGEgVGFncyAoZS5nLiBmb3IgRmFjZWJvb2sgTGlrZSBCdXR0b24pJzsNCg0KJGxhbmdbJ3RpdGxlX21ldGFfZGVmYXVsdHMnXSA9ICdNRVRBIFRhZyBWYWx1ZXMnOw0KJGxhbmdbJ21ldGFfcHVibGlzaGVyJ10gPSAnU2l0ZSBwdWJsaXNoZXInOw0KJGxhbmdbJ21ldGFfcHVibGlzaGVyX2hlbHAnXSA9ICcoVGhpcyBpcyB1c3VhbGx5IHRoZSBvcmdhbml6YXRpb24geW91IGFyZSBidWlsZGluZyB0aGUgd2Vic2l0ZSBmb3IpJzsNCiRsYW5nWydtZXRhX2NvbnRyaWJ1dG9yJ10gPSAnU2l0ZSBjb250cmlidXRvcic7DQokbGFuZ1snbWV0YV9jb250cmlidXRvcl9oZWxwJ10gPSAnKFVzdWFsbHksIHRoaXMgd291bGQgYmUgeW91IG9yIGFueSBvdGhlciBjb250ZW50IGF1dGhvciknOw0KJGxhbmdbJ21ldGFfY29weXJpZ2h0J10gPSAnU2l0ZSBjb3B5cmlnaHQnOw0KJGxhbmdbJ21ldGFfY29weXJpZ2h0X2hlbHAnXSA9ICcoU29tZXRoaW5nIGxpa2UgIihDKSBZb3VyIENvbXBhbnkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQiKSc7DQokbGFuZ1snbWV0YV9sb2NhdGlvbl9kZXNjcmlwdGlvbiddID0gJ0lmIHlvdXIgd2Vic2l0ZSBpcyBhYm91dCBhbiBlbnRpdGl5IHRoYXQgY2FuIGJlIGxvY2F0ZWQgb24gYSBtYXAsIHlvdSBzaG91bGQgb3B0aW9uYWxseSBmaWxsIGluIHRoZSBmb2xsb3dpbmcgdmFsdWVzOic7DQokbGFuZ1snbWV0YV9sb2NhdGlvbiddID0gJ0xvY2F0aW9uIG9mIHlvdXIgZW50aXR5JzsNCiRsYW5nWydtZXRhX2xvY2F0aW9uX2hlbHAnXSA9ICcoVXN1YWxseSwgdGhpcyB3b3VsZCBiZSB0aGUgdG93biBuYW1lIG9mIHlvdXIgY29tcGFueSknOw0KJGxhbmdbJ21ldGFfcmVnaW9uJ10gPSAnUmVnaW9uIG9mIHlvdXIgZW50aXR5JzsNCiRsYW5nWydtZXRhX3JlZ2lvbl9oZWxwJ10gPSAnKEVudGVyIHNvbWV0aGluZyBsaWtlICJVUy1JTCIgZm9yIGFuIGVudGl0eSBsb2NhdGVkIGluIElsbGlub2lzLCBVUyknOw0KJGxhbmdbJ21ldGFfbGF0aXR1ZGUnXSA9ICdMYXRpdHVkZSBvZiB5b3VyIGVudGl0eSc7DQokbGFuZ1snbWV0YV9sYXRpdHVkZV9oZWxwJ10gPSAnKEVudGVyIHRoZSBkZWNpbWFsIGxhdGl0dWRlIGdlbyBjb29kaW5hdGUgb2YgeW91ciBlbnRpdGl5KSc7DQokbGFuZ1snbWV0YV9sb25naXR1ZGUnXSA9ICdMb25naXR1ZGUgb2YgeW91ciBlbnRpdHknOw0KJGxhbmdbJ21ldGFfbG9uZ2l0dWRlX2hlbHAnXSA9ICcoRW50ZXIgdGhlIGRlY2ltYWwgbG9uZ2l0dWRlIGdlbyBjb29kaW5hdGUgb2YgeW91ciBlbnRpdGl5KSc7DQokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfZGVzY3JpcHRpb24nXSA9ICdJZiB5b3UgYXJlIGNyZWF0aW5nIE9wZW5HcmFwaCBNRVRBIFRhZ3MsIHBsZWFzZSBmaWxsIGluIHRoZSBmb2xsb3dpbmcgdmFsdWVzOic7DQokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfdGl0bGUnXSA9ICdPcGVuR3JhcGggcGFnZSB0aXRsZSc7DQokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfdGl0bGVfaGVscCddID0gJyhZb3UgY2FuIHVzZSBhbGwgc21hcnR5IHRhZ3MgaGVyZSwgZS5nLiB0byByZXBsYWNlIHdpdGggdGhlIGFjdHVhbCBwYWdlIHRpdGxlKSc7DQokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfdHlwZSddID0gJ09wZW5HcmFwaCBkZWZhdWx0IHBhZ2UgdHlwZSc7DQokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfdHlwZV9oZWxwJ10gPSAnKFRoZSBkZWZhdWx0IHBhZ2UgdHlwZSBmb3IgT3BlbkdyYXBoLCBjYW4gYmUgb3ZlcnJpZGRlbiBmb3IgZWFjaCBwYWdlLiBMb29rIDxhIGhyZWY9Imh0dHA6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL29wZW5ncmFwaCN0eXBlcyIgdGFnZXQ9Il9ibGFuayI+aGVyZTwvYT4gZm9yIGEgbGlzdCBvZiBhbGxvd2VkIHZhbHVlcyknOw0KJGxhbmdbJ21ldGFfb3BlbmdyYXBoX3NpdGVuYW1lJ10gPSAnT3BlbkdyYXBoIHNpdGUgbmFtZSc7DQokbGFuZ1snbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWVfaGVscCddID0gJyhBIHNob3J0IHZlcnNpb24gb2YgeW91ciBzaXRlIG5hbWUsIGUuZy4gIllvdXIgQ29tcGFueSIsIG1heC4gMjUgY2hhcnMpJzsNCiRsYW5nWydtZXRhX29wZW5ncmFwaF9pbWFnZSddID0gJ09wZW5HcmFwaCBkZWZhdWx0IGltYWdlJzsNCiRsYW5nWydtZXRhX29wZW5ncmFwaF9pbWFnZV9oZWxwJ10gPSAnKFNlbGVjdCBhbiBpbWFnZSBmcm9tIHlvdXIgL3VwbG9hZHMvaW1hZ2VzIGRpcmVjdG9yeSB0byBiZSB1c2VkIGFzIHRoZSBkZWZhdWx0IGZvciBPcGVuR3JhcGggcGFnZXMpJzsNCiRsYW5nWydtZXRhX29wZW5ncmFwaF9hZG1pbnMnXSA9ICdGYWNlYm9vayBzaXRlIGFkbWluaXN0cmF0b3JzJzsNCiRsYW5nWydtZXRhX29wZW5ncmFwaF9hZG1pbnNfaGVscCddID0gJyhBIGNvbW1hIHNlcGFyYXRlZCBsaXN0IG9mIGZhY2Vib29rIGFjY291bnQgSURzIHdobyBhcmUgYWJsZSB0byBhZG1pbmlzdHJhdGUgdGhlIHN0cmVhbXMgb2YgeW91ciBwYWdlcyknOw0KJGxhbmdbJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJ10gPSAnRmFjZWJvb2sgYXBwbGljYXRpb24nOw0KJGxhbmdbJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uX2hlbHAnXSA9ICcoVGhlIElEIG9mIGEgZmFjZWJvb2sgYXBwbGljYXRpb24gYWJsZSB0byBhZG1pbmlzdHJhdGUgdGhlIHN0cmVhbXMgb2YgeW91ciBwYWdlcyknOw0KDQokbGFuZ1sndGl0bGVfdGl0bGVfZGVzY3JpcHRpb24nXSA9ICdQYWdlIHRpdGxlLCBkZXNjcmlwdGlvbiBhbmQga2V5d29yZHMnOw0KJGxhbmdbJ3RpdGxlX3RpdGxlJ10gPSAnUGFnZSB0aXRsZSc7DQokbGFuZ1sndGl0bGVfdGl0bGVfaGVscCddID0gJyhUaGUgcGFnZSB0aXRsZSB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGJyb3dzZXJcJ3MgdGl0bGUgYmFyLiBZb3UgY2FuIHVzZSB0aGUgdGFncyB7dGl0bGV9LCB7cGFnZXRpdGxlfSwge3Nlb19rZXl3b3Jkc30gYW5kIGFsbCBzbWFydHkgdGFncyBhbmQgVURUcyBoZXJlKSc7DQokbGFuZ1sndGl0bGVfbWV0YV90aXRsZSddID0gJ1BhZ2UgTWV0YSB0aXRsZSc7DQokbGFuZ1sndGl0bGVfbWV0YV9oZWxwJ10gPSAnKFRoZSBwYWdlIHRpdGxlIHRvIGJlIHVzZWQgaW4gdGhlIE1ldGEgdGl0bGUgdGFncy4gWW91IGNhbiB1c2UgdGhlIHRhZ3Mge3RpdGxlfSwge3BhZ2V0aXRsZX0sIHtzZW9fa2V5d29yZHN9IGFuZCBhbGwgc21hcnR5IHRhZ3MgYW5kIFVEVHMgaGVyZSknOw0KJGxhbmdbJ2Rlc2NyaXB0aW9uX2Jsb2NrX3RpdGxlJ10gPSAnTmFtZSBvZiBwYWdlIGRlc2NyaXB0aW9uIGNvbnRlbnQgYmxvY2snOw0KJGxhbmdbJ2Rlc2NyaXB0aW9uX2Jsb2NrX2hlbHAnXSA9ICcoVGhlIG5hbWUgb2YgeW91ciBwYWdlIGRlc2NyaXB0aW9uIGNvbnRlbnQgYmxvY2suIFBsZWFzZSBzZWUgYmVsb3cgZm9yIGFuIGV4cGxhbmF0aW9uKSc7DQokbGFuZ1snZGVmYXVsdF9rZXl3b3Jkc190aXRsZSddID0gJ0tleXdvcmRzIHRvIGFsd2F5cyBpbmNsdWRlJzsNCiRsYW5nWydkZWZhdWx0X2tleXdvcmRzX2hlbHAnXSA9ICcoQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBrZXl3b3JkcyB5b3Ugd291bGQgbGlrZSB0byBpbmNsdWRlIG9uIGV2ZXJ5IHBhZ2UpJzsNCg0KJGxhbmdbJ3RpdGxlX3NpdGVtYXBfZGVzY3JpcHRpb24nXSA9ICdHb29nbGUgU2l0ZW1hcCBhbmQgQ3Jhd2xlciBTZXR0aW5ncyc7DQokbGFuZ1snY3JlYXRlX3NpdGVtYXBfdGl0bGUnXSA9ICdDcmVhdGUgYW4gWE1MIEdvb2dsZSBTaXRlbWFwKic7DQokbGFuZ1sncHVzaF9zaXRlbWFwX3RpdGxlJ10gPSAnQXV0b21hdGljYWxseSBwdXNoIHRoZSBzaXRlbWFwIHRvIEdvb2dsZSBhZnRlciBjb250ZW50IGNoYW5nZXMnOw0KJGxhbmdbJ2NyZWF0ZV9yb2JvdHNfdGl0bGUnXSA9ICdDcmVhdGUgYSByb2JvdHMudHh0IGZpbGUqJzsNCiRsYW5nWyd2ZXJpZmljYXRpb25fdGl0bGUnXSA9ICdTaXRlIHZlcmlmaWNhdGlvbiBjb2RlJzsNCiRsYW5nWyd2ZXJpZmljYXRpb25faGVscCddID0gJyhUaGUgc2l0ZSB2ZXJpZmljYXRpb24gY29kZSB5b3Ugb2J0YWluIGZyb20gR29vZ2xlIFdlYm1hc3RlciBUb29scywganVzdCB0aGUgaGFzaCwgbm90IHRoZSBjb21wbGV0ZSBtZXRhIHRhZyknOw0KDQokbGFuZ1sndGl0bGVfYWxlcnRzX3VyZ2VudCddID0gJ1RvIGJlIGZpeGVkIGltbWVkaWF0ZWx5JzsNCiRsYW5nWyd0aXRsZV9hbGVydHNfaW1wb3J0YW50J10gPSAnVG8gYmUgZml4ZWQgYXMgc29vbiBhcyBwb3NzaWJsZSc7DQokbGFuZ1sndGl0bGVfYWxlcnRzX25vdGljZXMnXSA9ICdUaGluZ3MgeW91IHNob3VsZCBjb25zaWRlciBmaXhpbmcnOw0KJGxhbmdbJ25vdGhpbmdfdG9fYmVfZml4ZWQnXSA9ICdUaGVyZSBhcmUgbm8gYWN0aW9ucyB5b3UgbmVlZCB0byB0YWtlIGluIHRoaXMgY2F0ZWdvcnknOw0KDQokbGFuZ1snc2F2ZSddID0gJ1NhdmUgc2V0dGluZ3MnOw0KJGxhbmdbJ25vbmUnXSA9ICcobm9uZSknOw0KJGxhbmdbJ3NldHRpbmdzX3VwZGF0ZWQnXSA9ICdUaGUgU0VPIHNldHRpbmdzIHdlcmUgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQuJzsNCiRsYW5nWydwcm9ibGVtX2FsZXJ0J10gPSAnaGFzIGRldGVjdGVkIHNldmVyZSBwcm9ibGVtcyB3aXRoIHlvdXIgU0VPLiAlcyc7DQokbGFuZ1sncHJvYmxlbV9saW5rX3RpdGxlJ10gPSAnQ2xpY2sgaGVyZSB0byBmaXggdGhlbSc7DQoNCiRsYW5nWydoZWxwX2Rlc2NyaXB0aW9uX2NvbnRlbnQnXSA9ICc8Yj5Ib3cgdG8gdXNlIHRoZSAiZGVzY3JpcHRpb24gY29udGVudCBibG9jayI6PC9iPjxiciAvPlRvIGJlIGFibGUgdG8gZW50ZXIgYSBwYWdlIGRlc2NyaXB0aW9uIHdoZW4gZWRpdGluZyBhIHBhZ2UsIHlvdSBtdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBjb2RlIGFueXdoZXJlIG9uIGV2ZXJ5IHRlbXBsYXRlOjxiciAvPjxiciAvPjxwcmU+e2NhcHR1cmUgYXNzaWduPW1ldGFkZXNjcmlwdGlvbn17Y29udGVudCBibG9jaz0ibWV0YWRlc2NyaXB0aW9uIiBsYWJlbD0iTUVUQSBEZXNjcmlwdGlvbiIgb25lbGluZT0idHJ1ZSJ9ey9jYXB0dXJlfTwvcHJlPjxiciAvPlRoZW4sIHB1dCAibWV0YWRlc2NyaXB0aW9uIiBpbnRvIHRoZSBmaWVsZCAiTmFtZSBvZiBwYWdlIGRlc2NyaXB0aW9uIGNvbnRlbnQgYmxvY2s8YnIgLz48YnIgLz5BbHRlcm5hdGl2ZWx5LCBlbmFibGUgdGhlIG9wdGlvbiAmcXVvdDtBdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGRlc2NyaXB0aW9ucyB3aGVyZSBub25lIGlzIGdpdmVuJnF1b3Q7LiBUaGlzIGlzIG5vdCBhcyBnb29kIGJ1dCBzdGlsbCBiZXR0ZXIgdGhhbiBub3RoaW5nLic7DQokbGFuZ1snaGVscF9zaXRlbWFwX3JvYm90cyddID0gJyopIFRvIHVzZSB0aGUgYXV0b21hdGljIGdlbmVyYXRpb24gb2YgYSBzaXRlbWFwLSBhbmQgcm9ib3RzLWZpbGUsIHRoZSByb290IGRpcmVjdG9yeSBvZiB5b3VyIENNU01TIGluc3RhbGxhdGlvbiBtdXN0IGJlIHdyaXRlYWJsZSB0byB0aGUgd2ViIHNlcnZlci4gSWYgeW91ciBhbHJlYWR5IGhhdmUgYSBzaXRlbWFwLnhtbCBhbmQvcHIgcm9ib3RzLnR4dCBmaWxlLCBib3RoIG9mIHRoZW0gbXVzdCBiZSB3cml0ZWFibGUgdG8gdGhlIHdlYiBzZXJ2ZXIuJzsNCg0KJGxhbmdbJ3VzZV9zdGFuZGFyZF9vcl9kdWJsaW5jb3JlX21ldGEnXSA9ICdVc2UgYXQgbGVhc3Qgb25lIG9mIHRoZSBzdGFuZGFyZCBvciBEdWJsaW4gQ29yZSBNZXRhIFRhZyBnZW5lcmF0b3JzJzsNCiRsYW5nWyd1c2Vfc3RhbmRhcmRfbWV0YSddID0gJ1lvdSBzaG91bGQgYWx3YXlzIGVuYWJsZSB0aGUgc3RhbmRhcmQgTWV0YSBnZW5lcmF0b3InOw0KJGxhbmdbJ21ldGFfZGVzY3JpcHRpb25fbWlzc2luZyddID0gJ1RoZSBwYWdlIDxpPiVzPC9pPiBpcyBsYWNraW5nIGEgTWV0YSBkZXNjcmlwdGlvbic7DQokbGFuZ1snbWV0YV9kZXNjcmlwdGlvbl9zaG9ydCddID0gJ1RoZSBNZXRhIGRlc2NyaXB0aW9uIG9mIDxpPiVzPC9pPiBpcyByYXRoZXIgc2hvcnQgKCA8IDc1IGNoYXJzKSc7DQokbGFuZ1snZHVwbGljYXRlX3RpdGxlcyddID0gJ1RoZSBwYWdlcyA8aT4lczwvaT4gYW5kIDxpPiVzPC9pPiBoYXZlIHRoZSBzYW1lIHRpdGxlJzsNCiRsYW5nWydkdXBsaWNhdGVfZGVzY3JpcHRpb25zJ10gPSAnVGhlIHBhZ2VzIDxpPiVzPC9pPiBhbmQgPGk+JXM8L2k+IGhhdmUgdGhlIHNhbWUgTWV0YSBkZXNjcmlwdGlvbic7DQokbGFuZ1sncHJvdmlkZV9hbl9hdXRob3InXSA9ICdZb3Ugc2hvdWxkIHByb3ZpZGUgdGhlIG5hbWUgb2YgdGhlIHBhZ2UgcHVibGlzaGVyJzsNCiRsYW5nWydzZXRfdXBfZGVzY3JpcHRpb25fYmxvY2snXSA9ICdTZXQgdXAgYSBjb250ZW50IGJsb2NrIGZvciBNZXRhIGRlc2NyaXB0aW9ucyc7DQokbGFuZ1snYWN0aXZhdGVfcHJldHR5X3VybHMnXSA9ICdBY3RpdmF0ZSB0aGUgcHJldHR5IFVSTHMgZmVhdHVyZSBvZiBDTVNNUyc7DQokbGFuZ1sncHJldHR5X3VybHNfaGVscCddID0gJzxhIGhyZWY9Imh0dHA6Ly93aWtpLmNtc21hZGVzaW1wbGUub3JnL2luZGV4LnBocC9Vc2VyX0hhbmRib29rL0luc3RhbGxhdGlvbi9PcHRpb25hbF9TZXR0aW5ncyIgdGFyZ2V0PSJfYmxhbmsiPkdldCBoZWxwPC9hPic7DQokbGFuZ1snY3JlYXRlX2Ffc2l0ZW1hcCddID0gJ0hhdmUgYSBHb29nbGUgWE1MIFNpdGVtYXAgYXV0b21hdGljYWxseSBjcmVhdGVkIGZvciB5b3UnOw0KJGxhbmdbJ2F1dG9tYXRpY2FsbHlfdXBsb2FkX3NpdGVtYXAnXSA9ICdIYXZlIHlvdXIgWE1MIFNpdGVtYXAgYXV0b21hdGljYWxseSB1cGxvYWRlZCB0byBHb29nbGUnOw0KJGxhbmdbJ2NyZWF0ZV9yb2JvdHMnXSA9ICdIYXZlIGEgcm9ib3RzLnR4dCBmaWxlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBmb3IgeW91JzsNCiRsYW5nWydzaXRlbWFwX25vdF93cml0ZWFibGUnXSA9ICdZb3VyIHNpdGVtYXAueG1sIGZpbGUgaXMgbm90IHdyaXRlYWJsZSc7DQokbGFuZ1snY2htb2Rfc2l0ZW1hcCddID0gJ1NldCB5b3VyIC9zaXRlbWFwLnhtbCBmaWxlIHRvIGJlIHdyaXRlYWJsZSBieSB0aGUgd2ViIHNlcnZlcic7DQokbGFuZ1sncm9ib3RzX25vdF93cml0ZWFibGUnXSA9ICdZb3VyIHJvYm90cy50eHQgZmlsZSBpcyBub3Qgd3JpdGVhYmxlJzsNCiRsYW5nWydub19vcGVuZ3JhcGhfYWRtaW5zJ10gPSAnWW91IGhhdmUgbm90IHNldCBhbiBPcGVuR3JhcGggYWRtaW4gYXBwbGljYXRpb24gcmVzcC4gYWRtaW4gbGlzdCc7DQokbGFuZ1snbm9fb3BlbmdyYXBoX3R5cGUnXSA9ICdZb3UgaGF2ZSBub3Qgc2V0IHRoZSBkZWZhdWx0IE9wZW5HcmFwaCBwYWdlIHR5cGUnOw0KJGxhbmdbJ25vX29wZW5ncmFwaF9zaXRlbmFtZSddID0gJ1lvdSBoYXZlIG5vdCBzZXQgdGhlIE9wZW5HcmFwaCBzaXRlIG5hbWUnOw0KJGxhbmdbJ25vX29wZW5ncmFwaF9pbWFnZSddID0gJ1lvdSBoYXZlIG5vdCBzZXQgYW4gT3BlbkdyYXBoIGRlZmF1bHQgaW1hZ2UnOw0KJGxhbmdbJ2NobW9kX3JvYm90cyddID0gJ1NldCB5b3VyIC9yb2JvdHMudHh0IGZpbGUgdG8gYmUgd3JpdGVhYmxlIGJ5IHRoZSB3ZWIgc2VydmVyJzsNCiRsYW5nWydlZGl0X3BhZ2UnXSA9ICdFZGl0ICVzJzsNCiRsYW5nWydlZGl0X3BhZ2VfdG9fZml4J10gPSAnQ2xpY2sgaGVyZSB0byBlZGl0IHRoZSBwYWdlIGFuZCBmaXggdGhlIHByb2JsZW0nOw0KJGxhbmdbJ3Zpc2l0X3NldHRpbmdzJ10gPSAnQ2hhbmdlIHNldHRpbmdzJzsNCg0KJGxhbmdbJ3BhZ2VfaWQnXSA9ICdJRCc7DQokbGFuZ1sncGFnZV9uYW1lJ10gPSAnUGFnZSBuYW1lJzsNCiRsYW5nWydwcmlvcml0eSddID0gJ1NpdGVtYXAgUHJpb3JpdHknOw0KJGxhbmdbJ29nX3R5cGUnXSA9ICdPcGVuR3JhcGggdHlwZSc7DQokbGFuZ1sna2V5d29yZHMnXSA9ICcjIEtleXdvcmRzJzsNCiRsYW5nWydkZXNjcmlwdGlvbiddID0gJ0Rlc2NyaXB0aW9uJzsNCiRsYW5nWydpbmRleCddID0gJ0luZGV4YWJsZSc7DQoNCiRsYW5nWydjbGlja190b19hZGRfZGVzY3JpcHRpb24nXSA9ICdDbGljayBoZXJlIHRvIGFkZCBhIHBhZ2UgZGVzY3JpcHRpb24nOw0KJGxhbmdbJ3RvZ2dsZSddID0gJ3RvZ2dsZSc7DQokbGFuZ1sncmVzZXQnXSA9ICdyZXNldCc7DQokbGFuZ1sncmVzZXRfdG9fZGVmYXVsdCddID0gJ1Jlc2V0IHRoaXMgdG8gdGhlIGRlZmF1bHQgdmFsdWUnOw0KJGxhbmdbJ2VkaXRfdmFsdWUnXSA9ICdFZGl0IHRoaXMgdmFsdWUnOw0KDQokbGFuZ1snaGVscF9vcGVuZ3JhcGgnXSA9ICdMb29rIDxhIGhyZWY9Imh0dHA6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9kb2NzL29wZW5ncmFwaCN0eXBlcyIgdGFnZXQ9Il9ibGFuayI+aGVyZTwvYT4gZm9yIGEgbGlzdCBvZiBhbGxvd2VkIHZhbHVlcyc7DQokbGFuZ1snZW50ZXJfbmV3X29ndHlwZSddID0gJ0VudGVyIHRoZSBuZXcgdmFsdWUgZm9yIHRoaXMgcGFnZVwncyBPcGVuR3JhcGggdHlwZSc7DQokbGFuZ1snaGVscF9uZXdfb2d0eXBlJ10gPSAnTGVhdmUgYmxhbmsgdG8gcmV2ZXJ0IHRvIHRoZSBkZWZhdWx0IHNldHRpbmcnOw0KDQokbGFuZ1snZW50ZXJfbmV3X2tleXdvcmRzJ10gPSAnRW50ZXIgdGhlIG5ldyBrZXl3b3JkcyBmb3IgdGhpcyBwYWdlJzsNCiRsYW5nWydoZWxwX25ld19rZXl3b3JkcyddID0gJ1doaXRlc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2Yga2V5d29yZHMuIExlYXZlIGJsYW5rIHRvIHJldmVydCB0byBhdXRvIGdlbmVyYXRlZCBrZXl3b3Jkcyc7DQoNCiRsYW5nWydncm91cHRpdGxlX29wZW5ncmFwaCddID0gJ1dlIGhhdmUgZGV0ZWN0ZWQgJXMgT3BlbkdyYXBoIHJlbGF0ZWQgcHJvYmxlbShzKSc7DQokbGFuZ1snZ3JvdXB0aXRsZV9zeXN0ZW0nXSA9ICdXZSBoYXZlIGRldGVjdGVkICVzIHByb2JsZW0ocykgd2l0aCB5b3VyIHN5c3RlbSBjb25maWd1cmF0aW9uJzsNCiRsYW5nWydncm91cHRpdGxlX3BhZ2VzJ10gPSAnV2UgaGF2ZSBkZXRlY3RlZCAlcyBwcm9ibGVtKHMpIG9uIHlvdXIgY29udGVudCBwYWdlcyc7DQokbGFuZ1snZ3JvdXB0aXRsZV9zZXR0aW5ncyddID0gJ1dlIGhhdmUgZGV0ZWN0ZWQgJXMgcHJvYmxlbShzKSB3aXRoIHlvdXIgU0VPIFNldHRpbmdzJzsNCiRsYW5nWydncm91cHRpdGxlX2Rlc2NyaXB0aW9ucyddID0gJ1dlIGhhdmUgZGV0ZWN0ZWQgJXMgcHJvYmxlbShzKSB3aXRoIHlvdXIgcGFnZSBkZXNjcmlwdGlvbnMnOw0KJGxhbmdbJ2dyb3VwdGl0bGVfdGl0bGVzJ10gPSAnV2UgaGF2ZSBkZXRlY3RlZCAlcyBwcm9ibGVtKHMpIHdpdGggeW91ciBwYWdlIHRpdGxlcyc7DQoNCiRsYW5nWyd2aWV3X2FsbCddID0gJ1ZpZXcgYWxsJzsNCg0KJGxhbmdbJ3RpdGxlX21ldGFzZXR0aW5ncyddID0gJ1BhZ2UgdGl0bGUgJiBNZXRhIGluZm9ybWF0aW9uJzsNCiRsYW5nWyd0aXRsZV9zaXRlbWFwc2V0dGluZ3MnXSA9ICdTaXRlbWFwICYgQ3Jhd2xlciBzZXR0aW5ncyc7DQokbGFuZ1sndGl0bGVfa2V5d29yZHNldHRpbmdzJ10gPSAnS2V5d29yZCBnZW5lcmF0b3Igc2V0dGluZ3MnOw0KDQokbGFuZ1snZGVzY3JpcHRpb25fYXV0b19nZW5lcmF0ZSddID0gJ0F1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBwYWdlIGRlc2NyaXB0aW9uIHdoZXJlIG5vbmUgaXMgcHJvdmlkZWQnOw0KJGxhbmdbJ2Rlc2NyaXB0aW9uX2F1dG9fdGl0bGUnXSA9ICdUZXh0IGZvciBhdXRvLWdlbmVyYXRlZCBkZXNjcmlwdGlvbnMnOw0KJGxhbmdbJ2Rlc2NyaXB0aW9uX2F1dG9faGVscCddID0gJyhZb3UgPGI+bXVzdDwvYj4gaW5jbHVkZSB0aGUgdGFnIHtrZXl3b3Jkc30gaGVyZSknOw0KDQokbGFuZ1snc2V0X3VwX2F1dG9fZGVzY3JpcHRpb24nXSA9ICdTZXQgdXAgdGhlIGRlc2NyaXB0aW9uIGF1dG8tZ2VuZXJhdG9yIGFuZCBlbnN1cmUgdGhlIHRleHQgY29udGFpbnMgdGhlIHRhZyB7a2V5d29yZHN9JzsNCiRsYW5nWydhdXRvX2dlbmVyYXRlZCddID0gJ0F1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkJzsNCiRsYW5nWydhbmQnXSA9ICdhbmQnOw0KDQokbGFuZ1sndGl0bGVfa2V5d29yZF93ZWlnaHQnXSA9ICdLZXl3b3JkIHdlaWdodCBzZXR0aW5ncyc7DQokbGFuZ1sna2V5d29yZF9taW5sZW5ndGhfdGl0bGUnXSA9ICdNaW5pbXVtIGtleXdvcmQgbGVuZ3RoJzsNCiRsYW5nWydrZXl3b3JkX21pbmxlbmd0aF9oZWxwJ10gPSAnKFRoZSBtaW5pbXVtIGxlbmd0aCBvZiBhIHdvcmQgdG8gYmUgY29uc2lkZXJlZCBhcyBhIGtleXdvcmQpJzsNCiRsYW5nWydrZXl3b3JkX3RpdGxlX3dlaWdodF90aXRsZSddID0gJ1dlaWdodCBvZiB3b3JkcyBpbiB0aGUgcGFnZSB0aXRsZSc7DQokbGFuZ1sna2V5d29yZF90aXRsZV93ZWlnaHRfaGVscCddID0gJyhUaGUgd2VpZ2h0IG9mIHdvcmRzIGluIHRoZSBwYWdlIHRpdGxlLiBUaGUgaGlnaGVyIGEgd29yZFwncyB3ZWlnaHQsIHRoZSBtb3JlIGxpa2VseSBpdCBpcyB0byBiZWNvbWUgYSBrZXl3b3JkKSc7DQokbGFuZ1sna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHRfdGl0bGUnXSA9ICdXZWlnaHQgb2Ygd29yZHMgaW4gdGhlIHBhZ2UgZGVzY3JpcHRpb24nOw0KJGxhbmdbJ2tleXdvcmRfZGVzY3JpcHRpb25fd2VpZ2h0X2hlbHAnXSA9ICcoVGhlIHdlaWdodCBvZiB3b3JkcyBpbiB0aGUgcGFnZSBkZXNjcmlwdGlvbi4gVGhlIGhpZ2hlciBhIHdvcmRcJ3Mgd2VpZ2h0LCB0aGUgbW9yZSBsaWtlbHkgaXQgaXMgdG8gYmVjb21lIGEga2V5d29yZCknOw0KJGxhbmdbJ2tleXdvcmRfaGVhZGxpbmVfd2VpZ2h0X3RpdGxlJ10gPSAnV2VpZ2h0IG9mIHdvcmRzIGluIGNvbnRlbnQgaGVhZGxpbmVzJzsNCiRsYW5nWydrZXl3b3JkX2hlYWRsaW5lX3dlaWdodF9oZWxwJ10gPSAnKFRoZSB3ZWlnaHQgb2Ygd29yZHMgYmV0d2VlbiAmbHQ7aDEmZ3Q7IHRvICZsdDtoNiZndDsgdGFncy4gVGhlIGhpZ2hlciBhIHdvcmRcJ3Mgd2VpZ2h0LCB0aGUgbW9yZSBsaWtlbHkgaXQgaXMgdG8gYmVjb21lIGEga2V5d29yZCknOw0KJGxhbmdbJ2tleXdvcmRfY29udGVudF93ZWlnaHRfdGl0bGUnXSA9ICdXZWlnaHQgb2Ygd29yZHMgaW4gcGxhaW4gY29udGVudCc7DQokbGFuZ1sna2V5d29yZF9jb250ZW50X3dlaWdodF9oZWxwJ10gPSAnKFRoZSB3ZWlnaHQgb2Ygd29yZHMgaW5zaWRlIHRoZSBwbGFpbiBjb250ZW50LiBUaGUgaGlnaGVyIGEgd29yZFwncyB3ZWlnaHQsIHRoZSBtb3JlIGxpa2VseSBpdCBpcyB0byBiZWNvbWUgYSBrZXl3b3JkKSc7DQoNCiRsYW5nWydrZXl3b3JkX21pbmltdW1fd2VpZ2h0X3RpdGxlJ10gPSAnTWluaW11bSB0b3RhbCB3ZWlnaHQgb2YgYSBrZXl3b3JkJzsNCiRsYW5nWydrZXl3b3JkX21pbmltdW1fd2VpZ2h0X2hlbHAnXSA9ICcoVGhlIG1pbmltdW0gdG90YWwgd2VpZ2h0IG9mIGEgd29yZCB0byBiZWNvbWUgYSBrZXl3b3JkLiBTaG91bGQgYmUgZ3JlYXRlciB0aGFuIHRoZSBoaWdoZXN0IHdlaWdodCBmcm9tIGFib3ZlLiBUaGUgc21hbGxlciB0aGUgbnVtYmVyLCB0aGUgbW9yZSBrZXl3b3JkcyB5b3UgZ2V0KSc7DQoNCiRsYW5nWydoZWxwX2tleXdvcmRfZ2VuZXJhdG9yJ10gPSAnVGhlIHNldHRpbmdzIHlvdSBjaGFuZ2Ugb24gdGhpcyBwYWdlIHdpbGwgbm90IGFmZmVjdCBhbnkga2V5d29yZHMgeW91IGVudGVyIG1hbnVhbGx5LiBGZWVsIGZyZWUgdG8gcGxheSB3aXRoIGFsbCB2YWx1ZXMgdW50aWwgeW91IGdldCB0aGUgYmVzdCByZXN1bHRzIGZvciB5b3VyIHBhZ2UuJzsNCg0KJGxhbmdbJ3RpdGxlX2tleXdvcmRfZXhjbHVkZSddID0gJ0tleXdvcmQgZXhjbHVzaW9uIGxpc3QnOw0KJGxhbmdbJ2tleXdvcmRfZXhjbHVkZV90aXRsZSddID0gJ1dvcmRzIHRvIG5ldmVyIGNvbnNpZGVyIGFzIGtleXdvcmRzJzsNCiRsYW5nWydrZXl3b3JkX2V4Y2x1ZGVfaGVscCddID0gJyhQcm92aWRlIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2Ygd29yZHMgdGhhdCBzaG91bGQgbmV2ZXIgYXBwZWFyIGluIGtleXdvcmQgbGlzdHMpJzsNCg0KJGxhbmdbJ2luY3JlYXNlX3ByaW9yaXR5J10gPSAnSW5jcmVhc2UgcHJpb3JpdHkgYnkgMTAlJzsNCiRsYW5nWydkZWNyZWFzZV9wcmlvcml0eSddID0gJ0luY3JlYXNlIHByaW9yaXR5IGJ5IDEwJSc7DQoNCiRsYW5nWyd0aXRsZV9yZWdlbmVyYXRlX3NpdGVtYXAnXSA9ICJSZWdlbmVyYXRlIHNpdGVtYXAgYW5kIHJvYm90cy50eHQiOw0KJGxhbmdbJ2J1dHRvbl9yZWdlbmVyYXRlX3NpdGVtYXAnXSA9ICJSZWdlbmVyYXRlIHNpdGVtYXAgYW5kIHJvYm90cy50eHQgbm93IjsNCiRsYW5nWyd0ZXh0X3JlZ2VuZXJhdGVfc2l0ZW1hcCddID0gIkl0IGNhbiBiZSBuZWNlc3NhcnkgdG8gcmVnZW5lcmF0ZSB0aGUgc2l0ZW1hcCBhbmQgcm9ib3RzLnR4dCBmaWxlIGFmdGVyIGV4dGVuc2l2ZSBjaGFuZ2VzIHRvIHRoZSBwYWdlIHN0cnVjdHVyZSI7DQokbGFuZ1snc2l0ZW1hcF9yZWdlbmVyYXRlZCddID0gIkJvdGggdGhlIHNpdGVtYXAgYW5kIHRoZSByb2JvdHMudHh0IGZpbGVzIGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgcmVnZW5lcmF0ZWQuIjsNCg0KJGxhbmdbJ2luc3RhbGxfZGF0YWJhc2VfZXJyb3InXSA9ICJBbiBlcnJvciBoYXMgb2NjdXJlZCBkdXJpbmcgaW5zdGFsbGF0aW9uOiBUaGUgZGF0YWJhc2UgdGFibGUgY291bGQgbm90IGJlIGNyZWF0ZWQuIjsNCiRsYW5nWydub191cmxfZm9wZW4nXSA9ICJOb3QgcG9zc2libGUgYXMgYWxsb3dfdXJsX2ZvcGVuIGhhcyBub3QgYmVlbiBzZXQgdG8gJnF1b3Q7b24mcXVvdDsgaW4geW91ciBwaHAgY29uZmlndXJhdGlvbi4iOw0KJGxhbmdbJ3RpdGxlX2FkZGl0aW9uYWxfbWV0YV90YWdzJ10gPSAiQWRkaXRpb25hbCBNZXRhIHRhZ3MiOw0KJGxhbmdbJ2FkZGl0aW9uYWxfbWV0YV90YWdzX3RpdGxlJ10gPSAiQWRkaXRpb25hbCBNZXRhIHRhZ3MgdG8gYmUgaW5zZXJ0ZWQiOw0KJGxhbmdbJ2FkZGl0aW9uYWxfbWV0YV90YWdzX2hlbHAnXSA9ICJTcGVjaWZ5IGFkZGl0aW9uYWwgTWV0YSB0YWdzIGhlcmUgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgcGFnZSBoZWFkZXIuIFlvdSBjYW4gdXNlIGFsbCBzbWFydHkgdmFyaWFibGVzIGFuZCBVRFRzIGhlcmUuIjsNCg0KJGxhbmdbJ2hlbHBfc2hvd2Jhc2UnXSA9ICJTZXQgdGhpcyBwYXJhbWV0ZXIgdG8gPGNvZGU+ZmFsc2U8L2NvZGU+IHRvIHN1cHByZXNzIHRoZSBvdXRwdXQgb2YgdGhlIGJhc2UgaHJlZiB0YWcuIjsNCg0KJGxhbmdbJ2NoYW5nZWxvZyddID0gPDw8RU9UDQo8dWw+DQo8bGk+VmVyc2lvbiAxLjAgLSAyNSBKYW51YXJ5IDIwMTIuIEluaXRpYWwgcmVsZWFzZS4gVGhpcyBpcyBhIGZvcmsgb2YgdGhlIFNFT1Rvb2xzIG1vZHVsZSB3aXRoIENNU01TIDEuMTArIGNvbXBhdGliaWxpdHkuIENoYW5nZXMgaW5jbHVkZToNCgk8dWw+DQoJCTxsaT5TZXQgcHJlZmVyZW5jZXMgb24gaW5zdGFsbDwvbGk+DQoJCTxsaT5SZW1vdmUgcHJlZmVyZW5jZXMgb24gdW5pbnN0YWxsPC9saT4NCgkJPGxpPlJlcGxhY2UgYWxsIHJlZmVyZW5jZSB0byBIaWVyYXJjaHlNYW5hZ2VyIG9iamVjdHMgd2l0aCBDb250ZW50T3BlcmF0aW9ucyBvYmplY3RzPC9saT4NCgkJPGxpPkdlbmVyYXRlIGFsbCBrZXl3b3Jkcywga2V5d29yZCBzdWdnZXN0aW9ucywgZGVzY3JpcHRpb25zIGFuZCBkZWZhdWx0IGRlc2NyaXB0aW9uczwvbGk+DQoJCTxsaT5HZW5lcmF0ZSBzaXRlbWFwLnhtbCBhbmQgcm9ib3RzLnR4dCBmaWxlczwvbGk+DQoJCTxsaT5SZXRhaW4gY2hlY2tib3ggcHJlZmVyZW5jZSBzZXR0aW5ncyBhZnRlciBzdWJtaXQ8L2xpPg0KCQk8bGk+T24gZnJvbnRlbmQgcGFnZSBsb2FkLCBlbnN1cmUgdGhhdCBhIGNvcnJlc3BvbmRpbmcgcmVjb3JkIGV4aXN0cyBpbiB0aGUgc2VvdG9vbHMyIGRhdGFiYXNlIHRhYmxlPC9saT4NCgk8L3VsPg0KPC9saT4NCjxsaT5WZXJzaW9uIDEuMC4xIC0gMjUgSmFudWFyeSAyMDEyLiBNaW5vciBidWcgZml4PC9saT4NCjxsaT5WZXJzaW9uIDEuMC4yIC0gMSBGZWJydWFyeSAyMDEyLiBCdWcgZml4PC9saT4NCjxsaT5WZXJzaW9uIDEuMC4zIC0gMSBGZWJydWFyeSAyMDEyLiBCdWcgZml4PC9saT4NCjxsaT5WZXJzaW9uIDEuMC40IC0gMSBGZWJydWFyeSAyMDEyLiBDb3JyZWN0aW9uPC9saT4NCjxsaT5WZXJzaW9uIDEuMC41IC0gNiBGZWJydWFyeSAyMDEyLiBBZGQgZXZlbnQgaGFuZGxlcnMgdG8gcHVzaCBzaXRlbWFwIHRvIEdvb2dsZSB3ZWJtYXN0ZXJzPC9saT4NCjwvdWw+DQpFT1Q7DQoNCiRsYW5nWydoZWxwJ10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+DQo8cD5TRU9Ub29sczIgaGVscHMgeW91IHRvIGdldCB5b3VyIFNFTyAoU2VhcmNoIEVuZ2luZSBPcHRpbWl6YXRpb24pIHJpZ2h0LiBUaGUgbW9kdWxlIGFkZHMgc2V2ZXJhbCBTRU8gY2FwYWJpbGl0aWVzIHRvIHlvdXIgQ01TTVMgaW5zdGFsbGF0aW9uIGFuZCBhbGVydHMgeW91IGlmIHlvdSBtaXNzZWQgb3V0IG9uIHNvbWV0aGluZyBTRU8gcmVsYXRlZC4gQ3VycmVudGx5LCB0aGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6PC9wPg0KPHVsPg0KPGxpPi0gZ2VuZXJhdGVzIE1ldGEgdGFncyBpbiBzdGFuZGFyZCBodG1sLCBEdWJsaW4gQ29yZSBhbmQgT3BlbkdyYXBoIGZvcm1hdHM8L2xpPg0KPGxpPi0gYXV0b21hdGljYWxseSBleHRyYWN0cyBrZXl3b3JkcyBmcm9tIHlvdXIgcGFnZXMgYW5kIGFkZHMgdGhlbSB0byB0aGUgbWV0YSB0YWdzIGFuZCBwYWdlIHRpdGxlPC9saT4NCjxsaT4tIGxldHMgeW91IGRldGVybWluZSB3aXRoIGEgc2luZ2xlIGNsaWNrIHdoZXRoZXIgY2VydGFpbiBwYWdlcyBzaG91bGQgYmUgaW5kZXhlZCBieSBzZWFyY2ggZW5naW5lcyBvciBub3Q8L2xpPg0KPGxpPi0gZ2VuZXJhdGVzIGEgc2l0ZW1hcC54bWwgZmlsZSB3aXRoIHlvdXIgcGFnZXMgd2hpbGUgZ2l2aW5nIHlvdSBmdWxsIGNvbnRyb2wgb3ZlciB0aGUgcHJpb3JpdGllcyBvZiB5b3VyIHBhZ2VzPC9saT4NCjxsaT4tIGdlbmVyYXRlcyBhIHJvYm90cy50eHQgZmlsZSBleHBsaWNpdGx5IGRpc2FsbG93aW5nIGFjY2VzcyB0byBwYWdlcyB5b3UgZG9uXCd0IHdhbnQgdG8gYmUgaW5kZXhlZDwvbGk+DQo8bGk+LSBhbGVydHMgeW91IHdoZW4gdGhlcmUgYXJlIHNldmVyYWwgcGFnZXMgZmVhdHVyaW5nIHRoZSBzYW1lIHBhZ2UgdGl0bGVzIGFuZCBkZXNjcmlwdGlvbnM8L2xpPg0KPGxpPi0gYWxlcnRzIHlvdSB3aGVuIHZlcnkgc2hvcnQgcGFnZSBtZXRhIGRlc2NyaXB0aW9ucyBhcmUgZGV0ZWN0ZWQ8L2xpPg0KPGxpPi0gYXV0b21hdGljYWxseSBzdWJtaXRzIHlvdXIgc2l0ZW1hcCBmaWxlIHRvIEdvb2dsZSB3aGVuIHlvdSBjaGFuZ2UgeW91ciBjb250ZW50PC9saT4NCjwvdWw+DQo8aDM+SG93IERvIEkgVXNlIEl0PC9oMz4NCjxwPkZpcnN0LCBvcGVuIGFsbCB0ZW1wbGF0ZXMgd2hlcmUgeW91IHdhbnQgZG8gdXNlIFNFT1Rvb2xzMi4gUmVtb3ZlIHRoZSBjb21wbGV0ZSAmbHQ7dGl0bGUmZ3Q7IHRhZyBhbmQgdGhlIHttZXRhZGF0YX0gdGFnIChldmVuIGlmIGl0IHNheXMgdG8gbmV2ZXIgcmVtb3ZlIGl0KSBhbmQgcmVwbGFjZSB0aGVtIHdpdGggdGhlIHRhZzwvcD4NCjxwcmU+DQp7U0VPVG9vbHMyfQ0KPC9wcmU+PGJyIC8+DQo8cD5OZXh0LCBhdCB0aGUgYm90dG9tIG9mIHlvdXIgdGVtcGxhdGUgKGFmdGVyIHRoZSBjbG9zaW5nICZsdDsvYm9keSZndDsgdGFnKSwgaW5zZXJ0IHRoZSBmb2xsb3dpbmcgY29kZTo8L3A+DQo8cHJlPg0Ke2NhcHR1cmUgYXNzaWduPW1ldGFkZXNjcmlwdGlvbn17Y29udGVudCBibG9jaz1tZXRhZGVzY3JpcHRpb24gbGFiZWw9IlBhZ2UgRGVzY3JpcHRpb24iIG9uZWxpbmU9InRydWUifXsvY2FwdHVyZX0NCjwvcHJlPjxiciAvPg0KPHA+VGhpcyBpcyB3aGVyZSB5b3VcJ2xsIGVudGVyIGEgc2hvcnQgcGFnZSBkZXNjcmlwdGlvbiAob25lIG9yIHR3byBzZW50ZW5jZXMpIHRoYXQgd2lsbCBhcHBlYXIgaW4gdGhlIHNlYXJjaCBlbmdpbmVcJ3MgcmVzdWx0cyBhbmQgaWYsIGZvciBleGFtcGxlLCBzb21lb25lIHNoYXJlcyBhIGxpbmsgdG8geW91ciBwYWdlIG9uIGZhY2Vib29rLjwvcD4NCjxwPk5vdywgdmlzaXQgdGhlIHNldHRpbmdzIHRhYnMgZm9yIHBhZ2UgdGl0bGUgJiBtZXRhIGluZm9ybWF0aW9uLCB0aGUgc2l0ZW1hcCAmIGNyYXdsZXIgc2V0dGluZ3MgYW5kIHRoZSBrZXl3b3JkIGdlbmVyYXRvciBzZXR0aW5ncyBhbmQgZmlsbCBpbiBhbGwgcmVxdWlyZWQgaW5mb3JtYXRpb24gZm9yIHlvdXIgcGFnZS4gVW5kZXIgIk5hbWUgb2YgcGFnZSBkZXNjcmlwdGlvbiBjb250ZW50IGJsb2NrIiB5b3UgbmVlZCB0byBlbnRlciB0aGUgbmFtZSBvZiB0aGUgY29udGVudCBibG9jayB5b3UganVzdCBhZGRlZCB0byB5b3VyIHRlbXBsYXRlcyAoIlBhZ2UgRGVzY3JpcHRpb24iIGluIG91ciBleGFtcGxlKS4gVGhlIHRhYiAiU0VPIEFsZXJ0cyIgd2lsbCBhbGVydCB5b3UgaWYgaXQgZGV0ZWN0cyBhbnl0aGluZyB0aGF0IGlzIHJlcXVpcmVkIGJ1dCBub3QgYWN0aXZhdGVkIG9yIGZpbGxlZCBpbi4gWW91IHNob3VsZCBhbHNvIGNvbnNpZGVyIHNpZ25pbmcgdXAgeW91cg0Kc2l0ZSB3aXRoIEdvb2dsZSBXZWJtYXN0ZXIgdG9vbHMuIFRoZXJlLCBzZWxlY3QgIk1ldGEgdGFnIHZhbGlkYXRpb24iIGFuZCBwYXN0ZSB0aGUgdmVyaWZpY2F0aW9uIGNvZGUgKHF1aXRlIGEgbG9uZyBzdHJpbmcgb2YgY2hhcmFjdGVycyBhbmQgbnVtYmVycykgaW50byB0aGUgYm94ICJWZXJpZmljYXRpb24gQ29kZSIgaW4gIlNFTyBTZXR0aW5ncyIgdG8gYXV0b21hdGljYWxseSB2ZXJpZnkgdGhhdCB5b3UgYXJlIHJlYWxseQ0KdGhlIG93bmVyIG9mIHlvdXIgcGFnZSAobm8gbmVlZCB0byBwYXN0ZSB0aGUgR29vZ2xlIE1ldGEtY29kZSBpbnRvIHlvdXIgdGVtcGxhdGUpLjwvcD4NCjxwPkFzIHNvb24gYXMgZXZlcnl0aGluZyBpcyBzZXQgdXAsIGxvb2sgYXQgdGhlICJTRU8gQWxlcnRzIiB0YWIgYW5kIGZpeCBhbGwgcHJvYmxlbXMgZGV0ZWN0ZWQgaGVyZS4gVGFrZSBjYXJlIHRvIGluc2VydCBhICh1bmlxdWUpIHBhZ2UgZGVzY3JpcHRpb24gb24gZXZlcnkgcGFnZSB5b3UgZWRpdCBpbiB0aGUgZmllbGQgIlBhZ2UgRGVzY3JpcHRpb24iIGF0IHRoZSBib3R0b20gb2YgeW91ciAiRWRpdCBQYWdlIiBmb3JtLjwvcD4NCjxwPlRvIHNldCB5b3VyIG93biBrZXl3b3JkcyAoaW5zdGVhZCBvZiB0aGUgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgb25lcykgb3IgT3BlbkdyYXBoIHR5cGUgZm9yIGNlcnRhaW4gcGFnZXMsIHZpc2l0IHRoZSAiUGFnZSBzZXR0aW5ncyIgdGFiIHdoZXJlIHlvdVwnbGwgZmluZCBhIGxpc3Qgb2YgYWxsIHBhZ2VzIHlvdSBoYXZlIGluIHlvdXIgc3lzdGVtLiBUaGVyZSwgeW91IGNhbiBhbHNvIGNoYW5nZSB0aGUgc2l0ZW1hcCBwcmlvcml0eSAod2hpY2ggaXMgYXV0by1jYWxjdWxhdGVkIGJ5IGRlZmF1bHQpIG9mIGEgcGFnZSB0byBpbmRpY2F0ZSB0aGF0IGl0IHNob3VsZA0KYmUgY29uc2lkZXJlZCBtb3JlIGltcG9ydGFudCBmb3Igc2VhcmNoIGVuZ2luZSBtYXRjaGVzIG9uIHlvdXIgcGFnZSBvciBleGNsdWRlIGNlcnRhaW4gcGFnZXMgZnJvbSB0aGUgc2VhcmNoIGluZGV4LjwvcD4NCjxwPlNFT1Rvb2xzMiB3aWxsIGFsc28gYXV0b21hdGljYWxseSBpbnNlcnQgYSBsaW5rIHRvIHRoZSBpbWFnZSB0byBiZSB1c2VkIGFzIHRoZSBtYWluIGltYWdlIG9mIHlvdXIgcGFnZSBpZiB5b3Ugc2VsZWN0IGFuICJJbWFnZSIgZm9yIHRoZSBwYWdlIGZyb20gd2l0aGluIHlvdXIgcGFnZVwncyAiT3B0aW9ucyIgdGFiICh0aGlzIGlzIGltcG9ydGFudCBmb3IgcGVvcGxlIHN1Ym1pdHRpbmcgYSBsaW5rIHRvIHlvdXIgcGFnZSBlLmcuIG9uIGZhY2Vib29rKS4gQWxzbywgaWYgeW91IGFyZSB1c2luZyBPcGVuR3JhcGgsIHRoZSBpbWFnZSBzZWxlY3RlZCBoZXJlDQp3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IE9wZW5HcmFwaCBpbWFnZSB5b3Ugc3BlY2lmaWVkIGZyb20gd2l0aGluICJTRU8gU2V0dGluZ3MiLiBQbGVhc2UgYmUgYXdhcmUgdGhhdCB5b3UgbmVlZCB0byB1cGxvYWQgdGhvc2UgaW1hZ2VzIHRvIHlvdXIgL3VwbG9hZHMvaW1hZ2VzIGRpcmVjdG9yeS48L3A+DQo8aDM+Q2FuIEkgdXNlIHNtYXJ0eSB2YXJpYWJsZXM/PC9oMz4NCjxwPllvdSBjYW4gdXNlIGFsbCBzbWFydHkgdmFyaWFibGVzIGFuZCBVRFRzIHdpdGhpbiB0aGUgc2V0dGluZ3MgZmllbGRzIDxpPlBhZ2UgdGl0bGU8L2k+LCA8aT5NZXRhIHBhZ2UgdGl0bGU8L2k+LCA8aT5BdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBkZXNjcmlwdGlvbnM8L2k+IGFuZCA8aT5BZGRpdGlvbmFsIG1ldGEgdGFnczwvaT4uIEVudGVyIDxjb2RlPntkZWJ1Z308L2NvZGU+IHRvIHNlZSBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSB2YXJpYWJsZXMuPC9wPg0KPGgzPldoaWNoIHNtYXJ0eSB2YXJpYWJsZXMgYXJlIGV4cG9ydGVkIGJ5IFNFT1Rvb2xzMj88L2gzPg0KPGNvZGU+eyRzZW9fa2V5d29yZHN9PC9jb2RlPjogQSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBhbGwga2V5d29yZHMgc2V0IGZvciB0aGUgcGFnZSAoaW5jbHVkaW5nIHRoZSBkZWZhdWx0IGtleXdvcmRzKTxiciAvPg0KPGNvZGU+eyR0aXRsZV9rZXl3b3Jkc308L2NvZGU+OiBBIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIGFsbCBrZXl3b3JkcyBzZXQgZm9yIHRoZSBwYWdlIChpbmNsdWRpbmcgdGhlIGRlZmF1bHQga2V5d29yZHMpPGJyIC8+DQo8Y29kZT57JGRlZmF1bHRfa2V5d29yZHN9PC9jb2RlPjogQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBhbGwgZGVmYXVsdCBrZXl3b3JkczxiciAvPg0KPGNvZGU+eyRwYWdlX2tleXdvcmRzfTwvY29kZT46IEEgc3BhY2Utc2VwYXJhdGVkIGxpc3Qgb2YgYWxsIGtleXdvcmRzIHNldCBmb3IgdGhlIHBhZ2UgKHdpdGhvdXQgdGhlIGRlZmF1bHQga2V5d29yZHMpDQo8aDM+U3VwcG9ydDwvaDM+DQo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPg0KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+DQo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMTIsIENsaXAgTWFnaWMgPGEgaHJlZj0ibWFpbHRvOmFkbWluQGNsaXBtYWdpYy5jb20uYXUiPiZsdDthZG1pbkBjbGlwbWFnaWMuY29tLmF1Jmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4NCjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhlIG1vZHVsZS48L3A+JzsNCj8+]]></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+U2V0UHJlZmVyZW5jZSgnbWV0YV9wdWJsaXNoZXInLCcnKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ21ldGFfcmVnaW9uJywnJyk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtZXRhX3N0YW5kYXJkJywxKTsNCgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcsMSk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0aXRsZScsJ3t0aXRsZX0gfCB7JHNpdGVuYW1lfSAtIHskdGl0bGVfa2V5d29yZHN9Jyk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0aXRsZV9tZXRhJywne3RpdGxlfSB8IHskc2l0ZW5hbWV9Jyk7DQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdwcmVmX3ZlcmlmaWNhdGlvbicsJycpOw0KCQkNCgkJLy8gcmVnaXN0ZXIgZXZlbnRzIGFuZCBhZGQgZXZlbnQgaGFuZGxlcnMNCiAgICAJJHRoaXMtPkNyZWF0ZUV2ZW50KCAnUHJlZnNVcGRhdGVkJyApOw0KICAgICAgICAkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDb3JlJywnQ29udGVudEVkaXRQb3N0JyxmYWxzZSk7DQogICAgICAgICR0aGlzLT5BZGRFdmVudEhhbmRsZXIoJ0NvcmUnLCdDb250ZW50RGVsZXRlUG9zdCcsZmFsc2UpOw0KCQkNCgkJDQoJCS8vIHB1dCBtZW50aW9uIGludG8gdGhlIGFkbWluIGxvZw0KCQkkdGhpcy0+QXVkaXQoIDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ2luc3RhbGxlZCcsJHRoaXMtPkdldFZlcnNpb24oKSkpOw0KCQkNCj8+]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBVbmluc3RhbGwoKQ0KCSAgIFNvbWV0aW1lcywgYW4gZXhjZXB0aW9uYWxseSB1bmVubGlnaHRlbmVkIG9yIGlnbm9yYW50DQoJICAgYWRtaW4gd2lsbCB3aXNoIHRvIHVuaW5zdGFsbCB5b3VyIG1vZHVsZS4gV2hpbGUgaXQNCgkgICB3b3VsZCBiZSBiZXN0IHRvIGxheSBpbnRvIHRoZXNlIGlkaW90cyB3aXRoIGEgY2x1ZXN0aWNrLA0KCSAgIHdlIHdpbGwgZG8gdGhlIG1hZ25hbmltb3VzIHRoaW5nIGFuZCByZW1vdmUgdGhlIG1vZHVsZQ0KCSAgIGFuZCBjbGVhbiB1cCB0aGUgZGF0YWJhc2UsIHBlcm1pc3Npb25zLCBhbmQgcHJlZmVyZW5jZXMNCgkgICB0aGF0IGFyZSBzcGVjaWZpYyB0byBpdC4NCgkgICBUaGlzIGlzIHRoZSBtZXRob2Qgd2hlcmUgd2UgZG8gdGhpcy4NCgkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQoNCgkJLy8gVHlwaWNhbCBEYXRhYmFzZSBSZW1vdmFsDQoJCSRkYiA9IGNtc21zKCktPkdldERiKCk7DQoJCQ0KCQkvLyByZW1vdmUgdGhlIGRhdGFiYXNlIHRhYmxlDQoJCSRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoICRkYiApOw0KCQkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcFRhYmxlU1FMKCBjbXNfZGJfcHJlZml4KCkuIm1vZHVsZV9zZW90b29sczIiICk7DQoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsNCgkJDQoJCS8vIHJlbW92ZSB0aGUgcGVybWlzc2lvbnMNCgkJJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ0VkaXQgU0VPIFNldHRpbmdzJyk7DQogICAgICAgICR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdFZGl0IHBhZ2UgZGVzY3JpcHRpb25zJyk7DQoJCQ0KCQkvLyByZW1vdmUgc2l0ZSBwcmVmZXJlbmNlcw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnYWRkaXRpb25hbF9tZXRhX3RhZ3MnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2NyZWF0ZV9yb2JvdHMnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2NyZWF0ZV9zaXRlbWFwJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdkZWZhdWx0X2tleXdvcmRzJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgna2V5d29yZF9jb250ZW50X3dlaWdodCcpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHQnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2tleXdvcmRfZXhjbHVkZScpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgna2V5d29yZF9oZWFkbGluZV93ZWlnaHQnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2tleXdvcmRfbWluaW11bV93ZWlnaHQnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdrZXl3b3JkX3RpdGxlX3dlaWdodCcpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9jb250cmlidXRvcicpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9jb3B5cmlnaHQnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfZHVibGluY29yZScpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9sYXRpdHVkZScpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9sb2NhdGlvbicpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9sb25naXR1ZGUnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9hZG1pbnMnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9pbWFnZScpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX3RpdGxlJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF90eXBlJyk7DQoJCSR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCdtZXRhX3B1Ymxpc2hlcicpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgnbWV0YV9yZWdpb24nKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ21ldGFfc3RhbmRhcmQnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3B1c2hfc2l0ZW1hcCcpOw0KCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgndGl0bGUnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3RpdGxlX21ldGEnKTsNCgkJJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3ByZWZfdmVyaWZpY2F0aW9uJyk7DQoJCQ0KCQkvLyByZW1vdmUgZXZlbnRzIGFuZCBldmVudCBoYW5kbGVycw0KCQkkdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCAnUHJlZnNVcGRhdGVkJyApOw0KICAgICAgICAkdGhpcy0+UmVtb3ZlRXZlbnQoICdQcmVmc1VwZGF0ZWQnICk7DQogICAgICAgICR0aGlzLT5SZW1vdmVFdmVudEhhbmRsZXIoJ0NvcmUnLCdDb250ZW50RWRpdFBvc3QnLGZhbHNlKTsNCiAgICAgICAgJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ29yZScsJ0NvbnRlbnREZWxldGVQb3N0JyxmYWxzZSk7DQogICAgICAgIA0KCQkNCgkJLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nDQoJCSR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygndW5pbnN0YWxsZWQnKSk7DQoNCj8+]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCmlmICghaXNzZXQoJGdDbXMpKSBleGl0Ow0KDQoJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCgkgICBVcGdyYWRlKCkNCgkgICBJZiB5b3VyIG1vZHVsZSB2ZXJzaW9uIG51bWJlciBkb2VzIG5vdCBtYXRjaCB0aGUgdmVyc2lvbg0KCSAgIG51bWJlciBvZiB0aGUgaW5zdGFsbGVkIG1vZHVsZSwgdGhlIENNUyBBZG1pbiB3aWxsIGdpdmUNCgkgICB5b3UgYSBjaGFuY2UgdG8gdXBncmFkZSB0aGUgbW9kdWxlLiBUaGlzIGlzIHRoZSBmdW5jdGlvbg0KCSAgIHRoYXQgYWN0dWFsbHkgaGFuZGxlcyB0aGUgdXBncmFkZS4NCgkgICBJZGVhbGx5LCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBoYW5kbGUgdXBncmFkZXMgaW5jcmVtZW50YWxseSwNCgkgICBzbyB5b3UgY291bGQgdXBncmFkZSBmcm9tIHZlcnNpb24gMC4wLjEgdG8gMTAuNS43IHdpdGgNCgkgICBhIHNpbmdsZSBjYWxsLiBGb3IgYSBncmVhdCBleGFtcGxlIG9mIHRoaXMsIHNlZSB0aGUgTmV3cw0KCSAgIG1vZHVsZSBpbiB0aGUgc3RhbmRhcmQgQ01TIGluc3RhbGwuDQoJICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KCQkkY3VycmVudF92ZXJzaW9uID0gJG9sZHZlcnNpb247DQoJCXN3aXRjaCgkY3VycmVudF92ZXJzaW9uKQ0KCQl7DQoJCQljYXNlICIxLjAiOg0KCQkJY2FzZSAiMS4wLjEiOg0KCQkJY2FzZSAiMS4wLjIiOg0KCQkJY2FzZSAiMS4wLjMiOg0KCQkJY2FzZSAiMS4wLjQiOg0KCQkJICBkZWZhdWx0Og0KICAgICAgICAJCS8vIHJlZ2lzdGVyIGV2ZW50cw0KICAgICAgICAJCSR0aGlzLT5DcmVhdGVFdmVudCggJ1ByZWZzVXBkYXRlZCcgKTsNCiAgICAgICAgCQlicmVhazsNCgkJfQ0KCQkNCgkJLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nDQoJCSR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygndXBncmFkZWQnLCR0aGlzLT5HZXRWZXJzaW9uKCkpKTsNCg0KPz4=]]></data>
	</file>
	<file>
	  <filename>/SEOTools2.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIE1vZHVsZTogU0VPVG9vbHMyIC0gU2V2ZXJhbCB0b29scyB0byBoZWxwIHdpdGggU2VhcmNoIEVuZ2luZSBPcHRpbWl6YXRpb24gYW5kIGNoZWNrIGZvciBzdWJvcHRpbWFsIFNFTy1yZWxhdGVkIHRoaW5ncy4NCiMgVmVyc2lvbjogMS4wLCBDbGlwIE1hZ2ljDQojDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMTAgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQ0KIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZw0KIw0KIyBUaGlzIGZpbGUgb3JpZ2luYWxseSBjcmVhdGVkIGJ5IE1vZHVsZU1ha2VyIG1vZHVsZSwgdmVyc2lvbiAwLjMuMg0KIyBDb3B5cmlnaHQgKGMpIDIwMTAgYnkgU2FtdWVsIEdvbGRzdGVpbiAoc2pnQGNtc21hZGVzaW1wbGUub3JnKQ0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkNCiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCiMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3INCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCiMNCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsDQojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UNCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0ENCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTA0KIw0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KLy9lcnJvcl9yZXBvcnRpbmcoRV9BTEwpOw0KDQokY29uZmlnID0gY21zbXMoKS0+Z2V0Q29uZmlnKCk7DQoNCg0KY2xhc3MgU0VPVG9vbHMyIGV4dGVuZHMgQ01TTW9kdWxlDQp7DQoNCiAgZnVuY3Rpb24gR2V0TmFtZSgpDQogIHsNCiAgICByZXR1cm4gJ1NFT1Rvb2xzMic7DQogIH0NCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0RnJpZW5kbHlOYW1lKCkNCiAgIFRoaXMgY2FuIHJldHVybiBhbnkgc3RyaW5nLCBwcmVmZXJhYmx5IGEgbG9jYWxpemVkIG5hbWUNCiAgIG9mIHRoZSBtb2R1bGUuIFRoaXMgaXMgdGhlIG5hbWUgdGhhdCdzIHNob3duIGluIHRoZQ0KICAgQWRtaW4gTWVudXMgYW5kIHNlY3Rpb24gcGFnZXMgKGlmIHRoZSBtb2R1bGUgaGFzIGFuIGFkbWluDQogICBjb21wb25lbnQpLg0KDQogICBTZWUgdGhlIG5vdGUgb24gbG9jYWxpemF0aW9uIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyk7DQogIH0NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBHZXRWZXJzaW9uKCkNCiAgIFRoaXMgY2FuIHJldHVybiBhbnkgc3RyaW5nLCBwcmVmZXJhYmx5IGEgbnVtYmVyIG9yDQogICBzb21ldGhpbmcgdGhhdCBtYWtlcyBzZW5zZSBmb3IgZGVzaWduYXRpbmcgYSB2ZXJzaW9uLg0KICAgVGhlIENNUyB3aWxsIHVzZSB0aGlzIHRvIGlkZW50aWZ5IHdoZXRoZXIgb3Igbm90DQogICB0aGUgaW5zdGFsbGVkIHZlcnNpb24gb2YgdGhlIG1vZHVsZSBpcyBjdXJyZW50LCBhbmQNCiAgIHRoZSBtb2R1bGUgd2lsbCB1c2UgaXQgdG8gZmlndXJlIG91dCBob3cgdG8gdXBncmFkZQ0KICAgaXRzZWxmIGlmIHJlcXVlc3RlZC4NCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIEdldFZlcnNpb24oKQ0KICB7DQogICAgcmV0dXJuICcxLjAuNSc7DQogIH0NCg0KICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KICAgR2V0SGVscCgpDQogICBUaGlzIHJldHVybnMgSFRNTCBpbmZvcm1hdGlvbiBvbiB0aGUgbW9kdWxlLg0KICAgVHlwaWNhbGx5LCB5b3UnbGwgd2FudCB0byBpbmNsdWRlIGluZm9ybWF0aW9uIG9uIGhvdyB0bw0KICAgdXNlIHRoZSBtb2R1bGUuDQoNCiAgIFNlZSB0aGUgbm90ZSBvbiBsb2NhbGl6YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXRIZWxwKCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOw0KICB9DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEdldEF1dGhvcigpDQogICBUaGlzIHJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIE1vZHVsZQ0KICAgQWRtaW4gaWYgeW91IGNsaWNrIG9uIHRoZSAiQWJvdXQiIGxpbmsuDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXRBdXRob3IoKQ0KICB7DQogICAgcmV0dXJuICdDbGlwIE1hZ2ljJzsNCiAgfQ0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBHZXRBdXRob3JFbWFpbCgpDQogICBUaGlzIHJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIE1vZHVsZQ0KICAgQWRtaW4gaWYgeW91IGNsaWNrIG9uIHRoZSAiQWJvdXQiIGxpbmsuIEl0IGhlbHBzIHVzZXJzDQogICBvZiB5b3VyIG1vZHVsZSBnZXQgaW4gdG91Y2ggd2l0aCB5b3UgdG8gc2VuZCBidWcgcmVwb3J0cywNCiAgIHF1ZXN0aW9ucywgY2FzZXMgb2YgYmVlciwgYW5kL29yIGxhcmdlIHN1bXMgb2YgbW9uZXkuDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpDQogIHsNCiAgICByZXR1cm4gJ2FkbWluQGNsaXBtYWdpYy5jb20uYXUnOw0KICB9DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEdldENoYW5nZUxvZygpDQogICBUaGlzIHJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIG1vZHVsZQ0KICAgQWRtaW4gaWYgeW91IGNsaWNrIG9uIHRoZSBBYm91dCBsaW5rLiBJdCBoZWxwcyB1c2Vycw0KICAgZmlndXJlIG91dCB3aGF0J3MgY2hhbmdlZCBiZXR3ZWVuIHJlbGVhc2VzLg0KICAgU2VlIHRoZSBub3RlIG9uIGxvY2FsaXphdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4NCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOw0KICB9DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIElzUGx1Z2luTW9kdWxlKCkNCiAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlIG9yIGZhbHNlLCBkZXBlbmRpbmcgdXBvbg0KICAgd2hldGhlciB1c2VycyBjYW4gaW5jbHVkZSB0aGUgbW9kdWxlIGluIGEgcGFnZSBvcg0KICAgdGVtcGxhdGUgdXNpbmcgYSBzbWFydHkgdGFnIG9mIHRoZSBmb3JtDQogICB7Y21zX21vZHVsZSBtb2R1bGU9J1NFT1Rvb2xzMicgcGFyYW0xPXZhbCBwYXJhbTI9dmFsLi4ufQ0KDQogICBJZiB5b3VyIG1vZHVsZSBkb2VzIG5vdCBnZXQgaW5jbHVkZWQgaW4gcGFnZXMgb3INCiAgIHRlbXBsYXRlcywgcmV0dXJuICJmYWxzZSIgaGVyZS4NCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkNCiAgew0KICAgIHJldHVybiB0cnVlOw0KICB9DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEhhc0FkbWluKCkNCiAgIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUsIGRlcGVuZGluZyBvbg0KICAgd2hldGhlciB5b3VyIG1vZHVsZSBhZGRzIGFueXRoaW5nIHRvIHRoZSBBZG1pbiBhcmVhIG9mDQogICB0aGUgc2l0ZS4gRm9yIHRoZSByZXN0IG9mIHRoZXNlIGNvbW1lbnRzLCBJJ2xsIGJlIGNhbGxpbmcNCiAgIHRoZSBhZG1pbiBwYXJ0IG9mIHlvdXIgbW9kdWxlIHRoZSAiQWRtaW4gUGFuZWwiIGZvcg0KICAgd2FudCBvZiBhIGJldHRlciB0ZXJtLg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gSGFzQWRtaW4oKQ0KICB7DQogICAgcmV0dXJuIHRydWU7DQogIH0NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBHZXRBZG1pblNlY3Rpb24oKQ0KICAgSWYgeW91ciBtb2R1bGUgaGFzIGFuIEFkbWluIFBhbmVsLCB5b3UgY2FuIHNwZWNpZnkNCiAgIHdoaWNoIEFkbWluIFNlY3Rpb24gKG9yIHRvcC1sZXZlbCBBZG1pbiBNZW51KSBpdCBzaG93cw0KICAgdXAgaW4uIFRoaXMgbWV0aG9kIHJldHVybnMgYSBzdHJpbmcgdG8gc3BlY2lmeSB0aGF0DQogICBzZWN0aW9uLiBWYWxpZCByZXR1cm4gdmFsdWVzIGFyZToNCg0KICAgbWFpbiAgICAgICAgLSB0aGUgTWFpbiBtZW51IHRhYi4NCiAgIGNvbnRlbnQgICAgIC0gdGhlIENvbnRlbnQgbWVudQ0KICAgbGF5b3V0ICAgICAgLSB0aGUgTGF5b3V0IG1lbnUNCiAgIHVzZXJzZ3JvdXBzIC0gdGhlIFVzZXJzIGFuZCBHcm91cHMgbWVudQ0KICAgZXh0ZW5zaW9ucyAgLSB0aGUgRXh0ZW5zaW9ucyBtZW51ICh0aGlzIGlzIHRoZSBkZWZhdWx0KQ0KICAgc2l0ZWFkbWluICAgLSB0aGUgU2l0ZSBBZG1pbiBtZW51DQogICB2aWV3c2l0ZSAgICAtIHRoZSBWaWV3IFNpdGUgbWVudSB0YWINCiAgIGxvZ291dCAgICAgIC0gdGhlIExvZ291dCBtZW51IHRhYg0KDQogICBOb3RlIHRoYXQgaWYgeW91IHBsYWNlIHlvdXIgbW9kdWxlIGluIHRoZSBtYWluLA0KICAgdmlld3NpdGUsIG9yIGxvZ291dCBzZWN0aW9ucywgaXQgd2lsbCBzaG93IHVwIGluIHRoZQ0KICAgbWVudXMsIGJ1dCB3aWxsIG5vdCBiZSB2aXNpYmxlIGluIGFueSB0b3AtbGV2ZWwNCiAgIHNlY3Rpb24gcGFnZXMuDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBHZXRBZG1pblNlY3Rpb24oKQ0KICB7DQogICAgcmV0dXJuICdjb250ZW50JzsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIEdldEFkbWluRGVzY3JpcHRpb24oKQ0KICAgSWYgeW91ciBtb2R1bGUgZG9lcyBoYXZlIGFuIEFkbWluIFBhbmVsLCB5b3UNCiAgIGNhbiBoYXZlIGl0IHJldHVybiBhIGRlc2NyaXB0aW9uIHN0cmluZyB0aGF0IGdldHMgc2hvd24NCiAgIGluIHRoZSBBZG1pbiBTZWN0aW9uIHBhZ2UgdGhhdCBjb250YWlucyB0aGUgbW9kdWxlLg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpDQogIHsNCiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2FkbWluZGVzY3JpcHRpb24nKTsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIFZpc2libGVUb0FkbWluVXNlcigpDQogICBJZiB5b3VyIG1vZHVsZSBkb2VzIGhhdmUgYW4gQWRtaW4gUGFuZWwsIHlvdQ0KICAgY2FuIGNvbnRyb2wgd2hldGhlciBvciBub3QgaXQncyBkaXNwbGF5ZWQgYnkgdGhlIGJvb2xlYW4NCiAgIHRoYXQgaXMgcmV0dXJuZWQgYnkgdGhpcyBtZXRob2QuIFRoaXMgaXMgcHJpbWFyaWx5IHVzZWQNCiAgIHRvIGhpZGUgbW9kdWxlcyBmcm9tIGFkbWlucyB3aG8gbGFjayBwZXJtaXNzaW9uIHRvIHVzZQ0KICAgdGhlbS4NCg0KICAgVHlwaWNhbGx5LCB5b3UnbGwgdXNlIHNvbWUgcGVybWlzc2lvbiB0byBzZXQgdGhpcw0KICAgKGUuZy4sICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ1NvbWUgUGVybWlzc2lvbicpOyApDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ0VkaXQgU0VPIFNldHRpbmdzJyk7DQogIH0NCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBDaGVja0FjY2VzcygpDQogICBUaGlzIHdyYXBwZXIgZnVuY3Rpb24gd2lsbCBjaGVjayBhZ2FpbnN0IHRoZSBzcGVjaWZpZWQgcGVybWlzc2lvbiwNCiAgIGFuZCBkaXNwbGF5IGFuIGVycm9yIHBhZ2UgaWYgdGhlIHVzZXIgZG9lc24ndCBoYXZlIGFkZXF1YXRlIHBlcm1pc3Npb25zLg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gQ2hlY2tBY2Nlc3MoJHBlcm0gPSAnRWRpdCBTRU8gU2V0dGluZ3MnKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJHBlcm0pOw0KICB9DQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIERpc3BsYXlFcnJvclBhZ2UoKQ0KICAgVGhpcyBpcyBhIHNpbXBsZSBmdW5jdGlvbiBmb3IgZ2VuZXJhdGluZyBlcnJvciBwYWdlcy4NCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIERpc3BsYXlFcnJvclBhZ2UoJGlkLCAmJHBhcmFtcywgJHJldHVybl9pZCwgJG1lc3NhZ2U9JycpDQogIHsNCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX2Vycm9yJywgJHRoaXMtPkxhbmcoJ2Vycm9yJykpOw0KICAgICR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ21lc3NhZ2UnLCAkbWVzc2FnZSk7DQoNCiAgICAvLyBEaXNwbGF5IHRoZSBwb3B1bGF0ZWQgdGVtcGxhdGUNCiAgICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2Vycm9yLnRwbCcpOw0KICB9DQoNCg0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBHZXREZXBlbmRlbmNpZXMoKQ0KICAgWW91ciBtb2R1bGUgbWF5IG5lZWQgYW5vdGhlciBtb2R1bGUgdG8gYWxyZWFkeSBiZSBpbnN0YWxsZWQNCiAgIGJlZm9yZSB5b3UgY2FuIGluc3RhbGwgaXQuDQogICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiB0aG9zZSBkZXBlbmRlbmNpZXMgYW5kDQogICBtaW5pbXVtIHZlcnNpb24gbnVtYmVycyB0aGF0IHRoaXMgbW9kdWxlIHJlcXVpcmVzLg0KDQogICBJdCBzaG91bGQgcmV0dXJuIGFuIGhhc2gsIGVnLg0KICAgcmV0dXJuIGFycmF5KCdzb21lbW9kdWxlJz0+JzEuMCcsICdvdGhlcm1vZHVsZSc9PicxLjEnKTsNCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpDQogIHsNCiAgICByZXR1cm4gYXJyYXkoKTsNCiAgfQ0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBNaW5pbXVtQ01TVmVyc2lvbigpDQogICBZb3VyIG1vZHVsZSBtYXkgcmVxdWlyZSBmdW5jdGlvbnMgb3Igb2JqZWN0cyBmcm9tDQogICBhIHNwZWNpZmljIHZlcnNpb24gb2YgQ01TIE1hZGUgU2ltcGxlLg0KICAgRXZlciBzaW5jZSB2ZXJzaW9uIDAuMTEsIHlvdSBjYW4gc3BlY2lmeSB3aGljaCBtaW5pbXVtDQogICBDTVMgTVMgdmVyc2lvbiBpcyByZXF1aXJlZCBmb3IgeW91ciBtb2R1bGUsIHdoaWNoIHdpbGwNCiAgIHByZXZlbnQgaXQgZnJvbSBiZWluZyBpbnN0YWxsZWQgYnkgYSB2ZXJzaW9uIG9mIENNUyB0aGF0DQogICBjYW4ndCBydW4gaXQuDQoNCiAgIFRoaXMgbWV0aG9kIHJldHVybnMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZQ0KICAgbWluaW11bSB2ZXJzaW9uIHRoYXQgdGhpcyBtb2R1bGUgcmVxdWlyZXMuDQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KICBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpDQogIHsNCiAgICByZXR1cm4gIjEuOS4yIjsNCiAgfQ0KDQoNCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiAgIE1heGltdW1DTVNWZXJzaW9uKCkNCiAgIFlvdSBtYXkgd2FudCB0byBwcmV2ZW50IHBlb3BsZSBmcm9tIHVzaW5nIHlvdXIgbW9kdWxlIGluDQogICBmdXR1cmUgdmVyc2lvbnMgb2YgQ01TIE1hZGUgU2ltcGxlLCBlc3BlY2lhbGx5IGlmIHlvdQ0KICAgdGhpbmsgQVBJIGZlYXR1cmVzIHlvdSB1c2UgbWF5IGNoYW5nZSAtLSBhZnRlciBhbGwsIHlvdQ0KICAgbmV2ZXIgcmVhbGx5IGtub3cgaG93IHRoZSBDTVMgTVMgQVBJIGNvdWxkIGV2b2x2ZS4NCg0KICAgU28sIHRvIHByZXZlbnQgcGVvcGxlIGZyb20gZmxvb2RpbmcgeW91IHdpdGggYnVnIHJlcG9ydHMNCiAgIHdoZW4gYSBuZXcgdmVyc2lvbiBvZiBDTVMgTVMgaXMgcmVsZWFzZWQsIHlvdSBjYW4gc2ltcGx5DQogICByZXN0cmljdCB0aGUgdmVyc2lvbi4gVGhlbiwgb2YgY291cnNlLCB0aGUgb251cyBpcyBvbiB5b3UNCiAgIHRvIHJlbGVhc2UgYSBuZXcgdmVyc2lvbiBvZiB5b3VyIG1vZHVsZSB3aGVuIGEgbmV3IHZlcnNpb24NCiAgIG9mIHRoZSBDTVMgaXMgcmVsZWFzZWQuLi4NCg0KICAgVGhpcyBtZXRob2QgcmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlDQogICBtYXhpbXVtIHZlcnNpb24gdGhhdCB0aGlzIG1vZHVsZSBzdXBwb3J0cy4NCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogLyogZnVuY3Rpb24gTWF4aW11bUNNU1ZlcnNpb24oKQ0KICB7DQogICAgcmV0dXJuOw0KICB9DQoqLw0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBJbnN0YWxsUG9zdE1lc3NhZ2UoKQ0KICAgQWZ0ZXIgaW5zdGFsbGF0aW9uLCB0aGVyZSBtYXkgYmUgdGhpbmdzIHlvdSB3YW50IHRvDQogICBjb21tdW5pY2F0ZSB0byB5b3VyIGFkbWluLiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYQ0KICAgc3RyaW5nIHdoaWNoIHdpbGwgYmUgZGlzcGxheWVkLg0KICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCiAgZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsNCiAgfQ0KDQogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogICBVbmluc3RhbGxQb3N0TWVzc2FnZSgpDQogICBBZnRlciByZW1vdmluZyBhIG1vZHVsZSwgdGhlcmUgbWF5IGJlIHRoaW5ncyB5b3Ugd2FudCB0bw0KICAgY29tbXVuaWNhdGUgdG8geW91ciBhZG1pbi4gVGhpcyBmdW5jdGlvbiByZXR1cm5zIGENCiAgIHN0cmluZyB3aGljaCB3aWxsIGJlIGRpc3BsYXllZC4NCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQogIGZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkNCiAgew0KICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdHVuaW5zdGFsbCcpOw0KICB9DQoNCg0KICAvKioNCiAgICogVW5pbnN0YWxsUHJlTWVzc2FnZSgpDQogICAqIFRoaXMgYWxsb3dzIHlvdSB0byBkaXNwbGF5IGEgbWVzc2FnZSBhbG9uZyB3aXRoIGEgWWVzL05vIGRpYWxvZyBib3guIElmIHRoZSB1c2VyIHJlc3BvbmRzDQogICAqIGluIHRoZSBhZmZpcm1hdGl2ZSB0byB5b3VyIG1lc3NhZ2UsIHRoZSB1bmluc3RhbGwgd2lsbCBwcm9jZWVkLiBJZiB0aGV5IHJlc3BvbmQgaW4gdGhlDQogICAqIG5lZ2F0aXZlLCB0aGUgdW5pbnN0YWxsIHdpbGwgYmUgY2FuY2VsZWQuIFRodXMsIHlvdXIgbWVzc2FnZSBzaG91bGQgYmUgb2YgdGhlIGZvcm0NCiAgICogIkFsbCBtb2R1bGUgZGF0YSB3aWxsIGJlIGRlbGV0ZWQuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB1bmluc3RhbGwgdGhpcyBtb2R1bGU/Ig0KICAgKg0KICAgKiBJZiB5b3UgZG9uJ3Qgd2FudCB0aGUgZGlhbG9nLCBoYXZlIHRoaXMgbWV0aG9kIHJldHVybiBhIEZBTFNFLCB3aGljaCB3aWxsIGNhdXNlIHRoZQ0KICAgKiBtb2R1bGUgdG8gdW5pbnN0YWxsIGltbWVkaWF0ZWx5IGlmIHRoZSB1c2VyIGNsaWNrcyB0aGUgInVuaW5zdGFsbCIgbGluay4NCiAgICovDQogIGZ1bmN0aW9uIFVuaW5zdGFsbFByZU1lc3NhZ2UoKQ0KICB7DQogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdyZWFsbHlfdW5pbnN0YWxsJyk7DQogIH0NCg0KICBmdW5jdGlvbiBHZXROb3RpZmljYXRpb25PdXRwdXQoJHByaW9yaXR5ID0gMykgew0KICAgIGlmIChjb3VudCgkdGhpcy0+Z2V0VXJnZW50QWxlcnRzKCkpID4gMCkgew0KICAgICAgJHRleHQgPSAkdGhpcy0+TGFuZygncHJvYmxlbV9hbGVydCcsQXJyYXkoJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsICcnLCAkdGhpcy0+TGFuZygncHJvYmxlbV9saW5rX3RpdGxlJykpKSk7DQoNCiAgICAgICRvYmogPSBuZXcgU3RkQ2xhc3M7DQogICAgICAkb2JqLT5wcmlvcml0eSA9IDM7DQogICAgICAkb2JqLT5odG1sID0gJHRleHQ7DQoNCiAgICAgIHJldHVybiAkb2JqOw0KICAgIH0NCiAgfQ0KDQoNCiAgZnVuY3Rpb24gU2V0UGFyYW1ldGVycygpIHsNCiAgICAkdGhpcy0+UmVnaXN0ZXJNb2R1bGVQbHVnaW4oKTsNCiAgICANCiAgICAkdGhpcy0+UmVzdHJpY3RVbmtub3duUGFyYW1zKHRydWUpOw0KDQogICAgJHRoaXMtPkNyZWF0ZVBhcmFtZXRlcignc2hvd2Jhc2UnLCAndHJ1ZScsICR0aGlzLT5MYW5nKCdoZWxwX3Nob3diYXNlJykpOw0KICB9DQoNCg0KICBmdW5jdGlvbiBnZXRVcmdlbnRBbGVydHMoKSB7DQogICAgZ2xvYmFsICRnQ21zOw0KICAgICRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsNCiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOw0KDQogICAgJGFsZXJ0cyA9IEFycmF5KCk7DQogICAgLy8gRW5hYmxlIFByZXR0eSBVUkxzDQogICAgaWYgKCgkY29uZmlnWyd1cmxfcmV3cml0aW5nJ10gIT0gIm1vZF9yZXdyaXRlIikgJiYgKCRjb25maWdbJ3VybF9yZXdyaXRpbmcnXSAhPSAnaW50ZXJuYWwnKSkgew0KICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsNCiAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdzeXN0ZW0nOw0KICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnYWN0aXZhdGVfcHJldHR5X3VybHMnKTsNCiAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPkxhbmcoJ3ByZXR0eV91cmxzX2hlbHAnKTsNCiAgICAgICRhbGVydHNbXSA9ICRhbGVydDsNCiAgICB9DQogICAgLy8gTm8gTWV0YSB0YWdzIGFyZSBpbnNlcnRlZA0KICAgIGlmICgoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfc3RhbmRhcmQnLDApICE9IDEpICYmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9kdWJsaW5jb3JlJywwKSAhPSAxKSkgew0KICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsNCiAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdzZXR0aW5ncyc7DQogICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCd1c2Vfc3RhbmRhcmRfb3JfZHVibGluY29yZV9tZXRhJyk7DQogICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+TGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7DQogICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7DQogICAgfQ0KDQogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9hdXRvX2dlbmVyYXRlJywwKSAhPSAxKSB7DQogICAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2Jsb2NrJywnJykgIT0gJycpIHsNCiAgICAgICAgLy8gUGFnZXMgd2l0aG91dCBkZXNjcmlwdGlvbg0KICAgICAgICAkcXVlcnkgPSAnU0VMRUNUICosYy5jb250ZW50X2lkIEFTIGNpZCwgYy50eXBlIEFTIGN0eXBlIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgYyBMRUZUIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnRfcHJvcHMgcCBPTiAoYy5jb250ZW50X2lkID0gcC5jb250ZW50X2lkIEFORCBwLnByb3BfbmFtZSA9ICInLnN0cl9yZXBsYWNlKCcgJywnXycsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2Jsb2NrJywnJykpLiciKSBXSEVSRSAocC5jb250ZW50IElTIE5VTEwgT1IgcC5jb250ZW50ID0gIiIpIEFORCBjLnR5cGUgPSAiY29udGVudCIgTElNSVQgMCwyMSc7DQogICAgICAgICRyZXN1bHQgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgICAgIHdoaWxlICgkcHJvYmxlbSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsNCiAgIAkJICAJICBpZiAoJHByb2JsZW1bJ2N0eXBlJ10gPT0gJ2NvbnRlbnQnKSB7DQogICAJCSAgCSAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgCQkgIAkgICAgJGFsZXJ0Wydncm91cCddID0gJ3BhZ2VzJzsNCiAgIAkJICAJICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ21ldGFfZGVzY3JpcHRpb25fbWlzc2luZycsQXJyYXkoJHByb2JsZW1bJ2NvbnRlbnRfbmFtZSddKSk7DQogICAJCSAgCSAgICBpZiAoaXNzZXQoJF9HRVRbJ3NwXyddKSkgew0KICAgCQkgIAkgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP3NwXz0nLiRfR0VUWydzcF8nXS4nJmNvbnRlbnRfaWQ9Jy4kcHJvYmxlbVsnY2lkJ10uJyI+Jy4kdGhpcy0+TGFuZygnZWRpdF9wYWdlX3RvX2ZpeCcpLic8L2E+JzsNCiAgIAkJICAJICAgIH1lbHNlew0KICAgCQkgIAkgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP19zeF89Jy4kX0dFVFsnX3N4XyddLicmY29udGVudF9pZD0nLiRwcm9ibGVtWydjaWQnXS4nIj4nLiR0aGlzLT5MYW5nKCdlZGl0X3BhZ2VfdG9fZml4JykuJzwvYT4nOw0KICAgCQkgIAkgICAgfQ0KICAgCQkgIAkgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgCQkgIAkgIH0NCiAgICAgICAgfQ0KICAgICAgfWVsc2V7DQogICAgICAgICRhbGVydCA9IEFycmF5KCk7DQogICAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdzZXR0aW5ncyc7DQogICAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ3NldF91cF9kZXNjcmlwdGlvbl9ibG9jaycpOw0KICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+TGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7DQogICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsNCiAgICAgIH0NCiAgICB9ZWxzZWlmKHN0cnBvcygkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZGVzY3JpcHRpb25fYXV0bycsJycpLCd7a2V5d29yZHN9JykgPT09IGZhbHNlKSB7DQogICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgJGFsZXJ0Wydncm91cCddID0gJ3NldHRpbmdzJzsNCiAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ3NldF91cF9hdXRvX2Rlc2NyaXB0aW9uJyk7DQogICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+TGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7DQogICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7DQogICAgfQ0KDQogICAgLy8gc2l0ZW1hcC54bWwgbm90IHdyaXRlYWJsZQ0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnY3JlYXRlX3NpdGVtYXAnLDEpID09IDEpIHsNCiAgICAgIGlmICghaXNfd3JpdGVhYmxlKCRjb25maWdbJ3Jvb3RfcGF0aCddIC4gJy9zaXRlbWFwLnhtbCcpKSB7DQogICAgICAgICRhbGVydCA9IEFycmF5KCk7DQogICAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdzeXN0ZW0nOw0KICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdzaXRlbWFwX25vdF93cml0ZWFibGUnKTsNCiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+TGFuZygnY2htb2Rfc2l0ZW1hcCcpOw0KICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7DQogICAgICB9DQogICAgfQ0KDQogICAgLy8gcm9ib3RzLnR4dCBub3Qgd3JpdGVhYmxlDQogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjcmVhdGVfcm9ib3RzJywxKSA9PSAxKSB7DQogICAgICAkZnAgPSBAZm9wZW4oJGNvbmZpZ1sncm9vdF9wYXRoJ10gLiAnL3JvYm90cy50eHQnLCJhIik7DQogICAgICBAZmNsb3NlKCRmcCk7DQogICAgICBpZiAoIWlzX3dyaXRlYWJsZSgkY29uZmlnWydyb290X3BhdGgnXSAuICcvcm9ib3RzLnR4dCcpKSB7DQogICAgICAgICRhbGVydCA9IEFycmF5KCk7DQogICAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdzeXN0ZW0nOw0KICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdyb2JvdHNfbm90X3dyaXRlYWJsZScpOw0KICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5MYW5nKCdjaG1vZF9yb2JvdHMnKTsNCiAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgICAgfQ0KICAgIH0NCg0KICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGgnLDApID09IDEpIHsNCiAgICAgIC8vIE5vIE9wZW5HcmFwaCBhZG1pbiBzZXQNCiAgICAgIGlmICgoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FkbWlucycsJycpID09ICcnKSAmJiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfb3BlbmdyYXBoX2FwcGxpY2F0aW9uJywnJykgPT0gJycpKSB7DQogICAgICAgICRhbGVydCA9IEFycmF5KCk7DQogICAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdvcGVuZ3JhcGgnOw0KICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdub19vcGVuZ3JhcGhfYWRtaW5zJyk7DQogICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5MYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsNCiAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgICAgfQ0KICAgICAgLy8gTm8gT3BlbkdyYXBoIHBhZ2UgdHlwZSBzZXQNCiAgICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfdHlwZScsJycpID09ICcnKSB7DQogICAgICAgICRhbGVydCA9IEFycmF5KCk7DQogICAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdvcGVuZ3JhcGgnOw0KICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdub19vcGVuZ3JhcGhfdHlwZScpOw0KICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+TGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidtZXRhc2V0dGluZ3MnKSk7DQogICAgICAgICRhbGVydHNbXSA9ICRhbGVydDsNCiAgICAgIH0NCiAgICAgIC8vIE5vIE9wZW5HcmFwaCBzaXRlbmFtZSBzZXQNCiAgICAgIGlmICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWV0YV9vcGVuZ3JhcGhfc2l0ZW5hbWUnLCcnKSA9PSAnJykgew0KICAgICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnb3BlbmdyYXBoJzsNCiAgICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnbm9fb3BlbmdyYXBoX3NpdGVuYW1lJyk7DQogICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5MYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsNCiAgICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgICAgfQ0KICAgICAgLy8gTm8gT3BlbkdyYXBoIGltYWdlIHNldA0KICAgICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdtZXRhX29wZW5ncmFwaF9pbWFnZScsJycpID09ICcnKSB7DQogICAgICAgICRhbGVydCA9IEFycmF5KCk7DQogICAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdvcGVuZ3JhcGgnOw0KICAgICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdub19vcGVuZ3JhcGhfaW1hZ2UnKTsNCiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPkxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOw0KICAgICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7DQogICAgICB9DQogICAgfQ0KDQogICAgcmV0dXJuICRhbGVydHM7DQogIH0NCg0KICBmdW5jdGlvbiBnZXRJbXBvcnRhbnRBbGVydHMoKSB7DQogICAgZ2xvYmFsICRnQ21zOw0KDQogICAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7DQogICAgJGFsZXJ0cyA9IEFycmF5KCk7DQoNCiAgICAvLyBQYWdlcyB3aXRoIHNob3J0IGRlc2NyaXB0aW9uDQogICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqLGMuY29udGVudF9pZCBBUyBjaWQgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudCBjIElOTkVSIEpPSU4gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnRfcHJvcHMgcCBPTiAoYy5jb250ZW50X2lkID0gcC5jb250ZW50X2lkIEFORCBwLnByb3BfbmFtZSA9ICInLnN0cl9yZXBsYWNlKCcgJywnXycsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2Jsb2NrJywnJykpLiciKSBXSEVSRSBDSEFSX0xFTkdUSChwLmNvbnRlbnQpIDwgNzUgQU5EIGMudHlwZSA9ICJjb250ZW50IiBBTkQgcC5jb250ZW50IDw+ICIiIExJTUlUIDAsMjEnOw0KICAgICRyZXN1bHQgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgd2hpbGUgKCRwcm9ibGVtID0gJHJlc3VsdC0+ZmV0Y2hSb3coKSkgew0KICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsNCiAgICAgICRhbGVydFsnZ3JvdXAnXSA9ICdkZXNjcmlwdGlvbnMnOw0KICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnbWV0YV9kZXNjcmlwdGlvbl9zaG9ydCcsQXJyYXkoJHByb2JsZW1bJ2NvbnRlbnRfbmFtZSddKSk7DQogICAgICBpZiAoaXNzZXQoJF9HRVRbJ3NwXyddKSkgew0KICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP3NwXz0nLiRfR0VUWydzcF8nXS4nJmNvbnRlbnRfaWQ9Jy4kcHJvYmxlbVsnY2lkJ10uJyI+Jy4kdGhpcy0+TGFuZygnZWRpdF9wYWdlX3RvX2ZpeCcpLic8L2E+JzsNCiAgICAgIH1lbHNlew0KICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP19zeF89Jy4kX0dFVFsnX3N4XyddLicmY29udGVudF9pZD0nLiRwcm9ibGVtWydjaWQnXS4nIj4nLiR0aGlzLT5MYW5nKCdlZGl0X3BhZ2VfdG9fZml4JykuJzwvYT4nOw0KICAgICAgfQ0KICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgIH0NCg0KICAgIC8vIFBhZ2VzIHdpdGggZHVwbGljYXRlIHRpdGxlDQogICAgJHF1ZXJ5ID0gJ1NFTEVDVCBjMS5jb250ZW50X2FsaWFzIEFTIGMxbmFtZSwgYzEuY29udGVudF9pZCBBUyBjMWlkLCBjMi5jb250ZW50X2FsaWFzIEFTIGMybmFtZSwgYzIuY29udGVudF9pZCBBUyBjMmlkIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgYzEgSU5ORVIgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudCBjMiBPTiAoYzEuY29udGVudF9uYW1lID0gYzIuY29udGVudF9uYW1lIEFORCBjMS5jb250ZW50X2lkIDwgYzIuY29udGVudF9pZCkgV0hFUkUgYzEudHlwZSA9ICJjb250ZW50IiBBTkQgYzIudHlwZSA9ICJjb250ZW50IiBMSU1JVCAwLDIxJzsNCiAgICAkcmVzdWx0ID0mICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgIHdoaWxlICgkcHJvYmxlbSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsNCiAgICAgICRhbGVydCA9IEFycmF5KCk7DQogICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAndGl0bGVzJzsNCiAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2R1cGxpY2F0ZV90aXRsZXMnLEFycmF5KCRwcm9ibGVtWydjMW5hbWUnXSwkcHJvYmxlbVsnYzJuYW1lJ10pKTsNCiAgICAgIGlmIChpc3NldCgkX0dFVFsnc3BfJ10pKSB7DQogICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJGNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/c3BfPScuJF9HRVRbJ3NwXyddLicmY29udGVudF9pZD0nLiRwcm9ibGVtWydjMWlkJ10uJyI+Jy4kdGhpcy0+TGFuZygnZWRpdF9wYWdlJyxBcnJheSgkcHJvYmxlbVsnYzFuYW1lJ10pKS4nPC9hPic7DQogICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJGNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/c3BfPScuJF9HRVRbJ3NwXyddLicmY29udGVudF9pZD0nLiRwcm9ibGVtWydjMmlkJ10uJyI+Jy4kdGhpcy0+TGFuZygnZWRpdF9wYWdlJyxBcnJheSgkcHJvYmxlbVsnYzJuYW1lJ10pKS4nPC9hPic7DQogICAgICB9ZWxzZXsNCiAgICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAnPGEgaHJlZj0iJy4kY29uZmlnWydyb290X3VybCddLicvJy4kY29uZmlnWydhZG1pbl9kaXInXS4nL2VkaXRjb250ZW50LnBocD9fc3hfPScuJF9HRVRbJ19zeF8nXS4nJmNvbnRlbnRfaWQ9Jy4kcHJvYmxlbVsnYzFpZCddLiciPicuJHRoaXMtPkxhbmcoJ2VkaXRfcGFnZScsQXJyYXkoJHByb2JsZW1bJ2MxbmFtZSddKSkuJzwvYT4nOw0KICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP19zeF89Jy4kX0dFVFsnX3N4XyddLicmY29udGVudF9pZD0nLiRwcm9ibGVtWydjMmlkJ10uJyI+Jy4kdGhpcy0+TGFuZygnZWRpdF9wYWdlJyxBcnJheSgkcHJvYmxlbVsnYzJuYW1lJ10pKS4nPC9hPic7DQogICAgICB9DQogICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7DQogICAgfQ0KDQogICAgLy8gUGFnZXMgd2l0aCBkdXBsaWNhdGUgZGVzY3JpcHRpb24NCiAgICAkcXVlcnkgPSAnU0VMRUNUIHAxLmNvbnRlbnRfaWQgQVMgYzFpZCwgcDIuY29udGVudF9pZCBBUyBjMmlkIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnRfcHJvcHMgcDEgSU5ORVIgSk9JTiAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudF9wcm9wcyBwMiBPTiAocDEucHJvcF9uYW1lID0gcDIucHJvcF9uYW1lIEFORCBwMS5wcm9wX25hbWUgPSAiJy5zdHJfcmVwbGFjZSgnICcsJ18nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZXNjcmlwdGlvbl9ibG9jaycsJycpKS4nIiBBTkQgcDEuY29udGVudF9pZCA8IHAyLmNvbnRlbnRfaWQgQU5EIHAxLmNvbnRlbnQgPD4gIiIgQU5EIHAyLmNvbnRlbnQgPD4gIiIpIFdIRVJFIHAxLmNvbnRlbnQgPSBwMi5jb250ZW50IExJTUlUIDAsMjEnOw0KICAgICRyZXN1bHQgPSYgJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQogICAgd2hpbGUgKCRwcm9ibGVtID0gJHJlc3VsdC0+ZmV0Y2hSb3coKSkgew0KICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBjb250ZW50X2lkLCBjb250ZW50X25hbWUgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nY29udGVudCBXSEVSRSBjb250ZW50X2lkID0gJy4kcHJvYmxlbVsnYzFpZCddLicgT1IgY29udGVudF9pZCA9ICcuJHByb2JsZW1bJ2MyaWQnXTsNCiAgICAgICRyZXN1bHQxID0mICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KICAgICAgJGZpcnN0ID0gJHJlc3VsdDEtPmZldGNoUm93KCk7DQogICAgICAkc2Vjb25kID0gJHJlc3VsdDEtPmZldGNoUm93KCk7DQogICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgJGFsZXJ0Wydncm91cCddID0gJ2Rlc2NyaXB0aW9ucyc7DQogICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdkdXBsaWNhdGVfZGVzY3JpcHRpb25zJyxBcnJheSgkZmlyc3RbJ2NvbnRlbnRfbmFtZSddLCRzZWNvbmRbJ2NvbnRlbnRfbmFtZSddKSk7DQogICAgICBpZiAoaXNzZXQoJF9HRVRbJ3NwXyddKSkgew0KICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP3NwXz0nLiRfR0VUWydzcF8nXS4nJmNvbnRlbnRfaWQ9Jy4kZmlyc3RbJ2NvbnRlbnRfaWQnXS4nIj4nLiR0aGlzLT5MYW5nKCdlZGl0X3BhZ2UnLEFycmF5KCRmaXJzdFsnY29udGVudF9uYW1lJ10pKS4nPC9hPic7DQogICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJGNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/c3BfPScuJF9HRVRbJ3NwXyddLicmY29udGVudF9pZD0nLiRzZWNvbmRbJ2NvbnRlbnRfaWQnXS4nIj4nLiR0aGlzLT5MYW5nKCdlZGl0X3BhZ2UnLEFycmF5KCRzZWNvbmRbJ2NvbnRlbnRfbmFtZSddKSkuJzwvYT4nOw0KICAgICAgfWVsc2V7DQogICAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJzxhIGhyZWY9IicuJGNvbmZpZ1sncm9vdF91cmwnXS4nLycuJGNvbmZpZ1snYWRtaW5fZGlyJ10uJy9lZGl0Y29udGVudC5waHA/X3N4Xz0nLiRfR0VUWydfc3hfJ10uJyZjb250ZW50X2lkPScuJGZpcnN0Wydjb250ZW50X2lkJ10uJyI+Jy4kdGhpcy0+TGFuZygnZWRpdF9wYWdlJyxBcnJheSgkZmlyc3RbJ2NvbnRlbnRfbmFtZSddKSkuJzwvYT4nOw0KICAgICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICc8YSBocmVmPSInLiRjb25maWdbJ3Jvb3RfdXJsJ10uJy8nLiRjb25maWdbJ2FkbWluX2RpciddLicvZWRpdGNvbnRlbnQucGhwP19zeF89Jy4kX0dFVFsnX3N4XyddLicmY29udGVudF9pZD0nLiRzZWNvbmRbJ2NvbnRlbnRfaWQnXS4nIj4nLiR0aGlzLT5MYW5nKCdlZGl0X3BhZ2UnLEFycmF5KCRzZWNvbmRbJ2NvbnRlbnRfbmFtZSddKSkuJzwvYT4nOw0KICAgICAgfQ0KICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgIH0NCiAgICAvLyBObyBhdXRob3IgcHJvdmlkZWQNCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfcHVibGlzaGVyJywnJykgPT0gJycpIHsNCiAgICAgICRhbGVydCA9IEFycmF5KCk7DQogICAgICAkYWxlcnRbJ2dyb3VwJ10gPSAnc2V0dGluZ3MnOw0KICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygncHJvdmlkZV9hbl9hdXRob3InKTsNCiAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5MYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J21ldGFzZXR0aW5ncycpKTsNCiAgICAgICRhbGVydHNbXSA9ICRhbGVydDsNCiAgICB9DQogICAgcmV0dXJuICRhbGVydHM7DQogIH0NCg0KICBmdW5jdGlvbiBnZXROb3RpY2VBbGVydHMoKSB7DQogICAgZ2xvYmFsICRnQ21zOw0KICAgIA0KICAgICRhbGVydHMgPSBBcnJheSgpOw0KICAgIC8vIE5vIHN0YW5kYXJkIG1ldGENCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ21ldGFfc3RhbmRhcmQnLDEpICE9IDEpIHsNCiAgICAgICRhbGVydCA9IEFycmF5KCk7DQogICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCd1c2Vfc3RhbmRhcmRfbWV0YScpOw0KICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPkxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nbWV0YXNldHRpbmdzJykpOw0KICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgIH0NCiAgICAvLyBTdWJtaXQgYSBzaXRlbWFwDQogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcsMSkgIT0gMSkgew0KICAgICAgJGFsZXJ0ID0gQXJyYXkoKTsNCiAgICAgICRhbGVydFsnbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2NyZWF0ZV9hX3NpdGVtYXAnKTsNCiAgICAgICRhbGVydFsnbGlua3MnXVtdID0gJHRoaXMtPmNyZWF0ZUxpbmsobnVsbCwgJ2RlZmF1bHRhZG1pbicsIG51bGwsICR0aGlzLT5MYW5nKCd2aXNpdF9zZXR0aW5ncycpLCBBcnJheSgndGFiJz0+J3NpdGVtYXBzZXR0aW5ncycpKTsNCiAgICAgICRhbGVydHNbXSA9ICRhbGVydDsNCiAgICB9ZWxzZWlmKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwdXNoX3NpdGVtYXAnLDEpICE9IDEpIHsNCiAgICAgIC8vIEF1dG9tYXRpY2FsbHkgc3VibWl0IHRoZSBzaXRlbWFwDQogICAgICAkYWxlcnQgPSBBcnJheSgpOw0KICAgICAgJGFsZXJ0WydtZXNzYWdlJ10gPSAkdGhpcy0+TGFuZygnYXV0b21hdGljYWxseV91cGxvYWRfc2l0ZW1hcCcpOw0KICAgICAgJGFsZXJ0WydsaW5rcyddW10gPSAkdGhpcy0+Y3JlYXRlTGluayhudWxsLCAnZGVmYXVsdGFkbWluJywgbnVsbCwgJHRoaXMtPkxhbmcoJ3Zpc2l0X3NldHRpbmdzJyksIEFycmF5KCd0YWInPT4nc2l0ZW1hcHNldHRpbmdzJykpOw0KICAgICAgJGFsZXJ0c1tdID0gJGFsZXJ0Ow0KICAgIH0NCiAgICAvLyBDcmVhdGUgYSByb2JvdHMudHh0IGZpbGUNCiAgICBpZiAoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2NyZWF0ZV9yb2JvdHMnLDEpICE9IDEpIHsNCiAgICAgICRhbGVydCA9IEFycmF5KCk7DQogICAgICAkYWxlcnRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdjcmVhdGVfcm9ib3RzJyk7DQogICAgICAkYWxlcnRbJ2xpbmtzJ11bXSA9ICR0aGlzLT5jcmVhdGVMaW5rKG51bGwsICdkZWZhdWx0YWRtaW4nLCBudWxsLCAkdGhpcy0+TGFuZygndmlzaXRfc2V0dGluZ3MnKSwgQXJyYXkoJ3RhYic9PidzaXRlbWFwc2V0dGluZ3MnKSk7DQogICAgICAkYWxlcnRzW10gPSAkYWxlcnQ7DQogICAgfQ0KICAgIC8vIFNldCBhIGRlZmF1bHQgaW1hZ2UNCiAgICByZXR1cm4gJGFsZXJ0czsNCiAgfQ0KDQogIGZ1bmN0aW9uIGdldF9rZXl3b3Jkcygkc291cmNlLCAkbWlubGVuZ3RoID0gNikgew0KICAgICRzb3VyY2UgPSBwcmVnX3JlcGxhY2UoJy9ce1teXH1dK1x9L2lzVScsICcnLCB1dGY4X2RlY29kZSgkc291cmNlKSk7DQogICAgJHNvdXJjZSA9IHN0cl9yZXBsYWNlKCJcbiIsIiAiLHN0cmlwX3RhZ3MoJHNvdXJjZSkpOw0KICAgICRzb3VyY2UgPSBzdHJfcmVwbGFjZSgnLScsJyAnLCRzb3VyY2UpOw0KICAgICRzb3VyY2UgPSBzdHJfcmVwbGFjZSgnLicsJyAnLCRzb3VyY2UpOw0KICAgICRzb3VyY2UgPSBzdHJfcmVwbGFjZSgnLCcsJyAnLCRzb3VyY2UpOw0KICAgICRzb3VyY2UgPSBzdHJfcmVwbGFjZSgnIScsJyAnLCRzb3VyY2UpOw0KICAgICRzb3VyY2UgPSBzdHJfcmVwbGFjZSgnPycsJyAnLCRzb3VyY2UpOw0KICAgICRzb3VyY2UgPSBzdHJfcmVwbGFjZSgnOicsJyAnLCRzb3VyY2UpOw0KICAgICRzb3VyY2UgPSBzdHJfcmVwbGFjZSgnICAnLCcgJywkc291cmNlKTsNCiAgICAka2V5d29yZHMgPSBleHBsb2RlKCcgJywkc291cmNlKTsNCiAgICBmb3JlYWNoICgka2V5d29yZHMgYXMgJGtleT0+JHZhbHVlKSB7DQogICAgICBpZiAoc3RybGVuKCR2YWx1ZSkgPCAkbWlubGVuZ3RoKSB7DQogICAgICAgIHVuc2V0KCRrZXl3b3Jkc1ska2V5XSk7DQogICAgICB9ZWxzZXsNCiAgICAgICAgJGtleXdvcmRzWyRrZXldID0gaHRtbGVudGl0aWVzKHRyaW0oJHZhbHVlKSk7DQogICAgICB9DQogICAgfQ0KICAgIHJldHVybiAka2V5d29yZHM7DQogIH0NCg0KICBmdW5jdGlvbiBnZXRfaGVhZGxpbmVzKCRmaWxlKXsNCiAgICAkaDF0YWdzID0gcHJlZ19tYXRjaF9hbGwoIi8oPGgxLio+KShcdy4qKSg8XC9oMT4pL2lzeG1VIiwkZmlsZSwkcGF0dGVybnMpOw0KICAgICRjb250ZW50ID0gIiI7DQogICAgZm9yZWFjaCgkcGF0dGVybnNbMl0gYXMgJHRhZykgew0KICAgICAgJGNvbnRlbnQgLj0gIiAiLiR0YWc7DQogICAgfQ0KICAgICRoMnRhZ3MgPSBwcmVnX21hdGNoX2FsbCgiLyg8aDIuKj4pKFx3LiopKDxcL2gyPikvaXN4bVUiLCRmaWxlLCRwYXR0ZXJucyk7DQogICAgZm9yZWFjaCgkcGF0dGVybnNbMl0gYXMgJHRhZykgew0KICAgICAgJGNvbnRlbnQgLj0gIiAiLiR0YWc7DQogICAgfQ0KICAgICRoM3RhZ3MgPSBwcmVnX21hdGNoX2FsbCgiLyg8aDMuKj4pKFx3LiopKDxcL2gzPikvaXN4bVUiLCRmaWxlLCRwYXR0ZXJucyk7DQogICAgZm9yZWFjaCgkcGF0dGVybnNbMl0gYXMgJHRhZykgew0KICAgICAgJGNvbnRlbnQgLj0gIiAiLiR0YWc7DQogICAgfQ0KICAgICRoNHRhZ3MgPSBwcmVnX21hdGNoX2FsbCgiLyg8aDQuKj4pKFx3LiopKDxcL2g0PikvaXN4bVUiLCRmaWxlLCRwYXR0ZXJucyk7DQogICAgZm9yZWFjaCgkcGF0dGVybnNbMl0gYXMgJHRhZykgew0KICAgICAgJGNvbnRlbnQgLj0gIiAiLiR0YWc7DQogICAgfQ0KICAgICRoNXRhZ3MgPSBwcmVnX21hdGNoX2FsbCgiLyg8aDUuKj4pKFx3LiopKDxcL2g1PikvaXN4bVUiLCRmaWxlLCRwYXR0ZXJucyk7DQogICAgZm9yZWFjaCgkcGF0dGVybnNbMl0gYXMgJHRhZykgew0KICAgICAgJGNvbnRlbnQgLj0gIiAiLiR0YWc7DQogICAgfQ0KICAgICRoNnRhZ3MgPSBwcmVnX21hdGNoX2FsbCgiLyg8aDYuKj4pKFx3LiopKDxcL2g2PikvaXN4bVUiLCRmaWxlLCRwYXR0ZXJucyk7DQogICAgZm9yZWFjaCgkcGF0dGVybnNbMl0gYXMgJHRhZykgew0KICAgICAgJGNvbnRlbnQgLj0gIiAiLiR0YWc7DQogICAgfQ0KICAgIHJldHVybiAkY29udGVudDsNCiAgfQ0KDQogIGZ1bmN0aW9uIGdldEtleXdvcmRTdWdnZXN0aW9ucygkY29udGVudF9pZCkgew0KICAgIGdsb2JhbCAkZ0NtczsNCiAgICAkc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7DQogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCg0KICAgICRjb250ZW50b3BzID0gJGdDbXMtPkdldENvbnRlbnRPcGVyYXRpb25zKCk7DQogICAgaWYgKCEkY3VyY29udGVudCA9ICRjb250ZW50b3BzLT5Mb2FkQ29udGVudEZyb21JZCAoJGNvbnRlbnRfaWQpKSB7DQogICAgICByZXR1cm47DQogICAgfQ0KICAgICRkZXNjcmlwdGlvbl9pZCA9IHN0cl9yZXBsYWNlKCcgJywnXycsJHRoaXMtPkdldFByZWZlcmVuY2UoJ2Rlc2NyaXB0aW9uX2Jsb2NrJywnJykpOw0KDQogICAgLyogR2VuZXJhdGUga2V5d29yZHMgZnJvbSBwYWdlIHRpdGxlLCBkZXNjcmlwdGlvbiBhbmQgY29udGVudCAqLw0KICAgICR0aXRsZV9rZXl3b3JkcyA9ICR0aGlzLT5nZXRfa2V5d29yZHMoJGN1cmNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJ2NvbnRlbnRfZW4nKSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJywnNicpKTsNCg0KICAgICRkZXNjcmlwdGlvbl9rZXl3b3JkcyA9ICR0aGlzLT5nZXRfa2V5d29yZHMoJGN1cmNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJGRlc2NyaXB0aW9uX2lkKSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJywnNicpKTsNCg0KICAgICRoZWFkbGluZV9rZXl3b3JkcyA9ICR0aGlzLT5nZXRfa2V5d29yZHMoJHRoaXMtPmdldF9oZWFkbGluZXMoJGN1cmNvbnRlbnQtPk5hbWUoKSksICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdrZXl3b3JkX21pbmxlbmd0aCcsJzYnKSk7DQoNCiAgICAkY29udGVudF9rZXl3b3JkcyA9ICR0aGlzLT5nZXRfa2V5d29yZHMoJGN1cmNvbnRlbnQtPkdldFByb3BlcnR5VmFsdWUoJ2NvbnRlbnRfZW4nKSwgJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfbWlubGVuZ3RoJywnNicpKTsNCg0KICAgICRvdGhlcl9rZXl3b3JkcyA9IEFycmF5KCk7DQoNCiAgICBmb3JlYWNoKCR0aXRsZV9rZXl3b3JkcyBhcyAka2V5d29yZCkgew0KICAgICAgaWYgKCFpc3NldCgkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdKSkgew0KICAgICAgICAkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdID0gMDsNCiAgICAgIH0NCiAgICAgICRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF90aXRsZV93ZWlnaHQnLCc2Jyk7DQogICAgfQ0KICAgIGZvcmVhY2goJGRlc2NyaXB0aW9uX2tleXdvcmRzIGFzICRrZXl3b3JkKSB7DQogICAgICBpZiAoIWlzc2V0KCRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0pKSB7DQogICAgICAgICRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0gPSAwOw0KICAgICAgfQ0KICAgICAgJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSArPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9kZXNjcmlwdGlvbl93ZWlnaHQnLCc0Jyk7DQogICAgfQ0KICAgIGZvcmVhY2goJGhlYWRsaW5lX2tleXdvcmRzIGFzICRrZXl3b3JkKSB7DQogICAgICBpZiAoIWlzc2V0KCRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0pKSB7DQogICAgICAgICRvdGhlcl9rZXl3b3Jkc1ska2V5d29yZF0gPSAwOw0KICAgICAgfQ0KICAgICAgJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSArPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgna2V5d29yZF9oZWFkbGluZV93ZWlnaHQnLCcyJyk7DQogICAgfQ0KICAgIGZvcmVhY2goJGNvbnRlbnRfa2V5d29yZHMgYXMgJGtleXdvcmQpIHsNCiAgICAgIGlmICghaXNzZXQoJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSkpIHsNCiAgICAgICAgJG90aGVyX2tleXdvcmRzWyRrZXl3b3JkXSA9IDA7DQogICAgICB9DQogICAgICAkb3RoZXJfa2V5d29yZHNbJGtleXdvcmRdICs9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdrZXl3b3JkX2NvbnRlbnRfd2VpZ2h0JywnMScpOw0KICAgIH0NCg0KICAgIGFyc29ydCgkb3RoZXJfa2V5d29yZHMpOw0KDQogICAgJGV4Y2x1ZGVfbGlzdCA9IGV4cGxvZGUoJyAnLHN0cnRvdXBwZXIodXRmOF9kZWNvZGUoJHRoaXMtPkdldFByZWZlcmVuY2UoJ2tleXdvcmRfZXhjbHVkZScsJycpKSkpOw0KDQogICAgZm9yZWFjaCAoJG90aGVyX2tleXdvcmRzIGFzICRrZXk9PiR2YWx1ZSkgew0KICAgICAgaWYgKCR2YWx1ZSA8ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdrZXl3b3JkX21pbmltdW1fd2VpZ2h0JywnNycpKSB7DQogICAgICAgIHVuc2V0KCRvdGhlcl9rZXl3b3Jkc1ska2V5XSk7DQogICAgICB9ZWxzZWlmIChpbl9hcnJheShzdHJ0b3VwcGVyKCRrZXkpLCRleGNsdWRlX2xpc3QpKSB7DQogICAgICAgIHVuc2V0KCRvdGhlcl9rZXl3b3Jkc1ska2V5XSk7DQogICAgICB9DQogICAgfQ0KDQogICAgcmV0dXJuICRvdGhlcl9rZXl3b3JkczsNCiAgfQ0KDQogIGZ1bmN0aW9uIGNyZWF0ZVJvYm90c1RYVCgpIHsNCiAgICBnbG9iYWwgJGdDbXM7DQogICAgJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOw0KICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7DQoNCiAgICAkZnAgPSBAZm9wZW4oJGNvbmZpZ1sncm9vdF9wYXRoJ10uJy9yb2JvdHMudHh0JywndycpOw0KICAgIA0KICAgIC8vIENyZWF0ZSByb2JvdHMudHh0DQogICAgaWYgKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdjcmVhdGVfc2l0ZW1hcCcsMSkgPT0gMSkgew0KICAgICAgZndyaXRlKCRmcCwgIlNpdGVtYXA6ICIuJGNvbmZpZ1sncm9vdF91cmwnXS4iL3NpdGVtYXAueG1sXG4iKTsNCiAgICB9DQoJQGZ3cml0ZSgkZnAsICJVc2VyLWFnZW50OiAqXG4iKTsNCglAZndyaXRlKCRmcCwgIkRpc2FsbG93OiAiLiRjb25maWdbJ3Jvb3RfdXJsJ10uIi9jb250cmliL1xuIik7DQoJQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kY29uZmlnWydyb290X3VybCddLiIvZG9jL1xuIik7DQoJQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kY29uZmlnWydyb290X3VybCddLiIvbGliL1xuIik7DQoJQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kY29uZmlnWydyb290X3VybCddLiIvbW9kdWxlcy9cbiIpOw0KCUBmd3JpdGUoJGZwLCAiRGlzYWxsb3c6ICIuJGNvbmZpZ1sncm9vdF91cmwnXS4iL3BsdWdpbnMvXG4iKTsNCglAZndyaXRlKCRmcCwgIkRpc2FsbG93OiAiLiRjb25maWdbJ3Jvb3RfdXJsJ10uIi9zY3JpcHRzL1xuIik7DQoJQGZ3cml0ZSgkZnAsICJEaXNhbGxvdzogIi4kY29uZmlnWydyb290X3VybCddLiIvdG1wL1xuIik7DQoNCiAgICAkcXVlcnkgPSAiU0VMRUNUICogRlJPTSAiLmNtc19kYl9wcmVmaXgoKS4ibW9kdWxlX3Nlb3Rvb2xzMiBXSEVSRSBpbmRleGFibGUgPSAwIjsNCiAgICAkcmVzdWx0ID0gJGRiLT5FeGVjdXRlKCRxdWVyeSk7DQoNCiAgICAkY29udGVudG9wcyA9ICRnQ21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOw0KICAgIHdoaWxlICgkcGFnZSA9ICRyZXN1bHQtPmZldGNoUm93KCkpIHsNCg0KICAgICAgaWYgKCRjdXJjb250ZW50ID0gJGNvbnRlbnRvcHMtPkxvYWRDb250ZW50RnJvbUlkICgkcGFnZVsnY29udGVudF9pZCddKSkgew0KICAgICAgICAkdXJsID0gJGN1cmNvbnRlbnQtPkdldFVSTCgpOw0KICAgICAgICBAZndyaXRlKCRmcCwgIkRpc2FsbG93OiAiLiR1cmwuIlxuIik7DQogICAgICB9DQogICAgfQ0KICAgIEBmY2xvc2UoJGZwKTsNCiAgfQ0KDQogIGZ1bmN0aW9uIGNyZWF0ZVNpdGVtYXAoJHB1c2ggPSBmYWxzZSkgew0KICAgIGdsb2JhbCAkZ0NtczsNCiAgICAkY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7DQogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsNCiAgICANCg0KICAgICRmcCA9IEBmb3BlbigkY29uZmlnWydyb290X3BhdGgnXS4nL3NpdGVtYXAueG1sJywndycpOw0KICAgIC8vIENyZWF0ZSBzaXRlbWFwDQoNCiAgICBmd3JpdGUoJGZwLCAiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz5cbiIpOw0KICAgIGZ3cml0ZSgkZnAsICI8dXJsc2V0IHhtbG5zPSdodHRwOi8vd3d3LnNpdGVtYXBzLm9yZy9zY2hlbWFzL3NpdGVtYXAvMC45Jz5cblxuIik7DQoNCiAgICAkY29udGVudG9wcyA9ICRnQ21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOw0KDQogICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ2NvbnRlbnQgV0hFUkUgYWN0aXZlID0gMSBPUkRFUiBCWSBoaWVyYXJjaHkgQVNDJzsNCiAgICAkcmVzdWx0ID0mICRkYi0+RXhlY3V0ZSgkcXVlcnkpOw0KDQogICAgd2hpbGUgKCRwYWdlID0gJHJlc3VsdC0+ZmV0Y2hSb3coKSkgew0KICAgICAgaWYgKCRjdXJjb250ZW50ID0gJGNvbnRlbnRvcHMtPkxvYWRDb250ZW50RnJvbUlkICgkcGFnZVsnY29udGVudF9pZCddKSkgew0KDQogICAgICAgIGlmICgkY3VyY29udGVudC0+QWN0aXZlKCkgJiYgJGN1cmNvbnRlbnQtPlNob3dJbk1lbnUoKSkgew0KICAgICAgICAgICR1cmwgPSAkY3VyY29udGVudC0+R2V0VVJMKCk7DQogICAgICAgICAgaWYgKCR1cmwgPT0gIiMiKSB7DQogICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICB9DQoNCiAgICAgICAgICBpZiAoc3RycG9zKCR1cmwsICRjb25maWdbJ3Jvb3RfdXJsJ10pID09PSBmYWxzZSkgew0KICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgfQ0KDQogICAgICAgICAgJHByaW9yaXR5ID0gODA7DQogICAgICAgICAgZm9yICgkaSA9IDA7ICRpIDwgc3Vic3RyX2NvdW50KCRwYWdlWydoaWVyYXJjaHknXSwnLicpOyAkaSsrKSB7DQogICAgICAgICAgICAkcHJpb3JpdHkgID0gJHByaW9yaXR5IC8gMjsNCiAgICAgICAgICB9DQogICAgICAgICAgaWYgKCRwYWdlWydkZWZhdWx0X2NvbnRlbnQnXSA9PSAxKSB7DQogICAgICAgICAgICAkcHJpb3JpdHkgPSAxMDA7DQogICAgICAgICAgfQ0KDQogICAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9zZW90b29sczIgV0hFUkUgY29udGVudF9pZCA9ICcuJHBhZ2VbJ2NvbnRlbnRfaWQnXTsNCiAgICAgICAgICAkcmVzdWx0MiA9JiAkZGItPkV4ZWN1dGUoJHF1ZXJ5KTsNCiAgICAgICAgICAkaW5mbyA9ICRyZXN1bHQyLT5mZXRjaFJvdygpOw0KICAgICAgICAgIGlmIChpc3NldCgkaW5mb1sncHJpb3JpdHknXSkgJiYgKCRpbmZvWydwcmlvcml0eSddICE9IDApICYmICgkaW5mb1sncHJpb3JpdHknXSAhPSAiIikpIHsNCiAgICAgICAgICAgICRwcmlvcml0eSA9ICRpbmZvWydwcmlvcml0eSddOw0KICAgICAgICAgIH0NCiAgICAgICAgICBpZiAoIWlzc2V0KCRpbmZvWydpbmRleGFibGUnXSkgfHwgKCRpbmZvWydpbmRleGFibGUnXSA9PSAiIikgfHwgKCRpbmZvWydpbmRleGFibGUnXSA9PSAxKSkgew0KICAgICAgICAgICAgZndyaXRlKCRmcCwgIjx1cmw+XG4iKTsNCiAgICAgICAgICAgIGZ3cml0ZSgkZnAsICI8bG9jPiIuJHVybC4iPC9sb2M+XG4iKTsNCiAgICAgICAgICAgIGZ3cml0ZSgkZnAsICI8bGFzdG1vZD4iLmRhdGUoIlktbS1kIiwgc3RydG90aW1lKCRwYWdlWydtb2RpZmllZF9kYXRlJ10pKS4iPC9sYXN0bW9kPlxuIik7DQogICAgICAgICAgICBmd3JpdGUoJGZwLCAiPGNoYW5nZWZyZXE+YWx3YXlzPC9jaGFuZ2VmcmVxPlxuIik7DQogICAgICAgICAgICBmd3JpdGUoJGZwLCAiPHByaW9yaXR5PiIubnVtYmVyX2Zvcm1hdCgkcHJpb3JpdHkgLyAxMDAsIDEpLiI8L3ByaW9yaXR5PlxuIik7DQogICAgICAgICAgICBmd3JpdGUoJGZwLCAiPC91cmw+XG5cbiIpOw0KICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgICBmd3JpdGUoJGZwLCAiPC91cmxzZXQ+Iik7DQogICAgZmNsb3NlKCRmcCk7DQogICAgaWYgKCRwdXNoICE9IGZhbHNlICYmICRwdXNoICE9PTApIHsNCiAgICAgIC8vIFB1c2ggc2l0ZW1hcCB0byBnb29nbGUNCiAgICAgICRmcCA9IEBmb3BlbigiaHR0cDovL3d3dy5nb29nbGUuY29tL3dlYm1hc3RlcnMvdG9vbHMvcGluZz9zaXRlbWFwPSIudXJsZW5jb2RlKCRjb25maWdbJ3Jvb3RfdXJsJ10uIi9zaXRlbWFwLnhtbCIpLCJyIik7DQogICAgICBmY2xvc2UoJGZwKTsNCiAgICB9DQogIH0NCg0KfQ0KDQo/Pg==]]></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>
