<?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>MAS_CGBlogToLISE</name>
	<version>1.0.0</version>
    <mincmsversion>2.2.0</mincmsversion>
	<help><![CDATA[PGRpdiBjbGFzcz0ibWFzLW1pZ3JhdGlvbi1oZWxwIj4KPGgzPk1BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24gTW9kdWxlPC9oMz4KCjxwPjxzdHJvbmc+TUFTIENHQmxvZyB0byBMSVNFIE1pZ3JhdGlvbjwvc3Ryb25nPiBpcyBhIHRvb2wgZm9yIG1pZ3JhdGluZyBkYXRhIGZyb20gdGhlIENHQmxvZyBtb2R1bGUgdG8gTElTRSBpbnN0YW5jZXMgaW4gQ01TIE1hZGUgU2ltcGxlLjwvcD4KCjxoND5GZWF0dXJlczwvaDQ+Cjx1bD4KICAgIDxsaT48c3Ryb25nPkNyZWF0ZSBOZXcgSW5zdGFuY2VzOjwvc3Ryb25nPiBBdXRvbWF0aWNhbGx5IGNyZWF0ZSBuZXcgTElTRSBpbnN0YW5jZXMgZnJvbSBDR0Jsb2cgZGF0YTwvbGk+CiAgICA8bGk+PHN0cm9uZz5Vc2UgRXhpc3RpbmcgSW5zdGFuY2VzOjwvc3Ryb25nPiBDb3B5IGRhdGEgdG8gZXhpc3RpbmcgTElTRSBpbnN0YW5jZXM8L2xpPgogICAgPGxpPjxzdHJvbmc+U2VsZWN0aXZlIE1pZ3JhdGlvbjo8L3N0cm9uZz4gQ2hvb3NlIHdoaWNoIGRhdGEgdG8gbWlncmF0ZSAoYXJ0aWNsZXMsIGNhdGVnb3JpZXMsIGN1c3RvbSBmaWVsZHMpPC9saT4KICAgIDxsaT48c3Ryb25nPlByZXZpZXc6PC9zdHJvbmc+IFByZXZpZXcgZGF0YSBiZWZvcmUgbWlncmF0aW9uPC9saT4KICAgIDxsaT48c3Ryb25nPkNvbXByZWhlbnNpdmUgTWFwcGluZzo8L3N0cm9uZz4gQXV0b21hdGljYWxseSBtYXBzIENHQmxvZyBkYXRhIHN0cnVjdHVyZXMgdG8gTElTRSBmb3JtYXQ8L2xpPgogICAgPGxpPjxzdHJvbmc+RXJyb3IgSGFuZGxpbmc6PC9zdHJvbmc+IERldGFpbGVkIGVycm9yIHJlcG9ydGluZyBhbmQgbG9nZ2luZzwvbGk+CjwvdWw+Cgo8aDQ+R2V0dGluZyBTdGFydGVkPC9oND4KPG9sPgogICAgPGxpPjxzdHJvbmc+UHJlcmVxdWlzaXRlczo8L3N0cm9uZz4gRW5zdXJlIGJvdGggQ0dCbG9nIGFuZCBMSVNFIG1vZHVsZXMgYXJlIGluc3RhbGxlZDwvbGk+CiAgICA8bGk+PHN0cm9uZz5BY2Nlc3MgTWlncmF0aW9uOjwvc3Ryb25nPiBHbyB0byBFeHRlbnNpb25zIOKGkiBNQVMgQ0dCbG9nIHRvIExJU0UgTWlncmF0aW9uPC9saT4KICAgIDxsaT48c3Ryb25nPkNob29zZSBJbnN0YW5jZTo8L3N0cm9uZz4gQ3JlYXRlIG5ldyBvciBzZWxlY3QgZXhpc3RpbmcgTElTRSBpbnN0YW5jZTwvbGk+CiAgICA8bGk+PHN0cm9uZz5TZWxlY3QgRGF0YTo8L3N0cm9uZz4gQ2hvb3NlIHdoaWNoIGRhdGEgdHlwZXMgdG8gbWlncmF0ZTwvbGk+CiAgICA8bGk+PHN0cm9uZz5QcmV2aWV3Ojwvc3Ryb25nPiBSZXZpZXcgd2hhdCB3aWxsIGJlIG1pZ3JhdGVkPC9saT4KICAgIDxsaT48c3Ryb25nPk1pZ3JhdGU6PC9zdHJvbmc+IFN0YXJ0IHRoZSBtaWdyYXRpb24gcHJvY2VzczwvbGk+Cjwvb2w+Cgo8aDQ+RGF0YSBNYXBwaW5nPC9oND4KPHVsPgogICAgPGxpPjxzdHJvbmc+QXJ0aWNsZXM6PC9zdHJvbmc+IENHQmxvZyBhcnRpY2xlcyDihpIgTElTRSBpdGVtczwvbGk+CiAgICA8bGk+PHN0cm9uZz5DYXRlZ29yaWVzOjwvc3Ryb25nPiBDR0Jsb2cgY2F0ZWdvcmllcyDihpIgTElTRSBjYXRlZ29yaWVzIChoaWVyYXJjaHkgcHJlc2VydmVkKTwvbGk+CiAgICA8bGk+PHN0cm9uZz5DdXN0b20gRmllbGRzOjwvc3Ryb25nPiBDR0Jsb2cgZmllbGQgZGVmaW5pdGlvbnMg4oaSIExJU0UgZmllbGQgZGVmaW5pdGlvbnM8L2xpPgogICAgPGxpPjxzdHJvbmc+RmllbGQgVmFsdWVzOjwvc3Ryb25nPiBDR0Jsb2cgZmllbGQgdmFsdWVzIOKGkiBMSVNFIGl0ZW0gZmllbGQgdmFsdWVzPC9saT4KPC91bD4KCjxoND5JbXBvcnRhbnQgTm90ZXM8L2g0Pgo8dWw+CiAgICA8bGk+TWlncmF0aW9uIGNhbm5vdCBiZSB1bmRvbmUgYXV0b21hdGljYWxseS4gQmFja3VwIHlvdXIgZGF0YSBiZWZvcmUgbWlncmF0aW9uLjwvbGk+CiAgICA8bGk+RmllbGQgdHlwZXMgYXJlIGF1dG9tYXRpY2FsbHkgbWFwcGVkIGZyb20gQ0dCbG9nIHRvIExJU0UgZm9ybWF0LjwvbGk+CiAgICA8bGk+Q2F0ZWdvcnkgaGllcmFyY2hpZXMgYXJlIHByZXNlcnZlZCBkdXJpbmcgbWlncmF0aW9uLjwvbGk+CiAgICA8bGk+QXJ0aWNsZSBVUkxzIGFuZCBtZXRhZGF0YSBhcmUgcHJlc2VydmVkLjwvbGk+CjwvdWw+CjwvZGl2PjxoMz5QYXJhbWV0ZXJzPC9oMz48dWw+PGxpPjxlbT4ob3B0aW9uYWwpPC9lbT4gYWN0aW9uPSJkZWZhdWx0YWRtaW4iIC0gQWN0aW9uIHRvIHBlcmZvcm08L2xpPjwvdWw+]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBtYXN0ZXIzMzk1ICZsdDtpbmZvQG5ld3N0YXJnZXRlZC5jb20mZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMS4wLjA8YnIgLz48YnIgLz5DaGFuZ2UgSGlzdG9yeTo8YnIgLz48dWw+CjxsaT48c3Ryb25nPlZlcnNpb24gMS4wLjAsIDIwMjUsIG1hc3RlcjMzOTU8L3N0cm9uZz46IEluaXRpYWwgcmVsZWFzZQogICAgPHVsPgogICAgICAgIDxsaT5NaWdyYXRlIGFydGljbGVzIGZyb20gQ0dCbG9nIHRvIExJU0U8L2xpPgogICAgICAgIDxsaT5NaWdyYXRlIGNhdGVnb3JpZXMgd2l0aCBoaWVyYXJjaHkgcHJlc2VydmF0aW9uPC9saT4KICAgICAgICA8bGk+TWlncmF0ZSBjdXN0b20gZmllbGQgZGVmaW5pdGlvbnMgYW5kIHZhbHVlczwvbGk+CiAgICAgICAgPGxpPkNyZWF0ZSBuZXcgTElTRSBpbnN0YW5jZXMgb3IgdXNlIGV4aXN0aW5nIG9uZXM8L2xpPgogICAgICAgIDxsaT5QcmV2aWV3IG1pZ3JhdGlvbiBkYXRhIGJlZm9yZSBleGVjdXRpbmc8L2xpPgogICAgICAgIDxsaT5Db21wcmVoZW5zaXZlIGVycm9yIGhhbmRsaW5nIGFuZCBsb2dnaW5nPC9saT4KICAgIDwvdWw+CjwvbGk+CjwvdWw+PGJyIC8+]]></about>
	<description><![CDATA[Migrates data from CGBlog module to LISE instances. Supports creating new LISE instances or copying to existing ones.]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.admin_settings_save.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEFkbWluIFNldHRpbmdzIFNhdmUgQWN0aW9uIGZvciBNQVNfQ0dCbG9nVG9MSVNFCiAqIEJhc2VkIG9uIE1BU19EaXNxdXMgYW5kIE1BU19BSUFzc2lzdGFudCBwYXR0ZXJuCiAqLwoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykpIGV4aXQ7CgppZiAoISR0aGlzLT5WaXNpYmxlVG9BZG1pblVzZXIoKSkgewogICAgcmV0dXJuICR0aGlzLT5EaXNwbGF5RXJyb3JQYWdlKCRpZCwgJHBhcmFtcywgJHJldHVybmlkLCAkdGhpcy0+TGFuZygnYWNjZXNzZGVuaWVkJykpOwp9CgovLyBIYW5kbGUgc2hvd2luZyBkb25hdGlvbnMgdGFiIGFnYWluCmlmIChpc3NldCgkcGFyYW1zWyJzaG93ZG9uYXRpb25zdGFiIl0pICYmICRwYXJhbXNbInNob3dkb25hdGlvbnN0YWIiXSA9PSAiMSIpIHsKICAgIC8vIFJlbW92ZSB0aGUgcHJlZmVyZW5jZSB0byBzaG93IHRoZSBkb25hdGlvbnMgdGFiIGFnYWluCiAgICAkdGhpcy0+UmVtb3ZlUHJlZmVyZW5jZSgiaGlkZWRvbmF0aW9uc3RhYiIpOwogICAgJG1zZyA9ICR0aGlzLT5MYW5nKCdzZXR0aW5nc3VwZGF0ZWQnKTsKfSBlbHNlIHsKICAgIC8vIEhpZGUgdGhlIGRvbmF0aW9ucyB0YWIKICAgICR0aGlzLT5TZXRQcmVmZXJlbmNlKCJoaWRlZG9uYXRpb25zdGFiIiwgJHRoaXMtPkdldFZlcnNpb24oKSk7CiAgICAkbXNnID0gJHRoaXMtPkxhbmcoJ3NldHRpbmdzdXBkYXRlZCcpOwp9CgovLyBwdXQgbWVudGlvbiBpbnRvIHRoZSBhZG1pbiBsb2cKJHRoaXMtPkF1ZGl0KDAsIAogICAgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAKICAgICR0aGlzLT5MYW5nKCdwcmVmc3VwZGF0ZWQnKSk7CgovLyByZWRpcmVjdCBiYWNrIHRvIGFkbWluIHdpdGggbWVzc2FnZQokdGhpcy0+UmVkaXJlY3QoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCBhcnJheSgnbXNnJyA9PiAkbXNnLCAnYWN0aXZldGFiJyA9PiAnYWRtaW5zZXR0aW5ncycpKTsKCj8+Cgo=]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIERlZmF1bHQgQWRtaW4gSW50ZXJmYWNlIGZvciBNQVNfQ0dCbG9nVG9MSVNFCiAqIENvbXBhdGlibGUgd2l0aCBQSFAgNy40LTguNgogKiBVc2VzIENNU01TIG5hdGl2ZSB0YWJzIGxpa2UgTUFTX0Rpc3F1cyBhbmQgTUFTX0FJQXNzaXN0YW50CiAqLwoKaWYgKCFpc3NldCgkZ0NtcykpIHsKICAgIGV4aXQ7Cn0KCmlmICghJHRoaXMtPlZpc2libGVUb0FkbWluVXNlcigpKSB7CiAgICBlY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPjxwIGNsYXNzPSJwYWdldGV4dCI+QWNjZXNzIGRlbmllZC4gUGxlYXNlIGNoZWNrIHlvdXIgcGVybWlzc2lvbnMuPC9wPjwvZGl2Pic7CiAgICByZXR1cm47Cn0KCi8vIEhhbmRsZSBoaWRpbmcgZG9uYXRpb25zIHRhYgppZiAoaXNzZXQoJHBhcmFtc1siaGlkZWRvbmF0aW9uc3N1Ym1pdCJdKSkgewogICAgJHRoaXMtPlNldFByZWZlcmVuY2UoImhpZGVkb25hdGlvbnN0YWIiLCAkdGhpcy0+R2V0VmVyc2lvbigpKTsKfQoKLy8gSGFuZGxlIHN1Y2Nlc3MvZXJyb3IgbWVzc2FnZXMKaWYgKCFlbXB0eSgkcGFyYW1zWydtc2cnXSkpIHsKICAgIGVjaG8gJHRoaXMtPlNob3dNZXNzYWdlKCR0aGlzLT5MYW5nKCRwYXJhbXNbJ21zZyddKSk7Cn0KCmlmICghZW1wdHkoJHBhcmFtc1snZXJyb3InXSkpIHsKICAgIGVjaG8gJHRoaXMtPlNob3dFcnJvcnMoYXJyYXkoJHRoaXMtPkxhbmcoJHBhcmFtc1snZXJyb3InXSkpKTsKfQoKLy8gR2V0IGN1cnJlbnQgdGFiCiRhY3RpdmV0YWIgPSBpc3NldCgkcGFyYW1zWyJhY3RpdmV0YWIiXSkgPyAkcGFyYW1zWyJhY3RpdmV0YWIiXSA6ICIiOwoKLy8gU3RhcnQgdGFicwplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCJtaWdyYXRlIiwgJHRoaXMtPkxhbmcoJ3RhYl9taWdyYXRlJyksICgkYWN0aXZldGFiID09ICIiIHx8ICRhY3RpdmV0YWIgPT0gIm1pZ3JhdGUiKSk7CmVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigiYWRtaW5zZXR0aW5ncyIsICR0aGlzLT5MYW5nKCd0YWJfYWRtaW5zZXR0aW5ncycpLCAoJGFjdGl2ZXRhYiA9PSAiYWRtaW5zZXR0aW5ncyIpKTsKaWYgKCR0aGlzLT5TaG93RG9uYXRpb25zVGFiKCkpIHsKICAgIGVjaG8gJHRoaXMtPlNldFRhYkhlYWRlcigiZG9uYXRpb25zIiwgJHRoaXMtPkxhbmcoJ3RhYl9kb25hdGlvbnMnKSwgKCRhY3RpdmV0YWIgPT0gImRvbmF0aW9ucyIpKTsKfQplY2hvICR0aGlzLT5FbmRUYWJIZWFkZXJzKCk7CmVjaG8gJHRoaXMtPlN0YXJ0VGFiQ29udGVudCgpOwoKLy8gTWlncmF0aW9uIHRhYgplY2hvICR0aGlzLT5TdGFydFRhYigibWlncmF0ZSIpOwplY2hvICc8aDI+JyAuICR0aGlzLT5MYW5nKCdtaWdyYXRpb25fdGl0bGUnKSAuICc8L2gyPic7CmVjaG8gJzxwPicgLiAkdGhpcy0+TGFuZygnbWlncmF0aW9uX2Rlc2NyaXB0aW9uJykgLiAnPC9wPic7CgovLyBDaGVjayBwcmVyZXF1aXNpdGVzCmVjaG8gJzxoMz4nIC4gJHRoaXMtPkxhbmcoJ21pZ3JhdGlvbl9wcmVyZXF1aXNpdGVzJykgLiAnPC9oMz4nOwplY2hvICc8cD4nIC4gJHRoaXMtPkxhbmcoJ21pZ3JhdGlvbl9wcmVyZXF1aXNpdGVzX2Rlc2MnKSAuICc8L3A+JzsKZWNobyAnPHVsPic7CgokY2dibG9nX2F2YWlsYWJsZSA9ICR0aGlzLT5Jc0NHQmxvZ0F2YWlsYWJsZSgpOwokbGlzZV9hdmFpbGFibGUgPSAkdGhpcy0+SXNMSVNFQXZhaWxhYmxlKCk7CgplY2hvICc8bGk+JyAuICR0aGlzLT5MYW5nKCdtaWdyYXRpb25fcHJlcmVxdWlzaXRlc19jZ2Jsb2cnKSAuICc6ICc7CmVjaG8gJGNnYmxvZ19hdmFpbGFibGUgPyAnPHN0cm9uZyBzdHlsZT0iY29sb3I6IGdyZWVuOyI+4pyTIEluc3RhbGxlZDwvc3Ryb25nPicgOiAnPHN0cm9uZyBzdHlsZT0iY29sb3I6IHJlZDsiPuKclyBOb3QgSW5zdGFsbGVkPC9zdHJvbmc+JzsKZWNobyAnPC9saT4nOwoKZWNobyAnPGxpPicgLiAkdGhpcy0+TGFuZygnbWlncmF0aW9uX3ByZXJlcXVpc2l0ZXNfbGlzZScpIC4gJzogJzsKZWNobyAkbGlzZV9hdmFpbGFibGUgPyAnPHN0cm9uZyBzdHlsZT0iY29sb3I6IGdyZWVuOyI+4pyTIEluc3RhbGxlZDwvc3Ryb25nPicgOiAnPHN0cm9uZyBzdHlsZT0iY29sb3I6IHJlZDsiPuKclyBOb3QgSW5zdGFsbGVkPC9zdHJvbmc+JzsKZWNobyAnPC9saT4nOwoKJHN0YXRzID0gYXJyYXkoJ2FydGljbGVzJyA9PiAwLCAnY2F0ZWdvcmllcycgPT4gMCwgJ2ZpZWxkZGVmcycgPT4gMCwgJ2ZpZWxkdmFscycgPT4gMCk7CmlmICgkY2dibG9nX2F2YWlsYWJsZSkgewogICAgdHJ5IHsKICAgICAgICAkc3RhdHMgPSAkdGhpcy0+R2V0Q0dCbG9nU3RhdHMoKTsKICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgIC8vIFN0YXRzIGZhaWxlZCwgdXNlIGVtcHR5IGFycmF5CiAgICB9Cn0KJGhhc19kYXRhID0gKCRzdGF0c1snYXJ0aWNsZXMnXSA+IDAgfHwgJHN0YXRzWydjYXRlZ29yaWVzJ10gPiAwIHx8ICRzdGF0c1snZmllbGRkZWZzJ10gPiAwKTsKCmVjaG8gJzxsaT4nIC4gJHRoaXMtPkxhbmcoJ21pZ3JhdGlvbl9wcmVyZXF1aXNpdGVzX2RhdGEnKSAuICc6ICc7CmVjaG8gJGhhc19kYXRhID8gJzxzdHJvbmcgc3R5bGU9ImNvbG9yOiBncmVlbjsiPuKckyBEYXRhIEZvdW5kPC9zdHJvbmc+JyA6ICc8c3Ryb25nIHN0eWxlPSJjb2xvcjogcmVkOyI+4pyXIE5vIERhdGE8L3N0cm9uZz4nOwplY2hvICc8L2xpPic7CmVjaG8gJzwvdWw+JzsKCmlmICghJGNnYmxvZ19hdmFpbGFibGUgfHwgISRsaXNlX2F2YWlsYWJsZSkgewogICAgZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij48cCBjbGFzcz0icGFnZXRleHQiIHN0eWxlPSJjb2xvcjogcmVkOyI+UGxlYXNlIGluc3RhbGwgQ0dCbG9nIGFuZCBMSVNFIG1vZHVsZXMgYmVmb3JlIHVzaW5nIHRoaXMgbWlncmF0aW9uIHRvb2wuPC9wPjwvZGl2Pic7Cn0gZWxzZWlmICghJGhhc19kYXRhKSB7CiAgICBlY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPjxwIGNsYXNzPSJwYWdldGV4dCIgc3R5bGU9ImNvbG9yOiByZWQ7Ij5ObyBDR0Jsb2cgZGF0YSBmb3VuZCB0byBtaWdyYXRlLjwvcD48L2Rpdj4nOwp9IGVsc2UgewogICAgLy8gU3RhdGlzdGljcwogICAgZWNobyAnPGgzPicgLiAkdGhpcy0+TGFuZygnc3RhdGlzdGljc190aXRsZScpIC4gJzwvaDM+JzsKICAgIGVjaG8gJzx1bD4nOwogICAgZWNobyAnPGxpPicgLiAkdGhpcy0+TGFuZygnc3RhdGlzdGljc19hcnRpY2xlcycpIC4gJzogJyAuICRzdGF0c1snYXJ0aWNsZXMnXSAuICc8L2xpPic7CiAgICBlY2hvICc8bGk+JyAuICR0aGlzLT5MYW5nKCdzdGF0aXN0aWNzX2NhdGVnb3JpZXMnKSAuICc6ICcgLiAkc3RhdHNbJ2NhdGVnb3JpZXMnXSAuICc8L2xpPic7CiAgICBlY2hvICc8bGk+JyAuICR0aGlzLT5MYW5nKCdzdGF0aXN0aWNzX2ZpZWxkZGVmcycpIC4gJzogJyAuICRzdGF0c1snZmllbGRkZWZzJ10gLiAnPC9saT4nOwogICAgZWNobyAnPGxpPicgLiAkdGhpcy0+TGFuZygnc3RhdGlzdGljc19maWVsZHZhbHMnKSAuICc6ICcgLiAkc3RhdHNbJ2ZpZWxkdmFscyddIC4gJzwvbGk+JzsKICAgIGVjaG8gJzwvdWw+JzsKICAgIAogICAgLy8gTG9hZCBtaWdyYXRpb24gZm9ybQogICAgdHJ5IHsKICAgICAgICAkZnVuY3Rpb25fZmlsZSA9ICR0aGlzLT5HZXRNb2R1bGVQYXRoKCkgLiAnL2Z1bmN0aW9uLmFkbWluX21pZ3JhdGV0YWIucGhwJzsKICAgICAgICBpZiAoZmlsZV9leGlzdHMoJGZ1bmN0aW9uX2ZpbGUpKSB7CiAgICAgICAgICAgIHJlcXVpcmVfb25jZSgkZnVuY3Rpb25fZmlsZSk7CiAgICAgICAgfQogICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij48cCBjbGFzcz0icGFnZXRleHQiIHN0eWxlPSJjb2xvcjogcmVkOyI+RXJyb3IgbG9hZGluZyBtaWdyYXRpb24gaW50ZXJmYWNlOiAnIC4gaHRtbHNwZWNpYWxjaGFycygkZS0+Z2V0TWVzc2FnZSgpKSAuICc8L3A+PC9kaXY+JzsKICAgIH0gY2F0Y2ggKEVycm9yICRlKSB7CiAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij48cCBjbGFzcz0icGFnZXRleHQiIHN0eWxlPSJjb2xvcjogcmVkOyI+RmF0YWwgRXJyb3I6ICcgLiBodG1sc3BlY2lhbGNoYXJzKCRlLT5nZXRNZXNzYWdlKCkpIC4gJzwvcD48L2Rpdj4nOwogICAgfQp9CgplY2hvICR0aGlzLT5FbmRUYWIoKTsKCi8vIEFkbWluIFNldHRpbmdzIHRhYgplY2hvICR0aGlzLT5TdGFydFRhYigiYWRtaW5zZXR0aW5ncyIpOwppbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pIC4gIi9mdW5jdGlvbi5hZG1pbl9zZXR0aW5ncy5waHAiKTsKZWNobyAkdGhpcy0+RW5kVGFiKCk7CgovLyBEb25hdGlvbnMgdGFiCmlmICgkdGhpcy0+U2hvd0RvbmF0aW9uc1RhYigpKSB7CiAgICBlY2hvICR0aGlzLT5TdGFydFRhYigiZG9uYXRpb25zIik7CiAgICBpbmNsdWRlKGRpcm5hbWUoX19GSUxFX18pIC4gIi9mdW5jdGlvbi5kb25hdGlvbnMucGhwIik7CiAgICBlY2hvICR0aGlzLT5FbmRUYWIoKTsKfQoKZWNobyAkdGhpcy0+RW5kVGFiQ29udGVudCgpOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/function.admin_migratetab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE1pZ3JhdGlvbiBUYWIgRnVuY3Rpb24KICogTWFpbiBtaWdyYXRpb24gaW50ZXJmYWNlCiAqLwoKLy8gTm90ZTogVGhpcyBmaWxlIGlzIGluY2x1ZGVkIGZyb20gYWN0aW9uLmRlZmF1bHRhZG1pbi5waHAsIHNvIGNtc21zKCkgc2hvdWxkIGFscmVhZHkgYmUgYXZhaWxhYmxlCgovLyBGdW5jdGlvbiB0byBsb2FkIGNsYXNzZXMgb25seSB3aGVuIG5lZWRlZApmdW5jdGlvbiBsb2FkX21pZ3JhdGlvbl9jbGFzc2VzKCRtb2R1bGUpIHsKICAgIHN0YXRpYyAkY2xhc3Nlc19sb2FkZWQgPSBmYWxzZTsKICAgIGlmICgkY2xhc3Nlc19sb2FkZWQpIHsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIAogICAgdHJ5IHsKICAgICAgICAkbW9kdWxlX3BhdGggPSAkbW9kdWxlLT5HZXRNb2R1bGVQYXRoKCk7CiAgICAgICAgaWYgKCFpc19kaXIoJG1vZHVsZV9wYXRoIC4gJy9saWInKSkgewogICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdMaWJyYXJ5IGRpcmVjdG9yeSBub3QgZm91bmQ6ICcgLiAkbW9kdWxlX3BhdGggLiAnL2xpYicpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAkdmFsaWRhdG9yX2ZpbGUgPSAkbW9kdWxlX3BhdGggLiAnL2xpYi9jbGFzcy5NaWdyYXRpb25WYWxpZGF0b3IucGhwJzsKICAgICAgICAkbWFwcGVyX2ZpbGUgPSAkbW9kdWxlX3BhdGggLiAnL2xpYi9jbGFzcy5EYXRhTWFwcGVyLnBocCc7CiAgICAgICAgJGVuZ2luZV9maWxlID0gJG1vZHVsZV9wYXRoIC4gJy9saWIvY2xhc3MuTWlncmF0aW9uRW5naW5lLnBocCc7CiAgICAgICAgCiAgICAgICAgaWYgKCFmaWxlX2V4aXN0cygkdmFsaWRhdG9yX2ZpbGUpKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1ZhbGlkYXRvciBjbGFzcyBub3QgZm91bmQ6ICcgLiAkdmFsaWRhdG9yX2ZpbGUpOwogICAgICAgIH0KICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRtYXBwZXJfZmlsZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignRGF0YU1hcHBlciBjbGFzcyBub3QgZm91bmQ6ICcgLiAkbWFwcGVyX2ZpbGUpOwogICAgICAgIH0KICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRlbmdpbmVfZmlsZSkpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignTWlncmF0aW9uRW5naW5lIGNsYXNzIG5vdCBmb3VuZDogJyAuICRlbmdpbmVfZmlsZSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJlcXVpcmVfb25jZSgkdmFsaWRhdG9yX2ZpbGUpOwogICAgICAgIHJlcXVpcmVfb25jZSgkbWFwcGVyX2ZpbGUpOwogICAgICAgIHJlcXVpcmVfb25jZSgkZW5naW5lX2ZpbGUpOwogICAgICAgICRjbGFzc2VzX2xvYWRlZCA9IHRydWU7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPjxwIGNsYXNzPSJwYWdldGV4dCIgc3R5bGU9ImNvbG9yOiByZWQ7Ij5FcnJvciBsb2FkaW5nIGNsYXNzZXM6ICcgLiBodG1sc3BlY2lhbGNoYXJzKCRlLT5nZXRNZXNzYWdlKCkpIC4gJzwvcD48L2Rpdj4nOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0gY2F0Y2ggKEVycm9yICRlKSB7CiAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij48cCBjbGFzcz0icGFnZXRleHQiIHN0eWxlPSJjb2xvcjogcmVkOyI+RmF0YWwgRXJyb3IgbG9hZGluZyBjbGFzc2VzOiAnIC4gaHRtbHNwZWNpYWxjaGFycygkZS0+Z2V0TWVzc2FnZSgpKSAuICc8L3A+PC9kaXY+JzsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn0KCi8vIEhhbmRsZSBwcmV2aWV3IHJlcXVlc3QKaWYgKGlzc2V0KCRwYXJhbXNbJ3ByZXZpZXcnXSkpIHsKICAgIGlmICghbG9hZF9taWdyYXRpb25fY2xhc3NlcygkdGhpcykpIHsKICAgICAgICByZXR1cm47CiAgICB9CiAgICB0cnkgewogICAgICAgICR2YWxpZGF0b3IgPSBuZXcgTWlncmF0aW9uVmFsaWRhdG9yKCR0aGlzKTsKICAgICAgICAkdmFsaWRhdG9yLT5WYWxpZGF0ZVByZXJlcXVpc2l0ZXMoKTsKICAgICAgICAkZXJyb3JzID0gJHZhbGlkYXRvci0+R2V0RXJyb3JzKCk7CiAgICAgICAgCiAgICAgICAgaWYgKCFlbXB0eSgkZXJyb3JzKSkgewogICAgICAgICAgICBlY2hvICR0aGlzLT5TaG93RXJyb3JzKCRlcnJvcnMpOwogICAgICAgICAgICAkdGhpcy0+QXVkaXQoMCwgJHRoaXMtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAnTWlncmF0aW9uIHByZXZpZXcgZmFpbGVkOiAnIC4gaW1wbG9kZSgnLCAnLCAkZXJyb3JzKSk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJHN0YXRzID0gJHRoaXMtPkdldENHQmxvZ1N0YXRzKCk7CiAgICAgICAgCiAgICAgICAgLy8gTG9nIHByZXZpZXcgdG8gYWRtaW4gbG9nCiAgICAgICAgJHByZXZpZXdfbXNnID0gc3ByaW50ZigKICAgICAgICAgICAgJ01pZ3JhdGlvbiBwcmV2aWV3OiAlZCBhcnRpY2xlcywgJWQgY2F0ZWdvcmllcywgJWQgZmllbGQgZGVmaW5pdGlvbnMsICVkIGZpZWxkIHZhbHVlcyByZWFkeSBmb3IgbWlncmF0aW9uJywKICAgICAgICAgICAgJHN0YXRzWydhcnRpY2xlcyddLAogICAgICAgICAgICAkc3RhdHNbJ2NhdGVnb3JpZXMnXSwKICAgICAgICAgICAgJHN0YXRzWydmaWVsZGRlZnMnXSwKICAgICAgICAgICAgJHN0YXRzWydmaWVsZHZhbHMnXQogICAgICAgICk7CiAgICAgICAgJHRoaXMtPkF1ZGl0KDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHByZXZpZXdfbXNnKTsKICAgICAgICAKICAgICAgICBlY2hvICc8aDI+JyAuICR0aGlzLT5MYW5nKCdwcmV2aWV3X3RpdGxlJykgLiAnPC9oMj4nOwogICAgICAgIGVjaG8gJzxwPicgLiAkdGhpcy0+TGFuZygncHJldmlld19kZXNjcmlwdGlvbicpIC4gJzwvcD4nOwogICAgICAgIGVjaG8gJzx1bD4nOwogICAgICAgIGVjaG8gJzxsaT4nIC4gJHRoaXMtPkxhbmcoJ3ByZXZpZXdfYXJ0aWNsZXNfY291bnQnLCAkc3RhdHNbJ2FydGljbGVzJ10pIC4gJzwvbGk+JzsKICAgICAgICBlY2hvICc8bGk+JyAuICR0aGlzLT5MYW5nKCdwcmV2aWV3X2NhdGVnb3JpZXNfY291bnQnLCAkc3RhdHNbJ2NhdGVnb3JpZXMnXSkgLiAnPC9saT4nOwogICAgICAgIGVjaG8gJzxsaT4nIC4gJHRoaXMtPkxhbmcoJ3ByZXZpZXdfZmllbGRkZWZzX2NvdW50JywgJHN0YXRzWydmaWVsZGRlZnMnXSkgLiAnPC9saT4nOwogICAgICAgIGVjaG8gJzxsaT4nIC4gJHRoaXMtPkxhbmcoJ3ByZXZpZXdfZmllbGR2YWxzX2NvdW50JywgJHN0YXRzWydmaWVsZHZhbHMnXSkgLiAnPC9saT4nOwogICAgICAgIGVjaG8gJzwvdWw+JzsKICAgICAgICAKICAgICAgICAvLyBDcmVhdGUgcHJvcGVyIENhbmNlbCBsaW5rIGJhY2sgdG8gbWlncmF0aW9uIHRhYiAoY2xlYXJzIHByZXZpZXcgcGFyYW1ldGVyKQogICAgICAgIC8vIFVzZSBDcmVhdGVMaW5rIGRpcmVjdGx5IC0gaXQgd2lsbCBpbmNsdWRlIGFsbCBuZWNlc3Nhcnkgc2Vzc2lvbiB0b2tlbnMKICAgICAgICBlY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPic7CiAgICAgICAgZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKICAgICAgICBlY2hvICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ21pZ3JhdGVfY2FuY2VsJyksIGFycmF5KCdhY3RpdmV0YWInID0+ICdtaWdyYXRlJyksICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAnY2xhc3M9ImNtc19idXR0b25saW5rIicpOwogICAgICAgIGVjaG8gJzwvcD4nOwogICAgICAgIGVjaG8gJzwvZGl2Pic7CiAgICAgICAgcmV0dXJuOwogICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAgICAgZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij48cCBjbGFzcz0icGFnZXRleHQiIHN0eWxlPSJjb2xvcjogcmVkOyI+RXJyb3I6ICcgLiBodG1sc3BlY2lhbGNoYXJzKCRlLT5nZXRNZXNzYWdlKCkpIC4gJzwvcD48L2Rpdj4nOwogICAgICAgIHJldHVybjsKICAgIH0KfQoKLy8gSGFuZGxlIG1pZ3JhdGlvbiBleGVjdXRpb24KaWYgKGlzc2V0KCRwYXJhbXNbJ21pZ3JhdGUnXSkpIHsKICAgIGlmICghbG9hZF9taWdyYXRpb25fY2xhc3NlcygkdGhpcykpIHsKICAgICAgICByZXR1cm47CiAgICB9CiAgICB0cnkgewogICAgICAgICRlbmdpbmUgPSBuZXcgTWlncmF0aW9uRW5naW5lKCR0aGlzKTsKICAgICAgICAkZW5naW5lLT5TZXRQYXJhbWV0ZXJzKCRwYXJhbXMpOwogICAgICAgIAogICAgICAgICRyZXN1bHQgPSAkZW5naW5lLT5FeGVjdXRlKCk7CiAgICAgICAgCiAgICAgICAgaWYgKCRyZXN1bHQpIHsKICAgICAgICAgICAgJHJlc3VsdHMgPSAkZW5naW5lLT5HZXRSZXN1bHRzKCk7CiAgICAgICAgICAgICR3YXJuaW5ncyA9ICRlbmdpbmUtPkdldFdhcm5pbmdzKCk7CiAgICAgICAgICAgIAogICAgICAgICAgICBlY2hvICc8aDI+JyAuICR0aGlzLT5MYW5nKCdyZXN1bHRzX3RpdGxlJykgLiAnPC9oMj4nOwogICAgICAgICAgICBlY2hvICc8dWw+JzsKICAgICAgICAgICAgZWNobyAnPGxpPicgLiAkdGhpcy0+TGFuZygncmVzdWx0c19hcnRpY2xlc19taWdyYXRlZCcsICRyZXN1bHRzWydhcnRpY2xlcyddKSAuICc8L2xpPic7CiAgICAgICAgICAgIGVjaG8gJzxsaT4nIC4gJHRoaXMtPkxhbmcoJ3Jlc3VsdHNfY2F0ZWdvcmllc19taWdyYXRlZCcsICRyZXN1bHRzWydjYXRlZ29yaWVzJ10pIC4gJzwvbGk+JzsKICAgICAgICAgICAgZWNobyAnPGxpPicgLiAkdGhpcy0+TGFuZygncmVzdWx0c19maWVsZGRlZnNfbWlncmF0ZWQnLCAkcmVzdWx0c1snZmllbGRkZWZzJ10pIC4gJzwvbGk+JzsKICAgICAgICAgICAgZWNobyAnPGxpPicgLiAkdGhpcy0+TGFuZygncmVzdWx0c19maWVsZHZhbHNfbWlncmF0ZWQnLCAkcmVzdWx0c1snZmllbGR2YWxzJ10pIC4gJzwvbGk+JzsKICAgICAgICAgICAgZWNobyAnPC91bD4nOwogICAgICAgICAgICAKICAgICAgICAgICAgaWYgKCFlbXB0eSgkd2FybmluZ3MpKSB7CiAgICAgICAgICAgICAgICBlY2hvICc8aDM+JyAuICR0aGlzLT5MYW5nKCdyZXN1bHRzX3dhcm5pbmdzJywgY291bnQoJHdhcm5pbmdzKSkgLiAnPC9oMz4nOwogICAgICAgICAgICAgICAgZWNobyAnPHVsPic7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkd2FybmluZ3MgYXMgJHdhcm5pbmcpIHsKICAgICAgICAgICAgICAgICAgICBlY2hvICc8bGk+JyAuIGh0bWxzcGVjaWFsY2hhcnMoJHdhcm5pbmcpIC4gJzwvbGk+JzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVjaG8gJzwvdWw+JzsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gQXVkaXQgbG9nIGlzIGFscmVhZHkgZG9uZSBieSBNaWdyYXRpb25FbmdpbmUKICAgICAgICAgICAgJHRoaXMtPlJlZGlyZWN0KCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgYXJyYXkoJ2FjdGl2ZXRhYicgPT4gJ21pZ3JhdGUnLCAnbXNnJyA9PiAnbWlncmF0aW9uX2NvbXBsZXRlZCcpKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICRlcnJvcnMgPSAkZW5naW5lLT5HZXRFcnJvcnMoKTsKICAgICAgICAgICAgZWNobyAkdGhpcy0+U2hvd0Vycm9ycygkZXJyb3JzKTsKICAgICAgICAgICAgLy8gQXVkaXQgbG9nIGlzIGFscmVhZHkgZG9uZSBieSBNaWdyYXRpb25FbmdpbmUKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgZWNobyAnPHA+JyAuICR0aGlzLT5DcmVhdGVMaW5rKCRpZCwgJ2RlZmF1bHRhZG1pbicsICRyZXR1cm5pZCwgJHRoaXMtPkxhbmcoJ21pZ3JhdGVfY2FuY2VsJyksIGFycmF5KCdhY3RpdmV0YWInID0+ICdtaWdyYXRlJykpIC4gJzwvcD4nOwogICAgICAgIHJldHVybjsKICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgIGVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+PHAgY2xhc3M9InBhZ2V0ZXh0IiBzdHlsZT0iY29sb3I6IHJlZDsiPkVycm9yIGR1cmluZyBtaWdyYXRpb246ICcgLiBodG1sc3BlY2lhbGNoYXJzKCRlLT5nZXRNZXNzYWdlKCkpIC4gJzwvcD48L2Rpdj4nOwogICAgICAgIGVjaG8gJzxwPicgLiAkdGhpcy0+Q3JlYXRlTGluaygkaWQsICdkZWZhdWx0YWRtaW4nLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdtaWdyYXRlX2NhbmNlbCcpLCBhcnJheSgnYWN0aXZldGFiJyA9PiAnbWlncmF0ZScpKSAuICc8L3A+JzsKICAgICAgICByZXR1cm47CiAgICB9Cn0KCi8vIE1haW4gbWlncmF0aW9uIGZvcm0gLSBETyBOT1QgbG9hZCBjbGFzc2VzIGhlcmUsIG9ubHkgc2hvdyB0aGUgZm9ybQovLyBHZXQgc3RhdHMgd2l0aG91dCBsb2FkaW5nIGNsYXNzZXMKdHJ5IHsKICAgICRzdGF0cyA9ICR0aGlzLT5HZXRDR0Jsb2dTdGF0cygpOwp9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgICRzdGF0cyA9IGFycmF5KCdhcnRpY2xlcycgPT4gMCwgJ2NhdGVnb3JpZXMnID0+IDAsICdmaWVsZGRlZnMnID0+IDAsICdmaWVsZHZhbHMnID0+IDApOwp9IGNhdGNoIChFcnJvciAkZSkgewogICAgJHN0YXRzID0gYXJyYXkoJ2FydGljbGVzJyA9PiAwLCAnY2F0ZWdvcmllcycgPT4gMCwgJ2ZpZWxkZGVmcycgPT4gMCwgJ2ZpZWxkdmFscycgPT4gMCk7Cn0KCnRyeSB7CiAgICAkbGlzZV9pbnN0YW5jZXMgPSAkdGhpcy0+R2V0TElTRUluc3RhbmNlcygpOwp9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgICRsaXNlX2luc3RhbmNlcyA9IGFycmF5KCk7Cn0gY2F0Y2ggKEVycm9yICRlKSB7CiAgICAkbGlzZV9pbnN0YW5jZXMgPSBhcnJheSgpOwp9CgovLyBEZWZhdWx0IHZhbHVlcwokaW5zdGFuY2VfbmFtZSA9IGlzc2V0KCRwYXJhbXNbJ2luc3RhbmNlX25hbWUnXSkgPyAkcGFyYW1zWydpbnN0YW5jZV9uYW1lJ10gOiAnJzsKJGluc3RhbmNlX2ZyaWVuZGx5bmFtZSA9IGlzc2V0KCRwYXJhbXNbJ2luc3RhbmNlX2ZyaWVuZGx5bmFtZSddKSA/ICRwYXJhbXNbJ2luc3RhbmNlX2ZyaWVuZGx5bmFtZSddIDogJyc7CiR1c2VfZXhpc3RpbmcgPSBpc3NldCgkcGFyYW1zWyd1c2VfZXhpc3RpbmcnXSkgPyAoaW50KSRwYXJhbXNbJ3VzZV9leGlzdGluZyddIDogMDsKJGV4aXN0aW5nX2luc3RhbmNlX2lkID0gaXNzZXQoJHBhcmFtc1snZXhpc3RpbmdfaW5zdGFuY2VfaWQnXSkgPyAoaW50KSRwYXJhbXNbJ2V4aXN0aW5nX2luc3RhbmNlX2lkJ10gOiAwOwokbWlncmF0ZV9hcnRpY2xlcyA9IGlzc2V0KCRwYXJhbXNbJ21pZ3JhdGVfYXJ0aWNsZXMnXSkgPyAoaW50KSRwYXJhbXNbJ21pZ3JhdGVfYXJ0aWNsZXMnXSA6IDE7CiRtaWdyYXRlX2NhdGVnb3JpZXMgPSBpc3NldCgkcGFyYW1zWydtaWdyYXRlX2NhdGVnb3JpZXMnXSkgPyAoaW50KSRwYXJhbXNbJ21pZ3JhdGVfY2F0ZWdvcmllcyddIDogMTsKJG1pZ3JhdGVfZmllbGRkZWZzID0gaXNzZXQoJHBhcmFtc1snbWlncmF0ZV9maWVsZGRlZnMnXSkgPyAoaW50KSRwYXJhbXNbJ21pZ3JhdGVfZmllbGRkZWZzJ10gOiAxOwokbWlncmF0ZV9maWVsZHZhbHMgPSBpc3NldCgkcGFyYW1zWydtaWdyYXRlX2ZpZWxkdmFscyddKSA/IChpbnQpJHBhcmFtc1snbWlncmF0ZV9maWVsZHZhbHMnXSA6IDE7CgovLyBTdGF0aXN0aWNzCmVjaG8gJzxoMz4nIC4gJHRoaXMtPkxhbmcoJ3N0YXRpc3RpY3NfdGl0bGUnKSAuICc8L2gzPic7CmVjaG8gJzx1bD4nOwplY2hvICc8bGk+JyAuICR0aGlzLT5MYW5nKCdzdGF0aXN0aWNzX2FydGljbGVzJykgLiAnOiAnIC4gJHN0YXRzWydhcnRpY2xlcyddIC4gJzwvbGk+JzsKZWNobyAnPGxpPicgLiAkdGhpcy0+TGFuZygnc3RhdGlzdGljc19jYXRlZ29yaWVzJykgLiAnOiAnIC4gJHN0YXRzWydjYXRlZ29yaWVzJ10gLiAnPC9saT4nOwplY2hvICc8bGk+JyAuICR0aGlzLT5MYW5nKCdzdGF0aXN0aWNzX2ZpZWxkZGVmcycpIC4gJzogJyAuICRzdGF0c1snZmllbGRkZWZzJ10gLiAnPC9saT4nOwplY2hvICc8bGk+JyAuICR0aGlzLT5MYW5nKCdzdGF0aXN0aWNzX2ZpZWxkdmFscycpIC4gJzogJyAuICRzdGF0c1snZmllbGR2YWxzJ10gLiAnPC9saT4nOwplY2hvICc8L3VsPic7CgovLyBNaWdyYXRpb24gZm9ybQplY2hvICR0aGlzLT5DcmVhdGVGb3JtU3RhcnQoJGlkLCAnZGVmYXVsdGFkbWluJywgJHJldHVybmlkLCAncG9zdCcsICcnLCBmYWxzZSwgJycsIGFycmF5KCdhY3RpdmV0YWInID0+ICdtaWdyYXRlJykpOwoKLy8gSW5zdGFuY2Ugc2VsZWN0aW9uCmVjaG8gJzxoMz4nIC4gJHRoaXMtPkxhbmcoJ2luc3RhbmNlX3NlbGVjdGlvbicpIC4gJzwvaDM+JzsKCmVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ2luc3RhbmNlX2NyZWF0ZV9uZXcnKSAuICc6PC9wPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CmVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0UmFkaW8oJGlkLCAndXNlX2V4aXN0aW5nJywgMCwgJHVzZV9leGlzdGluZyA9PSAwLCAnb25jbGljaz0idG9nZ2xlSW5zdGFuY2VPcHRpb25zKCkiJyk7CmVjaG8gJzwvcD4nOwplY2hvICc8L2Rpdj4nOwoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnaW5zdGFuY2VfdXNlX2V4aXN0aW5nJykgLiAnOjwvcD4nOwplY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwplY2hvICR0aGlzLT5DcmVhdGVJbnB1dFJhZGlvKCRpZCwgJ3VzZV9leGlzdGluZycsIDEsICR1c2VfZXhpc3RpbmcgPT0gMSwgJ29uY2xpY2s9InRvZ2dsZUluc3RhbmNlT3B0aW9ucygpIicpOwplY2hvICc8L3A+JzsKZWNobyAnPC9kaXY+JzsKCi8vIE5ldyBpbnN0YW5jZSBvcHRpb25zCmVjaG8gJzxkaXYgaWQ9Im5ld19pbnN0YW5jZV9vcHRpb25zIiBzdHlsZT0iZGlzcGxheTogJyAuICgkdXNlX2V4aXN0aW5nID09IDAgPyAnYmxvY2snIDogJ25vbmUnKSAuICc7Ij4nOwplY2hvICc8ZGl2IGNsYXNzPSJwYWdlb3ZlcmZsb3ciPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdldGV4dCI+JyAuICR0aGlzLT5MYW5nKCdpbnN0YW5jZV9uYW1lJykgLiAnIDxzdHJvbmc+KG9wdGlvbmFsKTwvc3Ryb25nPjo8L3A+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRUZXh0KCRpZCwgJ2luc3RhbmNlX25hbWUnLCAkaW5zdGFuY2VfbmFtZSwgNDAsIDI1NSwgJycsICdpZD0iaW5zdGFuY2VfbmFtZV9maWVsZCIgcGxhY2Vob2xkZXI9IkxlYXZlIGVtcHR5IGZvciBhdXRvLWdlbmVyYXRlZCBuYW1lIicpOwplY2hvICc8YnI+PGVtPicgLiAkdGhpcy0+TGFuZygnaW5zdGFuY2VfbmFtZV9oZWxwJykgLiAnPC9lbT4nOwplY2hvICc8L3A+JzsKZWNobyAnPC9kaXY+JzsKCmVjaG8gJzxkaXYgY2xhc3M9InBhZ2VvdmVyZmxvdyI+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2V0ZXh0Ij4nIC4gJHRoaXMtPkxhbmcoJ2luc3RhbmNlX2ZyaWVuZGx5bmFtZScpIC4gJyA8c3Ryb25nPihvcHRpb25hbCk8L3N0cm9uZz46PC9wPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CmVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0VGV4dCgkaWQsICdpbnN0YW5jZV9mcmllbmRseW5hbWUnLCAkaW5zdGFuY2VfZnJpZW5kbHluYW1lLCA0MCwgMjU1LCAnJywgJ2lkPSJpbnN0YW5jZV9mcmllbmRseW5hbWVfZmllbGQiIHBsYWNlaG9sZGVyPSJMZWF2ZSBlbXB0eSBmb3IgYXV0by1nZW5lcmF0ZWQgbmFtZSInKTsKZWNobyAnPGJyPjxlbT4nIC4gJHRoaXMtPkxhbmcoJ2luc3RhbmNlX2ZyaWVuZGx5bmFtZV9oZWxwJykgLiAnPC9lbT4nOwplY2hvICc8L3A+JzsKZWNobyAnPC9kaXY+JzsKZWNobyAnPC9kaXY+JzsKCi8vIEV4aXN0aW5nIGluc3RhbmNlIG9wdGlvbnMKZWNobyAnPGRpdiBpZD0iZXhpc3RpbmdfaW5zdGFuY2Vfb3B0aW9ucyIgc3R5bGU9ImRpc3BsYXk6ICcgLiAoJHVzZV9leGlzdGluZyA9PSAxID8gJ2Jsb2NrJyA6ICdub25lJykgLiAnOyI+JzsKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnaW5zdGFuY2Vfc2VsZWN0JykgLiAnOjwvcD4nOwplY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwppZiAoZW1wdHkoJGxpc2VfaW5zdGFuY2VzKSkgewogICAgZWNobyAnPHA+JyAuICR0aGlzLT5MYW5nKCdpbnN0YW5jZV9ub25lJykgLiAnPC9wPic7Cn0gZWxzZSB7CiAgICAkb3B0aW9ucyA9IGFycmF5KCk7CiAgICBmb3JlYWNoICgkbGlzZV9pbnN0YW5jZXMgYXMgJGluc3QpIHsKICAgICAgICAkZGlzcGxheV9uYW1lID0gJGluc3QtPm1vZHVsZV9uYW1lOwogICAgICAgIGlmIChtZXRob2RfZXhpc3RzKCRpbnN0LCAnR2V0RnJpZW5kbHlOYW1lJykpIHsKICAgICAgICAgICAgJGRpc3BsYXlfbmFtZSA9ICRpbnN0LT5HZXRGcmllbmRseU5hbWUoKTsKICAgICAgICB9CiAgICAgICAgJG9wdGlvbnNbJGluc3QtPm1vZHVsZV9pZF0gPSAkZGlzcGxheV9uYW1lOwogICAgfQogICAgZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXREcm9wZG93bigkaWQsICdleGlzdGluZ19pbnN0YW5jZV9pZCcsICRvcHRpb25zLCAtMSwgJGV4aXN0aW5nX2luc3RhbmNlX2lkKTsKICAgIGVjaG8gJzxicj48ZW0+JyAuICR0aGlzLT5MYW5nKCdpbnN0YW5jZV9zZWxlY3RfaGVscCcpIC4gJzwvZW0+JzsKfQplY2hvICc8L3A+JzsKZWNobyAnPC9kaXY+JzsKZWNobyAnPC9kaXY+JzsKCi8vIERhdGEgc2VsZWN0aW9uCmVjaG8gJzxoMz4nIC4gJHRoaXMtPkxhbmcoJ2RhdGFfc2VsZWN0aW9uJykgLiAnPC9oMz4nOwoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnZGF0YV9taWdyYXRlX2FydGljbGVzJykgLiAnOjwvcD4nOwplY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwplY2hvICR0aGlzLT5DcmVhdGVJbnB1dENoZWNrYm94KCRpZCwgJ21pZ3JhdGVfYXJ0aWNsZXMnLCAxLCAkbWlncmF0ZV9hcnRpY2xlcyk7CmVjaG8gJzwvcD4nOwplY2hvICc8L2Rpdj4nOwoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnZGF0YV9taWdyYXRlX2NhdGVnb3JpZXMnKSAuICc6PC9wPic7CmVjaG8gJzxwIGNsYXNzPSJwYWdlaW5wdXQiPic7CmVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAnbWlncmF0ZV9jYXRlZ29yaWVzJywgMSwgJG1pZ3JhdGVfY2F0ZWdvcmllcyk7CmVjaG8gJzwvcD4nOwplY2hvICc8L2Rpdj4nOwoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnZGF0YV9taWdyYXRlX2ZpZWxkZGVmcycpIC4gJzo8L3A+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdtaWdyYXRlX2ZpZWxkZGVmcycsIDEsICRtaWdyYXRlX2ZpZWxkZGVmcyk7CmVjaG8gJzwvcD4nOwplY2hvICc8L2Rpdj4nOwoKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPicgLiAkdGhpcy0+TGFuZygnZGF0YV9taWdyYXRlX2ZpZWxkdmFscycpIC4gJzo8L3A+JzsKZWNobyAnPHAgY2xhc3M9InBhZ2VpbnB1dCI+JzsKZWNobyAkdGhpcy0+Q3JlYXRlSW5wdXRDaGVja2JveCgkaWQsICdtaWdyYXRlX2ZpZWxkdmFscycsIDEsICRtaWdyYXRlX2ZpZWxkdmFscyk7CmVjaG8gJzwvcD4nOwplY2hvICc8L2Rpdj4nOwoKLy8gQWN0aW9uIGJ1dHRvbnMKZWNobyAnPGRpdiBjbGFzcz0icGFnZW92ZXJmbG93Ij4nOwplY2hvICc8cCBjbGFzcz0icGFnZXRleHQiPiZuYnNwOzwvcD4nOwplY2hvICc8cCBjbGFzcz0icGFnZWlucHV0Ij4nOwplY2hvICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICdwcmV2aWV3JywgJHRoaXMtPkxhbmcoJ21pZ3JhdGVfcHJldmlldycpKTsKZWNobyAnICc7CmVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgJ21pZ3JhdGUnLCAkdGhpcy0+TGFuZygnbWlncmF0ZV9idXR0b24nKSk7CmVjaG8gJzwvcD4nOwplY2hvICc8L2Rpdj4nOwoKLy8gQWRkIGNvbmZpcm1hdGlvbiBKYXZhU2NyaXB0CmVjaG8gJzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgewogICAgdmFyIG1pZ3JhdGVCdG4gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbnB1dFtuYW1lPVwnbTFfbWlncmF0ZVwnXSIpOwogICAgaWYgKG1pZ3JhdGVCdG4pIHsKICAgICAgICBtaWdyYXRlQnRuLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oZSkgewogICAgICAgICAgICBpZiAoIWNvbmZpcm0oIicgLiBhZGRzbGFzaGVzKCR0aGlzLT5MYW5nKCdtaWdyYXRlX2NvbmZpcm0nKSkgLiAnIikpIHsKICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfQp9KTsKPC9zY3JpcHQ+JzsKCmVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKTsKCi8vIEphdmFTY3JpcHQgZm9yIHRvZ2dsaW5nIGluc3RhbmNlIG9wdGlvbnMKZWNobyAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgpmdW5jdGlvbiB0b2dnbGVJbnN0YW5jZU9wdGlvbnMoKSB7CiAgICB2YXIgdXNlRXhpc3RpbmcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJpbnB1dFtuYW1lPVwnbTFfdXNlX2V4aXN0aW5nXCddW3ZhbHVlPVwnMVwnXSIpLmNoZWNrZWQ7CiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibmV3X2luc3RhbmNlX29wdGlvbnMiKS5zdHlsZS5kaXNwbGF5ID0gdXNlRXhpc3RpbmcgPyAibm9uZSIgOiAiYmxvY2siOwogICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImV4aXN0aW5nX2luc3RhbmNlX29wdGlvbnMiKS5zdHlsZS5kaXNwbGF5ID0gdXNlRXhpc3RpbmcgPyAiYmxvY2siIDogIm5vbmUiOwp9Cjwvc2NyaXB0Pic7Cgo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/function.admin_settings.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEFkbWluIFNldHRpbmdzIEZ1bmN0aW9uIGZvciBNQVNfQ0dCbG9nVG9MSVNFCiAqIEJhc2VkIG9uIE1BU19EaXNxdXMgYW5kIE1BU19BSUFzc2lzdGFudCBwYXR0ZXJuCiAqLwoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykpIGV4aXQ7CgppZiAoISR0aGlzLT5WaXNpYmxlVG9BZG1pblVzZXIoKSkgewogICAgcmV0dXJuOwp9CgovLyBDaGVjayBpZiBkb25hdGlvbnMgdGFiIGlzIGN1cnJlbnRseSBoaWRkZW4KJGRvbmF0aW9uc0hpZGRlbiA9ICgkdGhpcy0+R2V0UHJlZmVyZW5jZSgiaGlkZWRvbmF0aW9uc3RhYiIpID09ICR0aGlzLT5HZXRWZXJzaW9uKCkpOwoKZWNobyAnPGRpdiBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCAjQ0NDOyBwYWRkaW5nOjEwcHg7IG1hcmdpbjoxMHB4IDA7Ij4nOwplY2hvICc8aDM+JyAuICR0aGlzLT5MYW5nKCd0YWJfYWRtaW5zZXR0aW5ncycpIC4gJzwvaDM+JzsKCmVjaG8gJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICJhZG1pbl9zZXR0aW5nc19zYXZlIiwgJHJldHVybmlkKTsKZWNobyAnPHA+JzsKZWNobyAnPGxhYmVsIGZvcj0ic2hvd2RvbmF0aW9uc3RhYiI+JyAuICR0aGlzLT5MYW5nKCdzaG93ZG9uYXRpb25zdGFiJykgLiAnPC9sYWJlbD48YnIvPic7CmVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0Q2hlY2tib3goJGlkLCAic2hvd2RvbmF0aW9uc3RhYiIsICIxIiwgISRkb25hdGlvbnNIaWRkZW4pOwplY2hvICc8L3A+JzsKCmVjaG8gJzxwPic7CmVjaG8gJHRoaXMtPkNyZWF0ZUlucHV0U3VibWl0KCRpZCwgInN1Ym1pdCIsICR0aGlzLT5MYW5nKCJzdWJtaXQiKSk7CmVjaG8gJzwvcD4nOwplY2hvICR0aGlzLT5DcmVhdGVGb3JtRW5kKCk7CgplY2hvICc8L2Rpdj4nOwo/PgoK]]></data>
	</file>
	<file>
	  <filename>/function.donations.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIERvbmF0aW9ucyBGdW5jdGlvbiBmb3IgTUFTX0NHQmxvZ1RvTElTRQogKiBCYXNlZCBvbiBNQVNfRGlzcXVzIGFuZCBNQVNfQUlBc3Npc3RhbnQgcGF0dGVybgogKi8KCmlmICghZnVuY3Rpb25fZXhpc3RzKCdjbXNtcycpKSBleGl0OwoKaWYgKCEkdGhpcy0+VmlzaWJsZVRvQWRtaW5Vc2VyKCkpIHsKICAgIHJldHVybjsKfQoKLy8gR2V0IFNtYXJ0eSBpbnN0YW5jZQokc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7CgovLyBBc3NpZ24gdG8gU21hcnR5CiRzbWFydHktPmFzc2lnbignbW9kdWxlJywgJHRoaXMpOwokc21hcnR5LT5hc3NpZ24oJ2lkJywgJGlkKTsKJHNtYXJ0eS0+YXNzaWduKCdwYXJhbXMnLCAkcGFyYW1zKTsKJHNtYXJ0eS0+YXNzaWduKCdyZXR1cm5pZCcsICRyZXR1cm5pZCk7CiRzbWFydHktPmFzc2lnbigiZm9ybXN0YXJ0IiwgJHRoaXMtPkNyZWF0ZUZvcm1TdGFydCgkaWQsICJkZWZhdWx0YWRtaW4iLCAkcmV0dXJuaWQpKTsKJHNtYXJ0eS0+YXNzaWduKCJmb3JtZW5kIiwgJHRoaXMtPkNyZWF0ZUZvcm1FbmQoKSk7CiRzbWFydHktPmFzc2lnbigiaGlkZXN1Ym1pdCIsICR0aGlzLT5DcmVhdGVJbnB1dFN1Ym1pdCgkaWQsICJoaWRlZG9uYXRpb25zc3VibWl0IiwgJHRoaXMtPkxhbmcoImhpZGVkb25hdGlvbnNzdWJtaXQiKSkpOwokc21hcnR5LT5hc3NpZ24oImRvbmF0aW9uc3RleHQiLCAkdGhpcy0+TGFuZygiZG9uYXRpb25zdGV4dCIpKTsKJHNtYXJ0eS0+YXNzaWduKCJzcG9uc29yc3RleHQiLCAkdGhpcy0+TGFuZygic3BvbnNvcnMiKSk7CgovLyBEaXNwbGF5IHRlbXBsYXRlCmVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnZG9uYXRpb25zLnRwbCcpOwo/Pgo=]]></data>
	</file>
	<file>
	  <filename>/help.inc</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEhlbHAgRmlsZSBmb3IgTUFTX0NHQmxvZ1RvTElTRSBNb2R1bGUKICovCgpyZXR1cm4gJHRoaXMtPkxhbmcoJ2hlbHAnKTsKCj8+Cgo=]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEVuZ2xpc2ggTGFuZ3VhZ2UgRmlsZSBmb3IgTUFTX0NHQmxvZ1RvTElTRSBNb2R1bGUKICovCgovLyBNb2R1bGUgaW5mbwokbGFuZ1snZnJpZW5kbHluYW1lJ10gPSAnTUFTIENHQmxvZyB0byBMSVNFIE1pZ3JhdGlvbic7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ01pZ3JhdGVzIGRhdGEgZnJvbSBDR0Jsb2cgbW9kdWxlIHRvIExJU0UgaW5zdGFuY2VzLiBTdXBwb3J0cyBjcmVhdGluZyBuZXcgTElTRSBpbnN0YW5jZXMgb3IgY29weWluZyB0byBleGlzdGluZyBvbmVzLic7CiRsYW5nWydwb3N0aW5zdGFsbCddID0gJ01BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24gaGFzIGJlZW4gaW5zdGFsbGVkIHN1Y2Nlc3NmdWxseSEnOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ01BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24gaGFzIGJlZW4gdW5pbnN0YWxsZWQuJzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gdW5pbnN0YWxsIE1BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24/JzsKJGxhbmdbJ2luc3RhbGxlZCddID0gJ01vZHVsZSB2ZXJzaW9uICVzIGluc3RhbGxlZCBzdWNjZXNzZnVsbHkuJzsKJGxhbmdbJ3VwZ3JhZGVkJ10gPSAnTW9kdWxlIHVwZ3JhZGVkIHRvIHZlcnNpb24gJXMuJzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHVuaW5zdGFsbGVkLic7CgovLyBQZXJtaXNzaW9ucwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnQWNjZXNzIGRlbmllZC4gUGxlYXNlIGNoZWNrIHlvdXIgcGVybWlzc2lvbnMuJzsKJGxhbmdbJ3Blcm1pc3Npb25fdXNlJ10gPSAnVXNlIE1BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24nOwoKLy8gVGFicwokbGFuZ1sndGFiX21pZ3JhdGUnXSA9ICdNaWdyYXRpb24nOwokbGFuZ1sndGFiX3NldHRpbmdzJ10gPSAnU2V0dGluZ3MnOwokbGFuZ1sndGFiX2RvbmF0aW9ucyddID0gJ0RvbmF0aW9ucyc7CiRsYW5nWyd0YWJfYWRtaW5zZXR0aW5ncyddID0gJ0FkbWluIFNldHRpbmdzJzsKJGxhbmdbJ2NvbmZpZ3VyYXRpb24nXSA9ICdDb25maWd1cmF0aW9uJzsKCi8vIFNldHRpbmdzCiRsYW5nWydwcm9tcHRfZnJpZW5kbHluYW1lJ10gPSAnTW9kdWxlIEZyaWVuZGx5IE5hbWUnOwokbGFuZ1snaW5mb19mcmllbmRseW5hbWUnXSA9ICdUaGlzIHNwZWNpZmllcyB0aGUgc3RyaW5nIHRoYXQgd2lsbCBiZSB1c2VkIGlkZW50aWZ5IHRoaXMgbW9kdWxlIGluIHRoZSBhZG1pbiBuYXZpZ2F0aW9uLiAgSWYgbm8gdmFsdWUgaXMgc3BlY2lmaWVkLCB0aGVuIHRoZSBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgdXNlZC4gIFlvdSBtYXkgaGF2ZSB0byBjbGVhciB0aGUgQ01TTVMgY2FjaGUgYWZ0ZXIgY2hhbmdpbmcgdGhpcyB2YWx1ZS4nOwokbGFuZ1snc2hvd19kb25hdGlvbnMnXSA9ICdTaG93IERvbmF0aW9ucyBUYWInOwokbGFuZ1snaGlkZWRvbmF0aW9uc3N1Ym1pdCddID0gJ0hpZGUgZG9uYXRpb25zIHRhYic7CiRsYW5nWydkb25hdGlvbnNfdGFiX2hpZGRlbiddID0gJ0RvbmF0aW9ucyB0YWIgaGFzIGJlZW4gaGlkZGVuLiBZb3UgY2FuIHNob3cgaXQgYWdhaW4gaW4gQWRtaW4gU2V0dGluZ3MuJzsKJGxhbmdbJ2RvbmF0aW9uc3RleHQnXSA9ICdBIGxvdCBvZiB0aW1lIGFuZCBlZmZvcnQgaGFzIGJlZW4gcHV0IGludG8gY3JlYXRpbmcgdGhpcyBtb2R1bGUuIFBsZWFzZSBjb25zaWRlciBhIHNtYWxsIGRvbmF0aW9uICg14oKsIGZvciBpbnN0YW5jZSwgb3Igd2hhdCB5b3UgY2FuIHNwYXJlKSB1c2luZyB0aGUgUGF5UGFsLWJ1dHRvbiBiZWxvdywgZXNwZWNpYWxseSBpZiB5b3UgdXNlIHRoaXMgbW9kdWxlIGluIGEgY29tbWVyY2lhbCBjb250ZXh0LiBJZiB5b3UgZG9uYXRlIG1vcmUgdGhhbiAzMOKCrCB5b3UgY2FuIGhhdmUgYSBsaW5rIHRvIHlvdXIgY29tcGFueSBvbiB0aGlzIHBhZ2UsIGlmIHlvdSB3aXNoIHRvLiBTZW5kIG1lIGFuIGVtYWlsIGFib3V0IHdoYXQgeW91IHdvdWxkIGxpa2Ugc2hvd24gYW5kIEkgd2lsbCBwdXQgaXQgaW4gZm9yIHRoZSBuZXh0IHZlcnNpb24uIFRoYW5rIHlvdSEnOwokbGFuZ1snc3BvbnNvcnMnXSA9ICdDdXJyZW50IHNwb25zb3JzLCB0aGFuayB5b3UgZm9yIHlvdXIgc3VwcG9ydCEnOwokbGFuZ1snc2hvd2RvbmF0aW9uc3RhYiddID0gJ1Nob3cgZG9uYXRpb25zIHRhYic7CiRsYW5nWydzdWJtaXQnXSA9ICdTdWJtaXQnOwokbGFuZ1snbXNnX3ByZWZzX3NhdmVkJ10gPSAnUHJlZmVyZW5jZXMgU2F2ZWQnOwokbGFuZ1snc2V0dGluZ3N1cGRhdGVkJ10gPSAnU2V0dGluZ3MgdXBkYXRlZCBzdWNjZXNzZnVsbHknOwokbGFuZ1sncHJlZnN1cGRhdGVkJ10gPSAnUHJlZmVyZW5jZXMgdXBkYXRlZCc7CgovLyBNaWdyYXRpb24gSW50ZXJmYWNlCiRsYW5nWydtaWdyYXRpb25fdGl0bGUnXSA9ICdDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb24nOwokbGFuZ1snbWlncmF0aW9uX2Rlc2NyaXB0aW9uJ10gPSAnVGhpcyB0b29sIG1pZ3JhdGVzIGRhdGEgZnJvbSBDR0Jsb2cgbW9kdWxlIHRvIExJU0UgaW5zdGFuY2VzLic7CiRsYW5nWydtaWdyYXRpb25fcHJlcmVxdWlzaXRlcyddID0gJ1ByZXJlcXVpc2l0ZXMnOwokbGFuZ1snbWlncmF0aW9uX3ByZXJlcXVpc2l0ZXNfZGVzYyddID0gJ0JlZm9yZSBzdGFydGluZyBtaWdyYXRpb24sIGVuc3VyZTonOwokbGFuZ1snbWlncmF0aW9uX3ByZXJlcXVpc2l0ZXNfY2dibG9nJ10gPSAnQ0dCbG9nIG1vZHVsZSBpcyBpbnN0YWxsZWQnOwokbGFuZ1snbWlncmF0aW9uX3ByZXJlcXVpc2l0ZXNfbGlzZSddID0gJ0xJU0UgbW9kdWxlIGlzIGluc3RhbGxlZCc7CiRsYW5nWydtaWdyYXRpb25fcHJlcmVxdWlzaXRlc19kYXRhJ10gPSAnQ0dCbG9nIGNvbnRhaW5zIGRhdGEgdG8gbWlncmF0ZSc7CgovLyBTdGF0aXN0aWNzCiRsYW5nWydzdGF0aXN0aWNzX3RpdGxlJ10gPSAnQ0dCbG9nIFN0YXRpc3RpY3MnOwokbGFuZ1snc3RhdGlzdGljc19hcnRpY2xlcyddID0gJ0FydGljbGVzJzsKJGxhbmdbJ3N0YXRpc3RpY3NfY2F0ZWdvcmllcyddID0gJ0NhdGVnb3JpZXMnOwokbGFuZ1snc3RhdGlzdGljc19maWVsZGRlZnMnXSA9ICdDdXN0b20gRmllbGRzJzsKJGxhbmdbJ3N0YXRpc3RpY3NfZmllbGR2YWxzJ10gPSAnRmllbGQgVmFsdWVzJzsKCi8vIEluc3RhbmNlIFNlbGVjdGlvbgokbGFuZ1snaW5zdGFuY2Vfc2VsZWN0aW9uJ10gPSAnTElTRSBJbnN0YW5jZSBTZWxlY3Rpb24nOwokbGFuZ1snaW5zdGFuY2VfY3JlYXRlX25ldyddID0gJ0NyZWF0ZSBOZXcgTElTRSBJbnN0YW5jZSc7CiRsYW5nWydpbnN0YW5jZV91c2VfZXhpc3RpbmcnXSA9ICdVc2UgRXhpc3RpbmcgTElTRSBJbnN0YW5jZSc7CiRsYW5nWydpbnN0YW5jZV9uYW1lJ10gPSAnSW5zdGFuY2UgTmFtZSc7CiRsYW5nWydpbnN0YW5jZV9uYW1lX2hlbHAnXSA9ICdFbnRlciBhIG5hbWUgZm9yIHRoZSBuZXcgTElTRSBpbnN0YW5jZSAoYWxwaGFudW1lcmljIG9ubHksIG5vIHNwYWNlcykuIElmIGxlZnQgZW1wdHksIGEgZGVmYXVsdCBuYW1lIHdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkuJzsKJGxhbmdbJ2luc3RhbmNlX2ZyaWVuZGx5bmFtZSddID0gJ0ZyaWVuZGx5IE5hbWUnOwokbGFuZ1snaW5zdGFuY2VfZnJpZW5kbHluYW1lX2hlbHAnXSA9ICdFbnRlciBhIGZyaWVuZGx5IGRpc3BsYXkgbmFtZSBmb3IgdGhlIGluc3RhbmNlLiBJZiBsZWZ0IGVtcHR5LCBhIGRlZmF1bHQgbmFtZSB3aWxsIGJlIGdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5Lic7CiRsYW5nWydpbnN0YW5jZV9zZWxlY3QnXSA9ICdTZWxlY3QgRXhpc3RpbmcgSW5zdGFuY2UnOwokbGFuZ1snaW5zdGFuY2Vfc2VsZWN0X2hlbHAnXSA9ICdDaG9vc2UgYW4gZXhpc3RpbmcgTElTRSBpbnN0YW5jZSB0byBtaWdyYXRlIGRhdGEgaW50by4nOwokbGFuZ1snaW5zdGFuY2Vfbm9uZSddID0gJ05vIExJU0UgaW5zdGFuY2VzIGF2YWlsYWJsZSc7CgovLyBEYXRhIFNlbGVjdGlvbgokbGFuZ1snZGF0YV9zZWxlY3Rpb24nXSA9ICdEYXRhIHRvIE1pZ3JhdGUnOwokbGFuZ1snZGF0YV9taWdyYXRlX2FydGljbGVzJ10gPSAnTWlncmF0ZSBBcnRpY2xlcyc7CiRsYW5nWydkYXRhX21pZ3JhdGVfY2F0ZWdvcmllcyddID0gJ01pZ3JhdGUgQ2F0ZWdvcmllcyc7CiRsYW5nWydkYXRhX21pZ3JhdGVfZmllbGRkZWZzJ10gPSAnTWlncmF0ZSBDdXN0b20gRmllbGRzJzsKJGxhbmdbJ2RhdGFfbWlncmF0ZV9maWVsZHZhbHMnXSA9ICdNaWdyYXRlIEZpZWxkIFZhbHVlcyc7CgovLyBQcmV2aWV3CiRsYW5nWydwcmV2aWV3X3RpdGxlJ10gPSAnTWlncmF0aW9uIFByZXZpZXcnOwokbGFuZ1sncHJldmlld19kZXNjcmlwdGlvbiddID0gJ1JldmlldyB0aGUgZGF0YSB0aGF0IHdpbGwgYmUgbWlncmF0ZWQ6JzsKJGxhbmdbJ3ByZXZpZXdfYXJ0aWNsZXNfY291bnQnXSA9ICdBcnRpY2xlcyB0byBtaWdyYXRlOiAlcyc7CiRsYW5nWydwcmV2aWV3X2NhdGVnb3JpZXNfY291bnQnXSA9ICdDYXRlZ29yaWVzIHRvIG1pZ3JhdGU6ICVzJzsKJGxhbmdbJ3ByZXZpZXdfZmllbGRkZWZzX2NvdW50J10gPSAnRmllbGQgZGVmaW5pdGlvbnMgdG8gbWlncmF0ZTogJXMnOwokbGFuZ1sncHJldmlld19maWVsZHZhbHNfY291bnQnXSA9ICdGaWVsZCB2YWx1ZXMgdG8gbWlncmF0ZTogJXMnOwoKLy8gTWlncmF0aW9uIEFjdGlvbnMKJGxhbmdbJ21pZ3JhdGVfYnV0dG9uJ10gPSAnU3RhcnQgTWlncmF0aW9uJzsKJGxhbmdbJ21pZ3JhdGVfcHJldmlldyddID0gJ1ByZXZpZXcgTWlncmF0aW9uJzsKJGxhbmdbJ21pZ3JhdGVfY2FuY2VsJ10gPSAnQ2FuY2VsJzsKJGxhbmdbJ21pZ3JhdGVfY29uZmlybSddID0gJ0FyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBzdGFydCB0aGUgbWlncmF0aW9uPyBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lLic7CgovLyBNaWdyYXRpb24gU3RhdHVzCiRsYW5nWydtaWdyYXRpb25fc3RhcnRlZCddID0gJ01pZ3JhdGlvbiBzdGFydGVkLi4uJzsKJGxhbmdbJ21pZ3JhdGlvbl9pbl9wcm9ncmVzcyddID0gJ01pZ3JhdGlvbiBpbiBwcm9ncmVzcy4uLic7CiRsYW5nWydtaWdyYXRpb25fY29tcGxldGVkJ10gPSAnTWlncmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJzsKJGxhbmdbJ21pZ3JhdGlvbl9mYWlsZWQnXSA9ICdNaWdyYXRpb24gZmFpbGVkLiBQbGVhc2UgY2hlY2sgdGhlIGxvZ3MgZm9yIGRldGFpbHMuJzsKJGxhbmdbJ21pZ3JhdGlvbl9wYXJ0aWFsJ10gPSAnTWlncmF0aW9uIGNvbXBsZXRlZCB3aXRoIHdhcm5pbmdzLiBTb21lIGRhdGEgbWF5IG5vdCBoYXZlIGJlZW4gbWlncmF0ZWQuJzsKCi8vIE1pZ3JhdGlvbiBTdGVwcwokbGFuZ1snc3RlcF92YWxpZGF0aW9uJ10gPSAnVmFsaWRhdGluZyBwcmVyZXF1aXNpdGVzLi4uJzsKJGxhbmdbJ3N0ZXBfaW5zdGFuY2UnXSA9ICdDcmVhdGluZyBMSVNFIGluc3RhbmNlLi4uJzsKJGxhbmdbJ3N0ZXBfY2F0ZWdvcmllcyddID0gJ01pZ3JhdGluZyBjYXRlZ29yaWVzLi4uJzsKJGxhbmdbJ3N0ZXBfZmllbGRkZWZzJ10gPSAnTWlncmF0aW5nIGZpZWxkIGRlZmluaXRpb25zLi4uJzsKJGxhbmdbJ3N0ZXBfYXJ0aWNsZXMnXSA9ICdNaWdyYXRpbmcgYXJ0aWNsZXMuLi4nOwokbGFuZ1snc3RlcF9maWVsZHZhbHMnXSA9ICdNaWdyYXRpbmcgZmllbGQgdmFsdWVzLi4uJzsKJGxhbmdbJ3N0ZXBfcmVsYXRpb25zaGlwcyddID0gJ01pZ3JhdGluZyByZWxhdGlvbnNoaXBzLi4uJzsKJGxhbmdbJ3N0ZXBfdmVyaWZpY2F0aW9uJ10gPSAnVmVyaWZ5aW5nIG1pZ3JhdGlvbi4uLic7CgovLyBSZXN1bHRzCiRsYW5nWydyZXN1bHRzX3RpdGxlJ10gPSAnTWlncmF0aW9uIFJlc3VsdHMnOwokbGFuZ1sncmVzdWx0c19hcnRpY2xlc19taWdyYXRlZCddID0gJ0FydGljbGVzIG1pZ3JhdGVkOiAlcyc7CiRsYW5nWydyZXN1bHRzX2NhdGVnb3JpZXNfbWlncmF0ZWQnXSA9ICdDYXRlZ29yaWVzIG1pZ3JhdGVkOiAlcyc7CiRsYW5nWydyZXN1bHRzX2ZpZWxkZGVmc19taWdyYXRlZCddID0gJ0ZpZWxkIGRlZmluaXRpb25zIG1pZ3JhdGVkOiAlcyc7CiRsYW5nWydyZXN1bHRzX2ZpZWxkdmFsc19taWdyYXRlZCddID0gJ0ZpZWxkIHZhbHVlcyBtaWdyYXRlZDogJXMnOwokbGFuZ1sncmVzdWx0c19lcnJvcnMnXSA9ICdFcnJvcnM6ICVzJzsKJGxhbmdbJ3Jlc3VsdHNfd2FybmluZ3MnXSA9ICdXYXJuaW5nczogJXMnOwoKLy8gRXJyb3JzCiRsYW5nWydlcnJvcl9jZ2Jsb2dfbm90X2luc3RhbGxlZCddID0gJ0NHQmxvZyBtb2R1bGUgaXMgbm90IGluc3RhbGxlZC4nOwokbGFuZ1snZXJyb3JfbGlzZV9ub3RfaW5zdGFsbGVkJ10gPSAnTElTRSBtb2R1bGUgaXMgbm90IGluc3RhbGxlZC4nOwokbGFuZ1snZXJyb3Jfbm9fZGF0YSddID0gJ05vIENHQmxvZyBkYXRhIGZvdW5kIHRvIG1pZ3JhdGUuJzsKJGxhbmdbJ2Vycm9yX2luc3RhbmNlX2V4aXN0cyddID0gJ0xJU0UgaW5zdGFuY2Ugd2l0aCB0aGlzIG5hbWUgYWxyZWFkeSBleGlzdHMuJzsKJGxhbmdbJ2Vycm9yX2luc3RhbmNlX2ludmFsaWQnXSA9ICdJbnZhbGlkIGluc3RhbmNlIG5hbWUuIFVzZSBvbmx5IGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLic7CiRsYW5nWydlcnJvcl9pbnN0YW5jZV9ub3RfZm91bmQnXSA9ICdTZWxlY3RlZCBMSVNFIGluc3RhbmNlIG5vdCBmb3VuZC4nOwokbGFuZ1snZXJyb3JfbWlncmF0aW9uX2ZhaWxlZCddID0gJ01pZ3JhdGlvbiBmYWlsZWQ6ICVzJzsKJGxhbmdbJ2Vycm9yX2RhdGFiYXNlJ10gPSAnRGF0YWJhc2UgZXJyb3I6ICVzJzsKJGxhbmdbJ2Vycm9yX3Blcm1pc3Npb24nXSA9ICdJbnN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gcGVyZm9ybSBtaWdyYXRpb24uJzsKCi8vIFdhcm5pbmdzCiRsYW5nWyd3YXJuaW5nX25vX2NhdGVnb3JpZXMnXSA9ICdObyBjYXRlZ29yaWVzIGZvdW5kIGluIENHQmxvZy4nOwokbGFuZ1snd2FybmluZ19ub19maWVsZGRlZnMnXSA9ICdObyBjdXN0b20gZmllbGRzIGZvdW5kIGluIENHQmxvZy4nOwokbGFuZ1snd2FybmluZ19ub19hcnRpY2xlcyddID0gJ05vIGFydGljbGVzIGZvdW5kIGluIENHQmxvZy4nOwoKLy8gSGVscAokbGFuZ1snaGVscCddID0gJzxkaXYgY2xhc3M9Im1hcy1taWdyYXRpb24taGVscCI+CjxoMz5NQVMgQ0dCbG9nIHRvIExJU0UgTWlncmF0aW9uIE1vZHVsZTwvaDM+Cgo8cD48c3Ryb25nPk1BUyBDR0Jsb2cgdG8gTElTRSBNaWdyYXRpb248L3N0cm9uZz4gaXMgYSB0b29sIGZvciBtaWdyYXRpbmcgZGF0YSBmcm9tIHRoZSBDR0Jsb2cgbW9kdWxlIHRvIExJU0UgaW5zdGFuY2VzIGluIENNUyBNYWRlIFNpbXBsZS48L3A+Cgo8aDQ+RmVhdHVyZXM8L2g0Pgo8dWw+CiAgICA8bGk+PHN0cm9uZz5DcmVhdGUgTmV3IEluc3RhbmNlczo8L3N0cm9uZz4gQXV0b21hdGljYWxseSBjcmVhdGUgbmV3IExJU0UgaW5zdGFuY2VzIGZyb20gQ0dCbG9nIGRhdGE8L2xpPgogICAgPGxpPjxzdHJvbmc+VXNlIEV4aXN0aW5nIEluc3RhbmNlczo8L3N0cm9uZz4gQ29weSBkYXRhIHRvIGV4aXN0aW5nIExJU0UgaW5zdGFuY2VzPC9saT4KICAgIDxsaT48c3Ryb25nPlNlbGVjdGl2ZSBNaWdyYXRpb246PC9zdHJvbmc+IENob29zZSB3aGljaCBkYXRhIHRvIG1pZ3JhdGUgKGFydGljbGVzLCBjYXRlZ29yaWVzLCBjdXN0b20gZmllbGRzKTwvbGk+CiAgICA8bGk+PHN0cm9uZz5QcmV2aWV3Ojwvc3Ryb25nPiBQcmV2aWV3IGRhdGEgYmVmb3JlIG1pZ3JhdGlvbjwvbGk+CiAgICA8bGk+PHN0cm9uZz5Db21wcmVoZW5zaXZlIE1hcHBpbmc6PC9zdHJvbmc+IEF1dG9tYXRpY2FsbHkgbWFwcyBDR0Jsb2cgZGF0YSBzdHJ1Y3R1cmVzIHRvIExJU0UgZm9ybWF0PC9saT4KICAgIDxsaT48c3Ryb25nPkVycm9yIEhhbmRsaW5nOjwvc3Ryb25nPiBEZXRhaWxlZCBlcnJvciByZXBvcnRpbmcgYW5kIGxvZ2dpbmc8L2xpPgo8L3VsPgoKPGg0PkdldHRpbmcgU3RhcnRlZDwvaDQ+CjxvbD4KICAgIDxsaT48c3Ryb25nPlByZXJlcXVpc2l0ZXM6PC9zdHJvbmc+IEVuc3VyZSBib3RoIENHQmxvZyBhbmQgTElTRSBtb2R1bGVzIGFyZSBpbnN0YWxsZWQ8L2xpPgogICAgPGxpPjxzdHJvbmc+QWNjZXNzIE1pZ3JhdGlvbjo8L3N0cm9uZz4gR28gdG8gRXh0ZW5zaW9ucyDihpIgTUFTIENHQmxvZyB0byBMSVNFIE1pZ3JhdGlvbjwvbGk+CiAgICA8bGk+PHN0cm9uZz5DaG9vc2UgSW5zdGFuY2U6PC9zdHJvbmc+IENyZWF0ZSBuZXcgb3Igc2VsZWN0IGV4aXN0aW5nIExJU0UgaW5zdGFuY2U8L2xpPgogICAgPGxpPjxzdHJvbmc+U2VsZWN0IERhdGE6PC9zdHJvbmc+IENob29zZSB3aGljaCBkYXRhIHR5cGVzIHRvIG1pZ3JhdGU8L2xpPgogICAgPGxpPjxzdHJvbmc+UHJldmlldzo8L3N0cm9uZz4gUmV2aWV3IHdoYXQgd2lsbCBiZSBtaWdyYXRlZDwvbGk+CiAgICA8bGk+PHN0cm9uZz5NaWdyYXRlOjwvc3Ryb25nPiBTdGFydCB0aGUgbWlncmF0aW9uIHByb2Nlc3M8L2xpPgo8L29sPgoKPGg0PkRhdGEgTWFwcGluZzwvaDQ+Cjx1bD4KICAgIDxsaT48c3Ryb25nPkFydGljbGVzOjwvc3Ryb25nPiBDR0Jsb2cgYXJ0aWNsZXMg4oaSIExJU0UgaXRlbXM8L2xpPgogICAgPGxpPjxzdHJvbmc+Q2F0ZWdvcmllczo8L3N0cm9uZz4gQ0dCbG9nIGNhdGVnb3JpZXMg4oaSIExJU0UgY2F0ZWdvcmllcyAoaGllcmFyY2h5IHByZXNlcnZlZCk8L2xpPgogICAgPGxpPjxzdHJvbmc+Q3VzdG9tIEZpZWxkczo8L3N0cm9uZz4gQ0dCbG9nIGZpZWxkIGRlZmluaXRpb25zIOKGkiBMSVNFIGZpZWxkIGRlZmluaXRpb25zPC9saT4KICAgIDxsaT48c3Ryb25nPkZpZWxkIFZhbHVlczo8L3N0cm9uZz4gQ0dCbG9nIGZpZWxkIHZhbHVlcyDihpIgTElTRSBpdGVtIGZpZWxkIHZhbHVlczwvbGk+CjwvdWw+Cgo8aDQ+SW1wb3J0YW50IE5vdGVzPC9oND4KPHVsPgogICAgPGxpPk1pZ3JhdGlvbiBjYW5ub3QgYmUgdW5kb25lIGF1dG9tYXRpY2FsbHkuIEJhY2t1cCB5b3VyIGRhdGEgYmVmb3JlIG1pZ3JhdGlvbi48L2xpPgogICAgPGxpPkZpZWxkIHR5cGVzIGFyZSBhdXRvbWF0aWNhbGx5IG1hcHBlZCBmcm9tIENHQmxvZyB0byBMSVNFIGZvcm1hdC48L2xpPgogICAgPGxpPkNhdGVnb3J5IGhpZXJhcmNoaWVzIGFyZSBwcmVzZXJ2ZWQgZHVyaW5nIG1pZ3JhdGlvbi48L2xpPgogICAgPGxpPkFydGljbGUgVVJMcyBhbmQgbWV0YWRhdGEgYXJlIHByZXNlcnZlZC48L2xpPgo8L3VsPgo8L2Rpdj4nOwoKLy8gQ2hhbmdlbG9nCiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICc8dWw+CjxsaT48c3Ryb25nPlZlcnNpb24gMS4wLjAsIDIwMjUsIG1hc3RlcjMzOTU8L3N0cm9uZz46IEluaXRpYWwgcmVsZWFzZQogICAgPHVsPgogICAgICAgIDxsaT5NaWdyYXRlIGFydGljbGVzIGZyb20gQ0dCbG9nIHRvIExJU0U8L2xpPgogICAgICAgIDxsaT5NaWdyYXRlIGNhdGVnb3JpZXMgd2l0aCBoaWVyYXJjaHkgcHJlc2VydmF0aW9uPC9saT4KICAgICAgICA8bGk+TWlncmF0ZSBjdXN0b20gZmllbGQgZGVmaW5pdGlvbnMgYW5kIHZhbHVlczwvbGk+CiAgICAgICAgPGxpPkNyZWF0ZSBuZXcgTElTRSBpbnN0YW5jZXMgb3IgdXNlIGV4aXN0aW5nIG9uZXM8L2xpPgogICAgICAgIDxsaT5QcmV2aWV3IG1pZ3JhdGlvbiBkYXRhIGJlZm9yZSBleGVjdXRpbmc8L2xpPgogICAgICAgIDxsaT5Db21wcmVoZW5zaXZlIGVycm9yIGhhbmRsaW5nIGFuZCBsb2dnaW5nPC9saT4KICAgIDwvdWw+CjwvbGk+CjwvdWw+JzsKCi8vIEF1ZGl0IGxvZyBtZXNzYWdlcwokbGFuZ1snYXVkaXRfcHJldmlld19taWdyYXRpb24nXSA9ICdQcmV2aWV3ZWQgbWlncmF0aW9uOiAlcyBhcnRpY2xlcywgJXMgY2F0ZWdvcmllcywgJXMgZmllbGQgZGVmaW5pdGlvbnMsICVzIGZpZWxkIHZhbHVlcyc7CiRsYW5nWydhdWRpdF9zdGFydF9taWdyYXRpb24nXSA9ICdTdGFydGVkIG1pZ3JhdGlvbiB0byBMSVNFIGluc3RhbmNlOiAlcyc7CiRsYW5nWydhdWRpdF9jb21wbGV0ZV9taWdyYXRpb24nXSA9ICdDb21wbGV0ZWQgbWlncmF0aW9uOiAlcyBhcnRpY2xlcywgJXMgY2F0ZWdvcmllcywgJXMgZmllbGQgZGVmaW5pdGlvbnMgbWlncmF0ZWQnOwokbGFuZ1snYXVkaXRfZmFpbGVkX21pZ3JhdGlvbiddID0gJ01pZ3JhdGlvbiBmYWlsZWQ6ICVzJzsKCj8+Cg==]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.DataMapper.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIERhdGEgTWFwcGVyIENsYXNzCiAqIE1hcHMgQ0dCbG9nIGRhdGEgc3RydWN0dXJlcyB0byBMSVNFIGZvcm1hdAogKi8KCmlmICghZGVmaW5lZCgnQ01TX1ZFUlNJT04nKSkgZXhpdDsKCmNsYXNzIERhdGFNYXBwZXIKewogICAgLyoqCiAgICAgKiBNYXAgQ0dCbG9nIGZpZWxkIHR5cGUgdG8gTElTRSBmaWVsZCB0eXBlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gTWFwRmllbGRUeXBlKCRjZ2Jsb2dfdHlwZSkKICAgIHsKICAgICAgICAkbWFwcGluZyA9IGFycmF5KAogICAgICAgICAgICAndGV4dGJveCcgPT4gJ3RleHQnLAogICAgICAgICAgICAndGV4dGFyZWEnID0+ICd0ZXh0YXJlYScsCiAgICAgICAgICAgICdjaGVja2JveCcgPT4gJ2NoZWNrYm94JywKICAgICAgICAgICAgJ2ZpbGUnID0+ICdmaWxlJywKICAgICAgICAgICAgJ2ltYWdlJyA9PiAnaW1hZ2UnLAogICAgICAgICAgICAnZmlsZV9zZWxlY3QnID0+ICdmaWxlX3NlbGVjdCcsCiAgICAgICAgICAgICdpbWFnZV9zZWxlY3QnID0+ICdpbWFnZV9zZWxlY3QnCiAgICAgICAgKTsKICAgICAgICAKICAgICAgICByZXR1cm4gaXNzZXQoJG1hcHBpbmdbJGNnYmxvZ190eXBlXSkgPyAkbWFwcGluZ1skY2dibG9nX3R5cGVdIDogJ3RleHQnOwogICAgfQogICAgCiAgICAvKioKICAgICAqIE1hcCBhcnRpY2xlIHN0YXR1cyB0byBhY3RpdmUgZmxhZwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIE1hcFN0YXR1c1RvQWN0aXZlKCRzdGF0dXMpCiAgICB7CiAgICAgICAgcmV0dXJuICgkc3RhdHVzID09ICdwdWJsaXNoZWQnKSA/IDEgOiAwOwogICAgfQogICAgCiAgICAvKioKICAgICAqIEdldCBDR0Jsb2cgYXJ0aWNsZXMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBHZXRDR0Jsb2dBcnRpY2xlcygkZGIpCiAgICB7CiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfY2dibG9nIE9SREVSIEJZIGNnYmxvZ19pZCc7CiAgICAgICAgcmV0dXJuICRkYi0+R2V0QXJyYXkoJHF1ZXJ5KTsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBHZXQgQ0dCbG9nIGNhdGVnb3JpZXMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBHZXRDR0Jsb2dDYXRlZ29yaWVzKCRkYikKICAgIHsKICAgICAgICAkcXVlcnkgPSAnU0VMRUNUICogRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9jZ2Jsb2dfY2F0ZWdvcmllcyBPUkRFUiBCWSBoaWVyYXJjaHksIGl0ZW1fb3JkZXInOwogICAgICAgIHJldHVybiAkZGItPkdldEFycmF5KCRxdWVyeSk7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogR2V0IENHQmxvZyBmaWVsZCBkZWZpbml0aW9ucwogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIEdldENHQmxvZ0ZpZWxkRGVmcygkZGIpCiAgICB7CiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCAqIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfY2dibG9nX2ZpZWxkZGVmcyBPUkRFUiBCWSBpdGVtX29yZGVyJzsKICAgICAgICByZXR1cm4gJGRiLT5HZXRBcnJheSgkcXVlcnkpOwogICAgfQogICAgCiAgICAvKioKICAgICAqIEdldCBDR0Jsb2cgZmllbGQgdmFsdWVzIGZvciBhbiBhcnRpY2xlCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gR2V0Q0dCbG9nRmllbGRWYWxzKCRkYiwgJGFydGljbGVfaWQpCiAgICB7CiAgICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBmdi4qLCBmZC5uYW1lLCBmZC50eXBlIAogICAgICAgICAgICAgICAgICBGUk9NICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX2NnYmxvZ19maWVsZHZhbHMgZnYKICAgICAgICAgICAgICAgICAgTEVGVCBKT0lOICcgLiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlX2NnYmxvZ19maWVsZGRlZnMgZmQgT04gZnYuZmllbGRkZWZfaWQgPSBmZC5pZAogICAgICAgICAgICAgICAgICBXSEVSRSBmdi5jZ2Jsb2dfaWQgPSA/JzsKICAgICAgICByZXR1cm4gJGRiLT5HZXRBcnJheSgkcXVlcnksIGFycmF5KCRhcnRpY2xlX2lkKSk7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogR2V0IENHQmxvZyBhcnRpY2xlIGNhdGVnb3JpZXMKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBHZXRDR0Jsb2dBcnRpY2xlQ2F0ZWdvcmllcygkZGIsICRhcnRpY2xlX2lkKQogICAgewogICAgICAgICRxdWVyeSA9ICdTRUxFQ1QgY2F0ZWdvcnlfaWQgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9jZ2Jsb2dfYmxvZ19jYXRlZ29yaWVzIFdIRVJFIGJsb2dfaWQgPSA/JzsKICAgICAgICAkcmVzdWx0ID0gJGRiLT5HZXRBcnJheSgkcXVlcnksIGFycmF5KCRhcnRpY2xlX2lkKSk7CiAgICAgICAgJGNhdGVnb3JpZXMgPSBhcnJheSgpOwogICAgICAgIGlmICgkcmVzdWx0KSB7CiAgICAgICAgICAgIGZvcmVhY2ggKCRyZXN1bHQgYXMgJHJvdykgewogICAgICAgICAgICAgICAgJGNhdGVnb3JpZXNbXSA9ICRyb3dbJ2NhdGVnb3J5X2lkJ107CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuICRjYXRlZ29yaWVzOwogICAgfQogICAgCiAgICAvKioKICAgICAqIFByZXBhcmUgYXJ0aWNsZSBkYXRhIGZvciBMSVNFCiAgICAgKi8KICAgIHB1YmxpYyBzdGF0aWMgZnVuY3Rpb24gUHJlcGFyZUFydGljbGVEYXRhKCRjZ2Jsb2dfYXJ0aWNsZSwgJGRiKQogICAgewogICAgICAgICRkYXRhID0gYXJyYXkoCiAgICAgICAgICAgICd0aXRsZScgPT4gJGNnYmxvZ19hcnRpY2xlWydjZ2Jsb2dfdGl0bGUnXSwKICAgICAgICAgICAgJ2RhdGEnID0+ICRjZ2Jsb2dfYXJ0aWNsZVsnY2dibG9nX2RhdGEnXSwKICAgICAgICAgICAgJ3N1bW1hcnknID0+IGlzc2V0KCRjZ2Jsb2dfYXJ0aWNsZVsnc3VtbWFyeSddKSA/ICRjZ2Jsb2dfYXJ0aWNsZVsnc3VtbWFyeSddIDogJycsCiAgICAgICAgICAgICdjcmVhdGVfZGF0ZScgPT4gJGNnYmxvZ19hcnRpY2xlWydjZ2Jsb2dfZGF0ZSddLAogICAgICAgICAgICAnbW9kaWZpZWRfZGF0ZScgPT4gaXNzZXQoJGNnYmxvZ19hcnRpY2xlWydtb2RpZmllZF9kYXRlJ10pID8gJGNnYmxvZ19hcnRpY2xlWydtb2RpZmllZF9kYXRlJ10gOiAkY2dibG9nX2FydGljbGVbJ2NnYmxvZ19kYXRlJ10sCiAgICAgICAgICAgICdhY3RpdmUnID0+IHNlbGY6Ok1hcFN0YXR1c1RvQWN0aXZlKCRjZ2Jsb2dfYXJ0aWNsZVsnc3RhdHVzJ10pLAogICAgICAgICAgICAndXJsJyA9PiBpc3NldCgkY2dibG9nX2FydGljbGVbJ3VybCddKSA/ICRjZ2Jsb2dfYXJ0aWNsZVsndXJsJ10gOiAnJywKICAgICAgICAgICAgJ2F1dGhvcicgPT4gaXNzZXQoJGNnYmxvZ19hcnRpY2xlWydhdXRob3InXSkgPyAkY2dibG9nX2FydGljbGVbJ2F1dGhvciddIDogJycsCiAgICAgICAgICAgICdwb3NpdGlvbicgPT4gMCAvLyBXaWxsIGJlIHNldCBkdXJpbmcgbWlncmF0aW9uCiAgICAgICAgKTsKICAgICAgICAKICAgICAgICAvLyBHZW5lcmF0ZSBhbGlhcyBmcm9tIHRpdGxlIGlmIFVSTCBpcyBlbXB0eQogICAgICAgIGlmIChlbXB0eSgkZGF0YVsndXJsJ10pKSB7CiAgICAgICAgICAgICRkYXRhWydhbGlhcyddID0gbXVuZ2Vfc3RyaW5nX3RvX3VybCgkZGF0YVsndGl0bGUnXSk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgJGRhdGFbJ2FsaWFzJ10gPSBtdW5nZV9zdHJpbmdfdG9fdXJsKCRkYXRhWyd1cmwnXSk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAkZGF0YTsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBQcmVwYXJlIGNhdGVnb3J5IGRhdGEgZm9yIExJU0UKICAgICAqLwogICAgcHVibGljIHN0YXRpYyBmdW5jdGlvbiBQcmVwYXJlQ2F0ZWdvcnlEYXRhKCRjZ2Jsb2dfY2F0ZWdvcnkpCiAgICB7CiAgICAgICAgcmV0dXJuIGFycmF5KAogICAgICAgICAgICAnbmFtZScgPT4gJGNnYmxvZ19jYXRlZ29yeVsnbmFtZSddLAogICAgICAgICAgICAnZGVzY3JpcHRpb24nID0+IGlzc2V0KCRjZ2Jsb2dfY2F0ZWdvcnlbJ2Rlc2NyaXB0aW9uJ10pID8gJGNnYmxvZ19jYXRlZ29yeVsnZGVzY3JpcHRpb24nXSA6ICcnLAogICAgICAgICAgICAncGFyZW50X2lkJyA9PiBpc3NldCgkY2dibG9nX2NhdGVnb3J5WydwYXJlbnRfaWQnXSkgPyAoaW50KSRjZ2Jsb2dfY2F0ZWdvcnlbJ3BhcmVudF9pZCddIDogbnVsbCwKICAgICAgICAgICAgJ3Bvc2l0aW9uJyA9PiBpc3NldCgkY2dibG9nX2NhdGVnb3J5WydpdGVtX29yZGVyJ10pID8gKGludCkkY2dibG9nX2NhdGVnb3J5WydpdGVtX29yZGVyJ10gOiAwCiAgICAgICAgKTsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBQcmVwYXJlIGZpZWxkIGRlZmluaXRpb24gZGF0YSBmb3IgTElTRQogICAgICovCiAgICBwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIFByZXBhcmVGaWVsZERlZkRhdGEoJGNnYmxvZ19maWVsZGRlZikKICAgIHsKICAgICAgICByZXR1cm4gYXJyYXkoCiAgICAgICAgICAgICdhbGlhcycgPT4gJGNnYmxvZ19maWVsZGRlZlsnbmFtZSddLAogICAgICAgICAgICAndHlwZScgPT4gc2VsZjo6TWFwRmllbGRUeXBlKCRjZ2Jsb2dfZmllbGRkZWZbJ3R5cGUnXSksCiAgICAgICAgICAgICdwb3NpdGlvbicgPT4gaXNzZXQoJGNnYmxvZ19maWVsZGRlZlsnaXRlbV9vcmRlciddKSA/IChpbnQpJGNnYmxvZ19maWVsZGRlZlsnaXRlbV9vcmRlciddIDogMCwKICAgICAgICAgICAgJ3B1YmxpYycgPT4gaXNzZXQoJGNnYmxvZ19maWVsZGRlZlsncHVibGljJ10pID8gKGludCkkY2dibG9nX2ZpZWxkZGVmWydwdWJsaWMnXSA6IDEKICAgICAgICApOwogICAgfQp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.MigrationEngine.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE1pZ3JhdGlvbiBFbmdpbmUgQ2xhc3MKICogQ29yZSBtaWdyYXRpb24gbG9naWMgZm9yIENHQmxvZyB0byBMSVNFCiAqLwoKaWYgKCFkZWZpbmVkKCdDTVNfVkVSU0lPTicpKSBleGl0OwoKY2xhc3MgTWlncmF0aW9uRW5naW5lCnsKICAgIHByaXZhdGUgJG1vZHVsZTsKICAgIHByaXZhdGUgJGRiOwogICAgcHJpdmF0ZSAkaW5zdGFuY2VfbmFtZTsKICAgIHByaXZhdGUgJGluc3RhbmNlX2ZyaWVuZGx5bmFtZTsKICAgIHByaXZhdGUgJHVzZV9leGlzdGluZzsKICAgIHByaXZhdGUgJGV4aXN0aW5nX2luc3RhbmNlX2lkOwogICAgcHJpdmF0ZSAkbWlncmF0ZV9hcnRpY2xlczsKICAgIHByaXZhdGUgJG1pZ3JhdGVfY2F0ZWdvcmllczsKICAgIHByaXZhdGUgJG1pZ3JhdGVfZmllbGRkZWZzOwogICAgcHJpdmF0ZSAkbWlncmF0ZV9maWVsZHZhbHM7CiAgICBwcml2YXRlICRyZXN1bHRzOwogICAgcHJpdmF0ZSAkZXJyb3JzOwogICAgcHJpdmF0ZSAkd2FybmluZ3M7CiAgICBwcml2YXRlICRsb2dfZmlsZSA9IG51bGw7CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbW9kdWxlKQogICAgewogICAgICAgICR0aGlzLT5tb2R1bGUgPSAkbW9kdWxlOwogICAgICAgIAogICAgICAgIC8vIERvbid0IGluaXRpYWxpemUgREIgaGVyZSAtIGRvIGl0IGxhemlseSB3aGVuIG5lZWRlZAogICAgICAgICR0aGlzLT5yZXN1bHRzID0gYXJyYXkoCiAgICAgICAgICAgICdhcnRpY2xlcycgPT4gMCwKICAgICAgICAgICAgJ2NhdGVnb3JpZXMnID0+IDAsCiAgICAgICAgICAgICdmaWVsZGRlZnMnID0+IDAsCiAgICAgICAgICAgICdmaWVsZHZhbHMnID0+IDAKICAgICAgICApOwogICAgICAgICR0aGlzLT5lcnJvcnMgPSBhcnJheSgpOwogICAgICAgICR0aGlzLT53YXJuaW5ncyA9IGFycmF5KCk7CiAgICAgICAgJHRoaXMtPmRiID0gbnVsbDsgLy8gSW5pdGlhbGl6ZSBsYXppbHkKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBHZXQgZGF0YWJhc2UgY29ubmVjdGlvbiAobGF6eSBpbml0aWFsaXphdGlvbikKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBHZXREYigpCiAgICB7CiAgICAgICAgaWYgKCR0aGlzLT5kYiA9PT0gbnVsbCkgewogICAgICAgICAgICAkdGhpcy0+ZGIgPSBjbXNtcygpLT5HZXREYigpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJHRoaXMtPmRiOwogICAgfQogICAgCiAgICAvKioKICAgICAqIFNldHVwIGxvZ2dpbmcgKGxhenkgaW5pdGlhbGl6YXRpb24pCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gU2V0dXBMb2dnaW5nKCkKICAgIHsKICAgICAgICBpZiAoJHRoaXMtPmxvZ19maWxlID09PSBudWxsKSB7CiAgICAgICAgICAgICRtb2R1bGVfcGF0aCA9ICR0aGlzLT5tb2R1bGUtPkdldE1vZHVsZVBhdGgoKTsKICAgICAgICAgICAgJGxvZ3NfZGlyID0gY21zX2pvaW5fcGF0aCgkbW9kdWxlX3BhdGgsICdsb2dzJyk7CiAgICAgICAgICAgIGlmICghaXNfZGlyKCRsb2dzX2RpcikpIHsKICAgICAgICAgICAgICAgIEBta2RpcigkbG9nc19kaXIsIDA3NTUsIHRydWUpOwogICAgICAgICAgICAgICAgLy8gU2V0IGNvcnJlY3Qgb3duZXJzaGlwIGZvciBsb2dzIGRpcmVjdG9yeQogICAgICAgICAgICAgICAgQGNob3duKCRsb2dzX2RpciwgJ25ld3N0MzkyMicpOwogICAgICAgICAgICAgICAgQGNoZ3JwKCRsb2dzX2RpciwgJ25ld3N0MzkyMicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgICR0aGlzLT5sb2dfZmlsZSA9IGNtc19qb2luX3BhdGgoJGxvZ3NfZGlyLCAnbWlncmF0aW9uXycgLiBkYXRlKCdZLW0tZF9ILWktcycpIC4gJy5sb2cnKTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8qKgogICAgICogU2V0IG1pZ3JhdGlvbiBwYXJhbWV0ZXJzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBTZXRQYXJhbWV0ZXJzKCRwYXJhbXMpCiAgICB7CiAgICAgICAgJHRoaXMtPmluc3RhbmNlX25hbWUgPSBpc3NldCgkcGFyYW1zWydpbnN0YW5jZV9uYW1lJ10pID8gdHJpbSgkcGFyYW1zWydpbnN0YW5jZV9uYW1lJ10pIDogJyc7CiAgICAgICAgJHRoaXMtPmluc3RhbmNlX2ZyaWVuZGx5bmFtZSA9IGlzc2V0KCRwYXJhbXNbJ2luc3RhbmNlX2ZyaWVuZGx5bmFtZSddKSA/IHRyaW0oJHBhcmFtc1snaW5zdGFuY2VfZnJpZW5kbHluYW1lJ10pIDogJyc7CiAgICAgICAgJHRoaXMtPnVzZV9leGlzdGluZyA9IGlzc2V0KCRwYXJhbXNbJ3VzZV9leGlzdGluZyddKSAmJiAkcGFyYW1zWyd1c2VfZXhpc3RpbmcnXSA9PSAxOwogICAgICAgICR0aGlzLT5leGlzdGluZ19pbnN0YW5jZV9pZCA9IGlzc2V0KCRwYXJhbXNbJ2V4aXN0aW5nX2luc3RhbmNlX2lkJ10pID8gKGludCkkcGFyYW1zWydleGlzdGluZ19pbnN0YW5jZV9pZCddIDogMDsKICAgICAgICAkdGhpcy0+bWlncmF0ZV9hcnRpY2xlcyA9IGlzc2V0KCRwYXJhbXNbJ21pZ3JhdGVfYXJ0aWNsZXMnXSkgJiYgJHBhcmFtc1snbWlncmF0ZV9hcnRpY2xlcyddID09IDE7CiAgICAgICAgJHRoaXMtPm1pZ3JhdGVfY2F0ZWdvcmllcyA9IGlzc2V0KCRwYXJhbXNbJ21pZ3JhdGVfY2F0ZWdvcmllcyddKSAmJiAkcGFyYW1zWydtaWdyYXRlX2NhdGVnb3JpZXMnXSA9PSAxOwogICAgICAgICR0aGlzLT5taWdyYXRlX2ZpZWxkZGVmcyA9IGlzc2V0KCRwYXJhbXNbJ21pZ3JhdGVfZmllbGRkZWZzJ10pICYmICRwYXJhbXNbJ21pZ3JhdGVfZmllbGRkZWZzJ10gPT0gMTsKICAgICAgICAkdGhpcy0+bWlncmF0ZV9maWVsZHZhbHMgPSBpc3NldCgkcGFyYW1zWydtaWdyYXRlX2ZpZWxkdmFscyddKSAmJiAkcGFyYW1zWydtaWdyYXRlX2ZpZWxkdmFscyddID09IDE7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogRXhlY3V0ZSBtaWdyYXRpb24KICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIEV4ZWN1dGUoKQogICAgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgICR0aGlzLT5Mb2coJ1N0YXJ0aW5nIG1pZ3JhdGlvbiBmcm9tIENHQmxvZyB0byBMSVNFLi4uJyk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBWYWxpZGF0ZSBwcmVyZXF1aXNpdGVzCiAgICAgICAgICAgICR2YWxpZGF0b3IgPSBuZXcgTWlncmF0aW9uVmFsaWRhdG9yKCR0aGlzLT5tb2R1bGUpOwogICAgICAgICAgICBpZiAoISR2YWxpZGF0b3ItPlZhbGlkYXRlUHJlcmVxdWlzaXRlcygpKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZXJyb3JzID0gJHZhbGlkYXRvci0+R2V0RXJyb3JzKCk7CiAgICAgICAgICAgICAgICAkZXJyb3JfbXNnID0gaW1wbG9kZSgnLCAnLCAkdGhpcy0+ZXJyb3JzKTsKICAgICAgICAgICAgICAgICR0aGlzLT5Mb2coJ01pZ3JhdGlvbiBmYWlsZWQ6ICcgLiAkZXJyb3JfbXNnKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgICAgLy8gRGV0ZXJtaW5lIHRhcmdldCBpbnN0YW5jZQogICAgICAgICAgICBpZiAoJHRoaXMtPnVzZV9leGlzdGluZykgewogICAgICAgICAgICAgICAgaWYgKCEkdmFsaWRhdG9yLT5WYWxpZGF0ZUV4aXN0aW5nSW5zdGFuY2UoJHRoaXMtPmV4aXN0aW5nX2luc3RhbmNlX2lkKSkgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5lcnJvcnMgPSAkdmFsaWRhdG9yLT5HZXRFcnJvcnMoKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkaW5zdGFuY2VzID0gJHRoaXMtPm1vZHVsZS0+R2V0TElTRUluc3RhbmNlcygpOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGluc3RhbmNlcyBhcyAkaW5zdCkgewogICAgICAgICAgICAgICAgICAgIGlmICgkaW5zdC0+bW9kdWxlX2lkID09ICR0aGlzLT5leGlzdGluZ19pbnN0YW5jZV9pZCkgewogICAgICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aW5zdGFuY2VfbmFtZSA9IHN0cl9yZXBsYWNlKCdMSVNFJywgJycsICRpbnN0LT5tb2R1bGVfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIC8vIFZhbGlkYXRlIGFuZCBhdXRvLWdlbmVyYXRlIGluc3RhbmNlIG5hbWUgaWYgZW1wdHkKICAgICAgICAgICAgICAgICR2YWxpZGF0ZWRfbmFtZSA9ICR2YWxpZGF0b3ItPlZhbGlkYXRlSW5zdGFuY2VOYW1lKCR0aGlzLT5pbnN0YW5jZV9uYW1lLCB0cnVlKTsKICAgICAgICAgICAgICAgIGlmICgkdmFsaWRhdGVkX25hbWUgPT09IGZhbHNlKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmVycm9ycyA9ICR2YWxpZGF0b3ItPkdldEVycm9ycygpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIC8vIFVzZSB2YWxpZGF0ZWQvZ2VuZXJhdGVkIG5hbWUgKG1heSBoYXZlIGJlZW4gYXV0by1nZW5lcmF0ZWQgb3IgbW9kaWZpZWQpCiAgICAgICAgICAgICAgICAkdGhpcy0+aW5zdGFuY2VfbmFtZSA9ICR2YWxpZGF0ZWRfbmFtZTsKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gQXV0by1nZW5lcmF0ZSBmcmllbmRseSBuYW1lIGlmIGVtcHR5CiAgICAgICAgICAgICAgICBpZiAoZW1wdHkoJHRoaXMtPmluc3RhbmNlX2ZyaWVuZGx5bmFtZSkpIHsKICAgICAgICAgICAgICAgICAgICAkdGhpcy0+aW5zdGFuY2VfZnJpZW5kbHluYW1lID0gJ0NHQmxvZyBNaWdyYXRlZCAtICcgLiBkYXRlKCdZLW0tZCBIOmk6cycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgLy8gQ3JlYXRlIG5ldyBpbnN0YW5jZQogICAgICAgICAgICAgICAgaWYgKCEkdGhpcy0+Q3JlYXRlTElTRUluc3RhbmNlKCkpIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgICR0aGlzLT53YXJuaW5ncyA9ICR2YWxpZGF0b3ItPkdldFdhcm5pbmdzKCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBTdGFydCB0cmFuc2FjdGlvbgogICAgICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgICAgICAgJGRiLT5TdGFydFRyYW5zKCk7CiAgICAgICAgICAgIAogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgLy8gTWlncmF0ZSBjYXRlZ29yaWVzIGZpcnN0IChuZWVkZWQgZm9yIHJlbGF0aW9uc2hpcHMpCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm1pZ3JhdGVfY2F0ZWdvcmllcykgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5NaWdyYXRlQ2F0ZWdvcmllcygpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBNaWdyYXRlIGZpZWxkIGRlZmluaXRpb25zCiAgICAgICAgICAgICAgICBpZiAoJHRoaXMtPm1pZ3JhdGVfZmllbGRkZWZzKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPk1pZ3JhdGVGaWVsZERlZnMoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgLy8gTWlncmF0ZSBhcnRpY2xlcwogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5taWdyYXRlX2FydGljbGVzKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPk1pZ3JhdGVBcnRpY2xlcygpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBNaWdyYXRlIGZpZWxkIHZhbHVlcwogICAgICAgICAgICAgICAgaWYgKCR0aGlzLT5taWdyYXRlX2ZpZWxkdmFscyAmJiAkdGhpcy0+bWlncmF0ZV9hcnRpY2xlcykgewogICAgICAgICAgICAgICAgICAgICR0aGlzLT5NaWdyYXRlRmllbGRWYWxzKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIENvbW1pdCB0cmFuc2FjdGlvbgogICAgICAgICAgICAgICAgJGRiLT5Db21wbGV0ZVRyYW5zKCk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIExvZyBzdWNjZXNzZnVsIG1pZ3JhdGlvbiB3aXRoIHN0YXRpc3RpY3MKICAgICAgICAgICAgICAgICRzdGF0c19tc2cgPSBzcHJpbnRmKAogICAgICAgICAgICAgICAgICAgICdNaWdyYXRpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxseTogJWQgYXJ0aWNsZXMsICVkIGNhdGVnb3JpZXMsICVkIGZpZWxkIGRlZmluaXRpb25zLCAlZCBmaWVsZCB2YWx1ZXMgbWlncmF0ZWQnLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5yZXN1bHRzWydhcnRpY2xlcyddLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5yZXN1bHRzWydjYXRlZ29yaWVzJ10sCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnJlc3VsdHNbJ2ZpZWxkZGVmcyddLAogICAgICAgICAgICAgICAgICAgICR0aGlzLT5yZXN1bHRzWydmaWVsZHZhbHMnXQogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICR0aGlzLT5Mb2coJHN0YXRzX21zZyk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAgICAgJGRiLT5GYWlsVHJhbnMoKTsKICAgICAgICAgICAgICAgICR0aGlzLT5lcnJvcnNbXSA9ICR0aGlzLT5tb2R1bGUtPkxhbmcoJ2Vycm9yX21pZ3JhdGlvbl9mYWlsZWQnLCAkZS0+Z2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgICAgICR0aGlzLT5Mb2coJ01pZ3JhdGlvbiBmYWlsZWQ6ICcgLiAkZS0+Z2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgJHRoaXMtPmVycm9yc1tdID0gJHRoaXMtPm1vZHVsZS0+TGFuZygnZXJyb3JfbWlncmF0aW9uX2ZhaWxlZCcsICRlLT5nZXRNZXNzYWdlKCkpOwogICAgICAgICAgICAkdGhpcy0+TG9nKCdNaWdyYXRpb24gZXJyb3I6ICcgLiAkZS0+Z2V0TWVzc2FnZSgpKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBDcmVhdGUgbmV3IExJU0UgaW5zdGFuY2UKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBDcmVhdGVMSVNFSW5zdGFuY2UoKQogICAgewogICAgICAgICR0aGlzLT5Mb2coJ0NyZWF0aW5nIG5ldyBMSVNFIGluc3RhbmNlOiAnIC4gJHRoaXMtPmluc3RhbmNlX25hbWUpOwogICAgICAgIAogICAgICAgICRsaXNlID0gJHRoaXMtPm1vZHVsZS0+R2V0TElTRU1vZHVsZSgpOwogICAgICAgIGlmICghJGxpc2UpIHsKICAgICAgICAgICAgJHRoaXMtPmVycm9yc1tdID0gJHRoaXMtPm1vZHVsZS0+TGFuZygnZXJyb3JfbGlzZV9ub3RfaW5zdGFsbGVkJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gVXNlIExJU0UgY2xvbmVyIHRvIGNyZWF0ZSBpbnN0YW5jZSBmcm9tIGEgYmFzZSB0ZW1wbGF0ZQogICAgICAgIC8vIFdlJ2xsIGNsb25lIGZyb20gdGhlIGZpcnN0IGF2YWlsYWJsZSBMSVNFIGluc3RhbmNlLCBvciBjcmVhdGUgYmFzZSBzdHJ1Y3R1cmUKICAgICAgICAkaW5zdGFuY2VzID0gJHRoaXMtPm1vZHVsZS0+R2V0TElTRUluc3RhbmNlcygpOwogICAgICAgIAogICAgICAgIGlmIChlbXB0eSgkaW5zdGFuY2VzKSkgewogICAgICAgICAgICAvLyBObyBleGlzdGluZyBpbnN0YW5jZXMgLSB3ZSBuZWVkIHRvIGNyZWF0ZSBiYXNlIHN0cnVjdHVyZSBtYW51YWxseQogICAgICAgICAgICByZXR1cm4gJHRoaXMtPkNyZWF0ZUxJU0VJbnN0YW5jZUZyb21TY3JhdGNoKCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgLy8gQ2xvbmUgZnJvbSBmaXJzdCBhdmFpbGFibGUgaW5zdGFuY2UKICAgICAgICAgICAgJGJhc2VfaW5zdGFuY2UgPSByZXNldCgkaW5zdGFuY2VzKTsKICAgICAgICAgICAgJGJhc2VfbmFtZSA9ICRiYXNlX2luc3RhbmNlLT5tb2R1bGVfbmFtZTsKICAgICAgICAgICAgJG5ld19uYW1lID0gJ0xJU0UnIC4gJHRoaXMtPmluc3RhbmNlX25hbWU7CiAgICAgICAgICAgIAogICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgLy8gTG9hZCBMSVNFQ2xvbmVyIGNsYXNzCiAgICAgICAgICAgICAgICAkbGlzZV9wYXRoID0gY21zX2pvaW5fcGF0aChjbXNtcygpLT5HZXRDb25maWcoKVsncm9vdF9wYXRoJ10sICdtb2R1bGVzJywgJ0xJU0UnLCAnbGliJywgJ2NsYXNzLkxJU0VDbG9uZXIucGhwJyk7CiAgICAgICAgICAgICAgICBpZiAoIWZpbGVfZXhpc3RzKCRsaXNlX3BhdGgpKSB7CiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPmVycm9yc1tdID0gJ0xJU0VDbG9uZXIgY2xhc3Mgbm90IGZvdW5kJzsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXF1aXJlX29uY2UoJGxpc2VfcGF0aCk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICRjbG9uZXIgPSBuZXcgTElTRUNsb25lcigkYmFzZV9uYW1lLCAkbmV3X25hbWUpOwogICAgICAgICAgICAgICAgJGZ1bGxfbmFtZSA9ICRjbG9uZXItPlJ1bigpOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAvLyBVcGRhdGUgaW5zdGFuY2UgcHJlZmVyZW5jZXMKICAgICAgICAgICAgICAgICRtb2RvcHMgPSBjbXNtcygpLT5HZXRNb2R1bGVPcGVyYXRpb25zKCk7CiAgICAgICAgICAgICAgICAkbmV3X21vZCA9ICRtb2RvcHMtPmdldF9tb2R1bGVfaW5zdGFuY2UoJGZ1bGxfbmFtZSwgTlVMTCwgVFJVRSk7CiAgICAgICAgICAgICAgICBpZiAoJG5ld19tb2QpIHsKICAgICAgICAgICAgICAgICAgICAkbmV3X21vZC0+U2V0UHJlZmVyZW5jZSgnZnJpZW5kbHluYW1lJywgJHRoaXMtPmluc3RhbmNlX2ZyaWVuZGx5bmFtZSA/OiAkdGhpcy0+aW5zdGFuY2VfbmFtZSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICR0aGlzLT5pbnN0YW5jZV9uYW1lID0gc3RyX3JlcGxhY2UoJ0xJU0UnLCAnJywgJGZ1bGxfbmFtZSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+TG9nKCdMSVNFIGluc3RhbmNlIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5OiAnIC4gJGZ1bGxfbmFtZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgICAgICAkdGhpcy0+ZXJyb3JzW10gPSAkdGhpcy0+bW9kdWxlLT5MYW5nKCdlcnJvcl9taWdyYXRpb25fZmFpbGVkJywgJGUtPmdldE1lc3NhZ2UoKSk7CiAgICAgICAgICAgICAgICAkdGhpcy0+TG9nKCdGYWlsZWQgdG8gY3JlYXRlIGluc3RhbmNlOiAnIC4gJGUtPmdldE1lc3NhZ2UoKSk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICAKICAgIC8qKgogICAgICogQ3JlYXRlIExJU0UgaW5zdGFuY2UgZnJvbSBzY3JhdGNoIChmYWxsYmFjaykKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBDcmVhdGVMSVNFSW5zdGFuY2VGcm9tU2NyYXRjaCgpCiAgICB7CiAgICAgICAgLy8gVGhpcyBpcyBhIGNvbXBsZXggb3BlcmF0aW9uIC0gZm9yIG5vdywgd2UnbGwgcmVxdWlyZSBhdCBsZWFzdCBvbmUgTElTRSBpbnN0YW5jZQogICAgICAgICR0aGlzLT5lcnJvcnNbXSA9ICdDYW5ub3QgY3JlYXRlIExJU0UgaW5zdGFuY2U6IE5vIGJhc2UgTElTRSBpbnN0YW5jZXMgYXZhaWxhYmxlLiBQbGVhc2UgY3JlYXRlIGF0IGxlYXN0IG9uZSBMSVNFIGluc3RhbmNlIGZpcnN0Lic7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgCiAgICAvKioKICAgICAqIEdldCB0YWJsZSBwcmVmaXggZm9yIGluc3RhbmNlCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gR2V0VGFibGVQcmVmaXgoKQogICAgewogICAgICAgIC8vIElmIHVzaW5nIGV4aXN0aW5nIGluc3RhbmNlLCBnZXQgdGhlIGFjdHVhbCBtb2R1bGUgbmFtZQogICAgICAgIGlmICgkdGhpcy0+dXNlX2V4aXN0aW5nICYmICR0aGlzLT5leGlzdGluZ19pbnN0YW5jZV9pZCkgewogICAgICAgICAgICAkbGlzZSA9ICR0aGlzLT5tb2R1bGUtPkdldExJU0VNb2R1bGUoKTsKICAgICAgICAgICAgaWYgKCRsaXNlKSB7CiAgICAgICAgICAgICAgICAkaW5zdGFuY2VzID0gJHRoaXMtPm1vZHVsZS0+R2V0TElTRUluc3RhbmNlcygpOwogICAgICAgICAgICAgICAgZm9yZWFjaCAoJGluc3RhbmNlcyBhcyAkaW5zdCkgewogICAgICAgICAgICAgICAgICAgIGlmICgkaW5zdC0+bW9kdWxlX2lkID09ICR0aGlzLT5leGlzdGluZ19pbnN0YW5jZV9pZCkgewogICAgICAgICAgICAgICAgICAgICAgICAkaW5zdGFuY2VfYWxpYXMgPSBzdHJ0b2xvd2VyKCRpbnN0LT5tb2R1bGVfbmFtZSk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbXNfZGJfcHJlZml4KCkgLiAnbW9kdWxlXycgLiAkaW5zdGFuY2VfYWxpYXMgLiAnXyc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIEZvciBuZXcgaW5zdGFuY2VzCiAgICAgICAgJGluc3RhbmNlX2FsaWFzID0gc3RydG9sb3dlcignTElTRScgLiAkdGhpcy0+aW5zdGFuY2VfbmFtZSk7CiAgICAgICAgcmV0dXJuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfJyAuICRpbnN0YW5jZV9hbGlhcyAuICdfJzsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBNaWdyYXRlIGNhdGVnb3JpZXMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBNaWdyYXRlQ2F0ZWdvcmllcygpCiAgICB7CiAgICAgICAgJHRoaXMtPlNldHVwTG9nZ2luZygpOwogICAgICAgICR0aGlzLT5Mb2coJ01pZ3JhdGluZyBjYXRlZ29yaWVzLi4uJyk7CiAgICAgICAgJGRiID0gJHRoaXMtPkdldERiKCk7CiAgICAgICAgJGNnYmxvZ19jYXRzID0gRGF0YU1hcHBlcjo6R2V0Q0dCbG9nQ2F0ZWdvcmllcygkZGIpOwogICAgICAgICR0YWJsZV9wcmVmaXggPSAkdGhpcy0+R2V0VGFibGVQcmVmaXgoKTsKICAgICAgICAkY2F0ZWdvcnlfdGFibGUgPSAkdGFibGVfcHJlZml4IC4gJ2NhdGVnb3J5JzsKICAgICAgICAKICAgICAgICAkY2F0ZWdvcnlfbWFwID0gYXJyYXkoKTsgLy8gTWFwIG9sZCBJRCB0byBuZXcgSUQKICAgICAgICAKICAgICAgICAvLyBGaXJzdCBwYXNzOiBpbnNlcnQgYWxsIGNhdGVnb3JpZXMgd2l0aCB0ZW1wb3JhcnkgcGFyZW50X2lkCiAgICAgICAgZm9yZWFjaCAoJGNnYmxvZ19jYXRzIGFzICRjYXQpIHsKICAgICAgICAgICAgJGRhdGEgPSBEYXRhTWFwcGVyOjpQcmVwYXJlQ2F0ZWdvcnlEYXRhKCRjYXQpOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gSW5zZXJ0IGNhdGVnb3J5IChwYXJlbnRfaWQgd2lsbCBiZSB1cGRhdGVkIGluIHNlY29uZCBwYXNzKQogICAgICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJyAuICRjYXRlZ29yeV90YWJsZSAuICcgKG5hbWUsIGRlc2NyaXB0aW9uLCBwYXJlbnRfaWQsIHBvc2l0aW9uKSBWQUxVRVMgKD8sID8sID8sID8pJzsKICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoCiAgICAgICAgICAgICAgICAkZGF0YVsnbmFtZSddLAogICAgICAgICAgICAgICAgJGRhdGFbJ2Rlc2NyaXB0aW9uJ10sCiAgICAgICAgICAgICAgICBudWxsLCAvLyBTZXQgdG8gbnVsbCBpbml0aWFsbHkKICAgICAgICAgICAgICAgICRkYXRhWydwb3NpdGlvbiddCiAgICAgICAgICAgICkpOwogICAgICAgICAgICAKICAgICAgICAgICAgJG5ld19pZCA9ICRkYi0+SW5zZXJ0X0lEKCk7CiAgICAgICAgICAgICRjYXRlZ29yeV9tYXBbJGNhdFsnaWQnXV0gPSAkbmV3X2lkOwogICAgICAgICAgICAkdGhpcy0+cmVzdWx0c1snY2F0ZWdvcmllcyddKys7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIFNlY29uZCBwYXNzOiB1cGRhdGUgcGFyZW50X2lkIHJlZmVyZW5jZXMgd2l0aCBuZXcgSURzCiAgICAgICAgZm9yZWFjaCAoJGNnYmxvZ19jYXRzIGFzICRjYXQpIHsKICAgICAgICAgICAgaWYgKCRjYXRbJ3BhcmVudF9pZCddICYmIGlzc2V0KCRjYXRlZ29yeV9tYXBbJGNhdFsncGFyZW50X2lkJ11dKSAmJiBpc3NldCgkY2F0ZWdvcnlfbWFwWyRjYXRbJ2lkJ11dKSkgewogICAgICAgICAgICAgICAgJG5ld19pZCA9ICRjYXRlZ29yeV9tYXBbJGNhdFsnaWQnXV07CiAgICAgICAgICAgICAgICAkbmV3X3BhcmVudF9pZCA9ICRjYXRlZ29yeV9tYXBbJGNhdFsncGFyZW50X2lkJ11dOwogICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ1VQREFURSAnIC4gJGNhdGVnb3J5X3RhYmxlIC4gJyBTRVQgcGFyZW50X2lkID0gPyBXSEVSRSBjYXRlZ29yeV9pZCA9ID8nOwogICAgICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5ld19wYXJlbnRfaWQsICRuZXdfaWQpKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBTdG9yZSBjYXRlZ29yeSBtYXAgZm9yIGFydGljbGUgcmVsYXRpb25zaGlwcwogICAgICAgICR0aGlzLT5jYXRlZ29yeV9tYXAgPSAkY2F0ZWdvcnlfbWFwOwogICAgICAgICR0aGlzLT5Mb2coJ01pZ3JhdGVkICcgLiAkdGhpcy0+cmVzdWx0c1snY2F0ZWdvcmllcyddIC4gJyBjYXRlZ29yaWVzJywgZmFsc2UpOyAvLyBEb24ndCBhdWRpdCBldmVyeSBzdGVwCiAgICB9CiAgICAKICAgIC8qKgogICAgICogTWlncmF0ZSBmaWVsZCBkZWZpbml0aW9ucwogICAgICovCiAgICBwcml2YXRlIGZ1bmN0aW9uIE1pZ3JhdGVGaWVsZERlZnMoKQogICAgewogICAgICAgICR0aGlzLT5TZXR1cExvZ2dpbmcoKTsKICAgICAgICAkdGhpcy0+TG9nKCdNaWdyYXRpbmcgZmllbGQgZGVmaW5pdGlvbnMuLi4nKTsKICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgICAkY2dibG9nX2ZpZWxkcyA9IERhdGFNYXBwZXI6OkdldENHQmxvZ0ZpZWxkRGVmcygkZGIpOwogICAgICAgICR0YWJsZV9wcmVmaXggPSAkdGhpcy0+R2V0VGFibGVQcmVmaXgoKTsKICAgICAgICAkZmllbGRkZWZfdGFibGUgPSAkdGFibGVfcHJlZml4IC4gJ2ZpZWxkZGVmJzsKICAgICAgICAKICAgICAgICAkZmllbGRkZWZfbWFwID0gYXJyYXkoKTsgLy8gTWFwIG9sZCBJRCB0byBuZXcgSUQKICAgICAgICAKICAgICAgICBmb3JlYWNoICgkY2dibG9nX2ZpZWxkcyBhcyAkZmllbGQpIHsKICAgICAgICAgICAgJGRhdGEgPSBEYXRhTWFwcGVyOjpQcmVwYXJlRmllbGREZWZEYXRhKCRmaWVsZCk7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBJbnNlcnQgZmllbGQgZGVmaW5pdGlvbgogICAgICAgICAgICAkcXVlcnkgPSAnSU5TRVJUIElOVE8gJyAuICRmaWVsZGRlZl90YWJsZSAuICcgKGFsaWFzLCB0eXBlLCBwb3NpdGlvbiwgcHVibGljKSBWQUxVRVMgKD8sID8sID8sID8pJzsKICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoCiAgICAgICAgICAgICAgICAkZGF0YVsnYWxpYXMnXSwKICAgICAgICAgICAgICAgICRkYXRhWyd0eXBlJ10sCiAgICAgICAgICAgICAgICAkZGF0YVsncG9zaXRpb24nXSwKICAgICAgICAgICAgICAgICRkYXRhWydwdWJsaWMnXQogICAgICAgICAgICApKTsKICAgICAgICAgICAgCiAgICAgICAgICAgICRuZXdfaWQgPSAkZGItPkluc2VydF9JRCgpOwogICAgICAgICAgICAkZmllbGRkZWZfbWFwWyRmaWVsZFsnaWQnXV0gPSAkbmV3X2lkOwogICAgICAgICAgICAkdGhpcy0+cmVzdWx0c1snZmllbGRkZWZzJ10rKzsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gU3RvcmUgZmllbGRkZWYgbWFwIGZvciBsYXRlciB1c2UKICAgICAgICAkdGhpcy0+ZmllbGRkZWZfbWFwID0gJGZpZWxkZGVmX21hcDsKICAgICAgICAkdGhpcy0+TG9nKCdNaWdyYXRlZCAnIC4gJHRoaXMtPnJlc3VsdHNbJ2ZpZWxkZGVmcyddIC4gJyBmaWVsZCBkZWZpbml0aW9ucycsIGZhbHNlKTsgLy8gRG9uJ3QgYXVkaXQgZXZlcnkgc3RlcAogICAgfQogICAgCiAgICAvKioKICAgICAqIE1pZ3JhdGUgYXJ0aWNsZXMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBNaWdyYXRlQXJ0aWNsZXMoKQogICAgewogICAgICAgICR0aGlzLT5TZXR1cExvZ2dpbmcoKTsKICAgICAgICAkdGhpcy0+TG9nKCdNaWdyYXRpbmcgYXJ0aWNsZXMuLi4nKTsKICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgICAkY2dibG9nX2FydGljbGVzID0gRGF0YU1hcHBlcjo6R2V0Q0dCbG9nQXJ0aWNsZXMoJGRiKTsKICAgICAgICAkdGFibGVfcHJlZml4ID0gJHRoaXMtPkdldFRhYmxlUHJlZml4KCk7CiAgICAgICAgJGl0ZW1fdGFibGUgPSAkdGFibGVfcHJlZml4IC4gJ2l0ZW0nOwogICAgICAgICRpdGVtX2NhdGVnb3J5X3RhYmxlID0gJHRhYmxlX3ByZWZpeCAuICdpdGVtX2NhdGVnb3JpZXMnOwogICAgICAgIAogICAgICAgICRhcnRpY2xlX21hcCA9IGFycmF5KCk7IC8vIE1hcCBvbGQgSUQgdG8gbmV3IElECiAgICAgICAgJHBvc2l0aW9uID0gMDsKICAgICAgICAKICAgICAgICAvLyBHZXQgY2F0ZWdvcnkgbWFwIGlmIGNhdGVnb3JpZXMgd2VyZSBtaWdyYXRlZAogICAgICAgICRjYXRlZ29yeV9tYXAgPSBhcnJheSgpOwogICAgICAgIGlmICgkdGhpcy0+bWlncmF0ZV9jYXRlZ29yaWVzICYmIGlzc2V0KCR0aGlzLT5jYXRlZ29yeV9tYXApKSB7CiAgICAgICAgICAgICRjYXRlZ29yeV9tYXAgPSAkdGhpcy0+Y2F0ZWdvcnlfbWFwOwogICAgICAgIH0KICAgICAgICAKICAgICAgICBmb3JlYWNoICgkY2dibG9nX2FydGljbGVzIGFzICRhcnRpY2xlKSB7CiAgICAgICAgICAgICRkYXRhID0gRGF0YU1hcHBlcjo6UHJlcGFyZUFydGljbGVEYXRhKCRhcnRpY2xlLCAkZGIpOwogICAgICAgICAgICAkZGF0YVsncG9zaXRpb24nXSA9ICRwb3NpdGlvbisrOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gSW5zZXJ0IGFydGljbGUKICAgICAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcgLiAkaXRlbV90YWJsZSAuICcgKHRpdGxlLCBkYXRhLCBzdW1tYXJ5LCBjcmVhdGVfZGF0ZSwgbW9kaWZpZWRfZGF0ZSwgYWN0aXZlLCB1cmwsIGFsaWFzLCBwb3NpdGlvbikgVkFMVUVTICg/LCA/LCA/LCA/LCA/LCA/LCA/LCA/LCA/KSc7CiAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KAogICAgICAgICAgICAgICAgJGRhdGFbJ3RpdGxlJ10sCiAgICAgICAgICAgICAgICAkZGF0YVsnZGF0YSddLAogICAgICAgICAgICAgICAgJGRhdGFbJ3N1bW1hcnknXSwKICAgICAgICAgICAgICAgICRkYXRhWydjcmVhdGVfZGF0ZSddLAogICAgICAgICAgICAgICAgJGRhdGFbJ21vZGlmaWVkX2RhdGUnXSwKICAgICAgICAgICAgICAgICRkYXRhWydhY3RpdmUnXSwKICAgICAgICAgICAgICAgICRkYXRhWyd1cmwnXSwKICAgICAgICAgICAgICAgICRkYXRhWydhbGlhcyddLAogICAgICAgICAgICAgICAgJGRhdGFbJ3Bvc2l0aW9uJ10KICAgICAgICAgICAgKSk7CiAgICAgICAgICAgIAogICAgICAgICAgICAkbmV3X2lkID0gJGRiLT5JbnNlcnRfSUQoKTsKICAgICAgICAgICAgJGFydGljbGVfbWFwWyRhcnRpY2xlWydjZ2Jsb2dfaWQnXV0gPSAkbmV3X2lkOwogICAgICAgICAgICAkdGhpcy0+cmVzdWx0c1snYXJ0aWNsZXMnXSsrOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gTWlncmF0ZSBjYXRlZ29yeSByZWxhdGlvbnNoaXBzCiAgICAgICAgICAgIGlmICgkdGhpcy0+bWlncmF0ZV9jYXRlZ29yaWVzICYmICFlbXB0eSgkY2F0ZWdvcnlfbWFwKSkgewogICAgICAgICAgICAgICAgJGNhdGVnb3JpZXMgPSBEYXRhTWFwcGVyOjpHZXRDR0Jsb2dBcnRpY2xlQ2F0ZWdvcmllcygkZGIsICRhcnRpY2xlWydjZ2Jsb2dfaWQnXSk7CiAgICAgICAgICAgICAgICBmb3JlYWNoICgkY2F0ZWdvcmllcyBhcyAkb2xkX2NhdF9pZCkgewogICAgICAgICAgICAgICAgICAgIGlmIChpc3NldCgkY2F0ZWdvcnlfbWFwWyRvbGRfY2F0X2lkXSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5ld19jYXRfaWQgPSAkY2F0ZWdvcnlfbWFwWyRvbGRfY2F0X2lkXTsKICAgICAgICAgICAgICAgICAgICAgICAgJHF1ZXJ5ID0gJ0lOU0VSVCBJTlRPICcgLiAkaXRlbV9jYXRlZ29yeV90YWJsZSAuICcgKGl0ZW1faWQsIGNhdGVnb3J5X2lkKSBWQUxVRVMgKD8sID8pJzsKICAgICAgICAgICAgICAgICAgICAgICAgJGRiLT5FeGVjdXRlKCRxdWVyeSwgYXJyYXkoJG5ld19pZCwgJG5ld19jYXRfaWQpKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gU3RvcmUgYXJ0aWNsZSBtYXAgZm9yIGZpZWxkIHZhbHVlcwogICAgICAgICR0aGlzLT5hcnRpY2xlX21hcCA9ICRhcnRpY2xlX21hcDsKICAgICAgICAkdGhpcy0+TG9nKCdNaWdyYXRlZCAnIC4gJHRoaXMtPnJlc3VsdHNbJ2FydGljbGVzJ10gLiAnIGFydGljbGVzJywgZmFsc2UpOyAvLyBEb24ndCBhdWRpdCBldmVyeSBzdGVwCiAgICB9CiAgICAKICAgIC8qKgogICAgICogTWlncmF0ZSBmaWVsZCB2YWx1ZXMKICAgICAqLwogICAgcHJpdmF0ZSBmdW5jdGlvbiBNaWdyYXRlRmllbGRWYWxzKCkKICAgIHsKICAgICAgICBpZiAoIWlzc2V0KCR0aGlzLT5hcnRpY2xlX21hcCkgfHwgIWlzc2V0KCR0aGlzLT5maWVsZGRlZl9tYXApKSB7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJHRoaXMtPlNldHVwTG9nZ2luZygpOwogICAgICAgICR0aGlzLT5Mb2coJ01pZ3JhdGluZyBmaWVsZCB2YWx1ZXMuLi4nKTsKICAgICAgICAkZGIgPSAkdGhpcy0+R2V0RGIoKTsKICAgICAgICAkdGFibGVfcHJlZml4ID0gJHRoaXMtPkdldFRhYmxlUHJlZml4KCk7CiAgICAgICAgJGZpZWxkdmFsX3RhYmxlID0gJHRhYmxlX3ByZWZpeCAuICdmaWVsZHZhbCc7CiAgICAgICAgCiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmFydGljbGVfbWFwIGFzICRvbGRfYXJ0aWNsZV9pZCA9PiAkbmV3X2FydGljbGVfaWQpIHsKICAgICAgICAgICAgJGZpZWxkdmFscyA9IERhdGFNYXBwZXI6OkdldENHQmxvZ0ZpZWxkVmFscygkZGIsICRvbGRfYXJ0aWNsZV9pZCk7CiAgICAgICAgICAgIAogICAgICAgICAgICBmb3JlYWNoICgkZmllbGR2YWxzIGFzICRmaWVsZHZhbCkgewogICAgICAgICAgICAgICAgaWYgKCFpc3NldCgkdGhpcy0+ZmllbGRkZWZfbWFwWyRmaWVsZHZhbFsnZmllbGRkZWZfaWQnXV0pKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIFNraXAgaWYgZmllbGRkZWYgd2Fzbid0IG1pZ3JhdGVkCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICRuZXdfZmllbGRkZWZfaWQgPSAkdGhpcy0+ZmllbGRkZWZfbWFwWyRmaWVsZHZhbFsnZmllbGRkZWZfaWQnXV07CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICRxdWVyeSA9ICdJTlNFUlQgSU5UTyAnIC4gJGZpZWxkdmFsX3RhYmxlIC4gJyAoaXRlbV9pZCwgZmllbGRkZWZfaWQsIHZhbHVlKSBWQUxVRVMgKD8sID8sID8pJzsKICAgICAgICAgICAgICAgICRkYi0+RXhlY3V0ZSgkcXVlcnksIGFycmF5KAogICAgICAgICAgICAgICAgICAgICRuZXdfYXJ0aWNsZV9pZCwKICAgICAgICAgICAgICAgICAgICAkbmV3X2ZpZWxkZGVmX2lkLAogICAgICAgICAgICAgICAgICAgICRmaWVsZHZhbFsndmFsdWUnXQogICAgICAgICAgICAgICAgKSk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICR0aGlzLT5yZXN1bHRzWydmaWVsZHZhbHMnXSsrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgICAgICR0aGlzLT5Mb2coJ01pZ3JhdGVkICcgLiAkdGhpcy0+cmVzdWx0c1snZmllbGR2YWxzJ10gLiAnIGZpZWxkIHZhbHVlcycsIGZhbHNlKTsgLy8gRG9uJ3QgYXVkaXQgZXZlcnkgc3RlcAogICAgfQogICAgCiAgICAvKioKICAgICAqIExvZyBtZXNzYWdlIHRvIGJvdGggZmlsZSBhbmQgYWRtaW4gbG9nCiAgICAgKi8KICAgIHByaXZhdGUgZnVuY3Rpb24gTG9nKCRtZXNzYWdlLCAkYXVkaXQgPSB0cnVlKQogICAgewogICAgICAgICR0aGlzLT5TZXR1cExvZ2dpbmcoKTsKICAgICAgICAkdGltZXN0YW1wID0gZGF0ZSgnWS1tLWQgSDppOnMnKTsKICAgICAgICAkbG9nX2VudHJ5ID0gIlskdGltZXN0YW1wXSAkbWVzc2FnZVxuIjsKICAgICAgICBAZmlsZV9wdXRfY29udGVudHMoJHRoaXMtPmxvZ19maWxlLCAkbG9nX2VudHJ5LCBGSUxFX0FQUEVORCk7CiAgICAgICAgCiAgICAgICAgLy8gQWxzbyBsb2cgdG8gQ01TTVMgQWRtaW4gTG9nCiAgICAgICAgaWYgKCRhdWRpdCAmJiBtZXRob2RfZXhpc3RzKCR0aGlzLT5tb2R1bGUsICdBdWRpdCcpKSB7CiAgICAgICAgICAgICR0aGlzLT5tb2R1bGUtPkF1ZGl0KDAsICR0aGlzLT5tb2R1bGUtPkxhbmcoJ2ZyaWVuZGx5bmFtZScpLCAkbWVzc2FnZSk7CiAgICAgICAgfQogICAgfQogICAgCiAgICAvKioKICAgICAqIEdldCByZXN1bHRzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRSZXN1bHRzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPnJlc3VsdHM7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogR2V0IGVycm9ycwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RXJyb3JzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmVycm9yczsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBHZXQgd2FybmluZ3MKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIEdldFdhcm5pbmdzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPndhcm5pbmdzOwogICAgfQp9Cgo=]]></data>
	</file>
	<file>
	  <filename>/lib/class.MigrationValidator.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE1pZ3JhdGlvbiBWYWxpZGF0b3IgQ2xhc3MKICogVmFsaWRhdGVzIHByZXJlcXVpc2l0ZXMgYW5kIGRhdGEgaW50ZWdyaXR5IGJlZm9yZSBtaWdyYXRpb24KICovCgppZiAoIWRlZmluZWQoJ0NNU19WRVJTSU9OJykpIGV4aXQ7CgpjbGFzcyBNaWdyYXRpb25WYWxpZGF0b3IKewogICAgcHJpdmF0ZSAkbW9kdWxlOwogICAgcHJpdmF0ZSAkZXJyb3JzOwogICAgcHJpdmF0ZSAkd2FybmluZ3M7CiAgICAKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkbW9kdWxlKQogICAgewogICAgICAgICR0aGlzLT5tb2R1bGUgPSAkbW9kdWxlOwogICAgICAgICR0aGlzLT5lcnJvcnMgPSBhcnJheSgpOwogICAgICAgICR0aGlzLT53YXJuaW5ncyA9IGFycmF5KCk7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogVmFsaWRhdGUgYWxsIHByZXJlcXVpc2l0ZXMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIFZhbGlkYXRlUHJlcmVxdWlzaXRlcygpCiAgICB7CiAgICAgICAgJHRoaXMtPmVycm9ycyA9IGFycmF5KCk7CiAgICAgICAgJHRoaXMtPndhcm5pbmdzID0gYXJyYXkoKTsKICAgICAgICAKICAgICAgICAvLyBDaGVjayBDR0Jsb2cgYXZhaWxhYmlsaXR5CiAgICAgICAgaWYgKCEkdGhpcy0+bW9kdWxlLT5Jc0NHQmxvZ0F2YWlsYWJsZSgpKSB7CiAgICAgICAgICAgICR0aGlzLT5lcnJvcnNbXSA9ICR0aGlzLT5tb2R1bGUtPkxhbmcoJ2Vycm9yX2NnYmxvZ19ub3RfaW5zdGFsbGVkJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8gQ2hlY2sgTElTRSBhdmFpbGFiaWxpdHkKICAgICAgICBpZiAoISR0aGlzLT5tb2R1bGUtPklzTElTRUF2YWlsYWJsZSgpKSB7CiAgICAgICAgICAgICR0aGlzLT5lcnJvcnNbXSA9ICR0aGlzLT5tb2R1bGUtPkxhbmcoJ2Vycm9yX2xpc2Vfbm90X2luc3RhbGxlZCcpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIENoZWNrIGZvciBkYXRhCiAgICAgICAgJHN0YXRzID0gJHRoaXMtPm1vZHVsZS0+R2V0Q0dCbG9nU3RhdHMoKTsKICAgICAgICBpZiAoJHN0YXRzWydhcnRpY2xlcyddID09IDAgJiYgJHN0YXRzWydjYXRlZ29yaWVzJ10gPT0gMCAmJiAkc3RhdHNbJ2ZpZWxkZGVmcyddID09IDApIHsKICAgICAgICAgICAgJHRoaXMtPmVycm9yc1tdID0gJHRoaXMtPm1vZHVsZS0+TGFuZygnZXJyb3Jfbm9fZGF0YScpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIFdhcm5pbmdzIGZvciBtaXNzaW5nIGRhdGEgdHlwZXMKICAgICAgICBpZiAoJHN0YXRzWydhcnRpY2xlcyddID09IDApIHsKICAgICAgICAgICAgJHRoaXMtPndhcm5pbmdzW10gPSAkdGhpcy0+bW9kdWxlLT5MYW5nKCd3YXJuaW5nX25vX2FydGljbGVzJyk7CiAgICAgICAgfQogICAgICAgIGlmICgkc3RhdHNbJ2NhdGVnb3JpZXMnXSA9PSAwKSB7CiAgICAgICAgICAgICR0aGlzLT53YXJuaW5nc1tdID0gJHRoaXMtPm1vZHVsZS0+TGFuZygnd2FybmluZ19ub19jYXRlZ29yaWVzJyk7CiAgICAgICAgfQogICAgICAgIGlmICgkc3RhdHNbJ2ZpZWxkZGVmcyddID09IDApIHsKICAgICAgICAgICAgJHRoaXMtPndhcm5pbmdzW10gPSAkdGhpcy0+bW9kdWxlLT5MYW5nKCd3YXJuaW5nX25vX2ZpZWxkZGVmcycpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBWYWxpZGF0ZSBpbnN0YW5jZSBuYW1lIGFuZCBnZW5lcmF0ZSBkZWZhdWx0IGlmIGVtcHR5CiAgICAgKiBSZXR1cm5zIHRoZSB2YWxpZGF0ZWQvZ2VuZXJhdGVkIGluc3RhbmNlIG5hbWUgb3IgZmFsc2Ugb24gZXJyb3IKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIFZhbGlkYXRlSW5zdGFuY2VOYW1lKCRpbnN0YW5jZV9uYW1lLCAkY2hlY2tfZXhpc3RzID0gdHJ1ZSkKICAgIHsKICAgICAgICAvLyBHZW5lcmF0ZSBkZWZhdWx0IG5hbWUgaWYgZW1wdHkKICAgICAgICBpZiAoZW1wdHkoJGluc3RhbmNlX25hbWUpKSB7CiAgICAgICAgICAgICRpbnN0YW5jZV9uYW1lID0gJHRoaXMtPkdlbmVyYXRlRGVmYXVsdEluc3RhbmNlTmFtZSgpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBDaGVjayBmb3IgdmFsaWQgY2hhcmFjdGVycyAoYWxwaGFudW1lcmljIG9ubHkpCiAgICAgICAgaWYgKCFwcmVnX21hdGNoKCcvXlthLXpBLVowLTldKyQvJywgJGluc3RhbmNlX25hbWUpKSB7CiAgICAgICAgICAgICR0aGlzLT5lcnJvcnNbXSA9ICR0aGlzLT5tb2R1bGUtPkxhbmcoJ2Vycm9yX2luc3RhbmNlX2ludmFsaWQnKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBDaGVjayBpZiBpbnN0YW5jZSBhbHJlYWR5IGV4aXN0cyBhbmQgZmluZCBhdmFpbGFibGUgbmFtZQogICAgICAgIGlmICgkY2hlY2tfZXhpc3RzKSB7CiAgICAgICAgICAgICRsaXNlID0gJHRoaXMtPm1vZHVsZS0+R2V0TElTRU1vZHVsZSgpOwogICAgICAgICAgICBpZiAoJGxpc2UpIHsKICAgICAgICAgICAgICAgICRpbnN0YW5jZXMgPSAkdGhpcy0+bW9kdWxlLT5HZXRMSVNFSW5zdGFuY2VzKCk7CiAgICAgICAgICAgICAgICAkY291bnRlciA9IDE7CiAgICAgICAgICAgICAgICAkb3JpZ2luYWxfbmFtZSA9ICRpbnN0YW5jZV9uYW1lOwogICAgICAgICAgICAgICAgJHZhbGlkYXRlZF9uYW1lID0gJGluc3RhbmNlX25hbWU7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIC8vIElmIG5hbWUgZXhpc3RzLCBhcHBlbmQgbnVtYmVyIHVudGlsIHdlIGZpbmQgYXZhaWxhYmxlIG5hbWUKICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICAgICAgJG5hbWVfZXhpc3RzID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCAoJGluc3RhbmNlcyBhcyAkaW5zdGFuY2UpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWUgPSBzdHJfcmVwbGFjZSgnTElTRScsICcnLCAkaW5zdGFuY2UtPm1vZHVsZV9uYW1lKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0cnRvbG93ZXIoJG5hbWUpID09IHN0cnRvbG93ZXIoJHZhbGlkYXRlZF9uYW1lKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG5hbWVfZXhpc3RzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGlmICghJG5hbWVfZXhpc3RzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAvLyBOYW1lIGV4aXN0cywgdHJ5IHdpdGggY291bnRlcgogICAgICAgICAgICAgICAgICAgICR2YWxpZGF0ZWRfbmFtZSA9ICRvcmlnaW5hbF9uYW1lIC4gJGNvdW50ZXI7CiAgICAgICAgICAgICAgICAgICAgJGNvdW50ZXIrKzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgcmV0dXJuICR2YWxpZGF0ZWRfbmFtZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJGluc3RhbmNlX25hbWU7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogR2VuZXJhdGUgZGVmYXVsdCBpbnN0YW5jZSBuYW1lCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBHZW5lcmF0ZURlZmF1bHRJbnN0YW5jZU5hbWUoKQogICAgewogICAgICAgIC8vIEdlbmVyYXRlIG5hbWUgYmFzZWQgb24gQ0dCbG9nIGFuZCB0aW1lc3RhbXAKICAgICAgICAkYmFzZV9uYW1lID0gJ0NHQmxvZ01pZ3JhdGVkJzsKICAgICAgICAkdGltZXN0YW1wID0gZGF0ZSgnWW1kSGlzJyk7CiAgICAgICAgcmV0dXJuICRiYXNlX25hbWUgLiAkdGltZXN0YW1wOwogICAgfQogICAgCiAgICAvKioKICAgICAqIFZhbGlkYXRlIGV4aXN0aW5nIGluc3RhbmNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBWYWxpZGF0ZUV4aXN0aW5nSW5zdGFuY2UoJGluc3RhbmNlX2lkKQogICAgewogICAgICAgICRsaXNlID0gJHRoaXMtPm1vZHVsZS0+R2V0TElTRU1vZHVsZSgpOwogICAgICAgIGlmICghJGxpc2UpIHsKICAgICAgICAgICAgJHRoaXMtPmVycm9yc1tdID0gJHRoaXMtPm1vZHVsZS0+TGFuZygnZXJyb3JfbGlzZV9ub3RfaW5zdGFsbGVkJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgJGluc3RhbmNlcyA9ICR0aGlzLT5tb2R1bGUtPkdldExJU0VJbnN0YW5jZXMoKTsKICAgICAgICAkZm91bmQgPSBmYWxzZTsKICAgICAgICBmb3JlYWNoICgkaW5zdGFuY2VzIGFzICRpbnN0YW5jZSkgewogICAgICAgICAgICBpZiAoJGluc3RhbmNlLT5tb2R1bGVfaWQgPT0gJGluc3RhbmNlX2lkKSB7CiAgICAgICAgICAgICAgICAkZm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKCEkZm91bmQpIHsKICAgICAgICAgICAgJHRoaXMtPmVycm9yc1tdID0gJHRoaXMtPm1vZHVsZS0+TGFuZygnZXJyb3JfaW5zdGFuY2Vfbm90X2ZvdW5kJyk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogR2V0IGVycm9ycwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0RXJyb3JzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPmVycm9yczsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBHZXQgd2FybmluZ3MKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIEdldFdhcm5pbmdzKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPndhcm5pbmdzOwogICAgfQogICAgCiAgICAvKioKICAgICAqIENoZWNrIGlmIHZhbGlkYXRpb24gcGFzc2VkCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBJc1ZhbGlkKCkKICAgIHsKICAgICAgICByZXR1cm4gZW1wdHkoJHRoaXMtPmVycm9ycyk7CiAgICB9Cn0KCg==]]></data>
	</file>
	<file>
	  <filename>/logs/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/logs/migration_2025-11-28_00-46-48.log</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[WzIwMjUtMTEtMjggMDA6NDY6NDhdIFN0YXJ0aW5nIG1pZ3JhdGlvbiBmcm9tIENHQmxvZyB0byBMSVNFLi4uClsyMDI1LTExLTI4IDAwOjQ2OjQ4XSBDcmVhdGluZyBuZXcgTElTRSBpbnN0YW5jZTogQ0dCbG9nTWlncmF0ZWQyMDI1MTEyODAwNDY0OApbMjAyNS0xMS0yOCAwMDo0Njo1MF0gTElTRSBpbnN0YW5jZSBjcmVhdGVkIHN1Y2Nlc3NmdWxseTogTElTRUNHQmxvZ01pZ3JhdGVkMjAyNTExMjgwMDQ2NDgKWzIwMjUtMTEtMjggMDA6NDY6NTBdIE1pZ3JhdGluZyBjYXRlZ29yaWVzLi4uClsyMDI1LTExLTI4IDAwOjQ2OjUwXSBNaWdyYXRlZCAxIGNhdGVnb3JpZXMKWzIwMjUtMTEtMjggMDA6NDY6NTBdIE1pZ3JhdGluZyBmaWVsZCBkZWZpbml0aW9ucy4uLgpbMjAyNS0xMS0yOCAwMDo0Njo1MF0gTWlncmF0ZWQgMCBmaWVsZCBkZWZpbml0aW9ucwpbMjAyNS0xMS0yOCAwMDo0Njo1MF0gTWlncmF0aW5nIGFydGljbGVzLi4uClsyMDI1LTExLTI4IDAwOjQ2OjUwXSBNaWdyYXRlZCAxIGFydGljbGVzClsyMDI1LTExLTI4IDAwOjQ2OjUwXSBNaWdyYXRpbmcgZmllbGQgdmFsdWVzLi4uClsyMDI1LTExLTI4IDAwOjQ2OjUwXSBNaWdyYXRlZCAwIGZpZWxkIHZhbHVlcwpbMjAyNS0xMS0yOCAwMDo0Njo1MF0gTWlncmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHk6IDEgYXJ0aWNsZXMsIDEgY2F0ZWdvcmllcywgMCBmaWVsZCBkZWZpbml0aW9ucywgMCBmaWVsZCB2YWx1ZXMgbWlncmF0ZWQK]]></data>
	</file>
	<file>
	  <filename>/MAS_CGBlogToLISE.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIE1BU19DR0Jsb2dUb0xJU0UgTW9kdWxlIGZvciBDTVNNUwogKiAKICogTWlncmF0ZXMgZGF0YSBmcm9tIENHQmxvZyBtb2R1bGUgdG8gTElTRSBpbnN0YW5jZXMKICogCiAqIEBwYWNrYWdlIE1BU19DR0Jsb2dUb0xJU0UKICogQGF1dGhvciBtYXN0ZXIzMzk1CiAqIEBjb3B5cmlnaHQgMjAyNSBtYXN0ZXIzMzk1CiAqIEBsaWNlbnNlIEdQTCB2MwogKiBAdmVyc2lvbiAxLjAuMAogKi8KCmlmICghZnVuY3Rpb25fZXhpc3RzKCdjbXNtcycpKSBleGl0OwoKY2xhc3MgTUFTX0NHQmxvZ1RvTElTRSBleHRlbmRzIENNU01vZHVsZQp7CiAgICAvLyBQcmVmZXJlbmNlIGNvbnN0YW50cwogICAgY29uc3QgUFJFRl9GUklFTkRMWU5BTUUgPSAnZnJpZW5kbHluYW1lJzsKICAgIGNvbnN0IFBSRUZfU0hPV19ET05BVElPTlMgPSAnbWFzX3Nob3dfZG9uYXRpb25zJzsKICAgIAogICAgZnVuY3Rpb24gR2V0TmFtZSgpIHsgCiAgICAgICAgcmV0dXJuICdNQVNfQ0dCbG9nVG9MSVNFJzsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpIHsgCiAgICAgICAgJGZyaWVuZGx5bmFtZSA9IHRyaW0oJHRoaXMtPkdldFByZWZlcmVuY2Uoc2VsZjo6UFJFRl9GUklFTkRMWU5BTUUpKTsKICAgICAgICBpZiAoISRmcmllbmRseW5hbWUpIHsKICAgICAgICAgICAgJGZyaWVuZGx5bmFtZSA9ICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRmcmllbmRseW5hbWU7IAogICAgfQogICAgCiAgICBmdW5jdGlvbiBHZXRWZXJzaW9uKCkgeyAKICAgICAgICByZXR1cm4gJzEuMC4wJzsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIE1pbmltdW1DTVNWZXJzaW9uKCkgeyAKICAgICAgICByZXR1cm4gJzIuMi4wJzsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIEdldEF1dGhvcigpIHsgCiAgICAgICAgcmV0dXJuICdtYXN0ZXIzMzk1JzsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIEdldEF1dGhvckVtYWlsKCkgeyAKICAgICAgICByZXR1cm4gJ2luZm9AbmV3c3RhcmdldGVkLmNvbSc7IAogICAgfQogICAgCiAgICBmdW5jdGlvbiBHZXRDaGFuZ2VMb2coKSB7IAogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygnY2hhbmdlbG9nJyk7IAogICAgfQogICAgCiAgICBmdW5jdGlvbiBHZXRIZWxwKCkgeyAKICAgICAgICByZXR1cm4gJHRoaXMtPkxhbmcoJ2hlbHAnKTsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIEdldEFkbWluRGVzY3JpcHRpb24oKSB7IAogICAgICAgIHJldHVybiAkdGhpcy0+TGFuZygnbW9kZGVzY3JpcHRpb24nKTsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkgeyAKICAgICAgICByZXR1cm4gdHJ1ZTsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIEhhc0FkbWluKCkgeyAKICAgICAgICByZXR1cm4gdHJ1ZTsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIEdldEFkbWluU2VjdGlvbigpIHsKICAgICAgICByZXR1cm4gJ2V4dGVuc2lvbnMnOwogICAgfQogICAgCiAgICBmdW5jdGlvbiBMYXp5TG9hZEZyb250ZW5kKCkgeyAKICAgICAgICByZXR1cm4gdHJ1ZTsgCiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIExhenlMb2FkQWRtaW4oKSB7IAogICAgICAgIHJldHVybiB0cnVlOyAKICAgIH0KICAgIAogICAgZnVuY3Rpb24gQWxsb3dTbWFydHlDYWNoaW5nKCkgeyAKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICAKICAgIGZ1bmN0aW9uIEluaXRpYWxpemVGcm9udGVuZCgpCiAgICB7CiAgICAgICAgJHRoaXMtPlJlc3RyaWN0VW5rbm93blBhcmFtcygpOwogICAgfQogICAgCiAgICBmdW5jdGlvbiBJbml0aWFsaXplQWRtaW4oKQogICAgewogICAgICAgICR0aGlzLT5DcmVhdGVQYXJhbWV0ZXIoJ2FjdGlvbicsICdkZWZhdWx0YWRtaW4nLCAnQWN0aW9uIHRvIHBlcmZvcm0nKTsKICAgIH0KICAgIAogICAgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkKICAgIHsKICAgICAgICByZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignTW9kaWZ5IFNpdGUgUHJlZmVyZW5jZXMnKTsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBDaGVjayBpZiBDR0Jsb2cgbW9kdWxlIGlzIGluc3RhbGxlZCBhbmQgYXZhaWxhYmxlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBJc0NHQmxvZ0F2YWlsYWJsZSgpCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJG1vZG9wcyA9IGNtc21zKCktPkdldE1vZHVsZU9wZXJhdGlvbnMoKTsKICAgICAgICAgICAgJGluc3RhbGxlZCA9ICRtb2RvcHMtPkdldEluc3RhbGxlZE1vZHVsZXMoKTsKICAgICAgICAgICAgcmV0dXJuIGluX2FycmF5KCdDR0Jsb2cnLCAkaW5zdGFsbGVkKTsKICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gJGUpIHsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0gY2F0Y2ggKEVycm9yICRlKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CiAgICAKICAgIC8qKgogICAgICogQ2hlY2sgaWYgTElTRSBtb2R1bGUgaXMgaW5zdGFsbGVkIGFuZCBhdmFpbGFibGUKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIElzTElTRUF2YWlsYWJsZSgpCiAgICB7CiAgICAgICAgdHJ5IHsKICAgICAgICAgICAgJG1vZG9wcyA9IGNtc21zKCktPkdldE1vZHVsZU9wZXJhdGlvbnMoKTsKICAgICAgICAgICAgJGluc3RhbGxlZCA9ICRtb2RvcHMtPkdldEluc3RhbGxlZE1vZHVsZXMoKTsKICAgICAgICAgICAgcmV0dXJuIGluX2FycmF5KCdMSVNFJywgJGluc3RhbGxlZCk7CiAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uICRlKSB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9IGNhdGNoIChFcnJvciAkZSkgewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgfQogICAgCiAgICAvKioKICAgICAqIEdldCBDR0Jsb2cgbW9kdWxlIGluc3RhbmNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRDR0Jsb2dNb2R1bGUoKQogICAgewogICAgICAgIGlmICghJHRoaXMtPklzQ0dCbG9nQXZhaWxhYmxlKCkpIHsKICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgfQogICAgICAgIHJldHVybiBjbXNtcygpLT5HZXRNb2R1bGVJbnN0YW5jZSgnQ0dCbG9nJyk7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogR2V0IExJU0UgbW9kdWxlIGluc3RhbmNlCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRMSVNFTW9kdWxlKCkKICAgIHsKICAgICAgICBpZiAoISR0aGlzLT5Jc0xJU0VBdmFpbGFibGUoKSkgewogICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGNtc21zKCktPkdldE1vZHVsZUluc3RhbmNlKCdMSVNFJyk7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogR2V0IGxpc3Qgb2YgYXZhaWxhYmxlIExJU0UgaW5zdGFuY2VzCiAgICAgKi8KICAgIHB1YmxpYyBmdW5jdGlvbiBHZXRMSVNFSW5zdGFuY2VzKCkKICAgIHsKICAgICAgICB0cnkgewogICAgICAgICAgICBpZiAoISR0aGlzLT5Jc0xJU0VBdmFpbGFibGUoKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgICRsaXNlID0gJHRoaXMtPkdldExJU0VNb2R1bGUoKTsKICAgICAgICAgICAgaWYgKCEkbGlzZSB8fCAhaXNfb2JqZWN0KCRsaXNlKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIGFycmF5KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICAgIGlmICghbWV0aG9kX2V4aXN0cygkbGlzZSwgJ0xpc3RNb2R1bGVzJykpIHsKICAgICAgICAgICAgICAgIHJldHVybiBhcnJheSgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAkcmVzdWx0ID0gJGxpc2UtPkxpc3RNb2R1bGVzKCk7CiAgICAgICAgICAgIHJldHVybiBpc19hcnJheSgkcmVzdWx0KSA/ICRyZXN1bHQgOiBhcnJheSgpOwogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgICAgICB9IGNhdGNoIChFcnJvciAkZSkgewogICAgICAgICAgICByZXR1cm4gYXJyYXkoKTsKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgcmV0dXJuIGFycmF5KCk7CiAgICAgICAgfQogICAgfQogICAgCiAgICAvKioKICAgICAqIEdldCBDR0Jsb2cgc3RhdGlzdGljcwogICAgICovCiAgICBwdWJsaWMgZnVuY3Rpb24gR2V0Q0dCbG9nU3RhdHMoKQogICAgewogICAgICAgICRzdGF0cyA9IGFycmF5KAogICAgICAgICAgICAnYXJ0aWNsZXMnID0+IDAsCiAgICAgICAgICAgICdjYXRlZ29yaWVzJyA9PiAwLAogICAgICAgICAgICAnZmllbGRkZWZzJyA9PiAwLAogICAgICAgICAgICAnZmllbGR2YWxzJyA9PiAwCiAgICAgICAgKTsKICAgICAgICAKICAgICAgICBpZiAoISR0aGlzLT5Jc0NHQmxvZ0F2YWlsYWJsZSgpKSB7CiAgICAgICAgICAgIHJldHVybiAkc3RhdHM7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIHRyeSB7CiAgICAgICAgICAgICRkYiA9IGNtc21zKCktPkdldERiKCk7CiAgICAgICAgICAgIGlmICghJGRiKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJHN0YXRzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICAkc3RhdHNbJ2FydGljbGVzJ10gPSAoaW50KSRkYi0+R2V0T25lKCdTRUxFQ1QgQ09VTlQoKikgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9jZ2Jsb2cnKTsKICAgICAgICAgICAgJHN0YXRzWydjYXRlZ29yaWVzJ10gPSAoaW50KSRkYi0+R2V0T25lKCdTRUxFQ1QgQ09VTlQoKikgRlJPTSAnIC4gY21zX2RiX3ByZWZpeCgpIC4gJ21vZHVsZV9jZ2Jsb2dfY2F0ZWdvcmllcycpOwogICAgICAgICAgICAkc3RhdHNbJ2ZpZWxkZGVmcyddID0gKGludCkkZGItPkdldE9uZSgnU0VMRUNUIENPVU5UKCopIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfY2dibG9nX2ZpZWxkZGVmcycpOwogICAgICAgICAgICAkc3RhdHNbJ2ZpZWxkdmFscyddID0gKGludCkkZGItPkdldE9uZSgnU0VMRUNUIENPVU5UKCopIEZST00gJyAuIGNtc19kYl9wcmVmaXgoKSAuICdtb2R1bGVfY2dibG9nX2ZpZWxkdmFscycpOwogICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiAkZSkgewogICAgICAgICAgICAvLyBSZXR1cm4gZW1wdHkgc3RhdHMgb24gZXJyb3IKICAgICAgICB9IGNhdGNoIChFcnJvciAkZSkgewogICAgICAgICAgICAvLyBSZXR1cm4gZW1wdHkgc3RhdHMgb24gZXJyb3IKICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgJGUpIHsKICAgICAgICAgICAgLy8gUmV0dXJuIGVtcHR5IHN0YXRzIG9uIGVycm9yCiAgICAgICAgfQogICAgICAgIAogICAgICAgIHJldHVybiAkc3RhdHM7CiAgICB9CiAgICAKICAgIC8qKgogICAgICogVmFsaWRhdGUgbWlncmF0aW9uIHByZXJlcXVpc2l0ZXMKICAgICAqLwogICAgcHVibGljIGZ1bmN0aW9uIFZhbGlkYXRlTWlncmF0aW9uUHJlcmVxdWlzaXRlcygpCiAgICB7CiAgICAgICAgJGVycm9ycyA9IGFycmF5KCk7CiAgICAgICAgCiAgICAgICAgaWYgKCEkdGhpcy0+SXNDR0Jsb2dBdmFpbGFibGUoKSkgewogICAgICAgICAgICAkZXJyb3JzW10gPSAkdGhpcy0+TGFuZygnZXJyb3JfY2dibG9nX25vdF9pbnN0YWxsZWQnKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYgKCEkdGhpcy0+SXNMSVNFQXZhaWxhYmxlKCkpIHsKICAgICAgICAgICAgJGVycm9yc1tdID0gJHRoaXMtPkxhbmcoJ2Vycm9yX2xpc2Vfbm90X2luc3RhbGxlZCcpOwogICAgICAgIH0KICAgICAgICAKICAgICAgICByZXR1cm4gJGVycm9yczsKICAgIH0KICAgIAogICAgLyoqCiAgICAgKiBTaG93IGRvbmF0aW9ucyB0YWIKICAgICAqLwogICAgZnVuY3Rpb24gU2hvd0RvbmF0aW9uc1RhYigpIHsKICAgICAgICByZXR1cm4gKCR0aGlzLT5HZXRQcmVmZXJlbmNlKCJoaWRlZG9uYXRpb25zdGFiIikgIT0gJHRoaXMtPkdldFZlcnNpb24oKSk7CiAgICB9Cn0KCg==]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIEluc3RhbGxhdGlvbiBNZXRob2QgZm9yIE1BU19DR0Jsb2dUb0xJU0UKICogQ29tcGF0aWJsZSB3aXRoIFBIUCA3LjQtOC42CiAqLwoKaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2Ntc21zJykpIGV4aXQ7CgovLyBSZWdpc3RlciBhcyBwbHVnaW4gbW9kdWxlCiR0aGlzLT5SZWdpc3Rlck1vZHVsZVBsdWdpbih0cnVlKTsKCi8vIENyZWF0ZSBwZXJtaXNzaW9uCiR0aGlzLT5DcmVhdGVQZXJtaXNzaW9uKCdVc2UgTUFTX0NHQmxvZ1RvTElTRScsICdVc2UgTUFTIENHQmxvZyB0byBMSVNFIE1pZ3JhdGlvbiBtb2R1bGUnKTsKCi8vIEdyYW50IHBlcm1pc3Npb24gdG8gQWRtaW4gZ3JvdXAgKGdyb3VwX2lkID0gMSkgYnkgZGVmYXVsdAokZGIgPSBjbXNtcygpLT5HZXREYigpOwokZ3JvdXBfaWQgPSAxOyAvLyBBZG1pbiBncm91cAokcGVybWlzc2lvbl9uYW1lID0gJ1VzZSBNQVNfQ0dCbG9nVG9MSVNFJzsKJHBlcm1faWQgPSAkZGItPkdldE9uZSgnU0VMRUNUIHBlcm1pc3Npb25faWQgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdwZXJtaXNzaW9ucyBXSEVSRSBwZXJtaXNzaW9uX25hbWUgPSA/JywgYXJyYXkoJHBlcm1pc3Npb25fbmFtZSkpOwppZiAoJHBlcm1faWQpIHsKICAgICRleGlzdHMgPSAkZGItPkdldE9uZSgnU0VMRUNUIHBlcm1pc3Npb25faWQgRlJPTSAnIC4gQ01TX0RCX1BSRUZJWCAuICdncm91cF9wZXJtcyBXSEVSRSBwZXJtaXNzaW9uX2lkID0gPyBBTkQgZ3JvdXBfaWQgPSA/JywgYXJyYXkoJHBlcm1faWQsICRncm91cF9pZCkpOwogICAgaWYgKCEkZXhpc3RzKSB7CiAgICAgICAgJGRiLT5FeGVjdXRlKCdJTlNFUlQgSU5UTyAnIC4gQ01TX0RCX1BSRUZJWCAuICdncm91cF9wZXJtcyAoZ3JvdXBfaWQsIHBlcm1pc3Npb25faWQpIFZBTFVFUyAoPywgPyknLCBhcnJheSgkZ3JvdXBfaWQsICRwZXJtX2lkKSk7CiAgICB9Cn0KCi8vIENyZWF0ZSBsb2dzIGRpcmVjdG9yeSBpZiBpdCBkb2Vzbid0IGV4aXN0CiRtb2R1bGVfcGF0aCA9ICR0aGlzLT5HZXRNb2R1bGVQYXRoKCk7CiRsb2dzX2RpciA9IGNtc19qb2luX3BhdGgoJG1vZHVsZV9wYXRoLCAnbG9ncycpOwppZiAoIWlzX2RpcigkbG9nc19kaXIpKSB7CiAgICBAbWtkaXIoJGxvZ3NfZGlyLCAwNzU1LCB0cnVlKTsKICAgIC8vIFNldCBjb3JyZWN0IG93bmVyc2hpcCBmb3IgbG9ncyBkaXJlY3RvcnkKICAgIEBjaG93bigkbG9nc19kaXIsICduZXdzdDM5MjInKTsKICAgIEBjaGdycCgkbG9nc19kaXIsICduZXdzdDM5MjInKTsKfQoKLy8gQXVkaXQgbG9nCiR0aGlzLT5BdWRpdCgwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCdpbnN0YWxsZWQnLCAkdGhpcy0+R2V0VmVyc2lvbigpKSk7Cgo/PgoK]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyoqCiAqIFVuaW5zdGFsbGF0aW9uIE1ldGhvZCBmb3IgTUFTX0NHQmxvZ1RvTElTRQogKiBDb21wYXRpYmxlIHdpdGggUEhQIDcuNC04LjYKICovCgppZiAoIWZ1bmN0aW9uX2V4aXN0cygnY21zbXMnKSkgZXhpdDsKCi8vIFJlbW92ZSBwZXJtaXNzaW9uCiR0aGlzLT5SZW1vdmVQZXJtaXNzaW9uKCdVc2UgTUFTX0NHQmxvZ1RvTElTRScpOwoKLy8gTm90ZTogV2Uga2VlcCBsb2dzIGluIGNhc2UgbW9kdWxlIGlzIHJlaW5zdGFsbGVkCi8vIElmIHlvdSB3YW50IHRvIGNvbXBsZXRlbHkgcmVtb3ZlIGV2ZXJ5dGhpbmcsIHVuY29tbWVudCB0aGUgZm9sbG93aW5nOgoKLy8gJG1vZHVsZV9wYXRoID0gJHRoaXMtPkdldE1vZHVsZVBhdGgoKTsKLy8gJGxvZ3NfZGlyID0gY21zX2pvaW5fcGF0aCgkbW9kdWxlX3BhdGgsICdsb2dzJyk7Ci8vIGlmIChpc19kaXIoJGxvZ3NfZGlyKSkgewovLyAgICAgJGZpbGVzID0gZ2xvYigkbG9nc19kaXIgLiAnLyonKTsKLy8gICAgIGZvcmVhY2ggKCRmaWxlcyBhcyAkZmlsZSkgewovLyAgICAgICAgIGlmIChpc19maWxlKCRmaWxlKSkgewovLyAgICAgICAgICAgICBAdW5saW5rKCRmaWxlKTsKLy8gICAgICAgICB9Ci8vICAgICB9Ci8vICAgICBAcm1kaXIoJGxvZ3NfZGlyKTsKLy8gfQoKLy8gQXVkaXQgbG9nCiR0aGlzLT5BdWRpdCgwLCAkdGhpcy0+TGFuZygnZnJpZW5kbHluYW1lJyksICR0aGlzLT5MYW5nKCd1bmluc3RhbGxlZCcpKTsKCj8+Cgo=]]></data>
	</file>
	<file>
	  <filename>/moduleinfo.ini</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[W21vZHVsZV0KbmFtZSA9ICJNQVNfQ0dCbG9nVG9MSVNFIgp2ZXJzaW9uID0gIjEuMC4wIgphdXRob3IgPSAibWFzdGVyMzM5NSIKYXV0aG9yZW1haWwgPSAiaW5mb0BuZXdzdGFyZ2V0ZWQuY29tIgptaW5jbXN2ZXJzaW9uID0gIjIuMi4wIgpsYXp5bG9hZGFkbWluID0gMQpsYXp5bG9hZGZyb250ZW5kID0gMQo=]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/donations.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGRpdiBzdHlsZT0iYm9yZGVyOjFweCBzb2xpZCBibGFjaztwYWRkaW5nOjEwcHg7Ij4KPHN0cm9uZz57JHNwb25zb3JzdGV4dH08L3N0cm9uZz4KPGJyLz4KPGEgaHJlZj0iaHR0cHM6Ly9uZXdzdGFyZ2V0ZWQuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPk5ld3MgVGFyZ2V0ZWQ8L2E+Cjxici8+CjwvZGl2Pgo8YnIvPgp7JGRvbmF0aW9uc3RleHR9Cjxici8+PGJyLz4KPGZvcm0gYWN0aW9uPSJodHRwczovL3BheXBhbC5tZS9LaW1CUz9sb2NhbGUueD1lbl9VUyZjb3VudHJ5Lng9Tk8iIG1ldGhvZD0icG9zdCIgdGFyZ2V0PSJfYmxhbmsiPgo8aW5wdXQgdHlwZT0iaW1hZ2UiIHNyYz0iaHR0cHM6Ly93d3cucGF5cGFsLmNvbS9lbl9VUy9pL2J0bi9idG5fZG9uYXRlX0xHLmdpZiIgbmFtZT0ic3VibWl0IiBhbHQ9IlBheVBhbCAtIFRoZSBzYWZlciwgZWFzaWVyIHdheSB0byBwYXkgb25saW5lISIgLz4KPC9mb3JtPgo8YnIvPjxici8+Cgp7JGZvcm1zdGFydH0KeyRoaWRlc3VibWl0fQp7JGZvcm1lbmR9Cg==]]></data>
	</file>
</module>
