<?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>OpenEstatePhpWrapper</name>
	<version>0.4.2</version>
  <mincmsversion>1.0</mincmsversion>
	<help><![CDATA[PGgzPldhcyBtYWNodCBkaWVzZXMgTW9kdWw/PC9oMz4KPHA+RGllc2VzIE1vZHVsIGludGVncmllcnQgUEhQLUltbW9iaWxpZW5leHBvcnRlIGF1cyBkZW0gT3BlbkVzdGF0ZS1JbW1vVG9vbCBpbiBDTVNtcy48L3A+CjxoMz5XaWUga29uZmlndXJpZXJlIGljaCBkaWVzZXMgTW9kdWw/PC9oMz4KPHA+KGEpIEbDvGhyZW4gU2llIGVpbmVuIFBIUC1FeHBvcnQgYXVzIGRlbSA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5lc3RhdGUub3JnL2ltbW90b29sLyIgdGFyZ2V0PSJibGFuayI+T3BlbkVzdGF0ZS1JbW1vVG9vbDwvYT4gYXVmIElocmVuIFdlYnNwYWNlIGR1cmNoLCB3byBhdWNoIENNU21zIGluc3RhbGxpZXJ0IHd1cmRlLjwvcD4KPHA+KGIpIE1lbGRlbiBTaWUgc2ljaCBpbiBkZXIgQ01TbXMtQWRtaW5pc3RyYXRpb24gYW4gdW5kIGtsaWNrZW4gU2llIGF1ZiAnRXJ3ZWl0ZXJ1bmdlbicgJnJhcXVvOyAnT3BlbkVzdGF0ZSBQSFAtV3JhcHBlcicgJnJhcXVvOyAnTW9kdWwgRWluc3RlbGx1bmdlbicuIFRyYWdlbiBTaWUgUGZhZCB1bmQgVVJMIGVpbiwgZGllIGF1ZiBkaWUgZXhwb3J0aWVydGVuIFBIUC1Ta3JpcHRlIHZlcndlaXNlbi48L3A+CjxwPihjKSBJbSBSZWl0ZXIgJ0ludGVncmF0aW9uJyB3aXJkIGdlcHLDvGZ0IHVuZCBkYXJnZXN0ZWxsdCwgb2IgZGVyIGhpbnRlcmxlZ3RlIFNrcmlwdC1QZmFkIGtvcnJla3QgaXN0LjwvcD4KCjxoMz5XaWUgdmVyd2VuZGUgaWNoIGRhcyBNb2R1bD88L2gzPgo8cD4oYSkgQWxsZ2VtZWluIGthbm4gZGFzIE1vZHVsIGR1cmNoIGRhcyBTbWFydHktVGFnICYjMTIzO09wZW5Fc3RhdGVQaHBXcmFwcGVyfSBpbiBlaW5lIGJlbGllYmlnZSBTZWl0ZSAob2RlciBUZW1wbGF0ZSkgZWluZ2Vmw7xndCB3ZXJkZW4uPC9wPgo8cD4oYikgRGllIEVpbmJpbmR1bmcga2FubiBkdXJjaCB3ZWl0ZXJlIFBhcmFtZXRlciBrb25maWd1cmllcnQgd2VyZGVuLiBNZWxkZW4gU2llIHNpY2ggaW4gZGVyIENNU21zLUFkbWluaXN0cmF0aW9uIGFuIHVuZCBrbGlja2VuIFNpZSBhdWYgJ0Vyd2VpdGVydW5nZW4nICZyYXF1bzsgJ09wZW5Fc3RhdGUgUEhQLVdyYXBwZXInICZyYXF1bzsgJ0ludGVncmF0aW9uJy4gRG9ydCBmaW5kZW4gU2llIGVpbiBGb3JtdWxhciwgbWl0IGRlc3NlbiBIaWxmZSBlaW4gU21hcnR5LVRhZyBpbmtsLiBQYXJhbWV0ZXIgZXJ6ZXVndCB3ZXJkZW4ga2Fubi48L3A+Cgo8aDM+Q29weXJpZ2h0IHVuZCBMaXplbno8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMTAsIEFuZHJlYXMgUnVkb2xwaCAmYW1wOyBXYWx0ZXIgV2FnbmVyIDxhIGhyZWY9Im1haWx0bzppbmZvQG9wZW5pbmRleC5kZSI+Jmx0O2luZm9Ab3BlbmluZGV4LmRlJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+RGllc2VzIE1vZHVsIHd1cmRlIHZlcsO2ZmZlbnRsaWNodCB1bnRlciBkZW4gQmVkaW5ndW5nZW4gZGVyIDxhIGhyZWY9Imh0dHA6Ly90ZXN0Lm9wZW5lc3RhdGUub3JnL2Ntc21zL21vZHVsZXMvT3BlbkVzdGF0ZVBocFdyYXBwZXIvZ3BsLTMuMC1zdGFuZGFsb25lLmh0bWwiPkdOVSBQdWJsaWMgTGljZW5zZSB2MzwvYT4uIE1pdCBWZXJ3ZW5kdW5nIGRlcyBNb2R1bHMgYWt6ZXB0aWVyZW4gU2llIGRpZSBMaXplbnpiZWRpbmd1bmdlbi48L3A+CjxoMz5QYXJhbWV0ZXI8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBEaWVzZXIgUGFyYW1ldGVyIGxlZ3QgZGllIFNwcmFjaGUgZmVzdCwgZGllIHZvbSBNb2R1bCBmJnV1bWw7ciBkaWUgQXVzZ2FiZSBhdWYgZGVyIFdlYnNlaXRlIHZlcndlbmRldCB3aXJkLiBEaWVzIHdpcmQgamVkb2NoIG5pY2h0IHZvbiBhbGxlbiBNb2R1bGVuIHVudGVyc3QmdXVtbDt0enQgYnp3LiBiZW4mb3VtbDt0aWd0LjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0b3I6IEFuZHJlYXMgUnVkb2xwaCwgV2FsdGVyIFdhZ25lciAmbHQ7aW5mb0BvcGVuaW5kZXguZGUmZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbiA6IDAuNC4yPGJyIC8+PGJyIC8+JkF1bWw7bmRlcnVuZ3N2ZXJsYXVmOjxiciAvPjx1bD4KPGxpPlZlcnNpb24gMC4zLiBEZXRhaWwtS29ycmVrdHVyZW4uPC9saT4KPGxpPlZlcnNpb24gMC4yLiBFcnN0ZXMgw7ZmZmVudGxpY2hlcyBSZWxlYXNlLjwvbGk+CjxsaT5WZXJzaW9uIDAuMS4gSW50ZXJuZXMgUmVsZWFzZS48L2xpPgo8L3VsPjxiciAvPg==]]></about>
	<description><![CDATA[Dieses Modul integriert PHP-Immobilienexporte aus dem OpenEstate-ImmoTool in CMSms.]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.default.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFBIUC1XcmFwcGVyIGbDvHIgQ01TbXMuCiAqIERhcnN0ZWxsdW5nIGRlciBXcmFwcGVyLUF1c2dhYmUgYXVmIGRlciBXZWJzZWl0ZS4KICogJElkOiBhY3Rpb24uZGVmYXVsdC5waHAgMTExMSAyMDExLTEwLTIxIDE5OjA5OjU4WiBhbmR5ICQKICoKICogQGF1dGhvciBBbmRyZWFzIFJ1ZG9scGggJiBXYWx0ZXIgV2FnbmVyCiAqIEBjb3B5cmlnaHQgMjAwOS0yMDExLCBPcGVuRXN0YXRlLm9yZwogKiBAbGljZW5zZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQKICovCgppZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKLy9lY2hvICc8cHJlPic7IHByaW50X3IoJF9TRVJWRVIpOyBlY2hvICc8L3ByZT4nOwovL2VjaG8gJzxwcmU+JzsgcHJpbnRfcigkY29uZmlnKTsgZWNobyAnPC9wcmU+JzsKCiRjbXNRdWVyeVZhciA9ICRjb25maWdbJ3F1ZXJ5X3ZhciddOwokY21zVXJsUmV3cml0aW5nID0gJGNvbmZpZ1sndXJsX3Jld3JpdGluZyddOwokaW1tb3Rvb2xCYXNlUGF0aCA9IHRyaW0oICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd3cmFwX3BhdGgnLCcnKSApOwppZiAoJGltbW90b29sQmFzZVBhdGhbc3RybGVuKCRpbW1vdG9vbEJhc2VQYXRoKS0xXSE9Jy8nKSAkaW1tb3Rvb2xCYXNlUGF0aCAuPSAnLyc7CiRpbW1vdG9vbEJhc2VVcmwgPSB0cmltKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnd3JhcF91cmwnLCcnKSApOwppZiAoJGltbW90b29sQmFzZVVybFtzdHJsZW4oJGltbW90b29sQmFzZVVybCktMV0hPScvJykgJGltbW90b29sQmFzZVVybCAuPSAnLyc7CgovLyBzZXR1cCBlbnZpcm9ubWVudAppZiAoaXNfZmlsZSgkaW1tb3Rvb2xCYXNlUGF0aCAuICdpbW1vdG9vbC5waHAubG9jaycpKSB7CiAgZWNobyAkdGhpcy0+TGFuZygnZXJyb3JfdXBkYXRlX2lzX3J1bm5pbmcnKTsKICByZXR1cm47Cn0KaWYgKCFkZWZpbmVkKCdJTU1PVE9PTF9CQVNFX1BBVEgnKSkKICBkZWZpbmUoICdJTU1PVE9PTF9CQVNFX1BBVEgnLCAkaW1tb3Rvb2xCYXNlUGF0aCApOyAgLy8gU2VydmVyLVBmYWQgenUgZGVuIEltbW9Ub29sLVNrcmlwdGVuCmlmICghZGVmaW5lZCgnSU1NT1RPT0xfQkFTRV9VUkwnKSkKICBkZWZpbmUoICdJTU1PVE9PTF9CQVNFX1VSTCcsICRpbW1vdG9vbEJhc2VVcmwgKTsgICAvLyBVUkwgenUgZGVuIEltbW9Ub29sLVNrcmlwdGVuCmlmICghZGVmaW5lZCgnSU1NT1RPT0xfUEFSQU1fTEFORycpKQogIGRlZmluZSgnSU1NT1RPT0xfUEFSQU1fTEFORycsICd3cmFwcGVkX2xhbmcnKTsKaWYgKCFkZWZpbmVkKCdJTU1PVE9PTF9QQVJBTV9GQVYnKSkKICBkZWZpbmUoJ0lNTU9UT09MX1BBUkFNX0ZBVicsICd3cmFwcGVkX2ZhdicpOwppZiAoIWRlZmluZWQoJ0lNTU9UT09MX1BBUkFNX0lOREVYX1BBR0UnKSkKICBkZWZpbmUoJ0lNTU9UT09MX1BBUkFNX0lOREVYX1BBR0UnLCAnd3JhcHBlZF9wYWdlJyk7CmlmICghZGVmaW5lZCgnSU1NT1RPT0xfUEFSQU1fSU5ERVhfUkVTRVQnKSkKICBkZWZpbmUoJ0lNTU9UT09MX1BBUkFNX0lOREVYX1JFU0VUJywgJ3dyYXBwZWRfcmVzZXQnKTsKaWYgKCFkZWZpbmVkKCdJTU1PVE9PTF9QQVJBTV9JTkRFWF9PUkRFUicpKQogIGRlZmluZSgnSU1NT1RPT0xfUEFSQU1fSU5ERVhfT1JERVInLCAnd3JhcHBlZF9vcmRlcicpOwppZiAoIWRlZmluZWQoJ0lNTU9UT09MX1BBUkFNX0lOREVYX0ZJTFRFUicpKQogIGRlZmluZSgnSU1NT1RPT0xfUEFSQU1fSU5ERVhfRklMVEVSJywgJ3dyYXBwZWRfZmlsdGVyJyk7CmlmICghZGVmaW5lZCgnSU1NT1RPT0xfUEFSQU1fSU5ERVhfRklMVEVSX0NMRUFSJykpCiAgZGVmaW5lKCdJTU1PVE9PTF9QQVJBTV9JTkRFWF9GSUxURVJfQ0xFQVInLCAnd3JhcHBlZF9jbGVhckZpbHRlcnMnKTsKaWYgKCFkZWZpbmVkKCdJTU1PVE9PTF9QQVJBTV9JTkRFWF9WSUVXJykpCiAgZGVmaW5lKCdJTU1PVE9PTF9QQVJBTV9JTkRFWF9WSUVXJywgJ3dyYXBwZWRfdmlldycpOwppZiAoIWRlZmluZWQoJ0lNTU9UT09MX1BBUkFNX0lOREVYX01PREUnKSkKICBkZWZpbmUoJ0lNTU9UT09MX1BBUkFNX0lOREVYX01PREUnLCAnd3JhcHBlZF9tb2RlJyk7CmlmICghZGVmaW5lZCgnSU1NT1RPT0xfUEFSQU1fRVhQT1NFX0lEJykpCiAgZGVmaW5lKCdJTU1PVE9PTF9QQVJBTV9FWFBPU0VfSUQnLCAnd3JhcHBlZF9pZCcpOwppZiAoIWRlZmluZWQoJ0lNTU9UT09MX1BBUkFNX0VYUE9TRV9WSUVXJykpCiAgZGVmaW5lKCdJTU1PVE9PTF9QQVJBTV9FWFBPU0VfVklFVycsICd3cmFwcGVkX3ZpZXcnKTsKaWYgKCFkZWZpbmVkKCdJTU1PVE9PTF9QQVJBTV9FWFBPU0VfSU1HJykpCiAgZGVmaW5lKCdJTU1PVE9PTF9QQVJBTV9FWFBPU0VfSU1HJywgJ3dyYXBwZWRfaW1nJyk7CmlmICghZGVmaW5lZCgnSU1NT1RPT0xfUEFSQU1fRVhQT1NFX0NPTlRBQ1QnKSkKICBkZWZpbmUoJ0lNTU9UT09MX1BBUkFNX0VYUE9TRV9DT05UQUNUJywgJ3dyYXBwZWRfY29udGFjdCcpOwppZiAoIWRlZmluZWQoJ0lNTU9UT09MX1BBUkFNX0VYUE9TRV9DQVBUQ0hBJykpCiAgZGVmaW5lKCdJTU1PVE9PTF9QQVJBTV9FWFBPU0VfQ0FQVENIQScsICd3cmFwcGVkX2NhcHRjaGFjb2RlJyk7CgovLyBTY3JpcHQgZXJtaXR0ZWxuCiR3cmFwID0gKGlzc2V0KCRfUkVRVUVTVFsnd3JhcCddKSAmJiBpc19zdHJpbmcoJF9SRVFVRVNUWyd3cmFwJ10pKT8gJF9SRVFVRVNUWyd3cmFwJ106IG51bGw7CiR3cmFwID0gKCFpc19zdHJpbmcoJHdyYXApICYmIGlzc2V0KCRwYXJhbXNbJ3dyYXAnXSkpPyAkcGFyYW1zWyd3cmFwJ106ICR3cmFwOwppZiAoJHdyYXA9PSdleHBvc2UnKSB7CiAgJHdyYXAgPSAnZXhwb3NlJzsKICAkc2NyaXB0ID0gJ2V4cG9zZS5waHAnOwoKICAvLyBTdGFuZGFyZC1QYXJhbWV0ZXIgZ2dmLiBzZXR6ZW4KICAvL2VjaG8gJzxwcmU+JzsKICAvL3ByaW50X3IoJF9SRVFVRVNUKTsKICAvL2VjaG8gJzwvcHJlPic7CiAgJGRlZmF1bHRQYXJhbXMgPSBhcnJheSggJ3dyYXAnLCBJTU1PVE9PTF9QQVJBTV9MQU5HLCBJTU1PVE9PTF9QQVJBTV9FWFBPU0VfSUQsIElNTU9UT09MX1BBUkFNX0VYUE9TRV9WSUVXICk7CiAgJHVzZURlZmF1bHRQYXJhbXMgPSB0cnVlOwogIGZvcmVhY2ggKCRkZWZhdWx0UGFyYW1zIGFzICRwYXJhbSkgewogICAgaWYgKGlzc2V0KCRfUkVRVUVTVFsgJHBhcmFtIF0pKSB7CiAgICAgICR1c2VEZWZhdWx0UGFyYW1zID0gZmFsc2U7CiAgICAgIGJyZWFrOwogICAgfQogIH0KCiAgaWYgKCR1c2VEZWZhdWx0UGFyYW1zKSB7CiAgICBpZiAoaXNzZXQoJHBhcmFtc1snbGFuZyddKSkKICAgICAgJF9SRVFVRVNUWyBJTU1PVE9PTF9QQVJBTV9MQU5HIF0gPSAkcGFyYW1zWydsYW5nJ107CiAgICBpZiAoaXNzZXQoJHBhcmFtc1snaWQnXSkpCiAgICAgICRfUkVRVUVTVFsgSU1NT1RPT0xfUEFSQU1fRVhQT1NFX0lEIF0gPSAkcGFyYW1zWydpZCddOwogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3ZpZXcnXSkpCiAgICAgICRfUkVRVUVTVFsgSU1NT1RPT0xfUEFSQU1fRVhQT1NFX1ZJRVcgXSA9ICRwYXJhbXNbJ3ZpZXcnXTsKICB9Cn0KZWxzZSB7CiAgJHdyYXAgPSAnaW5kZXgnOwogICRzY3JpcHQgPSAnaW5kZXgucGhwJzsKCiAgLy8gU3RhbmRhcmQtUGFyYW1ldGVyIGdnZi4gc2V0emVuCiAgLy9lY2hvICc8cHJlPic7CiAgLy9wcmludF9yKCRfUkVRVUVTVCk7CiAgLy9lY2hvICc8L3ByZT4nOwogICRkZWZhdWx0UGFyYW1zID0gYXJyYXkoICd3cmFwJywgSU1NT1RPT0xfUEFSQU1fTEFORywgSU1NT1RPT0xfUEFSQU1fSU5ERVhfVklFVywgSU1NT1RPT0xfUEFSQU1fSU5ERVhfTU9ERSwgSU1NT1RPT0xfUEFSQU1fSU5ERVhfT1JERVIsIElNTU9UT09MX1BBUkFNX0lOREVYX0ZJTFRFUiApOwogICR1c2VEZWZhdWx0UGFyYW1zID0gdHJ1ZTsKICBmb3JlYWNoICgkZGVmYXVsdFBhcmFtcyBhcyAkcGFyYW0pIHsKICAgIGlmIChpc3NldCgkX1JFUVVFU1RbICRwYXJhbSBdKSkgewogICAgICAkdXNlRGVmYXVsdFBhcmFtcyA9IGZhbHNlOwogICAgICBicmVhazsKICAgIH0KICB9CiAgaWYgKCR1c2VEZWZhdWx0UGFyYW1zKSB7CiAgICAkX1JFUVVFU1RbIElNTU9UT09MX1BBUkFNX0lOREVYX0ZJTFRFUl9DTEVBUiBdID0gJzEnOwogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ2xhbmcnXSkpCiAgICAgICRfUkVRVUVTVFsgSU1NT1RPT0xfUEFSQU1fTEFORyBdID0gJHBhcmFtc1snbGFuZyddOwogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ3ZpZXcnXSkpCiAgICAgICRfUkVRVUVTVFsgSU1NT1RPT0xfUEFSQU1fSU5ERVhfVklFVyBdID0gJHBhcmFtc1sndmlldyddOwogICAgaWYgKGlzc2V0KCRwYXJhbXNbJ21vZGUnXSkpCiAgICAgICRfUkVRVUVTVFsgSU1NT1RPT0xfUEFSQU1fSU5ERVhfTU9ERSBdID0gJHBhcmFtc1snbW9kZSddOwoKICAgIC8vIFN0YW5kYXJkLVNvcnRpZXJ1bmcKICAgIGlmIChpc3NldCgkcGFyYW1zWydvcmRlcl9ieSddKSkgewogICAgICAkb3JkZXIgPSAkcGFyYW1zWydvcmRlcl9ieSddOwogICAgICBpZiAoaXNzZXQoJHBhcmFtc1snb3JkZXJfZGlyJ10pKSAkb3JkZXIgLj0gJy0nIC4gJHBhcmFtc1snb3JkZXJfZGlyJ107CiAgICAgIGVsc2UgJG9yZGVyIC49ICctYXNjJzsKICAgICAgJF9SRVFVRVNUWyBJTU1PVE9PTF9QQVJBTV9JTkRFWF9PUkRFUiBdID0gJG9yZGVyOwogICAgfQoKICAgIC8vIFN0YW5kYXJkLUZpbHRlcgogICAgJGZpbHRlcnMgPSBhcnJheSgpOwogICAgZm9yZWFjaCAoYXJyYXlfa2V5cygkcGFyYW1zKSBhcyAkcGFyYW0pIHsKICAgICAgLy9lY2hvICRwYXJhbSAuICcgPT4gJyAuCiAgICAgIGlmIChzdHJ0b2xvd2VyKHN1YnN0cigkcGFyYW0sIDAsIHN0cmxlbignZmlsdGVyXycpKSkhPSdmaWx0ZXJfJykgY29udGludWU7CiAgICAgICRmaWx0ZXJOYW1lID0gc3Vic3RyKCRwYXJhbSwgc3RybGVuKCdmaWx0ZXJfJykpOwogICAgICAkZmlsdGVyc1skZmlsdGVyTmFtZV0gPSAkcGFyYW1zWyRwYXJhbV07CiAgICB9CiAgICAvL2VjaG8gJzxwcmU+JzsKICAgIC8vcHJpbnRfciggJGZpbHRlcnMgKTsKICAgIC8vZWNobyAnPC9wcmU+JzsKICAgIGlmIChpc19hcnJheSgkZmlsdGVycykgJiYgY291bnQoJGZpbHRlcnMpPjApIHsKICAgICAgJF9SRVFVRVNUWyBJTU1PVE9PTF9QQVJBTV9JTkRFWF9GSUxURVIgXSA9ICRmaWx0ZXJzOwogICAgfQogIH0KfQoKLy8gU2NyaXB0IGF1c2bDvGhyZW4KLy9lY2hvICd3cmFwOiAnIC4gSU1NT1RPT0xfQkFTRV9QQVRIIC4gJHNjcmlwdDsKb2Jfc3RhcnQoKTsKaW5jbHVkZSggSU1NT1RPT0xfQkFTRV9QQVRIIC4gJHNjcmlwdCApOwokcGFnZSA9IG9iX2dldF9jb250ZW50cygpOwpvYl9lbmRfY2xlYW4oKTsKCi8vIFN0eWxlc2hlZXRzCiRzZXR1cCA9IG5ldyBpbW1vdG9vbF9zZXR1cCgpOwppZiAoaXNfY2FsbGFibGUoYXJyYXkoJ2ltbW90b29sX215Y29uZmlnJywgJ2xvYWRfY29uZmlnX2RlZmF1bHQnKSkpIGltbW90b29sX215Y29uZmlnOjpsb2FkX2NvbmZpZ19kZWZhdWx0KCAkc2V0dXAgKTsKJHN0eWxlc2hlZXRzID0gYXJyYXkoIElNTU9UT09MX0JBU0VfVVJMIC4gJ3N0eWxlLnBocCcgKTsKaWYgKGlzX3N0cmluZygkc2V0dXAtPkFkZGl0aW9uYWxTdHlsZXNoZWV0KSAmJiBzdHJsZW4oJHNldHVwLT5BZGRpdGlvbmFsU3R5bGVzaGVldCk+MCkgCiAgJHN0eWxlc2hlZXRzW10gPSAkc2V0dXAtPkFkZGl0aW9uYWxTdHlsZXNoZWV0OwoKLy8gQXVzZ2FiZSBlcnpldWdlbgokYmFzZVVybCA9IG51bGw7CiRoaWRkZW5QYXJhbXMgPSBhcnJheSgpOwppZiAoJGNtc1VybFJld3JpdGluZz09J2ludGVybmFsJykgewogICRiYXNlVXJsID0gJF9TRVJWRVJbJ1BIUF9TRUxGJ107Cn0KZWxzZSBpZiAoJGNtc1VybFJld3JpdGluZz09J21vZF9yZXdyaXRlJykgewogICRyZXF1ZXN0VXJsID0gZXhwbG9kZSgnPycsICRfU0VSVkVSWydSRVFVRVNUX1VSSSddKTsKICAkYmFzZVVybCA9ICRyZXF1ZXN0VXJsWzBdOwp9CmVsc2UgewogICRiYXNlVXJsID0gJF9TRVJWRVJbJ1NDUklQVF9OQU1FJ107CiAgaWYgKGlzc2V0KCRfUkVRVUVTVFskY21zUXVlcnlWYXJdKSkgewogICAgJGJhc2VVcmwgLj0gJz8nLiRjbXNRdWVyeVZhci4nPScuJF9SRVFVRVNUWyRjbXNRdWVyeVZhcl07CiAgfQp9CmVjaG8gaW1tb3Rvb2xfZnVuY3Rpb25zOjp3cmFwX3BhZ2UoICRwYWdlLCAkd3JhcCwgJGJhc2VVcmwsIElNTU9UT09MX0JBU0VfVVJMLCAkc3R5bGVzaGVldHMsICRoaWRkZW5QYXJhbXMgKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFBIUC1XcmFwcGVyIGbDvHIgQ01TbXMuCiAqIERhcnN0ZWxsdW5nIGRlcyBGb3JtdWxhcnMgaW0gQWRtaW5pc3RyYXRpb25zYmVyZWljaC4KICogJElkOiBhY3Rpb24uZGVmYXVsdGFkbWluLnBocCA4OTcgMjAxMS0wNi0xNSAyMzo1NDo1OFogYW5keSAkCiAqCiAqIEBhdXRob3IgQW5kcmVhcyBSdWRvbHBoICYgV2FsdGVyIFdhZ25lcgogKiBAY29weXJpZ2h0IDIwMDktMjAxMSwgT3BlbkVzdGF0ZS5vcmcKICogQGxpY2Vuc2UgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0CiAqLwoKLyoqCiAqIEZvciBzZXBhcmF0ZWQgbWV0aG9kcywgeW91J2xsIGFsd2F5cyB3YW50IHRvIHN0YXJ0IHdpdGggdGhlIGZvbGxvd2luZwogKiBsaW5lIHdoaWNoIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IG1ldGhvZCB3YXMgY2FsbGVkIGZyb20gdGhlIG1vZHVsZQogKiBBUEksIGFuZCB0aGF0IGV2ZXJ5dGhpbmcncyBzYWZlIHRvIGNvbnRpbnVlOgogKi8KaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgovLyBUYWIgSW5mcmFzdHJ1Y3R1cmUgZm9yIEFkbWluIEFyZWEgLS0gY3JlYXRlIHR3byB0YWJzLCBvbmUgb2Ygd2hpY2gKLy8gaXMgb25seSBhY2Nlc3NpYmxlIGlmIHBlcm1pc3Npb25zIGFyZSByaWdodAppZiAoRkFMU0UgPT0gZW1wdHkoJHBhcmFtc1snYWN0aXZlX3RhYiddKSkgewogICR0YWIgPSAkcGFyYW1zWydhY3RpdmVfdGFiJ107Cn0gZWxzZSB7CiAgJHRhYiA9ICcnOwp9CgokdGFiX2hlYWRlciA9ICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKCi8vIGdlbmVyYWwgdGFiIAokdGFiX2hlYWRlciAuPSAkdGhpcy0+U2V0VGFiSGVhZGVyKCdnZW5lcmFsJywkdGhpcy0+TGFuZygndGl0bGVfZ2VuZXJhbCcpLCgnZ2VuZXJhbCcgPT0gJHRhYik/dHJ1ZTpmYWxzZSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfZ2VuZXJhbF90YWInLCR0aGlzLT5TdGFydFRhYignZ2VuZXJhbCcsICRwYXJhbXMpKTsKCi8vIHByZWZzIHRhYgokdGFiX2hlYWRlciAuPSAkdGhpcy0+U2V0VGFiSGVhZGVyKCdwcmVmcycsJHRoaXMtPkxhbmcoJ3RpdGxlX21vZF9wcmVmcycpLCAoJ3ByZWZzJyA9PSAkdGFiKT90cnVlOmZhbHNlKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdzdGFydF9wcmVmc190YWInLCR0aGlzLT5TdGFydFRhYigncHJlZnMnLCAkcGFyYW1zKSk7CgovLyBpbnRlZ3JhdGlvbiB0YWIKJHRhYl9oZWFkZXIgLj0gJHRoaXMtPlNldFRhYkhlYWRlcignaW50ZWdyYXRpb24nLCR0aGlzLT5MYW5nKCd0aXRsZV9tb2RfaW50ZWdyYXRpb24nKSwgKCdpbnRlZ3JhdGlvbicgPT0gJHRhYik/dHJ1ZTpmYWxzZSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbignc3RhcnRfaW50ZWdyYXRpb25fdGFiJywkdGhpcy0+U3RhcnRUYWIoJ2ludGVncmF0aW9uJywgJHBhcmFtcykpOwoKLy8gZXhlY3V0ZSB0ZXN0cyBvbiB0aGUgc2NyaXB0LWVudmlyb25tZW50CiRlbnZpcm9ubWVudEVycm9ycyA9IGFycmF5KCk7CiRlbnZpcm9ubWVudEZpbGVzID0gYXJyYXkoICdjb25maWcucGhwJywgJ2luY2x1ZGUvZnVuY3Rpb25zLnBocCcsICdkYXRhL2xhbmd1YWdlLnBocCcgKTsKJGltbW90b29sQmFzZVBhdGggPSB0cmltKCAkdGhpcy0+R2V0UHJlZmVyZW5jZSgnd3JhcF9wYXRoJywnJykgKTsKaWYgKCFpc19kaXIoJGltbW90b29sQmFzZVBhdGgpKSB7CiAgJGVudmlyb25tZW50RXJyb3JzW10gPSAkdGhpcy0+TGFuZygnZXJyb3JfaW52YWxpZF9wYXRoJyk7Cn0KZWxzZSB7CiAgaWYgKCRpbW1vdG9vbEJhc2VQYXRoW3N0cmxlbigkaW1tb3Rvb2xCYXNlUGF0aCktMV0hPScvJykgJGltbW90b29sQmFzZVBhdGggLj0gJy8nOwogIGRlZmluZSgnSU1NT1RPT0xfQkFTRV9QQVRIJywgJGltbW90b29sQmFzZVBhdGgpOwogIGZvcmVhY2ggKCRlbnZpcm9ubWVudEZpbGVzIGFzICRmaWxlKSB7CiAgICBpZiAoIWlzX2ZpbGUoSU1NT1RPT0xfQkFTRV9QQVRILiRmaWxlKSkKICAgICAgJGVudmlyb25tZW50RXJyb3JzW10gPSAkdGhpcy0+TGFuZygnZXJyb3JfZmlsZV9ub3RfZm91bmQnLCAkZmlsZSk7CiAgfQogIGlmIChjb3VudCgkZW52aXJvbm1lbnRFcnJvcnMpPT0wKSB7CiAgICBkZWZpbmUoJ0lOX1dFQlNJVEUnLCAxKTsKICAgIGZvcmVhY2ggKCRlbnZpcm9ubWVudEZpbGVzIGFzICRmaWxlKSB7CiAgICAgIC8vZWNobyBJTU1PVE9PTF9CQVNFX1BBVEggLiAkZmlsZSAuICc8aHIvPic7CiAgICAgIGluY2x1ZGUoSU1NT1RPT0xfQkFTRV9QQVRILiRmaWxlKTsKICAgIH0KICAgIGlmICghZGVmaW5lZCgnSU1NT1RPT0xfU0NSSVBUX1ZFUlNJT04nKSkKICAgICAgJGVudmlyb25tZW50RXJyb3JzW10gPSAkdGhpcy0+TGFuZygnZXJyb3JfdmVyc2lvbl9ub3RfZm91bmQnKTsKICB9Cn0KJGVudmlyb25tZW50SXNWYWxpZCA9IGNvdW50KCRlbnZpcm9ubWVudEVycm9ycyk9PTA7CiR0ZXN0UmVzdWx0ID0gJyc7CmlmICgkZW52aXJvbm1lbnRJc1ZhbGlkKSB7CiAgJHRlc3RSZXN1bHQgPSAnPGgzIHN0eWxlPSJjb2xvcjpncmVlbjsgbWFyZ2luLWJvdHRvbTowOyI+JyAuICR0aGlzLT5MYW5nKCd0aXRsZV93cmFwX3Rlc3Rfc3VjY2VzcycpIC4gJzwvaDM+JzsKICAkdGVzdFJlc3VsdCAuPSAnPHNwYW4gc3R5bGU9ImNvbG9yOmdyZWVuOyI+dmVyc2lvbiAnIC4gSU1NT1RPT0xfU0NSSVBUX1ZFUlNJT04gLiAnPC9zcGFuPic7CgogICRzZXR1cEluZGV4ID0gbmV3IGltbW90b29sX3NldHVwX2luZGV4KCk7CiAgJHNldHVwRXhwb3NlID0gbmV3IGltbW90b29sX3NldHVwX2V4cG9zZSgpOwogICR0cmFuc2xhdGlvbnMgPSBudWxsOwogICRsYW5nID0gaW1tb3Rvb2xfZnVuY3Rpb25zOjppbml0X2xhbmd1YWdlKCAkc2V0dXBJbmRleC0+RGVmYXVsdExhbmd1YWdlLCAkc2V0dXBJbmRleC0+RGVmYXVsdExhbmd1YWdlLCAkdHJhbnNsYXRpb25zICk7CiAgaWYgKCFpc19hcnJheSgkdHJhbnNsYXRpb25zKSkgewogICAgZWNobyAnw5xiZXJzZXR6dW5nIGthbm4gbmljaHQgZXJtaXR0ZWx0IHdlcmRlbiE8aHIvPic7CiAgICAkZW52aXJvbm1lbnRJc1ZhbGlkID0gZmFsc2U7CiAgfQoKICAvLyBDcmVhdGUgVGFnLUJ1aWxkZXItRm9ybQogICR0aGlzLT5zbWFydHktPmFzc2lnbigndGFnX2J1aWxkZXInLCcxJyk7CgogIC8vIGxhbmcKICAkbGFuZ3MgPSBhcnJheSgpOwogICRkZWZhdWx0TGFuZyA9IG51bGw7CiAgZm9yZWFjaCAoaW1tb3Rvb2xfZnVuY3Rpb25zOjpnZXRfbGFuZ3VhZ2VfY29kZXMoKSBhcyAkY29kZSkgewogICAgaWYgKGlzX251bGwoJGRlZmF1bHRMYW5nKSkgJGRlZmF1bHRMYW5nID0gJGNvZGU7CiAgICAkbGFuZyA9IGltbW90b29sX2Z1bmN0aW9uczo6Z2V0X2xhbmd1YWdlX25hbWUoICRjb2RlICk7CiAgICAkbGFuZ3NbJGxhbmddID0gJGNvZGU7CiAgfQogICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfaW5kZXhfbGFuZycsJHRoaXMtPkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgKICAgICAgICAgICRpZCwKICAgICAgICAgICdpbmRleF9sYW5nJywKICAgICAgICAgICRsYW5ncywKICAgICAgICAgIGFycmF5KCAkZGVmYXVsdExhbmcgKSwKICAgICAgICAgIDAsCiAgICAgICAgICAnaWQ9InRhZ19pbmRleF9sYW5nIiBvbmNoYW5nZT0iYnVpbGRfdGFnKCk7IicsCiAgICAgICAgICBmYWxzZSApICk7CiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9leHBvc2VfbGFuZycsJHRoaXMtPkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgKICAgICAgICAgICRpZCwKICAgICAgICAgICdleHBvc2VfbGFuZycsCiAgICAgICAgICAkbGFuZ3MsCiAgICAgICAgICBhcnJheSggJGRlZmF1bHRMYW5nICksCiAgICAgICAgICAwLAogICAgICAgICAgJ2lkPSJ0YWdfZXhwb3NlX2xhbmciIG9uY2hhbmdlPSJidWlsZF90YWcoKTsiJywKICAgICAgICAgIGZhbHNlICkgKTsKCiAgLy8gaW5kZXgsIHZpZXcKICAkdmlld3MgPSBhcnJheSgKICAgICAgICAgICR0aGlzLT5MYW5nKCd2aWV3X2luZGV4JykgPT4gJ2luZGV4JywKICAgICAgICAgICR0aGlzLT5MYW5nKCd2aWV3X2ZhdicpID0+ICdmYXYnLAogICk7CiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pbmRleF92aWV3JywkdGhpcy0+Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KAogICAgICAgICAgJGlkLAogICAgICAgICAgJ2luZGV4X3ZpZXcnLAogICAgICAgICAgJHZpZXdzLAogICAgICAgICAgYXJyYXkoICdpbmRleCcgKSwKICAgICAgICAgIDAsCiAgICAgICAgICAnaWQ9InRhZ19pbmRleF92aWV3IiBvbmNoYW5nZT0iYnVpbGRfdGFnKCk7IicsCiAgICAgICAgICBmYWxzZSApICk7CgogIC8vIGluZGV4LCBtb2RlCiAgJG1vZGVzID0gYXJyYXkoCiAgICAgICAgICAkdGhpcy0+TGFuZygnbW9kZV9lbnRyeScpID0+ICdlbnRyeScsCiAgICAgICAgICAkdGhpcy0+TGFuZygnbW9kZV9nYWxsZXJ5JykgPT4gJ2dhbGxlcnknLAogICk7CiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9pbmRleF9tb2RlJywkdGhpcy0+Q3JlYXRlSW5wdXRTZWxlY3RMaXN0KAogICAgICAgICAgJGlkLAogICAgICAgICAgJ2luZGV4X21vZGUnLAogICAgICAgICAgJG1vZGVzLAogICAgICAgICAgYXJyYXkoICdlbnRyeScgKSwKICAgICAgICAgIDAsCiAgICAgICAgICAnaWQ9InRhZ19pbmRleF9tb2RlIiBvbmNoYW5nZT0iYnVpbGRfdGFnKCk7IicsCiAgICAgICAgICBmYWxzZSApICk7CgogIC8vIGluZGV4LCBvcmRlciwgYnkKICAkb3JkZXJzID0gYXJyYXkoKTsKICAkZGVmYXVsdE9yZGVyID0gbnVsbDsKICBmb3JlYWNoICgkc2V0dXBJbmRleC0+T3JkZXJPcHRpb25zIGFzICRrZXkpIHsKICAgIGlmIChpc19udWxsKCRkZWZhdWx0T3JkZXIpKSAkZGVmYXVsdE9yZGVyID0gJGtleTsKICAgICRvcmRlck9iaiA9IGltbW90b29sX2Z1bmN0aW9uczo6Z2V0X29yZGVyKCRrZXkpOwogICAgJGJ5ID0gJG9yZGVyT2JqLT5nZXRUaXRsZSggJHRyYW5zbGF0aW9ucywgJGxhbmcgKTsKICAgICRvcmRlcnNbJGJ5XSA9ICRrZXk7CiAgfQogIGFzb3J0KCRvcmRlcnMpOwogICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfaW5kZXhfb3JkZXJfYnknLCR0aGlzLT5DcmVhdGVJbnB1dFNlbGVjdExpc3QoCiAgICAgICAgICAkaWQsCiAgICAgICAgICAnaW5kZXhfb3JkZXJfYnknLAogICAgICAgICAgJG9yZGVycywKICAgICAgICAgIGFycmF5KCAkZGVmYXVsdE9yZGVyICksCiAgICAgICAgICAwLAogICAgICAgICAgJ2lkPSJ0YWdfaW5kZXhfb3JkZXJfYnkiIG9uY2hhbmdlPSJidWlsZF90YWcoKTsiJywKICAgICAgICAgIGZhbHNlICkgKTsKCiAgLy8gaW5kZXgsIG9yZGVyLCBkaXIKICAkZGlycyA9IGFycmF5KAogICAgICAgICAgJHRoaXMtPkxhbmcoJ29yZGVyX2FzYycpID0+ICdhc2MnLAogICAgICAgICAgJHRoaXMtPkxhbmcoJ29yZGVyX2Rlc2MnKSA9PiAnZGVzYycsCiAgKTsKICAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2luZGV4X29yZGVyX2RpcicsJHRoaXMtPkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgKICAgICAgICAgICRpZCwKICAgICAgICAgICdpbmRleF9vcmRlcl9kaXInLAogICAgICAgICAgJGRpcnMsCiAgICAgICAgICBhcnJheSggJ2FzYycgKSwKICAgICAgICAgIDAsCiAgICAgICAgICAnaWQ9InRhZ19pbmRleF9vcmRlcl9kaXIiIG9uY2hhbmdlPSJidWlsZF90YWcoKTsiJywKICAgICAgICAgIGZhbHNlICkgKTsKCiAgLy8gaW5kZXgsIGZpbHRlcnMKICAkZmlsdGVycyA9IGFycmF5KCk7CiAgJGZpbHRlcklkcyA9IGFycmF5KCk7CiAgZm9yZWFjaCAoaW1tb3Rvb2xfZnVuY3Rpb25zOjpsaXN0X2F2YWlsYWJsZV9maWx0ZXJzKCkgYXMgJGtleSkgewogICAgJGZpbHRlck9iaiA9IGltbW90b29sX2Z1bmN0aW9uczo6Z2V0X2ZpbHRlciggJGtleSApOwogICAgaWYgKCFpc19vYmplY3QoJGZpbHRlck9iaikpIGNvbnRpbnVlOwogICAgJGZpbHRlcldpZGdldCA9ICRmaWx0ZXJPYmotPmdldFdpZGdldCggJGZpbHRlclZhbHVlLCAkbGFuZywgJHRyYW5zbGF0aW9ucywgJHNldHVwSW5kZXggKTsKICAgIGlmICghaXNfc3RyaW5nKCRmaWx0ZXJXaWRnZXQpIHx8IHN0cmxlbigkZmlsdGVyV2lkZ2V0KT09MCkgY29udGludWU7CiAgICAkZmlsdGVyV2lkZ2V0ID0gc3RyX3JlcGxhY2UoICc8c2VsZWN0ICcsICc8c2VsZWN0IG9uY2hhbmdlPSJidWlsZF90YWcoKTsiICcsICRmaWx0ZXJXaWRnZXQgKTsKICAgICRmaWx0ZXJXaWRnZXQgPSBzdHJfcmVwbGFjZSggJzxpbnB1dCAnLCAnPGlucHV0IG9uY2hhbmdlPSJidWlsZF90YWcoKTsiICcsICRmaWx0ZXJXaWRnZXQgKTsKICAgICRmaWx0ZXJzW10gPSAkZmlsdGVyV2lkZ2V0OwogICAgJGZpbHRlcklkc1tdID0gJ1wnZmlsdGVyXycgLiAka2V5IC4gJ1wnJzsKICB9CiAgaWYgKGNvdW50KCRmaWx0ZXJzKT4wKSAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2lucHV0X2luZGV4X2ZpbHRlcnMnLCBpbXBsb2RlKCAnJm5ic3A7JywgJGZpbHRlcnMgKSApOwogIGlmIChjb3VudCgkZmlsdGVySWRzKT4wKSAkdGhpcy0+c21hcnR5LT5hc3NpZ24oJ2ZpbHRlcl9pZHMnLCBpbXBsb2RlKCAnLCAnLCAkZmlsdGVySWRzICkgKTsKCgogIC8vIGV4cG9zZSwgdmlldwogICR2aWV3cyA9IGFycmF5KAogICAgICAgICAgJHRoaXMtPkxhbmcoJ3ZpZXdfZGV0YWlscycpID0+ICdkZXRhaWxzJywKICAgICAgICAgICR0aGlzLT5MYW5nKCd2aWV3X3RleHRzJykgPT4gJ3RleHRzJywKICAgICAgICAgICR0aGlzLT5MYW5nKCd2aWV3X2dhbGxlcnknKSA9PiAnZ2FsbGVyeScsCiAgICAgICAgICAkdGhpcy0+TGFuZygndmlld19jb250YWN0JykgPT4gJ2NvbnRhY3QnLAogICAgICAgICAgJHRoaXMtPkxhbmcoJ3ZpZXdfdGVybXMnKSA9PiAndGVybXMnLAogICk7CiAgJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCdpbnB1dF9leHBvc2VfdmlldycsJHRoaXMtPkNyZWF0ZUlucHV0U2VsZWN0TGlzdCgKICAgICAgICAgICRpZCwKICAgICAgICAgICdleHBvc2VfdmlldycsCiAgICAgICAgICAkdmlld3MsCiAgICAgICAgICBhcnJheSggJ2RldGFpbHMnICksCiAgICAgICAgICAwLAogICAgICAgICAgJ2lkPSJ0YWdfZXhwb3NlX3ZpZXciIG9uY2hhbmdlPSJidWlsZF90YWcoKTsiJywKICAgICAgICAgIGZhbHNlICkgKTsKCiAgLy8gZXhwb3NlLCBpZAogICR0aGlzLT5zbWFydHktPmFzc2lnbignaW5wdXRfZXhwb3NlX2lkJywkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KAogICAgICAgICAgJGlkLAogICAgICAgICAgJ2V4cG9zZV9pZCcsCiAgICAgICAgICAnJywKICAgICAgICAgIDUwLAogICAgICAgICAgMjU1LAogICAgICAgICAgJ29uY2hhbmdlPSJidWlsZF90YWcoKTsiIG9ua2V5ZG93bj0iYnVpbGRfdGFnKCk7IiBzdHlsZT0id2lkdGg6MjVlbTsiJyApICk7Cn0KZWxzZSB7CiAgJHRlc3RSZXN1bHQgPSAnPGgzIHN0eWxlPSJjb2xvcjpyZWQ7Ij4nIC4gJHRoaXMtPkxhbmcoJ3RpdGxlX3dyYXBfdGVzdF9lcnJvcicpIC4gJzwvaDM+PHVsPic7CiAgZm9yZWFjaCAoJGVudmlyb25tZW50RXJyb3JzIGFzICRlcnJvcikgewogICAgJHRlc3RSZXN1bHQgLj0gJzx1bD4nIC4gJGVycm9yIC4gJzwvdWw+JzsKICB9CiAgJHRlc3RSZXN1bHQgLj0gJzwvdWw+JzsKfQokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ3dyYXBfdGVzdCcsJHRlc3RSZXN1bHQpOwoKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0YWJzX3N0YXJ0JywkdGFiX2hlYWRlci4kdGhpcy0+RW5kVGFiSGVhZGVycygpLiR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKSk7CiR0aGlzLT5zbWFydHktPmFzc2lnbigndGFiX2VuZCcsJHRoaXMtPkVuZFRhYigpKTsKJHRoaXMtPnNtYXJ0eS0+YXNzaWduKCd0YWJzX2VuZCcsJHRoaXMtPkVuZFRhYkNvbnRlbnQoKSk7CgokdGhpcy0+c21hcnR5LT5hc3NpZ24oJ21vZHVsZV91cmwnLCRHTE9CQUxTWydjb25maWcnXVsncm9vdF91cmwnXSAuICcvbW9kdWxlcy8nIC4gJHRoaXMtPkdldE5hbWUoKSAuICcvJyApOwoKCi8vIENvbnRlbnQgZGVmaW5lcyBhbmQgRm9ybSBzdHVmZiBmb3IgdGhlIGFkbWluCiRzbWFydHktPmFzc2lnbignc3RhcnRfZm9ybScsICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnc2F2ZV9hZG1pbl9wcmVmcycsICRyZXR1cm5pZCkpOwovLyRzbWFydHktPmFzc2lnbignaW5wdXRfYWxsb3dfYWRkJywkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdhbGxvd19hZGQnLCAxLAovLyAgICR0aGlzLT5HZXRQcmVmZXJlbmNlKCdhbGxvd19hZGQnLCcwJykpLiAkdGhpcy0+TGFuZygndGl0bGVfYWxsb3dfYWRkX2hlbHAnKSk7Cgokc21hcnR5LT5hc3NpZ24oJ2lucHV0X3dyYXBfcGF0aCcsJHRoaXMtPkNyZWF0ZUlucHV0VGV4dFdpdGhMYWJlbCggCiAgICAgICAgJGlkLAogICAgICAgICd3cmFwX3BhdGgnLAogICAgICAgICR0aGlzLT5HZXRQcmVmZXJlbmNlKCd3cmFwX3BhdGgnLCcnKSwKICAgICAgICA1MCwKICAgICAgICAyNTUsCiAgICAgICAgJ3N0eWxlPSJ3aWR0aDo3NSU7IicsCiAgICAgICAgJHRoaXMtPkxhbmcoJ3RpdGxlX3dyYXBfcGF0aF9oZWxwJykgLiAnPGJyLz4nICkgKTsKJHNtYXJ0eS0+YXNzaWduKCdpbnB1dF93cmFwX3VybCcsJHRoaXMtPkNyZWF0ZUlucHV0VGV4dFdpdGhMYWJlbCggCiAgICAgICAgJGlkLAogICAgICAgICd3cmFwX3VybCcsCiAgICAgICAgJHRoaXMtPkdldFByZWZlcmVuY2UoJ3dyYXBfdXJsJywnJyksCiAgICAgICAgNTAsCiAgICAgICAgMjU1LAogICAgICAgICdzdHlsZT0id2lkdGg6NzUlOyInLAogICAgICAgICR0aGlzLT5MYW5nKCd0aXRsZV93cmFwX3VybF9oZWxwJykgLiAnPGJyLz4nICkgKTsKCiRzbWFydHktPmFzc2lnbignc3VibWl0JywgJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ3N1Ym1pdCcsIGxhbmcoJ3N1Ym1pdCcpKSk7CgovLyBwYXNzIGEgcmVmZXJlbmNlIHRvIHRoZSBtb2R1bGUsIHNvIHNtYXJ0eSBoYXMgYWNjZXNzIHRvIG1vZHVsZSBtZXRob2RzCiRzbWFydHktPmFzc2lnbl9ieV9yZWYoJ21vZCcsJHRoaXMpOwoKZWNobyAkdGhpcy0+UHJvY2Vzc1RlbXBsYXRlKCdhZG1pbnBhbmVsLnRwbCcpOwovKioKICogWW91IG1pZ2h0IGFsc28gd2FudCB0byBsb29rIGF0IG90aGVyIG1vZHVsZXMgdGhhdCBoYXZlIGRvbmUgdGhpcyA6KQogKiAgKE5ld3MgYW5kIFF1ZXN0aW9ucyBhcmUgZ29vZCBleGFtcGxlcykKICovCgo/Pg==]]></data>
	</file>
	<file>
	  <filename>/action.save_admin_prefs.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFBIUC1XcmFwcGVyIGbDvHIgQ01TbXMuCiAqIEVpbmdhYmVuIGltIEFkbWluaXN0cmF0aW9uc2JlcmVpY2ggw7xiZXJuZWhtZW4uCiAqICRJZDogYWN0aW9uLnNhdmVfYWRtaW5fcHJlZnMucGhwIDg5NyAyMDExLTA2LTE1IDIzOjU0OjU4WiBhbmR5ICQKICoKICogQGF1dGhvciBBbmRyZWFzIFJ1ZG9scGggJiBXYWx0ZXIgV2FnbmVyCiAqIEBjb3B5cmlnaHQgMjAwOS0yMDExLCBPcGVuRXN0YXRlLm9yZwogKiBAbGljZW5zZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQKICovCgppZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCi8vIHNldCBvdXIgcHJlZmVyZW5jZQokdGhpcy0+U2V0UHJlZmVyZW5jZSgnd3JhcF9wYXRoJywgaXNzZXQoJHBhcmFtc1snd3JhcF9wYXRoJ10pPyRwYXJhbXNbJ3dyYXBfcGF0aCddOicnKTsKJHRoaXMtPlNldFByZWZlcmVuY2UoJ3dyYXBfdXJsJywgaXNzZXQoJHBhcmFtc1snd3JhcF91cmwnXSk/JHBhcmFtc1snd3JhcF91cmwnXTonJyk7CgovLyB3cml0ZSB0byB0aGUgYWRtaW4gbG9nCiR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygncHJlZnN1cGRhdGVkJykgKTsKCi8vIHNldCB0aGUgYWN0aXZlIHRhYiwgYW5kIGEgbWVzc2FnZSB0byBkaXNwbGF5CiRwYXJhbXMgPSBhcnJheSgndGFiX21lc3NhZ2UnPT4gJ3ByZWZzdXBkYXRlZCcsICdhY3RpdmVfdGFiJyA9PiAncHJlZnMnKTsKCi8vIHJlZGlyZWN0IGJhY2sgdG8gZGVmYXVsdCBhZG1pbiBwYWdlCiR0aGlzLT5SZWRpcmVjdCgkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICRwYXJhbXMpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/gpl-3.0-standalone.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cgo8aHRtbD48aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KIDx0aXRsZT5HTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAtIEdOVSBQcm9qZWN0IC0gRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChGU0YpPC90aXRsZT4KIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIiB0eXBlPSJhcHBsaWNhdGlvbi9yZGYreG1sIgogICAgICAgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAucmRmIiAvPiAKPC9oZWFkPgo8Ym9keT4KPGgzIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij5HTlUgR0VORVJBTCBQVUJMSUMgTElDRU5TRTwvaDM+CjxwIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7Ij5WZXJzaW9uIDMsIDI5IEp1bmUgMjAwNzwvcD4KCjxwPkNvcHlyaWdodCAmY29weTsgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICZsdDs8YSBocmVmPSJodHRwOi8vZnNmLm9yZy8iPmh0dHA6Ly9mc2Yub3JnLzwvYT4mZ3Q7PC9wPjxwPgogRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCiBvZiB0aGlzIGxpY2Vuc2UgZG9jdW1lbnQsIGJ1dCBjaGFuZ2luZyBpdCBpcyBub3QgYWxsb3dlZC48L3A+Cgo8aDM+PGEgbmFtZT0icHJlYW1ibGUiPjwvYT5QcmVhbWJsZTwvaDM+Cgo8cD5UaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgaXMgYSBmcmVlLCBjb3B5bGVmdCBsaWNlbnNlIGZvcgpzb2Z0d2FyZSBhbmQgb3RoZXIga2luZHMgb2Ygd29ya3MuPC9wPgoKPHA+VGhlIGxpY2Vuc2VzIGZvciBtb3N0IHNvZnR3YXJlIGFuZCBvdGhlciBwcmFjdGljYWwgd29ya3MgYXJlIGRlc2lnbmVkCnRvIHRha2UgYXdheSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSB0aGUgd29ya3MuICBCeSBjb250cmFzdCwKdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGlzIGludGVuZGVkIHRvIGd1YXJhbnRlZSB5b3VyIGZyZWVkb20gdG8Kc2hhcmUgYW5kIGNoYW5nZSBhbGwgdmVyc2lvbnMgb2YgYSBwcm9ncmFtLS10byBtYWtlIHN1cmUgaXQgcmVtYWlucyBmcmVlCnNvZnR3YXJlIGZvciBhbGwgaXRzIHVzZXJzLiAgV2UsIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHVzZSB0aGUKR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vc3Qgb2Ygb3VyIHNvZnR3YXJlOyBpdCBhcHBsaWVzIGFsc28gdG8KYW55IG90aGVyIHdvcmsgcmVsZWFzZWQgdGhpcyB3YXkgYnkgaXRzIGF1dGhvcnMuICBZb3UgY2FuIGFwcGx5IGl0IHRvCnlvdXIgcHJvZ3JhbXMsIHRvby48L3A+Cgo8cD5XaGVuIHdlIHNwZWFrIG9mIGZyZWUgc29mdHdhcmUsIHdlIGFyZSByZWZlcnJpbmcgdG8gZnJlZWRvbSwgbm90CnByaWNlLiAgT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UKaGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRlIGNvcGllcyBvZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hhcmdlIGZvcgp0aGVtIGlmIHlvdSB3aXNoKSwgdGhhdCB5b3UgcmVjZWl2ZSBzb3VyY2UgY29kZSBvciBjYW4gZ2V0IGl0IGlmIHlvdQp3YW50IGl0LCB0aGF0IHlvdSBjYW4gY2hhbmdlIHRoZSBzb2Z0d2FyZSBvciB1c2UgcGllY2VzIG9mIGl0IGluIG5ldwpmcmVlIHByb2dyYW1zLCBhbmQgdGhhdCB5b3Uga25vdyB5b3UgY2FuIGRvIHRoZXNlIHRoaW5ncy48L3A+Cgo8cD5UbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIHByZXZlbnQgb3RoZXJzIGZyb20gZGVueWluZyB5b3UKdGhlc2UgcmlnaHRzIG9yIGFza2luZyB5b3UgdG8gc3VycmVuZGVyIHRoZSByaWdodHMuICBUaGVyZWZvcmUsIHlvdSBoYXZlCmNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZgp5b3UgbW9kaWZ5IGl0OiByZXNwb25zaWJpbGl0aWVzIHRvIHJlc3BlY3QgdGhlIGZyZWVkb20gb2Ygb3RoZXJzLjwvcD4KCjxwPkZvciBleGFtcGxlLCBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2Ygc3VjaCBhIHByb2dyYW0sIHdoZXRoZXIKZ3JhdGlzIG9yIGZvciBhIGZlZSwgeW91IG11c3QgcGFzcyBvbiB0byB0aGUgcmVjaXBpZW50cyB0aGUgc2FtZQpmcmVlZG9tcyB0aGF0IHlvdSByZWNlaXZlZC4gIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGF0IHRoZXksIHRvbywgcmVjZWl2ZQpvciBjYW4gZ2V0IHRoZSBzb3VyY2UgY29kZS4gIEFuZCB5b3UgbXVzdCBzaG93IHRoZW0gdGhlc2UgdGVybXMgc28gdGhleQprbm93IHRoZWlyIHJpZ2h0cy48L3A+Cgo8cD5EZXZlbG9wZXJzIHRoYXQgdXNlIHRoZSBHTlUgR1BMIHByb3RlY3QgeW91ciByaWdodHMgd2l0aCB0d28gc3RlcHM6CigxKSBhc3NlcnQgY29weXJpZ2h0IG9uIHRoZSBzb2Z0d2FyZSwgYW5kICgyKSBvZmZlciB5b3UgdGhpcyBMaWNlbnNlCmdpdmluZyB5b3UgbGVnYWwgcGVybWlzc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZC9vciBtb2RpZnkgaXQuPC9wPgoKPHA+Rm9yIHRoZSBkZXZlbG9wZXJzJyBhbmQgYXV0aG9ycycgcHJvdGVjdGlvbiwgdGhlIEdQTCBjbGVhcmx5IGV4cGxhaW5zCnRoYXQgdGhlcmUgaXMgbm8gd2FycmFudHkgZm9yIHRoaXMgZnJlZSBzb2Z0d2FyZS4gIEZvciBib3RoIHVzZXJzJyBhbmQKYXV0aG9ycycgc2FrZSwgdGhlIEdQTCByZXF1aXJlcyB0aGF0IG1vZGlmaWVkIHZlcnNpb25zIGJlIG1hcmtlZCBhcwpjaGFuZ2VkLCBzbyB0aGF0IHRoZWlyIHByb2JsZW1zIHdpbGwgbm90IGJlIGF0dHJpYnV0ZWQgZXJyb25lb3VzbHkgdG8KYXV0aG9ycyBvZiBwcmV2aW91cyB2ZXJzaW9ucy48L3A+Cgo8cD5Tb21lIGRldmljZXMgYXJlIGRlc2lnbmVkIHRvIGRlbnkgdXNlcnMgYWNjZXNzIHRvIGluc3RhbGwgb3IgcnVuCm1vZGlmaWVkIHZlcnNpb25zIG9mIHRoZSBzb2Z0d2FyZSBpbnNpZGUgdGhlbSwgYWx0aG91Z2ggdGhlIG1hbnVmYWN0dXJlcgpjYW4gZG8gc28uICBUaGlzIGlzIGZ1bmRhbWVudGFsbHkgaW5jb21wYXRpYmxlIHdpdGggdGhlIGFpbSBvZgpwcm90ZWN0aW5nIHVzZXJzJyBmcmVlZG9tIHRvIGNoYW5nZSB0aGUgc29mdHdhcmUuICBUaGUgc3lzdGVtYXRpYwpwYXR0ZXJuIG9mIHN1Y2ggYWJ1c2Ugb2NjdXJzIGluIHRoZSBhcmVhIG9mIHByb2R1Y3RzIGZvciBpbmRpdmlkdWFscyB0bwp1c2UsIHdoaWNoIGlzIHByZWNpc2VseSB3aGVyZSBpdCBpcyBtb3N0IHVuYWNjZXB0YWJsZS4gIFRoZXJlZm9yZSwgd2UKaGF2ZSBkZXNpZ25lZCB0aGlzIHZlcnNpb24gb2YgdGhlIEdQTCB0byBwcm9oaWJpdCB0aGUgcHJhY3RpY2UgZm9yIHRob3NlCnByb2R1Y3RzLiAgSWYgc3VjaCBwcm9ibGVtcyBhcmlzZSBzdWJzdGFudGlhbGx5IGluIG90aGVyIGRvbWFpbnMsIHdlCnN0YW5kIHJlYWR5IHRvIGV4dGVuZCB0aGlzIHByb3Zpc2lvbiB0byB0aG9zZSBkb21haW5zIGluIGZ1dHVyZSB2ZXJzaW9ucwpvZiB0aGUgR1BMLCBhcyBuZWVkZWQgdG8gcHJvdGVjdCB0aGUgZnJlZWRvbSBvZiB1c2Vycy48L3A+Cgo8cD5GaW5hbGx5LCBldmVyeSBwcm9ncmFtIGlzIHRocmVhdGVuZWQgY29uc3RhbnRseSBieSBzb2Z0d2FyZSBwYXRlbnRzLgpTdGF0ZXMgc2hvdWxkIG5vdCBhbGxvdyBwYXRlbnRzIHRvIHJlc3RyaWN0IGRldmVsb3BtZW50IGFuZCB1c2Ugb2YKc29mdHdhcmUgb24gZ2VuZXJhbC1wdXJwb3NlIGNvbXB1dGVycywgYnV0IGluIHRob3NlIHRoYXQgZG8sIHdlIHdpc2ggdG8KYXZvaWQgdGhlIHNwZWNpYWwgZGFuZ2VyIHRoYXQgcGF0ZW50cyBhcHBsaWVkIHRvIGEgZnJlZSBwcm9ncmFtIGNvdWxkCm1ha2UgaXQgZWZmZWN0aXZlbHkgcHJvcHJpZXRhcnkuICBUbyBwcmV2ZW50IHRoaXMsIHRoZSBHUEwgYXNzdXJlcyB0aGF0CnBhdGVudHMgY2Fubm90IGJlIHVzZWQgdG8gcmVuZGVyIHRoZSBwcm9ncmFtIG5vbi1mcmVlLjwvcD4KCjxwPlRoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kCm1vZGlmaWNhdGlvbiBmb2xsb3cuPC9wPgoKPGgzPjxhIG5hbWU9InRlcm1zIj48L2E+VEVSTVMgQU5EIENPTkRJVElPTlM8L2gzPgoKPGg0PjxhIG5hbWU9InNlY3Rpb24wIj48L2E+MC4gRGVmaW5pdGlvbnMuPC9oND4KCjxwPiZsZHF1bztUaGlzIExpY2Vuc2UmcmRxdW87IHJlZmVycyB0byB2ZXJzaW9uIDMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLjwvcD4KCjxwPiZsZHF1bztDb3B5cmlnaHQmcmRxdW87IGFsc28gbWVhbnMgY29weXJpZ2h0LWxpa2UgbGF3cyB0aGF0IGFwcGx5IHRvIG90aGVyIGtpbmRzIG9mCndvcmtzLCBzdWNoIGFzIHNlbWljb25kdWN0b3IgbWFza3MuPC9wPgogCjxwPiZsZHF1bztUaGUgUHJvZ3JhbSZyZHF1bzsgcmVmZXJzIHRvIGFueSBjb3B5cmlnaHRhYmxlIHdvcmsgbGljZW5zZWQgdW5kZXIgdGhpcwpMaWNlbnNlLiAgRWFjaCBsaWNlbnNlZSBpcyBhZGRyZXNzZWQgYXMgJmxkcXVvO3lvdSZyZHF1bzsuICAmbGRxdW87TGljZW5zZWVzJnJkcXVvOyBhbmQKJmxkcXVvO3JlY2lwaWVudHMmcmRxdW87IG1heSBiZSBpbmRpdmlkdWFscyBvciBvcmdhbml6YXRpb25zLjwvcD4KCjxwPlRvICZsZHF1bzttb2RpZnkmcmRxdW87IGEgd29yayBtZWFucyB0byBjb3B5IGZyb20gb3IgYWRhcHQgYWxsIG9yIHBhcnQgb2YgdGhlIHdvcmsKaW4gYSBmYXNoaW9uIHJlcXVpcmluZyBjb3B5cmlnaHQgcGVybWlzc2lvbiwgb3RoZXIgdGhhbiB0aGUgbWFraW5nIG9mIGFuCmV4YWN0IGNvcHkuICBUaGUgcmVzdWx0aW5nIHdvcmsgaXMgY2FsbGVkIGEgJmxkcXVvO21vZGlmaWVkIHZlcnNpb24mcmRxdW87IG9mIHRoZQplYXJsaWVyIHdvcmsgb3IgYSB3b3JrICZsZHF1bztiYXNlZCBvbiZyZHF1bzsgdGhlIGVhcmxpZXIgd29yay48L3A+Cgo8cD5BICZsZHF1bztjb3ZlcmVkIHdvcmsmcmRxdW87IG1lYW5zIGVpdGhlciB0aGUgdW5tb2RpZmllZCBQcm9ncmFtIG9yIGEgd29yayBiYXNlZApvbiB0aGUgUHJvZ3JhbS48L3A+Cgo8cD5UbyAmbGRxdW87cHJvcGFnYXRlJnJkcXVvOyBhIHdvcmsgbWVhbnMgdG8gZG8gYW55dGhpbmcgd2l0aCBpdCB0aGF0LCB3aXRob3V0CnBlcm1pc3Npb24sIHdvdWxkIG1ha2UgeW91IGRpcmVjdGx5IG9yIHNlY29uZGFyaWx5IGxpYWJsZSBmb3IKaW5mcmluZ2VtZW50IHVuZGVyIGFwcGxpY2FibGUgY29weXJpZ2h0IGxhdywgZXhjZXB0IGV4ZWN1dGluZyBpdCBvbiBhCmNvbXB1dGVyIG9yIG1vZGlmeWluZyBhIHByaXZhdGUgY29weS4gIFByb3BhZ2F0aW9uIGluY2x1ZGVzIGNvcHlpbmcsCmRpc3RyaWJ1dGlvbiAod2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiksIG1ha2luZyBhdmFpbGFibGUgdG8gdGhlCnB1YmxpYywgYW5kIGluIHNvbWUgY291bnRyaWVzIG90aGVyIGFjdGl2aXRpZXMgYXMgd2VsbC48L3A+Cgo8cD5UbyAmbGRxdW87Y29udmV5JnJkcXVvOyBhIHdvcmsgbWVhbnMgYW55IGtpbmQgb2YgcHJvcGFnYXRpb24gdGhhdCBlbmFibGVzIG90aGVyCnBhcnRpZXMgdG8gbWFrZSBvciByZWNlaXZlIGNvcGllcy4gIE1lcmUgaW50ZXJhY3Rpb24gd2l0aCBhIHVzZXIgdGhyb3VnaAphIGNvbXB1dGVyIG5ldHdvcmssIHdpdGggbm8gdHJhbnNmZXIgb2YgYSBjb3B5LCBpcyBub3QgY29udmV5aW5nLjwvcD4KCjxwPkFuIGludGVyYWN0aXZlIHVzZXIgaW50ZXJmYWNlIGRpc3BsYXlzICZsZHF1bztBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzJnJkcXVvOwp0byB0aGUgZXh0ZW50IHRoYXQgaXQgaW5jbHVkZXMgYSBjb252ZW5pZW50IGFuZCBwcm9taW5lbnRseSB2aXNpYmxlCmZlYXR1cmUgdGhhdCAoMSkgZGlzcGxheXMgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSwgYW5kICgyKQp0ZWxscyB0aGUgdXNlciB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IGZvciB0aGUgd29yayAoZXhjZXB0IHRvIHRoZQpleHRlbnQgdGhhdCB3YXJyYW50aWVzIGFyZSBwcm92aWRlZCksIHRoYXQgbGljZW5zZWVzIG1heSBjb252ZXkgdGhlCndvcmsgdW5kZXIgdGhpcyBMaWNlbnNlLCBhbmQgaG93IHRvIHZpZXcgYSBjb3B5IG9mIHRoaXMgTGljZW5zZS4gIElmCnRoZSBpbnRlcmZhY2UgcHJlc2VudHMgYSBsaXN0IG9mIHVzZXIgY29tbWFuZHMgb3Igb3B0aW9ucywgc3VjaCBhcyBhCm1lbnUsIGEgcHJvbWluZW50IGl0ZW0gaW4gdGhlIGxpc3QgbWVldHMgdGhpcyBjcml0ZXJpb24uPC9wPgoKPGg0PjxhIG5hbWU9InNlY3Rpb24xIj48L2E+MS4gU291cmNlIENvZGUuPC9oND4KCjxwPlRoZSAmbGRxdW87c291cmNlIGNvZGUmcmRxdW87IGZvciBhIHdvcmsgbWVhbnMgdGhlIHByZWZlcnJlZCBmb3JtIG9mIHRoZSB3b3JrCmZvciBtYWtpbmcgbW9kaWZpY2F0aW9ucyB0byBpdC4gICZsZHF1bztPYmplY3QgY29kZSZyZHF1bzsgbWVhbnMgYW55IG5vbi1zb3VyY2UKZm9ybSBvZiBhIHdvcmsuPC9wPgoKPHA+QSAmbGRxdW87U3RhbmRhcmQgSW50ZXJmYWNlJnJkcXVvOyBtZWFucyBhbiBpbnRlcmZhY2UgdGhhdCBlaXRoZXIgaXMgYW4gb2ZmaWNpYWwKc3RhbmRhcmQgZGVmaW5lZCBieSBhIHJlY29nbml6ZWQgc3RhbmRhcmRzIGJvZHksIG9yLCBpbiB0aGUgY2FzZSBvZgppbnRlcmZhY2VzIHNwZWNpZmllZCBmb3IgYSBwYXJ0aWN1bGFyIHByb2dyYW1taW5nIGxhbmd1YWdlLCBvbmUgdGhhdAppcyB3aWRlbHkgdXNlZCBhbW9uZyBkZXZlbG9wZXJzIHdvcmtpbmcgaW4gdGhhdCBsYW5ndWFnZS48L3A+Cgo8cD5UaGUgJmxkcXVvO1N5c3RlbSBMaWJyYXJpZXMmcmRxdW87IG9mIGFuIGV4ZWN1dGFibGUgd29yayBpbmNsdWRlIGFueXRoaW5nLCBvdGhlcgp0aGFuIHRoZSB3b3JrIGFzIGEgd2hvbGUsIHRoYXQgKGEpIGlzIGluY2x1ZGVkIGluIHRoZSBub3JtYWwgZm9ybSBvZgpwYWNrYWdpbmcgYSBNYWpvciBDb21wb25lbnQsIGJ1dCB3aGljaCBpcyBub3QgcGFydCBvZiB0aGF0IE1ham9yCkNvbXBvbmVudCwgYW5kIChiKSBzZXJ2ZXMgb25seSB0byBlbmFibGUgdXNlIG9mIHRoZSB3b3JrIHdpdGggdGhhdApNYWpvciBDb21wb25lbnQsIG9yIHRvIGltcGxlbWVudCBhIFN0YW5kYXJkIEludGVyZmFjZSBmb3Igd2hpY2ggYW4KaW1wbGVtZW50YXRpb24gaXMgYXZhaWxhYmxlIHRvIHRoZSBwdWJsaWMgaW4gc291cmNlIGNvZGUgZm9ybS4gIEEKJmxkcXVvO01ham9yIENvbXBvbmVudCZyZHF1bzssIGluIHRoaXMgY29udGV4dCwgbWVhbnMgYSBtYWpvciBlc3NlbnRpYWwgY29tcG9uZW50CihrZXJuZWwsIHdpbmRvdyBzeXN0ZW0sIGFuZCBzbyBvbikgb2YgdGhlIHNwZWNpZmljIG9wZXJhdGluZyBzeXN0ZW0KKGlmIGFueSkgb24gd2hpY2ggdGhlIGV4ZWN1dGFibGUgd29yayBydW5zLCBvciBhIGNvbXBpbGVyIHVzZWQgdG8KcHJvZHVjZSB0aGUgd29yaywgb3IgYW4gb2JqZWN0IGNvZGUgaW50ZXJwcmV0ZXIgdXNlZCB0byBydW4gaXQuPC9wPgoKPHA+VGhlICZsZHF1bztDb3JyZXNwb25kaW5nIFNvdXJjZSZyZHF1bzsgZm9yIGEgd29yayBpbiBvYmplY3QgY29kZSBmb3JtIG1lYW5zIGFsbAp0aGUgc291cmNlIGNvZGUgbmVlZGVkIHRvIGdlbmVyYXRlLCBpbnN0YWxsLCBhbmQgKGZvciBhbiBleGVjdXRhYmxlCndvcmspIHJ1biB0aGUgb2JqZWN0IGNvZGUgYW5kIHRvIG1vZGlmeSB0aGUgd29yaywgaW5jbHVkaW5nIHNjcmlwdHMgdG8KY29udHJvbCB0aG9zZSBhY3Rpdml0aWVzLiAgSG93ZXZlciwgaXQgZG9lcyBub3QgaW5jbHVkZSB0aGUgd29yaydzClN5c3RlbSBMaWJyYXJpZXMsIG9yIGdlbmVyYWwtcHVycG9zZSB0b29scyBvciBnZW5lcmFsbHkgYXZhaWxhYmxlIGZyZWUKcHJvZ3JhbXMgd2hpY2ggYXJlIHVzZWQgdW5tb2RpZmllZCBpbiBwZXJmb3JtaW5nIHRob3NlIGFjdGl2aXRpZXMgYnV0CndoaWNoIGFyZSBub3QgcGFydCBvZiB0aGUgd29yay4gIEZvciBleGFtcGxlLCBDb3JyZXNwb25kaW5nIFNvdXJjZQppbmNsdWRlcyBpbnRlcmZhY2UgZGVmaW5pdGlvbiBmaWxlcyBhc3NvY2lhdGVkIHdpdGggc291cmNlIGZpbGVzIGZvcgp0aGUgd29yaywgYW5kIHRoZSBzb3VyY2UgY29kZSBmb3Igc2hhcmVkIGxpYnJhcmllcyBhbmQgZHluYW1pY2FsbHkKbGlua2VkIHN1YnByb2dyYW1zIHRoYXQgdGhlIHdvcmsgaXMgc3BlY2lmaWNhbGx5IGRlc2lnbmVkIHRvIHJlcXVpcmUsCnN1Y2ggYXMgYnkgaW50aW1hdGUgZGF0YSBjb21tdW5pY2F0aW9uIG9yIGNvbnRyb2wgZmxvdyBiZXR3ZWVuIHRob3NlCnN1YnByb2dyYW1zIGFuZCBvdGhlciBwYXJ0cyBvZiB0aGUgd29yay48L3A+Cgo8cD5UaGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgbmVlZCBub3QgaW5jbHVkZSBhbnl0aGluZyB0aGF0IHVzZXJzCmNhbiByZWdlbmVyYXRlIGF1dG9tYXRpY2FsbHkgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgQ29ycmVzcG9uZGluZwpTb3VyY2UuPC9wPgoKPHA+VGhlIENvcnJlc3BvbmRpbmcgU291cmNlIGZvciBhIHdvcmsgaW4gc291cmNlIGNvZGUgZm9ybSBpcyB0aGF0CnNhbWUgd29yay48L3A+Cgo8aDQ+PGEgbmFtZT0ic2VjdGlvbjIiPjwvYT4yLiBCYXNpYyBQZXJtaXNzaW9ucy48L2g0PgoKPHA+QWxsIHJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSBhcmUgZ3JhbnRlZCBmb3IgdGhlIHRlcm0gb2YKY29weXJpZ2h0IG9uIHRoZSBQcm9ncmFtLCBhbmQgYXJlIGlycmV2b2NhYmxlIHByb3ZpZGVkIHRoZSBzdGF0ZWQKY29uZGl0aW9ucyBhcmUgbWV0LiAgVGhpcyBMaWNlbnNlIGV4cGxpY2l0bHkgYWZmaXJtcyB5b3VyIHVubGltaXRlZApwZXJtaXNzaW9uIHRvIHJ1biB0aGUgdW5tb2RpZmllZCBQcm9ncmFtLiAgVGhlIG91dHB1dCBmcm9tIHJ1bm5pbmcgYQpjb3ZlcmVkIHdvcmsgaXMgY292ZXJlZCBieSB0aGlzIExpY2Vuc2Ugb25seSBpZiB0aGUgb3V0cHV0LCBnaXZlbiBpdHMKY29udGVudCwgY29uc3RpdHV0ZXMgYSBjb3ZlcmVkIHdvcmsuICBUaGlzIExpY2Vuc2UgYWNrbm93bGVkZ2VzIHlvdXIKcmlnaHRzIG9mIGZhaXIgdXNlIG9yIG90aGVyIGVxdWl2YWxlbnQsIGFzIHByb3ZpZGVkIGJ5IGNvcHlyaWdodCBsYXcuPC9wPgoKPHA+WW91IG1heSBtYWtlLCBydW4gYW5kIHByb3BhZ2F0ZSBjb3ZlcmVkIHdvcmtzIHRoYXQgeW91IGRvIG5vdApjb252ZXksIHdpdGhvdXQgY29uZGl0aW9ucyBzbyBsb25nIGFzIHlvdXIgbGljZW5zZSBvdGhlcndpc2UgcmVtYWlucwppbiBmb3JjZS4gIFlvdSBtYXkgY29udmV5IGNvdmVyZWQgd29ya3MgdG8gb3RoZXJzIGZvciB0aGUgc29sZSBwdXJwb3NlCm9mIGhhdmluZyB0aGVtIG1ha2UgbW9kaWZpY2F0aW9ucyBleGNsdXNpdmVseSBmb3IgeW91LCBvciBwcm92aWRlIHlvdQp3aXRoIGZhY2lsaXRpZXMgZm9yIHJ1bm5pbmcgdGhvc2Ugd29ya3MsIHByb3ZpZGVkIHRoYXQgeW91IGNvbXBseSB3aXRoCnRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgaW4gY29udmV5aW5nIGFsbCBtYXRlcmlhbCBmb3Igd2hpY2ggeW91IGRvCm5vdCBjb250cm9sIGNvcHlyaWdodC4gIFRob3NlIHRodXMgbWFraW5nIG9yIHJ1bm5pbmcgdGhlIGNvdmVyZWQgd29ya3MKZm9yIHlvdSBtdXN0IGRvIHNvIGV4Y2x1c2l2ZWx5IG9uIHlvdXIgYmVoYWxmLCB1bmRlciB5b3VyIGRpcmVjdGlvbgphbmQgY29udHJvbCwgb24gdGVybXMgdGhhdCBwcm9oaWJpdCB0aGVtIGZyb20gbWFraW5nIGFueSBjb3BpZXMgb2YKeW91ciBjb3B5cmlnaHRlZCBtYXRlcmlhbCBvdXRzaWRlIHRoZWlyIHJlbGF0aW9uc2hpcCB3aXRoIHlvdS48L3A+Cgo8cD5Db252ZXlpbmcgdW5kZXIgYW55IG90aGVyIGNpcmN1bXN0YW5jZXMgaXMgcGVybWl0dGVkIHNvbGVseSB1bmRlcgp0aGUgY29uZGl0aW9ucyBzdGF0ZWQgYmVsb3cuICBTdWJsaWNlbnNpbmcgaXMgbm90IGFsbG93ZWQ7IHNlY3Rpb24gMTAKbWFrZXMgaXQgdW5uZWNlc3NhcnkuPC9wPgoKPGg0PjxhIG5hbWU9InNlY3Rpb24zIj48L2E+My4gUHJvdGVjdGluZyBVc2VycycgTGVnYWwgUmlnaHRzIEZyb20gQW50aS1DaXJjdW12ZW50aW9uIExhdy48L2g0PgoKPHA+Tm8gY292ZXJlZCB3b3JrIHNoYWxsIGJlIGRlZW1lZCBwYXJ0IG9mIGFuIGVmZmVjdGl2ZSB0ZWNobm9sb2dpY2FsCm1lYXN1cmUgdW5kZXIgYW55IGFwcGxpY2FibGUgbGF3IGZ1bGZpbGxpbmcgb2JsaWdhdGlvbnMgdW5kZXIgYXJ0aWNsZQoxMSBvZiB0aGUgV0lQTyBjb3B5cmlnaHQgdHJlYXR5IGFkb3B0ZWQgb24gMjAgRGVjZW1iZXIgMTk5Niwgb3IKc2ltaWxhciBsYXdzIHByb2hpYml0aW5nIG9yIHJlc3RyaWN0aW5nIGNpcmN1bXZlbnRpb24gb2Ygc3VjaAptZWFzdXJlcy48L3A+Cgo8cD5XaGVuIHlvdSBjb252ZXkgYSBjb3ZlcmVkIHdvcmssIHlvdSB3YWl2ZSBhbnkgbGVnYWwgcG93ZXIgdG8gZm9yYmlkCmNpcmN1bXZlbnRpb24gb2YgdGVjaG5vbG9naWNhbCBtZWFzdXJlcyB0byB0aGUgZXh0ZW50IHN1Y2ggY2lyY3VtdmVudGlvbgppcyBlZmZlY3RlZCBieSBleGVyY2lzaW5nIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2Ugd2l0aCByZXNwZWN0IHRvCnRoZSBjb3ZlcmVkIHdvcmssIGFuZCB5b3UgZGlzY2xhaW0gYW55IGludGVudGlvbiB0byBsaW1pdCBvcGVyYXRpb24gb3IKbW9kaWZpY2F0aW9uIG9mIHRoZSB3b3JrIGFzIGEgbWVhbnMgb2YgZW5mb3JjaW5nLCBhZ2FpbnN0IHRoZSB3b3JrJ3MKdXNlcnMsIHlvdXIgb3IgdGhpcmQgcGFydGllcycgbGVnYWwgcmlnaHRzIHRvIGZvcmJpZCBjaXJjdW12ZW50aW9uIG9mCnRlY2hub2xvZ2ljYWwgbWVhc3VyZXMuPC9wPgoKPGg0PjxhIG5hbWU9InNlY3Rpb240Ij48L2E+NC4gQ29udmV5aW5nIFZlcmJhdGltIENvcGllcy48L2g0PgoKPHA+WW91IG1heSBjb252ZXkgdmVyYmF0aW0gY29waWVzIG9mIHRoZSBQcm9ncmFtJ3Mgc291cmNlIGNvZGUgYXMgeW91CnJlY2VpdmUgaXQsIGluIGFueSBtZWRpdW0sIHByb3ZpZGVkIHRoYXQgeW91IGNvbnNwaWN1b3VzbHkgYW5kCmFwcHJvcHJpYXRlbHkgcHVibGlzaCBvbiBlYWNoIGNvcHkgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZTsKa2VlcCBpbnRhY3QgYWxsIG5vdGljZXMgc3RhdGluZyB0aGF0IHRoaXMgTGljZW5zZSBhbmQgYW55Cm5vbi1wZXJtaXNzaXZlIHRlcm1zIGFkZGVkIGluIGFjY29yZCB3aXRoIHNlY3Rpb24gNyBhcHBseSB0byB0aGUgY29kZTsKa2VlcCBpbnRhY3QgYWxsIG5vdGljZXMgb2YgdGhlIGFic2VuY2Ugb2YgYW55IHdhcnJhbnR5OyBhbmQgZ2l2ZSBhbGwKcmVjaXBpZW50cyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIGFsb25nIHdpdGggdGhlIFByb2dyYW0uPC9wPgoKPHA+WW91IG1heSBjaGFyZ2UgYW55IHByaWNlIG9yIG5vIHByaWNlIGZvciBlYWNoIGNvcHkgdGhhdCB5b3UgY29udmV5LAphbmQgeW91IG1heSBvZmZlciBzdXBwb3J0IG9yIHdhcnJhbnR5IHByb3RlY3Rpb24gZm9yIGEgZmVlLjwvcD4KCjxoND48YSBuYW1lPSJzZWN0aW9uNSI+PC9hPjUuIENvbnZleWluZyBNb2RpZmllZCBTb3VyY2UgVmVyc2lvbnMuPC9oND4KCjxwPllvdSBtYXkgY29udmV5IGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgb3IgdGhlIG1vZGlmaWNhdGlvbnMgdG8KcHJvZHVjZSBpdCBmcm9tIHRoZSBQcm9ncmFtLCBpbiB0aGUgZm9ybSBvZiBzb3VyY2UgY29kZSB1bmRlciB0aGUKdGVybXMgb2Ygc2VjdGlvbiA0LCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQgYWxsIG9mIHRoZXNlIGNvbmRpdGlvbnM6PC9wPgoKPHVsPgo8bGk+YSkgVGhlIHdvcmsgbXVzdCBjYXJyeSBwcm9taW5lbnQgbm90aWNlcyBzdGF0aW5nIHRoYXQgeW91IG1vZGlmaWVkCiAgICBpdCwgYW5kIGdpdmluZyBhIHJlbGV2YW50IGRhdGUuPC9saT4KCjxsaT5iKSBUaGUgd29yayBtdXN0IGNhcnJ5IHByb21pbmVudCBub3RpY2VzIHN0YXRpbmcgdGhhdCBpdCBpcwogICAgcmVsZWFzZWQgdW5kZXIgdGhpcyBMaWNlbnNlIGFuZCBhbnkgY29uZGl0aW9ucyBhZGRlZCB1bmRlciBzZWN0aW9uCiAgICA3LiAgVGhpcyByZXF1aXJlbWVudCBtb2RpZmllcyB0aGUgcmVxdWlyZW1lbnQgaW4gc2VjdGlvbiA0IHRvCiAgICAmbGRxdW87a2VlcCBpbnRhY3QgYWxsIG5vdGljZXMmcmRxdW87LjwvbGk+Cgo8bGk+YykgWW91IG11c3QgbGljZW5zZSB0aGUgZW50aXJlIHdvcmssIGFzIGEgd2hvbGUsIHVuZGVyIHRoaXMKICAgIExpY2Vuc2UgdG8gYW55b25lIHdobyBjb21lcyBpbnRvIHBvc3Nlc3Npb24gb2YgYSBjb3B5LiAgVGhpcwogICAgTGljZW5zZSB3aWxsIHRoZXJlZm9yZSBhcHBseSwgYWxvbmcgd2l0aCBhbnkgYXBwbGljYWJsZSBzZWN0aW9uIDcKICAgIGFkZGl0aW9uYWwgdGVybXMsIHRvIHRoZSB3aG9sZSBvZiB0aGUgd29yaywgYW5kIGFsbCBpdHMgcGFydHMsCiAgICByZWdhcmRsZXNzIG9mIGhvdyB0aGV5IGFyZSBwYWNrYWdlZC4gIFRoaXMgTGljZW5zZSBnaXZlcyBubwogICAgcGVybWlzc2lvbiB0byBsaWNlbnNlIHRoZSB3b3JrIGluIGFueSBvdGhlciB3YXksIGJ1dCBpdCBkb2VzIG5vdAogICAgaW52YWxpZGF0ZSBzdWNoIHBlcm1pc3Npb24gaWYgeW91IGhhdmUgc2VwYXJhdGVseSByZWNlaXZlZCBpdC48L2xpPgoKPGxpPmQpIElmIHRoZSB3b3JrIGhhcyBpbnRlcmFjdGl2ZSB1c2VyIGludGVyZmFjZXMsIGVhY2ggbXVzdCBkaXNwbGF5CiAgICBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzOyBob3dldmVyLCBpZiB0aGUgUHJvZ3JhbSBoYXMgaW50ZXJhY3RpdmUKICAgIGludGVyZmFjZXMgdGhhdCBkbyBub3QgZGlzcGxheSBBcHByb3ByaWF0ZSBMZWdhbCBOb3RpY2VzLCB5b3VyCiAgICB3b3JrIG5lZWQgbm90IG1ha2UgdGhlbSBkbyBzby48L2xpPgo8L3VsPgoKPHA+QSBjb21waWxhdGlvbiBvZiBhIGNvdmVyZWQgd29yayB3aXRoIG90aGVyIHNlcGFyYXRlIGFuZCBpbmRlcGVuZGVudAp3b3Jrcywgd2hpY2ggYXJlIG5vdCBieSB0aGVpciBuYXR1cmUgZXh0ZW5zaW9ucyBvZiB0aGUgY292ZXJlZCB3b3JrLAphbmQgd2hpY2ggYXJlIG5vdCBjb21iaW5lZCB3aXRoIGl0IHN1Y2ggYXMgdG8gZm9ybSBhIGxhcmdlciBwcm9ncmFtLAppbiBvciBvbiBhIHZvbHVtZSBvZiBhIHN0b3JhZ2Ugb3IgZGlzdHJpYnV0aW9uIG1lZGl1bSwgaXMgY2FsbGVkIGFuCiZsZHF1bzthZ2dyZWdhdGUmcmRxdW87IGlmIHRoZSBjb21waWxhdGlvbiBhbmQgaXRzIHJlc3VsdGluZyBjb3B5cmlnaHQgYXJlIG5vdAp1c2VkIHRvIGxpbWl0IHRoZSBhY2Nlc3Mgb3IgbGVnYWwgcmlnaHRzIG9mIHRoZSBjb21waWxhdGlvbidzIHVzZXJzCmJleW9uZCB3aGF0IHRoZSBpbmRpdmlkdWFsIHdvcmtzIHBlcm1pdC4gIEluY2x1c2lvbiBvZiBhIGNvdmVyZWQgd29yawppbiBhbiBhZ2dyZWdhdGUgZG9lcyBub3QgY2F1c2UgdGhpcyBMaWNlbnNlIHRvIGFwcGx5IHRvIHRoZSBvdGhlcgpwYXJ0cyBvZiB0aGUgYWdncmVnYXRlLjwvcD4KCjxoND48YSBuYW1lPSJzZWN0aW9uNiI+PC9hPjYuIENvbnZleWluZyBOb24tU291cmNlIEZvcm1zLjwvaDQ+Cgo8cD5Zb3UgbWF5IGNvbnZleSBhIGNvdmVyZWQgd29yayBpbiBvYmplY3QgY29kZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcwpvZiBzZWN0aW9ucyA0IGFuZCA1LCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIGNvbnZleSB0aGUKbWFjaGluZS1yZWFkYWJsZSBDb3JyZXNwb25kaW5nIFNvdXJjZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLAppbiBvbmUgb2YgdGhlc2Ugd2F5czo8L3A+Cgo8dWw+CjxsaT5hKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGluLCBvciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0CiAgICAoaW5jbHVkaW5nIGEgcGh5c2ljYWwgZGlzdHJpYnV0aW9uIG1lZGl1bSksIGFjY29tcGFuaWVkIGJ5IHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UgZml4ZWQgb24gYSBkdXJhYmxlIHBoeXNpY2FsIG1lZGl1bQogICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2UuPC9saT4KCjxsaT5iKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIGluLCBvciBlbWJvZGllZCBpbiwgYSBwaHlzaWNhbCBwcm9kdWN0CiAgICAoaW5jbHVkaW5nIGEgcGh5c2ljYWwgZGlzdHJpYnV0aW9uIG1lZGl1bSksIGFjY29tcGFuaWVkIGJ5IGEKICAgIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJlZSB5ZWFycyBhbmQgdmFsaWQgZm9yIGFzCiAgICBsb25nIGFzIHlvdSBvZmZlciBzcGFyZSBwYXJ0cyBvciBjdXN0b21lciBzdXBwb3J0IGZvciB0aGF0IHByb2R1Y3QKICAgIG1vZGVsLCB0byBnaXZlIGFueW9uZSB3aG8gcG9zc2Vzc2VzIHRoZSBvYmplY3QgY29kZSBlaXRoZXIgKDEpIGEKICAgIGNvcHkgb2YgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIGZvciBhbGwgdGhlIHNvZnR3YXJlIGluIHRoZQogICAgcHJvZHVjdCB0aGF0IGlzIGNvdmVyZWQgYnkgdGhpcyBMaWNlbnNlLCBvbiBhIGR1cmFibGUgcGh5c2ljYWwKICAgIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBpbnRlcmNoYW5nZSwgZm9yIGEgcHJpY2Ugbm8KICAgIG1vcmUgdGhhbiB5b3VyIHJlYXNvbmFibGUgY29zdCBvZiBwaHlzaWNhbGx5IHBlcmZvcm1pbmcgdGhpcwogICAgY29udmV5aW5nIG9mIHNvdXJjZSwgb3IgKDIpIGFjY2VzcyB0byBjb3B5IHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UgZnJvbSBhIG5ldHdvcmsgc2VydmVyIGF0IG5vIGNoYXJnZS48L2xpPgoKPGxpPmMpIENvbnZleSBpbmRpdmlkdWFsIGNvcGllcyBvZiB0aGUgb2JqZWN0IGNvZGUgd2l0aCBhIGNvcHkgb2YgdGhlCiAgICB3cml0dGVuIG9mZmVyIHRvIHByb3ZpZGUgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlLiAgVGhpcwogICAgYWx0ZXJuYXRpdmUgaXMgYWxsb3dlZCBvbmx5IG9jY2FzaW9uYWxseSBhbmQgbm9uY29tbWVyY2lhbGx5LCBhbmQKICAgIG9ubHkgaWYgeW91IHJlY2VpdmVkIHRoZSBvYmplY3QgY29kZSB3aXRoIHN1Y2ggYW4gb2ZmZXIsIGluIGFjY29yZAogICAgd2l0aCBzdWJzZWN0aW9uIDZiLjwvbGk+Cgo8bGk+ZCkgQ29udmV5IHRoZSBvYmplY3QgY29kZSBieSBvZmZlcmluZyBhY2Nlc3MgZnJvbSBhIGRlc2lnbmF0ZWQKICAgIHBsYWNlIChncmF0aXMgb3IgZm9yIGEgY2hhcmdlKSwgYW5kIG9mZmVyIGVxdWl2YWxlbnQgYWNjZXNzIHRvIHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UgaW4gdGhlIHNhbWUgd2F5IHRocm91Z2ggdGhlIHNhbWUgcGxhY2UgYXQgbm8KICAgIGZ1cnRoZXIgY2hhcmdlLiAgWW91IG5lZWQgbm90IHJlcXVpcmUgcmVjaXBpZW50cyB0byBjb3B5IHRoZQogICAgQ29ycmVzcG9uZGluZyBTb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuICBJZiB0aGUgcGxhY2UgdG8KICAgIGNvcHkgdGhlIG9iamVjdCBjb2RlIGlzIGEgbmV0d29yayBzZXJ2ZXIsIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZQogICAgbWF5IGJlIG9uIGEgZGlmZmVyZW50IHNlcnZlciAob3BlcmF0ZWQgYnkgeW91IG9yIGEgdGhpcmQgcGFydHkpCiAgICB0aGF0IHN1cHBvcnRzIGVxdWl2YWxlbnQgY29weWluZyBmYWNpbGl0aWVzLCBwcm92aWRlZCB5b3UgbWFpbnRhaW4KICAgIGNsZWFyIGRpcmVjdGlvbnMgbmV4dCB0byB0aGUgb2JqZWN0IGNvZGUgc2F5aW5nIHdoZXJlIHRvIGZpbmQgdGhlCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZS4gIFJlZ2FyZGxlc3Mgb2Ygd2hhdCBzZXJ2ZXIgaG9zdHMgdGhlCiAgICBDb3JyZXNwb25kaW5nIFNvdXJjZSwgeW91IHJlbWFpbiBvYmxpZ2F0ZWQgdG8gZW5zdXJlIHRoYXQgaXQgaXMKICAgIGF2YWlsYWJsZSBmb3IgYXMgbG9uZyBhcyBuZWVkZWQgdG8gc2F0aXNmeSB0aGVzZSByZXF1aXJlbWVudHMuPC9saT4KCjxsaT5lKSBDb252ZXkgdGhlIG9iamVjdCBjb2RlIHVzaW5nIHBlZXItdG8tcGVlciB0cmFuc21pc3Npb24sIHByb3ZpZGVkCiAgICB5b3UgaW5mb3JtIG90aGVyIHBlZXJzIHdoZXJlIHRoZSBvYmplY3QgY29kZSBhbmQgQ29ycmVzcG9uZGluZwogICAgU291cmNlIG9mIHRoZSB3b3JrIGFyZSBiZWluZyBvZmZlcmVkIHRvIHRoZSBnZW5lcmFsIHB1YmxpYyBhdCBubwogICAgY2hhcmdlIHVuZGVyIHN1YnNlY3Rpb24gNmQuPC9saT4KPC91bD4KCjxwPkEgc2VwYXJhYmxlIHBvcnRpb24gb2YgdGhlIG9iamVjdCBjb2RlLCB3aG9zZSBzb3VyY2UgY29kZSBpcyBleGNsdWRlZApmcm9tIHRoZSBDb3JyZXNwb25kaW5nIFNvdXJjZSBhcyBhIFN5c3RlbSBMaWJyYXJ5LCBuZWVkIG5vdCBiZQppbmNsdWRlZCBpbiBjb252ZXlpbmcgdGhlIG9iamVjdCBjb2RlIHdvcmsuPC9wPgoKPHA+QSAmbGRxdW87VXNlciBQcm9kdWN0JnJkcXVvOyBpcyBlaXRoZXIgKDEpIGEgJmxkcXVvO2NvbnN1bWVyIHByb2R1Y3QmcmRxdW87LCB3aGljaCBtZWFucyBhbnkKdGFuZ2libGUgcGVyc29uYWwgcHJvcGVydHkgd2hpY2ggaXMgbm9ybWFsbHkgdXNlZCBmb3IgcGVyc29uYWwsIGZhbWlseSwKb3IgaG91c2Vob2xkIHB1cnBvc2VzLCBvciAoMikgYW55dGhpbmcgZGVzaWduZWQgb3Igc29sZCBmb3IgaW5jb3Jwb3JhdGlvbgppbnRvIGEgZHdlbGxpbmcuICBJbiBkZXRlcm1pbmluZyB3aGV0aGVyIGEgcHJvZHVjdCBpcyBhIGNvbnN1bWVyIHByb2R1Y3QsCmRvdWJ0ZnVsIGNhc2VzIHNoYWxsIGJlIHJlc29sdmVkIGluIGZhdm9yIG9mIGNvdmVyYWdlLiAgRm9yIGEgcGFydGljdWxhcgpwcm9kdWN0IHJlY2VpdmVkIGJ5IGEgcGFydGljdWxhciB1c2VyLCAmbGRxdW87bm9ybWFsbHkgdXNlZCZyZHF1bzsgcmVmZXJzIHRvIGEKdHlwaWNhbCBvciBjb21tb24gdXNlIG9mIHRoYXQgY2xhc3Mgb2YgcHJvZHVjdCwgcmVnYXJkbGVzcyBvZiB0aGUgc3RhdHVzCm9mIHRoZSBwYXJ0aWN1bGFyIHVzZXIgb3Igb2YgdGhlIHdheSBpbiB3aGljaCB0aGUgcGFydGljdWxhciB1c2VyCmFjdHVhbGx5IHVzZXMsIG9yIGV4cGVjdHMgb3IgaXMgZXhwZWN0ZWQgdG8gdXNlLCB0aGUgcHJvZHVjdC4gIEEgcHJvZHVjdAppcyBhIGNvbnN1bWVyIHByb2R1Y3QgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZSBwcm9kdWN0IGhhcyBzdWJzdGFudGlhbApjb21tZXJjaWFsLCBpbmR1c3RyaWFsIG9yIG5vbi1jb25zdW1lciB1c2VzLCB1bmxlc3Mgc3VjaCB1c2VzIHJlcHJlc2VudAp0aGUgb25seSBzaWduaWZpY2FudCBtb2RlIG9mIHVzZSBvZiB0aGUgcHJvZHVjdC48L3A+Cgo8cD4mbGRxdW87SW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uJnJkcXVvOyBmb3IgYSBVc2VyIFByb2R1Y3QgbWVhbnMgYW55IG1ldGhvZHMsCnByb2NlZHVyZXMsIGF1dGhvcml6YXRpb24ga2V5cywgb3Igb3RoZXIgaW5mb3JtYXRpb24gcmVxdWlyZWQgdG8gaW5zdGFsbAphbmQgZXhlY3V0ZSBtb2RpZmllZCB2ZXJzaW9ucyBvZiBhIGNvdmVyZWQgd29yayBpbiB0aGF0IFVzZXIgUHJvZHVjdCBmcm9tCmEgbW9kaWZpZWQgdmVyc2lvbiBvZiBpdHMgQ29ycmVzcG9uZGluZyBTb3VyY2UuICBUaGUgaW5mb3JtYXRpb24gbXVzdApzdWZmaWNlIHRvIGVuc3VyZSB0aGF0IHRoZSBjb250aW51ZWQgZnVuY3Rpb25pbmcgb2YgdGhlIG1vZGlmaWVkIG9iamVjdApjb2RlIGlzIGluIG5vIGNhc2UgcHJldmVudGVkIG9yIGludGVyZmVyZWQgd2l0aCBzb2xlbHkgYmVjYXVzZQptb2RpZmljYXRpb24gaGFzIGJlZW4gbWFkZS48L3A+Cgo8cD5JZiB5b3UgY29udmV5IGFuIG9iamVjdCBjb2RlIHdvcmsgdW5kZXIgdGhpcyBzZWN0aW9uIGluLCBvciB3aXRoLCBvcgpzcGVjaWZpY2FsbHkgZm9yIHVzZSBpbiwgYSBVc2VyIFByb2R1Y3QsIGFuZCB0aGUgY29udmV5aW5nIG9jY3VycyBhcwpwYXJ0IG9mIGEgdHJhbnNhY3Rpb24gaW4gd2hpY2ggdGhlIHJpZ2h0IG9mIHBvc3Nlc3Npb24gYW5kIHVzZSBvZiB0aGUKVXNlciBQcm9kdWN0IGlzIHRyYW5zZmVycmVkIHRvIHRoZSByZWNpcGllbnQgaW4gcGVycGV0dWl0eSBvciBmb3IgYQpmaXhlZCB0ZXJtIChyZWdhcmRsZXNzIG9mIGhvdyB0aGUgdHJhbnNhY3Rpb24gaXMgY2hhcmFjdGVyaXplZCksIHRoZQpDb3JyZXNwb25kaW5nIFNvdXJjZSBjb252ZXllZCB1bmRlciB0aGlzIHNlY3Rpb24gbXVzdCBiZSBhY2NvbXBhbmllZApieSB0aGUgSW5zdGFsbGF0aW9uIEluZm9ybWF0aW9uLiAgQnV0IHRoaXMgcmVxdWlyZW1lbnQgZG9lcyBub3QgYXBwbHkKaWYgbmVpdGhlciB5b3Ugbm9yIGFueSB0aGlyZCBwYXJ0eSByZXRhaW5zIHRoZSBhYmlsaXR5IHRvIGluc3RhbGwKbW9kaWZpZWQgb2JqZWN0IGNvZGUgb24gdGhlIFVzZXIgUHJvZHVjdCAoZm9yIGV4YW1wbGUsIHRoZSB3b3JrIGhhcwpiZWVuIGluc3RhbGxlZCBpbiBST00pLjwvcD4KCjxwPlRoZSByZXF1aXJlbWVudCB0byBwcm92aWRlIEluc3RhbGxhdGlvbiBJbmZvcm1hdGlvbiBkb2VzIG5vdCBpbmNsdWRlIGEKcmVxdWlyZW1lbnQgdG8gY29udGludWUgdG8gcHJvdmlkZSBzdXBwb3J0IHNlcnZpY2UsIHdhcnJhbnR5LCBvciB1cGRhdGVzCmZvciBhIHdvcmsgdGhhdCBoYXMgYmVlbiBtb2RpZmllZCBvciBpbnN0YWxsZWQgYnkgdGhlIHJlY2lwaWVudCwgb3IgZm9yCnRoZSBVc2VyIFByb2R1Y3QgaW4gd2hpY2ggaXQgaGFzIGJlZW4gbW9kaWZpZWQgb3IgaW5zdGFsbGVkLiAgQWNjZXNzIHRvIGEKbmV0d29yayBtYXkgYmUgZGVuaWVkIHdoZW4gdGhlIG1vZGlmaWNhdGlvbiBpdHNlbGYgbWF0ZXJpYWxseSBhbmQKYWR2ZXJzZWx5IGFmZmVjdHMgdGhlIG9wZXJhdGlvbiBvZiB0aGUgbmV0d29yayBvciB2aW9sYXRlcyB0aGUgcnVsZXMgYW5kCnByb3RvY29scyBmb3IgY29tbXVuaWNhdGlvbiBhY3Jvc3MgdGhlIG5ldHdvcmsuPC9wPgoKPHA+Q29ycmVzcG9uZGluZyBTb3VyY2UgY29udmV5ZWQsIGFuZCBJbnN0YWxsYXRpb24gSW5mb3JtYXRpb24gcHJvdmlkZWQsCmluIGFjY29yZCB3aXRoIHRoaXMgc2VjdGlvbiBtdXN0IGJlIGluIGEgZm9ybWF0IHRoYXQgaXMgcHVibGljbHkKZG9jdW1lbnRlZCAoYW5kIHdpdGggYW4gaW1wbGVtZW50YXRpb24gYXZhaWxhYmxlIHRvIHRoZSBwdWJsaWMgaW4Kc291cmNlIGNvZGUgZm9ybSksIGFuZCBtdXN0IHJlcXVpcmUgbm8gc3BlY2lhbCBwYXNzd29yZCBvciBrZXkgZm9yCnVucGFja2luZywgcmVhZGluZyBvciBjb3B5aW5nLjwvcD4KCjxoND48YSBuYW1lPSJzZWN0aW9uNyI+PC9hPjcuIEFkZGl0aW9uYWwgVGVybXMuPC9oND4KCjxwPiZsZHF1bztBZGRpdGlvbmFsIHBlcm1pc3Npb25zJnJkcXVvOyBhcmUgdGVybXMgdGhhdCBzdXBwbGVtZW50IHRoZSB0ZXJtcyBvZiB0aGlzCkxpY2Vuc2UgYnkgbWFraW5nIGV4Y2VwdGlvbnMgZnJvbSBvbmUgb3IgbW9yZSBvZiBpdHMgY29uZGl0aW9ucy4KQWRkaXRpb25hbCBwZXJtaXNzaW9ucyB0aGF0IGFyZSBhcHBsaWNhYmxlIHRvIHRoZSBlbnRpcmUgUHJvZ3JhbSBzaGFsbApiZSB0cmVhdGVkIGFzIHRob3VnaCB0aGV5IHdlcmUgaW5jbHVkZWQgaW4gdGhpcyBMaWNlbnNlLCB0byB0aGUgZXh0ZW50CnRoYXQgdGhleSBhcmUgdmFsaWQgdW5kZXIgYXBwbGljYWJsZSBsYXcuICBJZiBhZGRpdGlvbmFsIHBlcm1pc3Npb25zCmFwcGx5IG9ubHkgdG8gcGFydCBvZiB0aGUgUHJvZ3JhbSwgdGhhdCBwYXJ0IG1heSBiZSB1c2VkIHNlcGFyYXRlbHkKdW5kZXIgdGhvc2UgcGVybWlzc2lvbnMsIGJ1dCB0aGUgZW50aXJlIFByb2dyYW0gcmVtYWlucyBnb3Zlcm5lZCBieQp0aGlzIExpY2Vuc2Ugd2l0aG91dCByZWdhcmQgdG8gdGhlIGFkZGl0aW9uYWwgcGVybWlzc2lvbnMuPC9wPgoKPHA+V2hlbiB5b3UgY29udmV5IGEgY29weSBvZiBhIGNvdmVyZWQgd29yaywgeW91IG1heSBhdCB5b3VyIG9wdGlvbgpyZW1vdmUgYW55IGFkZGl0aW9uYWwgcGVybWlzc2lvbnMgZnJvbSB0aGF0IGNvcHksIG9yIGZyb20gYW55IHBhcnQgb2YKaXQuICAoQWRkaXRpb25hbCBwZXJtaXNzaW9ucyBtYXkgYmUgd3JpdHRlbiB0byByZXF1aXJlIHRoZWlyIG93bgpyZW1vdmFsIGluIGNlcnRhaW4gY2FzZXMgd2hlbiB5b3UgbW9kaWZ5IHRoZSB3b3JrLikgIFlvdSBtYXkgcGxhY2UKYWRkaXRpb25hbCBwZXJtaXNzaW9ucyBvbiBtYXRlcmlhbCwgYWRkZWQgYnkgeW91IHRvIGEgY292ZXJlZCB3b3JrLApmb3Igd2hpY2ggeW91IGhhdmUgb3IgY2FuIGdpdmUgYXBwcm9wcmlhdGUgY29weXJpZ2h0IHBlcm1pc3Npb24uPC9wPgoKPHA+Tm90d2l0aHN0YW5kaW5nIGFueSBvdGhlciBwcm92aXNpb24gb2YgdGhpcyBMaWNlbnNlLCBmb3IgbWF0ZXJpYWwgeW91CmFkZCB0byBhIGNvdmVyZWQgd29yaywgeW91IG1heSAoaWYgYXV0aG9yaXplZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlcnMgb2YKdGhhdCBtYXRlcmlhbCkgc3VwcGxlbWVudCB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlIHdpdGggdGVybXM6PC9wPgoKPHVsPgo8bGk+YSkgRGlzY2xhaW1pbmcgd2FycmFudHkgb3IgbGltaXRpbmcgbGlhYmlsaXR5IGRpZmZlcmVudGx5IGZyb20gdGhlCiAgICB0ZXJtcyBvZiBzZWN0aW9ucyAxNSBhbmQgMTYgb2YgdGhpcyBMaWNlbnNlOyBvcjwvbGk+Cgo8bGk+YikgUmVxdWlyaW5nIHByZXNlcnZhdGlvbiBvZiBzcGVjaWZpZWQgcmVhc29uYWJsZSBsZWdhbCBub3RpY2VzIG9yCiAgICBhdXRob3IgYXR0cmlidXRpb25zIGluIHRoYXQgbWF0ZXJpYWwgb3IgaW4gdGhlIEFwcHJvcHJpYXRlIExlZ2FsCiAgICBOb3RpY2VzIGRpc3BsYXllZCBieSB3b3JrcyBjb250YWluaW5nIGl0OyBvcjwvbGk+Cgo8bGk+YykgUHJvaGliaXRpbmcgbWlzcmVwcmVzZW50YXRpb24gb2YgdGhlIG9yaWdpbiBvZiB0aGF0IG1hdGVyaWFsLCBvcgogICAgcmVxdWlyaW5nIHRoYXQgbW9kaWZpZWQgdmVyc2lvbnMgb2Ygc3VjaCBtYXRlcmlhbCBiZSBtYXJrZWQgaW4KICAgIHJlYXNvbmFibGUgd2F5cyBhcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3JpZ2luYWwgdmVyc2lvbjsgb3I8L2xpPgoKPGxpPmQpIExpbWl0aW5nIHRoZSB1c2UgZm9yIHB1YmxpY2l0eSBwdXJwb3NlcyBvZiBuYW1lcyBvZiBsaWNlbnNvcnMgb3IKICAgIGF1dGhvcnMgb2YgdGhlIG1hdGVyaWFsOyBvcjwvbGk+Cgo8bGk+ZSkgRGVjbGluaW5nIHRvIGdyYW50IHJpZ2h0cyB1bmRlciB0cmFkZW1hcmsgbGF3IGZvciB1c2Ugb2Ygc29tZQogICAgdHJhZGUgbmFtZXMsIHRyYWRlbWFya3MsIG9yIHNlcnZpY2UgbWFya3M7IG9yPC9saT4KCjxsaT5mKSBSZXF1aXJpbmcgaW5kZW1uaWZpY2F0aW9uIG9mIGxpY2Vuc29ycyBhbmQgYXV0aG9ycyBvZiB0aGF0CiAgICBtYXRlcmlhbCBieSBhbnlvbmUgd2hvIGNvbnZleXMgdGhlIG1hdGVyaWFsIChvciBtb2RpZmllZCB2ZXJzaW9ucyBvZgogICAgaXQpIHdpdGggY29udHJhY3R1YWwgYXNzdW1wdGlvbnMgb2YgbGlhYmlsaXR5IHRvIHRoZSByZWNpcGllbnQsIGZvcgogICAgYW55IGxpYWJpbGl0eSB0aGF0IHRoZXNlIGNvbnRyYWN0dWFsIGFzc3VtcHRpb25zIGRpcmVjdGx5IGltcG9zZSBvbgogICAgdGhvc2UgbGljZW5zb3JzIGFuZCBhdXRob3JzLjwvbGk+CjwvdWw+Cgo8cD5BbGwgb3RoZXIgbm9uLXBlcm1pc3NpdmUgYWRkaXRpb25hbCB0ZXJtcyBhcmUgY29uc2lkZXJlZCAmbGRxdW87ZnVydGhlcgpyZXN0cmljdGlvbnMmcmRxdW87IHdpdGhpbiB0aGUgbWVhbmluZyBvZiBzZWN0aW9uIDEwLiAgSWYgdGhlIFByb2dyYW0gYXMgeW91CnJlY2VpdmVkIGl0LCBvciBhbnkgcGFydCBvZiBpdCwgY29udGFpbnMgYSBub3RpY2Ugc3RhdGluZyB0aGF0IGl0IGlzCmdvdmVybmVkIGJ5IHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIGEgdGVybSB0aGF0IGlzIGEgZnVydGhlcgpyZXN0cmljdGlvbiwgeW91IG1heSByZW1vdmUgdGhhdCB0ZXJtLiAgSWYgYSBsaWNlbnNlIGRvY3VtZW50IGNvbnRhaW5zCmEgZnVydGhlciByZXN0cmljdGlvbiBidXQgcGVybWl0cyByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcgdW5kZXIgdGhpcwpMaWNlbnNlLCB5b3UgbWF5IGFkZCB0byBhIGNvdmVyZWQgd29yayBtYXRlcmlhbCBnb3Zlcm5lZCBieSB0aGUgdGVybXMKb2YgdGhhdCBsaWNlbnNlIGRvY3VtZW50LCBwcm92aWRlZCB0aGF0IHRoZSBmdXJ0aGVyIHJlc3RyaWN0aW9uIGRvZXMKbm90IHN1cnZpdmUgc3VjaCByZWxpY2Vuc2luZyBvciBjb252ZXlpbmcuPC9wPgoKPHA+SWYgeW91IGFkZCB0ZXJtcyB0byBhIGNvdmVyZWQgd29yayBpbiBhY2NvcmQgd2l0aCB0aGlzIHNlY3Rpb24sIHlvdQptdXN0IHBsYWNlLCBpbiB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzLCBhIHN0YXRlbWVudCBvZiB0aGUKYWRkaXRpb25hbCB0ZXJtcyB0aGF0IGFwcGx5IHRvIHRob3NlIGZpbGVzLCBvciBhIG5vdGljZSBpbmRpY2F0aW5nCndoZXJlIHRvIGZpbmQgdGhlIGFwcGxpY2FibGUgdGVybXMuPC9wPgoKPHA+QWRkaXRpb25hbCB0ZXJtcywgcGVybWlzc2l2ZSBvciBub24tcGVybWlzc2l2ZSwgbWF5IGJlIHN0YXRlZCBpbiB0aGUKZm9ybSBvZiBhIHNlcGFyYXRlbHkgd3JpdHRlbiBsaWNlbnNlLCBvciBzdGF0ZWQgYXMgZXhjZXB0aW9uczsKdGhlIGFib3ZlIHJlcXVpcmVtZW50cyBhcHBseSBlaXRoZXIgd2F5LjwvcD4KCjxoND48YSBuYW1lPSJzZWN0aW9uOCI+PC9hPjguIFRlcm1pbmF0aW9uLjwvaDQ+Cgo8cD5Zb3UgbWF5IG5vdCBwcm9wYWdhdGUgb3IgbW9kaWZ5IGEgY292ZXJlZCB3b3JrIGV4Y2VwdCBhcyBleHByZXNzbHkKcHJvdmlkZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgQW55IGF0dGVtcHQgb3RoZXJ3aXNlIHRvIHByb3BhZ2F0ZSBvcgptb2RpZnkgaXQgaXMgdm9pZCwgYW5kIHdpbGwgYXV0b21hdGljYWxseSB0ZXJtaW5hdGUgeW91ciByaWdodHMgdW5kZXIKdGhpcyBMaWNlbnNlIChpbmNsdWRpbmcgYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIHVuZGVyIHRoZSB0aGlyZApwYXJhZ3JhcGggb2Ygc2VjdGlvbiAxMSkuPC9wPgoKPHA+SG93ZXZlciwgaWYgeW91IGNlYXNlIGFsbCB2aW9sYXRpb24gb2YgdGhpcyBMaWNlbnNlLCB0aGVuIHlvdXIKbGljZW5zZSBmcm9tIGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzIHJlaW5zdGF0ZWQgKGEpCnByb3Zpc2lvbmFsbHksIHVubGVzcyBhbmQgdW50aWwgdGhlIGNvcHlyaWdodCBob2xkZXIgZXhwbGljaXRseSBhbmQKZmluYWxseSB0ZXJtaW5hdGVzIHlvdXIgbGljZW5zZSwgYW5kIChiKSBwZXJtYW5lbnRseSwgaWYgdGhlIGNvcHlyaWdodApob2xkZXIgZmFpbHMgdG8gbm90aWZ5IHlvdSBvZiB0aGUgdmlvbGF0aW9uIGJ5IHNvbWUgcmVhc29uYWJsZSBtZWFucwpwcmlvciB0byA2MCBkYXlzIGFmdGVyIHRoZSBjZXNzYXRpb24uPC9wPgoKPHA+TW9yZW92ZXIsIHlvdXIgbGljZW5zZSBmcm9tIGEgcGFydGljdWxhciBjb3B5cmlnaHQgaG9sZGVyIGlzCnJlaW5zdGF0ZWQgcGVybWFuZW50bHkgaWYgdGhlIGNvcHlyaWdodCBob2xkZXIgbm90aWZpZXMgeW91IG9mIHRoZQp2aW9sYXRpb24gYnkgc29tZSByZWFzb25hYmxlIG1lYW5zLCB0aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHlvdSBoYXZlCnJlY2VpdmVkIG5vdGljZSBvZiB2aW9sYXRpb24gb2YgdGhpcyBMaWNlbnNlIChmb3IgYW55IHdvcmspIGZyb20gdGhhdApjb3B5cmlnaHQgaG9sZGVyLCBhbmQgeW91IGN1cmUgdGhlIHZpb2xhdGlvbiBwcmlvciB0byAzMCBkYXlzIGFmdGVyCnlvdXIgcmVjZWlwdCBvZiB0aGUgbm90aWNlLjwvcD4KCjxwPlRlcm1pbmF0aW9uIG9mIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgc2VjdGlvbiBkb2VzIG5vdCB0ZXJtaW5hdGUgdGhlCmxpY2Vuc2VzIG9mIHBhcnRpZXMgd2hvIGhhdmUgcmVjZWl2ZWQgY29waWVzIG9yIHJpZ2h0cyBmcm9tIHlvdSB1bmRlcgp0aGlzIExpY2Vuc2UuICBJZiB5b3VyIHJpZ2h0cyBoYXZlIGJlZW4gdGVybWluYXRlZCBhbmQgbm90IHBlcm1hbmVudGx5CnJlaW5zdGF0ZWQsIHlvdSBkbyBub3QgcXVhbGlmeSB0byByZWNlaXZlIG5ldyBsaWNlbnNlcyBmb3IgdGhlIHNhbWUKbWF0ZXJpYWwgdW5kZXIgc2VjdGlvbiAxMC48L3A+Cgo8aDQ+PGEgbmFtZT0ic2VjdGlvbjkiPjwvYT45LiBBY2NlcHRhbmNlIE5vdCBSZXF1aXJlZCBmb3IgSGF2aW5nIENvcGllcy48L2g0PgoKPHA+WW91IGFyZSBub3QgcmVxdWlyZWQgdG8gYWNjZXB0IHRoaXMgTGljZW5zZSBpbiBvcmRlciB0byByZWNlaXZlIG9yCnJ1biBhIGNvcHkgb2YgdGhlIFByb2dyYW0uICBBbmNpbGxhcnkgcHJvcGFnYXRpb24gb2YgYSBjb3ZlcmVkIHdvcmsKb2NjdXJyaW5nIHNvbGVseSBhcyBhIGNvbnNlcXVlbmNlIG9mIHVzaW5nIHBlZXItdG8tcGVlciB0cmFuc21pc3Npb24KdG8gcmVjZWl2ZSBhIGNvcHkgbGlrZXdpc2UgZG9lcyBub3QgcmVxdWlyZSBhY2NlcHRhbmNlLiAgSG93ZXZlciwKbm90aGluZyBvdGhlciB0aGFuIHRoaXMgTGljZW5zZSBncmFudHMgeW91IHBlcm1pc3Npb24gdG8gcHJvcGFnYXRlIG9yCm1vZGlmeSBhbnkgY292ZXJlZCB3b3JrLiAgVGhlc2UgYWN0aW9ucyBpbmZyaW5nZSBjb3B5cmlnaHQgaWYgeW91IGRvCm5vdCBhY2NlcHQgdGhpcyBMaWNlbnNlLiAgVGhlcmVmb3JlLCBieSBtb2RpZnlpbmcgb3IgcHJvcGFnYXRpbmcgYQpjb3ZlcmVkIHdvcmssIHlvdSBpbmRpY2F0ZSB5b3VyIGFjY2VwdGFuY2Ugb2YgdGhpcyBMaWNlbnNlIHRvIGRvIHNvLjwvcD4KCjxoND48YSBuYW1lPSJzZWN0aW9uMTAiPjwvYT4xMC4gQXV0b21hdGljIExpY2Vuc2luZyBvZiBEb3duc3RyZWFtIFJlY2lwaWVudHMuPC9oND4KCjxwPkVhY2ggdGltZSB5b3UgY29udmV5IGEgY292ZXJlZCB3b3JrLCB0aGUgcmVjaXBpZW50IGF1dG9tYXRpY2FsbHkKcmVjZWl2ZXMgYSBsaWNlbnNlIGZyb20gdGhlIG9yaWdpbmFsIGxpY2Vuc29ycywgdG8gcnVuLCBtb2RpZnkgYW5kCnByb3BhZ2F0ZSB0aGF0IHdvcmssIHN1YmplY3QgdG8gdGhpcyBMaWNlbnNlLiAgWW91IGFyZSBub3QgcmVzcG9uc2libGUKZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgd2l0aCB0aGlzIExpY2Vuc2UuPC9wPgoKPHA+QW4gJmxkcXVvO2VudGl0eSB0cmFuc2FjdGlvbiZyZHF1bzsgaXMgYSB0cmFuc2FjdGlvbiB0cmFuc2ZlcnJpbmcgY29udHJvbCBvZiBhbgpvcmdhbml6YXRpb24sIG9yIHN1YnN0YW50aWFsbHkgYWxsIGFzc2V0cyBvZiBvbmUsIG9yIHN1YmRpdmlkaW5nIGFuCm9yZ2FuaXphdGlvbiwgb3IgbWVyZ2luZyBvcmdhbml6YXRpb25zLiAgSWYgcHJvcGFnYXRpb24gb2YgYSBjb3ZlcmVkCndvcmsgcmVzdWx0cyBmcm9tIGFuIGVudGl0eSB0cmFuc2FjdGlvbiwgZWFjaCBwYXJ0eSB0byB0aGF0CnRyYW5zYWN0aW9uIHdobyByZWNlaXZlcyBhIGNvcHkgb2YgdGhlIHdvcmsgYWxzbyByZWNlaXZlcyB3aGF0ZXZlcgpsaWNlbnNlcyB0byB0aGUgd29yayB0aGUgcGFydHkncyBwcmVkZWNlc3NvciBpbiBpbnRlcmVzdCBoYWQgb3IgY291bGQKZ2l2ZSB1bmRlciB0aGUgcHJldmlvdXMgcGFyYWdyYXBoLCBwbHVzIGEgcmlnaHQgdG8gcG9zc2Vzc2lvbiBvZiB0aGUKQ29ycmVzcG9uZGluZyBTb3VyY2Ugb2YgdGhlIHdvcmsgZnJvbSB0aGUgcHJlZGVjZXNzb3IgaW4gaW50ZXJlc3QsIGlmCnRoZSBwcmVkZWNlc3NvciBoYXMgaXQgb3IgY2FuIGdldCBpdCB3aXRoIHJlYXNvbmFibGUgZWZmb3J0cy48L3A+Cgo8cD5Zb3UgbWF5IG5vdCBpbXBvc2UgYW55IGZ1cnRoZXIgcmVzdHJpY3Rpb25zIG9uIHRoZSBleGVyY2lzZSBvZiB0aGUKcmlnaHRzIGdyYW50ZWQgb3IgYWZmaXJtZWQgdW5kZXIgdGhpcyBMaWNlbnNlLiAgRm9yIGV4YW1wbGUsIHlvdSBtYXkKbm90IGltcG9zZSBhIGxpY2Vuc2UgZmVlLCByb3lhbHR5LCBvciBvdGhlciBjaGFyZ2UgZm9yIGV4ZXJjaXNlIG9mCnJpZ2h0cyBncmFudGVkIHVuZGVyIHRoaXMgTGljZW5zZSwgYW5kIHlvdSBtYXkgbm90IGluaXRpYXRlIGxpdGlnYXRpb24KKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQKYW55IHBhdGVudCBjbGFpbSBpcyBpbmZyaW5nZWQgYnkgbWFraW5nLCB1c2luZywgc2VsbGluZywgb2ZmZXJpbmcgZm9yCnNhbGUsIG9yIGltcG9ydGluZyB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBpdC48L3A+Cgo8aDQ+PGEgbmFtZT0ic2VjdGlvbjExIj48L2E+MTEuIFBhdGVudHMuPC9oND4KCjxwPkEgJmxkcXVvO2NvbnRyaWJ1dG9yJnJkcXVvOyBpcyBhIGNvcHlyaWdodCBob2xkZXIgd2hvIGF1dGhvcml6ZXMgdXNlIHVuZGVyIHRoaXMKTGljZW5zZSBvZiB0aGUgUHJvZ3JhbSBvciBhIHdvcmsgb24gd2hpY2ggdGhlIFByb2dyYW0gaXMgYmFzZWQuICBUaGUKd29yayB0aHVzIGxpY2Vuc2VkIGlzIGNhbGxlZCB0aGUgY29udHJpYnV0b3IncyAmbGRxdW87Y29udHJpYnV0b3IgdmVyc2lvbiZyZHF1bzsuPC9wPgoKPHA+QSBjb250cmlidXRvcidzICZsZHF1bztlc3NlbnRpYWwgcGF0ZW50IGNsYWltcyZyZHF1bzsgYXJlIGFsbCBwYXRlbnQgY2xhaW1zCm93bmVkIG9yIGNvbnRyb2xsZWQgYnkgdGhlIGNvbnRyaWJ1dG9yLCB3aGV0aGVyIGFscmVhZHkgYWNxdWlyZWQgb3IKaGVyZWFmdGVyIGFjcXVpcmVkLCB0aGF0IHdvdWxkIGJlIGluZnJpbmdlZCBieSBzb21lIG1hbm5lciwgcGVybWl0dGVkCmJ5IHRoaXMgTGljZW5zZSwgb2YgbWFraW5nLCB1c2luZywgb3Igc2VsbGluZyBpdHMgY29udHJpYnV0b3IgdmVyc2lvbiwKYnV0IGRvIG5vdCBpbmNsdWRlIGNsYWltcyB0aGF0IHdvdWxkIGJlIGluZnJpbmdlZCBvbmx5IGFzIGEKY29uc2VxdWVuY2Ugb2YgZnVydGhlciBtb2RpZmljYXRpb24gb2YgdGhlIGNvbnRyaWJ1dG9yIHZlcnNpb24uICBGb3IKcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAmbGRxdW87Y29udHJvbCZyZHF1bzsgaW5jbHVkZXMgdGhlIHJpZ2h0IHRvIGdyYW50CnBhdGVudCBzdWJsaWNlbnNlcyBpbiBhIG1hbm5lciBjb25zaXN0ZW50IHdpdGggdGhlIHJlcXVpcmVtZW50cyBvZgp0aGlzIExpY2Vuc2UuPC9wPgoKPHA+RWFjaCBjb250cmlidXRvciBncmFudHMgeW91IGEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLCByb3lhbHR5LWZyZWUKcGF0ZW50IGxpY2Vuc2UgdW5kZXIgdGhlIGNvbnRyaWJ1dG9yJ3MgZXNzZW50aWFsIHBhdGVudCBjbGFpbXMsIHRvCm1ha2UsIHVzZSwgc2VsbCwgb2ZmZXIgZm9yIHNhbGUsIGltcG9ydCBhbmQgb3RoZXJ3aXNlIHJ1biwgbW9kaWZ5IGFuZApwcm9wYWdhdGUgdGhlIGNvbnRlbnRzIG9mIGl0cyBjb250cmlidXRvciB2ZXJzaW9uLjwvcD4KCjxwPkluIHRoZSBmb2xsb3dpbmcgdGhyZWUgcGFyYWdyYXBocywgYSAmbGRxdW87cGF0ZW50IGxpY2Vuc2UmcmRxdW87IGlzIGFueSBleHByZXNzCmFncmVlbWVudCBvciBjb21taXRtZW50LCBob3dldmVyIGRlbm9taW5hdGVkLCBub3QgdG8gZW5mb3JjZSBhIHBhdGVudAooc3VjaCBhcyBhbiBleHByZXNzIHBlcm1pc3Npb24gdG8gcHJhY3RpY2UgYSBwYXRlbnQgb3IgY292ZW5hbnQgbm90IHRvCnN1ZSBmb3IgcGF0ZW50IGluZnJpbmdlbWVudCkuICBUbyAmbGRxdW87Z3JhbnQmcmRxdW87IHN1Y2ggYSBwYXRlbnQgbGljZW5zZSB0byBhCnBhcnR5IG1lYW5zIHRvIG1ha2Ugc3VjaCBhbiBhZ3JlZW1lbnQgb3IgY29tbWl0bWVudCBub3QgdG8gZW5mb3JjZSBhCnBhdGVudCBhZ2FpbnN0IHRoZSBwYXJ0eS48L3A+Cgo8cD5JZiB5b3UgY29udmV5IGEgY292ZXJlZCB3b3JrLCBrbm93aW5nbHkgcmVseWluZyBvbiBhIHBhdGVudCBsaWNlbnNlLAphbmQgdGhlIENvcnJlc3BvbmRpbmcgU291cmNlIG9mIHRoZSB3b3JrIGlzIG5vdCBhdmFpbGFibGUgZm9yIGFueW9uZQp0byBjb3B5LCBmcmVlIG9mIGNoYXJnZSBhbmQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwgdGhyb3VnaCBhCnB1YmxpY2x5IGF2YWlsYWJsZSBuZXR3b3JrIHNlcnZlciBvciBvdGhlciByZWFkaWx5IGFjY2Vzc2libGUgbWVhbnMsCnRoZW4geW91IG11c3QgZWl0aGVyICgxKSBjYXVzZSB0aGUgQ29ycmVzcG9uZGluZyBTb3VyY2UgdG8gYmUgc28KYXZhaWxhYmxlLCBvciAoMikgYXJyYW5nZSB0byBkZXByaXZlIHlvdXJzZWxmIG9mIHRoZSBiZW5lZml0IG9mIHRoZQpwYXRlbnQgbGljZW5zZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIHdvcmssIG9yICgzKSBhcnJhbmdlLCBpbiBhIG1hbm5lcgpjb25zaXN0ZW50IHdpdGggdGhlIHJlcXVpcmVtZW50cyBvZiB0aGlzIExpY2Vuc2UsIHRvIGV4dGVuZCB0aGUgcGF0ZW50CmxpY2Vuc2UgdG8gZG93bnN0cmVhbSByZWNpcGllbnRzLiAgJmxkcXVvO0tub3dpbmdseSByZWx5aW5nJnJkcXVvOyBtZWFucyB5b3UgaGF2ZQphY3R1YWwga25vd2xlZGdlIHRoYXQsIGJ1dCBmb3IgdGhlIHBhdGVudCBsaWNlbnNlLCB5b3VyIGNvbnZleWluZyB0aGUKY292ZXJlZCB3b3JrIGluIGEgY291bnRyeSwgb3IgeW91ciByZWNpcGllbnQncyB1c2Ugb2YgdGhlIGNvdmVyZWQgd29yawppbiBhIGNvdW50cnksIHdvdWxkIGluZnJpbmdlIG9uZSBvciBtb3JlIGlkZW50aWZpYWJsZSBwYXRlbnRzIGluIHRoYXQKY291bnRyeSB0aGF0IHlvdSBoYXZlIHJlYXNvbiB0byBiZWxpZXZlIGFyZSB2YWxpZC48L3A+CiAgCjxwPklmLCBwdXJzdWFudCB0byBvciBpbiBjb25uZWN0aW9uIHdpdGggYSBzaW5nbGUgdHJhbnNhY3Rpb24gb3IKYXJyYW5nZW1lbnQsIHlvdSBjb252ZXksIG9yIHByb3BhZ2F0ZSBieSBwcm9jdXJpbmcgY29udmV5YW5jZSBvZiwgYQpjb3ZlcmVkIHdvcmssIGFuZCBncmFudCBhIHBhdGVudCBsaWNlbnNlIHRvIHNvbWUgb2YgdGhlIHBhcnRpZXMKcmVjZWl2aW5nIHRoZSBjb3ZlcmVkIHdvcmsgYXV0aG9yaXppbmcgdGhlbSB0byB1c2UsIHByb3BhZ2F0ZSwgbW9kaWZ5Cm9yIGNvbnZleSBhIHNwZWNpZmljIGNvcHkgb2YgdGhlIGNvdmVyZWQgd29yaywgdGhlbiB0aGUgcGF0ZW50IGxpY2Vuc2UKeW91IGdyYW50IGlzIGF1dG9tYXRpY2FsbHkgZXh0ZW5kZWQgdG8gYWxsIHJlY2lwaWVudHMgb2YgdGhlIGNvdmVyZWQKd29yayBhbmQgd29ya3MgYmFzZWQgb24gaXQuPC9wPgoKPHA+QSBwYXRlbnQgbGljZW5zZSBpcyAmbGRxdW87ZGlzY3JpbWluYXRvcnkmcmRxdW87IGlmIGl0IGRvZXMgbm90IGluY2x1ZGUgd2l0aGluCnRoZSBzY29wZSBvZiBpdHMgY292ZXJhZ2UsIHByb2hpYml0cyB0aGUgZXhlcmNpc2Ugb2YsIG9yIGlzCmNvbmRpdGlvbmVkIG9uIHRoZSBub24tZXhlcmNpc2Ugb2Ygb25lIG9yIG1vcmUgb2YgdGhlIHJpZ2h0cyB0aGF0IGFyZQpzcGVjaWZpY2FsbHkgZ3JhbnRlZCB1bmRlciB0aGlzIExpY2Vuc2UuICBZb3UgbWF5IG5vdCBjb252ZXkgYSBjb3ZlcmVkCndvcmsgaWYgeW91IGFyZSBhIHBhcnR5IHRvIGFuIGFycmFuZ2VtZW50IHdpdGggYSB0aGlyZCBwYXJ0eSB0aGF0IGlzCmluIHRoZSBidXNpbmVzcyBvZiBkaXN0cmlidXRpbmcgc29mdHdhcmUsIHVuZGVyIHdoaWNoIHlvdSBtYWtlIHBheW1lbnQKdG8gdGhlIHRoaXJkIHBhcnR5IGJhc2VkIG9uIHRoZSBleHRlbnQgb2YgeW91ciBhY3Rpdml0eSBvZiBjb252ZXlpbmcKdGhlIHdvcmssIGFuZCB1bmRlciB3aGljaCB0aGUgdGhpcmQgcGFydHkgZ3JhbnRzLCB0byBhbnkgb2YgdGhlCnBhcnRpZXMgd2hvIHdvdWxkIHJlY2VpdmUgdGhlIGNvdmVyZWQgd29yayBmcm9tIHlvdSwgYSBkaXNjcmltaW5hdG9yeQpwYXRlbnQgbGljZW5zZSAoYSkgaW4gY29ubmVjdGlvbiB3aXRoIGNvcGllcyBvZiB0aGUgY292ZXJlZCB3b3JrCmNvbnZleWVkIGJ5IHlvdSAob3IgY29waWVzIG1hZGUgZnJvbSB0aG9zZSBjb3BpZXMpLCBvciAoYikgcHJpbWFyaWx5CmZvciBhbmQgaW4gY29ubmVjdGlvbiB3aXRoIHNwZWNpZmljIHByb2R1Y3RzIG9yIGNvbXBpbGF0aW9ucyB0aGF0CmNvbnRhaW4gdGhlIGNvdmVyZWQgd29yaywgdW5sZXNzIHlvdSBlbnRlcmVkIGludG8gdGhhdCBhcnJhbmdlbWVudCwKb3IgdGhhdCBwYXRlbnQgbGljZW5zZSB3YXMgZ3JhbnRlZCwgcHJpb3IgdG8gMjggTWFyY2ggMjAwNy48L3A+Cgo8cD5Ob3RoaW5nIGluIHRoaXMgTGljZW5zZSBzaGFsbCBiZSBjb25zdHJ1ZWQgYXMgZXhjbHVkaW5nIG9yIGxpbWl0aW5nCmFueSBpbXBsaWVkIGxpY2Vuc2Ugb3Igb3RoZXIgZGVmZW5zZXMgdG8gaW5mcmluZ2VtZW50IHRoYXQgbWF5Cm90aGVyd2lzZSBiZSBhdmFpbGFibGUgdG8geW91IHVuZGVyIGFwcGxpY2FibGUgcGF0ZW50IGxhdy48L3A+Cgo8aDQ+PGEgbmFtZT0ic2VjdGlvbjEyIj48L2E+MTIuIE5vIFN1cnJlbmRlciBvZiBPdGhlcnMnIEZyZWVkb20uPC9oND4KCjxwPklmIGNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3IKb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdApleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiAgSWYgeW91IGNhbm5vdCBjb252ZXkgYQpjb3ZlcmVkIHdvcmsgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMKTGljZW5zZSBhbmQgYW55IG90aGVyIHBlcnRpbmVudCBvYmxpZ2F0aW9ucywgdGhlbiBhcyBhIGNvbnNlcXVlbmNlIHlvdSBtYXkKbm90IGNvbnZleSBpdCBhdCBhbGwuICBGb3IgZXhhbXBsZSwgaWYgeW91IGFncmVlIHRvIHRlcm1zIHRoYXQgb2JsaWdhdGUgeW91CnRvIGNvbGxlY3QgYSByb3lhbHR5IGZvciBmdXJ0aGVyIGNvbnZleWluZyBmcm9tIHRob3NlIHRvIHdob20geW91IGNvbnZleQp0aGUgUHJvZ3JhbSwgdGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggdGhvc2UgdGVybXMgYW5kIHRoaXMKTGljZW5zZSB3b3VsZCBiZSB0byByZWZyYWluIGVudGlyZWx5IGZyb20gY29udmV5aW5nIHRoZSBQcm9ncmFtLjwvcD4KCjxoND48YSBuYW1lPSJzZWN0aW9uMTMiPjwvYT4xMy4gVXNlIHdpdGggdGhlIEdOVSBBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZS48L2g0PgoKPHA+Tm90d2l0aHN0YW5kaW5nIGFueSBvdGhlciBwcm92aXNpb24gb2YgdGhpcyBMaWNlbnNlLCB5b3UgaGF2ZQpwZXJtaXNzaW9uIHRvIGxpbmsgb3IgY29tYmluZSBhbnkgY292ZXJlZCB3b3JrIHdpdGggYSB3b3JrIGxpY2Vuc2VkCnVuZGVyIHZlcnNpb24gMyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGludG8gYSBzaW5nbGUKY29tYmluZWQgd29yaywgYW5kIHRvIGNvbnZleSB0aGUgcmVzdWx0aW5nIHdvcmsuICBUaGUgdGVybXMgb2YgdGhpcwpMaWNlbnNlIHdpbGwgY29udGludWUgdG8gYXBwbHkgdG8gdGhlIHBhcnQgd2hpY2ggaXMgdGhlIGNvdmVyZWQgd29yaywKYnV0IHRoZSBzcGVjaWFsIHJlcXVpcmVtZW50cyBvZiB0aGUgR05VIEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLApzZWN0aW9uIDEzLCBjb25jZXJuaW5nIGludGVyYWN0aW9uIHRocm91Z2ggYSBuZXR3b3JrIHdpbGwgYXBwbHkgdG8gdGhlCmNvbWJpbmF0aW9uIGFzIHN1Y2guPC9wPgoKPGg0PjxhIG5hbWU9InNlY3Rpb24xNCI+PC9hPjE0LiBSZXZpc2VkIFZlcnNpb25zIG9mIHRoaXMgTGljZW5zZS48L2g0PgoKPHA+VGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMgb2YKdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiAgU3VjaCBuZXcgdmVyc2lvbnMgd2lsbApiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLCBidXQgbWF5IGRpZmZlciBpbiBkZXRhaWwgdG8KYWRkcmVzcyBuZXcgcHJvYmxlbXMgb3IgY29uY2VybnMuPC9wPgoKPHA+RWFjaCB2ZXJzaW9uIGlzIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuICBJZiB0aGUKUHJvZ3JhbSBzcGVjaWZpZXMgdGhhdCBhIGNlcnRhaW4gbnVtYmVyZWQgdmVyc2lvbiBvZiB0aGUgR05VIEdlbmVyYWwKUHVibGljIExpY2Vuc2UgJmxkcXVvO29yIGFueSBsYXRlciB2ZXJzaW9uJnJkcXVvOyBhcHBsaWVzIHRvIGl0LCB5b3UgaGF2ZSB0aGUKb3B0aW9uIG9mIGZvbGxvd2luZyB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgZWl0aGVyIG9mIHRoYXQgbnVtYmVyZWQKdmVyc2lvbiBvciBvZiBhbnkgbGF0ZXIgdmVyc2lvbiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbi4gIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGUKR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkCmJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uPC9wPgoKPHA+SWYgdGhlIFByb2dyYW0gc3BlY2lmaWVzIHRoYXQgYSBwcm94eSBjYW4gZGVjaWRlIHdoaWNoIGZ1dHVyZQp2ZXJzaW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgY2FuIGJlIHVzZWQsIHRoYXQgcHJveHkncwpwdWJsaWMgc3RhdGVtZW50IG9mIGFjY2VwdGFuY2Ugb2YgYSB2ZXJzaW9uIHBlcm1hbmVudGx5IGF1dGhvcml6ZXMgeW91CnRvIGNob29zZSB0aGF0IHZlcnNpb24gZm9yIHRoZSBQcm9ncmFtLjwvcD4KCjxwPkxhdGVyIGxpY2Vuc2UgdmVyc2lvbnMgbWF5IGdpdmUgeW91IGFkZGl0aW9uYWwgb3IgZGlmZmVyZW50CnBlcm1pc3Npb25zLiAgSG93ZXZlciwgbm8gYWRkaXRpb25hbCBvYmxpZ2F0aW9ucyBhcmUgaW1wb3NlZCBvbiBhbnkKYXV0aG9yIG9yIGNvcHlyaWdodCBob2xkZXIgYXMgYSByZXN1bHQgb2YgeW91ciBjaG9vc2luZyB0byBmb2xsb3cgYQpsYXRlciB2ZXJzaW9uLjwvcD4KCjxoND48YSBuYW1lPSJzZWN0aW9uMTUiPjwvYT4xNS4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS48L2g0PgoKPHA+VEhFUkUgSVMgTk8gV0FSUkFOVFkgRk9SIFRIRSBQUk9HUkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWQpBUFBMSUNBQkxFIExBVy4gIEVYQ0VQVCBXSEVOIE9USEVSV0lTRSBTVEFURUQgSU4gV1JJVElORyBUSEUgQ09QWVJJR0hUCkhPTERFUlMgQU5EL09SIE9USEVSIFBBUlRJRVMgUFJPVklERSBUSEUgUFJPR1JBTSAmbGRxdW87QVMgSVMmcmRxdW87IFdJVEhPVVQgV0FSUkFOVFkKT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQgT1IgSU1QTElFRCwgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sClRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKUFVSUE9TRS4gIFRIRSBFTlRJUkUgUklTSyBBUyBUTyBUSEUgUVVBTElUWSBBTkQgUEVSRk9STUFOQ0UgT0YgVEhFIFBST0dSQU0KSVMgV0lUSCBZT1UuICBTSE9VTEQgVEhFIFBST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FIFRIRSBDT1NUIE9GCkFMTCBORUNFU1NBUlkgU0VSVklDSU5HLCBSRVBBSVIgT1IgQ09SUkVDVElPTi48L3A+Cgo8aDQ+PGEgbmFtZT0ic2VjdGlvbjE2Ij48L2E+MTYuIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LjwvaDQ+Cgo8cD5JTiBOTyBFVkVOVCBVTkxFU1MgUkVRVUlSRUQgQlkgQVBQTElDQUJMRSBMQVcgT1IgQUdSRUVEIFRPIElOIFdSSVRJTkcKV0lMTCBBTlkgQ09QWVJJR0hUIEhPTERFUiwgT1IgQU5ZIE9USEVSIFBBUlRZIFdITyBNT0RJRklFUyBBTkQvT1IgQ09OVkVZUwpUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsIElOQ0xVRElORyBBTlkKR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORyBPVVQgT0YgVEhFClVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIExPU1MgT0YKREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWSBZT1UgT1IgVEhJUkQKUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUiBQUk9HUkFNUyksCkVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKU1VDSCBEQU1BR0VTLjwvcD4KCjxoND48YSBuYW1lPSJzZWN0aW9uMTciPjwvYT4xNy4gSW50ZXJwcmV0YXRpb24gb2YgU2VjdGlvbnMgMTUgYW5kIDE2LjwvaDQ+Cgo8cD5JZiB0aGUgZGlzY2xhaW1lciBvZiB3YXJyYW50eSBhbmQgbGltaXRhdGlvbiBvZiBsaWFiaWxpdHkgcHJvdmlkZWQKYWJvdmUgY2Fubm90IGJlIGdpdmVuIGxvY2FsIGxlZ2FsIGVmZmVjdCBhY2NvcmRpbmcgdG8gdGhlaXIgdGVybXMsCnJldmlld2luZyBjb3VydHMgc2hhbGwgYXBwbHkgbG9jYWwgbGF3IHRoYXQgbW9zdCBjbG9zZWx5IGFwcHJveGltYXRlcwphbiBhYnNvbHV0ZSB3YWl2ZXIgb2YgYWxsIGNpdmlsIGxpYWJpbGl0eSBpbiBjb25uZWN0aW9uIHdpdGggdGhlClByb2dyYW0sIHVubGVzcyBhIHdhcnJhbnR5IG9yIGFzc3VtcHRpb24gb2YgbGlhYmlsaXR5IGFjY29tcGFuaWVzIGEKY29weSBvZiB0aGUgUHJvZ3JhbSBpbiByZXR1cm4gZm9yIGEgZmVlLjwvcD4KCjxwPkVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUzwvcD4KCjxoMz48YSBuYW1lPSJob3d0byI+PC9hPkhvdyB0byBBcHBseSBUaGVzZSBUZXJtcyB0byBZb3VyIE5ldyBQcm9ncmFtczwvaDM+Cgo8cD5JZiB5b3UgZGV2ZWxvcCBhIG5ldyBwcm9ncmFtLCBhbmQgeW91IHdhbnQgaXQgdG8gYmUgb2YgdGhlIGdyZWF0ZXN0CnBvc3NpYmxlIHVzZSB0byB0aGUgcHVibGljLCB0aGUgYmVzdCB3YXkgdG8gYWNoaWV2ZSB0aGlzIGlzIHRvIG1ha2UgaXQKZnJlZSBzb2Z0d2FyZSB3aGljaCBldmVyeW9uZSBjYW4gcmVkaXN0cmlidXRlIGFuZCBjaGFuZ2UgdW5kZXIgdGhlc2UgdGVybXMuPC9wPgoKPHA+VG8gZG8gc28sIGF0dGFjaCB0aGUgZm9sbG93aW5nIG5vdGljZXMgdG8gdGhlIHByb2dyYW0uICBJdCBpcyBzYWZlc3QKdG8gYXR0YWNoIHRoZW0gdG8gdGhlIHN0YXJ0IG9mIGVhY2ggc291cmNlIGZpbGUgdG8gbW9zdCBlZmZlY3RpdmVseQpzdGF0ZSB0aGUgZXhjbHVzaW9uIG9mIHdhcnJhbnR5OyBhbmQgZWFjaCBmaWxlIHNob3VsZCBoYXZlIGF0IGxlYXN0CnRoZSAmbGRxdW87Y29weXJpZ2h0JnJkcXVvOyBsaW5lIGFuZCBhIHBvaW50ZXIgdG8gd2hlcmUgdGhlIGZ1bGwgbm90aWNlIGlzIGZvdW5kLjwvcD4KCjxwcmU+ICAgICZsdDtvbmUgbGluZSB0byBnaXZlIHRoZSBwcm9ncmFtJ3MgbmFtZSBhbmQgYSBicmllZiBpZGVhIG9mIHdoYXQgaXQgZG9lcy4mZ3Q7CiAgICBDb3B5cmlnaHQgKEMpICZsdDt5ZWFyJmd0OyAgJmx0O25hbWUgb2YgYXV0aG9yJmd0OwoKICAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiAgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KCiAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQogICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSAmbHQ7aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyZndDsuCjwvcHJlPgoKPHA+QWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuPC9wPgoKPHA+SWYgdGhlIHByb2dyYW0gZG9lcyB0ZXJtaW5hbCBpbnRlcmFjdGlvbiwgbWFrZSBpdCBvdXRwdXQgYSBzaG9ydApub3RpY2UgbGlrZSB0aGlzIHdoZW4gaXQgc3RhcnRzIGluIGFuIGludGVyYWN0aXZlIG1vZGU6PC9wPgoKPHByZT4gICAgJmx0O3Byb2dyYW0mZ3Q7ICBDb3B5cmlnaHQgKEMpICZsdDt5ZWFyJmd0OyAgJmx0O25hbWUgb2YgYXV0aG9yJmd0OwogICAgVGhpcyBwcm9ncmFtIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWTsgZm9yIGRldGFpbHMgdHlwZSBgc2hvdyB3Jy4KICAgIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQKICAgIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9uczsgdHlwZSBgc2hvdyBjJyBmb3IgZGV0YWlscy4KPC9wcmU+Cgo8cD5UaGUgaHlwb3RoZXRpY2FsIGNvbW1hbmRzIGBzaG93IHcnIGFuZCBgc2hvdyBjJyBzaG91bGQgc2hvdyB0aGUgYXBwcm9wcmlhdGUKcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBPZiBjb3Vyc2UsIHlvdXIgcHJvZ3JhbSdzIGNvbW1hbmRzCm1pZ2h0IGJlIGRpZmZlcmVudDsgZm9yIGEgR1VJIGludGVyZmFjZSwgeW91IHdvdWxkIHVzZSBhbiAmbGRxdW87YWJvdXQgYm94JnJkcXVvOy48L3A+Cgo8cD5Zb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3JrIGFzIGEgcHJvZ3JhbW1lcikgb3Igc2Nob29sLAppZiBhbnksIHRvIHNpZ24gYSAmbGRxdW87Y29weXJpZ2h0IGRpc2NsYWltZXImcmRxdW87IGZvciB0aGUgcHJvZ3JhbSwgaWYgbmVjZXNzYXJ5LgpGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzLCBhbmQgaG93IHRvIGFwcGx5IGFuZCBmb2xsb3cgdGhlIEdOVSBHUEwsIHNlZQombHQ7PGEgaHJlZj0iaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLyI+aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLzwvYT4mZ3Q7LjwvcD4KCjxwPlRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBkb2VzIG5vdCBwZXJtaXQgaW5jb3Jwb3JhdGluZyB5b3VyIHByb2dyYW0KaW50byBwcm9wcmlldGFyeSBwcm9ncmFtcy4gIElmIHlvdXIgcHJvZ3JhbSBpcyBhIHN1YnJvdXRpbmUgbGlicmFyeSwgeW91Cm1heSBjb25zaWRlciBpdCBtb3JlIHVzZWZ1bCB0byBwZXJtaXQgbGlua2luZyBwcm9wcmlldGFyeSBhcHBsaWNhdGlvbnMgd2l0aAp0aGUgbGlicmFyeS4gIElmIHRoaXMgaXMgd2hhdCB5b3Ugd2FudCB0byBkbywgdXNlIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwKUHVibGljIExpY2Vuc2UgaW5zdGVhZCBvZiB0aGlzIExpY2Vuc2UuICBCdXQgZmlyc3QsIHBsZWFzZSByZWFkCiZsdDs8YSBocmVmPSJodHRwOi8vd3d3LmdudS5vcmcvcGhpbG9zb3BoeS93aHktbm90LWxncGwuaHRtbCI+aHR0cDovL3d3dy5nbnUub3JnL3BoaWxvc29waHkvd2h5LW5vdC1sZ3BsLmh0bWw8L2E+Jmd0Oy48L3A+Cgo8L2JvZHk+PC9odG1sPgo=]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/icon.gif</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/images/openestate.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[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]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFBIUC1XcmFwcGVyIGbDvHIgQ01TbXMuCiAqIFNwcmFjaGRhdGVpLCBkZXV0c2NoCiAqICRJZDogZGVfREUucGhwIDg5NyAyMDExLTA2LTE1IDIzOjU0OjU4WiBhbmR5ICQKICoKICogQGF1dGhvciBBbmRyZWFzIFJ1ZG9scGggJiBXYWx0ZXIgV2FnbmVyCiAqIEBjb3B5cmlnaHQgMjAwOS0yMDExLCBPcGVuRXN0YXRlLm9yZwogKiBAbGljZW5zZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQKICovCgokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnT3BlbkVzdGF0ZSBQSFAtV3JhcHBlcic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ0RpZXNlcyBNb2R1bCBpbnRlZ3JpZXJ0IFBIUC1JbW1vYmlsaWVuZXhwb3J0ZSBhdXMgZGVtIE9wZW5Fc3RhdGUtSW1tb1Rvb2wgaW4gQ01TbXMuJzsKJGxhbmdbJ2NoYW5nZWxvZyddID0gJzx1bD4KPGxpPlZlcnNpb24gMC4zLiBEZXRhaWwtS29ycmVrdHVyZW4uPC9saT4KPGxpPlZlcnNpb24gMC4yLiBFcnN0ZXMgw7ZmZmVudGxpY2hlcyBSZWxlYXNlLjwvbGk+CjxsaT5WZXJzaW9uIDAuMS4gSW50ZXJuZXMgUmVsZWFzZS48L2xpPgo8L3VsPic7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldhcyBtYWNodCBkaWVzZXMgTW9kdWw/PC9oMz4KPHA+Jy4kbGFuZ1snbW9kZGVzY3JpcHRpb24nXS4nPC9wPgo8aDM+V2llIGtvbmZpZ3VyaWVyZSBpY2ggZGllc2VzIE1vZHVsPzwvaDM+CjxwPihhKSBGw7xocmVuIFNpZSBlaW5lbiBQSFAtRXhwb3J0IGF1cyBkZW0gPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZXN0YXRlLm9yZy9pbW1vdG9vbC8iIHRhcmdldD0iYmxhbmsiPk9wZW5Fc3RhdGUtSW1tb1Rvb2w8L2E+IGF1ZiBJaHJlbiBXZWJzcGFjZSBkdXJjaCwgd28gYXVjaCBDTVNtcyBpbnN0YWxsaWVydCB3dXJkZS48L3A+CjxwPihiKSBNZWxkZW4gU2llIHNpY2ggaW4gZGVyIENNU21zLUFkbWluaXN0cmF0aW9uIGFuIHVuZCBrbGlja2VuIFNpZSBhdWYgXCdFcndlaXRlcnVuZ2VuXCcgJnJhcXVvOyBcJ09wZW5Fc3RhdGUgUEhQLVdyYXBwZXJcJyAmcmFxdW87IFwnTW9kdWwgRWluc3RlbGx1bmdlblwnLiBUcmFnZW4gU2llIFBmYWQgdW5kIFVSTCBlaW4sIGRpZSBhdWYgZGllIGV4cG9ydGllcnRlbiBQSFAtU2tyaXB0ZSB2ZXJ3ZWlzZW4uPC9wPgo8cD4oYykgSW0gUmVpdGVyIFwnSW50ZWdyYXRpb25cJyB3aXJkIGdlcHLDvGZ0IHVuZCBkYXJnZXN0ZWxsdCwgb2IgZGVyIGhpbnRlcmxlZ3RlIFNrcmlwdC1QZmFkIGtvcnJla3QgaXN0LjwvcD4KCjxoMz5XaWUgdmVyd2VuZGUgaWNoIGRhcyBNb2R1bD88L2gzPgo8cD4oYSkgQWxsZ2VtZWluIGthbm4gZGFzIE1vZHVsIGR1cmNoIGRhcyBTbWFydHktVGFnICYjMTIzO09wZW5Fc3RhdGVQaHBXcmFwcGVyfSBpbiBlaW5lIGJlbGllYmlnZSBTZWl0ZSAob2RlciBUZW1wbGF0ZSkgZWluZ2Vmw7xndCB3ZXJkZW4uPC9wPgo8cD4oYikgRGllIEVpbmJpbmR1bmcga2FubiBkdXJjaCB3ZWl0ZXJlIFBhcmFtZXRlciBrb25maWd1cmllcnQgd2VyZGVuLiBNZWxkZW4gU2llIHNpY2ggaW4gZGVyIENNU21zLUFkbWluaXN0cmF0aW9uIGFuIHVuZCBrbGlja2VuIFNpZSBhdWYgXCdFcndlaXRlcnVuZ2VuXCcgJnJhcXVvOyBcJ09wZW5Fc3RhdGUgUEhQLVdyYXBwZXJcJyAmcmFxdW87IFwnSW50ZWdyYXRpb25cJy4gRG9ydCBmaW5kZW4gU2llIGVpbiBGb3JtdWxhciwgbWl0IGRlc3NlbiBIaWxmZSBlaW4gU21hcnR5LVRhZyBpbmtsLiBQYXJhbWV0ZXIgZXJ6ZXVndCB3ZXJkZW4ga2Fubi48L3A+Cgo8aDM+Q29weXJpZ2h0IHVuZCBMaXplbno8L2gzPgo8cD5Db3B5cmlnaHQgJmNvcHk7IDIwMTAsIEFuZHJlYXMgUnVkb2xwaCAmYW1wOyBXYWx0ZXIgV2FnbmVyIDxhIGhyZWY9Im1haWx0bzppbmZvQG9wZW5pbmRleC5kZSI+Jmx0O2luZm9Ab3BlbmluZGV4LmRlJmd0OzwvYT4uIEFsbCBSaWdodHMgQXJlIFJlc2VydmVkLjwvcD4KPHA+RGllc2VzIE1vZHVsIHd1cmRlIHZlcsO2ZmZlbnRsaWNodCB1bnRlciBkZW4gQmVkaW5ndW5nZW4gZGVyIDxhIGhyZWY9Inttb2R1bGVfdXJsfWdwbC0zLjAtc3RhbmRhbG9uZS5odG1sIj5HTlUgUHVibGljIExpY2Vuc2UgdjM8L2E+LiBNaXQgVmVyd2VuZHVuZyBkZXMgTW9kdWxzIGFremVwdGllcmVuIFNpZSBkaWUgTGl6ZW56YmVkaW5ndW5nZW4uPC9wPgonOwoKLy8gTWVsZHVuZ2VuCiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ09wZW5Fc3RhdGUgUEhQLVdyYXBwZXIgd3VyZGUgZXJmb2xncmVpY2ggaW5zdGFsbGllcnQhIEJpdHRlIGtvbmZpZ3VyaWVyZW4gU2llIGRhcyBNb2R1bCBlbnRzcHJlY2hlbmQuJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICdPcGVuRXN0YXRlIFBIUC1XcmFwcGVyIHd1cmRlIGVyZm9sZ3JlaWNoIGVudGZlcm50ISc7CiRsYW5nWydyZWFsbHlfdW5pbnN0YWxsJ10gPSAnU29sbCBkYXMgTW9kdWwgd2lya2xpY2ggZW50ZmVybnQgd2VyZGVuPyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsIGVudGZlcm50Lic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdEYXMgTW9kdWwgd3VyZGUgaW5zdGFsbGllcnQgKFZlcnNpb24gJXMpLic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ0RhcyBNb2R1bCB3dXJkZSBha3R1YWxpc2llcnQgdGF1ZiBWZXJzaW9uICVzLic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdEaWUgRWluc3RlbGx1bmdlbiBkZXMgTW9kdWxzIHd1cmRlbiBnZXNwZWljaGVydC4uJzsKJGxhbmdbJ3N1Ym1pdCddID0gJ1NwZWljaGVybic7CiRsYW5nWydlcnJvciddID0gJ0ZlaGxlciEnOwokbGFuZ1sncmVidWlsZCddID0gJ0FrdHVhbGlzaWVyZW4nOwoKLy8gR2VuZXJhbCBJbmZvCiRsYW5nWyd0aXRsZV9nZW5lcmFsJ10gPSAnQWxsZ2VtZWluZSBJbmZvcm1hdGlvbmVuJzsKJGxhbmdbJ3RpdGxlX2Fib3V0J10gPSAnw5xiZXIgZGllc2VzIE1vZHVsJzsKJGxhbmdbJ3RpdGxlX2xpY2Vuc2UnXSA9ICdMaXplbnp2ZXJlaW5iYXJ1bmcnOwokbGFuZ1sndGl0bGVfYXV0aG9ycyddID0gJ0F1dG9yZW4gLyBFbnR3aWNrbGVyJzsKJGxhbmdbJ3RpdGxlX3N1cHBvcnQnXSA9ICdVbnRlcnN0w7x0emVuIFNpZSBkaWUgd2VpdGVyZSBFbnR3aWNrbHVuZyEnOwoKLy8gUHJlZmVyZW5jZXMKJGxhbmdbJ3RpdGxlX21vZF9wcmVmcyddID0gJ01vZHVsIEVpbnN0ZWxsdW5nZW4nOwokbGFuZ1sndGl0bGVfd3JhcF9wYXRoJ10gPSAnU2tyaXB0LVBmYWQnOwokbGFuZ1sndGl0bGVfd3JhcF9wYXRoX2hlbHAnXSA9ICdUcmFnZW4gU2llIGRlbiBQZmFkIGF1ZiBJaHJlbSBTZXJ2ZXIgZWluLCBkZXIgYXVmIGRpZSBleHBvcnRpZXJ0ZW4gUEhQLVNrcmlwdGUgdmVyd2Vpc3QuJzsKJGxhbmdbJ3RpdGxlX3dyYXBfdXJsJ10gPSAnU2tyaXB0LVVSTCc7CiRsYW5nWyd0aXRsZV93cmFwX3VybF9oZWxwJ10gPSAnVHJhZ2VuIFNpZSBkaWUgVVJMIGF1ZiBJaHJlIFdlYnNlaXRlIGVpbiwgZGllIGF1ZiBkaWUgZXhwb3J0aWVydGVuIFBIUC1Ta3JpcHRlIHZlcndlaXN0Lic7CgovLyBJbnRlZ3JhdGlvbgokbGFuZ1sndGl0bGVfbW9kX2ludGVncmF0aW9uJ10gPSAnSW50ZWdyYXRpb24nOwokbGFuZ1sndGl0bGVfd3JhcF90ZXN0J10gPSAnU2tyaXB0LVRlc3QnOwokbGFuZ1sndGl0bGVfd3JhcF90ZXN0X3N1Y2Nlc3MnXSA9ICdEaWUgU2tyaXB0ZSB3dXJkZW4ga29ycmVrdCBlaW5nZWJ1bmRlbi4nOwokbGFuZ1sndGl0bGVfd3JhcF90ZXN0X2Vycm9yJ10gPSAnRGllIFNrcmlwdGUga29ubnRlbiBOSUNIVCBlaW5nZWJ1bmRlbiB3ZXJkZW4uJzsKJGxhbmdbJ3RpdGxlX3dyYXBfdGFnJ10gPSAnRWluIENNU21zLVRhZyBlcnpldWdlbic7CiRsYW5nWyd0aXRsZV93cmFwX3RhZ19oZWxwJ10gPSAnRGVyIGVyemV1Z3RlIENvZGUga2FubiBhbiBiZWxpZWJpZ2VyIFN0ZWxsZSBpbiBlaW5lciBTZWl0ZSBvZGVyIGVpbmVtIFRlbXBsYXRlIGVpbmdlZsO8Z3Qgd2VyZGVuLic7CiRsYW5nWyd0aXRsZV93cmFwX2xpc3RpbmcnXSA9ICdJbW1vYmlsaWVuw7xiZXJzaWNodCc7CiRsYW5nWyd0aXRsZV93cmFwX3RhZ192aWV3J10gPSAnQW5zaWNodCc7CiRsYW5nWyd0aXRsZV93cmFwX3RhZ19tb2RlJ10gPSAnRGFyc3RlbGx1bmcnOwokbGFuZ1sndGl0bGVfd3JhcF90YWdfbGFuZyddID0gJ1NwcmFjaGUnOwokbGFuZ1sndGl0bGVfd3JhcF90YWdfb3JkZXInXSA9ICdTb3J0aWVydW5nJzsKJGxhbmdbJ3RpdGxlX3dyYXBfdGFnX2ZpbHRlciddID0gJ0ZpbHRlcmt0aWVyaWVuJzsKJGxhbmdbJ3RpdGxlX3dyYXBfcHJvcGVydHknXSA9ICdJbW1vYmlsaWVuYW5zaWNodCc7CiRsYW5nWyd0aXRsZV93cmFwX3RhZ19wcm9wZXJ0eSddID0gJ09iamVrdC1JRCc7CgovLyBJbnRlZ3JhdGlvbiwgdmlldwokbGFuZ1sndmlld19pbmRleCddID0gJ8OcYmVyc2ljaHQnOwokbGFuZ1sndmlld19mYXYnXSA9ICdWb3JtZXJrbGlzdGUnOwokbGFuZ1sndmlld19kZXRhaWxzJ10gPSAnRGV0YWlscyc7CiRsYW5nWyd2aWV3X3RleHRzJ10gPSAnVGV4dGUnOwokbGFuZ1sndmlld19nYWxsZXJ5J10gPSAnR2FsZXJpZSc7CiRsYW5nWyd2aWV3X2NvbnRhY3QnXSA9ICdLb250YWt0JzsKJGxhbmdbJ3ZpZXdfdGVybXMnXSA9ICdBR0InOwoKLy8gSW50ZWdyYXRpb24sIG1vZGUKJGxhbmdbJ21vZGVfZW50cnknXSA9ICdhbHMgTGlzdGUnOwokbGFuZ1snbW9kZV9nYWxsZXJ5J10gPSAnYWxzIEdhbGVyaWUnOwoKLy8gSW50ZWdyYXRpb24sIG9yZGVyCiRsYW5nWydvcmRlcl9hc2MnXSA9ICdBdWZzdGVpZ2VuZCc7CiRsYW5nWydvcmRlcl9kZXNjJ10gPSAnQWJzdGVpZ2VuZCc7CgovLyBJbnRlZ3JhdGlvbiwgZXJyb3JzCiRsYW5nWydlcnJvcl9pbnZhbGlkX3BhdGgnXSA9ICdCaXR0ZSB0cmFnZW4gU2llIGVpbmVuIGfDvGx0aWdlbiBTa3JpcHQtUGZhZCBlaW4hJzsKJGxhbmdbJ2Vycm9yX2ZpbGVfbm90X2ZvdW5kJ10gPSAnRGllIGVyZm9yZGVybGljaHRlIERhdGVpIFwnJXNcJyBiZWZpbmRldCBzaWNoIG5pY2h0IGltIFNrcmlwdC1QZmFkISc7CiRsYW5nWydlcnJvcl92ZXJzaW9uX25vdF9mb3VuZCddID0gJ0RpZSBTa3JpcHQtVmVyc2lvbiBrb25udGUgbmljaHQgZXJtaXR0ZWx0IHdlcmRlbiEnOwokbGFuZ1snZXJyb3JfdXBkYXRlX2lzX3J1bm5pbmcnXSA9ICc8aDM+RGVyIEltbW9iaWxpZW5iZXN0YW5kIHdpcmQgbW9tZW50YW4gYWt0dWFsaXNpZXJ0ITwvaDM+PHA+Qml0dGUgYmVzdWNoZW4gU2llIGRpZXNlIFNlaXRlIGluIHdlbmlnZW4gTWludXRlbiBlcm5ldXQuPC9wPic7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFBIUC1XcmFwcGVyIGbDvHIgQ01TbXMuCiAqIFNwcmFjaGRhdGVpLCBlbmdsaXNjaAogKiAkSWQ6IGVuX1VTLnBocCA4OTcgMjAxMS0wNi0xNSAyMzo1NDo1OFogYW5keSAkCiAqCiAqIEBhdXRob3IgQW5kcmVhcyBSdWRvbHBoICYgV2FsdGVyIFdhZ25lcgogKiBAY29weXJpZ2h0IDIwMDktMjAxMSwgT3BlbkVzdGF0ZS5vcmcKICogQGxpY2Vuc2UgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0CiAqLwoKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ09wZW5Fc3RhdGUgUEhQLVdyYXBwZXInOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdUaGlzIG1vZHVsZSBpbnRlZ3JhdGVzIFBIUC1leHBvcnRlZCBwcm9wZXJ0aWVzIGZyb20gT3BlbkVzdGF0ZS1JbW1vVG9vbCBpbnRvIENNU21zLic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+CjxsaT5WZXJzaW9uIDAuMy4gU29tZSBzbWFsbGVyIGltcHJvdmVtZW50cy48L2xpPgo8bGk+VmVyc2lvbiAwLjIuIEZpcnN0IHB1YmxpYyByZWxlYXNlLjwvbGk+CjxsaT5WZXJzaW9uIDAuMS4gSW50ZXJuYWwgcmVsZWFzZS48L2xpPgo8L3VsPic7CiRsYW5nWydoZWxwJ10gPSAnPGgzPldoYXQgRG9lcyBUaGlzIERvPzwvaDM+CjxwPicuJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10uJzwvcD4KPGgzPkhvdyBkbyBJIGNvbmZpZ3VyZSBpdD88L2gzPgo8cD4oYSkgRXhlY3V0ZSBhIFBIUC1leHBvcnQgZnJvbSA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5lc3RhdGUub3JnL2ltbW90b29sLyIgdGFyZ2V0PSJibGFuayI+T3BlbkVzdGF0ZS1JbW1vVG9vbDwvYT4gdG8gdGhlIHdlYnNwYWNlLCB3aGVyZSBDTVNtcyBpcyBpbnN0YWxsZWQuPC9wPgo8cD4oYikgTG9nIGluIHRvIENNU21zLWFkbWluaXN0cmF0aW9uIGFuZCBvcGVuIFwnRXh0ZW5zaW9uc1wnICZyYXF1bzsgXCdPcGVuRXN0YXRlIFBIUC1XcmFwcGVyXCcgJnJhcXVvOyBcJ01vZHVsZSBQcmVmZXJlbmNlc1wnLiBFbnRlciBwYXRoIGFuZCBVUkwsIHRoYXQgcG9pbnRzIHRvIHlvdXIgZXhwb3J0ZWQgc2NyaXB0cy48L3A+CjxwPihjKSBJZiBwYXRoICZhbXA7IFVSTCBpcyBjb3JyZWN0bHkgY29uZmlndXJlZCwgaXMgc2hvd24gaW4gdGhlIFwnSW50ZWdyYXRpb25cJyB0YWIuPC9wPgoKPGgzPkhvdyBkbyBJIHVzZSBpdD88L2gzPgo8cD4oYSkgSW4gZ2VuZXJhbCwgdGhlIG1vZHVsZSBjYW4gYmUgcGxhY2VkIGluIGEgcGFnZSBvciB0ZW1wbGF0ZSB1c2luZyB0aGUgc21hcnR5IHRhZyAmIzEyMztPcGVuRXN0YXRlUGhwV3JhcHBlcn0uPC9wPgo8cD4oYikgVGhlIHdyYXBwaW5nIGNhbiBiZSBjb25maWd1cmVkIHdpdGggY2VydGFpbiBwYXJhbWV0ZXJzLiBMb2cgaW4gdG8gQ01TbXMtYWRtaW5pc3RyYXRpb24gYW5kIG9wZW4gXCdFeHRlbnNpb25zXCcgJnJhcXVvOyBcJ09wZW5Fc3RhdGUgUEhQLVdyYXBwZXJcJyAmcmFxdW87IFwnSW50ZWdyYXRpb25cJy4gVGhlcmUgeW91IGNhbiBmaW5kIGEgZm9ybSwgdG8gZ2VuZXJhdGUgcGFyYW1ldGVyaXplZCBzbWFydHkgdGFncy48L3A+Cgo8aDM+Q29weXJpZ2h0IGFuZCBMaWNlbnNlPC9oMz4KPHA+Q29weXJpZ2h0ICZjb3B5OyAyMDEwLCBBbmRyZWFzIFJ1ZG9scGggJmFtcDsgV2FsdGVyIFdhZ25lciA8YSBocmVmPSJtYWlsdG86aW5mb0BvcGVuaW5kZXguZGUiPiZsdDtpbmZvQG9wZW5pbmRleC5kZSZndDs8L2E+LiBBbGwgUmlnaHRzIEFyZSBSZXNlcnZlZC48L3A+CjxwPlRoaXMgbW9kdWxlIGhhcyBiZWVuIHJlbGVhc2VkIHVuZGVyIHRoZSA8YSBocmVmPSJ7bW9kdWxlX3VybH1ncGwtMy4wLXN0YW5kYWxvbmUuaHRtbCI+R05VIFB1YmxpYyBMaWNlbnNlIHYzPC9hPi4gWW91IG11c3QgYWdyZWUgdG8gdGhpcyBsaWNlbnNlIGJlZm9yZSB1c2luZyB0aGUgbW9kdWxlLjwvcD4KJzsKCi8vIE1lbGR1bmdlbgokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdPcGVuRXN0YXRlIFBIUC1XcmFwcGVyIHdhcyBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkISBQbGVhc2UgY29uc2lkZXIgdG8gY29uZmlndXJlIHRoaXMgbW9kdWxlLic7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnT3BlbkVzdGF0ZSBQSFAtV3JhcHBlciB3YXMgc3VjY2Vzc2Z1bGx5IHVuaW5zdGFsbGVkISc7CiRsYW5nWydyZWFsbHlfdW5pbnN0YWxsJ10gPSAnUmVhbGx5PyBZb3VcJ3JlIHN1cmUgeW91IHdhbnQgdG8gdW5pbnN0YWxsIHRoaXMgbW9kdWxlPyc7CiRsYW5nWyd1bmluc3RhbGxlZCddID0gJ01vZHVsZSBVbmluc3RhbGxlZC4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHZlcnNpb24gJXMgaW5zdGFsbGVkLic7CiRsYW5nWyd1cGdyYWRlZCddID0gJ01vZHVsZSB1cGdyYWRlZCB0byB2ZXJzaW9uICVzLic7CiRsYW5nWydwcmVmc3VwZGF0ZWQnXSA9ICdNb2R1bGUgcHJlZmVyZW5jZXMgdXBkYXRlZC4nOwokbGFuZ1snc3VibWl0J10gPSAnU2F2ZSc7CiRsYW5nWydlcnJvciddID0gJ0Vycm9yISc7CiRsYW5nWydyZWJ1aWxkJ10gPSAnUmVidWlsZCc7CgovLyBHZW5lcmFsIEluZm8KJGxhbmdbJ3RpdGxlX2dlbmVyYWwnXSA9ICdHZW5lcmFsIEluZm8nOwokbGFuZ1sndGl0bGVfYWJvdXQnXSA9ICdBYm91dCB0aGlzIG1vZHVsZSc7CiRsYW5nWyd0aXRsZV9saWNlbnNlJ10gPSAnTGljZW5zZSBBZ3JlZW1lbnQnOwokbGFuZ1sndGl0bGVfYXV0aG9ycyddID0gJ0F1dGhvcnMgLyBEZXZlbG9wZXJzJzsKJGxhbmdbJ3RpdGxlX3N1cHBvcnQnXSA9ICdTdXBwb3J0IGZ1cnRoZXIgZGV2ZWxvcG1lbnQnOwoKLy8gUHJlZmVyZW5jZXMKJGxhbmdbJ3RpdGxlX21vZF9wcmVmcyddID0gJ01vZHVsZSBQcmVmZXJlbmNlcyc7CiRsYW5nWyd0aXRsZV93cmFwX3BhdGgnXSA9ICdTY3JpcHQgUGF0aCc7CiRsYW5nWyd0aXRsZV93cmFwX3BhdGhfaGVscCddID0gJ0VudGVyIHRoZSBwYXRoIG9uIHlvdXIgc2VydmVyLCB0aGF0IHBvaW50cyB0byB0aGUgZXhwb3J0ZWQgc2NyaXB0cy4nOwokbGFuZ1sndGl0bGVfd3JhcF91cmwnXSA9ICdTY3JpcHQgVVJMJzsKJGxhbmdbJ3RpdGxlX3dyYXBfdXJsX2hlbHAnXSA9ICdFbnRlciB0aGUgVVJMIHRvIHlvdXIgd2Vic2l0ZSwgdGhhdCBwb2ludHMgdG8gdGhlIGV4cG9ydGVkIHNjcmlwdHMuJzsKCi8vIEludGVncmF0aW9uCiRsYW5nWyd0aXRsZV9tb2RfaW50ZWdyYXRpb24nXSA9ICdJbnRlZ3JhdGlvbic7CiRsYW5nWyd0aXRsZV93cmFwX3Rlc3QnXSA9ICdTY3JpcHQgVGVzdCc7CiRsYW5nWyd0aXRsZV93cmFwX3Rlc3Rfc3VjY2VzcyddID0gJ1RoZSBzY3JpcHRzIGFyZSBjb25maWd1cmVkIGNvcnJlY3RseS4nOwokbGFuZ1sndGl0bGVfd3JhcF90ZXN0X2Vycm9yJ10gPSAnVGhlIHNjcmlwdHMgYXJlIE5PVCBjb25maWd1cmVkIGNvcnJlY3RseS4nOwokbGFuZ1sndGl0bGVfd3JhcF90YWcnXSA9ICdHZW5lcmF0ZSBhIENNU21zLVRhZyc7CiRsYW5nWyd0aXRsZV93cmFwX3RhZ19oZWxwJ10gPSAnQ29weSAmYW1wOyBwYXN0ZSB0aGUgZ2VuZXJhdGVkIGNvZGUgZXZlcnl3aGVyZSBpbnRvIHlvdXIgd2Vic2l0ZS4nOwokbGFuZ1sndGl0bGVfd3JhcF9saXN0aW5nJ10gPSAnUHJvcGVydHkgTGlzdGluZyc7CiRsYW5nWyd0aXRsZV93cmFwX3RhZ192aWV3J10gPSAnVmlldyc7CiRsYW5nWyd0aXRsZV93cmFwX3RhZ19tb2RlJ10gPSAnTW9kZSc7CiRsYW5nWyd0aXRsZV93cmFwX3RhZ19sYW5nJ10gPSAnTGFuZ3VhZ2UnOwokbGFuZ1sndGl0bGVfd3JhcF90YWdfb3JkZXInXSA9ICdPcmRlcmluZyc7CiRsYW5nWyd0aXRsZV93cmFwX3RhZ19maWx0ZXInXSA9ICdGaWx0ZXJzJzsKJGxhbmdbJ3RpdGxlX3dyYXBfcHJvcGVydHknXSA9ICdQcm9wZXJ0eSBEZXRhaWxzJzsKJGxhbmdbJ3RpdGxlX3dyYXBfdGFnX3Byb3BlcnR5J10gPSAnUHJvcGVydHktSUQnOwoKLy8gSW50ZWdyYXRpb24sIHZpZXcKJGxhbmdbJ3ZpZXdfaW5kZXgnXSA9ICdTdW1tYXJ5JzsKJGxhbmdbJ3ZpZXdfZmF2J10gPSAnRmF2b3VyaXRlcyc7CiRsYW5nWyd2aWV3X2RldGFpbHMnXSA9ICdEZXRhaWxzJzsKJGxhbmdbJ3ZpZXdfdGV4dHMnXSA9ICdUZXh0cyc7CiRsYW5nWyd2aWV3X2dhbGxlcnknXSA9ICdHYWxsZXJ5JzsKJGxhbmdbJ3ZpZXdfY29udGFjdCddID0gJ0NvbnRhY3QnOwokbGFuZ1sndmlld190ZXJtcyddID0gJ1Rlcm1zJzsKCi8vIEludGVncmF0aW9uLCBtb2RlCiRsYW5nWydtb2RlX2VudHJ5J10gPSAnVGFidWxhciBtb2RlJzsKJGxhbmdbJ21vZGVfZ2FsbGVyeSddID0gJ0dhbGxlcnkgbW9kZSc7CgovLyBJbnRlZ3JhdGlvbiwgb3JkZXIKJGxhbmdbJ29yZGVyX2FzYyddID0gJ0FzY2VuZGluZyc7CiRsYW5nWydvcmRlcl9kZXNjJ10gPSAnRGVzY2VuZGluZyc7CgovLyBJbnRlZ3JhdGlvbiwgZXJyb3JzCiRsYW5nWydlcnJvcl9pbnZhbGlkX3BhdGgnXSA9ICdQbGVhc2UgZW50ZXIgYSB2YWxpZCBzZXJ2ZXItcGF0aCEnOwokbGFuZ1snZXJyb3JfZmlsZV9ub3RfZm91bmQnXSA9ICdUaGUgcmVxdWlyZWQgZmlsZSBcJyVzXCcgd2FzIG5vdCBpbiB0aGUgc2VydmVyLXBhdGghJzsKJGxhbmdbJ2Vycm9yX3ZlcnNpb25fbm90X2ZvdW5kJ10gPSAnVGhlIHNjcmlwdC12ZXJzaW9uIHdhcyBub3QgZm91bmQhJzsKJGxhbmdbJ2Vycm9yX3VwZGF0ZV9pc19ydW5uaW5nJ10gPSAnPGgzPlRoZSBwcm9wZXJ0aWVzIGFyZSBjdXJyZW50bHkgdXBkYXRlZCE8L2gzPjxwPlBsZWFzZSByZXZpc2l0IHRoaXMgcGFnZSBhZnRlciBzb21lIG1pbnV0ZXMuPC9wPic7Cj8+]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFBIUC1XcmFwcGVyIGbDvHIgQ01TbXMuCiAqIEluc3RhbGxhdGlvbiBkZXMgTW9kdWxzLgogKiAkSWQ6IG1ldGhvZC5pbnN0YWxsLnBocCA4OTcgMjAxMS0wNi0xNSAyMzo1NDo1OFogYW5keSAkCiAqCiAqIEBhdXRob3IgQW5kcmVhcyBSdWRvbHBoICYgV2FsdGVyIFdhZ25lcgogKiBAY29weXJpZ2h0IDIwMDktMjAxMSwgT3BlbkVzdGF0ZS5vcmcKICogQGxpY2Vuc2UgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0CiAqLwoKaWYgKCFpc3NldCgkZ0NtcykpIGV4aXQ7CgovLyBjcmVhdGUgcHJlZmVyZW5jZXMKZ2xvYmFsICRjb25maWc7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd3cmFwX3BhdGgnLCAkY29uZmlnWydyb290X3BhdGgnXSAuICcvaW1tb3Rvb2xfZXhwb3J0Jyk7CiR0aGlzLT5TZXRQcmVmZXJlbmNlKCd3cmFwX3VybCcsICRjb25maWdbJ3Jvb3RfdXJsJ10gLiAnL2ltbW90b29sX2V4cG9ydCcpOwoKLy8gcHV0IG1lbnRpb24gaW50byB0aGUgYWRtaW4gbG9nCiR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygnaW5zdGFsbGVkJywgJHRoaXMtPkdldFZlcnNpb24oKSkgKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFBIUC1XcmFwcGVyIGbDvHIgQ01TbXMuCiAqIERlaW5zdGFsbGF0aW9uIGRlcyBNb2R1bHMuCiAqICRJZDogbWV0aG9kLnVuaW5zdGFsbC5waHAgODk3IDIwMTEtMDYtMTUgMjM6NTQ6NThaIGFuZHkgJAogKgogKiBAYXV0aG9yIEFuZHJlYXMgUnVkb2xwaCAmIFdhbHRlciBXYWduZXIKICogQGNvcHlyaWdodCAyMDA5LTIwMTEsIE9wZW5Fc3RhdGUub3JnCiAqIEBsaWNlbnNlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dAogKi8KCmlmICghaXNzZXQoJGdDbXMpKSBleGl0OwoKLy8gcmVtb3ZlIHRoZSBwcmVmZXJlbmNlCiR0aGlzLT5SZW1vdmVQcmVmZXJlbmNlKCd3cmFwX3BhdGgnKTsKJHRoaXMtPlJlbW92ZVByZWZlcmVuY2UoJ3dyYXBfdXJsJyk7CgovLyByZW1vdmUgdGhlIGV2ZW50CiR0aGlzLT5BdWRpdCggMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkdGhpcy0+TGFuZygndW5pbnN0YWxsZWQnKSk7Cj8+]]></data>
	</file>
	<file>
	  <filename>/method.upgrade.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFBIUC1XcmFwcGVyIGbDvHIgQ01TbXMuCiAqIEFrdHVhbGlzaWVydW5nIGRlcyBNb2R1bHMuCiAqICRJZDogbWV0aG9kLnVwZ3JhZGUucGhwIDg5NyAyMDExLTA2LTE1IDIzOjU0OjU4WiBhbmR5ICQKICoKICogQGF1dGhvciBBbmRyZWFzIFJ1ZG9scGggJiBXYWx0ZXIgV2FnbmVyCiAqIEBjb3B5cmlnaHQgMjAwOS0yMDExLCBPcGVuRXN0YXRlLm9yZwogKiBAbGljZW5zZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQKICovCgppZiAoIWlzc2V0KCRnQ21zKSkgZXhpdDsKCiRjdXJyZW50X3ZlcnNpb24gPSAkb2xkdmVyc2lvbjsKc3dpdGNoKCRjdXJyZW50X3ZlcnNpb24pIHsKICBjYXNlICIwLjIiOgogIC8vZG8gbWFnaWMKICBjYXNlICIwLjMiOgogIC8vYW5kIHRoaXMgaXMgaGVyZSBmb3IgdGhlIG5leHQgdmVyc2lvbgogIGNhc2UgIjAuNCI6CiAgY2FzZSAiMC41IjoKICBjYXNlICIwLjYiOgogIGNhc2UgIjAuNyI6CiAgY2FzZSAiMC44IjoKICBjYXNlICIwLjkiOgp9CgovLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKJHRoaXMtPkF1ZGl0KCAwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCd1cGdyYWRlZCcsICR0aGlzLT5HZXRWZXJzaW9uKCkpKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/OpenEstatePhpWrapper.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFBIUC1XcmFwcGVyIGbDvHIgQ01TbXMuCiAqIE1vZHVsLUtsYXNzZSwgc2llaGUgaHR0cDovL3d3dy5jbXNtYWRlc2ltcGxlLm9yZy9hcGkvY2xhc3NfY21zX21vZHVsZS5odG1sCiAqICRJZDogT3BlbkVzdGF0ZVBocFdyYXBwZXIubW9kdWxlLnBocCAxMTExIDIwMTEtMTAtMjEgMTk6MDk6NThaIGFuZHkgJAogKgogKiBAYXV0aG9yIEFuZHJlYXMgUnVkb2xwaCAmIFdhbHRlciBXYWduZXIKICogQGNvcHlyaWdodCAyMDA5LTIwMTEsIE9wZW5Fc3RhdGUub3JnCiAqIEBsaWNlbnNlIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dAogKi8KCi8qKgogKiBNb2R1bC4KICoKICogQGF1dGhvciBBbmRyZWFzIFJ1ZG9scGggJiBXYWx0ZXIgV2FnbmVyCiAqIEB2ZXJzaW9uIDAuMwogKiBAbGljZW5zZSBHUEwzCiAqKi8KY2xhc3MgT3BlbkVzdGF0ZVBocFdyYXBwZXIgZXh0ZW5kcyBDTVNNb2R1bGUgewoKICAvKioKICAgKiBHZXROYW1lKCkKICAgKiBtdXN0IHJldHVybiB0aGUgZXhhY3QgY2xhc3MgbmFtZSBvZiB0aGUgbW9kdWxlLgogICAqIElmIHRoZXNlIGRvIG5vdCBtYXRjaCwgYmFkIHRoaW5ncyBoYXBwZW4uCiAgICoKICAgKiBUaGlzIGlzIHRoZSBuYW1lIHRoYXQncyBzaG93biBpbiB0aGUgbWFpbiBNb2R1bGVzCiAgICogcGFnZSBpbiB0aGUgQWRtaW4uCiAgICoKICAgKiBJZiB5b3Ugd2FudCB0byBiZSBzYWZlLCB5b3UgY2FuIGp1c3QgcmVwbGFjZSB0aGUgYm9keQogICAqIG9mIHRoaXMgZnVuY3Rpb24gd2l0aDoKICAgKiByZXR1cm4gZ2V0X2NsYXNzKCR0aGlzKTsKICAgKiBAcmV0dXJuIHN0cmluZyBjbGFzcyBuYW1lCiAgICovCiAgZnVuY3Rpb24gR2V0TmFtZSgpIHsKICAgIHJldHVybiAnT3BlbkVzdGF0ZVBocFdyYXBwZXInOwogIH0KCiAgLyoqCiAgICogR2V0RnJpZW5kbHlOYW1lKCkKICAgKiBUaGlzIGNhbiByZXR1cm4gYW55IHN0cmluZywgcHJlZmVyYWJseSBhIGxvY2FsaXplZCBuYW1lCiAgICogb2YgdGhlIG1vZHVsZS4gVGhpcyBpcyB0aGUgbmFtZSB0aGF0J3Mgc2hvd24gaW4gdGhlCiAgICogQWRtaW4gTWVudXMgYW5kIHNlY3Rpb24gcGFnZXMgKGlmIHRoZSBtb2R1bGUgaGFzIGFuIGFkbWluCiAgICogY29tcG9uZW50KS4KICAgKgogICAqIFNlZSB0aGUgbm90ZSBvbiBsb2NhbGl6YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuCiAgICogQHJldHVybiBzdHJpbmcgRnJpZW5kbHkgbmFtZSBmb3IgdGhlIG1vZHVsZQogICAqLwogIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyk7CiAgfQoKCiAgLyoqCiAgICogR2V0VmVyc2lvbigpCiAgICogVGhpcyBjYW4gcmV0dXJuIGFueSBzdHJpbmcsIHByZWZlcmFibHkgYSBudW1iZXIgb3IKICAgKiBzb21ldGhpbmcgdGhhdCBtYWtlcyBzZW5zZSBmb3IgZGVzaWduYXRpbmcgYSB2ZXJzaW9uLgogICAqIFRoZSBDTVMgd2lsbCB1c2UgdGhpcyB0byBpZGVudGlmeSB3aGV0aGVyIG9yIG5vdAogICAqIHRoZSBpbnN0YWxsZWQgdmVyc2lvbiBvZiB0aGUgbW9kdWxlIGlzIGN1cnJlbnQsIGFuZAogICAqIHRoZSBtb2R1bGUgd2lsbCB1c2UgaXQgdG8gZmlndXJlIG91dCBob3cgdG8gdXBncmFkZQogICAqIGl0c2VsZiBpZiByZXF1ZXN0ZWQuCiAgICogQHJldHVybiBzdHJpbmcgdmVyc2lvbiBudW1iZXIgKGNhbiBiZSBzb21ldGhpbmcgbGlrZSAxLjRyYzEpCiAgICovCiAgZnVuY3Rpb24gR2V0VmVyc2lvbigpIHsKICAgIHJldHVybiAnMC40LjInOwogIH0KCiAgLyoqCiAgICogR2V0SGVscCgpCiAgICogVGhpcyByZXR1cm5zIEhUTUwgaW5mb3JtYXRpb24gb24gdGhlIG1vZHVsZS4KICAgKiBUeXBpY2FsbHksIHlvdSdsbCB3YW50IHRvIGluY2x1ZGUgaW5mb3JtYXRpb24gb24gaG93IHRvCiAgICogdXNlIHRoZSBtb2R1bGUuCiAgICoKICAgKiBTZWUgdGhlIG5vdGUgb24gbG9jYWxpemF0aW9uIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLgogICAqIEByZXR1cm4gc3RyaW5nIEhlbHAgZm9yIHRoaXMgbW9kdWxlCiAgICovCiAgZnVuY3Rpb24gR2V0SGVscCgpIHsKICAgICR0eHQgPSAkdGhpcy0+TGFuZygnaGVscCcpOwogICAgcmV0dXJuIHN0cl9yZXBsYWNlKCd7bW9kdWxlX3VybH0nLCAkR0xPQkFMU1snY29uZmlnJ11bJ3Jvb3RfdXJsJ10gLiAnL21vZHVsZXMvJyAuICR0aGlzLT5HZXROYW1lKCkgLiAnLycsICR0eHQpOwogIH0KCiAgLyoqCiAgICogR2V0QXV0aG9yKCkKICAgKiBUaGlzIHJldHVybnMgYSBzdHJpbmcgdGhhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIE1vZHVsZQogICAqIEFkbWluIGlmIHlvdSBjbGljayBvbiB0aGUgIkFib3V0IiBsaW5rLgogICAqIEByZXR1cm4gc3RyaW5nIEF1dGhvciBuYW1lCiAgICovCiAgZnVuY3Rpb24gR2V0QXV0aG9yKCkgewogICAgcmV0dXJuICdBbmRyZWFzIFJ1ZG9scGgsIFdhbHRlciBXYWduZXInOwogIH0KCiAgLyoqCiAgICogR2V0QXV0aG9yRW1haWwoKQogICAqIFRoaXMgcmV0dXJucyBhIHN0cmluZyB0aGF0IGlzIHByZXNlbnRlZCBpbiB0aGUgTW9kdWxlCiAgICogQWRtaW4gaWYgeW91IGNsaWNrIG9uIHRoZSAiQWJvdXQiIGxpbmsuIEl0IGhlbHBzIHVzZXJzCiAgICogb2YgeW91ciBtb2R1bGUgZ2V0IGluIHRvdWNoIHdpdGggeW91IHRvIHNlbmQgYnVnIHJlcG9ydHMsCiAgICogcXVlc3Rpb25zLCBjYXNlcyBvZiBiZWVyLCBhbmQvb3IgbGFyZ2Ugc3VtcyBvZiBtb25leS4KICAgKiBAcmV0dXJuIHN0cmluZyBBdXRob3JzIGVtYWlsCiAgICovCiAgZnVuY3Rpb24gR2V0QXV0aG9yRW1haWwoKSB7CiAgICByZXR1cm4gJ2luZm9Ab3BlbmluZGV4LmRlJzsKICB9CgogIC8qKgogICAqIEdldENoYW5nZUxvZygpCiAgICogVGhpcyByZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgcHJlc2VudGVkIGluIHRoZSBtb2R1bGUKICAgKiBBZG1pbiBpZiB5b3UgY2xpY2sgb24gdGhlIEFib3V0IGxpbmsuIEl0IGhlbHBzIHVzZXJzCiAgICogZmlndXJlIG91dCB3aGF0J3MgY2hhbmdlZCBiZXR3ZWVuIHJlbGVhc2VzLgogICAqIFNlZSB0aGUgbm90ZSBvbiBsb2NhbGl6YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuCiAgICogQHJldHVybiBzdHJpbmcgQ2hhbmdlTG9nIGZvciB0aGlzIG1vZHVsZQogICAqLwogIGZ1bmN0aW9uIEdldENoYW5nZUxvZygpIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnY2hhbmdlbG9nJyk7CiAgfQoKICBmdW5jdGlvbiBHZXRMaWNlbnNlKCkgewogICAgcmV0dXJuICdHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDMnOwogIH0KCiAgLyoqCiAgICogSXNQbHVnaW5Nb2R1bGUoKQogICAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0cnVlIG9yIGZhbHNlLCBkZXBlbmRpbmcgdXBvbgogICAqIHdoZXRoZXIgdXNlcnMgY2FuIGluY2x1ZGUgdGhlIG1vZHVsZSBpbiBhIHBhZ2Ugb3IKICAgKiB0ZW1wbGF0ZSB1c2luZyBhIHNtYXJ0eSB0YWcgb2YgdGhlIGZvcm0KICAgKiB7U2tlbGV0b24gcGFyYW0xPXZhbC4uLn0KICAgKgogICAqIElmIHlvdXIgbW9kdWxlIGRvZXMgbm90IGdldCBpbmNsdWRlZCBpbiBwYWdlcyBvcgogICAqIHRlbXBsYXRlcywgcmV0dXJuICJmYWxzZSIgaGVyZS4KICAgKiBAcmV0dXJuIGJvb2wgVHJ1ZSBpZiB0aGlzIG1vZHVsZSBjYW4gYmUgaW5jbHVkZWQgaW4gcGFnZSBhbmQgb3IgdGVtcGxhdGUKICAgKi8KICBmdW5jdGlvbiBJc1BsdWdpbk1vZHVsZSgpIHsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLyoqCiAgICogSGFzQWRtaW4oKQogICAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIGJvb2xlYW4gdmFsdWUsIGRlcGVuZGluZyBvbgogICAqIHdoZXRoZXIgeW91ciBtb2R1bGUgYWRkcyBhbnl0aGluZyB0byB0aGUgQWRtaW4gYXJlYSBvZgogICAqIHRoZSBzaXRlLiBGb3IgdGhlIHJlc3Qgb2YgdGhlc2UgY29tbWVudHMsIEknbGwgYmUgY2FsbGluZwogICAqIHRoZSBhZG1pbiBwYXJ0IG9mIHlvdXIgbW9kdWxlIHRoZSAiQWRtaW4gUGFuZWwiIGZvcgogICAqIHdhbnQgb2YgYSBiZXR0ZXIgdGVybS4KICAgKiBAcmV0dXJuIGJvb2wgVHJ1ZSBpZiB0aGlzIG1vZHVsZSBoYXMgYWRtaW4gYXJlYQogICAqLwogIGZ1bmN0aW9uIEhhc0FkbWluKCkgewogICAgcmV0dXJuIHRydWU7CiAgfQoKICAvKioKICAgKiBHZXRBZG1pblNlY3Rpb24oKQogICAqIElmIHlvdXIgbW9kdWxlIGhhcyBhbiBBZG1pbiBQYW5lbCwgeW91IGNhbiBzcGVjaWZ5CiAgICogd2hpY2ggQWRtaW4gU2VjdGlvbiAob3IgdG9wLWxldmVsIEFkbWluIE1lbnUpIGl0IHNob3dzCiAgICogdXAgaW4uIFRoaXMgbWV0aG9kIHJldHVybnMgYSBzdHJpbmcgdG8gc3BlY2lmeSB0aGF0CiAgICogc2VjdGlvbi4gVmFsaWQgcmV0dXJuIHZhbHVlcyBhcmU6CiAgICoKICAgKiBtYWluICAgICAgICAtIHRoZSBNYWluIG1lbnUgdGFiLgogICAqIGNvbnRlbnQgICAgIC0gdGhlIENvbnRlbnQgbWVudQogICAqIGxheW91dCAgICAgIC0gdGhlIExheW91dCBtZW51CiAgICogdXNlcnNncm91cHMgLSB0aGUgVXNlcnMgYW5kIEdyb3VwcyBtZW51CiAgICogZXh0ZW5zaW9ucyAgLSB0aGUgRXh0ZW5zaW9ucyBtZW51ICh0aGlzIGlzIHRoZSBkZWZhdWx0KQogICAqIHNpdGVhZG1pbiAgIC0gdGhlIFNpdGUgQWRtaW4gbWVudQogICAqIHZpZXdzaXRlICAgIC0gdGhlIFZpZXcgU2l0ZSBtZW51IHRhYgogICAqIGxvZ291dCAgICAgIC0gdGhlIExvZ291dCBtZW51IHRhYgogICAqCiAgICogTm90ZSB0aGF0IGlmIHlvdSBwbGFjZSB5b3VyIG1vZHVsZSBpbiB0aGUgbWFpbiwKICAgKiB2aWV3c2l0ZSwgb3IgbG9nb3V0IHNlY3Rpb25zLCBpdCB3aWxsIHNob3cgdXAgaW4gdGhlCiAgICogbWVudXMsIGJ1dCB3aWxsIG5vdCBiZSB2aXNpYmxlIGluIGFueSB0b3AtbGV2ZWwKICAgKiBzZWN0aW9uIHBhZ2VzLgogICAqIEByZXR1cm4gc3RyaW5nIFdoaWNoIGFkbWluIHNlY3Rpb24gdGhpcyBtb2R1bGUgYmVsb25ncyB0bwogICAqLwogIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpIHsKICAgIHJldHVybiAnZXh0ZW5zaW9ucyc7CiAgfQoKICAvKioKICAgKiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkKICAgKiBJZiB5b3VyIG1vZHVsZSBkb2VzIGhhdmUgYW4gQWRtaW4gUGFuZWwsIHlvdQogICAqIGNhbiBoYXZlIGl0IHJldHVybiBhIGRlc2NyaXB0aW9uIHN0cmluZyB0aGF0IGdldHMgc2hvd24KICAgKiBpbiB0aGUgQWRtaW4gU2VjdGlvbiBwYWdlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZS4KICAgKgogICAqIFNlZSB0aGUgbm90ZSBvbiBsb2NhbGl6YXRpb24gYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUuCiAgICogQHJldHVybiBzdHJpbmcgTW9kdWxlIGRlc2NyaXB0aW9uCiAgICovCiAgZnVuY3Rpb24gR2V0QWRtaW5EZXNjcmlwdGlvbigpIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKTsKICB9CgogIC8qKgogICAqIFZpc2libGVUb0FkbWluVXNlcigpCiAgICogSWYgeW91ciBtb2R1bGUgZG9lcyBoYXZlIGFuIEFkbWluIFBhbmVsLCB5b3UKICAgKiBjYW4gY29udHJvbCB3aGV0aGVyIG9yIG5vdCBpdCdzIGRpc3BsYXllZCBieSB0aGUgYm9vbGVhbgogICAqIHRoYXQgaXMgcmV0dXJuZWQgYnkgdGhpcyBtZXRob2QuIFRoaXMgaXMgcHJpbWFyaWx5IHVzZWQKICAgKiB0byBoaWRlIG1vZHVsZXMgZnJvbSBhZG1pbnMgd2hvIGxhY2sgcGVybWlzc2lvbiB0byB1c2UKICAgKiB0aGVtLgogICAqIEluIHRoaXMgY2FzZSwgdGhlIG1vZHVsZSB3aWxsIG9ubHkgYmUgdmlzaWJsZSB0byBhZG1pbnMKICAgKiB3aG8gaGF2ZSAiVXNlIFNrZWxldG9uIiBwZXJtaXNzaW9ucy4KICAgKiBAcmV0dXJuIGJvb2wgVHJ1ZSBpZiB0aGlzIG1vZHVsZSBpcyBzaG93biB0byBjdXJyZW50IHVzZXIKICAgKi8KICBmdW5jdGlvbiBWaXNpYmxlVG9BZG1pblVzZXIoKSB7CiAgICAvL3JldHVybiAkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgT3BlbkVzdGF0ZVBocFdyYXBwZXInKTsKICAgIHJldHVybiB0cnVlOwogIH0KCiAgLyoqCiAgICogR2V0RGFzaGJvYXJkT3V0cHV0KCkKICAgKiBBIGNhcGFiaWxpdHkgb2YgbW9kdWxlcyB0aGF0IGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkIGluIENNU01TIDEuNi54CiAgICogaXMgdG8gb3V0cHV0IG5vdGljZXMgdG8gdGhlIGluaXRpYWwgRGFzaGJvYXJkIHBhZ2Ugb2YgdGhlIEFkbWluIGFyZWEuCiAgICogWW91IGNvdWxkIHVzZSB0aGlzIHRvIHBvc3QgYW55IGtpbmQgb2Ygbm90aWZpY2F0aW9uLgogICAqCiAgICogVGhpcyBleGFtcGxlIHBvc3RzIHRoZSBudW1iZXIgb2YgZGF0YWJhc2UgcmVjb3JkcyB0aGF0CiAgICogaGF2ZSBiZWVuIGFkZGVkIHZpYSB0aGUgbW9kdWxlLgogICAqCiAgICogQHJldHVybiBzdHJpbmcgZGFzaGJvYXJkIG91dHB1dAogICAqLwogIGZ1bmN0aW9uIEdldERhc2hib2FyZE91dHB1dCgpIHsKICAgIC8qZ2xvYmFsICRnQ21zOwogICAgJGRiID0gJiRnQ21zLT5HZXREYigpOwogICAgJHJjb3VudCA9ICRkYi0+R2V0T25lKCdzZWxlY3QgY291bnQoKikgZnJvbSAnLmNtc19kYl9wcmVmaXgoKS4nbW9kdWxlX3NrZWxldG9uJyk7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2Rhc2hfcmVjb3JkX2NvdW50JywkcmNvdW50KTsqLwogICAgcmV0dXJuICcnOwogIH0KCiAgLyoqCiAgICogSW4gdGhlIEFkbWluIEFyZWEsIHRoZXJlIGFyZSBub3RpY2VzIHdoaWNoIGNhbiBiZSBkaXNwbGF5ZWQgdG8gdGhlIGFkbWluIHVzZXIuCiAgICogVGhlc2UgdGVuZCB0byBiZSBmb3IgaGlnaC1wcmlvcml0eSBub3RpY2VzLCBsaWtlIHZlcnNpb24gdXBncmFkZXMsIHNlY3VyaXR5IGlzc3VlcywKICAgKiB1bi1jb25maWd1cmVkIG1vZHVsZXMsIGV0Yy4KICAgKiBUaGVzZSBub3RpY2VzIGFyZSBhc3NpZ25lZCBhIHByaW9yaXR5IGZyb20gMSB0byAzLCB3aXRoIDEgYmVpbmcgdGhlIGhpZ2hlc3QuCiAgICogKHByaW9yaXR5IGZpbHRlcmluZyBpcyBub3QgeWV0IHN1cHBvcnRlZCwgYnV0IHdpbGwgYmUpLgogICAqIE5vdGljZXMgc2hvdWxkIGJlIHVzZWQgdmVyeSBzcGFyaW5nbHksIGFzIGlmIHRoZXJlIGFyZSB0b28gbWFueSBhbGVydHMsIHRoZSB1c2VyCiAgICogd2lsbCBzdG9wIHBheWluZyBhdHRlbnRpb24uCiAgICogVGhhdCBiZWluZyBzYWlkLCB0aGlzIGV4YW1wbGUgd2lsbCBwb3N0IGFuIGFsZXJ0IHVudGlsIHNvbWVvbmUgYWRkcyBhIHJlY29yZHMKICAgKiB1c2luZyB0aGUgU2tlbGV0b24gTW9kdWxlLgogICAqCiAgICogQHJldHVybnMgYSBzdGRDbGFzcyBvYmplY3Qgd2l0aCB0d28gcHJvcGVydGllcy4uLi4gcHJpb3JpdHkgKDEtPjMpLi4uIGFuZAogICAqIGh0bWwsIHdoaWNoIGluZGljYXRlcyB0aGUgdGV4dCB0byBkaXNwbGF5IGZvciB0aGUgTm90aWZpY2F0aW9uLgogICAqLwogIGZ1bmN0aW9uIEdldE5vdGlmaWNhdGlvbk91dHB1dCgkcHJpb3JpdHk9MikgewogICAgLypnbG9iYWwgJGdDbXM7CiAgICAkZGIgPSAmJGdDbXMtPkdldERiKCk7CiAgICAkcmNvdW50ID0gJGRiLT5HZXRPbmUoJ3NlbGVjdCBjb3VudCgqKSBmcm9tICcuY21zX2RiX3ByZWZpeCgpLidtb2R1bGVfc2tlbGV0b24nKTsKICAgIGlmICgkcHJpb3JpdHkgPCA0ICYmICRyY291bnQgPT0gMCApCiAgICB7CiAgICAgICRyZXQgPSBuZXcgc3RkQ2xhc3M7CiAgICAgICRyZXQtPnByaW9yaXR5ID0gMjsKICAgICAgJHJldC0+aHRtbD0kdGhpcy0+TGFuZygnYWxlcnRfbm9fcmVjb3JkcycpOwogICAgICByZXR1cm4gJHJldDsKICAgIH0qLwogICAgcmV0dXJuICcnOwogIH0KCiAgLyoqCiAgICogR2V0RGVwZW5kZW5jaWVzKCkKICAgKiBZb3VyIG1vZHVsZSBtYXkgbmVlZCBhbm90aGVyIG1vZHVsZSB0byBhbHJlYWR5IGJlIGluc3RhbGxlZAogICAqIGJlZm9yZSB5b3UgY2FuIGluc3RhbGwgaXQuCiAgICogVGhpcyBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2YgdGhvc2UgZGVwZW5kZW5jaWVzIGFuZAogICAqIG1pbmltdW0gdmVyc2lvbiBudW1iZXJzIHRoYXQgdGhpcyBtb2R1bGUgcmVxdWlyZXMuCiAgICoKICAgKiBJdCBzaG91bGQgcmV0dXJuIGFuIGhhc2gsIGVnLgogICAqIHJldHVybiBhcnJheSgnc29tZW1vZHVsZSc9PicxLjAnLCAnb3RoZXJtb2R1bGUnPT4nMS4xJyk7CiAgICogQHJldHVybiBoYXNoIEhhc2ggb2Ygb3RoZXIgbW9kdWxlcyB0aGlzIG1vZHVsZSBkZXBlbmRzIG9uCiAgICovCiAgZnVuY3Rpb24gR2V0RGVwZW5kZW5jaWVzKCkgewogICAgcmV0dXJuIGFycmF5KCk7CiAgfQoKICAvKioKICAgKiBNaW5pbXVtQ01TVmVyc2lvbigpCiAgICogWW91ciBtb2R1bGUgbWF5IHJlcXVpcmUgZnVuY3Rpb25zIG9yIG9iamVjdHMgZnJvbQogICAqIGEgc3BlY2lmaWMgdmVyc2lvbiBvZiBDTVMgTWFkZSBTaW1wbGUuCiAgICogRXZlciBzaW5jZSB2ZXJzaW9uIDAuMTEsIHlvdSBjYW4gc3BlY2lmeSB3aGljaCBtaW5pbXVtCiAgICogQ01TIE1TIHZlcnNpb24gaXMgcmVxdWlyZWQgZm9yIHlvdXIgbW9kdWxlLCB3aGljaCB3aWxsCiAgICogcHJldmVudCBpdCBmcm9tIGJlaW5nIGluc3RhbGxlZCBieSBhIHZlcnNpb24gb2YgQ01TIHRoYXQKICAgKiBjYW4ndCBydW4gaXQuCiAgICoKICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUKICAgKiBtaW5pbXVtIHZlcnNpb24gdGhhdCB0aGlzIG1vZHVsZSByZXF1aXJlcy4KICAgKiBAcmV0dXJuIHN0cmluZyBNaW5pbXVtIGNtcyB2ZXJzaW9uIHRoaXMgbW9kdWxlIHNob3VsZCB3b3JrIG9uCiAgICovCiAgZnVuY3Rpb24gTWluaW11bUNNU1ZlcnNpb24oKSB7CiAgICByZXR1cm4gIjEuMCI7CiAgfQoKICAvKioKICAgKiBNYXhpbXVtQ01TVmVyc2lvbigpCiAgICogWW91IG1heSB3YW50IHRvIHByZXZlbnQgcGVvcGxlIGZyb20gdXNpbmcgeW91ciBtb2R1bGUgaW4KICAgKiBmdXR1cmUgdmVyc2lvbnMgb2YgQ01TIE1hZGUgU2ltcGxlLCBlc3BlY2lhbGx5IGlmIHlvdQogICAqIHRoaW5rIEFQSSBmZWF0dXJlcyB5b3UgdXNlIG1heSBjaGFuZ2UgLS0gYWZ0ZXIgYWxsLCB5b3UKICAgKiBuZXZlciByZWFsbHkga25vdyBob3cgdGhlIENNUyBNUyBBUEkgY291bGQgZXZvbHZlLgogICAqCiAgICogU28sIHRvIHByZXZlbnQgcGVvcGxlIGZyb20gZmxvb2RpbmcgeW91IHdpdGggYnVnIHJlcG9ydHMKICAgKiB3aGVuIGEgbmV3IHZlcnNpb24gb2YgQ01TIE1TIGlzIHJlbGVhc2VkLCB5b3UgY2FuIHNpbXBseQogICAqIHJlc3RyaWN0IHRoZSB2ZXJzaW9uLiBUaGVuLCBvZiBjb3Vyc2UsIHRoZSBvbnVzIGlzIG9uIHlvdQogICAqIHRvIHJlbGVhc2UgYSBuZXcgdmVyc2lvbiBvZiB5b3VyIG1vZHVsZSB3aGVuIGEgbmV3IHZlcnNpb24KICAgKiBvZiB0aGUgQ01TIGlzIHJlbGVhc2VkLi4uCiAgICoKICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUKICAgKiBtYXhpbXVtIHZlcnNpb24gdGhhdCB0aGlzIG1vZHVsZSBzdXBwb3J0cy4KICAgKgogICAqIEl0IGNhbiBhbHNvIGJlIGEgbWFqb3IgcGFpbiBpZiB5b3UgZG9uJ3QgaGF2ZSB0aW1lIHRvCiAgICogdXBkYXRlIHlvdXIgbW9kdWxlcyBldmVyeSB0aW1lIGEgbmV3IHJlbGVhc2Ugb2YgQ01TTVMgY29tZXMKICAgKiBvdXQsIGhlbmNlIHRoaXMgaXMgY29tbWVudGVkIG91dCBoZXJlLgogICAqLwoKICAvKgogIGZ1bmN0aW9uIE1heGltdW1DTVNWZXJzaW9uKCkKICB7CiAgICByZXR1cm4gIjEuNSI7CiAgfQogICovCgogIC8qKgogICAqIFNldFBhcmFtZXRlcnMoKQogICAqIFRoaXMgZnVuY3Rpb24gc2VydmVzIGFzIGEgbW9kdWxlIGluaXRpYWxpemF0aW9uIGFyZWEuCiAgICogU3BlY2lmaWNhbGx5LCBpdCBlbmFibGVzIHlvdSB0bzoKICAgKiAxKSBTaW1wbGlmeSB5b3VyIG1vZHVsZSdzIHRhZyAoaWYgeW91J3JlIHdyaXRpbmcgYSBwbHVnLWluIG1vZHVsZSkKICAgKiAyKSBDcmVhdGUgbWFwcGluZ3MgZm9yIHlvdXIgbW9kdWxlIHdoZW4gdXNpbmcgIlByZXR0eSBVcmxzIi4KICAgKiAzKSBJbXBvc2Ugc2VjdXJpdHkgYnkgY29udHJvbGxpbmcgaW5jb21pbmcgcGFyYW1ldGVycwogICAqIDQpIFJlZ2lzdGVyIHRoZSBldmVudHMgeW91ciBtb2R1bGUgaGFuZGxlcwogICAqCiAgICogMS4gU2ltcGx5IG1vZHVsZSB0YWc6CiAgICogU2ltcGxlIQogICAqIENhbGxpbmcgUmVnaXN0ZXJNb2R1bGVQbHVnaW4gYWxsb3dzIHlvdSB0byB1c2UgdGhlIHRhZyB7U2tlbGV0b259IGluIHlvdXIKICAgKiB0ZW1wbGF0ZSBvciBwYWdlOyBvdGhlcndpc2UsIHlvdSB3b3VsZCBoYXZlIHRvIHVzZSB0aGUgbW9yZSBjdW1iZXJzb21lCiAgICogdGFnIHtjbXNfbW9kdWxlIG1vZHVsZT0nU2tlbGV0b24nfQogICAqCiAgICogMi4gUHJldHR5IFVSTFM6CiAgICogVHlwaWNhbGx5LCBtb2R1bGVzIGNyZWF0ZSBpbnRlcm5hbCBsaW5rcyB0aGF0IGhhdmUKICAgKiBiaWcgdWdseSBzdHJpbmdzIGFsb25nIHRoZSBsaW5lcyBvZjoKICAgKiBpbmRleC5waHA/bWFjdD1Nb2ROYW1lLGNudG50MDEsYWN0aW9uTmFtZSwwJmNudG50MDFwYXJhbTE9MSZjbnRudDAxcGFyYW0yPTImY250bnQwMXJldHVybmlkPTMKICAgKgogICAqIFlvdSBtaWdodCBwcmVmZXIgdGhlc2UgdG8gbG9vayBsaWtlOgogICAqIC9Nb2R1bGVGdW5jdGlvbi8yLzMKICAgKgogICAqIFRvIGRvIHRoaXMsIHlvdSBoYXZlIHRvIHJlZ2lzdGVyIHJvdXRlcyBhbmQgbWFwCiAgICogeW91ciBwYXJhbWV0ZXJzIGluIGEgd2F5IHRoYXQgdGhlIEFQSSB3aWxsIGJlIGFibGUKICAgKiB0byB1bmRlcnN0YW5kLgogICAqCiAgICogQWxzbyBub3RlIHRoYXQgYW55IGNhbGxzIHRvIENyZWF0ZUxpbmsgd2lsbCBuZWVkIHRvCiAgICogYmUgdXBkYXRlZCB0byBwYXNzIHRoZSBwcmV0dHkgdXJsIHBhcmFtZXRlci4KICAgKgogICAqIDMuIFNlY3VyaXR5OgogICAqIEJ5IHVzaW5nIHRoZSBSZXN0cmljdFVua25vd25QYXJhbXMgZnVuY3Rpb24sIHlvdXIgbW9kdWxlIHdpbGwgbm90CiAgICogcmVjZWl2ZSBhbnkgcGFyYW1ldGVycyBvdGhlciB0aGFuIHRoZSBvbmVzIHlvdSBkZWNsYXJlIGhlcmUuCiAgICogRnVydGhlcm1vcmUsIHRoZSBwYXJhbWV0ZXJzIHlvdXIgbW9kdWxlIGRvZXMgcmVjZWl2ZSB3aWxsIGJlIGZpbHRlcmVkCiAgICogYWNjb3JkaW5nIHRvIHRoZSBydWxlcyB5b3Ugc2V0IGhlcmUuCiAgICoKICAgKiA0LiBFdmVudCBIYW5kbGluZwogICAqIElmIHlvdXIgbW9kdWxlIGdlbmVyYXRlcyBldmVudHMsIHlvdSByZWdpc3RlciB0aGF0IGZhY3QgaW4geW91ciBpbnN0YWxsIG1ldGhvZAogICAqIChzZWUgbWV0aG9kLmluc3RhbGwucGhwIGZvciBhbiBleGFtcGxlIG9mIHRoaXMpLiBIb3dldmVyLCBpZiB5b3VyIG1vZHVsZSB3aWxsCiAgICogaGFuZGxlL3Byb2Nlc3MvY29uc3VtZSBldmVudHMgZ2VuZXJhdGVkIGJ5IHRoZSBDb3JlIG9yIG90aGVyIG1vZHVsZXMsIHlvdQogICAqIGNhbiByZWdpc3RlciB0aGF0IGluIHRoaXMgbWV0aG9kLgogICAqCiAgICovCgogIGZ1bmN0aW9uIFNldFBhcmFtZXRlcnMoKSB7CiAgICAvKgogICAgKiAxLiBTaW1wbHkgbW9kdWxlIHRhZwogICAgKiBUaGlzIG5leHQgbGluZSBhbGxvd3MgeW91IHRvIHVzZSB0aGUgdGFnIHtTa2VsZXRvbn0gaW4geW91ciB0ZW1wbGF0ZSBvciBwYWdlOyBvdGhlcndpc2UsCiAgICAqIHlvdSB3b3VsZCBoYXZlIHRvIHVzZSB0aGUgbW9yZSBjdW1iZXJzb21lIHRhZyB7Y21zX21vZHVsZSBtb2R1bGU9J1NrZWxldG9uJ30KICAgICovCiAgICAkdGhpcy0+UmVnaXN0ZXJNb2R1bGVQbHVnaW4oKTsKCiAgICAvKgogICAgKiAyLiBQcmV0dHkgVVJMUwogICAgKgoKICAgIEZvciBleGFtcGxlOgogICAgJHRoaXMtPlJlZ2lzdGVyUm91dGUoJy9za2VsZXRvblwvKD9QPG51bWVyaWNfcGFyYW1fbmFtZT5bMC05XSspXC8oP1A8c3RyaW5nX3BhcmFtX25hbWU+W2EtekEtWl0rKVwvKD9QPHJldHVybmlkPlswLTldKykkLycsCiAgICAgYXJyYXkoJ2FjdGlvbic9PidkZWZhdWx0JykpOwoKICAgIG5vdywgYW55IHVybCB0aGF0IGxvb2tzIGxpa2U6CiAgICAvc2tlbGV0b24vMy9mb28vNQogICAgd291bGQgY2FsbCB0aGUgZGVmYXVsdCBhY3Rpb24sIHdpdGg6CiAgICAkcGFyYW1zWydudW1lcmljX3BhcmFtX25hbWUnXSBzZXQgdG8gMwogICAgJHBhcmFtc1snc3RyaW5nX3BhcmFtX25hbWUnXSBzZXQgdG8gImZvbyIKICAgIGFuZCAkcmV0dXJuaWQgc2V0IHRvIDUKICAgICovCgogICAgLyoKICAgICogMy4gU2VjdXJpdHkKICAgICoKICAgICovCiAgICAvKgogICAgLy8gRG9uJ3QgYWxsb3cgcGFyYW1ldGVycyBvdGhlciB0aGFuIHRoZSBvbmVzIHlvdSd2ZSBleHBsaWNpdGx5IGRlZmluZWQKICAgICR0aGlzLT5SZXN0cmljdFVua25vd25QYXJhbXMoKTsKICAKICAgIC8vIHN5bnRheCBmb3IgY3JlYXRpbmcgYSBwYXJhbWV0ZXIgaXMgcGFyYW1ldGVyIG5hbWUsIGRlZmF1bHQgdmFsdWUsIGRlc2NyaXB0aW9uCiAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdza2VsZXRvbl9pZCcsIC0xLCAkdGhpcy0+TGFuZygnaGVscF9za2VsZXRvbl9pZCcpKTsKICAgIC8vIHNrZWxldG9uX2lkIG11c3QgYmUgYW4gaW50ZWdlcgogICAgJHRoaXMtPlNldFBhcmFtZXRlclR5cGUoJ3NrZWxldG9uX2lkJyxDTEVBTl9JTlQpOwoKICAgIC8vIG1vZHVsZV9tZXNzYWdlIG11c3QgYmUgYSBzdHJpbmcKICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ21vZHVsZV9tZXNzYWdlJywnJywkdGhpcy0+TGFuZygnaGVscF9tb2R1bGVfbWVzc2FnZScpKTsKICAgICR0aGlzLT5TZXRQYXJhbWV0ZXJUeXBlKCdtb2R1bGVfbWVzc2FnZScsQ0xFQU5fU1RSSU5HKTsKCiAgICAvLyBkZXNjcmlwdGlvbiBtdXN0IGJlIGEgc3RyaW5nCiAgICAkdGhpcy0+Q3JlYXRlUGFyYW1ldGVyKCdkZXNjcmlwdGlvbicsJycsJHRoaXMtPkxhbmcoJ2hlbHBfZGVzY3JpcHRpb24nKSk7CiAgICAkdGhpcy0+U2V0UGFyYW1ldGVyVHlwZSgnZGVzY3JpcHRpb24nLENMRUFOX1NUUklORyk7CiAgICAqLwoKICAgIC8qCiAgICAqIDQuIEV2ZW50IEhhbmRsaW5nCiAgICAqCiAgIAogICAgVHlwaWNhbCBleGFtcGxlOiBzcGVjaWZ5IHRoZSBvcmlnaW5hdG9yLCB0aGUgZXZlbnQgbmFtZSwgYW5kIHdoZXRoZXIgb3Igbm90CiAgICB0aGUgZXZlbnQgaXMgcmVtb3ZhYmxlICh1c2VkIGZvciBvbmUtdGltZSBldmVudHMpCgogICAgJHRoaXMtPkFkZEV2ZW50SGFuZGxlciggJ0NvcmUnLCAnQ29udGVudFBvc3RSZW5kZXInLCB0cnVlICk7CiAgICAqLwogIH0KCiAgLyoqCiAgICogR2V0RXZlbnREZXNjcmlwdGlvbigpCiAgICogSWYgeW91ciBtb2R1bGUgY2FuIGNyZWF0ZSBldmVudHMsIHlvdSB3aWxsIG5lZWQKICAgKiB0byBwcm92aWRlIHRoZSBBUEkgd2l0aCBkb2N1bWVudGF0aW9uIG9mIHdoYXQKICAgKiB0aGF0IGV2ZW50IGRvZXMuIFRoaXMgbWV0aG9kIHdyYXBzIHVwIGEgc2ltcGxlCiAgICogcmV0dXJuIG9mIHRoZSBsb2NhbGl6ZWQgZGVzY3JpcHRpb24uCiAgICogQHBhcmFtIHN0cmluZyBFdmVudG5hbWUKICAgKiBAcmV0dXJuIHN0cmluZyBEZXNjcmlwdGlvbiBmb3IgZXZlbnQKICAgKi8KICBmdW5jdGlvbiBHZXRFdmVudERlc2NyaXB0aW9uICggJGV2ZW50bmFtZSApIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygnZXZlbnRfaW5mb18nLiRldmVudG5hbWUgKTsKICB9CgogIC8qKgogICAqIEdldEV2ZW50SGVscCgpCiAgICogSWYgeW91ciBtb2R1bGUgY2FuIGNyZWF0ZSBldmVudHMsIHlvdSB3aWxsIG5lZWQKICAgKiB0byBwcm92aWRlIHRoZSBBUEkgd2l0aCBkb2N1bWVudGF0aW9uIG9mIGhvdyB0bwogICAqIHVzZSB0aGUgZXZlbnQuIFRoaXMgbWV0aG9kIHdyYXBzIHVwIGEgc2ltcGxlCiAgICogcmV0dXJuIG9mIHRoZSBsb2NhbGl6ZWQgZGVzY3JpcHRpb24uCiAgICogQHBhcmFtIHN0cmluZyBFdmVudG5hbWUKICAgKiBAcmV0dXJuIHN0cmluZyBIZWxwIGZvciBldmVudAogICAqLwogIGZ1bmN0aW9uIEdldEV2ZW50SGVscCAoICRldmVudG5hbWUgKSB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2V2ZW50X2hlbHBfJy4kZXZlbnRuYW1lICk7CiAgfQoKCiAgLyoqCiAgICogRG9FdmVudCgpCiAgICogSWYgeW91ciBtb2R1bGUgcmVjZWl2ZXMvaGFuZGxlcy9wcm9jZXNzZXMgZXZlbnRzIGdlbmVyYXRlZAogICAqIGJ5IHRoZSBjb3JlIG9yIGJ5IG90aGVyIG1vZHVsZXMsIHlvdSB3aWxsIG5lZWQgdG8gcHJvdmlkZQogICAqIHRoaXMgbWV0aG9kIHRvIGRvIHdoYXRldmVyIGl0IGlzIHlvdSdyZSBnb2luZyB0byBkby4KICAgKiBPdGhlciB0aGFuIHRoZSBldmVudCBkZXRhaWxzLCB0aGUgcGFyYW1ldGVycyBwYXNzZWQgdG8geW91cgogICAqIG1ldGhvZCBkZXBlbmQgZW50aXJlbHkgb24gdGhlIGV2ZW50IG9yaWdpbmF0b3IuIFlvdSBjYW4KICAgKiBzZWUgd2hhdCB0aG9zZSBwYXJhbWV0ZXJzIGFyZSBieSBjbGlja2luZyBvbiB0aGUgSW5mb3JtYXRpb24KICAgKiBidXR0b24gZm9yIHRoZSBldmVudCBpbiB0aGUgQWRtaW4gPiBFeHRlbnNpb25zID4gRXZlbnQgTWFuYWdlcgogICAqCiAgICogQHBhcmFtIHN0cmluZyBvcmlnaW5hdG9yIHdoZXJlIHRoZSBldmVudCBvcmlnaW5hdGVkLCBlLmcuICJDb3JlIiwKICAgKiAiTmV3cyIsIGV0Yy4KICAgKiBAcGFyYW0gc3RyaW5nIGV2ZW50bmFtZSB0aGUgbmFtZSBvZiB0aGUgZXZlbnQKICAgKiBAcGFyYW0gbWl4ZWQgcGFyYW1zIHRoZSBwYXJhbWV0ZXJzIHBhc3NlZCBieSB0aGUgZXZlbnQgaW5pdGlhdG9yCiAgICovCiAgLypmdW5jdGlvbiBEb0V2ZW50KCAkb3JpZ2luYXRvciwgJGV2ZW50bmFtZSwgJiRwYXJhbXMgKQogIHsKICAgIGlmICgkb3JpZ2luYXRvciA9PSAnQ29yZScgJiYgJGV2ZW50bmFtZSA9PSAnQ29udGVudFBvc3RSZW5kZXInKQogICAgewogICAgICAvLyBzdHVwaWQgZXhhbXBsZSAtLSBsb3dlcmNhc2VzIGVudGlyZSBvdXRwdXQKICAgICAgJHBhcmFtc1snY29udGVudCddID0gc3RydG9sb3dlcigkcGFyYW1zWydjb250ZW50J10pOwogICAgfQogIH0qLwoKICAvKioKICAgKiBJbnN0YWxsUG9zdE1lc3NhZ2UoKQogICAqIEFmdGVyIGluc3RhbGxhdGlvbiwgdGhlcmUgbWF5IGJlIHRoaW5ncyB5b3Ugd2FudCB0bwogICAqIGNvbW11bmljYXRlIHRvIHlvdXIgYWRtaW4uIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhCiAgICogc3RyaW5nIHdoaWNoIHdpbGwgYmUgZGlzcGxheWVkLgogICAqCiAgICogU2VlIHRoZSBub3RlIG9uIGxvY2FsaXphdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4KICAgKiBAcmV0dXJuIHN0cmluZyBNZXNzYWdlIHRvIGJlIHNob3duIGFmdGVyIGluc3RhbGxhdGlvbgogICAqLwogIGZ1bmN0aW9uIEluc3RhbGxQb3N0TWVzc2FnZSgpIHsKICAgIHJldHVybiAkdGhpcy0+TGFuZygncG9zdGluc3RhbGwnKTsKICB9CgogIC8qKgogICAqIFVuaW5zdGFsbFBvc3RNZXNzYWdlKCkKICAgKiBBZnRlciByZW1vdmluZyBhIG1vZHVsZSwgdGhlcmUgbWF5IGJlIHRoaW5ncyB5b3Ugd2FudCB0bwogICAqIGNvbW11bmljYXRlIHRvIHlvdXIgYWRtaW4uIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhCiAgICogc3RyaW5nIHdoaWNoIHdpbGwgYmUgZGlzcGxheWVkLgogICAqCiAgICogU2VlIHRoZSBub3RlIG9uIGxvY2FsaXphdGlvbiBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4KICAgKiBAcmV0dXJuIHN0cmluZyBNZXNzYWdlIHRvIGJlIHNob3duIGFmdGVyIHVuaW5zdGFsbGF0aW9uCiAgICovCiAgZnVuY3Rpb24gVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKSB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3R1bmluc3RhbGwnKTsKICB9CgogIC8qKgogICAqIFVuaW5zdGFsbFByZU1lc3NhZ2UoKQogICAqIFRoaXMgYWxsb3dzIHlvdSB0byBkaXNwbGF5IGEgbWVzc2FnZSBhbG9uZyB3aXRoIGEgWWVzL05vIGRpYWxvZyBib3guIElmIHRoZSB1c2VyIHJlc3BvbmRzCiAgICogaW4gdGhlIGFmZmlybWF0aXZlIHRvIHlvdXIgbWVzc2FnZSwgdGhlIHVuaW5zdGFsbCB3aWxsIHByb2NlZWQuIElmIHRoZXkgcmVzcG9uZCBpbiB0aGUKICAgKiBuZWdhdGl2ZSwgdGhlIHVuaW5zdGFsbCB3aWxsIGJlIGNhbmNlbGVkLiBUaHVzLCB5b3VyIG1lc3NhZ2Ugc2hvdWxkIGJlIG9mIHRoZSBmb3JtCiAgICogIkFsbCBtb2R1bGUgZGF0YSB3aWxsIGJlIGRlbGV0ZWQuIEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byB1bmluc3RhbGwgdGhpcyBtb2R1bGU/IgogICAqCiAgICogSWYgeW91IGRvbid0IHdhbnQgdGhlIGRpYWxvZywgaGF2ZSB0aGlzIG1ldGhvZCByZXR1cm4gYSBGQUxTRSwgd2hpY2ggd2lsbCBjYXVzZSB0aGUKICAgKiBtb2R1bGUgdG8gdW5pbnN0YWxsIGltbWVkaWF0ZWx5IGlmIHRoZSB1c2VyIGNsaWNrcyB0aGUgInVuaW5zdGFsbCIgbGluay4KICAgKiBAcmV0dXJuIHN0cmluZyBNZXNzYWdlIHRvIGJlIHNob3duIGJlZm9yZSB1bmluc3RhbGxhdGlvbgogICAqLwogIGZ1bmN0aW9uIFVuaW5zdGFsbFByZU1lc3NhZ2UoKSB7CiAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ3JlYWxseV91bmluc3RhbGwnKTsKICB9CgogIC8qKgogICAqIFlvdXIgbWV0aG9kcyBoZXJlCiAgICoKICAgKiBUaGlzIHdvdWxkIGJlIGEgZ29vZCBwbGFjZSB0byBkZWZpbmUgc29tZSBnZW5lcmFsIG1ldGhvZHMgZm9yIHlvdXIgbW9kdWxlCiAgICoKICAgKiBJdHMgYSBnb29kIHByYWN0aWNlIHRvIGhhdmUgdW5kZXJzY29yZSBpbiBmcm9udCBvZiB5b3VyIG93biBtZXRob2RzCiAgICovCiAgZnVuY3Rpb24gX1NldFN0YXR1cygkb2lkLCAkc3RhdHVzKSB7CiAgICAvLy4uLgogIH0KCiAgLyoqCiAgICogRG9BY3Rpb24oJGFjdGlvbiwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpCiAgICogVGhpcyBpcyB0aGUgbWFpbiBmdW5jdGlvbiB0aGF0IGdldHMgY2FsbGVkIGlmIHlvdXIgbW9kdWxlCiAgICogaXMgYSBwbHVnLWluIHR5cGUgbW9kdWxlLgogICAqCiAgICogSW4gZ2VuZXJhbCwgeW91J2xsIHdhbnQgdG8gY2FsbCB2YXJpb3VzIGRpZmZlcmVudAogICAqIG1ldGhvZHMsIGRlcGVuZGluZyB1cG9uIHRoZSByZXF1ZXN0ZWQgImFjdGlvbi4iCiAgICoKICAgKiBUaGVyZSBhcmUgdHdvIGJ1aWx0LWluIGFjdGlvbnM6ICJkZWZhdWx0IiB3aGljaCBnZXRzCiAgICogY2FsbGVkIGlmIHRoZSBtb2R1bGUgaXMgYWNjZXNzZWQgZnJvbSBhIHBhZ2Ugb3IgdGVtcGxhdGUsCiAgICogYW5kICJkZWZhdWx0YWRtaW4iIHdoaWNoIGdldHMgY2FsbGVkIGZyb20gdGhlIEFkbWluCiAgICogcGFuZWwuCiAgICoKICAgKiBUaGUgQWN0aW9uIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHBhc3NpbmcgYSBkaWZmZXJlbnQKICAgKiBhY3Rpb24gZWl0aGVyIGluIHlvdXIgdGFnLCBlLmcuLAogICAqIHtjbXNfbW9kdWxlIG1vZHVsZT0nU2tlbGV0b24nIGFjdGlvbj0nc29tZXRoaW5nJ30KICAgKiBvciBieSBwYXNzaW5nIGl0IGluIGEgbGluayBjcmVhdGUgYnkgdGhlIENyZWF0ZUxpbmsKICAgKiBtZXRob2QuCiAgICoKICAgKiBTaW1pbGFyIHRvIHRoZSBTZXBhcmFibGUgTWV0aG9kcyBkZXNjcmliZWQgYWJvdmUsCiAgICogeW91IGNhbiBhY3R1YWxseSByZW1vdmUgYWxsIG9mIHRoZSBhY3Rpb25zIGludG8gc2VwYXJhdGUKICAgKiBmaWxlcyBhcyB3ZWxsLiBXaGVuIHRoZSBtb2R1bGUgQVBJIGNhbGxzIHlvdXIgbW9kdWxlCiAgICogd2l0aCBhbiBhY3Rpb24sIGl0IGNoZWNrcyBmaXJzdCB0byBzZWUgaWYgdGhlIERvQWN0aW9uIG1ldGhvZAogICAqIGV4aXN0cy4gSWYgaXQgZG9lcywgaXQgZ2V0cyB1c2VkIG5vcm1hbGx5LiBJZiBpdCBkb2Vzbid0IGV4aXN0cywKICAgKiB0aGUgZmlsZSBjb3JyZXNwb25kaW5nIHRvIHRoYXQgbWV0aG9kIGdldHMgbG9hZGVkIGFuZCBjYWxsZWQuCiAgICoKICAgKiBGb3IgZXhhbXBsZSwgdGhlIGRlZmF1bHQgbWV0aG9kIHdvdWxkIGVpdGhlciBiZSBhY2Nlc3NlZAogICAqIHZpYSB0aGUgRG9BY3Rpb24gbWV0aG9kIGJlaW5nIGNhbGxlZCB3aXRoIGFuIGFjdGlvbiBvZiAnZGVmYXVsdCcsIG9yLAogICAqIGlmIG5vIERvQWN0aW9uIG1ldGhvZCBleGlzdHMgaW4gdGhlIG1vZHVsZSwgdGhlIEFQSSB3b3VsZAogICAqIGV4ZWN1dGUgdGhlIGZpbGUgbmFtZWQgImFjdGlvbi5kZWZhdWx0LnBocCIgaW4gdGhpcyBtb2R1bGUKICAgKiBkaXJlY3RvcnkuCiAgICoKICAgKiBBcyB3aXRoIHRoZSBvdGhlciBTZXBhcmFibGUgTWV0aG9kcyBhYm92ZSwgSSdtIGxlYXZpbmcKICAgKiB0aGUgbWV0aG9kcyBpbiB0aGlzIG1haW4gZmlsZSwgYnV0IGNvbW1lbnRpbmcgdGhlbSBvdXQsCiAgICogYW5kIGRvaW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgc2VwYXJhdGUgZmlsZXMuCiAgICoKICAgKiBZb3UgY2FuIGltcGxlbWVudCB5b3VyIG1vZHVsZSBlaXRoZXIgd2F5LAogICAqLwogIC8vIGNvbW1lbnRlZCBvdXQsIGFsbCBuZWVkZWQgYWN0aW9ucyBhcmUgZGVmaW5lZCBpbiBzZXBlcmF0ZSBmaWxlcwogIC8qZnVuY3Rpb24gRG9BY3Rpb24oJGFjdGlvbiwgJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQ9LTEpCiAgewogICAgc3dpdGNoICgkYWN0aW9uKQogICAgewogICAgICBjYXNlICdkZWZhdWx0JzoKICAgICAgewogICAgICAgIC8vIHRoaXMgaXMgdGhlIHBsdWctaW4gc2lkZSwgaS5lLiwgbm9uLUFkbWluCiAgICAgICAgJHRoaXMtPkRpc3BsYXlNb2R1bGVPdXRwdXQoJGFjdGlvbiwgJGlkLCAkcGFyYW1zKTsKICAgICAgICBicmVhazsKICAgICAgfQogICAgICBjYXNlICdkZWZhdWx0YWRtaW4nOgogICAgICB7CiAgICAgICAgLy8gb25seSBsZXQgcGVvcGxlIGFjY2VzcyBtb2R1bGUgcHJlZmVyZW5jZXMgaWYgdGhleSBoYXZlIHBlcm1pc3Npb24KICAgICAgICBpZiAoJHRoaXMtPkNoZWNrUGVybWlzc2lvbignVXNlIFNrZWxldG9uJykpCiAgICAgICAgewogICAgICAgICAgJHRoaXMtPkRpc3BsYXlBZG1pblBhbmVsKCRpZCwgJHBhcmFtcywgJHJldHVybmlkKTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwogICAgICAgIH0KICAgICAgICBicmVhazsKICAgICAgfQogICAgICBjYXNlICdzYXZlX2FkbWluX3ByZWZzJzoKICAgICAgewogICAgICAgIC8vIG9ubHkgbGV0IHBlb3BsZSBzYXZlIG1vZHVsZSBwcmVmZXJlbmNlcyBpZiB0aGV5IGhhdmUgcGVybWlzc2lvbgogICAgICAgIGlmICgkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgU2tlbGV0b24nKSkKICAgICAgICB7CiAgICAgICAgICAkdGhpcy0+U2F2ZUFkbWluUHJlZnMoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQpOwogICAgICAgIH0KICAgICAgICBicmVhazsKICAgICAgfQogICAgfQogIH0qLwp9Cj8+]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/adminpanel.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[eyR0YWJzX3N0YXJ0fQogICB7JHN0YXJ0X2dlbmVyYWxfdGFifQogICAgPGRpdiBjbGFzcz0icGFnZXRleHQiPgogICAgICA8cCBzdHlsZT0iZm9udC1zaXplOjEuM2VtOyI+eyRtb2QtPkxhbmcoJ3RpdGxlX2Fib3V0Jyl9PC9wPgogICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOjAuNWVtIDFlbSAxZW0gM2VtOyI+CiAgICAgICAgeyRtb2QtPkdldEZyaWVuZGx5TmFtZSgpfSA8c3BhbiBzdHlsZT0iZm9udC13ZWlnaHQ6bm9ybWFsOyI+KHZlcnNpb24geyRtb2QtPkdldFZlcnNpb24oKX0pPC9zcGFuPgogICAgICAgIDxici8+PGVtIHN0eWxlPSJmb250LXdlaWdodDpub3JtYWw7Ij57JG1vZC0+TGFuZygnbW9kZGVzY3JpcHRpb24nKX08L2VtPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0icGFnZXRleHQiPgogICAgICA8cCBzdHlsZT0iZm9udC1zaXplOjEuM2VtOyI+eyRtb2QtPkxhbmcoJ3RpdGxlX2xpY2Vuc2UnKX08L3A+CiAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6MC41ZW0gMWVtIDFlbSAzZW07Ij4KICAgICAgICA8YSBocmVmPSJ7JG1vZHVsZV91cmx9Z3BsLTMuMC1zdGFuZGFsb25lLmh0bWwiIHRhcmdldD0iX2JsYW5rIj57JG1vZC0+R2V0TGljZW5zZSgpfTwvYT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9InBhZ2V0ZXh0Ij4KICAgICAgPHAgc3R5bGU9ImZvbnQtc2l6ZToxLjNlbTsiPnskbW9kLT5MYW5nKCd0aXRsZV9hdXRob3JzJyl9PC9wPgogICAgICA8ZGl2IHN0eWxlPSJwYWRkaW5nOjAuNWVtIDFlbSAxZW0gM2VtOyI+CiAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuZXN0YXRlLm9yZy8iIHRhcmdldD0iX2JsYW5rIj4KICAgICAgICAgIDxpbWcgc3JjPSJ7JG1vZHVsZV91cmx9aW1hZ2VzL29wZW5lc3RhdGUucG5nIiBib3JkZXI9IjAiIGFsdD0iMCIgLz4KICAgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi10b3A6MC41ZW07Ij57JG1vZC0+R2V0QXV0aG9yKCl9PC9kaXY+CiAgICAgICAgPC9hPgogICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0icGFnZXRleHQiPgogICAgICA8cCBzdHlsZT0iZm9udC1zaXplOjEuM2VtOyI+eyRtb2QtPkxhbmcoJ3RpdGxlX3N1cHBvcnQnKX08L3A+CiAgICAgIDxkaXYgc3R5bGU9InBhZGRpbmc6MC41ZW0gMWVtIDFlbSAzZW07Ij4KICAgICAgICA8Zm9ybSBhY3Rpb249Imh0dHBzOi8vd3d3LnBheXBhbC5jb20vY2dpLWJpbi93ZWJzY3IiIG1ldGhvZD0icG9zdCIgdGFyZ2V0PSJfYmxhbmsiPgogICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iY21kIiB2YWx1ZT0iX3MteGNsaWNrIj4KICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Imhvc3RlZF9idXR0b25faWQiIHZhbHVlPSIxMTAwNTc5MCI+CiAgICAgICAgICA8aW5wdXQgdHlwZT0iaW1hZ2UiIHN0eWxlPSJib3JkZXI6bm9uZTsiIHNyYz0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9kZV9ERS9ERS9pL2J0bi9idG5fZG9uYXRlQ0NfTEcuZ2lmIiBib3JkZXI9IjAiIG5hbWU9InN1Ym1pdCIgYWx0PSJKZXR6dCBlaW5mYWNoLCBzY2huZWxsIHVuZCBzaWNoZXIgb25saW5lIGJlemFobGVuIOKAkyBtaXQgUGF5UGFsLiI+CiAgICAgICAgICA8aW1nIGFsdD0iIiBib3JkZXI9IjAiIHNyYz0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9kZV9ERS9pL3Njci9waXhlbC5naWYiIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHN0eWxlPSJib3JkZXI6bm9uZTsiPgogICAgICAgIDwvZm9ybT4KICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgeyR0YWJfZW5kfQogICB7JHN0YXJ0X3ByZWZzX3RhYn0KICAgICAge2lmICRzdGFydF9wcmVmc190YWIgIT0gJyd9CiAgICAgIHskc3RhcnRfZm9ybX0KICAgICAgCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgIAkJPHAgY2xhc3M9InBhZ2V0ZXh0IiBzdHlsZT0iZm9udC1zaXplOjEuM2VtOyI+eyRtb2QtPkxhbmcoJ3RpdGxlX3dyYXBfcGF0aCcpfTwvcD4KICAgICAgCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X3dyYXBfcGF0aH08L3A+CiAgICAgIAk8L2Rpdj4KICAgICAgCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgIAkJPHAgY2xhc3M9InBhZ2V0ZXh0IiBzdHlsZT0iZm9udC1zaXplOjEuM2VtOyI+eyRtb2QtPkxhbmcoJ3RpdGxlX3dyYXBfdXJsJyl9PC9wPgogICAgICAJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfd3JhcF91cmx9PC9wPgogICAgICAJPC9kaXY+CiAgICAgIAk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAJCTxwIGNsYXNzPSJwYWdldGV4dCI+Jm5ic3A7PC9wPgogICAgICAJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskc3VibWl0fTwvcD4KICAgICAgCTwvZGl2PgogICAgICB7JG1vZC0+Q3JlYXRlRm9ybUVuZCgpfQogICAgICB7L2lmfQogICB7JHRhYl9lbmR9CiAgIHskc3RhcnRfaW50ZWdyYXRpb25fdGFifQogICAgIHtpZiAkc3RhcnRfaW50ZWdyYXRpb25fdGFiICE9ICcnfQogICAgICAJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgCQk8cCBjbGFzcz0icGFnZXRleHQiIHN0eWxlPSJmb250LXNpemU6MS4zZW07Ij57JG1vZC0+TGFuZygndGl0bGVfd3JhcF90ZXN0Jyl9PC9wPgogICAgICAJCTxkaXYgY2xhc3M9InBhZ2V0ZXh0Ij57JHdyYXBfdGVzdH08L2Rpdj4KICAgICAgCTwvZGl2PgogICAgICAJe2lmICR0YWdfYnVpbGRlciAhPSAnJ30KICAgICAgICAJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICAJCTxwIGNsYXNzPSJwYWdldGV4dCIgc3R5bGU9ImZvbnQtc2l6ZToxLjNlbTsiPnskbW9kLT5MYW5nKCd0aXRsZV93cmFwX3RhZycpfTwvcD4KICAgICAgICAJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskbW9kLT5MYW5nKCd0aXRsZV93cmFwX3RhZ19oZWxwJyl9ICg8YSBocmVmPSIjIiBvbmNsaWNrPSJidWlsZF90YWcoKTsgcmV0dXJuIGZhbHNlOyI+eyRtb2QtPkxhbmcoJ3JlYnVpbGQnKX08L2E+KTwvcD4KICAgICAgICAJCTxkaXYgaWQ9InRhZ19idWlsZGVyIiBjbGFzcz0icGFnZXRleHQiIHN0eWxlPSJib3JkZXI6MXB4IHNvbGlkICNjMGMwYzA7IGJhY2tncm91bmQtY29sb3I6I2YwZjBmMDsgcGFkZGluZzoxZW07Ij4mbmJzcDs8L2Rpdj4KICAgICAgICAJPC9kaXY+CiAgICAgICAgCQogICAgICAgIAk8IS0tIHdyYXAgaW5kZXggLS0+CiAgICAgICAgCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgICAgCQk8cCBjbGFzcz0icGFnZXRleHQiPjxpbnB1dCBpZD0id3JhcF9pbmRleCIgbmFtZT0id3JhcCIgdmFsdWU9ImluZGV4IiB0eXBlPSJyYWRpbyIgY2hlY2tlZD0iY2hlY2tlZCIgb25jaGFuZ2U9InNob3dfd3JhcHBlcl9mb3JtKHRoaXMudmFsdWUpOyBidWlsZF90YWcoKTsiIC8+PGxhYmVsIGZvcj0id3JhcF9pbmRleCI+eyRtb2QtPkxhbmcoJ3RpdGxlX3dyYXBfbGlzdGluZycpfTwvbGFiZWw+PC9wPgogICAgICAgIAk8L2Rpdj4KICAgICAgICAJPGRpdiBpZD0id3JhcF9pbmRleF9mb3JtIiBzdHlsZT0icGFkZGluZy1sZWZ0OjNlbTsiPgogICAgICAgICAgCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgICAgICAJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3RpdGxlX3dyYXBfdGFnX3ZpZXcnKX08L3A+CiAgICAgICAgICAJCTxwIGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaW5kZXhfdmlld308L3A+CiAgICAgICAgICAJPC9kaXY+CiAgICAgICAgICAJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICAgIAkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygndGl0bGVfd3JhcF90YWdfbW9kZScpfTwvcD4KICAgICAgICAgIAkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9pbmRleF9tb2RlfTwvcD4KICAgICAgICAgIAk8L2Rpdj4KICAgICAgICAgIAk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgICAgCQk8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCd0aXRsZV93cmFwX3RhZ19sYW5nJyl9PC9wPgogICAgICAgICAgCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2luZGV4X2xhbmd9PC9wPgogICAgICAgICAgCTwvZGl2PgogICAgICAgICAgCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgICAgICAJCTxwIGNsYXNzPSJwYWdldGV4dCI+eyRtb2QtPkxhbmcoJ3RpdGxlX3dyYXBfdGFnX29yZGVyJyl9PC9wPgogICAgICAgICAgCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2luZGV4X29yZGVyX2J5fSB7JGlucHV0X2luZGV4X29yZGVyX2Rpcn08L3A+CiAgICAgICAgICAJPC9kaXY+CiAgICAgICAgICAJPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4KICAgICAgICAgIAkJPHAgY2xhc3M9InBhZ2V0ZXh0Ij57JG1vZC0+TGFuZygndGl0bGVfd3JhcF90YWdfZmlsdGVyJyl9PC9wPgogICAgICAgICAgCQk8ZGl2IGNsYXNzPSJwYWdlaW5wdXQiPnskaW5wdXRfaW5kZXhfZmlsdGVyc308L2Rpdj4KICAgICAgICAgIAk8L2Rpdj4KICAgICAgICAJPC9kaXY+CiAgICAgICAgCQogICAgICAgIAk8IS0tIHdyYXAgcHJvcGVydHkgLS0+CiAgICAgICAgCTxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+CiAgICAgICAgCQk8cCBjbGFzcz0icGFnZXRleHQiPjxpbnB1dCBpZD0id3JhcF9leHBvc2UiIG5hbWU9IndyYXAiIHZhbHVlPSJleHBvc2UiIHR5cGU9InJhZGlvIiBvbmNoYW5nZT0ic2hvd193cmFwcGVyX2Zvcm0odGhpcy52YWx1ZSk7IGJ1aWxkX3RhZygpOyIgLz48bGFiZWwgZm9yPSJ3cmFwX2V4cG9zZSI+eyRtb2QtPkxhbmcoJ3RpdGxlX3dyYXBfcHJvcGVydHknKX08L2xhYmVsPjwvcD4KICAgICAgICAJPC9kaXY+CiAgICAgICAgCTxkaXYgaWQ9IndyYXBfZXhwb3NlX2Zvcm0iIHN0eWxlPSJwYWRkaW5nLWxlZnQ6M2VtOyBwb3NpdGlvbjphYnNvbHV0ZTsgdmlzaWJpbGl0eTpoaWRkZW47Ij4KICAgICAgICAgIAk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgICAgCQk8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCd0aXRsZV93cmFwX3RhZ192aWV3Jyl9PC9wPgogICAgICAgICAgCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2V4cG9zZV92aWV3fTwvcD4KICAgICAgICAgIAk8L2Rpdj4KICAgICAgICAgIAk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgICAgCQk8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCd0aXRsZV93cmFwX3RhZ19sYW5nJyl9PC9wPgogICAgICAgICAgCQk8cCBjbGFzcz0icGFnZWlucHV0Ij57JGlucHV0X2V4cG9zZV9sYW5nfTwvcD4KICAgICAgICAgIAk8L2Rpdj4KICAgICAgICAgIAk8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPgogICAgICAgICAgCQk8cCBjbGFzcz0icGFnZXRleHQiPnskbW9kLT5MYW5nKCd0aXRsZV93cmFwX3RhZ19wcm9wZXJ0eScpfTwvcD4KICAgICAgICAgIAkJPHAgY2xhc3M9InBhZ2VpbnB1dCI+eyRpbnB1dF9leHBvc2VfaWR9PC9wPgogICAgICAgICAgCTwvZGl2PgogICAgICAgIAk8L2Rpdj4gICAgICAgIAkKICAgICAgICAJCntsaXRlcmFsfQo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CjwhLS0KZnVuY3Rpb24gc2hvd193cmFwcGVyX2Zvcm0oICR2YWx1ZSApCnsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ3dyYXBfaW5kZXhfZm9ybScgKS5zdHlsZS52aXNpYmlsaXR5ID0gKCR2YWx1ZT09J2luZGV4Jyk/ICd2aXNpYmxlJzogJ2hpZGRlbic7CiAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICd3cmFwX2luZGV4X2Zvcm0nICkuc3R5bGUucG9zaXRpb24gPSAoJHZhbHVlPT0naW5kZXgnKT8gJ3JlbGF0aXZlJzogJ2Fic29sdXRlJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ3dyYXBfZXhwb3NlX2Zvcm0nICkuc3R5bGUudmlzaWJpbGl0eSA9ICgkdmFsdWU9PSdleHBvc2UnKT8gJ3Zpc2libGUnOiAnaGlkZGVuJzsKICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCggJ3dyYXBfZXhwb3NlX2Zvcm0nICkuc3R5bGUucG9zaXRpb24gPSAoJHZhbHVlPT0nZXhwb3NlJyk/ICdyZWxhdGl2ZSc6ICdhYnNvbHV0ZSc7Cn0KZnVuY3Rpb24gYnVpbGRfdGFnKCkKewogIC8vYWxlcnQoICdidWlsZF90YWcnICk7CiAgdmFyIG9iaiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWdfYnVpbGRlcicpOwogIGlmIChvYmo9PW51bGwpIHJldHVybjsKICB2YXIgd3JhcF9pbmRleCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd3cmFwX2luZGV4Jyk7CiAgdmFyIHdyYXBfZXhwb3NlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3dyYXBfZXhwb3NlJyk7CiAgCiAgdmFyIG9iajIgPSBudWxsOwogIHZhciBwYXJhbXMgPSAnJzsKCiAgaWYgKHdyYXBfaW5kZXghPW51bGwgJiYgd3JhcF9pbmRleC5jaGVja2VkPT10cnVlKQogIHsgCiAgICBwYXJhbXMgKz0gJyB3cmFwPSInICsgd3JhcF9pbmRleC52YWx1ZSArICciJzsKICAKICAgIG9iajIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFnX2luZGV4X3ZpZXcnKTsKICAgIGlmIChvYmoyIT1udWxsKSBwYXJhbXMgKz0gJyB2aWV3PSInICsgb2JqMi52YWx1ZSArICciJzsKCiAgICBvYmoyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhZ19pbmRleF9tb2RlJyk7CiAgICBpZiAob2JqMiE9bnVsbCkgcGFyYW1zICs9ICcgbW9kZT0iJyArIG9iajIudmFsdWUgKyAnIic7CgogICAgb2JqMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWdfaW5kZXhfbGFuZycpOwogICAgaWYgKG9iajIhPW51bGwpIHBhcmFtcyArPSAnIGxhbmc9IicgKyBvYmoyLnZhbHVlICsgJyInOwogICAgCiAgICBvYmoyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhZ19pbmRleF9vcmRlcl9ieScpOwogICAgaWYgKG9iajIhPW51bGwpIHBhcmFtcyArPSAnIG9yZGVyX2J5PSInICsgb2JqMi52YWx1ZSArICciJzsKICAgIAogICAgb2JqMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0YWdfaW5kZXhfb3JkZXJfZGlyJyk7CiAgICBpZiAob2JqMiE9bnVsbCkgcGFyYW1zICs9ICcgb3JkZXJfZGlyPSInICsgb2JqMi52YWx1ZSArICciJzsKICAgIAogICAgZmlsdGVycyA9IFt7L2xpdGVyYWx9eyRmaWx0ZXJfaWRzfXtsaXRlcmFsfV07CiAgICBmb3IgKHZhciBpPTA7IGk8ZmlsdGVycy5sZW5ndGg7IGkrKykKICAgIHsKICAgICAgb2JqMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGZpbHRlcnNbaV0pOwogICAgICB2YWwgPSAnJzsKICAgICAgLy9hbGVydCggZmlsdGVyc1tpXSArICc6ICcgKyBvYmoyLmNoZWNrZWQgKTsKICAgICAgaWYgKG9iajIuY2hlY2tlZD09dHJ1ZSB8fCBvYmoyLmNoZWNrZWQ9PWZhbHNlKQogICAgICB7CiAgICAgICAgaWYgKG9iajIuY2hlY2tlZD09dHJ1ZSkgdmFsID0gb2JqMi52YWx1ZTsKICAgICAgfQogICAgICBlbHNlICAgIAogICAgICB7CiAgICAgICAgdmFsID0gb2JqMi52YWx1ZTsKICAgICAgfQogICAgICBpZiAodmFsIT0nJyAmJiBvYmoyIT1udWxsKSBwYXJhbXMgKz0gJyAnICsgZmlsdGVyc1tpXSArICc9IicgKyB2YWwgKyAnIic7CiAgICB9CiAgfQogIAogIGVsc2UgaWYgKHdyYXBfZXhwb3NlIT1udWxsICYmIHdyYXBfZXhwb3NlLmNoZWNrZWQ9PXRydWUpCiAgewogICAgcGFyYW1zICs9ICcgd3JhcD0iJyArIHdyYXBfZXhwb3NlLnZhbHVlICsgJyInOwogICAgCiAgICBvYmoyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhZ19leHBvc2VfdmlldycpOwogICAgaWYgKG9iajIhPW51bGwpIHBhcmFtcyArPSAnIHZpZXc9IicgKyBvYmoyLnZhbHVlICsgJyInOwogICAgCiAgICBvYmoyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3RhZ19leHBvc2VfbGFuZycpOwogICAgaWYgKG9iajIhPW51bGwpIHBhcmFtcyArPSAnIGxhbmc9IicgKyBvYmoyLnZhbHVlICsgJyInOwogICAgCiAgICBvYmoyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ20xX2V4cG9zZV9pZCcpOwogICAgaWYgKG9iajIhPW51bGwgJiYgb2JqMi52YWx1ZSE9JycpIHBhcmFtcyArPSAnIGlkPSInICsgb2JqMi52YWx1ZSArICciJzsKICB9CiAgCiAgb2JqLmlubmVySFRNTCA9ICd7T3BlbkVzdGF0ZVBocFdyYXBwZXInICsgcGFyYW1zICsgJ30nOwp9CmJ1aWxkX3RhZygpOwotLT4KPC9zY3JpcHQ+CnsvbGl0ZXJhbH0KICAgICAgCXsvaWZ9CiAgICAgey9pZn0KICAgeyR0YWJfZW5kfQp7JHRhYnNfZW5kfQ==]]></data>
	</file>
	<file>
	  <filename>/templates/error.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGgzPnskdGl0bGVfZXJyb3J9PC9oMz4KPHA+eyRhZG1pbl9uYXZ9PC9wPgp7aWYgJG1lc3NhZ2UhPScnfTxwPnskbWVzc2FnZX08L3A+ey9pZn0=]]></data>
	</file>
</module>

