<?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>ImageCompressor</name>
	<version>0.10.2</version>
  <mincmsversion>1.9.4</mincmsversion>
	<help><![CDATA[PGgzPlBhcmFtZXRlcnM8L2gzPjx1bD48bGk+PGVtPihvcHRpb25hbCk8L2VtPiBsYW5nPSJlbl9VUyIgLSBQYXJhbWV0ZXIgaXMgdXNlZCB0byBzcGVjaWZ5IHdoYXQgbGFuZ3VhZ2UgdG8gdXNlIGZvciBkaXNwbGF5IG9uIHRoZSBmcm9udGVuZC4gTm90IGFsbCBtb2R1bGVzIHN1cHBvcnQgb3IgbmVlZCB0aGlzLjwvbGk+PC91bD4=]]></help>
	<about><![CDATA[PGJyIC8+QXV0aG9yOiBKUyAmbHQ7aGlAam9uYXRoYW5zY2htaWQuZGUmZ3Q7PGJyIC8+PGJyIC8+VmVyc2lvbjogMC4xMC4yPGJyIC8+PGJyIC8+Q2hhbmdlIEhpc3Rvcnk6PGJyIC8+LS0gTWlzc2luZyBMYW5ndWFnZXN0cmluZyAtIG1vZHVsZTpJbWFnZUNvbXByZXNzb3Igc3RyaW5nOmNoYW5nZWxvZy0tPGJyIC8+]]></about>
	<description><![CDATA[Reduces file size of all images uploaded to the Image Manager to improve website performance using the smush.it-API.]]></description>
	<file>
	  <filename>/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/action.ajax.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEpvbmF0aGFuIFNjaG1pZCwgPGhpQGpvbmF0aGFuc2NobWlkLmRlPgojIFdlYjogd3d3LmpvbmF0aGFuc2NobWlkLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEltYWdlQ29tcHJlc3NvciBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBjYW4gY29tcHJlc3MgdXNlci11cGxvYWRlZCBpbWFnZXMuCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYoIWlzc2V0KCRwYXJhbXNbJ2FjdGlvbiddKSkgewoJZXhpdDsKfQokY29uZmlnID0gY21zbXMoKS0+R2V0Q29uZmlnKCk7CiRyZXR1cm4gPSBhcnJheSgpOwpzd2l0Y2goJHBhcmFtc1snYWN0aW9uJ10pIHsKCWNhc2UgJ2NoZWNrJzoKCQlpZighaW1hZ2Vjb21wcmVzc29yX3V0aWxzOjp1cmxfZm9wZW5fZW5hYmxlZCgpKQoJCXsKCQkJJHJldHVyblsnZXJyb3InXSA9ICR0aGlzLT5MYW5nKCdmb3Blbl9lcnJvcicpOwoJCQlicmVhazsKCQl9CgkJJGRhdGEgPSBpbWFnZWNvbXByZXNzb3JfdXRpbHM6OnNtdXNoaXRfcG9zdCgkY29uZmlnWydpbWFnZV91cGxvYWRzX3VybCddLkRJUkVDVE9SWV9TRVBBUkFUT1IuJHBhcmFtc1sncGF0aCddKTsKCQlpZighJGRhdGEpCgkJewoJCQkkcmV0dXJuWydlcnJvciddID0gJHRoaXMtPkxhbmcoJ04vQScpOwoJCQlicmVhazsKCQl9CgkJaWYoaXNzZXQoJGRhdGEtPmVycm9yKSAmJiAkZGF0YS0+ZXJyb3IgIT09ICdObyBzYXZpbmdzJykKCQl7CgkJCSRyZXR1cm5bJ2Vycm9yJ10gPSAkdGhpcy0+TGFuZygnc211c2hpdF9lcnJvcicpLicgJy4gJGRhdGEtPmVycm9yOwoJCQlicmVhazsKCQl9CgkJaWYoaW50dmFsKCRkYXRhLT5kZXN0X3NpemUpID09IC0xIHx8IGludHZhbCgkZGF0YS0+cGVyY2VudCkgPT0gMCkKCQl7CgkJCSRyZXR1cm5bJ21lc3NhZ2UnXSA9ICR0aGlzLT5MYW5nKCdub3NhdmluZ3MnKTsKCQkJYnJlYWs7CgkJfQoKCQkkcmV0dXJuWydtZXNzYWdlJ10gPSBzcHJpbnRmKCR0aGlzLT5MYW5nKCdjb3VsZHNhdmUnKSwgJGRhdGEtPnBlcmNlbnQpIC4gJzxiciAvPic7CgkJaWYoaXNfd3JpdGFibGUoJGNvbmZpZ1snaW1hZ2VfdXBsb2Fkc19wYXRoJ10uRElSRUNUT1JZX1NFUEFSQVRPUi4kcGFyYW1zWydwYXRoJ10pKQoJCXsKCQkJJHJldHVyblsnbWVzc2FnZSddIC49ICc8YSBocmVmPSIjIiBjbGFzcz0ic211c2giIGRhdGEtc291cmNlPSInLiRkYXRhLT5kZXN0LiciPicuJHRoaXMtPkxhbmcoJ2NvbXByZXNzJykuJzwvYT4nOwoJCX0KCQllbHNlCgkJewoJCQkkcmV0dXJuWydlcnJvciddID0gJHRoaXMtPkxhbmcoJ25vdHdyaXRhYmxlJyk7CgkJfQoJCWJyZWFrOwoJY2FzZSAnc211c2gnOgoJCSRzb3VyY2UgPSB1cmxkZWNvZGUoJHBhcmFtc1snc291cmNlJ10pOwoJCWlmKHN0cnBvcygkc291cmNlLCAnaHR0cDovL3lzbXVzaGl0LnplbmZzLmNvbS9yZXN1bHRzJykgIT09IDApCgkJewoJCQkkcmV0dXJuWydlcnJvciddID0gJHRoaXMtPkxhbmcoJ2ludmFsaWR1cmwnKTsKCQkJYnJlYWs7CgkJfQoJCSRmID0gZm9wZW4oJHNvdXJjZSwgJ3InKTsKCQkkZjIgPSBmb3BlbigkY29uZmlnWydpbWFnZV91cGxvYWRzX3BhdGgnXS5ESVJFQ1RPUllfU0VQQVJBVE9SLiRwYXJhbXNbJ3BhdGgnXSwgJ3cnKTsKCQl3aGlsZSghZmVvZigkZikpCgkJewoJCQlmcHV0cygkZjIsIGZnZXRzKCRmKSk7CgkJfQoJCWZjbG9zZSgkZik7CgkJZmNsb3NlKCRmMik7CgkJJHJldHVyblsnbWVzc2FnZSddID0gJHRoaXMtPkxhbmcoJ2RvbmUnKTsKCQlicmVhazsKfQpoZWFkZXIoIkNhY2hlLUNvbnRyb2w6IG5vLWNhY2hlLCBtdXN0LXJldmFsaWRhdGUiKTsKaGVhZGVyKCJFeHBpcmVzOiBTYXQsIDI2IEp1bCAxOTk3IDA1OjAwOjAwIEdNVCIpOwplY2hvIGpzb25fZW5jb2RlKCRyZXR1cm4pOwpleGl0OyAvLyBuZWVkIHRoaXMgZm9yIDEuOS54Cj8+]]></data>
	</file>
	<file>
	  <filename>/action.defaultadmin.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEpvbmF0aGFuIFNjaG1pZCwgPGhpQGpvbmF0aGFuc2NobWlkLmRlPgojIFdlYjogd3d3LmpvbmF0aGFuc2NobWlkLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEltYWdlQ29tcHJlc3NvciBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBjYW4gY29tcHJlc3MgdXNlci11cGxvYWRlZCBpbWFnZXMuCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYgKCEkdGhpcy0+Q2hlY2tQZXJtaXNzaW9uKCdVc2UgSW1hZ2UgQ29tcHJlc3NvcicpKQp7CglyZXR1cm4gJHRoaXMtPkRpc3BsYXlFcnJvclBhZ2UoJGlkLCAkcGFyYW1zLCAkcmV0dXJuaWQsICR0aGlzLT5MYW5nKCdhY2Nlc3NkZW5pZWQnKSk7Cn0KCmlmKCFlbXB0eSgkcGFyYW1zWydhY3RpdmVfdGFiJ10pKQp7CgkkdGFiID0gJHBhcmFtc1snYWN0aXZlX3RhYiddOwp9CmVsc2UKewoJJHRhYiA9ICcnOwp9CgplY2hvICR0aGlzLT5TdGFydFRhYkhlYWRlcnMoKTsKZWNobyAkdGhpcy0+U2V0VGFiSGVhZGVyKCdpbWFnZWxpc3QnLCAkdGhpcy0+TGFuZygndGl0bGVfaW1hZ2VsaXN0JyksICgnaW1hZ2VsaXN0JyA9PSAkdGFiKT90cnVlOmZhbHNlKTsKZWNobyAkdGhpcy0+RW5kVGFiSGVhZGVycygpOwplY2hvICR0aGlzLT5TdGFydFRhYkNvbnRlbnQoKTsKZWNobyAkdGhpcy0+U3RhcnRUYWIoJ2ltYWdlbGlzdCcsICRwYXJhbXMpOwpyZXF1aXJlX29uY2UoJ2Z1bmN0aW9uLmFkbWluX2ltYWdlbGlzdF90YWIucGhwJyk7CmVjaG8gJHRoaXMtPkVuZFRhYigpOwplY2hvICR0aGlzLT5FbmRUYWJDb250ZW50KCk7]]></data>
	</file>
	<file>
	  <filename>/function.admin_imagelist_tab.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEpvbmF0aGFuIFNjaG1pZCwgPGhpQGpvbmF0aGFuc2NobWlkLmRlPgojIFdlYjogd3d3LmpvbmF0aGFuc2NobWlkLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEltYWdlQ29tcHJlc3NvciBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBjYW4gY29tcHJlc3MgdXNlci11cGxvYWRlZCBpbWFnZXMuCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKJGNvbmZpZyA9IGNtc21zKCktPkdldENvbmZpZygpOwokc21hcnR5ID0gY21zbXMoKS0+R2V0U21hcnR5KCk7CiRhZG1pbnRoZW1lID0gY21zbXMoKS0+Z2V0X3ZhcmlhYmxlKCdhZG1pbnRoZW1lJyk7CgokZmlsZXMgPSBnZXRfcmVjdXJzaXZlX2ZpbGVfbGlzdCgkY29uZmlnWydpbWFnZV91cGxvYWRzX3BhdGgnXSwgYXJyYXkoJ150aHVtYl8uKyQnKSwgLTEsICdGSUxFUycpOwpmb3JlYWNoKCRmaWxlcyBhcyAkdmFsdWUpCnsKCWlmKCFpbWFnZWNvbXByZXNzb3JfdXRpbHM6OmlzX2ltYWdlKCR2YWx1ZSkpCgl7CgkJY29udGludWU7Cgl9CgkkcGF0aCA9IHN0cl9yZXBsYWNlKCRjb25maWdbJ2ltYWdlX3VwbG9hZHNfcGF0aCddLicvJywgJycsICR2YWx1ZSk7CgkkZmlsZXBlcm1zID0gc3Vic3RyKGRlY29jdChmaWxlcGVybXMoJHZhbHVlKSksMyk7CgkkZW50cnkgPSBuZXcgU3RkQ2xhc3M7CgkkZW50cnktPmljb24gPSBpbWFnZWNvbXByZXNzb3JfdXRpbHM6OmdldF91cmxfcGF0aCgpLicvaW1hZ2VzL2ZpbGV0eXBlcy8nLnN0cnRvbG93ZXIoc3Vic3RyKCRwYXRoLCAtMykpLicucG5nJzsKCSRlbnRyeS0+ZmlsZW5hbWUgPSAkcGF0aDsKCSRlbnRyeS0+ZmlsZXBlcm1zID0gaXNfd3JpdGFibGUoJHZhbHVlKSA/ICRmaWxlcGVybXMgOiBzcHJpbnRmKCc8c3BhbiBzdHlsZT0iY29sb3I6I2YwMCI+JXM8L3NwYW4+JywgJGZpbGVwZXJtcyk7CgkkZW50cnktPmZpbGVzaXplID0gaW1hZ2Vjb21wcmVzc29yX3V0aWxzOjpmb3JtYXRfYnl0ZXMoZmlsZXNpemUoJHZhbHVlKSk7CgkkZW50cnktPmZpbGV0aW1lID0gZmlsZW10aW1lKCR2YWx1ZSk7CgkkZW50cnktPmZpbGVkYXRlID0gZGF0ZSgkdGhpcy0+TGFuZygnZmlsZWRhdGVmb3JtYXQnKSwgJGVudHJ5LT5maWxldGltZSk7CgkkZW50cnktPnVybCA9ICRjb25maWdbJ2ltYWdlX3VwbG9hZHNfdXJsJ10uJy8nLiRwYXRoOwoKCSRmaWxlbGlzdFtdID0gJGVudHJ5Owp9CmlmKGNvdW50KCRmaWxlbGlzdCkgPT0gMCkKewoJZWNobyAkdGhpcy0+TGFuZygnbm9maWxlcycpOwp9CmVsc2UKewkKCXVzb3J0KCRmaWxlbGlzdCwgYXJyYXkoJ2ltYWdlY29tcHJlc3Nvcl91dGlscycsICdzb3J0X2ZpbGVzX2J5X2RhdGUnKSk7CgoJJHNtYXJ0eS0+YXNzaWduKCdmaWxlcycsIGFycmF5X3ZhbHVlcygkZmlsZWxpc3QpKTsKCSRzbWFydHktPmFzc2lnbignbW9kJywgJHRoaXMpOwoJJHNtYXJ0eS0+YXNzaWduKCdpbmNkaXInLCAkY29uZmlnWydyb290X3VybCddLicvbW9kdWxlcy9JbWFnZUNvbXByZXNzb3IvaW5jLycpOwoJJHNtYXJ0eS0+YXNzaWduKCd1c2Vya2V5JywgZ2V0X3NlY3VyZV9wYXJhbSgpKTsKCSRzbWFydHktPmFzc2lnbignYWN0aW9uaWQnLCAkaWQpOwoKCWVjaG8gJHRoaXMtPlByb2Nlc3NUZW1wbGF0ZSgnaW1hZ2VsaXN0X3RhYi50cGwnKTsKfQ==]]></data>
	</file>
	<file>
	  <filename>/ImageCompressor.module.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEpvbmF0aGFuIFNjaG1pZCwgPGhpQGpvbmF0aGFuc2NobWlkLmRlPgojIFdlYjogd3d3LmpvbmF0aGFuc2NobWlkLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEltYWdlQ29tcHJlc3NvciBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBjYW4gY29tcHJlc3MgdXNlci11cGxvYWRlZCBpbWFnZXMuCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKY2xhc3MgSW1hZ2VDb21wcmVzc29yIGV4dGVuZHMgQ01TTW9kdWxlIHsKCglwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoKQoJewoJCXBhcmVudDo6X19jb25zdHJ1Y3QoKTsKCgkJaWYgKCFmdW5jdGlvbl9leGlzdHMoJ2pzb25fZGVjb2RlJykpCgkJewoJCQlyZXF1aXJlX29uY2UoJ0pTT04vSlNPTi5waHAnKTsKCQl9Cgl9CglwdWJsaWMgZnVuY3Rpb24gR2V0TmFtZSgpCgl7CgkJcmV0dXJuICdJbWFnZUNvbXByZXNzb3InOwoJfQoJcHVibGljIGZ1bmN0aW9uIEdldEZyaWVuZGx5TmFtZSgpCgl7CgkJcmV0dXJuICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKTsKCX0KCXB1YmxpYyBmdW5jdGlvbiBHZXRWZXJzaW9uKCkKCXsKCQlyZXR1cm4gJzAuMTAuMic7Cgl9CglwdWJsaWMgZnVuY3Rpb24gR2V0QXV0aG9yKCkKCXsKCQlyZXR1cm4gJ0pTJzsKCX0KCXB1YmxpYyBmdW5jdGlvbiBHZXRBdXRob3JFbWFpbCgpCgl7CgkJcmV0dXJuICdoaUBqb25hdGhhbnNjaG1pZC5kZSc7Cgl9CglwdWJsaWMgZnVuY3Rpb24gR2V0Q2hhbmdlTG9nKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ2NoYW5nZWxvZycpOwoJfQoJcHVibGljIGZ1bmN0aW9uIElzUGx1Z2luTW9kdWxlKCkKCXsKCQlyZXR1cm4gZmFsc2U7Cgl9CglwdWJsaWMgZnVuY3Rpb24gSGFzQWRtaW4oKQoJewoJCXJldHVybiB0cnVlOwoJfQoJcHVibGljIGZ1bmN0aW9uIElzQWRtaW5Pbmx5KCkKCXsKCQlyZXR1cm4gdHJ1ZTsKCX0KCXB1YmxpYyBmdW5jdGlvbiBMYXp5TG9hZEFkbWluKCkKCXsKCQlyZXR1cm4gdHJ1ZTsKCX0KCXB1YmxpYyBmdW5jdGlvbiBHZXRBZG1pbkRlc2NyaXB0aW9uKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ21vZGRlc2NyaXB0aW9uJyk7Cgl9CglwdWJsaWMgZnVuY3Rpb24gVmlzaWJsZVRvQWRtaW5Vc2VyKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkNoZWNrUGVybWlzc2lvbignVXNlIEltYWdlIENvbXByZXNzb3InKTsKCX0KCXB1YmxpYyBmdW5jdGlvbiBNaW5pbXVtQ01TVmVyc2lvbigpCgl7CgkJcmV0dXJuICIxLjkuNCI7Cgl9CglwdWJsaWMgZnVuY3Rpb24gSW5zdGFsbFBvc3RNZXNzYWdlKCkKCXsKCQlyZXR1cm4gJHRoaXMtPkxhbmcoJ3Bvc3RpbnN0YWxsJyk7Cgl9CglwdWJsaWMgZnVuY3Rpb24gVW5pbnN0YWxsUG9zdE1lc3NhZ2UoKQoJewoJCXJldHVybiAkdGhpcy0+TGFuZygncG9zdHVuaW5zdGFsbCcpOwoJfQoJcHVibGljIGZ1bmN0aW9uIFVuaW5zdGFsbFByZU1lc3NhZ2UoKQoJewoJCXJldHVybiAkdGhpcy0+TGFuZygncmVhbGx5X3VuaW5zdGFsbCcpOwoJfQp9Cj8+]]></data>
	</file>
	<file>
	  <filename>/images/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/filetypes/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/images/filetypes/bmp.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADjElEQVRIx6WWTWwVVRTHf+feuTPz2te+FvvAFAPWjyCFLjAhadOQSIwu2JioCxes1ARD/Fq41ARh45LEJS6N0bhwoTFKghjFENxosEFqibUEaO2HLX3f05l7XLwWanktaf0vJpk7/3v/8z/3nHOvqCoAx04ODaB6AngW8EDzw8bIGZGPc5F9tdjptKcrYkd3G53tIU8d+hSAYIUZCO8h8jybgAgU2t3LwJIqr7Xi3BUITHEziytgRegphBiRY5nXxKu+ub6AFTYloM05xa4Ya8B73si8elV9e3V07wi4zQosP4wYdm1vBxFU9a00884F5gQws8aBYbNQhbGbJUqVBCO6PKbH60m2Y3iIF/9XiFbgvTI+VaZcqpFlGSCI8MC9ITKy/AcZXj0gGBFELKoeVcUY21xUPSIrfI/LWfJxniRJyby23mQXGFQ9cdRNvr0bUEqVOWr1RXJRJ6A0kiogBEGMSJMf2BARod4oEwSAGlZqa42A0EjqPNn/Agf2PsfMPzdpy7Xx5fkPePzhQfofPcwnX71DmiW8dOR9fhm5QJqVeebQK1RrJeYWbnD+0hlqjTkEe0fArN7kwBra45groz9y+sxxFm//TVfbbmqVRYrFPvp2DrC7dx87e/dRqy5CFvDHtUucOn0UJ47HeoeolBeJQtvagVdL0rjNnl37ef3ou3TnY0auXuTA3mEqc9fY/8gwoNQWxrGSoD6lWCjw9OAR8rEwNT3O7EwJZ+MWDgLBOUMYwNj4z3z+7YfMzo2zp+8JQqdcHv2OtFElbdT4bfR7XKBYm2IkobvQybmLnzEy9gNRGDE/X2pVyQavFs3qbC/0cLD/IB2RJU3LxGEPfqnMNxfOIiIMDhwmtB7nQiZu/MoX5z4icjFRFCNI6ywKA4uzMdenrzBtbhG5mJ8uf831qatYs4QRw3zpFiLCxOQI1XoFZx3WBvR0b8May4bNzgUGwdJYWmByYYJSqYoVQ74tYnL2TwC6OvIA/DX5O2alDoB8Llq3EFc5kGWhkIceLFLKVymXq8sFFfz3EFjzvhFWNbtVFgW2dXUQOUu1UkdkuflvAatCtCaGAoXOPFEYUK832CruCrjW3TTMtxGFlqSR0EwQ2aqD9SYKQZAjdJY0TbfuIHR2Q2IYxmRphs/SrYbIztyPHAaWzFvU6/0uA7MtssickmYb3ODaIjgsijaPs3vSAgOcBU6uDP4LhOhNij7WMQoAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/filetypes/gif.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADLElEQVRIx6WWS4tcRRTHf6eqbt/b089pHdSFHyFK9BOIMQsREiKKroQYREWJgigowZAYcCE+9oKbiAsFHxjDBBIHIyGJOB9BEKdFnWSS6Znuvo96uJh02+N0j93xD7Wqe8+vzvmfOvdKCAGAvQ/duwfCcWA/4IGtjd1VVqJOx3HpSKNeCc16hWa9RmUu4b2TXwNgBk9qJcdAHWIGiQjVSnIYsPjw/LhD/QMweoEZpUSo1ysokeeCD3kIvDwRYLSeKXgIAa0187UqSiu8Dy8FH1wI4ZXxGcwI2IIACHe2mggQCEe9C5FW+jiw+i+Aug1AoP3nNfppjlYKEEIIL+a5vRt4/H+VaBTyx+p10tTifbhlPq0xJZIxb4Pz/laXKRBwzqG1xjk3CEaSRJSTmMI6Bm2/02S1MwNrC+Yb8wCsd25QMiVq1TpZlpJUyxgToZSQpn3StIfREW4SQJvtgKIo2L/vAE8ePIwo4fOvPuHy1SXefuMjTr37Ju+c+BAJiqhU4vSnH/Ptuc+4Y6GF9pMAIyZ772g0Ghw68DTvf3CKtbU1Ht73COIjTCzkfYd1Gcfeep12e4WisPgAtumJE0MYgQyjGqOHS2tNuZyQ2U1W2r9y/4N7WN+4Tm8zp5d1EBNwkvLsC0c4+tqr3HXPAs45bvzVxRWeqKTHALQarsgolAIbUpSGwuY8dvBR5ioxWdHDRIo077K8/BNXrl4itxnJXIwIrK/16G3kY0o0YrISRdZP+W3lF5565gmsLfh5+Qr9fo8ogVJsQOdcvvQj7fbvVOYqxElp2HrdTjami4zZZo73nm++/IL79j5Amhb8cOEi1hUsnv2Obm+Ts2fOIAqa8w2UmnxJzWiJtkkrsjTj4oXvuXmzC2iUVpxfXCJOYs4vLpEkCXES73oRzajJ4xTHVWr1Kp1OjyyzxHENAcrDkjAlYJdRoTW0WlU2N1KywiECMuUomX7YidBoVuh2c6x1UxMmmjxJzYam1y+wzk/FuK1pWq8a0rzAufCfkJkzGKiiNYV1+BCm9UCvzvot0MbgvN8xogW5Ns7kkyKiZ/xtIUITAoQt2xVwDjgx2P8bpW1H6MaH0boAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/filetypes/jpg.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADZUlEQVRIx62Wy2tdVRTGf2vvfc7JufcmN0lNk4GVEjEKteDEmQ5ELVRaBXHgA7SIYEGsOhDqC3wMHBT7NwgV0UkHRaH4oiIKKqXQiMXER2KShjStSZrHvffcs/dycPP2Ju0tLjiTffbeH9+31rf2ElUF4I6jr+8FfRvYBwSg8WP7SI2Yj9LEPdfd2aad5YTuroRiwXJ832EA3MpOa+UtkEdpIUSEzmL8rCh1VQ4327MKEFvbQ4thjFDubMOIPO99yBSObAngrLR0uWrjTHc5wRhBg74YggZVfVmbAVhrWiWwnCRlZ0+KCqD6ks/VWSPvANMbACInrQMojF9cIFuo4CSgCKr6Qr3m+3iAxzYxsNxIqMLEpYx8YQnN/XLy2dFEImkigRJUsWLwGtaSK4IgBBRVJS44kkKZUMvAB5BmSW4ikRFDGsVU8pw0ioisJfeBucoiqkpiLeW0wFxliVwDSbEN9X6LKnIbJap7T//OXo7ef4A3P/6Q9x8/hFPBWMPJcz/x5dAvvPrgQQZu6mNkZpoPvv6cSwvzOBc1B7CbGHiBKLIU4gT9ZwHrlSPHj7Grt49XnnyKDuOIM88Tb7zGM/sfYrekTOUzuEKKrpNznQ/MJv0NIkoteExk8cDTBx9mR0cHv42N4nJlaGKM3btuJi0VqQzPUx2fojRwCxKtqbF6a2Rl9bMGgvqGgUQwkSFTTxZyfh66wLFPTlDxGWmaMluZ566B27l7zx7qC4tkk1eQWrZ1DvLg6e/u5Z5b76Svs5vfL45TDXWsizj53Tf8NTlB5BwXxkc5tP8RDtx7H/NZxvm//6RULkFWpzZ5ha3LVAxVX+fq7CxTYxN8O3iWWqhz6oczqIXurjLGGAZHhjnx1Wfs7b+NT8+c5vzIMKVSYdkbunUvctYyV5vn1PCPVKdmcTnYyHL67PckcUySJg1JiRgcHeLcH7/inCMttLFtN93oAyFuL1EuFqhensdXM+Ik+s/hOHHXdPq2ThZnKfZ1kM0s4qt1kNb71bZOBhBrcT3t1K8uEWp5A0RuACCKtmvXQtRVpL5UJdQ90gKTazJYex4NLi7glzLUh/8fYIWJa48JtRwNYZucNCnTyMn0dc0RIuAi1Ac06FbDwOVmVfSeCPb6xhaByDReG12/iAG+UHh3ZfFfWdxRAF2cqREAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/images/filetypes/png.png</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADiUlEQVRIx62WXWgcVRTHf+fe+dpsNl8loELRQqhQ0UgRjYr6IFTQimKR1kc/UFT8wEdBKORB1NYHQeqLCEEQQXyxIK0aiiLF0Da1kiJt8tKYpCQx5mN3s7tz5x4f1rSNmbSN8Q8zXOac4Tf/wz3njqgqALt7D9yusB/YBXigGbi6CoHo5+2hvrCtI9WtHY5buhp0tzp6D74HQLCSGRp9B3iK65QCVuCmFvccivPKSwDyr7xLgMRqNxuQAoGBrR0OK7zovNa98rquB4itsiGAQmSVmzscgVEy5TXn8V558/8B/HMT49lxYx3U4FXfaGSEoWU/MLMpAIBXODGeUF6uE9tlFMErr1QacsMO2LMaEGwc0IQYhifbqdaWyLxDEEToevlqJfKZv7QWI4gIPvMYY5px7zHWoArqM+JYaEtaca6Oql+1l9YCBOK2BBtavPNUFqrYwBC1xtQqdYw1RIWYtOZIG45iZwGAysIycRKjmuXvoihofnmhlPDs+0+T+QxjhKHDpxk5dp7nD+7l20ODTI1O80z/Exx661PuengnD+zrQwwc//oEw0fOYkO7CmAuO/DE1lMIwWYVDrz6AQPvfkbfY9tRs0QhTnloby/tHRGhr+Jkkbt39/DFhwN88vbHtHQ6MpaILcR2PQdGCEyG1Mo8ue9+2rtKTI2MMTs7weL4BAboe6QHt7hAayHE1MrM/zHNHfdsZ3nuT+aXLmK8o7Ota62DJNDmZRVqFUhTRofH+PKjw0RGSCtLHBn4gW23lijGGaGASWtE1oDLePDRXkrFmIXFGebmp/IcNNswCj3iqvz8zRAXx+eIk4j2riItsWfy/CQnvz/NvbtuQxop02MTPL7nTtKG48LJc5iGoyW2uLScM4sCRRVCzTgz+DsRSveWIiIQ4jl19DcSC8PHzuLKVWzmGPxqiJ339QDKqeNjFAIw1qKaNypWGk0dF85Mk4jBxBZBUIVffxolSgLUeYZ/PEechGia8ct3I80KRAGtSbimEXM7OWmPaStZ/lpYpNFIMUYgia44BWz+OkdXlMivCkggFLaUWFgq03AOs2bSX58uA0KfExbiziLlyjKpyxDZBCB/2CkikEQJ1WoNl/lNOAjWf1kECqWI5XoD733OwfifS7RacRiQpg7vdeOAQpjNXDtdILS4LENV1zUiyGzeuO43ovbavy2ChoKq5tAxIEedSv/Kw78BaUWGZVbg4gcAAAAASUVORK5CYII=]]></data>
	</file>
	<file>
	  <filename>/inc/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/inc/imagecompressor.css</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[I2ZpbGVsaXN0X2ltYWdlY29tcHJlc3NvciBhewoJdGV4dC1kZWNvcmF0aW9uOm5vbmU7Cn0KI2ZpbGVsaXN0X2ltYWdlY29tcHJlc3NvciBhOmhvdmVyewoJdGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZTsKfQojZmlsZWxpc3RfaW1hZ2Vjb21wcmVzc29yIHRoZWFkIHRoOmxhc3QtY2hpbGQgewoJd2lkdGg6IDIyMHB4Owp9CgojZmlsZWxpc3RfaW1hZ2Vjb21wcmVzc29yIC5zcGlubmVyIHsKCWhlaWdodDogMjJweDsKCXdpZHRoOiAyMnB4OwoJcG9zaXRpb246IHJlbGF0aXZlOwoJLXdlYmtpdC1hbmltYXRpb246IHJvdGF0aW9uIC42cyBpbmZpbml0ZSBsaW5lYXI7CgktbW96LWFuaW1hdGlvbjogcm90YXRpb24gLjZzIGluZmluaXRlIGxpbmVhcjsKCS1vLWFuaW1hdGlvbjogcm90YXRpb24gLjZzIGluZmluaXRlIGxpbmVhcjsKCWFuaW1hdGlvbjogcm90YXRpb24gLjZzIGluZmluaXRlIGxpbmVhcjsKCWJvcmRlci1sZWZ0OiA2cHggc29saWQgcmdiYSgwLCAxNzQsIDIzOSwgLjE1KTsKCWJvcmRlci1yaWdodDogNnB4IHNvbGlkIHJnYmEoMCwgMTc0LCAyMzksIC4xNSk7Cglib3JkZXItYm90dG9tOiA2cHggc29saWQgcmdiYSgwLCAxNzQsIDIzOSwgLjE1KTsKCWJvcmRlci10b3A6IDZweCBzb2xpZCByZ2JhKDAsIDE3NCwgMjM5LCAuOCk7Cglib3JkZXItcmFkaXVzOiAxMDAlOwp9CgpALXdlYmtpdC1rZXlmcmFtZXMgcm90YXRpb24gewoJZnJvbSB7IC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7IH0KCXRvIHsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNTlkZWcpOyB9Cn0KQC1tb3ota2V5ZnJhbWVzIHJvdGF0aW9uIHsKCWZyb20geyAtbW96LXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9Cgl0byB7IC1tb3otdHJhbnNmb3JtOiByb3RhdGUoMzU5ZGVnKTsgfQp9CkAtby1rZXlmcmFtZXMgcm90YXRpb24gewoJZnJvbSB7IC1vLXRyYW5zZm9ybTogcm90YXRlKDBkZWcpOyB9Cgl0byB7IC1vLXRyYW5zZm9ybTogcm90YXRlKDM1OWRlZyk7IH0KfQpAa2V5ZnJhbWVzIHJvdGF0aW9uIHsKCWZyb20geyB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTsgfQoJdG8geyB0cmFuc2Zvcm06IHJvdGF0ZSgzNTlkZWcpOyB9Cn0KI2ZpbGVsaXN0X2ltYWdlY29tcHJlc3NvciAuaWNfZXJyb3IgewoJY29sb3I6ICNmMDA7Cn0=]]></data>
	</file>
	<file>
	  <filename>/inc/ImageCompressor.js</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[T2JqZWN0LmtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbihvYmopIHsKCWlmIChvYmogIT09IE9iamVjdChvYmopKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdPYmplY3Qua2V5cyBjYWxsZWQgb24gbm9uLW9iamVjdCcpOwoJdmFyIGtleXMgPSBbXTsKCWZvciAodmFyIGtleSBpbiBvYmopIGlmIChfLmhhcyhvYmosIGtleSkpIGtleXMucHVzaChrZXkpOwoJcmV0dXJuIGtleXM7Cn07CnZhciBJbWFnZUNvbXByZXNzb3IgPSAoZnVuY3Rpb24gKCQpIHsKCSJ1c2Ugc3RyaWN0IjsKCXZhciBjbXNfYWN0aW9uX2lkID0gJycsCgkJY21zX3VzZXJfa2V5ID0gJycsCgkJJHRhYmxlID0gbnVsbCwKCQlxdWV1ZSA9IHt9LAoJCW1vZHVsZVBhcmFtcyA9IGZ1bmN0aW9uIChwYXJhbXMpIHsKCQkJdmFyIG1vZF9wYXJhbXMgPSB7fTsKCQkJJC5lYWNoKHBhcmFtcywgZnVuY3Rpb24gKGluZGV4LCB2YWwpIHsKCQkJCW1vZF9wYXJhbXNbY21zX2FjdGlvbl9pZCArIGluZGV4XSA9IHZhbDsKCQkJfSk7CgkJCXJldHVybiBtb2RfcGFyYW1zOwoJCX0sCgkJYWpheCA9IGZ1bmN0aW9uIChtb2RfcGFyYW1zLCAkdGQpIHsKCQkJdmFyIG9sZF9jb250ZW50ID0gJHRkLmh0bWwoKSwKCQkJCWlkZW50aWZpZXIgPSBPYmplY3Qua2V5cyhxdWV1ZSkubGVuZ3RoLAoJCQkJY21zX3BhcmFtcyA9IHsKCQkJCQknbW9kdWxlJzogJ0ltYWdlQ29tcHJlc3NvcicsCgkJCQkJJ2FjdGlvbic6ICdhamF4JywKCQkJCQknc2hvd3RlbXBsYXRlJzogZmFsc2UKCQkJCX07CgkJCSR0ZC5odG1sKCc8ZGl2IGNsYXNzPSJzcGlubmVyIiAvPicpOwoJCQlxdWV1ZVtpZGVudGlmaWVyXSA9ICQuYWpheCh7CgkJCQl1cmw6ICdtb2R1bGVpbnRlcmZhY2UucGhwJyArIGNtc191c2VyX2tleSwKCQkJCWRhdGE6ICQuZXh0ZW5kKHt9LCBtb2R1bGVQYXJhbXMobW9kX3BhcmFtcyksIGNtc19wYXJhbXMpLAoJCQkJZGF0YVR5cGU6ICdqc29uJywKCQkJCXN1Y2Nlc3M6IGZ1bmN0aW9uIChkYXRhKSB7CgkJCQkJdmFyICRodG1sID0gJCgpOwoJCQkJCWlmKHR5cGVvZiBkYXRhLm1lc3NhZ2UgIT09ICd1bmRlZmluZWQnKQoJCQkJCXsKCQkJCQkJJGh0bWwgPSAkaHRtbC5hZGQoJzxzcGFuIGNsYXNzPSJpY19tZXNzYWdlIj4nICsgZGF0YS5tZXNzYWdlICsgJzwvc3Bhbj4nKTsKCQkJCQl9CgkJCQkJaWYodHlwZW9mIGRhdGEuZXJyb3IgIT09ICd1bmRlZmluZWQnKQoJCQkJCXsKCQkJCQkJJGh0bWwgPSAkaHRtbC5hZGQoJzxzcGFuIGNsYXNzPSJpY19lcnJvciI+JyArIGRhdGEuZXJyb3IgKyAnPC9zcGFuPicpOwoJCQkJCX0KCQkJCQkkdGQuaHRtbCgkaHRtbCk7CgkJCQl9LAoJCQkJY29tcGxldGU6IGZ1bmN0aW9uIChyZXNwb25zZSwgc3RhdHVzKSB7CgkJCQkJZGVsZXRlIHF1ZXVlW2lkZW50aWZpZXJdOwoJCQkJCWlmKHN0YXR1cyAhPSAnc3VjY2VzcycpIHsKCQkJCQkJJHRkLmh0bWwob2xkX2NvbnRlbnQpOwoJCQkJCX0KCQkJCX0KCQkJfSk7CgkJfSwKCQljaGVja1JvdyA9IGZ1bmN0aW9uIChyb3cpIHsKCQkJdmFyICRyb3cgPSAkKHJvdyksCgkJCQkkdGQgPSAkcm93LmZpbmQoJ3RkOmxhc3QtY2hpbGQnKSwKCQkJCW1vZF9wYXJhbXMgPSB7CgkJCQkJJ2FjdGlvbic6ICdjaGVjaycsCgkJCQkJJ3BhdGgnOiAkcm93LmZpbmQoJ3RkOmVxKDEpJykudGV4dCgpCgkJCQl9OwoKCQkJYWpheChtb2RfcGFyYW1zLCAkdGQpOwoJCX0sCgkJc211c2hSb3cgPSBmdW5jdGlvbiAocm93KSB7CgkJCXZhciAkcm93ID0gJChyb3cpLAoJCQkJJHRkID0gJHJvdy5maW5kKCd0ZDpsYXN0LWNoaWxkJyksCgkJCQltb2RfcGFyYW1zID0gewoJCQkJCSdhY3Rpb24nOiAnc211c2gnLAoJCQkJCSdzb3VyY2UnOiAkdGQuZmluZCgnLnNtdXNoJykuYXR0cignZGF0YS1zb3VyY2UnKSwKCQkJCQkncGF0aCc6ICRyb3cuZmluZCgndGQ6ZXEoMSknKS50ZXh0KCkKCQkJCX07CgoJCQlhamF4KG1vZF9wYXJhbXMsICR0ZCk7CgkJfSwKCQlhYm9ydFF1ZXVlID0gZnVuY3Rpb24gKCkgewoJCQkkLmVhY2gocXVldWUsIGZ1bmN0aW9uICgpIHsKCQkJCXRoaXMuYWJvcnQoKTsKCQkJfSk7CgkJfTsKCglyZXR1cm4gewoJCWluaXQ6IGZ1bmN0aW9uIChhY3Rpb25faWQsIHVzZXJfa2V5KSB7CgkJCXZhciAkbWFzc3Byb2Nlc3NpbmcgPSBudWxsOwoKCQkJY21zX2FjdGlvbl9pZCA9IGFjdGlvbl9pZDsKCQkJY21zX3VzZXJfa2V5ID0gdXNlcl9rZXk7CgkJCSR0YWJsZSA9ICQoJyNmaWxlbGlzdF9pbWFnZWNvbXByZXNzb3InKTsKCQkJJG1hc3Nwcm9jZXNzaW5nID0gJHRhYmxlLmZpbmQoJ3RoZWFkIHRoOmxhc3QtY2hpbGQgYScpOwoKCQkJJG1hc3Nwcm9jZXNzaW5nLmNsaWNrKGZ1bmN0aW9uIChlKSB7CgkJCQllLnByZXZlbnREZWZhdWx0KCk7CgkJCQlzd2l0Y2goJG1hc3Nwcm9jZXNzaW5nLmluZGV4KHRoaXMpKSB7CgkJCQkJY2FzZSAwOgoJCQkJCQkkdGFibGUuZmluZCgndGJvZHkgLmNoZWNrJykuY2xpY2soKTsKCQkJCQkJYnJlYWs7CgkJCQkJY2FzZSAxOgoJCQkJCQkkdGFibGUuZmluZCgndGJvZHkgLnNtdXNoJykuY2xpY2soKTsKCQkJCQkJYnJlYWs7CgkJCQkJY2FzZSAyOgoJCQkJCQlhYm9ydFF1ZXVlKCk7CgkJCQkJCWJyZWFrOwoJCQkJfQoJCQl9KTsKCQkJJHRhYmxlLmZpbmQoJ3Rib2R5IC5jaGVjaycpLmxpdmUoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsKCQkJCWUucHJldmVudERlZmF1bHQoKTsKCQkJCWNoZWNrUm93KCQodGhpcykucGFyZW50KCkucGFyZW50KCkpOwoJCQl9KTsKCQkJJHRhYmxlLmZpbmQoJ3Rib2R5IC5zbXVzaCcpLmxpdmUoJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsKCQkJCWUucHJldmVudERlZmF1bHQoKTsKCQkJCXNtdXNoUm93KCQodGhpcykucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkpOwoJCQl9KTsKCQl9Cgl9Owp9KGpRdWVyeSkpOw==]]></data>
	</file>
	<file>
	  <filename>/index.html</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[]]></data>
	</file>
	<file>
	  <filename>/JSON/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/JSON/JSON.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKLyogdmltOiBzZXQgZXhwYW5kdGFiIHRhYnN0b3A9NCBzaGlmdHdpZHRoPTQgc29mdHRhYnN0b3A9NDogKi8KCi8qKgogKiBDb252ZXJ0cyB0byBhbmQgZnJvbSBKU09OIGZvcm1hdC4KICoKICogSlNPTiAoSmF2YVNjcmlwdCBPYmplY3QgTm90YXRpb24pIGlzIGEgbGlnaHR3ZWlnaHQgZGF0YS1pbnRlcmNoYW5nZQogKiBmb3JtYXQuIEl0IGlzIGVhc3kgZm9yIGh1bWFucyB0byByZWFkIGFuZCB3cml0ZS4gSXQgaXMgZWFzeSBmb3IgbWFjaGluZXMKICogdG8gcGFyc2UgYW5kIGdlbmVyYXRlLiBJdCBpcyBiYXNlZCBvbiBhIHN1YnNldCBvZiB0aGUgSmF2YVNjcmlwdAogKiBQcm9ncmFtbWluZyBMYW5ndWFnZSwgU3RhbmRhcmQgRUNNQS0yNjIgM3JkIEVkaXRpb24gLSBEZWNlbWJlciAxOTk5LgogKiBUaGlzIGZlYXR1cmUgY2FuIGFsc28gYmUgZm91bmQgaW4gIFB5dGhvbi4gSlNPTiBpcyBhIHRleHQgZm9ybWF0IHRoYXQgaXMKICogY29tcGxldGVseSBsYW5ndWFnZSBpbmRlcGVuZGVudCBidXQgdXNlcyBjb252ZW50aW9ucyB0aGF0IGFyZSBmYW1pbGlhcgogKiB0byBwcm9ncmFtbWVycyBvZiB0aGUgQy1mYW1pbHkgb2YgbGFuZ3VhZ2VzLCBpbmNsdWRpbmcgQywgQysrLCBDIywgSmF2YSwKICogSmF2YVNjcmlwdCwgUGVybCwgVENMLCBhbmQgbWFueSBvdGhlcnMuIFRoZXNlIHByb3BlcnRpZXMgbWFrZSBKU09OIGFuCiAqIGlkZWFsIGRhdGEtaW50ZXJjaGFuZ2UgbGFuZ3VhZ2UuCiAqCiAqIFRoaXMgcGFja2FnZSBwcm92aWRlcyBhIHNpbXBsZSBlbmNvZGVyIGFuZCBkZWNvZGVyIGZvciBKU09OIG5vdGF0aW9uLiBJdAogKiBpcyBpbnRlbmRlZCBmb3IgdXNlIHdpdGggY2xpZW50LXNpZGUgSmF2YXNjcmlwdCBhcHBsaWNhdGlvbnMgdGhhdCBtYWtlCiAqIHVzZSBvZiBIVFRQUmVxdWVzdCB0byBwZXJmb3JtIHNlcnZlciBjb21tdW5pY2F0aW9uIGZ1bmN0aW9ucyAtIGRhdGEgY2FuCiAqIGJlIGVuY29kZWQgaW50byBKU09OIG5vdGF0aW9uIGZvciB1c2UgaW4gYSBjbGllbnQtc2lkZSBqYXZhc2NyaXB0LCBvcgogKiBkZWNvZGVkIGZyb20gaW5jb21pbmcgSmF2YXNjcmlwdCByZXF1ZXN0cy4gSlNPTiBmb3JtYXQgaXMgbmF0aXZlIHRvCiAqIEphdmFzY3JpcHQsIGFuZCBjYW4gYmUgZGlyZWN0bHkgZXZhbCgpJ2VkIHdpdGggbm8gZnVydGhlciBwYXJzaW5nCiAqIG92ZXJoZWFkCiAqCiAqIEFsbCBzdHJpbmdzIHNob3VsZCBiZSBpbiBBU0NJSSBvciBVVEYtOCBmb3JtYXQhCiAqCiAqIExJQ0VOU0U6IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3IKICogd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nCiAqIGNvbmRpdGlvbnMgYXJlIG1ldDogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZQogKiBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZwogKiBkaXNjbGFpbWVyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCiAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQogKiBkaXN0cmlidXRpb24uCiAqCiAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVECiAqIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCiAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOCiAqIE5PIEVWRU5UIFNIQUxMIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAogKiBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLAogKiBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MKICogT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAogKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IKICogVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQogKiBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNICiAqIERBTUFHRS4KICoKICogQGNhdGVnb3J5CiAqIEBwYWNrYWdlICAgICBTZXJ2aWNlc19KU09OCiAqIEBhdXRob3IgICAgICBNaWNoYWwgTWlndXJza2kgPG1pa2UtanNvbkB0ZWN6bm8uY29tPgogKiBAYXV0aG9yICAgICAgTWF0dCBLbmFwcCA8bWRrbmFwcFthdF1nbWFpbFtkb3RdY29tPgogKiBAYXV0aG9yICAgICAgQnJldHQgU3RpbW1lcm1hbiA8YnJldHRzdGltbWVybWFuW2F0XWdtYWlsW2RvdF1jb20+CiAqIEBjb3B5cmlnaHQgICAyMDA1IE1pY2hhbCBNaWd1cnNraQogKiBAdmVyc2lvbiAgICAgQ1ZTOiAkSWQ6IEpTT04ucGhwLHYgMS4zMSAyMDA2LzA2LzI4IDA1OjU0OjE3IG1pZ3Vyc2tpIEV4cCAkCiAqIEBsaWNlbnNlICAgICBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocAogKiBAbGluayAgICAgICAgaHR0cDovL3BlYXIucGhwLm5ldC9wZXByL3BlcHItcHJvcG9zYWwtc2hvdy5waHA/aWQ9MTk4CiAqLwoKLyoqCiAqIE1hcmtlciBjb25zdGFudCBmb3IgU2VydmljZXNfSlNPTjo6ZGVjb2RlKCksIHVzZWQgdG8gZmxhZyBzdGFjayBzdGF0ZQogKi8KZGVmaW5lKCdTRVJWSUNFU19KU09OX1NMSUNFJywgICAxKTsKCi8qKgogKiBNYXJrZXIgY29uc3RhbnQgZm9yIFNlcnZpY2VzX0pTT046OmRlY29kZSgpLCB1c2VkIHRvIGZsYWcgc3RhY2sgc3RhdGUKICovCmRlZmluZSgnU0VSVklDRVNfSlNPTl9JTl9TVFInLCAgMik7CgovKioKICogTWFya2VyIGNvbnN0YW50IGZvciBTZXJ2aWNlc19KU09OOjpkZWNvZGUoKSwgdXNlZCB0byBmbGFnIHN0YWNrIHN0YXRlCiAqLwpkZWZpbmUoJ1NFUlZJQ0VTX0pTT05fSU5fQVJSJywgIDMpOwoKLyoqCiAqIE1hcmtlciBjb25zdGFudCBmb3IgU2VydmljZXNfSlNPTjo6ZGVjb2RlKCksIHVzZWQgdG8gZmxhZyBzdGFjayBzdGF0ZQogKi8KZGVmaW5lKCdTRVJWSUNFU19KU09OX0lOX09CSicsICA0KTsKCi8qKgogKiBNYXJrZXIgY29uc3RhbnQgZm9yIFNlcnZpY2VzX0pTT046OmRlY29kZSgpLCB1c2VkIHRvIGZsYWcgc3RhY2sgc3RhdGUKICovCmRlZmluZSgnU0VSVklDRVNfSlNPTl9JTl9DTVQnLCA1KTsKCi8qKgogKiBCZWhhdmlvciBzd2l0Y2ggZm9yIFNlcnZpY2VzX0pTT046OmRlY29kZSgpCiAqLwpkZWZpbmUoJ1NFUlZJQ0VTX0pTT05fTE9PU0VfVFlQRScsIDE2KTsKCi8qKgogKiBCZWhhdmlvciBzd2l0Y2ggZm9yIFNlcnZpY2VzX0pTT046OmRlY29kZSgpCiAqLwpkZWZpbmUoJ1NFUlZJQ0VTX0pTT05fU1VQUFJFU1NfRVJST1JTJywgMzIpOwoKLyoqCiAqIENvbnZlcnRzIHRvIGFuZCBmcm9tIEpTT04gZm9ybWF0LgogKgogKiBCcmllZiBleGFtcGxlIG9mIHVzZToKICoKICogPGNvZGU+CiAqIC8vIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBTZXJ2aWNlc19KU09OCiAqICRqc29uID0gbmV3IFNlcnZpY2VzX0pTT04oKTsKICoKICogLy8gY29udmVydCBhIGNvbXBsZXhlIHZhbHVlIHRvIEpTT04gbm90YXRpb24sIGFuZCBzZW5kIGl0IHRvIHRoZSBicm93c2VyCiAqICR2YWx1ZSA9IGFycmF5KCdmb28nLCAnYmFyJywgYXJyYXkoMSwgMiwgJ2JheicpLCBhcnJheSgzLCBhcnJheSg0KSkpOwogKiAkb3V0cHV0ID0gJGpzb24tPmVuY29kZSgkdmFsdWUpOwogKgogKiBwcmludCgkb3V0cHV0KTsKICogLy8gcHJpbnRzOiBbImZvbyIsImJhciIsWzEsMiwiYmF6Il0sWzMsWzRdXV0KICoKICogLy8gYWNjZXB0IGluY29taW5nIFBPU1QgZGF0YSwgYXNzdW1lZCB0byBiZSBpbiBKU09OIG5vdGF0aW9uCiAqICRpbnB1dCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCdwaHA6Ly9pbnB1dCcsIDEwMDAwMDApOwogKiAkdmFsdWUgPSAkanNvbi0+ZGVjb2RlKCRpbnB1dCk7CiAqIDwvY29kZT4KICovCmNsYXNzIFNlcnZpY2VzX0pTT04KewogICAvKioKICAgICogY29uc3RydWN0cyBhIG5ldyBKU09OIGluc3RhbmNlCiAgICAqCiAgICAqIEBwYXJhbSAgICBpbnQgICAgICR1c2UgICAgb2JqZWN0IGJlaGF2aW9yIGZsYWdzOyBjb21iaW5lIHdpdGggYm9vbGVhbi1PUgogICAgKgogICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlIHZhbHVlczoKICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAtIFNFUlZJQ0VTX0pTT05fTE9PU0VfVFlQRTogIGxvb3NlIHR5cGluZy4KICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7Li4ufSIgc3ludGF4IGNyZWF0ZXMgYXNzb2NpYXRpdmUgYXJyYXlzCiAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkIG9mIG9iamVjdHMgaW4gZGVjb2RlKCkuCiAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBTRVJWSUNFU19KU09OX1NVUFBSRVNTX0VSUk9SUzogIGVycm9yIHN1cHByZXNzaW9uLgogICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWVzIHdoaWNoIGNhbid0IGJlIGVuY29kZWQgKGUuZy4gcmVzb3VyY2VzKQogICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZWFyIGFzIE5VTEwgaW5zdGVhZCBvZiB0aHJvd2luZyBlcnJvcnMuCiAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCeSBkZWZhdWx0LCBhIGRlZXBseS1uZXN0ZWQgcmVzb3VyY2Ugd2lsbAogICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnViYmxlIHVwIHdpdGggYW4gZXJyb3IsIHNvIGFsbCByZXR1cm4gdmFsdWVzCiAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIGVuY29kZSgpIHNob3VsZCBiZSBjaGVja2VkIHdpdGggaXNFcnJvcigpCiAgICAqLwogICAgZnVuY3Rpb24gU2VydmljZXNfSlNPTigkdXNlID0gMCkKICAgIHsKICAgICAgICAkdGhpcy0+dXNlID0gJHVzZTsKICAgIH0KCiAgIC8qKgogICAgKiBjb252ZXJ0IGEgc3RyaW5nIGZyb20gb25lIFVURi0xNiBjaGFyIHRvIG9uZSBVVEYtOCBjaGFyCiAgICAqCiAgICAqIE5vcm1hbGx5IHNob3VsZCBiZSBoYW5kbGVkIGJ5IG1iX2NvbnZlcnRfZW5jb2RpbmcsIGJ1dAogICAgKiBwcm92aWRlcyBhIHNsb3dlciBQSFAtb25seSBtZXRob2QgZm9yIGluc3RhbGxhdGlvbnMKICAgICogdGhhdCBsYWNrIHRoZSBtdWx0aWJ5ZSBzdHJpbmcgZXh0ZW5zaW9uLgogICAgKgogICAgKiBAcGFyYW0gICAgc3RyaW5nICAkdXRmMTYgIFVURi0xNiBjaGFyYWN0ZXIKICAgICogQHJldHVybiAgIHN0cmluZyAgVVRGLTggY2hhcmFjdGVyCiAgICAqIEBhY2Nlc3MgICBwcml2YXRlCiAgICAqLwogICAgZnVuY3Rpb24gdXRmMTYydXRmOCgkdXRmMTYpCiAgICB7CiAgICAgICAgLy8gb2ggcGxlYXNlIG9oIHBsZWFzZSBvaCBwbGVhc2Ugb2ggcGxlYXNlIG9oIHBsZWFzZQogICAgICAgIGlmKGZ1bmN0aW9uX2V4aXN0cygnbWJfY29udmVydF9lbmNvZGluZycpKSB7CiAgICAgICAgICAgIHJldHVybiBtYl9jb252ZXJ0X2VuY29kaW5nKCR1dGYxNiwgJ1VURi04JywgJ1VURi0xNicpOwogICAgICAgIH0KCiAgICAgICAgJGJ5dGVzID0gKG9yZCgkdXRmMTZ7MH0pIDw8IDgpIHwgb3JkKCR1dGYxNnsxfSk7CgogICAgICAgIHN3aXRjaCh0cnVlKSB7CiAgICAgICAgICAgIGNhc2UgKCgweDdGICYgJGJ5dGVzKSA9PSAkYnl0ZXMpOgogICAgICAgICAgICAgICAgLy8gdGhpcyBjYXNlIHNob3VsZCBuZXZlciBiZSByZWFjaGVkLCBiZWNhdXNlIHdlIGFyZSBpbiBBU0NJSSByYW5nZQogICAgICAgICAgICAgICAgLy8gc2VlOiBodHRwOi8vd3d3LmNsLmNhbS5hYy51ay9+bWdrMjUvdW5pY29kZS5odG1sI3V0Zi04CiAgICAgICAgICAgICAgICByZXR1cm4gY2hyKDB4N0YgJiAkYnl0ZXMpOwoKICAgICAgICAgICAgY2FzZSAoMHgwN0ZGICYgJGJ5dGVzKSA9PSAkYnl0ZXM6CiAgICAgICAgICAgICAgICAvLyByZXR1cm4gYSAyLWJ5dGUgVVRGLTggY2hhcmFjdGVyCiAgICAgICAgICAgICAgICAvLyBzZWU6IGh0dHA6Ly93d3cuY2wuY2FtLmFjLnVrL35tZ2syNS91bmljb2RlLmh0bWwjdXRmLTgKICAgICAgICAgICAgICAgIHJldHVybiBjaHIoMHhDMCB8ICgoJGJ5dGVzID4+IDYpICYgMHgxRikpCiAgICAgICAgICAgICAgICAgICAgIC4gY2hyKDB4ODAgfCAoJGJ5dGVzICYgMHgzRikpOwoKICAgICAgICAgICAgY2FzZSAoMHhGRkZGICYgJGJ5dGVzKSA9PSAkYnl0ZXM6CiAgICAgICAgICAgICAgICAvLyByZXR1cm4gYSAzLWJ5dGUgVVRGLTggY2hhcmFjdGVyCiAgICAgICAgICAgICAgICAvLyBzZWU6IGh0dHA6Ly93d3cuY2wuY2FtLmFjLnVrL35tZ2syNS91bmljb2RlLmh0bWwjdXRmLTgKICAgICAgICAgICAgICAgIHJldHVybiBjaHIoMHhFMCB8ICgoJGJ5dGVzID4+IDEyKSAmIDB4MEYpKQogICAgICAgICAgICAgICAgICAgICAuIGNocigweDgwIHwgKCgkYnl0ZXMgPj4gNikgJiAweDNGKSkKICAgICAgICAgICAgICAgICAgICAgLiBjaHIoMHg4MCB8ICgkYnl0ZXMgJiAweDNGKSk7CiAgICAgICAgfQoKICAgICAgICAvLyBpZ25vcmluZyBVVEYtMzIgZm9yIG5vdywgc29ycnkKICAgICAgICByZXR1cm4gJyc7CiAgICB9CgogICAvKioKICAgICogY29udmVydCBhIHN0cmluZyBmcm9tIG9uZSBVVEYtOCBjaGFyIHRvIG9uZSBVVEYtMTYgY2hhcgogICAgKgogICAgKiBOb3JtYWxseSBzaG91bGQgYmUgaGFuZGxlZCBieSBtYl9jb252ZXJ0X2VuY29kaW5nLCBidXQKICAgICogcHJvdmlkZXMgYSBzbG93ZXIgUEhQLW9ubHkgbWV0aG9kIGZvciBpbnN0YWxsYXRpb25zCiAgICAqIHRoYXQgbGFjayB0aGUgbXVsdGlieWUgc3RyaW5nIGV4dGVuc2lvbi4KICAgICoKICAgICogQHBhcmFtICAgIHN0cmluZyAgJHV0ZjggICBVVEYtOCBjaGFyYWN0ZXIKICAgICogQHJldHVybiAgIHN0cmluZyAgVVRGLTE2IGNoYXJhY3RlcgogICAgKiBAYWNjZXNzICAgcHJpdmF0ZQogICAgKi8KICAgIGZ1bmN0aW9uIHV0ZjgydXRmMTYoJHV0ZjgpCiAgICB7CiAgICAgICAgLy8gb2ggcGxlYXNlIG9oIHBsZWFzZSBvaCBwbGVhc2Ugb2ggcGxlYXNlIG9oIHBsZWFzZQogICAgICAgIGlmKGZ1bmN0aW9uX2V4aXN0cygnbWJfY29udmVydF9lbmNvZGluZycpKSB7CiAgICAgICAgICAgIHJldHVybiBtYl9jb252ZXJ0X2VuY29kaW5nKCR1dGY4LCAnVVRGLTE2JywgJ1VURi04Jyk7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2goc3RybGVuKCR1dGY4KSkgewogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAvLyB0aGlzIGNhc2Ugc2hvdWxkIG5ldmVyIGJlIHJlYWNoZWQsIGJlY2F1c2Ugd2UgYXJlIGluIEFTQ0lJIHJhbmdlCiAgICAgICAgICAgICAgICAvLyBzZWU6IGh0dHA6Ly93d3cuY2wuY2FtLmFjLnVrL35tZ2syNS91bmljb2RlLmh0bWwjdXRmLTgKICAgICAgICAgICAgICAgIHJldHVybiAkdXRmODsKCiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIC8vIHJldHVybiBhIFVURi0xNiBjaGFyYWN0ZXIgZnJvbSBhIDItYnl0ZSBVVEYtOCBjaGFyCiAgICAgICAgICAgICAgICAvLyBzZWU6IGh0dHA6Ly93d3cuY2wuY2FtLmFjLnVrL35tZ2syNS91bmljb2RlLmh0bWwjdXRmLTgKICAgICAgICAgICAgICAgIHJldHVybiBjaHIoMHgwNyAmIChvcmQoJHV0Zjh7MH0pID4+IDIpKQogICAgICAgICAgICAgICAgICAgICAuIGNocigoMHhDMCAmIChvcmQoJHV0Zjh7MH0pIDw8IDYpKQogICAgICAgICAgICAgICAgICAgICAgICAgfCAoMHgzRiAmIG9yZCgkdXRmOHsxfSkpKTsKCiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgIC8vIHJldHVybiBhIFVURi0xNiBjaGFyYWN0ZXIgZnJvbSBhIDMtYnl0ZSBVVEYtOCBjaGFyCiAgICAgICAgICAgICAgICAvLyBzZWU6IGh0dHA6Ly93d3cuY2wuY2FtLmFjLnVrL35tZ2syNS91bmljb2RlLmh0bWwjdXRmLTgKICAgICAgICAgICAgICAgIHJldHVybiBjaHIoKDB4RjAgJiAob3JkKCR1dGY4ezB9KSA8PCA0KSkKICAgICAgICAgICAgICAgICAgICAgICAgIHwgKDB4MEYgJiAob3JkKCR1dGY4ezF9KSA+PiAyKSkpCiAgICAgICAgICAgICAgICAgICAgIC4gY2hyKCgweEMwICYgKG9yZCgkdXRmOHsxfSkgPDwgNikpCiAgICAgICAgICAgICAgICAgICAgICAgICB8ICgweDdGICYgb3JkKCR1dGY4ezJ9KSkpOwogICAgICAgIH0KCiAgICAgICAgLy8gaWdub3JpbmcgVVRGLTMyIGZvciBub3csIHNvcnJ5CiAgICAgICAgcmV0dXJuICcnOwogICAgfQoKICAgLyoqCiAgICAqIGVuY29kZXMgYW4gYXJiaXRyYXJ5IHZhcmlhYmxlIGludG8gSlNPTiBmb3JtYXQKICAgICoKICAgICogQHBhcmFtICAgIG1peGVkICAgJHZhciAgICBhbnkgbnVtYmVyLCBib29sZWFuLCBzdHJpbmcsIGFycmF5LCBvciBvYmplY3QgdG8gYmUgZW5jb2RlZC4KICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICBzZWUgYXJndW1lbnQgMSB0byBTZXJ2aWNlc19KU09OKCkgYWJvdmUgZm9yIGFycmF5LXBhcnNpbmcgYmVoYXZpb3IuCiAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdmFyIGlzIGEgc3RybmcsIG5vdGUgdGhhdCBlbmNvZGUoKSBhbHdheXMgZXhwZWN0cyBpdAogICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGJlIGluIEFTQ0lJIG9yIFVURi04IGZvcm1hdCEKICAgICoKICAgICogQHJldHVybiAgIG1peGVkICAgSlNPTiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaW5wdXQgdmFyIG9yIGFuIGVycm9yIGlmIGEgcHJvYmxlbSBvY2N1cnMKICAgICogQGFjY2VzcyAgIHB1YmxpYwogICAgKi8KICAgIGZ1bmN0aW9uIGVuY29kZSgkdmFyKQogICAgewogICAgICAgIHN3aXRjaCAoZ2V0dHlwZSgkdmFyKSkgewogICAgICAgICAgICBjYXNlICdib29sZWFuJzoKICAgICAgICAgICAgICAgIHJldHVybiAkdmFyID8gJ3RydWUnIDogJ2ZhbHNlJzsKCiAgICAgICAgICAgIGNhc2UgJ05VTEwnOgogICAgICAgICAgICAgICAgcmV0dXJuICdudWxsJzsKCiAgICAgICAgICAgIGNhc2UgJ2ludGVnZXInOgogICAgICAgICAgICAgICAgcmV0dXJuIChpbnQpICR2YXI7CgogICAgICAgICAgICBjYXNlICdkb3VibGUnOgogICAgICAgICAgICBjYXNlICdmbG9hdCc6CiAgICAgICAgICAgICAgICByZXR1cm4gKGZsb2F0KSAkdmFyOwoKICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzoKICAgICAgICAgICAgICAgIC8vIFNUUklOR1MgQVJFIEVYUEVDVEVEIFRPIEJFIElOIEFTQ0lJIE9SIFVURi04IEZPUk1BVAogICAgICAgICAgICAgICAgJGFzY2lpID0gJyc7CiAgICAgICAgICAgICAgICAkc3RybGVuX3ZhciA9IHN0cmxlbigkdmFyKTsKCiAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAqIEl0ZXJhdGUgb3ZlciBldmVyeSBjaGFyYWN0ZXIgaW4gdGhlIHN0cmluZywKICAgICAgICAgICAgICAgICogZXNjYXBpbmcgd2l0aCBhIHNsYXNoIG9yIGVuY29kaW5nIHRvIFVURi04IHdoZXJlIG5lY2Vzc2FyeQogICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgIGZvciAoJGMgPSAwOyAkYyA8ICRzdHJsZW5fdmFyOyArKyRjKSB7CgogICAgICAgICAgICAgICAgICAgICRvcmRfdmFyX2MgPSBvcmQoJHZhcnskY30pOwoKICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAkb3JkX3Zhcl9jID09IDB4MDg6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYXNjaWkgLj0gJ1xiJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICRvcmRfdmFyX2MgPT0gMHgwOToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhc2NpaSAuPSAnXHQnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJG9yZF92YXJfYyA9PSAweDBBOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFzY2lpIC49ICdcbic7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAkb3JkX3Zhcl9jID09IDB4MEM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYXNjaWkgLj0gJ1xmJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICRvcmRfdmFyX2MgPT0gMHgwRDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhc2NpaSAuPSAnXHInOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICRvcmRfdmFyX2MgPT0gMHgyMjoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAkb3JkX3Zhcl9jID09IDB4MkY6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJG9yZF92YXJfYyA9PSAweDVDOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG91YmxlIHF1b3RlLCBzbGFzaCwgc2xvc2gKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhc2NpaSAuPSAnXFwnLiR2YXJ7JGN9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICgoJG9yZF92YXJfYyA+PSAweDIwKSAmJiAoJG9yZF92YXJfYyA8PSAweDdGKSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzIFUtMDAwMDAwMDAgLSBVLTAwMDAwMDdGIChzYW1lIGFzIEFTQ0lJKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFzY2lpIC49ICR2YXJ7JGN9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICgoJG9yZF92YXJfYyAmIDB4RTApID09IDB4QzApOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVycyBVLTAwMDAwMDgwIC0gVS0wMDAwMDdGRiwgbWFzayAxMTBYWFhYWAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2VlIGh0dHA6Ly93d3cuY2wuY2FtLmFjLnVrL35tZ2syNS91bmljb2RlLmh0bWwjdXRmLTgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjaGFyID0gcGFjaygnQyonLCAkb3JkX3Zhcl9jLCBvcmQoJHZhcnskYyArIDF9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYyArPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHV0ZjE2ID0gJHRoaXMtPnV0ZjgydXRmMTYoJGNoYXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFzY2lpIC49IHNwcmludGYoJ1x1JTA0cycsIGJpbjJoZXgoJHV0ZjE2KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgKCgkb3JkX3Zhcl9jICYgMHhGMCkgPT0gMHhFMCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzIFUtMDAwMDA4MDAgLSBVLTAwMDBGRkZGLCBtYXNrIDExMTBYWFhYCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZWUgaHR0cDovL3d3dy5jbC5jYW0uYWMudWsvfm1nazI1L3VuaWNvZGUuaHRtbCN1dGYtOAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNoYXIgPSBwYWNrKCdDKicsICRvcmRfdmFyX2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkKCR2YXJ7JGMgKyAxfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkKCR2YXJ7JGMgKyAyfSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGMgKz0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1dGYxNiA9ICR0aGlzLT51dGY4MnV0ZjE2KCRjaGFyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhc2NpaSAuPSBzcHJpbnRmKCdcdSUwNHMnLCBiaW4yaGV4KCR1dGYxNikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICgoJG9yZF92YXJfYyAmIDB4RjgpID09IDB4RjApOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVycyBVLTAwMDEwMDAwIC0gVS0wMDFGRkZGRiwgbWFzayAxMTExMFhYWAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2VlIGh0dHA6Ly93d3cuY2wuY2FtLmFjLnVrL35tZ2syNS91bmljb2RlLmh0bWwjdXRmLTgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjaGFyID0gcGFjaygnQyonLCAkb3JkX3Zhcl9jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZCgkdmFyeyRjICsgMX0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZCgkdmFyeyRjICsgMn0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZCgkdmFyeyRjICsgM30pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjICs9IDM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdXRmMTYgPSAkdGhpcy0+dXRmODJ1dGYxNigkY2hhcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYXNjaWkgLj0gc3ByaW50ZignXHUlMDRzJywgYmluMmhleCgkdXRmMTYpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAoKCRvcmRfdmFyX2MgJiAweEZDKSA9PSAweEY4KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMgVS0wMDIwMDAwMCAtIFUtMDNGRkZGRkYsIG1hc2sgMTExMTEwWFgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlZSBodHRwOi8vd3d3LmNsLmNhbS5hYy51ay9+bWdrMjUvdW5pY29kZS5odG1sI3V0Zi04CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkY2hhciA9IHBhY2soJ0MqJywgJG9yZF92YXJfYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmQoJHZhcnskYyArIDF9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmQoJHZhcnskYyArIDJ9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmQoJHZhcnskYyArIDN9KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmQoJHZhcnskYyArIDR9KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYyArPSA0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHV0ZjE2ID0gJHRoaXMtPnV0ZjgydXRmMTYoJGNoYXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFzY2lpIC49IHNwcmludGYoJ1x1JTA0cycsIGJpbjJoZXgoJHV0ZjE2KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgKCgkb3JkX3Zhcl9jICYgMHhGRSkgPT0gMHhGQyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzIFUtMDQwMDAwMDAgLSBVLTdGRkZGRkZGLCBtYXNrIDExMTExMTBYCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZWUgaHR0cDovL3d3dy5jbC5jYW0uYWMudWsvfm1nazI1L3VuaWNvZGUuaHRtbCN1dGYtOAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGNoYXIgPSBwYWNrKCdDKicsICRvcmRfdmFyX2MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkKCR2YXJ7JGMgKyAxfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkKCR2YXJ7JGMgKyAyfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkKCR2YXJ7JGMgKyAzfSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkKCR2YXJ7JGMgKyA0fSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkKCR2YXJ7JGMgKyA1fSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGMgKz0gNTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1dGYxNiA9ICR0aGlzLT51dGY4MnV0ZjE2KCRjaGFyKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhc2NpaSAuPSBzcHJpbnRmKCdcdSUwNHMnLCBiaW4yaGV4KCR1dGYxNikpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAnIicuJGFzY2lpLiciJzsKCiAgICAgICAgICAgIGNhc2UgJ2FycmF5JzoKICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICogQXMgcGVyIEpTT04gc3BlYyBpZiBhbnkgYXJyYXkga2V5IGlzIG5vdCBhbiBpbnRlZ2VyCiAgICAgICAgICAgICAgICAqIHdlIG11c3QgdHJlYXQgdGhlIHRoZSB3aG9sZSBhcnJheSBhcyBhbiBvYmplY3QuIFdlCiAgICAgICAgICAgICAgICAqIGFsc28gdHJ5IHRvIGNhdGNoIGEgc3BhcnNlbHkgcG9wdWxhdGVkIGFzc29jaWF0aXZlCiAgICAgICAgICAgICAgICAqIGFycmF5IHdpdGggbnVtZXJpYyBrZXlzIGhlcmUgYmVjYXVzZSBzb21lIEpTIGVuZ2luZXMKICAgICAgICAgICAgICAgICogd2lsbCBjcmVhdGUgYW4gYXJyYXkgd2l0aCBlbXB0eSBpbmRleGVzIHVwIHRvCiAgICAgICAgICAgICAgICAqIG1heF9pbmRleCB3aGljaCBjYW4gY2F1c2UgbWVtb3J5IGlzc3VlcyBhbmQgYmVjYXVzZQogICAgICAgICAgICAgICAgKiB0aGUga2V5cywgd2hpY2ggbWF5IGJlIHJlbGV2YW50LCB3aWxsIGJlIHJlbWFwcGVkCiAgICAgICAgICAgICAgICAqIG90aGVyd2lzZS4KICAgICAgICAgICAgICAgICoKICAgICAgICAgICAgICAgICogQXMgcGVyIHRoZSBFQ01BIGFuZCBKU09OIHNwZWNpZmljYXRpb24gYW4gb2JqZWN0IG1heQogICAgICAgICAgICAgICAgKiBoYXZlIGFueSBzdHJpbmcgYXMgYSBwcm9wZXJ0eS4gVW5mb3J0dW5hdGVseSBkdWUgdG8KICAgICAgICAgICAgICAgICogYSBob2xlIGluIHRoZSBFQ01BIHNwZWNpZmljYXRpb24gaWYgdGhlIGtleSBpcyBhCiAgICAgICAgICAgICAgICAqIEVDTUEgcmVzZXJ2ZWQgd29yZCBvciBzdGFydHMgd2l0aCBhIGRpZ2l0IHRoZQogICAgICAgICAgICAgICAgKiBwYXJhbWV0ZXIgaXMgb25seSBhY2Nlc3NpYmxlIHVzaW5nIEVDTUFTY3JpcHQncwogICAgICAgICAgICAgICAgKiBicmFja2V0IG5vdGF0aW9uLgogICAgICAgICAgICAgICAgKi8KCiAgICAgICAgICAgICAgICAvLyB0cmVhdCBhcyBhIEpTT04gb2JqZWN0CiAgICAgICAgICAgICAgICBpZiAoaXNfYXJyYXkoJHZhcikgJiYgY291bnQoJHZhcikgJiYgKGFycmF5X2tleXMoJHZhcikgIT09IHJhbmdlKDAsIHNpemVvZigkdmFyKSAtIDEpKSkgewogICAgICAgICAgICAgICAgICAgICRwcm9wZXJ0aWVzID0gYXJyYXlfbWFwKGFycmF5KCR0aGlzLCAnbmFtZV92YWx1ZScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X2tleXMoJHZhciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdmFsdWVzKCR2YXIpKTsKCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCgkcHJvcGVydGllcyBhcyAkcHJvcGVydHkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoU2VydmljZXNfSlNPTjo6aXNFcnJvcigkcHJvcGVydHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHByb3BlcnR5OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3snIC4gam9pbignLCcsICRwcm9wZXJ0aWVzKSAuICd9JzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAvLyB0cmVhdCBpdCBsaWtlIGEgcmVndWxhciBhcnJheQogICAgICAgICAgICAgICAgJGVsZW1lbnRzID0gYXJyYXlfbWFwKGFycmF5KCR0aGlzLCAnZW5jb2RlJyksICR2YXIpOwoKICAgICAgICAgICAgICAgIGZvcmVhY2goJGVsZW1lbnRzIGFzICRlbGVtZW50KSB7CiAgICAgICAgICAgICAgICAgICAgaWYoU2VydmljZXNfSlNPTjo6aXNFcnJvcigkZWxlbWVudCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRlbGVtZW50OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJ1snIC4gam9pbignLCcsICRlbGVtZW50cykgLiAnXSc7CgogICAgICAgICAgICBjYXNlICdvYmplY3QnOgogICAgICAgICAgICAgICAgJHZhcnMgPSBnZXRfb2JqZWN0X3ZhcnMoJHZhcik7CgogICAgICAgICAgICAgICAgJHByb3BlcnRpZXMgPSBhcnJheV9tYXAoYXJyYXkoJHRoaXMsICduYW1lX3ZhbHVlJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV9rZXlzKCR2YXJzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3ZhbHVlcygkdmFycykpOwoKICAgICAgICAgICAgICAgIGZvcmVhY2goJHByb3BlcnRpZXMgYXMgJHByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgICAgaWYoU2VydmljZXNfSlNPTjo6aXNFcnJvcigkcHJvcGVydHkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkcHJvcGVydHk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiAneycgLiBqb2luKCcsJywgJHByb3BlcnRpZXMpIC4gJ30nOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIHJldHVybiAoJHRoaXMtPnVzZSAmIFNFUlZJQ0VTX0pTT05fU1VQUFJFU1NfRVJST1JTKQogICAgICAgICAgICAgICAgICAgID8gJ251bGwnCiAgICAgICAgICAgICAgICAgICAgOiBuZXcgU2VydmljZXNfSlNPTl9FcnJvcihnZXR0eXBlKCR2YXIpLiIgY2FuIG5vdCBiZSBlbmNvZGVkIGFzIEpTT04gc3RyaW5nIik7CiAgICAgICAgfQogICAgfQoKICAgLyoqCiAgICAqIGFycmF5LXdhbGtpbmcgZnVuY3Rpb24gZm9yIHVzZSBpbiBnZW5lcmF0aW5nIEpTT04tZm9ybWF0dGVkIG5hbWUtdmFsdWUgcGFpcnMKICAgICoKICAgICogQHBhcmFtICAgIHN0cmluZyAgJG5hbWUgICBuYW1lIG9mIGtleSB0byB1c2UKICAgICogQHBhcmFtICAgIG1peGVkICAgJHZhbHVlICByZWZlcmVuY2UgdG8gYW4gYXJyYXkgZWxlbWVudCB0byBiZSBlbmNvZGVkCiAgICAqCiAgICAqIEByZXR1cm4gICBzdHJpbmcgIEpTT04tZm9ybWF0dGVkIG5hbWUtdmFsdWUgcGFpciwgbGlrZSAnIm5hbWUiOnZhbHVlJwogICAgKiBAYWNjZXNzICAgcHJpdmF0ZQogICAgKi8KICAgIGZ1bmN0aW9uIG5hbWVfdmFsdWUoJG5hbWUsICR2YWx1ZSkKICAgIHsKICAgICAgICAkZW5jb2RlZF92YWx1ZSA9ICR0aGlzLT5lbmNvZGUoJHZhbHVlKTsKCiAgICAgICAgaWYoU2VydmljZXNfSlNPTjo6aXNFcnJvcigkZW5jb2RlZF92YWx1ZSkpIHsKICAgICAgICAgICAgcmV0dXJuICRlbmNvZGVkX3ZhbHVlOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICR0aGlzLT5lbmNvZGUoc3RydmFsKCRuYW1lKSkgLiAnOicgLiAkZW5jb2RlZF92YWx1ZTsKICAgIH0KCiAgIC8qKgogICAgKiByZWR1Y2UgYSBzdHJpbmcgYnkgcmVtb3ZpbmcgbGVhZGluZyBhbmQgdHJhaWxpbmcgY29tbWVudHMgYW5kIHdoaXRlc3BhY2UKICAgICoKICAgICogQHBhcmFtICAgICRzdHIgICAgc3RyaW5nICAgICAgc3RyaW5nIHZhbHVlIHRvIHN0cmlwIG9mIGNvbW1lbnRzIGFuZCB3aGl0ZXNwYWNlCiAgICAqCiAgICAqIEByZXR1cm4gICBzdHJpbmcgIHN0cmluZyB2YWx1ZSBzdHJpcHBlZCBvZiBjb21tZW50cyBhbmQgd2hpdGVzcGFjZQogICAgKiBAYWNjZXNzICAgcHJpdmF0ZQogICAgKi8KICAgIGZ1bmN0aW9uIHJlZHVjZV9zdHJpbmcoJHN0cikKICAgIHsKICAgICAgICAkc3RyID0gcHJlZ19yZXBsYWNlKGFycmF5KAoKICAgICAgICAgICAgICAgIC8vIGVsaW1pbmF0ZSBzaW5nbGUgbGluZSBjb21tZW50cyBpbiAnLy8gLi4uJyBmb3JtCiAgICAgICAgICAgICAgICAnI15ccyovLyguKykkI20nLAoKICAgICAgICAgICAgICAgIC8vIGVsaW1pbmF0ZSBtdWx0aS1saW5lIGNvbW1lbnRzIGluICcvKiAuLi4gKi8nIGZvcm0sIGF0IHN0YXJ0IG9mIHN0cmluZwogICAgICAgICAgICAgICAgJyNeXHMqL1wqKC4rKVwqLyNVcycsCgogICAgICAgICAgICAgICAgLy8gZWxpbWluYXRlIG11bHRpLWxpbmUgY29tbWVudHMgaW4gJy8qIC4uLiAqLycgZm9ybSwgYXQgZW5kIG9mIHN0cmluZwogICAgICAgICAgICAgICAgJyMvXCooLispXCovXHMqJCNVcycKCiAgICAgICAgICAgICksICcnLCAkc3RyKTsKCiAgICAgICAgLy8gZWxpbWluYXRlIGV4dHJhbmVvdXMgc3BhY2UKICAgICAgICByZXR1cm4gdHJpbSgkc3RyKTsKICAgIH0KCiAgIC8qKgogICAgKiBkZWNvZGVzIGEgSlNPTiBzdHJpbmcgaW50byBhcHByb3ByaWF0ZSB2YXJpYWJsZQogICAgKgogICAgKiBAcGFyYW0gICAgc3RyaW5nICAkc3RyICAgIEpTT04tZm9ybWF0dGVkIHN0cmluZwogICAgKgogICAgKiBAcmV0dXJuICAgbWl4ZWQgICBudW1iZXIsIGJvb2xlYW4sIHN0cmluZywgYXJyYXksIG9yIG9iamVjdAogICAgKiAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kaW5nIHRvIGdpdmVuIEpTT04gaW5wdXQgc3RyaW5nLgogICAgKiAgICAgICAgICAgICAgICAgICBTZWUgYXJndW1lbnQgMSB0byBTZXJ2aWNlc19KU09OKCkgYWJvdmUgZm9yIG9iamVjdC1vdXRwdXQgYmVoYXZpb3IuCiAgICAqICAgICAgICAgICAgICAgICAgIE5vdGUgdGhhdCBkZWNvZGUoKSBhbHdheXMgcmV0dXJucyBzdHJpbmdzCiAgICAqICAgICAgICAgICAgICAgICAgIGluIEFTQ0lJIG9yIFVURi04IGZvcm1hdCEKICAgICogQGFjY2VzcyAgIHB1YmxpYwogICAgKi8KICAgIGZ1bmN0aW9uIGRlY29kZSgkc3RyKQogICAgewogICAgICAgICRzdHIgPSAkdGhpcy0+cmVkdWNlX3N0cmluZygkc3RyKTsKCiAgICAgICAgc3dpdGNoIChzdHJ0b2xvd2VyKCRzdHIpKSB7CiAgICAgICAgICAgIGNhc2UgJ3RydWUnOgogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CgogICAgICAgICAgICBjYXNlICdmYWxzZSc6CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICAgICAgICBjYXNlICdudWxsJzoKICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwoKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICRtID0gYXJyYXkoKTsKCiAgICAgICAgICAgICAgICBpZiAoaXNfbnVtZXJpYygkc3RyKSkgewogICAgICAgICAgICAgICAgICAgIC8vIExvb2tpZS1sb28sIGl0J3MgYSBudW1iZXIKCiAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyB3b3VsZCB3b3JrIG9uIGl0cyBvd24sIGJ1dCBJJ20gdHJ5aW5nIHRvIGJlCiAgICAgICAgICAgICAgICAgICAgLy8gZ29vZCBhYm91dCByZXR1cm5pbmcgaW50ZWdlcnMgd2hlcmUgYXBwcm9wcmlhdGU6CiAgICAgICAgICAgICAgICAgICAgLy8gcmV0dXJuIChmbG9hdCkkc3RyOwoKICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm4gZmxvYXQgb3IgaW50LCBhcyBhcHByb3ByaWF0ZQogICAgICAgICAgICAgICAgICAgIHJldHVybiAoKGZsb2F0KSRzdHIgPT0gKGludGVnZXIpJHN0cikKICAgICAgICAgICAgICAgICAgICAgICAgPyAoaW50ZWdlcikkc3RyCiAgICAgICAgICAgICAgICAgICAgICAgIDogKGZsb2F0KSRzdHI7CgogICAgICAgICAgICAgICAgfSBlbHNlaWYgKHByZWdfbWF0Y2goJy9eKCJ8XCcpLiooXDEpJC9zJywgJHN0ciwgJG0pICYmICRtWzFdID09ICRtWzJdKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gU1RSSU5HUyBSRVRVUk5FRCBJTiBVVEYtOCBGT1JNQVQKICAgICAgICAgICAgICAgICAgICAkZGVsaW0gPSBzdWJzdHIoJHN0ciwgMCwgMSk7CiAgICAgICAgICAgICAgICAgICAgJGNocnMgPSBzdWJzdHIoJHN0ciwgMSwgLTEpOwogICAgICAgICAgICAgICAgICAgICR1dGY4ID0gJyc7CiAgICAgICAgICAgICAgICAgICAgJHN0cmxlbl9jaHJzID0gc3RybGVuKCRjaHJzKTsKCiAgICAgICAgICAgICAgICAgICAgZm9yICgkYyA9IDA7ICRjIDwgJHN0cmxlbl9jaHJzOyArKyRjKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkc3Vic3RyX2NocnNfY18yID0gc3Vic3RyKCRjaHJzLCAkYywgMik7CiAgICAgICAgICAgICAgICAgICAgICAgICRvcmRfY2hyc19jID0gb3JkKCRjaHJzeyRjfSk7CgogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHRydWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJHN1YnN0cl9jaHJzX2NfMiA9PSAnXGInOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1dGY4IC49IGNocigweDA4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArKyRjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAkc3Vic3RyX2NocnNfY18yID09ICdcdCc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHV0ZjggLj0gY2hyKDB4MDkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrJGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICRzdWJzdHJfY2hyc19jXzIgPT0gJ1xuJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdXRmOCAuPSBjaHIoMHgwQSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyskYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJHN1YnN0cl9jaHJzX2NfMiA9PSAnXGYnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1dGY4IC49IGNocigweDBDKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArKyRjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAkc3Vic3RyX2NocnNfY18yID09ICdccic6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHV0ZjggLj0gY2hyKDB4MEQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrJGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAkc3Vic3RyX2NocnNfY18yID09ICdcXCInOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAkc3Vic3RyX2NocnNfY18yID09ICdcXFwnJzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJHN1YnN0cl9jaHJzX2NfMiA9PSAnXFxcXCc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICRzdWJzdHJfY2hyc19jXzIgPT0gJ1xcLyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgkZGVsaW0gPT0gJyInICYmICRzdWJzdHJfY2hyc19jXzIgIT0gJ1xcXCcnKSB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgkZGVsaW0gPT0gIiciICYmICRzdWJzdHJfY2hyc19jXzIgIT0gJ1xcIicpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR1dGY4IC49ICRjaHJzeysrJGN9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHByZWdfbWF0Y2goJy9cXFx1WzAtOUEtRl17NH0vaScsIHN1YnN0cigkY2hycywgJGMsIDYpKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaW5nbGUsIGVzY2FwZWQgdW5pY29kZSBjaGFyYWN0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdXRmMTYgPSBjaHIoaGV4ZGVjKHN1YnN0cigkY2hycywgKCRjICsgMiksIDIpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiBjaHIoaGV4ZGVjKHN1YnN0cigkY2hycywgKCRjICsgNCksIDIpKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHV0ZjggLj0gJHRoaXMtPnV0ZjE2MnV0ZjgoJHV0ZjE2KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYyArPSA1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgKCRvcmRfY2hyc19jID49IDB4MjApICYmICgkb3JkX2NocnNfYyA8PSAweDdGKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdXRmOCAuPSAkY2hyc3skY307CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAoJG9yZF9jaHJzX2MgJiAweEUwKSA9PSAweEMwOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMgVS0wMDAwMDA4MCAtIFUtMDAwMDA3RkYsIG1hc2sgMTEwWFhYWFgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3NlZSBodHRwOi8vd3d3LmNsLmNhbS5hYy51ay9+bWdrMjUvdW5pY29kZS5odG1sI3V0Zi04CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHV0ZjggLj0gc3Vic3RyKCRjaHJzLCAkYywgMik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyskYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICgkb3JkX2NocnNfYyAmIDB4RjApID09IDB4RTA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVycyBVLTAwMDAwODAwIC0gVS0wMDAwRkZGRiwgbWFzayAxMTEwWFhYWAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlZSBodHRwOi8vd3d3LmNsLmNhbS5hYy51ay9+bWdrMjUvdW5pY29kZS5odG1sI3V0Zi04CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHV0ZjggLj0gc3Vic3RyKCRjaHJzLCAkYywgMyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGMgKz0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICgkb3JkX2NocnNfYyAmIDB4RjgpID09IDB4RjA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVycyBVLTAwMDEwMDAwIC0gVS0wMDFGRkZGRiwgbWFzayAxMTExMFhYWAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlZSBodHRwOi8vd3d3LmNsLmNhbS5hYy51ay9+bWdrMjUvdW5pY29kZS5odG1sI3V0Zi04CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHV0ZjggLj0gc3Vic3RyKCRjaHJzLCAkYywgNCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGMgKz0gMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICgkb3JkX2NocnNfYyAmIDB4RkMpID09IDB4Rjg6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVycyBVLTAwMjAwMDAwIC0gVS0wM0ZGRkZGRiwgbWFzayAxMTExMTBYWAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlZSBodHRwOi8vd3d3LmNsLmNhbS5hYy51ay9+bWdrMjUvdW5pY29kZS5odG1sI3V0Zi04CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHV0ZjggLj0gc3Vic3RyKCRjaHJzLCAkYywgNSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGMgKz0gNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICgkb3JkX2NocnNfYyAmIDB4RkUpID09IDB4RkM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVycyBVLTA0MDAwMDAwIC0gVS03RkZGRkZGRiwgbWFzayAxMTExMTEwWAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlZSBodHRwOi8vd3d3LmNsLmNhbS5hYy51ay9+bWdrMjUvdW5pY29kZS5odG1sI3V0Zi04CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHV0ZjggLj0gc3Vic3RyKCRjaHJzLCAkYywgNik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGMgKz0gNTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJHV0Zjg7CgogICAgICAgICAgICAgICAgfSBlbHNlaWYgKHByZWdfbWF0Y2goJy9eXFsuKlxdJC9zJywgJHN0cikgfHwgcHJlZ19tYXRjaCgnL15cey4qXH0kL3MnLCAkc3RyKSkgewogICAgICAgICAgICAgICAgICAgIC8vIGFycmF5LCBvciBvYmplY3Qgbm90YXRpb24KCiAgICAgICAgICAgICAgICAgICAgaWYgKCRzdHJ7MH0gPT0gJ1snKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRzdGsgPSBhcnJheShTRVJWSUNFU19KU09OX0lOX0FSUik7CiAgICAgICAgICAgICAgICAgICAgICAgICRhcnIgPSBhcnJheSgpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkdGhpcy0+dXNlICYgU0VSVklDRVNfSlNPTl9MT09TRV9UWVBFKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RrID0gYXJyYXkoU0VSVklDRVNfSlNPTl9JTl9PQkopOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9iaiA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkc3RrID0gYXJyYXkoU0VSVklDRVNfSlNPTl9JTl9PQkopOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9iaiA9IG5ldyBzdGRDbGFzcygpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRzdGssIGFycmF5KCd3aGF0JyAgPT4gU0VSVklDRVNfSlNPTl9TTElDRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aGVyZScgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZWxpbScgPT4gZmFsc2UpKTsKCiAgICAgICAgICAgICAgICAgICAgJGNocnMgPSBzdWJzdHIoJHN0ciwgMSwgLTEpOwogICAgICAgICAgICAgICAgICAgICRjaHJzID0gJHRoaXMtPnJlZHVjZV9zdHJpbmcoJGNocnMpOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJGNocnMgPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc2V0KCRzdGspID09IFNFUlZJQ0VTX0pTT05fSU5fQVJSKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGFycjsKCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJG9iajsKCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIC8vcHJpbnQoIlxucGFyc2luZyB7JGNocnN9XG4iKTsKCiAgICAgICAgICAgICAgICAgICAgJHN0cmxlbl9jaHJzID0gc3RybGVuKCRjaHJzKTsKCiAgICAgICAgICAgICAgICAgICAgZm9yICgkYyA9IDA7ICRjIDw9ICRzdHJsZW5fY2hyczsgKyskYykgewoKICAgICAgICAgICAgICAgICAgICAgICAgJHRvcCA9IGVuZCgkc3RrKTsKICAgICAgICAgICAgICAgICAgICAgICAgJHN1YnN0cl9jaHJzX2NfMiA9IHN1YnN0cigkY2hycywgJGMsIDIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCgkYyA9PSAkc3RybGVuX2NocnMpIHx8ICgoJGNocnN7JGN9ID09ICcsJykgJiYgKCR0b3BbJ3doYXQnXSA9PSBTRVJWSUNFU19KU09OX1NMSUNFKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvdW5kIGEgY29tbWEgdGhhdCBpcyBub3QgaW5zaWRlIGEgc3RyaW5nLCBhcnJheSwgZXRjLiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9SIHdlJ3ZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgY2hhcmFjdGVyIGxpc3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzbGljZSA9IHN1YnN0cigkY2hycywgJHRvcFsnd2hlcmUnXSwgKCRjIC0gJHRvcFsnd2hlcmUnXSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfcHVzaCgkc3RrLCBhcnJheSgnd2hhdCcgPT4gU0VSVklDRVNfSlNPTl9TTElDRSwgJ3doZXJlJyA9PiAoJGMgKyAxKSwgJ2RlbGltJyA9PiBmYWxzZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9wcmludCgiRm91bmQgc3BsaXQgYXQgeyRjfTogIi5zdWJzdHIoJGNocnMsICR0b3BbJ3doZXJlJ10sICgxICsgJGMgLSAkdG9wWyd3aGVyZSddKSkuIlxuIik7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc2V0KCRzdGspID09IFNFUlZJQ0VTX0pTT05fSU5fQVJSKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgYXJlIGluIGFuIGFycmF5LCBzbyBqdXN0IHB1c2ggYW4gZWxlbWVudCBvbnRvIHRoZSBzdGFjawogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3B1c2goJGFyciwgJHRoaXMtPmRlY29kZSgkc2xpY2UpKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAocmVzZXQoJHN0aykgPT0gU0VSVklDRVNfSlNPTl9JTl9PQkopIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBhcmUgaW4gYW4gb2JqZWN0LCBzbyBmaWd1cmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXQgdGhlIHByb3BlcnR5IG5hbWUgYW5kIHNldCBhbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQgaW4gYW4gYXNzb2NpYXRpdmUgYXJyYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIG5vdwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwYXJ0cyA9IGFycmF5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZWdfbWF0Y2goJy9eXHMqKFsiXCddLipbXlxcXF1bIlwnXSlccyo6XHMqKFxTLiopLD8kL1VpcycsICRzbGljZSwgJHBhcnRzKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAibmFtZSI6dmFsdWUgcGFpcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAka2V5ID0gJHRoaXMtPmRlY29kZSgkcGFydHNbMV0pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFsID0gJHRoaXMtPmRlY29kZSgkcGFydHNbMl0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT51c2UgJiBTRVJWSUNFU19KU09OX0xPT1NFX1RZUEUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvYmpbJGtleV0gPSAkdmFsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9iai0+JGtleSA9ICR2YWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiAocHJlZ19tYXRjaCgnL15ccyooXHcrKVxzKjpccyooXFMuKiksPyQvVWlzJywgJHNsaWNlLCAkcGFydHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5hbWU6dmFsdWUgcGFpciwgd2hlcmUgbmFtZSBpcyB1bnF1b3RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAka2V5ID0gJHBhcnRzWzFdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdmFsID0gJHRoaXMtPmRlY29kZSgkcGFydHNbMl0pOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCR0aGlzLT51c2UgJiBTRVJWSUNFU19KU09OX0xPT1NFX1RZUEUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvYmpbJGtleV0gPSAkdmFsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9iai0+JGtleSA9ICR2YWw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCgoJGNocnN7JGN9ID09ICciJykgfHwgKCRjaHJzeyRjfSA9PSAiJyIpKSAmJiAoJHRvcFsnd2hhdCddICE9IFNFUlZJQ0VTX0pTT05fSU5fU1RSKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm91bmQgYSBxdW90ZSwgYW5kIHdlIGFyZSBub3QgaW5zaWRlIGEgc3RyaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRzdGssIGFycmF5KCd3aGF0JyA9PiBTRVJWSUNFU19KU09OX0lOX1NUUiwgJ3doZXJlJyA9PiAkYywgJ2RlbGltJyA9PiAkY2hyc3skY30pKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcHJpbnQoIkZvdW5kIHN0YXJ0IG9mIHN0cmluZyBhdCB7JGN9XG4iKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgoJGNocnN7JGN9ID09ICR0b3BbJ2RlbGltJ10pICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgkdG9wWyd3aGF0J10gPT0gU0VSVklDRVNfSlNPTl9JTl9TVFIpICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoc3RybGVuKHN1YnN0cigkY2hycywgMCwgJGMpKSAtIHN0cmxlbihydHJpbShzdWJzdHIoJGNocnMsIDAsICRjKSwgJ1xcJykpKSAlIDIgIT0gMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvdW5kIGEgcXVvdGUsIHdlJ3JlIGluIGEgc3RyaW5nLCBhbmQgaXQncyBub3QgZXNjYXBlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2Uga25vdyB0aGF0IGl0J3Mgbm90IGVzY2FwZWQgYmVjYXNlIHRoZXJlIGlzIF9ub3RfIGFuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZGQgbnVtYmVyIG9mIGJhY2tzbGFzaGVzIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBzbyBmYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3BvcCgkc3RrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcHJpbnQoIkZvdW5kIGVuZCBvZiBzdHJpbmcgYXQgeyRjfTogIi5zdWJzdHIoJGNocnMsICR0b3BbJ3doZXJlJ10sICgxICsgMSArICRjIC0gJHRvcFsnd2hlcmUnXSkpLiJcbiIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCgkY2hyc3skY30gPT0gJ1snKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9hcnJheSgkdG9wWyd3aGF0J10sIGFycmF5KFNFUlZJQ0VTX0pTT05fU0xJQ0UsIFNFUlZJQ0VTX0pTT05fSU5fQVJSLCBTRVJWSUNFU19KU09OX0lOX09CSikpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3VuZCBhIGxlZnQtYnJhY2tldCwgYW5kIHdlIGFyZSBpbiBhbiBhcnJheSwgb2JqZWN0LCBvciBzbGljZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfcHVzaCgkc3RrLCBhcnJheSgnd2hhdCcgPT4gU0VSVklDRVNfSlNPTl9JTl9BUlIsICd3aGVyZScgPT4gJGMsICdkZWxpbScgPT4gZmFsc2UpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcHJpbnQoIkZvdW5kIHN0YXJ0IG9mIGFycmF5IGF0IHskY31cbiIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCgkY2hyc3skY30gPT0gJ10nKSAmJiAoJHRvcFsnd2hhdCddID09IFNFUlZJQ0VTX0pTT05fSU5fQVJSKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm91bmQgYSByaWdodC1icmFja2V0LCBhbmQgd2UncmUgaW4gYW4gYXJyYXkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3BvcCgkc3RrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcHJpbnQoIkZvdW5kIGVuZCBvZiBhcnJheSBhdCB7JGN9OiAiLnN1YnN0cigkY2hycywgJHRvcFsnd2hlcmUnXSwgKDEgKyAkYyAtICR0b3BbJ3doZXJlJ10pKS4iXG4iKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgoJGNocnN7JGN9ID09ICd7JykgJiYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fYXJyYXkoJHRvcFsnd2hhdCddLCBhcnJheShTRVJWSUNFU19KU09OX1NMSUNFLCBTRVJWSUNFU19KU09OX0lOX0FSUiwgU0VSVklDRVNfSlNPTl9JTl9PQkopKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm91bmQgYSBsZWZ0LWJyYWNlLCBhbmQgd2UgYXJlIGluIGFuIGFycmF5LCBvYmplY3QsIG9yIHNsaWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV9wdXNoKCRzdGssIGFycmF5KCd3aGF0JyA9PiBTRVJWSUNFU19KU09OX0lOX09CSiwgJ3doZXJlJyA9PiAkYywgJ2RlbGltJyA9PiBmYWxzZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9wcmludCgiRm91bmQgc3RhcnQgb2Ygb2JqZWN0IGF0IHskY31cbiIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKCgkY2hyc3skY30gPT0gJ30nKSAmJiAoJHRvcFsnd2hhdCddID09IFNFUlZJQ0VTX0pTT05fSU5fT0JKKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm91bmQgYSByaWdodC1icmFjZSwgYW5kIHdlJ3JlIGluIGFuIG9iamVjdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfcG9wKCRzdGspOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9wcmludCgiRm91bmQgZW5kIG9mIG9iamVjdCBhdCB7JGN9OiAiLnN1YnN0cigkY2hycywgJHRvcFsnd2hlcmUnXSwgKDEgKyAkYyAtICR0b3BbJ3doZXJlJ10pKS4iXG4iKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgoJHN1YnN0cl9jaHJzX2NfMiA9PSAnLyonKSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9hcnJheSgkdG9wWyd3aGF0J10sIGFycmF5KFNFUlZJQ0VTX0pTT05fU0xJQ0UsIFNFUlZJQ0VTX0pTT05fSU5fQVJSLCBTRVJWSUNFU19KU09OX0lOX09CSikpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3VuZCBhIGNvbW1lbnQgc3RhcnQsIGFuZCB3ZSBhcmUgaW4gYW4gYXJyYXksIG9iamVjdCwgb3Igc2xpY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3B1c2goJHN0aywgYXJyYXkoJ3doYXQnID0+IFNFUlZJQ0VTX0pTT05fSU5fQ01ULCAnd2hlcmUnID0+ICRjLCAnZGVsaW0nID0+IGZhbHNlKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYysrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9wcmludCgiRm91bmQgc3RhcnQgb2YgY29tbWVudCBhdCB7JGN9XG4iKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmICgoJHN1YnN0cl9jaHJzX2NfMiA9PSAnKi8nKSAmJiAoJHRvcFsnd2hhdCddID09IFNFUlZJQ0VTX0pTT05fSU5fQ01UKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm91bmQgYSBjb21tZW50IGVuZCwgYW5kIHdlJ3JlIGluIG9uZSBub3cKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5X3BvcCgkc3RrKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjKys7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICgkaSA9ICR0b3BbJ3doZXJlJ107ICRpIDw9ICRjOyArKyRpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRjaHJzID0gc3Vic3RyX3JlcGxhY2UoJGNocnMsICcgJywgJGksIDEpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vcHJpbnQoIkZvdW5kIGVuZCBvZiBjb21tZW50IGF0IHskY306ICIuc3Vic3RyKCRjaHJzLCAkdG9wWyd3aGVyZSddLCAoMSArICRjIC0gJHRvcFsnd2hlcmUnXSkpLiJcbiIpOwoKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmIChyZXNldCgkc3RrKSA9PSBTRVJWSUNFU19KU09OX0lOX0FSUikgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJGFycjsKCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlaWYgKHJlc2V0KCRzdGspID09IFNFUlZJQ0VTX0pTT05fSU5fT0JKKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkb2JqOwoKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAvKioKICAgICAqIEB0b2RvIFVsdGltYXRlbHksIHRoaXMgc2hvdWxkIGp1c3QgY2FsbCBQRUFSOjppc0Vycm9yKCkKICAgICAqLwogICAgZnVuY3Rpb24gaXNFcnJvcigkZGF0YSwgJGNvZGUgPSBudWxsKQogICAgewogICAgICAgIGlmIChjbGFzc19leGlzdHMoJ3BlYXInKSkgewogICAgICAgICAgICByZXR1cm4gUEVBUjo6aXNFcnJvcigkZGF0YSwgJGNvZGUpOwogICAgICAgIH0gZWxzZWlmIChpc19vYmplY3QoJGRhdGEpICYmIChnZXRfY2xhc3MoJGRhdGEpID09ICdzZXJ2aWNlc19qc29uX2Vycm9yJyB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19zdWJjbGFzc19vZigkZGF0YSwgJ3NlcnZpY2VzX2pzb25fZXJyb3InKSkpIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cn0KCmlmIChjbGFzc19leGlzdHMoJ1BFQVJfRXJyb3InKSkgewoKICAgIGNsYXNzIFNlcnZpY2VzX0pTT05fRXJyb3IgZXh0ZW5kcyBQRUFSX0Vycm9yCiAgICB7CiAgICAgICAgZnVuY3Rpb24gU2VydmljZXNfSlNPTl9FcnJvcigkbWVzc2FnZSA9ICd1bmtub3duIGVycm9yJywgJGNvZGUgPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1vZGUgPSBudWxsLCAkb3B0aW9ucyA9IG51bGwsICR1c2VyaW5mbyA9IG51bGwpCiAgICAgICAgewogICAgICAgICAgICBwYXJlbnQ6OlBFQVJfRXJyb3IoJG1lc3NhZ2UsICRjb2RlLCAkbW9kZSwgJG9wdGlvbnMsICR1c2VyaW5mbyk7CiAgICAgICAgfQogICAgfQoKfSBlbHNlIHsKCiAgICAvKioKICAgICAqIEB0b2RvIFVsdGltYXRlbHksIHRoaXMgY2xhc3Mgc2hhbGwgYmUgZGVzY2VuZGVkIGZyb20gUEVBUl9FcnJvcgogICAgICovCiAgICBjbGFzcyBTZXJ2aWNlc19KU09OX0Vycm9yCiAgICB7CiAgICAgICAgZnVuY3Rpb24gU2VydmljZXNfSlNPTl9FcnJvcigkbWVzc2FnZSA9ICd1bmtub3duIGVycm9yJywgJGNvZGUgPSBudWxsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG1vZGUgPSBudWxsLCAkb3B0aW9ucyA9IG51bGwsICR1c2VyaW5mbyA9IG51bGwpCiAgICAgICAgewoKICAgICAgICB9CiAgICB9Cgp9CiAgICAKPz4K]]></data>
	</file>
	<file>
	  <filename>/JSON/LICENSE</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cm1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKbWV0OgoKUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAp0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgoKUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQpkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgoKVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4KTk8gRVZFTlQgU0hBTEwgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsCklOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVApOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRgpVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCkFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCihJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgpUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgo=]]></data>
	</file>
	<file>
	  <filename>/lang/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/en_US.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0ltYWdlIENvbXByZXNzb3InOwokbGFuZ1sncG9zdGluc3RhbGwnXSA9ICdCZSBzdXJlIHRvIHNldCAiVXNlIEltYWdlIENvbXByZXNzb3IiIHBlcm1pc3Npb25zIHRvIHVzZSB0aGlzIG1vZHVsZSEnOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ01vZHVsIHVuaXN0YWxsZWQuJzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdSZWFsbHk/IFlvdVwncmUgc3VyZSB5b3Ugd2FudCB0byB1bmluc3RhbGwgdGhpcyBtb2R1bGU/JzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxlIHVuaW5zdGFsbGVkLic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bGUgdmVyc2lvbiAlcyBpbnN0YWxsZWQuJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ0FjY2VzcyBEZW5pZWQuIFBsZWFzZSBjaGVjayB5b3VyIHBlcm1pc3Npb25zLic7CiRsYW5nWydlcnJvciddID0gJ0Vycm9yISc7CiRsYW5nWydtb2RkZXNjcmlwdGlvbiddID0gJ1JlZHVjZXMgZmlsZSBzaXplIG9mIGFsbCBpbWFnZXMgdXBsb2FkZWQgdG8gdGhlIEltYWdlIE1hbmFnZXIgdG8gaW1wcm92ZSB3ZWJzaXRlIHBlcmZvcm1hbmNlIHVzaW5nIHRoZSBzbXVzaC5pdC1BUEkuJzsKCiRsYW5nWydzbXVzaGl0X2Vycm9yJ10gPSAnU211c2hpdCBlcnJvcjonOwokbGFuZ1snZm9wZW5fZXJyb3InXSA9ICdmb3BlbiBjYW5cJ3Qgb3BlbiByZW1vdGUgZmlsZXMnOwokbGFuZ1sndGl0bGVfaW1hZ2VsaXN0J10gPSAnRmlsZSB2aWV3JzsKJGxhbmdbJ2ZpbGVuYW1ldGV4dCddID0gJ0ZpbGVuYW1lJzsKJGxhbmdbJ2ZpbGVwZXJtc3RleHQnXSA9ICdBY2Nlc3MgcGVybXMnOwokbGFuZ1snZmlsZXNpemV0ZXh0J10gPSAnU2l6ZSc7CiRsYW5nWydmaWxlZGF0ZXRleHQnXSA9ICdEYXRlJzsKJGxhbmdbJ2NoZWNrYWxsJ10gPSAnY2hlY2sgYWxsJzsKJGxhbmdbJ3NtdXNoYWxsJ10gPSAnc211c2ggYWxsJzsKJGxhbmdbJ3N0b3BxdWV1ZSddID0gJ3N0b3AgcXVldWUnOwokbGFuZ1snZmlsZWRhdGVmb3JtYXQnXSA9ICJtL2QvWSBIOm06cyI7CiRsYW5nWydub3NhdmluZ3MnXSA9ICdObyBzYXZpbmdzJzsKJGxhbmdbJ2NoZWNrc2F2aW5ncyddID0gJ0NoZWNrIHNhdmluZ3MnOwokbGFuZ1snY291bGRzYXZlJ10gPSAnQ2FuIHNhdmUgJTAxLjFmJSUnOwokbGFuZ1snY29tcHJlc3MnXSA9ICdDb21wcmVzcyEnOwokbGFuZ1snbm90d3JpdGFibGUnXSA9ICdOb3Qgd3JpdGFibGUhJzsKJGxhbmdbJ2RvbmUnXSA9ICdEb25lISc7CiRsYW5nWydpbnZhbGlkdXJsJ10gPSAnSW52YWxpZCBVUkwhJzsKJGxhbmdbJ04vQSddID0gJ0ltYWdlIGNvdWxkblwndCBiZSBwcm9jZXNzZWQgb3Igc2VydmljZSB1bmF2YWlsYWJsZS4gU3BlY2lhbCBjaGFycyBvciBzcGFjZXMgaW4gaW1hZ2UgbmFtZT8nOwokbGFuZ1snbm9maWxlcyddID0gJ05vIGltYWdlcyBmb3VuZC4nOw==]]></data>
	</file>
	<file>
	  <filename>/lang/ext/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lang/ext/de_DE.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0JpbGRrb21wcmltaWVydW5nJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnVmVyZ2V3aXNzZXJuIFNpZSBzaWNoLCBkYXNzIGRpZSBCZXJlY2h0aWd1bmcgJnF1b3Q7VXNlIEltYWdlIENvbXByZXNzb3ImcXVvdDsgZ2VzZXR6dCB3dXJkZSwgdW0gZGllc2VzIE1vZHVsIHp1IG51dHplbiEnOwokbGFuZ1sncG9zdHVuaW5zdGFsbCddID0gJ01vZHVsIHd1cmRlIGRlaW5zdGFsbGllcnQuJzsKJGxhbmdbJ3JlYWxseV91bmluc3RhbGwnXSA9ICdXb2xsZW4gU2llIHdpcmtsaWNoIGRpZXNlcyBNb2R1bCBkZWluc3RhbGxpZXJlbj8nOwokbGFuZ1sndW5pbnN0YWxsZWQnXSA9ICdNb2R1bCB3dXJkZSBkZWluc3RhbGxpZXJ0Lic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bHZlcnNpb24gJXMgd3VyZGUgaW5zdGFsbGllcnQuJzsKJGxhbmdbJ2FjY2Vzc2RlbmllZCddID0gJ1p1Z3JpZmYgdmVyd2VpZ2VydC4gQml0dGUgcHImdXVtbDtmZW4gU2llIGRpZSBJaHJlIEJlcmVjaHRpZ3VuZ2VuLic7CiRsYW5nWydlcnJvciddID0gJ0ZlaGxlciEnOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdSZWR1emllcnQgZGllIERhdGVpZ3Imb3VtbDsmc3psaWc7ZSBhbGxlciBCaWxkZXIsIGRpZSAmdXVtbDtiZXIgZGllIEJpbGR2ZXJ3YWx0dW5nIGhvY2hnZWxhZGVuIHd1cmRlbiwgdW0gZGllIFBlcmZvcm1hbmNlIGRlciBXZWJzaXRlIHp1IHZlcmJlc3Nlcm4uIEdlbnV0enQgd2lyZCBkaWUgU211c2guaXQtQVBJLic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICcnOwokbGFuZ1snZm9wZW5fZXJyb3InXSA9ICdmb3BlbiBrYW5uIGtlaW5lIGVudGZlcm5lbiBEYXRlaWVuICZvdW1sO2ZmbmVuJzsKJGxhbmdbJ3NtdXNoaXRfZXJyb3InXSA9ICdTbXVzaGl0IEZlaGxlcjonOwokbGFuZ1sndGl0bGVfaW1hZ2VsaXN0J10gPSAnRGF0ZWlhbnNpY2h0JzsKJGxhbmdbJ2ZpbGVuYW1ldGV4dCddID0gJ0RhdGVpbmFtZSc7CiRsYW5nWydmaWxlcGVybXN0ZXh0J10gPSAnWnVncmlmZnNyZWNodGUnOwokbGFuZ1snZmlsZXNpemV0ZXh0J10gPSAnRGF0ZWlnciZvdW1sOyZzemxpZztlJzsKJGxhbmdbJ2ZpbGVkYXRldGV4dCddID0gJ0RhdHVtJzsKJGxhbmdbJ2NoZWNrYWxsJ10gPSAnQWxsZSBwciZ1dW1sO2Zlbic7CiRsYW5nWydzbXVzaGFsbCddID0gJ0FsbGUgc211c2hlbic7CiRsYW5nWydzdG9wcXVldWUnXSA9ICdXYXJ0ZXNjaGxhbmdlIHN0b3BwZW4nOwokbGFuZ1snZmlsZWRhdGVmb3JtYXQnXSA9ICdkLm0uWSBIOm06cyc7CiRsYW5nWydub3NhdmluZ3MnXSA9ICdLZWluZSBFcnNwYXJuaXNzZSc7CiRsYW5nWydjaGVja3NhdmluZ3MnXSA9ICdFaW5zcGFydW5nIHByJnV1bWw7ZmVuJzsKJGxhbmdbJ2NvdWxkc2F2ZSddID0gJ00mb3VtbDtnbGljaGUgRWluc3BhcnVuZyAlMDEuMWYlJSc7CiRsYW5nWydjb21wcmVzcyddID0gJ0tvbXByaW1pZXJlbiEnOwokbGFuZ1snbm90d3JpdGFibGUnXSA9ICdOaWNodCBiZXNjaHJlaWJiYXIhJzsKJGxhbmdbJ2RvbmUnXSA9ICdFcmxlZGlndCEnOwokbGFuZ1snaW52YWxpZHVybCddID0gJ1VuZyZ1dW1sO2x0aWdlIFVSTCEnOwokbGFuZ1snTi9BJ10gPSAnRGFzIEJpbGQga29ubnRlIG5pY2h0IHZlcmFyYmVpdGV0IHdlcmRlbiBvZGVyIGRlciBTZXJ2aWNlIGlzdCBuaWNodCBlcnJlaWNoYmFyLiBTaW5kIFVtbGF1dGUgb2RlciBMZWVyemVpY2hlbiBpbSBCaWxkbmFtZW4gZW50aGFsdGVuPyc7CiRsYW5nWydub2ZpbGVzJ10gPSAnS2VpbmUgQmlsZGVyIGdlZnVuZGVuLic7CiRsYW5nWyd1dG1iJ10gPSAnMTU2ODYxMzUzJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuMjY1MzU2MjQzLjEzNzk1NDg4MzEuMTM3OTU0ODgzMS4xMzc5NTUxNzI5LjInOwokbGFuZ1sndXRtYyddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEzNzk1NDg4MzEuMS4xLnV0bWNzcj0oZGlyZWN0KXx1dG1jY249KGRpcmVjdCl8dXRtY21kPShub25lKSc7Cj8+]]></data>
	</file>
	<file>
	  <filename>/lang/ext/nl_NL.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0ltYWdlIENvbXByZXNzb3IgJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAnQmUgc3VyZSB0byBzZXQgJnF1b3Q7VXNlIEltYWdlIENvbXByZXNzb3ImcXVvdDsgcGVybWlzc2lvbnMgdG8gdXNlIHRoaXMgbW9kdWxlISc7CiRsYW5nWydwb3N0dW5pbnN0YWxsJ10gPSAnTW9kdWxlIGdlZGUmaXVtbDtuc3RhbGxlZXJkLic7CiRsYW5nWydyZWFsbHlfdW5pbnN0YWxsJ10gPSAnV2VldCB1IHpla2VyIGRhdCB1IGRlemUgbW9kdWxlIHdpbHQgdmVyd2lqZGVyZW4/JzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAnTW9kdWxlIGdlZGUmaXVtbDtuc3RhbGxlZXJkLic7CiRsYW5nWydpbnN0YWxsZWQnXSA9ICdNb2R1bGUgdmVyc2llICVzIGdlJml1bWw7bnN0YWxsZWVyZC4nOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAnR2VlbiB0b2VnYW5nLiBDb250cm9sZWVyIHV3IHJlY2h0ZW4uJzsKJGxhbmdbJ2Vycm9yJ10gPSAnRm91dCEnOwokbGFuZ1snbW9kZGVzY3JpcHRpb24nXSA9ICdSZWR1Y2VzIGZpbGUgc2l6ZSBvZiBhbGwgaW1hZ2VzIHVwbG9hZGVkIHRvIHRoZSBJbWFnZSBNYW5hZ2VyIHRvIGltcHJvdmUgd2Vic2l0ZSBwZXJmb3JtYW5jZSB1c2luZyB0aGUgc211c2guaXQtQVBJLic7CiRsYW5nWydjaGFuZ2Vsb2cnXSA9ICcgJzsKJGxhbmdbJ3RpdGxlX2ltYWdlbGlzdCddID0gJ0Jlc3RhbmRzd2VlcmZhdmUnOwokbGFuZ1snZmlsZW5hbWV0ZXh0J10gPSAnQmVzdGFuZHNuYWFtJzsKJGxhbmdbJ2ZpbGVwZXJtc3RleHQnXSA9ICdUb2VnYW5nc3Blcm1pc3NpZXMnOwokbGFuZ1snZmlsZXNpemV0ZXh0J10gPSAnQWZtZXRpbmcnOwokbGFuZ1snZmlsZWRhdGV0ZXh0J10gPSAnRGF0dW0nOwokbGFuZ1snY2hlY2thbGwnXSA9ICdzZWxlY3RlZXIgYWxsZXMnOwokbGFuZ1snc211c2hhbGwnXSA9ICdkZXNlbGVjdGVlciBhbGxlcyc7CiRsYW5nWydzdG9wcXVldWUnXSA9ICdzdG9wIHJpaic7CiRsYW5nWydzbXVzaGl0dGV4dCddID0gJ1NtdXNoLml0ICc7CiRsYW5nWydmaWxlZGF0ZWZvcm1hdCddID0gJ20vZC9KIFU6bTpzJzsKJGxhbmdbJ25vc2F2aW5ncyddID0gJ05vIHNhdmluZ3MnOwokbGFuZ1snY2hlY2tzYXZpbmdzJ10gPSAnQ2hlY2sgc2F2aW5ncyc7CiRsYW5nWydjb3VsZHNhdmUnXSA9ICdDYW4gc2F2ZSAlMDEuMWYlJSc7CiRsYW5nWydjb21wcmVzcyddID0gJ0NvbXByZXNzISc7CiRsYW5nWydub3R3cml0YWJsZSddID0gJ05pZXQgc2NocmlqZmJhYXIhJzsKJGxhbmdbJ2RvbmUnXSA9ICdHZXJlZWQhJzsKJGxhbmdbJ2ludmFsaWR1cmwnXSA9ICdWZXJrZWVyZGUgVVJMISc7CiRsYW5nWydOL0EnXSA9ICdJbWFnZSBjb3VsZG4mIzAzOTt0IGJlIHByb2Nlc3NlZCBvciBzZXJ2aWNlIHVuYXZhaWxhYmxlLiBVbWxhdXRzIG9yIHNwYWNlcyBpbiBpbWFnZSBuYW1lPyc7CiRsYW5nWydub2ZpbGVzJ10gPSAnR2VlbiBhZmJlZWxkaW5nZW4gZ2V2b25kZW4uJzsKJGxhbmdbJ2NoZWNraW5nJ10gPSAnQWZiZWVsZGluZyBjb250cm9sZXJlbi4uLic7CiRsYW5nWydpbnF1ZXVlX3NtdXNoJ10gPSAnSW4gd2FjaHRyaWogKHNtdXNoKSc7CiRsYW5nWydpbnF1ZXVlX2NoZWNrJ10gPSAnSW4gd2FjaHRyaWogKGNoZWNrIGNvbXByZXNzKSc7CiRsYW5nWyd1dG1hJ10gPSAnMTU2ODYxMzUzLjE1MzYyMjM2MDYuMTMyMDIxNzg1Ny4xMzIwMjE3ODU3LjEzMjAyMTc4NTcuMSc7CiRsYW5nWyd1dG16J10gPSAnMTU2ODYxMzUzLjEzMjAyMTc4NTcuMS4xLnV0bWNjbj0oZGlyZWN0KXx1dG1jc3I9KGRpcmVjdCl8dXRtY21kPShub25lKSc7CiRsYW5nWydxY2EnXSA9ICdQMC0xNDA4OTI2NjYxLTEzMDk1Mjg0NzUyNTYnOwokbGFuZ1sndXRtYiddID0gJzE1Njg2MTM1Myc7CiRsYW5nWyd1dG1jJ10gPSAnMTU2ODYxMzUzJzsKPz4=]]></data>
	</file>
	<file>
	  <filename>/lang/ext/ru_RU.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKJGxhbmdbJ2ZyaWVuZGx5bmFtZSddID0gJ0ltYWdlIENvbXByZXNzb3IgJzsKJGxhbmdbJ3Bvc3RpbnN0YWxsJ10gPSAn0J3QtSDQt9Cw0LHRg9C00YzRgtC1INGD0YHRgtCw0L3QvtCy0LjRgtGMICLQmNGB0L/QvtC70YzQt9C+0LLQsNGC0YwgSW1hZ2UgQ29tcHJlc3NvciIg0YDQsNC30YDQtdGI0LXQvdC40LUg0L3QsCDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtSDRjdGC0L7Qs9C+INC80L7QtNGD0LvRjyEgJzsKJGxhbmdbJ3Bvc3R1bmluc3RhbGwnXSA9ICfQnNC+0LTRg9C70Ywg0YPQtNCw0LvQtdC9Lic7CiRsYW5nWydyZWFsbHlfdW5pbnN0YWxsJ10gPSAn0JLRiyDRg9Cy0LXRgNC10L3Riywg0YfRgtC+INGF0L7RgtC40YLQtSDRg9C00LDQu9C40YLRjCDRjdGC0L7RgiDQvNC+0LTRg9C70Yw/JzsKJGxhbmdbJ3VuaW5zdGFsbGVkJ10gPSAn0JzQvtC00YPQu9GMINGD0LTQsNC70LXQvS4nOwokbGFuZ1snaW5zdGFsbGVkJ10gPSAn0JzQvtC00YPQu9GMINCy0LXRgNGB0LjQuCAlcyDRg9GB0YLQsNC90L7QstC70LXQvS4nOwokbGFuZ1snYWNjZXNzZGVuaWVkJ10gPSAn0JTQvtGB0YLRg9C/INC30LDQv9GA0LXRidC10L0uINCf0L7QttCw0LvRg9C50YHRgtCwLCDQv9GA0L7QstC10YDRjNGC0LUg0LLQsNGI0Lgg0L/RgNCw0LLQsC4nOwokbGFuZ1snZXJyb3InXSA9ICfQntGI0LjQsdC60LAhJzsKJGxhbmdbJ21vZGRlc2NyaXB0aW9uJ10gPSAn0KPQvNC10L3RjNGI0LDQtdGCINGA0LDQt9C80LXRgCDRhNCw0LnQu9C+0LIg0LLRgdC10YUg0LjQt9C+0LHRgNCw0LbQtdC90LjQuSwg0LfQsNCz0YDRg9C20LXQvdC90YvRhSDRh9C10YDQtdC3IGltYWdlIG1hbmFnZXIsINC00LvRjyDRg9C70YPRh9GI0LXQvdC40Y8g0L/RgNC+0LjQt9Cy0L7QtNC40YLQtdC70YzQvdC+0YHRgtC4INGB0LDQudGC0LAg0LjRgdC/0L7Qu9GM0LfRg9GPIHNtdXNoLml0LUFQSS4nOwokbGFuZ1snY2hhbmdlbG9nJ10gPSAnICc7CiRsYW5nWyd0aXRsZV9pbWFnZWxpc3QnXSA9ICdGaWxlIHZpZXcnOwokbGFuZ1snZmlsZW5hbWV0ZXh0J10gPSAn0JjQvNGPINGE0LDQudC70LAnOwokbGFuZ1snZmlsZXBlcm1zdGV4dCddID0gJ0FjY2VzcyBwZXJtcyc7CiRsYW5nWydmaWxlc2l6ZXRleHQnXSA9ICfQoNCw0LfQvNC10YAnOwokbGFuZ1snZmlsZWRhdGV0ZXh0J10gPSAn0JTQsNGC0LAnOwokbGFuZ1snc211c2hpdHRleHQnXSA9ICdTbXVzaC5pdCAnOwokbGFuZ1snZmlsZWRhdGVmb3JtYXQnXSA9ICdtL2QvWSBIOm06cyAnOwokbGFuZ1snbm9zYXZpbmdzJ10gPSAn0J3QtdGCINGN0LrQvtC90L7QvNC40LgnOwokbGFuZ1snY2hlY2tzYXZpbmdzJ10gPSAn0J/RgNC+0LLQtdGA0LjRgtGMINGN0LrQvtC90L7QvNC40Y4nOwokbGFuZ1snY291bGRzYXZlJ10gPSAn0JzQvtC20L3QviDRgdGN0LrQvtC90L7QvNC40YLRjCAlMDEuMWYlJSc7CiRsYW5nWydjb21wcmVzcyddID0gJ9Ch0LbQsNGC0LjQtSEnOwokbGFuZ1snbm90d3JpdGFibGUnXSA9ICfQndC1INC00LvRjyDQt9Cw0L/QuNGB0LghJzsKJGxhbmdbJ2RvbmUnXSA9ICfQk9C+0YLQvtCy0L4hJzsKJGxhbmdbJ04vQSddID0gJ9CY0LfQvtCx0YDQsNC20LXQvdC40LUg0L/QvtC60LAg0L3QtSDQvNC+0LbQtdGCINCx0YvRgtGMINC+0LHRgNCw0LHQvtGC0LDQvdC+INC40LvQuCDRgdC10YDQstC40YEg0L3QtdC00L7RgdGC0YPQv9C10L0uINCj0LzQu9GP0YPRgtGLINC40LvQuCDQv9GA0L7QsdC10LvRiyDQsiDQuNC80LXQvdC4INC40LfQvtCx0YDQsNC20LXQvdC40Y8/JzsKJGxhbmdbJ3FjYSddID0gJ1AwLTYzNjYxMTc1OC0xMjkwNzczMDU0MDMwJzsKJGxhbmdbJ3V0bWEnXSA9ICcxNTY4NjEzNTMuNTgxMTAzODA5LjEyOTA3NzMwNDcuMTI5ODMxOTQ0OS4xMjk4MzY1NzM2LjI2JzsKJGxhbmdbJ3V0bWMnXSA9ICcxNTY4NjEzNTMnOwokbGFuZ1sndXRteiddID0gJzE1Njg2MTM1My4xMjk4MzY1NzM2LjI2LjE1LnV0bWNjbj0ocmVmZXJyYWwpfHV0bWNzcj1mb3J1bS5jbXNtYWRlc2ltcGxlLm9yZ3x1dG1jY3Q9L3ZpZXdmb3J1bS5waHB8dXRtY21kPXJlZmVycmFsJzsKJGxhbmdbJ3V0bWInXSA9ICcxNTY4NjEzNTMnOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/lib/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/lib/class.imagecompressor_utils.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEpvbmF0aGFuIFNjaG1pZCwgPGhpQGpvbmF0aGFuc2NobWlkLmRlPgojIFdlYjogd3d3LmpvbmF0aGFuc2NobWlkLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEltYWdlQ29tcHJlc3NvciBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBjYW4gY29tcHJlc3MgdXNlci11cGxvYWRlZCBpbWFnZXMuCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKY2xhc3MgaW1hZ2Vjb21wcmVzc29yX3V0aWxzIHsKCgljb25zdCBTTVVTSElUX0FQSV9VUkwgPSAnaHR0cDovL3d3dy5zbXVzaGl0LmNvbS95c211c2guaXQvd3MucGhwP2ltZz0lcyc7Cgljb25zdCBTTVVTSElUX1VBID0gJ0NNUyBtYWRlIHNpbXBsZSBJbWFnZSBDb21wcmVzc29yLzAuMTAuMic7CgoJc3RhdGljIHByb3RlY3RlZCAkbWltZTsKCglwcml2YXRlIGZ1bmN0aW9uIF9fY29uc3RydWN0KCkge30KCglzdGF0aWMgZmluYWwgcHVibGljIGZ1bmN0aW9uIGZvcm1hdF9ieXRlcygkc2l6ZSkKCXsKCQkkdW5pdHMgPSBhcnJheSgnIEInLCAnIEtCJywgJyBNQicsICcgR0InLCAnIFRCJyk7CgkJZm9yICgkaSA9IDA7ICRzaXplID49IDEwMjQgJiYgJGkgPCA0OyAkaSsrKQoJCXsKCQkJJHNpemUgLz0gMTAyNDsKCQl9CgkJcmV0dXJuIHJvdW5kKCRzaXplLCAxKS4kdW5pdHNbJGldOwoJfQoKCXN0YXRpYyBmaW5hbCBwcm90ZWN0ZWQgZnVuY3Rpb24gc211c2hpdF9mb3BlbigkdXJsKQoJewoJCSRmID0gQGZvcGVuKCR1cmwsICdyJyk7CgkJaWYoJGYgPT09IGZhbHNlKQoJCXsKCQkJcmV0dXJuIGZhbHNlOwoJCX0KCQkkcmVzcG9uc2UgPSBmZ2V0cygkZik7CgkJZmNsb3NlKCRmKTsKCQlpZigkcmVzcG9uc2UgPT0gbnVsbCkKCQl7CgkJCXJldHVybiBmYWxzZTsKCQl9CgkJaWYoZnVuY3Rpb25fZXhpc3RzKCdqc29uX2RlY29kZScpKQoJCXsKCQkJcmV0dXJuIGpzb25fZGVjb2RlKCRyZXNwb25zZSk7CgkJfQoJCWVsc2UKCQl7CgkJCSRqc29uID0gbmV3IFNlcnZpY2VzX0pTT04oKTsKCQkJcmV0dXJuICRqc29uLT5kZWNvZGUoJHJlc3BvbnNlKTsKCQl9Cgl9CgoJc3RhdGljIGZpbmFsIHByb3RlY3RlZCBmdW5jdGlvbiBzbXVzaGl0X2N1cmwoJHVybCkKCXsKCQkkc211c2hpdCA9IGN1cmxfaW5pdCgpOwoJCWN1cmxfc2V0b3B0KCRzbXVzaGl0LCBDVVJMT1BUX0NPTk5FQ1RUSU1FT1VULCAxMCk7CgkJY3VybF9zZXRvcHQoJHNtdXNoaXQsIENVUkxPUFRfUkVUVVJOVFJBTlNGRVIsIHRydWUpOwoJCWN1cmxfc2V0b3B0KCRzbXVzaGl0LCBDVVJMT1BUX1VSTCwgJHVybCk7CgkJY3VybF9zZXRvcHQoJHNtdXNoaXQsIENVUkxPUFRfVVNFUkFHRU5ULCBzZWxmOjpTTVVTSElUX1VBKTsKCQkkcmVzcG9uc2UgPSBjdXJsX2V4ZWMoJHNtdXNoaXQpOwoJCWN1cmxfY2xvc2UoJHNtdXNoaXQpOwoJCWlmKGZ1bmN0aW9uX2V4aXN0cygnanNvbl9kZWNvZGUnKSkKCQl7CgkJCXJldHVybiBqc29uX2RlY29kZSgkcmVzcG9uc2UpOwoJCX0KCQllbHNlCgkJewoJCQkkanNvbiA9IG5ldyBTZXJ2aWNlc19KU09OKCk7CgkJCXJldHVybiAkanNvbi0+ZGVjb2RlKCRyZXNwb25zZSk7CgkJfQoJfQoKCXN0YXRpYyBmaW5hbCBwdWJsaWMgZnVuY3Rpb24gc211c2hpdF9wb3N0KCRmaWxlX3VybCkKCXsKCQkkdXJsID0gc3ByaW50ZihzZWxmOjpTTVVTSElUX0FQSV9VUkwsIHVybGVuY29kZSgkZmlsZV91cmwpKTsKCQlpZihmdW5jdGlvbl9leGlzdHMoJ2N1cmxfaW5pdCcpKQoJCXsKCQkJcmV0dXJuIHNlbGY6OnNtdXNoaXRfY3VybCgkdXJsKTsKCQl9CgkJZWxzZQoJCXsKCQkJcmV0dXJuIHNlbGY6OnNtdXNoaXRfZm9wZW4oJHVybCk7CgkJfQoJfQoKCXN0YXRpYyBmaW5hbCBwdWJsaWMgZnVuY3Rpb24gaXNfaW1hZ2UoJHBhdGgpCgl7CgkJaWYoZnVuY3Rpb25fZXhpc3RzKCdleGlmX2ltYWdldHlwZScpKQoJCXsKCQkJJGluZm8gPSBAZXhpZl9pbWFnZXR5cGUoJHBhdGgpOwoJCQlpZigkaW5mbyAmIGluX2FycmF5KCRpbmZvLCBhcnJheShJTUFHRVRZUEVfR0lGLCBJTUFHRVRZUEVfSlBFRywgSU1BR0VUWVBFX1BORykpKQoJCQl7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCQllbHNlCgkJCXsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0KCQllbHNlaWYoZnVuY3Rpb25fZXhpc3RzKCdmaW5mb19vcGVuJykpCgkJewoJCQlpZighc2VsZjo6JG1pbWUpCgkJCXsKCQkJCXNlbGY6OiRtaW1lID0gZmluZm9fb3BlbihGSUxFSU5GT19NSU1FKTsKCQkJfQoJCQkkZmlsZXR5cGUgPSBmaW5mb19maWxlKHNlbGY6OiRtaW1lLCAkcGF0aCk7CgkJCXJldHVybiBzdHJwb3MoJGZpbGV0eXBlLCAnaW1hZ2UnKSA9PT0gMDsKCQl9CgkJcmV0dXJuIHRydWU7Cgl9CgoJc3RhdGljIGZpbmFsIHB1YmxpYyBmdW5jdGlvbiBzb3J0X2ZpbGVzX2J5X2RhdGUoJGEsICRiKQoJewoJCWlmKCRhLT5maWxldGltZSA9PSAkYi0+ZmlsZXRpbWUpCgkJewoJCQlyZXR1cm4gMDsKCQl9CgoJCXJldHVybiAkYS0+ZmlsZXRpbWUgPiAkYi0+ZmlsZXRpbWUgPyAtMSA6IDE7Cgl9CgoJc3RhdGljIGZpbmFsIHB1YmxpYyBmdW5jdGlvbiBnZXRfdXJsX3BhdGgoKQoJewoJCSRjb25maWcgPSBjbXNtcygpLT5HZXRDb25maWcoKTsKCgkJJHVybCA9IHN1YnN0cihyZWFscGF0aChkaXJuYW1lKF9fRklMRV9fKS4nLy4uLycpLCBzdHJsZW4oJGNvbmZpZ1sncm9vdF9wYXRoJ10pKTsKCQkkdXJsID0gc3RyX3JlcGxhY2UoRElSRUNUT1JZX1NFUEFSQVRPUiwgJy8nLCAkdXJsKTsKCQkkdXJsID0gJGNvbmZpZ1sncm9vdF91cmwnXSAuICR1cmw7CgoJCXJldHVybiAkdXJsOwoJfQoKCXN0YXRpYyBmaW5hbCBwdWJsaWMgZnVuY3Rpb24gdXJsX2ZvcGVuX2VuYWJsZWQoKQoJewoJCWlmICghaW5pX2dldCgnYWxsb3dfdXJsX2ZvcGVuJykpCgkJewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCXJldHVybiB0cnVlOwoJfQp9]]></data>
	</file>
	<file>
	  <filename>/method.install.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEpvbmF0aGFuIFNjaG1pZCwgPGhpQGpvbmF0aGFuc2NobWlkLmRlPgojIFdlYjogd3d3LmpvbmF0aGFuc2NobWlkLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEltYWdlQ29tcHJlc3NvciBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBjYW4gY29tcHJlc3MgdXNlci11cGxvYWRlZCBpbWFnZXMuCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYgKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7CgokdGhpcy0+Q3JlYXRlUGVybWlzc2lvbignVXNlIEltYWdlIENvbXByZXNzb3InLCAnVXNlIEltYWdlIENvbXByZXNzb3InKTsKJHRoaXMtPkF1ZGl0KDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ2luc3RhbGxlZCcsICR0aGlzLT5HZXRWZXJzaW9uKCkpKTsKPz4=]]></data>
	</file>
	<file>
	  <filename>/method.uninstall.php</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PD9waHAKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEpvbmF0aGFuIFNjaG1pZCwgPGhpQGpvbmF0aGFuc2NobWlkLmRlPgojIFdlYjogd3d3LmpvbmF0aGFuc2NobWlkLmRlCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIEltYWdlQ29tcHJlc3NvciBpcyBhIENNUyBNYWRlIFNpbXBsZSBtb2R1bGUgdGhhdCBjYW4gY29tcHJlc3MgdXNlci11cGxvYWRlZCBpbWFnZXMuCiMKIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIwojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgojIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMKIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgojIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3IFVTQQojIE9yIHJlYWQgaXQgb25saW5lOiBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGljZW5zZXMuaHRtbCNHUEwKIwojLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKaWYgKCFpc19vYmplY3QoY21zbXMoKSkpIGV4aXQ7CgokdGhpcy0+UmVtb3ZlUGVybWlzc2lvbignVXNlIEltYWdlIENvbXByZXNzb3InKTsKJHRoaXMtPkF1ZGl0KDAsICR0aGlzLT5MYW5nKCdmcmllbmRseW5hbWUnKSwgJHRoaXMtPkxhbmcoJ3VuaW5zdGFsbGVkJykpOwo/Pg==]]></data>
	</file>
	<file>
	  <filename>/templates/</filename>
	  <isdir>1</isdir>
	</file>
	<file>
	  <filename>/templates/imagelist_tab.tpl</filename>
	  <isdir>0</isdir>
	  <data><![CDATA[PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ieyRpbmNkaXJ9aW1hZ2Vjb21wcmVzc29yLmNzcyIgLz4NCjx0YWJsZSBjbGFzcz0icGFnZXRhYmxlIiBpZD0iZmlsZWxpc3RfaW1hZ2Vjb21wcmVzc29yIj4NCgk8dGhlYWQ+DQoJCTx0cj4NCgkJCTx0aCBjbGFzcz0icGFnZWljb24iPiZuYnNwOzwvdGg+DQoJCQk8dGg+eyRtb2QtPkxhbmcoJ2ZpbGVuYW1ldGV4dCcpfTwvdGg+DQoJCQk8dGg+eyRtb2QtPkxhbmcoJ2ZpbGVwZXJtc3RleHQnKX08L3RoPg0KCQkJPHRoPnskbW9kLT5MYW5nKCdmaWxlc2l6ZXRleHQnKX08L3RoPg0KCQkJPHRoPnskbW9kLT5MYW5nKCdmaWxlZGF0ZXRleHQnKX08L3RoPg0KCQkJPHRoPlNtdXNoLml0PGJyIC8+DQoJCQkJKDxhIGhyZWY9IiMiPnskbW9kLT5MYW5nKCdjaGVja2FsbCcpfTwvYT4pIHwNCgkJCQkoPGEgaHJlZj0iIyI+eyRtb2QtPkxhbmcoJ3NtdXNoYWxsJyl9PC9hPikgfA0KCQkJCSg8YSBocmVmPSIjIj57JG1vZC0+TGFuZygnc3RvcHF1ZXVlJyl9PC9hPikNCgkJCTwvdGg+DQoJCTwvdHI+DQoJPC90aGVhZD4NCgk8dGJvZHk+DQoJCXtmb3JlYWNoIGZyb209JGZpbGVzIGl0ZW09ZmlsZSBuYW1lPSJmaWxlcyJ9DQoJCTx0ciBjbGFzcz0icm93e2lmICRzbWFydHkuZm9yZWFjaC5maWxlcy5pdGVyYXRpb24gJSAyfTF7ZWxzZX0yey9pZn0iPg0KCQkJPHRkPjxpbWcgc3JjPSJ7JGZpbGUtPmljb259IiAvPjwvdGQ+DQoJCQk8dGQ+PGEgaHJlZj0ieyRmaWxlLT51cmx9IiB0YXJnZXQ9Il9ibGFuayI+eyRmaWxlLT5maWxlbmFtZX08L2E+PC90ZD4NCgkJCTx0ZD57JGZpbGUtPmZpbGVwZXJtc308L3RkPg0KCQkJPHRkPnskZmlsZS0+ZmlsZXNpemV9PC90ZD4NCgkJCTx0ZD57JGZpbGUtPmZpbGVkYXRlfTwvdGQ+DQoJCQk8dGQ+PGEgaHJlZj0iIyIgY2xhc3M9ImNoZWNrIj57JG1vZC0+TGFuZygnY2hlY2tzYXZpbmdzJyl9PC9hPjwvdGQ+DQoJCTwvdHI+DQoJCXsvZm9yZWFjaH0NCgk8L3Rib2R5Pg0KPC90YWJsZT4NCjxzY3JpcHQgc3JjPSJ7JGluY2Rpcn1JbWFnZUNvbXByZXNzb3IuanMiPjwvc2NyaXB0Pg0KPHNjcmlwdD4NCmpRdWVyeShmdW5jdGlvbiAoKSB7bGRlbGltfQ0KCUltYWdlQ29tcHJlc3Nvci5pbml0KCd7JGFjdGlvbmlkfScsICd7JHVzZXJrZXl9Jyk7DQp7cmRlbGltfSk7DQo8L3NjcmlwdD4=]]></data>
	</file>
</module>
