<?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>CGFBApp</name>
	<version>1.0</version>
  <mincmsversion>1.9.1</mincmsversion>
	<help><![CDATA[PGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPlRoaXMgbW9kdWxlIHByb3ZpZGVzIHNvbWUgdG9vbHMgKHZpYSBhbiBBUEkgYW5kIHZhcmlvdXMgc21hcnR5IHBsdWdpbnMpIHRvIGFsbG93IGVhc2lseSBpbnRlZ3JhdGluZyBmYWNlYm9vayBpbnRvIHlvdXIgYXBwbGljYXRpb24gdXNpbmcgc21hcnR5IGxvZ2ljLCBvciBidWlsZGluZyBhIHNpbXBsZSBmYWNlYm9vayBhcHBsaWNhdGlvbiB1c2luZyBzaW1wbGUgc21hcnR5IHBsdWdpbnMgb3IgdXNlciBkZWZpbmVkIHRhZ3MuICBUaGlzIGlzIHVzZWZ1bCB3aGVuIGJ1aWxkaW5nIEUtY29tbWVyY2UsIHRvdXJpc20sIGV2ZW50IG9yIHNvY2lhbCB3ZWJzaXRlcy48L3A+CjxoMz5GZWF0dXJlczwvaDM+CjxwPlRoaXMgbW9kdWxlIHByb3ZpZGVzIHNtYXJ0eSB1dGlsaXRpZXMgZm9yIGludGVncmF0aW5nIEZhY2Vib29rIGludG8geW91ciB3ZWJzaXRlLCBhbmQgc29tZSBzbWFydHkgdXRpbGl0aWVzIGFuZCBhIHNpbXBsZSBBUEkgZm9yIGJ1aWxkaW5nIGZhY2Vib29rIGFwcGxpY2F0aW9ucy4gSW5jbHVkaW5nOjxici8+CiA8dWw+CiA8bGk+SW5pdGlhbGl6aW5nIHRoZSBGYWNlYm9vayBKYXZhc2NyaXB0IEFQSSAoc3luY2hyb25vdXNseSBvciBhc3luY2hvcm5vdXNseSk8L2xpPgogPGxpPkRpc3BsYXkgYSBib3ggYWxsb3dpbmcgdXNlcnMgdG8gY29tbWVudCBvbiBhbnkgb2JlY3Qgd2l0aGluIHlvdXIgd2Vic2l0ZSAobm8gRmFjZWJvb2sgQVBQSUQgUmVxdWlyZWQpCiA8bGk+RGlzcGxheSBhIEZhY2Vib29rIExpa2UgQnV0dG9uIGZvciBhbnkgaXRlbTwvbGk+CiA8bGk+Q3JlYXRlIGEgV2FsbCBQb3N0IGZvciB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyLjwvbGk+CiA8bGk+Q3JlYXRlIGEgU3RhdHVzIHBvc3QgZm9yIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIuPC9saT4KIDxsaT5EaXNwbGF5IGFuIGludml0ZSBmb3JtIHRvIGludml0ZSB1c2VycyB0byB5b3VyIHdlYnNpdGU8L2xpPgogPGxpPgogPC91bD4KPC9wPjxici8+CjxwPllvdSBoYXZlIGFjY2VzcyB0byBudW1lcm91cyBzbWFydHkgdXRpbGl0aWVzIGZvciBjcmVhdGluZyB2YXJpb3VzIE9wZW5HcmFwaCBPYmplY3RzOgogPHVsPgogPGxpPlNldCB0aGUgT3BlbkdyYXBoIFVSTDwvbGk+CiA8bGk+U2V0IHRoZSBPcGVuR3JhcGggVGl0bGU8L2xpPgogPGxpPlNldCB0aGUgT3BlbkdyYXBoIE9iamVjdCBUeXBlPC9saT4KIDxsaT5TZXQgdGhlIE9wZW5HcmFwaCBJbWFnZSBBdHRyaWJ1dGU8L2xpPgogPGxpPlNldCB0aGUgT3BlbkdyYXBoIFRpdGxlIEF0dHJpYnV0ZTwvbGk+CiA8bGk+U2V0IHRoZSBPcGVuR3JhcGggU2l0ZW5hbWUgQXR0cmlidXRlPC9saT4KIDxsaT5TZXQgdGhlIE9wZW5HcmFwaCBEZXNjcmlwdGlvbiBBdHRyaWJ1dGU8L2xpPgogPGxpPlNldCB0aGUgT3BlbkdyYXBoIGFkbWlucyBhdHRyaWJ1dGUuPC9saT4KIDwvdWw+CjwvcD48YnIvPgo8cD5Zb3UgaGF2ZSBhY2Nlc3MgdG8gbnVtZXJvdXMgc21hcnR5IHV0aWxpdGllcyBmb3IgYnVpbGRpbmcgYSBGYWNlYm9vayBBcHBsaWNhdGlvbiBvbiBhIHBhZ2Ugb2YgeW91ciB3ZWJzaXRlOgogPHVsPgogPGxpPkluaXRpYWxpemluZyB0aGUgRmFjZWJvb2sgSmF2YXNjcmlwdCBBUEkgKHN5bmNocm9ub3VzbHkgb3IgYXN5bmNob3Jub3VzbHkpPC9saT4KIDxsaT5FbnRlcmluZyB5b3VyIEZhY2Vib29rIEFwcGxpY2F0aW9uIElELCBhbmQgQXBwIFNlY3JldDwvbGk+CiA8bGk+U2VsZWN0aW5nIHdoaWNoIEZhY2Vib29rIHBlcm1pc3Npb25zIHlvdXIgQXBwIFJlcXVpcmVzIChpZiBhbnkpPC9saT4KIDxsaT5EaXNwbGF5aW5nIGEgbG9naW4gYnV0dG9uIGFsbG93aW5nIHVzZXJzIHRvIGxvZ2luIHRvIHlvdXIgYXBwIG9yIHdlYnNpdGUgdXNpbmcgdGhlaXIgRmFjZWJvb2sgY3JlZGVudGlhbHM8L2xpPgogPGxpPkRpc3BsYXlpbmcgYSBsb2dvdXQgYnV0dG9uIGFsbG93aW5nIHVzZXJzIHRvIGxvZ291dCBmcm9tIHlvdXIgYXBwbGljYXRpb24uPC9saT4KIDxsaT5Jbml0aWFsaXppbmcgdGhlIEZhY2Vib29rIEphdmFzY3JpcHQgQVBJIChzeW5jaHJvbm91c2x5IG9yIGFzeW5jaG9ybm91c2x5KTwvbGk+CiA8bGk+Q2FsbGluZyBhbnkgZnVuY3Rpb24gaW4gdGhlIEZhY2Vib29rIEdyYXBoIEFQSTwvbGk+CiA8bGk+UmV0cmlldmUgYWxsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIgdGhhdCBoZSBoYXMgYXV0aG9yaXplZCB0byBzaGFyZSB3aXRoIHlvdTwvbGk+CiA8bGk+UmV0cmlldmUgRmFjZWJvb2sgVUlEIGZvciB0aGUgY3VycmVudGx5IGxvZ2dlZCBpbiB1c2VyLjwvbGk+CiA8bGk+U2VuZCBhIFBPU1QgY29tbWFuZCB0byB0aGUgRmFjZWJvb2sgR1JBUEggQVBJPC9saT4KIDwvdWw+CjwvcD48YnIvPgo8cD5UaGlzIG1vZHVsZSBwcm92aWRlcyBzb21lIGxpbWl0ZWQgc21hcnR5IHV0aWxpdGllcyBmb3Igc3RvcmluZyBhbmQgcmV0cmlldmluZyBkYXRhIGZvciBjcmVhdGluZyBzaW1wbGUgYXBwbGljYXRpb25zOgogPHVsPgogICA8bGk+UmV0cmlldmUgYXBwbGljYXRpb24gc3BlY2lmaWMgaW5mb3JtYXRpb24gc3BlY2lmaWMgdG8gdGhlIEZhY2Vib29rIHVzZXIuPC9saT4KICAgPGxpPlN0b3JlIGFwcGxpY2F0aW9uIGluZm9ybWF0aW9uIHNwZWNpZmljIHRvIHRoZSBGYWNlYm9vayB1c2VyIHRvIHRoZSBkYXRhYmFzZS48L2xpPgogICA8bGk+RXJhc2UgdXNlciByZWxhdGVkIGFwcGxpY2F0aW9uIGluZm9ybWF0aW9uLjwvbGk+CiAgIDxsaT5SZXRyaWV2ZSBhIGxpc3Qgb2YgdGhlIHVzZXJzIGZyaWVuZHMgdGhhdCBhcmUgYWxzbyB1c2luZyB0aGUgYXBwbGljYXRpb24uPC9saT4KIDwvdWw+CjwvcD48YnIvPgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciIHN0eWxlPSJjb2xvcjpibGFjaztwYWRkaW5nOjVweDtiYWNrZ3JvdW5kLWNvbG9yOndoaXRlO2JvcmRlcjoycHggZG90dGVkIG9yYW5nZSI+CiAgPHA+VGhpcyBtb2R1bGUgaXMgbm90IGEgcmVwbGFjZW1lbnQgZm9yIGxlYXJuaW5nIHRoZSBGYWNlYm9vayBBUElTIGZvciB3cml0aW5nIGFwcGxpY2F0aW9ucyB3aXRoIEZhY2Vib29rLiAgSXQgcHJvdmlkZXMgc29tZSB3cmFwcGVycyBhbmQgY29udmVuaWVuY2VzIGZvciBzbWFydHkgZm9yIHJldHJpZXZpbmcgZGF0YSBmcm9tIGFuZCBzdWJtaXR0aW5nIGRhdGEgdG8gRmFjZWJvb2suPC9wPgogIDxwPjxzcGFuIHN0eWxlPSJjb2xvcjogZ3JlZW47Ij5QbGVhc2U8L3NwYW4+IHJlYWQgdGhlIGZhY2Vib29rIGFwcGxpY2F0aW9uIHR1dG9yaWFscyBhbmQgcmVmZXJlbmNlIGRvY3VtZW50YXRpb24uPC9wPgo8L2Rpdj4KPGgzPkhvdyBkbyBJIHVzZSBpdDwvaDM+CjxwPlRoZXJlIGFyZSB0d28gcHJpbWFyeSB3YXlzIHRvIHVzZSB0aGlzIG1vZHVsZS4gIEZpcnN0LCBhbmQgbW9zdCBpbXBvcnRhbnRseSwgdG8gYWRkIHNvY2lhbCBhdHRyaWJ1dGVzIHRvIHlvdXIgZXhpc3RpbmcgQ01TTVMgV2Vic2l0ZS4gIFNlY29uZGx5IHlvdSBjYW4gdXNlIHRoaXMgbW9kdWxlIHRvIHF1ZXJ5IGRhdGEgZnJvbSBhbmQgc3VibWl0IGluZm9ybWF0aW9uIHRvIEZhY2Vib29rLiAgQWRkaXRpb25hbGx5IHNvbWUgcGx1Z2lucyBhcmUgcHJvdmlkZWQgZm9yIHN0b3JpbmcgYW5kIHJldHJpZXZpbmcgYXBwIHNwZWNpZmljIGluZm9ybWF0aW9uIGZvciBhIGZhY2Vib29rIHVzZXIuPC9wPgo8aDQ+PHU+RmFjZWJvb2sgU29jaWFsIFBsdWdpbnM6PC91PjwvaDQ+CiAgIDxwPlRoZSBmb2xsb3dpbmcgc2VjdGlvbiBkZXNjcmliZXMgdGhlIHNtYXJ0eSBmdW5jdGlvbnMgdG8gYWxsb3cgaW50ZWdyYXRpbmcgRmFjZWJvb2sgaW50byB5b3VyIHdlYnNpdGUuICBTZWUgdGhlICZxdW90O1NtYXJ0eSBGdW5jdGlvbnMmcXVvdDsgc2VjdGlvbiBiZWxvdyBmb3IgYSBkZXRhaWxlZCByZWZlcmVuY2Ugb2YgZWFjaCBwbHVnaW4uIEZvciBhIHJlZmVyZW5jZSB5b3Ugc2hvdWxkIHJlYWQgdGhpcyBwYWdlIGFib3V0IDxhIGhyZWY9Imh0dHA6Ly9kZXZlbG9wZXJzLmZhY2Vib29rLmNvbS9wbHVnaW5zIj5GYWNlYm9vayBTb2NpYWwgUGx1Z2luczwvYT48L3A+Cjx1bD4KIDxsaT48Y29kZT57Y2dmYl9saWtlfTwvY29kZT4gV2lsbCBkaXNwbGF5IGEgRmFjZWJvb2sgbGlrZSBidXR0b24gdG8gYWxsb3cgdXNlcnMgdG8gJnF1b3Q7TGlrZSZxdW90OyBUaGUgY3VycmVudCBQYWdlLjxici8+PHU+Tm90ZTo8L3U+IHlvdSBzaG91bGQgdHVybiB5b3J1IHdlYiBwYWdlcyBhbmQgb3RoZXIgaXRlbXMgaW50byAmcXVvdDtHcmFwaCBPYmplY3RzJnF1b3Q7IGZvciBvcHRpbWFsIGJlaGF2aW91ci48L2xpPgogPGxpPjxjb2RlPntjZ2ZiX2NvbW1lbnRzfTwvY29kZT4gV2lsbCBkaXNwbGF5IGEgZm9ybSBhbGxvd2luZyB1c2VycyB0byBhZGQgYSBjb21tZW50IHRvIHRoZSBjdXJyZW50IHBhZ2UsIG9yIGFuIGl0ZW0gb24gdGhlIHBhZ2UsIGFuZCB0byB2aWV3IHRoZSBjb21tZW50cyBvZiBvdGhlcnMuPC9saT4KPC91bD48YnIvPgogPHA+VGhlIHNpbXBsZXN0IHdheSB0byBhZGQgZmFjZWJvb2sgaW50ZWdyYXRpb24gaW50byB5b3VyIHNpdGUgaXMganVzdCB0byBhZGQgPGNvZGUgc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJfbGlrZX08L2NvZGU+IGludG8gdGhlIHBhZ2UgdGVtcGxhdGUgb2YgeW91ciBzaXRlLiAgTm93IGFueSBwYWdlIHRoYXQgdXNlcyB0aGlzIHBhZ2UgdGVtcGxhdGUgd2lsbCBoYXZlIGEgZmFjZWJvb2sgJnF1b3Q7TGlrZSZxdW90OyBidXR0b24gYXR0YWNoZWQgdG8gaXQuICBZb3UgZG8gbm90IG5lZWQgdG8gY3JlYXRlIGEgZmFjZWJvb2sgYXBwbGljYXRpb24sIG9yIGV2ZW4gdG8gY2FsbCB7Y2dmYl9pbml0fSB0byB1c2UgdGhpcyBmdW5jdGlvbi48L3A+CiA8cD5UaGUgbmV4dCBtb3N0IGNvbW1vbiB3YXkgdG8gYWRkIGZhY2Vib29rIGludGVncmF0aW9uIGludG8geW91ciBzaXRlIGlzIHRvIGFsbG93IHZpc2l0b3JzIHRvIGVudGVyIGNvbW1lbnRzLiAgWW91IGNhbiBkbyB0aGlzIGJ5IGFkZGluZyB0aGUgPGNvZGUgc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJfY29tbWVudHN9PC9jb2RlPiB0YWcgaW50byB5b3VyIHBhZ2UgdGVtcGxhdGUuPC9wPgogPHA+QWRkaW5nIGEgJnF1b3Q7bGlrZSZxdW90OyBidXR0b24gYmVzaWRlIGVhY2ggZW50cnkgb24geW91ciBQcm9kdWN0IHN1bW1hcnkgdmlld3MgeW91IGNhbiBzaW1wbHkgcGFzcyB0aGUgZGV0YWlsIHVybCB2YWx1ZSBmb3IgZWFjaCBwcm9kdWN0IGRpc3BsYXllZCBpbiB0aGUgc3VtbWFyeSB2aWV3IGFzIHRoZSA8ZW0+aHJlZjwvZW0+IHBhcmFtZXRlciB0byB0aGUge2NnZmJfbGlrZX0gdGFnLiAgaS5lOjxici8+CiA8cHJlPntmb3JlYWNoIGZyb209JGl0ZW1zIGl0ZW09ZW50cnl9PGJyLz57KiB5b3VyIG90aGVyIHN1bW1hcnkgdGVtcGxhdGUgc3R1ZmYgKn08YnIvPjxzcGFuIHN0eWxlPSJjb2xvcjogZ3JlZW47Ij57Y2dmYl9saWtlIGhyZWY9JGVudHJ5LT5kZXRhaWxfdXJsfTwvc3Bhbj48YnIvPnsvZm9yZWFjaH08L3ByZT4KIDxwPgoKPGJyLz48aDQ+PHU+SW50ZWdyYXRpbmcgd2l0aCBPcGVuR3JhcGg6PC91PjwvaDQ+CjxwPkludGVncmF0aW5nIHdpdGggT3BlbkdyYXBoIHdpbGwgYWxsb3cgZmFjZWJvb2sgdG8gYmV0dGVyIHVuZGVyc3RhbmQgd2hhdCB0eXBlIG9mIGRhdGEgaXMgb24gdGhlIHBhZ2UgKGEgdmlkZW8sIGltYWdlLCBwZXJzb25hbCBpbmZvcm1hdGlvbiwgY29tcGFueSBpbmZvcm1hdGlvbiwgZXRjKS4gIEl0IGlzIGFkdmlzZWQgdGhhdCB5b3UgaW50ZWdyYXRlIHdpdGggT3BlbkdyYXBoIGFzIG11Y2ggYXMgcG9zc2libGUgZm9yIG1heGltdW0gZWZmZWN0aXZlbmVzcywgYW5kIGZvciB2aWV3aW5nIGluZm9ybWF0aW9uIGFib3V0IGZhY2Vib29rICZxdW90O2luc2lnaHRzJnF1b3Q7LjwvcD4KICAgPHA+UmVmZXJlbmNlOiA8YSBocmVmPSJodHRwOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vZG9jcy9vcGVuZ3JhcGgiPlRoZSBPcGVuIEdyYXBoIFByb3RvY29sPC9hPjwvcD4KPHVsPgo8bGk+PGNvZGU+e2NnZmJfb2dfdmFsdWV9PC9jb2RlPiBJcyB1c2VkIHRvIGNyZWF0ZSBhIHNpbXBsZSBuYW1lL3ZhbHVlIHBhaXIgZm9yIHlvdXIgT3BlbkdyYXBoIE9iamVjdC48L2xpPgo8bGk+PGNvZGU+e2NnZmJfb2dfdGl0bGV9PC9jb2RlPiBJcyB1c2VkIHRvIHNldCB0aGUgJnF1b3Q7b2c6dGl0bGUmcXVvdDsgYXR0cmlidXRlLjwvbGk+CjxsaT48Y29kZT57Y2dmYl9vZ190eXBlfTwvY29kZT4gSXMgdXNlZCB0byBzZXQgdGhlICZxdW90O29nOnR5cGUmcXVvdDsgYXR0cmlidXRlLjwvbGk+CjxsaT48Y29kZT57Y2dmYl9vZ19pbWFnZX08L2NvZGU+IElzIHVzZWQgdG8gc2UgdGhlICZxdW90O29nOmltYWdlJnF1b3Q7IGF0dHJpYnV0ZS48L2xpPgo8bGk+PGNvZGU+e2NnZmJfb2dfc2l0ZW5hbWV9PC9jb2RlPiBJcyB1c2VkIHRvIHNldCB0aGUgJnF1b3Q7b2c6c2l0ZW5hbWUmcXVvdDsgYXR0cmlidXRlLjwvbGk+CjxsaT48Y29kZT57Y2dmYl9vZ19hZG1pbnN9PC9jb2RlPiBJcyB1c2VkIHRvIHNldCB0aGUgJnF1b3Q7ZmI6YWRtaW5zJnF1b3Q7IGF0dHJpYnV0ZS48L2xpPgo8bGk+PGNvZGU+e2NnZmJfb2dfbWV0YX08L2NvZGU+IEdhdGhlcnMgYWxsIHRoZSBvcGVuZ3JhcGggYXR0cmlidXRlcyB0aGF0IGhhdmUgYmVlbiBzZXQsIGFuZCBhcHBsaWVzIHNvbWUgaW50ZWxpZ2VudCBkZWZhdWx0cyB0byB0aG9zZSB0aGF0IGhhdmUgbm90IGJlZW4gc2V0LCBhbmQgb3V0cHV0cyB0aGUgYXBwcm9wcmlhdGUgbWV0YSB0YWdzLjwvbGk+CjwvdWw+PGJyLz4KPHA+VGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbmdyYXBocHJvdG9jb2wub3JnIj5PcGVuIEdyYXBoIFByb3RvY29sPC9hPiBlc3NlbnRpYWxseSBhbGxvd3MgeW91IHRvIGRlc2NyaWJlIHJlYWwgd29ybGQgb2JqZWN0cyB1c2luZyBtZXRhIHRhZ3MgYW5kIEhUTUwgY29udGVudC4gIFdoZW4gdGhlIE9wZW4gR3JhcGggUHJvdG9jb2wgRmFjZWJvb2sgd2lsbCBlc3NlbnRpYWxseSB0cmVhdCB5b3VyIHdlYiBwYWdlIGFzIGEgJnF1b3Q7RmFjZWJvb2sgUGFnZSZxdW90OyBhbmQgdGhlIHN0cnVjdHVyZWQgZGF0YSB5b3UgcHJvdmlkZSBkZWZpbmVzIGhvdyB5b3VyIHBhZ2Ugd2lsbCBiZSBwcmVzZW50ZWQgdG8gZmFjZWJvb2suPC9wPgo8cD5JbXBsZW1lbnRpbmcgdGhlIE9wZW4gR3JhcGggUHJvdG9jb2wgaW4geW91ciBwYWdlIGlzIDxlbT51c3VhbGx5PC9lbT4gYXMgc2ltcGxlIGFzIGFkZGluZyB7Y2dmYl9vZ19tZXRhfSBpbnRvIHRoZSBoZWFkIHNlY3Rpb24gb2YgeW91ciBwYWdlIHRlbXBsYXRlLCBhbmQgdGhlbiBhZGRpbmcgdGhlIGFwcHJvcHJpYXRlIGF0dHJpYnV0ZXMgdG8gZGVzY3JpYmUgeW91ciBvYmplY3QgaW4gdGhlIGFwcHJvcHJpYXRlIG1vZHVsZSB0ZW1wbGF0ZSwgR0NCIG9yIHBhZ2UgY29udGVudCBibG9jay4gIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSB3aWxsIGNyZWF0ZSBvcGVuZ3JhcGggb2JqZWN0cyBvbiBlYWNoIHByb2R1Y3QgZGV0YWlsIHBhZ2UuPC9wPgo8dWw+CjxsaT4xLiAgRW5zdXJlIHRoYXQgJnF1b3Q7cHJvY2Vzc193aG9sZV90ZW1wbGF0ZSZxdW90OyBpcyBzZXQgdG8gJnF1b3Q7ZmFsc2UmcXVvdDsgaW4geW91ciBjb25maWcucGhwPC9saT4KPGxpPjIuICBBZGQgdGhlIHtjZ2ZnX29nX21ldGF9IHRhZyBzb21ld2hlcmUgaW4gdGhlICZsdDtoZWFkJmd0OyBzZWN0aW9uIG9mIHlvdXIgcGFnZSB0ZW1wbGF0ZS4gIE9wdGlvbmFsbHksIHlvdSBtYXkgYWRkIGl0IGluIHRoZSAmcXVvdDtQYWdlIFNwZWNpZmljIE1ldGFkYXRhJnF1b3Q7IHNlY3Rpb24gb2YgdGhlIHBhZ2UgdGhhdCB5b3UgdXNlIGZvciBhIFByb2R1Y3RzIERldGFpbCBWaWV3LjwvbGk+CjxsaT4zLiAgSW4gdGhlIGRlZmF1bHQgUHJvZHVjdHMgZGV0YWlsIHRlbXBsYXRlIGFkZCB0aGUgZm9sbG93aW5nIGxpbmVzOgo8YnIvPgo8cHJlPjxzcGFuIHN0eWxlPSJjb2xvcjpncmVlbjsiPntjZ2ZiX29nX3RpdGxlIHRpdGxlPSRlbnRyeS0+cHJvZHVjdF9uYW1lfTxici8+e2NnZmJfb2dfdHlwZSB0eXBlPSdwcm9kdWN0J308L3NwYW4+PC9wcmU+CjwvcHJlPgo8L2xpPgo8L3VsPgo8YnIvPjxwPk9uY2UgeW91IGJyb3dzZSB0byBhIGRldGFpbCB2aWV3IG9mIGEgcHJvZHVjdCwgYW5kIHZpZXcgdGhlIHNvdXJjZSwgeW91IHNob3VsZCBub3cgc2VlIHRoZSBPcGVuIEdyYXBoIG1ldGEgdGFncyBpbiB0aGUgcGFnZSBoZWFkZXIuICBOb3cgd2hlbiBjb21iaW5lZCB3aXRoIGEgbGlrZSBidXR0b24gYXMgZGVzY3JpYmVkIGFib3ZlLCB5b3VyIHdlYnNpdGUgaW50ZWdyYXRpb24gaXMgbmVhcmx5IGRvbmUuPC9wPgoKPGJyLz48aDQ+PHU+U2ltcGxlIEZhY2Vib29rIEFwcGxpY2F0aW9uczo8L3U+PC9oND4KPHVsPgogPGxpPjxjb2RlPntjZ2ZiX2luaXR9PC9jb2RlPiBXaWxsIG91dHB1dCB0aGUgamF2YXNjcmlwdCB0byBpbml0aWFsaXplIHRoZSBGYWNlYm9vayBKYXZhc2NyaXB0IEFQSTwvbGk+CiA8bGk+PGNvZGU+e2NnZmJfbG9naW59PC9jb2RlPiBXaWxsIGRpc3BsYXkgYSBGYWNlYm9vayBsb2dpbiBidXR0b24uPC9saT4KIDxsaT48Y29kZT57Y2dmYl9sb2dvdXR9PC9jb2RlPiBXaWxsIGRpc3BsYXkgYSBGYWNlYm9vayBsb2dvdXQgYnV0dG9uLjwvbGk+CiA8bGk+PGNvZGU+e2NnZmJfdWlkfTwvY29kZT4gV2lsbCBkaXNwbGF5IHRoZSB1c2VycyBGYWNlYm9vayBVc2VyIElELjwvbGk+CiA8bGk+PGNvZGU+e2NnZmJfaW52aXRlfTwvY29kZT4gV2lsbCBkaXNwbGF5IGFuIGFkdmFuY2VkIGZvcm0gYWxsb3dpbmcgeW91ciB1c2VycyB0byBpbnZpdGUgdGhlaXIgZnJpZW5kcyB0byB5b3VyIGFwcGxpY2F0aW9uLjwvbGk+CiA8bGk+PGNvZGU+e2NnZmJfbWV9PC9jb2RlPiBXaWxsIHJldHVybiBhbGwgb2YgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IEZhY2Vib29rIFVzZXIgdGhhdCBoZSBoYXMgYWxsb3dlZCB5b3UgdG8gc2VlLjwvbGk+CiA8bGk+PGNvZGU+e2NnZmJfYXBpfTwvY29kZT4gQ2FuIG1ha2UgYW55IHJlcXVlc3QgdG8gdGhlIGphdmFzY3JpcHQgR1JBUEggQVBJLjwvbGk+CiA8bGk+PGNvZGU+e2NnZmJfYXBwfTwvY29kZT4gV2lsbCByZXRyaWV2ZSB0aGUgaW5mb3JtYXRpb24gYWJvdXQgeW91ciBmYWNlYm9vayBhcHBsaWNhdGlvbi48L2xpPgogPGxpPjxjb2RlPntjZ2ZiX3NlbmR9PC9jb2RlPiBDYW4gc2VuZCBhIGNvbW1hbmQgdG8gdGhlIEZhY2Vib29rIEdyYXBoIEFQSSB2aWEgUE9TVC48L2xpPgogPGxpPjxjb2RlPntjZ2ZiX3dhbGxwb3N0fTwvY29kZT4gVXNlcyB0aGUgRmFjZWJvb2sgUkVTVCBBUEkgdG8gY3JlYXRlIGEgd2FsbCBwb3N0IGZvciB0aGUgY3VycmVudCBGYWNlYm9vayBVc2VyLjwvbGk+CiA8bGk+PGNvZGU+e2NnZmJfc3RhdHVzfTwvY29kZT4gVXNlcyB0aGUgRmFjZWJvb2sgUkVTVCBBUEkgdG8gY3JlYXRlIGEgc3RhdHVzIHBvc3QgZm9yIHRoZSBjdXJyZW50IEZhY2Vib29rIFVzZXIuPC9saT4KIDxsaT48Y29kZT57Y2dmYl9mcWx9PC9jb2RlPiBVc2luZyB0aGUgRmFjZWJvb2sgUkVTVCBBUEkgc2VuZCB0byBzZW5kIGFuIEZRTCBxdWVyeS48L2xpPgogPGxpPjxjb2RlPntjZ2ZiX2ZxbF9tdWx0aX08L2NvZGU+IFVzaW5nIHRoZSBGYWNlYm9vayBSRVNUIEFQSSBzZW5kIHRvIG11bHRpcGxlIEZRTCBxdWVyaWVzIGluIGEgc2luZ2xlIHJlcXVlc3QgPGVtPihiZWNhdXNlIEZRTCBkb2VzIG5vdCBzdXBwb3J0IGpvaW5zKTwvZW0+LjwvbGk+CiA8bGk+PGNvZGU+e2NnZmJ1c2VyZGF0YV9nZXR9PC9jb2RlPiBXaWxsIHJldHJpZXZlIHRoZSBpbmZvcm1hdGlvbiB5b3UgaGF2ZSBzdG9yZWQgYWJvdXQgdGhpcyB1c2VyIGZyb20gdGhlIGRhdGFiYXNlLjwvbGk+CiA8bGk+PGNvZGU+e2NnZmJ1c2VyZGF0YV9zZXR9PC9jb2RlPiBXaWxsIHN0b3JlIHNlbGVjdGVkIGluZm9ybWF0aW9uIGZvciB0aGlzIGZhY2Vib29rIHVzZXIgaW50byB0aGUgZGF0YWJhc2UuPC9saT4KIDxsaT48Y29kZT57Y2dmYnVzZXJkYXRhX2VyYXNlfTwvY29kZT4gV2lsbCBlcmFzZSBhIHBvcnRpb24gb2YgdGhlIGdhdGhlcmVkIGluZm9ybWF0aW9uIGZvciB0aGlzIGZhY2Vib29rIHVzZXIgZnJvbSB0aGUgZGF0YWJhc2UuPC9saT4KIDxsaT48Y29kZT57Y2dmYnVzZXJkYXRhX2VyYXNldXNlcn08L2NvZGU+IFdpbGwgZXJhc2UgYWxsIGluZm9ybWF0aW9uIGZvciB0aGlzIGZhY2Vib29rIHVzZXIgZnJvbSB0aGUgZGF0YWJhc2UuPC9saT4KIDxsaT48Y29kZT57Y2dmYnVzZXJkYXRhX2FwcGZyaWVuZHN9PC9jb2RlPiBXaWxsIHJldHJpZXZlIGEgbGlzdCBvZiB0aGUgdXNlcnMgZnJpZW5kcyB0aGF0IGFsc28gaGF2ZSBpbmZvcm1hdGlvbiBpbiB0aGUgZGF0YWJhc2UuPC9saT4KPC91bD48YnIvPgogPHA+Q3JlYXRpbmcgYSBmYWNlYm9vayBhcHBsaWNhdGlvbiBpbnZvbHZlcyBudW1lcm91cyBzdGVwczo8L3A+Cjx1bD4KIDxsaT4xLiAgQ3JlYXRlIGEgQ01TTVMgcGFnZSB0ZW1wbGF0ZSB0aGF0IGRpc3BsYXlzIGNvcnJlY3RseSBpbiBhIHdpZHRoIGZvIDc2MCBwaXhlbHMuICAoRm9yIGZ1dHVyZSByZWZlcmVuY2UgSSB3aWxsIHJlZmVyIHRvIHRoaXMgdGVtcGxhdGUgYXMgdGhlIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPmZiX2NhbnZhczwvc3Bhbj4gdGVtcGxhdGUuKTwvbGk+CiA8bGk+Mi4gIENyZWF0ZSBhIG5ldyBwYWdlIGluIHlvdXIgQ01TTVMgcGFnZSBoaWVyYXJjaHkgdGhhdCB1c2VzIHRoZSA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij5mYl9jYW52YXM8L3NwYW4+IHRlbXBsYXRlLiAgRm9yIHJlZmVyZW5jZSBwdXJwb3NlcyBsZXRzIGNhbGwgdGhpcyB0aGUgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+bXlfYXBwPC9zcGFuPiBwYWdlLjwvbGk+CiA8bGk+My4gIFJlZ2lzdGVyaW5nIGEgZmFjZWJvb2sgYXBwbGljYXRpb24gYXQ6IDxhIGhyZWY9Imh0dHA6Ly93d3cuZmFjZWJvb2suY29tL2RldmVsb3BlcnMvY3JlYXRlYXBwLnBocCI+aHR0cDovL3d3dy5mYWNlYm9vay5jb20vZGV2ZWxvcGVycy9jcmVhdGVhcHAucGhwPC9hPjwvbGk+CiA8bGk+NC4gIFNldHRpbmcgdXAgeW91ciBmYWNlYm9vayBhcHBsaWNhdGlvbiBmb3IgY29tcGF0aWJpbGl0eSwgYW5kIGVhc3kgaW50ZWdyYXRpb24gd2l0aCBDTVNNUy4gIEkgd2lsbCBub3QgZ28gdGhyb3VnaCB0aGUgZGV0YWlsIG9mIGFsbCBvZiB0aGUgc2V0dGluZ3MgeW91IHNob3VsZCBjaGFuZ2UuICBIb3dldmVyIHlvdSBzaG91bGQgZ2l2ZSB5b3VyIGNhbnZhcyBwYWdlIGEgbmFtZSwgYW5kIHNwZWNpZnkgdGhlIGZ1bGwgdXJsIHRvIHRoZSA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij5teV9hcHA8L3NwYW4+IHBhZ2UgdGhhdCB3aWxsIHJlcHJlc2VudCB5b3VyIGNhbnZhcyBwYWdlLiAgWW91IGFsc28gc2hvdWxkIHNwZWNpZnkgdGhlICZxdW90O0NhbnZhcyBUeXBlJnF1b3Q7IGFzICZxdW90O0lmcmFtZSZxdW90Ozxici8+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBJdCBhcHBlYXJzIHRoYXQgZmFjZWJvb2sgcmVxdWlyZXMgYSAmcXVvdDtmb2xkZXImcXVvdDsgYmUgc3BlY2lmaWVkIGZvciB0aGUgQ2FudmFzIFVSTCwgeW91IG1heSBoYXZlIHRvIGVkaXQgeW91ciBzZXR0aW5ncyBpbiB0aGUgY29uZmlnLnBocCBmaWxlIChpLmUgZW5hYmxlIHByZXR0eSB1cmxzLCBhbmQgcmVtb3ZlIGEgcGFnZSBleHRlbnNpb24pIGZvciBmYWNlYm9vayB0byBiZSBoYXBweS48L2xpPgogPGxpPjUuICBJbiB0aGUgJnF1b3Q7Q2FsZ3V5cyBGYWNlYm9vayBUb29sa2l0JnF1b3Q7IGFkbWluIHBhbmVsIGZpbGwgaW4gdGhlICZxdW90O0FwcGxpY2F0aW9uIElEJnF1b3Q7IGFuZCB0aGUgJnF1b3Q7QXBwIFNlY3JldCZxdW90OyBhcyBzcGVjaWZpZWQgYnkgZmFjZWJvb2suICBZb3Ugc2hvdWxkIGFsc28gc2VsZWN0IHRoZSBwZXJtaXNzaW9ucyB0aGF0IHlvdXIgYXBwbGljYXRpb24gd2lsbCBuZWVkIGFzIGRlZmluZWQgPGEgaHJlZj0iaHR0cDovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL2RvY3MvYXV0aGVudGljYXRpb24vcGVybWlzc2lvbnMiPmhlcmU8L2E+Ljxici8+PHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBJdCBpcyBwcm9iYWJseSBhIGdvb2QgaWRlYSB0byByZXN0cmljdCB0aGUgbnVtYmVyIG9mIHBlcm1pc3Npb25zIHlvdSBzZWxlY3QgdG8gYXMgbGl0dGxlIGFzIHBvc3NpYmxlIGluIG9yZGVyIHRvIGdldCB3aWRlciBhY2NlcHRhbmNlIGZvciB5b3VyIGFwcGxpY2F0aW9uLjwvbGk+CiA8bGk+Ni4gIFdoZW4gZWRpdGluZyB5b3VyIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPmZiX2NhbnZhczwvc3Bhbj4gcGFnZSB0ZW1wbGF0ZSwgYWRkIHRoZSA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYl9pbml0fTwvc3Bhbj4gdGFnIGRpcmVjdGx5IGFmdGVyIHRoZSBvcGVuaW5nICZsdDtib2R5Jmd0OyB0YWcuICAgWW91IG1heSBhbHNvIGFkZCB0aGUgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJfbG9naW59PC9zcGFuPiB0YWcgaW50byBhbiBhcHByb3ByaWF0ZSBzZWN0aW9uIG9mIHRoZSB0ZW1wbGF0ZSAoaW4gdGhlIGhlYWRlciBiYXIgb3IgYSBzaWRlYmFyIGV0YykuICBUaGlzIHdpbGwgYm90aCBpbml0aWFsaXplIHRoZSBGYWNlYm9vayBBUEkgYW5kIHByb3ZpZGUgYSBsb2dpbiBidXR0b24uICBXaGVuIHZpc2l0b3JzIGNsaWNrIG9uIHRoZSBsb2dpbiBidXR0b24gdGhleSB3aWxsIGJlIGFza2VkIHRvIGFwcHJvdmUgdGhlIHBlcm1pc3Npb25zIHlvdSBoYXZlIHJlcXVlc3RlZC48L2xpPgogPGxpPjcuICBOb3cgd2UgYXJlIHJlYWR5IHRvIHN0YXJ0IHdpdGggdGhlIGZ1bmN0aW9uYWxpdHkgZm9yIG91ciBmYWNlYm9vayBhcHBsaWNhdGlvbi4gIFlvdSB3aWxsIHVzZSBhIGNvbWJpbmF0aW9uIG9mIHNtYXJ0eSBsb2dpYywgdGhlIHBsdWdpbnMgcHJvdmlkZWQgYmVsb3csIGFuZCB5b3VyIG93biBjb2RlLCBvciBvdGhlciBtb2R1bGVzIHRvIGJ1aWxkIHlvdXIgYXBwbGljYXRpb24uIEEgc21hbGwgZXhhbXBsZSBhcHBsaWNhdGlvbiBpcyBiZWxvdy48L2xpPgo8L3VsPjxici8+Cgo8aDM+U2FtcGxlIEFwcGxpY2F0aW9uOjwvaDM+CjxwPlRoZSBzYW1wbGUgYXBwbGljYXRpb24gaWxsdXN0cmF0ZWQgYmVsb3cgbmVlZHMgdGhlIHB1Ymxpc2hfc3RyZWFtLHVzZXJfbG9jYXRpb24sIGFuZCBmcmllbmRzX2xvY2F0aW9uIHBlcm1pc3Npb25zLiAgWW91IGNhbiBzZWxlY3QgdGhlc2UgaW4gdGhlIGFkbWluaXN0cmF0aW9uIHBhbmVsIGZvciB0aGUgbW9kdWxlLiAgWW91IHdpbGwgYWxzbyBuZWVkIHRvIHJlZ2lzdGFyIGEgZmFjZWJvb2sgYXBwbGljYXRpb24gYW5kIGZpbGwgaW4geW91ciBhcHBsaWNhdGlvbiBpZCwgYW5kIGFwcCBzZWNyZXQgaW50byB0aGUgYWRtaW4gcGFuZWwuPC9wPgo8cHJlPgo8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYl9pbml0fTwvc3Bhbj57KiBpbml0aWFsaXplIGZhY2Vib29rIGphdmFzY3JpcHQgU0RLICp9CjxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZiX2xvZ2lufTwvc3Bhbj57KiBwcm92aWRlIGEgbG9naW4gYnV0dG9uIHRvIGZhY2Vib29rICp9IDxici8+CjxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZiX3VpZCBhc3NpZ249J2ZiX3VpZCd9PC9zcGFuPnsqIGdldCB0aGUgZmFjZWJvb2sgdXNlciBpZCAqfQp7aWYgJGZiX3VpZH0KICB7KiB1c2VyIGlzIGxvZ2dlZCBpbiAqfQoKICB7KiBnZXQgaGlzIG9yIGhlciBmcmllbmRzIGZyaWVuZHMgbGlzdCAqfQogIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZiX2FwaSBjYWxsPScvbWUvZnJpZW5kcycgYXNzaWduPSdmcmllbmRzJ308L3NwYW4+CgogIHsqIGNyZWF0ZSBhbiBGUUwgcXVlcnkgKn0KICB7Y2FwdHVyZSBhc3NpZ249JnF1b3Q7ZnFsJnF1b3Q7fXNlbGVjdCBuYW1lLCBiaXJ0aGRheV9kYXRlLCBjdXJyZW50X2xvY2F0aW9uLCBzZXgsIHBpY19zcXVhcmUgZnJvbSB1c2VyIHdoZXJlIHVpZCBJTiAoU0VMRUNUIHVpZDIgRlJPTSBmcmllbmQgV0hFUkUgdWlkMT17JG1lLmlkfSl7L2NhcHR1cmV9CgogIHsqIGV4ZWN1dGUgYW4gRlFMIHF1ZXJ5ICp9CiAgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJfZnFsIGZxbD0kZnFsIGFzc2lnbj0ncmVzJ308L3NwYW4+CgogIHsqIHByb2Nlc3MgdGhlIHJlc3VsdHMgZnJvbSB0aGUgcXVlcnkgKn0KICB7aWYgaXNfYXJyYXkoJHJlcyl9CiAgICAge2Fzc2lnbiB2YXI9JnF1b3Q7bnVtX3BvaW50cyZxdW90OyB2YWx1ZT0wfQogICAgICAgCiAgICAgeyogZm9yIGVhY2ggZnJpZW5kICp9CiAgICAge2ZvcmVhY2ggZnJvbT0kcmVzIGl0ZW09JnF1b3Q7ZnJpZW5kJnF1b3Q7fQoKICAgICB7KiBpZiB3ZSBoYXZlIGEgbG9jYXRpb24gKn0KICAgICB7aWYgaXNzZXQoJGZyaWVuZC5jdXJyZW50X2xvY2F0aW9uKX0KCiAgICAgICAgeyogYnVpbGQgYSBsb2NhdGlvbiBzdHJpbmcgKn0KICAgICAgICB7YXNzaWduIHZhcj0mcXVvdDtudW1fcG9pbnRzJnF1b3Q7IHZhbHVlPSJgJG51bV9wb2ludHMrMWAifQogICAgICAgIHtjYXB0dXJlIGFzc2lnbj0mcXVvdDtsb2MmcXVvdDt9e3N0cmlwfQogICAgICAgICAgIHtpZiAkZnJpZW5kLmN1cnJlbnRfbG9jYXRpb24uY291bnRyeSA9PSAmcXVvdDtDYW5hZGEmcXVvdDsgb3IgJGZyaWVuZC5jdXJyZW50X2xvY2F0aW9uLmNvdW50cnkgPT0gJnF1b3Q7VW5pdGVkIFN0YXRlcyZxdW90O30KICAgICAgICAgICAgICAgeyRmcmllbmQuY3VycmVudF9sb2NhdGlvbi5jaXR5fSwgeyRmcmllbmQuY3VycmVudF9sb2NhdGlvbi5zdGF0ZX0geyRmcmllbmQuY3VycmVudF9sb2NhdGlvbi5jb3VudHJ5fQogICAgICAgICAgIHtlbHNlfQogICAgICAgICAgICAgICB7JGZyaWVuZC5jdXJyZW50X2xvY2F0aW9uLmNpdHl9IHskZnJpZW5kLmN1cnJlbnRfbG9jYXRpb24uY291bnRyeX0KICAgICAgICAgICB7L2lmfQogICAgICAgIHsvc3RyaXB9ey9jYXB0dXJlfQoKICAgICAgICB7KiBhZGQgYSBwb2ludCB0byBvdXIgbWFwICp9CiAgICAgICAge2NnZ21fYWRkX2R5bnBvaW50IG5hbWU9JGZyaWVuZC5uYW1lIGFkZHJlc3M9JGxvYyBkZXNjPSRmcmllbmQuc2V4fQogICAgIHsvaWZ9CiAgey9mb3JlYWNofQoKICB7aWYgJG51bV9wb2ludHMgZ3QgMH0KICAgICB7KiBkaXNwbGF5IHRoZSBtYXAgKn0KICAgICB7Q0dHb29nbGVNYXBzfQogIHsvaWZ9CgogIHsvaWZ9CnsvaWZ9PC9wcmU+Cgo8aDM+U21hcnR5IEZ1bmN0aW9uIFJlZmVyZW5jZTo8L2gzPgo8dWw+CiA8bGk+U29jaWFsIFBsdWdpbnM6CiA8dWw+CiA8bGk+PGNvZGUgc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJfbGlrZSBbcGFyYW1zXV08L2NvZGU+CiA8cD5DcmVhdGUgYSAmcXVvdDtMaWtlJnF1b3Q7IEJ1dHRvbiBmb3IgYSBVUkwuPGJyLz5QYXJhbWV0ZXJzOgogICA8dWw+CiAgIDxsaT5ocmVmIC0gKHN0cmluZykgVGhlIFVSTCB0byBhbGxvdyBwZW9wbGUgdG8gbGlrZS4gIChkZWZhdWx0IGlzIHRoZSBjdXJyZW50IHBhZ2UgVVJMLik8L2xpPgogICA8bGk+bGF5b3V0IC0gKHN0cmluZykgVGhlIGxheW91dCBvZiBidXR0b24uICBQb3NzaWJsZSB2YWx1ZXMgYXJlIHN0YW5kYXJkLGJ1dHRvbl9jb3VudCxib3hfY291bnQuPC9saT4KICAgPGxpPnNob3dfZmFjZXMgLSAoYm9vbGVhbikgV2V0aGVyIHRvIHNob3cgZmFjZXMgb2YgdGhlIG90aGVycyB0aGF0IGhhdmUgbGlrZWQgdGhlIGl0ZW0uPC9saT4KICAgPGxpPmFjdGlvbiAtIChzdHJpbmcpIFRoZSBiZWF2aW91ciBvZiB0aGUgYnV0dG9uLCBQb3NzaWJsZSB2YWx1ZXMgYXJlIGxpa2UscmVjb21tZW5kLjwvbGk+CiAgIDxsaT53aWR0aCAtIChpbnQpIFRoZSB3aWR0aCBvZiB0aGUgbGlrZSBidXR0b24gaW4gcGl4ZWxzLjwvbGk+CiAgIDxsaT5mb250IC0gKHN0cmluZykgVGhlIHN0cmluZyB0byB1c2UgZm9yIHRoZSBmb3JtIG9yIGRpc3BsYXkuICBWYWx1ZXMgYXJlIGFyaWFsLGx1Y2lkZSBncmFuZGUsc2Vnb2UgdWwsdGFob21hLHZlcmRhbmE8L2xpPgogICA8bGk+Y29sb3JzY2hlbWUgLSAoc3RyaW5nKSBUaGUgY29sb3Igc2NoZW1lIGZvciB0aGUgZm9ybS4gIFZhbHVlcyBhcmUgbGlnaHQsZGFyazwvbGk+CiAgIDxsaT5yZWYgLSAoc3RyaW5nKSBBbiBvcHRpb25hbCByZWZlcmVuY2UgdmFsdWUgdG8gdXNlIGZvciBzdGF0aXN0aWNzIHB1cnBvc2VzLjwvbGk+CiAgIDxsaT5hc3NpZ24gLSAoc3RyaW5nKSAgQXNzaWduIHRoZSBvdXRwdXQgdG8gYSBzbWFydHkgdmFyaWFibGUuPC9saT4KICAgPC91bD4KICAgPC9wPjxici8+CiA8L2xpPiAgICAgIAoKIDxsaT48Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYl9jb21tZW50cyBbcGFyYW1zXX08L2NvZGU+CiA8cD5DcmVhdGUgYSBmb3JtIGFsbG93aW5nIGZhY2Vib29rIHVzZXJzIHRvIGxlYXZlIGNvbW1lbnRzIG9uIGEgcGFnZSwgb3Igb24gYW4gaXRlbS48YnIvPlBhcmFtZXRlcnM6CiA8dWw+CiAgIDxsaT51bmlxdWVpZCAtIChzdHJpbmcpIEEgdW5pcXVlIGlkZW50aWZpZXIgdG8gdXNlIHRvIGlkZW50aWZ5IHRoZSBpdGVtIHRoYXQgaXMgYmVpbmcgY29tbWVudGVkIG9uLiAoZGVmYXVsdCBpcyBhIGhhc2ggb2YgdGhlIGN1cnJlbnQgcGFnZSB1cmwpLjwvbGk+CiAgIDxsaT53aWR0aCAtIChpbnQpIFRoZSBtYXhpbXVtIHdpZHRoIG9mIHRoZSBmb3JtIGluIHBpeGVscy4gKGRlZmF1bHQgaXMgNDI1KTwvbGk+CiAgIDxsaT5uY29tbWVudHMgLSAoaW50KSBUaGUgbWF4aW11bSBudW1iZXIgb2YgY29tbWVudHMgdG8gZGlzcGxheSBhdCBvbmUgdGltZS4gIChkZWZhdWx0IGlzIDEwKTwvbGk+CiAgIDxsaT5wdWJsaXNoIC0gKGJvb2xlYW4pIFdldGhlciB0aGUgJnF1b3Q7cHVibGljIGNvbW1lbnQmcXVvdDsgY2hlY2tib3ggc2hvdWxkIGJlIGRpc3BsYXllZC48L2xpPgogICA8bGk+YXNzaWduIC0gKHN0cmluZykgIEFzc2lnbiB0aGUgb3V0cHV0IHRvIGEgc21hcnR5IHZhcmlhYmxlLjwvbGk+CiA8L3VsPgogPC9wPjxici8+CiA8L2xpPgoKPC91bD4KPC9saT4KCjxsaT5PcGVuR3JhcGggUGx1Z2luczoKPHVsPgogIDxsaT48Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYl9vZ192YWx1ZSBuYW1lPSZsdDtzdHJpbmcmZ3Q7IHZhbHVlPSZsdDtzdHJpbmcmZ3Q7fTwvY29kZT4KICA8cD5DcmVhdGUgYSBuYW1lL3ZhbHVlIHBhaXIgdG8gb3V0cHV0IHdpdGggaW5mb3JtYXRpb24gZm9yIHRoZSBPcGVuR3JhcGggQVBJLiAgVGhlc2UgbmFtZS92YWx1ZSBwYWlycyB3aWxsIGJlIGNvbGxlY3RlZCBhbmQgb3V0cHV0IHdpdGggdGhlIHtjZ2ZiX29nX21ldGF9IHRhZy4gIElmIHRoZSBuYW1lIGhhcyBhbHJlYWR5IGJlZW4gc2V0LCB0aGVuIHRoaXMgb3BlcmF0aW9uIHdpbGwgb3ZlcndyaXRlIGl0cyB2YWx1ZS4gVGhpcyB0YWcgaXMgbm9ybWFsbHkgY2FsbGVkIGZyb20gd2l0aGluIHRoZSBib2R5IG9mIGEgcGFnZSB0ZW1wbGF0ZSAodXNpbmcgdGhlIGRlZmF1bHQgdGVtcGxhdGUgY29uZGl0aW9ucyBpbiBDTVNNUykuPGJyLz5QYXJhbWV0ZXJzOgogICA8dWw+CiAgICAgIDxsaT5uYW1lIC0gKHN0cmluZykgVGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlLjwvbGk+CiAgICAgIDxsaT52YWx1ZSAtIChzdHJpbmcpIFRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUuPC9saT4KICAgPC91bD4KICA8L3A+PGJyLz4KICA8L2xpPgoKICA8bGk+PGNvZGUgc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJfb2dfdGl0bGUgdGl0bGU9Jmx0O3N0cmluZyZndDt9PC9jb2RlPgogIDxwPlNldCB0aGUgb2c6dGl0bGUgYXR0cmlidXRlLCB0aGlzIHBsdWdpbiBpcyBlc3NlbnRpYWxseSBhIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgdGhlIHtjZ2ZiX29nX3ZhbHVlfSBwbHVnaW4uPGJyLz5QYXJhbWV0ZXJzOgogIDx1bD4KICA8bGk+dGl0bGUgLSAoc3RyaW5nKSBUaGUgdGl0bGUgb2YgdGhlIG9iamVjdCBiZWluZyBkZXNjcmliZWQuPC9saT4KICA8L3VsPgogIDwvcD48YnIvPgogIDwvbGk+CgogIDxsaT48Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYl9vZ190eXBlIHR5cGU9Jmx0O3N0cmluZyZndDt9PC9jb2RlPgogIDxwPlNldCB0aGUgb2c6dHlwZSBhdHRyaWJ1dGUsIHRoaXMgcGx1Z2luIGlzIGVzc2VudGlhbGx5IGEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiB0aGUge2NnZmJfb2dfdmFsdWV9IHBsdWdpbi48YnIvPlBhcmFtZXRlcnM6CiAgPHVsPgogIDxsaT50eXBlIC0gKHN0cmluZykgVGhlIG9iamVjdCB0eXBlLiAgT25lIG9mOiBhY3Rpdml0eSwgc3BvcnQsIGJhciwgY29tcGFueSwgY2FmZSwgaG90ZWwsIHJlc3RhcmF1bnQsIGNhdXNlLCBzcG9ydHNfbGVhZ3VlLCBzcG9ydHNfdGVhbSwgYmFuZCwgZ292ZXJubWVudCwgbm9uX3Byb2ZpdCwgc2Nob29sLCB1bml2ZXJzaXR5LCBhY3RvciwgYXRobGV0ZSwgYXV0aG9yLCBkaXJlY3RvciwgbXVzaWNpYW4sIHBvbGl0aWNpYW4sIHB1YmxpY19maWd1cmUsIGNpdHksIGNvdW50cnksIGxhbmRtYXJrLCBzdGF0ZV9wcm92aW5jZSwgYWxidW0sIGRyaW5rLCBmb29kLCBnYW1lLCBwcm9kdWN0LCBzb25nLCBtb3ZpZSwgdHZfc2hvdywgYmxvZywgd2Vic2l0ZSwgYXJ0aWNsZTwvbGk+CiAgPC91bD4KICA8L3A+PGJyLz4KICA8L2xpPgoKICA8bGk+PGNvZGUgc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJfb2dfdXJsIHVybD0mbHQ7c3RyaW5nJmd0O308L2NvZGU+CiAgPHA+U2V0IHRoZSBjYW5vbmljYWwgdXJsIHRvIHRoZSBvYmplY3QgKG9nOnVybCkuICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyBwYXJhbWV0ZXIgaXMgdGhlIGN1cnJlbnQgcGFnZSB1cmwuPC9wPgogIDx1bD4KICA8bGk+dXJsIC0gKHN0cmluZykgVGhlIGNhbm9uaWNhbCBVUkwgdG8gdGhlIG9iamVjdC48L2xpPgogIDwvdWw+CiAgPC9wPjxici8+CiAgPC9saT4KCiAgPGxpPjxjb2RlIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZiX29nX2ltYWdlIGltYWdlPSZsdDtzdHJpbmcmZ3Q7fTwvY29kZT4KICA8cD5TZXQgdGhlIHVybCBvZiBhbiBpbWFnZSB3aGljaCBzaG91bGQgcmVwcmVzZW50IHRoZSBvYmplY3QgaW4gdGhlIGdyYXBoLjwvcD4KICA8dWw+CiAgPGxpPmltYWdlIC0gKHN0cmluZykgQSBVUkwgdG8gYW4gaW1hZ2UgKEpQRyxQTkcsIGFuZCBHSUYgYXJlIHN1cHBvcnRlZCkKICA8L3VsPgogIDwvcD48YnIvPgogIDwvbGk+CgogIDxsaT48Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYl9vZ19zaXRlbmFtZSBzaXRlbmFtZT0mbHQ7c3RyaW5nJmd0O308L2NvZGU+CiAgPHA+U2V0IGEgaHVtYW4gcmVhZGFibGUgbmFtZSBmb3IgeW91ciB3ZWJzaXRlLiAgIGkuZTogJnF1b3Q7RnJlZHMgUHJvZHVjdHMmcXVvdDsuICBJZiBubyB2YWx1ZSBpcyBzcGVjaWZpZWQgZm9yIHRoaXMgcHJvcGVydHkgdGhlIGN1cnJlbnQgd2ViIHNpdGUgbmFtZSB3aWxsIGJlIHVzZWQuLgogIDx1bD4KICA8bGk+c2l0ZW5hbWUgLSAoc3RyaW5nKSBUaGUgU2l0ZSBuYW1lLjwvbGk+CiAgPC91bD4KICA8L3A+PGJyLz4KICA8L2xpPgoKICA8bGk+PGNvZGUgc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJfb2dfZGVzYyBkZXNjPSZsdDtzdHJpbmcmZ3Q7fTwvY29kZT4KICA8cD4ob2c6ZGVzY3JpcHRpb24pIFNldCBhIGJyaWVmIGRlc2NyaXB0aW9uIGZvciB0aGUgb2JqZWN0LiAgT25lIG9yIHR3byBzZW50ZW5jZXMuCiAgPHVsPgogIDxsaT5kZXNjIC0gKHN0cmluZykgVGhlIERlc2NyaXB0aW9uLgogIDwvdWw+CiAgPC9wPjxici8+CiAgPC9saT4KCiAgPGxpPjxjb2RlIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZiX29nX2FkbWlucyBhZG1pbnM9Jmx0O3N0cmluZyZndDt9PC9jb2RlPgogIDxwPihmYjphZG1pbnMpIFNldCB0aGUgbGlzdCBvZiBmYWNlYm9vayBhZG1pbnMgZm9yIHRoaXMgb2JqZWN0LgogIDx1bD4KICA8bGk+YWRtaW5zIC0gKHN0cmluZykgQSBjb21tYSBzYXBhcmF0ZWQgbGlzdCBvZiBmYWNlYm9vayB1c2VyIGlkcyBvciBhICBGYWNlYm9vayBQbGF0Zm9ybSBhcHBsaWNhdGlvbiBpZC4KICA8L3VsPgogIDwvcD48YnIvPgogIDwvbGk+CgogIDxsaT48Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYl9tZXRhIFtwYXJhbXNdfTwvY29kZT4KICA8cD5UaGlzIHBsdWdpbiB3aWxsIGdhdGhlciBhbGwgb2YgdGhlIHByZXNldCBPcGVuR3JhcGggdmFyaWFibGVzLCBhcHBseSBzb21lIGludGVsbGlnZW50IGRlZmF1bHQgdmFsdWVzIGZvciBwYXJhbWV0ZXJzIG5vdCBzcGVjaWZpZWQsIGFuZCBnZW5lcmF0ZSB0aGUgYXBwcm9wcmlhdGUgbWV0YSB0YWdzLiAgVGhpcyBwbHVnaW4gaXMgdHlwaWNhbGx5IGNhbGxlZCB3aXRoaW4gdGhlIGhlYWQgc2VjdGlvbiBvZiB0aGUgcGFnZSB0ZW1wbGF0ZS4gIFRoZSBvdGhlciBjZ2ZiX29nKiBwbHVnaW5zIGFyZSBjYWxsZWQgZnJvbSB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIHBhZ2UgdGVtcGxhdGUgKHdpdGhlciB3aXRoaW4gdGhlIHBhZ2UgdGVtcGxhdGUgaXRzZWxmLCBvciBpbnNpZGUgb2YgYSBjb250ZW50IGJsb2NrLCBvciBldmVuIGluc2lkZSBvZiBhIEdDQiBvciBtb2R1bGUgdGVtcGxhdGUuICBUaGVuIGJlY2F1c2UgKGJ5IGRlZmF1bHQpIHByb2Nlc3Nfd2hvbGVfdGVtcGxhdGUgaXMgRkFMU0UgaW4gdGhlIGNvbmZpZy5waHAgZmlsZSBvZiBDTVNNUyB0aGlzIGZ1bmN0aW9uIGlzIHByb2Nlc3NlZCBBRlRFUiB0aGUgYm9keSBvZiB0aGUgdGVtcGxhdGUuPGJyLz5QYXJhbWV0ZXJzOgogIDx1bD4KICA8bGk+YXNzaWduIC0gKHN0cmluZykgQSBzbWFydHkgdmFyaWFibGUgbmFtZSB0byBhc3NpZ24gdGhlIG91dHB1dCB0by4KICA8L3VsPgogIDwvcD48YnIvPgogIDwvbGk+Cgo8L3VsPgo8L2xpPgoKPGxpPkFwcGxpY2F0aW9uIEJ1aWxkaW5nIFBsdWdpbnM6Cjx1bD4KIDxsaT48Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYl9pbml0IFtwYXJhbXNdfTwvY29kZT4KICAgPHA+SW5pdGlhbGl6ZXMgdGhlIEZhY2Vib29rIEphdmFzY3JpcHQgQVBJPGJyLz4KICAgICAgIFBhcmFtZXRlcnM6CiAgICAgICA8dWw+CiAgICAgICA8bGk+YXN5bmMgLSAoYm9vbGVhbikgRW5hYmxlIEFzeW5jaHJvbm91cyBBUEkgSW5pdGlhbGl6YXRpb24gKGRlZmF1bHQgPSBmYWxzZSk8L2xpPgogICAgICAgPGxpPmFzc2lnbiAtIChzdHJpbmcpICBBc3NpZ24gdGhlIG91dHB1dCB0byBhIHNtYXJ0eSB2YXJpYWJsZS48L2xpPgogICAgICAgPC91bD4KICAgPC9wPjxici8+CiA8L2xpPgoKIDxsaT48Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYl91aWR9PC9jb2RlPgogPHA+UmV0dXJuIHRoZSBVSUQgIG9mIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIEZhY2Vib29rIFVzZXIuPGJyLz5QYXJhbWV0ZXJzOgogPHVsPgogICAgPGxpPmFzc2lnbiAtIChzdHJpbmcpICBBc3NpZ24gdGhlIG91dHB1dCB0byBhIHNtYXJ0eSB2YXJpYWJsZS48L2xpPgogPC91bD4KIDwvcD48YnIvPgogPC9saT4KCiA8bGk+PGNvZGUgc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJfbWUgYXNzaWduPSZsdDtzdHJpbmcmZ3Q7fTwvY29kZT4KIDxwPlJldHVybiBhbGwgb2YgdGhlIGluZm9ybWF0aW9uIHRoYXQgdGhlIGZhY2Vib29rIHVzZXIgaGFzIHNoYXJlZCB3aXRoIHRoZSBhcHBsaWNhdGlvbi48YnIvPlBhcmFtZXRlcnM6CiA8dWw+CiAgICA8bGk+YXNzaWduIC0gKHN0cmluZykgIEFzc2lnbiB0aGUgb3V0cHV0IHRvIGEgc21hcnR5IHZhcmlhYmxlLjwvbGk+CiA8L3VsPgogPC9wPjxici8+CiA8cHJlPkV4YW1wbGU6IDxjb2RlPntjZ2ZiX21lIGFzc2lnbj0mcXVvdDttZSZxdW90O317JG1lfEBwcmludF9yfTwvY29kZT48L3ByZT48YnIvPgogPC9saT4KCiA8bGk+PGNvZGUgc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJfYXBpIGNhbGw9Jmx0O3N0cmluZyZndDsgYXNzaWduPSZsdDtzdHJpbmcmZ3Q7fTwvY29kZT4KIDxwPlBlcmZvcm0gYSBHRVQgcmVxdWVzdCB0byB0aGUgRmFjZWJvb2sgR3JhcGggQVBJLCBhbmQgYXNzaWduIHRoZSByZXN1bHRzIHRvIGEgc21hcnR5IHZhcmlhYmxlLjxici8+UGFyYW1ldGVyczoKIDx1bD4KICAgIDxsaT5jYWxsIC0gKHN0cmluZykgIFRoZSBmYWNlYm9vayBHUkFQSCBBUEkgbWV0aG9kIHRvIGNhbGwuPC9saT4KICAgIDxsaT5hc3NpZ24gLSAoc3RyaW5nKSAgQXNzaWduIHRoZSBvdXRwdXQgdG8gYSBzbWFydHkgdmFyaWFibGUuPC9saT4KIDwvdWw+CiA8L3A+PGJyLz4KIDxwcmU+RXhhbXBsZTogPGNvZGU+e2NnZmJfYXBpIGNhbGw9JnF1b3Q7L21lL2ZyaWVuZHMmcXVvdDsgYXNzaWduPSZxdW90O2ZyaWVuZHMmcXVvdDt9eyRmcmllbmRzfEBwcmludF9yfTwvY29kZT48L3ByZT48YnIvPgogPC9saT4KCiA8bGk+PGNvZGUgc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJfc2VuZCB1cmw9Jmx0O3N0cmluZyZndDsgYXNzaWduPSZsdDtzdHJpbmcmZ3Q7IC4uLn08L2NvZGU+CiA8cD5QZXJmb3JtYSBQT1NUIHJlcXVlc3QgdG8gdGhlIEZhY2Vib29rIEdyYXBoIEFQSSB0byBDcmVhdGUgYSBuZXcgcmVjb3JkIChldmVudCwgbGlrZSwgaW1hZ2UsIGV0Yykgd2l0aGluIEZhY2Vib29rLjx1Pk5vdGU6PC91PiB0aGlzIGlzIGEgbm9uLXN0YW5kYXJkIHNtYXJ0eSBwbHVnaW4gYXMgaXQgaXMgbm90IGEgZGlzcGxheSBsZXZlbCBlbGVtZW50LCBpbnN0ZWFkIGl0IG1heSBub3QgcmV0dXJuIGFueSBvdXRwdXQgYXQgYWxsLiAgVGhpcyBtZXRob2Qgc2hvdWxkIG9ubHkgYmUgdXNlZCBpbnNpZGUgY29uZGl0aW9uYWxzIHRoYXQgYXJlIHRyaWdnZXJlZCBieSB1c2VyIGFjdGlvbnMuPGJyLz5QYXJhbWV0ZXJzOgogPHVsPgogICAgPGxpPnVyaSAtIChzdHJpbmcpICBUaGUgR3JhcGggQVBJIHRvIHB1dCB0by4uPC9saT4KICAgIDxsaT5hc3NpZ24gLSAoc3RyaW5nKSAgQXNzaWduIHRoZSBvdXRwdXQgdG8gYSBzbWFydHkgdmFyaWFibGUuPC9saT4KICAgIDxsaT48ZW0+T3RoZXIgUGFyYW1ldGVyczwvbGk+IC0gKG1peGVkKSBTcGVjaWZ5IHRoZSBkYXRhIHRvIHNlbmQgdG8gdGhlIGZhY2Vib29rIGdyYXBoIEFQSS4KIDwvdWw+CiA8L3A+PGJyLz4KIDxwcmU+RXhhbXBsZTo8YnIvPjxjb2RlPntpZiBpc3NldCgkc21hcnR5LmdldC50ZWxsX215X2ZyaWVuZHMpfTxici8+e2NnZmJfYXBpIGNhbGw9JnF1b3Q7L21lL2ZyaWVuZHMmcXVvdDsgYXNzaWduPSZxdW90O2ZyaWVuZHMmcXVvdDt9PGJyLz57Zm9yZWFjaCBmcm9tPSRmcmllbmRzIGl0ZW09JnF1b3Q7ZnJpZW5kJnF1b3Q7fTxici8+e2NhcHR1cmUgYXNzaWduPXVyaX17JGZyaWVuZH0vbGlua3N7L2NhcHR1cmV9PGJyLz48c3BhbiBzdHlsZT0iY29sb3I6IGdyZWVuOyI+e2NnZmJfc2VuZCB1cmk9JHVyaSBsaW5rPSZxdW90O2h0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcmcXVvdDsgbWVzc2FnZT0mcXVvdDtDaGVjayBvdXQgdGhpcyBhd2FyZCB3aW5uaW5nIENNUyBQYWNrYWdlJnF1b3Q7fTwvc3Bhbj48YnIvPnsvZm9yZWFjaH08YnIvPnsvaWZ9PC9jb2RlPjwvcHJlPjxici8+CiA8L2xpPgoKIDxsaT48Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYl93YWxscG9zdCBtc2c9Jmx0O3N0cmluZyZndDsgbmFtZT0mbHQ7c3RyaW5nJmd0OyBocmVmPSZsdDtzdHJpbmcmZ3Q7IC4uLn08L2NvZGU+CiA8cD5DcmVhdGUgYSB3YWxsIHBvc3Qgb24gYSB1c2VycyB3YWxsLiBBbGxvd3MgdXAgdG8gNSBpbWFnZXMsIGFkZGl0aW9uYWwgbGlua3MsIGFuZCBhbGxvd3MgYXNzb2NpYXRpbmcgZGF0YSB3aXRoIHRoZSB3YWxsIHBvc3QgZm9yIHRyYWNraW5nIHB1cnBvc2VzLiAgV2FsbCBwb3N0cyBhbGxvdyBmb3IgYSBzaW5nbGUgJnF1b3Q7YXR0YWNobWVudCZxdW90OyB3aXRoIGFuIGltYWdlLCBhIHZpZGVvLCBldGMuIGFuZCB1cCB0byA1IGltYWdlcyB3aXRoIGFzc29jaWF0ZWQgVVJMUy48YnIvPlBhcmFtZXRlcnM6CiA8dWw+CiAgICA8bGk+dG8gLSAoc3RyaW5nKSBUaGUgRmFjZWJvb2sgVUlEIHRvIHNlbmQgdGhlIHdhbGwgcG9zdCB0by4gIChkZWZhdWx0IGlzICZxdW90O21lJnF1b3Q7KTwvbGk+CiAgICA8bGk+bXNnIC0gKHN0cmluZykgVGhlIG1lc3NhZ2UgdG8gc2VuZCAoa2VlcCBpdCB0byAxNDAgY2hhcmFjdGVycyBvciBsZXNzKTwvbGk+CiAgICA8bGk+bmFtZSAtIChzdHJpbmcpIFRoZSBuYW1lIG9mIGF0dGFjaG1lbnQuPC9saT4gIAogICAgPGxpPmhyZWYgLSAoc3RyaW5nKSBBIFVSTCB0byBhc3NvY2lhdGUgd2l0aCB0aGUgYXR0YWNobWVudDwvbGk+CiAgICA8bGk+Y2FwdGlvbiAtIChzdHJpbmcpIEEgY2FwdGlvbiBmb3IgdGhlIGF0dGFjaG1lbnQ8L2xpPgogICAgPGxpPmRlc2NyaXB0aW9uIC0gKHN0cmluZykgQSBkZXNjcmlwdGlvbiBmb3IgdGhlIGF0dGFjaG1lbnQuPC9saT4KICAgIDxsaT54aWQgLSAoc3RyaW5nKSBjb21tZW50cyB4aWQ8L2xpPgogICAgPGxpPmltYWdlcyAtIChzdHJpbmcpIGhhc2ggb2Ygc3JjPWhyZWYgcGFpcnMgcHJvdmlkaW5nIHVwIHRvIDUgaW1hZ2VzIGZvciB0aGUgcG9zdCBhdHRhY2htZW50LgogICAgPGxpPmltYWdlMSB0aHJvdWdoIGltYWdlNSAtIChzdHJpbmcpIGEgc3RyaW5nIG9mIHRoZSBmb3JtYXQgc3JjOjo6aHJlZiBkZXNjcmliaW5nIGFuIGltYWdlIGZvciB0aGUgYXR0YWNobWVudC48L2xpPgogICAgPGxpPnByb3AxIHRocm91Z2ggcHJvcDUgLSAoc3RyaW5nKSBhIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmcgb2YgbmFtZSx2YWx1ZSxhbmQgaHJlZiB0byBzcGVjaWZ5IGFkZGl0aW9uYWwgb3B0aW9ucy9wcm9wZXJ0aWVzIGZvciB0aGUgYm90dG9tIG9mIHRoZSB3YWxsIHBvc3QuCiAgICA8bGk+ZGF0YTEgdGhyb3VnaCBkYXRhNSAtIChzdHJpbmcpIGEgY29tbWEgc2VwYXJhdGVkIHN0cmluZyBvZiBuYW1lL3ZhbHVlIHBhaXJzIHVzZWQgdG8gYXNzb2NpYXRlIGRhdGEgd2l0aCB0aGUgcG9zdC4KICAgIDxsaT4KIDwvdWw+CiA8L3A+PGJyLz4KIDxwcmU+RXhhbXBsZTogPGNvZGU+e2NnZmJfd2FsbHBvc3QgdG89bWUgbXNnPSZxdW90O1RoaXMgaXMgYSBUZXN0JnF1b3Q7IGhyZWY9JnF1b3Q7aHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZyZxdW90O308L2NvZGU+PC9wcmU+PGJyLz4KIDwvbGk+CgogPGxpPjxjb2RlIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZiX3N0YXR1cyB0bz0mbHQ7c3RyaW5nJmd0OyBtc2c9Jmx0O3N0cmluZyZndDsgLi4ufTwvY29kZT4KIDxwPkNyZWF0ZSBhIHN0YXR1cyBwb3N0IG9uIGEgdXNlcnMgZmVlZC4gQWxsb3dzIGZvciBhIGxpbmssIGEgcGljdHVyZSwgYSBuYW1lLCBhIGNhcHRpb24sIGFuZCBhIGRlc2NyaXB0aW9uLiBBcyB3ZWxsIGFzIGZvciB1cCB0byAzIGFkZGl0aW9uYWwgYWN0aW9ucy4gIFRoaXMgbWV0aG9kIHVzZXMgdGhlIEZhY2Vib29rIEdSQVBIIEFQSS48YnIvPlBhcmFtZXRlcnM6CiA8dWw+CiAgICA8bGk+dG8gLSAoc3RyaW5nKSBUaGUgRmFjZWJvb2sgVUlEIHRvIHNlbmQgdGhlIHdhbGwgcG9zdCB0by4gIChkZWZhdWx0IGlzICZxdW90O21lJnF1b3Q7KTwvbGk+CiAgICA8bGk+bXNnIC0gKHN0cmluZykgVGhlIG1lc3NhZ2UgdG8gc2VuZCAoa2VlcCBpdCB0byAxNDAgY2hhcmFjdGVycyBvciBsZXNzKTwvbGk+CiAgICA8bGk+bGluayAtIChzdHJpbmcpIEEgVVJMIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgcG9zdC48L2xpPgogICAgPGxpPnBpY3R1cmUgLSAoc3RyaW5nKSBhIFVSTCB0byBhIHBpY3R1cmUgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBwb3N0LjwvbGk+CiAgICA8bGk+Y2FwdGlvbiAtIChzdHJpbmcpIEEgY2FwdGlvbiBmb3IgdGhlIHBpY3R1cmUuPC9saT4KICAgIDxsaT5kZXNjcmlwdGlvbiAtIChzdHJpbmcpIEEgZGVzY3JpcHRpb24gZm9yIHRoZSBwaWN0dXJlLi48L2xpPgogICAgPGxpPmFjdGlvbnMgLSAobWl4ZWQpIEVpdGhlciBhIGNvbW1hIHNlcGFyYXRlZCBzdHJpbmcgb2Yga2V5IHZhbHVlIHBhaXJzLCBvciBhIGhhc2ggb2Yga2V5L3ZhbHVlIHBhaXJzIHNwZWNpZnlpbmcgYnV0dG9uIG5hbWVzIGFuZCBVUkxTIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBwb3N0LjwvbGk+CiA8L3VsPgogPC9wPjxici8+CiA8cHJlPkV4YW1wbGU6IDxjb2RlPntjZ2ZiX3N0YXR1cyB0bz0mcXVvdDttZSZxdW90OyAgbXNnPSZxdW90O0kgcmVhbGx5IGxpa2UgdGhpcyBhcHAmcXVvdDs8YnIvPmFjdGlvbnM9JnF1b3Q7VmlldyBzdG9yZT1odHRwOi8vd3d3Lm15c2l0ZS5jb20vc3RvcmUsVmlldyBFdmVudHM9aHR0cDovL3d3dy5teXNpdGUuY29tL2V2ZW50cyZxdW90O308L2NvZGU+PC9wcmU+PGJyLz4KIDwvbGk+CgogPGxpPjxjb2RlIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZiX2ludml0ZSAuLi59PC9jb2RlPgogPHA+Q3JlYXRlIGEgZm9ybSB0byBpbnZpdGUgeW91ciB1c2VycyBmYWNlYm9vayBmcmllbmRzLCBhbmQgb3RoZXJzIHRvIHVzZSB5b3VyIGZhY2Vib29rIGFwcGxpY2F0aW9uLiAgVGhpcyBpcyBqdXN0IGEgd3JhcHBlciBhcm91bmQgdGhlIGZhY2Vib29rIHNvY2lhbCBwbHVnaW4gZm9yIGludml0aW5nIHBlb3BsZS4gIFRoaXMgcGx1Z2luIHVzZXMgdGhlIGRlZmF1bHQgaW52aXRlIHRlbXBsYXRlIGFzIHNwZWNpZmllZCBpbiB0aGlzIG1vZHVsZXMgYWRtaW4gcGFuZWwgdW5sZXNzIGEgZGlmZmVyZW50IHRlbXBsYXRlIGlzIHNwZWNpZmllZC48YnIvPlBhcmFtZXRlcnM6CiA8dWw+CiAgICA8bGk+ZGVzdF91cmwgLSAoc3RyaW5nKSBUaGUgdXJsIHRvIHJlZGlyZWN0IHRvIGFmdGVyIHRoZSBmb3JtIGhhcyBiZWVuIHN1Ym1pdHRlZC4gIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IHBhZ2UgVVJMIHdpbGwgYmUgdXNlZC48L2xpPgogICAgPGxpPmFwcF9uYW1lIC0gKHN0cmluZykgVGhlIG5hbWUgb2YgeW91ciBhcHBsaWNhdGlvbi4gIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBjdXJyZW50IHNpdGUgbmFtZSB3aWxsIGJlIHVzZWQuPC9saT4KICAgIDxsaT5leGNsdWRlX2lkcyAtIChzdHJpbmcpIEEgY29tbWEgc2VwYXJhdGVkIHN0cmluZyBvZiBmYWNlYm9vayBVSURzIHRoYXQgc2hvdWxkIGJlIGV4Y2x1ZGVkIGZyb20gdGhlIGZyaWVuZHMgdG8gaW52aXRlIGxpc3QuPC9saT4KICAgIDxsaT5jb250ZW50IC0gKHN0cmluZykgQW4gaW5zdHJ1Y3Rpb25hbCBtZXNzYWdlIHRvIGRpc3BsYXkgdG8gdXNlcnMgYXQgdGhlIHRvcCBvZiB0aGUgZm9ybS48L2xpPgogICAgPGxpPmJvcmRlciAtIChib29sZWFuKSBTaG91bGQgdGhlIGZvcm0gaGF2ZSBhIGJvcmRlci48L2xpPgogICAgPGxpPmVtYWlsX2ludml0ZSAtIChib29sZWFuKSBFbmFibGUgYW4gZW1haWwgaW52aXRlIHNlY3Rpb24gdG8gdGhlIGZvcm0uPC9saT4KICAgIDxsaT5lbWFpbF9pbnZpdGUgLSAoYm9vbGVhbikgRW5hYmxlIHRoZSBlbWFpbCBjb250YWN0IGltcG9ydGVyLjwvbGk+CiAgICA8bGk+Y29uZGVuc2VkIC0gKGJvb2xlYW4pIGVuYWJsZSB0aGUgY29uZGVuc2VkIGZvcm0uPC9saT4KICAgIDxsaT5jb2xzIC0gKGludCkgZWl0aGVyIDIsMywgb3IgNSAtIHRoZSBudW1iZXIgb2YgY29sdW1ucyB0byBkaXNwbGF5IGJ5IGRlZmF1bHQsIHRoaXMgaW5mbHVlbmNlcyB0aGUgc2l6ZSBvZiB0aGUgZm9ybS48L2xpPgogICAgPGxpPm1heCAtIChpbnQpIFRoZSBtYXhpbXVtIG51bWJlciBvZiBmcmllbmRzIHRvIGludml0ZSBhdCBvbmUgdGltZS4gIChtaW4gMSwgbWF4IDM1KTwvbGk+CiAgICA8bGk+YnlwYXNzIC0gKHN0cmluZykgVGhlIFZlcnNpb24gb2YgdGhlICZxdW90O2J5cGFzcyZxdW90OyBidXR0b24gb24gdGhlIGZvcm0uIG9wdGlvbnMgYXJlIHN0ZXAsc2tpcCxvciBjYW5jZWwuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHNraXAuCiAgICA8bGk+dGVtcGxhdGUgLSAoc3RyaW5nKSBUaGUgbmFtZSBvZiBhIG5vbi1kZWZhdWx0IGludml0ZSBmb3JtIHRlbXBsYXRlIHRvIHVzZS48L2xpPgogICAgPGxpPmFzc2lnbiAtIChzdHJpbmcpIEFzc2lnbiB0aGUgb3V0cHV0IHRvIGEgc21hcnR5IHZhcmlhYmxlLjwvbGk+CiA8L3VsPgogPC9wPjxici8+CiA8cHJlPkV4YW1wbGU6IDxjb2RlPntjZ2ZiX2ludml0ZSBjb250ZW50PSZxdW90O0ludml0ZSB5b3VyIGZyaWVuZHMgdG8gdXNlIHRoaXMgZnVua3kgYXBwJnF1b3Q7fTwvY29kZT48L3ByZT48YnIvPgogPC9saT4KCiA8bGk+PGNvZGUgc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJfZnFsIGZxbD0mbHQ7c3RyaW5nJmd0OyBhc3NpZ249Jmx0O3N0cmluZyZndDt9PC9jb2RlPgogPHA+U2VuZCBhbiBGUUwgUmVxdWVzdCB0byBGYWNlYm9vay48L3A+CiA8dWw+CiAgICA8bGk+ZnFsIC0gKHN0cmluZyAtIHJlcXVpcmVkKSAgVGhlIGZhY2Vib29rIEZRTCByZXF1ZXN0IHN0cmluZzwvbGk+CiAgICA8bGk+YXNzaWduIC0gKHN0cmluZykgIEFzc2lnbiB0aGUgb3V0cHV0IHRvIGEgc21hcnR5IHZhcmlhYmxlLjwvbGk+CiA8L3VsPgogPC9wPjxici8+CiA8cHJlPkV4YW1wbGU6IDxjb2RlPntjZ2ZiX2ZxbCBmcWw9PSZxdW90O1NFTEVDVCBuYW1lIEZST00gdXNlciBXSEVSRSB1aWQgPSBtZSgpJnF1b3Q7IGFzc2lnbj0mcXVvdDtteV9uYW1lJnF1b3Q7fTwvY29kZT48L3ByZT48YnIvPgogPC9saT4KCiA8bGk+PGNvZGUgc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJfZnFsX211bHRpIC4uLn08L2NvZGU+CiA8cD5TZW5kIHVwIHRvIDUgRlFMIHF1ZXJpZXMgRmFjZWJvb2sgaW4gYSBzaW5nbGUgcmVxdWVzdC48L3A+CiA8dWw+CiAgICA8bGk+cXVlcnkxIHRocm91Z2ggcXVlcnk1IC0gKHN0cmluZyAtIHJlcXVpcmVkKSAgVGhlIGZhY2Vib29rIEZRTCByZXF1ZXN0IHN0cmluZ3M8L2xpPgogICAgPGxpPmFzc2lnbiAtIChzdHJpbmcpICBBc3NpZ24gdGhlIG91dHB1dCB0byBhIHNtYXJ0eSB2YXJpYWJsZS48L2xpPgogPC91bD4KIDwvcD48YnIvPgogPC9saT4KCiA8bGk+PGNvZGUgc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJ1c2VyZGF0YV9nZXQgdWlkPSZsdDtzdHJpbmcmZ3Q7IGFzc2lnbj0mbHQ7c3RyaW5nJmd0O308L2NvZGU+CiA8cD5SZXRyaWV2ZSB0aGUgZGF0YSByZWxhdGVkIHRvIHRoZSBzcGVjaWZpZWQgIHVzZXIgZnJvbSB0aGUgZGF0YWJhc2UuPC9wPgogPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiByZWQ7Ij5Ob3RlOjwvc3Bhbj4gVGhpcyBjb2RlIGlzIHN0aWxsIGluIGRldmVsb3BtZW50LjwvcD4KIDx1bD4KICAgIDxsaT51aWQgLSAoc3RyaW5nKSAgVGhlIGZhY2Vib29rIFVzZXIgSUQ8L2xpPgogICAgPGxpPmFzc2lnbiAtIChzdHJpbmcpICBBc3NpZ24gdGhlIG91dHB1dCB0byBhIHNtYXJ0eSB2YXJpYWJsZS48L2xpPgogPC91bD4KIDwvcD48YnIvPgogPHByZT5FeGFtcGxlOiA8Y29kZT57Y2dmYnVzZXJkYXRhX2dldCB1aWQ9JGZiX3VpZCBhc3NpZ249JnF1b3Q7bXlkYXRhJnF1b3Q7fTwvY29kZT48L3ByZT48YnIvPgogPC9saT4KCiA8bGk+PGNvZGUgc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJ1c2VyZGF0YV9zZXQgdWlkPSZsdDtzdHJpbmcmZ3Q7ICBrZXk9Jmx0O3N0cmluZyZndDsgIHZhbD1taXhlZH08L2NvZGU+CiA8cD5TdG9yZSBzb21lIGRhdGEgaW4gdGhlIHVzZXIgb2JqZWN0IGZvciB0aGUgc3BlY2lmaWVkIGZhY2Vib29rIHVzZXIuICBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYWR2YW5jZWQgaGllcmFyY2hpY2FsIGRhdGEgc3RydWN0dXJlcyB3aXRoIGRhdGEgZm9yIGEgdXNlci48L3A+CiA8cD48c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPk5vdGU6PC9zcGFuPiBUaGlzIGNvZGUgaXMgc3RpbGwgaW4gZGV2ZWxvcG1lbnQuPC9wPgogPHVsPgogICAgPGxpPnVpZCAtIChzdHJpbmcpICBUaGUgZmFjZWJvb2sgVXNlciBJRDwvbGk+CiAgICA8bGk+a2V5IC0gKHN0cmluZykgIEEgc3RyaW5nIGluZGljYXRpbmcgdGhlIGhpZXJhcmNoaWNhbCBsb2NhdGlvbiB0byBzdG9yZSB0aGUgZGF0YSBpbi4gIEhpZXJhcmNoeSBsZXZlbHMgYXJlIHNlcGFyYXRlZCB3aXRoIGEgLi48L2xpPgogICAgPGxpPnZhbCAtIChtaXhlZCkgVGhlIGRhdGEgdG8gc3RvcmUuPC9saT4KIDwvdWw+CiA8L3A+PGJyLz4KIDxwcmU+RXhhbXBsZTogPGNvZGU+e2NnZmJ1c2VyZGF0YV9zZXQgdWlkPSRmYl91aWQgYXNzaWduPSdzY29yZXMubGFzdHNjb3JlJyB2YWw9NX08L2NvZGU+PGJyLz4KICAgICAgRXhhbXBsZTogPGNvZGU+e2NnZmJ1c2VyZGF0YV9zZXQgdWlkPSRmYl91aWQgYXNzaWduPSdzY29yZXMubnVtZ2FtZXMnIHZhbD0mcXVvdDskbXlkYXRhLnNjb3Jlcy5udW1nYW1lcysxJnF1b3Q7fTwvY29kZT4KIDwvcHJlPjxici8+CiA8L2xpPgoKIDxsaT48Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYnVzZXJkYXRhX2VyYXNlIHVpZD0mbHQ7c3RyaW5nJmd0OyAga2V5PSZsdDtzdHJpbmcmZ3Q7fTwvY29kZT4KIDxwPkVyYXNlIGEgcG9ydGlvbiBvZiB0aGUgZGF0YSB0aGF0IGlzIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UgZm9yIHRoZSBzcGVjaWZpZWQgZmFjZWJvb2sgdXNlciBpZC48L3A+CiA8cD48c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPk5vdGU6PC9zcGFuPiBUaGlzIGNvZGUgaXMgc3RpbGwgaW4gZGV2ZWxvcG1lbnQuPC9wPgogPHVsPgogICAgPGxpPnVpZCAtIChzdHJpbmcpICBUaGUgZmFjZWJvb2sgVXNlciBJRDwvbGk+CiAgICA8bGk+a2V5IC0gKHN0cmluZykgIEEgc3RyaW5nIGluZGljYXRpbmcgdGhlIGhpZXJhcmNoaWNhbCBsb2NhdGlvbiB0byBlcmFzZS4gIEhpZXJhcmNoeSBsZXZlbHMgYXJlIHNlcGFyYXRlZCB3aXRoIGEgLi48L2xpPgogPC91bD4KIDwvcD48YnIvPgogPHByZT5FeGFtcGxlOiA8Y29kZT57Y2dmYnVzZXJkYXRhX2VyYXNlIHVpZD0kZmJfdWlkIGFzc2lnbj0nc2NvcmVzLmxhc3RzY29yZScgdmFsPTV9PC9jb2RlPjxici8+PC9wcmU+PGJyLz4KIDwvbGk+CgogPGxpPjxjb2RlIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZidXNlcmRhdGFfZXJhc2V1c2VyIHVpZD0mbHQ7c3RyaW5nJmd0O308L2NvZGU+CiA8cD5FcmFzZSBhbGwgb2YgdGhlIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGEgZmFjZWJvb2sgdXNlci48L3A+CiA8cD48c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPk5vdGU6PC9zcGFuPiBUaGlzIGNvZGUgaXMgc3RpbGwgaW4gZGV2ZWxvcG1lbnQuPC9wPgogPHVsPgogICAgPGxpPnVpZCAtIChzdHJpbmcpICBUaGUgZmFjZWJvb2sgVXNlciBJRDwvbGk+CiA8L3VsPgogPC9wPjxici8+CiA8cHJlPkV4YW1wbGU6IDxjb2RlPntjZ2ZidXNlcmRhdGFfZXJhc2V1c2VyIHVpZD0kZmJfdWlkfTwvY29kZT48YnIvPjwvcHJlPjxici8+CiA8L2xpPgoKIDxsaT48Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYnVzZXJkYXRhX2FwcGZyaWVuZHMgdWlkPSZsdDtzdHJpbmcmZ3Q7fTwvY29kZT4KIDxwPlJldHVybiBhIGxpc3Qgb2YgdGhlIGZyaWVuZHMgb2YgdGhlIHNwZWNpZmllZCBmYWNlYm9vayB1c2VyIHRoYXQgYWxzbyBoYXZlIGRhdGEgc3RvcmVkIGluIHRoZSBkYXRhYmFzZSBmb3IgdGhpcyBhcHBsaWNhdGlvbi48L3A+CiA8cD48c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPk5vdGU6PC9zcGFuPiBUaGlzIGNvZGUgaXMgc3RpbGwgaW4gZGV2ZWxvcG1lbnQuPC9wPgogPHVsPgogICAgPGxpPnVpZCAtIChzdHJpbmcpICBUaGUgZmFjZWJvb2sgVXNlciBJRDwvbGk+CiAgICA8bGk+YXNzaWduIC0gKHN0cmluZykgIEFzc2lnbiB0aGUgb3V0cHV0IHRvIGEgc21hcnR5IHZhcmlhYmxlLjwvbGk+CiA8L3VsPgogPC9wPjxici8+CiAgICA8cHJlPkV4YW1wbGU6IDxjb2RlPntjZ2ZidXNlcmRhdGFfYXBwZnJpZW5kcyB1aWQ9JGZiX3VpZCBhc3NpZ249JnF1b3Q7YWxzb3VzaW5nJnF1b3Q7fXskYWxzb3VzaW5nfEBwcmludF9yfTwvY29kZT48YnIvPjwvcHJlPjxici8+CiA8L2xpPgoKCgo8L3VsPgo8bGk+CjwvdWw+CjxoMz5SZXF1aXJlbWVudHM8L2gzPgo8aDM+UmVmZXJlbmNlczwvaDM+CjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCBvciBidXkgY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2UgdmlzaXQgY2FsZ3V5cwpob21lcGFnZSBhdCA8YSBocmVmPSJodHRwOi8vY2FsZ3V5MTAwMC5jb20iPmNhbGd1eTEwMDAuY29tPC9hPi48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+CjxsaT5UaGUgYXV0aG9yLCBjYWxndXkxMDAwLCBjYW4gb2Z0ZW4gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9ImlyYzovL2lyYy5mcmVlbm9kZS5uZXQvI2NtcyI+Q01TIElSQyBDaGFubmVsPC9hPi48L2xpPgo8bGk+TGFzdGx5LCB5b3UgbWF5IGhhdmUgc29tZSBzdWNjZXNzIGVtYWlsaW5nIHRoZSBhdXRob3IgZGlyZWN0bHkuPC9saT4gIAo8L3VsPgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA4LCBSb2JlcnQgQ2FtcGJlbCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyI+Jmx0O2NhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcmZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQppdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgooYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLjwvcD4KPHA+SG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCmFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQppbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCk1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPjxoMz5EZXBlbmRlbmNpZXM8L2gzPjx1bD48bGk+Q0dFeHRlbnNpb25zID0mZ3Q7IDEuMjIuMzwvbGk+PC91bD48aDM+UGFyYW1ldGVyczwvaDM+PHVsPjxsaT48ZW0+KG9wdGlvbmFsKTwvZW0+IGxhbmc9ImVuX1VTIiAtIFBhcmFtZXRlciBpcyB1c2VkIHRvIHNwZWNpZnkgd2hhdCBsYW5ndWFnZSB0byB1c2UgZm9yIGRpc3BsYXkgb24gdGhlIGZyb250ZW5kLiBOb3QgYWxsIG1vZHVsZXMgc3VwcG9ydCBvciBuZWVkIHRoaXMuPC9saT48L3VsPg==]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBjYWxndXkxMDAwICZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMDxiciAvPjxiciAvPkNoYW5nZSBIaXN0b3J5OjxiciAvPjx1bD4KICA8bGk+VmVyc2lvbiAxLjAgLSBJbml0aWFsIFJlbGVhc2UuPC9saT4KPC91bD4KPGJyIC8+]]></about>
	<description><![CDATA[A set of utilities allowing you to easily integrate Facebook into your application, or build simple facebook applications.]]></description>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.22.3</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_fbsettings_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRkJBcHAgKGMpIDIwMTAgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEEgdG9vbGJveCBvZiBjb252ZW5pZW5jZXMgdG8gYnVpbGQgZmFjZWJvb2sgaW50ZWdyYXRpb24gaW50byBhIHdlYnNpdGUKIyAgZm9yIENNUyBtb2R1bGVzIGFuZCB3ZWJzaXRlIGRlc2lnbmVycy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKCiR0aGlzLT5TZXRDdXJyZW50VGFiKCdmYnNldHRpbmdzJyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCdmYl9wZXJtcycsaW1wbG9kZSgnLCcsJHBhcmFtc1snZmJfcGVybXMnXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZmJfYXBwaWQnLHRyaW0oJHBhcmFtc1snZmJfYXBwaWQnXSkpOwokdGhpcy0+U2V0UHJlZmVyZW5jZSgnZmJfYXBwc2VjcmV0Jyx0cmltKCRwYXJhbXNbJ2ZiX2FwcHNlY3JldCddKSk7CiR0aGlzLT5SZWRpcmVjdFRvVGFiKCRpZCk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRkJBcHAgKGMpIDIwMTAgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEEgdG9vbGJveCBvZiBjb252ZW5pZW5jZXMgdG8gYnVpbGQgZmFjZWJvb2sgaW50ZWdyYXRpb24gaW50byBhIHdlYnNpdGUKIyAgZm9yIENNUyBtb2R1bGVzIGFuZCB3ZWJzaXRlIGRlc2lnbmVycy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7CmlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICkKICB7CiAgICBlY2hvICR0aGlzLT5TZXRUYWJIZWFkZXIoJ2Zic2V0dGluZ3MnLCR0aGlzLT5MYW5nKCdmYWNlYm9va19zZXR0aW5ncycpKTsKICB9CmlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgVGVtcGxhdGVzJykgKQogIHsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignZmJpbml0c3luY190cGwnLCR0aGlzLT5MYW5nKCdmYmluaXRzeW5jX3RlbXBsYXRlJykpOwogICAgZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdmYmluaXRhc3luY190cGwnLCR0aGlzLT5MYW5nKCdmYmluaXRhc3luY190ZW1wbGF0ZScpKTsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignaW52aXRlX3RhYicsJHRoaXMtPkxhbmcoJ2ludml0ZV90ZW1wbGF0ZScpKTsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcignZGZsdF90ZW1wbGF0ZXMnLCR0aGlzLT5MYW5nKCdkZmx0X3RlbXBsYXRlcycpKTsKICB9CmVjaG8gJHRoaXMtPkVuZFRhYkhlYWRlcnMoKTsKCgplY2hvICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKTsKaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykgKQogIHsKICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdmYnNldHRpbmdzJywkcGFyYW1zKTsKICAgIGluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5hZG1pbl9mYnNldHRpbmdzX3RhYi5waHAnKTsKICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOwogIH0KaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApCiAgewogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2ZiaW5pdHN5bmNfdHBsJywkcGFyYW1zKTsKICAgIGluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5hZG1pbl9mYmluaXRzeW5jX3RhYi5waHAnKTsKICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOwoKICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdmYmluaXRhc3luY190cGwnLCRwYXJhbXMpOwogICAgaW5jbHVkZShkaXJuYW1lKF9fRklMRV9fKS4nL2Z1bmN0aW9uLmFkbWluX2ZiaW5pdGFzeW5jX3RhYi5waHAnKTsKICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOwoKICAgIGVjaG8gJHRoaXMtPlN0YXJ0VGFiKCdpbnZpdGVfdGFiJywkcGFyYW1zKTsKICAgIGluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5hZG1pbl9pbnZpdGVfdGFiLnBocCcpOwogICAgZWNobyAkdGhpcy0+RW5kVGFiKCk7CgogICAgZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2RmbHRfdGVtcGxhdGVzJywkcGFyYW1zKTsKICAgIGluY2x1ZGUoZGlybmFtZShfX0ZJTEVfXykuJy9mdW5jdGlvbi5hZG1pbl9kZmx0dGVtcGxhdGVzX3RhYi5waHAnKTsKICAgIGVjaG8gJHRoaXMtPkVuZFRhYigpOwogIH0KCmVjaG8gJHRoaXMtPkVuZFRhYkNvbnRlbnQoKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/CGFBApp.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRkJBcHAgKGMpIDIwMTAgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEEgdG9vbGJveCBvZiBjb252ZW5pZW5jZXMgdG8gYnVpbGQgZmFjZWJvb2sgaW50ZWdyYXRpb24gaW50byBhIHdlYnNpdGUKIyAgZm9yIENNUyBtb2R1bGVzIGFuZCB3ZWJzaXRlIGRlc2lnbmVycy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCi8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwokY2dleHRlbnNpb25zID0gY21zX2pvaW5fcGF0aChjbXNtcygpLT5jb25maWdbJ3Jvb3RfcGF0aCddLCdtb2R1bGVzJywKCQkJICAgICAgJ0NHRXh0ZW5zaW9ucycsJ0NHRXh0ZW5zaW9ucy5tb2R1bGUucGhwJyk7CmlmKCAhaXNfcmVhZGFibGUoICRjZ2V4dGVuc2lvbnMgKSApCnsKICBlY2hvICc8aDE+PGZvbnQgY29sb3I9InJlZCI+RVJST1I6IFRoZSBDR0V4dGVuc2lvbnMgbW9kdWxlIGNvdWxkIG5vdCBiZSBmb3VuZC48L2ZvbnQ+PC9oMT4nOwogIHJldHVybjsKfQpyZXF1aXJlX29uY2UoJGNnZXh0ZW5zaW9ucyk7Ci8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwoKY2xhc3MgQ0dGQkFwcCBleHRlbmRzIENHRXh0ZW5zaW9ucwp7CiAgY29uc3QgUFJFRl9JTlZJVEVfVEVNUExBVEUgPSAnZGZsdF9pbnZpdGVfdGVtcGxhdGUnOwogIGNvbnN0IFRQTF9TWVNERkxUX0lOVklURSA9ICdzeXNkZmx0X2ludml0ZV90ZW1wbGF0ZSc7CgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIENvbnN0cnVjdG9yCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkKICB7CiAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgU2V0UGFyYW1ldGVycwogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKQogIHsKICAgIGNnZmJfc21hcnR5Ojppbml0KCk7CiAgICBjZ2ZiX29nX3NtYXJ0eTo6aW5pdCgpOwogICAgY2dmYnVzZXJkYXRhOjppbml0KCk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0TmFtZSgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0TmFtZSgpCiAgewogICAgcmV0dXJuIGdldF9jbGFzcygpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldEZyaWVuZGx5TmFtZSgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0RnJpZW5kbHlOYW1lKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpOwogIH0KCgkKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBHZXRWZXJzaW9uKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRWZXJzaW9uKCkKICB7CiAgICByZXR1cm4gJzEuMCc7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0SGVscCgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0SGVscCgpCiAgewogICAgcmV0dXJuICR0aGlzLT5MYW5nKCdoZWxwJyk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0QXV0aG9yKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBHZXRBdXRob3IoKQogIHsKICAgIHJldHVybiAnY2FsZ3V5MTAwMCc7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgR2V0QXV0aG9yRW1haWwoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkKICB7CiAgICByZXR1cm4gJ2NhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcnOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldENoYW5nZUxvZygpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkKICB7CiAgICByZXR1cm4gQGZpbGVfZ2V0X2NvbnRlbnRzKGRpcm5hbWUoX19GSUxFX18pLicvY2hhbmdlbG9nLmluYycpOwogIH0KICAKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgSXNQbHVnaW5Nb2R1bGUoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkKICB7CiAgICByZXR1cm4gdHJ1ZTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBIYXNBZG1pbigpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gSGFzQWRtaW4oKQogIHsKICAgIHJldHVybiB0cnVlOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldEFkbWluU2VjdGlvbigpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0QWRtaW5TZWN0aW9uKCkKICB7CiAgICByZXR1cm4gJ2V4dGVuc2lvbnMnOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldEFkbWluRGVzY3JpcHRpb24oKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKQogIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBWaXNpYmxlVG9BZG1pblVzZXIoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpCiAgewogICAgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBTaXRlIFByZWZlcmVuY2VzJykgfHwKICAgICAgJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEdldERlcGVuZGVuY2llcygpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkKICB7CiAgICByZXR1cm4gYXJyYXkoJ0NHRXh0ZW5zaW9ucyc9PicxLjIyLjMnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBNaW5pbXVtQ01TVmVyc2lvbigpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKQogIHsKICAgIHJldHVybiAiMS45LjEiOwogIH0KCgogIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgIEluc3RhbGxQb3N0TWVzc2FnZSgpCiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCiAgZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJyk7CiAgfQoKCiAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKQogICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogIGZ1bmN0aW9uIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnKTsKICB9CgoKICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICBVbmluc3RhbGxQcmVNZXNzYWdlKCkKICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KICBmdW5jdGlvbiBVbmluc3RhbGxQcmVNZXNzYWdlKCkKICB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3ByZXVuaW5zdGFsbCcpOwogIH0JCgoKfSAvLyBjbGFzcwoKPz4K]]></data>
	</file>
	<file>
	  <filename>/changelog.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPgogIDxsaT5WZXJzaW9uIDEuMCAtIEluaXRpYWwgUmVsZWFzZS48L2xpPgo8L3VsPgo=]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/function.admin_dflttemplates_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRkJBcHAgKGMpIDIwMTAgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEEgdG9vbGJveCBvZiBjb252ZW5pZW5jZXMgdG8gYnVpbGQgZmFjZWJvb2sgaW50ZWdyYXRpb24gaW50byBhIHdlYnNpdGUKIyAgZm9yIENNUyBtb2R1bGVzIGFuZCB3ZWJzaXRlIGRlc2lnbmVycy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKZWNobyBjZ2VfdGVtcGxhdGVfYWRtaW46OmdldF9zdGFydF90ZW1wbGF0ZV9mb3JtKCR0aGlzLCRpZCwnJywKCQkJCQkJIENHRkJBcHA6OlRQTF9TWVNERkxUX0lOVklURSwKCQkJCQkJICdkZWZhdWx0YWRtaW4nLCdkZmx0X3RlbXBsYXRlcycsCgkJCQkJCSAkdGhpcy0+TGFuZygndGl0bGVfc3lzZGZsdF9pbnZpdGUnKSwKCQkJCQkJICdvcmlnX2ludml0ZS50cGwnKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/function.admin_fbinitasync_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRkJBcHAgKGMpIDIwMTAgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEEgdG9vbGJveCBvZiBjb252ZW5pZW5jZXMgdG8gYnVpbGQgZmFjZWJvb2sgaW50ZWdyYXRpb24gaW50byBhIHdlYnNpdGUKIyAgZm9yIENNUyBtb2R1bGVzIGFuZCB3ZWJzaXRlIGRlc2lnbmVycy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKZWNobyBjZ2VfdGVtcGxhdGVfYWRtaW46OmdldF9zaW5nbGVfdGVtcGxhdGVfZm9ybSgkdGhpcywkaWQsJHJldHVybmlkLAoJCQkJCQkgICdmYmluaXRfYXN5bmMnLCdmYmluaXRhc3luY190cGwnLAoJCQkJCQkgICR0aGlzLT5MYW5nKCd0aXRsZV9mYmluaXRhc3luY190cGwnKSwKCQkJCQkJICAnb3JpZ19mYmluaXRfYXN5bmMudHBsJywKCQkJCQkJICAkdGhpcy0+TGFuZygnaW5mb19mYmluaXRhc3luY190cGwnKSk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_fbinitsync_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRkJBcHAgKGMpIDIwMTAgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEEgdG9vbGJveCBvZiBjb252ZW5pZW5jZXMgdG8gYnVpbGQgZmFjZWJvb2sgaW50ZWdyYXRpb24gaW50byBhIHdlYnNpdGUKIyAgZm9yIENNUyBtb2R1bGVzIGFuZCB3ZWJzaXRlIGRlc2lnbmVycy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKZWNobyBjZ2VfdGVtcGxhdGVfYWRtaW46OmdldF9zaW5nbGVfdGVtcGxhdGVfZm9ybSgkdGhpcywkaWQsJHJldHVybmlkLAoJCQkJCQkgICdmYmluaXRfc3luYycsJ2ZiaW5pdHN5bmNfdHBsJywKCQkJCQkJICAkdGhpcy0+TGFuZygndGl0bGVfZmJpbml0c3luY190cGwnKSwKCQkJCQkJICAnb3JpZ19mYmluaXRfc3luYy50cGwnLAoJCQkJCQkgICR0aGlzLT5MYW5nKCdpbmZvX2ZiaW5pdHN5bmNfdHBsJykpOwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/function.admin_fbinit_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRkJBcHAgKGMpIDIwMTAgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEEgdG9vbGJveCBvZiBjb252ZW5pZW5jZXMgdG8gYnVpbGQgZmFjZWJvb2sgaW50ZWdyYXRpb24gaW50byBhIHdlYnNpdGUKIyAgZm9yIENNUyBtb2R1bGVzIGFuZCB3ZWJzaXRlIGRlc2lnbmVycy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKZWNobyBjZ2VfdGVtcGxhdGVfYWRtaW46OmdldF9zaW5nbGVfdGVtcGxhdGVfZm9ybSgkdGhpcywkaWQsJHJldHVybmlkLAoJCQkJCQkgICdmYmluaXQnLCdmYmluaXRfdHBsJywKCQkJCQkJICAkdGhpcy0+TGFuZygndGl0bGVfZmJpbml0X3RwbCcpLAoJCQkJCQkgICdvcmlnX2ZiaW5pdC50cGwnLAoJCQkJCQkgICR0aGlzLT5MYW5nKCdpbmZvX2ZiaW5pdF90cGwnKSk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/function.admin_fbsettings_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRkJBcHAgKGMpIDIwMTAgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEEgdG9vbGJveCBvZiBjb252ZW5pZW5jZXMgdG8gYnVpbGQgZmFjZWJvb2sgaW50ZWdyYXRpb24gaW50byBhIHdlYnNpdGUKIyAgZm9yIENNUyBtb2R1bGVzIGFuZCB3ZWJzaXRlIGRlc2lnbmVycy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKJHNtYXJ0eS0+YXNzaWduKCdmb3Jtc3RhcnQnLCR0aGlzLT5DR0NyZWF0ZUZvcm1TdGFydCgkaWQsJ2FkbWluX2Zic2V0dGluZ3NfdGFiJykpOwokc21hcnR5LT5hc3NpZ24oJ2ZiX2FwcGlkJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZmJfYXBwaWQnKSk7CiRzbWFydHktPmFzc2lnbignZmJfYXBwc2VjcmV0JywkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZmJfYXBwc2VjcmV0JykpOwokc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCR0aGlzLT5DcmVhdGVGb3JtRW5kKCkpOwoKJHBlcm1zID0gYXJyYXkoJ3B1Ymxpc2hfc3RyZWFtJywnY3JlYXRlX2V2ZW50JywncnN2cF9ldmVudCcsJ3NtcycsJ29mZmxpbmVfYWNjZXNzJywncHVibGlzaF9jaGVja2lucycsCgkgICAgICAgJ3VzZXJfYWJvdXRfbWUnLCd1c2VyX2FjdGl2aXRpZXMnLCd1c2VyX2JpcnRoZGF5JywndXNlcl9lZHVjYXRpb25faGlzdG9yeScsJ3VzZXJfZXZlbnRzJywKCSAgICAgICAndXNlcl9ncm91cHMnLCd1c2VyX2hvbWV0b3duJywndXNlcl9pbnRlcmVzdHMnLCd1c2VyX2xpa2VzJywndXNlcl9sb2NhdGlvbicsJ3VzZXJfbm90ZXMnLCd1c2VyX29ubGluZV9wcmVzZW5jZScsCgkgICAgICAgJ3VzZXJfcGhvdG9fdmlkZW9fdGFncycsJ3VzZXJfcGhvdG9zJywndXNlcl9yZWxhdGlvbnNoaXBzJywndXNlcl9yZWxhdGlvbnNoaXBfZGV0YWlscycsJ3VzZXJfcmVsaWdpb25fcG9saXRpY3MnLAoJICAgICAgICd1c2VyX3N0YXR1cycsJ3VzZXJfdmlkZW9zJywndXNlcl93ZWJzaXRlJywndXNlcl93b3JrX2hpc3RvcnknLCdlbWFpbCcsJ3JlYWRfZnJpZW5kbGlzdHMnLCdyZWFkX2luc2lnaHRzJywKCSAgICAgICAncmVhZF9tYWlsYm94JywncmVxZF9yZXF1ZXN0cycsJ3JlYWRfc3RyZWFtJywndXNlcl9jaGVja2lucycsJ2ZyaWVuZHNfYWJvdXRtZScsJ2ZyaWVuZHNfYWN0aXZpdGllcycsJ2ZyaWVuZHNfYmlydGhkYXknLCdmcmllbmRzX2VkdWNhdGlvbl9oaXN0b3J5JywKCSAgICAgICAnZnJpZW5kc19ldmVudHMnLCdmcmllbmRzX2dyb3VwcycsJ2ZyaWVuZHNfaG9tZXRvd24nLCdmcmllbmRzX2ludGVyZXN0cycsJ2ZyaWVuZHNfbGlrZXMnLCdmcmllbmRzX2xvY2F0aW9uJywnZnJpZW5kc19ub3RlcycsJ2ZyaWVuZHNfb25saW5lX3ByZXNlbnNlJywKCSAgICAgICAnZnJpZW5kc19waG90b192aWRlb190YWdzJywnZnJpZW5kc19yZWxhdGlvbnNoaXBzJywnZnJpZW5kc19yZWxhdGlvbnNoaXBfZGV0YWlscycsJ2ZyaWVuZHNfcmVsaWdpb25fcG9saXRpY3MnLCdmcmllbmRzX3ZpZGVvcycsJ2ZyaWVuZHNfd2Vic2l0ZScsCgkgICAgICAgJ2ZyaWVuZHNfd29ya19oaXN0b3J5JywnbWFuYWdlX2ZyaWVuZGxpc3RzJywnZnJpZW5kc19jaGVja2lucycpOwokcGVybXMgPSBhcnJheV9jb21iaW5lKCRwZXJtcywkcGVybXMpOwokc21hcnR5LT5hc3NpZ24oJ3Blcm1fbGlzdCcsJHBlcm1zKTsKJHRtcCA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdmYl9wZXJtcycpOwppZiggJHRtcCApCiAgewogICAgJHRtcCA9IGV4cGxvZGUoJywnLCR0bXApOwogIH0KJHNtYXJ0eS0+YXNzaWduKCdmYl9wZXJtcycsJHRtcCk7CgplY2hvICR0aGlzLT5Qcm9jZXNzVGVtcGxhdGUoJ2FkbWluX2Zic2V0dGluZ3NfdGFiLnRwbCcpOwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/function.admin_invite_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRkJBcHAgKGMpIDIwMTAgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEEgdG9vbGJveCBvZiBjb252ZW5pZW5jZXMgdG8gYnVpbGQgZmFjZWJvb2sgaW50ZWdyYXRpb24gaW50byBhIHdlYnNpdGUKIyAgZm9yIENNUyBtb2R1bGVzIGFuZCB3ZWJzaXRlIGRlc2lnbmVycy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKZWNobyAkdGhpcy0+U2hvd1RlbXBsYXRlTGlzdCgkaWQsJHJldHVybmlkLCdpbnZpdGVfJywKCQkJICAgICBDR0ZCQXBwOjpUUExfU1lTREZMVF9JTlZJVEUsJ2ludml0ZV90YWInLAoJCQkgICAgIENHRkJBcHA6OlBSRUZfSU5WSVRFX1RFTVBMQVRFLAoJCQkgICAgICR0aGlzLT5MYW5nKCd0aXRsZV9pbnZpdGVfdGVtcGxhdGUnKSk7CgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/fb_login.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhmgAWAPcHADJDf42ZwWJxoGt6rk5elZeix+Dk7v////b3+uHl72p5rers801dlH2KuJGcw2x7roeTvYqWv7e+129+sJehxaStzKqz0Gl5rcrP4bS81XWDs9re6uXp8f7+/sDG3Gh4rN/j7cnO4W59r3SDs3GAsXKBsu/x9svQ4rS71XSDss/V5HqItr/G3OXo8YCNudfb6Pf4+u3v9bG51Gl5rIeUvePn8K+30ufp8bC406myz+rt83KBscrQ4tTZ56ixzqavzebp8Wt7rdjc6XeGtOXo8Gt6rbW81v39/vj5+5mkx4uXv7i/1/T1+dDW5ay00fn6/Ofq8m18ruzu9JqkyMTK3svR4vHy97nA2HB/sI+awWd3rEtclGp6rejr8q620qWuzevu9IKPu6avzrrB2bO71XOCsvv7/cfN4Kuz0KewzoiUvo6ZwXyKt/r7/G18r9HX5tHW5XeFtZumyPf4+83T45WgxXuJt3iGtaCqysLI3Y+awrK51PP0+L/F3PX2+bzD2qKrzHaEtPDy9+7w9oSRvLi/2Pv8/dPY5+vt9G59sKmy0JKdw9LX5nqHtszS44+bwnB/sZOexLa91ujq8szR44aTvenr89vf68bM32Z2q97i7Utck9bb6HmHtrO61dnd6uTn8Nfc6ZSfxeTo8MDH3PLz96Cpy7/F22V1q0tbk8/V5W9+sZahxa220p+py87U5LK61XGAsuPm72h4rcjN4Z2nyoGOutre66qy0HOCs2h3rJKdxHyJt3WEtN/j7ml4rWR0qkpakomVvvn6+/39/cPJ3q210XSCs9HW5ml4rMjN4GV1qsjO4LvB2fz8/Wd2q8LH3fv7/HKAstLY5tDV5dzg7Jagxb7E22RzqnB+sWd2rHuIt2V0qmV0q217r2p4rWx7r3F+sWh3rW99sGNzqcHG3GR0qYKPuklakmJzqWR1qklZkmFyqYCNumFxqUlZkWFxqCQ0bwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAACaABYAAAj+AAEIHEiwoMGDCBMqXMiwocOHECMKDECxosWLFwVg3Mixo8ePIEOKHEnSo8ABKFOqXLmSAMuXMGPKnEmzps2bOGWezInSJc+fQIMKHfpyp8wCBg4gSJDSJ9GnUKNGNQqzwIGrV5tK3cq1a02BCsKKHasg6YEFBgyIZUC2rdu3Cho4eAC3rlgIEdo6kDDBrl+7Eij8bVvBgl2BFxIrXnzh6gLGFxhAboxhsmXFGQ5ouMxZ8QYOiickzrzZMtYDHTpfPuBB9eTPnQV+mE279oerIGx/YKD7dojewGmLGBG8eG0SJWabODEbxYEUwQ+oWEHdeHQW1ntvaGFcdnHcunn+6z7wm7aLFzBiyJjxgUaNGDZu4PiQQ8eODzx6+DDxgnjtH0AE8YEQzA1BRBH5fWDEEUgY8IFzSbTQghLjlTfbEkAw0cQQszmhwxNQRLHDCQhIMcVsB1BRhRVXYPHBeemt9yJ66rG33QdZGACdbgJp4eOPPp4m5I9bAPkjeT9ysUAXLnhxwBdabABGGGIcMIYWZBxQRpRmnIHGAWkYqcYBa7BxQBtufPFGlC1oQQICcMSB5QEbyDEHHUZqcQAIYojhghZ12HHHE0ZogccBedihxwV78MFGHwi4oacfFfxxACBKMunkF5k2+SSbgQhSR54+9kiqkFgNQuSpIfxIyAH+hWjhhiGHlHDEH7JaOeeWGyCiRSIHXGHkB35cocgbByzCCJTb+egHDz5m2YgWBoCQ5wExOOLII1pAEokkCEDbxBEl/DjJJChQckAlenqgxQOG0PFqrLMeMq+stEZpySWYkFoqAJkELHDAmhR8VcGaMCLwJgMLTJ7AlRyAQiYfPMFJJ8FmMkHGnhxQQiaftJDJAxk3fAIooYgyCilPBAKyyJkwwUPAHX8MAggNZ/KwwAlsgEcpMx9iyAQCI2GJKUhroPMpmRRhBhURT1wxJ1FTbDHIUITiRyc5BywQKmCHLTYqB4+NSipmk61KHGwnYoUBq7ByQCuoABGDK6/Aigr+LAfEgkrIqAyg99imHDDHAGMYkgDYgKMiSwKz7N03KjebfQAtYYdxQC22MHELKrgcIMEAuejiyBG76MKL33TmUjgrA7wd99yxwy033SH3woQvv6QtEDDABy88MAcPD0wwxhN/GgTCIDIMMcVoAYwaQiACyAHGALPHAZAA8wkRwChwwBLGH3MAMsA4cIAnwH8PfC18tJHM9t0XbPwBygS/jBCGMNOMM4t4BjScEQ0kQEIa0+gAMfggDOJRoxoH6IECgNG850WPgs6DnvTcZ40DXCN5AsGGCEdIQmwcrITYCAYKVyjCbGhjhNtwAzfScAAKsPCGOCRhN7yRwxt+Q4Tn4BihNsJBQnGMA4U8JKELS7jEHo5QIOSIohSnSI6DUZEcwbiiFrVYjiMggAkeMMcWx0jGMprxjGhM4xkFco42uvGN57gKKOB4DnSk4454zKMe9/gAF6hjj4AMpCAHSchCGvKQiLyjQGzByEY60hZyfKQt1sGOSlrykpjMpCY3yclOevKToAylKD0pkHaY8pSobIccU9mOdbjjlbCMpSxnScta2vKWuMylLnfJS1yWkpWoXGUq3wGPYhrzmMhMpjKXycxmOvOZ0IymNJ0pkHhY85rYzKY2t8nNbnrzm+AMpzjHSU5yAiAgADs=]]></data>
	</file>
	<file>
	  <filename>/images/fb_logout.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhVQAUAPcAADtbjjtWljVdlTtaljRXmzxWmzVamDxamixgkjlglTxXoTVaoDxfozZioz9hoERWj0Rbj0RWkUJbl0JWm0Fcm0NhnUBXpUFdoEhhoU9to192olZ9rF17rFp3sVZ9tFp7slZ4uFt9uWV6smN4uVmAq1iAs2uErnCBrWWFtmyEs2aEuG2EuHOCtHSGuH+Wv36ly4SFvomEvIqbt4Ocvoubvpievo6jvpKyv6ytrbGtrKuxrrGxra+vsbKvsq+0sLCwsL2+u8G9vbzAvoafx4qZwIKdyJOew5GfzoSf1Iic0Y6e2Y6hxYSkzY2gy5KjxJOqx5+kzJioyY+xzZC0zIem0oqj04yp1Yah2Iuh242p25ql0pGl2pGz0J+83aavzqS2zL2+waO11KW706S126q33KO63Km42aW24qm14qS5477CwrrX3bfX4r3V5LXZ5brV67bZ7LzZ6c7Z3c/W5czZ4cvb6tPV4dLZ49TX69jW69Pa7NbW8tDa89zr7t3q8+Pn7ePq7+rs7unz7ubn8uXq8+vs8+Xn/ufv+uvs+vDu8/nv8OXx8ezx8+30/PP19fv39Pb89fz99fT1+vr2/PX7/P7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAAAAAALAAAAABVABQAAAj+AA0cKHBgwAEFAwweOCAgwMKHFAIIKLjQ4cOBExwCIMDQooACBCgotPiQZMWLB0gadJgw5YACEQ4gOFCpps1INnNWgoRTp8+fQCv1DEq0qM4IBSp5kSDhQIKFFwAYHMC0AQAJFCgekGCQQtMEAxJkiEJpaE2zRtMatUAzAYGJC6VSfHngASVKkypNmoS3kqRIlPROimSohpOdahMrrpSwUgUBDyYIVHCA40MBEyhBGvwIyA4cQADjjfSXkiQIi1ML9RnYZuOBBQxgxkxBA6KaKUnf9YxDhxpJkiZJMj1c0gVIOlvnVQ0UbU6ClRYOEJAgQIEJAgjVpITQEaVGYHz+4OABpBJxvpBMQxpglhEHO8yJBu5ptmCkpwcytgxQk3IABZI4AgQPOPwQRCWNdNGEFWE0EqCDByxX0yAh0BFfUGYYkRNyNTnE2EMEpSRATQkVMECAQvzQAw5BMCIJGVVcQcUYiDgCHE0cVhJICXjkFMUGINCg3SFEhDADC2hUggcLHHxgRiRvmFDTFF/o0QEJHLDh00IfruShTgNMUAgjlQCBAw49ANEIJWNkkUQVYzTCCCMUSFgJIR3ksRoZIhRSSREvVIKFDJXQwUIXlKBQRiV3eLAHHCrUJEYYlXSBhF5bJiXddAYVkkhNiRSykCOM+KmGDjjkoEYglYRBRRX+VZjRiCAD2MlICXLY9AIZNeGxQSUd3FGTCW/M8QGHNJDRxgo1PdHFJGTYUJOdlUA31WXX1URQp3MWMokaKwbhyCFjYLEgGYcIkoBZgXCgZ01L8FpJHFJ68MawYuQxgiNCzZBGGzAE9sUUkJDRBFACRSeSQiuRSFEhjQBSamt3dpGFEnBSUipNOR3SAR49ncGCn0xEUQkNT0wCBwdnSKJCGpXYAUIfeIjgyBseULpGCkClxFgBXAVAEm4sAVIIIYQwQkgggRDSRRFXVFEGJYIAggjHNgXSQQgceHBCJFps0MEM3v7BgggztJCkHCZ8EEKSkEzBQQxQTDEJISh80KPyTlxWUIEKKKwgeAoo1JRCCitUwAgghAyCdCGDIBIGxlM3XUghFzzyyFk/9cRhJDjxwUEdOeE0FMXU5lRQJRJUkIIJKbCQwgk8V3I4CxUw7njjhADix3KROO4HIH8wUJZiaXywAQcwp+Wc6gNEx9BcLVHvRyCDAKI99oD0kf0g4A8yBxEaPn+h8zYVkNQXE1yQ1UNM4eeUBAzAf0BW78ufwRLDnX8hTg2pCU8eEQm+DCYve8HJJB4BiUeg5y+DEcpfKuGICPrvfFkx0UA4shLpBMAgDaHLtQZgES8tZCLbYthUVliQEVKvhXN5YUtaMoGUBAQAOw==]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0EKJGxhbmdbJ2FkdmFuY2VkX3NldHRpbmdzJ10gPSAnQWR2YW5jZWQnOwoKI0IKCiNDCgojRAokbGFuZ1snZGZsdF9hY3Rpb25fdGV4dCddID0gJ0ludml0ZSB5b3VyIGZyaWVuZHMgdG8gdXNlIHRoaXMgQXBwJzsKJGxhbmdbJ2RmbHRfdGVtcGxhdGVzJ10gPSAnRGVmYXVsdCBUZW1wbGF0ZXMnOwoKI0UKCiNFCgojRgokbGFuZ1snZmFjZWJvb2tfc2V0dGluZ3MnXSA9ICdGYWNlYm9vayBTZXR0aW5ncyc7CiRsYW5nWydmYl9hcHBpZCddID0gJ0ZhY2Vib29rIEFwcGxpY2F0aW9uIElEJzsKJGxhbmdbJ2ZiX2FwcHNlY3JldCddID0gJ0ZhY2Vib29rIEFwcGxpY2F0aW9uIFNlY3JldCc7CiRsYW5nWydmYl9wZXJtcyddID0gJ0ZhY2Vib29rIFBlcm1pc3Npb25zJzsKJGxhbmdbJ2ZiaW5pdGFzeW5jX3RlbXBsYXRlJ10gPSAnRmFjZWJvb2sgQXN5bmMgSW5pdGlhbGl6YXRpb24nOwokbGFuZ1snZmJpbml0c3luY190ZW1wbGF0ZSddID0gJ0ZhY2Vib29rIFN5bmNocm9ub3VzIEluaXRpYWxpemF0aW9uJzsKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0NhbGd1eXMgRmFjZWJvb2sgVG9vbGtpdCc7CgojRwoKI0gKJGxhbmdbJ2hlbHAnXSA9IDw8PEVPVAo8aDM+V2hhdCBEb2VzIFRoaXMgRG8/PC9oMz4KPHA+VGhpcyBtb2R1bGUgcHJvdmlkZXMgc29tZSB0b29scyAodmlhIGFuIEFQSSBhbmQgdmFyaW91cyBzbWFydHkgcGx1Z2lucykgdG8gYWxsb3cgZWFzaWx5IGludGVncmF0aW5nIGZhY2Vib29rIGludG8geW91ciBhcHBsaWNhdGlvbiB1c2luZyBzbWFydHkgbG9naWMsIG9yIGJ1aWxkaW5nIGEgc2ltcGxlIGZhY2Vib29rIGFwcGxpY2F0aW9uIHVzaW5nIHNpbXBsZSBzbWFydHkgcGx1Z2lucyBvciB1c2VyIGRlZmluZWQgdGFncy4gIFRoaXMgaXMgdXNlZnVsIHdoZW4gYnVpbGRpbmcgRS1jb21tZXJjZSwgdG91cmlzbSwgZXZlbnQgb3Igc29jaWFsIHdlYnNpdGVzLjwvcD4KPGgzPkZlYXR1cmVzPC9oMz4KPHA+VGhpcyBtb2R1bGUgcHJvdmlkZXMgc21hcnR5IHV0aWxpdGllcyBmb3IgaW50ZWdyYXRpbmcgRmFjZWJvb2sgaW50byB5b3VyIHdlYnNpdGUsIGFuZCBzb21lIHNtYXJ0eSB1dGlsaXRpZXMgYW5kIGEgc2ltcGxlIEFQSSBmb3IgYnVpbGRpbmcgZmFjZWJvb2sgYXBwbGljYXRpb25zLiBJbmNsdWRpbmc6PGJyLz4KIDx1bD4KIDxsaT5Jbml0aWFsaXppbmcgdGhlIEZhY2Vib29rIEphdmFzY3JpcHQgQVBJIChzeW5jaHJvbm91c2x5IG9yIGFzeW5jaG9ybm91c2x5KTwvbGk+CiA8bGk+RGlzcGxheSBhIGJveCBhbGxvd2luZyB1c2VycyB0byBjb21tZW50IG9uIGFueSBvYmVjdCB3aXRoaW4geW91ciB3ZWJzaXRlIChubyBGYWNlYm9vayBBUFBJRCBSZXF1aXJlZCkKIDxsaT5EaXNwbGF5IGEgRmFjZWJvb2sgTGlrZSBCdXR0b24gZm9yIGFueSBpdGVtPC9saT4KIDxsaT5DcmVhdGUgYSBXYWxsIFBvc3QgZm9yIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIuPC9saT4KIDxsaT5DcmVhdGUgYSBTdGF0dXMgcG9zdCBmb3IgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlci48L2xpPgogPGxpPkRpc3BsYXkgYW4gaW52aXRlIGZvcm0gdG8gaW52aXRlIHVzZXJzIHRvIHlvdXIgd2Vic2l0ZTwvbGk+CiA8bGk+CiA8L3VsPgo8L3A+PGJyLz4KPHA+WW91IGhhdmUgYWNjZXNzIHRvIG51bWVyb3VzIHNtYXJ0eSB1dGlsaXRpZXMgZm9yIGNyZWF0aW5nIHZhcmlvdXMgT3BlbkdyYXBoIE9iamVjdHM6CiA8dWw+CiA8bGk+U2V0IHRoZSBPcGVuR3JhcGggVVJMPC9saT4KIDxsaT5TZXQgdGhlIE9wZW5HcmFwaCBUaXRsZTwvbGk+CiA8bGk+U2V0IHRoZSBPcGVuR3JhcGggT2JqZWN0IFR5cGU8L2xpPgogPGxpPlNldCB0aGUgT3BlbkdyYXBoIEltYWdlIEF0dHJpYnV0ZTwvbGk+CiA8bGk+U2V0IHRoZSBPcGVuR3JhcGggVGl0bGUgQXR0cmlidXRlPC9saT4KIDxsaT5TZXQgdGhlIE9wZW5HcmFwaCBTaXRlbmFtZSBBdHRyaWJ1dGU8L2xpPgogPGxpPlNldCB0aGUgT3BlbkdyYXBoIERlc2NyaXB0aW9uIEF0dHJpYnV0ZTwvbGk+CiA8bGk+U2V0IHRoZSBPcGVuR3JhcGggYWRtaW5zIGF0dHJpYnV0ZS48L2xpPgogPC91bD4KPC9wPjxici8+CjxwPllvdSBoYXZlIGFjY2VzcyB0byBudW1lcm91cyBzbWFydHkgdXRpbGl0aWVzIGZvciBidWlsZGluZyBhIEZhY2Vib29rIEFwcGxpY2F0aW9uIG9uIGEgcGFnZSBvZiB5b3VyIHdlYnNpdGU6CiA8dWw+CiA8bGk+SW5pdGlhbGl6aW5nIHRoZSBGYWNlYm9vayBKYXZhc2NyaXB0IEFQSSAoc3luY2hyb25vdXNseSBvciBhc3luY2hvcm5vdXNseSk8L2xpPgogPGxpPkVudGVyaW5nIHlvdXIgRmFjZWJvb2sgQXBwbGljYXRpb24gSUQsIGFuZCBBcHAgU2VjcmV0PC9saT4KIDxsaT5TZWxlY3Rpbmcgd2hpY2ggRmFjZWJvb2sgcGVybWlzc2lvbnMgeW91ciBBcHAgUmVxdWlyZXMgKGlmIGFueSk8L2xpPgogPGxpPkRpc3BsYXlpbmcgYSBsb2dpbiBidXR0b24gYWxsb3dpbmcgdXNlcnMgdG8gbG9naW4gdG8geW91ciBhcHAgb3Igd2Vic2l0ZSB1c2luZyB0aGVpciBGYWNlYm9vayBjcmVkZW50aWFsczwvbGk+CiA8bGk+RGlzcGxheWluZyBhIGxvZ291dCBidXR0b24gYWxsb3dpbmcgdXNlcnMgdG8gbG9nb3V0IGZyb20geW91ciBhcHBsaWNhdGlvbi48L2xpPgogPGxpPkluaXRpYWxpemluZyB0aGUgRmFjZWJvb2sgSmF2YXNjcmlwdCBBUEkgKHN5bmNocm9ub3VzbHkgb3IgYXN5bmNob3Jub3VzbHkpPC9saT4KIDxsaT5DYWxsaW5nIGFueSBmdW5jdGlvbiBpbiB0aGUgRmFjZWJvb2sgR3JhcGggQVBJPC9saT4KIDxsaT5SZXRyaWV2ZSBhbGwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gdXNlciB0aGF0IGhlIGhhcyBhdXRob3JpemVkIHRvIHNoYXJlIHdpdGggeW91PC9saT4KIDxsaT5SZXRyaWV2ZSBGYWNlYm9vayBVSUQgZm9yIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIuPC9saT4KIDxsaT5TZW5kIGEgUE9TVCBjb21tYW5kIHRvIHRoZSBGYWNlYm9vayBHUkFQSCBBUEk8L2xpPgogPC91bD4KPC9wPjxici8+CjxwPlRoaXMgbW9kdWxlIHByb3ZpZGVzIHNvbWUgbGltaXRlZCBzbWFydHkgdXRpbGl0aWVzIGZvciBzdG9yaW5nIGFuZCByZXRyaWV2aW5nIGRhdGEgZm9yIGNyZWF0aW5nIHNpbXBsZSBhcHBsaWNhdGlvbnM6CiA8dWw+CiAgIDxsaT5SZXRyaWV2ZSBhcHBsaWNhdGlvbiBzcGVjaWZpYyBpbmZvcm1hdGlvbiBzcGVjaWZpYyB0byB0aGUgRmFjZWJvb2sgdXNlci48L2xpPgogICA8bGk+U3RvcmUgYXBwbGljYXRpb24gaW5mb3JtYXRpb24gc3BlY2lmaWMgdG8gdGhlIEZhY2Vib29rIHVzZXIgdG8gdGhlIGRhdGFiYXNlLjwvbGk+CiAgIDxsaT5FcmFzZSB1c2VyIHJlbGF0ZWQgYXBwbGljYXRpb24gaW5mb3JtYXRpb24uPC9saT4KICAgPGxpPlJldHJpZXZlIGEgbGlzdCBvZiB0aGUgdXNlcnMgZnJpZW5kcyB0aGF0IGFyZSBhbHNvIHVzaW5nIHRoZSBhcHBsaWNhdGlvbi48L2xpPgogPC91bD4KPC9wPjxici8+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyIgc3R5bGU9ImNvbG9yOmJsYWNrO3BhZGRpbmc6NXB4O2JhY2tncm91bmQtY29sb3I6d2hpdGU7Ym9yZGVyOjJweCBkb3R0ZWQgb3JhbmdlIj4KICA8cD5UaGlzIG1vZHVsZSBpcyBub3QgYSByZXBsYWNlbWVudCBmb3IgbGVhcm5pbmcgdGhlIEZhY2Vib29rIEFQSVMgZm9yIHdyaXRpbmcgYXBwbGljYXRpb25zIHdpdGggRmFjZWJvb2suICBJdCBwcm92aWRlcyBzb21lIHdyYXBwZXJzIGFuZCBjb252ZW5pZW5jZXMgZm9yIHNtYXJ0eSBmb3IgcmV0cmlldmluZyBkYXRhIGZyb20gYW5kIHN1Ym1pdHRpbmcgZGF0YSB0byBGYWNlYm9vay48L3A+CiAgPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiBncmVlbjsiPlBsZWFzZTwvc3Bhbj4gcmVhZCB0aGUgZmFjZWJvb2sgYXBwbGljYXRpb24gdHV0b3JpYWxzIGFuZCByZWZlcmVuY2UgZG9jdW1lbnRhdGlvbi48L3A+CjwvZGl2Pgo8aDM+SG93IGRvIEkgdXNlIGl0PC9oMz4KPHA+VGhlcmUgYXJlIHR3byBwcmltYXJ5IHdheXMgdG8gdXNlIHRoaXMgbW9kdWxlLiAgRmlyc3QsIGFuZCBtb3N0IGltcG9ydGFudGx5LCB0byBhZGQgc29jaWFsIGF0dHJpYnV0ZXMgdG8geW91ciBleGlzdGluZyBDTVNNUyBXZWJzaXRlLiAgU2Vjb25kbHkgeW91IGNhbiB1c2UgdGhpcyBtb2R1bGUgdG8gcXVlcnkgZGF0YSBmcm9tIGFuZCBzdWJtaXQgaW5mb3JtYXRpb24gdG8gRmFjZWJvb2suICBBZGRpdGlvbmFsbHkgc29tZSBwbHVnaW5zIGFyZSBwcm92aWRlZCBmb3Igc3RvcmluZyBhbmQgcmV0cmlldmluZyBhcHAgc3BlY2lmaWMgaW5mb3JtYXRpb24gZm9yIGEgZmFjZWJvb2sgdXNlci48L3A+CjxoND48dT5GYWNlYm9vayBTb2NpYWwgUGx1Z2luczo8L3U+PC9oND4KICAgPHA+VGhlIGZvbGxvd2luZyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgc21hcnR5IGZ1bmN0aW9ucyB0byBhbGxvdyBpbnRlZ3JhdGluZyBGYWNlYm9vayBpbnRvIHlvdXIgd2Vic2l0ZS4gIFNlZSB0aGUgJnF1b3Q7U21hcnR5IEZ1bmN0aW9ucyZxdW90OyBzZWN0aW9uIGJlbG93IGZvciBhIGRldGFpbGVkIHJlZmVyZW5jZSBvZiBlYWNoIHBsdWdpbi4gRm9yIGEgcmVmZXJlbmNlIHlvdSBzaG91bGQgcmVhZCB0aGlzIHBhZ2UgYWJvdXQgPGEgaHJlZj0iaHR0cDovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL3BsdWdpbnMiPkZhY2Vib29rIFNvY2lhbCBQbHVnaW5zPC9hPjwvcD4KPHVsPgogPGxpPjxjb2RlPntjZ2ZiX2xpa2V9PC9jb2RlPiBXaWxsIGRpc3BsYXkgYSBGYWNlYm9vayBsaWtlIGJ1dHRvbiB0byBhbGxvdyB1c2VycyB0byAmcXVvdDtMaWtlJnF1b3Q7IFRoZSBjdXJyZW50IFBhZ2UuPGJyLz48dT5Ob3RlOjwvdT4geW91IHNob3VsZCB0dXJuIHlvcnUgd2ViIHBhZ2VzIGFuZCBvdGhlciBpdGVtcyBpbnRvICZxdW90O0dyYXBoIE9iamVjdHMmcXVvdDsgZm9yIG9wdGltYWwgYmVoYXZpb3VyLjwvbGk+CiA8bGk+PGNvZGU+e2NnZmJfY29tbWVudHN9PC9jb2RlPiBXaWxsIGRpc3BsYXkgYSBmb3JtIGFsbG93aW5nIHVzZXJzIHRvIGFkZCBhIGNvbW1lbnQgdG8gdGhlIGN1cnJlbnQgcGFnZSwgb3IgYW4gaXRlbSBvbiB0aGUgcGFnZSwgYW5kIHRvIHZpZXcgdGhlIGNvbW1lbnRzIG9mIG90aGVycy48L2xpPgo8L3VsPjxici8+CiA8cD5UaGUgc2ltcGxlc3Qgd2F5IHRvIGFkZCBmYWNlYm9vayBpbnRlZ3JhdGlvbiBpbnRvIHlvdXIgc2l0ZSBpcyBqdXN0IHRvIGFkZCA8Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYl9saWtlfTwvY29kZT4gaW50byB0aGUgcGFnZSB0ZW1wbGF0ZSBvZiB5b3VyIHNpdGUuICBOb3cgYW55IHBhZ2UgdGhhdCB1c2VzIHRoaXMgcGFnZSB0ZW1wbGF0ZSB3aWxsIGhhdmUgYSBmYWNlYm9vayAmcXVvdDtMaWtlJnF1b3Q7IGJ1dHRvbiBhdHRhY2hlZCB0byBpdC4gIFlvdSBkbyBub3QgbmVlZCB0byBjcmVhdGUgYSBmYWNlYm9vayBhcHBsaWNhdGlvbiwgb3IgZXZlbiB0byBjYWxsIHtjZ2ZiX2luaXR9IHRvIHVzZSB0aGlzIGZ1bmN0aW9uLjwvcD4KIDxwPlRoZSBuZXh0IG1vc3QgY29tbW9uIHdheSB0byBhZGQgZmFjZWJvb2sgaW50ZWdyYXRpb24gaW50byB5b3VyIHNpdGUgaXMgdG8gYWxsb3cgdmlzaXRvcnMgdG8gZW50ZXIgY29tbWVudHMuICBZb3UgY2FuIGRvIHRoaXMgYnkgYWRkaW5nIHRoZSA8Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYl9jb21tZW50c308L2NvZGU+IHRhZyBpbnRvIHlvdXIgcGFnZSB0ZW1wbGF0ZS48L3A+CiA8cD5BZGRpbmcgYSAmcXVvdDtsaWtlJnF1b3Q7IGJ1dHRvbiBiZXNpZGUgZWFjaCBlbnRyeSBvbiB5b3VyIFByb2R1Y3Qgc3VtbWFyeSB2aWV3cyB5b3UgY2FuIHNpbXBseSBwYXNzIHRoZSBkZXRhaWwgdXJsIHZhbHVlIGZvciBlYWNoIHByb2R1Y3QgZGlzcGxheWVkIGluIHRoZSBzdW1tYXJ5IHZpZXcgYXMgdGhlIDxlbT5ocmVmPC9lbT4gcGFyYW1ldGVyIHRvIHRoZSB7Y2dmYl9saWtlfSB0YWcuICBpLmU6PGJyLz4KIDxwcmU+e2ZvcmVhY2ggZnJvbT1cJGl0ZW1zIGl0ZW09ZW50cnl9PGJyLz57KiB5b3VyIG90aGVyIHN1bW1hcnkgdGVtcGxhdGUgc3R1ZmYgKn08YnIvPjxzcGFuIHN0eWxlPSJjb2xvcjogZ3JlZW47Ij57Y2dmYl9saWtlIGhyZWY9XCRlbnRyeS0+ZGV0YWlsX3VybH08L3NwYW4+PGJyLz57L2ZvcmVhY2h9PC9wcmU+CiA8cD4KCjxici8+PGg0Pjx1PkludGVncmF0aW5nIHdpdGggT3BlbkdyYXBoOjwvdT48L2g0Pgo8cD5JbnRlZ3JhdGluZyB3aXRoIE9wZW5HcmFwaCB3aWxsIGFsbG93IGZhY2Vib29rIHRvIGJldHRlciB1bmRlcnN0YW5kIHdoYXQgdHlwZSBvZiBkYXRhIGlzIG9uIHRoZSBwYWdlIChhIHZpZGVvLCBpbWFnZSwgcGVyc29uYWwgaW5mb3JtYXRpb24sIGNvbXBhbnkgaW5mb3JtYXRpb24sIGV0YykuICBJdCBpcyBhZHZpc2VkIHRoYXQgeW91IGludGVncmF0ZSB3aXRoIE9wZW5HcmFwaCBhcyBtdWNoIGFzIHBvc3NpYmxlIGZvciBtYXhpbXVtIGVmZmVjdGl2ZW5lc3MsIGFuZCBmb3Igdmlld2luZyBpbmZvcm1hdGlvbiBhYm91dCBmYWNlYm9vayAmcXVvdDtpbnNpZ2h0cyZxdW90Oy48L3A+CiAgIDxwPlJlZmVyZW5jZTogPGEgaHJlZj0iaHR0cDovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL2RvY3Mvb3BlbmdyYXBoIj5UaGUgT3BlbiBHcmFwaCBQcm90b2NvbDwvYT48L3A+Cjx1bD4KPGxpPjxjb2RlPntjZ2ZiX29nX3ZhbHVlfTwvY29kZT4gSXMgdXNlZCB0byBjcmVhdGUgYSBzaW1wbGUgbmFtZS92YWx1ZSBwYWlyIGZvciB5b3VyIE9wZW5HcmFwaCBPYmplY3QuPC9saT4KPGxpPjxjb2RlPntjZ2ZiX29nX3RpdGxlfTwvY29kZT4gSXMgdXNlZCB0byBzZXQgdGhlICZxdW90O29nOnRpdGxlJnF1b3Q7IGF0dHJpYnV0ZS48L2xpPgo8bGk+PGNvZGU+e2NnZmJfb2dfdHlwZX08L2NvZGU+IElzIHVzZWQgdG8gc2V0IHRoZSAmcXVvdDtvZzp0eXBlJnF1b3Q7IGF0dHJpYnV0ZS48L2xpPgo8bGk+PGNvZGU+e2NnZmJfb2dfaW1hZ2V9PC9jb2RlPiBJcyB1c2VkIHRvIHNlIHRoZSAmcXVvdDtvZzppbWFnZSZxdW90OyBhdHRyaWJ1dGUuPC9saT4KPGxpPjxjb2RlPntjZ2ZiX29nX3NpdGVuYW1lfTwvY29kZT4gSXMgdXNlZCB0byBzZXQgdGhlICZxdW90O29nOnNpdGVuYW1lJnF1b3Q7IGF0dHJpYnV0ZS48L2xpPgo8bGk+PGNvZGU+e2NnZmJfb2dfYWRtaW5zfTwvY29kZT4gSXMgdXNlZCB0byBzZXQgdGhlICZxdW90O2ZiOmFkbWlucyZxdW90OyBhdHRyaWJ1dGUuPC9saT4KPGxpPjxjb2RlPntjZ2ZiX29nX21ldGF9PC9jb2RlPiBHYXRoZXJzIGFsbCB0aGUgb3BlbmdyYXBoIGF0dHJpYnV0ZXMgdGhhdCBoYXZlIGJlZW4gc2V0LCBhbmQgYXBwbGllcyBzb21lIGludGVsaWdlbnQgZGVmYXVsdHMgdG8gdGhvc2UgdGhhdCBoYXZlIG5vdCBiZWVuIHNldCwgYW5kIG91dHB1dHMgdGhlIGFwcHJvcHJpYXRlIG1ldGEgdGFncy48L2xpPgo8L3VsPjxici8+CjxwPlRoZSA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncmFwaHByb3RvY29sLm9yZyI+T3BlbiBHcmFwaCBQcm90b2NvbDwvYT4gZXNzZW50aWFsbHkgYWxsb3dzIHlvdSB0byBkZXNjcmliZSByZWFsIHdvcmxkIG9iamVjdHMgdXNpbmcgbWV0YSB0YWdzIGFuZCBIVE1MIGNvbnRlbnQuICBXaGVuIHRoZSBPcGVuIEdyYXBoIFByb3RvY29sIEZhY2Vib29rIHdpbGwgZXNzZW50aWFsbHkgdHJlYXQgeW91ciB3ZWIgcGFnZSBhcyBhICZxdW90O0ZhY2Vib29rIFBhZ2UmcXVvdDsgYW5kIHRoZSBzdHJ1Y3R1cmVkIGRhdGEgeW91IHByb3ZpZGUgZGVmaW5lcyBob3cgeW91ciBwYWdlIHdpbGwgYmUgcHJlc2VudGVkIHRvIGZhY2Vib29rLjwvcD4KPHA+SW1wbGVtZW50aW5nIHRoZSBPcGVuIEdyYXBoIFByb3RvY29sIGluIHlvdXIgcGFnZSBpcyA8ZW0+dXN1YWxseTwvZW0+IGFzIHNpbXBsZSBhcyBhZGRpbmcge2NnZmJfb2dfbWV0YX0gaW50byB0aGUgaGVhZCBzZWN0aW9uIG9mIHlvdXIgcGFnZSB0ZW1wbGF0ZSwgYW5kIHRoZW4gYWRkaW5nIHRoZSBhcHByb3ByaWF0ZSBhdHRyaWJ1dGVzIHRvIGRlc2NyaWJlIHlvdXIgb2JqZWN0IGluIHRoZSBhcHByb3ByaWF0ZSBtb2R1bGUgdGVtcGxhdGUsIEdDQiBvciBwYWdlIGNvbnRlbnQgYmxvY2suICBUaGUgZm9sbG93aW5nIGV4YW1wbGUgd2lsbCBjcmVhdGUgb3BlbmdyYXBoIG9iamVjdHMgb24gZWFjaCBwcm9kdWN0IGRldGFpbCBwYWdlLjwvcD4KPHVsPgo8bGk+MS4gIEVuc3VyZSB0aGF0ICZxdW90O3Byb2Nlc3Nfd2hvbGVfdGVtcGxhdGUmcXVvdDsgaXMgc2V0IHRvICZxdW90O2ZhbHNlJnF1b3Q7IGluIHlvdXIgY29uZmlnLnBocDwvbGk+CjxsaT4yLiAgQWRkIHRoZSB7Y2dmZ19vZ19tZXRhfSB0YWcgc29tZXdoZXJlIGluIHRoZSAmbHQ7aGVhZCZndDsgc2VjdGlvbiBvZiB5b3VyIHBhZ2UgdGVtcGxhdGUuICBPcHRpb25hbGx5LCB5b3UgbWF5IGFkZCBpdCBpbiB0aGUgJnF1b3Q7UGFnZSBTcGVjaWZpYyBNZXRhZGF0YSZxdW90OyBzZWN0aW9uIG9mIHRoZSBwYWdlIHRoYXQgeW91IHVzZSBmb3IgYSBQcm9kdWN0cyBEZXRhaWwgVmlldy48L2xpPgo8bGk+My4gIEluIHRoZSBkZWZhdWx0IFByb2R1Y3RzIGRldGFpbCB0ZW1wbGF0ZSBhZGQgdGhlIGZvbGxvd2luZyBsaW5lczoKPGJyLz4KPHByZT48c3BhbiBzdHlsZT0iY29sb3I6Z3JlZW47Ij57Y2dmYl9vZ190aXRsZSB0aXRsZT1cJGVudHJ5LT5wcm9kdWN0X25hbWV9PGJyLz57Y2dmYl9vZ190eXBlIHR5cGU9J3Byb2R1Y3QnfTwvc3Bhbj48L3ByZT4KPC9wcmU+CjwvbGk+CjwvdWw+Cjxici8+PHA+T25jZSB5b3UgYnJvd3NlIHRvIGEgZGV0YWlsIHZpZXcgb2YgYSBwcm9kdWN0LCBhbmQgdmlldyB0aGUgc291cmNlLCB5b3Ugc2hvdWxkIG5vdyBzZWUgdGhlIE9wZW4gR3JhcGggbWV0YSB0YWdzIGluIHRoZSBwYWdlIGhlYWRlci4gIE5vdyB3aGVuIGNvbWJpbmVkIHdpdGggYSBsaWtlIGJ1dHRvbiBhcyBkZXNjcmliZWQgYWJvdmUsIHlvdXIgd2Vic2l0ZSBpbnRlZ3JhdGlvbiBpcyBuZWFybHkgZG9uZS48L3A+Cgo8YnIvPjxoND48dT5TaW1wbGUgRmFjZWJvb2sgQXBwbGljYXRpb25zOjwvdT48L2g0Pgo8dWw+CiA8bGk+PGNvZGU+e2NnZmJfaW5pdH08L2NvZGU+IFdpbGwgb3V0cHV0IHRoZSBqYXZhc2NyaXB0IHRvIGluaXRpYWxpemUgdGhlIEZhY2Vib29rIEphdmFzY3JpcHQgQVBJPC9saT4KIDxsaT48Y29kZT57Y2dmYl9sb2dpbn08L2NvZGU+IFdpbGwgZGlzcGxheSBhIEZhY2Vib29rIGxvZ2luIGJ1dHRvbi48L2xpPgogPGxpPjxjb2RlPntjZ2ZiX2xvZ291dH08L2NvZGU+IFdpbGwgZGlzcGxheSBhIEZhY2Vib29rIGxvZ291dCBidXR0b24uPC9saT4KIDxsaT48Y29kZT57Y2dmYl91aWR9PC9jb2RlPiBXaWxsIGRpc3BsYXkgdGhlIHVzZXJzIEZhY2Vib29rIFVzZXIgSUQuPC9saT4KIDxsaT48Y29kZT57Y2dmYl9pbnZpdGV9PC9jb2RlPiBXaWxsIGRpc3BsYXkgYW4gYWR2YW5jZWQgZm9ybSBhbGxvd2luZyB5b3VyIHVzZXJzIHRvIGludml0ZSB0aGVpciBmcmllbmRzIHRvIHlvdXIgYXBwbGljYXRpb24uPC9saT4KIDxsaT48Y29kZT57Y2dmYl9tZX08L2NvZGU+IFdpbGwgcmV0dXJuIGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgRmFjZWJvb2sgVXNlciB0aGF0IGhlIGhhcyBhbGxvd2VkIHlvdSB0byBzZWUuPC9saT4KIDxsaT48Y29kZT57Y2dmYl9hcGl9PC9jb2RlPiBDYW4gbWFrZSBhbnkgcmVxdWVzdCB0byB0aGUgamF2YXNjcmlwdCBHUkFQSCBBUEkuPC9saT4KIDxsaT48Y29kZT57Y2dmYl9hcHB9PC9jb2RlPiBXaWxsIHJldHJpZXZlIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB5b3VyIGZhY2Vib29rIGFwcGxpY2F0aW9uLjwvbGk+CiA8bGk+PGNvZGU+e2NnZmJfc2VuZH08L2NvZGU+IENhbiBzZW5kIGEgY29tbWFuZCB0byB0aGUgRmFjZWJvb2sgR3JhcGggQVBJIHZpYSBQT1NULjwvbGk+CiA8bGk+PGNvZGU+e2NnZmJfd2FsbHBvc3R9PC9jb2RlPiBVc2VzIHRoZSBGYWNlYm9vayBSRVNUIEFQSSB0byBjcmVhdGUgYSB3YWxsIHBvc3QgZm9yIHRoZSBjdXJyZW50IEZhY2Vib29rIFVzZXIuPC9saT4KIDxsaT48Y29kZT57Y2dmYl9zdGF0dXN9PC9jb2RlPiBVc2VzIHRoZSBGYWNlYm9vayBSRVNUIEFQSSB0byBjcmVhdGUgYSBzdGF0dXMgcG9zdCBmb3IgdGhlIGN1cnJlbnQgRmFjZWJvb2sgVXNlci48L2xpPgogPGxpPjxjb2RlPntjZ2ZiX2ZxbH08L2NvZGU+IFVzaW5nIHRoZSBGYWNlYm9vayBSRVNUIEFQSSBzZW5kIHRvIHNlbmQgYW4gRlFMIHF1ZXJ5LjwvbGk+CiA8bGk+PGNvZGU+e2NnZmJfZnFsX211bHRpfTwvY29kZT4gVXNpbmcgdGhlIEZhY2Vib29rIFJFU1QgQVBJIHNlbmQgdG8gbXVsdGlwbGUgRlFMIHF1ZXJpZXMgaW4gYSBzaW5nbGUgcmVxdWVzdCA8ZW0+KGJlY2F1c2UgRlFMIGRvZXMgbm90IHN1cHBvcnQgam9pbnMpPC9lbT4uPC9saT4KIDxsaT48Y29kZT57Y2dmYnVzZXJkYXRhX2dldH08L2NvZGU+IFdpbGwgcmV0cmlldmUgdGhlIGluZm9ybWF0aW9uIHlvdSBoYXZlIHN0b3JlZCBhYm91dCB0aGlzIHVzZXIgZnJvbSB0aGUgZGF0YWJhc2UuPC9saT4KIDxsaT48Y29kZT57Y2dmYnVzZXJkYXRhX3NldH08L2NvZGU+IFdpbGwgc3RvcmUgc2VsZWN0ZWQgaW5mb3JtYXRpb24gZm9yIHRoaXMgZmFjZWJvb2sgdXNlciBpbnRvIHRoZSBkYXRhYmFzZS48L2xpPgogPGxpPjxjb2RlPntjZ2ZidXNlcmRhdGFfZXJhc2V9PC9jb2RlPiBXaWxsIGVyYXNlIGEgcG9ydGlvbiBvZiB0aGUgZ2F0aGVyZWQgaW5mb3JtYXRpb24gZm9yIHRoaXMgZmFjZWJvb2sgdXNlciBmcm9tIHRoZSBkYXRhYmFzZS48L2xpPgogPGxpPjxjb2RlPntjZ2ZidXNlcmRhdGFfZXJhc2V1c2VyfTwvY29kZT4gV2lsbCBlcmFzZSBhbGwgaW5mb3JtYXRpb24gZm9yIHRoaXMgZmFjZWJvb2sgdXNlciBmcm9tIHRoZSBkYXRhYmFzZS48L2xpPgogPGxpPjxjb2RlPntjZ2ZidXNlcmRhdGFfYXBwZnJpZW5kc308L2NvZGU+IFdpbGwgcmV0cmlldmUgYSBsaXN0IG9mIHRoZSB1c2VycyBmcmllbmRzIHRoYXQgYWxzbyBoYXZlIGluZm9ybWF0aW9uIGluIHRoZSBkYXRhYmFzZS48L2xpPgo8L3VsPjxici8+CiA8cD5DcmVhdGluZyBhIGZhY2Vib29rIGFwcGxpY2F0aW9uIGludm9sdmVzIG51bWVyb3VzIHN0ZXBzOjwvcD4KPHVsPgogPGxpPjEuICBDcmVhdGUgYSBDTVNNUyBwYWdlIHRlbXBsYXRlIHRoYXQgZGlzcGxheXMgY29ycmVjdGx5IGluIGEgd2lkdGggZm8gNzYwIHBpeGVscy4gIChGb3IgZnV0dXJlIHJlZmVyZW5jZSBJIHdpbGwgcmVmZXIgdG8gdGhpcyB0ZW1wbGF0ZSBhcyB0aGUgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+ZmJfY2FudmFzPC9zcGFuPiB0ZW1wbGF0ZS4pPC9saT4KIDxsaT4yLiAgQ3JlYXRlIGEgbmV3IHBhZ2UgaW4geW91ciBDTVNNUyBwYWdlIGhpZXJhcmNoeSB0aGF0IHVzZXMgdGhlIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPmZiX2NhbnZhczwvc3Bhbj4gdGVtcGxhdGUuICBGb3IgcmVmZXJlbmNlIHB1cnBvc2VzIGxldHMgY2FsbCB0aGlzIHRoZSA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij5teV9hcHA8L3NwYW4+IHBhZ2UuPC9saT4KIDxsaT4zLiAgUmVnaXN0ZXJpbmcgYSBmYWNlYm9vayBhcHBsaWNhdGlvbiBhdDogPGEgaHJlZj0iaHR0cDovL3d3dy5mYWNlYm9vay5jb20vZGV2ZWxvcGVycy9jcmVhdGVhcHAucGhwIj5odHRwOi8vd3d3LmZhY2Vib29rLmNvbS9kZXZlbG9wZXJzL2NyZWF0ZWFwcC5waHA8L2E+PC9saT4KIDxsaT40LiAgU2V0dGluZyB1cCB5b3VyIGZhY2Vib29rIGFwcGxpY2F0aW9uIGZvciBjb21wYXRpYmlsaXR5LCBhbmQgZWFzeSBpbnRlZ3JhdGlvbiB3aXRoIENNU01TLiAgSSB3aWxsIG5vdCBnbyB0aHJvdWdoIHRoZSBkZXRhaWwgb2YgYWxsIG9mIHRoZSBzZXR0aW5ncyB5b3Ugc2hvdWxkIGNoYW5nZS4gIEhvd2V2ZXIgeW91IHNob3VsZCBnaXZlIHlvdXIgY2FudmFzIHBhZ2UgYSBuYW1lLCBhbmQgc3BlY2lmeSB0aGUgZnVsbCB1cmwgdG8gdGhlIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPm15X2FwcDwvc3Bhbj4gcGFnZSB0aGF0IHdpbGwgcmVwcmVzZW50IHlvdXIgY2FudmFzIHBhZ2UuICBZb3UgYWxzbyBzaG91bGQgc3BlY2lmeSB0aGUgJnF1b3Q7Q2FudmFzIFR5cGUmcXVvdDsgYXMgJnF1b3Q7SWZyYW1lJnF1b3Q7PGJyLz48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IEl0IGFwcGVhcnMgdGhhdCBmYWNlYm9vayByZXF1aXJlcyBhICZxdW90O2ZvbGRlciZxdW90OyBiZSBzcGVjaWZpZWQgZm9yIHRoZSBDYW52YXMgVVJMLCB5b3UgbWF5IGhhdmUgdG8gZWRpdCB5b3VyIHNldHRpbmdzIGluIHRoZSBjb25maWcucGhwIGZpbGUgKGkuZSBlbmFibGUgcHJldHR5IHVybHMsIGFuZCByZW1vdmUgYSBwYWdlIGV4dGVuc2lvbikgZm9yIGZhY2Vib29rIHRvIGJlIGhhcHB5LjwvbGk+CiA8bGk+NS4gIEluIHRoZSAmcXVvdDtDYWxndXlzIEZhY2Vib29rIFRvb2xraXQmcXVvdDsgYWRtaW4gcGFuZWwgZmlsbCBpbiB0aGUgJnF1b3Q7QXBwbGljYXRpb24gSUQmcXVvdDsgYW5kIHRoZSAmcXVvdDtBcHAgU2VjcmV0JnF1b3Q7IGFzIHNwZWNpZmllZCBieSBmYWNlYm9vay4gIFlvdSBzaG91bGQgYWxzbyBzZWxlY3QgdGhlIHBlcm1pc3Npb25zIHRoYXQgeW91ciBhcHBsaWNhdGlvbiB3aWxsIG5lZWQgYXMgZGVmaW5lZCA8YSBocmVmPSJodHRwOi8vZGV2ZWxvcGVycy5mYWNlYm9vay5jb20vZG9jcy9hdXRoZW50aWNhdGlvbi9wZXJtaXNzaW9ucyI+aGVyZTwvYT4uPGJyLz48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IEl0IGlzIHByb2JhYmx5IGEgZ29vZCBpZGVhIHRvIHJlc3RyaWN0IHRoZSBudW1iZXIgb2YgcGVybWlzc2lvbnMgeW91IHNlbGVjdCB0byBhcyBsaXR0bGUgYXMgcG9zc2libGUgaW4gb3JkZXIgdG8gZ2V0IHdpZGVyIGFjY2VwdGFuY2UgZm9yIHlvdXIgYXBwbGljYXRpb24uPC9saT4KIDxsaT42LiAgV2hlbiBlZGl0aW5nIHlvdXIgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+ZmJfY2FudmFzPC9zcGFuPiBwYWdlIHRlbXBsYXRlLCBhZGQgdGhlIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZiX2luaXR9PC9zcGFuPiB0YWcgZGlyZWN0bHkgYWZ0ZXIgdGhlIG9wZW5pbmcgJmx0O2JvZHkmZ3Q7IHRhZy4gICBZb3UgbWF5IGFsc28gYWRkIHRoZSA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYl9sb2dpbn08L3NwYW4+IHRhZyBpbnRvIGFuIGFwcHJvcHJpYXRlIHNlY3Rpb24gb2YgdGhlIHRlbXBsYXRlIChpbiB0aGUgaGVhZGVyIGJhciBvciBhIHNpZGViYXIgZXRjKS4gIFRoaXMgd2lsbCBib3RoIGluaXRpYWxpemUgdGhlIEZhY2Vib29rIEFQSSBhbmQgcHJvdmlkZSBhIGxvZ2luIGJ1dHRvbi4gIFdoZW4gdmlzaXRvcnMgY2xpY2sgb24gdGhlIGxvZ2luIGJ1dHRvbiB0aGV5IHdpbGwgYmUgYXNrZWQgdG8gYXBwcm92ZSB0aGUgcGVybWlzc2lvbnMgeW91IGhhdmUgcmVxdWVzdGVkLjwvbGk+CiA8bGk+Ny4gIE5vdyB3ZSBhcmUgcmVhZHkgdG8gc3RhcnQgd2l0aCB0aGUgZnVuY3Rpb25hbGl0eSBmb3Igb3VyIGZhY2Vib29rIGFwcGxpY2F0aW9uLiAgWW91IHdpbGwgdXNlIGEgY29tYmluYXRpb24gb2Ygc21hcnR5IGxvZ2ljLCB0aGUgcGx1Z2lucyBwcm92aWRlZCBiZWxvdywgYW5kIHlvdXIgb3duIGNvZGUsIG9yIG90aGVyIG1vZHVsZXMgdG8gYnVpbGQgeW91ciBhcHBsaWNhdGlvbi4gQSBzbWFsbCBleGFtcGxlIGFwcGxpY2F0aW9uIGlzIGJlbG93LjwvbGk+CjwvdWw+PGJyLz4KCjxoMz5TYW1wbGUgQXBwbGljYXRpb246PC9oMz4KPHA+VGhlIHNhbXBsZSBhcHBsaWNhdGlvbiBpbGx1c3RyYXRlZCBiZWxvdyBuZWVkcyB0aGUgcHVibGlzaF9zdHJlYW0sdXNlcl9sb2NhdGlvbiwgYW5kIGZyaWVuZHNfbG9jYXRpb24gcGVybWlzc2lvbnMuICBZb3UgY2FuIHNlbGVjdCB0aGVzZSBpbiB0aGUgYWRtaW5pc3RyYXRpb24gcGFuZWwgZm9yIHRoZSBtb2R1bGUuICBZb3Ugd2lsbCBhbHNvIG5lZWQgdG8gcmVnaXN0YXIgYSBmYWNlYm9vayBhcHBsaWNhdGlvbiBhbmQgZmlsbCBpbiB5b3VyIGFwcGxpY2F0aW9uIGlkLCBhbmQgYXBwIHNlY3JldCBpbnRvIHRoZSBhZG1pbiBwYW5lbC48L3A+CjxwcmU+CjxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZiX2luaXR9PC9zcGFuPnsqIGluaXRpYWxpemUgZmFjZWJvb2sgamF2YXNjcmlwdCBTREsgKn0KPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJfbG9naW59PC9zcGFuPnsqIHByb3ZpZGUgYSBsb2dpbiBidXR0b24gdG8gZmFjZWJvb2sgKn0gPGJyLz4KPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJfdWlkIGFzc2lnbj0nZmJfdWlkJ308L3NwYW4+eyogZ2V0IHRoZSBmYWNlYm9vayB1c2VyIGlkICp9CntpZiBcJGZiX3VpZH0KICB7KiB1c2VyIGlzIGxvZ2dlZCBpbiAqfQoKICB7KiBnZXQgaGlzIG9yIGhlciBmcmllbmRzIGZyaWVuZHMgbGlzdCAqfQogIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZiX2FwaSBjYWxsPScvbWUvZnJpZW5kcycgYXNzaWduPSdmcmllbmRzJ308L3NwYW4+CgogIHsqIGNyZWF0ZSBhbiBGUUwgcXVlcnkgKn0KICB7Y2FwdHVyZSBhc3NpZ249JnF1b3Q7ZnFsJnF1b3Q7fXNlbGVjdCBuYW1lLCBiaXJ0aGRheV9kYXRlLCBjdXJyZW50X2xvY2F0aW9uLCBzZXgsIHBpY19zcXVhcmUgZnJvbSB1c2VyIHdoZXJlIHVpZCBJTiAoU0VMRUNUIHVpZDIgRlJPTSBmcmllbmQgV0hFUkUgdWlkMT17XCRtZS5pZH0pey9jYXB0dXJlfQoKICB7KiBleGVjdXRlIGFuIEZRTCBxdWVyeSAqfQogIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZiX2ZxbCBmcWw9XCRmcWwgYXNzaWduPSdyZXMnfTwvc3Bhbj4KCiAgeyogcHJvY2VzcyB0aGUgcmVzdWx0cyBmcm9tIHRoZSBxdWVyeSAqfQogIHtpZiBpc19hcnJheShcJHJlcyl9CiAgICAge2Fzc2lnbiB2YXI9JnF1b3Q7bnVtX3BvaW50cyZxdW90OyB2YWx1ZT0wfQogICAgICAgCiAgICAgeyogZm9yIGVhY2ggZnJpZW5kICp9CiAgICAge2ZvcmVhY2ggZnJvbT1cJHJlcyBpdGVtPSZxdW90O2ZyaWVuZCZxdW90O30KCiAgICAgeyogaWYgd2UgaGF2ZSBhIGxvY2F0aW9uICp9CiAgICAge2lmIGlzc2V0KFwkZnJpZW5kLmN1cnJlbnRfbG9jYXRpb24pfQoKICAgICAgICB7KiBidWlsZCBhIGxvY2F0aW9uIHN0cmluZyAqfQogICAgICAgIHthc3NpZ24gdmFyPSZxdW90O251bV9wb2ludHMmcXVvdDsgdmFsdWU9ImBcJG51bV9wb2ludHMrMWAifQogICAgICAgIHtjYXB0dXJlIGFzc2lnbj0mcXVvdDtsb2MmcXVvdDt9e3N0cmlwfQogICAgICAgICAgIHtpZiBcJGZyaWVuZC5jdXJyZW50X2xvY2F0aW9uLmNvdW50cnkgPT0gJnF1b3Q7Q2FuYWRhJnF1b3Q7IG9yIFwkZnJpZW5kLmN1cnJlbnRfbG9jYXRpb24uY291bnRyeSA9PSAmcXVvdDtVbml0ZWQgU3RhdGVzJnF1b3Q7fQogICAgICAgICAgICAgICB7XCRmcmllbmQuY3VycmVudF9sb2NhdGlvbi5jaXR5fSwge1wkZnJpZW5kLmN1cnJlbnRfbG9jYXRpb24uc3RhdGV9IHtcJGZyaWVuZC5jdXJyZW50X2xvY2F0aW9uLmNvdW50cnl9CiAgICAgICAgICAge2Vsc2V9CiAgICAgICAgICAgICAgIHtcJGZyaWVuZC5jdXJyZW50X2xvY2F0aW9uLmNpdHl9IHtcJGZyaWVuZC5jdXJyZW50X2xvY2F0aW9uLmNvdW50cnl9CiAgICAgICAgICAgey9pZn0KICAgICAgICB7L3N0cmlwfXsvY2FwdHVyZX0KCiAgICAgICAgeyogYWRkIGEgcG9pbnQgdG8gb3VyIG1hcCAqfQogICAgICAgIHtjZ2dtX2FkZF9keW5wb2ludCBuYW1lPVwkZnJpZW5kLm5hbWUgYWRkcmVzcz1cJGxvYyBkZXNjPVwkZnJpZW5kLnNleH0KICAgICB7L2lmfQogIHsvZm9yZWFjaH0KCiAge2lmIFwkbnVtX3BvaW50cyBndCAwfQogICAgIHsqIGRpc3BsYXkgdGhlIG1hcCAqfQogICAgIHtDR0dvb2dsZU1hcHN9CiAgey9pZn0KCiAgey9pZn0Key9pZn08L3ByZT4KCjxoMz5TbWFydHkgRnVuY3Rpb24gUmVmZXJlbmNlOjwvaDM+Cjx1bD4KIDxsaT5Tb2NpYWwgUGx1Z2luczoKIDx1bD4KIDxsaT48Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYl9saWtlIFtwYXJhbXNdXTwvY29kZT4KIDxwPkNyZWF0ZSBhICZxdW90O0xpa2UmcXVvdDsgQnV0dG9uIGZvciBhIFVSTC48YnIvPlBhcmFtZXRlcnM6CiAgIDx1bD4KICAgPGxpPmhyZWYgLSAoc3RyaW5nKSBUaGUgVVJMIHRvIGFsbG93IHBlb3BsZSB0byBsaWtlLiAgKGRlZmF1bHQgaXMgdGhlIGN1cnJlbnQgcGFnZSBVUkwuKTwvbGk+CiAgIDxsaT5sYXlvdXQgLSAoc3RyaW5nKSBUaGUgbGF5b3V0IG9mIGJ1dHRvbi4gIFBvc3NpYmxlIHZhbHVlcyBhcmUgc3RhbmRhcmQsYnV0dG9uX2NvdW50LGJveF9jb3VudC48L2xpPgogICA8bGk+c2hvd19mYWNlcyAtIChib29sZWFuKSBXZXRoZXIgdG8gc2hvdyBmYWNlcyBvZiB0aGUgb3RoZXJzIHRoYXQgaGF2ZSBsaWtlZCB0aGUgaXRlbS48L2xpPgogICA8bGk+YWN0aW9uIC0gKHN0cmluZykgVGhlIGJlYXZpb3VyIG9mIHRoZSBidXR0b24sIFBvc3NpYmxlIHZhbHVlcyBhcmUgbGlrZSxyZWNvbW1lbmQuPC9saT4KICAgPGxpPndpZHRoIC0gKGludCkgVGhlIHdpZHRoIG9mIHRoZSBsaWtlIGJ1dHRvbiBpbiBwaXhlbHMuPC9saT4KICAgPGxpPmZvbnQgLSAoc3RyaW5nKSBUaGUgc3RyaW5nIHRvIHVzZSBmb3IgdGhlIGZvcm0gb3IgZGlzcGxheS4gIFZhbHVlcyBhcmUgYXJpYWwsbHVjaWRlIGdyYW5kZSxzZWdvZSB1bCx0YWhvbWEsdmVyZGFuYTwvbGk+CiAgIDxsaT5jb2xvcnNjaGVtZSAtIChzdHJpbmcpIFRoZSBjb2xvciBzY2hlbWUgZm9yIHRoZSBmb3JtLiAgVmFsdWVzIGFyZSBsaWdodCxkYXJrPC9saT4KICAgPGxpPnJlZiAtIChzdHJpbmcpIEFuIG9wdGlvbmFsIHJlZmVyZW5jZSB2YWx1ZSB0byB1c2UgZm9yIHN0YXRpc3RpY3MgcHVycG9zZXMuPC9saT4KICAgPGxpPmFzc2lnbiAtIChzdHJpbmcpICBBc3NpZ24gdGhlIG91dHB1dCB0byBhIHNtYXJ0eSB2YXJpYWJsZS48L2xpPgogICA8L3VsPgogICA8L3A+PGJyLz4KIDwvbGk+ICAgICAgCgogPGxpPjxjb2RlIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZiX2NvbW1lbnRzIFtwYXJhbXNdfTwvY29kZT4KIDxwPkNyZWF0ZSBhIGZvcm0gYWxsb3dpbmcgZmFjZWJvb2sgdXNlcnMgdG8gbGVhdmUgY29tbWVudHMgb24gYSBwYWdlLCBvciBvbiBhbiBpdGVtLjxici8+UGFyYW1ldGVyczoKIDx1bD4KICAgPGxpPnVuaXF1ZWlkIC0gKHN0cmluZykgQSB1bmlxdWUgaWRlbnRpZmllciB0byB1c2UgdG8gaWRlbnRpZnkgdGhlIGl0ZW0gdGhhdCBpcyBiZWluZyBjb21tZW50ZWQgb24uIChkZWZhdWx0IGlzIGEgaGFzaCBvZiB0aGUgY3VycmVudCBwYWdlIHVybCkuPC9saT4KICAgPGxpPndpZHRoIC0gKGludCkgVGhlIG1heGltdW0gd2lkdGggb2YgdGhlIGZvcm0gaW4gcGl4ZWxzLiAoZGVmYXVsdCBpcyA0MjUpPC9saT4KICAgPGxpPm5jb21tZW50cyAtIChpbnQpIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb21tZW50cyB0byBkaXNwbGF5IGF0IG9uZSB0aW1lLiAgKGRlZmF1bHQgaXMgMTApPC9saT4KICAgPGxpPnB1Ymxpc2ggLSAoYm9vbGVhbikgV2V0aGVyIHRoZSAmcXVvdDtwdWJsaWMgY29tbWVudCZxdW90OyBjaGVja2JveCBzaG91bGQgYmUgZGlzcGxheWVkLjwvbGk+CiAgIDxsaT5hc3NpZ24gLSAoc3RyaW5nKSAgQXNzaWduIHRoZSBvdXRwdXQgdG8gYSBzbWFydHkgdmFyaWFibGUuPC9saT4KIDwvdWw+CiA8L3A+PGJyLz4KIDwvbGk+Cgo8L3VsPgo8L2xpPgoKPGxpPk9wZW5HcmFwaCBQbHVnaW5zOgo8dWw+CiAgPGxpPjxjb2RlIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZiX29nX3ZhbHVlIG5hbWU9Jmx0O3N0cmluZyZndDsgdmFsdWU9Jmx0O3N0cmluZyZndDt9PC9jb2RlPgogIDxwPkNyZWF0ZSBhIG5hbWUvdmFsdWUgcGFpciB0byBvdXRwdXQgd2l0aCBpbmZvcm1hdGlvbiBmb3IgdGhlIE9wZW5HcmFwaCBBUEkuICBUaGVzZSBuYW1lL3ZhbHVlIHBhaXJzIHdpbGwgYmUgY29sbGVjdGVkIGFuZCBvdXRwdXQgd2l0aCB0aGUge2NnZmJfb2dfbWV0YX0gdGFnLiAgSWYgdGhlIG5hbWUgaGFzIGFscmVhZHkgYmVlbiBzZXQsIHRoZW4gdGhpcyBvcGVyYXRpb24gd2lsbCBvdmVyd3JpdGUgaXRzIHZhbHVlLiBUaGlzIHRhZyBpcyBub3JtYWxseSBjYWxsZWQgZnJvbSB3aXRoaW4gdGhlIGJvZHkgb2YgYSBwYWdlIHRlbXBsYXRlICh1c2luZyB0aGUgZGVmYXVsdCB0ZW1wbGF0ZSBjb25kaXRpb25zIGluIENNU01TKS48YnIvPlBhcmFtZXRlcnM6CiAgIDx1bD4KICAgICAgPGxpPm5hbWUgLSAoc3RyaW5nKSBUaGUgbmFtZSBvZiB0aGUgdmFyaWFibGUuPC9saT4KICAgICAgPGxpPnZhbHVlIC0gKHN0cmluZykgVGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZS48L2xpPgogICA8L3VsPgogIDwvcD48YnIvPgogIDwvbGk+CgogIDxsaT48Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYl9vZ190aXRsZSB0aXRsZT0mbHQ7c3RyaW5nJmd0O308L2NvZGU+CiAgPHA+U2V0IHRoZSBvZzp0aXRsZSBhdHRyaWJ1dGUsIHRoaXMgcGx1Z2luIGlzIGVzc2VudGlhbGx5IGEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiB0aGUge2NnZmJfb2dfdmFsdWV9IHBsdWdpbi48YnIvPlBhcmFtZXRlcnM6CiAgPHVsPgogIDxsaT50aXRsZSAtIChzdHJpbmcpIFRoZSB0aXRsZSBvZiB0aGUgb2JqZWN0IGJlaW5nIGRlc2NyaWJlZC48L2xpPgogIDwvdWw+CiAgPC9wPjxici8+CiAgPC9saT4KCiAgPGxpPjxjb2RlIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZiX29nX3R5cGUgdHlwZT0mbHQ7c3RyaW5nJmd0O308L2NvZGU+CiAgPHA+U2V0IHRoZSBvZzp0eXBlIGF0dHJpYnV0ZSwgdGhpcyBwbHVnaW4gaXMgZXNzZW50aWFsbHkgYSBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mIHRoZSB7Y2dmYl9vZ192YWx1ZX0gcGx1Z2luLjxici8+UGFyYW1ldGVyczoKICA8dWw+CiAgPGxpPnR5cGUgLSAoc3RyaW5nKSBUaGUgb2JqZWN0IHR5cGUuICBPbmUgb2Y6IGFjdGl2aXR5LCBzcG9ydCwgYmFyLCBjb21wYW55LCBjYWZlLCBob3RlbCwgcmVzdGFyYXVudCwgY2F1c2UsIHNwb3J0c19sZWFndWUsIHNwb3J0c190ZWFtLCBiYW5kLCBnb3Zlcm5tZW50LCBub25fcHJvZml0LCBzY2hvb2wsIHVuaXZlcnNpdHksIGFjdG9yLCBhdGhsZXRlLCBhdXRob3IsIGRpcmVjdG9yLCBtdXNpY2lhbiwgcG9saXRpY2lhbiwgcHVibGljX2ZpZ3VyZSwgY2l0eSwgY291bnRyeSwgbGFuZG1hcmssIHN0YXRlX3Byb3ZpbmNlLCBhbGJ1bSwgZHJpbmssIGZvb2QsIGdhbWUsIHByb2R1Y3QsIHNvbmcsIG1vdmllLCB0dl9zaG93LCBibG9nLCB3ZWJzaXRlLCBhcnRpY2xlPC9saT4KICA8L3VsPgogIDwvcD48YnIvPgogIDwvbGk+CgogIDxsaT48Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYl9vZ191cmwgdXJsPSZsdDtzdHJpbmcmZ3Q7fTwvY29kZT4KICA8cD5TZXQgdGhlIGNhbm9uaWNhbCB1cmwgdG8gdGhlIG9iamVjdCAob2c6dXJsKS4gIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIHBhcmFtZXRlciBpcyB0aGUgY3VycmVudCBwYWdlIHVybC48L3A+CiAgPHVsPgogIDxsaT51cmwgLSAoc3RyaW5nKSBUaGUgY2Fub25pY2FsIFVSTCB0byB0aGUgb2JqZWN0LjwvbGk+CiAgPC91bD4KICA8L3A+PGJyLz4KICA8L2xpPgoKICA8bGk+PGNvZGUgc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJfb2dfaW1hZ2UgaW1hZ2U9Jmx0O3N0cmluZyZndDt9PC9jb2RlPgogIDxwPlNldCB0aGUgdXJsIG9mIGFuIGltYWdlIHdoaWNoIHNob3VsZCByZXByZXNlbnQgdGhlIG9iamVjdCBpbiB0aGUgZ3JhcGguPC9wPgogIDx1bD4KICA8bGk+aW1hZ2UgLSAoc3RyaW5nKSBBIFVSTCB0byBhbiBpbWFnZSAoSlBHLFBORywgYW5kIEdJRiBhcmUgc3VwcG9ydGVkKQogIDwvdWw+CiAgPC9wPjxici8+CiAgPC9saT4KCiAgPGxpPjxjb2RlIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZiX29nX3NpdGVuYW1lIHNpdGVuYW1lPSZsdDtzdHJpbmcmZ3Q7fTwvY29kZT4KICA8cD5TZXQgYSBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB5b3VyIHdlYnNpdGUuICAgaS5lOiAmcXVvdDtGcmVkcyBQcm9kdWN0cyZxdW90Oy4gIElmIG5vIHZhbHVlIGlzIHNwZWNpZmllZCBmb3IgdGhpcyBwcm9wZXJ0eSB0aGUgY3VycmVudCB3ZWIgc2l0ZSBuYW1lIHdpbGwgYmUgdXNlZC4uCiAgPHVsPgogIDxsaT5zaXRlbmFtZSAtIChzdHJpbmcpIFRoZSBTaXRlIG5hbWUuPC9saT4KICA8L3VsPgogIDwvcD48YnIvPgogIDwvbGk+CgogIDxsaT48Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYl9vZ19kZXNjIGRlc2M9Jmx0O3N0cmluZyZndDt9PC9jb2RlPgogIDxwPihvZzpkZXNjcmlwdGlvbikgU2V0IGEgYnJpZWYgZGVzY3JpcHRpb24gZm9yIHRoZSBvYmplY3QuICBPbmUgb3IgdHdvIHNlbnRlbmNlcy4KICA8dWw+CiAgPGxpPmRlc2MgLSAoc3RyaW5nKSBUaGUgRGVzY3JpcHRpb24uCiAgPC91bD4KICA8L3A+PGJyLz4KICA8L2xpPgoKICA8bGk+PGNvZGUgc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJfb2dfYWRtaW5zIGFkbWlucz0mbHQ7c3RyaW5nJmd0O308L2NvZGU+CiAgPHA+KGZiOmFkbWlucykgU2V0IHRoZSBsaXN0IG9mIGZhY2Vib29rIGFkbWlucyBmb3IgdGhpcyBvYmplY3QuCiAgPHVsPgogIDxsaT5hZG1pbnMgLSAoc3RyaW5nKSBBIGNvbW1hIHNhcGFyYXRlZCBsaXN0IG9mIGZhY2Vib29rIHVzZXIgaWRzIG9yIGEgIEZhY2Vib29rIFBsYXRmb3JtIGFwcGxpY2F0aW9uIGlkLgogIDwvdWw+CiAgPC9wPjxici8+CiAgPC9saT4KCiAgPGxpPjxjb2RlIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZiX21ldGEgW3BhcmFtc119PC9jb2RlPgogIDxwPlRoaXMgcGx1Z2luIHdpbGwgZ2F0aGVyIGFsbCBvZiB0aGUgcHJlc2V0IE9wZW5HcmFwaCB2YXJpYWJsZXMsIGFwcGx5IHNvbWUgaW50ZWxsaWdlbnQgZGVmYXVsdCB2YWx1ZXMgZm9yIHBhcmFtZXRlcnMgbm90IHNwZWNpZmllZCwgYW5kIGdlbmVyYXRlIHRoZSBhcHByb3ByaWF0ZSBtZXRhIHRhZ3MuICBUaGlzIHBsdWdpbiBpcyB0eXBpY2FsbHkgY2FsbGVkIHdpdGhpbiB0aGUgaGVhZCBzZWN0aW9uIG9mIHRoZSBwYWdlIHRlbXBsYXRlLiAgVGhlIG90aGVyIGNnZmJfb2cqIHBsdWdpbnMgYXJlIGNhbGxlZCBmcm9tIHdpdGhpbiB0aGUgYm9keSBvZiB0aGUgcGFnZSB0ZW1wbGF0ZSAod2l0aGVyIHdpdGhpbiB0aGUgcGFnZSB0ZW1wbGF0ZSBpdHNlbGYsIG9yIGluc2lkZSBvZiBhIGNvbnRlbnQgYmxvY2ssIG9yIGV2ZW4gaW5zaWRlIG9mIGEgR0NCIG9yIG1vZHVsZSB0ZW1wbGF0ZS4gIFRoZW4gYmVjYXVzZSAoYnkgZGVmYXVsdCkgcHJvY2Vzc193aG9sZV90ZW1wbGF0ZSBpcyBGQUxTRSBpbiB0aGUgY29uZmlnLnBocCBmaWxlIG9mIENNU01TIHRoaXMgZnVuY3Rpb24gaXMgcHJvY2Vzc2VkIEFGVEVSIHRoZSBib2R5IG9mIHRoZSB0ZW1wbGF0ZS48YnIvPlBhcmFtZXRlcnM6CiAgPHVsPgogIDxsaT5hc3NpZ24gLSAoc3RyaW5nKSBBIHNtYXJ0eSB2YXJpYWJsZSBuYW1lIHRvIGFzc2lnbiB0aGUgb3V0cHV0IHRvLgogIDwvdWw+CiAgPC9wPjxici8+CiAgPC9saT4KCjwvdWw+CjwvbGk+Cgo8bGk+QXBwbGljYXRpb24gQnVpbGRpbmcgUGx1Z2luczoKPHVsPgogPGxpPjxjb2RlIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZiX2luaXQgW3BhcmFtc119PC9jb2RlPgogICA8cD5Jbml0aWFsaXplcyB0aGUgRmFjZWJvb2sgSmF2YXNjcmlwdCBBUEk8YnIvPgogICAgICAgUGFyYW1ldGVyczoKICAgICAgIDx1bD4KICAgICAgIDxsaT5hc3luYyAtIChib29sZWFuKSBFbmFibGUgQXN5bmNocm9ub3VzIEFQSSBJbml0aWFsaXphdGlvbiAoZGVmYXVsdCA9IGZhbHNlKTwvbGk+CiAgICAgICA8bGk+YXNzaWduIC0gKHN0cmluZykgIEFzc2lnbiB0aGUgb3V0cHV0IHRvIGEgc21hcnR5IHZhcmlhYmxlLjwvbGk+CiAgICAgICA8L3VsPgogICA8L3A+PGJyLz4KIDwvbGk+CgogPGxpPjxjb2RlIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZiX3VpZH08L2NvZGU+CiA8cD5SZXR1cm4gdGhlIFVJRCAgb2YgdGhlIGN1cnJlbnRseSBsb2dnZWQgaW4gRmFjZWJvb2sgVXNlci48YnIvPlBhcmFtZXRlcnM6CiA8dWw+CiAgICA8bGk+YXNzaWduIC0gKHN0cmluZykgIEFzc2lnbiB0aGUgb3V0cHV0IHRvIGEgc21hcnR5IHZhcmlhYmxlLjwvbGk+CiA8L3VsPgogPC9wPjxici8+CiA8L2xpPgoKIDxsaT48Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYl9tZSBhc3NpZ249Jmx0O3N0cmluZyZndDt9PC9jb2RlPgogPHA+UmV0dXJuIGFsbCBvZiB0aGUgaW5mb3JtYXRpb24gdGhhdCB0aGUgZmFjZWJvb2sgdXNlciBoYXMgc2hhcmVkIHdpdGggdGhlIGFwcGxpY2F0aW9uLjxici8+UGFyYW1ldGVyczoKIDx1bD4KICAgIDxsaT5hc3NpZ24gLSAoc3RyaW5nKSAgQXNzaWduIHRoZSBvdXRwdXQgdG8gYSBzbWFydHkgdmFyaWFibGUuPC9saT4KIDwvdWw+CiA8L3A+PGJyLz4KIDxwcmU+RXhhbXBsZTogPGNvZGU+e2NnZmJfbWUgYXNzaWduPSZxdW90O21lJnF1b3Q7fXtcJG1lfEBwcmludF9yfTwvY29kZT48L3ByZT48YnIvPgogPC9saT4KCiA8bGk+PGNvZGUgc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJfYXBpIGNhbGw9Jmx0O3N0cmluZyZndDsgYXNzaWduPSZsdDtzdHJpbmcmZ3Q7fTwvY29kZT4KIDxwPlBlcmZvcm0gYSBHRVQgcmVxdWVzdCB0byB0aGUgRmFjZWJvb2sgR3JhcGggQVBJLCBhbmQgYXNzaWduIHRoZSByZXN1bHRzIHRvIGEgc21hcnR5IHZhcmlhYmxlLjxici8+UGFyYW1ldGVyczoKIDx1bD4KICAgIDxsaT5jYWxsIC0gKHN0cmluZykgIFRoZSBmYWNlYm9vayBHUkFQSCBBUEkgbWV0aG9kIHRvIGNhbGwuPC9saT4KICAgIDxsaT5hc3NpZ24gLSAoc3RyaW5nKSAgQXNzaWduIHRoZSBvdXRwdXQgdG8gYSBzbWFydHkgdmFyaWFibGUuPC9saT4KIDwvdWw+CiA8L3A+PGJyLz4KIDxwcmU+RXhhbXBsZTogPGNvZGU+e2NnZmJfYXBpIGNhbGw9JnF1b3Q7L21lL2ZyaWVuZHMmcXVvdDsgYXNzaWduPSZxdW90O2ZyaWVuZHMmcXVvdDt9e1wkZnJpZW5kc3xAcHJpbnRfcn08L2NvZGU+PC9wcmU+PGJyLz4KIDwvbGk+CgogPGxpPjxjb2RlIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZiX3NlbmQgdXJsPSZsdDtzdHJpbmcmZ3Q7IGFzc2lnbj0mbHQ7c3RyaW5nJmd0OyAuLi59PC9jb2RlPgogPHA+UGVyZm9ybWEgUE9TVCByZXF1ZXN0IHRvIHRoZSBGYWNlYm9vayBHcmFwaCBBUEkgdG8gQ3JlYXRlIGEgbmV3IHJlY29yZCAoZXZlbnQsIGxpa2UsIGltYWdlLCBldGMpIHdpdGhpbiBGYWNlYm9vay48dT5Ob3RlOjwvdT4gdGhpcyBpcyBhIG5vbi1zdGFuZGFyZCBzbWFydHkgcGx1Z2luIGFzIGl0IGlzIG5vdCBhIGRpc3BsYXkgbGV2ZWwgZWxlbWVudCwgaW5zdGVhZCBpdCBtYXkgbm90IHJldHVybiBhbnkgb3V0cHV0IGF0IGFsbC4gIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIHVzZWQgaW5zaWRlIGNvbmRpdGlvbmFscyB0aGF0IGFyZSB0cmlnZ2VyZWQgYnkgdXNlciBhY3Rpb25zLjxici8+UGFyYW1ldGVyczoKIDx1bD4KICAgIDxsaT51cmkgLSAoc3RyaW5nKSAgVGhlIEdyYXBoIEFQSSB0byBwdXQgdG8uLjwvbGk+CiAgICA8bGk+YXNzaWduIC0gKHN0cmluZykgIEFzc2lnbiB0aGUgb3V0cHV0IHRvIGEgc21hcnR5IHZhcmlhYmxlLjwvbGk+CiAgICA8bGk+PGVtPk90aGVyIFBhcmFtZXRlcnM8L2xpPiAtIChtaXhlZCkgU3BlY2lmeSB0aGUgZGF0YSB0byBzZW5kIHRvIHRoZSBmYWNlYm9vayBncmFwaCBBUEkuCiA8L3VsPgogPC9wPjxici8+CiA8cHJlPkV4YW1wbGU6PGJyLz48Y29kZT57aWYgaXNzZXQoXCRzbWFydHkuZ2V0LnRlbGxfbXlfZnJpZW5kcyl9PGJyLz57Y2dmYl9hcGkgY2FsbD0mcXVvdDsvbWUvZnJpZW5kcyZxdW90OyBhc3NpZ249JnF1b3Q7ZnJpZW5kcyZxdW90O308YnIvPntmb3JlYWNoIGZyb209XCRmcmllbmRzIGl0ZW09JnF1b3Q7ZnJpZW5kJnF1b3Q7fTxici8+e2NhcHR1cmUgYXNzaWduPXVyaX17XCRmcmllbmR9L2xpbmtzey9jYXB0dXJlfTxici8+PHNwYW4gc3R5bGU9ImNvbG9yOiBncmVlbjsiPntjZ2ZiX3NlbmQgdXJpPVwkdXJpIGxpbms9JnF1b3Q7aHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZyZxdW90OyBtZXNzYWdlPSZxdW90O0NoZWNrIG91dCB0aGlzIGF3YXJkIHdpbm5pbmcgQ01TIFBhY2thZ2UmcXVvdDt9PC9zcGFuPjxici8+ey9mb3JlYWNofTxici8+ey9pZn08L2NvZGU+PC9wcmU+PGJyLz4KIDwvbGk+CgogPGxpPjxjb2RlIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZiX3dhbGxwb3N0IG1zZz0mbHQ7c3RyaW5nJmd0OyBuYW1lPSZsdDtzdHJpbmcmZ3Q7IGhyZWY9Jmx0O3N0cmluZyZndDsgLi4ufTwvY29kZT4KIDxwPkNyZWF0ZSBhIHdhbGwgcG9zdCBvbiBhIHVzZXJzIHdhbGwuIEFsbG93cyB1cCB0byA1IGltYWdlcywgYWRkaXRpb25hbCBsaW5rcywgYW5kIGFsbG93cyBhc3NvY2lhdGluZyBkYXRhIHdpdGggdGhlIHdhbGwgcG9zdCBmb3IgdHJhY2tpbmcgcHVycG9zZXMuICBXYWxsIHBvc3RzIGFsbG93IGZvciBhIHNpbmdsZSAmcXVvdDthdHRhY2htZW50JnF1b3Q7IHdpdGggYW4gaW1hZ2UsIGEgdmlkZW8sIGV0Yy4gYW5kIHVwIHRvIDUgaW1hZ2VzIHdpdGggYXNzb2NpYXRlZCBVUkxTLjxici8+UGFyYW1ldGVyczoKIDx1bD4KICAgIDxsaT50byAtIChzdHJpbmcpIFRoZSBGYWNlYm9vayBVSUQgdG8gc2VuZCB0aGUgd2FsbCBwb3N0IHRvLiAgKGRlZmF1bHQgaXMgJnF1b3Q7bWUmcXVvdDspPC9saT4KICAgIDxsaT5tc2cgLSAoc3RyaW5nKSBUaGUgbWVzc2FnZSB0byBzZW5kIChrZWVwIGl0IHRvIDE0MCBjaGFyYWN0ZXJzIG9yIGxlc3MpPC9saT4KICAgIDxsaT5uYW1lIC0gKHN0cmluZykgVGhlIG5hbWUgb2YgYXR0YWNobWVudC48L2xpPiAgCiAgICA8bGk+aHJlZiAtIChzdHJpbmcpIEEgVVJMIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBhdHRhY2htZW50PC9saT4KICAgIDxsaT5jYXB0aW9uIC0gKHN0cmluZykgQSBjYXB0aW9uIGZvciB0aGUgYXR0YWNobWVudDwvbGk+CiAgICA8bGk+ZGVzY3JpcHRpb24gLSAoc3RyaW5nKSBBIGRlc2NyaXB0aW9uIGZvciB0aGUgYXR0YWNobWVudC48L2xpPgogICAgPGxpPnhpZCAtIChzdHJpbmcpIGNvbW1lbnRzIHhpZDwvbGk+CiAgICA8bGk+aW1hZ2VzIC0gKHN0cmluZykgaGFzaCBvZiBzcmM9aHJlZiBwYWlycyBwcm92aWRpbmcgdXAgdG8gNSBpbWFnZXMgZm9yIHRoZSBwb3N0IGF0dGFjaG1lbnQuCiAgICA8bGk+aW1hZ2UxIHRocm91Z2ggaW1hZ2U1IC0gKHN0cmluZykgYSBzdHJpbmcgb2YgdGhlIGZvcm1hdCBzcmM6OjpocmVmIGRlc2NyaWJpbmcgYW4gaW1hZ2UgZm9yIHRoZSBhdHRhY2htZW50LjwvbGk+CiAgICA8bGk+cHJvcDEgdGhyb3VnaCBwcm9wNSAtIChzdHJpbmcpIGEgY29tbWEgc2VwYXJhdGVkIHN0cmluZyBvZiBuYW1lLHZhbHVlLGFuZCBocmVmIHRvIHNwZWNpZnkgYWRkaXRpb25hbCBvcHRpb25zL3Byb3BlcnRpZXMgZm9yIHRoZSBib3R0b20gb2YgdGhlIHdhbGwgcG9zdC4KICAgIDxsaT5kYXRhMSB0aHJvdWdoIGRhdGE1IC0gKHN0cmluZykgYSBjb21tYSBzZXBhcmF0ZWQgc3RyaW5nIG9mIG5hbWUvdmFsdWUgcGFpcnMgdXNlZCB0byBhc3NvY2lhdGUgZGF0YSB3aXRoIHRoZSBwb3N0LgogICAgPGxpPgogPC91bD4KIDwvcD48YnIvPgogPHByZT5FeGFtcGxlOiA8Y29kZT57Y2dmYl93YWxscG9zdCB0bz1tZSBtc2c9JnF1b3Q7VGhpcyBpcyBhIFRlc3QmcXVvdDsgaHJlZj0mcXVvdDtodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnJnF1b3Q7fTwvY29kZT48L3ByZT48YnIvPgogPC9saT4KCiA8bGk+PGNvZGUgc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJfc3RhdHVzIHRvPSZsdDtzdHJpbmcmZ3Q7IG1zZz0mbHQ7c3RyaW5nJmd0OyAuLi59PC9jb2RlPgogPHA+Q3JlYXRlIGEgc3RhdHVzIHBvc3Qgb24gYSB1c2VycyBmZWVkLiBBbGxvd3MgZm9yIGEgbGluaywgYSBwaWN0dXJlLCBhIG5hbWUsIGEgY2FwdGlvbiwgYW5kIGEgZGVzY3JpcHRpb24uIEFzIHdlbGwgYXMgZm9yIHVwIHRvIDMgYWRkaXRpb25hbCBhY3Rpb25zLiAgVGhpcyBtZXRob2QgdXNlcyB0aGUgRmFjZWJvb2sgR1JBUEggQVBJLjxici8+UGFyYW1ldGVyczoKIDx1bD4KICAgIDxsaT50byAtIChzdHJpbmcpIFRoZSBGYWNlYm9vayBVSUQgdG8gc2VuZCB0aGUgd2FsbCBwb3N0IHRvLiAgKGRlZmF1bHQgaXMgJnF1b3Q7bWUmcXVvdDspPC9saT4KICAgIDxsaT5tc2cgLSAoc3RyaW5nKSBUaGUgbWVzc2FnZSB0byBzZW5kIChrZWVwIGl0IHRvIDE0MCBjaGFyYWN0ZXJzIG9yIGxlc3MpPC9saT4KICAgIDxsaT5saW5rIC0gKHN0cmluZykgQSBVUkwgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBwb3N0LjwvbGk+CiAgICA8bGk+cGljdHVyZSAtIChzdHJpbmcpIGEgVVJMIHRvIGEgcGljdHVyZSB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIHBvc3QuPC9saT4KICAgIDxsaT5jYXB0aW9uIC0gKHN0cmluZykgQSBjYXB0aW9uIGZvciB0aGUgcGljdHVyZS48L2xpPgogICAgPGxpPmRlc2NyaXB0aW9uIC0gKHN0cmluZykgQSBkZXNjcmlwdGlvbiBmb3IgdGhlIHBpY3R1cmUuLjwvbGk+CiAgICA8bGk+YWN0aW9ucyAtIChtaXhlZCkgRWl0aGVyIGEgY29tbWEgc2VwYXJhdGVkIHN0cmluZyBvZiBrZXkgdmFsdWUgcGFpcnMsIG9yIGEgaGFzaCBvZiBrZXkvdmFsdWUgcGFpcnMgc3BlY2lmeWluZyBidXR0b24gbmFtZXMgYW5kIFVSTFMgdG8gYXNzb2NpYXRlIHdpdGggdGhlIHBvc3QuPC9saT4KIDwvdWw+CiA8L3A+PGJyLz4KIDxwcmU+RXhhbXBsZTogPGNvZGU+e2NnZmJfc3RhdHVzIHRvPSZxdW90O21lJnF1b3Q7ICBtc2c9JnF1b3Q7SSByZWFsbHkgbGlrZSB0aGlzIGFwcCZxdW90Ozxici8+YWN0aW9ucz0mcXVvdDtWaWV3IHN0b3JlPWh0dHA6Ly93d3cubXlzaXRlLmNvbS9zdG9yZSxWaWV3IEV2ZW50cz1odHRwOi8vd3d3Lm15c2l0ZS5jb20vZXZlbnRzJnF1b3Q7fTwvY29kZT48L3ByZT48YnIvPgogPC9saT4KCiA8bGk+PGNvZGUgc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJfaW52aXRlIC4uLn08L2NvZGU+CiA8cD5DcmVhdGUgYSBmb3JtIHRvIGludml0ZSB5b3VyIHVzZXJzIGZhY2Vib29rIGZyaWVuZHMsIGFuZCBvdGhlcnMgdG8gdXNlIHlvdXIgZmFjZWJvb2sgYXBwbGljYXRpb24uICBUaGlzIGlzIGp1c3QgYSB3cmFwcGVyIGFyb3VuZCB0aGUgZmFjZWJvb2sgc29jaWFsIHBsdWdpbiBmb3IgaW52aXRpbmcgcGVvcGxlLiAgVGhpcyBwbHVnaW4gdXNlcyB0aGUgZGVmYXVsdCBpbnZpdGUgdGVtcGxhdGUgYXMgc3BlY2lmaWVkIGluIHRoaXMgbW9kdWxlcyBhZG1pbiBwYW5lbCB1bmxlc3MgYSBkaWZmZXJlbnQgdGVtcGxhdGUgaXMgc3BlY2lmaWVkLjxici8+UGFyYW1ldGVyczoKIDx1bD4KICAgIDxsaT5kZXN0X3VybCAtIChzdHJpbmcpIFRoZSB1cmwgdG8gcmVkaXJlY3QgdG8gYWZ0ZXIgdGhlIGZvcm0gaGFzIGJlZW4gc3VibWl0dGVkLiAgSWYgbm90IHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgcGFnZSBVUkwgd2lsbCBiZSB1c2VkLjwvbGk+CiAgICA8bGk+YXBwX25hbWUgLSAoc3RyaW5nKSBUaGUgbmFtZSBvZiB5b3VyIGFwcGxpY2F0aW9uLiAgSWYgbm90IHNwZWNpZmllZCwgdGhlIGN1cnJlbnQgc2l0ZSBuYW1lIHdpbGwgYmUgdXNlZC48L2xpPgogICAgPGxpPmV4Y2x1ZGVfaWRzIC0gKHN0cmluZykgQSBjb21tYSBzZXBhcmF0ZWQgc3RyaW5nIG9mIGZhY2Vib29rIFVJRHMgdGhhdCBzaG91bGQgYmUgZXhjbHVkZWQgZnJvbSB0aGUgZnJpZW5kcyB0byBpbnZpdGUgbGlzdC48L2xpPgogICAgPGxpPmNvbnRlbnQgLSAoc3RyaW5nKSBBbiBpbnN0cnVjdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheSB0byB1c2VycyBhdCB0aGUgdG9wIG9mIHRoZSBmb3JtLjwvbGk+CiAgICA8bGk+Ym9yZGVyIC0gKGJvb2xlYW4pIFNob3VsZCB0aGUgZm9ybSBoYXZlIGEgYm9yZGVyLjwvbGk+CiAgICA8bGk+ZW1haWxfaW52aXRlIC0gKGJvb2xlYW4pIEVuYWJsZSBhbiBlbWFpbCBpbnZpdGUgc2VjdGlvbiB0byB0aGUgZm9ybS48L2xpPgogICAgPGxpPmVtYWlsX2ludml0ZSAtIChib29sZWFuKSBFbmFibGUgdGhlIGVtYWlsIGNvbnRhY3QgaW1wb3J0ZXIuPC9saT4KICAgIDxsaT5jb25kZW5zZWQgLSAoYm9vbGVhbikgZW5hYmxlIHRoZSBjb25kZW5zZWQgZm9ybS48L2xpPgogICAgPGxpPmNvbHMgLSAoaW50KSBlaXRoZXIgMiwzLCBvciA1IC0gdGhlIG51bWJlciBvZiBjb2x1bW5zIHRvIGRpc3BsYXkgYnkgZGVmYXVsdCwgdGhpcyBpbmZsdWVuY2VzIHRoZSBzaXplIG9mIHRoZSBmb3JtLjwvbGk+CiAgICA8bGk+bWF4IC0gKGludCkgVGhlIG1heGltdW0gbnVtYmVyIG9mIGZyaWVuZHMgdG8gaW52aXRlIGF0IG9uZSB0aW1lLiAgKG1pbiAxLCBtYXggMzUpPC9saT4KICAgIDxsaT5ieXBhc3MgLSAoc3RyaW5nKSBUaGUgVmVyc2lvbiBvZiB0aGUgJnF1b3Q7YnlwYXNzJnF1b3Q7IGJ1dHRvbiBvbiB0aGUgZm9ybS4gb3B0aW9ucyBhcmUgc3RlcCxza2lwLG9yIGNhbmNlbC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgc2tpcC4KICAgIDxsaT50ZW1wbGF0ZSAtIChzdHJpbmcpIFRoZSBuYW1lIG9mIGEgbm9uLWRlZmF1bHQgaW52aXRlIGZvcm0gdGVtcGxhdGUgdG8gdXNlLjwvbGk+CiAgICA8bGk+YXNzaWduIC0gKHN0cmluZykgQXNzaWduIHRoZSBvdXRwdXQgdG8gYSBzbWFydHkgdmFyaWFibGUuPC9saT4KIDwvdWw+CiA8L3A+PGJyLz4KIDxwcmU+RXhhbXBsZTogPGNvZGU+e2NnZmJfaW52aXRlIGNvbnRlbnQ9JnF1b3Q7SW52aXRlIHlvdXIgZnJpZW5kcyB0byB1c2UgdGhpcyBmdW5reSBhcHAmcXVvdDt9PC9jb2RlPjwvcHJlPjxici8+CiA8L2xpPgoKIDxsaT48Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYl9mcWwgZnFsPSZsdDtzdHJpbmcmZ3Q7IGFzc2lnbj0mbHQ7c3RyaW5nJmd0O308L2NvZGU+CiA8cD5TZW5kIGFuIEZRTCBSZXF1ZXN0IHRvIEZhY2Vib29rLjwvcD4KIDx1bD4KICAgIDxsaT5mcWwgLSAoc3RyaW5nIC0gcmVxdWlyZWQpICBUaGUgZmFjZWJvb2sgRlFMIHJlcXVlc3Qgc3RyaW5nPC9saT4KICAgIDxsaT5hc3NpZ24gLSAoc3RyaW5nKSAgQXNzaWduIHRoZSBvdXRwdXQgdG8gYSBzbWFydHkgdmFyaWFibGUuPC9saT4KIDwvdWw+CiA8L3A+PGJyLz4KIDxwcmU+RXhhbXBsZTogPGNvZGU+e2NnZmJfZnFsIGZxbD09JnF1b3Q7U0VMRUNUIG5hbWUgRlJPTSB1c2VyIFdIRVJFIHVpZCA9IG1lKCkmcXVvdDsgYXNzaWduPSZxdW90O215X25hbWUmcXVvdDt9PC9jb2RlPjwvcHJlPjxici8+CiA8L2xpPgoKIDxsaT48Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYl9mcWxfbXVsdGkgLi4ufTwvY29kZT4KIDxwPlNlbmQgdXAgdG8gNSBGUUwgcXVlcmllcyBGYWNlYm9vayBpbiBhIHNpbmdsZSByZXF1ZXN0LjwvcD4KIDx1bD4KICAgIDxsaT5xdWVyeTEgdGhyb3VnaCBxdWVyeTUgLSAoc3RyaW5nIC0gcmVxdWlyZWQpICBUaGUgZmFjZWJvb2sgRlFMIHJlcXVlc3Qgc3RyaW5nczwvbGk+CiAgICA8bGk+YXNzaWduIC0gKHN0cmluZykgIEFzc2lnbiB0aGUgb3V0cHV0IHRvIGEgc21hcnR5IHZhcmlhYmxlLjwvbGk+CiA8L3VsPgogPC9wPjxici8+CiA8L2xpPgoKIDxsaT48Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYnVzZXJkYXRhX2dldCB1aWQ9Jmx0O3N0cmluZyZndDsgYXNzaWduPSZsdDtzdHJpbmcmZ3Q7fTwvY29kZT4KIDxwPlJldHJpZXZlIHRoZSBkYXRhIHJlbGF0ZWQgdG8gdGhlIHNwZWNpZmllZCAgdXNlciBmcm9tIHRoZSBkYXRhYmFzZS48L3A+CiA8cD48c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPk5vdGU6PC9zcGFuPiBUaGlzIGNvZGUgaXMgc3RpbGwgaW4gZGV2ZWxvcG1lbnQuPC9wPgogPHVsPgogICAgPGxpPnVpZCAtIChzdHJpbmcpICBUaGUgZmFjZWJvb2sgVXNlciBJRDwvbGk+CiAgICA8bGk+YXNzaWduIC0gKHN0cmluZykgIEFzc2lnbiB0aGUgb3V0cHV0IHRvIGEgc21hcnR5IHZhcmlhYmxlLjwvbGk+CiA8L3VsPgogPC9wPjxici8+CiA8cHJlPkV4YW1wbGU6IDxjb2RlPntjZ2ZidXNlcmRhdGFfZ2V0IHVpZD1cJGZiX3VpZCBhc3NpZ249JnF1b3Q7bXlkYXRhJnF1b3Q7fTwvY29kZT48L3ByZT48YnIvPgogPC9saT4KCiA8bGk+PGNvZGUgc3R5bGU9ImNvbG9yOiBibHVlOyI+e2NnZmJ1c2VyZGF0YV9zZXQgdWlkPSZsdDtzdHJpbmcmZ3Q7ICBrZXk9Jmx0O3N0cmluZyZndDsgIHZhbD1taXhlZH08L2NvZGU+CiA8cD5TdG9yZSBzb21lIGRhdGEgaW4gdGhlIHVzZXIgb2JqZWN0IGZvciB0aGUgc3BlY2lmaWVkIGZhY2Vib29rIHVzZXIuICBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYWR2YW5jZWQgaGllcmFyY2hpY2FsIGRhdGEgc3RydWN0dXJlcyB3aXRoIGRhdGEgZm9yIGEgdXNlci48L3A+CiA8cD48c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPk5vdGU6PC9zcGFuPiBUaGlzIGNvZGUgaXMgc3RpbGwgaW4gZGV2ZWxvcG1lbnQuPC9wPgogPHVsPgogICAgPGxpPnVpZCAtIChzdHJpbmcpICBUaGUgZmFjZWJvb2sgVXNlciBJRDwvbGk+CiAgICA8bGk+a2V5IC0gKHN0cmluZykgIEEgc3RyaW5nIGluZGljYXRpbmcgdGhlIGhpZXJhcmNoaWNhbCBsb2NhdGlvbiB0byBzdG9yZSB0aGUgZGF0YSBpbi4gIEhpZXJhcmNoeSBsZXZlbHMgYXJlIHNlcGFyYXRlZCB3aXRoIGEgLi48L2xpPgogICAgPGxpPnZhbCAtIChtaXhlZCkgVGhlIGRhdGEgdG8gc3RvcmUuPC9saT4KIDwvdWw+CiA8L3A+PGJyLz4KIDxwcmU+RXhhbXBsZTogPGNvZGU+e2NnZmJ1c2VyZGF0YV9zZXQgdWlkPVwkZmJfdWlkIGFzc2lnbj0nc2NvcmVzLmxhc3RzY29yZScgdmFsPTV9PC9jb2RlPjxici8+CiAgICAgIEV4YW1wbGU6IDxjb2RlPntjZ2ZidXNlcmRhdGFfc2V0IHVpZD1cJGZiX3VpZCBhc3NpZ249J3Njb3Jlcy5udW1nYW1lcycgdmFsPSZxdW90O1wkbXlkYXRhLnNjb3Jlcy5udW1nYW1lcysxJnF1b3Q7fTwvY29kZT4KIDwvcHJlPjxici8+CiA8L2xpPgoKIDxsaT48Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYnVzZXJkYXRhX2VyYXNlIHVpZD0mbHQ7c3RyaW5nJmd0OyAga2V5PSZsdDtzdHJpbmcmZ3Q7fTwvY29kZT4KIDxwPkVyYXNlIGEgcG9ydGlvbiBvZiB0aGUgZGF0YSB0aGF0IGlzIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UgZm9yIHRoZSBzcGVjaWZpZWQgZmFjZWJvb2sgdXNlciBpZC48L3A+CiA8cD48c3BhbiBzdHlsZT0iY29sb3I6IHJlZDsiPk5vdGU6PC9zcGFuPiBUaGlzIGNvZGUgaXMgc3RpbGwgaW4gZGV2ZWxvcG1lbnQuPC9wPgogPHVsPgogICAgPGxpPnVpZCAtIChzdHJpbmcpICBUaGUgZmFjZWJvb2sgVXNlciBJRDwvbGk+CiAgICA8bGk+a2V5IC0gKHN0cmluZykgIEEgc3RyaW5nIGluZGljYXRpbmcgdGhlIGhpZXJhcmNoaWNhbCBsb2NhdGlvbiB0byBlcmFzZS4gIEhpZXJhcmNoeSBsZXZlbHMgYXJlIHNlcGFyYXRlZCB3aXRoIGEgLi48L2xpPgogPC91bD4KIDwvcD48YnIvPgogPHByZT5FeGFtcGxlOiA8Y29kZT57Y2dmYnVzZXJkYXRhX2VyYXNlIHVpZD1cJGZiX3VpZCBhc3NpZ249J3Njb3Jlcy5sYXN0c2NvcmUnIHZhbD01fTwvY29kZT48YnIvPjwvcHJlPjxici8+CiA8L2xpPgoKIDxsaT48Y29kZSBzdHlsZT0iY29sb3I6IGJsdWU7Ij57Y2dmYnVzZXJkYXRhX2VyYXNldXNlciB1aWQ9Jmx0O3N0cmluZyZndDt9PC9jb2RlPgogPHA+RXJhc2UgYWxsIG9mIHRoZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIGZhY2Vib29rIHVzZXIuPC9wPgogPHA+PHNwYW4gc3R5bGU9ImNvbG9yOiByZWQ7Ij5Ob3RlOjwvc3Bhbj4gVGhpcyBjb2RlIGlzIHN0aWxsIGluIGRldmVsb3BtZW50LjwvcD4KIDx1bD4KICAgIDxsaT51aWQgLSAoc3RyaW5nKSAgVGhlIGZhY2Vib29rIFVzZXIgSUQ8L2xpPgogPC91bD4KIDwvcD48YnIvPgogPHByZT5FeGFtcGxlOiA8Y29kZT57Y2dmYnVzZXJkYXRhX2VyYXNldXNlciB1aWQ9XCRmYl91aWR9PC9jb2RlPjxici8+PC9wcmU+PGJyLz4KIDwvbGk+CgogPGxpPjxjb2RlIHN0eWxlPSJjb2xvcjogYmx1ZTsiPntjZ2ZidXNlcmRhdGFfYXBwZnJpZW5kcyB1aWQ9Jmx0O3N0cmluZyZndDt9PC9jb2RlPgogPHA+UmV0dXJuIGEgbGlzdCBvZiB0aGUgZnJpZW5kcyBvZiB0aGUgc3BlY2lmaWVkIGZhY2Vib29rIHVzZXIgdGhhdCBhbHNvIGhhdmUgZGF0YSBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlIGZvciB0aGlzIGFwcGxpY2F0aW9uLjwvcD4KIDxwPjxzcGFuIHN0eWxlPSJjb2xvcjogcmVkOyI+Tm90ZTo8L3NwYW4+IFRoaXMgY29kZSBpcyBzdGlsbCBpbiBkZXZlbG9wbWVudC48L3A+CiA8dWw+CiAgICA8bGk+dWlkIC0gKHN0cmluZykgIFRoZSBmYWNlYm9vayBVc2VyIElEPC9saT4KICAgIDxsaT5hc3NpZ24gLSAoc3RyaW5nKSAgQXNzaWduIHRoZSBvdXRwdXQgdG8gYSBzbWFydHkgdmFyaWFibGUuPC9saT4KIDwvdWw+CiA8L3A+PGJyLz4KICAgIDxwcmU+RXhhbXBsZTogPGNvZGU+e2NnZmJ1c2VyZGF0YV9hcHBmcmllbmRzIHVpZD1cJGZiX3VpZCBhc3NpZ249JnF1b3Q7YWxzb3VzaW5nJnF1b3Q7fXtcJGFsc291c2luZ3xAcHJpbnRfcn08L2NvZGU+PGJyLz48L3ByZT48YnIvPgogPC9saT4KCgoKPC91bD4KPGxpPgo8L3VsPgo8aDM+UmVxdWlyZW1lbnRzPC9oMz4KPGgzPlJlZmVyZW5jZXM8L2gzPgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IGNhbGd1eXMKaG9tZXBhZ2UgYXQgPGEgaHJlZj0iaHR0cDovL2NhbGd1eTEwMDAuY29tIj5jYWxndXkxMDAwLmNvbTwvYT4uPC9saT4KPGxpPkFkZGl0aW9uYWwgZGlzY3Vzc2lvbiBvZiB0aGlzIG1vZHVsZSBtYXkgYWxzbyBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaHR0cDovL2ZvcnVtLmNtc21hZGVzaW1wbGUub3JnIj5DTVMgTWFkZSBTaW1wbGUgRm9ydW1zPC9hPi48L2xpPgo8bGk+VGhlIGF1dGhvciwgY2FsZ3V5MTAwMCwgY2FuIG9mdGVuIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJpcmM6Ly9pcmMuZnJlZW5vZGUubmV0LyNjbXMiPkNNUyBJUkMgQ2hhbm5lbDwvYT4uPC9saT4KPGxpPkxhc3RseSwgeW91IG1heSBoYXZlIHNvbWUgc3VjY2VzcyBlbWFpbGluZyB0aGUgYXV0aG9yIGRpcmVjdGx5LjwvbGk+ICAKPC91bD4KPGgzPkNvcHlyaWdodCBhbmQgTGljZW5zZTwvaDM+CjxwPkNvcHlyaWdodCAmY29weTsgMjAwOCwgUm9iZXJ0IENhbXBiZWwgPGEgaHJlZj0ibWFpbHRvOmNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmciPiZsdDtjYWxndXkxMDAwQGNtc21hZGVzaW1wbGUub3JnJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4gCnNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQpGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQpPciByZWFkIGl0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9saWNlbnNlcy5odG1sI0dQTCI+b25saW5lPC9hPjwvcD4KRU9UOwoKI0kKJGxhbmdbJ2luZm9faW5pdF9vbl9ldmVudCddID0gJ1RoaXMgb3B0aW9uIGVuYWJsZXMgYW4gZXZlbnQgaGFuZGxlciB0byBpbnNlcnQgdGhlIGFwcHJvcHJpYXRlIGphdmFzY3JpcHQgY2FsbHMgaW50byB0aGUgY29kZSB0byBpbml0aWFsaXplIGZhY2Vib29rIHdoZW4gdGhlIHBhZ2UgaXMgcmVuZGVyZWQuJzsKJGxhbmdbJ2luZm9fdXNlX2FzeW5jX2luaXQnXSA9ICdQZXJmb3JtIEZhY2Vib29rIGluaXRpYWxpemF0aW9uIGFzeW5jaHJvdW5vdXNseSBmb3IgaW1wcm92ZWQgcGVyZm9ybWFuY2UgPGVtPihub3RlIHNvbWUgc2NyaXB0cyBtYXkgcmVxdWlyZSBzeW5jaHJvbm91cyBpbml0aWFsaXphdGlvbik8L2VtPic7CiRsYW5nWydpbmZvX2ZiaW5pdGFzeW5jX3RwbCddID0gJ1RoaXMgdGVtcGxhdGUgY29udGFpbnMgdGhlIGphdmFzY3JpcHQgYW5kIG90aGVyIGNvZGUgdGhhdCBpcyBpbnNlcnRlZCBpbnRvdCBoZSBnZW5lcmF0ZWQgY29kZSB0byBlbmFibGUgRmFjZWJvb2sgQVBJcyBBc3luY2hyb25vdXNseSc7CiRsYW5nWydpbmZvX2ZiaW5pdHN5bmNfdHBsJ10gPSAnVGhpcyB0ZW1wbGF0ZSBjb250YWlucyB0aGUgamF2YXNjcmlwdCBhbmQgb3RoZXIgY29kZSB0aGF0IGlzIGluc2VydGVkIGludG90IGhlIGdlbmVyYXRlZCBjb2RlIHRvIGVuYWJsZSBGYWNlYm9vayBBUElzJzsKJGxhbmdbJ2luZm9fZmJfcGVybXMnXSA9ICdXaGljaCBwZXJtaXNzaW9ucyBkb2VzIHlvdXIgZmFjZWJvb2sgYXBwbGljYXRpb24gcmVxdWVzdCBmcm9tIHRoZSB1c2VyJzsKJGxhbmdbJ2ludml0ZV90ZW1wbGF0ZSddID0gJ0ludml0ZSBUZW1wbGF0ZXMnOwoKI0oKCiNLCgojTAoKI00KJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnQSBzZXQgb2YgdXRpbGl0aWVzIGFsbG93aW5nIHlvdSB0byBlYXNpbHkgaW50ZWdyYXRlIEZhY2Vib29rIGludG8geW91ciBhcHBsaWNhdGlvbiwgb3IgYnVpbGQgc2ltcGxlIGZhY2Vib29rIGFwcGxpY2F0aW9ucy4nOwoKI04KCiNPCgojUAokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdNb2R1bGUgc3VjY2Vzc2Z1bGx5IGluc3RhbGxlZCwgcGxlYXNlIGNoZWNrIHRoZSBtb2R1bGVzIGFkbWluIHBhbmVsJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdNb2R1bGUgcmVtb3ZlZC4nOwokbGFuZ1sncHJldW5pbnRhbGwnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdW5pbnN0YWxsIHRoaXMgbW9kdWxlPyc7CiRsYW5nWydwcm9tcHRfaW5pdF9vbl9ldmVudCddID0gJ1VzZSBhbiBldmVudCBoYW5kbGVyIHRvIGF1dG9tYXRpY2FsbHkgaW5pdGlhbGl6ZSBmYWNlYm9vayc7CiRsYW5nWydwcm9tcHRfdXNlX2FzeW5jX2luaXQnXSA9ICdJbml0aWFsaXplIEZhY2Vib29rIEFQSXMgQXN5bmNocm9ub3VzbHknOwoKI1EKCiNSCgojUwokbGFuZ1snc3VibWl0J10gPSAnU3VibWl0JzsKCiNUCiRsYW5nWyd0aXRsZV9mYmluaXRhc3luY190cGwnXSA9ICdBc3luY2hyb3Vub3VzIEZhY2Vib29rIEluaXRpYWxpemF0aW9uIFRlbXBsYXRlJzsKJGxhbmdbJ3RpdGxlX2ZiaW5pdHN5bmNfdHBsJ10gPSAnRmFjZWJvb2sgSW5pdGlhbGl6YXRpb24gVGVtcGxhdGUnOwokbGFuZ1sndGl0bGVfaW52aXRlX3RlbXBsYXRlJ10gPSAnVGVtcGxhdGUgdGhhdCBjb250cm9scyB0aGUgZm9ybWF0IG9mIHRoZSBmYm1sIHVzZWQgZm9yIGNyZWF0aW5nIGFuIGludml0ZSBmb3JtJzsKJGxhbmdbJ3RpdGxlX3N5c2RmbHRfaW52aXRlJ10gPSAnU3lzdGVtIERlZmF1bHQgSW52aXRlIFRlbXBsYXRlJzsKCiNVCgojVgoKI1cKCiNYCgojWQoKI1oKCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.CGFacebook.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCnJlcXVpcmVfb25jZShkaXJuYW1lKF9fRklMRV9fKS4nL2ZhY2Vib29rLnBocCcpOwoKLyoqCiAqIEEgc2ltcGxlIGV4dGVuc2lvbiBmb3IgdGhlIGZhY2Vib29rIHBocCBjbGFzcyB0byBwcm92aWRlIGV4dGVuZGVkIGZ1bmN0aW9ucwogKgogKiBAYXV0aG9yIFJvYmVydCBDYW1wYmVsbAogKi8KY2xhc3MgQ0dGYWNlYm9vayBleHRlbmRzIEZhY2Vib29rCnsKICBwcml2YXRlICRfYXBwX2FjY2Vzc190b2tlbiA9IG51bGw7CiAgcHJpdmF0ZSAkX3VzZV9hcHBfdG9rZW4gPSBGQUxTRTsKCiAgLyoqCiAgICogUmV0cmlldmUgdGhlIGFwcGxpY2F0aW9uIGFjY2VzcyB0b2tlbi4gIElmIG5vIGNhY2hlZAogICAqIHZhbHVlIGlzIGZvdW5kIHRoZSB2YWx1ZSBpcyByZXRyaWV2ZWQgZnJvbSBmYWNlYm9vawogICAqIGFuZCBjYWNoZWQKICAgKgogICAqIEByZXR1cm4gc3RyaW5nCiAgICovCiAgcHJvdGVjdGVkIGZ1bmN0aW9uIGdldEFwcEFjY2Vzc1Rva2VuKCkKICB7CiAgICBpZiggISR0aGlzLT5fYXBwX2FjY2Vzc190b2tlbiApIAogICAgICB7CgkkYXJncyA9IGFycmF5KAoJCSAgICAgICdncmFudF90eXBlJyA9PiAnY2xpZW50X2NyZWRlbnRpYWxzJywKCQkgICAgICAnY2xpZW50X2lkJyA9PiAkdGhpcy0+YXBwSWQsCgkJICAgICAgJ2NsaWVudF9zZWNyZXQnID0+ICR0aGlzLT5hcGlTZWNyZXQKCQkgICAgICApOwoKCSRjaCA9IGN1cmxfaW5pdCgpOwoJJHVybCA9ICdodHRwczovL2dyYXBoLmZhY2Vib29rLmNvbS9vYXV0aC9hY2Nlc3NfdG9rZW4nOwoJY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1VSTCwgJHVybCk7CgljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSEVBREVSLCBmYWxzZSk7CgljdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwoJY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1QsIHRydWUpOwoJY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsICRhcmdzKTsKCSRkYXRhID0gY3VybF9leGVjKCRjaCk7CgkKCSR0aGlzLT5fYXBwX2FjY2Vzc190b2tlbiA9IGpzb25fZW5jb2RlKCRkYXRhKTsKICAgICAgfQogICAgcmV0dXJuICR0aGlzLT5fYXBwX2FjY2Vzc190b2tlbjsKICB9CgogIAogIC8qKgogICAqIFRvZ2dsZSB1c2luZyB0aGUgYXBwbGljYXRpb24gYWNjZXNzIHRva2VuLCBvciB0aGUgdXNlciBhY2Nlc3MgdG9rZW4KICAgKiBmb3IgcmVxdWVzdHMuCiAgICoKICAgKiBAcGFyYW0gYm9vbCBGbGFnIGluZGljYXRpbmcgd2V0aGVyIHRvIGVuYWJsZSBvciBkaXNhYmxlIHVzaW5nIHRoZSBhcHAgdG9rZW4gZm9yIGZ1cnRoZXIgcmVxdWVzdHMKICAgKiBAcmV0dXJuIHZvaWQKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZW5hYmxlQXBwVG9rZW4oJGZsYWcgPSBUUlVFKSB7CiAgICAkdGhpcy0+X3VzZV9hcHBfdG9rZW4gPSAkZmxhZzsKICB9CgoKICAvKioKICAgKiBHZXQgdGhlIGFwcHJvcHJpYXRlIGFjY2VzcyB0b2tlbi4gIFRoaXMgbWV0aG9kIHVuZGVyc3RhbmRzIGlmIHRoZSBvYmplY3QgaXMgY3VycmVudGx5CiAgICogdXNpbmcgdGhlIGFwcGxpY2F0aW9uIGFjY2VzcyB0b2tlbiBvciB0aGUgdXNlciBhY2Nlc3MgdG9rZW4uCiAgICoKICAgKiBAcmV0dXJuIHN0cmluZwogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRBY2Nlc3NUb2tlbigpIHsKICAgIGlmKCAkdGhpcy0+X3VzZV9hcHBfdG9rZW4gKQogICAgICByZXR1cm4gJHRoaXMtPmdldEFwcEFjY2Vzc1Rva2VuKCk7CiAgICByZXR1cm4gcGFyZW50OjpnZXRBY2Nlc3NUb2tlbigpOwogIH0KfQoKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/class.cgfb.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRkJBcHAgKGMpIDIwMTAgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEEgdG9vbGJveCBvZiBjb252ZW5pZW5jZXMgdG8gYnVpbGQgZmFjZWJvb2sgaW50ZWdyYXRpb24gaW50byBhIHdlYnNpdGUKIyAgZm9yIENNUyBtb2R1bGVzIGFuZCB3ZWJzaXRlIGRlc2lnbmVycy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCi8qKgogKiBBIGNvbnZlbmllbmNlIGNsYXNzIGZvciBpbnRlcmFjdGluZyB3aWhoIGZhY2Vib29rCiAqCiAqIEBzZWUgQ0dGYWNlYm9vawogKiBAYXV0aG9yIFJvYmVydCBDYW1wYmVsbAogKi8KY2xhc3MgY2dmYiAKewogIHByaXZhdGUgc3RhdGljICRfZmI7CiAgcHJpdmF0ZSBzdGF0aWMgJF9mYnNlc3Npb247CiAgcHJpdmF0ZSBzdGF0aWMgJF9mYnVpZDsKICBwcml2YXRlIHN0YXRpYyAkX2ZibWU7CgogIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgpIHt9CgogIHByaXZhdGUgc3RhdGljIGZ1bmN0aW9uIGluaXQoKQogIHsKICAgIGlmKCBpc19vYmplY3Qoc2VsZjo6JF9mYikgKSByZXR1cm47CiAgICAKICAgICRtb2QgPSBjZ2VfdXRpbHM6OmdldF9tb2R1bGUoJ0NHRkJBcHAnKTsKICAgICRhcHBpZCA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ2ZiX2FwcGlkJyk7CiAgICAkYXBwc2VjcmV0ID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZmJfYXBwc2VjcmV0Jyk7CgogICAgc2VsZjo6JF9mYiA9IG5ldyBDR0ZhY2Vib29rKGFycmF5KCdhcHBJZCc9PiRhcHBpZCwnc2VjcmV0Jz0+JGFwcHNlY3JldCwnY29va2llJz0+dHJ1ZSkpOwogICAgLy9zZWxmOjokX2ZiID0gbmV3IENHRmFjZWJvb2soYXJyYXkoJ2FwcElkJz0+JGFwcGlkLCdzZWNyZXQnPT4kYXBwc2VjcmV0KSk7CiAgICBzZWxmOjokX2Zic2Vzc2lvbiA9IHNlbGY6OiRfZmItPmdldFNlc3Npb24oKTsKICB9CgoKICAvKioKICAgKiBSZXR1cm4gdGhlIGZhY2Vib29rIGFwcGxpY2F0aW9uIGlkCiAgICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBhcHBpZCgpCiAgewogICAgJG1vZCA9IGNnZV91dGlsczo6Z2V0X21vZHVsZSgnQ0dGQkFwcCcpOwogICAgJGFwcGlkID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZmJfYXBwaWQnKTsKICAgIHJldHVybiAkYXBwaWQ7CiAgfQoKCiAgLyoqCiAgICogUmV0dXJuIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIGZhY2Vib29rIHVzZXJpZAogICAqLwogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdWlkKCkKICB7CiAgICBzZWxmOjppbml0KCk7CgogICAgaWYoIGlzX251bGwoc2VsZjo6JF9mYnVpZCkgKQogICAgICB7Cgl0cnkgCgkgIHsKCSAgICBzZWxmOjokX2ZidWlkID0gc2VsZjo6JF9mYi0+Z2V0VXNlcigpOwoJICB9CiAgICAgICAgY2F0Y2goIEZhY2Vib29rQXBpRXhjZXB0aW9uICRlICkgCgkgIHsKCSAgICAvLyBub3RoaW5nIGhlcmUsIHlldAoJICB9CiAgICAgIH0KCiAgICByZXR1cm4gc2VsZjo6JF9mYnVpZDsKICB9CgoKICAvKioKICAgKiBHZXQgYSBsb2dpbiB1cmwgZm9yIHRoZSBmYWNlYm9vayB1c2VyCiAgICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBnZXRfbG9naW5fdXJsKCkKICB7CiAgICBpZiggc2VsZjo6dWlkKCkgKSByZXR1cm47CiAgICAkbW9kID0gY2dlX3V0aWxzOjpnZXRfbW9kdWxlKCdDR0ZCQXBwJyk7CiAgICAkcGVybXMgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdmYl9wZXJtcycpOwogICAgJHBhcm1zID0gYXJyYXkoKTsKICAgIGlmKCAkcGVybXMgKSAkcGFybXNbJ3JlcV9wZXJtcyddID0gJHBlcm1zOwogICAgcmV0dXJuIHNlbGY6OiRfZmItPmdldExvZ2luVXJsKCRwYXJtcyk7CiAgfQoKCiAgLyoqCiAgICogR2V0IGEgbG9nb3V0IHVybCBmb3IgdGhlIGZhY2Vib29rIHVzZXIKICAgKi8KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGdldF9sb2dvdXRfdXJsKCkKICB7CiAgICBpZiggIXNlbGY6OnVpZCgpICkgcmV0dXJuOwogICAgcmV0dXJuIHNlbGY6OiRfZmItPmdldExvZ091dFVybCgpOwogIH0KCgogIC8qKgogICAqIFBlcmZvcm0gYSBmYWNlYm9vayBBUEkgcmVxdWVzdCB1c2luZyB0aGUgdXNlciBhY2Nlc3MgdG9rZW4uCiAgICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBhcGkoJGNhbGwsICRtZXRob2QgPSAnR0VUJywgJHBhcmFtcyA9IGFycmF5KCkpCiAgewogICAgaWYoICFzZWxmOjp1aWQoKSApIHJldHVybjsKICAgIGlmKCAhJGNhbGwgKSByZXR1cm47CiAgICBpZiggIWlzX3N0cmluZygkY2FsbCkgKSByZXR1cm47CiAgICB0cnkKICAgICAgewoJJHJlcyA9IHNlbGY6OiRfZmItPmFwaSgkY2FsbCwkbWV0aG9kLCRwYXJhbXMpOwoJaWYoIGlzX2FycmF5KCRyZXMpICYmIGNvdW50KGFycmF5X2tleXMoJHJlcykpID09IDEgJiYgaXNzZXQoJHJlc1snZGF0YSddKSApCgkgIHsKCSAgICAkcmVzID0gJHJlc1snZGF0YSddOwoJICB9CglyZXR1cm4gJHJlczsKICAgICAgfQogICAgY2F0Y2goIEZhY2Vib29rQXBpRXhjZXB0aW9uICRlICkgCiAgICAgIHsKCS8vIG5vdGhpbmcgaGVyZSwgeWV0CiAgICAgIH0KICB9CgoKICAvKioKICAgKiBQZXJmb3JtIGEgZmFjZWJvb2sgUkVTVCBjYWxsCiAgICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiByZXN0KCRkYXRhKQogIHsKICAgIGlmKCAhc2VsZjo6dWlkKCkgKSByZXR1cm47CiAgICBpZiggIWlzX2FycmF5KCRkYXRhKSApIHJldHVybjsKCiAgICB0cnkKICAgICAgewoJJHJlcyA9IHNlbGY6OiRfZmItPmFwaSgkZGF0YSk7CglyZXR1cm4gJHJlczsKICAgICAgfQogICAgY2F0Y2goIEZhY2Vib29rQXBpRXhjZXB0aW9uICRlICkgCiAgICAgIHsKCS8vIG5vdGhpbmcgaGVyZSwgeWV0CiAgICAgIH0KICB9CiAgCiAgLyoqCiAgICogUGVyZm9ybSBhIGZhY2Vib29rIEFQSSByZXF1ZXN0IHVzaW5nIHRoZSBhcHBsaWNhdGlvbiBhY2Nlc3MgdG9rZW4uCiAgICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBhcHBfYXBpKCRjYWxsLCRtZXRob2QgPSAnR0VUJywgJHBhcmFtcyA9IGFycmF5KCkpCiAgewogICAgaWYoICEkY2FsbCApIHJldHVybjsKICAgIGlmKCAhaXNfc3RyaW5nKCRjYWxsKSApIHJldHVybjsKCiAgICB0cnkKICAgICAgewoJc2VsZjo6JF9mYi0+ZW5hYmxlQXBwVG9rZW4oKTsKCSRyZXMgPSBzZWxmOjokX2ZiLT5hcGkoJGNhbGwsJG1ldGhvZCwkcGFyYW1zKTsKCXNlbGY6OiRfZmItPmVuYWJsZUFwcFRva2VuKEZBTFNFKTsKCXJldHVybiAkcmVzOwogICAgICB9CiAgICBjYXRjaCggRmFjZWJvb2tBcGlFeGNlcHRpb24gJGUgKSAKICAgICAgewoJLy8gbm90aGluZyBoZXJlLCB5ZXQKICAgICAgfQogIH0KCgogIC8qKgogICAqIFJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIGZhY2Vib29rIHVzZXIKICAgKi8KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG1lKCkKICB7CiAgICBzZWxmOjppbml0KCk7CgogICAgaWYoIGlzX251bGwoc2VsZjo6JF9mYm1lKSApCiAgICAgIHsKCXNlbGY6OiRfZmJtZSA9IHNlbGY6OmFwaSgnL21lJyk7CiAgICAgIH0KCiAgICByZXR1cm4gc2VsZjo6JF9mYm1lOwogIH0KCgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnFsKCRxdWVyeSkKICB7CiAgICBpZiggISRxdWVyeSApIHJldHVybjsKCiAgICAkdG1wID0gYXJyYXkoJ21ldGhvZCc9PidmcWwucXVlcnknLCdxdWVyeSc9PiRxdWVyeSk7CiAgICAkcmVzID0gc2VsZjo6cmVzdCgkdG1wKTsKICAgIAogICAgcmV0dXJuICRyZXM7CiAgfQoKCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcWxfbXVsdGkoLyogdmFyaWFibGUgYXJndW1lbnRzICovKQogIHsKICAgIC8vIGdldCB0aGUgYXJncywgYW5kIGNoZWNrIGZvciB0b28gbWFueS4uLiBvbmx5IDUgcXVlcmllcwogICAgJGFyZ3MgPSBmdW5jX2dldF9hcmdzKCk7CiAgICBpZiggaXNfYXJyYXkoJGFyZ3NbMF0pICYmIGNvdW50KCRhcmdzKSA+IDEgKSByZXR1cm47CiAgICBpZiggaXNfYXJyYXkoJGFyZ3NbMF0pICkKICAgICAgewoJJGFyZ3MgPSAkYXJnc1swXTsKICAgICAgfQogICAgaWYoIGNvdW50KCRhcmdzKSA+IDUgKSByZXR1cm47CgogICAgLy8gb2theSwgbWF4aW11bSBvZiA1IHF1ZXJpZXMuLiBhaW50IHRoYXQgbmljZS4KICAgICRxID0gYXJyYXkoKTsKICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCRhcmdzKTsgJGkrKyApCiAgICAgIHsKCSRxW10gPSAnIicuJGsuJyI6IicuJHYuJyInOwogICAgICB9CiAgICAkdG1wID0gYXJyYXkoJ21ldGhvZCc9PidmcWwubXVsdGlxdWVyeScsCgkJICdxdWVyaWVzJz0+JHEpOwogICAgJHJlcyA9IHNlbGY6OnJlc3QoJHRtcCk7CgogICAgcmV0dXJuICRyZXM7CiAgfQoJCQkJICAKfSAvLyBlbmQgb2YgY2xhc3MKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.cgfbuserdata.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRkJBcHAgKGMpIDIwMTAgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEEgdG9vbGJveCBvZiBjb252ZW5pZW5jZXMgdG8gYnVpbGQgZmFjZWJvb2sgaW50ZWdyYXRpb24gaW50byBhIHdlYnNpdGUKIyAgZm9yIENNUyBtb2R1bGVzIGFuZCB3ZWJzaXRlIGRlc2lnbmVycy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmNsYXNzIGNnZmJ1c2VyZGF0YQp7CiAgcHVibGljIGZ1bmN0aW9uIGNvbnN0cnVjdCgpIHt9CgogIC8qKgogICAqIEluaXRpYWxpemUgY2dmYnVzZXJkYXRhIHNtYXJ0eSBwbHVnaW5zLgogICAqCiAgICogQGFjY2VzcyBwcml2YXRlCiAgICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpbml0KCkKICB7CiAgICAkc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7CiAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbignY2dmYnVzZXJkYXRhX2dldCcsYXJyYXkoJ2NnZmJ1c2VyZGF0YScsJ2dldCcpKTsKICAgICRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCdjZ2ZidXNlcmRhdGFfc2V0JyxhcnJheSgnY2dmYnVzZXJkYXRhJywnc2V0JykpOwogICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2NnZmJ1c2VyZGF0YV9lcmFzZScsYXJyYXkoJ2NnZmJ1c2VyZGF0YScsJ2VyYXNlJykpOwogICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2NnZmJ1c2VyZGF0YV9lcmFzZXVzZXInLGFycmF5KCdjZ2ZidXNlcmRhdGEnLCdlcmFzZXVzZXInKSk7CiAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbignY2dmYnVzZXJkYXRhX2FwcGZyaWVuZHMnLGFycmF5KCdjZ2ZidXNlcmRhdGEnLCdhcHBmcmllbmRzJykpOwogIH0KCgogCiAgLyoqCiAgICogR2V0IGFsbCBkYXRhIGZyb20gdGhlIGRhdGFiYXNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGZhY2Vib29rIHVzZXIKICAgKiB1c2FnZToge2NnZmJ1c2VyZGF0YV9nZXQgdWlkPTxzdHJpbmc+IFthc3NpZ249PHN0cmluZz5dfQogICAqLwogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZ2V0KCRwYXJhbXMsJiRzbWFydHkpCiAgewogICAgJHVpZCA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywndWlkJyk7CiAgICBpZiggISR1aWQgKSByZXR1cm47CgogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICRvYmogPSBuZXcgQXNzb2NEYXRhKCRkYiwnY2dmYmFwcCcpOwogICAgJGRhdGEgPSAkb2JqLT5HZXQoJHVpZCk7CiAgICAKICAgIGlmKCBpc3NldCgkcGFyYW1zWydhc3NpZ24nXSkgKQogICAgICB7Cgkkc21hcnR5LT5hc3NpZ24oJHBhcmFtc1snYXNzaWduJ10sJGRhdGEpOwoJcmV0dXJuOwogICAgICB9CiAgICByZXR1cm4gJGRhdGE7CiAgfQoKCiAgLy8ge2NnZmJ1c2VyZGF0YV9zZXQgdWlkPWFiY2RlZmcga2V5PSdhLmIuYy5kJyB2YWw9J2Zvbyd9CiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZXQoJHBhcmFtcywmJHNtYXJ0eSkKICB7CiAgICAkdWlkID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCd1aWQnKTsKICAgICRrZXkgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsJ2tleScpOwogICAgJHZhbCA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywndmFsJyk7CgogICAgaWYoICEkdWlkIHx8ICEka2V5IHx8ICEkdmFsICkgcmV0dXJuOwoKICAgIC8vIGdldCB0aGUgZGF0YQogICAgJGRhdGEgPSBzZWxmOjpnZXQoYXJyYXkoJ3VpZCc9PiR1aWQpKTsKICAgICR0bXAgPSBleHBsb2RlKCcuJywka2V5KTsKICAgIGlmKCAhJGRhdGEgKSAkZGF0YSA9IGFycmF5KCk7CiAgICAkcmVjID0mICRkYXRhOwogICAgaWYoIGNvdW50KCR0bXApID4gMSApCiAgICAgIHsKCWZvciggJGkgPSAwOyAkaSA8IGNvdW50KCR0bXApIC0gMTsgJGkrKyApCgkgIHsKCSAgICBpZiggIWlzc2V0KCRyZWNbJHRtcFskaV1dKSApCgkgICAgICB7CgkJJHJlY1skdG1wWyRpXV0gPSBhcnJheSgpOwoJICAgICAgfQoJICAgICRyZWMgPSYgJHJlY1skdG1wWyRpXV07CgkgIH0KICAgICAgfQogICAgJHJlY1skdG1wW2NvdW50KCR0bXApLTFdXSA9ICR2YWw7CiAgICBkZWJ1Z190b19sb2coJGRhdGEsJ2NnZmJ1c2VyZGF0YV9zZXQnKTsKCiAgICAkZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgJG9iaiA9IG5ldyBBc3NvY0RhdGEoJGRiLCdjZ2ZiYXBwJyk7CiAgICAkb2JqLT5TZXQoJHVpZCwkZGF0YSk7CiAgfQoKCiAgLy8ge2NnZmJ1c2VyZGF0YV9lcmFzZSB1aWQ9YWJjZGVmIGtleT0nYS5iLmMuZCd9CiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBlcmFzZSgkcGFyYW1zLCYkc21hcnR5KQogIHsKICAgICR1aWQgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsJ3VpZCcpOwogICAgJGtleSA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywna2V5Jyk7CiAgICBpZiggISR1aWQgfHwgISRrZXkgKSByZXR1cm47CgogICAgJGRhdGEgPSBzZWxmOjpnZXQoYXJyYXkoJ3VpZCc9PiR1aWQpKTsKICAgICR0bXAgPSBleHBsb2RlKCcuJywka2V5KTsKICAgICRyZWMgPSYgJGRhdGE7CiAgICBpZiggY291bnQoJHRtcCkgPiAxICkKICAgICAgewoJZm9yKCAkaSA9IDA7ICRpIDwgY291bnQoJHRtcCkgLSAxOyAkaSsrICkKCSAgewoJICAgIGlmKCAhaXNzZXQoJHJlY1skdG1wWyRpXV0pICkKCSAgICAgIHsKCQkvLyBub3RoaW5nIHRvIGRvLCBrZXkgZG9lc24ndCBleGlzdC4KCQlyZXR1cm47CgkgICAgICB9CgkgICAgJHJlYyA9JiAkcmVjWyR0bXBbJGldXTsKCSAgfQogICAgICB9CiAgICB1bnNldCgkcmVjWyR0bXBbY291bnQoJHRtcCktMV1dKTsKCiAgICBkZWJ1Z190b19sb2coJGRhdGEsJ2NnZmJ1c2VyZGF0YV9kZWxldGUnKTsKICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAkb2JqID0gbmV3IEFzc29jRGF0YSgkZGIsJ2NnZmJhcHAnKTsKICAgIGlmKCBjb3VudCgkdG1wKSApCiAgICAgIHsKCSRvYmotPlNldCgkdWlkLCRkYXRhKTsKICAgICAgfQogICAgJG9iai0+RGVsZXRlKCR1aWQpOwogIH0KCgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZXJhc2V1c2VyKCRwYXJhbXMsJiRzbWFydHkpCiAgewogICAgJHVpZCA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywndWlkJyk7CiAgICBpZiggISR1aWQgKSByZXR1cm47CgogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICRvYmogPSBuZXcgQXNzb2NEYXRhKCRkYiwnY2dmYmFwcCcpOwogICAgJG9iai0+RGVsZXRlKCR1aWQpOwogIH0KCgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYXBwZnJpZW5kcygkcGFyYW1zLCYkc21hcnR5KQogIHsKICAgICR1aWQgPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsJ3VpZCcpOwogICAgaWYoICEkdWlkICkgcmV0dXJuOwoKICAgIC8vIGdldCB0aGUgdXNlcnMgZnJpZW5kcy4KICAgICRyZXMgPSBjZ2ZiOjphcGkoJy9tZS9mcmllbmRzJywnR0VUJyk7CiAgICBpZiggISRyZXMgKSByZXR1cm47CiAgICBpZiggIWlzX2FycmF5KCRyZXMpICkgcmV0dXJuOwoKICAgICRmcmllbmRfdWlkcyA9IGNnZV9hcnJheTo6ZXh0cmFjdF9maWVsZCgkcmVzLCd1aWQnKTsKICAgIAogICAgJGRiID0gY21zbXMoKS0+R2V0RGIoKTsKICAgICRvYmogPSBuZXcgQXNzb2NEYXRhKCRkYiwnY2dmYmFwcCcpOwogICAgJHJlcyA9ICRvYmotPmZpbmQoJGZyaWVuZF91aWRzKTsKCiAgICBpZiggaXNzZXQoJHBhcmFtc1snYXNzaWduJ10pICkKICAgICAgewoJJHNtYXJ0eS0+YXNzaWduKCRwYXJhbXNbJ2Fzc2lnbiddLCRkYXRhKTsKCXJldHVybjsKICAgICAgfQogICAgcmV0dXJuICRkYXRhOwogIH0KfSAvLyBlbmQgb2YgY2xhc3MKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.cgfb_og_smarty.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRkJBcHAgKGMpIDIwMTAgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEEgdG9vbGJveCBvZiBjb252ZW5pZW5jZXMgdG8gYnVpbGQgZmFjZWJvb2sgaW50ZWdyYXRpb24gaW50byBhIHdlYnNpdGUKIyAgZm9yIENNUyBtb2R1bGVzIGFuZCB3ZWJzaXRlIGRlc2lnbmVycy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmNsYXNzIGNnZmJfb2dfc21hcnR5CnsKICBzdGF0aWMgcHJpdmF0ZSAkX2luaXRpYWxpemVkOwoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGluaXQoKQogIHsKICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKCiAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbignY2dmYl9vZ192YWx1ZScsYXJyYXkoJ2NnZmJfb2dfc21hcnR5Jywnb2dfdmFsdWUnKSk7CiAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbignY2dmYl9vZ190aXRsZScsYXJyYXkoJ2NnZmJfb2dfc21hcnR5Jywnb2dfdGl0bGUnKSk7CiAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbignY2dmYl9vZ190eXBlJyxhcnJheSgnY2dmYl9vZ19zbWFydHknLCdvZ190eXBlJykpOwogICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2NnZmJfb2dfdXJsJyxhcnJheSgnY2dmYl9vZ19zbWFydHknLCdvZ191cmwnKSk7CiAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbignY2dmYl9vZ19pbWFnZScsYXJyYXkoJ2NnZmJfb2dfc21hcnR5Jywnb2dfaW1hZ2UnKSk7CiAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbignY2dmYl9vZ19zaXRlbmFtZScsYXJyYXkoJ2NnZmJfb2dfc21hcnR5Jywnb2dfc2l0ZW5hbWUnKSk7CiAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbignY2dmYl9vZ19kZXNjJyxhcnJheSgnY2dmYl9vZ19zbWFydHknLCdvZ19kZXNjJykpOwogICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2NnZmJfb2dfYWRtaW5zJyxhcnJheSgnY2dmYl9vZ19zbWFydHknLCdvZ19hZG1pbnMnKSk7CiAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbignY2dmYl9vZ19tZXRhJyxhcnJheSgnY2dmYl9vZ19zbWFydHknLCdvZ19tZXRhJykpOwogIH0KCgogIHByb3RlY3RlZCBzdGF0aWMgZnVuY3Rpb24gb2dfc2V0dmFsdWUoJGtleSwkdmFsdWUpCiAgewogICAgaWYoICEka2V5ICkgcmV0dXJuOwoKICAgICRkYXRhID0gYXJyYXkoKTsKICAgIGlmKCBjZ2VfdG1wZGF0YTo6ZXhpc3RzKCdjZ2ZiX29nJykgKQogICAgICB7CgkkZGF0YSA9IGNnZV90bXBkYXRhOjpnZXQoJ2NnZmJfb2cnKTsKICAgICAgfQogICAgJGRhdGFbJGtleV0gPSAkdmFsdWU7CiAgICBjZ2VfdG1wZGF0YTo6c2V0KCdjZ2ZiX29nJywkZGF0YSk7CiAgfQoKCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBvZ192YWx1ZSgkcGFyYW1zLCYkc21hcnR5KQogIHsKICAgIGlmKCAhaXNzZXQoJHBhcmFtc1snbmFtZSddKSB8fCAhaXNzZXQoJHBhcmFtc1sndmFsdWUnXSkgKSByZXR1cm47CgogICAgJGtleSA9ICRwYXJhbXNbJ25hbWUnXTsKICAgICR2YWwgPSAkcGFyYW1zWyd2YWx1ZSddOwogICAgc2VsZjo6b2dfc2V0dmFsdWUoJGtleSwkdmFsKTsKICB9CgoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9nX3RpdGxlKCRwYXJhbXMsJiRzbWFydHkpCiAgewogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ3RpdGxlJ10pICkKICAgICAgewoJc2VsZjo6b2dfc2V0dmFsdWUoJ29nOnRpdGxlJyx0cmltKCRwYXJhbXNbJ3RpdGxlJ10pKTsKICAgICAgfQogIH0KCgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gb2dfdHlwZSgkcGFyYW1zLCYkc21hcnR5KQogIHsKICAgIGlmKCBpc3NldCgkcGFyYW1zWyd0eXBlJ10pICkKICAgICAgewoJc2VsZjo6b2dfc2V0dmFsdWUoJ29nOnR5cGUnLHRyaW0oJHBhcmFtc1sndHlwZSddKSk7CiAgICAgIH0KICB9CgoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9nX3VybCgkcGFyYW1zLCYkc21hcnR5KQogIHsKICAgIGlmKCBpc3NldCgkcGFyYW1zWyd1cmwnXSkgKQogICAgICB7CglzZWxmOjpvZ19zZXR2YWx1ZSgnb2c6dXJsJyx0cmltKCRwYXJhbXNbJ3VybCddKSk7CiAgICAgIH0KICB9CgoKICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIG9nX2ltYWdlKCRwYXJhbXMsJiRzbWFydHkpCiAgewogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2ltYWdlJ10pICkKICAgICAgewoJc2VsZjo6b2dfc2V0dmFsdWUoJ29nOmltYWdlJyx0cmltKCRwYXJhbXNbJ2ltYWdlJ10pKTsKICAgICAgfQogIH0KCgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gb2dfc2l0ZW5hbWUoJHBhcmFtcywmJHNtYXJ0eSkKICB7CiAgICBpZiggaXNzZXQoJHBhcmFtc1snc2l0ZW5hbWUnXSkgKQogICAgICB7CglzZWxmOjpvZ19zZXR2YWx1ZSgnb2c6c2l0ZV9uYW1lJyx0cmltKCRwYXJhbXNbJ3NpdGVuYW1lJ10pKTsKICAgICAgfQogIH0KCgogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gb2dfZGVzYygkcGFyYW1zLCYkc21hcnR5KQogIHsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydkZXNjJ10pICkKICAgICAgewoJc2VsZjo6b2dfc2V0dmFsdWUoJ29nOmRlc2NyaXB0aW9uJyx0cmltKCRwYXJhbXNbJ2Rlc2MnXSkpOwogICAgICB9CiAgfQoKCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBvZ19hZG1pbnMoJHBhcmFtcywmJHNtYXJ0eSkKICB7CiAgICBpZiggaXNzZXQoJHBhcmFtc1snYWRtaW5zJ10pICkKICAgICAgewoJc2VsZjo6b2dfc2V0dmFsdWUoJ2ZiOmFkbWlucycsdHJpbSgkcGFyYW1zWydhZG1pbnMnXSkpOwogICAgICB9CiAgfQoKCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBvZ19tZXRhKCRwYXJhbXMsJiRzbWFydHkpCiAgewogICAgLy8gcmVuZGVyIHRoZSB0YWdzLgogICAgJGRhdGEgPSBjZ2VfdG1wZGF0YTo6Z2V0KCdjZ2ZiX29nJyk7CiAgICAkZGF0YVsnZmI6YXBwX2lkJ10gPSBjZ2ZiOjphcHBpZCgpOwogICAgaWYoICFpc3NldCgkZGF0YVsnb2c6c2l0ZV9uYW1lJ10pICkKICAgICAgewoJJGRhdGFbJ29nOnNpdGVfbmFtZSddID0gZ2V0X3NpdGVfcHJlZmVyZW5jZSgnc2l0ZW5hZScsJ0NNU01TIFNpdGUnKTsKICAgICAgfQoKICAgICRvdXRwdXQgPSAnJzsKICAgIGZvcmVhY2goICRkYXRhIGFzICRrZXkgPT4gJHZhbHVlICkKICAgICAgewoJJG91dHB1dCAuPSAnPG1ldGEgcHJvcGVydHk9IicuJGtleS4nIiBjb250ZW50PSInLiR2YWx1ZS4nIi8+JzsKICAgICAgfQoKICAgIC8vIGRvbmUuCiAgICBpZiggaXNzZXQoJHBhcmFtc1snYXNzaWduJ10pICkKICAgICAgewoJJHNtYXJ0eS0+YXNzaWduKCRwYXJhbXNbJ2Fzc2lnbiddLCRvdXRwdXQpOwoJcmV0dXJuOwogICAgICB9CgogICAgcmV0dXJuICRvdXRwdXQ7CiAgfQoKfSAvLyBlbmQgb2YgY2xhc3MKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.cgfb_post.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRkJBcHAgKGMpIDIwMTAgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEEgdG9vbGJveCBvZiBjb252ZW5pZW5jZXMgdG8gYnVpbGQgZmFjZWJvb2sgaW50ZWdyYXRpb24gaW50byBhIHdlYnNpdGUKIyAgZm9yIENNUyBtb2R1bGVzIGFuZCB3ZWJzaXRlIGRlc2lnbmVycy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmNsYXNzIGNnZmJfcG9zdAp7CiAgcHJpdmF0ZSAkX2RhdGEgPSBhcnJheSgndG8nPT4nbWUnKTsKICBwcml2YXRlICRfYWN0aW9ucyA9IGFycmF5KCk7CiAgcHJpdmF0ZSAkX2F0dGFjaG1lbnQ7CiAgcHJpdmF0ZSAkX2tleXMgPSBhcnJheSgndG8nLCdtZXNzYWdlJyk7CgogIAogIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbXNnLCR0bz0nbWUnKQogIHsKICAgICR0aGlzLT5tZXNzYWdlID0gJG1zZzsKICAgIGlmKCAkdG8gKSAkdGhpcy0+dG8gPSAkdG87CiAgfQoKCiAgcHVibGljIGZ1bmN0aW9uIF9fZ2V0KCRrZXkpCiAgewogICAgaWYoICFpbl9hcnJheSgka2V5LCR0aGlzLT5fa2V5cykgKQogICAgICB7Cgl0aHJvdyBuZXcgRXhjZXB0aW9uKCdBdHRlbXB0IHRvIHJldHJpZXZlIGludmFsaWQgdmFsdWUgb2YgcG9zdCBvYmplY3QnKTsKICAgICAgfQoKICAgIGlmKCAhaXNzZXQoJHRoaXMtPl9kYXRhWyRrZXldKSApCiAgICAgIHsKCXJldHVybjsKICAgICAgfQoKICAgIHJldHVybiAkdGhpcy0+X2RhdGFbJGtleV07CiAgfQoKCiAgcHVibGljIGZ1bmN0aW9uIF9fc2V0KCRrZXksJHZhbHVlKQogIHsKICAgIGlmKCAhaW5fYXJyYXkoJGtleSwkdGhpcy0+X2tleXMpICkKICAgICAgewoJdGhyb3cgbmV3IEV4Y2VwdGlvbignQXR0ZW1wdCB0byBzZXQgaW52YWxpZCB2YWx1ZSBvZiBwb3N0IG9iamVjdCcpOwogICAgICB9CgogICAgJHRoaXMtPl9kYXRhWyRrZXldID0gJHZhbHVlOwogIH0KCgogIHB1YmxpYyBmdW5jdGlvbiBhZGRfYWN0aW9uKCRuYW1lLCRsaW5rKQogIHsKICAgIGlmKCAhJG5hbWUgfHwgISRsaW5rICkKICAgICAgewoJcmV0dXJuOwogICAgICB9CgogICAgJHRoaXMtPl9hY3Rpb25zW10gPSBhcnJheSgndGV4dCc9PiRuYW1lLCdsaW5rJz0+JGxpbmspOwogIH0KCgogIHB1YmxpYyBmdW5jdGlvbiBzZXRfYXR0YWNobWVudChjZ2ZiX3Bvc3RfYXR0YWNobWVudCAkYXR0YWNobWVudCkKICB7CiAgICAkdGhpcy0+X2F0dGFjaG1lbnQgPSAkYXR0YWNobWVudDsKICB9CgoKICBwdWJsaWMgZnVuY3Rpb24gdG9fYXJyYXkoKQogIHsKICAgICRvdXRwdXQgPSBhcnJheSgpOwogICAgJG91dHB1dFsndGFyZ2V0X2lkJ10gPSAoJHRoaXMtPnRvID09ICdtZScpP2NnZmI6OnVpZCgpOiR0aGlzLT50bzsKICAgICRvdXRwdXRbJ21lc3NhZ2UnXSA9ICR0aGlzLT5tZXNzYWdlOwogICAgaWYoIGNvdW50KCR0aGlzLT5fYWN0aW9ucykgKQogICAgICB7Cgkkb3V0cHV0WydhY3Rpb25fbGlua3MnXSA9ICR0aGlzLT5fYWN0aW9uczsKICAgICAgfQogICAgaWYoIGlzX29iamVjdCgkdGhpcy0+X2F0dGFjaG1lbnQpICkKICAgICAgewoJJG91dHB1dFsnYXR0YWNobWVudCddID0gJHRoaXMtPl9hdHRhY2htZW50LT50b19hcnJheSgpOwogICAgICB9CiAgICByZXR1cm4gJG91dHB1dDsKICB9Cn0gLy8gY2xhc3MKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/class.cgfb_post_attachment.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRkJBcHAgKGMpIDIwMTAgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEEgdG9vbGJveCBvZiBjb252ZW5pZW5jZXMgdG8gYnVpbGQgZmFjZWJvb2sgaW50ZWdyYXRpb24gaW50byBhIHdlYnNpdGUKIyAgZm9yIENNUyBtb2R1bGVzIGFuZCB3ZWJzaXRlIGRlc2lnbmVycy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCmNsYXNzIGNnZmJfcG9zdF9hdHRhY2htZW50CnsKICBwcml2YXRlICRfa2V5cyA9IGFycmF5KCduYW1lJywnaHJlZicsJ2NhcHRpb24nLCdkZXNjcmlwdGlvbicsJ2NvbW1lbnRzX3hpZCcpOwogIHByaXZhdGUgJF9kYXRhID0gYXJyYXkoKTsKICBwcml2YXRlICRfYXNzb2MgPSBhcnJheSgpOwogIHByaXZhdGUgJF9wcm9wcyA9IGFycmF5KCk7CiAgcHJpdmF0ZSAkX21lZGlhID0gYXJyYXkoKTsKCiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRuYW1lLCRocmVmLCRjYXB0aW9uID0gJycsJGRlc2NyaXB0aW9uID0gJycpCiAgewogICAgaWYoICEkbmFtZSB8fCAhJGhyZWYgKSAKICAgICAgewoJdGhyb3cgbmV3IEV4Y2VwdGlvbignQXR0ZW1wdCB0byBjcmVhdGUgaW52YWxpZCBhdHRhY2htZW50IG9iamVjdCcpOwogICAgICB9CgogICAgJHRoaXMtPm5hbWUgPSAkbmFtZTsKICAgICR0aGlzLT5ocmVmID0gJGhyZWY7CiAgICBpZiggJGNhcHRpb24gKSAkdGhpcy0+Y2FwdGlvbiA9ICRjYXB0aW9uOwogICAgaWYoICRkZXNjcmlwdGlvbiApICR0aGlzLT5kZXNjcmlwdGlvbiA9ICRkZXNjcmlwdGlvbjsKICB9CgoKICBwdWJsaWMgZnVuY3Rpb24gX19nZXQoJGtleSkKICB7CiAgICBpZiggIWluX2FycmF5KCRrZXksJHRoaXMtPl9rZXlzKSApCiAgICAgIHsKCXRocm93IG5ldyBFeGNlcHRpb24oJ0F0dGVtcHQgdG8gcmV0cmlldmUgaW52YWxpZCB2YWx1ZSBmcm9tIHBvc3RfYXR0YWNobWVudCBvYmplY3QnKTsKICAgICAgfQoKICAgIGlmKCAhaXNzZXQoJHRoaXMtPl9kYXRhWyRrZXldKSApIHJldHVybjsKICAgIHJldHVybiAkdGhpcy0+X2RhdGFbJGtleV07CiAgfQoKCiAgcHVibGljIGZ1bmN0aW9uIF9fc2V0KCRrZXksJHZhbHVlKQogIHsKICAgIGlmKCAhaW5fYXJyYXkoJGtleSwkdGhpcy0+X2tleXMpICkKICAgICAgewoJdGhyb3cgbmV3IEV4Y2VwdGlvbignQXR0ZW1wdCB0byBtb2RpZnkgaW52YWxpZCB2YWx1ZSBmcm9tIHBvc3RfYXR0YWNobWVudCBvYmplY3QnKTsKICAgICAgfQogICAgCiAgICBzd2l0Y2goICRrZXkgKQogICAgICB7CiAgICAgIGNhc2UgJ21lZGlhJzoKCSR2YWx1ZSA9IHN0cnRvbG93ZXIoJHZhbHVlKTsKCWlmKCAkdmFsdWUgIT0gJ2ltYWdlJyAmJiAkdmFsdWUgIT0gJ2ZsYXNoJyAmJiAkdmFsdWUgIT0gJ211c2ljJyApCgkgIHsKCSAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdBdHRlbXB0IHRvIG1vZGlmeSBhdHRhY2htZW50IG9iamVjdCB3aXRoIGludmFsaWQgdmFsdWUnKTsKCSAgfQoJYnJlYWs7CiAgICAgIH0KCiAgICAkdGhpcy0+JGtleSA9ICR2YWx1ZTsKICB9CgoKICBwdWJsaWMgZnVuY3Rpb24gYWRkX21lZGlhKCR0eXBlLCRzcmMsJGhyZWYpCiAgewogICAgaWYoICgkdHlwZSAhPSAnaW1hZ2UnICYmICR0eXBlICE9ICdmbGFzaCcgJiYgJHR5cGUgIT0gJ211c2ljJykgfHwgISRzcmMgfHwgISRocmVmICkKICAgICAgewoJdGhyb3cgbmV3IEV4Y2VwdGlvbignQXR0ZW1wdCB0byBhZGQgaW52YWxpZCBtZWRpYSB0byBhbiBhdHRhY2htZW50IG9iamVjdCcpOwogICAgICB9CgogICAgaWYoIGNvdW50KCR0aGlzLT5fbWVkaWEpID09IDUgKQogICAgICB7Cgl0aHJvdyBuZXcgRXhjZXB0aW9uKCdBdHRlbXB0IHRvIGFkZCB0b28gbWFueSBtZWRpYSBvYmplY3RzIHRvIGFuIGF0dGFjaG1lbnQnKTsKICAgICAgfQoKICAgICR0bXAgPSBhcnJheSgndHlwZSc9PiR0eXBlLCdzcmMnPT4kc3JjLCdocmVmJz0+JGhyZWYpOwogICAgJHRoaXMtPl9tZWRpYVtdID0gJHRtcDsKICB9CgoKICBwdWJsaWMgZnVuY3Rpb24gYWRkX3Byb3BlcnR5KCRuYW1lLCR0ZXh0LCRocmVmID0gJycpCiAgewogICAgaWYoICEkbmFtZSB8fCAhJHRleHQgKQogICAgICB7Cgl0aHJvdyBuZXcgRXhjZXB0aW9uKCdBdHRlbXB0IHRvIGFkZCBpbnZhbGlkIHByb3BlcnR5IHRvIGFuIGF0dGFjaG1lbnQgb2JqZWN0Jyk7CiAgICAgIH0KCiAgICBpZiggJGhyZWYgKQogICAgICB7CgkkdGV4dCA9IGFycmF5KCd0ZXh0Jz0+JHRleHQsJ2hyZWYnPT4kaHJlZik7CiAgICAgIH0KCiAgICAkdGhpcy0+X3Byb3BzWyRuYW1lXSA9ICR0ZXh0OwogIH0KCgogIHB1YmxpYyBmdW5jdGlvbiBhZGRfZGF0YSgka2V5LCR2YWx1ZSkKICB7CiAgICBpZiggISRrZXkgfHwgISR2YWx1ZSApCiAgICAgIHsKCXRocm93IG5ldyBFeGNlcHRpb24oJ0F0dGVtcHQgdG8gYWRkIGludmFsaWQgcHJvcGVydHkgdG8gYW4gYXR0YWNobWVudCBvYmplY3QnKTsKICAgICAgfQoKICAgICR0aGlzLT5fYXNzb2NbJGtleV0gPSAkdmFsdWU7CiAgfQoKCiAgcHVibGljIGZ1bmN0aW9uIHRvX2FycmF5KCkKICB7CiAgICAkb3V0cHV0ID0gYXJyYXkoKTsKICAgICRvdXRwdXRbJ25hbWUnXSA9ICR0aGlzLT5uYW1lOwogICAgJG91dHB1dFsnaHJlZiddID0gJHRoaXMtPmhyZWY7CiAgICBpZiggJHRoaXMtPmNhcHRpb24gKSAkb3V0cHV0WydjYXB0aW9uJ10gPSAkdGhpcy0+Y2FwdGlvbjsKICAgIGlmKCAkdGhpcy0+ZGVzY3JpcHRpb24gKSAkb3V0cHV0WydkZXNjcmlwdGlvbiddID0gJHRoaXMtPmRlc2NyaXB0aW9uOwogICAgaWYoICR0aGlzLT5jb21tZW50c194aWQgKSAkb3V0cHV0Wydjb21tZW50c194aWQnXSA9ICR0aGlzLT5jb21tZW50c194aWQ7CgogICAgaWYoIGNvdW50KGFycmF5X2tleXMoJHRoaXMtPl9wcm9wcykpICkKICAgICAgewoJJG91dHB1dFsncHJvcGVydGllcyddID0gYXJyYXkoKTsKCWZvcmVhY2goICR0aGlzLT5fcHJvcHMgYXMgJGtleSAtPiAkdmFsdWUgKQoJICB7CgkgICAgJG91dHB1dFsncHJvcGVydGllcyddID0gYXJyYXkoJGtleSwkdmFsdWUpOwoJICB9CiAgICAgIH0KCiAgICBpZiggY291bnQoJHRoaXMtPl9tZWRpYSkgKQogICAgICB7Cgkkb3V0cHV0WydtZWRpYSddID0gJHRoaXMtPl9tZWRpYTsKICAgICAgfQoKICAgIGlmKCBjb3VudCgkdGhpcy0+X2Fzc29jKSApCiAgICAgIHsKCWZvcmVhY2goICR0aGlzLT5fYXNzb2MgYXMgJGtleSA9PiAkdmFsdWUgKQoJICB7CgkgICAgJG91dHB1dFska2V5XSA9ICR2YWx1ZTsKCSAgfQogICAgICB9CgogICAgcmV0dXJuICRvdXRwdXQ7CiAgfQp9IC8vIGVuZCBvZiBjbGFzcwoKIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/lib/class.cgfb_smarty.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRkJBcHAgKGMpIDIwMTAgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEEgdG9vbGJveCBvZiBjb252ZW5pZW5jZXMgdG8gYnVpbGQgZmFjZWJvb2sgaW50ZWdyYXRpb24gaW50byBhIHdlYnNpdGUKIyAgZm9yIENNUyBtb2R1bGVzIGFuZCB3ZWJzaXRlIGRlc2lnbmVycy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCi8qKgogKgogKi8KY2xhc3MgY2dmYl9zbWFydHkKewogIC8qKgogICAqIEdldCBhIHByZWZlcmVuY2UKICAgKi8KICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRfcHJlZmVyZW5jZSgkbmFtZSkKICB7CiAgICAkbW9kID0gY2dlX3V0aWxzOjpnZXRfbW9kdWxlKCdDR0ZCQXBwJyk7CiAgICByZXR1cm4gJG1vZC0+R2V0UHJlZmVyZW5jZSgkbmFtZSk7CiAgfQoKICAvKioKICAgKiBHZXQgYW4gaW1hZ2UgZnJvbSB0aGUgbW9kdWxlIGRpcmVjdG9yeS4KICAgKi8KICBwcml2YXRlIHN0YXRpYyBmdW5jdGlvbiBnZXRfaW1hZ2UoJG5hbWUpCiAgewogICAgJG1vZCA9IGNnZV91dGlsczo6Z2V0X21vZHVsZSgnQ0dGQkFwcCcpOwogICAgJHVybCA9ICRtb2QtPkdldE1vZHVsZVVSTFBhdGgoKS4iL2ltYWdlcy8kbmFtZSI7CiAgICByZXR1cm4gJHVybDsKICB9CgoKICAvKioKICAgKiBJbml0aWFsaXplIHRoZSBzbWFydHkgcGx1Z2lucy4KICAgKi8KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGluaXQoKQogIHsKICAgICRzbWFydHkgPSBjbXNtcygpLT5HZXRTbWFydHkoKTsKCiAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbignY2dmYl9sb2dpbicsYXJyYXkoJ2NnZmJfc21hcnR5JywnbG9naW5fYnV0dG9uJykpOwogICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2NnZmJfbG9nb3V0JyxhcnJheSgnY2dmYl9zbWFydHknLCdsb2dvdXRfYnV0dG9uJykpOwogICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2NnZmJfYXBpJyxhcnJheSgnY2dmYl9zbWFydHknLCdhcGknKSk7CiAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbignY2dmYl9tZScsYXJyYXkoJ2NnZmJfc21hcnR5JywnbWUnKSk7CiAgICAkc21hcnR5LT5yZWdpc3Rlcl9mdW5jdGlvbignY2dmYl91aWQnLGFycmF5KCdjZ2ZiX3NtYXJ0eScsJ3VpZCcpKTsKICAgICRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCdjZ2ZiX2FwcCcsYXJyYXkoJ2NnZmJfc21hcnR5JywnYXBwJykpOwogICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2NnZmJfY29tbWVudHMnLGFycmF5KCdjZ2ZiX3NtYXJ0eScsJ2NvbW1lbnRzJykpOwogICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2NnZmJfc2VuZCcsYXJyYXkoJ2NnZmJfc21hcnR5Jywnc2VuZCcpKTsKICAgICRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCdjZ2ZiX3dhbGxwb3N0JyxhcnJheSgnY2dmYl9zbWFydHknLCd3YWxscG9zdCcpKTsKICAgICRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCdjZ2ZiX3N0YXR1cycsYXJyYXkoJ2NnZmJfc21hcnR5Jywnc3RhdHVzJykpOwogICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2NnZmJfbGlrZScsYXJyYXkoJ2NnZmJfc21hcnR5JywnbGlrZWJ0bicpKTsKICAgICRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCdjZ2ZiX2ludml0ZScsYXJyYXkoJ2NnZmJfc21hcnR5JywnaW52aXRlJykpOwogICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2NnZmJfaW5pdCcsYXJyYXkoJ2NnZmJfc21hcnR5JywnaW5pdF9mYicpKTsKICAgICRzbWFydHktPnJlZ2lzdGVyX2Z1bmN0aW9uKCdjZ2ZiX2ZxbCcsYXJyYXkoJ2NnZmJfc21hcnR5JywnZnFsJykpOwogICAgJHNtYXJ0eS0+cmVnaXN0ZXJfZnVuY3Rpb24oJ2NnZmJfZnFsX211bHRpJyxhcnJheSgnY2dmYl9zbWFydHknLCdmcWwnKSk7CiAgfQoKCiAgLyoqCiAgICogQSBzbWFydHkgcGx1Z2luIHRvIHBlcmZvcm0gYW4gYXBpIGNhbGwgdXNpbmcgdGhlIHVzZXJzIGFjY2VzcyB0b2tlbi4KICAgKgogICAqIHNwZWNpYWwgcGFyYW10ZXJzOgogICAqIGNhbGw6IHN0cmluZyAtIGNvbnRhaW5zIHRoZSBVUkwgdG8gY2FsbAogICAqIGFzc2lnbjogc3RyaW5nIC0gYXNzaWduIHRoZSByZXN1bHRzIHRvIHRoZSBzcGVjaWZpZWQgc21hcnR5IHZhcmlhYmxlLgogICAqLwogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYXBpKCRwYXJhbXMsJiRzbWFydHkpCiAgewogICAgaWYoICFpc3NldCgkcGFyYW1zWydjYWxsJ10pICkgcmV0dXJuOwoKICAgICRjYWxsID0gdHJpbSgkcGFyYW1zWydjYWxsJ10pOwogICAgdW5zZXQoJHBhcmFtc1snY2FsbCddKTsKCiAgICAkcmVzID0gY2dmYjo6YXBpKCRjYWxsLCdHRVQnLCRwYXJhbXMpOwogICAgaWYoICEkcmVzICkgcmV0dXJuOwoKICAgIGlmKCBpc3NldCgkcGFyYW1zWydhc3NpZ24nXSkgKQogICAgICB7Cgkkc21hcnR5LT5hc3NpZ24oJHBhcmFtc1snYXNzaWduJ10sJHJlcyk7CglyZXR1cm47CiAgICAgIH0KCiAgICByZXR1cm4gJHJlczsKICB9CgoKICAvKioKICAgKiBBIHNtYXJ0eSBwbHVnaW4gdG8gZGlzcGxheSBhIGxvZ2luIGJ1dHRvbiBpZiB0aGUgdXNlciBpcyBub3QgY3VycmVudGx5CiAgICogbG9nZ2VkIGludG8gZmFjZWJvb2suCiAgICoKICAgKiBzcGVjaWFsIHBhcmFtczoKICAgKiB3aWR0aDogaW50CiAgICogaGVpZ2h0OiBpbnQKICAgKiBmYWNlczogYm9vbGVhbgogICAqIG1heF9yb3dzOiBpbnQKICAgKiBmYl9wZXJtczogc3RyaW5nCiAgICoKICAgKiB1cmxfb25seTogYm9vbAogICAqIGltYWdlOiBzdHJpbmcKICAgKiBhc3NpZ246IHN0cmluZwogICAqLwogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gbG9naW5fYnV0dG9uKCRwYXJhbXMsICYkc21hcnR5KQogIHsKLy8gICAgICRvdXRwdXQgPSAnJzsKCi8vICAgICAvLyBqYXZhc2NyaXB0IHNkay4KLy8gICAgICRvdXRwdXQgPSAnPGZiOmxvZ2luLWJ1dHRvbic7Ci8vICAgICBpZiggaXNzZXQoJHBhcmFtc1snd2lkdGgnXSkgKQovLyAgICAgICB7Ci8vIAkkb3V0cHV0IC49ICcgd2lkdGg9Jy4oaW50KSRwYXJhbXNbJ3dpZHRoJ107Ci8vICAgICAgIH0KLy8gICAgIGlmKCBpc3NldCgkcGFyYW1zWydmYWNlcyddKSAmJiAoaW50KSRwYXJhbXNbJ2ZhY2UnXSA+IDAgKQovLyAgICAgICB7Ci8vIAkkb3V0cHV0IC49ICcgc2hvdy1mYWNlcz0iMSInOwovLyAgICAgICB9Ci8vICAgICBpZiggaXNzZXQoJHBhcmFtc1snbWF4X3Jvd3MnXSkgKQovLyAgICAgICB7Ci8vIAkkb3V0cHV0IC49ICcgbWF4LXJvd3M9Jy4oaW50KSRwYXJhbXNbJ21heF9yb3dzJ107Ci8vICAgICAgIH0KLy8gICAgICRwZXJtcyA9IHNlbGY6OmdldF9wcmVmZXJlbmNlKCdmYl9wZXJtcycpOwovLyAgICAgaWYoICRwZXJtcyApCi8vICAgICAgIHsKLy8gCSRvdXRwdXQgLj0gJyBwZXJtcz0iJy4kcGVybXMuJyInOwovLyAgICAgICB9CgkKLy8gICAgICRvdXRwdXQgLj0gJz48L2ZiOmxvZ2luLWJ1dHRvbj4nOwoKICAgJG91dHB1dCA9ICcnOwoKICAgIC8vIHN0YXRpYyBodG1sCiAgICBpZiggY2dmYjo6dWlkKCkgKSByZXR1cm47CgogICAgJHVybCA9IGNnZmI6OmdldF9sb2dpbl91cmwoKTsKICAgIGlmKCBpc3NldCgkcGFyYW1zWyd1cmxvbmx5J10pICkKICAgICAgewoJJG91dHB1dCA9ICR1cmw7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewoJJHBhcmFtc1sndXJsJ10gPSAkdXJsOwoJaWYoICFpc3NldCgkcGFyYW1zWydpbWFnZSddKSApCgkgIHsKCSAgICAkcGFyYW1zWydpbWFnZSddID0gc2VsZjo6Z2V0X2ltYWdlKCdmYl9sb2dpbi5naWYnKTsKCSAgfQoJJG91dHB1dCA9IGNnZV90YWdzOjpsaW5rX3RhZygkcGFyYW1zKTsKICAgICAgfQoKICAgIC8vIGhhbmRsZSBhc3NpZ24KICAgIGlmKCBpc3NldCgkcGFyYW1zWydhc3NpZ24nXSkgKQogICAgICB7Cgkkc21hcnR5LT5hc3NpZ24oJHBhcmFtc1snYXNzaWduJ10sJG91dHB1dCk7CglyZXR1cm47CiAgICAgIH0KICAgIHJldHVybiAkb3V0cHV0OwogIH0KCgogIC8qKgogICAqIENyZWF0ZSBhIGZhY2Vib29rIGxvZ291dCBidXR0b24gaWYgdGhlIHVzZXIgaXMgYWxyZWFkeSBsb2dnZWQgaW4KICAgKgogICAqIHNwZWNpYWwgcGFyYW1zOgogICAqIHVybG9ubHk6IHN0cmluZwogICAqIGltYWdlOiBzdHJpbmcKICAgKiBhc3NpZ246IHN0cmluZwogICAqLwogIHN0YXRpYyBwdWJsaWMgZnVuY3Rpb24gbG9nb3V0X2J1dHRvbigkcGFyYW1zLCYkc21hcnR5KQogIHsKICAgIGlmKCAhc2VsZjo6dXNlX3hmYm1sKCkgKQogICAgICB7CglpZiggIWNnZmI6OnVpZCgpICkgcmV0dXJuOwoKCSR1cmwgPSBjZ2ZiOjpnZXRfbG9nb3V0X3VybCgpOwoJJG91dHB1dCA9ICcnOwoJaWYoIGlzc2V0KCRwYXJhbXNbJ3VybG9ubHknXSkgKQoJICB7CgkgICAgJG91dHB1dCA9ICR1cmw7CgkgIH0KCWVsc2UKCSAgewoJICAgICRwYXJhbXNbJ3VybCddID0gJHVybDsKCSAgICBpZiggIWlzc2V0KCRwYXJhbXNbJ2ltYWdlJ10pICkKCSAgICAgIHsKCQkkcGFyYW1zWydpbWFnZSddID0gc2VsZjo6Z2V0X2ltYWdlKCdmYl9sb2dvdXQuZ2lmJyk7CgkgICAgICB9CgkgICAgJG91dHB1dCA9IGNnZV90YWdzOjpsaW5rX3RhZygkcGFyYW1zKTsKCSAgfQoKCS8vIGhhbmRsZSBhc3NpZ24KCWlmKCBpc3NldCgkcGFyYW1zWydhc3NpZ24nXSkgKQoJICB7CgkgICAgJHNtYXJ0eS0+YXNzaWduKCRwYXJhbXNbJ2Fzc2lnbiddLCRvdXRwdXQpOwoJICAgIHJldHVybjsKCSAgfQoKCXJldHVybiAkb3V0cHV0OwogICAgICB9CiAgfQoKCiAgLyoqCiAgICogUmV0cmlldmUgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXIKICAgKgogICAqIHNwZWNpYWwgcGFyYW1zOgogICAqIGFzc2lnbjogc3RyaW5nCiAgICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBtZSgkcGFyYW1zLCYkc21hcnR5KQogIHsKICAgICRtZSA9IGNnZmI6Om1lKCk7CiAgICBpZiggIWlzX2FycmF5KCRtZSkgKSByZXR1cm47CgogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2Fzc2lnbiddKSApCiAgICAgIHsKCSRzbWFydHktPmFzc2lnbigkcGFyYW1zWydhc3NpZ24nXSwkbWUpOwoJcmV0dXJuOwogICAgICB9CiAgICByZXR1cm4gJG1lOwogIH0KCgogIC8qKgogICAqIFJldHJpZXZlIHRoZSBjdXJyZW50bHkgbG9nZ2VkIGluIHVzZXJzIGZhY2Vib29rIHVzZXIgaWQuCiAgICoKICAgKiBzcGVjaWFsIHBhcmFtczoKICAgKiBhc3NpZ246IHN0cmluZwogICAqLwogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gdWlkKCRwYXJhbXMsJiRzbWFydHkpCiAgewogICAgJHVpZCA9IGNnZmI6OnVpZCgpOwogICAgaWYoICEkdWlkICkgcmV0dXJuOwoKICAgIGlmKCBpc3NldCgkcGFyYW1zWydhc3NpZ24nXSkgKQogICAgICB7Cgkkc21hcnR5LT5hc3NpZ24oJHBhcmFtc1snYXNzaWduJ10sJHVpZCk7CglyZXR1cm47CiAgICAgIH0KICAgIHJldHVybiAkdWlkOwogIH0KCgogIC8qKgogICAqIFJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uLgogICAqCiAgICogc3BlY2lhbCBwYXJhbXM6CiAgICogYXNzaWduOiBzdHJpbmcKICAgKiBjYWxsOiAgIHN0cmluZyB1cmwgcG9ydGlvbiB0byBjYWxsIChzZWUgZmFjZWJvb2sgZ3JhcGggQVBJKQogICAqLwogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gYXBwKCRwYXJhbXMsJiRzbWFydHkpCiAgewogICAgJG1vZCA9IGNnZV91dGlsczo6Z2V0X21vZHVsZSgnQ0dGQkFwcCcpOwogICAgJGFwcGlkID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnZmJfYXBwaWQnKTsKCiAgICAkY2FsbCA9ICRhcHBpZDsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydjYWxsJ10pICkKICAgICAgewoJJGNhbGwgLj0gJy8nLnRyaW0oJHBhcmFtc1snY2FsbCddKTsKCXVuc2V0KCRwYXJhbXNbJ2NhbGwnXSk7CiAgICAgIH0KCiAgICAkcmVzID0gY2dmYjo6YXBpKCRjYWxsKTsKICAgIGlmKCAhJHJlcyApIHJldHVybjsKCiAgICBpZiggaXNzZXQoJHBhcmFtc1snYXNzaWduJ10pICkKICAgICAgewoJJHNtYXJ0eS0+YXNzaWduKCRwYXJhbXNbJ2Fzc2lnbiddLCRyZXMpOwoJcmV0dXJuOwogICAgICB9CgogICAgcmV0dXJuICRyZXM7CiAgfQoKCiAgLyoqCiAgICogRGlzcGxheSBhIGJveCBhbGxvd2luZyB1c2VycyB0byBjb21tZW50IG9uIGFuIG9iamVjdAogICAqCiAgICogc3BlY2lhbCBwYXJhbXM6CiAgICogdW5pcXVlaWQ6IHN0cmluZwogICAqIHdpZHRoOiBpbnQKICAgKiBuY29tbWVudHM6IGludAogICAqIHB1Ymxpc2g6IGJvb2wKICAgKiBhc3NpZ246IHN0cmluZwogICAqLwogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gY29tbWVudHMoJHBhcmFtcywmJHNtYXJ0eSkKICB7CiAgICAkdW5pcXVlaWQgPSAncicubWQ1KGNnZV91cmw6OmN1cnJlbnRfdXJsKCkpOwogICAgJHdpZHRoID0gNDI1OwogICAgJG5jb21tZW50cyA9IDEwOwogICAgJHB1Ymxpc2ggPSAxOwoKICAgIGlmKCBpc3NldCgkcGFyYW1zWyd1bmlxdWVpZCddKSApIAogICAgICB7CgkkdW5pcXVlaWQgPSB0cmltKCRwYXJhbXNbJ3VuaXF1ZWlkJ10pOwogICAgICB9CiAgICBpZiggaXNzZXQoJHBhcmFtc1snd2lkdGgnXSkgKSAKICAgICAgewoJJHdpZHRoID0gKGludCkkcGFyYW1zWyd3aWR0aCddOwogICAgICB9CiAgICBpZiggaXNzZXQoJHBhcmFtc1snbmNvbW1lbnRzJ10pICkgCiAgICAgIHsKCSRuY29tbWVudHMgPSAoaW50KSRwYXJhbXNbJ25jb21tZW50cyddOwogICAgICB9CiAgICBpZiggaXNzZXQoJHBhcmFtc1sncHVibGlzaCddKSApIAogICAgICB7CgkkcHVibGlzaCA9IChpbnQpJHBhcmFtc1sncHVibGlzaCddOwogICAgICB9CgogICAgaWYoICRwdWJsaXNoICkKICAgICAgewoJJHB1Ymxpc2ggPSAndHJ1ZSc7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewoJJHB1Ymxpc2ggPSAnZmFsc2UnOwogICAgICB9CgogICAgJG9wdHMgPSBhcnJheSgpOwogICAgaWYoICR1bmlxdWVpZCApICRvcHRzW10gPSAneGlkPSInLiR1bmlxdWVpZC4nIic7CiAgICAkb3B0c1tdID0gJ3B1Ymxpc2g9IicuJHB1Ymxpc2guJyInOwogICAgJG9wdHNbXSA9ICd3aWR0aD0iJy4kd2lkdGguJyInOwogICAgJG9wdHNbXSA9ICdudW1wb3N0cz0iJy4kbmNvbW1lbnRzLiciJzsKICAgICRvdXRwdXQgPSAnPGZiOmNvbW1lbnRzICcuaW1wbG9kZSgnICcsJG9wdHMpLic+PC9mYjpjb21tZW50cz4nOwogICAgCiAgICBpZiggaXNzZXQoJHBhcmFtc1snYXNzaWduJ10pICkKICAgICAgewoJJHNtYXJ0eS0+YXNzaWduKCRwYXJhbXNbJ2Fzc2lnbiddLCRvdXRwdXQpOwoJcmV0dXJuOwogICAgICB9CgogICAgcmV0dXJuICRvdXRwdXQ7CiAgfQoKCiAgLyoqCiAgICogQSBzbWFydHkgcGx1Z2luIHRvIGRpc3BsYXkgYSBsaWtlIGJ1dHRvbgogICAqCiAgICogc3BlY2lhbCBwYXJhbXM6CiAgICogaHJlZjogc3RyaW5nCiAgICogbGF5b3V0OiBzdHJpbmcgKHN0YW5kYXJkLGJ1dHRvbl9jb3VudCxib3hfY291bnQpCiAgICogc2hvd19mYWNlczogYm9vbAogICAqIGFjdGlvbjogc3RyaW5nIChsaWtlfHJlY29tbWVuZCkKICAgKiB3aWR0aDogaW50CiAgICogZm9udDogc3RyaW5nIChhcmlhbHxsaWNpZGEgZ3JhbmRlfHNlZ29zIHVsfHRhaG9tYXx0cmVidWNoZXQgbXN8dmVyZGFuYSkKICAgKiBjb2xvcnNjaGVtZTogc3RyaW5nIChsaWdodHxkYXJrKQogICAqIHJlZjogc3RyaW5nCiAgICogYXNzaWduOiBzdHJpbmcKICAgKi8KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGxpa2VidG4oJHBhcmFtcywmJHNtYXJ0eSkKICB7CiAgICAkcGFybXMgPSBhcnJheSgpOwogICAgJHBhcm1zWydocmVmJ10gPSBjZ2VfdXJsOjpjdXJyZW50X3VybCgpOwoKICAgIGZvcmVhY2goICRwYXJhbXMgYXMgJGtleSA9PiAkdmFsdWUgKQogICAgICB7Cglzd2l0Y2goICRrZXkgKQoJICB7CgkgIGNhc2UgJ2hyZWYnOgoJICAgICRwYXJtc1snaHJlZiddID0gdHJpbSgkdmFsdWUpOwoJICAgIGJyZWFrOwoKCSAgY2FzZSAnbGF5b3V0JzoKCSAgICAkdmFsdWUgPSBzdHJ0b2xvd2VyKCR2YWx1ZSk7CgkgICAgc3dpdGNoKCAkdmFsdWUgKQoJICAgICAgewoJICAgICAgY2FzZSAnc3RhbmRhcmQnOgoJICAgICAgY2FzZSAnYnV0dG9uX2NvdW50JzoKCSAgICAgIGNhc2UgJ2JveF9jb3VudCc6CgkJJHBhcm1zWyRrZXldID0gJHZhbHVlOwoJCWJyZWFrOwoJICAgICAgfQoJICAgIGJyZWFrOwoKCSAgY2FzZSAnc2hvd19mYWNlcyc6CgkgICAgaWYoICR2YWx1ZSApICR2YWx1ZSA9ICd0cnVlJzsKCSAgICBlbHNlICR2YWx1ZSA9ICdmYWxzZSc7CgkgICAgJHBhcm1zWyRrZXldID0gJHZhbHVlOwoJICAgIGJyZWFrOwoKCSAgY2FzZSAnYWN0aW9uJzoKCSAgICAkdmFsdWUgPSBzdHJ0b2xvd2VyKCR2YWx1ZSk7CgkgICAgaWYoICR2YWx1ZSA9PSAnbGlrZScgfHwgJHZhbHVlID09ICdyZWNvbW1lbmQnICkKCSAgICAgICRwYXJtc1ska2V5XSA9ICR2YWx1ZTsKCSAgICBicmVhazsKCgkgIGNhc2UgJ3dpZHRoJzoKCSAgICAkcGFybXNbJGtleV0gPSAoaW50KSR2YWx1ZTsKCSAgICBicmVhazsKCgkgIGNhc2UgJ2ZvbnQnOgoJICAgICR2YWx1ZSA9IHN0cnRvbG93ZXIoJHZhbHVlKTsKCSAgICBzd2l0Y2goICR2YWx1ZSApCgkgICAgICB7CgkgICAgICBjYXNlICdhcmlhbCc6CgkgICAgICBjYXNlICdsdWNpZGEgZ3JhbmRlJzoKCSAgICAgIGNhc2UgJ3NlZ29lIHVpJzoKCSAgICAgIGNhc2UgJ3RhaG9tYSc6CgkgICAgICBjYXNlICd0cmVidWNoZXQgbXMnOgoJICAgICAgY2FzZSAndmVyZGFuYSc6CgkJJHBhcm1zWyRrZXldID0gJHZhbHVlOwoJCWJyZWFrOwoJICAgICAgfQoJICAgIGJyZWFrOwoKCSAgY2FzZSAnY29sb3JzY2hlbWUnOgoJICAgICR2YWx1ZSA9IHN0cnRvbG93ZXIoJHZhbHVlKTsKCSAgICBpZiggJHZhbHVlID09ICdsaWdodCcgfHwgJHZhbHVlID09ICdkYXJrJyApCgkgICAgICB7CgkJJHBhcm1zWyRrZXldID0gJHZhbHVlOwoJICAgICAgfQoJICAgIGJyZWFrOwoKCSAgY2FzZSAncmVmJzoKCSAgICAkcGFybXNbJGtleV0gPSAkdmFsdWU7CgkgICAgYnJlYWs7CgkgIH0KICAgICAgfQoKICAgICRvdXRwdXQgPSAnPGZiOmxpa2UgJzsKICAgIGZvcmVhY2goICRwYXJtcyBhcyAka2V5ID0+ICR2YWx1ZSApCiAgICAgIHsKCSRvdXRwdXQgLj0gJyAnLiRrZXkuJz0iJy4kdmFsdWUuJyInOwogICAgICB9CiAgICAkb3V0cHV0IC49ICc+PC9mYjpsaWtlPic7CgogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2Fzc2lnbiddKSApCiAgICAgIHsKCSRzbWFydHktPmFzc2lnbigkcGFyYW1zWydhc3NpZ24nXSwkb3V0cHV0KTsKCXJldHVybjsKICAgICAgfQoKICAgIHJldHVybiAkb3V0cHV0OwogIH0KCgogIC8qKgogICAqIEdlbmVyaWMgZnVuY3Rpb24gdG8gZG8gYW4gQVBJIFBPU1QgY2FsbAogICAqCiAgICogc3BlY2lhbCBwYXJhbXM6CiAgICogdGhpcyBtZXRob2QgYWNjZXB0cyBtaXNjIHBhcmFtZXRlcnMsIHNlZSB0aGUgZ3JhcGggQVBJCiAgICogY2FsbDogIHN0cmluZzogVVJMIHBvcnRpb24gZm9yIGdyYXBoIEFQSQogICAqIGFzX2FwcDogYm9vbCAtIHNob3VsZCBhcGkgY2FsbCBoYXBwZW4gYXMgdGhlIGFwcGxpY2F0aW9uIG9yIGFzIHRoZSB1c2VyLgogICAqIGFzc2lnbjogc3RyaW5nCiAgICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzZW5kKCRwYXJhbXMsJiRzbWFydHkpCiAgewogICAgaWYoICFpc3NldCgkcGFyYW1zWyd1cmknXSkgKSByZXR1cm47CgogICAgJHVyaSA9IHRyaW0oJHBhcmFtc1sndXJpJ10pOwogICAgaWYoICFzdGFydHN3aXRoKCR1cmksJy8nKSApICR1cmkgPSAnLycuJHVyaTsKICAgIHVuc2V0KCRwYXJhbXNbJ3VyaSddKTsKCiAgICAkcmVzID0gbnVsbDsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydhc19hcHAnXSkgJiYgJHBhcmFtc1snYXNfYXBwJ10gKQogICAgICB7Cgl1bnNldCgkcGFyYW1zWydhc19hcHAnXSk7CgkkcmVzID0gY2dmYjo6YXBwX2FwaSgkdXJpLCdQT1NUJywkcGFyYW1zKTsKICAgICAgfQogICAgZWxzZQogICAgICB7CgkkcmVzID0gY2dmYjo6YXBpKCR1cmksJ1BPU1QnLCRwYXJhbXMpOwogICAgICB9CgogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2Fzc2lnbiddKSApCiAgICAgIHsKCSRzbWFydHktPmFzc2lnbigkcGFyYW1zWydhc3NpZ24nXSwkcmVzKTsKCXJldHVybjsKICAgICAgfQoKICAgIHJldHVybiAkcmVzOwogIH0KCgogIC8qKgogICAqIEEgZnVuY3Rpb24gdG8gY3JlYXRlIGEgd2FsbCBwb3N0CiAgICoKICAgKiBzcGVjaWFsIHBhcmFtczoKICAgKiB0bzogICBzdHJpbmcgLS0gb3B0aW9uYWwgKG1lIGlzIGFzc3VtZWQpCiAgICogbXNnOiAgc3RyaW5nIC0tIHJlcXVpcmVkCiAgICogbmFtZTogc3RyaW5nIC0tIHJlcXVpcmVkCiAgICogaHJlZjogc3RyaW5nIC0tIHJlcXVpcmVkCiAgICogY2FwdGlvbjogc3RyaW5nCiAgICogZGVzYzogc3RyaW5nCiAgICogeGlkOiAgc3RyaW5nCiAgICogcHJvcDogc3RyaW5nIG5hbWUsdmFsdWVbLGhyZWZdCiAgICogZGF0YTogc3RyaW5nIG5hbWUsdmFsdWUKICAgKiBpbWFnZTE6IHN0cmluZyBzcmM6OjpocmVmCiAgICogaW1hZ2UyOiBzdHJpbmcgc3JjOjo6aHJlZgogICAqIGltYWdlMzogc3RyaW5nIHNyYzo6OmhyZWYKICAgKiBpbWFnZTQ6IHN0cmluZyBzcmM6OjpocmVmCiAgICogaW1hZ2U1OiBzdHJpbmcgc3JjOjo6aHJlZgogICAqIGltYWdlczogKGhhc2gpIG9mIHNyYz1ocmVmIC4uLiByZXBsYWNlcyBpbWFnZTEtNQogICAqLwogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gd2FsbHBvc3QoJHBhcmFtcywmJHNtYXJ0eSkKICB7CiAgICAkdG8gPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsJ21lJyk7CiAgICAkbXNnID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCdtc2cnKTsKICAgICRuYW1lID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCduYW1lJyk7CiAgICAkaHJlZiA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywnaHJlZicpOwogICAgJGNhcHRpb24gPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsJ2NhcHRpb24nKTsKICAgICRkZXNjcmlwdGlvbiA9IGdldF9wYXJhbWV0ZXJfdmFsdWUoJHBhcmFtcywnZGVzYycpOwoKICAgIGlmKCAhJG1zZyApIHJldHVybjsKICAgIHRyeQogICAgICB7CgkkcG9zdCA9IG5ldyBjZ2ZiX3Bvc3QoJG1zZywkdG8pOwoKCSRhdHQgPSBudWxsOwoJaWYoICRuYW1lICkKCSAgewoJICAgICRhdHQgPSBuZXcgY2dmYl9wb3N0X2F0dGFjaG1lbnQoJG5hbWUsJGhyZWYsJGNhcHRpb24sJGRlc2NyaXB0aW9uKTsKCSAgICAkaGF2ZV9pbWFnZSA9IEZBTFNFOwoJICAgIGZvcmVhY2goICRwYXJhbXMgYXMgJGtleSA9PiAkdmFsdWUgKQoJICAgICAgewoJCWlmKCAka2V5ID09ICd4aWQnICkKCQkgIHsKCQkgICAgJGF0dC0+Y29tbWVudHNfeGlkID0gJHZhbHVlOwoJCSAgICBjb250aW51ZTsKCQkgIH0KCQllbHNlIGlmKCAka2V5ID09ICdpbWFnZXMnICYmICEkaGF2ZV9pbWFnZSApCgkJICB7CgkJICAgIGlmKCBpc19hcnJheSgkdmFsdWUpICkKCQkgICAgICB7CgkJCWZvcmVhY2goICR2YWx1ZSBhcyAkayA9PiAkdiApCgkJCSAgewoJCQkgICAgJGF0dC0+YWRkX21lZGlhKCdpbWFnZScsJGssJHYpOwoJCQkgIH0KCQkgICAgICB9CgkJICAgICRoYXZlX2ltYWdlID0gVFJVRTsKCQkgIH0KCQllbHNlIGlmKCBzdGFydHN3aXRoKCRrZXksJ3Byb3AnKSApCgkJICB7CgkJICAgIGxpc3QoJGssJHYsJGgpID0gZXhwbG9kZSgnLCcsJHZhbHVlLDMpOwoJCSAgICBpZiggJGsgJiYgJHYgKQoJCSAgICAgIHsKCQkJJGF0dC0+YWRkX3Byb3BlcnR5KCRrLCR2LCRoKTsKCQkgICAgICB9CgkJICB9CgkJZWxzZSBpZiggc3RhcnRzd2l0aCgka2V5LCdkYXRhJykgKQoJCSAgewoJCSAgICBsaXN0KCRrLCR2KSA9IGV4cGxvZGUoJywnLCR2YWx1ZSwyKTsKCQkgICAgJGF0dC0+YWRkX2RhdGEoJGssJHYpOwoJCSAgfQoJCWVsc2UgaWYoIHN0YXJ0c3dpdGgoJGtleSwnaW1hZ2UnKSAmJiAhJGhhdmVfaW1hZ2UgKQoJCSAgewoJCSAgICBsaXN0KCRzLCRoKSA9IGV4cGxvZGUoJzo6OicsJHZhbHVlLDIpOwoJCSAgICAkYXR0LT5hZGRfbWVkaWEoJ2ltYWdlJywkcywkaCk7CgkJICB9CgkgICAgICB9CgoJICAgICRwb3N0LT5zZXRfYXR0YWNobWVudCgkYXR0KTsKCSAgfQoKCSRkYXRhID0gYXJyYXlfbWVyZ2UoYXJyYXkoJ21ldGhvZCc9PidzdHJlYW0ucHVibGlzaCcpLCRwb3N0LT50b19hcnJheSgpKTsKCSRyZXMgPSBjZ2ZiOjpyZXN0KCRkYXRhKTsKCglpZiggaXNzZXQoJHBhcmFtc1snYXNzaWduJ10pICkKCSAgewoJICAgICRzbWFydHktPmFzc2lnbigkcGFyYW1zWydhc3NpZ24nXSwkcmVzKTsKCSAgICByZXR1cm47CgkgIH0KCXJldHVybiAkcmVzOwogICAgICB9CiAgICBjYXRjaCggRXhjZXB0aW9uICRlICkKICAgICAgewoJLy8gbm90aGluZyB0byBkbyBoZXJlLgogICAgICB9CiAgfQoKCiAgLyoqCiAgICogQSBmdW5jdGlvbiB0byBQT1NUIG9uIGEgdXNlcnMgd2FsbAogICAqCiAgICogc3BlY2lhbCBwYXJhbXM6CiAgICogdG86IHN0cmluZyAtIHVpZCBvZiB0aGUgdXNlciwgd2FsbCwgb3IgcGFnZSB0byBzZW5kIHRvCiAgICogbXNnOiBzdHJpbmcgLSB0aGUgbWVzc2FnZSB0byBzZW5kCiAgICogYWN0aW9uMTogc3RyaW5nIC0gbmFtZT1saW5rIGZvciBzZW5kaW5nIGxpbmtzCiAgICogYWN0aW9uMjogc3RyaW5nIC0gbmFtZT1saW5rIGZvciBzZW5kaW5nIGxpbmtzCiAgICogYWN0aW9uMzogc3RyaW5nIC0gbmFtZT1saW5rIGZvciBzZW5kaW5nIGxpbmtzCiAgICogYXR0YWNobWVudDogYXR0YWNobWVudCBvYmplY3QgCiAgICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBzdGF0dXMoJHBhcmFtcywmJHNtYXJ0eSkKICB7CiAgICAkdG8gPSBnZXRfcGFyYW1ldGVyX3ZhbHVlKCRwYXJhbXMsJ3RvJyk7CiAgICAkbXNnID0gZ2V0X3BhcmFtZXRlcl92YWx1ZSgkcGFyYW1zLCdtc2cnKTsKICAgIAogICAgaWYoICEkbXNnICkgcmV0dXJuOwoKICAgIHRyeQogICAgICB7Cgkkb2JqID0gbmV3IGNnZmJfcG9zdCgkbXNnLCR0byk7CgkkZGF0YSA9ICRvYmotPnRvX2FycmF5KCk7CglkZWJ1Z19kaXNwbGF5KCRkYXRhKTsgZGllKCk7CiAgICAgIH0KICAgIGNhdGNoKCBFeGNlcHRpb24gJGUgKQogICAgICB7CgkvLyBkbyBub3RoaW5nLgogICAgICB9CgogICAgaWYoICFpc3NldCgkcGFyYW1zWydtc2cnXSkgKSByZXR1cm47CiAgICBpZiggIWlzc2V0KCRwYXJhbXNbJ3RvJ10pICkgCiAgICAgIHsKCSRwYXJhbXNbJ3RvJ10gPSAnbWUnOwogICAgICB9CiAgICAKICAgICRhcmdzID0gYXJyYXkoJ3RvJywnbXNnJywnbGluaycsJ3BpY3R1cmUnLCduYW1lJywnY2FwdGlvbicsJ2Rlc2MnLCdhc19hcHAnLCdhY3Rpb25zJyk7CiAgICAkYXJnbWFwID0gYXJyYXkoJ21zZyc9PidtZXNzYWdlJywnZGVzYyc9PidkZXNjcmlwdGlvbicpOwogICAgJGRhdGEgPSBhcnJheSgpOwogICAgZm9yZWFjaCggJHBhcmFtcyBhcyAka2V5ID0+ICR2YWx1ZSApCiAgICAgIHsKCglpZiggJGtleSA9PSAnYWN0aW9ucycgKQoJICB7CgkgICAgaWYoICFpc19hcnJheSgkdmFsdWUpICkKCSAgICAgIHsKCQkkdmFsdWUgPSBjZ2VfYXJyYXk6OmV4cGxvZGVfd2l0aF9rZXkoJHZhbHVlLCc9JywnLCcpOwoJICAgICAgfQoJICB9CgoJaWYoIGluX2FycmF5KCRrZXksJGFyZ3MpICkKCSAgewoJICAgIC8vIHRyYW5zbGF0ZSBvdXIgbmFtZSB0byBmYWNlYm9va3MgcGFyYW0gbmFtZS4KCSAgICBpZiggaXNzZXQoJGFyZ21hcFska2V5XSkgKQoJICAgICAgewoJCSRrZXkgPSAkYXJnbWFwWyRrZXldOwoJICAgICAgfQoKCSAgICAvLyBzcGVjaWFsIGNhc2VzIGZvciBjZXJ0YWluIHBhcmFtcwoJICAgIGlmKCAka2V5ID09ICd0bycgKQoJICAgICAgewoJCSR1cmkgPSAkcGFyYW1zWyd0byddLicvZmVlZCc7CgkJdW5zZXQoJHBhcmFtc1sndG8nXSk7CgkJJGRhdGFbJ3VyaSddID0gJHVyaTsKCQljb250aW51ZTsKCSAgICAgIH0KCgkgICAgJGRhdGFbJGtleV0gPSAkdmFsdWU7CgkgIH0KICAgICAgfQoKICAgICRvdXRwdXQgPSBzZWxmOjpzZW5kKCRkYXRhLCRzbWFydHkpOwogICAgcmV0dXJuICRvdXRwdXQ7CiAgfQoKCiAgLyoqCiAgICogQSBzbWFydHkgZnVuY3Rpb24gdG8gZGlzcGxheSBhbiBpbnZpdGUgZm9ybQogICAqCiAgICogc3BlY2lhbCBwYXJhbXM6CiAgICogYXNzaWduOiBzdHJpbmcKICAgKiBkZXN0X3VybDogc3RyaW5nCiAgICogYXBwX25hbWU6IHN0cmluZwogICAqIGV4Y2x1ZGVfaWRzOiBzdHJpbmcKICAgKiBjb250ZW50OiBzdHJpbmcKICAgKiBib3JkZXI6IGJvb2wKICAgKiBlbWFpbF9pbnZpdGU6IGJvb2wKICAgKiBpbXBvcnRfZXh0ZXJuYWxfZnJpZW5kczogYm9vbAogICAqIGNvbmRlbnNlZDogYm9vbAogICAqIHJvd3M6IGludCAoMSB0byAxMCkKICAgKiBjb2xzOiBpbnQgKDJ8M3w1KQogICAqIG1heDogaW50ICgxIHRvIDM1KQogICAqIGJ5cGFzczogc3RyaW5nIChzdGVwfHNraXB8Y2FuY2VsKQogICAqIHRlbXBsYXRlOiBzdHJpbmcKICAgKi8KICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGludml0ZSgkcGFyYW1zLCYkc21hcnR5KQogIHsKICAgIHN0YXRpYyAkY250ID0gMDsKICAgICRtb2QgPSBjZ2VfdXRpbHM6OmdldF9tb2R1bGUoJ0NHRkJBcHAnKTsKICAgICR2YXJzID0gYXJyYXkoKTsKICAgICR2YXJzWydhc19hcHAnXSA9IDE7CiAgICAkdmFyc1snbWV0aG9kJ10gPSAnR0VUJzsKICAgICR2YXJzWydkZXN0X3VybCddID0gY2dlX3VybDo6cGFnZV91cmwoKTsKICAgICR2YXJzWydhcHBfbmFtZSddID0gZ2V0X3NpdGVfcHJlZmVyZW5jZSgnc2l0ZW5hbWUnLCdDTVNNUyBTaXRlJyk7CiAgICAkdmFyc1snYWN0aW9uX3RleHQnXSA9ICRtb2QtPkxhbmcoJ2RmbHRfYWN0aW9uX3RleHQnKTsKICAgICR2YXJzWydib3JkZXInXSA9ICd0cnVlJzsKICAgIAogICAgZm9yZWFjaCggJHBhcmFtcyBhcyAka2V5ID0+ICR2YWx1ZSApCiAgICAgIHsKCXN3aXRjaCggJGtleSApCgkgIHsKCSAgY2FzZSAnYXNzaWduJzoKCSAgICAvLyBub3RoaW5nIHRvIGRvIGhlcmUuCgkgICAgYnJlYWs7CgoJICBjYXNlICdtZXRob2QnOgoJICAgICR2YWx1ZSA9IHN0cnRvdXBwZXIoJHZhbHVlKTsKCSAgICBpZiggJHZhbHVlID09ICdHRVQnIHx8ICR2YWx1ZSA9PSAnUE9TVCcgKQoJICAgICAgewoJCSR2YXJzWyRrZXldID0gdHJpbSgkdmFsdWUpOwoJICAgICAgfQoJICAgIGJyZWFrOwoKCSAgY2FzZSAnZGVzdF91cmwnOgoJICBjYXNlICdhcHBfbmFtZSc6CgkgIGNhc2UgJ2FjdGlvbl90ZXh0JzoKCSAgY2FzZSAnZXhjbHVkZV9pZHMnOgoJICBjYXNlICdjb250ZW50JzoKCSAgICAkdmFyc1ska2V5XSA9IHRyaW0oJHZhbHVlKTsKCSAgICBicmVhazsKCgkgIGNhc2UgJ2JvcmRlcic6CgkgIGNhc2UgJ2VtYWlsX2ludml0ZSc6CgkgIGNhc2UgJ2ltcG9ydF9leHRlcm5hbF9mcmllbmRzJzoKCSAgY2FzZSAnY29uZGVuc2VkJzoKCSAgICAkdmFsdWUgPSBjZ2VfdXRpbHM6OnRvX2Jvb2woJHZhbHVlKTsKCSAgICAkdmFsdWUgPSAoJHZhbHVlPyd0cnVlJzonZmFsc2UnKTsKCSAgICAkdmFyc1ska2V5XSA9ICR2YWx1ZTsKCSAgICBicmVhazsKCSAgICAKCSAgY2FzZSAncm93cyc6CgkgICAgJHZhbHVlID0gKGludCkkdmFsdWU7CgkgICAgJHZhbHVlID0gbWF4KCR2YWx1ZSwzKTsKCSAgICAkdmFsdWUgPSBtaW4oJHZhbHVlLDEwKTsKCSAgICAkdmFyc1ska2V5XSA9ICR2YWx1ZTsKCSAgICBicmVhazsKCgkgIGNhc2UgJ2NvbHMnOgoJICAgICR2YWx1ZSA9IChpbnQpJHZhbHVlOwoJICAgIGlmKCAkdmFsdWUgPT0gMiB8fCAkdmFsdWUgPT0gMyB8fCAkdmFsdWUgPT0gNSApCgkgICAgICB7CgkJJHZhcnNbJGtleV0gPSAkdmFsdWU7CgkgICAgICB9CgkgICAgYnJlYWs7CgoJICBjYXNlICdtYXgnOgoJICAgICR2YWx1ZSA9IChpbnQpJHZhbHVlOwoJICAgICR2YWx1ZSA9IG1heCgkdmFsdWUsMSk7CgkgICAgJHZhbHVlID0gbWluKCR2YWx1ZSwzNSk7CgkgICAgJHZhcnNbJGtleV0gPSAkdmFsdWU7CgkgICAgYnJlYWs7CgoJICBjYXNlICdieXBhc3MnOgoJICAgICR2YWx1ZSA9IHN0cnRvbG93ZXIoJHZhbHVlKTsKCSAgICBpZiggJHZhbHVlID09ICdzdGVwJyB8fCAkdmFsdWUgPT0gJ3NraXAnIHx8ICR2YWx1ZSA9PSAnY2FuY2VsJyApCgkgICAgICB7CgkJJHZhcnNbJGtleV0gPSB0cmltKCR2YWx1ZSk7CgkgICAgICB9CgkgICAgYnJlYWs7CgkgIH0KICAgICAgfQoKICAgIC8vIGRvIGZpbmFsIGNoZWNrcwogICAgJHZhcnNbJ2Rlc3RfdXJsJ10gPSBjbXNfaHRtbGVudGl0aWVzKCR2YXJzWydkZXN0X3VybCddKTsKICAgICR2YXJzWydjb250ZW50J10gPSBjbXNfaHRtbGVudGl0aWVzKCR2YXJzWydjb250ZW50J10pOwogICAgJHZhcnNbJ2FwcF9uYW1lJ10gPSBjbXNfaHRtbGVudGl0aWVzKCR2YXJzWydhcHBfbmFtZSddKTsKCiAgICAvLyBnZXQgdGhlIG91dHB1dC4KICAgICRoYXNoID0gbWQ1KCdpbnZpdGUnLiRjbnQrKy5zZXJpYWxpemUoJHBhcmFtcykpOwogICAgJHNtYXJ0eS0+YXNzaWduKCdoYXNoJywkaGFzaCk7CiAgICBmb3JlYWNoKCAkdmFycyBhcyAka2V5ID0+ICR2YWx1ZSApCiAgICAgIHsKCSRzbWFydHktPmFzc2lnbigka2V5LCR2YWx1ZSk7CiAgICAgIH0KCiAgICAkdGhldGVtcGxhdGUgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKENHRkJBcHA6OlBSRUZfSU5WSVRFX1RFTVBMQVRFKTsKICAgIGlmKCBpc3NldCgkcGFyYW1zWyd0ZW1wbGF0ZSddKSApCiAgICAgIHsKCSR0aGV0ZW1wbGF0ZSA9IHRyaW0oJHBhcmFtc1sndGVtcGxhdGUnXSk7CiAgICAgIH0KICAgICRvdXRwdXQgPSAkbW9kLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJ2ludml0ZV8nLiR0aGV0ZW1wbGF0ZSk7CgogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2Fzc2lnbiddKSApCiAgICAgIHsKCSRzbWFydHktPmFzc2lnbigkcGFyYW1zWydhc3NpZ24nXSwkb3V0cHV0KTsKCXJldHVybjsKICAgICAgfQogICAgcmV0dXJuICRvdXRwdXQ7CiAgfQoKCiAgLyoqCiAgICogQSBzbWFydHkgZnVuY3Rpb24gdG8gb3V0cHV0IHRoZSBqYXZhc2NyaXB0IGZvciBpbml0aWFsaXppbmcgdGhlIEZhY2Vib29rIEphdmFzY3JpcHQgU0RLCiAgICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBpbml0X2ZiKCRwYXJhbXMsJiRzbWFydHkpCiAgewogICAgJGFzeW5jID0gZmFsc2U7CiAgICBpZiggaXNzZXQoJHBhcmFtc1snYXN5bmMnXSkgKQogICAgICB7CgkkYXN5bmMgPSBjZ2VfdXRpbHM6OnRvX2Jvb2wodHJpbSgkcGFyYW1zWydhc3luYyddKSk7CiAgICAgIH0KCiAgICAkb3V0cHV0ID0gJyc7CiAgICAkbW9kID0gY2dlX3V0aWxzOjpnZXRfbW9kdWxlKCdDR0ZCQXBwJyk7CiAgICBpZiggJGFzeW5jICkKICAgICAgewoJJG91dHB1dCA9ICRtb2QtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgnZmJpbml0X2FzeW5jJyk7CiAgICAgIH0KICAgIGVsc2UKICAgICAgewoJJG91dHB1dCA9ICRtb2QtPlByb2Nlc3NUZW1wbGF0ZUZyb21EYXRhYmFzZSgnZmJpbml0X3N5bmMnKTsKICAgICAgfQogICAgCiAgICBpZiggISRvdXRwdXQgKSByZXR1cm47CgogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2Fzc2lnbiddKSApCiAgICAgIHsKCSRzbWFydHktPmFzc2lnbih0cmltKCRwYXJhbXNbJ2Fzc2lnbiddKSwkb3V0cHV0KTsKCXJldHVybjsKICAgICAgfQoKICAgIHJldHVybiAkb3V0cHV0OwogIH0KCgogIC8qKgogICAqIEEgc21hcnR5IGZ1bmN0aW9uIHRvIGV4ZWN1dGUgYW4gYXJiaXRyYXJ5IEZRTCBxdWVyeQogICAqLwogIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gZnFsKCRwYXJhbXMsJiRzbWFydHkpCiAgewogICAgaWYoICFpc3NldCgkcGFyYW1zWydmcWwnXSkgKSByZXR1cm47CgogICAgJGZxbCA9IHRyaW0oJHBhcmFtc1snZnFsJ10pOwogICAgdW5zZXQoJHBhcmFtc1snZnFsJ10pOwoKICAgICRyZXMgPSBjZ2ZiOjpmcWwoJGZxbCk7CgogICAgaWYoIGlzc2V0KCRwYXJhbXNbJ2Fzc2lnbiddKSApCiAgICAgIHsKCSRzbWFydHktPmFzc2lnbigkcGFyYW1zWydhc3NpZ24nXSwkcmVzKTsKCXJldHVybjsKICAgICAgfQogICAgcmV0dXJuICRyZXM7CiAgfQoKICAKICAvKioKICAgKiBBIHNtYXJ0eSBmdW5jdGlvbiB0byBleGVjdXRlIGZxbF9tdWx0aXF1ZXJ5CiAgICovCiAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmcWxfbXVsdGlxdWVyeSgkcGFyYW1zLCYkc21hcnR5KQogIHsKICAgICRxID0gYXJyYXkoKTsKICAgIGZvcmVhY2goJHBhcmFtcyBhcyAkayA9PiAkdikKICAgICAgewoJaWYoIHN0YXJ0c3dpdGgoJGssJ3F1ZXJ5JykgKQoJICB7CgkgICAgJHFbXSA9ICR2OwoJICB9CiAgICAgIH0KCiAgICAkcmVzID0gY2dmYjo6ZnFsX211bHRpKCRxKTsKICAgIGlmKCBpc3NldCgkcGFyYW1zWydhc3NpZ24nXSkgKQogICAgICB7Cgkkc21hcnR5LT5hc3NpZ24oJHBhcmFtc1snYXNzaWduJ10sJHJlcyk7CglyZXR1cm47CiAgICAgIH0KICAgIHJldHVybiAkcmVzOwogIH0KfSAvLyBlbmQgb2YgY2xhc3MKCgojCiMgRU9GCiMKPz4=]]></data>
	</file>
	<file>
	  <filename>/lib/facebook.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKCmlmICghZnVuY3Rpb25fZXhpc3RzKCdjdXJsX2luaXQnKSkgewogIHRocm93IG5ldyBFeGNlcHRpb24oJ0ZhY2Vib29rIG5lZWRzIHRoZSBDVVJMIFBIUCBleHRlbnNpb24uJyk7Cn0KaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2pzb25fZGVjb2RlJykpIHsKICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdGYWNlYm9vayBuZWVkcyB0aGUgSlNPTiBQSFAgZXh0ZW5zaW9uLicpOwp9CgovKioKICogVGhyb3duIHdoZW4gYW4gQVBJIGNhbGwgcmV0dXJucyBhbiBleGNlcHRpb24uCiAqCiAqIEBhdXRob3IgTmFpdGlrIFNoYWggPG5haXRpa0BmYWNlYm9vay5jb20+CiAqLwpjbGFzcyBGYWNlYm9va0FwaUV4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbgp7CiAgLyoqCiAgICogVGhlIHJlc3VsdCBmcm9tIHRoZSBBUEkgc2VydmVyIHRoYXQgcmVwcmVzZW50cyB0aGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uLgogICAqLwogIHByb3RlY3RlZCAkcmVzdWx0OwoKICAvKioKICAgKiBNYWtlIGEgbmV3IEFQSSBFeGNlcHRpb24gd2l0aCB0aGUgZ2l2ZW4gcmVzdWx0LgogICAqCiAgICogQHBhcmFtIEFycmF5ICRyZXN1bHQgdGhlIHJlc3VsdCBmcm9tIHRoZSBBUEkgc2VydmVyCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRyZXN1bHQpIHsKICAgICR0aGlzLT5yZXN1bHQgPSAkcmVzdWx0OwoKICAgICRjb2RlID0gaXNzZXQoJHJlc3VsdFsnZXJyb3JfY29kZSddKSA/ICRyZXN1bHRbJ2Vycm9yX2NvZGUnXSA6IDA7CgogICAgaWYgKGlzc2V0KCRyZXN1bHRbJ2Vycm9yX2Rlc2NyaXB0aW9uJ10pKSB7CiAgICAgIC8vIE9BdXRoIDIuMCBEcmFmdCAxMCBzdHlsZQogICAgICAkbXNnID0gJHJlc3VsdFsnZXJyb3JfZGVzY3JpcHRpb24nXTsKICAgIH0gZWxzZSBpZiAoaXNzZXQoJHJlc3VsdFsnZXJyb3InXSkgJiYgaXNfYXJyYXkoJHJlc3VsdFsnZXJyb3InXSkpIHsKICAgICAgLy8gT0F1dGggMi4wIERyYWZ0IDAwIHN0eWxlCiAgICAgICRtc2cgPSAkcmVzdWx0WydlcnJvciddWydtZXNzYWdlJ107CiAgICB9IGVsc2UgaWYgKGlzc2V0KCRyZXN1bHRbJ2Vycm9yX21zZyddKSkgewogICAgICAvLyBSZXN0IHNlcnZlciBzdHlsZQogICAgICAkbXNnID0gJHJlc3VsdFsnZXJyb3JfbXNnJ107CiAgICB9IGVsc2UgewogICAgICAkbXNnID0gJ1Vua25vd24gRXJyb3IuIENoZWNrIGdldFJlc3VsdCgpJzsKICAgIH0KCiAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCRtc2csICRjb2RlKTsKICB9CgogIC8qKgogICAqIFJldHVybiB0aGUgYXNzb2NpYXRlZCByZXN1bHQgb2JqZWN0IHJldHVybmVkIGJ5IHRoZSBBUEkgc2VydmVyLgogICAqCiAgICogQHJldHVybnMgQXJyYXkgdGhlIHJlc3VsdCBmcm9tIHRoZSBBUEkgc2VydmVyCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGdldFJlc3VsdCgpIHsKICAgIHJldHVybiAkdGhpcy0+cmVzdWx0OwogIH0KCiAgLyoqCiAgICogUmV0dXJucyB0aGUgYXNzb2NpYXRlZCB0eXBlIGZvciB0aGUgZXJyb3IuIFRoaXMgd2lsbCBkZWZhdWx0IHRvCiAgICogJ0V4Y2VwdGlvbicgd2hlbiBhIHR5cGUgaXMgbm90IGF2YWlsYWJsZS4KICAgKgogICAqIEByZXR1cm4gU3RyaW5nCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGdldFR5cGUoKSB7CiAgICBpZiAoaXNzZXQoJHRoaXMtPnJlc3VsdFsnZXJyb3InXSkpIHsKICAgICAgJGVycm9yID0gJHRoaXMtPnJlc3VsdFsnZXJyb3InXTsKICAgICAgaWYgKGlzX3N0cmluZygkZXJyb3IpKSB7CiAgICAgICAgLy8gT0F1dGggMi4wIERyYWZ0IDEwIHN0eWxlCiAgICAgICAgcmV0dXJuICRlcnJvcjsKICAgICAgfSBlbHNlIGlmIChpc19hcnJheSgkZXJyb3IpKSB7CiAgICAgICAgLy8gT0F1dGggMi4wIERyYWZ0IDAwIHN0eWxlCiAgICAgICAgaWYgKGlzc2V0KCRlcnJvclsndHlwZSddKSkgewogICAgICAgICAgcmV0dXJuICRlcnJvclsndHlwZSddOwogICAgICAgIH0KICAgICAgfQogICAgfQogICAgcmV0dXJuICdFeGNlcHRpb24nOwogIH0KCiAgLyoqCiAgICogVG8gbWFrZSBkZWJ1Z2dpbmcgZWFzaWVyLgogICAqCiAgICogQHJldHVybnMgU3RyaW5nIHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGVycm9yCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIF9fdG9TdHJpbmcoKSB7CiAgICAkc3RyID0gJHRoaXMtPmdldFR5cGUoKSAuICc6ICc7CiAgICBpZiAoJHRoaXMtPmNvZGUgIT0gMCkgewogICAgICAkc3RyIC49ICR0aGlzLT5jb2RlIC4gJzogJzsKICAgIH0KICAgIHJldHVybiAkc3RyIC4gJHRoaXMtPm1lc3NhZ2U7CiAgfQp9CgovKioKICogUHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBGYWNlYm9vayBQbGF0Zm9ybS4KICoKICogQGF1dGhvciBOYWl0aWsgU2hhaCA8bmFpdGlrQGZhY2Vib29rLmNvbT4KICovCmNsYXNzIEZhY2Vib29rCnsKICAvKioKICAgKiBWZXJzaW9uLgogICAqLwogIGNvbnN0IFZFUlNJT04gPSAnMi4xLjInOwoKICAvKioKICAgKiBEZWZhdWx0IG9wdGlvbnMgZm9yIGN1cmwuCiAgICovCiAgcHVibGljIHN0YXRpYyAkQ1VSTF9PUFRTID0gYXJyYXkoCiAgICBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VUID0+IDEwLAogICAgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiA9PiB0cnVlLAogICAgQ1VSTE9QVF9USU1FT1VUICAgICAgICA9PiA2MCwKICAgIENVUkxPUFRfVVNFUkFHRU5UICAgICAgPT4gJ2ZhY2Vib29rLXBocC0yLjAnLAogICk7CgogIC8qKgogICAqIExpc3Qgb2YgcXVlcnkgcGFyYW1ldGVycyB0aGF0IGdldCBhdXRvbWF0aWNhbGx5IGRyb3BwZWQgd2hlbiByZWJ1aWxkaW5nCiAgICogdGhlIGN1cnJlbnQgVVJMLgogICAqLwogIHByb3RlY3RlZCBzdGF0aWMgJERST1BfUVVFUllfUEFSQU1TID0gYXJyYXkoCiAgICAnc2Vzc2lvbicsCiAgICAnc2lnbmVkX3JlcXVlc3QnLAogICk7CgogIC8qKgogICAqIE1hcHMgYWxpYXNlcyB0byBGYWNlYm9vayBkb21haW5zLgogICAqLwogIHB1YmxpYyBzdGF0aWMgJERPTUFJTl9NQVAgPSBhcnJheSgKICAgICdhcGknICAgICAgPT4gJ2h0dHBzOi8vYXBpLmZhY2Vib29rLmNvbS8nLAogICAgJ2FwaV9yZWFkJyA9PiAnaHR0cHM6Ly9hcGktcmVhZC5mYWNlYm9vay5jb20vJywKICAgICdncmFwaCcgICAgPT4gJ2h0dHBzOi8vZ3JhcGguZmFjZWJvb2suY29tLycsCiAgICAnd3d3JyAgICAgID0+ICdodHRwczovL3d3dy5mYWNlYm9vay5jb20vJywKICApOwoKICAvKioKICAgKiBUaGUgQXBwbGljYXRpb24gSUQuCiAgICovCiAgcHJvdGVjdGVkICRhcHBJZDsKCiAgLyoqCiAgICogVGhlIEFwcGxpY2F0aW9uIEFQSSBTZWNyZXQuCiAgICovCiAgcHJvdGVjdGVkICRhcGlTZWNyZXQ7CgogIC8qKgogICAqIFRoZSBhY3RpdmUgdXNlciBzZXNzaW9uLCBpZiBvbmUgaXMgYXZhaWxhYmxlLgogICAqLwogIHByb3RlY3RlZCAkc2Vzc2lvbjsKCiAgLyoqCiAgICogVGhlIGRhdGEgZnJvbSB0aGUgc2lnbmVkX3JlcXVlc3QgdG9rZW4uCiAgICovCiAgcHJvdGVjdGVkICRzaWduZWRSZXF1ZXN0OwoKICAvKioKICAgKiBJbmRpY2F0ZXMgdGhhdCB3ZSBhbHJlYWR5IGxvYWRlZCB0aGUgc2Vzc2lvbiBhcyBiZXN0IGFzIHdlIGNvdWxkLgogICAqLwogIHByb3RlY3RlZCAkc2Vzc2lvbkxvYWRlZCA9IGZhbHNlOwoKICAvKioKICAgKiBJbmRpY2F0ZXMgaWYgQ29va2llIHN1cHBvcnQgc2hvdWxkIGJlIGVuYWJsZWQuCiAgICovCiAgcHJvdGVjdGVkICRjb29raWVTdXBwb3J0ID0gZmFsc2U7CgogIC8qKgogICAqIEJhc2UgZG9tYWluIGZvciB0aGUgQ29va2llLgogICAqLwogIHByb3RlY3RlZCAkYmFzZURvbWFpbiA9ICcnOwoKICAvKioKICAgKiBJbmRpY2F0ZXMgaWYgdGhlIENVUkwgYmFzZWQgQCBzeW50YXggZm9yIGZpbGUgdXBsb2FkcyBpcyBlbmFibGVkLgogICAqLwogIHByb3RlY3RlZCAkZmlsZVVwbG9hZFN1cHBvcnQgPSBmYWxzZTsKCiAgLyoqCiAgICogSW5pdGlhbGl6ZSBhIEZhY2Vib29rIEFwcGxpY2F0aW9uLgogICAqCiAgICogVGhlIGNvbmZpZ3VyYXRpb246CiAgICogLSBhcHBJZDogdGhlIGFwcGxpY2F0aW9uIElECiAgICogLSBzZWNyZXQ6IHRoZSBhcHBsaWNhdGlvbiBzZWNyZXQKICAgKiAtIGNvb2tpZTogKG9wdGlvbmFsKSBib29sZWFuIHRydWUgdG8gZW5hYmxlIGNvb2tpZSBzdXBwb3J0CiAgICogLSBkb21haW46IChvcHRpb25hbCkgZG9tYWluIGZvciB0aGUgY29va2llCiAgICogLSBmaWxlVXBsb2FkOiAob3B0aW9uYWwpIGJvb2xlYW4gaW5kaWNhdGluZyBpZiBmaWxlIHVwbG9hZHMgYXJlIGVuYWJsZWQKICAgKgogICAqIEBwYXJhbSBBcnJheSAkY29uZmlnIHRoZSBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCRjb25maWcpIHsKICAgICR0aGlzLT5zZXRBcHBJZCgkY29uZmlnWydhcHBJZCddKTsKICAgICR0aGlzLT5zZXRBcGlTZWNyZXQoJGNvbmZpZ1snc2VjcmV0J10pOwogICAgaWYgKGlzc2V0KCRjb25maWdbJ2Nvb2tpZSddKSkgewogICAgICAkdGhpcy0+c2V0Q29va2llU3VwcG9ydCgkY29uZmlnWydjb29raWUnXSk7CiAgICB9CiAgICBpZiAoaXNzZXQoJGNvbmZpZ1snZG9tYWluJ10pKSB7CiAgICAgICR0aGlzLT5zZXRCYXNlRG9tYWluKCRjb25maWdbJ2RvbWFpbiddKTsKICAgIH0KICAgIGlmIChpc3NldCgkY29uZmlnWydmaWxlVXBsb2FkJ10pKSB7CiAgICAgICR0aGlzLT5zZXRGaWxlVXBsb2FkU3VwcG9ydCgkY29uZmlnWydmaWxlVXBsb2FkJ10pOwogICAgfQogIH0KCiAgLyoqCiAgICogU2V0IHRoZSBBcHBsaWNhdGlvbiBJRC4KICAgKgogICAqIEBwYXJhbSBTdHJpbmcgJGFwcElkIHRoZSBBcHBsaWNhdGlvbiBJRAogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBzZXRBcHBJZCgkYXBwSWQpIHsKICAgICR0aGlzLT5hcHBJZCA9ICRhcHBJZDsKICAgIHJldHVybiAkdGhpczsKICB9CgogIC8qKgogICAqIEdldCB0aGUgQXBwbGljYXRpb24gSUQuCiAgICoKICAgKiBAcmV0dXJuIFN0cmluZyB0aGUgQXBwbGljYXRpb24gSUQKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0QXBwSWQoKSB7CiAgICByZXR1cm4gJHRoaXMtPmFwcElkOwogIH0KCiAgLyoqCiAgICogU2V0IHRoZSBBUEkgU2VjcmV0LgogICAqCiAgICogQHBhcmFtIFN0cmluZyAkYXBwSWQgdGhlIEFQSSBTZWNyZXQKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gc2V0QXBpU2VjcmV0KCRhcGlTZWNyZXQpIHsKICAgICR0aGlzLT5hcGlTZWNyZXQgPSAkYXBpU2VjcmV0OwogICAgcmV0dXJuICR0aGlzOwogIH0KCiAgLyoqCiAgICogR2V0IHRoZSBBUEkgU2VjcmV0LgogICAqCiAgICogQHJldHVybiBTdHJpbmcgdGhlIEFQSSBTZWNyZXQKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0QXBpU2VjcmV0KCkgewogICAgcmV0dXJuICR0aGlzLT5hcGlTZWNyZXQ7CiAgfQoKICAvKioKICAgKiBTZXQgdGhlIENvb2tpZSBTdXBwb3J0IHN0YXR1cy4KICAgKgogICAqIEBwYXJhbSBCb29sZWFuICRjb29raWVTdXBwb3J0IHRoZSBDb29raWUgU3VwcG9ydCBzdGF0dXMKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gc2V0Q29va2llU3VwcG9ydCgkY29va2llU3VwcG9ydCkgewogICAgJHRoaXMtPmNvb2tpZVN1cHBvcnQgPSAkY29va2llU3VwcG9ydDsKICAgIHJldHVybiAkdGhpczsKICB9CgogIC8qKgogICAqIEdldCB0aGUgQ29va2llIFN1cHBvcnQgc3RhdHVzLgogICAqCiAgICogQHJldHVybiBCb29sZWFuIHRoZSBDb29raWUgU3VwcG9ydCBzdGF0dXMKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gdXNlQ29va2llU3VwcG9ydCgpIHsKICAgIHJldHVybiAkdGhpcy0+Y29va2llU3VwcG9ydDsKICB9CgogIC8qKgogICAqIFNldCB0aGUgYmFzZSBkb21haW4gZm9yIHRoZSBDb29raWUuCiAgICoKICAgKiBAcGFyYW0gU3RyaW5nICRkb21haW4gdGhlIGJhc2UgZG9tYWluCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIHNldEJhc2VEb21haW4oJGRvbWFpbikgewogICAgJHRoaXMtPmJhc2VEb21haW4gPSAkZG9tYWluOwogICAgcmV0dXJuICR0aGlzOwogIH0KCiAgLyoqCiAgICogR2V0IHRoZSBiYXNlIGRvbWFpbiBmb3IgdGhlIENvb2tpZS4KICAgKgogICAqIEByZXR1cm4gU3RyaW5nIHRoZSBiYXNlIGRvbWFpbgogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRCYXNlRG9tYWluKCkgewogICAgcmV0dXJuICR0aGlzLT5iYXNlRG9tYWluOwogIH0KCiAgLyoqCiAgICogU2V0IHRoZSBmaWxlIHVwbG9hZCBzdXBwb3J0IHN0YXR1cy4KICAgKgogICAqIEBwYXJhbSBTdHJpbmcgJGRvbWFpbiB0aGUgYmFzZSBkb21haW4KICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gc2V0RmlsZVVwbG9hZFN1cHBvcnQoJGZpbGVVcGxvYWRTdXBwb3J0KSB7CiAgICAkdGhpcy0+ZmlsZVVwbG9hZFN1cHBvcnQgPSAkZmlsZVVwbG9hZFN1cHBvcnQ7CiAgICByZXR1cm4gJHRoaXM7CiAgfQoKICAvKioKICAgKiBHZXQgdGhlIGZpbGUgdXBsb2FkIHN1cHBvcnQgc3RhdHVzLgogICAqCiAgICogQHJldHVybiBTdHJpbmcgdGhlIGJhc2UgZG9tYWluCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIHVzZUZpbGVVcGxvYWRTdXBwb3J0KCkgewogICAgcmV0dXJuICR0aGlzLT5maWxlVXBsb2FkU3VwcG9ydDsKICB9CgogIC8qKgogICAqIEdldCB0aGUgZGF0YSBmcm9tIGEgc2lnbmVkX3JlcXVlc3QgdG9rZW4KICAgKgogICAqIEByZXR1cm4gU3RyaW5nIHRoZSBiYXNlIGRvbWFpbgogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRTaWduZWRSZXF1ZXN0KCkgewogICAgaWYgKCEkdGhpcy0+c2lnbmVkUmVxdWVzdCkgewogICAgICBpZiAoaXNzZXQoJF9SRVFVRVNUWydzaWduZWRfcmVxdWVzdCddKSkgewogICAgICAgICR0aGlzLT5zaWduZWRSZXF1ZXN0ID0gJHRoaXMtPnBhcnNlU2lnbmVkUmVxdWVzdCgKICAgICAgICAgICRfUkVRVUVTVFsnc2lnbmVkX3JlcXVlc3QnXSk7CiAgICAgIH0KICAgIH0KICAgIHJldHVybiAkdGhpcy0+c2lnbmVkUmVxdWVzdDsKICB9CgogIC8qKgogICAqIFNldCB0aGUgU2Vzc2lvbi4KICAgKgogICAqIEBwYXJhbSBBcnJheSAkc2Vzc2lvbiB0aGUgc2Vzc2lvbgogICAqIEBwYXJhbSBCb29sZWFuICR3cml0ZV9jb29raWUgaW5kaWNhdGUgaWYgYSBjb29raWUgc2hvdWxkIGJlIHdyaXR0ZW4uIHRoaXMKICAgKiB2YWx1ZSBpcyBpZ25vcmVkIGlmIGNvb2tpZSBzdXBwb3J0IGhhcyBiZWVuIGRpc2FibGVkLgogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBzZXRTZXNzaW9uKCRzZXNzaW9uPW51bGwsICR3cml0ZV9jb29raWU9dHJ1ZSkgewogICAgJHNlc3Npb24gPSAkdGhpcy0+dmFsaWRhdGVTZXNzaW9uT2JqZWN0KCRzZXNzaW9uKTsKICAgICR0aGlzLT5zZXNzaW9uTG9hZGVkID0gdHJ1ZTsKICAgICR0aGlzLT5zZXNzaW9uID0gJHNlc3Npb247CiAgICBpZiAoJHdyaXRlX2Nvb2tpZSkgewogICAgICAkdGhpcy0+c2V0Q29va2llRnJvbVNlc3Npb24oJHNlc3Npb24pOwogICAgfQogICAgcmV0dXJuICR0aGlzOwogIH0KCiAgLyoqCiAgICogR2V0IHRoZSBzZXNzaW9uIG9iamVjdC4gVGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgbG9vayBmb3IgYSBzaWduZWQgc2Vzc2lvbgogICAqIHNlbnQgdmlhIHRoZSBzaWduZWRfcmVxdWVzdCwgQ29va2llIG9yIFF1ZXJ5IFBhcmFtZXRlcnMgaWYgbmVlZGVkLgogICAqCiAgICogQHJldHVybiBBcnJheSB0aGUgc2Vzc2lvbgogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRTZXNzaW9uKCkgewogICAgaWYgKCEkdGhpcy0+c2Vzc2lvbkxvYWRlZCkgewogICAgICAkc2Vzc2lvbiA9IG51bGw7CiAgICAgICR3cml0ZV9jb29raWUgPSB0cnVlOwoKICAgICAgLy8gdHJ5IGxvYWRpbmcgc2Vzc2lvbiBmcm9tIHNpZ25lZF9yZXF1ZXN0IGluICRfUkVRVUVTVAogICAgICAkc2lnbmVkUmVxdWVzdCA9ICR0aGlzLT5nZXRTaWduZWRSZXF1ZXN0KCk7CiAgICAgIGlmICgkc2lnbmVkUmVxdWVzdCkgewogICAgICAgIC8vIHNpZyBpcyBnb29kLCB1c2UgdGhlIHNpZ25lZFJlcXVlc3QKICAgICAgICAkc2Vzc2lvbiA9ICR0aGlzLT5jcmVhdGVTZXNzaW9uRnJvbVNpZ25lZFJlcXVlc3QoJHNpZ25lZFJlcXVlc3QpOwogICAgICB9CgogICAgICAvLyB0cnkgbG9hZGluZyBzZXNzaW9uIGZyb20gJF9SRVFVRVNUCiAgICAgIGlmICghJHNlc3Npb24gJiYgaXNzZXQoJF9SRVFVRVNUWydzZXNzaW9uJ10pKSB7CiAgICAgICAgJHNlc3Npb24gPSBqc29uX2RlY29kZSgKICAgICAgICAgIGdldF9tYWdpY19xdW90ZXNfZ3BjKCkKICAgICAgICAgICAgPyBzdHJpcHNsYXNoZXMoJF9SRVFVRVNUWydzZXNzaW9uJ10pCiAgICAgICAgICAgIDogJF9SRVFVRVNUWydzZXNzaW9uJ10sCiAgICAgICAgICB0cnVlCiAgICAgICAgKTsKICAgICAgICAkc2Vzc2lvbiA9ICR0aGlzLT52YWxpZGF0ZVNlc3Npb25PYmplY3QoJHNlc3Npb24pOwogICAgICB9CgogICAgICAvLyB0cnkgbG9hZGluZyBzZXNzaW9uIGZyb20gY29va2llIGlmIG5lY2Vzc2FyeQogICAgICBpZiAoISRzZXNzaW9uICYmICR0aGlzLT51c2VDb29raWVTdXBwb3J0KCkpIHsKICAgICAgICAkY29va2llTmFtZSA9ICR0aGlzLT5nZXRTZXNzaW9uQ29va2llTmFtZSgpOwogICAgICAgIGlmIChpc3NldCgkX0NPT0tJRVskY29va2llTmFtZV0pKSB7CiAgICAgICAgICAkc2Vzc2lvbiA9IGFycmF5KCk7CiAgICAgICAgICBwYXJzZV9zdHIodHJpbSgKICAgICAgICAgICAgZ2V0X21hZ2ljX3F1b3Rlc19ncGMoKQogICAgICAgICAgICAgID8gc3RyaXBzbGFzaGVzKCRfQ09PS0lFWyRjb29raWVOYW1lXSkKICAgICAgICAgICAgICA6ICRfQ09PS0lFWyRjb29raWVOYW1lXSwKICAgICAgICAgICAgJyInCiAgICAgICAgICApLCAkc2Vzc2lvbik7CiAgICAgICAgICAkc2Vzc2lvbiA9ICR0aGlzLT52YWxpZGF0ZVNlc3Npb25PYmplY3QoJHNlc3Npb24pOwogICAgICAgICAgLy8gd3JpdGUgb25seSBpZiB3ZSBuZWVkIHRvIGRlbGV0ZSBhIGludmFsaWQgc2Vzc2lvbiBjb29raWUKICAgICAgICAgICR3cml0ZV9jb29raWUgPSBlbXB0eSgkc2Vzc2lvbik7CiAgICAgICAgfQogICAgICB9CgogICAgICAkdGhpcy0+c2V0U2Vzc2lvbigkc2Vzc2lvbiwgJHdyaXRlX2Nvb2tpZSk7CiAgICB9CgogICAgcmV0dXJuICR0aGlzLT5zZXNzaW9uOwogIH0KCiAgLyoqCiAgICogR2V0IHRoZSBVSUQgZnJvbSB0aGUgc2Vzc2lvbi4KICAgKgogICAqIEByZXR1cm4gU3RyaW5nIHRoZSBVSUQgaWYgYXZhaWxhYmxlCiAgICovCiAgcHVibGljIGZ1bmN0aW9uIGdldFVzZXIoKSB7CiAgICAkc2Vzc2lvbiA9ICR0aGlzLT5nZXRTZXNzaW9uKCk7CiAgICByZXR1cm4gJHNlc3Npb24gPyAkc2Vzc2lvblsndWlkJ10gOiBudWxsOwogIH0KCiAgLyoqCiAgICogR2V0cyBhIE9BdXRoIGFjY2VzcyB0b2tlbi4KICAgKgogICAqIEByZXR1cm4gU3RyaW5nIHRoZSBhY2Nlc3MgdG9rZW4KICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0QWNjZXNzVG9rZW4oKSB7CiAgICAkc2Vzc2lvbiA9ICR0aGlzLT5nZXRTZXNzaW9uKCk7CiAgICAvLyBlaXRoZXIgdXNlciBzZXNzaW9uIHNpZ25lZCwgb3IgYXBwIHNpZ25lZAogICAgaWYgKCRzZXNzaW9uKSB7CiAgICAgIHJldHVybiAkc2Vzc2lvblsnYWNjZXNzX3Rva2VuJ107CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gJHRoaXMtPmdldEFwcElkKCkgLid8Jy4gJHRoaXMtPmdldEFwaVNlY3JldCgpOwogICAgfQogIH0KCiAgLyoqCiAgICogR2V0IGEgTG9naW4gVVJMIGZvciB1c2Ugd2l0aCByZWRpcmVjdHMuIEJ5IGRlZmF1bHQsIGZ1bGwgcGFnZSByZWRpcmVjdCBpcwogICAqIGFzc3VtZWQuIElmIHlvdSBhcmUgdXNpbmcgdGhlIGdlbmVyYXRlZCBVUkwgd2l0aCBhIHdpbmRvdy5vcGVuKCkgY2FsbCBpbgogICAqIEphdmFTY3JpcHQsIHlvdSBjYW4gcGFzcyBpbiBkaXNwbGF5PXBvcHVwIGFzIHBhcnQgb2YgdGhlICRwYXJhbXMuCiAgICoKICAgKiBUaGUgcGFyYW1ldGVyczoKICAgKiAtIG5leHQ6IHRoZSB1cmwgdG8gZ28gdG8gYWZ0ZXIgYSBzdWNjZXNzZnVsIGxvZ2luCiAgICogLSBjYW5jZWxfdXJsOiB0aGUgdXJsIHRvIGdvIHRvIGFmdGVyIHRoZSB1c2VyIGNhbmNlbHMKICAgKiAtIHJlcV9wZXJtczogY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YgcmVxdWVzdGVkIGV4dGVuZGVkIHBlcm1zCiAgICogLSBkaXNwbGF5OiBjYW4gYmUgInBhZ2UiIChkZWZhdWx0LCBmdWxsIHBhZ2UpIG9yICJwb3B1cCIKICAgKgogICAqIEBwYXJhbSBBcnJheSAkcGFyYW1zIHByb3ZpZGUgY3VzdG9tIHBhcmFtZXRlcnMKICAgKiBAcmV0dXJuIFN0cmluZyB0aGUgVVJMIGZvciB0aGUgbG9naW4gZmxvdwogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRMb2dpblVybCgkcGFyYW1zPWFycmF5KCkpIHsKICAgICRjdXJyZW50VXJsID0gJHRoaXMtPmdldEN1cnJlbnRVcmwoKTsKICAgIHJldHVybiAkdGhpcy0+Z2V0VXJsKAogICAgICAnd3d3JywKICAgICAgJ2xvZ2luLnBocCcsCiAgICAgIGFycmF5X21lcmdlKGFycmF5KAogICAgICAgICdhcGlfa2V5JyAgICAgICAgID0+ICR0aGlzLT5nZXRBcHBJZCgpLAogICAgICAgICdjYW5jZWxfdXJsJyAgICAgID0+ICRjdXJyZW50VXJsLAogICAgICAgICdkaXNwbGF5JyAgICAgICAgID0+ICdwYWdlJywKICAgICAgICAnZmJjb25uZWN0JyAgICAgICA9PiAxLAogICAgICAgICduZXh0JyAgICAgICAgICAgID0+ICRjdXJyZW50VXJsLAogICAgICAgICdyZXR1cm5fc2Vzc2lvbicgID0+IDEsCiAgICAgICAgJ3Nlc3Npb25fdmVyc2lvbicgPT4gMywKICAgICAgICAndicgICAgICAgICAgICAgICA9PiAnMS4wJywKICAgICAgKSwgJHBhcmFtcykKICAgICk7CiAgfQoKICAvKioKICAgKiBHZXQgYSBMb2dvdXQgVVJMIHN1aXRhYmxlIGZvciB1c2Ugd2l0aCByZWRpcmVjdHMuCiAgICoKICAgKiBUaGUgcGFyYW1ldGVyczoKICAgKiAtIG5leHQ6IHRoZSB1cmwgdG8gZ28gdG8gYWZ0ZXIgYSBzdWNjZXNzZnVsIGxvZ291dAogICAqCiAgICogQHBhcmFtIEFycmF5ICRwYXJhbXMgcHJvdmlkZSBjdXN0b20gcGFyYW1ldGVycwogICAqIEByZXR1cm4gU3RyaW5nIHRoZSBVUkwgZm9yIHRoZSBsb2dvdXQgZmxvdwogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBnZXRMb2dvdXRVcmwoJHBhcmFtcz1hcnJheSgpKSB7CiAgICByZXR1cm4gJHRoaXMtPmdldFVybCgKICAgICAgJ3d3dycsCiAgICAgICdsb2dvdXQucGhwJywKICAgICAgYXJyYXlfbWVyZ2UoYXJyYXkoCiAgICAgICAgJ25leHQnICAgICAgICAgPT4gJHRoaXMtPmdldEN1cnJlbnRVcmwoKSwKICAgICAgICAnYWNjZXNzX3Rva2VuJyA9PiAkdGhpcy0+Z2V0QWNjZXNzVG9rZW4oKSwKICAgICAgKSwgJHBhcmFtcykKICAgICk7CiAgfQoKICAvKioKICAgKiBHZXQgYSBsb2dpbiBzdGF0dXMgVVJMIHRvIGZldGNoIHRoZSBzdGF0dXMgZnJvbSBmYWNlYm9vay4KICAgKgogICAqIFRoZSBwYXJhbWV0ZXJzOgogICAqIC0gb2tfc2Vzc2lvbjogdGhlIFVSTCB0byBnbyB0byBpZiBhIHNlc3Npb24gaXMgZm91bmQKICAgKiAtIG5vX3Nlc3Npb246IHRoZSBVUkwgdG8gZ28gdG8gaWYgdGhlIHVzZXIgaXMgbm90IGNvbm5lY3RlZAogICAqIC0gbm9fdXNlcjogdGhlIFVSTCB0byBnbyB0byBpZiB0aGUgdXNlciBpcyBub3Qgc2lnbmVkIGludG8gZmFjZWJvb2sKICAgKgogICAqIEBwYXJhbSBBcnJheSAkcGFyYW1zIHByb3ZpZGUgY3VzdG9tIHBhcmFtZXRlcnMKICAgKiBAcmV0dXJuIFN0cmluZyB0aGUgVVJMIGZvciB0aGUgbG9nb3V0IGZsb3cKICAgKi8KICBwdWJsaWMgZnVuY3Rpb24gZ2V0TG9naW5TdGF0dXNVcmwoJHBhcmFtcz1hcnJheSgpKSB7CiAgICByZXR1cm4gJHRoaXMtPmdldFVybCgKICAgICAgJ3d3dycsCiAgICAgICdleHRlcm4vbG9naW5fc3RhdHVzLnBocCcsCiAgICAgIGFycmF5X21lcmdlKGFycmF5KAogICAgICAgICdhcGlfa2V5JyAgICAgICAgID0+ICR0aGlzLT5nZXRBcHBJZCgpLAogICAgICAgICdub19zZXNzaW9uJyAgICAgID0+ICR0aGlzLT5nZXRDdXJyZW50VXJsKCksCiAgICAgICAgJ25vX3VzZXInICAgICAgICAgPT4gJHRoaXMtPmdldEN1cnJlbnRVcmwoKSwKICAgICAgICAnb2tfc2Vzc2lvbicgICAgICA9PiAkdGhpcy0+Z2V0Q3VycmVudFVybCgpLAogICAgICAgICdzZXNzaW9uX3ZlcnNpb24nID0+IDMsCiAgICAgICksICRwYXJhbXMpCiAgICApOwogIH0KCiAgLyoqCiAgICogTWFrZSBhbiBBUEkgY2FsbC4KICAgKgogICAqIEBwYXJhbSBBcnJheSAkcGFyYW1zIHRoZSBBUEkgY2FsbCBwYXJhbWV0ZXJzCiAgICogQHJldHVybiB0aGUgZGVjb2RlZCByZXNwb25zZQogICAqLwogIHB1YmxpYyBmdW5jdGlvbiBhcGkoLyogcG9seW1vcnBoaWMgKi8pIHsKICAgICRhcmdzID0gZnVuY19nZXRfYXJncygpOwogICAgaWYgKGlzX2FycmF5KCRhcmdzWzBdKSkgewogICAgICByZXR1cm4gJHRoaXMtPl9yZXN0c2VydmVyKCRhcmdzWzBdKTsKICAgIH0gZWxzZSB7CiAgICAgIHJldHVybiBjYWxsX3VzZXJfZnVuY19hcnJheShhcnJheSgkdGhpcywgJ19ncmFwaCcpLCAkYXJncyk7CiAgICB9CiAgfQoKICAvKioKICAgKiBJbnZva2UgdGhlIG9sZCByZXN0c2VydmVyLnBocCBlbmRwb2ludC4KICAgKgogICAqIEBwYXJhbSBBcnJheSAkcGFyYW1zIG1ldGhvZCBjYWxsIG9iamVjdAogICAqIEByZXR1cm4gdGhlIGRlY29kZWQgcmVzcG9uc2Ugb2JqZWN0CiAgICogQHRocm93cyBGYWNlYm9va0FwaUV4Y2VwdGlvbgogICAqLwogIHByb3RlY3RlZCBmdW5jdGlvbiBfcmVzdHNlcnZlcigkcGFyYW1zKSB7CiAgICAvLyBnZW5lcmljIGFwcGxpY2F0aW9uIGxldmVsIHBhcmFtZXRlcnMKICAgICRwYXJhbXNbJ2FwaV9rZXknXSA9ICR0aGlzLT5nZXRBcHBJZCgpOwogICAgJHBhcmFtc1snZm9ybWF0J10gPSAnanNvbi1zdHJpbmdzJzsKCiAgICAkcmVzdWx0ID0ganNvbl9kZWNvZGUoJHRoaXMtPl9vYXV0aFJlcXVlc3QoCiAgICAgICR0aGlzLT5nZXRBcGlVcmwoJHBhcmFtc1snbWV0aG9kJ10pLAogICAgICAkcGFyYW1zCiAgICApLCB0cnVlKTsKCiAgICAvLyByZXN1bHRzIGFyZSByZXR1cm5lZCwgZXJyb3JzIGFyZSB0aHJvd24KICAgIGlmIChpc19hcnJheSgkcmVzdWx0KSAmJiBpc3NldCgkcmVzdWx0WydlcnJvcl9jb2RlJ10pKSB7CiAgICAgIHRocm93IG5ldyBGYWNlYm9va0FwaUV4Y2VwdGlvbigkcmVzdWx0KTsKICAgIH0KICAgIHJldHVybiAkcmVzdWx0OwogIH0KCiAgLyoqCiAgICogSW52b2tlIHRoZSBHcmFwaCBBUEkuCiAgICoKICAgKiBAcGFyYW0gU3RyaW5nICRwYXRoIHRoZSBwYXRoIChyZXF1aXJlZCkKICAgKiBAcGFyYW0gU3RyaW5nICRtZXRob2QgdGhlIGh0dHAgbWV0aG9kIChkZWZhdWx0ICdHRVQnKQogICAqIEBwYXJhbSBBcnJheSAkcGFyYW1zIHRoZSBxdWVyeS9wb3N0IGRhdGEKICAgKiBAcmV0dXJuIHRoZSBkZWNvZGVkIHJlc3BvbnNlIG9iamVjdAogICAqIEB0aHJvd3MgRmFjZWJvb2tBcGlFeGNlcHRpb24KICAgKi8KICBwcm90ZWN0ZWQgZnVuY3Rpb24gX2dyYXBoKCRwYXRoLCAkbWV0aG9kPSdHRVQnLCAkcGFyYW1zPWFycmF5KCkpIHsKICAgIGlmIChpc19hcnJheSgkbWV0aG9kKSAmJiBlbXB0eSgkcGFyYW1zKSkgewogICAgICAkcGFyYW1zID0gJG1ldGhvZDsKICAgICAgJG1ldGhvZCA9ICdHRVQnOwogICAgfQogICAgJHBhcmFtc1snbWV0aG9kJ10gPSAkbWV0aG9kOyAvLyBtZXRob2Qgb3ZlcnJpZGUgYXMgd2UgYWx3YXlzIGRvIGEgUE9TVAoKICAgICRyZXN1bHQgPSBqc29uX2RlY29kZSgkdGhpcy0+X29hdXRoUmVxdWVzdCgKICAgICAgJHRoaXMtPmdldFVybCgnZ3JhcGgnLCAkcGF0aCksCiAgICAgICRwYXJhbXMKICAgICksIHRydWUpOwoKICAgIC8vIHJlc3VsdHMgYXJlIHJldHVybmVkLCBlcnJvcnMgYXJlIHRocm93bgogICAgaWYgKGlzX2FycmF5KCRyZXN1bHQpICYmIGlzc2V0KCRyZXN1bHRbJ2Vycm9yJ10pKSB7CiAgICAgICRlID0gbmV3IEZhY2Vib29rQXBpRXhjZXB0aW9uKCRyZXN1bHQpOwogICAgICBzd2l0Y2ggKCRlLT5nZXRUeXBlKCkpIHsKICAgICAgICAvLyBPQXV0aCAyLjAgRHJhZnQgMDAgc3R5bGUKICAgICAgICBjYXNlICdPQXV0aEV4Y2VwdGlvbic6CiAgICAgICAgLy8gT0F1dGggMi4wIERyYWZ0IDEwIHN0eWxlCiAgICAgICAgY2FzZSAnaW52YWxpZF90b2tlbic6CiAgICAgICAgICAkdGhpcy0+c2V0U2Vzc2lvbihudWxsKTsKICAgICAgfQogICAgICB0aHJvdyAkZTsKICAgIH0KICAgIHJldHVybiAkcmVzdWx0OwogIH0KCiAgLyoqCiAgICogTWFrZSBhIE9BdXRoIFJlcXVlc3QKICAgKgogICAqIEBwYXJhbSBTdHJpbmcgJHBhdGggdGhlIHBhdGggKHJlcXVpcmVkKQogICAqIEBwYXJhbSBBcnJheSAkcGFyYW1zIHRoZSBxdWVyeS9wb3N0IGRhdGEKICAgKiBAcmV0dXJuIHRoZSBkZWNvZGVkIHJlc3BvbnNlIG9iamVjdAogICAqIEB0aHJvd3MgRmFjZWJvb2tBcGlFeGNlcHRpb24KICAgKi8KICBwcm90ZWN0ZWQgZnVuY3Rpb24gX29hdXRoUmVxdWVzdCgkdXJsLCAkcGFyYW1zKSB7CiAgICBpZiAoIWlzc2V0KCRwYXJhbXNbJ2FjY2Vzc190b2tlbiddKSkgewogICAgICAkcGFyYW1zWydhY2Nlc3NfdG9rZW4nXSA9ICR0aGlzLT5nZXRBY2Nlc3NUb2tlbigpOwogICAgfQoKICAgIC8vIGpzb25fZW5jb2RlIGFsbCBwYXJhbXMgdmFsdWVzIHRoYXQgYXJlIG5vdCBzdHJpbmdzCiAgICBmb3JlYWNoICgkcGFyYW1zIGFzICRrZXkgPT4gJHZhbHVlKSB7CiAgICAgIGlmICghaXNfc3RyaW5nKCR2YWx1ZSkpIHsKICAgICAgICAkcGFyYW1zWyRrZXldID0ganNvbl9lbmNvZGUoJHZhbHVlKTsKICAgICAgfQogICAgfQogICAgcmV0dXJuICR0aGlzLT5tYWtlUmVxdWVzdCgkdXJsLCAkcGFyYW1zKTsKICB9CgogIC8qKgogICAqIE1ha2VzIGFuIEhUVFAgcmVxdWVzdC4gVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRlbiBieSBzdWJjbGFzc2VzIGlmCiAgICogZGV2ZWxvcGVycyB3YW50IHRvIGRvIGZhbmNpZXIgdGhpbmdzIG9yIHVzZSBzb21ldGhpbmcgb3RoZXIgdGhhbiBjdXJsIHRvCiAgICogbWFrZSB0aGUgcmVxdWVzdC4KICAgKgogICAqIEBwYXJhbSBTdHJpbmcgJHVybCB0aGUgVVJMIHRvIG1ha2UgdGhlIHJlcXVlc3QgdG8KICAgKiBAcGFyYW0gQXJyYXkgJHBhcmFtcyB0aGUgcGFyYW1ldGVycyB0byB1c2UgZm9yIHRoZSBQT1NUIGJvZHkKICAgKiBAcGFyYW0gQ3VybEhhbmRsZXIgJGNoIG9wdGlvbmFsIGluaXRpYWxpemVkIGN1cmwgaGFuZGxlCiAgICogQHJldHVybiBTdHJpbmcgdGhlIHJlc3BvbnNlIHRleHQKICAgKi8KICBwcm90ZWN0ZWQgZnVuY3Rpb24gbWFrZVJlcXVlc3QoJHVybCwgJHBhcmFtcywgJGNoPW51bGwpIHsKICAgIGlmICghJGNoKSB7CiAgICAgICRjaCA9IGN1cmxfaW5pdCgpOwogICAgfQoKICAgICRvcHRzID0gc2VsZjo6JENVUkxfT1BUUzsKICAgIGlmICgkdGhpcy0+dXNlRmlsZVVwbG9hZFN1cHBvcnQoKSkgewogICAgICAkb3B0c1tDVVJMT1BUX1BPU1RGSUVMRFNdID0gJHBhcmFtczsKICAgIH0gZWxzZSB7CiAgICAgICRvcHRzW0NVUkxPUFRfUE9TVEZJRUxEU10gPSBodHRwX2J1aWxkX3F1ZXJ5KCRwYXJhbXMsIG51bGwsICcmJyk7CiAgICB9CiAgICAkb3B0c1tDVVJMT1BUX1VSTF0gPSAkdXJsOwoKICAgIC8vIGRpc2FibGUgdGhlICdFeHBlY3Q6IDEwMC1jb250aW51ZScgYmVoYXZpb3VyLiBUaGlzIGNhdXNlcyBDVVJMIHRvIHdhaXQKICAgIC8vIGZvciAyIHNlY29uZHMgaWYgdGhlIHNlcnZlciBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgaGVhZGVyLgogICAgaWYgKGlzc2V0KCRvcHRzW0NVUkxPUFRfSFRUUEhFQURFUl0pKSB7CiAgICAgICRleGlzdGluZ19oZWFkZXJzID0gJG9wdHNbQ1VSTE9QVF9IVFRQSEVBREVSXTsKICAgICAgJGV4aXN0aW5nX2hlYWRlcnNbXSA9ICdFeHBlY3Q6JzsKICAgICAgJG9wdHNbQ1VSTE9QVF9IVFRQSEVBREVSXSA9ICRleGlzdGluZ19oZWFkZXJzOwogICAgfSBlbHNlIHsKICAgICAgJG9wdHNbQ1VSTE9QVF9IVFRQSEVBREVSXSA9IGFycmF5KCdFeHBlY3Q6Jyk7CiAgICB9CgogICAgY3VybF9zZXRvcHRfYXJyYXkoJGNoLCAkb3B0cyk7CiAgICAkcmVzdWx0ID0gY3VybF9leGVjKCRjaCk7CgogICAgaWYgKGN1cmxfZXJybm8oJGNoKSA9PSA2MCkgeyAvLyBDVVJMRV9TU0xfQ0FDRVJUCiAgICAgIHNlbGY6OmVycm9yTG9nKCdJbnZhbGlkIG9yIG5vIGNlcnRpZmljYXRlIGF1dGhvcml0eSBmb3VuZCwgdXNpbmcgYnVuZGxlZCBpbmZvcm1hdGlvbicpOwogICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfQ0FJTkZPLAogICAgICAgICAgICAgICAgICBkaXJuYW1lKF9fRklMRV9fKSAuICcvZmJfY2FfY2hhaW5fYnVuZGxlLmNydCcpOwogICAgICAkcmVzdWx0ID0gY3VybF9leGVjKCRjaCk7CiAgICB9CgogICAgaWYgKCRyZXN1bHQgPT09IGZhbHNlKSB7CiAgICAgICRlID0gbmV3IEZhY2Vib29rQXBpRXhjZXB0aW9uKGFycmF5KAogICAgICAgICdlcnJvcl9jb2RlJyA9PiBjdXJsX2Vycm5vKCRjaCksCiAgICAgICAgJ2Vycm9yJyAgICAgID0+IGFycmF5KAogICAgICAgICAgJ21lc3NhZ2UnID0+IGN1cmxfZXJyb3IoJGNoKSwKICAgICAgICAgICd0eXBlJyAgICA9PiAnQ3VybEV4Y2VwdGlvbicsCiAgICAgICAgKSwKICAgICAgKSk7CiAgICAgIGN1cmxfY2xvc2UoJGNoKTsKICAgICAgdGhyb3cgJGU7CiAgICB9CiAgICBjdXJsX2Nsb3NlKCRjaCk7CiAgICByZXR1cm4gJHJlc3VsdDsKICB9CgogIC8qKgogICAqIFRoZSBuYW1lIG9mIHRoZSBDb29raWUgdGhhdCBjb250YWlucyB0aGUgc2Vzc2lvbi4KICAgKgogICAqIEByZXR1cm4gU3RyaW5nIHRoZSBjb29raWUgbmFtZQogICAqLwogIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRTZXNzaW9uQ29va2llTmFtZSgpIHsKICAgIHJldHVybiAnZmJzXycgLiAkdGhpcy0+Z2V0QXBwSWQoKTsKICB9CgogIC8qKgogICAqIFNldCBhIEpTIENvb2tpZSBiYXNlZCBvbiB0aGUgX3Bhc3NlZCBpbl8gc2Vzc2lvbi4gSXQgZG9lcyBub3QgdXNlIHRoZQogICAqIGN1cnJlbnRseSBzdG9yZWQgc2Vzc2lvbiAtLSB5b3UgbmVlZCB0byBleHBsaWNpdGx5IHBhc3MgaXQgaW4uCiAgICoKICAgKiBAcGFyYW0gQXJyYXkgJHNlc3Npb24gdGhlIHNlc3Npb24gdG8gdXNlIGZvciBzZXR0aW5nIHRoZSBjb29raWUKICAgKi8KICBwcm90ZWN0ZWQgZnVuY3Rpb24gc2V0Q29va2llRnJvbVNlc3Npb24oJHNlc3Npb249bnVsbCkgewogICAgaWYgKCEkdGhpcy0+dXNlQ29va2llU3VwcG9ydCgpKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICAkY29va2llTmFtZSA9ICR0aGlzLT5nZXRTZXNzaW9uQ29va2llTmFtZSgpOwogICAgJHZhbHVlID0gJ2RlbGV0ZWQnOwogICAgJGV4cGlyZXMgPSB0aW1lKCkgLSAzNjAwOwogICAgJGRvbWFpbiA9ICR0aGlzLT5nZXRCYXNlRG9tYWluKCk7CiAgICBpZiAoJHNlc3Npb24pIHsKICAgICAgJHZhbHVlID0gJyInIC4gaHR0cF9idWlsZF9xdWVyeSgkc2Vzc2lvbiwgbnVsbCwgJyYnKSAuICciJzsKICAgICAgaWYgKGlzc2V0KCRzZXNzaW9uWydiYXNlX2RvbWFpbiddKSkgewogICAgICAgICRkb21haW4gPSAkc2Vzc2lvblsnYmFzZV9kb21haW4nXTsKICAgICAgfQogICAgICAkZXhwaXJlcyA9ICRzZXNzaW9uWydleHBpcmVzJ107CiAgICB9CgogICAgLy8gcHJlcGVuZCBkb3QgaWYgYSBkb21haW4gaXMgZm91bmQKICAgIGlmICgkZG9tYWluKSB7CiAgICAgICRkb21haW4gPSAnLicgLiAkZG9tYWluOwogICAgfQoKICAgIC8vIGlmIGFuIGV4aXN0aW5nIGNvb2tpZSBpcyBub3Qgc2V0LCB3ZSBkb250IG5lZWQgdG8gZGVsZXRlIGl0CiAgICBpZiAoJHZhbHVlID09ICdkZWxldGVkJyAmJiBlbXB0eSgkX0NPT0tJRVskY29va2llTmFtZV0pKSB7CiAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoaGVhZGVyc19zZW50KCkpIHsKICAgICAgc2VsZjo6ZXJyb3JMb2coJ0NvdWxkIG5vdCBzZXQgY29va2llLiBIZWFkZXJzIGFscmVhZHkgc2VudC4nKTsKCiAgICAvLyBpZ25vcmUgZm9yIGNvZGUgY292ZXJhZ2UgYXMgd2Ugd2lsbCBuZXZlciBiZSBhYmxlIHRvIHNldGNvb2tpZSBpbiBhIENMSQogICAgLy8gZW52aXJvbm1lbnQKICAgIC8vIEBjb2RlQ292ZXJhZ2VJZ25vcmVTdGFydAogICAgfSBlbHNlIHsKICAgICAgc2V0Y29va2llKCRjb29raWVOYW1lLCAkdmFsdWUsICRleHBpcmVzLCAnLycsICRkb21haW4pOwogICAgfQogICAgLy8gQGNvZGVDb3ZlcmFnZUlnbm9yZUVuZAogIH0KCiAgLyoqCiAgICogVmFsaWRhdGVzIGEgc2Vzc2lvbl92ZXJzaW9uPTMgc3R5bGUgc2Vzc2lvbiBvYmplY3QuCiAgICoKICAgKiBAcGFyYW0gQXJyYXkgJHNlc3Npb24gdGhlIHNlc3Npb24gb2JqZWN0CiAgICogQHJldHVybiBBcnJheSB0aGUgc2Vzc2lvbiBvYmplY3QgaWYgaXQgdmFsaWRhdGVzLCBudWxsIG90aGVyd2lzZQogICAqLwogIHByb3RlY3RlZCBmdW5jdGlvbiB2YWxpZGF0ZVNlc3Npb25PYmplY3QoJHNlc3Npb24pIHsKICAgIC8vIG1ha2Ugc3VyZSBzb21lIGVzc2VudGlhbCBmaWVsZHMgZXhpc3QKICAgIGlmIChpc19hcnJheSgkc2Vzc2lvbikgJiYKICAgICAgICBpc3NldCgkc2Vzc2lvblsndWlkJ10pICYmCiAgICAgICAgaXNzZXQoJHNlc3Npb25bJ2FjY2Vzc190b2tlbiddKSAmJgogICAgICAgIGlzc2V0KCRzZXNzaW9uWydzaWcnXSkpIHsKICAgICAgLy8gdmFsaWRhdGUgdGhlIHNpZ25hdHVyZQogICAgICAkc2Vzc2lvbl93aXRob3V0X3NpZyA9ICRzZXNzaW9uOwogICAgICB1bnNldCgkc2Vzc2lvbl93aXRob3V0X3NpZ1snc2lnJ10pOwogICAgICAkZXhwZWN0ZWRfc2lnID0gc2VsZjo6Z2VuZXJhdGVTaWduYXR1cmUoCiAgICAgICAgJHNlc3Npb25fd2l0aG91dF9zaWcsCiAgICAgICAgJHRoaXMtPmdldEFwaVNlY3JldCgpCiAgICAgICk7CiAgICAgIGlmICgkc2Vzc2lvblsnc2lnJ10gIT0gJGV4cGVjdGVkX3NpZykgewogICAgICAgIHNlbGY6OmVycm9yTG9nKCdHb3QgaW52YWxpZCBzZXNzaW9uIHNpZ25hdHVyZSBpbiBjb29raWUuJyk7CiAgICAgICAgJHNlc3Npb24gPSBudWxsOwogICAgICB9CiAgICAgIC8vIGNoZWNrIGV4cGlyeSB0aW1lCiAgICB9IGVsc2UgewogICAgICAkc2Vzc2lvbiA9IG51bGw7CiAgICB9CiAgICByZXR1cm4gJHNlc3Npb247CiAgfQoKICAvKioKICAgKiBSZXR1cm5zIHNvbWV0aGluZyB0aGF0IGxvb2tzIGxpa2Ugb3VyIEpTIHNlc3Npb24gb2JqZWN0IGZyb20gdGhlCiAgICogc2lnbmVkIHRva2VuJ3MgZGF0YQogICAqCiAgICogVE9ETzogTnVrZSB0aGlzIG9uY2UgdGhlIGxvZ2luIGZsb3cgdXNlcyBPQXV0aDIKICAgKgogICAqIEBwYXJhbSBBcnJheSB0aGUgb3V0cHV0IG9mIGdldFNpZ25lZFJlcXVlc3QKICAgKiBAcmV0dXJuIEFycmF5IFNvbWV0aGluZyB0aGF0IHdpbGwgd29yayBhcyBhIHNlc3Npb24KICAgKi8KICBwcm90ZWN0ZWQgZnVuY3Rpb24gY3JlYXRlU2Vzc2lvbkZyb21TaWduZWRSZXF1ZXN0KCRkYXRhKSB7CiAgICBpZiAoIWlzc2V0KCRkYXRhWydvYXV0aF90b2tlbiddKSkgewogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAkc2Vzc2lvbiA9IGFycmF5KAogICAgICAndWlkJyAgICAgICAgICA9PiAkZGF0YVsndXNlcl9pZCddLAogICAgICAnYWNjZXNzX3Rva2VuJyA9PiAkZGF0YVsnb2F1dGhfdG9rZW4nXSwKICAgICAgJ2V4cGlyZXMnICAgICAgPT4gJGRhdGFbJ2V4cGlyZXMnXSwKICAgICk7CgogICAgLy8gcHV0IGEgcmVhbCBzaWcsIHNvIHRoYXQgdmFsaWRhdGVTaWduYXR1cmUgd29ya3MKICAgICRzZXNzaW9uWydzaWcnXSA9IHNlbGY6OmdlbmVyYXRlU2lnbmF0dXJlKAogICAgICAkc2Vzc2lvbiwKICAgICAgJHRoaXMtPmdldEFwaVNlY3JldCgpCiAgICApOwoKICAgIHJldHVybiAkc2Vzc2lvbjsKICB9CgogIC8qKgogICAqIFBhcnNlcyBhIHNpZ25lZF9yZXF1ZXN0IGFuZCB2YWxpZGF0ZXMgdGhlIHNpZ25hdHVyZS4KICAgKiBUaGVuIHNhdmVzIGl0IGluICR0aGlzLT5zaWduZWRfZGF0YQogICAqCiAgICogQHBhcmFtIFN0cmluZyBBIHNpZ25lZCB0b2tlbgogICAqIEBwYXJhbSBCb29sZWFuIFNob3VsZCB3ZSByZW1vdmUgdGhlIHBhcnRzIG9mIHRoZSBwYXlsb2FkIHRoYXQKICAgKiAgICAgICAgICAgICAgICBhcmUgdXNlZCBieSB0aGUgYWxnb3JpdGhtPwogICAqIEByZXR1cm4gQXJyYXkgdGhlIHBheWxvYWQgaW5zaWRlIGl0IG9yIG51bGwgaWYgdGhlIHNpZyBpcyB3cm9uZwogICAqLwogIHByb3RlY3RlZCBmdW5jdGlvbiBwYXJzZVNpZ25lZFJlcXVlc3QoJHNpZ25lZF9yZXF1ZXN0KSB7CiAgICBsaXN0KCRlbmNvZGVkX3NpZywgJHBheWxvYWQpID0gZXhwbG9kZSgnLicsICRzaWduZWRfcmVxdWVzdCwgMik7CgogICAgLy8gZGVjb2RlIHRoZSBkYXRhCiAgICAkc2lnID0gc2VsZjo6YmFzZTY0VXJsRGVjb2RlKCRlbmNvZGVkX3NpZyk7CiAgICAkZGF0YSA9IGpzb25fZGVjb2RlKHNlbGY6OmJhc2U2NFVybERlY29kZSgkcGF5bG9hZCksIHRydWUpOwoKICAgIGlmIChzdHJ0b3VwcGVyKCRkYXRhWydhbGdvcml0aG0nXSkgIT09ICdITUFDLVNIQTI1NicpIHsKICAgICAgc2VsZjo6ZXJyb3JMb2coJ1Vua25vd24gYWxnb3JpdGhtLiBFeHBlY3RlZCBITUFDLVNIQTI1NicpOwogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICAvLyBjaGVjayBzaWcKICAgICRleHBlY3RlZF9zaWcgPSBoYXNoX2htYWMoJ3NoYTI1NicsICRwYXlsb2FkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Z2V0QXBpU2VjcmV0KCksICRyYXcgPSB0cnVlKTsKICAgIGlmICgkc2lnICE9PSAkZXhwZWN0ZWRfc2lnKSB7CiAgICAgIHNlbGY6OmVycm9yTG9nKCdCYWQgU2lnbmVkIEpTT04gc2lnbmF0dXJlIScpOwogICAgICByZXR1cm4gbnVsbDsKICAgIH0KCiAgICByZXR1cm4gJGRhdGE7CiAgfQoKICAvKioKICAgKiBCdWlsZCB0aGUgVVJMIGZvciBhcGkgZ2l2ZW4gcGFyYW1ldGVycy4KICAgKgogICAqIEBwYXJhbSAkbWV0aG9kIFN0cmluZyB0aGUgbWV0aG9kIG5hbWUuCiAgICogQHJldHVybiBTdHJpbmcgdGhlIFVSTCBmb3IgdGhlIGdpdmVuIHBhcmFtZXRlcnMKICAgKi8KICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0QXBpVXJsKCRtZXRob2QpIHsKICAgIHN0YXRpYyAkUkVBRF9PTkxZX0NBTExTID0KICAgICAgYXJyYXkoJ2FkbWluLmdldGFsbG9jYXRpb24nID0+IDEsCiAgICAgICAgICAgICdhZG1pbi5nZXRhcHBwcm9wZXJ0aWVzJyA9PiAxLAogICAgICAgICAgICAnYWRtaW4uZ2V0YmFubmVkdXNlcnMnID0+IDEsCiAgICAgICAgICAgICdhZG1pbi5nZXRsaXZlc3RyZWFtdmlhbGluaycgPT4gMSwKICAgICAgICAgICAgJ2FkbWluLmdldG1ldHJpY3MnID0+IDEsCiAgICAgICAgICAgICdhZG1pbi5nZXRyZXN0cmljdGlvbmluZm8nID0+IDEsCiAgICAgICAgICAgICdhcHBsaWNhdGlvbi5nZXRwdWJsaWNpbmZvJyA9PiAxLAogICAgICAgICAgICAnYXV0aC5nZXRhcHBwdWJsaWNrZXknID0+IDEsCiAgICAgICAgICAgICdhdXRoLmdldHNlc3Npb24nID0+IDEsCiAgICAgICAgICAgICdhdXRoLmdldHNpZ25lZHB1YmxpY3Nlc3Npb25kYXRhJyA9PiAxLAogICAgICAgICAgICAnY29tbWVudHMuZ2V0JyA9PiAxLAogICAgICAgICAgICAnY29ubmVjdC5nZXR1bmNvbm5lY3RlZGZyaWVuZHNjb3VudCcgPT4gMSwKICAgICAgICAgICAgJ2Rhc2hib2FyZC5nZXRhY3Rpdml0eScgPT4gMSwKICAgICAgICAgICAgJ2Rhc2hib2FyZC5nZXRjb3VudCcgPT4gMSwKICAgICAgICAgICAgJ2Rhc2hib2FyZC5nZXRnbG9iYWxuZXdzJyA9PiAxLAogICAgICAgICAgICAnZGFzaGJvYXJkLmdldG5ld3MnID0+IDEsCiAgICAgICAgICAgICdkYXNoYm9hcmQubXVsdGlnZXRjb3VudCcgPT4gMSwKICAgICAgICAgICAgJ2Rhc2hib2FyZC5tdWx0aWdldG5ld3MnID0+IDEsCiAgICAgICAgICAgICdkYXRhLmdldGNvb2tpZXMnID0+IDEsCiAgICAgICAgICAgICdldmVudHMuZ2V0JyA9PiAxLAogICAgICAgICAgICAnZXZlbnRzLmdldG1lbWJlcnMnID0+IDEsCiAgICAgICAgICAgICdmYm1sLmdldGN1c3RvbXRhZ3MnID0+IDEsCiAgICAgICAgICAgICdmZWVkLmdldGFwcGZyaWVuZHN0b3JpZXMnID0+IDEsCiAgICAgICAgICAgICdmZWVkLmdldHJlZ2lzdGVyZWR0ZW1wbGF0ZWJ1bmRsZWJ5aWQnID0+IDEsCiAgICAgICAgICAgICdmZWVkLmdldHJlZ2lzdGVyZWR0ZW1wbGF0ZWJ1bmRsZXMnID0+IDEsCiAgICAgICAgICAgICdmcWwubXVsdGlxdWVyeScgPT4gMSwKICAgICAgICAgICAgJ2ZxbC5xdWVyeScgPT4gMSwKICAgICAgICAgICAgJ2ZyaWVuZHMuYXJlZnJpZW5kcycgPT4gMSwKICAgICAgICAgICAgJ2ZyaWVuZHMuZ2V0JyA9PiAxLAogICAgICAgICAgICAnZnJpZW5kcy5nZXRhcHB1c2VycycgPT4gMSwKICAgICAgICAgICAgJ2ZyaWVuZHMuZ2V0bGlzdHMnID0+IDEsCiAgICAgICAgICAgICdmcmllbmRzLmdldG11dHVhbGZyaWVuZHMnID0+IDEsCiAgICAgICAgICAgICdnaWZ0cy5nZXQnID0+IDEsCiAgICAgICAgICAgICdncm91cHMuZ2V0JyA9PiAxLAogICAgICAgICAgICAnZ3JvdXBzLmdldG1lbWJlcnMnID0+IDEsCiAgICAgICAgICAgICdpbnRsLmdldHRyYW5zbGF0aW9ucycgPT4gMSwKICAgICAgICAgICAgJ2xpbmtzLmdldCcgPT4gMSwKICAgICAgICAgICAgJ25vdGVzLmdldCcgPT4gMSwKICAgICAgICAgICAgJ25vdGlmaWNhdGlvbnMuZ2V0JyA9PiAxLAogICAgICAgICAgICAncGFnZXMuZ2V0aW5mbycgPT4gMSwKICAgICAgICAgICAgJ3BhZ2VzLmlzYWRtaW4nID0+IDEsCiAgICAgICAgICAgICdwYWdlcy5pc2FwcGFkZGVkJyA9PiAxLAogICAgICAgICAgICAncGFnZXMuaXNmYW4nID0+IDEsCiAgICAgICAgICAgICdwZXJtaXNzaW9ucy5jaGVja2F2YWlsYWJsZWFwaWFjY2VzcycgPT4gMSwKICAgICAgICAgICAgJ3Blcm1pc3Npb25zLmNoZWNrZ3JhbnRlZGFwaWFjY2VzcycgPT4gMSwKICAgICAgICAgICAgJ3Bob3Rvcy5nZXQnID0+IDEsCiAgICAgICAgICAgICdwaG90b3MuZ2V0YWxidW1zJyA9PiAxLAogICAgICAgICAgICAncGhvdG9zLmdldHRhZ3MnID0+IDEsCiAgICAgICAgICAgICdwcm9maWxlLmdldGluZm8nID0+IDEsCiAgICAgICAgICAgICdwcm9maWxlLmdldGluZm9vcHRpb25zJyA9PiAxLAogICAgICAgICAgICAnc3RyZWFtLmdldCcgPT4gMSwKICAgICAgICAgICAgJ3N0cmVhbS5nZXRjb21tZW50cycgPT4gMSwKICAgICAgICAgICAgJ3N0cmVhbS5nZXRmaWx0ZXJzJyA9PiAxLAogICAgICAgICAgICAndXNlcnMuZ2V0aW5mbycgPT4gMSwKICAgICAgICAgICAgJ3VzZXJzLmdldGxvZ2dlZGludXNlcicgPT4gMSwKICAgICAgICAgICAgJ3VzZXJzLmdldHN0YW5kYXJkaW5mbycgPT4gMSwKICAgICAgICAgICAgJ3VzZXJzLmhhc2FwcHBlcm1pc3Npb24nID0+IDEsCiAgICAgICAgICAgICd1c2Vycy5pc2FwcHVzZXInID0+IDEsCiAgICAgICAgICAgICd1c2Vycy5pc3ZlcmlmaWVkJyA9PiAxLAogICAgICAgICAgICAndmlkZW8uZ2V0dXBsb2FkbGltaXRzJyA9PiAxKTsKICAgICRuYW1lID0gJ2FwaSc7CiAgICBpZiAoaXNzZXQoJFJFQURfT05MWV9DQUxMU1tzdHJ0b2xvd2VyKCRtZXRob2QpXSkpIHsKICAgICAgJG5hbWUgPSAnYXBpX3JlYWQnOwogICAgfQogICAgcmV0dXJuIHNlbGY6OmdldFVybCgkbmFtZSwgJ3Jlc3RzZXJ2ZXIucGhwJyk7CiAgfQoKICAvKioKICAgKiBCdWlsZCB0aGUgVVJMIGZvciBnaXZlbiBkb21haW4gYWxpYXMsIHBhdGggYW5kIHBhcmFtZXRlcnMuCiAgICoKICAgKiBAcGFyYW0gJG5hbWUgU3RyaW5nIHRoZSBuYW1lIG9mIHRoZSBkb21haW4KICAgKiBAcGFyYW0gJHBhdGggU3RyaW5nIG9wdGlvbmFsIHBhdGggKHdpdGhvdXQgYSBsZWFkaW5nIHNsYXNoKQogICAqIEBwYXJhbSAkcGFyYW1zIEFycmF5IG9wdGlvbmFsIHF1ZXJ5IHBhcmFtZXRlcnMKICAgKiBAcmV0dXJuIFN0cmluZyB0aGUgVVJMIGZvciB0aGUgZ2l2ZW4gcGFyYW1ldGVycwogICAqLwogIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRVcmwoJG5hbWUsICRwYXRoPScnLCAkcGFyYW1zPWFycmF5KCkpIHsKICAgICR1cmwgPSBzZWxmOjokRE9NQUlOX01BUFskbmFtZV07CiAgICBpZiAoJHBhdGgpIHsKICAgICAgaWYgKCRwYXRoWzBdID09PSAnLycpIHsKICAgICAgICAkcGF0aCA9IHN1YnN0cigkcGF0aCwgMSk7CiAgICAgIH0KICAgICAgJHVybCAuPSAkcGF0aDsKICAgIH0KICAgIGlmICgkcGFyYW1zKSB7CiAgICAgICR1cmwgLj0gJz8nIC4gaHR0cF9idWlsZF9xdWVyeSgkcGFyYW1zLCBudWxsLCAnJicpOwogICAgfQogICAgcmV0dXJuICR1cmw7CiAgfQoKICAvKioKICAgKiBSZXR1cm5zIHRoZSBDdXJyZW50IFVSTCwgc3RyaXBwaW5nIGl0IG9mIGtub3duIEZCIHBhcmFtZXRlcnMgdGhhdCBzaG91bGQKICAgKiBub3QgcGVyc2lzdC4KICAgKgogICAqIEByZXR1cm4gU3RyaW5nIHRoZSBjdXJyZW50IFVSTAogICAqLwogIHByb3RlY3RlZCBmdW5jdGlvbiBnZXRDdXJyZW50VXJsKCkgewogICAgJHByb3RvY29sID0gaXNzZXQoJF9TRVJWRVJbJ0hUVFBTJ10pICYmICRfU0VSVkVSWydIVFRQUyddID09ICdvbicKICAgICAgPyAnaHR0cHM6Ly8nCiAgICAgIDogJ2h0dHA6Ly8nOwogICAgJGN1cnJlbnRVcmwgPSAkcHJvdG9jb2wgLiAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gLiAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXTsKICAgICRwYXJ0cyA9IHBhcnNlX3VybCgkY3VycmVudFVybCk7CgogICAgLy8gZHJvcCBrbm93biBmYiBwYXJhbXMKICAgICRxdWVyeSA9ICcnOwogICAgaWYgKCFlbXB0eSgkcGFydHNbJ3F1ZXJ5J10pKSB7CiAgICAgICRwYXJhbXMgPSBhcnJheSgpOwogICAgICBwYXJzZV9zdHIoJHBhcnRzWydxdWVyeSddLCAkcGFyYW1zKTsKICAgICAgZm9yZWFjaChzZWxmOjokRFJPUF9RVUVSWV9QQVJBTVMgYXMgJGtleSkgewogICAgICAgIHVuc2V0KCRwYXJhbXNbJGtleV0pOwogICAgICB9CiAgICAgIGlmICghZW1wdHkoJHBhcmFtcykpIHsKICAgICAgICAkcXVlcnkgPSAnPycgLiBodHRwX2J1aWxkX3F1ZXJ5KCRwYXJhbXMsIG51bGwsICcmJyk7CiAgICAgIH0KICAgIH0KCiAgICAvLyB1c2UgcG9ydCBpZiBub24gZGVmYXVsdAogICAgJHBvcnQgPQogICAgICBpc3NldCgkcGFydHNbJ3BvcnQnXSkgJiYKICAgICAgKCgkcHJvdG9jb2wgPT09ICdodHRwOi8vJyAmJiAkcGFydHNbJ3BvcnQnXSAhPT0gODApIHx8CiAgICAgICAoJHByb3RvY29sID09PSAnaHR0cHM6Ly8nICYmICRwYXJ0c1sncG9ydCddICE9PSA0NDMpKQogICAgICA/ICc6JyAuICRwYXJ0c1sncG9ydCddIDogJyc7CgogICAgLy8gcmVidWlsZAogICAgcmV0dXJuICRwcm90b2NvbCAuICRwYXJ0c1snaG9zdCddIC4gJHBvcnQgLiAkcGFydHNbJ3BhdGgnXSAuICRxdWVyeTsKICB9CgogIC8qKgogICAqIEdlbmVyYXRlIGEgc2lnbmF0dXJlIGZvciB0aGUgZ2l2ZW4gcGFyYW1zIGFuZCBzZWNyZXQuCiAgICoKICAgKiBAcGFyYW0gQXJyYXkgJHBhcmFtcyB0aGUgcGFyYW1ldGVycyB0byBzaWduCiAgICogQHBhcmFtIFN0cmluZyAkc2VjcmV0IHRoZSBzZWNyZXQgdG8gc2lnbiB3aXRoCiAgICogQHJldHVybiBTdHJpbmcgdGhlIGdlbmVyYXRlZCBzaWduYXR1cmUKICAgKi8KICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGdlbmVyYXRlU2lnbmF0dXJlKCRwYXJhbXMsICRzZWNyZXQpIHsKICAgIC8vIHdvcmsgd2l0aCBzb3J0ZWQgZGF0YQogICAga3NvcnQoJHBhcmFtcyk7CgogICAgLy8gZ2VuZXJhdGUgdGhlIGJhc2Ugc3RyaW5nCiAgICAkYmFzZV9zdHJpbmcgPSAnJzsKICAgIGZvcmVhY2goJHBhcmFtcyBhcyAka2V5ID0+ICR2YWx1ZSkgewogICAgICAkYmFzZV9zdHJpbmcgLj0gJGtleSAuICc9JyAuICR2YWx1ZTsKICAgIH0KICAgICRiYXNlX3N0cmluZyAuPSAkc2VjcmV0OwoKICAgIHJldHVybiBtZDUoJGJhc2Vfc3RyaW5nKTsKICB9CgogIC8qKgogICAqIFByaW50cyB0byB0aGUgZXJyb3IgbG9nIGlmIHlvdSBhcmVuJ3QgaW4gY29tbWFuZCBsaW5lIG1vZGUuCiAgICoKICAgKiBAcGFyYW0gU3RyaW5nIGxvZyBtZXNzYWdlCiAgICovCiAgcHJvdGVjdGVkIHN0YXRpYyBmdW5jdGlvbiBlcnJvckxvZygkbXNnKSB7CiAgICAvLyBkaXNhYmxlIGVycm9yIGxvZyBpZiB3ZSBhcmUgcnVubmluZyBpbiBhIENMSSBlbnZpcm9ubWVudAogICAgLy8gQGNvZGVDb3ZlcmFnZUlnbm9yZVN0YXJ0CiAgICBpZiAocGhwX3NhcGlfbmFtZSgpICE9ICdjbGknKSB7CiAgICAgIGVycm9yX2xvZygkbXNnKTsKICAgIH0KICAgIC8vIHVuY29tbWVudCB0aGlzIGlmIHlvdSB3YW50IHRvIHNlZSB0aGUgZXJyb3JzIG9uIHRoZSBwYWdlCiAgICAvLyBwcmludCAnZXJyb3JfbG9nOiAnLiRtc2cuIlxuIjsKICAgIC8vIEBjb2RlQ292ZXJhZ2VJZ25vcmVFbmQKICB9CgogIC8qKgogICAqIEJhc2U2NCBlbmNvZGluZyB0aGF0IGRvZXNuJ3QgbmVlZCB0byBiZSB1cmxlbmNvZGUoKWVkLgogICAqIEV4YWN0bHkgdGhlIHNhbWUgYXMgYmFzZTY0X2VuY29kZSBleGNlcHQgaXQgdXNlcwogICAqICAgLSBpbnN0ZWFkIG9mICsKICAgKiAgIF8gaW5zdGVhZCBvZiAvCiAgICoKICAgKiBAcGFyYW0gU3RyaW5nIGJhc2U2NFVybEVuY29kZWRlZCBzdHJpbmcKICAgKi8KICBwcm90ZWN0ZWQgc3RhdGljIGZ1bmN0aW9uIGJhc2U2NFVybERlY29kZSgkaW5wdXQpIHsKICAgIHJldHVybiBiYXNlNjRfZGVjb2RlKHN0cnRyKCRpbnB1dCwgJy1fJywgJysvJykpOwogIH0KfQo=]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRkJBcHAgKGMpIDIwMTAgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEEgdG9vbGJveCBvZiBjb252ZW5pZW5jZXMgdG8gYnVpbGQgZmFjZWJvb2sgaW50ZWdyYXRpb24gaW50byBhIHdlYnNpdGUKIyAgZm9yIENNUyBtb2R1bGVzIGFuZCB3ZWJzaXRlIGRlc2lnbmVycy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCiR0bXAgPSBmaWxlX2dldF9jb250ZW50cyhkaXJuYW1lKF9fRklMRV9fKS4nL3RlbXBsYXRlcy9vcmlnX2ZiaW5pdF9hc3luYy50cGwnKTsKaWYoICR0bXAgKQogIHsKICAgICR0aGlzLT5TZXRUZW1wbGF0ZSgnZmJpbml0X2FzeW5jJywkdG1wKTsKICB9CgokdG1wID0gZmlsZV9nZXRfY29udGVudHMoZGlybmFtZShfX0ZJTEVfXykuJy90ZW1wbGF0ZXMvb3JpZ19mYmluaXRfc3luYy50cGwnKTsKaWYoICR0bXAgKQogIHsKICAgICR0aGlzLT5TZXRUZW1wbGF0ZSgnZmJpbml0X3N5bmMnLCR0bXApOwogIH0KCiR0bXAgPSBmaWxlX2dldF9jb250ZW50cyhkaXJuYW1lKF9fRklMRV9fKS4nL3RlbXBsYXRlcy9vcmlnX2ludml0ZS50cGwnKTsKaWYoICR0bXAgKQogIHsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKENHRkJBcHA6OlBSRUZfSU5WSVRFX1RFTVBMQVRFLCdzdGQnKTsKICAgICR0aGlzLT5TZXRUZW1wbGF0ZShDR0ZCQXBwOjpUUExfU1lTREZMVF9JTlZJVEUsJHRtcCk7CiAgICAkdGhpcy0+U2V0VGVtcGxhdGUoJ2ludml0ZV9zdGQnLCR0bXApOwogIH0KIwojIEVPRgojCj8+]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IENHRkJBcHAgKGMpIDIwMTAgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMgIEEgdG9vbGJveCBvZiBjb252ZW5pZW5jZXMgdG8gYnVpbGQgZmFjZWJvb2sgaW50ZWdyYXRpb24gaW50byBhIHdlYnNpdGUKIyAgZm9yIENNUyBtb2R1bGVzIGFuZCB3ZWJzaXRlIGRlc2lnbmVycy4KIyAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKCiR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCk7CiR0aGlzLT5EZWxldGVUZW1wbGF0ZSgpOwokdGhpcy0+UmVtb3ZlRXZlbnRIYW5kbGVyKCdDb3JlJywnQ29udGVudFBvc3RSZW5kZXInKTsKCiMKIyBFT0YKIwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/admin_fbsettings_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyRmb3Jtc3RhcnR9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnZmJfYXBwaWQnKX06PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9ZmJfYXBwaWQiIHZhbHVlPSJ7JGZiX2FwcGlkfSIgc2l6ZT0iMjAiIG1heGxlbmd0aD0iMjAiLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ2ZiX2FwcHNlY3JldCcpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH1mYl9hcHBzZWNyZXQiIHZhbHVlPSJ7JGZiX2FwcHNlY3JldH0iIHNpemU9IjQwIiBtYXhsZW5ndGg9IjQwIi8+CiAgPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdmYl9wZXJtcycpfTo8L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICB7Y2FwdHVyZSBhc3NpZ249J3RtcCd9eyRhY3Rpb25pZH1mYl9wZXJtc3svY2FwdHVyZX0KICAgIHtodG1sX2NoZWNrYm94ZXMgbmFtZT0kdG1wIG9wdGlvbnM9JHBlcm1fbGlzdCBzZXBhcmF0b3I9Jzxici8+JyBzZWxlY3RlZD0kZmJfcGVybXN9CiAgICA8YnIvPgogICAgeyRtb2QtPkxhbmcoJ2luZm9fZmJfcGVybXMnKX0KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgbmFtZT0ieyRhY3Rpb25pZH1zdWJtaXQiIHZhbHVlPSJ7JG1vZC0+TGFuZygnc3VibWl0Jyl9Ii8+CiAgPC9wPgo8L2Rpdj4KeyRmb3JtZW5kfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_fbinit_async.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZmFjZWJvb2sgYXN5bmNocm9ub3VzIGluaXQgdGVtcGxhdGUgKn0KPGRpdiBpZD0iZmItcm9vdCI+PC9kaXY+CjxzY3JpcHQ+CntsaXRlcmFsfQogIHdpbmRvdy5mYkFzeW5jSW5pdCA9IGZ1bmN0aW9uKCkgewogICAgRkIuaW5pdCh7YXBwSWQ6IHsvbGl0ZXJhbH0neyRmYl9hcHBpZH0ne2xpdGVyYWx9LCBzdGF0dXM6IHRydWUsIGNvb2tpZTogdHJ1ZSwgeGZibWw6IHRydWV9KTsKICB9OwogIChmdW5jdGlvbigpIHsKICAgIHZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7IGUuYXN5bmMgPSB0cnVlOwogICAgZS5zcmMgPSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCArCiAgICAgICcvL2Nvbm5lY3QuZmFjZWJvb2submV0L2VuX1VTL2FsbC5qcyc7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmItcm9vdCcpLmFwcGVuZENoaWxkKGUpOwogIH0oKSk7CnsvbGl0ZXJhbH0KPC9zY3JpcHQ+Cg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_fbinit_sync.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZmFjZWJvb2sgc3luY2hyb25vdXMgaW5pdGlhbGl6YXRpb24gKn0KPGRpdiBpZD0iZmItcm9vdCI+PC9kaXY+CjxzY3JpcHQgc3JjPSJodHRwOi8vY29ubmVjdC5mYWNlYm9vay5uZXQvZW5fVVMvYWxsLmpzIj48L3NjcmlwdD4KPHNjcmlwdD4KICBGQi5pbml0KHtsZGVsaW19CiAgICBhcHBJZCAgOiAneyRmYl9hcHBpZH0nLAogICAgc3RhdHVzIDogdHJ1ZSwgLy8gY2hlY2sgbG9naW4gc3RhdHVzCiAgICBjb29raWUgOiB0cnVlLCAvLyBlbmFibGUgY29va2llcyB0byBhbGxvdyB0aGUgc2VydmVyIHRvIGFjY2VzcyB0aGUgc2Vzc2lvbgogICAgeGZibWwgIDogdHJ1ZSAgLy8gcGFyc2UgWEZCTUwKICB7cmRlbGltfSk7Cjwvc2NyaXB0Pg==]]></data>
	</file>
	<file>
	  <filename>/templates/orig_invite.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogPHNwYW4gb25jbGljaz0iamF2YXNjcmlwdDpmeyRoYXNofSgpOyI+Y2xpY2sgbWU8L3NwYW4+ICp9CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KZnVuY3Rpb24gZnskaGFzaH0oKSB7bGRlbGltfQpGQi51aSh7bGRlbGltfW1ldGhvZDogJ2ZibWwuZGlhbG9nJywgZmJtbDogJzxmYjpyZXF1ZXN0LWZvcm0gYWN0aW9uPSJ7JGRlc3RfdXJsfSIgbWV0aG9kPSJ7JG1ldGhvZH0iIGludml0ZT0idHJ1ZSIgdHlwZT0ieyRhcHBfbmFtZX0iIGNvbnRlbnQ9InskY29udGVudH0iPjxmYjptdWx0aS1mcmllbmQtc2VsZWN0b3IgYWN0aW9udGV4dD0ieyRhY3Rpb25fdGV4dH0iIHNob3dib3JkZXI9InskYm9yZGVyfGRlZmF1bHQ6dHJ1ZX0iIHJvd3M9Inskcm93c3xkZWZhdWx0OjV9IiBjb2xzPSJ7JGNvbHN8ZGVmYXVsdDo1fSIgbWF4PSJ7JG1heF91c2Vyc3xkZWZhdWx0OjEwfSIge2lmIGlzc2V0KCRleGNsdWRlX2lkcyl9ZXhjbHVkZV9pZHM9InskZXhjbHVkZV9pZHN9InsvaWZ9IHtpZiBpc3NldCgkYnlwYXNzKX1ieXBhc3M9InskYnlwYXNzfSJ7L2lmfSB7aWYgaXNzZXQoJGNvbmRlbnNlZCl9Y29uZGVuc2VkPSJ7JGNvbmRlbnNlZH0iey9pZn0gZW1haWxfaW52aXRlPSJ7JGVtYWlsX2ludml0ZXxkZWZhdWx0OiJmYWxzZSJ9IiBpbXBvcnRfZXh0ZXJuYWxfZnJpZW5kcz0ieyRpbXBvcnRfZXh0ZXJuYWxfZnJpZW5kc3xkZWZhdWx0OiJmYWxzZSJ9Ii8+PC9mYjpyZXF1ZXN0LWZvcm0+J3tyZGVsaW19KTsKe3JkZWxpbX0KPC9zY3JpcHQ+Cg==]]></data>
	</file>
</module>
