<?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>Sagepay2</name>
	<version>1.1</version>
    <mincmsversion>2.1.5</mincmsversion>
	<help><![CDATA[CjxoMz5XaGF0IGRvZXMgaXQgZG8/PC9oMz4KICA8cD5UaGlzIG1vZHVsZSBpcyB1c2VkIGJ5IHRoZSBPcmRlcnMgbW9kdWxlIHRvIGNvbXBsZXRlIHB1cmNoYXNlcyB1c2luZyBTYWdlcGF5LiAgQWZ0ZXIgY2hlY2tvdXQgaXMgY29tcGxldGVkIChzdWNjZXNzZnVsbHkgb3IgdW5zdWNjZXNzZnVsbHkpIG9uIHRoZSBTYWdlUGF5IHNpdGUsIHRoZSB1c2VyIGlzIHJlZGlyZWN0ZWQgYmFjayB0byB0aGUgT3JkZXJzIG1vZHVsZSB0byBzaG93IHRoZSBjaGVja291dCByZWNlaXB0IHBhZ2UuPC9wPgogIDxwPlNlZSA8YSBocmVmPSJodHRwOi8vY2FsZ3V5MTAwMC5jb20vQmxvZ3MvOC82MC9jbXNtcy1xdWljay1lLWNvbW1lcmNlLWhvdy10by5odG1sIj5odHRwOi8vY2FsZ3V5MTAwMC5jb20vQmxvZ3MvOC82MC9jbXNtcy1xdWljay1lLWNvbW1lcmNlLWhvdy10by5odG1sPC9hPiAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHNldHVwIHRoZSBDYXJ0LCBPcmRlcnMgYW5kIG90aGVyIGFzc29jaWF0ZWQgbW9kdWxlcy48L3A+Cgo8aDM+SG93IERvIEkgdXNlIEl0PC9oMz4KPHA+Rmlyc3QgeW91IGNyZWF0ZSBhIFNhZ2VwYWwgYWNjb3VudCwgYW5kIG9idGFpbiB0aGUgU2FnZXBheSBWZW5kb3IgTmFtZSwgVGVzdCBTeXN0ZW0gRW5jcnlwdGlvbiBQYXNzd29yZCBhbmQgKHdoZW4geW91IGFyZSByZWFkeSB0byBnbyBsaXZlKSB0aGUgUHJvZHVjdGlvbiBTeXN0ZW0gRW5jcnlwdGlvbiBQYXNzd29yZC48L3A+CjxwPkxlYXZlICdFbmFibGUgUHJvZHVjdGlvbiBNb2RlJyBzZXQgdG8gJ05vJyB1bnRpbCB5b3UgYXJlIHJlYWR5IHRvIGdvIExpdmUuIDwvcD4KPHA+WW91IGNhbiBjaG9vc2UgdG8gaGF2ZSBTYWdlcGF5IHRvIHNlbmQgZW1haWxzIHRvIHdlYnNpdGUgb3duZXIgYW5kIHRoZSBjdXN0b21lciBhZnRlciBjaGVja291dCBpcyBjb21wbGV0ZWQsIHVzaW5nIHRoZSAnU2FnZXBheSBTZW5kIENvbmZpcm1hdGlvbiBFbWFpbHMnIG9wdGlvbi4gSWYgc2VsZWN0ZWQgdGhlIGN1c3RvbWVyIGlzIG9ubHkgc2VudCBhbiBlbWFpbCBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24gb2YgdGhlIGNoZWNrb3V0LiBJZiBzZWxlY3RlZCB0aGUgVmVuZG9yIGlzIHNlbnQgZWl0aGVyIGEgc3VjY2VzcyBvciBmYWlsdXJlIGVtYWlsLjwvcD4KPHA+SW4gJ0NhbGd1eXMgRWNvbW1lcmNlIEJhc2UgPiBQYXltZW50IFNldHRpbmdzJyBzZWxlY3QgU2FnZXBheTIgYXMgdGhlIFBheW1lbnQgR2F0ZXdheSBNb2R1bGUuPC9wPgoKPGgzPkltcGxlbWVudGF0aW9uIE5vdGVzPC9oMz4KPHA+U2FnZXBheTIgdXNlIHRoZSBTYWdlcGF5IEZvcm0gdjMuMCBQcm90b2NvbC48L3A+Cjx1bD4KICAgPGxpPlRheGVzOiBhcmUgc2hvd24gYXMgbGluZSBpdGVtcy48L2xpPgogICA8bGk+U2hpcHBpbmc6IGFsbCBzaGlwcGluZyBjb3N0cyBhcmUgZW50ZXJlZCBhcyBsaW5lIGl0ZW1zLjwvbGk+CiAgIDxsaT5EaXNjb3VudHM6IGFyZSBpbmNsdWRlZCBpbiB0aGUgZGlzcGxheWVkIGxpbmUgaXRlbSBhbW91bnQ8L2xpPgo8L3VsPgo8cD5TYWdlcGF5MiBkb2VzIG5vdCAoYXQgdGhpcyB0aW1lKSBzdXBwb3J0IHN1YnNjcmlwdGlvbnMgLyByZXBlYXQgcGF5bWVudHMKPHA+QmFzZWQgb24gQ2FsZ3V5cyBQYXlwYWxHYXRld2F5IHYgMi4zLjExIC0gQXByaWwsIDIwMTMgLSBjYWxndXkxMDAwIGFuZCB0aGUgb3JpZ2luYWwgU2FnZVBheUdhdGV3YXkgbW9kdWxlIHYxLjA8L3A+Cgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBjbXMgZGV2ZWxvcG1lbnQgZm9yZ2UgYXQgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyI+ZGV2LmNtc21hZGVzaW1wbGUub3JnPC9hPi48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+CjwvdWw+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDE1LCBDaHJpcyBUYXlsb3IuIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPgo8aDM+RGVwZW5kZW5jaWVzPC9oMz48dWw+PGxpPkNHRXh0ZW5zaW9ucyA9Jmd0OyAxLjU2LjI8L2xpPjxsaT5DR1BheW1lbnRHYXRld2F5QmFzZSA9Jmd0OyAxLjYuMjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBDaHJpcyBUYXlsb3IgJmx0O2NocmlzQGJpbm5vdmF0aXZlLmNvLnVrJmd0OzxiciAvPjxiciAvPlZlcnNpb246IDEuMTxiciAvPjxiciAvPkNoYW5nZSBIaXN0b3J5OjxiciAvPgo8aDM+VmVyc2lvbiAxLjEgLSAwNk5vdjE5PC9oMz4KPHVsPgogICA8bGk+UmV3cml0dGVuIHRvIHdvcmsgd2l0aCBDR1BheW1lbnRHYXRld2F5QmFzZSAxLjYueCs8L2xpPgogICA8bGk+V2lsbCBub3cgcmV0dXJuIHRvIENoZWNrb3V0IHBhZ2UgKHdpdGhvdXQgY2xlYXJpbmcgQ2FydCkgaWYgdXNlciBjYW5jZWxzIFNhZ2VQYXkgcGF5bWVudDwvbGk+CjwvdWw+Cjxicj4KCjxoMz5WZXJzaW9uIDAuOS4yIC0gMjJKdWwxNTwvaDM+Cjx1bD4KICAgPGxpPmFkZGVkIHNvbWUgb3B0aW9uYWwgZGVidWcgY29kZSAoZGVmYXVsdCB0byBPRkYpPC9saT4KPC91bD4KPGJyPgoKPGgzPlZlcnNpb24gMC45LjEgLSAxNUp1bDE1PC9oMz4KPHVsPgogICA8bGk+U2FnZXBheSByZXNwb25zZSAnUkVKRUNURUQnIG5vdyBzZXRzIG9yZGVyIHN0YXR1cyB0byBjYW5jZWxsZWQsIG90aGVyd2lzZSBPcmRlcnMgc2V0cyBzdGF0dXMgdG8gU1VDQ0VTUyBhbmQgcGF5bWVudCB0byBEZWNsaW5lZDwvbGk+CiAgIDxsaT5idWcgZml4IHRvIGNvcnJlY3RseSBhY2NlcHQgU2FnZXBheSByZXNwb25zZSBhbW91bnQgMTAwMCs8L2xpPgo8L3VsPgo8YnI+Cgo8aDM+VmVyc2lvbiAwLjkgLSAxNEp1bDE1PC9oMz4KPHVsPgogICA8bGk+MC45IC0gaW5pdGlhbCByZWxlYXNlPC9saT4KICAgPGxpPkJhc2VkIG9uIENhbGd1eXMgUGF5cGFsR2F0ZXdheSB2IDIuMy4xMSAtIEFwcmlsLCAyMDEzIC0gY2FsZ3V5MTAwMCBhbmQgdGhlIG9yaWdpbmFsIFNhZ2VQYXlHYXRld2F5IG1vZHVsZSB2MS4wPC9saT4KICAgPGxpPk5PVEU6IFBIUCA1LjMueCBJUyBSRVFVSVJFRDwvbGk+CjwvdWw+Cjxicj4KPGJyIC8+]]></about>
	<description><![CDATA[Part of the E-commerce collection, provide the ability to perform checkounts via SagePay]]></description>
	<requires>
	  <requiredname>CGExtensions</requiredname>
	  <requiredversion>1.56.2</requiredversion>
	</requires>
	<requires>
	  <requiredname>CGPaymentGatewayBase</requiredname>
	  <requiredversion>1.6.2</requiredversion>
	</requires>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogU2FnZXBheTIKIyBBdXRob3I6IENocmlzIFRheWxvcgojIENvcHlyaWdodDogKEMpIDIwMTkgQ2hyaXMgVGF5bG9yLCBjaHJpc0BiaW5ub3ZhdGl2ZS5jby51awojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NhZ2VwYXkyCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzCiMgICAgICAgICAgc2VlIC9TYWdlcGF5Mi9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgoK]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogU2FnZXBheTIKIyBBdXRob3I6IENocmlzIFRheWxvcgojIENvcHlyaWdodDogKEMpIDIwMTkgQ2hyaXMgVGF5bG9yLCBjaHJpc0BiaW5ub3ZhdGl2ZS5jby51awojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NhZ2VwYXkyCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzCiMgICAgICAgICAgc2VlIC9TYWdlcGF5Mi9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiAoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKLy8gZG8gZnVuY3Rpb25hbGl0eSB0ZXN0cwppZiAoICFmdW5jdGlvbl9leGlzdHMoJ21jcnlwdF9tb2R1bGVfb3BlbicpICkgewogIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ2Vycm9yX25vX21jcnlwdCcpKTsKICByZXR1cm47Cn0KCmlmKCAhJHRoaXMtPklzQ29uZmlndXJlZCgpICkgewogICAgZWNobyAnPGRpdiBjbGFzcz0iaW5mb3JtYXRpb24iPicuJHRoaXMtPkxhbmcoJ21zZ191bmNvbmZpZ3VyZWQnKS4nPC9kaXY+JzsKfQoKLy8gc3RhcnQgdGFicy4KZWNobyAkdGhpcy0+U3RhcnRUYWJIZWFkZXJzKCk7CmlmKCAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpICkgewogIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigncHJlZnMnLCR0aGlzLT5MYW5nKCdwcmVmZXJlbmNlcycpKTsKfQppZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFRlbXBsYXRlcycpICkgewogIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigndGVtcGxhdGUnLCR0aGlzLT5MYW5nKCdmb3JtX3RlbXBsYXRlJykpOwp9CmVjaG8gJHRoaXMtPkVuZFRhYkhlYWRlcnMoKTsKCmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOwppZiggJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKSApIHsKICAvLyBoYW5kbGUgdGhlIGZvcm0KICBpZiAoaXNzZXQoJHBhcmFtc1snc3VibWl0J10pKSB7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncHJvZG1vZGUnLChpbnQpJHBhcmFtc1sncHJvZG1vZGUnXSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncHJvZF9hY2N0Jyx0cmltKCRwYXJhbXNbJ3Byb2RfYWNjdCddKSk7CiAgICAkdGhpcy0+U2V0UHJlZmVyZW5jZSgncHJvZF90b2tlbicsdHJpbSgkcGFyYW1zWydwcm9kX3Rva2VuJ10pKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0ZXN0X2FjY3QnLHRyaW0oJHBhcmFtc1sndGVzdF9hY2N0J10pKTsKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCd0ZXN0X3Rva2VuJyx0cmltKCRwYXJhbXNbJ3Rlc3RfdG9rZW4nXSkpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3ZlbmRvcl9lbWFpbCcsdHJpbSgkcGFyYW1zWyd2ZW5kb3JfZW1haWwnXSkpOwogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoJ3NlbmRfZW1haWxfc2VsZWN0ZWQnLHRyaW0oJHBhcmFtc1snc2VuZF9lbWFpbF9zZWxlY3RlZCddKSk7CiAgfQoKICBlY2hvICR0aGlzLT5TdGFydFRhYigncHJlZnMnKTsKICAkc21hcnR5LT5hc3NpZ24oJ2Zvcm1zdGFydCcsICR0aGlzLT5DR0NyZWF0ZUZvcm1TdGFydCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQpKTsKICAkc21hcnR5LT5hc3NpZ24oJ2Zvcm1lbmQnLCAkdGhpcy0+Q3JlYXRlRm9ybUVuZCgpKTsKCiAgJHNtYXJ0eS0+YXNzaWduKCdwcm9kbW9kZScsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Byb2Rtb2RlJywwKSk7CiAgJHNtYXJ0eS0+YXNzaWduKCdwcm9kX2FjY3QnLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwcm9kX2FjY3QnKSk7CiAgJHNtYXJ0eS0+YXNzaWduKCdwcm9kX3Rva2VuJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgncHJvZF90b2tlbicpKTsKICAkc21hcnR5LT5hc3NpZ24oJ3Rlc3RfYWNjdCcsJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Rlc3RfYWNjdCcpKTsKICAkc21hcnR5LT5hc3NpZ24oJ3Rlc3RfdG9rZW4nLCR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0ZXN0X3Rva2VuJykpOwoKICAkc21hcnR5LT5hc3NpZ24oJ3N1Ym1pdCcsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdzdWJtaXQnLCBsYW5nKCdzdWJtaXQnKSkpOwoKICAkY29udGVudG9wcyA9ICRnQ21zLT5HZXRDb250ZW50T3BlcmF0aW9ucygpOwogICR0aGVfcmV0dXJuaWQgPSAkY29udGVudG9wcy0+R2V0RGVmYXVsdENvbnRlbnQoKTsKCiAgICRzbWFydHktPmFzc2lnbigndmVuZG9yX2VtYWlsJywkdGhpcy0+R2V0UHJlZmVyZW5jZSgndmVuZG9yX2VtYWlsJykpOwogICAkc2VuZEVtYWlsT3B0aW9ucyA9IGFycmF5KAogICAgICAnMCc9PiR0aGlzLT5MYW5nKCdzZW5kX2VtYWlsX25vbmUnKSwKICAgICAgJzEnPT4kdGhpcy0+TGFuZygnc2VuZF9lbWFpbF9ib3RoJyksCiAgICAgICcyJz0+JHRoaXMtPkxhbmcoJ3NlbmRfZW1haWxfdmVuZG9yJykKICAgKTsKICAgJHNtYXJ0eS0+YXNzaWduKCdzZW5kX2VtYWlsX29wdGlvbnMnLCAkc2VuZEVtYWlsT3B0aW9ucyk7CiAgICRzbWFydHktPmFzc2lnbignc2VuZF9lbWFpbF9zZWxlY3RlZCcsICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdzZW5kX2VtYWlsX3NlbGVjdGVkJykpOwoKCiAgZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdwcmVmcy50cGwnKTsKICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKfQoKaWYoICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSApIHsKICBlY2hvICR0aGlzLT5TdGFydFRhYigndGVtcGxhdGUnKTsKICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pLicvZnVuY3Rpb24udGVtcGxhdGVfdGFiLnBocCcpOwogIGVjaG8gJHRoaXMtPkVuZFRhYigpOwp9CgoKZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOwovLyBFT0YKPz4K]]></data>
	</file>
	<file>
	  <filename>/action.return_cancel.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBTYWdlcGF5Mg0KIyBBdXRob3I6IENocmlzIFRheWxvcg0KIyBDb3B5cmlnaHQ6IChDKSAyMDE5IENocmlzIFRheWxvciwgY2hyaXNAYmlubm92YXRpdmUuY28udWsNCiMgTW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2FnZXBheTINCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzDQojICAgICAgICAgIHNlZSAvU2FnZXBheTIvbGFuZy9MSUNFTkNFLnR4dCBvciA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYoICFpc3NldCgkZ0NtcykgKSBleGl0Ow0KDQovLyBpcyB0aGlzIGNvZGUgc3RpbGwgdXNlZD8NCmlmICggIWlzc2V0KCRwYXJhbXNbJ215Y3VzdG9tJ10pICkgew0KICAgJHRoaXMtPlNldFRyYW5zYWN0aW9uRXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX21pc3NpbmdfY3VzdG9tX3ZlcmlmaWVyJykpOw0KICAgJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCkuJzpyZXR1cm5fY2FuY2VsJywnQ3VzdG9tIFZlcmlmeSBDb2RlIG5vdCBzcGVjaWZpZWQnKTsNCiAgIHJldHVybjsNCg0KfSBlbHNlIGlmICggIWlzc2V0KCRwYXJhbXNbJ29yZGVyX2lkJ10pICkgew0KICAgJHRoaXMtPlNldFRyYW5zYWN0aW9uRXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2lwbl9pbnZhbGlkX29yZGVyaWQnKSk7DQogICAkdGhpcy0+QXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKS4nOnJldHVybl9jYW5jZWwnLCdPcmRlciBJRCBub3QgU3BlY2lmaWVkJyk7DQogICByZXR1cm47DQoNCn0gaWYgKCAhJHRoaXMtPlJlc3RvcmVTdGF0ZSgkcGFyYW1zWydteWN1c3RvbSddKSApIHsNCiAgICR0aGlzLT5TZXRUcmFuc2FjdGlvbkVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9yZXN0b3JpbmdfdHJhbnNhY3Rpb25fc3RhdGUnKSk7DQogICAkdGhpcy0+QXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKS4nOnJldHVybl9jYW5jZWwnLCdFcnJvciBSZXN0b3JpbmcgdHJhbnNhY3Rpb24gc3RhdGUnKTsNCiAgIHJldHVybjsNCg0KfQ0KDQovLyBkZWNvZGUgU2FnZXBheSByZXNwb25zZQ0KJGNyeXB0S2V5ID0gJyc7DQppZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Byb2Rtb2RlJykgKSB7DQogICAkY3J5cHRLZXkgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncHJvZF90b2tlbicpOw0KfSBlbHNlIHsNCiAgICRjcnlwdEtleSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0ZXN0X3Rva2VuJyk7DQp9DQokY3J5cHQgPSAkX1JFUVVFU1RbJ2NyeXB0J107DQokZGVjcnlwdCA9ICR0aGlzLT5kZWNyeXB0QWVzKCRjcnlwdCwgJGNyeXB0S2V5KTsNCiRyZXNwb25zZSA9ICR0aGlzLT5xdWVyeVN0cmluZ1RvQXJyYXkoJGRlY3J5cHQpOw0KDQppZiAoISRkZWNyeXB0IHx8IGVtcHR5KCRyZXNwb25zZSkpIHsNCiAgICR0aGlzLT5TZXRFcnJvciggJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRfZGF0YScpICk7DQogICAkdGhpcy0+QXVkaXQoJycsICR0aGlzLT5HZXROYW1lKCksICR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkX2RhdGEnKSk7DQp9DQoNCmlmICgkcmVzcG9uc2VbJ1N0YXR1cyddPT0nQUJPUlQnKSB7DQogICAkbW9kID0gXGNtc191dGlsczo6Z2V0X21vZHVsZSgnT3JkZXJzJyk7DQogICBpZiAoaXNfb2JqZWN0KCRtb2QpKSB7DQogICAgICAkY2FydElkID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgnYmlsbGluZ3BhZ2UnKTsNCiAgICAgICRtYW5hZ2VyID0gJGdDbXMtPkdldEhpZXJhcmNoeU1hbmFnZXIoKTsNCiAgICAgIGlmICggJGNhcnRJZCE9JycgKSB7DQogICAgICAgICAkbm9kZSA9ICRtYW5hZ2VyLT5maW5kX2J5X3RhZygnaWQnLCRjYXJ0SWQpOw0KICAgICAgICAgaWYoICRub2RlICkgew0KICAgICAgICAgICAgJGNvbnRlbnQgPSAkbm9kZS0+R2V0Q29udGVudCgpOw0KICAgICAgICAgICAgJHVybCA9ICRjb250ZW50LT5HZXRVcmwoKTsNCiAgICAgICAgICAgIGF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCkuJzpyZXR1cm5fY2FuY2VsJywncGF5bWVudCBjYW5jZWxsZWQsIHJldHVybiB0byBjYXJ0IC0gaWQ6Jy4kcGFyYW1zWydvcmRlcl9pZCddKTsNCiAgICAgICAgICAgIHJlZGlyZWN0KCR1cmwpOw0KICAgICAgICAgfQ0KICAgICAgfQ0KICAgfQ0KfQ0KDQovLyBPdGhlcndpc2UgY2FuY2VsIHRyYW5zYWN0aW9uIGFuZCBjbGVhciBvdXQgdGhlIGNhcnQNCmF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCkuJzpyZXR1cm5fY2FuY2VsJywndHJhbnNhY3Rpb24gY2FuY2VsbGVkIC0gaWQ6Jy4kcGFyYW1zWydvcmRlcl9pZCddKTsNCiR0aGlzLT5TZXRDYW5jZWxsZWQoKTsNCiR0aGlzLT5GaW5pc2hUcmFuc2FjdGlvbigpOw0KDQoNCg==]]></data>
	</file>
	<file>
	  <filename>/action.return_success.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCiMgTW9kdWxlOiBTYWdlcGF5Mg0KIyBBdXRob3I6IENocmlzIFRheWxvcg0KIyBDb3B5cmlnaHQ6IChDKSAyMDE5IENocmlzIFRheWxvciwgY2hyaXNAYmlubm92YXRpdmUuY28udWsNCiMgTW9kdWxlJ3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly9kZXYuY21zbWFkZXNpbXBsZS5vcmcvcHJvamVjdHMvc2FnZXBheTINCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzDQojICAgICAgICAgIHNlZSAvU2FnZXBheTIvbGFuZy9MSUNFTkNFLnR4dCBvciA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KaWYgKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsNCg0KaWYgKCAhaXNzZXQoJHBhcmFtc1snbXljdXN0b20nXSkgKSB7DQogICAgJHRoaXMtPlNldFRyYW5zYWN0aW9uRXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX21pc3NpbmdfY3VzdG9tX3ZlcmlmaWVyJykpOw0KICAgICR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLic6cmV0dXJuX3N1Y2Nlc3MnLCR0aGlzLT5MYW5nKCdlcnJvcl9taXNzaW5nX2N1c3RvbV92ZXJpZmllcicpKTsNCiAgICAkdGhpcy0+RmluaXNoVHJhbnNhY3Rpb24oKTsNCiAgICByZXR1cm47DQoNCn0gZWxzZSBpZiAoICFpc3NldCgkcGFyYW1zWydvcmRlcl9pZCddKSApICB7DQogICAgJHRoaXMtPlNldFRyYW5zYWN0aW9uRXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX2lwbl9pbnZhbGlkX29yZGVyaWQnKSk7DQogICAgJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCkuJzpyZXR1cm5fc3VjY2VzcycsJHRoaXMtPkxhbmcoJ2Vycm9yX2lwbl9pbnZhbGlkX29yZGVyaWQnKSk7DQogICAgJHRoaXMtPkZpbmlzaFRyYW5zYWN0aW9uKCk7DQogICAgcmV0dXJuOw0KfQ0KDQovLyBkZWNvZGUgU2FnZXBheSByZXNwb25zZQ0KJGNyeXB0S2V5ID0gJyc7DQppZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Byb2Rtb2RlJykgKSB7DQogICAkY3J5cHRLZXkgPSAkdGhpcy0+R2V0UHJlZmVyZW5jZSgncHJvZF90b2tlbicpOw0KfSBlbHNlIHsNCiAgICRjcnlwdEtleSA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd0ZXN0X3Rva2VuJyk7DQp9DQokY3J5cHQgPSAkX1JFUVVFU1RbJ2NyeXB0J107DQokZGVjcnlwdCA9ICR0aGlzLT5kZWNyeXB0QWVzKCRjcnlwdCwgJGNyeXB0S2V5KTsNCiRyZXNwb25zZSA9ICR0aGlzLT5xdWVyeVN0cmluZ1RvQXJyYXkoJGRlY3J5cHQpOw0KDQppZiAoISRkZWNyeXB0IHx8IGVtcHR5KCRyZXNwb25zZSkpIHsNCiAgICR0aGlzLT5TZXRFcnJvciggJHRoaXMtPkxhbmcoJ2Vycm9yX2ludmFsaWRfZGF0YScpICk7DQogICAkdGhpcy0+QXVkaXQoJycsICR0aGlzLT5HZXROYW1lKCksICR0aGlzLT5MYW5nKCdlcnJvcl9pbnZhbGlkX2RhdGEnKSk7DQp9DQoNCmlmKCAhaXNzZXQoJHJlc3BvbnNlWydWUFNUeElkJ10pICkgew0KICAgJHRoaXMtPlJlc3RvcmVTdGF0ZSgkcGFyYW1zWydteWN1c3RvbSddKTsNCiAgICR0aGlzLT5TZXRUcmFuc2FjdGlvbkVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl90cmFuc2FjdGlvbl9pZF9taXNzaW5nJykpOw0KICAgJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCkuJzpyZXR1cm5fc3VjY2VzcycsJHRoaXMtPkxhbmcoJ2Vycm9yX3RyYW5zYWN0aW9uX2lkX21pc3NpbmcnKSk7DQogICAkdGhpcy0+RmluaXNoVHJhbnNhY3Rpb24oKTsNCiAgIHJldHVybjsNCn0NCg0KJHRoaXMtPlJlc3RvcmVTdGF0ZSgkcGFyYW1zWydteWN1c3RvbSddKTsNCmlmKCAhJHRoaXMtPkNoZWNrSW5mbygpICkgew0KICAgJHRoaXMtPlNldFRyYW5zYWN0aW9uRXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3Jlc3RvcmluZ190cmFuc2FjdGlvbl9zdGF0ZScpKTsNCiAgICR0aGlzLT5GaW5pc2hUcmFuc2FjdGlvbigpOw0KICAgcmV0dXJuOw0KfQ0KDQoNCiRjb25maWcgPSAkZ0Ntcy0+R2V0Q29uZmlnKCk7DQokdG1wID0gJyc7DQokYW10ID0gJyc7DQokdHhuX2lkID0gJyc7DQppZiggaXNzZXQoJHJlc3BvbnNlWydWUFNUeElkJ10pICkgew0KICAgJHR4bl9pZCA9IHRyaW0oJHJlc3BvbnNlWydWUFNUeElkJ10pOw0KfQ0KDQppZiggaXNzZXQoJHJlc3BvbnNlWydBbW91bnQnXSkgKSB7DQogICAkYW10ID0gcHJlZ19yZXBsYWNlKCcvW14wLTkuXS8nLCAnJywgJHJlc3BvbnNlWydBbW91bnQnXSk7DQp9DQoNCmlmKCBlbXB0eSgkYW10KSApIHsNCiAgICR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLic6cmV0dXJuX3N1Y2Nlc3MnLCR0aGlzLT5sYW5nKCdlcnJvcl90cmFuc2FjdGlvbl9pbnZhbGlkX2Ftb3VudCcpKTsNCn0gZWxzZSBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWydhbW91bnQnXSkgJiYgJGFtdCAhPSAkdGhpcy0+X2RhdGFbJ2Ftb3VudCddICkgew0KICAgLy8gYW1vdW50IGlzIGludmFsaWQsIHRoYXQncyB3b25reQ0KICAgJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCkuJzpyZXR1cm5fc3VjY2VzcycsJHRoaXMtPmxhbmcoJ2Vycm9yX3RyYW5zYWN0aW9uX2ludmFsaWRfYW1vdW50JykpOw0KfQ0KDQoNCmlmKCAkcmVzcG9uc2VbJ1N0YXR1cyddIT0nT0snIHx8ICR0eG5faWQ9PScnICkgew0KICAgLy8gc3RyYW5nZSByZXNwb25zZSBwcm9ibGVtLg0KICAgJHRoaXMtPlNldFRyYW5zYWN0aW9uRXJyb3IoICR0aGlzLT5MYW5nKCdlcnJvcl90cmFuc2FjdGlvbl9wZHRfZmFpbGVkJykuJyAtIHN0YXR1cyA9ICcuJHJlc3BvbnNlWydTdGF0dXMnXS4nOiAnLg0KICAgICAgJHJlc3BvbnNlWydTdGF0dXNEZXRhaWwnXSApOw0KICAgJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCkuJzpyZXR1cm5fc3VjY2VzcycsJHRoaXMtPkxhbmcoJ2Vycm9yX3RyYW5zYWN0aW9uX3BkdF9mYWlsZWQnKSk7DQoNCn0gZWxzZSB7IC8vIFN0YXR1cz09J09LJyAmJiAkdHhuX2lkIT0nJw0KICAgJHRoaXMtPlNldFRyYW5zYWN0aW9uSWQoJHR4bl9pZCk7DQogICAkdGhpcy0+U2V0VHJhbnNhY3Rpb25BbW91bnQoJGFtdCk7DQogICAkdGhpcy0+QXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKS4nOnJldHVybl9zdWNjZXNzJywkdGhpcy0+TGFuZygnbXNnX3RyYW5zYWN0aW9uX3N1Y2Nlc3MnLCAkdHhuX2lkKSk7DQogICAkdGhpcy0+U2V0VHJhbnNhY3Rpb25TdGF0dXMoUEFZTUVOVF9TVEFUVVNfQVBQUk9WRUQpOw0KDQp9DQoNCiR0aGlzLT5GaW5pc2hUcmFuc2FjdGlvbigpOw0KDQoNCg==]]></data>
	</file>
	<file>
	  <filename>/ARCHIVE/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/ARCHIVE/action.ipn.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFBheXBhbEdhdGV3YXkgKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIwojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBwcm92aWRlIHRoZSBhYmlsaXR5IHRvIHByb2Nlc3MKIyAgUGF5bWVudHMgbWFkZSB1c2luZyB0aGUgRS1jb21tZXJjZSBzdWl0ZSB0aHJvdWdoIHRoZSBBdXRoTmV0IHBheW1lbnQKIyAgZ2F0ZXdheS4KIwojIE5vdGU6IFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IHN0YXJ0ZWQgYnkgVGVkIEt1bHAsIGJ1dCByZXdyaXR0ZW4KIyB1bmRlciB0aGUgc2FtZSBuYW1lIGJ5IFJvYmVydCBDYW1wYmVsbC4KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKaWYoICEkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZW5hYmxlX2lwbicsMCkgKSBleGl0OwoKcmVxdWlyZV9vbmNlKGRpcm5hbWUoZGlybmFtZShfX0ZJTEVfXykpLicvQ0dFeHRlbnNpb25zL2xpYi9odHRwL2NsYXNzLmh0dHAucGhwJyk7CgovLyBwcmVwYXJlIG91ciBwb3N0YmFjawokcG9zdGRhdGEgPSAkX1BPU1Q7CiRwb3N0ZGF0YVsnY21kJ10gPSAnX25vdGlmeS12YWxpZGF0ZSc7CiR1cmwgPSAnJzsKaWYoICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwcm9kbW9kZScsMCkgKSB7CiAgJHVybCA9IFNhZ2VwYXkyOjpQUk9EX1VSTDsKfQplbHNlIHsKICAkdXJsID0gU2FnZXBheTI6OlRFU1RfVVJMOwp9CgokaHR0cCA9IG5ldyBIdHRwOwokaHR0cC0+c2V0TWV0aG9kKCdQT1NUJyk7CiRodHRwLT5zZXRQYXJhbXMoJHBvc3RkYXRhKTsKJHRtcCA9ICRodHRwLT5leGVjdXRlKCR1cmwpOwokZXJyb3IgPSAkaHR0cC0+Z2V0RXJyb3IoKTsKCmlmKCBlbXB0eSgkdG1wKSApIHsKICAvLyBQT1NUIGZhaWxlZC4uLiBkbyBhbiBBdWRpdCBhbmQgZXhpdC4KICAkdGhpcy0+QXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKS4nOmlwbicsJHRoaXMtPkxhbmcoJ2Vycm9yX2lwbl92ZXJpZmljYXRpb25fZmFpbGVkJykuJyAtLSAnLiRlcnJvcik7CiAgZXhpdDsKIH0KCi8vIHdvb3QsIHRoZSB0cmFuc2FjdGlvbiBpcyB2ZXJpZmllZC4uLi4gd2Ugc2hvdWxkIGhhdmUgYW4gb3JkZXIgaWQsIGFuZCBhIHRyYW5zYWN0aW9uIGlkCi8vIGFuZCBhIGJ1bmNoIG9mIG90aGVyIHN0dWZmIHRoYXQgd2UgY2FuIGRlYWwgd2l0aC4KaWYoICFpc3NldCgkX1BPU1RbJ2N1c3RvbSddKSB8fCAkX1BPU1RbJ2N1c3RvbSddID09ICcnICkgewogICR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLic6aXBuJywkdGhpcy0+TGFuZygnZXJyb3JfaXBuX2ludmFsaWRfZGF0YScpKTsKICBleGl0Owp9CmVsc2UgaWYoICFpc3NldCgkX1BPU1RbJ3R4bl90eXBlJ10pICkgewogIC8vIHRoaXMgc2hvdWxkIG5ldmVyIGV2ZXIgaGFwcGVuLgogICR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLic6aXBuJywkdGhpcy0+TGFuZygnZXJyb3JfaXBuX2ludmFsaWRfZGF0YScpKTsKICBleGl0Owp9Cgokb3JkZXJfaWQgPSAoaW50KSRfUE9TVFsnY3VzdG9tJ107CiR0eG5faWQgPSAnJzsKaWYoIGlzc2V0KCRfUE9TVFsndHhuX2lkJ10pICkgewogICR0eG5faWQgPSB0cmltKCRfUE9TVFsndHhuX2lkJ10pOwp9CgokYW1vdW50ID0gJyc7CmlmKCBpc3NldCgkX1BPU1RbJ21jX2dyb3NzJ10pICkKICAkYW1vdW50ID0gJF9QT1NUWydtY19ncm9zcyddOwogZWxzZSBpZiggaXNzZXQoJF9QT1NUWydwYXltZW50X2dyb3NzJ10pICkKICAgJGFtb3VudCA9ICRfUE9TVFsncGF5bWVudF9ncm9zcyddOwogZWxzZSBpZiggaXNzZXQoJF9QT1NUWydwYXltZW50X2Ftb3VudCddKSApCiAgICRhbW91bnQgPSAkX1BPU1RbJ3BheW1lbnRfYW1vdW50J107CnN3aXRjaCggJF9QT1NUWyd0eG5fdHlwZSddICkgewogY2FzZSAnY2FydCc6CiAgIHN3aXRjaCggc3RydG9sb3dlcigkX1BPU1RbJ3BheW1lbnRfc3RhdHVzJ10pICkgewogICBjYXNlICdwcm9jZXNzZWQnOgogICBjYXNlICdjb21wbGV0ZWQnOgogICAgIC8vIGFsbCBnb29kLCB3ZSBjYW4gc2V0IHRoaXMgb3JkZXIgaW4gcHJvY2Vzcy4KICAgICAkdGhpcy0+UHJvY2Vzc0FzeW5jVHJhbnNhY3Rpb24oJG9yZGVyX2lkLCR0eG5faWQsUEFZTUVOVF9TVEFUVVNfQVBQUk9WRUQsJGFtb3VudCk7CiAgICAgYnJlYWs7CgogICBjYXNlICdmYWlsZWQnOgogICBjYXNlICdkZW5pZWQnOgogICAgIC8vIG5vdCBnb29kLi4uIG5vIGZ1bmRzLgogICAgICR0aGlzLT5Qcm9jZXNzQXN5bmNUcmFuc2FjdGlvbigkb3JkZXJfaWQsJHR4bl9pZCxQQVlNRU5UX1NUQVRVU19ERUNMSU5FRCwwKTsKICAgICBicmVhazsKCiAgIGNhc2UgJ2V4cGlyZWQnOgogICBjYXNlICdyZXZlcnNlZCc6CiAgIGNhc2UgJ3BlbmRpbmcnOgogICBjYXNlICd2b2lkZWQnOgogICAgIC8vIHVoLW9oIHNvbWV0aGluZyBoYXBwZW5lZC4KICAgICAkdGhpcy0+UHJvY2Vzc0FzeW5jVHJhbnNhY3Rpb24oJG9yZGVyX2lkLCR0eG5faWQsUEFZTUVOVF9TVEFUVVNfT1RIRVIsMCk7CiAgICAgYnJlYWs7CgogICB9CiAgIGJyZWFrOwoKIGNhc2UgJ3N1YnNjcl9zaWdudXAnOgogICAvLyBzaWxlbnRseSBpZ25vcmUuCiAgIGJyZWFrOwoKIGNhc2UgJ3N1YnNjcl9wYXltZW50JzoKICAgJHRyYW5zYWN0aW9uID0gbmV3IGNncGdiX2FzeW5jX3RyYW5zYWN0aW9uKCRvcmRlcl9pZCwkYW1vdW50KTsKICAgJHRyYW5zYWN0aW9uLT5zZXRfc3RhdHVzKFBBWU1FTlRfU1RBVFVTX0FQUFJPVkVEKTsKICAgJHRyYW5zYWN0aW9uLT5zZXRfaWQoJHR4bl9pZCk7CiAgIGlmKCBpc3NldCgkX1BPU1RbJ3N1YnNjcl9pZCddKSApIHsKICAgICAkdHJhbnNhY3Rpb24tPnNldF9vdGhlcl92YWwoJ1N1YnNjcmlwdGlvbiBJRCcsJF9QT1NUWydzdWJzY3JfaWQnXSk7CiAgIH0KICAgJHRoaXMtPnNlbmRfdHJhbnNhY3Rpb25fbm90aWZpY2F0aW9uKCR0cmFuc2FjdGlvbik7CiAgIGJyZWFrOwoKIGNhc2UgJ3N1YnNjcl9jYW5jZWwnOgogICAkdHJhbnNhY3Rpb24gPSBuZXcgY2dwZ2JfYXN5bmNfdHJhbnNhY3Rpb24oJG9yZGVyX2lkLCRfUE9TVFsnYW1vdW50MyddKTsKICAgJHRyYW5zYWN0aW9uLT5zZXRfc3RhdHVzKFBBWU1FTlRfU1RBVFVTX0NBTkNFTExFRCk7CiAgICR0cmFuc2FjdGlvbi0+c2V0X2lkKCR0eG5faWQpOwogICBpZiggaXNzZXQoJF9QT1NUWydzdWJzY3JfaWQnXSkgKSB7CiAgICAgJHRyYW5zYWN0aW9uLT5zZXRfb3RoZXJfdmFsKCRfUE9TVFsnc3Vic2NyX2lkJ10pOwogICB9CiAgICR0aGlzLT5zZW5kX3RyYW5zYWN0aW9uX25vdGlmaWNhdGlvbigkdHJhbnNhY3Rpb24pOwogICBicmVhazsKCiBkZWZhdWx0OgogICAkdGhpcy0+QXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKS4nOmlwbicsJ1VuaGFuZGxlZCB0cmFuc2FjdGlvbiB0eXBlOiAnLiRfUE9TVFsndHhuX3R5cGUnXSk7CiAgIGV4aXQ7CiB9CgovLyBub3RoaW5nIG1vcmUgdG8gZG8KJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCkuJzppcG4nLCdJUE4gVHJhbnNhY3Rpb24gJy4kX1BPU1RbJ3R4bl9pZCddLicgc3VjY2Vzc2Z1bC4gU3RhdHVzOiAnLiRfUE9TVFsncGF5bWVudF9zdGF0dXMnXS4nLCBhbW91bnQ6ICcuJGFtb3VudCk7CiMKIyBFT0YKIwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/ARCHIVE/action.return_cancel.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFBheXBhbEdhdGV3YXkgKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsIAojICAgICAgICAgKGNhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcpCiMKIyAgQW4gYWRkb24gbW9kdWxlIGZvciBDTVMgTWFkZSBTaW1wbGUgdG8gcHJvdmlkZSB0aGUgYWJpbGl0eSB0byBwcm9jZXNzCiMgIFBheW1lbnRzIG1hZGUgdXNpbmcgdGhlIEUtY29tbWVyY2Ugc3VpdGUgdGhyb3VnaCB0aGUgQXV0aE5ldCBwYXltZW50CiMgIGdhdGV3YXkuCiMKIyBOb3RlOiBUaGlzIG1vZHVsZSB3YXMgb3JpZ2luYWxseSBzdGFydGVkIGJ5IFRlZCBLdWxwLCBidXQgcmV3cml0dGVuCiMgdW5kZXIgdGhlIHNhbWUgbmFtZSBieSBSb2JlcnQgQ2FtcGJlbGwuCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMDUgYnkgVGVkIEt1bHAgKHdpc2h5QGNtc21hZGVzaW1wbGUub3JnKQojIFRoaXMgcHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHUEwsIHRoaXMgc29mdHdhcmUgaXMgZGlzdHJpYnV0ZWQKIyBhcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKIyBpbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCiMgTWFkZSBzaW1wbGUgdGhhdCBkb2VzIG5vdCBpbmRpY2F0ZSBjbGVhcmx5IGFuZCBvYnZpb3VzbHkgaW4gaXRzIGFkbWluIAojIHNlY3Rpb24gdGhhdCB0aGUgc2l0ZSB3YXMgYnVpbHQgd2l0aCBDTVMgTWFkZSBzaW1wbGUuCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojRU5EX0xJQ0VOU0UKaWYoICFpc3NldCgkZ0NtcykgKSBleGl0OwoKaWYoICFpc3NldCgkcGFyYW1zWydteWN1c3RvbSddKSApCiAgewogICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9taXNzaW5nX2N1c3RvbV92ZXJpZmllcicpKTsKICAgICR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLCR0aGlzLT5MYW5nKCdlcnJvcl9taXNzaW5nX2N1c3RvbV92ZXJpZmllcicpKTsKICB9CmVsc2UgaWYoICFpc3NldCgkcGFyYW1zWydvcmRlcl9pZCddKSApCiAgewogICAgJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl9pcG5faW52YWxpZF9vcmRlcmlkJykpOwogICAgJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJHRoaXMtPkxhbmcoJ2Vycm9yX2lwbl9pbnZhbGlkX29yZGVyaWQnKSk7CiAgfQoKJHRoaXMtPlJlc3RvcmVTdGF0ZSgkcGFyYW1zWydteWN1c3RvbSddKTsKJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCksJHRoaXMtPmxhbmcoJ21zZ190cmFuc2FjdGlvbl9jYW5jZWxsZWQnKSk7CiR0aGlzLT5TZXRDYW5jZWxsZWQoKTsKJHRoaXMtPkZpbmlzaFRyYW5zYWN0aW9uKCk7CgovLyBFT0YKPz4K]]></data>
	</file>
	<file>
	  <filename>/ARCHIVE/action.return_success.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKI0JFR0lOX0xJQ0VOU0UKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBNb2R1bGU6IFBheXBhbEdhdGV3YXkgKGMpIDIwMDkgYnkgUm9iZXJ0IENhbXBiZWxsCiMgICAgICAgICAoY2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZykKIwojICBBbiBhZGRvbiBtb2R1bGUgZm9yIENNUyBNYWRlIFNpbXBsZSB0byBwcm92aWRlIHRoZSBhYmlsaXR5IHRvIHByb2Nlc3MKIyAgUGF5bWVudHMgbWFkZSB1c2luZyB0aGUgRS1jb21tZXJjZSBzdWl0ZSB0aHJvdWdoIHRoZSBBdXRoTmV0IHBheW1lbnQKIyAgZ2F0ZXdheS4KIwojIE5vdGU6IFRoaXMgbW9kdWxlIHdhcyBvcmlnaW5hbGx5IHN0YXJ0ZWQgYnkgVGVkIEt1bHAsIGJ1dCByZXdyaXR0ZW4KIyB1bmRlciB0aGUgc2FtZSBuYW1lIGJ5IFJvYmVydCBDYW1wYmVsbC4KIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIENNUyAtIENNUyBNYWRlIFNpbXBsZSBpcyAoYykgMjAwNSBieSBUZWQgS3VscCAod2lzaHlAY21zbWFkZXNpbXBsZS5vcmcpCiMgVGhpcyBwcm9qZWN0J3MgaG9tZXBhZ2UgaXM6IGh0dHA6Ly93d3cuY21zbWFkZXNpbXBsZS5vcmcKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQojIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCiMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIEhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAojIGFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQojIGluIGFueSBOb24gR1BMIHZlcnNpb24gb2YgQ01TIE1hZGUgc2ltcGxlLCBvciBpbiBhbnkgdmVyc2lvbiBvZiBDTVMKIyBNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4KIyBzZWN0aW9uIHRoYXQgdGhlIHNpdGUgd2FzIGJ1aWx0IHdpdGggQ01TIE1hZGUgc2ltcGxlLgojCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKIyBPciByZWFkIGl0IG9ubGluZTogaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KI0VORF9MSUNFTlNFCmlmKCAhaXNzZXQoJGdDbXMpICkgZXhpdDsKCmlmKCAhaXNzZXQoJHBhcmFtc1snbXljdXN0b20nXSkgKQogIHsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ19jdXN0b21fdmVyaWZpZXInKSk7CiAgICAkdGhpcy0+QXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKS4nOnJldHVybl9zdWNjZXNzJywkdGhpcy0+TGFuZygnZXJyb3JfbWlzc2luZ19jdXN0b21fdmVyaWZpZXInKSk7CiAgfQplbHNlIGlmKCAhaXNzZXQoJHBhcmFtc1snb3JkZXJfaWQnXSkgKQogIHsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfaXBuX2ludmFsaWRfb3JkZXJpZCcpKTsKICAgICR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLic6cmV0dXJuX3N1Y2Nlc3MnLCR0aGlzLT5MYW5nKCdlcnJvcl9pcG5faW52YWxpZF9vcmRlcmlkJykpOwogIH0KCmlmKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnZW5hYmxlX2lwbicsMCkgKQogIHsKICAgIC8vIG5vdGhpbmcgbW9yZSB0byBkby4uLiBJUE4gd2lsbCBjb250YWluIHRoZSByZXN0IG9mIHRoZSBpbmZvLgogICAgJHRoaXMtPlJlc3RvcmVTdGF0ZSgkcGFyYW1zWydteWN1c3RvbSddKTsKICAgICR0aGlzLT5TZXRTdGF0dXMoUEFZTUVOVF9TVEFUVVNfTk9ORSk7CiAgICAkdGhpcy0+RmluaXNoVHJhbnNhY3Rpb24oKTsKICB9CmVsc2UgaWYoICFpc3NldCgkX1JFUVVFU1RbJ3R4J10pICYmICFpc3NldCgkX1JFUVVFU1RbJ3R4bl9pZCddKSApCiAgewogICAgJHRoaXMtPlJlc3RvcmVTdGF0ZSgkcGFyYW1zWydteWN1c3RvbSddKTsKICAgICR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfdHJhbnNhY3Rpb25faWRfbWlzc2luZycpKTsKICAgICR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLic6cmV0dXJuX3N1Y2Nlc3MnLCR0aGlzLT5MYW5nKCdlcnJvcl90cmFuc2FjdGlvbl9pZF9taXNzaW5nJykpOwogIH0KZWxzZQogIHsKICAgICR0aGlzLT5SZXN0b3JlU3RhdGUoJHBhcmFtc1snbXljdXN0b20nXSk7CiAgICBpZiggISR0aGlzLT5DaGVja0luZm8oKSApCiAgICAgIHsKCSR0aGlzLT5TZXRFcnJvcigkdGhpcy0+TGFuZygnZXJyb3JfcmVzdG9yaW5nX3RyYW5zYWN0aW9uX3N0YXRlJykpOwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKCS8vIHdlIGdvdCBhIHZhbGlkIHJlZGlyZWN0IGZyb20gcGF5cGFsLgoJJHVybCA9ICcnOwoJJHRva2VuID0gJyc7CglpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Byb2Rtb2RlJywwKSApCgkgIHsKCSAgICAkdXJsID0gU2FnZXBheTI6OlBST0RfVVJMOwoJICAgICR0b2tlbiA9ICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdwcm9kX3Rva2VuJyk7CgkgIH0KCWVsc2UKCSAgewoJICAgICR1cmwgPSBTYWdlcGF5Mjo6VEVTVF9VUkw7CgkgICAgJHRva2VuID0gJHRoaXMtPkdldFByZWZlcmVuY2UoJ3Rlc3RfdG9rZW4nKTsKCSAgfQoJJGNvbmZpZyA9ICRnQ21zLT5HZXRDb25maWcoKTsKCSR0bXAgPSAnJzsKCSRhbXQgPSAnJzsKCSR0eG5faWQgPSAnJzsKCSRjdXJyZW5jeSA9ICcnOwoJJHN0YXQgPSAkX1JFUVVFU1RbJ3N0J107CgkkdHhuX2lkID0gJyc7CglpZiggaXNzZXQoJF9SRVFVRVNUWyd0eCddKSApCgkgIHsKCSAgICAkdHhuX2lkID0gdHJpbSgkX1JFUVVFU1RbJ3R4J10pOwoJICB9CgllbHNlIGlmKCBpc3NldCgkX1JFUVVFU1RbJ3R4bl9pZCddKSApCgkgIHsKCSAgICAkdHhuX2lkID0gdHJpbSgkX1JFUVVFU1RbJ3R4bl9pZCddKTsKCSAgfQoKCWlmKCBpc3NldCgkX1JFUVVFU1RbJ2FtdCddKSApCgkgIHsKCSAgICAkYW10ID0gJF9SRVFVRVNUWydhbXQnXTsKCSAgfQoJZWxzZSBpZiggaXNzZXQoJF9SRVFVRVNUWydtY19ncm9zcyddKSApCgkgIHsKCSAgICAkYW10ID0gJF9SRVFVRVNUWydtY19ncm9zcyddOwoJICB9CgoJaWYoIGVtcHR5KCRhbXQpICkKCSAgewoJICAgICR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLic6cmV0dXJuX3N1Y2Nlc3MnLCR0aGlzLT5sYW5nKCdlcnJvcl90cmFuc2FjdGlvbl9pbnZhbGlkX2Ftb3VudCcpKTsKCSAgfQoJZWxzZSBpZiggaXNzZXQoJHRoaXMtPl9kYXRhWydhbW91bnQnXSkgJiYgJGFtdCAhPSAkdGhpcy0+X2RhdGFbJ2Ftb3VudCddICkKCSAgewoJICAgIC8vIGFtb3VudCBpcyBpbnZhbGlkLCB0aGF0J3Mgd29ua3kKCSAgICAkdGhpcy0+QXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKS4nOnJldHVybl9zdWNjZXNzJywkdGhpcy0+bGFuZygnZXJyb3JfdHJhbnNhY3Rpb25faW52YWxpZF9hbW91bnQnKSk7CgkgIH0KCglpZiggaXNzZXQoJF9SRVFVRVNUWydjYyddKSApCgkgIHsKCSAgICAkY3VycmVuY3kgPSAkX1JFUVVFU1RbJ2NjJ107CgkgIH0KCWVsc2UgaWYoIGlzc2V0KCRfUkVRVUVTVFsnbWNfY3VycmVuY3knXSkgKQoJICB7CgkgICAgJGN1cnJlbmN5ID0gJF9SRVFVRVNUWydtY19jdXJyZW5jeSddOwoJICB9CgoJaWYoIGVtcHR5KCRjdXJyZW5jeSkgKQoJICB7CgkgICAgJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCkuJzpyZXR1cm5fc3VjY2VzcycsJHRoaXMtPmxhbmcoJ2Vycm9yX3RyYW5zYWN0aW9uX2ludmFsaWRfY3VycmVuY3knKSk7CgkgIH0KCWVsc2UgaWYoICRjdXJyZW5jeSAhPSBjZ19lY29tbTo6Z2V0X2N1cnJlbmN5X2NvZGUoKSApCgkgIHsKCSAgICAkdGhpcy0+QXVkaXQoJycsJHRoaXMtPkdldE5hbWUoKS4nOnJldHVybl9zdWNjZXNzJywkdGhpcy0+bGFuZygnZXJyb3JfdHJhbnNhY3Rpb25faW52YWxpZF9jdXJyZW5jeScpKTsKCSAgfQoKCSR0aGlzLT5TZXRUcmFuc2FjdGlvbklkKCR0eG5faWQpOwoJJHRoaXMtPlNldFRyYW5zYWN0aW9uQW1vdW50KCRhbXQpOwoJJHRoaXMtPlNldFN0YXR1cyhQQVlNRU5UX1NUQVRVU19QRU5ESU5HKTsKCglpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ2VuYWJsZV9pcG4nKSApCgkgIHsKCSAgICAkdGhpcy0+U2V0U3RhdHVzKFBBWU1FTlRfU1RBVFVTX05PTkUpOwoJICAgICR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLic6cmV0dXJuX3N1Y2Nlc3MnLCR0aGlzLT5MYW5nKCdtc2dfdHJhbnNhY3Rpb25fd2FpdGluZ2lwbicsJHR4bl9pZCwkdGhpcy0+X2RhdGFbJ2ludm9pY2UnXSkpOwoJICAgICR0aGlzLT5GaW5pc2hUcmFuc2FjdGlvbigpOwoJICAgIHJldHVybjsKCSAgfQoJZWxzZSBpZiggZW1wdHkoJHRva2VuKSB8fAoJICAgIChpc3NldCgkY29uZmlnWydwYXlwYWxfc2tpcF9wZHQnXSkgJiYgJGNvbmZpZ1sncGF5cGFsX3NraXBfcGR0J10gPT0gMSkgKQoJICB7CgkgICAgLy8gc2tpcCB0aGUgcGR0IHN0dWZmLgoJICAgICR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLic6cmV0dXJuX3N1Y2Nlc3MnLCR0aGlzLT5MYW5nKCdtc2dfdHJhbnNhY3Rpb25fc3VjY2Vzc19ub3BkdCcsJHR4bl9pZCkpOwoJICAgICR0aGlzLT5TZXRTdGF0dXMoUEFZTUVOVF9TVEFUVVNfQVBQUk9WRUQpOwoJICAgICR0aGlzLT5GaW5pc2hUcmFuc2FjdGlvbigpOwoJICAgIHJldHVybjsKCSAgfQoKCS8vIElQTiBpcyBkaXNhYmxlZCwgYW5kIHdlIGNhbiBkbyBQRFQKCSRwb3N0ZGF0YSA9IGFycmF5KCk7CgkkcG9zdGRhdGFbJ3R4J10gPSAkdHhuX2lkOwoJJHBvc3RkYXRhWydhdCddID0gJHRva2VuOwoJJHBvc3RkYXRhWydjbWQnXSA9ICdfbm90aWZ5LXN5bmNoJzsKCSR0bXAgPSAkdGhpcy0+aHR0cF9wb3N0KCR1cmwsJHBvc3RkYXRhKTsKCglpZiggZW1wdHkoJHRtcCkgJiYgIWVtcHR5KCR0b2tlbikgKQoJICB7CgkgICAgLy8gcGR0IGZhaWxlZC4KCSAgICAkdGhpcy0+U2V0RXJyb3IoJHRoaXMtPkxhbmcoJ2Vycm9yX3JldHJpZXZpbmdfdHJhbnNhY3Rpb25fZGF0YScpKTsKCSAgfQoJZWxzZSBpZiggIWVtcHR5KCR0b2tlbikgKQoJICB7CgoJICAgICR0bXAyID0gZXhwbG9kZSgiXG4iLCR0bXApOwoJICAgICRyZXN1bHQgPSBhcnJheSgpOwoJICAgIGZvciggJGkgPSAwOyAkaSA8IGNvdW50KCR0bXAyKTsgJGkrKyApCgkgICAgICB7CgkJJHN0ciA9IHRyaW0oJHRtcDJbJGldKTsKCQlpZiggZW1wdHkoJHN0cikgKSBjb250aW51ZTsKCQlpZiggJGkgPT0gMCApCgkJICB7CgkJICAgICRyZXN1bHRbJ1NUQVRVUyddID0gJHN0cjsKCQkgIH0KCQllbHNlCgkJICB7CgkJICAgIGlmKCBzdHJzdHIoJHN0ciwnPScpICE9PSBGQUxTRSApCgkJICAgICAgewoJCQlsaXN0KCRrLCR2KSA9IGV4cGxvZGUoJz0nLCRzdHIsMik7CgkJCSRyZXN1bHRbJGtdID0gJHY7CgkJICAgICAgfQoJCSAgfQoJICAgICAgfQoKCSAgICBpZiggJHJlc3VsdFsnU1RBVFVTJ10gIT0gJ1NVQ0NFU1MnIHx8ICFpc3NldCgkcmVzdWx0Wyd0eG5faWQnXSkgKQoJICAgICAgewoJCS8vIHN0cmFuZ2UgcGR0IHByb2JsZW0uCgkJJHRoaXMtPlNldEVycm9yKCR0aGlzLT5MYW5nKCdlcnJvcl90cmFuc2FjdGlvbl9wZHRfZmFpbGVkJykuJyAtIHN0YXR1cyA9ICcuJHJlc3VsdFsnU1RBVFVTJ10pOwoJCSR0aGlzLT5BdWRpdCgnJywkdGhpcy0+R2V0TmFtZSgpLic6cmV0dXJuX3N1Y2Nlc3MnLCR0aGlzLT5MYW5nKCdlcnJvcl90cmFuc2FjdGlvbl9wZHRfZmFpbGVkJykpOwoJICAgICAgfQoJICAgIGVsc2UKCSAgICAgIHsKCQkkdGhpcy0+U2V0VHJhbnNhY3Rpb25JZCgkdHhuX2lkKTsKCQlpZiggJHRoaXMtPkdldFByZWZlcmVuY2UoJ2VuYWJsZV9pcG4nLDApICkKCQkgIHsKCQkgICAgJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCkuJzpyZXR1cm5fc3VjY2VzcycsJHRoaXMtPkxhbmcoJ21zZ190cmFuc2FjdGlvbl93YWl0aW5naXBuJywkcmVzdWx0Wyd0eG5faWQnXSwkdGhpcy0+X2RhdGFbJ2ludm9pY2UnXSkpOwoJCSAgICAkdGhpcy0+U2V0U3RhdHVzKFBBWU1FTlRfU1RBVFVTX1BFTkRJTkcpOwoJCSAgfQoJCWVsc2UKCQkgIHsKCQkgICAgJHRoaXMtPkF1ZGl0KCcnLCR0aGlzLT5HZXROYW1lKCkuJzpyZXR1cm5fc3VjY2VzcycsJHRoaXMtPkxhbmcoJ21zZ190cmFuc2FjdGlvbl9zdWNjZXNzJywkcmVzdWx0Wyd0eG5faWQnXSkpOwoJCSAgICAkdGhpcy0+U2V0U3RhdHVzKFBBWU1FTlRfU1RBVFVTX0FQUFJPVkVEKTsKCQkgIH0KCSAgICAgIH0KCSAgfQogICAgICB9CiAgfQoKJHRoaXMtPkZpbmlzaFRyYW5zYWN0aW9uKCk7CgovLyBFT0YKPz4K]]></data>
	</file>
	<file>
	  <filename>/ARCHIVE/changelog.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHVsPgogPGxpPlZlcnNpb24gMi4wIC0gY2FsZ3V5MTAwMAogICA8dWw+CiAgICAgPGxpPk5vdyBiYXNlZCBvbiBDR1BheW1lbnRHYXRld2F5IEJhc2U8L2xpPgogICAgIDxsaT5BZGRzIHRoZSBhYmlsaXR5IHRvIGRvIFBEVCBkYXRhIHRyYW5zZmVyczwvbGk+CiAgICAgPGxpPk51bWVyb3VzIGJ1ZyBmaXhlcy48L2xpPgogICA8L3VsPgogPC9saT4KCiA8bGk+VmVyc2lvbiAyLjEgLSBBdWd1c3QgMjAwOSAtIGNhbGd1eTEwMDAKICAgPHVsPgogICAgIDxsaT5BZGRzIHBheXBhbCBJUE4gc3VwcG9ydC48L2xpPgogICAgIDxsaT5NdW5nZSBhbGwgbGluZSBpdGVtcyBpbnRvIG9uZSwgaWYgdGhlcmUgaXMgYSBuZWdhdGl2ZSBsaW5lIGl0ZW0uPC9saT4KICAgICA8bGk+Rm9yY2UgaW5jcmVtZW50YWwgaXRlbSBudW1iZXJzLjwvbGk+CiAgIDwvdWw+CiA8L2xpPgoKIDxsaT5WZXJzaW9uIDIuMS4yIC0gT2N0b2JlciAyMDA5IC0gY2FsZ3V5MTAwMAogICA8dWw+CiAgICAgPGxpPkFkZCBhYmlsaXR5IHRvIGRpc2FibGUgUERUIGlmIHRoZSBpZGVudGl0eSB0b2tlbiBpcyBlbXB0eS48L2xpPgogICAgIDxsaT5Db21wYXRpYmlsaXR5IHdpdGggbmV3IENHUGF5bWVudEdhdGV3YXlCYXNlPC9saT4KICAgPC91bD4KIDwvbGk+CgogPGxpPlZlcnNpb24gMi4xLjMgLSBPY3RvYmVyIDIwMDkgLSBjYWxndXkxMDAwCiAgIDx1bD4KICAgICA8bGk+QWRkIGNoZWNrIGZvciBtY3J5cHQgZnVuY3Rpb25hbGl0eS48L2xpPgogICA8L3VsPgogPC9saT4KCiA8bGk+VmVyc2lvbiAyLjEuNCAtIE5vdmVtYmVyIDIwMDkgLSBjYWxndXkxMDAwCiAgIDx1bD4KICAgICA8bGk+VXNlIG51bWJlcl9mb3JtYXQgaW5zdGVhZCBvZiBzcHJpbnRmKCclLjJmJywuLi4pOyB0byBob3BlZnVsbHkgZml4IGlzc3VlcyB3aXRoIGRpZmZlcmVudCBsb2NhbGVzLjwvbGk+CiAgIDwvdWw+CiA8L2xpPgogPGxpPlZlcnNpb24gMi4xLjQgLSBBcHJpbCwgMjAxMCAtIGNhbGd1eTEwMDAKICAgPHVsPgogICAgIDxsaT5BZGRzIHRoZSBTZXRCaWxsaW5nQWRkcmVzcyBtZXRob2QuPC9saT4KICAgPC91bD4KIDwvbGk+CiA8bGk+VmVyc2lvbiAyLjEuNSAtIEp1bHksIDIwMTAgLSBjYWxndXkxMDAwCiAgIDx1bD4KICAgICA8bGk+Tm93IHdvcmtzIHdpdGggQ0dQYXltZW50R2F0ZXdheUJhc2UgMS4wLjc8L2xpPgogICA8L3VsPgogPC9saT4gIAogPGxpPlZlcnNpb24gMi4xLjkgLSBBdWd1c3QsIDIwMTAgLSBjYWxndXkxMDAwCiAgIDx1bD4KICAgICA8bGk+Tm93IHdvcmtzIHdpdGggQ0dQYXltZW50R2F0ZXdheUJhc2UgMS4wLjg8L2xpPgogICAgIDxsaT5Ob3cgaGFuZGxlcyBzdWJzY3JpcHRpb25zICh3aGVuIElQTiBpcyBlbmFibGVkKTwvbGk+CiAgICAgPGxpPkNvbXBsZXRlIHJld3JpdGUgdG8gdGhlIElQTiBldmVudCBoYW5kbGluZy48L2xpPgogICA8L3VsPgogPC9saT4gCiA8bGk+VmVyc2lvbiAyLjIgLSBTZXB0ZW1iZXIsIDIwMTAgLSBjYWxndXkxMDAwCiAgPHVsPgogICAgIDxsaT5SZXdyaXR0ZW4gYWRtaW4gaW50ZXJmYWNlLCBzYW5kYm94IHNldHRpbmdzIGFuZCBwcm9kdWN0aW9uIHNldHRpbmdzIGNhbiBiZSBrZXB0IHNlcGVyYXRlbHkuPC9saT4KICAgICA8bGk+TWlub3IgZml4ZXMgd3J0IHdlaWdodCB1bmludHMgbm90IGJlaW5nIHNwZWNpZmllZC48L2xpPgogICAgIDxsaT5NaW5vciBmaXhlcyB0byBJUE4gc3R1ZmYuPC9saT4KICA8L3VsPgogPC9saT4KIDxsaT5WZXJzaW9uIDIuMi4xIC0gT2N0b2JlciwgMjAxMCAtIGNhbGd1eTEwMDAKICAgPHVsPgogICAgIDxsaT5GaXhlZCBhbiBpbXBvcnRhbnQgYnVnIGluIHRyYW5zbGF0aW5nIGl0ZW0gZGVzY3JpcHRpb25zLjwvbGk+CiAgIDwvdWw+IAogPC9saT4KIDxsaT5WZXJzaW9uIDIuMi4zIC0gRmVicnVhcnksIDIwMTEgLSBjYWxndXkxMDAwCiAgIDx1bD4KICAgICA8bGk+Rml4ZXMgaXNzdWVzIHdpdGggY2hhbmdlZCBwYXJhbWV0ZXJzIHRyYW5zbWl0dGVkIGZyb20gUGF5cGFsLjwvbGk+CiAgIDwvdWw+IAogPC9saT4KIDxsaT5WZXJzaW9uIDIuMy4zIC0gTWFyY2gsIDIwMTEgLSBjYWxndXkxMDAwCiAgIDx1bD4KICAgICA8bGk+Rml4ZXMgdG8gc3Vic2NyaXB0aW9uIHN0dWZmLjwvbGk+CiAgIDwvdWw+CiA8L2xpPgogPGxpPlZlcnNpb24gMi4zLjExIC0gQXByaWwsIDIwMTMgLSBjYWxndXkxMDAwCiAgPHA+PHN0cm9uZz5OT1RFOiBQSFAgNS4zLnggSVMgUkVRVUlSRUQuPC9zdHJvbmc+PC9wPgogIDx1bD4KICAgIDxsaT5Db2RlIG9wdGltaXphdGlvbi48L2xpPgogICAgPGxpPkZpeGVkIHRvIHdvcmsgd2l0aCBuZXdlciBwcm9kdWN0cyBhbmQgZWNvbW1lcmNlIHN1aXRlLjwvbGk+CiAgPC91bD4KIDwvbGk+CjwvdWw+Cg==]]></data>
	</file>
	<file>
	  <filename>/ARCHIVE/help.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPldoYXQgZG9lcyBpdCBkbz88L2gzPgogIDxwPlRoaXMgbW9kdWxlIGlzIHVzZWQgYnkgdGhlIE9yZGVycyBtb2R1bGUgdG8gY29tcGxldGUgcHVyY2hhc2VzIHVzaW5nIFBheXBhbHMgV2Vic2l0ZSBQYXltZW50IFN0YW5kYXJkIG1lY2hhbmlzbS4gIFRoZSBtb2R1bGUgdXNlcyB0aGUgUERUIG1ldGhvZCBmb3IgY29tcGxldGluZyBhIHB1cmNoYXNlLCBhbmQgb3B0aW9uYWxseSBzdXBwb3J0cyBJUE4gZnVuY3Rpb25hbGl0eS4gIEFmdGVyIGEgc3VjY2Vzc2Z1bCBjaGVja291dCwgdXNlcnMgd2lsbCByZWRpcmVjdCBiYWNrIHRvIHRoZSBPcmRlcnMgbW9kdWxlIHRvIHNob3cgdGhlIGNoZWNrb3V0IHJlY2VpcHQgcGFnZS4gIFNlZSA8YSBocmVmPSJodHRwOi8vY2FsZ3V5MTAwMC5jb20vQmxvZ3MvOC82MC9jbXNtcy1xdWljay1lLWNvbW1lcmNlLWhvdy10by5odG1sIj5odHRwOi8vY2FsZ3V5MTAwMC5jb20vQmxvZ3MvOC82MC9jbXNtcy1xdWljay1lLWNvbW1lcmNlLWhvdy10by5odG1sPC9hPiAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHNldHVwIHRoZSBDYXJ0LCBPcmRlcnMgYW5kIG90aGVyIGFzc29jaWF0ZWQgbW9kdWxlcy48L3A+CjxoMz5Ib3cgRG8gSSB1c2UgSXQ8L2gzPgo8cD5GaXJzdCB5b3Ugc2hvdWxkIGVuYWJsZSBQRFQgaW4geW91ciBwYXlwYWwgYnVzaW5lc3MgYWNjb3VudCwgYW5kIGtlZXAgdHJhY2sgb2YgdGhlIFBEVCBpZGVudGl0eSB0b2tlbiBhcyBzdXBwbGllZCBieSBwYXlwYWwuPC9wPgo8cD5Gb3IgSVBOIHN1cHBvcnQgeW91IHdpbGwgbmVlZCB0byBlbmFibGUgUERUIGluIHlvdXIgcGF5cGFsIGJ1c2luZXNzIGFjb2NvdW50LCBhbmQgZW50ZXIgYSByZXR1cm4gVVJMLCB0aG91Z2ggdGhpcyB1cmwgaXMgb3ZlcnJpZGRlbiBieSB0aGlzIG1vZHVsZSBhbmQgY2FuIGJlIGlnbm9yZWQuPC9wPgo8cD5UaGlyZGx5LCB5b3Ugc2hvdWxkIGFkanVzdCB0aGUgbGFuZ3VhZ2Ugc2V0dGluZ3MgaW4geW91ciBwYXlwYWwgYnVzaW5lc3MgYWNjb3VudCB0byBlbnN1cmUgdGhleSBhcmUgc2V0IHRvIHV0Zi04LjwvcD4KPHA+TmV4dCwgb25jZSBhbGwgb2YgdGhlIGRlcGVuZGVuY2llcyBhcmUgaW5zdGFsbGVkLCB5b3Ugc2ltcGx5IGluc3RhbGwgdGhlIG1vZHVsZS4gIHRoZW4gY29uZmlndXJlIHRoZSBtb2R1bGUgUGF5cGFsR2F0ZWF5IGNvbnRyb2wgcGFuZWwgaW5zaWRlIHRoZSBDTVMgTWFkZSBTaW1wbGUgYWRtaW4gY29uc29sZS4gIFNwZWNpZnkgdGhlIHVybCB0byB1c2UgZm9yIHBheXBhbCB0cmFuc2FjdGlvbnMgKHRoZSB0ZXN0IHVybCBpcyBwcm92aWRlZCBieSBkZWZhdWx0KSwgeW91ciBwYXlwYWwgYXNzb2NpYXRlZCBlbWFpbCBhZGRyZXNzLCBhbmQgdGhlIFBEVCBpZGVudGl0eSB0b2tlbiBhcyBkZXNjcmliZWQgYWJvdmUuPC9wPgo8cD5UaGlyZGx5LCBuYXZpZ2F0ZSB0byB0aGUgcHJlZmVyZW5jZXMgdGFiIGluIHRoZSBPcmRlcnMgbW9kdWxlIGFuZCBzZWxlY3QgdGhpcyBtb2R1bGUgYXMgeW91ciBjaG9zZW4gcGF5bWVudCBnYXRld2F5LjwvcD4KPGgzPkxpbWl0YXRpb25zPC9oMz4KPHA+VGhlIFdlYnNpdGUgUGF5bWVudCBTdGFuZGFyZCBBUEkgZnJvbSBQYXlwYWwgaXMgcmF0aGVyIGxpbWl0ZWQgaW4gaXRzIGZ1bmN0aW9uYWxpdHksIHRoZXJlZm9yZSBhIG51bWJlciBvZiBzdGVwcyBoYXZlIGJlZW4gdGFrZW4gdG8gb3ZlcmNvbWUgYXMgbXVjaCBhcyBwb3NzaWJsZSB0aGVzZSBsaW1pdGF0aW9uczo8L3A+Cjx1bD4KPGxpPlRheGVzOgo8cD5BdCB0aGUgdGltZSBvZiB3cml0aW5nLCB0aGUgV1BTIHN0YW5kYXJkIGRpZCBub3Qgc3VwcG9ydCBtdWx0aXBsZSB0YXhlcywgYnV0IHRoZSBPcmRlcnMgbW9kdWxlIGRvZXMsIFRoZXJlZm9yZSBhbGwgdGF4ZXMgYXJlIGVudGVyZWQgYXMgbGluZSBpdGVtcy48L3A+CjwvbGk+Cgo8bGk+U2hpcHBpbmc6CjxwPkF0IHRoZSB0aW1lIG9mIHdyaXRpbmcsIHRoZSBXUFMgc3RhbmRhcmQgZGlkIG5vdCBzdXBwb3J0IHNoaXBwaW5nIGNvc3RzLCBvciBkZXNjcmlwdGlvbnMgZm9yIHNoaXBwaW5nLCBob3dldmVyIHRoZSBPcmRlcnMgbW9kdWxlIGlzIG1vdmluZyBpbiB0aGF0IGRpcmVjdGlvbiwgVGhlcmVmb3JlIGFsbCBzaGlwcGluZyBjb3N0cyBhcmUgZW50ZXJlZCBhcyBsaW5lIGl0ZW1zLjwvcD4KPC9saT4KCjxsaT5EaXNjb3VudHMgLyBOZWdhdGl2ZSBWYWx1ZXM6CjxwPkF0IHRoZSB0aW1lIG9mIHdyaXRpbmcsIHRoZSBXUFMgc3RhbmRhcmQgZGlkIG5vdCBzdXBwb3J0IG5lZ2F0aXZlIGFtb3VudCB2YWx1ZXMgZm9yIGl0ZW1zIHN1Y2ggYXMgZGlzY291bnRzLiAgSG93ZXZlciwgdGhlIFByb21vdGlvbnMgbW9kdWxlIGRvZXMuICBUaGVyZWZvcmUgaWYgYSBuZWdhdGl2ZSB2YWx1ZSBpcyBkZXRlY3RlZCBpbiB0aGUgaXRlbXMgcHJvdmlkZWQgdG8gdGhpcyBtb2R1bGUsIHRoZSBtb2R1bGUgd2lsbCBtdW5nZSB0aGUgZW50aXJlIG9yZGVyIGludG8gb25lIGxpbmUgaXRlbSBvZiB0aGUgYXBwcm9wcmlhdGUgYW1vdW50LjwvcD4KPC9saT4KCjxsaT5JdGVtIE51bWJlcnM6CjxwPlBheXBhbCBzZWVtcyB0byByZXF1aXJlIGl0ZW0gbnVtYmVycyBmb3IgYWxsIGxpbmUgaXRlbXMuICBBbmQgc2luY2UgdGF4IGFuZCBzaGlwcGluZyBsaW5lIGl0ZW1zIGRvbnQgbmVjZXNzYXJpbHkgaGF2ZSBhIHByb2R1Y3QgaWQsIGFsbCBpdGVtIG51bWJlcnMgc3RhcnQgZnJvbSAxIGFuZCBhcmUgbGluZWFybHkgaW5jcmVtZW50ZWQuPC9wPgo8L2xpPgoKPGxpPkNoYXJnZWJhY2tzL1JldmVyc2FscyBldGMuCjxwPkFsdGhvdWdoIHRoZSBwYXlwYWwgSVBOIHByb3RvY29sIGlzIGNhcGFibGUgb2YgaGFuZGxpbmcgdGhzZSB0eXBlcyBvZiB0cmFuc2FjdGlvbnMsIHRoZSBPcmRlcnMgbW9kdWxlIGF0IHRoZSB0aW1lIG9mIHdyaXRpbmcgaXMgbm90LiAgVGhlcmVmb3JlIG1hbnkgb2YgdGhlc2UgYXJlIGlnbm9yZWQsIG9yIHRoZSBvcmRlciB3aWxsIGJlIGFkanVzdGVkIHRvIGhhdmUgYW4gRVJST1Igc3RhdHVzLjwvcD4KPC9saT4KCjwvdWw+CjxoMz5TdXBwb3J0PC9oMz4KPHA+VGhpcyBtb2R1bGUgZG9lcyBub3QgaW5jbHVkZSBjb21tZXJjaWFsIHN1cHBvcnQuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZXNvdXJjZXMgYXZhaWxhYmxlIHRvIGhlbHAgeW91IHdpdGggaXQ6PC9wPgo8dWw+CjxsaT5Gb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgbW9kdWxlLCBGQVFzLCBvciB0byBmaWxlIGEgQnVnIFJlcG9ydCBvciBidXkgY29tbWVyY2lhbCBzdXBwb3J0LCBwbGVhc2UgdmlzaXQgdGhlIGNtcyBkZXZlbG9wbWVudCBmb3JnZSBhdCA8YSBocmVmPSJodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnIj5kZXYuY21zbWFkZXNpbXBsZS5vcmc8L2E+LjwvbGk+CjxsaT5BZGRpdGlvbmFsIGRpc2N1c3Npb24gb2YgdGhpcyBtb2R1bGUgbWF5IGFsc28gYmUgZm91bmQgaW4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZyI+Q01TIE1hZGUgU2ltcGxlIEZvcnVtczwvYT4uPC9saT4KPGxpPlRoZSBhdXRob3IsIGNhbGd1eTEwMDAgYWxsIGNhbiBvZnRlbiBiZSBmb3VuZCBpbiB0aGUgPGEgaHJlZj0iaXJjOi8vaXJjLmZyZWVub2RlLm5ldC8jY21zIj5DTVMgSVJDIENoYW5uZWw8L2E+LjwvbGk+CjxsaT5MYXN0bHksIHlvdSBtYXkgaGF2ZSBzb21lIHN1Y2Nlc3MgZW1haWxpbmcgdGhlIGF1dGhvcihzKSBkaXJlY3RseS48L2xpPiAgCjwvdWw+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDA4LCBSb2JlcnQgQ2FtcGJlbCA8YSBocmVmPSJtYWlsdG86Y2FsZ3V5MTAwMEBjbXNtYWRlc2ltcGxlLm9yZyI+Jmx0O2NhbGd1eTEwMDBAY21zbWFkZXNpbXBsZS5vcmcmZ3Q7PC9hPi4gQWxsIFJpZ2h0cyBBcmUgUmVzZXJ2ZWQuPC9wPgo8cD5UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQppdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQp0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgooYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLjwvcD4KPHA+SG93ZXZlciwgYXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMLCB0aGlzIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkCmFzIGFuIGFkZG9uIG1vZHVsZSB0byBDTVMgTWFkZSBTaW1wbGUuICBZb3UgbWF5IG5vdCB1c2UgdGhpcyBzb2Z0d2FyZQppbiBhbnkgTm9uIEdQTCB2ZXJzaW9uIG9mIENNUyBNYWRlIHNpbXBsZSwgb3IgaW4gYW55IHZlcnNpb24gb2YgQ01TCk1hZGUgc2ltcGxlIHRoYXQgZG9lcyBub3QgaW5kaWNhdGUgY2xlYXJseSBhbmQgb2J2aW91c2x5IGluIGl0cyBhZG1pbiAKc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPg==]]></data>
	</file>
	<file>
	  <filename>/doc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/doc/COPYING</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[ICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQogICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gMywgMjkgSnVuZSAyMDA3CgogQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiA8aHR0cDovL2ZzZi5vcmcvPgogRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCiBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmVhbWJsZQoKICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcgpzb2Z0d2FyZSBhbmQgb3RoZXIga2luZHMgb2Ygd29ya3MuCgogIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhbmQgb3RoZXIgcHJhY3RpY2FsIHdvcmtzIGFyZSBkZXNpZ25lZAp0byB0YWtlIGF3YXkgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgdGhlIHdvcmtzLiAgQnkgY29udHJhc3QsCnRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvCnNoYXJlIGFuZCBjaGFuZ2UgYWxsIHZlcnNpb25zIG9mIGEgcHJvZ3JhbS0tdG8gbWFrZSBzdXJlIGl0IHJlbWFpbnMgZnJlZQpzb2Z0d2FyZSBmb3IgYWxsIGl0cyB1c2Vycy4gIFdlLCB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB1c2UgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3N0IG9mIG91ciBzb2Z0d2FyZTsgaXQgYXBwbGllcyBhbHNvIHRvCmFueSBvdGhlciB3b3JrIHJlbGVhc2VkIHRoaXMgd2F5IGJ5IGl0cyBhdXRob3JzLiAgWW91IGNhbiBhcHBseSBpdCB0bwp5b3VyIHByb2dyYW1zLCB0b28uCgogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QKcHJpY2UuICBPdXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZXMgYXJlIGRlc2lnbmVkIHRvIG1ha2Ugc3VyZSB0aGF0IHlvdQpoYXZlIHRoZSBmcmVlZG9tIHRvIGRpc3RyaWJ1dGUgY29waWVzIG9mIGZyZWUgc29mdHdhcmUgKGFuZCBjaGFyZ2UgZm9yCnRoZW0gaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQgaWYgeW91CndhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQgaW4gbmV3CmZyZWUgcHJvZ3JhbXMsIGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgoKICBUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIHByZXZlbnQgb3RoZXJzIGZyb20gZGVueWluZyB5b3UKdGhlc2UgcmlnaHRzIG9yIGFza2luZyB5b3UgdG8gc3VycmVuZGVyIHRoZSByaWdodHMuICBUaGVyZWZvcmUsIHlvdSBoYXZlCmNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZgp5b3UgbW9kaWZ5IGl0OiByZXNwb25zaWJpbGl0aWVzIHRvIHJlc3BlY3QgdGhlIGZyZWVkb20gb2Ygb3RoZXJzLgoKICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyCmdyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IHBhc3Mgb24gdG8gdGhlIHJlY2lwaWVudHMgdGhlIHNhbWUKZnJlZWRvbXMgdGhhdCB5b3UgcmVjZWl2ZWQuICBZb3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGV5LCB0b28sIHJlY2VpdmUKb3IgY2FuIGdldCB0aGUgc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkKa25vdyB0aGVpciByaWdodHMuCgogIERldmVsb3BlcnMgdGhhdCB1c2UgdGhlIEdOVSBHUEwgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczoKKDEpIGFzc2VydCBjb3B5cmlnaHQgb24gdGhlIHNvZnR3YXJlLCBhbmQgKDIpIG9mZmVyIHlvdSB0aGlzIExpY2Vuc2UKZ2l2aW5nIHlvdSBsZWdhbCBwZXJtaXNzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kL29yIG1vZGlmeSBpdC4KCiAgRm9yIHRoZSBkZXZlbG9wZXJzJyBhbmQgYXV0aG9ycycgcHJvdGVjdGlvbiwgdGhlIEdQTCBjbGVhcmx5IGV4cGxhaW5zCnRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZSBzb2Z0d2FyZS4gIEZvciBib3RoIHVzZXJzJyBhbmQKYXV0aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIGJlIG1hcmtlZCBhcwpjaGFuZ2VkLCBzbyB0aGF0IHRoZWlyIHByb2JsZW1zIHdpbGwgbm90IGJlIGF0dHJpYnV0ZWQgZXJyb25lb3VzbHkgdG8KYXV0aG9ycyBvZiBwcmV2aW91cyB2ZXJzaW9ucy4KCiAgU29tZSBkZXZpY2VzIGFyZSBkZXNpZ25lZCB0byBkZW55IHVzZXJzIGFjY2VzcyB0byBpbnN0YWxsIG9yIHJ1bgptb2RpZmllZCB2ZXJzaW9ucyBvZiB0aGUgc29mdHdhcmUgaW5zaWRlIHRoZW0sIGFsdGhvdWdoIHRoZSBtYW51ZmFjdHVyZXIKY2FuIGRvIHNvLiAgVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBhaW0gb2YKcHJvdGVjdGluZyB1c2VycycgZnJlZWRvbSB0byBjaGFuZ2UgdGhlIHNvZnR3YXJlLiAgVGhlIHN5c3RlbWF0aWMKcGF0dGVybiBvZiBzdWNoIGFidXNlIG9jY3VycyBpbiB0aGUgYXJlYSBvZiBwcm9kdWN0cyBmb3IgaW5kaXZpZHVhbHMgdG8KdXNlLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgaXQgaXMgbW9zdCB1bmFjY2VwdGFibGUuICBUaGVyZWZvcmUsIHdlCmhhdmUgZGVzaWduZWQgdGhpcyB2ZXJzaW9uIG9mIHRoZSBHUEwgdG8gcHJvaGliaXQgdGhlIHByYWN0aWNlIGZvciB0aG9zZQpwcm9kdWN0cy4gIElmIHN1Y2ggcHJvYmxlbXMgYXJpc2Ugc3Vic3RhbnRpYWxseSBpbiBvdGhlciBkb21haW5zLCB3ZQpzdGFuZCByZWFkeSB0byBleHRlbmQgdGhpcyBwcm92aXNpb24gdG8gdGhvc2UgZG9tYWlucyBpbiBmdXR1cmUgdmVyc2lvbnMKb2YgdGhlIEdQTCwgYXMgbmVlZGVkIHRvIHByb3RlY3QgdGhlIGZyZWVkb20gb2YgdXNlcnMuCgogIEZpbmFsbHksIGV2ZXJ5IHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuClN0YXRlcyBzaG91bGQgbm90IGFsbG93IHBhdGVudHMgdG8gcmVzdHJpY3QgZGV2ZWxvcG1lbnQgYW5kIHVzZSBvZgpzb2Z0d2FyZSBvbiBnZW5lcmFsLXB1cnBvc2UgY29tcHV0ZXJzLCBidXQgaW4gdGhvc2UgdGhhdCBkbywgd2Ugd2lzaCB0bwphdm9pZCB0aGUgc3BlY2lhbCBkYW5nZXIgdGhhdCBwYXRlbnRzIGFwcGxpZWQgdG8gYSBmcmVlIHByb2dyYW0gY291bGQKbWFrZSBpdCBlZmZlY3RpdmVseSBwcm9wcmlldGFyeS4gIFRvIHByZXZlbnQgdGhpcywgdGhlIEdQTCBhc3N1cmVzIHRoYXQKcGF0ZW50cyBjYW5ub3QgYmUgdXNlZCB0byByZW5kZXIgdGhlIHByb2dyYW0gbm9uLWZyZWUuCgogIFRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kCm1vZGlmaWNhdGlvbiBmb2xsb3cuCgogICAgICAgICAgICAgICAgICAgICAgIFRFUk1TIEFORCBDT05ESVRJT05TCgogIDAuIERlZmluaXRpb25zLgoKICAiVGhpcyBMaWNlbnNlIiByZWZlcnMgdG8gdmVyc2lvbiAzIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KCiAgIkNvcHlyaWdodCIgYWxzbyBtZWFucyBjb3B5cmlnaHQtbGlrZSBsYXdzIHRoYXQgYXBwbHkgdG8gb3RoZXIga2luZHMgb2YKd29ya3MsIHN1Y2ggYXMgc2VtaWNvbmR1Y3RvciBtYXNrcy4KCiAgIlRoZSBQcm9ncmFtIiByZWZlcnMgdG8gYW55IGNvcHlyaWdodGFibGUgd29yayBsaWNlbnNlZCB1bmRlciB0aGlzCkxpY2Vuc2UuICBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4gICJMaWNlbnNlZXMiIGFuZAoicmVjaXBpZW50cyIgbWF5IGJlIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMuCgogIFRvICJtb2RpZnkiIGEgd29yayBtZWFucyB0byBjb3B5IGZyb20gb3IgYWRhcHQgYWxsIG9yIHBhcnQgb2YgdGhlIHdvcmsKaW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQgcGVybWlzc2lvbiwgb3RoZXIgdGhhbiB0aGUgbWFraW5nIG9mIGFuCmV4YWN0IGNvcHkuICBUaGUgcmVzdWx0aW5nIHdvcmsgaXMgY2FsbGVkIGEgIm1vZGlmaWVkIHZlcnNpb24iIG9mIHRoZQplYXJsaWVyIHdvcmsgb3IgYSB3b3JrICJiYXNlZCBvbiIgdGhlIGVhcmxpZXIgd29yay4KCiAgQSAiY292ZXJlZCB3b3JrIiBtZWFucyBlaXRoZXIgdGhlIHVubW9kaWZpZWQgUHJvZ3JhbSBvciBhIHdvcmsgYmFzZWQKb24gdGhlIFByb2dyYW0uCgogIFRvICJwcm9wYWdhdGUiIGEgd29yayBtZWFucyB0byBkbyBhbnl0aGluZyB3aXRoIGl0IHRoYXQsIHdpdGhvdXQKcGVybWlzc2lvbiwgd291bGQgbWFrZSB5b3UgZGlyZWN0bHkgb3Igc2Vjb25kYXJpbHkgbGlhYmxlIGZvcgppbmZyaW5nZW1lbnQgdW5kZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGEKY29tcHV0ZXIgb3IgbW9kaWZ5aW5nIGEgcHJpdmF0ZSBjb3B5LiAgUHJvcGFnYXRpb24gaW5jbHVkZXMgY29weWluZywKZGlzdHJpYnV0aW9uICh3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uKSwgbWFraW5nIGF2YWlsYWJsZSB0byB0aGUKcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJpZXMgb3RoZXIgYWN0aXZpdGllcyBhcyB3ZWxsLgoKICBUbyAiY29udmV5IiBhIHdvcmsgbWVhbnMgYW55IGtpbmQgb2YgcHJvcGFnYXRpb24gdGhhdCBlbmFibGVzIG90aGVyCnBhcnRpZXMgdG8gbWFrZSBvciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24gd2l0aCBhIHVzZXIgdGhyb3VnaAphIGNvbXB1dGVyIG5ldHdvcmssIHdpdGggbm8gdHJhbnNmZXIgb2YgYSBjb3B5LCBpcyBub3QgY29udmV5aW5nLgoKICBBbiBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZSBkaXNwbGF5cyAiQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyIKdG8gdGhlIGV4dGVudCB0aGF0IGl0IGluY2x1ZGVzIGEgY29udmVuaWVudCBhbmQgcHJvbWluZW50bHkgdmlzaWJsZQpmZWF0dXJlIHRoYXQgKDEpIGRpc3BsYXlzIGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2UsIGFuZCAoMikKdGVsbHMgdGhlIHVzZXIgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhlIHdvcmsgKGV4Y2VwdCB0byB0aGUKZXh0ZW50IHRoYXQgd2FycmFudGllcyBhcmUgcHJvdmlkZWQpLCB0aGF0IGxpY2Vuc2VlcyBtYXkgY29udmV5IHRoZQp3b3JrIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIGhvdyB0byB2aWV3IGEgY29weSBvZiB0aGlzIExpY2Vuc2UuICBJZgp0aGUgaW50ZXJmYWNlIHByZXNlbnRzIGEgbGlzdCBvZiB1c2VyIGNvbW1hbmRzIG9yIG9wdGlvbnMsIHN1Y2ggYXMgYQptZW51LCBhIHByb21pbmVudCBpdGVtIGluIHRoZSBsaXN0IG1lZXRzIHRoaXMgY3JpdGVyaW9uLgoKICAxLiBTb3VyY2UgQ29kZS4KCiAgVGhlICJzb3VyY2UgY29kZSIgZm9yIGEgd29yayBtZWFucyB0aGUgcHJlZmVycmVkIGZvcm0gb2YgdGhlIHdvcmsKZm9yIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgIk9iamVjdCBjb2RlIiBtZWFucyBhbnkgbm9uLXNvdXJjZQpmb3JtIG9mIGEgd29yay4KCiAgQSAiU3RhbmRhcmQgSW50ZXJmYWNlIiBtZWFucyBhbiBpbnRlcmZhY2UgdGhhdCBlaXRoZXIgaXMgYW4gb2ZmaWNpYWwKc3RhbmRhcmQgZGVmaW5lZCBieSBhIHJlY29nbml6ZWQgc3RhbmRhcmRzIGJvZHksIG9yLCBpbiB0aGUgY2FzZSBvZgppbnRlcmZhY2VzIHNwZWNpZmllZCBmb3IgYSBwYXJ0aWN1bGFyIHByb2dyYW1taW5nIGxhbmd1YWdlLCBvbmUgdGhhdAppcyB3aWRlbHkgdXNlZCBhbW9uZyBkZXZlbG9wZXJzIHdvcmtpbmcgaW4gdGhhdCBsYW5ndWFnZS4KCiAgVGhlICJTeXN0ZW0gTGlicmFyaWVzIiBvZiBhbiBleGVjdXRhYmxlIHdvcmsgaW5jbHVkZSBhbnl0aGluZywgb3RoZXIKdGhhbiB0aGUgd29yayBhcyBhIHdob2xlLCB0aGF0IChhKSBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsIGZvcm0gb2YKcGFja2FnaW5nIGEgTWFqb3IgQ29tcG9uZW50LCBidXQgd2hpY2ggaXMgbm90IHBhcnQgb2YgdGhhdCBNYWpvcgpDb21wb25lbnQsIGFuZCAoYikgc2VydmVzIG9ubHkgdG8gZW5hYmxlIHVzZSBvZiB0aGUgd29yayB3aXRoIHRoYXQKTWFqb3IgQ29tcG9uZW50LCBvciB0byBpbXBsZW1lbnQgYSBTdGFuZGFyZCBJbnRlcmZhY2UgZm9yIHdoaWNoIGFuCmltcGxlbWVudGF0aW9uIGlzIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluIHNvdXJjZSBjb2RlIGZvcm0uICBBCiJNYWpvciBDb21wb25lbnQiLCBpbiB0aGlzIGNvbnRleHQsIG1lYW5zIGEgbWFqb3IgZXNzZW50aWFsIGNvbXBvbmVudAooa2VybmVsLCB3aW5kb3cgc3lzdGVtLCBhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVtCihpZiBhbnkpIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHdvcmsgcnVucywgb3IgYSBjb21waWxlciB1c2VkIHRvCnByb2R1Y2UgdGhlIHdvcmssIG9yIGFuIG9iamVjdCBjb2RlIGludGVycHJldGVyIHVzZWQgdG8gcnVuIGl0LgoKICBUaGUgIkNvcnJlc3BvbmRpbmcgU291cmNlIiBmb3IgYSB3b3JrIGluIG9iamVjdCBjb2RlIGZvcm0gbWVhbnMgYWxsCnRoZSBzb3VyY2UgY29kZSBuZWVkZWQgdG8gZ2VuZXJhdGUsIGluc3RhbGwsIGFuZCAoZm9yIGFuIGV4ZWN1dGFibGUKd29yaykgcnVuIHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3JrLCBpbmNsdWRpbmcgc2NyaXB0cyB0bwpjb250cm9sIHRob3NlIGFjdGl2aXRpZXMuICBIb3dldmVyLCBpdCBkb2VzIG5vdCBpbmNsdWRlIHRoZSB3b3JrJ3MKU3lzdGVtIExpYnJhcmllcywgb3IgZ2VuZXJhbC1wdXJwb3NlIHRvb2xzIG9yIGdlbmVyYWxseSBhdmFpbGFibGUgZnJlZQpwcm9ncmFtcyB3aGljaCBhcmUgdXNlZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZpdGllcyBidXQKd2hpY2ggYXJlIG5vdCBwYXJ0IG9mIHRoZSB3b3JrLiAgRm9yIGV4YW1wbGUsIENvcnJlc3BvbmRpbmcgU291cmNlCmluY2x1ZGVzIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCBzb3VyY2UgZmlsZXMgZm9yCnRoZSB3b3JrLCBhbmQgdGhlIHNvdXJjZSBjb2RlIGZvciBzaGFyZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQpsaW5rZWQgc3VicHJvZ3JhbXMgdGhhdCB0aGUgd29yayBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gcmVxdWlyZSwKc3VjaCBhcyBieSBpbnRpbWF0ZSBkYXRhIGNvbW11bmljYXRpb24gb3IgY29udHJvbCBmbG93IGJldHdlZW4gdGhvc2UKc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3b3JrLgoKICBUaGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgbmVlZCBub3QgaW5jbHVkZSBhbnl0aGluZyB0aGF0IHVzZXJzCmNhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgQ29ycmVzcG9uZGluZwpTb3VyY2UuCgogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgYSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdApzYW1lIHdvcmsuCgogIDIuIEJhc2ljIFBlcm1pc3Npb25zLgoKICBBbGwgcmlnaHRzIGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlIGFyZSBncmFudGVkIGZvciB0aGUgdGVybSBvZgpjb3B5cmlnaHQgb24gdGhlIFByb2dyYW0sIGFuZCBhcmUgaXJyZXZvY2FibGUgcHJvdmlkZWQgdGhlIHN0YXRlZApjb25kaXRpb25zIGFyZSBtZXQuICBUaGlzIExpY2Vuc2UgZXhwbGljaXRseSBhZmZpcm1zIHlvdXIgdW5saW1pdGVkCnBlcm1pc3Npb24gdG8gcnVuIHRoZSB1bm1vZGlmaWVkIFByb2dyYW0uICBUaGUgb3V0cHV0IGZyb20gcnVubmluZyBhCmNvdmVyZWQgd29yayBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSBvbmx5IGlmIHRoZSBvdXRwdXQsIGdpdmVuIGl0cwpjb250ZW50LCBjb25zdGl0dXRlcyBhIGNvdmVyZWQgd29yay4gIFRoaXMgTGljZW5zZSBhY2tub3dsZWRnZXMgeW91cgpyaWdodHMgb2YgZmFpciB1c2Ugb3Igb3RoZXIgZXF1aXZhbGVudCwgYXMgcHJvdmlkZWQgYnkgY29weXJpZ2h0IGxhdy4KCiAgWW91IG1heSBtYWtlLCBydW4gYW5kIHByb3BhZ2F0ZSBjb3ZlcmVkIHdvcmtzIHRoYXQgeW91IGRvIG5vdApjb252ZXksIHdpdGhvdXQgY29uZGl0aW9ucyBzbyBsb25nIGFzIHlvdXIgbGljZW5zZSBvdGhlcndpc2UgcmVtYWlucwppbiBmb3JjZS4gIFlvdSBtYXkgY29udmV5IGNvdmVyZWQgd29ya3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBwdXJwb3NlCm9mIGhhdmluZyB0aGVtIG1ha2UgbW9kaWZpY2F0aW9ucyBleGNsdXNpdmVseSBmb3IgeW91LCBvciBwcm92aWRlIHlvdQp3aXRoIGZhY2lsaXRpZXMgZm9yIHJ1bm5pbmcgdGhvc2Ugd29ya3MsIHByb3ZpZGVkIHRoYXQgeW91IGNvbXBseSB3aXRoCnRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgaW4gY29udmV5aW5nIGFsbCBtYXRlcmlhbCBmb3Igd2hpY2ggeW91IGRvCm5vdCBjb250cm9sIGNvcHlyaWdodC4gIFRob3NlIHRodXMgbWFraW5nIG9yIHJ1bm5pbmcgdGhlIGNvdmVyZWQgd29ya3MKZm9yIHlvdSBtdXN0IGRvIHNvIGV4Y2x1c2l2ZWx5IG9uIHlvdXIgYmVoYWxmLCB1bmRlciB5b3VyIGRpcmVjdGlvbgphbmQgY29udHJvbCwgb24gdGVybXMgdGhhdCBwcm9oaWJpdCB0aGVtIGZyb20gbWFraW5nIGFueSBjb3BpZXMgb2YKeW91ciBjb3B5cmlnaHRlZCBtYXRlcmlhbCBvdXRzaWRlIHRoZWlyIHJlbGF0aW9uc2hpcCB3aXRoIHlvdS4KCiAgQ29udmV5aW5nIHVuZGVyIGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIGlzIHBlcm1pdHRlZCBzb2xlbHkgdW5kZXIKdGhlIGNvbmRpdGlvbnMgc3RhdGVkIGJlbG93LiAgU3VibGljZW5zaW5nIGlzIG5vdCBhbGxvd2VkOyBzZWN0aW9uIDEwCm1ha2VzIGl0IHVubmVjZXNzYXJ5LgoKICAzLiBQcm90ZWN0aW5nIFVzZXJzJyBMZWdhbCBSaWdodHMgRnJvbSBBbnRpLUNpcmN1bXZlbnRpb24gTGF3LgoKICBObyBjb3ZlcmVkIHdvcmsgc2hhbGwgYmUgZGVlbWVkIHBhcnQgb2YgYW4gZWZmZWN0aXZlIHRlY2hub2xvZ2ljYWwKbWVhc3VyZSB1bmRlciBhbnkgYXBwbGljYWJsZSBsYXcgZnVsZmlsbGluZyBvYmxpZ2F0aW9ucyB1bmRlciBhcnRpY2xlCjExIG9mIHRoZSBXSVBPIGNvcHlyaWdodCB0cmVhdHkgYWRvcHRlZCBvbiAyMCBEZWNlbWJlciAxOTk2LCBvcgpzaW1pbGFyIGxhd3MgcHJvaGliaXRpbmcgb3IgcmVzdHJpY3RpbmcgY2lyY3VtdmVudGlvbiBvZiBzdWNoCm1lYXN1cmVzLgoKICBXaGVuIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBhbnkgbGVnYWwgcG93ZXIgdG8gZm9yYmlkCmNpcmN1bXZlbnRpb24gb2YgdGVjaG5vbG9naWNhbCBtZWFzdXJlcyB0byB0aGUgZXh0ZW50IHN1Y2ggY2lyY3VtdmVudGlvbgppcyBlZmZlY3RlZCBieSBleGVyY2lzaW5nIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2Ugd2l0aCByZXNwZWN0IHRvCnRoZSBjb3ZlcmVkIHdvcmssIGFuZCB5b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBvcGVyYXRpb24gb3IKbW9kaWZpY2F0aW9uIG9mIHRoZSB3b3JrIGFzIGEgbWVhbnMgb2YgZW5mb3JjaW5nLCBhZ2FpbnN0IHRoZSB3b3JrJ3MKdXNlcnMsIHlvdXIgb3IgdGhpcmQgcGFydGllcycgbGVnYWwgcmlnaHRzIHRvIGZvcmJpZCBjaXJjdW12ZW50aW9uIG9mCnRlY2hub2xvZ2ljYWwgbWVhc3VyZXMuCgogIDQuIENvbnZleWluZyBWZXJiYXRpbSBDb3BpZXMuCgogIFlvdSBtYXkgY29udmV5IHZlcmJhdGltIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSdzIHNvdXJjZSBjb2RlIGFzIHlvdQpyZWNlaXZlIGl0LCBpbiBhbnkgbWVkaXVtLCBwcm92aWRlZCB0aGF0IHlvdSBjb25zcGljdW91c2x5IGFuZAphcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2U7CmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIHN0YXRpbmcgdGhhdCB0aGlzIExpY2Vuc2UgYW5kIGFueQpub24tcGVybWlzc2l2ZSB0ZXJtcyBhZGRlZCBpbiBhY2NvcmQgd2l0aCBzZWN0aW9uIDcgYXBwbHkgdG8gdGhlIGNvZGU7CmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIG9mIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxsCnJlY2lwaWVudHMgYSBjb3B5IG9mIHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBQcm9ncmFtLgoKICBZb3UgbWF5IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2ggY29weSB0aGF0IHlvdSBjb252ZXksCmFuZCB5b3UgbWF5IG9mZmVyIHN1cHBvcnQgb3Igd2FycmFudHkgcHJvdGVjdGlvbiBmb3IgYSBmZWUuCgogIDUuIENvbnZleWluZyBNb2RpZmllZCBTb3VyY2UgVmVyc2lvbnMuCgogIFlvdSBtYXkgY29udmV5IGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgb3IgdGhlIG1vZGlmaWNhdGlvbnMgdG8KcHJvZHVjZSBpdCBmcm9tIHRoZSBQcm9ncmFtLCBpbiB0aGUgZm9ybSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUKdGVybXMgb2Ygc2VjdGlvbiA0LCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6CgogICAgYSkgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgeW91IG1vZGlmaWVkCiAgICBpdCwgYW5kIGdpdmluZyBhIHJlbGV2YW50IGRhdGUuCgogICAgYikgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgaXQgaXMKICAgIHJlbGVhc2VkIHVuZGVyIHRoaXMgTGljZW5zZSBhbmQgYW55IGNvbmRpdGlvbnMgYWRkZWQgdW5kZXIgc2VjdGlvbgogICAgNy4gIFRoaXMgcmVxdWlyZW1lbnQgbW9kaWZpZXMgdGhlIHJlcXVpcmVtZW50IGluIHNlY3Rpb24gNCB0bwogICAgImtlZXAgaW50YWN0IGFsbCBub3RpY2VzIi4KCiAgICBjKSBZb3UgbXVzdCBsaWNlbnNlIHRoZSBlbnRpcmUgd29yaywgYXMgYSB3aG9sZSwgdW5kZXIgdGhpcwogICAgTGljZW5zZSB0byBhbnlvbmUgd2hvIGNvbWVzIGludG8gcG9zc2Vzc2lvbiBvZiBhIGNvcHkuICBUaGlzCiAgICBMaWNlbnNlIHdpbGwgdGhlcmVmb3JlIGFwcGx5LCBhbG9uZyB3aXRoIGFueSBhcHBsaWNhYmxlIHNlY3Rpb24gNwogICAgYWRkaXRpb25hbCB0ZXJtcywgdG8gdGhlIHdob2xlIG9mIHRoZSB3b3JrLCBhbmQgYWxsIGl0cyBwYXJ0cywKICAgIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkgYXJlIHBhY2thZ2VkLiAgVGhpcyBMaWNlbnNlIGdpdmVzIG5vCiAgICBwZXJtaXNzaW9uIHRvIGxpY2Vuc2UgdGhlIHdvcmsgaW4gYW55IG90aGVyIHdheSwgYnV0IGl0IGRvZXMgbm90CiAgICBpbnZhbGlkYXRlIHN1Y2ggcGVybWlzc2lvbiBpZiB5b3UgaGF2ZSBzZXBhcmF0ZWx5IHJlY2VpdmVkIGl0LgoKICAgIGQpIElmIHRoZSB3b3JrIGhhcyBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZXMsIGVhY2ggbXVzdCBkaXNwbGF5CiAgICBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzOyBob3dldmVyLCBpZiB0aGUgUHJvZ3JhbSBoYXMgaW50ZXJhY3RpdmUKICAgIGludGVyZmFjZXMgdGhhdCBkbyBub3QgZGlzcGxheSBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzLCB5b3VyCiAgICB3b3JrIG5lZWQgbm90IG1ha2UgdGhlbSBkbyBzby4KCiAgQSBjb21waWxhdGlvbiBvZiBhIGNvdmVyZWQgd29yayB3aXRoIG90aGVyIHNlcGFyYXRlIGFuZCBpbmRlcGVuZGVudAp3b3Jrcywgd2hpY2ggYXJlIG5vdCBieSB0aGVpciBuYXR1cmUgZXh0ZW5zaW9ucyBvZiB0aGUgY292ZXJlZCB3b3JrLAphbmQgd2hpY2ggYXJlIG5vdCBjb21iaW5lZCB3aXRoIGl0IHN1Y2ggYXMgdG8gZm9ybSBhIGxhcmdlciBwcm9ncmFtLAppbiBvciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMgY2FsbGVkIGFuCiJhZ2dyZWdhdGUiIGlmIHRoZSBjb21waWxhdGlvbiBhbmQgaXRzIHJlc3VsdGluZyBjb3B5cmlnaHQgYXJlIG5vdAp1c2VkIHRvIGxpbWl0IHRoZSBhY2Nlc3Mgb3IgbGVnYWwgcmlnaHRzIG9mIHRoZSBjb21waWxhdGlvbidzIHVzZXJzCmJleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNvdmVyZWQgd29yawppbiBhbiBhZ2dyZWdhdGUgZG9lcyBub3QgY2F1c2UgdGhpcyBMaWNlbnNlIHRvIGFwcGx5IHRvIHRoZSBvdGhlcgpwYXJ0cyBvZiB0aGUgYWdncmVnYXRlLgoKICA2LiBDb252ZXlpbmcgTm9uLVNvdXJjZSBGb3Jtcy4KCiAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsgaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciB0aGUgdGVybXMKb2Ygc2VjdGlvbnMgNCBhbmQgNSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBjb252ZXkgdGhlCm1hY2hpbmUtcmVhZGFibGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwKaW4gb25lIG9mIHRoZXNlIHdheXM6CgogICAgYSkgQ29udmV5IHRoZSBvYmplY3QgY29kZSBpbiwgb3IgZW1ib2RpZWQgaW4sIGEgcGh5c2ljYWwgcHJvZHVjdAogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGZpeGVkIG9uIGEgZHVyYWJsZSBwaHlzaWNhbCBtZWRpdW0KICAgIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLgoKICAgIGIpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgaW4sIG9yIGVtYm9kaWVkIGluLCBhIHBoeXNpY2FsIHByb2R1Y3QKICAgIChpbmNsdWRpbmcgYSBwaHlzaWNhbCBkaXN0cmlidXRpb24gbWVkaXVtKSwgYWNjb21wYW5pZWQgYnkgYQogICAgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlIHllYXJzIGFuZCB2YWxpZCBmb3IgYXMKICAgIGxvbmcgYXMgeW91IG9mZmVyIHNwYXJlIHBhcnRzIG9yIGN1c3RvbWVyIHN1cHBvcnQgZm9yIHRoYXQgcHJvZHVjdAogICAgbW9kZWwsIHRvIGdpdmUgYW55b25lIHdobyBwb3NzZXNzZXMgdGhlIG9iamVjdCBjb2RlIGVpdGhlciAoMSkgYQogICAgY29weSBvZiB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGFsbCB0aGUgc29mdHdhcmUgaW4gdGhlCiAgICBwcm9kdWN0IHRoYXQgaXMgY292ZXJlZCBieSB0aGlzIExpY2Vuc2UsIG9uIGEgZHVyYWJsZSBwaHlzaWNhbAogICAgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGludGVyY2hhbmdlLCBmb3IgYSBwcmljZSBubwogICAgbW9yZSB0aGFuIHlvdXIgcmVhc29uYWJsZSBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzCiAgICBjb252ZXlpbmcgb2Ygc291cmNlLCBvciAoMikgYWNjZXNzIHRvIGNvcHkgdGhlCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBmcm9tIGEgbmV0d29yayBzZXJ2ZXIgYXQgbm8gY2hhcmdlLgoKICAgIGMpIENvbnZleSBpbmRpdmlkdWFsIGNvcGllcyBvZiB0aGUgb2JqZWN0IGNvZGUgd2l0aCBhIGNvcHkgb2YgdGhlCiAgICB3cml0dGVuIG9mZmVyIHRvIHByb3ZpZGUgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhpcwogICAgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9uYWxseSBhbmQgbm9uY29tbWVyY2lhbGx5LCBhbmQKICAgIG9ubHkgaWYgeW91IHJlY2VpdmVkIHRoZSBvYmplY3QgY29kZSB3aXRoIHN1Y2ggYW4gb2ZmZXIsIGluIGFjY29yZAogICAgd2l0aCBzdWJzZWN0aW9uIDZiLgoKICAgIGQpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIGZyb20gYSBkZXNpZ25hdGVkCiAgICBwbGFjZSAoZ3JhdGlzIG9yIGZvciBhIGNoYXJnZSksIGFuZCBvZmZlciBlcXVpdmFsZW50IGFjY2VzcyB0byB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGluIHRoZSBzYW1lIHdheSB0aHJvdWdoIHRoZSBzYW1lIHBsYWNlIGF0IG5vCiAgICBmdXJ0aGVyIGNoYXJnZS4gIFlvdSBuZWVkIG5vdCByZXF1aXJlIHJlY2lwaWVudHMgdG8gY29weSB0aGUKICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGFsb25nIHdpdGggdGhlIG9iamVjdCBjb2RlLiAgSWYgdGhlIHBsYWNlIHRvCiAgICBjb3B5IHRoZSBvYmplY3QgY29kZSBpcyBhIG5ldHdvcmsgc2VydmVyLCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UKICAgIG1heSBiZSBvbiBhIGRpZmZlcmVudCBzZXJ2ZXIgKG9wZXJhdGVkIGJ5IHlvdSBvciBhIHRoaXJkIHBhcnR5KQogICAgdGhhdCBzdXBwb3J0cyBlcXVpdmFsZW50IGNvcHlpbmcgZmFjaWxpdGllcywgcHJvdmlkZWQgeW91IG1haW50YWluCiAgICBjbGVhciBkaXJlY3Rpb25zIG5leHQgdG8gdGhlIG9iamVjdCBjb2RlIHNheWluZyB3aGVyZSB0byBmaW5kIHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBSZWdhcmRsZXNzIG9mIHdoYXQgc2VydmVyIGhvc3RzIHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UsIHlvdSByZW1haW4gb2JsaWdhdGVkIHRvIGVuc3VyZSB0aGF0IGl0IGlzCiAgICBhdmFpbGFibGUgZm9yIGFzIGxvbmcgYXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLgoKICAgIGUpIENvbnZleSB0aGUgb2JqZWN0IGNvZGUgdXNpbmcgcGVlci10by1wZWVyIHRyYW5zbWlzc2lvbiwgcHJvdmlkZWQKICAgIHlvdSBpbmZvcm0gb3RoZXIgcGVlcnMgd2hlcmUgdGhlIG9iamVjdCBjb2RlIGFuZCBDb3JyZXNwb25kaW5nCiAgICBTb3VyY2Ugb2YgdGhlIHdvcmsgYXJlIGJlaW5nIG9mZmVyZWQgdG8gdGhlIGdlbmVyYWwgcHVibGljIGF0IG5vCiAgICBjaGFyZ2UgdW5kZXIgc3Vic2VjdGlvbiA2ZC4KCiAgQSBzZXBhcmFibGUgcG9ydGlvbiBvZiB0aGUgb2JqZWN0IGNvZGUsIHdob3NlIHNvdXJjZSBjb2RlIGlzIGV4Y2x1ZGVkCmZyb20gdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIGFzIGEgU3lzdGVtIExpYnJhcnksIG5lZWQgbm90IGJlCmluY2x1ZGVkIGluIGNvbnZleWluZyB0aGUgb2JqZWN0IGNvZGUgd29yay4KCiAgQSAiVXNlciBQcm9kdWN0IiBpcyBlaXRoZXIgKDEpIGEgImNvbnN1bWVyIHByb2R1Y3QiLCB3aGljaCBtZWFucyBhbnkKdGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkgdXNlZCBmb3IgcGVyc29uYWwsIGZhbWlseSwKb3IgaG91c2Vob2xkIHB1cnBvc2VzLCBvciAoMikgYW55dGhpbmcgZGVzaWduZWQgb3Igc29sZCBmb3IgaW5jb3Jwb3JhdGlvbgppbnRvIGEgZHdlbGxpbmcuICBJbiBkZXRlcm1pbmluZyB3aGV0aGVyIGEgcHJvZHVjdCBpcyBhIGNvbnN1bWVyIHByb2R1Y3QsCmRvdWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiAgRm9yIGEgcGFydGljdWxhcgpwcm9kdWN0IHJlY2VpdmVkIGJ5IGEgcGFydGljdWxhciB1c2VyLCAibm9ybWFsbHkgdXNlZCIgcmVmZXJzIHRvIGEKdHlwaWNhbCBvciBjb21tb24gdXNlIG9mIHRoYXQgY2xhc3Mgb2YgcHJvZHVjdCwgcmVnYXJkbGVzcyBvZiB0aGUgc3RhdHVzCm9mIHRoZSBwYXJ0aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGljdWxhciB1c2VyCmFjdHVhbGx5IHVzZXMsIG9yIGV4cGVjdHMgb3IgaXMgZXhwZWN0ZWQgdG8gdXNlLCB0aGUgcHJvZHVjdC4gIEEgcHJvZHVjdAppcyBhIGNvbnN1bWVyIHByb2R1Y3QgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBwcm9kdWN0IGhhcyBzdWJzdGFudGlhbApjb21tZXJjaWFsLCBpbmR1c3RyaWFsIG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJlc2VudAp0aGUgb25seSBzaWduaWZpY2FudCBtb2RlIG9mIHVzZSBvZiB0aGUgcHJvZHVjdC4KCiAgIkluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiIgZm9yIGEgVXNlciBQcm9kdWN0IG1lYW5zIGFueSBtZXRob2RzLApwcm9jZWR1cmVzLCBhdXRob3JpemF0aW9uIGtleXMsIG9yIG90aGVyIGluZm9ybWF0aW9uIHJlcXVpcmVkIHRvIGluc3RhbGwKYW5kIGV4ZWN1dGUgbW9kaWZpZWQgdmVyc2lvbnMgb2YgYSBjb3ZlcmVkIHdvcmsgaW4gdGhhdCBVc2VyIFByb2R1Y3QgZnJvbQphIG1vZGlmaWVkIHZlcnNpb24gb2YgaXRzIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhlIGluZm9ybWF0aW9uIG11c3QKc3VmZmljZSB0byBlbnN1cmUgdGhhdCB0aGUgY29udGludWVkIGZ1bmN0aW9uaW5nIG9mIHRoZSBtb2RpZmllZCBvYmplY3QKY29kZSBpcyBpbiBubyBjYXNlIHByZXZlbnRlZCBvciBpbnRlcmZlcmVkIHdpdGggc29sZWx5IGJlY2F1c2UKbW9kaWZpY2F0aW9uIGhhcyBiZWVuIG1hZGUuCgogIElmIHlvdSBjb252ZXkgYW4gb2JqZWN0IGNvZGUgd29yayB1bmRlciB0aGlzIHNlY3Rpb24gaW4sIG9yIHdpdGgsIG9yCnNwZWNpZmljYWxseSBmb3IgdXNlIGluLCBhIFVzZXIgUHJvZHVjdCwgYW5kIHRoZSBjb252ZXlpbmcgb2NjdXJzIGFzCnBhcnQgb2YgYSB0cmFuc2FjdGlvbiBpbiB3aGljaCB0aGUgcmlnaHQgb2YgcG9zc2Vzc2lvbiBhbmQgdXNlIG9mIHRoZQpVc2VyIFByb2R1Y3QgaXMgdHJhbnNmZXJyZWQgdG8gdGhlIHJlY2lwaWVudCBpbiBwZXJwZXR1aXR5IG9yIGZvciBhCmZpeGVkIHRlcm0gKHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyYWN0ZXJpemVkKSwgdGhlCkNvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkIHVuZGVyIHRoaXMgc2VjdGlvbiBtdXN0IGJlIGFjY29tcGFuaWVkCmJ5IHRoZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24uICBCdXQgdGhpcyByZXF1aXJlbWVudCBkb2VzIG5vdCBhcHBseQppZiBuZWl0aGVyIHlvdSBub3IgYW55IHRoaXJkIHBhcnR5IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gaW5zdGFsbAptb2RpZmllZCBvYmplY3QgY29kZSBvbiB0aGUgVXNlciBQcm9kdWN0IChmb3IgZXhhbXBsZSwgdGhlIHdvcmsgaGFzCmJlZW4gaW5zdGFsbGVkIGluIFJPTSkuCgogIFRoZSByZXF1aXJlbWVudCB0byBwcm92aWRlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiBkb2VzIG5vdCBpbmNsdWRlIGEKcmVxdWlyZW1lbnQgdG8gY29udGludWUgdG8gcHJvdmlkZSBzdXBwb3J0IHNlcnZpY2UsIHdhcnJhbnR5LCBvciB1cGRhdGVzCmZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQgYnkgdGhlIHJlY2lwaWVudCwgb3IgZm9yCnRoZSBVc2VyIFByb2R1Y3QgaW4gd2hpY2ggaXQgaGFzIGJlZW4gbW9kaWZpZWQgb3IgaW5zdGFsbGVkLiAgQWNjZXNzIHRvIGEKbmV0d29yayBtYXkgYmUgZGVuaWVkIHdoZW4gdGhlIG1vZGlmaWNhdGlvbiBpdHNlbGYgbWF0ZXJpYWxseSBhbmQKYWR2ZXJzZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBvciB2aW9sYXRlcyB0aGUgcnVsZXMgYW5kCnByb3RvY29scyBmb3IgY29tbXVuaWNhdGlvbiBhY3Jvc3MgdGhlIG5ldHdvcmsuCgogIENvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkLCBhbmQgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIHByb3ZpZGVkLAppbiBhY2NvcmQgd2l0aCB0aGlzIHNlY3Rpb24gbXVzdCBiZSBpbiBhIGZvcm1hdCB0aGF0IGlzIHB1YmxpY2x5CmRvY3VtZW50ZWQgKGFuZCB3aXRoIGFuIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSB0byB0aGUgcHVibGljIGluCnNvdXJjZSBjb2RlIGZvcm0pLCBhbmQgbXVzdCByZXF1aXJlIG5vIHNwZWNpYWwgcGFzc3dvcmQgb3Iga2V5IGZvcgp1bnBhY2tpbmcsIHJlYWRpbmcgb3IgY29weWluZy4KCiAgNy4gQWRkaXRpb25hbCBUZXJtcy4KCiAgIkFkZGl0aW9uYWwgcGVybWlzc2lvbnMiIGFyZSB0ZXJtcyB0aGF0IHN1cHBsZW1lbnQgdGhlIHRlcm1zIG9mIHRoaXMKTGljZW5zZSBieSBtYWtpbmcgZXhjZXB0aW9ucyBmcm9tIG9uZSBvciBtb3JlIG9mIGl0cyBjb25kaXRpb25zLgpBZGRpdGlvbmFsIHBlcm1pc3Npb25zIHRoYXQgYXJlIGFwcGxpY2FibGUgdG8gdGhlIGVudGlyZSBQcm9ncmFtIHNoYWxsCmJlIHRyZWF0ZWQgYXMgdGhvdWdoIHRoZXkgd2VyZSBpbmNsdWRlZCBpbiB0aGlzIExpY2Vuc2UsIHRvIHRoZSBleHRlbnQKdGhhdCB0aGV5IGFyZSB2YWxpZCB1bmRlciBhcHBsaWNhYmxlIGxhdy4gIElmIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMKYXBwbHkgb25seSB0byBwYXJ0IG9mIHRoZSBQcm9ncmFtLCB0aGF0IHBhcnQgbWF5IGJlIHVzZWQgc2VwYXJhdGVseQp1bmRlciB0aG9zZSBwZXJtaXNzaW9ucywgYnV0IHRoZSBlbnRpcmUgUHJvZ3JhbSByZW1haW5zIGdvdmVybmVkIGJ5CnRoaXMgTGljZW5zZSB3aXRob3V0IHJlZ2FyZCB0byB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucy4KCiAgV2hlbiB5b3UgY29udmV5IGEgY29weSBvZiBhIGNvdmVyZWQgd29yaywgeW91IG1heSBhdCB5b3VyIG9wdGlvbgpyZW1vdmUgYW55IGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgZnJvbSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQgb2YKaXQuICAoQWRkaXRpb25hbCBwZXJtaXNzaW9ucyBtYXkgYmUgd3JpdHRlbiB0byByZXF1aXJlIHRoZWlyIG93bgpyZW1vdmFsIGluIGNlcnRhaW4gY2FzZXMgd2hlbiB5b3UgbW9kaWZ5IHRoZSB3b3JrLikgIFlvdSBtYXkgcGxhY2UKYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlhbCwgYWRkZWQgYnkgeW91IHRvIGEgY292ZXJlZCB3b3JrLApmb3Igd2hpY2ggeW91IGhhdmUgb3IgY2FuIGdpdmUgYXBwcm9wcmlhdGUgY29weXJpZ2h0IHBlcm1pc3Npb24uCgogIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgZm9yIG1hdGVyaWFsIHlvdQphZGQgdG8gYSBjb3ZlcmVkIHdvcmssIHlvdSBtYXkgKGlmIGF1dGhvcml6ZWQgYnkgdGhlIGNvcHlyaWdodCBob2xkZXJzIG9mCnRoYXQgbWF0ZXJpYWwpIHN1cHBsZW1lbnQgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSB3aXRoIHRlcm1zOgoKICAgIGEpIERpc2NsYWltaW5nIHdhcnJhbnR5IG9yIGxpbWl0aW5nIGxpYWJpbGl0eSBkaWZmZXJlbnRseSBmcm9tIHRoZQogICAgdGVybXMgb2Ygc2VjdGlvbnMgMTUgYW5kIDE2IG9mIHRoaXMgTGljZW5zZTsgb3IKCiAgICBiKSBSZXF1aXJpbmcgcHJlc2VydmF0aW9uIG9mIHNwZWNpZmllZCByZWFzb25hYmxlIGxlZ2FsIG5vdGljZXMgb3IKICAgIGF1dGhvciBhdHRyaWJ1dGlvbnMgaW4gdGhhdCBtYXRlcmlhbCBvciBpbiB0aGUgQXBwcm9wcmlhdGUgTGVnYWwKICAgIE5vdGljZXMgZGlzcGxheWVkIGJ5IHdvcmtzIGNvbnRhaW5pbmcgaXQ7IG9yCgogICAgYykgUHJvaGliaXRpbmcgbWlzcmVwcmVzZW50YXRpb24gb2YgdGhlIG9yaWdpbiBvZiB0aGF0IG1hdGVyaWFsLCBvcgogICAgcmVxdWlyaW5nIHRoYXQgbW9kaWZpZWQgdmVyc2lvbnMgb2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4KICAgIHJlYXNvbmFibGUgd2F5cyBhcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2luYWwgdmVyc2lvbjsgb3IKCiAgICBkKSBMaW1pdGluZyB0aGUgdXNlIGZvciBwdWJsaWNpdHkgcHVycG9zZXMgb2YgbmFtZXMgb2YgbGljZW5zb3JzIG9yCiAgICBhdXRob3JzIG9mIHRoZSBtYXRlcmlhbDsgb3IKCiAgICBlKSBEZWNsaW5pbmcgdG8gZ3JhbnQgcmlnaHRzIHVuZGVyIHRyYWRlbWFyayBsYXcgZm9yIHVzZSBvZiBzb21lCiAgICB0cmFkZSBuYW1lcywgdHJhZGVtYXJrcywgb3Igc2VydmljZSBtYXJrczsgb3IKCiAgICBmKSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29ycyBhbmQgYXV0aG9ycyBvZiB0aGF0CiAgICBtYXRlcmlhbCBieSBhbnlvbmUgd2hvIGNvbnZleXMgdGhlIG1hdGVyaWFsIChvciBtb2RpZmllZCB2ZXJzaW9ucyBvZgogICAgaXQpIHdpdGggY29udHJhY3R1YWwgYXNzdW1wdGlvbnMgb2YgbGlhYmlsaXR5IHRvIHRoZSByZWNpcGllbnQsIGZvcgogICAgYW55IGxpYWJpbGl0eSB0aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRpcmVjdGx5IGltcG9zZSBvbgogICAgdGhvc2UgbGljZW5zb3JzIGFuZCBhdXRob3JzLgoKICBBbGwgb3RoZXIgbm9uLXBlcm1pc3NpdmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJlZCAiZnVydGhlcgpyZXN0cmljdGlvbnMiIHdpdGhpbiB0aGUgbWVhbmluZyBvZiBzZWN0aW9uIDEwLiAgSWYgdGhlIFByb2dyYW0gYXMgeW91CnJlY2VpdmVkIGl0LCBvciBhbnkgcGFydCBvZiBpdCwgY29udGFpbnMgYSBub3RpY2Ugc3RhdGluZyB0aGF0IGl0IGlzCmdvdmVybmVkIGJ5IHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIGEgdGVybSB0aGF0IGlzIGEgZnVydGhlcgpyZXN0cmljdGlvbiwgeW91IG1heSByZW1vdmUgdGhhdCB0ZXJtLiAgSWYgYSBsaWNlbnNlIGRvY3VtZW50IGNvbnRhaW5zCmEgZnVydGhlciByZXN0cmljdGlvbiBidXQgcGVybWl0cyByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcgdW5kZXIgdGhpcwpMaWNlbnNlLCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQgd29yayBtYXRlcmlhbCBnb3Zlcm5lZCBieSB0aGUgdGVybXMKb2YgdGhhdCBsaWNlbnNlIGRvY3VtZW50LCBwcm92aWRlZCB0aGF0IHRoZSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGRvZXMKbm90IHN1cnZpdmUgc3VjaCByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcuCgogIElmIHlvdSBhZGQgdGVybXMgdG8gYSBjb3ZlcmVkIHdvcmsgaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uLCB5b3UKbXVzdCBwbGFjZSwgaW4gdGhlIHJlbGV2YW50IHNvdXJjZSBmaWxlcywgYSBzdGF0ZW1lbnQgb2YgdGhlCmFkZGl0aW9uYWwgdGVybXMgdGhhdCBhcHBseSB0byB0aG9zZSBmaWxlcywgb3IgYSBub3RpY2UgaW5kaWNhdGluZwp3aGVyZSB0byBmaW5kIHRoZSBhcHBsaWNhYmxlIHRlcm1zLgoKICBBZGRpdGlvbmFsIHRlcm1zLCBwZXJtaXNzaXZlIG9yIG5vbi1wZXJtaXNzaXZlLCBtYXkgYmUgc3RhdGVkIGluIHRoZQpmb3JtIG9mIGEgc2VwYXJhdGVseSB3cml0dGVuIGxpY2Vuc2UsIG9yIHN0YXRlZCBhcyBleGNlcHRpb25zOwp0aGUgYWJvdmUgcmVxdWlyZW1lbnRzIGFwcGx5IGVpdGhlciB3YXkuCgogIDguIFRlcm1pbmF0aW9uLgoKICBZb3UgbWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9kaWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkKcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQgb3RoZXJ3aXNlIHRvIHByb3BhZ2F0ZSBvcgptb2RpZnkgaXQgaXMgdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIKdGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZSB0aGlyZApwYXJhZ3JhcGggb2Ygc2VjdGlvbiAxMSkuCgogIEhvd2V2ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyCmxpY2Vuc2UgZnJvbSBhIHBhcnRpY3VsYXIgY29weXJpZ2h0IGhvbGRlciBpcyByZWluc3RhdGVkIChhKQpwcm92aXNpb25hbGx5LCB1bmxlc3MgYW5kIHVudGlsIHRoZSBjb3B5cmlnaHQgaG9sZGVyIGV4cGxpY2l0bHkgYW5kCmZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQKaG9sZGVyIGZhaWxzIHRvIG5vdGlmeSB5b3Ugb2YgdGhlIHZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMKcHJpb3IgdG8gNjAgZGF5cyBhZnRlciB0aGUgY2Vzc2F0aW9uLgoKICBNb3Jlb3ZlciwgeW91ciBsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMKcmVpbnN0YXRlZCBwZXJtYW5lbnRseSBpZiB0aGUgY29weXJpZ2h0IGhvbGRlciBub3RpZmllcyB5b3Ugb2YgdGhlCnZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUKcmVjZWl2ZWQgbm90aWNlIG9mIHZpb2xhdGlvbiBvZiB0aGlzIExpY2Vuc2UgKGZvciBhbnkgd29yaykgZnJvbSB0aGF0CmNvcHlyaWdodCBob2xkZXIsIGFuZCB5b3UgY3VyZSB0aGUgdmlvbGF0aW9uIHByaW9yIHRvIDMwIGRheXMgYWZ0ZXIKeW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuCgogIFRlcm1pbmF0aW9uIG9mIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgc2VjdGlvbiBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlCmxpY2Vuc2VzIG9mIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcgp0aGlzIExpY2Vuc2UuICBJZiB5b3VyIHJpZ2h0cyBoYXZlIGJlZW4gdGVybWluYXRlZCBhbmQgbm90IHBlcm1hbmVudGx5CnJlaW5zdGF0ZWQsIHlvdSBkbyBub3QgcXVhbGlmeSB0byByZWNlaXZlIG5ldyBsaWNlbnNlcyBmb3IgdGhlIHNhbWUKbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC4KCiAgOS4gQWNjZXB0YW5jZSBOb3QgUmVxdWlyZWQgZm9yIEhhdmluZyBDb3BpZXMuCgogIFlvdSBhcmUgbm90IHJlcXVpcmVkIHRvIGFjY2VwdCB0aGlzIExpY2Vuc2UgaW4gb3JkZXIgdG8gcmVjZWl2ZSBvcgpydW4gYSBjb3B5IG9mIHRoZSBQcm9ncmFtLiAgQW5jaWxsYXJ5IHByb3BhZ2F0aW9uIG9mIGEgY292ZXJlZCB3b3JrCm9jY3VycmluZyBzb2xlbHkgYXMgYSBjb25zZXF1ZW5jZSBvZiB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uCnRvIHJlY2VpdmUgYSBjb3B5IGxpa2V3aXNlIGRvZXMgbm90IHJlcXVpcmUgYWNjZXB0YW5jZS4gIEhvd2V2ZXIsCm5vdGhpbmcgb3RoZXIgdGhhbiB0aGlzIExpY2Vuc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIHByb3BhZ2F0ZSBvcgptb2RpZnkgYW55IGNvdmVyZWQgd29yay4gIFRoZXNlIGFjdGlvbnMgaW5mcmluZ2UgY29weXJpZ2h0IGlmIHlvdSBkbwpub3QgYWNjZXB0IHRoaXMgTGljZW5zZS4gIFRoZXJlZm9yZSwgYnkgbW9kaWZ5aW5nIG9yIHByb3BhZ2F0aW5nIGEKY292ZXJlZCB3b3JrLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzby4KCiAgMTAuIEF1dG9tYXRpYyBMaWNlbnNpbmcgb2YgRG93bnN0cmVhbSBSZWNpcGllbnRzLgoKICBFYWNoIHRpbWUgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5CnJlY2VpdmVzIGEgbGljZW5zZSBmcm9tIHRoZSBvcmlnaW5hbCBsaWNlbnNvcnMsIHRvIHJ1biwgbW9kaWZ5IGFuZApwcm9wYWdhdGUgdGhhdCB3b3JrLCBzdWJqZWN0IHRvIHRoaXMgTGljZW5zZS4gIFlvdSBhcmUgbm90IHJlc3BvbnNpYmxlCmZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHdpdGggdGhpcyBMaWNlbnNlLgoKICBBbiAiZW50aXR5IHRyYW5zYWN0aW9uIiBpcyBhIHRyYW5zYWN0aW9uIHRyYW5zZmVycmluZyBjb250cm9sIG9mIGFuCm9yZ2FuaXphdGlvbiwgb3Igc3Vic3RhbnRpYWxseSBhbGwgYXNzZXRzIG9mIG9uZSwgb3Igc3ViZGl2aWRpbmcgYW4Kb3JnYW5pemF0aW9uLCBvciBtZXJnaW5nIG9yZ2FuaXphdGlvbnMuICBJZiBwcm9wYWdhdGlvbiBvZiBhIGNvdmVyZWQKd29yayByZXN1bHRzIGZyb20gYW4gZW50aXR5IHRyYW5zYWN0aW9uLCBlYWNoIHBhcnR5IHRvIHRoYXQKdHJhbnNhY3Rpb24gd2hvIHJlY2VpdmVzIGEgY29weSBvZiB0aGUgd29yayBhbHNvIHJlY2VpdmVzIHdoYXRldmVyCmxpY2Vuc2VzIHRvIHRoZSB3b3JrIHRoZSBwYXJ0eSdzIHByZWRlY2Vzc29yIGluIGludGVyZXN0IGhhZCBvciBjb3VsZApnaXZlIHVuZGVyIHRoZSBwcmV2aW91cyBwYXJhZ3JhcGgsIHBsdXMgYSByaWdodCB0byBwb3NzZXNzaW9uIG9mIHRoZQpDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBmcm9tIHRoZSBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCwgaWYKdGhlIHByZWRlY2Vzc29yIGhhcyBpdCBvciBjYW4gZ2V0IGl0IHdpdGggcmVhc29uYWJsZSBlZmZvcnRzLgoKICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25zIG9uIHRoZSBleGVyY2lzZSBvZiB0aGUKcmlnaHRzIGdyYW50ZWQgb3IgYWZmaXJtZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkKbm90IGltcG9zZSBhIGxpY2Vuc2UgZmVlLCByb3lhbHR5LCBvciBvdGhlciBjaGFyZ2UgZm9yIGV4ZXJjaXNlIG9mCnJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGlnYXRpb24KKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQKYW55IHBhdGVudCBjbGFpbSBpcyBpbmZyaW5nZWQgYnkgbWFraW5nLCB1c2luZywgc2VsbGluZywgb2ZmZXJpbmcgZm9yCnNhbGUsIG9yIGltcG9ydGluZyB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBpdC4KCiAgMTEuIFBhdGVudHMuCgogIEEgImNvbnRyaWJ1dG9yIiBpcyBhIGNvcHlyaWdodCBob2xkZXIgd2hvIGF1dGhvcml6ZXMgdXNlIHVuZGVyIHRoaXMKTGljZW5zZSBvZiB0aGUgUHJvZ3JhbSBvciBhIHdvcmsgb24gd2hpY2ggdGhlIFByb2dyYW0gaXMgYmFzZWQuICBUaGUKd29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29udHJpYnV0b3IncyAiY29udHJpYnV0b3IgdmVyc2lvbiIuCgogIEEgY29udHJpYnV0b3IncyAiZXNzZW50aWFsIHBhdGVudCBjbGFpbXMiIGFyZSBhbGwgcGF0ZW50IGNsYWltcwpvd25lZCBvciBjb250cm9sbGVkIGJ5IHRoZSBjb250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9yCmhlcmVhZnRlciBhY3F1aXJlZCwgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgYnkgc29tZSBtYW5uZXIsIHBlcm1pdHRlZApieSB0aGlzIExpY2Vuc2UsIG9mIG1ha2luZywgdXNpbmcsIG9yIHNlbGxpbmcgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24sCmJ1dCBkbyBub3QgaW5jbHVkZSBjbGFpbXMgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgb25seSBhcyBhCmNvbnNlcXVlbmNlIG9mIGZ1cnRoZXIgbW9kaWZpY2F0aW9uIG9mIHRoZSBjb250cmlidXRvciB2ZXJzaW9uLiAgRm9yCnB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwgImNvbnRyb2wiIGluY2x1ZGVzIHRoZSByaWdodCB0byBncmFudApwYXRlbnQgc3VibGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YKdGhpcyBMaWNlbnNlLgoKICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQpwYXRlbnQgbGljZW5zZSB1bmRlciB0aGUgY29udHJpYnV0b3IncyBlc3NlbnRpYWwgcGF0ZW50IGNsYWltcywgdG8KbWFrZSwgdXNlLCBzZWxsLCBvZmZlciBmb3Igc2FsZSwgaW1wb3J0IGFuZCBvdGhlcndpc2UgcnVuLCBtb2RpZnkgYW5kCnByb3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24uCgogIEluIHRoZSBmb2xsb3dpbmcgdGhyZWUgcGFyYWdyYXBocywgYSAicGF0ZW50IGxpY2Vuc2UiIGlzIGFueSBleHByZXNzCmFncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVyIGRlbm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudAooc3VjaCBhcyBhbiBleHByZXNzIHBlcm1pc3Npb24gdG8gcHJhY3RpY2UgYSBwYXRlbnQgb3IgY292ZW5hbnQgbm90IHRvCnN1ZSBmb3IgcGF0ZW50IGluZnJpbmdlbWVudCkuICBUbyAiZ3JhbnQiIHN1Y2ggYSBwYXRlbnQgbGljZW5zZSB0byBhCnBhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0bWVudCBub3QgdG8gZW5mb3JjZSBhCnBhdGVudCBhZ2FpbnN0IHRoZSBwYXJ0eS4KCiAgSWYgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBwYXRlbnQgbGljZW5zZSwKYW5kIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBpcyBub3QgYXZhaWxhYmxlIGZvciBhbnlvbmUKdG8gY29weSwgZnJlZSBvZiBjaGFyZ2UgYW5kIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UsIHRocm91Z2ggYQpwdWJsaWNseSBhdmFpbGFibGUgbmV0d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5zLAp0aGVuIHlvdSBtdXN0IGVpdGhlciAoMSkgY2F1c2UgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIHRvIGJlIHNvCmF2YWlsYWJsZSwgb3IgKDIpIGFycmFuZ2UgdG8gZGVwcml2ZSB5b3Vyc2VsZiBvZiB0aGUgYmVuZWZpdCBvZiB0aGUKcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrLCBvciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXIKY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YgdGhpcyBMaWNlbnNlLCB0byBleHRlbmQgdGhlIHBhdGVudApsaWNlbnNlIHRvIGRvd25zdHJlYW0gcmVjaXBpZW50cy4gICJLbm93aW5nbHkgcmVseWluZyIgbWVhbnMgeW91IGhhdmUKYWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQgbGljZW5zZSwgeW91ciBjb252ZXlpbmcgdGhlCmNvdmVyZWQgd29yayBpbiBhIGNvdW50cnksIG9yIHlvdXIgcmVjaXBpZW50J3MgdXNlIG9mIHRoZSBjb3ZlcmVkIHdvcmsKaW4gYSBjb3VudHJ5LCB3b3VsZCBpbmZyaW5nZSBvbmUgb3IgbW9yZSBpZGVudGlmaWFibGUgcGF0ZW50cyBpbiB0aGF0CmNvdW50cnkgdGhhdCB5b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuCgogIElmLCBwdXJzdWFudCB0byBvciBpbiBjb25uZWN0aW9uIHdpdGggYSBzaW5nbGUgdHJhbnNhY3Rpb24gb3IKYXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJpbmcgY29udmV5YW5jZSBvZiwgYQpjb3ZlcmVkIHdvcmssIGFuZCBncmFudCBhIHBhdGVudCBsaWNlbnNlIHRvIHNvbWUgb2YgdGhlIHBhcnRpZXMKcmVjZWl2aW5nIHRoZSBjb3ZlcmVkIHdvcmsgYXV0aG9yaXppbmcgdGhlbSB0byB1c2UsIHByb3BhZ2F0ZSwgbW9kaWZ5Cm9yIGNvbnZleSBhIHNwZWNpZmljIGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vuc2UKeW91IGdyYW50IGlzIGF1dG9tYXRpY2FsbHkgZXh0ZW5kZWQgdG8gYWxsIHJlY2lwaWVudHMgb2YgdGhlIGNvdmVyZWQKd29yayBhbmQgd29ya3MgYmFzZWQgb24gaXQuCgogIEEgcGF0ZW50IGxpY2Vuc2UgaXMgImRpc2NyaW1pbmF0b3J5IiBpZiBpdCBkb2VzIG5vdCBpbmNsdWRlIHdpdGhpbgp0aGUgc2NvcGUgb2YgaXRzIGNvdmVyYWdlLCBwcm9oaWJpdHMgdGhlIGV4ZXJjaXNlIG9mLCBvciBpcwpjb25kaXRpb25lZCBvbiB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBvciBtb3JlIG9mIHRoZSByaWdodHMgdGhhdCBhcmUKc3BlY2lmaWNhbGx5IGdyYW50ZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgWW91IG1heSBub3QgY29udmV5IGEgY292ZXJlZAp3b3JrIGlmIHlvdSBhcmUgYSBwYXJ0eSB0byBhbiBhcnJhbmdlbWVudCB3aXRoIGEgdGhpcmQgcGFydHkgdGhhdCBpcwppbiB0aGUgYnVzaW5lc3Mgb2YgZGlzdHJpYnV0aW5nIHNvZnR3YXJlLCB1bmRlciB3aGljaCB5b3UgbWFrZSBwYXltZW50CnRvIHRoZSB0aGlyZCBwYXJ0eSBiYXNlZCBvbiB0aGUgZXh0ZW50IG9mIHlvdXIgYWN0aXZpdHkgb2YgY29udmV5aW5nCnRoZSB3b3JrLCBhbmQgdW5kZXIgd2hpY2ggdGhlIHRoaXJkIHBhcnR5IGdyYW50cywgdG8gYW55IG9mIHRoZQpwYXJ0aWVzIHdobyB3b3VsZCByZWNlaXZlIHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5b3UsIGEgZGlzY3JpbWluYXRvcnkKcGF0ZW50IGxpY2Vuc2UgKGEpIGluIGNvbm5lY3Rpb24gd2l0aCBjb3BpZXMgb2YgdGhlIGNvdmVyZWQgd29yawpjb252ZXllZCBieSB5b3UgKG9yIGNvcGllcyBtYWRlIGZyb20gdGhvc2UgY29waWVzKSwgb3IgKGIpIHByaW1hcmlseQpmb3IgYW5kIGluIGNvbm5lY3Rpb24gd2l0aCBzcGVjaWZpYyBwcm9kdWN0cyBvciBjb21waWxhdGlvbnMgdGhhdApjb250YWluIHRoZSBjb3ZlcmVkIHdvcmssIHVubGVzcyB5b3UgZW50ZXJlZCBpbnRvIHRoYXQgYXJyYW5nZW1lbnQsCm9yIHRoYXQgcGF0ZW50IGxpY2Vuc2Ugd2FzIGdyYW50ZWQsIHByaW9yIHRvIDI4IE1hcmNoIDIwMDcuCgogIE5vdGhpbmcgaW4gdGhpcyBMaWNlbnNlIHNoYWxsIGJlIGNvbnN0cnVlZCBhcyBleGNsdWRpbmcgb3IgbGltaXRpbmcKYW55IGltcGxpZWQgbGljZW5zZSBvciBvdGhlciBkZWZlbnNlcyB0byBpbmZyaW5nZW1lbnQgdGhhdCBtYXkKb3RoZXJ3aXNlIGJlIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYXBwbGljYWJsZSBwYXRlbnQgbGF3LgoKICAxMi4gTm8gU3VycmVuZGVyIG9mIE90aGVycycgRnJlZWRvbS4KCiAgSWYgY29uZGl0aW9ucyBhcmUgaW1wb3NlZCBvbiB5b3UgKHdoZXRoZXIgYnkgY291cnQgb3JkZXIsIGFncmVlbWVudCBvcgpvdGhlcndpc2UpIHRoYXQgY29udHJhZGljdCB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UsIHRoZXkgZG8gbm90CmV4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90IGNvbnZleSBhCmNvdmVyZWQgd29yayBzbyBhcyB0byBzYXRpc2Z5IHNpbXVsdGFuZW91c2x5IHlvdXIgb2JsaWdhdGlvbnMgdW5kZXIgdGhpcwpMaWNlbnNlIGFuZCBhbnkgb3RoZXIgcGVydGluZW50IG9ibGlnYXRpb25zLCB0aGVuIGFzIGEgY29uc2VxdWVuY2UgeW91IG1heQpub3QgY29udmV5IGl0IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiB5b3UgYWdyZWUgdG8gdGVybXMgdGhhdCBvYmxpZ2F0ZSB5b3UKdG8gY29sbGVjdCBhIHJveWFsdHkgZm9yIGZ1cnRoZXIgY29udmV5aW5nIGZyb20gdGhvc2UgdG8gd2hvbSB5b3UgY29udmV5CnRoZSBQcm9ncmFtLCB0aGUgb25seSB3YXkgeW91IGNvdWxkIHNhdGlzZnkgYm90aCB0aG9zZSB0ZXJtcyBhbmQgdGhpcwpMaWNlbnNlIHdvdWxkIGJlIHRvIHJlZnJhaW4gZW50aXJlbHkgZnJvbSBjb252ZXlpbmcgdGhlIFByb2dyYW0uCgogIDEzLiBVc2Ugd2l0aCB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgoKICBOb3R3aXRoc3RhbmRpbmcgYW55IG90aGVyIHByb3Zpc2lvbiBvZiB0aGlzIExpY2Vuc2UsIHlvdSBoYXZlCnBlcm1pc3Npb24gdG8gbGluayBvciBjb21iaW5lIGFueSBjb3ZlcmVkIHdvcmsgd2l0aCBhIHdvcmsgbGljZW5zZWQKdW5kZXIgdmVyc2lvbiAzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW50byBhIHNpbmdsZQpjb21iaW5lZCB3b3JrLCBhbmQgdG8gY29udmV5IHRoZSByZXN1bHRpbmcgd29yay4gIFRoZSB0ZXJtcyBvZiB0aGlzCkxpY2Vuc2Ugd2lsbCBjb250aW51ZSB0byBhcHBseSB0byB0aGUgcGFydCB3aGljaCBpcyB0aGUgY292ZXJlZCB3b3JrLApidXQgdGhlIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsCnNlY3Rpb24gMTMsIGNvbmNlcm5pbmcgaW50ZXJhY3Rpb24gdGhyb3VnaCBhIG5ldHdvcmsgd2lsbCBhcHBseSB0byB0aGUKY29tYmluYXRpb24gYXMgc3VjaC4KCiAgMTQuIFJldmlzZWQgVmVyc2lvbnMgb2YgdGhpcyBMaWNlbnNlLgoKICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucyBvZgp0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuICBTdWNoIG5ldyB2ZXJzaW9ucyB3aWxsCmJlIHNpbWlsYXIgaW4gc3Bpcml0IHRvIHRoZSBwcmVzZW50IHZlcnNpb24sIGJ1dCBtYXkgZGlmZmVyIGluIGRldGFpbCB0bwphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4KCiAgRWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUKUHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVyYWwKUHVibGljIExpY2Vuc2UgIm9yIGFueSBsYXRlciB2ZXJzaW9uIiBhcHBsaWVzIHRvIGl0LCB5b3UgaGF2ZSB0aGUKb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQgbnVtYmVyZWQKdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGUKR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkCmJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCgogIElmIHRoZSBQcm9ncmFtIHNwZWNpZmllcyB0aGF0IGEgcHJveHkgY2FuIGRlY2lkZSB3aGljaCBmdXR1cmUKdmVyc2lvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHByb3h5J3MKcHVibGljIHN0YXRlbWVudCBvZiBhY2NlcHRhbmNlIG9mIGEgdmVyc2lvbiBwZXJtYW5lbnRseSBhdXRob3JpemVzIHlvdQp0byBjaG9vc2UgdGhhdCB2ZXJzaW9uIGZvciB0aGUgUHJvZ3JhbS4KCiAgTGF0ZXIgbGljZW5zZSB2ZXJzaW9ucyBtYXkgZ2l2ZSB5b3UgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQKcGVybWlzc2lvbnMuICBIb3dldmVyLCBubyBhZGRpdGlvbmFsIG9ibGlnYXRpb25zIGFyZSBpbXBvc2VkIG9uIGFueQphdXRob3Igb3IgY29weXJpZ2h0IGhvbGRlciBhcyBhIHJlc3VsdCBvZiB5b3VyIGNob29zaW5nIHRvIGZvbGxvdyBhCmxhdGVyIHZlcnNpb24uCgogIDE1LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5LgoKICBUSEVSRSBJUyBOTyBXQVJSQU5UWSBGT1IgVEhFIFBST0dSQU0sIFRPIFRIRSBFWFRFTlQgUEVSTUlUVEVEIEJZCkFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQKSE9MREVSUyBBTkQvT1IgT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWQpPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgpQVVJQT1NFLiAgVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgUFJPR1JBTQpJUyBXSVRIIFlPVS4gIFNIT1VMRCBUSEUgUFJPR1JBTSBQUk9WRSBERUZFQ1RJVkUsIFlPVSBBU1NVTUUgVEhFIENPU1QgT0YKQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLgoKICAxNi4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuCgogIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORwpXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1PRElGSUVTIEFORC9PUiBDT05WRVlTClRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWQpHRU5FUkFMLCBTUEVDSUFMLCBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBBUklTSU5HIE9VVCBPRiBUSEUKVVNFIE9SIElOQUJJTElUWSBUTyBVU0UgVEhFIFBST0dSQU0gKElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gTE9TUyBPRgpEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRApQQVJUSUVTIE9SIEEgRkFJTFVSRSBPRiBUSEUgUFJPR1JBTSBUTyBPUEVSQVRFIFdJVEggQU5ZIE9USEVSIFBST0dSQU1TKSwKRVZFTiBJRiBTVUNIIEhPTERFUiBPUiBPVEhFUiBQQVJUWSBIQVMgQkVFTiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgpTVUNIIERBTUFHRVMuCgogIDE3LiBJbnRlcnByZXRhdGlvbiBvZiBTZWN0aW9ucyAxNSBhbmQgMTYuCgogIElmIHRoZSBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5IGFuZCBsaW1pdGF0aW9uIG9mIGxpYWJpbGl0eSBwcm92aWRlZAphYm92ZSBjYW5ub3QgYmUgZ2l2ZW4gbG9jYWwgbGVnYWwgZWZmZWN0IGFjY29yZGluZyB0byB0aGVpciB0ZXJtcywKcmV2aWV3aW5nIGNvdXJ0cyBzaGFsbCBhcHBseSBsb2NhbCBsYXcgdGhhdCBtb3N0IGNsb3NlbHkgYXBwcm94aW1hdGVzCmFuIGFic29sdXRlIHdhaXZlciBvZiBhbGwgY2l2aWwgbGlhYmlsaXR5IGluIGNvbm5lY3Rpb24gd2l0aCB0aGUKUHJvZ3JhbSwgdW5sZXNzIGEgd2FycmFudHkgb3IgYXNzdW1wdGlvbiBvZiBsaWFiaWxpdHkgYWNjb21wYW5pZXMgYQpjb3B5IG9mIHRoZSBQcm9ncmFtIGluIHJldHVybiBmb3IgYSBmZWUuCgogICAgICAgICAgICAgICAgICAgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKCiAgICAgICAgICAgIEhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBQcm9ncmFtcwoKICBJZiB5b3UgZGV2ZWxvcCBhIG5ldyBwcm9ncmFtLCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0CnBvc3NpYmxlIHVzZSB0byB0aGUgcHVibGljLCB0aGUgYmVzdCB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzIHRvIG1ha2UgaXQKZnJlZSBzb2Z0d2FyZSB3aGljaCBldmVyeW9uZSBjYW4gcmVkaXN0cmlidXRlIGFuZCBjaGFuZ2UgdW5kZXIgdGhlc2UgdGVybXMuCgogIFRvIGRvIHNvLCBhdHRhY2ggdGhlIGZvbGxvd2luZyBub3RpY2VzIHRvIHRoZSBwcm9ncmFtLiAgSXQgaXMgc2FmZXN0CnRvIGF0dGFjaCB0aGVtIHRvIHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBmaWxlIHRvIG1vc3QgZWZmZWN0aXZlbHkKc3RhdGUgdGhlIGV4Y2x1c2lvbiBvZiB3YXJyYW50eTsgYW5kIGVhY2ggZmlsZSBzaG91bGQgaGF2ZSBhdCBsZWFzdAp0aGUgImNvcHlyaWdodCIgbGluZSBhbmQgYSBwb2ludGVyIHRvIHdoZXJlIHRoZSBmdWxsIG5vdGljZSBpcyBmb3VuZC4KCiAgICA8b25lIGxpbmUgdG8gZ2l2ZSB0aGUgcHJvZ3JhbSdzIG5hbWUgYW5kIGEgYnJpZWYgaWRlYSBvZiB3aGF0IGl0IGRvZXMuPgogICAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KCiAgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCiAgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgoKICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgogICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCgogIElmIHRoZSBwcm9ncmFtIGRvZXMgdGVybWluYWwgaW50ZXJhY3Rpb24sIG1ha2UgaXQgb3V0cHV0IGEgc2hvcnQKbm90aWNlIGxpa2UgdGhpcyB3aGVuIGl0IHN0YXJ0cyBpbiBhbiBpbnRlcmFjdGl2ZSBtb2RlOgoKICAgIDxwcm9ncmFtPiAgQ29weXJpZ2h0IChDKSA8eWVhcj4gIDxuYW1lIG9mIGF1dGhvcj4KICAgIFRoaXMgcHJvZ3JhbSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cgdycuCiAgICBUaGlzIGlzIGZyZWUgc29mdHdhcmUsIGFuZCB5b3UgYXJlIHdlbGNvbWUgdG8gcmVkaXN0cmlidXRlIGl0CiAgICB1bmRlciBjZXJ0YWluIGNvbmRpdGlvbnM7IHR5cGUgYHNob3cgYycgZm9yIGRldGFpbHMuCgpUaGUgaHlwb3RoZXRpY2FsIGNvbW1hbmRzIGBzaG93IHcnIGFuZCBgc2hvdyBjJyBzaG91bGQgc2hvdyB0aGUgYXBwcm9wcmlhdGUKcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBPZiBjb3Vyc2UsIHlvdXIgcHJvZ3JhbSdzIGNvbW1hbmRzCm1pZ2h0IGJlIGRpZmZlcmVudDsgZm9yIGEgR1VJIGludGVyZmFjZSwgeW91IHdvdWxkIHVzZSBhbiAiYWJvdXQgYm94Ii4KCiAgWW91IHNob3VsZCBhbHNvIGdldCB5b3VyIGVtcGxveWVyIChpZiB5b3Ugd29yayBhcyBhIHByb2dyYW1tZXIpIG9yIHNjaG9vbCwKaWYgYW55LCB0byBzaWduIGEgImNvcHlyaWdodCBkaXNjbGFpbWVyIiBmb3IgdGhlIHByb2dyYW0sIGlmIG5lY2Vzc2FyeS4KRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcywgYW5kIGhvdyB0byBhcHBseSBhbmQgZm9sbG93IHRoZSBHTlUgR1BMLCBzZWUKPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZG9lcyBub3QgcGVybWl0IGluY29ycG9yYXRpbmcgeW91ciBwcm9ncmFtCmludG8gcHJvcHJpZXRhcnkgcHJvZ3JhbXMuICBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdQptYXkgY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGgKdGhlIGxpYnJhcnkuICBJZiB0aGlzIGlzIHdoYXQgeW91IHdhbnQgdG8gZG8sIHVzZSB0aGUgR05VIExlc3NlciBHZW5lcmFsClB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLiAgQnV0IGZpcnN0LCBwbGVhc2UgcmVhZAo8aHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvd2h5LW5vdC1sZ3BsLmh0bWw+Lgo=]]></data>
	</file>
	<file>
	  <filename>/function.template_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogU2FnZXBheTIKIyBBdXRob3I6IENocmlzIFRheWxvcgojIENvcHlyaWdodDogKEMpIDIwMTkgQ2hyaXMgVGF5bG9yLCBjaHJpc0BiaW5ub3ZhdGl2ZS5jby51awojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NhZ2VwYXkyCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzCiMgICAgICAgICAgc2VlIC9TYWdlcGF5Mi9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgppZiggIWlzc2V0KCRnQ21zKSApIGV4aXQ7CgplY2hvIGNnZV90ZW1wbGF0ZV9hZG1pbjo6Z2V0X3NpbmdsZV90ZW1wbGF0ZV9mb3JtKCR0aGlzLCRpZCwkcmV0dXJuaWQsCgkJCQkJCSAgJ2Zvcm1fdGVtcGxhdGUnLAoJCQkJCQkgICd0ZW1wbGF0ZScsCgkJCQkJCSAgJHRoaXMtPkxhbmcoJ3Byb21wdF9mb3JtX3RlbXBsYXRlJyksCgkJCQkJCSAgJ29yaWdfZm9ybV90ZW1wbGF0ZS50cGwnKTsKIwojIEVPRgojCgo=]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[R0lGODlhXQAhANUAAEOqQonJiPf791SyU77ivqzZq2++bt7w3prRmmO4Yuf050utStLq0XzEe7Xetf///2i7Z5XPlaXWpFu1WoDFf7rgue/4787pzk+vTq/brtjt13XBdEqtQmu8a4zLi7Xerfj8+L3hvMXlxV+2Xp3TnWa6ZZzOlFGwUK3WpXK/cYTHg1q1UnvFcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAAHAP8ALAAAAABdACEAAAb/QIBwSCwaj8ikcslsOp/QqHRKrVqv2Kx2y+16v1MVeLytkM9XM3otVbPfTTccmYhkMhIVRtiQZAoIG0MlJHgQHCQkYn14BkhyAA0QACV+EpNEG4UZEQMACQELRhSCcQ+nqA8OCqmnFhsOrSKnBwetDJ5FkLYVrQVCJRatAgYqDwxFEqpNJK4EFQy0IA8HISEardQXwrIkBcIHokS7DwIIBhsEpxQAKSAODR0N0eECDwlEwqVL2CB7QgNILEixD0ABVBY6CFkwC1WAIQtsIdBVxJYHIrM0ACQy4dSCEA9IDEnxwIKTaA8oiEsSANWvIQlQHShC4YHGcRUfNCDS4BQH/yIQNhh7MKHnTCGxMjhpmcrCgQIDKIg4oKAqt5BEBiAUwZVrNJM4idjaOWTEqQmfGqZCK2yEEGGOlrLKRheVyCEY6iKkKFZn1rMbpomIQCGFPbSxJpJUIOVECaFqNahIQVnZKQkcZQbYzDkAu7BDxhKJ+QADqwhEDgMwYBNArJdNJlz8eyoFkQiokA3xgHAlgFx8Q/sdglvBAo+piQphNUFYCScGhGmI0KFEgwuoLkDAgAGCrdwBGhSYhkpDgxEdJAjQ4Ba0EF5DTrCScPxBXACW0eJ/MIuxkwTY0GWPXnUN2EpCwb3nigMOCKPACQDMIgABBAgzTQSikPYAZlA0QKDAXAIw4AEHEXz3wAWWSVCBMAKEAMEpImxwwYAHCGQEOQ1mp98JkRmAwDSloNTeFist4JsQpCm1kBLk7FSCAcBldeQQHVCDBgQFQAgABtil5ESTVWTwwERk8HaKBhqQp1scOZElxQQggBDlFxiAJMuUSYAJRQEa5KgkGhPYkQEC+ECh5xNingLJHFYYOcUEHczJ6KSUVmrppZhmqummSAQBADs=]]></data>
	</file>
	<file>
	  <filename>/images/payments-by-sagepay.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/PaymentsBy.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAGUAAAA7CAIAAADtmtMfAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REE5RTU3QjA2RjIxMTFFNDg4NzM4MjE1MEZGQzM3NDQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REE5RTU3QjE2RjIxMTFFNDg4NzM4MjE1MEZGQzM3NDQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpEQTlFNTdBRTZGMjExMUU0ODg3MzgyMTUwRkZDMzc0NCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEQTlFNTdBRjZGMjExMUU0ODg3MzgyMTUwRkZDMzc0NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PsD6IOYAAAo9SURBVHja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]]></data>
	</file>
	<file>
	  <filename>/images/PaymentsBy_Horizontal_2.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAAL0AAABGCAIAAAAW4AK9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyhpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTQgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QzAwQjM2QkI2RjFGMTFFNDg4NzM4MjE1MEZGQzM3NDQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QzAwQjM2QkM2RjFGMTFFNDg4NzM4MjE1MEZGQzM3NDQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpDMDBCMzZCOTZGMUYxMUU0ODg3MzgyMTUwRkZDMzc0NCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpDMDBCMzZCQTZGMUYxMUU0ODg3MzgyMTUwRkZDMzc0NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PgNHypcAABaYSURBVHja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]]></data>
	</file>
	<file>
	  <filename>/images/paypal_button.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/visa-mastercard-paypal.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAANkAAAAcCAYAAADsmxpxAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAABZ0RVh0Q3JlYXRpb24gVGltZQAxMC8zMC8xOfUQFMsAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzVxteM2AAAdxElEQVR4nO2cd4BU1fXHP/e1mdmZ3dle2AILLCsdEaQooIBYIhAUY0msMcYSW4y9EhGNxhLsIfqLscWfsYsFRKQI0pRel2Vhd1m2787O7My8ee/d3x+zS5FFRMWY/Pj+NfPuO+fed9793nPuufddIaXkCA4Necdf/x9ltIqFj4p/dxv+P0P7dzfgvxmmULGEgmBfTkoEKg6GY3Og3i+BaEwl5giE2LdAApoicesHlj+Cnw6OkOwHhgQiio6CQ+dogG6RRnLNAH4rCkBQNag0Eil1p1Dm8mMKFbdjobQRUUoImhq6KumZFaBfTjNFaUHSEkwQ0BjWKanzsXZXEmur/UQsBZ9ho4j/KOf6/wpHSPYDQRD3XI6AIcEKTmks5ahIPUlWFEfs68tUKQmpBlvcKcxO7srniXlYQkGaEkcKxves4qJBZQzKayTZYyKlQMq4zxJCIoSkJaKzcmcyL3zZmXfXd8J2FBJ0myNU++nhCMl+ILQqGulWK7+uXsVxLeUARIVGi2p0eL8iJX1aaxkQqma0L4en/EfjZOo8MG4NE3pVgZS0xjSawx3Lq4rkuC71jOhayydbsrjtoz5sqk0i0RU7bM94BN8NR0j2PSGAVkWnMNrETZWL6BxtpkV1HdSjOEIQFhoCGNBUxbSMCL0u1ylKDhBo0g8qbzuClmhcfmxRNb0yA1z6xiAWlqXhd1k/qkf7/T1PJebmZPQUCDVmWbYZsyzZhs2l5YE1G8qaFr7zeCjJ547+iM3i9c83ZlQ1hHpYtmNZtmNbtmM7UkrLdux1O+qbWyNmy8x7zgoA9vep55q/ftIpw5+QYdsOLZFY7Y2TBrdU1ge9lu0ENpTXu8SjF/qvS/OJft2ztWIhhGnZssm0iQlQY7aMhk352sQH69/pSLkYftUvcCf9CqG0gtCRdpSKZVeTkGnhz/kLuicZKW1sS1Bf8qhc88aC3bJFoz3kHXM6muscknIHo3s7xWOu0C6adq7EbH2Zhp3/K9e9up8BxPHXnoXhGY+iGkhA2pLq1ffKdR+s/z7G+rbYO7sYVVSyzRBTyueRHQsRVPRDS0Y4EIsJOp2iklbgoOVq+AoFziE4JAkkGhYNYYNfvDyUlTuT8Rl7iHa4s4vH/uyqO7ftqPqjEPtX4zgOST5v/cC+RbMz05Ofeur+axd0oOIHx9V/naWU7mqeubK09hRV2b9dUkKm31MxoFvWP/sWZDxx3cRB279jVWrx5TPWh02rB1Kiaer00hm/nfLWF5sH2rYU26qbirTrX2h+5s0/pB5bmK2djJQnp/nECboRwzZdSCEIhp2T/3ZF8rhLn25asbdmMfRijawBl+NJOTF+QUC4cQ5upZmuI3uhuy5EUeM3O3YQIZ7YLTvi2mH0mng3nqSTEWr8iSHeW3RvLhlFuYQbsqirfw8I7lPvmFsn0qnf86i6Ly4nwLElKJ8DPwrJ2uEg0KTDFdUr6GS2EFBdh0QwgcQSCr4CQcsqi/oF4O9pUXS5HjeL8231QIupkeGN8tj4lUx8YTiRmIqm/ij+zJuWnDR809ZyXIaO4ziAQFEEth1/gJZQOG3Owi/P8Sd5f3HbA89PmHbLJTMPd6Ny/F7/+0tLR7YTzHYk7b8t20ERgurm1rz3lpb8YVNFw6ml1U0nT79sbOWh1rOxvO5oR8ps25H4EwxZmJW8AWjoVZCxYd32Wt/gopxSRUoZmfRQ/fzsS6tuH3JLw8g3VnpvXlWbE1ONCAo2bkNJPXOIZ9x+2hPyxuLyDUOI+Fu2otBS/bhcPcuieUd/hBInj5SADODL3AogRt5wGpm9ZuFNjxNsd7eUbb1KxglrhrbIDX/fl2C9Jrvx592Mavh2ExMJihCkdj7xUA30fRFWNMY2lTEwWEXLIRIMwAoLEo4x6DfFoO8UF8c84qLrxTrfZelSAM0Rnf65TVw+tJRg7MeZCdw//dXODY2BwYqIj5EetyucmpL4FPDHznlZz6SnJtXHYjEMQycUjihvf7TwAejQVAbg/oaqvEDSQZrjBVIBV36Gf7AjSRDESZWa6N4M3AtM7ZaT/LrXrVsCgUfX2LKzsfeuhuClB2iXG3AdqMLXFm4cKoRIcBxJgluvu+uc4esAijulVJ4xrMemE/oWbN3nTWyvN1uF4NGsyX+95Ib+nxbf2PNj3JrG9jq1KOXr2n1pZ6DobmQbKazoCnasmAWA4/SKt7etLNRYQcOWCjHm9nQyejyGy+vDseJ6bLOWcOPbNG5fjaq7SSrohds7ElXb3yvlFI1Fcw3Zc0EAUiJUgbR7CCESpZQtB34HPxwcBH4nyqlNJZgoSMdBKPGBRUqJEAI6CJ/2aboG5nqT1bdLpB2/V9qgGNDzeh1XpkBa7QPVQfS1IWqq/HLAdl78sjO1IReG+i3d4XfEP96Y3SXQEkzTNA3HcRjYr+ijd56/96r28itv+8uKj+cum94cCHmEImhsbskB0qdNf6nTGzMXXLyrrjkjxe9NMXQtAYQSi1mRUGu47tTRQ+Y8Oe2a5wAuvO5Pt6zdVDbesR2lc27mF2//z713sleEU1Ze5b7u7qemlJTtPK6gU6Z6XN/Cs5tyeg4WIC0phcfQKMxMeuzdOyc/3S5z7kPv3j9/XcUt7SGupipDgITb/jF/zAfLt45qNa3cZK8rVVUUNyCjMTsYs+zKi0b3fv2GM4bMbtfz4YrSYZblaIoisGxZNaS40/Kv22i/4U5KYmJ0ZNFNX55VvD2YKh895g2R7jEHjB2WkfjJ4toWADH0snxyBpyOosS9j7QgHHhZbvkoLM6cAYnZxbBXCCjlevn5M7YYdeNYVL37PnFQQ9kFcs7Uj9r/CiFg2O+SadhqwM3sc33CYxeiGEq8TgfAauvZAodODP51MbDfQx4ORBWV/sFqCiPNhNrGEiEl0rIQmha/8HXC7fXfrG7EM8BP4RkJ0No2f1IUcCRSguoSKE4EyxYILQEcE2iLDoRg9yAWtw5SSlQFYrYkP6WVE7vV8uKXBYedZEWFnfrNX7IaQ9fBcehTXPj+3uXnTDxxybKvNrY0NAc9GgJFiDDgWr56y8WV1Q3XxmIWleFI3C7E37Omqcycs+QXjVfe1++Vp26/2bLtrqXbq4bHYhaGrvZ4d/ai5yacNHxtex2PznjzjOWrNt/UFAjiS/C8+umCFdVNRe5RUkphO5JMf0LtaYO67dMvehekz5u/ruIWiJvTkViAeGfJlofDptU9GrNoCZtIKVGEiLdLVXhx3vqz3lqy9c6FfzrvCYC6QKRnzLZRFUEwHN0BhL9uI6VDy+m1n2K08uTGsVz/1STSkkX22+ebBbvLkzqNx+XNwWnLScQipTSXvgyAlDqe5G776EtIKQVAyE4IxD5e2ZM6Qgix2x1LKZGLHm+SGz+o2UfH8GuGoCecihCgaBCq+4z6bW/HSQboCankH1vU4fMcJvQL1dIUjZD36AMMnfMeTk42ObfewLBP3yf7tHGYtfUgwW4N44TD2OEwwnGwhSD/6qvIHNYbu64eOxrDMS2cUBgRs7ADrQTWN9HgFOEZ+QL+SSvwj5qBsFsRSKQVQZEmiowhrTDCiaLKCE0NtTTkXANH38fx+eU/hgkSDF0/pp3rqqqycm3Jor3KlSl/fvH42oZAmqoogEBV1SpgZ9S0MmMxq7Vvz8KPzh4/8pGLf3HyHwf16/GWpqkxgKZAUF25futlp19we+ZR3fKXaKqKYWi0hMJJL70+O6e9gj/c+2zWp59/NbW5JUTP7gWbr7powp1z3n/WbGgJ94nPDsHQ1c2Xn3r0blKuKatxbdnZeFr7lkJFCHRNXfF3CDW3RpMMVSkfdlTu6+eO6DntotF9/5ib6lumCOE4UlLT1Jocs+2z2lTle1xahiMlbkOTA7pmftmRkToO3GMsxWxpwK2mPrllNHlGTfplrrd6AOtESjcPJ97wm/jITHxkNcPvycUz4qRY8Xw+gy7OxkgAJFhRSaAqTjLbWobjRFH2inG9qbcxYfrxYty9M5h91ytS7j/dF11HKPQcfwm6y4uU4JiS1qYn8SQngZzcZiloqRkAvNrhMx0GFIYaqE9Lpcf4U0hMTsHs34fki87Dl56OWtSNY2e+jjevE5X/eoeK9z+i9z23kNyjiDmvvEbhlDtg7mKW/n4K/afdjVAEK667GWNAP3qcNJb15evoesyvaBZuPnvhSQqzDPoPvA8j8xicllJqlj2KXngeaSkJNJZ9TkrRacQCFk3uwaAuoTC5CY/u4MjDl1i87MZH/OU7awYpbQkFVVUoK9/Vpfj4C83jju2TGQyFL968rfzCcCSqArhcBmecOuI5wJly44W3Durb4wLA2kuleu6VU5/7cO6yC1VVQUBU01SZmpy4SQhQFYXG5qC2bM3m7HaBXTUN11XVNBS6DJ3ahsBb508et/XdpSWjDU3xWVEHAYRNSz/7wXcKV22riU44tnvvjRUNF68qq5moqQox2yEr2Ruub2l9+yKQ6VeOG3X64O4b933SUQ90v+zZjVHLKRBCYNnx3O/U1xYNAlKlBE0RwTOHFXcYRXVMsrlTSxj/2Dzc9iRshce2jNHDOcH+U+Atek8ag2oMANoSFK11VKz5627Zzsf1R4i0OAMF2HYLZYs2ALDwLwv52cPTSUi+CqEkoKjxoSYheSQu7wh+/sQV4oSbptBcN1t+9fye6X9yYW8SUs6O/xEQa62kteRdUkaPxjJtNENFAoZ/mBh1k1fOezD0DX3je8NBoDsORjSEq3s+Xl2nvqaWpNEjcSEIB1pYvnkLCS6dFCQj7rkVa8KpJPbtzTt3T8Wtxpv75aZ1DHrvOTas34A7P4++T09lWyRM6injaP7IR6ecXJpmn8XQ6CdsXZ3Bh3VXoLgXcfypl9CYXkdO4dlsq6tBLxhE2PGysWITo0dnwZqleA2bRFeM5oh+2Oywcl1JRkVVXRdNjWeRbduhvjHwoaHrvDd7MU6bp7AtG3+Sj8L87Ocf++OVzwIM6ttj+wdzl3Z+6Kn/zdqwuSypR7e8tC752Z1Ld+wqVoTAtmzy8zLX3fDbyYEn//5eqSQeSppmjK4FOZ0B/vX+/OK5i1ZeLQDd0DF0LQjw5qJNIxwpEyBO/Mr6lmMbg5F1jpS8PG898fAaQOL3uiLFuam/fe2mCasAxh/bfdNj76zo/sq89Zn1wUhin/y07OxUby7gRcYzlKGwWQ7w7tItx4ajVoKiCEzLaTl3VK+lHdmpQ5JJKR1x4s3/wu2diIZSbSdzf+lpA54TQufnT96CZrRnDSFQeY/86n/2JCnSuw1Cc6m7U2S6u5zk3FVteiVwkzj+6j/jz7sWT8qFaEYuQgVFE7h8w8nq+SH+wNtCiHOklPHVotwBD6O5/fG5mLRpqrxafvGaCXwkJj/zJeiDUVTQXEdjtXYHVh16lzk0KEismIXStQtGxKS6vILi00+hbM06+nbpTHFSEskD+qEX5BOqqWPxqlUU9utDN7eHKjNKQlU1VR/PYejll5JeXQ1eLyG1gc59e7P26b/RUFaB+5QReKNrSUpNwpXVGVnch4DsRIJu0hhJpLsRY/bsZxlz7hTU5Rez/ZP1REYvR2spR/l2eZLvhVNGH9v7ieffQtd1LNtGEQIHCEejCCFQAJ/XQ3qqf01GavLLH7w07U8AN9331+OXrNhwli2ds6prGnMksH7zdlau24qmqui6RjgcISUpceWIIf0CIyddb3crzG1oag6mWrZDbnZ6J4C/PPfmfZZley3LITM9MTZqSL93AJZs2jnYjNlqfBosURWFiBmf2qiKggCSvW78Xtf8LplJ0//x+9PfABh352uTfzZFPePV+eEJTaGINxqzWF6yC8tx0NV4l05M0OlbkLEWoClkHhWJWahCoAjqgeqO7PQNeV5tOVKpBicHRRCTWo/KIZffgMt3FFLG50WR5q2EG/+5j1g00BVX4p50fKRpE9LcZ0FZLny8BrhdHH3e3+jU/7d4My5F1dPik3pVQU+YwKgbxwEzxcgbxpHT58R4mQJmsBo7Vi7G3NEb6cRI7bKr3WmiKj48yQM4zCRTkEQUjZCiUtinJ9GaWsJNTSSFMog0NFKfl0uvqXey9oWXqavaxfhRIwnf+xAvVlZxyd234t9ail22A8WfiAA2f/AxdWvWE3O5+NU/ZlC5eBlRoQAG7tzRVJd8ht13GlnZ2cx9cTrdut+H5vah2w24Y9vwJaqIxFSOGzsZF2CHttFqGQRNDVU5PGtlvu6nGQP7FV8ihILjOPg8HhDy4XDELGvP2Nm2Q2Z6SsOS959YAJTPmr8i9YpbH73P6/Gcu217ld+f5F3TEgo/ZBi6pSiKU1SY1397RfWvbcdWUvyJBEPhWYD8x/RbYm98sOCzeV+sPkNTVVatLx03YNxlL5bvrJ0gAMPQqnVdveCpB65d897SkmKhKAMsRyIEeAy9Kmrb94t2txqH7JmfuuOfN038DGgZeP3fRyd5XFdWNQbPDEVi5Kb6PmkJmzM1VbFQhPTo2sWOIwdaNkJTlIqTji587ZXP1uen+tx9g2ETQ1ftMQO6vHYgWx2YZLtqtuJNW4kvPQfpgMvXg079bwUnAaHEs13hpmflwifq20VE9lEJDL6seB89jRUr5dIXO6xCfvXKNuAWMea2EtK6zUA14uRUdY3Mo+KJlpSC6xGKtucbD5ef9O7vtyXXLBTVDyIupxjgzzvqwF3jh4MCbE5IZmivYuo2l1Dv2Kz/cBbeoq5s3FaG0dxM/0kTiCb62FC2nQmvvYCSmcHWTZvZVLqN/FNPRpn9CfM+mc8Jl12BXd/AZ8tXUFsXQN1SQV3dVj79ci3DBz2DklfB6jUlZBSkM3LC1dTV1SMUD2Y0gGxYzqdzVzB86GMkRSWt9aV4k/PZaSYTikKi6/CQ7Nfn/Szvn29/OlZVFUwzRmFx9trP/vXIHUDkQDIr1245PRiMXF7fECAl2UdhQacH573xyEvt5Q888eoVDz71muJISV6njB3jxw5ZCXD+5JOiX60r+WLeF6vO0DSN2oambgLRTVEELkOPTTz5uGlPTrtmFsCbizefLiAXAaoicOnqF1ue/c3j3/QsAi7dsrPxTAl4XVrzkocvuBzY2l7e53fPTWxujQpFEYSiVsml4/pV/PLhd38Visa6CQQO0rzr7GH/OpD+A5JMbphhi0mPL0DKU+PJQKHi8ibFPZQAy6zBDO6TrmXwb9LxJGdDe+5CgCdxFYD4+ROF7FpfgNu/hHkPRNozO2Ls3SpCT4l3W9muO0rNhqVizO39Se08Yk+6WoKqe1F1776NbS/TIBTqL9J7eGTd5v1SqT8kJLA1rYD1f55OSlOIWpdBY0MztZ3zyK6qZqvHRXlRdxoqKzFUDTMrgzSvF33+IspUhcbX3yZ72XJK575C7YiRpEqbli1b+fzz1yiIlnL2uCirZ13C+18MpTgrSGzTauZsH4iM1OLVLVqiKv4dFqOOsnl/3tUsLikm0NRI92yLo7s0sbisC0iF77kt74DITEs+3mlbjhBC4DL0z4Bv3JsYNS1fPNunEwpHcWz71Nq6pq8+X7Eu8a0PF47/bNGqK1RNxY5ZJPoSVl52/vjadtmGpkCJIhSklLTPAQHSUpKWPTntmqfa/y/eWNm/1bRQALeuW6N65y082LNIGc+yq4rAdqTnqmdmXXDXOce9uLxkV8Fj7yy/JBiOjZISXLpK1yz/WoCvttYUByMxVFWgq0r95sqGkpzUxA71f/O2gOr1X5DTvxU9IWHPjow2r2G2fiDnTNuwz/0tu7qQkOpFtmXpbdPG7d8GgDvpWHL7/ROhLuH0P68TJ96yC6GopOQPQHOPRtXAaVsDkrEFcsEjK8SER59CdccJJURcnxVtBqGxh3kC3ZMY964OuBMHceyF+cDmgxn3+0CVDtu9WaR9tYIUO4JfqEhVIWXnLoSqcgwSa+1GsjQNKcF2HKRtY3jcpApB9JU3sVN9TPy1gZ74HtIS6F0NbMtCHufG7ffSTWkmGHoH1VEo6uPCjM5C11VsO/4hp+2A0NxMHliPac5FS1cRSOqqXMzZ1Bv9MG762FxacSrEQ0Kf10NtffMS9izcdYgueVmfulxGc7A17JdSsnFr+Xl9xlx6nttlmKqi1IdawykAhqYRDIbXAK3tsouWrd+maRp7J58NQ4tddPYpd7AnQ+lNSnD1a24127dQRX53+sDZHASJHmNBayR2dkvEJOpI492lW++auaz0LrehNYNUbEcaUkpUIRjbv/M8gJxUb+8N5Q2oiqBPQfqXo/p2PuBo9s2vYfEzS5g8oxzYEwLGt1BFaNn5wn7323ZPpONDUUFRIRTYxraFtXAdtNYl4M0AyRA0fQgJaW362hdqiS/GhhvLqV73OzH86kJyep3dvoiLBMKBR9n6yeu4kt2gCBzLQVEV8gffiy99BI4NqjuDUOMwDjPJNOlQrScwJ6uY82vX0Nz+SYumtftcFMPY7dPbFyTb34SWnAgWrJtuYagGsQiAxA6r5JzsUPhLlXBEQ3PFd5BFLRCqF7N98adNqXQkEUcDRcOU4PeavLS4gA01Sfjde2fHf1g0BYIVLkNfYtuO2jk3s+byC8Z/cTCZ8yeftHHlupJr3vr489tdup4LWK3haGXv4i7vX3L2Ka/fOPXZZ6TESPF7o50y097dW3Zgv+4Nm0oqdm2vqM7WNRUzZjH06J5/v/43Z87d6za3oamrXJoaNTRVURU29sxPX3Owds27/7wnT7j11W6uUGQykCqhVTpO5ZgBXR5McOmemctKro6ajqJpouzmyUM/AEjyupdrqpLhONLsX5i5Pxf2gjjYGR/i9D8/gy/jt3suCIgE3uftqyfIrwmLSU/OwOW9FASoOgSqZjLzD5OkI2Ni9O13k9njnt2k2XvPohBgxSJEml+iofR++fkTpWL8w/fiTbsjvr9RQjRUyuo3hsiST+r2a+OkJ27HnTh19zjaUDZLzrr75IPY9jujfRe+LRTcjsV9O+bSOdJMSD3EHfiAZQrSTzPo1N/BDkMsBEnFAle6QB4CRyTg1W0qmj1Mm9uDhWUZNIUNVEX+FM/4SJ/+tzdG+v2JrReeNW4+e3ks4gP/fk/+p8dfTXl39uJl60u2dxMIcjJTG26+6tyBF5x10nfdPb8fKutber2xaFPx0YVZNSP65H/+tWKV7xh7HzygKJnzClm9s0CY8QtSo6X62a8TDIBIUwXhhk+AAFKkYAY/lk5bGr654hWsVi++rJEkZhUh1BTAJNy0jcDOT7Hlyyx4aLGUUor8Y1x0HeMjZs7GiYUQwocVmdURwQBo3LYY3fchimaClDj2ASffPyQ06RBQXTydfQx3lS/A41iEFe2QiKYKSaDEITldouGQPkpH0cGJ0vF21Q4gAbfmIIHbPu7DZ6XpuDUH5TBlFn8A1F1z6ZlvHqCsw6Glqq5x3NYdVd1UVQUJA/v1uPeHJBhAblri+mvGDzrQlxzfeXJ7UE92BPvj66dVhVSdIS2V/H7nEnx2jJB6CAvAAoyIRUtYo/NFBr0n2bS0ageZ3ewLn2FhOYLr3hvAS18VkOiy4scUtJX/BD3ZIWH+otXpV905fWXlrrpc25b0OarLlyeNGHjiPTdcGPh3t+3boOO9i0dwSPDaMZYk5nJP/ihKPCn47SiubziJqh26tEmyotQm+Hi4x3BuaDmONZV+/B4Tz7c4icqt2fgTTEobvZz76hBe+qqAJHcMZS+C/Tfg/qdfnVpVXZ8rhEJaSiL5OenT/lMIBkeOH/jB4LVjbPKkckfBCZzSWMqY5m3kmQEUKbGFstsxCeLneyCgWvfydlIBM1OKqNc9OFskE8uHc/GgMs4dsIOitGA8iyjF7g00QsRDTIBtDV5eX5PL35Z2pTrowu/+7zvfY3tFdVrFztqxqclJ9aqqaEd1L5ihohwo1PxJ4ki4+B3wTYeb2kIQUXSSrTA9W+voGa4nzwzgs83d54HsNBLZ4EljQ0I6NboXt2Oht6WmY44gGNXIToowNL+BwfkN9EgPkuyJEygQ0Sip97GsIpUvdqRS0ezBq9sYqnPACPM/PVz8T8cRkn0HfJsThG0hMHd/+S1RiIdwe4JAgS5ttA7OGBDEyRaJqbsvtHsvW4rdm188uo32LZIbR0j278WRcPEwQZUSz9dy8JL4N/YHQ/sJwT6Xtc81+NYJxyP4CeH/AKOlBuiOhA0nAAAAAElFTkSuQmCC]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogU2FnZXBheTIKIyBBdXRob3I6IENocmlzIFRheWxvcgojIENvcHlyaWdodDogKEMpIDIwMTkgQ2hyaXMgVGF5bG9yLCBjaHJpc0BiaW5ub3ZhdGl2ZS5jby51awojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NhZ2VwYXkyCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzCiMgICAgICAgICAgc2VlIC9TYWdlcGF5Mi9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgojIEEKCiMgQgoKIyBDCiRsYW5nWydjaGVja291dF9idXR0b25fbWVzc2FnZSddID0gJ0NoZWNrb3V0JzsKJGxhbmdbJ2NoZWNrb3V0X21lc3NhZ2UnXSA9ICdDaGVja291dCB3aXRoIFNhZ2VwYXk6JzsKCiMgRQokbGFuZ1snZXJyb3JfdHJhbnNhY3Rpb25faW52YWxpZF9hbW91bnQnXSA9ICdBbiBpbnZhbGlkIGFtb3VudCAobm90IHRoZSBlbnRpcmUgYW1vdW50Pykgd2FzIHJlY2VpdmVkIGZvciBvcmRlciAlcy4gU3RhdHVzOiAlcyc7CgokbGFuZ1snZXJyb3JfaW52YWxpZF9kYXRhJ10gPSAnSW5zdWZmaWNpZW50IGRhdGEgd2FzIHJlY2VpdmVkIGZyb20gU2FnZXBheSc7CiRsYW5nWydlcnJvcl9pcG5faW52YWxpZF9vcmRlcmlkJ10gPSAnSW52YWxpZCBvciBtaXNzaW5nIG9yZGVyIGlkJzsKCiRsYW5nWydlcnJvcl9taXNzaW5nX2N1c3RvbV92ZXJpZmllciddID0gJ0EgY29kZSB1c2VkIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgdHJhbnNhY3Rpb24gY291bGQgbm90IGJlIGZvdW5kIGluIHRoZSBkYXRhIHJldHVybmVkIGZyb20gdGhlIHBheW1lbnQgZ2F0ZXdheSc7CiRsYW5nWydlcnJvcl9ub19tY3J5cHQnXSA9ICdObyBlbmNyeXB0aW9uIGZ1bmN0aW9uYWxpdHkgZm91bmQuLi4gdGhpcyBtb2R1bGUgd2lsbCBub3QgZnVuY3Rpb24gcHJvcGVybHkgdW50aWwgbWNyeXB0IGV4dGVuc2lvbnMgYXJlIGVuYWJsZWQnOwokbGFuZ1snZXJyb3JfcGF5bWVudF9kZWNsaW5lZCddID0gJ1BheW1lbnQgZGVjbGluZWQnOwokbGFuZ1snZXJyb3JfcmV0cmlldmluZ190cmFuc2FjdGlvbl9kYXRhJ10gPSAnQW4gZXJyb3Igb2NjdXJyZWQgdHJ5aW5nIHRvIHJldHJpZXZlIHRyYW5zYWN0aW9uIGluZm9ybWF0aW9uIGZyb20gdGhlIGdhdGV3YXknOwokbGFuZ1snZXJyb3JfcmVzdG9yaW5nX3RyYW5zYWN0aW9uX3N0YXRlJ10gPSAnQW4gZXJyb3Igb2NjdXJyZWQgdHJ5aW5nIHRvIHJlc3RvcmUgc2F2ZWQgdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24nOwokbGFuZ1snZXJyb3JfdHJhbnNhY3Rpb25fZmFpbGVkJ10gPSAnVHJhbnNhY3Rpb24gZmFpbGVkIGZvciBvcmRlciAlcy4gU3RhdHVzOiAlcyc7CiRsYW5nWydlcnJvcl90cmFuc2FjdGlvbl9pZF9taXNzaW5nJ10gPSAnVGhlIHRyYW5zYWN0aW9uIGFwcGVhcmVkIHRvIHN1Y2NlZWQsIGJ1dCB3ZSBjb3VsZCBub3QgZmluZCBhIHRyYW5zYWN0aW9uIGlkJzsKJGxhbmdbJ2Vycm9yX3RyYW5zYWN0aW9uX3BkdF9mYWlsZWQnXSA9ICdQRFQgRmFpbGVkJzsKCiRsYW5nWydlcnJvcl9lbmNyeXB0aW9uX3N0cmluZyddID0gJ0ludmFsaWQgZW5jcnlwdGlvbiBzdHJpbmcnOwoKCiMgRgokbGFuZ1snZm9ybV90ZW1wbGF0ZSddID0gJ0Zvcm0gVGVtcGxhdGUnOwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnU2FnZXBheTIgR2F0ZXdheSc7CgojIEgKJGxhbmdbJ2hlbHBfb3JkZXJfaWQnXSA9ICdTcGVjaWZpZXMgdGhlIG9yZGVyIGlkIG9mIHRoZSBvcmRlciB3ZVwncmUgdHJ5IHRvIGNvbXBsZXRlLic7CgojIEkKJGxhbmdbJ2luZm9fdGVzdF9zZXR0aW5ncyddID0gJ1doZW4gdGVzdCBtb2RlIGlzIGVuYWJsZWQsIHRoZSBzeXN0ZW0gd2lsbCB1c2UgdGhlIFNhZ2VwYXkgVGVzdCBzeXN0ZW0sIHlvdSBtdXN0IGVudGVyIHZhbGlkIHRlc3Qgc3lzdGVtIGNyZWRlbnRpYWxzJzsKCgojIE0KJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAnUGFydCBvZiB0aGUgRS1jb21tZXJjZSBjb2xsZWN0aW9uLCBwcm92aWRlIHRoZSBhYmlsaXR5IHRvIHBlcmZvcm0gY2hlY2tvdW50cyB2aWEgU2FnZVBheSc7CiRsYW5nWydtc2dfdGVzdG1vZGUnXSA9ICdTYWdlcGF5MiBtb2R1bGUgaXMgaW4gdGVzdCBtb2RlJzsKJGxhbmdbJ21zZ190cmFuc2FjdGlvbl9jYW5jZWxsZWQnXSA9ICdUcmFuc2FjdGlvbiBDYW5jZWxsZWQgZm9yIG9yZGVyICVzLiBTdGF0dXM6ICVzJzsKJGxhbmdbJ21zZ190cmFuc2FjdGlvbl9kZWNsaW5lZCddID0gJ1RyYW5zYWN0aW9uIERlY2xpbmVkIGZvciBvcmRlciAlcy4gU3RhdHVzOiAlcyc7CiRsYW5nWydtc2dfdHJhbnNhY3Rpb25fc3VjY2VzcyddID0gJ1JlY2VpdmVkIHN1Y2Nlc3NmdWxsIHRyYW5zYWN0aW9uIHJlcGx5IGZvciBvcmRlciAlcyAlcyc7CiRsYW5nWydtc2dfdHJhbnNhY3Rpb25fd2FpdGluZ2lwbiddID0gJ1RyYW5zYWN0aW9uICVzIG1hcmtlZCBhcyBQRU5ESU5HIHVudGlsIElQTiBjb25maXJtYXRpb24gYXJyaXZlcyAoJXMpJzsKJGxhbmdbJ21zZ191bmNvbmZpZ3VyZWQnXSA9ICdUaGlzIG1vZHVsZSBoYXMgbm90IHlldCBiZWVuIHByb3Blcmx5IGNvbmZpZ3VyZWQsIGl0IHdpbGwgbm90IG9wZXJhdGUgcHJvcGVybHkgdW50aWwgaXQgaXMgY29uZmlndXJlZC4nOwoKCiMgTwokbGFuZ1snb25saW5lX3B1cmNoYXNlJ10gPSAnT25saW5lIFB1cmNoYXNlJzsKCiMgUAokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdUaGUgU2FnZXBheTIgZ2F0ZXdheSBtb2R1bGUgaGFzIG5vdyBiZWVuIGluc3RhbGxlZC4gIFlvdSBjYW4gc2VsZWN0IHRoaXMgZ2F0ZXdheSBtb2R1bGUgZnJvbSB5b3VyIENhbGd1eXMgRWNvbW1lcmNlIEJhc2UgbW9kdWxlLCBQYXltZW50IFNldHRpbmdzIHRhYi4nOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ1RoZSBTYWdlcGF5MiBnYXRld2F5IG1vZHVsZSBoYXMgbm93IGJlZW4gcmVtb3ZlZCc7CiRsYW5nWydwcmVmZXJlbmNlcyddID0gJ1ByZWZlcmVuY2VzJzsKJGxhbmdbJ3Byb2Rtb2RlJ10gPSAnRW5hYmxlIFByb2R1Y3Rpb24gTW9kZSc7CiRsYW5nWydwcm9kdWN0aW9uX3NldHRpbmdzJ10gPSAnUHJvZHVjdGlvbiBTZXR0aW5ncyc7CiRsYW5nWydwcm9tcHRfZm9ybV90ZW1wbGF0ZSddID0gJ0VkaXQgdGhlIHBheW1lbnQgZm9ybSB0ZW1wbGF0ZSc7CgojIFIKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdSZWFsbHk/IFlvdVwncmUgc3VyZSB5b3Ugd2FudCB0byB1bmluc3RhbGwgdGhpcyBTYWdlcGF5MiBtb2R1bGU/JzsKCiMgUwokbGFuZ1snc2FnZXBheV92ZW5kb3JfbmFtZSddID0gJ1NhZ2VwYXkgVmVuZG9yIE5hbWUnOwokbGFuZ1snc2FnZXBheV9wYXNzd29yZCddID0gJ1NhZ2VwYXkgRW5jcnlwdGlvbiBQYXNzd29yZCc7CiRsYW5nWydzaGlwcGluZyddID0gJ1NoaXBwaW5nJzsKJGxhbmdbJ3NlbmRfZW1haWxzJ10gPSAnU2FnZXBheSBTZW5kIENvbmZpcm1hdGlvbiBFbWFpbHMnOwokbGFuZ1snc2VuZF9lbWFpbF9ub25lJ10gPSAnRG8gbm90IHNlbmQgZWl0aGVyIGN1c3RvbWVyIG9yIHZlbmRvciBlbWFpbHMnOwokbGFuZ1snc2VuZF9lbWFpbF9ib3RoJ10gPSAnU2VuZCBjdXN0b21lciBhbmQgdmVuZG9yIGVtYWlscyBpZiBhZGRyZXNzZXMgYXJlIHByb3ZpZGVkJzsKJGxhbmdbJ3NlbmRfZW1haWxfdmVuZG9yJ10gPSAnU2VuZCB2ZW5kb3IgZW1haWwgYnV0IE5PVCB0aGUgY3VzdG9tZXIgZW1haWwnOwoKIyBUCiRsYW5nWyd0ZXN0X3NldHRpbmdzJ10gPSAnVGVzdCBTZXR0aW5ncyc7CgojIFYKJGxhbmdbJ3ZlbmRvcl9lbWFpbCddID0gJ1NhZ2VwYXkgVmVuZG9yIENvbmZvcm1hdGlvbiBFbWFpbCBBZGRyZXNzJzsKJGxhbmdbJ3ZlbmRvcl9lbWFpbF9pbmZvJ10gPSAnSWYgcHJvdmlkZWQsIGFuIGVtYWlsIHdpbGwgYmUgc2VudCB0byB0aGlzIGFkZHJlc3Mgd2hlbiBlYWNoIHRyYW5zYWN0aW9uIGNvbXBsZXRlcyAoc3VjY2Vzc2Z1bGx5IG9yIG90aGVyd2lzZSkuIFVzZSBhIGNvbG9uICg6KSB0byBzZXBhcmF0ZSBtdWx0aXBsZSBlbWFpbCBhZGRyZXNzZXMuJzsKCgoKCgoKCgojIyMgICAgIyMjICAgIyMjIyMjIyMjICAgIyMjICAgICAgICAjIyMjIyMjIyMKIyMjICAgICMjIyAgICMjIyMjIyMjIyAgICMjIyAgICAgICAgIyMjIyMjIyMjCiMjIyAgICAjIyMgICAjIyMgICAgICAgICAjIyMgICAgICAgICMjIyAgICMjIwojIyMjIyMjIyMjICAgIyMjIyMjIyMjICAgIyMjICAgICAgICAjIyMjIyMjIyMKIyMjIyMjIyMjIyAgICMjIyMjIyMjIyAgICMjIyAgICAgICAgIyMjIyMjIyMjCiMjIyAgICAjIyMgICAjIyMgICAgICAgICAjIyMgICAgICAgICMjIwojIyMgICAgIyMjICAgIyMjIyMjIyMjICAgIyMjIyMjIyMjICAjIyMKIyMjICAgICMjIyAgICMjIyMjIyMjIyAgICMjIyMjIyMjIyAgIyMjCgokbGFuZ1snaGVscCddID0gPDw8J0VPRCcKCjxoMz5XaGF0IGRvZXMgaXQgZG8/PC9oMz4KICA8cD5UaGlzIG1vZHVsZSBpcyB1c2VkIGJ5IHRoZSBPcmRlcnMgbW9kdWxlIHRvIGNvbXBsZXRlIHB1cmNoYXNlcyB1c2luZyBTYWdlcGF5LiAgQWZ0ZXIgY2hlY2tvdXQgaXMgY29tcGxldGVkIChzdWNjZXNzZnVsbHkgb3IgdW5zdWNjZXNzZnVsbHkpIG9uIHRoZSBTYWdlUGF5IHNpdGUsIHRoZSB1c2VyIGlzIHJlZGlyZWN0ZWQgYmFjayB0byB0aGUgT3JkZXJzIG1vZHVsZSB0byBzaG93IHRoZSBjaGVja291dCByZWNlaXB0IHBhZ2UuPC9wPgogIDxwPlNlZSA8YSBocmVmPSJodHRwOi8vY2FsZ3V5MTAwMC5jb20vQmxvZ3MvOC82MC9jbXNtcy1xdWljay1lLWNvbW1lcmNlLWhvdy10by5odG1sIj5odHRwOi8vY2FsZ3V5MTAwMC5jb20vQmxvZ3MvOC82MC9jbXNtcy1xdWljay1lLWNvbW1lcmNlLWhvdy10by5odG1sPC9hPiAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaG93IHRvIHNldHVwIHRoZSBDYXJ0LCBPcmRlcnMgYW5kIG90aGVyIGFzc29jaWF0ZWQgbW9kdWxlcy48L3A+Cgo8aDM+SG93IERvIEkgdXNlIEl0PC9oMz4KPHA+Rmlyc3QgeW91IGNyZWF0ZSBhIFNhZ2VwYWwgYWNjb3VudCwgYW5kIG9idGFpbiB0aGUgU2FnZXBheSBWZW5kb3IgTmFtZSwgVGVzdCBTeXN0ZW0gRW5jcnlwdGlvbiBQYXNzd29yZCBhbmQgKHdoZW4geW91IGFyZSByZWFkeSB0byBnbyBsaXZlKSB0aGUgUHJvZHVjdGlvbiBTeXN0ZW0gRW5jcnlwdGlvbiBQYXNzd29yZC48L3A+CjxwPkxlYXZlICdFbmFibGUgUHJvZHVjdGlvbiBNb2RlJyBzZXQgdG8gJ05vJyB1bnRpbCB5b3UgYXJlIHJlYWR5IHRvIGdvIExpdmUuIDwvcD4KPHA+WW91IGNhbiBjaG9vc2UgdG8gaGF2ZSBTYWdlcGF5IHRvIHNlbmQgZW1haWxzIHRvIHdlYnNpdGUgb3duZXIgYW5kIHRoZSBjdXN0b21lciBhZnRlciBjaGVja291dCBpcyBjb21wbGV0ZWQsIHVzaW5nIHRoZSAnU2FnZXBheSBTZW5kIENvbmZpcm1hdGlvbiBFbWFpbHMnIG9wdGlvbi4gSWYgc2VsZWN0ZWQgdGhlIGN1c3RvbWVyIGlzIG9ubHkgc2VudCBhbiBlbWFpbCBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24gb2YgdGhlIGNoZWNrb3V0LiBJZiBzZWxlY3RlZCB0aGUgVmVuZG9yIGlzIHNlbnQgZWl0aGVyIGEgc3VjY2VzcyBvciBmYWlsdXJlIGVtYWlsLjwvcD4KPHA+SW4gJ0NhbGd1eXMgRWNvbW1lcmNlIEJhc2UgPiBQYXltZW50IFNldHRpbmdzJyBzZWxlY3QgU2FnZXBheTIgYXMgdGhlIFBheW1lbnQgR2F0ZXdheSBNb2R1bGUuPC9wPgoKPGgzPkltcGxlbWVudGF0aW9uIE5vdGVzPC9oMz4KPHA+U2FnZXBheTIgdXNlIHRoZSBTYWdlcGF5IEZvcm0gdjMuMCBQcm90b2NvbC48L3A+Cjx1bD4KICAgPGxpPlRheGVzOiBhcmUgc2hvd24gYXMgbGluZSBpdGVtcy48L2xpPgogICA8bGk+U2hpcHBpbmc6IGFsbCBzaGlwcGluZyBjb3N0cyBhcmUgZW50ZXJlZCBhcyBsaW5lIGl0ZW1zLjwvbGk+CiAgIDxsaT5EaXNjb3VudHM6IGFyZSBpbmNsdWRlZCBpbiB0aGUgZGlzcGxheWVkIGxpbmUgaXRlbSBhbW91bnQ8L2xpPgo8L3VsPgo8cD5TYWdlcGF5MiBkb2VzIG5vdCAoYXQgdGhpcyB0aW1lKSBzdXBwb3J0IHN1YnNjcmlwdGlvbnMgLyByZXBlYXQgcGF5bWVudHMKPHA+QmFzZWQgb24gQ2FsZ3V5cyBQYXlwYWxHYXRld2F5IHYgMi4zLjExIC0gQXByaWwsIDIwMTMgLSBjYWxndXkxMDAwIGFuZCB0aGUgb3JpZ2luYWwgU2FnZVBheUdhdGV3YXkgbW9kdWxlIHYxLjA8L3A+Cgo8aDM+U3VwcG9ydDwvaDM+CjxwPlRoaXMgbW9kdWxlIGRvZXMgbm90IGluY2x1ZGUgY29tbWVyY2lhbCBzdXBwb3J0LiBIb3dldmVyLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgcmVzb3VyY2VzIGF2YWlsYWJsZSB0byBoZWxwIHlvdSB3aXRoIGl0OjwvcD4KPHVsPgo8bGk+Rm9yIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIG1vZHVsZSwgRkFRcywgb3IgdG8gZmlsZSBhIEJ1ZyBSZXBvcnQgb3IgYnV5IGNvbW1lcmNpYWwgc3VwcG9ydCwgcGxlYXNlIHZpc2l0IHRoZSBjbXMgZGV2ZWxvcG1lbnQgZm9yZ2UgYXQgPGEgaHJlZj0iaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZyI+ZGV2LmNtc21hZGVzaW1wbGUub3JnPC9hPi48L2xpPgo8bGk+QWRkaXRpb25hbCBkaXNjdXNzaW9uIG9mIHRoaXMgbW9kdWxlIG1heSBhbHNvIGJlIGZvdW5kIGluIHRoZSA8YSBocmVmPSJodHRwOi8vZm9ydW0uY21zbWFkZXNpbXBsZS5vcmciPkNNUyBNYWRlIFNpbXBsZSBGb3J1bXM8L2E+LjwvbGk+CjwvdWw+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDE1LCBDaHJpcyBUYXlsb3IuIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi48L3A+CjxwPkhvd2V2ZXIsIGFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdQTCwgdGhpcyBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZAphcyBhbiBhZGRvbiBtb2R1bGUgdG8gQ01TIE1hZGUgU2ltcGxlLiAgWW91IG1heSBub3QgdXNlIHRoaXMgc29mdHdhcmUKaW4gYW55IE5vbiBHUEwgdmVyc2lvbiBvZiBDTVMgTWFkZSBzaW1wbGUsIG9yIGluIGFueSB2ZXJzaW9uIG9mIENNUwpNYWRlIHNpbXBsZSB0aGF0IGRvZXMgbm90IGluZGljYXRlIGNsZWFybHkgYW5kIG9idmlvdXNseSBpbiBpdHMgYWRtaW4Kc2VjdGlvbiB0aGF0IHRoZSBzaXRlIHdhcyBidWlsdCB3aXRoIENNUyBNYWRlIHNpbXBsZS48L3A+CjxwPlRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLApidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgpNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCkdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCllvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCmFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCkZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcgVVNBCk9yIHJlYWQgaXQgPGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xpY2Vuc2VzLmh0bWwjR1BMIj5vbmxpbmU8L2E+PC9wPgoKRU9EOwoKCgoKCgoKIyMjIyMjIyMjICAjIyMgICAgIyMjICAjIyMjIyMjIyMjICAjIyMgICAgIyMjICAjIyMjIyMjIyMgICMjIyMjIyMjICAjIyMgICAgICAgIyMjIyMjIyMjICAjIyMjIyMjIyMKIyMjIyMjIyMjICAjIyMgICAgIyMjICAjIyMjIyMjIyMjICAjIyMjICAgIyMjICAjIyMjIyMjIyMgICMjIyMjIyMjICAjIyMgICAgICAgIyMjIyMjIyMjICAjIyMjIyMjIyMKIyMjICAgICAgICAjIyMgICAgIyMjICAjIyMgICAgIyMjICAjIyMjIyAgIyMjICAjIyMgICAgICAgICMjIyAgICAgICAjIyMgICAgICAgIyMjICAgIyMjICAjIyMKIyMjICAgICAgICAjIyMjIyMjIyMjICAjIyMjIyMjIyMjICAjIyMgIyMgIyMjICAjIyMgICAgICAgICMjIyMjIyMjICAjIyMgICAgICAgIyMjICAgIyMjICAjIyMKIyMjICAgICAgICAjIyMjIyMjIyMjICAjIyMjIyMjIyMjICAjIyMgICMjIyMjICAjIyMgICAjIyMgICMjIyMjIyMjICAjIyMgICAgICAgIyMjICAgIyMjICAjIyMgICAjIyMKIyMjICAgICAgICAjIyMgICAgIyMjICAjIyMgICAgIyMjICAjIyMgICAjIyMjICAjIyMgICAjIyMgICMjIyAgICAgICAjIyMgICAgICAgIyMjICAgIyMjICAjIyMgICAjIyMKIyMjIyMjIyMjICAjIyMgICAgIyMjICAjIyMgICAgIyMjICAjIyMgICAgIyMjICAjIyMjIyMjIyMgICMjIyMjIyMjICAjIyMjIyMjIyMgIyMjIyMjIyMjICAjIyMjIyMjIyMKIyMjIyMjIyMjICAjIyMgICAgIyMjICAjIyMgICAgIyMjICAjIyMgICAgIyMjICAjIyMjIyMjIyMgICMjIyMjIyMjICAjIyMjIyMjIyMgIyMjIyMjIyMjICAjIyMjIyMjIyMKCiRsYW5nWydjaGFuZ2Vsb2cnXSA9IDw8PCdFT0QnCgo8aDM+VmVyc2lvbiAxLjEgLSAwNk5vdjE5PC9oMz4KPHVsPgogICA8bGk+UmV3cml0dGVuIHRvIHdvcmsgd2l0aCBDR1BheW1lbnRHYXRld2F5QmFzZSAxLjYueCs8L2xpPgogICA8bGk+V2lsbCBub3cgcmV0dXJuIHRvIENoZWNrb3V0IHBhZ2UgKHdpdGhvdXQgY2xlYXJpbmcgQ2FydCkgaWYgdXNlciBjYW5jZWxzIFNhZ2VQYXkgcGF5bWVudDwvbGk+CjwvdWw+Cjxicj4KCjxoMz5WZXJzaW9uIDAuOS4yIC0gMjJKdWwxNTwvaDM+Cjx1bD4KICAgPGxpPmFkZGVkIHNvbWUgb3B0aW9uYWwgZGVidWcgY29kZSAoZGVmYXVsdCB0byBPRkYpPC9saT4KPC91bD4KPGJyPgoKPGgzPlZlcnNpb24gMC45LjEgLSAxNUp1bDE1PC9oMz4KPHVsPgogICA8bGk+U2FnZXBheSByZXNwb25zZSAnUkVKRUNURUQnIG5vdyBzZXRzIG9yZGVyIHN0YXR1cyB0byBjYW5jZWxsZWQsIG90aGVyd2lzZSBPcmRlcnMgc2V0cyBzdGF0dXMgdG8gU1VDQ0VTUyBhbmQgcGF5bWVudCB0byBEZWNsaW5lZDwvbGk+CiAgIDxsaT5idWcgZml4IHRvIGNvcnJlY3RseSBhY2NlcHQgU2FnZXBheSByZXNwb25zZSBhbW91bnQgMTAwMCs8L2xpPgo8L3VsPgo8YnI+Cgo8aDM+VmVyc2lvbiAwLjkgLSAxNEp1bDE1PC9oMz4KPHVsPgogICA8bGk+MC45IC0gaW5pdGlhbCByZWxlYXNlPC9saT4KICAgPGxpPkJhc2VkIG9uIENhbGd1eXMgUGF5cGFsR2F0ZXdheSB2IDIuMy4xMSAtIEFwcmlsLCAyMDEzIC0gY2FsZ3V5MTAwMCBhbmQgdGhlIG9yaWdpbmFsIFNhZ2VQYXlHYXRld2F5IG1vZHVsZSB2MS4wPC9saT4KICAgPGxpPk5PVEU6IFBIUCA1LjMueCBJUyBSRVFVSVJFRDwvbGk+CjwvdWw+Cjxicj4KCkVPRDsKCgo=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/LICENCE.txt</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[Iy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBNb2R1bGU6IFNhZ2VwYXkyDQojIEF1dGhvcjogQ2hyaXMgVGF5bG9yDQojIENvcHlyaWdodDogKEMpIDIwMTkgQ2hyaXMgVGF5bG9yLCBjaHJpc0BiaW5ub3ZhdGl2ZS5jby51aw0KIyBNb2R1bGUncyBob21lcGFnZSBpczogaHR0cDovL2Rldi5jbXNtYWRlc2ltcGxlLm9yZy9wcm9qZWN0cy9zYWdlcGF5Mg0KIyBMaWNlbmNlOiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMNCiMgICAgICAgICAgc2VlIC9TYWdlcGF5Mi9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPg0KIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KIyBDTVMgLSBDTVMgTWFkZSBTaW1wbGUgaXMgKGMpIDIwMTkgYnkgQ01TIE1hZGUgU2ltcGxlIEZvdW5kYXRpb24gKGNvcHlyaWdodEBjbXNtYWRlc2ltcGxlLm9yZykNCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnDQojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUNCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMNCiMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQojDQojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7DQojIHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuDQojIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4NCiMNCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uDQojIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4NCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCg0KICAgICAgICAgICAgICAgICAgICBHTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRQ0KICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDMsIDI5IEp1bmUgMjAwNw0KDQogQ29weXJpZ2h0IChDKSAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiA8aHR0cDovL2ZzZi5vcmcvPg0KIEV2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIHZlcmJhdGltIGNvcGllcw0KIG9mIHRoaXMgbGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLg0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlYW1ibGUNCg0KICBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcg0Kc29mdHdhcmUgYW5kIG90aGVyIGtpbmRzIG9mIHdvcmtzLg0KDQogIFRoZSBsaWNlbnNlcyBmb3IgbW9zdCBzb2Z0d2FyZSBhbmQgb3RoZXIgcHJhY3RpY2FsIHdvcmtzIGFyZSBkZXNpZ25lZA0KdG8gdGFrZSBhd2F5IHlvdXIgZnJlZWRvbSB0byBzaGFyZSBhbmQgY2hhbmdlIHRoZSB3b3Jrcy4gIEJ5IGNvbnRyYXN0LA0KdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8NCnNoYXJlIGFuZCBjaGFuZ2UgYWxsIHZlcnNpb25zIG9mIGEgcHJvZ3JhbS0tdG8gbWFrZSBzdXJlIGl0IHJlbWFpbnMgZnJlZQ0Kc29mdHdhcmUgZm9yIGFsbCBpdHMgdXNlcnMuICBXZSwgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgdXNlIHRoZQ0KR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vc3Qgb2Ygb3VyIHNvZnR3YXJlOyBpdCBhcHBsaWVzIGFsc28gdG8NCmFueSBvdGhlciB3b3JrIHJlbGVhc2VkIHRoaXMgd2F5IGJ5IGl0cyBhdXRob3JzLiAgWW91IGNhbiBhcHBseSBpdCB0bw0KeW91ciBwcm9ncmFtcywgdG9vLg0KDQogIFdoZW4gd2Ugc3BlYWsgb2YgZnJlZSBzb2Z0d2FyZSwgd2UgYXJlIHJlZmVycmluZyB0byBmcmVlZG9tLCBub3QNCnByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UNCmhhdmUgdGhlIGZyZWVkb20gdG8gZGlzdHJpYnV0ZSBjb3BpZXMgb2YgZnJlZSBzb2Z0d2FyZSAoYW5kIGNoYXJnZSBmb3INCnRoZW0gaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQgaWYgeW91DQp3YW50IGl0LCB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2UgcGllY2VzIG9mIGl0IGluIG5ldw0KZnJlZSBwcm9ncmFtcywgYW5kIHRoYXQgeW91IGtub3cgeW91IGNhbiBkbyB0aGVzZSB0aGluZ3MuDQoNCiAgVG8gcHJvdGVjdCB5b3VyIHJpZ2h0cywgd2UgbmVlZCB0byBwcmV2ZW50IG90aGVycyBmcm9tIGRlbnlpbmcgeW91DQp0aGVzZSByaWdodHMgb3IgYXNraW5nIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4gIFRoZXJlZm9yZSwgeW91IGhhdmUNCmNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZg0KeW91IG1vZGlmeSBpdDogcmVzcG9uc2liaWxpdGllcyB0byByZXNwZWN0IHRoZSBmcmVlZG9tIG9mIG90aGVycy4NCg0KICBGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyDQpncmF0aXMgb3IgZm9yIGEgZmVlLCB5b3UgbXVzdCBwYXNzIG9uIHRvIHRoZSByZWNpcGllbnRzIHRoZSBzYW1lDQpmcmVlZG9tcyB0aGF0IHlvdSByZWNlaXZlZC4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZQ0Kb3IgY2FuIGdldCB0aGUgc291cmNlIGNvZGUuICBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkNCmtub3cgdGhlaXIgcmlnaHRzLg0KDQogIERldmVsb3BlcnMgdGhhdCB1c2UgdGhlIEdOVSBHUEwgcHJvdGVjdCB5b3VyIHJpZ2h0cyB3aXRoIHR3byBzdGVwczoNCigxKSBhc3NlcnQgY29weXJpZ2h0IG9uIHRoZSBzb2Z0d2FyZSwgYW5kICgyKSBvZmZlciB5b3UgdGhpcyBMaWNlbnNlDQpnaXZpbmcgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IGl0Lg0KDQogIEZvciB0aGUgZGV2ZWxvcGVycycgYW5kIGF1dGhvcnMnIHByb3RlY3Rpb24sIHRoZSBHUEwgY2xlYXJseSBleHBsYWlucw0KdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhpcyBmcmVlIHNvZnR3YXJlLiAgRm9yIGJvdGggdXNlcnMnIGFuZA0KYXV0aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIGJlIG1hcmtlZCBhcw0KY2hhbmdlZCwgc28gdGhhdCB0aGVpciBwcm9ibGVtcyB3aWxsIG5vdCBiZSBhdHRyaWJ1dGVkIGVycm9uZW91c2x5IHRvDQphdXRob3JzIG9mIHByZXZpb3VzIHZlcnNpb25zLg0KDQogIFNvbWUgZGV2aWNlcyBhcmUgZGVzaWduZWQgdG8gZGVueSB1c2VycyBhY2Nlc3MgdG8gaW5zdGFsbCBvciBydW4NCm1vZGlmaWVkIHZlcnNpb25zIG9mIHRoZSBzb2Z0d2FyZSBpbnNpZGUgdGhlbSwgYWx0aG91Z2ggdGhlIG1hbnVmYWN0dXJlcg0KY2FuIGRvIHNvLiAgVGhpcyBpcyBmdW5kYW1lbnRhbGx5IGluY29tcGF0aWJsZSB3aXRoIHRoZSBhaW0gb2YNCnByb3RlY3RpbmcgdXNlcnMnIGZyZWVkb20gdG8gY2hhbmdlIHRoZSBzb2Z0d2FyZS4gIFRoZSBzeXN0ZW1hdGljDQpwYXR0ZXJuIG9mIHN1Y2ggYWJ1c2Ugb2NjdXJzIGluIHRoZSBhcmVhIG9mIHByb2R1Y3RzIGZvciBpbmRpdmlkdWFscyB0bw0KdXNlLCB3aGljaCBpcyBwcmVjaXNlbHkgd2hlcmUgaXQgaXMgbW9zdCB1bmFjY2VwdGFibGUuICBUaGVyZWZvcmUsIHdlDQpoYXZlIGRlc2lnbmVkIHRoaXMgdmVyc2lvbiBvZiB0aGUgR1BMIHRvIHByb2hpYml0IHRoZSBwcmFjdGljZSBmb3IgdGhvc2UNCnByb2R1Y3RzLiAgSWYgc3VjaCBwcm9ibGVtcyBhcmlzZSBzdWJzdGFudGlhbGx5IGluIG90aGVyIGRvbWFpbnMsIHdlDQpzdGFuZCByZWFkeSB0byBleHRlbmQgdGhpcyBwcm92aXNpb24gdG8gdGhvc2UgZG9tYWlucyBpbiBmdXR1cmUgdmVyc2lvbnMNCm9mIHRoZSBHUEwsIGFzIG5lZWRlZCB0byBwcm90ZWN0IHRoZSBmcmVlZG9tIG9mIHVzZXJzLg0KDQogIEZpbmFsbHksIGV2ZXJ5IHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuDQpTdGF0ZXMgc2hvdWxkIG5vdCBhbGxvdyBwYXRlbnRzIHRvIHJlc3RyaWN0IGRldmVsb3BtZW50IGFuZCB1c2Ugb2YNCnNvZnR3YXJlIG9uIGdlbmVyYWwtcHVycG9zZSBjb21wdXRlcnMsIGJ1dCBpbiB0aG9zZSB0aGF0IGRvLCB3ZSB3aXNoIHRvDQphdm9pZCB0aGUgc3BlY2lhbCBkYW5nZXIgdGhhdCBwYXRlbnRzIGFwcGxpZWQgdG8gYSBmcmVlIHByb2dyYW0gY291bGQNCm1ha2UgaXQgZWZmZWN0aXZlbHkgcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHRoZSBHUEwgYXNzdXJlcyB0aGF0DQpwYXRlbnRzIGNhbm5vdCBiZSB1c2VkIHRvIHJlbmRlciB0aGUgcHJvZ3JhbSBub24tZnJlZS4NCg0KICBUaGUgcHJlY2lzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgY29weWluZywgZGlzdHJpYnV0aW9uIGFuZA0KbW9kaWZpY2F0aW9uIGZvbGxvdy4NCg0KICAgICAgICAgICAgICAgICAgICAgICBURVJNUyBBTkQgQ09ORElUSU9OUw0KDQogIDAuIERlZmluaXRpb25zLg0KDQogICJUaGlzIExpY2Vuc2UiIHJlZmVycyB0byB2ZXJzaW9uIDMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLg0KDQogICJDb3B5cmlnaHQiIGFsc28gbWVhbnMgY29weXJpZ2h0LWxpa2UgbGF3cyB0aGF0IGFwcGx5IHRvIG90aGVyIGtpbmRzIG9mDQp3b3Jrcywgc3VjaCBhcyBzZW1pY29uZHVjdG9yIG1hc2tzLg0KDQogICJUaGUgUHJvZ3JhbSIgcmVmZXJzIHRvIGFueSBjb3B5cmlnaHRhYmxlIHdvcmsgbGljZW5zZWQgdW5kZXIgdGhpcw0KTGljZW5zZS4gIEVhY2ggbGljZW5zZWUgaXMgYWRkcmVzc2VkIGFzICJ5b3UiLiAgIkxpY2Vuc2VlcyIgYW5kDQoicmVjaXBpZW50cyIgbWF5IGJlIGluZGl2aWR1YWxzIG9yIG9yZ2FuaXphdGlvbnMuDQoNCiAgVG8gIm1vZGlmeSIgYSB3b3JrIG1lYW5zIHRvIGNvcHkgZnJvbSBvciBhZGFwdCBhbGwgb3IgcGFydCBvZiB0aGUgd29yaw0KaW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQgcGVybWlzc2lvbiwgb3RoZXIgdGhhbiB0aGUgbWFraW5nIG9mIGFuDQpleGFjdCBjb3B5LiAgVGhlIHJlc3VsdGluZyB3b3JrIGlzIGNhbGxlZCBhICJtb2RpZmllZCB2ZXJzaW9uIiBvZiB0aGUNCmVhcmxpZXIgd29yayBvciBhIHdvcmsgImJhc2VkIG9uIiB0aGUgZWFybGllciB3b3JrLg0KDQogIEEgImNvdmVyZWQgd29yayIgbWVhbnMgZWl0aGVyIHRoZSB1bm1vZGlmaWVkIFByb2dyYW0gb3IgYSB3b3JrIGJhc2VkDQpvbiB0aGUgUHJvZ3JhbS4NCg0KICBUbyAicHJvcGFnYXRlIiBhIHdvcmsgbWVhbnMgdG8gZG8gYW55dGhpbmcgd2l0aCBpdCB0aGF0LCB3aXRob3V0DQpwZXJtaXNzaW9uLCB3b3VsZCBtYWtlIHlvdSBkaXJlY3RseSBvciBzZWNvbmRhcmlseSBsaWFibGUgZm9yDQppbmZyaW5nZW1lbnQgdW5kZXIgYXBwbGljYWJsZSBjb3B5cmlnaHQgbGF3LCBleGNlcHQgZXhlY3V0aW5nIGl0IG9uIGENCmNvbXB1dGVyIG9yIG1vZGlmeWluZyBhIHByaXZhdGUgY29weS4gIFByb3BhZ2F0aW9uIGluY2x1ZGVzIGNvcHlpbmcsDQpkaXN0cmlidXRpb24gKHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24pLCBtYWtpbmcgYXZhaWxhYmxlIHRvIHRoZQ0KcHVibGljLCBhbmQgaW4gc29tZSBjb3VudHJpZXMgb3RoZXIgYWN0aXZpdGllcyBhcyB3ZWxsLg0KDQogIFRvICJjb252ZXkiIGEgd29yayBtZWFucyBhbnkga2luZCBvZiBwcm9wYWdhdGlvbiB0aGF0IGVuYWJsZXMgb3RoZXINCnBhcnRpZXMgdG8gbWFrZSBvciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24gd2l0aCBhIHVzZXIgdGhyb3VnaA0KYSBjb21wdXRlciBuZXR3b3JrLCB3aXRoIG5vIHRyYW5zZmVyIG9mIGEgY29weSwgaXMgbm90IGNvbnZleWluZy4NCg0KICBBbiBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZSBkaXNwbGF5cyAiQXBwcm9wcmlhdGUgTGVnYWwgTm90aWNlcyINCnRvIHRoZSBleHRlbnQgdGhhdCBpdCBpbmNsdWRlcyBhIGNvbnZlbmllbnQgYW5kIHByb21pbmVudGx5IHZpc2libGUNCmZlYXR1cmUgdGhhdCAoMSkgZGlzcGxheXMgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSwgYW5kICgyKQ0KdGVsbHMgdGhlIHVzZXIgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSBmb3IgdGhlIHdvcmsgKGV4Y2VwdCB0byB0aGUNCmV4dGVudCB0aGF0IHdhcnJhbnRpZXMgYXJlIHByb3ZpZGVkKSwgdGhhdCBsaWNlbnNlZXMgbWF5IGNvbnZleSB0aGUNCndvcmsgdW5kZXIgdGhpcyBMaWNlbnNlLCBhbmQgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMgTGljZW5zZS4gIElmDQp0aGUgaW50ZXJmYWNlIHByZXNlbnRzIGEgbGlzdCBvZiB1c2VyIGNvbW1hbmRzIG9yIG9wdGlvbnMsIHN1Y2ggYXMgYQ0KbWVudSwgYSBwcm9taW5lbnQgaXRlbSBpbiB0aGUgbGlzdCBtZWV0cyB0aGlzIGNyaXRlcmlvbi4NCg0KICAxLiBTb3VyY2UgQ29kZS4NCg0KICBUaGUgInNvdXJjZSBjb2RlIiBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yaw0KZm9yIG1ha2luZyBtb2RpZmljYXRpb25zIHRvIGl0LiAgIk9iamVjdCBjb2RlIiBtZWFucyBhbnkgbm9uLXNvdXJjZQ0KZm9ybSBvZiBhIHdvcmsuDQoNCiAgQSAiU3RhbmRhcmQgSW50ZXJmYWNlIiBtZWFucyBhbiBpbnRlcmZhY2UgdGhhdCBlaXRoZXIgaXMgYW4gb2ZmaWNpYWwNCnN0YW5kYXJkIGRlZmluZWQgYnkgYSByZWNvZ25pemVkIHN0YW5kYXJkcyBib2R5LCBvciwgaW4gdGhlIGNhc2Ugb2YNCmludGVyZmFjZXMgc3BlY2lmaWVkIGZvciBhIHBhcnRpY3VsYXIgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UsIG9uZSB0aGF0DQppcyB3aWRlbHkgdXNlZCBhbW9uZyBkZXZlbG9wZXJzIHdvcmtpbmcgaW4gdGhhdCBsYW5ndWFnZS4NCg0KICBUaGUgIlN5c3RlbSBMaWJyYXJpZXMiIG9mIGFuIGV4ZWN1dGFibGUgd29yayBpbmNsdWRlIGFueXRoaW5nLCBvdGhlcg0KdGhhbiB0aGUgd29yayBhcyBhIHdob2xlLCB0aGF0IChhKSBpcyBpbmNsdWRlZCBpbiB0aGUgbm9ybWFsIGZvcm0gb2YNCnBhY2thZ2luZyBhIE1ham9yIENvbXBvbmVudCwgYnV0IHdoaWNoIGlzIG5vdCBwYXJ0IG9mIHRoYXQgTWFqb3INCkNvbXBvbmVudCwgYW5kIChiKSBzZXJ2ZXMgb25seSB0byBlbmFibGUgdXNlIG9mIHRoZSB3b3JrIHdpdGggdGhhdA0KTWFqb3IgQ29tcG9uZW50LCBvciB0byBpbXBsZW1lbnQgYSBTdGFuZGFyZCBJbnRlcmZhY2UgZm9yIHdoaWNoIGFuDQppbXBsZW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgdG8gdGhlIHB1YmxpYyBpbiBzb3VyY2UgY29kZSBmb3JtLiAgQQ0KIk1ham9yIENvbXBvbmVudCIsIGluIHRoaXMgY29udGV4dCwgbWVhbnMgYSBtYWpvciBlc3NlbnRpYWwgY29tcG9uZW50DQooa2VybmVsLCB3aW5kb3cgc3lzdGVtLCBhbmQgc28gb24pIG9mIHRoZSBzcGVjaWZpYyBvcGVyYXRpbmcgc3lzdGVtDQooaWYgYW55KSBvbiB3aGljaCB0aGUgZXhlY3V0YWJsZSB3b3JrIHJ1bnMsIG9yIGEgY29tcGlsZXIgdXNlZCB0bw0KcHJvZHVjZSB0aGUgd29yaywgb3IgYW4gb2JqZWN0IGNvZGUgaW50ZXJwcmV0ZXIgdXNlZCB0byBydW4gaXQuDQoNCiAgVGhlICJDb3JyZXNwb25kaW5nIFNvdXJjZSIgZm9yIGEgd29yayBpbiBvYmplY3QgY29kZSBmb3JtIG1lYW5zIGFsbA0KdGhlIHNvdXJjZSBjb2RlIG5lZWRlZCB0byBnZW5lcmF0ZSwgaW5zdGFsbCwgYW5kIChmb3IgYW4gZXhlY3V0YWJsZQ0Kd29yaykgcnVuIHRoZSBvYmplY3QgY29kZSBhbmQgdG8gbW9kaWZ5IHRoZSB3b3JrLCBpbmNsdWRpbmcgc2NyaXB0cyB0bw0KY29udHJvbCB0aG9zZSBhY3Rpdml0aWVzLiAgSG93ZXZlciwgaXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgd29yaydzDQpTeXN0ZW0gTGlicmFyaWVzLCBvciBnZW5lcmFsLXB1cnBvc2UgdG9vbHMgb3IgZ2VuZXJhbGx5IGF2YWlsYWJsZSBmcmVlDQpwcm9ncmFtcyB3aGljaCBhcmUgdXNlZCB1bm1vZGlmaWVkIGluIHBlcmZvcm1pbmcgdGhvc2UgYWN0aXZpdGllcyBidXQNCndoaWNoIGFyZSBub3QgcGFydCBvZiB0aGUgd29yay4gIEZvciBleGFtcGxlLCBDb3JyZXNwb25kaW5nIFNvdXJjZQ0KaW5jbHVkZXMgaW50ZXJmYWNlIGRlZmluaXRpb24gZmlsZXMgYXNzb2NpYXRlZCB3aXRoIHNvdXJjZSBmaWxlcyBmb3INCnRoZSB3b3JrLCBhbmQgdGhlIHNvdXJjZSBjb2RlIGZvciBzaGFyZWQgbGlicmFyaWVzIGFuZCBkeW5hbWljYWxseQ0KbGlua2VkIHN1YnByb2dyYW1zIHRoYXQgdGhlIHdvcmsgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHJlcXVpcmUsDQpzdWNoIGFzIGJ5IGludGltYXRlIGRhdGEgY29tbXVuaWNhdGlvbiBvciBjb250cm9sIGZsb3cgYmV0d2VlbiB0aG9zZQ0Kc3VicHJvZ3JhbXMgYW5kIG90aGVyIHBhcnRzIG9mIHRoZSB3b3JrLg0KDQogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBuZWVkIG5vdCBpbmNsdWRlIGFueXRoaW5nIHRoYXQgdXNlcnMNCmNhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgQ29ycmVzcG9uZGluZw0KU291cmNlLg0KDQogIFRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBmb3IgYSB3b3JrIGluIHNvdXJjZSBjb2RlIGZvcm0gaXMgdGhhdA0Kc2FtZSB3b3JrLg0KDQogIDIuIEJhc2ljIFBlcm1pc3Npb25zLg0KDQogIEFsbCByaWdodHMgZ3JhbnRlZCB1bmRlciB0aGlzIExpY2Vuc2UgYXJlIGdyYW50ZWQgZm9yIHRoZSB0ZXJtIG9mDQpjb3B5cmlnaHQgb24gdGhlIFByb2dyYW0sIGFuZCBhcmUgaXJyZXZvY2FibGUgcHJvdmlkZWQgdGhlIHN0YXRlZA0KY29uZGl0aW9ucyBhcmUgbWV0LiAgVGhpcyBMaWNlbnNlIGV4cGxpY2l0bHkgYWZmaXJtcyB5b3VyIHVubGltaXRlZA0KcGVybWlzc2lvbiB0byBydW4gdGhlIHVubW9kaWZpZWQgUHJvZ3JhbS4gIFRoZSBvdXRwdXQgZnJvbSBydW5uaW5nIGENCmNvdmVyZWQgd29yayBpcyBjb3ZlcmVkIGJ5IHRoaXMgTGljZW5zZSBvbmx5IGlmIHRoZSBvdXRwdXQsIGdpdmVuIGl0cw0KY29udGVudCwgY29uc3RpdHV0ZXMgYSBjb3ZlcmVkIHdvcmsuICBUaGlzIExpY2Vuc2UgYWNrbm93bGVkZ2VzIHlvdXINCnJpZ2h0cyBvZiBmYWlyIHVzZSBvciBvdGhlciBlcXVpdmFsZW50LCBhcyBwcm92aWRlZCBieSBjb3B5cmlnaHQgbGF3Lg0KDQogIFlvdSBtYXkgbWFrZSwgcnVuIGFuZCBwcm9wYWdhdGUgY292ZXJlZCB3b3JrcyB0aGF0IHlvdSBkbyBub3QNCmNvbnZleSwgd2l0aG91dCBjb25kaXRpb25zIHNvIGxvbmcgYXMgeW91ciBsaWNlbnNlIG90aGVyd2lzZSByZW1haW5zDQppbiBmb3JjZS4gIFlvdSBtYXkgY29udmV5IGNvdmVyZWQgd29ya3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBwdXJwb3NlDQpvZiBoYXZpbmcgdGhlbSBtYWtlIG1vZGlmaWNhdGlvbnMgZXhjbHVzaXZlbHkgZm9yIHlvdSwgb3IgcHJvdmlkZSB5b3UNCndpdGggZmFjaWxpdGllcyBmb3IgcnVubmluZyB0aG9zZSB3b3JrcywgcHJvdmlkZWQgdGhhdCB5b3UgY29tcGx5IHdpdGgNCnRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgaW4gY29udmV5aW5nIGFsbCBtYXRlcmlhbCBmb3Igd2hpY2ggeW91IGRvDQpub3QgY29udHJvbCBjb3B5cmlnaHQuICBUaG9zZSB0aHVzIG1ha2luZyBvciBydW5uaW5nIHRoZSBjb3ZlcmVkIHdvcmtzDQpmb3IgeW91IG11c3QgZG8gc28gZXhjbHVzaXZlbHkgb24geW91ciBiZWhhbGYsIHVuZGVyIHlvdXIgZGlyZWN0aW9uDQphbmQgY29udHJvbCwgb24gdGVybXMgdGhhdCBwcm9oaWJpdCB0aGVtIGZyb20gbWFraW5nIGFueSBjb3BpZXMgb2YNCnlvdXIgY29weXJpZ2h0ZWQgbWF0ZXJpYWwgb3V0c2lkZSB0aGVpciByZWxhdGlvbnNoaXAgd2l0aCB5b3UuDQoNCiAgQ29udmV5aW5nIHVuZGVyIGFueSBvdGhlciBjaXJjdW1zdGFuY2VzIGlzIHBlcm1pdHRlZCBzb2xlbHkgdW5kZXINCnRoZSBjb25kaXRpb25zIHN0YXRlZCBiZWxvdy4gIFN1YmxpY2Vuc2luZyBpcyBub3QgYWxsb3dlZDsgc2VjdGlvbiAxMA0KbWFrZXMgaXQgdW5uZWNlc3NhcnkuDQoNCiAgMy4gUHJvdGVjdGluZyBVc2VycycgTGVnYWwgUmlnaHRzIEZyb20gQW50aS1DaXJjdW12ZW50aW9uIExhdy4NCg0KICBObyBjb3ZlcmVkIHdvcmsgc2hhbGwgYmUgZGVlbWVkIHBhcnQgb2YgYW4gZWZmZWN0aXZlIHRlY2hub2xvZ2ljYWwNCm1lYXN1cmUgdW5kZXIgYW55IGFwcGxpY2FibGUgbGF3IGZ1bGZpbGxpbmcgb2JsaWdhdGlvbnMgdW5kZXIgYXJ0aWNsZQ0KMTEgb2YgdGhlIFdJUE8gY29weXJpZ2h0IHRyZWF0eSBhZG9wdGVkIG9uIDIwIERlY2VtYmVyIDE5OTYsIG9yDQpzaW1pbGFyIGxhd3MgcHJvaGliaXRpbmcgb3IgcmVzdHJpY3RpbmcgY2lyY3VtdmVudGlvbiBvZiBzdWNoDQptZWFzdXJlcy4NCg0KICBXaGVuIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBhbnkgbGVnYWwgcG93ZXIgdG8gZm9yYmlkDQpjaXJjdW12ZW50aW9uIG9mIHRlY2hub2xvZ2ljYWwgbWVhc3VyZXMgdG8gdGhlIGV4dGVudCBzdWNoIGNpcmN1bXZlbnRpb24NCmlzIGVmZmVjdGVkIGJ5IGV4ZXJjaXNpbmcgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZSB3aXRoIHJlc3BlY3QgdG8NCnRoZSBjb3ZlcmVkIHdvcmssIGFuZCB5b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBvcGVyYXRpb24gb3INCm1vZGlmaWNhdGlvbiBvZiB0aGUgd29yayBhcyBhIG1lYW5zIG9mIGVuZm9yY2luZywgYWdhaW5zdCB0aGUgd29yaydzDQp1c2VycywgeW91ciBvciB0aGlyZCBwYXJ0aWVzJyBsZWdhbCByaWdodHMgdG8gZm9yYmlkIGNpcmN1bXZlbnRpb24gb2YNCnRlY2hub2xvZ2ljYWwgbWVhc3VyZXMuDQoNCiAgNC4gQ29udmV5aW5nIFZlcmJhdGltIENvcGllcy4NCg0KICBZb3UgbWF5IGNvbnZleSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIFByb2dyYW0ncyBzb3VyY2UgY29kZSBhcyB5b3UNCnJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91IGNvbnNwaWN1b3VzbHkgYW5kDQphcHByb3ByaWF0ZWx5IHB1Ymxpc2ggb24gZWFjaCBjb3B5IGFuIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBub3RpY2U7DQprZWVwIGludGFjdCBhbGwgbm90aWNlcyBzdGF0aW5nIHRoYXQgdGhpcyBMaWNlbnNlIGFuZCBhbnkNCm5vbi1wZXJtaXNzaXZlIHRlcm1zIGFkZGVkIGluIGFjY29yZCB3aXRoIHNlY3Rpb24gNyBhcHBseSB0byB0aGUgY29kZTsNCmtlZXAgaW50YWN0IGFsbCBub3RpY2VzIG9mIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYWxsDQpyZWNpcGllbnRzIGEgY29weSBvZiB0aGlzIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgUHJvZ3JhbS4NCg0KICBZb3UgbWF5IGNoYXJnZSBhbnkgcHJpY2Ugb3Igbm8gcHJpY2UgZm9yIGVhY2ggY29weSB0aGF0IHlvdSBjb252ZXksDQphbmQgeW91IG1heSBvZmZlciBzdXBwb3J0IG9yIHdhcnJhbnR5IHByb3RlY3Rpb24gZm9yIGEgZmVlLg0KDQogIDUuIENvbnZleWluZyBNb2RpZmllZCBTb3VyY2UgVmVyc2lvbnMuDQoNCiAgWW91IG1heSBjb252ZXkgYSB3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtLCBvciB0aGUgbW9kaWZpY2F0aW9ucyB0bw0KcHJvZHVjZSBpdCBmcm9tIHRoZSBQcm9ncmFtLCBpbiB0aGUgZm9ybSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUNCnRlcm1zIG9mIHNlY3Rpb24gNCwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOg0KDQogICAgYSkgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgeW91IG1vZGlmaWVkDQogICAgaXQsIGFuZCBnaXZpbmcgYSByZWxldmFudCBkYXRlLg0KDQogICAgYikgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgaXQgaXMNCiAgICByZWxlYXNlZCB1bmRlciB0aGlzIExpY2Vuc2UgYW5kIGFueSBjb25kaXRpb25zIGFkZGVkIHVuZGVyIHNlY3Rpb24NCiAgICA3LiAgVGhpcyByZXF1aXJlbWVudCBtb2RpZmllcyB0aGUgcmVxdWlyZW1lbnQgaW4gc2VjdGlvbiA0IHRvDQogICAgImtlZXAgaW50YWN0IGFsbCBub3RpY2VzIi4NCg0KICAgIGMpIFlvdSBtdXN0IGxpY2Vuc2UgdGhlIGVudGlyZSB3b3JrLCBhcyBhIHdob2xlLCB1bmRlciB0aGlzDQogICAgTGljZW5zZSB0byBhbnlvbmUgd2hvIGNvbWVzIGludG8gcG9zc2Vzc2lvbiBvZiBhIGNvcHkuICBUaGlzDQogICAgTGljZW5zZSB3aWxsIHRoZXJlZm9yZSBhcHBseSwgYWxvbmcgd2l0aCBhbnkgYXBwbGljYWJsZSBzZWN0aW9uIDcNCiAgICBhZGRpdGlvbmFsIHRlcm1zLCB0byB0aGUgd2hvbGUgb2YgdGhlIHdvcmssIGFuZCBhbGwgaXRzIHBhcnRzLA0KICAgIHJlZ2FyZGxlc3Mgb2YgaG93IHRoZXkgYXJlIHBhY2thZ2VkLiAgVGhpcyBMaWNlbnNlIGdpdmVzIG5vDQogICAgcGVybWlzc2lvbiB0byBsaWNlbnNlIHRoZSB3b3JrIGluIGFueSBvdGhlciB3YXksIGJ1dCBpdCBkb2VzIG5vdA0KICAgIGludmFsaWRhdGUgc3VjaCBwZXJtaXNzaW9uIGlmIHlvdSBoYXZlIHNlcGFyYXRlbHkgcmVjZWl2ZWQgaXQuDQoNCiAgICBkKSBJZiB0aGUgd29yayBoYXMgaW50ZXJhY3RpdmUgdXNlciBpbnRlcmZhY2VzLCBlYWNoIG11c3QgZGlzcGxheQ0KICAgIEFwcHJvcHJpYXRlIExlZ2FsIE5vdGljZXM7IGhvd2V2ZXIsIGlmIHRoZSBQcm9ncmFtIGhhcyBpbnRlcmFjdGl2ZQ0KICAgIGludGVyZmFjZXMgdGhhdCBkbyBub3QgZGlzcGxheSBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzLCB5b3VyDQogICAgd29yayBuZWVkIG5vdCBtYWtlIHRoZW0gZG8gc28uDQoNCiAgQSBjb21waWxhdGlvbiBvZiBhIGNvdmVyZWQgd29yayB3aXRoIG90aGVyIHNlcGFyYXRlIGFuZCBpbmRlcGVuZGVudA0Kd29ya3MsIHdoaWNoIGFyZSBub3QgYnkgdGhlaXIgbmF0dXJlIGV4dGVuc2lvbnMgb2YgdGhlIGNvdmVyZWQgd29yaywNCmFuZCB3aGljaCBhcmUgbm90IGNvbWJpbmVkIHdpdGggaXQgc3VjaCBhcyB0byBmb3JtIGEgbGFyZ2VyIHByb2dyYW0sDQppbiBvciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMgY2FsbGVkIGFuDQoiYWdncmVnYXRlIiBpZiB0aGUgY29tcGlsYXRpb24gYW5kIGl0cyByZXN1bHRpbmcgY29weXJpZ2h0IGFyZSBub3QNCnVzZWQgdG8gbGltaXQgdGhlIGFjY2VzcyBvciBsZWdhbCByaWdodHMgb2YgdGhlIGNvbXBpbGF0aW9uJ3MgdXNlcnMNCmJleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNvdmVyZWQgd29yaw0KaW4gYW4gYWdncmVnYXRlIGRvZXMgbm90IGNhdXNlIHRoaXMgTGljZW5zZSB0byBhcHBseSB0byB0aGUgb3RoZXINCnBhcnRzIG9mIHRoZSBhZ2dyZWdhdGUuDQoNCiAgNi4gQ29udmV5aW5nIE5vbi1Tb3VyY2UgRm9ybXMuDQoNCiAgWW91IG1heSBjb252ZXkgYSBjb3ZlcmVkIHdvcmsgaW4gb2JqZWN0IGNvZGUgZm9ybSB1bmRlciB0aGUgdGVybXMNCm9mIHNlY3Rpb25zIDQgYW5kIDUsIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gY29udmV5IHRoZQ0KbWFjaGluZS1yZWFkYWJsZSBDb3JyZXNwb25kaW5nIFNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLA0KaW4gb25lIG9mIHRoZXNlIHdheXM6DQoNCiAgICBhKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGluLCBvciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0DQogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSB0aGUNCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSBmaXhlZCBvbiBhIGR1cmFibGUgcGh5c2ljYWwgbWVkaXVtDQogICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UuDQoNCiAgICBiKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGluLCBvciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0DQogICAgKGluY2x1ZGluZyBhIHBoeXNpY2FsIGRpc3RyaWJ1dGlvbiBtZWRpdW0pLCBhY2NvbXBhbmllZCBieSBhDQogICAgd3JpdHRlbiBvZmZlciwgdmFsaWQgZm9yIGF0IGxlYXN0IHRocmVlIHllYXJzIGFuZCB2YWxpZCBmb3IgYXMNCiAgICBsb25nIGFzIHlvdSBvZmZlciBzcGFyZSBwYXJ0cyBvciBjdXN0b21lciBzdXBwb3J0IGZvciB0aGF0IHByb2R1Y3QNCiAgICBtb2RlbCwgdG8gZ2l2ZSBhbnlvbmUgd2hvIHBvc3Nlc3NlcyB0aGUgb2JqZWN0IGNvZGUgZWl0aGVyICgxKSBhDQogICAgY29weSBvZiB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgZm9yIGFsbCB0aGUgc29mdHdhcmUgaW4gdGhlDQogICAgcHJvZHVjdCB0aGF0IGlzIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLCBvbiBhIGR1cmFibGUgcGh5c2ljYWwNCiAgICBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UsIGZvciBhIHByaWNlIG5vDQogICAgbW9yZSB0aGFuIHlvdXIgcmVhc29uYWJsZSBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyB0aGlzDQogICAgY29udmV5aW5nIG9mIHNvdXJjZSwgb3IgKDIpIGFjY2VzcyB0byBjb3B5IHRoZQ0KICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGZyb20gYSBuZXR3b3JrIHNlcnZlciBhdCBubyBjaGFyZ2UuDQoNCiAgICBjKSBDb252ZXkgaW5kaXZpZHVhbCBjb3BpZXMgb2YgdGhlIG9iamVjdCBjb2RlIHdpdGggYSBjb3B5IG9mIHRoZQ0KICAgIHdyaXR0ZW4gb2ZmZXIgdG8gcHJvdmlkZSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBUaGlzDQogICAgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9uYWxseSBhbmQgbm9uY29tbWVyY2lhbGx5LCBhbmQNCiAgICBvbmx5IGlmIHlvdSByZWNlaXZlZCB0aGUgb2JqZWN0IGNvZGUgd2l0aCBzdWNoIGFuIG9mZmVyLCBpbiBhY2NvcmQNCiAgICB3aXRoIHN1YnNlY3Rpb24gNmIuDQoNCiAgICBkKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGJ5IG9mZmVyaW5nIGFjY2VzcyBmcm9tIGEgZGVzaWduYXRlZA0KICAgIHBsYWNlIChncmF0aXMgb3IgZm9yIGEgY2hhcmdlKSwgYW5kIG9mZmVyIGVxdWl2YWxlbnQgYWNjZXNzIHRvIHRoZQ0KICAgIENvcnJlc3BvbmRpbmcgU291cmNlIGluIHRoZSBzYW1lIHdheSB0aHJvdWdoIHRoZSBzYW1lIHBsYWNlIGF0IG5vDQogICAgZnVydGhlciBjaGFyZ2UuICBZb3UgbmVlZCBub3QgcmVxdWlyZSByZWNpcGllbnRzIHRvIGNvcHkgdGhlDQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuICBJZiB0aGUgcGxhY2UgdG8NCiAgICBjb3B5IHRoZSBvYmplY3QgY29kZSBpcyBhIG5ldHdvcmsgc2VydmVyLCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UNCiAgICBtYXkgYmUgb24gYSBkaWZmZXJlbnQgc2VydmVyIChvcGVyYXRlZCBieSB5b3Ugb3IgYSB0aGlyZCBwYXJ0eSkNCiAgICB0aGF0IHN1cHBvcnRzIGVxdWl2YWxlbnQgY29weWluZyBmYWNpbGl0aWVzLCBwcm92aWRlZCB5b3UgbWFpbnRhaW4NCiAgICBjbGVhciBkaXJlY3Rpb25zIG5leHQgdG8gdGhlIG9iamVjdCBjb2RlIHNheWluZyB3aGVyZSB0byBmaW5kIHRoZQ0KICAgIENvcnJlc3BvbmRpbmcgU291cmNlLiAgUmVnYXJkbGVzcyBvZiB3aGF0IHNlcnZlciBob3N0cyB0aGUNCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSwgeW91IHJlbWFpbiBvYmxpZ2F0ZWQgdG8gZW5zdXJlIHRoYXQgaXQgaXMNCiAgICBhdmFpbGFibGUgZm9yIGFzIGxvbmcgYXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLg0KDQogICAgZSkgQ29udmV5IHRoZSBvYmplY3QgY29kZSB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uLCBwcm92aWRlZA0KICAgIHlvdSBpbmZvcm0gb3RoZXIgcGVlcnMgd2hlcmUgdGhlIG9iamVjdCBjb2RlIGFuZCBDb3JyZXNwb25kaW5nDQogICAgU291cmNlIG9mIHRoZSB3b3JrIGFyZSBiZWluZyBvZmZlcmVkIHRvIHRoZSBnZW5lcmFsIHB1YmxpYyBhdCBubw0KICAgIGNoYXJnZSB1bmRlciBzdWJzZWN0aW9uIDZkLg0KDQogIEEgc2VwYXJhYmxlIHBvcnRpb24gb2YgdGhlIG9iamVjdCBjb2RlLCB3aG9zZSBzb3VyY2UgY29kZSBpcyBleGNsdWRlZA0KZnJvbSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgYXMgYSBTeXN0ZW0gTGlicmFyeSwgbmVlZCBub3QgYmUNCmluY2x1ZGVkIGluIGNvbnZleWluZyB0aGUgb2JqZWN0IGNvZGUgd29yay4NCg0KICBBICJVc2VyIFByb2R1Y3QiIGlzIGVpdGhlciAoMSkgYSAiY29uc3VtZXIgcHJvZHVjdCIsIHdoaWNoIG1lYW5zIGFueQ0KdGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkgdXNlZCBmb3IgcGVyc29uYWwsIGZhbWlseSwNCm9yIGhvdXNlaG9sZCBwdXJwb3Nlcywgb3IgKDIpIGFueXRoaW5nIGRlc2lnbmVkIG9yIHNvbGQgZm9yIGluY29ycG9yYXRpb24NCmludG8gYSBkd2VsbGluZy4gIEluIGRldGVybWluaW5nIHdoZXRoZXIgYSBwcm9kdWN0IGlzIGEgY29uc3VtZXIgcHJvZHVjdCwNCmRvdWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiAgRm9yIGEgcGFydGljdWxhcg0KcHJvZHVjdCByZWNlaXZlZCBieSBhIHBhcnRpY3VsYXIgdXNlciwgIm5vcm1hbGx5IHVzZWQiIHJlZmVycyB0byBhDQp0eXBpY2FsIG9yIGNvbW1vbiB1c2Ugb2YgdGhhdCBjbGFzcyBvZiBwcm9kdWN0LCByZWdhcmRsZXNzIG9mIHRoZSBzdGF0dXMNCm9mIHRoZSBwYXJ0aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGljdWxhciB1c2VyDQphY3R1YWxseSB1c2VzLCBvciBleHBlY3RzIG9yIGlzIGV4cGVjdGVkIHRvIHVzZSwgdGhlIHByb2R1Y3QuICBBIHByb2R1Y3QNCmlzIGEgY29uc3VtZXIgcHJvZHVjdCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIHByb2R1Y3QgaGFzIHN1YnN0YW50aWFsDQpjb21tZXJjaWFsLCBpbmR1c3RyaWFsIG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJlc2VudA0KdGhlIG9ubHkgc2lnbmlmaWNhbnQgbW9kZSBvZiB1c2Ugb2YgdGhlIHByb2R1Y3QuDQoNCiAgIkluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiIgZm9yIGEgVXNlciBQcm9kdWN0IG1lYW5zIGFueSBtZXRob2RzLA0KcHJvY2VkdXJlcywgYXV0aG9yaXphdGlvbiBrZXlzLCBvciBvdGhlciBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBpbnN0YWxsDQphbmQgZXhlY3V0ZSBtb2RpZmllZCB2ZXJzaW9ucyBvZiBhIGNvdmVyZWQgd29yayBpbiB0aGF0IFVzZXIgUHJvZHVjdCBmcm9tDQphIG1vZGlmaWVkIHZlcnNpb24gb2YgaXRzIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhlIGluZm9ybWF0aW9uIG11c3QNCnN1ZmZpY2UgdG8gZW5zdXJlIHRoYXQgdGhlIGNvbnRpbnVlZCBmdW5jdGlvbmluZyBvZiB0aGUgbW9kaWZpZWQgb2JqZWN0DQpjb2RlIGlzIGluIG5vIGNhc2UgcHJldmVudGVkIG9yIGludGVyZmVyZWQgd2l0aCBzb2xlbHkgYmVjYXVzZQ0KbW9kaWZpY2F0aW9uIGhhcyBiZWVuIG1hZGUuDQoNCiAgSWYgeW91IGNvbnZleSBhbiBvYmplY3QgY29kZSB3b3JrIHVuZGVyIHRoaXMgc2VjdGlvbiBpbiwgb3Igd2l0aCwgb3INCnNwZWNpZmljYWxseSBmb3IgdXNlIGluLCBhIFVzZXIgUHJvZHVjdCwgYW5kIHRoZSBjb252ZXlpbmcgb2NjdXJzIGFzDQpwYXJ0IG9mIGEgdHJhbnNhY3Rpb24gaW4gd2hpY2ggdGhlIHJpZ2h0IG9mIHBvc3Nlc3Npb24gYW5kIHVzZSBvZiB0aGUNClVzZXIgUHJvZHVjdCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgcmVjaXBpZW50IGluIHBlcnBldHVpdHkgb3IgZm9yIGENCmZpeGVkIHRlcm0gKHJlZ2FyZGxlc3Mgb2YgaG93IHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyYWN0ZXJpemVkKSwgdGhlDQpDb3JyZXNwb25kaW5nIFNvdXJjZSBjb252ZXllZCB1bmRlciB0aGlzIHNlY3Rpb24gbXVzdCBiZSBhY2NvbXBhbmllZA0KYnkgdGhlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbi4gIEJ1dCB0aGlzIHJlcXVpcmVtZW50IGRvZXMgbm90IGFwcGx5DQppZiBuZWl0aGVyIHlvdSBub3IgYW55IHRoaXJkIHBhcnR5IHJldGFpbnMgdGhlIGFiaWxpdHkgdG8gaW5zdGFsbA0KbW9kaWZpZWQgb2JqZWN0IGNvZGUgb24gdGhlIFVzZXIgUHJvZHVjdCAoZm9yIGV4YW1wbGUsIHRoZSB3b3JrIGhhcw0KYmVlbiBpbnN0YWxsZWQgaW4gUk9NKS4NCg0KICBUaGUgcmVxdWlyZW1lbnQgdG8gcHJvdmlkZSBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24gZG9lcyBub3QgaW5jbHVkZSBhDQpyZXF1aXJlbWVudCB0byBjb250aW51ZSB0byBwcm92aWRlIHN1cHBvcnQgc2VydmljZSwgd2FycmFudHksIG9yIHVwZGF0ZXMNCmZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQgYnkgdGhlIHJlY2lwaWVudCwgb3IgZm9yDQp0aGUgVXNlciBQcm9kdWN0IGluIHdoaWNoIGl0IGhhcyBiZWVuIG1vZGlmaWVkIG9yIGluc3RhbGxlZC4gIEFjY2VzcyB0byBhDQpuZXR3b3JrIG1heSBiZSBkZW5pZWQgd2hlbiB0aGUgbW9kaWZpY2F0aW9uIGl0c2VsZiBtYXRlcmlhbGx5IGFuZA0KYWR2ZXJzZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBvciB2aW9sYXRlcyB0aGUgcnVsZXMgYW5kDQpwcm90b2NvbHMgZm9yIGNvbW11bmljYXRpb24gYWNyb3NzIHRoZSBuZXR3b3JrLg0KDQogIENvcnJlc3BvbmRpbmcgU291cmNlIGNvbnZleWVkLCBhbmQgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uIHByb3ZpZGVkLA0KaW4gYWNjb3JkIHdpdGggdGhpcyBzZWN0aW9uIG11c3QgYmUgaW4gYSBmb3JtYXQgdGhhdCBpcyBwdWJsaWNseQ0KZG9jdW1lbnRlZCAoYW5kIHdpdGggYW4gaW1wbGVtZW50YXRpb24gYXZhaWxhYmxlIHRvIHRoZSBwdWJsaWMgaW4NCnNvdXJjZSBjb2RlIGZvcm0pLCBhbmQgbXVzdCByZXF1aXJlIG5vIHNwZWNpYWwgcGFzc3dvcmQgb3Iga2V5IGZvcg0KdW5wYWNraW5nLCByZWFkaW5nIG9yIGNvcHlpbmcuDQoNCiAgNy4gQWRkaXRpb25hbCBUZXJtcy4NCg0KICAiQWRkaXRpb25hbCBwZXJtaXNzaW9ucyIgYXJlIHRlcm1zIHRoYXQgc3VwcGxlbWVudCB0aGUgdGVybXMgb2YgdGhpcw0KTGljZW5zZSBieSBtYWtpbmcgZXhjZXB0aW9ucyBmcm9tIG9uZSBvciBtb3JlIG9mIGl0cyBjb25kaXRpb25zLg0KQWRkaXRpb25hbCBwZXJtaXNzaW9ucyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBlbnRpcmUgUHJvZ3JhbSBzaGFsbA0KYmUgdHJlYXRlZCBhcyB0aG91Z2ggdGhleSB3ZXJlIGluY2x1ZGVkIGluIHRoaXMgTGljZW5zZSwgdG8gdGhlIGV4dGVudA0KdGhhdCB0aGV5IGFyZSB2YWxpZCB1bmRlciBhcHBsaWNhYmxlIGxhdy4gIElmIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMNCmFwcGx5IG9ubHkgdG8gcGFydCBvZiB0aGUgUHJvZ3JhbSwgdGhhdCBwYXJ0IG1heSBiZSB1c2VkIHNlcGFyYXRlbHkNCnVuZGVyIHRob3NlIHBlcm1pc3Npb25zLCBidXQgdGhlIGVudGlyZSBQcm9ncmFtIHJlbWFpbnMgZ292ZXJuZWQgYnkNCnRoaXMgTGljZW5zZSB3aXRob3V0IHJlZ2FyZCB0byB0aGUgYWRkaXRpb25hbCBwZXJtaXNzaW9ucy4NCg0KICBXaGVuIHlvdSBjb252ZXkgYSBjb3B5IG9mIGEgY292ZXJlZCB3b3JrLCB5b3UgbWF5IGF0IHlvdXIgb3B0aW9uDQpyZW1vdmUgYW55IGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgZnJvbSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQgb2YNCml0LiAgKEFkZGl0aW9uYWwgcGVybWlzc2lvbnMgbWF5IGJlIHdyaXR0ZW4gdG8gcmVxdWlyZSB0aGVpciBvd24NCnJlbW92YWwgaW4gY2VydGFpbiBjYXNlcyB3aGVuIHlvdSBtb2RpZnkgdGhlIHdvcmsuKSAgWW91IG1heSBwbGFjZQ0KYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlhbCwgYWRkZWQgYnkgeW91IHRvIGEgY292ZXJlZCB3b3JrLA0KZm9yIHdoaWNoIHlvdSBoYXZlIG9yIGNhbiBnaXZlIGFwcHJvcHJpYXRlIGNvcHlyaWdodCBwZXJtaXNzaW9uLg0KDQogIE5vdHdpdGhzdGFuZGluZyBhbnkgb3RoZXIgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSwgZm9yIG1hdGVyaWFsIHlvdQ0KYWRkIHRvIGEgY292ZXJlZCB3b3JrLCB5b3UgbWF5IChpZiBhdXRob3JpemVkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVycyBvZg0KdGhhdCBtYXRlcmlhbCkgc3VwcGxlbWVudCB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlIHdpdGggdGVybXM6DQoNCiAgICBhKSBEaXNjbGFpbWluZyB3YXJyYW50eSBvciBsaW1pdGluZyBsaWFiaWxpdHkgZGlmZmVyZW50bHkgZnJvbSB0aGUNCiAgICB0ZXJtcyBvZiBzZWN0aW9ucyAxNSBhbmQgMTYgb2YgdGhpcyBMaWNlbnNlOyBvcg0KDQogICAgYikgUmVxdWlyaW5nIHByZXNlcnZhdGlvbiBvZiBzcGVjaWZpZWQgcmVhc29uYWJsZSBsZWdhbCBub3RpY2VzIG9yDQogICAgYXV0aG9yIGF0dHJpYnV0aW9ucyBpbiB0aGF0IG1hdGVyaWFsIG9yIGluIHRoZSBBcHByb3ByaWF0ZSBMZWdhbA0KICAgIE5vdGljZXMgZGlzcGxheWVkIGJ5IHdvcmtzIGNvbnRhaW5pbmcgaXQ7IG9yDQoNCiAgICBjKSBQcm9oaWJpdGluZyBtaXNyZXByZXNlbnRhdGlvbiBvZiB0aGUgb3JpZ2luIG9mIHRoYXQgbWF0ZXJpYWwsIG9yDQogICAgcmVxdWlyaW5nIHRoYXQgbW9kaWZpZWQgdmVyc2lvbnMgb2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4NCiAgICByZWFzb25hYmxlIHdheXMgYXMgZGlmZmVyZW50IGZyb20gdGhlIG9yaWdpbmFsIHZlcnNpb247IG9yDQoNCiAgICBkKSBMaW1pdGluZyB0aGUgdXNlIGZvciBwdWJsaWNpdHkgcHVycG9zZXMgb2YgbmFtZXMgb2YgbGljZW5zb3JzIG9yDQogICAgYXV0aG9ycyBvZiB0aGUgbWF0ZXJpYWw7IG9yDQoNCiAgICBlKSBEZWNsaW5pbmcgdG8gZ3JhbnQgcmlnaHRzIHVuZGVyIHRyYWRlbWFyayBsYXcgZm9yIHVzZSBvZiBzb21lDQogICAgdHJhZGUgbmFtZXMsIHRyYWRlbWFya3MsIG9yIHNlcnZpY2UgbWFya3M7IG9yDQoNCiAgICBmKSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29ycyBhbmQgYXV0aG9ycyBvZiB0aGF0DQogICAgbWF0ZXJpYWwgYnkgYW55b25lIHdobyBjb252ZXlzIHRoZSBtYXRlcmlhbCAob3IgbW9kaWZpZWQgdmVyc2lvbnMgb2YNCiAgICBpdCkgd2l0aCBjb250cmFjdHVhbCBhc3N1bXB0aW9ucyBvZiBsaWFiaWxpdHkgdG8gdGhlIHJlY2lwaWVudCwgZm9yDQogICAgYW55IGxpYWJpbGl0eSB0aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRpcmVjdGx5IGltcG9zZSBvbg0KICAgIHRob3NlIGxpY2Vuc29ycyBhbmQgYXV0aG9ycy4NCg0KICBBbGwgb3RoZXIgbm9uLXBlcm1pc3NpdmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJlZCAiZnVydGhlcg0KcmVzdHJpY3Rpb25zIiB3aXRoaW4gdGhlIG1lYW5pbmcgb2Ygc2VjdGlvbiAxMC4gIElmIHRoZSBQcm9ncmFtIGFzIHlvdQ0KcmVjZWl2ZWQgaXQsIG9yIGFueSBwYXJ0IG9mIGl0LCBjb250YWlucyBhIG5vdGljZSBzdGF0aW5nIHRoYXQgaXQgaXMNCmdvdmVybmVkIGJ5IHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIGEgdGVybSB0aGF0IGlzIGEgZnVydGhlcg0KcmVzdHJpY3Rpb24sIHlvdSBtYXkgcmVtb3ZlIHRoYXQgdGVybS4gIElmIGEgbGljZW5zZSBkb2N1bWVudCBjb250YWlucw0KYSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGJ1dCBwZXJtaXRzIHJlbGljZW5zaW5nIG9yIGNvbnZleWluZyB1bmRlciB0aGlzDQpMaWNlbnNlLCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQgd29yayBtYXRlcmlhbCBnb3Zlcm5lZCBieSB0aGUgdGVybXMNCm9mIHRoYXQgbGljZW5zZSBkb2N1bWVudCwgcHJvdmlkZWQgdGhhdCB0aGUgZnVydGhlciByZXN0cmljdGlvbiBkb2VzDQpub3Qgc3Vydml2ZSBzdWNoIHJlbGljZW5zaW5nIG9yIGNvbnZleWluZy4NCg0KICBJZiB5b3UgYWRkIHRlcm1zIHRvIGEgY292ZXJlZCB3b3JrIGluIGFjY29yZCB3aXRoIHRoaXMgc2VjdGlvbiwgeW91DQptdXN0IHBsYWNlLCBpbiB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzLCBhIHN0YXRlbWVudCBvZiB0aGUNCmFkZGl0aW9uYWwgdGVybXMgdGhhdCBhcHBseSB0byB0aG9zZSBmaWxlcywgb3IgYSBub3RpY2UgaW5kaWNhdGluZw0Kd2hlcmUgdG8gZmluZCB0aGUgYXBwbGljYWJsZSB0ZXJtcy4NCg0KICBBZGRpdGlvbmFsIHRlcm1zLCBwZXJtaXNzaXZlIG9yIG5vbi1wZXJtaXNzaXZlLCBtYXkgYmUgc3RhdGVkIGluIHRoZQ0KZm9ybSBvZiBhIHNlcGFyYXRlbHkgd3JpdHRlbiBsaWNlbnNlLCBvciBzdGF0ZWQgYXMgZXhjZXB0aW9uczsNCnRoZSBhYm92ZSByZXF1aXJlbWVudHMgYXBwbHkgZWl0aGVyIHdheS4NCg0KICA4LiBUZXJtaW5hdGlvbi4NCg0KICBZb3UgbWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9kaWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkNCnByb3ZpZGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEFueSBhdHRlbXB0IG90aGVyd2lzZSB0byBwcm9wYWdhdGUgb3INCm1vZGlmeSBpdCBpcyB2b2lkLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSB5b3VyIHJpZ2h0cyB1bmRlcg0KdGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZSB0aGlyZA0KcGFyYWdyYXBoIG9mIHNlY3Rpb24gMTEpLg0KDQogIEhvd2V2ZXIsIGlmIHlvdSBjZWFzZSBhbGwgdmlvbGF0aW9uIG9mIHRoaXMgTGljZW5zZSwgdGhlbiB5b3VyDQpsaWNlbnNlIGZyb20gYSBwYXJ0aWN1bGFyIGNvcHlyaWdodCBob2xkZXIgaXMgcmVpbnN0YXRlZCAoYSkNCnByb3Zpc2lvbmFsbHksIHVubGVzcyBhbmQgdW50aWwgdGhlIGNvcHlyaWdodCBob2xkZXIgZXhwbGljaXRseSBhbmQNCmZpbmFsbHkgdGVybWluYXRlcyB5b3VyIGxpY2Vuc2UsIGFuZCAoYikgcGVybWFuZW50bHksIGlmIHRoZSBjb3B5cmlnaHQNCmhvbGRlciBmYWlscyB0byBub3RpZnkgeW91IG9mIHRoZSB2aW9sYXRpb24gYnkgc29tZSByZWFzb25hYmxlIG1lYW5zDQpwcmlvciB0byA2MCBkYXlzIGFmdGVyIHRoZSBjZXNzYXRpb24uDQoNCiAgTW9yZW92ZXIsIHlvdXIgbGljZW5zZSBmcm9tIGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzDQpyZWluc3RhdGVkIHBlcm1hbmVudGx5IGlmIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG5vdGlmaWVzIHlvdSBvZiB0aGUNCnZpb2xhdGlvbiBieSBzb21lIHJlYXNvbmFibGUgbWVhbnMsIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgeW91IGhhdmUNCnJlY2VpdmVkIG5vdGljZSBvZiB2aW9sYXRpb24gb2YgdGhpcyBMaWNlbnNlIChmb3IgYW55IHdvcmspIGZyb20gdGhhdA0KY29weXJpZ2h0IGhvbGRlciwgYW5kIHlvdSBjdXJlIHRoZSB2aW9sYXRpb24gcHJpb3IgdG8gMzAgZGF5cyBhZnRlcg0KeW91ciByZWNlaXB0IG9mIHRoZSBub3RpY2UuDQoNCiAgVGVybWluYXRpb24gb2YgeW91ciByaWdodHMgdW5kZXIgdGhpcyBzZWN0aW9uIGRvZXMgbm90IHRlcm1pbmF0ZSB0aGUNCmxpY2Vuc2VzIG9mIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcg0KdGhpcyBMaWNlbnNlLiAgSWYgeW91ciByaWdodHMgaGF2ZSBiZWVuIHRlcm1pbmF0ZWQgYW5kIG5vdCBwZXJtYW5lbnRseQ0KcmVpbnN0YXRlZCwgeW91IGRvIG5vdCBxdWFsaWZ5IHRvIHJlY2VpdmUgbmV3IGxpY2Vuc2VzIGZvciB0aGUgc2FtZQ0KbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC4NCg0KICA5LiBBY2NlcHRhbmNlIE5vdCBSZXF1aXJlZCBmb3IgSGF2aW5nIENvcGllcy4NCg0KICBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlIGluIG9yZGVyIHRvIHJlY2VpdmUgb3INCnJ1biBhIGNvcHkgb2YgdGhlIFByb2dyYW0uICBBbmNpbGxhcnkgcHJvcGFnYXRpb24gb2YgYSBjb3ZlcmVkIHdvcmsNCm9jY3VycmluZyBzb2xlbHkgYXMgYSBjb25zZXF1ZW5jZSBvZiB1c2luZyBwZWVyLXRvLXBlZXIgdHJhbnNtaXNzaW9uDQp0byByZWNlaXZlIGEgY29weSBsaWtld2lzZSBkb2VzIG5vdCByZXF1aXJlIGFjY2VwdGFuY2UuICBIb3dldmVyLA0Kbm90aGluZyBvdGhlciB0aGFuIHRoaXMgTGljZW5zZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gcHJvcGFnYXRlIG9yDQptb2RpZnkgYW55IGNvdmVyZWQgd29yay4gIFRoZXNlIGFjdGlvbnMgaW5mcmluZ2UgY29weXJpZ2h0IGlmIHlvdSBkbw0Kbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuICBUaGVyZWZvcmUsIGJ5IG1vZGlmeWluZyBvciBwcm9wYWdhdGluZyBhDQpjb3ZlcmVkIHdvcmssIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLg0KDQogIDEwLiBBdXRvbWF0aWMgTGljZW5zaW5nIG9mIERvd25zdHJlYW0gUmVjaXBpZW50cy4NCg0KICBFYWNoIHRpbWUgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywgdGhlIHJlY2lwaWVudCBhdXRvbWF0aWNhbGx5DQpyZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUgb3JpZ2luYWwgbGljZW5zb3JzLCB0byBydW4sIG1vZGlmeSBhbmQNCnByb3BhZ2F0ZSB0aGF0IHdvcmssIHN1YmplY3QgdG8gdGhpcyBMaWNlbnNlLiAgWW91IGFyZSBub3QgcmVzcG9uc2libGUNCmZvciBlbmZvcmNpbmcgY29tcGxpYW5jZSBieSB0aGlyZCBwYXJ0aWVzIHdpdGggdGhpcyBMaWNlbnNlLg0KDQogIEFuICJlbnRpdHkgdHJhbnNhY3Rpb24iIGlzIGEgdHJhbnNhY3Rpb24gdHJhbnNmZXJyaW5nIGNvbnRyb2wgb2YgYW4NCm9yZ2FuaXphdGlvbiwgb3Igc3Vic3RhbnRpYWxseSBhbGwgYXNzZXRzIG9mIG9uZSwgb3Igc3ViZGl2aWRpbmcgYW4NCm9yZ2FuaXphdGlvbiwgb3IgbWVyZ2luZyBvcmdhbml6YXRpb25zLiAgSWYgcHJvcGFnYXRpb24gb2YgYSBjb3ZlcmVkDQp3b3JrIHJlc3VsdHMgZnJvbSBhbiBlbnRpdHkgdHJhbnNhY3Rpb24sIGVhY2ggcGFydHkgdG8gdGhhdA0KdHJhbnNhY3Rpb24gd2hvIHJlY2VpdmVzIGEgY29weSBvZiB0aGUgd29yayBhbHNvIHJlY2VpdmVzIHdoYXRldmVyDQpsaWNlbnNlcyB0byB0aGUgd29yayB0aGUgcGFydHkncyBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCBoYWQgb3IgY291bGQNCmdpdmUgdW5kZXIgdGhlIHByZXZpb3VzIHBhcmFncmFwaCwgcGx1cyBhIHJpZ2h0IHRvIHBvc3Nlc3Npb24gb2YgdGhlDQpDb3JyZXNwb25kaW5nIFNvdXJjZSBvZiB0aGUgd29yayBmcm9tIHRoZSBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCwgaWYNCnRoZSBwcmVkZWNlc3NvciBoYXMgaXQgb3IgY2FuIGdldCBpdCB3aXRoIHJlYXNvbmFibGUgZWZmb3J0cy4NCg0KICBZb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25zIG9uIHRoZSBleGVyY2lzZSBvZiB0aGUNCnJpZ2h0cyBncmFudGVkIG9yIGFmZmlybWVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIEZvciBleGFtcGxlLCB5b3UgbWF5DQpub3QgaW1wb3NlIGEgbGljZW5zZSBmZWUsIHJveWFsdHksIG9yIG90aGVyIGNoYXJnZSBmb3IgZXhlcmNpc2Ugb2YNCnJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGlnYXRpb24NCihpbmNsdWRpbmcgYSBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0DQphbnkgcGF0ZW50IGNsYWltIGlzIGluZnJpbmdlZCBieSBtYWtpbmcsIHVzaW5nLCBzZWxsaW5nLCBvZmZlcmluZyBmb3INCnNhbGUsIG9yIGltcG9ydGluZyB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBpdC4NCg0KICAxMS4gUGF0ZW50cy4NCg0KICBBICJjb250cmlidXRvciIgaXMgYSBjb3B5cmlnaHQgaG9sZGVyIHdobyBhdXRob3JpemVzIHVzZSB1bmRlciB0aGlzDQpMaWNlbnNlIG9mIHRoZSBQcm9ncmFtIG9yIGEgd29yayBvbiB3aGljaCB0aGUgUHJvZ3JhbSBpcyBiYXNlZC4gIFRoZQ0Kd29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29udHJpYnV0b3IncyAiY29udHJpYnV0b3IgdmVyc2lvbiIuDQoNCiAgQSBjb250cmlidXRvcidzICJlc3NlbnRpYWwgcGF0ZW50IGNsYWltcyIgYXJlIGFsbCBwYXRlbnQgY2xhaW1zDQpvd25lZCBvciBjb250cm9sbGVkIGJ5IHRoZSBjb250cmlidXRvciwgd2hldGhlciBhbHJlYWR5IGFjcXVpcmVkIG9yDQpoZXJlYWZ0ZXIgYWNxdWlyZWQsIHRoYXQgd291bGQgYmUgaW5mcmluZ2VkIGJ5IHNvbWUgbWFubmVyLCBwZXJtaXR0ZWQNCmJ5IHRoaXMgTGljZW5zZSwgb2YgbWFraW5nLCB1c2luZywgb3Igc2VsbGluZyBpdHMgY29udHJpYnV0b3IgdmVyc2lvbiwNCmJ1dCBkbyBub3QgaW5jbHVkZSBjbGFpbXMgdGhhdCB3b3VsZCBiZSBpbmZyaW5nZWQgb25seSBhcyBhDQpjb25zZXF1ZW5jZSBvZiBmdXJ0aGVyIG1vZGlmaWNhdGlvbiBvZiB0aGUgY29udHJpYnV0b3IgdmVyc2lvbi4gIEZvcg0KcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAiY29udHJvbCIgaW5jbHVkZXMgdGhlIHJpZ2h0IHRvIGdyYW50DQpwYXRlbnQgc3VibGljZW5zZXMgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHRoZSByZXF1aXJlbWVudHMgb2YNCnRoaXMgTGljZW5zZS4NCg0KICBFYWNoIGNvbnRyaWJ1dG9yIGdyYW50cyB5b3UgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZQ0KcGF0ZW50IGxpY2Vuc2UgdW5kZXIgdGhlIGNvbnRyaWJ1dG9yJ3MgZXNzZW50aWFsIHBhdGVudCBjbGFpbXMsIHRvDQptYWtlLCB1c2UsIHNlbGwsIG9mZmVyIGZvciBzYWxlLCBpbXBvcnQgYW5kIG90aGVyd2lzZSBydW4sIG1vZGlmeSBhbmQNCnByb3BhZ2F0ZSB0aGUgY29udGVudHMgb2YgaXRzIGNvbnRyaWJ1dG9yIHZlcnNpb24uDQoNCiAgSW4gdGhlIGZvbGxvd2luZyB0aHJlZSBwYXJhZ3JhcGhzLCBhICJwYXRlbnQgbGljZW5zZSIgaXMgYW55IGV4cHJlc3MNCmFncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVyIGRlbm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudA0KKHN1Y2ggYXMgYW4gZXhwcmVzcyBwZXJtaXNzaW9uIHRvIHByYWN0aWNlIGEgcGF0ZW50IG9yIGNvdmVuYW50IG5vdCB0bw0Kc3VlIGZvciBwYXRlbnQgaW5mcmluZ2VtZW50KS4gIFRvICJncmFudCIgc3VjaCBhIHBhdGVudCBsaWNlbnNlIHRvIGENCnBhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0bWVudCBub3QgdG8gZW5mb3JjZSBhDQpwYXRlbnQgYWdhaW5zdCB0aGUgcGFydHkuDQoNCiAgSWYgeW91IGNvbnZleSBhIGNvdmVyZWQgd29yaywga25vd2luZ2x5IHJlbHlpbmcgb24gYSBwYXRlbnQgbGljZW5zZSwNCmFuZCB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2Ugb2YgdGhlIHdvcmsgaXMgbm90IGF2YWlsYWJsZSBmb3IgYW55b25lDQp0byBjb3B5LCBmcmVlIG9mIGNoYXJnZSBhbmQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwgdGhyb3VnaCBhDQpwdWJsaWNseSBhdmFpbGFibGUgbmV0d29yayBzZXJ2ZXIgb3Igb3RoZXIgcmVhZGlseSBhY2Nlc3NpYmxlIG1lYW5zLA0KdGhlbiB5b3UgbXVzdCBlaXRoZXIgKDEpIGNhdXNlIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSB0byBiZSBzbw0KYXZhaWxhYmxlLCBvciAoMikgYXJyYW5nZSB0byBkZXByaXZlIHlvdXJzZWxmIG9mIHRoZSBiZW5lZml0IG9mIHRoZQ0KcGF0ZW50IGxpY2Vuc2UgZm9yIHRoaXMgcGFydGljdWxhciB3b3JrLCBvciAoMykgYXJyYW5nZSwgaW4gYSBtYW5uZXINCmNvbnNpc3RlbnQgd2l0aCB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoaXMgTGljZW5zZSwgdG8gZXh0ZW5kIHRoZSBwYXRlbnQNCmxpY2Vuc2UgdG8gZG93bnN0cmVhbSByZWNpcGllbnRzLiAgIktub3dpbmdseSByZWx5aW5nIiBtZWFucyB5b3UgaGF2ZQ0KYWN0dWFsIGtub3dsZWRnZSB0aGF0LCBidXQgZm9yIHRoZSBwYXRlbnQgbGljZW5zZSwgeW91ciBjb252ZXlpbmcgdGhlDQpjb3ZlcmVkIHdvcmsgaW4gYSBjb3VudHJ5LCBvciB5b3VyIHJlY2lwaWVudCdzIHVzZSBvZiB0aGUgY292ZXJlZCB3b3JrDQppbiBhIGNvdW50cnksIHdvdWxkIGluZnJpbmdlIG9uZSBvciBtb3JlIGlkZW50aWZpYWJsZSBwYXRlbnRzIGluIHRoYXQNCmNvdW50cnkgdGhhdCB5b3UgaGF2ZSByZWFzb24gdG8gYmVsaWV2ZSBhcmUgdmFsaWQuDQoNCiAgSWYsIHB1cnN1YW50IHRvIG9yIGluIGNvbm5lY3Rpb24gd2l0aCBhIHNpbmdsZSB0cmFuc2FjdGlvbiBvcg0KYXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJpbmcgY29udmV5YW5jZSBvZiwgYQ0KY292ZXJlZCB3b3JrLCBhbmQgZ3JhbnQgYSBwYXRlbnQgbGljZW5zZSB0byBzb21lIG9mIHRoZSBwYXJ0aWVzDQpyZWNlaXZpbmcgdGhlIGNvdmVyZWQgd29yayBhdXRob3JpemluZyB0aGVtIHRvIHVzZSwgcHJvcGFnYXRlLCBtb2RpZnkNCm9yIGNvbnZleSBhIHNwZWNpZmljIGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vuc2UNCnlvdSBncmFudCBpcyBhdXRvbWF0aWNhbGx5IGV4dGVuZGVkIHRvIGFsbCByZWNpcGllbnRzIG9mIHRoZSBjb3ZlcmVkDQp3b3JrIGFuZCB3b3JrcyBiYXNlZCBvbiBpdC4NCg0KICBBIHBhdGVudCBsaWNlbnNlIGlzICJkaXNjcmltaW5hdG9yeSIgaWYgaXQgZG9lcyBub3QgaW5jbHVkZSB3aXRoaW4NCnRoZSBzY29wZSBvZiBpdHMgY292ZXJhZ2UsIHByb2hpYml0cyB0aGUgZXhlcmNpc2Ugb2YsIG9yIGlzDQpjb25kaXRpb25lZCBvbiB0aGUgbm9uLWV4ZXJjaXNlIG9mIG9uZSBvciBtb3JlIG9mIHRoZSByaWdodHMgdGhhdCBhcmUNCnNwZWNpZmljYWxseSBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gIFlvdSBtYXkgbm90IGNvbnZleSBhIGNvdmVyZWQNCndvcmsgaWYgeW91IGFyZSBhIHBhcnR5IHRvIGFuIGFycmFuZ2VtZW50IHdpdGggYSB0aGlyZCBwYXJ0eSB0aGF0IGlzDQppbiB0aGUgYnVzaW5lc3Mgb2YgZGlzdHJpYnV0aW5nIHNvZnR3YXJlLCB1bmRlciB3aGljaCB5b3UgbWFrZSBwYXltZW50DQp0byB0aGUgdGhpcmQgcGFydHkgYmFzZWQgb24gdGhlIGV4dGVudCBvZiB5b3VyIGFjdGl2aXR5IG9mIGNvbnZleWluZw0KdGhlIHdvcmssIGFuZCB1bmRlciB3aGljaCB0aGUgdGhpcmQgcGFydHkgZ3JhbnRzLCB0byBhbnkgb2YgdGhlDQpwYXJ0aWVzIHdobyB3b3VsZCByZWNlaXZlIHRoZSBjb3ZlcmVkIHdvcmsgZnJvbSB5b3UsIGEgZGlzY3JpbWluYXRvcnkNCnBhdGVudCBsaWNlbnNlIChhKSBpbiBjb25uZWN0aW9uIHdpdGggY29waWVzIG9mIHRoZSBjb3ZlcmVkIHdvcmsNCmNvbnZleWVkIGJ5IHlvdSAob3IgY29waWVzIG1hZGUgZnJvbSB0aG9zZSBjb3BpZXMpLCBvciAoYikgcHJpbWFyaWx5DQpmb3IgYW5kIGluIGNvbm5lY3Rpb24gd2l0aCBzcGVjaWZpYyBwcm9kdWN0cyBvciBjb21waWxhdGlvbnMgdGhhdA0KY29udGFpbiB0aGUgY292ZXJlZCB3b3JrLCB1bmxlc3MgeW91IGVudGVyZWQgaW50byB0aGF0IGFycmFuZ2VtZW50LA0Kb3IgdGhhdCBwYXRlbnQgbGljZW5zZSB3YXMgZ3JhbnRlZCwgcHJpb3IgdG8gMjggTWFyY2ggMjAwNy4NCg0KICBOb3RoaW5nIGluIHRoaXMgTGljZW5zZSBzaGFsbCBiZSBjb25zdHJ1ZWQgYXMgZXhjbHVkaW5nIG9yIGxpbWl0aW5nDQphbnkgaW1wbGllZCBsaWNlbnNlIG9yIG90aGVyIGRlZmVuc2VzIHRvIGluZnJpbmdlbWVudCB0aGF0IG1heQ0Kb3RoZXJ3aXNlIGJlIGF2YWlsYWJsZSB0byB5b3UgdW5kZXIgYXBwbGljYWJsZSBwYXRlbnQgbGF3Lg0KDQogIDEyLiBObyBTdXJyZW5kZXIgb2YgT3RoZXJzJyBGcmVlZG9tLg0KDQogIElmIGNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3INCm90aGVyd2lzZSkgdGhhdCBjb250cmFkaWN0IHRoZSBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSwgdGhleSBkbyBub3QNCmV4Y3VzZSB5b3UgZnJvbSB0aGUgY29uZGl0aW9ucyBvZiB0aGlzIExpY2Vuc2UuICBJZiB5b3UgY2Fubm90IGNvbnZleSBhDQpjb3ZlcmVkIHdvcmsgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMNCkxpY2Vuc2UgYW5kIGFueSBvdGhlciBwZXJ0aW5lbnQgb2JsaWdhdGlvbnMsIHRoZW4gYXMgYSBjb25zZXF1ZW5jZSB5b3UgbWF5DQpub3QgY29udmV5IGl0IGF0IGFsbC4gIEZvciBleGFtcGxlLCBpZiB5b3UgYWdyZWUgdG8gdGVybXMgdGhhdCBvYmxpZ2F0ZSB5b3UNCnRvIGNvbGxlY3QgYSByb3lhbHR5IGZvciBmdXJ0aGVyIGNvbnZleWluZyBmcm9tIHRob3NlIHRvIHdob20geW91IGNvbnZleQ0KdGhlIFByb2dyYW0sIHRoZSBvbmx5IHdheSB5b3UgY291bGQgc2F0aXNmeSBib3RoIHRob3NlIHRlcm1zIGFuZCB0aGlzDQpMaWNlbnNlIHdvdWxkIGJlIHRvIHJlZnJhaW4gZW50aXJlbHkgZnJvbSBjb252ZXlpbmcgdGhlIFByb2dyYW0uDQoNCiAgMTMuIFVzZSB3aXRoIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuDQoNCiAgTm90d2l0aHN0YW5kaW5nIGFueSBvdGhlciBwcm92aXNpb24gb2YgdGhpcyBMaWNlbnNlLCB5b3UgaGF2ZQ0KcGVybWlzc2lvbiB0byBsaW5rIG9yIGNvbWJpbmUgYW55IGNvdmVyZWQgd29yayB3aXRoIGEgd29yayBsaWNlbnNlZA0KdW5kZXIgdmVyc2lvbiAzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaW50byBhIHNpbmdsZQ0KY29tYmluZWQgd29yaywgYW5kIHRvIGNvbnZleSB0aGUgcmVzdWx0aW5nIHdvcmsuICBUaGUgdGVybXMgb2YgdGhpcw0KTGljZW5zZSB3aWxsIGNvbnRpbnVlIHRvIGFwcGx5IHRvIHRoZSBwYXJ0IHdoaWNoIGlzIHRoZSBjb3ZlcmVkIHdvcmssDQpidXQgdGhlIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9mIHRoZSBHTlUgQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsDQpzZWN0aW9uIDEzLCBjb25jZXJuaW5nIGludGVyYWN0aW9uIHRocm91Z2ggYSBuZXR3b3JrIHdpbGwgYXBwbHkgdG8gdGhlDQpjb21iaW5hdGlvbiBhcyBzdWNoLg0KDQogIDE0LiBSZXZpc2VkIFZlcnNpb25zIG9mIHRoaXMgTGljZW5zZS4NCg0KICBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucyBvZg0KdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMgd2lsbA0KYmUgc2ltaWxhciBpbiBzcGlyaXQgdG8gdGhlIHByZXNlbnQgdmVyc2lvbiwgYnV0IG1heSBkaWZmZXIgaW4gZGV0YWlsIHRvDQphZGRyZXNzIG5ldyBwcm9ibGVtcyBvciBjb25jZXJucy4NCg0KICBFYWNoIHZlcnNpb24gaXMgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gIElmIHRoZQ0KUHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVyYWwNClB1YmxpYyBMaWNlbnNlICJvciBhbnkgbGF0ZXIgdmVyc2lvbiIgYXBwbGllcyB0byBpdCwgeW91IGhhdmUgdGhlDQpvcHRpb24gb2YgZm9sbG93aW5nIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBlaXRoZXIgb2YgdGhhdCBudW1iZXJlZA0KdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUNCkZvdW5kYXRpb24uICBJZiB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBzcGVjaWZ5IGEgdmVyc2lvbiBudW1iZXIgb2YgdGhlDQpHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgeW91IG1heSBjaG9vc2UgYW55IHZlcnNpb24gZXZlciBwdWJsaXNoZWQNCmJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uDQoNCiAgSWYgdGhlIFByb2dyYW0gc3BlY2lmaWVzIHRoYXQgYSBwcm94eSBjYW4gZGVjaWRlIHdoaWNoIGZ1dHVyZQ0KdmVyc2lvbnMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGNhbiBiZSB1c2VkLCB0aGF0IHByb3h5J3MNCnB1YmxpYyBzdGF0ZW1lbnQgb2YgYWNjZXB0YW5jZSBvZiBhIHZlcnNpb24gcGVybWFuZW50bHkgYXV0aG9yaXplcyB5b3UNCnRvIGNob29zZSB0aGF0IHZlcnNpb24gZm9yIHRoZSBQcm9ncmFtLg0KDQogIExhdGVyIGxpY2Vuc2UgdmVyc2lvbnMgbWF5IGdpdmUgeW91IGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50DQpwZXJtaXNzaW9ucy4gIEhvd2V2ZXIsIG5vIGFkZGl0aW9uYWwgb2JsaWdhdGlvbnMgYXJlIGltcG9zZWQgb24gYW55DQphdXRob3Igb3IgY29weXJpZ2h0IGhvbGRlciBhcyBhIHJlc3VsdCBvZiB5b3VyIGNob29zaW5nIHRvIGZvbGxvdyBhDQpsYXRlciB2ZXJzaW9uLg0KDQogIDE1LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5Lg0KDQogIFRIRVJFIElTIE5PIFdBUlJBTlRZIEZPUiBUSEUgUFJPR1JBTSwgVE8gVEhFIEVYVEVOVCBQRVJNSVRURUQgQlkNCkFQUExJQ0FCTEUgTEFXLiAgRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQNCkhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMgUFJPVklERSBUSEUgUFJPR1JBTSAiQVMgSVMiIFdJVEhPVVQgV0FSUkFOVFkNCk9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTU0VEIE9SIElNUExJRUQsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLA0KVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUg0KUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUyBUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0NCklTIFdJVEggWU9VLiAgU0hPVUxEIFRIRSBQUk9HUkFNIFBST1ZFIERFRkVDVElWRSwgWU9VIEFTU1VNRSBUSEUgQ09TVCBPRg0KQUxMIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLg0KDQogIDE2LiBMaW1pdGF0aW9uIG9mIExpYWJpbGl0eS4NCg0KICBJTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcNCldJTEwgQU5ZIENPUFlSSUdIVCBIT0xERVIsIE9SIEFOWSBPVEhFUiBQQVJUWSBXSE8gTU9ESUZJRVMgQU5EL09SIENPTlZFWVMNClRIRSBQUk9HUkFNIEFTIFBFUk1JVFRFRCBBQk9WRSwgQkUgTElBQkxFIFRPIFlPVSBGT1IgREFNQUdFUywgSU5DTFVESU5HIEFOWQ0KR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORyBPVVQgT0YgVEhFDQpVU0UgT1IgSU5BQklMSVRZIFRPIFVTRSBUSEUgUFJPR1JBTSAoSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBMT1NTIE9GDQpEQVRBIE9SIERBVEEgQkVJTkcgUkVOREVSRUQgSU5BQ0NVUkFURSBPUiBMT1NTRVMgU1VTVEFJTkVEIEJZIFlPVSBPUiBUSElSRA0KUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUiBQUk9HUkFNUyksDQpFVkVOIElGIFNVQ0ggSE9MREVSIE9SIE9USEVSIFBBUlRZIEhBUyBCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GDQpTVUNIIERBTUFHRVMuDQoNCiAgMTcuIEludGVycHJldGF0aW9uIG9mIFNlY3Rpb25zIDE1IGFuZCAxNi4NCg0KICBJZiB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50eSBhbmQgbGltaXRhdGlvbiBvZiBsaWFiaWxpdHkgcHJvdmlkZWQNCmFib3ZlIGNhbm5vdCBiZSBnaXZlbiBsb2NhbCBsZWdhbCBlZmZlY3QgYWNjb3JkaW5nIHRvIHRoZWlyIHRlcm1zLA0KcmV2aWV3aW5nIGNvdXJ0cyBzaGFsbCBhcHBseSBsb2NhbCBsYXcgdGhhdCBtb3N0IGNsb3NlbHkgYXBwcm94aW1hdGVzDQphbiBhYnNvbHV0ZSB3YWl2ZXIgb2YgYWxsIGNpdmlsIGxpYWJpbGl0eSBpbiBjb25uZWN0aW9uIHdpdGggdGhlDQpQcm9ncmFtLCB1bmxlc3MgYSB3YXJyYW50eSBvciBhc3N1bXB0aW9uIG9mIGxpYWJpbGl0eSBhY2NvbXBhbmllcyBhDQpjb3B5IG9mIHRoZSBQcm9ncmFtIGluIHJldHVybiBmb3IgYSBmZWUuDQoNCiAgICAgICAgICAgICAgICAgICAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUw==]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.gateway.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHANCg0KbmFtZXNwYWNlIFNhZ2VwYXkyOw0KDQpmaW5hbCBjbGFzcyBnYXRld2F5IGltcGxlbWVudHMgXENHRWNvbW1lcmNlQmFzZVxwYXltZW50X2dhdGV3YXkgew0KDQogICB1c2UgXENHRWNvbW1lcmNlQmFzZVxkZmx0X2dhdGV3YXlfaW1wbGVtZW50YXRpb247DQogICBwcml2YXRlICRfbW9kOw0KDQogICAvLyBtb2R1bGUgbGltaXRzDQogICBwdWJsaWMgZnVuY3Rpb24gQWxsb3dzSW5zdGFudENoZWNrb3V0KCkgeyByZXR1cm4gVFJVRTsgfQ0KICAgcHVibGljIGZ1bmN0aW9uIFJlcXVpcmVzQ3JlZGl0Q2FyZEluZm8oKSB7IHJldHVybiBmYWxzZTsgfQ0KICAgcHVibGljIGZ1bmN0aW9uIFJlcXVpcmVzU1NMKCkgeyByZXR1cm4gZmFsc2U7IH0NCiAgIHB1YmxpYyBmdW5jdGlvbiBSZXF1aXJlc1NoaXBwaW5nSW5mbygpIHsgcmV0dXJuIGZhbHNlOyB9DQogICBwdWJsaWMgZnVuY3Rpb24gUmVxdWlyZXNCaWxsaW5nSW5mbygpIHsgcmV0dXJuIGZhbHNlOyB9DQogICBwdWJsaWMgZnVuY3Rpb24gU3VwcG9ydHNPZmZsaW5lQ2hhcmdlcygpIHsgcmV0dXJuIGZhbHNlOyB9DQogICBwdWJsaWMgZnVuY3Rpb24gU3VwcG9ydHNSZWZ1bmRzKCkgeyByZXR1cm4gZmFsc2U7IH0NCg0KICAgcHVibGljIGZ1bmN0aW9uIF9fY29uc3RydWN0KCBcU2FnZXBheTIgJG1vZCApIHsNCiAgICAgICR0aGlzLT5fbW9kID0gJG1vZDsNCiAgIH0NCg0KICAgcHVibGljIGZ1bmN0aW9uIEdldE5hbWUoKSB7DQogICAgICByZXR1cm4gJHRoaXMtPl9tb2QtPkdldE5hbWUoKTsNCiAgIH0NCg0KICAgcHVibGljIGZ1bmN0aW9uIElzQ29uZmlndXJlZCgpIHsNCiAgICAgICR0bXAgPSBudWxsOw0KICAgICAgJGNvbmZpZ3VyZWQgPSBmYWxzZTsNCiAgICAgICRtb2QgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9TQUdFUEFZMik7DQogICAgICBpZiAoICR0bXAgPSBleHBsb2RlKCc6JywgJG1vZC0+R2V0UHJlZmVyZW5jZSgndmVuZG9yX2VtYWlsJykpICkgew0KICAgICAgICAgZm9yZWFjaCAoJHRtcCBhcyAkdG1wRW1haWwpIHsNCiAgICAgICAgICAgIGlmICggZmlsdGVyX3ZhcigkdG1wRW1haWwsIEZJTFRFUl9WQUxJREFURV9FTUFJTCkgKSB7DQogICAgICAgICAgICAgICAkY29uZmlndXJlZCA9IHRydWU7DQogICAgICAgICAgICB9DQogICAgICAgICB9DQogICAgICB9DQogICAgICByZXR1cm4gJGNvbmZpZ3VyZWQ7DQogICB9DQoNCiAgIGZ1bmN0aW9uIENoZWNrSW5mbygpIHsgcmV0dXJuIHRydWU7IH0NCg0KICAgZnVuY3Rpb24gRmluaXNoVHJhbnNhY3Rpb24oKSB7DQogICAgICBpZiggIWlzc2V0KCR0aGlzLT5fZGF0YVsnZGVzdGluYXRpb24nXSkgKSByZXR1cm4gRkFMU0U7DQoNCiAgICAgICRtb2QgPSBcY21zX3V0aWxzOjpnZXRfbW9kdWxlKE1PRF9TQUdFUEFZMik7DQogICAgICAka2V5ID0gJHRoaXMtPlNhdmVTdGF0ZSh0cnVlKTsNCiAgICAgICR1cmwgPSAkdGhpcy0+X2RhdGFbJ2Rlc3RpbmF0aW9uJ107DQogICAgICAkdXJsID0gaHRtbF9lbnRpdHlfZGVjb2RlKCR1cmwpOw0KICAgICAgJHVybCAuPSAiJmNudG50MDFkYXRha2V5PSRrZXkiOw0KICAgICAgJHVybCAuPSAnJmNudG50MDFnYXRld2F5PScuJG1vZC0+R2V0TmFtZSgpOw0KICAgICAgcmVkaXJlY3QoJHVybCk7DQogICB9DQoNCiAgIGZ1bmN0aW9uIEdldEZvcm0oJHJldHVybmlkKSB7DQogICAgICAkbW9kID0gXGNtc191dGlsczo6Z2V0X21vZHVsZShNT0RfU0FHRVBBWTIpOw0KICAgICAgaWYoICEkdGhpcy0+Q2hlY2tJbmZvKCkgKSByZXR1cm4gRkFMU0U7DQoNCiAgICAgICRrZXkgPSAkdGhpcy0+U2F2ZVN0YXRlKHRydWUpOw0KICAgICAgJHVybCA9ICcnOw0KDQogICAgICAkdmVuZG9yTmFtZSA9ICcnOw0KICAgICAgJGNyeXB0S2V5ID0gJyc7DQogICAgICBpZiggJG1vZC0+R2V0UHJlZmVyZW5jZSgncHJvZG1vZGUnKSApIHsNCiAgICAgICAgICR1cmwgPSAkbW9kOjpQUk9EX1VSTDsNCiAgICAgICAgICR2ZW5kb3JOYW1lID0gJG1vZC0+R2V0UHJlZmVyZW5jZSgncHJvZF9hY2N0Jyk7DQogICAgICAgICAkY3J5cHRLZXkgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCdwcm9kX3Rva2VuJyk7DQogICAgICB9IGVsc2Ugew0KICAgICAgICAgJHVybCA9ICRtb2Q6OlRFU1RfVVJMOw0KICAgICAgICAgJHZlbmRvck5hbWUgPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCd0ZXN0X2FjY3QnKTsNCiAgICAgICAgICRjcnlwdEtleSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ3Rlc3RfdG9rZW4nKTsNCiAgICAgIH0NCg0KICAgICAgJHBhcm1zID0gYXJyYXkoKTsNCiAgICAgIC8vIGFkZCBzb21lIFNhZ2VQYXkgc3BlY2lmaWMgdmFsdWVzDQogICAgICAkcGFybXNbJ1ZQU1Byb3RvY29sJ10gPSAkbW9kOjpWUFNQcm90b2NvbDsNCiAgICAgICRwYXJtc1snVHhUeXBlJ10gPSAnUGF5bWVudCc7DQogICAgICAkcGFybXNbJ1ZlbmRvciddID0gJHZlbmRvck5hbWU7DQoNCiAgICAgIC8vIGZvciBTYWdlUGF5IHRoZSAnQ3J5cHQnIGZpZWxkIHNob3VsZCBjb250YWluIGFsbCB0aGUgb3RoZXIgdHJhbnNhY3Rpb24gaW5mb3JtYXRpb24NCiAgICAgICRfY3J5cHQgPSBhcnJheSgpOw0KICAgICAgLy8gZ2V0IGFsbCBtYW5kYXRvcnkgZmllbGRzDQogICAgICAkX2NyeXB0WydWZW5kb3JUeENvZGUnXSA9ICR0aGlzLT5HZXRPcmRlcklkKCkuJy0nLmRhdGUoJ1ktbS1kLVRILWktcycpOw0KICAgICAgJF9jcnlwdFsnQW1vdW50J10gPSBudW1iZXJfZm9ybWF0KCAkdGhpcy0+R2V0VHJhbnNhY3Rpb25BbW91bnQoKSAsMiwnLicsJycgKTsNCiAgICAgICRfY3J5cHRbJ0N1cnJlbmN5J10gPSAoJHRtcCA9ICR0aGlzLT5HZXRDdXJyZW5jeUNvZGUoKSkgPyAkdG1wIDogY2dfZWNvbW06OmdldF9jdXJyZW5jeV9jb2RlKCk7IC8vIG1hbmRhdG9yeQ0KICAgICAgJF9jcnlwdFsnRGVzY3JpcHRpb24nXSA9ICdFY29tbWVyY2UgT3JkZXInOw0KICAgICAgJF9jcnlwdFsnU3VjY2Vzc1VSTCddID0gc3RyX3JlcGxhY2UoICcmYW1wOycsICcmJywgJG1vZC0+Q3JlYXRlTGluaygnY250bnQwMScsJ3JldHVybl9zdWNjZXNzJywkcmV0dXJuaWQsJycsDQogICAgICAgICBhcnJheSgnb3JkZXJfaWQnPT4kdGhpcy0+R2V0T3JkZXJJZCgpLCdteWN1c3RvbSc9PiRrZXkpLCcnLHRydWUpICk7DQogICAgICAkX2NyeXB0WydGYWlsdXJlVVJMJ10gPSBzdHJfcmVwbGFjZSggJyZhbXA7JywgJyYnLCAkbW9kLT5DcmVhdGVMaW5rKCdjbnRudDAxJywncmV0dXJuX2NhbmNlbCcsJHJldHVybmlkLCcnLA0KICAgICAgICAgYXJyYXkoJ29yZGVyX2lkJz0+JHRoaXMtPkdldE9yZGVySWQoKSwnbXljdXN0b20nPT4ka2V5KSwnJyx0cnVlKSApOw0KDQogICAgICAvLyBhZGQgb3B0aW9uYWwgZmllbGRzDQogICAgICAkX2NyeXB0WydTZW5kRU1haWwnXSA9ICRtb2QtPkdldFByZWZlcmVuY2UoJ3NlbmRfZW1haWxfc2VsZWN0ZWQnKTsNCiAgICAgICRfY3J5cHRbJ1ZlbmRvckVNYWlsJ10gPSAkbW9kLT5HZXRQcmVmZXJlbmNlKCd2ZW5kb3JfZW1haWwnKTsNCg0KICAgICAgLy8gYWRkIGFkZHJlc3MgZGV0YWlscyAtIGFsc28gbW9zdGx5IG1hbmRhdG9yeQ0KICAgICAgaWYgKCAoJGFkZHJlc3MgPSAkdGhpcy0+R2V0QmlsbGluZ0FkZHJlc3MoKSkgKSB7DQogICAgICAgICAkX2NyeXB0WydCaWxsaW5nU3VybmFtZSddID0gJGFkZHJlc3MtPmdldF9sYXN0bmFtZSgpOw0KICAgICAgICAgJF9jcnlwdFsnQmlsbGluZ0ZpcnN0bmFtZXMnXSA9ICRhZGRyZXNzLT5nZXRfZmlyc3RuYW1lKCk7DQogICAgICAgICAkX2NyeXB0WydCaWxsaW5nQWRkcmVzczEnXSA9ICRhZGRyZXNzLT5nZXRfYWRkcmVzczEoKTsNCiAgICAgICAgIGlmICggKCRhZGRyMiA9ICRhZGRyZXNzLT5nZXRfYWRkcmVzczIoKSkgKSAkX2NyeXB0WydCaWxsaW5nQWRkcmVzczInXSA9ICRhZGRyMjsNCiAgICAgICAgICRfY3J5cHRbJ0JpbGxpbmdDaXR5J10gPSAkYWRkcmVzcy0+Z2V0X2NpdHkoKTsNCiAgICAgICAgIGlmICggKCRzdGF0ZSA9ICRhZGRyZXNzLT5nZXRfc3RhdGUoKSkgKSAgJF9jcnlwdFsnQmlsbGluZ1N0YXRlJ10gPSAkc3RhdGU7DQogICAgICAgICAkX2NyeXB0WydCaWxsaW5nUG9zdENvZGUnXSA9ICRhZGRyZXNzLT5nZXRfcG9zdGFsKCk7DQogICAgICAgICAkX2NyeXB0WydCaWxsaW5nQ291bnRyeSddID0gJGFkZHJlc3MtPmdldF9jb3VudHJ5KCk7DQogICAgICAgICBpZiAoICgkcGhvbmUgPSAkYWRkcmVzcy0+Z2V0X3Bob25lKCkpICkgJF9jcnlwdFsnQmlsbGluZ1Bob25lJ10gPSAkcGhvbmU7DQogICAgICAgICAkX2NyeXB0WydDdXN0b21lckVNYWlsJ10gPSAkYWRkcmVzcy0+Z2V0X2VtYWlsKCk7DQogICAgICB9DQogICAgICBpZiAoICgkYWRkcmVzcyA9ICR0aGlzLT5HZXRTaGlwcGluZ0FkZHJlc3MoKSkgKSB7ICAgLy8gYWxzbyBtb3N0bHkgbWFuZGF0b3J5DQogICAgICAgICAkX2NyeXB0WydEZWxpdmVyeVN1cm5hbWUnXSA9ICRhZGRyZXNzLT5nZXRfbGFzdG5hbWUoKTsNCiAgICAgICAgICRfY3J5cHRbJ0RlbGl2ZXJ5Rmlyc3RuYW1lcyddID0gJGFkZHJlc3MtPmdldF9maXJzdG5hbWUoKTsNCiAgICAgICAgICRfY3J5cHRbJ0RlbGl2ZXJ5QWRkcmVzczEnXSA9ICRhZGRyZXNzLT5nZXRfYWRkcmVzczEoKTsNCiAgICAgICAgIGlmICggKCRhZGRyMiA9ICRhZGRyZXNzLT5nZXRfYWRkcmVzczIoKSkgKSAkX2NyeXB0WydEZWxpdmVyeUFkZHJlc3MyJ10gPSAkYWRkcjI7DQogICAgICAgICAkX2NyeXB0WydEZWxpdmVyeUNpdHknXSA9ICRhZGRyZXNzLT5nZXRfY2l0eSgpOw0KICAgICAgICAgaWYgKCAoJHN0YXRlID0gJGFkZHJlc3MtPmdldF9zdGF0ZSgpKSApICAkX2NyeXB0WydEZWxpdmVyeVN0YXRlJ10gPSAkc3RhdGU7DQogICAgICAgICAkX2NyeXB0WydEZWxpdmVyeVBvc3RDb2RlJ10gPSAkYWRkcmVzcy0+Z2V0X3Bvc3RhbCgpOw0KICAgICAgICAgJF9jcnlwdFsnRGVsaXZlcnlDb3VudHJ5J10gPSAkYWRkcmVzcy0+Z2V0X2NvdW50cnkoKTsNCiAgICAgICAgIGlmICggKCRwaG9uZSA9ICRhZGRyZXNzLT5nZXRfcGhvbmUoKSkgKSAkX2NyeXB0WydEZWxpdmVyeVBob25lJ10gPSAkcGhvbmU7DQogICAgICB9DQoNCiAgICAgIC8vIGFkZCBiYXNrZXQgaXRlbXMsIGluY2x1ZGluZyBUYXggJiBEZWxpdmVyeQ0KICAgICAgJGJhc2tldCA9ICcnOw0KICAgICAgJGNvdW50ID0gMDsNCiAgICAgICRpdGVtcyA9ICR0aGlzLT5HZXRJdGVtcygpOw0KICAgICAgZm9yZWFjaCggJGl0ZW1zIGFzICRuYW1lID0+ICRkYXRhICkgew0KICAgICAgICAgLy8gYWRkIGVhY2ggYmFza2V0IGxpbmUgZm9ybWF0OiAnSXRlbXM6UXVhbnRpdHk6SXRlbSB2YWx1ZTpJdGVtIFRheDpJdGVtIFRvdGFsOkxpbmUgVG90YWwnDQogICAgICAgICAkaXRlbU5hbWUgPSBzdHJfcmVwbGFjZSgnOicsICcgJywgJG5hbWUpOw0KICAgICAgICAgJGl0ZW1RdHkgPSAkZGF0YVsncXVhbnRpdHknXTsNCiAgICAgICAgICRpdGVtVmFsdWUgPSBudW1iZXJfZm9ybWF0KCAkZGF0YVsnYW1vdW50J10sMiwnLicsJycgKTsNCiAgICAgICAgICRiYXNrZXQgLj0gJzonLiAkaXRlbU5hbWUgLic6Jy4gJGl0ZW1RdHkgLic6Jy4gJGl0ZW1WYWx1ZSAuJzo6OicuDQogICAgICAgICAgICBudW1iZXJfZm9ybWF0KCRpdGVtUXR5KiRpdGVtVmFsdWUgLDIsJy4nLCcnKTsNCiAgICAgICAgICRjb3VudCsrOw0KICAgICAgfQ0KICAgICAgJF9jcnlwdFsnQmFza2V0J10gPSAkY291bnQuJGJhc2tldDsNCg0KDQogICAgICAvLyByb2xsIGFsbCBfY3J5cHQgaW50byBhbiBlbmNyeXB0ZWQgcXVlcnkgc3RyaW5nDQogICAgICAkcXVlcnlTdHIgPSAkdGhpcy0+YXJyYXlUb1F1ZXJ5U3RyaW5nKCRfY3J5cHQpOw0KICAgICAgLy8gRW5jcnlwdCBvcmRlciBkZXRhaWxzIHVzaW5nIGJhc2U2NCBhbmQgdGhlIHNlY3JldCBrZXkgZnJvbSB0aGUgc2V0dGluZ3MuDQogICAgICAkcGFybXNbJ0NyeXB0J10gPSAkdGhpcy0+ZW5jcnlwdEFlcygkcXVlcnlTdHIsICRjcnlwdEtleSk7DQoNCiAgICAgIC8vIGdpdmUgZXZlcnl0aGluZyB0byBzbWFydHkNCiAgICAgICRnQ21zID0gY21zbXMoKTsNCiAgICAgICRjb25maWcgPSAkZ0Ntcy0+R2V0Q29uZmlnKCk7DQogICAgICAkc21hcnR5ID0gJGdDbXMtPkdldFNtYXJ0eSgpOw0KICAgICAgJHNtYXJ0eS0+YXNzaWduKCdwb3N0dXJsJywkdXJsKTsNCg0KICAgICAgJHN0ciA9ICcnOw0KICAgICAgJGZtdCA9ICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSIlcyIgdmFsdWU9IiVzIi8+Jy4iXG4iOw0KICAgICAgZm9yZWFjaCggJHBhcm1zIGFzICRrZXk9PiR2YWx1ZSApIHsNCiAgICAgICAgICAkc3RyIC49IHNwcmludGYoJGZtdCwka2V5LChzdHJpbmcpJHZhbHVlKTsNCiAgICAgIH0NCiAgICAgICRzbWFydHktPmFzc2lnbignZm9ybXZhbHVlcycsJHN0cik7DQoNCiAgICAgIHJldHVybiAkbW9kLT5Qcm9jZXNzVGVtcGxhdGVGcm9tRGF0YWJhc2UoJ2Zvcm1fdGVtcGxhdGUnKTsNCiAgIH0NCg0KDQoNCiAgIHB1YmxpYyBmdW5jdGlvbiBnZXRfY2FydGl0ZW1fcG9saWN5KCkgew0KICAgICAgJG1vZCA9IFxjbXNfdXRpbHM6OmdldF9tb2R1bGUoTU9EX1NBR0VQQVkyKTsNCg0KICAgICAgJHBvbGljeSA9IG5ldyBcY2dfZWNvbW1fY2FydGl0ZW1fcG9saWN5Ow0KICAgICAgLy8gaWYoICRtb2QtPkdldFByZWZlcmVuY2UoJ2FsbG93X3N1YnNjcmlwdGlvbnMnKSAmJiAkbW9kLT5HZXRQcmVmZXJlbmNlKCdlbmFibGVfaXBuJykgKSB7DQogICAgICAvLyAgICAgJHBvbGljeS0+c2V0X21heF9zdWJzY3JpcHRpb25zKDEpOw0KICAgICAgLy8gfQ0KICAgICAgLy8gZWxzZSB7DQogICAgICAgICAkcG9saWN5LT5zZXRfbWF4X3N1YnNjcmlwdGlvbnMoMCk7DQogICAgICAvLyB9DQogICAgICAvLyAkcG9saWN5LT5zZXRfbWF4X3N1YnNjcmlwdGlvbl9wZXJpb2RzKCA1MiApOw0KICAgICAgJHBvbGljeS0+c2V0X21heF9zdWJzY3JpcHRpb25fcGVyaW9kcyggMCApOw0KICAgICAgJHBvbGljeS0+c2V0X21peGVkX3N1YnNjcmlwdGlvbnMoRkFMU0UpOw0KICAgICAgcmV0dXJuICRwb2xpY3k7DQogICB9DQoNCg0KDQogICBwdWJsaWMgZnVuY3Rpb24gUHJvY2Vzc1RyYW5zYWN0aW9uKCkgew0KICAgICAgZGllKF9fTUVUSE9EX18uJyBpcyBub3QgaW1wbGVtZW50ZWQnKTsNCiAgIH0NCg0KDQoNCiAgIHB1YmxpYyBmdW5jdGlvbiBQcm9jZXNzU3luY1RyYW5zYWN0aW9uKCkgew0KICAgICAgZGllKF9fTUVUSE9EX18uJyBpcyBub3QgaW1wbGVtZW50ZWQnKTsNCiAgIH0NCg0KDQoNCiAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgIC8vIGFkZGVkIGZ1bmN0aW9ucyAtIGZyb20gU2FnZXBheSAtIGZvciBBUEkgdjMuMA0KICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KDQogICAvKioNCiAgICogUEhQJ3MgbWNyeXB0IGRvZXMgbm90IGhhdmUgYnVpbHQgaW4gUEtDUzUgUGFkZGluZywgc28gd2UgdXNlIHRoaXMuDQogICAqDQogICAqIEBwYXJhbSBzdHJpbmcgJGlucHV0IFRoZSBpbnB1dCBzdHJpbmcuDQogICAqDQogICAqIEByZXR1cm4gc3RyaW5nIFRoZSBzdHJpbmcgd2l0aCBwYWRkaW5nLg0KICAgKi8NCiAgIHByb3RlY3RlZCBmdW5jdGlvbiBhZGRQS0NTNVBhZGRpbmcoJGlucHV0KSB7DQogICAgICAkYmxvY2tTaXplID0gMTY7DQogICAgICAkcGFkZCA9ICIiOw0KDQogICAgICAvLyBQYWQgaW5wdXQgdG8gYW4gZXZlbiBibG9jayBzaXplIGJvdW5kYXJ5Lg0KICAgICAgJGxlbmd0aCA9ICRibG9ja1NpemUgLSAoc3RybGVuKCRpbnB1dCkgJSAkYmxvY2tTaXplKTsNCiAgICAgIGZvciAoJGkgPSAxOyAkaSA8PSAkbGVuZ3RoOyAkaSsrKQ0KICAgICAgew0KICAgICAgICAgJHBhZGQgLj0gY2hyKCRsZW5ndGgpOw0KICAgICAgfQ0KDQogICAgICByZXR1cm4gJGlucHV0IC4gJHBhZGQ7DQogICB9DQoNCg0KICAgLyoqDQogICAqIFJlbW92ZSBQS0NTNSBQYWRkaW5nIGZyb20gYSBzdHJpbmcuDQogICAqDQogICAqIEBwYXJhbSBzdHJpbmcgJGlucHV0IFRoZSBkZWNyeXB0ZWQgc3RyaW5nLg0KICAgKg0KICAgKiBAcmV0dXJuIHN0cmluZyBTdHJpbmcgd2l0aG91dCB0aGUgcGFkZGluZy4NCiAgICogQHRocm93cyBTYWdlcGF5QXBpRXhjZXB0aW9uDQogICAqLw0KICAgcHJvdGVjdGVkIGZ1bmN0aW9uIHJlbW92ZVBLQ1M1UGFkZGluZygkaW5wdXQpIHsNCiAgICAgICRibG9ja1NpemUgPSAxNjsNCiAgICAgICRwYWRDaGFyID0gb3JkKCRpbnB1dFtzdHJsZW4oJGlucHV0KSAtIDFdKTsNCg0KICAgICAgLyogQ2hlY2sgZm9yIFBhZENoYXIgaXMgbGVzcyB0aGVuIEJsb2NrIHNpemUgKi8NCiAgICAgIGlmICgkcGFkQ2hhciA+ICRibG9ja1NpemUpIHsNCiAgICAgICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ2Vycm9yX2VuY3J5cHRpb25fc3RyaW5nJykpOw0KICAgICAgfQ0KICAgICAgLyogQ2hlY2sgYnkgcGFkZGluZyBieSBjaGFyYWN0ZXIgbWFzayAqLw0KICAgICAgaWYgKHN0cnNwbigkaW5wdXQsIGNocigkcGFkQ2hhciksIHN0cmxlbigkaW5wdXQpIC0gJHBhZENoYXIpICE9ICRwYWRDaGFyKSB7DQogICAgICAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdlcnJvcl9lbmNyeXB0aW9uX3N0cmluZycpKTsNCiAgICAgIH0NCg0KICAgICAgJHVucGFkZGVkID0gc3Vic3RyKCRpbnB1dCwgMCwgKC0xKSAqICRwYWRDaGFyKTsNCiAgICAgIC8qIENoZWNoIHJlc3VsdCBmb3IgcHJpbnRhYmxlIGNoYXJhY3RlcnMgKi8NCiAgICAgIGlmIChwcmVnX21hdGNoKCcvW1s6XnByaW50Ol1dLycsICR1bnBhZGRlZCkpIHsNCiAgICAgICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoJHRoaXMtPkxhbmcoJ2Vycm9yX2VuY3J5cHRpb25fc3RyaW5nJykpOw0KICAgICAgfQ0KICAgICAgcmV0dXJuICR1bnBhZGRlZDsNCiAgIH0NCg0KDQogICAvKioNCiAgICogRW5jcnlwdCBhIHN0cmluZyByZWFkeSB0byBzZW5kIHRvIFNhZ2VQYXkgdXNpbmcgZW5jcnlwdGlvbiBrZXkuDQogICAqDQogICAqIEBwYXJhbSAgc3RyaW5nICAkc3RyaW5nICBUaGUgdW5lbmNyeXB5dGVkIHN0cmluZy4NCiAgICogQHBhcmFtICBzdHJpbmcgICRrZXkgICAgIFRoZSBlbmNyeXB0aW9uIGtleS4NCiAgICoNCiAgICogQHJldHVybiBzdHJpbmcgVGhlIGVuY3J5cHRlZCBzdHJpbmcuDQogICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIGVuY3J5cHRBZXMoJHN0cmluZywgJGtleSkgew0KICAgICAgLy8gQUVTIGVuY3J5cHRpb24sIENCQyBibG9ja2luZyB3aXRoIFBLQ1M1IHBhZGRpbmcgdGhlbiBIRVggZW5jb2RpbmcuDQogICAgICAvLyBBZGQgUEtDUzUgcGFkZGluZyB0byB0aGUgdGV4dCB0byBiZSBlbmN5cHRlZC4NCiAgICAgICRzdHJpbmcgPSBzZWxmOjphZGRQS0NTNVBhZGRpbmcoJHN0cmluZyk7DQoNCiAgICAgIC8vIFBlcmZvcm0gZW5jcnlwdGlvbiB3aXRoIFBIUCdzIE1DUllQVCBtb2R1bGUuDQogICAgICAkY3J5cHQgPSBtY3J5cHRfZW5jcnlwdChNQ1JZUFRfUklKTkRBRUxfMTI4LCAka2V5LCAkc3RyaW5nLCBNQ1JZUFRfTU9ERV9DQkMsICRrZXkpOw0KDQogICAgICAvLyBQZXJmb3JtIGhleCBlbmNvZGluZyBhbmQgcmV0dXJuLg0KICAgICAgcmV0dXJuICJAIiAuIHN0cnRvdXBwZXIoYmluMmhleCgkY3J5cHQpKTsNCiAgIH0NCg0KDQogICAvKioNCiAgICogRGVjb2RlIGEgcmV0dXJuZWQgc3RyaW5nIGZyb20gU2FnZVBheS4NCiAgICoNCiAgICogQHBhcmFtIHN0cmluZyAkc3RySW4gICAgICAgICBUaGUgZW5jcnlwdGVkIFN0cmluZy4NCiAgICogQHBhcmFtIHN0cmluZyAkcGFzc3dvcmQgICAgICBUaGUgZW5jeXB0aW9uIHBhc3N3b3JkIHVzZWQgdG8gZW5jcnlwdCB0aGUgc3RyaW5nLg0KICAgKg0KICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgdW5lY3J5cHRlZCBzdHJpbmcuDQogICAqIEB0aHJvd3MgU2FnZXBheUFwaUV4Y2VwdGlvbg0KICAgKi8NCiAgIHB1YmxpYyBmdW5jdGlvbiBkZWNyeXB0QWVzKCRzdHJJbiwgJHBhc3N3b3JkKSB7DQogICAgICAvLyBIRVggZGVjb2RpbmcgdGhlbiBBRVMgZGVjcnlwdGlvbiwgQ0JDIGJsb2NraW5nIHdpdGggUEtDUzUgcGFkZGluZy4NCiAgICAgIC8vIFVzZSBpbml0aWFsaXphdGlvbiB2ZWN0b3IgKElWKSBzZXQgZnJvbSAkc3RyX2VuY3J5cHRpb25fcGFzc3dvcmQuDQogICAgICAkc3RySW5pdFZlY3RvciA9ICRwYXNzd29yZDsNCg0KICAgICAgLy8gUmVtb3ZlIHRoZSBmaXJzdCBjaGFyIHdoaWNoIGlzIEAgdG8gZmxhZyB0aGlzIGlzIEFFUyBlbmNyeXB0ZWQgYW5kIEhFWCBkZWNvZGluZy4NCiAgICAgICRoZXggPSBzdWJzdHIoJHN0ckluLCAxKTsNCg0KICAgICAgLy8gVGhyb3cgZXhjZXB0aW9uIGlmIHN0cmluZyBpcyBtYWxmb3JtZWQNCiAgICAgIGlmICghcHJlZ19tYXRjaCgnL15bMC05YS1mQS1GXSskLycsICRoZXgpKSB7DQogICAgICAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCR0aGlzLT5MYW5nKCdlcnJvcl9lbmNyeXB0aW9uX3N0cmluZycpKTsNCiAgICAgIH0NCiAgICAgICRzdHJJbiA9IHBhY2soJ0gqJywgJGhleCk7DQoNCiAgICAgIC8vIFBlcmZvcm0gZGVjcnlwdGlvbiB3aXRoIFBIUCdzIE1DUllQVCBtb2R1bGUuDQogICAgICAkc3RyaW5nID0gbWNyeXB0X2RlY3J5cHQoTUNSWVBUX1JJSk5EQUVMXzEyOCwgJHBhc3N3b3JkLCAkc3RySW4sIE1DUllQVF9NT0RFX0NCQywNCiAgICAgICAgICRzdHJJbml0VmVjdG9yKTsNCiAgICAgIHJldHVybiBzZWxmOjpyZW1vdmVQS0NTNVBhZGRpbmcoJHN0cmluZyk7DQogICB9DQoNCg0KICAgLyoqDQogICAqIENvbnZlcnQgYSBkYXRhIGFycmF5IHRvIGEgcXVlcnkgc3RyaW5nIHJlYWR5IHRvIHBvc3QuDQogICAqDQogICAqIEBwYXJhbSAgYXJyYXkgICAkZGF0YSAgICAgICAgVGhlIGRhdGEgYXJyYXkuDQogICAqIEBwYXJhbSAgc3RyaW5nICAkZGVsaW1ldGVyICAgRGVsaW1pdGVyIHVzZWQgaW4gcXVlcnkgc3RyaW5nDQogICAqIEBwYXJhbSAgYm9vbGVhbiAkdXJsZW5jb2RlZCAgSWYgdHJ1ZSBlbmNvZGUgdGhlIGZpbmFsIHF1ZXJ5IHN0cmluZw0KICAgKg0KICAgKiBAcmV0dXJuIHN0cmluZyBUaGUgYXJyYXkgYXMgYSBzdHJpbmcuDQogICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIGFycmF5VG9RdWVyeVN0cmluZyhhcnJheSAkZGF0YSwgJGRlbGltaXRlciA9ICcmJywgJHVybGVuY29kZWQgPSBmYWxzZSkgew0KICAgICAgJHF1ZXJ5U3RyaW5nID0gJyc7DQogICAgICAkZGVsaW1pdGVyTGVuZ3RoID0gc3RybGVuKCRkZWxpbWl0ZXIpOw0KDQogICAgICAvLyBQYXJzZSBlYWNoIHZhbHVlIHBhaXJzIGFuZCBjb25jYXRlIHRvIHF1ZXJ5IHN0cmluZw0KICAgICAgZm9yZWFjaCAoJGRhdGEgYXMgJG5hbWUgPT4gJHZhbHVlKSB7DQogICAgICAgICAvLyBBcHBseSB1cmxlbmNvZGUgaWYgaXQgaXMgcmVxdWlyZWQNCiAgICAgICAgIGlmICgkdXJsZW5jb2RlZCkgew0KICAgICAgICAgICAgJHZhbHVlID0gdXJsZW5jb2RlKCR2YWx1ZSk7DQogICAgICAgICB9DQogICAgICAgICAkcXVlcnlTdHJpbmcgLj0gJG5hbWUgLiAnPScgLiAkdmFsdWUgLiAkZGVsaW1pdGVyOw0KICAgICAgfQ0KDQogICAgICAvLyByZW1vdmUgdGhlIGxhc3QgZGVsaW1pdGVyDQogICAgICByZXR1cm4gc3Vic3RyKCRxdWVyeVN0cmluZywgMCwgLTEgKiAkZGVsaW1pdGVyTGVuZ3RoKTsNCiAgIH0NCg0KDQogICAvKioNCiAgICogQ29udmVydCBzdHJpbmcgdG8gZGF0YSBhcnJheS4NCiAgICoNCiAgICogQHBhcmFtIHN0cmluZyAgJGRhdGEgICAgICAgUXVlcnkgc3RyaW5nDQogICAqIEBwYXJhbSBzdHJpbmcgICRkZWxpbWV0ZXIgIERlbGltaXRlciB1c2VkIGluIHF1ZXJ5IHN0cmluZw0KICAgKg0KICAgKiBAcmV0dXJuIGFycmF5DQogICAqLw0KICAgcHVibGljIGZ1bmN0aW9uIHF1ZXJ5U3RyaW5nVG9BcnJheSgkZGF0YSwgJGRlbGltZXRlciA9ICImIikgew0KICAgICAgLy8gRXhwbG9kZSBxdWVyeSBieSBkZWxpbWl0ZXINCiAgICAgICRwYWlycyA9IGV4cGxvZGUoJGRlbGltZXRlciwgJGRhdGEpOw0KICAgICAgJHF1ZXJ5QXJyYXkgPSBhcnJheSgpOw0KDQogICAgICAvLyBFeHBsb2RlIHBhaXJzIGJ5ICI9Ig0KICAgICAgZm9yZWFjaCAoJHBhaXJzIGFzICRwYWlyKQ0KICAgICAgew0KICAgICAgICAgJGtleVZhbHVlID0gZXhwbG9kZSgnPScsICRwYWlyKTsNCg0KICAgICAgICAgLy8gVXNlIGZpcnN0IHZhbHVlIGFzIGtleQ0KICAgICAgICAgJGtleSA9IGFycmF5X3NoaWZ0KCRrZXlWYWx1ZSk7DQoNCiAgICAgICAgIC8vIEltcGxvZGUgb3RoZXJzIGFzIHZhbHVlIGZvciAka2V5DQogICAgICAgICAkcXVlcnlBcnJheVska2V5XSA9IGltcGxvZGUoJz0nLCAka2V5VmFsdWUpOw0KICAgICAgfQ0KICAgICAgcmV0dXJuICRxdWVyeUFycmF5Ow0KICAgfQ0KDQoNCg0KfSAvLyBlbmQgb2YgY2xhc3MNCg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogU2FnZXBheTIKIyBBdXRob3I6IENocmlzIFRheWxvcgojIENvcHlyaWdodDogKEMpIDIwMTkgQ2hyaXMgVGF5bG9yLCBjaHJpc0BiaW5ub3ZhdGl2ZS5jby51awojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NhZ2VwYXkyCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzCiMgICAgICAgICAgc2VlIC9TYWdlcGF5Mi9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgokZm4gPSBkaXJuYW1lKF9fRklMRV9fKS4nL3RlbXBsYXRlcy9vcmlnX2Zvcm1fdGVtcGxhdGUudHBsJzsKJGRhdGEgPSBAZmlsZV9nZXRfY29udGVudHMoJGZuKTsKJHRoaXMtPlNldFRlbXBsYXRlKCdmb3JtX3RlbXBsYXRlJywkZGF0YSk7CgojIEVPRgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJTYWdlcGF5MiIKdmVyc2lvbiA9IDEuMQphdXRob3IgPSAiQ2hyaXMgVGF5bG9yIgphdXRob3JlbWFpbCA9ICJjaHJpc0BiaW5ub3ZhdGl2ZS5jby51ayIKbWluY21zdmVyc2lvbiA9ICIyLjEuNSIKbGF6eWxvYWRhZG1pbiA9IDEKbGF6eWxvYWRmcm9udGVuZCA9IDAKW2RlcGVuZHNdCkNHRXh0ZW5zaW9ucyA9ICIxLjU2LjIiCkNHUGF5bWVudEdhdGV3YXlCYXNlID0gIjEuNi4yIgo=]]></data>
	</file>
	<file>
	  <filename>/Sagepay2.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIE1vZHVsZTogU2FnZXBheTIKIyBBdXRob3I6IENocmlzIFRheWxvcgojIENvcHlyaWdodDogKEMpIDIwMTkgQ2hyaXMgVGF5bG9yLCBjaHJpc0BiaW5ub3ZhdGl2ZS5jby51awojIE1vZHVsZSdzIGhvbWVwYWdlIGlzOiBodHRwOi8vZGV2LmNtc21hZGVzaW1wbGUub3JnL3Byb2plY3RzL3NhZ2VwYXkyCiMgTGljZW5jZTogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAzCiMgICAgICAgICAgc2VlIC9TYWdlcGF5Mi9sYW5nL0xJQ0VOQ0UudHh0IG9yIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPgojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgQ01TIC0gQ01TIE1hZGUgU2ltcGxlIGlzIChjKSAyMDE5IGJ5IENNUyBNYWRlIFNpbXBsZSBGb3VuZGF0aW9uIChjb3B5cmlnaHRAY21zbWFkZXNpbXBsZS5vcmcpCiMgUHJvamVjdCdzIGhvbWVwYWdlIGlzOiBodHRwOi8vd3d3LmNtc21hZGVzaW1wbGUub3JnCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCiMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMKIyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIwojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7CiMgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KIyBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMKIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4KIyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCmZpbmFsIGNsYXNzIFNhZ2VwYXkyIGV4dGVuZHMgQ0dQYXltZW50R2F0ZXdheUJhc2UgewoKICAgcHJpdmF0ZSAkX2hlbHBlcjsKICAgY29uc3QgVEVTVF9VUkwgPSAnaHR0cHM6Ly90ZXN0LnNhZ2VwYXkuY29tL2dhdGV3YXkvc2VydmljZS92c3Bmb3JtLXJlZ2lzdGVyLnZzcCc7CiAgIGNvbnN0IFBST0RfVVJMID0gJ2h0dHBzOi8vbGl2ZS5zYWdlcGF5LmNvbS9nYXRld2F5L3NlcnZpY2UvdnNwZm9ybS1yZWdpc3Rlci52c3AnOwogICBjb25zdCBWUFNQcm90b2NvbCA9ICczLjAwJzsKCiAgIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkgewogICAgICBwYXJlbnQ6Ol9fY29uc3RydWN0KCk7CiAgICAgICR0aGlzLT5fZGF0YSA9IGFycmF5KCk7CiAgIH0KCiAgIGZ1bmN0aW9uIEdldE5hbWUoKSB7IHJldHVybiBnZXRfY2xhc3MoJHRoaXMpOyB9CiAgIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsgfQogICBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgeyByZXR1cm4gJzEuMSc7IH0KICAgZnVuY3Rpb24gR2V0SGVscCgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdoZWxwJyk7IH0KICAgZnVuY3Rpb24gR2V0QXV0aG9yKCkgeyByZXR1cm4gJ0NocmlzIFRheWxvcic7IH0KICAgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKSB7IHJldHVybiAnY2hyaXNAYmlubm92YXRpdmUuY28udWsnOyB9CiAgIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdjaGFuZ2Vsb2cnKTsgfQogICBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpIHsgcmV0dXJuIFRSVUU7IH0KICAgZnVuY3Rpb24gSGFzQWRtaW4oKSB7IHJldHVybiBUUlVFOyB9CiAgIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpIHsgcmV0dXJuICdlY29tbWVyY2UnOyB9CiAgIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKSB7IHJldHVybiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKTsgfQogICBmdW5jdGlvbiBJbnN0YWxsUG9zdE1lc3NhZ2UoKSB7IHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsgfQogICBmdW5jdGlvbiBVbmluc3RhbGxQb3N0TWVzc2FnZSgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdwb3N0dW5pbnN0YWxsJyk7IH0KICAgZnVuY3Rpb24gVW5pbnN0YWxsUHJlTWVzc2FnZSgpIHsgcmV0dXJuICR0aGlzLT5MYW5nKCdyZWFsbHlfdW5pbnN0YWxsJyk7IH0KICAgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKSB7IHJldHVybiAnMi4xLjUnOyB9CiAgIGZ1bmN0aW9uIFZpc2libGVUb0FkbWluVXNlcigpIHsgcmV0dXJuICR0aGlzLT5DaGVja1Blcm1pc3Npb24oJ01vZGlmeSBUZW1wbGF0ZXMnKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdNb2RpZnkgU2l0ZSBQcmVmZXJlbmNlcycpOyB9CiAgIGZ1bmN0aW9uIEdldERlcGVuZGVuY2llcygpIHsgcmV0dXJuIGFycmF5KCdDR0V4dGVuc2lvbnMnPT4nMS41Ni4yJywnQ0dQYXltZW50R2F0ZXdheUJhc2UnPT4nMS42LjInKTsgfQogICBmdW5jdGlvbiBMYXp5TG9hZEFkbWluKCkgeyByZXR1cm4gVFJVRTsgfQogICBmdW5jdGlvbiBMYXp5TG9hZEZyb250ZW5kKCkgeyByZXR1cm4gRkFMU0U7IH0gLyogd2UgcmVnaXN0ZXIgYSBkeW5hbWljIHJvdXRlLCBjYW5ub3QgbGF6eSBsb2FkICovCgoKICAgZnVuY3Rpb24gU2V0UGFyYW1ldGVycygpIHsKICAgICAgJHRoaXMtPlJlZ2lzdGVyTW9kdWxlUGx1Z2luKCk7CiAgICAgICR0aGlzLT5SZXN0cmljdFVua25vd25QYXJhbXMoKTsKCiAgICAgICR0aGlzLT5SZWdpc3RlclJvdXRlKCcvc2FnZXBheVwvcmV0dXJuXC8oP1A8cmV0dXJuaWQ+WzAtOV0rKSQvJywgYXJyYXkoJ2FjdGlvbic9PidyZXR1cm4nKSk7CgogICAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgncHJvY2VzcycsIENMRUFOX1NUUklORyk7CiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdvcmRlcl9pZCcsIENMRUFOX0lOVCk7CiAgICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdteWN1c3RvbScsIENMRUFOX1NUUklORyk7CiAgIH0KCgogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAgLy8gQmVnaW4gbWV0aG9kcyByZXF1aXJlZCBmb3IgcGF5bWVudCBnYXRld2F5cwogIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCgogICBwcm90ZWN0ZWQgZnVuY3Rpb24gZ2V0X25ld19nYXRld2F5KCkgewogICAgICBpZiggISR0aGlzLT5faGVscGVyICkgJHRoaXMtPl9oZWxwZXIgPSBuZXcgXFNhZ2VwYXkyXGdhdGV3YXkoJHRoaXMpOwogICAgICByZXR1cm4gJHRoaXMtPl9oZWxwZXI7CiAgIH0KCgp9IC8vIGNsYXNzCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/orig_form_template.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyogZm9ybSB0ZW1wbGF0ZSAqfQo8Zm9ybSBtZXRob2Q9InBvc3QiIGFjdGlvbj0ieyRwb3N0dXJsfSI+CiAgIHskZm9ybXZhbHVlc30KICAgPGlucHV0IHR5cGU9ImltYWdlIiBzcmM9InskaW1hZ2VfdXJsfSIgbmFtZT0ic3VibWl0Ii8+CjwvZm9ybT4=]]></data>
	</file>
	<file>
	  <filename>/templates/prefs.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgokKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpewogICQoJy5wc19yYWRpbycpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAkKCcucHNfdGV4dCcpLnZhbCgnJyk7CiAgfSk7CiAgJCgnLnBzX3RleHQnKS5jaGFuZ2UoZnVuY3Rpb24oKXsKICAgICQoJy5wc19yYWRpbycpLnJlbW92ZUF0dHIoJ2NoZWNrZWQnKTsKICB9KTsKfSk7Cjwvc2NyaXB0PgoKeyRmb3Jtc3RhcnR9CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygncHJvZG1vZGUnKX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICB7Y2dlX3llc25vX29wdGlvbnMgcHJlZml4PSRhY3Rpb25pZCBuYW1lPXByb2Rtb2RlIHNlbGVjdGVkPSRwcm9kbW9kZX0KICA8L3A+CjwvZGl2Pgo8YnIvPgoKPGZpZWxkc2V0Pgo8bGVnZW5kPnskbW9kLT5MYW5nKCdwcm9kdWN0aW9uX3NldHRpbmdzJyl9PC9sZWdlbmQ+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnc2FnZXBheV92ZW5kb3JfbmFtZScpfTwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij4KICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJ7JGFjdGlvbmlkfXByb2RfYWNjdCIgc2l6ZT0iNTAiIG1heGxlbmd0aD0iMjU1IiB2YWx1ZT0ieyRwcm9kX2FjY3R9Ii8+CiAgPC9wPgo8L2Rpdj4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdzYWdlcGF5X3Bhc3N3b3JkJyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9cHJvZF90b2tlbiIgc2l6ZT0iNTAiIG1heGxlbmd0aD0iMjU1IiB2YWx1ZT0ieyRwcm9kX3Rva2VufSIvPgogIDwvcD4KPC9kaXY+CjwvZmllbGRzZXQ+Cgo8ZmllbGRzZXQ+CjxsZWdlbmQ+eyRtb2QtPkxhbmcoJ3Rlc3Rfc2V0dGluZ3MnKX08L2xlZ2VuZD4KPHAgY2xhc3M9InBhZ2VvdmVyZmxvdyI+eyRtb2QtPkxhbmcoJ2luZm9fdGVzdF9zZXR0aW5ncycpfTwvcD4KPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCdzYWdlcGF5X3ZlbmRvcl9uYW1lJyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9dGVzdF9hY2N0IiBzaXplPSI1MCIgbWF4bGVuZ3RoPSIyNTUiIHZhbHVlPSJ7JHRlc3RfYWNjdH0iLz4KICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogIDxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3NhZ2VwYXlfcGFzc3dvcmQnKX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0ieyRhY3Rpb25pZH10ZXN0X3Rva2VuIiBzaXplPSI1MCIgbWF4bGVuZ3RoPSIyNTUiIHZhbHVlPSJ7JHRlc3RfdG9rZW59Ii8+CiAgPC9wPgo8L2Rpdj4KPC9maWVsZHNldD4KPGJyLz4KCjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygnc2VuZF9lbWFpbHMnKX08L3A+CiAgPHAgY2xhc3M9InBhZ2VpbnB1dCI+CiAgICB7aHRtbF9vcHRpb25zIG5hbWU9InskYWN0aW9uaWR9c2VuZF9lbWFpbF9zZWxlY3RlZCIgb3B0aW9ucz0kc2VuZF9lbWFpbF9vcHRpb25zIHNlbGVjdGVkPSRzZW5kX2VtYWlsX3NlbGVjdGVkfQogIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygndmVuZG9yX2VtYWlsJyl9PC9wPgogIDxwIGNsYXNzPSJwYWdlaW5wdXQiPgogICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9InskYWN0aW9uaWR9dmVuZG9yX2VtYWlsIiBzaXplPSI1MCIgbWF4bGVuZ3RoPSIxMDAiIHZhbHVlPSJ7JHZlbmRvcl9lbWFpbH0iLz4KICAgIDxici8+CiAgICB7JG1vZC0+TGFuZygndmVuZG9yX2VtYWlsX2luZm8nKX0KICA8L3A+CjwvZGl2PgoKPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICA8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4KICA8cCBjbGFzcz0icGFnZWlucHV0Ij57JHN1Ym1pdH08L3A+CjwvZGl2Pgp7JGZvcm1lbmR9Cg==]]></data>
	</file>
</module>
