<?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>MCFactory</name>
	<version>2.11.8</version>
  <mincmsversion>1.9</mincmsversion>
	<help><![CDATA[Cgk8aDM+RGVzY3JpcHRpb248L2gzPgoJPHA+VGhpcyBtb2R1bGUgY2FuIGdlbmVyYXRlIG5ldyBtb2R1bGVzIHRvIG1hbmFnZSBjdXN0b20gY29udGVudCB0eXBlcy48L3A+Cgk8aDM+SG93IHRvIHVzZSBpdDwvaDM+Cgk8cD5Gb3IgdGhlIGdlbmVyYWwgaGVscCwgeW91IGNhbiBmaW5kIGl0IHVuZGVyIHRoZSBnZW5lcmF0ZWQgbW9kdWxlIGhlbHAuPC9wPgoJPHA+V2l0aCB0aGUgc3BlY2lmaWMgbW9kdWxlIGxvZ2ljLCB5b3UgY2FuIG5vdyBhZGQgb3Igb3ZlcnJpZGUgc29tZSBtZXRob2RzIGZyb20gdGhlIG9iamVjdCBjbGFzcyBpdHNlbGYuIEZvciBleGFtcGxlLCB5b3UgY291bGQgb3ZlcmlkZSB0aGUgbWV0aG9kICJnZXRUaXRsZSIgdG8gZG8gc29tZXRoaW5nIGVsc2UuPC9wPgoJPHA+U3BlY2lmaWMgbWV0aG9kcyB0aGF0IHlvdSBjb3VsZCBjb25zaWRlciBvdmVycmlkaW5nOjwvcD4KCTx1bD4KCQk8bGk+PHN0cm9uZz5nZXRDb3JlU2x1ZygpPC9zdHJvbmc+IFRoaXMgZ2VuZXJhdGUgdGhlIHVybCBzbHVnIG9mIHRoZSBtb2R1bGUuIEJ5IGRlZmF1bHQgaXQgdGFrZSBpdCBmcm9tIHRpdGxlLjwvbGk+Cgk8L3U+Cgk8cD5Tb21lIHRpcHM8L3A+Cgk8cD5Gb3IgYWxsIGZpZWxkcywgeW91IGNhbiBkZWZpbmUgb3B0aW9ucy4gV3JpdGUgdGhlbSBpbiBhICJjc3MiIHdheS48L3A+Cgk8dWw+CgkJPGxpPjxzdHJvbmc+dGlwczwvc3Ryb25nPiBBZGQgYSB0aXAgaW4gdGhlIGVuZCBvZiB0aGUgZmllbGQuPC9saT4KCTwvdWw+Cgk8aDQ+RHJvcGRvd248L2g0PgoJPHVsPgoJCTxsaT48c3Ryb25nPnZhbHVlczwvc3Ryb25nPiBBIGxpc3Qgb2YgdmFsdWVzIGZvciB0aGUgZHJvcGRvd24uIFlvdSBjYW4gdXNlIGtleT0+dmFsdWUgKGV4OiB2YWx1ZXM6b3B0aW9uMSA9PiBPcHRpb24gMSwgb3B0aW9uMiA9PiBPcHRpb24gMikuIFRvIHJldHJpZXZlIHRoZSB2YWx1ZSwgdXNlIGdldE15RmllbGROYW1lVmFsdWUoKTwvbGk+Cgk8L3VsPgoJPGg0Pk1vZHVsZTwvaDQ+Cgk8cD5Gb3IgdGhlIGZpZWxkIHR5cGUgIm1vZHVsZSIsIHRoZSBvcHRpb24gc2hvdWxkIGJlIGZpbGVkIHdpdGggdGhlIGV4YWN0IG1vZHVsZSBuYW1lLiBleDogbW9kdWxlX25hbWU6TXlNb2R1bGUuIFlvdSBjYW4gYWxzbyBzcGVjaWZ5IGl0IHRvIGJlIGEgbXVsdGlwbGUgZmlsZSBtdWx0aXBsZTp0cnVlIGFuZCB5b3UgY2FuIHJlcGxhY2UgZHJvcGRvd24gYnkgYSByYWRpbyBvciBjaGVja2JveCBsaXN0IHVzaW5nIHRoZSBwYXJhbSBleHBhbmRlZC4gRXg6ICJtb2R1bGVfbmFtZTpNeU1vZHVsZTttdWx0aXBsZTp0cnVlO2V4cGFuZGVkOnRydWUiPC9wPgoJPHVsPgoJCTxsaT48c3Ryb25nPm1vZHVsZV9uYW1lPC9zdHJvbmc+IFRoZSBtb2R1bGUgbmFtZTwvbGk+CgkJPGxpPjxzdHJvbmc+c2VsZWN0b3I8L3N0cm9uZz4gVGhlIGZ1bmN0aW9uIHRvIHNlbGVjdCBpdGVtcyAodGFrZSBNQ0ZDcml0ZXJpYSBmb3IgcGFyYW0pPC9saT4KCQk8bGk+PHN0cm9uZz5tdWx0aXBsZTwvc3Ryb25nPiBBbGxvdyBtdWx0aXBsZSBzZWxlY3Rpb24gPzwvbGk+CgkJPGxpPjxzdHJvbmc+ZXhwYW5kZWQ8L3N0cm9uZz4gU2hvdyBjaGVja2JveC9yYWRpbyBidXR0b24gaW5zdGVhZCBvZiBzZWxlY3RvciA/PC9saT4KCTwvdWw+Cgk8aDQ+RGF0ZTwvaDQ+Cgk8cD5Gb3IgdGhlIGZpZWxkIHR5cGUgImRhdGUiLCB5b3UgY2FuIHNwZWNpZnkgdGhlIHN0YXJ0IHllYXIgYW5kIG51bWJlciBvZiB5ZWFycy4gRXhhbXBsZSA6ICJzdGFydF95ZWFyOjE5NTA7bnVtYmVyX3llYXJzOjcwIjwvcD4KCTxoND5QYWdlPC9oND4KCTxwPkZvciB0aGUgcGFnZXMsIHlvdSBjYW4gdXNlIHRoZSBzYW1lIGluZm9ybWF0aW9uIGFzIGZvciBkcm9wZG93biBleGNlcHQgdGhlICJ2YWx1ZXMiLiBZb3UgY2FuIGFsc28gdXNlIHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVyczo8L3A+Cgk8dWw+CgkJPGxpPjxzdHJvbmc+Y2hpbGRyZW5vZjwvc3Ryb25nPiBTaG93IG9ubHkgdGhlIGNoaWxkcmVuJ3Mgb2YgYSBzcGVjaWZpZWQgcGFnZS48L2xpPgoJCTxsaT48c3Ryb25nPnN0YXJ0X3BhZ2U8L3N0cm9uZz4gU2hvdyBvbmx5IHRoZSBkZXNjZW5kYW50cyBvZiBhIHNwZWNpZmllZCBwYWdlLjwvbGk+Cgk8L3VsPgoJPGg0PkRvY3VtZW50czwvaDQ+Cgk8cD5Zb3UgY2FuIHByb3RlY3QgZG9jdW1lbnRzIGRvaW5nICJpbmRpcmVjdCIgZG93bmxvYWRzIHdoaWNoIHdpbGwgYWxsb3cgeW91IHRvIHNldCB1c2VyIHBlcm1pc3Npb25zIG9uIGl0IGZvciBleGFtcGxlLjwvcD4KCTx1bD4KCQk8bGk+PHN0cm9uZz5wcm90ZWN0ZWQ8L3N0cm9uZz4gU3BlY2lmeSB0aGUgYWJzb2x1dGUgcGF0aCB3aGVyZSBkb2N1bWVudHMgaGF2ZSB0byBiZSBzYWZlbHkgc3RvcmVkLiBUaGlzIGZvbGRlciBuZWVkcyB3cml0ZSBhY2Nlc3MuPC9saT4KCTwvdWw+Cgk8aDM+U3VwcG9ydDwvaDM+Cgk8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgoJPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+Cgk8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDgtMjAxMCwgSmVhbi1DaHJpc3RvcGhlIEN1dmVsaWVyIDxhIGhyZWY9Im1haWx0bzpqY2NAbW9ycmlzLWNoYXBtYW4uY29tIj4mbHQ7amNjQG1vcnJpcy1jaGFwbWFuLmNvbSZndDs8L2E+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5tb3JyaXMtY2hhcG1hbi5jb20vIj5Nb3JyaXMgJmFtcDsgQ2hhcG1hbiBCZWxnaXVtPC9hPi48L3A+Cgk8cD5Db250cmlidXRvcnM6IEdlcnJ5IFZhbmRlcm1hZXNlbjwvcD4KCTxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhpcyBtb2R1bGUuPC9wPgo8aDM+RGVwZW5kZW5jaWVzPC9oMz48dWw+PGxpPk1vZHVsZVh0ZW5kZXIgPSZndDsgMS42LjE8L2xpPjxsaT5DTVNGb3JtcyA9Jmd0OyAwLjAuMjA8L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgJmx0O2pjY0Btb3JyaXMtY2hhcG1hbi5jb20mZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMi4xMS44PGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+Cgk8ZGw+CgkJPGR0PlZlcnNpb24gMC4wLjEgLSAyOSBTZXB0ZW1iZXIgMjAwOC48L2R0PgoJCTxkZD5Jbml0aWFsIFJlbGVhc2UuPC9kZD4KCQk8ZHQ+VmVyc2lvbiAxLjAgLSAyMSBPY3RvYmVyIDIwMDkuPC9kdD4KCQk8ZGQ+Rmlyc3Qgc3RhYmxlIHJlbGVhc2UuPC9kZD4KCQk8ZHQ+VmVyc2lvbiAxLjAuMSAtIDIyIE9jdG9iZXIgMjAwOS48L2R0PgoJCTxkZD4KCQkJPHVsPgoJCQkJPGxpPkNsZWFuLXVwIG9mIHRoZSBjb2RlLjwvbGk+CgkJCQk8bGk+TW9kZWxzIG9mIGFscmVhZHkgaW5zdGFsbGVkIG1vZHVsZXMgYXJlIGF1dG8tdXBkYXRlZCB3aGVuIGFkZGluZyBuZXcgY29sdW1ucy48L2xpPgoJCQk8L3VsPgoJCTwvZGQ+Cgk8L2RsPgo8YnIgLz4=]]></about>
	<description><![CDATA[A module to generate modules for custom content types.]]></description>
	<requires>
	  <requiredname>ModuleXtender</requiredname>
	  <requiredversion>1.6.1</requiredversion>
	</requires>
	<requires>
	  <requiredname>CMSForms</requiredname>
	  <requiredversion>0.0.20</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABgAAAAIAAAAGAAAABALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAABQAAAABAAAQAABvAG4ALgBkAGUAZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFAAAABIAYQBjAHQAaQBvAG4ALgBkAGUAZgBhAHUAbAB0AC4AcABoAHBJbG9jYmxvYgAAABAAAABGAAAAKP///////wAAAAAAFwBhAGMAdABpAG8AbgAuAGQAZQBmAGEAdQBsAHQAYQBkAG0AaQBuAC4AcABoAHBJbG9jYmxvYgAAABAAAADMAAAAKP///////wAAAAAAEQBhAGMAdABpAG8AbgAuAGQAZQBsAGUAdABlAC4AcABoAHBJbG9jYmxvYgAAABAAAAFSAAAAKP///////wAAAAAADwBhAGMAdABpAG8AbgAuAGUAZABpAHQALgBwAGgAcElsb2NibG9iAAAAEAAAAdgAAAAo////////AAAAAAAGAGkAbQBhAGcAZQBzYndzcGJsb2IAAACwYnBsaXN0MDDWAQIDBAUGBwgICggMXFdpbmRvd0JvdW5kc1tTaG93U2lkZWJhcl1TaG93U3RhdHVzQmFyW1Nob3dQYXRoYmFyW1Nob3dUb29sYmFyXFNpZGViYXJXaWR0aF8QGXt7MjYxLCAzOTd9LCB7MTAxMSwgNTgzfX0JCQgJEMAIFSIuPEhUYX1+f4CBAAAAAAAAAQEAAAAAAAAADQAAAAAAAAAAAAAAAAAAAIMAAAAKAGkAbgBkAGUAeAAuAGgAdABtAGxJbG9jYmxvYgAAABAAAALkAAAAKP///////wAAAAAAAgBqAHNJbG9jYmxvYgAAABAAAABGAAAAmP///////wAAAAAAAgBqAHNkc2NsYm9vbAEAAAAEAGwAYQBuAGdJbG9jYmxvYgAAABAAAADMAAAAmP///////wAAAAAACQBsAGkAYgByAGEAcgBpAGUAc0lsb2NibG9iAAAAEAAAAVIAAACYAAAABP//AAAAAAAJAGwAaQBiAHIAYQByAGkAZQBzYndzcGJsb2IAAACyYnBsaXN0MDDWAQIDBAUGBwgICggMXFdpbmRvd0JvdW5kc1tTaG93U2lkZWJhcl1TaG93U3RhdHVzQmFyW1Nob3dQYXRoYmFyW1Nob3dUb29sYmFyXFNpZGViYXJXaWR0aF8QG3t7LTEwMTEsIDQ2Nn0sIHsxMDExLCA1OTB9fQkJCAkQwAgVIi48SFRhf4CBgoMAAAAAAAABAQAAAAAAAAANAAAAAAAAAAAAAAAAAAAAhQAAABQATQBDAEYAYQBjAHQAbwByAHkALgBtAG8AZAB1AGwAZQAuAHAAaABwSWxvY2Jsb2IAAAAQAAAB2AAAAJj///////8AAAAAABIAbQBlAHQAaABvAGQALgBpAG4AcwB0AGEAbABsAC4AcABoAHBJbG9jYmxvYgAAABAAAAJeAAAAmP///////wAAAAAAFABtAGUAdABoAG8AZAAuAHUAbgBpAG4AcwB0AGEAbABsAC4AcABoAHBJbG9jYmxvYgAAABAAAALkAAAAmP///////wAAAAAAEgBtAGUAdABoAG8AZAAuAHUAcABnAHIAYQBkAGUALgBwAGgAcElsb2NibG9iAAAAEAAAAEYAAAEI////////AAAAAAAHAHAAbAB1AGcAaQBuAHNJbG9jYmxvYgAAABAAAADMAAABCP///////wAAAAAABgBzAG0AYQByAHQAeUlsb2NibG9iAAAAEAAAAVIAAAEIAAAAA///AAAAAAAGAHMAbQBhAHIAdAB5YndzcGJsb2IAAACwYnBsaXN0MDDWAQIDBAUGBwgICggMXFdpbmRvd0JvdW5kc1tTaG93U2lkZWJhcl1TaG93U3RhdHVzQmFyW1Nob3dQYXRoYmFyW1Nob3dUb29sYmFyXFNpZGViYXJXaWR0aF8QGXt7NzY1LCAyNDh9LCB7MTAxMSwgNTgzfX0JCQgJEMAIFSIuPEhUYX1+f4CBAAAAAAAAAQEAAAAAAAAADQAAAAAAAAAAAAAAAAAAAIMAAAAJAHQAZQBtAHAAbABhAHQAZQBzSWxvY2Jsb2IAAAAQAAAB2AAAAQj///////8AAAAAAAkAdABlAG0AcABsAGEAdABlAHNid3NwYmxvYgAAAK9icGxpc3QwMNYBAgMEBQYHCAgKCAxcV2luZG93Qm91bmRzW1Nob3dTaWRlYmFyXVNob3dTdGF0dXNCYXJbU2hvd1BhdGhiYXJbU2hvd1Rvb2xiYXJcU2lkZWJhcldpZHRoXxAYe3s3MTgsIDkwfSwgezEwMTEsIDU5MH19CQkICRDACBUiLjxIVGF8fX5/gAAAAAAAAAEBAAAAAAAAAA0AAAAAAAAAAAAAAAAAAACCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAYCwAAAEUAABALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEERFNEQgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAgAAAAYAAAAAAAAAABAAAAgAAAAAEAAAEAAAAAAQAAAgAAAAABAAAEAAAAAAEAAAgAAAAAAAAAAAEAACAAAAAAAQAAQAAAAAABAACAAAAAAAEAAQAAAAAAAQACAAAAAAABAAQAAAAAAAEACAAAAAAAAQAQAAAAAAABACAAAAAAAAEAQAAAAAAAAQCAAAAAAAABAQAAAAAAAAECAAAAAAAAAQQAAAAAAAABCAAAAAAAAAEQAAAAAAAAASAAAAAAAAABQAAAAAAAAAAAcgB0AHlid3NwYmxvYgAAALBicGxpc3QwMNYBAgMEBQYHCAgKCAxcV2luZG93Qm91bmRzW1Nob3dTaWRlYmFyXVNob3dTdGF0dXNCYXJbU2hvd1BhdGhiYXJbU2hvd1Rvb2xiYXJcU2lkZWJhcldpZHRoXxAZe3s3NjUsIDI0OH0sIHsxMDExLCA1ODN9fQkJCAkQwAgVIi48SFRhfX5/gIEAAAAAAAABAQAAAAAAAAANAAAAAAAAAAAAAAAAAAAAgwAAAAkAdABlAG0AcABsAGEAdABlAHNJbG9jYmxvYgAAABAAAAHYAAABCP///////wAAAAAACQB0AGUAbQBwAGwAYQB0AGUAc2J3c3BibG9iAAAAr2JwbGlzdDAw1gECAwQFBgcICAoIDFxXaW5kb3dCb3VuZHNbU2hvd1NpZGViYXJdU2hvd1N0YXR1c0JhcltTaG93UGF0aGJhcltTaG93VG9vbGJhclxTaWRlYmFyV2lkdGhfEBh7ezcxOCwgOTB9LCB7MTAxMSwgNTkwfX0JCQgJEMAIFSIuPEhUYXx9fn+AAAAAAAAAAQEAAAAAAAAADQAAAAAAAAAAAAAAAAAAAIIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZiAoISR0aGlzLT5DaGVja0FjY2VzcygpKSB7CglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoKTsKfQoKJGMgPSBuZXcgTUNGQ3JpdGVyaWEoKTsKJGMtPmFkZEFzY2VuZGluZ09yZGVyQnlDb2x1bW4oJ21vZHVsZV9uYW1lJyk7CiRtb2R1bGVzID0gTUNGTW9kdWxlOjpkb1NlbGVjdCgkYyk7CiRyb3dzID0gYXJyYXkoKTsKZm9yZWFjaCAoJG1vZHVsZXMgYXMgJG1vZHVsZSkgewoJJHJvd3NbXSA9IGFycmF5KAoJCSd0aXRsZScgPT4gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdCcsICRyZXR1cm5pZCwgJG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpLCBhcnJheSgnbW9kdWxlX2lkJyA9PiAkbW9kdWxlLT5nZXRJZCgpKSwgJycsIGZhbHNlLCBmYWxzZSwgJ2NsYXNzPSJpdGVtbGluayInKSwKCQknbW9kdWxlX2ZyaWVuZGx5bmFtZScgPT4gJG1vZHVsZS0+Z2V0TW9kdWxlRnJpZW5kbHlOYW1lKCksCgkJJ2RlbGV0ZScgPT4gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGVsZXRlJywgJHJldHVybmlkLCAkdGhpcy0+RGlzcGxheUltYWdlKCdhcHBsaWNhdGlvbl9kZWxldGUucG5nJywgJ0RlbGV0ZScpLCBhcnJheSgnbW9kdWxlX2lkJyA9PiAkbW9kdWxlLT5nZXRJZCgpKSwgJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBtb2R1bGU/XG5cbihObyBmaWxlcyB3aWxsIGJlIGRlbGV0ZWQgYnV0IHRoZSBtb2R1bGUgd2lsbCBubyBsb25nZXIgYmUgZWRpdGFibGUuKScpLAoJCSdlZGl0JyA9PiAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0JywgJHJldHVybmlkLCAkdGhpcy0+RGlzcGxheUltYWdlKCdhcHBsaWNhdGlvbl9lZGl0LnBuZycsICdFZGl0JyksIGFycmF5KCdtb2R1bGVfaWQnID0+ICRtb2R1bGUtPmdldElkKCkpKSwKCQkncHVibGlzaCcgPT4gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAncHVibGlzaCcsICRyZXR1cm5pZCwgJHRoaXMtPkRpc3BsYXlJbWFnZSgnd2FuZC5wbmcnLCAnUHVibGlzaCcpLCBhcnJheSgnbW9kdWxlX2lkJyA9PiAkbW9kdWxlLT5nZXRJZCgpKSksCgkJJ3ZpZXcnID0+CgkJICAJJzxhIGhyZWY9Im1vZHVsZWludGVyZmFjZS5waHA/c3BfPScuJF9SRVFVRVNUWydzcF8nXS4nJm1vZHVsZT0nLiRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKS4nIj4nLgoJCQkkdGhpcy0+RGlzcGxheUltYWdlKCdhcHBsaWNhdGlvbl9ob21lLnBuZycsICdWaWV3JykKCQkJLic8L2E+JywKCQknZXhwb3J0JyA9PiAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdtb2R1bGVfZXhwb3J0JywgJHJldHVybmlkLCAkdGhpcy0+RGlzcGxheUltYWdlKCdhcHBsaWNhdGlvbl9nZXQucG5nJywgJ0V4cG9ydCcpLCBhcnJheSgnbW9kdWxlX2lkJyA9PiAkbW9kdWxlLT5nZXRJZCgpLCdkaXNhYmxlX3RoZW1lJyA9PiAndHJ1ZScpKSwKCSk7Cn0KCiR0aGlzLT5zbWFydHktPmFzc2lnbigncm93cycsICRyb3dzKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhZGQnLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0JywgJycsICdDcmVhdGUgbmV3IG1vZHVsZScpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhZGRfaWNvbicsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXQnLCAnJywgJHRoaXMtPkRpc3BsYXlJbWFnZSgnYXBwbGljYXRpb25fYWRkLnBuZycsICR0aGlzLT5MYW5nKCd0aXRsZV9jcmVhdGVfbW9kdWxlJykpKSk7CgokZm9ybSA9IG5ldyBDTVNGb3JtKCR0aGlzLT5HZXROYW1lKCksICRpZCwgJ21vZHVsZV9pbXBvcnQnLCRyZXR1cm5pZCk7CiRmb3JtLT5zZXRCdXR0b25zKGFycmF5KCdzdWJtaXQnKSk7CiRmb3JtLT5zZXRMYWJlbCgnc3VibWl0JywgJHRoaXMtPmxhbmcoJ2ltcG9ydCcpKTsKJGZvcm0tPnNldEZpZWxkc2V0KCR0aGlzLT5sYW5nKCdpbXBvcnRfbW9kdWxlJykpOwokZm9ybS0+Z2V0RmllbGRzZXQoJHRoaXMtPmxhbmcoJ2ltcG9ydF9tb2R1bGUnKSktPnNldFdpZGdldCgnbW9kdWxlX25hbWUnLCAndGV4dCcsIGFycmF5KCd0aXBzJyA9PiAkdGhpcy0+bGFuZygnbGVhdmVfZW1wdHknKSwgJ3NpemUnID0+IDQwKSk7CiRmb3JtLT5nZXRGaWVsZHNldCgkdGhpcy0+bGFuZygnaW1wb3J0X21vZHVsZScpKS0+c2V0V2lkZ2V0KCd4bWxmaWxlJywgJ2ZpbGUnKTsKCgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm0nLCAkZm9ybSk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZGVmYXVsdGFkbWluLnRwbCcpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.delete.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYgKCEkdGhpcy0+Q2hlY2tBY2Nlc3MoKSkgewoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCk7Cn0KCmlmIChpc3NldCgkcGFyYW1zWydtb2R1bGVfaWQnXSkgJiYgIWVtcHR5KCRwYXJhbXNbJ21vZHVsZV9pZCddKSkgewoJJG1vZHVsZSA9IE1DRk1vZHVsZTo6Z2V0QnlJZCgkcGFyYW1zWydtb2R1bGVfaWQnXSk7CgkkbW9kdWxlLT5kZWxldGUoKTsKfQoKcmV0dXJuICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQpOw==]]></data>
	</file>
	<file>
	  <filename>/action.delete_action.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYgKCEkdGhpcy0+Q2hlY2tBY2Nlc3MoKSkgewoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCk7Cn0KCmlmIChpc3NldCgkcGFyYW1zWydtb2R1bGVfYWN0aW9uX2lkJ10pICYmICFlbXB0eSgkcGFyYW1zWydtb2R1bGVfYWN0aW9uX2lkJ10pKSB7CgkkbW9kdWxlX2FjdGlvbiA9IE1DRk1vZHVsZUFjdGlvbjo6cmV0cmlldmVCeVBrKCRwYXJhbXNbJ21vZHVsZV9hY3Rpb25faWQnXSk7CgkkbW9kdWxlX2FjdGlvbi0+ZGVsZXRlKCk7CgkKCXJldHVybiAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZWRpdCcsICRyZXR1cm5pZCwgYXJyYXkoJ21vZHVsZV9pZCcgPT4gJG1vZHVsZV9hY3Rpb24tPm1vZHVsZV9pZCwnYWN0aXZlX3RhYicgPT4gJ2FjdGlvbnMnKSk7Cn0KCnJldHVybiAkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgnYWN0aXZlX3RhYicgPT4gJ2FjdGlvbnMnKSk7]]></data>
	</file>
	<file>
	  <filename>/action.edit.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZiAoISR0aGlzLT5DaGVja0FjY2VzcygpKSB7CglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoKTsKfQoKLyoKCU1vZHVsZSBFZGl0aW9uCiovCgovLyBUYWJzCgokdGFicyA9IGFycmF5ICgKCSdtYWluJyA9PiBmYWxzZSwKLy8JJ2ZpZWxkcycgPT4gZmFsc2UsCgknYWN0aW9ucycgPT4gZmFsc2UsCgknbG9naWMnID0+IGZhbHNlLAoJJ29wdGlvbnMnID0+IGZhbHNlCik7CgppZiAoaXNzZXQoJHBhcmFtc1snYWN0aXZlX3RhYiddKSkKewoJJHRhYnNbJHBhcmFtc1snYWN0aXZlX3RhYiddXSA9IHRydWU7Cn0KCiR0aGlzLT5zbWFydHktPmFzc2lnbigndGFiX2hlYWRlcnMnLCR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKS4KCgkkdGhpcy0+U2V0VGFiSGVhZGVyKCdtYWluJywkdGhpcy0+TGFuZygnbWFpbicpLCAkdGFic1snbWFpbiddKS4KLy8JJHRoaXMtPlNldFRhYkhlYWRlcignZmllbGRzJywkdGhpcy0+TGFuZygnZmllbGRzJyksICR0YWJzWydmaWVsZHMnXSkuCgkkdGhpcy0+U2V0VGFiSGVhZGVyKCdhY3Rpb25zJywkdGhpcy0+TGFuZygnYWN0aW9ucycpLCAkdGFic1snYWN0aW9ucyddKS4KCSR0aGlzLT5TZXRUYWJIZWFkZXIoJ2xvZ2ljJywkdGhpcy0+TGFuZygnbG9naWMnKSwgJHRhYnNbJ2xvZ2ljJ10pLgoJJHRoaXMtPlNldFRhYkhlYWRlcignb3B0aW9ucycsJHRoaXMtPkxhbmcoJ29wdGlvbnMnKSwgJHRhYnNbJ29wdGlvbnMnXSkuCgkKJHRoaXMtPkVuZFRhYkhlYWRlcnMoKS4kdGhpcy0+U3RhcnRUYWJDb250ZW50KCkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9tYWluX3RhYicsJHRoaXMtPlN0YXJ0VGFiKCdtYWluJykpOwovLyR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfZmllbGRzX3RhYicsJHRoaXMtPlN0YXJ0VGFiKCdmaWVsZHMnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfYWN0aW9uc190YWInLCR0aGlzLT5TdGFydFRhYignYWN0aW9ucycpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9sb2dpY190YWInLCR0aGlzLT5TdGFydFRhYignbG9naWMnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfb3B0aW9uc190YWInLCR0aGlzLT5TdGFydFRhYignb3B0aW9ucycpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignZW5kX3RhYicsJHRoaXMtPkVuZFRhYigpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0YWJfZm9vdGVycycsJHRoaXMtPkVuZFRhYkNvbnRlbnQoKSk7CgovLyBMb2dpYwoKaWYgKGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSkgewoJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCk7CglleGl0Owp9CgppZiAoaXNzZXQoJHBhcmFtc1snbW9kdWxlX2lkJ10pICYmICFlbXB0eSgkcGFyYW1zWydtb2R1bGVfaWQnXSkpIHsKCSRtb2R1bGUgPSBNQ0ZNb2R1bGU6OnJldHJpZXZlQnlQaygkcGFyYW1zWydtb2R1bGVfaWQnXSk7Cn0gZWxzZSB7CgkkbW9kdWxlID0gbmV3IE1DRk1vZHVsZSgpOwoJJG1vZHVsZS0+c2V0UGFyZW50TW9kdWxlKDApOwp9CgoKaWYgKGlzc2V0KCRwYXJhbXNbJ21vdmVfdXAnXSkgJiYgaXNfYXJyYXkoJHBhcmFtc1snbW92ZV91cCddKSkKewoJZm9yZWFjaCgkcGFyYW1zWydtb3ZlX3VwJ10gYXMgJGtleSA9PiAkdmFsdWUpCgl7CQoJCSRtb2R1bGUtPm9yZGVyRXh0cmFGaWVsZHMoJGtleSwgJ3VwJyk7CQoJCSRtb2R1bGUtPnNhdmUoKTsKCX0KfQoKaWYgKGlzc2V0KCRwYXJhbXNbJ21vdmVfZG93biddKSAmJiBpc19hcnJheSgkcGFyYW1zWydtb3ZlX2Rvd24nXSkpCnsKCWZvcmVhY2goJHBhcmFtc1snbW92ZV9kb3duJ10gYXMgJGtleSA9PiAkdmFsdWUpCgl7CQoJCSRtb2R1bGUtPm9yZGVyRXh0cmFGaWVsZHMoJGtleSwgJ2Rvd24nKTsJCgkJJG1vZHVsZS0+c2F2ZSgpOwoJfQp9CgppZiAoaXNzZXQoJHBhcmFtc1sncHVibGlzaCddKSB8fCBpc3NldCgkcGFyYW1zWydzYXZlJ10pICkgewoJJG1vZHVsZS0+cG9wdWxhdGVGcm9tQXJyYXkoJHBhcmFtcyk7CglpZiAoIWlzc2V0KCRwYXJhbXNbJ3Nob3dfbW9kdWxlJ10pKQoJCXsKCQkJLy92YXJfZHVtcCgkcGFyYW1zKTsKCQkJJG1vZHVsZS0+c2V0U2hvd01vZHVsZSgwKTsKCQl9CQoJCWlmICghaXNzZXQoJHBhcmFtc1snaXNfdXNlcl9tb2R1bGUnXSkpCgkJewoJCQkvL3Zhcl9kdW1wKCRwYXJhbXMpOwoJCQkkbW9kdWxlLT5zZXRJc1VzZXJNb2R1bGUoMCk7CgkJfQoJJG1vZHVsZS0+c2F2ZSgpOwoJaWYgKGlzc2V0KCRwYXJhbXNbJ3B1Ymxpc2gnXSkpCgl7CgkJJG1vZHVsZS0+cHVibGlzaCgpOwoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQpOwoJCWV4aXQ7CQoJfQp9CgokYyA9IG5ldyBNQ0ZDcml0ZXJpYSgpOwokYy0+YWRkKCdwYXJlbnRfbW9kdWxlJywgMCk7CmlmIChpc3NldCgkcGFyYW1zWydtb2R1bGVfaWQnXSkgJiYgIWVtcHR5KCRwYXJhbXNbJ21vZHVsZV9pZCddKSkgewoJJGMtPmFkZCgnaWQnLCAkbW9kdWxlLT5nZXRJZCgpLCBNQ0ZDcml0ZXJpYTo6Tk9UX0VRVUFMKTsKfQokbW9kdWxlcyA9IE1DRk1vZHVsZTo6ZG9TZWxlY3QoJGMpOwokbW9kdWxlc19zZWxlY3QgPSBhcnJheSgnJyA9PiAwKTsKZm9yZWFjaCAoJG1vZHVsZXMgYXMgJG1vZCkgewoJJG1vZHVsZXNfc2VsZWN0WyRtb2QtPmdldE1vZHVsZUZyaWVuZGx5TmFtZSgpXSA9ICRtb2QtPmdldElkKCk7Cn0KCiRmaWVsZF90eXBlcyA9ICRtb2R1bGUtPmdldEZpZWxkVHlwZXMoKTsKJGZpZWxkX3R5cGVzX3dpdGhfb3B0aW9ucyA9IGFycmF5KCk7CmZvcmVhY2ggKCRmaWVsZF90eXBlcyBhcyAkZmllbGRfdHlwZSkgewoJaWYgKCRmaWVsZF90eXBlWydvcHRpb25zJ10pIHsKCQkkZmllbGRfdHlwZXNfd2l0aF9vcHRpb25zW10gPSAkZmllbGRfdHlwZVsndHlwZSddOwoJfQp9CgokZmlsdGVyX3R5cGVzID0gJG1vZHVsZS0+Z2V0RmlsdGVyVHlwZXMoKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignbW9kdWxlX2lkJywgJGlkKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmb3JtX3N0YXJ0JywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdlZGl0JywgJHJldHVybmlkLCAncG9zdCcpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9tb2R1bGVfaWQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCAnbW9kdWxlX2lkJywgJG1vZHVsZS0+Z2V0SWQoKSkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X21vZHVsZV9wYXJlbnQnLCAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdwYXJlbnRfbW9kdWxlJywgJG1vZHVsZXNfc2VsZWN0LCAtMSwgJG1vZHVsZS0+Z2V0UGFyZW50TW9kdWxlKCkpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfYWRtaW5fc2VjdGlvbicsICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKAoJJGlkLAoJJ2FkbWluX3NlY3Rpb24nLAoJYXJyYXkoCgkJJ0NvbnRlbnQnID0+ICdjb250ZW50JywKCQknTGF5b3V0JyA9PiAnbGF5b3V0JywKCQknVXNlcnMgJiBHcm91cHMnID0+ICd1c2Vyc2dyb3VwcycsCgkJJ0V4dGVudGlvbnMnID0+ICdleHRlbnNpb25zJywKCQknU2l0ZSBBZG1pbicgPT4gJ3NpdGVhZG1pbicKCSksCgknLTEnLAoJJG1vZHVsZS0+Z2V0QWRtaW5TZWN0aW9uKCkKCSkpOwoKCiR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfbW9kdWxlX2ZyaWVuZGx5bmFtZScsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnbW9kdWxlX2ZyaWVuZGx5bmFtZScsICRtb2R1bGUtPmdldE1vZHVsZUZyaWVuZGx5bmFtZSgpLCA1MCkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NyZWF0ZWRfYnknLCAkZ0Ntcy0+R2V0VXNlck9wZXJhdGlvbnMoKS0+TG9hZFVzZXJCeUlEKCRtb2R1bGUtPmdldENyZWF0ZWRCeSgpKS0+dXNlcm5hbWUpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NyZWF0ZWRfYXQnLCAkbW9kdWxlLT5nZXRDcmVhdGVkQXQoKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndXBkYXRlZF9ieScsICRnQ21zLT5HZXRVc2VyT3BlcmF0aW9ucygpLT5Mb2FkVXNlckJ5SUQoJG1vZHVsZS0+Z2V0VXBkYXRlZEJ5KCkpLT51c2VybmFtZSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndXBkYXRlZF9hdCcsICRtb2R1bGUtPmdldFVwZGF0ZWRBdCgpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdleHRyYV9maWVsZHMnLCAkbW9kdWxlLT5nZXRFeHRyYUZpZWxkcygpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmaWx0ZXJzJywgJG1vZHVsZS0+Z2V0RmlsdGVycygpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtb2R1bGVfbG9naWMnLCAkdGhpcy0+Q3JlYXRlVGV4dEFyZWEodHJ1ZSwgJGlkLCAkbW9kdWxlLT5nZXRNb2R1bGVMb2dpYygpLCAnbW9kdWxlX2xvZ2ljJywgJ3BhZ2ViaWd0ZXh0YXJlYScsICcnLCcnLCAnJywgOTAsIDE1LCAnRWRpdEFyZWEnKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfc2hvd19tb2R1bGUnLCAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdzaG93X21vZHVsZScsICcxJywgaXNfbnVsbCgkbW9kdWxlLT5nZXRTaG93TW9kdWxlKCkpPzE6JG1vZHVsZS0+Z2V0U2hvd01vZHVsZSgpKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfaXNfdXNlcl9tb2R1bGUnLCAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdpc191c2VyX21vZHVsZScsICcxJywgJG1vZHVsZS0+Z2V0SXNVc2VyTW9kdWxlKCkpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfaXNfcHJvdGVjdGVkJywgJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnaXNfcHJvdGVjdGVkJywgJzEnLCAkbW9kdWxlLT5nZXRJc1Byb3RlY3RlZCgpKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfZmlsZXNfcGF0aCcsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZmlsZXNfcGF0aCcsICRtb2R1bGUtPmdldEZpbGVzUGF0aCgpLCA1MCkpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwdWJsaXNoX2J1dHRvbicsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdwdWJsaXNoJywgJ1B1Ymxpc2gnKSk7IAokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3NhdmVfYnV0dG9uJywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3NhdmUnLCAnU2F2ZScpKTsgCiR0aGlzLT5zbWFydHktPmFzc2lnbignY2FuY2VsX2J1dHRvbicsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdjYW5jZWwnLCAnQ2FuY2VsJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ZpZWxkX3R5cGVzJywgJGZpZWxkX3R5cGVzKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmaWVsZF90eXBlc193aXRoX29wdGlvbnMnLCAkZmllbGRfdHlwZXNfd2l0aF9vcHRpb25zKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmaWx0ZXJfdHlwZXMnLCAkZmlsdGVyX3R5cGVzKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignbW92ZV91cCcsICR0aGlzLT5nZXRJbWFnZSgnYXJyb3dfdXAucG5nJykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21vdmVfZG93bicsICR0aGlzLT5nZXRJbWFnZSgnYXJyb3dfZG93bi5wbmcnKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3JlbW92ZV9pY29uJywkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2RlbGV0ZS5naWYnLCAkdGhpcy0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSk7Ci8vJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd1cF9pY29uJywkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL3VwLmdpZicsJycsICcnLCAnJywgJ3N5c3RlbWljb24nKSk7Ci8vJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdkb3duX2ljb24nLCRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZG93bi5naWYnLCAkdGhpcy0+TGFuZygnbW92ZV9kb3duJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSk7CgovLyBBY3Rpb25zCiR0aGlzLT5zbWFydHktPmFzc2lnbignYWRkX2FjdGlvbl91cmwnLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdtYW5hZ2VfYWN0aW9uJywgJHJldHVybmlkLCAnJywgYXJyYXkoJ21vZHVsZV9pZCcgPT4gJHBhcmFtc1snbW9kdWxlX2lkJ10pLCcnLHRydWUsZmFsc2UpKTsKJGFjdGlvbnMgPSBNQ0ZNb2R1bGVBY3Rpb246OmRvU2VsZWN0KGFycmF5KCd3aGVyZScgPT4gYXJyYXkoJ21vZHVsZV9pZCcgPT4gICRwYXJhbXNbJ21vZHVsZV9pZCddKSkpOwpmb3JlYWNoKCRhY3Rpb25zIGFzICRhY3Rpb24pCnsKICRhY3Rpb24tPmVkaXRfdXJsID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnbWFuYWdlX2FjdGlvbicsICRyZXR1cm5pZCwgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0aGlzLT5MYW5nKCdlZGl0JyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ21vZHVsZV9hY3Rpb25faWQnID0+ICRhY3Rpb24tPmdldElkKCkpKTsKCiAkYWN0aW9uLT5kZWxldGVfdXJsID0gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZGVsZXRlX2FjdGlvbicsICRyZXR1cm5pZCwgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCdtb2R1bGVfYWN0aW9uX2lkJyA9PiAkYWN0aW9uLT5nZXRJZCgpKSk7CgoJaWYgKCRhY3Rpb24tPmlzX3B1YmxpYyA9PSAxKQoJewoJCSRhY3Rpb24tPmlzX3B1YmxpY19pY29uID0gJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS90cnVlLmdpZicsICcnLCAnJywgJycsICdzeXN0ZW1pY29uJyk7Cgl9CgllbHNlCgl7CgkJJGFjdGlvbi0+aXNfcHVibGljX2ljb24gPSAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2ZhbHNlLmdpZicsICcnLCAnJywgJycsICdzeXN0ZW1pY29uJyk7Cgl9Cn0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhY3Rpb25zJywgJGFjdGlvbnMpOwoKLy8gVGVtcGxhdGVzOiBSZXN0b3JlCgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RlbXBsYXRlc19yZXN0b3JlX3VybCcsICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3RlbXBsYXRlc19yZXN0b3JlJywgJHJldHVybmlkLCAnJywgYXJyYXkoJ21vZHVsZV9pZCcgPT4gJHBhcmFtc1snbW9kdWxlX2lkJ10pLCcnLHRydWUsZmFsc2UpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdC50cGwnKTsKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/action.manage_action.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CmlmICghJHRoaXMtPkNoZWNrQWNjZXNzKCkpIHsKCXJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgpOwp9CgppZiAoaXNzZXQoJHBhcmFtc1snbW9kdWxlX2FjdGlvbl9pZCddKSAmJiAkcGFyYW1zWydtb2R1bGVfYWN0aW9uX2lkJ10gIT0gJycpCnsKCSRhY3Rpb24gPSBNQ0ZNb2R1bGVBY3Rpb246OnJldHJpZXZlQnlQaygkcGFyYW1zWydtb2R1bGVfYWN0aW9uX2lkJ10pOwp9CgppZiAoKCFpc3NldCgkYWN0aW9uKSkgfHwgaXNfbnVsbCgkYWN0aW9uKSkKewoJJGFjdGlvbiA9IG5ldyBNQ0ZNb2R1bGVBY3Rpb24oKTsKCSRhY3Rpb24tPm1vZHVsZV9pZCA9ICRwYXJhbXNbJ21vZHVsZV9pZCddOwp9CgokZm9ybSA9IG5ldyBDTVNGb3JtKCR0aGlzLT5HZXROYW1lKCksICRpZCwgJ21hbmFnZV9hY3Rpb24nLCAkcmV0dXJuaWQpOwokZm9ybS0+c2V0QnV0dG9ucyhhcnJheSgnc3VibWl0JywnYXBwbHknLCdjYW5jZWwnKSk7CgppZiAoJGZvcm0tPmlzQ2FuY2VsbGVkKCkpCnsKCXJldHVybiAkdGhpcy0+UmVkaXJlY3QoJGlkLCdlZGl0JywkcmV0dXJuaWQsYXJyYXkoJ21vZHVsZV9pZCcgPT4gJGFjdGlvbi0+bW9kdWxlX2lkLCdhY3RpdmVfdGFiJyA9PiAnYWN0aW9ucycpKTsKfQoKJGZvcm0tPnNldFdpZGdldCgnbW9kdWxlX2FjdGlvbl9pZCcsICdoaWRkZW4nLCBhcnJheSgnb2JqZWN0JyA9PiAmJGFjdGlvbiwgJ2ZpZWxkX25hbWUnID0+ICdpZCcsICdnZXRfbWV0aG9kJyA9PiAnZ2V0SWQnKSk7CiRmb3JtLT5zZXRXaWRnZXQoJ21vZHVsZV9pZCcsICdoaWRkZW4nLCBhcnJheSgnb2JqZWN0JyA9PiAmJGFjdGlvbikpOwoKJGZvcm0tPnNldFdpZGdldCgnbmFtZScsICd0ZXh0JywgYXJyYXkoJ29iamVjdCcgPT4gJiRhY3Rpb24sICd2YWxpZGF0b3JzJyA9PiBhcnJheSgnbm90X2VtcHR5JyA9PiB0cnVlKSkpOwokZm9ybS0+c2V0V2lkZ2V0KCdjb2RlJywgJ2NvZGVhcmVhJywgYXJyYXkoJ29iamVjdCcgPT4gJiRhY3Rpb24pKTsKCiRmb3JtLT5zZXRXaWRnZXQoJ2lzX3B1YmxpYycsICdjaGVja2JveCcsIGFycmF5KCdvYmplY3QnID0+ICYkYWN0aW9uKSk7CiRmb3JtLT5zZXRXaWRnZXQoJ2hhdmVfcGVybWlzc2lvbicsICdjaGVja2JveCcsIGFycmF5KCdvYmplY3QnID0+ICYkYWN0aW9uKSk7CgppZigkZm9ybS0+aXNQb3N0ZWQoKSkKewoJJGZvcm0tPnByb2Nlc3MoKTsKCWlmICghJGZvcm0tPmhhc0Vycm9ycygpKQoJewoJCSRhY3Rpb24tPnNhdmUoKTsKCQkKCQlpZiAoJGZvcm0tPmlzU3VibWl0dGVkKCkpCgkJewoJCQlyZXR1cm4gJHRoaXMtPlJlZGlyZWN0KCRpZCwnZWRpdCcsJHJldHVybmlkLGFycmF5KCdtb2R1bGVfaWQnID0+ICRhY3Rpb24tPm1vZHVsZV9pZCwnYWN0aXZlX3RhYicgPT4gJ2FjdGlvbnMnKSk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiAkdGhpcy0+UmVkaXJlY3QoJGlkLCdtYW5hZ2VfYWN0aW9uJywkcmV0dXJuaWQsIGFycmF5KCdtb2R1bGVfYWN0aW9uX2lkJyA9PiAkYWN0aW9uLT5nZXRJZCgpLCdhY3RpdmVfdGFiJyA9PiAnYWN0aW9ucycpKTsKCQl9Cgl9CgkKfQoKZWNobyAkZm9ybS0+cmVuZGVyKCk7]]></data>
	</file>
	<file>
	  <filename>/action.module_export.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CmlmICghJHRoaXMtPkNoZWNrQWNjZXNzKCkpIHsKCXJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgpOwp9CgppZiAoaXNzZXQoJHBhcmFtc1snbW9kdWxlX2lkJ10pKQp7CgkkbW9kdWxlID0gTUNGTW9kdWxlOjpyZXRyaWV2ZUJ5UGsoJHBhcmFtc1snbW9kdWxlX2lkJ10pOwoJCgkkeG1sc3RyID0gIjw/eG1sIHZlcnNpb249JzEuMCcgPz5cbjxNb2R1bGU+PC9Nb2R1bGU+IjsKCSR4bWwgPSBuZXcgU2ltcGxlWE1MRWxlbWVudCgkeG1sc3RyKTsKCQoJLy8gVEVNUExBVEVTCgkvLyBGaXJzdCwgd2UgY2hlY2sgaWYgdGhlIG1vZHVsZSBpcyBpbnN0YWxsZWQKCWlmIChpc3NldCgkZ0Ntcy0+bW9kdWxlc1skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCldKSkKCXsKCQkkbW9kID0gJiRnQ21zLT5tb2R1bGVzWyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKV1bJ29iamVjdCddOwoJCSR0ZW1wbGF0ZXNfbGlzdCA9ICRtb2QtPkxpc3RUZW1wbGF0ZXMoKTsKCQkkdGVtcGxhdGVzICA9IGFycmF5KCk7CgkJZm9yZWFjaCgkdGVtcGxhdGVzX2xpc3QgYXMgJHRlbXBsYXRlKQoJCXsKCQkJJHRlbXBsYXRlX2RhdGEgPSAkbW9kLT5nZXRUZW1wbGF0ZSgkdGVtcGxhdGUpOwoJCQkkdGVtcGxhdGVzW10gPSBhcnJheSgKCQkJCSduYW1lJyA9PiAkdGVtcGxhdGUsCgkJCQknZGF0YScgPT4gJHRlbXBsYXRlX2RhdGEsCgkJCQknaXNfZGVmYXVsdCcgPT4gICRtb2QtPmlzRGVmYXVsdFRlbXBsYXRlKCR0ZW1wbGF0ZSkKCQkJKTsKCQl9CgkJJG1vZHVsZS0+c2V0VGVtcGxhdGVzRGF0YShiYXNlNjRfZW5jb2RlKHNlcmlhbGl6ZSgkdGVtcGxhdGVzKSkpOwoJCSRtb2R1bGUtPnNhdmUoKTsKCX0KCQoJLy8gTW9kdWxlCgkKCSR4bWwtPmFkZENoaWxkKCdtb2R1bGVfbmFtZScsICRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKSk7CiAgJHhtbC0+YWRkQ2hpbGQoJ21vZHVsZV9jb2RlJywgYmFzZTY0X2VuY29kZShzZXJpYWxpemUoJG1vZHVsZSkpKTsKCgkvLyBBQ1RJT05TCgkkYWN0aW9ucyA9IE1DRk1vZHVsZUFjdGlvbjo6ZG9TZWxlY3QoYXJyYXkoJ3doZXJlJyA9PiBhcnJheSgnbW9kdWxlX2lkJyA9PiAkcGFyYW1zWydtb2R1bGVfaWQnXSkpKTsJCgkkZGF0YXMgPSBhcnJheSgpOwoJZm9yZWFjaCgkYWN0aW9ucyBhcyAkYWN0aW9uKQoJewoJCSRkYXRhc1tdID0gYXJyYXkoCgkJCSduYW1lJyA9PiAkYWN0aW9uLT5uYW1lLAoJCQknY29kZScgPT4gJGFjdGlvbi0+Y29kZSwKCQkJJ2lzX3B1YmxpYycgPT4gJGFjdGlvbi0+aXNfcHVibGljLAoJCQknaGF2ZV9wZXJtaXNzaW9uJyA9PiAkYWN0aW9uLT5oYXZlX3Blcm1pc3Npb24sCgkJCSk7Cgl9CgkkeG1sLT5hZGRDaGlsZCgnbW9kdWxlX2FjdGlvbnMnLCBiYXNlNjRfZW5jb2RlKHNlcmlhbGl6ZSgkZGF0YXMpKSk7CgoJJHhtbHN0cmluZyA9ICAkeG1sLT5hc1hNTCgpOwkKCQoJaGVhZGVyKCdDb250ZW50LURlc2NyaXB0aW9uOiBGaWxlIFRyYW5zZmVyJyk7CgloZWFkZXIoIkNvbnRlbnQtdHlwZTogdGV4dC94bWwiKTsKCWhlYWRlcignQ29udGVudC1MZW5ndGg6ICcgLiBzdHJsZW4oJHhtbHN0cmluZykpOwoJaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZT0nIC4kbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCkgLiAnLScgLiAkbW9kdWxlLT5nZXRNb2R1bGVWZXJzaW9uKCkgLiAnLnhtbCcpOwoJZWNobyAkeG1sc3RyaW5nOwoJZXhpdDsKfQ==]]></data>
	</file>
	<file>
	  <filename>/action.module_import.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CmlmICghJHRoaXMtPkNoZWNrQWNjZXNzKCkpIHsKCXJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgpOwp9CgppZiAoaXNfdXBsb2FkZWRfZmlsZSgkX0ZJTEVTWyRpZC4neG1sZmlsZSddWyd0bXBfbmFtZSddKSkKewoJJHhtbF9jb250ZW50ID0gZmlsZV9nZXRfY29udGVudHMoJF9GSUxFU1skaWQuJ3htbGZpbGUnXVsndG1wX25hbWUnXSk7CgkKCSR4bWwgPSBzaW1wbGV4bWxfbG9hZF9zdHJpbmcoJHhtbF9jb250ZW50KTsKCQoJaWYgKGlzc2V0KCRwYXJhbXNbJ21vZHVsZV9uYW1lJ10pICYmICRwYXJhbXNbJ21vZHVsZV9uYW1lJ10gIT0gJycpCgl7CgkJJG5hbWUgPSAkcGFyYW1zWydtb2R1bGVfbmFtZSddOwoJfQoJZWxzZQoJewoJCSRuYW1lID0gJycgLiAkeG1sLT5tb2R1bGVfbmFtZTsKCX0KCQoJJG1vZHVsZSA9IHVuc2VyaWFsaXplKGJhc2U2NF9kZWNvZGUoJHhtbC0+bW9kdWxlX2NvZGUpKTsKCgkkbW9kdWxlLT5zZXRJZChudWxsKTsKCSRtb2R1bGUtPnNldE1vZHVsZU5hbWUobnVsbCk7CgkkbW9kdWxlLT5zZXRNb2R1bGVGcmllbmRseU5hbWUoJG5hbWUpOwoJJG1vZHVsZS0+c2F2ZSgpOwoJCglpZihpc3NldCgkeG1sLT5tb2R1bGVfYWN0aW9ucykpCgl7CgkJJGFjdGlvbnMgPSB1bnNlcmlhbGl6ZShiYXNlNjRfZGVjb2RlKCR4bWwtPm1vZHVsZV9hY3Rpb25zKSk7CgkJaWYgKGlzX2FycmF5KCRhY3Rpb25zKSkKCQl7CgkJCWZvcmVhY2goJGFjdGlvbnMgYXMgJGFjdGlvbikKCQkJewoJCQkJJG5ld19hY3Rpb24gPSAgbmV3IE1DRk1vZHVsZUFjdGlvbigpOwoJCQkJJG5ld19hY3Rpb24tPm1vZHVsZV9pZCA9ICRtb2R1bGUtPmdldElkKCk7CgkJCQkkbmV3X2FjdGlvbi0+bmFtZSA9ICRhY3Rpb25bJ25hbWUnXTsKCQkJCSRuZXdfYWN0aW9uLT5jb2RlID0gJGFjdGlvblsnY29kZSddOwoJCQkJJG5ld19hY3Rpb24tPmlzX3B1YmxpYyA9ICRhY3Rpb25bJ2lzX3B1YmxpYyddOwoJCQkJJG5ld19hY3Rpb24tPmhhdmVfcGVybWlzc2lvbiA9ICRhY3Rpb25bJ2hhdmVfcGVybWlzc2lvbiddOwoJCQkJJG5ld19hY3Rpb24tPnNhdmUoKTsKCQkJfQoJCX0KCX0JCn0KCgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkKTs=]]></data>
	</file>
	<file>
	  <filename>/action.publish.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYgKCEkdGhpcy0+Q2hlY2tBY2Nlc3MoKSkgewoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCk7Cn0KCmlmIChpc3NldCgkcGFyYW1zWydtb2R1bGVfaWQnXSkgJiYgIWVtcHR5KCRwYXJhbXNbJ21vZHVsZV9pZCddKSkgCnsKCSRtb2R1bGUgPSBNQ0ZNb2R1bGU6OnJldHJpZXZlQnlQaygkcGFyYW1zWydtb2R1bGVfaWQnXSk7CglpZihpc19vYmplY3QoJG1vZHVsZSkpCgl7CQkKCQkkbW9kdWxlLT5mb3JjZVVwZGF0ZSgpOwoJCSRtb2R1bGUtPnB1Ymxpc2goKTsJCQoJCSR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQpOwoJfQp9CmVjaG8gJzxwPicgLiAkdGhpcy0+bGFuZygnZXJyb3Jfb2NjdXJlZF9wdWJsaXNoaW5nJykgLiAnPC9wPic7IA==]]></data>
	</file>
	<file>
	  <filename>/action.templates_restore.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CmlmICghJHRoaXMtPkNoZWNrQWNjZXNzKCkpIHsKCXJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgpOwp9CgppZiAoaXNzZXQoJHBhcmFtc1snbW9kdWxlX2lkJ10pICYmICRwYXJhbXNbJ21vZHVsZV9pZCddICE9ICcnKQp7CgkkbW9kdWxlID0gTUNGTW9kdWxlOjpyZXRyaWV2ZUJ5UGsoJHBhcmFtc1snbW9kdWxlX2lkJ10pOwp9CgovLyBURU1QTEFURVMKLy8gRmlyc3QsIHdlIGNoZWNrIGlmIHRoZSBtb2R1bGUgaXMgaW5zdGFsbGVkCmlmIChpc3NldCgkZ0Ntcy0+bW9kdWxlc1skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCldKSkKewoJJG1vZCA9ICYkZ0Ntcy0+bW9kdWxlc1skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCldWydvYmplY3QnXTsKCSR0ZW1wbGF0ZXMgPSB1bnNlcmlhbGl6ZShiYXNlNjRfZGVjb2RlKCRtb2R1bGUtPmdldFRlbXBsYXRlc0RhdGEoKSkpOwoJCglmb3JlYWNoKCR0ZW1wbGF0ZXMgYXMgJHRlbXBsYXRlKQoJewoJCSRtb2QtPnNldFRlbXBsYXRlKCR0ZW1wbGF0ZVsnbmFtZSddLCAkdGVtcGxhdGVbJ2RhdGEnXSk7CgkJaWYoJHRlbXBsYXRlWydpc19kZWZhdWx0J10gIT09IGZhbHNlKQoJCXsKCQkJCSRtb2QtPkFkZERlZmF1bHRUZW1wbGF0ZSgkdGVtcGxhdGVbJ2lzX2RlZmF1bHQnXSwgJHRlbXBsYXRlWyduYW1lJ10pOwoJCX0KCX0KfQoKcmV0dXJuICR0aGlzLT5SZWRpcmVjdCgkaWQsJ2VkaXQnLCRyZXR1cm5pZCxhcnJheSgnbW9kdWxlX2lkJyA9PiAkcGFyYW1zWydtb2R1bGVfaWQnXSkpOw==]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAAAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAABAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAAAJQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAYAAAAAAAAAABAAAAgAAAAAEAAAEAAAAAAQAAAgAAAAABAAAEAAAAAAIAAAgAAAAYAAAAAAAAAAABAAAgAAAAAAEAAEAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/images/application.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFiSURBVBgZpcEhbpRRGIXh99x7IU0asGBJWEIdCLaAqcFiCArFCkjA0KRJF0EF26kkFbVVdEj6/985zJ0wBjfp8ygJD6G3n358fP3m5NvtJscJYBObchEHx6QKJ6SKsnn6eLm7urr5/PP76cU4eXVy/ujouD074hDHd5s6By7GZknb3P7mUH+WNLZGKnx595JDvf96zTQSM92vRYA4lMEEO5RNraHWUDH3FV48f0K5mAYJk5pQQpqIgixaE1JDKtRDd2OsYfJaTKNcTA2IBIIesMAOPdDUGYJSqGYml5lGHHYkSGhAJBBIkAoWREAT3Z3JLqZhF3uS2EloQCQ8xLBxoAEWO7aZxros7EgISIIkwlZCY6s1OlAJTWFal5VppMzUgbAlQcIkiT0DXSI2U2ymYZs9AWJL4n+df3pncsI0bn5dX344W05dhctUFbapZcE2ToiLVHBMbGymS7aUhIdoPNBf7Jjw/gQ77u4AAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/application_add.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAH9SURBVDjLpZM9aFRREIW/ue9FF2IULDQuaYIGtTBRWGFJAgqSUsEmjZVgo4mFWBiwVVjBHwjGwsbCShExIAghoEUMARGNGFJYhIC7isXGRbORvJ0Zi/dWY5fFCwOnuHz3nDsz4u78z5HTlx6NDB4v3KjWvd0dMMPNUFPcHHPDVTF3XBU1Y/uWZHVxsXzl6e3hibgwUBhvy7WH3bmWHm5fres4MBHXEw/16s+Wra8lHgBiV+f6mX0tA86VlkkBbgCsNxQH3Bw1MBwzR83Qhqflxro63Z0dqGkKIOuCBEHc8SC4OGJCCIJIQESRyIksEDfS+9bIAE1SAFwEBCIHEzBzIocgEbGAiqMhdWxqWQTL5kAE3P8BiYCrYwIuQBAii1JAM0JTpAxJxQaQxUJsxvTbSV7NP6e2ukLSSFjT/cBJ4kaS/HEggLsjIvgG0Is3T3hfnuLYwFG6dvbwcuEZcx+nKY7mbwbPskSAZC4k00GEIMLk64ccPtCHBqVvzxAqCcVD/QAjwcz+Rsg+M4gQbahv37/QJts4dfAiAJdP3Gfvrl6AXFxeWn58/k4ybKqYGqqKmaFJgplh7lRrKyxUZpmvzDA29IDS1Fly0VaAX7KZbSyO5q91de+42t87SE/nET59fcfshxk+L9VuyWbXuTiaLwEXgA7gB3Bv7m5l7Dd8kw6XoJxL0wAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/application_cascade.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGeSURBVDjLjZLdKwRRGIf3X1wXuNAikiKfWXaVLO1SIjYlG9LYaGKxNSXWx1rnwoUo+Zhdu2vkRsp32ePCvH5nYoaGNaeemjkz5/ee85zX5W6VS4bjuc3uhSzzz4NohnlnT1nHzAlrnz5mbZEj1jJ5yHwRxsS/ROT6jiu4lEuF12+YE5pHd1O2AFHZKXVDSWYL8EcvxKQjaga27AG+ubTxUUllMlOJq9fB1Us+sAJieR5azPJ+Oc0DC2e8N3rCmyYOOFxocOGxAiTVCBhTtMJ08pYXY1i55nChwUXeDGgM7xsBovJ/dErnHC40uNDMAGynr35kj3VJKn98eQOcPzwLCib3gqcCf3l9e8QiDS6sgK8HuBCTWnxHvRtT8joqEfqC0BeEYxJ6g9AXhL4g9AXBBaF4gxUgqUZAKJYjnNMRcPFuBsCFESAqOwUurPvEdsbhQkNfkNMBFz+b4tPFnwt0gS7Qjfeq4MYvARBWbHyFiOEJrNkD4MLxEdxtsj0ALmS4MATVDm5TdTBBlf3rVNGjUHl3nMp8y1TqjYkrFMgf+hUje+AiV2IAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/application_delete.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAH0SURBVBgZpcFPaM9xHMfx5/vz/Ywfv6ZwGC1mtRsXtRvFQSmlKK3JkRJymAul5EJcrFZrcnO0QpELDgrlKJcd5M9PtpHawew39v2+3y/7rlZuLI+HSeJ/2OGhO2d27+2/PtNWUwIiUAQejkKEArkTEnLHI1i3qpybmJg8f+/GwGju39U/0tFopq4GK9Gca/sIMJrbpVJ75gcrNV8qsSjLxZVjfazUiWstalkKaguVI0AhPCAQEcIj8Ep4JVzBgoveTZ14OLWMRM2SYRJKhkxYGCkZZgkzxwpRRCJXohaVU8seTi0BMgODQhAGEaIQJCvIBm7CU1ALD2pZIZaYgUQCZAYGZiAXYSADklFEQS3CqeUIZ5mZsUQiATIjspEjmHp4k+mHY7Q/vaWjq5sdq/cAB8lVWbLEDAMkYWaIRRIJmH50i9lX4+w8cpzVvduZf/OYNc+f8mRfx9kkD2oFYICZYYAByYxkRuvuMH17DtF49wy7fZS17+/T27MBmYZyRLDMAGORGX9amGrR2NQLB86xLF/eTBG2LU9+aI2fGi4Hwp3wwN2JCLwsiQhCYqCxnvbrRzQfnObX/BfawOz3Ai+YMkn8zYvB7surOpsXt2ysck6fmf1W8fFr4eVPXTJJ/IuXg1svzM1MnSzcerzQpGBs/+Pq6m9gRhRi/EsJnAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/application_double.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGnSURBVDjLnZOxilNBGIW/mXt3CZsYQQtjJYqPkE4L8Q20WARbmxWEFQvBXrByQdDKF3CL1QcQH8DOKmVIkWIFbdybTe7M/x+Lm+zeFELcAz/DwJnD4eOf8OD5p4d37w2f/qrUwR25k3PG5cgMl5AZ5k5/O81Ho+mHo7e7RyxVDu8M97c63TjosIk61cz2gfOAWVKc/T5hU50mxfa9lInXj29vHPDkzYT1ADkAi2x8/jq6fpy7N37+8eJfPHqX+zx7/1397VSNRtOXJRIAMcB4tnOr19thcHWjMt1qZu9KcwMghEBVi+o/eZSW81nARXiUOaXzgBYPuTCH7I65Y1nNyKlN3BxcwtwoLTUNItDmoRhQECWRECIhGKEQhUfK3Pg8G+V0PPm2d5Du5zpxZXDtrA0BCoEkCkEMBWUAC8Ji09TNG8NqXnz8IUnK7sruSmaqzTQ30yIlndZJszrpZJ4kSY9efVnfqjaP9hmBECNFEQkxEIuVP1O2A9Z4LB8Xy3OlrbbfbD1gOp4c7h2k3VwnzAx3Jy0WzY90Q6ZmK93xBsNh0JL8RfUXD1Ut4VHY1QEAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/application_edit.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJRSURBVBgZpcHda81xHMDx9+d3fudYzuYw2RaZ5yTWolEiuZpCSjGJFEktUUr8A6ZxQZGHmDtqdrGUXHgoeZqSp1F2bLFWjtkOB8PZzvmd7+djv5XaBRfL6yVmxv+QjQeu7l25uuZYJmtxM0AVU8Wpw9RQU8w51AxzDqfKhFjwq6Mjdbj1RN0Zv2ZFzaloUdwrL2Is4r+y7hRwxs8G5mUzPxmrwcA8hvnmjIZtcxmr3Y09hHwzJZQvOAwwNZyCYqgaThVXMFzBCD7fJfv8MpHiKvaV3ePV2f07fMwIiSeIGeYJJoao4HmCiIeIQzPXifY+paJqO4lZi/nWPZ/krabjvlNHyANMBAQiBiqgakQMCunbxHJviM9bQeZdBzHJUzKhguLJlQnf1BghAmZ4gImAgAjk++8jP56QmL2GXG8zsfFCz8skA1mQXKbaU3X8ISIgQsgDcun7FL7cJjFnLUMfLyLRr0SLS4hbhiup5Szd19rpFYKAESKICCERoS95neyHmyTmbmAodQ4vGpAfmEn6YTtTahv4ODiRkGdOCUUAAUSE/uQNfqTaKFu4jvynJiIxIzcwg/SjF1RsOk9R+QJMlZCvqvwhQFdbM4XvrynIVHpfn2ZSWYyhzHS+PUtSueUC0cQ0QmpGyE9197TUnwzq1DnUKbXSxOb6S7xtPkjngzbGVVbzvS/FjaGt9DU8xlRRJdTCMDEzRjuyZ1FwaFe9j+d4eecaPd1dPxNTSlfWHm1v5y/EzBitblXp4JLZ5f6yBbOwaK5tsD+9c33jq/f8w2+mRSjOllPhkAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/application_error.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIiSURBVBgZpcE7SJZhFMDx/3neV/u8ZlhoVxAkESoyJYoa3BojDCFc25psaS8CWxoEhxAagiCpHCpqaa3AyiIISwjTtHIou3wX/b73nFOPIEG0SL+fuDv/Q04Mjp052ttz6WvR69wBM9wMNcXNMTdcFXPHVVEzGqsrhamphXPjl/tH0p4jPcNVubrQkmM96gpFHQZG0mLFQ/FrnvUqVTzwW+rqXBxoZ71OD80Spe5GVM4UB9wcNTAcM0fN0MzRzFE3yuq0tTagpkQBdyIJQhAIQQgJJCKkIZAmKf7zBeV3Q1RJidqqlMgyJQpqShQAEUGCkAQhJIIECF5ieW6c+uZ9VD7dJ60ORKZGFNycVSJEAQgihCAkiVD88IDa5i4at3ZRmHsI+RkiMyUKZsoaEQERogBofoFv7+7RsLkJ/XGHLZ2n+P72Bm4ZZkYUskqFVSKICJGIEH15c5Pm9uOwPMnEtevUN5X4MfOI77OPySoZUXA1ogQQQEQQoPB5Ei0s0bCpiK3MgBuaf0pb71nmn1yhimWiYGasESAA4sris6s07dqPFV/hVqK7rwMrfySXm6ZxxyG6aiaI5MTg2FjLzm39poqpoars2fCUkwdztO6uQfMTuJd5fnuK7r5OJNkINcd4NHphpdpLB8Td+dvE8OH5vQPXtyfhPZ4tAc4fgaSmg8XXL5m+e/5Wyj9kK+Xc5Ghfyc1xM9wMN8PNcTPcHMxw99ZfSC4lgw+6sSMAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/application_form.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFlSURBVBgZpcGxTpNhGIbh+20+DUkTRhkcNLBIOmG6+Q+egg4cgWExhDi5sDm5SErCoB4BDB4KjnVTBpooCTKUOvx9n4d+ISQOQNL0usI2i4hX7w7fNi/7H88n7tqAhCVSiWVk4Uxk40xSYvlhezkcnr7/9mnzoPRf9PcfLHU7K0vMo3s5yX3goExadybnY+b1r3WHmeI0u68fM6/twQlVsYVtTGUwEMH342Pu8nxjg1RSFWwyk63BL2583XlK1TQNtxmPx2iaVCWVyObz9hMIgwPZ3EcSSlEVyyhFBFjMGML0ej0uLv5i858ATABSUhUpkRJzLZgxDH8Mucuz9XUkUZVp25KZ7Hz5zY3B1gpV0zTc5uzsD9N2SlWcQhJ7bx4BppLEfTKFJaoiCcmACMBcW11dYzQaAQFhgsCGCIMD2VTl9OfJ0YfDdlOZKEVmIolsWyQhGytxGllYQqI6YiZss4gOC7oC3Q3wOtNMt7AAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/application_form_add.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHiSURBVDjLpZPNaxNBGMb33/DWoxcPngr+B4pQggdL8WNbaxQbGtugkESE0IZEkiYhpC2GtJQatKW5pFYl2yrKCrZVrMYo2jbHfJElm/1IPJXHmdklbZGURBd+PPO++84zM+/ucAC4/4GzjC2PTKXzuvvZPlxPCcldOBd/4v7Cd9ybz8Exl8V4fAd3H3+GfeYjbLEtuOLvdTqPGXhT+YNopoxusUfeHTADuvK/YA28BTNwJffQbDa75obvtWHgfPILjUYDOkOHrutsLIpiWxqkhvcKpgFpmKqq6J/IttBITAvbPZqm4ZrnlWFAu11XFCh1glI3VTnRgL6/8vCFYUA/Va0mQ5Zlpgy5RrRGcoYeIht5wsCDVcPAkfgKSZJQNaFjqSr9de54KozxmauwhvrAPzoPi3PMMLDPfkKlUjnWAxofPcLzD0vwrAxiLTeNL0UB4fU7uBw+g96RU0FuNLaNUqlEKJtqcNRgKHAB6W8RpH9EWRzcuInwxi1q8JuzRTdRKBQJBRQJhRbFll50n8XLXOJYI1ez09QA9C4s3w6J7M8a9r/BoHcd1ycypMtrrFH97jTO2XoQEIbgE3g22ZfhD3fQyY0jhZOXgqcxJQyzlanSmPWg02tLiv0ElW7bVD/N/wGu4yJFlYuLaQAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/application_form_delete.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHvSURBVBgZpcG/S9RxHMfx5+fuq10d/SJKQ+rUaLoWw60bIoIgaKhBpDksDBFbCooQiqAlURCp/gIjHIQWa4h+QDRYtFhDqOEdSqCSelbfe79f+UUEg35Jj0eQxP8Ip7sGLxaONt+eLSsrAe7IHXNDLlyOzHAJmWHubKuOl8bGipeH7rT0R81HmvuqMtlUTYaNyC6VrQ/oj8qxUuXZRTZqOVaKFZFMXDtTx0Z19E6SiCRHEiIhEBACb0ZH+Z3DTU2YG4kICTOjrXeCNfc760kUCgV+ZXFxEa8YicjccIm7HTkIAgVc4k/cHTcnEcmFmxMCyFkhCCKfzzM/P4fEOgEQAXA3EpG74W6IVYEVgrH3Y/xkdBh7PURl+hPp3bUc2nwMOEVUiWPMjM57M6zpbashUSgUSEwNDzBXfMXBs+1sasiz/G6E7PMnPD5e1RHJHHen59weQCTcnfXGH/bQ3HqBzMen8OwmW7bvoCGXY/SDuiJ3x12AEwCxqrHxAKVSCQh8L02QqW2Ak5dYE3XvJe2hPiqOTz64MRi3uBlujpnh7lgc4+64REtmJ+W3j8gOt/NteZoysPAljaUpBUn8zYvWuu7qrdmr+3ZVoig1xcLnChMzaYu/6nqQxL942br/ytJs6XzaQs7SKgoGToxUbv0ALswWDRrf9Y0AAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/application_form_edit.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJcSURBVDjLpZPvS1NRGMfvv9Db6FUvIpDqLwj6AZER1EhBkvTFTALNlWJrkwKRoWKGjZltaUmuYmsIq7SEtrSt1qakzh/TtunSdq9j8253u3fL1vh27t2KNAqsAx+ecw7n+z0PzzkPBYD6HyjZZVNNpzXINz0OQP2IYPwI1YMFXOmfQ+O9WTT0eVFvmMQl/Qcobo+jVueG2uDkRZ1koLEEc9qRNWwXRddYTjIQb/4XqjtGIRmojX6k0+ltI2+15Q1UA4sQBAG8BA+e56W5w+H4jQmbDgsPy+C3ajDVdwzT3UUVlFiwZDKJshbvT1JkLQp+HQJtBWNXIuF9DqTCiHstcN04vkaJ1U5wHLgEgUsUIrfJQKCHwM43Y2P1KZjRDqRnBvEt5MTM/eoMJT4Vy8YRj8elKBFnSWTJHovoEhHPXkMu7UQ6WIt1z0X4BuRw6+XwaGV7qIbeacRiMUQLiPNYNCZl4LF1g51RIZdxQQhUIrNSjuS8GqH+06i73psvoqJnApFIZFMNxPXrwXYw48qCuAKZT2fBzTZhyXASjM+JkkZL3qBO5wHDMIS1QmTge2fE/MtGkvYbZJbl+LJyDgmSSUB/Al85WjpzpsGcN6jVvkc4TBPCoAnuoR7MDasx/aILn92lEJbLsT51Ff67p7C6OAmaFs/RkNWb8KMXTBduOqSfVdVmh7n9KJAMYcFQArt6J97eKcZw8yHUqPQk7SfkZhOIRsQkGWztrpbzRdkNlw4b7ltwaw7DXLUrNaLaf+CP3bh1o/Tgjkxr5d6sra04+6rzyNgz5b7df2vn7z39IYTVO0xbAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/application_form_magnify.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAH2SURBVBgZpcE/SJRxHMfx9+/uuT8qlgR6mvTHqyGwKMWpbmhvskFa2spFRJxaGlprKBQcKmhqcWloaQ2ixcFaDhUKLDDJSFHvT+fzfD/ffJC2Go5er+Du/I8wPrs4Vbk+9nC74V3ugIRLmAyXIxduhtxxM0ziWD6ur6xs3Hv1eGIhGrs2Np8rdmVKRdrRVW/YPLAQNWLPNLZrtKsZe4ZDkZtz/+Yg7Zqe+0IqchfujpNycCAEPiwv8y+jIyOYjFSEO2bG5Nw6fzyfOUuqUqnwN7VaDSVGKjIZcufp9BkIDh6QO0ecd9UNtvaa1FoFCrmI4x3i6lABmUhFLkcmQgAXhxyCMzw8zNuP69TVxeWhE0S5LFu7B+zst1j6XEMyUhnJkIzEDJMhGUpEtVrlR7NIudTJTiuwuWckIctgXzfbzYAkUlESx5gZM8++88fcZIlUrXlAPp8jaSXIoZU4xShL4hFJnJCK3IQkntzpA5yUJFKdhRwHsREbJHJSHqBRr+MSqUgSkgMiAM6RcvkcvzZj9ptGd0eeljlRJrC5HeM/1zifXSMVxmcXF0unTk7IDJkwMyRhcUwuH9Hf18PoxdPIYbfWwrZWqPR+Y/fT++Tr6tLt4O604/WDG3f7B/of9Q5d6VldetMI7k67Xk5duDVQvvRCSjp+A5XMMGcdZp9aAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/application_get.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHXSURBVBgZpcE/S5VhGMfx7+8+T2VI0SDVKvYSrKE/0FsIwgZpCFqiISSiIcoigkIosWyrOR16AU2NETSGZUQoiNYgBJ1znufcz3VdeUvOIX4+igj2QhemFq6fPT/+ZLMXwxGAO+GOuREeeDhhhkcQZpg7h/fn7tLS2u23Tyfmq/Ez43P7hobTsSF2Y7jbszlgvurlSL3NP+xWP0diSxUWPJo8wW5dfbxCUUU4xaA1AggPzMEJ3ANzx9rA2sDCGVgwevwQ5kZREUGhJBRBJBEK5CIlISUkQ52g44mqDQpvjaIyN4oEhASCToAL3INOQFKHSmAKLDmFm1NU4cE2CSJIQEggkCAscMHsp4d4G9w4eY/C3SiSu7FDEkgUCUgSqhIzH+7SH3TpNr+ZfjdF4e4Uqc2ZbRKSKCSBhHnL/fc3yblhbGSM0aNj1LnLlVeT5NxQpDCn6AACJCFAwPOPM/zcXKeuG+p2QN02HNh/kNWNFX6lBYrk7uwQkIAk0ZG4dfoOry++YXn1G02uaXLN8vdlZi+/ZCRfoqjWfqwsXnuWJ9wMN8fMcHcsZ9wdj6B/pKbfNmTLbKxvMD37hS2LbFFE8D/nHpyKpsnkOjMYZD6/+Cr+UUSwF38B/pkb32XiUiUAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/application_go.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIMSURBVBgZpcHNi05xGMfhz/07hzTDiKZmEmLYeM3iKTKUiFhY2EhZ2NjIBgsWYoUoSWr+B7NhY6GkJBRhYSMvJYRSFDPPi3N+9/01Z2Jvcl0mif9h+46PH92yrXXpe0f9EhCBIvBwFCIUyJ2QkDsewcDsuv3y5adTN67sHytbo61rs+b0p6E5zER/u+PXgLGyUyt1vk8yU91aiSmlXJw/uJKZOnzxPY1SChpVdgQohAcEIkJ4BJ6FZ+EKKhfLh+fh4TRKJBqWDJNQMmTCwkjJMEuYOVaIIhJlFo3ITiN5OI0EmBmWjCIZqTAsQZFgVlFw/tZuTt/cjIqaRnjQSAoxzYxGApIZKRlFYRQGKcGvXLF4cBXHxjdS5R4RTqOMcP4yM6ZJnLy+DSlTRabKmUULVrJqeCMTvTZ7x0ZYoKs0ylzXTDPDAEmYGTkqdq45hCvwcALx+cdH1i0eZbLq8qx7iPXnDswv5UGjAMQUM5Do5QpX8P7bG+rI5Kipvebnrwk2LNnKZN3h8bsH38qI4C8DjClm9HKP7JmhgaXkcFzBlx8fWDh3mOcfH/L47Qs6Tsv2HR8fH1qyaH+4Ex64OxHBz8Ej9KqKKip6uWLF4Go2jezi6YdH3H/1hGXdE7fvXD6zxyTxL9aeS+3W0u19917f/VQFOz5f0CummCT+xchZa3sUfd3wka8X9I4/fgON+TR7PCxMcAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/application_home.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAI/SURBVBgZpcFdaI1xHMDx7/Oc/3ms8xiZxLxcGIXF3cnN5KWUXIrc4EZcSC5QKC+1xjLKW5ELLzfIS8iNS0qUtxqllkYstllsNufsPKc9z+/3s/9q5Vb7fAIzYyKCDXvv7F6xutg2ULHYDFDFVBEVTA01xURQM0wEUWVKlA53dHQffHBm80VXbCpeyNfE4cwa/kc8XJELwEVXSS2sDJT5l8uGaeptYSRLSRLlw6LjZLmYfyWphYxyJsaJLQsZlyZ/eHejhXx9HaVywuyGOqJPR1m//wb5mlrG7TjZhReaKd5IJgyXB3l/ax+hM4ZKVWoa1vLr+1em18/lYetWvnb18OVHCU9U8ELM8IIw4OP9Q4RRQClR6tccYMmqbcxZuYdvnZ0UptTy5Nx2CnmHp5ngOVHBC4FqdYhUI+avP8a0GXNIK7+Z19iE2RGeXj5Mlma4KMRTUTxnaowJApbvvMnjR/eZNbeB022tDA4OEccxzc3N3L5X5EDLaVDGqApeqCqMC4KAVAM0HSGfj2hsbCQIAjAjF9fhchDmGKOqeC5LU7xXvS94/e0Nn8odLO1fRm1cS6FQYFJ+Eu0Dbykt7+H8szYWTl3MpuJGsjTDcyaKd/PldZJKwkDvENcuXyWnjr6ffVSrVa5cuoosqPK5/zntSTubihsxVTynqngt606RiVDuL2NqiAiqiqemOOeYPG0yURThqRme6/7SdXfX2XSziqCiiAiqiqQpqoqaYSqYGGqKqaKKd5dRgZkxESET9BfqVjgB6mRiLwAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/application_key.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIwSURBVDjLpZLNS1RhFIef897rNDSoUEFFIhpCi1okzKKyRSFBFC3aCFERRQTSItrUHxBFbQoEkYJaBdoQ7kqQwm1BREjmF2JWFuKgNTozzr3zntNiRmthC+nAb3fOc37nQ8yM/wk5ff3Z1cNH0vcWCpYyA1QxVbx6TA01xbxHzTDv8arUJeL86Ojszf77Hd1hui3dVZNMue3JDTVO5Qu+C+gOC7G5wsLyhq0XY3MAoXnj9tmWDQMu352hAjAFICp7DDA1vIJiqBpeFV+2ikyJvNG8oxavvgKgegVxgphhTjAxRAXnBBGHiEecJ/rwiLA4RW6xHS1vBsCtkhwgIogTAie4QBAHgYOaIKA8liGV/MLOtguszL2k0UYqdabVPxBZAzmpdA8CIRAoTvQTrAxRvydNfmaAILmLc81vGLi2+0yoVQdUHQBghgNMBA2FcvY9W1tP4gsjJLc1sOK/0Xh0H1Kc7wnLcbzmQAAzQ0Swv0BBqoF48TMuyCIuT6IuCysFln+UgtB85QoBVIpEWF1slP1EbvghkojRchGnP8HVYnHEx74pxscXroSq+meEqhBhafIFudHnbGk9iEWDiF9ibDCiplQiEOHp/Am6em/1hrPTM5nOB3GHeo96xXuPqtLZ1Mf+9mNE2R7CsJ7h1yV6xw4wl9iLGUSJTZnqvmxdfe0//rY0d8fy46fsXdehpccXW86vlxf+61W/T2df5X4NNRUW8sWJifkbl55MZtbL+w0EmEFfv0ZNiwAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/application_lightning.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAIiSURBVBgZpcHfa81hHMDx9/l+n82x0zadyBabMFtKSS03XGxXUlMspqxcufGrcOMPQHHhR1v8B26Wxi7ccOlKLUlqTJvQ0H5gv8737DzP5/OxJ5RcyPJ6OTPjf7juCwOn93a0X/tSsoIZoIqpIiqYGmqKiaBmmAiiSl21XxwZmbg4eKPntmvf095XlS8k6/OsRGGxJH3AbVfylpS+LLBSmbeEZc7EuNLbwkqduPqOyJkpUSUIBoT5Z5Q/9mMSMFE0KCaKeI9Rg990mc3NWxEVIocZUS7JkVNB5p6wqmY9adU6zAfMB6SSkX19hTX0UFVoINIgRE5UiBJAwhSV6UfUbugizA6T5HchMkP52yhp4zFcQxdiSqSiRM7U+EFYmnpIdW0LkKLZZ3BLzH54zOotZ8g3HUINUk2JVIXIqQpRKI1S/nSfuqZ9WMggbQTvMXXownsWR26hPsOSOvJtR1BVIhe8J1oYv0l1/TaymVdoUKprWkAd9Q2dZDMvEF9h7uNzirsvka5aQ/CByJkoUb7YSShPQ5KQSyt8HR+irrGDUP5GpTRNUr+T5u7ruNomkjTFVImcqhIVNvbyi4YFZl/fpTT5kvL8JMUd56hvPczv1IzITbx9N3Dypu9REVQUEaF3Yz9ta4s8fZMw9Pks2XCKySBqiqmiSjTAMjd4o+cocJSfxu9t369e7mQzcv7gqbEHB/k7xx/Uy4R6OdB6fOwl/+A7Obk497M21x8AAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/application_link.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJPSURBVDjLpZPta1JhGMaFPvZ/CH3rL1BqICLzg0EMKmSwmZXWskPhSwQJ2yQzVEYyaRI1ikkOCqISJDU/9IZRKyqn9SWYuBedb+d4ju7quZ/jBvvYuuGC+1z3dX7nOc9zjgaA5n+ksbiWHKGnlbbvcRneR0yLJXge/MC1+99wNfEVwsIXXIl/wuX5IqbufoBz7h288UKb7uOA6SeVQfRVFf+qqXBuwAH05IPobDALDvAuruIgNTGbUQGehz+50VP6kJjEnoK2qKApymh0ethsiajVu1hb7+BPrYVfa02eH59ODwFsw6jkwQByv89BXVlBR1JB210FW20J600GaoiobnR53nrzhQqg3abqM4BCEKYeA4kM1KHVMFCLVtRRUG/J2GhKPH/mxnMVQEfFATs7HLAL6jFJffWVdkHNIYjq1PVnKkC493kPQGp3u3iZTiMUCiGRSCAYDGK1XEZtcwu3hx7NxoUwdDrdYc1U7KMKYJJkGQssEIlEUK1WUalUkMvl+PV8PI5SqcS9QqHAvdHR0VuaS3Pv947mdTYLn8+H4soKZgMBmM1m2Gw2RKNReDwe3pMXYDOCCILQ0Dijb/cA4XAYMzMzHCBJEoxGIzKZDIrFIvL5PFKpFPdoRgC/3y/Sv7B07s4b/mWZJ/ywn3dywEnrRRw7PgKDwQCLxcJFPXknTl/gALvdXt/3Zx1hxZb4nW1SPZlMbi4vLyMWi8HlcsHtdvOePJpRhrL7AFqt9pBerz9qMpl+T05Oth0Oh8jUGxsbszKNsL5JHs0oQ9m/1aYTg/t8sGkAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/application_osx.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAF5SURBVDjLpZMxa5RBEIafvdu7RPCMhYLBxCoiaqO/IHZWNvkBooh1WrHUwk4s0sTGQrsQwf9gK1gpQoJoY++d5Ludd2YtvlwuaWLODAyzsPu88zLMplorp4n85t3W5vLS4sPc6/VqgMKxIiRRJEoRxYzx2NpajFKMvaaxH993X+flpcXHl169SAv3P/Gge42Nm2//2TUlOH/ubO/p85eXc879dHF1lfmrXe50bgNwfeXKsQJfd37S7XZw95TNxa+7a8Aa94BxKXz+sgOA5JgJuWNyJEfe1m+7gUvkGsGtGyv/NcDt9x8uZCkA2GvGM8Fn5ueIGmR3B2Cu3z/yoNbaJpWI9uwR1NreAXgEuZhmAicJEO5kk2YGD5qFTx1EjRODk4gIsu0LuMeJwSMCxexgIIfhduPSsQI1gjwajYZN0wx+D/8QEfsC00kfdjMxVKn0cwcPV1p/8mx9MFh4BJ1BcU23T0JmyA1JuBlyx2WEO2Y2jPCP6bTf+S96U2WlbWXHPgAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/application_osx_terminal.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGfSURBVDjLpVOxSgNBEJ297B2iiUmToKABCxEVKyGVoJ+QLp1RxE4sRAQL26RVsLHRQouAkMoq/yD5Ads0ErDIQe5udu+c2eTCGU4MuPCYmbvZN292d0QURfCfJZ9eXh9WV5aPpW3bUQigQg0YKFBKQcAgP0AE38eRDcgShp6HX/3PS0mbT5dumyJ/+A5HmQ24337+s6oQAIXFrN28e1yXUjqifHYO9uYHXIgyFGR2JukL83OACoVEreDg6ppYRSosyzKYjhlrO3sgozCETCYD/X7/R1LahmRcLBYhny+ApVQ4kdVut6HRaMx8A0iHbGmtgS7AoFarQaVSgWq1amLHcSb/kqCDMzbAAGSAynxgtFot6Ha70Ol0TMK07GRb3Db6PkiWEVer1+smgeM4kdf0GZgHRAWVGiuIZSUPMFkxLWYFih6WxHELcdVpklgBx0mfLTIBP09mY4LRK0uvGCMm4T2+IgLXdQekIFcqlVKTfyNh6/ueJ3u93s3W7v4J8eYCzUNEw4SjYeIelUbja/KRrlxT1VBzDg68ofsm/jvO35HitdVS/1ysAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/application_put.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHbSURBVDjLpZM/a1RBFEfPnfciq4uChLgrWChaihBYbAxqBD+AgrGwVBDRxipgH1AMEQJpbawU9SvYCRaiEmOaBUkRDRYBwf3zZt691+K9DWuXxYELwzCce37MXHF3/mfJtYcv789d7jzZ7XvTHTDDzVBT3Bxzw1Uxd1wVNePIgdTb3NxefLuysJZ3LnRWpxrN0GpM1LjZ6+sqsJb3k4f+7p+J1QfJA0Du6izdOjMx4M7jLSqAGwCxVBxwc9TAcMwcNUNLr8qNqM6p9mHUtAJQv4IEQdzxILg4YkIIgkhARJHMySyQl9V9K2vAiBQAFwGBzMEEzJzMIUhGLqDiaKiMTa2OYPU/EAH3f0Ai4OqYgAsQhMyyCjCKMNpUDKk2YyDLhcV3t0mxJMZEGiZe3HyDWWUQypT2DEYAkbp9Ha0YJi6dnGf+9BUG/QKAMpV1hDpLBvhYlHGjYlBQlAVREw1psPlzA68N8pEKgNQ16r78folvP9aZOXiMYRmJGpk52uLB87ukvAXcIN/+vvXq3rO0YKqYGqqKmaEpYX6WeGKDQ9MFRRoSNbLza4fe7ymOl9dfA8h+pvHq8sUv7en2uRgT3W7388en67N71vsd5/OPZj+kYUqfVr7OjZ//BRjUGmnYsJxdAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/application_side_boxes.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFwSURBVBgZpcG9apNhHMbh3/ORWiztpLSrQ86gmw6egkuXjE7i5CQ0OAZxUSj0DCxiB8/A07BDBXEoKEoGbaP45n/f9im+SwhCyXUl26wiPXjy9vG9+7svpjNv2ICEJUKBZWThCGTjCEJia627ODk5e/ru5d5h3b27ezBY38jb61zHxsUsDoDDOuucZ9NzrutX50yz//rUy4zffPT/PHz+3peotmjGR6f0JqMhven5b2JuYm7C4k+YOzubhIImY9PbvrXJoloqdZCpNzJra5Wbg0qjedDUUND7+v0ni0qGnAo1QSQTWTQK0VTLNJPRkGVKAiVwAnKiqNBIQVOloBkfndKbjIb0Us1UCRkyoMQVSTR53nX0dm5vsSgDKWdKyaScyIUr825OUx2i9+XbDxbllGgElJSwRGOJpkqimYyGLFNSoin8UwqNbJp69unz8aNX3Z4iUIiIQBLRdYyefUA2VuAwsrCERHPMpWSbVWRW9Bcyl/ydiZeC0gAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/application_side_contract.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAG1SURBVBgZpcG/S9RxHMfx5+dz3+LKsKxBC4KQXIvArYb+BQmuIYgGoaBJiAoiLCqwxUGwkBr7gaGOTu5NZhBkBRU3NEV2Q3d69/m+X+/6DEJcNoiPR3B3diKMjM1ePXN2+OFay3vcAQmXMBkuRy7cDLnjZphE7+7UXF39dmNhsjZdDJ8entpV7Yn9Vbajp9myKWC6aCWPrbVfbNd68sgfhZtz6UKHQBYIBCKRO3O3uHhylBOHT9G39yBFLPjb6ESdLLqLTSbj5etnZOutNlYa7s5WTEZW4E7mwMzSI340vlM/Xqe30ktZGjjg/EOlkUWTkT1ZekzFIscODfJ0cYZqZQ8YSI7jdJOJrHA5E/P32V/tY2hgiNKNA/v6WP34gXang7sIBLpJRhYl4+a52zSbLd58WmH5/TJzi/NstDew0pCcrUgii2VKZNdq12n8bPD5y1ee333Byru3BA8EAu5OtzKVZNFNbLp3+QGDA4Nk7Y1EJyXcRQiBbi6RRUlsKioF41fGyVI7IRP/I3eyMDI2O9t/9EhNZsiEmSEJSwlJyB2X4ebIhUtIZK8WJmvng7uzE5Ed+g22TgZNyTAeRAAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/application_side_expand.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHXSURBVBgZpcG/S1VxHMfh1/me41USwpa0XwTpUNToECTR4D/g0G1oiKChCAchChqiKYzCIbGWtlpuhBBBS7TY0FoUSZOVSIo/Crz3eu895/N511cQDWoQnyeRxE4kQyOVqwNn+u+u1NUpAe7IHXNDLlyOzHAJmWHu7C7ltenpuRuTY+WJrP9U/4O2js7Q3cF2dNbq9gCYyOq5Qn2lynat5Qr8kcnElfMpkCCJWqvK919feT3zinsnH/E/l0a/EQXJ+ZciL4juv7vD/M9V5pfqzC1WmZlfJTI3ooDEBiEgQYJWMyf6svCZ0bfXydoDpVLGrraMyAsjCuaG2CQ5RVFwsOMwF56fpau9CyRuvRymLU3JSoHIzYmCXCRsIbDCaDabDPSd5sjeXnoP9NGwOuXxQUppSuRuRJm7sUESLiEXa40GUx+n6NnTw+LKEqomvLj2BnfWuTtRKPKcrSTRauUsLC9wc/A27z99oLbc4PHlpyQhIaSsK/KCKMgcsUlyrDBmf8xybN9xjnaf4MlwBZKENATSJCGSO1Hm7kRCRHJRFAWNepNo/OJD/pKmRC4RJUMjlUr3of1lN8PNMTPcHctz3B2XkBsy4XLkjjvRs8mx8rlEEjsR2KHf89sagbhDhaEAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/application_side_list.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGQSURBVBgZpcG9alRhFIbR5/tRA0Fbbe0tp4tFsHFKLSaNjSIGJlapDIq12BgIxJRaCGIK8QaUNN6BmEJBLNIGCcko55z9bs8WpxlECLNWcnfmkW6uv7l/dXnw9HDii+6AhEuYDJcjF26G3HEzTOLC2fZkf//gwdtnK9t1sDTYOrOwmC8ucBqLJxPbArbrpPU8OTzmtH62ngkPX33xf3n0+qv/z90n771HdRdhvAcjfaBpGobDIVOHx7+wzrHOMReNOZcvncdkhIo7YWeZ3jVm1VJJyUjFKcrUzgnqjFBNRhjvwfUf72jbltFoxFTJkFOhJrDkWBZBJkJ1OWFnmd4NZpUESuAJyImiQpCMUCUjLL2Ae+klTdOwurrKVKqZKiGHDCjxhyRC7dqW8PEOvdvMyvRypgDmTk5O6NqOUN1EuLIJa+eec3R0xMbGBlM5JYKAkhIuEVwiVEmET+v01phVUiIU/iqFIHdCPfj2fXe82a7IDJkwMyRhbcutx5+ROy7DzZELl5AIu/SSuzOPzJx+AwKoFtIrwFHLAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/application_side_tree.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAF1SURBVBgZpcGxalRBFMfh35yZGwK72mrrO2yxoIXFvIBNGksrsbISFGuxMRDIGwhiCtttrq9hCgWxSLtVsor3nvN3RwxcggTCfl+SxC7So+cfnz14uHi73mgmAREoAg9HIUKB3AkJueMR3N4bLk5Pz158endwXBb3F0fd/szu7HMTs4uNHwHHZTPINutzburnIKN5+f6r/ufVh2+6zpM3n7VFkYJmtVrRdR21VqbW57/wUfgoXMFvF/fu3sLDaQoSTdd11Fq5quRCSk7KIodRRtHE6DTFw7nU9z1NrZVL2cBSpiTwJNyCJjxoTCGa5XJJU2tlKicwA8uQS2IvZ5oIp7EIZ6rve6ZSMYpBNigZLPNXRNCUcRiYqrUyZWyZkQGXsCSacRhpTB5M9X3PlKWEpQQpkc3IKdEogqZEBM18PqfWylU5JZrMPznThERTzr7/OHl6OByEO+GBuxMR+DDw+PUXQkLhyEUoUAQRNCdsJUnswtjRH6iT+f+z/UsKAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/application_split.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGaSURBVBgZpcG9alRRGIXh99vnKIGgrbaCl5BOC2/BJgi2NmIlFoK9oI1CIJ39kInxhxReh1VKCZmfQkiVTOLs863l7GAau5DnCdtcRzx+ufPi4aON98cLr9uAhCVSiWVk4Uxk40xS4vbNenpwMH395cPmdr/xYGPrxtp6ubPGVayfLnIL2O4X1WVxfMJVnVUXVnqnefv0Plf17N0hTW+LZjkkBiyTAmEkkxI5mBxMWizT3Lt7i1TS9Ng0UYKwcQkcJhSUEkQUIpLoTKdCP5hGQ9L0qaQpgCMgoDMoQDKdoURHH5BhsohGKZpimdFoxGQyYXdnh9nREXvjMbPphO97u8ynE/a/7jKbT/ix/5nf8zmj0QgpufDq0083g+RB8iC5Zrpmepnp80z/qdVny+rFsvrkvLp58uabV+iHWrkQQQC2iQjMik1hpRQ6IG1KmGaoA03vFE0HmJUIsGkigksCuggs0Vii6SVxKYBgJYL/dfzTdTSyafrpr8Px8491U5koRWYiiawVScjGSpxGFpaQaMashG2uo3BNfwFx+DLsFQ4W2wAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/application_tile_horizontal.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFCSURBVDjLpVOxSgNBFJxcrkmC+AV+gP5BwEKwtLESW0mZD7CyEyViJVhbG7DURvEXBAsDKgpGxIjIecnF29t9byyyAZu9wkz12HnMm3m7WyGJWRC3Dq7aq83FTpKzMcwyqFNYVczHNrvpDc5XmktrXz9siAJpksCKYK5qs9u7t+3T/fXjysn1q9TrtWhqhCSUAAkMR2PUGzWoAkqCBJST+qF3r4ft5Wo8toyy77En/zQpoSRSk/kaEH+mCoxyiQAARxcvDGHv7DnIbe1ekiQiUQ0uyIkEucJaAEAkUiLgwpzNvUDhyqa4sLiZcFHplBJxN41QNsWWOXDegTFFsMnkJixujI9QlOUMR1DxDopC/hVhentx//Gp2+rkG2IdksEHnDioE4goqOxv7uQLUjiIE6Sf76AI/NPpAkBl1t8YYUb8Ao9lHyy2IyRjAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/application_tile_vertical.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAF+SURBVDjLnZOxalRBFIa/e3djWGyE1GJhlcogRLCwshPrgI2NjaCktZZUCVaB5A1s8gI2PkMKGwu3CIIgKGuuu5ts7pzzH4t7k5tZSVw8MDPMmcPHnP+fKSKCFzsfXz1+uLp9PIubEoSEJJI3q0nIHFMw4IRPn7+/fv/26R5AH+DR+upub2lQrixBRBBARDsARRABiub8zth2gQ4wTVFO6hMioi2CIJDIcueg8cxL2ugDuAWbT26zaLx8d0QGMPcriyMAuhb6vYI6pRxQVeMrAUUBUFAUULS56sfo4rwESNfcIIO1azLPb3A0/Hq4/+HW/V+n4Arkjlwkc9yFyfHkuMRyTJHpMAOsP7i31lsesHKjs+qy8vMu/K7qtQwwPlNZzSZIlz2Pv/cBUjCdtzElsfXs7sI2brz5kotodr2I3cuMRsRkOcBd/1a/m/CzuXdw/HO0mIWtj5NqlAO+DYcHz7dmG26GJ8dSan5fXSNv7JMbYSJZDcHBBfi8r/+NP5dvHwJcdb23AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/application_view_columns.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAF/SURBVDjLpZN/S8JgEMd9i1JURPSDIoIkS1FQI4iQgihStExrhGmydGObyZyyYRaybBRFQb/8vxcgBIF92275ApoHx7jjns/37p49LgCuQdzlXmEXd8RON1L4QPjM9NwbQtkXBE+eEWCe4D9+hC99j+XDO3j3b+FJ3CCcvu5a5wgQLXV6ceUT/3Xv3mWPAJayE5/fboAA4dw7nNjspmoDQqevlDAMA+12G61WC1/fP1BVFfV6HbIsUyyKIgRBAMdxVD8drf0BzIU5scl12QZY27ZM13VSbzQapFir1VCtViFJEsUsy6JQKCCfz1P9xFrFBlhX5cTGVyUb4D96oESz2SR1RVFIsVKpoFwuo1gsUpzNZsEwDDKZDNWPhQUb4D0wHHUwHCjZgKVEmxKaptHc/ZmtL8/zNLMVp1IpJJNJxGIxqh/yn9sAT1x31IHbx6L/FtiF3Sv6s+a2NMxE65jaUMwtX9CixiIiRkM8RoKc2XbRVGZhnrGcJcDAr3FQwC803UMOARws7QAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/application_view_detail.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHSSURBVDjLpZPbSxtREMbzL4pSpYj1VilUmmpQSCKCSLAgihFTo9Eg0TRZY5LdxJgbKYo+2AstLRbU1nfxrlmTdLPJ55nZ+OCjyYGPYQ8zv/PN7DkmAKZGZGoakN5OKSeqPfAPtk9Ca8ew+g4xvPIHQ94DWJZ/Y3DxJ94v/ID54zf0z32BbXFPpToGODZOKrPpUzxX5pmdCgPo5HrUN7kNBtjW/qKe1TORMwDW1SPeeJ0ucMzlcshms0gmkyhqVSQSCVzmdSiKAlmWEQ6HOa/TkakBxMBolUQyFRRIpQruijp/3xR0XN/ruMiXcXar4fRG4/yOsaQBoGmzpa08x0wmg1QqhVgsxoBoNMoQSZIQCATg9/s5r300YQDoV9HS9Cr+l6vspFRzQgBVOCE3j06uVJ3zX47EDIBl6RdvdG9ec6Se4/E4QqEQA4LBIO5FSz6fD16vFx6Ph/PabLIBMM9/541ypYpyzQWpqD2VKiB54YJEq2VowwC8m/tqTFU+50i9RyIR7pUK6WSKbrcbLpcLTqeT85ot6wagf3a/rnvQNCjh8S1Ib6Z3+Wb1fviMLkcWr8bTYsqbPKg2u4JWawQvhsPCdkicLEHUkCQGNPwaGwU8AG9RQVkc+5PeAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/application_view_gallery.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAG9SURBVBgZpcG/S9RxHMfx5/f8fPXyrMyOhGgoWrLJ4m6Ii2hrCyRwiKa2fg06aKNjLRVHQkNEtOnQUNReg5RLBJHUEhe4iEiUnj8+3/f7lR/j/gDz8cgksRfZyNjMrfMXa/dX2qpIgDtyx9yQC5cjM1xCZpg7B7rj2sLC4uTLB6PTodaoNfNypTRYZjcqa21rAtOhHVVqr6yyW+tRJbYFmRi71M9u3X3aIgmSk8zPz/Oi5yg9eZnBrpOYZxQOheDaoSec7W/xe2uAua+naTQamBtJQKKj6H3Ot83v7IunGOoap6xjRIe3v67yc+MdR0pLZFlG4oWRBHOjoy9b50Q50Nf9heg3iXEIbZ3h8+ow75cv4JvGxP6PJG5OEuSiozbQQ54fpxIOYtrgjy2xaa8Rb3BEXM/JWldI3I0kuBtJvV6nTp3E3emQRIcqQodF4u4koYiRarWKxA7xjwSSSCQQYA5ZBuU8o4gFSZA5yfVXyyTPLldZ/TRK0js8w725KZLJc1PkE3fY8egxcmfH7eYH/Y+R8RltIyz+aM3eeBhH3Qw3x8xwdyxG3B2XkBsy4XLkjjvJLNsySexFiT36C4QDM7+0SJboAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/application_view_icons.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFuSURBVDjLpZPdS8JgFIf9F6UoieiDogKllUNhM4IIKYhCRAqlIkqKmYVGERZFUZB9kBgJ9uH9dARdeDfn6T3ndbJFN7kfPDDGe55zONvrAgCXE1zuacW7nK3UQ3ufIO8yku8gbZchuFWCwOYriBsv4E8UYCr+DMLqI/hi9yAnbutYR4JwumJEcyr8FyFybZAAO3fC2NIVkEBOfkAnGVm44AJp541eFItFAjOU0QhMvBAhms2m/Uz4rCVgC+tEMDB3ygW47b+CBSaGYdjA9M+ecAF+qt9dzU5YDCmRwMLv0jiB6Zs54gJx3T62dVTq1hI0Gg2bwCNnuEBYe2qPbB0TC6zout4G0x1Ic8Fk7IELBC+Bh83F4bM5DRZal9glprjAF83zreXvOCzlrxKBUVUVqtUqPddqNdA0vie3XwHzLigTKzf0Z40uXsJw+BwG53Nsy8e0KE8oC73SIfQED9jY+6yzAqwGUUjg+DY6FfwA5i1AjZKvAWgAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/application_view_list.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFrSURBVDjLpZO/SmNREMZ/uVxFCGy7L+AjpAgoIUW4hZjCCDZCbCQgVlY+gaDNLghibbmy2EgQTCOp8gaWYmFrpbE4Z+azuPe6UVE2ZGBgzoHz/Zk5U5HELFFZ2/uzu9ysHT2OVZUAd+SOuSEXLkdmuITMMHd+zIfn29uH/YtfGydpbal2PLdQTX4uTEVcfR7bMXCSjoOS8ePT1NJfghKAVCYONhenBtg+vCcHkAOwcwOnTRiNRkjCzHD3TwmQZRnmlgNQTOG0mSPX6/V3TJNTmqw9FgAl0tY1nGUwHA4xM2KMbyom1Uii0+ng5oUFz1HPshy50Wh8yTp59tJCWaxfwt9VMRgMiDG+y48Kut3uWz/SGAKQP5ZEq9X6lrmMGGJhofCyclGhvyb6/T4hBEIIxBgJIXyaQq/XQ6WC8vJqHSCh3W7/1z/wQlH6cHd/vvM7bLgZbv86biWzhNyQFXvhTsF5DlCZdRsTZoxXOgYqlSAcLRcAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/application_view_tile.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFjSURBVDjLpZPdS8JgFMb9FyUpieiDwoKklUNhUwIJKYhCRFrah1FSzDRaFGFRFHbRF0mSkJX3QTddeKfz9J7z5mbtIpoPPLww9vzOw9leBwA4OrHDOaWOL2jVWnDnDeRt5vQLSJvPENgog3/9CcS1EviSRZhMPICwdAfe+A3Iyasa5ggQyVb1WP4d/msheqkTACfbsWf+Agggp1/BjoZnzzhA2qrQg3DBNErQPIZRy0XTqMHIyTeALawFSJV+AhLFKJ3NZpOCuYoJ6A8fcwBu+68Guq5bGvRNH3EAfqrfwoktY7jdjUaD3ukNHXCAuPpomYhBUFyGMfhZHjWMcsv7HCAo9wYgVVKMyhTOiHTiVAp+rBgAlz/LARPxW0sDqtnWoF6vWxp0iRkO8Maubf0HTp8Krbugji0W6M8amTuHocgpDMzk2ZYPaVHuoAY90h50B3Ks9i6brALLoFUCdHwbOwV8AQoMLgCS+2NeAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/application_xp.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAE8SURBVDjLpVM9SwNREJzTpx4JaGMn/oJrRMtU/g2xsLD1F/gDbK0lpaAgNmJnI1YWasBOELs0QgQDfsQ4Mxb3vEvgipwuLAsLszszb19iG/+JsHf6dDU3g9WXdzdtABIsAQZowjJkwSRkwyQoYX52+PYx8F0w0FrPFqfuuwP0P1W5ZW2hi9vXpViXsXOyieOtw+b1zUMr2T16tGnYBizYhqR8a2QjquxRkAjJsIhgGhsrg4q9CYDpmGWMerZ//oxgC1mW/clAnl0gIE6UqvXbLlIqJTYaDeibCBRrAX97ACAKwXIt4KgHEhEUGdQBlgOE4Khd0sTAMQZkzoDkxMBiAI1g5gzSNK39jJYQJKHT6SBN00KGpDFGVfJ6vR5kIyQetg8uh9tiH+IIMNb8hPOzNV2cuATAX+3kv9/5B7T5iPkmloFJAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/application_xp_terminal.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAGNSURBVDjLpVM9SwNBEJ297J1FQBtzjQj2dgppYiP4A1KZRoiFrYWt9rHyH6QUPBDTCimtLNSAnSB26YKg4EdMdsd5611cjwsIWRhmZ3f2zZuPVcxMsyx9fPF0NRfS2vM7lx2WtcQiJHvDRvZMluXMGNHstJH7+Wj09jHkOy1+tc3VxeC+P6TXT1sYZX2hT7cvS6lepv3zHUp2T8vXNw81dXT2yGwEGeERSbSVCC5qysYa+3vm9sJGmLFojceXJ9uklCqUIAic5G3IytahAAhqqVSiwWDwx6nogW9XKhWphaGAvC50Oh1qtVr/7oAdCwBQwjB00mg0qFqtUr1ed3YURZM7X7TWTqM2Gm3CASRJEur1etTtdp1DnrafFtJGMbVNGSBas9l0DrAzR6x8DdwASUB0RqNNGS2/gH7EInvCwMhkZTnlnX0GsP09tJER0BgMoAEAa1rETDIQvBkjBZeHMIjjuNB5Ggg0/oZWPGrHGwd7Fp9F2CAlgHKqf0aYXb6Y2mzE8d/IfrXVrN/5G81p6oa2mIEUAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/arrow_down.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAENSURBVDjLpZM/SwNREMTnxBRpFYmctaKCfwrBSCrRLuL3iEW6+EEUG8XvIVjYWNgJdhFjIXamv3s7u/ssrtO7hFy2fcOPmd03SYwR88xi1cPgpRdjjDB1mBquju+TMt1CFcDd0V7q4GilAwpnd2A0qCvcHRSdHUBqAYgOyaUGIBQAc4fkNSJIIGgGj4ZQx4EEAY3waPUiSC5FhLoOQkbQCJvioPQfnN2ctpuNJugKNUWYsMR/gO71yYPk8tRaboGmoCvS1RQ7/c1sq7f+OBUQcjkPGb9+xmOoF6ckCQb9pmj3rz6pKtPB5e5rmq7tmxk+hqO34e1or0yXTGrj9sXGs1Ib73efh1WaZN46/wI8JLfHaN24FwAAAABJRU5ErkJggg==]]></data>
	</file>
	<file>
	  <filename>/images/arrow_up.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAEGSURBVDjLpZM/LwRRFMXPspmEaGc1shHRaiXsJ5GIRixbCr6SikxIlqgJM5UohIiGdofovHf/PZVmYwZvTntPfjnn3txWCAFNNFE33L/ZKXYv+1dRgL3r7bu0PbucJp3e4GLjtsrXGq9wkA8SU7tPk87i/MwCzAyP5QNeytcnJl46XMuoNoGKDoVlTkQhJpAgmJqcBjnqkqPTXxN8qz9cD6vdHtQMxXOBt49y5XjzLB/3tau6kWewKiwoRu8jZFvn+U++GgCBlWFBQY4qr1ANcAQxgQaFjwH4TwYrQ5skYBOYKbzjiASOwCrNd2BBwZ4jAcowGJgkAuAZ2dEJhAUqij//wn/1BesSumImTttSAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhQABAAOZ/AP/RWf/dhf/FNP/KQ9zc3Pz8/P+2APzbtOLi4uavbOWEAeunAP/MSf7lpPa2Nf/36f/hk+yUAP+bAPi5Jf+4AP+LAPOrAf/TYv++Gf/ELu25NM5uAf/oyf+tAO7u7v+kAP+UAP/CJfrr1vn5+f/Vaf+8Ev+4Sv/pt//z3fHx8f+xAP7Fev+pAP+rF+bm5v+gAOy1KP/Yc//be+19Af+5Cv+nLf/OUfzDafq1Cv/Xlv+DAPW0Ev6qNvOxDNKJAf/JP/7BQ+rq6u2tFOjo6NmLKv/Ihf+fKfWVAf768/+XFvb29vT09M2EAPWjAf7FOO+NAf+aCu+dAP+uR/+/Hf23Bu2aGO29QempKv/INf+2Xv+PB/PGVt6YEvPETP7GTNySBPSyGfCDAf3MW/CrC+7BU//vxf+hCvavAf+JCv/9+v+lBv/WcP2gBP+yG+ywHf+oDtd/GP/Xa/S/P/mxAP+PEvrw5Pe4F+7ASfmzBf+0B/DToeGjHfLRff/YfumNDP///yH5BAEAAH8ALAAAAABAAEAAAAf/gH+Cg4SFhoeIiYqLjI2Oj5CRkpOUh0h8W1s5hJeZB5Wgh3pnATJjNxCpZHYBJAsiobFpZVYTKGVgGiQXJG5OKCcLfCixlQ0DNhoTJyc9ZA0QDRohJxALcgMAZcWQZTYDMRBWdtA9dxABEMoNAQtiECQ/JA/cjBACFwH64/rmpQHKIMRYsEVfABtOTtRLtCZDDBkxHmrYAbGHFYgyYNiRcYEgxIckQjRYaIiEgBhr4qiMMXGXxRgkYmgkYWNBF5gkSKwJOZKkIBkZdl0YykvDGQwYLOjiBQMPhhI2hRIFEGIbyRNTAGjdCuCCUQMGlF7oCmOOAQrXxnIFwCADvXoP/wQwsEG3rg0AMM5QoKAUwN2ye6/5tUs36MIAIWwwWMx4bt69FmAstuFmTmA5jTNPsRrrwRQnP0KLDj3gMYUzkn8McKMisIYBo0eHYMAtgAosTgQIcOIEN2g3esGOyeBkggUKZxdMwKJbN3MsWDLQIBZLgIoQGbJrzy5ASHDkZ3CcAZt8wvbzUzoE6ExDBY0Q8OPH944cLPL6ycHI35+ng4BYJ3SggntTFGhggWMER96Cye0wBVJIFYhBHgPmQV0lfQhYYQkcdlhCgvgxmFwPHnLYXgcodqAQKGKkmGIeNMQY4wIKipjcGDLSQIUKLnbAQk+VAMFCjymqkFyNIqJlgf8BPBKJIgsQhCKkky5GgSSDaDXhIwtcdtnlB5uAAsQHXpbJpZUhYhlFFGaWCaaUZLbZZRTH2Wjfmix8oOeefL4QZpAv8CmonhHUaScFURwxqKAS/CmJCCI4EOgHL1Q6aKF2kpdopZy+IIEEnEqwggh1SFIHHBsoWukbLbSgRqcvYJqpAZt++imrLZjx6QsKbEBEGpHosUGqL5gBBC9icHGErRI80QSTA0YbrQERPMHsE1fEQQIAE4AgQa8bwAJJAsNay8YETjBwBRPL2uqstPAaWa0EIHj7BBPYZACGt+B+Mm65ILDRQw9g+ODDEfXW+2680labMAj3crHDwPXOMKz/HpEkAAcRTwSMww5jGIxwwmE00aSTKkQQBggVVKDFvV/sgAMOLPtBBBwYQ5LDGg3woMMHVOAQsg8tF10ylSmqXHQFMM9MBQg63HDCDRxE8oAJAfRRQwcGUDEGE0QvfbScQyrdsg5P+PAFFVRQoIYUEPRxwyRFOFBKBmBZALYOfPM9A5tksxDBDH3rEAYTX5AHgD4mVC0JEjx4sYsTU+zAxRU1GJEEGmjMoOiiez4xAxp0JGEED3vsgUFia8QAxNyUHADFXFrdxZUNXgBxRRV+KOD77374UYUDXtDV1VBaqcUAD29RsgIUsJEm2gDULzYAEHI4oL32QAyQGfXeZwaF/7+VpCEFFOeln4Fz0LXPXHPwww+dGUUU84AREhxoIIQQ6u9/gfuBjwSyUI86GAEEOYrR6gSgGsbQhTGwEUAGplACGniIBiAg4ELuVwEW7IUGAFiDDEYYA5VIhQQrichOBnAWCrCgAjcAFkkeIAUdSMA9DADAAAQwgTa04A1q2JMaWNUGdGUDCxTogAQqsAKfEGIFLfMUy5bmMi1YUQtn00HLvCUBHdCBfE4UxAlqAAUjSOEGRcjBCTgAKRS4UQQc4MABcrCCLPAgCUnIwoXCOIg0oAAJk3hA8/hISEKmIAgpUMIICtCIAoxgCR7wwAgKKYgCuIAAmMwkAlzggiB40sYDnhyCCxCAgExm0gOFVEIpTcnKVrrSlC5gpBOXUEpS2vKWuMylLgmAgEmShJa6DKYwdekCX3JDCZxMpjKXycxmNnMIxgzFCIbgyWpa85rYzGY2qSlLUBQAlNoMpzizCcoUxCIFkUynOtfJzna6U51KAMUIUkDPetrznvjMpz7v2c1IFGAJAA2oQAdK0IIalKDxnMQIlMDQhjr0oRCNqEQj2s9HjOCiGM2oRjfK0Y56VBIFCKlIR0rSkpr0pCitKCVXytJKBAIAOw==]]></data>
	</file>
	<file>
	  <filename>/images/wand.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAHMSURBVDjLlZLBSyJhGMa/UxTUIWJ0ZVmlwxLLEiEhurCoKeqCOtZN7J4ZRZdd9rSG6NFbSOegDp5aqWWI3UGm6KBUxsq2LLj+CzV9jDOH8NlvJtqLjuXhBy/z8Xvel4chAMhTKGfOMeVsbqXf2wBp3s5Yf5hno8rp24YxS9PTVHq18mTAgzj3k4mCIs0cqZeLUCTHJ1q13VKRSz0v4PRNVr1KQfu9Aa31BZ2LKKg42aHfJ8ZNA9i5L9hWUZFeQ73kof3N42SPR6OyjFZ1FZ36AuQfo5CPyc7gDiRHttNYwsl+Apqmodvt4uJrCur1GmSB/GI4TAOo9JKjVasQi8VQr9ehqiqazSaqu1Fofz5C/kYow9M3gJVkp+JUJZFIIJ1Oo1gsolwu42hngcmfdfmecS4fki3TC3ieN2SPx4NAIIB4PA7lPIo70YY7YQJyhdhNS3yU3W43/H4/LBaLvnWbbbxnvGNyQz4gmb4ByWQShULBkH0+HziOg/6die+ZKOjzzQEZYXzoCYhEIsjn8z3yI0wKmf7KwWAQuVwOLpcLXq+3Rx4EyWQyaLfbcDqdCIVCQ8n/A2q1GkqlklHYMLIREA6HN/WzrVbr0LLOP1AMs7UPAa92AAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/js/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/js/jquery-1.3.2.min.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyoKICogalF1ZXJ5IEphdmFTY3JpcHQgTGlicmFyeSB2MS4zLjIKICogaHR0cDovL2pxdWVyeS5jb20vCiAqCiAqIENvcHlyaWdodCAoYykgMjAwOSBKb2huIFJlc2lnCiAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLgogKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL0xpY2Vuc2UKICoKICogRGF0ZTogMjAwOS0wMi0xOSAxNzozNDoyMSAtMDUwMCAoVGh1LCAxOSBGZWIgMjAwOSkKICogUmV2aXNpb246IDYyNDYKICovCihmdW5jdGlvbigpe3ZhciBsPXRoaXMsZyx5PWwualF1ZXJ5LHA9bC4kLG89bC5qUXVlcnk9bC4kPWZ1bmN0aW9uKEUsRil7cmV0dXJuIG5ldyBvLmZuLmluaXQoRSxGKX0sRD0vXltePF0qKDwoLnxccykrPilbXj5dKiR8XiMoW1x3LV0rKSQvLGY9L14uW146I1xbXC4sXSokLztvLmZuPW8ucHJvdG90eXBlPXtpbml0OmZ1bmN0aW9uKEUsSCl7RT1FfHxkb2N1bWVudDtpZihFLm5vZGVUeXBlKXt0aGlzWzBdPUU7dGhpcy5sZW5ndGg9MTt0aGlzLmNvbnRleHQ9RTtyZXR1cm4gdGhpc31pZih0eXBlb2YgRT09PSJzdHJpbmciKXt2YXIgRz1ELmV4ZWMoRSk7aWYoRyYmKEdbMV18fCFIKSl7aWYoR1sxXSl7RT1vLmNsZWFuKFtHWzFdXSxIKX1lbHNle3ZhciBJPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKEdbM10pO2lmKEkmJkkuaWQhPUdbM10pe3JldHVybiBvKCkuZmluZChFKX12YXIgRj1vKEl8fFtdKTtGLmNvbnRleHQ9ZG9jdW1lbnQ7Ri5zZWxlY3Rvcj1FO3JldHVybiBGfX1lbHNle3JldHVybiBvKEgpLmZpbmQoRSl9fWVsc2V7aWYoby5pc0Z1bmN0aW9uKEUpKXtyZXR1cm4gbyhkb2N1bWVudCkucmVhZHkoRSl9fWlmKEUuc2VsZWN0b3ImJkUuY29udGV4dCl7dGhpcy5zZWxlY3Rvcj1FLnNlbGVjdG9yO3RoaXMuY29udGV4dD1FLmNvbnRleHR9cmV0dXJuIHRoaXMuc2V0QXJyYXkoby5pc0FycmF5KEUpP0U6by5tYWtlQXJyYXkoRSkpfSxzZWxlY3RvcjoiIixqcXVlcnk6IjEuMy4yIixzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSxnZXQ6ZnVuY3Rpb24oRSl7cmV0dXJuIEU9PT1nP0FycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHRoaXMpOnRoaXNbRV19LHB1c2hTdGFjazpmdW5jdGlvbihGLEgsRSl7dmFyIEc9byhGKTtHLnByZXZPYmplY3Q9dGhpcztHLmNvbnRleHQ9dGhpcy5jb250ZXh0O2lmKEg9PT0iZmluZCIpe0cuc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisodGhpcy5zZWxlY3Rvcj8iICI6IiIpK0V9ZWxzZXtpZihIKXtHLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrIi4iK0grIigiK0UrIikifX1yZXR1cm4gR30sc2V0QXJyYXk6ZnVuY3Rpb24oRSl7dGhpcy5sZW5ndGg9MDtBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseSh0aGlzLEUpO3JldHVybiB0aGlzfSxlYWNoOmZ1bmN0aW9uKEYsRSl7cmV0dXJuIG8uZWFjaCh0aGlzLEYsRSl9LGluZGV4OmZ1bmN0aW9uKEUpe3JldHVybiBvLmluQXJyYXkoRSYmRS5qcXVlcnk/RVswXTpFLHRoaXMpfSxhdHRyOmZ1bmN0aW9uKEYsSCxHKXt2YXIgRT1GO2lmKHR5cGVvZiBGPT09InN0cmluZyIpe2lmKEg9PT1nKXtyZXR1cm4gdGhpc1swXSYmb1tHfHwiYXR0ciJdKHRoaXNbMF0sRil9ZWxzZXtFPXt9O0VbRl09SH19cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihJKXtmb3IoRiBpbiBFKXtvLmF0dHIoRz90aGlzLnN0eWxlOnRoaXMsRixvLnByb3AodGhpcyxFW0ZdLEcsSSxGKSl9fSl9LGNzczpmdW5jdGlvbihFLEYpe2lmKChFPT0id2lkdGgifHxFPT0iaGVpZ2h0IikmJnBhcnNlRmxvYXQoRik8MCl7Rj1nfXJldHVybiB0aGlzLmF0dHIoRSxGLCJjdXJDU1MiKX0sdGV4dDpmdW5jdGlvbihGKXtpZih0eXBlb2YgRiE9PSJvYmplY3QiJiZGIT1udWxsKXtyZXR1cm4gdGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxkb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUoRikpfXZhciBFPSIiO28uZWFjaChGfHx0aGlzLGZ1bmN0aW9uKCl7by5lYWNoKHRoaXMuY2hpbGROb2RlcyxmdW5jdGlvbigpe2lmKHRoaXMubm9kZVR5cGUhPTgpe0UrPXRoaXMubm9kZVR5cGUhPTE/dGhpcy5ub2RlVmFsdWU6by5mbi50ZXh0KFt0aGlzXSl9fSl9KTtyZXR1cm4gRX0sd3JhcEFsbDpmdW5jdGlvbihFKXtpZih0aGlzWzBdKXt2YXIgRj1vKEUsdGhpc1swXS5vd25lckRvY3VtZW50KS5jbG9uZSgpO2lmKHRoaXNbMF0ucGFyZW50Tm9kZSl7Ri5pbnNlcnRCZWZvcmUodGhpc1swXSl9Ri5tYXAoZnVuY3Rpb24oKXt2YXIgRz10aGlzO3doaWxlKEcuZmlyc3RDaGlsZCl7Rz1HLmZpcnN0Q2hpbGR9cmV0dXJuIEd9KS5hcHBlbmQodGhpcyl9cmV0dXJuIHRoaXN9LHdyYXBJbm5lcjpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7byh0aGlzKS5jb250ZW50cygpLndyYXBBbGwoRSl9KX0sd3JhcDpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7byh0aGlzKS53cmFwQWxsKEUpfSl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyx0cnVlLGZ1bmN0aW9uKEUpe2lmKHRoaXMubm9kZVR5cGU9PTEpe3RoaXMuYXBwZW5kQ2hpbGQoRSl9fSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsdHJ1ZSxmdW5jdGlvbihFKXtpZih0aGlzLm5vZGVUeXBlPT0xKXt0aGlzLmluc2VydEJlZm9yZShFLHRoaXMuZmlyc3RDaGlsZCl9fSl9LGJlZm9yZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cyxmYWxzZSxmdW5jdGlvbihFKXt0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKEUsdGhpcyl9KX0sYWZ0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsZmFsc2UsZnVuY3Rpb24oRSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShFLHRoaXMubmV4dFNpYmxpbmcpfSl9LGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnByZXZPYmplY3R8fG8oW10pfSxwdXNoOltdLnB1c2gsc29ydDpbXS5zb3J0LHNwbGljZTpbXS5zcGxpY2UsZmluZDpmdW5jdGlvbihFKXtpZih0aGlzLmxlbmd0aD09PTEpe3ZhciBGPXRoaXMucHVzaFN0YWNrKFtdLCJmaW5kIixFKTtGLmxlbmd0aD0wO28uZmluZChFLHRoaXNbMF0sRik7cmV0dXJuIEZ9ZWxzZXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soby51bmlxdWUoby5tYXAodGhpcyxmdW5jdGlvbihHKXtyZXR1cm4gby5maW5kKEUsRyl9KSksImZpbmQiLEUpfX0sY2xvbmU6ZnVuY3Rpb24oRyl7dmFyIEU9dGhpcy5tYXAoZnVuY3Rpb24oKXtpZighby5zdXBwb3J0Lm5vQ2xvbmVFdmVudCYmIW8uaXNYTUxEb2ModGhpcykpe3ZhciBJPXRoaXMub3V0ZXJIVE1MO2lmKCFJKXt2YXIgSj10aGlzLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Si5hcHBlbmRDaGlsZCh0aGlzLmNsb25lTm9kZSh0cnVlKSk7ST1KLmlubmVySFRNTH1yZXR1cm4gby5jbGVhbihbSS5yZXBsYWNlKC8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2csIiIpLnJlcGxhY2UoL15ccyovLCIiKV0pWzBdfWVsc2V7cmV0dXJuIHRoaXMuY2xvbmVOb2RlKHRydWUpfX0pO2lmKEc9PT10cnVlKXt2YXIgSD10aGlzLmZpbmQoIioiKS5hbmRTZWxmKCksRj0wO0UuZmluZCgiKiIpLmFuZFNlbGYoKS5lYWNoKGZ1bmN0aW9uKCl7aWYodGhpcy5ub2RlTmFtZSE9PUhbRl0ubm9kZU5hbWUpe3JldHVybn12YXIgST1vLmRhdGEoSFtGXSwiZXZlbnRzIik7Zm9yKHZhciBLIGluIEkpe2Zvcih2YXIgSiBpbiBJW0tdKXtvLmV2ZW50LmFkZCh0aGlzLEssSVtLXVtKXSxJW0tdW0pdLmRhdGEpfX1GKyt9KX1yZXR1cm4gRX0sZmlsdGVyOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhvLmlzRnVuY3Rpb24oRSkmJm8uZ3JlcCh0aGlzLGZ1bmN0aW9uKEcsRil7cmV0dXJuIEUuY2FsbChHLEYpfSl8fG8ubXVsdGlGaWx0ZXIoRSxvLmdyZXAodGhpcyxmdW5jdGlvbihGKXtyZXR1cm4gRi5ub2RlVHlwZT09PTF9KSksImZpbHRlciIsRSl9LGNsb3Nlc3Q6ZnVuY3Rpb24oRSl7dmFyIEc9by5leHByLm1hdGNoLlBPUy50ZXN0KEUpP28oRSk6bnVsbCxGPTA7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIEg9dGhpczt3aGlsZShIJiZILm93bmVyRG9jdW1lbnQpe2lmKEc/Ry5pbmRleChIKT4tMTpvKEgpLmlzKEUpKXtvLmRhdGEoSCwiY2xvc2VzdCIsRik7cmV0dXJuIEh9SD1ILnBhcmVudE5vZGU7RisrfX0pfSxub3Q6ZnVuY3Rpb24oRSl7aWYodHlwZW9mIEU9PT0ic3RyaW5nIil7aWYoZi50ZXN0KEUpKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soby5tdWx0aUZpbHRlcihFLHRoaXMsdHJ1ZSksIm5vdCIsRSl9ZWxzZXtFPW8ubXVsdGlGaWx0ZXIoRSx0aGlzKX19dmFyIEY9RS5sZW5ndGgmJkVbRS5sZW5ndGgtMV0hPT1nJiYhRS5ub2RlVHlwZTtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gRj9vLmluQXJyYXkodGhpcyxFKTwwOnRoaXMhPUV9KX0sYWRkOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLnB1c2hTdGFjayhvLnVuaXF1ZShvLm1lcmdlKHRoaXMuZ2V0KCksdHlwZW9mIEU9PT0ic3RyaW5nIj9vKEUpOm8ubWFrZUFycmF5KEUpKSkpfSxpczpmdW5jdGlvbihFKXtyZXR1cm4gISFFJiZvLm11bHRpRmlsdGVyKEUsdGhpcykubGVuZ3RoPjB9LGhhc0NsYXNzOmZ1bmN0aW9uKEUpe3JldHVybiAhIUUmJnRoaXMuaXMoIi4iK0UpfSx2YWw6ZnVuY3Rpb24oSyl7aWYoSz09PWcpe3ZhciBFPXRoaXNbMF07aWYoRSl7aWYoby5ub2RlTmFtZShFLCJvcHRpb24iKSl7cmV0dXJuKEUuYXR0cmlidXRlcy52YWx1ZXx8e30pLnNwZWNpZmllZD9FLnZhbHVlOkUudGV4dH1pZihvLm5vZGVOYW1lKEUsInNlbGVjdCIpKXt2YXIgST1FLnNlbGVjdGVkSW5kZXgsTD1bXSxNPUUub3B0aW9ucyxIPUUudHlwZT09InNlbGVjdC1vbmUiO2lmKEk8MCl7cmV0dXJuIG51bGx9Zm9yKHZhciBGPUg/STowLEo9SD9JKzE6TS5sZW5ndGg7RjxKO0YrKyl7dmFyIEc9TVtGXTtpZihHLnNlbGVjdGVkKXtLPW8oRykudmFsKCk7aWYoSCl7cmV0dXJuIEt9TC5wdXNoKEspfX1yZXR1cm4gTH1yZXR1cm4oRS52YWx1ZXx8IiIpLnJlcGxhY2UoL1xyL2csIiIpfXJldHVybiBnfWlmKHR5cGVvZiBLPT09Im51bWJlciIpe0srPSIifXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtpZih0aGlzLm5vZGVUeXBlIT0xKXtyZXR1cm59aWYoby5pc0FycmF5KEspJiYvcmFkaW98Y2hlY2tib3gvLnRlc3QodGhpcy50eXBlKSl7dGhpcy5jaGVja2VkPShvLmluQXJyYXkodGhpcy52YWx1ZSxLKT49MHx8by5pbkFycmF5KHRoaXMubmFtZSxLKT49MCl9ZWxzZXtpZihvLm5vZGVOYW1lKHRoaXMsInNlbGVjdCIpKXt2YXIgTj1vLm1ha2VBcnJheShLKTtvKCJvcHRpb24iLHRoaXMpLmVhY2goZnVuY3Rpb24oKXt0aGlzLnNlbGVjdGVkPShvLmluQXJyYXkodGhpcy52YWx1ZSxOKT49MHx8by5pbkFycmF5KHRoaXMudGV4dCxOKT49MCl9KTtpZighTi5sZW5ndGgpe3RoaXMuc2VsZWN0ZWRJbmRleD0tMX19ZWxzZXt0aGlzLnZhbHVlPUt9fX0pfSxodG1sOmZ1bmN0aW9uKEUpe3JldHVybiBFPT09Zz8odGhpc1swXT90aGlzWzBdLmlubmVySFRNTC5yZXBsYWNlKC8galF1ZXJ5XGQrPSIoPzpcZCt8bnVsbCkiL2csIiIpOm51bGwpOnRoaXMuZW1wdHkoKS5hcHBlbmQoRSl9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLmFmdGVyKEUpLnJlbW92ZSgpfSxlcTpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5zbGljZShFLCtFKzEpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhBcnJheS5wcm90b3R5cGUuc2xpY2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLCJzbGljZSIsQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikpfSxtYXA6ZnVuY3Rpb24oRSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKG8ubWFwKHRoaXMsZnVuY3Rpb24oRyxGKXtyZXR1cm4gRS5jYWxsKEcsRixHKX0pKX0sYW5kU2VsZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFkZCh0aGlzLnByZXZPYmplY3QpfSxkb21NYW5pcDpmdW5jdGlvbihKLE0sTCl7aWYodGhpc1swXSl7dmFyIEk9KHRoaXNbMF0ub3duZXJEb2N1bWVudHx8dGhpc1swXSkuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLEY9by5jbGVhbihKLCh0aGlzWzBdLm93bmVyRG9jdW1lbnR8fHRoaXNbMF0pLEkpLEg9SS5maXJzdENoaWxkO2lmKEgpe2Zvcih2YXIgRz0wLEU9dGhpcy5sZW5ndGg7RzxFO0crKyl7TC5jYWxsKEsodGhpc1tHXSxIKSx0aGlzLmxlbmd0aD4xfHxHPjA/SS5jbG9uZU5vZGUodHJ1ZSk6SSl9fWlmKEYpe28uZWFjaChGLHopfX1yZXR1cm4gdGhpcztmdW5jdGlvbiBLKE4sTyl7cmV0dXJuIE0mJm8ubm9kZU5hbWUoTiwidGFibGUiKSYmby5ub2RlTmFtZShPLCJ0ciIpPyhOLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdfHxOLmFwcGVuZENoaWxkKE4ub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpKSk6Tn19fTtvLmZuLmluaXQucHJvdG90eXBlPW8uZm47ZnVuY3Rpb24geihFLEYpe2lmKEYuc3JjKXtvLmFqYXgoe3VybDpGLnNyYyxhc3luYzpmYWxzZSxkYXRhVHlwZToic2NyaXB0In0pfWVsc2V7by5nbG9iYWxFdmFsKEYudGV4dHx8Ri50ZXh0Q29udGVudHx8Ri5pbm5lckhUTUx8fCIiKX1pZihGLnBhcmVudE5vZGUpe0YucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChGKX19ZnVuY3Rpb24gZSgpe3JldHVybiArbmV3IERhdGV9by5leHRlbmQ9by5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgSj1hcmd1bWVudHNbMF18fHt9LEg9MSxJPWFyZ3VtZW50cy5sZW5ndGgsRT1mYWxzZSxHO2lmKHR5cGVvZiBKPT09ImJvb2xlYW4iKXtFPUo7Sj1hcmd1bWVudHNbMV18fHt9O0g9Mn1pZih0eXBlb2YgSiE9PSJvYmplY3QiJiYhby5pc0Z1bmN0aW9uKEopKXtKPXt9fWlmKEk9PUgpe0o9dGhpczstLUh9Zm9yKDtIPEk7SCsrKXtpZigoRz1hcmd1bWVudHNbSF0pIT1udWxsKXtmb3IodmFyIEYgaW4gRyl7dmFyIEs9SltGXSxMPUdbRl07aWYoSj09PUwpe2NvbnRpbnVlfWlmKEUmJkwmJnR5cGVvZiBMPT09Im9iamVjdCImJiFMLm5vZGVUeXBlKXtKW0ZdPW8uZXh0ZW5kKEUsS3x8KEwubGVuZ3RoIT1udWxsP1tdOnt9KSxMKX1lbHNle2lmKEwhPT1nKXtKW0ZdPUx9fX19fXJldHVybiBKfTt2YXIgYj0vei0/aW5kZXh8Zm9udC0/d2VpZ2h0fG9wYWNpdHl8em9vbXxsaW5lLT9oZWlnaHQvaSxxPWRvY3VtZW50LmRlZmF1bHRWaWV3fHx7fSxzPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmc7by5leHRlbmQoe25vQ29uZmxpY3Q6ZnVuY3Rpb24oRSl7bC4kPXA7aWYoRSl7bC5qUXVlcnk9eX1yZXR1cm4gb30saXNGdW5jdGlvbjpmdW5jdGlvbihFKXtyZXR1cm4gcy5jYWxsKEUpPT09IltvYmplY3QgRnVuY3Rpb25dIn0saXNBcnJheTpmdW5jdGlvbihFKXtyZXR1cm4gcy5jYWxsKEUpPT09IltvYmplY3QgQXJyYXldIn0saXNYTUxEb2M6ZnVuY3Rpb24oRSl7cmV0dXJuIEUubm9kZVR5cGU9PT05JiZFLmRvY3VtZW50RWxlbWVudC5ub2RlTmFtZSE9PSJIVE1MInx8ISFFLm93bmVyRG9jdW1lbnQmJm8uaXNYTUxEb2MoRS5vd25lckRvY3VtZW50KX0sZ2xvYmFsRXZhbDpmdW5jdGlvbihHKXtpZihHJiYvXFMvLnRlc3QoRykpe3ZhciBGPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxFPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO0UudHlwZT0idGV4dC9qYXZhc2NyaXB0IjtpZihvLnN1cHBvcnQuc2NyaXB0RXZhbCl7RS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShHKSl9ZWxzZXtFLnRleHQ9R31GLmluc2VydEJlZm9yZShFLEYuZmlyc3RDaGlsZCk7Ri5yZW1vdmVDaGlsZChFKX19LG5vZGVOYW1lOmZ1bmN0aW9uKEYsRSl7cmV0dXJuIEYubm9kZU5hbWUmJkYubm9kZU5hbWUudG9VcHBlckNhc2UoKT09RS50b1VwcGVyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKEcsSyxGKXt2YXIgRSxIPTAsST1HLmxlbmd0aDtpZihGKXtpZihJPT09Zyl7Zm9yKEUgaW4gRyl7aWYoSy5hcHBseShHW0VdLEYpPT09ZmFsc2Upe2JyZWFrfX19ZWxzZXtmb3IoO0g8STspe2lmKEsuYXBwbHkoR1tIKytdLEYpPT09ZmFsc2Upe2JyZWFrfX19fWVsc2V7aWYoST09PWcpe2ZvcihFIGluIEcpe2lmKEsuY2FsbChHW0VdLEUsR1tFXSk9PT1mYWxzZSl7YnJlYWt9fX1lbHNle2Zvcih2YXIgSj1HWzBdO0g8SSYmSy5jYWxsKEosSCxKKSE9PWZhbHNlO0o9R1srK0hdKXt9fX1yZXR1cm4gR30scHJvcDpmdW5jdGlvbihILEksRyxGLEUpe2lmKG8uaXNGdW5jdGlvbihJKSl7ST1JLmNhbGwoSCxGKX1yZXR1cm4gdHlwZW9mIEk9PT0ibnVtYmVyIiYmRz09ImN1ckNTUyImJiFiLnRlc3QoRSk/SSsicHgiOkl9LGNsYXNzTmFtZTp7YWRkOmZ1bmN0aW9uKEUsRil7by5lYWNoKChGfHwiIikuc3BsaXQoL1xzKy8pLGZ1bmN0aW9uKEcsSCl7aWYoRS5ub2RlVHlwZT09MSYmIW8uY2xhc3NOYW1lLmhhcyhFLmNsYXNzTmFtZSxIKSl7RS5jbGFzc05hbWUrPShFLmNsYXNzTmFtZT8iICI6IiIpK0h9fSl9LHJlbW92ZTpmdW5jdGlvbihFLEYpe2lmKEUubm9kZVR5cGU9PTEpe0UuY2xhc3NOYW1lPUYhPT1nP28uZ3JlcChFLmNsYXNzTmFtZS5zcGxpdCgvXHMrLyksZnVuY3Rpb24oRyl7cmV0dXJuICFvLmNsYXNzTmFtZS5oYXMoRixHKX0pLmpvaW4oIiAiKToiIn19LGhhczpmdW5jdGlvbihGLEUpe3JldHVybiBGJiZvLmluQXJyYXkoRSwoRi5jbGFzc05hbWV8fEYpLnRvU3RyaW5nKCkuc3BsaXQoL1xzKy8pKT4tMX19LHN3YXA6ZnVuY3Rpb24oSCxHLEkpe3ZhciBFPXt9O2Zvcih2YXIgRiBpbiBHKXtFW0ZdPUguc3R5bGVbRl07SC5zdHlsZVtGXT1HW0ZdfUkuY2FsbChIKTtmb3IodmFyIEYgaW4gRyl7SC5zdHlsZVtGXT1FW0ZdfX0sY3NzOmZ1bmN0aW9uKEgsRixKLEUpe2lmKEY9PSJ3aWR0aCJ8fEY9PSJoZWlnaHQiKXt2YXIgTCxHPXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxLPUY9PSJ3aWR0aCI/WyJMZWZ0IiwiUmlnaHQiXTpbIlRvcCIsIkJvdHRvbSJdO2Z1bmN0aW9uIEkoKXtMPUY9PSJ3aWR0aCI/SC5vZmZzZXRXaWR0aDpILm9mZnNldEhlaWdodDtpZihFPT09ImJvcmRlciIpe3JldHVybn1vLmVhY2goSyxmdW5jdGlvbigpe2lmKCFFKXtMLT1wYXJzZUZsb2F0KG8uY3VyQ1NTKEgsInBhZGRpbmciK3RoaXMsdHJ1ZSkpfHwwfWlmKEU9PT0ibWFyZ2luIil7TCs9cGFyc2VGbG9hdChvLmN1ckNTUyhILCJtYXJnaW4iK3RoaXMsdHJ1ZSkpfHwwfWVsc2V7TC09cGFyc2VGbG9hdChvLmN1ckNTUyhILCJib3JkZXIiK3RoaXMrIldpZHRoIix0cnVlKSl8fDB9fSl9aWYoSC5vZmZzZXRXaWR0aCE9PTApe0koKX1lbHNle28uc3dhcChILEcsSSl9cmV0dXJuIE1hdGgubWF4KDAsTWF0aC5yb3VuZChMKSl9cmV0dXJuIG8uY3VyQ1NTKEgsRixKKX0sY3VyQ1NTOmZ1bmN0aW9uKEksRixHKXt2YXIgTCxFPUkuc3R5bGU7aWYoRj09Im9wYWNpdHkiJiYhby5zdXBwb3J0Lm9wYWNpdHkpe0w9by5hdHRyKEUsIm9wYWNpdHkiKTtyZXR1cm4gTD09IiI/IjEiOkx9aWYoRi5tYXRjaCgvZmxvYXQvaSkpe0Y9d31pZighRyYmRSYmRVtGXSl7TD1FW0ZdfWVsc2V7aWYocS5nZXRDb21wdXRlZFN0eWxlKXtpZihGLm1hdGNoKC9mbG9hdC9pKSl7Rj0iZmxvYXQifUY9Ri5yZXBsYWNlKC8oW0EtWl0pL2csIi0kMSIpLnRvTG93ZXJDYXNlKCk7dmFyIE09cS5nZXRDb21wdXRlZFN0eWxlKEksbnVsbCk7aWYoTSl7TD1NLmdldFByb3BlcnR5VmFsdWUoRil9aWYoRj09Im9wYWNpdHkiJiZMPT0iIil7TD0iMSJ9fWVsc2V7aWYoSS5jdXJyZW50U3R5bGUpe3ZhciBKPUYucmVwbGFjZSgvXC0oXHcpL2csZnVuY3Rpb24oTixPKXtyZXR1cm4gTy50b1VwcGVyQ2FzZSgpfSk7TD1JLmN1cnJlbnRTdHlsZVtGXXx8SS5jdXJyZW50U3R5bGVbSl07aWYoIS9eXGQrKHB4KT8kL2kudGVzdChMKSYmL15cZC8udGVzdChMKSl7dmFyIEg9RS5sZWZ0LEs9SS5ydW50aW1lU3R5bGUubGVmdDtJLnJ1bnRpbWVTdHlsZS5sZWZ0PUkuY3VycmVudFN0eWxlLmxlZnQ7RS5sZWZ0PUx8fDA7TD1FLnBpeGVsTGVmdCsicHgiO0UubGVmdD1IO0kucnVudGltZVN0eWxlLmxlZnQ9S319fX1yZXR1cm4gTH0sY2xlYW46ZnVuY3Rpb24oRixLLEkpe0s9S3x8ZG9jdW1lbnQ7aWYodHlwZW9mIEsuY3JlYXRlRWxlbWVudD09PSJ1bmRlZmluZWQiKXtLPUsub3duZXJEb2N1bWVudHx8S1swXSYmS1swXS5vd25lckRvY3VtZW50fHxkb2N1bWVudH1pZighSSYmRi5sZW5ndGg9PT0xJiZ0eXBlb2YgRlswXT09PSJzdHJpbmciKXt2YXIgSD0vXjwoXHcrKVxzKlwvPz4kLy5leGVjKEZbMF0pO2lmKEgpe3JldHVybltLLmNyZWF0ZUVsZW1lbnQoSFsxXSldfX12YXIgRz1bXSxFPVtdLEw9Sy5jcmVhdGVFbGVtZW50KCJkaXYiKTtvLmVhY2goRixmdW5jdGlvbihQLFMpe2lmKHR5cGVvZiBTPT09Im51bWJlciIpe1MrPSIifWlmKCFTKXtyZXR1cm59aWYodHlwZW9mIFM9PT0ic3RyaW5nIil7Uz1TLnJlcGxhY2UoLyg8KFx3KylbXj5dKj8pXC8+L2csZnVuY3Rpb24oVSxWLFQpe3JldHVybiBULm1hdGNoKC9eKGFiYnJ8YnJ8Y29sfGltZ3xpbnB1dHxsaW5rfG1ldGF8cGFyYW18aHJ8YXJlYXxlbWJlZCkkL2kpP1U6VisiPjwvIitUKyI+In0pO3ZhciBPPVMucmVwbGFjZSgvXlxzKy8sIiIpLnN1YnN0cmluZygwLDEwKS50b0xvd2VyQ2FzZSgpO3ZhciBRPSFPLmluZGV4T2YoIjxvcHQiKSYmWzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXXx8IU8uaW5kZXhPZigiPGxlZyIpJiZbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il18fE8ubWF0Y2goL148KHRoZWFkfHRib2R5fHRmb290fGNvbGd8Y2FwKS8pJiZbMSwiPHRhYmxlPiIsIjwvdGFibGU+Il18fCFPLmluZGV4T2YoIjx0ciIpJiZbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il18fCghTy5pbmRleE9mKCI8dGQiKXx8IU8uaW5kZXhPZigiPHRoIikpJiZbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il18fCFPLmluZGV4T2YoIjxjb2wiKSYmWzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdfHwhby5zdXBwb3J0Lmh0bWxTZXJpYWxpemUmJlsxLCJkaXY8ZGl2PiIsIjwvZGl2PiJdfHxbMCwiIiwiIl07TC5pbm5lckhUTUw9UVsxXStTK1FbMl07d2hpbGUoUVswXS0tKXtMPUwubGFzdENoaWxkfWlmKCFvLnN1cHBvcnQudGJvZHkpe3ZhciBSPS88dGJvZHkvaS50ZXN0KFMpLE49IU8uaW5kZXhPZigiPHRhYmxlIikmJiFSP0wuZmlyc3RDaGlsZCYmTC5maXJzdENoaWxkLmNoaWxkTm9kZXM6UVsxXT09Ijx0YWJsZT4iJiYhUj9MLmNoaWxkTm9kZXM6W107Zm9yKHZhciBNPU4ubGVuZ3RoLTE7TT49MDstLU0pe2lmKG8ubm9kZU5hbWUoTltNXSwidGJvZHkiKSYmIU5bTV0uY2hpbGROb2Rlcy5sZW5ndGgpe05bTV0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChOW01dKX19fWlmKCFvLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJi9eXHMvLnRlc3QoUykpe0wuaW5zZXJ0QmVmb3JlKEsuY3JlYXRlVGV4dE5vZGUoUy5tYXRjaCgvXlxzKi8pWzBdKSxMLmZpcnN0Q2hpbGQpfVM9by5tYWtlQXJyYXkoTC5jaGlsZE5vZGVzKX1pZihTLm5vZGVUeXBlKXtHLnB1c2goUyl9ZWxzZXtHPW8ubWVyZ2UoRyxTKX19KTtpZihJKXtmb3IodmFyIEo9MDtHW0pdO0orKyl7aWYoby5ub2RlTmFtZShHW0pdLCJzY3JpcHQiKSYmKCFHW0pdLnR5cGV8fEdbSl0udHlwZS50b0xvd2VyQ2FzZSgpPT09InRleHQvamF2YXNjcmlwdCIpKXtFLnB1c2goR1tKXS5wYXJlbnROb2RlP0dbSl0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChHW0pdKTpHW0pdKX1lbHNle2lmKEdbSl0ubm9kZVR5cGU9PT0xKXtHLnNwbGljZS5hcHBseShHLFtKKzEsMF0uY29uY2F0KG8ubWFrZUFycmF5KEdbSl0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpKSkpfUkuYXBwZW5kQ2hpbGQoR1tKXSl9fXJldHVybiBFfXJldHVybiBHfSxhdHRyOmZ1bmN0aW9uKEosRyxLKXtpZighSnx8Si5ub2RlVHlwZT09M3x8Si5ub2RlVHlwZT09OCl7cmV0dXJuIGd9dmFyIEg9IW8uaXNYTUxEb2MoSiksTD1LIT09ZztHPUgmJm8ucHJvcHNbR118fEc7aWYoSi50YWdOYW1lKXt2YXIgRj0vaHJlZnxzcmN8c3R5bGUvLnRlc3QoRyk7aWYoRz09InNlbGVjdGVkIiYmSi5wYXJlbnROb2RlKXtKLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleH1pZihHIGluIEomJkgmJiFGKXtpZihMKXtpZihHPT0idHlwZSImJm8ubm9kZU5hbWUoSiwiaW5wdXQiKSYmSi5wYXJlbnROb2RlKXt0aHJvdyJ0eXBlIHByb3BlcnR5IGNhbid0IGJlIGNoYW5nZWQifUpbR109S31pZihvLm5vZGVOYW1lKEosImZvcm0iKSYmSi5nZXRBdHRyaWJ1dGVOb2RlKEcpKXtyZXR1cm4gSi5nZXRBdHRyaWJ1dGVOb2RlKEcpLm5vZGVWYWx1ZX1pZihHPT0idGFiSW5kZXgiKXt2YXIgST1KLmdldEF0dHJpYnV0ZU5vZGUoInRhYkluZGV4Iik7cmV0dXJuIEkmJkkuc3BlY2lmaWVkP0kudmFsdWU6Si5ub2RlTmFtZS5tYXRjaCgvKGJ1dHRvbnxpbnB1dHxvYmplY3R8c2VsZWN0fHRleHRhcmVhKS9pKT8wOkoubm9kZU5hbWUubWF0Y2goL14oYXxhcmVhKSQvaSkmJkouaHJlZj8wOmd9cmV0dXJuIEpbR119aWYoIW8uc3VwcG9ydC5zdHlsZSYmSCYmRz09InN0eWxlIil7cmV0dXJuIG8uYXR0cihKLnN0eWxlLCJjc3NUZXh0IixLKX1pZihMKXtKLnNldEF0dHJpYnV0ZShHLCIiK0spfXZhciBFPSFvLnN1cHBvcnQuaHJlZk5vcm1hbGl6ZWQmJkgmJkY/Si5nZXRBdHRyaWJ1dGUoRywyKTpKLmdldEF0dHJpYnV0ZShHKTtyZXR1cm4gRT09PW51bGw/ZzpFfWlmKCFvLnN1cHBvcnQub3BhY2l0eSYmRz09Im9wYWNpdHkiKXtpZihMKXtKLnpvb209MTtKLmZpbHRlcj0oSi5maWx0ZXJ8fCIiKS5yZXBsYWNlKC9hbHBoYVwoW14pXSpcKS8sIiIpKyhwYXJzZUludChLKSsiIj09Ik5hTiI/IiI6ImFscGhhKG9wYWNpdHk9IitLKjEwMCsiKSIpfXJldHVybiBKLmZpbHRlciYmSi5maWx0ZXIuaW5kZXhPZigib3BhY2l0eT0iKT49MD8ocGFyc2VGbG9hdChKLmZpbHRlci5tYXRjaCgvb3BhY2l0eT0oW14pXSopLylbMV0pLzEwMCkrIiI6IiJ9Rz1HLnJlcGxhY2UoLy0oW2Etel0pL2lnLGZ1bmN0aW9uKE0sTil7cmV0dXJuIE4udG9VcHBlckNhc2UoKX0pO2lmKEwpe0pbR109S31yZXR1cm4gSltHXX0sdHJpbTpmdW5jdGlvbihFKXtyZXR1cm4oRXx8IiIpLnJlcGxhY2UoL15ccyt8XHMrJC9nLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKEcpe3ZhciBFPVtdO2lmKEchPW51bGwpe3ZhciBGPUcubGVuZ3RoO2lmKEY9PW51bGx8fHR5cGVvZiBHPT09InN0cmluZyJ8fG8uaXNGdW5jdGlvbihHKXx8Ry5zZXRJbnRlcnZhbCl7RVswXT1HfWVsc2V7d2hpbGUoRil7RVstLUZdPUdbRl19fX1yZXR1cm4gRX0saW5BcnJheTpmdW5jdGlvbihHLEgpe2Zvcih2YXIgRT0wLEY9SC5sZW5ndGg7RTxGO0UrKyl7aWYoSFtFXT09PUcpe3JldHVybiBFfX1yZXR1cm4gLTF9LG1lcmdlOmZ1bmN0aW9uKEgsRSl7dmFyIEY9MCxHLEk9SC5sZW5ndGg7aWYoIW8uc3VwcG9ydC5nZXRBbGwpe3doaWxlKChHPUVbRisrXSkhPW51bGwpe2lmKEcubm9kZVR5cGUhPTgpe0hbSSsrXT1HfX19ZWxzZXt3aGlsZSgoRz1FW0YrK10pIT1udWxsKXtIW0krK109R319cmV0dXJuIEh9LHVuaXF1ZTpmdW5jdGlvbihLKXt2YXIgRj1bXSxFPXt9O3RyeXtmb3IodmFyIEc9MCxIPUsubGVuZ3RoO0c8SDtHKyspe3ZhciBKPW8uZGF0YShLW0ddKTtpZighRVtKXSl7RVtKXT10cnVlO0YucHVzaChLW0ddKX19fWNhdGNoKEkpe0Y9S31yZXR1cm4gRn0sZ3JlcDpmdW5jdGlvbihGLEosRSl7dmFyIEc9W107Zm9yKHZhciBIPTAsST1GLmxlbmd0aDtIPEk7SCsrKXtpZighRSE9IUooRltIXSxIKSl7Ry5wdXNoKEZbSF0pfX1yZXR1cm4gR30sbWFwOmZ1bmN0aW9uKEUsSil7dmFyIEY9W107Zm9yKHZhciBHPTAsSD1FLmxlbmd0aDtHPEg7RysrKXt2YXIgST1KKEVbR10sRyk7aWYoSSE9bnVsbCl7RltGLmxlbmd0aF09SX19cmV0dXJuIEYuY29uY2F0LmFwcGx5KFtdLEYpfX0pO3ZhciBDPW5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKTtvLmJyb3dzZXI9e3ZlcnNpb246KEMubWF0Y2goLy4rKD86cnZ8aXR8cmF8aWUpW1wvOiBdKFtcZC5dKykvKXx8WzAsIjAiXSlbMV0sc2FmYXJpOi93ZWJraXQvLnRlc3QoQyksb3BlcmE6L29wZXJhLy50ZXN0KEMpLG1zaWU6L21zaWUvLnRlc3QoQykmJiEvb3BlcmEvLnRlc3QoQyksbW96aWxsYTovbW96aWxsYS8udGVzdChDKSYmIS8oY29tcGF0aWJsZXx3ZWJraXQpLy50ZXN0KEMpfTtvLmVhY2goe3BhcmVudDpmdW5jdGlvbihFKXtyZXR1cm4gRS5wYXJlbnROb2RlfSxwYXJlbnRzOmZ1bmN0aW9uKEUpe3JldHVybiBvLmRpcihFLCJwYXJlbnROb2RlIil9LG5leHQ6ZnVuY3Rpb24oRSl7cmV0dXJuIG8ubnRoKEUsMiwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihFKXtyZXR1cm4gby5udGgoRSwyLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihFKXtyZXR1cm4gby5kaXIoRSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihFKXtyZXR1cm4gby5kaXIoRSwicHJldmlvdXNTaWJsaW5nIil9LHNpYmxpbmdzOmZ1bmN0aW9uKEUpe3JldHVybiBvLnNpYmxpbmcoRS5wYXJlbnROb2RlLmZpcnN0Q2hpbGQsRSl9LGNoaWxkcmVuOmZ1bmN0aW9uKEUpe3JldHVybiBvLnNpYmxpbmcoRS5maXJzdENoaWxkKX0sY29udGVudHM6ZnVuY3Rpb24oRSl7cmV0dXJuIG8ubm9kZU5hbWUoRSwiaWZyYW1lIik/RS5jb250ZW50RG9jdW1lbnR8fEUuY29udGVudFdpbmRvdy5kb2N1bWVudDpvLm1ha2VBcnJheShFLmNoaWxkTm9kZXMpfX0sZnVuY3Rpb24oRSxGKXtvLmZuW0VdPWZ1bmN0aW9uKEcpe3ZhciBIPW8ubWFwKHRoaXMsRik7aWYoRyYmdHlwZW9mIEc9PSJzdHJpbmciKXtIPW8ubXVsdGlGaWx0ZXIoRyxIKX1yZXR1cm4gdGhpcy5wdXNoU3RhY2soby51bmlxdWUoSCksRSxHKX19KTtvLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rpb24oRyl7dmFyIEo9W10sTD1vKEcpO2Zvcih2YXIgSz0wLEg9TC5sZW5ndGg7SzxIO0srKyl7dmFyIEk9KEs+MD90aGlzLmNsb25lKHRydWUpOnRoaXMpLmdldCgpO28uZm5bRl0uYXBwbHkobyhMW0tdKSxJKTtKPUouY29uY2F0KEkpfXJldHVybiB0aGlzLnB1c2hTdGFjayhKLEUsRyl9fSk7by5lYWNoKHtyZW1vdmVBdHRyOmZ1bmN0aW9uKEUpe28uYXR0cih0aGlzLEUsIiIpO2lmKHRoaXMubm9kZVR5cGU9PTEpe3RoaXMucmVtb3ZlQXR0cmlidXRlKEUpfX0sYWRkQ2xhc3M6ZnVuY3Rpb24oRSl7by5jbGFzc05hbWUuYWRkKHRoaXMsRSl9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKEUpe28uY2xhc3NOYW1lLnJlbW92ZSh0aGlzLEUpfSx0b2dnbGVDbGFzczpmdW5jdGlvbihGLEUpe2lmKHR5cGVvZiBFIT09ImJvb2xlYW4iKXtFPSFvLmNsYXNzTmFtZS5oYXModGhpcyxGKX1vLmNsYXNzTmFtZVtFPyJhZGQiOiJyZW1vdmUiXSh0aGlzLEYpfSxyZW1vdmU6ZnVuY3Rpb24oRSl7aWYoIUV8fG8uZmlsdGVyKEUsW3RoaXNdKS5sZW5ndGgpe28oIioiLHRoaXMpLmFkZChbdGhpc10pLmVhY2goZnVuY3Rpb24oKXtvLmV2ZW50LnJlbW92ZSh0aGlzKTtvLnJlbW92ZURhdGEodGhpcyl9KTtpZih0aGlzLnBhcmVudE5vZGUpe3RoaXMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzKX19fSxlbXB0eTpmdW5jdGlvbigpe28odGhpcykuY2hpbGRyZW4oKS5yZW1vdmUoKTt3aGlsZSh0aGlzLmZpcnN0Q2hpbGQpe3RoaXMucmVtb3ZlQ2hpbGQodGhpcy5maXJzdENoaWxkKX19fSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lYWNoKEYsYXJndW1lbnRzKX19KTtmdW5jdGlvbiBqKEUsRil7cmV0dXJuIEVbMF0mJnBhcnNlSW50KG8uY3VyQ1NTKEVbMF0sRix0cnVlKSwxMCl8fDB9dmFyIGg9ImpRdWVyeSIrZSgpLHY9MCxBPXt9O28uZXh0ZW5kKHtjYWNoZTp7fSxkYXRhOmZ1bmN0aW9uKEYsRSxHKXtGPUY9PWw/QTpGO3ZhciBIPUZbaF07aWYoIUgpe0g9RltoXT0rK3Z9aWYoRSYmIW8uY2FjaGVbSF0pe28uY2FjaGVbSF09e319aWYoRyE9PWcpe28uY2FjaGVbSF1bRV09R31yZXR1cm4gRT9vLmNhY2hlW0hdW0VdOkh9LHJlbW92ZURhdGE6ZnVuY3Rpb24oRixFKXtGPUY9PWw/QTpGO3ZhciBIPUZbaF07aWYoRSl7aWYoby5jYWNoZVtIXSl7ZGVsZXRlIG8uY2FjaGVbSF1bRV07RT0iIjtmb3IoRSBpbiBvLmNhY2hlW0hdKXticmVha31pZighRSl7by5yZW1vdmVEYXRhKEYpfX19ZWxzZXt0cnl7ZGVsZXRlIEZbaF19Y2F0Y2goRyl7aWYoRi5yZW1vdmVBdHRyaWJ1dGUpe0YucmVtb3ZlQXR0cmlidXRlKGgpfX1kZWxldGUgby5jYWNoZVtIXX19LHF1ZXVlOmZ1bmN0aW9uKEYsRSxIKXtpZihGKXtFPShFfHwiZngiKSsicXVldWUiO3ZhciBHPW8uZGF0YShGLEUpO2lmKCFHfHxvLmlzQXJyYXkoSCkpe0c9by5kYXRhKEYsRSxvLm1ha2VBcnJheShIKSl9ZWxzZXtpZihIKXtHLnB1c2goSCl9fX1yZXR1cm4gR30sZGVxdWV1ZTpmdW5jdGlvbihILEcpe3ZhciBFPW8ucXVldWUoSCxHKSxGPUUuc2hpZnQoKTtpZighR3x8Rz09PSJmeCIpe0Y9RVswXX1pZihGIT09Zyl7Ri5jYWxsKEgpfX19KTtvLmZuLmV4dGVuZCh7ZGF0YTpmdW5jdGlvbihFLEcpe3ZhciBIPUUuc3BsaXQoIi4iKTtIWzFdPUhbMV0/Ii4iK0hbMV06IiI7aWYoRz09PWcpe3ZhciBGPXRoaXMudHJpZ2dlckhhbmRsZXIoImdldERhdGEiK0hbMV0rIiEiLFtIWzBdXSk7aWYoRj09PWcmJnRoaXMubGVuZ3RoKXtGPW8uZGF0YSh0aGlzWzBdLEUpfXJldHVybiBGPT09ZyYmSFsxXT90aGlzLmRhdGEoSFswXSk6Rn1lbHNle3JldHVybiB0aGlzLnRyaWdnZXIoInNldERhdGEiK0hbMV0rIiEiLFtIWzBdLEddKS5lYWNoKGZ1bmN0aW9uKCl7by5kYXRhKHRoaXMsRSxHKX0pfX0scmVtb3ZlRGF0YTpmdW5jdGlvbihFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5yZW1vdmVEYXRhKHRoaXMsRSl9KX0scXVldWU6ZnVuY3Rpb24oRSxGKXtpZih0eXBlb2YgRSE9PSJzdHJpbmciKXtGPUU7RT0iZngifWlmKEY9PT1nKXtyZXR1cm4gby5xdWV1ZSh0aGlzWzBdLEUpfXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgRz1vLnF1ZXVlKHRoaXMsRSxGKTtpZihFPT0iZngiJiZHLmxlbmd0aD09MSl7R1swXS5jYWxsKHRoaXMpfX0pfSxkZXF1ZXVlOmZ1bmN0aW9uKEUpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtvLmRlcXVldWUodGhpcyxFKX0pfX0pOwovKgogKiBTaXp6bGUgQ1NTIFNlbGVjdG9yIEVuZ2luZSAtIHYwLjkuMwogKiAgQ29weXJpZ2h0IDIwMDksIFRoZSBEb2pvIEZvdW5kYXRpb24KICogIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQsIEJTRCwgYW5kIEdQTCBMaWNlbnNlcy4KICogIE1vcmUgaW5mb3JtYXRpb246IGh0dHA6Ly9zaXp6bGVqcy5jb20vCiAqLwooZnVuY3Rpb24oKXt2YXIgUj0vKCg/OlwoKD86XChbXigpXStcKXxbXigpXSspK1wpfFxbKD86XFtbXltcXV0qXF18WyciXVteJyJdKlsnIl18W15bXF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xbPit+XSkoXHMqLFxzKik/L2csTD0wLEg9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZzt2YXIgRj1mdW5jdGlvbihZLFUsYWIsYWMpe2FiPWFifHxbXTtVPVV8fGRvY3VtZW50O2lmKFUubm9kZVR5cGUhPT0xJiZVLm5vZGVUeXBlIT09OSl7cmV0dXJuW119aWYoIVl8fHR5cGVvZiBZIT09InN0cmluZyIpe3JldHVybiBhYn12YXIgWj1bXSxXLGFmLGFpLFQsYWQsVixYPXRydWU7Ui5sYXN0SW5kZXg9MDt3aGlsZSgoVz1SLmV4ZWMoWSkpIT09bnVsbCl7Wi5wdXNoKFdbMV0pO2lmKFdbMl0pe1Y9UmVnRXhwLnJpZ2h0Q29udGV4dDticmVha319aWYoWi5sZW5ndGg+MSYmTS5leGVjKFkpKXtpZihaLmxlbmd0aD09PTImJkkucmVsYXRpdmVbWlswXV0pe2FmPUooWlswXStaWzFdLFUpfWVsc2V7YWY9SS5yZWxhdGl2ZVtaWzBdXT9bVV06RihaLnNoaWZ0KCksVSk7d2hpbGUoWi5sZW5ndGgpe1k9Wi5zaGlmdCgpO2lmKEkucmVsYXRpdmVbWV0pe1krPVouc2hpZnQoKX1hZj1KKFksYWYpfX19ZWxzZXt2YXIgYWU9YWM/e2V4cHI6Wi5wb3AoKSxzZXQ6RShhYyl9OkYuZmluZChaLnBvcCgpLFoubGVuZ3RoPT09MSYmVS5wYXJlbnROb2RlP1UucGFyZW50Tm9kZTpVLFEoVSkpO2FmPUYuZmlsdGVyKGFlLmV4cHIsYWUuc2V0KTtpZihaLmxlbmd0aD4wKXthaT1FKGFmKX1lbHNle1g9ZmFsc2V9d2hpbGUoWi5sZW5ndGgpe3ZhciBhaD1aLnBvcCgpLGFnPWFoO2lmKCFJLnJlbGF0aXZlW2FoXSl7YWg9IiJ9ZWxzZXthZz1aLnBvcCgpfWlmKGFnPT1udWxsKXthZz1VfUkucmVsYXRpdmVbYWhdKGFpLGFnLFEoVSkpfX1pZighYWkpe2FpPWFmfWlmKCFhaSl7dGhyb3ciU3ludGF4IGVycm9yLCB1bnJlY29nbml6ZWQgZXhwcmVzc2lvbjogIisoYWh8fFkpfWlmKEguY2FsbChhaSk9PT0iW29iamVjdCBBcnJheV0iKXtpZighWCl7YWIucHVzaC5hcHBseShhYixhaSl9ZWxzZXtpZihVLm5vZGVUeXBlPT09MSl7Zm9yKHZhciBhYT0wO2FpW2FhXSE9bnVsbDthYSsrKXtpZihhaVthYV0mJihhaVthYV09PT10cnVlfHxhaVthYV0ubm9kZVR5cGU9PT0xJiZLKFUsYWlbYWFdKSkpe2FiLnB1c2goYWZbYWFdKX19fWVsc2V7Zm9yKHZhciBhYT0wO2FpW2FhXSE9bnVsbDthYSsrKXtpZihhaVthYV0mJmFpW2FhXS5ub2RlVHlwZT09PTEpe2FiLnB1c2goYWZbYWFdKX19fX19ZWxzZXtFKGFpLGFiKX1pZihWKXtGKFYsVSxhYixhYyk7aWYoRyl7aGFzRHVwbGljYXRlPWZhbHNlO2FiLnNvcnQoRyk7aWYoaGFzRHVwbGljYXRlKXtmb3IodmFyIGFhPTE7YWE8YWIubGVuZ3RoO2FhKyspe2lmKGFiW2FhXT09PWFiW2FhLTFdKXthYi5zcGxpY2UoYWEtLSwxKX19fX19cmV0dXJuIGFifTtGLm1hdGNoZXM9ZnVuY3Rpb24oVCxVKXtyZXR1cm4gRihULG51bGwsbnVsbCxVKX07Ri5maW5kPWZ1bmN0aW9uKGFhLFQsYWIpe3ZhciBaLFg7aWYoIWFhKXtyZXR1cm5bXX1mb3IodmFyIFc9MCxWPUkub3JkZXIubGVuZ3RoO1c8VjtXKyspe3ZhciBZPUkub3JkZXJbV10sWDtpZigoWD1JLm1hdGNoW1ldLmV4ZWMoYWEpKSl7dmFyIFU9UmVnRXhwLmxlZnRDb250ZXh0O2lmKFUuc3Vic3RyKFUubGVuZ3RoLTEpIT09IlxcIil7WFsxXT0oWFsxXXx8IiIpLnJlcGxhY2UoL1xcL2csIiIpO1o9SS5maW5kW1ldKFgsVCxhYik7aWYoWiE9bnVsbCl7YWE9YWEucmVwbGFjZShJLm1hdGNoW1ldLCIiKTticmVha319fX1pZighWil7Wj1ULmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIil9cmV0dXJue3NldDpaLGV4cHI6YWF9fTtGLmZpbHRlcj1mdW5jdGlvbihhZCxhYyxhZyxXKXt2YXIgVj1hZCxhaT1bXSxhYT1hYyxZLFQsWj1hYyYmYWNbMF0mJlEoYWNbMF0pO3doaWxlKGFkJiZhYy5sZW5ndGgpe2Zvcih2YXIgYWIgaW4gSS5maWx0ZXIpe2lmKChZPUkubWF0Y2hbYWJdLmV4ZWMoYWQpKSE9bnVsbCl7dmFyIFU9SS5maWx0ZXJbYWJdLGFoLGFmO1Q9ZmFsc2U7aWYoYWE9PWFpKXthaT1bXX1pZihJLnByZUZpbHRlclthYl0pe1k9SS5wcmVGaWx0ZXJbYWJdKFksYWEsYWcsYWksVyxaKTtpZighWSl7VD1haD10cnVlfWVsc2V7aWYoWT09PXRydWUpe2NvbnRpbnVlfX19aWYoWSl7Zm9yKHZhciBYPTA7KGFmPWFhW1hdKSE9bnVsbDtYKyspe2lmKGFmKXthaD1VKGFmLFksWCxhYSk7dmFyIGFlPVdeISFhaDtpZihhZyYmYWghPW51bGwpe2lmKGFlKXtUPXRydWV9ZWxzZXthYVtYXT1mYWxzZX19ZWxzZXtpZihhZSl7YWkucHVzaChhZik7VD10cnVlfX19fX1pZihhaCE9PWcpe2lmKCFhZyl7YWE9YWl9YWQ9YWQucmVwbGFjZShJLm1hdGNoW2FiXSwiIik7aWYoIVQpe3JldHVybltdfWJyZWFrfX19aWYoYWQ9PVYpe2lmKFQ9PW51bGwpe3Rocm93IlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYWR9ZWxzZXticmVha319Vj1hZH1yZXR1cm4gYWF9O3ZhciBJPUYuc2VsZWN0b3JzPXtvcmRlcjpbIklEIiwiTkFNRSIsIlRBRyJdLG1hdGNoOntJRDovIygoPzpbXHdcdTAwYzAtXHVGRkZGXy1dfFxcLikrKS8sQ0xBU1M6L1wuKCg/Oltcd1x1MDBjMC1cdUZGRkZfLV18XFwuKSspLyxOQU1FOi9cW25hbWU9WyciXSooKD86W1x3XHUwMGMwLVx1RkZGRl8tXXxcXC4pKylbJyJdKlxdLyxBVFRSOi9cW1xzKigoPzpbXHdcdTAwYzAtXHVGRkZGXy1dfFxcLikrKVxzKig/OihcUz89KVxzKihbJyJdKikoLio/KVwzfClccypcXS8sVEFHOi9eKCg/Oltcd1x1MDBjMC1cdUZGRkZcKl8tXXxcXC4pKykvLENISUxEOi86KG9ubHl8bnRofGxhc3R8Zmlyc3QpLWNoaWxkKD86XCgoZXZlbnxvZGR8W1xkbistXSopXCkpPy8sUE9TOi86KG50aHxlcXxndHxsdHxmaXJzdHxsYXN0fGV2ZW58b2RkKSg/OlwoKFxkKilcKSk/KD89W14tXXwkKS8sUFNFVURPOi86KCg/Oltcd1x1MDBjMC1cdUZGRkZfLV18XFwuKSspKD86XCgoWyciXSopKCg/OlwoW15cKV0rXCl8W15cMlwoXCldKikrKVwyXCkpPy99LGF0dHJNYXA6eyJjbGFzcyI6ImNsYXNzTmFtZSIsImZvciI6Imh0bWxGb3IifSxhdHRySGFuZGxlOntocmVmOmZ1bmN0aW9uKFQpe3JldHVybiBULmdldEF0dHJpYnV0ZSgiaHJlZiIpfX0scmVsYXRpdmU6eyIrIjpmdW5jdGlvbihhYSxULFope3ZhciBYPXR5cGVvZiBUPT09InN0cmluZyIsYWI9WCYmIS9cVy8udGVzdChUKSxZPVgmJiFhYjtpZihhYiYmIVope1Q9VC50b1VwcGVyQ2FzZSgpfWZvcih2YXIgVz0wLFY9YWEubGVuZ3RoLFU7VzxWO1crKyl7aWYoKFU9YWFbV10pKXt3aGlsZSgoVT1VLnByZXZpb3VzU2libGluZykmJlUubm9kZVR5cGUhPT0xKXt9YWFbV109WXx8VSYmVS5ub2RlTmFtZT09PVQ/VXx8ZmFsc2U6VT09PVR9fWlmKFkpe0YuZmlsdGVyKFQsYWEsdHJ1ZSl9fSwiPiI6ZnVuY3Rpb24oWixVLGFhKXt2YXIgWD10eXBlb2YgVT09PSJzdHJpbmciO2lmKFgmJiEvXFcvLnRlc3QoVSkpe1U9YWE/VTpVLnRvVXBwZXJDYXNlKCk7Zm9yKHZhciBWPTAsVD1aLmxlbmd0aDtWPFQ7VisrKXt2YXIgWT1aW1ZdO2lmKFkpe3ZhciBXPVkucGFyZW50Tm9kZTtaW1ZdPVcubm9kZU5hbWU9PT1VP1c6ZmFsc2V9fX1lbHNle2Zvcih2YXIgVj0wLFQ9Wi5sZW5ndGg7VjxUO1YrKyl7dmFyIFk9WltWXTtpZihZKXtaW1ZdPVg/WS5wYXJlbnROb2RlOlkucGFyZW50Tm9kZT09PVV9fWlmKFgpe0YuZmlsdGVyKFUsWix0cnVlKX19fSwiIjpmdW5jdGlvbihXLFUsWSl7dmFyIFY9TCsrLFQ9UztpZighVS5tYXRjaCgvXFcvKSl7dmFyIFg9VT1ZP1U6VS50b1VwcGVyQ2FzZSgpO1Q9UH1UKCJwYXJlbnROb2RlIixVLFYsVyxYLFkpfSwifiI6ZnVuY3Rpb24oVyxVLFkpe3ZhciBWPUwrKyxUPVM7aWYodHlwZW9mIFU9PT0ic3RyaW5nIiYmIVUubWF0Y2goL1xXLykpe3ZhciBYPVU9WT9VOlUudG9VcHBlckNhc2UoKTtUPVB9VCgicHJldmlvdXNTaWJsaW5nIixVLFYsVyxYLFkpfX0sZmluZDp7SUQ6ZnVuY3Rpb24oVSxWLFcpe2lmKHR5cGVvZiBWLmdldEVsZW1lbnRCeUlkIT09InVuZGVmaW5lZCImJiFXKXt2YXIgVD1WLmdldEVsZW1lbnRCeUlkKFVbMV0pO3JldHVybiBUP1tUXTpbXX19LE5BTUU6ZnVuY3Rpb24oVixZLFope2lmKHR5cGVvZiBZLmdldEVsZW1lbnRzQnlOYW1lIT09InVuZGVmaW5lZCIpe3ZhciBVPVtdLFg9WS5nZXRFbGVtZW50c0J5TmFtZShWWzFdKTtmb3IodmFyIFc9MCxUPVgubGVuZ3RoO1c8VDtXKyspe2lmKFhbV10uZ2V0QXR0cmlidXRlKCJuYW1lIik9PT1WWzFdKXtVLnB1c2goWFtXXSl9fXJldHVybiBVLmxlbmd0aD09PTA/bnVsbDpVfX0sVEFHOmZ1bmN0aW9uKFQsVSl7cmV0dXJuIFUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoVFsxXSl9fSxwcmVGaWx0ZXI6e0NMQVNTOmZ1bmN0aW9uKFcsVSxWLFQsWixhYSl7Vz0iICIrV1sxXS5yZXBsYWNlKC9cXC9nLCIiKSsiICI7aWYoYWEpe3JldHVybiBXfWZvcih2YXIgWD0wLFk7KFk9VVtYXSkhPW51bGw7WCsrKXtpZihZKXtpZihaXihZLmNsYXNzTmFtZSYmKCIgIitZLmNsYXNzTmFtZSsiICIpLmluZGV4T2YoVyk+PTApKXtpZighVil7VC5wdXNoKFkpfX1lbHNle2lmKFYpe1VbWF09ZmFsc2V9fX19cmV0dXJuIGZhbHNlfSxJRDpmdW5jdGlvbihUKXtyZXR1cm4gVFsxXS5yZXBsYWNlKC9cXC9nLCIiKX0sVEFHOmZ1bmN0aW9uKFUsVCl7Zm9yKHZhciBWPTA7VFtWXT09PWZhbHNlO1YrKyl7fXJldHVybiBUW1ZdJiZRKFRbVl0pP1VbMV06VVsxXS50b1VwcGVyQ2FzZSgpfSxDSElMRDpmdW5jdGlvbihUKXtpZihUWzFdPT0ibnRoIil7dmFyIFU9LygtPykoXGQqKW4oKD86XCt8LSk/XGQqKS8uZXhlYyhUWzJdPT0iZXZlbiImJiIybiJ8fFRbMl09PSJvZGQiJiYiMm4rMSJ8fCEvXEQvLnRlc3QoVFsyXSkmJiIwbisiK1RbMl18fFRbMl0pO1RbMl09KFVbMV0rKFVbMl18fDEpKS0wO1RbM109VVszXS0wfVRbMF09TCsrO3JldHVybiBUfSxBVFRSOmZ1bmN0aW9uKFgsVSxWLFQsWSxaKXt2YXIgVz1YWzFdLnJlcGxhY2UoL1xcL2csIiIpO2lmKCFaJiZJLmF0dHJNYXBbV10pe1hbMV09SS5hdHRyTWFwW1ddfWlmKFhbMl09PT0ifj0iKXtYWzRdPSIgIitYWzRdKyIgIn1yZXR1cm4gWH0sUFNFVURPOmZ1bmN0aW9uKFgsVSxWLFQsWSl7aWYoWFsxXT09PSJub3QiKXtpZihYWzNdLm1hdGNoKFIpLmxlbmd0aD4xfHwvXlx3Ly50ZXN0KFhbM10pKXtYWzNdPUYoWFszXSxudWxsLG51bGwsVSl9ZWxzZXt2YXIgVz1GLmZpbHRlcihYWzNdLFUsVix0cnVlXlkpO2lmKCFWKXtULnB1c2guYXBwbHkoVCxXKX1yZXR1cm4gZmFsc2V9fWVsc2V7aWYoSS5tYXRjaC5QT1MudGVzdChYWzBdKXx8SS5tYXRjaC5DSElMRC50ZXN0KFhbMF0pKXtyZXR1cm4gdHJ1ZX19cmV0dXJuIFh9LFBPUzpmdW5jdGlvbihUKXtULnVuc2hpZnQodHJ1ZSk7cmV0dXJuIFR9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKFQpe3JldHVybiBULmRpc2FibGVkPT09ZmFsc2UmJlQudHlwZSE9PSJoaWRkZW4ifSxkaXNhYmxlZDpmdW5jdGlvbihUKXtyZXR1cm4gVC5kaXNhYmxlZD09PXRydWV9LGNoZWNrZWQ6ZnVuY3Rpb24oVCl7cmV0dXJuIFQuY2hlY2tlZD09PXRydWV9LHNlbGVjdGVkOmZ1bmN0aW9uKFQpe1QucGFyZW50Tm9kZS5zZWxlY3RlZEluZGV4O3JldHVybiBULnNlbGVjdGVkPT09dHJ1ZX0scGFyZW50OmZ1bmN0aW9uKFQpe3JldHVybiAhIVQuZmlyc3RDaGlsZH0sZW1wdHk6ZnVuY3Rpb24oVCl7cmV0dXJuICFULmZpcnN0Q2hpbGR9LGhhczpmdW5jdGlvbihWLFUsVCl7cmV0dXJuICEhRihUWzNdLFYpLmxlbmd0aH0saGVhZGVyOmZ1bmN0aW9uKFQpe3JldHVybi9oXGQvaS50ZXN0KFQubm9kZU5hbWUpfSx0ZXh0OmZ1bmN0aW9uKFQpe3JldHVybiJ0ZXh0Ij09PVQudHlwZX0scmFkaW86ZnVuY3Rpb24oVCl7cmV0dXJuInJhZGlvIj09PVQudHlwZX0sY2hlY2tib3g6ZnVuY3Rpb24oVCl7cmV0dXJuImNoZWNrYm94Ij09PVQudHlwZX0sZmlsZTpmdW5jdGlvbihUKXtyZXR1cm4iZmlsZSI9PT1ULnR5cGV9LHBhc3N3b3JkOmZ1bmN0aW9uKFQpe3JldHVybiJwYXNzd29yZCI9PT1ULnR5cGV9LHN1Ym1pdDpmdW5jdGlvbihUKXtyZXR1cm4ic3VibWl0Ij09PVQudHlwZX0saW1hZ2U6ZnVuY3Rpb24oVCl7cmV0dXJuImltYWdlIj09PVQudHlwZX0scmVzZXQ6ZnVuY3Rpb24oVCl7cmV0dXJuInJlc2V0Ij09PVQudHlwZX0sYnV0dG9uOmZ1bmN0aW9uKFQpe3JldHVybiJidXR0b24iPT09VC50eXBlfHxULm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PT0iQlVUVE9OIn0saW5wdXQ6ZnVuY3Rpb24oVCl7cmV0dXJuL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b24vaS50ZXN0KFQubm9kZU5hbWUpfX0sc2V0RmlsdGVyczp7Zmlyc3Q6ZnVuY3Rpb24oVSxUKXtyZXR1cm4gVD09PTB9LGxhc3Q6ZnVuY3Rpb24oVixVLFQsVyl7cmV0dXJuIFU9PT1XLmxlbmd0aC0xfSxldmVuOmZ1bmN0aW9uKFUsVCl7cmV0dXJuIFQlMj09PTB9LG9kZDpmdW5jdGlvbihVLFQpe3JldHVybiBUJTI9PT0xfSxsdDpmdW5jdGlvbihWLFUsVCl7cmV0dXJuIFU8VFszXS0wfSxndDpmdW5jdGlvbihWLFUsVCl7cmV0dXJuIFU+VFszXS0wfSxudGg6ZnVuY3Rpb24oVixVLFQpe3JldHVybiBUWzNdLTA9PVV9LGVxOmZ1bmN0aW9uKFYsVSxUKXtyZXR1cm4gVFszXS0wPT1VfX0sZmlsdGVyOntQU0VVRE86ZnVuY3Rpb24oWixWLFcsYWEpe3ZhciBVPVZbMV0sWD1JLmZpbHRlcnNbVV07aWYoWCl7cmV0dXJuIFgoWixXLFYsYWEpfWVsc2V7aWYoVT09PSJjb250YWlucyIpe3JldHVybihaLnRleHRDb250ZW50fHxaLmlubmVyVGV4dHx8IiIpLmluZGV4T2YoVlszXSk+PTB9ZWxzZXtpZihVPT09Im5vdCIpe3ZhciBZPVZbM107Zm9yKHZhciBXPTAsVD1ZLmxlbmd0aDtXPFQ7VysrKXtpZihZW1ddPT09Wil7cmV0dXJuIGZhbHNlfX1yZXR1cm4gdHJ1ZX19fX0sQ0hJTEQ6ZnVuY3Rpb24oVCxXKXt2YXIgWj1XWzFdLFU9VDtzd2l0Y2goWil7Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijp3aGlsZShVPVUucHJldmlvdXNTaWJsaW5nKXtpZihVLm5vZGVUeXBlPT09MSl7cmV0dXJuIGZhbHNlfX1pZihaPT0iZmlyc3QiKXtyZXR1cm4gdHJ1ZX1VPVQ7Y2FzZSJsYXN0Ijp3aGlsZShVPVUubmV4dFNpYmxpbmcpe2lmKFUubm9kZVR5cGU9PT0xKXtyZXR1cm4gZmFsc2V9fXJldHVybiB0cnVlO2Nhc2UibnRoIjp2YXIgVj1XWzJdLGFjPVdbM107aWYoVj09MSYmYWM9PTApe3JldHVybiB0cnVlfXZhciBZPVdbMF0sYWI9VC5wYXJlbnROb2RlO2lmKGFiJiYoYWIuc2l6Y2FjaGUhPT1ZfHwhVC5ub2RlSW5kZXgpKXt2YXIgWD0wO2ZvcihVPWFiLmZpcnN0Q2hpbGQ7VTtVPVUubmV4dFNpYmxpbmcpe2lmKFUubm9kZVR5cGU9PT0xKXtVLm5vZGVJbmRleD0rK1h9fWFiLnNpemNhY2hlPVl9dmFyIGFhPVQubm9kZUluZGV4LWFjO2lmKFY9PTApe3JldHVybiBhYT09MH1lbHNle3JldHVybihhYSVWPT0wJiZhYS9WPj0wKX19fSxJRDpmdW5jdGlvbihVLFQpe3JldHVybiBVLm5vZGVUeXBlPT09MSYmVS5nZXRBdHRyaWJ1dGUoImlkIik9PT1UfSxUQUc6ZnVuY3Rpb24oVSxUKXtyZXR1cm4oVD09PSIqIiYmVS5ub2RlVHlwZT09PTEpfHxVLm5vZGVOYW1lPT09VH0sQ0xBU1M6ZnVuY3Rpb24oVSxUKXtyZXR1cm4oIiAiKyhVLmNsYXNzTmFtZXx8VS5nZXRBdHRyaWJ1dGUoImNsYXNzIikpKyIgIikuaW5kZXhPZihUKT4tMX0sQVRUUjpmdW5jdGlvbihZLFcpe3ZhciBWPVdbMV0sVD1JLmF0dHJIYW5kbGVbVl0/SS5hdHRySGFuZGxlW1ZdKFkpOllbVl0hPW51bGw/WVtWXTpZLmdldEF0dHJpYnV0ZShWKSxaPVQrIiIsWD1XWzJdLFU9V1s0XTtyZXR1cm4gVD09bnVsbD9YPT09IiE9IjpYPT09Ij0iP1o9PT1VOlg9PT0iKj0iP1ouaW5kZXhPZihVKT49MDpYPT09In49Ij8oIiAiK1orIiAiKS5pbmRleE9mKFUpPj0wOiFVP1omJlQhPT1mYWxzZTpYPT09IiE9Ij9aIT1VOlg9PT0iXj0iP1ouaW5kZXhPZihVKT09PTA6WD09PSIkPSI/Wi5zdWJzdHIoWi5sZW5ndGgtVS5sZW5ndGgpPT09VTpYPT09Inw9Ij9aPT09VXx8Wi5zdWJzdHIoMCxVLmxlbmd0aCsxKT09PVUrIi0iOmZhbHNlfSxQT1M6ZnVuY3Rpb24oWCxVLFYsWSl7dmFyIFQ9VVsyXSxXPUkuc2V0RmlsdGVyc1tUXTtpZihXKXtyZXR1cm4gVyhYLFYsVSxZKX19fX07dmFyIE09SS5tYXRjaC5QT1M7Zm9yKHZhciBPIGluIEkubWF0Y2gpe0kubWF0Y2hbT109UmVnRXhwKEkubWF0Y2hbT10uc291cmNlKy8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJjZSl9dmFyIEU9ZnVuY3Rpb24oVSxUKXtVPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKFUpO2lmKFQpe1QucHVzaC5hcHBseShULFUpO3JldHVybiBUfXJldHVybiBVfTt0cnl7QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNoaWxkTm9kZXMpfWNhdGNoKE4pe0U9ZnVuY3Rpb24oWCxXKXt2YXIgVT1XfHxbXTtpZihILmNhbGwoWCk9PT0iW29iamVjdCBBcnJheV0iKXtBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShVLFgpfWVsc2V7aWYodHlwZW9mIFgubGVuZ3RoPT09Im51bWJlciIpe2Zvcih2YXIgVj0wLFQ9WC5sZW5ndGg7VjxUO1YrKyl7VS5wdXNoKFhbVl0pfX1lbHNle2Zvcih2YXIgVj0wO1hbVl07VisrKXtVLnB1c2goWFtWXSl9fX1yZXR1cm4gVX19dmFyIEc7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKXtHPWZ1bmN0aW9uKFUsVCl7dmFyIFY9VS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihUKSY0Py0xOlU9PT1UPzA6MTtpZihWPT09MCl7aGFzRHVwbGljYXRlPXRydWV9cmV0dXJuIFZ9fWVsc2V7aWYoInNvdXJjZUluZGV4IiBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpe0c9ZnVuY3Rpb24oVSxUKXt2YXIgVj1VLnNvdXJjZUluZGV4LVQuc291cmNlSW5kZXg7aWYoVj09PTApe2hhc0R1cGxpY2F0ZT10cnVlfXJldHVybiBWfX1lbHNle2lmKGRvY3VtZW50LmNyZWF0ZVJhbmdlKXtHPWZ1bmN0aW9uKFcsVSl7dmFyIFY9Vy5vd25lckRvY3VtZW50LmNyZWF0ZVJhbmdlKCksVD1VLm93bmVyRG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtWLnNlbGVjdE5vZGUoVyk7Vi5jb2xsYXBzZSh0cnVlKTtULnNlbGVjdE5vZGUoVSk7VC5jb2xsYXBzZSh0cnVlKTt2YXIgWD1WLmNvbXBhcmVCb3VuZGFyeVBvaW50cyhSYW5nZS5TVEFSVF9UT19FTkQsVCk7aWYoWD09PTApe2hhc0R1cGxpY2F0ZT10cnVlfXJldHVybiBYfX19fShmdW5jdGlvbigpe3ZhciBVPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZvcm0iKSxWPSJzY3JpcHQiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpO1UuaW5uZXJIVE1MPSI8aW5wdXQgbmFtZT0nIitWKyInLz4iO3ZhciBUPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtULmluc2VydEJlZm9yZShVLFQuZmlyc3RDaGlsZCk7aWYoISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChWKSl7SS5maW5kLklEPWZ1bmN0aW9uKFgsWSxaKXtpZih0eXBlb2YgWS5nZXRFbGVtZW50QnlJZCE9PSJ1bmRlZmluZWQiJiYhWil7dmFyIFc9WS5nZXRFbGVtZW50QnlJZChYWzFdKTtyZXR1cm4gVz9XLmlkPT09WFsxXXx8dHlwZW9mIFcuZ2V0QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZXLmdldEF0dHJpYnV0ZU5vZGUoImlkIikubm9kZVZhbHVlPT09WFsxXT9bV106ZzpbXX19O0kuZmlsdGVyLklEPWZ1bmN0aW9uKFksVyl7dmFyIFg9dHlwZW9mIFkuZ2V0QXR0cmlidXRlTm9kZSE9PSJ1bmRlZmluZWQiJiZZLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIFkubm9kZVR5cGU9PT0xJiZYJiZYLm5vZGVWYWx1ZT09PVd9fVQucmVtb3ZlQ2hpbGQoVSl9KSgpOyhmdW5jdGlvbigpe3ZhciBUPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO1QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgiIikpO2lmKFQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGg+MCl7SS5maW5kLlRBRz1mdW5jdGlvbihVLFkpe3ZhciBYPVkuZ2V0RWxlbWVudHNCeVRhZ05hbWUoVVsxXSk7aWYoVVsxXT09PSIqIil7dmFyIFc9W107Zm9yKHZhciBWPTA7WFtWXTtWKyspe2lmKFhbVl0ubm9kZVR5cGU9PT0xKXtXLnB1c2goWFtWXSl9fVg9V31yZXR1cm4gWH19VC5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iO2lmKFQuZmlyc3RDaGlsZCYmdHlwZW9mIFQuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUhPT0idW5kZWZpbmVkIiYmVC5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpIT09IiMiKXtJLmF0dHJIYW5kbGUuaHJlZj1mdW5jdGlvbihVKXtyZXR1cm4gVS5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfX19KSgpO2lmKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwpeyhmdW5jdGlvbigpe3ZhciBUPUYsVT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtVLmlubmVySFRNTD0iPHAgY2xhc3M9J1RFU1QnPjwvcD4iO2lmKFUucXVlcnlTZWxlY3RvckFsbCYmVS5xdWVyeVNlbGVjdG9yQWxsKCIuVEVTVCIpLmxlbmd0aD09PTApe3JldHVybn1GPWZ1bmN0aW9uKFksWCxWLFcpe1g9WHx8ZG9jdW1lbnQ7aWYoIVcmJlgubm9kZVR5cGU9PT05JiYhUShYKSl7dHJ5e3JldHVybiBFKFgucXVlcnlTZWxlY3RvckFsbChZKSxWKX1jYXRjaChaKXt9fXJldHVybiBUKFksWCxWLFcpfTtGLmZpbmQ9VC5maW5kO0YuZmlsdGVyPVQuZmlsdGVyO0Yuc2VsZWN0b3JzPVQuc2VsZWN0b3JzO0YubWF0Y2hlcz1ULm1hdGNoZXN9KSgpfWlmKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXsoZnVuY3Rpb24oKXt2YXIgVD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtULmlubmVySFRNTD0iPGRpdiBjbGFzcz0ndGVzdCBlJz48L2Rpdj48ZGl2IGNsYXNzPSd0ZXN0Jz48L2Rpdj4iO2lmKFQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09PTApe3JldHVybn1ULmxhc3RDaGlsZC5jbGFzc05hbWU9ImUiO2lmKFQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aD09PTEpe3JldHVybn1JLm9yZGVyLnNwbGljZSgxLDAsIkNMQVNTIik7SS5maW5kLkNMQVNTPWZ1bmN0aW9uKFUsVixXKXtpZih0eXBlb2YgVi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT09InVuZGVmaW5lZCImJiFXKXtyZXR1cm4gVi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFVbMV0pfX19KSgpfWZ1bmN0aW9uIFAoVSxaLFksYWQsYWEsYWMpe3ZhciBhYj1VPT0icHJldmlvdXNTaWJsaW5nIiYmIWFjO2Zvcih2YXIgVz0wLFY9YWQubGVuZ3RoO1c8VjtXKyspe3ZhciBUPWFkW1ddO2lmKFQpe2lmKGFiJiZULm5vZGVUeXBlPT09MSl7VC5zaXpjYWNoZT1ZO1Quc2l6c2V0PVd9VD1UW1VdO3ZhciBYPWZhbHNlO3doaWxlKFQpe2lmKFQuc2l6Y2FjaGU9PT1ZKXtYPWFkW1Quc2l6c2V0XTticmVha31pZihULm5vZGVUeXBlPT09MSYmIWFjKXtULnNpemNhY2hlPVk7VC5zaXpzZXQ9V31pZihULm5vZGVOYW1lPT09Wil7WD1UO2JyZWFrfVQ9VFtVXX1hZFtXXT1YfX19ZnVuY3Rpb24gUyhVLFosWSxhZCxhYSxhYyl7dmFyIGFiPVU9PSJwcmV2aW91c1NpYmxpbmciJiYhYWM7Zm9yKHZhciBXPTAsVj1hZC5sZW5ndGg7VzxWO1crKyl7dmFyIFQ9YWRbV107aWYoVCl7aWYoYWImJlQubm9kZVR5cGU9PT0xKXtULnNpemNhY2hlPVk7VC5zaXpzZXQ9V31UPVRbVV07dmFyIFg9ZmFsc2U7d2hpbGUoVCl7aWYoVC5zaXpjYWNoZT09PVkpe1g9YWRbVC5zaXpzZXRdO2JyZWFrfWlmKFQubm9kZVR5cGU9PT0xKXtpZighYWMpe1Quc2l6Y2FjaGU9WTtULnNpenNldD1XfWlmKHR5cGVvZiBaIT09InN0cmluZyIpe2lmKFQ9PT1aKXtYPXRydWU7YnJlYWt9fWVsc2V7aWYoRi5maWx0ZXIoWixbVF0pLmxlbmd0aD4wKXtYPVQ7YnJlYWt9fX1UPVRbVV19YWRbV109WH19fXZhciBLPWRvY3VtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP2Z1bmN0aW9uKFUsVCl7cmV0dXJuIFUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oVCkmMTZ9OmZ1bmN0aW9uKFUsVCl7cmV0dXJuIFUhPT1UJiYoVS5jb250YWlucz9VLmNvbnRhaW5zKFQpOnRydWUpfTt2YXIgUT1mdW5jdGlvbihUKXtyZXR1cm4gVC5ub2RlVHlwZT09PTkmJlQuZG9jdW1lbnRFbGVtZW50Lm5vZGVOYW1lIT09IkhUTUwifHwhIVQub3duZXJEb2N1bWVudCYmUShULm93bmVyRG9jdW1lbnQpfTt2YXIgSj1mdW5jdGlvbihULGFhKXt2YXIgVz1bXSxYPSIiLFksVj1hYS5ub2RlVHlwZT9bYWFdOmFhO3doaWxlKChZPUkubWF0Y2guUFNFVURPLmV4ZWMoVCkpKXtYKz1ZWzBdO1Q9VC5yZXBsYWNlKEkubWF0Y2guUFNFVURPLCIiKX1UPUkucmVsYXRpdmVbVF0/VCsiKiI6VDtmb3IodmFyIFo9MCxVPVYubGVuZ3RoO1o8VTtaKyspe0YoVCxWW1pdLFcpfXJldHVybiBGLmZpbHRlcihYLFcpfTtvLmZpbmQ9RjtvLmZpbHRlcj1GLmZpbHRlcjtvLmV4cHI9Ri5zZWxlY3RvcnM7by5leHByWyI6Il09by5leHByLmZpbHRlcnM7Ri5zZWxlY3RvcnMuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24oVCl7cmV0dXJuIFQub2Zmc2V0V2lkdGg9PT0wfHxULm9mZnNldEhlaWdodD09PTB9O0Yuc2VsZWN0b3JzLmZpbHRlcnMudmlzaWJsZT1mdW5jdGlvbihUKXtyZXR1cm4gVC5vZmZzZXRXaWR0aD4wfHxULm9mZnNldEhlaWdodD4wfTtGLnNlbGVjdG9ycy5maWx0ZXJzLmFuaW1hdGVkPWZ1bmN0aW9uKFQpe3JldHVybiBvLmdyZXAoby50aW1lcnMsZnVuY3Rpb24oVSl7cmV0dXJuIFQ9PT1VLmVsZW19KS5sZW5ndGh9O28ubXVsdGlGaWx0ZXI9ZnVuY3Rpb24oVixULFUpe2lmKFUpe1Y9Ijpub3QoIitWKyIpIn1yZXR1cm4gRi5tYXRjaGVzKFYsVCl9O28uZGlyPWZ1bmN0aW9uKFYsVSl7dmFyIFQ9W10sVz1WW1VdO3doaWxlKFcmJlchPWRvY3VtZW50KXtpZihXLm5vZGVUeXBlPT0xKXtULnB1c2goVyl9Vz1XW1VdfXJldHVybiBUfTtvLm50aD1mdW5jdGlvbihYLFQsVixXKXtUPVR8fDE7dmFyIFU9MDtmb3IoO1g7WD1YW1ZdKXtpZihYLm5vZGVUeXBlPT0xJiYrK1U9PVQpe2JyZWFrfX1yZXR1cm4gWH07by5zaWJsaW5nPWZ1bmN0aW9uKFYsVSl7dmFyIFQ9W107Zm9yKDtWO1Y9Vi5uZXh0U2libGluZyl7aWYoVi5ub2RlVHlwZT09MSYmViE9VSl7VC5wdXNoKFYpfX1yZXR1cm4gVH07cmV0dXJuO2wuU2l6emxlPUZ9KSgpO28uZXZlbnQ9e2FkZDpmdW5jdGlvbihJLEYsSCxLKXtpZihJLm5vZGVUeXBlPT0zfHxJLm5vZGVUeXBlPT04KXtyZXR1cm59aWYoSS5zZXRJbnRlcnZhbCYmSSE9bCl7ST1sfWlmKCFILmd1aWQpe0guZ3VpZD10aGlzLmd1aWQrK31pZihLIT09Zyl7dmFyIEc9SDtIPXRoaXMucHJveHkoRyk7SC5kYXRhPUt9dmFyIEU9by5kYXRhKEksImV2ZW50cyIpfHxvLmRhdGEoSSwiZXZlbnRzIix7fSksSj1vLmRhdGEoSSwiaGFuZGxlIil8fG8uZGF0YShJLCJoYW5kbGUiLGZ1bmN0aW9uKCl7cmV0dXJuIHR5cGVvZiBvIT09InVuZGVmaW5lZCImJiFvLmV2ZW50LnRyaWdnZXJlZD9vLmV2ZW50LmhhbmRsZS5hcHBseShhcmd1bWVudHMuY2FsbGVlLmVsZW0sYXJndW1lbnRzKTpnfSk7Si5lbGVtPUk7by5lYWNoKEYuc3BsaXQoL1xzKy8pLGZ1bmN0aW9uKE0sTil7dmFyIE89Ti5zcGxpdCgiLiIpO049Ty5zaGlmdCgpO0gudHlwZT1PLnNsaWNlKCkuc29ydCgpLmpvaW4oIi4iKTt2YXIgTD1FW05dO2lmKG8uZXZlbnQuc3BlY2lhbEFsbFtOXSl7by5ldmVudC5zcGVjaWFsQWxsW05dLnNldHVwLmNhbGwoSSxLLE8pfWlmKCFMKXtMPUVbTl09e307aWYoIW8uZXZlbnQuc3BlY2lhbFtOXXx8by5ldmVudC5zcGVjaWFsW05dLnNldHVwLmNhbGwoSSxLLE8pPT09ZmFsc2Upe2lmKEkuYWRkRXZlbnRMaXN0ZW5lcil7SS5hZGRFdmVudExpc3RlbmVyKE4sSixmYWxzZSl9ZWxzZXtpZihJLmF0dGFjaEV2ZW50KXtJLmF0dGFjaEV2ZW50KCJvbiIrTixKKX19fX1MW0guZ3VpZF09SDtvLmV2ZW50Lmdsb2JhbFtOXT10cnVlfSk7ST1udWxsfSxndWlkOjEsZ2xvYmFsOnt9LHJlbW92ZTpmdW5jdGlvbihLLEgsSil7aWYoSy5ub2RlVHlwZT09M3x8Sy5ub2RlVHlwZT09OCl7cmV0dXJufXZhciBHPW8uZGF0YShLLCJldmVudHMiKSxGLEU7aWYoRyl7aWYoSD09PWd8fCh0eXBlb2YgSD09PSJzdHJpbmciJiZILmNoYXJBdCgwKT09Ii4iKSl7Zm9yKHZhciBJIGluIEcpe3RoaXMucmVtb3ZlKEssSSsoSHx8IiIpKX19ZWxzZXtpZihILnR5cGUpe0o9SC5oYW5kbGVyO0g9SC50eXBlfW8uZWFjaChILnNwbGl0KC9ccysvKSxmdW5jdGlvbihNLE8pe3ZhciBRPU8uc3BsaXQoIi4iKTtPPVEuc2hpZnQoKTt2YXIgTj1SZWdFeHAoIihefFxcLikiK1Euc2xpY2UoKS5zb3J0KCkuam9pbigiLipcXC4iKSsiKFxcLnwkKSIpO2lmKEdbT10pe2lmKEope2RlbGV0ZSBHW09dW0ouZ3VpZF19ZWxzZXtmb3IodmFyIFAgaW4gR1tPXSl7aWYoTi50ZXN0KEdbT11bUF0udHlwZSkpe2RlbGV0ZSBHW09dW1BdfX19aWYoby5ldmVudC5zcGVjaWFsQWxsW09dKXtvLmV2ZW50LnNwZWNpYWxBbGxbT10udGVhcmRvd24uY2FsbChLLFEpfWZvcihGIGluIEdbT10pe2JyZWFrfWlmKCFGKXtpZighby5ldmVudC5zcGVjaWFsW09dfHxvLmV2ZW50LnNwZWNpYWxbT10udGVhcmRvd24uY2FsbChLLFEpPT09ZmFsc2Upe2lmKEsucmVtb3ZlRXZlbnRMaXN0ZW5lcil7Sy5yZW1vdmVFdmVudExpc3RlbmVyKE8sby5kYXRhKEssImhhbmRsZSIpLGZhbHNlKX1lbHNle2lmKEsuZGV0YWNoRXZlbnQpe0suZGV0YWNoRXZlbnQoIm9uIitPLG8uZGF0YShLLCJoYW5kbGUiKSl9fX1GPW51bGw7ZGVsZXRlIEdbT119fX0pfWZvcihGIGluIEcpe2JyZWFrfWlmKCFGKXt2YXIgTD1vLmRhdGEoSywiaGFuZGxlIik7aWYoTCl7TC5lbGVtPW51bGx9by5yZW1vdmVEYXRhKEssImV2ZW50cyIpO28ucmVtb3ZlRGF0YShLLCJoYW5kbGUiKX19fSx0cmlnZ2VyOmZ1bmN0aW9uKEksSyxILEUpe3ZhciBHPUkudHlwZXx8STtpZighRSl7ST10eXBlb2YgST09PSJvYmplY3QiP0lbaF0/STpvLmV4dGVuZChvLkV2ZW50KEcpLEkpOm8uRXZlbnQoRyk7aWYoRy5pbmRleE9mKCIhIik+PTApe0kudHlwZT1HPUcuc2xpY2UoMCwtMSk7SS5leGNsdXNpdmU9dHJ1ZX1pZighSCl7SS5zdG9wUHJvcGFnYXRpb24oKTtpZih0aGlzLmdsb2JhbFtHXSl7by5lYWNoKG8uY2FjaGUsZnVuY3Rpb24oKXtpZih0aGlzLmV2ZW50cyYmdGhpcy5ldmVudHNbR10pe28uZXZlbnQudHJpZ2dlcihJLEssdGhpcy5oYW5kbGUuZWxlbSl9fSl9fWlmKCFIfHxILm5vZGVUeXBlPT0zfHxILm5vZGVUeXBlPT04KXtyZXR1cm4gZ31JLnJlc3VsdD1nO0kudGFyZ2V0PUg7Sz1vLm1ha2VBcnJheShLKTtLLnVuc2hpZnQoSSl9SS5jdXJyZW50VGFyZ2V0PUg7dmFyIEo9by5kYXRhKEgsImhhbmRsZSIpO2lmKEope0ouYXBwbHkoSCxLKX1pZigoIUhbR118fChvLm5vZGVOYW1lKEgsImEiKSYmRz09ImNsaWNrIikpJiZIWyJvbiIrR10mJkhbIm9uIitHXS5hcHBseShILEspPT09ZmFsc2Upe0kucmVzdWx0PWZhbHNlfWlmKCFFJiZIW0ddJiYhSS5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmIShvLm5vZGVOYW1lKEgsImEiKSYmRz09ImNsaWNrIikpe3RoaXMudHJpZ2dlcmVkPXRydWU7dHJ5e0hbR10oKX1jYXRjaChMKXt9fXRoaXMudHJpZ2dlcmVkPWZhbHNlO2lmKCFJLmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpe3ZhciBGPUgucGFyZW50Tm9kZXx8SC5vd25lckRvY3VtZW50O2lmKEYpe28uZXZlbnQudHJpZ2dlcihJLEssRix0cnVlKX19fSxoYW5kbGU6ZnVuY3Rpb24oSyl7dmFyIEosRTtLPWFyZ3VtZW50c1swXT1vLmV2ZW50LmZpeChLfHxsLmV2ZW50KTtLLmN1cnJlbnRUYXJnZXQ9dGhpczt2YXIgTD1LLnR5cGUuc3BsaXQoIi4iKTtLLnR5cGU9TC5zaGlmdCgpO0o9IUwubGVuZ3RoJiYhSy5leGNsdXNpdmU7dmFyIEk9UmVnRXhwKCIoXnxcXC4pIitMLnNsaWNlKCkuc29ydCgpLmpvaW4oIi4qXFwuIikrIihcXC58JCkiKTtFPShvLmRhdGEodGhpcywiZXZlbnRzIil8fHt9KVtLLnR5cGVdO2Zvcih2YXIgRyBpbiBFKXt2YXIgSD1FW0ddO2lmKEp8fEkudGVzdChILnR5cGUpKXtLLmhhbmRsZXI9SDtLLmRhdGE9SC5kYXRhO3ZhciBGPUguYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKEYhPT1nKXtLLnJlc3VsdD1GO2lmKEY9PT1mYWxzZSl7Sy5wcmV2ZW50RGVmYXVsdCgpO0suc3RvcFByb3BhZ2F0aW9uKCl9fWlmKEsuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKSl7YnJlYWt9fX19LHByb3BzOiJhbHRLZXkgYXR0ckNoYW5nZSBhdHRyTmFtZSBidWJibGVzIGJ1dHRvbiBjYW5jZWxhYmxlIGNoYXJDb2RlIGNsaWVudFggY2xpZW50WSBjdHJsS2V5IGN1cnJlbnRUYXJnZXQgZGF0YSBkZXRhaWwgZXZlbnRQaGFzZSBmcm9tRWxlbWVudCBoYW5kbGVyIGtleUNvZGUgbWV0YUtleSBuZXdWYWx1ZSBvcmlnaW5hbFRhcmdldCBwYWdlWCBwYWdlWSBwcmV2VmFsdWUgcmVsYXRlZE5vZGUgcmVsYXRlZFRhcmdldCBzY3JlZW5YIHNjcmVlblkgc2hpZnRLZXkgc3JjRWxlbWVudCB0YXJnZXQgdG9FbGVtZW50IHZpZXcgd2hlZWxEZWx0YSB3aGljaCIuc3BsaXQoIiAiKSxmaXg6ZnVuY3Rpb24oSCl7aWYoSFtoXSl7cmV0dXJuIEh9dmFyIEY9SDtIPW8uRXZlbnQoRik7Zm9yKHZhciBHPXRoaXMucHJvcHMubGVuZ3RoLEo7Rzspe0o9dGhpcy5wcm9wc1stLUddO0hbSl09RltKXX1pZighSC50YXJnZXQpe0gudGFyZ2V0PUguc3JjRWxlbWVudHx8ZG9jdW1lbnR9aWYoSC50YXJnZXQubm9kZVR5cGU9PTMpe0gudGFyZ2V0PUgudGFyZ2V0LnBhcmVudE5vZGV9aWYoIUgucmVsYXRlZFRhcmdldCYmSC5mcm9tRWxlbWVudCl7SC5yZWxhdGVkVGFyZ2V0PUguZnJvbUVsZW1lbnQ9PUgudGFyZ2V0P0gudG9FbGVtZW50OkguZnJvbUVsZW1lbnR9aWYoSC5wYWdlWD09bnVsbCYmSC5jbGllbnRYIT1udWxsKXt2YXIgST1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsRT1kb2N1bWVudC5ib2R5O0gucGFnZVg9SC5jbGllbnRYKyhJJiZJLnNjcm9sbExlZnR8fEUmJkUuc2Nyb2xsTGVmdHx8MCktKEkuY2xpZW50TGVmdHx8MCk7SC5wYWdlWT1ILmNsaWVudFkrKEkmJkkuc2Nyb2xsVG9wfHxFJiZFLnNjcm9sbFRvcHx8MCktKEkuY2xpZW50VG9wfHwwKX1pZighSC53aGljaCYmKChILmNoYXJDb2RlfHxILmNoYXJDb2RlPT09MCk/SC5jaGFyQ29kZTpILmtleUNvZGUpKXtILndoaWNoPUguY2hhckNvZGV8fEgua2V5Q29kZX1pZighSC5tZXRhS2V5JiZILmN0cmxLZXkpe0gubWV0YUtleT1ILmN0cmxLZXl9aWYoIUgud2hpY2gmJkguYnV0dG9uKXtILndoaWNoPShILmJ1dHRvbiYxPzE6KEguYnV0dG9uJjI/MzooSC5idXR0b24mND8yOjApKSl9cmV0dXJuIEh9LHByb3h5OmZ1bmN0aW9uKEYsRSl7RT1FfHxmdW5jdGlvbigpe3JldHVybiBGLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07RS5ndWlkPUYuZ3VpZD1GLmd1aWR8fEUuZ3VpZHx8dGhpcy5ndWlkKys7cmV0dXJuIEV9LHNwZWNpYWw6e3JlYWR5OntzZXR1cDpCLHRlYXJkb3duOmZ1bmN0aW9uKCl7fX19LHNwZWNpYWxBbGw6e2xpdmU6e3NldHVwOmZ1bmN0aW9uKEUsRil7by5ldmVudC5hZGQodGhpcyxGWzBdLGMpfSx0ZWFyZG93bjpmdW5jdGlvbihHKXtpZihHLmxlbmd0aCl7dmFyIEU9MCxGPVJlZ0V4cCgiKF58XFwuKSIrR1swXSsiKFxcLnwkKSIpO28uZWFjaCgoby5kYXRhKHRoaXMsImV2ZW50cyIpLmxpdmV8fHt9KSxmdW5jdGlvbigpe2lmKEYudGVzdCh0aGlzLnR5cGUpKXtFKyt9fSk7aWYoRTwxKXtvLmV2ZW50LnJlbW92ZSh0aGlzLEdbMF0sYyl9fX19fX07by5FdmVudD1mdW5jdGlvbihFKXtpZighdGhpcy5wcmV2ZW50RGVmYXVsdCl7cmV0dXJuIG5ldyBvLkV2ZW50KEUpfWlmKEUmJkUudHlwZSl7dGhpcy5vcmlnaW5hbEV2ZW50PUU7dGhpcy50eXBlPUUudHlwZX1lbHNle3RoaXMudHlwZT1FfXRoaXMudGltZVN0YW1wPWUoKTt0aGlzW2hdPXRydWV9O2Z1bmN0aW9uIGsoKXtyZXR1cm4gZmFsc2V9ZnVuY3Rpb24gdSgpe3JldHVybiB0cnVlfW8uRXZlbnQucHJvdG90eXBlPXtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPXU7dmFyIEU9dGhpcy5vcmlnaW5hbEV2ZW50O2lmKCFFKXtyZXR1cm59aWYoRS5wcmV2ZW50RGVmYXVsdCl7RS5wcmV2ZW50RGVmYXVsdCgpfUUucmV0dXJuVmFsdWU9ZmFsc2V9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9dTt2YXIgRT10aGlzLm9yaWdpbmFsRXZlbnQ7aWYoIUUpe3JldHVybn1pZihFLnN0b3BQcm9wYWdhdGlvbil7RS5zdG9wUHJvcGFnYXRpb24oKX1FLmNhbmNlbEJ1YmJsZT10cnVlfSxzdG9wSW1tZWRpYXRlUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt0aGlzLmlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkPXU7dGhpcy5zdG9wUHJvcGFnYXRpb24oKX0saXNEZWZhdWx0UHJldmVudGVkOmssaXNQcm9wYWdhdGlvblN0b3BwZWQ6ayxpc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZDprfTt2YXIgYT1mdW5jdGlvbihGKXt2YXIgRT1GLnJlbGF0ZWRUYXJnZXQ7d2hpbGUoRSYmRSE9dGhpcyl7dHJ5e0U9RS5wYXJlbnROb2RlfWNhdGNoKEcpe0U9dGhpc319aWYoRSE9dGhpcyl7Ri50eXBlPUYuZGF0YTtvLmV2ZW50LmhhbmRsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9fTtvLmVhY2goe21vdXNlb3ZlcjoibW91c2VlbnRlciIsbW91c2VvdXQ6Im1vdXNlbGVhdmUifSxmdW5jdGlvbihGLEUpe28uZXZlbnQuc3BlY2lhbFtFXT17c2V0dXA6ZnVuY3Rpb24oKXtvLmV2ZW50LmFkZCh0aGlzLEYsYSxFKX0sdGVhcmRvd246ZnVuY3Rpb24oKXtvLmV2ZW50LnJlbW92ZSh0aGlzLEYsYSl9fX0pO28uZm4uZXh0ZW5kKHtiaW5kOmZ1bmN0aW9uKEYsRyxFKXtyZXR1cm4gRj09InVubG9hZCI/dGhpcy5vbmUoRixHLEUpOnRoaXMuZWFjaChmdW5jdGlvbigpe28uZXZlbnQuYWRkKHRoaXMsRixFfHxHLEUmJkcpfSl9LG9uZTpmdW5jdGlvbihHLEgsRil7dmFyIEU9by5ldmVudC5wcm94eShGfHxILGZ1bmN0aW9uKEkpe28odGhpcykudW5iaW5kKEksRSk7cmV0dXJuKEZ8fEgpLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtvLmV2ZW50LmFkZCh0aGlzLEcsRSxGJiZIKX0pfSx1bmJpbmQ6ZnVuY3Rpb24oRixFKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5ldmVudC5yZW1vdmUodGhpcyxGLEUpfSl9LHRyaWdnZXI6ZnVuY3Rpb24oRSxGKXtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7by5ldmVudC50cmlnZ2VyKEUsRix0aGlzKX0pfSx0cmlnZ2VySGFuZGxlcjpmdW5jdGlvbihFLEcpe2lmKHRoaXNbMF0pe3ZhciBGPW8uRXZlbnQoRSk7Ri5wcmV2ZW50RGVmYXVsdCgpO0Yuc3RvcFByb3BhZ2F0aW9uKCk7by5ldmVudC50cmlnZ2VyKEYsRyx0aGlzWzBdKTtyZXR1cm4gRi5yZXN1bHR9fSx0b2dnbGU6ZnVuY3Rpb24oRyl7dmFyIEU9YXJndW1lbnRzLEY9MTt3aGlsZShGPEUubGVuZ3RoKXtvLmV2ZW50LnByb3h5KEcsRVtGKytdKX1yZXR1cm4gdGhpcy5jbGljayhvLmV2ZW50LnByb3h5KEcsZnVuY3Rpb24oSCl7dGhpcy5sYXN0VG9nZ2xlPSh0aGlzLmxhc3RUb2dnbGV8fDApJUY7SC5wcmV2ZW50RGVmYXVsdCgpO3JldHVybiBFW3RoaXMubGFzdFRvZ2dsZSsrXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fGZhbHNlfSkpfSxob3ZlcjpmdW5jdGlvbihFLEYpe3JldHVybiB0aGlzLm1vdXNlZW50ZXIoRSkubW91c2VsZWF2ZShGKX0scmVhZHk6ZnVuY3Rpb24oRSl7QigpO2lmKG8uaXNSZWFkeSl7RS5jYWxsKGRvY3VtZW50LG8pfWVsc2V7by5yZWFkeUxpc3QucHVzaChFKX1yZXR1cm4gdGhpc30sbGl2ZTpmdW5jdGlvbihHLEYpe3ZhciBFPW8uZXZlbnQucHJveHkoRik7RS5ndWlkKz10aGlzLnNlbGVjdG9yK0c7byhkb2N1bWVudCkuYmluZChpKEcsdGhpcy5zZWxlY3RvciksdGhpcy5zZWxlY3RvcixFKTtyZXR1cm4gdGhpc30sZGllOmZ1bmN0aW9uKEYsRSl7byhkb2N1bWVudCkudW5iaW5kKGkoRix0aGlzLnNlbGVjdG9yKSxFP3tndWlkOkUuZ3VpZCt0aGlzLnNlbGVjdG9yK0Z9Om51bGwpO3JldHVybiB0aGlzfX0pO2Z1bmN0aW9uIGMoSCl7dmFyIEU9UmVnRXhwKCIoXnxcXC4pIitILnR5cGUrIihcXC58JCkiKSxHPXRydWUsRj1bXTtvLmVhY2goby5kYXRhKHRoaXMsImV2ZW50cyIpLmxpdmV8fFtdLGZ1bmN0aW9uKEksSil7aWYoRS50ZXN0KEoudHlwZSkpe3ZhciBLPW8oSC50YXJnZXQpLmNsb3Nlc3QoSi5kYXRhKVswXTtpZihLKXtGLnB1c2goe2VsZW06SyxmbjpKfSl9fX0pO0Yuc29ydChmdW5jdGlvbihKLEkpe3JldHVybiBvLmRhdGEoSi5lbGVtLCJjbG9zZXN0Iiktby5kYXRhKEkuZWxlbSwiY2xvc2VzdCIpfSk7by5lYWNoKEYsZnVuY3Rpb24oKXtpZih0aGlzLmZuLmNhbGwodGhpcy5lbGVtLEgsdGhpcy5mbi5kYXRhKT09PWZhbHNlKXtyZXR1cm4oRz1mYWxzZSl9fSk7cmV0dXJuIEd9ZnVuY3Rpb24gaShGLEUpe3JldHVyblsibGl2ZSIsRixFLnJlcGxhY2UoL1wuL2csImAiKS5yZXBsYWNlKC8gL2csInwiKV0uam9pbigiLiIpfW8uZXh0ZW5kKHtpc1JlYWR5OmZhbHNlLHJlYWR5TGlzdDpbXSxyZWFkeTpmdW5jdGlvbigpe2lmKCFvLmlzUmVhZHkpe28uaXNSZWFkeT10cnVlO2lmKG8ucmVhZHlMaXN0KXtvLmVhY2goby5yZWFkeUxpc3QsZnVuY3Rpb24oKXt0aGlzLmNhbGwoZG9jdW1lbnQsbyl9KTtvLnJlYWR5TGlzdD1udWxsfW8oZG9jdW1lbnQpLnRyaWdnZXJIYW5kbGVyKCJyZWFkeSIpfX19KTt2YXIgeD1mYWxzZTtmdW5jdGlvbiBCKCl7aWYoeCl7cmV0dXJufXg9dHJ1ZTtpZihkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixmdW5jdGlvbigpe2RvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGFyZ3VtZW50cy5jYWxsZWUsZmFsc2UpO28ucmVhZHkoKX0sZmFsc2UpfWVsc2V7aWYoZG9jdW1lbnQuYXR0YWNoRXZlbnQpe2RvY3VtZW50LmF0dGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGZ1bmN0aW9uKCl7aWYoZG9jdW1lbnQucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpe2RvY3VtZW50LmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLGFyZ3VtZW50cy5jYWxsZWUpO28ucmVhZHkoKX19KTtpZihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwmJmw9PWwudG9wKXsoZnVuY3Rpb24oKXtpZihvLmlzUmVhZHkpe3JldHVybn10cnl7ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goRSl7c2V0VGltZW91dChhcmd1bWVudHMuY2FsbGVlLDApO3JldHVybn1vLnJlYWR5KCl9KSgpfX19by5ldmVudC5hZGQobCwibG9hZCIsby5yZWFkeSl9by5lYWNoKCgiYmx1cixmb2N1cyxsb2FkLHJlc2l6ZSxzY3JvbGwsdW5sb2FkLGNsaWNrLGRibGNsaWNrLG1vdXNlZG93bixtb3VzZXVwLG1vdXNlbW92ZSxtb3VzZW92ZXIsbW91c2VvdXQsbW91c2VlbnRlcixtb3VzZWxlYXZlLGNoYW5nZSxzZWxlY3Qsc3VibWl0LGtleWRvd24sa2V5cHJlc3Msa2V5dXAsZXJyb3IiKS5zcGxpdCgiLCIpLGZ1bmN0aW9uKEYsRSl7by5mbltFXT1mdW5jdGlvbihHKXtyZXR1cm4gRz90aGlzLmJpbmQoRSxHKTp0aGlzLnRyaWdnZXIoRSl9fSk7byhsKS5iaW5kKCJ1bmxvYWQiLGZ1bmN0aW9uKCl7Zm9yKHZhciBFIGluIG8uY2FjaGUpe2lmKEUhPTEmJm8uY2FjaGVbRV0uaGFuZGxlKXtvLmV2ZW50LnJlbW92ZShvLmNhY2hlW0VdLmhhbmRsZS5lbGVtKX19fSk7KGZ1bmN0aW9uKCl7by5zdXBwb3J0PXt9O3ZhciBGPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxHPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLEs9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksSj0ic2NyaXB0IisobmV3IERhdGUpLmdldFRpbWUoKTtLLnN0eWxlLmRpc3BsYXk9Im5vbmUiO0suaW5uZXJIVE1MPScgICA8bGluay8+PHRhYmxlPjwvdGFibGU+PGEgaHJlZj0iL2EiIHN0eWxlPSJjb2xvcjpyZWQ7ZmxvYXQ6bGVmdDtvcGFjaXR5Oi41OyI+YTwvYT48c2VsZWN0PjxvcHRpb24+dGV4dDwvb3B0aW9uPjwvc2VsZWN0PjxvYmplY3Q+PHBhcmFtLz48L29iamVjdD4nO3ZhciBIPUsuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSxFPUsuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImEiKVswXTtpZighSHx8IUgubGVuZ3RofHwhRSl7cmV0dXJufW8uc3VwcG9ydD17bGVhZGluZ1doaXRlc3BhY2U6Sy5maXJzdENoaWxkLm5vZGVUeXBlPT0zLHRib2R5OiFLLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpLmxlbmd0aCxvYmplY3RBbGw6ISFLLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJvYmplY3QiKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLmxlbmd0aCxodG1sU2VyaWFsaXplOiEhSy5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpLmxlbmd0aCxzdHlsZTovcmVkLy50ZXN0KEUuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKSxocmVmTm9ybWFsaXplZDpFLmdldEF0dHJpYnV0ZSgiaHJlZiIpPT09Ii9hIixvcGFjaXR5OkUuc3R5bGUub3BhY2l0eT09PSIwLjUiLGNzc0Zsb2F0OiEhRS5zdHlsZS5jc3NGbG9hdCxzY3JpcHRFdmFsOmZhbHNlLG5vQ2xvbmVFdmVudDp0cnVlLGJveE1vZGVsOm51bGx9O0cudHlwZT0idGV4dC9qYXZhc2NyaXB0Ijt0cnl7Ry5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgid2luZG93LiIrSisiPTE7IikpfWNhdGNoKEkpe31GLmluc2VydEJlZm9yZShHLEYuZmlyc3RDaGlsZCk7aWYobFtKXSl7by5zdXBwb3J0LnNjcmlwdEV2YWw9dHJ1ZTtkZWxldGUgbFtKXX1GLnJlbW92ZUNoaWxkKEcpO2lmKEsuYXR0YWNoRXZlbnQmJksuZmlyZUV2ZW50KXtLLmF0dGFjaEV2ZW50KCJvbmNsaWNrIixmdW5jdGlvbigpe28uc3VwcG9ydC5ub0Nsb25lRXZlbnQ9ZmFsc2U7Sy5kZXRhY2hFdmVudCgib25jbGljayIsYXJndW1lbnRzLmNhbGxlZSl9KTtLLmNsb25lTm9kZSh0cnVlKS5maXJlRXZlbnQoIm9uY2xpY2siKX1vKGZ1bmN0aW9uKCl7dmFyIEw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7TC5zdHlsZS53aWR0aD1MLnN0eWxlLnBhZGRpbmdMZWZ0PSIxcHgiO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoTCk7by5ib3hNb2RlbD1vLnN1cHBvcnQuYm94TW9kZWw9TC5vZmZzZXRXaWR0aD09PTI7ZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChMKS5zdHlsZS5kaXNwbGF5PSJub25lIn0pfSkoKTt2YXIgdz1vLnN1cHBvcnQuY3NzRmxvYXQ/ImNzc0Zsb2F0Ijoic3R5bGVGbG9hdCI7by5wcm9wcz17ImZvciI6Imh0bWxGb3IiLCJjbGFzcyI6ImNsYXNzTmFtZSIsImZsb2F0Ijp3LGNzc0Zsb2F0Oncsc3R5bGVGbG9hdDp3LHJlYWRvbmx5OiJyZWFkT25seSIsbWF4bGVuZ3RoOiJtYXhMZW5ndGgiLGNlbGxzcGFjaW5nOiJjZWxsU3BhY2luZyIscm93c3Bhbjoicm93U3BhbiIsdGFiaW5kZXg6InRhYkluZGV4In07by5mbi5leHRlbmQoe19sb2FkOm8uZm4ubG9hZCxsb2FkOmZ1bmN0aW9uKEcsSixLKXtpZih0eXBlb2YgRyE9PSJzdHJpbmciKXtyZXR1cm4gdGhpcy5fbG9hZChHKX12YXIgST1HLmluZGV4T2YoIiAiKTtpZihJPj0wKXt2YXIgRT1HLnNsaWNlKEksRy5sZW5ndGgpO0c9Ry5zbGljZSgwLEkpfXZhciBIPSJHRVQiO2lmKEope2lmKG8uaXNGdW5jdGlvbihKKSl7Sz1KO0o9bnVsbH1lbHNle2lmKHR5cGVvZiBKPT09Im9iamVjdCIpe0o9by5wYXJhbShKKTtIPSJQT1NUIn19fXZhciBGPXRoaXM7by5hamF4KHt1cmw6Ryx0eXBlOkgsZGF0YVR5cGU6Imh0bWwiLGRhdGE6Sixjb21wbGV0ZTpmdW5jdGlvbihNLEwpe2lmKEw9PSJzdWNjZXNzInx8TD09Im5vdG1vZGlmaWVkIil7Ri5odG1sKEU/bygiPGRpdi8+IikuYXBwZW5kKE0ucmVzcG9uc2VUZXh0LnJlcGxhY2UoLzxzY3JpcHQoLnxccykqP1wvc2NyaXB0Pi9nLCIiKSkuZmluZChFKTpNLnJlc3BvbnNlVGV4dCl9aWYoSyl7Ri5lYWNoKEssW00ucmVzcG9uc2VUZXh0LEwsTV0pfX19KTtyZXR1cm4gdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIG8ucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9vLm1ha2VBcnJheSh0aGlzLmVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSYmIXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fC9zZWxlY3R8dGV4dGFyZWEvaS50ZXN0KHRoaXMubm9kZU5hbWUpfHwvdGV4dHxoaWRkZW58cGFzc3dvcmR8c2VhcmNoL2kudGVzdCh0aGlzLnR5cGUpKX0pLm1hcChmdW5jdGlvbihFLEYpe3ZhciBHPW8odGhpcykudmFsKCk7cmV0dXJuIEc9PW51bGw/bnVsbDpvLmlzQXJyYXkoRyk/by5tYXAoRyxmdW5jdGlvbihJLEgpe3JldHVybntuYW1lOkYubmFtZSx2YWx1ZTpJfX0pOntuYW1lOkYubmFtZSx2YWx1ZTpHfX0pLmdldCgpfX0pO28uZWFjaCgiYWpheFN0YXJ0LGFqYXhTdG9wLGFqYXhDb21wbGV0ZSxhamF4RXJyb3IsYWpheFN1Y2Nlc3MsYWpheFNlbmQiLnNwbGl0KCIsIiksZnVuY3Rpb24oRSxGKXtvLmZuW0ZdPWZ1bmN0aW9uKEcpe3JldHVybiB0aGlzLmJpbmQoRixHKX19KTt2YXIgcj1lKCk7by5leHRlbmQoe2dldDpmdW5jdGlvbihFLEcsSCxGKXtpZihvLmlzRnVuY3Rpb24oRykpe0g9RztHPW51bGx9cmV0dXJuIG8uYWpheCh7dHlwZToiR0VUIix1cmw6RSxkYXRhOkcsc3VjY2VzczpILGRhdGFUeXBlOkZ9KX0sZ2V0U2NyaXB0OmZ1bmN0aW9uKEUsRil7cmV0dXJuIG8uZ2V0KEUsbnVsbCxGLCJzY3JpcHQiKX0sZ2V0SlNPTjpmdW5jdGlvbihFLEYsRyl7cmV0dXJuIG8uZ2V0KEUsRixHLCJqc29uIil9LHBvc3Q6ZnVuY3Rpb24oRSxHLEgsRil7aWYoby5pc0Z1bmN0aW9uKEcpKXtIPUc7Rz17fX1yZXR1cm4gby5hamF4KHt0eXBlOiJQT1NUIix1cmw6RSxkYXRhOkcsc3VjY2VzczpILGRhdGFUeXBlOkZ9KX0sYWpheFNldHVwOmZ1bmN0aW9uKEUpe28uZXh0ZW5kKG8uYWpheFNldHRpbmdzLEUpfSxhamF4U2V0dGluZ3M6e3VybDpsb2NhdGlvbi5ocmVmLGdsb2JhbDp0cnVlLHR5cGU6IkdFVCIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIscHJvY2Vzc0RhdGE6dHJ1ZSxhc3luYzp0cnVlLHhocjpmdW5jdGlvbigpe3JldHVybiBsLkFjdGl2ZVhPYmplY3Q/bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIik6bmV3IFhNTEh0dHBSZXF1ZXN0KCl9LGFjY2VwdHM6e3htbDoiYXBwbGljYXRpb24veG1sLCB0ZXh0L3htbCIsaHRtbDoidGV4dC9odG1sIixzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0Iix0ZXh0OiJ0ZXh0L3BsYWluIixfZGVmYXVsdDoiKi8qIn19LGxhc3RNb2RpZmllZDp7fSxhamF4OmZ1bmN0aW9uKE0pe009by5leHRlbmQodHJ1ZSxNLG8uZXh0ZW5kKHRydWUse30sby5hamF4U2V0dGluZ3MsTSkpO3ZhciBXLEY9Lz1cPygmfCQpL2csUixWLEc9TS50eXBlLnRvVXBwZXJDYXNlKCk7aWYoTS5kYXRhJiZNLnByb2Nlc3NEYXRhJiZ0eXBlb2YgTS5kYXRhIT09InN0cmluZyIpe00uZGF0YT1vLnBhcmFtKE0uZGF0YSl9aWYoTS5kYXRhVHlwZT09Impzb25wIil7aWYoRz09IkdFVCIpe2lmKCFNLnVybC5tYXRjaChGKSl7TS51cmwrPShNLnVybC5tYXRjaCgvXD8vKT8iJiI6Ij8iKSsoTS5qc29ucHx8ImNhbGxiYWNrIikrIj0/In19ZWxzZXtpZighTS5kYXRhfHwhTS5kYXRhLm1hdGNoKEYpKXtNLmRhdGE9KE0uZGF0YT9NLmRhdGErIiYiOiIiKSsoTS5qc29ucHx8ImNhbGxiYWNrIikrIj0/In19TS5kYXRhVHlwZT0ianNvbiJ9aWYoTS5kYXRhVHlwZT09Impzb24iJiYoTS5kYXRhJiZNLmRhdGEubWF0Y2goRil8fE0udXJsLm1hdGNoKEYpKSl7Vz0ianNvbnAiK3IrKztpZihNLmRhdGEpe00uZGF0YT0oTS5kYXRhKyIiKS5yZXBsYWNlKEYsIj0iK1crIiQxIil9TS51cmw9TS51cmwucmVwbGFjZShGLCI9IitXKyIkMSIpO00uZGF0YVR5cGU9InNjcmlwdCI7bFtXXT1mdW5jdGlvbihYKXtWPVg7SSgpO0woKTtsW1ddPWc7dHJ5e2RlbGV0ZSBsW1ddfWNhdGNoKFkpe31pZihIKXtILnJlbW92ZUNoaWxkKFQpfX19aWYoTS5kYXRhVHlwZT09InNjcmlwdCImJk0uY2FjaGU9PW51bGwpe00uY2FjaGU9ZmFsc2V9aWYoTS5jYWNoZT09PWZhbHNlJiZHPT0iR0VUIil7dmFyIEU9ZSgpO3ZhciBVPU0udXJsLnJlcGxhY2UoLyhcP3wmKV89Lio/KCZ8JCkvLCIkMV89IitFKyIkMiIpO00udXJsPVUrKChVPT1NLnVybCk/KE0udXJsLm1hdGNoKC9cPy8pPyImIjoiPyIpKyJfPSIrRToiIil9aWYoTS5kYXRhJiZHPT0iR0VUIil7TS51cmwrPShNLnVybC5tYXRjaCgvXD8vKT8iJiI6Ij8iKStNLmRhdGE7TS5kYXRhPW51bGx9aWYoTS5nbG9iYWwmJiFvLmFjdGl2ZSsrKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhTdGFydCIpfXZhciBRPS9eKFx3KzopP1wvXC8oW15cLz8jXSspLy5leGVjKE0udXJsKTtpZihNLmRhdGFUeXBlPT0ic2NyaXB0IiYmRz09IkdFVCImJlEmJihRWzFdJiZRWzFdIT1sb2NhdGlvbi5wcm90b2NvbHx8UVsyXSE9bG9jYXRpb24uaG9zdCkpe3ZhciBIPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07dmFyIFQ9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7VC5zcmM9TS51cmw7aWYoTS5zY3JpcHRDaGFyc2V0KXtULmNoYXJzZXQ9TS5zY3JpcHRDaGFyc2V0fWlmKCFXKXt2YXIgTz1mYWxzZTtULm9ubG9hZD1ULm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKCFPJiYoIXRoaXMucmVhZHlTdGF0ZXx8dGhpcy5yZWFkeVN0YXRlPT0ibG9hZGVkInx8dGhpcy5yZWFkeVN0YXRlPT0iY29tcGxldGUiKSl7Tz10cnVlO0koKTtMKCk7VC5vbmxvYWQ9VC5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbDtILnJlbW92ZUNoaWxkKFQpfX19SC5hcHBlbmRDaGlsZChUKTtyZXR1cm4gZ312YXIgSz1mYWxzZTt2YXIgSj1NLnhocigpO2lmKE0udXNlcm5hbWUpe0oub3BlbihHLE0udXJsLE0uYXN5bmMsTS51c2VybmFtZSxNLnBhc3N3b3JkKX1lbHNle0oub3BlbihHLE0udXJsLE0uYXN5bmMpfXRyeXtpZihNLmRhdGEpe0ouc2V0UmVxdWVzdEhlYWRlcigiQ29udGVudC1UeXBlIixNLmNvbnRlbnRUeXBlKX1pZihNLmlmTW9kaWZpZWQpe0ouc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLG8ubGFzdE1vZGlmaWVkW00udXJsXXx8IlRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIil9Si5zZXRSZXF1ZXN0SGVhZGVyKCJYLVJlcXVlc3RlZC1XaXRoIiwiWE1MSHR0cFJlcXVlc3QiKTtKLnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsTS5kYXRhVHlwZSYmTS5hY2NlcHRzW00uZGF0YVR5cGVdP00uYWNjZXB0c1tNLmRhdGFUeXBlXSsiLCAqLyoiOk0uYWNjZXB0cy5fZGVmYXVsdCl9Y2F0Y2goUyl7fWlmKE0uYmVmb3JlU2VuZCYmTS5iZWZvcmVTZW5kKEosTSk9PT1mYWxzZSl7aWYoTS5nbG9iYWwmJiEtLW8uYWN0aXZlKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIil9Si5hYm9ydCgpO3JldHVybiBmYWxzZX1pZihNLmdsb2JhbCl7by5ldmVudC50cmlnZ2VyKCJhamF4U2VuZCIsW0osTV0pfXZhciBOPWZ1bmN0aW9uKFgpe2lmKEoucmVhZHlTdGF0ZT09MCl7aWYoUCl7Y2xlYXJJbnRlcnZhbChQKTtQPW51bGw7aWYoTS5nbG9iYWwmJiEtLW8uYWN0aXZlKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIil9fX1lbHNle2lmKCFLJiZKJiYoSi5yZWFkeVN0YXRlPT00fHxYPT0idGltZW91dCIpKXtLPXRydWU7aWYoUCl7Y2xlYXJJbnRlcnZhbChQKTtQPW51bGx9Uj1YPT0idGltZW91dCI/InRpbWVvdXQiOiFvLmh0dHBTdWNjZXNzKEopPyJlcnJvciI6TS5pZk1vZGlmaWVkJiZvLmh0dHBOb3RNb2RpZmllZChKLE0udXJsKT8ibm90bW9kaWZpZWQiOiJzdWNjZXNzIjtpZihSPT0ic3VjY2VzcyIpe3RyeXtWPW8uaHR0cERhdGEoSixNLmRhdGFUeXBlLE0pfWNhdGNoKFope1I9InBhcnNlcmVycm9yIn19aWYoUj09InN1Y2Nlc3MiKXt2YXIgWTt0cnl7WT1KLmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIil9Y2F0Y2goWil7fWlmKE0uaWZNb2RpZmllZCYmWSl7by5sYXN0TW9kaWZpZWRbTS51cmxdPVl9aWYoIVcpe0koKX19ZWxzZXtvLmhhbmRsZUVycm9yKE0sSixSKX1MKCk7aWYoWCl7Si5hYm9ydCgpfWlmKE0uYXN5bmMpe0o9bnVsbH19fX07aWYoTS5hc3luYyl7dmFyIFA9c2V0SW50ZXJ2YWwoTiwxMyk7aWYoTS50aW1lb3V0PjApe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtpZihKJiYhSyl7TigidGltZW91dCIpfX0sTS50aW1lb3V0KX19dHJ5e0ouc2VuZChNLmRhdGEpfWNhdGNoKFMpe28uaGFuZGxlRXJyb3IoTSxKLG51bGwsUyl9aWYoIU0uYXN5bmMpe04oKX1mdW5jdGlvbiBJKCl7aWYoTS5zdWNjZXNzKXtNLnN1Y2Nlc3MoVixSKX1pZihNLmdsb2JhbCl7by5ldmVudC50cmlnZ2VyKCJhamF4U3VjY2VzcyIsW0osTV0pfX1mdW5jdGlvbiBMKCl7aWYoTS5jb21wbGV0ZSl7TS5jb21wbGV0ZShKLFIpfWlmKE0uZ2xvYmFsKXtvLmV2ZW50LnRyaWdnZXIoImFqYXhDb21wbGV0ZSIsW0osTV0pfWlmKE0uZ2xvYmFsJiYhLS1vLmFjdGl2ZSl7by5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpfX1yZXR1cm4gSn0saGFuZGxlRXJyb3I6ZnVuY3Rpb24oRixILEUsRyl7aWYoRi5lcnJvcil7Ri5lcnJvcihILEUsRyl9aWYoRi5nbG9iYWwpe28uZXZlbnQudHJpZ2dlcigiYWpheEVycm9yIixbSCxGLEddKX19LGFjdGl2ZTowLGh0dHBTdWNjZXNzOmZ1bmN0aW9uKEYpe3RyeXtyZXR1cm4gIUYuc3RhdHVzJiZsb2NhdGlvbi5wcm90b2NvbD09ImZpbGU6Inx8KEYuc3RhdHVzPj0yMDAmJkYuc3RhdHVzPDMwMCl8fEYuc3RhdHVzPT0zMDR8fEYuc3RhdHVzPT0xMjIzfWNhdGNoKEUpe31yZXR1cm4gZmFsc2V9LGh0dHBOb3RNb2RpZmllZDpmdW5jdGlvbihHLEUpe3RyeXt2YXIgSD1HLmdldFJlc3BvbnNlSGVhZGVyKCJMYXN0LU1vZGlmaWVkIik7cmV0dXJuIEcuc3RhdHVzPT0zMDR8fEg9PW8ubGFzdE1vZGlmaWVkW0VdfWNhdGNoKEYpe31yZXR1cm4gZmFsc2V9LGh0dHBEYXRhOmZ1bmN0aW9uKEosSCxHKXt2YXIgRj1KLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSxFPUg9PSJ4bWwifHwhSCYmRiYmRi5pbmRleE9mKCJ4bWwiKT49MCxJPUU/Si5yZXNwb25zZVhNTDpKLnJlc3BvbnNlVGV4dDtpZihFJiZJLmRvY3VtZW50RWxlbWVudC50YWdOYW1lPT0icGFyc2VyZXJyb3IiKXt0aHJvdyJwYXJzZXJlcnJvciJ9aWYoRyYmRy5kYXRhRmlsdGVyKXtJPUcuZGF0YUZpbHRlcihJLEgpfWlmKHR5cGVvZiBJPT09InN0cmluZyIpe2lmKEg9PSJzY3JpcHQiKXtvLmdsb2JhbEV2YWwoSSl9aWYoSD09Impzb24iKXtJPWxbImV2YWwiXSgiKCIrSSsiKSIpfX1yZXR1cm4gSX0scGFyYW06ZnVuY3Rpb24oRSl7dmFyIEc9W107ZnVuY3Rpb24gSChJLEope0dbRy5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChJKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KEopfWlmKG8uaXNBcnJheShFKXx8RS5qcXVlcnkpe28uZWFjaChFLGZ1bmN0aW9uKCl7SCh0aGlzLm5hbWUsdGhpcy52YWx1ZSl9KX1lbHNle2Zvcih2YXIgRiBpbiBFKXtpZihvLmlzQXJyYXkoRVtGXSkpe28uZWFjaChFW0ZdLGZ1bmN0aW9uKCl7SChGLHRoaXMpfSl9ZWxzZXtIKEYsby5pc0Z1bmN0aW9uKEVbRl0pP0VbRl0oKTpFW0ZdKX19fXJldHVybiBHLmpvaW4oIiYiKS5yZXBsYWNlKC8lMjAvZywiKyIpfX0pO3ZhciBtPXt9LG4sZD1bWyJoZWlnaHQiLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLFsid2lkdGgiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCJdLFsib3BhY2l0eSJdXTtmdW5jdGlvbiB0KEYsRSl7dmFyIEc9e307by5lYWNoKGQuY29uY2F0LmFwcGx5KFtdLGQuc2xpY2UoMCxFKSksZnVuY3Rpb24oKXtHW3RoaXNdPUZ9KTtyZXR1cm4gR31vLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbihKLEwpe2lmKEope3JldHVybiB0aGlzLmFuaW1hdGUodCgic2hvdyIsMyksSixMKX1lbHNle2Zvcih2YXIgSD0wLEY9dGhpcy5sZW5ndGg7SDxGO0grKyl7dmFyIEU9by5kYXRhKHRoaXNbSF0sIm9sZGRpc3BsYXkiKTt0aGlzW0hdLnN0eWxlLmRpc3BsYXk9RXx8IiI7aWYoby5jc3ModGhpc1tIXSwiZGlzcGxheSIpPT09Im5vbmUiKXt2YXIgRz10aGlzW0hdLnRhZ05hbWUsSztpZihtW0ddKXtLPW1bR119ZWxzZXt2YXIgST1vKCI8IitHKyIgLz4iKS5hcHBlbmRUbygiYm9keSIpO0s9SS5jc3MoImRpc3BsYXkiKTtpZihLPT09Im5vbmUiKXtLPSJibG9jayJ9SS5yZW1vdmUoKTttW0ddPUt9by5kYXRhKHRoaXNbSF0sIm9sZGRpc3BsYXkiLEspfX1mb3IodmFyIEg9MCxGPXRoaXMubGVuZ3RoO0g8RjtIKyspe3RoaXNbSF0uc3R5bGUuZGlzcGxheT1vLmRhdGEodGhpc1tIXSwib2xkZGlzcGxheSIpfHwiIn1yZXR1cm4gdGhpc319LGhpZGU6ZnVuY3Rpb24oSCxJKXtpZihIKXtyZXR1cm4gdGhpcy5hbmltYXRlKHQoImhpZGUiLDMpLEgsSSl9ZWxzZXtmb3IodmFyIEc9MCxGPXRoaXMubGVuZ3RoO0c8RjtHKyspe3ZhciBFPW8uZGF0YSh0aGlzW0ddLCJvbGRkaXNwbGF5Iik7aWYoIUUmJkUhPT0ibm9uZSIpe28uZGF0YSh0aGlzW0ddLCJvbGRkaXNwbGF5IixvLmNzcyh0aGlzW0ddLCJkaXNwbGF5IikpfX1mb3IodmFyIEc9MCxGPXRoaXMubGVuZ3RoO0c8RjtHKyspe3RoaXNbR10uc3R5bGUuZGlzcGxheT0ibm9uZSJ9cmV0dXJuIHRoaXN9fSxfdG9nZ2xlOm8uZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbihHLEYpe3ZhciBFPXR5cGVvZiBHPT09ImJvb2xlYW4iO3JldHVybiBvLmlzRnVuY3Rpb24oRykmJm8uaXNGdW5jdGlvbihGKT90aGlzLl90b2dnbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpOkc9PW51bGx8fEU/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIEg9RT9HOm8odGhpcykuaXMoIjpoaWRkZW4iKTtvKHRoaXMpW0g/InNob3ciOiJoaWRlIl0oKX0pOnRoaXMuYW5pbWF0ZSh0KCJ0b2dnbGUiLDMpLEcsRil9LGZhZGVUbzpmdW5jdGlvbihFLEcsRil7cmV0dXJuIHRoaXMuYW5pbWF0ZSh7b3BhY2l0eTpHfSxFLEYpfSxhbmltYXRlOmZ1bmN0aW9uKEksRixILEcpe3ZhciBFPW8uc3BlZWQoRixILEcpO3JldHVybiB0aGlzW0UucXVldWU9PT1mYWxzZT8iZWFjaCI6InF1ZXVlIl0oZnVuY3Rpb24oKXt2YXIgSz1vLmV4dGVuZCh7fSxFKSxNLEw9dGhpcy5ub2RlVHlwZT09MSYmbyh0aGlzKS5pcygiOmhpZGRlbiIpLEo9dGhpcztmb3IoTSBpbiBJKXtpZihJW01dPT0iaGlkZSImJkx8fElbTV09PSJzaG93IiYmIUwpe3JldHVybiBLLmNvbXBsZXRlLmNhbGwodGhpcyl9aWYoKE09PSJoZWlnaHQifHxNPT0id2lkdGgiKSYmdGhpcy5zdHlsZSl7Sy5kaXNwbGF5PW8uY3NzKHRoaXMsImRpc3BsYXkiKTtLLm92ZXJmbG93PXRoaXMuc3R5bGUub3ZlcmZsb3d9fWlmKEsub3ZlcmZsb3chPW51bGwpe3RoaXMuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiJ9Sy5jdXJBbmltPW8uZXh0ZW5kKHt9LEkpO28uZWFjaChJLGZ1bmN0aW9uKE8sUyl7dmFyIFI9bmV3IG8uZngoSixLLE8pO2lmKC90b2dnbGV8c2hvd3xoaWRlLy50ZXN0KFMpKXtSW1M9PSJ0b2dnbGUiP0w/InNob3ciOiJoaWRlIjpTXShJKX1lbHNle3ZhciBRPVMudG9TdHJpbmcoKS5tYXRjaCgvXihbKy1dPSk/KFtcZCstLl0rKSguKikkLyksVD1SLmN1cih0cnVlKXx8MDtpZihRKXt2YXIgTj1wYXJzZUZsb2F0KFFbMl0pLFA9UVszXXx8InB4IjtpZihQIT0icHgiKXtKLnN0eWxlW09dPShOfHwxKStQO1Q9KChOfHwxKS9SLmN1cih0cnVlKSkqVDtKLnN0eWxlW09dPVQrUH1pZihRWzFdKXtOPSgoUVsxXT09Ii09Ij8tMToxKSpOKStUfVIuY3VzdG9tKFQsTixQKX1lbHNle1IuY3VzdG9tKFQsUywiIil9fX0pO3JldHVybiB0cnVlfSl9LHN0b3A6ZnVuY3Rpb24oRixFKXt2YXIgRz1vLnRpbWVycztpZihGKXt0aGlzLnF1ZXVlKFtdKX10aGlzLmVhY2goZnVuY3Rpb24oKXtmb3IodmFyIEg9Ry5sZW5ndGgtMTtIPj0wO0gtLSl7aWYoR1tIXS5lbGVtPT10aGlzKXtpZihFKXtHW0hdKHRydWUpfUcuc3BsaWNlKEgsMSl9fX0pO2lmKCFFKXt0aGlzLmRlcXVldWUoKX1yZXR1cm4gdGhpc319KTtvLmVhY2goe3NsaWRlRG93bjp0KCJzaG93IiwxKSxzbGlkZVVwOnQoImhpZGUiLDEpLHNsaWRlVG9nZ2xlOnQoInRvZ2dsZSIsMSksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9fSxmdW5jdGlvbihFLEYpe28uZm5bRV09ZnVuY3Rpb24oRyxIKXtyZXR1cm4gdGhpcy5hbmltYXRlKEYsRyxIKX19KTtvLmV4dGVuZCh7c3BlZWQ6ZnVuY3Rpb24oRyxILEYpe3ZhciBFPXR5cGVvZiBHPT09Im9iamVjdCI/Rzp7Y29tcGxldGU6Rnx8IUYmJkh8fG8uaXNGdW5jdGlvbihHKSYmRyxkdXJhdGlvbjpHLGVhc2luZzpGJiZIfHxIJiYhby5pc0Z1bmN0aW9uKEgpJiZIfTtFLmR1cmF0aW9uPW8uZngub2ZmPzA6dHlwZW9mIEUuZHVyYXRpb249PT0ibnVtYmVyIj9FLmR1cmF0aW9uOm8uZnguc3BlZWRzW0UuZHVyYXRpb25dfHxvLmZ4LnNwZWVkcy5fZGVmYXVsdDtFLm9sZD1FLmNvbXBsZXRlO0UuY29tcGxldGU9ZnVuY3Rpb24oKXtpZihFLnF1ZXVlIT09ZmFsc2Upe28odGhpcykuZGVxdWV1ZSgpfWlmKG8uaXNGdW5jdGlvbihFLm9sZCkpe0Uub2xkLmNhbGwodGhpcyl9fTtyZXR1cm4gRX0sZWFzaW5nOntsaW5lYXI6ZnVuY3Rpb24oRyxILEUsRil7cmV0dXJuIEUrRipHfSxzd2luZzpmdW5jdGlvbihHLEgsRSxGKXtyZXR1cm4oKC1NYXRoLmNvcyhHKk1hdGguUEkpLzIpKzAuNSkqRitFfX0sdGltZXJzOltdLGZ4OmZ1bmN0aW9uKEYsRSxHKXt0aGlzLm9wdGlvbnM9RTt0aGlzLmVsZW09Rjt0aGlzLnByb3A9RztpZighRS5vcmlnKXtFLm9yaWc9e319fX0pO28uZngucHJvdG90eXBlPXt1cGRhdGU6ZnVuY3Rpb24oKXtpZih0aGlzLm9wdGlvbnMuc3RlcCl7dGhpcy5vcHRpb25zLnN0ZXAuY2FsbCh0aGlzLmVsZW0sdGhpcy5ub3csdGhpcyl9KG8uZnguc3RlcFt0aGlzLnByb3BdfHxvLmZ4LnN0ZXAuX2RlZmF1bHQpKHRoaXMpO2lmKCh0aGlzLnByb3A9PSJoZWlnaHQifHx0aGlzLnByb3A9PSJ3aWR0aCIpJiZ0aGlzLmVsZW0uc3R5bGUpe3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9fSxjdXI6ZnVuY3Rpb24oRil7aWYodGhpcy5lbGVtW3RoaXMucHJvcF0hPW51bGwmJighdGhpcy5lbGVtLnN0eWxlfHx0aGlzLmVsZW0uc3R5bGVbdGhpcy5wcm9wXT09bnVsbCkpe3JldHVybiB0aGlzLmVsZW1bdGhpcy5wcm9wXX12YXIgRT1wYXJzZUZsb2F0KG8uY3NzKHRoaXMuZWxlbSx0aGlzLnByb3AsRikpO3JldHVybiBFJiZFPi0xMDAwMD9FOnBhcnNlRmxvYXQoby5jdXJDU1ModGhpcy5lbGVtLHRoaXMucHJvcCkpfHwwfSxjdXN0b206ZnVuY3Rpb24oSSxILEcpe3RoaXMuc3RhcnRUaW1lPWUoKTt0aGlzLnN0YXJ0PUk7dGhpcy5lbmQ9SDt0aGlzLnVuaXQ9R3x8dGhpcy51bml0fHwicHgiO3RoaXMubm93PXRoaXMuc3RhcnQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0wO3ZhciBFPXRoaXM7ZnVuY3Rpb24gRihKKXtyZXR1cm4gRS5zdGVwKEopfUYuZWxlbT10aGlzLmVsZW07aWYoRigpJiZvLnRpbWVycy5wdXNoKEYpJiYhbil7bj1zZXRJbnRlcnZhbChmdW5jdGlvbigpe3ZhciBLPW8udGltZXJzO2Zvcih2YXIgSj0wO0o8Sy5sZW5ndGg7SisrKXtpZighS1tKXSgpKXtLLnNwbGljZShKLS0sMSl9fWlmKCFLLmxlbmd0aCl7Y2xlYXJJbnRlcnZhbChuKTtuPWd9fSwxMyl9fSxzaG93OmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1vLmF0dHIodGhpcy5lbGVtLnN0eWxlLHRoaXMucHJvcCk7dGhpcy5vcHRpb25zLnNob3c9dHJ1ZTt0aGlzLmN1c3RvbSh0aGlzLnByb3A9PSJ3aWR0aCJ8fHRoaXMucHJvcD09ImhlaWdodCI/MTowLHRoaXMuY3VyKCkpO28odGhpcy5lbGVtKS5zaG93KCl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdPW8uYXR0cih0aGlzLmVsZW0uc3R5bGUsdGhpcy5wcm9wKTt0aGlzLm9wdGlvbnMuaGlkZT10cnVlO3RoaXMuY3VzdG9tKHRoaXMuY3VyKCksMCl9LHN0ZXA6ZnVuY3Rpb24oSCl7dmFyIEc9ZSgpO2lmKEh8fEc+PXRoaXMub3B0aW9ucy5kdXJhdGlvbit0aGlzLnN0YXJ0VGltZSl7dGhpcy5ub3c9dGhpcy5lbmQ7dGhpcy5wb3M9dGhpcy5zdGF0ZT0xO3RoaXMudXBkYXRlKCk7dGhpcy5vcHRpb25zLmN1ckFuaW1bdGhpcy5wcm9wXT10cnVlO3ZhciBFPXRydWU7Zm9yKHZhciBGIGluIHRoaXMub3B0aW9ucy5jdXJBbmltKXtpZih0aGlzLm9wdGlvbnMuY3VyQW5pbVtGXSE9PXRydWUpe0U9ZmFsc2V9fWlmKEUpe2lmKHRoaXMub3B0aW9ucy5kaXNwbGF5IT1udWxsKXt0aGlzLmVsZW0uc3R5bGUub3ZlcmZsb3c9dGhpcy5vcHRpb25zLm92ZXJmbG93O3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PXRoaXMub3B0aW9ucy5kaXNwbGF5O2lmKG8uY3NzKHRoaXMuZWxlbSwiZGlzcGxheSIpPT0ibm9uZSIpe3RoaXMuZWxlbS5zdHlsZS5kaXNwbGF5PSJibG9jayJ9fWlmKHRoaXMub3B0aW9ucy5oaWRlKXtvKHRoaXMuZWxlbSkuaGlkZSgpfWlmKHRoaXMub3B0aW9ucy5oaWRlfHx0aGlzLm9wdGlvbnMuc2hvdyl7Zm9yKHZhciBJIGluIHRoaXMub3B0aW9ucy5jdXJBbmltKXtvLmF0dHIodGhpcy5lbGVtLnN0eWxlLEksdGhpcy5vcHRpb25zLm9yaWdbSV0pfX10aGlzLm9wdGlvbnMuY29tcGxldGUuY2FsbCh0aGlzLmVsZW0pfXJldHVybiBmYWxzZX1lbHNle3ZhciBKPUctdGhpcy5zdGFydFRpbWU7dGhpcy5zdGF0ZT1KL3RoaXMub3B0aW9ucy5kdXJhdGlvbjt0aGlzLnBvcz1vLmVhc2luZ1t0aGlzLm9wdGlvbnMuZWFzaW5nfHwoby5lYXNpbmcuc3dpbmc/InN3aW5nIjoibGluZWFyIildKHRoaXMuc3RhdGUsSiwwLDEsdGhpcy5vcHRpb25zLmR1cmF0aW9uKTt0aGlzLm5vdz10aGlzLnN0YXJ0KygodGhpcy5lbmQtdGhpcy5zdGFydCkqdGhpcy5wb3MpO3RoaXMudXBkYXRlKCl9cmV0dXJuIHRydWV9fTtvLmV4dGVuZChvLmZ4LHtzcGVlZHM6e3Nsb3c6NjAwLGZhc3Q6MjAwLF9kZWZhdWx0OjQwMH0sc3RlcDp7b3BhY2l0eTpmdW5jdGlvbihFKXtvLmF0dHIoRS5lbGVtLnN0eWxlLCJvcGFjaXR5IixFLm5vdyl9LF9kZWZhdWx0OmZ1bmN0aW9uKEUpe2lmKEUuZWxlbS5zdHlsZSYmRS5lbGVtLnN0eWxlW0UucHJvcF0hPW51bGwpe0UuZWxlbS5zdHlsZVtFLnByb3BdPUUubm93K0UudW5pdH1lbHNle0UuZWxlbVtFLnByb3BdPUUubm93fX19fSk7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCl7by5mbi5vZmZzZXQ9ZnVuY3Rpb24oKXtpZighdGhpc1swXSl7cmV0dXJue3RvcDowLGxlZnQ6MH19aWYodGhpc1swXT09PXRoaXNbMF0ub3duZXJEb2N1bWVudC5ib2R5KXtyZXR1cm4gby5vZmZzZXQuYm9keU9mZnNldCh0aGlzWzBdKX12YXIgRz10aGlzWzBdLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLEo9dGhpc1swXS5vd25lckRvY3VtZW50LEY9Si5ib2R5LEU9Si5kb2N1bWVudEVsZW1lbnQsTD1FLmNsaWVudFRvcHx8Ri5jbGllbnRUb3B8fDAsSz1FLmNsaWVudExlZnR8fEYuY2xpZW50TGVmdHx8MCxJPUcudG9wKyhzZWxmLnBhZ2VZT2Zmc2V0fHxvLmJveE1vZGVsJiZFLnNjcm9sbFRvcHx8Ri5zY3JvbGxUb3ApLUwsSD1HLmxlZnQrKHNlbGYucGFnZVhPZmZzZXR8fG8uYm94TW9kZWwmJkUuc2Nyb2xsTGVmdHx8Ri5zY3JvbGxMZWZ0KS1LO3JldHVybnt0b3A6SSxsZWZ0Okh9fX1lbHNle28uZm4ub2Zmc2V0PWZ1bmN0aW9uKCl7aWYoIXRoaXNbMF0pe3JldHVybnt0b3A6MCxsZWZ0OjB9fWlmKHRoaXNbMF09PT10aGlzWzBdLm93bmVyRG9jdW1lbnQuYm9keSl7cmV0dXJuIG8ub2Zmc2V0LmJvZHlPZmZzZXQodGhpc1swXSl9by5vZmZzZXQuaW5pdGlhbGl6ZWR8fG8ub2Zmc2V0LmluaXRpYWxpemUoKTt2YXIgSj10aGlzWzBdLEc9Si5vZmZzZXRQYXJlbnQsRj1KLE89Si5vd25lckRvY3VtZW50LE0sSD1PLmRvY3VtZW50RWxlbWVudCxLPU8uYm9keSxMPU8uZGVmYXVsdFZpZXcsRT1MLmdldENvbXB1dGVkU3R5bGUoSixudWxsKSxOPUoub2Zmc2V0VG9wLEk9Si5vZmZzZXRMZWZ0O3doaWxlKChKPUoucGFyZW50Tm9kZSkmJkohPT1LJiZKIT09SCl7TT1MLmdldENvbXB1dGVkU3R5bGUoSixudWxsKTtOLT1KLnNjcm9sbFRvcCxJLT1KLnNjcm9sbExlZnQ7aWYoSj09PUcpe04rPUoub2Zmc2V0VG9wLEkrPUoub2Zmc2V0TGVmdDtpZihvLm9mZnNldC5kb2VzTm90QWRkQm9yZGVyJiYhKG8ub2Zmc2V0LmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzJiYvXnQoYWJsZXxkfGgpJC9pLnRlc3QoSi50YWdOYW1lKSkpe04rPXBhcnNlSW50KE0uYm9yZGVyVG9wV2lkdGgsMTApfHwwLEkrPXBhcnNlSW50KE0uYm9yZGVyTGVmdFdpZHRoLDEwKXx8MH1GPUcsRz1KLm9mZnNldFBhcmVudH1pZihvLm9mZnNldC5zdWJ0cmFjdHNCb3JkZXJGb3JPdmVyZmxvd05vdFZpc2libGUmJk0ub3ZlcmZsb3chPT0idmlzaWJsZSIpe04rPXBhcnNlSW50KE0uYm9yZGVyVG9wV2lkdGgsMTApfHwwLEkrPXBhcnNlSW50KE0uYm9yZGVyTGVmdFdpZHRoLDEwKXx8MH1FPU19aWYoRS5wb3NpdGlvbj09PSJyZWxhdGl2ZSJ8fEUucG9zaXRpb249PT0ic3RhdGljIil7Tis9Sy5vZmZzZXRUb3AsSSs9Sy5vZmZzZXRMZWZ0fWlmKEUucG9zaXRpb249PT0iZml4ZWQiKXtOKz1NYXRoLm1heChILnNjcm9sbFRvcCxLLnNjcm9sbFRvcCksSSs9TWF0aC5tYXgoSC5zY3JvbGxMZWZ0LEsuc2Nyb2xsTGVmdCl9cmV0dXJue3RvcDpOLGxlZnQ6SX19fW8ub2Zmc2V0PXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7aWYodGhpcy5pbml0aWFsaXplZCl7cmV0dXJufXZhciBMPWRvY3VtZW50LmJvZHksRj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxILEcsTixJLE0sRSxKPUwuc3R5bGUubWFyZ2luVG9wLEs9JzxkaXYgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6NXB4IHNvbGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4OyI+PGRpdj48L2Rpdj48L2Rpdj48dGFibGUgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDttYXJnaW46MDtib3JkZXI6NXB4IHNvbGlkICMwMDA7cGFkZGluZzowO3dpZHRoOjFweDtoZWlnaHQ6MXB4OyIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj48dHI+PHRkPjwvdGQ+PC90cj48L3RhYmxlPic7TT17cG9zaXRpb246ImFic29sdXRlIix0b3A6MCxsZWZ0OjAsbWFyZ2luOjAsYm9yZGVyOjAsd2lkdGg6IjFweCIsaGVpZ2h0OiIxcHgiLHZpc2liaWxpdHk6ImhpZGRlbiJ9O2ZvcihFIGluIE0pe0Yuc3R5bGVbRV09TVtFXX1GLmlubmVySFRNTD1LO0wuaW5zZXJ0QmVmb3JlKEYsTC5maXJzdENoaWxkKTtIPUYuZmlyc3RDaGlsZCxHPUguZmlyc3RDaGlsZCxJPUgubmV4dFNpYmxpbmcuZmlyc3RDaGlsZC5maXJzdENoaWxkO3RoaXMuZG9lc05vdEFkZEJvcmRlcj0oRy5vZmZzZXRUb3AhPT01KTt0aGlzLmRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzPShJLm9mZnNldFRvcD09PTUpO0guc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsSC5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiO3RoaXMuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlPShHLm9mZnNldFRvcD09PS01KTtMLnN0eWxlLm1hcmdpblRvcD0iMXB4Ijt0aGlzLmRvZXNOb3RJbmNsdWRlTWFyZ2luSW5Cb2R5T2Zmc2V0PShMLm9mZnNldFRvcD09PTApO0wuc3R5bGUubWFyZ2luVG9wPUo7TC5yZW1vdmVDaGlsZChGKTt0aGlzLmluaXRpYWxpemVkPXRydWV9LGJvZHlPZmZzZXQ6ZnVuY3Rpb24oRSl7by5vZmZzZXQuaW5pdGlhbGl6ZWR8fG8ub2Zmc2V0LmluaXRpYWxpemUoKTt2YXIgRz1FLm9mZnNldFRvcCxGPUUub2Zmc2V0TGVmdDtpZihvLm9mZnNldC5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldCl7Rys9cGFyc2VJbnQoby5jdXJDU1MoRSwibWFyZ2luVG9wIix0cnVlKSwxMCl8fDAsRis9cGFyc2VJbnQoby5jdXJDU1MoRSwibWFyZ2luTGVmdCIsdHJ1ZSksMTApfHwwfXJldHVybnt0b3A6RyxsZWZ0OkZ9fX07by5mbi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIEk9MCxIPTAsRjtpZih0aGlzWzBdKXt2YXIgRz10aGlzLm9mZnNldFBhcmVudCgpLEo9dGhpcy5vZmZzZXQoKSxFPS9eYm9keXxodG1sJC9pLnRlc3QoR1swXS50YWdOYW1lKT97dG9wOjAsbGVmdDowfTpHLm9mZnNldCgpO0oudG9wLT1qKHRoaXMsIm1hcmdpblRvcCIpO0oubGVmdC09aih0aGlzLCJtYXJnaW5MZWZ0Iik7RS50b3ArPWooRywiYm9yZGVyVG9wV2lkdGgiKTtFLmxlZnQrPWooRywiYm9yZGVyTGVmdFdpZHRoIik7Rj17dG9wOkoudG9wLUUudG9wLGxlZnQ6Si5sZWZ0LUUubGVmdH19cmV0dXJuIEZ9LG9mZnNldFBhcmVudDpmdW5jdGlvbigpe3ZhciBFPXRoaXNbMF0ub2Zmc2V0UGFyZW50fHxkb2N1bWVudC5ib2R5O3doaWxlKEUmJighL15ib2R5fGh0bWwkL2kudGVzdChFLnRhZ05hbWUpJiZvLmNzcyhFLCJwb3NpdGlvbiIpPT0ic3RhdGljIikpe0U9RS5vZmZzZXRQYXJlbnR9cmV0dXJuIG8oRSl9fSk7by5lYWNoKFsiTGVmdCIsIlRvcCJdLGZ1bmN0aW9uKEYsRSl7dmFyIEc9InNjcm9sbCIrRTtvLmZuW0ddPWZ1bmN0aW9uKEgpe2lmKCF0aGlzWzBdKXtyZXR1cm4gbnVsbH1yZXR1cm4gSCE9PWc/dGhpcy5lYWNoKGZ1bmN0aW9uKCl7dGhpcz09bHx8dGhpcz09ZG9jdW1lbnQ/bC5zY3JvbGxUbyghRj9IOm8obCkuc2Nyb2xsTGVmdCgpLEY/SDpvKGwpLnNjcm9sbFRvcCgpKTp0aGlzW0ddPUh9KTp0aGlzWzBdPT1sfHx0aGlzWzBdPT1kb2N1bWVudD9zZWxmW0Y/InBhZ2VZT2Zmc2V0IjoicGFnZVhPZmZzZXQiXXx8by5ib3hNb2RlbCYmZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50W0ddfHxkb2N1bWVudC5ib2R5W0ddOnRoaXNbMF1bR119fSk7by5lYWNoKFsiSGVpZ2h0IiwiV2lkdGgiXSxmdW5jdGlvbihJLEcpe3ZhciBFPUk/IkxlZnQiOiJUb3AiLEg9ST8iUmlnaHQiOiJCb3R0b20iLEY9Ry50b0xvd2VyQ2FzZSgpO28uZm5bImlubmVyIitHXT1mdW5jdGlvbigpe3JldHVybiB0aGlzWzBdP28uY3NzKHRoaXNbMF0sRixmYWxzZSwicGFkZGluZyIpOm51bGx9O28uZm5bIm91dGVyIitHXT1mdW5jdGlvbihLKXtyZXR1cm4gdGhpc1swXT9vLmNzcyh0aGlzWzBdLEYsZmFsc2UsSz8ibWFyZ2luIjoiYm9yZGVyIik6bnVsbH07dmFyIEo9Ry50b0xvd2VyQ2FzZSgpO28uZm5bSl09ZnVuY3Rpb24oSyl7cmV0dXJuIHRoaXNbMF09PWw/ZG9jdW1lbnQuY29tcGF0TW9kZT09IkNTUzFDb21wYXQiJiZkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrR118fGRvY3VtZW50LmJvZHlbImNsaWVudCIrR106dGhpc1swXT09ZG9jdW1lbnQ/TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJjbGllbnQiK0ddLGRvY3VtZW50LmJvZHlbInNjcm9sbCIrR10sZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiK0ddLGRvY3VtZW50LmJvZHlbIm9mZnNldCIrR10sZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50WyJvZmZzZXQiK0ddKTpLPT09Zz8odGhpcy5sZW5ndGg/by5jc3ModGhpc1swXSxKKTpudWxsKTp0aGlzLmNzcyhKLHR5cGVvZiBLPT09InN0cmluZyI/SzpLKyJweCIpfX0pfSkoKTs=]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmcgPSBhcnJheSgKJ2luc3RhbGxlZCcgPT4nTW9kdWxlIHZlcnNpb24gJXMgaW5zdGFsbGVkLicsCid1cGdyYWRlZCcgPT4nTW9kdWxlIHVwZ3JhZGVkIHRvIHZlcnNpb24gJXMuJywKJ3VuaW5zdGFsbGVkJyA9PidNb2R1bGUgdW5pbnN0YWxsZWQuJywKCidhZG1pbmRlc2NyaXB0aW9uJyA9PidBIG1vZHVsZSB0byBnZW5lcmF0ZSBtb2R1bGVzIGZvciBjdXN0b20gY29udGVudCB0eXBlcy4nLAonaW5zdGFsbHBvc3RtZXNzYWdlJyA9PidNJmFtcDtDIEZhY3Rvcnkgd2FzIHN1Y2Nlc3NmdWxseSBpbnN0YWxsZWQuIFlvdSBjYW4gYWNjZXNzIGl0IGFuZCBnZW5lcmF0ZSBuZXcgbW9kdWxlcyB0aHJvdWdoIHRoZSBFeHRlbnNpb25zIG1lbnUuJywKJ3VuaW5zdGFsbHByZW1lc3NhZ2UnID0+J0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB1bmluc3RhbGwgTUMgRmFjdG9yeT8gVGhpcyB3aWxsIGFsc28gcmVtb3ZlIGFsbCBzZXR0aW5ncyBmb3IgZ2VuZXJhdGVkIG1vZHVsZXMuJywKJ3VuaW5zdGFsbHBvc3RtZXNzYWdlJyA9PidNJmFtcDtDIEZhY3Rvcnkgd2FzIHN1Y2Nlc3NmdWxseSB1bmluc3RhbGxlZC4gWW91IGNhbiByZWluc3RhbGwgaXQgYXQgYW55IHRpbWUuJywKJ2Vycm9yX29jY3VyZWRfcHVibGlzaGluZycgPT4nQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIHRoZSBwdWJsaWNhdGlvbiBvZiB0aGUgbW9kdWxlJywKCidlZGl0JyA9PidFZGl0JywKJ2RlbGV0ZScgPT4nRGVsZXRlJywKJ21vdmVfdXAnID0+J01vdmUgdXAnLAonbW92ZV9kb3duJyA9PidNb3ZlIGRvd24nLAoKJ2ltcG9ydCcgPT4gJ0ltcG9ydCcsCidpbXBvcnRfbW9kdWxlJyA9PiAnSW1wb3J0IG1vZHVsZScsCidmb3JtX21vZHVsZV9uYW1lJyA9PiAnTW9kdWxlIG5hbWUnLAonbGVhdmVfZW1wdHknID0+ICdZb3UgY2FuIGxlYXZlIHRoaXMgZW1wdHknLAonZm9ybV94bWxmaWxlJyA9PiAnTW9kdWxlIFhNTCBGaWxlJywKCidmb3JtX25hbWUnID0+ICdOYW1lJywKJ2Zvcm1fY29kZScgPT4gJ0NvZGUnLAonZm9ybV9pc19wdWJsaWMnID0+ICdJcyBhIHB1YmxpYyBhY3Rpb24nLAonZm9ybV9oYXZlX3Blcm1pc3Npb24nID0+ICdIYXZlIGEgc3BlY2lmaWMgcGVybWlzc2lvbicsCgonbWFpbicgPT4gJ01haW4nLAonZmllbGRzJyA9PiAnRmllbGRzJywKJ2FjdGlvbnMnID0+ICdBY3Rpb25zJywKJ2xvZ2ljJyA9PiAnQ3VzdG9tIGxvZ2ljJywKJ29wdGlvbnMnID0+ICdPcHRpb25zJywKCidoZWxwJyA9PicKCTxoMz5EZXNjcmlwdGlvbjwvaDM+Cgk8cD5UaGlzIG1vZHVsZSBjYW4gZ2VuZXJhdGUgbmV3IG1vZHVsZXMgdG8gbWFuYWdlIGN1c3RvbSBjb250ZW50IHR5cGVzLjwvcD4KCTxoMz5Ib3cgdG8gdXNlIGl0PC9oMz4KCTxwPkZvciB0aGUgZ2VuZXJhbCBoZWxwLCB5b3UgY2FuIGZpbmQgaXQgdW5kZXIgdGhlIGdlbmVyYXRlZCBtb2R1bGUgaGVscC48L3A+Cgk8cD5XaXRoIHRoZSBzcGVjaWZpYyBtb2R1bGUgbG9naWMsIHlvdSBjYW4gbm93IGFkZCBvciBvdmVycmlkZSBzb21lIG1ldGhvZHMgZnJvbSB0aGUgb2JqZWN0IGNsYXNzIGl0c2VsZi4gRm9yIGV4YW1wbGUsIHlvdSBjb3VsZCBvdmVyaWRlIHRoZSBtZXRob2QgImdldFRpdGxlIiB0byBkbyBzb21ldGhpbmcgZWxzZS48L3A+Cgk8cD5TcGVjaWZpYyBtZXRob2RzIHRoYXQgeW91IGNvdWxkIGNvbnNpZGVyIG92ZXJyaWRpbmc6PC9wPgoJPHVsPgoJCTxsaT48c3Ryb25nPmdldENvcmVTbHVnKCk8L3N0cm9uZz4gVGhpcyBnZW5lcmF0ZSB0aGUgdXJsIHNsdWcgb2YgdGhlIG1vZHVsZS4gQnkgZGVmYXVsdCBpdCB0YWtlIGl0IGZyb20gdGl0bGUuPC9saT4KCTwvdT4KCTxwPlNvbWUgdGlwczwvcD4KCTxwPkZvciBhbGwgZmllbGRzLCB5b3UgY2FuIGRlZmluZSBvcHRpb25zLiBXcml0ZSB0aGVtIGluIGEgImNzcyIgd2F5LjwvcD4KCTx1bD4KCQk8bGk+PHN0cm9uZz50aXBzPC9zdHJvbmc+IEFkZCBhIHRpcCBpbiB0aGUgZW5kIG9mIHRoZSBmaWVsZC48L2xpPgoJPC91bD4KCTxoND5Ecm9wZG93bjwvaDQ+Cgk8dWw+CgkJPGxpPjxzdHJvbmc+dmFsdWVzPC9zdHJvbmc+IEEgbGlzdCBvZiB2YWx1ZXMgZm9yIHRoZSBkcm9wZG93bi4gWW91IGNhbiB1c2Uga2V5PT52YWx1ZSAoZXg6IHZhbHVlczpvcHRpb24xID0+IE9wdGlvbiAxLCBvcHRpb24yID0+IE9wdGlvbiAyKS4gVG8gcmV0cmlldmUgdGhlIHZhbHVlLCB1c2UgZ2V0TXlGaWVsZE5hbWVWYWx1ZSgpPC9saT4KCTwvdWw+Cgk8aDQ+TW9kdWxlPC9oND4KCTxwPkZvciB0aGUgZmllbGQgdHlwZSAibW9kdWxlIiwgdGhlIG9wdGlvbiBzaG91bGQgYmUgZmlsZWQgd2l0aCB0aGUgZXhhY3QgbW9kdWxlIG5hbWUuIGV4OiBtb2R1bGVfbmFtZTpNeU1vZHVsZS4gWW91IGNhbiBhbHNvIHNwZWNpZnkgaXQgdG8gYmUgYSBtdWx0aXBsZSBmaWxlIG11bHRpcGxlOnRydWUgYW5kIHlvdSBjYW4gcmVwbGFjZSBkcm9wZG93biBieSBhIHJhZGlvIG9yIGNoZWNrYm94IGxpc3QgdXNpbmcgdGhlIHBhcmFtIGV4cGFuZGVkLiBFeDogIm1vZHVsZV9uYW1lOk15TW9kdWxlO211bHRpcGxlOnRydWU7ZXhwYW5kZWQ6dHJ1ZSI8L3A+Cgk8dWw+CgkJPGxpPjxzdHJvbmc+bW9kdWxlX25hbWU8L3N0cm9uZz4gVGhlIG1vZHVsZSBuYW1lPC9saT4KCQk8bGk+PHN0cm9uZz5zZWxlY3Rvcjwvc3Ryb25nPiBUaGUgZnVuY3Rpb24gdG8gc2VsZWN0IGl0ZW1zICh0YWtlIE1DRkNyaXRlcmlhIGZvciBwYXJhbSk8L2xpPgoJCTxsaT48c3Ryb25nPm11bHRpcGxlPC9zdHJvbmc+IEFsbG93IG11bHRpcGxlIHNlbGVjdGlvbiA/PC9saT4KCQk8bGk+PHN0cm9uZz5leHBhbmRlZDwvc3Ryb25nPiBTaG93IGNoZWNrYm94L3JhZGlvIGJ1dHRvbiBpbnN0ZWFkIG9mIHNlbGVjdG9yID88L2xpPgoJPC91bD4KCTxoND5EYXRlPC9oND4KCTxwPkZvciB0aGUgZmllbGQgdHlwZSAiZGF0ZSIsIHlvdSBjYW4gc3BlY2lmeSB0aGUgc3RhcnQgeWVhciBhbmQgbnVtYmVyIG9mIHllYXJzLiBFeGFtcGxlIDogInN0YXJ0X3llYXI6MTk1MDtudW1iZXJfeWVhcnM6NzAiPC9wPgoJPGg0PlBhZ2U8L2g0PgoJPHA+Rm9yIHRoZSBwYWdlcywgeW91IGNhbiB1c2UgdGhlIHNhbWUgaW5mb3JtYXRpb24gYXMgZm9yIGRyb3Bkb3duIGV4Y2VwdCB0aGUgInZhbHVlcyIuIFlvdSBjYW4gYWxzbyB1c2UgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzOjwvcD4KCTx1bD4KCQk8bGk+PHN0cm9uZz5jaGlsZHJlbm9mPC9zdHJvbmc+IFNob3cgb25seSB0aGUgY2hpbGRyZW5cJ3Mgb2YgYSBzcGVjaWZpZWQgcGFnZS48L2xpPgoJCTxsaT48c3Ryb25nPnN0YXJ0X3BhZ2U8L3N0cm9uZz4gU2hvdyBvbmx5IHRoZSBkZXNjZW5kYW50cyBvZiBhIHNwZWNpZmllZCBwYWdlLjwvbGk+Cgk8L3VsPgoJPGg0PkRvY3VtZW50czwvaDQ+Cgk8cD5Zb3UgY2FuIHByb3RlY3QgZG9jdW1lbnRzIGRvaW5nICJpbmRpcmVjdCIgZG93bmxvYWRzIHdoaWNoIHdpbGwgYWxsb3cgeW91IHRvIHNldCB1c2VyIHBlcm1pc3Npb25zIG9uIGl0IGZvciBleGFtcGxlLjwvcD4KCTx1bD4KCQk8bGk+PHN0cm9uZz5wcm90ZWN0ZWQ8L3N0cm9uZz4gU3BlY2lmeSB0aGUgYWJzb2x1dGUgcGF0aCB3aGVyZSBkb2N1bWVudHMgaGF2ZSB0byBiZSBzYWZlbHkgc3RvcmVkLiBUaGlzIGZvbGRlciBuZWVkcyB3cml0ZSBhY2Nlc3MuPC9saT4KCTwvdWw+Cgk8aDM+U3VwcG9ydDwvaDM+Cgk8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgoJPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+Cgk8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMDgtMjAxMCwgSmVhbi1DaHJpc3RvcGhlIEN1dmVsaWVyIDxhIGhyZWY9Im1haWx0bzpqY2NAbW9ycmlzLWNoYXBtYW4uY29tIj4mbHQ7amNjQG1vcnJpcy1jaGFwbWFuLmNvbSZndDs8L2E+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5tb3JyaXMtY2hhcG1hbi5jb20vIj5Nb3JyaXMgJmFtcDsgQ2hhcG1hbiBCZWxnaXVtPC9hPi48L3A+Cgk8cD5Db250cmlidXRvcnM6IEdlcnJ5IFZhbmRlcm1hZXNlbjwvcD4KCTxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwiPkdOVSBQdWJsaWMgTGljZW5zZTwvYT4uIFlvdSBtdXN0IGFncmVlIHRvIHRoaXMgbGljZW5zZSBiZWZvcmUgdXNpbmcgdGhpcyBtb2R1bGUuPC9wPgonLAoKJ2NoYW5nZWxvZycgPT4nCgk8ZGw+CgkJPGR0PlZlcnNpb24gMC4wLjEgLSAyOSBTZXB0ZW1iZXIgMjAwOC48L2R0PgoJCTxkZD5Jbml0aWFsIFJlbGVhc2UuPC9kZD4KCQk8ZHQ+VmVyc2lvbiAxLjAgLSAyMSBPY3RvYmVyIDIwMDkuPC9kdD4KCQk8ZGQ+Rmlyc3Qgc3RhYmxlIHJlbGVhc2UuPC9kZD4KCQk8ZHQ+VmVyc2lvbiAxLjAuMSAtIDIyIE9jdG9iZXIgMjAwOS48L2R0PgoJCTxkZD4KCQkJPHVsPgoJCQkJPGxpPkNsZWFuLXVwIG9mIHRoZSBjb2RlLjwvbGk+CgkJCQk8bGk+TW9kZWxzIG9mIGFscmVhZHkgaW5zdGFsbGVkIG1vZHVsZXMgYXJlIGF1dG8tdXBkYXRlZCB3aGVuIGFkZGluZyBuZXcgY29sdW1ucy48L2xpPgoJCQk8L3VsPgoJCTwvZGQ+Cgk8L2RsPgonKTsKCg==]]></data>
	</file>
	<file>
	  <filename>/libraries/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/libraries/bennu/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/libraries/bennu/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAAQKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAkAAAABAAAQAABHAEUATABPAEcALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAA0AQwBIAEEATgBHAEUATABPAEcALgB0AHgAdElsb2NibG9iAAAAEAAAAEYAAAAo////////AAAAAAANAEMATwBQAFkAUgBJAEcASABUAC4AdAB4AHRJbG9jYmxvYgAAABAAAADMAAAAKP///////wAAAAAAAwBsAGkAYklsb2NibG9iAAAAEAAAAVIAAAAoAAAACf//AAAAAAADAGwAaQBiYndzcGJsb2IAAACyYnBsaXN0MDDWAQIDBAUGBwgICggMXFdpbmRvd0JvdW5kc1tTaG93U2lkZWJhcl1TaG93U3RhdHVzQmFyW1Nob3dQYXRoYmFyW1Nob3dUb29sYmFyXFNpZGViYXJXaWR0aF8QG3t7LTEwMTEsIDQ2Nn0sIHsxMDExLCA1OTB9fQkJCAkQwAgVIi48SFRhf4CBgoMAAAAAAAABAQAAAAAAAAANAAAAAAAAAAAAAAAAAAAAhQAAAAsATABJAEMARQBOAFMARQAuAHQAeAB0SWxvY2Jsb2IAAAAQAAAB2AAAACgAAAAG//8AAAAAAAoAUgBFAEEARABNAEUALgB0AHgAdElsb2NibG9iAAAAEAAAAl4AAAAoAAAACP//AAAAAAAFAHQAZQBzAHQAc0lsb2NibG9iAAAAEAAAAEYAAACYAAAABP//AAAAAAAFAHQAZQBzAHQAc2J3c3BibG9iAAAAsmJwbGlzdDAw1gECAwQFBgcICAoIDFxXaW5kb3dCb3VuZHNbU2hvd1NpZGViYXJdU2hvd1N0YXR1c0JhcltTaG93UGF0aGJhcltTaG93VG9vbGJhclxTaWRlYmFyV2lkdGhfEBt7ey0xMDExLCA0NjZ9LCB7MTAxMSwgNTkwfX0JCQgJEMAIFSIuPEhUYX+AgYKDAAAAAAAAAQEAAAAAAAAADQAAAAAAAAAAAAAAAAAAAIUAAAAIAFQATwBEAE8ALgB0AHgAdElsb2NibG9iAAAAEAAAAMwAAACYAAAAA///AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAAECgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAIAAAAGAAAAAAAAAAAQAAAIAAAAABAAABAAAAAAEAAAIAAAAAAAAAAAIAAAgAAAAYAAAAAAAAAAABAAAgAAAAAAEAAEAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/libraries/bennu/CHANGELOG.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Tm8gY2hhbmdlbG9nIHlldCwgc29ycnku]]></data>
	</file>
	<file>
	  <filename>/libraries/bennu/COPYRIGHT.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QmVubnUgLSBBbiBvYmplY3Qtb3JpZW50ZWQgaUNhbGVuZGFyIChSRkMyNDQ1KSBpbXBsZW1lbnRhdGlvbiBpbiBQSFANCmh0dHA6Ly9iZW5udS5zb3VyY2Vmb3JnZS5uZXQNCg0KQmVubnUgaXMgY29weXJpZ2h0IChDKSAyMDA1IGJ5IElvYW5uaXMgUGFwYWlvYW5ub3UgKHBqQHVvbS5ncikuDQoNClRoZSBmdWxsIHRleHQgb2YgdGhlIExHTFAgbGljZW5zZSBpcyBpbmNsdWRlZCBpbiBMSUNFTlNFLnR4dA0KDQpUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQptb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljDQpMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCnZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KDQpUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCmJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQ0KTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCg0KWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYw0KTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0bzoNClRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCjUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vcg0KQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBDQo=]]></data>
	</file>
	<file>
	  <filename>/libraries/bennu/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/libraries/bennu/lib/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAAIJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAUAAAABAAAQAAB1AC4AaQBuAGMALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAANAGIAZQBuAG4AdQAuAGkAbgBjAC4AcABoAHBJbG9jYmxvYgAAABAAAABGAAAAKP///////wAAAAAAGABpAEMAYQBsAGUAbgBkAGEAcgBfAGMAbwBtAHAAbwBuAGUAbgB0AHMALgBwAGgAcElsb2NibG9iAAAAEAAAAMwAAAAo////////AAAAAAAYAGkAQwBhAGwAZQBuAGQAYQByAF8AcABhAHIAYQBtAGUAdABlAHIAcwAuAHAAaABwSWxvY2Jsb2IAAAAQAAABUgAAACj///////8AAAAAABgAaQBDAGEAbABlAG4AZABhAHIAXwBwAHIAbwBwAGUAcgB0AGkAZQBzAC4AcABoAHBJbG9jYmxvYgAAABAAAAHYAAAAKP///////wAAAAAAFQBpAEMAYQBsAGUAbgBkAGEAcgBfAHIAZgBjADIANAA0ADUALgBwAGgAcElsb2NibG9iAAAAEAAAAl4AAAAo////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAACCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAIAAAAGAAAAAAAAAAAQAAAIAAAAABAAABAAAAAAAAAAABAAAEAAAAAAIAAAgAAAAYAAAAAAAAAAABAAAgAAAAAAEAAEAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/libraries/bennu/lib/bennu.inc.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAgLy8gJElkOiBiZW5udS5pbmMucGhwLHYgMS4zIDIwMDUvMDcvMjEgMjI6MzE6NDQgZGVmYWNlciBFeHAgJA0KDQppZighZGVmaW5lZCgnX0JFTk5VX1ZFUlNJT04nKSkgew0KICAgIGRlZmluZSgnX0JFTk5VX1ZFUlNJT04nLCAnMC4xJyk7DQogICAgaW5jbHVkZSgnaUNhbGVuZGFyX3JmYzI0NDUucGhwJyk7DQogICAgaW5jbHVkZSgnaUNhbGVuZGFyX2NvbXBvbmVudHMucGhwJyk7DQogICAgaW5jbHVkZSgnaUNhbGVuZGFyX3Byb3BlcnRpZXMucGhwJyk7DQogICAgaW5jbHVkZSgnaUNhbGVuZGFyX3BhcmFtZXRlcnMucGhwJyk7DQp9DQoNCj8+DQo=]]></data>
	</file>
	<file>
	  <filename>/libraries/bennu/lib/iCalendar_components.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAgLy8gJElkOiBpQ2FsZW5kYXJfY29tcG9uZW50cy5waHAsdiAxLjggMjAwNS8wNy8yMSAyMjozMTo0NCBkZWZhY2VyIEV4cCAkDQoNCmNsYXNzIGlDYWxlbmRhcl9jb21wb25lbnQgew0KICAgIHZhciAkbmFtZSAgICAgICAgICAgICA9IE5VTEw7DQogICAgdmFyICRwcm9wZXJ0aWVzICAgICAgID0gTlVMTDsNCiAgICB2YXIgJGNvbXBvbmVudHMgICAgICAgPSBOVUxMOw0KICAgIHZhciAkdmFsaWRfcHJvcGVydGllcyA9IE5VTEw7DQogICAgdmFyICR2YWxpZF9jb21wb25lbnRzID0gTlVMTDsNCg0KICAgIGZ1bmN0aW9uIGlDYWxlbmRhcl9jb21wb25lbnQoKSB7DQogICAgICAgICR0aGlzLT5jb25zdHJ1Y3QoKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgIC8vIEluaXRpYWxpemUgdGhlIGNvbXBvbmVudHMgYXJyYXkNCiAgICAgICAgaWYoZW1wdHkoJHRoaXMtPmNvbXBvbmVudHMpKSB7DQogICAgICAgICAgICAkdGhpcy0+Y29tcG9uZW50cyA9IGFycmF5KCk7DQogICAgICAgICAgICBmb3JlYWNoKCR0aGlzLT52YWxpZF9jb21wb25lbnRzIGFzICRuYW1lKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPmNvbXBvbmVudHNbJG5hbWVdID0gYXJyYXkoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGdldF9uYW1lKCkgew0KICAgICAgICByZXR1cm4gJHRoaXMtPm5hbWU7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gYWRkX3Byb3BlcnR5KCRuYW1lLCAkdmFsdWUgPSBOVUxMLCAkcGFyYW1ldGVycyA9IE5VTEwpIHsNCg0KICAgICAgICAvLyBVcHBlcmNhc2UgZmlyc3Qgb2YgYWxsDQogICAgICAgICRuYW1lID0gc3RydG91cHBlcigkbmFtZSk7DQoNCiAgICAgICAgLy8gQXJlIHdlIHRyeWluZyB0byBhZGQgYSB2YWxpZCBwcm9wZXJ0eT8NCiAgICAgICAgJHhuYW1lID0gZmFsc2U7DQogICAgICAgIGlmKCFpc3NldCgkdGhpcy0+dmFsaWRfcHJvcGVydGllc1skbmFtZV0pKSB7DQogICAgICAgICAgICAvLyBJZiBub3QsIGlzIGl0IGFuIHgtbmFtZSBhcyBwZXIgUkZDIDI0NDU/DQogICAgICAgICAgICBpZighcmZjMjQ0NV9pc194bmFtZSgkbmFtZSkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAvLyBTaW5jZSB0aGlzIGlzIGFuIHhuYW1lLCBhbGwgY29tcG9uZW50cyBhcmUgc3VwcG9zZWQgdG8gYWxsb3cgdGhpcyBwcm9wZXJ0eQ0KICAgICAgICAgICAgJHhuYW1lID0gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIENyZWF0ZSBhIHByb3BlcnR5IG9iamVjdCBvZiB0aGUgY29ycmVjdCBjbGFzcw0KICAgICAgICBpZigkeG5hbWUpIHsNCiAgICAgICAgICAgICRwcm9wZXJ0eSA9IG5ldyBpQ2FsZW5kYXJfcHJvcGVydHlfeDsNCiAgICAgICAgICAgICRwcm9wZXJ0eS0+c2V0X25hbWUoJG5hbWUpOw0KICAgICAgICB9DQogICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgJGNsYXNzbmFtZSA9ICdpQ2FsZW5kYXJfcHJvcGVydHlfJy5zdHJ0b2xvd2VyKHN0cl9yZXBsYWNlKCctJywgJ18nLCAkbmFtZSkpOw0KICAgICAgICAgICAgJHByb3BlcnR5ID0gbmV3ICRjbGFzc25hbWU7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBJZiAkdmFsdWUgaXMgTlVMTCwgdGhlbiB0aGlzIHByb3BlcnR5IG11c3QgZGVmaW5lIGEgZGVmYXVsdCB2YWx1ZS4NCiAgICAgICAgaWYoJHZhbHVlID09PSBOVUxMKSB7DQogICAgICAgICAgICAkdmFsdWUgPSAkcHJvcGVydHktPmRlZmF1bHRfdmFsdWUoKTsNCiAgICAgICAgICAgIGlmKCR2YWx1ZSA9PT0gTlVMTCkgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIFNldCB0aGlzIHByb3BlcnR5J3MgcGFyZW50IGNvbXBvbmVudCB0byBvdXJzZWx2ZXMsIGJlY2F1c2Ugc29tZQ0KICAgICAgICAvLyBwcm9wZXJ0aWVzIGJlaGF2ZSBkaWZmZXJlbnRseSBhY2NvcmRpbmcgdG8gd2hhdCBjb21wb25lbnQgdGhleSBhcHBseSB0by4NCiAgICAgICAgJHByb3BlcnR5LT5zZXRfcGFyZW50X2NvbXBvbmVudCgkdGhpcy0+bmFtZSk7DQoNCiAgICAgICAgLy8gU2V0IHBhcmFtZXRlcnMgYmVmb3JlIHZhbHVlOyB0aGlzIGhlbHBzIHdpdGggc29tZSBwcm9wZXJ0aWVzIHdoaWNoDQogICAgICAgIC8vIGFjY2VwdCBhIFZBTFVFIHBhcmFtZXRlciwgYW5kIHRodXMgY2hhbmdlIHRoZWlyIGRlZmF1bHQgdmFsdWUgdHlwZS4NCg0KICAgICAgICAvLyBUaGUgcGFyYW1ldGVycyBtdXN0IGJlIHZhbGlkIGFjY29yZGluZyB0byBwcm9wZXJ0eSBzcGVjaWZpY2F0aW9ucw0KICAgICAgICBpZighZW1wdHkoJHBhcmFtZXRlcnMpKSB7DQogICAgICAgICAgICBmb3JlYWNoKCRwYXJhbWV0ZXJzIGFzICRwYXJhbW5hbWUgPT4gJHBhcmFtdmFsdWUpIHsNCiAgICAgICAgICAgICAgICBpZighJHByb3BlcnR5LT5zZXRfcGFyYW1ldGVyKCRwYXJhbW5hbWUsICRwYXJhbXZhbHVlKSkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBTb21lIHBhcmFtZXRlcnMgaW50ZXJhY3QgYW1vbmcgdGhlbXNlbHZlcyAoZS5nLiBFTkNPRElORyBhbmQgVkFMVUUpDQogICAgICAgICAgICAvLyBzbyBtYWtlIHN1cmUgdGhhdCBhZnRlciB0aGUgZHVzdCBzZXR0bGVzLCB0aGVzZSBpbnZhcmlhbnRzIGhvbGQgdHJ1ZQ0KICAgICAgICAgICAgaWYoISRwcm9wZXJ0eS0+aW52YXJpYW50X2hvbGRzKCkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICAvLyAkdmFsdWUgTVVTVCBiZSB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlIHByb3BlcnR5IGRhdGEgdHlwZQ0KICAgICAgICBpZighJHByb3BlcnR5LT5zZXRfdmFsdWUoJHZhbHVlKSkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gSWYgdGhpcyBwcm9wZXJ0eSBpcyByZXN0cmljdGVkIHRvIG9ubHkgb25jZSwgYmxpbmRseSBvdmVyd3JpdGUgdmFsdWUNCiAgICAgICAgaWYoISR4bmFtZSAmJiAkdGhpcy0+dmFsaWRfcHJvcGVydGllc1skbmFtZV0gJiBSRkMyNDQ1X09OQ0UpIHsNCiAgICAgICAgICAgICR0aGlzLT5wcm9wZXJ0aWVzWyRuYW1lXSA9IGFycmF5KCRwcm9wZXJ0eSk7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBPdGhlcndpc2UgYWRkIGl0IHRvIHRoZSBpbnN0YW5jZSBhcnJheSBmb3IgdGhpcyBwcm9wZXJ0eQ0KICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICR0aGlzLT5wcm9wZXJ0aWVzWyRuYW1lXVtdID0gJHByb3BlcnR5Ow0KICAgICAgICB9DQoNCiAgICAgICAgLy8gRmluYWxseTogYWZ0ZXIgYWxsIHRoZXNlLCBkb2VzIHRoZSBjb21wb25lbnQgaW52YXJpYW50IGhvbGQ/DQogICAgICAgIGlmKCEkdGhpcy0+aW52YXJpYW50X2hvbGRzKCkpIHsNCiAgICAgICAgICAgIC8vIElmIG5vdCwgY29tcGxldGVseSB1bmRvIHRoZSBwcm9wZXJ0eSBhZGRpdGlvbg0KICAgICAgICAgICAgYXJyYXlfcG9wKCR0aGlzLT5wcm9wZXJ0aWVzWyRuYW1lXSk7DQogICAgICAgICAgICBpZihlbXB0eSgkdGhpcy0+cHJvcGVydGllc1skbmFtZV0pKSB7DQogICAgICAgICAgICAgICAgdW5zZXQoJHRoaXMtPnByb3BlcnRpZXNbJG5hbWVdKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiB0cnVlOyAgICAgICAgDQogICAgICAgIA0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGFkZF9jb21wb25lbnQoJGNvbXBvbmVudCkgew0KDQogICAgICAgIC8vIFdpdGggdGhlIGRldGFpbGVkIGludGVyZmFjZSwgeW91IGNhbiBhZGQgb25seSBjb21wb25lbnRzIHdpdGggdGhpcyBmdW5jdGlvbg0KICAgICAgICBpZighaXNfb2JqZWN0KCRjb21wb25lbnQpIHx8ICFpc19zdWJjbGFzc19vZigkY29tcG9uZW50LCAnaUNhbGVuZGFyX2NvbXBvbmVudCcpKSB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCg0KICAgICAgICAkbmFtZSA9ICRjb21wb25lbnQtPmdldF9uYW1lKCk7DQoNCiAgICAgICAgLy8gT25seSB2YWxpZCBjb21wb25lbnRzIGFzIHNwZWNpZmllZCBieSB0aGlzIGNvbXBvbmVudCBhcmUgYWxsb3dlZA0KICAgICAgICBpZighaW5fYXJyYXkoJG5hbWUsICR0aGlzLT52YWxpZF9jb21wb25lbnRzKSkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gQWRkIGl0DQogICAgICAgICR0aGlzLT5jb21wb25lbnRzWyRuYW1lXVtdID0gJGNvbXBvbmVudDsNCg0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBnZXRfcHJvcGVydHlfbGlzdCgkbmFtZSkgew0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGludmFyaWFudF9ob2xkcygpIHsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gaXNfdmFsaWQoKSB7DQogICAgICAgIC8vIElmIHdlIGhhdmUgYW55IGNoaWxkIGNvbXBvbmVudHMsIGNoZWNrIHRoYXQgdGhleSBhcmUgYWxsIHZhbGlkDQogICAgICAgIGlmKCFlbXB0eSgkdGhpcy0+Y29tcG9uZW50cykpIHsNCiAgICAgICAgICAgIGZvcmVhY2goJHRoaXMtPmNvbXBvbmVudHMgYXMgJGNvbXBvbmVudCA9PiAkaW5zdGFuY2VzKSB7DQogICAgICAgICAgICAgICAgZm9yZWFjaCgkaW5zdGFuY2VzIGFzICRudW1iZXIgPT4gJGluc3RhbmNlKSB7DQogICAgICAgICAgICAgICAgICAgIGlmKCEkaW5zdGFuY2UtPmlzX3ZhbGlkKCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIEZpbmFsbHksIGNoZWNrIHRoZSB2YWxpZCBwcm9wZXJ0eSBsaXN0IGZvciBhbnkgbWFuZGF0b3J5IHByb3BlcnRpZXMNCiAgICAgICAgLy8gdGhhdCBoYXZlIG5vdCBiZWVuIHNldCBhbmQgZG8gbm90IGhhdmUgYSBkZWZhdWx0IHZhbHVlDQogICAgICAgIGZvcmVhY2goJHRoaXMtPnZhbGlkX3Byb3BlcnRpZXMgYXMgJHByb3BlcnR5ID0+ICRwcm9wZGF0YSkgew0KICAgICAgICAgICAgaWYoKCRwcm9wZGF0YSAmIFJGQzI0NDVfUkVRVUlSRUQpICYmIGVtcHR5KCR0aGlzLT5wcm9wZXJ0aWVzWyRwcm9wZXJ0eV0pKSB7DQogICAgICAgICAgICAgICAgJGNsYXNzbmFtZSA9ICdpQ2FsZW5kYXJfcHJvcGVydHlfJy5zdHJ0b2xvd2VyKHN0cl9yZXBsYWNlKCctJywgJ18nLCAkcHJvcGVydHkpKTsNCiAgICAgICAgICAgICAgICAkb2JqZWN0ICAgID0gbmV3ICRjbGFzc25hbWU7DQogICAgICAgICAgICAgICAgaWYoJG9iamVjdC0+ZGVmYXVsdF92YWx1ZSgpID09PSBOVUxMKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgdW5zZXQoJG9iamVjdCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQogICAgDQogICAgZnVuY3Rpb24gc2VyaWFsaXplKCkgew0KICAgICAgICAvLyBDaGVjayBmb3IgdmFsaWRpdHkgb2YgdGhlIG9iamVjdA0KICAgICAgICBpZighJHRoaXMtPmlzX3ZhbGlkKCkpIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIE1heWJlIHRoZSBvYmplY3QgaXMgdmFsaWQsIGJ1dCB0aGVyZSBhcmUgc29tZSByZXF1aXJlZCBwcm9wZXJ0aWVzIHRoYXQNCiAgICAgICAgLy8gaGF2ZSBub3QgYmVlbiBnaXZlbiBleHBsaWNpdCB2YWx1ZXMuIEluIHRoYXQgY2FzZSwgc2V0IHRoZW0gdG8gZGVmYXVsdHMuDQogICAgICAgIGZvcmVhY2goJHRoaXMtPnZhbGlkX3Byb3BlcnRpZXMgYXMgJHByb3BlcnR5ID0+ICRwcm9wZGF0YSkgew0KICAgICAgICAgICAgaWYoKCRwcm9wZGF0YSAmIFJGQzI0NDVfUkVRVUlSRUQpICYmIGVtcHR5KCR0aGlzLT5wcm9wZXJ0aWVzWyRwcm9wZXJ0eV0pKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPmFkZF9wcm9wZXJ0eSgkcHJvcGVydHkpOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8gU3RhcnQgdGFnDQogICAgICAgICRzdHJpbmcgPSByZmMyNDQ1X2ZvbGQoJ0JFR0lOOicuJHRoaXMtPm5hbWUpIC4gUkZDMjQ0NV9DUkxGOw0KDQogICAgICAgIC8vIExpc3Qgb2YgcHJvcGVydGllcw0KICAgICAgICBpZighZW1wdHkoJHRoaXMtPnByb3BlcnRpZXMpKSB7DQogICAgICAgICAgICBmb3JlYWNoKCR0aGlzLT5wcm9wZXJ0aWVzIGFzICRuYW1lID0+ICRwcm9wZXJ0aWVzKSB7DQogICAgICAgICAgICAgICAgZm9yZWFjaCgkcHJvcGVydGllcyBhcyAkcHJvcGVydHkpIHsNCiAgICAgICAgICAgICAgICAgICAgJHN0cmluZyAuPSAkcHJvcGVydHktPnNlcmlhbGl6ZSgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIC8vIExpc3Qgb2YgY29tcG9uZW50cw0KICAgICAgICBpZighZW1wdHkoJHRoaXMtPmNvbXBvbmVudHMpKSB7DQogICAgICAgICAgICBmb3JlYWNoKCR0aGlzLT5jb21wb25lbnRzIGFzICRuYW1lID0+ICRjb21wb25lbnRzKSB7DQogICAgICAgICAgICAgICAgZm9yZWFjaCgkY29tcG9uZW50cyBhcyAkY29tcG9uZW50KSB7DQogICAgICAgICAgICAgICAgICAgICRzdHJpbmcgLj0gJGNvbXBvbmVudC0+c2VyaWFsaXplKCk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8gRW5kIHRhZw0KICAgICAgICAkc3RyaW5nIC49IHJmYzI0NDVfZm9sZCgnRU5EOicuJHRoaXMtPm5hbWUpIC4gUkZDMjQ0NV9DUkxGOw0KDQogICAgICAgIHJldHVybiAkc3RyaW5nOw0KICAgIH0NCg0KfQ0KDQpjbGFzcyBpQ2FsZW5kYXIgZXh0ZW5kcyBpQ2FsZW5kYXJfY29tcG9uZW50IHsNCiAgICB2YXIgJG5hbWUgPSAnVkNBTEVOREFSJzsNCg0KICAgIGZ1bmN0aW9uIGNvbnN0cnVjdCgpIHsNCiAgICAgICAgJHRoaXMtPnZhbGlkX3Byb3BlcnRpZXMgPSBhcnJheSgNCiAgICAgICAgICAgICdDQUxTQ0FMRScgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdNRVRIT0QnICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdQUk9ESUQnICAgICAgPT4gUkZDMjQ0NV9SRVFVSVJFRCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdWRVJTSU9OJyAgICAgPT4gUkZDMjQ0NV9SRVFVSVJFRCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgIFJGQzI0NDVfWE5BTUUgPT4gUkZDMjQ0NV9PUFRJT05BTCANCiAgICAgICAgKTsNCg0KICAgICAgICAkdGhpcy0+dmFsaWRfY29tcG9uZW50cyA9IGFycmF5KA0KICAgICAgICAgICAgJ1ZFVkVOVCcNCiAgICAgICAgICAgIC8vIFRPRE86IGFkZCBzdXBwb3J0IGZvciB0aGUgb3RoZXIgY29tcG9uZW50IHR5cGVzDQogICAgICAgICAgICAvLywgJ1ZUT0RPJywgJ1ZKT1VSTkFMJywgJ1ZGUkVFQlVTWScsICdWVElNRVpPTkUnLCAnVkFMQVJNJw0KICAgICAgICApOw0KICAgICAgICBwYXJlbnQ6OmNvbnN0cnVjdCgpOw0KICAgIH0NCg0KfQ0KDQpjbGFzcyBpQ2FsZW5kYXJfZXZlbnQgZXh0ZW5kcyBpQ2FsZW5kYXJfY29tcG9uZW50IHsNCg0KICAgIHZhciAkbmFtZSAgICAgICA9ICdWRVZFTlQnOw0KICAgIHZhciAkcHJvcGVydGllczsNCiAgICANCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgIA0KICAgICAgICAkdGhpcy0+dmFsaWRfY29tcG9uZW50cyA9IGFycmF5KCdWQUxBUk0nKTsNCg0KICAgICAgICAkdGhpcy0+dmFsaWRfcHJvcGVydGllcyA9IGFycmF5KA0KICAgICAgICAgICAgJ0NMQVNTJyAgICAgICAgICA9PiBSRkMyNDQ1X09QVElPTkFMIHwgUkZDMjQ0NV9PTkNFLA0KICAgICAgICAgICAgJ0NSRUFURUQnICAgICAgICA9PiBSRkMyNDQ1X09QVElPTkFMIHwgUkZDMjQ0NV9PTkNFLA0KICAgICAgICAgICAgJ0RFU0NSSVBUSU9OJyAgICA9PiBSRkMyNDQ1X09QVElPTkFMIHwgUkZDMjQ0NV9PTkNFLA0KICAgICAgICAgICAgLy8gU3RhbmRhcmQgYW1iaWd1b3VzIGhlcmU6IGluIDQuNi4xIGl0IHNheXMgdGhhdCBEVFNUQU1QIGluIG9wdGlvbmFsLA0KICAgICAgICAgICAgLy8gd2hpbGUgaW4gNC44LjcuMiBpdCBzYXlzIGl0J3MgUkVRVUlSRUQuIEdvIHdpdGggUkVRVUlSRUQuDQogICAgICAgICAgICAnRFRTVEFNUCcgICAgICAgID0+IFJGQzI0NDVfUkVRVUlSRUQgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICAvLyBTdGFuZGFyZCBhbWJpZ3VvdXMgaGVyZTogaW4gNC42LjEgaXQgc2F5cyB0aGF0IERUU1RBUlQgaW4gb3B0aW9uYWwsDQogICAgICAgICAgICAvLyB3aGlsZSBpbiA0LjguMi40IGl0IHNheXMgaXQncyBSRVFVSVJFRC4gR28gd2l0aCBSRVFVSVJFRC4NCiAgICAgICAgICAgICdEVFNUQVJUJyAgICAgICAgPT4gUkZDMjQ0NV9SRVFVSVJFRCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdHRU8nICAgICAgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdMQVNULU1PRElGSUVEJyAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdMT0NBVElPTicgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdPUkdBTklaRVInICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdQUklPUklUWScgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdTRVFVRU5DRScgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdTVEFUVVMnICAgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdTVU1NQVJZJyAgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdUUkFOU1AnICAgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgIC8vIFN0YW5kYXJkIGFtYmlndW91cyBoZXJlOiBpbiA0LjYuMSBpdCBzYXlzIHRoYXQgVUlEIGluIG9wdGlvbmFsLA0KICAgICAgICAgICAgLy8gd2hpbGUgaW4gNC44LjQuNyBpdCBzYXlzIGl0J3MgUkVRVUlSRUQuIEdvIHdpdGggUkVRVUlSRUQuDQogICAgICAgICAgICAnVUlEJyAgICAgICAgICAgID0+IFJGQzI0NDVfUkVRVUlSRUQgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICAnVVJMJyAgICAgICAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICAnUkVDVVJSRU5DRS1JRCcgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICAnRFRFTkQnICAgICAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICAnRFVSQVRJT04nICAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICAnQVRUQUNIJyAgICAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwsDQogICAgICAgICAgICAnQVRURU5ERUUnICAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwsDQogICAgICAgICAgICAnQ0FURUdPUklFUycgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwsDQogICAgICAgICAgICAnQ09NTUVOVCcgICAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwsDQogICAgICAgICAgICAnQ09OVEFDVCcgICAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwsDQogICAgICAgICAgICAnRVhEQVRFJyAgICAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwsDQogICAgICAgICAgICAnRVhSVUxFJyAgICAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwsDQogICAgICAgICAgICAnUkVRVUVTVC1TVEFUVVMnID0+IFJGQzI0NDVfT1BUSU9OQUwsDQogICAgICAgICAgICAnUkVMQVRFRC1UTycgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwsDQogICAgICAgICAgICAnUkVTT1VSQ0VTJyAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwsDQogICAgICAgICAgICAnUkRBVEUnICAgICAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwsDQogICAgICAgICAgICAnUlJVTEUnICAgICAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwsDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FICAgID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCg0KICAgICAgICBwYXJlbnQ6OmNvbnN0cnVjdCgpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGludmFyaWFudF9ob2xkcygpIHsNCiAgICAgICAgLy8gRFRFTkQgYW5kIERVUkFUSU9OIG11c3Qgbm90IGFwcGVhciB0b2dldGhlcg0KICAgICAgICBpZihpc3NldCgkdGhpcy0+cHJvcGVydGllc1snRFRFTkQnXSkgJiYgaXNzZXQoJHRoaXMtPnByb3BlcnRpZXNbJ0RVUkFUSU9OJ10pKSB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCg0KICAgICAgICANCiAgICAgICAgaWYoaXNzZXQoJHRoaXMtPnByb3BlcnRpZXNbJ0RURU5EJ10pICYmIGlzc2V0KCR0aGlzLT5wcm9wZXJ0aWVzWydEVFNUQVJUJ10pKSB7DQogICAgICAgICAgICAvLyBEVEVORCBtdXN0IGJlIGxhdGVyIHRoYW4gRFRTVEFSVA0KICAgICAgICAgICAgLy8gVGhlIHN0YW5kYXJkIGlzIG5vdCBjbGVhciBvbiBob3cgdG8gaGFuZGUgZGlmZmVyZW50IHZhbHVlIHR5cGVzIHRob3VnaA0KICAgICAgICAgICAgLy8gVE9ETzogaGFuZGxlIHRoaXMgY29ycmVjdGx5IGV2ZW4gaWYgdGhlIHZhbHVlIHR5cGVzIGFyZSBkaWZmZXJlbnQNCiAgICAgICAgICAgIGlmKCR0aGlzLT5wcm9wZXJ0aWVzWydEVEVORCddWzBdLT52YWx1ZSA8PSAkdGhpcy0+cHJvcGVydGllc1snRFRTVEFSVCddWzBdLT52YWx1ZSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gRFRFTkQgYW5kIERUU1RBUlQgbXVzdCBoYXZlIHRoZSBzYW1lIHZhbHVlIHR5cGUNCiAgICAgICAgICAgIGlmKCR0aGlzLT5wcm9wZXJ0aWVzWydEVEVORCddWzBdLT52YWxfdHlwZSAhPSAkdGhpcy0+cHJvcGVydGllc1snRFRTVEFSVCddWzBdLT52YWxfdHlwZSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICB9DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KfQ0KDQpjbGFzcyBpQ2FsZW5kYXJfdG9kbyBleHRlbmRzIGlDYWxlbmRhcl9jb21wb25lbnQgew0KICAgIHZhciAkbmFtZSAgICAgICA9ICdWVE9ETyc7DQogICAgdmFyICRwcm9wZXJ0aWVzOw0KDQogICAgZnVuY3Rpb24gY29uc3RydWN0KCkgew0KDQogICAgICAgICR0aGlzLT5wcm9wZXJ0aWVzID0gYXJyYXkoDQogICAgICAgICAgICAnY2xhc3MnICAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICAnY29tcGxldGVkJyAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICAnY3JlYXRlZCcgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICAnZGVzY3JpcHRpb24nID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICAnZHRzdGFtcCcgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICAnZHRzdGFydCcgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICAnZ2VvJyAgICAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICAnbGFzdC1tb2RpZmllZCcgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdsb2NhdGlvbicgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdvcmdhbml6ZXInICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdwZXJjZW50JyAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdwcmlvcml0eScgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdyZWN1cmlkJyAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdzZXF1ZW5jZScgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdzdGF0dXMnICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdzdW1tYXJ5JyAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICd1aWQnICAgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICd1cmwnICAgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdkdWUnICAgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdkdXJhdGlvbicgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdhdHRhY2gnICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCwNCiAgICAgICAgICAgICdhdHRlbmRlZScgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCwNCiAgICAgICAgICAgICdjYXRlZ29yaWVzJyAgPT4gUkZDMjQ0NV9PUFRJT05BTCwNCiAgICAgICAgICAgICdjb21tZW50JyAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCwNCiAgICAgICAgICAgICdjb250YWN0JyAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCwNCiAgICAgICAgICAgICdleGRhdGUnICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCwNCiAgICAgICAgICAgICdleHJ1bGUnICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCwNCiAgICAgICAgICAgICdyc3RhdHVzJyAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCwNCiAgICAgICAgICAgICdyZWxhdGVkJyAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCwNCiAgICAgICAgICAgICdyZXNvdXJjZXMnICAgPT4gUkZDMjQ0NV9PUFRJT05BTCwNCiAgICAgICAgICAgICdyZGF0ZScgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCwNCiAgICAgICAgICAgICdycnVsZScgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCwNCiAgICAgICAgICAgICd4cHJvcCcgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTA0KICAgICAgICApOw0KDQogICAgICAgIHBhcmVudDo6Y29uc3RydWN0KCk7DQogICAgICAgIC8vIFRPRE86DQogICAgICAgIC8vIGVpdGhlciAnZHVlJyBvciAnZHVyYXRpb24nIG1heSBhcHBlYXIgaW4gIGEgJ2V2ZW50cHJvcCcsIGJ1dCAnZHVlJw0KICAgICAgICAvLyBhbmQgJ2R1cmF0aW9uJyBNVVNUIE5PVCBvY2N1ciBpbiB0aGUgc2FtZSAnZXZlbnRwcm9wJw0KICAgIH0NCn0NCg0KY2xhc3MgaUNhbGVuZGFyX2pvdXJuYWwgZXh0ZW5kcyBpQ2FsZW5kYXJfY29tcG9uZW50IHsNCiAgICAvLyBUT0RPOiBpbXBsZW1lbnQNCn0NCg0KY2xhc3MgaUNhbGVuZGFyX2ZyZWVidXN5IGV4dGVuZHMgaUNhbGVuZGFyX2NvbXBvbmVudCB7DQogICAgLy8gVE9ETzogaW1wbGVtZW50DQp9DQoNCmNsYXNzIGlDYWxlbmRhcl9hbGFybSBleHRlbmRzIGlDYWxlbmRhcl9jb21wb25lbnQgew0KICAgIC8vIFRPRE86IGltcGxlbWVudA0KfQ0KDQpjbGFzcyBpQ2FsZW5kYXJfdGltZXpvbmUgZXh0ZW5kcyBpQ2FsZW5kYXJfY29tcG9uZW50IHsNCiAgICB2YXIgJG5hbWUgICAgICAgPSAnVlRJTUVaT05FJzsNCiAgICB2YXIgJHByb3BlcnRpZXM7DQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQoNCiAgICAgICAgJHRoaXMtPnByb3BlcnRpZXMgPSBhcnJheSgNCiAgICAgICAgICAgICd0emlkJyAgICAgICAgPT4gUkZDMjQ0NV9SRVFVSVJFRCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdsYXN0LW1vZGlmaWVkJyAgICA9PiBSRkMyNDQ1X09QVElPTkFMIHwgUkZDMjQ0NV9PTkNFLA0KICAgICAgICAgICAgJ3R6dXJsJyAgICAgICA9PiBSRkMyNDQ1X09QVElPTkFMIHwgUkZDMjQ0NV9PTkNFLA0KICAgICAgICAgICAgLy8gVE9ETzogdGhlIG5leHQgdHdvIGFyZSBjb21wb25lbnRzIG9mIHRoZWlyIG93biENCiAgICAgICAgICAgICdzdGFuZGFyZGMnICAgPT4gUkZDMjQ0NV9SRVFVSVJFRCwNCiAgICAgICAgICAgICdkYXlsaWdodGMnICAgPT4gUkZDMjQ0NV9SRVFVSVJFRCwNCiAgICAgICAgICAgICd4LXByb3AnICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTA0KICAgICAgICApOw0KICAgICAgICANCiAgICAgICAgcGFyZW50Ojpjb25zdHJ1Y3QoKTsNCiAgICB9DQoNCn0NCg0KLy8gUkVNSU5ERVI6IERURU5EIG11c3QgYmUgbGF0ZXIgdGhhbiBEVFNUQVJUIGZvciBhbGwgY29tcG9uZW50cyB3aGljaCBzdXBwb3J0IGJvdGgNCi8vIFJFTUlOREVSOiBEVUUgbXVzdCBiZSBsYXRlciB0aGFuIERUU1RBUlQgZm9yIGFsbCBjb21wb25lbnRzIHdoaWNoIHN1cHBvcnQgYm90aA0KDQo/Pg==]]></data>
	</file>
	<file>
	  <filename>/libraries/bennu/lib/iCalendar_parameters.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAgLy8gJElkOiBpQ2FsZW5kYXJfcGFyYW1ldGVycy5waHAsdiAxLjcgMjAwNS8wNy8yMSAyMzoxNzoyMSBkZWZhY2VyIEV4cCAkDQoNCmNsYXNzIGlDYWxlbmRhcl9wYXJhbWV0ZXIgew0KICAgIGZ1bmN0aW9uIG11bHRpcGxlX3ZhbHVlc19hbGxvd2VkKCRwYXJhbWV0ZXIpIHsNCiAgICAgICAgc3dpdGNoKCRwYXJhbWV0ZXIpIHsNCiAgICAgICAgICAgIGNhc2UgJ0RFTEVHQVRFRC1GUk9NJzoNCiAgICAgICAgICAgIGNhc2UgJ0RFTEVHQVRFRC1UTyc6DQogICAgICAgICAgICBjYXNlICdNRU1CRVInOg0KICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBmdW5jdGlvbiBkZWZhdWx0X3ZhbHVlKCRwYXJhbWV0ZXIpIHsNCiAgICAgICAgc3dpdGNoKCRwYXJhbWV0ZXIpIHsNCiAgICAgICAgICAgIGNhc2UgJ0NVVFlQRSc6ICAgcmV0dXJuICdJTkRJVklEVUFMJzsNCiAgICAgICAgICAgIGNhc2UgJ0ZCVFlQRSc6ICAgcmV0dXJuICdCVVNZJzsNCiAgICAgICAgICAgIGNhc2UgJ1BBUlRTVEFUJzogcmV0dXJuICdORUVEUy1BQ1RJT04nOw0KICAgICAgICAgICAgY2FzZSAnUkVMQVRFRCc6ICByZXR1cm4gJ1NUQVJUJzsNCiAgICAgICAgICAgIGNhc2UgJ1JFTFRZUEUnOiAgcmV0dXJuICdQQVJFTlQnOw0KICAgICAgICAgICAgY2FzZSAnUk9MRSc6ICAgICByZXR1cm4gJ1JFUS1QQVJUSUNJUEFOVCc7DQogICAgICAgICAgICBjYXNlICdSU1ZQJzogICAgIHJldHVybiAnRkFMU0UnOw0KICAgICAgICAgICAgZGVmYXVsdDogICAgICAgICByZXR1cm4gTlVMTDsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGlzX3ZhbGlkX3ZhbHVlKCYkcGFyZW50X3Byb3BlcnR5LCAkcGFyYW1ldGVyLCAkdmFsdWUpIHsNCiAgICAgICAgc3dpdGNoKCRwYXJhbWV0ZXIpIHsNCiAgICAgICAgICAgIC8vIFRoZXNlIG11c3QgYWxsIGJlIGEgVVJJDQogICAgICAgICAgICBjYXNlICdBTFRSRVAnOg0KICAgICAgICAgICAgY2FzZSAnRElSJzoNCiAgICAgICAgICAgICAgICByZXR1cm4gcmZjMjQ0NV9pc192YWxpZF92YWx1ZSgkdmFsdWUsIFJGQzI0NDVfVFlQRV9VUkkpOw0KICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgIC8vIFRoZXNlIG11c3QgYmUgQ0FMLUFERFJFU1MsIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gVVJJDQogICAgICAgICAgICBjYXNlICdERUxFR0FURUQtRlJPTSc6DQogICAgICAgICAgICBjYXNlICdERUxFR0FURUQtVE8nOg0KICAgICAgICAgICAgY2FzZSAnTUVNQkVSJzoNCiAgICAgICAgICAgIGNhc2UgJ1NFTlQtQlknOg0KICAgICAgICAgICAgICAgIHJldHVybiByZmMyNDQ1X2lzX3ZhbGlkX3ZhbHVlKCR2YWx1ZSwgUkZDMjQ0NV9UWVBFX0NBTF9BRERSRVNTKTsNCiAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAvLyBUaGVzZSBhcmUgdGV4dHVhbCBwYXJhbWV0ZXJzLCBzbyB0aGUgTVVTVCBOT1QgY29udGFpbiBkb3VibGUgcXVvdGVzDQogICAgICAgICAgICBjYXNlICdDTic6DQogICAgICAgICAgICAgICAgcmV0dXJuIChzdHJwb3MoJHZhbHVlLCAnIicpID09PSBmYWxzZSk7DQogICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgLy8gVGhlc2UgaGF2ZSBlbnVtZXJhdGVkIGxlZ2FsIHZhbHVlcw0KICAgICAgICAgICAgY2FzZSAnQ1VUWVBFJzoNCiAgICAgICAgICAgICAgICAkdmFsdWUgPSBzdHJ0b3VwcGVyKCR2YWx1ZSk7DQogICAgICAgICAgICAgICAgcmV0dXJuICgkdmFsdWUgPT0gJ0lORElWSURVQUwnIHx8ICR2YWx1ZSA9PSAnR1JPVVAnIHx8ICR2YWx1ZSA9PSAnUkVTT1VSQ0UnIHx8ICR2YWx1ZSA9PSAnUk9PTScgfHwgJHZhbHVlID09ICdVTktOT1dOJyB8fCByZmMyNDQ1X2lzX3huYW1lKCR2YWx1ZSkpOw0KICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgIGNhc2UgJ0VOQ09ESU5HJzoNCiAgICAgICAgICAgICAgICAkdmFsdWUgPSBzdHJ0b3VwcGVyKCR2YWx1ZSk7DQogICAgICAgICAgICAgICAgcmV0dXJuICgkdmFsdWUgPT0gJzhCSVQnIHx8ICR2YWx1ZSA9PSAnQkFTRTY0JyB8fCByZmMyNDQ1X2lzX3huYW1lKCR2YWx1ZSkpOw0KICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgIGNhc2UgJ0ZCVFlQRSc6DQogICAgICAgICAgICAgICAgJHZhbHVlID0gc3RydG91cHBlcigkdmFsdWUpOw0KICAgICAgICAgICAgICAgIHJldHVybiAoJHZhbHVlID09ICdGUkVFJyB8fCAkdmFsdWUgPT0gJ0JVU1knIHx8ICR2YWx1ZSA9PSAnQlVTWS1VTkFWQUlMQUJMRScgfHwgJHZhbHVlID09ICdCVVNZLVRFTlRBVElWRScgfHwgcmZjMjQ0NV9pc194bmFtZSgkdmFsdWUpKTsNCiAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICBjYXNlICdGTVRUWVBFJzoNCiAgICAgICAgICAgICAgICAkZm10dHlwZXMgPSBhcnJheSgNCiAgICAgICAgICAgICAgICAgICAgICAgICdURVhUJyAgICAgICAgPT4gYXJyYXkoJ1BMQUlOJywgJ1JJQ0hURVhUJywgJ0VOUklDSEVEJywgJ1RBQi1TRVBBUkFURUQtVkFMVUVTJywgJ0hUTUwnLCAnU0dNTCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWTkQuTEFURVgtWicsICdWTkQuRk1JLkZMRVhTVE9SJyksDQogICAgICAgICAgICAgICAgICAgICAgICAnTVVMVElQQVJUJyAgID0+IGFycmF5KCdNSVhFRCcsICdBTFRFUk5BVElWRScsICdESUdFU1QnLCAnUEFSQUxMRUwnLCAnQVBQTEVET1VCTEUnLCAnSEVBREVSLVNFVCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdGT1JNLURBVEEnLCAnUkVMQVRFRCcsICdSRVBPUlQnLCAnVk9JQ0UtTUVTU0FHRScsICdTSUdORUQnLCAnRU5DUllQVEVEJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JZVEVSQU5HRVMnKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICdNRVNTQUdFJyAgICAgPT4gYXJyYXkoJ1JGQzgyMicsICdQQVJUSUFMJywgJ0VYVEVSTkFMLUJPRFknLCAnTkVXUycsICdIVFRQJyksDQogICAgICAgICAgICAgICAgICAgICAgICAnQVBQTElDQVRJT04nID0+IGFycmF5KCdPQ1RFVC1TVFJFQU0nLCAnUE9TVFNDUklQVCcsICdPREEnLCAnQVRPTUlDTUFJTCcsICdBTkRSRVctSU5TRVQnLCAnU0xBVEUnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnV0lUQScsICdERUMtRFgnLCAnRENBLVJGVCcsICdBQ1RJVkVNRVNTQUdFJywgJ1JURicsICdBUFBMRUZJTEUnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTUFDLUJJTkhFWDQwJywgJ05FV1MtTUVTU0FHRS1JRCcsICdORVdTLVRSQU5TTUlTU0lPTicsICdXT1JEUEVSRkVDVDUuMScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQREYnLCAnWklQJywgJ01BQ1dSSVRFSUknLCAnTVNXT1JEJywgJ1JFTU9URS1QUklOVElORycsICdNQVRIRU1BVElDQScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDWUJFUkNBU0gnLCAnQ09NTU9OR1JPVU5EJywgJ0lHRVMnLCAnUklTQ09TJywgJ0VTSE9QJywgJ1g0MDAtQlAnLCAnU0dNTCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDQUxTLTE4NDAnLCAnUEdQLUVOQ1JZUFRFRCcsICdQR1AtU0lHTkFUVVJFJywgJ1BHUC1LRVlTJywgJ1ZORC5GUkFNRU1BS0VSJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZORC5NSUYnLCAnVk5ELk1TLUVYQ0VMJywgJ1ZORC5NUy1QT1dFUlBPSU5UJywgJ1ZORC5NUy1QUk9KRUNUJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZORC5NUy1XT1JLUycsICdWTkQuTVMtVE5FRicsICdWTkQuU1ZEJywgJ1ZORC5NVVNJQy1OSUZGJywgJ1ZORC5NUy1BUlRHQUxSWScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWTkQuVFJVRURPQycsICdWTkQuS09BTicsICdWTkQuU1RSRUVULVNUUkVBTScsICdWTkQuRkRGJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NFVC1QQVlNRU5ULUlOSVRJQVRJT04nLCAnU0VULVBBWU1FTlQnLCAnU0VULVJFR0lTVFJBVElPTi1JTklUSUFUSU9OJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NFVC1SRUdJU1RSQVRJT04nLCAnVk5ELlNFRU1BSUwnLCAnVk5ELkJVU0lORVNTT0JKRUNUUycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWTkQuTUVSSURJQU4tU0xJTkdTSE9UJywgJ1ZORC5YQVJBJywgJ1NHTUwtT1BFTi1DQVRBTE9HJywgJ1ZORC5SQVBJRCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdWTkQuRU5MSVZFTicsICdWTkQuSkFQQU5ORVQtUkVHSVNUUkFUSU9OLVdBS0VVUCcsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVk5ELkpBUEFOTkVULVZFUklGSUNBVElPTi1XQUtFVVAnLCAnVk5ELkpBUEFOTkVULVBBWU1FTlQtV0FLRVVQJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZORC5KQVBBTk5FVC1ESVJFQ1RPUlktU0VSVklDRScsICdWTkQuSU5URVJUUlVTVC5ESUdJQk9YJywgJ1ZORC5JTlRFUlRSVVNULk5OQ1AnKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICdJTUFHRScgICAgICAgPT4gYXJyYXkoJ0pQRUcnLCAnR0lGJywgJ0lFRicsICdHM0ZBWCcsICdUSUZGJywgJ0NHTScsICdOQVBMUFMnLCAnVk5ELkRXRycsICdWTkQuU1ZGJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1ZORC5EWEYnLCAnUE5HJywgJ1ZORC5GUFgnLCAnVk5ELk5FVC1GUFgnKSwNCiAgICAgICAgICAgICAgICAgICAgICAgICdBVURJTycgICAgICAgPT4gYXJyYXkoJ0JBU0lDJywgJzMyS0FEUENNJywgJ1ZORC5RQ0VMUCcpLA0KICAgICAgICAgICAgICAgICAgICAgICAgJ1ZJREVPJyAgICAgICA9PiBhcnJheSgnTVBFRycsICdRVUlDS1RJTUUnLCAnVk5ELlZJVk8nLCAnVk5ELk1PVE9ST0xBLlZJREVPJywgJ1ZORC5NT1RPUk9MQS5WSURFT1AnKQ0KICAgICAgICAgICAgICAgICk7DQogICAgICAgICAgICAgICAgJHZhbHVlID0gc3RydG91cHBlcigkdmFsdWUpOw0KICAgICAgICAgICAgICAgIGlmKHJmYzI0NDVfaXNfeG5hbWUoJHZhbHVlKSkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgQGxpc3QoJHR5cGUsICRzdWJ0eXBlKSA9IGV4cGxvZGUoJy8nLCAkdmFsdWUpOw0KICAgICAgICAgICAgICAgIGlmKGVtcHR5KCR0eXBlKSB8fCBlbXB0eSgkc3VidHlwZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZighaXNzZXQoJGZtdHR5cGVzWyR0eXBlXSkgfHwgIWluX2FycmF5KCRzdWJ0eXBlLCAkZm10dHlwZXNbJHR5cGVdKSkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgIGNhc2UgJ0xBTkdVQUdFJzoNCiAgICAgICAgICAgICAgICAkdmFsdWUgPSBzdHJ0b3VwcGVyKCR2YWx1ZSk7DQogICAgICAgICAgICAgICAgJHBhcnRzID0gZXhwbG9kZSgnLScsICR2YWx1ZSk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCgkcGFydHMgYXMgJHBhcnQpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYoZW1wdHkoJHBhcnQpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgaWYoc3Ryc3BuKCRwYXJ0LCAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNDU2Nzg5JykgIT0gc3RybGVuKCRwYXJ0KSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgIGNhc2UgJ1BBUlRTVEFUJzoNCiAgICAgICAgICAgICAgICAkdmFsdWUgPSBzdHJ0b3VwcGVyKCR2YWx1ZSk7DQogICAgICAgICAgICAgICAgc3dpdGNoKCRwYXJlbnRfcHJvcGVydHktPnBhcmVudF9jb21wb25lbnQpIHsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnVkVWRU5UJzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoJHZhbHVlID09ICdORUVEUy1BQ1RJT04nIHx8ICR2YWx1ZSA9PSAnQUNDRVBURUQnIHx8ICR2YWx1ZSA9PSAnREVDTElORUQnIHx8ICR2YWx1ZSA9PSAnVEVOVEFUSVZFJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkdmFsdWUgPT0gJ0RFTEVHQVRFRCcgfHwgcmZjMjQ0NV9pc194bmFtZSgkdmFsdWUpKTsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1ZUT0RPJzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoJHZhbHVlID09ICdORUVEUy1BQ1RJT04nIHx8ICR2YWx1ZSA9PSAnQUNDRVBURUQnIHx8ICR2YWx1ZSA9PSAnREVDTElORUQnIHx8ICR2YWx1ZSA9PSAnVEVOVEFUSVZFJw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkdmFsdWUgPT0gJ0RFTEVHQVRFRCcgfHwgJHZhbHVlID09ICdDT01QTEVURUQnIHx8ICR2YWx1ZSA9PSAnSU4tUFJPQ0VTUycgfHwgcmZjMjQ0NV9pc194bmFtZSgkdmFsdWUpKTsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ1ZKT1VSTkFMJzoNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoJHZhbHVlID09ICdORUVEUy1BQ1RJT04nIHx8ICR2YWx1ZSA9PSAnQUNDRVBURUQnIHx8ICR2YWx1ZSA9PSAnREVDTElORUQnIHx8IHJmYzI0NDVfaXNfeG5hbWUoJHZhbHVlKSk7DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgY2FzZSAnUkFOR0UnOg0KICAgICAgICAgICAgICAgICR2YWx1ZSA9IHN0cnRvdXBwZXIoJHZhbHVlKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gKCR2YWx1ZSA9PSAnVEhJU0FORFBSSU9SJyB8fCAkdmFsdWUgPT0gJ1RISVNBTkRGVVRVUkUnKTsNCiAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICBjYXNlICdSRUxBVEVEJzoNCiAgICAgICAgICAgICAgICAkdmFsdWUgPSBzdHJ0b3VwcGVyKCR2YWx1ZSk7DQogICAgICAgICAgICAgICAgcmV0dXJuICgkdmFsdWUgPT0gJ1NUQVJUJyB8fCAkdmFsdWUgPT0gJ0VORCcpOw0KICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgIGNhc2UgJ1JFTFRZUEUnOg0KICAgICAgICAgICAgICAgICR2YWx1ZSA9IHN0cnRvdXBwZXIoJHZhbHVlKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gKCR2YWx1ZSA9PSAnUEFSRU5UJyB8fCAkdmFsdWUgPT0gJ0NISUxEJyB8fCAkdmFsdWUgPT0gJ1NJQkxJTkcnIHx8IHJmYzI0NDVfaXNfeG5hbWUoJHZhbHVlKSk7DQogICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgY2FzZSAnUk9MRSc6DQogICAgICAgICAgICAgICAgJHZhbHVlID0gc3RydG91cHBlcigkdmFsdWUpOw0KICAgICAgICAgICAgICAgIHJldHVybiAoJHZhbHVlID09ICdDSEFJUicgfHwgJHZhbHVlID09ICdSRVEtUEFSVElDSVBBTlQnIHx8ICR2YWx1ZSA9PSAnT1BULVBBUlRJQ0lQQU5UJyB8fCAkdmFsdWUgPT0gJ05PTi1QQVJUSUNJUEFOVCcgfHwgcmZjMjQ0NV9pc194bmFtZSgkdmFsdWUpKTsNCiAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICBjYXNlICdSU1ZQJzoNCiAgICAgICAgICAgICAgICAkdmFsdWUgPSBzdHJ0b3VwcGVyKCR2YWx1ZSk7DQogICAgICAgICAgICAgICAgcmV0dXJuICgkdmFsdWUgPT0gJ1RSVUUnIHx8ICR2YWx1ZSA9PSAnRkFMU0UnKTsNCiAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICBjYXNlICdUWklEJzoNCiAgICAgICAgICAgICAgICBpZihlbXB0eSgkdmFsdWUpKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuIChzdHJjc3BuKCR2YWx1ZSwgJyI7OiwnKSA9PSBzdHJsZW4oJHZhbHVlKSk7DQogICAgICAgICAgICBicmVhazsNCg0KICAgICAgICAgICAgY2FzZSAnVkFMVUUnOg0KICAgICAgICAgICAgICAgICR2YWx1ZSA9IHN0cnRvdXBwZXIoJHZhbHVlKTsNCiAgICAgICAgICAgICAgICByZXR1cm4gKCR2YWx1ZSA9PSAnQklOQVJZJyAgICB8fCAkdmFsdWUgPT0gJ0JPT0xFQU4nICAgIHx8ICR2YWx1ZSA9PSAnQ0FMLUFERFJFU1MnIHx8ICR2YWx1ZSA9PSAnREFURScgICAgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9PSAnREFURS1USU1FJyB8fCAkdmFsdWUgPT0gJ0RVUkFUSU9OJyAgIHx8ICR2YWx1ZSA9PSAnRkxPQVQnICAgICAgIHx8ICR2YWx1ZSA9PSAnSU5URUdFUicgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9PSAnUEVSSU9EJyAgICB8fCAkdmFsdWUgPT0gJ1JFQ1VSJyAgICAgIHx8ICR2YWx1ZSA9PSAnVEVYVCcgICAgICAgIHx8ICR2YWx1ZSA9PSAnVElNRScgICAgfHwNCiAgICAgICAgICAgICAgICAgICAgICAgICR2YWx1ZSA9PSAnVVJJJyAgICAgICB8fCAkdmFsdWUgPT0gJ1VUQy1PRkZTRVQnIHx8IHJmYzI0NDVfaXNfeG5hbWUoJHZhbHVlKSk7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGRvX3ZhbHVlX2Zvcm1hdHRpbmcoJHBhcmFtZXRlciwgJHZhbHVlKSB7DQogICAgICAgIHN3aXRjaCgkcGFyYW1ldGVyKSB7DQogICAgICAgICAgICAvLyBQYXJhbWV0ZXJzIG9mIHR5cGUgQ0FMLUFERFJFU1Mgb3IgVVJJIE1VU1QgYmUgZG91YmxlLXF1b3RlZA0KICAgICAgICAgICAgY2FzZSAnQUxUUkVQJzoNCiAgICAgICAgICAgIGNhc2UgJ0RJUic6DQogICAgICAgICAgICBjYXNlICdERUxFR0FURUQtRlJPTSc6DQogICAgICAgICAgICBjYXNlICdERUxFR0FURUQtVE8nOg0KICAgICAgICAgICAgY2FzZSAnTUVNQkVSJzoNCiAgICAgICAgICAgIGNhc2UgJ1NFTlQtQlknOg0KICAgICAgICAgICAgICAgIHJldHVybiAnIicuJHZhbHVlLiciJzsNCiAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAvLyBUZXh0dWFsIHBhcmFtZXRlciB0eXBlcyBtdXN0IGJlIGRvdWJsZSBxdW90ZWQgaWYgdGhleSBjb250YWluIENPTE9OLCBTRU1JQ09MT04NCiAgICAgICAgICAgIC8vIG9yIENPTU1BLiBRdW90aW5nIGFsd2F5cyBzb3VuZHMgZWFzaWVyIGFuZCBzdGFuZGFyZHMtY29uZm9ybWFudCB0aG91Z2guDQogICAgICAgICAgICBjYXNlICdDTic6DQogICAgICAgICAgICAgICAgcmV0dXJuICciJy4kdmFsdWUuJyInOw0KICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgIC8vIFBhcmFtZXRlcnMgd2l0aCBlbnVtZXJhdGVkIGxlZ2FsIHZhbHVlcywganVzdCBtYWtlIHRoZW0gYWxsIGNhcHMNCiAgICAgICAgICAgIGNhc2UgJ0NVVFlQRSc6DQogICAgICAgICAgICBjYXNlICdFTkNPRElORyc6DQogICAgICAgICAgICBjYXNlICdGQlRZUEUnOg0KICAgICAgICAgICAgY2FzZSAnRk1UVFlQRSc6DQogICAgICAgICAgICBjYXNlICdMQU5HVUFHRSc6DQogICAgICAgICAgICBjYXNlICdQQVJUU1RBVCc6DQogICAgICAgICAgICBjYXNlICdSQU5HRSc6DQogICAgICAgICAgICBjYXNlICdSRUxBVEVEJzoNCiAgICAgICAgICAgIGNhc2UgJ1JFTFRZUEUnOg0KICAgICAgICAgICAgY2FzZSAnUk9MRSc6DQogICAgICAgICAgICBjYXNlICdSU1ZQJzoNCiAgICAgICAgICAgIGNhc2UgJ1ZBTFVFJzoNCiAgICAgICAgICAgICAgICByZXR1cm4gc3RydG91cHBlcigkdmFsdWUpOw0KICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgIC8vIFBhcmFtZXRlcnMgd2Ugc2hvdWxkbid0IGJlIG1lc3Npbmcgd2l0aA0KICAgICAgICAgICAgY2FzZSAnVFpJRCc6DQogICAgICAgICAgICAgICAgcmV0dXJuICR2YWx1ZTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgZnVuY3Rpb24gdW5kb192YWx1ZV9mb3JtYXR0aW5nKCRwYXJhbWV0ZXIsICR2YWx1ZSkgew0KICAgIH0NCg0KfQ0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/libraries/bennu/lib/iCalendar_properties.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAgLy8gJElkOiBpQ2FsZW5kYXJfcHJvcGVydGllcy5waHAsdiAxLjEzIDIwMDUvMDcvMjEgMjI6NDI6MTMgZGVmYWNlciBFeHAgJA0KDQpjbGFzcyBpQ2FsZW5kYXJfcHJvcGVydHkgew0KICAgIC8vIFByb3BlcnRpZXMgY2FuIGhhdmUgcGFyYW1ldGVycywgYnV0IGNhbm5vdCBoYXZlIG90aGVyIHByb3BlcnRpZXMgb3IgY29tcG9uZW50cw0KDQogICAgdmFyICRwYXJlbnRfY29tcG9uZW50ID0gTlVMTDsNCiAgICB2YXIgJHZhbHVlICAgICAgICAgICAgPSBOVUxMOw0KICAgIHZhciAkcGFyYW1ldGVycyAgICAgICA9IE5VTEw7DQogICAgdmFyICR2YWxpZF9wYXJhbWV0ZXJzID0gTlVMTDsNCg0KICAgIC8vIFRoZXNlIGFyZSBjb21tb24gZm9yIDk1JSBvZiBwcm9wZXJ0aWVzLCBzbyBkZWZpbmUgdGhlbSBoZXJlIGFuZCBvdmVycmlkZSBhcyBuZWNlc3NhcnkNCiAgICB2YXIgJHZhbF9tdWx0aSAgICAgICAgPSBmYWxzZTsNCiAgICB2YXIgJHZhbF9kZWZhdWx0ICAgICAgPSBOVUxMOw0KDQogICAgZnVuY3Rpb24gaUNhbGVuZGFyX3Byb3BlcnR5KCkgew0KICAgICAgICAkdGhpcy0+Y29uc3RydWN0KCk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gY29uc3RydWN0KCkgew0KICAgICAgICAkdGhpcy0+cGFyYW1ldGVycyA9IGFycmF5KCk7DQogICAgfQ0KDQogICAgLy8gSWYgc29tZSBwcm9wZXJ0eSBuZWVkcyBleHRyYSBjYXJlIHdpdGggaXRzIHBhcmFtZXRlcnMsIG92ZXJyaWRlIHRoaXMNCiAgICAvLyBJTVBPUlRBTlQ6IHRoZSBwYXJhbWV0ZXIgbmFtZSBNVVNUIEJFIENBUElUQUxJWkVEIQ0KICAgIGZ1bmN0aW9uIGlzX3ZhbGlkX3BhcmFtZXRlcigkcGFyYW1ldGVyLCAkdmFsdWUpIHsNCg0KICAgICAgICBpZihpc19hcnJheSgkdmFsdWUpKSB7DQogICAgICAgICAgICBpZighaUNhbGVuZGFyX3BhcmFtZXRlcjo6bXVsdGlwbGVfdmFsdWVzX2FsbG93ZWQoJHBhcmFtZXRlcikpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBmb3JlYWNoKCR2YWx1ZSBhcyAkaXRlbSkgew0KICAgICAgICAgICAgICAgIGlmKCFpQ2FsZW5kYXJfcGFyYW1ldGVyOjppc192YWxpZF92YWx1ZSgkdGhpcywgJHBhcmFtZXRlciwgJGl0ZW0pKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBpQ2FsZW5kYXJfcGFyYW1ldGVyOjppc192YWxpZF92YWx1ZSgkdGhpcywgJHBhcmFtZXRlciwgJHZhbHVlKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBpbnZhcmlhbnRfaG9sZHMoKSB7DQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIC8vIElmIHNvbWUgcHJvcGVydHkgaXMgdmVyeSBwaWNreSBhYm91dCBpdHMgdmFsdWVzLCBpdCBzaG91bGQgZG8gdGhlIHdvcmsgaXRzZWxmDQogICAgLy8gT25seSBkYXRhIHR5cGUgdmFsaWRhdGlvbiBpcyBkb25lIGhlcmUNCiAgICBmdW5jdGlvbiBpc192YWxpZF92YWx1ZSgkdmFsdWUpIHsNCiAgICAgICAgaWYoaXNfYXJyYXkoJHZhbHVlKSkgew0KICAgICAgICAgICAgaWYoISR0aGlzLT52YWxfbXVsdGkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICBmb3JlYWNoKCR2YWx1ZSBhcyAkb25ldmFsKSB7DQogICAgICAgICAgICAgICAgICAgIGlmKCFyZmMyNDQ1X2lzX3ZhbGlkX3ZhbHVlKCRvbmV2YWwsICR0aGlzLT52YWxfdHlwZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiByZmMyNDQ1X2lzX3ZhbGlkX3ZhbHVlKCR2YWx1ZSwgJHRoaXMtPnZhbF90eXBlKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBkZWZhdWx0X3ZhbHVlKCkgew0KICAgICAgICByZXR1cm4gJHRoaXMtPnZhbF9kZWZhdWx0Ow0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHNldF9wYXJlbnRfY29tcG9uZW50KCRjb21wb25lbnRuYW1lKSB7DQogICAgICAgIGlmKGNsYXNzX2V4aXN0cygnaUNhbGVuZGFyXycuc3RydG9sb3dlcihzdWJzdHIoJGNvbXBvbmVudG5hbWUsIDEpKSkpIHsNCiAgICAgICAgICAgICR0aGlzLT5wYXJlbnRfY29tcG9uZW50ID0gc3RydG91cHBlcigkY29tcG9uZW50bmFtZSk7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBzZXRfdmFsdWUoJHZhbHVlKSB7DQogICAgICAgIGlmKCR0aGlzLT5pc192YWxpZF92YWx1ZSgkdmFsdWUpKSB7DQogICAgICAgICAgICAvLyBUaGlzIHRyYW5zcGFyZW50bHkgZm9ybWF0cyBhbnkgdmFsdWUgdHlwZSBhY2NvcmRpbmcgdG8gdGhlIGlDYWxlbmRhciBzcGVjcw0KICAgICAgICAgICAgaWYoaXNfYXJyYXkoJHZhbHVlKSkgew0KICAgICAgICAgICAgICAgIGZvcmVhY2goJHZhbHVlIGFzICRrZXkgPT4gJGl0ZW0pIHsNCiAgICAgICAgICAgICAgICAgICAgJHZhbHVlWyRrZXldID0gcmZjMjQ0NV9kb192YWx1ZV9mb3JtYXR0aW5nKCRpdGVtLCAkdGhpcy0+dmFsX3R5cGUpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkdGhpcy0+dmFsdWUgPSBpbXBsb2RlKCcsJywgJHZhbHVlKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICR0aGlzLT52YWx1ZSA9IHJmYzI0NDVfZG9fdmFsdWVfZm9ybWF0dGluZygkdmFsdWUsICR0aGlzLT52YWxfdHlwZSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICANCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBnZXRfdmFsdWUoKSB7DQogICAgICAgIC8vIEZpcnN0IG9mIGFsbCwgYXNzdW1lIHRoYXQgd2UgaGF2ZSBtdWx0aXBsZSB2YWx1ZXMNCiAgICAgICAgJHZhbGFycmF5ID0gZXhwbG9kZSgnXFwsJywgJHRoaXMtPnZhbHVlKTsNCg0KICAgICAgICAvLyBVbmRvIHRyYW5zcGFyZW50IGZvcm1hdHRpbmcNCiAgICAgICAgJHJlcGxhY2VfZnVuY3Rpb24gPSBjcmVhdGVfZnVuY3Rpb24oJyRhJywgJ3JldHVybiByZmMyNDQ1X3VuZG9fdmFsdWVfZm9ybWF0dGluZygkYSwgJy4kdGhpcy0+dmFsX3R5cGUuJyk7Jyk7DQogICAgICAgICR2YWxhcnJheSA9IGFycmF5X21hcCgkcmVwbGFjZV9mdW5jdGlvbiwgJHZhbGFycmF5KTsNCg0KICAgICAgICAvLyBOb3csIGlmIHRoaXMgcHJvcGVydHkgY2Fubm90IGhhdmUgbXVsdGlwbGUgdmFsdWVzLCBkb24ndCByZXR1cm4gYXMgYW4gYXJyYXkNCiAgICAgICAgaWYoISR0aGlzLT52YWxfbXVsdGkpIHsNCiAgICAgICAgICAgIHJldHVybiAkdmFsYXJyYXlbMF07DQogICAgICAgIH0NCg0KICAgICAgICAvLyBPdGhlcndpc2UgcmV0dXJuIGFuIGFycmF5IGV2ZW4gaWYgaXQgaGFzIG9uZSBlbGVtZW50LCBmb3IgdW5pZm9ybWl0eQ0KICAgICAgICByZXR1cm4gJHZhbGFycmF5Ow0KDQogICAgfQ0KDQogICAgZnVuY3Rpb24gc2V0X3BhcmFtZXRlcigkbmFtZSwgJHZhbHVlKSB7DQoNCiAgICAgICAgLy8gVXBwZXJjYXNlDQogICAgICAgICRuYW1lID0gc3RydG91cHBlcigkbmFtZSk7DQoNCiAgICAgICAgLy8gQXJlIHdlIHRyeWluZyB0byBhZGQgYSB2YWxpZCBwYXJhbWV0ZXI/DQogICAgICAgICR4bmFtZSA9IGZhbHNlOw0KICAgICAgICBpZighaXNzZXQoJHRoaXMtPnZhbGlkX3BhcmFtZXRlcnNbJG5hbWVdKSkgew0KICAgICAgICAgICAgLy8gSWYgbm90LCBpcyBpdCBhbiB4LW5hbWUgYXMgcGVyIFJGQyAyNDQ1Pw0KICAgICAgICAgICAgaWYoIXJmYzI0NDVfaXNfeG5hbWUoJG5hbWUpKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgLy8gTm8gbW9yZSBjaGVja3MgLS0gYWxsIGNvbXBvbmVudHMgYXJlIHN1cHBvc2VkIHRvIGFsbG93IHgtbmFtZSBwYXJhbWV0ZXJzDQogICAgICAgICAgICAkeG5hbWUgPSB0cnVlOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYoISR0aGlzLT5pc192YWxpZF9wYXJhbWV0ZXIoJG5hbWUsICR2YWx1ZSkpIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmKGlzX2FycmF5KCR2YWx1ZSkpIHsNCiAgICAgICAgICAgIGZvcmVhY2goJHZhbHVlIGFzICRrZXkgPT4gJGVsZW1lbnQpIHsNCiAgICAgICAgICAgICAgICAkdmFsdWVbJGtleV0gPSBpQ2FsZW5kYXJfcGFyYW1ldGVyOjpkb192YWx1ZV9mb3JtYXR0aW5nKCRuYW1lLCAkZWxlbWVudCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAkdmFsdWUgPSBpQ2FsZW5kYXJfcGFyYW1ldGVyOjpkb192YWx1ZV9mb3JtYXR0aW5nKCRuYW1lLCAkdmFsdWUpOw0KICAgICAgICB9DQoNCiAgICAgICAgJHRoaXMtPnBhcmFtZXRlcnNbJG5hbWVdID0gJHZhbHVlOw0KDQogICAgICAgIC8vIFNwZWNpYWwgY2FzZTogaWYgd2UganVzdCBjaGFuZ2VkIHRoZSBWQUxVRSBwYXJhbWV0ZXIsIHJlZmxlY3QgdGhpcw0KICAgICAgICAvLyBpbiB0aGUgb2JqZWN0J3Mgc3RhdHVzIHNvIHRoYXQgaXQgb25seSBhY2NlcHRzIGNvcnJlY3QgdHlwZSB2YWx1ZXMNCiAgICAgICAgaWYoJG5hbWUgPT0gJ1ZBTFVFJykgew0KICAgICAgICAgICAgLy8gVE9ETzogd2hhdCBpZiB0aGlzIGludmFsaWRhdGVzIGFuIGFscmVhZHktc2V0IHZhbHVlPw0KICAgICAgICAgICAgJHRoaXMtPnZhbF90eXBlID0gY29uc3RhbnQoJ1JGQzI0NDVfVFlQRV8nLnN0cl9yZXBsYWNlKCctJywgJ18nLCAkdmFsdWUpKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiB0cnVlOw0KDQogICAgfQ0KDQogICAgZnVuY3Rpb24gZ2V0X3BhcmFtZXRlcigkbmFtZSkgew0KDQogICAgICAgIC8vIFVwcGVyY2FzZQ0KICAgICAgICAkbmFtZSA9IHN0cnRvdXBwZXIoJG5hbWUpOw0KDQogICAgICAgIGlmKGlzc2V0KCR0aGlzLT5wYXJhbWV0ZXJzWyRuYW1lXSkpIHsNCiAgICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBhbnkgZG91YmxlIHF1b3RlcyBpbiB0aGUgdmFsdWUsIGludmlzaWJseSBzdHJpcCB0aGVtDQogICAgICAgICAgICBpZihpc19hcnJheSgkdGhpcy0+cGFyYW1ldGVyc1skbmFtZV0pKSB7DQogICAgICAgICAgICAgICAgZm9yZWFjaCgkdGhpcy0+cGFyYW1ldGVyc1skbmFtZV0gYXMgJGtleSA9PiAkdmFsdWUpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYoc3Vic3RyKCR2YWx1ZSwgMCwgMSkgPT0gJyInKSB7DQogICAgICAgICAgICAgICAgICAgICAgICR0aGlzLT5wYXJhbWV0ZXJzWyRuYW1lXVska2V5XSA9IHN1YnN0cigkdmFsdWUsIDEsIHN0cmxlbigkdmFsdWUpIC0gMik7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgcmV0dXJuICR0aGlzLT5wYXJhbWV0ZXJzWyRuYW1lXTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgaWYoc3Vic3RyKCR0aGlzLT5wYXJhbWV0ZXJzWyRuYW1lXSwgMCwgMSkgPT0gJyInKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWJzdHIoJHRoaXMtPnBhcmFtZXRlcnNbJG5hbWVdLCAxLCBzdHJsZW4oJHRoaXMtPnBhcmFtZXRlcnNbJG5hbWVdKSAtIDIpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBOVUxMOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHNlcmlhbGl6ZSgpIHsNCiAgICAgICAgJHN0cmluZyA9ICR0aGlzLT5uYW1lOw0KDQogICAgICAgIGlmKCFlbXB0eSgkdGhpcy0+cGFyYW1ldGVycykpIHsNCiAgICAgICAgICAgIGZvcmVhY2goJHRoaXMtPnBhcmFtZXRlcnMgYXMgJG5hbWUgPT4gJHZhbHVlKSB7DQogICAgICAgICAgICAgICAgJHN0cmluZyAuPSAnOycuJG5hbWUuJz0nOw0KICAgICAgICAgICAgICAgIGlmKGlzX2FycmF5KCR2YWx1ZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgJHN0cmluZyAuPSBpbXBsb2RlKCcsJywgJHZhbHVlKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICRzdHJpbmcgLj0gJHZhbHVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgICRzdHJpbmcgLj0gJzonLiR0aGlzLT52YWx1ZTsNCg0KICAgICAgICByZXR1cm4gcmZjMjQ0NV9mb2xkKCRzdHJpbmcpIC4gUkZDMjQ0NV9DUkxGOw0KICAgIH0NCn0NCg0KLy8gNC43IENhbGVuZGFyIFByb3BlcnRpZXMNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCmNsYXNzIGlDYWxlbmRhcl9wcm9wZXJ0eV9jYWxzY2FsZSBleHRlbmRzIGlDYWxlbmRhcl9wcm9wZXJ0eSB7DQoNCiAgICB2YXIgJG5hbWUgICAgICAgID0gJ0NBTFNDQUxFJzsNCiAgICB2YXIgJHZhbF90eXBlICAgID0gUkZDMjQ0NV9UWVBFX1RFWFQ7DQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgICR0aGlzLT52YWxpZF9wYXJhbWV0ZXJzID0gYXJyYXkoDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBpc192YWxpZF92YWx1ZSgkdmFsdWUpIHsNCiAgICAgICAgLy8gVGhpcyBpcyBjYXNlLXNlbnNpdGl2ZQ0KICAgICAgICByZXR1cm4gKCR2YWx1ZSA9PT0gJ0dSRUdPUklBTicpOw0KICAgIH0NCn0NCg0KY2xhc3MgaUNhbGVuZGFyX3Byb3BlcnR5X21ldGhvZCBleHRlbmRzIGlDYWxlbmRhcl9wcm9wZXJ0eSB7DQoNCiAgICB2YXIgJG5hbWUgICAgICAgID0gJ01FVEhPRCc7DQogICAgdmFyICR2YWxfdHlwZSAgICA9IFJGQzI0NDVfVFlQRV9URVhUOw0KDQogICAgZnVuY3Rpb24gY29uc3RydWN0KCkgew0KICAgICAgICAkdGhpcy0+dmFsaWRfcGFyYW1ldGVycyA9IGFycmF5KA0KICAgICAgICAgICAgUkZDMjQ0NV9YTkFNRSA9PiBSRkMyNDQ1X09QVElPTkFMDQogICAgICAgICk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gaXNfdmFsaWRfdmFsdWUoJHZhbHVlKSB7DQogICAgICAgIC8vIFRoaXMgaXMgY2FzZS1zZW5zaXRpdmUNCiAgICAgICAgLy8gTWV0aG9kcyBmcm9tIFJGQyAyNDQ2DQogICAgICAgICRtZXRob2RzID09IGFycmF5KCdQVUJMSVNIJywgJ1JFUVVFU1QnLCAnUkVQTFknLCAnQUREJywgJ0NBTkNFTCcsICdSRUZSRVNIJywgJ0NPVU5URVInLCAnREVDTElORUNPVU5URVInKTsNCiAgICAgICAgcmV0dXJuIGluX2FycmF5KCR2YWx1ZSwgJG1ldGhvZHMpOw0KICAgIH0NCn0NCg0KY2xhc3MgaUNhbGVuZGFyX3Byb3BlcnR5X3Byb2RpZCBleHRlbmRzIGlDYWxlbmRhcl9wcm9wZXJ0eSB7DQoNCiAgICB2YXIgJG5hbWUgICAgICAgID0gJ1BST0RJRCc7DQogICAgdmFyICR2YWxfdHlwZSAgICA9IFJGQzI0NDVfVFlQRV9URVhUOw0KICAgIHZhciAkdmFsX2RlZmF1bHQgPSBOVUxMOw0KDQogICAgZnVuY3Rpb24gY29uc3RydWN0KCkgew0KICAgICAgICAkdGhpcy0+dmFsX2RlZmF1bHQgPSAnLS8vSm9obiBQYXBhaW9hbm5vdS9OT05TR01MIEJlbm51ICcuX0JFTk5VX1ZFUlNJT04uJy8vRU4nOw0KDQogICAgICAgICR0aGlzLT52YWxpZF9wYXJhbWV0ZXJzID0gYXJyYXkoDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCiAgICB9DQp9DQoNCmNsYXNzIGlDYWxlbmRhcl9wcm9wZXJ0eV92ZXJzaW9uIGV4dGVuZHMgaUNhbGVuZGFyX3Byb3BlcnR5IHsNCg0KICAgIHZhciAkbmFtZSAgICAgICAgPSAnVkVSU0lPTic7DQogICAgdmFyICR2YWxfdHlwZSAgICA9IFJGQzI0NDVfVFlQRV9URVhUOw0KICAgIHZhciAkdmFsX2RlZmF1bHQgPSAnMi4wJzsNCg0KICAgIGZ1bmN0aW9uIGNvbnN0cnVjdCgpIHsNCiAgICAgICAgJHRoaXMtPnZhbGlkX3BhcmFtZXRlcnMgPSBhcnJheSgNCiAgICAgICAgICAgIFJGQzI0NDVfWE5BTUUgPT4gUkZDMjQ0NV9PUFRJT05BTA0KICAgICAgICApOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGlzX3ZhbGlkX3ZhbHVlKCR2YWx1ZSkgew0KICAgICAgICByZXR1cm4oJHZhbHVlID09PSAnMi4wJyB8fCAkdmFsdWUgPT09IDIuMCk7DQogICAgfQ0KDQp9DQoNCi8vIDQuOC4xIERlc2NyaXB0aXZlIENvbXBvbmVudCBQcm9wZXJ0aWVzDQovLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpjbGFzcyBpQ2FsZW5kYXJfcHJvcGVydHlfYXR0YWNoIGV4dGVuZHMgaUNhbGVuZGFyX3Byb3BlcnR5IHsNCg0KICAgIHZhciAkbmFtZSAgICAgICAgPSAnQVRUQUNIJzsNCiAgICB2YXIgJHZhbF90eXBlICAgID0gUkZDMjQ0NV9UWVBFX1VSSTsNCg0KICAgIGZ1bmN0aW9uIGNvbnN0cnVjdCgpIHsNCiAgICAgICAgJHRoaXMtPnZhbGlkX3BhcmFtZXRlcnMgPSBhcnJheSgNCiAgICAgICAgICAgICdGTVRUWVBFJyAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdFTkNPRElORycgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdWQUxVRScgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgIFJGQzI0NDVfWE5BTUUgPT4gUkZDMjQ0NV9PUFRJT05BTA0KICAgICAgICApOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGludmFyaWFudF9ob2xkcygpIHsNCiAgICAgICAgaWYoaXNzZXQoJHRoaXMtPnBhcmFtZXRlcnNbJ0VOQ09ESU5HJ10pICYmICFpc3NldCgkdGhpcy0+cGFyYW1ldGVyc1snVkFMVUUnXSkpIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgICBpZihpc3NldCgkdGhpcy0+cGFyYW1ldGVyc1snVkFMVUUnXSkgJiYgIWlzc2V0KCR0aGlzLT5wYXJhbWV0ZXJzWydFTkNPRElORyddKSkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gaXNfdmFsaWRfcGFyYW1ldGVyKCRwYXJhbWV0ZXIsICR2YWx1ZSkgew0KDQogICAgICAgICRwYXJhbWV0ZXIgPSBzdHJ0b3VwcGVyKCRwYXJhbWV0ZXIpOw0KDQogICAgICAgIGlmKCFwYXJlbnQ6OmlzX3ZhbGlkX3BhcmFtZXRlcigkcGFyYW1ldGVyLCAkdmFsdWUpKSB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCg0KICAgICAgICBpZigkcGFyYW1ldGVyID09PSAnRU5DT0RJTkcnICYmIHN0cnRvdXBwZXIoJHZhbHVlKSAhPSAnQkFTRTY0Jykgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYoJHBhcmFtZXRlciA9PT0gJ1ZBTFVFJyAmJiBzdHJ0b3VwcGVyKCR2YWx1ZSkgIT0gJ0JJTkFSWScpIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCn0NCg0KY2xhc3MgaUNhbGVuZGFyX3Byb3BlcnR5X2NhdGVnb3JpZXMgZXh0ZW5kcyBpQ2FsZW5kYXJfcHJvcGVydHkgew0KDQogICAgdmFyICRuYW1lICAgICAgICA9ICdDQVRFR09SSUVTJzsNCiAgICB2YXIgJHZhbF90eXBlICAgID0gUkZDMjQ0NV9UWVBFX1RFWFQ7DQogICAgdmFyICR2YWxfbXVsdGkgICA9IHRydWU7DQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgICR0aGlzLT52YWxpZF9wYXJhbWV0ZXJzID0gYXJyYXkoDQogICAgICAgICAgICAnTEFOR1VBR0UnICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCiAgICB9DQp9DQoNCmNsYXNzIGlDYWxlbmRhcl9wcm9wZXJ0eV9jbGFzcyBleHRlbmRzIGlDYWxlbmRhcl9wcm9wZXJ0eSB7DQoNCiAgICB2YXIgJG5hbWUgICAgICAgID0gJ0NMQVNTJzsNCiAgICB2YXIgJHZhbF90eXBlICAgID0gUkZDMjQ0NV9UWVBFX1RFWFQ7DQogICAgdmFyICR2YWxfZGVmYXVsdCA9ICdQVUJMSUMnOw0KDQogICAgZnVuY3Rpb24gY29uc3RydWN0KCkgew0KICAgICAgICAkdGhpcy0+dmFsaWRfcGFyYW1ldGVycyA9IGFycmF5KA0KICAgICAgICAgICAgUkZDMjQ0NV9YTkFNRSA9PiBSRkMyNDQ1X09QVElPTkFMDQogICAgICAgICk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gaXNfdmFsaWRfdmFsdWUoJHZhbHVlKSB7DQogICAgICAgIC8vIElmIHRoaXMgaXMgbm90IGFuIHhuYW1lLCBpdCBpcyBjYXNlLXNlbnNpdGl2ZQ0KICAgICAgICByZXR1cm4gKCR2YWx1ZSA9PT0gJ1BVQkxJQycgfHwgJHZhbHVlID09PSAnUFJJVkFURScgfHwgJHZhbHVlID09PSAnQ09ORklERU5USUFMJyB8fCByZmMyNDQ1X2lzX3huYW1lKHN0cnRvdXBwZXIoJHZhbHVlKSkpOw0KICAgIH0NCn0NCg0KY2xhc3MgaUNhbGVuZGFyX3Byb3BlcnR5X2NvbW1lbnQgZXh0ZW5kcyBpQ2FsZW5kYXJfcHJvcGVydHkgew0KDQogICAgdmFyICRuYW1lICAgICAgICA9ICdDT01NRU5UJzsNCiAgICB2YXIgJHZhbF90eXBlICAgID0gUkZDMjQ0NV9UWVBFX1RFWFQ7DQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgICR0aGlzLT52YWxpZF9wYXJhbWV0ZXJzID0gYXJyYXkoDQogICAgICAgICAgICAnQUxUUkVQJyAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICAnTEFOR1VBR0UnICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCiAgICB9DQp9DQoNCmNsYXNzIGlDYWxlbmRhcl9wcm9wZXJ0eV9kZXNjcmlwdGlvbiBleHRlbmRzIGlDYWxlbmRhcl9wcm9wZXJ0eSB7DQoNCiAgICB2YXIgJG5hbWUgICAgICAgID0gJ0RFU0NSSVBUSU9OJzsNCiAgICB2YXIgJHZhbF90eXBlICAgID0gUkZDMjQ0NV9UWVBFX1RFWFQ7DQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgICR0aGlzLT52YWxpZF9wYXJhbWV0ZXJzID0gYXJyYXkoDQogICAgICAgICAgICAnQUxUUkVQJyAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICAnTEFOR1VBR0UnICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCiAgICB9DQp9DQoNCmNsYXNzIGlDYWxlbmRhcl9wcm9wZXJ0eV9nZW8gZXh0ZW5kcyBpQ2FsZW5kYXJfcHJvcGVydHkgew0KDQogICAgdmFyICRuYW1lICAgICAgICA9ICdHRU8nOw0KICAgIHZhciAkdmFsX3R5cGUgICAgPSBSRkMyNDQ1X1RZUEVfVEVYVDsNCg0KICAgIGZ1bmN0aW9uIGNvbnN0cnVjdCgpIHsNCiAgICAgICAgJHRoaXMtPnZhbGlkX3BhcmFtZXRlcnMgPSBhcnJheSgNCiAgICAgICAgICAgICdBTFRSRVAnICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdMQU5HVUFHRScgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgIFJGQzI0NDVfWE5BTUUgPT4gUkZDMjQ0NV9PUFRJT05BTA0KICAgICAgICApOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGlzX3ZhbGlkX3ZhbHVlKCR2YWx1ZSkgew0KICAgICAgICAvLyBUaGlzIE1VU1QgYmUgdHdvIGZsb2F0cyBzZXBhcmF0ZWQgYnkgYSBzZW1pY29sb24NCiAgICAgICAgaWYoIWlzX3N0cmluZygkdmFsdWUpKSB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCg0KICAgICAgICAkZmxvYXRzID0gZXhwbG9kZSgnOycsICR2YWx1ZSk7DQogICAgICAgIGlmKGNvdW50KCRmbG9hdHMpICE9IDIpIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiByZmMyNDQ1X2lzX3ZhbGlkX3ZhbHVlKCRmbG9hdHNbMF0sIFJGQzI0NDVfVFlQRV9GTE9BVCkgJiYgcmZjMjQ0NV9pc192YWxpZF92YWx1ZSgkZmxvYXRzWzFdLCBSRkMyNDQ1X1RZUEVfRkxPQVQpOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHNldF92YWx1ZSgkdmFsdWUpIHsNCiAgICAgICAgLy8gTXVzdCBvdmVycmlkZSB0aGlzLCBvdGhlcndpc2UgdGhlIHNlbWljb2xvbiBzZXBhcmF0aW5nDQogICAgICAgIC8vIHRoZSB0d28gZmxvYXRzIHdvdWxkIGdldCBhdXRvLXF1b3RlZCwgd2hpY2ggaXMgaWxsZWdhbA0KICAgICAgICBpZigkdGhpcy0+aXNfdmFsaWRfdmFsdWUoJHZhbHVlKSkgew0KICAgICAgICAgICAgJHRoaXMtPnZhbHVlID0gJHZhbHVlOw0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQp9DQoNCmNsYXNzIGlDYWxlbmRhcl9wcm9wZXJ0eV9sb2NhdGlvbiBleHRlbmRzIGlDYWxlbmRhcl9wcm9wZXJ0eSB7DQoNCiAgICB2YXIgJG5hbWUgICAgICAgID0gJ0xPQ0FUSU9OJzsNCiAgICB2YXIgJHZhbF90eXBlICAgID0gUkZDMjQ0NV9UWVBFX1RFWFQ7DQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgICR0aGlzLT52YWxpZF9wYXJhbWV0ZXJzID0gYXJyYXkoDQogICAgICAgICAgICAnQUxUUkVQJyAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICAnTEFOR1VBR0UnICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCiAgICB9DQp9DQoNCmNsYXNzIGlDYWxlbmRhcl9wcm9wZXJ0eV9wZXJjZW50X2NvbXBsZXRlIGV4dGVuZHMgaUNhbGVuZGFyX3Byb3BlcnR5IHsNCg0KICAgIHZhciAkbmFtZSAgICAgICAgPSAnUEVSQ0VOVC1DT01QTEVURSc7DQogICAgdmFyICR2YWxfdHlwZSAgICA9IFJGQzI0NDVfVFlQRV9JTlRFR0VSOw0KDQogICAgZnVuY3Rpb24gY29uc3RydWN0KCkgew0KICAgICAgICAkdGhpcy0+dmFsaWRfcGFyYW1ldGVycyA9IGFycmF5KA0KICAgICAgICAgICAgUkZDMjQ0NV9YTkFNRSA9PiBSRkMyNDQ1X09QVElPTkFMDQogICAgICAgICk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gaXNfdmFsaWRfdmFsdWUoJHZhbHVlKSB7DQogICAgICAgIC8vIE9ubHkgaW50ZWdlcnMgYmV0d2VlbiAwIGFuZCAxMDAgaW5jbHVzaXZlIGFsbG93ZWQNCiAgICAgICAgaWYoIXBhcmVudDo6aXNfdmFsaWRfdmFsdWUoJHZhbHVlKSkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgICR2YWx1ZSA9IGludHZhbCgkdmFsdWUpOw0KICAgICAgICByZXR1cm4gKCR2YWx1ZSA+PSAwICYmICR2YWx1ZSA8PSAxMDApOw0KICAgIH0NCg0KfQ0KDQpjbGFzcyBpQ2FsZW5kYXJfcHJvcGVydHlfcHJpb3JpdHkgZXh0ZW5kcyBpQ2FsZW5kYXJfcHJvcGVydHkgew0KDQogICAgdmFyICRuYW1lICAgICAgICA9ICdQUklPUklUWSc7DQogICAgdmFyICR2YWxfdHlwZSAgICA9IFJGQzI0NDVfVFlQRV9JTlRFR0VSOw0KDQogICAgZnVuY3Rpb24gY29uc3RydWN0KCkgew0KICAgICAgICAkdGhpcy0+dmFsaWRfcGFyYW1ldGVycyA9IGFycmF5KA0KICAgICAgICAgICAgUkZDMjQ0NV9YTkFNRSA9PiBSRkMyNDQ1X09QVElPTkFMDQogICAgICAgICk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gaXNfdmFsaWRfdmFsdWUoJHZhbHVlKSB7DQogICAgICAgIC8vIE9ubHkgaW50ZWdlcnMgYmV0d2VlbiAwIGFuZCA5IGluY2x1c2l2ZSBhbGxvd2VkICAgICAgICANCiAgICAgICAgaWYoIXBhcmVudDo6aXNfdmFsaWRfdmFsdWUoJHZhbHVlKSkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgJHZhbHVlID0gaW50dmFsKCR2YWx1ZSk7DQogICAgICAgIHJldHVybiAoJHZhbHVlID49IDAgJiYgJHZhbHVlIDw9IDkpOw0KICAgIH0NCn0NCg0KY2xhc3MgaUNhbGVuZGFyX3Byb3BlcnR5X3Jlc291cmNlcyBleHRlbmRzIGlDYWxlbmRhcl9wcm9wZXJ0eSB7DQoNCiAgICB2YXIgJG5hbWUgICAgICAgID0gJ1JFU09VUkNFUyc7DQogICAgdmFyICR2YWxfdHlwZSAgICA9IFJGQzI0NDVfVFlQRV9URVhUOw0KICAgIHZhciAkdmFsX211bHRpICAgPSB0cnVlOw0KDQogICAgZnVuY3Rpb24gY29uc3RydWN0KCkgew0KICAgICAgICAkdGhpcy0+dmFsaWRfcGFyYW1ldGVycyA9IGFycmF5KA0KICAgICAgICAgICAgJ0FMVFJFUCcgICAgICA9PiBSRkMyNDQ1X09QVElPTkFMIHwgUkZDMjQ0NV9PTkNFLA0KICAgICAgICAgICAgJ0xBTkdVQUdFJyAgICA9PiBSRkMyNDQ1X09QVElPTkFMIHwgUkZDMjQ0NV9PTkNFLA0KICAgICAgICAgICAgUkZDMjQ0NV9YTkFNRSA9PiBSRkMyNDQ1X09QVElPTkFMDQogICAgICAgICk7DQogICAgfQ0KfQ0KDQpjbGFzcyBpQ2FsZW5kYXJfcHJvcGVydHlfc3RhdHVzIGV4dGVuZHMgaUNhbGVuZGFyX3Byb3BlcnR5IHsNCg0KICAgIHZhciAkbmFtZSAgICAgICAgPSAnU1RBVFVTJzsNCiAgICB2YXIgJHZhbF90eXBlICAgID0gUkZDMjQ0NV9UWVBFX1RFWFQ7DQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgICR0aGlzLT52YWxpZF9wYXJhbWV0ZXJzID0gYXJyYXkoDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBpc192YWxpZF92YWx1ZSgkdmFsdWUpIHsNCiAgICAgICAgLy8gVGhpcyBpcyBjYXNlLXNlbnNpdGl2ZQ0KICAgICAgICBzd2l0Y2ggKCR0aGlzLT5wYXJlbnRfY29tcG9uZW50KSB7DQogICAgICAgICAgICBjYXNlICdWRVZFTlQnOg0KICAgICAgICAgICAgICAgICRhbGxvd2VkID0gYXJyYXkoJ1RFTlRBVElWRScsICdDT05GSVJNRUQnLCAnQ0FOQ0VMTEVEJyk7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgJ1ZUT0RPJzoNCiAgICAgICAgICAgICAgICAkYWxsb3dlZCA9IGFycmF5KCdORUVEUy1BQ1RJT04nLCAnQ09NUExFVEVEJywgJ0lOLVBST0NFU1MnLCAnQ0FOQ0VMTEVEJyk7DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgJ1ZKT1VSTkFMJzoNCiAgICAgICAgICAgICAgICAkYWxsb3dlZCA9IGFycmF5KCdEUkFGVCcsICdGSU5BTCcsICdDQU5DRUxMRUQnKTsNCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiBpbl9hcnJheSgkdmFsdWUsICRhbGxvd2VkKTsNCg0KICAgIH0NCg0KfQ0KDQpjbGFzcyBpQ2FsZW5kYXJfcHJvcGVydHlfc3VtbWFyeSBleHRlbmRzIGlDYWxlbmRhcl9wcm9wZXJ0eSB7DQoNCiAgICB2YXIgJG5hbWUgICAgICAgID0gJ1NVTU1BUlknOw0KICAgIHZhciAkdmFsX3R5cGUgICAgPSBSRkMyNDQ1X1RZUEVfVEVYVDsNCg0KICAgIGZ1bmN0aW9uIGNvbnN0cnVjdCgpIHsNCiAgICAgICAgJHRoaXMtPnZhbGlkX3BhcmFtZXRlcnMgPSBhcnJheSgNCiAgICAgICAgICAgICdBTFRSRVAnICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdMQU5HVUFHRScgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgIFJGQzI0NDVfWE5BTUUgPT4gUkZDMjQ0NV9PUFRJT05BTA0KICAgICAgICApOw0KICAgIH0NCn0NCg0KLy8gNC44LjIgRGF0ZSBhbmQgVGltZSBDb21wb25lbnQgUHJvcGVydGllcw0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpjbGFzcyBpQ2FsZW5kYXJfcHJvcGVydHlfY29tcGxldGVkIGV4dGVuZHMgaUNhbGVuZGFyX3Byb3BlcnR5IHsNCg0KICAgIHZhciAkbmFtZSAgICAgICAgPSAnQ09NUExFVEVEJzsNCiAgICB2YXIgJHZhbF90eXBlICAgID0gUkZDMjQ0NV9UWVBFX0RBVEVfVElNRTsNCg0KICAgIGZ1bmN0aW9uIGNvbnN0cnVjdCgpIHsNCiAgICAgICAgJHRoaXMtPnZhbGlkX3BhcmFtZXRlcnMgPSBhcnJheSgNCiAgICAgICAgICAgIFJGQzI0NDVfWE5BTUUgPT4gUkZDMjQ0NV9PUFRJT05BTA0KICAgICAgICApOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGlzX3ZhbGlkX3ZhbHVlKCR2YWx1ZSkgew0KICAgICAgICBpZighcGFyZW50Ojppc192YWxpZF92YWx1ZSgkdmFsdWUpKSB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICAgICAgLy8gVGltZSBNVVNUIGJlIGluIFVUQyBmb3JtYXQNCiAgICAgICAgcmV0dXJuKHN1YnN0cigkdmFsdWUsIC0xKSA9PSAnWicpOw0KICAgIH0NCn0NCg0KY2xhc3MgaUNhbGVuZGFyX3Byb3BlcnR5X2R0ZW5kIGV4dGVuZHMgaUNhbGVuZGFyX3Byb3BlcnR5IHsNCg0KICAgIHZhciAkbmFtZSAgICAgICAgPSAnRFRFTkQnOw0KICAgIHZhciAkdmFsX3R5cGUgICAgPSBSRkMyNDQ1X1RZUEVfREFURV9USU1FOw0KDQogICAgZnVuY3Rpb24gY29uc3RydWN0KCkgew0KICAgICAgICAkdGhpcy0+dmFsaWRfcGFyYW1ldGVycyA9IGFycmF5KA0KICAgICAgICAgICAgJ1ZBTFVFJyAgICAgICA9PiBSRkMyNDQ1X09QVElPTkFMIHwgUkZDMjQ0NV9PTkNFLA0KICAgICAgICAgICAgJ1RaSUQnICAgICAgICA9PiBSRkMyNDQ1X09QVElPTkFMIHwgUkZDMjQ0NV9PTkNFLA0KICAgICAgICAgICAgUkZDMjQ0NV9YTkFNRSA9PiBSRkMyNDQ1X09QVElPTkFMDQogICAgICAgICk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gaXNfdmFsaWRfdmFsdWUoJHZhbHVlKSB7DQogICAgICAgIGlmKCFwYXJlbnQ6OmlzX3ZhbGlkX3ZhbHVlKCR2YWx1ZSkpIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIElmIHByZXNlbnQgaW4gYSBGUkVFQlVTWSBjb21wb25lbnQsIG11c3QgYmUgaW4gVVRDIGZvcm1hdA0KICAgICAgICBpZigkdGhpcy0+cGFyZW50X2NvbXBvbmVudCA9PSAnVkZSRUVCVVNZJyAmJiBzdWJzdHIoJHZhbHVlLCAtMSkgIT0gJ1onKSB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gdHJ1ZTsNCg0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGlzX3ZhbGlkX3BhcmFtZXRlcigkcGFyYW1ldGVyLCAkdmFsdWUpIHsNCg0KICAgICAgICAkcGFyYW1ldGVyID0gc3RydG91cHBlcigkcGFyYW1ldGVyKTsNCg0KICAgICAgICBpZighcGFyZW50Ojppc192YWxpZF9wYXJhbWV0ZXIoJHBhcmFtZXRlciwgJHZhbHVlKSkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIGlmKCRwYXJhbWV0ZXIgPT0gJ1ZBTFVFJyAmJiAhKCR2YWx1ZSA9PSAnREFURScgfHwgJHZhbHVlID09ICdEQVRFLVRJTUUnKSkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KfQ0KDQpjbGFzcyBpQ2FsZW5kYXJfcHJvcGVydHlfZHVlIGV4dGVuZHMgaUNhbGVuZGFyX3Byb3BlcnR5IHsNCg0KICAgIHZhciAkbmFtZSAgICAgICAgPSAnRFVFJzsNCiAgICB2YXIgJHZhbF90eXBlICAgID0gUkZDMjQ0NV9UWVBFX0RBVEVfVElNRTsNCg0KICAgIGZ1bmN0aW9uIGNvbnN0cnVjdCgpIHsNCiAgICAgICAgJHRoaXMtPnZhbGlkX3BhcmFtZXRlcnMgPSBhcnJheSgNCiAgICAgICAgICAgICdWQUxVRScgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdUWklEJyAgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgIFJGQzI0NDVfWE5BTUUgPT4gUkZDMjQ0NV9PUFRJT05BTA0KICAgICAgICApOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGlzX3ZhbGlkX3ZhbHVlKCR2YWx1ZSkgew0KICAgICAgICBpZighcGFyZW50Ojppc192YWxpZF92YWx1ZSgkdmFsdWUpKSB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBJZiBwcmVzZW50IGluIGEgRlJFRUJVU1kgY29tcG9uZW50LCBtdXN0IGJlIGluIFVUQyBmb3JtYXQNCiAgICAgICAgaWYoJHRoaXMtPnBhcmVudF9jb21wb25lbnQgPT0gJ1ZGUkVFQlVTWScgJiYgc3Vic3RyKCR2YWx1ZSwgLTEpICE9ICdaJykgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIHRydWU7DQoNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBpc192YWxpZF9wYXJhbWV0ZXIoJHBhcmFtZXRlciwgJHZhbHVlKSB7DQoNCiAgICAgICAgJHBhcmFtZXRlciA9IHN0cnRvdXBwZXIoJHBhcmFtZXRlcik7DQoNCiAgICAgICAgaWYoIXBhcmVudDo6aXNfdmFsaWRfcGFyYW1ldGVyKCRwYXJhbWV0ZXIsICR2YWx1ZSkpIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgICBpZigkcGFyYW1ldGVyID09ICdWQUxVRScgJiYgISgkdmFsdWUgPT0gJ0RBVEUnIHx8ICR2YWx1ZSA9PSAnREFURS1USU1FJykpIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCn0NCg0KY2xhc3MgaUNhbGVuZGFyX3Byb3BlcnR5X2R0c3RhcnQgZXh0ZW5kcyBpQ2FsZW5kYXJfcHJvcGVydHkgew0KDQogICAgdmFyICRuYW1lICAgICAgICA9ICdEVFNUQVJUJzsNCiAgICB2YXIgJHZhbF90eXBlICAgID0gUkZDMjQ0NV9UWVBFX0RBVEVfVElNRTsNCg0KICAgIGZ1bmN0aW9uIGNvbnN0cnVjdCgpIHsNCiAgICAgICAgJHRoaXMtPnZhbGlkX3BhcmFtZXRlcnMgPSBhcnJheSgNCiAgICAgICAgICAgICdWQUxVRScgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdUWklEJyAgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgIFJGQzI0NDVfWE5BTUUgPT4gUkZDMjQ0NV9PUFRJT05BTA0KICAgICAgICApOw0KICAgIH0NCg0KICAgIC8vIFRPRE86IHVuaW1wbGVtZW50ZWQgc3R1ZmYgd2hlbiBwYXJlbnQgaXMgYSBWVElNRVpPTkUgY29tcG9uZW50DQoNCiAgICBmdW5jdGlvbiBpc192YWxpZF92YWx1ZSgkdmFsdWUpIHsNCiAgICAgICAgaWYoIXBhcmVudDo6aXNfdmFsaWRfdmFsdWUoJHZhbHVlKSkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8gSWYgcHJlc2VudCBpbiBhIEZSRUVCVVNZIGNvbXBvbmVudCwgbXVzdCBiZSBpbiBVVEMgZm9ybWF0DQogICAgICAgIGlmKCR0aGlzLT5wYXJlbnRfY29tcG9uZW50ID09ICdWRlJFRUJVU1knICYmIHN1YnN0cigkdmFsdWUsIC0xKSAhPSAnWicpIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGlzX3ZhbGlkX3BhcmFtZXRlcigkcGFyYW1ldGVyLCAkdmFsdWUpIHsNCg0KICAgICAgICAkcGFyYW1ldGVyID0gc3RydG91cHBlcigkcGFyYW1ldGVyKTsNCg0KICAgICAgICBpZighcGFyZW50Ojppc192YWxpZF9wYXJhbWV0ZXIoJHBhcmFtZXRlciwgJHZhbHVlKSkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIGlmKCRwYXJhbWV0ZXIgPT0gJ1ZBTFVFJyAmJiAhKCR2YWx1ZSA9PSAnREFURScgfHwgJHZhbHVlID09ICdEQVRFLVRJTUUnKSkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KfQ0KDQpjbGFzcyBpQ2FsZW5kYXJfcHJvcGVydHlfZHVyYXRpb24gZXh0ZW5kcyBpQ2FsZW5kYXJfcHJvcGVydHkgew0KDQogICAgdmFyICRuYW1lICAgICAgICA9ICdEVVJBVElPTic7DQogICAgdmFyICR2YWxfdHlwZSAgICA9IFJGQzI0NDVfVFlQRV9EVVJBVElPTjsNCg0KICAgIGZ1bmN0aW9uIGNvbnN0cnVjdCgpIHsNCiAgICAgICAgJHRoaXMtPnZhbGlkX3BhcmFtZXRlcnMgPSBhcnJheSgNCiAgICAgICAgICAgIFJGQzI0NDVfWE5BTUUgPT4gUkZDMjQ0NV9PUFRJT05BTA0KICAgICAgICApOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGlzX3ZhbGlkX3ZhbHVlKCR2YWx1ZSkgew0KICAgICAgICBpZighcGFyZW50Ojppc192YWxpZF92YWx1ZSgkdmFsdWUpKSB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBWYWx1ZSBtdXN0IGJlIHBvc2l0aXZlDQogICAgICAgIHJldHVybiAoJHZhbHVlezB9ICE9ICctJyk7DQogICAgfQ0KfQ0KDQpjbGFzcyBpQ2FsZW5kYXJfcHJvcGVydHlfZnJlZWJ1c3kgZXh0ZW5kcyBpQ2FsZW5kYXJfcHJvcGVydHkgew0KDQogICAgdmFyICRuYW1lICAgICAgICA9ICdGUkVFQlVTWSc7DQogICAgdmFyICR2YWxfdHlwZSAgICA9IFJGQzI0NDVfVFlQRV9QRVJJT0Q7DQogICAgdmFyICR2YWxfbXVsdGkgICA9IHRydWU7DQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgICR0aGlzLT52YWxpZF9wYXJhbWV0ZXJzID0gYXJyYXkoDQogICAgICAgICAgICAnRkJUWVBFJyAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBpc192YWxpZF92YWx1ZSgkdmFsdWUpIHsNCiAgICAgICAgaWYoIXBhcmVudDo6aXNfdmFsaWRfdmFsdWUoJHZhbHVlKSkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgJHBvcyA9IHN0cnBvcygkdmFsdWUsICcvJyk7IC8vIFdlIGtub3cgdGhlcmUncyBvbmx5IG9uZSAvIGluIHRoZXJlDQogICAgICAgIGlmKCR2YWx1ZXskcG9zIC0gMX0gIT0gJ1onKSB7DQogICAgICAgICAgICAvLyBTdGFydCB0aW1lIE1VU1QgYmUgaW4gVVRDDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCiAgICAgICAgaWYoJHZhbHVleyRwb3MgKyAxfSAhPSAnUCcgJiYgJHN1YnN0cigkdmFsdWUsIC0xKSAhPSAnWicpIHsNCiAgICAgICAgICAgIC8vIElmIHRoZSBzZWNvbmQgcGFydCBpcyBub3QgYSBwZXJpb2QsIGl0IE1VU1QgYmUgaW4gVVRDDQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICB9DQoNCiAgICAvLyBUT0RPOiB0aGVzZSBwcm9wZXJ0aWVzIFNIT1VMRCBiZSBzaG9ydGVkIGluIGFzY2VuZGluZyBvcmRlciAoYnkgc3RhcnQgdGltZSBhbmQgZW5kIHRpbWUgYXMgdGllYnJlYWspDQp9DQoNCmNsYXNzIGlDYWxlbmRhcl9wcm9wZXJ0eV90cmFuc3AgZXh0ZW5kcyBpQ2FsZW5kYXJfcHJvcGVydHkgew0KDQogICAgdmFyICRuYW1lICAgICAgICA9ICdUUkFOU1AnOw0KICAgIHZhciAkdmFsX3R5cGUgICAgPSBSRkMyNDQ1X1RZUEVfVEVYVDsNCiAgICB2YXIgJHZhbF9kZWZhdWx0ID0gJ09QQVFVRSc7DQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgICR0aGlzLT52YWxpZF9wYXJhbWV0ZXJzID0gYXJyYXkoDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBpc192YWxpZF92YWx1ZSgkdmFsdWUpIHsNCiAgICAgICAgcmV0dXJuICgkdmFsdWUgPT09ICdUUkFOU1BBUkVOVCcgfHwgJHZhbHVlID09PSAnT1BBUVVFJyk7DQogICAgfQ0KfQ0KDQovLyBUT0RPOiA0LjguMyB0aW1lem9uZSBjb21wb25lbnQgcHJvcGVydGllcw0KDQoNCi8vIDQuOC40IFJlbGF0aW9uc2hpcCBDb21wb25lbnQgUHJvcGVydGllcw0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCmNsYXNzIGlDYWxlbmRhcl9wcm9wZXJ0eV9hdHRlbmRlZSBleHRlbmRzIGlDYWxlbmRhcl9wcm9wZXJ0eSB7DQoNCiAgICB2YXIgJG5hbWUgICAgICAgID0gJ0FUVEVOREVFJzsNCiAgICB2YXIgJHZhbF90eXBlICAgID0gUkZDMjQ0NV9UWVBFX0NBTF9BRERSRVNTOw0KDQogICAgLy8gVE9ETzogTVVTVCBOT1QgYmUgc3BlY2lmaWVkIHdoZW4gdGhlIGNhbGVuZGFyIG9iamVjdCBoYXMgTUVUSE9EPVBVQkxJU0gNCiAgICAvLyBUT0RPOiBzdGFuZGFyZCBoYXMgbG90cyBvZiBkZXRhaWwgaGVyZSwgbWFrZSB0cmlwbGUgc3VyZSB0aGF0IHdlIGV2ZW50dWFsbHkgY29uZm9ybQ0KDQogICAgZnVuY3Rpb24gY29uc3RydWN0KCkgew0KICAgICAgICAkdGhpcy0+dmFsaWRfcGFyYW1ldGVycyA9IGFycmF5KA0KICAgICAgICAgICAgJ0xBTkdVQUdFJyAgICAgICA9PiBSRkMyNDQ1X09QVElPTkFMIHwgUkZDMjQ0NV9PTkNFLA0KICAgICAgICAgICAgJ0NOJyAgICAgICAgICAgICA9PiBSRkMyNDQ1X09QVElPTkFMIHwgUkZDMjQ0NV9PTkNFLA0KICAgICAgICAgICAgJ1JPTEUnICAgICAgICAgICA9PiBSRkMyNDQ1X09QVElPTkFMIHwgUkZDMjQ0NV9PTkNFLA0KICAgICAgICAgICAgJ1BBUlRTVEFUJyAgICAgICA9PiBSRkMyNDQ1X09QVElPTkFMIHwgUkZDMjQ0NV9PTkNFLA0KICAgICAgICAgICAgJ1JTVlAnICAgICAgICAgICA9PiBSRkMyNDQ1X09QVElPTkFMIHwgUkZDMjQ0NV9PTkNFLA0KICAgICAgICAgICAgJ0NVVFlQRScgICAgICAgICA9PiBSRkMyNDQ1X09QVElPTkFMIHwgUkZDMjQ0NV9PTkNFLA0KICAgICAgICAgICAgJ01FTUJFUicgICAgICAgICA9PiBSRkMyNDQ1X09QVElPTkFMIHwgUkZDMjQ0NV9PTkNFLA0KICAgICAgICAgICAgJ0RFTEVHQVRFRC1UTycgICA9PiBSRkMyNDQ1X09QVElPTkFMIHwgUkZDMjQ0NV9PTkNFLA0KICAgICAgICAgICAgJ0RFTEVHQVRFRC1GUk9NJyA9PiBSRkMyNDQ1X09QVElPTkFMIHwgUkZDMjQ0NV9PTkNFLA0KICAgICAgICAgICAgJ1NFTlQtQlknICAgICAgICA9PiBSRkMyNDQ1X09QVElPTkFMIHwgUkZDMjQ0NV9PTkNFLA0KICAgICAgICAgICAgJ0RJUicgICAgICAgICAgICA9PiBSRkMyNDQ1X09QVElPTkFMIHwgUkZDMjQ0NV9PTkNFLA0KICAgICAgICAgICAgUkZDMjQ0NV9YTkFNRSAgICA9PiBSRkMyNDQ1X09QVElPTkFMDQogICAgICAgICk7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gc2V0X3BhcmVudF9jb21wb25lbnQoJGNvbXBvbmVudG5hbWUpIHsNCiAgICAgICAgaWYoIXBhcmVudDo6c2V0X3BhcmVudF9jb21wb25lbnQoJGNvbXBvbmVudG5hbWUpKSB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCg0KICAgICAgICBpZigkdGhpcy0+cGFyZW50X2NvbXBvbmVudCA9PSAnVkZSRUVCVVNZJyB8fCAkdGhpcy0+cGFyZW50X2NvbXBvbmVudCA9PSAnVkFMQVJNJykgew0KICAgICAgICAgICAgLy8gTW9zdCBwYXJhbWV0ZXJzIGJlY29tZSBpbnZhbGlkIGluIHRoaXMgY2FzZSwgdGhlIGZ1bGwgYWxsb3dlZCBzZXQgaXMgbm93Og0KICAgICAgICAgICAgJHRoaXMtPnZhbGlkX3BhcmFtZXRlcnMgPSBhcnJheSgNCiAgICAgICAgICAgICAgICAnTEFOR1VBR0UnICAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICAgICAgUkZDMjQ0NV9YTkFNRSAgICA9PiBSRkMyNDQ1X09QVElPTkFMDQogICAgICAgICAgICApOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCg0KfQ0KDQpjbGFzcyBpQ2FsZW5kYXJfcHJvcGVydHlfY29udGFjdCBleHRlbmRzIGlDYWxlbmRhcl9wcm9wZXJ0eSB7DQoNCiAgICB2YXIgJG5hbWUgICAgICAgID0gJ0NPTlRBQ1QnOw0KICAgIHZhciAkdmFsX3R5cGUgICAgPSBSRkMyNDQ1X1RZUEVfVEVYVDsNCg0KICAgIGZ1bmN0aW9uIGNvbnN0cnVjdCgpIHsNCiAgICAgICAgJHRoaXMtPnZhbGlkX3BhcmFtZXRlcnMgPSBhcnJheSgNCiAgICAgICAgICAgICdBTFRSRVAnICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdMQU5HVUFHRScgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgIFJGQzI0NDVfWE5BTUUgPT4gUkZDMjQ0NV9PUFRJT05BTA0KICAgICAgICApOw0KICAgIH0NCn0NCg0KY2xhc3MgaUNhbGVuZGFyX3Byb3BlcnR5X29yZ2FuaXplciBleHRlbmRzIGlDYWxlbmRhcl9wcm9wZXJ0eSB7DQoNCiAgICB2YXIgJG5hbWUgICAgICAgID0gJ09SR0FOSVpFUic7DQogICAgdmFyICR2YWxfdHlwZSAgICA9IFJGQzI0NDVfVFlQRV9DQUxfQUREUkVTUzsNCg0KICAgIGZ1bmN0aW9uIGNvbnN0cnVjdCgpIHsNCiAgICAgICAgJHRoaXMtPnZhbGlkX3BhcmFtZXRlcnMgPSBhcnJheSgNCiAgICAgICAgICAgICdDTicgICAgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdESVInICAgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdTRU5ULUJZJyAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdMQU5HVUFHRScgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgIFJGQzI0NDVfWE5BTUUgPT4gUkZDMjQ0NV9PUFRJT05BTA0KICAgICAgICApOw0KICAgIH0NCg0KICAgIC8vIFRPRE86DQovKiAgICANCiAgIENvbmZvcm1hbmNlOiBUaGlzIHByb3BlcnR5IE1VU1QgYmUgc3BlY2lmaWVkIGluIGFuIGlDYWxlbmRhciBvYmplY3QNCiAgIHRoYXQgc3BlY2lmaWVzIGEgZ3JvdXAgc2NoZWR1bGVkIGNhbGVuZGFyIGVudGl0eS4gVGhpcyBwcm9wZXJ0eSBNVVNUDQogICBiZSBzcGVjaWZpZWQgaW4gYW4gaUNhbGVuZGFyIG9iamVjdCB0aGF0IHNwZWNpZmllcyB0aGUgcHVibGljYXRpb24gb2YNCiAgIGEgY2FsZW5kYXIgdXNlcidzIGJ1c3kgdGltZS4gVGhpcyBwcm9wZXJ0eSBNVVNUIE5PVCBiZSBzcGVjaWZpZWQgaW4NCiAgIGFuIGlDYWxlbmRhciBvYmplY3QgdGhhdCBzcGVjaWZpZXMgb25seSBhIHRpbWUgem9uZSBkZWZpbml0aW9uIG9yDQogICB0aGF0IGRlZmluZXMgY2FsZW5kYXIgZW50aXRpZXMgdGhhdCBhcmUgbm90IGdyb3VwIHNjaGVkdWxlZCBlbnRpdGllcywNCiAgIGJ1dCBhcmUgZW50aXRpZXMgb25seSBvbiBhIHNpbmdsZSB1c2VyJ3MgY2FsZW5kYXIuDQoqLw0KDQp9DQoNCmNsYXNzIGlDYWxlbmRhcl9wcm9wZXJ0eV9yZWN1cnJlbmNlX2lkIGV4dGVuZHMgaUNhbGVuZGFyX3Byb3BlcnR5IHsNCg0KICAgIC8vIFRPRE86IGNhbiBvbmx5IGJlIHNwZWNpZmllZCB3aGVuIGRlZmluaW5nIHJlY3VycmluZyBjb21wb25lbnRzIGluIHRoZSBjYWxlbmRhcg0KLyoNCiAgIENvbmZvcm1hbmNlOiBUaGlzIHByb3BlcnR5IGNhbiBiZSBzcGVjaWZpZWQgaW4gYW4gaUNhbGVuZGFyIG9iamVjdA0KICAgY29udGFpbmluZyBhIHJlY3VycmluZyBjYWxlbmRhciBjb21wb25lbnQuDQoNCiAgIERlc2NyaXB0aW9uOiBUaGUgZnVsbCByYW5nZSBvZiBjYWxlbmRhciBjb21wb25lbnRzIHNwZWNpZmllZCBieSBhDQogICByZWN1cnJlbmNlIHNldCBpcyByZWZlcmVuY2VkIGJ5IHJlZmVycmluZyB0byBqdXN0IHRoZSAiVUlEIiBwcm9wZXJ0eQ0KICAgdmFsdWUgY29ycmVzcG9uZGluZyB0byB0aGUgY2FsZW5kYXIgY29tcG9uZW50LiBUaGUgIlJFQ1VSUkVOQ0UtSUQiDQogICBwcm9wZXJ0eSBhbGxvd3MgdGhlIHJlZmVyZW5jZSB0byBhbiBpbmRpdmlkdWFsIGluc3RhbmNlIHdpdGhpbiB0aGUNCiAgIHJlY3VycmVuY2Ugc2V0Lg0KKi8NCg0KICAgIHZhciAkbmFtZSAgICAgICAgPSAnUkVDVVJSRU5DRS1JRCc7DQogICAgdmFyICR2YWxfdHlwZSAgICA9IFJGQzI0NDVfVFlQRV9EQVRFX1RJTUU7DQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgICR0aGlzLT52YWxpZF9wYXJhbWV0ZXJzID0gYXJyYXkoDQogICAgICAgICAgICAnUkFOR0UnICAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICAnVFpJRCcgICAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICAnVkFMVUUnICAgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBpc192YWxpZF9wYXJhbWV0ZXIoJHBhcmFtZXRlciwgJHZhbHVlKSB7DQoNCiAgICAgICAgJHBhcmFtZXRlciA9IHN0cnRvdXBwZXIoJHBhcmFtZXRlcik7DQoNCiAgICAgICAgaWYoIXBhcmVudDo6aXNfdmFsaWRfcGFyYW1ldGVyKCRwYXJhbWV0ZXIsICR2YWx1ZSkpIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KICAgICAgICBpZigkcGFyYW1ldGVyID09ICdWQUxVRScgJiYgISgkdmFsdWUgPT0gJ0RBVEUnIHx8ICR2YWx1ZSA9PSAnREFURS1USU1FJykpIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KfQ0KDQpjbGFzcyBpQ2FsZW5kYXJfcHJvcGVydHlfcmVsYXRlZF90byBleHRlbmRzIGlDYWxlbmRhcl9wcm9wZXJ0eSB7DQoNCiAgICB2YXIgJG5hbWUgICAgICAgID0gJ1JFTEFURUQtVE8nOw0KICAgIHZhciAkdmFsX3R5cGUgICAgPSBSRkMyNDQ1X1RZUEVfVEVYVDsNCg0KICAgIC8vIFRPRE86IHRoZSB2YWx1ZSBvZiB0aGlzIHByb3BlcnR5IG11c3QgcmVmZXJlbmNlIGFub3RoZXIgY29tcG9uZW50J3MgVUlEDQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgICR0aGlzLT52YWxpZF9wYXJhbWV0ZXJzID0gYXJyYXkoDQogICAgICAgICAgICAnUkVMVFlQRScgICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCiAgICB9DQp9DQoNCmNsYXNzIGlDYWxlbmRhcl9wcm9wZXJ0eV91cmwgZXh0ZW5kcyBpQ2FsZW5kYXJfcHJvcGVydHkgew0KDQogICAgdmFyICRuYW1lICAgICAgICA9ICdVUkwnOw0KICAgIHZhciAkdmFsX3R5cGUgICAgPSBSRkMyNDQ1X1RZUEVfVVJJOw0KDQogICAgZnVuY3Rpb24gY29uc3RydWN0KCkgew0KICAgICAgICAkdGhpcy0+dmFsaWRfcGFyYW1ldGVycyA9IGFycmF5KA0KICAgICAgICAgICAgUkZDMjQ0NV9YTkFNRSA9PiBSRkMyNDQ1X09QVElPTkFMDQogICAgICAgICk7DQogICAgfQ0KfQ0KDQpjbGFzcyBpQ2FsZW5kYXJfcHJvcGVydHlfdWlkIGV4dGVuZHMgaUNhbGVuZGFyX3Byb3BlcnR5IHsNCg0KICAgIHZhciAkbmFtZSAgICAgICAgPSAnVUlEJzsNCiAgICB2YXIgJHZhbF90eXBlICAgID0gUkZDMjQ0NV9UWVBFX1RFWFQ7DQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgICR0aGlzLT52YWxpZF9wYXJhbWV0ZXJzID0gYXJyYXkoDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCg0KICAgICAgICAvLyBUaGUgZXhjZXB0aW9uIHRvIHRoZSBydWxlOiB0aGlzIGlzIG5vdCBhIHN0YXRpYyB2YWx1ZSwgc28gd2UNCiAgICAgICAgLy8gZ2VuZXJhdGUgaXQgb24tdGhlLWZseSBoZXJlLiBHdWFyYW50ZWVkIHRvIGJlIGRpZmZlcmVudCBmb3INCiAgICAgICAgLy8gZWFjaCBpbnN0YW5jZSBvZiB0aGlzIHByb3BlcnR5LCB0b28uIE5pY2UuDQogICAgICAgICR0aGlzLT52YWxfZGVmYXVsdCA9IHJmYzI0NDVfZ3VpZCgpOw0KICAgIH0NCn0NCg0KLy8gNC44LjUgUmVjdXJyZW5jZSBDb21wb25lbnQgUHJvcGVydGllcw0KLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQpjbGFzcyBpQ2FsZW5kYXJfcHJvcGVydHlfZXhkYXRlIGV4dGVuZHMgaUNhbGVuZGFyX3Byb3BlcnR5IHsNCg0KICAgIHZhciAkbmFtZSAgICAgICAgPSAnRVhEQVRFJzsNCiAgICB2YXIgJHZhbF90eXBlICAgID0gUkZDMjQ0NV9UWVBFX0RBVEVfVElNRTsNCiAgICB2YXIgJHZhbF9tdWx0aSAgID0gdHJ1ZTsNCg0KICAgIGZ1bmN0aW9uIGNvbnN0cnVjdCgpIHsNCiAgICAgICAgJHRoaXMtPnZhbGlkX3BhcmFtZXRlcnMgPSBhcnJheSgNCiAgICAgICAgICAgICdUWklEJyAgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdWQUxVRScgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgIFJGQzI0NDVfWE5BTUUgPT4gUkZDMjQ0NV9PUFRJT05BTA0KICAgICAgICApOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGlzX3ZhbGlkX3BhcmFtZXRlcigkcGFyYW1ldGVyLCAkdmFsdWUpIHsNCg0KICAgICAgICAkcGFyYW1ldGVyID0gc3RydG91cHBlcigkcGFyYW1ldGVyKTsNCg0KICAgICAgICBpZighcGFyZW50Ojppc192YWxpZF9wYXJhbWV0ZXIoJHBhcmFtZXRlciwgJHZhbHVlKSkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIGlmKCRwYXJhbWV0ZXIgPT0gJ1ZBTFVFJyAmJiAhKCR2YWx1ZSA9PSAnREFURScgfHwgJHZhbHVlID09ICdEQVRFLVRJTUUnKSkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQp9DQoNCmNsYXNzIGlDYWxlbmRhcl9wcm9wZXJ0eV9leHJ1bGUgZXh0ZW5kcyBpQ2FsZW5kYXJfcHJvcGVydHkgew0KDQogICAgdmFyICRuYW1lICAgICAgICA9ICdFWFJVTEUnOw0KICAgIHZhciAkdmFsX3R5cGUgICAgPSBSRkMyNDQ1X1RZUEVfUkVDVVI7DQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgICR0aGlzLT52YWxpZF9wYXJhbWV0ZXJzID0gYXJyYXkoDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCiAgICB9DQp9DQoNCmNsYXNzIGlDYWxlbmRhcl9wcm9wZXJ0eV9yZGF0ZSBleHRlbmRzIGlDYWxlbmRhcl9wcm9wZXJ0eSB7DQoNCiAgICB2YXIgJG5hbWUgICAgICAgID0gJ1JEQVRFJzsNCiAgICB2YXIgJHZhbF90eXBlICAgID0gUkZDMjQ0NV9UWVBFX0RBVEVfVElNRTsNCiAgICB2YXIgJHZhbF9tdWx0aSAgID0gdHJ1ZTsNCg0KICAgIGZ1bmN0aW9uIGNvbnN0cnVjdCgpIHsNCiAgICAgICAgJHRoaXMtPnZhbGlkX3BhcmFtZXRlcnMgPSBhcnJheSgNCiAgICAgICAgICAgICdUWklEJyAgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgICdWQUxVRScgICAgICAgPT4gUkZDMjQ0NV9PUFRJT05BTCB8IFJGQzI0NDVfT05DRSwNCiAgICAgICAgICAgIFJGQzI0NDVfWE5BTUUgPT4gUkZDMjQ0NV9PUFRJT05BTA0KICAgICAgICApOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIGlzX3ZhbGlkX3BhcmFtZXRlcigkcGFyYW1ldGVyLCAkdmFsdWUpIHsNCg0KICAgICAgICAkcGFyYW1ldGVyID0gc3RydG91cHBlcigkcGFyYW1ldGVyKTsNCg0KICAgICAgICBpZighcGFyZW50Ojppc192YWxpZF9wYXJhbWV0ZXIoJHBhcmFtZXRlciwgJHZhbHVlKSkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIGlmKCRwYXJhbWV0ZXIgPT0gJ1ZBTFVFJyAmJiAhKCR2YWx1ZSA9PSAnREFURScgfHwgJHZhbHVlID09ICdEQVRFLVRJTUUnIHx8ICR2YWx1ZSA9PSAnUEVSSU9EJykpIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiB0cnVlOw0KICAgIH0NCg0KfQ0KDQpjbGFzcyBpQ2FsZW5kYXJfcHJvcGVydHlfcnJ1bGUgZXh0ZW5kcyBpQ2FsZW5kYXJfcHJvcGVydHkgew0KDQogICAgdmFyICRuYW1lICAgICAgICA9ICdSUlVMRSc7DQogICAgdmFyICR2YWxfdHlwZSAgICA9IFJGQzI0NDVfVFlQRV9SRUNVUjsNCg0KICAgIGZ1bmN0aW9uIGNvbnN0cnVjdCgpIHsNCiAgICAgICAgJHRoaXMtPnZhbGlkX3BhcmFtZXRlcnMgPSBhcnJheSgNCiAgICAgICAgICAgIFJGQzI0NDVfWE5BTUUgPT4gUkZDMjQ0NV9PUFRJT05BTA0KICAgICAgICApOw0KICAgIH0NCn0NCg0KLy8gVE9ETzogNC44LjYgQWxhcm0gQ29tcG9uZW50IFByb3BlcnRpZXMNCg0KLy8gNC44LjcgQ2hhbmdlIE1hbmFnZW1lbnQgQ29tcG9uZW50IFByb3BlcnRpZXMNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCmNsYXNzIGlDYWxlbmRhcl9wcm9wZXJ0eV9jcmVhdGVkIGV4dGVuZHMgaUNhbGVuZGFyX3Byb3BlcnR5IHsNCg0KICAgIHZhciAkbmFtZSAgICAgICAgPSAnQ1JFQVRFRCc7DQogICAgdmFyICR2YWxfdHlwZSAgICA9IFJGQzI0NDVfVFlQRV9EQVRFX1RJTUU7DQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgICR0aGlzLT52YWxpZF9wYXJhbWV0ZXJzID0gYXJyYXkoDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBpc192YWxpZF92YWx1ZSgkdmFsdWUpIHsNCiAgICAgICAgaWYoIXBhcmVudDo6aXNfdmFsaWRfdmFsdWUoJHZhbHVlKSkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIC8vIFRpbWUgTVVTVCBiZSBpbiBVVEMgZm9ybWF0DQogICAgICAgIHJldHVybihzdWJzdHIoJHZhbHVlLCAtMSkgPT0gJ1onKTsNCiAgICB9DQp9DQoNCmNsYXNzIGlDYWxlbmRhcl9wcm9wZXJ0eV9kdHN0YW1wIGV4dGVuZHMgaUNhbGVuZGFyX3Byb3BlcnR5IHsNCg0KICAgIHZhciAkbmFtZSAgICAgICAgPSAnRFRTVEFNUCc7DQogICAgdmFyICR2YWxfdHlwZSAgICA9IFJGQzI0NDVfVFlQRV9EQVRFX1RJTUU7DQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgICR0aGlzLT52YWxpZF9wYXJhbWV0ZXJzID0gYXJyYXkoDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBpc192YWxpZF92YWx1ZSgkdmFsdWUpIHsNCiAgICAgICAgaWYoIXBhcmVudDo6aXNfdmFsaWRfdmFsdWUoJHZhbHVlKSkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIC8vIFRpbWUgTVVTVCBiZSBpbiBVVEMgZm9ybWF0DQogICAgICAgIHJldHVybihzdWJzdHIoJHZhbHVlLCAtMSkgPT0gJ1onKTsNCiAgICB9DQp9DQoNCmNsYXNzIGlDYWxlbmRhcl9wcm9wZXJ0eV9sYXN0X21vZGlmaWVkIGV4dGVuZHMgaUNhbGVuZGFyX3Byb3BlcnR5IHsNCg0KICAgIHZhciAkbmFtZSAgICAgICAgPSAnTEFTVC1NT0RJRklFRCc7DQogICAgdmFyICR2YWxfdHlwZSAgICA9IFJGQzI0NDVfVFlQRV9EQVRFX1RJTUU7DQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgICR0aGlzLT52YWxpZF9wYXJhbWV0ZXJzID0gYXJyYXkoDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBpc192YWxpZF92YWx1ZSgkdmFsdWUpIHsNCiAgICAgICAgaWYoIXBhcmVudDo6aXNfdmFsaWRfdmFsdWUoJHZhbHVlKSkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgIC8vIFRpbWUgTVVTVCBiZSBpbiBVVEMgZm9ybWF0DQogICAgICAgIHJldHVybihzdWJzdHIoJHZhbHVlLCAtMSkgPT0gJ1onKTsNCiAgICB9DQp9DQoNCmNsYXNzIGlDYWxlbmRhcl9wcm9wZXJ0eV9zZXF1ZW5jZSBleHRlbmRzIGlDYWxlbmRhcl9wcm9wZXJ0eSB7DQoNCiAgICB2YXIgJG5hbWUgICAgICAgID0gJ1NFUVVFTkNFJzsNCiAgICB2YXIgJHZhbF90eXBlICAgID0gUkZDMjQ0NV9UWVBFX0lOVEVHRVI7DQogICAgdmFyICR2YWxfZGVmYXVsdCA9IDA7DQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgICR0aGlzLT52YWxpZF9wYXJhbWV0ZXJzID0gYXJyYXkoDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBpc192YWxpZF92YWx1ZSgkdmFsdWUpIHsNCiAgICAgICAgaWYoIXBhcmVudDo6aXNfdmFsaWRfdmFsdWUoJHZhbHVlKSkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQogICAgICAgICR2YWx1ZSA9IGludHZhbCgkdmFsdWUpOw0KICAgICAgICByZXR1cm4gKCR2YWx1ZSA+PSAwKTsNCiAgICB9DQp9DQoNCi8vIDQuOC44IE1pc2NlbGxhbmVvdXMgQ29tcG9uZW50IFByb3BlcnRpZXMNCi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KY2xhc3MgaUNhbGVuZGFyX3Byb3BlcnR5X3ggZXh0ZW5kcyBpQ2FsZW5kYXJfcHJvcGVydHkgew0KDQogICAgdmFyICRuYW1lICAgICAgICA9IFJGQzI0NDVfWE5BTUU7DQogICAgdmFyICR2YWxfdHlwZSAgICA9IE5VTEw7DQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgICR0aGlzLT52YWxpZF9wYXJhbWV0ZXJzID0gYXJyYXkoDQogICAgICAgICAgICAnTEFOR1VBR0UnICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBzZXRfbmFtZSgkbmFtZSkgew0KDQogICAgICAgICRuYW1lID0gc3RydG91cHBlcigkbmFtZSk7DQoNCiAgICAgICAgaWYocmZjMjQ0NV9pc194bmFtZSgkbmFtZSkpIHsNCiAgICAgICAgICAgICR0aGlzLT5uYW1lID0gJG5hbWU7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQp9DQoNCmNsYXNzIGlDYWxlbmRhcl9wcm9wZXJ0eV9yZXF1ZXN0X3N0YXR1cyBleHRlbmRzIGlDYWxlbmRhcl9wcm9wZXJ0eSB7DQoNCiAgICAvLyBJTVBPUlRBTlQgTk9URTogVGhpcyBwcm9wZXJ0eSB2YWx1ZSBpbmNsdWRlcyBURVhUIGZpZWxkcw0KICAgIC8vIHNlcGFyYXRlZCBieSBzZW1pY29sb25zLiBVbmZvcnR1bmF0ZWx5LCBhdXRvLXZhbHVlLWZvcm1hdHRpbmcNCiAgICAvLyBjYW5ub3QgYmUgdXNlZCBpbiB0aGlzIGNhc2UuIEFzIGFuIGV4Y2VwdGlvbiwgdGhlIHZhbHVlIHBhc3NlZA0KICAgIC8vIHRvIHRoaXMgcHJvcGVydHkgTVVTVCBiZSBhbHJlYWR5IGVzY2FwZWQuDQoNCiAgICB2YXIgJG5hbWUgICAgICAgID0gJ1JFUVVFU1QtU1RBVFVTJzsNCiAgICB2YXIgJHZhbF90eXBlICAgID0gUkZDMjQ0NV9UWVBFX1RFWFQ7DQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgICR0aGlzLT52YWxpZF9wYXJhbWV0ZXJzID0gYXJyYXkoDQogICAgICAgICAgICAnTEFOR1VBR0UnICAgID0+IFJGQzI0NDVfT1BUSU9OQUwgfCBSRkMyNDQ1X09OQ0UsDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiBpc192YWxpZF92YWx1ZSgkdmFsdWUpIHsNCiAgICAgICAgaWYoIWlzX3N0cmluZygkdmFsdWUpIHx8IGVtcHR5KCR2YWx1ZSkpIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgICRsZW4gICA9IHN0cmxlbigkdmFsdWUpOw0KICAgICAgICAkcGFydHMgPSBhcnJheSgpOw0KICAgICAgICAkZnJvbSAgPSAwOw0KICAgICAgICAkZXNjY2ggPSBmYWxzZTsNCg0KICAgICAgICBmb3IoJGkgPSAwOyAkaSA8ICRsZW47ICsrJGkpIHsNCiAgICAgICAgICAgIGlmKCR2YWx1ZXskaX0gPT0gJzsnICYmICEkZXNjY2gpIHsNCiAgICAgICAgICAgICAgICAvLyBUb2tlbiBjb21wbGV0ZWQNCiAgICAgICAgICAgICAgICAkcGFydHNbXSA9IHN1YnN0cigkdmFsdWUsICRmcm9tLCAkaSAtICRmcm9tKTsNCiAgICAgICAgICAgICAgICAkZnJvbSA9ICRpICsgMTsNCiAgICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICRlc2NjaCA9ICgkdmFsdWV7JGl9ID09ICdcXCcpOw0KICAgICAgICB9DQogICAgICAgIC8vIEFkZCBvbmUgbGFzdCB0b2tlbiB3aXRoIHRoZSByZW1haW5pbmcgdGV4dDsgaWYgdGhlIHZhbHVlDQogICAgICAgIC8vIGVuZGVkIHdpdGggYSAnOycgaXQgd2FzIGlsbGVnYWwsIHNvIGNoZWNrIHRoYXQgdGhpcyB0b2tlbg0KICAgICAgICAvLyBpcyBub3QgdGhlIGVtcHR5IHN0cmluZy4NCiAgICAgICAgJHBhcnRzW10gPSBzdWJzdHIoJHZhbHVlLCAkZnJvbSk7DQoNCiAgICAgICAgJGNvdW50ID0gY291bnQoJHBhcnRzKTsNCg0KICAgICAgICAvLyBNYXkgaGF2ZSAyIG9yIDMgdG9rZW5zIChsYXN0IG9uZSBpcyBvcHRpb25hbCkNCiAgICAgICAgaWYoJGNvdW50ICE9IDIgJiYgJGNvdW50ICE9IDMpIHsNCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIFJFTUVNQkVSOiBpZiBBTlkgcGFydCBpcyBlbXB0eSwgd2UgaGF2ZSBhbiBpbGxlZ2FsIHZhbHVlDQoNCiAgICAgICAgLy8gRmlyc3QgdG9rZW4gbXVzdCBiZSBoaWVyYXJjaGljYWwgbnVtZXJpYyBzdGF0dXMgKDMgbGV2ZWxzIG1heCkNCiAgICAgICAgaWYoc3RybGVuKCRwYXJ0c1swXSkgPT0gMCkgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYoJHBhcnRzWzBdezB9IDwgJzEnIHx8ICRwYXJ0c1swXXswfSA+ICc0Jykgew0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9DQoNCiAgICAgICAgJGxlbiA9IHN0cmxlbigkcGFydHNbMF0pOw0KDQogICAgICAgIC8vIE1heCAzIGxldmVscywgYW5kIGNhbid0IGVuZCB3aXRoIGEgcGVyaW9kDQogICAgICAgIGlmKCRsZW4gPiA1IHx8ICRwYXJ0c1swXXskbGVuIC0gMX0gPT0gJy4nKSB7DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIH0NCg0KICAgICAgICBmb3IoJGkgPSAxOyAkaSA8ICRsZW47ICsrJGkpIHsNCiAgICAgICAgICAgIGlmKCgkaSAmIDEpID09IDEgJiYgJHBhcnRzWzBdeyRpfSAhPSAnLicpIHsNCiAgICAgICAgICAgICAgICAvLyBFdmVuLWluZGV4ZWQgY2hhcnMgbXVzdCBiZSBwZXJpb2RzDQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSBpZigoJGkgJiAxKSA9PSAwICYmICgkcGFydHNbMF17JGl9IDwgJzAnIHx8ICRwYXJ0c1swXXskaX0gPiAnOScpKSB7DQogICAgICAgICAgICAgICAgLy8gT2RkLWluZGV4ZWQgY2hhcnMgbXVzdCBiZSBudW1iZXJzDQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgLy8gU2Vjb25kIGFuZCB0aGlyZCB0b2tlbnMgbXVzdCBiZSBURVhULCBhbmQgYWxyZWFkeSBlc2NhcGVkLCBzbw0KICAgICAgICAvLyB0aGV5IGFyZSBub3QgYWxsb3dlZCB0byBoYXZlIFVORVNDQVBFRCBzZW1pY29sb25zLCBjb21tYXMsIHNsYXNoZXMsDQogICAgICAgIC8vIG9yIGFueSBuZXdsaW5lcyBhdCBhbGwNCg0KICAgICAgICBmb3IoJGkgPSAxOyAkaSA8ICRjb3VudDsgKyskaSkgew0KICAgICAgICAgICAgaWYoc3RycG9zKCRwYXJ0c1skaV0sICJcbiIpICE9PSBmYWxzZSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgJGxlbiA9IHN0cmxlbigkcGFydHNbJGldKTsNCiAgICAgICAgICAgIGlmKCRsZW4gPT0gMCkgew0KICAgICAgICAgICAgICAgIC8vIENhbm5vdCBiZSBlbXB0eQ0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgJHBhcnRzWyRpXSAuPSAnIyc7IC8vIFRoaXMgZ3VhcmQgdG9rZW4gc2F2ZXMgc29tZSBjb25kaXRpb25hbHMgaW4gdGhlIGxvb3ANCg0KICAgICAgICAgICAgZm9yKCRqID0gMDsgJGogPCAkbGVuOyArKyRqKSB7DQogICAgICAgICAgICAgICAgJHRoaXNjaGFyID0gJHBhcnRzWyRpXXskan07DQogICAgICAgICAgICAgICAgJG5leHRjaGFyID0gJHBhcnRzWyRpXXskaiArIDF9Ow0KICAgICAgICAgICAgICAgIGlmKCR0aGlzY2hhciA9PSAnXFwnKSB7DQogICAgICAgICAgICAgICAgICAgIC8vIE5leHQgY2hhciBtdXN0IG5vdyBiZSBvbmUgb2YgIjssXG5OIg0KICAgICAgICAgICAgICAgICAgICBpZigkbmV4dGNoYXIgIT0gJzsnICYmICRuZXh0Y2hhciAhPSAnLCcgJiYgJG5leHRjaGFyICE9ICdcXCcgJiYNCiAgICAgICAgICAgICAgICAgICAgICAgJG5leHRjaGFyICE9ICduJyAmJiAkbmV4dGNoYXIgIT0gJ04nKSB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAvLyBPSywgdGhpcyBlc2NhcGVkIHNlcXVlbmNlIGlzIGNvcnJlY3QsIGJ5cGFzcyBuZXh0IGNoYXINCiAgICAgICAgICAgICAgICAgICAgKyskajsNCiAgICAgICAgICAgICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmKCR0aGlzY2hhciA9PSAnOycgfHwgJHRoaXNjaGFyID09ICcsJyB8fCAkdGhpc2NoYXIgPT0gJ1xcJykgew0KICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHdhc24ndCBlc2NhcGVkIGFzIGl0IHNob3VsZA0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgZnVuY3Rpb24gc2V0X3ZhbHVlKCR2YWx1ZSkgew0KICAgICAgICAvLyBNdXN0IG92ZXJyaWRlIHRoaXMsIG90aGVyd2lzZSB0aGUgdmFsdWUgd291bGQgYmUgcXVvdGVkIGFnYWluDQogICAgICAgIGlmKCR0aGlzLT5pc192YWxpZF92YWx1ZSgkdmFsdWUpKSB7DQogICAgICAgICAgICAkdGhpcy0+dmFsdWUgPSAkdmFsdWU7DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiBmYWxzZTsNCiAgICB9DQoNCn0NCg0KDQojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLyoNCmNsYXNzIGlDYWxlbmRhcl9wcm9wZXJ0eV9jbGFzcyBleHRlbmRzIGlDYWxlbmRhcl9wcm9wZXJ0eSB7DQoNCiAgICB2YXIgJG5hbWUgICAgICAgID0gJ0NMQVNTJzsNCiAgICB2YXIgJHZhbF90eXBlICAgID0gUkZDMjQ0NV9UWVBFX1RFWFQ7DQoNCiAgICBmdW5jdGlvbiBjb25zdHJ1Y3QoKSB7DQogICAgICAgICR0aGlzLT52YWxpZF9wYXJhbWV0ZXJzID0gYXJyYXkoDQogICAgICAgICAgICBSRkMyNDQ1X1hOQU1FID0+IFJGQzI0NDVfT1BUSU9OQUwNCiAgICAgICAgKTsNCiAgICB9DQp9DQoqLw0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/libraries/bennu/lib/iCalendar_rfc2445.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAgLy8gJElkOiBpQ2FsZW5kYXJfcmZjMjQ0NS5waHAsdiAxLjcgMjAwNS8wNy8yMSAyMzoyMzo0OCBkZWZhY2VyIEV4cCAkDQoNCi8qDQoNCiAgIEFsbCBuYW1lcyBvZiBwcm9wZXJ0aWVzLCBwcm9wZXJ0eSBwYXJhbWV0ZXJzLCBlbnVtZXJhdGVkIHByb3BlcnR5DQogICB2YWx1ZXMgYW5kIHByb3BlcnR5IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUuIEhvd2V2ZXIsDQogICBhbGwgb3RoZXIgcHJvcGVydHkgdmFsdWVzIGFyZSBjYXNlLXNlbnNpdGl2ZSwgdW5sZXNzIG90aGVyd2lzZQ0KICAgc3RhdGVkLg0KDQoqLw0KDQpkZWZpbmUoJ1JGQzI0NDVfQ1JMRicsICAgICAgICAgICAgICAgIlxyXG4iKTsNCmRlZmluZSgnUkZDMjQ0NV9XU1AnLCAgICAgICAgICAgICAgICAiXHQgIik7DQpkZWZpbmUoJ1JGQzI0NDVfV0VFS0RBWVMnLCAgICAgICAgICAgJ01PLFRVLFdFLFRILEZSLFNBLFNVJyk7DQpkZWZpbmUoJ1JGQzI0NDVfRk9MREVEX0xJTkVfTEVOR1RIJywgNzUpOw0KDQpkZWZpbmUoJ1JGQzI0NDVfUkVRVUlSRUQnLCAweDAxKTsNCmRlZmluZSgnUkZDMjQ0NV9PUFRJT05BTCcsIDB4MDIpOw0KZGVmaW5lKCdSRkMyNDQ1X09OQ0UnLCAgICAgMHgwNCk7DQoNCmRlZmluZSgnUkZDMjQ0NV9QUk9QX0ZMQUdTJywgICAgICAgMCk7DQpkZWZpbmUoJ1JGQzI0NDVfUFJPUF9UWVBFJywgICAgICAgIDEpOw0KZGVmaW5lKCdSRkMyNDQ1X1BST1BfREVGQVVMVCcsICAgICAyKTsNCg0KZGVmaW5lKCdSRkMyNDQ1X1hOQU1FJywgJ1gtJyk7DQoNCmRlZmluZSgnUkZDMjQ0NV9UWVBFX0JJTkFSWScsICAgICAgIDApOw0KZGVmaW5lKCdSRkMyNDQ1X1RZUEVfQk9PTEVBTicsICAgICAgMSk7DQpkZWZpbmUoJ1JGQzI0NDVfVFlQRV9DQUxfQUREUkVTUycsICAyKTsNCmRlZmluZSgnUkZDMjQ0NV9UWVBFX0RBVEUnLCAgICAgICAgIDMpOw0KZGVmaW5lKCdSRkMyNDQ1X1RZUEVfREFURV9USU1FJywgICAgNCk7DQpkZWZpbmUoJ1JGQzI0NDVfVFlQRV9EVVJBVElPTicsICAgICA1KTsNCmRlZmluZSgnUkZDMjQ0NV9UWVBFX0ZMT0FUJywgICAgICAgIDYpOw0KZGVmaW5lKCdSRkMyNDQ1X1RZUEVfSU5URUdFUicsICAgICAgNyk7DQpkZWZpbmUoJ1JGQzI0NDVfVFlQRV9QRVJJT0QnLCAgICAgICA4KTsNCmRlZmluZSgnUkZDMjQ0NV9UWVBFX1JFQ1VSJywgICAgICAgIDkpOw0KZGVmaW5lKCdSRkMyNDQ1X1RZUEVfVEVYVCcsICAgICAgICAxMCk7DQpkZWZpbmUoJ1JGQzI0NDVfVFlQRV9USU1FJywgICAgICAgIDExKTsNCmRlZmluZSgnUkZDMjQ0NV9UWVBFX1VSSScsICAgICAgICAgMTIpOyAvLyBDQUxfQUREUkVTUyA9PT0gVVJJDQpkZWZpbmUoJ1JGQzI0NDVfVFlQRV9VVENfT0ZGU0VUJywgIDEzKTsNCg0KDQpmdW5jdGlvbiByZmMyNDQ1X2ZvbGQoJHN0cmluZykgew0KICAgIGlmKHN0cmxlbigkc3RyaW5nKSA8PSBSRkMyNDQ1X0ZPTERFRF9MSU5FX0xFTkdUSCkgew0KICAgICAgICByZXR1cm4gJHN0cmluZzsNCiAgICB9DQoNCiAgICAkcmV0dmFsID0gJyc7DQoNCiAgICB3aGlsZShzdHJsZW4oJHN0cmluZykgPiBSRkMyNDQ1X0ZPTERFRF9MSU5FX0xFTkdUSCkgew0KICAgICAgICAkcmV0dmFsIC49IHN1YnN0cigkc3RyaW5nLCAwLCBSRkMyNDQ1X0ZPTERFRF9MSU5FX0xFTkdUSCAtIDEpIC4gUkZDMjQ0NV9DUkxGIC4gJyAnOw0KICAgICAgICAkc3RyaW5nICA9IHN1YnN0cigkc3RyaW5nLCBSRkMyNDQ1X0ZPTERFRF9MSU5FX0xFTkdUSCAtIDEpOw0KICAgIH0NCg0KICAgICRyZXR2YWwgLj0gJHN0cmluZzsNCiAgICANCiAgICByZXR1cm4gJHJldHZhbDsNCg0KfQ0KDQpmdW5jdGlvbiByZmMyNDQ1X3VuZm9sZCgkc3RyaW5nKSB7DQogICAgZm9yKCRpID0gMDsgJGkgPCBzdHJsZW4oUkZDMjQ0NV9XU1ApOyArKyRpKSB7DQogICAgICAgICRzdHJpbmcgPSBzdHJfcmVwbGFjZShSRkMyNDQ1X0NSTEYuc3Vic3RyKFJGQzI0NDVfV1NQLCAkaSwgMSksICcnLCAkc3RyaW5nKTsNCiAgICB9DQoNCiAgICByZXR1cm4gJHN0cmluZzsNCn0NCg0KZnVuY3Rpb24gcmZjMjQ0NV9pc194bmFtZSgkbmFtZSkgew0KDQogICAgLy8gSWYgaXQncyBsZXNzIHRoYW4gMyBjaGFycywgaXQgY2Fubm90IGJlIGxlZ2FsDQogICAgaWYoc3RybGVuKCRuYW1lKSA8IDMpIHsNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCg0KICAgIC8vIElmIGl0IGNvbnRhaW5zIGFuIGlsbGVnYWwgY2hhciBhbnl3aGVyZSwgcmVqZWN0IGl0DQogICAgaWYoc3Ryc3BuKCRuYW1lLCAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVowMTIzNDU2Nzg5LScpICE9IHN0cmxlbigkbmFtZSkpIHsNCiAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgIH0NCg0KICAgIC8vIFRvIGJlIGxlZ2FsLCBpdCBtdXN0IHN0aWxsIHN0YXJ0IHdpdGggIlgtIg0KICAgIHJldHVybiBzdWJzdHIoJG5hbWUsIDAsIDIpID09PSAnWC0nOw0KfQ0KDQpmdW5jdGlvbiByZmMyNDQ1X2lzX3ZhbGlkX3ZhbHVlKCR2YWx1ZSwgJHR5cGUpIHsNCg0KICAgIC8vIFRoaXMgYnJhbmNoIHNob3VsZCBvbmx5IGJlIHRha2VuIHdpdGggeG5hbWUgdmFsdWVzDQogICAgaWYoJHR5cGUgPT09IE5VTEwpIHsNCiAgICAgICAgcmV0dXJuIHRydWU7DQogICAgfQ0KDQogICAgc3dpdGNoKCR0eXBlKSB7DQogICAgICAgIGNhc2UgUkZDMjQ0NV9UWVBFX0NBTF9BRERSRVNTOg0KICAgICAgICBjYXNlIFJGQzI0NDVfVFlQRV9VUkk6DQogICAgICAgICAgICBpZighaXNfc3RyaW5nKCR2YWx1ZSkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICR2YWxpZF9zY2hlbWVzID0gYXJyYXkoJ2Z0cCcsICdodHRwJywgJ2xkYXAnLCAnZ29waGVyJywgJ21haWx0bycsICduZXdzJywgJ25udHAnLCAndGVsbmV0JywgJ3dhaXMnLCAnZmlsZScsICdwcm9zcGVybycpOw0KDQogICAgICAgICAgICAkcG9zID0gc3RycG9zKCR2YWx1ZSwgJzonKTsNCiAgICAgICAgICAgIGlmKCEkcG9zKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KICAgICAgICANCiAgICAgICAgICAgICRzY2hlbWUgPSBzdHJ0b2xvd2VyKHN1YnN0cigkdmFsdWUsIDAsICRwb3MpKTsNCiAgICAgICAgICAgICRyZW1haW4gPSBzdWJzdHIoJHZhbHVlLCAkcG9zICsgMSk7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmKCFpbl9hcnJheSgkc2NoZW1lLCAkdmFsaWRfc2NoZW1lcykpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAgICAgaWYoJHNjaGVtZSA9PT0gJ21haWx0bycpIHsNCiAgICAgICAgICAgICAgICAkcmVnZXhwID0gJ15bYS16QS1aMC05XStbX2EtekEtWjAtOVwtXSooXC5bX2EtejAtOVwtXSspKkAoKFswLTlhLXpBLVpcLV0rXC4pK1thLXpBLVpdWzAtOWEtekEtWlwtXSt8KFswLTldezEsM31cLil7M31bMC05XXsxLDN9KSQnOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgJHJlZ2V4cCA9ICdeLy8oLisoOi4qKT9AKT8oKFswLTlhLXpBLVpcLV0rXC4pK1thLXpBLVpdWzAtOWEtekEtWlwtXSt8KFswLTldezEsM31cLil7M31bMC05XXsxLDN9KSg6WzAtOV17MSw1fSk/KC8uKik/JCc7DQogICAgICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAgICAgcmV0dXJuIGVyZWcoJHJlZ2V4cCwgJHJlbWFpbik7DQogICAgICAgIGJyZWFrOw0KDQogICAgICAgIGNhc2UgUkZDMjQ0NV9UWVBFX0JJTkFSWToNCiAgICAgICAgICAgIGlmKCFpc19zdHJpbmcoJHZhbHVlKSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgJGxlbiA9IHN0cmxlbigkdmFsdWUpOw0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZigkbGVuICUgNCAhPSAwKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBmb3IoJGkgPSAwOyAkaSA8ICRsZW47ICsrJGkpIHsNCiAgICAgICAgICAgICAgICAkY2ggPSAkdmFsdWV7JGl9Ow0KICAgICAgICAgICAgICAgIGlmKCEoJGNoID49ICdhJyAmJiAkY2ggPD0gJ3onIHx8ICRjaCA+PSAnQScgJiYgJGNoIDw9ICdaJyB8fCAkY2ggPj0gJzAnICYmICRjaCA8PSAnOScgfHwgJGNoID09ICctJyB8fCAkY2ggPT0gJysnKSkgew0KICAgICAgICAgICAgICAgICAgICBpZigkY2ggPT0gJz0nICYmICRsZW4gLSAkaSA8PSAyKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIGJyZWFrOw0KDQogICAgICAgIGNhc2UgUkZDMjQ0NV9UWVBFX0JPT0xFQU46DQogICAgICAgICAgICBpZihpc19ib29sKCR2YWx1ZSkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmKGlzX3N0cmluZygkdmFsdWUpKSB7DQogICAgICAgICAgICAgICAgJHZhbHVlID0gc3RydG91cHBlcigkdmFsdWUpOw0KICAgICAgICAgICAgICAgIHJldHVybiAoJHZhbHVlID09ICdUUlVFJyB8fCAkdmFsdWUgPT0gJ0ZBTFNFJyk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgIGJyZWFrOw0KDQogICAgICAgIGNhc2UgUkZDMjQ0NV9UWVBFX0RBVEU6DQogICAgICAgICAgICBpZihpc19pbnQoJHZhbHVlKSkgew0KICAgICAgICAgICAgICAgIGlmKCR2YWx1ZSA8IDApIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkdmFsdWUgPSAiJHZhbHVlIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UgaWYoIWlzX3N0cmluZygkdmFsdWUpKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZihzdHJsZW4oJHZhbHVlKSAhPSA4KSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAkeSA9IGludHZhbChzdWJzdHIoJHZhbHVlLCAwLCA0KSk7DQogICAgICAgICAgICAkbSA9IGludHZhbChzdWJzdHIoJHZhbHVlLCA0LCAyKSk7DQogICAgICAgICAgICAkZCA9IGludHZhbChzdWJzdHIoJHZhbHVlLCA2LCAyKSk7DQoNCiAgICAgICAgICAgIHJldHVybiBjaGVja2RhdGUoJG0sICRkLCAkeSk7DQogICAgICAgIGJyZWFrOw0KDQogICAgICAgIGNhc2UgUkZDMjQ0NV9UWVBFX0RBVEVfVElNRToNCiAgICAgICAgICAgIGlmKCFpc19zdHJpbmcoJHZhbHVlKSB8fCBzdHJsZW4oJHZhbHVlKSA8IDE1KSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICByZXR1cm4oJHZhbHVlezh9ID09ICdUJyAmJiANCiAgICAgICAgICAgICAgICAgICByZmMyNDQ1X2lzX3ZhbGlkX3ZhbHVlKHN1YnN0cigkdmFsdWUsIDAsIDgpLCBSRkMyNDQ1X1RZUEVfREFURSkgJiYNCiAgICAgICAgICAgICAgICAgICByZmMyNDQ1X2lzX3ZhbGlkX3ZhbHVlKHN1YnN0cigkdmFsdWUsIDkpLCBSRkMyNDQ1X1RZUEVfVElNRSkpOw0KICAgICAgICBicmVhazsNCg0KICAgICAgICBjYXNlIFJGQzI0NDVfVFlQRV9EVVJBVElPTjoNCiAgICAgICAgICAgIGlmKCFpc19zdHJpbmcoJHZhbHVlKSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgJGxlbiA9IHN0cmxlbigkdmFsdWUpOw0KDQogICAgICAgICAgICBpZigkbGVuIDwgMykgew0KICAgICAgICAgICAgICAgIC8vIE1pbmltdW0gY29uZm9ybWFudCBsZW5ndGg6ICJQMVciDQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBpZigkdmFsdWV7MH0gPT0gJysnIHx8ICR2YWx1ZXswfSA9PSAnLScpIHsNCiAgICAgICAgICAgICAgICAkdmFsdWUgPSBzdWJzdHIoJHZhbHVlLCAxKTsNCiAgICAgICAgICAgICAgICAtLSRsZW47IC8vIERvbid0IGZvcmdldCB0byB1cGRhdGUgdGhpcyENCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYoJHZhbHVlezB9ICE9ICdQJykgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gT0ssIG5vdyBicmVhayBpdCB1cA0KICAgICAgICAgICAgJG51bSA9ICcnOw0KICAgICAgICAgICAgJGFsbG93ZWQgPSAnV0RUJzsNCg0KICAgICAgICAgICAgZm9yKCRpID0gMTsgJGkgPCAkbGVuOyArKyRpKSB7DQogICAgICAgICAgICAgICAgJGNoID0gJHZhbHVleyRpfTsNCiAgICAgICAgICAgICAgICBpZigkY2ggPj0gJzAnICYmICRjaCA8PSAnOScpIHsNCiAgICAgICAgICAgICAgICAgICAgJG51bSAuPSAkY2g7DQogICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZihzdHJwb3MoJGFsbG93ZWQsICRjaCkgPT09IGZhbHNlKSB7DQogICAgICAgICAgICAgICAgICAgIC8vIE5vbi1udW1lcmljIGNoYXJhY3RlciB3aGljaCBzaG91bGRuJ3QgYmUgaGVyZQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGlmKCRudW0gPT09ICcnICYmICRjaCAhPSAnVCcpIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gQWxsb3dlZCBub24tbnVtZXJpYyBjaGFyYWN0ZXIsIGJ1dCBubyBkaWdpdHMgY2FtZSBiZWZvcmUgaXQNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIC8vIE9LLCAkY2ggbm93IGhvbGRzIGEgY2hhcmFjdGVyIHdoaWNoIHRlbGxzIHVzIHdoYXQgJG51bSBpcw0KICAgICAgICAgICAgICAgIHN3aXRjaCgkY2gpIHsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnVyc6DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBkdXJhdGlvbiBpbiB3ZWVrcyBpcyBzcGVjaWZpZWQsIHRoaXMgbXVzdCBlbmQgdGhlIHN0cmluZw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgkaSA9PSAkbGVuIC0gMSk7DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KDQogICAgICAgICAgICAgICAgICAgIGNhc2UgJ0QnOg0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGF5cyBzcGVjaWZpZWQsIG5vdyBpZiBhbnl0aGluZyBjb21lcyBhZnRlciBpdCBtdXN0IGJlIGEgJ1QnDQogICAgICAgICAgICAgICAgICAgICAgICAkYWxsb3dlZCA9ICdUJzsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnVCc6DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBTdGFydGluZyB0byBzcGVjaWZ5IHRpbWUsIEggTSBTIGFyZSBub3cgdmFsaWQgZGVsaW1pdGVycw0KICAgICAgICAgICAgICAgICAgICAgICAgJGFsbG93ZWQgPSAnSE1TJzsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnSCc6DQogICAgICAgICAgICAgICAgICAgICAgICAkYWxsb3dlZCA9ICdNJzsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnTSc6DQogICAgICAgICAgICAgICAgICAgICAgICAkYWxsb3dlZCA9ICdTJzsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnUyc6DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKCRpID09ICRsZW4gLSAxKTsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLy8gSWYgd2UgJ3JlIGdvaW5nIHRvIGNvbnRpbnVlLCByZXNldCAkbnVtDQogICAgICAgICAgICAgICAgJG51bSA9ICcnOw0KDQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vICRudW0gaXMga2VwdCBmb3IgdGhpcyByZWFzb246IGlmIHdlICdyZSBoZXJlLCB3ZSByYW4gb3V0IG9mIGNoYXJzDQogICAgICAgICAgICAvLyB0aGVyZWZvcmUgJG51bSBtdXN0IGJlIGVtcHR5IGZvciB0aGUgcGVyaW9kIHRvIGJlIGxlZ2FsDQogICAgICAgICAgICByZXR1cm4gKCRudW0gPT09ICcnICYmICRjaCAhPSAnVCcpOw0KDQogICAgICAgIGJyZWFrOw0KICAgICAgICANCiAgICAgICAgY2FzZSBSRkMyNDQ1X1RZUEVfRkxPQVQ6DQogICAgICAgICAgICBpZihpc19mbG9hdCgkdmFsdWUpKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZighaXNfc3RyaW5nKCR2YWx1ZSkgfHwgJHZhbHVlID09PSAnJykgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgJGRvdCA9IGZhbHNlOw0KICAgICAgICAgICAgJGludCA9IGZhbHNlOw0KICAgICAgICAgICAgJGxlbiA9IHN0cmxlbigkdmFsdWUpOw0KICAgICAgICAgICAgZm9yKCRpID0gMDsgJGkgPCAkbGVuOyArKyRpKSB7DQogICAgICAgICAgICAgICAgc3dpdGNoKCR2YWx1ZXskaX0pIHsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnLSc6IGNhc2UgJysnOg0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gQSBzaWduIGNhbiBvbmx5IGJlIHNlZW4gYXQgcG9zaXRpb24gMCBhbmQgY2Fubm90IGJlIHRoZSBvbmx5IGNoYXINCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRpICE9IDAgfHwgJGxlbiA9PSAxKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgY2FzZSAnLic6DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBBIHNlY29uZCBkb3QgaXMgYW4gZXJyb3INCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYWQgYXQgbGVhc3Qgb25lIGludCBiZWZvcmUgdGhlIGRvdA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoJGRvdCB8fCAhJGludCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICRkb3QgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBhbHNvIHN1cmUgdGhhdCB0aGUgZmxvYXQgZG9lc24ndCBlbmQgd2l0aCBhIGRvdA0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoJGkgPT0gJGxlbiAtIDEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6DQogICAgICAgICAgICAgICAgICAgIGNhc2UgJzUnOiBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzoNCiAgICAgICAgICAgICAgICAgICAgICAgICRpbnQgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFueSBvdGhlciBjaGFyIGlzIGEgbm8tbm8NCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIGJyZWFrOw0KDQogICAgICAgIGNhc2UgUkZDMjQ0NV9UWVBFX0lOVEVHRVI6DQogICAgICAgICAgICBpZihpc19pbnQoJHZhbHVlKSkgew0KICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYoIWlzX3N0cmluZygkdmFsdWUpIHx8ICR2YWx1ZSA9PT0gJycpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmKCR2YWx1ZXswfSA9PSAnKycgfHwgJHZhbHVlezB9ID09ICctJykgew0KICAgICAgICAgICAgICAgIGlmKHN0cmxlbigkdmFsdWUpID09IDEpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkdmFsdWUgPSBzdWJzdHIoJHZhbHVlLCAxKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYoc3Ryc3BuKCR2YWx1ZSwgJzAxMjM0NTY3ODknKSAhPSBzdHJsZW4oJHZhbHVlKSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgcmV0dXJuICgkdmFsdWUgPj0gLTIxNDc0ODM2NDggJiYgJHZhbHVlIDw9IDIxNDc0ODM2NDcpOw0KICAgICAgICBicmVhazsNCg0KICAgICAgICBjYXNlIFJGQzI0NDVfVFlQRV9QRVJJT0Q6DQogICAgICAgICAgICBpZighaXNfc3RyaW5nKCR2YWx1ZSkgfHwgZW1wdHkoJHZhbHVlKSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgJHBhcnRzID0gZXhwbG9kZSgnLycsICR2YWx1ZSk7DQogICAgICAgICAgICBpZihjb3VudCgkcGFydHMpICE9IDIpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmKCFyZmMyNDQ1X2lzX3ZhbGlkX3ZhbHVlKCRwYXJ0c1swXSwgUkZDMjQ0NV9UWVBFX0RBVEVfVElNRSkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIFR3byBsZWdhbCBjYXNlcyBmb3IgdGhlIHNlY29uZCBwYXJ0Og0KICAgICAgICAgICAgaWYocmZjMjQ0NV9pc192YWxpZF92YWx1ZSgkcGFydHNbMV0sIFJGQzI0NDVfVFlQRV9EQVRFX1RJTUUpKSB7DQogICAgICAgICAgICAgICAgLy8gSXQgaGFzIHRvIGJlIGFmdGVyIHRoZSBzdGFydCB0aW1lLCBzbw0KICAgICAgICAgICAgICAgIHJldHVybiAoJHBhcnRzWzFdID4gJHBhcnRzWzBdKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVsc2UgaWYocmZjMjQ0NV9pc192YWxpZF92YWx1ZSgkcGFydHNbMV0sIFJGQzI0NDVfVFlQRV9EVVJBVElPTikpIHsNCiAgICAgICAgICAgICAgICAvLyBUaGUgcGVyaW9kIE1VU1QgTk9UIGJlIG5lZ2F0aXZlDQogICAgICAgICAgICAgICAgcmV0dXJuICgkcGFydHNbMV17MH0gIT0gJy0nKTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gSXQgc2VlbXMgdG8gYmUgaWxsZWdhbA0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICBicmVhazsNCg0KICAgICAgICBjYXNlIFJGQzI0NDVfVFlQRV9SRUNVUjoNCiAgICAgICAgICAgIGlmKCFpc19zdHJpbmcoJHZhbHVlKSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgJHBhcnRzID0gZXhwbG9kZSgnOycsIHN0cnRvdXBwZXIoJHZhbHVlKSk7DQoNCiAgICAgICAgICAgIC8vIEZpcnN0IG9mIGFsbCwgd2UgbmVlZCBhdCBsZWFzdCBhIEZSRVEgYW5kIGEgVU5USUwgb3IgQ09VTlQgcGFydCwgc28uLi4NCiAgICAgICAgICAgIGlmKGNvdW50KCRwYXJ0cykgPCAyKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAvLyBMZXQncyBnZXQgdGhhdCBpbnRvIGEgbW9yZSBlYXNpbHkgY29tcHJlaGVuc2libGUgZm9ybWF0DQogICAgICAgICAgICAkdmFycyA9IGFycmF5KCk7DQogICAgICAgICAgICBmb3JlYWNoKCRwYXJ0cyBhcyAkcGFydCkgew0KDQogICAgICAgICAgICAgICAgJHBpZWNlcyA9IGV4cGxvZGUoJz0nLCAkcGFydCk7DQogICAgICAgICAgICAgICAgLy8gVGhlcmUgbXVzdCBiZSBleGFjdGx5IDIgcGllY2VzLCBlLmcuIEZSRVE9V0VFS0xZDQogICAgICAgICAgICAgICAgaWYoY291bnQoJHBpZWNlcykgIT0gMikgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLy8gSXQncyBpbGxlZ2FsIGZvciBhIHZhcmlhYmxlIHRvIGFwcGVhciB0d2ljZQ0KICAgICAgICAgICAgICAgIGlmKGlzc2V0KCR2YXJzWyRwaWVjZXNbMF1dKSkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgLy8gU291bmRzIGdvb2QNCiAgICAgICAgICAgICAgICAkdmFyc1skcGllY2VzWzBdXSA9ICRwaWVjZXNbMV07DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIE9LLi4uIG5vdyB0byB0ZXN0IGV2ZXJ5dGhpbmcgZWxzZQ0KDQogICAgICAgICAgICAvLyBGUkVRIG11c3QgYmUgdGhlIGZpcnN0IHRoaW5nIGFwcGVhcmluZw0KICAgICAgICAgICAgcmVzZXQoJHZhcnMpOw0KICAgICAgICAgICAgaWYoa2V5KCR2YXJzKSAhPSAnRlJFUScpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIEl0J3MgaWxsZWdhbCB0byBoYXZlIGJvdGggVU5USUwgYW5kIENPVU5UIGFwcGVhcg0KICAgICAgICAgICAgaWYoaXNzZXQoJHZhcnNbJ1VOVElMJ10pICYmIGlzc2V0KCR2YXJzWydDT1VOVCddKSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgLy8gU3BlY2lhbCBjYXNlOiBCWVdFRUtOTyBpcyBvbmx5IHZhbGlkIGZvciBGUkVRPVlFQVJMWQ0KICAgICAgICAgICAgaWYoaXNzZXQoJHZhcnNbJ0JZV0VFS05PJ10pICYmICR2YXJzWydGUkVRJ10gIT0gJ1lFQVJMWScpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZTogQllTRVRQT1MgaXMgb25seSB2YWxpZCBpZiBhbm90aGVyIEJZIG9wdGlvbiBpcyBzcGVjaWZpZWQNCiAgICAgICAgICAgIGlmKGlzc2V0KCR2YXJzWydCWVNFVFBPUyddKSkgew0KICAgICAgICAgICAgICAgICRvcHRpb25zID0gYXJyYXkoJ0JZU0VDT05EJywgJ0JZTUlOVVRFJywgJ0JZSE9VUicsICdCWURBWScsICdCWU1PTlRIREFZJywgJ0JZWUVBUkRBWScsICdCWVdFRUtOTycsICdCWU1PTlRIJyk7DQogICAgICAgICAgICAgICAgJGRlZmluZWQgPSBhcnJheV9rZXlzKCR2YXJzKTsNCiAgICAgICAgICAgICAgICAkY29tbW9uICA9IGFycmF5X2ludGVyc2VjdCgkb3B0aW9ucywgJGRlZmluZWQpOw0KICAgICAgICAgICAgICAgIGlmKGVtcHR5KCRjb21tb24pKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIE9LLCBub3cgc2ltcGx5IGNoZWNrIGlmIGVhY2ggZWxlbWVudCBoYXMgYSB2YWxpZCB2YWx1ZSwNCiAgICAgICAgICAgIC8vIHVuc2V0dGluZyB0aGVtIG9uIHRoZSB3YXkuIElmIGF0IHRoZSBlbmQgdGhlIGFycmF5IHN0aWxsDQogICAgICAgICAgICAvLyBoYXMgc29tZSBlbGVtZW50cywgdGhleSBhcmUgaWxsZWdhbC4NCg0KICAgICAgICAgICAgaWYoJHZhcnNbJ0ZSRVEnXSAhPSAnU0VDT05ETFknICYmICR2YXJzWydGUkVRJ10gIT0gJ01JTlVURUxZJyAmJiAkdmFyc1snRlJFUSddICE9ICdIT1VSTFknICYmIA0KICAgICAgICAgICAgICAgJHZhcnNbJ0ZSRVEnXSAhPSAnREFJTFknICAgICYmICR2YXJzWydGUkVRJ10gIT0gJ1dFRUtMWScgJiYNCiAgICAgICAgICAgICAgICR2YXJzWydGUkVRJ10gIT0gJ01PTlRITFknICAmJiAkdmFyc1snRlJFUSddICE9ICdZRUFSTFknKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdW5zZXQoJHZhcnNbJ0ZSRVEnXSk7DQoNCiAgICAgICAgICAgIC8vIFNldCB0aGlzLCB3ZSBtYXkgbmVlZCBpdCBsYXRlcg0KICAgICAgICAgICAgJHdlZWtkYXlzID0gZXhwbG9kZSgnLCcsIFJGQzI0NDVfV0VFS0RBWVMpOw0KDQogICAgICAgICAgICBpZihpc3NldCgkdmFyc1snVU5USUwnXSkpIHsNCiAgICAgICAgICAgICAgICBpZihyZmMyNDQ1X2lzX3ZhbGlkX3ZhbHVlKCR2YXJzWydVTlRJTCddLCBSRkMyNDQ1X1RZUEVfREFURV9USU1FKSkgew0KICAgICAgICAgICAgICAgICAgICAvLyBUaGUgdGltZSBNVVNUIGJlIGluIFVUQyBmb3JtYXQNCiAgICAgICAgICAgICAgICAgICAgaWYoIShzdWJzdHIoJHZhcnNbJ1VOVElMJ10sIC0xKSA9PSAnWicpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgZWxzZSBpZighcmZjMjQ0NV9pc192YWxpZF92YWx1ZSgkdmFyc1snVU5USUwnXSwgUkZDMjQ0NV9UWVBFX0RBVEVfVElNRSkpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHVuc2V0KCR2YXJzWydVTlRJTCddKTsNCg0KDQogICAgICAgICAgICBpZihpc3NldCgkdmFyc1snQ09VTlQnXSkpIHsNCiAgICAgICAgICAgICAgICBpZihlbXB0eSgkdmFyc1snQ09VTlQnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBhbHNvIGNhdGNoZXMgdGhlIHN0cmluZyAnMCcsIHdoaWNoIG1ha2VzIG5vIHNlbnNlDQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYoc3Ryc3BuKCR2YXJzWydDT1VOVCddLCAnMDEyMzQ1Njc4OScpICE9IHN0cmxlbigkdmFyc1snQ09VTlQnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHVuc2V0KCR2YXJzWydDT1VOVCddKTsNCg0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZihpc3NldCgkdmFyc1snSU5URVJWQUwnXSkpIHsNCiAgICAgICAgICAgICAgICBpZihlbXB0eSgkdmFyc1snSU5URVJWQUwnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBhbHNvIGNhdGNoZXMgdGhlIHN0cmluZyAnMCcsIHdoaWNoIG1ha2VzIG5vIHNlbnNlDQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgaWYoc3Ryc3BuKCR2YXJzWydJTlRFUlZBTCddLCAnMDEyMzQ1Njc4OScpICE9IHN0cmxlbigkdmFyc1snSU5URVJWQUwnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHVuc2V0KCR2YXJzWydJTlRFUlZBTCddKTsNCg0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZihpc3NldCgkdmFyc1snQllTRUNPTkQnXSkpIHsNCiAgICAgICAgICAgICAgICBpZigkdmFyc1snQllTRUNPTkQnXSA9PSAnJykgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIC8vIENvbW1hIGFsc28gYWxsb3dlZA0KICAgICAgICAgICAgICAgIGlmKHN0cnNwbigkdmFyc1snQllTRUNPTkQnXSwgJzAxMjM0NTY3ODksJykgIT0gc3RybGVuKCR2YXJzWydCWVNFQ09ORCddKSkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRzZWNzID0gZXhwbG9kZSgnLCcsICR2YXJzWydCWVNFQ09ORCddKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoKCRzZWNzIGFzICRzZWMpIHsNCiAgICAgICAgICAgICAgICAgICAgaWYoJHNlYyA9PSAnJyB8fCAkc2VjIDwgMCB8fCAkc2VjID4gNTkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHVuc2V0KCR2YXJzWydCWVNFQ09ORCddKTsNCg0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZihpc3NldCgkdmFyc1snQllNSU5VVEUnXSkpIHsNCiAgICAgICAgICAgICAgICBpZigkdmFyc1snQllNSU5VVEUnXSA9PSAnJykgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIC8vIENvbW1hIGFsc28gYWxsb3dlZA0KICAgICAgICAgICAgICAgIGlmKHN0cnNwbigkdmFyc1snQllNSU5VVEUnXSwgJzAxMjM0NTY3ODksJykgIT0gc3RybGVuKCR2YXJzWydCWU1JTlVURSddKSkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICRtaW5zID0gZXhwbG9kZSgnLCcsICR2YXJzWydCWU1JTlVURSddKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoKCRtaW5zIGFzICRtaW4pIHsNCiAgICAgICAgICAgICAgICAgICAgaWYoJG1pbiA9PSAnJyB8fCAkbWluIDwgMCB8fCAkbWluID4gNTkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHVuc2V0KCR2YXJzWydCWU1JTlVURSddKTsNCg0KICAgICAgICAgICAgDQogICAgICAgICAgICBpZihpc3NldCgkdmFyc1snQllIT1VSJ10pKSB7DQogICAgICAgICAgICAgICAgaWYoJHZhcnNbJ0JZSE9VUiddID09ICcnKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgLy8gQ29tbWEgYWxzbyBhbGxvd2VkDQogICAgICAgICAgICAgICAgaWYoc3Ryc3BuKCR2YXJzWydCWUhPVVInXSwgJzAxMjM0NTY3ODksJykgIT0gc3RybGVuKCR2YXJzWydCWUhPVVInXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkaG91cnMgPSBleHBsb2RlKCcsJywgJHZhcnNbJ0JZSE9VUiddKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoKCRob3VycyBhcyAkaG91cikgew0KICAgICAgICAgICAgICAgICAgICBpZigkaG91ciA9PSAnJyB8fCAkaG91ciA8IDAgfHwgJGhvdXIgPiAyMykgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdW5zZXQoJHZhcnNbJ0JZSE9VUiddKTsNCiAgICAgICAgICAgIA0KDQogICAgICAgICAgICBpZihpc3NldCgkdmFyc1snQllEQVknXSkpIHsNCiAgICAgICAgICAgICAgICBpZihlbXB0eSgkdmFyc1snQllEQVknXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgIC8vIEZpcnN0IG9mZiwgc3BsaXQgdXAgYWxsIHZhbHVlcyB3ZSBtYXkgaGF2ZQ0KICAgICAgICAgICAgICAgICRkYXlzID0gZXhwbG9kZSgnLCcsICR2YXJzWydCWURBWSddKTsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICBmb3JlYWNoKCRkYXlzIGFzICRkYXkpIHsNCiAgICAgICAgICAgICAgICAgICAgJGRheXBhcnQgPSBzdWJzdHIoJGRheSwgLTIpOw0KICAgICAgICAgICAgICAgICAgICBpZighaW5fYXJyYXkoJGRheXBhcnQsICR3ZWVrZGF5cykpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIGlmKHN0cmxlbigkZGF5KSA+IDIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICRpbnRwYXJ0ID0gc3Vic3RyKCRkYXksIDAsIHN0cmxlbigkZGF5KSAtIDIpOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYoIXJmYzI0NDVfaXNfdmFsaWRfdmFsdWUoJGludHBhcnQsIFJGQzI0NDVfVFlQRV9JTlRFR0VSKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGludHZhbCgkaW50cGFydCkgPT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHVuc2V0KCR2YXJzWydCWURBWSddKTsNCg0KDQogICAgICAgICAgICBpZihpc3NldCgkdmFyc1snQllNT05USERBWSddKSkgew0KICAgICAgICAgICAgICAgIGlmKGVtcHR5KCR2YXJzWydCWU1PTlRIREFZJ10pKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJG1kYXlzID0gZXhwbG9kZSgnLCcsICR2YXJzWydCWU1PTlRIREFZJ10pOw0KICAgICAgICAgICAgICAgIGZvcmVhY2goJG1kYXlzIGFzICRtZGF5KSB7DQogICAgICAgICAgICAgICAgICAgIGlmKCFyZmMyNDQ1X2lzX3ZhbGlkX3ZhbHVlKCRtZGF5LCBSRkMyNDQ1X1RZUEVfSU5URUdFUikpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAkbWRheSA9IGFicyhpbnR2YWwoJG1kYXkpKTsNCiAgICAgICAgICAgICAgICAgICAgaWYoJG1kYXkgPT0gMCB8fCAkbWRheSA+IDMxKSB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICB1bnNldCgkdmFyc1snQllNT05USERBWSddKTsNCg0KDQogICAgICAgICAgICBpZihpc3NldCgkdmFyc1snQllZRUFSREFZJ10pKSB7DQogICAgICAgICAgICAgICAgaWYoZW1wdHkoJHZhcnNbJ0JZWUVBUkRBWSddKSkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICR5ZGF5cyA9IGV4cGxvZGUoJywnLCAkdmFyc1snQllZRUFSREFZJ10pOw0KICAgICAgICAgICAgICAgIGZvcmVhY2goJHlkYXlzIGFzICR5ZGF5KSB7DQogICAgICAgICAgICAgICAgICAgIGlmKCFyZmMyNDQ1X2lzX3ZhbGlkX3ZhbHVlKCR5ZGF5LCBSRkMyNDQ1X1RZUEVfSU5URUdFUikpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAkeWRheSA9IGFicyhpbnR2YWwoJHlkYXkpKTsNCiAgICAgICAgICAgICAgICAgICAgaWYoJHlkYXkgPT0gMCB8fCAkeWRheSA+IDM2Nikgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdW5zZXQoJHZhcnNbJ0JZWUVBUkRBWSddKTsNCg0KDQogICAgICAgICAgICBpZihpc3NldCgkdmFyc1snQllXRUVLTk8nXSkpIHsNCiAgICAgICAgICAgICAgICBpZihlbXB0eSgkdmFyc1snQllXRUVLTk8nXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkd2Vla25vcyA9IGV4cGxvZGUoJywnLCAkdmFyc1snQllXRUVLTk8nXSk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCgkd2Vla25vcyBhcyAkd2Vla25vKSB7DQogICAgICAgICAgICAgICAgICAgIGlmKCFyZmMyNDQ1X2lzX3ZhbGlkX3ZhbHVlKCR3ZWVrbm8sIFJGQzI0NDVfVFlQRV9JTlRFR0VSKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICR3ZWVrbm8gPSBhYnMoaW50dmFsKCR3ZWVrbm8pKTsNCiAgICAgICAgICAgICAgICAgICAgaWYoJHdlZWtubyA9PSAwIHx8ICR3ZWVrbm8gPiA1Mykgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgdW5zZXQoJHZhcnNbJ0JZV0VFS05PJ10pOw0KDQoNCiAgICAgICAgICAgIGlmKGlzc2V0KCR2YXJzWydCWU1PTlRIJ10pKSB7DQogICAgICAgICAgICAgICAgaWYoZW1wdHkoJHZhcnNbJ0JZTU9OVEgnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAvLyBDb21tYSBhbHNvIGFsbG93ZWQNCiAgICAgICAgICAgICAgICBpZihzdHJzcG4oJHZhcnNbJ0JZTU9OVEgnXSwgJzAxMjM0NTY3ODksJykgIT0gc3RybGVuKCR2YXJzWydCWU1PTlRIJ10pKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJG1vbnRocyA9IGV4cGxvZGUoJywnLCAkdmFyc1snQllNT05USCddKTsNCiAgICAgICAgICAgICAgICBmb3JlYWNoKCRtb250aHMgYXMgJG1vbnRoKSB7DQogICAgICAgICAgICAgICAgICAgIGlmKCRtb250aCA9PSAnJyB8fCAkbW9udGggPCAxIHx8ICRtb250aCA+IDEyKSB7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICB1bnNldCgkdmFyc1snQllNT05USCddKTsNCg0KDQogICAgICAgICAgICBpZihpc3NldCgkdmFyc1snQllTRVRQT1MnXSkpIHsNCiAgICAgICAgICAgICAgICBpZihlbXB0eSgkdmFyc1snQllTRVRQT1MnXSkpIHsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkc2V0cyA9IGV4cGxvZGUoJywnLCAkdmFyc1snQllTRVRQT1MnXSk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCgkc2V0cyBhcyAkc2V0KSB7DQogICAgICAgICAgICAgICAgICAgIGlmKCFyZmMyNDQ1X2lzX3ZhbGlkX3ZhbHVlKCRzZXQsIFJGQzI0NDVfVFlQRV9JTlRFR0VSKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICRzZXQgPSBhYnMoaW50dmFsKCRzZXQpKTsNCiAgICAgICAgICAgICAgICAgICAgaWYoJHNldCA9PSAwIHx8ICRzZXQgPiAzNjYpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIHVuc2V0KCR2YXJzWydCWVNFVFBPUyddKTsNCg0KDQogICAgICAgICAgICBpZihpc3NldCgkdmFyc1snV0tTVCddKSkgew0KICAgICAgICAgICAgICAgIGlmKCFpbl9hcnJheSgkdmFyc1snV0tTVCddLCAkd2Vla2RheXMpKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICB1bnNldCgkdmFyc1snV0tTVCddKTsNCg0KDQogICAgICAgICAgICAvLyBBbnkgcmVtYWluaW5nIHZhcnMgbXVzdCBiZSB4LW5hbWVzDQogICAgICAgICAgICBpZihlbXB0eSgkdmFycykpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgZm9yZWFjaCgkdmFycyBhcyAkbmFtZSA9PiAkdmFyKSB7DQogICAgICAgICAgICAgICAgaWYoIXJmYzI0NDVfaXNfeG5hbWUoJG5hbWUpKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIC8vIEF0IGxhc3QsIGFsbCBpcyBPSyENCiAgICAgICAgICAgIHJldHVybiB0cnVlOw0KDQogICAgICAgIGJyZWFrOw0KDQogICAgICAgIGNhc2UgUkZDMjQ0NV9UWVBFX1RFWFQ6DQogICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgYnJlYWs7DQoNCiAgICAgICAgY2FzZSBSRkMyNDQ1X1RZUEVfVElNRToNCiAgICAgICAgICAgIGlmKGlzX2ludCgkdmFsdWUpKSB7DQogICAgICAgICAgICAgICAgaWYoJHZhbHVlIDwgMCkgew0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICR2YWx1ZSA9ICIkdmFsdWUiOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSBpZighaXNfc3RyaW5nKCR2YWx1ZSkpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmKHN0cmxlbigkdmFsdWUpID09IDcpIHsNCiAgICAgICAgICAgICAgICBpZihzdHJ0b3VwcGVyKHN1YnN0cigkdmFsdWUsIC0xKSkgIT0gJ1onKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJHZhbHVlID0gc3Vic3RyKCR2YWx1ZSwgMCwgNik7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZihzdHJsZW4oJHZhbHVlKSAhPSA2KSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAkaCA9IGludHZhbChzdWJzdHIoJHZhbHVlLCAwLCAyKSk7DQogICAgICAgICAgICAkbSA9IGludHZhbChzdWJzdHIoJHZhbHVlLCAyLCAyKSk7DQogICAgICAgICAgICAkcyA9IGludHZhbChzdWJzdHIoJHZhbHVlLCA0LCAyKSk7DQoNCiAgICAgICAgICAgIHJldHVybiAoJGggPD0gMjMgJiYgJG0gPD0gNTkgJiYgJHMgPD0gNjApOw0KICAgICAgICBicmVhazsNCg0KICAgICAgICBjYXNlIFJGQzI0NDVfVFlQRV9VVENfT0ZGU0VUOg0KICAgICAgICAgICAgaWYoaXNfaW50KCR2YWx1ZSkpIHsNCiAgICAgICAgICAgICAgICBpZigkdmFsdWUgPj0gMCkgew0KICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAiKyR2YWx1ZSI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAkdmFsdWUgPSAiJHZhbHVlIjsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIGlmKCFpc19zdHJpbmcoJHZhbHVlKSkgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgaWYoc3RybGVuKCR2YWx1ZSkgPT0gNykgew0KICAgICAgICAgICAgICAgICRzID0gaW50dmFsKHN1YnN0cigkdmFsdWUsIDUsIDIpKTsNCiAgICAgICAgICAgICAgICAkdmFsdWUgPSBzdWJzdHIoJHZhbHVlLCAwLCA1KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmKHN0cmxlbigkdmFsdWUpICE9IDUgfHwgJHZhbHVlID09ICItMDAwMCIpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgICAgICAgICB9DQoNCiAgICAgICAgICAgIGlmKCR2YWx1ZXswfSAhPSAnKycgJiYgJHZhbHVlezB9ICE9ICctJykgew0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgJGggPSBpbnR2YWwoc3Vic3RyKCR2YWx1ZSwgMSwgMikpOw0KICAgICAgICAgICAgJG0gPSBpbnR2YWwoc3Vic3RyKCR2YWx1ZSwgMywgMikpOw0KDQogICAgICAgICAgICByZXR1cm4gKCRoIDw9IDIzICYmICRtIDw9IDU5ICYmICRzIDw9IDU5KTsNCiAgICAgICAgYnJlYWs7DQogICAgfQ0KDQogICAgLy8gVE9ETzogcmVtb3ZlIHRoaXMgYXNzZXJ0aW9uDQogICAgdHJpZ2dlcl9lcnJvcignYmFkIGNvZGUgcGF0aCcsIEVfVVNFUl9XQVJOSU5HKTsNCiAgICB2YXJfZHVtcCgkdHlwZSk7DQogICAgcmV0dXJuIGZhbHNlOw0KfQ0KDQpmdW5jdGlvbiByZmMyNDQ1X2RvX3ZhbHVlX2Zvcm1hdHRpbmcoJHZhbHVlLCAkdHlwZSkgew0KICAgIC8vIE5vdGU6IHRoaXMgZG9lcyBub3Qgb25seSBkbyBmb3JtYXR0aW5nOyBpdCBhbHNvIGRvZXMgY29udmVyc2lvbiB0byBzdHJpbmchDQogICAgc3dpdGNoKCR0eXBlKSB7DQogICAgICAgIGNhc2UgUkZDMjQ0NV9UWVBFX0NBTF9BRERSRVNTOg0KICAgICAgICBjYXNlIFJGQzI0NDVfVFlQRV9VUkk6DQogICAgICAgICAgICAvLyBFbmNsb3NlIGluIGRvdWJsZSBxdW90ZXMNCiAgICAgICAgICAgICR2YWx1ZSA9ICciJy4kdmFsdWUuJyInOw0KICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSBSRkMyNDQ1X1RZUEVfVEVYVDoNCiAgICAgICAgICAgIC8vIEVzY2FwZSBlbnRpdGllcw0KICAgICAgICAgICAgJHZhbHVlID0gc3RydHIoJHZhbHVlLCBhcnJheSgiXG4iID0+ICdcXG4nLCAnXFwnID0+ICdcXFxcJywgJywnID0+ICdcXCwnLCAnOycgPT4gJ1xcOycpKTsNCiAgICAgICAgYnJlYWs7DQogICAgfQ0KICAgIHJldHVybiAkdmFsdWU7DQp9DQoNCmZ1bmN0aW9uIHJmYzI0NDVfdW5kb192YWx1ZV9mb3JtYXR0aW5nKCR2YWx1ZSwgJHR5cGUpIHsNCiAgICBzd2l0Y2goJHR5cGUpIHsNCiAgICAgICAgY2FzZSBSRkMyNDQ1X1RZUEVfQ0FMX0FERFJFU1M6DQogICAgICAgIGNhc2UgUkZDMjQ0NV9UWVBFX1VSSToNCiAgICAgICAgICAgIC8vIFRyaW0gYmVnaW5uaW5nIGFuZCBlbmQgZG91YmxlIHF1b3RlDQogICAgICAgICAgICAkdmFsdWUgPSBzdWJzdHIoJHZhbHVlLCAxLCBzdHJsZW4oJHZhbHVlKSAtIDIpOw0KICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSBSRkMyNDQ1X1RZUEVfVEVYVDoNCiAgICAgICAgICAgIC8vIFVuZXNjYXBlIGVudGl0aWVzDQogICAgICAgICAgICAkdmFsdWUgPSBzdHJ0cigkdmFsdWUsIGFycmF5KCdcXG4nID0+ICJcbiIsICdcXE4nID0+ICJcbiIsICdcXFxcJyA9PiAnXFwnLCAnXFwsJyA9PiAnLCcsICdcXDsnID0+ICc7JykpOw0KICAgICAgICBicmVhazsNCiAgICB9DQogICAgcmV0dXJuICR2YWx1ZTsNCn0NCg0KLy8gVGhpcyBpcyBjaGVhdGluZzogR1VJRHMgaGF2ZSBub3RoaW5nIHRvIGRvIHdpdGggUkZDIDI0NDUNCg0KZnVuY3Rpb24gcmZjMjQ0NV9ndWlkKCkgew0KICAgIC8vIEltcGxlbWVudGVkIGFzIHBlciB0aGUgTmV0d29yayBXb3JraW5nIEdyb3VwIGRyYWZ0IG9uIFVVSURzIGFuZCBHVUlEcw0KDQogICAgLy8gVGhlc2UgdHdvIG9jdGV0cyBnZXQgc3BlY2lhbCB0cmVhdG1lbnQNCiAgICAkdGltZV9oaV9hbmRfdmVyc2lvbiAgICAgICA9IHNwcmludGYoJyUwMngnLCAoMSA8PCA2KSArIG10X3JhbmQoMCwgMTUpKTsgLy8gMDEwMCBwbHVzIDQgcmFuZG9tIGJpdHMNCiAgICAkY2xvY2tfc2VxX2hpX2FuZF9yZXNlcnZlZCA9IHNwcmludGYoJyUwMngnLCAoMSA8PCA3KSArIG10X3JhbmQoMCwgNjMpKTsgLy8gMTAgcGx1cyA2IHJhbmRvbSBiaXRzDQoNCiAgICAvLyBOZWVkIGFub3RoZXIgMTQgcmFuZG9tIG9jdGVjdHMNCiAgICAkcG9vbCA9ICcnOw0KICAgIGZvcigkaSA9IDA7ICRpIDwgNzsgKyskaSkgew0KICAgICAgICAkcG9vbCAuPSBzcHJpbnRmKCclMDR4JywgbXRfcmFuZCgwLCA2NTUzNSkpOw0KICAgIH0NCg0KICAgIC8vIHRpbWVfbG93ID0gNCBvY3RldHMNCiAgICAkcmFuZG9tICA9IHN1YnN0cigkcG9vbCwgMCwgOCkuJy0nOw0KDQogICAgLy8gdGltZV9taWQgPSAyIG9jdGV0cw0KICAgICRyYW5kb20gLj0gc3Vic3RyKCRwb29sLCA4LCA0KS4nLSc7DQoNCiAgICAvLyB0aW1lX2hpZ2hfYW5kX3ZlcnNpb24gPSAyIG9jdGV0cw0KICAgICRyYW5kb20gLj0gJHRpbWVfaGlfYW5kX3ZlcnNpb24uc3Vic3RyKCRwb29sLCAxMiwgMikuJy0nOw0KDQogICAgLy8gY2xvY2tfc2VxX2hpZ2hfYW5kX3Jlc2VydmVkID0gMSBvY3RldA0KICAgICRyYW5kb20gLj0gJGNsb2NrX3NlcV9oaV9hbmRfcmVzZXJ2ZWQ7DQoNCiAgICAvLyBjbG9ja19zZXFfbG93ID0gMSBvY3RldA0KICAgICRyYW5kb20gLj0gc3Vic3RyKCRwb29sLCAxMywgMikuJy0nOw0KDQogICAgLy8gbm9kZSA9IDYgb2N0ZXRzDQogICAgJHJhbmRvbSAuPSBzdWJzdHIoJHBvb2wsIDE0LCAxMik7DQoNCiAgICByZXR1cm4gJHJhbmRvbTsNCn0NCg0KPz4NCg==]]></data>
	</file>
	<file>
	  <filename>/libraries/bennu/LICENSE.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[CQkgIEdOVSBMRVNTRVIgR0VORVJBTCBQVUJMSUMgTElDRU5TRQ0KCQkgICAgICAgVmVyc2lvbiAyLjEsIEZlYnJ1YXJ5IDE5OTkNCg0KIENvcHlyaWdodCAoQykgMTk5MSwgMTk5OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4NCiAgICAgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0ENCiBFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMNCiBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4NCg0KW1RoaXMgaXMgdGhlIGZpcnN0IHJlbGVhc2VkIHZlcnNpb24gb2YgdGhlIExlc3NlciBHUEwuICBJdCBhbHNvIGNvdW50cw0KIGFzIHRoZSBzdWNjZXNzb3Igb2YgdGhlIEdOVSBMaWJyYXJ5IFB1YmxpYyBMaWNlbnNlLCB2ZXJzaW9uIDIsIGhlbmNlDQogdGhlIHZlcnNpb24gbnVtYmVyIDIuMS5dDQoNCgkJCSAgICBQcmVhbWJsZQ0KDQogIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhcmUgZGVzaWduZWQgdG8gdGFrZSBhd2F5IHlvdXINCmZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBpdC4gIEJ5IGNvbnRyYXN0LCB0aGUgR05VIEdlbmVyYWwgUHVibGljDQpMaWNlbnNlcyBhcmUgaW50ZW5kZWQgdG8gZ3VhcmFudGVlIHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlDQpmcmVlIHNvZnR3YXJlLS10byBtYWtlIHN1cmUgdGhlIHNvZnR3YXJlIGlzIGZyZWUgZm9yIGFsbCBpdHMgdXNlcnMuDQoNCiAgVGhpcyBsaWNlbnNlLCB0aGUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFwcGxpZXMgdG8gc29tZQ0Kc3BlY2lhbGx5IGRlc2lnbmF0ZWQgc29mdHdhcmUgcGFja2FnZXMtLXR5cGljYWxseSBsaWJyYXJpZXMtLW9mIHRoZQ0KRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGFuZCBvdGhlciBhdXRob3JzIHdobyBkZWNpZGUgdG8gdXNlIGl0LiAgWW91DQpjYW4gdXNlIGl0IHRvbywgYnV0IHdlIHN1Z2dlc3QgeW91IGZpcnN0IHRoaW5rIGNhcmVmdWxseSBhYm91dCB3aGV0aGVyDQp0aGlzIGxpY2Vuc2Ugb3IgdGhlIG9yZGluYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgdGhlIGJldHRlcg0Kc3RyYXRlZ3kgdG8gdXNlIGluIGFueSBwYXJ0aWN1bGFyIGNhc2UsIGJhc2VkIG9uIHRoZSBleHBsYW5hdGlvbnMgYmVsb3cuDQoNCiAgV2hlbiB3ZSBzcGVhayBvZiBmcmVlIHNvZnR3YXJlLCB3ZSBhcmUgcmVmZXJyaW5nIHRvIGZyZWVkb20gb2YgdXNlLA0Kbm90IHByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdA0KeW91IGhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZQ0KZm9yIHRoaXMgc2VydmljZSBpZiB5b3Ugd2lzaCk7IHRoYXQgeW91IHJlY2VpdmUgc291cmNlIGNvZGUgb3IgY2FuIGdldA0KaXQgaWYgeW91IHdhbnQgaXQ7IHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIGFuZCB1c2UgcGllY2VzIG9mDQppdCBpbiBuZXcgZnJlZSBwcm9ncmFtczsgYW5kIHRoYXQgeW91IGFyZSBpbmZvcm1lZCB0aGF0IHlvdSBjYW4gZG8NCnRoZXNlIHRoaW5ncy4NCg0KICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkDQpkaXN0cmlidXRvcnMgdG8gZGVueSB5b3UgdGhlc2UgcmlnaHRzIG9yIHRvIGFzayB5b3UgdG8gc3VycmVuZGVyIHRoZXNlDQpyaWdodHMuICBUaGVzZSByZXN0cmljdGlvbnMgdHJhbnNsYXRlIHRvIGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBmb3INCnlvdSBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIGxpYnJhcnkgb3IgaWYgeW91IG1vZGlmeSBpdC4NCg0KICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHRoZSBsaWJyYXJ5LCB3aGV0aGVyIGdyYXRpcw0Kb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBnaXZlIHRoZSByZWNpcGllbnRzIGFsbCB0aGUgcmlnaHRzIHRoYXQgd2UgZ2F2ZQ0KeW91LiAgWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlIHNvdXJjZQ0KY29kZS4gIElmIHlvdSBsaW5rIG90aGVyIGNvZGUgd2l0aCB0aGUgbGlicmFyeSwgeW91IG11c3QgcHJvdmlkZQ0KY29tcGxldGUgb2JqZWN0IGZpbGVzIHRvIHRoZSByZWNpcGllbnRzLCBzbyB0aGF0IHRoZXkgY2FuIHJlbGluayB0aGVtDQp3aXRoIHRoZSBsaWJyYXJ5IGFmdGVyIG1ha2luZyBjaGFuZ2VzIHRvIHRoZSBsaWJyYXJ5IGFuZCByZWNvbXBpbGluZw0KaXQuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkga25vdyB0aGVpciByaWdodHMuDQoNCiAgV2UgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIGEgdHdvLXN0ZXAgbWV0aG9kOiAoMSkgd2UgY29weXJpZ2h0IHRoZQ0KbGlicmFyeSwgYW5kICgyKSB3ZSBvZmZlciB5b3UgdGhpcyBsaWNlbnNlLCB3aGljaCBnaXZlcyB5b3UgbGVnYWwNCnBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBsaWJyYXJ5Lg0KDQogIFRvIHByb3RlY3QgZWFjaCBkaXN0cmlidXRvciwgd2Ugd2FudCB0byBtYWtlIGl0IHZlcnkgY2xlYXIgdGhhdA0KdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoZSBmcmVlIGxpYnJhcnkuICBBbHNvLCBpZiB0aGUgbGlicmFyeSBpcw0KbW9kaWZpZWQgYnkgc29tZW9uZSBlbHNlIGFuZCBwYXNzZWQgb24sIHRoZSByZWNpcGllbnRzIHNob3VsZCBrbm93DQp0aGF0IHdoYXQgdGhleSBoYXZlIGlzIG5vdCB0aGUgb3JpZ2luYWwgdmVyc2lvbiwgc28gdGhhdCB0aGUgb3JpZ2luYWwNCmF1dGhvcidzIHJlcHV0YXRpb24gd2lsbCBub3QgYmUgYWZmZWN0ZWQgYnkgcHJvYmxlbXMgdGhhdCBtaWdodCBiZQ0KaW50cm9kdWNlZCBieSBvdGhlcnMuDQoMDQogIEZpbmFsbHksIHNvZnR3YXJlIHBhdGVudHMgcG9zZSBhIGNvbnN0YW50IHRocmVhdCB0byB0aGUgZXhpc3RlbmNlIG9mDQphbnkgZnJlZSBwcm9ncmFtLiAgV2Ugd2lzaCB0byBtYWtlIHN1cmUgdGhhdCBhIGNvbXBhbnkgY2Fubm90DQplZmZlY3RpdmVseSByZXN0cmljdCB0aGUgdXNlcnMgb2YgYSBmcmVlIHByb2dyYW0gYnkgb2J0YWluaW5nIGENCnJlc3RyaWN0aXZlIGxpY2Vuc2UgZnJvbSBhIHBhdGVudCBob2xkZXIuICBUaGVyZWZvcmUsIHdlIGluc2lzdCB0aGF0DQphbnkgcGF0ZW50IGxpY2Vuc2Ugb2J0YWluZWQgZm9yIGEgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSBtdXN0IGJlDQpjb25zaXN0ZW50IHdpdGggdGhlIGZ1bGwgZnJlZWRvbSBvZiB1c2Ugc3BlY2lmaWVkIGluIHRoaXMgbGljZW5zZS4NCg0KICBNb3N0IEdOVSBzb2Z0d2FyZSwgaW5jbHVkaW5nIHNvbWUgbGlicmFyaWVzLCBpcyBjb3ZlcmVkIGJ5IHRoZQ0Kb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBUaGlzIGxpY2Vuc2UsIHRoZSBHTlUgTGVzc2VyDQpHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhcHBsaWVzIHRvIGNlcnRhaW4gZGVzaWduYXRlZCBsaWJyYXJpZXMsIGFuZA0KaXMgcXVpdGUgZGlmZmVyZW50IGZyb20gdGhlIG9yZGluYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBXZSB1c2UNCnRoaXMgbGljZW5zZSBmb3IgY2VydGFpbiBsaWJyYXJpZXMgaW4gb3JkZXIgdG8gcGVybWl0IGxpbmtpbmcgdGhvc2UNCmxpYnJhcmllcyBpbnRvIG5vbi1mcmVlIHByb2dyYW1zLg0KDQogIFdoZW4gYSBwcm9ncmFtIGlzIGxpbmtlZCB3aXRoIGEgbGlicmFyeSwgd2hldGhlciBzdGF0aWNhbGx5IG9yIHVzaW5nDQphIHNoYXJlZCBsaWJyYXJ5LCB0aGUgY29tYmluYXRpb24gb2YgdGhlIHR3byBpcyBsZWdhbGx5IHNwZWFraW5nIGENCmNvbWJpbmVkIHdvcmssIGEgZGVyaXZhdGl2ZSBvZiB0aGUgb3JpZ2luYWwgbGlicmFyeS4gIFRoZSBvcmRpbmFyeQ0KR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB0aGVyZWZvcmUgcGVybWl0cyBzdWNoIGxpbmtpbmcgb25seSBpZiB0aGUNCmVudGlyZSBjb21iaW5hdGlvbiBmaXRzIGl0cyBjcml0ZXJpYSBvZiBmcmVlZG9tLiAgVGhlIExlc3NlciBHZW5lcmFsDQpQdWJsaWMgTGljZW5zZSBwZXJtaXRzIG1vcmUgbGF4IGNyaXRlcmlhIGZvciBsaW5raW5nIG90aGVyIGNvZGUgd2l0aA0KdGhlIGxpYnJhcnkuDQoNCiAgV2UgY2FsbCB0aGlzIGxpY2Vuc2UgdGhlICJMZXNzZXIiIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYmVjYXVzZSBpdA0KZG9lcyBMZXNzIHRvIHByb3RlY3QgdGhlIHVzZXIncyBmcmVlZG9tIHRoYW4gdGhlIG9yZGluYXJ5IEdlbmVyYWwNClB1YmxpYyBMaWNlbnNlLiAgSXQgYWxzbyBwcm92aWRlcyBvdGhlciBmcmVlIHNvZnR3YXJlIGRldmVsb3BlcnMgTGVzcw0Kb2YgYW4gYWR2YW50YWdlIG92ZXIgY29tcGV0aW5nIG5vbi1mcmVlIHByb2dyYW1zLiAgVGhlc2UgZGlzYWR2YW50YWdlcw0KYXJlIHRoZSByZWFzb24gd2UgdXNlIHRoZSBvcmRpbmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtYW55DQpsaWJyYXJpZXMuICBIb3dldmVyLCB0aGUgTGVzc2VyIGxpY2Vuc2UgcHJvdmlkZXMgYWR2YW50YWdlcyBpbiBjZXJ0YWluDQpzcGVjaWFsIGNpcmN1bXN0YW5jZXMuDQoNCiAgRm9yIGV4YW1wbGUsIG9uIHJhcmUgb2NjYXNpb25zLCB0aGVyZSBtYXkgYmUgYSBzcGVjaWFsIG5lZWQgdG8NCmVuY291cmFnZSB0aGUgd2lkZXN0IHBvc3NpYmxlIHVzZSBvZiBhIGNlcnRhaW4gbGlicmFyeSwgc28gdGhhdCBpdCBiZWNvbWVzDQphIGRlLWZhY3RvIHN0YW5kYXJkLiAgVG8gYWNoaWV2ZSB0aGlzLCBub24tZnJlZSBwcm9ncmFtcyBtdXN0IGJlDQphbGxvd2VkIHRvIHVzZSB0aGUgbGlicmFyeS4gIEEgbW9yZSBmcmVxdWVudCBjYXNlIGlzIHRoYXQgYSBmcmVlDQpsaWJyYXJ5IGRvZXMgdGhlIHNhbWUgam9iIGFzIHdpZGVseSB1c2VkIG5vbi1mcmVlIGxpYnJhcmllcy4gIEluIHRoaXMNCmNhc2UsIHRoZXJlIGlzIGxpdHRsZSB0byBnYWluIGJ5IGxpbWl0aW5nIHRoZSBmcmVlIGxpYnJhcnkgdG8gZnJlZQ0Kc29mdHdhcmUgb25seSwgc28gd2UgdXNlIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4NCg0KICBJbiBvdGhlciBjYXNlcywgcGVybWlzc2lvbiB0byB1c2UgYSBwYXJ0aWN1bGFyIGxpYnJhcnkgaW4gbm9uLWZyZWUNCnByb2dyYW1zIGVuYWJsZXMgYSBncmVhdGVyIG51bWJlciBvZiBwZW9wbGUgdG8gdXNlIGEgbGFyZ2UgYm9keSBvZg0KZnJlZSBzb2Z0d2FyZS4gIEZvciBleGFtcGxlLCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUgR05VIEMgTGlicmFyeSBpbg0Kbm9uLWZyZWUgcHJvZ3JhbXMgZW5hYmxlcyBtYW55IG1vcmUgcGVvcGxlIHRvIHVzZSB0aGUgd2hvbGUgR05VDQpvcGVyYXRpbmcgc3lzdGVtLCBhcyB3ZWxsIGFzIGl0cyB2YXJpYW50LCB0aGUgR05VL0xpbnV4IG9wZXJhdGluZw0Kc3lzdGVtLg0KDQogIEFsdGhvdWdoIHRoZSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBMZXNzIHByb3RlY3RpdmUgb2YgdGhlDQp1c2VycycgZnJlZWRvbSwgaXQgZG9lcyBlbnN1cmUgdGhhdCB0aGUgdXNlciBvZiBhIHByb2dyYW0gdGhhdCBpcw0KbGlua2VkIHdpdGggdGhlIExpYnJhcnkgaGFzIHRoZSBmcmVlZG9tIGFuZCB0aGUgd2hlcmV3aXRoYWwgdG8gcnVuDQp0aGF0IHByb2dyYW0gdXNpbmcgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBMaWJyYXJ5Lg0KDQogIFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kDQptb2RpZmljYXRpb24gZm9sbG93LiAgUGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGENCiJ3b3JrIGJhc2VkIG9uIHRoZSBsaWJyYXJ5IiBhbmQgYSAid29yayB0aGF0IHVzZXMgdGhlIGxpYnJhcnkiLiAgVGhlDQpmb3JtZXIgY29udGFpbnMgY29kZSBkZXJpdmVkIGZyb20gdGhlIGxpYnJhcnksIHdoZXJlYXMgdGhlIGxhdHRlciBtdXN0DQpiZSBjb21iaW5lZCB3aXRoIHRoZSBsaWJyYXJ5IGluIG9yZGVyIHRvIHJ1bi4NCgwNCgkJICBHTlUgTEVTU0VSIEdFTkVSQUwgUFVCTElDIExJQ0VOU0UNCiAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBDT1BZSU5HLCBESVNUUklCVVRJT04gQU5EIE1PRElGSUNBVElPTg0KDQogIDAuIFRoaXMgTGljZW5zZSBBZ3JlZW1lbnQgYXBwbGllcyB0byBhbnkgc29mdHdhcmUgbGlicmFyeSBvciBvdGhlcg0KcHJvZ3JhbSB3aGljaCBjb250YWlucyBhIG5vdGljZSBwbGFjZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXIgb3INCm90aGVyIGF1dGhvcml6ZWQgcGFydHkgc2F5aW5nIGl0IG1heSBiZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YNCnRoaXMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKGFsc28gY2FsbGVkICJ0aGlzIExpY2Vuc2UiKS4NCkVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLg0KDQogIEEgImxpYnJhcnkiIG1lYW5zIGEgY29sbGVjdGlvbiBvZiBzb2Z0d2FyZSBmdW5jdGlvbnMgYW5kL29yIGRhdGENCnByZXBhcmVkIHNvIGFzIHRvIGJlIGNvbnZlbmllbnRseSBsaW5rZWQgd2l0aCBhcHBsaWNhdGlvbiBwcm9ncmFtcw0KKHdoaWNoIHVzZSBzb21lIG9mIHRob3NlIGZ1bmN0aW9ucyBhbmQgZGF0YSkgdG8gZm9ybSBleGVjdXRhYmxlcy4NCg0KICBUaGUgIkxpYnJhcnkiLCBiZWxvdywgcmVmZXJzIHRvIGFueSBzdWNoIHNvZnR3YXJlIGxpYnJhcnkgb3Igd29yaw0Kd2hpY2ggaGFzIGJlZW4gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlc2UgdGVybXMuICBBICJ3b3JrIGJhc2VkIG9uIHRoZQ0KTGlicmFyeSIgbWVhbnMgZWl0aGVyIHRoZSBMaWJyYXJ5IG9yIGFueSBkZXJpdmF0aXZlIHdvcmsgdW5kZXINCmNvcHlyaWdodCBsYXc6IHRoYXQgaXMgdG8gc2F5LCBhIHdvcmsgY29udGFpbmluZyB0aGUgTGlicmFyeSBvciBhDQpwb3J0aW9uIG9mIGl0LCBlaXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25zIGFuZC9vciB0cmFuc2xhdGVkDQpzdHJhaWdodGZvcndhcmRseSBpbnRvIGFub3RoZXIgbGFuZ3VhZ2UuICAoSGVyZWluYWZ0ZXIsIHRyYW5zbGF0aW9uIGlzDQppbmNsdWRlZCB3aXRob3V0IGxpbWl0YXRpb24gaW4gdGhlIHRlcm0gIm1vZGlmaWNhdGlvbiIuKQ0KDQogICJTb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsgZm9yDQptYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBpdC4gIEZvciBhIGxpYnJhcnksIGNvbXBsZXRlIHNvdXJjZSBjb2RlIG1lYW5zDQphbGwgdGhlIHNvdXJjZSBjb2RlIGZvciBhbGwgbW9kdWxlcyBpdCBjb250YWlucywgcGx1cyBhbnkgYXNzb2NpYXRlZA0KaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMsIHBsdXMgdGhlIHNjcmlwdHMgdXNlZCB0byBjb250cm9sIGNvbXBpbGF0aW9uDQphbmQgaW5zdGFsbGF0aW9uIG9mIHRoZSBsaWJyYXJ5Lg0KDQogIEFjdGl2aXRpZXMgb3RoZXIgdGhhbiBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBhcmUgbm90DQpjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZTsgdGhleSBhcmUgb3V0c2lkZSBpdHMgc2NvcGUuICBUaGUgYWN0IG9mDQpydW5uaW5nIGEgcHJvZ3JhbSB1c2luZyB0aGUgTGlicmFyeSBpcyBub3QgcmVzdHJpY3RlZCwgYW5kIG91dHB1dCBmcm9tDQpzdWNoIGEgcHJvZ3JhbSBpcyBjb3ZlcmVkIG9ubHkgaWYgaXRzIGNvbnRlbnRzIGNvbnN0aXR1dGUgYSB3b3JrIGJhc2VkDQpvbiB0aGUgTGlicmFyeSAoaW5kZXBlbmRlbnQgb2YgdGhlIHVzZSBvZiB0aGUgTGlicmFyeSBpbiBhIHRvb2wgZm9yDQp3cml0aW5nIGl0KS4gIFdoZXRoZXIgdGhhdCBpcyB0cnVlIGRlcGVuZHMgb24gd2hhdCB0aGUgTGlicmFyeSBkb2VzDQphbmQgd2hhdCB0aGUgcHJvZ3JhbSB0aGF0IHVzZXMgdGhlIExpYnJhcnkgZG9lcy4NCiAgDQogIDEuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIExpYnJhcnkncw0KY29tcGxldGUgc291cmNlIGNvZGUgYXMgeW91IHJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQNCnlvdSBjb25zcGljdW91c2x5IGFuZCBhcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuDQphcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5OyBrZWVwIGludGFjdA0KYWxsIHRoZSBub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlIGFuZCB0byB0aGUgYWJzZW5jZSBvZiBhbnkNCndhcnJhbnR5OyBhbmQgZGlzdHJpYnV0ZSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlDQpMaWJyYXJ5Lg0KDQogIFlvdSBtYXkgY2hhcmdlIGEgZmVlIGZvciB0aGUgcGh5c2ljYWwgYWN0IG9mIHRyYW5zZmVycmluZyBhIGNvcHksDQphbmQgeW91IG1heSBhdCB5b3VyIG9wdGlvbiBvZmZlciB3YXJyYW50eSBwcm90ZWN0aW9uIGluIGV4Y2hhbmdlIGZvciBhDQpmZWUuDQoMDQogIDIuIFlvdSBtYXkgbW9kaWZ5IHlvdXIgY29weSBvciBjb3BpZXMgb2YgdGhlIExpYnJhcnkgb3IgYW55IHBvcnRpb24NCm9mIGl0LCB0aHVzIGZvcm1pbmcgYSB3b3JrIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCBhbmQgY29weSBhbmQNCmRpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMQ0KYWJvdmUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gbWVldCBhbGwgb2YgdGhlc2UgY29uZGl0aW9uczoNCg0KICAgIGEpIFRoZSBtb2RpZmllZCB3b3JrIG11c3QgaXRzZWxmIGJlIGEgc29mdHdhcmUgbGlicmFyeS4NCg0KICAgIGIpIFlvdSBtdXN0IGNhdXNlIHRoZSBmaWxlcyBtb2RpZmllZCB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcw0KICAgIHN0YXRpbmcgdGhhdCB5b3UgY2hhbmdlZCB0aGUgZmlsZXMgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuDQoNCiAgICBjKSBZb3UgbXVzdCBjYXVzZSB0aGUgd2hvbGUgb2YgdGhlIHdvcmsgdG8gYmUgbGljZW5zZWQgYXQgbm8NCiAgICBjaGFyZ2UgdG8gYWxsIHRoaXJkIHBhcnRpZXMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4NCg0KICAgIGQpIElmIGEgZmFjaWxpdHkgaW4gdGhlIG1vZGlmaWVkIExpYnJhcnkgcmVmZXJzIHRvIGEgZnVuY3Rpb24gb3IgYQ0KICAgIHRhYmxlIG9mIGRhdGEgdG8gYmUgc3VwcGxpZWQgYnkgYW4gYXBwbGljYXRpb24gcHJvZ3JhbSB0aGF0IHVzZXMNCiAgICB0aGUgZmFjaWxpdHksIG90aGVyIHRoYW4gYXMgYW4gYXJndW1lbnQgcGFzc2VkIHdoZW4gdGhlIGZhY2lsaXR5DQogICAgaXMgaW52b2tlZCwgdGhlbiB5b3UgbXVzdCBtYWtlIGEgZ29vZCBmYWl0aCBlZmZvcnQgdG8gZW5zdXJlIHRoYXQsDQogICAgaW4gdGhlIGV2ZW50IGFuIGFwcGxpY2F0aW9uIGRvZXMgbm90IHN1cHBseSBzdWNoIGZ1bmN0aW9uIG9yDQogICAgdGFibGUsIHRoZSBmYWNpbGl0eSBzdGlsbCBvcGVyYXRlcywgYW5kIHBlcmZvcm1zIHdoYXRldmVyIHBhcnQgb2YNCiAgICBpdHMgcHVycG9zZSByZW1haW5zIG1lYW5pbmdmdWwuDQoNCiAgICAoRm9yIGV4YW1wbGUsIGEgZnVuY3Rpb24gaW4gYSBsaWJyYXJ5IHRvIGNvbXB1dGUgc3F1YXJlIHJvb3RzIGhhcw0KICAgIGEgcHVycG9zZSB0aGF0IGlzIGVudGlyZWx5IHdlbGwtZGVmaW5lZCBpbmRlcGVuZGVudCBvZiB0aGUNCiAgICBhcHBsaWNhdGlvbi4gIFRoZXJlZm9yZSwgU3Vic2VjdGlvbiAyZCByZXF1aXJlcyB0aGF0IGFueQ0KICAgIGFwcGxpY2F0aW9uLXN1cHBsaWVkIGZ1bmN0aW9uIG9yIHRhYmxlIHVzZWQgYnkgdGhpcyBmdW5jdGlvbiBtdXN0DQogICAgYmUgb3B0aW9uYWw6IGlmIHRoZSBhcHBsaWNhdGlvbiBkb2VzIG5vdCBzdXBwbHkgaXQsIHRoZSBzcXVhcmUNCiAgICByb290IGZ1bmN0aW9uIG11c3Qgc3RpbGwgY29tcHV0ZSBzcXVhcmUgcm9vdHMuKQ0KDQpUaGVzZSByZXF1aXJlbWVudHMgYXBwbHkgdG8gdGhlIG1vZGlmaWVkIHdvcmsgYXMgYSB3aG9sZS4gIElmDQppZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBMaWJyYXJ5LA0KYW5kIGNhbiBiZSByZWFzb25hYmx5IGNvbnNpZGVyZWQgaW5kZXBlbmRlbnQgYW5kIHNlcGFyYXRlIHdvcmtzIGluDQp0aGVtc2VsdmVzLCB0aGVuIHRoaXMgTGljZW5zZSwgYW5kIGl0cyB0ZXJtcywgZG8gbm90IGFwcGx5IHRvIHRob3NlDQpzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuICBCdXQgd2hlbiB5b3UNCmRpc3RyaWJ1dGUgdGhlIHNhbWUgc2VjdGlvbnMgYXMgcGFydCBvZiBhIHdob2xlIHdoaWNoIGlzIGEgd29yayBiYXNlZA0Kb24gdGhlIExpYnJhcnksIHRoZSBkaXN0cmlidXRpb24gb2YgdGhlIHdob2xlIG11c3QgYmUgb24gdGhlIHRlcm1zIG9mDQp0aGlzIExpY2Vuc2UsIHdob3NlIHBlcm1pc3Npb25zIGZvciBvdGhlciBsaWNlbnNlZXMgZXh0ZW5kIHRvIHRoZQ0KZW50aXJlIHdob2xlLCBhbmQgdGh1cyB0byBlYWNoIGFuZCBldmVyeSBwYXJ0IHJlZ2FyZGxlc3Mgb2Ygd2hvIHdyb3RlDQppdC4NCg0KVGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhpcyBzZWN0aW9uIHRvIGNsYWltIHJpZ2h0cyBvciBjb250ZXN0DQp5b3VyIHJpZ2h0cyB0byB3b3JrIHdyaXR0ZW4gZW50aXJlbHkgYnkgeW91OyByYXRoZXIsIHRoZSBpbnRlbnQgaXMgdG8NCmV4ZXJjaXNlIHRoZSByaWdodCB0byBjb250cm9sIHRoZSBkaXN0cmlidXRpb24gb2YgZGVyaXZhdGl2ZSBvcg0KY29sbGVjdGl2ZSB3b3JrcyBiYXNlZCBvbiB0aGUgTGlicmFyeS4NCg0KSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgTGlicmFyeQ0Kd2l0aCB0aGUgTGlicmFyeSAob3Igd2l0aCBhIHdvcmsgYmFzZWQgb24gdGhlIExpYnJhcnkpIG9uIGEgdm9sdW1lIG9mDQphIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSBkb2VzIG5vdCBicmluZyB0aGUgb3RoZXIgd29yayB1bmRlcg0KdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4NCg0KICAzLiBZb3UgbWF5IG9wdCB0byBhcHBseSB0aGUgdGVybXMgb2YgdGhlIG9yZGluYXJ5IEdOVSBHZW5lcmFsIFB1YmxpYw0KTGljZW5zZSBpbnN0ZWFkIG9mIHRoaXMgTGljZW5zZSB0byBhIGdpdmVuIGNvcHkgb2YgdGhlIExpYnJhcnkuICBUbyBkbw0KdGhpcywgeW91IG11c3QgYWx0ZXIgYWxsIHRoZSBub3RpY2VzIHRoYXQgcmVmZXIgdG8gdGhpcyBMaWNlbnNlLCBzbw0KdGhhdCB0aGV5IHJlZmVyIHRvIHRoZSBvcmRpbmFyeSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAyLA0KaW5zdGVhZCBvZiB0byB0aGlzIExpY2Vuc2UuICAoSWYgYSBuZXdlciB2ZXJzaW9uIHRoYW4gdmVyc2lvbiAyIG9mIHRoZQ0Kb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaGFzIGFwcGVhcmVkLCB0aGVuIHlvdSBjYW4gc3BlY2lmeQ0KdGhhdCB2ZXJzaW9uIGluc3RlYWQgaWYgeW91IHdpc2guKSAgRG8gbm90IG1ha2UgYW55IG90aGVyIGNoYW5nZSBpbg0KdGhlc2Ugbm90aWNlcy4NCgwNCiAgT25jZSB0aGlzIGNoYW5nZSBpcyBtYWRlIGluIGEgZ2l2ZW4gY29weSwgaXQgaXMgaXJyZXZlcnNpYmxlIGZvcg0KdGhhdCBjb3B5LCBzbyB0aGUgb3JkaW5hcnkgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBhbGwNCnN1YnNlcXVlbnQgY29waWVzIGFuZCBkZXJpdmF0aXZlIHdvcmtzIG1hZGUgZnJvbSB0aGF0IGNvcHkuDQoNCiAgVGhpcyBvcHRpb24gaXMgdXNlZnVsIHdoZW4geW91IHdpc2ggdG8gY29weSBwYXJ0IG9mIHRoZSBjb2RlIG9mDQp0aGUgTGlicmFyeSBpbnRvIGEgcHJvZ3JhbSB0aGF0IGlzIG5vdCBhIGxpYnJhcnkuDQoNCiAgNC4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IChvciBhIHBvcnRpb24gb3INCmRlcml2YXRpdmUgb2YgaXQsIHVuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtDQp1bmRlciB0aGUgdGVybXMgb2YgU2VjdGlvbnMgMSBhbmQgMiBhYm92ZSBwcm92aWRlZCB0aGF0IHlvdSBhY2NvbXBhbnkNCml0IHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcgbWFjaGluZS1yZWFkYWJsZSBzb3VyY2UgY29kZSwgd2hpY2gNCm11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgb24gYQ0KbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLg0KDQogIElmIGRpc3RyaWJ1dGlvbiBvZiBvYmplY3QgY29kZSBpcyBtYWRlIGJ5IG9mZmVyaW5nIGFjY2VzcyB0byBjb3B5DQpmcm9tIGEgZGVzaWduYXRlZCBwbGFjZSwgdGhlbiBvZmZlcmluZyBlcXVpdmFsZW50IGFjY2VzcyB0byBjb3B5IHRoZQ0Kc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBzYXRpc2ZpZXMgdGhlIHJlcXVpcmVtZW50IHRvDQpkaXN0cmlidXRlIHRoZSBzb3VyY2UgY29kZSwgZXZlbiB0aG91Z2ggdGhpcmQgcGFydGllcyBhcmUgbm90DQpjb21wZWxsZWQgdG8gY29weSB0aGUgc291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLg0KDQogIDUuIEEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIG5vIGRlcml2YXRpdmUgb2YgYW55IHBvcnRpb24gb2YgdGhlDQpMaWJyYXJ5LCBidXQgaXMgZGVzaWduZWQgdG8gd29yayB3aXRoIHRoZSBMaWJyYXJ5IGJ5IGJlaW5nIGNvbXBpbGVkIG9yDQpsaW5rZWQgd2l0aCBpdCwgaXMgY2FsbGVkIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5Ii4gIFN1Y2ggYQ0Kd29yaywgaW4gaXNvbGF0aW9uLCBpcyBub3QgYSBkZXJpdmF0aXZlIHdvcmsgb2YgdGhlIExpYnJhcnksIGFuZA0KdGhlcmVmb3JlIGZhbGxzIG91dHNpZGUgdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4NCg0KICBIb3dldmVyLCBsaW5raW5nIGEgIndvcmsgdGhhdCB1c2VzIHRoZSBMaWJyYXJ5IiB3aXRoIHRoZSBMaWJyYXJ5DQpjcmVhdGVzIGFuIGV4ZWN1dGFibGUgdGhhdCBpcyBhIGRlcml2YXRpdmUgb2YgdGhlIExpYnJhcnkgKGJlY2F1c2UgaXQNCmNvbnRhaW5zIHBvcnRpb25zIG9mIHRoZSBMaWJyYXJ5KSwgcmF0aGVyIHRoYW4gYSAid29yayB0aGF0IHVzZXMgdGhlDQpsaWJyYXJ5Ii4gIFRoZSBleGVjdXRhYmxlIGlzIHRoZXJlZm9yZSBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZS4NClNlY3Rpb24gNiBzdGF0ZXMgdGVybXMgZm9yIGRpc3RyaWJ1dGlvbiBvZiBzdWNoIGV4ZWN1dGFibGVzLg0KDQogIFdoZW4gYSAid29yayB0aGF0IHVzZXMgdGhlIExpYnJhcnkiIHVzZXMgbWF0ZXJpYWwgZnJvbSBhIGhlYWRlciBmaWxlDQp0aGF0IGlzIHBhcnQgb2YgdGhlIExpYnJhcnksIHRoZSBvYmplY3QgY29kZSBmb3IgdGhlIHdvcmsgbWF5IGJlIGENCmRlcml2YXRpdmUgd29yayBvZiB0aGUgTGlicmFyeSBldmVuIHRob3VnaCB0aGUgc291cmNlIGNvZGUgaXMgbm90Lg0KV2hldGhlciB0aGlzIGlzIHRydWUgaXMgZXNwZWNpYWxseSBzaWduaWZpY2FudCBpZiB0aGUgd29yayBjYW4gYmUNCmxpbmtlZCB3aXRob3V0IHRoZSBMaWJyYXJ5LCBvciBpZiB0aGUgd29yayBpcyBpdHNlbGYgYSBsaWJyYXJ5LiAgVGhlDQp0aHJlc2hvbGQgZm9yIHRoaXMgdG8gYmUgdHJ1ZSBpcyBub3QgcHJlY2lzZWx5IGRlZmluZWQgYnkgbGF3Lg0KDQogIElmIHN1Y2ggYW4gb2JqZWN0IGZpbGUgdXNlcyBvbmx5IG51bWVyaWNhbCBwYXJhbWV0ZXJzLCBkYXRhDQpzdHJ1Y3R1cmUgbGF5b3V0cyBhbmQgYWNjZXNzb3JzLCBhbmQgc21hbGwgbWFjcm9zIGFuZCBzbWFsbCBpbmxpbmUNCmZ1bmN0aW9ucyAodGVuIGxpbmVzIG9yIGxlc3MgaW4gbGVuZ3RoKSwgdGhlbiB0aGUgdXNlIG9mIHRoZSBvYmplY3QNCmZpbGUgaXMgdW5yZXN0cmljdGVkLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQgaXMgbGVnYWxseSBhIGRlcml2YXRpdmUNCndvcmsuICAoRXhlY3V0YWJsZXMgY29udGFpbmluZyB0aGlzIG9iamVjdCBjb2RlIHBsdXMgcG9ydGlvbnMgb2YgdGhlDQpMaWJyYXJ5IHdpbGwgc3RpbGwgZmFsbCB1bmRlciBTZWN0aW9uIDYuKQ0KDQogIE90aGVyd2lzZSwgaWYgdGhlIHdvcmsgaXMgYSBkZXJpdmF0aXZlIG9mIHRoZSBMaWJyYXJ5LCB5b3UgbWF5DQpkaXN0cmlidXRlIHRoZSBvYmplY3QgY29kZSBmb3IgdGhlIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gNi4NCkFueSBleGVjdXRhYmxlcyBjb250YWluaW5nIHRoYXQgd29yayBhbHNvIGZhbGwgdW5kZXIgU2VjdGlvbiA2LA0Kd2hldGhlciBvciBub3QgdGhleSBhcmUgbGlua2VkIGRpcmVjdGx5IHdpdGggdGhlIExpYnJhcnkgaXRzZWxmLg0KDA0KICA2LiBBcyBhbiBleGNlcHRpb24gdG8gdGhlIFNlY3Rpb25zIGFib3ZlLCB5b3UgbWF5IGFsc28gY29tYmluZSBvcg0KbGluayBhICJ3b3JrIHRoYXQgdXNlcyB0aGUgTGlicmFyeSIgd2l0aCB0aGUgTGlicmFyeSB0byBwcm9kdWNlIGENCndvcmsgY29udGFpbmluZyBwb3J0aW9ucyBvZiB0aGUgTGlicmFyeSwgYW5kIGRpc3RyaWJ1dGUgdGhhdCB3b3JrDQp1bmRlciB0ZXJtcyBvZiB5b3VyIGNob2ljZSwgcHJvdmlkZWQgdGhhdCB0aGUgdGVybXMgcGVybWl0DQptb2RpZmljYXRpb24gb2YgdGhlIHdvcmsgZm9yIHRoZSBjdXN0b21lcidzIG93biB1c2UgYW5kIHJldmVyc2UNCmVuZ2luZWVyaW5nIGZvciBkZWJ1Z2dpbmcgc3VjaCBtb2RpZmljYXRpb25zLg0KDQogIFlvdSBtdXN0IGdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIGVhY2ggY29weSBvZiB0aGUgd29yayB0aGF0IHRoZQ0KTGlicmFyeSBpcyB1c2VkIGluIGl0IGFuZCB0aGF0IHRoZSBMaWJyYXJ5IGFuZCBpdHMgdXNlIGFyZSBjb3ZlcmVkIGJ5DQp0aGlzIExpY2Vuc2UuICBZb3UgbXVzdCBzdXBwbHkgYSBjb3B5IG9mIHRoaXMgTGljZW5zZS4gIElmIHRoZSB3b3JrDQpkdXJpbmcgZXhlY3V0aW9uIGRpc3BsYXlzIGNvcHlyaWdodCBub3RpY2VzLCB5b3UgbXVzdCBpbmNsdWRlIHRoZQ0KY29weXJpZ2h0IG5vdGljZSBmb3IgdGhlIExpYnJhcnkgYW1vbmcgdGhlbSwgYXMgd2VsbCBhcyBhIHJlZmVyZW5jZQ0KZGlyZWN0aW5nIHRoZSB1c2VyIHRvIHRoZSBjb3B5IG9mIHRoaXMgTGljZW5zZS4gIEFsc28sIHlvdSBtdXN0IGRvIG9uZQ0Kb2YgdGhlc2UgdGhpbmdzOg0KDQogICAgYSkgQWNjb21wYW55IHRoZSB3b3JrIHdpdGggdGhlIGNvbXBsZXRlIGNvcnJlc3BvbmRpbmcNCiAgICBtYWNoaW5lLXJlYWRhYmxlIHNvdXJjZSBjb2RlIGZvciB0aGUgTGlicmFyeSBpbmNsdWRpbmcgd2hhdGV2ZXINCiAgICBjaGFuZ2VzIHdlcmUgdXNlZCBpbiB0aGUgd29yayAod2hpY2ggbXVzdCBiZSBkaXN0cmlidXRlZCB1bmRlcg0KICAgIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUpOyBhbmQsIGlmIHRoZSB3b3JrIGlzIGFuIGV4ZWN1dGFibGUgbGlua2VkDQogICAgd2l0aCB0aGUgTGlicmFyeSwgd2l0aCB0aGUgY29tcGxldGUgbWFjaGluZS1yZWFkYWJsZSAid29yayB0aGF0DQogICAgdXNlcyB0aGUgTGlicmFyeSIsIGFzIG9iamVjdCBjb2RlIGFuZC9vciBzb3VyY2UgY29kZSwgc28gdGhhdCB0aGUNCiAgICB1c2VyIGNhbiBtb2RpZnkgdGhlIExpYnJhcnkgYW5kIHRoZW4gcmVsaW5rIHRvIHByb2R1Y2UgYSBtb2RpZmllZA0KICAgIGV4ZWN1dGFibGUgY29udGFpbmluZyB0aGUgbW9kaWZpZWQgTGlicmFyeS4gIChJdCBpcyB1bmRlcnN0b29kDQogICAgdGhhdCB0aGUgdXNlciB3aG8gY2hhbmdlcyB0aGUgY29udGVudHMgb2YgZGVmaW5pdGlvbnMgZmlsZXMgaW4gdGhlDQogICAgTGlicmFyeSB3aWxsIG5vdCBuZWNlc3NhcmlseSBiZSBhYmxlIHRvIHJlY29tcGlsZSB0aGUgYXBwbGljYXRpb24NCiAgICB0byB1c2UgdGhlIG1vZGlmaWVkIGRlZmluaXRpb25zLikNCg0KICAgIGIpIFVzZSBhIHN1aXRhYmxlIHNoYXJlZCBsaWJyYXJ5IG1lY2hhbmlzbSBmb3IgbGlua2luZyB3aXRoIHRoZQ0KICAgIExpYnJhcnkuICBBIHN1aXRhYmxlIG1lY2hhbmlzbSBpcyBvbmUgdGhhdCAoMSkgdXNlcyBhdCBydW4gdGltZSBhDQogICAgY29weSBvZiB0aGUgbGlicmFyeSBhbHJlYWR5IHByZXNlbnQgb24gdGhlIHVzZXIncyBjb21wdXRlciBzeXN0ZW0sDQogICAgcmF0aGVyIHRoYW4gY29weWluZyBsaWJyYXJ5IGZ1bmN0aW9ucyBpbnRvIHRoZSBleGVjdXRhYmxlLCBhbmQgKDIpDQogICAgd2lsbCBvcGVyYXRlIHByb3Blcmx5IHdpdGggYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCBpZg0KICAgIHRoZSB1c2VyIGluc3RhbGxzIG9uZSwgYXMgbG9uZyBhcyB0aGUgbW9kaWZpZWQgdmVyc2lvbiBpcw0KICAgIGludGVyZmFjZS1jb21wYXRpYmxlIHdpdGggdGhlIHZlcnNpb24gdGhhdCB0aGUgd29yayB3YXMgbWFkZSB3aXRoLg0KDQogICAgYykgQWNjb21wYW55IHRoZSB3b3JrIHdpdGggYSB3cml0dGVuIG9mZmVyLCB2YWxpZCBmb3IgYXQNCiAgICBsZWFzdCB0aHJlZSB5ZWFycywgdG8gZ2l2ZSB0aGUgc2FtZSB1c2VyIHRoZSBtYXRlcmlhbHMNCiAgICBzcGVjaWZpZWQgaW4gU3Vic2VjdGlvbiA2YSwgYWJvdmUsIGZvciBhIGNoYXJnZSBubyBtb3JlDQogICAgdGhhbiB0aGUgY29zdCBvZiBwZXJmb3JtaW5nIHRoaXMgZGlzdHJpYnV0aW9uLg0KDQogICAgZCkgSWYgZGlzdHJpYnV0aW9uIG9mIHRoZSB3b3JrIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkNCiAgICBmcm9tIGEgZGVzaWduYXRlZCBwbGFjZSwgb2ZmZXIgZXF1aXZhbGVudCBhY2Nlc3MgdG8gY29weSB0aGUgYWJvdmUNCiAgICBzcGVjaWZpZWQgbWF0ZXJpYWxzIGZyb20gdGhlIHNhbWUgcGxhY2UuDQoNCiAgICBlKSBWZXJpZnkgdGhhdCB0aGUgdXNlciBoYXMgYWxyZWFkeSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlc2UNCiAgICBtYXRlcmlhbHMgb3IgdGhhdCB5b3UgaGF2ZSBhbHJlYWR5IHNlbnQgdGhpcyB1c2VyIGEgY29weS4NCg0KICBGb3IgYW4gZXhlY3V0YWJsZSwgdGhlIHJlcXVpcmVkIGZvcm0gb2YgdGhlICJ3b3JrIHRoYXQgdXNlcyB0aGUNCkxpYnJhcnkiIG11c3QgaW5jbHVkZSBhbnkgZGF0YSBhbmQgdXRpbGl0eSBwcm9ncmFtcyBuZWVkZWQgZm9yDQpyZXByb2R1Y2luZyB0aGUgZXhlY3V0YWJsZSBmcm9tIGl0LiAgSG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwNCnRoZSBtYXRlcmlhbHMgdG8gYmUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZSBhbnl0aGluZyB0aGF0IGlzDQpub3JtYWxseSBkaXN0cmlidXRlZCAoaW4gZWl0aGVyIHNvdXJjZSBvciBiaW5hcnkgZm9ybSkgd2l0aCB0aGUgbWFqb3INCmNvbXBvbmVudHMgKGNvbXBpbGVyLCBrZXJuZWwsIGFuZCBzbyBvbikgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gb24NCndoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNvbXBvbmVudCBpdHNlbGYgYWNjb21wYW5pZXMNCnRoZSBleGVjdXRhYmxlLg0KDQogIEl0IG1heSBoYXBwZW4gdGhhdCB0aGlzIHJlcXVpcmVtZW50IGNvbnRyYWRpY3RzIHRoZSBsaWNlbnNlDQpyZXN0cmljdGlvbnMgb2Ygb3RoZXIgcHJvcHJpZXRhcnkgbGlicmFyaWVzIHRoYXQgZG8gbm90IG5vcm1hbGx5DQphY2NvbXBhbnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTdWNoIGEgY29udHJhZGljdGlvbiBtZWFucyB5b3UgY2Fubm90DQp1c2UgYm90aCB0aGVtIGFuZCB0aGUgTGlicmFyeSB0b2dldGhlciBpbiBhbiBleGVjdXRhYmxlIHRoYXQgeW91DQpkaXN0cmlidXRlLg0KDA0KICA3LiBZb3UgbWF5IHBsYWNlIGxpYnJhcnkgZmFjaWxpdGllcyB0aGF0IGFyZSBhIHdvcmsgYmFzZWQgb24gdGhlDQpMaWJyYXJ5IHNpZGUtYnktc2lkZSBpbiBhIHNpbmdsZSBsaWJyYXJ5IHRvZ2V0aGVyIHdpdGggb3RoZXIgbGlicmFyeQ0KZmFjaWxpdGllcyBub3QgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHN1Y2ggYSBjb21iaW5lZA0KbGlicmFyeSwgcHJvdmlkZWQgdGhhdCB0aGUgc2VwYXJhdGUgZGlzdHJpYnV0aW9uIG9mIHRoZSB3b3JrIGJhc2VkIG9uDQp0aGUgTGlicmFyeSBhbmQgb2YgdGhlIG90aGVyIGxpYnJhcnkgZmFjaWxpdGllcyBpcyBvdGhlcndpc2UNCnBlcm1pdHRlZCwgYW5kIHByb3ZpZGVkIHRoYXQgeW91IGRvIHRoZXNlIHR3byB0aGluZ3M6DQoNCiAgICBhKSBBY2NvbXBhbnkgdGhlIGNvbWJpbmVkIGxpYnJhcnkgd2l0aCBhIGNvcHkgb2YgdGhlIHNhbWUgd29yaw0KICAgIGJhc2VkIG9uIHRoZSBMaWJyYXJ5LCB1bmNvbWJpbmVkIHdpdGggYW55IG90aGVyIGxpYnJhcnkNCiAgICBmYWNpbGl0aWVzLiAgVGhpcyBtdXN0IGJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUNCiAgICBTZWN0aW9ucyBhYm92ZS4NCg0KICAgIGIpIEdpdmUgcHJvbWluZW50IG5vdGljZSB3aXRoIHRoZSBjb21iaW5lZCBsaWJyYXJ5IG9mIHRoZSBmYWN0DQogICAgdGhhdCBwYXJ0IG9mIGl0IGlzIGEgd29yayBiYXNlZCBvbiB0aGUgTGlicmFyeSwgYW5kIGV4cGxhaW5pbmcNCiAgICB3aGVyZSB0byBmaW5kIHRoZSBhY2NvbXBhbnlpbmcgdW5jb21iaW5lZCBmb3JtIG9mIHRoZSBzYW1lIHdvcmsuDQoNCiAgOC4gWW91IG1heSBub3QgY29weSwgbW9kaWZ5LCBzdWJsaWNlbnNlLCBsaW5rIHdpdGgsIG9yIGRpc3RyaWJ1dGUNCnRoZSBMaWJyYXJ5IGV4Y2VwdCBhcyBleHByZXNzbHkgcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55DQphdHRlbXB0IG90aGVyd2lzZSB0byBjb3B5LCBtb2RpZnksIHN1YmxpY2Vuc2UsIGxpbmsgd2l0aCwgb3INCmRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgaXMgdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91cg0KcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4gIEhvd2V2ZXIsIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzLA0Kb3IgcmlnaHRzLCBmcm9tIHlvdSB1bmRlciB0aGlzIExpY2Vuc2Ugd2lsbCBub3QgaGF2ZSB0aGVpciBsaWNlbnNlcw0KdGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2ggcGFydGllcyByZW1haW4gaW4gZnVsbCBjb21wbGlhbmNlLg0KDQogIDkuIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UsIHNpbmNlIHlvdSBoYXZlIG5vdA0Kc2lnbmVkIGl0LiAgSG93ZXZlciwgbm90aGluZyBlbHNlIGdyYW50cyB5b3UgcGVybWlzc2lvbiB0byBtb2RpZnkgb3INCmRpc3RyaWJ1dGUgdGhlIExpYnJhcnkgb3IgaXRzIGRlcml2YXRpdmUgd29ya3MuICBUaGVzZSBhY3Rpb25zIGFyZQ0KcHJvaGliaXRlZCBieSBsYXcgaWYgeW91IGRvIG5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieQ0KbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgTGlicmFyeSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlDQpMaWJyYXJ5KSwgeW91IGluZGljYXRlIHlvdXIgYWNjZXB0YW5jZSBvZiB0aGlzIExpY2Vuc2UgdG8gZG8gc28sIGFuZA0KYWxsIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW5nIG9yIG1vZGlmeWluZw0KdGhlIExpYnJhcnkgb3Igd29ya3MgYmFzZWQgb24gaXQuDQoNCiAgMTAuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBMaWJyYXJ5IChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUNCkxpYnJhcnkpLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2FsbHkgcmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlDQpvcmlnaW5hbCBsaWNlbnNvciB0byBjb3B5LCBkaXN0cmlidXRlLCBsaW5rIHdpdGggb3IgbW9kaWZ5IHRoZSBMaWJyYXJ5DQpzdWJqZWN0IHRvIHRoZXNlIHRlcm1zIGFuZCBjb25kaXRpb25zLiAgWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyDQpyZXN0cmljdGlvbnMgb24gdGhlIHJlY2lwaWVudHMnIGV4ZXJjaXNlIG9mIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJlaW4uDQpZb3UgYXJlIG5vdCByZXNwb25zaWJsZSBmb3IgZW5mb3JjaW5nIGNvbXBsaWFuY2UgYnkgdGhpcmQgcGFydGllcyB3aXRoDQp0aGlzIExpY2Vuc2UuDQoMDQogIDExLiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50DQppbmZyaW5nZW1lbnQgb3IgZm9yIGFueSBvdGhlciByZWFzb24gKG5vdCBsaW1pdGVkIHRvIHBhdGVudCBpc3N1ZXMpLA0KY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcg0Kb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdA0KZXhjdXNlIHlvdSBmcm9tIHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZS4gIElmIHlvdSBjYW5ub3QNCmRpc3RyaWJ1dGUgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMNCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UNCm1heSBub3QgZGlzdHJpYnV0ZSB0aGUgTGlicmFyeSBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgYSBwYXRlbnQNCmxpY2Vuc2Ugd291bGQgbm90IHBlcm1pdCByb3lhbHR5LWZyZWUgcmVkaXN0cmlidXRpb24gb2YgdGhlIExpYnJhcnkgYnkNCmFsbCB0aG9zZSB3aG8gcmVjZWl2ZSBjb3BpZXMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHlvdSwgdGhlbg0KdGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggaXQgYW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0bw0KcmVmcmFpbiBlbnRpcmVseSBmcm9tIGRpc3RyaWJ1dGlvbiBvZiB0aGUgTGlicmFyeS4NCg0KSWYgYW55IHBvcnRpb24gb2YgdGhpcyBzZWN0aW9uIGlzIGhlbGQgaW52YWxpZCBvciB1bmVuZm9yY2VhYmxlIHVuZGVyIGFueQ0KcGFydGljdWxhciBjaXJjdW1zdGFuY2UsIHRoZSBiYWxhbmNlIG9mIHRoZSBzZWN0aW9uIGlzIGludGVuZGVkIHRvIGFwcGx5LA0KYW5kIHRoZSBzZWN0aW9uIGFzIGEgd2hvbGUgaXMgaW50ZW5kZWQgdG8gYXBwbHkgaW4gb3RoZXIgY2lyY3Vtc3RhbmNlcy4NCg0KSXQgaXMgbm90IHRoZSBwdXJwb3NlIG9mIHRoaXMgc2VjdGlvbiB0byBpbmR1Y2UgeW91IHRvIGluZnJpbmdlIGFueQ0KcGF0ZW50cyBvciBvdGhlciBwcm9wZXJ0eSByaWdodCBjbGFpbXMgb3IgdG8gY29udGVzdCB2YWxpZGl0eSBvZiBhbnkNCnN1Y2ggY2xhaW1zOyB0aGlzIHNlY3Rpb24gaGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgcHJvdGVjdGluZyB0aGUNCmludGVncml0eSBvZiB0aGUgZnJlZSBzb2Z0d2FyZSBkaXN0cmlidXRpb24gc3lzdGVtIHdoaWNoIGlzDQppbXBsZW1lbnRlZCBieSBwdWJsaWMgbGljZW5zZSBwcmFjdGljZXMuICBNYW55IHBlb3BsZSBoYXZlIG1hZGUNCmdlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdpZGUgcmFuZ2Ugb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQNCnRocm91Z2ggdGhhdCBzeXN0ZW0gaW4gcmVsaWFuY2Ugb24gY29uc2lzdGVudCBhcHBsaWNhdGlvbiBvZiB0aGF0DQpzeXN0ZW07IGl0IGlzIHVwIHRvIHRoZSBhdXRob3IvZG9ub3IgdG8gZGVjaWRlIGlmIGhlIG9yIHNoZSBpcyB3aWxsaW5nDQp0byBkaXN0cmlidXRlIHNvZnR3YXJlIHRocm91Z2ggYW55IG90aGVyIHN5c3RlbSBhbmQgYSBsaWNlbnNlZSBjYW5ub3QNCmltcG9zZSB0aGF0IGNob2ljZS4NCg0KVGhpcyBzZWN0aW9uIGlzIGludGVuZGVkIHRvIG1ha2UgdGhvcm91Z2hseSBjbGVhciB3aGF0IGlzIGJlbGlldmVkIHRvDQpiZSBhIGNvbnNlcXVlbmNlIG9mIHRoZSByZXN0IG9mIHRoaXMgTGljZW5zZS4NCg0KICAxMi4gSWYgdGhlIGRpc3RyaWJ1dGlvbiBhbmQvb3IgdXNlIG9mIHRoZSBMaWJyYXJ5IGlzIHJlc3RyaWN0ZWQgaW4NCmNlcnRhaW4gY291bnRyaWVzIGVpdGhlciBieSBwYXRlbnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZQ0Kb3JpZ2luYWwgY29weXJpZ2h0IGhvbGRlciB3aG8gcGxhY2VzIHRoZSBMaWJyYXJ5IHVuZGVyIHRoaXMgTGljZW5zZSBtYXkgYWRkDQphbiBleHBsaWNpdCBnZW9ncmFwaGljYWwgZGlzdHJpYnV0aW9uIGxpbWl0YXRpb24gZXhjbHVkaW5nIHRob3NlIGNvdW50cmllcywNCnNvIHRoYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGluIG9yIGFtb25nIGNvdW50cmllcyBub3QgdGh1cw0KZXhjbHVkZWQuICBJbiBzdWNoIGNhc2UsIHRoaXMgTGljZW5zZSBpbmNvcnBvcmF0ZXMgdGhlIGxpbWl0YXRpb24gYXMgaWYNCndyaXR0ZW4gaW4gdGhlIGJvZHkgb2YgdGhpcyBMaWNlbnNlLg0KDQogIDEzLiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldw0KdmVyc2lvbnMgb2YgdGhlIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLg0KU3VjaCBuZXcgdmVyc2lvbnMgd2lsbCBiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLA0KYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvIGFkZHJlc3MgbmV3IHByb2JsZW1zIG9yIGNvbmNlcm5zLg0KDQpFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZSBMaWJyYXJ5DQpzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQNCiJhbnkgbGF0ZXIgdmVyc2lvbiIsIHlvdSBoYXZlIHRoZSBvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQNCmNvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQgdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkNCnRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uICBJZiB0aGUgTGlicmFyeSBkb2VzIG5vdCBzcGVjaWZ5IGENCmxpY2Vuc2UgdmVyc2lvbiBudW1iZXIsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIGJ5DQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLg0KDA0KICAxNC4gSWYgeW91IHdpc2ggdG8gaW5jb3Jwb3JhdGUgcGFydHMgb2YgdGhlIExpYnJhcnkgaW50byBvdGhlciBmcmVlDQpwcm9ncmFtcyB3aG9zZSBkaXN0cmlidXRpb24gY29uZGl0aW9ucyBhcmUgaW5jb21wYXRpYmxlIHdpdGggdGhlc2UsDQp3cml0ZSB0byB0aGUgYXV0aG9yIHRvIGFzayBmb3IgcGVybWlzc2lvbi4gIEZvciBzb2Z0d2FyZSB3aGljaCBpcw0KY29weXJpZ2h0ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd3JpdGUgdG8gdGhlIEZyZWUNClNvZnR3YXJlIEZvdW5kYXRpb247IHdlIHNvbWV0aW1lcyBtYWtlIGV4Y2VwdGlvbnMgZm9yIHRoaXMuICBPdXINCmRlY2lzaW9uIHdpbGwgYmUgZ3VpZGVkIGJ5IHRoZSB0d28gZ29hbHMgb2YgcHJlc2VydmluZyB0aGUgZnJlZSBzdGF0dXMNCm9mIGFsbCBkZXJpdmF0aXZlcyBvZiBvdXIgZnJlZSBzb2Z0d2FyZSBhbmQgb2YgcHJvbW90aW5nIHRoZSBzaGFyaW5nDQphbmQgcmV1c2Ugb2Ygc29mdHdhcmUgZ2VuZXJhbGx5Lg0KDQoJCQkgICAgTk8gV0FSUkFOVFkNCg0KICAxNS4gQkVDQVVTRSBUSEUgTElCUkFSWSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8NCldBUlJBTlRZIEZPUiBUSEUgTElCUkFSWSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkgQVBQTElDQUJMRSBMQVcuDQpFWENFUFQgV0hFTiBPVEhFUldJU0UgU1RBVEVEIElOIFdSSVRJTkcgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORC9PUg0KT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBMSUJSQVJZICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkNCktJTkQsIEVJVEhFUiBFWFBSRVNTRUQgT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQ0KSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSDQpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUNCkxJQlJBUlkgSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFIExJQlJBUlkgUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FDQpUSEUgQ09TVCBPRiBBTEwgTkVDRVNTQVJZIFNFUlZJQ0lORywgUkVQQUlSIE9SIENPUlJFQ1RJT04uDQoNCiAgMTYuIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4NCldSSVRJTkcgV0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZIFdITyBNQVkgTU9ESUZZDQpBTkQvT1IgUkVESVNUUklCVVRFIFRIRSBMSUJSQVJZIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVQ0KRk9SIERBTUFHRVMsIElOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUg0KQ09OU0VRVUVOVElBTCBEQU1BR0VTIEFSSVNJTkcgT1VUIE9GIFRIRSBVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUNCkxJQlJBUlkgKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRiBEQVRBIE9SIERBVEEgQkVJTkcNClJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWSBZT1UgT1IgVEhJUkQgUEFSVElFUyBPUiBBDQpGQUlMVVJFIE9GIFRIRSBMSUJSQVJZIFRPIE9QRVJBVEUgV0lUSCBBTlkgT1RIRVIgU09GVFdBUkUpLCBFVkVOIElGDQpTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIDQpEQU1BR0VTLg0KDQoJCSAgICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TDQoMDQogICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBMaWJyYXJpZXMNCg0KICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBsaWJyYXJ5LCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0DQpwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgd2UgcmVjb21tZW5kIG1ha2luZyBpdCBmcmVlIHNvZnR3YXJlIHRoYXQNCmV2ZXJ5b25lIGNhbiByZWRpc3RyaWJ1dGUgYW5kIGNoYW5nZS4gIFlvdSBjYW4gZG8gc28gYnkgcGVybWl0dGluZw0KcmVkaXN0cmlidXRpb24gdW5kZXIgdGhlc2UgdGVybXMgKG9yLCBhbHRlcm5hdGl2ZWx5LCB1bmRlciB0aGUgdGVybXMgb2YgdGhlDQpvcmRpbmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKS4NCg0KICBUbyBhcHBseSB0aGVzZSB0ZXJtcywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgbGlicmFyeS4gIEl0IGlzDQpzYWZlc3QgdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQ0KY29udmV5IHRoZSBleGNsdXNpb24gb2Ygd2FycmFudHk7IGFuZCBlYWNoIGZpbGUgc2hvdWxkIGhhdmUgYXQgbGVhc3QgdGhlDQoiY29weXJpZ2h0IiBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLg0KDQogICAgPG9uZSBsaW5lIHRvIGdpdmUgdGhlIGxpYnJhcnkncyBuYW1lIGFuZCBhIGJyaWVmIGlkZWEgb2Ygd2hhdCBpdCBkb2VzLj4NCiAgICBDb3B5cmlnaHQgKEMpIDx5ZWFyPiAgPG5hbWUgb2YgYXV0aG9yPg0KDQogICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCiAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCiAgICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4NCg0KICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUNCiAgICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KDQogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYw0KICAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUNCiAgICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQ0KDQpBbHNvIGFkZCBpbmZvcm1hdGlvbiBvbiBob3cgdG8gY29udGFjdCB5b3UgYnkgZWxlY3Ryb25pYyBhbmQgcGFwZXIgbWFpbC4NCg0KWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHlvdXINCnNjaG9vbCwgaWYgYW55LCB0byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIGxpYnJhcnksIGlmDQpuZWNlc3NhcnkuICBIZXJlIGlzIGEgc2FtcGxlOyBhbHRlciB0aGUgbmFtZXM6DQoNCiAgWW95b2R5bmUsIEluYy4sIGhlcmVieSBkaXNjbGFpbXMgYWxsIGNvcHlyaWdodCBpbnRlcmVzdCBpbiB0aGUNCiAgbGlicmFyeSBgRnJvYicgKGEgbGlicmFyeSBmb3IgdHdlYWtpbmcga25vYnMpIHdyaXR0ZW4gYnkgSmFtZXMgUmFuZG9tIEhhY2tlci4NCg0KICA8c2lnbmF0dXJlIG9mIFR5IENvb24+LCAxIEFwcmlsIDE5OTANCiAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UNCg0KVGhhdCdzIGFsbCB0aGVyZSBpcyB0byBpdCENCg0KDQo=]]></data>
	</file>
	<file>
	  <filename>/libraries/bennu/README.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[QmVubnUgLSBBbiBvYmplY3Qtb3JpZW50ZWQgaUNhbGVuZGFyIChSRkMyNDQ1KSBpbXBsZW1lbnRhdGlvbiBpbiBQSFANCmh0dHA6Ly9iZW5udS5zb3VyY2Vmb3JnZS5uZXQNCg0KQmVubnUgaXMgY29weXJpZ2h0IChDKSAyMDA1IGJ5IElvYW5uaXMgUGFwYWlvYW5ub3UgKHBqQHVvbS5ncikuDQoNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogICAgVEFCTEUgT0YgQ09OVEVOVFMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQoNCjEuIEFib3V0IEJlbm51DQogICAgMS4xLiBXaGF0IGlzIEJlbm51Pw0KICAgIDEuMi4gV2hhdCBpcyBpQ2FsZW5kYXI/DQogICAgMS4zLiBCZW5udSBsaWNlbnNlDQoNCjIuIFVzaW5nIEJlbm51DQogICAgMi4xLiBJbnRlZ3JhdGluZyBCZW5udSBpbiB5b3VyIGFwcGxpY2F0aW9uDQogICAgMi4yLiBVc2FnZSBleGFtcGxlcw0KDQozLiBCdWdzIGFuZCBsaW1pdGF0aW9ucw0KICAgIDMuMS4gS25vd24gbGltaXRhdGlvbnMNCg0KNC4gQ29udGFjdCBpbmZvcm1hdGlvbg0KDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KMS4gQWJvdXQgQmVubnUNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCjEuMS4gV2hhdCBpcyBCZW5udT8NCg0KICAgIEJlbm51IGlzIGEgc29mdHdhcmUgbGlicmFyeSB3cml0dGVuIGluIFBIUCB0aGF0IGltcGxlbWVudHMgdGhlIA0KICAgIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIElFVEYgaUNhbGVuZGFyIDIuMCBzcGVjaWZpY2F0aW9uIChSRkMgMjQ0NSkuIA0KICAgIEl0cyBwdXJwb3NlIGlzIHRvIGVuYWJsZSBhcHBsaWNhdGlvbnMgd2hpY2ggaGF2ZSBhbiBpbnRlcmVzdCBpbiANCiAgICB0aGlzIGZvcm1hdCAoZS5nLiBjYWxlbmRhcmluZywgc2NoZWR1bGVyIGFuZCBvcmdhbml6ZXIgcHJvZ3JhbXMpIA0KICAgIHRvIHN1cHBvcnQgaUNhbGVuZGFyIGluIGFuIGVhc3ksIHBvd2VyZnVsLCBhbmQgZXh0ZW5zaWJsZSB3YXkuDQoNCiAgICBJbiBvdGhlciB3b3JkcywgQmVubnUgZXhpc3RzIHNvIHRoYXQgZGV2ZWxvcGVycyB3b3JraW5nIG9uIHN1Y2ggDQogICAgYXBwbGljYXRpb25zIGRvbid0IGhhdmUgdG8gd2FzdGUgcGFpbmZ1bCBob3VycyBnb2luZyB0aHJvdWdoIHRoZSANCiAgICBzdGFuZGFyZCBhbmQgd3JpdGluZyB0aGUgY29kZSB0byBpbXBsZW1lbnQgaXQuIEluc3RlYWQsIHRoZXkgY2FuIA0KICAgIGluY2x1ZGUgdGhpcyBsaWJyYXJ5IGluIHRoZWlyIGFwcGxpY2F0aW9uIGFuZCBnZXQgdG8gdGhlIGZ1biBwYXJ0IA0KICAgIGFscmVhZHk6IGNvZGluZyBUSEVJUiBwcm9ncmFtLg0KDQoxLjIuIFdoYXQgaXMgaUNhbGVuZGFyPw0KDQogICAgVGhlIGlDYWxlbmRhciBzcGVjaWZpY2F0aW9uIGlzIGEgcmVzdWx0IG9mIHRoZSB3b3JrIG9mIHRoZSBJRVRGIA0KICAgIChJbnRlcm5ldCBFbmdpbmVlcmluZyBUYXNrIEZvcmNlKSwgQ2FsZW5kYXJpbmcgYW5kIFNjaGVkdWxpbmcgDQogICAgV29ya2luZyBHcm91cC4gSXQgd2FzIGF1dGhvcmVkIGJ5IEZyYW5rIERhd3NvbiBvZiBMb3R1cyANCiAgICBEZXZlbG9wbWVudCBDb3Jwb3JhdGlvbiBhbmQgRGVyaWsgU3RlbmVyc29uIG9mIE1pY3Jvc29mdCANCiAgICBDb3Jwb3JhdGlvbi4gaUNhbGVuZGFyIGlzIGhlYXZpbHkgYmFzZWQgb24gdGhlIGVhcmxpZXIgdkNhbGVuZGFyIA0KICAgIGluZHVzdHJ5IHNwZWNpZmljYXRpb24gYnkgdGhlIEludGVybmV0IE1haWwgQ29uc29ydGl1bSAoSU1DKSwgDQogICAgd2hpY2ggaXQgZXh0ZW5kcyBhbmQgc2Vla3MgdG8gcmVwbGFjZS4NCiAgICANCiAgICBJbiBwcmFjdGljYWwgdGVybXMsIGlDYWxlbmRhciBpcyB0aGUgbnVtYmVyIG9uZSBmb3JtYXQgdXNlZCB0b2RheSANCiAgICBieSBjYWxlbmRhcmluZyBhbmQgc2NoZWR1bGVyIGFwcGxpY2F0aW9ucyB0byBpbXBvcnQgYW5kIGV4cG9ydCANCiAgICBkYXRhLiBBcHBsaWNhdGlvbnMgd2hpY2ggcHJvdmlkZSBzdXBwb3J0IGZvciBpQ2FsZW5kYXIgaW5jbHVkZToNCiAgICANCiAgICAqIE1pY3Jvc29mdCBPdXRsb29rDQogICAgKiBBcHBsZSBpQ2FsDQogICAgKiBNb3ppbGxhIENhbGVuZGFyIChhbmQgTW96aWxsYSBTdW5iaXJkKQ0KICAgICogTXVsYmVycnkNCiAgICAqIEtvcmdhbml6ZXINCiAgICAqIFhpbWlhbiBFdm9sdXRpb24NCg0KICAgIEVmZmVjdGl2ZWx5LCB0aGlzIG1lYW5zIHRoYXQgaUNhbGVuZGFyIGlzIGFraW4gdG8gYSAiY29tbW9uIA0KICAgIGxhbmd1YWdlIiB3aGljaCBhbGwgdGhlc2UgYXBwbGljYXRpb25zIHNwZWFrLiBJZiB5b3UgYXJlIHdyaXRpbmcgDQogICAgYW4gYXBwbGljYXRpb24gd2hpY2ggaW5jbHVkZXMgc2NoZWR1bGluZyBvciBjYWxlbmRhcmluZyBlbGVtZW50cywgDQogICAgYW5kIHlvdSB3YW50IGl0IHRvIGJlIGFibGUgdG8gc3luY2hyb25pemUgd2l0aCBvdGhlciBzdWNoIA0KICAgIHByb2dyYW1zLCB5b3UgbmVlZCB0byBzdXBwb3J0IGlDYWxlbmRhci4gQmVubnUgaXMgYW4gZWFzeSB3YXkgdG8gDQogICAgZG8gZXhhY3RseSB0aGF0LCBhcyBsb25nIGFzIHlvdSBhcmUgY29kaW5nIGluIFBIUC4NCg0KMS4zLiBCZW5udSBsaWNlbnNlDQoNCiAgICBCZW5udSBpcyByZWxlYXNlZCB1bmRlciB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIA0KICAgIChMR1BMKS4gSW4gc2hvcnQsIHRoaXMgbWVhbnMgdGhhdDoNCiAgICANCiAgICAqIFlvdSBhcmUgYWxsb3dlZCB0byBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgdGhlIHNvdXJjZSBjb2RlIG9mIA0KICAgICAgQmVubnUNCiAgICAqIFlvdSBhcmUgYWxsb3dlZCB0byB1c2UgQmVubnUgb3IgYW55IG1vZGlmaWVkIHZlcnNpb24gb2YgaXQgaW4gYSANCiAgICAgIGNvbW1lcmNpYWwgYXBwbGljYXRpb24NCiAgICAqIFlvdSBkbyBub3QgaGF2ZSB0byBwYXkgYW55IGZlZXMgdG8gdXNlLCBtb2RpZnksIG9yIGRpc3RyaWJ1dGUNCiAgICAgIEJlbm51DQogICAgKiBZb3UgY2FuIGNoYXJnZSBvdGhlcnMgZm9yIGRpc3RyaWJ1dGluZyBCZW5udSBvciBkZXJpdmVkIHZlcnNpb25zDQogICAgKiBIb3dldmVyLCBpbiBBTEwgT0YgVEhFIEFCT1ZFIENBU0VTLCB5b3UgTVVTVCBwcm92aWRlIHRoZSBzb3VyY2UgDQogICAgICBjb2RlIGZvciBCZW5udSAob3IgYW55IG1vZGlmaWVkIHZlcnNpb24geW91IG1heSBoYXZlIHByb2R1Y2VkKSwgDQogICAgICBhbmQgdGhhdCBzb3VyY2UgY29kZSBNVVNUIGJlIHByb3ZpZGVkIHVuZGVyIHRoZSBHTlUgR1BMIC1vci0gdGhlIA0KICAgICAgR05VIExHUEwgbGljZW5zZS4gRnVydGhlcm1vcmUsIHlvdSBNVVNUIGluY2x1ZGUgdGhlIG9yaWdpbmFsIA0KICAgICAgY29weXJpZ2h0IG5vdGljZXMgYW5kIGNyZWRpdHMgdGhhdCB5b3UgcmVjZWl2ZWQgdGhlIHNvdXJjZSBjb2RlIA0KICAgICAgd2l0aCB3aGVuIHlvdSBkaXN0cmlidXRlIGl0IElOVEFDVC4NCiAgICAqIEluIGFueSBjYXNlLCB0aGUgY29weXJpZ2h0IHRvIEJlbm51IGlzIHJldGFpbmVkIGJ5IG1lLCANCiAgICAgIElvYW5uaXMgUGFwYWlvYW5ub3UuDQoNCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICAjIyAgRElTQ0xBSU1FUiAgIyMNCiAgICAjIyMjIyMjIyMjIyMjIyMjIyMNCiAgICANCiAgICBQbGVhc2UgYmUgYWR2aXNlZCB0aGF0IHRoZSBhYm92ZSBpcyBhIHZlcnkgc2hvcnQgYW5kIHRvIHRoZSBwb2ludCANCiAgICBleHBsYW5hdGlvbiBvZiB0aGUgR05VIExHUEwgdGVybXMsIGFzIEkgdW5kZXJzdGFuZCBpdCwgYW5kIGl0IGlzIA0KICAgIG9ubHkgbXkgcGVyc29uYWwgb3Bpbmlvbi4gSVQgSVMgTk9UIFRIRSBBQ1RVQUwgTElDRU5TRSBVTkRFUiBXSElDSCANCiAgICBCRU5OVSBJUyBSRUxFQVNFRC4gSXQgaXMgU1RST05HTFkgUkVDT01NRU5ERUQgdGhhdCB5b3UgcmVhZCB0aGUgDQogICAgZnVsbCB0ZXh0IG9mIHRoZSBMR1BMIGluIG9yZGVyIHRvIGF2b2lkIGFueSBtaXN1bmRlcnN0YW5kaW5ncyANCiAgICB3aGljaCBtYXkgYmUgY2F1c2VkIGJ5IHJlYWRpbmcgbXkgaW50ZXJwcmV0YXRpb24gb2YgaXQuIFlvdSBjYW4gDQogICAgZmluZCB0aGUgZnVsbCB0ZXh0IG9mIHRoZSBMR1BMIGluIHRoZSBmaWxlIExJQ0VOU0UuVFhULCB3aGljaCB5b3UgDQogICAgbXVzdCBoYXZlIHJlY2VpdmVkIGFzIHBhcnQgb2YgdGhlIEJlbm51IGRpc3RyaWJ1dGlvbi4gSWYgeW91IGhhdmUgDQogICAgbm90IHJlY2VpdmVkIHN1Y2ggYSBmaWxlLCBwbGVhc2UgZW1haWwgbWUgbWVudGlvbmluZyB3aGVyZSB5b3UgDQogICAgb2J0YWluZWQgeW91ciBjb3B5IG9mIEJlbm51Lg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KMi4gVXNpbmcgQmVubnUNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQoNCjIuMS4gSW50ZWdyYXRpbmcgQmVubnUgaW4geW91ciBhcHBsaWNhdGlvbg0KDQogICAgVG8gaW5jbHVkZSBCZW5udSBpbiB5b3VyIGFwcGxpY2F0aW9uLCB5b3Ugb25seSBuZWVkIHRvIGluY2x1ZGUgb25lIA0KICAgIFBIUCBmaWxlLCBsaWtlIHRoaXM6DQogICAgDQogICAgPD9waHANCiAgICAgICBpbmNsdWRlKCRwYXRoX3RvX2Jlbm51LicvbGlicmFyeS9saWIvYmVubnUuaW5jLnBocCcpOw0KICAgICAgIA0KICAgICAgIC8vIHRoZSByZXN0IG9mIHlvdXIgY29kZSBnb2VzIGhlcmUNCiAgICA/Pg0KDQoyLjIuIFVzYWdlIGV4YW1wbGVzDQoNCiAgICBQbGVhc2UgbG9vayBhdCB0aGUgL2V4YW1wbGVzLyBkaXJlY3RvcnkgZm9yIHJlYWR5LXRvLXJ1biBleGFtcGxlcyANCiAgICBpbGx1c3RyYXRpbmcgaG93IEJlbm51IGlzIHRvIGJlIHVzZWQuIFRoaXMgc2VjdGlvbiB3aWxsIGJlIA0KICAgIHJldmlzaXRlZCBhbmQgcHJvcGVybHkgd3JpdHRlbiB3aGVuIHRoZSBzb3VyY2UgY29kZSByZWFjaGVzIGFuIA0KICAgIGFjY2VwdGFibGUgbGV2ZWwgb2YgZmVhdHVyZXMgYW5kIG1ldHVyaXR5IChubywgSSBkb24ndCBrbm93IHdoZW4gDQogICAgdGhhdCB3aWxsIGJlKS4NCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCjMuIEJ1Z3MgYW5kIGxpbWl0YXRpb25zDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KDQozLjEuIEtub3duIGxpbWl0YXRpb25zDQoNCiAgICAqIExBTkdVQUdFIHByb3BlcnR5IHBhcmFtZXRlcnMgYXJlbid0IHNlbWFudGljYWxseSBjaGVja2VkLg0KDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KNC4gQ29udGFjdCBpbmZvcm1hdGlvbg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KICAgIFlvdSBjYW4gY29udGFjdCBtZSBhdCB0aGUgZW1haWwgYWRkcmVzcyBwakB1b20uZ3IgZm9yIGFueSANCiAgICBzdWdnZXN0aW9ucywgaWRlYXMsIG9yIGJ1ZyByZXBvcnRzIHJlZ2FyZGluZyBCZW5udS4NCiAgICANCiAgICBBdCBzb21lIHBvaW50IHRoZXJlIHdpbGwgYWxzbyBiZSBhIHNpdGUgd2hpY2ggeW91IGNhbiB1c2UgdG8gZG8gDQogICAgYW55dGhpbmcgcmVsYXRlZCB0byBCZW5udSwgYnV0IHNhZGx5IG5vdCB0b2RheS4gSWYgeW91IHdhbnQgdG8gDQogICAgdm9sdW50ZWVyIGFuZCBnaXZlIGEgaGFuZCwgSSAnbGwgYmUgaGFwcHkgdG8gY29sbGFib3JhdGUuDQo=]]></data>
	</file>
	<file>
	  <filename>/libraries/bennu/tests/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/libraries/bennu/tests/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAACHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAEAAAABAAAQAABvAHYAZQByAHMALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAANAGwAZQBmAHQAbwB2AGUAcgBzAC4AcABoAHBJbG9jYmxvYgAAABAAAABGAAAAKP///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAAAhwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAIAAAAGAAAAAAAAAAAAAAAAEAAAEAAAAAAQAAAgAAAAABAAAEAAAAAAIAAAgAAAAYAAAAAAAAAAABAAAgAAAAAAEAAEAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/libraries/bennu/tests/leftovers.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KLyoNCmlmKHVuZm9sZChmb2xkKCR0ZXN0KSkgPT09ICR0ZXN0KSB7DQogICAgJHRlc3QgPSAnKjEyMzQ1Njc4OSoxMjM0NTY3ODkqMTIzNDU2Nzg5KjEyMzQ1Njc4OSoxMjM0NTY3ODkqMTIzNDU2Nzg5KjEyMzQ1Njc4OSoxMjM0NTY3ODkqMTIzNDU2Nzg5KjEyMzQ1Njc4OSoxMjM0NTY3ODkqMTIzNDU2Nzg5KjEyMzQ1Njc4OSoxMjM0NTY3ODkqMTIzNDU2Nzg5KjEyMzQ1Njc4OSc7DQogICAgZWNobyAncGFzcyEnOw0KfQ0KKi8NCg0KDQo/Pg0K]]></data>
	</file>
	<file>
	  <filename>/libraries/bennu/TODO.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[DQoqIFRha2UgYSBsb29rIGF0IGFsbCB0aG9zZSB0ZXh0IHZhbHVlcy4gQ29udHJvbCBjaGFycyBzaG91bGRuJ3QgYmUgYWxsb3dlZC4=]]></data>
	</file>
	<file>
	  <filename>/libraries/classes/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/libraries/classes/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAAIJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAUAAAABAAAQAABhAGwAZQBuAGQAYQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAVAE0AQwBGAEMAYQBsAGUAbgBkAGEAcgAuAGMAbABhAHMAcwAuAHAAaABwSWxvY2Jsb2IAAAAQAAAARgAAACgAAAAB//8AAAAAABUATQBDAEYAQwByAGkAdABlAHIAaQBhAC4AYwBsAGEAcwBzAC4AcABoAHBJbG9jYmxvYgAAABAAAADMAAAAKP///////wAAAAAAFQBNAEMARgBMAGkAcwB0AFYAaQBlAHcALgBjAGwAYQBzAHMALgBwAGgAcElsb2NibG9iAAAAEAAAAVIAAAAo////////AAAAAAATAE0AQwBGAE0AbwBkAHUAbABlAC4AYwBsAGEAcwBzAC4AcABoAHBJbG9jYmxvYgAAABAAAAHYAAAAKP///////wAAAAAAFQBNAEMARgBUAGUAbQBwAGwAYQB0AGUALgBjAGwAYQBzAHMALgBwAGgAcElsb2NibG9iAAAAEAAAAl4AAAAo////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAACCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAIAAAAGAAAAAAAAAAAQAAAIAAAAABAAABAAAAAAAAAAABAAAEAAAAAAIAAAgAAAAYAAAAAAAAAAABAAAgAAAAAAEAAEAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/libraries/classes/MCFCalendar.class.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIE1DRkNhbGVuZGFyIAp7CiAgIHZhciAkc3RhcnRfZGF0ZTsKICAgdmFyICRlbmRfZGF0ZTsKICAgdmFyICRmaXJzdF9kYXk7CiAgIHZhciAkbGFzdF9kYXk7CiAgIHZhciAkY2FsZW5kYXJfdGFibGUgPSBhcnJheSgpOwogICB2YXIgJGV2ZW50cyA9IGFycmF5KCk7CiAgIAogICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHRpbWVzdGFtcCkKICAgewogICAgICAkdGhpcy0+c3RhcnRfZGF0ZSA9IHNlbGY6OmdldEZpcnN0RGF5VGFibGUoJHRpbWVzdGFtcCk7CiAgICAgICR0aGlzLT5lbmRfZGF0ZSA9IHNlbGY6OmdldExhc3REYXlUYWJsZSgkdGltZXN0YW1wKTsgICAKICAgICAgJHRoaXMtPmZpcnN0X2RheSA9IG1rdGltZSgwLDAsMCxkYXRlKCduJywgJHRpbWVzdGFtcCksIDEsIGRhdGUoJ3knLCAkdGltZXN0YW1wKSk7CiAgICAgICR0aGlzLT5sYXN0X2RheSA9IG1rdGltZSgwLDAsMCxkYXRlKCduJywgJHRpbWVzdGFtcCksIGRhdGUoJ3QnLCAkdGltZXN0YW1wKSwgZGF0ZSgneScsICR0aW1lc3RhbXApKTsKICAgfQogICAKICAgcHVibGljIGZ1bmN0aW9uIHByb2Nlc3NFdmVudHMoJGV2ZW50cyA9IGFycmF5KCkpCiAgIHsKICAgICAgZm9yZWFjaCAoJGV2ZW50cyBhcyAkZXZlbnQpCiAgICAgIHsKICAgICAgICAgJHN0YXJ0ID0gc3RydG90aW1lKCRldmVudC0+Z2V0c3RhcnRkYXRlKCkpOwogICAgICAgICAkZW5kID0gc3RydG90aW1lKCRldmVudC0+Z2V0ZW5kZGF0ZSgpKTsKICAgICAgICAgCiAgICAgICAgIGlmICgkc3RhcnQgPD0gJGVuZCkKICAgICAgICAgewogICAgICAgICAgd2hpbGUoJHN0YXJ0IDw9ICRlbmQpCiAgICAgICAgICB7CiAgICAgICAgICAgICAkdGhpcy0+ZXZlbnRzWyRzdGFydF1bXSA9ICRldmVudDsKICAgICAgICAgICAgICRzdGFydCA9IHN0cnRvdGltZSgnICsgMSBEQVknLCAkc3RhcnQpOyAvLyAzNjAwKjI0OwogICAgICAgICAgfSAgCiAgICAgICAgIH0gICAgICAgICAKICAgICAgfQogICB9CiAgIAogICBwdWJsaWMgZnVuY3Rpb24gcHJvY2Vzc0NhbGVuZGFyKCkKICAgewogICAgICAkZGF0ZSA9ICR0aGlzLT5zdGFydF9kYXRlOwogICAgICAkd2Vla19uYnIgPSAwOwogICAgICAkdG9kYXkgPSBnZXRkYXRlKCk7CiAgICAgICR0aGlzLT5jYWxlbmRhcl90YWJsZSA9IGFycmF5KCk7IC8vIFJlc2V0IHRoZSB0YWJsZQogICAgICAKICAgICAgd2hpbGUgKCRkYXRlIDw9ICR0aGlzLT5lbmRfZGF0ZSkKICAgICAgeyAgIAogICAgICAgICAkdGhpcy0+Y2FsZW5kYXJfdGFibGVbJHdlZWtfbmJyXVtdID0gYXJyYXkoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRlJyA9PiAkZGF0ZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdteXNxbF9kYXRlJyA9PiBkYXRlKCdZL20vZCcsICRkYXRlKSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0JyA9PiBkYXRlKCdsIGQvTS9ZJywkZGF0ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdldmVudHMnID0+IChpc3NldCgkdGhpcy0+ZXZlbnRzWyRkYXRlXSkpPyR0aGlzLT5ldmVudHNbJGRhdGVdOmFycmF5KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjdXJyZW50JyA9PiAoKCRkYXRlID49ICR0aGlzLT5maXJzdF9kYXkpICYmICgkZGF0ZSA8PSAkdGhpcy0+bGFzdF9kYXkpKSwKCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJJ3RvZGF5JyA9PiAoJGRhdGUgPT0gbWt0aW1lKDAsIDAsIDAsICR0b2RheVsnbW9uJ10sICR0b2RheVsnbWRheSddLCAkdG9kYXlbJ3llYXInXSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgIAogICAgICAgICBpZiAoZGF0ZSgnTicsICRkYXRlKSA9PSA3KQogICAgICAgICB7CiAgICAgICAgICAgICR3ZWVrX25icisrOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAkZGF0ZSA9IHN0cnRvdGltZSgnICsgMSBEQVknLCAkZGF0ZSk7IC8vIDM2MDAqMjQ7CiAgICAgIH0KICAgfQogICAKICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRUaW1lc3RhbXBGcm9tTW9udGhZZWFyKCRtb250aCwgJHllYXIpCiAgIHsKICAgICAgcmV0dXJuIG1rdGltZSgwLDAsMCwkbW9udGgsIDEsICR5ZWFyKTsKICAgfQogICAKICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXROZXh0TW9udGhUaW1lc3RhbXAoJHRpbWVzdGFtcCkKICAgeyAgICAgIAogICAgICAgICByZXR1cm4gc3RydG90aW1lKCcrIDEgTU9OVEgnLCAkdGltZXN0YW1wKTsKICAgfQogICAKICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRQcmV2aW91c01vbnRoVGltZXN0YW1wKCR0aW1lc3RhbXApCiAgIHsgIAogICAgICAgICByZXR1cm4gc3RydG90aW1lKCctIDEgTU9OVEgnLCAkdGltZXN0YW1wKTsKICAgfQogICAKICAgLyoqCiAgICogIEJ1aWxkIGEgbW9udGggdGFibGUgZm9yIHRoZSBjdXJyZW50IGRhdGUgbW9udGgKICAgKi8KICAgCiAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0Rmlyc3REYXlUYWJsZSgkdGltZXN0YW1wKQogICB7CiAgICAgICAgICRmaXJzdF9kYXkgPSBta3RpbWUoMCwwLDAsZGF0ZSgnbicsICR0aW1lc3RhbXApLCAxLCBkYXRlKCd5JywgJHRpbWVzdGFtcCkpOwogICAgICAKICAgICAgaWYgKGRhdGUoJ04nLCAkZmlyc3RfZGF5KSA+IDEpCiAgICAgIHsKICAgICAgICAgcmV0dXJuICRmaXJzdF9kYXkgLSAoMzYwMCoyNCooZGF0ZSgnTicsJGZpcnN0X2RheSktMSkpOwogICAgICB9CiAgICAgIGVsc2UKICAgICAgewogICAgICAgICByZXR1cm4gJGZpcnN0X2RheTsKICAgICAgfQogICB9CiAgIAogICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldExhc3REYXlUYWJsZSgkdGltZXN0YW1wKQogICB7CiAgICAgICRsYXN0X2RheSA9IG1rdGltZSgwLDAsMCxkYXRlKCduJywgJHRpbWVzdGFtcCksIGRhdGUoJ3QnLCAkdGltZXN0YW1wKSwgZGF0ZSgneScsICR0aW1lc3RhbXApKTsKICAgICAgCiAgICAgIGlmIChkYXRlKCdOJywgJGxhc3RfZGF5KSA8IDcpCiAgICAgIHsKICAgICAgICAgcmV0dXJuICRsYXN0X2RheSArICgzNjAwKjI0Kig3LWRhdGUoJ04nLCRsYXN0X2RheSkpKTsKICAgICAgfQogICAgICBlbHNlCiAgICAgIHsKICAgICAgICAgcmV0dXJuICRsYXN0X2RheTsKICAgICAgfQogICB9CiAgIAogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY2hlY2tDb21wYXRpYmlsaXR5KCRjbGFzcykKICB7Cgkkb2JqZWN0ID0gbmV3ICRjbGFzczsKCWlmIChtZXRob2RfZXhpc3RzKCRvYmplY3QsICdnZXRTdGFydERhdGUnKSAmJiBtZXRob2RfZXhpc3RzKCRvYmplY3QsICdnZXRFbmREYXRlJykpCgl7CgkJcmV0dXJuIHRydWU7Cgl9CglyZXR1cm4gZmFsc2U7CiAgfSAgCgogIC8qcHVibGljIHN0YXRpYyBmdW5jdGlvbiBjaGVja2lDYWxDb21wYXRpYmlsaXR5KCRjbGFzcykKICB7Cgkkb2JqZWN0ID0gbmV3ICRjbGFzczsKCWlmIChtZXRob2RfZXhpc3RzKCRvYmplY3QsICdnZXRTdW1tYXJ5JykgJiYgbWV0aG9kX2V4aXN0cygkb2JqZWN0LCAnZ2V0RGVzY3JpcHRpb24nKSkKCXsKCQlyZXR1cm4gdHJ1ZTsKCX0KCXJldHVybiBmYWxzZTsKICB9Ki8KCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBsb2FkaUNhbExpYnJhcmllcygpCiAgewoJcmVxdWlyZV9vbmNlIGRpcm5hbWUoX19GSUxFX18pIC4gJy8uLi9iZW5udS9saWIvYmVubnUuaW5jLnBocCc7CiAgfQoKfQo=]]></data>
	</file>
	<file>
	  <filename>/libraries/classes/MCFCriteria.class.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIE1DRkNyaXRlcmlhIHsKCgl2YXIgJG9yZGVyX2J5ID0gYXJyYXkoKTsKCXZhciAkY29uZGl0aW9ucyA9IGFycmF5KCk7Cgl2YXIgJGZpbHRlcnMgPSBhcnJheSgpOwoJdmFyICRncm91cF9ieSA9IGFycmF5KCk7Cgl2YXIgJHNlbGVjdGVkX2NvbHVtbnMgPSBhcnJheSgpOwoJCgl2YXIgJGxpbWl0OwoJdmFyICRvZmZzZXQ7CgkKCXZhciAkdmFsdWVzID0gYXJyYXkoKTsKCQoJLy8gQ09OU1QKCQogIC8qKiBDb21wYXJpc29uIHR5cGUuICovCiAgY29uc3QgRVFVQUwgPSAiPSI7CiAgY29uc3QgTk9UX0VRVUFMID0gIjw+IjsKICBjb25zdCBBTFRfTk9UX0VRVUFMID0gIiE9IjsKICBjb25zdCBHUkVBVEVSX1RIQU4gPSAiPiI7CiAgY29uc3QgTEVTU19USEFOID0gIjwiOwogIGNvbnN0IEdSRUFURVJfRVFVQUwgPSAiPj0iOwogIGNvbnN0IExFU1NfRVFVQUwgPSAiPD0iOwogIGNvbnN0IExJS0UgPSAiIExJS0UgIjsKICBjb25zdCBNVUxUSUxJS0UgPSAiIE1VTFRJTElLRSAiOwogIGNvbnN0IE1VTFRJTk9UTElLRSA9ICIgTVVMVElOT1RMSUtFICI7CiAgY29uc3QgTk9UX0xJS0UgPSAiIE5PVCBMSUtFICI7CiAgY29uc3QgVVBDT01JTkcgPSAiIFVQQ09NSU5HICI7CiAgY29uc3QgUEFTVCA9ICIgUEFTVCAiOwoKICAvKiogUG9zdGdyZVNRTCBjb21wYXJpc29uIHR5cGUgKi8KICBjb25zdCBJTElLRSA9ICIgSUxJS0UgIjsKCiAgLyoqIFBvc3RncmVTUUwgY29tcGFyaXNvbiB0eXBlICovCiAgY29uc3QgTk9UX0lMSUtFID0gIiBOT1QgSUxJS0UgIjsKCiAgLyoqIENvbXBhcmlzb24gdHlwZS4gKi8KICBjb25zdCBDVVNUT00gPSAiQ1VTVE9NIjsKCiAgLyoqIENvbXBhcmlzb24gdHlwZS4gKi8KICBjb25zdCBESVNUSU5DVCA9ICJESVNUSU5DVCAiOwoKICAvKiogQ29tcGFyaXNvbiB0eXBlLiAqLwogIGNvbnN0IElOID0gIiBJTiAiOwoKICAvKiogQ29tcGFyaXNvbiB0eXBlLiAqLwogIGNvbnN0IE5PVF9JTiA9ICIgTk9UIElOICI7CgogIC8qKiBDb21wYXJpc29uIHR5cGUuICovCiAgY29uc3QgQUxMID0gIkFMTCAiOwoKICAvKiogQ29tcGFyaXNvbiB0eXBlLiAqLwogIGNvbnN0IEpPSU4gPSAiSk9JTiI7CgogIC8qKiBCaW5hcnkgbWF0aCBvcGVyYXRvcjogQU5EICovCiAgY29uc3QgQklOQVJZX0FORCA9ICImIjsKCiAgLyoqIEJpbmFyeSBtYXRoIG9wZXJhdG9yOiBPUiAqLwogIGNvbnN0IEJJTkFSWV9PUiA9ICJ8IjsKCiAgLyoqICJPcmRlciBieSIgcXVhbGlmaWVyIC0gYXNjZW5kaW5nICovCiAgY29uc3QgQVNDID0gIkFTQyI7CgogIC8qKiAiT3JkZXIgYnkiIHF1YWxpZmllciAtIGRlc2NlbmRpbmcgKi8KICBjb25zdCBERVNDID0gIkRFU0MiOwoKICAvKiogIklTIE5VTEwiIG51bGwgY29tcGFyaXNvbiAqLwogIGNvbnN0IElTTlVMTCA9ICIgSVMgTlVMTCAiOwoKICAvKiogIklTIE5PVCBOVUxMIiBudWxsIGNvbXBhcmlzb24gKi8KICBjb25zdCBJU05PVE5VTEwgPSAiIElTIE5PVCBOVUxMICI7Cgpjb25zdCBJU05PVEVNUFRZID0gJyBJUyBOT1QgRU1QVFkgJzsKY29uc3QgSVNFTVBUWSA9ICcgSVMgRU1QVFkgJzsKCiAgLyoqICJDVVJSRU5UX0RBVEUiIEFOU0kgU1FMIGZ1bmN0aW9uICovCiAgY29uc3QgQ1VSUkVOVF9EQVRFID0gIkNVUlJFTlRfREFURSI7CgogIC8qKiAiQ1VSUkVOVF9USU1FIiBBTlNJIFNRTCBmdW5jdGlvbiAqLwogIGNvbnN0IENVUlJFTlRfVElNRSA9ICJDVVJSRU5UX1RJTUUiOwoKICAvKiogIkNVUlJFTlRfVElNRVNUQU1QIiBBTlNJIFNRTCBmdW5jdGlvbiAqLwogIGNvbnN0IENVUlJFTlRfVElNRVNUQU1QID0gIkNVUlJFTlRfVElNRVNUQU1QIjsKCiAgLyoqICJMRUZUIEpPSU4iIFNRTCBzdGF0ZW1lbnQgKi8KICBjb25zdCBMRUZUX0pPSU4gPSAiTEVGVCBKT0lOIjsKCiAgLyoqICJSSUdIVCBKT0lOIiBTUUwgc3RhdGVtZW50ICovCiAgY29uc3QgUklHSFRfSk9JTiA9ICJSSUdIVCBKT0lOIjsKCiAgLyoqICJJTk5FUiBKT0lOIiBTUUwgc3RhdGVtZW50ICovCiAgY29uc3QgSU5ORVJfSk9JTiA9ICJJTk5FUiBKT0lOIjsKCgkKCglwdWJsaWMgZnVuY3Rpb24gYWRkQXNjZW5kaW5nT3JkZXJCeUNvbHVtbigkY29sdW1uKQoJewoJCSR0aGlzLT5vcmRlcl9ieVtdID0gYXJyYXkgKCdjb2x1bW4nID0+ICRjb2x1bW4sICdvcmRlcicgPT4gc2VsZjo6QVNDKTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGFkZERlc2NlbmRpbmdPcmRlckJ5Q29sdW1uKCRjb2x1bW4pCgl7CgkJJHRoaXMtPm9yZGVyX2J5W10gPSBhcnJheSAoJ2NvbHVtbicgPT4gJGNvbHVtbiwgJ29yZGVyJyA9PiBzZWxmOjpERVNDKTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGFkZFNlbGVjdENvbHVtbigkY29sdW1uX25hbWUpCgl7CgkJJHRoaXMtPnNlbGVjdGVkX2NvbHVtbnNbXSA9ICRjb2x1bW5fbmFtZTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGFkZCgkY29sdW1uLCAkdmFsdWUsICRjb25kaXRpb24gPSBzZWxmOjpFUVVBTCkKCXsKCQlpZiAoJGNvbmRpdGlvbiA9PSBzZWxmOjpJTikgewoJCQlpZiAoZW1wdHkoJHZhbHVlKSkgewoJCQkJJGNvbHVtbiA9IDE7CgkJCQkkdmFsdWUgPSAtMTsKCQkJCSRjb25kaXRpb24gPSBzZWxmOjpFUVVBTDsKCQkJfQoJCX0KCQkkdGhpcy0+Y29uZGl0aW9uc1tdID0gYXJyYXkgKCdjb2x1bW4nID0+ICRjb2x1bW4sICd2YWx1ZScgPT4gJHZhbHVlLCAnY29uZGl0aW9uJyA9PiAkY29uZGl0aW9uKTsKCX0KCQoJCglwdWJsaWMgZnVuY3Rpb24gc2V0TGltaXQoJGxpbWl0KQoJewoJCSR0aGlzLT5saW1pdCA9ICRsaW1pdDsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIHNldE9mZnNldCgkb2Zmc2V0KSB7CgkJJHRoaXMtPm9mZnNldCA9ICRvZmZzZXQ7Cgl9CgkKCS8vIFJFUVVFU1QgQlVJTERJTkcKCQoJCglwdWJsaWMgIGZ1bmN0aW9uIGJ1aWxkQ29uZGl0aW9ucygkdGFibGVfbmFtZSkKCXsKCQkvKiBGSVhNRTogUHJvY2VlZCB3aXRoIGFsbCB0aGUgcG9zc2libGUgY29uZGl0aW9ucyAqLwoJCQoJCSRxdWVyeSA9IG51bGw7CgkJLy8gV0hFUkUKCQkKCQlpZiAoY291bnQoJHRoaXMtPmNvbmRpdGlvbnMpID4wKQoJCXsKCQkJJHF1ZXJ5IC49ICcgV0hFUkUgJzsKCQkJCgkJCSRmaXJzdCA9IHRydWU7CgkJCQoJCQlmb3JlYWNoICgkdGhpcy0+Y29uZGl0aW9ucyBhcyAkY29uZGl0aW9uKQoJCQl7CgkJCQkkcXVlcnkgLj0gKCRmaXJzdCk/ICcnOicgQU5EICc7CgogICAgICAgIHN3aXRjaCAoJGNvbmRpdGlvblsnY29uZGl0aW9uJ10pIHsKICAgICAgICAJY2FzZSAnIElOICc6CgkJCQkJCWdsb2JhbCAkZ0NtczsgLy8gQmFkIGJlaGF2aW9yCgkJCQkJCSRkYiA9JiAkZ0Ntcy0+Z2V0RGIoKTsKICAgICAgICAJCWZvcmVhY2ggKCRjb25kaXRpb25bJ3ZhbHVlJ10gYXMgJiR2YWx1ZSkgewogICAgICAgIAkJCS8vICR2YWx1ZSA9ICInIiAuIG15c3FsaV9yZWFsX2VzY2FwZV9zdHJpbmcoJHZhbHVlKSAuICInIjsKICAgICAgICAJCQkkdmFsdWUgPSAkZGItPnFzdHIoJHZhbHVlKTsKICAgICAgICAJCX0KICAgICAgICAJCXVuc2V0KCR2YWx1ZSk7CiAgICAgICAgCQkkcXVlcnkgLj0gICRjb25kaXRpb25bJ2NvbHVtbiddIC4gJyBJTiAoJyAuIGltcGxvZGUoJywnLCAkY29uZGl0aW9uWyd2YWx1ZSddKSAuICcpJzsKICAgICAgICAJCWJyZWFrOwoJCQljYXNlICcgTVVMVElMSUtFICc6CgkJCQkkcXVlcnkgLj0gJyAoJzsKCQkJCQkkcXVlcnkgLj0gJGNvbmRpdGlvblsnY29sdW1uJ10gLiAnIExJS0UgPyc7CgkJCQkJJHRoaXMtPnZhbHVlc1tdID0gJGNvbmRpdGlvblsndmFsdWUnXTsKCQkJCQkkcXVlcnkgLj0gJyBPUiAnOwoJCQkJCSRxdWVyeSAuPSAkY29uZGl0aW9uWydjb2x1bW4nXSAuICcgTElLRSA/JzsKCQkJCQkkdGhpcy0+dmFsdWVzW10gPSAkY29uZGl0aW9uWyd2YWx1ZSddIC4gJ3x8fCUnOwoJCQkJCSRxdWVyeSAuPSAnIE9SICc7CgkJCQkJJHF1ZXJ5IC49ICRjb25kaXRpb25bJ2NvbHVtbiddIC4gJyBMSUtFID8nOwoJCQkJCSR0aGlzLT52YWx1ZXNbXSA9ICclfHx8JyAuICRjb25kaXRpb25bJ3ZhbHVlJ107CgkJCQkJJHF1ZXJ5IC49ICcgT1IgJzsKCQkJCQkkcXVlcnkgLj0gJGNvbmRpdGlvblsnY29sdW1uJ10gLiAnIExJS0UgPyc7CgkJCQkJJHRoaXMtPnZhbHVlc1tdID0gJyV8fHwnIC4gJGNvbmRpdGlvblsndmFsdWUnXSAuICd8fHwlJzsKCQkJCSRxdWVyeSAuPSAnKSAnOwoJCQkJYnJlYWs7CQkJCgkJCWNhc2UgJyBNVUxUSU5PVExJS0UgJzoKCQkJCSRxdWVyeSAuPSAnKCcuJGNvbmRpdGlvblsnY29sdW1uJ10gLicgaXMgbnVsbCBPUiAoJzsKCQkJCQkkcXVlcnkgLj0gJGNvbmRpdGlvblsnY29sdW1uJ10gLiAnIE5PVCBMSUtFID8nOwoJCQkJCSR0aGlzLT52YWx1ZXNbXSA9ICRjb25kaXRpb25bJ3ZhbHVlJ107CgkJCQkJJHF1ZXJ5IC49ICcgQU5EICc7CgkJCQkJJHF1ZXJ5IC49ICRjb25kaXRpb25bJ2NvbHVtbiddIC4gJyBOT1QgTElLRSA/JzsKCQkJCQkkdGhpcy0+dmFsdWVzW10gPSAkY29uZGl0aW9uWyd2YWx1ZSddIC4gJ3x8fCUnOwoJCQkJCSRxdWVyeSAuPSAnIEFORCAnOwoJCQkJCSRxdWVyeSAuPSAkY29uZGl0aW9uWydjb2x1bW4nXSAuICcgTk9UIExJS0UgPyc7CgkJCQkJJHRoaXMtPnZhbHVlc1tdID0gJyV8fHwnIC4gJGNvbmRpdGlvblsndmFsdWUnXTsKCQkJCQkkcXVlcnkgLj0gJyBBTkQgJzsKCQkJCQkkcXVlcnkgLj0gJGNvbmRpdGlvblsnY29sdW1uJ10gLiAnIE5PVCBMSUtFID8nOwoJCQkJCSR0aGlzLT52YWx1ZXNbXSA9ICclfHx8JyAuICRjb25kaXRpb25bJ3ZhbHVlJ10gLiAnfHx8JSc7CgkJCQkkcXVlcnkgLj0gJykpICc7CgkJCQlicmVhazsKCQkJY2FzZSAnIElTIEVNUFRZICc6CgkJCQkkcXVlcnkgLj0gICRjb25kaXRpb25bJ2NvbHVtbiddIC4gJyBJUyBOVUxMIE9SICcgLiAkY29uZGl0aW9uWydjb2x1bW4nXSAuICcgPSA/JzsKCQkJCSR0aGlzLT52YWx1ZXNbXSA9ICcnOwoJCQkJYnJlYWs7CgkJCWNhc2UgJyBJUyBOT1QgRU1QVFkgJzoKCQkJCSRxdWVyeSAuPSAgJGNvbmRpdGlvblsnY29sdW1uJ10gLiAnIElTIE5PVCBOVUxMIEFORCAnIC4gJGNvbmRpdGlvblsnY29sdW1uJ10gLiAnICE9ID8nOwoJCQkJJHRoaXMtPnZhbHVlc1tdID0gJyc7CgkJCQlicmVhazsKCQkJY2FzZSAnIElTIE5VTEwgJzoKCQkJY2FzZSAnIElTIE5PVCBOVUxMICc6CgkJCQkkcXVlcnkgLj0gICRjb25kaXRpb25bJ2NvbHVtbiddIC4gJGNvbmRpdGlvblsnY29uZGl0aW9uJ107CgkJCQlicmVhazsKCQkJCQoJCQljYXNlICcgVVBDT01JTkcgJzoKCQkJCSRxdWVyeSAuPSAkY29uZGl0aW9uWydjb2x1bW4nXSAuICcgPj0gTk9XKCknOwoJCQkJYnJlYWs7CQkJCgkJCWNhc2UgJyBQQVNUICc6CgkJCQkkcXVlcnkgLj0gJGNvbmRpdGlvblsnY29sdW1uJ10gLiAnIDwgTk9XKCknOwoJCQkJYnJlYWs7CiAgICAgIGRlZmF1bHQ6CiAgICAgICAgJHF1ZXJ5IC49ICAkY29uZGl0aW9uWydjb2x1bW4nXSAuICcgJyAuICRjb25kaXRpb25bJ2NvbmRpdGlvbiddIC4gJyA/JzsKICAgICAgICAkdGhpcy0+dmFsdWVzW10gPSAkY29uZGl0aW9uWyd2YWx1ZSddOwogICAgICB9CiAgICAgICAgCiAgICAgICAgICAgICAgICAKICAgICAgICAkZmlyc3QgPSBmYWxzZTsgCgkJCX0KCQkJCgkJCQoJCX0KCQkvLyBPUkRFUiBCWQoJCQoJCWlmIChjb3VudCgkdGhpcy0+b3JkZXJfYnkpID4gMCkKCQl7CgkJICAkcXVlcnkgLj0gJyBPUkRFUiBCWSAnOwoJCSAgCgkJICAkZmlyc3QgPSB0cnVlOwoJCSAgCgkJICBmb3JlYWNoICgkdGhpcy0+b3JkZXJfYnkgYXMgJG9yZGVyX2J5KSAKCQkgIHsKCQkgIAkkcXVlcnkgLj0gKCRmaXJzdCk/ICcnOicgLCc7CgkJICAJCgkJICAgICRxdWVyeSAuPSAgJG9yZGVyX2J5Wydjb2x1bW4nXSAuICcgJyAuICRvcmRlcl9ieVsnb3JkZXInXTsKCQkgICAgCQkgICAgCgkJICAgICRmaXJzdCA9IGZhbHNlOwkJICAJCgkJICB9CgoJCQoKCX0KCSRvZmZzZXQgPSAkdGhpcy0+b2Zmc2V0ID8gJHRoaXMtPm9mZnNldCA6IDA7CgkJJGxpbWl0ID0gJHRoaXMtPmxpbWl0ID8gJHRoaXMtPmxpbWl0IDogUEhQX0lOVF9NQVg7CgkJICRxdWVyeSAuPSAnIExJTUlUICcgLiRvZmZzZXQuJywnLiRsaW1pdDsKCXJldHVybiAkcXVlcnk7CgoJfQoJCglwdWJsaWMgZnVuY3Rpb24gYnVpbGRRdWVyeSgkdGFibGVfbmFtZSkKCXsKCQkkcXVlcnkgPSAnU0VMRUNUICc7CgkJCgkJaWYgKGNvdW50KCR0aGlzLT5zZWxlY3RlZF9jb2x1bW5zKSA+IDApCgkJewoJCQlmb3JlYWNoICgkdGhpcy0+c2VsZWN0ZWRfY29sdW1ucyBhcyAkY29sdW1uKSAKCQkJewoJCQkJJHF1ZXJ5IC49ICRjb2x1bW4gLiAnICc7CgkJCX0KCQl9CgkJZWxzZSAKCQl7CgkJCSRxdWVyeSAuPSAnICogJzsKCQl9CgkJCgkJJHF1ZXJ5IC49ICdGUk9NICcgLiAkdGFibGVfbmFtZTsKCQkJCQoJCSRxdWVyeSAuPSAkdGhpcy0+YnVpbGRDb25kaXRpb25zKCR0YWJsZV9uYW1lKTsKCQlyZXR1cm4gJHF1ZXJ5OwkJCgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldFZhbHVlcygpIHsKCQlyZXR1cm4gJHRoaXMtPnZhbHVlczsKCX0KCn0KCj8+]]></data>
	</file>
	<file>
	  <filename>/libraries/classes/MCFListView.class.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIE1DRkxpc3RWaWV3IHsKCglwcm90ZWN0ZWQgJG1vZHVsZTsKCXByb3RlY3RlZCAkdmlldzsKCXByb3RlY3RlZCAkdGl0bGVGaWx0ZXI7Cglwcm90ZWN0ZWQgJGNhdGVnb3J5RmlsdGVycyA9IGFycmF5KCk7Cglwcm90ZWN0ZWQgJHBhZ2VGaWx0ZXJzID0gYXJyYXkoKTsKCXByb3RlY3RlZCAkbW9kdWxlRmlsdGVycyA9IGFycmF5KCk7Cglwcm90ZWN0ZWQgJG9yZGVyQnkgPSAnb3JkZXJfYnknOwoJcHJvdGVjdGVkICRjdXN0b21PcmRlciA9IGZhbHNlOwoJcHJvdGVjdGVkICRwYWdlID0gMTsKCXByb3RlY3RlZCAkaXRlbXNQZXJQYWdlID0gMjA7CgoJcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRtb2R1bGUsICRwYXJhbXMpIHsKCQkkdGhpcy0+bW9kdWxlID0gJG1vZHVsZTsKCQlpZiAoaXNzZXQoJHBhcmFtc1sndmlldyddKSAmJiAkcGFyYW1zWyd2aWV3J10pIHsKCQkJJHRoaXMtPnZpZXcgPSAkcGFyYW1zWyd2aWV3J107CgkJCSR0aGlzLT50aXRsZUZpbHRlciA9IGlzc2V0KCRfU0VTU0lPTlsndmlld3MnXVskdGhpcy0+dmlld11bJ3RpdGxlRmlsdGVyJ10pID8gJF9TRVNTSU9OWyd2aWV3cyddWyR0aGlzLT52aWV3XVsndGl0bGVGaWx0ZXInXSA6IG51bGw7CgkJCSR0aGlzLT5jYXRlZ29yeUZpbHRlcnMgPSBpc3NldCgkX1NFU1NJT05bJ3ZpZXdzJ11bJHRoaXMtPnZpZXddWydjYXRlZ29yeUZpbHRlcnMnXSkgPyAkX1NFU1NJT05bJ3ZpZXdzJ11bJHRoaXMtPnZpZXddWydjYXRlZ29yeUZpbHRlcnMnXSA6IGFycmF5KCk7CgkJCSR0aGlzLT5wYWdlRmlsdGVycyA9IGlzc2V0KCRfU0VTU0lPTlsndmlld3MnXVskdGhpcy0+dmlld11bJ3BhZ2VGaWx0ZXJzJ10pID8gJF9TRVNTSU9OWyd2aWV3cyddWyR0aGlzLT52aWV3XVsncGFnZUZpbHRlcnMnXSA6IGFycmF5KCk7CgkJCSR0aGlzLT5tb2R1bGVGaWx0ZXJzID0gaXNzZXQoJF9TRVNTSU9OWyd2aWV3cyddWyR0aGlzLT52aWV3XVsnbW9kdWxlRmlsdGVycyddKSA/ICRfU0VTU0lPTlsndmlld3MnXVskdGhpcy0+dmlld11bJ21vZHVsZUZpbHRlcnMnXSA6IGFycmF5KCk7CQkKCQkJJHRoaXMtPnBhZ2UgPSBpc3NldCgkX1NFU1NJT05bJ3ZpZXdzJ11bJHRoaXMtPnZpZXddWydwYWdlJ10pID8gJF9TRVNTSU9OWyd2aWV3cyddWyR0aGlzLT52aWV3XVsncGFnZSddIDogMTsKIAkJfSBlbHNlIHsKCQkJJHRoaXMtPnZpZXcgPSB1bmlxaWQoKTsKCQl9CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ3BhZ2UnXSkpIHsKCQkgICAgJHRoaXMtPnNldFBhZ2UoJHBhcmFtc1sncGFnZSddKTsKCQl9CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2NsZWFyX2ZpbHRlcnMnXSkpIHsKCQkJJHRoaXMtPnNldFRpdGxlRmlsdGVyKG51bGwpOwoJCQkkdGhpcy0+c2V0Q2F0ZWdvcnlGaWx0ZXJzKGFycmF5KCkpOwoJCQkkdGhpcy0+c2V0UGFnZUZpbHRlcnMoYXJyYXkoKSk7CgkJCSR0aGlzLT5zZXRNb2R1bGVGaWx0ZXJzKGFycmF5KCkpOwkJCQoJCX0gZWxzZSB7CgkJCWlmIChpc3NldCgkcGFyYW1zWyd0aXRsZUZpbHRlciddKSkgewoJCQkJJHRoaXMtPnNldFRpdGxlRmlsdGVyKCRwYXJhbXNbJ3RpdGxlRmlsdGVyJ10pOwoJCQl9CgkJCWlmIChpc3NldCgkcGFyYW1zWydjYXRlZ29yeUZpbHRlcnMnXSkpIHsKCQkJCSR0aGlzLT5zZXRDYXRlZ29yeUZpbHRlcnMoJHBhcmFtc1snY2F0ZWdvcnlGaWx0ZXJzJ10pOwoJCQl9CgkJCWlmIChpc3NldCgkcGFyYW1zWydwYWdlRmlsdGVycyddKSkgewoJCQkJCQkJJHRoaXMtPnNldFBhZ2VGaWx0ZXJzKCRwYXJhbXNbJ3BhZ2VGaWx0ZXJzJ10pOwoJCQl9CgkJCWlmIChpc3NldCgkcGFyYW1zWydtb2R1bGVGaWx0ZXJzJ10pKSB7CgkJCQkkdGhpcy0+c2V0TW9kdWxlRmlsdGVycygkcGFyYW1zWydtb2R1bGVGaWx0ZXJzJ10pOwoJCQl9CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRWaWV3KCkgewoJCXJldHVybiAkdGhpcy0+dmlldzsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0VGl0bGVGaWx0ZXIoKSB7CgkJcmV0dXJuICR0aGlzLT50aXRsZUZpbHRlcjsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0VGl0bGVGaWx0ZXIoJGZpbHRlcikgewoJCSRjbGVhbiA9IHRyaW0oJGZpbHRlcik7CgkJJHRoaXMtPnRpdGxlRmlsdGVyID0gJGNsZWFuOwoJCSRfU0VTU0lPTlsndmlld3MnXVskdGhpcy0+dmlld11bJ3RpdGxlRmlsdGVyJ10gPSAkY2xlYW47CgkJJHRoaXMtPmN1c3RvbU9yZGVyID0gKCR0aGlzLT5vcmRlckJ5ICE9ICdvcmRlcl9ieScpIHx8ICFlbXB0eSgkdGhpcy0+dGl0bGVGaWx0ZXIpIHx8IGNvdW50KCR0aGlzLT5jYXRlZ29yeUZpbHRlcnMpIHx8IGNvdW50KCR0aGlzLT5wYWdlRmlsdGVycykgfHwgY291bnQoJHRoaXMtPm1vZHVsZUZpbHRlcnMpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRDYXRlZ29yeUZpbHRlcnMoKSB7CgkJcmV0dXJuICR0aGlzLT5jYXRlZ29yeUZpbHRlcnM7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNldENhdGVnb3J5RmlsdGVycygkZmlsdGVycykgewoJCSRjbGVhbiA9IGFycmF5KCk7CgkJZm9yZWFjaCAoJGZpbHRlcnMgYXMgJGZpbHRlcikgewoJCQlpZiAoIWVtcHR5KCRmaWx0ZXIpKSB7CgkJCQkkY2xlYW5bXSA9ICRmaWx0ZXI7CgkJCX0KCQl9CgkJJHRoaXMtPmNhdGVnb3J5RmlsdGVycyA9ICRjbGVhbjsKCQkkX1NFU1NJT05bJ3ZpZXdzJ11bJHRoaXMtPnZpZXddWydjYXRlZ29yeUZpbHRlcnMnXSA9ICRjbGVhbjsKCQkkdGhpcy0+Y3VzdG9tT3JkZXIgPSAoJHRoaXMtPm9yZGVyQnkgIT0gJ29yZGVyX2J5JykgfHwgIWVtcHR5KCR0aGlzLT50aXRsZUZpbHRlcikgfHwgY291bnQoJHRoaXMtPmNhdGVnb3J5RmlsdGVycykgfHwgY291bnQoJHRoaXMtPnBhZ2VGaWx0ZXJzKSB8fCBjb3VudCgkdGhpcy0+bW9kdWxlRmlsdGVycyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldFBhZ2VGaWx0ZXJzKCkgewoJCXJldHVybiAkdGhpcy0+cGFnZUZpbHRlcnM7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNldFBhZ2VGaWx0ZXJzKCRmaWx0ZXJzKSB7CgkJJGNsZWFuID0gYXJyYXkoKTsKCQlmb3JlYWNoICgkZmlsdGVycyBhcyAkZmlsdGVyKSB7CgkJCWlmICghZW1wdHkoJGZpbHRlcikpIHsKCQkJCSRjbGVhbltdID0gJGZpbHRlcjsKCQkJfQoJCX0KCQkkdGhpcy0+cGFnZUZpbHRlcnMgPSAkY2xlYW47CgkJJF9TRVNTSU9OWyd2aWV3cyddWyR0aGlzLT52aWV3XVsncGFnZUZpbHRlcnMnXSA9ICRjbGVhbjsKCQkkdGhpcy0+Y3VzdG9tT3JkZXIgPSAoJHRoaXMtPm9yZGVyQnkgIT0gJ29yZGVyX2J5JykgfHwgIWVtcHR5KCR0aGlzLT50aXRsZUZpbHRlcikgfHwgY291bnQoJHRoaXMtPmNhdGVnb3J5RmlsdGVycykgfHwgY291bnQoJHRoaXMtPnBhZ2VGaWx0ZXJzKSB8fCBjb3VudCgkdGhpcy0+bW9kdWxlRmlsdGVycyk7Cgl9CQoJCglwdWJsaWMgZnVuY3Rpb24gZ2V0TW9kdWxlRmlsdGVycygpIHsKCQlyZXR1cm4gJHRoaXMtPm1vZHVsZUZpbHRlcnM7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNldE1vZHVsZUZpbHRlcnMoJGZpbHRlcnMpIHsKCQkkY29uZGl0aW9ucyA9IGFycmF5KCk7CgkJZm9yZWFjaCgkZmlsdGVycyBhcyAkZmllbGQgPT4gJGZpbHRlcikKCQl7CgkJCWlmICghZW1wdHkoJGZpbHRlcikpIAoJCQl7CgkJCQkkY29uZGl0aW9uc1skZmllbGRdID0gJGZpbHRlcjsKCQkJfQoJCX0KCQkkdGhpcy0+bW9kdWxlRmlsdGVycyA9ICRjb25kaXRpb25zOwoJCSRfU0VTU0lPTlsndmlld3MnXVskdGhpcy0+dmlld11bJ21vZHVsZUZpbHRlcnMnXSA9ICRjb25kaXRpb25zOwoJCSR0aGlzLT5jdXN0b21PcmRlciA9ICgkdGhpcy0+b3JkZXJCeSAhPSAnb3JkZXJfYnknKSB8fCAhZW1wdHkoJHRoaXMtPnRpdGxlRmlsdGVyKSB8fCBjb3VudCgkdGhpcy0+Y2F0ZWdvcnlGaWx0ZXJzKSB8fCBjb3VudCgkdGhpcy0+cGFnZUZpbHRlcnMpIHx8IGNvdW50KCR0aGlzLT5tb2R1bGVGaWx0ZXJzKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0T3JkZXJCeSgkdmFsdWUpIHsKCQkkdGhpcy0+b3JkZXJCeSA9IHN0cnRvbG93ZXIoJHZhbHVlKTsKCQkkdGhpcy0+Y3VzdG9tT3JkZXIgPSAoIWluX2FycmF5KCR0aGlzLT5vcmRlckJ5LCBhcnJheSgnb3JkZXJfYnknLCAnb3JkZXJfYnkgYXNjJykpKSB8fCAhZW1wdHkoJHRoaXMtPnRpdGxlRmlsdGVyKSB8fCBjb3VudCgkdGhpcy0+Y2F0ZWdvcnlGaWx0ZXJzKSB8fCBjb3VudCgkdGhpcy0+cGFnZUZpbHRlcnMpIHx8IGNvdW50KCR0aGlzLT5tb2R1bGVGaWx0ZXJzKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0SXRlbXNQZXJQYWdlKCR2YWx1ZSkgewoJCSR0aGlzLT5pdGVtc1BlclBhZ2UgPSAkdmFsdWU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzQ3VzdG9tT3JkZXIoKSB7CgkJcmV0dXJuICR0aGlzLT5jdXN0b21PcmRlcjsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0SXRlbXNQZXJQYWdlKCkgewoJCXJldHVybiAkdGhpcy0+aXRlbXNQZXJQYWdlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRQYWdlKCkgewoJCXJldHVybiAkdGhpcy0+cGFnZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0UGFnZSgkcGFnZSkgewoJCSR0aGlzLT5wYWdlID0gJHBhZ2U7CgkJJF9TRVNTSU9OWyd2aWV3cyddWyR0aGlzLT52aWV3XVsncGFnZSddID0gJHBhZ2U7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldENyaXRlcmlhKCkgewoJCSRjID0gbmV3IE1DRkNyaXRlcmlhKCk7CgkJaWYgKCFlbXB0eSgkdGhpcy0+dGl0bGVGaWx0ZXIpKSB7CgkJCSRjLT5hZGQoJ3RpdGxlJywgJyUnIC4gJHRoaXMtPnRpdGxlRmlsdGVyIC4gJyUnLCBNQ0ZDcml0ZXJpYTo6TElLRSk7CgkJfQoJCWlmIChjb3VudCgkdGhpcy0+Y2F0ZWdvcnlGaWx0ZXJzKSkgewoJCQkkYy0+YWRkKCdpZCcsIE1YX1JlbGF0aW9uTGluazo6Z2V0UmVsYXRlZEl0ZW1zSWRzKCR0aGlzLT5tb2R1bGUsICR0aGlzLT5jYXRlZ29yeUZpbHRlcnMsICdvcHRpb25zJywgJ0FORCcpLCBNQ0ZDcml0ZXJpYTo6SU4pOwoJCX0KCQlpZiAoY291bnQoJHRoaXMtPnBhZ2VGaWx0ZXJzKSkgewoJCQkkYy0+YWRkKCdpZCcsIE1YX1JlbGF0aW9uTGluazo6Z2V0UmVsYXRlZEl0ZW1zSWRzKCR0aGlzLT5tb2R1bGUsICR0aGlzLT5wYWdlRmlsdGVycywgJ3BhZ2VzJywgJ0FORCcpLCBNQ0ZDcml0ZXJpYTo6SU4pOwoJCX0KCQlpZiAoY291bnQoJHRoaXMtPm1vZHVsZUZpbHRlcnMpKSB7CgkJCWdsb2JhbCAkZ0NtczsKCQkJJGdDbXMtPm1vZHVsZXNbJHRoaXMtPm1vZHVsZV1bJ29iamVjdCddLT5idWlsZEZpbHRlcnNDcml0ZXJpYSgkYywgJHRoaXMtPm1vZHVsZUZpbHRlcnMpOwoJCX0KCQlyZXR1cm4gJGM7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldEl0ZW1zKCkgewoJCSR0b3RhbFBhZ2VzID0gJHRoaXMtPmdldFRvdGFsUGFnZXMoKTsKCQlpZiAoJHRoaXMtPnBhZ2UgPiAkdG90YWxQYWdlcykgewoJCQkkdGhpcy0+c2V0UGFnZSgkdG90YWxQYWdlcyk7CgkJfQoJCSRjID0gJHRoaXMtPmdldENyaXRlcmlhKCk7CgkJaWYgKHByZWdfbWF0Y2goJy8oXHcrKSg/OiAoYXNjfGRlc2MpKT8vaScsICR0aGlzLT5vcmRlckJ5LCAkbWF0Y2hlcykpIHsKCQkJJGNvbHVtbiA9ICRtYXRjaGVzWzFdOwoJCQkkb3JkZXIgPSBpc3NldCgkbWF0Y2hlc1syXSkgPyBzdHJ0b2xvd2VyKCRtYXRjaGVzWzJdKSA6ICdhc2MnOwoJCQlpZiAoJG9yZGVyID09ICdkZXNjJykgewoJCQkJJGMtPmFkZERlc2NlbmRpbmdPcmRlckJ5Q29sdW1uKCRjb2x1bW4pOwoJCQl9IGVsc2UgewoJCQkJJGMtPmFkZEFzY2VuZGluZ09yZGVyQnlDb2x1bW4oJGNvbHVtbik7CgkJCX0KCQl9CgkJJGMtPnNldE9mZnNldCgoJHRoaXMtPnBhZ2UgLSAxKSAqICR0aGlzLT5pdGVtc1BlclBhZ2UpOwoJCSRjLT5zZXRMaW1pdCgkdGhpcy0+aXRlbXNQZXJQYWdlKTsKCQlyZXR1cm4gY2FsbF91c2VyX2Z1bmMoYXJyYXkoJHRoaXMtPm1vZHVsZSAuICdPYmplY3QnLCAnZG9TZWxlY3QnKSwgJGMpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRUb3RhbEl0ZW1zKCkgewoJCSRjID0gJHRoaXMtPmdldENyaXRlcmlhKCk7CgkJcmV0dXJuIGNhbGxfdXNlcl9mdW5jKGFycmF5KCR0aGlzLT5tb2R1bGUgLiAnT2JqZWN0JywgJ2RvQ291bnQnKSwgJGMpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRUb3RhbFBhZ2VzKCkgewoJCWlmICgkdGhpcy0+aXRlbXNQZXJQYWdlICE9IDApCgkJewoJCQlyZXR1cm4gbWF4KDEsIGNlaWwoJHRoaXMtPmdldFRvdGFsSXRlbXMoKSAvICR0aGlzLT5pdGVtc1BlclBhZ2UpKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIG51bGw7CgkJfQoJfQoKfQoKPz4=]]></data>
	</file>
	<file>
	  <filename>/libraries/classes/MCFModule.class.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBNQ0ZNb2R1bGUgQ2xhc3MKICogCiAqIFRoaXMgY2xhc3MgaGFuZGxlIGFsbCB0aGUgbWFuaXB1bGF0aW9ucyBvbiB0aGUgTSZDIEZhY3RvcnkgTW9kdWxlIG9iamVjdAogKiAKICogTk9URTogSXQgc2hvdWxkIGJlIHNwbGl0IGluIHR3byBjbGFzc2VzIGJ1dCBmb3IgY29udmVuaWVuY2UsIEl0IHdvbid0LgogKgogKiBGSVhNRTogQ2hlY2sgdGhlIHNlY3VyaXR5IHByb2Nlc3NlcyAhCiAqIAogKi8KCmNsYXNzIE1DRk1vZHVsZSB7CgoJLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgkvLyBDTEFTUyBQUk9QRVJUSUVTIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKCXByb3RlY3RlZCAkaWQ7Cglwcm90ZWN0ZWQgJG1vZHVsZV9uYW1lOwoJcHJvdGVjdGVkICRtb2R1bGVfZnJpZW5kbHluYW1lOwoJcHJvdGVjdGVkICRtb2R1bGVfdmVyc2lvbiA9IDE7Cglwcm90ZWN0ZWQgJHRpdGxlX25hbWU7Cglwcm90ZWN0ZWQgJGNyZWF0ZWRfYXQ7Cglwcm90ZWN0ZWQgJGNyZWF0ZWRfYnk7Cglwcm90ZWN0ZWQgJHVwZGF0ZWRfYXQ7Cglwcm90ZWN0ZWQgJHVwZGF0ZWRfYnk7Cglwcm90ZWN0ZWQgJGV4dHJhX2ZpZWxkcyA9IGFycmF5KCk7Cglwcm90ZWN0ZWQgJGRlbGV0ZV9maWVsZHMgPSBhcnJheSgpOwoJcHJvdGVjdGVkICRmaWx0ZXJzID0gYXJyYXkoKTsKCXByb3RlY3RlZCAkcGFyZW50X21vZHVsZTsKCXByb3RlY3RlZCAkc2hvd19tb2R1bGU7CQoJcHJvdGVjdGVkICRhZG1pbl9zZWN0aW9uOwoJcHJvdGVjdGVkICRpc191c2VyX21vZHVsZTsKCXByb3RlY3RlZCAkaXNfcHJvdGVjdGVkOwoJcHJvdGVjdGVkICRmaWxlc19wYXRoOwoJcHJvdGVjdGVkICRtb2R1bGVfbG9naWM7Cglwcm90ZWN0ZWQgJHRlbXBsYXRlc19kYXRhOwoKCXByb3RlY3RlZCAkaXNfbW9kaWZpZWQgPSBmYWxzZTsKCgkvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KCS8vIENMQVNTIE1FVEhPRFMgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoJLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgoJLy8gR0VUVEVSIEZVTkNUSU9OUwoKCXB1YmxpYyBmdW5jdGlvbiBnZXRJZCgpIHsKCQlyZXR1cm4gJHRoaXMtPmlkOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRNb2R1bGVOYW1lKCkgewoJCWlmIChlbXB0eSgkdGhpcy0+bW9kdWxlX25hbWUpKQoJCXsKCQkJJHZhbHVlID0gcHJlZ19yZXBsYWNlKCcvXFcvJywgJyAnLCAkdGhpcy0+bW9kdWxlX2ZyaWVuZGx5bmFtZSk7CgkJCSR2YWx1ZSA9IHVjd29yZHMoc3RydG9sb3dlcigkdmFsdWUpKTsKCQkJJHZhbHVlID0gcHJlZ19yZXBsYWNlKCcvXHMvJywgJycsICR2YWx1ZSk7CgkJCSR0aGlzLT5zZXQoJ21vZHVsZV9uYW1lJywgc2VsZjo6Y2hlY2tNb2R1bGVOYW1lQXZhaWxhYmlsaXR5KCR2YWx1ZSkpOwkKCQl9CgkJcmV0dXJuICR0aGlzLT5tb2R1bGVfbmFtZTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKQoJewoJCXJldHVybiAkdGhpcy0+Z2V0TW9kdWxlTmFtZSgpOwoJfQoKCXByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGNoZWNrTW9kdWxlTmFtZUF2YWlsYWJpbGl0eSgkbW9kdWxlX25hbWUsICRpdGVyYXRvciA9IDApCgl7CgkJJG1vZHVsZSA9ICRtb2R1bGVfbmFtZTsKCQlpZiAoJGl0ZXJhdG9yID4gMCkKCQl7CgkJCSRtb2R1bGUgLj0gJGl0ZXJhdG9yOwoJCX0KCQkKCQlnbG9iYWwgJGdDbXM7CgkJaWYgKGlzc2V0KCRnQ21zLT5tb2R1bGVzWyRtb2R1bGVdKSkKCQl7CgkJCSRpdGVyYXRvcisrOwoJCQlyZXR1cm4gc2VsZjo6Y2hlY2tNb2R1bGVOYW1lQXZhaWxhYmlsaXR5KCRtb2R1bGVfbmFtZSwkaXRlcmF0b3IpOwoJCX0KCQllbHNlCgkJewoJCQlyZXR1cm4gJG1vZHVsZTsKCQl9Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldE1vZHVsZUZyaWVuZGx5bmFtZSgpIHsKCQlyZXR1cm4gJHRoaXMtPm1vZHVsZV9mcmllbmRseW5hbWU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldE1vZHVsZVZlcnNpb24oKSB7CgkJcmV0dXJuICR0aGlzLT5tb2R1bGVfdmVyc2lvbjsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0Q3JlYXRlZEF0KCkgewoJCXJldHVybiAkdGhpcy0+Y3JlYXRlZF9hdDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0Q3JlYXRlZEJ5KCkgewoJCXJldHVybiAkdGhpcy0+Y3JlYXRlZF9ieTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0VXBkYXRlZEF0KCkgewoJCXJldHVybiAkdGhpcy0+dXBkYXRlZF9hdDsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0VXBkYXRlZEJ5KCkgewoJCXJldHVybiAkdGhpcy0+dXBkYXRlZF9ieTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0RXh0cmFGaWVsZHMoKSB7CgkJcmV0dXJuICR0aGlzLT5leHRyYV9maWVsZHM7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldERlbGV0ZUZpZWxkcygpIHsKCQlyZXR1cm4gJHRoaXMtPmRlbGV0ZV9maWVsZHM7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldEZpbHRlcnMoKSB7CgkJc29ydCgkdGhpcy0+ZmlsdGVycyk7CgkJcmV0dXJuICR0aGlzLT5maWx0ZXJzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRQYXJlbnRNb2R1bGUoKSB7CgkJcmV0dXJuICR0aGlzLT5wYXJlbnRfbW9kdWxlOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gZ2V0Q2hpbGRNb2R1bGVzKCkKCXsKCQkkYyA9IG5ldyBNQ0ZDcml0ZXJpYSgpOwoJCSRjLT5hZGQoJ3BhcmVudF9tb2R1bGUnLCAkdGhpcy0+Z2V0SWQoKSk7CgkJcmV0dXJuIHNlbGY6OmRvU2VsZWN0KCRjKTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGdldFNob3dNb2R1bGUoKSB7CgkJCXJldHVybiAkdGhpcy0+c2hvd19tb2R1bGU7CgkJfSAKCQoJZnVuY3Rpb24gZ2V0SXNVc2VyTW9kdWxlKCkgewoJCQlyZXR1cm4gJHRoaXMtPmlzX3VzZXJfbW9kdWxlOwoJCX0KCQkKCWZ1bmN0aW9uIGdldElzUHJvdGVjdGVkKCkgewoJCQlyZXR1cm4gJHRoaXMtPmlzX3Byb3RlY3RlZDsKCQl9CgkJCglmdW5jdGlvbiBnZXRGaWxlc1BhdGgoKSB7CgkJLy8gQ291bGQgaGF2ZSBkZWZhdWx0IHBhdGggYnV0IGRhbmdlcm91cyBpZiB1c2VyIGRvIG5vdCBtb2RpZnkgaXQgd2hlbiBtb3ZpbmcgdGhlIHdlYnNpdGUuLi4KCQkvLyBpZiAoIWVtcHR5KCR0aGlzLT5maWxlc19wYXRoKSkJcmV0dXJuICR0aGlzLT5maWxlc19wYXRoOwoJCS8vIAlnbG9iYWwgJGdDbXM7CgkJLy8gCSRjb25maWcgPSAkZ0Ntcy0+Z2V0Q29uZmlnKCk7CgkJLy8gCXJldHVybiAkY29uZmlnWyd1cGxvYWRzX3BhdGgnXTsKCQlyZXR1cm4gJHRoaXMtPmZpbGVzX3BhdGg7IC8vIEVtcHR5IHBhdGggbWVhbnMgJGNvbmZpZ1sndXBsb2Fkc19wYXRoJ107CgkJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRNb2R1bGVMb2dpYygpIHsKCQlyZXR1cm4gJHRoaXMtPm1vZHVsZV9sb2dpYzsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGdldFRlbXBsYXRlc0RhdGEoKSB7CgkJcmV0dXJuICR0aGlzLT50ZW1wbGF0ZXNfZGF0YTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGdldEFkbWluU2VjdGlvbigpIHsKCQlyZXR1cm4gJHRoaXMtPmFkbWluX3NlY3Rpb247Cgl9CgoJLy8gU0VUVEVSIEZVTkNUSU9OUwoKCXByb3RlY3RlZCBmdW5jdGlvbiBzZXQoJG5hbWUsICR2YWx1ZSkgewoJCWlmICgkdGhpcy0+JG5hbWUgIT09ICR2YWx1ZSkgewoJCQkkdGhpcy0+JG5hbWUgPSAkdmFsdWU7CgkJCSR0aGlzLT5pc19tb2RpZmllZCA9IHRydWU7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRJZCgkdmFsdWUpIHsKCQkkdGhpcy0+c2V0KCdpZCcsICR2YWx1ZSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNldE1vZHVsZU5hbWUoJHZhbHVlKSB7CgkJJHRoaXMtPnNldCgnbW9kdWxlX25hbWUnLCAkdmFsdWUpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRNb2R1bGVGcmllbmRseW5hbWUoJHZhbHVlKSB7CgkJJHRoaXMtPnNldCgnbW9kdWxlX2ZyaWVuZGx5bmFtZScsICR2YWx1ZSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNldE1vZHVsZVZlcnNpb24oJHZhbHVlKSB7CgkJJHRoaXMtPnNldCgnbW9kdWxlX3ZlcnNpb24nLCAkdmFsdWUpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRDcmVhdGVkQXQoJHZhbHVlKSB7CgkJJHRoaXMtPnNldCgnY3JlYXRlZF9hdCcsICR2YWx1ZSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNldENyZWF0ZWRCeSgkdmFsdWUpIHsKCQkkdGhpcy0+c2V0KCdjcmVhdGVkX2J5JywgJHZhbHVlKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0VXBkYXRlZEF0KCR2YWx1ZSkgewoJCSR0aGlzLT5zZXQoJ3VwZGF0ZWRfYXQnLCAkdmFsdWUpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRVcGRhdGVkQnkoJHZhbHVlKSB7CgkJJHRoaXMtPnNldCgndXBkYXRlZF9ieScsICR2YWx1ZSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNldFNob3dNb2R1bGUoJHZhbHVlKSB7CgkJJHRoaXMtPnNldCgnc2hvd19tb2R1bGUnLCAkdmFsdWUpOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gc2V0SXNVc2VyTW9kdWxlKCR2YWx1ZSkgewoJCSR0aGlzLT5zZXQoJ2lzX3VzZXJfbW9kdWxlJywgJHZhbHVlKTsKCX0JCgkKCXB1YmxpYyBmdW5jdGlvbiBzZXRJc1Byb3RlY3RlZCgkdmFsdWUpIHsKCQkkdGhpcy0+c2V0KCdpc19wcm90ZWN0ZWQnLCAkdmFsdWUpOwoJfQkKCQoJcHVibGljIGZ1bmN0aW9uIHNldEZpbGVzUGF0aCgkdmFsdWUpIHsKCQkkdGhpcy0+c2V0KCdmaWxlc19wYXRoJywgJHZhbHVlKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0TW9kdWxlTG9naWMoJHZhbHVlKSB7CgkJJHRoaXMtPnNldCgnbW9kdWxlX2xvZ2ljJywgJHZhbHVlKTsKCX0KCQkKCXB1YmxpYyBmdW5jdGlvbiBzZXRUZW1wbGF0ZXNEYXRhKCR2YWx1ZSkgewoJCSR0aGlzLT5zZXQoJ3RlbXBsYXRlc19kYXRhJywgJHZhbHVlKTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIHNldEFkbWluU2VjdGlvbigkdmFsdWUpIHsKCQkkdGhpcy0+c2V0KCdhZG1pbl9zZWN0aW9uJywgJHZhbHVlKTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIHNldEV4dHJhRmllbGRzKCR2YWx1ZSkgewoJCSRibGFja2xpc3QgPSBhcnJheSgnaWQnLCAncGFyZW50X2lkJywgJ3RpdGxlJywgJ2NyZWF0ZWRfYXQnLCAnY3JlYXRlZF9ieScsICd1cGRhdGVkX2F0JywgJ3VwZGF0ZWRfYnknLCAnb3JkZXJfYnknLCAncGFyZW50JywgJ3BhcmVudF9tb2R1bGUnLCAncHVibGlzaGVkJywgJ29yZGVyJywgJ29yZGVyX2J5JywgJ2Zyb20nLCAnc2VsZWN0JywgJ2luJywgJ2RhdGUnLCAnZnVsbF90ZXh0X3NlYXJjaCcsJ2NvcmVfc2x1ZycsJ2NvcmVzbHVnJywndXNlcl9pZCcsICdmdW5jdGlvbicsICdmaWxlcycpOwoJCSRmaWx0ZXIgPSBhcnJheSgpOwoJCWlmIChpc19hcnJheSgkdmFsdWUpKSB7CgkJCWZvcmVhY2ggKCR2YWx1ZSBhcyAkZmllbGQpIHsKCQkJCWlmICgoJGZpZWxkWydsYWJlbCddKSA9PSAnJykgeyAkZmllbGRbJ2xhYmVsJ10gPSAkZmllbGRbJ25hbWUnXTt9CgkJCQkkZmllbGRbJ25hbWUnXSA9IHByZWdfcmVwbGFjZSgnL1xXLycsICcnLCBzdHJ0b2xvd2VyKCRmaWVsZFsnbmFtZSddKSk7CgkJCQlpZiAoIWVtcHR5KCRmaWVsZFsnbmFtZSddKSAmJiAhaW5fYXJyYXkoJGZpZWxkWyduYW1lJ10sICRibGFja2xpc3QpKSB7CgkJCQkJJGZpbHRlcltdID0gJGZpZWxkOwoJCQkJfQoJCQl9CgkJfQoJCSR0aGlzLT5zZXQoJ2V4dHJhX2ZpZWxkcycsICRmaWx0ZXIpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBvcmRlckV4dHJhRmllbGRzKCRpZCwgJGRpcmVjdGlvbikKCXsKCQkkZmllbGRzID0gJHRoaXMtPmdldEV4dHJhRmllbGRzKCk7CgkJaWYgKCRkaXJlY3Rpb24gPT0gJ3VwJykKCQl7CQoJCQkkaWQxID0gJGlkOwoJCQkkaWQyID0gJGlkLTE7CQkJCgkJfQoJCQoJCWlmICgkZGlyZWN0aW9uID09ICdkb3duJykKCQl7CQoJCQkkaWQxID0gJGlkOwoJCQkkaWQyID0gJGlkKzE7CQkJCgkJfQoJCQoJCWlmIChpc3NldCgkZmllbGRzWyRpZDFdKSAmJiBpc3NldCgkZmllbGRzWyRpZDJdKSkKCQl7CgkJCSRmaWVsZDEgPSAkZmllbGRzWyRpZDFdOwoJCQkkZmllbGQyID0gJGZpZWxkc1skaWQyXTsKCQkJJGZpZWxkc1skaWQxXSA9ICRmaWVsZDI7CgkJCSRmaWVsZHNbJGlkMl0gPSAkZmllbGQxOwkJCQoJCX0KCQkkdGhpcy0+c2V0KCdleHRyYV9maWVsZHMnLCRmaWVsZHMpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXREZWxldGVGaWVsZHMoJHZhbHVlKSB7CgkJJHRoaXMtPnNldCgnZGVsZXRlX2ZpZWxkcycsICR2YWx1ZSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNldEZpbHRlcnMoJHZhbHVlKSB7CgkJaWYgKGlzX2FycmF5KCR2YWx1ZSkpIHsKCQkJZm9yZWFjaCAoJHZhbHVlIGFzICYkZmlsdGVyKSB7CgkJCQkkZmlsdGVyWyduYW1lJ10gPSBwcmVnX3JlcGxhY2UoJy9cVy8nLCAnJywgJGZpbHRlclsnbmFtZSddKTsKCQkJCSRmaWx0ZXJbJ2ZpZWxkJ10gPSBwcmVnX3JlcGxhY2UoJy9cVy8nLCAnJywgJGZpbHRlclsnZmllbGQnXSk7CgkJCX0KCQl9CgkJJHRoaXMtPnNldCgnZmlsdGVycycsICR2YWx1ZSk7Cgl9CgkJCglwdWJsaWMgZnVuY3Rpb24gc2V0UGFyZW50TW9kdWxlKCR2YWx1ZSkgewoJCSR0aGlzLT5zZXQoJ3BhcmVudF9tb2R1bGUnLCAkdmFsdWUpOwoJCWlmICgkdmFsdWUgPiAwKQoJCXsKCQkJaWYgKGlzX2FycmF5KCR0aGlzLT5maWx0ZXJzKSkKCQkJewoJCQkJJGV4aXN0cyA9IGZhbHNlOwoJCQkJZm9yZWFjaCgkdGhpcy0+ZmlsdGVycyBhcyAkZmlsdGVyKQoJCQkJewoJCQkJCWlmICgkZmlsdGVyWyduYW1lJ10gPT0gJ3BhcmVudF9pdGVtJykKCQkJCQl7CgkJCQkJCSRleGlzdHMgPSB0cnVlOwoJCQkJCX0KCQkJCX0KCQkJCWlmKCRleGlzdHMgPT0gZmFsc2UpCgkJCQl7CgkJCQkJJHRoaXMtPmZpbHRlcnNbXSA9IGFycmF5KCduYW1lJyA9PiAncGFyZW50X2l0ZW0nLCAnZmllbGQnID0+ICdwYXJlbnRfaXRlbScsICd0eXBlJyA9PiAnZXF1YWwnKTsKCQkJCX0KCQkJfQoJCX0KCX0KCgkvLyBPVEhFUiBGVU5DVElPTlMKCglwdWJsaWMgZnVuY3Rpb24gZ2V0RmllbGRUeXBlcygpIHsKCQlyZXR1cm4gYXJyYXkoCgkJCSd0ZXh0JyA9PiBhcnJheSgKCQkJCSd0eXBlJyA9PiAndGV4dCcsCgkJCQknbGFiZWwnID0+ICdUZXh0IGZpZWxkJywKCQkJCSdjb2x1bW5fdHlwZScgPT4gJ0MoMjU1KScsCgkJCQknZm9ybV90eXBlJyA9PiAndGV4dCcsCgkJCQknb3B0aW9ucycgPT4gdHJ1ZQoJCQkpLAoJCQkndGV4dGFyZWEnID0+IGFycmF5KAoJCQkJJ3R5cGUnID0+ICd0ZXh0YXJlYScsCgkJCQknbGFiZWwnID0+ICdUZXh0IGFyZWEnLAoJCQkJJ2NvbHVtbl90eXBlJyA9PiAnWCcsCgkJCQknZm9ybV90eXBlJyA9PiAndGV4dGFyZWEnLAoJCQkJJ29wdGlvbnMnID0+IHRydWUKCQkJKSwKCQkJJ3RleHRhcmVhX3BsYWluJyA9PiBhcnJheSgKCQkJCSd0eXBlJyA9PiAndGV4dGFyZWFfcGxhaW4nLAoJCQkJJ2xhYmVsJyA9PiAnVGV4dCBhcmVhIChubyBXWVNJV1lHKScsCgkJCQknY29sdW1uX3R5cGUnID0+ICdYJywKCQkJCSdmb3JtX3R5cGUnID0+ICd0ZXh0YXJlYV9wbGFpbicsCgkJCQknb3B0aW9ucycgPT4gdHJ1ZQoJCQkpLAoJCQknc2VsZWN0JyA9PiBhcnJheSgKCQkJCSd0eXBlJyA9PiAnc2VsZWN0JywKCQkJCSdsYWJlbCcgPT4gJ0Ryb3Bkb3duJywKCQkJCSdjb2x1bW5fdHlwZScgPT4gJ0MoMjU1KScsCgkJCQknZm9ybV90eXBlJyA9PiAnc2VsZWN0JywKCQkJCSdvcHRpb25zJyA9PiB0cnVlLAoJCQkJJ29wdGlvbnNfZGVmYXVsdCcgPT4gJ3ZhbHVlczpvcHRpb24xPT5PcHRpb24gMSxvcHRpb24yPT5PcHRpb24yOycKCQkJKSwKCQkJJ2RhdGUnID0+IGFycmF5KAoJCQkJJ3R5cGUnID0+ICdkYXRlJywKCQkJCSdsYWJlbCcgPT4gJ0RhdGUnLAoJCQkJJ2NvbHVtbl90eXBlJyA9PiAnRCcsCgkJCQknZm9ybV90eXBlJyA9PiAndGV4dCcsCgkJCQknb3B0aW9ucycgPT4gdHJ1ZSwKCQkJCSdvcHRpb25zX2RlZmF1bHQnID0+ICdzdGFydF95ZWFyOjIwMDk7JwoJCQkpLAoJCQkndGltZScgPT4gYXJyYXkoCgkJCQkndHlwZScgPT4gJ3RpbWUnLAoJCQkJJ2xhYmVsJyA9PiAnVGltZScsCgkJCQknY29sdW1uX3R5cGUnID0+ICdUJywKCQkJCSdmb3JtX3R5cGUnID0+ICd0ZXh0JywKCQkJCSdvcHRpb25zJyA9PiB0cnVlCgkJCSksCgkJCSdkb2N1bWVudCcgPT4gYXJyYXkoCgkJCQkndHlwZScgPT4gJ2RvY3VtZW50JywKCQkJCSdsYWJlbCcgPT4gJ0RvY3VtZW50JywKCQkJCSdjb2x1bW5fdHlwZScgPT4gJ0MoMjU1KScsCgkJCQknZm9ybV90eXBlJyA9PiAnZmlsZScsCgkJCQknb3B0aW9ucycgPT4gdHJ1ZQoJCQkpLAoJCQknaW1hZ2UnID0+IGFycmF5KAoJCQkJJ3R5cGUnID0+ICdpbWFnZScsCgkJCQknbGFiZWwnID0+ICdJbWFnZScsCgkJCQknY29sdW1uX3R5cGUnID0+ICdDKDI1NSknLAoJCQkJJ2Zvcm1fdHlwZScgPT4gJ2ZpbGUnLAoJCQkJJ29wdGlvbnMnID0+IHRydWUsCgkJCQknb3B0aW9uc19kZWZhdWx0JyA9PiAnc2l6ZToxNTB4MTUwOycKCQkJKSwKCQkJJ2NvdW50cnknID0+IGFycmF5KAoJCQkJJ3R5cGUnID0+ICdjb3VudHJ5JywKCQkJCSdsYWJlbCcgPT4gJ0NvdW50cnknLAoJCQkJJ2NvbHVtbl90eXBlJyA9PiAnQygyNTUpJywKCQkJCSdmb3JtX3R5cGUnID0+ICdzZWxlY3QnLAoJCQkJJ29wdGlvbnMnID0+IHRydWUsCgkJCQknb3B0aW9uc19kZWZhdWx0JyA9PiAnJwoJCQkpLAoJCQknaGlkZGVuX3RleHQnID0+IGFycmF5KAoJCQkJJ3R5cGUnID0+ICdoaWRkZW5fdGV4dCcsCgkJCQknbGFiZWwnID0+ICdIaWRkZW4gdGV4dCcsCgkJCQknY29sdW1uX3R5cGUnID0+ICdDKDI1NSknLAoJCQkJJ2Zvcm1fdHlwZScgPT4gJ25vbmUnLAoJCQkJJ29wdGlvbnMnID0+IGZhbHNlCgkJCSksCQkJCgkJCSdzdGF0aWMnID0+IGFycmF5KAoJCQkJJ3R5cGUnID0+ICdzdGF0aWMnLAoJCQkJJ2xhYmVsJyA9PiAnU3RhdGljIHZhbHVlJywKCQkJCSdjb2x1bW5fdHlwZScgPT4gJ0MoMjU1KScsCgkJCQknZm9ybV90eXBlJyA9PiAnc3RhdGljJywKCQkJCSdvcHRpb25zJyA9PiBmYWxzZQoJCQkpLAoJCQknbW9kdWxlJyA9PiBhcnJheSgKCQkJCSd0eXBlJyA9PiAnbW9kdWxlJywKCQkJCSdsYWJlbCcgPT4gJ01vZHVsZScsCgkJCQknY29sdW1uX3R5cGUnID0+ICdDKDI1NSknLAoJCQkJJ2Zvcm1fdHlwZScgPT4gJ21vZHVsZScsCgkJCQknb3B0aW9ucycgPT4gdHJ1ZSwKCQkJCSdvcHRpb25zX2RlZmF1bHQnID0+ICdtb2R1bGVfbmFtZTpNeU1vZHVsZU5hbWU7JwoJCQkpLAkJCQoJCQkncGFnZScgPT4gYXJyYXkoCgkJCQkndHlwZScgPT4gJ3BhZ2UnLAoJCQkJJ2xhYmVsJyA9PiAnUGFnZScsCgkJCQknY29sdW1uX3R5cGUnID0+ICdDKDI1NSknLAoJCQkJJ2Zvcm1fdHlwZScgPT4gJ3BhZ2UnLAoJCQkJJ29wdGlvbnMnID0+IHRydWUKCQkJKSwJCQoJCQkndXNlcicgPT4gYXJyYXkoCgkJCQkndHlwZScgPT4gJ3VzZXInLAoJCQkJJ2xhYmVsJyA9PiAnQ01TIFVzZXInLAoJCQkJJ2NvbHVtbl90eXBlJyA9PiAnQygyNTUpJywKCQkJCSdmb3JtX3R5cGUnID0+ICd1c2VyJywKCQkJCSdvcHRpb25zJyA9PiB0cnVlCgkJCSksCgkJCSdncm91cCcgPT4gYXJyYXkoCgkJCQkndHlwZScgPT4gJ2dyb3VwJywKCQkJCSdsYWJlbCcgPT4gJ0NNUyBHcm91cCcsCgkJCQknY29sdW1uX3R5cGUnID0+ICdDKDI1NSknLAoJCQkJJ2Zvcm1fdHlwZScgPT4gJ2dyb3VwJywKCQkJCSdvcHRpb25zJyA9PiB0cnVlCgkJCSksCgkJCQoJCQkJLy8gJ3VzZXInID0+IGFycmF5KCAvLyBUaGlzIGlzIG9ubHkgYW4gT24vT2ZmIG9wdGlvbiAhCgkJCQkvLyAJCQkJJ3R5cGUnID0+ICd1c2VyJywKCQkJCS8vIAkJCQknbGFiZWwnID0+ICdVc2VyJywKCQkJCS8vIAkJCQknY29sdW1uX3R5cGUnID0+ICdJJywKCQkJCS8vIAkJCQknZm9ybV90eXBlJyA9PiAndXNlcicsCgkJCQkvLyAJCQkJJ29wdGlvbnMnID0+IGZhbHNlCgkJCQkvLyAJCQkpLAoJCSk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldEZpbHRlclR5cGVzKCkgewoJCXJldHVybiBhcnJheSgKCQkJJ2VxdWFsJyA9PiBhcnJheSgKCQkJCQkJCSd0eXBlJyA9PiAnZXF1YWwnLAoJCQkJCQkJJ2xhYmVsJyA9PiAnRXF1YWwnLAoJCQkJCQkJJ2NyaXRlcmlhJyA9PiAnRVFVQUwnCgkJCQkJCSksCgkJCSdub3RfZXF1YWwnID0+IGFycmF5KAoJCQkJCSd0eXBlJyA9PiAnbm90X2VxdWFsJywKCQkJCQknbGFiZWwnID0+ICdOb3QgZXF1YWwnLAoJCQkJCSdjcml0ZXJpYScgPT4gJ05PVF9FUVVBTCcKCQkJCQkpLAoJCQknbGlrZScgPT4gYXJyYXkoCgkJCQkndHlwZScgPT4gJ2xpa2UnLAoJCQkJJ2xhYmVsJyA9PiAnTGlrZSAod2l0aG91dCB3aWxkY2FyZCAlKScsCgkJCQknY3JpdGVyaWEnID0+ICdMSUtFJwoJCQkpLAoJCQknbGlrZV93aWxkJyA9PiBhcnJheSgKCQkJCSd0eXBlJyA9PiAnbGlrZV93aWxkJywKCQkJCSdsYWJlbCcgPT4gJ0xpa2UgKHdpdGggd2lsZGNhcmQgJSknLAoJCQkJJ2NyaXRlcmlhJyA9PiAnTElLRScKCQkJKSwKCQkJJ211bHRpbGlrZV93aWxkJyA9PiBhcnJheSgKCQkJCSd0eXBlJyA9PiAnbXVsdGlsaWtlX3dpbGQnLAoJCQkJJ2xhYmVsJyA9PiAnTGlzdCBNdWx0aXBsZSBMaWtlJywKCQkJCSdjcml0ZXJpYScgPT4gJ01VTFRJTElLRScKCQkJKSwJCQkKCQkJJ211bHRpbm90bGlrZV93aWxkJyA9PiBhcnJheSgKCQkJCSd0eXBlJyA9PiAnbXVsdGlub3RsaWtlX3dpbGQnLAoJCQkJJ2xhYmVsJyA9PiAnTGlzdCBNdWx0aXBsZSBOb3QgTGlrZScsCgkJCQknY3JpdGVyaWEnID0+ICdNVUxUSU5PVExJS0UnCgkJCSksCgkJCSdsZXNzJyA9PiBhcnJheSgKCQkJCSd0eXBlJyA9PiAnbGVzcycsCgkJCQknbGFiZWwnID0+ICdMZXNzIHRoYW4nLAoJCQkJJ2NyaXRlcmlhJyA9PiAnTEVTU19USEFOJwoJCQkpLAoJCQknbGVzc19lcXVhbCcgPT4gYXJyYXkoCgkJCQkndHlwZScgPT4gJ2xlc3NfZXF1YWwnLAoJCQkJJ2xhYmVsJyA9PiAnRXF1YWwgb3IgbGVzcyB0aGFuJywKCQkJCSdjcml0ZXJpYScgPT4gJ0xFU1NfRVFVQUwnCgkJCSksCgkJCSdncmVhdGVyJyA9PiBhcnJheSgKCQkJCSd0eXBlJyA9PiAnZ3JlYXRlcicsCgkJCQknbGFiZWwnID0+ICdHcmVhdGVyIHRoYW4nLAoJCQkJJ2NyaXRlcmlhJyA9PiAnR1JFQVRFUl9USEFOJwoJCQkpLAoJCQknZ3JlYXRlcl9lcXVhbCcgPT4gYXJyYXkoCgkJCQkndHlwZScgPT4gJ2dyZWF0ZXJfZXF1YWwnLAoJCQkJJ2xhYmVsJyA9PiAnRXF1YWwgb3IgZ3JlYXRlciB0aGFuJywKCQkJCSdjcml0ZXJpYScgPT4gJ0dSRUFURVJfRVFVQUwnCgkJCSksCgkJCSdub3RfZW1wdHknID0+IGFycmF5KAoJCQkJJ3R5cGUnID0+ICdub3RfZW1wdHknLAoJCQkJJ2xhYmVsJyA9PiAnTm90IGVtcHR5JywKCQkJCSdjcml0ZXJpYScgPT4gJ0lTTk9URU1QVFknCgkJCSksCgkJCSdlbXB0eScgPT4gYXJyYXkoCgkJCQkndHlwZScgPT4gJ2VtcHR5JywKCQkJCSdsYWJlbCcgPT4gJ0VtcHR5JywKCQkJCSdjcml0ZXJpYScgPT4gJ0lTRU1QVFknCgkJCSksCgkJCSd1cGNvbWluZycgPT4gYXJyYXkoCgkJCQkndHlwZScgPT4gJ3VwY29taW5nJywKCQkJCSdsYWJlbCcgPT4gJ1VwY29taW5nIGRhdGUnLAoJCQkJJ2NyaXRlcmlhJyA9PiAnVVBDT01JTkcnCgkJCSksCQkKCQkJJ3Bhc3QnID0+IGFycmF5KAoJCQkJJ3R5cGUnID0+ICdwYXN0JywKCQkJCSdsYWJlbCcgPT4gJ1Bhc3QgZGF0ZScsCgkJCQknY3JpdGVyaWEnID0+ICdQQVNUJwoJCQkpCgkJKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gcG9wdWxhdGVGcm9tQXJyYXkoYXJyYXkgJHBhcmFtcykgewoJCWlmIChpc3NldCgkcGFyYW1zWydpZCddKSkgewoJCQkkdGhpcy0+c2V0SWQoJHBhcmFtc1snaWQnXSk7CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydtb2R1bGVfbmFtZSddKSkgewoJCQkkdGhpcy0+c2V0TW9kdWxlTmFtZSgkcGFyYW1zWydtb2R1bGVfbmFtZSddKTsKCQl9CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ21vZHVsZV9mcmllbmRseW5hbWUnXSkpIHsKCQkJJHRoaXMtPnNldE1vZHVsZUZyaWVuZGx5bmFtZSgkcGFyYW1zWydtb2R1bGVfZnJpZW5kbHluYW1lJ10pOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1snbW9kdWxlX3ZlcnNpb24nXSkpIHsKCQkJJHRoaXMtPnNldE1vZHVsZVZlcnNpb24oJHBhcmFtc1snbW9kdWxlX3ZlcnNpb24nXSk7CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydjcmVhdGVkX2J5J10pKSB7CgkJCSR0aGlzLT5zZXRDcmVhdGVkQnkoJHBhcmFtc1snY3JlYXRlZF9ieSddKTsKCQl9CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2NyZWF0ZWRfYXQnXSkpIHsKCQkJJHRoaXMtPnNldENyZWF0ZWRBdCgkcGFyYW1zWydjcmVhdGVkX2F0J10pOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1sndXBkYXRlZF9ieSddKSkgewoJCQkkdGhpcy0+c2V0VXBkYXRlZEJ5KCRwYXJhbXNbJ3VwZGF0ZWRfYnknXSk7CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWyd1cGRhdGVkX2F0J10pKSB7CgkJCSR0aGlzLT5zZXRVcGRhdGVkQXQoJHBhcmFtc1sndXBkYXRlZF9hdCddKTsKCQl9CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2V4dHJhX2ZpZWxkcyddKSkgewoJCQkkdGhpcy0+c2V0RXh0cmFGaWVsZHMoJHBhcmFtc1snZXh0cmFfZmllbGRzJ10pOwoJCX0gZWxzZSB7CgkJCSR0aGlzLT5zZXRFeHRyYUZpZWxkcyhhcnJheSgpKTsKCQl9CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2RlbGV0ZV9maWVsZHMnXSkpIHsKCQkJJHRoaXMtPnNldERlbGV0ZUZpZWxkcygkcGFyYW1zWydkZWxldGVfZmllbGRzJ10pOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1snZmlsdGVycyddKSkgewoJCQkkdGhpcy0+c2V0RmlsdGVycygkcGFyYW1zWydmaWx0ZXJzJ10pOwoJCX0gZWxzZSB7CgkJCSR0aGlzLT5zZXRGaWx0ZXJzKGFycmF5KCkpOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1sncGFyZW50X21vZHVsZSddKSkgewoJCQkkdGhpcy0+c2V0UGFyZW50TW9kdWxlKCRwYXJhbXNbJ3BhcmVudF9tb2R1bGUnXSk7CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydzaG93X21vZHVsZSddKSkgewoJCQkkdGhpcy0+c2V0U2hvd01vZHVsZSgkcGFyYW1zWydzaG93X21vZHVsZSddKTsKCQl9CQkKCQlpZiAoaXNzZXQoJHBhcmFtc1snaXNfdXNlcl9tb2R1bGUnXSkpIHsKCQkJJHRoaXMtPnNldElzVXNlck1vZHVsZSgkcGFyYW1zWydpc191c2VyX21vZHVsZSddKTsKCQl9CQkKCQlpZiAoaXNzZXQoJHBhcmFtc1snaXNfcHJvdGVjdGVkJ10pKSB7CgkJCSR0aGlzLT5zZXRJc1Byb3RlY3RlZCgkcGFyYW1zWydpc19wcm90ZWN0ZWQnXSk7CgkJfQkJCgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2ZpbGVzX3BhdGgnXSkpIHsKCQkJJHRoaXMtPnNldEZpbGVzUGF0aCgkcGFyYW1zWydmaWxlc19wYXRoJ10pOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1snbW9kdWxlX2xvZ2ljJ10pKSB7CgkJCSR0aGlzLT5zZXRNb2R1bGVMb2dpYygkcGFyYW1zWydtb2R1bGVfbG9naWMnXSk7CgkJfQkJCgkJaWYgKGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlc19kYXRhJ10pKSB7CgkJCSR0aGlzLT5zZXRUZW1wbGF0ZXNEYXRhKCRwYXJhbXNbJ3RlbXBsYXRlc19kYXRhJ10pOwoJCX0JCQoJCWlmIChpc3NldCgkcGFyYW1zWydhZG1pbl9zZWN0aW9uJ10pKSB7CgkJCSR0aGlzLT5zZXRBZG1pblNlY3Rpb24oJHBhcmFtc1snYWRtaW5fc2VjdGlvbiddKTsKCQl9Cgl9CgoJLy8gREFUQUJBU0UgRlVOQ1RJT05TCgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRCeUlkKCRpZCkgewoJCSRzcWwgPSAnU0VMRUNUICogRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX21jZmFjdG9yeV9tb2R1bGVzCgkJCVdIRVJFIGlkID0gPyc7CgkJJHZhbHVlcyA9IGFycmF5KCRpZCk7CgkJJHJlc3VsdCA9IHNlbGY6OnF1ZXJ5KCRzcWwsICR2YWx1ZXMpOwoJCWlmICgkcmVzdWx0ICYmICRyb3cgPSAkcmVzdWx0LT5GZXRjaFJvdygpKSB7CgkJCSRtb2R1bGUgPSBuZXcgc2VsZigpOwoJCQkkbW9kdWxlLT5wb3B1bGF0ZUZyb21BcnJheSgkcm93KTsKCQkJcmV0dXJuICRtb2R1bGU7CgkJfSBlbHNlIHsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHF1ZXJ5KCRzcWwsICR2YWx1ZXMgPSBhcnJheSgpKSB7CgkJZ2xvYmFsICRnQ21zOwoJCSRkYiA9ICRnQ21zLT5HZXREYigpOwoJCXJldHVybiAkZGItPmV4ZWN1dGUoJHNxbCwgJHZhbHVlcyk7Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkb1NlbGVjdChNQ0ZDcml0ZXJpYSAkYykgewoJCWdsb2JhbCAkZ0NtczsKCQkkZGIgPSAkZ0Ntcy0+R2V0RGIoKTsKCQkkcXVlcnkgPSAkYy0+YnVpbGRRdWVyeShjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tY2ZhY3RvcnlfbW9kdWxlcycpOwoJCSRyZXN1bHQgPSAkZGItPmV4ZWN1dGUoJHF1ZXJ5LCAkYy0+dmFsdWVzKTsKCQkkbW9kdWxlcyA9IGFycmF5KCk7CgkJd2hpbGUgKCRyZXN1bHQgJiYgKCRyb3cgPSAkcmVzdWx0LT5GZXRjaFJvdygpKSkgewoJCQkkbW9kdWxlID0gbmV3IHNlbGYoKTsKCQkJJHJvd1snZXh0cmFfZmllbGRzJ10gPSB1bnNlcmlhbGl6ZSgkcm93WydleHRyYV9maWVsZHMnXSk7CgkJCSRyb3dbJ2ZpbHRlcnMnXSA9IHVuc2VyaWFsaXplKCRyb3dbJ2ZpbHRlcnMnXSk7CgkJCSRtb2R1bGUtPnBvcHVsYXRlRnJvbUFycmF5KCRyb3cpOwoJCQkkbW9kdWxlLT5pc19tb2RpZmllZCA9IGZhbHNlOwoJCSAgICAkbW9kdWxlc1tdID0gJG1vZHVsZTsKCQl9CgkJcmV0dXJuICRtb2R1bGVzOwoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZG9TZWxlY3RPbmUoTUNGQ3JpdGVyaWEgJGMpIHsKCQkkYy0+c2V0TGltaXQoMSk7CgkJJHJlc3VsdCA9IHNlbGY6OmRvU2VsZWN0KCRjKTsKCQlpZiAoY291bnQoJHJlc3VsdCkgPiAwKSB7CgkJCXJldHVybiAkcmVzdWx0WzBdOwoJCX0gZWxzZSB7CgkJCXJldHVybiBmYWxzZTsKCQl9Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXRyaWV2ZUJ5UGsoJHBrKSB7CgkJJGMgPSBuZXcgTUNGQ3JpdGVyaWEoKTsKCQkkYy0+YWRkKCdpZCcsICRwayk7CgkJcmV0dXJuIHNlbGY6OmRvU2VsZWN0T25lKCRjKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZm9yY2VVcGRhdGUoKQoJewoJCSR0aGlzLT5pc19tb2RpZmllZCA9IHRydWU7CgkJJHRoaXMtPnNhdmUoKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2F2ZSgpIHsKCQlpZiAoZW1wdHkoJHRoaXMtPmlkKSkgewoJCQlyZXR1cm4gJHRoaXMtPmluc2VydCgpOwoJCX0gZWxzZSB7CgkJCXJldHVybiAkdGhpcy0+dXBkYXRlKCk7CgkJfQoJfQoKCXByb3RlY3RlZCBmdW5jdGlvbiBpbnNlcnQoKSB7CgkJZ2xvYmFsICRnQ21zOwoJCSRkYiA9ICRnQ21zLT5HZXREYigpOwoJCSR0aGlzLT5zZXRJZCgkZGItPkdlbklEKGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX21jZmFjdG9yeV9tb2R1bGVzX3NlcScpKTsKCQkkcXVlcnkgPSAnSU5TRVJUIElOVE8gJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tY2ZhY3RvcnlfbW9kdWxlcwoJCQlTRVQgaWQgPSA/LAoJCQkJbW9kdWxlX25hbWUgPSA/LAoJCQkJbW9kdWxlX2ZyaWVuZGx5bmFtZSA9ID8sCgkJCQltb2R1bGVfdmVyc2lvbiA9IDEsCgkJCQljcmVhdGVkX2J5ID0gPywKCQkJCWNyZWF0ZWRfYXQgPSBOT1coKSwKCQkJCXVwZGF0ZWRfYnkgPSA/LAoJCQkJdXBkYXRlZF9hdCA9IE5PVygpLAoJCQkJZXh0cmFfZmllbGRzID0gPywKCQkJCWZpbHRlcnMgPSA/LAoJCQkJcGFyZW50X21vZHVsZSA9ID8sCgkJCQlzaG93X21vZHVsZSA9ID8sCgkJCQlpc191c2VyX21vZHVsZSA9ID8sCgkJCQlpc19wcm90ZWN0ZWQgPSA/LAoJCQkJZmlsZXNfcGF0aCA9ID8sCgkJCQltb2R1bGVfbG9naWMgPSA/LAoJCQkJdGVtcGxhdGVzX2RhdGEgPSA/LAoJCQkJYWRtaW5fc2VjdGlvbiA9ID8KCQkJCSc7CgkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoCgkJCSR0aGlzLT5nZXRJZCgpLAoJCQkkdGhpcy0+Z2V0TW9kdWxlTmFtZSgpLAoJCQkkdGhpcy0+Z2V0TW9kdWxlRnJpZW5kbHluYW1lKCksCgkJCWdldF91c2VyaWQoKSwKCQkJZ2V0X3VzZXJpZCgpLAoJCQlzZXJpYWxpemUoJHRoaXMtPmdldEV4dHJhRmllbGRzKCkpLAoJCQlzZXJpYWxpemUoJHRoaXMtPmdldEZpbHRlcnMoKSksCgkJCSR0aGlzLT5nZXRQYXJlbnRNb2R1bGUoKSwKCQkJJHRoaXMtPmdldFNob3dNb2R1bGUoKSwKCQkJJHRoaXMtPmdldElzVXNlck1vZHVsZSgpLAoJCQkkdGhpcy0+Z2V0SXNQcm90ZWN0ZWQoKSwKCQkJJHRoaXMtPmdldEZpbGVzUGF0aCgpLAoJCQkkdGhpcy0+Z2V0TW9kdWxlTG9naWMoKSwKCQkJJHRoaXMtPmdldFRlbXBsYXRlc0RhdGEoKSwKCQkJJHRoaXMtPmdldEFkbWluU2VjdGlvbigpCgkJKSk7CgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgnU0VMRUNUIExBU1RfSU5TRVJUX0lEKCkgQVMgaWQnKTsKCQkkcm93ID0gJHJlc3VsdC0+RmV0Y2hSb3coKTsKCQkkdGhpcy0+c2V0SWQoJHJvd1snaWQnXSk7CgkJcmV0dXJuIHRydWU7Cgl9CgoJcHJvdGVjdGVkIGZ1bmN0aW9uIHVwZGF0ZSgpIHsKCQlnbG9iYWwgJGdDbXM7CgkJJGRiID0gJGdDbXMtPkdldERiKCk7CgkJJHRoaXMtPnNldE1vZHVsZVZlcnNpb24oJHRoaXMtPmdldE1vZHVsZVZlcnNpb24oKSArIDEpOwoJCSRxdWVyeSA9ICdVUERBVEUgJy5jbXNfZGJfcHJlZml4KCkuJ21vZHVsZV9tY2ZhY3RvcnlfbW9kdWxlcwoJCQlTRVQgbW9kdWxlX25hbWUgPSA/LAoJCQkJbW9kdWxlX2ZyaWVuZGx5bmFtZSA9ID8sCgkJCQltb2R1bGVfdmVyc2lvbiA9ID8sCgkJCQl1cGRhdGVkX2J5ID0gPywKCQkJCXVwZGF0ZWRfYXQgPSBOT1coKSwKCQkJCWV4dHJhX2ZpZWxkcyA9ID8sCgkJCQlmaWx0ZXJzID0gPywKCQkJCXBhcmVudF9tb2R1bGUgPSA/LAoJCQkJc2hvd19tb2R1bGUgPSA/LAoJCQkJaXNfdXNlcl9tb2R1bGUgPSA/LAoJCQkJaXNfcHJvdGVjdGVkID0gPywKCQkJCWZpbGVzX3BhdGggPSA/LAoJCQkJbW9kdWxlX2xvZ2ljID0gPywKCQkJCXRlbXBsYXRlc19kYXRhID0gPywKCQkJCWFkbWluX3NlY3Rpb24gPSA/CgkJCVdIRVJFIGlkID0gPyc7CgkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoCgkJCSR0aGlzLT5nZXRNb2R1bGVOYW1lKCksCgkJCSR0aGlzLT5nZXRNb2R1bGVGcmllbmRseW5hbWUoKSwKCQkJJHRoaXMtPmdldE1vZHVsZVZlcnNpb24oKSwKCQkJZ2V0X3VzZXJpZCgpLAoJCQlzZXJpYWxpemUoJHRoaXMtPmdldEV4dHJhRmllbGRzKCkpLAoJCQlzZXJpYWxpemUoJHRoaXMtPmdldEZpbHRlcnMoKSksCgkJCSR0aGlzLT5nZXRQYXJlbnRNb2R1bGUoKSwKCQkJJHRoaXMtPmdldFNob3dNb2R1bGUoKSwKCQkJJHRoaXMtPmdldElzVXNlck1vZHVsZSgpLAoJCQkkdGhpcy0+Z2V0SXNQcm90ZWN0ZWQoKSwKCQkJJHRoaXMtPmdldEZpbGVzUGF0aCgpLAoJCQkkdGhpcy0+Z2V0TW9kdWxlTG9naWMoKSwKCQkJJHRoaXMtPmdldFRlbXBsYXRlc0RhdGEoKSwKCQkJJHRoaXMtPmdldEFkbWluU2VjdGlvbigpLAoJCQkkdGhpcy0+Z2V0SWQoKQoJCSkpOwoJCXJldHVybiB0cnVlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBkZWxldGUoKSB7CgkJaWYgKCR0aGlzLT5nZXRJZCgpKSB7CgkJCSRxdWVyeSA9ICdERUxFVEUgRlJPTSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX21jZmFjdG9yeV9tb2R1bGVzIFdIRVJFIGlkID0gPyc7CgkJCSR0aGlzLT5xdWVyeSgkcXVlcnksIGFycmF5KCR0aGlzLT5nZXRJZCgpKSk7CgkJCQoJCQkvLyBFcmFzZSBhY3Rpb25zCgkJCSRhY3Rpb25zID0gTUNGTW9kdWxlQWN0aW9uOjpkb1NlbGVjdChhcnJheSgnd2hlcmUnID0+IGFycmF5KCdtb2R1bGVfaWQnID0+ICR0aGlzLT5nZXRJZCgpKSkpOwoJCQlmb3JlYWNoKCRhY3Rpb25zIGFzICRhY3Rpb24pCgkJCXsKCQkJCSRhY3Rpb24tPmRlbGV0ZSgpOwoJCQl9CgkJfQoJCXJldHVybiB0cnVlOwoJfQoKCXByb3RlY3RlZCBmdW5jdGlvbiBwdWJsaXNoRmlsZSgkZGVzdGluYXRpb24sICRzb3VyY2UgPSBudWxsLCAkZXh0cmFfYXNzaWducyA9IGFycmF5KCkpIHsKCQlnbG9iYWwgJGdDbXM7CgkJaWYgKGlzX251bGwoJHNvdXJjZSkpIHsKCQkJJHNvdXJjZSA9ICRkZXN0aW5hdGlvbiAuICcudHBsJzsKCQl9CgkJJHRwbCA9IG5ldyBNQ0ZUZW1wbGF0ZSgkdGhpcy0+Z2V0TW9kdWxlTmFtZSgpLCAkc291cmNlLCAkZGVzdGluYXRpb24pOwoJCSR0cGwtPmFzc2lnbignbW9kdWxlJywgJHRoaXMpOwoJCSR0cGwtPmFzc2lnbigndGFibGVfbmFtZScsIHN0cnRvbG93ZXIoJHRoaXMtPmdldE1vZHVsZU5hbWUoKSkpOwoJCQoJCWZvcmVhY2goJGV4dHJhX2Fzc2lnbnMgYXMgJGtleSA9PiAkdmFsdWUpCgkJewoJCQkkdHBsLT5hc3NpZ24oJGtleSwkdmFsdWUpOwoJCX0KCQkJCQoJCWlmICgkdGhpcy0+Z2V0UGFyZW50TW9kdWxlKCkpCgkJewoJCQkkdHBsLT5hc3NpZ24oJ2hhc19hZG1pbicsJ2ZhbHNlJyk7CgkJfQoJCWVsc2VpZiAoIWlzX251bGwoJHRoaXMtPmdldFNob3dNb2R1bGUoKSkgJiYgJHRoaXMtPmdldFNob3dNb2R1bGUoKSA9PSAwKQoJCXsKCQkJJHRwbC0+YXNzaWduKCdoYXNfYWRtaW4nLCdmYWxzZScpOwoJCX0KCQllbHNlCgkJewoJCQkkdHBsLT5hc3NpZ24oJ2hhc19hZG1pbicsJ3RydWUnKTsKCQl9CgkJCgkJJHRwbC0+YXNzaWduKCdhZG1pbl9zZWN0aW9uJywgKCR0aGlzLT5nZXRBZG1pblNlY3Rpb24oKSAhPSAnJyk/JHRoaXMtPmdldEFkbWluU2VjdGlvbigpOidjb250ZW50Jyk7CgkJJHRwbC0+YXNzaWduKCdwYXJlbnRfbW9kdWxlJywgJHRoaXMtPmdldFBhcmVudE1vZHVsZSgpID8gTUNGTW9kdWxlOjpyZXRyaWV2ZUJ5UGsoJHRoaXMtPmdldFBhcmVudE1vZHVsZSgpKSA6IGZhbHNlKTsKCQkkdHBsLT5hc3NpZ24oJ2NoaWxkX21vZHVsZXMnLCAkdGhpcy0+Z2V0Q2hpbGRNb2R1bGVzKCkpOwoJCSR0cGwtPmFzc2lnbignaXNfcHJvdGVjdGVkJywgJHRoaXMtPmdldElzUHJvdGVjdGVkKCkpOwoJCSR0cGwtPmFzc2lnbignZmlsZXNfcGF0aCcsICR0aGlzLT5nZXRGaWxlc1BhdGgoKSk7CgkJJHRwbC0+YXNzaWduKCdtY2ZhY3Rvcnl2ZXJzaW9uJywgJGdDbXMtPm1vZHVsZXNbJ01DRmFjdG9yeSddWydvYmplY3QnXS0+Z2V0VmVyc2lvbigpKTsKCQkkZXh0cmFfZmllbGRzID0gJHRoaXMtPmdldEV4dHJhRmllbGRzKCk7CgkJJGZpZWxkVHlwZXMgPSAkdGhpcy0+Z2V0RmllbGRUeXBlcygpOwoJCWZvcmVhY2ggKCRleHRyYV9maWVsZHMgYXMgJiRmaWVsZCkgewoJCQkkd29yZHMgPSBleHBsb2RlKCdfJywgJGZpZWxkWyduYW1lJ10pOwoJCQlmb3JlYWNoICgkd29yZHMgYXMgJiR3b3JkKSB7CgkJCQkkd29yZCA9IHVjZmlyc3QoJHdvcmQpOwoJCQl9CgkJCXVuc2V0KCR3b3JkKTsKCQkJJGZpZWxkWydjYW1lbGNhc2UnXSA9IGltcGxvZGUoJycsICR3b3Jkcyk7CgkJCSRmaWVsZFsnZnJpZW5kbHluYW1lJ10gPSBpbXBsb2RlKCcgJywgJHdvcmRzKTsKCQkJJGZpZWxkWydsYWJlbCddID0gYWRkc2xhc2hlcygoJGZpZWxkWydsYWJlbCddKSk7CgkJCSRmaWVsZFsnY29sdW1uX3R5cGUnXSA9ICRmaWVsZFR5cGVzWyRmaWVsZFsndHlwZSddXVsnY29sdW1uX3R5cGUnXTsKCQkJJGZpZWxkWydmb3JtX3R5cGUnXSA9ICRmaWVsZFR5cGVzWyRmaWVsZFsndHlwZSddXVsnZm9ybV90eXBlJ107CgkJCgkJCWlmKGlzc2V0KCRmaWVsZFsnb3B0aW9ucyddKSkKCQkJewoJCQkJaWYoKHN0cnBvcygkZmllbGRbJ29wdGlvbnMnXSwnOycpICE9PSBmYWxzZSkgfHwgKHN0cnBvcygkZmllbGRbJ29wdGlvbnMnXSwnOicpICE9PSBmYWxzZSkpCgkJCQl7CgkJCQkJJG9wdGlvbnMgPSBleHBsb2RlKCc7JywkZmllbGRbJ29wdGlvbnMnXSk7CgkJCQkJZm9yZWFjaCgkb3B0aW9ucyBhcyAkb3B0aW9uKQoJCQkJCXsKCQkJCQkJJHZhbCA9IGV4cGxvZGUoJzonLCRvcHRpb24pOwoJCQkJCQlpZiAoY291bnQoJHZhbCkgPiAxKQkkZmllbGRbJ2ZvcHRpb25zJ11bJHZhbFswXV0gPSAkdmFsWzFdOwoJCQkJCQl1bnNldCgkdmFsKTsKCQkJCQl9CgkJCQl9CgkJCQllbHNlCgkJCQl7CgkJCQkJLy8gTWVhbnMgd2UgYXJlIG9sZCBzY2hvb2wgPyAKCQkJCQkkZmllbGRbJ2ZvcHRpb25zJ11bJ3ZhbHVlcyddID0gJGZpZWxkWydvcHRpb25zJ107CgkJCQl9CgkJCX0KCQkJCgkJCWlmICgkZmllbGRbJ3R5cGUnXSA9PSAnc2VsZWN0JykgewkJCQkKCQkJCSR2YWx1ZXMgPSBleHBsb2RlKCcsJywgJGZpZWxkWydmb3B0aW9ucyddWyd2YWx1ZXMnXSk7CgkJCQlmb3JlYWNoICgkdmFsdWVzIGFzICYkdmFsdWUpIHsKCQkJCQlpZihzdHJwb3MoJHZhbHVlLCc9PicpID09PSBmYWxzZSkKCQkJCQl7CQkJCQkKCQkJCQkJJHZhbHVlID0gIiciLnRyaW0oJHZhbHVlKS4iJyA9PiAnIi50cmltKCR2YWx1ZSkuIiciOwkKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJbGlzdCgka2V5LCRudmFsdWUpID0gZXhwbG9kZSgnPT4nLCR2YWx1ZSk7CgkJCQkJCSR2YWx1ZSA9ICInIi50cmltKCRrZXkpLiInID0+ICciLnRyaW0oJG52YWx1ZSkuIiciOwoJCQkJCX0gCgkJCQl9CgkJCQl1bnNldCgkdmFsdWUpOwoJCQkJJGZpZWxkWydzZWxlY3Rfb3B0aW9ucyddID0gJ2FycmF5KCcgLiBpbXBsb2RlKCcsICcsICR2YWx1ZXMpIC4gJyknOwoJCQl9CgkJCWlmICgkZmllbGRbJ3R5cGUnXSA9PSAnY291bnRyeScpIHsKCQkJCWlmICgkZmllbGRbJ29wdGlvbnMnXSkgewoJCQkJCSR3aGl0ZWxpc3QgPSBleHBsb2RlKCcsJywgJGZpZWxkWydvcHRpb25zJ10pOwoJCQkJfSBlbHNlIHsKCQkJCQkkd2hpdGVsaXN0ID0gYXJyYXlfa2V5cyhNQ0ZhY3Rvcnk6OiRjb3VudHJpZXMpOwoJCQkJfQoJCQkJJHZhbHVlcyA9IGFycmF5KCk7CgkJCQkkY291bnRyaWVzID0gTUNGYWN0b3J5OjokY291bnRyaWVzOwoJCQkJYXNvcnQoJGNvdW50cmllcyk7CgkJCQlmb3JlYWNoICgkY291bnRyaWVzIGFzICRjb2RlID0+ICRjb3VudHJ5KSB7CgkJCQkJJGNvdW50cnkgPSBhZGRzbGFzaGVzKCRjb3VudHJ5KTsKCQkJCQlpZiAoaW5fYXJyYXkoJGNvZGUsICR3aGl0ZWxpc3QpKSB7CgkJCQkJCSR2YWx1ZXNbXSA9ICInIi50cmltKCRjb2RlKS4iJyA9PiAnIi50cmltKCRjb3VudHJ5KS4iJyI7CgkJCQkJfQoJCQkJfQoJCQkJJGZpZWxkWydzZWxlY3Rfb3B0aW9ucyddID0gJ2FycmF5KCcgLiBpbXBsb2RlKCcsICcsICR2YWx1ZXMpIC4gJyknOwoJCQl9CgkJCWlmICgkZmllbGRbJ3R5cGUnXSA9PSAnZGF0ZScpIHsKCQkJCWlmKChzdHJwb3MoJGZpZWxkWydvcHRpb25zJ10sJzsnKSAhPT0gZmFsc2UpKQoJCQkJewkJCQkJCgkJCQkJJG9wdGlvbnMgPSBleHBsb2RlKCc7JywkZmllbGRbJ29wdGlvbnMnXSk7CgkJCQl9CgkJCQllbHNlCgkJCQl7CQkJCQkKCQkJCQkkb3B0aW9ucyA9IGV4cGxvZGUoJ3wnLCRmaWVsZFsnb3B0aW9ucyddKTsKCQkJCX0KCQkJCSR2YWwgPSBhcnJheSgpOwoJCQkJZm9yZWFjaCAoJG9wdGlvbnMgYXMgJG9wdGlvbikKCQkJCXsKCQkJCQkkdiA9IGV4cGxvZGUoJzonLCRvcHRpb24pOwoJCQkJCWlmIChjb3VudCgkdikgPT0gMikJJHZhbFskdlswXV0gPSAkdlsxXTsKCQkJCX0KCQkJCSRmaWVsZFsnZGF0ZV9vcHRpb25zJ10gPSAkdmFsOwoJCQl9CgkJCWlmICgkZmllbGRbJ3R5cGUnXSA9PSAnaW1hZ2UnKSB7CgkJCQlpZihpc3NldCgkZmllbGRbJ2ZvcHRpb25zJ11bJ3NpemUnXSkpCgkJCQl7CQkJCQkKCQkJCQlsaXN0KCRmaWVsZFsnaW1hZ2Vfd2lkdGgnXSwgJGZpZWxkWydpbWFnZV9oZWlnaHQnXSkgPSBleHBsb2RlKCd4JywgJGZpZWxkWydmb3B0aW9ucyddWydzaXplJ10pOwoJCQkJfQoJCQkJZWxzZQoJCQkJewkJCQkJCgkJCQkJbGlzdCgkZmllbGRbJ2ltYWdlX3dpZHRoJ10sICRmaWVsZFsnaW1hZ2VfaGVpZ2h0J10pID0gZXhwbG9kZSgneCcsICRmaWVsZFsnb3B0aW9ucyddKTsKCQkJCX0KCQkJfQoJCQlpZiAoJGZpZWxkWyd0eXBlJ10gPT0gJ21vZHVsZScpCgkJCXsKCQkJCS8vJGZpZWxkWydtb2R1bGVfb3B0aW9ucyddID0gJGZpZWxkWydmb3B0aW9ucyddOwoJCQkJaWYgKCFpc3NldCgkZmllbGRbJ2ZvcHRpb25zJ11bJ21vZHVsZV9uYW1lJ10pKSRmaWVsZFsnZm9wdGlvbnMnXVsnbW9kdWxlX25hbWUnXSA9ICRmaWVsZFsnZm9wdGlvbnMnXVsndmFsdWVzJ107CgkJCQkvLyAkZmllbGRbJ2ZvcHRpb25zJ11bJ21vZHVsZV9uYW1lJ10gPSBpc3NldCgkZmllbGRbJ2ZvcHRpb25zJ11bJ21vZHVsZV9uYW1lJ10pPyRmaWVsZFsnZm9wdGlvbnMnXVsnbW9kdWxlX25hbWUnXTokZmllbGRbJ2ZvcHRpb25zJ11bJ3ZhbHVlcyddOwoJCQl9CgkJfQoJCXVuc2V0KCRmaWVsZCk7CgkJJHRwbC0+YXNzaWduKCdleHRyYV9maWVsZHMnLCAkZXh0cmFfZmllbGRzKTsKCQlpZiAoJHRoaXMtPmdldElzVXNlck1vZHVsZSgpKQoJCXsKCQkJJHRwbC0+YXNzaWduKCdpc191c2VyX21vZHVsZScsIDEpOwoJCX0KCQkkdHBsLT5hc3NpZ24oJ21jZmFjdG9yeV92ZXJzaW9uJywgJGdDbXMtPm1vZHVsZXNbJ01DRmFjdG9yeSddWydvYmplY3QnXS0+R2V0VmVyc2lvbigpKTsKCQkkZmlsdGVycyA9ICR0aGlzLT5nZXRGaWx0ZXJzKCk7CgkJJGZpbHRlclR5cGVzID0gJHRoaXMtPmdldEZpbHRlclR5cGVzKCk7CgkJZm9yZWFjaCAoJGZpbHRlcnMgYXMgJiRmaWx0ZXIpIHsKCQkJJGZpbHRlclsnY3JpdGVyaWEnXSA9ICRmaWx0ZXJUeXBlc1skZmlsdGVyWyd0eXBlJ11dWydjcml0ZXJpYSddOwoJCX0KCQl1bnNldCgkZmlsdGVyKTsKCQkkdHBsLT5hc3NpZ24oJ2ZpbHRlcnMnLCAkZmlsdGVycyk7CgkJJHRwbC0+c2F2ZSgpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBjb3B5RmlsZSgkc291cmNlKQoJewoJCWdsb2JhbCAkZ0NtczsKCQkkY29uZmlnID0gJGdDbXMtPmdldENvbmZpZygpOwoJCSRzb3VyY2VfZGlyID0gJGNvbmZpZ1sncm9vdF9wYXRoJ10gLiAnL21vZHVsZXMvTUNGYWN0b3J5L3NtYXJ0eS90ZW1wbGF0ZXMnOwoJCSRkZXN0aW5hdGlvbl9kaXIgPSAkY29uZmlnWydyb290X3BhdGgnXSAuICcvbW9kdWxlcy8nIC4gJHRoaXMtPmdldE1vZHVsZU5hbWUoKTsKCQljb3B5KCRzb3VyY2VfZGlyIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRzb3VyY2UsICRkZXN0aW5hdGlvbl9kaXIgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHNvdXJjZSk7CgkJLy8kdGhpcy0+Y21zQ29uZmlnWydyb290X3BhdGgnXSAuICcvbW9kdWxlcy8nIC4gJHRoaXMtPm1vZHVsZSAuICcvJyAuICR0aGlzLT5kZXN0aW5hdGlvbiwgJGNvbnRlbnRzOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBwdWJsaXNoKCkgewoJCWdsb2JhbCAkZ0NtczsKCQkkY29uZmlnID0gJGdDbXMtPkdldENvbmZpZygpOwoJCUBta2RpcigkY29uZmlnWydyb290X3BhdGgnXSAuICcvbW9kdWxlcy8nIC4gJHRoaXMtPmdldE1vZHVsZU5hbWUoKSk7CgkJQG1rZGlyKCRjb25maWdbJ3Jvb3RfcGF0aCddIC4gJy9tb2R1bGVzLycgLiAkdGhpcy0+Z2V0TW9kdWxlTmFtZSgpIC4gJy9jbGFzc2VzJyk7CgkJQG1rZGlyKCRjb25maWdbJ3Jvb3RfcGF0aCddIC4gJy9tb2R1bGVzLycgLiAkdGhpcy0+Z2V0TW9kdWxlTmFtZSgpIC4gJy9sYW5nJyk7CgkJQG1rZGlyKCRjb25maWdbJ3Jvb3RfcGF0aCddIC4gJy9tb2R1bGVzLycgLiAkdGhpcy0+Z2V0TW9kdWxlTmFtZSgpIC4gJy90ZW1wbGF0ZXMnKTsKCQlAbWtkaXIoJGNvbmZpZ1sncm9vdF9wYXRoJ10gLiAnL21vZHVsZXMvJyAuICR0aGlzLT5nZXRNb2R1bGVOYW1lKCkgLiAnL2ltYWdlcycpOwoJCUBta2RpcigkY29uZmlnWydyb290X3BhdGgnXSAuICcvbW9kdWxlcy8nIC4gJHRoaXMtPmdldE1vZHVsZU5hbWUoKSAuICcvcnNzJyk7CgkJJHRoaXMtPnB1Ymxpc2hGaWxlKCdjbGFzc2VzLycuICR0aGlzLT5nZXRNb2R1bGVOYW1lKCkgLiAnT2JqZWN0QmFzZS5jbGFzcy5waHAnLCAnY2xhc3Nlcy9NQ0ZNb2R1bGVPYmplY3RCYXNlLmNsYXNzLnBocC50cGwnKTsKCQkkdGhpcy0+cHVibGlzaEZpbGUoJ2NsYXNzZXMvJy4gJHRoaXMtPmdldE1vZHVsZU5hbWUoKSAuICdPYmplY3QuY2xhc3MucGhwJywgJ2NsYXNzZXMvTUNGTW9kdWxlT2JqZWN0LmNsYXNzLnBocC50cGwnKTsKCQkkdGhpcy0+cHVibGlzaEZpbGUoJ2NsYXNzZXMvJy4gJHRoaXMtPmdldE1vZHVsZU5hbWUoKSAuICdWaWV3cy5jbGFzcy5waHAnLCAnY2xhc3Nlcy9NQ0ZNb2R1bGVWaWV3cy5jbGFzcy5waHAudHBsJyk7CgkJJHRoaXMtPnB1Ymxpc2hGaWxlKCdsYW5nL2VuX1VTLnBocCcpOwoJCSR0aGlzLT5wdWJsaXNoRmlsZSgndGVtcGxhdGVzL2RlZmF1bHRhZG1pbi5pdGVtcy50cGwnKTsKCQkkdGhpcy0+cHVibGlzaEZpbGUoJ3RlbXBsYXRlcy9kZWZhdWx0YWRtaW4udGVtcGxhdGVzLnRwbCcpOwoJCSR0aGlzLT5wdWJsaXNoRmlsZSgndGVtcGxhdGVzL2FkbWluLnRlbXBsYXRlcy50cGwnKTsKCQkkdGhpcy0+cHVibGlzaEZpbGUoJ3RlbXBsYXRlcy9hZG1pbi50ZW1wbGF0ZV9lZGl0LnRwbCcpOwoJCSR0aGlzLT5wdWJsaXNoRmlsZSgndGVtcGxhdGVzL2RlZmF1bHRhZG1pbi5vcHRpb25zLnRwbCcpOwoJCSR0aGlzLT5wdWJsaXNoRmlsZSgndGVtcGxhdGVzL2VkaXQudHBsJyk7CgkJJHRoaXMtPnB1Ymxpc2hGaWxlKCd0ZW1wbGF0ZXMvZWRpdHRlbXBsYXRlLnRwbCcpOwoJCSR0aGlzLT5wdWJsaXNoRmlsZSgndGVtcGxhdGVzL2Vycm9yLnRwbCcpOwoJCQovLwkJJHRoaXMtPnB1Ymxpc2hGaWxlKCd0ZW1wbGF0ZXMvdGVtcGxhdGUuZGV0YWlscy50cGwnKTsKLy8JCSR0aGlzLT5wdWJsaXNoRmlsZSgndGVtcGxhdGVzL3RlbXBsYXRlLmxpc3QudHBsJyk7CgkJLy8gJHRoaXMtPnB1Ymxpc2hGaWxlKCd0ZW1wbGF0ZXMvdGVtcGxhdGUucGFnaW5hdGVkLnRwbCcpOwoJCS8vICR0aGlzLT5wdWJsaXNoRmlsZSgndGVtcGxhdGVzL3RlbXBsYXRlLnNlYXJjaC50cGwnKTsKCQkvLyAkdGhpcy0+cHVibGlzaEZpbGUoJ3RlbXBsYXRlcy90ZW1wbGF0ZS5jYWxlbmRhci50cGwnKTsKCQkKCQkkdGhpcy0+cHVibGlzaEZpbGUoJ3RlbXBsYXRlcy9mcm9udGVuZC5kZWZhdWx0LnRwbCcpOwoJCSR0aGlzLT5wdWJsaXNoRmlsZSgndGVtcGxhdGVzL2Zyb250ZW5kLmRldGFpbC50cGwnKTsKCQkkdGhpcy0+cHVibGlzaEZpbGUoJ3RlbXBsYXRlcy9mcm9udGVuZC5zZWFyY2gudHBsJyk7CgkJJHRoaXMtPnB1Ymxpc2hGaWxlKCd0ZW1wbGF0ZXMvZnJvbnRlbmQuY2FsZW5kYXIudHBsJyk7CgkJJHRoaXMtPnB1Ymxpc2hGaWxlKCd0ZW1wbGF0ZXMvZnJvbnRlbmQucGFnaW5hdGVkLnRwbCcpOwoJCSR0aGlzLT5wdWJsaXNoRmlsZSgndGVtcGxhdGVzL2Zyb250ZW5kLnRhZ2Nsb3VkLnRwbCcpOwoJCSR0aGlzLT5wdWJsaXNoRmlsZSgndGVtcGxhdGVzL2Zyb250ZW5kLnJzcy50cGwnKTsKCQkKCQkkdGhpcy0+cHVibGlzaEZpbGUoJ3Jzcy9yc3MuY3NzJyk7CgkJJHRoaXMtPnB1Ymxpc2hGaWxlKCdyc3Mvc3R5bGUueHNsJyk7CgkJCgkJaWYgKCR0aGlzLT5nZXRJc1VzZXJNb2R1bGUoKSkKCQl7CgkJCQkkdGhpcy0+cHVibGlzaEZpbGUoJ2FjdGlvbi51c2VyX2Zvcm0ucGhwJyk7CgkJCQkkdGhpcy0+cHVibGlzaEZpbGUoJ3RlbXBsYXRlcy9mcm9udGVuZC51c2VyX2Zvcm0udHBsJyk7CgkJCQkkdGhpcy0+cHVibGlzaEZpbGUoJ3RlbXBsYXRlcy9mcm9udGVuZC51c2VyX2Zvcm1fc3VjY2Vzcy50cGwnKTsKCQl9CgkJCgkJJHRoaXMtPmNvcHlGaWxlKCdpbWFnZXMvaWNvbi5naWYnKTsKCQkkdGhpcy0+cHVibGlzaEZpbGUoJ2FjdGlvbi5jYWxlbmRhci5waHAnKTsKCQkkdGhpcy0+cHVibGlzaEZpbGUoJ2FjdGlvbi5kZWZhdWx0LnBocCcpOwoJCSR0aGlzLT5wdWJsaXNoRmlsZSgnYWN0aW9uLmRlZmF1bHRhZG1pbi5waHAnKTsKCQkkdGhpcy0+cHVibGlzaEZpbGUoJ2FjdGlvbi5kZWxldGUucGhwJyk7CgkJJHRoaXMtPnB1Ymxpc2hGaWxlKCdhY3Rpb24ubW92ZXVwLnBocCcpOwoJCSR0aGlzLT5wdWJsaXNoRmlsZSgnYWN0aW9uLm1vdmVkb3duLnBocCcpOwoJCSR0aGlzLT5wdWJsaXNoRmlsZSgnYWN0aW9uLmRldGFpbC5waHAnKTsKCQkkdGhpcy0+cHVibGlzaEZpbGUoJ2FjdGlvbi5leHBvcnQucGhwJyk7CgkJJHRoaXMtPnB1Ymxpc2hGaWxlKCdhY3Rpb24uZWRpdC5waHAnKTsKCQkkdGhpcy0+cHVibGlzaEZpbGUoJ2FjdGlvbi50ZW1wbGF0ZV9lZGl0LnBocCcpOwoJCSR0aGlzLT5wdWJsaXNoRmlsZSgnYWN0aW9uLnRlbXBsYXRlX2RlbGV0ZS5waHAnKTsKCQkkdGhpcy0+cHVibGlzaEZpbGUoJ2FjdGlvbi5lZGl0dGVtcGxhdGUucGhwJyk7CgkJJHRoaXMtPnB1Ymxpc2hGaWxlKCdhY3Rpb24uZGVsZXRldGVtcGxhdGUucGhwJyk7CgkJJHRoaXMtPnB1Ymxpc2hGaWxlKCdhY3Rpb24uZ2V0dXJsLnBocCcpOwoJCSR0aGlzLT5wdWJsaXNoRmlsZSgnYWN0aW9uLnB1Ymxpc2gucGhwJyk7CgkJJHRoaXMtPnB1Ymxpc2hGaWxlKCdhY3Rpb24ucnNzLnBocCcpOwoJCSR0aGlzLT5wdWJsaXNoRmlsZSgnYWN0aW9uLnNlYXJjaC5waHAnKTsKCQkkdGhpcy0+cHVibGlzaEZpbGUoJ2FjdGlvbi50ZW1wbGF0ZS5waHAnKTsKCQkkdGhpcy0+cHVibGlzaEZpbGUoJ2FjdGlvbi5jb3VudC5waHAnKTsKCQkkdGhpcy0+cHVibGlzaEZpbGUoJ2FjdGlvbi51cmxfZm9yLnBocCcpOwoJCSR0aGlzLT5wdWJsaXNoRmlsZSgnYWN0aW9uLmxpbmtfdG8ucGhwJyk7CgkJJHRoaXMtPnB1Ymxpc2hGaWxlKCdhY3Rpb24uYXNzaWdudGl0bGVzLnBocCcpOwoJCSR0aGlzLT5wdWJsaXNoRmlsZSgnaW5kZXguaHRtbCcpOwoJCSR0aGlzLT5wdWJsaXNoRmlsZSgnZnVuY3Rpb24uZGVmYXVsdGFkbWluLml0ZW1zLnBocCcpOwoJCSR0aGlzLT5wdWJsaXNoRmlsZSgnZnVuY3Rpb24uZGVmYXVsdGFkbWluLnRlbXBsYXRlcy5waHAnKTsKCQkkdGhpcy0+cHVibGlzaEZpbGUoJ2Z1bmN0aW9uLmRlZmF1bHRhZG1pbi5vcHRpb25zLnBocCcpOwoJCSR0aGlzLT5wdWJsaXNoRmlsZSgnZnVuY3Rpb24uZGVmYXVsdGFkbWluLmhlbHAucGhwJyk7CgkJJHRoaXMtPnB1Ymxpc2hGaWxlKCdhY3Rpb24udXBkYXRlT2JqZWN0cy5waHAnKTsKCQkkdGhpcy0+cHVibGlzaEZpbGUoJ2FjdGlvbi50YWdjbG91ZC5waHAnKTsKCQkkdGhpcy0+cHVibGlzaEZpbGUoJ2FjdGlvbi5pY2FsLnBocCcpOwoJCSR0aGlzLT5wdWJsaXNoRmlsZSgnYWN0aW9uLmRvd25sb2FkLnBocCcpOwoJCQoJCS8vIEFjdGlvbnMKCQkkYWN0aW9ucyA9IE1DRk1vZHVsZUFjdGlvbjo6ZG9TZWxlY3QoYXJyYXkoJ3doZXJlJyA9PiBhcnJheSgnbW9kdWxlX2lkJyA9PiAkdGhpcy0+aWQpKSk7CgkJZm9yZWFjaCgkYWN0aW9ucyBhcyAkYWN0aW9uKQoJCXsKCQkJJHRoaXMtPnB1Ymxpc2hGaWxlKCdhY3Rpb24uJy4kYWN0aW9uLT5uYW1lLicucGhwJywgJ2FjdGlvbi5tb2R1bGVfYWN0aW9uLnBocC50cGwnLCBhcnJheSgnYWN0aW9uX29iaicgPT4gJGFjdGlvbikpOwoJCX0KCQkKCQkKCQkkdGhpcy0+cHVibGlzaEZpbGUoJHRoaXMtPmdldE1vZHVsZU5hbWUoKSAuICcubW9kdWxlLnBocCcsICdNQ0ZNb2R1bGUubW9kdWxlLnBocC50cGwnKTsKCQlpZiAoaXNzZXQoJGdDbXMtPm1vZHVsZXNbJHRoaXMtPmdldE1vZHVsZU5hbWUoKV0pKSB7CgkJCSRkYiA9ICRnQ21zLT5HZXREYigpOwoJCQlmb3JlYWNoICgkdGhpcy0+Z2V0RGVsZXRlRmllbGRzKCkgYXMgJGZpZWxkKSB7CgkJCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CgkJCQkkc3FsYXJyYXkgPSAkZGljdC0+RHJvcENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiBzdHJ0b2xvd2VyKCR0aGlzLT5nZXRNb2R1bGVOYW1lKCkpLCAkZmllbGQpOwoJCQkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCQl9CgkJCSRmaWVsZFR5cGVzID0gJHRoaXMtPmdldEZpZWxkVHlwZXMoKTsKCQkJZm9yZWFjaCAoJHRoaXMtPmdldEV4dHJhRmllbGRzKCkgYXMgJGZpZWxkKSB7CgkJCQkKCQkJCWlmIChpc3NldCgkZmllbGRbJ25ldyddKSBvciAoJGRiLT5leGVjdXRlKCdTRUxFQ1QgQ09VTlQoe3skZmllbGQubmFtZX19KSBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkuJ21vZHVsZV97eyR0YWJsZV9uYW1lfX0nKSA9PT0gZmFsc2UpKSB7CgkJCQkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoJCQkJCSRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gc3RydG9sb3dlcigkdGhpcy0+Z2V0TW9kdWxlTmFtZSgpKSwgJGZpZWxkWyduYW1lJ10gLiAnICcgLiAkZmllbGRUeXBlc1skZmllbGRbJ3R5cGUnXV1bJ2NvbHVtbl90eXBlJ10pOwoJCQkJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbGFycmF5KTsKCQkJCX0KCQkJCQoJCQl9CgkJfQkKCX0KCn0KCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/libraries/classes/MCFModuleAction.class.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qKgogKiBNQ0ZNb2R1bGVBY3Rpb24gQ2xhc3MKICogCiAqIFRoaXMgY2xhc3MgaGFuZGxlIGFsbCB0aGUgbWFuaXB1bGF0aW9ucyBvbiB0aGUgTSZDIEZhY3RvcnkgTW9kdWxlIGFjdGlvbiBvYmplY3QKICogCiAqLwoKY2xhc3MgTUNGTW9kdWxlQWN0aW9uIGV4dGVuZHMJQ21zT2JqZWN0IAp7CgkKCXByb3RlY3RlZCAkaWQ7CQoJcHJvdGVjdGVkICRpc19tb2RpZmllZDsJCglwcm90ZWN0ZWQgJHZhcnMgPSBhcnJheSgpOwoJCglwcm90ZWN0ZWQgc3RhdGljICRmaWVsZHMgPSBhcnJheSgKCSduYW1lJywKCSdtb2R1bGVfaWQnLAoJJ2NvZGUnLAkKCSdpc19wdWJsaWMnLAoJJ2hhdmVfcGVybWlzc2lvbicKCSk7CgkKCXB1YmxpYyBzdGF0aWMgJGZvcmJpZGVuX25hbWVzID0gYXJyYXkoCgkJJ2Fzc2lnbnRpdGxlcycsJ2NvdW50JywnZGVmYXVsdCcsJ2RlZmF1bHRhZG1pbicsJ2RlbGV0ZScsJ2RlbGV0ZXRlbXBsYXRlJywnZGV0YWlsJywnZWRpdCcsJ2VkaXR0ZW1wbGF0ZScsCgkJJ2V4cG9ydCcsJ2dldHVybCcsJ2ljYWwnLCdjYWxlbmRhcicsJ2xpbmtfdG8nLCdtb3ZlZG93bicsJ21vdmV1cCcsJ3B1Ymxpc2gnLCdyc3MnLCdzZWFyY2gnLCd0YWdjbG91ZCcsCgkJJ3RlbXBsYXRlJywndGVtcGxhdGVfZGVsZXRlJywndGVtcGxhdGVfZWRpdCcsJ3VwZGF0ZU9iamVjdHMnLCd1cmxfZm9yJywndXNlcl9mb3JtJwoJKTsKCQoJY29uc3QgREJfTkFNRSA9ICdtb2R1bGVfbWNmYWN0b3J5X21vZHVsZV9hY3Rpb25zJzsKCWNvbnN0IERCX0lURU0gPSAnbW9kdWxlX2FjdGlvbic7CgkJCglwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCgl7CgkJdHJ5CgkJewoJCQlyZXR1cm4gKHN0cmluZykJJHRoaXMtPm5hbWU7CgkJfQoJCWNhdGNoKEV4Y2VwdGlvbiAkZSkKCQl7CgkJCXByaW50KCRlKTsKCQl9Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBfX3NldCgkdmFyLCAkdmFsKXsKICAgICAgJHRoaXMtPnZhcnNbJHZhcl0gPSAkdmFsOwoJCQkkdGhpcy0+aXNfbW9kaWZpZWQgPSB0cnVlOwogIH0KCiAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KCR2YXIpewoJCSRtZXRob2QgPSAnZ2V0XycuJHZhcjsKCQlpZihtZXRob2RfZXhpc3RzKCR0aGlzLCAkbWV0aG9kKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+JG1ldGhvZCgpOwoJCX0KICAgIGVsc2VpZiAoYXJyYXlfa2V5X2V4aXN0cygkdmFyLCAkdGhpcy0+dmFycykpCgkJewogICAgICByZXR1cm4gJHRoaXMtPnZhcnNbJHZhcl07CiAgICB9IAoJCWVsc2UKCQl7CiAgICAJLy9yZXR1cm4gbnVsbDsKCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigiUHJvcGVydHkgJHZhciBkb2VzIG5vdCBleGlzdCIpOwogICAgfQogIH0KCglwdWJsaWMgZnVuY3Rpb24gX19jbG9uZSgpCgl7CgkJJHRoaXMtPmlkID0gbnVsbDsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGdldElkKCkKCXsKCQlyZXR1cm4gJHRoaXMtPmlkOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gY2hlY2tOYW1lKCkKCXsKCQlpZiAoaW5fYXJyYXkoJHRoaXMtPm5hbWUsIHNlbGY6OiRmb3JiaWRlbl9uYW1lcykpIHsKCQkJCXJldHVybiBmYWxzZTsgLy8gTWVhbmluZyB5b3UgQ0FOJ1QgdXNlIHRoaXMgbmFtZQoJCX0KCQkKCQkkY3VycmVudHMgPSBzZWxmOjpkb1NlbGVjdChhcnJheSgnd2hlcmUnID0+IGFycmF5KCduYW1lJyA9PiAkdGhpcy0+bmFtZSwgJ21vZHVsZV9pZCcgPT4gJHRoaXMtPm1vZHVsZV9pZCkpKTsKCQlpZiAoY291bnQoJGN1cnJlbnRzKSA+IDEpCgkJewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCWVsc2VpZihjb3VudCgkY3VycmVudHMpIDwgMSkKCQl7CgkJCXJldHVybiB0cnVlOwoJCX0KCQllbHNlCgkJewoJCQlpZiAoJGN1cnJlbnRzWzBdLT5nZXRJZCgpID09ICR0aGlzLT5nZXRJZCgpKQoJCQl7CgkJCQlyZXR1cm4gdHJ1ZTsgLy8gTm8gZHVwbGljYXRlLCBidXQgaXQncyB0aGUgc2FtZQoJCQl9CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJCgkJcmV0dXJuIGZhbHNlOyAvLyBTaG91bGRuJ3QgaGFwcGVuLiBJbiBjYXNlIG9mLCByZXR1cm4gZmFsc2UgIQoJfQoJCglwdWJsaWMgZnVuY3Rpb24gY2xlYW51cE5hbWUoKQoJewoJCSR0aGlzLT5uYW1lID0gcHJlZ19yZXBsYWNlKCcvXFcvJywgJycsIHN0cnRvbG93ZXIoJHRoaXMtPm5hbWUpKTsKCQlpZiAoISR0aGlzLT5jaGVja05hbWUoKSkKCQl7CgkJCS8vIEluIHRoaXMgY2FzZSwgd2Ugc2hvdWxkIGNoYW5nZSB0aGUgbmFtZQoJCQkkbmFtZSA9ICR0aGlzLT5uYW1lOwoJCQkkaSA9IDE7CgkJCSR0aGlzLT5uYW1lID0gJG5hbWUuJGk7CgkJCXdoaWxlKCEkdGhpcy0+Y2hlY2tOYW1lKCkpCgkJCXsKCQkJCSRpKys7CgkJCQkkdGhpcy0+bmFtZSA9ICRuYW1lLiRpOwoJCQl9CgkJfQoJCXJldHVybiAkdGhpcy0+bmFtZTsKCX0KCQoJLy8gREFUQUJBU0UgU1BFQ0lGSUMKCS8vLS0tLS0tLS0tLS0tLS0tLS0tCgkJCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHJldHJpZXZlQnlQaygkaWQpCiAgewogIAlyZXR1cm4gc2VsZjo6ZG9TZWxlY3RPbmUoYXJyYXkoJ3doZXJlJyA9PiBhcnJheSgnaWQnID0+ICRpZCkpKTsgICAgCiAgfQoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRvU2VsZWN0T25lKCRwYXJhbXMgPSBhcnJheSgpKQogIHsKICAJJGl0ZW1zID0gc2VsZjo6ZG9TZWxlY3QoJHBhcmFtcyk7CiAgCWlmICgkaXRlbXMpCiAgCXsKICAJCXJldHVybiAkaXRlbXNbMF07CiAgCX0KICAJZWxzZSAKICAJewogIAkJcmV0dXJuIG51bGw7CiAgCX0gIAkKIAl9CgkJCglwdWJsaWMgZnVuY3Rpb24gcG9wdWxhdGUoJHJvdykKCXsKCQlpZiAoaXNzZXQoJHJvd1tzZWxmOjpEQl9JVEVNLidfX2lkJ10pKQoJCXsKCQkJJHRoaXMtPmlkID0gJHJvd1tzZWxmOjpEQl9JVEVNLidfX2lkJ107CgkJfQkJCgkJCgkJZm9yZWFjaCAoc2VsZjo6JGZpZWxkcyBhcyAkZmllbGQpCgkJewoJCQlpZiAoaXNzZXQoJHJvd1tzZWxmOjpEQl9JVEVNLidfXycuJGZpZWxkXSkpCgkJCXsKCQkJCSR0aGlzLT4kZmllbGQgPSAkcm93W3NlbGY6OkRCX0lURU0uJ19fJy4kZmllbGRdOwoJCQl9CgkJfQkKCX0KCQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZW5lcmF0ZVNlbGVjdExpc3QoKQoJewoJCSRmaWVsZHMgPSBhcnJheV9tZXJnZShhcnJheSgnaWQnLCdjcmVhdGVkX2F0JywndXBkYXRlZF9hdCcpLCBzZWxmOjokZmllbGRzKTsKCQkkbGlzdCA9IGFycmF5KCk7CgkJZm9yZWFjaCAoJGZpZWxkcyBhcyAkZmllbGQpCgkJewoJCQkkbGlzdFtdID0gc2VsZjo6REJfSVRFTSAuICcuJy4kZmllbGQuJyBhcyAnLiBzZWxmOjpnZXRSb3dOYW1lKCRmaWVsZCk7CgkJfQoJCXJldHVybiBpbXBsb2RlKCcgLCAnLCRsaXN0KTsKCX0KCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRSb3dOYW1lKCRuYW1lKQoJewoJCXJldHVybiBzZWxmOjpEQl9JVEVNIC4gJ19fJyAuICRuYW1lOwoJfQoKCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkb1NlbGVjdCgkcGFyYW1zID0gYXJyYXkoKSkKICB7CiAgICAkaW5zdGFuY2UgPSBuZXcgc2VsZigpOwogICAgJGRiID0mICRpbnN0YW5jZS0+R2V0RGIoKTsKCiAgICAkcXVlcnkgPSAnU0VMRUNUIAoJCScuc2VsZjo6REJfSVRFTS4nLiosCgkJJy5zZWxmOjpnZW5lcmF0ZVNlbGVjdExpc3QoKSAuICcKCQlGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiBzZWxmOjpEQl9OQU1FIC4gJyBBUyAnIC4gc2VsZjo6REJfSVRFTTsKCiAgICAkdmFsdWVzID0gYXJyYXkoKTsKCiAgICBpZiAoaXNzZXQoJHBhcmFtc1snd2hlcmUnXSkpCiAgICB7CgogICAgICAkZmllbGRzID0gYXJyYXkoKTsKICAgICAgZm9yZWFjaCAoJHBhcmFtc1snd2hlcmUnXSBhcyAkZmllbGQgPT4gJHZhbHVlKSAKICAgICAgewogICAgICAgICRmaWVsZHNbXSA9IHNlbGY6OkRCX0lURU0uJy4nLiRmaWVsZCAuICcgPSAgPyc7CiAgICAgICAgJHZhbHVlc1tdID0gJHZhbHVlOwogICAgICB9CgogICAgICAkcXVlcnkgLj0gJyBXSEVSRSAnIC4gaW1wbG9kZSgnIEFORCAnLCAkZmllbGRzKTsKICAgIH0gCgogICAgaWYoaXNzZXQoJHBhcmFtc1snb3JkZXJfYnknXSkpCiAgICB7CiAgICAgJHF1ZXJ5IC49ICcgT1JERVIgQlkgJyAuIGltcGxvZGUoJywgJyAsICRwYXJhbXNbJ29yZGVyX2J5J10pOwogICAgfQogICAgZWxzZQogICAgewogICAgICAkcXVlcnkgLj0gJyBPUkRFUiBCWSAnLnNlbGY6OkRCX0lURU0uJy5jcmVhdGVkX2F0JzsKICAgIH0KCiAgICAkZGJyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCAkdmFsdWVzKTsKICAgICRpdGVtcyA9IGFycmF5KCk7CgogICBpZiAoJGRicmVzdWx0ICYmICRkYnJlc3VsdC0+UmVjb3JkQ291bnQoKSA+IDApCiAgICB7CiAgICAgIHdoaWxlICgkZGJyZXN1bHQgJiYgJHJvdyA9ICRkYnJlc3VsdC0+RmV0Y2hSb3coKSkKICAgICAgewkKICAgICAgICAkaXRlbSA9IG5ldyBNQ0ZNb2R1bGVBY3Rpb24oKTsKICAgICAgICAkaXRlbS0+cG9wdWxhdGUoJHJvdyk7CiAgICAgICAgJGl0ZW1zW10gPSAkaXRlbTsKICAgICAgfQogICAgfQogICAgcmV0dXJuICAkaXRlbXM7ICAgCiAgfQogIAoJCglwdWJsaWMgZnVuY3Rpb24gc2F2ZSgpIHsKCQlpZiAoJHRoaXMtPmdldElkKCkpIAoJCXsKCQkJaWYgKCR0aGlzLT5pc19tb2RpZmllZCkKCQkJewkJCQoJCQkJcmV0dXJuICR0aGlzLT51cGRhdGUoKTsJCgkJCX0KCQl9IAoJCWVsc2UKCQl7CgkJCXJldHVybiAkdGhpcy0+aW5zZXJ0KCk7CgkJfQoJCQoJCXJldHVybiBmYWxzZTsKCX0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gaW5zZXJ0KCkgewoJCS8vIENsZWFudXAgbmFtZQoJCSR0aGlzLT5jbGVhbnVwTmFtZSgpOwoJCS8vCiAgICAkZGIgPSYgJHRoaXMtPkdldERiKCk7CgkJJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcuY21zX2RiX3ByZWZpeCgpLiBzZWxmOjpEQl9OQU1FIC4gJyBTRVQgY3JlYXRlZF9hdCA9IE5PVygpLAl1cGRhdGVkX2F0ID0gTk9XKCkgJzsKCQkkdmFsdWVzID0gYXJyYXkoKTsJCQkJCgkJZm9yZWFjaChzZWxmOjokZmllbGRzIGFzICRmaWVsZCkKCQl7CgkJCSRxdWVyeSAuPSAnLCAnIC4gJGZpZWxkIC4gJyA9ID8nOwoJCQkkdmFsdWVzW10gPSAkdGhpcy0+JGZpZWxkOwoJCX0KCQkJCQkJCQkJCQkJCQkJCQoJCSRyZXN1bHQgPSAkZGItPkV4ZWN1dGUoJHF1ZXJ5LCR2YWx1ZXMpOwoJCWlmICgkcmVzdWx0ID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlOwoJCSR0aGlzLT5pZCA9ICRkYi0+SW5zZXJ0X0lEKCk7CgkJLy8kZ0Ntcy0+bW9kdWxlc1snUHJvamVjdHMnXVsnb2JqZWN0J10tPlNlbmRFdmVudCgnQ29udGVudEVkaXRQb3N0JywgYXJyYXkoKSk7CgkJcmV0dXJuIHRydWU7Cgl9CgoJcHJvdGVjdGVkIGZ1bmN0aW9uIHVwZGF0ZSgpIHsKICAgIAkkZGIgPSYgJHRoaXMtPkdldERiKCk7CgkJJHF1ZXJ5ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4gc2VsZjo6REJfTkFNRSAuICcJU0VUIHVwZGF0ZWRfYXQgPSBOT1coKSc7CQkJCgkJJHZhbHVlcyA9IGFycmF5KCk7CQkJCQoJCWZvcmVhY2goc2VsZjo6JGZpZWxkcyBhcyAkZmllbGQpCgkJewoJCQkkcXVlcnkgLj0gJywgJyAuICRmaWVsZCAuICcgPSA/JzsKCQkJJHZhbHVlc1tdID0gJHRoaXMtPiRmaWVsZDsKCQl9CQoJCSRxdWVyeSAuPSAnIFdIRVJFIGlkID0gPyc7CgkJJHZhbHVlc1tdID0gJHRoaXMtPmdldElkKCk7CgkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksICR2YWx1ZXMpOwoJCWlmICgkcmVzdWx0ID09PSBmYWxzZSkgcmV0dXJuIGZhbHNlOwoJCS8vJGdDbXMtPm1vZHVsZXNbJ1Byb2plY3RzJ11bJ29iamVjdCddLT5TZW5kRXZlbnQoJ0NvbnRlbnRFZGl0UG9zdCcsYXJyYXkoKSk7CgkJcmV0dXJuIHRydWU7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBkZWxldGUoKSB7CgkJaWYgKCR0aGlzLT5nZXRJZCgpKSB7CiAgICAJJGRiID0mICR0aGlzLT5HZXREYigpOwoJCQkkcXVlcnkgPSAnREVMRVRFIEZST00gJy5jbXNfZGJfcHJlZml4KCkuc2VsZjo6REJfTkFNRSAuICcgV0hFUkUgaWQgPSA/JzsKCQkJJHJlc3VsdCA9ICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KCR0aGlzLT5nZXRJZCgpKSk7CgkJCWlmKCRyZXN1bHQgIT09IGZhbHNlKQoJCQl7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfSAKCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoJCgkKCQp9]]></data>
	</file>
	<file>
	  <filename>/libraries/classes/MCFTemplate.class.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIE1DRlRlbXBsYXRlIGV4dGVuZHMgU21hcnR5IHsKCglwcm90ZWN0ZWQgJG1vZHVsZTsKCXByb3RlY3RlZCAkc291cmNlOwoJcHJvdGVjdGVkICRkZXN0aW5hdGlvbjsKCXByb3RlY3RlZCAkY21zQ29uZmlnOwoKCXB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbW9kdWxlLCAkc291cmNlLCAkZGVzdGluYXRpb24pIHsKCQlnbG9iYWwgJGdDbXM7CgkJcGFyZW50OjpfX2NvbnN0cnVjdCgpOwoJCSR0aGlzLT5tb2R1bGUgPSAkbW9kdWxlOwoJCSR0aGlzLT5zb3VyY2UgPSAkc291cmNlOwoJCSR0aGlzLT5kZXN0aW5hdGlvbiA9ICRkZXN0aW5hdGlvbjsKCQkkdGhpcy0+Y21zQ29uZmlnID0gJGdDbXMtPkdldENvbmZpZygpOwoJCSR0aGlzLT50ZW1wbGF0ZV9kaXIgPSAkdGhpcy0+Y21zQ29uZmlnWydyb290X3BhdGgnXSAuICcvbW9kdWxlcy9NQ0ZhY3Rvcnkvc21hcnR5L3RlbXBsYXRlcyc7Ci8vCQkkdGhpcy0+Y29tcGlsZV9kaXIgPSAkdGhpcy0+Y21zQ29uZmlnWydyb290X3BhdGgnXSAuICcvbW9kdWxlcy9NQ0ZhY3Rvcnkvc21hcnR5L3RlbXBsYXRlc19jJzsgLy8gVE9ETzogQ2hhbmdlIHRoYXQgdG8gdGhlIGdsb2JhbCBvbmUKCQkkdGhpcy0+Y29tcGlsZV9kaXIgPSAkdGhpcy0+Y21zQ29uZmlnWydwcmV2aWV3c19wYXRoJ107IC8vIFRPRE86IENoYW5nZSB0aGF0IHRvIHRoZSBnbG9iYWwgb25lCgkJJHRoaXMtPmNvbmZpZ19kaXIgPSAkdGhpcy0+Y21zQ29uZmlnWydyb290X3BhdGgnXSAuICcvbW9kdWxlcy9NQ0ZhY3Rvcnkvc21hcnR5L2NvbmZpZyc7CgkJJHRoaXMtPmZvcmNlX2NvbXBpbGUgPSB0cnVlOwoJCSR0aGlzLT5sZWZ0X2RlbGltaXRlciA9ICd7eyc7CgkJJHRoaXMtPnJpZ2h0X2RlbGltaXRlciA9ICd9fSc7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNhdmUoKSB7CgkJJGNvbnRlbnRzID0gJHRoaXMtPmZldGNoKCR0aGlzLT5zb3VyY2UpOwoJCWZpbGVfcHV0X2NvbnRlbnRzKCR0aGlzLT5jbXNDb25maWdbJ3Jvb3RfcGF0aCddIC4gJy9tb2R1bGVzLycgLiAkdGhpcy0+bW9kdWxlIC4gJy8nIC4gJHRoaXMtPmRlc3RpbmF0aW9uLCAkY29udGVudHMpOwoJCSR0aGlzLT5jbGVhcl9jb21waWxlZF90cGwoKTsKCX0KCn0KCj8+]]></data>
	</file>
	<file>
	  <filename>/MCFactory.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IE1DRmFjdG9yeSAtIFRoaXMgbW9kdWxlIGlzIGEgc29ydCBvZiAmcXVvdDtTdXBlciZxdW90OyBNb2R1bGVNYWtlciB3aXRoIGxvdHMgb2YgZnVuY3Rpb25hbGl0aWVzCiMgVmVyc2lvbjogMC4wLjEsIEplYW4tQ2hyaXN0b3BoZSBDdXZlbGllcgojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDA4IGJ5IFRlZCBLdWxwICh3aXNoeUBjbXNtYWRlc2ltcGxlLm9yZykKIyBUaGlzIHByb2plY3QncyBob21lcGFnZSBpczogaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZwojCiMgVGhpcyBmaWxlIG9yaWdpbmFsbHkgY3JlYXRlZCBieSBNb2R1bGVNYWtlciBtb2R1bGUsIHZlcnNpb24gMC4zLjEKIyBDb3B5cmlnaHQgKGMpIDIwMDggYnkgU2FtdWVsIEdvbGRzdGVpbiAoc2pnQGNtc21hZGVzaW1wbGUub3JnKSAKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAojIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQojIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCiMgT3IgcmVhZCBpdCBvbmxpbmU6IGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTAojCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpyZXF1aXJlX29uY2UgZGlybmFtZShfX0ZJTEVfXykgLiAnL2xpYnJhcmllcy9jbGFzc2VzL01DRk1vZHVsZS5jbGFzcy5waHAnOwpyZXF1aXJlX29uY2UgZGlybmFtZShfX0ZJTEVfXykgLiAnL2xpYnJhcmllcy9jbGFzc2VzL01DRk1vZHVsZUFjdGlvbi5jbGFzcy5waHAnOwpyZXF1aXJlX29uY2UgZGlybmFtZShfX0ZJTEVfXykgLiAnL2xpYnJhcmllcy9jbGFzc2VzL01DRkxpc3RWaWV3LmNsYXNzLnBocCc7CnJlcXVpcmVfb25jZSBkaXJuYW1lKF9fRklMRV9fKSAuICcvbGlicmFyaWVzL2NsYXNzZXMvTUNGQ3JpdGVyaWEuY2xhc3MucGhwJzsKcmVxdWlyZV9vbmNlIGRpcm5hbWUoX19GSUxFX18pIC4gJy9saWJyYXJpZXMvY2xhc3Nlcy9NQ0ZUZW1wbGF0ZS5jbGFzcy5waHAnOwpyZXF1aXJlX29uY2UgZGlybmFtZShfX0ZJTEVfXykgLiAnL2xpYnJhcmllcy9jbGFzc2VzL01DRkNhbGVuZGFyLmNsYXNzLnBocCc7Ci8vcmVxdWlyZV9vbmNlIGRpcm5hbWUoX19GSUxFX18pIC4gJy9saWJyYXJpZXMvY2xhc3Nlcy9NQ0ZGb3JtLmNsYXNzLnBocCc7CgpjbGFzcyBNQ0ZhY3RvcnkgZXh0ZW5kcyBDTVNNb2R1bGUgewoKCXByb3RlY3RlZCAkYWN0aW9uOwoJCglwdWJsaWMgZnVuY3Rpb24gR2V0TmFtZSgpICAgICAgICAgICAgICB7IHJldHVybiAnTUNGYWN0b3J5JzsgfQoJcHVibGljIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpICAgICAgeyByZXR1cm4gJ00mQyBGYWN0b3J5JzsgfQoJcHVibGljIGZ1bmN0aW9uIEdldFZlcnNpb24oKSAgICAgICAgICAgeyByZXR1cm4gJzIuMTEuOCc7IH0KCXB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3IoKSAgICAgICAgICAgIHsgcmV0dXJuICdKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXInOyB9CglwdWJsaWMgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKSAgICAgICB7IHJldHVybiAnamNjQG1vcnJpcy1jaGFwbWFuLmNvbSc7IH0KCXB1YmxpYyBmdW5jdGlvbiBHZXRIZWxwKCkgICAgICAgICAgICAgIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdoZWxwJyk7IH0KCXB1YmxpYyBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKSAgICAgICAgIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdjaGFuZ2Vsb2cnKTsgfQoJcHVibGljIGZ1bmN0aW9uIEhhc0FkbWluKCkgICAgICAgICAgICAgeyByZXR1cm4gdHJ1ZTsgfQoJcHVibGljIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKSAgeyByZXR1cm4gJHRoaXMtPkxhbmcoJ2FkbWluZGVzY3JpcHRpb24nKTsgfQoJcHVibGljIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpICAgeyByZXR1cm4gJHRoaXMtPkNoZWNrQWNjZXNzKCk7IH0KCXB1YmxpYyBmdW5jdGlvbiBDaGVja0FjY2VzcygpICAgICAgICAgIHsgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01hbmFnZSBNQ0ZhY3RvcnknKTsgfQoJcHVibGljIGZ1bmN0aW9uIERpc3BsYXlFcnJvclBhZ2UoKSAgICAgeyAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdlcnJvci50cGwnKTsgfQoJcHVibGljIGZ1bmN0aW9uIEdldFBhcmFtZXRlcnMoKSAgICAgICAgeyByZXR1cm4gYXJyYXkoKTsgfQoJcHVibGljIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpICAgICAgeyByZXR1cm4gYXJyYXkoJ01vZHVsZVh0ZW5kZXInID0+ICcxLjYuMScsICdDTVNGb3JtcycgPT4gJzAuMC4yMCcpOyB9CglwdWJsaWMgZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkgICB7IHJldHVybiAkdGhpcy0+TGFuZygnaW5zdGFsbHBvc3RtZXNzYWdlJyk7IH0KCXB1YmxpYyBmdW5jdGlvbiBVbmluc3RhbGxQcmVNZXNzYWdlKCkgIHsgcmV0dXJuICR0aGlzLT5MYW5nKCd1bmluc3RhbGxwcmVtZXNzYWdlJyk7IH0KCXB1YmxpYyBmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCd1bmluc3RhbGxwb3N0bWVzc2FnZScpOyB9CglwdWJsaWMgZnVuY3Rpb24gSGFuZGxlc0V2ZW50cygpICAgICAgICB7IHJldHVybiB0cnVlOyB9CgoJcHVibGljIGZ1bmN0aW9uIERvRXZlbnQoJG9yaWdpbmF0b3IsICRldmVudG5hbWUsICRwYXJhbXMpIHsKCQlpZiAoJGV2ZW50bmFtZSA9PSAnQ29udGVudEVkaXRQb3N0JykgewoJCQkkdGhpcy0+c2V0QXR0cmlidXRlKCdsYXN0X21vZGlmaWVkX2RhdGUnLCB0aW1lKCkpOwoJCX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0QXR0cmlidXRlKCRuYW1lLCAkZGVmYXVsdCA9IG51bGwpIHsKCQkkZGIgPSAkdGhpcy0+Z2V0RGIoKTsKCQkkcmVzdWx0ID0gJGRiLT5leGVjdXRlKCdTRUxFQ1QgYXR0cmlidXRlX3ZhbHVlIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWNmYWN0b3J5X2F0dHJpYnV0ZXMgV0hFUkUgYXR0cmlidXRlX25hbWUgPSA/JywgYXJyYXkoJG5hbWUpKTsKCQlpZiAoJHJlc3VsdCAmJiAoJHJvdyA9ICRyZXN1bHQtPkZldGNoUm93KCkpKSB7CgkJCXJldHVybiAkcm93WydhdHRyaWJ1dGVfdmFsdWUnXTsKCQl9IGVsc2UgewoJCQlyZXR1cm4gJGRlZmF1bHQ7CgkJfQoJfQoJCglwdWJsaWMgZnVuY3Rpb24gRGlzcGxheUltYWdlKCRpbWFnZSwkdGl0bGU9JycpCgl7CgkJJGNvbmZpZyA9ICYkdGhpcy0+Z2V0Q29uZmlnKCk7CgkJCgkJcmV0dXJuICc8aW1nIHNyYz0iJy4kY29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9NQ0ZhY3RvcnkvaW1hZ2VzLycuJGltYWdlLiciIHRpdGxlPSInLiR0aXRsZS4nIiBhbHQ9IicuJHRpdGxlLiciIC8+JzsKCQkKLy8JCSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgJ0VkaXQnLCAnJywgJycsICdzeXN0ZW1pY29uJykKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGdldEltYWdlKCRpbWFnZSkKCXsKCQkkY29uZmlnID0gJiR0aGlzLT5nZXRDb25maWcoKTsKCQlyZXR1cm4gJGNvbmZpZ1sncm9vdF91cmwnXSAuICcvbW9kdWxlcy9NQ0ZhY3RvcnkvaW1hZ2VzLycgLiAkaW1hZ2U7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNldEF0dHJpYnV0ZSgkbmFtZSwgJHZhbHVlKSB7CgkJJGRiID0gJHRoaXMtPmdldERiKCk7CgkJJHJlc3VsdCA9ICRkYi0+ZXhlY3V0ZSgnU0VMRUNUIGlkIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWNmYWN0b3J5X2F0dHJpYnV0ZXMgV0hFUkUgYXR0cmlidXRlX25hbWUgPSA/JywgYXJyYXkoJG5hbWUpKTsKCQlpZiAoJHJlc3VsdCAmJiAoJHJvdyA9ICRyZXN1bHQtPkZldGNoUm93KCkpKSB7CgkJCSRkYi0+ZXhlY3V0ZSgnVVBEQVRFICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21jZmFjdG9yeV9hdHRyaWJ1dGVzIFNFVCBhdHRyaWJ1dGVfdmFsdWUgPSA/IFdIRVJFIGlkID0gPycsIGFycmF5KCR2YWx1ZSwgJHJvd1snaWQnXSkpOwoJCX0gZWxzZSB7CgkJCSRkYi0+ZXhlY3V0ZSgnSU5TRVJUIElOVE8gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWNmYWN0b3J5X2F0dHJpYnV0ZXMgU0VUIGlkID0gPywgYXR0cmlidXRlX25hbWUgPSA/LCBhdHRyaWJ1dGVfdmFsdWUgPSA/JywgYXJyYXkoJGRiLT5HZW5JRChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21jZmFjdG9yeV9hdHRyaWJ1dGVzX3NlcScpLCAkbmFtZSwgJHZhbHVlKSk7CgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBHZXRIZWFkZXJIVE1MKCkgewoJCSRodG1sICA9ICc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSInIC4gJHRoaXMtPmNvbmZpZ1sncm9vdF91cmwnXSAuICcvbW9kdWxlcy9NQ0ZhY3RvcnkvanMvanF1ZXJ5LTEuMy4yLm1pbi5qcyI+PC9zY3JpcHQ+JzsKCQkkaHRtbCAuPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPmpRdWVyeS5ub0NvbmZsaWN0KCk7PC9zY3JpcHQ+JzsKCQkvLyBUT0RPIDogQ0hFQ0sgVEhPU0UgTElORVMuLi4KCQkvLyBTZWVtcyB1c2VsZXNzCgkJLy8JJGh0bWwgLj0gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IicgLiAkdGhpcy0+Y29uZmlnWydyb290X3VybCddIC4gJy9tb2R1bGVzL1RpbnlNQ0UvdGlueW1jZS9qc2NyaXB0cy90aW55X21jZS90aW55X21jZS5qcyI+PC9zY3JpcHQ+JzsKCQkvLwkkaHRtbCAuPSAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iJyAuICR0aGlzLT5jb25maWdbJ3Jvb3RfdXJsJ10gLiAnL3RtcC90aW55Y29uZmlnLmpzIj48L3NjcmlwdD4nOwoJCXJldHVybiAkaHRtbDsKCX0KCglzdGF0aWMgJGNvdW50cmllcyA9IGFycmF5KAoJCSdBRCcgPT4gJ0FuZG9ycmEnLAoJCSdBRScgPT4gJ1VuaXRlZCBBcmFiIEVtaXJhdGVzJywKCQknQUYnID0+ICdBZmdoYW5pc3RhbicsCgkJJ0FHJyA9PiAnQW50aWd1YSBhbmQgQmFyYnVkYScsCgkJJ0FJJyA9PiAnQW5ndWlsbGEnLAoJCSdBTCcgPT4gJ0FsYmFuaWEnLAoJCSdBTScgPT4gJ0FybWVuaWEnLAoJCSdBTicgPT4gJ05ldGhlcmxhbmRzIEFudGlsbGVzJywKCQknQU8nID0+ICdBbmdvbGEnLAoJCSdBUScgPT4gJ0FudGFyY3RpY2EnLAoJCSdBUicgPT4gJ0FyZ2VudGluYScsCgkJJ0FTJyA9PiAnQW1lcmljYW4gU2Ftb2EnLAoJCSdBVCcgPT4gJ0F1c3RyaWEnLAoJCSdBVScgPT4gJ0F1c3RyYWxpYScsCgkJJ0FXJyA9PiAnQXJ1YmEnLAoJCSdBWicgPT4gJ0F6ZXJiYWlqYW4nLAoJCSdCQScgPT4gJ0Jvc25pYSBhbmQgSGVyemVnb3ZpbmEnLAoJCSdCQicgPT4gJ0JhcmJhZG9zJywKCQknQkQnID0+ICdCYW5nbGFkZXNoJywKCQknQkUnID0+ICdCZWxnaXVtJywKCQknQkYnID0+ICdCdXJraW5hIEZhc28nLAoJCSdCRycgPT4gJ0J1bGdhcmlhJywKCQknQkgnID0+ICdCYWhyYWluJywKCQknQkknID0+ICdCdXJ1bmRpJywKCQknQkonID0+ICdCZW5pbicsCgkJJ0JNJyA9PiAnQmVybXVkYScsCgkJJ0JOJyA9PiAnQnJ1bmVpJywKCQknQk8nID0+ICdCb2xpdmlhJywKCQknQlInID0+ICdCcmF6aWwnLAoJCSdCUycgPT4gJ0JhaGFtYXMnLAoJCSdCVCcgPT4gJ0JodXRhbicsCgkJJ0JWJyA9PiAnQm91dmV0IElzbGFuZCcsCgkJJ0JXJyA9PiAnQm90c3dhbmEnLAoJCSdCWScgPT4gJ0JlbGFydXMnLAoJCSdCWicgPT4gJ0JlbGl6ZScsCgkJJ0NBJyA9PiAnQ2FuYWRhJywKCQknQ0MnID0+ICdDb2NvcyAoS2VlbGluZykgSXNsYW5kcycsCgkJJ0NEJyA9PiAnRGVtb2NyYXRpYyBSZXB1YmxpYyBvZiB0aGUgQ29uZ28nLAoJCSdDRicgPT4gJ0NlbnRyYWwgQWZyaWNhbiBSZXB1YmxpYycsCgkJJ0NHJyA9PiAnQ29uZ28nLAoJCSdDSCcgPT4gJ1N3aXR6ZXJsYW5kJywKCQknQ0knID0+ICdDw7R0ZSBkXCdJdm9pcmUnLAoJCSdDSycgPT4gJ0Nvb2sgSXNsYW5kcycsCgkJJ0NMJyA9PiAnQ2hpbGUnLAoJCSdDTScgPT4gJ0NhbWVyb29uJywKCQknQ04nID0+ICdDaGluYScsCgkJJ0NPJyA9PiAnQ29sb21iaWEnLAoJCSdDUicgPT4gJ0Nvc3RhIFJpY2EnLAoJCSdDVScgPT4gJ0N1YmEnLAoJCSdDVicgPT4gJ0NhcGUgVmVyZGUnLAoJCSdDWCcgPT4gJ0NocmlzdG1hcyBJc2xhbmQnLAoJCSdDWScgPT4gJ0N5cHJ1cycsCgkJJ0NaJyA9PiAnQ3plY2ggUmVwdWJsaWMnLAoJCSdERScgPT4gJ0dlcm1hbnknLAoJCSdESicgPT4gJ0RqaWJvdXRpJywKCQknREsnID0+ICdEZW5tYXJrJywKCQknRE0nID0+ICdEb21pbmljYScsCgkJJ0RPJyA9PiAnRG9taW5pY2FuIFJlcHVibGljJywKCQknRFonID0+ICdBbGdlcmlhJywKCQknRUMnID0+ICdFY3VhZG9yJywKCQknRUUnID0+ICdFc3RvbmlhJywKCQknRUcnID0+ICdFZ3lwdCcsCgkJJ0VIJyA9PiAnV2VzdGVybiBTYWhhcmEnLAoJCSdFUicgPT4gJ0VyaXRyZWEnLAoJCSdFUycgPT4gJ1NwYWluJywKCQknRVQnID0+ICdFdGhpb3BpYScsCgkJJ0ZJJyA9PiAnRmlubGFuZCcsCgkJJ0ZKJyA9PiAnRmlqaScsCgkJJ0ZLJyA9PiAnRmFsa2xhbmQgSXNsYW5kcycsCgkJJ0ZNJyA9PiAnTWljcm9uZXNpYScsCgkJJ0ZPJyA9PiAnRmFyb2UgSXNsYW5kcycsCgkJJ0ZSJyA9PiAnRnJhbmNlJywKCQknR0EnID0+ICdHYWJvbicsCgkJJ0dCJyA9PiAnVW5pdGVkIEtpbmdkb20nLAoJCSdHRCcgPT4gJ0dyZW5hZGEnLAoJCSdHRScgPT4gJ0dlb3JnaWEnLAoJCSdHRicgPT4gJ0ZyZW5jaCBHdWlhbmEnLAoJCSdHSCcgPT4gJ0doYW5hJywKCQknR0knID0+ICdHaWJyYWx0YXInLAoJCSdHTCcgPT4gJ0dyZWVubGFuZCcsCgkJJ0dNJyA9PiAnR2FtYmlhJywKCQknR04nID0+ICdHdWluZWEnLAoJCSdHUCcgPT4gJ0d1YWRlbG91cGUnLAoJCSdHUScgPT4gJ0VxdWF0b3JpYWwgR3VpbmVhJywKCQknR1InID0+ICdHcmVlY2UnLAoJCSdHUycgPT4gJ1NvdXRoIEdlb3JnaWEgYW5kIHRoZSBTb3V0aCBTYW5kd2ljaCBJc2xhbmRzJywKCQknR1QnID0+ICdHdWF0ZW1hbGEnLAoJCSdHVScgPT4gJ0d1YW0nLAoJCSdHVycgPT4gJ0d1aW5lYS1CaXNzYXUnLAoJCSdHWScgPT4gJ0d1eWFuYScsCgkJJ0hLJyA9PiAnSG9uZyBLb25nIFMuQS5SLiwgQ2hpbmEnLAoJCSdITScgPT4gJ0hlYXJkIElzbGFuZCBhbmQgTWNEb25hbGQgSXNsYW5kcycsCgkJJ0hOJyA9PiAnSG9uZHVyYXMnLAoJCSdIUicgPT4gJ0Nyb2F0aWEnLAoJCSdIVCcgPT4gJ0hhaXRpJywKCQknSFUnID0+ICdIdW5nYXJ5JywKCQknSUQnID0+ICdJbmRvbmVzaWEnLAoJCSdJRScgPT4gJ0lyZWxhbmQnLAoJCSdJTCcgPT4gJ0lzcmFlbCcsCgkJJ0lOJyA9PiAnSW5kaWEnLAoJCSdJTycgPT4gJ0JyaXRpc2ggSW5kaWFuIE9jZWFuIFRlcnJpdG9yeScsCgkJJ0lRJyA9PiAnSXJhcScsCgkJJ0lSJyA9PiAnSXJhbicsCgkJJ0lTJyA9PiAnSWNlbGFuZCcsCgkJJ0lUJyA9PiAnSXRhbHknLAoJCSdKTScgPT4gJ0phbWFpY2EnLAoJCSdKTycgPT4gJ0pvcmRhbicsCgkJJ0pQJyA9PiAnSmFwYW4nLAoJCSdLRScgPT4gJ0tlbnlhJywKCQknS0cnID0+ICdLeXJneXpzdGFuJywKCQknS0gnID0+ICdDYW1ib2RpYScsCgkJJ0tJJyA9PiAnS2lyaWJhdGknLAoJCSdLTScgPT4gJ0NvbW9yb3MnLAoJCSdLTicgPT4gJ1NhaW50IEtpdHRzIGFuZCBOZXZpcycsCgkJJ0tQJyA9PiAnTm9ydGggS29yZWEnLAoJCSdLUicgPT4gJ1NvdXRoIEtvcmVhJywKCQknS1cnID0+ICdLdXdhaXQnLAoJCSdLWScgPT4gJ0NheW1hbiBJc2xhbmRzJywKCQknS1onID0+ICdLYXpha2hzdGFuJywKCQknTEEnID0+ICdMYW9zJywKCQknTEInID0+ICdMZWJhbm9uJywKCQknTEMnID0+ICdTYWludCBMdWNpYScsCgkJJ0xJJyA9PiAnTGllY2h0ZW5zdGVpbicsCgkJJ0xLJyA9PiAnU3JpIExhbmthJywKCQknTFInID0+ICdMaWJlcmlhJywKCQknTFMnID0+ICdMZXNvdGhvJywKCQknTFQnID0+ICdMaXRodWFuaWEnLAoJCSdMVScgPT4gJ0x1eGVtYm91cmcnLAoJCSdMVicgPT4gJ0xhdHZpYScsCgkJJ0xZJyA9PiAnTGlieWEnLAoJCSdNQScgPT4gJ01vcm9jY28nLAoJCSdNQycgPT4gJ01vbmFjbycsCgkJJ01EJyA9PiAnTW9sZG92YScsCgkJJ01HJyA9PiAnTWFkYWdhc2NhcicsCgkJJ01IJyA9PiAnTWFyc2hhbGwgSXNsYW5kcycsCgkJJ01LJyA9PiAnTWFjZWRvbmlhJywKCQknTUwnID0+ICdNYWxpJywKCQknTU0nID0+ICdNeWFubWFyJywKCQknTU4nID0+ICdNb25nb2xpYScsCgkJJ01PJyA9PiAnTWFjYW8gUy5BLlIuLCBDaGluYScsCgkJJ01QJyA9PiAnTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzJywKCQknTVEnID0+ICdNYXJ0aW5pcXVlJywKCQknTVInID0+ICdNYXVyaXRhbmlhJywKCQknTVMnID0+ICdNb250c2VycmF0JywKCQknTVQnID0+ICdNYWx0YScsCgkJJ01VJyA9PiAnTWF1cml0aXVzJywKCQknTVYnID0+ICdNYWxkaXZlcycsCgkJJ01XJyA9PiAnTWFsYXdpJywKCQknTVgnID0+ICdNZXhpY28nLAoJCSdNWScgPT4gJ01hbGF5c2lhJywKCQknTVonID0+ICdNb3phbWJpcXVlJywKCQknTkEnID0+ICdOYW1pYmlhJywKCQknTkMnID0+ICdOZXcgQ2FsZWRvbmlhJywKCQknTkUnID0+ICdOaWdlcicsCgkJJ05GJyA9PiAnTm9yZm9sayBJc2xhbmQnLAoJCSdORycgPT4gJ05pZ2VyaWEnLAoJCSdOSScgPT4gJ05pY2FyYWd1YScsCgkJJ05MJyA9PiAnTmV0aGVybGFuZHMnLAoJCSdOTycgPT4gJ05vcndheScsCgkJJ05QJyA9PiAnTmVwYWwnLAoJCSdOUicgPT4gJ05hdXJ1JywKCQknTlUnID0+ICdOaXVlJywKCQknTlonID0+ICdOZXcgWmVhbGFuZCcsCgkJJ09NJyA9PiAnT21hbicsCgkJJ1BBJyA9PiAnUGFuYW1hJywKCQknUEUnID0+ICdQZXJ1JywKCQknUEYnID0+ICdGcmVuY2ggUG9seW5lc2lhJywKCQknUEcnID0+ICdQYXB1YSBOZXcgR3VpbmVhJywKCQknUEgnID0+ICdQaGlsaXBwaW5lcycsCgkJJ1BLJyA9PiAnUGFraXN0YW4nLAoJCSdQTCcgPT4gJ1BvbGFuZCcsCgkJJ1BNJyA9PiAnU2FpbnQgUGllcnJlIGFuZCBNaXF1ZWxvbicsCgkJJ1BOJyA9PiAnUGl0Y2Fpcm4nLAoJCSdQUicgPT4gJ1B1ZXJ0byBSaWNvJywKCQknUFMnID0+ICdQYWxlc3RpbmlhbiBUZXJyaXRvcnknLAoJCSdQVCcgPT4gJ1BvcnR1Z2FsJywKCQknUFcnID0+ICdQYWxhdScsCgkJJ1BZJyA9PiAnUGFyYWd1YXknLAoJCSdRQScgPT4gJ1FhdGFyJywKCQknUkUnID0+ICdSw6l1bmlvbicsCgkJJ1JTJyA9PiAnU2VyYmlhJywKCQknUk8nID0+ICdSb21hbmlhJywKCQknUlUnID0+ICdSdXNzaWEnLAoJCSdSVycgPT4gJ1J3YW5kYScsCgkJJ1NBJyA9PiAnU2F1ZGkgQXJhYmlhJywKCQknU0InID0+ICdTb2xvbW9uIElzbGFuZHMnLAoJCSdTQycgPT4gJ1NleWNoZWxsZXMnLAoJCSdTRCcgPT4gJ1N1ZGFuJywKCQknU0UnID0+ICdTd2VkZW4nLAoJCSdTRycgPT4gJ1NpbmdhcG9yZScsCgkJJ1NIJyA9PiAnU2FpbnQgSGVsZW5hJywKCQknU0knID0+ICdTbG92ZW5pYScsCgkJJ1NKJyA9PiAnU3ZhbGJhcmQgYW5kIEphbiBNYXllbicsCgkJJ1NLJyA9PiAnU2xvdmFraWEnLAoJCSdTTCcgPT4gJ1NpZXJyYSBMZW9uZScsCgkJJ1NNJyA9PiAnU2FuIE1hcmlubycsCgkJJ1NOJyA9PiAnU2VuZWdhbCcsCgkJJ1NPJyA9PiAnU29tYWxpYScsCgkJJ1NQJyA9PiAnU2VyYmlhJywKCQknU1InID0+ICdTdXJpbmFtZScsCgkJJ1NUJyA9PiAnU2FvIFRvbWUgYW5kIFByaW5jaXBlJywKCQknU1YnID0+ICdFbCBTYWx2YWRvcicsCgkJJ1NZJyA9PiAnU3lyaWEnLAoJCSdTWicgPT4gJ1N3YXppbGFuZCcsCgkJJ1RDJyA9PiAnVHVya3MgYW5kIENhaWNvcyBJc2xhbmRzJywKCQknVEQnID0+ICdDaGFkJywKCQknVEYnID0+ICdGcmVuY2ggU291dGhlcm4gVGVycml0b3JpZXMnLAoJCSdURycgPT4gJ1RvZ28nLAoJCSdUSCcgPT4gJ1RoYWlsYW5kJywKCQknVEonID0+ICdUYWppa2lzdGFuJywKCQknVEsnID0+ICdUb2tlbGF1JywKCQknVEwnID0+ICdUaW1vci1MZXN0ZScsCgkJJ1RNJyA9PiAnVHVya21lbmlzdGFuJywKCQknVE4nID0+ICdUdW5pc2lhJywKCQknVE8nID0+ICdUb25nYScsCgkJJ1RSJyA9PiAnVHVya2V5JywKCQknVFQnID0+ICdUcmluaWRhZCBhbmQgVG9iYWdvJywKCQknVFYnID0+ICdUdXZhbHUnLAoJCSdUVycgPT4gJ1RhaXdhbicsCgkJJ1RaJyA9PiAnVGFuemFuaWEnLAoJCSdVQScgPT4gJ1VrcmFpbmUnLAoJCSdVRycgPT4gJ1VnYW5kYScsCgkJJ1VNJyA9PiAnVW5pdGVkIFN0YXRlcyBNaW5vciBPdXRseWluZyBJc2xhbmRzJywKCQknVVMnID0+ICdVbml0ZWQgU3RhdGVzJywKCQknVVknID0+ICdVcnVndWF5JywKCQknVVonID0+ICdVemJla2lzdGFuJywKCQknVkEnID0+ICdWYXRpY2FuJywKCQknVkMnID0+ICdTYWludCBWaW5jZW50IGFuZCB0aGUgR3JlbmFkaW5lcycsCgkJJ1ZFJyA9PiAnVmVuZXp1ZWxhJywKCQknVkcnID0+ICdCcml0aXNoIFZpcmdpbiBJc2xhbmRzJywKCQknVkknID0+ICdVLlMuIFZpcmdpbiBJc2xhbmRzJywKCQknVk4nID0+ICdWaWV0bmFtJywKCQknVlUnID0+ICdWYW51YXR1JywKCQknV0YnID0+ICdXYWxsaXMgYW5kIEZ1dHVuYScsCgkJJ1dTJyA9PiAnU2Ftb2EnLAoJCSdZRScgPT4gJ1llbWVuJywKCQknWVQnID0+ICdNYXlvdHRlJywKCQknWVUnID0+ICdZdWdvc2xhdmlhJywKCQknWkEnID0+ICdTb3V0aCBBZnJpY2EnLAoJCSdaTScgPT4gJ1phbWJpYScsCgkJJ1pXJyA9PiAnWmltYmFid2UnCgkpOwoJCn0KCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKJGRiID0gJHRoaXMtPkdldERiKCk7CgokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CgokZmxkcyA9IGFycmF5KAoJJ2lkIEkgS0VZJywKCSdtb2R1bGVfbmFtZSBDKDI1NSknLAoJJ21vZHVsZV9mcmllbmRseW5hbWUgQygyNTUpJywKCSdtb2R1bGVfdmVyc2lvbiBJJywKCSdwYXJlbnRfbW9kdWxlIEknLAoJJ2FkbWluX3NlY3Rpb24gQygyNTUpJywKCSdjcmVhdGVkX2F0IEQnLAoJJ2NyZWF0ZWRfYnkgSScsCgkndXBkYXRlZF9hdCBEJywKCSd1cGRhdGVkX2J5IEknLAoJJ3Nob3dfbW9kdWxlIEknLAoJJ2lzX3VzZXJfbW9kdWxlIEknLAoJJ2lzX3Byb3RlY3RlZCBJJywKCSdmaWxlc19wYXRoIFhMJywJCgknZXh0cmFfZmllbGRzIFgnLAoJJ2ZpbHRlcnMgWCcsCgknbW9kdWxlX2xvZ2ljCVhMJywKCSd0ZW1wbGF0ZXNfZGF0YSBYTCcKKTsKJHNxbCA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21jZmFjdG9yeV9tb2R1bGVzJywgaW1wbG9kZSgnLCcsICRmbGRzKSwgYXJyYXkoJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nKSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbCk7CiRkYi0+Q3JlYXRlU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tY2ZhY3RvcnlfbW9kdWxlc19zZXEnKTsKCiRmbGRzID0gYXJyYXkoCgknaWQgSSBLRVkgQVVUTycsCQoJJ2NyZWF0ZWRfYXQgRCcsCgknY3JlYXRlZF9ieSBJJywKCSd1cGRhdGVkX2F0IEQnLAoJJ3VwZGF0ZWRfYnkgSScsCgknbW9kdWxlX2lkIEknLAoJJ25hbWUgQygyNTUpJywKCSdjb2RlIFhMJywKCSdpc19wdWJsaWMgSScsCgknaGF2ZV9wZXJtaXNzaW9uIEknCik7Cgokc3FsID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWNmYWN0b3J5X21vZHVsZV9hY3Rpb25zJywgaW1wbG9kZSgnLCcsICRmbGRzKSwgYXJyYXkoJ215c3FsJyA9PiAnVFlQRT1NeUlTQU0nKSk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbCk7CgokZmxkcyA9IGFycmF5KAoJJ2lkIEkgS0VZJywKCSdhdHRyaWJ1dGVfbmFtZSBDKDI1NSknLAoJJ2F0dHJpYnV0ZV92YWx1ZSBDKDI1NSknCik7CiRzcWwgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tY2ZhY3RvcnlfYXR0cmlidXRlcycsIGltcGxvZGUoJywnLCAkZmxkcyksIGFycmF5KCdteXNxbCcgPT4gJ1RZUEU9TXlJU0FNJykpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWwpOwokZGItPkNyZWF0ZVNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWNmYWN0b3J5X2F0dHJpYnV0ZXNfc2VxJyk7CgokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTWFuYWdlIE1DRmFjdG9yeScsICdNYW5hZ2UgTUMgRmFjdG9yeScpOwokdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0NvbnRlbnRFZGl0UG9zdCcsIGZhbHNlKTsKJHRoaXMtPkF1ZGl0KDAsICR0aGlzLT5HZXROYW1lKCksICR0aGlzLT5MYW5nKCdpbnN0YWxsZWQnLCAkdGhpcy0+R2V0VmVyc2lvbigpKSk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKJGRiID0gJHRoaXMtPkdldERiKCk7CgokZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7Cgokc3FsID0gJGRpY3QtPkRyb3BUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21jZmFjdG9yeV9tb2R1bGVzJyk7CiRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbCk7CiRkYi0+RHJvcFNlcXVlbmNlKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWNmYWN0b3J5X21vZHVsZXNfc2VxJyk7Cgokc3FsID0gJGRpY3QtPkRyb3BUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21jZmFjdG9yeV9tb2R1bGVfYWN0aW9ucycpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWwpOwoKJHNxbCA9ICRkaWN0LT5Ecm9wVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tY2ZhY3RvcnlfYXR0cmlidXRlcycpOwokZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWwpOwokZGItPkRyb3BTZXF1ZW5jZShjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21jZmFjdG9yeV9hdHRyaWJ1dGVzX3NlcScpOwoKJHRoaXMtPlJlbW92ZVBlcm1pc3Npb24oJ01hbmFnZSBNQ0ZhY3RvcnknKTsKJHRoaXMtPlJlbW92ZUV2ZW50SGFuZGxlcignQ29yZScsICdDb250ZW50RWRpdFBvc3QnKTsKCgokdGhpcy0+QXVkaXQoMCwgJHRoaXMtPmdldEZyaWVuZGx5TmFtZSgpLCAkdGhpcy0+TGFuZygndW5pbnN0YWxsZWQnKSk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKJGRiID0gJHRoaXMtPkdldERiKCk7CiRkaWN0ID0gTmV3RGF0YURpY3Rpb25hcnkoJGRiKTsKCnN3aXRjaCh0cnVlKSB7CgljYXNlIHZlcnNpb25fY29tcGFyZSgkb2xkdmVyc2lvbiwgJzAuMScsICc8Jyk6CgkJJHNxbCA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tY2ZhY3RvcnlfbW9kdWxlcycsICdmaWx0ZXJzIFgnKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWwpOwoJY2FzZSB2ZXJzaW9uX2NvbXBhcmUoJG9sZHZlcnNpb24sICcwLjMnLCAnPCcpOgoJCSRzcWwgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWNmYWN0b3J5X21vZHVsZXMnLCAncGFyZW50X21vZHVsZSBJJyk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsKTsKCWNhc2UgdmVyc2lvbl9jb21wYXJlKCRvbGR2ZXJzaW9uLCAnMS4wLjEnLCAnPCcpOgoJCSR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdNYW5hZ2UgTUNGYWN0b3J5JywgJ01hbmFnZSBNQ0ZhY3RvcnknKTsKCWNhc2UgdmVyc2lvbl9jb21wYXJlKCRvbGR2ZXJzaW9uLCAnMS4xJywgJzwnKToKCQkkZmxkcyA9IGFycmF5KAoJCQknaWQgSSBLRVknLAoJCQknYXR0cmlidXRlX25hbWUgQygyNTUpJywKCQkJJ2F0dHJpYnV0ZV92YWx1ZSBDKDI1NSknCgkJKTsKCQkkc3FsID0gJGRpY3QtPkNyZWF0ZVRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWNmYWN0b3J5X2F0dHJpYnV0ZXMnLCBpbXBsb2RlKCcsJywgJGZsZHMpLCBhcnJheSgnbXlzcWwnID0+ICdUWVBFPU15SVNBTScpKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWwpOwoJCSRkYi0+Q3JlYXRlU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tY2ZhY3RvcnlfYXR0cmlidXRlc19zZXEnKTsKCQkkdGhpcy0+QWRkRXZlbnRIYW5kbGVyKCdDb3JlJywgJ0NvbnRlbnRFZGl0UG9zdCcsIGZhbHNlKTsKCWNhc2UgdmVyc2lvbl9jb21wYXJlKCRvbGR2ZXJzaW9uLCAnMi43LjEnLCAnPCcpOgoJCSRjID0gbmV3IE1DRkNyaXRlcmlhKCk7CgkJJG1vZHVsZXMgPSBNQ0ZNb2R1bGU6OmRvU2VsZWN0KCRjKTsKCQlmb3JlYWNoICgkbW9kdWxlcyBhcyAkbW9kdWxlKQoJCXsKCQkJCSRzcWxhcnJheSA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV8nIC4gc3RydG9sb3dlcigkbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCkpLCAnZnVsbF90ZXh0X3NlYXJjaCBYTCcpOwoJCQkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCX0KCWNhc2UgdmVyc2lvbl9jb21wYXJlKCRvbGR2ZXJzaW9uLCAnMi44LjYnLCAnPCcpOgoJCSRzcWwgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWNmYWN0b3J5X21vZHVsZXMnLCAnc2hvd19tb2R1bGUgSScpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbCk7CgljYXNlIHZlcnNpb25fY29tcGFyZSgkb2xkdmVyc2lvbiwgJzIuOS4xJywgJzwnKToKCQkkc3FsID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21jZmFjdG9yeV9tb2R1bGVzJywgJ21vZHVsZV9sb2dpYwlYTCcpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbCk7CgljYXNlIHZlcnNpb25fY29tcGFyZSgkb2xkdmVyc2lvbiwgJzIuOS4xNScsICc8Jyk6CgkJJHNxbCA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tY2ZhY3RvcnlfbW9kdWxlcycsICdpc191c2VyX21vZHVsZQlJJyk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsKTsKCWNhc2UgdmVyc2lvbl9jb21wYXJlKCRvbGR2ZXJzaW9uLCAnMi4xMC4xMCcsICc8Jyk6CgkJJGZsZHMgPSBhcnJheSgKCQkJJ2lkIEkgS0VZIEFVVE8nLAkKCQkJJ2NyZWF0ZWRfYXQgRCcsCgkJCSdjcmVhdGVkX2J5IEknLAoJCQkndXBkYXRlZF9hdCBEJywKCQkJJ3VwZGF0ZWRfYnkgSScsCgkJCSdtb2R1bGVfaWQgSScsCgkJCSduYW1lIEMoMjU1KScsCgkJCSdjb2RlIFhMJywKCQkJJ2lzX3B1YmxpYyBJJywKCQkJJ2hhdmVfcGVybWlzc2lvbiBJJwoJCSk7CgkJJHNxbCA9ICRkaWN0LT5DcmVhdGVUYWJsZVNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21jZmFjdG9yeV9tb2R1bGVfYWN0aW9ucycsIGltcGxvZGUoJywnLCAkZmxkcyksIGFycmF5KCdteXNxbCcgPT4gJ1RZUEU9TXlJU0FNJykpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbCk7CgkJJHNxbCA9ICRkaWN0LT5BZGRDb2x1bW5TUUwoY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9tY2ZhY3RvcnlfbW9kdWxlcycsICd0ZW1wbGF0ZXNfZGF0YQlYTCcpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbCk7CgljYXNlIHZlcnNpb25fY29tcGFyZSgkb2xkdmVyc2lvbiwgJzIuMTAuMTMnLCAnPCcpOgoJCSRzcWwgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWNmYWN0b3J5X21vZHVsZXMnLCAnYWRtaW5fc2VjdGlvbiBDKDI1NSknKTsKCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWwpOwkKCWNhc2UgdmVyc2lvbl9jb21wYXJlKCRvbGR2ZXJzaW9uLCAnMi4xMS40JywgJzwnKToKCQkkc3FsID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX21jZmFjdG9yeV9tb2R1bGVzJywgJ2lzX3Byb3RlY3RlZCBJJyk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsKTsJCQoJCSRzcWwgPSAkZGljdC0+QWRkQ29sdW1uU1FMKGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfbWNmYWN0b3J5X21vZHVsZXMnLCAnZmlsZXNfcGF0aCBYTCcpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbCk7CQp9CgokdGhpcy0+QXVkaXQoMCwgJHRoaXMtPmdldEZyaWVuZGx5TmFtZSgpLCAkdGhpcy0+TGFuZygndXBncmFkZWQnLCAkdGhpcy0+R2V0VmVyc2lvbigpKSk7Cgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/plugins/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/plugins/function.country_name.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmZ1bmN0aW9uIHNtYXJ0eV9jbXNfZnVuY3Rpb25fY291bnRyeV9uYW1lKCRwYXJhbXMsICYkc21hcnR5KSB7CglpZiAoJHBhcmFtc1snY29kZSddKSB7CgkJJGNvZGUgPSBzdHJ0b3VwcGVyKCRwYXJhbXNbJ2NvZGUnXSk7CgkJaWYgKGlzc2V0KE1DRmFjdG9yeTo6JGNvdW50cmllc1skY29kZV0pKSB7CgkJCXJldHVybiBNQ0ZhY3Rvcnk6OiRjb3VudHJpZXNbJGNvZGVdOwoJCX0KCX0KfQoKPz4K]]></data>
	</file>
	<file>
	  <filename>/smarty/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/smarty/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABgAAAAIAAAAGAAAABALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAUAAAABAAAQAABsAGEAdABlAHNJbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAAAAkAdABlAG0AcABsAGEAdABlAHNJbG9jYmxvYgAAABAAAABGAAAAKP///////wAAAAAACQB0AGUAbQBwAGwAYQB0AGUAc2J3c3BibG9iAAAAsGJwbGlzdDAw1gECAwQFBgcICAoIDFxXaW5kb3dCb3VuZHNbU2hvd1NpZGViYXJdU2hvd1N0YXR1c0JhcltTaG93UGF0aGJhcltTaG93VG9vbGJhclxTaWRlYmFyV2lkdGhfEBl7ezc2NSwgMjQ4fSwgezEwMTEsIDU4M319CQkICRDACBUiLjxIVGF9fn+AgQAAAAAAAAEBAAAAAAAAAA0AAAAAAAAAAAAAAAAAAACDAAAACQB0AGUAbQBwAGwAYQB0AGUAc2xzdnBibG9iAAACp2JwbGlzdDAw2gECAwQFBgcICQoLCw0OSktMEE0mXxAQdXNlUmVsYXRpdmVEYXRlc18QD3Nob3dJY29uUHJldmlld18QEWNhbGN1bGF0ZUFsbFNpemVzV2NvbHVtbnNfEA9zY3JvbGxQb3NpdGlvbllYdGV4dFNpemVfEA9zY3JvbGxQb3NpdGlvblhac29ydENvbHVtblhpY29uU2l6ZV8QEnZpZXdPcHRpb25zVmVyc2lvbgkJCNkPEBESExQVFhcYIScsMTY7QEVYY29tbWVudHNUbmFtZVtkYXRlQ3JlYXRlZFRzaXplVWxhYmVsVGtpbmRXdmVyc2lvbl5kYXRlTGFzdE9wZW5lZFxkYXRlTW9kaWZpZWTUGRobHA0eCyBXdmlzaWJsZVV3aWR0aFlhc2NlbmRpbmdVaW5kZXgIEQEsCRAH1CIaGxwLJAsmV3Zpc2libGUJEQEsCRAA1BkaGxwNKQ0rCBC1CBAC1BkaGxwLLg0wCRBhCBAD1BkaGxwNMws1CBBkCRAF1BkaGxwLOAs6CRBzCRAE1BkaGxwNPQs/CBBLCRAG1BkaGxwNQg1ECBDICBAI1BkaGxwLRw1JCRC1CBABI0BxgAAAAAAAI0AoAAAAAAAAIwAAAAAAAAAAI0AwAAAAAAAAAAgAHQAwAEIAVgBeAHAAeQCLAJYAnwC0ALUAtgC3AMoA0wDYAOQA6QDvAPQA/AELARgBIQEpAS8BOQE/AUABQwFEAUYBTwFXAVgBWwFcAV4BZwFoAWoBawFtAXYBdwF5AXoBfAGFAYYBiAGJAYsBlAGVAZcBmAGaAaMBpAGmAacBqQGyAbMBtQG2AbgBwQHCAcQBxQHHAdAB2QHiAAAAAAAAAgEAAAAAAAAATgAAAAAAAAAAAAAAAAAAAesAAAALAHQAZQBtAHAAbABhAHQAZQBzAF8AY0lsb2NibG9iAAAAEAAAAMwAAAAo////////AAAAAAALAHQAZQBtAHAAbABhAHQAZQBzAF8AY2J3c3BibG9iAAAAsGJwbGlzdDAw1gECAwQFBgcICAoIDFxXaW5kb3dCb3VuZHNbU2hvd1NpZGViYXJdU2hvd1N0YXR1c0JhcltTaG93UGF0aGJhcltTaG93VG9vbGJhclxTaWRlYmFyV2lkdGhfEBl7ezc2NSwgMjQ4fSwgezEwMTEsIDU4M319CQkICRDACBUiLjxIVGF9fn+AgQAAAAAAAAEBAAAAAAAAAA0AAAAAAAAAAAAAAAAAAACDAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAYCwAAAEUAABALAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEERFNEQgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAgAAAAYAAAAAAAAAABAAAAgAAAAAEAAAEAAAAAAQAAAgAAAAABAAAEAAAAAAEAAAgAAAAAAAAAAAEAACAAAAAAAQAAQAAAAAABAACAAAAAAAEAAQAAAAAAAQACAAAAAAABAAQAAAAAAAEACAAAAAAAAQAQAAAAAAABACAAAAAAAAEAQAAAAAAAAQCAAAAAAAABAQAAAAAAAAECAAAAAAAAAQQAAAAAAAABCAAAAAAAAAEQAAAAAAAAASAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/smarty/templates/.DS_Store</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[AAAAAUJ1ZDEAABAAAAAIAAAAEAAAAAEIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAABAAAQAABsAGEAdABlAHNidwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAkAdABlAG0AcABsAGEAdABlAHNid3NwYmxvYgAAALBicGxpc3QwMNYBAgMEBQYHCAgKCAxcV2luZG93Qm91bmRzW1Nob3dTaWRlYmFyXVNob3dTdGF0dXNCYXJbU2hvd1BhdGhiYXJbU2hvd1Rvb2xiYXJcU2lkZWJhcldpZHRoXxAZe3s3NjUsIDI0OH0sIHsxMDExLCA1ODN9fQkJCAkQwAgVIi48SFRhfX5/gIEAAAAAAAABAQAAAAAAAAANAAAAAAAAAAAAAAAAAAAAgwAAAAkAdABlAG0AcABsAGEAdABlAHNkc2NsYm9vbAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAgLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACAAAAABAAAAQAAAAAEAAACAAAAAAQAAAQAAAAABAAACAAAAAAEAAAQAAAAAAAAAAAEAABAAAAAAAQAAIAAAAAABAABAAAAAAAEAAIAAAAAAAQABAAAAAAABAAIAAAAAAAEABAAAAAAAAQAIAAAAAAABABAAAAAAAAEAIAAAAAAAAQBAAAAAAAABAIAAAAAAAAEBAAAAAAAAAQIAAAAAAAABBAAAAAAAAAEIAAAAAAAAARAAAAAAAAABIAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAEAsAAABFAAABCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABBERTREIAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAIAAAAGAAAAAAAAAAAQAAAIAAAAAAAAAAAQAAAgAAAAABAAAEAAAAAAIAAAgAAAAYAAAAAAAAAAABAAAgAAAAAAEAAEAAAAAAAQAAgAAAAAABAAEAAAAAAAEAAgAAAAAAAQAEAAAAAAABAAgAAAAAAAEAEAAAAAAAAQAgAAAAAAABAEAAAAAAAAEAgAAAAAAAAQEAAAAAAAABAgAAAAAAAAEEAAAAAAAAAQgAAAAAAAABEAAAAAAAAAEgAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.assigntitles.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZXMnLCB7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19T2JqZWN0OjpnZXRUaXRsZXMoKSk7Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.calendar.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKJGMgPSBuZXcgTUNGQ3JpdGVyaWEoKTsKJGMtPmFkZCgncHVibGlzaGVkJywgJzEnKTsKJHRoaXMtPmJ1aWxkRnJvbnRlbmRGaWx0ZXJzKCRjLCAkcGFyYW1zKTsKe3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fU9iamVjdDo6Z2xvYmFsRnJvbnRlbmRGaWx0ZXJzKCRjKTsKCi8vIERlZmluZSBzY29wZQoKaWYgKGlzc2V0KCRwYXJhbXNbJ3Njb3BlJ10pKQp7CgkkX1NFU1NJT05bJ21vZHVsZXMnXVsne3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fSddWydjYWxlbmRhciddWydzY29wZSddID0gJHBhcmFtc1snc2NvcGUnXTsKfQoKaWYgKCFpc3NldCgkX1NFU1NJT05bJ21vZHVsZXMnXVsne3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fSddWydjYWxlbmRhciddWydzY29wZSddICkpCnsKCSRfU0VTU0lPTlsnbW9kdWxlcyddWyd7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19J11bJ2NhbGVuZGFyJ11bJ3Njb3BlJ10gPSB0aW1lKCk7Cn0KCiRzY29wZSA9ICRfU0VTU0lPTlsnbW9kdWxlcyddWyd7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19J11bJ2NhbGVuZGFyJ11bJ3Njb3BlJ107CgovLyBJbml0IGNhbGVuZGFyCgokY2FsZW5kYXIgPSBuZXcgTUNGQ2FsZW5kYXIoJHNjb3BlKTsKCiRjLT5hZGQoJ3N0YXJ0X2RhdGUnLCBkYXRlKCdZL20vZCcsICRjYWxlbmRhci0+ZW5kX2RhdGUpLCBNQ0ZDcml0ZXJpYTo6TEVTU19FUVVBTCk7CiRjLT5hZGQoJ2VuZF9kYXRlJywgZGF0ZSgnWS9tL2QnLCAkY2FsZW5kYXItPnN0YXJ0X2RhdGUpLCBNQ0ZDcml0ZXJpYTo6R1JFQVRFUl9FUVVBTCk7CgokaXRlbXMgPSB7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19T2JqZWN0Ojpkb1NlbGVjdCgkYyk7CgokZGV0YWlscGFnZSA9ICRyZXR1cm5pZDsKaWYgKGlzc2V0KCRwYXJhbXNbJ2RldGFpbHBhZ2UnXSkpIHsKICAgICRtYW5hZ2VyID0gJGdDbXMtPkdldEhpZXJhcmNoeU1hbmFnZXIoKTsKICAgICRub2RlID0gJG1hbmFnZXItPnN1cmVHZXROb2RlQnlBbGlhcygkcGFyYW1zWydkZXRhaWxwYWdlJ10pOwogICAgaWYgKCRub2RlKSB7CiAgICAgICAgJGNvbnRlbnQgPSAkbm9kZS0+R2V0Q29udGVudCgpOwogICAgICAgIGlmICgkY29udGVudCkKICAgICAgICB7CiAgICAgICAgICAgICRkZXRhaWxwYWdlID0gJGNvbnRlbnQtPklkKCk7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICAkbm9kZSA9ICRtYW5hZ2VyLT5zdXJlR2V0Tm9kZUJ5SWQoJHBhcmFtc1snZGV0YWlscGFnZSddKTsKICAgICAgICBpZiAoJG5vZGUpIHsKICAgICAgICAgICAgJGRldGFpbHBhZ2UgPSAkcGFyYW1zWydkZXRhaWxwYWdlJ107CiAgICAgICAgfQogICAgfQogICAgJHBhcmFtc1snb3JpZ2lkJ10gPSAkcmV0dXJuaWQ7Cn0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdkZXRhaWxwYWdlJywkZGV0YWlscGFnZSk7CgoKLy8gTVggUHJlbG9hZGluZwokaWRzID0gYXJyYXkoKTsKZm9yZWFjaCAoJGl0ZW1zIGFzICRpdGVtKQp7CgkkaWRzW10gPSAkaXRlbS0+Z2V0SWQoKTsKfQpNWF9YdGVuZGVkTW9kdWxlOjpwcmVsb2FkUmVsYXRlZEl0ZW1zKCR0aGlzLT5nZXROYW1lKCksICRpZHMpOwoKZm9yZWFjaCAoJGl0ZW1zIGFzICYkaXRlbSkgewoJJHBhcmFtc1snaXRlbV9pZCddID0gJGl0ZW0tPmdldElkKCk7CgkkcGFyYW1zWyd0aXRsZSddID0gJGl0ZW0tPmdldENvcmVTbHVnKCk7CgkkbmV3cGFyYW1zID0gJHBhcmFtczsKCXVuc2V0KCRuZXdwYXJhbXNbJ3Nob3d0ZW1wbGF0ZSddKTsKCXVuc2V0KCRuZXdwYXJhbXNbJ2RldGFpbHBhZ2UnXSk7Cgl1bnNldCgkbmV3cGFyYW1zWyd0ZW1wbGF0ZSddKTsKCSRpdGVtLT5kZXRhaWxfbGluayA9ICR0aGlzLT5jcmVhdGVMaW5rKCRpZCwgJ2NhbGVuZGFyJywgJGRldGFpbHBhZ2UsICRjb250ZW50cz0nJywgJG5ld3BhcmFtcywgJycsIHRydWUsIHRydWUpOwoJJGl0ZW0tPnh0ZW5kZWRfZmVsaXN0ID0gTVhfWHRlbmRlZE1vZHVsZTo6Z2V0UmVsYXRlZEl0ZW1zKCR0aGlzLT5nZXROYW1lKCksICRpdGVtLT5nZXRJZCgpKTsKfQp1bnNldCgkaXRlbSk7CgokY2FsZW5kYXItPnByb2Nlc3NFdmVudHMoJGl0ZW1zKTsKJGNhbGVuZGFyLT5wcm9jZXNzQ2FsZW5kYXIoKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbignY2FsZW5kYXInLCAkY2FsZW5kYXItPmNhbGVuZGFyX3RhYmxlKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtY2ZjYWxlbmRhcicsICRjYWxlbmRhci0+Y2FsZW5kYXJfdGFibGUpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2N1cnJlbnRfbW9udGgnLCAkc2NvcGUpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ZpcnN0X2RheScsJGNhbGVuZGFyLT5maXJzdF9kYXkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2xhc3RfZGF5JywkY2FsZW5kYXItPmxhc3RfZGF5KTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCduZXh0X21vbnRoJywgJHRoaXMtPmNyZWF0ZUxpbmsoJGlkLCdjYWxlbmRhcicsICRkZXRhaWxwYWdlLCAkY29udGVudHM9JycsIAoJYXJyYXlfbWVyZ2UoCgkJJHBhcmFtcywgCgkJYXJyYXkoCgkJCSdzY29wZScgPT4gc3RydG90aW1lKCcrIDEgTU9OVEgnLCRzY29wZSkKCQkJKQoJCSkKCSwgJycsIHRydWUsIHRydWUpKTsKCiR0aGlzLT5zbWFydHktPmFzc2lnbigncHJldmlvdXNfbW9udGgnLCAkdGhpcy0+Y3JlYXRlTGluaygkaWQsICdjYWxlbmRhcicsICRkZXRhaWxwYWdlLCAkY29udGVudHM9JycsIAoJYXJyYXlfbWVyZ2UoCgkJJHBhcmFtcywgICAKCQlhcnJheSgKCQkJJ3Njb3BlJyA9PiBzdHJ0b3RpbWUoJy0gMSBNT05USCcsICRzY29wZSkKCQkJKQoJCSkKCSwgJycsIHRydWUsIHRydWUpKTsKCgppZiAoaXNzZXQoJHBhcmFtc1sndmFyJ10pKSB7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJHBhcmFtc1sndmFyJ10sICRpdGVtcyk7Cn0gZWxzZSB7CiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpdGVtcycsICRpdGVtcyk7CiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19JywgJGl0ZW1zKTsKICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfGxvd2VyfX0nLCAkaXRlbXMpOwogICRwYXJhbXNvYmogPSBuZXcgc3RkQ2xhc3MoKTsKICAkcGFyYW1zb2JqLT5wYXJhbXMgPSAkcGFyYW1zOwogICR0aGlzLT5zbWFydHktPmFzc2lnbignbWNmYWN0b3J5JywgJHBhcmFtc29iaik7CgoJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRm9yKCdjYWxlbmRhcicsICRwYXJhbXMpOwp9CgpyZXR1cm47Cj8+]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.count.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKJGMgPSBuZXcgTUNGQ3JpdGVyaWEoKTsKJGMtPmFkZCgncHVibGlzaGVkJywgJzEnKTsKCmlmIChpc3NldCgkcGFyYW1zWydjdXJyZW50cGFnZSddKSkgewoJJGMtPmFkZCgnaWQnLCBNWF9SZWxhdGlvbkxpbms6OmdldFJlbGF0ZWRJdGVtc0lkcygne3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fScsICRnQ21zLT52YXJpYWJsZXNbJ2NvbnRlbnRfaWQnXSwgJ3BhZ2VzJyksIE1DRkNyaXRlcmlhOjpJTik7Cn0KaWYgKGlzc2V0KCRwYXJhbXNbJ3BhZ2VzJ10pKSB7CgkkZ2x1ZSA9IGlzc2V0KCRwYXJhbXNbJ2FsbF9wYWdlcyddKSA/ICdBTkQnIDogJ09SJzsKCSRjLT5hZGQoJ2lkJywgTVhfUmVsYXRpb25MaW5rOjpnZXRSZWxhdGVkSXRlbXNJZHMoJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nLCBleHBsb2RlKCcsJywgJHBhcmFtc1sncGFnZXMnXSksICdwYWdlcycsICRnbHVlKSwgTUNGQ3JpdGVyaWE6OklOKTsKfQppZiAoaXNzZXQoJHBhcmFtc1snb3B0aW9ucyddKSkgewoJJGdsdWUgPSBpc3NldCgkcGFyYW1zWydhbGxfb3B0aW9ucyddKSA/ICdBTkQnIDogJ09SJzsKCSRjLT5hZGQoJ2lkJywgTVhfUmVsYXRpb25MaW5rOjpnZXRSZWxhdGVkSXRlbXNJZHMoJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nLCBleHBsb2RlKCcsJywgJHBhcmFtc1snb3B0aW9ucyddKSwgJ29wdGlvbnMnLCAkZ2x1ZSksIE1DRkNyaXRlcmlhOjpJTik7Cn0KCnt7Zm9yZWFjaCBmcm9tPSRmaWx0ZXJzIGl0ZW09ZmlsdGVyfX0KaWYgKGlzc2V0KCRwYXJhbXNbJ3t7JGZpbHRlci5uYW1lfX0nXSkgJiYgIWVtcHR5KCRwYXJhbXNbJ3t7JGZpbHRlci5uYW1lfX0nXSkpIHsKCXt7aWYgaW5fYXJyYXkoJGZpbHRlci50eXBlLCBhcnJheSgnbGVzcycsICdsZXNzX2VxdWFsJywgJ2dyZWF0ZXInLCAnZ3JlYXRlcl9lcXVhbCcpKX19CgkkYy0+YWRkKCdDQVNUKHt7JGZpbHRlci5maWVsZH19IEFTIFVOU0lHTkVEKScsICRwYXJhbXNbJ3t7JGZpbHRlci5uYW1lfX0nXSwgTUNGQ3JpdGVyaWE6Ont7JGZpbHRlci5jcml0ZXJpYX19KTsKCXt7ZWxzZX19CgkkYy0+YWRkKCd7eyRmaWx0ZXIuZmllbGR9fScsICRwYXJhbXNbJ3t7JGZpbHRlci5uYW1lfX0nXSwgTUNGQ3JpdGVyaWE6Ont7JGZpbHRlci5jcml0ZXJpYX19KTsKCXt7L2lmfX0KfQp7ey9mb3JlYWNofX0KCmlmIChpc3NldCgkcGFyYW1zWydsaW1pdCddKSkgewoJJGMtPnNldExpbWl0KCRwYXJhbXNbJ2xpbWl0J10pOwp9CgplY2hvIHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX1PYmplY3Q6OmRvQ291bnQoJGMpOw==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.default.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKJGMgPSBuZXcgTUNGQ3JpdGVyaWEoKTsKaWYoaXNzZXQoJHBhcmFtc1snc2hvd191c2VyX2l0ZW1zJ10pICYmIGlzX29iamVjdCgkZ0Ntcy0+bW9kdWxlc1snQ01TVXNlcnMnXVsnb2JqZWN0J10pKQp7CgkkdXNlciA9IENNU1VzZXJzOjpnZXRVc2VyT3JMb2dpbigpOwoJaWYgKGlzX29iamVjdCgkdXNlcikpCgl7CgkJJGMtPmFkZCgndXNlcl9pZCcsICR1c2VyLT5nZXRJZCgpKTsKCX0KCWVsc2UKCXsKCQkkYy0+YWRkKCdwdWJsaXNoZWQnLCAnMScpOwoJfQp9CmVsc2UKewoJJGMtPmFkZCgncHVibGlzaGVkJywgJzEnKTsKfQoKCiR0aGlzLT5idWlsZEZyb250ZW5kRmlsdGVycygkYywgJHBhcmFtcyk7Cnt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX1PYmplY3Q6Omdsb2JhbEZyb250ZW5kRmlsdGVycygkYyk7CgoKaWYgKGlzc2V0KCRwYXJhbXNbJ2NhbGVuZGFyJ10pICYmIGlzc2V0KCRwYXJhbXNbJ3N0YXJ0X2RhdGUnXSkgJiYgaXNzZXQoJHBhcmFtc1snZW5kX2RhdGUnXSkpCnsKCSRjYWxlbmRhciA9IG5ldyBNQ0ZDYWxlbmRhcigpOwogICRjLT5hZGQoJ3N0YXJ0X2RhdGUnLCAkcGFyYW1zWydzdGFydF9kYXRlJ10sIE1DRkNyaXRlcmlhOjpMRVNTX0VRVUFMKTsKICAkYy0+YWRkKCdlbmRfZGF0ZScsICRwYXJhbXNbJ2VuZF9kYXRlJ10sIE1DRkNyaXRlcmlhOjpHUkVBVEVSX0VRVUFMKTsKCQp9CmVsc2VpZiAoaXNzZXQoJHBhcmFtc1snY2FsZW5kYXInXSkgJiYgaXNzZXQoJHBhcmFtc1snbW9udGhfZnJvbV9kYXRlJ10pKQp7CiAgICRjYWxlbmRhcl90aW1lID0gc3RydG90aW1lKCRwYXJhbXNbJ21vbnRoX2Zyb21fZGF0ZSddKTsKICAgJGNhbGVuZGFyID0gbmV3IE1DRkNhbGVuZGFyKCRjYWxlbmRhcl90aW1lKTsKICAgJGMtPmFkZCgnc3RhcnRfZGF0ZScsIGRhdGUoJ1kvbS9kJywgJGNhbGVuZGFyLT5lbmRfZGF0ZSksIE1DRkNyaXRlcmlhOjpMRVNTX0VRVUFMKTsKICAgJGMtPmFkZCgnZW5kX2RhdGUnLCBkYXRlKCdZL20vZCcsICRjYWxlbmRhci0+c3RhcnRfZGF0ZSksIE1DRkNyaXRlcmlhOjpHUkVBVEVSX0VRVUFMKTsKfQplbHNlaWYgKAoJaXNzZXQoJHBhcmFtc1snY2FsZW5kYXInXSkgCgkmJiAKCWlzc2V0KCRfU0VTU0lPTlsnbW9kdWxlcyddWyd7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19J11bJ2NhbGVuZGFyJ11bJ3Njb3BlJ10pCgkmJgoJKCFpc3NldCgkcGFyYW1zWyduZXh0X2V2ZW50cyddKSkKCSYmCgkoIWlzc2V0KCRwYXJhbXNbJ3ByZXZpb3VzX2V2ZW50cyddKSkKCSkKewoJICRjYWxlbmRhciA9IG5ldyBNQ0ZDYWxlbmRhcigkX1NFU1NJT05bJ21vZHVsZXMnXVsne3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fSddWydjYWxlbmRhciddWydzY29wZSddKTsKICAgJGMtPmFkZCgnc3RhcnRfZGF0ZScsIGRhdGUoJ1kvbS9kJywgJGNhbGVuZGFyLT5lbmRfZGF0ZSksIE1DRkNyaXRlcmlhOjpMRVNTX0VRVUFMKTsKICAgJGMtPmFkZCgnZW5kX2RhdGUnLCBkYXRlKCdZL20vZCcsICRjYWxlbmRhci0+c3RhcnRfZGF0ZSksIE1DRkNyaXRlcmlhOjpHUkVBVEVSX0VRVUFMKTsKfQplbHNlaWYgKGlzc2V0KCRwYXJhbXNbJ2NhbGVuZGFyJ10pKQp7CiAgICRjYWxlbmRhcl90aW1lID0gaXNzZXQoJHBhcmFtc1snY2FsX3RpbWUnXSk/JHBhcmFtc1snY2FsX3RpbWUnXTp0aW1lKCk7CiAgICRjYWxlbmRhciA9IG5ldyBNQ0ZDYWxlbmRhcigkY2FsZW5kYXJfdGltZSk7CiAgICRjLT5hZGQoJ3N0YXJ0X2RhdGUnLCBkYXRlKCdZL20vZCcsICRjYWxlbmRhci0+ZW5kX2RhdGUpLCBNQ0ZDcml0ZXJpYTo6TEVTU19FUVVBTCk7CiAgICRjLT5hZGQoJ2VuZF9kYXRlJywgZGF0ZSgnWS9tL2QnLCAkY2FsZW5kYXItPnN0YXJ0X2RhdGUpLCBNQ0ZDcml0ZXJpYTo6R1JFQVRFUl9FUVVBTCk7Cn0KCgppZiAoaXNzZXQoJHBhcmFtc1snbmV4dF9ldmVudHMnXSkpCnsKICAgJGMtPmFkZCgnZW5kX2RhdGUnLCBkYXRlKCdZL20vZCcpLCBNQ0ZDcml0ZXJpYTo6R1JFQVRFUl9FUVVBTCk7Cn0KaWYgKGlzc2V0KCRwYXJhbXNbJ3ByZXZpb3VzX2V2ZW50cyddKSkKewogICAkYy0+YWRkKCdlbmRfZGF0ZScsIGRhdGUoJ1kvbS9kJyksIE1DRkNyaXRlcmlhOjpMRVNTX1RIQU4pOwp9CgokbW9kdWxleHRlbmRlciA9ICRnQ21zLT5tb2R1bGVzWydNb2R1bGVYdGVuZGVyJ11bJ29iamVjdCddOwokbXhmaWx0ZXJzID0gYXJyYXkoKTsKaWYgKCRtb2R1bGV4dGVuZGVyLT5pc1h0ZW5kZWRNb2R1bGUoJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nKSkgewoJZm9yZWFjaCAoTVhfUmVsYXRpb246OmdldEZpbHRlcnMoJHRoaXMtPmdldE5hbWUoKSkgYXMgJGZpbHRlcikgewoJICAgIGlmICgkZmlsdGVyLT5nZXRUeXBlKCkgPT0gJ2NhdGVnb3J5JykgewoJCQlpZihpc3NldCgkcGFyYW1zWyd0aXRsZV9maWx0ZXJfY2F0ZWdvcnlfJy4kZmlsdGVyLT5nZXRJZCgpXSkpCgkJCXsKCQkJCSR2YWx1ZXMgPSBhcnJheSgkcGFyYW1zWyd0aXRsZV9maWx0ZXJfY2F0ZWdvcnlfJy4kZmlsdGVyLT5nZXRJZCgpXSA9PiAwKTsKCQkJfQoJCQllbHNlCgkJCXsJCQkJCgkJICAgICAgICAkdmFsdWVzID0gYXJyYXkoJGZpbHRlci0+Z2V0VGl0bGUoZmFsc2UsIHRydWUpID0+IDApOwoJCQl9CiAgICAJCWZvcmVhY2ggKCRmaWx0ZXItPmdldFJlbGF0ZWRJdGVtcygpIGFzICRpdGVtKSB7CiAgICAJCQkkdmFsdWVzWyRpdGVtLT50aXRsZV0gPSAkaXRlbS0+aWQ7CiAgICAJCX0KICAgIAkJJG14ZmlsdGVyc1skZmlsdGVyLT5nZXRJZCgpXSA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ214ZmlsdGVyc19vcHRpb25zWycgLiAkZmlsdGVyLT5pZCAuICddJywgJHZhbHVlcywgLTEsIGlzc2V0KCRwYXJhbXNbJ214ZmlsdGVyc19vcHRpb25zJ11bJGZpbHRlci0+aWRdKSA/ICRwYXJhbXNbJ214ZmlsdGVyc19vcHRpb25zJ11bJGZpbHRlci0+aWRdIDogJycpOwoJICAgIH0gZWxzZSBpZiAoJGZpbHRlci0+Z2V0VHlwZSgpID09ICdwYWdlJykgewoJCQlpZihpc3NldCgkcGFyYW1zWyd0aXRsZV9maWx0ZXJfcGFnZV8nLiRmaWx0ZXItPmdldElkKCldKSkKCQkJewoJCQkJJHZhbHVlcyA9IGFycmF5KCRwYXJhbXNbJ3RpdGxlX2ZpbHRlcl9wYWdlXycuJGZpbHRlci0+Z2V0SWQoKV0gPT4gMCk7CgkJCX0KCQkJZWxzZQoJCQl7CQkJCQoJCSAgICAgICAgJHZhbHVlcyA9IGFycmF5KCRmaWx0ZXItPmdldFRpdGxlKGZhbHNlLCB0cnVlKSA9PiAwKTsKCQkJfQogICAgCQlmb3JlYWNoICgkZmlsdGVyLT5nZXRSZWxhdGVkSXRlbXMoKSBhcyAkaXRlbSkgewogICAgCQkJJHZhbHVlc1skaXRlbS0+dGl0bGVdID0gJGl0ZW0tPmlkOwogICAgCQl9CiAgICAJCSRteGZpbHRlcnNbJGZpbHRlci0+Z2V0SWQoKV0gPSAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdteGZpbHRlcnNfcGFnZXNbJyAuICRmaWx0ZXItPmlkIC4gJ10nLCAkdmFsdWVzLCAtMSwgaXNzZXQoJHBhcmFtc1snbXhmaWx0ZXJzX3BhZ2VzJ11bJGZpbHRlci0+aWRdKSA/ICRwYXJhbXNbJ214ZmlsdGVyc19wYWdlcyddWyRmaWx0ZXItPmlkXSA6ICcnKTsKCSAgICB9Cgl9Cn0KJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdteGZpbHRlcnMnLCAkbXhmaWx0ZXJzKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZWZpbHRlcicsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZmlsdGVyX3RpdGxlJywgaXNzZXQoJHBhcmFtc1snZmlsdGVyX3RpdGxlJ10pID8gaHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbJ2ZpbHRlcl90aXRsZSddKSA6ICcnLCAyMCkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ZpbHRlcl9hbGwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2ZpbHRlcl9hbGwnLCBpc3NldCgkcGFyYW1zWydmaWx0ZXJfYWxsJ10pID8gaHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbJ2ZpbHRlcl9hbGwnXSkgOiAnJywgMjApKTsKCmlmIChpc3NldCgkcGFyYW1zWydyYW5kb20nXSkpIHsKCSRjLT5hZGRBc2NlbmRpbmdPcmRlckJ5Q29sdW1uKCdSQU5EKCknKTsKfSBlbHNlIGlmIChpc3NldCgkcGFyYW1zWydvcmRlcmJ5J10pKSB7CgkkY2xhdXNlcyA9IGV4cGxvZGUoJywnLCAkcGFyYW1zWydvcmRlcmJ5J10pOwoJZm9yZWFjaCAoJGNsYXVzZXMgYXMgJGNsYXVzZSkgewoJCSRjbGF1c2UgPSB0cmltKCRjbGF1c2UpOwoJCWlmIChwcmVnX21hdGNoKCcvKFx3KykoPzpccysoYXNjfGRlc2MpKT8vaScsICRjbGF1c2UsICRtYXRjaGVzKSkgewoJCQkkY29sdW1uID0gJG1hdGNoZXNbMV07CgkJCSRvcmRlciA9IGlzc2V0KCRtYXRjaGVzWzJdKSA/IHN0cnRvbG93ZXIoJG1hdGNoZXNbMl0pIDogJ2FzYyc7CgkJCWlmICgkb3JkZXIgPT0gJ2Rlc2MnKSB7CgkJCQkkYy0+YWRkRGVzY2VuZGluZ09yZGVyQnlDb2x1bW4oJGNvbHVtbik7CgkJCX0gZWxzZSB7CgkJCQkkYy0+YWRkQXNjZW5kaW5nT3JkZXJCeUNvbHVtbigkY29sdW1uKTsKCQkJfQoJCX0KCX0KfSBlbHNlIHsKICAgICRjLT5hZGRBc2NlbmRpbmdPcmRlckJ5Q29sdW1uKCdvcmRlcl9ieScpOwp9CgppZiAoaXNzZXQoJHBhcmFtc1snbGltaXQnXSkpIHsKCWlmIChpc3NldCgkcGFyYW1zWydwYWdlJ10pKSB7CgkJJHBhZ2UgPSAkcGFyYW1zWydwYWdlJ107CgkJJGMtPnNldE9mZnNldCgoJHBhZ2UgLSAxKSAqICRwYXJhbXNbJ2xpbWl0J10pOwoJfSBlbHNlIHsKCQkkcGFnZSA9IDE7Cgl9CglpZihpc3NldCgkcGFyYW1zWydvZmZzZXQnXSkpCgl7CgkJJGMtPnNldE9mZnNldCgkcGFyYW1zWydvZmZzZXQnXSk7Cgl9CgkkYy0+c2V0TGltaXQoJHBhcmFtc1snbGltaXQnXSk7Cn0KCiRpdGVtcyA9IHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX1PYmplY3Q6OmRvU2VsZWN0KCRjKTsKCmlmIChpc3NldCgkcGFyYW1zWydsaW1pdCddKSkgewoJJGMtPnNldE9mZnNldCgwKTsKCSRjLT5zZXRMaW1pdCgwKTsKCSR0b3RhbCA9IHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX1PYmplY3Q6OmRvQ291bnQoJGMpOwoJJHRvdGFscGFnZXMgPSBjZWlsKCR0b3RhbCAvICRwYXJhbXNbJ2xpbWl0J10pOwoJJHBhZ2UgPSAkcGFyYW1zWydwYWdlJ10gPyAkcGFyYW1zWydwYWdlJ10gOiAxOwoJJHBhZ2VyID0gYXJyYXkoKTsKCSRwYWdlclsnaGFzX3RvX3BhZ2luYXRlJ10gPSAkdG90YWxwYWdlcyA+IDE7CgkkcGFnZXJbJ2N1cnJlbnQnXSA9ICRwYWdlOwoJJHBhZ2VyWyd0b3RhbF9wYWdlcyddID0gJHRvdGFscGFnZXM7CgkkcGFnZXJbJ3RvdGFsX3Jlc3VsdHMnXSA9ICR0b3RhbDsKCSRwYWdlclsncGFnZXMnXSA9IGFycmF5KCk7CgkKCWZvciAoJGkgPSAxOyAkaSA8PSAkdG90YWxwYWdlczsgKyskaSkgewoJCSRwYWdlclsncGFnZXMnXVtdID0gKCRpID09ICRwYWdlKSA/ICRpIDogJHRoaXMtPmNyZWF0ZUxpbmsoJGlkLCAnZGVmYXVsdCcsICRyZXR1cm5pZCwgJGksIAoJCSR0aGlzLT5QYXJhbXNGb3JMaW5rKCRwYXJhbXMsIGFycmF5KCdwYWdlJyA9PiAkaSkpCgkJLCAnJyk7Cgl9CgkkcGFnZXJbJ3ByZXZpb3VzX3BhZ2UnXSA9ICgkcGFnZSA+IDEpID8gJHRoaXMtPmNyZWF0ZUxpbmsoJGlkLCAnZGVmYXVsdCcsICRyZXR1cm5pZCwgJycsIAoJJHRoaXMtPlBhcmFtc0ZvckxpbmsoJHBhcmFtcywgYXJyYXkoJ3BhZ2UnID0+ICRwYWdlIC0gMSkpCgksICcnLCB0cnVlLCB0cnVlKSA6IGZhbHNlOwoJJHBhZ2VyWyduZXh0X3BhZ2UnXSA9ICgkcGFnZSA8ICR0b3RhbHBhZ2VzKSA/ICR0aGlzLT5jcmVhdGVMaW5rKCRpZCwnZGVmYXVsdCcsICRyZXR1cm5pZCwgJycsIAoJJHRoaXMtPlBhcmFtc0ZvckxpbmsoJHBhcmFtcywgYXJyYXkoJ3BhZ2UnID0+ICRwYWdlICsgMSkpCgksICcnLCB0cnVlLCB0cnVlKSA6IGZhbHNlOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdwYWdlcicsICRwYWdlcik7Cn0KCiRkZXRhaWxwYWdlID0gJHJldHVybmlkOwppZiAoaXNzZXQoJHBhcmFtc1snZGV0YWlscGFnZSddKSkgewogICAgJG1hbmFnZXIgPSAkZ0Ntcy0+R2V0SGllcmFyY2h5TWFuYWdlcigpOwogICAgJG5vZGUgPSAkbWFuYWdlci0+c3VyZUdldE5vZGVCeUFsaWFzKCRwYXJhbXNbJ2RldGFpbHBhZ2UnXSk7CiAgICBpZiAoJG5vZGUpIHsKICAgICAgICAkY29udGVudCA9ICRub2RlLT5HZXRDb250ZW50KCk7CiAgICAgICAgaWYgKCRjb250ZW50KQogICAgICAgIHsKICAgICAgICAgICAgJGRldGFpbHBhZ2UgPSAkY29udGVudC0+SWQoKTsKICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgICRub2RlID0gJG1hbmFnZXItPnN1cmVHZXROb2RlQnlJZCgkcGFyYW1zWydkZXRhaWxwYWdlJ10pOwogICAgICAgIGlmICgkbm9kZSkgewogICAgICAgICAgICAkZGV0YWlscGFnZSA9ICRwYXJhbXNbJ2RldGFpbHBhZ2UnXTsKICAgICAgICB9CiAgICB9CiAgICAkcGFyYW1zWydvcmlnaWQnXSA9ICRyZXR1cm5pZDsKfQoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdkZXRhaWxwYWdlJywkZGV0YWlscGFnZSk7CgovLyBNWCBQcmVsb2FkaW5nCiRpZHMgPSBhcnJheSgpOwpmb3JlYWNoICgkaXRlbXMgYXMgJGl0ZW0pCnsKCSRpZHNbXSA9ICRpdGVtLT5nZXRJZCgpOwp9Ck1YX1h0ZW5kZWRNb2R1bGU6OnByZWxvYWRSZWxhdGVkSXRlbXMoJHRoaXMtPmdldE5hbWUoKSwgJGlkcyk7CgokbmV3cGFyYW1zID0gJHBhcmFtczsKdW5zZXQoJG5ld3BhcmFtc1snc2hvd3RlbXBsYXRlJ10pOwp1bnNldCgkbmV3cGFyYW1zWydkZXRhaWxwYWdlJ10pOwp1bnNldCgkbmV3cGFyYW1zWyd0ZW1wbGF0ZSddKTsKCmZvcmVhY2ggKCRpdGVtcyBhcyAmJGl0ZW0pIHsKCSRuZXdwYXJhbXNbJ2l0ZW1faWQnXSA9ICRpdGVtLT5nZXRJZCgpOwoJJG5ld3BhcmFtc1sndGl0bGUnXSA9ICRpdGVtLT5nZXRDb3JlU2x1ZygpOwoJJGl0ZW0tPmRldGFpbF9saW5rID0gJHRoaXMtPmNyZWF0ZUxpbmsoJGlkLCAnZGV0YWlsJywgJGRldGFpbHBhZ2UsICRjb250ZW50cz0nJywgJG5ld3BhcmFtcywgJycsIHRydWUpOwoJJHh0ZW5kZWRfZmVsaXN0ID0gTVhfWHRlbmRlZE1vZHVsZTo6Z2V0UmVsYXRlZEl0ZW1zKCR0aGlzLT5nZXROYW1lKCksICRpdGVtLT5nZXRJZCgpKTsKCSRpdGVtLT54dGVuZGVkX2ZlbGlzdCA9ICR4dGVuZGVkX2ZlbGlzdDsKfQp1bnNldCgkaXRlbSk7CgppZiAoaXNzZXQoJHBhcmFtc1snY2FsZW5kYXInXSkpCnsKICAgJGNhbGVuZGFyLT5wcm9jZXNzRXZlbnRzKCRpdGVtcyk7CiAgICRjYWxlbmRhci0+cHJvY2Vzc0NhbGVuZGFyKCk7CgogICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2NhbGVuZGFyJywgJGNhbGVuZGFyLT5jYWxlbmRhcl90YWJsZSk7CiAgICR0aGlzLT5zbWFydHktPmFzc2lnbignY3VycmVudF9tb250aCcsICRjYWxlbmRhcl90aW1lKTsKICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCduZXh0X21vbnRoJywgJHRoaXMtPmNyZWF0ZUxpbmsoJGlkLCdkZWZhdWx0JywgJGRldGFpbHBhZ2UsICRjb250ZW50cz0nJywgYXJyYXlfbWVyZ2UoJHBhcmFtcywgYXJyYXkoJ2NhbF90aW1lJyA9PiBzdHJ0b3RpbWUoJysgMSBNT05USCcsJGNhbGVuZGFyX3RpbWUpKSksICcnLCB0cnVlLCB0cnVlKSk7CiAgICR0aGlzLT5zbWFydHktPmFzc2lnbigncHJldmlvdXNfbW9udGgnLCAkdGhpcy0+Y3JlYXRlTGluaygkaWQsICdkZWZhdWx0JywgJGRldGFpbHBhZ2UsICRjb250ZW50cz0nJywgYXJyYXlfbWVyZ2UoJHBhcmFtcywgICBhcnJheSgnY2FsX3RpbWUnID0+IHN0cnRvdGltZSgnLSAxIE1PTlRIJywgJGNhbGVuZGFyX3RpbWUpKSksICcnLCB0cnVlLCB0cnVlKSk7Cn0KCmlmIChpc3NldCgkcGFyYW1zWyd2YXInXSkpIHsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigkcGFyYW1zWyd2YXInXSwgJGl0ZW1zKTsKfSBlbHNlIHsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbXMnLCAkaXRlbXMpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19JywgJGl0ZW1zKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigne3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl8bG93ZXJ9fScsICRpdGVtcyk7CiAgICAkcGFyYW1zb2JqID0gbmV3IHN0ZENsYXNzKCk7CiAgICAkcGFyYW1zb2JqLT5wYXJhbXMgPSAkcGFyYW1zOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtY2ZhY3RvcnknLCAkcGFyYW1zb2JqKTsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm1fc3RhcnQnLCAkdGhpcy0+Q3JlYXRlRm9ybVN0YXJ0KCRpZCwgJ2RlZmF1bHQnLCAkZGV0YWlscGFnZSwgJ3Bvc3QnKSk7CgkKCQkkaW5wdXRzX2hpZGRlbiA9ICcnOwoJCSRuZXdwYXJhbXMgPSAkcGFyYW1zOwoJCXVuc2V0KCRuZXdwYXJhbXNbJ21vZHVsZSddKTsKCQl1bnNldCgkbmV3cGFyYW1zWydhY3Rpb24nXSk7CgkJdW5zZXQoJG5ld3BhcmFtc1sncGFnZSddKTsKCQl1bnNldCgkbmV3cGFyYW1zWydyZXR1cm5pZCddKTsKCQlmb3JlYWNoKCRuZXdwYXJhbXMgYXMgJGtleSA9PiAkdmFsdWUpCgkJewoJCQkkaW5wdXRzX2hpZGRlbiAuPSAkdGhpcy0+Q3JlYXRlSW5wdXRIaWRkZW4oJGlkLCRrZXksJHZhbHVlKTsKCQl9CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dHNfaGlkZGVuJywgJGlucHV0c19oaWRkZW4pOwoJCgkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRm9yKCdkZWZhdWx0JywgJHBhcmFtcyk7CgkKCXJldHVybjsKe3sqCiAgICAvLyBpZiAoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkgJiYgJHRoaXMtPkdldFRlbXBsYXRlKCRwYXJhbXNbJ3RlbXBsYXRlJ10pKSB7CiAgICAvLyAJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCRwYXJhbXNbJ3RlbXBsYXRlJ10pOwogICAgLy8gfSBlbHNlIHsKICAgIC8vIAllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJ2Rpc3BsYXlfbGlzdCcpOwogICAgLy8gfQoqfX0KfQoKPz4K]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.defaultadmin.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYgKCEkdGhpcy0+Q2hlY2tBY2Nlc3MoJ01hbmFnZSB7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19JykpIHsKCXJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKfQoKJHRhYnMgPSBhcnJheSgKLy8JJ2l0ZW1zJyA9PiBmYWxzZSwKLy8JJ3RlbXBsYXRlcycgPT4gZmFsc2UsCi8vCSdvcHRpb25zJyA9PiBmYWxzZSwKLy8JJ2hlbHAnID0+IGZhbHNlCik7CgoKJHRhYnNbJ2l0ZW1zJ10gPSBmYWxzZTsKaWYgKCR0aGlzLT5DaGVja0FjY2VzcygnQWRtaW4ge3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fScpKSB7CQoJJHRhYnNbJ3RlbXBsYXRlcyddID0gZmFsc2U7CgkkdGFic1snb3B0aW9ucyddID0gZmFsc2U7Cn0gCiR0YWJzWydoZWxwJ10gPSBmYWxzZTsgCgppZiAoaXNzZXQoJHBhcmFtc1snYWN0aXZlX3RhYiddKSkgewoJJHRhYnNbJHBhcmFtc1snYWN0aXZlX3RhYiddXSA9IHRydWU7Cn0KCmVjaG8gJHRoaXMtPlN0YXJ0VGFiSGVhZGVycygpOwpmb3JlYWNoICgkdGFicyBhcyAkdGFiID0+ICRzZWxlY3RlZCkgewoJZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCR0YWIsICR0aGlzLT5MYW5nKCd0YWJfJyAuICR0YWIpLCAkc2VsZWN0ZWQpOwp9CmVjaG8gJHRoaXMtPkVuZFRhYkhlYWRlcnMoKTsKCmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOwpmb3JlYWNoICgkdGFicyBhcyAkdGFiID0+ICRzZWxlY3RlZCkgewoJZWNobyAkdGhpcy0+U3RhcnRUYWIoJHRhYik7CglpbmNsdWRlICdmdW5jdGlvbi5kZWZhdWx0YWRtaW4uJy4kdGFiLicucGhwJzsKCWVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CmVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.delete.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYgKCEkdGhpcy0+Q2hlY2tBY2Nlc3MoJ01hbmFnZSBNQyBGYWN0b3J5JykpIHsKCXJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKfQoKJHZpZXcgPSBuZXcgTUNGTGlzdFZpZXcoJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nLCAkcGFyYW1zKTsKCmlmIChpc3NldCgkcGFyYW1zWydpdGVtX2lkJ10pICYmICFlbXB0eSgkcGFyYW1zWydpdGVtX2lkJ10pKSB7CgkkaXRlbSA9IHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX1PYmplY3Q6OmdldEJ5SWQoJHBhcmFtc1snaXRlbV9pZCddKTsKCSRvcmRlciA9ICRpdGVtLT5nZXRPcmRlckJ5KCk7CgkkaXRlbS0+ZGVsZXRlKCk7CglpZiAoJG9yZGVyKSB7CgkJJGRiID0gJGdDbXMtPkdldERiKCk7CgkJJHF1ZXJ5ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3t7JHRhYmxlX25hbWV9fSBTRVQgb3JkZXJfYnkgPSAgb3JkZXJfYnkgLSAxIFdIRVJFIG9yZGVyX2J5ID4gPyc7CgkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG9yZGVyKSk7Cgl9Cn0KCnt7aWYgJHBhcmVudF9tb2R1bGV9fQokcGFyZW50ID0gbmV3IHt7JHBhcmVudF9tb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19KCk7CiRwYXJlbnQtPlJlZGlyZWN0KCRpZCwgJ2VkaXQnLCAkcmV0dXJuaWQsIGFycmF5KCd2aWV3JyA9PiAkdmlldy0+Z2V0VmlldygpLCAnaXRlbV9pZCcgPT4gJGl0ZW0tPmdldFBhcmVudEl0ZW0oKSkpOwp7e2Vsc2V9fQokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgndmlldycgPT4gJHZpZXctPmdldFZpZXcoKSkpOwp7ey9pZn19CmV4aXQ7Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.deletetemplate.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYgKCEkdGhpcy0+Q2hlY2tBY2Nlc3MoJ01hbmFnZSBNQyBGYWN0b3J5JykpIHsKCXJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKfQoKJHZpZXcgPSBuZXcgTUNGTGlzdFZpZXcoJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nLCAkcGFyYW1zKTsKCmlmIChpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZSddKSAmJiAhZW1wdHkoJHBhcmFtc1sndGVtcGxhdGUnXSkpIHsKICAgICR0aGlzLT5EZWxldGVUZW1wbGF0ZSgkcGFyYW1zWyd0ZW1wbGF0ZSddKTsKfQoKJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ3ZpZXcnID0+ICR2aWV3LT5nZXRWaWV3KCkpKTsKZXhpdDsKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.detail.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKJGMgPSBuZXcgTUNGQ3JpdGVyaWEoKTsKJGMtPmFkZCgnaWQnLCAkcGFyYW1zWydpdGVtX2lkJ10pOwoKJHB1Ymxpc2hpbmdfY2hlY2tzID0gdHJ1ZTsKaWYoaXNzZXQoJHBhcmFtc1snc2hvd191c2VyX2l0ZW1zJ10pICYmIGlzX29iamVjdCgkZ0Ntcy0+bW9kdWxlc1snQ01TVXNlcnMnXVsnb2JqZWN0J10pKQp7CgkkdXNlciA9IENNU1VzZXJzOjpnZXRVc2VyT3JMb2dpbigpOwoJaWYgKGlzX29iamVjdCgkdXNlcikpCgl7CgkJJGMtPmFkZCgndXNlcl9pZCcsICR1c2VyLT5nZXRJZCgpKTsKCQkkcHVibGlzaGluZ19jaGVja3MgPSBmYWxzZTsKCX0KCn0KaWYgKCRwdWJsaXNoaW5nX2NoZWNrcyAmJiAoIShpc3NldCgkcGFyYW1zWydwcmV2aWV3X2tleSddKSAmJiAkX1NFU1NJT05bJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nXVsncHJldmlld19rZXknXSA9PSAkcGFyYW1zWydwcmV2aWV3X2tleSddKSkpCnsKCSRjLT5hZGQoJ3B1Ymxpc2hlZCcsICcxJyk7CQoJe3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fU9iamVjdDo6Z2xvYmFsRnJvbnRlbmRGaWx0ZXJzKCRjKTsKfQoKCgokaXRlbSA9IHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX1PYmplY3Q6OmRvU2VsZWN0T25lKCRjKTsKCiRtb2R1bGV4dGVuZGVyID0gJGdDbXMtPm1vZHVsZXNbJ01vZHVsZVh0ZW5kZXInXVsnb2JqZWN0J107CgppZiAoaXNfb2JqZWN0KCRpdGVtKSAmJiAkbW9kdWxleHRlbmRlci0+aXNYdGVuZGVkTW9kdWxlKCR0aGlzLT5nZXROYW1lKCkpKQp7CgkvKiBBdHRhY2hlZCBsaXN0cyAqLwogICAgJHh0ZW5kZWRfZmVsaXN0ID0gJG1vZHVsZXh0ZW5kZXItPkdldFh0ZW5kZWRGcm9udGVuZExpc3QoJHRoaXMtPmdldE5hbWUoKSwgJGl0ZW0tPmdldElkKCksdHJ1ZSwgYXJyYXkoKSk7CgkkaXRlbS0+eHRlbmRlZF9mZWxpc3QgPSAkeHRlbmRlZF9mZWxpc3Q7CgkvLyBkZXByZWNhdGVkCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3h0ZW5kZWRfZmVsaXN0JywgJHh0ZW5kZWRfZmVsaXN0KTsKCQp9CgppZiAoaXNzZXQoJHBhcmFtc1sndmFyJ10pKSB7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJHBhcmFtc1sndmFyJ10sICRpdGVtKTsKfSBlbHNlIHsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbScsICRpdGVtKTsKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbigne3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fScsICRpdGVtKTsKICAgICRwYXJhbXNvYmogPSBuZXcgc3RkQ2xhc3MoKTsKICAgICRwYXJhbXNvYmotPnBhcmFtcyA9ICRwYXJhbXM7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21jZmFjdG9yeScsICRwYXJhbXNvYmopOwoKCQlpZiAoaXNzZXQoJHBhcmFtc1snZGV0YWlsdGVtcGxhdGUnXSkpICRwYXJhbXNbJ3RlbXBsYXRlJ10gPSAkcGFyYW1zWydkZXRhaWx0ZW1wbGF0ZSddOwoKCQllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGb3IoJ2RldGFpbCcsICRwYXJhbXMpOwoJCXJldHVybjsKe3sqCiAgICAvLyBpZiAoaXNzZXQoJHBhcmFtc1snZGV0YWlsdGVtcGxhdGUnXSkgJiYgJHRoaXMtPkdldFRlbXBsYXRlKCRwYXJhbXNbJ2RldGFpbHRlbXBsYXRlJ10pKSB7CiAgICAvLyAJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCRwYXJhbXNbJ2RldGFpbHRlbXBsYXRlJ10pOwogICAgLy8gfSBlbHNlIHsKICAgIC8vIAllY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJ2Rpc3BsYXlfZGV0YWlscycpOwogICAgLy8gfQoqfX0KfQoKPz4K]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.download.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKJGMgPSBuZXcgTUNGQ3JpdGVyaWEoKTsKJGMtPmFkZCgnaWQnLCAkcGFyYW1zWydpdGVtX2lkJ10pOwoKJHB1Ymxpc2hpbmdfY2hlY2tzID0gdHJ1ZTsKaWYoaXNzZXQoJHBhcmFtc1snc2hvd191c2VyX2l0ZW1zJ10pICYmIGlzX29iamVjdCgkZ0Ntcy0+bW9kdWxlc1snQ01TVXNlcnMnXVsnb2JqZWN0J10pKQp7CgkkdXNlciA9IENNU1VzZXJzOjpnZXRVc2VyT3JMb2dpbigpOwoJaWYgKGlzX29iamVjdCgkdXNlcikpCgl7CgkJJGMtPmFkZCgndXNlcl9pZCcsICR1c2VyLT5nZXRJZCgpKTsKCQkkcHVibGlzaGluZ19jaGVja3MgPSBmYWxzZTsKCX0KCn0KaWYgKCRwdWJsaXNoaW5nX2NoZWNrcyAmJiAoIShpc3NldCgkcGFyYW1zWydwcmV2aWV3X2tleSddKSAmJiAkX1NFU1NJT05bJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nXVsncHJldmlld19rZXknXSA9PSAkcGFyYW1zWydwcmV2aWV3X2tleSddKSkpCnsKCSRjLT5hZGQoJ3B1Ymxpc2hlZCcsICcxJyk7CQoJe3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fU9iamVjdDo6Z2xvYmFsRnJvbnRlbmRGaWx0ZXJzKCRjKTsKfQokaXRlbSA9IHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX1PYmplY3Q6OmRvU2VsZWN0T25lKCRjKTsKaWYoaXNfb2JqZWN0KCRpdGVtKSkgZWNobyAkaXRlbS0+ZG93bmxvYWRGaWxlKCRwYXJhbXNbJ2ZpZWxkJ10pOw==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.edit.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYgKCEkdGhpcy0+Q2hlY2tBY2Nlc3MoJ01hbmFnZSB7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19JykpIHsKCXJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKfQoKJHZpZXcgPSBuZXcgTUNGTGlzdFZpZXcoJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nLCAkcGFyYW1zKTsKCiRtb2R1bGV4dGVuZGVyID0gJGdDbXMtPm1vZHVsZXNbJ01vZHVsZVh0ZW5kZXInXVsnb2JqZWN0J107CgppZiAoaXNzZXQoJHBhcmFtc1snaXRlbV9pZCddKSAmJiAhZW1wdHkoJHBhcmFtc1snaXRlbV9pZCddKSkgewoJJGl0ZW0gPSB7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19T2JqZWN0OjpnZXRCeUlkKCRwYXJhbXNbJ2l0ZW1faWQnXSk7Cn0gZWxzZSB7CgkkaXRlbSA9IG5ldyB7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19T2JqZWN0KCk7CgkkaXRlbS0+c2V0UGFyZW50SXRlbShpc3NldCgkcGFyYW1zWydwYXJlbnRfaXRlbSddKSA/ICRwYXJhbXNbJ3BhcmVudF9pdGVtJ10gOiAwKTsKfQoKaWYgKGlzc2V0KCRwYXJhbXNbJ2NhbmNlbCddKSkgewoJe3tpZiAkcGFyZW50X21vZHVsZX19CgkkcGFyZW50ID0gbmV3IHt7JHBhcmVudF9tb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19KCk7CgkkcGFyZW50LT5SZWRpcmVjdCgkaWQsICdlZGl0JywgJHJldHVybmlkLCBhcnJheSgndmlldycgPT4gJHZpZXctPmdldFZpZXcoKSwgJ2l0ZW1faWQnID0+ICRpdGVtLT5nZXRQYXJlbnRJdGVtKCkpKTsKCXt7ZWxzZX19CgkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgndmlldycgPT4gJHZpZXctPmdldFZpZXcoKSkpOwoJe3svaWZ9fQoJZXhpdDsKfQoKJGZvcm0gPSBuZXcgQ01TRm9ybSgne3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fScsICRpZCwnZWRpdCcsJHJldHVybmlkKTsKJGZvcm0tPnNldEJ1dHRvbnMoYXJyYXkoJ3N1Ym1pdCcsJ2FwcGx5JywnY2FuY2VsJykpOwokZm9ybS0+c2V0TXVsdGlwYXJ0Rm9ybSgpOwokZm9ybS0+c2V0TGFiZWwoJ3N1Ym1pdCcsICR0aGlzLT5MYW5nKCdzYXZlJykpOwokZm9ybS0+c2V0TGFiZWwoJ2FwcGx5JywgJHRoaXMtPkxhbmcoJ3NhdmVfY29udGludWUnKSk7CiRmb3JtLT5zZXRMYWJlbCgnY2FuY2VsJywgJHRoaXMtPkxhbmcoJ2NhbmNlbCcpKTsKCiRmb3JtLT5zZXRXaWRnZXQoJ3ZpZXcnLCdoaWRkZW4nLCAkdmlldy0+Z2V0VmlldygpKTsKJGZvcm0tPnNldFdpZGdldCgnaXRlbV9pZCcsICdoaWRkZW4nLCBhcnJheSgnb2JqZWN0JyA9PiAmJGl0ZW0sICdmaWVsZF9uYW1lJyA9PiAnaWQnKSk7CiRmb3JtLT5zZXRXaWRnZXQoJ3BhcmVudF9pdGVtJywgJ2hpZGRlbicsIGFycmF5KCdvYmplY3QnID0+ICYkaXRlbSkpOwokZm9ybS0+c2V0V2lkZ2V0KCd0aXRsZScsICd0ZXh0JywgYXJyYXkoJ2xhYmVsJyA9PiAnVGl0bGUnLCdvYmplY3QnID0+ICYkaXRlbSwgJ3NpemUnID0+IDUwKSk7CgppZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ3Nob3dfcGFyZW50JywgJzAnKSA9PSAxKQp7CgkkZm9ybS0+c2V0V2lkZ2V0KCdwYXJlbnRfaWQnLCAnc2VsZWN0JywgYXJyYXkoCgkJJ29iamVjdCcgPT4gJiRpdGVtLCAKCQkndmFsdWVzJyA9PiBhcnJheV9tZXJnZShhcnJheSgwID0+ICcnKSwgJGl0ZW0tPmdldFBvc3NpYmxlUGFyZW50c0hpZXJhcmNoeSgpKQoJCSkpOwp9Ci8vIEN1c3RvbSBwYXJ0CiRjb25maWcgPSYgJHRoaXMtPmdldENvbmZpZygpOwoKCnt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX1WaWV3czo6Y3JlYXRlRm9ybSgkdGhpcywmJGZvcm0sJiRpdGVtKTsKCnt7Zm9yZWFjaCBmcm9tPSRleHRyYV9maWVsZHMgaXRlbT1maWVsZH19Cnt7KgoJLy8gTUFTVEVSICEgVE8gUkVQTElDQVRFIFRPIFVTRVIgRk9STSBJRiBBTlkgQ0hBTkdFICEhIChZZWFoIEkga25vdywgYmFkIGJlaGF2aW9yLi4uKQoJLy8gUkVQTEFURUQgQlkgQ0FMTCAiY3JlYXRlRm9ybSIKKn19Cnt7Kgp7e2lmICRmaWVsZC5mb3JtX3R5cGUgPT0gJ3NlbGVjdCd9fQokZm9ybS0+c2V0V2lkZ2V0KCd7eyRmaWVsZC5uYW1lfX0nLCAnc2VsZWN0JywgYXJyYXkoCgl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy5tdWx0aXBsZSkgfHwgaXNzZXQoJGZpZWxkLmZvcHRpb25zLmV4cGFuZGVkKX19CgkndmFsdWVzJyA9PiB7eyRmaWVsZC5zZWxlY3Rfb3B0aW9uc319LAoJe3tlbHNlfX0KCSd2YWx1ZXMnID0+IGFycmF5KCcnID0+ICcmbGFxdW87ICcgLiAkdGhpcy0+bGFuZygnc2VsZWN0X29uZScpIC4gJyAmcmFxdW87JykgKyB7eyRmaWVsZC5zZWxlY3Rfb3B0aW9uc319LAoJe3svaWZ9fSAKCSdsYWJlbCcgPT4gJ3t7JGZpZWxkLmxhYmVsfX0nLCAKCSdnZXRfbWV0aG9kJyA9PiAnZ2V0e3skZmllbGQuY2FtZWxjYXNlfX0nLCAKCSdvYmplY3QnID0+ICYkaXRlbQoJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMubXVsdGlwbGUpfX0sICdtdWx0aXBsZScgPT4gdHJ1ZXt7L2lmfX0KCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLnNpemUpfX0sICdzaXplJyA9PiB7eyRmaWVsZC5mb3B0aW9ucy5zaXplfX17ey9pZn19Cgl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy5leHBhbmRlZCl9fSwgJ2V4cGFuZGVkJyA9PiB0cnVle3svaWZ9fQoJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMudGlwcyl9fSwgJ3RpcHMnID0+ICd7eyRmaWVsZC5mb3B0aW9ucy50aXBzfX0ne3svaWZ9fQopKTsKe3tlbHNlaWYgJGZpZWxkLmZvcm1fdHlwZSA9PSAndGV4dGFyZWEnfX0KJGZvcm0tPnNldFdpZGdldCgne3skZmllbGQubmFtZX19JywgJ3RleHRhcmVhJywgYXJyYXkoCgknbGFiZWwnID0+ICd7eyRmaWVsZC5sYWJlbH19JywgCgknb2JqZWN0JyA9PiAmJGl0ZW0sCgknc2hvd193eXNpd3lnJyA9PiB0cnVlCgl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy50aXBzKX19LCAndGlwcycgPT4gJ3t7JGZpZWxkLmZvcHRpb25zLnRpcHN9fSd7ey9pZn19CgkpKTsKe3tlbHNlaWYgJGZpZWxkLmZvcm1fdHlwZSA9PSAndGV4dGFyZWFfcGxhaW4nfX0KJGZvcm0tPnNldFdpZGdldCgne3skZmllbGQubmFtZX19JywgJ3RleHRhcmVhJywgYXJyYXkoCgknbGFiZWwnID0+ICd7eyRmaWVsZC5sYWJlbH19JywgCgknb2JqZWN0JyA9PiAmJGl0ZW0KCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLnRpcHMpfX0sICd0aXBzJyA9PiAne3skZmllbGQuZm9wdGlvbnMudGlwc319J3t7L2lmfX0KCSkpOwp7e2Vsc2VpZiAkZmllbGQuZm9ybV90eXBlID09ICdmaWxlJ319CiRmb3JtLT5zZXRXaWRnZXQoJ3t7JGZpZWxkLm5hbWV9fScsICdmaWxlJywgYXJyYXkoCgknbGFiZWwnID0+ICd7eyRmaWVsZC5sYWJlbH19JywgCgknb2JqZWN0JyA9PiAmJGl0ZW0sCgknYmFzZV91cmwnID0+ICRjb25maWdbJ3Jvb3RfdXJsJ10sCgknZGVsZXRlX2NoZWNrYm94JyA9PiAne3skZmllbGQubmFtZX19X2RlbGV0ZScKCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLnRpcHMpfX0sICd0aXBzJyA9PiAne3skZmllbGQuZm9wdGlvbnMudGlwc319J3t7L2lmfX0KKSk7Cnt7ZWxzZWlmICRmaWVsZC50eXBlID09ICdkYXRlJ319CiRmb3JtLT5zZXRXaWRnZXQoJ3t7JGZpZWxkLm5hbWV9fScsICdkYXRlJywgYXJyYXkoCgknbGFiZWwnID0+ICd7eyRmaWVsZC5sYWJlbH19JywgCgknb2JqZWN0JyA9PiAmJGl0ZW0sICdldXJvcGVhbl9kYXRlJyA9PiB0cnVlLCAKCSdzZXRfbWV0aG9kJyA9PiAnc2V0e3skZmllbGQuY2FtZWxjYXNlfX0nLAoJJ2RlZmF1bHRfdmFsdWUnID0+IGFycmF5KGRhdGUoJ1knKSxkYXRlKCdtJyksZGF0ZSgnZCcpKSwKCXt7aWYgaXNzZXQoJGZpZWxkLmRhdGVfb3B0aW9ucy5zdGFydF95ZWFyKX19ICdzdGFydF95ZWFyJyA9PiB7eyRmaWVsZC5kYXRlX29wdGlvbnMuc3RhcnRfeWVhcn19LHt7L2lmfX0KCXt7aWYgaXNzZXQoJGZpZWxkLmRhdGVfb3B0aW9ucy5udW1iZXJfeWVhcnMpfX0gJ251bWJlcl95ZWFycycgPT4ge3skZmllbGQuZGF0ZV9vcHRpb25zLm51bWJlcl95ZWFyc319LHt7L2lmfX0KCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLnRpcHMpfX0sICd0aXBzJyA9PiAne3skZmllbGQuZm9wdGlvbnMudGlwc319J3t7L2lmfX0KKSk7Cnt7ZWxzZWlmICRmaWVsZC50eXBlID09ICd0aW1lJ319CiRmb3JtLT5zZXRXaWRnZXQoJ3t7JGZpZWxkLm5hbWV9fScsICd0aW1lJywgYXJyYXkoCgknbGFiZWwnID0+ICd7eyRmaWVsZC5sYWJlbH19JywgCgknb2JqZWN0JyA9PiAmJGl0ZW0sCgknc2V0X21ldGhvZCcgPT4gJ3NldHt7JGZpZWxkLmNhbWVsY2FzZX19JywKCSdkZWZhdWx0X3ZhbHVlJyA9PiBhcnJheShkYXRlKCdIJyksZGF0ZSgnaScpLGRhdGUoJ3MnKSksCgl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy50aXBzKX19LCAndGlwcycgPT4gJ3t7JGZpZWxkLmZvcHRpb25zLnRpcHN9fSd7ey9pZn19CikpOwp7e2Vsc2VpZiAkZmllbGQuZm9ybV90eXBlID09ICdtb2R1bGUnfX0KaWYgKGNsYXNzX2V4aXN0cygne3skZmllbGQuZm9wdGlvbnMubW9kdWxlX25hbWV9fU9iamVjdCcpKQp7CQoJJGMgPSBuZXcgTUNGQ3JpdGVyaWEoKTsKCSRjLT5hZGQoJ3B1Ymxpc2hlZCcsIDEpOwoJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMuc2VsZWN0b3IpfX0KCSRtb2RfaXRlbXMgPSB7eyRmaWVsZC5mb3B0aW9ucy5tb2R1bGVfbmFtZX19T2JqZWN0Ojp7eyRmaWVsZC5mb3B0aW9ucy5zZWxlY3Rvcn19KCRjKTsKCXt7ZWxzZX19CgkkbW9kX2l0ZW1zID0ge3skZmllbGQuZm9wdGlvbnMubW9kdWxlX25hbWV9fU9iamVjdDo6ZG9TZWxlY3QoJGMpOwoJe3svaWZ9fQoJJGxpc3QgPSBhcnJheSgpOwokZm9ybS0+c2V0V2lkZ2V0KCd7eyRmaWVsZC5uYW1lfX0nLCAnc2VsZWN0JywgYXJyYXkoCgl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy5tdWx0aXBsZSkgfHwgaXNzZXQoJGZpZWxkLmZvcHRpb25zLmV4cGFuZGVkKX19CgkndmFsdWVzJyA9PgkkbW9kX2l0ZW1zLCAKCXt7ZWxzZX19CgkndmFsdWVzJyA9PglhcnJheSgnJyA9PiAnJmxhcXVvOyAnIC4gJHRoaXMtPmxhbmcoJ3NlbGVjdF9vbmUnKSAuICcgJnJhcXVvOycpICsgJG1vZF9pdGVtcywgCgl7ey9pZn19CgknbGFiZWwnID0+ICd7eyRmaWVsZC5sYWJlbH19JywgCgknZ2V0X21ldGhvZCcgPT4gJ2dldHt7JGZpZWxkLmNhbWVsY2FzZX19JywgCgknb2JqZWN0JyA9PiAmJGl0ZW0Ke3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMubXVsdGlwbGUpfX0sICdtdWx0aXBsZScgPT4gdHJ1ZXt7L2lmfX0Ke3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMuc2l6ZSl9fSwgJ3NpemUnID0+IHt7JGZpZWxkLmZvcHRpb25zLnNpemV9fXt7L2lmfX0Ke3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMuZXhwYW5kZWQpfX0sICdleHBhbmRlZCcgPT4gdHJ1ZXt7L2lmfX0Ke3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMudGlwcyl9fSwgJ3RpcHMnID0+ICd7eyRmaWVsZC5mb3B0aW9ucy50aXBzfX0ne3svaWZ9fQopKTsKfQp7e2Vsc2VpZiAkZmllbGQuZm9ybV90eXBlID09ICdwYWdlJ319CiRmb3JtLT5zZXRXaWRnZXQoJ3t7JGZpZWxkLm5hbWV9fScsICdwYWdlcycsIGFycmF5KAoJJ2xhYmVsJyA9PiAne3skZmllbGQubGFiZWx9fScgCgksJ29iamVjdCcgPT4gJiRpdGVtCgl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy5zdGFydF9wYWdlKX19LCAnc3RhcnRfcGFnZScgPT4gJ3t7JGZpZWxkLmZvcHRpb25zLnN0YXJ0X3BhZ2V9fSd7ey9pZn19Cgl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy5jaGlsZHJlbm9mKX19LCAnY2hpbGRyZW5vZicgPT4gJ3t7JGZpZWxkLmZvcHRpb25zLmNoaWxkcmVub2Z9fSd7ey9pZn19Cgl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy50aXBzKX19LCAndGlwcycgPT4gJ3t7JGZpZWxkLmZvcHRpb25zLnRpcHN9fSd7ey9pZn19CgkpKTsKe3tlbHNlaWYgJGZpZWxkLmZvcm1fdHlwZSA9PSAnc3RhdGljJ319CiRmb3JtLT5zZXRXaWRnZXQoJ3t7JGZpZWxkLm5hbWV9fScsICdzdGF0aWMnLCBhcnJheSgKCSdsYWJlbCcgPT4gJ3t7JGZpZWxkLmxhYmVsfX0nLCAKCSdvYmplY3QnID0+ICYkaXRlbQoJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMudGlwcyl9fSwgJ3RpcHMnID0+ICd7eyRmaWVsZC5mb3B0aW9ucy50aXBzfX0ne3svaWZ9fQoJKSk7Cnt7ZWxzZWlmICRmaWVsZC5mb3JtX3R5cGUgPT0gJ25vbmUnfX0Ke3tlbHNlaWYgJGZpZWxkLmZvcm1fdHlwZSA9PSAndXNlcid9fQoke3skZmllbGQubmFtZX19X2xpc3QgPSBDTVNVc2VyOjpnZXRVc2VyTGlzdCgpOwokZm9ybS0+c2V0V2lkZ2V0KCd7eyRmaWVsZC5uYW1lfX0nLCAnc2VsZWN0JywgYXJyYXkoCgl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy5tdWx0aXBsZSkgfHwgaXNzZXQoJGZpZWxkLmZvcHRpb25zLmV4cGFuZGVkKX19CgkndmFsdWVzJyA9PiB7eyRmaWVsZC5zZWxlY3Rfb3B0aW9uc319LAoJe3tlbHNlfX0KCSd2YWx1ZXMnID0+IGFycmF5KCcnID0+ICcmbGFxdW87ICcgLiAkdGhpcy0+bGFuZygnc2VsZWN0X29uZScpIC4gJyAmcmFxdW87JykgKyAke3skZmllbGQubmFtZX19X2xpc3QsCgl7ey9pZn19IAoJJ2xhYmVsJyA9PiAne3skZmllbGQubGFiZWx9fScsIAovLwknZ2V0X21ldGhvZCcgPT4gJ2dldHt7JGZpZWxkLmNhbWVsY2FzZX19JywgCgknb2JqZWN0JyA9PiAmJGl0ZW0KCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLm11bHRpcGxlKX19LCAnbXVsdGlwbGUnID0+IHRydWV7ey9pZn19Cgl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy5zaXplKX19LCAnc2l6ZScgPT4ge3skZmllbGQuZm9wdGlvbnMuc2l6ZX19e3svaWZ9fQoJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMuZXhwYW5kZWQpfX0sICdleHBhbmRlZCcgPT4gdHJ1ZXt7L2lmfX0KCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLnRpcHMpfX0sICd0aXBzJyA9PiAne3skZmllbGQuZm9wdGlvbnMudGlwc319J3t7L2lmfX0KKSk7Cnt7ZWxzZWlmICRmaWVsZC5mb3JtX3R5cGUgPT0gJ2dyb3VwJ319CiR7eyRmaWVsZC5uYW1lfX1fbGlzdCA9IENNU0dyb3VwOjpnZXRHcm91cExpc3QoKTsKJGZvcm0tPnNldFdpZGdldCgne3skZmllbGQubmFtZX19JywgJ3NlbGVjdCcsIGFycmF5KAoJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMubXVsdGlwbGUpIHx8IGlzc2V0KCRmaWVsZC5mb3B0aW9ucy5leHBhbmRlZCl9fQoJJ3ZhbHVlcycgPT4ge3skZmllbGQuc2VsZWN0X29wdGlvbnN9fSwKCXt7ZWxzZX19CgkndmFsdWVzJyA9PiBhcnJheSgnJyA9PiAnJmxhcXVvOyAnIC4gJHRoaXMtPmxhbmcoJ3NlbGVjdF9vbmUnKSAuICcgJnJhcXVvOycpICsgJHt7JGZpZWxkLm5hbWV9fV9saXN0LAoJe3svaWZ9fSAKCSdsYWJlbCcgPT4gJ3t7JGZpZWxkLmxhYmVsfX0nLCAKLy8JJ2dldF9tZXRob2QnID0+ICdnZXR7eyRmaWVsZC5jYW1lbGNhc2V9fScsIAoJJ29iamVjdCcgPT4gJiRpdGVtCgl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy5tdWx0aXBsZSl9fSwgJ211bHRpcGxlJyA9PiB0cnVle3svaWZ9fQoJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMuc2l6ZSl9fSwgJ3NpemUnID0+IHt7JGZpZWxkLmZvcHRpb25zLnNpemV9fXt7L2lmfX0KCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLmV4cGFuZGVkKX19LCAnZXhwYW5kZWQnID0+IHRydWV7ey9pZn19Cgl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy50aXBzKX19LCAndGlwcycgPT4gJ3t7JGZpZWxkLmZvcHRpb25zLnRpcHN9fSd7ey9pZn19CikpOwp7e2Vsc2V9fQokZm9ybS0+c2V0V2lkZ2V0KCd7eyRmaWVsZC5uYW1lfX0nLCAndGV4dCcsIGFycmF5KAoJJ2xhYmVsJyA9PiAne3skZmllbGQubGFiZWx9fScsIAoJJ29iamVjdCcgPT4gJiRpdGVtLCAKCSdzaXplJyA9PiA1MAoJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMudGlwcyl9fSwgJ3RpcHMnID0+ICd7eyRmaWVsZC5mb3B0aW9ucy50aXBzfX0ne3svaWZ9fQoJKSk7Cnt7L2lmfX0KKn19Cnt7KgoJLy8gRU5EIE9GIE1BU1RFUi9TTEFWRQoqfX0Ke3svZm9yZWFjaH19CgoKCnt7aWYgaXNzZXQoJGlzX3VzZXJfbW9kdWxlKX19CmlmIChjbGFzc19leGlzdHMoJ0NNU1VzZXInKSkKewkKCSRmb3JtLT5zZXRXaWRnZXQoJ3VzZXJfaWQnLCAnc2VsZWN0JywgYXJyYXkoCgkJJ3ZhbHVlcycgPT4JYXJyYXkoJycgPT4gJyZsYXF1bzsgJyAuICR0aGlzLT5sYW5nKCdzZWxlY3Rfb25lJykgLiAnICZyYXF1bzsnKSArIENNU1VzZXI6OmdldFVzZXJMaXN0KCksICAKCQknZ2V0X21ldGhvZCcgPT4gJ2dldFVzZXJJZCcsIAoJCSdvYmplY3QnID0+ICYkaXRlbQoJKSk7Cn0Ke3svaWZ9fQoKaWYoIWlzX251bGwoJGl0ZW0tPmdldENyZWF0ZWRCeSgpKSkgJGZvcm0tPnNldFdpZGdldCgnY3JlYXRlZF9ieScsICdzdGF0aWMnLCBhcnJheSgnbGFiZWwnID0+ICdDcmVhdGVkIGJ5JywJJ3ZhbHVlJyA9PiAkZ0Ntcy0+R2V0VXNlck9wZXJhdGlvbnMoKS0+TG9hZFVzZXJCeUlEKCRpdGVtLT5nZXRDcmVhdGVkQnkoKSktPnVzZXJuYW1lIC4gJyBvbiAnIC4gJGl0ZW0tPmdldENyZWF0ZWRBdCgpKSk7CmlmKCFpc19udWxsKCRpdGVtLT5nZXRVcGRhdGVkQnkoKSkpICRmb3JtLT5zZXRXaWRnZXQoJ3VwZGF0ZWRfYnknLCAnc3RhdGljJywgYXJyYXkoJ2xhYmVsJyA9PiAnTGFzdCB1cGRhdGVkIGJ5JywJJ3ZhbHVlJyA9PiAkZ0Ntcy0+R2V0VXNlck9wZXJhdGlvbnMoKS0+TG9hZFVzZXJCeUlEKCRpdGVtLT5nZXRVcGRhdGVkQnkoKSktPnVzZXJuYW1lIC4gJyBvbiAnIC4gJGl0ZW0tPmdldFVwZGF0ZWRBdCgpKSk7CiRmb3JtLT5zZXRXaWRnZXQoJ3B1Ymxpc2hlZCcsICdjaGVja2JveCcsIGFycmF5KCdsYWJlbCcgPT4gJ1B1Ymxpc2hlZCcsICdvYmplY3QnID0+ICYkaXRlbSkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm0nLCAkZm9ybSk7CgovLyBTVUIgTU9EVUxFUyBTRUNUSU9OCiRjID0gbmV3IE1DRkNyaXRlcmlhKCk7CiRjLT5hZGQoJ3BhcmVudF9tb2R1bGUnLCB7eyRtb2R1bGUtPmdldElkKCl9fSwgTUNGQ3JpdGVyaWE6OkVRVUFMKTsKJGNoaWxkX21vZHVsZXMgPSBNQ0ZNb2R1bGU6OmRvU2VsZWN0KCRjKTsKJHN1Ym1vZHVsZXMgPSBhcnJheSgpOwpmb3JlYWNoICgkY2hpbGRfbW9kdWxlcyBhcyAkY2hpbGQpIHsKCWlmIChpc3NldCgkZ0Ntcy0+bW9kdWxlc1skY2hpbGQtPkdldE1vZHVsZU5hbWUoKV0pKQoJewoJCSRzdWJtb2R1bGVzWyRjaGlsZC0+Z2V0SWQoKV0gPSBhcnJheSgnbmFtZScgPT4gJGNoaWxkLT5HZXRNb2R1bGVGcmllbmRseU5hbWUoKSwgJ2l0ZW1zJyA9PiBhcnJheSgpKTsKCQlpZiAoISRpdGVtLT5pc05ldygpKSB7CgkJCSRjID0gbmV3IE1DRkNyaXRlcmlhKCk7CgkJCSRjLT5hZGQoJ3BhcmVudF9pdGVtJywgJGl0ZW0tPmdldElkKCkpOwoJCQkkYy0+YWRkQXNjZW5kaW5nT3JkZXJCeUNvbHVtbignb3JkZXJfYnknKTsKCQkJJGNsYXNzbmFtZSA9ICRjaGlsZC0+R2V0TW9kdWxlTmFtZSgpOwoJCQkkbW9kID0gbmV3ICRjbGFzc25hbWUoKTsKCQkJJGl0ZW1zID0gY2FsbF91c2VyX2Z1bmMoYXJyYXkoJGNoaWxkLT5HZXRNb2R1bGVOYW1lKCkgLiAnT2JqZWN0JywgJ2RvU2VsZWN0JyksICRjKTsKCQkJJHN1Ym1vZHVsZXNbJGNoaWxkLT5nZXRJZCgpXVsndGVtcGxhdGUnXSA9IGNhbGxfdXNlcl9mdW5jKGFycmF5KCRjaGlsZC0+R2V0TW9kdWxlTmFtZSgpIC4gJ1ZpZXdzJywgJ2FkbWluSXRlbXMnKSwgJGdDbXMsJG1vZCwkaWQsJHJldHVybmlkLCR2aWV3LCRpdGVtcywkaXRlbS0+Z2V0SWQoKSk7CgkJCSRzdWJtb2R1bGVzWyRjaGlsZC0+Z2V0SWQoKV1bJ2FkZF9pdGVtX2xpbmsnXSA9ICRtb2QtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdCcsICRyZXR1cm5pZCwgJG1vZC0+TGFuZygnYWRkX2l0ZW1fZm9yJywgJGNoaWxkLT5HZXRNb2R1bGVGcmllbmRseU5hbWUoKSksIGFycmF5KCdwYXJlbnRfaXRlbScgPT4gJGl0ZW0tPmdldElkKCkpKTsKCQkJJHN1Ym1vZHVsZXNbJGNoaWxkLT5nZXRJZCgpXVsnYWRkX2l0ZW1faWNvbiddID0gJG1vZC0+Q3JlYXRlTGluaygkaWQsICdlZGl0JywgJHJldHVybmlkLCAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL25ld29iamVjdC5naWYnLCAkbW9kLT5MYW5nKCdhZGRfaXRlbV9mb3InLCAkY2hpbGQtPkdldE1vZHVsZUZyaWVuZGx5TmFtZSgpKSwgJycsICcnLCAnc3lzdGVtaWNvbicpKTsKCQl9Cgl9Cn0KCiR0aGlzLT5zbWFydHktPmFzc2lnbignc3VibW9kdWxlcycsICRzdWJtb2R1bGVzKTsKCi8vIE1PRFVMRSBYVEVOREVSIFNFQ1RJT04KCmlmICgkbW9kdWxleHRlbmRlci0+aXNYdGVuZGVkTW9kdWxlKCR0aGlzLT5nZXROYW1lKCkpKSB7ICAKCSR0aGlzLT5zbWFydHktPmFzc2lnbigneHRlbmRlZF9mb3JtJywgJG1vZHVsZXh0ZW5kZXItPlh0ZW5kTW9kdWxlRm9ybSgne3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fScsICRpdGVtLT5nZXRJZCgpLCAkaWQpKTsKfSBlbHNlIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbigneHRlbmRlZF9mb3JtJywgJycpOwp9CgovLyBGT1JNIFBST0NFU1NJTkcKCmlmICgkZm9ybS0+aXNQb3N0ZWQoKSkgewoJJGZvcm0tPnByb2Nlc3MoKTsKCWlmICgkZm9ybS0+Tm9FcnJvcigpKQoJewoJCSRpdGVtLT51cGxvYWRGaWxlcygkaWQpOwoJCSRpdGVtLT5zYXZlKCk7CgkJaWYgKCRtb2R1bGV4dGVuZGVyLT5pc1h0ZW5kZWRNb2R1bGUoJHRoaXMtPmdldE5hbWUoKSkpIHsKCQkJJG1vZHVsZXh0ZW5kZXItPmdldEZvcm1JbnB1dCgkdGhpcy0+Z2V0TmFtZSgpLCAkaXRlbS0+Z2V0SWQoKSwgJHBhcmFtcyk7CgkJfQoJCSRpdGVtLT5wb3N0QWN0aW9ucygpOyAvLyBVc2UgdG8gYWxsb3cgcGVvcGxlIHRvIHR3ZWFrIHRoaW5ncy4KCQlpZiAoaXNzZXQoJHBhcmFtc1snc3VibWl0J10pKSB7CgkJCXt7aWYgJHBhcmVudF9tb2R1bGV9fQoJCQkkcGFyZW50ID0gbmV3IHt7JHBhcmVudF9tb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19KCk7CgkJCSRwYXJlbnQtPlJlZGlyZWN0KCRpZCwgJ2VkaXQnLCAkcmV0dXJuaWQsIGFycmF5KCd2aWV3JyA9PiAkdmlldy0+Z2V0VmlldygpLCAnaXRlbV9pZCcgPT4gJGl0ZW0tPmdldFBhcmVudEl0ZW0oKSkpOwoJCQl7e2Vsc2V9fQoJCQkkdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgndmlldycgPT4gJHZpZXctPmdldFZpZXcoKSkpOwoJCQl7ey9pZn19CgkJCWV4aXQ7CgkJfSBlbHNlIHsKCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2VkaXQnLCAkcmV0dXJuaWQsIGFycmF5KCd2aWV3JyA9PiAkdmlldy0+Z2V0VmlldygpLCAnaXRlbV9pZCcgPT4gJGl0ZW0tPmdldElkKCkpKTsKCQkJZXhpdDsKCQl9Cgl9Cn0KCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZWRpdC50cGwnKTsK]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.edittemplate.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZiAoISR0aGlzLT5DaGVja0FjY2VzcygnTWFuYWdlIE1DIEZhY3RvcnknKSkgewoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwp9CgovKiAtPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LQoKICAgQ29kZSBmb3IgRG9jdW1lbnRzTGlicmFyeSAibWFuYWdlVGVtcGxhdGUiIGFkbWluIGFjdGlvbgogICAKICAgLT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS09LT0tPS0KICAgCiAgIFR5cGljYWxseSwgdGhpcyB3aWxsIGRpc3BsYXkgc29tZXRoaW5nIGZyb20gYSB0ZW1wbGF0ZQogICBvciBkbyBzb21lIG90aGVyIHRhc2suCiAgIAoqLwoKLy8gUk9DSyBBTkQgTE9BRAoKaWYgKGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pICYmICRwYXJhbXNbJ3RlbXBsYXRlJ10gIT0gJycpCnsKCSR0aXRsZSA9ICRwYXJhbXNbJ3RlbXBsYXRlJ107CgkKCWlmIChpc3NldCgkcGFyYW1zWydzdWJtaXRidXR0b24nXSkgfHwgaXNzZXQoJHBhcmFtc1snYXBwbHlidXR0b24nXSkpCgl7CgkJJHRoaXMtPlNldFRlbXBsYXRlKCRwYXJhbXNbJ3RlbXBsYXRlJ10sICRwYXJhbXNbJ3RlbXBsYXRlZGV0YWlscyddKTsKCQkKCQlpZiAoaXNzZXQoJHBhcmFtc1snc3VibWl0YnV0dG9uJ10pKQoJCXsKCQkJJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZV90YWInID0+ICd0ZW1wbGF0ZXMnKSk7CgkJfQoJfQp9CmVsc2UgCnsKCSR0aXRsZSA9ICcnOwp9CgovLyBERVRBSUxTCgkJCgkKCQkKCQoJCiR0aGlzLT5zbWFydHktPmFzc2lnbignaWQnLCAkaWQpOwoJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmb3JtX3N0YXJ0JywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdlZGl0dGVtcGxhdGUnLCAkcmV0dXJuaWQpKTsKCQoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RpdGxlX3RlbXBsYXRlJywgJHRoaXMtPkxhbmcoJ3RpdGxlVGVtcGxhdGUnKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X3RlbXBsYXRlJywkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ3RlbXBsYXRlJywgJHRpdGxlLCA1MCkpOwoJCglpZiAoaXNzZXQoJHBhcmFtc1sncmVzdG9yZWxpc3QnXSkpCgl7CgkJJHRlbXBsYXRlY29kZSA9ICR0aGlzLT5HZXRUZW1wbGF0ZUZyb21GaWxlKCd0ZW1wbGF0ZS5saXN0Jyk7Cgl9CQoJZWxzZWlmIChpc3NldCgkcGFyYW1zWydyZXN0b3JlZGV0YWlscyddKSkKCXsKCQkkdGVtcGxhdGVjb2RlID0gJHRoaXMtPkdldFRlbXBsYXRlRnJvbUZpbGUoJ3RlbXBsYXRlLmRldGFpbHMnKTsKCX0KCWVsc2VpZiAoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkgJiYgJHBhcmFtc1sndGVtcGxhdGUnXSAhPSAnJykKCXsKCQkkdGVtcGxhdGVjb2RlID0gJHRoaXMtPkdldFRlbXBsYXRlKCRwYXJhbXNbJ3RlbXBsYXRlJ10pOwoJfQoJZWxzZWlmIChpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZWRldGFpbHMnXSkpCgl7CgkJJHRlbXBsYXRlY29kZSA9ICRwYXJhbXNbJ3RlbXBsYXRlZGV0YWlscyddOwoJfQoJZWxzZSAKCXsKCQkkdGVtcGxhdGVjb2RlID0gJyc7Cgl9CgkKCSR0aGlzLT5zbWFydHktPmFzc2lnbignY29kZV90ZW1wbGF0ZScsICR0aGlzLT5MYW5nKCdjb2RlVGVtcGxhdGUnKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3RleHRhcmVhX3RlbXBsYXRlJywgJHRoaXMtPkNyZWF0ZVRleHRBcmVhKHRydWUsICRpZCwgJHRlbXBsYXRlY29kZSwgJ3RlbXBsYXRlZGV0YWlscycsICdwYWdlYmlndGV4dGFyZWEnLCAnJywnJywgJycsIDkwLCAxNSwgJ0VkaXRBcmVhJykpOwoJCgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm1fZGV0YWlsc19zdWJtaXQnLCAkdGhpcy0+Q3JlYXRlSW5wdXRTdWJtaXQoJGlkLCAnc3VibWl0YnV0dG9uJywgJHRoaXMtPkxhbmcoJ3N1Ym1pdCcpKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm1fZGV0YWlsc19hcHBseScsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdhcHBseWJ1dHRvbicsICR0aGlzLT5MYW5nKCdhcHBseScpKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm1fZGV0YWlsc19yZXN0b3JlbGlzdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdyZXN0b3JlbGlzdCcsICR0aGlzLT5MYW5nKCdyZXN0b3JlbGlzdCcpKSk7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm1fZGV0YWlsc19yZXN0b3JlZGV0YWlscycsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdyZXN0b3JlZGV0YWlscycsICR0aGlzLT5MYW5nKCdyZXN0b3JlZGV0YWlscycpKSk7CgoJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdlZGl0dGVtcGxhdGUudHBsJyk7CgkKPz4=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.export.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgppZiAoISR0aGlzLT5DaGVja0FjY2VzcygnTWFuYWdlIHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nKSkgewoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwp9CgokZGF0YXMgPSBhcnJheSgpOwoKLy8gTWFpbiBlbnRyaWVzCiRkYXRhc1sne3skbW9kdWxlLT5nZXRNb2R1bGVGcmllbmRseU5hbWUoKX19J10gPSB7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19OjpFeHBvcnREYXRhcygpOwoKe3tmb3JlYWNoIGZyb209JGNoaWxkX21vZHVsZXMgaXRlbT1jaGlsZF9tb2R1bGV9fQokZGF0YXNbJ3t7JGNoaWxkX21vZHVsZS0+Z2V0TW9kdWxlRnJpZW5kbHlOYW1lKCl9fSddID0ge3skY2hpbGRfbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fTo6RXhwb3J0RGF0YXMoKTsKe3svZm9yZWFjaH19CgovLyBCeSBkZWZhdWx0LCBhbmQgaWYgdGhlIG1vZHVsZSBDTVMgRXhjZWwgZXhpc3RzLCB3ZSBleHBvcnQgdG8gZXhjZWwuCgppZiAoaXNzZXQoJGdDbXMtPm1vZHVsZXNbJ0NNU0V4Y2VsJ10pKQp7CgkkcGFyYW1zID0gYXJyYXkoCgkJJ2NyZWF0b3InID0+ICdNJkMgRmFjdG9yeScsCgkJJ3RpdGxlJyA9PiAne3skbW9kdWxlLT5nZXRNb2R1bGVGcmllbmRseU5hbWUoKX19IGV4cG9ydCcsCgkJJ3N1YmplY3QnID0+ICd7eyRtb2R1bGUtPmdldE1vZHVsZUZyaWVuZGx5TmFtZSgpfX0gZXhwb3J0JywKCQkpOwoJCgkkc3RhY2sgPSAkZ0Ntcy0+bW9kdWxlc1snQ01TRXhjZWwnXVsnb2JqZWN0J10tPmJ1aWxkRXhjZWwoJGRhdGFzLCRwYXJhbXMpOwoJCgkkbGluayA9ICRnQ21zLT5tb2R1bGVzWydDTVNFeGNlbCddWydvYmplY3QnXS0+Z2V0RXhjZWxMaW5rKCRzdGFjayxhcnJheSgnZmlsZW5hbWUnID0+ICd7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19X2V4cG9ydF8nLmRhdGUoJ1ktbS1kX0gtaS1zJykuJy54bHMnKSk7CgkKCWVjaG8gJzxoMz4nLiR0aGlzLT5sYW5nKCdleHBvcnQnKS4nPC9oMz48cD48YSBocmVmPSInLiRsaW5rLiciIHJlbD0iZXh0ZXJuYWwiID4nLiR0aGlzLT5sYW5nKCdkb3dubG9hZCcpLic8L2E+PC9wPic7Cn0KZWxzZQp7Cgk/PjxoMz48P3BocCBlY2hvICR0aGlzLT5sYW5nKCdzZXJpYWxpemVkX2RhdGFzJyk7Pz48L2gzPjx0ZXh0YXJlYT48P3BocCBlY2hvIHNlcmlhbGl6ZSgkZGF0YXMpOyA/PjwvdGV4dGFyZWE+IDxlbT4oVHJ5IHRvIGluc3RhbGwgdGhlIENNU0V4Y2VsIG1vZHVsZSB0byBoYXZlIGEgYmV0dGVyIGV4cG9ydCBzdXBwb3J0KTwvZW0+PD9waHAKfQ==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.fefilter.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.geturl.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8vIERFUFJFQ0FURUQKCiR1cmxhY3Rpb24gPSBpc3NldCgkcGFyYW1zWyd1cmxhY3Rpb24nXSkgPyAkcGFyYW1zWyd1cmxhY3Rpb24nXSA6ICdkZWZhdWx0JzsKdW5zZXQoJHBhcmFtc1sndXJsYWN0aW9uJ10pOwoKJGRldGFpbHBhZ2UgPSAkcmV0dXJuaWQ7CmlmIChpc3NldCgkcGFyYW1zWydkZXRhaWxwYWdlJ10pKSB7CiAgICAkbWFuYWdlciA9JiAkZ0Ntcy0+R2V0SGllcmFyY2h5TWFuYWdlcigpOwogICAgJG5vZGUgPSYgJG1hbmFnZXItPnN1cmVHZXROb2RlQnlBbGlhcygkcGFyYW1zWydkZXRhaWxwYWdlJ10pOwogICAgaWYgKGlzc2V0KCRub2RlKSkgewogICAgICAgICRjb250ZW50ID0mICRub2RlLT5HZXRDb250ZW50KCk7CiAgICAgICAgaWYgKGlzc2V0KCRjb250ZW50KSkKICAgICAgICB7CiAgICAgICAgICAgICRkZXRhaWxwYWdlID0gJGNvbnRlbnQtPklkKCk7CiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICAkbm9kZSA9JiAkbWFuYWdlci0+c3VyZUdldE5vZGVCeUlkKCRwYXJhbXNbJ2RldGFpbHBhZ2UnXSk7CiAgICAgICAgaWYgKGlzc2V0KCRub2RlKSkgewogICAgICAgICAgICAkZGV0YWlscGFnZSA9ICRwYXJhbXNbJ2RldGFpbHBhZ2UnXTsKICAgICAgICB9CiAgICB9CgogICAgJHBhcmFtc1snb3JpZ2lkJ10gPSAkcmV0dXJuaWQ7Cn0KCgplY2hvICR0aGlzLT5jcmVhdGVMaW5rKCRpZCwgJHVybGFjdGlvbiwgJGRldGFpbHBhZ2UsICRjb250ZW50cz0nJywgJHBhcmFtcywgJycsIHRydWUpOwoKPz4=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.ical.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[dGVzdDw/cGhwCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYgKGlzc2V0KCRwYXJhbXNbJ2V2ZW50X2lkJ10pIHx8IGlzc2V0KCRwYXJhbXNbJ2V2ZW50X2lkcyddKSkKewoJCgkkYyA9IG5ldyBNQ0ZDcml0ZXJpYSgpOwoJJGMtPmFkZCgncHVibGlzaGVkJywgJzEnKTsKCQoJaWYgKGlzc2V0KCRwYXJhbXNbJ2V2ZW50X2lkJ10pKQoJewkJCgkJJGMtPmFkZCgnaWQnLCAkcGFyYW1zWydldmVudF9pZCddKTsKCX0KCWVsc2UKCXsKCQkkYy0+YWRkKCdpZCcsICRwYXJhbXNbJ2V2ZW50X2lkcyddLCBNQ0ZDcml0ZXJpYTo6SU4pOwoJfQoJCgl7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19T2JqZWN0OjpnbG9iYWxGcm9udGVuZEZpbHRlcnMoJGMpOwoJCgkkaXRlbXMgPSB7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19T2JqZWN0Ojpkb1NlbGVjdCgkYyk7CgkKCWlmKE1DRkNhbGVuZGFyOjpjaGVja0NvbXBhdGliaWxpdHkoJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX1PYmplY3QnKSkKCXsKCQlNQ0ZDYWxlbmRhcjo6bG9hZGlDYWxMaWJyYXJpZXMoKTsKCQkKCQkkYSA9IG5ldyBpQ2FsZW5kYXI7CgkJCgkJZm9yZWFjaCAoJGl0ZW1zIGFzICRpdGVtKQoJCXsKCQkJJGV2ID0gbmV3IGlDYWxlbmRhcl9ldmVudDsKCgkJCS8vIENvbnZlbmllbmNlOiBpZiB5b3UgZG9uJ3Qgc3BlY2lmeSB0aGlzLCBvbmUgd2lsbCBiZSBhdXRvLWdlbmVyYXRlZAoJCQkvLyRldi0+YWRkX3Byb3BlcnR5KCd1aWQnLCAnNDMwNmY5M2UtZTM3OS0xMWQ5LWJkNTctZmYwZTdlMGQ1ZDUwJyk7CgkJCS8vJGV2LT5hZGRfcHJvcGVydHkoJ3VpZCcsIHJmYzI0NDVfZ3VpZCgpKTsKCQkJLy8gQXR0YWNobWVudHM6IGFuIGFwcGxpY2F0aW9uIGFuZCBhIFVSTAoJCQkvLyRldi0+YWRkX3Byb3BlcnR5KCdhdHRhY2gnLCBiYXNlNjRfZW5jb2RlKCdBcHBsaWNhdGlvbi1EYXRhLU9jdGV0cycpLCBhcnJheSgnZm10dHlwZScgPT4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsICdlbmNvZGluZycgPT4gJ0JBU2U2NCcsICd2YWx1ZScgPT4gJ2JpbkFSWScpKTsKCQkJLy8kZXYtPmFkZF9wcm9wZXJ0eSgnYXR0YWNoJywgJ2h0dHA6Ly93d3cubW9vZGxlLm9yZy8nKTsKCgkJCS8vIFN1bW1hcnkgYW5kIGRlc2NyaXB0aW9uOyBhbHNvIHJlc291cmNlcwoJCQkkZXYtPmFkZF9wcm9wZXJ0eSgnc3VtbWFyeScsICRpdGVtLT5nZXRUaXRsZSgpKTsKCQkJaWYgKG1ldGhvZF9leGlzdHMoJGl0ZW0sICdnZXREZXNjcmlwdGlvbicpKQoJCQl7CgkJCQkkZXYtPmFkZF9wcm9wZXJ0eSgnZGVzY3JpcHRpb24nLCAkaXRlbS0+Z2V0RGVzY3JpcHRpb24oKSk7CgkJCX0KCQkJaWYgKG1ldGhvZF9leGlzdHMoJGl0ZW0sICdnZXRSZXNvdXJjZXMnKSkKCQkJewoJCQkJJGV2LT5hZGRfcHJvcGVydHkoJ3Jlc291cmNlcycsIGV4cGxvZGUoJywnLCRpdGVtLT5nZXRSZXNvdXJjZXMoKSkpOwkJCQkKCQkJfQoJCQkvLyBTdGFydC1lbmQgZGF0ZQoJCQkvLyRldi0+YWRkX3Byb3BlcnR5KCdjbGFzcycsICdQUklWQVRFJyk7CgkJCQoJCQkJCQkkZXYtPmFkZF9wcm9wZXJ0eSgnZHRzdGFydCcsCgkJCQkJCWRhdGUoJ1ltZCcsIHN0cnRvdGltZSgkaXRlbS0+Z2V0U3RhcnREYXRlKCkpKSAsYXJyYXkoJ3ZhbHVlJyA9PiAnREFURScpCgkJCQkJCSk7CgoJCQkJCQkkZXYtPmFkZF9wcm9wZXJ0eSgnZHRlbmQnLCAKCQkJCQkJZGF0ZSgnWW1kJywgc3RydG90aW1lKCRpdGVtLT5nZXRFbmREYXRlKCkgLicgKyAxIGRheScpKSxhcnJheSgndmFsdWUnID0+ICdEQVRFJykgLy8gTmVlZCB0byBwdXQgb25lIGRheSBsYXRlciBmb3IgdGhpcyB0byB3b3JrLiBEb24ndCBhc2sgd2h5Li4uCgkJCQkJCSk7CgoJCQkvLwkJCSRldi0+YWRkX3Byb3BlcnR5KCdkdHN0YW1wJywgJzIwMDUwNjIyVDIzNTYwMVonKTsKCgkJCQkJCSRldi0+YWRkX3Byb3BlcnR5KCdkdHN0YW1wJywgCgkJCQkJIAkJZGF0ZSgnWW1kXFRIaXNcWicsIHN0cnRvdGltZSgkaXRlbS0+Z2V0Q3JlYXRlZEF0KCkpKQoJCQkJCQkpOwoJCQkJCQkKCQkvLwkkZXYtPmFkZF9wcm9wZXJ0eSgnYXR0ZW5kZWUnLCAnbWFpbHRvOnBqQHVvbS5ncicsIGFycmF5KCdjbicgPT4gJ0pvaG4gUGFwYWlvYW5ub3UnLCAnZGVsZWdhdGVkLWZyb20nID0+IGFycmF5KCdtYWlsdG86YmxhQHNvbWUubmV0JywgJ21haWx0bzpibGFAc29tZS5uZXQnKSkpOwoJCQkvLyRldi0+YWRkX3Byb3BlcnR5KCdleGRhdGUnLCBhcnJheSgnMjAwNTA2MjJUMjM1NjAxWicsICcyMDA2MDYyMlQyMzU2MDFaJykpOwoJCQkvLyRldi0+YWRkX3Byb3BlcnR5KCdleHJ1bGUnLCAnRlJFUT1XRUVLTFk7Q09VTlQ9NDtJTlRFUlZBTD0yO0JZREFZPVRVLFRIJyk7CgkJCS8vJGV2LT5hZGRfcHJvcGVydHkoJ3JlcXVlc3Qtc3RhdHVzJywgJzIuMy4xO1NvbWUgZXhwbGFuYXRpb24gZm9yIHRoZSByZXF1ZXN0IHN0YXR1cyBjb2RlJyk7CgkJCS8vJGV2LT5hZGRfcHJvcGVydHkoJ3JlY3VycmVuY2UtaWQnLCAnMjAwNTA2MjJUMjM1NjAxWicsIGFycmF5KCd2YWx1ZScgPT4gJ0RBVEUtVElNRScsICdyYW5nZScgPT4gJ3RoaXNBTkRGVVRVUkUnKSk7CgkJCS8vJGV2LT5hZGRfcHJvcGVydHkoJ3JkYXRlJywgYXJyYXkoJzE5OTYwNDAzVDAyMDAwMFovMTk5NjA0MDNUMDQwMDAwWicsJzE5OTYwNDA0VDAxMDAwMFovUFQzSCcpLCBhcnJheSgndmFsdWUnID0+ICdQRVJJT0QnKSk7CgkJCS8vJGV2LT5hZGRfcHJvcGVydHkoJ3JkYXRlJywgYXJyYXkoMTk5NzAxMDEsMTk5NzAxMjAsMTk5NzAyMTcsMTk5NzA0MjEsMTk5NzA1MjYsMTk5NzA3MDQsMTk5NzA5MDEsMTk5NzEwMTQsMTk5NzExMjgsMTk5NzExMjksMTk5NzEyMjUpLCBhcnJheSgndmFsdWUnID0+ICdEQVRFJykpOwoJCQkvLyRldi0+YWRkX3Byb3BlcnR5KCdnZW8nLCBhcnJheSgzNy4zODYwMTMsLTEyMi4wODI5MzIpKTsKCQkJLy8kZXYtPmFkZF9wcm9wZXJ0eSgnb3JnYW5pemVyJywgJ01BSUxUTzpqc21pdGhAaG9zdDEuY29tJywgYXJyYXkoJ2NuJyA9PiAnSm9obiBDLiBTbWl0aCcsICdkaXInID0+ICdsZGFwOi8vaG9zdC5jb206NjY2Ni9vPTNEREMlMjBBc3NvY2lhdGVzLGM9M0RVUz8/KGNuPTNESm9obiUyMFNtaXRoKScpKTsKCgkJCSRhLT5hZGRfY29tcG9uZW50KCRldik7CgkJfQoKCQkkYS0+YWRkX3Byb3BlcnR5KCdwcm9kaWQnLCAnLS8vTSZDIC0gSmVhbi1DaHJpc3RvcGhlIEN1dmVsaWVyLy9NJkMgRmFjdG9yeSAyMDEwLy9FTicpOwoJLy8JJGEtPmFkZF9wcm9wZXJ0eSgndmVyc2lvbicsICcyLjAnKTsKCQkkYS0+YWRkX3Byb3BlcnR5KCdjYWxzY2FsZScsICdHUkVHT1JJQU4nKTsKCS8vCSRhLT5hZGRfcHJvcGVydHkoJ21ldGhvZCcsICdQVUJMSVNIJyk7CgkKCQkvL2hlYWRlcigiQ29udGVudC1UeXBlOiB0ZXh0L2NhbGVuZGFyIik7CgkJJGdDbXMtPnZhcmlhYmxlc1snY29udGVudC10eXBlJ10gPSAndGV4dC9jYWxlbmRhcic7CgkgICAgaGVhZGVyKCJDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmU7IGZpbGVuYW1lPWlDYWwuaWNzIik7CgkJCgkJZWNobyAkYS0+c2VyaWFsaXplKCk7CgoJfQkKfQ==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.link_to.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCmlmKGlzc2V0KCRwYXJhbXNbJ21hY3Rpb24nXSkpCnsKCXVuc2V0KCRwYXJhbXNbJ2FjdGlvbiddKTsKCSRhY3Rpb24gPSAkcGFyYW1zWydtYWN0aW9uJ107Cgl1bnNldCgkcGFyYW1zWydtYWN0aW9uJ10pOwoJCgkkZGV0YWlscGFnZSA9ICRyZXR1cm5pZDsKCWlmIChpc3NldCgkcGFyYW1zWydkZXRhaWxwYWdlJ10pKSB7CgkJICBnbG9iYWwgJGdDbXM7CgkgICAgJG1hbmFnZXIgPSAkZ0Ntcy0+R2V0SGllcmFyY2h5TWFuYWdlcigpOwoJICAgICRub2RlID0gJG1hbmFnZXItPnN1cmVHZXROb2RlQnlBbGlhcygkcGFyYW1zWydkZXRhaWxwYWdlJ10pOwoJICAgIGlmICgkbm9kZSkgewoJICAgICAgICAkY29udGVudCA9ICRub2RlLT5HZXRDb250ZW50KCk7CgkgICAgICAgIGlmICgkY29udGVudCkKCSAgICAgICAgewoJICAgICAgICAgICAgJGRldGFpbHBhZ2UgPSAkY29udGVudC0+SWQoKTsKCSAgICAgICAgfQoJICAgIH0gZWxzZSB7CgkgICAgICAgICRub2RlID0gJG1hbmFnZXItPnN1cmVHZXROb2RlQnlJZCgkcGFyYW1zWydkZXRhaWxwYWdlJ10pOwoJICAgICAgICBpZiAoJG5vZGUpIHsKCSAgICAgICAgICAgICRkZXRhaWxwYWdlID0gJHBhcmFtc1snZGV0YWlscGFnZSddOwoJICAgICAgICB9CgkgICAgfQoJICAgICRwYXJhbXNbJ29yaWdpZCddID0gJHJldHVybmlkOwoJfQoJdW5zZXQoJHBhcmFtc1snZGV0YWlscGFnZSddKTsJCgkkdGl0bGUgPSBpc3NldCgkcGFyYW1zWyd0aXRsZSddKT8kcGFyYW1zWyd0aXRsZSddOidsaW5rJzsKCXVuc2V0KCRwYXJhbXNbJ3RpdGxlJ10pOwoJdW5zZXQoJHBhcmFtc1snb3JpZ2lkJ10pOwoKCWVjaG8gJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCRhY3Rpb24sJGRldGFpbHBhZ2UsJHRpdGxlLCRwYXJhbXMsJycsZmFsc2UsZmFsc2UsJycsZmFsc2UpOwp9CnJldHVybjsK]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.module_action.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLy8gQXV0by1nZW5lcmF0ZSBGaWxlCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKe3tpZiAkYWN0aW9uX29iai0+aXNfcHVibGljIG5lIDF9fQppZiAoISR0aGlzLT5DaGVja0FjY2VzcygnTWFuYWdlIHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nKSkgewoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwp9Cnt7L2lmfX0KCi8vIFNQRUNJRklDIENPREUgRk9SIFRIRSBBQ1RJT04KCnt7JGFjdGlvbl9vYmotPmNvZGV9fQ==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.movedown.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYgKCEkdGhpcy0+Q2hlY2tBY2Nlc3MoJ01hbmFnZSBNQyBGYWN0b3J5JykpIHsKCXJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKfQoKJHZpZXcgPSBuZXcgTUNGTGlzdFZpZXcoJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nLCAkcGFyYW1zKTsKCmlmIChpc3NldCgkcGFyYW1zWydpdGVtX2lkJ10pICYmICFlbXB0eSgkcGFyYW1zWydpdGVtX2lkJ10pKSB7CgkkaXRlbSA9IHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX1PYmplY3Q6OmdldEJ5SWQoJHBhcmFtc1snaXRlbV9pZCddKTsKCSRwb3MxID0gJGl0ZW0tPmdldE9yZGVyQnkoKTsKCSRwYXJlbnRfaXRlbSA9ICRpdGVtLT5nZXRQYXJlbnRJdGVtKCk7CgkkYyA9IG5ldyBNQ0ZDcml0ZXJpYSgpOwoJJGMtPmFkZCgnb3JkZXJfYnknLCAkcG9zMSwgTUNGQ3JpdGVyaWE6OkdSRUFURVJfVEhBTik7CglpZiAoJHBhcmVudF9pdGVtKSB7CgkgICAgJGMtPmFkZCgncGFyZW50X2l0ZW0nLCAkcGFyZW50X2l0ZW0pOwoJfQoJJGMtPmFkZEFzY2VuZGluZ09yZGVyQnlDb2x1bW4oJ29yZGVyX2J5Jyk7CgkkYy0+c2V0TGltaXQoMSk7CglpZiAoJG5leHQgPSB7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19T2JqZWN0Ojpkb1NlbGVjdE9uZSgkYykpIHsKCSAgICAkcG9zMiA9ICRuZXh0LT5nZXRPcmRlckJ5KCk7CgkgICAgJG5leHQtPnNldE9yZGVyQnkoJHBvczEpOwoJICAgICRuZXh0LT5zYXZlKCk7CgkgICAgJGl0ZW0tPnNldE9yZGVyQnkoJHBvczIpOwoJICAgICRpdGVtLT5zYXZlKCk7Cgl9Cn0KCnt7aWYgJHBhcmVudF9tb2R1bGV9fQokcGFyZW50ID0gbmV3IHt7JHBhcmVudF9tb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19KCk7CiRwYXJlbnQtPlJlZGlyZWN0KCRpZCwgJ2VkaXQnLCAkcmV0dXJuaWQsIGFycmF5KCd2aWV3JyA9PiAkdmlldy0+Z2V0VmlldygpLCAnaXRlbV9pZCcgPT4gJGl0ZW0tPmdldFBhcmVudEl0ZW0oKSkpOwp7e2Vsc2V9fQokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgndmlldycgPT4gJHZpZXctPmdldFZpZXcoKSkpOwp7ey9pZn19CmV4aXQ7Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.moveup.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYgKCEkdGhpcy0+Q2hlY2tBY2Nlc3MoJ01hbmFnZSBNQyBGYWN0b3J5JykpIHsKCXJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKfQoKJHZpZXcgPSBuZXcgTUNGTGlzdFZpZXcoJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nLCAkcGFyYW1zKTsKCmlmIChpc3NldCgkcGFyYW1zWydpdGVtX2lkJ10pICYmICFlbXB0eSgkcGFyYW1zWydpdGVtX2lkJ10pKSB7CgkkaXRlbSA9IHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX1PYmplY3Q6OmdldEJ5SWQoJHBhcmFtc1snaXRlbV9pZCddKTsKCSRwb3MxID0gJGl0ZW0tPmdldE9yZGVyQnkoKTsKCSRwYXJlbnRfaXRlbSA9ICRpdGVtLT5nZXRQYXJlbnRJdGVtKCk7CgkkYyA9IG5ldyBNQ0ZDcml0ZXJpYSgpOwoJJGMtPmFkZCgnb3JkZXJfYnknLCAkcG9zMSwgTUNGQ3JpdGVyaWE6OkxFU1NfVEhBTik7CglpZiAoJHBhcmVudF9pdGVtKSB7CgkgICAgJGMtPmFkZCgncGFyZW50X2l0ZW0nLCAkcGFyZW50X2l0ZW0pOwoJfQoJJGMtPmFkZERlc2NlbmRpbmdPcmRlckJ5Q29sdW1uKCdvcmRlcl9ieScpOwoJJGMtPnNldExpbWl0KDEpOwoJaWYgKCRwcmV2ID0ge3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fU9iamVjdDo6ZG9TZWxlY3RPbmUoJGMpKSB7CgkgICAgJHBvczIgPSAkcHJldi0+Z2V0T3JkZXJCeSgpOwoJICAgICRwcmV2LT5zZXRPcmRlckJ5KCRwb3MxKTsKCSAgICAkcHJldi0+c2F2ZSgpOwoJICAgICRpdGVtLT5zZXRPcmRlckJ5KCRwb3MyKTsKCSAgICAkaXRlbS0+c2F2ZSgpOwoJfQp9Cgp7e2lmICRwYXJlbnRfbW9kdWxlfX0KJHBhcmVudCA9IG5ldyB7eyRwYXJlbnRfbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fSgpOwokcGFyZW50LT5SZWRpcmVjdCgkaWQsICdlZGl0JywgJHJldHVybmlkLCBhcnJheSgndmlldycgPT4gJHZpZXctPmdldFZpZXcoKSwgJ2l0ZW1faWQnID0+ICRpdGVtLT5nZXRQYXJlbnRJdGVtKCkpKTsKe3tlbHNlfX0KJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ3ZpZXcnID0+ICR2aWV3LT5nZXRWaWV3KCkpKTsKe3svaWZ9fQpleGl0OwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.publish.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKaWYgKCEkdGhpcy0+Q2hlY2tBY2Nlc3MoJ01hbmFnZSBNQyBGYWN0b3J5JykpIHsKCXJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKfQoKJHZpZXcgPSBuZXcgTUNGTGlzdFZpZXcoJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nLCAkcGFyYW1zKTsKCiRpdGVtID0ge3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fU9iamVjdDo6Z2V0QnlJZCgkcGFyYW1zWydpdGVtX2lkJ10pOwokaXRlbS0+c2V0UHVibGlzaGVkKCRpdGVtLT5nZXRQdWJsaXNoZWQoKSA/IDAgOiAxKTsKJGl0ZW0tPnNhdmUoKTsKCnt7aWYgJHBhcmVudF9tb2R1bGV9fQokcGFyZW50ID0gbmV3IHt7JHBhcmVudF9tb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19KCk7CiRwYXJlbnQtPlJlZGlyZWN0KCRpZCwgJ2VkaXQnLCAkcmV0dXJuaWQsIGFycmF5KCd2aWV3JyA9PiAkdmlldy0+Z2V0VmlldygpLCAnaXRlbV9pZCcgPT4gJGl0ZW0tPmdldFBhcmVudEl0ZW0oKSkpOwp7e2Vsc2V9fQokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgndmlldycgPT4gJHZpZXctPmdldFZpZXcoKSkpOwp7ey9pZn19Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.rss.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokYyA9IG5ldyBNQ0ZDcml0ZXJpYSgpOwokYy0+YWRkKCdwdWJsaXNoZWQnLCAnMScpOwoKCiRtb2R1bGV4dGVuZGVyID0gJGdDbXMtPm1vZHVsZXNbJ01vZHVsZVh0ZW5kZXInXVsnb2JqZWN0J107CmlmIChpc3NldCgkcGFyYW1zWydjdXJyZW50cGFnZSddKSkgewoJJGMtPmFkZCgnaWQnLCBNWF9SZWxhdGlvbkxpbms6OmdldFJlbGF0ZWRJdGVtc0lkcygne3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fScsICRnQ21zLT52YXJpYWJsZXNbJ2NvbnRlbnRfaWQnXSwgJ3BhZ2VzJyksIE1DRkNyaXRlcmlhOjpJTik7Cn0KaWYgKGlzc2V0KCRwYXJhbXNbJ3BhZ2VzJ10pKSB7CgkkZ2x1ZSA9IGlzc2V0KCRwYXJhbXNbJ2FsbF9wYWdlcyddKSA/ICdBTkQnIDogJ09SJzsKCSRjLT5hZGQoJ2lkJywgTVhfUmVsYXRpb25MaW5rOjpnZXRSZWxhdGVkSXRlbXNJZHMoJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nLCBleHBsb2RlKCcsJywgJHBhcmFtc1sncGFnZXMnXSksICdwYWdlcycsICRnbHVlKSwgTUNGQ3JpdGVyaWE6OklOKTsKfQppZiAoaXNzZXQoJHBhcmFtc1snb3B0aW9ucyddKSkgewoJJGdsdWUgPSBpc3NldCgkcGFyYW1zWydhbGxfb3B0aW9ucyddKSA/ICdBTkQnIDogJ09SJzsKCSRjLT5hZGQoJ2lkJywgTVhfUmVsYXRpb25MaW5rOjpnZXRSZWxhdGVkSXRlbXNJZHMoJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nLCBleHBsb2RlKCcsJywgJHBhcmFtc1snb3B0aW9ucyddKSwgJ29wdGlvbnMnLCAkZ2x1ZSksIE1DRkNyaXRlcmlhOjpJTik7Cn0KCmlmIChpc3NldCgkcGFyYW1zWydteGZpbHRlcnNfb3B0aW9ucyddKSAmJiBpc19hcnJheSgkcGFyYW1zWydteGZpbHRlcnNfb3B0aW9ucyddKSkgewoJJG9wdGlvbnMgPSBhcnJheSgpOwoJZm9yZWFjaCAoJHBhcmFtc1snbXhmaWx0ZXJzX29wdGlvbnMnXSBhcyAkb3B0aW9uKSB7CgkJaWYgKCRvcHRpb24pIHsKCQkJJG9wdGlvbnNbXSA9ICRvcHRpb247CgkJfQoJfQoJaWYgKGNvdW50KCRvcHRpb25zKSkgewoJCSRjLT5hZGQoJ2lkJywgTVhfUmVsYXRpb25MaW5rOjpnZXRSZWxhdGVkSXRlbXNJZHMoJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nLCAkb3B0aW9ucywgJ29wdGlvbnMnLCAnQU5EJyksIE1DRkNyaXRlcmlhOjpJTik7Cgl9Cn0KCnt7Zm9yZWFjaCBmcm9tPSRmaWx0ZXJzIGl0ZW09ZmlsdGVyfX0KaWYgKGlzc2V0KCRwYXJhbXNbJ3t7JGZpbHRlci5uYW1lfX0nXSkpIHsKCXt7aWYgaW5fYXJyYXkoJGZpbHRlci50eXBlLCBhcnJheSgnbGVzcycsICdsZXNzX2VxdWFsJywgJ2dyZWF0ZXInLCAnZ3JlYXRlcl9lcXVhbCcpKX19CgkkYy0+YWRkKCdDQVNUKHt7JGZpbHRlci5maWVsZH19IEFTIFVOU0lHTkVEKScsICRwYXJhbXNbJ3t7JGZpbHRlci5uYW1lfX0nXSwgTUNGQ3JpdGVyaWE6Ont7JGZpbHRlci5jcml0ZXJpYX19KTsKCXt7ZWxzZWlmICBpbl9hcnJheSgkZmlsdGVyLnR5cGUsIGFycmF5KCdsaWtlX3dpbGQnKSl9fQoJJGMtPmFkZCgnJXt7JGZpbHRlci5maWVsZH19JScsICRwYXJhbXNbJ3t7JGZpbHRlci5uYW1lfX0nXSwgTUNGQ3JpdGVyaWE6Ont7JGZpbHRlci5jcml0ZXJpYX19KTsKCXt7ZWxzZX19CgkkYy0+YWRkKCd7eyRmaWx0ZXIuZmllbGR9fScsICRwYXJhbXNbJ3t7JGZpbHRlci5uYW1lfX0nXSwgTUNGQ3JpdGVyaWE6Ont7JGZpbHRlci5jcml0ZXJpYX19KTsKCXt7L2lmfX0KfQp7ey9mb3JlYWNofX0KCmlmIChpc3NldCgkcGFyYW1zWydsaW1pdCddKSkgewoJJGMtPnNldExpbWl0KCRwYXJhbXNbJ2xpbWl0J10pOwp9CmVsc2UKewoJJGMtPnNldExpbWl0KDI1KTsKfQoKJGMtPmFkZERlc2NlbmRpbmdPcmRlckJ5Q29sdW1uKCd1cGRhdGVkX2F0Jyk7CiRjLT5hZGREZXNjZW5kaW5nT3JkZXJCeUNvbHVtbignaWQnKTsKCnt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX1PYmplY3Q6Omdsb2JhbEZyb250ZW5kRmlsdGVycygkYyk7CgokaXRlbXMgPSB7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19T2JqZWN0Ojpkb1NlbGVjdCgkYyk7CiR0aGlzLT5zbWFydHktPmFzc2lnbl9ieV9yZWYoJ2l0ZW1zJywgJGl0ZW1zKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduX2J5X3JlZigncm9vdF91cmwnLCAkZ0Ntcy0+Y29uZmlnWydyb290X3VybCddKTsKCiR2YXJpYWJsZXMgPSYgJGdDbXMtPnZhcmlhYmxlczsKCmlmKCBwcmVnX21hdGNoKCAnL01vemlsbGEvJywgJF9TRVJWRVJbIkhUVFBfVVNFUl9BR0VOVCJdICkgKQp7CiAgICR2YXJpYWJsZXNbJ2NvbnRlbnQtdHlwZSddID0gJ3RleHQveG1sJzsKfQplbHNlIAp7CiAgICR2YXJpYWJsZXNbJ2NvbnRlbnQtdHlwZSddID0gJ2FwcGxpY2F0aW9uL3Jzcyt4bWwnOwp9CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGb3IoJ3JzcycsICRwYXJhbXMpOw==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.search.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokZm9ybSA9IG5ldyBDTVNGb3JtKCR0aGlzLT5HZXROYW1lKCksICRpZCwnZGVmYXVsdCcsKGlzc2V0KCRwYXJhbXNbJ3JldHVybmlkJ10pID8gJHBhcmFtc1sncmV0dXJuaWQnXSA6ICRyZXR1cm5pZCkpOwokZm9ybS0+c2V0QnV0dG9ucyhhcnJheSgnc3VibWl0JykpOwokZm9ybS0+c2V0TGFiZWwoJ3N1Ym1pdCcsICdTZWFyY2gnKTsKCmlmIChpc3NldCgkcGFyYW1zWydmaWx0ZXJzJ10pKQp7CgkkZmlsdGVycyA9IGV4cGxvZGUoJ3wnLCAkcGFyYW1zWydmaWx0ZXJzJ10pOwoJZm9yZWFjaCAoJGZpbHRlcnMgYXMgJGZpbHRlcikKCXsKCQkkb3B0ID0gZXhwbG9kZSgnOycsICRmaWx0ZXIpOwoJCSRvcHRpb25zID0gYXJyYXkoKTsKCQlmb3JlYWNoKCRvcHQgYXMgJG9wKQoJCXsKCQkJJG8gPSBleHBsb2RlKCc9JywgJG9wKTsKCQkJJG9wdGlvbnNbdHJpbSgkb1swXSldID0gdHJpbSgkb1sxXSk7CgkJfQoJCWlmIChpc3NldCgkb3B0aW9uc1snbmFtZSddKSkKCQl7CgkJCSRuYW1lID0gJG9wdGlvbnNbJ25hbWUnXTsKCQkJdW5zZXQoJG9wdGlvbnNbJ25hbWUnXSk7CgkJCWlmKGlzc2V0KCRwYXJhbXNbJ2N1cnJlbnRfdmFsdWVzJ11bJG5hbWVdKSkgJG9wdGlvbnNbJ3ZhbHVlJ10gPSAkcGFyYW1zWydjdXJyZW50X3ZhbHVlcyddWyRuYW1lXTsKCQkJe3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fU9iamVjdDo6Z2V0RkVGaWx0ZXIoJiRmb3JtLCAkbmFtZSwgJG9wdGlvbnMpOwoJCX0KCX0KfQoKJG14ZmlsdGVycyA9IGFycmF5KCk7CmlmICgkZ0Ntcy0+bW9kdWxlc1snTW9kdWxlWHRlbmRlciddWydvYmplY3QnXS0+aXNYdGVuZGVkTW9kdWxlKCd7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19JykpIHsKCWZvcmVhY2ggKE1YX1JlbGF0aW9uOjpnZXRGaWx0ZXJzKCR0aGlzLT5nZXROYW1lKCkpIGFzICRmaWx0ZXIpIHsKCSAgICBpZiAoJGZpbHRlci0+Z2V0VHlwZSgpID09ICdjYXRlZ29yeScpIHsKCQkJaWYoaXNzZXQoJHBhcmFtc1sndGl0bGVfZmlsdGVyX2NhdGVnb3J5XycuJGZpbHRlci0+Z2V0SWQoKV0pKQoJCQl7CgkJCQkkdmFsdWVzID0gYXJyYXkoJHBhcmFtc1sndGl0bGVfZmlsdGVyX2NhdGVnb3J5XycuJGZpbHRlci0+Z2V0SWQoKV0gPT4gMCk7CgkJCX0KCQkJZWxzZQoJCQl7CQkJCQoJCSAgICAgJHZhbHVlcyA9IGFycmF5KCRmaWx0ZXItPmdldFRpdGxlKGZhbHNlLCB0cnVlKSA9PiAwKTsKCQkJfQogICAgCQlmb3JlYWNoICgkZmlsdGVyLT5nZXRSZWxhdGVkSXRlbXMoKSBhcyAkaXRlbSkgewogICAgCQkJJHZhbHVlc1skaXRlbS0+dGl0bGVdID0gJGl0ZW0tPmlkOwogICAgCQl9CiAgICAJCQoKCQkJCS8vJG14ZmlsdGVyc1skZmlsdGVyLT5nZXRJZCgpXSA9ICR0aGlzLT5DcmVhdGVJbnB1dERyb3Bkb3duKCRpZCwgJ214ZmlsdGVyc19vcHRpb25zWycgLiAkZmlsdGVyLT5pZCAuICddJywgJHZhbHVlcywgLTEsIGlzc2V0KCRwYXJhbXNbJ214ZmlsdGVyc19vcHRpb25zJ11bJGZpbHRlci0+aWRdKSA/ICRwYXJhbXNbJ214ZmlsdGVyc19vcHRpb25zJ11bJGZpbHRlci0+aWRdIDogJycpOwoJCQkJJGZvcm0tPnNldFdpZGdldCgnbXhmaWx0ZXJzX29wdGlvbnNbJyAuICRmaWx0ZXItPmlkIC4gJ10nLCAnc2VsZWN0JywgYXJyYXkoCgkJCQkJJ3ZhbHVlcycgPT4gJHZhbHVlcwoJCQkJCSwndmFsdWUnID0+IGlzc2V0KCRwYXJhbXNbJ214ZmlsdGVyc19vcHRpb25zJ11bJGZpbHRlci0+aWRdKSA/ICRwYXJhbXNbJ214ZmlsdGVyc19vcHRpb25zJ11bJGZpbHRlci0+aWRdIDogJycKCQkJCSkpOwoJICAgIH0gCgkJCWVsc2VpZiAoJGZpbHRlci0+Z2V0VHlwZSgpID09ICdwYWdlJykgCgkJCXsKCQkJCWlmKGlzc2V0KCRwYXJhbXNbJ3RpdGxlX2ZpbHRlcl9wYWdlXycuJGZpbHRlci0+Z2V0SWQoKV0pKQoJCQkJewoJCQkJCSR2YWx1ZXMgPSBhcnJheSgkcGFyYW1zWyd0aXRsZV9maWx0ZXJfcGFnZV8nLiRmaWx0ZXItPmdldElkKCldID0+IDApOwoJCQkJfQoJCQkJZWxzZQoJCQkJewkJCQkKCQkgICAgICAkdmFsdWVzID0gYXJyYXkoJGZpbHRlci0+Z2V0VGl0bGUoZmFsc2UsIHRydWUpID0+IDApOwoJCQkJfQogICAgCQlmb3JlYWNoICgkZmlsdGVyLT5nZXRSZWxhdGVkSXRlbXMoKSBhcyAkaXRlbSkgewogICAgCQkJJHZhbHVlc1skaXRlbS0+dGl0bGVdID0gJGl0ZW0tPmlkOwogICAgCQl9CiAgICAJCQoJCQkJLy8kbXhmaWx0ZXJzWyRmaWx0ZXItPmdldElkKCldID0gJHRoaXMtPkNyZWF0ZUlucHV0RHJvcGRvd24oJGlkLCAnbXhmaWx0ZXJzX3BhZ2VzWycgLiAkZmlsdGVyLT5pZCAuICddJywgJHZhbHVlcywgLTEsIGlzc2V0KCRwYXJhbXNbJ214ZmlsdGVyc19wYWdlcyddWyRmaWx0ZXItPmlkXSkgPyAkcGFyYW1zWydteGZpbHRlcnNfcGFnZXMnXVskZmlsdGVyLT5pZF0gOiAnJyk7CgkJCQkkZm9ybS0+c2V0V2lkZ2V0KCdteGZpbHRlcnNfcGFnZXNbJyAuICRmaWx0ZXItPmlkIC4gJ10nLCAnc2VsZWN0JywgYXJyYXkoCgkJCQkJJ3ZhbHVlcycgPT4gJHZhbHVlcwoJCQkJCSwndmFsdWUnID0+IGlzc2V0KCRwYXJhbXNbJ214ZmlsdGVyc19wYWdlcyddWyRmaWx0ZXItPmlkXSkgPyAkcGFyYW1zWydteGZpbHRlcnNfcGFnZXMnXVskZmlsdGVyLT5pZF0gOiAnJwoJCQkJKSk7CgkgICAgfQoJfQp9Ci8qCgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lkJywgJGlkKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdmb3JtX3N0YXJ0JywgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICdkZWZhdWx0JywgKGlzc2V0KCRwYXJhbXNbJ3JldHVybmlkJ10pID8gJHBhcmFtc1sncmV0dXJuaWQnXSA6ICRyZXR1cm5pZCksICdwb3N0JykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3BhcmFtZXRlcnMnLCAkcGFyYW1zKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdteGZpbHRlcnMnLCAkbXhmaWx0ZXJzKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZWZpbHRlcicsICR0aGlzLT5DcmVhdGVJbnB1dFRleHQoJGlkLCAnZmlsdGVyX3RpdGxlJywgaXNzZXQoJHBhcmFtc1snZmlsdGVyX3RpdGxlJ10pID8gaHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbJ2ZpbHRlcl90aXRsZSddKSA6ICcnLCAyMCkpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ZpbHRlcl9hbGwnLCAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2ZpbHRlcl9hbGwnLCBpc3NldCgkcGFyYW1zWydmaWx0ZXJfYWxsJ10pID8gaHRtbF9lbnRpdHlfZGVjb2RlKCRwYXJhbXNbJ2ZpbHRlcl9hbGwnXSkgOiAnJywgMjApKTsKCi8qKi8KCgppZihpc3NldCgkcGFyYW1zWyd2aWV3X3RlbXBsYXRlJ10pKQp7CgkkZm9ybS0+c2V0V2lkZ2V0KCd0ZW1wbGF0ZScsICdoaWRkZW4nLCBhcnJheSgndmFsdWUnID0+ICRwYXJhbXNbJ3ZpZXdfdGVtcGxhdGUnXSkpOwp9CgokbmV3cGFyYW1zID0gJHBhcmFtczsKdW5zZXQoJG5ld3BhcmFtc1snbW9kdWxlJ10pOwp1bnNldCgkbmV3cGFyYW1zWydhY3Rpb24nXSk7CnVuc2V0KCRuZXdwYXJhbXNbJ3BhZ2UnXSk7CnVuc2V0KCRuZXdwYXJhbXNbJ3JldHVybmlkJ10pOwp1bnNldCgkbmV3cGFyYW1zWyd2aWV3X3RlbXBsYXRlJ10pOwp1bnNldCgkbmV3cGFyYW1zWydmaWx0ZXJzJ10pOwp1bnNldCgkbmV3cGFyYW1zWydjdXJyZW50X3ZhbHVlcyddKTsKZm9yZWFjaCgkbmV3cGFyYW1zIGFzICRrZXkgPT4gJHZhbHVlKQp7CgkkZm9ybS0+c2V0V2lkZ2V0KCRrZXksICdoaWRkZW4nLCBhcnJheSgndmFsdWUnID0+ICR2YWx1ZSkpOwp9CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm0nLCAkZm9ybSk7CmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZvcignc2VhcmNoJywgJHBhcmFtcyk7CnJldHVybjsKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.tagcloud.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokYyA9IG5ldyBNQ0ZDcml0ZXJpYSgpOwokYy0+YWRkKCdwdWJsaXNoZWQnLCAnMScpOwokdGhpcy0+YnVpbGRGcm9udGVuZEZpbHRlcnMoJGMsICRwYXJhbXMpOwp7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19T2JqZWN0OjpnbG9iYWxGcm9udGVuZEZpbHRlcnMoJGMpOwokaXRlbXMgPSB7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19T2JqZWN0Ojpkb1NlbGVjdCgkYyk7CgokdGFncyA9IGFycmF5KCk7CmZvcmVhY2ggKCRpdGVtcyBhcyAkaXRlbSkKewoJaWYgKG1ldGhvZF9leGlzdHMoJGl0ZW0sICdnZXRUYWdzJykpCgl7CQoJCSR0YWdsaW5lID0gJGl0ZW0tPmdldFRhZ3MoaXNzZXQoJHBhcmFtc1snY2xvdWR0eXBlJ10pPyRwYXJhbXNbJ2Nsb3VkdHlwZSddOm51bGwpOwoJCWlmKCFlbXB0eSgkdGFnbGluZSkpCiAgICB7CgkJCSRlbGVtZW50cyA9IGV4cGxvZGUoJywnLCAkdGFnbGluZSk7CgoJCQlmb3JlYWNoICgkZWxlbWVudHMgYXMgJGVsZW1lbnQpCgkJCXsKCQkJCWlmIChpc3NldCgkdGFnc1t0cmltKCRlbGVtZW50KV0pKQoJCQkJewoJCQkJCSR0YWdzW3RyaW0oJGVsZW1lbnQpXSsrOwoJCQkJfQoJCQkJZWxzZQoJCQkJewoJCQkJCSR0YWdzW3RyaW0oJGVsZW1lbnQpXSA9IDE7CgkJCQl9CgkJCX0KCQl9Cgl9CQp9CmFyc29ydCgkdGFncyk7CgppZihpc3NldCgkcGFyYW1zWydsaW1pdCddKSkKewoJaWYgKCRwYXJhbXNbJ2xpbWl0J10gPiAwKQkkdGFncyA9IGFycmF5X3NsaWNlKCR0YWdzLCAwLCAkcGFyYW1zWydsaW1pdCddLCB0cnVlKTsKfQplbHNlCnsJCgkkdGFncyA9IGFycmF5X3NsaWNlKCR0YWdzLCAwLCAxNSwgdHJ1ZSk7Cn0KCi8vIE5vdyBjYWxjdWxhdGUgcGVyY2VudAoKJG1heCA9IG1heCgkdGFncyk7CgokbnRhZ3MgPSBhcnJheSgpOwoKZm9yZWFjaCgkdGFncyBhcyAkdGFnID0+ICRwb3B1bGFyaXR5KQp7CgkkbnRhZ3NbXSA9IGFycmF5KCdjbGFzcycgPT4gZmxvb3IoJHBvcHVsYXJpdHkvJG1heCoxMCksICd0YWcnID0+ICR0YWcsICdwb3B1bGFyaXR5JyA9PiAkcG9wdWxhcml0eSk7Cn0KCmlmICghaXNzZXQoJHBhcmFtc1snbm9zaHVmZmxlJ10pKSBzaHVmZmxlKCRudGFncyk7CgoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0YWdzJywgJG50YWdzKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZvcigndGFnY2xvdWQnLCAkcGFyYW1zKTsKcmV0dXJuOwp7eyoKLy8gCi8vIGlmIChpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZSddKSAmJiAkdGhpcy0+R2V0VGVtcGxhdGUoJHBhcmFtc1sndGVtcGxhdGUnXSkpIHsKLy8gCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgkcGFyYW1zWyd0ZW1wbGF0ZSddKTsKLy8gfSBlbHNlIHsKLy8gCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgnZGlzcGxheV9saXN0Jyk7Ci8vIH0KKn19]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.template.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CiAgCiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdteF9wYXJhbXMnLCAkcGFyYW1zKTsKICAKICBpZihpc3NldCgkcGFyYW1zWydpdGVtJ10pKQogIHsKCSR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbScsICRwYXJhbXNbJ2l0ZW0nXSk7CiAgfQoKICBpZihpc3NldCgkcGFyYW1zWydpdGVtcyddKSkKICB7CgkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2l0ZW1zJywgJHBhcmFtc1snaXRlbXMnXSk7CiAgfQoJCiAgJHBhcmFtc29iaiA9IG5ldyBzdGRDbGFzcygpOwogICRwYXJhbXNvYmotPnBhcmFtcyA9ICRwYXJhbXM7CiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdtY2ZhY3RvcnknLCAkcGFyYW1zb2JqKTsKCiAgaWYgKGlzc2V0KCRwYXJhbXNbJ3RlbXBsYXRlJ10pICYmICR0aGlzLT5HZXRUZW1wbGF0ZSgkcGFyYW1zWyd0ZW1wbGF0ZSddKSkKICB7CiAgICBlY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJHBhcmFtc1sndGVtcGxhdGUnXSk7CiAgfQogIGVsc2UKICB7CiAgCWVjaG8gJzxwPicgLiAkdGhpcy0+bGFuZygndW5rbm93bl90ZW1wbGF0ZScpIC4gJzwvcD4nOwogIH0KICAKPz4=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.template_delete.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKaWYgKCEgJHRoaXMtPkNoZWNrQWNjZXNzKCkpIC8vIFJlc3RyaWN0IHRvIGFkbWluIHBhbmVsIGFuZCB1c2VycyB3aXRoIHBlcm1pc3Npb24KewoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7CglleGl0Owp9CgppZiAoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkgJiYgIWVtcHR5KCRwYXJhbXNbJ3RlbXBsYXRlJ10pKSB7CiAgICAkdGhpcy0+RGVsZXRlVGVtcGxhdGUoJHBhcmFtc1sndGVtcGxhdGUnXSk7CgkJJHRoaXMtPlJlbW92ZURlZmF1bHRUZW1wbGF0ZSgkcGFyYW1zWyd0ZW1wbGF0ZSddKTsKfQoKJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZV90YWInID0+ICd0ZW1wbGF0ZXMnKSk7CmV4aXQ7Cg==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.template_edit.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKaWYgKCEgJHRoaXMtPkNoZWNrQWNjZXNzKCkpIC8vIFJlc3RyaWN0IHRvIGFkbWluIHBhbmVsIGFuZCB1c2VycyB3aXRoIHBlcm1pc3Npb24KewoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7CglleGl0Owp9CgokZm9ybSA9IG5ldyBDTVNGb3JtKCR0aGlzLT5HZXROYW1lKCksICRpZCwgJ3RlbXBsYXRlX2VkaXQnLCRyZXR1cm5pZCk7CiRmb3JtLT5zZXRCdXR0b25zKGFycmF5KCdzdWJtaXQnLCdhcHBseScsJ2NhbmNlbCcpKTsKJGZvcm0tPnNldE1ldGhvZCgncG9zdCcpOwokZm9ybS0+c2V0V2lkZ2V0KCd0ZW1wbGF0ZScsJ3RleHQnLGFycmF5KCd2YWxpZGF0b3JzJyA9PiBhcnJheSgnbm90X2VtcHR5JyA9PiB0cnVlKSkpOwokZm9ybS0+c2V0V2lkZ2V0KCdjb2RlJywgJ2NvZGVhcmVhJyk7CiRmb3JtLT5zZXRXaWRnZXQoJ3Jlc3RvcmVfdGVtcGxhdGVfZnJvbScsICdzZWxlY3QnLCBhcnJheSgndmFsdWVzJyA9PiBhcnJheV9tZXJnZShhcnJheSgnc2VsZWN0JyA9PiAkdGhpcy0+bGFuZygnc2VsZWN0IG9uZScpKSx7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19OjokZnJvbnRlbmRfdGVtcGxhdGVzKSkpOwokZm9ybS0+c2V0V2lkZ2V0KCdkZWZhdWx0X3RlbXBsYXRlX2ZvcicsICdzZWxlY3QnLCBhcnJheSgndmFsdWVzJyA9PiBhcnJheV9tZXJnZShhcnJheSgnc2VsZWN0JyA9PiAkdGhpcy0+bGFuZygnc2VsZWN0IG9uZScpKSx7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19OjokZnJvbnRlbmRfdGVtcGxhdGVzKSkpOwoKaWYgKCEkZm9ybS0+Z2V0V2lkZ2V0KCd0ZW1wbGF0ZScpLT5pc0VtcHR5KCkpCnsKCWlmICgkZm9ybS0+Z2V0V2lkZ2V0KCdjb2RlJyktPmlzRW1wdHkoKSAmJiAhJGZvcm0tPmlzUG9zdGVkKCkpCgl7CgkJJGZvcm0tPmdldFdpZGdldCgnY29kZScpLT5zZXRWYWx1ZXMoJHRoaXMtPmdldFRlbXBsYXRlKCRmb3JtLT5nZXRXaWRnZXQoJ3RlbXBsYXRlJyktPmdldFZhbHVlKCkpKTsKCX0KCQoJJGFjdGlvbiA9ICR0aGlzLT5pc0RlZmF1bHRUZW1wbGF0ZSgkZm9ybS0+Z2V0V2lkZ2V0KCd0ZW1wbGF0ZScpLT5nZXRWYWx1ZSgpKTsKCWlmICgkZm9ybS0+Z2V0V2lkZ2V0KCdkZWZhdWx0X3RlbXBsYXRlX2ZvcicpLT5pc0VtcHR5KCkgJiYgKCRhY3Rpb24gIT09IGZhbHNlKSkKCXsKCQkkZm9ybS0+Z2V0V2lkZ2V0KCdkZWZhdWx0X3RlbXBsYXRlX2ZvcicpLT5zZXRWYWx1ZXMoJGFjdGlvbik7Cgl9Cn0KCmlmICgkZm9ybS0+aXNQb3N0ZWQoKSkKewoJJHJlc3RvcmUgPSAkZm9ybS0+Z2V0V2lkZ2V0KCdyZXN0b3JlX3RlbXBsYXRlX2Zyb20nKS0+Z2V0VmFsdWUoKTsKCWlmICgkcmVzdG9yZSAhPSAnJykKCXsKCQlpZiAoaXNfZmlsZShkaXJuYW1lKF9fRklMRV9fKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAndGVtcGxhdGVzJyAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAnZnJvbnRlbmQuJy4kcmVzdG9yZSAuICcudHBsJykpCgkJewoJCQkkZm9ybS0+Z2V0V2lkZ2V0KCdjb2RlJyktPnNldFZhbHVlcygkdGhpcy0+R2V0VGVtcGxhdGVGcm9tRmlsZSgnZnJvbnRlbmQuJy4kcmVzdG9yZSkpOwoJCQkkZm9ybS0+Z2V0V2lkZ2V0KCdyZXN0b3JlX3RlbXBsYXRlX2Zyb20nKS0+c2V0VmFsdWVzKCcnKTsKCQl9Cgl9CgkKCSRmb3JtLT5wcm9jZXNzKCk7CgkKCWlmKCEkZm9ybS0+aGFzRXJyb3JzKCkpCgl7CgkJCSR0aGlzLT5TZXRUZW1wbGF0ZSgkZm9ybS0+Z2V0V2lkZ2V0KCd0ZW1wbGF0ZScpLT5nZXRWYWx1ZSgpLCAkZm9ybS0+Z2V0V2lkZ2V0KCdjb2RlJyktPmdldFZhbHVlKCkpOwoJCQkKCQkJJGFjdGlvbiA9ICRmb3JtLT5nZXRXaWRnZXQoJ2RlZmF1bHRfdGVtcGxhdGVfZm9yJyktPmdldFZhbHVlKCk7CgoJCQlpZiAoJGFjdGlvbiA9PSAnc2VsZWN0JykKCQkJewoJCQkJJHRoaXMtPlJlbW92ZURlZmF1bHRUZW1wbGF0ZSgkZm9ybS0+Z2V0V2lkZ2V0KCd0ZW1wbGF0ZScpLT5nZXRWYWx1ZSgpKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCQoJCQkJJHRoaXMtPkFkZERlZmF1bHRUZW1wbGF0ZSgkYWN0aW9uLCAkZm9ybS0+Z2V0V2lkZ2V0KCd0ZW1wbGF0ZScpLT5nZXRWYWx1ZSgpKTsKCQkJCSRmb3JtLT5nZXRXaWRnZXQoJ2RlZmF1bHRfdGVtcGxhdGVfZm9yJyktPnNldFZhbHVlcygkYWN0aW9uKTsKCQkJfQoJCQkKCQkJaWYgKCRmb3JtLT5pc1N1Ym1pdHRlZCgpKQoJCQl7CgkJCQkJcmV0dXJuICR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsIGFycmF5KCdhY3RpdmVfdGFiJyA9PiAndGVtcGxhdGVzJykpOwoJCQl9Cgl9Cn0KCmlmICgkZm9ybS0+aXNDYW5jZWxsZWQoKSkKewoJCQlyZXR1cm4gJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZV90YWInID0+ICd0ZW1wbGF0ZXMnKSk7Cn0KCiR0aGlzLT5zbWFydHktPmFzc2lnbignaWQnLCAkaWQpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm0nLCAkZm9ybSk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluLnRlbXBsYXRlX2VkaXQudHBsJyk7]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.updateObjects.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwppZiAoISR0aGlzLT5DaGVja0FjY2VzcygnTWFuYWdlIE1DIEZhY3RvcnknKSkgewoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwp9Cnt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX1PYmplY3Q6OnVwZGF0ZU9iamVjdHMoKTsKJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCk7]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.url_for.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCmlmKGlzc2V0KCRwYXJhbXNbJ21hY3Rpb24nXSkpCnsKCXVuc2V0KCRwYXJhbXNbJ2FjdGlvbiddKTsKCSRhY3Rpb24gPSAkcGFyYW1zWydtYWN0aW9uJ107Cgl1bnNldCgkcGFyYW1zWydtYWN0aW9uJ10pOwoJJGRldGFpbHBhZ2UgPSAkcmV0dXJuaWQ7CglpZiAoaXNzZXQoJHBhcmFtc1snZGV0YWlscGFnZSddKSkgewoJCSAgZ2xvYmFsICRnQ21zOwoJICAgICRtYW5hZ2VyID0gJGdDbXMtPkdldEhpZXJhcmNoeU1hbmFnZXIoKTsKCSAgICAkbm9kZSA9ICRtYW5hZ2VyLT5zdXJlR2V0Tm9kZUJ5QWxpYXMoJHBhcmFtc1snZGV0YWlscGFnZSddKTsKCSAgICBpZiAoJG5vZGUpIHsKCSAgICAgICAgJGNvbnRlbnQgPSAkbm9kZS0+R2V0Q29udGVudCgpOwoJICAgICAgICBpZiAoJGNvbnRlbnQpCgkgICAgICAgIHsKCSAgICAgICAgICAgICRkZXRhaWxwYWdlID0gJGNvbnRlbnQtPklkKCk7CgkgICAgICAgIH0KCSAgICB9IGVsc2UgewoJICAgICAgICAkbm9kZSA9ICRtYW5hZ2VyLT5zdXJlR2V0Tm9kZUJ5SWQoJHBhcmFtc1snZGV0YWlscGFnZSddKTsKCSAgICAgICAgaWYgKCRub2RlKSB7CgkgICAgICAgICAgICAkZGV0YWlscGFnZSA9ICRwYXJhbXNbJ2RldGFpbHBhZ2UnXTsKCSAgICAgICAgfQoJICAgIH0KCSAgICAkcGFyYW1zWydvcmlnaWQnXSA9ICRyZXR1cm5pZDsKCX0KCXVuc2V0KCRwYXJhbXNbJ2RldGFpbHBhZ2UnXSk7CQoJdW5zZXQoJHBhcmFtc1snYXNzaWduJ10pOwkKCXVuc2V0KCRwYXJhbXNbJ29yaWdpZCddKTsJCgkKCWlmKGlzc2V0KCRwYXJhbXNbJ2NsZWFuX2VtcHR5X3ZhbHVlcyddKSkKCXsKCQlmb3JlYWNoKCRwYXJhbXMgYXMgJGtleSA9PiAkdmFsdWUpCgkJewoJCQlpZiAoZW1wdHkoJHZhbHVlKSkKCQkJewoJCQkJdW5zZXQoJHBhcmFtc1ska2V5XSk7CgkJCX0KCQl9CgkJdW5zZXQoJHBhcmFtc1snY2xlYW5fZW1wdHlfdmFsdWVzJ10pOwoJfQoJCgllY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwkYWN0aW9uLCRkZXRhaWxwYWdlLCcnLCRwYXJhbXMsJycsdHJ1ZSxmYWxzZSwnJyxmYWxzZSk7Cn0KcmV0dXJuOw==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/action.user_form.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgovKgoJVGhpcyBhbGxvd3MgRnJvbnRlbmQgRm9ybXMgZm9yIHRoZSBtb2R1bGUKKi8KaWYgKCF7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19T2JqZWN0OjpjaGVja1Blcm1pc3Npb25zKCRwYXJhbXMpKQp7CgllY2hvICR0aGlzLT5sYW5nKCd5b3UgZG8gbm90IGhhdmUgdGhlIHBlcm1pc3Npb24gdG8gdXNlIHRoaXMgYWN0aW9uJyk7CglleGl0Owp9CmlmIChpc19vYmplY3QoJGdDbXMtPm1vZHVsZXNbJ0NNU1VzZXJzJ11bJ29iamVjdCddKSkgLy8gT25seSB3b3JrIHdpdGggQ01TVXNlcnMgZm9yIG5vdy4uLgp7CgkkdXNlciA9IENNU1VzZXJzOjpnZXRVc2VyT3JMb2dpbigpOwoJCglpZiAoaXNzZXQoJHBhcmFtc1snaXRlbV9pZCddKSAmJiAhZW1wdHkoJHBhcmFtc1snaXRlbV9pZCddKSkgewoJCSRpdGVtID0ge3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fU9iamVjdDo6Z2V0QnlJZCgkcGFyYW1zWydpdGVtX2lkJ10pOwoJCWlmICgkaXRlbS0+dXNlcl9pZCAhPSAkdXNlci0+Z2V0SWQoKSkKCQl7CgkJCXVuc2V0KCRpdGVtKTsKCQl9CgkJaWYoaXNfbnVsbCgkaXRlbSkpCgkJewoJCQl1bnNldCgkaXRlbSk7CgkJfQoJfSAJCglpZiAoIWlzc2V0KCRpdGVtKSkKCSB7CgkJJGl0ZW0gPSBuZXcge3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fU9iamVjdCgpOwoJCSRpdGVtLT5zZXRVc2VySWQoJHVzZXItPmdldElkKCkpOwoJfQoJCgkvLyBUaGUgZm9ybQoJCgkkZm9ybSA9IG5ldyBDTVNGb3JtKCR0aGlzLT5HZXROYW1lKCksICRpZCwgJ3VzZXJfZm9ybScsICRyZXR1cm5pZCk7CgkkZm9ybS0+c2V0V2lkZ2V0KCdpdGVtX2lkJywgJ2hpZGRlbicsIGFycmF5KCdvYmplY3QnID0+ICYkaXRlbSwgJ2ZpZWxkX25hbWUnID0+ICdpZCcpKTsJCgkkZm9ybS0+c2V0V2lkZ2V0KCd0aXRsZScsICd0ZXh0JywgYXJyYXkoJ29iamVjdCcgPT4gJiRpdGVtKSk7CQoJJGZvcm0tPnNldE11bHRpcGFydEZvcm0oKTsKCQoJCnt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX1WaWV3czo6Y3JlYXRlRm9ybSgkdGhpcywmJGZvcm0sJiRpdGVtKTsKCgppZiAoJGZvcm0tPmlzUG9zdGVkKCkpCnsKCQoJJGZvcm0tPnByb2Nlc3MoKTsKCWlmKCRmb3JtLT5ub0Vycm9yKCkpCgl7CgkJJGl0ZW0tPnNhdmUoYXJyYXkoJ2Zyb250ZW5kJyA9PiB0cnVlKSk7CgkJJGl0ZW0tPnVzZXJQb3N0QWN0aW9ucygkaWQsJHJldHVybmlkKTsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2l0ZW0nLCAkaXRlbSk7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdWNjZXNzX21lc3NhZ2UnLCAkdGhpcy0+bGFuZygnaXRlbSBwb3N0ZWQnKSk7CgkJZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRm9yKCd1c2VyX2Zvcm1fc3VjY2VzcycpOwoJCXJldHVybjsKCX0KfQoKCiR0aGlzLT5zbWFydHktPmFzc2lnbignZm9ybScsICRmb3JtKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZUZvcigndXNlcl9mb3JtJywgJHBhcmFtcyk7Cn0=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/classes/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/smarty/templates/classes/MCFModuleObject.class.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX1PYmplY3QgZXh0ZW5kcyB7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19T2JqZWN0QmFzZSB7Cgp7eyRtb2R1bGUtPmdldE1vZHVsZUxvZ2ljKCl9fQoKfQoKPz4=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/classes/MCFModuleObjectBase.class.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKZ2xvYmFsICRnQ21zOwokY29uZmlnID0gJGdDbXMtPmdldENvbmZpZygpOwpyZXF1aXJlX29uY2UoY21zX2pvaW5fcGF0aCgkY29uZmlnWydyb290X3BhdGgnXSwgJ2xpYicsICdjbGFzc2VzJywgJ21vZHVsZV9zdXBwb3J0JywgJ21vZHRlbXBsYXRlcy5pbmMucGhwJykpOwoKY2xhc3Mge3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fU9iamVjdEJhc2UgewoKCgkvLyBORVcgV0FZIAoJcHJvdGVjdGVkICRpZDsKCXByb3RlY3RlZCAkdXNlcl9pZDsKCXByb3RlY3RlZCAkY3JlYXRlZF9hdDsKCXByb3RlY3RlZCAkY3JlYXRlZF9ieTsKCXByb3RlY3RlZCAkdXBkYXRlZF9hdDsKCXByb3RlY3RlZCAkdXBkYXRlZF9ieTsKCXByb3RlY3RlZCAkdmFycyA9IGFycmF5KCk7Cglwcm90ZWN0ZWQgJGlzX21vZGlmaWVkID0gZmFsc2U7CgkKCWNvbnN0IE1PRFVMRV9OQU1FID0gJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nOwoJY29uc3QgREJfTkFNRSA9ICdtb2R1bGVfe3skdGFibGVfbmFtZX19JzsKCWNvbnN0IERCX0lURU0gPSAne3skdGFibGVfbmFtZX19JzsKCWNvbnN0IFVQTE9BRFNfUkVMQVRJVkVfVVJMID0gJy91cGxvYWRzL01vZHVsZXMve3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fSc7CgkKCXByb3RlY3RlZCBzdGF0aWMgJGZpZWxkcyA9IGFycmF5KAoJCSd0aXRsZScsCgkJJ3BhcmVudF9pZCcsCgkJJ3BhcmVudF9pdGVtJywKCQknb3JkZXJfYnknLAoJCSdwdWJsaXNoZWQnLAoJe3tmb3JlYWNoIGZyb209JGV4dHJhX2ZpZWxkcyBpdGVtPWZpZWxkfX0KCQkne3skZmllbGQubmFtZX19JywKCXt7L2ZvcmVhY2h9fQoJCSdmdWxsX3RleHRfc2VhcmNoJwoJKTsKCQoJcHVibGljIGZ1bmN0aW9uIF9fc2V0KCR2YXIsICR2YWwpCgl7CgkJCSR0aGlzLT5pc19tb2RpZmllZCA9IHRydWU7CiAgICAgICR0aGlzLT52YXJzWyR2YXJdID0gJHZhbDsKICB9CgogIHB1YmxpYyBmdW5jdGlvbiBfX2dldCgkdmFyKQoJewoJCXRyeQoJCXsKCQkJaWYobWV0aG9kX2V4aXN0cygkdGhpcywgJHZhcikpCgkJCXsKCQkJCXJldHVybiAkdGhpcy0+JHZhcigpOwoJCQl9CgkgICAgZWxzZWlmIChhcnJheV9rZXlfZXhpc3RzKCR2YXIsICR0aGlzLT52YXJzKSkKCQkJewoJICAgIAlyZXR1cm4gJHRoaXMtPnZhcnNbJHZhcl07CgkgICAgfSAKCQkJZWxzZSAKCQkJewoJICAgIAkvL3Rocm93IG5ldyBFeGNlcHRpb24oIlByb3BlcnR5ICR2YXIgZG9lcyBub3QgZXhpc3QiKTsKCSAgICB9CgkJfQoJCWNhdGNoKEV4Y2VwdGlvbiAkZSkKCQl7CgkJCWVjaG8gJ0Vycm9yOiAnLCAgJGUtPmdldE1lc3NhZ2UoKSwgIlxuIjsKCQl9CiAgfQoKCQlwdWJsaWMgZnVuY3Rpb24gc2V0KCRuYW1lLCAkdmFsdWUpIHsKCQkJaWYgKCR0aGlzLT4kbmFtZSAhPSAkdmFsdWUpIHsKCQkJCSR0aGlzLT5fX3NldCgkbmFtZSwgJHZhbHVlKTsKCQkJfQoJCX0KCgkJcHVibGljIGZ1bmN0aW9uIGdldCgkbmFtZSkgCgkJewoJCQkvLyBERVBSRUNBVEVECgkJCXJldHVybiAkdGhpcy0+X19nZXQoJG5hbWUpOwoJCX0KCglwdWJsaWMgZnVuY3Rpb24gX190b1N0cmluZygpCgl7CgkJcmV0dXJuIChzdHJpbmcpJHRoaXMtPnRpdGxlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRJZCgpIHsKCQlyZXR1cm4gJHRoaXMtPmlkOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gc2V0SWQoJHZhbHVlKSB7CgkJJHRoaXMtPmlzX21vZGlmaWVkID0gdHJ1ZTsKCQkkdGhpcy0+aWQgPSAkdmFsdWU7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBnZXRVc2VySWQoKSB7CgkJcmV0dXJuICR0aGlzLT51c2VyX2lkOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gc2V0VXNlcklkKCR2YWx1ZSkgewoJCSR0aGlzLT5pc19tb2RpZmllZCA9IHRydWU7CgkJJHRoaXMtPnVzZXJfaWQgPSAkdmFsdWU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldFVzZXIoKQoJewoJCXJldHVybiBDTVNVc2VyOjpyZXRyaWV2ZUJ5UGsoJHRoaXMtPnVzZXJfaWQpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBmdWxsX3RleHRfc2VhcmNoKCkKCXsKCQkkdGV4dCA9ICR0aGlzLT50aXRsZTsKCQl7e2ZvcmVhY2ggZnJvbT0kZXh0cmFfZmllbGRzIGl0ZW09ZmllbGR9fQoJCXt7aWYgJGZpZWxkLnR5cGUgPT0gJ3RleHRhcmVhJyB8fCAkZmllbGQudHlwZSA9PSAndGV4dCcgfHwgJGZpZWxkLnR5cGUgPT0gJ3RleHRhcmVhX3BsYWluJ319CgkJJHRleHQgLj0gJyAnIC4gJHRoaXMtPnt7JGZpZWxkLm5hbWV9fTsKCQl7ey9pZn19e3svZm9yZWFjaH19CgkJcmV0dXJuICR0ZXh0OwoJfQoKCgkvLyBPTEQgV0FZCgkKCglwdWJsaWMgZnVuY3Rpb24gZ2V0UGFyZW50SWQoKSB7CgkJcmV0dXJuICR0aGlzLT5wYXJlbnRfaWQ7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldFRpdGxlKCkgewoJCXJldHVybiAkdGhpcy0+dGl0bGU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldENyZWF0ZWRBdCgpIHsKCQlyZXR1cm4gJHRoaXMtPmNyZWF0ZWRfYXQ7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldENyZWF0ZWRCeSgpIHsKCQlyZXR1cm4gJHRoaXMtPmNyZWF0ZWRfYnk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldFVwZGF0ZWRBdCgpIHsKCQlyZXR1cm4gJHRoaXMtPnVwZGF0ZWRfYXQ7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldFVwZGF0ZWRCeSgpIHsKCQlyZXR1cm4gJHRoaXMtPnVwZGF0ZWRfYnk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldE9yZGVyQnkoKSB7CgkJcmV0dXJuICR0aGlzLT5vcmRlcl9ieTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0UGFyZW50SXRlbSgpIHsKCQlyZXR1cm4gJHRoaXMtPnBhcmVudF9pdGVtOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRQdWJsaXNoZWQoKSB7CgkJcmV0dXJuICR0aGlzLT5wdWJsaXNoZWQ7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGdldENvcmVTbHVnKCkKCXsKCQlyZXR1cm4gJHRoaXMtPnRpdGxlOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gZ2V0RnVsbFRleHRTZWFyY2goKQoJewoJCXJldHVybiAkdGhpcy0+ZnVsbF90ZXh0X3NlYXJjaCgpOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gc2V0UGFyZW50SWQoJHZhbHVlKSB7CgkJJHRoaXMtPl9fc2V0KCdwYXJlbnRfaWQnLCAkdmFsdWUpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRUaXRsZSgkdmFsdWUpIHsKCQkkdGhpcy0+X19zZXQoJ3RpdGxlJywgJHZhbHVlKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0Q3JlYXRlZEF0KCR2YWx1ZSkgewoJCSR0aGlzLT5jcmVhdGVkX2F0ID0gJHZhbHVlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRDcmVhdGVkQnkoJHZhbHVlKSB7CgkJJHRoaXMtPmNyZWF0ZWRfYnkgPSAkdmFsdWU7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIHNldFVwZGF0ZWRBdCgkdmFsdWUpIHsKCQkkdGhpcy0+dXBkYXRlZF9hdCA9ICR2YWx1ZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gc2V0VXBkYXRlZEJ5KCR2YWx1ZSkgewoJCSR0aGlzLT51cGRhdGVkX2J5ID0gJHZhbHVlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRPcmRlckJ5KCR2YWx1ZSkgewoJCSR0aGlzLT5fX3NldCgnb3JkZXJfYnknLCAkdmFsdWUpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRQYXJlbnRJdGVtKCR2YWx1ZSkgewoJCSR0aGlzLT5fX3NldCgncGFyZW50X2l0ZW0nLCAkdmFsdWUpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBzZXRQdWJsaXNoZWQoJHZhbHVlKSB7CgkJJHRoaXMtPl9fc2V0KCdwdWJsaXNoZWQnLCAkdmFsdWUpOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gc2V0RnVsbFRleHRTZWFyY2goJHZhbHVlKQoJewoJCSR0aGlzLT5fX3NldCgnZnVsbF90ZXh0X3NlYXJjaCcsICR2YWx1ZSk7Cgl9CgoKCXt7Zm9yZWFjaCBmcm9tPSRleHRyYV9maWVsZHMgaXRlbT1maWVsZH19CgoJcHVibGljIGZ1bmN0aW9uIGdldHt7JGZpZWxkLmNhbWVsY2FzZX19KCRwYXJzZSA9IHt7aWYgJGZpZWxkLnR5cGUgPT0gJ3RleHRhcmVhJ319dHJ1ZXt7ZWxzZX19ZmFsc2V7ey9pZn19KSB7CgkgICAgaWYgKCRwYXJzZSkgewoJICAgICAgICByZXR1cm4gY21zX21vZHVsZV9Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YShuZXcgc3RkQ2xhc3MoKSwgJHRoaXMtPnt7JGZpZWxkLm5hbWV9fSk7CgkgICAgfQoJICAgIHJldHVybiAkdGhpcy0+e3skZmllbGQubmFtZX19OwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gc2V0e3skZmllbGQuY2FtZWxjYXNlfX0oJHZhbHVlKSB7CgkJe3tpZiAkZmllbGQudHlwZSA9PSAnZGF0ZSd9fQoJCWlmIChpc19hcnJheSgkdmFsdWUpKSB7CgkJCWlmIChhcnJheV9rZXlfZXhpc3RzKCd5ZWFyJykpCgkJCXsJCQkJCgkJCQkkdmFsdWUgPSAkdmFsdWVbJ3llYXInXSAuICctJyAuICR2YWx1ZVsnbW9udGgnXSAuICctJyAuICR2YWx1ZVsnZGF5J107CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkdmFsdWUgPSAkdmFsdWVbJzAnXSAuICctJyAuICR2YWx1ZVsnMSddIC4gJy0nIC4gJHZhbHVlWycyJ107CgkJCX0KCQl9CgkJJHZhbHVlID0gc3RyX3JlcGxhY2UoJ3wnLCctJyxzdHJfcmVwbGFjZSgnLycsJy0nLCR2YWx1ZSkpOwoJCXt7L2lmfX0KCQkkdGhpcy0+X19zZXQoJ3t7JGZpZWxkLm5hbWV9fScsICR2YWx1ZSk7Cgl9CgkKCXt7aWYgJGZpZWxkLmZvcm1fdHlwZSA9PSAnbW9kdWxlJ319Cgl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy5tdWx0aXBsZSl9fQoJcHVibGljIGZ1bmN0aW9uIGdldHt7JGZpZWxkLmNhbWVsY2FzZX19SXRlbXMoKQoJewoJCSRjID0gbmV3IE1DRkNyaXRlcmlhKCk7CgkJJGMtPmFkZCgnaWQnLCBleHBsb2RlKCd8fHwnLCAkdGhpcy0+e3skZmllbGQubmFtZX19KSwgTUNGQ3JpdGVyaWE6OklOKTsKCQlyZXR1cm4ge3skZmllbGQuZm9wdGlvbnMubW9kdWxlX25hbWV9fU9iamVjdDo6ZG9TZWxlY3QoJGMpOwoJfQoJe3tlbHNlfX0KCXB1YmxpYyBmdW5jdGlvbiBnZXR7eyRmaWVsZC5jYW1lbGNhc2V9fU9iamVjdCgpCgl7CgkJcmV0dXJuIHt7JGZpZWxkLmZvcHRpb25zLm1vZHVsZV9uYW1lfX1PYmplY3Q6OmdldEJ5SWQoJHRoaXMtPnt7JGZpZWxkLm5hbWV9fSk7Cgl9Cgl7ey9pZn19Cgl7ey9pZn19CgkKCXt7aWYgJGZpZWxkLmZvcm1fdHlwZSA9PSAnc2VsZWN0J319Cgl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy5tdWx0aXBsZSl9fQoJcHVibGljIGZ1bmN0aW9uIGdldHt7JGZpZWxkLmNhbWVsY2FzZX19VmFsdWVzKCkKCXsKCQkkdmFsdWVzID0gZXhwbG9kZSgnfHx8JywgJHRoaXMtPnt7JGZpZWxkLm5hbWV9fSk7CgkJJGxhYmVscyA9IHt7JGZpZWxkLnNlbGVjdF9vcHRpb25zfX07CgkJJGl0ZW1zID0gYXJyYXkoKTsKCQlmb3JlYWNoKCR2YWx1ZXMgYXMgJHZhbHVlKQoJCXsKCQkJaWYoaXNzZXQoJGxhYmVsc1skdmFsdWVdKSkJJGl0ZW1zWyR2YWx1ZV0gPSAkbGFiZWxzWyR2YWx1ZV07CgkJfQoJCXJldHVybiAkaXRlbXM7Cgl9Cgl7e2Vsc2V9fQoJCQlwdWJsaWMgZnVuY3Rpb24gZ2V0e3skZmllbGQuY2FtZWxjYXNlfX1WYWx1ZSgpCgkJCXsKCQkJCSR2YWx1ZXMgPSB7eyRmaWVsZC5zZWxlY3Rfb3B0aW9uc319OwoJCQkJaWYoaXNzZXQoJHZhbHVlc1skdGhpcy0+e3skZmllbGQubmFtZX19XSkpCXJldHVybiAkdmFsdWVzWyR0aGlzLT57eyRmaWVsZC5uYW1lfX1dOwoJCQkJcmV0dXJuIG51bGw7CgkJCX0KCXt7L2lmfX0KCXt7L2lmfX0KCQkKCXt7aWYgJGZpZWxkLmZvcm1fdHlwZSA9PSAnZ3JvdXAnfX0KCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLm11bHRpcGxlKX19CglwdWJsaWMgZnVuY3Rpb24gZ2V0e3skZmllbGQuY2FtZWxjYXNlfX1WYWx1ZXMoKQoJewoJCSR2YWx1ZXMgPSBleHBsb2RlKCd8fHwnLCAkdGhpcy0+e3skZmllbGQubmFtZX19KTsKCQkkaXRlbXMgPSBhcnJheSgpOwoJCWZvcmVhY2goJHZhbHVlcyBhcyAkdmFsdWUpCgkJewoJCQkkaXRlbXNbJHZhbHVlXSA9IChzdHJpbmcpQ01TR3JvdXA6OnJldHJpZXZlQnlQaygkdmFsdWUpOwoJCX0KCQlyZXR1cm4gJGl0ZW1zOwoJfQoJe3tlbHNlfX0KCQkJcHVibGljIGZ1bmN0aW9uIGdldHt7JGZpZWxkLmNhbWVsY2FzZX19VmFsdWUoKQoJCQl7CgkJCQlyZXR1cm4gKHN0cmluZylDTVNHcm91cDo6cmV0cmlldmVCeVBrKCR0aGlzLT57eyRmaWVsZC5uYW1lfX0pOwoJCQl9Cgl7ey9pZn19Cgl7ey9pZn19CQoJCgl7e2lmICRmaWVsZC5mb3JtX3R5cGUgPT0gJ3VzZXInfX0KCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLm11bHRpcGxlKX19CglwdWJsaWMgZnVuY3Rpb24gZ2V0e3skZmllbGQuY2FtZWxjYXNlfX1WYWx1ZXMoKQoJewoJCSR2YWx1ZXMgPSBleHBsb2RlKCd8fHwnLCAkdGhpcy0+e3skZmllbGQubmFtZX19KTsKCQkkaXRlbXMgPSBhcnJheSgpOwoJCWZvcmVhY2goJHZhbHVlcyBhcyAkdmFsdWUpCgkJewoJCQkkaXRlbXNbJHZhbHVlXSA9IChzdHJpbmcpQ01TVXNlcjo6Z2V0VXNlck5hbWVCeUlkKCR2YWx1ZSk7CgkJfQoJCXJldHVybiAkaXRlbXM7Cgl9Cgl7e2Vsc2V9fQoJCQlwdWJsaWMgZnVuY3Rpb24gZ2V0e3skZmllbGQuY2FtZWxjYXNlfX1WYWx1ZSgpCgkJCXsKCQkJCXJldHVybiAoc3RyaW5nKUNNU1VzZXI6OmdldFVzZXJOYW1lQnlJZCgkdGhpcy0+e3skZmllbGQubmFtZX19KTsKCQkJfQoJe3svaWZ9fQoJe3svaWZ9fQoJCgl7e2lmICRmaWVsZC5mb3JtX3R5cGUgPT0gJ2ZpbGUnfX0KCXB1YmxpYyBmdW5jdGlvbiBnZXR7eyRmaWVsZC5jYW1lbGNhc2V9fVNpemUoJHJlYWRhYmxlID0gdHJ1ZSkKCXsKCQkkZmlsZSA9IHNlbGY6OmdldEZpbGVzUGF0aCgpIC5ESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHRoaXMtPnt7JGZpZWxkLm5hbWV9fTsJCQkJCgkgCXJldHVybiBNWF9Eb2N1bWVudDo6Z2V0RmlsZVNpemUoJGZpbGUsICRyZWFkYWJsZSk7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBnZXR7eyRmaWVsZC5jYW1lbGNhc2V9fUljb24oJGljb25fdHlwZSA9ICdzbWFsbCcpCgl7CgkJJGZpbGUgPSBzZWxmOjpnZXRGaWxlc1BhdGgoKSAuRElSRUNUT1JZX1NFUEFSQVRPUiAuICR0aGlzLT57eyRmaWVsZC5uYW1lfX07CQkJCQoJCXJldHVybiBNWF9Eb2N1bWVudDo6Z2V0RmlsZUljb24oJGZpbGUsICRpY29uX3R5cGUpOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gZ2V0e3skZmllbGQuY2FtZWxjYXNlfX1FeHQoKQoJewoJCS8vIGxpc3QoJGV4dCwgJGRpdmVycykgPSBhcnJheV9yZXZlcnNlKGV4cGxvZGUoJy4nLCR0aGlzLT57eyRmaWVsZC5uYW1lfX0pKTsJCgkJLy8gcmV0dXJuICRleHQ7CgkJcmV0dXJuIGVuZChleHBsb2RlKCcuJywkdGhpcy0+e3skZmllbGQubmFtZX19KSk7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBnZXR7eyRmaWVsZC5jYW1lbGNhc2V9fVVybCgkaWQpCgl7CgkJLy8gbGlzdCgkZXh0LCAkZGl2ZXJzKSA9IGFycmF5X3JldmVyc2UoZXhwbG9kZSgnLicsJHRoaXMtPnt7JGZpZWxkLm5hbWV9fSkpOwkKCQkvLyByZXR1cm4gJGV4dDsKCQkkcHJldHR5dXJsID0gJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfGxvd2VyfX0vZG93bmxvYWQvJy4kdGhpcy0+Z2V0SWQoKS4nL3t7JGZpZWxkLm5hbWV9fS8nLnNlbGY6OnJldHJpZXZlRmlsZW5hbWUoJHRoaXMtPmdldHt7JGZpZWxkLmNhbWVsY2FzZX19KCkpOwoJCWdsb2JhbCAkZ0NtczsKCQlyZXR1cm4gJGdDbXMtPm1vZHVsZXNbJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nXVsnb2JqZWN0J10tPkNyZWF0ZUxpbmsoJGlkLCdkb3dubG9hZCcsJycsJycsYXJyYXkoJ2l0ZW1faWQnID0+ICR0aGlzLT5nZXRJZCgpLCAnZmllbGQnID0+ICd7eyRmaWVsZC5uYW1lfX0nKSwnJyx0cnVlLGZhbHNlLCcnLGZhbHNlLCRwcmV0dHl1cmwpOwovLwkJcmV0dXJuOwoJfQoJCgl7e2lmICgkZmllbGQudHlwZSA9PSAnaW1hZ2UnKSAmJiAkZmllbGQuaW1hZ2Vfd2lkdGggJiYgJGZpZWxkLmltYWdlX2hlaWdodH19CglwdWJsaWMgZnVuY3Rpb24gZ2V0e3skZmllbGQuY2FtZWxjYXNlfX1PcmlnaW5hbFBpY3R1cmUoKQoJewoJCXJldHVybiBzdHJfcmVwbGFjZSgne3skZmllbGQuaW1hZ2Vfd2lkdGh9fV97eyRmaWVsZC5pbWFnZV9oZWlnaHR9fV8nLCAnJywgJHRoaXMtPmdldHt7JGZpZWxkLmNhbWVsY2FzZX19KCkpOwoJfQkKCXB1YmxpYyBmdW5jdGlvbiBnZXR7eyRmaWVsZC5jYW1lbGNhc2V9fU9yaWdpbmFsUGljdHVyZVVybCgpCgl7CgkJLy8gVE9ETzogUmV0dXJuIHNvbWV0aGluZwoJCS8vcmV0dXJuIHN0cl9yZXBsYWNlKCd7eyRmaWVsZC5pbWFnZV93aWR0aH19X3t7JGZpZWxkLmltYWdlX2hlaWdodH19XycsICcnLCAkdGhpcy0+Z2V0e3skZmllbGQuY2FtZWxjYXNlfX0oKSk7Cgl9CgkKCXByb3RlY3RlZCBmdW5jdGlvbiBjcmVhdGVSZXNpemVkSW1hZ2VGb3J7eyRmaWVsZC5jYW1lbGNhc2V9fSgkZmlsZW5hbWUpCgl7CgkJJGRlc3RpbmF0aW9uID0gc2VsZjo6Z2V0RmlsZXNGdWxsUGF0aCgpIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRmaWxlbmFtZTsKCQkKCQlsaXN0KCRpbWFnZV93aWR0aCwgJGltYWdlX2hlaWdodCwgJGltYWdlX3R5cGUpID0gZ2V0aW1hZ2VzaXplKCRkZXN0aW5hdGlvbik7CgkJc3dpdGNoICgkaW1hZ2VfdHlwZSkgCgkJewoJCQljYXNlIElNQUdFVFlQRV9HSUY6CgkJCQkkaW1nID0gaW1hZ2VjcmVhdGVmcm9tZ2lmKCRkZXN0aW5hdGlvbik7CgkJCQlicmVhazsKCQkJY2FzZSBJTUFHRVRZUEVfSlBFRzoKCQkJCSRpbWcgPSBpbWFnZWNyZWF0ZWZyb21qcGVnKCRkZXN0aW5hdGlvbik7CgkJCQlicmVhazsKCQkJY2FzZSBJTUFHRVRZUEVfUE5HOgoJCQkJJGltZyA9IGltYWdlY3JlYXRlZnJvbXBuZygkZGVzdGluYXRpb24pOwoJCQkJYnJlYWs7CgkJfQoJCQkKCQkkZmFjdG9yID0gbWF4KCRpbWFnZV93aWR0aCAvIHt7JGZpZWxkLmltYWdlX3dpZHRofX0sICRpbWFnZV9oZWlnaHQgLyB7eyRmaWVsZC5pbWFnZV9oZWlnaHR9fSk7CgkJJG5ld193aWR0aCA9IG1pbihyb3VuZCgkaW1hZ2Vfd2lkdGggLyAkZmFjdG9yKSwgJGltYWdlX3dpZHRoKTsKCQkkbmV3X2hlaWdodCA9IG1pbihyb3VuZCgkaW1hZ2VfaGVpZ2h0IC8gJGZhY3RvciksICRpbWFnZV9oZWlnaHQpOwoJCSRuZXdfaW1nID0gaW1hZ2VjcmVhdGV0cnVlY29sb3IoJG5ld193aWR0aCwgJG5ld19oZWlnaHQpOwoJCWltYWdlY29weXJlc2FtcGxlZCgkbmV3X2ltZywgJGltZywgMCwgMCwgMCwgMCwgJG5ld193aWR0aCwgJG5ld19oZWlnaHQsICRpbWFnZV93aWR0aCwgJGltYWdlX2hlaWdodCk7CgkJc3dpdGNoICgkaW1hZ2VfdHlwZSkgewoJCQljYXNlIElNQUdFVFlQRV9HSUY6CgkJCQlpbWFnZWdpZigkbmV3X2ltZywgc2VsZjo6Z2V0RmlsZXNGdWxsUGF0aCgpIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICd7eyRmaWVsZC5pbWFnZV93aWR0aH19X3t7JGZpZWxkLmltYWdlX2hlaWdodH19XycgLiAkZmlsZW5hbWUpOwoJCQkJYnJlYWs7CgkJCWNhc2UgSU1BR0VUWVBFX0pQRUc6CgkJCQlpbWFnZWpwZWcoJG5ld19pbWcsIHNlbGY6OmdldEZpbGVzRnVsbFBhdGgoKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAne3skZmllbGQuaW1hZ2Vfd2lkdGh9fV97eyRmaWVsZC5pbWFnZV9oZWlnaHR9fV8nIC4gJGZpbGVuYW1lKTsKCQkJCWJyZWFrOwoJCQljYXNlIElNQUdFVFlQRV9QTkc6CgkJCQlpbWFnZXBuZygkbmV3X2ltZywgc2VsZjo6Z2V0RmlsZXNGdWxsUGF0aCgpIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICd7eyRmaWVsZC5pbWFnZV93aWR0aH19X3t7JGZpZWxkLmltYWdlX2hlaWdodH19XycgLiAkZmlsZW5hbWUpOwoJCQkJYnJlYWs7CgkJfQoJCXJldHVybiBzZWxmOjpVUExPQURTX1JFTEFUSVZFX1VSTCAuICcvJyAuICd7eyRmaWVsZC5pbWFnZV93aWR0aH19X3t7JGZpZWxkLmltYWdlX2hlaWdodH19XycgLiAkZmlsZW5hbWU7Cgl9Cgl7ey9pZn19CgkKCXB1YmxpYyBmdW5jdGlvbiB1cGxvYWR7eyRmaWVsZC5jYW1lbGNhc2V9fSgkaWQpCgl7CgkJaWYgKGlzc2V0KCRfRklMRVNbJGlkLid7eyRmaWVsZC5uYW1lfX0nXSkgJiYgKCRfRklMRVNbJGlkLid7eyRmaWVsZC5uYW1lfX0nXVsnc2l6ZSddID4gMCkpIAoJCXsKCQkJJGZpbGVuYW1lID0gc2VsZjo6Y2hlY2tGaWxlbmFtZSgkX0ZJTEVTWyRpZC4ne3skZmllbGQubmFtZX19J10pOwoJCQkKCQkJaWYgKG1vdmVfdXBsb2FkZWRfZmlsZSgkX0ZJTEVTWyRpZC4ne3skZmllbGQubmFtZX19J11bJ3RtcF9uYW1lJ10sIHNlbGY6OmdldEZpbGVzRnVsbFBhdGgoKSAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAkZmlsZW5hbWUpKSB7CgkJCQkkZmlsZSA9IHNlbGY6OlVQTE9BRFNfUkVMQVRJVkVfVVJMIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRmaWxlbmFtZTsKCQkJCQoJCQkJe3tpZiAoJGZpZWxkLnR5cGUgPT0gJ2ltYWdlJykgJiYgJGZpZWxkLmltYWdlX3dpZHRoICYmICRmaWVsZC5pbWFnZV9oZWlnaHR9fQoJCQkJJGZpbGUgPSAkdGhpcy0+Y3JlYXRlUmVzaXplZEltYWdlRm9ye3skZmllbGQuY2FtZWxjYXNlfX0oJGZpbGVuYW1lKTsKCQkJCXt7L2lmfX0KCQkJfQkJCgkJCgkJCSR0aGlzLT5kZWxldGV7eyRmaWVsZC5jYW1lbGNhc2V9fSgpOwoJCQkkdGhpcy0+c2V0e3skZmllbGQuY2FtZWxjYXNlfX0oJGZpbGUpOwoJCX0KCX0KCQoJcHVibGljIGZ1bmN0aW9uIGRvd25sb2Fke3skZmllbGQuY2FtZWxjYXNlfX0oKQoJewoJCSRmaWxlID0gc2VsZjo6Z2V0RmlsZXNQYXRoKCkgLiBzdHJfcmVwbGFjZSgnLycsIERJUkVDVE9SWV9TRVBBUkFUT1IsICR0aGlzLT5nZXR7eyRmaWVsZC5jYW1lbGNhc2V9fSgpKTsKCQlpZihpc19maWxlKCRmaWxlKSkKCQl7CgkJCS8vJHBhdGhpbmZvID0gcGF0aGluZm8oJGZpbGUpOwkJCQoJCQloZWFkZXIoIkNvbnRlbnQtTGVuZ3RoOiAiLmZpbGVzaXplKCRmaWxlKSk7CgkJCWhlYWRlcignQ29udGVudC10eXBlOiAnIC4gc2VsZjo6Z2V0TWltZVR5cGUoJGZpbGUpKTsKCQkJaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmU7IGZpbGVuYW1lPSInIC4gc2VsZjo6cmV0cmlldmVGaWxlbmFtZSgkdGhpcy0+Z2V0e3skZmllbGQuY2FtZWxjYXNlfX0oKSkgLiAnIicpOwoJCQllY2hvIGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlKTsKCQl9CgkJZWxzZQoJCXsJCQkKCQkJaGVhZGVyKCJIVFRQLzEuMCA0MDQgTm90IEZvdW5kIik7CgkJfQoJCWV4aXQ7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGRlbGV0ZXt7JGZpZWxkLmNhbWVsY2FzZX19KCkKCXsKCQlpZigkdGhpcy0+Z2V0e3skZmllbGQuY2FtZWxjYXNlfX0oKSAhPSAnJykKCQl7CgkJCWRlYnVnX2Rpc3BsYXkoJ0RlbGV0aW5nIGZpbGUge3skZmllbGQuY2FtZWxjYXNlfX0gLSAnLnNlbGY6OmdldEZpbGVzUGF0aCgpIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICR0aGlzLT5nZXR7eyRmaWVsZC5jYW1lbGNhc2V9fSgpKTsKCQkKCQkJaWYgKGlzX2ZpbGUoc2VsZjo6Z2V0RmlsZXNQYXRoKCkgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHRoaXMtPmdldHt7JGZpZWxkLmNhbWVsY2FzZX19KCkpKQoJCQl7CgkJCQkkcmVzdWx0ID0gdW5saW5rKHNlbGY6OmdldEZpbGVzUGF0aCgpIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICR0aGlzLT5nZXR7eyRmaWVsZC5jYW1lbGNhc2V9fSgpKTsKCQkJCWRlYnVnX2Rpc3BsYXkoJ0RlbGV0ZSAnIC4gc2VsZjo6Z2V0RmlsZXNQYXRoKCkgLiBESVJFQ1RPUllfU0VQQVJBVE9SIC4gJHRoaXMtPmdldHt7JGZpZWxkLmNhbWVsY2FzZX19KCkgLiAnIFJlc3VsdDogJyAuICRyZXN1bHQpOwoJCQl9CQoJCQl7e2lmICgkZmllbGQudHlwZSA9PSAnaW1hZ2UnKSAmJiAkZmllbGQuaW1hZ2Vfd2lkdGggJiYgJGZpZWxkLmltYWdlX2hlaWdodH19CgkJCWlmIChpc19maWxlKHNlbGY6OmdldEZpbGVzUGF0aCgpICAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAgJHRoaXMtPmdldHt7JGZpZWxkLmNhbWVsY2FzZX19T3JpZ2luYWxQaWN0dXJlKCkpKQoJCQl7CgkJCQkkcmVzdWx0ID0gdW5saW5rKHNlbGY6OmdldEZpbGVzUGF0aCgpICAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAgJHRoaXMtPmdldHt7JGZpZWxkLmNhbWVsY2FzZX19T3JpZ2luYWxQaWN0dXJlKCkpOyAvLyBEZWxldGluZyB0aGUgb3JpZ2luYWwgcGljdHVyZSBhcyB3ZWxsCgkJCQlkZWJ1Z19kaXNwbGF5KCdEZWxldGUgJyAuIHNlbGY6OmdldEZpbGVzUGF0aCgpICAuIERJUkVDVE9SWV9TRVBBUkFUT1IgLiAgJHRoaXMtPmdldHt7JGZpZWxkLmNhbWVsY2FzZX19T3JpZ2luYWxQaWN0dXJlKCkgLiAnIFJlc3VsdDogJyAuICRyZXN1bHQpOwoJCQl9CQoJCQl7ey9pZn19CgkJCSR0aGlzLT5zZXR7eyRmaWVsZC5jYW1lbGNhc2V9fSgnJyk7CQkJCgkJfQoJfQoJCgl7ey9pZn19CgoJe3svZm9yZWFjaH19CgoJcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBnZXRGaWxlc1BhdGgoKQoJewoJCXt7aWYgJGZpbGVzX3BhdGggIT0gJyd9fQoJCSRwYXRoID0gJ3t7JGZpbGVzX3BhdGh9fSc7CgkJe3tlbHNlfX0KCQlnbG9iYWwgJGdDbXM7CgkJJGNvbmZpZyA9ICRnQ21zLT5HZXRDb25maWcoKTsKCQkkcGF0aCA9ICRjb25maWdbJ3Jvb3RfcGF0aCddOwoJCXt7L2lmfX0KCQlpZiAoIWlzX2RpcigkcGF0aCAuIHNlbGY6OmdldFVwbG9hZHNSZWxhdGl2ZVBhdGgoKSkpCgkJewoJCQlta2RpcigkcGF0aCAuIHNlbGY6OmdldFVwbG9hZHNSZWxhdGl2ZVBhdGgoKSwwNzc3LHRydWUpOwoJCX0KCQlyZXR1cm4gJHBhdGg7Cgl9CgkKCXByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gZ2V0RmlsZXNGdWxsUGF0aCgpCgl7CgkJcmV0dXJuIHNlbGY6OmdldEZpbGVzUGF0aCgpIC4gc2VsZjo6Z2V0VXBsb2Fkc1JlbGF0aXZlUGF0aCgpOwoJfQoJCglwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGdldFVwbG9hZHNSZWxhdGl2ZVBhdGgoKQoJewoJCXJldHVybiBzdHJfcmVwbGFjZSgnLycsIERJUkVDVE9SWV9TRVBBUkFUT1IsIHNlbGY6OlVQTE9BRFNfUkVMQVRJVkVfVVJMKTsKCX0KCQoJcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiByZXRyaWV2ZUZpbGVuYW1lKCRmaWxlbmFtZSkKCXsKCQkkY2xlYW4gPSBzdHJfcmVwbGFjZShzZWxmOjpVUExPQURTX1JFTEFUSVZFX1VSTCwgJycsICRmaWxlbmFtZSk7CgkJJGNsZWFuID0gc3RyX3JlcGxhY2UoJy8nLCAnJywgJGNsZWFuKTsKCQlyZXR1cm4gJGNsZWFuOwoJfQoJCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNsZWFuRmlsZW5hbWUoJGZpbGVuYW1lKQogIHsKICAgICAgJHJlc3VsdCA9IHN0cnRvbG93ZXIoJGZpbGVuYW1lKTsKCQkJLy8gUmVtb3ZlIGFjY2VudHMKICAgICAgJHJlc3VsdCA9IHN0cnRyKCRyZXN1bHQsICAi77+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+977+9IiwgICJhYWFhYWFhYWFhYWFvb29vb29vb29vb29lZWVlZWVlZWNjaWlpaWlpaWl1dXV1dXV1dXlubiIpOwoKCQkJLy8gU29mdCB3YXkKCQkJJHJlc3VsdCA9IHN0cl9yZXBsYWNlKCIjIiwgIk5vLiIsICRyZXN1bHQpOyAKCQkJJHJlc3VsdCA9IHN0cl9yZXBsYWNlKCIkIiwgIkRvbGxhciIsICRyZXN1bHQpOyAKCQkJJHJlc3VsdCA9IHN0cl9yZXBsYWNlKCIlIiwgIlBlcmNlbnQiLCAkcmVzdWx0KTsgCgkJCSRyZXN1bHQgPSBzdHJfcmVwbGFjZSgiXiIsICIgIiwgJHJlc3VsdCk7IAoJCQkkcmVzdWx0ID0gc3RyX3JlcGxhY2UoIiYiLCAiYW5kIiwgJHJlc3VsdCk7IAoJCQkkcmVzdWx0ID0gc3RyX3JlcGxhY2UoIioiLCAiICIsICRyZXN1bHQpOyAKCQkJJHJlc3VsdCA9IHN0cl9yZXBsYWNlKCI/IiwgIiAiLCAkcmVzdWx0KTsKCQkJJHJlc3VsdCA9IHN0cl9yZXBsYWNlKCIsIiwgIiAiLCAkcmVzdWx0KTsKCQkJCiAgICAgIC8vIHN0cmlwIGFsbCBub24gd29yZCBjaGFycwogICAgICAvLyRyZXN1bHQgPSBwcmVnX3JlcGxhY2UoJy9cVy8nLCAnICcsICRyZXN1bHQpOyAvLyBIQVJEIFdBWS4uLgoKICAgICAgLy8gcmVwbGFjZSBhbGwgd2hpdGUgc3BhY2Ugc2VjdGlvbnMgd2l0aCBhIGRhc2gKICAgICAgJHJlc3VsdCA9IHByZWdfcmVwbGFjZSgnL1wgKy8nLCAnLScsICRyZXN1bHQpOwogICAgICAvLyB0cmltIGRhc2hlcwogICAgICAkcmVzdWx0ID0gcHJlZ19yZXBsYWNlKCcvXC0kLycsICcnLCAkcmVzdWx0KTsKICAgICAgJHJlc3VsdCA9IHByZWdfcmVwbGFjZSgnL15cLS8nLCAnJywgJHJlc3VsdCk7CiAgICAgIHJldHVybiAkcmVzdWx0OwogIH0KCglwcm90ZWN0ZWQgZnVuY3Rpb24gY2hlY2tGaWxlbmFtZSgkZmlsZSkKCXsKCQkkcGF0aGluZm8gPSBwYXRoaW5mbygkZmlsZVsnbmFtZSddKTsKCQkkZmlsZW5hbWUgPSBzZWxmOjpjbGVhbkZpbGVuYW1lKCRwYXRoaW5mb1snZmlsZW5hbWUnXSk7CgkJJGZpbmFsX2ZpbGVuYW1lID0gc2VsZjo6Y2xlYW5GaWxlbmFtZSgkcGF0aGluZm9bJ2ZpbGVuYW1lJ10pOwoJCSRpID0gMjsKCQl3aGlsZSAoZmlsZV9leGlzdHMoc2VsZjo6Z2V0RmlsZXNGdWxsUGF0aCgpIC4gRElSRUNUT1JZX1NFUEFSQVRPUiAuICRmaW5hbF9maWxlbmFtZSAuICcuJyAuICRwYXRoaW5mb1snZXh0ZW5zaW9uJ10pKSB7CgkJCSRmaW5hbF9maWxlbmFtZSA9ICRmaWxlbmFtZS4nLScuJGk7CgkJCSsrJGk7CgkJfQoJCXJldHVybiAkZmluYWxfZmlsZW5hbWUgLiAnLicgLiAkcGF0aGluZm9bJ2V4dGVuc2lvbiddOwoJfQoKCS8vZnVuY3Rpb24KCgkJcHVibGljIGZ1bmN0aW9uIGRvd25sb2FkRmlsZSgkZmllbGQpIHsKCQkJc3dpdGNoKCRmaWVsZCkKCQkJewoJCQl7e2ZvcmVhY2ggZnJvbT0kZXh0cmFfZmllbGRzIGl0ZW09ZmllbGR9fQoJCQl7e2lmICRmaWVsZC5mb3JtX3R5cGUgPT0gJ2ZpbGUnfX0KCQkJY2FzZSAne3skZmllbGQubmFtZX19JzoKCQkJCXJldHVybiAkdGhpcy0+ZG93bmxvYWR7eyRmaWVsZC5jYW1lbGNhc2V9fSgkaWQpOwoJCQkJYnJlYWs7CgkJCXt7L2lmfX0KCQkJe3svZm9yZWFjaH19CgkJCWRlZmF1bHQ6CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgoJcHVibGljIGZ1bmN0aW9uIHVwbG9hZEZpbGVzKCRpZCkgewoJCXt7Zm9yZWFjaCBmcm9tPSRleHRyYV9maWVsZHMgaXRlbT1maWVsZH19CgkJCXt7aWYgJGZpZWxkLmZvcm1fdHlwZSA9PSAnZmlsZSd9fQoJCQkJJHRoaXMtPnVwbG9hZHt7JGZpZWxkLmNhbWVsY2FzZX19KCRpZCk7CgkJCXt7L2lmfX0KCQl7ey9mb3JlYWNofX0KCQkKCQl7eyp9fQoJCWdsb2JhbCAkZ0NtczsKCQkkY29uZmlnID0gJGdDbXMtPkdldENvbmZpZygpOwoJCSR1cGxvYWRfcGF0aCA9IHNlbGY6OlVQTE9BRFNfUkVMQVRJVkVfVVJMIC4gJy8nOyAvLycvdXBsb2Fkcy9Nb2R1bGVzL3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0vJzsKCQkkdXBsb2FkX2Z1bGxfcGF0aCA9ICRjb25maWdbJ3Jvb3RfcGF0aCddLiR1cGxvYWRfcGF0aDsKCQkKCQlpZiAoIWlzX2RpcigkdXBsb2FkX2Z1bGxfcGF0aCkpCgkJewoJCQlta2RpcigkdXBsb2FkX2Z1bGxfcGF0aCwwNzc3LHRydWUpOwoJCX0KCQkKCQl7e2ZvcmVhY2ggZnJvbT0kZXh0cmFfZmllbGRzIGl0ZW09ZmllbGR9fQoJCQl7e2lmICRmaWVsZC5mb3JtX3R5cGUgPT0gJ2ZpbGUnfX0KCQkJaWYgKGlzc2V0KCRfUE9TVFskaWQuJ3t7JGZpZWxkLm5hbWV9fV9kZWxldGUnXSkpIHsKCQkJCSR0aGlzLT5zZXR7eyRmaWVsZC5jYW1lbGNhc2V9fSgnJyk7CgkJCX0gZWxzZWlmIChpc3NldCgkX0ZJTEVTWyRpZC4ne3skZmllbGQubmFtZX19J10pICYmICgkX0ZJTEVTWyRpZC4ne3skZmllbGQubmFtZX19J11bJ3NpemUnXSA+IDApKSB7CgkJCQkkcGF0aGluZm8gPSBwYXRoaW5mbygkX0ZJTEVTWyRpZC4ne3skZmllbGQubmFtZX19J11bJ25hbWUnXSk7CgkJCQkkZmlsZW5hbWUgPSAkcGF0aGluZm9bJ2Jhc2VuYW1lJ107CgkJCQkkaSA9IDI7CgkJCQl3aGlsZSAoZmlsZV9leGlzdHMoJHVwbG9hZF9mdWxsX3BhdGguJGZpbGVuYW1lKSkgewoJCQkJCSRmaWxlbmFtZSA9ICRwYXRoaW5mb1snZmlsZW5hbWUnXS4nLScuJGkuJy4nLiRwYXRoaW5mb1snZXh0ZW5zaW9uJ107CgkJCQkJKyskaTsKCQkJCX0KCQkJCSRkZXN0aW5hdGlvbiA9ICR1cGxvYWRfZnVsbF9wYXRoLiRmaWxlbmFtZTsKCQkJCWlmIChtb3ZlX3VwbG9hZGVkX2ZpbGUoJF9GSUxFU1skaWQuJ3t7JGZpZWxkLm5hbWV9fSddWyd0bXBfbmFtZSddLCAkZGVzdGluYXRpb24pKSB7CgkJCQkJJHRoaXMtPnNldHt7JGZpZWxkLmNhbWVsY2FzZX19KCR1cGxvYWRfcGF0aC4kZmlsZW5hbWUpOwoJCQkJCXt7aWYgKCRmaWVsZC50eXBlID09ICdpbWFnZScpICYmICRmaWVsZC5pbWFnZV93aWR0aCAmJiAkZmllbGQuaW1hZ2VfaGVpZ2h0fX0KCQkJCQlsaXN0KCRpbWFnZV93aWR0aCwgJGltYWdlX2hlaWdodCwgJGltYWdlX3R5cGUpID0gZ2V0aW1hZ2VzaXplKCRkZXN0aW5hdGlvbik7CgkJCQkJc3dpdGNoICgkaW1hZ2VfdHlwZSkgewoJCQkJCQljYXNlIElNQUdFVFlQRV9HSUY6CgkJCQkJCQkkaW1nID0gaW1hZ2VjcmVhdGVmcm9tZ2lmKCRkZXN0aW5hdGlvbik7CgkJCQkJCQlicmVhazsKCQkJCQkJY2FzZSBJTUFHRVRZUEVfSlBFRzoKCQkJCQkJCSRpbWcgPSBpbWFnZWNyZWF0ZWZyb21qcGVnKCRkZXN0aW5hdGlvbik7CgkJCQkJCQlicmVhazsKCQkJCQkJY2FzZSBJTUFHRVRZUEVfUE5HOgoJCQkJCQkJJGltZyA9IGltYWdlY3JlYXRlZnJvbXBuZygkZGVzdGluYXRpb24pOwoJCQkJCQkJYnJlYWs7CgkJCQkJfQoJCQkJCSRmYWN0b3IgPSBtYXgoJGltYWdlX3dpZHRoIC8ge3skZmllbGQuaW1hZ2Vfd2lkdGh9fSwgJGltYWdlX2hlaWdodCAvIHt7JGZpZWxkLmltYWdlX2hlaWdodH19KTsKCQkJCQkkbmV3X3dpZHRoID0gbWluKHJvdW5kKCRpbWFnZV93aWR0aCAvICRmYWN0b3IpLCAkaW1hZ2Vfd2lkdGgpOwoJCQkJCSRuZXdfaGVpZ2h0ID0gbWluKHJvdW5kKCRpbWFnZV9oZWlnaHQgLyAkZmFjdG9yKSwgJGltYWdlX2hlaWdodCk7CgkJCQkJJG5ld19pbWcgPSBpbWFnZWNyZWF0ZXRydWVjb2xvcigkbmV3X3dpZHRoLCAkbmV3X2hlaWdodCk7CgkJCQkJaW1hZ2Vjb3B5cmVzYW1wbGVkKCRuZXdfaW1nLCAkaW1nLCAwLCAwLCAwLCAwLCAkbmV3X3dpZHRoLCAkbmV3X2hlaWdodCwgJGltYWdlX3dpZHRoLCAkaW1hZ2VfaGVpZ2h0KTsKCQkJCQlzd2l0Y2ggKCRpbWFnZV90eXBlKSB7CgkJCQkJCWNhc2UgSU1BR0VUWVBFX0dJRjoKCQkJCQkJCWltYWdlZ2lmKCRuZXdfaW1nLCAkdXBsb2FkX2Z1bGxfcGF0aC4ne3skZmllbGQuaW1hZ2Vfd2lkdGh9fV97eyRmaWVsZC5pbWFnZV9oZWlnaHR9fV8nLmJhc2VuYW1lKCRfRklMRVNbJGlkLid7eyRmaWVsZC5uYW1lfX0nXVsnbmFtZSddKSk7CgkJCQkJCQlicmVhazsKCQkJCQkJY2FzZSBJTUFHRVRZUEVfSlBFRzoKCQkJCQkJCWltYWdlanBlZygkbmV3X2ltZywgJHVwbG9hZF9mdWxsX3BhdGguJ3t7JGZpZWxkLmltYWdlX3dpZHRofX1fe3skZmllbGQuaW1hZ2VfaGVpZ2h0fX1fJy5iYXNlbmFtZSgkX0ZJTEVTWyRpZC4ne3skZmllbGQubmFtZX19J11bJ25hbWUnXSkpOwoJCQkJCQkJYnJlYWs7CgkJCQkJCWNhc2UgSU1BR0VUWVBFX1BORzoKCQkJCQkJCWltYWdlcG5nKCRuZXdfaW1nLCAkdXBsb2FkX2Z1bGxfcGF0aC4ne3skZmllbGQuaW1hZ2Vfd2lkdGh9fV97eyRmaWVsZC5pbWFnZV9oZWlnaHR9fV8nLmJhc2VuYW1lKCRfRklMRVNbJGlkLid7eyRmaWVsZC5uYW1lfX0nXVsnbmFtZSddKSk7CgkJCQkJCQlicmVhazsKCQkJCQl9CgkJCQkJJHRoaXMtPnNldHt7JGZpZWxkLmNhbWVsY2FzZX19KCR1cGxvYWRfcGF0aC4ne3skZmllbGQuaW1hZ2Vfd2lkdGh9fV97eyRmaWVsZC5pbWFnZV9oZWlnaHR9fV8nLmJhc2VuYW1lKCRfRklMRVNbJGlkLid7eyRmaWVsZC5uYW1lfX0nXVsnbmFtZSddKSk7CgkJCQkJe3svaWZ9fQoJCQkJfQoJCQl9CgkJCXt7L2lmfX0KCQl7ey9mb3JlYWNoKn19Cgl9CgkKCXByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gZ2V0TWltZVR5cGUoJGZpbGVuYW1lKSB7CgkJJGV4dGVuc2lvbiA9IHN0cnRvbG93ZXIoZW5kKGV4cGxvZGUoJy4nLCRmaWxlbmFtZSkpKTsKCQkkbWltZV90eXBlcyA9IGFycmF5KAoJCQkndHh0JyA9PiAndGV4dC9wbGFpbicsCgkJCSdodG0nID0+ICd0ZXh0L2h0bWwnLAoJCQknaHRtbCcgPT4gJ3RleHQvaHRtbCcsCgkJCSdwaHAnID0+ICd0ZXh0L2h0bWwnLAoJCQknY3NzJyA9PiAndGV4dC9jc3MnLAoJCQknanMnID0+ICdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0JywKCQkJJ2pzb24nID0+ICdhcHBsaWNhdGlvbi9qc29uJywKCQkJJ3htbCcgPT4gJ2FwcGxpY2F0aW9uL3htbCcsCgkJCSdzd2YnID0+ICdhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCcsCgkJCSdmbHYnID0+ICd2aWRlby94LWZsdicsCgkJCS8vIGltYWdlcwoJCQkncG5nJyA9PiAnaW1hZ2UvcG5nJywKCQkJJ2pwZScgPT4gJ2ltYWdlL2pwZWcnLAoJCQknanBlZycgPT4gJ2ltYWdlL2pwZWcnLAoJCQknanBnJyA9PiAnaW1hZ2UvanBlZycsCgkJCSdnaWYnID0+ICdpbWFnZS9naWYnLAoJCQknYm1wJyA9PiAnaW1hZ2UvYm1wJywKCQkJJ2ljbycgPT4gJ2ltYWdlL3ZuZC5taWNyb3NvZnQuaWNvbicsCgkJCSd0aWZmJyA9PiAnaW1hZ2UvdGlmZicsCgkJCSd0aWYnID0+ICdpbWFnZS90aWZmJywKCQkJJ3N2ZycgPT4gJ2ltYWdlL3N2Zyt4bWwnLAoJCQknc3ZneicgPT4gJ2ltYWdlL3N2Zyt4bWwnLAoJCQkvLyBhcmNoaXZlcwoJCQknemlwJyA9PiAnYXBwbGljYXRpb24vemlwJywKCQkJJ3JhcicgPT4gJ2FwcGxpY2F0aW9uL3gtcmFyLWNvbXByZXNzZWQnLAoJCQknZXhlJyA9PiAnYXBwbGljYXRpb24veC1tc2Rvd25sb2FkJywKCQkJJ21zaScgPT4gJ2FwcGxpY2F0aW9uL3gtbXNkb3dubG9hZCcsCgkJCSdjYWInID0+ICdhcHBsaWNhdGlvbi92bmQubXMtY2FiLWNvbXByZXNzZWQnLAoJCQkvLyBhdWRpby92aWRlbwoJCQknbXAzJyA9PiAnYXVkaW8vbXBlZycsCgkJCSdxdCcgPT4gJ3ZpZGVvL3F1aWNrdGltZScsCgkJCSdtb3YnID0+ICd2aWRlby9xdWlja3RpbWUnLAoJCQkvLyBhZG9iZQoJCQkncGRmJyA9PiAnYXBwbGljYXRpb24vcGRmJywKCQkJJ3BzZCcgPT4gJ2ltYWdlL3ZuZC5hZG9iZS5waG90b3Nob3AnLAoJCQknYWknID0+ICdhcHBsaWNhdGlvbi9wb3N0c2NyaXB0JywKCQkJJ2VwcycgPT4gJ2FwcGxpY2F0aW9uL3Bvc3RzY3JpcHQnLAoJCQkncHMnID0+ICdhcHBsaWNhdGlvbi9wb3N0c2NyaXB0JywKCQkJLy8gbXMgb2ZmaWNlCgkJCSdkb2MnID0+ICdhcHBsaWNhdGlvbi9tc3dvcmQnLAoJCQkncnRmJyA9PiAnYXBwbGljYXRpb24vcnRmJywKCQkJJ3hscycgPT4gJ2FwcGxpY2F0aW9uL3ZuZC5tcy1leGNlbCcsCgkJCSdwcHQnID0+ICdhcHBsaWNhdGlvbi92bmQubXMtcG93ZXJwb2ludCcsCgkJCS8vIG9wZW4gb2ZmaWNlCgkJCSdvZHQnID0+ICdhcHBsaWNhdGlvbi92bmQub2FzaXMub3BlbmRvY3VtZW50LnRleHQnLAoJCQknb2RzJyA9PiAnYXBwbGljYXRpb24vdm5kLm9hc2lzLm9wZW5kb2N1bWVudC5zcHJlYWRzaGVldCcKCQkpOwoJCWlmIChpc3NldCgkbWltZV90eXBlc1skZXh0ZW5zaW9uXSkpIHsKCQkJcmV0dXJuICRtaW1lX3R5cGVzWyRleHRlbnNpb25dOwoJCX0KCQlyZXR1cm4gJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbSc7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBnZXRTZWFyY2hTdHJpbmcoKSB7CgkJJGZpZWxkc1tdID0gJHRoaXMtPmdldFRpdGxlKCk7CgkJe3tmb3JlYWNoIGZyb209JGV4dHJhX2ZpZWxkcyBpdGVtPWZpZWxkfX0KCQkJe3tpZiAkZmllbGQuY29sdW1uX3R5cGUgPT0gJ0MoMjU1KScgfHwgJGZpZWxkLmNvbHVtbl90eXBlID09ICdYJ319CgkJCSRmaWVsZHNbXSA9ICR0aGlzLT5nZXR7eyRmaWVsZC5jYW1lbGNhc2V9fSgpOwoJCQl7ey9pZn19CgkJe3svZm9yZWFjaH19CgkJcmV0dXJuIGltcGxvZGUoJyAnLCAkZmllbGRzKTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0UGFyZW50KCkgewoJICAgIGlmICgkdGhpcy0+cGFyZW50X2lkKSB7CgkgICAgICAgIHJldHVybiBzZWxmOjpnZXRCeUlkKCR0aGlzLT5wYXJlbnRfaWQpOwoJICAgIH0KCQlyZXR1cm4gZmFsc2U7Cgl9CgoJe3tpZiBpc3NldCgkcGFyZW50X21vZHVsZSkgJiYgJHBhcmVudF9tb2R1bGUgbmUgJyd9fQoJcHVibGljIGZ1bmN0aW9uIGdldFBhcmVudE1vZHVsZSgpCgl7CgkJaWYgKCR0aGlzLT5wYXJlbnRfaXRlbSkKCQl7CgkJCXJldHVybiB7eyRwYXJlbnRfbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fU9iamVjdDo6Z2V0QnlJZCgkdGhpcy0+cGFyZW50X2l0ZW0pOwoJCX0KCX0KCQoJcHVibGljIGZ1bmN0aW9uIGdldFBhcmVudE1vZHVsZUxpc3QoTUNGQ3JpdGVyaWEgJGMpCgl7CgkJJGl0ZW1zID0gc2VsZjo6ZG9TZWxlY3QoJGMpOwoJCSRsaXN0ID0gYXJyYXkoKTsKCQlmb3JlYWNoKCRpdGVtcyBhcyAkaXRlbSkKCQl7CgkJCSRsaXN0WyRpdGVtLT5nZXRQYXJlbnRNb2R1bGUoKS0+X190b1N0cmluZygpXVskaXRlbS0+Z2V0SWQoKV0gPSAkaXRlbTsKCQl9CgkJcmV0dXJuICRsaXN0OwoJfQoJe3svaWZ9fQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRQb3NzaWJsZVBhcmVudHMoKSB7CgkJJG9iamVjdHMgPSBzZWxmOjpkb1NlbGVjdChuZXcgTUNGQ3JpdGVyaWEoKSk7CgkJJHBvc3NpYmxlX29iamVjdHMgPSBhcnJheSgwID0+ICcnKTsKCQlmb3JlYWNoICgkb2JqZWN0cyBhcyAkb2JqZWN0KSB7CgkJCWlmICgoJG9iamVjdC0+Z2V0SWQoKSAhPSAkdGhpcy0+Z2V0SWQoKSkgJiYgISRvYmplY3QtPmlzRGVzY2VuZGFudE9mKCR0aGlzLT5nZXRJZCgpKSkgewoJCQkJJHBvc3NpYmxlX29iamVjdHNbJG9iamVjdC0+Z2V0SWQoKV0gPSAkb2JqZWN0LT5nZXRUaXRsZSgpOwoJCQl9CgkJfQoKCQlyZXR1cm4gJHBvc3NpYmxlX29iamVjdHM7Cgl9CglwdWJsaWMgZnVuY3Rpb24gZ2V0UG9zc2libGVQYXJlbnRzSGllcmFyY2h5KCRzZXBhcmF0b3IgPSAnIC0gJykKCXsKCQkkYyA9IG5ldyBNQ0ZDcml0ZXJpYSgpOwoJCSRjLT5hZGQoJ3BhcmVudF9pZCcsICcnLCBNQ0ZDcml0ZXJpYTo6SVNFTVBUWSk7CgkJJHJvb3RzID0gc2VsZjo6ZG9TZWxlY3QoJGMpOwoJCSRhcnJheSA9IGFycmF5KCk7CgkJCgkJZm9yZWFjaCgkcm9vdHMgYXMgJHJvb3QpCgkJewoJCQkkYXJyYXlbJHJvb3QtPmdldElkKCldID0gJHJvb3QtPmdldFRpdGxlKCk7CgkJCSRhcnJheSA9ICRhcnJheSArIHNlbGY6OmdldENoaWxkcmVuSGllcmFyY2h5KCRyb290LT5nZXRJZCgpLCAkc2VwYXJhdG9yLCAxLCAkdGhpcy0+Z2V0SWQoKSk7CgkJfQoJCQoJCXJldHVybiAkYXJyYXk7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0Q2hpbGRyZW5IaWVyYXJjaHkoJGlkLCRzZXBhcmF0b3IgPSAnIC0gJywgJGxldmVsID0gMSwgJHdpdGhvdXRfY2hpbGRyZW5zX29mID0gbnVsbCkKCXsKCQkkYXJyYXkgPSBhcnJheSgpOwoJCSRkaXJlY3RfY2hpbGRyZW5zID0gc2VsZjo6Z2V0Q2hpbGRyZW5zT2YoJGlkKTsKCQlmb3JlYWNoKCRkaXJlY3RfY2hpbGRyZW5zIGFzICRjaGlsZHJlbikKCQl7CgkJCWlmICgkY2hpbGRyZW4tPmdldElkKCkgIT0gJHdpdGhvdXRfY2hpbGRyZW5zX29mKQoJCQl7CgkJCQkkc2VwID0gJyc7CgkJCQlmb3IoJGkgPSAwOyAkaSA8ICRsZXZlbDsgJGkrKyl7JHNlcCAuPSAkc2VwYXJhdG9yO30KCQkJCSRhcnJheVskY2hpbGRyZW4tPmdldElkKCldID0gJHNlcGFyYXRvciAuICRjaGlsZHJlbi0+Z2V0VGl0bGUoKTsKCQkJCSRhcnJheSA9ICRhcnJheSArIHNlbGY6OmdldENoaWxkcmVuSGllcmFyY2h5KCRjaGlsZHJlbi0+Z2V0SWQoKSwgJHNlcGFyYXRvciwgJGxldmVsKzEsJHdpdGhvdXRfY2hpbGRyZW5zX29mKTsgCgkJCX0KCQl9IAoJCXJldHVybiAkYXJyYXk7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0Q2hpbGRyZW5zT2YoJGlkKQoJewoJCSRjID0gbmV3IE1DRkNyaXRlcmlhKCk7CgkJJGMtPmFkZCgncGFyZW50X2lkJywgJGlkLCBNQ0ZDcml0ZXJpYTo6RVFVQUwpOwoJCXJldHVybiBzZWxmOjpkb1NlbGVjdCgkYyk7CQkKCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNEZXNjZW5kYW50T2YoJGlkKSB7CgkJJGl0ZW0gPSAkdGhpczsKCQl3aGlsZSAoJGl0ZW0gPSAkaXRlbS0+Z2V0UGFyZW50KCkpIHsKCQkJaWYgKCRpdGVtLT5nZXRJZCgpID09ICRpZCkgewoJCQkJcmV0dXJuIHRydWU7CgkJCX0KCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZG9Db3VudChNQ0ZDcml0ZXJpYSAkY3JpdCkgewoJCSRjID0gY2xvbmUgJGNyaXQ7CgkJZ2xvYmFsICRnQ21zOwoJCSRkYiA9ICRnQ21zLT5HZXREYigpOwoJCSRjLT5hZGRTZWxlY3RDb2x1bW4oJ0NPVU5UKCopIEFTIG5iaXRlbXMnKTsKCQkkcXVlcnkgPSAkYy0+YnVpbGRRdWVyeShjbXNfZGJfcHJlZml4KCkuc2VsZjo6REJfTkFNRSk7CgkJJHJlc3VsdCA9ICRkYi0+ZXhlY3V0ZSgkcXVlcnksICRjLT52YWx1ZXMpOwoJCSRyb3cgPSAkcmVzdWx0LT5GZXRjaFJvdygpOwoJCXJldHVybiAkcm93WyduYml0ZW1zJ107Cgl9CgoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkb1NlbGVjdChNQ0ZDcml0ZXJpYSAkY3JpdCkgewoJCSRjID0gY2xvbmUgJGNyaXQ7CgkJZ2xvYmFsICRnQ21zOwoJCSRkYiA9ICRnQ21zLT5HZXREYigpOwoJCSRxdWVyeSA9ICRjLT5idWlsZFF1ZXJ5KGNtc19kYl9wcmVmaXgoKS5zZWxmOjpEQl9OQU1FKTsKCQkkcmVzdWx0ID0gJGRiLT5leGVjdXRlKCRxdWVyeSwgJGMtPnZhbHVlcyk7CgkJJG9iamVjdHMgPSBhcnJheSgpOwoJCXdoaWxlICgkcmVzdWx0ICYmICRyb3cgPSAkcmVzdWx0LT5GZXRjaFJvdygpKSB7CgkJCSRvYmplY3QgPSBuZXcge3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fU9iamVjdCgpOwoJCQkkb2JqZWN0LT5wb3B1bGF0ZUZyb21BcnJheSgkcm93KTsKCQkJJG9iamVjdC0+aXNfbW9kaWZpZWQgPSBmYWxzZTsKCQkJJG9iamVjdHNbJG9iamVjdC0+Z2V0SWQoKV0gPSAkb2JqZWN0OwoJCX0KCQlyZXR1cm4gJG9iamVjdHM7Cgl9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkb1NlbGVjdE9uZShNQ0ZDcml0ZXJpYSAkY3JpdCkgewogICAgICAgICRjID0gY2xvbmUgJGNyaXQ7CiAgICAgICAgJGMtPnNldExpbWl0KDEpOwogICAgICAgICRvYmplY3RzID0gc2VsZjo6ZG9TZWxlY3QoJGMpOwogICAgICAgIHJldHVybiAoY291bnQoJG9iamVjdHMpID4gMCkgPyBhcnJheV9zaGlmdCgkb2JqZWN0cykgOiBmYWxzZTsKICAgIH0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldEJ5SWQoJGlkKSB7CgkgICAgJGMgPSBuZXcgTUNGQ3JpdGVyaWEoKTsKCSAgICAkYy0+YWRkKCdpZCcsICRpZCk7CgkgICAgcmV0dXJuIHNlbGY6OmRvU2VsZWN0T25lKCRjKTsKCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFRpdGxlcygpIHsKCQlnbG9iYWwgJGdDbXM7CgkJJGRiID0gJGdDbXMtPkdldERiKCk7CgkJJGMgPSBuZXcgTUNGQ3JpdGVyaWEoKTsKCQkkYy0+YWRkQXNjZW5kaW5nT3JkZXJCeUNvbHVtbigkZ0Ntcy0+bW9kdWxlc1tzZWxmOjpNT0RVTEVfTkFNRV1bJ29iamVjdCddLT5nZXRQcmVmZXJlbmNlKCdvcmRlcl9ieScsICdvcmRlcl9ieScpKTsKCQkkcXVlcnkgPSAkYy0+YnVpbGRRdWVyeShjbXNfZGJfcHJlZml4KCkuc2VsZjo6REJfTkFNRSk7CgkJJHJlc3VsdCA9ICRkYi0+ZXhlY3V0ZSgkcXVlcnksICRjLT52YWx1ZXMpOwoJCSRvYmplY3RzID0gYXJyYXkoKTsKCQl3aGlsZSAoJHJlc3VsdCAmJiAkcm93ID0gJHJlc3VsdC0+RmV0Y2hSb3coKSkgewoJCQkkb2JqZWN0c1skcm93WydpZCddXSA9ICRyb3dbJ3RpdGxlJ107CgkJfQoJCS8vYXNvcnQoJG9iamVjdHMpOwoJCXJldHVybiAkb2JqZWN0czsKCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIHF1ZXJ5KCRzcWwsICR2YWx1ZXMgPSBhcnJheSgpKSB7CgkJZ2xvYmFsICRnQ21zOwoJCSRkYiA9ICRnQ21zLT5HZXREYigpOwoJCXJldHVybiAkZGItPmV4ZWN1dGUoJHNxbCwgJHZhbHVlcyk7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBwb3B1bGF0ZUZyb21BcnJheShhcnJheSAkcGFyYW1zKSB7CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2lkJ10pKSB7CgkJCSR0aGlzLT5zZXRJZCgkcGFyYW1zWydpZCddKTsKCQl9CQkKCQlpZiAoaXNzZXQoJHBhcmFtc1sndXNlcl9pZCddKSkgewoJCQkkdGhpcy0+c2V0VXNlcklkKCRwYXJhbXNbJ3VzZXJfaWQnXSk7CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydwYXJlbnRfaWQnXSkpIHsKCQkJJHRoaXMtPnBhcmVudF9pZCA9ICRwYXJhbXNbJ3BhcmVudF9pZCddOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1sndGl0bGUnXSkpIHsKCQkJJHRoaXMtPnNldFRpdGxlKCRwYXJhbXNbJ3RpdGxlJ10pOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1snY3JlYXRlZF9hdCddKSkgewoJCQkkdGhpcy0+c2V0Q3JlYXRlZEF0KCRwYXJhbXNbJ2NyZWF0ZWRfYXQnXSk7CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydjcmVhdGVkX2J5J10pKSB7CgkJCSR0aGlzLT5zZXRDcmVhdGVkQnkoJHBhcmFtc1snY3JlYXRlZF9ieSddKTsKCQl9CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ3VwZGF0ZWRfYXQnXSkpIHsKCQkJJHRoaXMtPnNldFVwZGF0ZWRBdCgkcGFyYW1zWyd1cGRhdGVkX2F0J10pOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1sndXBkYXRlZF9ieSddKSkgewoJCQkkdGhpcy0+c2V0VXBkYXRlZEJ5KCRwYXJhbXNbJ3VwZGF0ZWRfYnknXSk7CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydvcmRlcl9ieSddKSkgewoJCQkkdGhpcy0+c2V0T3JkZXJCeSgkcGFyYW1zWydvcmRlcl9ieSddKTsKCQl9CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ3BhcmVudF9pdGVtJ10pKSB7CgkJCSR0aGlzLT5zZXRQYXJlbnRJdGVtKCRwYXJhbXNbJ3BhcmVudF9pdGVtJ10pOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1sncHVibGlzaGVkJ10pKSB7CgkJCSR0aGlzLT5zZXRQdWJsaXNoZWQoJHBhcmFtc1sncHVibGlzaGVkJ10pOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1snZnVsbF90ZXh0X3NlYXJjaCddKSkKCQl7CgkJCSR0aGlzLT5zZXRGdWxsVGV4dFNlYXJjaCgkcGFyYW1zWydmdWxsX3RleHRfc2VhcmNoJ10pOwoJCX0KCQl7e2ZvcmVhY2ggZnJvbT0kZXh0cmFfZmllbGRzIGl0ZW09ZmllbGR9fQoJCWlmIChpc3NldCgkcGFyYW1zWyd7eyRmaWVsZC5uYW1lfX0nXSkpIHsKCQkJJHRoaXMtPnNldHt7JGZpZWxkLmNhbWVsY2FzZX19KCRwYXJhbXNbJ3t7JGZpZWxkLm5hbWV9fSddKTsKCQl9CgkJe3svZm9yZWFjaH19Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGlzTmV3KCkgewoJCXJldHVybiAkdGhpcy0+Z2V0SWQoKSA/IGZhbHNlIDogdHJ1ZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gcG9wdWxhdGUoJHJvdykKCXsKCQlpZiAoaXNzZXQoJHJvd1tzZWxmOjpEQl9JVEVNLidfX2lkJ10pKQoJCXsKCQkJJHRoaXMtPnNldElkKCRyb3dbc2VsZjo6REJfSVRFTS4nX19pZCddKTsKCQl9CQkKCQkKCQlpZiAoaXNzZXQoJHBhcmFtc1sndXNlcl9pZCddKSkgewoJCQkJJHRoaXMtPnVzZXJfaWQgPSAkcm93W3NlbGY6OkRCX0lURU0uJ19fdXNlcl9pZCddOyAvLyRwYXJhbXNbJ2NyZWF0ZWRfYXQnXTsKCQl9CQkKCQlpZiAoaXNzZXQoJHBhcmFtc1snY3JlYXRlZF9hdCddKSkgewoJCQkJJHRoaXMtPmNyZWF0ZWRfYXQgPSAkcm93W3NlbGY6OkRCX0lURU0uJ19fY3JlYXRlZF9hdCddOyAvLyRwYXJhbXNbJ2NyZWF0ZWRfYXQnXTsKCQkJfQoJCWlmIChpc3NldCgkcGFyYW1zWydjcmVhdGVkX2J5J10pKSB7CgkJCSR0aGlzLT5jcmVhdGVkX2J5ID0gJHJvd1tzZWxmOjpEQl9JVEVNLidfX2NyZWF0ZWRfYnknXTsgLy8kcGFyYW1zWydjcmVhdGVkX2J5J107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWyd1cGRhdGVkX2F0J10pKSB7CgkJCSR0aGlzLT51cGRhdGVkX2F0ID0gJHJvd1tzZWxmOjpEQl9JVEVNLidfX3VwZGF0ZWRfYXQnXTsgLy8kcGFyYW1zWyd1cGRhdGVkX2F0J107CgkJfQoJCWlmIChpc3NldCgkcGFyYW1zWyd1cGRhdGVkX2J5J10pKSB7CgkJCSR0aGlzLT51cGRhdGVkX2J5ID0gJHJvd1tzZWxmOjpEQl9JVEVNLidfX3VwZGF0ZWRfYnknXTsgLy8kcGFyYW1zWyd1cGRhdGVkX2J5J107CgkJfQoJCQoJCWZvcmVhY2ggKHNlbGY6OiRmaWVsZHMgYXMgJGZpZWxkKQoJCXsKCQkJaWYgKGlzc2V0KCRyb3dbc2VsZjo6REJfSVRFTS4nX18nLiRmaWVsZF0pKQoJCQl7CgkJCQkkdGhpcy0+JGZpZWxkID0gJHJvd1tzZWxmOjpEQl9JVEVNLidfXycuJGZpZWxkXTsKCQkJfQoJCX0KCX0KCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdlbmVyYXRlU2VsZWN0TGlzdCgpCgl7CgkJJGZpZWxkcyA9IGFycmF5X21lcmdlKGFycmF5KCdpZCcsJ3VzZXJfaWQnLCdjcmVhdGVkX2F0JywnY3JlYXRlZF9ieScsJ3VwZGF0ZWRfYXQnLCd1cGRhdGVkX2J5JyksIHNlbGY6OiRmaWVsZHMpOwoJCSRsaXN0ID0gYXJyYXkoKTsKCQlmb3JlYWNoICgkZmllbGRzIGFzICRmaWVsZCkKCQl7CgkJCSRsaXN0W10gPSBzZWxmOjpEQl9JVEVNIC4gJy4nLiRmaWVsZC4nIGFzICcuIHNlbGY6OmdldFJvd05hbWUoJGZpZWxkKTsKCQl9CgkJcmV0dXJuIGltcGxvZGUoJyAsICcsJGxpc3QpOwoJfQoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldFJvd05hbWUoJG5hbWUpCgl7CgkJcmV0dXJuIHNlbGY6OkRCX0lURU0gLiAnX18nIC4gJG5hbWU7Cgl9CgoKCXB1YmxpYyBmdW5jdGlvbiBzYXZlKCRwYXJhbXMgPSBhcnJheSgpKSB7CgkJZ2xvYmFsICRnQ21zOwoJCWlmICgkdGhpcy0+Z2V0SWQoKSkgewoJCSAgICBpZiAoJHRoaXMtPmlzX21vZGlmaWVkKSB7CgkJICAgICAgICAkdGhpcy0+dXBkYXRlKCRwYXJhbXMpOwoJCSAgICB9CgkJfSBlbHNlIHsKCQkJJHRoaXMtPmluc2VydCgkcGFyYW1zKTsKCQl9CgkJJGdDbXMtPm1vZHVsZXNbJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nXVsnb2JqZWN0J10tPmluZGV4KCR0aGlzKTsKCQkvLwlkZWJ1Z19kaXNwbGF5KCRlbnRyeSk7IC8vIFRPIElNUExFTUVOVDogU2hvdyBkYXRhcyBmb3IgZGVidWcKCQlyZXR1cm4gdHJ1ZTsKCX0KCglwdWJsaWMgZnVuY3Rpb24gZGVsZXRlKCkgewoJCWdsb2JhbCAkZ0NtczsKCQlpZiAoJHRoaXMtPmdldElkKCkpIHsKCQkJJHF1ZXJ5ID0gJ0RFTEVURSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLnNlbGY6OkRCX05BTUUgLicgV0hFUkUgaWQgPSA/JzsKCQkJJHRoaXMtPnF1ZXJ5KCRxdWVyeSwgYXJyYXkoJHRoaXMtPmlkKSk7CgkJCQoJCQlNWF9SZWxhdGlvbkxpbms6OmNsZWFuUmVsYXRlZEl0ZW1zKCd7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19JywgJHRoaXMtPmdldElkKCkpOwoJCX0KCQkvLyBERUxFVEUgQUxMIFJFTEFURUQgRE9DVU1FTlRTCQkKCQl7e2ZvcmVhY2ggZnJvbT0kZXh0cmFfZmllbGRzIGl0ZW09ZmllbGR9fQoJCQl7e2lmICRmaWVsZC5mb3JtX3R5cGUgPT0gJ2ZpbGUnfX0KCQkJCSR0aGlzLT5kZWxldGV7eyRmaWVsZC5jYW1lbGNhc2V9fSgpOwoJCQl7ey9pZn19CgkJe3svZm9yZWFjaH19CgkJJGdDbXMtPm1vZHVsZXNbJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nXVsnb2JqZWN0J10tPmRlaW5kZXgoJHRoaXMpOwoJCXJldHVybiB0cnVlOwoJfQoKCXByb3RlY3RlZCBmdW5jdGlvbiBpbnNlcnQoJHBhcmFtcyA9IGFycmF5KCkpIHsKCQlnbG9iYWwgJGdDbXM7CgkJJGRiID0gJGdDbXMtPkdldERiKCk7CgkJJHRoaXMtPnNldElkKCRkYi0+R2VuSUQoY21zX2RiX3ByZWZpeCgpLiBzZWxmOjpEQl9OQU1FIC4gJ19zZXEnKSk7CgkJJHF1ZXJ5ID0gJ1NFTEVDVCBNQVgob3JkZXJfYnkpICsgMSBBUyBvcmRlcl9ieSBGUk9NICcuY21zX2RiX3ByZWZpeCgpLnNlbGY6OkRCX05BTUU7CgkJJHZhbHVlcyA9IGFycmF5KCk7CgkJaWYgKCR0aGlzLT5wYXJlbnRfaXRlbSkgewoJCQkkcXVlcnkgLj0gJyBXSEVSRSBwYXJlbnRfaXRlbSA9ID8nOwoJCQkkdmFsdWVzW10gPSAkdGhpcy0+cGFyZW50X2l0ZW07CgkJfQoJCSRyZXN1bHQgPSAkZGItPmV4ZWN1dGUoJHF1ZXJ5LCAkdmFsdWVzKTsKCQkkcm93ID0gJHJlc3VsdC0+RmV0Y2hSb3coKTsKCQkkb3JkZXJfYnkgPSAkcm93WydvcmRlcl9ieSddID8gJHJvd1snb3JkZXJfYnknXSA6IDE7CgkJaWYoaXNzZXQoJHBhcmFtc1snZnJvbnRlbmQnXSkpCgkJewoJCQkkdXNlcmlkID0gbnVsbDsKCQl9CgkJZWxzZQoJCXsKCQkJJHVzZXJpZCA9IGdldF91c2VyaWQoKTsKCQl9CQkKCQkkcXVlcnkgPSAnSU5TRVJUIElOVE8gJy5jbXNfZGJfcHJlZml4KCkuc2VsZjo6REJfTkFNRSAuICcKCQkJU0VUIGlkID0gPywKCQkJCXVzZXJfaWQgPSA/LAoJCQkgIHBhcmVudF9pZCA9ID8sCgkJCQl0aXRsZSA9ID8sCgkJCQl7e2ZvcmVhY2ggZnJvbT0kZXh0cmFfZmllbGRzIGl0ZW09ZmllbGR9fQoJCQkJe3skZmllbGQubmFtZX19ID0gPywKCQkJCXt7L2ZvcmVhY2h9fQoJCQkJY3JlYXRlZF9ieSA9ID8sCgkJCQljcmVhdGVkX2F0ID0gTk9XKCksCgkJCQl1cGRhdGVkX2J5ID0gPywKCQkJCXVwZGF0ZWRfYXQgPSBOT1coKSwKCQkJCW9yZGVyX2J5ID0gPywKCQkJCXBhcmVudF9pdGVtID0gPywKCQkJCXB1Ymxpc2hlZCA9ID8sCgkJCQlmdWxsX3RleHRfc2VhcmNoID0gPyc7CgkJJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoCgkJICAgICR0aGlzLT5pZCwKCQkJCSR0aGlzLT51c2VyX2lkLAoJCQkkdGhpcy0+cGFyZW50X2lkLAoJCQkkdGhpcy0+dGl0bGUsCgkJCXt7Zm9yZWFjaCBmcm9tPSRleHRyYV9maWVsZHMgaXRlbT1maWVsZH19CgkJCSR0aGlzLT57eyRmaWVsZC5uYW1lfX0sCgkJCXt7L2ZvcmVhY2h9fQoJCQkkdXNlcmlkLAoJCQkkdXNlcmlkLAoJCQkkb3JkZXJfYnksCgkJCSR0aGlzLT5wYXJlbnRfaXRlbSwKCQkJJHRoaXMtPnB1Ymxpc2hlZCwKCQkJJHRoaXMtPmZ1bGxfdGV4dF9zZWFyY2goKQoJCSkpOwoJCSRnQ21zLT5tb2R1bGVzWyd7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19J11bJ29iamVjdCddLT5TZW5kRXZlbnQoJ0NvbnRlbnRFZGl0UG9zdCcsIGFycmF5KCkpOwoJCXJldHVybiB0cnVlOwoJfQoKCXByb3RlY3RlZCBmdW5jdGlvbiB1cGRhdGUoJHBhcmFtcyA9IGFycmF5KCkpIHsKCQlnbG9iYWwgJGdDbXM7CgkJJGRiID0gJGdDbXMtPkdldERiKCk7CgkJaWYoaXNzZXQoJHBhcmFtc1snZnJvbnRlbmQnXSkpCgkJewoJCQkkdXNlcmlkID0gbnVsbDsKCQl9CgkJZWxzZQoJCXsKCQkJJHVzZXJpZCA9IGdldF91c2VyaWQoKTsKCQl9CgkJJHF1ZXJ5ID0gJ1VQREFURSAnLmNtc19kYl9wcmVmaXgoKS5zZWxmOjpEQl9OQU1FLiAnCgkJCVNFVCAKCQkJCXVzZXJfaWQgPSA/LAoJCQkJcGFyZW50X2lkID0gPywKCQkJCXRpdGxlID0gPywKCQkJCXt7Zm9yZWFjaCBmcm9tPSRleHRyYV9maWVsZHMgaXRlbT1maWVsZH19CgkJCQl7eyRmaWVsZC5uYW1lfX0gPSA/LAoJCQkJe3svZm9yZWFjaH19CgkJCQl1cGRhdGVkX2J5ID0gPywKCQkJCXVwZGF0ZWRfYXQgPSBOT1coKSwKCQkJCW9yZGVyX2J5ID0gPywKCQkJCXBhcmVudF9pdGVtID0gPywKCQkJCXB1Ymxpc2hlZCA9ID8sCgkJCQlmdWxsX3RleHRfc2VhcmNoID0gPwoJCQlXSEVSRSBpZCA9ID8nOwoJCSRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KAoJCQkkdGhpcy0+dXNlcl9pZCwKCQkJJHRoaXMtPnBhcmVudF9pZCwKCQkJJHRoaXMtPnRpdGxlLAoJCQl7e2ZvcmVhY2ggZnJvbT0kZXh0cmFfZmllbGRzIGl0ZW09ZmllbGR9fQoJCQkkdGhpcy0+e3skZmllbGQubmFtZX19LAoJCQl7ey9mb3JlYWNofX0KCQkJJHVzZXJpZCwKCQkJJHRoaXMtPm9yZGVyX2J5LAoJCQkkdGhpcy0+cGFyZW50X2l0ZW0sCgkJCSR0aGlzLT5wdWJsaXNoZWQsCgkJCSR0aGlzLT5mdWxsX3RleHRfc2VhcmNoKCksCgkJCSR0aGlzLT5pZAoJCSkpOwoJCSRnQ21zLT5tb2R1bGVzWyd7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19J11bJ29iamVjdCddLT5TZW5kRXZlbnQoJ0NvbnRlbnRFZGl0UG9zdCcsYXJyYXkoKSk7CgkJcmV0dXJuIHRydWU7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdXBkYXRlT2JqZWN0cygpCgl7CgkJJGMgPSBuZXcgTUNGQ3JpdGVyaWEoKTsKCQkkb2JqZWN0cyA9IHNlbGY6OmRvU2VsZWN0KCRjKTsKCQlmb3JlYWNoKCRvYmplY3RzIGFzICRvYmplY3QpCgkJewoJCQkkb2JqZWN0LT5pc19tb2RpZmllZCA9IHRydWU7CgkJCSRvYmplY3QtPnNhdmUoKTsKCQl9Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBmb3JjZVVwZGF0ZU9iamVjdCgkbWFnaWMpCgl7CgkJaWYgKCRtYWdpYyA9ICdtYWdpYycpCgkJewoJCQkkdGhpcy0+aXNfbW9kaWZpZWQgPSB0cnVlOwoJCQkkdGhpcy0+c2F2ZSgpOwoJCX0KCX0KCQoJCgkvLyBGSUxURVJTCgkKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYnVpbGRGaWx0ZXJzV2lkZ2V0cyhDTVNGb3JtICYkZm9ybSwgJGZpbHRlcnMpCgl7CgkJe3tmb3JlYWNoIGZyb209JGV4dHJhX2ZpZWxkcyBpdGVtPWZpZWxkfX0KCQkJe3tpZiAkZmllbGQuZmlsdGVyID09IHRydWV9fQoJCQkJe3tpZiAkZmllbGQudHlwZSA9PSAndGV4dCcgfHwgJGZpZWxkLnR5cGUgPT0gJ3RleHRhcmVhJyB8fCAkZmllbGQudHlwZSA9PSAndGV4dGFyZWFfcGxhaW4nfX0KCQkJCQkkZm9ybS0+c2V0V2lkZ2V0KCdtb2R1bGVGaWx0ZXJzW3t7JGZpZWxkLm5hbWV9fV0nLCAndGV4dCcsIGFycmF5KCdzaXplJyA9PiAnMTInLCAnbGFiZWwnID0+ICd7eyRmaWVsZC5mcmllbmRseW5hbWV9fScsCgkJCQkJICd2YWx1ZScgPT4gaXNzZXQoJGZpbHRlcnNbJ3t7JGZpZWxkLm5hbWV9fSddKT8kZmlsdGVyc1sne3skZmllbGQubmFtZX19J106bnVsbAoJCQkJCSkpOwoJCQkJe3tlbHNlaWYgJGZpZWxkLnR5cGUgPT0gJ21vZHVsZSd9fQoJCQkJCWlmKGNsYXNzX2V4aXN0cygne3skZmllbGQuZm9wdGlvbnMubW9kdWxlX25hbWV9fU9iamVjdCcpKQoJCQkJCXsKCQkJCQkJJGl0ZW1zID0ge3skZmllbGQuZm9wdGlvbnMubW9kdWxlX25hbWV9fU9iamVjdDo6Z2V0VGl0bGVzKCk7CgkJCQkJfQoJCQkJCWVsc2UKCQkJCQl7CgkJCQkJCSRpdGVtcyA9IGFycmF5KCk7CgkJCQkJfQoJCQkJCSRmb3JtLT5zZXRXaWRnZXQoJ21vZHVsZUZpbHRlcnNbe3skZmllbGQubmFtZX19XScsICdzZWxlY3QnLCBhcnJheSgKCQkJCQkJJ3ZhbHVlcycgPT4gCgkJCQkJCQkJYXJyYXkoMCA9PiAnJmxhcXVvOyB7eyRmaWVsZC5mcmllbmRseW5hbWV9fSAmcmFxdW87JykgKwoJCQkJCQkJCSRpdGVtcwoJCQkJCQkJLAoJCQkJCQkJJ2xhYmVsJyA9PiAnJywKCQkJCQkJCSd2YWx1ZScgPT4gaXNzZXQoJGZpbHRlcnNbJ3t7JGZpZWxkLm5hbWV9fSddKT8kZmlsdGVyc1sne3skZmllbGQubmFtZX19J106bnVsbAoJCQkJCQkpKTsKCQkJCXt7ZWxzZWlmICRmaWVsZC5mb3JtX3R5cGUgPT0gJ3NlbGVjdCd9fQoJCQkJCSRmb3JtLT5zZXRXaWRnZXQoJ21vZHVsZUZpbHRlcnNbe3skZmllbGQubmFtZX19XScsICdzZWxlY3QnLCBhcnJheSgKCQkJCQkJJ3ZhbHVlcycgPT4gCgkJCQkJCQkJYXJyYXkoMCA9PiAnJmxhcXVvOyB7eyRmaWVsZC5mcmllbmRseW5hbWV9fSAmcmFxdW87JykgKwoJCQkJCQkJCXt7JGZpZWxkLnNlbGVjdF9vcHRpb25zfX0KCQkJCQkJCSwKCQkJCQkJCSdsYWJlbCcgPT4gJycsCgkJCQkJCQkndmFsdWUnID0+IGlzc2V0KCRmaWx0ZXJzWyd7eyRmaWVsZC5uYW1lfX0nXSk/JGZpbHRlcnNbJ3t7JGZpZWxkLm5hbWV9fSddOm51bGwKCQkJCQkJKSk7CgkJCQl7e2Vsc2VpZiAkZmllbGQudHlwZSA9PSAndXNlcid9fQoJCQkJCWlmKGNsYXNzX2V4aXN0cygnQ01TVXNlcicpKQoJCQkJCXsKCQkJCQkJJHVzZXJzID0gQ01TVXNlcjo6Z2V0VXNlckxpc3QoKTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsKCQkJCQkJJHVzZXJzID0gYXJyYXkoKTsKCQkJCQl9CgkJCQkKCQkJCQkkZm9ybS0+c2V0V2lkZ2V0KCdtb2R1bGVGaWx0ZXJzW3t7JGZpZWxkLm5hbWV9fV0nLCAnc2VsZWN0JywgYXJyYXkoCgkJCQkJCSd2YWx1ZXMnID0+IAoJCQkJCQkJCWFycmF5KDAgPT4gJyZsYXF1bzsge3skZmllbGQuZnJpZW5kbHluYW1lfX0gJnJhcXVvOycpICsKCQkJCQkJCQkkdXNlcnMKCQkJCQkJCSwKCQkJCQkJCSdsYWJlbCcgPT4gJycsCgkJCQkJCQkndmFsdWUnID0+IGlzc2V0KCRmaWx0ZXJzWyd7eyRmaWVsZC5uYW1lfX0nXSk/JGZpbHRlcnNbJ3t7JGZpZWxkLm5hbWV9fSddOm51bGwKCQkJCQkJKSk7CgkJCQl7ey9pZn19CgoJCQl7ey9pZn19CgkJe3svZm9yZWFjaH19Cgl9CgkKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYnVpbGRGaWx0ZXJzQ3JpdGVyaWEoTUNGQ3JpdGVyaWEgJiRjLCAkZmlsdGVycykKCXsKCQl7e2ZvcmVhY2ggZnJvbT0kZXh0cmFfZmllbGRzIGl0ZW09ZmllbGR9fQoJCQl7e2lmICRmaWVsZC5maWx0ZXIgPT0gdHJ1ZX19CgkJCQl7e2lmICRmaWVsZC50eXBlID09ICd0ZXh0JyB8fCAkZmllbGQudHlwZSA9PSAndGV4dGFyZWEnIHx8ICRmaWVsZC50eXBlID09ICd0ZXh0YXJlYV9wbGFpbid9fQoJCQkJCWlmIChpc3NldCgkZmlsdGVyc1sne3skZmllbGQubmFtZX19J10pKQoJCQkJCXsKCQkJCQkJCSRjLT5hZGQoJ3t7JGZpZWxkLm5hbWV9fScsICclJy4kZmlsdGVyc1sne3skZmllbGQubmFtZX19J10uJyUnLCBNQ0ZDcml0ZXJpYTo6TElLRSk7CgkJCQkJfQoJCQkJe3tlbHNlaWYgJGZpZWxkLnR5cGUgPT0gJ21vZHVsZScgfHwgJGZpZWxkLnR5cGUgPT0gJ3VzZXInIHx8ICRmaWVsZC5mb3JtX3R5cGUgPT0gJ3NlbGVjdCd9fQoJCQkJCWlmIChpc3NldCgkZmlsdGVyc1sne3skZmllbGQubmFtZX19J10pKQoJCQkJCXsKCQkJCQkJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMubXVsdGlwbGUpfX0JCQkJCQkKCQkJCQkJCSRjLT5hZGQoJ3t7JGZpZWxkLm5hbWV9fScsICRmaWx0ZXJzWyd7eyRmaWVsZC5uYW1lfX0nXSwgTUNGQ3JpdGVyaWE6Ok1VTFRJTElLRSk7CgkJCQkJCXt7ZWxzZX19CQkJCQkJCgkJCQkJCQkkYy0+YWRkKCd7eyRmaWVsZC5uYW1lfX0nLCAkZmlsdGVyc1sne3skZmllbGQubmFtZX19J10sIE1DRkNyaXRlcmlhOjpFUVVBTCk7CgkJCQkJCXt7L2lmfX0KCQkJCQl9CgkJCQl7ey9pZn19CgkJCXt7L2lmfX0KCQl7ey9mb3JlYWNofX0KCX0KCQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRGRUZpbHRlcigkZm9ybSwgJGZpbHRlciwgJG9wdGlvbnMgPSBhcnJheSgpKQoJewoJCWdsb2JhbCAkZ0NtczsKCQlzd2l0Y2goJGZpbHRlcikKCQl7CgkJe3tmb3JlYWNoIGZyb209JGZpbHRlcnMgaXRlbT1maWx0ZXJ9fQoJCWNhc2UgJ3t7JGZpbHRlci5uYW1lfX0nOgkKCQkJe3tpZiAkZmlsdGVyLmZpZWxkID09ICd0aXRsZSd9fQoJCQkJJGZvcm0tPnNldFdpZGdldCgndGl0bGUnLCd0ZXh0JywgJG9wdGlvbnMpOwoJCQl7e2Vsc2V9fQoJCQkJe3tmb3JlYWNoIGZyb209JGV4dHJhX2ZpZWxkcyBpdGVtPWZpZWxkfX0KCQkJCQl7e2lmICRmaWx0ZXIuZmllbGQgPT0gJGZpZWxkLm5hbWV9fQoJCQkJCQlpZiAoIWlzc2V0KCRvcHRpb25zWydsYWJlbCddKSkgJG9wdGlvbnNbJ2xhYmVsJ10gPSAne3skZmllbGQubGFiZWx9fSc7CgkJCQkJCXt7aWYgJGZpZWxkLnR5cGUgPT0gJ3RleHQnIG9yICRmaWVsZC50eXBlID09ICd0ZXh0YXJlYScgb3IgJGZpZWxkLnR5cGUgPT0gJ3RleHRhcmVhX3BsYWluJ319CgkJCQkJCQkkZm9ybS0+c2V0V2lkZ2V0KCd7eyRmaWx0ZXIubmFtZX19JywgJ3RleHQnLCAkb3B0aW9ucyk7CgkJCQkJCXt7ZWxzZWlmICRmaWVsZC5mb3JtX3R5cGUgPT0gJ3NlbGVjdCd9fQoJCQkJCQkJaWYgKCFpc3NldCgkb3B0aW9uc1snaW5jbHVkZV9jdXN0b20nXSkpICRvcHRpb25zWydpbmNsdWRlX2N1c3RvbSddID0gJyZsYXF1bzsgJyAuICRnQ21zLT5tb2R1bGVzW3NlbGY6Ok1PRFVMRV9OQU1FXVsnb2JqZWN0J10tPmxhbmcoJ3NlbGVjdF9vbmUnKSAuICcgJnJhcXVvOyc7CgkJCQkJCQl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy5zZWxlY3Rvcil9fQoJCQkJCQkJJGMgPSBuZXcgTUNGQ3JpdGVyaWEoKTsKCQkJCQkJCSRjLT5hZGQoJ3B1Ymxpc2hlZCcsIDEpOwoJCQkJCQkJJG9wdGlvbnNbJ3ZhbHVlcyddID0ge3skZmllbGQuZm9wdGlvbnMubW9kdWxlX25hbWV9fU9iamVjdDo6e3skZmllbGQuZm9wdGlvbnMuc2VsZWN0b3J9fSgkYyk7CgkJCQkJCQl7e2Vsc2V9fQoJCQkJCQkJJG9wdGlvbnNbJ3ZhbHVlcyddID0ge3skZmllbGQuc2VsZWN0X29wdGlvbnN9fTsKCQkJCQkJCXt7L2lmfX0KCQkJCQkJCSRmb3JtLT5zZXRXaWRnZXQoJ3t7JGZpbHRlci5uYW1lfX0nLCAnc2VsZWN0JywgJG9wdGlvbnMpOwoJCQkJCQl7e2Vsc2VpZiAkZmllbGQudHlwZSA9PSAnbW9kdWxlJ319CgkJCQkJCQlpZiAoIWlzc2V0KCRvcHRpb25zWydpbmNsdWRlX2N1c3RvbSddKSkgJG9wdGlvbnNbJ2luY2x1ZGVfY3VzdG9tJ10gPSAnJmxhcXVvOyAnIC4gJGdDbXMtPm1vZHVsZXNbc2VsZjo6TU9EVUxFX05BTUVdWydvYmplY3QnXS0+bGFuZygnc2VsZWN0X29uZScpIC4gJyAmcmFxdW87JzsKCQkJCQkJCWlmKGNsYXNzX2V4aXN0cygne3skZmllbGQuZm9wdGlvbnMubW9kdWxlX25hbWV9fU9iamVjdCcpKQoJCQkJCQkJewoJCQkJCQkJCSRvcHRpb25zWyd2YWx1ZXMnXSA9IHt7JGZpZWxkLmZvcHRpb25zLm1vZHVsZV9uYW1lfX1PYmplY3Q6OmdldFRpdGxlcygpOwoJCQkJCQkJfQoJCQkJCQkJZWxzZQoJCQkJCQkJewoJCQkJCQkJCSRvcHRpb25zWyd2YWx1ZXMnXSA9IGFycmF5KCk7CgkJCQkJCQl9CQkJCQkJCgkJCQkJCQkkZm9ybS0+c2V0V2lkZ2V0KCd7eyRmaWx0ZXIubmFtZX19JywgJ3NlbGVjdCcsICRvcHRpb25zKTsKCQkJCQkJe3svaWZ9fQoJCQkJCXt7L2lmfX0KCQkJCXt7L2ZvcmVhY2h9fQoJCQl7ey9pZn19CgkJYnJlYWs7CgkJe3svZm9yZWFjaH19CgkJCWRlZmF1bHQ6CgkJCQlicmVhazsKCQl9Cgl9CgoJLy8gRXhlY3V0ZWQgaW4gdGhlIGVkaXQgYWN0aW9uIHdoZW4gZXZlcnl0aGluZyB3ZW50IGZpbmUgKEV4ZWN1dGVkIGFmdGVyIGl0ZW0gc2F2ZSB0aG91Z2gpCglwdWJsaWMgZnVuY3Rpb24gcG9zdEFjdGlvbnMoKQoJewoJCQoJfQoJCgkvLyBBbGxvdyB5b3UgdG8gcmVzdHJpY3QgdGhlIGZyb250ZW5kIGxpc3QgYW5kIGRldGFpbHMgd2l0aCByZXF1aXJlZCBmaWx0ZXJzCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdsb2JhbEZyb250ZW5kRmlsdGVycyhNQ0ZDcml0ZXJpYSAmJGMpCgl7CgkJCgl9CgoJLy8gRlJPTlRFTkQgRk9STVMgOiBDSEVDSyBQRVJNSVNTSU9OUwoJCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGNoZWNrUGVybWlzc2lvbnMoJHBhcmFtcyA9IGFycmF5KCkpCgl7CgkJcmV0dXJuIHRydWU7IC8vIENhbiBiZSBvdmVyaWRlIGluIHRoZSBjdXN0b20gbG9naWMKCX0KCQoJcHVibGljIGZ1bmN0aW9uIGlzVXNlckl0ZW0oKQoJewoJCSR1c2VyID0gQ01TVXNlcnM6OmdldFVzZXIoKTsKCQlpZiAoaXNfb2JqZWN0KCR1c2VyKSkKCQl7CgkJCWlmICgkdXNlci0+Z2V0SWQoKSA9PSAkaXRlbS0+Z2VVc2VySWQoKSkKCQkJewoJCQkJcmV0dXJuIHRydWU7CgkJCX0KCQl9CgkJcmV0dXJuIGZhbHNlOwoJfQoJCgkvLyBFeGVjdXRlZCBpbiB0aGUgdXNlcl9mb3JtIGFjdGlvbiB3aGVuIGV2ZXJ5dGhpbmcgd2VudCBmaW5lCglwdWJsaWMgZnVuY3Rpb24gdXNlclBvc3RBY3Rpb25zKCRpZCwgJHJldHVybmlkKQoJewoJCSR0aGlzLT5wb3N0QWN0aW9ucygpOwoJfQp9Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/classes/MCFModuleObjectPeer.class.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmNsYXNzIHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX1PYmplY3RQZWVyIHsKCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGRvU2VsZWN0KE1DRkNyaXRlcmlhICRjID0gbnVsbCkgewoJCWdsb2JhbCAkZ0NtczsKCQkkZGIgPSAkZ0Ntcy0+R2V0RGIoKTsKCQkkYyA9IGNsb25lICRjOwoJCSRxdWVyeSA9ICRjLT5idWlsZFF1ZXJ5KGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfe3skdGFibGVfbmFtZX19Jyk7CgkJJHJlc3VsdCA9ICRkYi0+ZXhlY3V0ZSgkcXVlcnksICRjLT52YWx1ZXMpOwoJCSRvYmplY3RzID0gYXJyYXkoKTsKCQl3aGlsZSAoJHJlc3VsdCAmJiAkcm93ID0gJHJlc3VsdC0+RmV0Y2hSb3coKSkgewoJCQkkb2JqZWN0ID0gbmV3IHNlbGYoKTsKCQkJJG9iamVjdC0+cG9wdWxhdGVGcm9tQXJyYXkoJHJvdyk7CgkJCSRvYmplY3QtPmlzX21vZGlmaWVkID0gZmFsc2U7CgkJCSRvYmplY3RzW10gPSAkb2JqZWN0OwoJCX0KCQlyZXR1cm4gJG9iamVjdHM7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBkb1NlbGVjdE9uZShNQ0ZDcml0ZXJpYSAkYyA9IG51bGwpIHsKICAgICAgICAKICAgIH0KCn0KCj8+]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/classes/MCFModuleViews.class.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCi8qCgkvLyBDTEFTUyBUTyBIQU5ETEUgVEhFIFZJRVdTCiovCgpjbGFzcyB7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19Vmlld3MgewoKcHVibGljIHN0YXRpYyBmdW5jdGlvbiBhZG1pbkl0ZW1zKCRnQ21zLCRtb2R1bGUsJGlkLCRyZXR1cm5pZCwkdmlldywkaXRlbXMsJHBhcmVudF9pZD1udWxsKQp7CglpZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCgkvLyBQcmV2aWV3IGNvZGUKCWlmICghaXNzZXQoJF9TRVNTSU9OWyd7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19J11bJ3ByZXZpZXdfa2V5J10pKQoJewoJCSRfU0VTU0lPTlsne3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fSddWydwcmV2aWV3X2tleSddID0gYmFzZTY0X2VuY29kZSh0aW1lKCkpOwoJfQoKCS8vICR2aWV3ID0gbmV3IE1DRkxpc3RWaWV3KCd7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19JywgJHBhcmFtcyk7CgkvLyAkdmlldy0+c2V0T3JkZXJCeSgkbW9kdWxlLT5nZXRQcmVmZXJlbmNlKCdvcmRlcl9ieScsICdvcmRlcl9ieScpIC4gJyAnIC4gJG1vZHVsZS0+Z2V0UHJlZmVyZW5jZSgnb3JkZXJfYnlfZGlyZWN0aW9uJywgJ2FzYycpKTsKCS8vICR2aWV3LT5zZXRJdGVtc1BlclBhZ2UoJG1vZHVsZS0+Z2V0UHJlZmVyZW5jZSgnaXRlbXNfcGVyX3BhZ2UnLCAnMjUnKSk7CgkvLyAkaXRlbXMgPSAkdmlldy0+Z2V0SXRlbXMoKTsKCWlmIChpc19udWxsKCRwYXJlbnRfaWQpKQoJewoJCSR0b3RhbEl0ZW1zID0gJHZpZXctPmdldFRvdGFsSXRlbXMoKTsKCX0KCWVsc2UKCXsKCQkkdG90YWxJdGVtcyA9IGNvdW50KCRpdGVtcyk7Cgl9CgkKCSRtb2R1bGUtPnNtYXJ0eS0+YXNzaWduKCd0b3RhbF9pdGVtcycsICR0b3RhbEl0ZW1zKTsKCQoJCgkkaWRzID0gYXJyYXkoKTsKCSRyb3dzID0gYXJyYXkoKTsKCSRpID0gMDsKCglmb3JlYWNoICgkaXRlbXMgYXMgJGN1cnIgPT4gJGl0ZW0pIHsKCQkkaWRzW10gPSAkY3VycjsKCQkkcm93c1skaV0gPSBhcnJheSgKCQkgICdpZCcgPT4gJGl0ZW0tPmdldElkKCksCgkJCSd0aXRsZWxpbmsnID0+ICRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdCcsICRyZXR1cm5pZCwgJGl0ZW0tPmdldFRpdGxlKCksIGFycmF5KCd2aWV3JyA9PiAkdmlldy0+Z2V0VmlldygpLCAnaXRlbV9pZCcgPT4gJGl0ZW0tPmdldElkKCkpLCAnJywgZmFsc2UsIGZhbHNlLCAnY2xhc3M9Iml0ZW1saW5rIicpLAoJCQkncHVibGlzaGxpbmsnID0+ICRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAncHVibGlzaCcsICRyZXR1cm5pZCwgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoKCRpdGVtLT5nZXRQdWJsaXNoZWQoKSA/ICdpY29ucy9zeXN0ZW0vdHJ1ZS5naWYnIDogJ2ljb25zL3N5c3RlbS9mYWxzZS5naWYnKSwgKCRpdGVtLT5nZXRQdWJsaXNoZWQoKSA/ICRtb2R1bGUtPkxhbmcoJ3VucHVibGlzaCcpIDogJG1vZHVsZS0+TGFuZygncHVibGlzaCcpKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgndmlldycgPT4gJHZpZXctPmdldFZpZXcoKSwgJ2l0ZW1faWQnID0+ICRpdGVtLT5nZXRJZCgpKSksCgkJCSdkZWxldGVsaW5rJyA9PiAkbW9kdWxlLT5DcmVhdGVMaW5rKCRpZCwgJ2RlbGV0ZScsICRyZXR1cm5pZCwgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJG1vZHVsZS0+TGFuZygnZGVsZXRlJyksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3ZpZXcnID0+ICR2aWV3LT5nZXRWaWV3KCksICdpdGVtX2lkJyA9PiAkaXRlbS0+Z2V0SWQoKSksICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgZW50cnk/JyksCgkJCSdlZGl0bGluaycgPT4gJG1vZHVsZS0+Q3JlYXRlTGluaygkaWQsICdlZGl0JywgJHJldHVybmlkLCAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgJGl0ZW0tPmdldFRpdGxlKCksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3ZpZXcnID0+ICR2aWV3LT5nZXRWaWV3KCksICdpdGVtX2lkJyA9PiAkaXRlbS0+Z2V0SWQoKSkpLAoJCQkncHJldmlld2xpbmsnID0+ICRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAnZGV0YWlsJywgJG1vZHVsZS0+Z2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9wYWdlJyksICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vdmlldy5naWYnLCAkbW9kdWxlLT5sYW5nKCdwcmV2aWV3X3MnLCRpdGVtLT5nZXRUaXRsZSgpKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgncHJldmlld19rZXknID0+ICRfU0VTU0lPTlsne3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fSddWydwcmV2aWV3X2tleSddLCAnaXRlbV9pZCcgPT4gJGl0ZW0tPmdldElkKCkpLCAnJywgZmFsc2UsZmFsc2UsJyB0YXJnZXQ9Il9uZXciJywgdHJ1ZSkKCgkJKTsKCQkJCQoJCWlmKCRtb2R1bGUtPmdldFByZWZlcmVuY2UoJ3VzZV9jbW9uJywgJzAnKSA9PSAnMScpCgkJewoJCQkkdXJsID0gJG1vZHVsZS0+Q3JlYXRlTGluaygkaWQsICdkZXRhaWwnLCAkbW9kdWxlLT5nZXRQcmVmZXJlbmNlKCdjbW9uX2RlZmF1bHRfcGFnZScpLCAnJywgYXJyYXkoJ2RldGFpbHRlbXBsYXRlJyA9PiAkbW9kdWxlLT5nZXRQcmVmZXJlbmNlKCdjbW9uX3RlbXBsYXRlJyksICdpdGVtX2lkJyA9PiAkaXRlbS0+Z2V0SWQoKSksICcnLCB0cnVlLGZhbHNlLCcnLCB0cnVlKTsKCQkJJHBsYWluX3VybCA9ICRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAnZGV0YWlsJywgJG1vZHVsZS0+Z2V0UHJlZmVyZW5jZSgnY21vbl9kZWZhdWx0X3BhZ2UnKSwgJycsIGFycmF5KCdzaG93dGVtcGxhdGUnID0+ICdmYWxzZScsICdkZXRhaWx0ZW1wbGF0ZScgPT4gJG1vZHVsZS0+Z2V0UHJlZmVyZW5jZSgnY21vbl90ZW1wbGF0ZV9wbGFpbicpLCAnaXRlbV9pZCcgPT4gJGl0ZW0tPmdldElkKCkpLCAnJywgdHJ1ZSxmYWxzZSwnJywgdHJ1ZSk7CgkJCQoJCQlpZihpc3NldCgkZ0Ntcy0+bW9kdWxlc1snQ01vbiddKSkKCQkJewoJCQkJJHJvd3NbJGldWydjbW9uJ10gPSAgJGdDbXMtPm1vZHVsZXNbJ0NNb24nXVsnb2JqZWN0J10tPmNyZWF0ZVNlbmRMaW5rKCRpZCwkcmV0dXJuaWQsJHVybCwkcGxhaW5fdXJsKTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCSRyb3dzWyRpXVsnY21vbiddID0gICcnOwoJCQl9CgkJCQoJCX0KCQllbHNlCgkJewoJCQkkcm93c1skaV1bJ2Ntb24nXSA9ICcnOwoJCX0KCQkKCQlpZiAoKCRtb2R1bGUtPmdldFByZWZlcmVuY2UoJ3VzZV90d2l0dGVyJywgJzAnKSA9PSAnMScpICYmIGlzc2V0KCRnQ21zLT5tb2R1bGVzWydUd2l0dGVyJ10pKQoJCXsKCQkJJHVybCA9ICRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAnZGV0YWlsJywgJG1vZHVsZS0+Z2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9wYWdlJyksICcnLCBhcnJheSgnZGV0YWlsdGVtcGxhdGUnID0+ICRtb2R1bGUtPmdldFByZWZlcmVuY2UoJ2Ntb25fdGVtcGxhdGUnKSwgJ2l0ZW1faWQnID0+ICRpdGVtLT5nZXRJZCgpKSwgJycsIHRydWUsZmFsc2UsJycsIHRydWUpOwoJCQkkdGl0bGUgPSAkaXRlbS0+Z2V0VGl0bGUoKTsKCQkJCgkJCSRzdGF0dXMgPSBzdHJfcmVwbGFjZSgneyR0aXRsZX0nLCAkdGl0bGUsIHN0cl9yZXBsYWNlKCd7JHVybH0nLCAkdXJsLCAkbW9kdWxlLT5nZXRQcmVmZXJlbmNlKCd0d2l0dGVyX3RlbXBsYXRlJywgJ3skdGl0bGV9IC0geyR1cmx9JykpKTsgLy8gVE9ETzogUmVwbGFjZSB0aGF0IGJ5IHJlYWwgc21hcnR5CgkJCQoJCQkkcm93c1skaV1bJ3R3aXR0ZXInXSA9ICAkZ0Ntcy0+bW9kdWxlc1snVHdpdHRlciddWydvYmplY3QnXS0+Y3JlYXRlU2VuZExpbmsoJGlkLCRyZXR1cm5pZCxhcnJheSgnc3RhdHVzJyA9PiAkc3RhdHVzKSk7CgkJfQoJCWVsc2UKCQl7CgkJCSRyb3dzWyRpXVsndHdpdHRlciddID0gJyc7CgkJfQoJCQoJCWlmICghJHZpZXctPmlzQ3VzdG9tT3JkZXIoKSkgeyAvLyYmIGlzX251bGwoJHBhcmVudF9pZCkKCQkgICAgJGluZGV4ID0gKCR2aWV3LT5nZXRQYWdlKCkgLSAxKSAqICR2aWV3LT5nZXRJdGVtc1BlclBhZ2UoKSArICRpOwoJCSAgICBpZiAoJGluZGV4ID4gMCkgewoJICAgIAkJJHJvd3NbJGldWydtb3ZldXBsaW5rJ10gPSAkbW9kdWxlLT5DcmVhdGVMaW5rKCRpZCwgJ21vdmV1cCcsICRyZXR1cm5pZCwgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9hcnJvdy11LmdpZicsICRpdGVtLT5nZXRUaXRsZSgpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCd2aWV3JyA9PiAkdmlldy0+Z2V0VmlldygpLCAnaXRlbV9pZCcgPT4gJGl0ZW0tPmdldElkKCkpLCAnJywgZmFsc2UsIGZhbHNlLCAnY2xhc3M9Iml0ZW1saW5rIicpOwoJICAgIAl9CgkgICAgCWlmICgkaW5kZXggPCAkdG90YWxJdGVtcyAtIDEpIHsKCSAgICAJCSRyb3dzWyRpXVsnbW92ZWRvd25saW5rJ10gPSAkbW9kdWxlLT5DcmVhdGVMaW5rKCRpZCwgJ21vdmVkb3duJywgJHJldHVybmlkLCAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2Fycm93LWQuZ2lmJywgJGl0ZW0tPmdldFRpdGxlKCksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3ZpZXcnID0+ICR2aWV3LT5nZXRWaWV3KCksICdpdGVtX2lkJyA9PiAkaXRlbS0+Z2V0SWQoKSksICcnLCBmYWxzZSwgZmFsc2UsICdjbGFzcz0iaXRlbWxpbmsiJyk7CgkgICAgCX0KCQl9CgkJCgkJLy8JCWlmICgkaSA+IDApIHsKCQkvLyAJCQkJCSRzdWJtb2R1bGVzWyRjaGlsZC0+Z2V0SWQoKV1bJ2l0ZW1zJ11bJGldWydtb3ZldXBsaW5rJ10gPSAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ21vdmV1cCcsICRyZXR1cm5pZCwgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9hcnJvdy11LmdpZicsICRjdXJyZW50LT5nZXRUaXRsZSgpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCd2aWV3JyA9PiAkdmlldy0+Z2V0VmlldygpLCAnaXRlbV9pZCcgPT4gJGN1cnJlbnQtPmdldElkKCkpLCAnJywgZmFsc2UsIGZhbHNlLCAnY2xhc3M9Iml0ZW1saW5rIicpOwoJCS8vIAkJCQl9CgkJLy8gCQkJCWlmICgkaSA8IGNvdW50KCRpdGVtcykgLSAxKSB7CgkJLy8gCQkJCQkkc3VibW9kdWxlc1skY2hpbGQtPmdldElkKCldWydpdGVtcyddWyRpXVsnbW92ZWRvd25saW5rJ10gPSAkbW9kLT5DcmVhdGVMaW5rKCRpZCwgJ21vdmVkb3duJywgJHJldHVybmlkLCAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2Fycm93LWQuZ2lmJywgJGN1cnJlbnQtPmdldFRpdGxlKCksICcnLCAnJywgJ3N5c3RlbWljb24nKSwgYXJyYXkoJ3ZpZXcnID0+ICR2aWV3LT5nZXRWaWV3KCksICdpdGVtX2lkJyA9PiAkY3VycmVudC0+Z2V0SWQoKSksICcnLCBmYWxzZSwgZmFsc2UsICdjbGFzcz0iaXRlbWxpbmsiJyk7CgkJLy8gCQkJCX0KCQkKCQkrKyRpOwoJfQoJJG1vZHVsZS0+c21hcnR5LT5hc3NpZ24oJ3Jvd3MnLCAkcm93cyk7CgkkcmVzdWx0cyA9IGFycmF5KCk7Cgl7e2ZvcmVhY2ggZnJvbT0kZXh0cmFfZmllbGRzIGl0ZW09ZmllbGR9fQoJe3tpZiAkZmllbGQuY29sdW1uID09ICd0cnVlJ319Cglmb3JlYWNoICgkaXRlbXMgYXMgJGl0ZW0pCgl7CgkJe3tpZiAkZmllbGQudHlwZSA9PSAnZGF0ZSd9fQoJCSRyZXN1bHRzWyd7eyRmaWVsZC5sYWJlbH19J11bJGl0ZW0tPmdldElkKCldW10gPSBkYXRlKCRtb2R1bGUtPmdldFByZWZlcmVuY2UoJ2RhdGVfZm9ybWF0JywgJ2QvbS9ZJyksIHN0cnRvdGltZSgkaXRlbS0+Z2V0e3skZmllbGQuY2FtZWxjYXNlfX0oKSkpOwoJCQoJCXt7ZWxzZWlmICRmaWVsZC50eXBlID09ICdtb2R1bGUnfX0KCQl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy5tdWx0aXBsZSl9fQoJCSRyZXN1bHRzWyd7eyRmaWVsZC5sYWJlbH19J11bJGl0ZW0tPmdldElkKCldW10gPSBpbXBsb2RlKCcsICcsICRpdGVtLT5nZXR7eyRmaWVsZC5jYW1lbGNhc2V9fUl0ZW1zKCkpOwoJCXt7ZWxzZX19CgkJJHJlc3VsdHNbJ3t7JGZpZWxkLmxhYmVsfX0nXVskaXRlbS0+Z2V0SWQoKV1bXSA9ICRpdGVtLT5nZXR7eyRmaWVsZC5jYW1lbGNhc2V9fU9iamVjdCgpOwkJCgkJe3svaWZ9fQoJCQoJCXt7ZWxzZWlmICRmaWVsZC50eXBlID09ICdzZWxlY3QnfX0KCQl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy5tdWx0aXBsZSl9fQoJCSRyZXN1bHRzWyd7eyRmaWVsZC5sYWJlbH19J11bJGl0ZW0tPmdldElkKCldW10gPSBpbXBsb2RlKCcsICcsICRpdGVtLT5nZXR7eyRmaWVsZC5jYW1lbGNhc2V9fVZhbHVlcygpKTsKCQl7e2Vsc2V9fQoJCSRyZXN1bHRzWyd7eyRmaWVsZC5sYWJlbH19J11bJGl0ZW0tPmdldElkKCldW10gPSAkaXRlbS0+Z2V0e3skZmllbGQuY2FtZWxjYXNlfX1WYWx1ZSgpOwkJCgkJe3svaWZ9fQkJCQoJCQoJCXt7ZWxzZWlmICRmaWVsZC50eXBlID09ICdncm91cCd9fQoJCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLm11bHRpcGxlKX19CgkJJHJlc3VsdHNbJ3t7JGZpZWxkLmxhYmVsfX0nXVskaXRlbS0+Z2V0SWQoKV1bXSA9IGltcGxvZGUoJywgJywgJGl0ZW0tPmdldHt7JGZpZWxkLmNhbWVsY2FzZX19VmFsdWVzKCkpOwoJCXt7ZWxzZX19CgkJJHJlc3VsdHNbJ3t7JGZpZWxkLmxhYmVsfX0nXVskaXRlbS0+Z2V0SWQoKV1bXSA9ICRpdGVtLT5nZXR7eyRmaWVsZC5jYW1lbGNhc2V9fVZhbHVlKCk7CQkKCQl7ey9pZn19CQoJCQkJCQoJCXt7ZWxzZWlmICRmaWVsZC50eXBlID09ICd1c2VyJ319CgkJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMubXVsdGlwbGUpfX0KCQkkcmVzdWx0c1sne3skZmllbGQubGFiZWx9fSddWyRpdGVtLT5nZXRJZCgpXVtdID0gaW1wbG9kZSgnLCAnLCAkaXRlbS0+Z2V0e3skZmllbGQuY2FtZWxjYXNlfX1WYWx1ZXMoKSk7CgkJe3tlbHNlfX0KCQkkcmVzdWx0c1sne3skZmllbGQubGFiZWx9fSddWyRpdGVtLT5nZXRJZCgpXVtdID0gJGl0ZW0tPmdldHt7JGZpZWxkLmNhbWVsY2FzZX19VmFsdWUoKTsJCQoJCXt7L2lmfX0JCQoJCQoJCXt7ZWxzZWlmICRmaWVsZC50eXBlID09ICdjb3VudHJ5J319CgkJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMubXVsdGlwbGUpfX0KCQkkcmVzdWx0c1sne3skZmllbGQubGFiZWx9fSddWyRpdGVtLT5nZXRJZCgpXVtdID0gaW1wbG9kZSgnLCAnLCAkaXRlbS0+Z2V0e3skZmllbGQuY2FtZWxjYXNlfX1WYWx1ZXMoKSk7CgkJe3tlbHNlfX0KCQkkcmVzdWx0c1sne3skZmllbGQubGFiZWx9fSddWyRpdGVtLT5nZXRJZCgpXVtdID0gJGl0ZW0tPmdldHt7JGZpZWxkLmNhbWVsY2FzZX19VmFsdWUoKTsJCQoJCXt7L2lmfX0KCQkJCQoJCXt7ZWxzZWlmICRmaWVsZC50eXBlID09ICd1c2VyJ319CgkJaWYoY2xhc3NfZXhpc3RzKCdDTVNVc2VyJykpCgkJewoJCQkkcmVzdWx0c1sne3skZmllbGQubGFiZWx9fSddWyRpdGVtLT5nZXRJZCgpXVtdID0gQ01TVXNlcjo6Z2V0VXNlck5hbWVCeUlkKCRpdGVtLT5nZXR7eyRmaWVsZC5jYW1lbGNhc2V9fSgpKTsKCQl9CgkJZWxzZQoJCXsKCQkJJHJlc3VsdHNbJ3t7JGZpZWxkLmxhYmVsfX0nXVskaXRlbS0+Z2V0SWQoKV1bXSA9ICRpdGVtLT5nZXR7eyRmaWVsZC5jYW1lbGNhc2V9fSgpOwoJCX0KCQl7e2Vsc2V9fQoJCSRyZXN1bHRzWyd7eyRmaWVsZC5sYWJlbH19J11bJGl0ZW0tPmdldElkKCldW10gPSAkaXRlbS0+Z2V0e3skZmllbGQuY2FtZWxjYXNlfX0oKTsKCQl7ey9pZn19Cgl9Cgl7ey9pZn19Cgl7ey9mb3JlYWNofX0KCgkkY29sdW1ucyA9IE1YX1JlbGF0aW9uOjpnZXRDb2x1bW5zKCRtb2R1bGUtPmdldE5hbWUoKSk7Cglmb3JlYWNoICgkY29sdW1ucyBhcyAkY29sdW1uKSAKCXsKCSAgICAkcmVzdWx0c1skY29sdW1uLT5nZXRUaXRsZShmYWxzZSwgdHJ1ZSldID0gTVhfUmVsYXRpb25MaW5rOjpnZXRSZWxhdGVkSXRlbXNCeVJlbGF0aW9ucygkY29sdW1uLCAkaWRzKTsKCX0KCSRtb2R1bGUtPnNtYXJ0eS0+YXNzaWduKCdjb2x1bW5zJywgJHJlc3VsdHMpOwoKCSR0b3RhbFBhZ2VzID0gJHZpZXctPmdldFRvdGFsUGFnZXMoKTsKCSRwYWdlcyA9IGFycmF5KCk7Cglmb3IgKCRpID0gMTsgJGkgPD0gJHRvdGFsUGFnZXM7ICsrJGkpIHsKCQkkcGFnZXNbXSA9ICRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAkaSwgYXJyYXkoJ3ZpZXcnID0+ICR2aWV3LT5nZXRWaWV3KCksICdwYWdlJyA9PiAkaSksICcnLCBmYWxzZSwgZmFsc2UpOwoJfQoJCglpZiAoaXNfbnVsbCgkcGFyZW50X2lkKSkKCXsKCQkkbW9kdWxlLT5zbWFydHktPmFzc2lnbigncGFnZXMnLCAkcGFnZXMpOwoJCSRtb2R1bGUtPnNtYXJ0eS0+YXNzaWduKCdjdXJyZW50UGFnZScsICR2aWV3LT5nZXRQYWdlKCkpOwoJCSRtb2R1bGUtPnNtYXJ0eS0+YXNzaWduKCdhZGRfaXRlbV9saW5rJywgJG1vZHVsZS0+Q3JlYXRlTGluaygkaWQsICdlZGl0JywgJHJldHVybmlkLCAnQWRkIGl0ZW0nLCBhcnJheSgndmlldycgPT4gJHZpZXctPmdldFZpZXcoKSkpKTsKCQkkbW9kdWxlLT5zbWFydHktPmFzc2lnbignYWRkX2l0ZW1faWNvbicsICRtb2R1bGUtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdCcsICRyZXR1cm5pZCwgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJG1vZHVsZS0+TGFuZygnYWRkX2l0ZW0nKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgndmlldycgPT4gJHZpZXctPmdldFZpZXcoKSkpKTsKCgkJJG1vZHVsZXh0ZW5kZXIgPSAkZ0Ntcy0+bW9kdWxlc1snTW9kdWxlWHRlbmRlciddWydvYmplY3QnXTsKCQkkY3VycmVudENhdGVnb3J5RmlsdGVycyA9ICR2aWV3LT5nZXRDYXRlZ29yeUZpbHRlcnMoKTsKCQkkY3VycmVudFBhZ2VGaWx0ZXJzID0gJHZpZXctPmdldFBhZ2VGaWx0ZXJzKCk7CgkJJGN1cnJlbnRNb2R1bGVGaWx0ZXJzID0gJHZpZXctPmdldE1vZHVsZUZpbHRlcnMoKTsKCQkKCQkkZm9ybSA9IG5ldyBDTVNGb3JtKCRtb2R1bGUtPkdldE5hbWUoKSwgJGlkLCdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQpOwoJCSRmb3JtLT5zZXRCdXR0b25zKGFycmF5KCdmaWx0ZXInLCdjbGVhcl9maWx0ZXJzJykpOwoJCSRmb3JtLT5zZXRNdWx0aXBhcnRGb3JtKCk7CgkJJGZvcm0tPnNldExhYmVsKCdmaWx0ZXInLCAnRmlsdGVyJyk7CgkJJGZvcm0tPnNldExhYmVsKCdjbGVhcl9maWx0ZXJzJywgJ0NsZWFyJyk7CgkJJGZvcm0tPnNldFdpZGdldCgndGl0bGVGaWx0ZXInLCAndGV4dCcsIGFycmF5KCdsYWJlbCc9PicnLCAndmFsdWUnID0+ICR2aWV3LT5nZXRUaXRsZUZpbHRlcigpLCAnc2l6ZScgPT4gMTApKTsKCQkKCQkvLyBUT0RPOiBJbnNlcnQgbW9kdWxlcyBmaWx0ZXJzIGhlcmUKCQl7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19T2JqZWN0OjpidWlsZEZpbHRlcnNXaWRnZXRzKCYkZm9ybSwgJGN1cnJlbnRNb2R1bGVGaWx0ZXJzKTsJCQoJCQoJCWlmICgkbW9kdWxleHRlbmRlci0+aXNYdGVuZGVkTW9kdWxlKCRtb2R1bGUtPkdldE5hbWUoKSkpCgkJewoJCQkJZm9yZWFjaCAoTVhfUmVsYXRpb246OmdldEZpbHRlcnMoJG1vZHVsZS0+Z2V0TmFtZSgpKSBhcyAka2V5ID0+ICRmaWx0ZXIpIAoJCQkJewoJCQkJCWlmICgkZmlsdGVyLT5nZXRUeXBlKCkgPT0gJ2NhdGVnb3J5JykgewoJCQkgICAgICAgICR2YWx1ZXMgPSBhcnJheSgwID0+ICcmbGFxdW87ICcgLiAkZmlsdGVyLT5nZXRUaXRsZShmYWxzZSwgdHJ1ZSkgLiAnICZyYXF1bzsnKTsKCQkgICAgCQlmb3JlYWNoICgkZmlsdGVyLT5nZXRSZWxhdGVkSXRlbXMoKSBhcyAkaXRlbSkgewoJCSAgICAJCQkkdmFsdWVzWyRpdGVtLT5pZF0gPSAkaXRlbS0+dGl0bGU7CgkJICAgIAkJfQkJCQoJCQkJCQkkZm9ybS0+c2V0V2lkZ2V0KCdjYXRlZ29yeUZpbHRlcnNbXScgLiAkZmlsdGVyLT5pZCwgJ3NlbGVjdCcsIGFycmF5KCdsYWJlbCcgPT4nJywgJ3ZhbHVlcycgPT4gJHZhbHVlcywgJ3ZhbHVlJyA9PiAoJGN1cnJlbnRDYXRlZ29yeUZpbHRlcnMpKSk7CQkKCQkJICAgIH0gZWxzZWlmICgkZmlsdGVyLT5nZXRUeXBlKCkgPT0gJ3BhZ2UnKSB7CgkJCSAgICAgICAgJHZhbHVlcyA9IGFycmF5KDAgPT4gJyZsYXF1bzsgJyAuICRmaWx0ZXItPmdldFRpdGxlKGZhbHNlLCB0cnVlKSAuICcgJnJhcXVvOycpOwoJCSAgICAJCWZvcmVhY2ggKCRmaWx0ZXItPmdldFJlbGF0ZWRJdGVtcygpIGFzICRpdGVtKSB7CgkJICAgIAkJCSR2YWx1ZXNbJGl0ZW0tPmlkXSA9ICRpdGVtLT50aXRsZTsKCQkgICAgCQl9CgkJCQkJCSRmb3JtLT5zZXRXaWRnZXQoJ3BhZ2VGaWx0ZXJzW10nIC4gJGZpbHRlci0+aWQsICdzZWxlY3QnLCBhcnJheSgnbGFiZWwnID0+JycsICd2YWx1ZXMnID0+ICR2YWx1ZXMsICd2YWx1ZScgPT4gKCRjdXJyZW50UGFnZUZpbHRlcnMpKSk7CgkJCSAgICB9CgkJCQl9CgkJfQoJCQoJCWlmICgkZm9ybS0+aXNQdXNoZWQoJ2NsZWFyX2ZpbHRlcnMnKSkJCQoJCXsKCQkJJGZvcm0tPmdldFdpZGdldCgndGl0bGVGaWx0ZXInKS0+c2V0VmFsdWUoJycpOwoJCX0KCQkkbW9kdWxlLT5zbWFydHktPmFzc2lnbignZmlsdGVyc19mb3JtJywgJGZvcm0pOwoJfQoKCXJldHVybiAkbW9kdWxlLT5Qcm9jZXNzVGVtcGxhdGUoJ2RlZmF1bHRhZG1pbi5pdGVtcy50cGwnKTsKfQoKCnB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY3JlYXRlRm9ybSgkbW9kdWxlLCRmb3JtLCRpdGVtKQp7CglnbG9iYWwgJGdDbXM7CgkkY29uZmlnID0gJiRnQ21zLT5nZXRDb25maWcoKTsKCXt7Zm9yZWFjaCBmcm9tPSRleHRyYV9maWVsZHMgaXRlbT1maWVsZH19Cgl7e2lmICRmaWVsZC5mb3JtX3R5cGUgPT0gJ3NlbGVjdCd9fQoJJGZvcm0tPnNldFdpZGdldCgne3skZmllbGQubmFtZX19JywgJ3NlbGVjdCcsIGFycmF5KAoJCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLm11bHRpcGxlKSB8fCBpc3NldCgkZmllbGQuZm9wdGlvbnMuZXhwYW5kZWQpfX0KCQkndmFsdWVzJyA9PiB7eyRmaWVsZC5zZWxlY3Rfb3B0aW9uc319LAoJCXt7ZWxzZX19CgkJJ3ZhbHVlcycgPT4gYXJyYXkoJycgPT4gJyZsYXF1bzsgJyAuICRtb2R1bGUtPmxhbmcoJ3NlbGVjdF9vbmUnKSAuICcgJnJhcXVvOycpICsge3skZmllbGQuc2VsZWN0X29wdGlvbnN9fSwKCQl7ey9pZn19IAoJCSdsYWJlbCcgPT4gJ3t7JGZpZWxkLmxhYmVsfX0nLCAKCQknZ2V0X21ldGhvZCcgPT4gJ2dldHt7JGZpZWxkLmNhbWVsY2FzZX19JywgCgkJJ29iamVjdCcgPT4gJiRpdGVtCgkJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMubXVsdGlwbGUpfX0sICdtdWx0aXBsZScgPT4gdHJ1ZXt7L2lmfX0KCQl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy5zaXplKX19LCAnc2l6ZScgPT4ge3skZmllbGQuZm9wdGlvbnMuc2l6ZX19e3svaWZ9fQoJCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLmV4cGFuZGVkKX19LCAnZXhwYW5kZWQnID0+IHRydWV7ey9pZn19CgkJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMudGlwcyl9fSwgJ3RpcHMnID0+ICd7eyRmaWVsZC5mb3B0aW9ucy50aXBzfX0ne3svaWZ9fQoJKSk7Cgl7e2Vsc2VpZiAkZmllbGQuZm9ybV90eXBlID09ICd0ZXh0YXJlYSd9fQoJJGZvcm0tPnNldFdpZGdldCgne3skZmllbGQubmFtZX19JywgJ3RleHRhcmVhJywgYXJyYXkoCgkJJ2xhYmVsJyA9PiAne3skZmllbGQubGFiZWx9fScsIAoJCSdvYmplY3QnID0+ICYkaXRlbSwKCQknc2hvd193eXNpd3lnJyA9PiB0cnVlCgkJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMudGlwcyl9fSwgJ3RpcHMnID0+ICd7eyRmaWVsZC5mb3B0aW9ucy50aXBzfX0ne3svaWZ9fQoJCSkpOwoJe3tlbHNlaWYgJGZpZWxkLmZvcm1fdHlwZSA9PSAndGV4dGFyZWFfcGxhaW4nfX0KCSRmb3JtLT5zZXRXaWRnZXQoJ3t7JGZpZWxkLm5hbWV9fScsICd0ZXh0YXJlYScsIGFycmF5KAoJCSdsYWJlbCcgPT4gJ3t7JGZpZWxkLmxhYmVsfX0nLCAKCQknb2JqZWN0JyA9PiAmJGl0ZW0KCQl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy50aXBzKX19LCAndGlwcycgPT4gJ3t7JGZpZWxkLmZvcHRpb25zLnRpcHN9fSd7ey9pZn19CgkJKSk7Cgl7e2Vsc2VpZiAkZmllbGQuZm9ybV90eXBlID09ICdmaWxlJ319CgkkZm9ybS0+c2V0V2lkZ2V0KCd7eyRmaWVsZC5uYW1lfX0nLCAnZmlsZScsIGFycmF5KAoJCSdsYWJlbCcgPT4gJ3t7JGZpZWxkLmxhYmVsfX0nLCAKCQknb2JqZWN0JyA9PiAmJGl0ZW0sCgkJJ2Jhc2VfdXJsJyA9PiAkY29uZmlnWydyb290X3VybCddLAoJCSdkZWxldGVfY2hlY2tib3gnID0+ICd7eyRmaWVsZC5uYW1lfX1fZGVsZXRlJwoJCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLnRpcHMpfX0sICd0aXBzJyA9PiAne3skZmllbGQuZm9wdGlvbnMudGlwc319J3t7L2lmfX0KCSkpOwoJe3tlbHNlaWYgJGZpZWxkLnR5cGUgPT0gJ2RhdGUnfX0KCSRmb3JtLT5zZXRXaWRnZXQoJ3t7JGZpZWxkLm5hbWV9fScsICdkYXRlJywgYXJyYXkoCgkJJ2xhYmVsJyA9PiAne3skZmllbGQubGFiZWx9fScsIAoJCSdvYmplY3QnID0+ICYkaXRlbSwgJ2V1cm9wZWFuX2RhdGUnID0+IHRydWUsIAoJCSdzZXRfbWV0aG9kJyA9PiAnc2V0e3skZmllbGQuY2FtZWxjYXNlfX0nLAoJCSdkZWZhdWx0X3ZhbHVlJyA9PiBhcnJheShkYXRlKCdZJyksZGF0ZSgnbScpLGRhdGUoJ2QnKSksCgkJe3tpZiBpc3NldCgkZmllbGQuZGF0ZV9vcHRpb25zLnN0YXJ0X3llYXIpfX0gJ3N0YXJ0X3llYXInID0+IHt7JGZpZWxkLmRhdGVfb3B0aW9ucy5zdGFydF95ZWFyfX0se3svaWZ9fQoJCXt7aWYgaXNzZXQoJGZpZWxkLmRhdGVfb3B0aW9ucy5udW1iZXJfeWVhcnMpfX0gJ251bWJlcl95ZWFycycgPT4ge3skZmllbGQuZGF0ZV9vcHRpb25zLm51bWJlcl95ZWFyc319LHt7L2lmfX0KCQl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy50aXBzKX19LCAndGlwcycgPT4gJ3t7JGZpZWxkLmZvcHRpb25zLnRpcHN9fSd7ey9pZn19CgkpKTsKCXt7ZWxzZWlmICRmaWVsZC50eXBlID09ICd0aW1lJ319CgkkZm9ybS0+c2V0V2lkZ2V0KCd7eyRmaWVsZC5uYW1lfX0nLCAndGltZScsIGFycmF5KAoJCSdsYWJlbCcgPT4gJ3t7JGZpZWxkLmxhYmVsfX0nLCAKCQknb2JqZWN0JyA9PiAmJGl0ZW0sCgkJJ3NldF9tZXRob2QnID0+ICdzZXR7eyRmaWVsZC5jYW1lbGNhc2V9fScsCgkJJ2RlZmF1bHRfdmFsdWUnID0+IGFycmF5KGRhdGUoJ0gnKSxkYXRlKCdpJyksZGF0ZSgncycpKSwKCQl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy50aXBzKX19LCAndGlwcycgPT4gJ3t7JGZpZWxkLmZvcHRpb25zLnRpcHN9fSd7ey9pZn19CgkpKTsKCXt7ZWxzZWlmICRmaWVsZC5mb3JtX3R5cGUgPT0gJ21vZHVsZSd9fQoJaWYgKGNsYXNzX2V4aXN0cygne3skZmllbGQuZm9wdGlvbnMubW9kdWxlX25hbWV9fU9iamVjdCcpKQoJewkKCQkkYyA9IG5ldyBNQ0ZDcml0ZXJpYSgpOwoJCSRjLT5hZGQoJ3B1Ymxpc2hlZCcsIDEpOwoJCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLnNlbGVjdG9yKX19CgkJJG1vZF9pdGVtcyA9IHt7JGZpZWxkLmZvcHRpb25zLm1vZHVsZV9uYW1lfX1PYmplY3Q6Ont7JGZpZWxkLmZvcHRpb25zLnNlbGVjdG9yfX0oJGMpOwoJCXt7ZWxzZX19CgkJJG1vZF9pdGVtcyA9IHt7JGZpZWxkLmZvcHRpb25zLm1vZHVsZV9uYW1lfX1PYmplY3Q6OmRvU2VsZWN0KCRjKTsKCQl7ey9pZn19CgkJJGxpc3QgPSBhcnJheSgpOwoJJGZvcm0tPnNldFdpZGdldCgne3skZmllbGQubmFtZX19JywgJ3NlbGVjdCcsIGFycmF5KAoJCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLm11bHRpcGxlKSB8fCBpc3NldCgkZmllbGQuZm9wdGlvbnMuZXhwYW5kZWQpfX0KCQkndmFsdWVzJyA9PgkkbW9kX2l0ZW1zLCAKCQl7e2Vsc2V9fQoJCSd2YWx1ZXMnID0+CWFycmF5KCcnID0+ICcmbGFxdW87ICcgLiAkbW9kdWxlLT5sYW5nKCdzZWxlY3Rfb25lJykgLiAnICZyYXF1bzsnKSArICRtb2RfaXRlbXMsIAoJCXt7L2lmfX0KCQknbGFiZWwnID0+ICd7eyRmaWVsZC5sYWJlbH19JywgCgkJJ2dldF9tZXRob2QnID0+ICdnZXR7eyRmaWVsZC5jYW1lbGNhc2V9fScsIAoJCSdvYmplY3QnID0+ICYkaXRlbQoJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMubXVsdGlwbGUpfX0sICdtdWx0aXBsZScgPT4gdHJ1ZXt7L2lmfX0KCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLnNpemUpfX0sICdzaXplJyA9PiB7eyRmaWVsZC5mb3B0aW9ucy5zaXplfX17ey9pZn19Cgl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy5leHBhbmRlZCl9fSwgJ2V4cGFuZGVkJyA9PiB0cnVle3svaWZ9fQoJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMudGlwcyl9fSwgJ3RpcHMnID0+ICd7eyRmaWVsZC5mb3B0aW9ucy50aXBzfX0ne3svaWZ9fQoJKSk7Cgl9Cgl7e2Vsc2VpZiAkZmllbGQuZm9ybV90eXBlID09ICdwYWdlJ319CgkkZm9ybS0+c2V0V2lkZ2V0KCd7eyRmaWVsZC5uYW1lfX0nLCAncGFnZXMnLCBhcnJheSgKCQknbGFiZWwnID0+ICd7eyRmaWVsZC5sYWJlbH19JyAKCQksJ29iamVjdCcgPT4gJiRpdGVtCgkJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMuc3RhcnRfcGFnZSl9fSwgJ3N0YXJ0X3BhZ2UnID0+ICd7eyRmaWVsZC5mb3B0aW9ucy5zdGFydF9wYWdlfX0ne3svaWZ9fQoJCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLmNoaWxkcmVub2YpfX0sICdjaGlsZHJlbm9mJyA9PiAne3skZmllbGQuZm9wdGlvbnMuY2hpbGRyZW5vZn19J3t7L2lmfX0KCQl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy50aXBzKX19LCAndGlwcycgPT4gJ3t7JGZpZWxkLmZvcHRpb25zLnRpcHN9fSd7ey9pZn19CgkJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMubXVsdGlwbGUpfX0sICdtdWx0aXBsZScgPT4gdHJ1ZXt7L2lmfX0KCQl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy5leHBhbmRlZCl9fSwgJ2V4cGFuZGVkJyA9PiB0cnVle3svaWZ9fQoJCSkpOwoJe3tlbHNlaWYgJGZpZWxkLmZvcm1fdHlwZSA9PSAnc3RhdGljJ319CgkkZm9ybS0+c2V0V2lkZ2V0KCd7eyRmaWVsZC5uYW1lfX0nLCAnc3RhdGljJywgYXJyYXkoCgkJJ2xhYmVsJyA9PiAne3skZmllbGQubGFiZWx9fScsIAoJCSdvYmplY3QnID0+ICYkaXRlbQoJCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLnRpcHMpfX0sICd0aXBzJyA9PiAne3skZmllbGQuZm9wdGlvbnMudGlwc319J3t7L2lmfX0KCQkpKTsKCXt7ZWxzZWlmICRmaWVsZC5mb3JtX3R5cGUgPT0gJ25vbmUnfX0KCXt7ZWxzZWlmICRmaWVsZC5mb3JtX3R5cGUgPT0gJ3VzZXInfX0KCSR7eyRmaWVsZC5uYW1lfX1fbGlzdCA9IENNU1VzZXI6OmdldFVzZXJMaXN0KCk7CgkkZm9ybS0+c2V0V2lkZ2V0KCd7eyRmaWVsZC5uYW1lfX0nLCAnc2VsZWN0JywgYXJyYXkoCgkJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMubXVsdGlwbGUpIHx8IGlzc2V0KCRmaWVsZC5mb3B0aW9ucy5leHBhbmRlZCl9fQoJCSd2YWx1ZXMnID0+IHt7JGZpZWxkLnNlbGVjdF9vcHRpb25zfX0sCgkJe3tlbHNlfX0KCQkndmFsdWVzJyA9PiBhcnJheSgnJyA9PiAnJmxhcXVvOyAnIC4gJG1vZHVsZS0+bGFuZygnc2VsZWN0X29uZScpIC4gJyAmcmFxdW87JykgKyAke3skZmllbGQubmFtZX19X2xpc3QsCgkJe3svaWZ9fSAKCQknbGFiZWwnID0+ICd7eyRmaWVsZC5sYWJlbH19JywgCgkvLwknZ2V0X21ldGhvZCcgPT4gJ2dldHt7JGZpZWxkLmNhbWVsY2FzZX19JywgCgkJJ29iamVjdCcgPT4gJiRpdGVtCgkJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMubXVsdGlwbGUpfX0sICdtdWx0aXBsZScgPT4gdHJ1ZXt7L2lmfX0KCQl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy5zaXplKX19LCAnc2l6ZScgPT4ge3skZmllbGQuZm9wdGlvbnMuc2l6ZX19e3svaWZ9fQoJCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLmV4cGFuZGVkKX19LCAnZXhwYW5kZWQnID0+IHRydWV7ey9pZn19CgkJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMudGlwcyl9fSwgJ3RpcHMnID0+ICd7eyRmaWVsZC5mb3B0aW9ucy50aXBzfX0ne3svaWZ9fQoJKSk7Cgl7e2Vsc2VpZiAkZmllbGQuZm9ybV90eXBlID09ICdncm91cCd9fQoJJHt7JGZpZWxkLm5hbWV9fV9saXN0ID0gQ01TR3JvdXA6OmdldEdyb3VwTGlzdCgpOwoJJGZvcm0tPnNldFdpZGdldCgne3skZmllbGQubmFtZX19JywgJ3NlbGVjdCcsIGFycmF5KAoJCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLm11bHRpcGxlKSB8fCBpc3NldCgkZmllbGQuZm9wdGlvbnMuZXhwYW5kZWQpfX0KCQkndmFsdWVzJyA9PiAke3skZmllbGQubmFtZX19X2xpc3QsCgkJe3tlbHNlfX0KCQkndmFsdWVzJyA9PiBhcnJheSgnJyA9PiAnJmxhcXVvOyAnIC4gJG1vZHVsZS0+bGFuZygnc2VsZWN0X29uZScpIC4gJyAmcmFxdW87JykgKyAke3skZmllbGQubmFtZX19X2xpc3QsCgkJe3svaWZ9fSAKCQknbGFiZWwnID0+ICd7eyRmaWVsZC5sYWJlbH19JywgCgkvLwknZ2V0X21ldGhvZCcgPT4gJ2dldHt7JGZpZWxkLmNhbWVsY2FzZX19JywgCgkJJ29iamVjdCcgPT4gJiRpdGVtCgkJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMubXVsdGlwbGUpfX0sICdtdWx0aXBsZScgPT4gdHJ1ZXt7L2lmfX0KCQl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy5zaXplKX19LCAnc2l6ZScgPT4ge3skZmllbGQuZm9wdGlvbnMuc2l6ZX19e3svaWZ9fQoJCXt7aWYgaXNzZXQoJGZpZWxkLmZvcHRpb25zLmV4cGFuZGVkKX19LCAnZXhwYW5kZWQnID0+IHRydWV7ey9pZn19CgkJe3tpZiBpc3NldCgkZmllbGQuZm9wdGlvbnMudGlwcyl9fSwgJ3RpcHMnID0+ICd7eyRmaWVsZC5mb3B0aW9ucy50aXBzfX0ne3svaWZ9fQoJKSk7Cgl7e2Vsc2V9fQoJJGZvcm0tPnNldFdpZGdldCgne3skZmllbGQubmFtZX19JywgJ3RleHQnLCBhcnJheSgKCQknbGFiZWwnID0+ICd7eyRmaWVsZC5sYWJlbH19JywgCgkJJ29iamVjdCcgPT4gJiRpdGVtLCAKCQknc2l6ZScgPT4gNTAKCQl7e2lmIGlzc2V0KCRmaWVsZC5mb3B0aW9ucy50aXBzKX19LCAndGlwcycgPT4gJ3t7JGZpZWxkLmZvcHRpb25zLnRpcHN9fSd7ey9pZn19CgkJKSk7Cgl7ey9pZn19Cgl7ey9mb3JlYWNofX0KfQoKCn0K]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/function.defaultadmin.help.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmVjaG8gJHRoaXMtPkxhbmcoJ2hlbHAnKTsKCj8+]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/function.defaultadmin.items.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgokdmlldyA9IG5ldyBNQ0ZMaXN0Vmlldygne3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fScsICRwYXJhbXMpOwokdmlldy0+c2V0T3JkZXJCeSgkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnb3JkZXJfYnknLCAnb3JkZXJfYnknKSAuICcgJyAuICR0aGlzLT5nZXRQcmVmZXJlbmNlKCdvcmRlcl9ieV9kaXJlY3Rpb24nLCAnYXNjJykpOwokdmlldy0+c2V0SXRlbXNQZXJQYWdlKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdpdGVtc19wZXJfcGFnZScsICcyNScpKTsKJGl0ZW1zID0gJHZpZXctPmdldEl0ZW1zKCk7CgplY2hvIHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX1WaWV3czo6YWRtaW5JdGVtcygkZ0NtcywkdGhpcywkaWQsJHJldHVybmlkLCR2aWV3LCRpdGVtcyk7CQ==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/function.defaultadmin.options.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKaWYgKCEkdGhpcy0+Q2hlY2tBY2Nlc3MoJ0FkbWluIHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nKSkgewoJcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwp9CgppZiAoaXNzZXQoJHBhcmFtc1snY2FuY2VsJ10pKQp7CglyZXR1cm4gJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZV90YWInID0+ICdvcHRpb25zJykpOwp9CgokZmllbGRzID0gYXJyYXkoJ3RpdGxlJywgJ2NyZWF0ZWRfYXQnLCAndXBkYXRlZF9hdCcsICdvcmRlcl9ieScpOwp7e2ZvcmVhY2ggZnJvbT0kZXh0cmFfZmllbGRzIGl0ZW09ZmllbGR9fQokZmllbGRzW10gPSAne3skZmllbGQubmFtZX19JzsKe3svZm9yZWFjaH19CiRmaWVsZHMgPSBhcnJheV9jb21iaW5lKCRmaWVsZHMsICRmaWVsZHMpOwoKaWYgKGlzc2V0KCRwYXJhbXNbJ3N1Ym1pdCddKSkgewoJaWYgKGlzc2V0KCRwYXJhbXNbJ2luZGV4X2NvbnRlbnQnXSkpCgl7CgkJaWYgKCR0aGlzLT5nZXRQcmVmZXJlbmNlKCdpbmRleF9jb250ZW50JykgPT0gJzAnKQoJCXsJCQkJCQoJCQkkdGhpcy0+U2VhcmNoUmVpbmRleCgpOwoJCX0KCX0KCWVsc2UKCXsKCQlpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ2luZGV4X2NvbnRlbnQnKSA9PSAnMScpCgkJewkJCQoJCQkkdGhpcy0+U2VhcmNoRGVpbmRleCgpOwoJCX0KCX0JCn0KCiR0ZW1wbGF0ZXMgPSAkdGhpcy0+TGlzdFRlbXBsYXRlcygpOwokdGVtcGxhdGVzX2xpc3QgPSBhcnJheSgpOwpmb3JlYWNoKCR0ZW1wbGF0ZXMgYXMgJHRlbXBsYXRlKQp7CgkkdGVtcGxhdGVzX2xpc3RbJHRlbXBsYXRlXSA9ICR0ZW1wbGF0ZTsKfQoKJGZvcm0gPSBuZXcgQ01TRm9ybSgne3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fScsICRpZCwnZGVmYXVsdGFkbWluJywkcmV0dXJuaWQpOwokZm9ybS0+c2V0TGFiZWwoJ3N1Ym1pdCcsICdTYXZlJyk7CiRmb3JtLT5zZXRXaWRnZXQoJ2FjdGl2ZV90YWInLCAnaGlkZGVuJywgYXJyYXkoJ3ZhbHVlJyA9PiAnb3B0aW9ucycpKTsKJGZvcm0tPnNldFdpZGdldCgnb3JkZXJfYnknLCAnc2VsZWN0JywgYXJyYXkoJ3ZhbHVlcycgPT4gJGZpZWxkcywgJ3ByZWZlcmVuY2UnID0+ICdvcmRlcl9ieScpKTsKJGZvcm0tPnNldFdpZGdldCgnb3JkZXJfYnlfZGlyZWN0aW9uJywgJ3NlbGVjdCcsIGFycmF5KCd2YWx1ZXMnID0+IGFycmF5KCdBU0MnID0+ICdBc2NlbmRpbmcnLCAnREVTQycgPT4gJ0Rlc2NlbmRpbmcnKSwgJ3ByZWZlcmVuY2UnID0+ICdvcmRlcl9ieV9kaXJlY3Rpb24nKSk7CiRmb3JtLT5zZXRXaWRnZXQoJ2l0ZW1zX3Blcl9wYWdlJywgJ3RleHQnLCBhcnJheSgnZGVmYXVsdF92YWx1ZScgPT4gYXJyYXkoMjUpLCAncHJlZmVyZW5jZScgPT4gJ2l0ZW1zX3Blcl9wYWdlJywgJ3NpemUnID0+IDUpKTsKJGZvcm0tPnNldFdpZGdldCgnZGF0ZV9mb3JtYXQnLCAndGV4dCcsIGFycmF5KCdkZWZhdWx0X3ZhbHVlJyA9PiBhcnJheSgnZC9tL1knKSwgJ3ByZWZlcmVuY2UnID0+ICdkYXRlX2Zvcm1hdCcsICdzaXplJyA9PiAxMCkpOwokZm9ybS0+c2V0V2lkZ2V0KCdkZWZhdWx0X3BhZ2UnLCAncGFnZXMnLCBhcnJheSgnZGVmYXVsdF92YWx1ZScgPT4gICRnQ21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5HZXREZWZhdWx0UGFnZUlEKCksICdwcmVmZXJlbmNlJyA9PiAnZGVmYXVsdF9wYWdlJykpOwokZm9ybS0+c2V0V2lkZ2V0KCdzaG93X3BhcmVudCcsICdjaGVja2JveCcsIGFycmF5KCdwcmVmZXJlbmNlJyA9PiAnc2hvd19wYXJlbnQnKSk7CiRmb3JtLT5zZXRXaWRnZXQoJ2luZGV4X2NvbnRlbnQnLCAnY2hlY2tib3gnLCBhcnJheSgncHJlZmVyZW5jZScgPT4gJ2luZGV4X2NvbnRlbnQnLCAnZGVmYXVsdF92YWx1ZScgPT4gMCkpOwppZiAoaXNzZXQoJGdDbXMtPm1vZHVsZXNbJ0NNb24nXSkpCnsKCSRmb3JtLT5zZXRXaWRnZXQoJ3VzZV9jbW9uJywgJ2NoZWNrYm94JywgYXJyYXkoJ3ByZWZlcmVuY2UnID0+ICd1c2VfY21vbicpKTsKCSRmb3JtLT5zZXRXaWRnZXQoJ2Ntb25fdGVtcGxhdGUnLCAnc2VsZWN0JywgYXJyYXkoJ3ByZWZlcmVuY2UnID0+ICdjbW9uX3RlbXBsYXRlJywgJ3ZhbHVlcycgPT4gJHRlbXBsYXRlc19saXN0KSk7CgkkZm9ybS0+c2V0V2lkZ2V0KCdjbW9uX3RlbXBsYXRlX3BsYWluJywgJ3NlbGVjdCcsIGFycmF5KCdwcmVmZXJlbmNlJyA9PiAnY21vbl90ZW1wbGF0ZV9wbGFpbicsICd2YWx1ZXMnID0+ICR0ZW1wbGF0ZXNfbGlzdCkpOwoJJGZvcm0tPnNldFdpZGdldCgnY21vbl9kZWZhdWx0X3BhZ2UnLCAncGFnZXMnLCBhcnJheSgnZGVmYXVsdF92YWx1ZScgPT4gICRnQ21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpLT5HZXREZWZhdWx0UGFnZUlEKCksICdwcmVmZXJlbmNlJyA9PiAnY21vbl9kZWZhdWx0X3BhZ2UnKSk7Cn0KCmlmIChpc3NldCgkZ0Ntcy0+bW9kdWxlc1snVHdpdHRlciddKSkKewkKCSRmb3JtLT5zZXRXaWRnZXQoJ3VzZV90d2l0dGVyJywgJ2NoZWNrYm94JywgYXJyYXkoJ3ByZWZlcmVuY2UnID0+ICd1c2VfdHdpdHRlcicpKTsKCSRmb3JtLT5zZXRXaWRnZXQoJ3R3aXR0ZXJfdGVtcGxhdGUnLCAndGV4dGFyZWEnLCBhcnJheSgncHJlZmVyZW5jZScgPT4gJ3R3aXR0ZXJfdGVtcGxhdGUnKSk7Cn0KCmlmIChpc3NldCgkcGFyYW1zWydzdWJtaXQnXSkpCnsKCSRmb3JtLT5wcm9jZXNzKCk7CglyZXR1cm4gJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZV90YWInID0+ICdvcHRpb25zJykpOwp9CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2Zvcm0nLCAkZm9ybSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndXBkYXRlX29iamVjdHMnLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICd1cGRhdGVPYmplY3RzJywgJHJldHVybmlkLCAkdGhpcy0+bGFuZygndXBkYXRlX29iamVjdHMnKSkpOwoKJGV4cG9ydCA9ICBuZXcgQ01TRm9ybSgne3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fScsICRpZCwnZXhwb3J0JywkcmV0dXJuaWQpOwokZXhwb3J0LT5zZXRCdXR0b25zKGFycmF5KCdzdWJtaXQnKSk7CiRleHBvcnQtPnNldExhYmVsKCdzdWJtaXQnLCAkdGhpcy0+bGFuZygnZXhwb3J0JykpOwokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2V4cG9ydCcsICRleHBvcnQtPnJlbmRlcigpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZGVmYXVsdGFkbWluLm9wdGlvbnMudHBsJyk7Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/function.defaultadmin.templates.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKe3sqCi8vIGlmICghJHRoaXMtPkNoZWNrQWNjZXNzKCdBZG1pbiB7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19JykpIHsKLy8gCXJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKLy8gfQovLyAKLy8gCi8vIAovLyBpZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKLy8gCi8vICR0ZW1wbGF0ZXMgPSAkdGhpcy0+TGlzdFRlbXBsYXRlcygpOwovLyAkcm93cyA9IGFycmF5KCk7Ci8vIGZvcmVhY2goJHRlbXBsYXRlcyBhcyAkdGVtcGxhdGUpIHsKLy8gCSRyb3dzW10gPSBhcnJheSgKLy8gCQkndGl0bGVsaW5rJyA9PiAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0dGVtcGxhdGUnLCAkcmV0dXJuaWQsICR0ZW1wbGF0ZSwgYXJyYXkoJ3RlbXBsYXRlJyA9PiAkdGVtcGxhdGUpLCAnJywgZmFsc2UsIGZhbHNlLCAnY2xhc3M9Iml0ZW1saW5rIicpLAovLyAJCSdkZWxldGVsaW5rJyA9PiAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWxldGV0ZW1wbGF0ZScsICRyZXR1cm5pZCwgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9kZWxldGUuZ2lmJywgJHRoaXMtPkxhbmcoJ2RlbGV0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCd0ZW1wbGF0ZScgPT4gJHRlbXBsYXRlKSwgJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyB0ZW1wbGF0ZT8nKSwKLy8gCQknZWRpdGxpbmsnID0+ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2VkaXR0ZW1wbGF0ZScsICRyZXR1cm5pZCwgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9lZGl0LmdpZicsICR0ZW1wbGF0ZSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgndGVtcGxhdGUnID0+ICR0ZW1wbGF0ZSkpCi8vIAkpOwovLyB9Ci8vICR0aGlzLT5zbWFydHktPmFzc2lnbigncm93cycsICRyb3dzKTsKLy8gJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdhZGRfaXRlbV9saW5rJywgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAnZWRpdHRlbXBsYXRlJywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnYWRkX2l0ZW0nKSkpOwovLyAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2FkZF9pdGVtX2ljb24nLCAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdlZGl0dGVtcGxhdGUnLCAkcmV0dXJuaWQsICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vbmV3b2JqZWN0LmdpZicsICR0aGlzLT5MYW5nKCdhZGRfaXRlbScpLCAnJywgJycsICdzeXN0ZW1pY29uJykpKTsKLy8gCi8vIGVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZGVmYXVsdGFkbWluLnRlbXBsYXRlcy50cGwnKTsKCip9fQovLyBORVcKCmlmICghJHRoaXMtPkNoZWNrQWNjZXNzKCdBZG1pbiB7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19JykpIHsKCXJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKfQoKJGxpc3RfdGVtcGxhdGVzID0gJHRoaXMtPkxpc3RUZW1wbGF0ZXMoKTsKJHRlbXBsYXRlcyA9IGFycmF5KCk7CmZvcmVhY2goJGxpc3RfdGVtcGxhdGVzIGFzICR0ZW1wbGF0ZSkgewoJJHJvdyA9IGFycmF5KAoJCSd0aXRsZWxpbmsnID0+ICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ3RlbXBsYXRlX2VkaXQnLCAkcmV0dXJuaWQsICR0ZW1wbGF0ZSwgYXJyYXkoJ3RlbXBsYXRlJyA9PiAkdGVtcGxhdGUpLCAnJywgZmFsc2UsIGZhbHNlLCAnY2xhc3M9Iml0ZW1saW5rIicpLAoJCSdkZWxldGVsaW5rJyA9PiAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICd0ZW1wbGF0ZV9kZWxldGUnLCAkcmV0dXJuaWQsICRnQ21zLT52YXJpYWJsZXNbJ2FkbWludGhlbWUnXS0+RGlzcGxheUltYWdlKCdpY29ucy9zeXN0ZW0vZGVsZXRlLmdpZicsICR0aGlzLT5MYW5nKCdkZWxldGUnKSwgJycsICcnLCAnc3lzdGVtaWNvbicpLCBhcnJheSgndGVtcGxhdGUnID0+ICR0ZW1wbGF0ZSksICR0aGlzLT5sYW5nKCdhcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgdGVtcGxhdGUnKSksCgkJJ2VkaXRsaW5rJyA9PiAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICd0ZW1wbGF0ZV9lZGl0JywgJHJldHVybmlkLCAkZ0Ntcy0+dmFyaWFibGVzWydhZG1pbnRoZW1lJ10tPkRpc3BsYXlJbWFnZSgnaWNvbnMvc3lzdGVtL2VkaXQuZ2lmJywgJHRlbXBsYXRlLCAnJywgJycsICdzeXN0ZW1pY29uJyksIGFycmF5KCd0ZW1wbGF0ZScgPT4gJHRlbXBsYXRlKSkKCSk7CgkKCWlmICgkdGhpcy0+aXNEZWZhdWx0VGVtcGxhdGUoJHRlbXBsYXRlKSAhPT0gZmFsc2UpCgl7CgkJJHJvd1snZGVmYXVsdCddID0gJHRoaXMtPmxhbmcoJ2RlZmF1bHQgdGVtcGxhdGUgZm9yJywgJHRoaXMtPmlzRGVmYXVsdFRlbXBsYXRlKCR0ZW1wbGF0ZSkpOwoJfQoJZWxzZQoJewoJCSRyb3dbJ2RlZmF1bHQnXSA9ICcnOwoJfQoJCgkkdGVtcGxhdGVzW10gPSAkcm93Owp9CiR0aGlzLT5zbWFydHktPmFzc2lnbigndGVtcGxhdGVzJywgJHRlbXBsYXRlcyk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignYWRkX3RlbXBsYXRlc19saW5rJywgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAndGVtcGxhdGVfZWRpdCcsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FkZCB0ZW1wbGF0ZScpKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignYWRkX3RlbXBsYXRlc19pY29uJywgJHRoaXMtPkNyZWF0ZUxpbmsoJGlkLCAndGVtcGxhdGVfZWRpdCcsICRyZXR1cm5pZCwgJGdDbXMtPnZhcmlhYmxlc1snYWRtaW50aGVtZSddLT5EaXNwbGF5SW1hZ2UoJ2ljb25zL3N5c3RlbS9uZXdvYmplY3QuZ2lmJywgJHRoaXMtPkxhbmcoJ2FkZCB0ZW1wbGF0ZScpLCAnJywgJycsICdzeXN0ZW1pY29uJykpKTsKCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnYWRtaW4udGVtcGxhdGVzLnRwbCcpOw==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/smarty/templates/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhQABAAOZ/ANSxsfb29t/f39A1Nb69vcPCw4aEhdra2vNOTuRqavqCgsN9ffz8/PZ1dunp6fj4+OIAAOkAAPL+/uHh4fNBQfr6+tbW1urx8eY1NbBdXbOys3p4efDw8M7Ozu7u7qg4OeXs7PVmZbQWFtYAAPLy8tff32VjZKOhotDQ0Ozs7PRfX5aVlcrKytSZmfRWVp6dnvj+/qYgINsSEsxAQPT09P7+/s7b2+Tk5K2rrN27u+YrK+fn5/VtbfTi4u4XF9Xi4r3Jyeg+PvH09NwAALdpaqgSEs8BAefPz+0MDO5zdNHP0OO/v/GTk/z//9UJCZYLDOvKyvEAAPA8PNkODu5DQ+Ho6OnAwMvKy3NwcYyLjOvr68fHx8/Pz+Pi4ri3uPHx8ZmXmOfv79fX18zLy5GPkPVQT6+6u/n5+dwfH9vb293c3PPz88MbHMjIyLa8vH0AAPRISO/39/lra9tSUvXZ2eBAQNTT1LCvr/f396CtrqelpsXJyWxqa5GbnO4AAP///yH5BAEAAH8ALAAAAABAAEAAAAf/gH+Cg4SFhoeIiYqLjI2Oj5CRkpOODJaXmJmam5yXNZSDHB1KpKWmSiipqigdHapcsLGyKKUdFgygfzc3eL2+v8C+drzBxb8HZ7kTHpI3NJJqeLkCKZLJkmkBuWrVNTU9GeHi4+Tl5hkL3p9pz6AH1bhHb3MJ9fb3+Pn3STEffzW4DpDIJSYFwD9HniRQwLChw4cQH87wZ+nPAQ65LGhhUAHhEx4NQoocSbLkSAUT/1SoUOMAM1B2UjA40+RIkRA8curcybPnzgYTm1Q4w0DMS0ootFR4UFOEihBQo0qdSlWqnDr+zjwoqiVXBy1n8MCAwkaF2bNo06pVW2cGjAd4/4o6yDXGw4MAY9m42Mu3r9+/f4PMkNCr6I5cWwR4IDEWTRkEkCNLnkxZchkpbmlw0HLlMKgCYgRMALEEDZzTqFOrXr0awwwQag6o2dIlV4EDEwRUyWHEiQw0OnRgkEKcgvHjyIlLwaADDZopRgaUOJBGQGLbuHXzNsK9e28nU6bIGE8+vBMn3rtLp279ACgGBNR0mbB7hP37+PPr3z9iffU2YrxHgAA3dFHFEkMkqOCCDDbo4BD+CdCGHQJOsAtpEGSo4YYcdughBBhM918HoJzhRRcXLvHhiixmGCJ7LFwBygNe3LDDDmFYEcGOPPbo449ARvBidSy0AUoAXjhwY/+OQTbp5I5DCjBGAaDQkKQDDlxghR9cdunll2CG6UeIaaghJZWUrOFFClhecAQSYsYppx9z/CCbAB0QAAoHXnighRYpXEDFnIR6GUULdprJhZ6UcKABBx54kEIcWxZaqA5iHHBnnjPeoQWkkUqQhKVzIgHAdLJNUACalNyRBgkcxMpBHCGQKiYSiFqgqXwauAfKFQQ8ICsHQsTBg62G+tCCDXboKtsBemhz5AlarPEFCSR8IYQETMBpaxQ6AGADCnZkekAXXniRiyAE4MDAGvDCS4MEUAxaaBR+JFAAK+TqqoYFK1Sz7gNgdMAADQgnLEEATPggZxRRYNACEHtc4Ur/ubKBweq6NxggAAMBhCyyWD0k4a2hUaCxgBtAFLDFGBeHdsILn6w7CAoGqPEHHgH4EjIMMNDRgMN+QIwGETiY4QUBLsNcrhonkCGtzYNsYQCFWj2g9dZA96CADgMQ8UIeOGiwdNO2WAAGGRhRXQgXGxAA0Bl01003DH8IkEUfL+hR9tkv28FCFmSs4fYhE2ywAjMcreR4RxNksULffzPNAgp3YHFCR4cfwsELGxSAiyZ/RD6532YTwAIBWYTe+SIFYJGFrwBV1IXklGtAAAEvYEGGZ68rwsEJfJAhwCCf3IC7HhpoAAYWG2wR/CNqkFE8hYIoD8YJJ2TBBxYaGD498SR2ZGGCAQWs4QAZZGxgAhY4HDV+JAKAYQIf3puwgRdfzL+uA14wQMGu4b8CGjASRDlgLhjAgRsIQAAOmJoCHVEBDzhQNLmB4BpwMUFFMMCCXUDRLkYYwh3QoGYdJAQDvrADG93ohTC80Q0imMJBBEALO8CSDnfIQx1ygIMKXKEDAJWCIhrxiEgsogNSIEH/nQFUkYqiFKdIxUhtsIB4iNUXtsjFLnrxi1zkAAmAGLwHkGANNIiXGtfIRjam8YrBO4PI5kjHOtrRjmSkGgO2xsc++vGPgEyg2zpByEJuAoXrUociF8nIRjpSHQxAZA2nFwgAOw==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/index.html.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/smarty/templates/lang/en_US.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmcgPSBhcnJheSgKJ3Bvc3RpbnN0YWxsJyA9PiAnUG9zdCBJbnN0YWxsIE1lc3NhZ2UuJywKJ3Bvc3R1bmluc3RhbGwnID0+ICcnLAoncmVhbGx5X3VuaW5zdGFsbCcgPT4gJ1JlYWxseT8gQXJlIHlvdSBzdXJlCnlvdSB3YW50IHRvIHVuc2luc3RhbGwgdGhpcyBmaW5lIG1vZHVsZT8nLAondW5pbnN0YWxsZWQnID0+ICdNb2R1bGUgVW5pbnN0YWxsZWQuJywKJ2luc3RhbGxlZCcgPT4gJ01vZHVsZSB2ZXJzaW9uICVzIGluc3RhbGxlZC4nLAondXBncmFkZWQnID0+ICdNb2R1bGUgdXBncmFkZWQgdG8gdmVyc2lvbiAlcy4nLAonbW9kZGVzY3JpcHRpb24nID0+ICdUaGlzIG1vZHVsZSBpcyBnZW5lcmF0ZWQgYnkgTSZDIEZhY3RvcnknLAoKJ3RhYl9pdGVtcycgPT4gJ0l0ZW1zJywKJ3RhYl90ZW1wbGF0ZXMnID0+ICdUZW1wbGF0ZXMnLAondGFiX29wdGlvbnMnID0+ICdPcHRpb25zJywKJ3RhYl9oZWxwJyA9PiAnSGVscCcsCgonZXJyb3InID0+ICdFcnJvciEnLAonYWRtaW5fdGl0bGUnID0+ICd7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19IEFkbWluIFBhbmVsJywKJ2FkbWluZGVzY3JpcHRpb24nID0+ICdUaGlzIG1vZHVsZSBoZWxwcyB5b3UgdG8gbWFuYWdlIHNwZWNpZmljIGl0ZW1zJywKJ3RpdGxlVGVtcGxhdGUnID0+ICdUaXRsZScsCidjb2RlVGVtcGxhdGUnID0+ICdUZW1wbGF0ZScsCidhY2Nlc3NkZW5pZWQnID0+ICdBY2Nlc3MgRGVuaWVkLiBQbGVhc2UgY2hlY2sgeW91ciBwZXJtaXNzaW9ucy4nLAoncG9zdGluc3RhbGwnID0+ICdCZSBzdXJlIHRvIHNldCAiTWFuYWdlIHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0iIHBlcm1pc3Npb25zIHRvIHVzZSB0aGlzIG1vZHVsZSEnLAoKJ3N1Ym1pdCcgPT4gJ1N1Ym1pdCcsCidhcHBseScgPT4gJ0FwcGx5JywKJ2NhbmNlbCcgPT4gJ0NhbmNlbCcsCidyZXN0b3JlbGlzdCcgPT4gJ1Jlc3RvcmUgbGlzdCcsCidyZXN0b3JlZGV0YWlscycgPT4gJ1Jlc3RvcmUgZGV0YWlscycsCidwdWJsaXNoJyA9PiAnUHVibGlzaCcsCid1bnB1Ymxpc2gnID0+ICdVbnB1Ymxpc2gnLAoKCidhZGQgdGVtcGxhdGUnID0+ICdBZGQgdGVtcGxhdGUnLAonc2VsZWN0IG9uZScgPT4gJ1NlbGVjdCBvbmUnLAonZm9ybV90ZW1wbGF0ZScgPT4gJ1RlbXBsYXRlJywKJ2Zvcm1fcmVzdG9yZV90ZW1wbGF0ZV9mcm9tJyA9PiAnUmVzdG9yZSB0ZW1wbGF0ZSBmcm9tJywKJ2Zvcm1fY29kZScgPT4gJ0NvZGUnLAonZm9ybV9kZWZhdWx0X3RlbXBsYXRlX2ZvcicgPT4gJ0RlZmF1bHQgdGVtcGxhdGUgZm9yJywKJ2RlZmF1bHQgdGVtcGxhdGUgZm9yJyA9PiAnZGVmYXVsdCB0ZW1wbGF0ZSBmb3IgIiVzIiBhY3Rpb24nLAoKLy8gdXNlciBmb3JtCid5b3UgZG8gbm90IGhhdmUgdGhlIHBlcm1pc3Npb24gdG8gdXNlIHRoaXMgYWN0aW9uJyA9PiAnWW91IGRvIG5vdCBoYXZlIHRoZSBwZXJtaXNzaW9uIHRvIHVzZSB0aGlzIGFjdGlvbicsCidmb3JtX3VzZXJfaWQnID0+ICdVc2VyIGlkJywKJ2Zvcm1fdGl0bGUnID0+ICdUaXRsZScsCidpdGVtIHBvc3RlZCcgPT4gJ0l0ZW0gc3VjY2Vzc2Z1bGx5IHBvc3RlZCcsCgonc2F2ZScgPT4gJ1NhdmUnLAonc2F2ZV9jb250aW51ZScgPT4gJ1NhdmUgJiBjb250aW51ZSBlZGl0aW5nJywKJ2RlbGV0ZScgPT4gJ0RlbGV0ZScsCidhZGRfaXRlbScgPT4gJ0FkZCBpdGVtJywKJ2FkZF9pdGVtX2ZvcicgPT4gJ0FkZCBpdGVtIGZvciBbJXNdJywKJ2VkaXRfaXRlbScgPT4gJ0VkaXQgaXRlbScsCid1cGRhdGVfb2JqZWN0cycgPT4gJ1VwZGF0ZSBvYmplY3RzJywKJ3ByZXZpZXdfcycgPT4gJ1ByZXZpZXcgWyVzXScsCgonZm9ybV9wYXJlbnRfaWQnID0+ICdQYXJlbnQnLAonZm9ybV9vcmRlcl9ieScgPT4gJ09yZGVyIGJ5JywKJ2Zvcm1fb3JkZXJfYnlfZGlyZWN0aW9uJyA9PiAnT3JkZXIgZGlyZWN0aW9uJywKJ2Zvcm1faXRlbXNfcGVyX3BhZ2UnID0+ICdJdGVtcyBwZXIgcGFnZScsCidmb3JtX2RhdGVfZm9ybWF0JyA9PiAnRGF0ZSBmb3JtYXQnLAonZm9ybV9kZWZhdWx0X3BhZ2UnID0+ICdEZWZhdWx0IHBhZ2UnLAonZm9ybV9zaG93X3BhcmVudCcgPT4gJ1Nob3cgcGFyZW50cyBkcm9wZG93bicsCidmb3JtX2luZGV4X2NvbnRlbnQnID0+ICdJbmRleCBjb250ZW50JywKJ2Zvcm1fdXNlX2Ntb24nID0+ICdVc2UgQ2FtcGFpZ24gTW9uaXRvcicsCidmb3JtX2Ntb25fdGVtcGxhdGUnID0+ICdDYW1wYWlnbiBNb25pdG9yIHRlbXBsYXRlJywKJ2Zvcm1fY21vbl90ZW1wbGF0ZV9wbGFpbicgPT4gJ0NhbXBhaWduIE1vbml0b3IgdGVtcGxhdGUgKHBsYWluIHRleHQgdmVyc2lvbiknLAonZm9ybV9jbW9uX2RlZmF1bHRfcGFnZScgPT4gJ0RlZmF1bHQgcGFnZSBmb3IgQ2FtcGFpZ24gTW9uaXRvciBIVE1MJywKJ2Zvcm1fdXNlX3R3aXR0ZXInID0+ICdVc2UgVHdpdHRlcicsCidmb3JtX3R3aXR0ZXJfdGVtcGxhdGUnID0+ICdUd2l0dGVyIHRlbXBsYXRlIChhdmFpbGFibGUgZmllbGRzOiB7JHRpdGxlfSwgeyR1cmx9KScsCgoKJ3NlbGVjdF9vbmUnID0+ICdTZWxlY3Qgb25lJywKJ2V4cG9ydCcgPT4gJ0V4cG9ydCcsCidzZXJpYWxpemVkX2RhdGFzJyA9PiAnUEhQIFNlcmlhbGl6ZWQgYXJyYXknLAonZG93bmxvYWQnID0+ICdEb3dubG9hZCcsCgoKJ2NoYW5nZWxvZycgPT4gJzx1bD4KPGxpPlZlcnNpb24gMC4wLjEgLSAyOSBTZXB0ZW1iZXIgMjAwOC4gSW5pdGlhbCBSZWxlYXNlLjwvbGk+CjwvdWw+JywKJ2hlbHAnID0+ICc8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4KPHA+VGhpcyBtb2R1bGUgd2FzIGdlbmVyYXRlZCBieSBNJkMgRmFjdG9yeS48L3A+CjxoMj5BdmFpbGFibGUgYWN0aW9uczwvaDI+Cgo8aDM+RGVmYXVsdDwvaDM+CjxwPlRoaXMgYWN0aW9uIGlzIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGxpc3Qgb2YgYWxsIGl0ZW1zIG9mIHRoZSBtb2R1bGUuPC9wPgo8aDQ+UGFyYW1zPC9oND4KPGRsPgoJPGR0PjxlbT5vcmRlcmJ5PC9lbT48L2R0PgoJPGRkPkNvbW1hLXNlcGVyYXRlZCBsaXN0IG9mIG9yZGVyYnkgY2xhdXNlcy4gRWcuICJjb2x1bW4xLCBjb2x1bW4yIERFU0MiLjwvZGQ+Cgk8ZHQ+PGVtPmxpbWl0PC9lbT48L2R0PgoJPGRkPk51bWJlciBvZiBpdGVtcyB0byByZXR1cm4uPC9kZD4KCTxkdD48ZW0+b2Zmc2V0PC9lbT48L2R0PgoJPGRkPlN0YXJ0IGZyb20gdGhpcyBvZmZzZXQuPC9kZD4KCTxkdD48ZW0+cmFuZG9tPC9lbT48L2R0PgoJPGRkPlJhbmRvbWl6ZSB0aGUgb3JkZXIgb2YgdGhlIHJlc3VsdC48L2RkPgoJPGR0PjxlbT5jdXJyZW50cGFnZTwvZW0+IChNb2R1bGVYdGVuZGVyKTwvZHQ+Cgk8ZGQ+Qm9vbGVhbi4gRmlsdGVyIHJlc3VsdHMgb24gY3VycmVudCBwYWdlLjwvZGQ+Cgk8ZHQ+PGVtPnBhZ2VzPC9lbT4gKE1vZHVsZVh0ZW5kZXIpPC9kdD4KCTxkZD5Db21tYS1zZXBlcmF0ZWQgbGlzdCBvZiBwYWdlcyB0byBmaWx0ZXIgb24uPC9kZD4KCTxkdD48ZW0+b3B0aW9uczwvZW0+IChNb2R1bGVYdGVuZGVyKTwvZHQ+Cgk8ZGQ+Q29tbWEtc2VwZXJhdGVkIGxpc3Qgb2Ygb3B0aW9ucyB0byBmaWx0ZXIgb24uPC9kZD4KPC9kbD4KCjxoMz5EZXRhaWw8L2gzPgo8cD5UaGlzIGlzIHRoZSBkZXRhaWwgYWN0aW9uIGZvciBhbiBpdGVtLiBUaGUgZGVmYXVsdCB0ZW1wbGF0ZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBhbmQgeW91IGNhbiByZXN0b3JlIGl0IHRvIHVuZGVyc3RhbmQgaG93IHRvIHVzZSBpdD88L3A+CjxoND5QYXJhbXM8L2g0Pgo8cD5UT0RPPC9wPgoKPGgzPlNvbWUgYWN0aW9ucyB0aGF0IHlvdSBjYW4gcGVmb3JtIG9uIHRoZSAkaXRlbSBvYmplY3Q8L2gzPgo8cD5Gb3IgZmlsZXMgKHJlcGxhY2UgRmllbGRuYW1lIGJ5IHRoZSBuYW1lIG9mIHlvdXIgZmlsZSBmaWVsZCk8L3A+Cjx1bD4KCTxsaT48c3Ryb25nPiRpdGVtLT5nZXRGaWVsZG5hbWVJY29uKCk8L3N0cm9uZz46IFJldHVybiBhbiBpY29uIHJlbGF0ZWQgdG8gdGhlIGZpbGUgdHlwZS48L2xpPgoJPGxpPjxzdHJvbmc+JGl0ZW0tPmdldEZpZWxkbmFtZVNpemUoJHJlYWRhYmxlID0gdHJ1ZSk8L3N0cm9uZz46IFJldHVybiB0aGUgc2l6ZSBvZiB0aGUgZmlsZSwgaHVtYW4gcmVhZGFibGUgYnkgZGVmYXVsdC48L2xpPgoJPGxpPjxzdHJvbmc+JGl0ZW0tPmdldEZpZWxkbmFtZUV4dCgpPC9zdHJvbmc+OiBSZXR1cm4gdGhlIGZpbGUgdHlwZSBvciBleHRlbnNpb24uPC9saT4KCTxsaT48c3Ryb25nPiRpdGVtLT5nZXRGaWVsZG5hbWVVcmwoKTwvc3Ryb25nPjogUmV0dXJuIHRoZSB1cmwuICh1c2VmdWwgaW4gY2FzZSBvZiBwcm90ZWN0ZWQgc3lzdGVtKS48L2xpPgoJPGxpPjxzdHJvbmc+JGl0ZW0tPmdldEZpZWxkbmFtZU9yaWdpbmFsUGljdHVyZVVybCgpPC9zdHJvbmc+OiBSZXR1cm4gdGhlIG9yaWdpbmFsIHBpY3R1cmUgdXJsLjwvbGk+CjwvdWw+CjxwPkZvciBtb2R1bGVzIChyZXBsYWNlIEZpZWxkbmFtZSBieSB0aGUgbmFtZSBvZiB5b3VyIG1vZHVsZSBmaWVsZCk8L3A+Cjx1bD4KCTxsaT48c3Ryb25nPiRpdGVtLT5nZXRGaWVsZG5hbWVPYmplY3QoKTwvc3Ryb25nPjogKFNpbmdsZSB2YWx1ZSkgdGhpcyBmdW5jdGlvbiBleGlzdHMgYW5kIGdpdmVzIHlvdSB0aGUgaXRlbSBvYmplY3Qgb2YgdGhlIHJlbGF0ZWQgbW9kdWxlLjwvbGk+Cgk8bGk+PHN0cm9uZz4kaXRlbS0+Z2V0RmllbGRuYW1lSXRlbXMoKTwvc3Ryb25nPjogKE11bHRpcGxlIHZhbHVlcykgU2FtZSBhcyBwcmVjZWRlbnQgYnV0IHJldHVybnMgYW4gYXJyYXkgb2Ygb2JqZWN0cy48L2xpPgo8L3A+Cgo8aDM+RmlsdGVyczwvaDM+CjxwPllvdSBjYW4gdXNlIGZpbHRlcnMgdG8gZmlsdGVyIHRoZSBsaXN0cyBvciBtYWtlIGEgc2VhcmNoIHRvb2wuPC9wPgo8cD5OYW1lIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWx0ZXIgeW91IHdhbnQgdG8gY3JlYXRlLiBEbyBub3QgdXNlIHNwZWNpYWwgY2hhcnMgb3Igc3BhY2UuIEp1c3QgbnVtYmVycywgbGV0dGVycyBhbmQgW18tXSBjaGFycy48L3A+CjxwPkZpZWxkIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWVsZCB5b3Ugd2FudCB0byBmaWx0ZXIuPC9wPgo8cD5UeXBlIGlzIHRoZSB0eXBlIG9mIHNxbCBxdWVyeSB5b3Ugd2FudCB0byBwZXJmb3JtLjwvcD4KPHA+RXhhbXBsZTo8L3A+Cjx1bD4KCTxsaT48c3Ryb25nPlNlYXJjaDwvc3Ryb25nPjoge3tsaXRlcmFsfX17e3svbGl0ZXJhbH19e3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fSBhY3Rpb249InNlYXJjaCJ9PC9saT4gCgk8bGk+PHN0cm9uZz5GaWx0ZXI8L3N0cm9uZz46IHt7bGl0ZXJhbH19e3t7L2xpdGVyYWx9fXt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0gbmFtZV9vZl9teV9maWx0ZXI9InZhbHVlX2Zvcl9maWx0ZXIifTwvbGk+IAo8L3VsPgo8aDM+dXJsX2ZvcjwvaDM+CjxwPlRoaXMgYWN0aW9uIGFsbG93cyB5b3UgdG8gZ2VuZXJhdGUgYW4gdXJsIGZvciBhIHNwZWNpZmljIGFjdGlvbiAoc3BlY2lmaWVkIHdpdGggdGhlIHBhcmFtICJtYWN0aW9uIikuIEFsbCB0aGUgZ2l2ZW4gcGFyYW1zIGFyZSB0cmFuc21pdHRlZCB0byB0aGUgYWN0aW9uLjwvcD4KPHA+WW91IGNhbiB1c2UgdGhlICJjbGVhbl9lbXB0eV92YWx1ZXMiIHBhcmFtIHRvIHJlbW92ZSBlbXB0eSB2YWx1ZXMuPC9wPgoKPGgzPmxpbmtfdG88L2gzPgo8cD5UaGlzIGFjdGlvbiBnZW5lcmF0ZSBhIGxpbmsgbGlrZSB1cmxfZm9yIGJ1dCBwcmUgZm9ybWF0dGVkLiBZb3UgY2FuIHNwZWNpZnkgdGhlIHRpdGxlIHdpdGggdGhlIHBhcmFtICJ0aXRsZSIuPC9wPgoKPGgzPmlDYWw8L2gzPgo8cD5Zb3UgY2FuIGdlbmVyYXRlIGlDYWwodkNhbCkgY29tcGF0aWJsZSB4bWwgd2l0aCB0aGlzIG1vZHVsZS4gSnVzdCBjYWxsIHRoZSBmdW5jdGlvbiB7e2xpdGVyYWx9fXt7ey9saXRlcmFsfX17eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19IGFjdGlvbj0iaWNhbCIgaWQ9Im15X2Rlc2lyZWRfaWQifSB0byBnZW5lcmF0ZSB0aGUgeG1sIG9yIHRoZSBmdW5jdGlvbiB7e2xpdGVyYWx9fXt7ey9saXRlcmFsfX17eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19IGFjdGlvbj0idXJsX2ZvciIgbWFjdGlvbj0iaWNhbCIgaWQ9Im15X2Rlc2lyZWRfaWQiIHNob3d0ZW1wbGF0ZT0iZmFsc2UifSBpZiB5b3Ugd2FudCB0aGUgZGlyZWN0IGxpbmsgdG8gdGhlIGljYWwgeG1sLjwvcD4KCjxoMz5DYWxlbmRhcjwvaDM+CjxwPlRoZSBjYWxlbmRhciBuZWVkcyB0aGUgZm9sbG93aW5nIGZpZWxkczogc3RhcnRfZGF0ZSBhbmQgZW5kX2RhdGUuIE9uY2UgdGhvc2UgaGF2ZSBiZWVuIGRlZmluZWQsIHlvdSBjYW4gYnVpbGQgdGhlIGNhbGVuZGFyIHVzaW5nIHRoZSBwYXJhbSBcJ2NhbGVuZGFyXCcuIEl0IHdpbGwgY3JlYXRlIHRoZSBmb2xsb3dpbmcgc21hcnR5IHZhcnM6ICRjYWxlbmRhciwgJGN1cnJlbnRfbW9udGgsICRuZXh0X21vbnRoLCAkcHJldmlvdXNfbW9udGguPC9wPgoKPGgzPlJTUzwvaDM+CjxwPllvdSBjYW4gZXhwb3J0IHlvdXIgZW50cmllcyB0byBSU1MgZmVlZHMuIElmIHlvdSBoYXZlIG1vZF9yZXdyaXRlIGluc3RhbGxlZCwganVzdCBjYWxsIHRoZSB1cmwgIi97eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKXxsb3dlcn19L3Jzcy94bWwiLiBZb3UgY2FuIGFsc28gY2FsbCB0aGUgYWN0aW9uICJyc3MiIGFuZCBwYXNzIHNvbWUgcGFyYW1ldGVycyBsaWtlIGZvciB0aGUgZGVmYXVsdCBhY3Rpb24uPC9wPgoKPGgzPlVzZXJzIGNvbnRlbnQ8L2gzPgo8cD5Zb3UgY2FuIGxldCB1c2VycyBzdWJtaXQgY29udGVudCB2aWEgdGhlIG1vZHVsZS4gRm9yIHRoZSBmb3JtIHlvdSBjYW4gdXNlIHRoZSBhY3Rpb24gInVzZXJfZm9ybSIuIFlvdSBjYW4gdGhlbiBtb2RpZnkgdGhlIGZvcm0gdGVtcGxhdGUgaW4gdGhlIGFkbWluLjwvcD4KPHA+VG8gbGV0IGFuIHVzZXIgcmV2aWV3IGhpcyBvd24gc3VibWlzc2lvbnMsIHlvdSBjYW4gdXNlIHRoZSBkZWZhdWx0IGFjdGlvbiBhbmQgc3BlY2lmeSB0aGUgcGFyYW0gInNob3dfdXNlcl9pdGVtcyIuIFRoaXMgd2lsbCBhbGxvdyBhIGxvZ2dlZCB1c2VyIHRvIHNob3cgaGlzIG93biBzdWJtaXNzaW9ucyBldmVuIHRoZSB1bnB1Ymxpc2hlZCBvbmVzLjwvcD4KPHA+V2l0aCB0aGlzIGxpc3QgeW91IGNhbiBhbHNvIGFsbG93IGhpbSB0byBlZGl0IGhpcyBvd24gcG9zdHMgYnkgdXNpbmcgdGhlIGFjdGlvbiB1cmxfZm9yIHdpdGggbWFjdGlvbiAidXNlcl9mb3JtIiBhbmQgc3BlY2lmeWluZyBpdGVtX2lkLiBJdCB3aWxsIG9ubHkgd29yayB3aXRoIHVzZXJcJ3MgcG9zdHMuPC9wPgo8cD5Zb3UgY2FuIGFsc28gY2hlY2sgdGhlIHBlcm1pc3Npb25zIGZvciBwdWJsaXNoaW5nL2VkaXRpbmcsIHlvdSBjYW4gb3ZlcnJpZGUgdGhlIG1ldGhvZCAiY2hlY2tQZXJtaXNzaW9ucyIgaW4gdGhlIE0mQyBGYWN0b3J5IGN1c3RvbSBsb2dpYy4gVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRydWUgb3IgZmFsc2UgYW5kIHJlY2VpdmUgdGhlICRwYXJhbXMgYXMgYW4gYXJyYXkuPC9wPgoKPGgzPlN1cHBvcnQ8L2gzPgo8cD5BcyBwZXIgdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBhcy1pcy4gUGxlYXNlIHJlYWQgdGhlIHRleHQgb2YgdGhlIGxpY2Vuc2UgZm9yIHRoZSBmdWxsIGRpc2NsYWltZXIuPC9wPgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEwLCBKZWFuLUNocmlzdG9waGUgQ3V2ZWxpZXIgPGEgaHJlZj0ibWFpbHRvOmpjY0Btb3JyaXMtY2hhcG1hbi5jb20iPiZsdDtqY2NAbW9ycmlzLWNoYXBtYW4uY29tJmd0OzwvYT4gLSBNb3JyaXMgJmFtcDsgQ2hhcG1hbi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIG1vZHVsZSBoYXMgYmVlbiByZWxlYXNlZCB1bmRlciB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5HTlUgUHVibGljIExpY2Vuc2U8L2E+LiBZb3UgbXVzdCBhZ3JlZSB0byB0aGlzIGxpY2Vuc2UgYmVmb3JlIHVzaW5nIHRoZSBtb2R1bGUuPC9wPicKKTs=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/MCFModule.module.php.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCiRHTE9CQUxTWydBRE9EQl9RVU9URV9GSUVMRE5BTUVTJ10gPSB0cnVlOwoKcmVxdWlyZSBkaXJuYW1lKF9fRklMRV9fKSAuICcvY2xhc3Nlcy97eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19T2JqZWN0QmFzZS5jbGFzcy5waHAnOwpyZXF1aXJlIGRpcm5hbWUoX19GSUxFX18pIC4gJy9jbGFzc2VzL3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX1PYmplY3QuY2xhc3MucGhwJzsKcmVxdWlyZSBkaXJuYW1lKF9fRklMRV9fKSAuICcvY2xhc3Nlcy97eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19Vmlld3MuY2xhc3MucGhwJzsKCmNsYXNzIHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0gZXh0ZW5kcyBDTVNNb2R1bGUgewoKCXB1YmxpYyBzdGF0aWMgJGZyb250ZW5kX3RlbXBsYXRlcyA9IGFycmF5KAoJCSdkZWZhdWx0JyAJCT0+ICdkZWZhdWx0JywKCQknZGV0YWlsJyAJCQk9PiAnZGV0YWlsJywgCgkJJ3NlYXJjaCcgCQkJPT4gJ3NlYXJjaCcsCgkJJ2NhbGVuZGFyJyAJCT0+ICdjYWxlbmRhcicsCgkJJ3RhZ2Nsb3VkJyAJCT0+ICd0YWdjbG91ZCcsIC8vIFRPRE8KCQkncnNzJyAJCQkJPT4gJ3JzcycsCgkJJ3BhZ2luYXRlZCcgCT0+ICdwYWdpbmF0ZWQnLAoJCSd1c2VyX2Zvcm0nIAk9PiAndXNlcl9mb3JtJywKCQkndXNlcl9mb3JtX3N1Y2NlcycgCT0+ICd1c2VyX2Zvcm1fc3VjY2VzJywKCQkpOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBEb0FjdGlvbigkbmFtZSwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQgPSAnJykgewogICAgICAgICRtZXRob2RzID0gZ2V0X2NsYXNzX21ldGhvZHMoJHRoaXMpOwogICAgICAgIGZvcmVhY2ggKCRtZXRob2RzIGFzICRtZXRob2QpIHsKICAgICAgICAgICAgaWYgKHN0cnBvcygkbWV0aG9kLCAnbW9kaWZpZXInKSA9PT0gMCkgewogICAgICAgICAgICAgICAgJG1vZGlmaWVyID1zdWJzdHIoJG1ldGhvZCwgOCk7CiAgICAgICAgICAgICAgICAkbW9kaWZpZXJ7MH0gPSBzdHJ0b2xvd2VyKCRtb2RpZmllcnswfSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+c21hcnR5LT5yZWdpc3Rlcl9tb2RpZmllcigkbW9kaWZpZXIsIGFycmF5KCR0aGlzLCAkbWV0aG9kKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcGFyZW50OjpEb0FjdGlvbigkbmFtZSwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOwogICAgfQoKCXB1YmxpYyBmdW5jdGlvbiBHZXROYW1lKCkgewkJcmV0dXJuICd7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19JzsJfQoJcHVibGljIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpIHsJCXJldHVybiAne3skbW9kdWxlLT5nZXRNb2R1bGVGcmllbmRseU5hbWUoKX19JzsJfQoJcHVibGljIGZ1bmN0aW9uIEdldFZlcnNpb24oKSB7CQlyZXR1cm4gJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlVmVyc2lvbigpfX0nOwl9CglwdWJsaWMJZnVuY3Rpb24gR2V0SGVscCgpIHsJCXJldHVybiAkdGhpcy0+TGFuZygnaGVscCcpOwl9CglwdWJsaWMJZnVuY3Rpb24gR2V0QXV0aG9yKCkgewkJcmV0dXJuICdBdXRvLWdlbmVyYXRlZCBieSBNJkMgRmFjdG9yeSc7CX0KCXB1YmxpYwlmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpIHsJCXJldHVybiAnamNjQG1vcnJpcy1jaGFwbWFuLmNvbSc7CX0KCXB1YmxpYwlmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKSB7CQlyZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOwl9CglwdWJsaWMJZnVuY3Rpb24gSXNQbHVnaW5Nb2R1bGUoKSB7CQlyZXR1cm4gdHJ1ZTsJfQoJcHVibGljCWZ1bmN0aW9uIEhhc0FkbWluKCkgewkJcmV0dXJuIHt7JGhhc19hZG1pbn19Owl9Cgl7eyogcHVibGljCWZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpIHsJCXJldHVybiAnY29udGVudCc7CX0gKn19CglwdWJsaWMJZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkgewkJcmV0dXJuICd7eyRhZG1pbl9zZWN0aW9ufX0nOwl9CglwdWJsaWMJZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpIHsJCXJldHVybiAkdGhpcy0+TGFuZygnYWRtaW5kZXNjcmlwdGlvbicpOwl9CglwdWJsaWMJZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkgewkJcmV0dXJuIHRydWU7CX0KCXB1YmxpYwlmdW5jdGlvbiBHZXREZXBlbmRlbmNpZXMoKSB7CQlyZXR1cm4gYXJyYXkoJ01DRmFjdG9yeScgPT4gJ3t7JG1jZmFjdG9yeXZlcnNpb259fScpOwl9CglwdWJsaWMJZnVuY3Rpb24gQ2hlY2tBY2Nlc3MoJHBlcm1pc3Npb24gPSAnTWFuYWdlIHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nKSB7CQlyZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbigkcGVybWlzc2lvbik7CX0KCXB1YmxpYwlmdW5jdGlvbiBEaXNwbGF5RXJyb3JQYWdlKCRpZCwgJiRwYXJhbXMsICRyZXR1cm5faWQsICRtZXNzYWdlPScnKSB7CgkJJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0aXRsZV9lcnJvcicsICR0aGlzLT5MYW5nKCdlcnJvcicpKTsKCQkkdGhpcy0+c21hcnR5LT5hc3NpZ25fYnlfcmVmKCdtZXNzYWdlJywgJG1lc3NhZ2UpOwoJCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZXJyb3IudHBsJyk7Cgl9CgoJZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKSB7CQlyZXR1cm4gJzEuNCc7CX0KCWZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpIHsJCXJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsJfQoJZnVuY3Rpb24gVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKSB7CQlyZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnKTsJfQoJZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpIHsJCXJldHVybiAkdGhpcy0+TGFuZygncmVhbGx5X3VuaW5zdGFsbCcpOwl9CglwdWJsaWMgZnVuY3Rpb24gSW5zdGFsbCgpIHsKCQlnbG9iYWwgJGdDbXM7CgkJJGNvbmZpZyA9ICRnQ21zLT5HZXRDb25maWcoKTsKCQkkZGIgPSAkdGhpcy0+Y21zLT5kYjsKCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CiAgICAgICAgJGZpZWxkcyA9ICdpZCBJIEtFWSwKCQkgIHVzZXJfaWQgSSwKCQkJcGFyZW50X2lkIEksCgkJCXRpdGxlIEMoMjU1KSwKCQkJe3tmb3JlYWNoIGZyb209JGV4dHJhX2ZpZWxkcyBpdGVtPWZpZWxkfX0KCQkJe3skZmllbGQubmFtZX19IHt7JGZpZWxkLmNvbHVtbl90eXBlfX0sCgkJCXt7L2ZvcmVhY2h9fQoJCQljcmVhdGVkX2F0IEQsCgkJCWNyZWF0ZWRfYnkgSSwKCQkJdXBkYXRlZF9hdCBELAoJCQl1cGRhdGVkX2J5IEksCgkJCW9yZGVyX2J5IEksCgkJCXB1Ymxpc2hlZCBJLAoJCQlwYXJlbnRfaXRlbSBJLAoJCQlmdWxsX3RleHRfc2VhcmNoIFhMJzsKCQkkc3FsYXJyYXkgPSAkZGljdC0+Q3JlYXRlVGFibGVTUUwoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfe3skdGFibGVfbmFtZX19JywgJGZpZWxkcyk7CgkJJGRpY3QtPkV4ZWN1dGVTUUxBcnJheSgkc3FsYXJyYXkpOwoJCSRkYi0+Q3JlYXRlU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfe3skdGFibGVfbmFtZX19X3NlcScpOwoJCQoJCS8vJHRoaXMtPlNldFRlbXBsYXRlKCdkaXNwbGF5X2xpc3QnLCAkdGhpcy0+R2V0VGVtcGxhdGVGcm9tRmlsZSgndGVtcGxhdGUubGlzdCcpKTsKCQkvLyR0aGlzLT5TZXRUZW1wbGF0ZSgnZGlzcGxheV9wYWdpbmF0ZWQnLCAkdGhpcy0+R2V0VGVtcGxhdGVGcm9tRmlsZSgndGVtcGxhdGUucGFnaW5hdGVkJykpOwoJCS8vJHRoaXMtPlNldFRlbXBsYXRlKCdkaXNwbGF5X2RldGFpbHMnLCAkdGhpcy0+R2V0VGVtcGxhdGVGcm9tRmlsZSgndGVtcGxhdGUuZGV0YWlscycpKTsKCQkvLyR0aGlzLT5TZXRUZW1wbGF0ZSgnZGlzcGxheV9zZWFyY2gnLCAkdGhpcy0+R2V0VGVtcGxhdGVGcm9tRmlsZSgndGVtcGxhdGUuc2VhcmNoJykpOwoJCS8vJHRoaXMtPlNldFRlbXBsYXRlKCdkaXNwbGF5X2NhbGVuZGFyJywgJHRoaXMtPkdldFRlbXBsYXRlRnJvbUZpbGUoJ3RlbXBsYXRlLmNhbGVuZGFyJykpOwoJCQoJCS8vQG1rZGlyKCRjb25maWdbJ3Jvb3RfcGF0aCddLicvdXBsb2Fkcy97eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19Jyk7CgkJJHRoaXMtPkNyZWF0ZUV2ZW50KCdDb250ZW50RWRpdFBvc3QnKTsKCQkkZ0Ntcy0+bW9kdWxlc1snTUNGYWN0b3J5J11bJ29iamVjdCddLT5BZGRFdmVudEhhbmRsZXIoJHRoaXMtPmdldE5hbWUoKSwgJ0NvbnRlbnRFZGl0UG9zdCcsIGZhbHNlKTsKCQkkdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignTWFuYWdlIHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nLCAnTWFuYWdlIHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nKTsJCgkJJHRoaXMtPkNyZWF0ZVBlcm1pc3Npb24oJ0FkbWluIHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nLCAnQWRtaW4ge3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fScpOwkKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnaW5kZXhfY29udGVudCcsICd0cnVlJyk7CgkJJHRoaXMtPlNldFByZWZlcmVuY2UoJ3R3aXR0ZXJfdGVtcGxhdGUnLCAneyR0aXRsZX0gLSB7JHVybH0nKTsKCQkkdGhpcy0+U2V0UHJlZmVyZW5jZSgnbWNmYWN0b3J5X3ZlcnNpb24nLCAne3skbWNmYWN0b3J5X3ZlcnNpb259fScpOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBVcGdyYWRlKCkKCXsKCQkkZGIgPSAkdGhpcy0+R2V0RGIoKTsKCQkkZGljdCA9IE5ld0RhdGFEaWN0aW9uYXJ5KCRkYik7CgkJCgkJJG9sZHZlcnNpb24gPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnbWNmYWN0b3J5X3ZlcnNpb24nLCAnMi41LjAnKTsKCQkKCQlzd2l0Y2godHJ1ZSkgewoJCQljYXNlIHZlcnNpb25fY29tcGFyZSgkb2xkdmVyc2lvbiwgJzIuOS4wJywgJzwnKToKCQkJCSR0aGlzLT5HZXRQcmVmZXJlbmNlKCdpbmRleF9jb250ZW50JywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnaW5kZXhfY29udGVudCcsICd0cnVlJykpOwoJCQljYXNlIHZlcnNpb25fY29tcGFyZSgkb2xkdmVyc2lvbiwgJzIuOS45JywgJzwnKToKCQkJCSR0aGlzLT5BZGREZWZhdWx0VGVtcGxhdGUoJ2RlZmF1bHQnLCAnZGlzcGxheV9saXN0Jyk7CgkJCQkkdGhpcy0+QWRkRGVmYXVsdFRlbXBsYXRlKCdkZXRhaWwnLCAnZGlzcGxheV9kZXRhaWxzJyk7CgkJCQkkdGhpcy0+QWRkRGVmYXVsdFRlbXBsYXRlKCdwYWdpbmF0ZWQnLCAnZGlzcGxheV9wYWdpbmF0ZWQnKTsKCQkJCSR0aGlzLT5BZGREZWZhdWx0VGVtcGxhdGUoJ3NlYXJjaCcsICdkaXNwbGF5X3NlYXJjaCcpOwoJCQkJJHRoaXMtPkFkZERlZmF1bHRUZW1wbGF0ZSgnY2FsZW5kYXInLCAnZGlzcGxheV9jYWxlbmRhcicpOwoJCQljYXNlIHZlcnNpb25fY29tcGFyZSgkb2xkdmVyc2lvbiwgJzIuOS4xNicsICc8Jyk6CgkJCQkJJHNxbGFycmF5ID0gJGRpY3QtPkFkZENvbHVtblNRTChjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX3t7JHRhYmxlX25hbWV9fScsICd1c2VyX2lkIEknKTsKCQkJCQkkZGljdC0+RXhlY3V0ZVNRTEFycmF5KCRzcWxhcnJheSk7CgkJfQoJCQoJCSR0aGlzLT5TZXRQcmVmZXJlbmNlKCdtY2ZhY3RvcnlfdmVyc2lvbicsICd7eyRtY2ZhY3RvcnlfdmVyc2lvbn19Jyk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIFVuaW5zdGFsbCgpIHsKCQlnbG9iYWwgJGdDbXM7CgkJJGRiID0gJHRoaXMtPmNtcy0+ZGI7CgkJJGRpY3QgPSBOZXdEYXRhRGljdGlvbmFyeSgkZGIpOwoJCSRzcWwgPSAkZGljdC0+RHJvcFRhYmxlU1FMKGNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3t7JHRhYmxlX25hbWV9fScpOwoJCSRkaWN0LT5FeGVjdXRlU1FMQXJyYXkoJHNxbCk7CgkJJGRiLT5Ecm9wU2VxdWVuY2UoY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfe3skdGFibGVfbmFtZX19X3NlcScpOwoJCSRnQ21zLT5tb2R1bGVzWydNQ0ZhY3RvcnknXVsnb2JqZWN0J10tPlJlbW92ZUV2ZW50SGFuZGxlcigkdGhpcy0+Z2V0TmFtZSgpLCAnQ29udGVudEVkaXRQb3N0Jyk7CgkJJHRoaXMtPlJlbW92ZUV2ZW50KCdDb250ZW50RWRpdFBvc3QnKTsKCQkkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgpOwoJfQoKCWZ1bmN0aW9uIFh0ZW5kZWRNb2R1bGUgKCkgewoJCXJldHVybiB0cnVlOwoJfQoKCWZ1bmN0aW9uIEdldEhlYWRlckhUTUwoKSB7CgkJJGh0bWwgID0gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IicuJHRoaXMtPmNvbmZpZ1sncm9vdF91cmwnXS4nL21vZHVsZXMvTUNGYWN0b3J5L2pzL2pxdWVyeS0xLjMuMi5taW4uanMiPjwvc2NyaXB0Pic7CgkJJGh0bWwgLj0gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij5qUXVlcnkubm9Db25mbGljdCgpOzwvc2NyaXB0Pic7CgkJcmV0dXJuICRodG1sOwoJfQoKCWZ1bmN0aW9uIHNldFBhcmFtZXRlcnMoKSB7CQoJCWdsb2JhbCAkZ0NtczsKICAgICR0aGlzLT5SZWdpc3Rlck1vZHVsZVBsdWdpbigpOwoJCSR0aGlzLT5SZWdpc3RlclJvdXRlKCcve3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl8bG93ZXJ9fVwvKD9QPGl0ZW1faWQ+WzAtOV0rKVwvKD9QPHJldHVybmlkPlswLTldKykoXC8uKj8pPyQvJywgYXJyYXkoJ2FjdGlvbicgPT4gJ2RldGFpbCcpKTsKCQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgnL3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfGxvd2VyfX1cL3Jzc1wvKD9QPG1hY3Rpb24+W2EtekEtWjAtOV8tXSspKFwvLio/KT8kLycsIGFycmF5KCdhY3Rpb24nID0+ICdyc3MnLCAnc2hvd3RlbXBsYXRlJyA9PiAnZmFsc2UnLCdyZXR1cm5pZCcgPT4gJGdDbXMtPkdldENvbnRlbnRPcGVyYXRpb25zKCktPkdldERlZmF1bHRQYWdlSUQoKSkpOwoJCQkkdGhpcy0+UmVnaXN0ZXJSb3V0ZSgnL3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfGxvd2VyfX1cL2Rvd25sb2FkXC8oP1A8aXRlbV9pZD5bMC05XSspXC8oP1A8ZmllbGQ+W2EtekEtWjAtOV8tXSspKFwvLio/KT8kLycsIAoJCQlhcnJheSgKCQkJJ2FjdGlvbicgPT4gJ2Rvd25sb2FkJywgCgkJCSdzaG93dGVtcGxhdGUnID0+ICdmYWxzZScsCgkJCSdyZXR1cm5pZCcgPT4gJGdDbXMtPkdldENvbnRlbnRPcGVyYXRpb25zKCktPkdldERlZmF1bHRQYWdlSUQoKQoJCQkpKTsKCX0KCglmdW5jdGlvbiBjcmVhdGVMaW5rKCRpZCwgJGFjdGlvbiwgJHJldHVybmlkPScnLCAkY29udGVudHM9JycsICRwYXJhbXM9YXJyYXkoKSwgJHdhcm5fbWVzc2FnZT0nJywgJG9ubHlocmVmPWZhbHNlLCAkaW5saW5lPWZhbHNlLCAkYWRkdHRleHQ9JycsICR0YXJnZXRjb250ZW50b25seT1mYWxzZSwgJHByZXR0eXVybD0nJykgewoJCWlmICgkdGFyZ2V0Y29udGVudG9ubHkgfHwgKCRyZXR1cm5pZCAhPSAnJyAmJiAhJGlubGluZSkpIHsKCQkJJGlkID0gJ2NudG50MDEnOwoJCX0KCQlpZiAoISRyZXR1cm5pZCkgewoJCQlpZiAoaXNzZXQoJEdMT0JBTFNbJ2dDbXMnXS0+dmFyaWFibGVzWydjb250ZW50X2lkJ10pKQoJCQl7CQkJCgkJCQkkcmV0dXJuaWQgPSAkR0xPQkFMU1snZ0NtcyddLT52YXJpYWJsZXNbJ2NvbnRlbnRfaWQnXTsJCgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkcmV0dXJuaWQgPSAnJzsKCQkJfQoJCX0KCQlpZiAoZW1wdHkoJHByZXR0eXVybCkpIHsKCQkJaWYgKCRhY3Rpb24gPT0gJ2RldGFpbCcpIHsKCQkJCSRpdGVtX2lkID0gJHBhcmFtc1snaXRlbV9pZCddOwoJCQkJJHByZXR0eXVybCA9ICd7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKXxsb3dlcn19LycgLiAkaXRlbV9pZCAuICcvJyAuICRyZXR1cm5pZCAuICcvJzsKCQkJCWlmICghZW1wdHkoJHBhcmFtc1sndGl0bGUnXSkpIHsKCQkJCQkkdGl0bGUgPSAkcGFyYW1zWyd0aXRsZSddOwoJCQkJCSRwcmV0dHl1cmwgLj0gbXVuZ2Vfc3RyaW5nX3RvX3VybCgkdGl0bGUpIC4gJy8nOwoJCQkJfQoJCQkJCgkJCQkkcXVlcnkgPSBhcnJheSgpOwoJCQkJZm9yZWFjaCAoJHBhcmFtcyBhcyAkbmFtZSA9PiAkdmFsdWUpIHsKCQkJCQlpZiAoIWluX2FycmF5KCRuYW1lLCBhcnJheSgKCQkJCQkJJ21vZHVsZScsICdhY3Rpb24nLCAnaXRlbV9pZCcsICd0aXRsZScsCgkJCQkJCSdvcmRlcmJ5JywnbGltaXQnCgkJCQkJCSkpKSB7CgkJCQkJCSRxdWVyeVskaWQgLiAkbmFtZV0gPSAkdmFsdWU7CgkJCQkJfQoJCQkJfQoJCQkJaWYgKGNvdW50KCRxdWVyeSkpIHsKCQkJCQkkcHJldHR5dXJsIC49ICc/JyAuIGh0dHBfYnVpbGRfcXVlcnkoJHF1ZXJ5KTsKCQkJCX0KCQkJfQoJCX0KCQlyZXR1cm4gcGFyZW50OjpjcmVhdGVMaW5rKCRpZCwgJGFjdGlvbiwgJHJldHVybmlkLCAkY29udGVudHMsICRwYXJhbXMsICR3YXJuX21lc3NhZ2UsICRvbmx5aHJlZiwgJGlubGluZSwgJGFkZHR0ZXh0LCAkdGFyZ2V0Y29udGVudG9ubHksICRwcmV0dHl1cmwpOwoJfQoKCWZ1bmN0aW9uIFNlYXJjaFJlaW5kZXgoJG1vZHVsZSkgewoJCSRjID0gbmV3IE1DRkNyaXRlcmlhKCk7CgkJJGMtPmFkZCgncHVibGlzaGVkJywgMSk7CgkJJGl0ZW1zID0ge3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fU9iamVjdDo6ZG9TZWxlY3QoJGMpOwoJCWZvcmVhY2ggKCRpdGVtcyBhcyAkaXRlbSkgewoJCQkkdGhpcy0+aW5kZXgoJGl0ZW0pOwoJCX0KCX0KCQoJZnVuY3Rpb24gU2VhcmNoRGVpbmRleCgkbW9kdWxlKSB7CgkJJGMgPSBuZXcgTUNGQ3JpdGVyaWEoKTsKCQkkYy0+YWRkKCdwdWJsaXNoZWQnLCAxKTsKCQkkaXRlbXMgPSB7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19T2JqZWN0Ojpkb1NlbGVjdCgkYyk7CgkJZm9yZWFjaCAoJGl0ZW1zIGFzICRpdGVtKSB7CgkJCSR0aGlzLT5kZWluZGV4KCRpdGVtKTsKCQl9Cgl9CgoJZnVuY3Rpb24gaW5kZXgoJGl0ZW0pIHsKCQlpZiAoJHRoaXMtPmdldFByZWZlcmVuY2UoJ2luZGV4X2NvbnRlbnQnKSA9PSAndHJ1ZScpCgkJewoJCQkkc2VhcmNoID0gJHRoaXMtPkdldE1vZHVsZUluc3RhbmNlKCdTZWFyY2gnKTsKCQkJaWYgKCRzZWFyY2gpIHsKCQkJCSRzZWFyY2gtPkFkZFdvcmRzKAoJCQkJCSd7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19JywKCQkJCQkkaXRlbS0+Z2V0SWQoKSwKCQkJCQkne3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl8bG93ZXJ9fV9pdGVtJywKCQkJCQkkaXRlbS0+Z2V0U2VhcmNoU3RyaW5nKCkKCQkJCSk7CgkJCX0KCQl9Cgl9CgoJZnVuY3Rpb24gZGVpbmRleCgkaXRlbSkgewoJCSRzZWFyY2ggPSAkdGhpcy0+R2V0TW9kdWxlSW5zdGFuY2UoJ1NlYXJjaCcpOwoJCWlmICgkc2VhcmNoKSB7CgkJCSRzZWFyY2gtPkRlbGV0ZVdvcmRzKCd7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19JywgJGl0ZW0tPmdldElkKCksICd7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKXxsb3dlcn19X2l0ZW0nKTsKCQl9Cgl9CgoJZnVuY3Rpb24gU2VhcmNoUmVzdWx0KCRyZXR1cm5pZCwgJGlkLCAkYXR0ciA9ICcnKSB7CgkJJHJlc3VsdCA9IGFycmF5KCk7CgkJaWYgKCRhdHRyID09ICd7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKXxsb3dlcn19X2l0ZW0nKSB7CgkJCSRjID0gbmV3IE1DRkNyaXRlcmlhKCk7CgkJCSRjLT5hZGQoJ2lkJywgJGlkKTsKCQkJJGMtPmFkZCgncHVibGlzaGVkJywgMSk7CgkJCSRpdGVtID0ge3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fU9iamVjdDo6ZG9TZWxlY3RPbmUoJGMpOwoJCQlpZiAoJGl0ZW0pIHsKCQkJCSRyZXN1bHRbMF0gPSAkdGhpcy0+R2V0RnJpZW5kbHlOYW1lKCk7CgkJCQkkcmVzdWx0WzFdID0gJGl0ZW0tPmdldFRpdGxlKCk7CgkJCQkkcmVzdWx0WzJdID0gJHRoaXMtPkNyZWF0ZUxpbmsoJ2NudG50MDEnLCAnZGV0YWlsJywgJHJldHVybmlkLCAnJywgYXJyYXkoJ2l0ZW1faWQnID0+ICRpZCwgJ3RpdGxlJyA9PiAkaXRlbS0+Z2V0VGl0bGUoKSksICcnLCB0cnVlKTsKCQkJfQoJCX0KCQlyZXR1cm4gJHJlc3VsdDsKCX0KCQoJLyoqCgkgKiBOVExpc3Q6IE5vdGlmaWNhdGlvbiBUb29sIGZ1bmN0aW9uOiBSZXR1cm4gdGhlIGxpc3Qgb2YgaXRlbXMgdXBsb2FkZWQgc2luY2UgYSBjZXJ0YWluIGRhdGUgCgkgKi8KCglmdW5jdGlvbiBOVExpc3QoJGRhdGUsICR0ZW1wbGF0ZSA9IG51bGwsICRwYXJhbXMgPSBhcnJheSgpKQoJewoJCWdsb2JhbCAkZ0NtczsKCQkkcmV0dXJuaWQgPSAkdGhpcy0+Z2V0UHJlZmVyZW5jZSgnZGVmYXVsdF9wYWdlJywgJycpOwoJCSRjID0gbmV3IE1DRkNyaXRlcmlhKCk7CgkJJGMtPmFkZCgncHVibGlzaGVkJywgJzEnKTsKCQlpZihpc3NldCgkcGFyYW1zWydjcmVhdGVkX2F0J10pKQoJCXsKCQkJJGMtPmFkZCgnY3JlYXRlZF9hdCcsICRkYXRlLCBNQ0ZDcml0ZXJpYTo6R1JFQVRFUl9FUVVBTCk7CQoJCX0KCQllbHNlCgkJewoJCQkkYy0+YWRkKCd1cGRhdGVkX2F0JywgJGRhdGUsIE1DRkNyaXRlcmlhOjpHUkVBVEVSX0VRVUFMKTsKCQl9CQkKCQkkdGhpcy0+YnVpbGRGcm9udGVuZEZpbHRlcnMoJGMsICRwYXJhbXMpOwoJCSRjLT5hZGRBc2NlbmRpbmdPcmRlckJ5Q29sdW1uKCd1cGRhdGVkX2F0Jyk7CgkJJGl0ZW1zID0ge3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fU9iamVjdDo6ZG9TZWxlY3QoJGMpOwoKCQlpZiAoZW1wdHkoJGl0ZW1zKSkKCQl7CgkJCXJldHVybiBudWxsOwoJCX0KCQkKCQlpZiAoIWlzX251bGwoJHRlbXBsYXRlKSkKCQl7CgkJCSRwYXJhbXNbJ3RlbXBsYXRlJ10gPSAkdGVtcGxhdGU7CgkJfQoKCQkkZGV0YWlscGFnZSA9ICRyZXR1cm5pZDsKCgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2RldGFpbHBhZ2UnXSkpIHsKCQkgICAgJG1hbmFnZXIgPSAkZ0Ntcy0+R2V0SGllcmFyY2h5TWFuYWdlcigpOwoJCSAgICAkbm9kZSA9ICRtYW5hZ2VyLT5zdXJlR2V0Tm9kZUJ5QWxpYXMoJHBhcmFtc1snZGV0YWlscGFnZSddKTsKCQkgICAgaWYgKCRub2RlKSB7CgkJICAgICAgICAkY29udGVudCA9ICRub2RlLT5HZXRDb250ZW50KCk7CgkJICAgICAgICBpZiAoJGNvbnRlbnQpCgkJICAgICAgICB7CgkJICAgICAgICAgICAgJGRldGFpbHBhZ2UgPSAkY29udGVudC0+SWQoKTsKCQkgICAgICAgIH0KCQkgICAgfSBlbHNlIHsKCQkgICAgICAgICRub2RlID0gJG1hbmFnZXItPnN1cmVHZXROb2RlQnlJZCgkcGFyYW1zWydkZXRhaWxwYWdlJ10pOwoJCSAgICAgICAgaWYgKCRub2RlKSB7CgkJICAgICAgICAgICAgJGRldGFpbHBhZ2UgPSAkcGFyYW1zWydkZXRhaWxwYWdlJ107CgkJICAgICAgICB9CgkJICAgIH0KCQkgICAgJHBhcmFtc1snb3JpZ2lkJ10gPSAkcmV0dXJuaWQ7CgkJfQoKCQlmb3JlYWNoICgkaXRlbXMgYXMgJiRpdGVtKSB7CgkJCSRwYXJhbXNbJ2l0ZW1faWQnXSA9ICRpdGVtLT5nZXRJZCgpOwoJCQkkcGFyYW1zWyd0aXRsZSddID0gJGl0ZW0tPmdldFRpdGxlKCk7CgkJCSRuZXdwYXJhbXMgPSAkcGFyYW1zOwoJCQl1bnNldCgkbmV3cGFyYW1zWydzaG93dGVtcGxhdGUnXSk7CgkJCSRpdGVtLT5kZXRhaWxfbGluayA9ICR0aGlzLT5jcmVhdGVMaW5rKCRpZCwgJ2RldGFpbCcsICRkZXRhaWxwYWdlLCAkY29udGVudHM9JycsICRuZXdwYXJhbXMsICcnLCB0cnVlKTsKCQkJJHh0ZW5kZWRfZmVsaXN0ID0gTVhfWHRlbmRlZE1vZHVsZTo6Z2V0UmVsYXRlZEl0ZW1zKCR0aGlzLT5nZXROYW1lKCksICRpdGVtLT5nZXRJZCgpKTsKCQl9CgkJdW5zZXQoJGl0ZW0pOwoKICAgICR0aGlzLT5zbWFydHktPmFzc2lnbignaXRlbXMnLCAkaXRlbXMpOwkJCiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nLCAkaXRlbXMpOwogICAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKXxsb3dlcn19JywgJGl0ZW1zKTsKICAgICRwYXJhbXNvYmogPSBuZXcgc3RkQ2xhc3MoKTsKICAgICRwYXJhbXNvYmotPnBhcmFtcyA9ICRwYXJhbXM7CiAgICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21jZmFjdG9yeScsICRwYXJhbXNvYmopOwoJCXJldHVybiAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRm9yKCdkZWZhdWx0JywgJHBhcmFtcyk7Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiB1cGRhdGVJdGVtKCRpdGVtX2lkKQoJewoJCSRjID0gbmV3IE1DRkNyaXRlcmlhKCk7CgkJJGMtPmFkZCgnaWQnLCAkaXRlbV9pZCk7CgkJJGl0ZW0gPSB7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19T2JqZWN0Ojpkb1NlbGVjdE9uZSgkYyk7CgkJCgkJaWYgKCRpdGVtICE9PSBmYWxzZSkKCQl7CgkJCSRpdGVtLT5mb3JjZVVwZGF0ZU9iamVjdCgnbWFnaWMnKTsJCgkJfQoJfQoKCXB1YmxpYyBmdW5jdGlvbiBnZXRBZG1pbkxpc3QoJGlkLCRyZXR1cm5pZCwkZ0NtcykKCXsKCQkKCQkvLyBpZiAoISR0aGlzLT5DaGVja0FjY2VzcygnTWFuYWdlIE1DIEZhY3RvcnknKSkgewoJCS8vIAkJCXJldHVybiAkdGhpcy0+RGlzcGxheUVycm9yUGFnZSgkaWQsICRwYXJhbXMsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ2FjY2Vzc2RlbmllZCcpKTsKCQkvLyAJCX0KCQkKCQkvL3JldHVybiB7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19Vmlld3M6OmFkbWluSXRlbXMoJHRoaXMsJGlkLCRyZXR1cm5pZCwkZ0Ntcyk7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gRXhwb3J0RGF0YXMoKQoJewoJCSRkYXRhcyA9IGFycmF5KCk7CgkJJGMgPSBuZXcgTUNGQ3JpdGVyaWEoKTsKCQkkaXRlbXMgPSB7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19T2JqZWN0Ojpkb1NlbGVjdCgkYyk7CgoJCSRkYXRhc1swXSA9IGFycmF5KAoJCQknaWQnLAoJCQkndGl0bGUnLAoJCQl7e2ZvcmVhY2ggZnJvbT0kZXh0cmFfZmllbGRzIGl0ZW09ZmllbGR9fQoJCQkne3skZmllbGQuZnJpZW5kbHluYW1lfX0nLAoJCQl7ey9mb3JlYWNofX0KCQkJJ2NyZWF0ZWRfYXQnLAoJCQknY3JlYXRlZF9ieScsCgkJCSd1cGRhdGVkX2F0JywKCQkJJ3VwZGF0ZWRfYnknLAoJCQknb3JkZXJfYnknLAoJCQkncHVibGlzaGVkJywKCQkJJ3BhcmVudF9pdGVtJywKCQkJJ3BhcmVudF9pZCcKCQkJKTsKCQkJCgkJZm9yZWFjaCgkaXRlbXMgYXMgJGl0ZW0pCgkJewoJCQkkZGF0YXNbXSA9IGFycmF5KAoJCQkJJ2lkJyA9PiAkaXRlbS0+Z2V0SWQoKSwKCQkJCSd0aXRsZScgPT4gJGl0ZW0tPmdldFRpdGxlKCksCgkJCQl7e2ZvcmVhY2ggZnJvbT0kZXh0cmFfZmllbGRzIGl0ZW09ZmllbGR9fQoJCQkJJ3t7JGZpZWxkLmZyaWVuZGx5bmFtZX19JyA9PiAkaXRlbS0+Z2V0e3skZmllbGQuY2FtZWxjYXNlfX0oKSwKCQkJCXt7L2ZvcmVhY2h9fQoJCQkJJ2NyZWF0ZWRfYXQnID0+ICRpdGVtLT5nZXRDcmVhdGVkQXQoKSwKCQkJCSdjcmVhdGVkX2J5JyA9PiAkaXRlbS0+Z2V0Q3JlYXRlZEJ5KCksCgkJCQkndXBkYXRlZF9hdCcgPT4gJGl0ZW0tPmdldFVwZGF0ZWRBdCgpLAoJCQkJJ3VwZGF0ZWRfYnknID0+ICRpdGVtLT5nZXRVcGRhdGVkQnkoKSwKCQkJCSdvcmRlcl9ieScgPT4gJGl0ZW0tPmdldE9yZGVyQnkoKSwKCQkJCSdwdWJsaXNoZWQnID0+ICRpdGVtLT5nZXRQdWJsaXNoZWQoKSwKCQkJCSdwYXJlbnRfaXRlbScgPT4gJGl0ZW0tPmdldFBhcmVudEl0ZW0oKSwKCQkJCSdwYXJlbnRfaWQnID0+ICRpdGVtLT5nZXRQYXJlbnRJZCgpCgkJCSk7CgkJfQoJCQkKCQlyZXR1cm4gJGRhdGFzOwoJfQoJCgkvLyBURU1QTEFURVMKCQoJcHVibGljIGZ1bmN0aW9uIEdldERlZmF1bHRUZW1wbGF0ZXMoKQoJewoJCSRhcnJheSA9IHVuc2VyaWFsaXplKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdkZWZhdWx0X3RlbXBsYXRlcycpKTsKCQlpZiAoaXNfYXJyYXkoJGFycmF5KSkKCQl7CgkJCXJldHVybiAkYXJyYXk7CgkJfQoJCXJldHVybiBhcnJheSgpOwoJfSAKCQoJcHVibGljIGZ1bmN0aW9uIFNldERlZmF1bHRUZW1wbGF0ZXMoJGxpc3QgPSBhcnJheSgpKQoJewoJCXJldHVybiAkdGhpcy0+U2V0UHJlZmVyZW5jZSgnZGVmYXVsdF90ZW1wbGF0ZXMnLCBzZXJpYWxpemUoJGxpc3QpKTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIEFkZERlZmF1bHRUZW1wbGF0ZSgkYWN0aW9uLCAkdGVtcGxhdGUpCgl7CgkJJGxpc3QgPSAkdGhpcy0+R2V0RGVmYXVsdFRlbXBsYXRlcygpOwoJCSRsaXN0WyRhY3Rpb25dID0gJHRlbXBsYXRlOwoJCSR0aGlzLT5TZXREZWZhdWx0VGVtcGxhdGVzKCRsaXN0KTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIEdldERlZmF1bHRUZW1wbGF0ZSgkYWN0aW9uKQoJewoJCQkkbGlzdCA9ICR0aGlzLT5HZXREZWZhdWx0VGVtcGxhdGVzKCk7CgkJCWlmICghaXNfYXJyYXkoJGxpc3QpKSAkbGlzdCA9IGFycmF5KCk7CgkJCWlmIChhcnJheV9rZXlfZXhpc3RzKCRhY3Rpb24sICRsaXN0KSkgLy8gVE9ETzogUG9zc2libGUgcHJvYmxlbSB3aXRoIGxpc3QKCQkJewoJCQkJcmV0dXJuICRsaXN0WyRhY3Rpb25dOwoJCQl9CgkJCWVsc2UKCQkJewoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBpc0RlZmF1bHRUZW1wbGF0ZSgkdGVtcGxhdGUpCgl7CQkKCQkkbGlzdCA9ICR0aGlzLT5HZXREZWZhdWx0VGVtcGxhdGVzKCk7CgkJJGFjdGlvbiA9IGFycmF5X3NlYXJjaCgkdGVtcGxhdGUsICRsaXN0KTsKCQlpZigkYWN0aW9uICE9PSBmYWxzZSkKCQl7CgkJCXJldHVybiAkYWN0aW9uOwoJCX0KCQlyZXR1cm4gZmFsc2U7Cgl9CQoJCglwdWJsaWMgZnVuY3Rpb24gcmVtb3ZlRGVmYXVsdFRlbXBsYXRlKCR0ZW1wbGF0ZSkKCXsJCQoJCSRsaXN0ID0gJHRoaXMtPkdldERlZmF1bHRUZW1wbGF0ZXMoKTsKCQkkYWN0aW9uID0gYXJyYXlfc2VhcmNoKCR0ZW1wbGF0ZSwgJGxpc3QpOwoJCWlmKCRhY3Rpb24gIT09IGZhbHNlKQoJCXsKCQkJdW5zZXQoJGxpc3RbJGFjdGlvbl0pOwoJCQkkdGhpcy0+U2V0RGVmYXVsdFRlbXBsYXRlcygkbGlzdCk7CgkJfQoJCXJldHVybiBmYWxzZTsKCX0KCQoJcHVibGljIGZ1bmN0aW9uIFByb2Nlc3NUZW1wbGF0ZUZvcigkYWN0aW9uLCAkcGFyYW1zID0gYXJyYXkoKSkKCXsKCQlpZiAoaXNzZXQoJHBhcmFtc1sndGVtcGxhdGUnXSkgJiYgJHRoaXMtPkdldFRlbXBsYXRlKCRwYXJhbXNbJ3RlbXBsYXRlJ10pKSB7CgkJCXJldHVybiAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCRwYXJhbXNbJ3RlbXBsYXRlJ10pOwoJCX0KCQllbHNlaWYgKCgkdGVtcGxhdGUgPSAkdGhpcy0+R2V0RGVmYXVsdFRlbXBsYXRlKCRhY3Rpb24pKQkmJgkoJHRoaXMtPkdldFRlbXBsYXRlKCR0ZW1wbGF0ZSkgIT09IGZhbHNlKSkKCQl7CgkJCXJldHVybiAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlRnJvbURhdGFiYXNlKCR0ZW1wbGF0ZSk7CgkJfQoJCWVsc2UKCQl7CgkJCXJldHVybiAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdmcm9udGVuZC4nLiRhY3Rpb24uJy50cGwnKTsKCQl9Cgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBQYXJhbXNGb3JMaW5rKCRwYXJhbXMsJGluY2x1ZGUgPSBhcnJheSgpLCRleGNsdWRlID0gYXJyYXkoKSkKCXsKCQkkbmV3X3BhcmFtcyA9IGFycmF5KCk7CgkJCgkJZm9yZWFjaCgkcGFyYW1zIGFzICRrZXkgPT4gJHZhbHVlKQoJCXsKCQkJaWYgKCFpbl9hcnJheSgka2V5LCAkZXhjbHVkZSkpCgkJCXsKCQkJCSRuZXdfcGFyYW1zWyRrZXldID0gJHZhbHVlOwoJCQl9CgkJfQoJCQoJCWZvcmVhY2goJGluY2x1ZGUgYXMgJGtleSA9PiAkdmFsdWUpCgkJewoJCQlpZiAoIWluX2FycmF5KCRrZXksICRleGNsdWRlKSkKCQkJewoJCQkJJG5ld19wYXJhbXNbJGtleV0gPSAkdmFsdWU7CgkJCX0KCQl9CgkJCgkJLy8gTm93IHdlJ2xsIHRyZWF0aCB0aGUgY29tcGxleCBhcnJheSBwcm9ibGVtCgkJCgkJJHF1ZXJ5ID0gaHR0cF9idWlsZF9xdWVyeSgkbmV3X3BhcmFtcyk7CgkJJGVudHJpZXMgPSBleHBsb2RlKCcmJywgJHF1ZXJ5KTsKCQkkb3V0cHV0ID0gYXJyYXkoKTsKCQlmb3JlYWNoKCRlbnRyaWVzIGFzICRlbnRyeSkKCQl7CgkJCSRkYXRhID0gZXhwbG9kZSgnPScsICRlbnRyeSk7CgkJCSRvdXRwdXRbJGRhdGFbMF1dID0gdXJsZGVjb2RlKCRkYXRhWzFdKTsKCQl9CQoJCQoJCXJldHVybiAkb3V0cHV0OwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gYnVpbGRGaWx0ZXJzQ3JpdGVyaWEoTUNGQ3JpdGVyaWEgJiRjLCAkZmlsdGVycykKCXsKCQl7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19T2JqZWN0OjpidWlsZEZpbHRlcnNDcml0ZXJpYSgkYywgJGZpbHRlcnMpOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gYnVpbGRGcm9udGVuZEZpbHRlcnMoTUNGQ3JpdGVyaWEgJiRjLCAkcGFyYW1zKQoJewoJCWdsb2JhbCAkZ0NtczsKCQkvLyBNb2R1bGUgWHRlbmRlciBmaWx0ZXJzCgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2N1cnJlbnRwYWdlJ10pKSB7CgkJCSRjLT5hZGQoJ2lkJywgTVhfUmVsYXRpb25MaW5rOjpnZXRSZWxhdGVkSXRlbXNJZHMoJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nLCAkZ0Ntcy0+dmFyaWFibGVzWydjb250ZW50X2lkJ10sICdwYWdlcycpLCBNQ0ZDcml0ZXJpYTo6SU4pOwoJCX0KCQlpZiAoaXNzZXQoJHBhcmFtc1sncGFnZXMnXSkpIHsKCQkJJGdsdWUgPSBpc3NldCgkcGFyYW1zWydhbGxfcGFnZXMnXSkgPyAnQU5EJyA6ICdPUic7CgkJCSRjLT5hZGQoJ2lkJywgTVhfUmVsYXRpb25MaW5rOjpnZXRSZWxhdGVkSXRlbXNJZHMoJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nLCBleHBsb2RlKCcsJywgJHBhcmFtc1sncGFnZXMnXSksICdwYWdlcycsICRnbHVlKSwgTUNGQ3JpdGVyaWE6OklOKTsKCQl9CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ29wdGlvbnMnXSkpIHsKCQkJJGdsdWUgPSBpc3NldCgkcGFyYW1zWydhbGxfb3B0aW9ucyddKSA/ICdBTkQnIDogJ09SJzsKCQkJJGMtPmFkZCgnaWQnLCBNWF9SZWxhdGlvbkxpbms6OmdldFJlbGF0ZWRJdGVtc0lkcygne3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fScsIGV4cGxvZGUoJywnLCAkcGFyYW1zWydvcHRpb25zJ10pLCAnb3B0aW9ucycsICRnbHVlKSwgTUNGQ3JpdGVyaWE6OklOKTsKCQl9CgkJCgkJLy8gU2VhcmNoIGZpbHRlcnMKCQkKCQlpZiAoaXNzZXQoJHBhcmFtc1snbXhmaWx0ZXJzX29wdGlvbnMnXSkgJiYgaXNfYXJyYXkoJHBhcmFtc1snbXhmaWx0ZXJzX29wdGlvbnMnXSkpIHsKCQkJJG9wdGlvbnMgPSBhcnJheSgpOwoJCQlmb3JlYWNoICgkcGFyYW1zWydteGZpbHRlcnNfb3B0aW9ucyddIGFzICRvcHRpb24pIHsKCQkJCWlmICgkb3B0aW9uKSB7CgkJCQkJJG9wdGlvbnNbXSA9ICRvcHRpb247CgkJCQl9CgkJCX0KCQkJaWYgKGNvdW50KCRvcHRpb25zKSkgewoJCQkJJGMtPmFkZCgnaWQnLCBNWF9SZWxhdGlvbkxpbms6OmdldFJlbGF0ZWRJdGVtc0lkcygne3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fScsICRvcHRpb25zLCAnb3B0aW9ucycsICdBTkQnKSwgTUNGQ3JpdGVyaWE6OklOKTsKCQkJfQoJCX0KCgkJaWYgKGlzc2V0KCRwYXJhbXNbJ214ZmlsdGVyc19wYWdlcyddKSAmJiBpc19hcnJheSgkcGFyYW1zWydteGZpbHRlcnNfcGFnZXMnXSkpIHsKCQkJJHBhZ2VzID0gYXJyYXkoKTsKCQkJZm9yZWFjaCAoJHBhcmFtc1snbXhmaWx0ZXJzX3BhZ2VzJ10gYXMgJHBhZ2UpIHsKCQkJCWlmICgkcGFnZSkgewoJCQkJCSRwYWdlc1tdID0gJHBhZ2U7CgkJCQl9CgkJCX0KCQkJaWYgKGNvdW50KCRwYWdlcykpIHsKCQkJCSRjLT5hZGQoJ2lkJywgTVhfUmVsYXRpb25MaW5rOjpnZXRSZWxhdGVkSXRlbXNJZHMoJ3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0nLCAkcGFnZXMsICdwYWdlcycsICdBTkQnKSwgTUNGQ3JpdGVyaWE6OklOKTsKCQkJfQoJCX0KCQkKCQlpZiAoaXNzZXQoJHBhcmFtc1snZmlsdGVyX3RpdGxlJ10pKSB7CgkJCSRmaWx0ZXJfdGl0bGUgPSB0cmltKGh0bWxfZW50aXR5X2RlY29kZSgkcGFyYW1zWydmaWx0ZXJfdGl0bGUnXSkpOwoJCQkkZmlsdGVyX3RpdGxlID0gc3RyX3JlcGxhY2UoYXJyYXkoJyUnLCAnPycpLCAnICcsICRmaWx0ZXJfdGl0bGUpOwoJCQlpZiAoIWVtcHR5KCRmaWx0ZXJfdGl0bGUpKSB7CgkJCQlwcmVnX21hdGNoX2FsbCgnLyg/OiIoW14iXSspIil8KFx3KykvJywgJGZpbHRlcl90aXRsZSwgJG1hdGNoZXMpOwoJCQkJJGNsYXVzZXMgPSBhcnJheSgpOwoJCQkJZm9yZWFjaCAoJG1hdGNoZXNbMF0gYXMgJGtleSA9PiAkdmFsdWUpIHsKCQkJCQkkY2xhdXNlc1ska2V5XSA9ICRtYXRjaGVzWzFdWyRrZXldID8gJG1hdGNoZXNbMV1bJGtleV0gOiAkbWF0Y2hlc1syXVska2V5XTsKCQkJCX0KCQkJCWZvcmVhY2ggKCRjbGF1c2VzIGFzICRjbGF1c2UpIHsKCQkJCQkkYy0+YWRkKCd0aXRsZScsICclJyAuICRjbGF1c2UgLiAnJScsIE1DRkNyaXRlcmlhOjpMSUtFKTsKCQkJCX0KCQkJfQoJCX0KCgkJaWYgKGlzc2V0KCRwYXJhbXNbJ2ZpbHRlcl9hbGwnXSkpIHsKCQkJJGZpbHRlcl9hbGwgPSB0cmltKGh0bWxfZW50aXR5X2RlY29kZSgkcGFyYW1zWydmaWx0ZXJfYWxsJ10pKTsKCQkJJGZpbHRlcl9hbGwgPSBzdHJfcmVwbGFjZShhcnJheSgnJScsICc/JyksICcgJywgJGZpbHRlcl9hbGwpOwoJCQlpZiAoIWVtcHR5KCRmaWx0ZXJfYWxsKSkgewoJCQkJcHJlZ19tYXRjaF9hbGwoJy8oPzoiKFteIl0rKSIpfChcdyspLycsICRmaWx0ZXJfYWxsLCAkbWF0Y2hlcyk7CgkJCQkkY2xhdXNlcyA9IGFycmF5KCk7CgkJCQlmb3JlYWNoICgkbWF0Y2hlc1swXSBhcyAka2V5ID0+ICR2YWx1ZSkgewoJCQkJCSRjbGF1c2VzWyRrZXldID0gJG1hdGNoZXNbMV1bJGtleV0gPyAkbWF0Y2hlc1sxXVska2V5XSA6ICRtYXRjaGVzWzJdWyRrZXldOwoJCQkJfQoJCQkJZm9yZWFjaCAoJGNsYXVzZXMgYXMgJGNsYXVzZSkgewoJCQkJCSRjLT5hZGQoJ2Z1bGxfdGV4dF9zZWFyY2gnLCAnJScgLiAkY2xhdXNlIC4gJyUnLCBNQ0ZDcml0ZXJpYTo6TElLRSk7CgkJCQl9CgkJCX0KCQl9CgkJCgkJLy8gTW9kdWxlIEZpbHRlcnMKCQkKCQl7e2ZvcmVhY2ggZnJvbT0kZmlsdGVycyBpdGVtPWZpbHRlcn19CgkJaWYgKGlzc2V0KCRwYXJhbXNbJ3t7JGZpbHRlci5uYW1lfX0nXSkgJiYgJHBhcmFtc1sne3skZmlsdGVyLm5hbWV9fSddICE9ICcnKSB7CgkJCXt7aWYgaW5fYXJyYXkoJGZpbHRlci50eXBlLCBhcnJheSgnbGVzcycsICdsZXNzX2VxdWFsJywgJ2dyZWF0ZXInLCAnZ3JlYXRlcl9lcXVhbCcpKX19CgkJCSRjLT5hZGQoJ0NBU1Qoe3skZmlsdGVyLmZpZWxkfX0gQVMgVU5TSUdORUQpJywgJHBhcmFtc1sne3skZmlsdGVyLm5hbWV9fSddLCBNQ0ZDcml0ZXJpYTo6e3skZmlsdGVyLmNyaXRlcmlhfX0pOwoJCQl7e2Vsc2VpZiAgaW5fYXJyYXkoJGZpbHRlci50eXBlLCBhcnJheSgnbGlrZV93aWxkJykpfX0KCQkJJGMtPmFkZCgne3skZmlsdGVyLmZpZWxkfX0nLCAnJScgLiAkcGFyYW1zWyd7eyRmaWx0ZXIubmFtZX19J10gLiAnJScsIE1DRkNyaXRlcmlhOjp7eyRmaWx0ZXIuY3JpdGVyaWF9fSk7CgkJCXt7ZWxzZX19CgkJCSRjLT5hZGQoJ3t7JGZpbHRlci5maWVsZH19JywgJHBhcmFtc1sne3skZmlsdGVyLm5hbWV9fSddLCBNQ0ZDcml0ZXJpYTo6e3skZmlsdGVyLmNyaXRlcmlhfX0pOwoJCQl7ey9pZn19CgkJfQoJCXt7L2ZvcmVhY2h9fQoJCQoJCS8vIEVuZCBidWlsZEZyb250ZW5kRmlsdGVycwoJfQp9Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/rss/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/smarty/templates/rss/rss.css.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[LyogY3NzIGZvciBSU1MgeHNsICovCgpib2R5e2JhY2tncm91bmQtY29sb3I6I2ZmZjtib3JkZXI6MHB4O21hcmdpbjoxMHB4O2ZvbnQtZmFtaWx5OlZlcmRhbmEsQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYsIk1TIHNhbnMgc2VyaWYiO2ZvbnQtc2l6ZTo4MCU7Zm9udC13ZWlnaHQ6bm9ybWFsO2NvbG9yOiMwMDAwMDA7fQpmb3Jte21hcmdpbjowcHg7cGFkZGluZzowcHg7fQpoMnttYXJnaW46MHB4O3BhZGRpbmc6NXB4IDBweDtmb250LXNpemU6MTQwJTt9CnB7bWFyZ2luOjBweDtwYWRkaW5nOjVweCAwcHg7fQoKYTpsaW5re3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtc2l6ZToxMDAlO2NvbG9yOiMwMDAwOTk7fQphOnZpc2l0ZWR7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC1zaXplOjEwMCU7Y29sb3I6IzY2NjZDQzt9CmE6YWN0aXZle3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtc2l6ZToxMDAlO2NvbG9yOiMwMDAwOTk7fQphOmhvdmVye2ZvbnQtc2l6ZToxMDAlO2NvbG9yOiMwMDAwOTk7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTt9CgphLml0ZW06bGlua3tmb250LXdlaWdodDpib2xkO30KYS5pdGVtOnZpc2l0ZWR7Zm9udC13ZWlnaHQ6Ym9sZDt9CmEuaXRlbTphY3RpdmV7Zm9udC13ZWlnaHQ6Ym9sZDt9CmEuaXRlbTpob3Zlcntmb250LXdlaWdodDpib2xkO30KCi50b3Bib3h7d2lkdGg6MTAwJTt9Ci5iYW5ib3h7d2lkdGg6MTAwJTt9CgoubWFpbmJveHt3aWR0aDoxMDAlO3BhZGRpbmctdG9wOjEwcHg7fQouaXRlbWJveHt3aWR0aDo2MiU7ZmxvYXQ6bGVmdDtwYWRkaW5nLXRvcDoxMHB4O30KLnJoc2JveHtib3JkZXItbGVmdDoxcHggZGFzaGVkICM5OTk7d2lkdGg6MzYlO2Zsb2F0OnJpZ2h0O30KLmZvb3RlcmJveHtjbGVhcjpib3RoO3dpZHRoOjEwMCU7Ym9yZGVyLXRvcDoxcHggc29saWQgIzAwMDt9CgojaXRlbSB1bCB7bGlzdC1zdHlsZTpub25lO21hcmdpbjowcHg7cGFkZGluZzowcHg7Ym9yZGVyOm5vbmU7fQojaXRlbSBsaSB7bWFyZ2luOjA7cGFkZGluZzo1cHggMHB4O30KLnJoc2JveCB1bCB7bGlzdC1zdHlsZS10eXBlOmRpc2M7bWFyZ2luOjBweCAyMHB4O3BhZGRpbmc6MHB4O2JvcmRlcjpub25lO30KLnJoc2JveCBsaSB7bWFyZ2luOjA7cGFkZGluZzo1cHggMHB4O30KCi5wYWR0b3Bib3h7cGFkZGluZzoxMHB4O2JvcmRlcjoxcHggc29saWQgIzk5OTt9Ci5wYWRpdGVtYm94e3BhZGRpbmc6MTBweCA1cHggMTBweCAxMHB4O30KLnBhZGJhbmJveHtwYWRkaW5nOjIwcHggMTBweCAxMHB4IDEwcHg7fQoucGFkcmhzYm94e3BhZGRpbmc6MTBweCAwcHggMjBweCAxMHB4O30KCi5zdWJoZWFke2ZvbnQtd2VpZ2h0OmJvbGQ7fQouZGlzY2xhaW17Zm9udC1zaXplOjExcHg7Y29sb3I6Izk5OTt9CgoubXZie21hcmdpbi1ib3R0b206NXB4O30KLmZsdGx7ZmxvYXQ6bGVmdDt9Ci5mbHRjbGVhcntjbGVhcjpib3RoO30KCg==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/rss/style.xsl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8eHNsOnN0eWxlc2hlZXQgdmVyc2lvbj0iMS4xIiB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSI+CiAgPHhzbDpvdXRwdXQgbWV0aG9kPSJodG1sIiAvPiAgIAogICA8eHNsOnZhcmlhYmxlIG5hbWU9InRpdGxlIiBzZWxlY3Q9Ii9yc3MvY2hhbm5lbC90aXRsZSIvPiAgIAogIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Ii8iPgogICAgPGh0bWw+CiAgICAgIDxoZWFkPgogICAgICAgIDx0aXRsZT4KICAgICAgICAgIDx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIkdGl0bGUiLz4gWE1MIEZlZWQ8L3RpdGxlPgogICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii9tb2R1bGVzL3t7JG1vZHVsZS0+R2V0TW9kdWxlTmFtZSgpfX0vcnNzL3Jzcy5jc3MiIHR5cGU9InRleHQvY3NzIi8+CiAgICAgIAogICAgICA8L2hlYWQ+IAogICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJyc3MvY2hhbm5lbCIvPiAgIAogICAgPC9odG1sPgogIDwveHNsOnRlbXBsYXRlPgogIAogICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iY2hhbm5lbCI+CiAgICA8Ym9keT4gICAgICAgICAKICAgICAgPGRpdiBjbGFzcz0idG9wYm94Ij4KICAgICAgPGRpdiBjbGFzcz0icGFkdG9wYm94Ij4KICAgICAgPGgyPldoYXQgaXMgdGhpcyBwYWdlPzwvaDI+CiAgICAgIDxwPlRoaXMgaXMgYW4gUlNTIGZlZWQgZnJvbSB0aGUgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImltYWdlL3RpdGxlIiAvPiB3ZWJzaXRlLiBSU1MgZmVlZHMgYWxsb3cgeW91IHRvIHN0YXkgdXAgdG8gZGF0ZSB3aXRoIHRoZSBsYXRlc3QgbmV3cyBhbmQgZmVhdHVyZXMgeW91IHdhbnQgZnJvbSAgPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImltYWdlL3RpdGxlIiAvPi48L3A+CiAgICAgIDxwPlRvIHN1YnNjcmliZSB0byBpdCwgeW91IHdpbGwgbmVlZCBhIE5ld3MgUmVhZGVyIG9yIG90aGVyIHNpbWlsYXIgZGV2aWNlLjwvcD4KICAgICAgPHA+CjxhIGhyZWY9Imh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvUnNzIj48c3Ryb25nPkhlbHA8L3N0cm9uZz4sIEkgZG9uJ3Qga25vdyB3aGF0IGEgbmV3cyByZWFkZXIgaXMgYW5kIHN0aWxsIGRvbid0IGtub3cgd2hhdCB0aGlzIGlzIGFib3V0LjwvYT48YnIgY2xlYXI9ImFsbCIgLz4KICAgICAgPC9wPgogICAgICA8L2Rpdj4KICAgICAgPC9kaXY+ICAgIAogICAgICAKICAgICAgPGRpdiBjbGFzcz0iYmFuYm94Ij4KICAgICAgPGRpdiBjbGFzcz0icGFkYmFuYm94Ij4gICAgIAogICAgICA8ZGl2IGNsYXNzPSJtdmIiPgogICAgICA8ZGl2IGNsYXNzPSJmbHRsIj48c3BhbiBjbGFzcz0ic3ViaGVhZCI+UlNTIEZlZWQgRm9yOiA8L3NwYW4+PC9kaXY+PGEgaHJlZj0iIyIgY2xhc3M9Iml0ZW0iPjx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIkdGl0bGUiLz48L2E+PGJyIGNsZWFyPSJhbGwiIC8+CiAgICAgICA8L2Rpdj4KICAgICAgIAogICAgCiAgICAgIDwvZGl2PgogICAgICA8L2Rpdj4gICAgCiAgICAgIAogICAgICA8ZGl2IGNsYXNzPSJtYWluYm94Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJpdGVtYm94Ij4KICAgICAgICAgIDxkaXYgY2xhc3M9InBhZGl0ZW1ib3giPgogICAgICAgICAgPHhzbDphcHBseS10ZW1wbGF0ZXMgc2VsZWN0PSJpdGVtIi8+CiAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4gIAogICAgICAgIDxkaXYgY2xhc3M9InJoc2JveCI+CiAgICAgICAgICA8ZGl2IGNsYXNzPSJwYWRyaHNib3giPgogICAgICAgICAgPGgyPlN1YnNjcmliZSB0byB0aGlzIGZlZWQ8L2gyPgogICAgICAgICAgPHA+WW91IGNhbiBzdWJzY3JpYmUgdG8gdGhpcyBSU1MgZmVlZCBpbiBhIG51bWJlciBvZiB3YXlzLCBpbmNsdWRpbmcgdGhlIGZvbGxvd2luZzo8L3A+CiAgICAgICAgICA8dWw+CiAgICAgICAgICA8bGk+RHJhZyB0aGUgb3JhbmdlIFJTUyBidXR0b24gaW50byB5b3VyIE5ld3MgUmVhZGVyPC9saT4KICAgICAgICAgIDxsaT5EcmFnIHRoZSBVUkwgb2YgdGhlIFJTUyBmZWVkIGludG8geW91ciBOZXdzIFJlYWRlcjwvbGk+CiAgICAgICAgICA8bGk+Q3V0IGFuZCBwYXN0ZSB0aGUgVVJMIG9mIHRoZSBSU1MgZmVlZCBpbnRvIHlvdXIgTmV3cyBSZWFkZXI8L2xpPgogICAgICAgICAgPC91bD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAKICAgICAgICAgIDwvZGl2PiAgICAKICAgICAgICA8L2Rpdj4gIAogICAgICA8L2Rpdj4gIAogICAgICAKICAgIDxkaXYgY2xhc3M9ImZvb3RlcmJveCI+CgogICAgPC9kaXY+CiAgICAgICAgCiAgICA8L2JvZHk+CiAgPC94c2w6dGVtcGxhdGU+CiAgICAKICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJpdGVtIj4KICA8ZGl2IGlkPSJpdGVtIj4KICA8dWw+CiAgICAgIDxsaT4KICAgICAgICA8YSBocmVmPSJ7bGlua30iIGNsYXNzPSJpdGVtIj4KICAgICAgICAgIDx4c2w6dmFsdWUtb2YgZGlzYWJsZS1vdXRwdXQtZXNjYXBpbmc9InllcyIgc2VsZWN0PSJ0aXRsZSIvPgogICAgICAgIDwvYT48YnIvPiAgICAgCiAgICAgICAgPGRpdj4KICAgICAgICA8eHNsOnZhbHVlLW9mIGRpc2FibGUtb3V0cHV0LWVzY2FwaW5nPSJ5ZXMiIHNlbGVjdD0iZGVzY3JpcHRpb24iIC8+ICAgICAgICAgCiAgICAgICAgPC9kaXY+ICAKICAgICAgICA8L2xpPgogICAgPC91bD4KICA8L2Rpdj4gICAgCiAgPC94c2w6dGVtcGxhdGU+CjwveHNsOnN0eWxlc2hlZXQ+]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/smarty/templates/templates/admin.itemsTable.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiAgICAgICAgPHRoZWFkPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGg+VGl0bGU8L3RoPgogICAgICAgICAgICAgICAge2ZvcmVhY2ggZnJvbT0kY29sdW1ucyBpdGVtPWNvbHVtbiBrZXk9bmFtZSBuYW1lPWZvb30KICAgICAgICAgICAgICAgICAgICA8dGg+eyRuYW1lfTwvdGg+CiAgICAgICAgICAgICAgICB7L2ZvcmVhY2h9CiAgICAgICAgICAgICAgICA8dGggY29sc3Bhbj0iNSIgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyI+PC90aD4KICAgICAgICAgICAgPC90cj4KICAgICAgICA8L3RoZWFkPgogICAgICAgIDx0Ym9keT4KICAgICAgICB7aWYgJHJvd3N8QGNvdW50ID4gMH0KICAgICAgICAgICAge2ZvcmVhY2ggZnJvbT0kcm93cyBpdGVtPXJvd30KICAgICAgICAgICAgPHRyIGNsYXNzPSJ7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIifSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIifWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIifSc7Ij4KICAgICAgICAgICAgICAgIDx0ZD57JHJvdy50aXRsZWxpbmt9PC90ZD4KICAgICAgICAgICAgICAgIHtmb3JlYWNoIGZyb209JGNvbHVtbnMgaXRlbT1jb2x1bW59PHRkPntmb3JlYWNoIG5hbWU9Y29sbG9vcCBmcm9tPSRjb2x1bW5bJHJvdy5pZF0gaXRlbT12YWx1ZX17JHZhbHVlLT5nZXRUaXRsZSgpfXtpZiAhJHNtYXJ0eS5mb3JlYWNoLmNvbGxvb3AubGFzdH0sey9pZn0gey9mb3JlYWNofTwvdGQ+ey9mb3JlYWNofQogICAgICAgICAgICAgICAgPHRkPnskcm93LnB1Ymxpc2hsaW5rfTwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+eyRyb3cuZWRpdGxpbmt9PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD57JHJvdy5kZWxldGVsaW5rfTwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+eyRyb3cubW92ZXVwbGlua308L3RkPgogICAgICAgICAgICAgICAgPHRkPnskcm93Lm1vdmVkb3dubGlua308L3RkPgogICAgICAgICAgICA8L3RyPgogICAgICAgICAgICB7L2ZvcmVhY2h9CiAgICAgICAge2Vsc2V9CiAgICAgICAgICAgIDx0cj48dGQ+CiAgICAgICAgICAgICAgICBUaGVyZSBhcmUgbm8gcmVzdWx0cyBtYXRjaGluZyB5b3VyIGNyaXRlcmlhLgogICAgICAgICAgICA8L3RkPjwvdHI+CiAgICAgICAgey9pZn0KICAgICAgICA8L3Rib2R5PgogICAgPC90YWJsZT4KICAgIHtpZiAkcGFnZXN8QGNvdW50ID4gMX08cD5QYWdlOiB7Zm9yZWFjaCBmcm9tPSRwYWdlcyBpdGVtPWxpbmsga2V5PWl9e2lmICgkaSArIDEpID09ICRjdXJyZW50UGFnZX08c3Ryb25nPnskbGlua308L3N0cm9uZz57ZWxzZX17JGxpbmt9ey9pZn0gey9mb3JlYWNofTwvcD57L2lmfQoKPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGFkZF9pdGVtX2ljb259IHskYWRkX2l0ZW1fbGlua308L3A+CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/templates/admin.templates.tpl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICR0ZW1wbGF0ZXN8Y291bnQgPiAwfQo8dGFibGUgY2VsbHNwYWNpbmc9IjAiIGNsYXNzPSJwYWdldGFibGUiPgogIDx0aGVhZD4KICAgIDx0cj4KICAgICAgPHRoPjwvdGg+CiAgICAgIDx0aD48L3RoPgogICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgogICAgICA8dGggY2xhc3M9InBhZ2VpY29uIj4mbmJzcDs8L3RoPgogICAgPC90cj4KICA8L3RoZWFkPgogIDx0Ym9keT4KICB7Zm9yZWFjaCBmcm9tPSR0ZW1wbGF0ZXMgaXRlbT1yb3d9CiAgICA8dHIgY2xhc3M9IntjeWNsZSB2YWx1ZXM9InJvdzEscm93MiJ9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3tjeWNsZSB2YWx1ZXM9InJvdzEscm93MiJ9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3tjeWNsZSB2YWx1ZXM9InJvdzEscm93MiJ9JzsiPgogICAgICA8dGQ+eyRyb3cudGl0bGVsaW5rfTwvdGQ+CiAgICAgIDx0ZD57JHJvdy5kZWZhdWx0fTwvdGQ+CiAgICAgIDx0ZD57JHJvdy5lZGl0bGlua308L3RkPgogICAgICA8dGQ+eyRyb3cuZGVsZXRlbGlua308L3RkPgogICAgPC90cj4Key9mb3JlYWNofQogIDwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9Cgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+Cgk8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkX3RlbXBsYXRlc19pY29ufSB7JGFkZF90ZW1wbGF0ZXNfbGlua308L3A+CjwvZGl2Pgo=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/templates/admin.template_edit.tpl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRmb3JtKX0KCTxkaXYgc3R5bGU9ImNvbG9yOiByZWQ7Ij57JGZvcm0tPnNob3dFcnJvcnMoKX08L2Rpdj4KCXskZm9ybS0+Z2V0SGVhZGVycygpfQoJPHAgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyI+CgkJeyRmb3JtLT5nZXRCdXR0b25zKCl9Cgk8L3A+CgoJCTxkaXYgc3R5bGU9ImZsb2F0OiByaWdodDsiPgoJCTxwPjxzdHJvbmc+QXZhaWxhYmxlIGZpZWxkczwvc3Ryb25nPjwvcD4KCQk8dWwgY2xhc3M9ImV4dHJhX2ZpZWxkcyIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwOyBwYWRkaW5nLWxlZnQ6IDA7Ij4KCQkJe3tmb3JlYWNoIGZyb209JGV4dHJhX2ZpZWxkcyBpdGVtPWZpZWxkfX0KCQkJPGxpPjxhIGhyZWY9IiMiPiRpdGVtLT57eyRmaWVsZC5uYW1lfX08L2E+PC9saT4KCQkJe3svZm9yZWFjaH19CgkJPC91bD4KCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJe2xpdGVyYWx9CgkJKGZ1bmN0aW9uKCQpIHsKCQkJJC5mbi5pbnNlcnRBdENhcmV0ID0gZnVuY3Rpb24gKG15VmFsdWUpIHsKCQkJICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7CgkJCSAgICAgICAgICAgICAgICAvL0lFIHN1cHBvcnQKCQkJICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5zZWxlY3Rpb24pIHsKCQkJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1cygpOwoJCQkgICAgICAgICAgICAgICAgICAgICAgICBzZWwgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTsKCQkJICAgICAgICAgICAgICAgICAgICAgICAgc2VsLnRleHQgPSBteVZhbHVlOwoJCQkgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzKCk7CgkJCSAgICAgICAgICAgICAgICB9CgkJCSAgICAgICAgICAgICAgICAvL01PWklMTEEvTkVUU0NBUEUgc3VwcG9ydAoJCQkgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWxlY3Rpb25TdGFydCB8fCB0aGlzLnNlbGVjdGlvblN0YXJ0ID09ICcwJykgewoJCQkgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RhcnRQb3MgPSB0aGlzLnNlbGVjdGlvblN0YXJ0OwoJCQkgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZW5kUG9zID0gdGhpcy5zZWxlY3Rpb25FbmQ7CgkJCSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGxUb3AgPSB0aGlzLnNjcm9sbFRvcDsKCQkJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWUuc3Vic3RyaW5nKDAsIHN0YXJ0UG9zKQoJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbXlWYWx1ZQoJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHRoaXMudmFsdWUuc3Vic3RyaW5nKGVuZFBvcywKCQkJdGhpcy52YWx1ZS5sZW5ndGgpOwoJCQkgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzKCk7CgkJCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnQgPSBzdGFydFBvcyArIG15VmFsdWUubGVuZ3RoOwoJCQkgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbkVuZCA9IHN0YXJ0UG9zICsgbXlWYWx1ZS5sZW5ndGg7CgkJCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wOwoJCQkgICAgICAgICAgICAgICAgfSBlbHNlIHsKCQkJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSArPSBteVZhbHVlOwoJCQkgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzKCk7CgkJCSAgICAgICAgICAgICAgICB9CgkJCSAgICAgICAgfSk7CgoJCQl9OwoJCQkkKCcuZXh0cmFfZmllbGRzIGEnKS5jbGljayhmdW5jdGlvbigpIHsKCQkJCXZhciBmaWVsZCA9ICd7JyskKHRoaXMpLnRleHQoKSsnfSc7CgkJCQkkKCdbbmFtZT17L2xpdGVyYWx9eyRpZH17bGl0ZXJhbH1jb2RlXScpLmluc2VydEF0Q2FyZXQoZmllbGQpOwoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9KTsKCQl9KShqUXVlcnkpOwoJCXsvbGl0ZXJhbH0KCQk8L3NjcmlwdD4KCQk8L2Rpdj4KCgl7JGZvcm0tPnNob3dXaWRnZXRzKCc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxkaXYgY2xhc3M9InBhZ2V0ZXh0Ij4lTEFCRUwlOjwvZGl2PgoJCTxkaXYgY2xhc3M9InBhZ2VpbnB1dCI+JUlOUFVUJSA8ZW0+JVRJUFMlPC9lbT48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiIHN0eWxlPSJjb2xvcjogcmVkOyI+JUVSUk9SUyU8L2Rpdj4KCTwvZGl2PicpfQoKCTxwIHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsgbWFyZ2luLXRvcDogMTVweDsiPgoJCXskZm9ybS0+Z2V0QnV0dG9ucygpfQoJPC9wPgoJeyRmb3JtLT5nZXRGb290ZXJzKCl9CnsvaWZ9]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/templates/defaultadmin.items.tpl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRmaWx0ZXJzX2Zvcm0pfQoJeyRmaWx0ZXJzX2Zvcm0tPmdldEhlYWRlcnMoKX0KCUZpbHRlciBieToKCXskZmlsdGVyc19mb3JtLT5zaG93V2lkZ2V0cygnJUxBQkVMJSAlSU5QVVQlICcpfQoJCXskZmlsdGVyc19mb3JtLT5nZXRCdXR0b25zKCl9Cgl7JGZpbHRlcnNfZm9ybS0+Z2V0Rm9vdGVycygpfQp7L2lmfQo8ZGl2IHN0eWxlPSJmbG9hdDpyaWdodDsiPig8c3Ryb25nPnskdG90YWxfaXRlbXN9IGl0ZW17aWYgJHRvdGFsX2l0ZW1zIGd0IDF9c3svaWZ9PC9zdHJvbmc+KTwvZGl2Pgo8ZGl2IHN0eWxlPSJjbGVhcjogYm90aDsiPjwvZGl2Pgp7aWYgJHJvd3N8QGNvdW50fQoJe2lmIGlzc2V0KCRhZGRfaXRlbV9pY29uKX0KCTxkaXYgY2xhc3M9InBhZ2VvcHRpb25zIj4KCSAgICAgICAgICAgICAgICA8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkX2l0ZW1faWNvbn0geyRhZGRfaXRlbV9saW5rfTwvcD4KCTwvZGl2PgoJey9pZn0Key9pZn0KICAgIDx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2xhc3M9InBhZ2V0YWJsZSI+CiAgICAgICAgPHRoZWFkPgogICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICA8dGg+VGl0bGU8L3RoPgogICAgICAgICAgICAgICAge2ZvcmVhY2ggZnJvbT0kY29sdW1ucyBpdGVtPWNvbHVtbiBrZXk9bmFtZSBuYW1lPWZvb30KICAgICAgICAgICAgICAgICAgICA8dGg+eyRuYW1lfTwvdGg+CiAgICAgICAgICAgICAgICB7L2ZvcmVhY2h9CiAgICAgICAgICAgICAgICA8dGggY29sc3Bhbj0iOCIgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyI+PC90aD4KICAgICAgICAgICAgPC90cj4KICAgICAgICA8L3RoZWFkPgogICAgICAgIDx0Ym9keT4KICAgICAgICB7aWYgJHJvd3N8QGNvdW50ID4gMH0KICAgICAgICAgICAge2ZvcmVhY2ggZnJvbT0kcm93cyBpdGVtPXJvd30KICAgICAgICAgICAgPHRyIGNsYXNzPSJ7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIifSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIifWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIifSc7Ij4KICAgICAgICAgICAgICAgIDx0ZD57JHJvdy50aXRsZWxpbmt9PC90ZD4KICAgICAgICAgICAgICAgIHtmb3JlYWNoIGZyb209JGNvbHVtbnMgaXRlbT1jb2x1bW59PHRkPntmb3JlYWNoIG5hbWU9Y29sbG9vcCBmcm9tPSRjb2x1bW5bJHJvdy5pZF0gaXRlbT12YWx1ZX17JHZhbHVlfXtpZiAhJHNtYXJ0eS5mb3JlYWNoLmNvbGxvb3AubGFzdH0sey9pZn0gey9mb3JlYWNofTwvdGQ+ey9mb3JlYWNofQogICAgICAgICAgICAgICAgPHRkPnskcm93LnB1Ymxpc2hsaW5rfTwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+eyRyb3cucHJldmlld2xpbmt9PC90ZD4KICAgICAgICAgICAgICAgIDx0ZD57JHJvdy5jbW9ufTwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+eyRyb3cudHdpdHRlcn08L3RkPgogICAgICAgICAgICAgICAgPHRkPnskcm93LmVkaXRsaW5rfTwvdGQ+CiAgICAgICAgICAgICAgICA8dGQ+eyRyb3cuZGVsZXRlbGlua308L3RkPgogICAgICAgICAgICAgICAgPHRkPntpZiBpc3NldCgkcm93Lm1vdmV1cGxpbmspfXskcm93Lm1vdmV1cGxpbmt9ey9pZn08L3RkPgogICAgICAgICAgICAgICAgPHRkPntpZiBpc3NldCgkcm93Lm1vdmVkb3dubGluayl9eyRyb3cubW92ZWRvd25saW5rfXsvaWZ9PC90ZD4KICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgey9mb3JlYWNofQogICAgICAgIHtlbHNlfQogICAgICAgICAgICA8dHI+PHRkPgogICAgICAgICAgICAgICAgVGhlcmUgYXJlIG5vIHJlc3VsdHMgbWF0Y2hpbmcgeW91ciBjcml0ZXJpYS4KICAgICAgICAgICAgPC90ZD48L3RyPgogICAgICAgIHsvaWZ9CiAgICAgICAgPC90Ym9keT4KICAgIDwvdGFibGU+Cgl7aWYgaXNzZXQoJHBhZ2VzKX0KICAgIHtpZiAkcGFnZXN8QGNvdW50ID4gMX08cD5QYWdlOiB7Zm9yZWFjaCBmcm9tPSRwYWdlcyBpdGVtPWxpbmsga2V5PWl9e2lmICgkaSArIDEpID09ICRjdXJyZW50UGFnZX08c3Ryb25nPnskbGlua308L3N0cm9uZz57ZWxzZX17JGxpbmt9ey9pZn0gey9mb3JlYWNofTwvcD57L2lmfQoJey9pZn0Ke2lmIGlzc2V0KCRhZGRfaXRlbV9pY29uKX0KPGRpdiBjbGFzcz0icGFnZW9wdGlvbnMiPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9InBhZ2VvcHRpb25zIj57JGFkZF9pdGVtX2ljb259IHskYWRkX2l0ZW1fbGlua308L3A+CjwvZGl2Pgp7L2lmfQ==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/templates/defaultadmin.options.tpl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBzdHlsZT0iZmxvYXQ6cmlnaHQ7Ij57JGV4cG9ydH08L2Rpdj4KCgp7aWYgaXNzZXQoJGZvcm0pfQoJPGRpdiBzdHlsZT0iY29sb3I6IHJlZDsiPnskZm9ybS0+c2hvd0Vycm9ycygpfTwvZGl2PgoJeyRmb3JtLT5nZXRIZWFkZXJzKCl9Cgl7JGZvcm0tPnNob3dXaWRnZXRzKCc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+JUxBQkVMJTo8L3A+CgkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+JUlOUFVUJTwvcD4KCTwvZGl2PicpfQoJPHAgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyI+CgkJeyRmb3JtLT5nZXRCdXR0b25zKCl9Cgk8L3A+Cgl7JGZvcm0tPmdldEZvb3RlcnMoKX0Key9pZn0KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+Cgk8cCBjbGFzcz0icGFnZXRleHQiPjwvcD4KCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskdXBkYXRlX29iamVjdHN9PC9wPgo8L2Rpdj4KCg==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/templates/defaultadmin.templates.tpl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRyb3dzfGNvdW50ID4gMH0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KICA8dGhlYWQ+CiAgICA8dHI+CiAgICAgIDx0aD48L3RoPgogICAgICA8dGg+PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiI+Jm5ic3A7PC90aD4KICAgIDwvdHI+CiAgPC90aGVhZD4KICA8dGJvZHk+CiAge2ZvcmVhY2ggZnJvbT0kcm93cyBpdGVtPXJvd30KICAgIDx0ciBjbGFzcz0ie2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIn0iIG9ubW91c2VvdmVyPSJ0aGlzLmNsYXNzTmFtZT0ne2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIn1ob3Zlcic7IiBvbm1vdXNlb3V0PSJ0aGlzLmNsYXNzTmFtZT0ne2N5Y2xlIHZhbHVlcz0icm93MSxyb3cyIn0nOyI+CiAgICAgIDx0ZD57JHJvdy50aXRsZWxpbmt9PC90ZD4KICAgICAgPHRkPjwvdGQ+CiAgICAgIDx0ZD57JHJvdy5lZGl0bGlua308L3RkPgogICAgICA8dGQ+eyRyb3cuZGVsZXRlbGlua308L3RkPgogICAgPC90cj4Key9mb3JlYWNofQogIDwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9Cgo8ZGl2IGNsYXNzPSJwYWdlb3B0aW9ucyI+Cgk8cCBjbGFzcz0icGFnZW9wdGlvbnMiPnskYWRkX2l0ZW1faWNvbn0geyRhZGRfaXRlbV9saW5rfTwvcD4KPC9kaXY+Cg==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/templates/edit.tpl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRmb3JtKX0KCTxkaXYgc3R5bGU9ImNvbG9yOiByZWQ7Ij57JGZvcm0tPnNob3dFcnJvcnMoKX08L2Rpdj4KCXskZm9ybS0+Z2V0SGVhZGVycygpfQoJPHAgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyI+CgkJeyRmb3JtLT5nZXRCdXR0b25zKCl9Cgk8L3A+Cgl7JGZvcm0tPnNob3dXaWRnZXRzKCc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxkaXYgY2xhc3M9InBhZ2V0ZXh0Ij4lTEFCRUwlOjwvZGl2PgkKCQk8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiPiVJTlBVVCUgPGVtPiVUSVBTJTwvZW0+PC9kaXY+CgkJPGRpdiBjbGFzcz0icGFnZWlucHV0IiBzdHlsZT0iY29sb3I6IHJlZDsiPiVFUlJPUlMlPC9kaXY+Cgk8L2Rpdj4nKX0KCQoJe2ZvcmVhY2ggZnJvbT0kc3VibW9kdWxlcyBpdGVtPW1vZHVsZX0KCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPGRpdiBjbGFzcz0icGFnZXRleHQiPntpZiAkbW9kdWxlLmFkZF9pdGVtX2xpbmt9Jm5ic3A7e2Vsc2V9eyRtb2R1bGUubmFtZX17L2lmfTwvZGl2PgoJCTxkaXYgY2xhc3M9InBhZ2VpbnB1dCI+CgkJCXskbW9kdWxlLnRlbXBsYXRlfQoJCQk8cD57aWYgJG1vZHVsZS5hZGRfaXRlbV9saW5rfXskbW9kdWxlLmFkZF9pdGVtX2ljb259IHskbW9kdWxlLmFkZF9pdGVtX2xpbmt9e2Vsc2V9PGVtPkZpcnN0IGNsaWNrIG9uICJTYXZlICZhbXA7IGNvbnRpbnVlIGVkaXRpbmciIHRvIGJlIGFibGUgdG8gYWRkIHskbW9kdWxlLm5hbWV9IGl0ZW1zLjwvZW0+ey9pZn08L3A+CgkJPC9kaXY+Cgk8L2Rpdj4KCXsvZm9yZWFjaH0KCgk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxkaXYgY2xhc3M9InBhZ2V0ZXh0Ij48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiPnskeHRlbmRlZF9mb3JtfTwvZGl2PgoJPC9kaXY+CgoJPHAgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyBtYXJnaW4tdG9wOiAxNXB4OyI+CgkJeyRmb3JtLT5nZXRCdXR0b25zKCl9Cgk8L3A+Cgl7JGZvcm0tPmdldEZvb3RlcnMoKX0Key9pZn0=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/templates/edittemplate.tpl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmb3JtX3N0YXJ0fQoKPGRpdiBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyB3aWR0aDogMjAwcHg7Ij4KPHA+PHN0cm9uZz5BdmFpbGFibGUgZmllbGRzPC9zdHJvbmc+PC9wPgo8dWwgY2xhc3M9ImV4dHJhX2ZpZWxkcyIgc3R5bGU9Im1hcmdpbi1sZWZ0OiAwOyBwYWRkaW5nLWxlZnQ6IDA7Ij4KCXt7Zm9yZWFjaCBmcm9tPSRleHRyYV9maWVsZHMgaXRlbT1maWVsZH19Cgk8bGk+PGEgaHJlZj0iIyI+JGl0ZW0tPnt7JGZpZWxkLm5hbWV9fTwvYT48L2xpPgoJe3svZm9yZWFjaH19CjwvdWw+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4Ke2xpdGVyYWx9CihmdW5jdGlvbigkKSB7CgkkLmZuLmluc2VydEF0Q2FyZXQgPSBmdW5jdGlvbiAobXlWYWx1ZSkgewoJICAgICAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7CgkgICAgICAgICAgICAgICAgLy9JRSBzdXBwb3J0CgkgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LnNlbGVjdGlvbikgewoJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb2N1cygpOwoJICAgICAgICAgICAgICAgICAgICAgICAgc2VsID0gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7CgkgICAgICAgICAgICAgICAgICAgICAgICBzZWwudGV4dCA9IG15VmFsdWU7CgkgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvY3VzKCk7CgkgICAgICAgICAgICAgICAgfQoJICAgICAgICAgICAgICAgIC8vTU9aSUxMQS9ORVRTQ0FQRSBzdXBwb3J0CgkgICAgICAgICAgICAgICAgZWxzZSBpZiAodGhpcy5zZWxlY3Rpb25TdGFydCB8fCB0aGlzLnNlbGVjdGlvblN0YXJ0ID09ICcwJykgewoJICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXJ0UG9zID0gdGhpcy5zZWxlY3Rpb25TdGFydDsKCSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlbmRQb3MgPSB0aGlzLnNlbGVjdGlvbkVuZDsKCSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGxUb3AgPSB0aGlzLnNjcm9sbFRvcDsKCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSB0aGlzLnZhbHVlLnN1YnN0cmluZygwLCBzdGFydFBvcykKCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBteVZhbHVlCgkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHRoaXMudmFsdWUuc3Vic3RyaW5nKGVuZFBvcywKCXRoaXMudmFsdWUubGVuZ3RoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXMoKTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uU3RhcnQgPSBzdGFydFBvcyArIG15VmFsdWUubGVuZ3RoOwoJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25FbmQgPSBzdGFydFBvcyArIG15VmFsdWUubGVuZ3RoOwoJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxUb3AgPSBzY3JvbGxUb3A7CgkgICAgICAgICAgICAgICAgfSBlbHNlIHsKCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgKz0gbXlWYWx1ZTsKCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9jdXMoKTsKCSAgICAgICAgICAgICAgICB9CgkgICAgICAgIH0pOwoKCX07CgkkKCcuZXh0cmFfZmllbGRzIGEnKS5jbGljayhmdW5jdGlvbigpIHsKCQl2YXIgZmllbGQgPSAneycrJCh0aGlzKS50ZXh0KCkrJ30nOwoJCSQoJ1tuYW1lPXsvbGl0ZXJhbH17JGlkfXtsaXRlcmFsfXRlbXBsYXRlZGV0YWlsc10nKS5pbnNlcnRBdENhcmV0KGZpZWxkKTsKCQlyZXR1cm4gZmFsc2U7Cgl9KTsKfSkoalF1ZXJ5KTsKey9saXRlcmFsfQo8L3NjcmlwdD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyR0aXRsZV90ZW1wbGF0ZX06PC9wPgoJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfdGVtcGxhdGV9PC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JGNvZGVfdGVtcGxhdGV9OjwvcD4KCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JHRleHRhcmVhX3RlbXBsYXRlfTwvcD4KPC9kaXY+CgoKCXskZm9ybV9kZXRhaWxzX3N1Ym1pdH0KCXskZm9ybV9kZXRhaWxzX2FwcGx5fQoJeyRmb3JtX2RldGFpbHNfcmVzdG9yZWxpc3R9Cgl7JGZvcm1fZGV0YWlsc19yZXN0b3JlZGV0YWlsc30KCjwvZm9ybT4K]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/templates/error.tpl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0aXRsZV9lcnJvcn0KeyRtZXNzYWdlfQo=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/templates/frontend.calendar.tpl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHRhYmxlIGNsYXNzPSJjYWxlbmRhciI+Cgk8dGhlYWQ+CgkJPHRyPgoJCQk8dGggY2xhc3M9InByZXZpb3VzIj48YSBocmVmPSJ7JHByZXZpb3VzX21vbnRofSI+Jmx0OzwvYT48L3RoPgoJCQk8dGggY2xhc3M9Im1vbnRoIiBjb2xzcGFuPSI1Ij57JGN1cnJlbnRfbW9udGh8ZGF0ZV9mb3JtYXQ6IiViICVZIn08L3RoPgoJCQk8dGggY2xhc3M9Im5leHQiPjxhIGhyZWY9InskbmV4dF9tb250aH0iPiZndDs8L2E+PC90aD4KCQk8L3RyPgoJCTx0cj4KCQkJPHRkPk1vbjwvdGQ+CgkJCTx0ZD5UdWU8L3RkPgoJCQk8dGQ+V2VkPC90ZD4KCQkJPHRkPlRodTwvdGQ+CgkJCTx0ZD5Gcmk8L3RkPgoJCQk8dGQ+U2F0PC90ZD4KCQkJPHRkPlN1bjwvdGQ+CgkJPC90cj4KCTwvdGhlYWQ+Cgk8dGJvZHk+CgkJe2ZvcmVhY2ggZnJvbT0kbWNmY2FsZW5kYXIgaXRlbT13ZWVrfQoJCQk8dHI+CgkJCQl7Zm9yZWFjaCBmcm9tPSR3ZWVrIGl0ZW09ZGF5fQoJCQkJPHRkIGNsYXNzPSJ7aWYgJGRheS5jdXJyZW50fWN1cnJlbnQgey9pZn17aWYgJGRheS50b2RheX10b2RheSB7L2lmfXtpZiAkZGF5LmV2ZW50c3xAY291bnR9IGhhcy1ldmVudHN7L2lmfSI+CgkJCQkJPHA+eyRkYXkuZGF0ZXxkYXRlX2Zvcm1hdDoiJWUifTwvcD4KCQkJCQl7aWYgJGRheS5ldmVudHN8QGNvdW50fQoJCQkJCTx1bD4KCQkJCQkJe2ZvcmVhY2ggZnJvbT0kZGF5LmV2ZW50cyBpdGVtPWl0ZW19CgkJCQkJCTxsaT48YSBocmVmPSJ7JGl0ZW0tPmRldGFpbF9saW5rfSI+eyRpdGVtLT50aXRsZX08L2E+PC9saT4KCQkJCQkJey9mb3JlYWNofQoJCQkJCTwvdWw+CgkJCQkJey9pZn0KCQkJCQl7KiBBbHRlcm5hdGl2ZTogTGluayB0byBhbGwgZXZlbnRzIG9mIHRoZSBjdXJyZW50IGRhdGUgfQoJCQkJCQl7aWYgJGRheS5ldmVudHN8QGNvdW50fQoJCQkJCQkJPGEgaHJlZj0ie3tsaXRlcmFsfX17e3svbGl0ZXJhbH19e3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fSBhY3Rpb249InVybF9mb3IiIG1hY3Rpb249ImRlZmF1bHQiIGNhbGVuZGFyPTEgc3RhcnRfZGF0ZT0kZGF5LmRhdGV8ZGF0ZV9mb3JtYXQ6IiVZLSVtLSVkIiBlbmRfZGF0ZT0kZGF5LmRhdGV8ZGF0ZV9mb3JtYXQ6IiVZLSVtLSVkIn0iPnskZGF5LmRhdGV8ZGF0ZV9mb3JtYXQ6IiVlIn08L2E+CgkJCQkJCXtlbHNlfQoJCQkJCQkJeyRkYXkuZGF0ZXxkYXRlX2Zvcm1hdDoiJWUifQoJCQkJCQl7L2lmfQoJCQkJCXsqKn0KCQkJCTwvdGQ+CgkJCQl7L2ZvcmVhY2h9CgkJCTwvdHI+CgkJey9mb3JlYWNofQoJPC90Ym9keT4KPC90YWJsZT4K]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/templates/frontend.default.tpl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPg0KCXtmb3JlYWNoIGZyb209JHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0gaXRlbT1pdGVtfQ0KCTxsaT48YSBocmVmPSJ7e2xpdGVyYWx9fXt7ey9saXRlcmFsfX17eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19IGFjdGlvbj0idXJsX2ZvciIgbWFjdGlvbj0iZGV0YWlsIiBpdGVtX2lkPSRpdGVtLT5nZXRJZCgpIGRldGFpbHBhZ2U9JGRldGFpbHBhZ2UgdGl0bGU9JGl0ZW0tPnRpdGxlfSI+eyRpdGVtLT50aXRsZX08L2E+PC9saT4NCgl7L2ZvcmVhY2h9DQo8L3VsPg==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/templates/frontend.detail.tpl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBjbGFzcz0ibWNmX3t7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfGxvd2VyfX0iPg0KCTxoMj57JHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0tPnRpdGxlfTwvaDI+DQp7e2ZvcmVhY2ggZnJvbT0kZXh0cmFfZmllbGRzIGl0ZW09ZmllbGR9fQ0Ke3tpZiAkZmllbGQuZm9ybV90eXBlIG5lICdub25lJ319DQoNCgl7aWYgJHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0tPnt7JGZpZWxkLm5hbWV9fSBuZSAnJ30NCgk8cD48c3Ryb25nPnt7JGZpZWxkLmxhYmVsfX06PC9zdHJvbmc+IA0Ke3tpZiAkZmllbGQudHlwZSA9PSAnaW1hZ2UnfX0NCgkJPGltZyBzcmM9Inske3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fS0+Z2V0e3skZmllbGQuY2FtZWxjYXNlfX1VcmwoJGlkKX0iIC8+DQp7e2Vsc2VpZiAkZmllbGQudHlwZSA9PSAnZG9jdW1lbnQnfX0NCgkJPGEgaHJlZj0ieyR7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19LT5nZXR7eyRmaWVsZC5jYW1lbGNhc2V9fVVybCgkaWQpfSIgcmVsPSJleHRlcm5hbCI+RG93bmxvYWQ8L2E+DQp7e2Vsc2VpZiAkZmllbGQudHlwZSA9PSAncGFnZSd9fQ0KCXtjbXNfc2VsZmxpbmsgcGFnZT0ke3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fS0+e3skZmllbGQubmFtZX19fQ0Ke3tlbHNlaWYgJGZpZWxkLnR5cGUgPT0gJ3NlbGVjdCd9fQ0KCXske3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fS0+Z2V0e3skZmllbGQuY2FtZWxjYXNlfX1WYWx1ZSgpfQ0Ke3tlbHNlfX0NCgl7JHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0tPnt7JGZpZWxkLm5hbWV9fX0NCnt7L2lmfX0NCgk8L3A+DQoJey9pZn0NCnt7L2lmfX0NCnt7L2ZvcmVhY2h9fQ0KPC9kaXY+DQoNCnsqIENhbGwgY2hpbGQgbW9kdWxlcyAqfQ0KDQp7e2lmICRjaGlsZF9tb2R1bGVzfEBjb3VudCA+IDB9fQ0KPGRpdiBjbGFzcz0ibWNmX2NoaWxkcyI+DQp7e2ZvcmVhY2ggZnJvbT0kY2hpbGRfbW9kdWxlcyBpdGVtPWNoaWxkX21vZHVsZX19DQoNCjxkaXYgY2xhc3M9Im1jZl9jaGlsZF97eyRjaGlsZF9tb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19Ij4NCnt7bGl0ZXJhbH19e3t7L2xpdGVyYWx9fXt7JGNoaWxkX21vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0gcGFyZW50X2l0ZW09JHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0tPmdldElkKCl9DQo8L2Rpdj4NCnt7L2ZvcmVhY2h9fQ0KPC9kaXY+DQp7ey9pZn19DQoNCnsqIENhbGwgTW9kdWxlWHRlbmRlciBpdGVtcyAqfQ0KDQp7aWYgaXNzZXQoJHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0tPnh0ZW5kZWRfZmVsaXN0KX0NCjxkaXYgY2xhc3M9Im1jZl9tb2R1bGV4dGVuZGVyIj4NCntpZiAke3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fS0+eHRlbmRlZF9mZWxpc3QtPmRvY3VtZW50c3xAY291bnQgZ3QgMH0NCjx1bCBjbGFzcz0ibXhfZG9jdW1lbnRzIj4NCgl7Zm9yZWFjaCBmcm9tPSR7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19LT54dGVuZGVkX2ZlbGlzdC0+ZG9jdW1lbnRzIGl0ZW09ZG9jdW1lbnR9DQoJPGxpPg0KCQk8aW1nIHNyYz0ieyRkb2N1bWVudC0+Z2V0SWNvbigpfSIgYWxpZ249ImFic21pZGRsZSIgLz4NCgkJPGEgaHJlZj0ieyRkb2N1bWVudC0+Z2V0RG9jdW1lbnRVcmwoKX0iIHJlbD0iZXh0ZXJuYWwiPg0KCXtpZiAkZG9jdW1lbnQtPmdldFRpdGxlKCkgbmUgJyd9eyRkb2N1bWVudC0+Z2V0VGl0bGUoKX17ZWxzZX17JGRvY3VtZW50LT5nZXRGaWxlbmFtZSgpfXsvaWZ9DQoJPC9hPiAoeyRkb2N1bWVudC0+Z2V0U2l6ZSh0cnVlKX0pPC9saT4NCgl7L2ZvcmVhY2h9DQo8L3VsPg0Key9pZn0NCg0Ke2lmICR7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19LT54dGVuZGVkX2ZlbGlzdC0+aW1hZ2VzfEBjb3VudCBndCAwfQ0KPHVsIGNsYXNzPSJteF9pbWFnZXMiPg0KCXtmb3JlYWNoIGZyb209JHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0tPnh0ZW5kZWRfZmVsaXN0LT5pbWFnZXMgaXRlbT1pbWFnZX0NCgk8bGk+PGEgaHJlZj0ieyRpbWFnZS0+dXJsfSIgcmVsPSJleHRlcm5hbCI+DQoJPGltZyBzcmM9InskaW1hZ2UtPnJlc2l6ZWRfaW1hZ2VzLnRodW1ibmFpbH0iIC8+DQoJPC9hPjwvbGk+DQoJey9mb3JlYWNofQ0KPC91bD4NCnsvaWZ9DQoNCntpZiAke3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fS0+eHRlbmRlZF9mZWxpc3QtPmxpbmtzfEBjb3VudCBndCAwfQ0KPHVsIGNsYXNzPSJteF9saW5rcyI+DQoJe2ZvcmVhY2ggZnJvbT0ke3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fS0+eHRlbmRlZF9mZWxpc3QtPmxpbmtzIGl0ZW09bGlua30NCgk8bGk+PGEgaHJlZj0ieyRsaW5rLT51cmx9IntpZiAkbGluay0+aXNfbmV3X3dpbmRvdyA9PSAxfSByZWw9ImV4dGVybmFsInsvaWZ9Pg0KCXtpZiAkbGluay0+dGl0bGUgbmUgJyd9eyRsaW5rLT50aXRsZX17ZWxzZX17JGxpbmstPnVybH17L2lmfQ0KCTwvYT48L2xpPg0KCXsvZm9yZWFjaH0NCjwvdWw+DQp7L2lmfQ0KDQp7aWYgJHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0tPnh0ZW5kZWRfZmVsaXN0LT5jYXRlZ29yaWVzfEBjb3VudCBndCAwfQ0KPHVsIGNsYXNzPSJteF9jYXRlZ29yaWVzIj4NCgl7Zm9yZWFjaCBmcm9tPSR7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19LT54dGVuZGVkX2ZlbGlzdC0+Y2F0ZWdvcmllcyBpdGVtPW9wdGlvbnMga2V5PWNhdGVnb3J5fQ0KCTxsaT48c3Ryb25nPnskY2F0ZWdvcnl9PC9zdHJvbmc+DQoJCTx1bD4NCgkJCXtmb3JlYWNoIGZyb209JG9wdGlvbnMgaXRlbT1vcHRpb259DQoJCQk8bGk+eyRvcHRpb24tPmdldFRpdGxlKCl9PC9saT4NCgkJCXsvZm9yZWFjaH0NCgkJPC91bD4NCgk8L2xpPg0KCXsvZm9yZWFjaH0NCjwvdWw+DQp7L2lmfQ0KDQp7KiBGRUFUVVJFIERJU0FCTEVEIEJZIERFRkFVTFQgKFJFTU9WRSBTTUFSVFkgQ09NTUVOVFMgVE8gTUFLRSBJVCBXT1JLKX0NCntpZiAke3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fS0+eHRlbmRlZF9mZWxpc3QtPnBhZ2VzfEBjb3VudCBndCAwfQ0KPHVsIGNsYXNzPSJteF9wYWdlcyI+DQoJe2ZvcmVhY2ggZnJvbT0ke3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fS0+eHRlbmRlZF9mZWxpc3QtPnBhZ2VzIGl0ZW09cGFnZX0NCgk8bGk+e2Ntc19zZWxmbGluayBwYWdlPSRwYWdlLT5hbGlhc308L2xpPg0KCXsvZm9yZWFjaH0NCjwvdWw+DQp7L2lmfQ0KeyoqfQ0KDQp7KiBGRUFUVVJFIERJU0FCTEVEIEJZIERFRkFVTFQgKFJFTU9WRSBTTUFSVFkgQ09NTUVOVFMgVE8gTUFLRSBJVCBXT1JLKX0NCntpZiAke3skbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCl9fS0+eHRlbmRlZF9mZWxpc3QtPm1vZHVsZXN8QGNvdW50IGd0IDB9DQo8dWwgY2xhc3M9Im14X21vZHVsZXMiPg0KCXtmb3JlYWNoIGZyb209JHt7JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpfX0tPnh0ZW5kZWRfZmVsaXN0LT5tb2R1bGVzIGl0ZW09bW9kdWxlfQ0KCTxsaT48YSBocmVmPSJ7Y21zX21vZHVsZSBtb2R1bGU9JG1vZHVsZS0+Z2V0TW9kdWxlTmFtZSgpIGl0ZW1faWQ9JG1vZHVsZS0+Z2V0SWQoKSBhY3Rpb249ImdldHVybCIgdXJsYWN0aW9uPSJkZXRhaWwifSI+eyRtb2R1bGUtPmdldFRpdGxlKCl9PC9hPjwvbGk+DQoJey9mb3JlYWNofQ0KPC91bD4NCnsvaWZ9DQp7Kip9DQoNCnsqIEZFQVRVUkUgRElTQUJMRUQgQlkgREVGQVVMVCAoUkVNT1ZFIFNNQVJUWSBDT01NRU5UUyBUTyBNQUtFIElUIFdPUkspfQ0Ke2lmICR7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19LT54dGVuZGVkX2ZlbGlzdC0+dGFyZ2V0X21vZHVsZXN8QGNvdW50IGd0IDB9DQo8dWwgY2xhc3M9Im14X3RhcmdldF9tb2R1bGVzIj4NCgl7Zm9yZWFjaCBmcm9tPSR7eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19LT54dGVuZGVkX2ZlbGlzdC0+dGFyZ2V0X21vZHVsZXMgaXRlbT1tb2R1bGV9DQoJPGxpPjxhIGhyZWY9IntjbXNfbW9kdWxlIG1vZHVsZT0kbW9kdWxlLT5nZXRNb2R1bGVOYW1lKCkgaXRlbV9pZD0kbW9kdWxlLT5nZXRJZCgpIGFjdGlvbj0iZ2V0dXJsIiB1cmxhY3Rpb249ImRldGFpbCJ9Ij57JG1vZHVsZS0+Z2V0VGl0bGUoKX08L2E+PC9saT4NCgl7L2ZvcmVhY2h9DQo8L3VsPg0Key9pZn0NCnsqKn0NCg0KPC9kaXY+DQp7L2lmfQ==]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/templates/frontend.paginated.tpl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPgp7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWl0ZW19Cgk8bGk+PGEgaHJlZj0ieyRpdGVtLT5kZXRhaWxfbGlua30iPnskaXRlbS0+dGl0bGV9PC9hPjwvbGk+CnsvZm9yZWFjaH0KPC91bD4KCntpZiAkcGFnZXIuaGFzX3RvX3BhZ2luYXRlfQo8dWwgY2xhc3M9InBhZ2VyIj4KCXtpZiAkcGFnZXIucHJldmlvdXNfcGFnZX08bGkgY2xhc3M9InByZXZpb3VzIj48YSBocmVmPSJ7JHBhZ2VyLnByZXZpb3VzX3BhZ2V9Ij5QcmV2aW91cyBwYWdlPC9hPjwvbGk+ey9pZn0KCXtmb3JlYWNoIGZyb209JHBhZ2VyLnBhZ2VzIGl0ZW09cGFnZX0KCTxsaT57JHBhZ2V9PC9saT4KCXsvZm9yZWFjaH0KCXtpZiAkcGFnZXIubmV4dF9wYWdlfTxsaSBjbGFzcz0ibmV4dCI+PGEgaHJlZj0ieyRwYWdlci5uZXh0X3BhZ2V9Ij5OZXh0IHBhZ2U8L2E+PC9saT57L2lmfQo8L3VsPgp7L2lmfQo=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/templates/frontend.rss.tpl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPD94bWwtc3R5bGVzaGVldCB0aXRsZT0iWFNMX2Zvcm1hdHRpbmciIHR5cGU9InRleHQveHNsIiBocmVmPSIvbW9kdWxlcy97eyRtb2R1bGUtPkdldE1vZHVsZU5hbWUoKX19L3Jzcy9zdHlsZS54c2wiPz4KPHJzcyB2ZXJzaW9uPSIyLjAiID4KCTxjaGFubmVsPgoJCTx0aXRsZT57eyRtb2R1bGUtPkdldE1vZHVsZU5hbWUoKX19IFJTUyBmZWVkPC90aXRsZT4KCQk8bGluaz57JHJvb3RfdXJsfTwvbGluaz4KCQk8ZGVzY3JpcHRpb24+e3skbW9kdWxlLT5HZXRNb2R1bGVOYW1lKCl9fTwvZGVzY3JpcHRpb24+CgkJPGxhc3RCdWlsZERhdGU+eyRzbWFydHkubm93fGRhdGVfZm9ybWF0OiIlQSwgJUIgJWUsICVZIn08L2xhc3RCdWlsZERhdGU+CgkJPGxhbmd1YWdlPmVuLWVuPC9sYW5ndWFnZT4KCQl7Zm9yZWFjaCBmcm9tPSRpdGVtcyBpdGVtPWl0ZW19CgkJPGl0ZW0+CgkJPHRpdGxlPnskaXRlbS0+dGl0bGV9PC90aXRsZT4KCQk8bGluaz57JGl0ZW0tPmRldGFpbF9saW5rfTwvbGluaz4KCQk8Z3VpZD57JGl0ZW0tPmRldGFpbF9saW5rfTwvZ3VpZD4KCQkgPHB1YkRhdGU+eyRpdGVtLT5jcmVhdGVkX2F0fGRhdGVfZm9ybWF0OiIlYSwgJWQgJWIgJVkgJVQgR01UIn08L3B1YkRhdGU+CgkJPGRlc2NyaXB0aW9uPjwhW0NEQVRBWyB7JGl0ZW0tPnN1bW1hcnl9IF1dPjwvZGVzY3JpcHRpb24+CgkJPC9pdGVtPgoJCXsvZm9yZWFjaH0JCQoJPC9jaGFubmVsPgo8L3Jzcz4=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/templates/frontend.search.tpl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRmb3JtKX0Ke2lmICRmb3JtLT5oYXNFcnJvcnMoKX08ZGl2IHN0eWxlPSJjb2xvcjogcmVkOyI+eyRmb3JtLT5zaG93RXJyb3JzKCl9PC9kaXY+ey9pZn0KCXskZm9ybS0+Z2V0SGVhZGVycygpfQoJCgl7JGZvcm0tPnNob3dXaWRnZXRzKCc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxkaXYgY2xhc3M9InBhZ2V0ZXh0Ij4lTEFCRUwlOjwvZGl2PgoJCTxkaXYgY2xhc3M9InBhZ2VpbnB1dCI+JUlOUFVUJSA8ZW0+JVRJUFMlPC9lbT48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiIHN0eWxlPSJjb2xvcjogcmVkOyI+JUVSUk9SUyU8L2Rpdj4KCTwvZGl2PicpfQoKCTxwPgoJCXskZm9ybS0+Z2V0QnV0dG9ucygpfQoJPC9wPgoJeyRmb3JtLT5nZXRGb290ZXJzKCl9CnsvaWZ9Cnt7Kgp7JGZvcm1fc3RhcnR9Cgl7e2ZvcmVhY2ggZnJvbT0kZmlsdGVycyBpdGVtPWZpbHRlcn19Cgk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRpZH17eyRmaWx0ZXIubmFtZX19Ij4KCXt7L2ZvcmVhY2h9fQoJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IlNlYXJjaCBvbGQiIC8+CjwvZm9ybT4KKn19]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/templates/frontend.tagcloud.tpl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsIGNsYXNzPSJ0YWdjbG91ZCI+CiAgICB7Zm9yZWFjaCBmcm9tPSR0YWdzIGl0ZW09dGFnfQogICAgICAgIHtjYXB0dXJlIGFzc2lnbj12YWx1ZX0leyR0YWcudGFnfSV7L2NhcHR1cmV9CiAgICAgICAgPGxpIGNsYXNzPSJ3ZWlnaHQteyR0YWcuY2xhc3N9Ij48YSBocmVmPSJ7e2xpdGVyYWx9fXt7ey9saXRlcmFsfX17eyRtb2R1bGUtPmdldE1vZHVsZU5hbWUoKX19IGFjdGlvbj0idXJsX2ZvciIgbGltaXQ9MjAgdGFnPSR2YWx1ZX0iPnskdGFnLnRhZ308L2E+PC9saT4KICAgIHsvZm9yZWFjaH0KPC91bD4=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/templates/frontend.user_form.tpl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmIGlzc2V0KCRmb3JtKX0KCTxkaXYgc3R5bGU9ImNvbG9yOiByZWQ7Ij57JGZvcm0tPnNob3dFcnJvcnMoKX08L2Rpdj4KCXskZm9ybS0+Z2V0SGVhZGVycygpfQoJeyRmb3JtLT5zaG93V2lkZ2V0cygnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8ZGl2IGNsYXNzPSJwYWdldGV4dCI+JUxBQkVMJTo8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiPiVJTlBVVCU8L2Rpdj4KCTwvZGl2PicpfQoJPHAgc3R5bGU9Im1hcmdpbi10b3A6IDE1cHg7Ij4KCQl7JGZvcm0tPmdldEJ1dHRvbnMoKX0KCTwvcD4KCXskZm9ybS0+Z2V0Rm9vdGVycygpfQp7L2lmfQo=]]></data>
	</file>
	<file>
	  <filename>/smarty/templates/templates/frontend.user_form_success.tpl.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHA+eyRzdWNjZXNzX21lc3NhZ2V9PC9wPg==]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/defaultadmin.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[e2lmICRyb3dzfEBjb3VudH0KPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjbGFzcz0icGFnZXRhYmxlIj4KICAgIDx0aGVhZD4KICAgICAgICA8dHI+CiAgICAgICAgICAgIDx0aD5Nb2R1bGVzPC90aD4KICAgICAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiIgc3R5bGU9IndpZHRoOjE2cHg7Ij4mbmJzcDs8L3RoPgogICAgICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIiBzdHlsZT0id2lkdGg6MTZweDsiPiZuYnNwOzwvdGg+CiAgICAgICAgICAgIDx0aCBjbGFzcz0icGFnZWljb24iIHN0eWxlPSJ3aWR0aDoxNnB4OyI+Jm5ic3A7PC90aD4KICAgICAgICAgICAgPHRoIGNsYXNzPSJwYWdlaWNvbiIgc3R5bGU9IndpZHRoOjE2cHg7Ij4mbmJzcDs8L3RoPgogICAgICAgICAgICA8dGggY2xhc3M9InBhZ2VpY29uIiBzdHlsZT0id2lkdGg6MTZweDsiPiZuYnNwOzwvdGg+CiAgICAgICAgPC90cj4KICAgIDwvdGhlYWQ+CiAgICA8dGJvZHk+CiAgICAgICAge2ZvcmVhY2ggZnJvbT0kcm93cyBpdGVtPXJvd30KICAgICAgICA8dHIgY2xhc3M9IntjeWNsZSB2YWx1ZXM9InJvdzEscm93MiJ9IiBvbm1vdXNlb3Zlcj0idGhpcy5jbGFzc05hbWU9J3tjeWNsZSB2YWx1ZXM9InJvdzEscm93MiJ9aG92ZXInOyIgb25tb3VzZW91dD0idGhpcy5jbGFzc05hbWU9J3tjeWNsZSB2YWx1ZXM9InJvdzEscm93MiJ9JzsiPgogICAgICAgICAgICA8dGQ+eyRyb3cudGl0bGV9ICg8ZW0+eyRyb3cubW9kdWxlX2ZyaWVuZGx5bmFtZX08L2VtPik8L3RkPgogICAgICAgICAgICA8dGQ+eyRyb3cucHVibGlzaH08L3RkPgogICAgICAgICAgICA8dGQ+eyRyb3cuZXhwb3J0fTwvdGQ+CiAgICAgICAgICAgIDx0ZD57JHJvdy52aWV3fTwvdGQ+CgkJCQkJCTx0ZD57JHJvdy5lZGl0fTwvdGQ+CiAgICAgICAgICAgIDx0ZD57JHJvdy5kZWxldGV9PC90ZD4KICAgICAgICA8L3RyPgogICAgICAgIHsvZm9yZWFjaH0KICAgIDwvdGJvZHk+CjwvdGFibGU+CnsvaWZ9Cgo8cD57JGFkZF9pY29ufSAgeyRhZGR9PC9wPgoKe2lmIGlzc2V0KCRmb3JtKX0KCTxkaXYgc3R5bGU9ImNvbG9yOiByZWQ7Ij57JGZvcm0tPnNob3dFcnJvcnMoKX08L2Rpdj4KCXskZm9ybS0+Z2V0SGVhZGVycygpfQoJeyRmb3JtLT5zaG93V2lkZ2V0cygnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KCQk8ZGl2IGNsYXNzPSJwYWdldGV4dCI+JUxBQkVMJTo8L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiPiVJTlBVVCUgPGVtPiVUSVBTJTwvZW0+PC9kaXY+CgkJPGRpdiBjbGFzcz0icGFnZWlucHV0IiBzdHlsZT0iY29sb3I6IHJlZDsiPiVFUlJPUlMlPC9kaXY+Cgk8L2Rpdj4nKX0KCXskZm9ybS0+cmVuZGVyRmllbGRzZXRzKCc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgoJCTxkaXYgY2xhc3M9InBhZ2V0ZXh0Ij4lTEFCRUwlOjwvZGl2PgoJCTxkaXYgY2xhc3M9InBhZ2VpbnB1dCI+JUlOUFVUJSA8ZW0+JVRJUFMlPC9lbT48L2Rpdj4KCQk8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiIHN0eWxlPSJjb2xvcjogcmVkOyI+JUVSUk9SUyU8L2Rpdj4KCTwvZGl2PicpfQoJCXskZm9ybS0+Z2V0QnV0dG9ucygpfQoJeyRmb3JtLT5nZXRGb290ZXJzKCl9CnsvaWZ9]]></data>
	</file>
	<file>
	  <filename>/templates/edit.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmb3JtX3N0YXJ0fQp7JGlucHV0X21vZHVsZV9pZH0KPHAgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyI+Cgl7JHB1Ymxpc2hfYnV0dG9ufQoJeyRzYXZlX2J1dHRvbn0KCXskY2FuY2VsX2J1dHRvbn0KPC9wPgoKeyR0YWJfaGVhZGVyc30KCgp7JHN0YXJ0X21haW5fdGFifQo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3cyIj4KICA8cCBjbGFzcz0icGFnZXRleHQyIj5Nb2R1bGUgbmFtZTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dDIiPnskaW5wdXRfbW9kdWxlX2ZyaWVuZGx5bmFtZX08L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93MiI+Cgk8cCBjbGFzcz0icGFnZXRleHQyIj5BZGRpdGlvbmFsIGZpZWxkczo8L3A+Cgk8ZGl2IGNsYXNzPSJwYWdlaW5wdXQyIj4KCQk8dGFibGUgc3R5bGU9IndpZHRoOiAxMDAlOyIgY2xhc3M9InBhZ2V0YWJsZSI+CgkJCTx0aGVhZD4KCQkJCTx0aD48L3RoPgoJCQkJPHRoPjwvdGg+CgkJCQk8dGg+TGFiZWw8L3RoPgoJCQkJPHRoPk5hbWU8L3RoPgoJCQkJPHRoPlR5cGU8L3RoPgoJCQkJPHRoPk9wdGlvbnM8L3RoPgoJCQkJPHRoPlNob3cgaW4gY29sdW1uPC90aD4KCQkJCTx0aD5BZG1pbiBmaWx0ZXI8L3RoPgoJCQkJPHRoPlVzZSBpbiBmcm9udGVuZDwvdGg+CgkJCQk8dGg+PC90aD4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJmaWVsZHMiPgoJCQl7Zm9yZWFjaCBmcm9tPSRleHRyYV9maWVsZHMga2V5PWkgaXRlbT1maWVsZH0KCQkJPHRyIGNsYXNzPSJ7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIifSIgb25tb3VzZW92ZXI9InRoaXMuY2xhc3NOYW1lPSd7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIifWhvdmVyJzsiIG9ubW91c2VvdXQ9InRoaXMuY2xhc3NOYW1lPSd7Y3ljbGUgdmFsdWVzPSJyb3cxLHJvdzIifSc7Ij4KCQkJCTx0ZCB3aWR0aD0iMTYiPgoJCQkJCXtpZiAkaSBuZSAwfTxpbnB1dCB0eXBlPSJpbWFnZSIgbmFtZT0ieyRtb2R1bGVfaWR9bW92ZV91cFt7JGl9XSIgdmFsdWU9IiZsYXF1bzsgdXAiIHNyYz0ieyRtb3ZlX3VwfSIvPnsvaWZ9CgkJCQk8L3RkPgoJCQkJPHRkIHdpZHRoPSIxNiI+CgkJCQkJe2lmICRpKzEgPCAkZXh0cmFfZmllbGRzfEBjb3VudH08aW5wdXQgdHlwZT0iaW1hZ2UiIG5hbWU9InskbW9kdWxlX2lkfW1vdmVfZG93blt7JGl9XSIgdmFsdWU9ImRvd24gJnJhcXVvOyIgc3JjPSJ7JG1vdmVfZG93bn0iLz57L2lmfQoJCQkJPC90ZD4KCQkJCTx0ZD4KCQkJCQk8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRtb2R1bGVfaWR9ZXh0cmFfZmllbGRzW3skaX1dW2xhYmVsXSIgdmFsdWU9InskZmllbGQubGFiZWx9IiBzaXplPSIzMCIgLz4KCQkJCTwvdGQ+CgkJCQk8dGQgd2lkdGg9IjMwMCI+CgkJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieyRtb2R1bGVfaWR9ZXh0cmFfZmllbGRzW3skaX1dW25hbWVdIiB2YWx1ZT0ieyRmaWVsZC5uYW1lfSIgY2xhc3M9ImZpZWxkX25hbWUiIC8+CgkJCQkJPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0ieyRtb2R1bGVfaWR9ZXh0cmFfZmllbGRzW3skaX1dW3R5cGVdIiB2YWx1ZT0ieyRmaWVsZC50eXBlfSIgLz4KCQkJCQk8aW5wdXQgdHlwZT0idGV4dCIgdmFsdWU9InskZmllbGQubmFtZX0iIHNpemU9IjMwIiBkaXNhYmxlZD0iZGlzYWJsZWQiIC8+CgkJCQk8L3RkPgoJCQkJPHRkPgoJCQkJCTxzZWxlY3QgZGlzYWJsZWQ9ImRpc2FibGVkIj4KCQkJCQkJe2ZvcmVhY2ggZnJvbT0kZmllbGRfdHlwZXMgaXRlbT1maWVsZF90eXBlfQoJCQkJCQk8b3B0aW9uIHZhbHVlPSJ7JGZpZWxkX3R5cGUuZm9ybV90eXBlfSIge2lmICRmaWVsZC50eXBlID09ICRmaWVsZF90eXBlLnR5cGV9c2VsZWN0ZWQ9InNlbGVjdGVkInsvaWZ9PnskZmllbGRfdHlwZS5sYWJlbH08L29wdGlvbj4KCQkJCQkJey9mb3JlYWNofQoJCQkJCTwvc2VsZWN0PgoJCQkJPC90ZD4KCQkJCTx0ZD4KCQkJCQl7aWYgaW5fYXJyYXkoJGZpZWxkLnR5cGUsICRmaWVsZF90eXBlc193aXRoX29wdGlvbnMpfTxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JG1vZHVsZV9pZH1leHRyYV9maWVsZHNbeyRpfV1bb3B0aW9uc10iIHZhbHVlPSJ7JGZpZWxkLm9wdGlvbnN9IiBzaXplPSIzMCIgLz57L2lmfQoJCQkJPC90ZD4KCQkJCTx0ZD4KCQkJCQl7aWYgJGZpZWxkLnR5cGUgbmUgJ3RleHRhcmVhJyAmJiAgJGZpZWxkLnR5cGUgbmUgJ3RleHRhcmVhX3BsYWluJ30JCQoJCQkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRtb2R1bGVfaWR9ZXh0cmFfZmllbGRzW3skaX1dW2NvbHVtbl0iIHZhbHVlPSJ0cnVlIiB7aWYgJGZpZWxkLmNvbHVtbiBlcSAidHJ1ZSJ9Y2hlY2tlZD0idHJ1ZSJ7L2lmfSAvPgoJCQkJCXsvaWZ9CgkJCQk8L3RkPgkJCQoJCQkJPHRkPgoJCQkJCXtpZiAkZmllbGQudHlwZSBlcSAndGV4dCcgfHwgJGZpZWxkLnR5cGUgZXEgJ3RleHRhcmVhJyB8fCAkZmllbGQudHlwZSBlcSAndGV4dGFyZWFfcGxhaW4nIHx8ICRmaWVsZC50eXBlIGVxICdzZWxlY3QnIHx8ICRmaWVsZC50eXBlIGVxICdtb2R1bGUnIHx8ICRmaWVsZC50eXBlIGVxICd1c2VyJyB8fCAkZmllbGQudHlwZSBlcSAnY291bnRyeSd9CQkKCQkJCQk8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9InskbW9kdWxlX2lkfWV4dHJhX2ZpZWxkc1t7JGl9XVtmaWx0ZXJdIiB2YWx1ZT0idHJ1ZSIge2lmICRmaWVsZC5maWx0ZXIgZXEgInRydWUifWNoZWNrZWQ9InRydWUiey9pZn0gLz4gCgkJCQkJey9pZn0KCQkJCTwvdGQ+CgkJCQk8dGQ+CQkJCQoJCQkJCTxpbnB1dCB0eXBlPSJjaGVja2JveCIgbmFtZT0ieyRtb2R1bGVfaWR9ZXh0cmFfZmllbGRzW3skaX1dW2Zyb250ZW5kXSIgdmFsdWU9InRydWUiIHtpZiAkZmllbGQuZnJvbnRlbmQgZXEgInRydWUifWNoZWNrZWQ9InRydWUiey9pZn0gLz4KCQkJCTwvdGQ+CgkJCQk8dGQ+PGEgaHJlZj0iIyIgY2xhc3M9ImZpZWxkX3JlbW92ZSI+eypSZW1vdmUgZmllbGQqfXskcmVtb3ZlX2ljb259PC9hPjwvdGQ+CgkJCTwvdHI+CgkJCXsvZm9yZWFjaH0KCQkJPC90Ym9keT4KCQk8L3RhYmxlPgoJCTxwPjxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJmaWVsZF9hZGQiIHZhbHVlPSJBZGQgZmllbGQiIC8+PC9wPgoJPC9kaXY+CjwvZGl2PgoKPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgooZnVuY3Rpb24oJCkge2xkZWxpbX0KCXZhciBwcmVmaXggPSAieyRtb2R1bGVfaWR9IjsKCXZhciBvcHRpb25zID0gJ3tmb3JlYWNoIGZyb209JGZpZWxkX3R5cGVzIGl0ZW09ZmllbGRfdHlwZX08b3B0aW9uIHZhbHVlPSJ7JGZpZWxkX3R5cGUudHlwZX0iPnskZmllbGRfdHlwZS5sYWJlbH08L29wdGlvbj57L2ZvcmVhY2h9JzsKCXZhciBmaWVsZF90eXBlc193aXRoX29wdGlvbnMgPSBbe2ZvcmVhY2ggbmFtZT10eXBlcyBmcm9tPSRmaWVsZF90eXBlc193aXRoX29wdGlvbnMgaXRlbT1maWVsZF90eXBlfSJ7JGZpZWxkX3R5cGV9IntpZiAhJHNtYXJ0eS5mb3JlYWNoLnR5cGVzLmxhc3R9LCB7L2lmfXsvZm9yZWFjaH1dOwoJdmFyIG9wdGlvbnNfZGVmYXVsdCA9IFtdOwoJe2ZvcmVhY2ggZnJvbT0kZmllbGRfdHlwZXMgaXRlbT1maWVsZF90eXBlfQoJb3B0aW9uc19kZWZhdWx0Wyd7JGZpZWxkX3R5cGUudHlwZX0nXSA9ICd7JGZpZWxkX3R5cGUub3B0aW9uc19kZWZhdWx0fSc7Cgl7L2ZvcmVhY2h9Cgl7bGl0ZXJhbH0KCSQoJyNmaWVsZHMgYS5maWVsZF9yZW1vdmUnKS5jbGljayhmdW5jdGlvbigpIHsKCQkkKHRoaXMpLnBhcmVudHMoJ2Zvcm0nKS5hcHBlbmQoJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IicrcHJlZml4KydkZWxldGVfZmllbGRzW10iIHZhbHVlPSInICsgJCh0aGlzKS5wYXJlbnRzKCJ0cjpmaXJzdCIpLmZpbmQoJy5maWVsZF9uYW1lJykudmFsKCkgKyAnIiAvPicpOwoJCSQodGhpcykucGFyZW50cygidHI6Zmlyc3QiKS5yZW1vdmUoKTsKCQlyZXR1cm4gZmFsc2U7Cgl9KTsKCXZhciBpID0gJCgiI2ZpZWxkcyB0ciIpLmxlbmd0aDsKCSQoIiNmaWVsZF9hZGQiKS5jbGljayhmdW5jdGlvbigpIHsKCQkkKCc8dHI+PHRkIHdpZHRoPSIzMiIgY29sc3Bhbj0iMiI+PC90ZD48dGQ+PCEtLTxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iJytwcmVmaXgrJ2V4dHJhX2ZpZWxkc1snK2krJ11bbGFiZWxdIiBuYW1lPSInK3ByZWZpeCsnZXh0cmFfZmllbGRzWycraSsnXVtsYWJlbF0iIHNpemU9IjMwIiAvPi0tPjwvdGQ+PHRkIHdpZHRoPSIzMDAiPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IicrcHJlZml4KydleHRyYV9maWVsZHNbJytpKyddW25ld10iIHZhbHVlPSIxIiAvPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iJytwcmVmaXgrJ2V4dHJhX2ZpZWxkc1snK2krJ11bbmFtZV0iIG5hbWU9IicrcHJlZml4KydleHRyYV9maWVsZHNbJytpKyddW25hbWVdIiBzaXplPSIzMCIgLz48L3RkPjx0ZD48c2VsZWN0IGlkPSInK3ByZWZpeCsnZXh0cmFfZmllbGRzWycraSsnXVt0eXBlXSIgbmFtZT0iJytwcmVmaXgrJ2V4dHJhX2ZpZWxkc1snK2krJ11bdHlwZV0iIGNsYXNzPSJmaWVsZF90eXBlIj4nICsgb3B0aW9ucyArICc8L3NlbGVjdD48L3RkPjx0ZD48c3BhbiBjbGFzcz0iZmllbGRfb3B0aW9ucyIgc3R5bGU9ImRpc3BsYXk6bm9uZTsiPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iJytwcmVmaXgrJ2V4dHJhX2ZpZWxkc1snK2krJ11bb3B0aW9uc10iIG5hbWU9IicrcHJlZml4KydleHRyYV9maWVsZHNbJytpKyddW29wdGlvbnNdIiBzaXplPSIzMCIgLz48L3NwYW4+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PGEgaHJlZj0iIyIgY2xhc3M9ImZpZWxkX3JlbW92ZSI+ey9saXRlcmFsfXsqUmVtb3ZlIGZpZWxkKn17JHJlbW92ZV9pY29ufXtsaXRlcmFsfTwvYT48L3RkPjwvdHInKQoJCQkuZmluZCgic2VsZWN0LmZpZWxkX3R5cGUiKS5jaGFuZ2UoZnVuY3Rpb24oKSB7CgkJCQlpZiAoJC5pbkFycmF5KCQodGhpcykudmFsKCksIGZpZWxkX3R5cGVzX3dpdGhfb3B0aW9ucykgIT0gLTEpIHsKCQkJCQkkKHRoaXMpLnBhcmVudHMoInRyOmZpcnN0IikuZmluZCgic3Bhbi5maWVsZF9vcHRpb25zIikuZmluZCgiOmlucHV0IikudmFsKG9wdGlvbnNfZGVmYXVsdFskKHRoaXMpLnZhbCgpXSkuZW5kKCkuY3NzKCJkaXNwbGF5IiwgImlubGluZSIpOwoJCQkJfSBlbHNlIHsKCQkJCQkkKHRoaXMpLnBhcmVudHMoInRyOmZpcnN0IikuZmluZCgic3Bhbi5maWVsZF9vcHRpb25zIikuY3NzKCJkaXNwbGF5IiwgIm5vbmUiKTsKCQkJCX0KCQkJfSkKCQkJLmVuZCgpCgkJCS5maW5kKCJhLmZpZWxkX3JlbW92ZSIpLmNsaWNrKGZ1bmN0aW9uKCkgewoJCQkJJCh0aGlzKS5wYXJlbnRzKCJ0cjpmaXJzdCIpLnJlbW92ZSgpOwoJCQkJcmV0dXJuIGZhbHNlOwoJCQl9KQoJCQkuZW5kKCkKCQkJLmFwcGVuZFRvKCIjZmllbGRzIik7CgkJaSsrOwoJCXJldHVybiBmYWxzZTsKCX0pOwoJey9saXRlcmFsfQp7cmRlbGltfSkoalF1ZXJ5KTsKPC9zY3JpcHQ+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3cyIj4KCTxwIGNsYXNzPSJwYWdldGV4dDIiPkZpbHRlcnM6PC9wPgoJPGRpdiBjbGFzcz0icGFnZWlucHV0MiI+CgkJPGRpdiBpZD0iZmlsdGVycyI+CgkJCXtmb3JlYWNoIGZyb209JGZpbHRlcnMga2V5PWkgaXRlbT1maWx0ZXJ9CgkJCTxwIGNsYXNzPSJmaWx0ZXJzX2l0ZW0iPgoJCQkJPGxhYmVsIGZvcj0ieyRtb2R1bGVfaWR9ZmlsdGVyc197JGl9X25hbWUiPk5hbWU6PC9sYWJlbD4gPGlucHV0IHR5cGU9InRleHQiIGlkPSJ7JG1vZHVsZV9pZH1maWx0ZXJzX3skaX1fbmFtZSIgbmFtZT0ieyRtb2R1bGVfaWR9ZmlsdGVyc1t7JGl9XVtuYW1lXSIgdmFsdWU9InskZmlsdGVyLm5hbWV9IiBzaXplPSIzMCIgLz4KCQkJCTxsYWJlbCBmb3I9InskbW9kdWxlX2lkfWZpbHRlcnNfeyRpfV9maWVsZCI+RmllbGQ6PC9sYWJlbD4gPGlucHV0IHR5cGU9InRleHQiIGlkPSJ7JG1vZHVsZV9pZH1maWx0ZXJzX3skaX1fZmllbGQiIG5hbWU9InskbW9kdWxlX2lkfWZpbHRlcnNbeyRpfV1bZmllbGRdIiB2YWx1ZT0ieyRmaWx0ZXIuZmllbGR9IiBzaXplPSIxMCIgLz4KCQkJCTxsYWJlbCBmb3I9InskbW9kdWxlX2lkfWZpbHRlcnNfeyRpfV90eXBlIj5UeXBlOjwvbGFiZWw+IDxzZWxlY3QgaWQ9InskbW9kdWxlX2lkfWZpbHRlcnNfeyRpfV90eXBlIiBuYW1lPSJ7JG1vZHVsZV9pZH1maWx0ZXJzW3skaX1dW3R5cGVdIj4KCQkJCQl7Zm9yZWFjaCBmcm9tPSRmaWx0ZXJfdHlwZXMgaXRlbT1maWx0ZXJfdHlwZX0KCQkJCQk8b3B0aW9uIHZhbHVlPSJ7JGZpbHRlcl90eXBlLnR5cGV9IiB7aWYgJGZpbHRlci50eXBlID09ICRmaWx0ZXJfdHlwZS50eXBlfXNlbGVjdGVkPSJzZWxlY3RlZCJ7L2lmfT57JGZpbHRlcl90eXBlLmxhYmVsfTwvb3B0aW9uPgoJCQkJCXsvZm9yZWFjaH0KCQkJCTwvc2VsZWN0PgoJCQkJPGEgaHJlZj0iIyIgY2xhc3M9ImZpbHRlcl9yZW1vdmUiPlJlbW92ZSBmaWx0ZXI8L2E+CgkJCTwvcD4KCQkJey9mb3JlYWNofQoJCTwvZGl2PgoJCTxwPjxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJmaWx0ZXJfYWRkIiB2YWx1ZT0iQWRkIGZpbHRlciIgLz48L3A+Cgk8L2Rpdj4KPC9kaXY+Cgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CihmdW5jdGlvbigkKSB7bGRlbGltfQoJdmFyIHByZWZpeCA9ICJ7JG1vZHVsZV9pZH0iOwoJdmFyIG9wdGlvbnMgPSAne2ZvcmVhY2ggZnJvbT0kZmlsdGVyX3R5cGVzIGl0ZW09ZmlsdGVyX3R5cGV9PG9wdGlvbiB2YWx1ZT0ieyRmaWx0ZXJfdHlwZS50eXBlfSI+eyRmaWx0ZXJfdHlwZS5sYWJlbH08L29wdGlvbj57L2ZvcmVhY2h9JzsKCXtsaXRlcmFsfQoJJCgiYS5maWx0ZXJfcmVtb3ZlIikuY2xpY2soZnVuY3Rpb24oKSB7CgkJJCh0aGlzKS5wYXJlbnRzKCJwLmZpbHRlcnNfaXRlbSIpLnJlbW92ZSgpOwoJCXJldHVybiBmYWxzZTsKCX0pOwoJdmFyIGkgPSAkKCIjZmlsdGVycyBwLmZpbHRlcnNfaXRlbSIpLmxlbmd0aCsxOwoJJCgiI2ZpbHRlcl9hZGQiKS5jbGljayhmdW5jdGlvbigpIHsKCQkkKCc8cCBjbGFzcz0iZmlsdGVyc19pdGVtIj48bGFiZWwgZm9yPSInK3ByZWZpeCsnZmlsdGVyc18nK2krJ19uYW1lIj5OYW1lOjwvbGFiZWw+IDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iJytwcmVmaXgrJ2ZpbHRlcnNfJytpKydfbmFtZSIgbmFtZT0iJytwcmVmaXgrJ2ZpbHRlcnNbJytpKyddW25hbWVdIiBzaXplPSIzMCIgLz4gRmllbGQ6IDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iJytwcmVmaXgrJ2ZpbHRlcnNbJytpKyddW2ZpZWxkXSIgbmFtZT0iJytwcmVmaXgrJ2ZpbHRlcnNbJytpKyddW2ZpZWxkXSIgc2l6ZT0iMTAiIC8+IDxsYWJlbCBmb3I9IicrcHJlZml4KydmaWx0ZXJzWycraSsnXVt0eXBlXSI+VHlwZTo8L2xhYmVsPiA8c2VsZWN0IGlkPSInK3ByZWZpeCsnZmlsdGVyc1snK2krJ11bdHlwZV0iIG5hbWU9IicrcHJlZml4KydmaWx0ZXJzWycraSsnXVt0eXBlXSIgY2xhc3M9ImZpbHRlcl90eXBlIj4nICsgb3B0aW9ucyArICc8L3NlbGVjdD4gPGEgaHJlZj0iIyIgY2xhc3M9ImZpbHRlcl9yZW1vdmUiPlJlbW92ZSBmaWx0ZXI8L2E+PC9wPicpCgkJCS5maW5kKCJhLmZpbHRlcl9yZW1vdmUiKS5jbGljayhmdW5jdGlvbigpIHsKCQkJCSQodGhpcykucGFyZW50cygicC5maWx0ZXJzX2l0ZW0iKS5yZW1vdmUoKTsKCQkJCXJldHVybiBmYWxzZTsKCQkJfSkKCQkJLmVuZCgpCgkJCS5hcHBlbmRUbygiI2ZpbHRlcnMiKTsKCQlpKys7CgkJcmV0dXJuIGZhbHNlOwoJfSk7Cgl7L2xpdGVyYWx9CntyZGVsaW19KShqUXVlcnkpOwo8L3NjcmlwdD4KeyRlbmRfdGFifQoKeyRzdGFydF9hY3Rpb25zX3RhYn0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93MiI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0MiI+U3BlY2lmaWMgbW9kdWxlIGFjdGlvbnM8L3A+CgkJPGRpdiBjbGFzcz0icGFnZWlucHV0MiI+CgkJCQk8dGFibGUgc3R5bGU9IndpZHRoOiAxMDAlOyIgY2xhc3M9InBhZ2V0YWJsZSI+CgkJCQkJPHRoZWFkPgoJCQkJCQk8dGg+TmFtZTwvdGg+CgkJCQkJCTx0aD5JcyBhIHB1YmxpYyBhY3Rpb248L3RoPgoJCQkJCQk8dGg+PC90aD4KCQkJCQk8L3RoZWFkPgoJCQkJCTx0Ym9keSBpZD0iYWN0aW9ucyI+CgkJCQkJCXtmb3JlYWNoIGZyb209JGFjdGlvbnMgaXRlbT1hY3Rpb259CgkJCQkJCTx0cj4KCQkJCQkJCTx0ZD57JGFjdGlvbi0+bmFtZX08L3RkPgoJCQkJCQkJPHRkPnskYWN0aW9uLT5pc19wdWJsaWNfaWNvbn08L3RkPgoJCQkJCQkJPHRkPnskYWN0aW9uLT5lZGl0X3VybH0geyRhY3Rpb24tPmRlbGV0ZV91cmx9PC90ZD4KCQkJCQkJPC90cj4KCQkJCQkJey9mb3JlYWNofQoJCQkJCTwvdGJvZHk+CgkJCQk8L3RhYmxlPgoJCQk8cD48aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0iYWN0aW9uX2FkZCIgdmFsdWU9IkFkZCBhY3Rpb24iIG9uQ2xpY2s9InJldHVybiBwYXJlbnQubG9jYXRpb249J3skYWRkX2FjdGlvbl91cmx9JyIgLz48L3A+CgkJPC9kaXY+CjwvZGl2Pgp7JGVuZF90YWJ9Cgp7JHN0YXJ0X2xvZ2ljX3RhYn0KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93MiI+Cgk8cCBjbGFzcz0icGFnZXRleHQyIj5TcGVjaWZpYyBtb2R1bGUgb2JqZWN0IGxvZ2ljIChleHRlbmRzIHRoZSBtb2R1bGUgaXRlbSBjbGFzcyk6PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dDIiPnskbW9kdWxlX2xvZ2ljfTwvcD4KPC9kaXY+CnskZW5kX3RhYn0KCnskc3RhcnRfb3B0aW9uc190YWJ9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdzIiPgogIDxwIGNsYXNzPSJwYWdldGV4dDIiPlBhcmVudCBtb2R1bGU6PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQyIj57JGlucHV0X21vZHVsZV9wYXJlbnR9PC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdzIiPgogIDxwIGNsYXNzPSJwYWdldGV4dDIiPkFkbWluIHNlY3Rpb246PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQyIj57JGlucHV0X2FkbWluX3NlY3Rpb259PC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdzIiPgogIDxwIGNsYXNzPSJwYWdldGV4dDIiPlNob3cgbW9kdWxlOjwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0MiI+eyRpbnB1dF9zaG93X21vZHVsZX08L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3cyIj4KICA8cCBjbGFzcz0icGFnZXRleHQyIj5JcyB1c2VyIG1vZHVsZTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dDIiPnskaW5wdXRfaXNfdXNlcl9tb2R1bGV9PC9wPgo8L2Rpdj4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdzIiPgogIDxwIGNsYXNzPSJwYWdldGV4dDIiPlByb3RlY3QgZmlsZXM6PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQyIj57JGlucHV0X2lzX3Byb3RlY3RlZH08L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93MiI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0MiI+RmlsZSBzdG9yYWdlIHBhdGggKHNlcnZlciBwYXRoKTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dDIiPnskaW5wdXRfZmlsZXNfcGF0aH08L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93MiI+CgkJPHAgY2xhc3M9InBhZ2V0ZXh0MiI+UmVzdG9yZSBtb2R1bGUgdGVtcGxhdGVzPC9wPgoJCTxkaXYgY2xhc3M9InBhZ2VpbnB1dDIiPgoJCQk8cD48aW5wdXQgdHlwZT0iYnV0dG9uIiBpZD0idGVtcGxhdGVzX3Jlc3RvcmUiIHZhbHVlPSJSZXN0b3JlIHRlbXBsYXRlcyIgb25DbGljaz0icmV0dXJuIHBhcmVudC5sb2NhdGlvbj0neyR0ZW1wbGF0ZXNfcmVzdG9yZV91cmx9JyIgLz48L3A+CgkJPC9kaXY+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3cyIj4KCTxwIGNsYXNzPSJwYWdldGV4dDIiPkNyZWF0ZWQgYnk6PC9wPgoJPHAgY2xhc3M9InBhZ2VpbnB1dDIiPnskY3JlYXRlZF9ieX0gb24geyRjcmVhdGVkX2F0fTwvcD4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3cyIj4KCTxwIGNsYXNzPSJwYWdldGV4dDIiPkxhc3QgdXBkYXRlZCBieTo8L3A+Cgk8cCBjbGFzcz0icGFnZWlucHV0MiI+eyR1cGRhdGVkX2J5fSBvbiB7JHVwZGF0ZWRfYXR9PC9wPgo8L2Rpdj4KeyRlbmRfdGFifQoKeyR0YWJfZm9vdGVyc30KCjxwIHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsiPgoJeyRwdWJsaXNoX2J1dHRvbn0KCXskc2F2ZV9idXR0b259Cgl7JGNhbmNlbF9idXR0b259CjwvcD4KCjwvZm9ybT4K]]></data>
	</file>
	<file>
	  <filename>/templates/error.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPkFjY2VzcyBEZW5pZWQ8L2gzPgo8cD5Zb3UgZG8gbm90IGhhdmUgc3VmZmljaWVudCBwcml2aWxlZ2VzIHRvIG1hbmFnZSB0aGlzIG1vZHVsZS48L3A+Cg==]]></data>
	</file>
</module>
